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).
Acerca de LOKI97
LOKI97 es un cifrado de bloques de clave simétrica diseñado por Lawrie Brown y Josef Pieprzyk en 1997. Fue presentado como candidato para la competición del Estándar de Cifrado Avanzado (AES), representando la evolución de los cifrados anteriores LOKI89 y LOKI91 desarrollados en Australia.
El cifrado opera sobre bloques de datos de 128 bits y soporta tamaños de clave de 128, 192 o 256 bits. Utiliza una estructura de red Feistel de 16 rondas con funciones de ronda complejas basadas en S-boxes y permutaciones, diseñadas para proporcionar fuerte resistencia contra el criptoanálisis diferencial y lineal.
Características principales
- Tamaño de bloque de 128 bits que cumple con los estándares de seguridad modernos
- Tamaños de clave flexibles: 128, 192 o 256 bits
- Estructura Feistel de 16 rondas para mezcla completa de datos
- Diseñado para resistir el criptoanálisis diferencial y lineal
- Parte de la familia de cifrados LOKI desarrollada en Australia
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 - Cada bloque se XOR con el bloque cifrado anterior antes del cifrado. Proporciona seguridad fuerte. Requiere IV.
- ECB: Libro de códigos electrónico - Cada bloque se cifra independientemente. Simple pero revela patrones en los datos. No recomendado para la mayoría de usos.
- CFB: Retroalimentación de cifrado - Convierte el cifrado de bloques en cifrado de flujo. Auto-sincronizable y maneja bloques parciales.
- OFB: Retroalimentación de salida - Genera el flujo de claves independientemente del texto plano. Sin propagación de errores.
- 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
- LOKI97 proporciona buena seguridad sin ataques prácticos encontrados contra el cifrado completo
- El tamaño de bloque de 128 bits se alinea con los requisitos de seguridad modernos
- Aunque no fue seleccionado como AES, LOKI97 permanece criptográficamente sólido
- Para nuevas aplicaciones, se recomienda AES como estándar internacional
Casos de uso
- Compatibilidad con sistemas heredados e investigación histórica
- Educación criptográfica y estudio de algoritmos
- Análisis comparativo con otros candidatos AES
- Aplicaciones que requieren criptografía desarrollada en Australia
Referencias
Herramientas Relacionadas
Cifrado/Descifrado AES
Cifrar y descifrar texto de forma segura usando el algoritmo AES
Cifrado/Descifrado Serpent
Algoritmo finalista AES con claves de 128/192/256 bits, 32 rondas, ofreciendo un excelente margen de seguridad y resistencia criptanalítica probada
Cifrado/Descifrado Twofish
Finalista AES, cifrado simétrico con bloques de 128 bits y claves de 128/192/256 bits, diseñado por Bruce Schneier