- Cifrado por bloques
-
En Criptografía, una unidad de cifrado por bloques (block cipher en inglés) es una unidad de cifrado de clave simétrica que opera en grupos de bits de longitud fija, llamados bloques, aplicándoles una transformación invariante. Cuando realiza cifrado, una unidad de cifrado por bloques toma un bloque de texto plano o claro como entrada y produce un bloque de igual tamaño de texto cifrado. La transformación exacta es controlada utilizando una segunda entrada — la clave secreta. El descifrado es similar: se ingresan bloques de texto cifrado y se producen bloques de texto plano.
Para cifrar mensajes más largos que el tamaño del bloque, se utiliza un modo de operación.
Las unidades de cifrado por bloques se diferencian de las unidades de flujo de cifrado en que un flujo de cifrado trabaja sobre dígitos individuales, uno después del otro, y la transformación varía durante el proceso de cifrado. La diferencia entre los dos tipos de unidades es algo difusa, dado que una unidad de cifrado por bloques puede ser operada en un modo que permite utilizarla como una unidad de flujo de cifrado, donde en lugar de dígitos se opera con bloques.
El Data Encryption Standard (DES) fue un diseño de unidad de cifrado por bloques de gran influencia. Fue desarrollado y publicado por IBM y publicado como estándar en 1977. El Advanced Encryption Standard (AES) es un sucesor de DES, adoptado en 2001.
Contenido
Modos de operación
Existen diferentes modos de operación que garantizan diversos grados de confidencialidad e integridad en los datos manejados.
Electronic Code-Block (ECB)
El más sencillo es el modo electronic codebook (ECB), en el cual los mensajes se dividen en bloques y cada uno de ellos es cifrado por separado utilizando la misma clave K. La desventaja de este método es que a bloques de texto plano o claro idénticos les corresponden bloques idénticos de texto cifrado, de manera que se pueden reconocer estos patrones como guía para descubrir el texto en claro a partir del texto cifrado. De ahí que no sea recomendable para protocolos cifrados.
Cipher-block chaining (CBC)
En el modo cipher-block chaining (CBC), a cada bloque de texto plano se le aplica la operación XOR con el bloque cifrado anterior antes de ser cifrado. De esta forma, cada bloque de texto cifrado depende de todo el texto en claro procesado hasta este punto. Para hacer cada mensaje único se utiliza asimismo un vector de inicialización.
Cipher feedback (CFB) y output feedback (OFB)
Los modos cipher feedback (CFB) y output feedback (OFB) hacen que el cifrado en bloque opere como una unidad de flujo de cifrado: se generan bloques de flujo de claves, que son operados con XOR y el texto en claro para obtener el texto cifrado. Al igual que con otras unidades de flujo de cifrado, en OFB al intercambiar un bit en el texto cifrado produce texto cifrado con un bit intercambiado en el texto plano en la misma ubicación, en CFB un bit erróneo en el texto cifrado genera 1+64/m bloques de texto claro incorrectos (siendo m la longitud del flujo en el que se divide el bloque).
Counter (CTR)
Al igual que OFB, el modo contador convierte una unidad de cifrado por bloques en una unidad de flujo de cifrado. Genera el siguiente bloque en el flujo de claves cifrando valores sucesivos de un contador. El contador puede ser cualquier función sencilla que produzca una secuencia de números donde los resultados se repiten con muy baja frecuencia. Si bien la operación más usada es un contador, el modo CTR tiene características similares al OFB, pero permite también usar una propiedad de acceso aleatorio para el descifrado.
Enlaces externos
Wikimedia foundation. 2010.