CIFRADO SIMÉTRICO AES | Uso del modo CBC

Explica: Luis Gutiérrez, Expert Tech Lead de Zenta

Zenta Group
2 min readJan 29, 2024

AES es un algoritmo de cifrado simétrico, es decir, que la clave que se utiliza para cifrar es la misma que se usa para descifrar los datos.

Funciona cifrando bloques de idéntico tamaño (128 bits), es el algoritmo de cifrado más utilizado actualmente por su seguridad, velocidad y tamaño del paquete resultante. Puedes usar AES con claves de 128, 192 y 256 bits, a mayor tamaño de la clave más seguro será.

Adicionalmente, AES permite diferentes modos de cifrado, en este artículo, abordaremos la importancia de utilizar el modo CBC, recomendado cuando se requiera cifrar mensajes o datos en reposo.

Cada vez que cifremos la cadena “Luis Francisco” con la clave de 256 bits, obtendremos la siguiente salida:

BJrpjj4vWEMLhINzCERK6Q==

Aunque estamos utilizando el tamaño de clave más larga, AES permite adicionar un conjunto de bytes extras para que el cifrado sea más complejo y su resultado sea diferente, aunque encriptemos el mensaje con la misma contraseña.

Esto es el modo CBC.

Los bytes extras que debemos agregar al proceso se llaman SALT y Vector de Inicialización IV.

La SALT es un conjunto de 16 bytes DE UN SOLO USO, estos se combinan con la contraseña proporcionada para generar la clave de cifrado y conseguir una salida diferente.

Adicionalmente, el modo CBC, exige un IV de 16 bytes, nuevamente DE UN SOLO USO, que se utiliza para realizar una operación XOR sobre el primer bloque de cifrado, los siguientes bloques usarán como IV el bloque cifrado anterior.

La SALT y el IV, no necesariamente deben ser privados y pueden distribuirse con la cadena de cifrado resultante.

Ampliando el ejemplo anterior, encriptando el mismo mensaje con la misma clave, agregando SALT y un vector de inicialización IV de un solo uso, en cada ejecución, obtendremos los siguientes resultados:

TVbgAV4XqW+rMAcY5GDL/g==

E/jJ4I3dZhwwHZ+VzJ+xrg==

IJSQst69VLRU9SWOry6qHw==

DljP2xaKYA5iAKV9a+XSdg==

Por supuesto, para obtener el mensaje en claro es necesario proporcionar la clave la SALT y el IV utilizado en cada iteración.

Flujo de la solución:

El código fuente está disponible aquí: GitHub

¿Te gustó esta información? No dudes en dejar tu like, comentar y compartirlo para que llegue a más profesionales.

--

--