En criptografía, un modo de operación es un algoritmo que utiliza un cifrador por bloques para proveer seguridad a la información, como confidencialidad y autenticidad.
El IV no tiene por qué repetirse y para algunos modos es aleatorio.
El vector de inicialización se utiliza para asegurar que se generen textos cifrados distintos, aun cuando sea el mismo texto el que se encripte varias veces y con la misma clave.
Los primeros modos descritos, como ECB, CBC, OFB y CFB, aseguraban la confidencialidad del mensaje, pero no su integridad.
En los modos CBC y CFB, volver a usar el IV permite conocer la información contenida en el primer bloque del texto claro, y también prefijos comunes compartidos por dos mensajes.
Para los modos OFB y CTR, la reutilización del vector de inicialización pone en riesgo la seguridad, dado que ambos crean un flujo de bits al que se le aplica una función XOR con el texto claro, que es totalmente dependiente del IV y de la clave ocupada.
Si un atacante logra conocer el IV (o el bloque de texto cifrado previo) antes de obtener el próximo texto claro, puede confirmar sus suposiciones sobre algún texto simple o bloque que fue encriptado anteriormente con la misma clave (técnica conocida como TLS CBC IV attack Archivado el 30 de junio de 2012 en Wayback Machine.).
El más simple consiste en agregar null bytes al texto claro hasta que la longitud sea múltiplo del tamaño del bloque definido.
Algo más complejo presenta el método DES que añade un bit en estado 1 seguido de null bytes para completar el tamaño de bloque.
Otras técnicas más sofisticadas son los esquemas CBC-specific como ciphertext stealing o Residual block termination, que no genera texto cifrado adicional, a expensas de cierta complejidad adicional en sus procesos.
Scheineier y Ferguson sugieren dos posibilidades para realizar el rellenado, ambas simples: anexar un byte con valor 128 (hex 80) seguido por tantos ceros como sean necesarios para completar el último bloque, o rellenar el último bloque con n bytes, todos con valor n. Modos como CFB, OFB y CTR no requieren métodos para manejar los mensajes que no tienen longitudes que sea múltiplos del tamaño de bloque, dado que los modos de operación trabajan realizando una operación XOR entre el texto plano con la salida creada por el cifrador por bloques.
Como apunte, no usa el vector de inicialización (IV).
Un claro ejemplo de cómo el método ECB puede revelar patrones del texto.
Muchos métodos no seguros de cifrado producen, a priori, un resultado aparentemente aleatorio.
Por ejemplo, el videojuego en línea Phantasy Star Online: Blue Burst usa Blowfish en modo ECB.
En el modo CBC (cipher-block chaining), antes de ser cifrado, a cada bloque de texto se le aplica una operación XOR con el bloque previo ya cifrado.
Además, para hacer cada mensaje único se debe usar un vector de inicialización en el primer bloque.
Su principal contrapartida es que es secuencial y no puede funcionar en paralelo.
Las rutinas de cifrado y descifrado se definen como sigue:
Sin embargo, ya que el texto claro o el texto cifrado sólo son usados en el XOR final, las operaciones del cifrador por bloques pueden realizarse por adelantado, para que la etapa final se lleve a cabo en paralelo siempre que el texto claro o cifrado se encuentre disponible.
El modo de operación OFB requiere un IV distinto para cada mensaje encriptado con una misma clave.