En criptografía , Decim es un cifrado de flujo basado en LFSR desarrollado por Côme Burbain , Oliver Billet, Ann Cantoux, Nicolas Courtois , Blandine Debret, Henry Hilbert, Louis Goubin, Aline Gouget, Louis Grandboulan, Cederic Lardoux, Marin Mignet, Thomas Pornin y Herv Sibé. Especializados en implementación de hardware. patentado _ Se introdujo en el proyecto eSTREAM , donde no pasó de la tercera etapa.
El requisito más importante para los cifrados es la resistencia a varios tipos de ataques . Los ataques algebraicos son una de las amenazas de seguridad más graves para los cifrados de flujo . Si la relación entre una combinación de bits de clave secreta y el bit gamma generado por ella es simple o fácilmente predecible, encontrar relaciones algebraicas entre una combinación de bits de clave secreta y un bit de flujo de clave (gamma) también es una tarea sencilla. Para complicar la relación entre la combinación de bits de la clave secreta (o la combinación de bits del estado inicial del LFSR generado por la clave secreta) y los bits del flujo de claves (gamma), se utiliza una función de filtrado no lineal de la combinación de bits de la clave secreta y los mecanismos de desincronización entre la combinación de bits de la clave secreta y los bits del flujo de claves (gamma). Ambos mecanismos (la función de filtrado no lineal y el mecanismo de desincronización entre la combinación de bits LFSR y bits de flujo de clave ) son la base de operación y el medio principal para prevenir ataques criptoanalíticos del cifrado Decim .
Comenzar con el cifrado de flujo Decim comienza ingresando una clave privada de 80 bits y una clave pública de 64 bits (Vector de inicialización). Luego, usando ciertas combinaciones lineales de bits y bits , usando una función de filtro no lineal y aplicando el mecanismo de muestreo ABSG , se calcula el estado inicial del LFSR de 192 bits . Después de realizar todas estas operaciones, comienza la generación del flujo de clave [1] y llena un búfer especial BUFFER , que se utiliza para garantizar la salida continua de bits a la salida del cifrado, donde se agregan módulo dos con un binario secuencia de caracteres de texto sin formato .
El polinomio primitivo asociado con LFSR tiene la forma:
Denote por [2] la secuencia de bits recibidos de la salida LFSR , luego la regla para calcular un bit en la salida LFSR es:
Para complicar las dependencias entre bits y bits LFSR , se utiliza una función de filtrado no lineal de siete variables . En cada ciclo , se aplica dos veces: a los bits que están en diferentes posiciones en LFSR . Denota y funciones tales que
y
, dónde
Dejar
.
Posiciones de bit LFSR que son argumentos para y :
Después
.
El mecanismo de muestreo ABSG se utiliza para evitar ataques algebraicos y algunos tipos de ataques de correlación rápida al desincronizar los bits LFSR filtrados y los bits gamma . El trabajo del mecanismo de muestreo ABSG es dividir la secuencia en subsecuencias de la forma , where , y salida if , y de otra manera.
Algoritmo ABSG
Entrada: ( )
Conjunto: ,
Repita los siguientes pasos:
Ejemplo:
Sea , entonces, la secuencia correspondiente a la salida de ABSG tiene la forma .
En promedio, un bit en la entrada de ABSG corresponde a un bit en la salida, como se puede ver en el ejemplo.
Búfer BÚFERDado que la salida de bits ABSG no es constante ( en promedio, se usan tres bits para generar un bit ), y dado que el cifrado de flujo debe emitir un bit gamma para cada ciclo de reloj , se usa un búfer BUFFER para emitir continuamente bits gamma .
Después de la inicialización del estado inicial de RSLOS , comienza el llenado de BUFFER , y solo después de que se llene BUFFER , comenzará el cifrado del texto sin formato (además , BUFFER funciona de acuerdo con el tipo de cola ; el primer bit que ingresa a BUFFER es el primero en salir).
Existe la posibilidad de que, si bien BUFFER debería haber emitido un bit, resultó estar vacío. Esta probabilidad es pequeña, por ejemplo, para un BUFFER con cuatro entradas, la probabilidad de que esté vacío cuando debería emitir un bit es . Los desarrolladores de Decim proponen descartar esta posibilidad, asumiendo que su probabilidad es cero.
La clave secreta tiene una longitud de 80 bits, la clave pública (vector de inicialización) tiene una longitud de 64 bits pero se completa con ceros hasta los 80 bits. Vamos a los bits de LFSR . Luego, el estado inicial del LFSR se calcula de la siguiente manera:
Se puede ver que el número de posibles estados iniciales del LFSR es .
Para evitar ataques de intercambio de memoria de tiempo, la longitud del LFSR debe ser de al menos 160 bits. Además , LFSR debería ser simple en la implementación de hardware. En base a estos factores, se eligió que el tamaño de LFSR fuera de 192 bits.
El peso de Hamming del polinomio primitivo debe ser lo suficientemente grande para evitar un ataque de correlación rápido , pero por otro lado , el peso de Hamming del polinomio primitivo no debe ser demasiado grande, para no aumentar el tiempo de cifrado en el hardware. implementación.
La función de filtro debe ser de equilibrio [3] y para evitar el criptoanálisis diferencial debe satisfacer el criterio de propagación : la función debe ser de equilibrio. Además, para simplificar la implementación hardware, es deseable que la función sea simétrica, es decir, que el valor de la función dependa únicamente del peso Hamming de su argumento (conjunto x_1,…x_7). Todo este requisito se satisface mediante una función cuadrática de la forma:
,
que se utiliza como función de filtrado del cifrado Decim .
Excluyendo los casos complejos de ataques de compromiso de memoria-tiempo, la complejidad computacional de los ataques al cifrado Decim , según sus autores, es igual a la complejidad de un ataque de fuerza bruta y no es inferior a [4] .
Sin embargo, un criptoanálisis independiente realizado por Hongyang Wu y Bart Prenil mostró la falta de confiabilidad del cifrado Decim, y la complejidad computacional del ataque resultó ser no más de , lo cual es absolutamente inaceptable [5] .
Criptosistemas simétricos | |
---|---|
Cifrados de flujo | |
Red Feistel | |
red SP | |
Otro |