¿Cuál es la diferencia entre los cifrados de flujo y los cifrados de bloque?

Un cifrado es un conjunto de reglas matemáticas, o algoritmo, que se utiliza para convertir texto legible, o texto sin formato, en texto ilegible o texto cifrado. La diferencia principal entre los cifrados de flujo y los cifrados de bloque es que los cifrados de flujo funcionan con flujos de texto, un bit o un byte a la vez, mientras que los cifrados de bloque funcionan con bloques de texto.

Cifrado de flujo

La idea básica de un cifrado de flujo es dividir el texto en pequeños bloques, de un bit o un byte de longitud, y codificar cada bloque en función de muchos bloques anteriores. Los cifrados de flujo utilizan una clave de cifrado diferente, un valor que debe introducirse en el algoritmo, para cada bit o byte, por lo que el mismo bit o byte produce un texto cifrado diferente cada vez que se cifra. Algunos cifrados de flujo utilizan un generador de flujo de claves, que produce un flujo de bits aleatorio o casi aleatorio. El cifrado realiza una operación booleana, conocida como OR exclusivo, entre los bits del flujo de claves y los bits del texto sin formato para producir el texto cifrado.

Cifrado de bloque

La idea básica de un cifrado de bloque es dividir el texto en bloques relativamente grandes, normalmente de 64 o 128 bits de longitud, y codificar cada bloque por separado. Se utiliza la misma clave de cifrado para cada bloque y es la clave de cifrado la que determina el orden en que se realizan la sustitución, el transporte y otras funciones matemáticas en cada bloque. Los algoritmos fuertes significan que la ingeniería inversa del cifrado, o determinar qué funciones se realizaron en cada bloque, en qué orden, es prácticamente imposible.

Difusión y Confusión

Los cifrados en bloque utilizan técnicas conocidas como confusión y difusión para cifrar texto sin formato en texto cifrado. La idea detrás de la confusión es hacer que la relación entre la clave de cifrado y el texto cifrado sea lo más compleja posible. Idealmente, todos los caracteres de la clave de cifrado deberían influir en todos los caracteres del texto cifrado. Por el contrario, la difusión extiende la influencia de cada carácter del texto sin formato sobre varios caracteres del texto cifrado, lo que hace que el cifrado sea menos susceptible a los ataques estadísticos.

Pros y contras

El hecho de que los cifrados de flujo cifren y descifren datos bit por bit significa que son particularmente adecuados para aplicaciones de hardware en tiempo real, como aplicaciones de audio y video. Los cifrados de flujo son más débiles y menos eficientes que los cifrados de bloque cuando se trata de aplicaciones de software y se usan con menos frecuencia en ese ámbito. Los cifrados de bloque son más fáciles de implementar en el software porque cifran los datos en bloques de una longitud que el software ya usa. La clave de cifrado suele tener la misma longitud que el tamaño del bloque.