AES-GCM-SIV: El nuevo modo de operación para AES con AEAD que usaremos todos muy pronto

Escrito por Sergio De Luz

AES (Advanced Encryption Standard) es el cifrado simétrico más utilizado para proteger nuestras comunicaciones. Es hoy en día un estándar en la industria, ampliamente utilizado en redes inalámbricas Wi-Fi, en los protocolos de redes privadas virtuales (VPN), y por supuesto, en el protocolo HTTPS que nos brinda confidencialidad punto a punto mientras navegamos. AES tiene diferentes modos de operación, y os os vamos a enseñar qué es AES-GCM-SIV, un modo de operación que próximamente se empezará a usar masivamente.

Normalmente los cifrados simétricos solo proporcionan confidencialidad, sin embargo, no proporcionan integridad (comprueban que los datos transferidos no han sido modificados, es decir, autenticidad a los datos). Por este motivo, es muy normal hacer uso de AES como cifrado para el canal de datos, y usamos algún tipo de función hash para comprobar la integridad de los datos transferidos.

Un aspecto muy importante de AES, es que actualmente los microprocesadores como Intel o AMD, incorporan el juego de instrucciones AES-NI para realizar el cifrado y descifrado con aceleración por hardware. Esto significa que, aunque utilicemos cifrado con AES, la velocidad de lectura/escritura si hacemos uso de FTPES u otros protocolos que usen AES será muy similar al de los datos sin cifrar, y no solo eso, sino que el consumo de recursos de CPU no se disparará como ocurriría con CPU sin aceleración por hardware. Es decir, estaremos acelerando el cifrado y descifrado de los datos.

Gracias a modos de operación de AES como el GCM (Galois/Counter Mode), somos capaces de dotar a AES tanto de confidencialidad, como de autenticidad de los datos (integridad) en la misma operación, sin hacer uso de algoritmos adicionales. Este modo de operación es AEAD (Authenticated Encryption with Associated Data), y es actualmente uno de los más utilizados en las comunicaciones, dejando de lado a los populares modos de operación CBC, OFB entre otros.

Por ejemplo, si accedemos a la web de RedesZone.net y nuestro navegador y sistema operativo es compatible con AES-GCM, nos lo indicará perfectamente en la sección «Detalles Técnicos». Nuestra configuración de HTTPS da prioridad al uso de AES-GCM en su versión de 256 bits sobre otros tipos de cifrado simétricos disponibles, de hecho, tal y como podéis ver, estamos haciendo uso de TLS 1.3.

Aunque si una web utiliza TLS 1.2, también tendremos disponible la posibilidad de usar AES-GCM en sus versiones de 256 bits y 128 bits sin problemas.

Otro protocolo muy conocido para redes privadas virtuales es OpenVPN, el cual añadió la característica de AEAD para el canal de datos en su versión OpenVPN 2.4. Si tenéis un servidor OpenVPN, al ejecutar el comando «openvpn –show-ciphers» podréis ver si es compatible con este modo de operación:

Una vez que ya sabemos qué es AES-GCM y dónde lo podemos usar, vamos a explicar que es el nuevo modo de operación AES-GCM-SIV.

¿Qué es AES-GCM-SIV?

AES-GCM se ha hecho muy popular debido a su buen rendimiento, sin embargo, algunos AEAD (incluyendo AES-GCM), sufren un fallo de seguridad catastrófico que ponen en riesgo la confidencialidad de los datos y/o la integridad de los mensajes, cuando dos mensajes distintos son cifrados con la misma clave y «nonce». Un detalle importante es que los requisitos de AEAD, indican que cada pareja de clave/nonce solo debe ser utilizado una vez, pero en la práctica puede no llegar a cumplirse, y es cuando ocurren los problemas.

Los AEAD con «nonce misuse-resistant» como el AES-GCM-SIV, no sufren de este problema, y puede utilizarse la misma pareja de clave/nonce para cifrar dos mensajes. Lo único que podrá «revelar» este modo de operación, es si los dos mensajes cifrados son iguales o no, pero no se pone en riesgo la comunicación cifrada. Actualmente los dos AEAD disponibles son AES_128_GCM_SIV y AES_256_GCM_SIV, y además, están diseñados para soportar sin problemas la aceleración por hardware de los procesadores que hacen uso de AES-NI, por tanto, tendremos también esta característica tan importante para proporcionar un gran rendimiento.

Aunque el descifrado de los datos es casi igual de rápido que AES-GCM, el cifrado de los datos sí es más lento que AES-GCM. Esto es debido a que se requieren dos «pasadas» para proporcionar «nonce misuse-resistant«, no obstante, la velocidad estará entorno a dos tercios de la velocidad de AES-GCM. La IETF recomienda utilizar AEAD en cualquier situación, pero si necesitamos de esta característica ya que repetimos el «nonce», deberíamos utilizar este AES-GCM-SIV que ya está probado como estándar.

Os recomendamos leer el RFC8452 donde encontraréis todos los detalles técnicos sobre AES-GCM-SIV, el nuevo modo de operación AEAD basado en AES-GCM pero con mejor seguridad.