Modo de cifrado de bloque AEAD

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 27 de mayo de 2020; las comprobaciones requieren 2 ediciones .

Los modos de cifrado de bloques AEAD ( eng.  Cifrado autenticado con datos asociados , " cifrado autenticado con datos adjuntos") es una clase de modos de cifrado de bloques en los que parte del mensaje se cifra, parte permanece abierta y se autentica todo el mensaje . La idea de tal clase de cifrado fue propuesta por primera vez por Charanjit Jutla en 2000 [1] . Actualmente se proponen varios modos de cifrado AEAD: modo OCB (desde OCB2), modo CCM , modo EAX , modo CWC y modo GCM . Este último ha sido un estándar NIST desde 2007 [2] .

Solución de problemas

Existen algoritmos que permiten la autenticación y el cifrado - cifrado autenticado (en adelante, AE), sin embargo, no prevén la capacidad de adjuntar texto sin formato (datos asociados), lo que ocurre, en particular, si es necesario adjuntar un dirección IP a un mensaje . En general, a menudo se requieren datos de texto sin formato para transmitir encabezados, direcciones, puertos, versiones de protocolo y otros datos necesarios para decidir cómo se debe procesar o enviar el texto cifrado. A menudo, estos datos deben autenticarse mientras permanecen públicos para que los dispositivos de procesamiento manejen adecuadamente estos mensajes. Existe el deseo de modificar el esquema AE agregándole una inserción de imitación (MAC) para la autenticación de datos abiertos y obtener un esquema AEAD "a bajo costo". Sin embargo, las soluciones "ingenuas" obvias, cuyos ejemplos consideraremos a continuación, resultan ser ineficientes.

Supongamos, por ejemplo, que necesita enviar un mensaje M , un encabezado abierto H , se selecciona algún modo de cifrado AE E y una función MAC. Entonces, si se transmiten E(M) y H , entonces H no será autenticado. Si transmitimos E(M||H) y H , la longitud del mensaje transmitido será mayor que la del original (ya que se realizará la operación de encriptación H , que no es necesaria en esta tarea ), lo mismo puede decirse para el caso de transmisión H , E(M) , MAC( H||E(M)) (porque E(M) ya está autenticado y el uso de MAC requiere muchos recursos).

Es importante destacar que tanto los esquemas AE como los esquemas AEAD requieren el uso de un nonce . Esto es necesario para garantizar la seguridad semántica (la imposibilidad de que un atacante, al utilizar repetidamente un esquema bajo la misma clave, obtenga relaciones entre segmentos de mensajes cifrados), así como para protegerse contra un ataque de repetición , en el que un atacante, disfrazado como usuario legítimo, reenvía un mensaje. Es responsabilidad del remitente generar un nonce y usarlo solo una vez. Para hacer esto, puede usar, por ejemplo, un contador.

Métodos de implementación

Hay dos formas fundamentalmente diferentes de implementar el modo de cifrado AEAD. El primero implica el uso de cifrado de bloques y suplantación de identidad. En este caso, el diseñador del esquema AEAD puede elegir cualquier cifrado de bloque y la función para obtener la inserción imitada, al mismo tiempo que usa un nonce. La segunda forma es algún tipo de transformación del esquema AE. Los requisitos para el último método siguen siendo los mismos: el circuito no debe ralentizarse significativamente y no debe introducir nuevas vulnerabilidades . La seguridad y confiabilidad de estos enfoques se demostró en el artículo de Charanjit S. Jutla "Modos de cifrado con integridad de mensajes casi gratuitos", siempre que el nonce no se reutilice y la función hash H sea criptográficamente segura.

Métodos para implementar el modo AEAD usando un cifrado de bloque e inserción de suplantación

Hay dos formas de obtener el modo AEAD utilizando un cifrado de bloque e imitar la inserción: primero cifrando el mensaje, luego autenticándolo (encrypt-then-mac), o en orden inverso (mac-then-encrypt).

Encrypt-then-mac

En esta variante, el mensaje M se encripta primero usando el nonce N, luego el encabezado H y el mensaje encriptado son autenticados por el MAC con el mismo nonce.

Mac-entonces-cifrar

