Saltar al contenido

El cifrado en bloque, ECB Y CBC

Compartir en:
Cifrado de bloques
Cifrado de bloques

En este post vamos a hablar de uno de los básicos de la criptografía de clave simétrica, el cifrado en bloques.

Este tipo de técnicas es básico hoy en día en el mundo de las comunicaciones digitales, ya que se adapta muy bien a la codificación de datos enviados por redes de telecomunicaciones, esto hace que se utilice en técnicas modernas como base.

Todas las técnicas de este tipo transforman una cadena de bits de longitud fija en una unidad de igual longitud, pero inteligible para un actor no autorizado.

Es decir, recibimos un bloque bl de un número de bits n con un mensaje m y devolvemos otro bloque c en este caso cifrado, con el mismo número de bits.

La función de cifrado recibe como mínimo una clave K . Esta función de cifrado, debe disponer también de una función de descifrado válida, por tanto, debemos poder mediante K y c obtener m.

c = Ek(bl) bl = Dk(c)

El modo en que los bloques de bits son separados para ser cifrados recibe el nombre de modo de operación y en este post trataremos los dos más básicos Electronic Code-Book o ECB y Cipher-block chaining o CBC.

Cifrado de bloques

Prácticamente en todos los cifrados debemos utilizar estos modos de operación, ya que los mensajes suelen tener longitudes de bits bastante grandes.

Modo de operación ECB

El primer modo de operación y el más básico es el modo electronic code block (ECB), que básicamente consiste en pasar el algoritmo de cifrado a cada bloque consiguiendo una cadena de bloques cifrados donde cada bloque puede tratarse individualmente.

Modo de operación ECB

Este modo de operación es muy simple, lo cual le da ciertas ventajas y desventajas, a continuación os comento las principales.

Desventajas:

  • Los bloques cifrados son idénticos, es decir, si un bloque se repite mucho, el cifrado será igual, lo cual puede dar lugar a no conseguir ocultar cierta información, por ejemplo, si ciframos una imagen.
  • El conocer estos patrones, además de poder intuir ciertos datos, pude dar la suficiente información para obtener la clave mediante estadística, algo que queremos evitar a toda costa.
  • Al cifrarse de manera independiente, un atacante puede insertar o quitar o reordenar bloques sin que el cifrado falle.

Ventajas:

  • Los errores no se propagan hacia los demás bloques
  • Se puede cifrar/descifrar de manera paralela (Multithreading)
  • Se puede acceder a la información por separado (sin descifrar todos los bloques)

A continuación, os pongo la clásica imagen para representar el cifrado de una imagen mediante este modo, como podemos observar el cifrado deja mucho que desear, ya que un pixel blanco se cifra siempre como un pixel blanco, esto deja patrones muy claros:

Cifrado ECB – Fuente www.wikipedia.es

Modo de operación CBC

El modo de operación de block chaining (CBC) sin embargo, introduce dos modificaciones importantes con respecto a ECB, para empezar antes del cifrado del primer bloque se introduce un vector de inicialización (que debería tener un componente de semialeatoriedad no predecible) que se une al bloque a cifrar mediante una puerta lógica XOR, después se cifra el bloque con la clave k, y aquí viene el segundo cambio, el resultado de este cifrado, se introduce en el vector de inicialización IV del siguiente bloque en claro.

Esto produce un cifrado encadenado que transforma los bloques en cadenas no predecibles de texto cifrado.

Modo CBC

Vemos en el esquema que ci=Ek(mi XOR ci-1) lo cual aporta más robustez al cifrado a costa de añadir complejidad a la operativa.

El hecho de utilizar el vector inicial es importante para CBC, ya que podemos generar combinaciones diferentes para un mismo bloque a cifrar, es decir, que la parte blanca de la imagen del pingüino (que hemos visto antes) ya no se va a diferencia a menos que conozcamos la clave de descifrado. Este es el resultado:

Cifrado CBC – Fuente www.wikipedia.es

El IV no necesariamente tiene que ser secreto y de hecho muchas veces no lo es, se envía al principio de las cadenas cifradas. Pero el hecho de que podamos cambiarlo infinitas veces hace que el cifrado sea mucho más robusto, además no es necesario cambiar la clave regularmente para despistar a los atacantes, simplemente debemos modificar el IV en cada comunicación.

Vemos no obstante una serie de ventajas en cuanto a seguridad y robustez, pero otras desventajas como la dependencia de bloques o la necesidad de obtener todos los bloques para el descifrado donde un error puede enviar al traste nuestro mensaje. Esto no parece un problema en bloques cortos, pero en grandes volúmenes de datos, el hecho de depender del resultado de otro bloque hace que las transacciones sean mucho más lentas.

Conclusión

Existen otros modos de funcionamiento mas complejos como CFB, OFC y CTR pero para entender el cifrado de bloques, me ha parecido que ECB y CBC son los mas didácticos.

Todo esto es la base de la utilización de los cifrados actuales y más utilizados como AES que es el criptosistema en bloque que más se utiliza hoy.


Juan Ibero

Inmerso en la Evolución Tecnológica. Ingeniero Informático especializado en la gestión segura de entornos TI e industriales, con un profundo énfasis en seguridad, arquitectura y programación. Siempre aprendiendo, siempre explorando.

Compartir en:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *