En criptografía , Galois / Counter Mode ( GCM ) es un modo de operación para cifrados de bloques criptográficos de clave simétrica que es ampliamente adoptado por su desempeño. Las tasas de rendimiento de GCM para canales de comunicación de alta velocidad y de última generación se pueden lograr con recursos de hardware económicos. [1] La operación es un algoritmo de cifrado autenticado diseñado para proporcionar autenticidad (integridad) y confidencialidad de los datos. GCM se define para cifrados de bloque con un tamaño de bloque de 128 bits. Código de autenticación de mensajes de Galois ( GMAC) es una variante de solo autenticación del GCM que puede formar un código de autenticación de mensaje incremental. Tanto GCM como GMAC pueden aceptar vectores de inicialización de longitud arbitraria.
Los diferentes modos de operación de cifrado de bloques pueden tener características de rendimiento y eficiencia significativamente diferentes, incluso cuando se utilizan con el mismo cifrado de bloques. GCM puede aprovechar al máximo el procesamiento paralelo y la implementación de GCM puede hacer un uso eficiente de una canalización de instrucciones o una canalización de hardware. Por el contrario, el modo de operación del encadenamiento de bloques de cifrado (CBC) incurre en paradas en la tubería que obstaculizan su eficiencia y rendimiento.
Operación básica
Como en el modo de contador normal , los bloques se numeran secuencialmente, y luego este número de bloque se combina con un vector de inicialización (IV) y se cifra con un cifrado de bloque E , normalmente AES . El resultado de esta encriptación luego se XOR con el texto sin formato para producir el texto cifrado . Como todos los modos de contador, este es esencialmente un cifrado de flujo , por lo que es esencial que se utilice un IV diferente para cada flujo cifrado.
Los bloques de texto cifrado se consideran coeficientes de un polinomio que luego se evalúa en un punto dependiente de clave H , usando aritmética de campo finito . Luego, el resultado se encripta, produciendo una etiqueta de autenticación que se puede utilizar para verificar la integridad de los datos. El texto cifrado contiene el IV, el texto cifrado y la etiqueta de autenticación.
Base matematica
GCM combina el conocido modo contador de cifrado con el nuevo modo de autenticación Galois. La característica clave es la facilidad de cálculo paralelo de la multiplicación de campo de Galois utilizada para la autenticación. Esta característica permite un mayor rendimiento que los algoritmos de cifrado, como CBC , que utilizan modos de encadenamiento. El campo GF ( 2128 ) utilizado está definido por el polinomio
La etiqueta de autenticación se construye introduciendo bloques de datos en la función GHASH y encriptando el resultado. Esta función GHASH está definida por
donde H = E k (0 128 ) es la clave hash, una cadena de 128 bits cero cifrada utilizando el cifrado de bloque , A son datos que solo están autenticados (no cifrados), C es el texto cifrado , m es el número de 128- bloques de bits en A (redondeado hacia arriba), n es el número de bloques de 128 bits en C (redondeado hacia arriba), y la variable X i para i = 0, ..., m + n + 1 se define a continuación. [2]
Primero, el texto autenticado y el texto cifrado se rellenan con ceros por separado a múltiplos de 128 bits y se combinan en un solo mensaje S i :
donde len ( A ) y len ( C ) son las representaciones de 64 bits de las longitudes de bits de A y C , respectivamente, v = len ( A ) mod 128 es la longitud de bits del bloque final de A , u = len ( C ) mod 128 es la longitud de bits del bloque final de C , y denota la concatenación de cadenas de bits.
Entonces X i se define como:
La segunda forma es un algoritmo iterativo eficiente (cada X i depende de X i −1 ) producido aplicando el método de Horner al primero. Solo el X m + n +1 final sigue siendo una salida.
Si es necesario paralelizar el cálculo hash, esto se puede hacer intercalando k veces:
GCM fue diseñado por John Viega y David A. McGrew para ser una mejora del modo contador Carter-Wegman (modo CWC). [ cita requerida ]
En noviembre de 2007, el NIST anunció el lanzamiento de la Recomendación de la Publicación Especial 800-38D del NIST para los modos de operación de cifrado en bloque: Modo Galois / Contador (GCM) y GMAC que hace estándares oficiales GCM y GMAC. [3]
Usar
El modo GCM se utiliza en la seguridad Ethernet IEEE 802.1AE (MACsec), IEEE 802.11ad (también denominado WiGig ), ANSI ( INCITS ) Fibre Channel Security Protocol (FC-SP), almacenamiento en cinta IEEE P1619 .1, estándares IETF IPsec , [ 4] [5] SSH , [6] TLS 1.2 [7] [8] y TLS 1.3. [9] AES-GCM se incluye en el conjunto de criptografía NSA Suite B y su último reemplazo en el conjunto de algoritmos de seguridad nacional comercial (CNSA) de 2018. [10] El modo GCM se utiliza en el servidor y cliente SoftEther VPN , [11] así como en OpenVPN desde la versión 2.4.
Actuación
GCM requiere una operación de cifrado de bloque y una multiplicación de 128 bits en el campo de Galois por cada bloque (128 bits) de datos encriptados y autenticados. Las operaciones de cifrado de bloques se canalizan o paralelizan fácilmente; las operaciones de multiplicación se canalizan fácilmente y se pueden paralelizar con un poco de esfuerzo modesto (ya sea paralelizando la operación real, adaptando el método de Horner según la presentación original del NIST, o ambos).
Intel ha agregado la instrucción PCLMULQDQ , destacando su uso para GCM. [12] En 2011, SPARC agregó las instrucciones XMULX y XMULXHI, que también realizan multiplicaciones sin acarreo de 64 × 64 bits . En 2015, SPARC agregó la instrucción XMPMUL, que realiza la multiplicación XOR de valores mucho más grandes, hasta valores de entrada de 2048 × 2048 bits que producen un resultado de 4096 bits. Estas instrucciones permiten una multiplicación rápida sobre GF (2 n ) y se pueden utilizar con cualquier representación de campo.
Se publican resultados de rendimiento impresionantes para GCM en varias plataformas. Käsper y Schwabe describieron un " AES-GCM más rápido y resistente a ataques de tiempo " [13] que logra 10,68 ciclos por byte de cifrado autenticado AES-GCM en procesadores Intel de 64 bits. Dai y col. informan de 3,5 ciclos por byte para el mismo algoritmo cuando se utilizan las instrucciones AES-NI y PCLMULQDQ de Intel. Shay Gueron y Vlad Krasnov lograron 2,47 ciclos por byte en los procesadores Intel de tercera generación. Se prepararon los parches apropiados para las bibliotecas OpenSSL y NSS . [14]
Cuando es necesario realizar tanto la autenticación como el cifrado en un mensaje, una implementación de software puede lograr ganancias de velocidad superponiendo la ejecución de esas operaciones. El rendimiento aumenta al explotar el paralelismo a nivel de instrucción intercalando operaciones. Este proceso se denomina unión de funciones, [15] y aunque en principio se puede aplicar a cualquier combinación de algoritmos criptográficos, GCM es especialmente adecuado. Manley y Gregg [16] muestran la facilidad de optimización cuando se usa la función de costura con GCM. Presentan un generador de programas que toma una versión C anotada de un algoritmo criptográfico y genera código que se ejecuta bien en el procesador de destino.
GCM ha sido criticado, por ejemplo, por Silicon Labs en el mundo integrado porque el procesamiento paralelo no es adecuado para el uso eficiente de motores de hardware criptográfico y, por lo tanto, reduce el rendimiento del cifrado para algunos de los dispositivos más sensibles al rendimiento. [17]
Patentes
Según la declaración de los autores, GCM está libre de patentes. [18]
Seguridad
Se ha demostrado que GCM es seguro en el modelo de seguridad concreto . [19] Es seguro cuando se usa con un cifrado de bloque que no se puede distinguir de una permutación aleatoria; sin embargo, la seguridad depende de elegir un vector de inicialización único para cada cifrado realizado con la misma clave ( ver ataque de cifrado de flujo ). Para cualquier combinación de teclas y el vector de inicialización dada, GCM se limita a la encriptación de 2 39 -256 bits de texto plano (64 GIB). La publicación especial NIST 800-38D [3] incluye pautas para la selección del vector de inicialización.
La fuerza de la autenticación depende de la longitud de la etiqueta de autenticación, como ocurre con todos los códigos de autenticación de mensajes simétricos. Se desaconseja el uso de etiquetas de autenticación más cortas con GCM. La longitud de bits de la etiqueta, denominada t , es un parámetro de seguridad. En general, t puede ser cualquiera de los siguientes cinco valores: 128, 120, 112, 104 o 96. Para ciertas aplicaciones, t puede ser 64 o 32, pero el uso de estas dos longitudes de etiqueta restringe la longitud de la entrada. datos y la vida útil de la clave. El Apéndice C en NIST SP 800-38D proporciona orientación para estas restricciones (por ejemplo, si t = 32 y el tamaño máximo del paquete es 2 10 bytes, la función de descifrado de autenticación no debe invocarse más de 2 11 veces; si t = 64 y el tamaño máximo del paquete es 2 15 bytes, la función de descifrado de autenticación no debe invocarse más de 2 32 veces).
Al igual que con cualquier código de autenticación de mensajes, si el adversario elige una etiqueta t -bit al azar, se espera que sea correcta para los datos dados con una medida de probabilidad 2 - t . Sin embargo, con GCM, un adversario puede aumentar su probabilidad de éxito eligiendo etiquetas con n palabras (la longitud total del texto cifrado más cualquier dato autenticado adicional (AAD)) con una medida de probabilidad 2 - t por un factor de n. Aunque, hay que tener en cuenta que estas etiquetas óptimas siguen dominados por medida la supervivencia del algoritmo 1 - n ⋅2 - t para arbitrariamente grande t . Además, GCM no es adecuado para su uso con longitudes de etiqueta muy cortas ni con mensajes muy largos.
Ferguson y Saarinen describieron de forma independiente cómo un atacante puede realizar ataques óptimos contra la autenticación GCM, que cumplen con el límite inferior de su seguridad. Ferguson demostró que, si n denota el número total de bloques en la codificación (la entrada a la función GHASH), entonces existe un método para construir una falsificación de texto cifrado dirigida que se espera que tenga éxito con una probabilidad de aproximadamente n ⋅2 - t . Si la longitud de la etiqueta t es más corta que 128, entonces cada falsificación éxito en este ataque aumenta la probabilidad de que las falsificaciones dirigidos subsiguientes tendrán éxito, y las fugas de información acerca de la subclave de hash, H . Eventualmente, H puede verse comprometido por completo y la garantía de autenticación se pierde por completo. [20]
Independientemente de este ataque, un adversario puede intentar adivinar sistemáticamente muchas etiquetas diferentes para una entrada determinada para el descifrado autenticado y, por lo tanto, aumentar la probabilidad de que una (o más) de ellas, eventualmente, se considere válida. Por esta razón, el sistema o protocolo que implementa GCM debe monitorear y, si es necesario, limitar el número de intentos fallidos de verificación para cada clave.
Saarinen describió las claves débiles de GCM . [21] Este trabajo proporciona información valiosa sobre cómo funciona la autenticación polinomial basada en hash. Más precisamente, este trabajo describe una forma particular de falsificar un mensaje GCM, dado un mensaje GCM válido, que funciona con una probabilidad de aproximadamente n ⋅2 −128 para mensajes que tienen una longitud de n × 128 bits. Sin embargo, este trabajo no muestra un ataque más efectivo de lo que se conocía anteriormente; la probabilidad de éxito en la observación 1 de este documento coincide con el de lema 2 a partir del análisis INDOCRYPT 2004 (ajuste de w = 128 y l = n × 128 ). Saarinen también describió una variante de GCM Sophie Germain Counter Mode (SGCM) basada en los números primos de Sophie Germain .
Ver también
- Cifrado autenticado
- Modos de operación de cifrado en bloque
- AES-GCM-SIV
Referencias
- ^ Lemsitzer, S .; Wolkerstorfer, J .; Felber, N .; Braendli, M. (2007). "Arquitectura Multi-gigabit GCM-AES optimizada para FPGAs". En Paillier, P .; Verbauwhede, I. (eds.). Hardware criptográfico y sistemas integrados - CHES 2007 . Apuntes de conferencias en Ciencias de la Computación. 4727 . Saltador. págs. 227-238. doi : 10.1007 / 978-3-540-74735-2_16 . ISBN 978-3-540-74734-5.
- ^ McGrew, David A .; Viega, John (2005). "El modo de funcionamiento Galois / Counter (GCM)" (PDF) . pag. 5 . Consultado el 20 de julio de 2013 . Tenga en cuenta que hay un error tipográfico en las fórmulas del artículo.
- ^ a b Dworkin, Morris (2007-2011). Recomendación para los modos de operación de cifrado en bloque: Galois / Counter Mode (GCM) y GMAC (PDF) (Informe técnico). NIST. 800-38D . Consultado el 18 de agosto de 2015 .
- ^ RFC 4106 El uso de Galois / Counter Mode (GCM) en IPsec Encapsulating Security Payload (ESP)
- ^ RFC 4543 El uso del código de autenticación de mensajes de Galois (GMAC) en IPsec ESP y AH
- ^ RFC 5647 AES Galois Counter Mode para el protocolo de capa de transporte Secure Shell
- ^ RFC 5288 AES Galois Counter Mode (GCM) Conjuntos de cifrado para TLS
- ^ RFC 6367 Adición de Camellia Cipher Suites a Transport Layer Security (TLS)
- ^ RFC 8446 El protocolo de seguridad de la capa de transporte versión 1.3
- ^ https://csrc.nist.gov/projects/computer-security-objects-register/algorithm-registration#AES
- ^ "Por qué SoftEther VPN - Proyecto SoftEther VPN" .
- ^ Gueron, Shay; Kounavis, Michael (abril de 2014). "Instrucción de multiplicación sin transporte de Intel y su uso para calcular el modo GCM (revisión 2.02)" . Consultado el 29 de abril de 2018 .
- ^ Käsper, E .; Schwabe, P. (2009). "AES-GCM más rápido y resistente a los ataques de tiempo". En Clavier, C .; Gaj, K. (eds.). Hardware criptográfico y sistemas integrados - CHES 2009 . Apuntes de conferencias en Ciencias de la Computación. 5747 . Saltador. págs. 1-17. doi : 10.1007 / 978-3-642-04138-9_1 . ISBN 978-3-642-04138-9.
- ^ Gueron, Shay. "AES-GCM para un cifrado autenticado eficaz: ¿poner fin al reinado de HMAC-SHA-1?" (PDF) . Taller sobre criptografía del mundo real . Consultado el 8 de febrero de 2013 .
- ^ Gopal, V., Feghali, W., Guilford, J., Ozturk, E., Wolrich, G., Dixon, M., Locktyukhin, M., Perminov, M. "Computación criptográfica rápida en la arquitectura Intel a través de la función de unión " Intel Corp. (2010)
- ^ Manley, Raymond; Gregg, David (2010). "Un generador de programas para instrucciones Intel AES-NI". En Gong, G .; Gupta, KC (eds.). Avances en criptología - INDOCRYPT 2010 . Apuntes de conferencias en Ciencias de la Computación. 6498 . Saltador. págs. 311–327. doi : 10.1007 / 978-3-642-17401-8_22 . ISBN 978-3-642-17400-1.
- ^ "Parte de seguridad de IoT 6: Modo contador de Galois" . 2016-05-06 . Consultado el 29 de abril de 2018 .
- ^ McGrew, David A .; Viega, John. "Declaración de propiedad intelectual de Galois / Counter Mode of Operation (GCM)" (PDF) . Centro de recursos de seguridad informática, NIST.
- ^ McGrew, David A .; Viega, John (2004). "La seguridad y el rendimiento del modo Galois / contador (GCM) de operación". Actas de INDOCRYPT 2004 . Apuntes de conferencias en Ciencias de la Computación. 3348 . Saltador. CiteSeerX 10.1.1.1.4591 . doi : 10.1007 / 978-3-540-30556-9_27 . ISBN 978-3-540-30556-9.
- ^ Niels Ferguson, Debilidades de autenticación en GCM , 20 de mayo de 2005
- ^ Markku-Juhani O. Saarinen (20 de abril de 2011). "Ciclos de ataques en GCM, GHASH y otros MAC polinomiales y Hashes" . FSE 2012. Cite journal requiere
|journal=
( ayuda )
enlaces externos
- Publicación especial de NIST SP800-38D que define GCM y GMAC
- RFC 4106: El uso de Galois / Counter Mode (GCM) en IPsec Encapsulating Security Payload (ESP)
- RFC 4543: El uso del código de autenticación de mensajes de Galois (GMAC) en IPsec ESP y AH
- RFC 5288: Conjuntos de cifrado AES Galois Counter Mode (GCM) para TLS
- RFC 6367: Adición de Camellia Cipher Suites a Transport Layer Security (TLS)
- IEEE 802.1AE - Seguridad de control de acceso a medios (MAC)
- IEEE Security in Storage Working Group desarrolló el estándar P1619.1
- El Comité Técnico INCITS T11 trabaja en el proyecto Fibre Channel - Protocolos de seguridad .
- Cifrado autenticado AES-GCM y AES-CCM en Secure RTP (SRTP)
- El modo de funcionamiento Galois / Counter (GCM)