Como arriba, pero en orden inverso: primero, se crea una falsificación de MAC a partir del encabezado H, el nonce N y el texto sin formato M, y luego el mensaje M se cifra con la falsificación recibida usando el mismo nonce N.

Métodos para implementar el modo AEAD con esquema AE

Como se muestra arriba, no es posible adjuntar eficientemente texto sin formato autenticado a un mensaje creado con un esquema AE utilizando métodos primitivos. Sin embargo, se han propuesto los siguientes dos métodos [1] .

No robar

Sea un esquema AE que use un nonce de n bits, y una aplicación que use este esquema solo necesita usar n2 bits (n2 < n). Entonces los h = n − n2 bits libres se pueden usar para almacenar datos abiertos. Este esquema tiene un límite en el tamaño de los datos abiertos, pero a menudo esto es suficiente. Deje que el algoritmo tenga un nonce de 128 bits y la aplicación use solo 16, luego se dejan 112 bits para datos abiertos, que a menudo es suficiente (por ejemplo, una dirección en el protocolo IPv4 requiere 32 bits).

Traducción de texto cifrado

Este método para convertir un esquema AE en un esquema AEAD se basa en la operación de suma lógica (XOR) , mientras que si una operación se realiza en cadenas de diferentes longitudes, la más corta se rellena con ceros no significativos, por ejemplo : .

Este método incluye las siguientes operaciones: se utiliza un esquema AE para encriptar el mensaje con la clave K y obtener un texto cifrado intermedio CT, luego se aplica una función hash para obtener el desplazamiento Δ y, finalmente, se obtiene el texto cifrado final aplicando el operación de suma lógica Δ a los últimos bits CT. Tenga en cuenta que si el encabezado es una cadena vacía, el esquema AEAD resultante se transfiere al esquema de cifrado AE original. Si el encabezado permanece sin cambios durante la sesión, entonces el cambio Δ se puede calcular por adelantado, lo que tiene un efecto positivo en el tiempo de cifrado: la operación de suma lógica restante se implementa fácilmente (incluso en el hardware).

Definamos el esquema AEAD resultante más estrictamente de la siguiente manera:

Es decir, suponiendo que , calculamos Δ con una longitud de τ bits, encriptamos M y realizamos la operación de suma lógica de los últimos τ bits con Δ.

Este método tiene las siguientes ventajas:

Sin embargo, la desventaja del método es la necesidad de usar dos claves K y K'.

Algoritmos AEAD

Por ejemplo, describimos algunos algoritmos AEAD. Dos de ellos están basados ​​en AES GCM, dos de ellos están basados ​​en AES CCM. Uno de los algoritmos de cada par usa una clave de 128 bits, el otro usa una de 256 bits.

AEAD AES 128 GCM

Este algoritmo utiliza AES-128 como cifrado de bloque, utilizando la clave, el nonce, el mensaje y el encabezado como entrada. La longitud del encabezado es de 16 bytes. El texto cifrado se genera agregando una etiqueta de autenticación al texto cifrado intermedio recibido como salida del cifrado GCM. Los requisitos de tamaño de entrada y salida son los siguientes:

Por lo tanto, el texto cifrado es 16 bytes más largo que el mensaje abierto original.

AEAD AES 256 GCM

El algoritmo es completamente similar al anterior, excepto que utiliza una clave de 32 bytes y AES-256 GCM.

AEAD AES 128 CCM

Similar al anterior, excepto por usar el modo CCM en lugar de GCM, mientras que:

Al igual que con GCM, el texto cifrado es 16 bytes más largo que el mensaje original.

AEAD AES 256 CCM

El algoritmo es completamente similar al anterior, excepto que utiliza una clave de 32 bytes y AES-256 GCM.

Notas

  1. 1 2 Jutla, Charanjit S. (2000-08-01) "Modos de cifrado con integridad de mensajes casi gratuitos" Archivado el 19 de agosto de 2012 en Wayback Machine . Archivo ePrint de criptología: Informe 2000/039. IACR . Consultado el 16 de marzo de 2013.
  2. Publicación especial de NIST 800-38D Archivado el 5 de agosto de 2011 en Wayback Machine , noviembre de 2007, Recomendación para los modos de operación de BlockCipher: Modo Galois/Contador (GCM) y GMAC.

Enlaces