El modo de retroalimentación de salida (OFB) es uno de los varios modos de operación para cifrados en bloque, que permite utilizar un cifrado en bloque de una manera que proporciona confidencialidad al convertirlo en un cifrado en flujo. Este modo es particularmente notable por su capacidad de generar flujos de claves, lo que lo convierte en un candidato adecuado para ciertas aplicaciones criptográficas que requieren un cifrado de flujo.
En el modo OFB, el proceso de cifrado implica aplicar repetidamente la función de cifrado del bloque a un valor inicial, normalmente conocido como vector de inicialización (IV). Este IV es importante para garantizar que el mismo texto sin formato cifrado con la misma clave no produzca el mismo texto cifrado, proporcionando así seguridad semántica. El IV se transforma a través de la función de cifrado, y el resultado de esta transformación sirve como flujo de claves al que se aplica XOR con el texto sin formato para producir el texto cifrado. Este proceso se puede describir en los siguientes pasos:
1. Inicialización: Comience con un IV, que es un bloque del mismo tamaño que el tamaño del bloque del cifrado de bloque.
2. Cifrado: Cifre el IV usando el cifrado de bloque y la clave secreta para producir el primer bloque de flujo de claves.
3. Generación de flujo de claves: El resultado de la operación de cifrado anterior se devuelve al cifrado de bloque para producir el siguiente bloque de flujo de claves.
4. Operación XOR: Cada bloque de flujo de claves se realiza mediante operación XOR con un bloque de texto sin formato para producir el bloque de texto cifrado correspondiente.
Esta secuencia de operaciones se puede representar matemáticamente de la siguiente manera:
- Dejar denota la función de cifrado de cifrado en bloque con clave
.
- Dejar Sea el vector de inicialización.
- Dejar ser la
-ésimo bloque de texto plano.
- Dejar ser la
-ésimo bloque de texto cifrado.
- Dejar ser la
-ésimo bloque del flujo de claves.
Las operaciones son:
1.
2. for
3.
Aquí, denota la operación XOR bit a bit. Este proceso continúa para cada bloque de texto sin formato, generando un bloque de texto cifrado correspondiente.
Una de las principales ventajas del modo OFB es que convierte el cifrado de bloque en un cifrado de flujo síncrono. Esto significa que el flujo de claves es independiente del texto sin formato y del texto cifrado, y depende únicamente del IV y la clave secreta. Esta propiedad es beneficiosa porque permite el cálculo previo del flujo de claves, lo que permite procesos de cifrado y descifrado más rápidos, especialmente en entornos donde la baja latencia es fundamental.
Además, dado que la generación del flujo de claves en modo OFB no depende del texto sin formato, los errores en el texto cifrado no se propagan más allá del bloque erróneo. Esta característica es importante para aplicaciones donde la propagación de errores podría provocar problemas importantes, como en los sistemas de comunicación en tiempo real.
Sin embargo, existen algunas consideraciones y posibles inconvenientes al utilizar el modo OFB:
1. IV Reutilización: Reutilizar el mismo IV con la misma clave para diferentes mensajes puede generar vulnerabilidades de seguridad. Si se reutiliza el IV, el flujo de claves será el mismo para ambos mensajes, y la aplicación XOR de los textos cifrados correspondientes cancelará el flujo de claves, revelando el XOR de los textos sin formato. Esto puede provocar ataques de recuperación de texto sin formato. Por tanto, es fundamental utilizar un IV único para cada operación de cifrado.
2. Sincronización: Dado que el modo OFB funciona como un cifrado de flujo síncrono, tanto el remitente como el receptor deben estar sincronizados. Si algún bloque se pierde o se daña durante la transmisión, puede desincronizar la generación del flujo de claves, lo que provocará un descifrado incorrecto de los bloques posteriores.
3. Throughput: El rendimiento del modo OFB está limitado por la velocidad de cifrado del bloque, ya que cada bloque de flujo de claves requiere una operación de cifrado. Este puede ser un factor limitante en aplicaciones de alto rendimiento.
A pesar de estas consideraciones, el modo OFB sigue siendo una herramienta valiosa para generar flujos de claves en aplicaciones criptográficas. Es particularmente útil en escenarios donde la longitud del texto sin formato no es un múltiplo del tamaño del bloque, ya que evita la necesidad de relleno, a diferencia de otros modos de cifrado de bloques como CBC (Cipher Block Chaining).
Para ilustrar el uso del modo OFB como generador de flujo de claves, considere el siguiente ejemplo:
– Supongamos que tenemos un cifrado de bloque con un tamaño de bloque de 128 bits y utilizamos un IV de 128 bits.
– Deje que el texto claro sea "¡Hola, mundo!" que, cuando se convierte a binario, tiene una longitud de 96 bits.
– El texto plano se divide en bloques de 128 bits (con relleno si es necesario).
Supongamos que la vía intravenosa es y la clave secreta es
.
1. Inicialización:
–
2. Generación de flujo de claves:
–
–
3. Cifrado:
- Dejar Sea el primer bloque de 128 bits del texto sin formato (incluido el relleno).
–
- Dejar ser el segundo bloque de 128 bits del texto sin formato (si lo hay).
–
Los bloques de texto cifrado y
luego se transmiten o almacenan.
Para el descifrado, el receptor utiliza el mismo IV y clave para regenerar el flujo de claves y realiza la operación XOR con los bloques de texto cifrado para recuperar el texto sin formato.
El modo OFB es un método versátil y eficaz para generar flujos de claves en aplicaciones criptográficas. Aprovecha las ventajas de los cifrados en bloque y, al mismo tiempo, proporciona la flexibilidad y eficiencia de los cifrados en flujo. La gestión adecuada de los IV y la sincronización es esencial para mantener la seguridad y la integridad de los datos cifrados.
Otras preguntas y respuestas recientes sobre Aplicaciones de los cifrados en bloque:
- ¿El modo BCE divide el texto sin formato de entrada grande en bloques posteriores?
- ¿Podemos usar un cifrado de bloque para construir una función hash o MAC?
- ¿Puede un cifrado ser determinista?
- ¿Cuáles son los modos de operación?
- ¿Qué hace el modo BCE con los cifrados de bloques simples?
- ¿Se puede crear PSRNG mediante cifrados en bloque?
- ¿Se puede construir una MAC mediante cifrados en bloque?
- ¿Qué es un modo de operación probabilístico de un cifrado de bloque?
- ¿Cómo permite el modo de operación Contador (CTR) el cifrado y descifrado paralelos y qué ventajas ofrece esto en aplicaciones prácticas?
- ¿Qué papel juega el vector de inicialización (IV) en el modo Cipher Block Chaining (CBC) y cómo mejora la seguridad?
Ver más preguntas y respuestas en Aplicaciones de cifrados en bloque