Un algoritmo de cifrado de bloque en su forma básica casi nunca se usa para cifrar mensajes largos. ¿Por qué?

Primero, cada algoritmo de cifrado moderno ampliamente utilizado es un cifrado de bloque. AES, por ejemplo, tiene un tamaño de bloque de 128 bits.

Sospecho que en realidad estás preguntando sobre el modo de cifrado de bloque. El modo Libro electrónico de códigos (BCE) cifra cada bloque de forma independiente. El problema es que el mismo bloque de texto claro siempre produce el mismo bloque de texto cifrado. Esto significa que un texto claro con largos tramos de datos estructurados y uniformes, como la misma letra repetida una y otra vez, revelará información utilizable en el texto cifrado. Un criptoanalista podrá determinar el tamaño del bloque y hacer algunas conjeturas sobre la estructura del texto en claro, por ejemplo. Si el criptoanalista puede realizar ataques de texto claro forzado o texto criptográfico forzado, hay una buena posibilidad de que puedan identificar el algoritmo y la clave. OTOH, es fácil de implementar en hardware y altamente paralelo, y es adecuado para acceso aleatorio. Si el texto en claro tiene una alta entropía (como si estuviera comprimido) y se utilizan otros métodos para prevenir ataques de texto conocidos o forzados, el modo ECB podría ser viable.

Otros modos de cifrado de bloques varían el texto de cifrado en función de la posición del bloque o los datos anteriores. Esto hace que el cifrado / descifrado sea mucho más intensivo en recursos, pero hace que el mismo texto en claro produzca un texto encriptado diferente cuando se repite el texto en claro. El más común es el modo CBC, que hace XOR del texto cifrado del bloque anterior con el texto claro del siguiente bloque antes de cifrarlo. Esto es eficiente para el acceso secuencial pero no para el acceso aleatorio.

Porque solo encriptan unos pocos bits a la vez, 64, 128, 256, etc., lo cual es inadecuado para mensajes largos. Por lo tanto, el encadenamiento de bloques (hay docenas de algoritmos diferentes, algunos buenos, otros malos, algunos recomendados por NIST o requeridos para aplicaciones específicas) se utilizan para “difundir” el cifrado. De lo contrario, el cifrado de mensajes largos en bloques cortos tendría cada bloque independiente de todos los demás bloques y proporcionaría vectores de ataque para el citoanálisis.
Por ejemplo, la identificación del bloque puede alimentar al siguiente bloque, el resultado de cifrar el bloque anterior puede alimentar al siguiente bloque. La forma en que se realizan es fundamental y afecta la seguridad de un algoritmo de encadenamiento de bloques. Al igual que diseñar un algoritmo de cifrado de bloques es difícil, también lo es diseñar un algoritmo de encadenamiento.

Independientemente de las palabras que utilice para describir un algoritmo de cifrado, lo importante es que si alguna secuencia (larga o corta) de bytes a cifrar tiene una repetición de una subsecuencia de bytes, la subsecuencia repetida cuando se cifra es idealmente diferente cada vez en el texto cifrado.

De hecho, se usa en DES, 3DES y en AES.

No solo eso, los sistemas de autenticación HASH / firmas digitales los usan.

More Interesting

¿Qué aplicaciones no son adecuadas para quicksort y por qué?

¿Cuáles son algunos algoritmos básicos en el aprendizaje automático para que su programa aprenda de otros datos (aprendizaje supervisado)?

¿Podemos encontrar si la matriz no contiene un elemento mayoritario en un tiempo casi constante?

¿Por qué no puedo resolver la subsecuencia creciente más larga simplemente ordenando la secuencia y luego iterando a través de cada elemento asegurándome de que la secuencia siempre esté aumentando?

¿Por qué no puede haber un algoritmo de clasificación que tenga el mejor y el peor caso de N tiempo de ejecución (por ejemplo, lineal)?

Cómo devolver una matriz multidimensional utilizando dos parámetros en C ++

¿Cuáles son algunas de las preguntas famosas al calcular los caminos más cortos (gráficos) usando Dijkstra's, DAG y Bellman-Ford?

¿Podría alguien explicar las etapas de un algoritmo recursivo que muestra cómo se alcanza la condición de terminación?

¿Para qué sirven los bordes traseros en el algoritmo Ford-Fulkerson?

¿Los programas que simulan la evolución tienen algún efecto en los creacionistas?

No soy bueno con los algoritmos y no puedo encontrar una solución hasta que alguien me lo diga. ¿Cómo puedo arreglar esto?

¿Cuál es el algoritmo para resolver el cubo de Rubik solo para la última esquina?

¿Cuál es la mejor fuente en línea para el aprendizaje de algoritmos?

Analizador de programación: ¿por qué devolvemos los datos restantes (no consumidos) mientras escribimos un analizador?

¿Cuáles son algunos algoritmos rápidos de descenso de gradiente?