Cifrado de bloque Feistel
Feistel Cipher no es un esquema específico de cifrado en bloque. Es un modelo de diseño del que se derivan muchos cifrados de bloques diferentes. DES es solo un ejemplo de un cifrado Feistel. Un sistema criptográfico basado en la estructura de cifrado de Feistel utiliza el mismo algoritmo tanto para el cifrado como para el descifrado.
Proceso de cifrado
El proceso de cifrado utiliza la estructura de Feistel que consiste en múltiples rondas de procesamiento del texto plano, cada ronda consiste en un paso de "sustitución" seguido de un paso de permutación.
La estructura de Feistel se muestra en la siguiente ilustración:
El bloque de entrada de cada ronda se divide en dos mitades que se pueden denotar como L y R para la mitad izquierda y la mitad derecha.
En cada ronda, la mitad derecha del bloque, R, pasa sin cambios. Pero la mitad izquierda, L, pasa por una operación que depende de R y la clave de cifrado. Primero, aplicamos una función de encriptación 'f' que toma dos entradas: la clave K y R. La función produce la salida f (R, K). Luego, XOR la salida de la función matemática con L.
En la implementación real del cifrado de Feistel, como DES, en lugar de utilizar la clave de cifrado completa durante cada ronda, se deriva una clave dependiente de la ronda (una subclave) de la clave de cifrado. Esto significa que cada ronda usa una clave diferente, aunque todas estas subclaves están relacionadas con la clave original.
El paso de permutación al final de cada ronda intercambia la L modificada y la R sin modificar. Por lo tanto, la L para la siguiente ronda sería R de la ronda actual. Y R para la siguiente ronda será la salida L de la ronda actual.
Los pasos de sustitución y permutación anteriores forman una "ronda". El número de rondas lo especifica el diseño del algoritmo.
Una vez que se completa la última ronda, los dos subbloques, 'R' y 'L', se concatenan en este orden para formar el bloque de texto cifrado.
La parte difícil de diseñar un cifrado Feistel es la selección de la función redonda 'f'. Para ser un esquema irrompible, esta función debe tener varias propiedades importantes que están más allá del alcance de nuestra discusión.
Proceso de descifrado
El proceso de descifrado en el cifrado de Feistel es casi similar. En lugar de comenzar con un bloque de texto sin formato, el bloque de texto cifrado se alimenta al inicio de la estructura de Feistel y luego el proceso a partir de entonces es exactamente el mismo que se describe en la ilustración dada.
Se dice que el proceso es casi similar y no exactamente igual. En el caso del descifrado, la única diferencia es que las subclaves utilizadas en el cifrado se utilizan en orden inverso.
El intercambio final de 'L' y 'R' en el último paso del Cifrado Feistel es esencial. Si estos no se intercambian, el texto cifrado resultante no se podría descifrar utilizando el mismo algoritmo.
Numero de rondas
El número de rondas utilizadas en un cifrado Feistel depende de la seguridad deseada del sistema. Más rondas proporcionan un sistema más seguro. Pero al mismo tiempo, más rondas significan procesos de cifrado y descifrado lentos e ineficaces. Por lo tanto, el número de rondas en los sistemas depende del equilibrio entre eficiencia y seguridad.