Cifrado de Feistel
En criptografía, un cifrado Feistel es una estructura simétrica utilizada en la construcción de cifrados en bloque, que lleva el nombre del criptógrafo alemán de IBM Horst Feistel; también se conoce comúnmente como red Feistel. Un amplio conjunto de cifradores de bloques utilizan este esquema, incluido el Estándar de Cifrado de Datos
La estructura Feistel tiene la ventaja de que las operaciones de cifrado y descifrado son muy similares, incluso idénticas en algunos casos, y sólo requieren una inversión del programa de claves. Por lo tanto, el tamaño del código o de los circuitos necesarios para implementar un cifrado de este tipo se reduce casi a la mitad.
La construcción de Feistel es de naturaleza iterativa, lo que facilita la implementación del criptosistema en el hardware.
Las redes Feistel y construcciones similares son cifrados de producto, por lo que combinan múltiples rondas de operaciones repetidas, como:
- Barrido de bits (a menudo llamado cajas de permutación o cajas P)
- Funciones no lineales simples (a menudo llamadas cajas de sustitución o cajas S)
- Mezcla lineal (en el sentido del álgebra modular) utilizando XOR para producir una función con grandes cantidades de lo que Claude Shannon describió como "confusión y difusión".
El barajado de bits crea el efecto de difusión, mientras que la sustitución se utiliza para la confusión.
Trabajo teórico
Muchos cifrados simétricos modernos utilizan redes Feistel, y la estructura y las propiedades de los cifrados Feistel han sido ampliamente exploradas por los criptógrafos. En concreto, Michael Luby y Charles Rackoff analizaron la construcción del cifrado de bloques Feistel y demostraron que si la función de ronda es una función pseudoaleatoria criptográficamente segura, con Ki utilizado como semilla, entonces 3 rondas son suficientes para que el cifrado de bloques sea una permutación pseudoaleatoria, mientras que 4 rondas son suficientes para que sea una permutación pseudoaleatoria "fuerte" (lo que significa que sigue siendo pseudoaleatoria incluso para un adversario que obtenga acceso de oráculo a su permutación inversa). Debido a este importante resultado de Luby y Rackoff, los cifradores Feistel se denominan a veces cifradores de bloque Luby-Rackoff. Otros estudios teóricos generalizaron la construcción y definieron límites más precisos para la seguridad.
Construcción
Sea F {\displaystyle {\rm {F}} la función de ronda y sea K 1 , K 2 , ... , K n {\displaystyle K_{1},K_{2},\ldots ,K_{n}}las subclaves de las rondas 1 , 2 , ... , n {\displaystyle 1,2,\ldots ,n} respectivamente.
Entonces, la operación básica es la siguiente:
Dividir el bloque de texto plano en dos trozos iguales, ( L 1 {\displaystyle L_{1}} , R 1 {\displaystyle R_{1}} )
Para cada ronda i = 1 , 2 , ... , n {\displaystyle i=1,2,\dots ,n} , compute (calcule)
L i + 1 = R i {\displaystyle L_{i+1}=R_{i},}
R i + 1 = L i ⊕ F ( R i , K i ) {\displaystyle R_{i+1}=L_{i}\oplus {\rm {F}(R_{i},K_{i})} .
Entonces el texto cifrado es ( R n + 1 , L n + 1 ) {\displaystyle (R_{n+1},L_{n+1})} . (Comúnmente, las dos piezas R n {\displaystyle R_{n}} y L n {\displaystyle L_{n}} no se intercambian después de la última ronda).
El descifrado de un texto cifrado ( R n , L n ) {\displaystyle (R_{n},L_{n})} se realiza calculando para i = n , n - 1 , ... , 1 {\displaystyle i=n,n-1,\ldots ,1}
R i = L i + 1 {\displaystyle R_{i}=L_{i+1},}
L i = R i + 1 ⊕ F ( L i + 1 , K i ) {\displaystyle L_{i}=R_{i+1}\oplus {\rm {F}(L_{i+1},K_{i})} .
Entonces ( L 1 , R 1 ) {\displaystyle (L_{1},R_{1})} es de nuevo el texto plano.
Una de las ventajas de este modelo es que la función redonda F no tiene que ser invertible, y puede ser muy compleja.
El diagrama ilustra el proceso de cifrado. El descifrado sólo requiere invertir el orden de la subclave K n , K n - 1 , ... , K 1 {{displaystyle K_{n},K_{n-1},\ldots ,K_{1}} utilizando el mismo proceso; ésta es la única diferencia entre el cifrado y el descifrado:
Los cifrados Feistel desequilibrados utilizan una estructura modificada en la que L 1 {pantalla L_{1}} y R 1 {pantalla R_{1}} no tienen la misma longitud. El cifrado MacGuffin es un ejemplo experimental de este tipo de cifrado.
La construcción Feistel también se utiliza en algoritmos criptográficos distintos de los cifrados por bloques. Por ejemplo, el esquema Optimal Asymmetric Encryption Padding (OAEP) utiliza una red Feistel simple para aleatorizar los textos cifrados en ciertos esquemas de cifrado de clave asimétrica.
Operación de red Feistel sobre el cifrado de bloques, donde P es el texto plano y C es el texto cifrado
Lista de cifrados Feistel
Feistel o Feistel modificado: Blowfish, Camellia, CAST-128, DES, FEAL, ICE, KASUMI, LOKI97, Lucifer, MARS, MAGENTA, MISTY1, RC5, TEA, Triple DES, Twofish, XTEA, GOST 28147-89
Feistel generalizado: CAST-256, MacGuffin, RC2, RC6, Skipjack
Preguntas y respuestas
P: ¿Qué es una cifra Feistel?
R: Un cifrado Feistel es una estructura simétrica utilizada en la construcción de cifrados en bloque, que debe su nombre al criptógrafo alemán de IBM Horst Feistel. También se conoce comúnmente como red Feistel.
P: ¿Cuáles son algunas de las ventajas de utilizar una estructura Feistel?
R: La principal ventaja de utilizar una estructura Feistel es que las operaciones de cifrado y descifrado son muy similares, incluso idénticas en algunos casos, y sólo requieren una inversión del programa de claves. Esto reduce casi a la mitad el tamaño del código o de los circuitos necesarios para implementar un cifrado de este tipo. Además, su naturaleza iterativa facilita la implementación del criptosistema en hardware.
P: ¿Cómo describe Claude Shannon la "confusión y difusión"?
R: Claude Shannon describió la "confusión y difusión" como la presencia de grandes cantidades de ambos elementos para dificultar que un atacante descifre un mensaje cifrado.
P: ¿Qué técnicas se utilizan para crear confusión y difusión?
R: La confusión y la difusión se crean mediante el barajado de bits (a menudo llamado cajas de permutación o cajas P) y funciones no lineales simples (a menudo llamadas cajas de sustitución o cajas S), así como la mezcla lineal (en el sentido del álgebra modular) utilizando XOR. La mezcla de bits crea el efecto de difusión, mientras que la sustitución se utiliza para la confusión.
P: ¿Qué tipo de cifrado es una red Feistel?
R: Una red Feistel es un tipo de cifrado de producto que combina varias rondas de operaciones repetidas para cifrar datos de forma segura.
P: ¿Quién desarrolló este tipo de criptografía?
R: La estructura Feistel fue desarrollada por el criptógrafo alemán de IBM Horst Feistel.
P: ¿Se basa el Estándar de Cifrado de Datos en este tipo de criptografía?
R: Sí, Data Encryption Standard utiliza este tipo de criptografía que utiliza los mismos principios descritos anteriormente para crear confusión y difusión dentro de un mensaje cifrado.