Tema 7
Un cifrado por bloques, por sí solo, solo sabe transformar bloques de tamaño fijo. Para cifrar mensajes reales hace falta una estrategia adicional: el modo de operación. Esa elección es crítica, porque el mismo algoritmo puede ser seguro o desastroso según cómo se encadenen los bloques y cómo se manejen parámetros como IV y nonces.
Cuando estudiamos AES o DES, vimos algoritmos que operan sobre bloques de tamaño fijo. Pero los datos reales no suelen venir ya acomodados en bloques independientes y aislados. Un archivo, una imagen, una base de datos o una transmisión de red contiene secuencias largas donde importa cómo se relacionan entre sí los distintos bloques.
El modo de operación define precisamente esa relación. Indica cómo se procesa un mensaje completo, cómo intervienen IV o nonces, cómo se propagan errores y qué patrones podrían filtrarse. En la práctica, elegir mal el modo puede arruinar por completo un algoritmo fuerte.
Un cifrado por bloques transforma una entrada de tamaño fijo en una salida del mismo tamaño. Si queremos proteger mensajes largos, necesitamos una regla que diga cómo dividir el mensaje, cómo combinar bloques entre sí y cómo tratar el inicio de la secuencia.
Sin esa regla, solo tendríamos una transformación aislada de bloques. El modo de operación es lo que convierte al cifrado base en una herramienta usable sobre datos reales.
Un buen modo de operación intenta resolver varios problemas al mismo tiempo:
Algunos modos resuelven mejor unos aspectos que otros. Ninguno debe evaluarse solo por tradición o familiaridad.
Muchos modos necesitan un valor inicial adicional, como un vector de inicialización o un nonce. Este valor no siempre es secreto, pero sí debe cumplir propiedades específicas según el modo: aleatoriedad, unicidad o ambas.
Su función principal es evitar que dos mensajes iguales bajo la misma clave produzcan patrones repetidos y, en algunos casos, impedir ataques por reutilización de estado. Si el IV o nonce se maneja mal, el modo puede perder gran parte de su seguridad.
ECB es el modo más simple. Cada bloque del mensaje se cifra de forma independiente con la misma clave. No hay encadenamiento entre bloques ni dependencia de un IV.
Su simplicidad puede hacer que parezca atractivo, pero es precisamente esa independencia la que lo vuelve peligroso. Si dos bloques de texto plano son iguales, producirán exactamente el mismo bloque cifrado. Esto filtra patrones visibles.
ECB no oculta la estructura repetitiva del mensaje. En datos con patrones visuales, como imágenes o ciertos formatos de archivo, la forma general puede seguir siendo reconocible incluso después del cifrado. El atacante puede no leer el contenido completo, pero sí inferir regularidades, repeticiones y disposición estructural.
El problema no es teórico ni menor: ECB rompe una expectativa central del cifrado moderno, que es evitar que bloques iguales revelen equivalencia visible bajo la misma clave.
Por eso ECB se considera inadecuado para casi cualquier uso serio sobre datos estructurados.
CBC mejora sobre ECB encadenando cada bloque con el bloque cifrado anterior. Antes de cifrar un bloque de texto plano, se combina con el resultado del bloque previo. El primer bloque se combina con un IV.
Esto hace que dos bloques iguales no necesariamente produzcan la misma salida, porque su contexto depende del encadenamiento anterior. De este modo se reduce de manera importante la filtración de patrones.
CBC fue muy usado durante años porque ofrece una mejora sustancial frente a ECB y es conceptualmente razonable. Sin embargo, tiene características prácticas que deben entenderse bien:
El principal error conceptual es pensar que CBC por sí solo resuelve todo. No lo hace. Sigue siendo un modo de confidencialidad, no de autenticación. También puede quedar expuesto a ataques si se combina con padding sin validaciones correctas o si se procesa de forma insegura en protocolos complejos.
Además, reutilizar IV o tratarlos de forma predecible puede debilitar la seguridad. CBC requiere disciplina operativa, no solo una implementación básica.
CFB transforma al cifrado por bloques en una especie de modo orientado a flujo. En vez de cifrar directamente el bloque de texto plano, cifra un estado interno y usa la salida para combinarla con el mensaje.
Esto permite procesar datos de forma más flexible y, en algunas variantes, incluso manejar unidades menores que el tamaño del bloque completo. CFB fue útil en escenarios de transmisión secuencial, aunque hoy suele aparecer menos que otros modos modernos.
En CFB, un error en un segmento cifrado afecta el descifrado inmediato y también puede impactar parte de la secuencia posterior, según la variante usada. Esto puede ser útil o problemático dependiendo del contexto, pero siempre debe ser conocido por quien diseña el sistema.
OFB también convierte el cifrado por bloques en un generador de flujo, pero de un modo diferente. En lugar de realimentar el texto cifrado, realimenta la salida interna del algoritmo. El resultado es una secuencia pseudoaleatoria independiente del mensaje, que luego se combina con el texto plano.
Una ventaja es que los errores de transmisión no se propagan en cadena como en otros modos. Sin embargo, esto no lo vuelve automáticamente superior: reutilizar el mismo estado inicial con la misma clave puede resultar muy peligroso.
CTR es uno de los modos más importantes y prácticos en la actualidad. En lugar de encadenar bloques entre sí, cifra valores derivados de un contador y usa esas salidas como flujo para combinar con el texto plano.
Eso tiene ventajas muy relevantes:
CTR es potente, pero también exige una regla absoluta: no reutilizar el mismo nonce y contador inicial con la misma clave. Si eso ocurre, se reutiliza el mismo flujo pseudoaleatorio y pueden aparecer relaciones peligrosas entre mensajes cifrados distintos.
Este es uno de los casos más claros donde un modo moderno y eficiente puede volverse inseguro por un error operativo aparentemente pequeño.
| Modo | Ventaja principal | Debilidad principal | Situación general |
|---|---|---|---|
| ECB | Muy simple | Filtra patrones | No recomendado |
| CBC | Oculta repeticiones mejor que ECB | Requiere cuidado con IV y padding | Útil pero desplazado por opciones más modernas |
| CFB | Comportamiento similar a flujo | Menor simplicidad operativa que CTR | Uso más específico |
| OFB | No propaga errores del mismo modo | Reutilizar estado inicial es grave | Menos frecuente hoy |
| CTR | Rápido, paralelizable y flexible | Nonce repetido rompe seguridad | Muy usado y moderno |
Algunos modos, especialmente cuando trabajan bloque a bloque de forma estricta, necesitan padding para completar el último bloque si el mensaje no tiene longitud múltiplo del tamaño de bloque. Ese relleno debe ser definido y validado correctamente.
Los errores en el manejo del padding no son detalles menores. En ciertos contextos pueden abrir la puerta a ataques muy serios, como los ataques de tipo padding oracle.
Los distintos modos difieren en cómo reacciona el sistema ante errores o alteraciones en bloques cifrados:
Este comportamiento importa tanto para confiabilidad como para seguridad, porque define qué puede lograr un atacante al modificar datos cifrados.
Todos los modos clásicos vistos hasta aquí se centran principalmente en confidencialidad. Ninguno garantiza por sí solo que el mensaje no haya sido modificado maliciosamente. Un sistema puede cifrar muy bien y aun así ser vulnerable a manipulación activa.
Por eso la práctica moderna favorece el cifrado autenticado, donde confidencialidad e integridad se tratan juntas. Esto lo veremos más adelante al estudiar MAC, HMAC y aplicaciones reales de protocolos seguros.
La respuesta depende del contexto, pero la tendencia moderna es evitar ECB y preferir modos más robustos y compatibles con autenticación. CTR es muy valioso por rendimiento y flexibilidad, siempre que el manejo de nonce sea impecable. CBC aún aparece en sistemas heredados, pero exige más cuidado operativo.
En muchos sistemas actuales, directamente se prefiere usar modos autenticados como GCM o ChaCha20-Poly1305 en lugar de separar manualmente cifrado y verificación de integridad.
Los modos de operación son una parte esencial de la criptografía aplicada. No son un detalle secundario del algoritmo, sino el mecanismo que determina cómo se comporta el cifrado sobre mensajes reales y qué riesgos aparecen en la práctica.
En el próximo tema estudiaremos los cifrados de flujo y veremos en qué se diferencian conceptualmente de los cifrados por bloques y cuándo resultan más apropiados.