El modo CCM ( contador con código de autenticación de mensajes de encadenamiento de bloques de cifrado ; contador con CBC-MAC ) es un modo de operación para cifrados de bloques criptográficos . Es un algoritmo de cifrado autenticado diseñado para proporcionar tanto autenticación como confidencialidad . El modo CCM solo se define para cifrados de bloque con una longitud de bloque de 128 bits. [1] [2]
El nonce de CCM debe elegirse cuidadosamente para que nunca se utilice más de una vez para una clave determinada. Esto se debe a que CCM es una derivación del modo CTR y este último es efectivamente un cifrado de flujo . [3]
Cifrado y autenticación
Como sugiere su nombre, el modo CCM combina el conocido CBC-MAC con el conocido modo contador de cifrado. Estas dos primitivas se aplican de una manera "autenticar y luego cifrar", es decir, CBC-MAC se calcula primero en el mensaje para obtener una etiqueta t; A continuación, el mensaje y la etiqueta se cifran mediante el modo contador. La idea principal es que se puede utilizar la misma clave de cifrado para ambos, siempre que los valores de contador utilizados en el cifrado no choquen con el vector de (pre) inicialización utilizado en la autenticación. Existe una prueba de seguridad [4] para esta combinación, basada en la seguridad del cifrado de bloque subyacente. La prueba también se aplica a una generalización de CCM para cualquier tamaño de cifrado de bloque y para cualquier tamaño de función pseudoaleatoria criptográficamente fuerte (ya que tanto en el modo contador como en CBC-MAC, el cifrado de bloque solo se usa en una dirección).
El modo CCM fue diseñado por Russ Housley , Doug Whiting y Niels Ferguson . En el momento en que se desarrolló el modo CCM, RSA Laboratories empleó a Russ Housley .
En el estándar ZigBee se utiliza una variación menor del CCM, llamada CCM * . CCM * incluye todas las funciones de CCM y, además, ofrece capacidades de solo cifrado. [5]
Actuación
CCM requiere dos operaciones de cifrado de cifrado de bloque en cada bloque de un mensaje cifrado y autenticado, y un cifrado en cada bloque de datos autenticados asociados.
Según los puntos de referencia de Crypto ++ , AES CCM requiere 28,6 ciclos por byte en un procesador Intel Core 2 en modo de 32 bits. [6]
Ineficiencias notables:
- CCM no es una AEAD "en línea", ya que la longitud del mensaje (y los datos asociados) debe conocerse de antemano.
- En la construcción de MAC, la longitud de los datos asociados tiene una codificación de longitud variable, que puede ser más corta que el tamaño de la palabra de la máquina. Esto puede causar un rendimiento de MAC pesimista si los datos asociados son largos (lo cual es poco común).
- Los datos asociados se procesan después de los datos del mensaje, por lo que no es posible calcular previamente el estado de los datos asociados estáticos.
Patentes
El catalizador para el desarrollo del modo CCM fue la presentación del modo OCB para su inclusión en el estándar IEEE 802.11i . Se expresó oposición a la inclusión del modo OCB debido a una solicitud de patente pendiente sobre el algoritmo . La inclusión de un algoritmo patentado significó importantes complicaciones de licencia para los implementadores del estándar.
Si bien se cuestionó la inclusión del modo OCB en función de estos problemas de propiedad intelectual , se acordó que la simplificación proporcionada por un sistema de cifrado autenticado era deseable. Por tanto, Housley, et al. desarrolló el modo CCM como una alternativa potencial que no estaba gravada por patentes.
Aunque el modo CCM es menos eficiente que el modo OCB, una solución sin patente era preferible a una complicada por problemas de licencias de patentes. Por lo tanto, el modo CCM pasó a convertirse en un componente obligatorio del estándar IEEE 802.11i, y el modo OCB fue relegado al estado de componente opcional, antes de que finalmente se elimine por completo.
Usar
El modo CCM se utiliza en IEEE 802.11i (como CCMP , un algoritmo de cifrado para WPA2), IPsec , [7] y TLS 1.2, [8] , así como en Bluetooth Low Energy (a partir de Bluetooth 4.0). [9] Está disponible para TLS 1.3, pero no está habilitado de forma predeterminada en OpenSSL . [10]
Ver también
Referencias
- ^ Dworkin, Morris (mayo de 2004). Recomendación para los modos de operación de cifrado en bloque: el modo CCM para autenticación y confidencialidad (PDF) (informe técnico). Publicaciones especiales del NIST. NIST . doi : 10.6028 / NIST.SP.800-38C . 800-38C.
- ^ Whiting, D .; Housley, R .; Ferguson, N. (septiembre de 2003). Contador con CBC-MAC (CCM) . IETF . doi : 10.17487 / RFC3610 . RFC 3610 .
- ^ "rfc4309" . IETF . pag. 3.
AES CCM emplea el modo contador para el cifrado. Al igual que con cualquier cifrado de flujo, la reutilización del mismo valor de IV con la misma clave es catastrófica.
- ^ Jakob Jonsson, Sobre la seguridad de CTR + CBC-MAC
- ^ "Estándar IEEE para redes de área local y metropolitana - Parte 15.4: Redes de área personal inalámbricas de baja velocidad (LR-WPAN)" (PDF) . Estándares IEEE . 2011-09-05. pag. 229 . Consultado el 18 de diciembre de 2015 .
- ^ "Puntos de referencia de Crypto ++ 5.6.0" . Crypto ++ . Consultado el 6 de septiembre de 2015 .
- ^ RFC 4309 Uso del modo CCM del estándar de cifrado avanzado (AES) con carga útil de seguridad encapsulada IPsec (ESP)
- ^ Conjuntos de cifrado AES-CCM RFC 6655 para seguridad de la capa de transporte (TLS)
- ^ "Seguridad Bluetooth Low Energy" . Archivado desde el original el 2 de abril de 2016 . Consultado el 20 de abril de 2017 .
- ^ Caswell, Matt (4 de mayo de 2017). "Uso de TLS1.3 con OpenSSL" . Blog de OpenSSL . Consultado el 29 de diciembre de 2018 .
enlaces externos
- RFC 3610 : Contador con CBC-MAC (CCM)
- RFC 4309 : Uso del modo CCM del estándar de cifrado avanzado (AES) con carga útil de seguridad encapsulante IPsec (ESP)
- RFC 6655 : Conjuntos de cifrado AES-CCM para seguridad de la capa de transporte (TLS)
- Una crítica de CCM (por el diseñador de OCB)