CoderTools

Cifrado y descifrado LOKI97

Cifrado de bloques australiano - Candidato AES con bloques de 128 bits y longitud de clave variable

Aviso de seguridad

LOKI97 fue un candidato AES pero no fue seleccionado como estándar. Para nuevas aplicaciones que requieran alta seguridad, se recomienda AES (Rijndael).

LOKI97 soporta claves de 128 bits (16 bytes), 192 bits (24 bytes) o 256 bits (32 bytes).
Opciones de formato

Acerca de LOKI97

LOKI97 es la tercera generación de la familia australiana de cifrado LOKI, diseñada por Lawrie Brown (Academia Militar Australia) y Josef Pieprzyk (Universidad Macquarie). La familia comenzó con LOKI89 (1990, bloques 64 bits), vulnerable al criptoanálisis diferencial de Biham y Shamir, luego LOKI91 con S-boxes revisadas, y finalmente LOKI97, un rediseño completo presentado como candidato AES en 1998 con bloques 128 bits y claves de 128, 192 o 256 bits.

El elemento estructural más distintivo de LOKI97 son sus S-boxes, generadas mediante evaluación de polinomios irreducibles sobre GF(2¹³) — una construcción algebraicamente más compleja que las S-boxes DES o SubBytes AES. El programa de claves deriva todos los subclave de ronda aplicando recursivamente la función de ronda LOKI97 a la clave maestra.

Características principales

  • Bloques de 128 bits — mejorado desde los bloques de 64 bits de LOKI89, eliminando la vulnerabilidad de límite de cumpleaños
  • Tres tamaños de clave: 128, 192 y 256 bits — coincidiendo con el rango completo de longitudes de clave AES
  • Red Feistel de 16 rondas con S-boxes generadas sobre GF(2¹³) — estructura algebraica más compleja que DES o AES
  • Programa de clave auto-referencial — subclaves derivadas por aplicación recursiva de la función de ronda LOKI97
  • Origen australiano: diseñado en ADFA y Universidad Macquarie, único candidato AES con linaje académico exclusivo del hemisferio sur

Historia de la familia LOKI

  • LOKI89: El cifrado original diseñado en 1989 con bloques de 64 bits y claves de 64 bits.
  • LOKI91: Una versión mejorada que aborda las debilidades encontradas en LOKI89.
  • LOKI97: La evolución final con bloques de 128 bits, presentada a la competición AES.

Modos de cifrado

  • CBC: Encadenamiento de bloques cifrados — cada bloque LOKI97 de 128 bits es XORado con el cifrado anterior antes de la secuencia Feistel de 16 rondas con S-boxes GF(2¹³). Los bloques de 128 bits mantienen la probabilidad de colisión insignificante hasta aproximadamente 2⁶⁴ bloques (~148 exabytes), evitando Sweet32.
  • ECB: Libro de códigos electrónico — cada bloque LOKI97 de 128 bits procesado independientemente en las 16 rondas. Bloques idénticos producen siempre el mismo cifrado. Solo aceptable para cifrado de bloque único.
  • CFB: Retroalimentación de cifrado — la función de bloque LOKI97 de 128 bits cifra el bloque cifrado anterior y los n bits superiores se aplican XOR al texto sin formato. La estructura Feistel garantiza dispersión y resistencia a ataques.
  • OFB: Retroalimentación de salida — la función de bloque LOKI97 genera flujo de clave determinista cifrando iterativamente el estado, independientemente del texto sin formato. El estado interno de 128 bits garantiza un ciclo de flujo de clave de al menos 2⁶⁴.
  • RAW: Bloque crudo - Cifrado directo de un solo bloque sin modo de encadenamiento. No requiere IV. Solo para bloques de 128 bits.

Estructura del algoritmo

LOKI97 utiliza una estructura de red Feistel de 16 rondas. Cada ronda procesa un bloque de 128 bits dividido en dos mitades de 64 bits (L y R).

Programación de claves

La clave maestra de 256 bits se expande en 48 subclaves (SK[0] a SK[47]) usando la función f y la constante DELTA (derivada de la proporción áurea). Para claves de 128 o 192 bits, el material de clave se replica para llenar un registro de clave de 256 bits antes de la expansión.

Función de ronda

Cada ronda aplica: L' = R + SK[3i], R' = L XOR f(R + SK[3i], SK[3i+1], SK[3i+2]). La adición es módulo 2^64.

La función f

La función f central f(A, B) consta de cuatro capas:

  • KP (Permutación controlada por clave): Selecciona bits de A basándose en los bits de control en B
  • Sa (Capa S-box a): Ocho búsquedas S-box paralelas usando dos tipos (S1: 13→8 bits, S2: 11→8 bits)
  • P (Permutación): Permutación de 64 bits usando un patrón de entrelazado de bits 8×8
  • Sb (Capa S-box b): Segunda ronda de ocho búsquedas S-box con material de clave adicional de B

Cajas S

S1 tiene 8192 entradas (entrada de 13 bits → salida de 8 bits), S2 tiene 2048 entradas (entrada de 11 bits → salida de 8 bits). Ambas se calculan usando operaciones de cubo en GF(2^13) y GF(2^11) respectivamente, con polinomios generadores específicos para una fuerte no linealidad.

Descifrado

El descifrado usa la misma estructura pero aplica las subclaves en orden inverso (SK[47] hasta SK[0]) y usa resta en lugar de suma.

Comparación de algoritmos

Algoritmo Longitud de clave Tamaño de bloque Seguridad Velocidad
LOKI97 128/192/256 bits 128 bits Buena Media
AES 128/192/256 bits 128 bits Excelente Rápida
Serpent 128/192/256 bits 128 bits Excelente Media
DES 56 bits 64 bits Débil Rápida

Consideraciones de seguridad

  • No se conoce ningún ataque práctico de ronda completa en LOKI97. La construcción S-box GF(2¹³) fue diseñada para contrarrestar el criptoanálisis diferencial y lineal expuesto en LOKI89.
  • El bloque de 128 bits elimina el ataque Sweet32 que afecta a LOKI89/91 de 64 bits. Una colisión bajo LOKI97 requeriría ≈ 2⁶⁴ bloques (~148 exabytes) — inexistente en la práctica.
  • La falla de LOKI97 en la evaluación AES fue un juicio de rendimiento, no de seguridad. El comité AES citó rendimiento de software inferior a Rijndael y Twofish. No se señaló ninguna debilidad criptográfica.
  • Use AES-128-GCM o AES-256-GCM para cualquier nuevo sistema. LOKI97 es adecuado para descifrar datos de archivos LOKI97 existentes y para investigación académica.

Casos de uso

  • Investigación académica: construcción S-box GF(2¹³) y programa de clave auto-referencial ofrecen un objeto de estudio único para el diseño algebraico de cifras
  • Compatibilidad con sistemas heredados australianos: datos cifrados LOKI97 de los años 90 en sistemas gubernamentales o de defensa australianos
  • Estudio comparativo de candidatos AES: junto con Serpent, Twofish, RC6 y MARS para comprender los compromisos de diseño evaluados por NIST
  • Cumplimiento no-AES: organizaciones que requieren cifrado exclusivamente no-AES con análisis criptográfico documentado

Referencias

Menú Rápido

Sin herramientas recientes