LOKI97 | |
---|---|
Creador | brown |
Creado | 1997 _ |
publicado | 1998 _ |
Tamaño de clave | 128/192/256 bits |
Tamaño de bloque | 128 bits |
Número de rondas | dieciséis |
Tipo de | Red Feistel |
LOKI97 es un cifrado de bloque simétrico de 128 bits y 16 vueltas con una clave personalizada de 128-256 bits que se utiliza para cifrar y descifrar mensajes. Desarrollado por Lawrie Brown en colaboración con J.Pieprzyk y J.Seberry. Tiene una estructura de bucle balanceado de red Feistel que usa 16 ciclos y una función f compleja que combina dos capas SP.
Actualmente no se usa mucho debido a su velocidad de encriptación relativamente lenta, requisitos de recursos más altos que otros participantes de AES y algunas vulnerabilidades potenciales.
Al desarrollar LOKI97, se tuvieron en cuenta las características de los algoritmos simétricos existentes actualmente, se tuvieron en cuenta sus vulnerabilidades y ventajas. En particular, en su artículo "Bocetos preliminares para finalizar LOKI", 15 de diciembre de 1997, el autor del algoritmo L. Brown explora Blowfish , CAST , IDEA , TEA , ICE , SAFER y una serie de otros algoritmos. Este artículo examinó las vulnerabilidades del algoritmo original, LOKI91, el predecesor de LOKI97, que tiene una falla en el mecanismo de generación de claves, lo que permitió, en teoría, utilizar el mecanismo de fuerza bruta para el ataque.
El cifrado LOKI97 no está patentado, es de uso gratuito, posicionado por el autor como un reemplazo para DES y otros algoritmos de bloque. Los predecesores son los algoritmos LOKI89 y LOKI91 . Implementado en la biblioteca mcrypt , una serie de programas de cifrado gratuitos, hay un complemento para Total Commander con soporte LOKI97.
LOKI97 fue el primer candidato publicado en la competencia Advanced Encryption Standard, fue analizado y atacado en un tiempo bastante corto. En "Debilidades en LOKI97" [1] (Rijmen & Knudsen, 1999) se reveló que el algoritmo tiene una serie de deficiencias que lo hacen vulnerable al criptoanálisis diferencial y lineal .
Según una investigación realizada dentro de la competencia AES, cambiar un bit de los datos de entrada en una de las rondas con una probabilidad relativamente alta (del orden de ) provocará un cambio de un bit en los datos de salida, lo que hace que el diferencial ataque exitoso al máximo para los intentos. Al mismo tiempo, el desequilibrio de la función F hace que el criptoanálisis lineal sea exitoso con mensajes cifrados conocidos. Al mismo tiempo, en la descripción del algoritmo, el autor estimó que la seguridad de LOKI97 era varios órdenes de magnitud mayor (se suponía que para descifrar era necesario tener al menos textos cifrados). Este análisis de las deficiencias del algoritmo no permitió que el cifrado LOKI97 pasara a la siguiente ronda de la competencia AES.
Un cifrado de bloque moderno de 128 bits debería soportar el criptoanálisis diferencial y lineal mejor que LOKI97.
Texto original (inglés)[ mostrarocultar] Un cifrado de bloque contemporáneo con un bloque de 128 bits debería resistir el ataque diferencial y lineal mejor que LOKI97.LOKI97 convierte un bloque de texto sin formato de 128 bits en texto cifrado de 128 bits. El cifrado se produce de la siguiente manera: 128 bits del bloque original [L|R] se dividen en 2 palabras de 64 bits
Después de eso, estas palabras pasan por 16 rondas de la red Feistel equilibrada de acuerdo con el siguiente algoritmo:
Cada ronda utiliza tanto la operación XOR como la adición (módulo 2:64) de palabras de 64 bits, lo que aumenta la resistencia del algoritmo al cracking. La función F(F,B) proporciona la mezcla máxima de todos los bits de entrada de la función, su descripción se dará a continuación. El proceso de descifrado es similar al algoritmo para obtener un texto cifrado: 16 pasos (de 16 a 1)
El algoritmo en sí usa una clave de 256 bits, sin embargo, la clave emitida a los usuarios puede ser de 256, 192 y también de 128 bits. En consecuencia, si se proporciona una clave de 256 bits , entonces
si se proporciona una clave de 192 bits , entonces
y si se da una clave de 128 bits , entonces
Para complicar las claves cortas (128 bits) y simples (por ejemplo, cero), la generación usó la función F, que se usa en el algoritmo a continuación.
Para obtener claves intermedias con la misma eficacia contra los ataques se utiliza la función g, una de cuyas etapas es la adición de una constante, según el autor de la " sección áurea ". La clave recibida en la entrada pasa por 48 iteraciones de las siguientes acciones (i=1.48), creando 48 claves intermedias
,dónde
Al descifrar un mensaje, las claves intermedias se utilizan en orden inverso.
La función se puede describir mediante la siguiente expresión
, donde:
Función de reproducción aleatoria de bits. Divide la palabra A de 64 bits de entrada en 2 bits de 32 bits y los 32 bits inferiores de la palabra B y produce un resultado de 64 bits en la salida de acuerdo con la fórmula:
Al intercambiar bits con una clave intermedia y parte de los datos de entrada, la función KP mezcla los bits para complicar el proceso de hacer coincidir los datos de entrada y salida provenientes de y hacia las cajas S.
Función de extensión. Convierte una palabra de entrada de 64 bits en una palabra de 96 bits de acuerdo con la siguiente ley:
.
La función está construida de tal manera que cada bit en su entrada cae en 2 cajas S.
2 grupos de cajas S. Construido para tener la máxima no linealidad (de ahí la elección de la función cúbica y la extraña potencia del campo de Galois), tener buena resistencia al criptoanálisis diferencial y también crear un efecto de avalancha al usar la función. Se utilizan bloques de diferentes longitudes S1 - 13 bits, S2 - 11 bits. , y . La entrada a Sa(C) es una palabra de 96 bits a la salida de la función E(B). Los bits altos de la palabra para Sb(C) son los 32 bits altos de la palabra B usados como una de las entradas para toda la función F(A,B), y los bits bajos son el resultado de la acción de la función P(D). Los datos de entrada para las cajas S se invierten para reducir la probabilidad de transformaciones de la forma 0-> 0, 1 -> 1. Las cajas S se calculan usando las siguientes fórmulas
La operación selecciona los 8 bits menos significativos de A.
Reorganizando la salida de la función Sa(A). Los 64 bits se mezclan según el siguiente esquema:
56 | 48 | 40 | 32 | 24 | dieciséis | 08 | 00 | 57 | 49 | 41 | 33 | 25 | 17 | 09 | 01 |
58 | cincuenta | 42 | 34 | 26 | Dieciocho | diez | 02 | 59 | 51 | 43 | 35 | 27 | 19 | once | 03 |
60 | 52 | 44 | 36 | 28 | veinte | 12 | 04 | 61 | 53 | 45 | 37 | 29 | 21 | 13 | 05 |
62 | 54 | 46 | 38 | treinta | 22 | catorce | 06 | 63 | 55 | 47 | 39 | 31 | 23 | quince | 07 |
La función P es la forma principal de barajar bits. Al construirlo, el objetivo era minimizar la probabilidad de patrones en la distribución de bits de entrada y salida. Como en versiones anteriores del algoritmo, según el autor, se tomó como base el cuadrado latino .
Criptosistemas simétricos | |
---|---|
Cifrados de flujo | |
Red Feistel | |
red SP | |
Otro |