Saltar al contenido
Inicio

Cifrado de Feistel: estructura, funcionamiento y aplicaciones

Red Feistel: diseño iterativo de cifrados en bloque que facilita cifrado/descifrado simétricos. Explica su estructura, propiedades, historia, usos, variantes y diferencias con redes SPN.

En criptografía, una red o cifrado de Feistel es una topología simétrica empleada para construir cifrados en bloque. Diseñada por Horst Feistel en IBM, esta arquitectura ha sido la base de numerosos algoritmos prácticos, entre ellos el Estándar de Cifrado de Datos (DES). Su popularidad radica en la simplicidad conceptual y en la facilidad de implementar tanto las rutinas de cifrado como las de descifrado con la misma lógica básica.

Galería de imágenes

1 Imagen

Descripción general y componentes

Una red Feistel procesa un bloque de datos dividiéndolo en dos mitades (izquierda y derecha). En cada ronda se aplica una función de ronda F a una de las mitades combinada con una subclave; el resultado se mezcla con la otra mitad mediante una operación simple, típicamente XOR. Tras cada ronda las mitades se intercambian parcialmente, y el proceso se repite varias veces. Este esquema usa:

  • División del bloque: mitades L y R.
  • Función de ronda F: transformaciones no lineales o mezcla de bits.
  • Operación de mezcla: generalmente XOR, que implementa la combinación.
  • Programa de claves: subclaves derivadas de la clave maestra para cada ronda.

Propiedades y ventajas

Una característica fundamental es que el cifrado y el descifrado son muy parecidos: invertir el cifrado suele reducirse a aplicar las mismas rondas con el orden de subclaves invertido. Esta simetría simplifica implementaciones y reduce el tamaño del código o del hardware necesario. Además, al ser una construcción iterativa y modular, facilita la evaluación de seguridad y la sustitución de componentes (por ejemplo, mejorar las cajas S o la función F) sin cambiar la estructura general.

Funcionamiento paso a paso

  1. Dividir el bloque en L0 y R0.
  2. Para cada ronda i: Li+1 = Ri; Ri+1 = Li ⊕ F(Ri, Ki).
  3. Tras n rondas, las mitades se recombinan (a veces con un intercambio final).

El uso de sustitución y permutación persigue la confusión y difusión descritas por Claude Shannon: las cajas S aportan no linealidad (confusión) y las permutaciones o barridos de bits (P-box) contribuyen a la difusión.

Historia y resultados teóricos

La estructura se consolidó en la década de 1970 con los primeros cifradores comerciales. Investigaciones posteriores dieron resultados formales sobre seguridad: construcciones de Feistel con un número mínimo de rondas ofrecen propiedades cercanas a un permutador pseudorandom si la función de ronda satisface ciertas condiciones (trabajos como los de Luby y Rackoff). Aun así, la seguridad práctica depende fuertemente de la elección de F, las cajas S y el programa de claves.

Variantes y comparaciones

Existen variantes como redes Feistel balanceadas, no balanceadas y redes generalizadas que permiten dividir el bloque en más de dos partes o usar funciones de tamaño distinto. A diferencia de las redes de sustitución-permutación (SPN), donde se aplican sustituciones y permutaciones sobre todo el bloque en cada ronda, las Feistel aplican la no linealidad localmente y permiten invertir sin necesidad de invertir F.

Usos y consideraciones prácticas

Las redes Feistel siguen utilizándose en ciphers comerciales y académicos por su flexibilidad. Para asegurar resistencia ante ataques modernos hay que atender al número de rondas, calidad de las cajas S y a un programa de claves robusto. Ejemplos y estudios adicionales pueden consultarse en recursos especializados y específicos sobre diseño de cifrados: clave y subclaves, cifrados por producto, cajas S, álgebra modular, operaciones XOR y efecto de difusión. Para más contexto histórico y técnico puede verse también material sobre operaciones de cifrado y sobre estándares concretos, así como trabajos académicos enlazados desde bibliografías y reseñas: cifrados en bloque, P-box y conceptos básicos.

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}}{\rm F} la función de ronda y sea K 1 , K 2 , ... , K n {\displaystyle K_{1},K_{2},\ldots ,K_{n}}K_1,K_2,\ldots,K_{n}las subclaves de las rondas 1 , 2 , ... , n {\displaystyle 1,2,\ldots ,n} 1,2,\ldots,nrespectivamente.

Entonces, la operación básica es la siguiente:

Dividir el bloque de texto plano en dos trozos iguales, ( L 1 {\displaystyle L_{1}} L_1, R 1 {\displaystyle R_{1}} ) R_1

Para cada ronda i = 1 , 2 , ... , n {\displaystyle i=1,2,\dots ,n} i =1,2,\dots,n, compute (calcule)

L i + 1 = R i {\displaystyle L_{i+1}=R_{i},} 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})} 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})} (R_{n+1}, L_{n+1}). (Comúnmente, las dos piezas R n {\displaystyle R_{n}}R_n y L n {\displaystyle L_{n}}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})} (R_n, L_n)se realiza calculando para i = n , n - 1 , ... , 1 {\displaystyle i=n,n-1,\ldots ,1} i=n,n-1,\ldots,1

R i = L i + 1 {\displaystyle R_{i}=L_{i+1},} 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})} L_{i} = R_{i+1} \oplus {\rm F}(L_{i+1}, K_{i}).

Entonces ( L 1 , R 1 ) {\displaystyle (L_{1},R_{1})} (L_1,R_1)es de nuevo el texto plano.

Una de las ventajas de este modelo es que la función redonda F {\rm 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}}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}}L_1 y R 1 {pantalla R_{1}}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.

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.

Artículos relacionados

Autor

AlegsaOnline.com Cifrado de Feistel: estructura, funcionamiento y aplicaciones

URL: https://es.alegsaonline.com/art/33900

Compartir