En criptografía , FROG es un cifrado por bloques creado por Georgoudis, Leroux y Chaves. El algoritmo funciona con bloques de entre 8 y 128 bytes y admite claves de entre 5 y 125 bytes. Consta de 8 rondas y tiene un esquema de claves muy complejo .
En 1998, TecApro, una empresa de software costarricense, presentó FROG al concurso AES como candidato para convertirse en el Estándar de Cifrado Avanzado ( AES ). Wagner et al. (1999) detectaron varias clases de claves débiles para FROG. Otros problemas incluían una configuración de claves muy lenta y un cifrado relativamente lento. FROG no fue seleccionado como finalista.
Filosofía del diseño
Normalmente, un cifrado por bloques aplica una secuencia fija de operadores matemáticos o lógicos primitivos (como sumas, XOR , etc.) al texto plano y a la clave secreta para producir el texto cifrado . Un atacante utiliza este conocimiento para buscar vulnerabilidades en el cifrado que le permitan recuperar el texto plano.
La filosofía de diseño de FROG consiste en ocultar la secuencia exacta de operaciones primitivas, aunque se conozca el cifrado en sí. Mientras que otros cifrados utilizan la clave secreta únicamente como datos (que se combinan con el texto plano para generar el texto cifrado), FROG la utiliza tanto como datos como instrucciones sobre cómo combinarlos. En efecto, FROG utiliza una versión ampliada de la clave como programa. FROG funciona como un intérprete que aplica este programa, dependiente de la clave, al texto plano para generar el texto cifrado. El descifrado se realiza aplicando el mismo programa a la inversa sobre el texto cifrado.
Descripción
La secuencia de claves FROG (o clave interna) tiene una longitud de 2304 bytes. Se genera recursivamente aplicando FROG iterativamente a un texto plano vacío. El bloque resultante se procesa para producir una clave interna bien formateada con 8 registros. FROG consta de 8 rondas, cuyas operaciones están codificadas por un registro en la clave interna. Todas las operaciones son de un byte y consisten en XOR y sustituciones. [ 1 ]
FROG es muy fácil de implementar (la versión de referencia en C tiene solo unas 150 líneas de código). Gran parte del código necesario para implementar FROG se utiliza para generar la clave interna secreta; el cifrado interno en sí es un fragmento de código muy corto. Es posible escribir una rutina en lenguaje ensamblador de tan solo 22 instrucciones que realiza el cifrado y descifrado completo de FROG. La implementación funciona bien en procesadores de 8 bits porque solo utiliza instrucciones a nivel de byte. No se utilizan operaciones específicas de bits. Una vez calculada la clave interna, el algoritmo es bastante rápido: una versión implementada con ensamblador 8086 alcanza velocidades de procesamiento de más de 2,2 megabytes por segundo cuando se ejecuta en un PC Pentium de 200 MHz.
Seguridad
La filosofía de diseño de FROG está pensada para protegerse contra ataques imprevistos o desconocidos. Sin embargo, el hecho mismo de que la clave se utilice como programa de cifrado implica que algunas claves pueden corresponder a programas de cifrado débiles . David Wagner y colaboradores descubrieron que entre 2 y 33 de las claves son débiles y que, en estos casos, la clave puede descifrarse con 2⁵⁸ textos planos elegidos .
Otro defecto de FROG es que la función de descifrado tiene una difusión mucho más lenta que la función de cifrado. Aquí, 2⁻²⁹ de las claves son débiles y pueden romperse usando 2³⁶ textos cifrados elegidos.
Notas
- ↑ Aquí se puede encontrar una descripción detallada del cifrado.
Referencias
- David Wagner, Niels Ferguson y Bruce Schneier, Criptoanálisis de FROG, en las actas de la 2.ª conferencia de candidatos AES, págs. 175-181 , NIST, 1999..
- Dianelos Georgoudis, Damian Leroux y Billy Simón Chaves, The FROG Encryption Algorithm, 15 de junio de 1998.
Enlaces externos
- Especificación del algoritmo de cifrado FROG
- Cifrados de 256 bits - Implementación de referencia FROG y código derivado
- Cifrados de bloques