
Regreso al futuro con tamaños de bloque
Un análisis sobre los cifrados de bloque y el algoritmo AES.
El Instituto Nacional de Estándares y Tecnología de los Estados Unidos (NIST) se encuentra en un momento activo en el ámbito de la criptografía. Actualmente, está trabajando tanto en la Criptografía Post-Cuántica (PQC) como en la estandarización del cifrado ligero Ascon. Además, pronto iniciará una importante iniciativa para investigar la criptografía de umbral y, a finales de 2024, anunció su intención de considerar la estandarización de una variante de tamaño de bloque más grande del algoritmo AES.
Para comprender mejor esta propuesta y su relevancia, es esencial explorar qué es un cifrador de bloques y repasar la historia del algoritmo AES.
Explicación de los Cifradores de Bloques
Un cifrador de bloques es una técnica utilizada para cifrar datos en bloques individuales mediante una clave secreta. Las dos características más importantes de un cifrador de bloques son el tamaño de la clave, que determina la cantidad de bits necesarios para definirla, y el tamaño del bloque, que es la cantidad de datos que se cifra en cada aplicación del cifrador.
Este concepto es comúnmente introducido a los niños a través de tablas de letras, donde por ejemplo, una permutación aleatoria puede dar lugar a que la palabra BAD se convierta en el texto cifrado MTH. En este caso, la segunda fila de la tabla sirve como clave, resultando en un total de combinaciones posibles que, al calcularse, equivalen a un tamaño de clave de aproximadamente 88.3 bits. Sin embargo, el tamaño de bloque en este ejemplo es de solo una letra, aunque su tamaño clave es considerablemente grande.
A pesar de eso, un tamaño de bloque pequeño puede volverse vulnerable, ya que en textos cifrados extensos se pueden detectar repeticiones de bloques. Por ejemplo, las palabras “HIDE ME” se cifran como “QNHX EX”, donde la repetición del carácter X sugiere que podría estar cifrando la letra E, que es la más común en inglés. Esto revela que incluso con mensajes aleatorios, las repeticiones de bloques son un riesgo potencial para cualquier sistema que emplee un cifrador de bloques. Debido a la paradoja de cumpleaños, una coincidencia entre bloques es probable de ocurrir después de cifrar solo unos pocos.
Sobre el AES
El AES es un cifrador de bloques que se ha convertido en la columna vertebral de la mayoría de los sistemas criptográficos del mundo. Fue estandarizado por el NIST en 2001, con tamaños de clave variables de 128, 192 y 256 bits, pero con un tamaño de bloque fijo de 128 bits. Inicialmente, en la propuesta preliminar para el AES, el NIST había contemplado bloques de diferentes tamaños, pero finalmente se decidió concentrarse únicamente en bloques de 128 bits.
A pesar de que este tamaño parecía adecuado en 2001, la realidad es que limitaciones inherentes surgieron debido a su tamaño. Los sistemas que utilizan AES se vieron obligados a restringir la cantidad de datos que pueden cifrarse con una única clave a 64 Gigabytes en su modo más popular, lo que es inferior a la capacidad de muchos dispositivos de almacenamiento actuales. Esto implica la necesidad de cambiar las claves con frecuencia o de implementar métodos alternativos de integración del AES.
Dado que AES es muy rápido en hardware, sería ideal poder usarlo para construir una función hash, pero los cifradores de bloques pueden ser inseguros si el tamaño de bloque es pequeño. Esta discrepancia entre el tamaño del bloque y el tamaño de la clave llevó a un “ataque” teórico en 2009 al AES con una clave de 256 bits.
Conclusión
Lo que anunció el NIST es un intento de reexaminar lo que, con la perspectiva actual, podría considerarse un error cometido en 2001. La estandarización del AES debió haberse realizado con una variante de tamaño de bloque de 256 bits. Si los criptógrafos tuvieran la oportunidad de retroceder en el tiempo, modificarían la competencia del AES para permitir un tamaño de bloque de 256 bits.