Un esquema de Cifrado Autentificado es un mecanismo de clave simétrica mediante el cual un mensaje se transforma en un texto cifrado con el objetivo de proteger la integridad y al mismo tiempo la autenticidad. Consiste en un par de funciones deterministas:
- El cifrado. Toma la clave K, “nonce” N, mensaje Tc y encabezado o datos asociados A, para devolver un código C ← cifra (K, N, Tc, A). El requisito formalizado es proporcionar privacidad y autenticidad de Tc y autenticidad de A, siempre que no se reutilice N.
- El descifrado. Toma como entrada de nuevo la clave, el “nonce” y los datos asociados, además del código, para devolver un texto en claro, mensaje supuesto Tc ← descifra (K, N, A, C) o un mensaje de error ⊥∈ Tc.
Los cifrados con autentificación se desarrollaron con la intención de trabajar con un solo pase sobre el texto en claro Tc (cifrado y autentificación al mismo tiempo), pero los primeros sistemas fueron atacados y rotos al poco tiempo, este inconveniente hizo proliferar los de dos pases (primero cifrado y posteriormente autentificación). De todas formas, lo que sí está claro, es usar una función de autentificación con clave K1 (MAC) junto con un esquema de cifrado seguro con una clave K2, ambas independientes, pero no está tanto claro cuál es el orden de aplicación de los modos.
La mayoría de las proposiciones prácticas del Cifrado Autentificado están del lado del cifrado en bloque autentificado. Estos esquemas fueron tan rápidos como el cifrado convencional (sin autentificación), dos veces más rápido que el enfoque genérico con expansión mínima, es decir, el tamaño de un texto cifrado es del mismo tamaño que el del texto plano más ? bits de etiqueta de autentificación, donde ?, es independiente del tamaño de texto plano y de una constante. También se han incorporado otros basados en un cifrado de flujo autentificado.
Métodos básicos de cifrado con autentificación.
Los tres métodos básicos para crear esquemas de cifrado con autentificación expuestos por Bellare y Namprempre en el 2.000 son:
E&M: Cifra-después-Autentifica. Primero ciframos Tc con la clave K2 para generar el cifrado C y luego calculamos el autentificado del texto claro σ ← MACK1(Tc) y se agrega al cifrado, utilizando el vector de Inicialización (IV) y el identificador del método de cifrado en los datos de MAC. SSH utiliza este modo.
MtE: Autentifica-después-Cifra. Primero se autentifica el Tc con la clave K1 para producir la etiqueta σ y luego ciframos el par resultante (Tc, σ) bajo la clave K2. SSL y TLS utilizan este modo.
EtM: Cifra-entonces-Autentifica. Primero ciframos Tc con la clave K2 para generar el texto cifrado C y luego calculamos el autentificado del texto cifrado σ ← MACK1 (C) para obtener el par (C, σ) que se envía al receptor. En el lado receptor, primero se verifica la etiqueta (σ) de autenticación del texto cifrado y luego se realiza el descifrado. Este es el método de máxima seguridad para AE. Indicar que SSH, TLS, DTLS e IPSec utilizan este modo.
Esquemas AE-AEAD-DAEAD
Los esquemas AE-AEAD-DAEAD manejan tanto el cifrado y la autenticación de una sola vez, además tienen la posibilidad de utilizar una sola clave y de ser paralelizados.
AE
La noción de un esquema de cifrado autentificado AE (Authenticated Encryption) fue formalizada por J. Katz y M. Yung en el 2.000 y también por M. Bellare, C. Namprempre y H. Krawczyk, en lo que se denomina la construcción por la composición genérica (GC). Su objetivo era combinar las primitivas existentes, una para el cifrado y la otra para la autenticación. Algunos de sus ejemplos son: GCM, CCM o EAX.
La proposición de Bellare y Nampermpre no fue una composición genérica muy eficiente, el tiempo que llevó cifrar y autentificar hizo que este proceso fuera dos veces más lento que el cifrado o la autentificación. Katz y Yung presentaron el modo de cifrado de bloque RPC de paso único para el cifrado autenticado. RPC podría ejecutarse casi el doble de rápido que el esquema de autenticación genérico, pero depende del tamaño de la etiqueta de autentificación.
AEAD
El esquema AEAD (Authenticated Encryption with Associated Data) fue formalizado por P. Rogaway en el 2.002. En el cifrado autenticado con datos asociados, los datos asociados (A) son la entrada que se autentifica pero no se cifra. El cifrado basado en “nonce” se introdujo en 2.004, donde un “nonce” N, es la entrada del esquema que se supone que se utilizará solo una vez, lo que significa que no se repite. La implementación de N no es fácil en la práctica y una repetición de N en AEAD puede ser desastrosa. El ejemplo más importante es: OCB.
Qué son los Datos asociados. En muchas ocasiones, además de cifrar y autentificar el mensaje de Texto en claro Tc, necesitamos incluir datos auxiliares A, como una cabecera del mensaje que debe ser autentificada, pero que no cifrada, ¿por qué?: El mensaje se enviará a través de una red convirtiéndose en un paquete y el encabezado debe estar sin cifrar debido a que los encaminadores (Routers) deben leer estos encabezados para saber dónde enviarlos.
DAEAD
El DAEAD (Deterministic authenticated encryption with associated data) aborda el problema de AEAD, respecto de la repetición del “nonce” N, surge del cifrado autenticado determinista (DAE, Deterministic Authenticated Encryption) propuesto por P. Rogaway y T. Shrimpton en 2.006. Las construcciones AE-AEAD utilizan un “nonce” N, que es una cifra distinta para cada mensaje, si se reutiliza se pierde la seguridad, DAEAD elimina el “nonce”. El inconveniente de esta opción radica en el cálculo necesario que se realiza fuera del núcleo del proceso.
Comparativa de varios modos de los esquemas AE-AEAD-DAEAD |
||||||
Modo | Tipo | Pases | Seguridad demostrable | Datos asociados | Paralelizable | Libre disposición |
CCM | Bloque | 2 | Si | Si | Si | |
CWC | Bloque | 2 | Si | Si | Si | Si |
EAX | Bloque | 2 | Si | Si | Si | |
Helix | Flujo | 1 | Si | Si | ||
IAP-CFB | Bloque | 1 | Si | Si | ||
IAPM | Bloque | 1 | Si | Si | ||
OCB | Bloque | 1 | Si | Si | ||
SOBER-128 | Flujo | 1 | Si | Si | ||
XECB | Bloque | 1 | Si | Si |
Exigencias de seguridad del cifrado autentificado
- IND-CPA (Indistinguibilidad bajo ataque de texto plano elegido). Un atacante de texto simple elegido no puede aprender nada sobre los textos cifrados excepto sus longitudes.
- INT-CTXT (Integridad del cifrado). Un atacante con acceso a un “oráculo” de cifrado no puede falsificar ningún nuevo texto cifrado
- INT-PTXT (Integridad de texto claro). Se requiere que sea computacionalmente imposible producir un texto cifrado que descifre un mensaje que el remitente nunca haya cifrado.