cifrado de Feistel


En criptografía , un cifrado de Feistel (también conocido como cifrado de bloque Luby-Rackoff ) es una estructura simétrica utilizada en la construcción de cifrados de bloque , llamado así por el físico y criptógrafo de origen alemán Horst Feistel , quien realizó una investigación pionera mientras trabajaba para IBM (EE. UU. ); también se conoce comúnmente como red Feistel . Una gran proporción de cifrados de bloques utilizan el esquema, incluido el estándar de cifrado de datos de EE. UU., el GOST soviético/ruso y los más recientes Blowfish y Twofish.cifrados En un cifrado de Feistel, el cifrado y el descifrado son operaciones muy similares, y ambas consisten en ejecutar iterativamente una función llamada "función redonda" un número fijo de veces.

Muchos cifrados de bloques simétricos modernos se basan en redes de Feistel. Las redes Feistel se vieron comercialmente por primera vez en el cifrado Lucifer de IBM , diseñado por Horst Feistel y Don Coppersmith en 1973. Las redes Feistel ganaron respetabilidad cuando el gobierno federal de EE. UU. adoptó el DES (un cifrado basado en Lucifer, con cambios realizados por la NSA ) en 1976. Al igual que otros componentes del DES, la naturaleza iterativa de la construcción de Feistel facilita la implementación del criptosistema en el hardware (particularmente en el hardware disponible en el momento del diseño del DES).

Una red Feistel usa una función redonda , una función que toma dos entradas, un bloque de datos y una subclave, y devuelve una salida del mismo tamaño que el bloque de datos. [1] En cada ronda, la función de ronda se ejecuta en la mitad de los datos que se cifrarán y su salida se somete a XOR con la otra mitad de los datos. Esto se repite un número fijo de veces y el resultado final son los datos cifrados. Una ventaja importante de las redes de Feistel en comparación con otros diseños de cifrado, como las redes de sustitución-permutación.es que se garantiza que toda la operación sea invertible (es decir, los datos cifrados se pueden descifrar), incluso si la función de ronda no es en sí misma invertible. La función redonda se puede hacer arbitrariamente complicada, ya que no es necesario diseñarla para que sea invertible. [2] : 465  [3] : 347  Además, las operaciones de cifrado y descifrado son muy similares, incluso idénticas en algunos casos, requiriendo solo una inversión del programa clave . Por lo tanto, el tamaño del código o circuito requerido para implementar tal cifrado se reduce casi a la mitad.

Michael Luby y Charles Rackoff analizaron la construcción del cifrado de Feistel y demostraron que si la función de ronda es una función pseudoaleatoria criptográficamente segura , con Ki como semilla, entonces 3 rondas son suficientes para hacer que el cifrado de bloque sea una permutación pseudoaleatoria , mientras que 4 rondas son suficientes . suficiente para convertirla en una permutación pseudoaleatoria "fuerte" (lo que significa que sigue siendo pseudoaleatoria incluso para un adversario que obtiene acceso de Oracle a su permutación inversa). [4] Debido a este importante resultado de Luby y Rackoff, los cifrados de Feistel a veces se denominan cifrados de bloque de Luby-Rackoff.

El trabajo teórico posterior ha generalizado un poco la construcción y ha dado límites más precisos para la seguridad. [5] [6]

Sea la función de ronda y sean las subteclas para las rondas respectivamente.