Modo Galois/Contador

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

En criptografía, el modo Galois/Counter (GCM) es un modo de operación para cifrados de bloques criptográficos de clave simétrica que se adopta ampliamente por su rendimiento. Las tasas de rendimiento del GCM para canales de comunicación de alta velocidad y de última generación se pueden lograr con recursos de hardware económicos.

El algoritmo GCM proporciona tanto autenticidad (integridad) como confidencialidad de los datos y pertenece a la clase de métodos de cifrado autenticado con datos asociados (AEAD). Esto significa que toma como entrada una clave K, un texto simple P y algunos datos asociados AD; luego cifra el texto simple utilizando la clave para producir el texto cifrado C y calcula una etiqueta de autenticación T a partir del texto cifrado y los datos asociados (que permanecen sin cifrar). Un receptor con conocimiento de K, al recibir AD, C y T, puede descifrar el texto cifrado para recuperar el texto simple P y puede verificar la etiqueta T para asegurarse de que ni el texto cifrado ni los datos asociados fueron alterados.

GCM utiliza un cifrador de bloques con un tamaño de bloque de 128 bits (comúnmente AES-128) operado en modo contador para el cifrado, y utiliza aritmética en el campo de Galois GF(2128) para calcular la etiqueta de autenticación; de ahí el nombre.

El código de autenticación de mensajes de Galois (GMAC) es una variante de autenticación exclusiva del GCM que puede formar un código de autenticación de mensajes incremental. Tanto el GCM como el GMAC pueden aceptar vectores de inicialización de longitud arbitraria.

Los distintos modos de funcionamiento 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 secuencia de instrucciones o una secuencia de hardware. Por el contrario, el modo de funcionamiento de encadenamiento de bloques de cifrado (CBC) genera bloqueos de secuencia que obstaculizan su eficiencia y rendimiento.

Operación básica

Al igual que 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, generalmente AES. El resultado de este cifrado se combina con el texto sin formato para generar el texto cifrado. Al igual que 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 que se cifra.

Los bloques de texto cifrado se consideran coeficientes de un polinomio que luego se evalúa en un punto dependiente de la clave H, utilizando aritmética de campo finito. Luego, el resultado se cifra, lo que produce una etiqueta de autenticación que se puede utilizar para verificar la integridad de los datos. El texto cifrado contiene entonces el IV, el texto cifrado y la etiqueta de autenticación.

Operación GCM. Para la simplicidad, se muestra un caso con sólo un bloque de datos autenticados adicionales (marcados Datos Auth 1) y dos bloques de texto.
Encryption: Una serie de contadores de 128 bits se encripta utilizando el bloque Cipher E con la tecla K; esto puede ocurrir en paralelo. Los resultados se combinan usando bitwise XOR con bloques de texto de 128 bits, produciendo una serie de bloques de cifrado.
Autenticación: Los datos adicionales y estos bloques de cifrado se combinan mediante la multiplicación con una constante H dependiente de clave en el campo Galois GF(2128) para producir la etiqueta de autenticación.

Base matemática

GCM combina el conocido modo de cifrado de contador con el nuevo modo de autenticación Galois. La característica clave es la facilidad de cálculo paralelo de la multiplicación del campo 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 se define mediante el polinomio

La etiqueta de autenticación se construye introduciendo bloques de datos en la función GHASH y cifrando el resultado. Esta función GHASH está definida por

donde H = Ek(0128) es la clave hash, una cadena de 128 bits cero cifrada utilizando el cifrado de bloques, A son datos que solo se autentican (no se cifran), C es el texto cifrado, m es el número de bloques de 128 bits en A (redondeado hacia arriba), n es el número de bloques de 128 bits en C (redondeado hacia arriba), y la variable Xi para i = 0,..., m + n + 1 se define a continuación.

En primer lugar, el texto autenticado y el texto cifrado se rellenan con ceros por separado hasta múltiplos de 128 bits y se combinan en un único mensaje: Si:

dónde len(A) and len(C) son las representaciones de 64 bits de la longitud de bits de A y C, respectivamente, v = len(A) mod 128 es la longitud del bit del bloque final A, u = len(C) mod 128 es la longitud del bit del bloque final C, y denota concatenación de cadenas de bits.

Entonces Xi se define como:

La segunda forma es un algoritmo iterativo eficiente (cada Xi depende de Xi−1) que se obtiene al aplicar el método de Horner a la primera. Solo el Xm+n+1 final sigue siendo un resultado.

Si es necesario paralelizar el cálculo del hash, esto se puede hacer intercalando k veces:

Si la longitud del IV no es 96, se utiliza la función GHASH para calcular el Contador 0:

El GCM fue diseñado por John Viega y David A. McGrew para mejorar el modo contador Carter-Wegman (modo CWC).

En noviembre de 2007, el NIST anunció la publicación de la publicación especial NIST 800-38D Recomendación para los modos de operación de cifrado de bloques: modo Galois/Contador (GCM) y GMAC, lo que convierte al GCM y al GMAC en estándares oficiales.

Uso

El modo GCM se utiliza en la seguridad Ethernet IEEE 802.1AE (MACsec), el protocolo de seguridad WPA3-Enterprise Wifi, IEEE 802.11ad (también denominado WiGig), los protocolos de seguridad de canal de fibra (FC-SP) ANSI (INCITS), el almacenamiento en cinta IEEE P1619.1, los estándares IPsec de IETF, SSH, TLS 1.2 y TLS 1.3. AES-GCM está incluido en la criptografía NSA Suite B y su último reemplazo en la suite Commercial National Security Algorithm (CNSA) de 2018. El modo GCM se utiliza en el servidor y cliente VPN SoftEther, así como en OpenVPN desde la versión 2.4.

Ejecución

GCM requiere una operación de cifrado de bloques y una multiplicación de 128 bits en el campo de Galois por cada bloque (128 bits) de datos cifrados y autenticados. Las operaciones de cifrado de bloques se pueden canalizar o paralelizar fácilmente; las operaciones de multiplicación se pueden canalizar fácilmente y paralelizar con un esfuerzo modesto (ya sea paralelizando la operación real, adaptando el método de Horner según la presentación original al NIST, o ambas cosas).

Intel ha añadido la instrucción PCLMULQDQ, destacando su uso para GCM. En 2011, SPARC añadió las instrucciones XMULX y XMULXHI, que también realizan una multiplicación sin acarreo de 64 × 64 bits. En 2015, SPARC añadió la instrucción XMPMUL, que realiza una multiplicación XOR de valores mucho más grandes, hasta valores de entrada de 2048 × 2048 bits, produciendo un resultado de 4096 bits. Estas instrucciones permiten una multiplicación rápida sobre GF(2n), y se pueden utilizar con cualquier representación de campo.

Se han publicado 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" que logra un cifrado autenticado AES-GCM de 10,68 ciclos por byte en procesadores Intel de 64 bits. Dai et al. informan de 3,5 ciclos por byte para el mismo algoritmo al utilizar 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 parches adecuados para las bibliotecas OpenSSL y NSS.

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 se incrementa explotando el paralelismo a nivel de instrucción mediante el entrelazado de operaciones. Este proceso se denomina unión de funciones y, si bien en principio se puede aplicar a cualquier combinación de algoritmos criptográficos, GCM es especialmente adecuado. Manley y Gregg muestran la facilidad de optimización al utilizar la unión de funciones 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 en el mundo de los sistemas integrados (por ejemplo, por Silicon Labs) porque el procesamiento paralelo no es adecuado para el uso eficiente de motores de hardware criptográficos. Como resultado, GCM reduce el rendimiento del cifrado para algunos de los dispositivos más sensibles al rendimiento. Los aceleradores de hardware especializados para ChaCha20-Poly1305 son menos complejos en comparación con los aceleradores AES.

Patentes

Según la declaración de los autores, el GCM no está sujeto a patentes.

Seguridad

Se ha demostrado que GCM es seguro en el modelo de seguridad concreto. Es seguro cuando se utiliza con un cifrado de bloques que no se puede distinguir de una permutación aleatoria; sin embargo, la seguridad depende de la elección de un vector de inicialización único para cada cifrado realizado con la misma clave (véase ataque de cifrado de flujo). Para cualquier clave dada, GCM está limitado a cifrar 239 − 256 bits de texto sin formato (64 GiB). La Publicación Especial 800-38D del NIST 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. No se recomienda el uso de etiquetas de autenticación más cortas con GCM. La longitud en 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 limita la longitud de los datos de entrada y la duración de la clave. El Apéndice C de NIST SP 800-38D proporciona orientación para estas restricciones (por ejemplo, si t = 32 y el tamaño máximo del paquete es 210 bytes, la función de descifrado de autenticación no debe invocarse más de 211 veces; si t = 64 y el tamaño máximo del paquete es 215 bytes, la función de descifrado de autenticación no debe invocarse más de 232 veces).

Al igual que con cualquier código de autenticación de mensajes, si el adversario elige una etiqueta de t bits al azar, se espera que sea correcta para datos dados con una medida de probabilidad de 2t. Sin embargo, con GCM, un adversario puede aumentar su probabilidad de éxito al elegir etiquetas con n palabras (la longitud total del texto cifrado más cualquier dato autenticado adicional [AAD]) con una medida de probabilidad de 2t por un factor de n. Aunque hay que tener en cuenta que estas etiquetas óptimas siguen estando dominadas por la medida de supervivencia del algoritmo 1 − n⋅2t para un valor de t arbitrariamente grande. Además, GCM no es adecuado para su uso con longitudes de etiquetas 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⋅2t. Si la longitud de la etiqueta t es menor que 128, entonces cada falsificación exitosa en este ataque aumenta la probabilidad de que las falsificaciones dirigidas posteriores tengan éxito y filtra información sobre la subclave hash, H. Finalmente, H puede verse comprometida por completo y la seguridad de la autenticación se pierde por completo.

Independientemente de este ataque, un adversario puede intentar adivinar sistemáticamente muchas etiquetas diferentes para una entrada dada para descifrarla de forma autenticada y, de ese modo, aumentar la probabilidad de que una (o más) de ellas, eventualmente, se consideren válidas. Por este motivo, el sistema o protocolo que implementa GCM debe monitorear y, si es necesario, limitar el número de intentos de verificación fallidos para cada clave.

Saarinen describió las claves débiles del GCM. Este trabajo proporciona información valiosa sobre cómo funciona la autenticación basada en hash polinomial. 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 que el que se conocía previamente; la probabilidad de éxito en la observación 1 de este artículo coincide con la del lema 2 del análisis de INDOCRYPT 2004 (estableciendo w = 128 y l = n × 128). Saarinen también describió una variante del GCM del modo contador de Sophie Germain (SGCM) basada en los números primos de Sophie Germain.

Véase también

  • Encriptación autenticada
  • Bloque modo de operación de cifrado
  • AES-GCM-SIV

Referencias

  1. ^ RFC 5288 AES Galois Counter Mode (GCM) Cipher Suites for TLS
  2. ^ Lemsitzer, S.; Wolkerstorfer, J.; Felber, N.; Braendli, M. (2007). Paillier, P.; Verbauwhede, I. (eds.). Hardware críptográfico y sistemas embedded - CHES 2007. GCM-AES Architecture Optimizado para FPGAs. Notas de conferencia en Ciencias de la Computación. Vol. 4727. Springer. pp. 227–238. doi:10.1007/978-3-540-74735-2_16. ISBN 978-3-540-74734-5.
  3. ^ McGrew, David A.; Viega, John (2005). "El modo Galois/Counter de Operación (GCM)" (PDF). Pág. 5. Retrieved 20 de julio 2013. Tenga en cuenta que hay un tipopo en las fórmulas del artículo.
  4. ^ Kohno, Tadayoshi; Viega, John; Whiting, Doug (2004). "CWC: A High-Performance Conventional Authenticated Encryption Mode". En Roy, Bimal; Meier, Willi (eds.). Cifrado de software rápido. Notas de conferencia en Ciencias de la Computación. Berlín, Heidelberg: Springer. pp. 408-426. doi:10.1007/978-3-540-25937-4_26. ISBN 978-3-540-25937-4.
  5. ^ a b Dworkin, Morris (2007–2011). Recomendación para los modos de funcionamiento del Cifra Bloqueo: Modo Galois/Counter (GCM) y GMAC (PDF) (Informe técnico). NIST. 800-38D. Retrieved 2015-08-18.
  6. ^ RFC 4106 El uso del modo Galois/Counter (GCM) en IPsec Encapsulado Carga de Seguridad (ESP)
  7. ^ RFC 4543 The Use of Galois Message Authentication Code (GMAC) in IPsec ESP and AH
  8. ^ RFC 5647 AES Galois Counter Mode for the Secure Shell Transport Layer Protocol
  9. ^ RFC 5288 AES Galois Counter Mode (GCM) Cipher Suites for TLS
  10. ^ RFC 6367 Adición de las Camellia Cipher Suites a Transport Layer Security (TLS)
  11. ^ RFC 8446 La versión del protocolo de seguridad de la capa de transporte 1.3
  12. ^ "Registro de Algorithm - Objetos de Seguridad Informática Registro TEN CSRC ANTE CSRC". 24 May 2016.
  13. ^ "Por qué SoftEther VPN – Proyecto VPN SoftEther".
  14. ^ Gueron, Shay; Kounavis, Michael (abril de 2014). "Intel Carry-Less Multiplication Instruction and its Usage for Computing the GCM Mode (Revision 2.02)" (PDF). Retrieved 2023-09-01.
  15. ^ Käsper, E.; Schwabe, P. (2009). "Resistente rápido y ataque a AES-GCM". En Clavier, C.; Gaj, K. (eds.). Hardware críptográfico y sistemas embedded - CHES 2009. Notas de conferencia en Ciencias de la Computación. Vol. 5747. Springer. pp. 1–17. doi:10.1007/978-3-642-04138-9_1. ISBN 978-3-642-04138-9.
  16. ^ Gueron, Shay. "AES-GCM for Efficient Authenticated Encryption - Ending the Reign of HMAC-SHA-1?" (PDF). Workshop on Real-World Cryptography. Retrieved 8 de febrero 2013.
  17. ^ Gopal, V., Feghali, W., Guilford, J., Ozturk, E., Wolrich, G., Dixon, M., Locktyukhin, M., Perminov, M. "Fast Cryptographic Computation on Intel Architecture via Function Stitching" Intel Corp. (2010)
  18. ^ Manley, Raymond; Gregg, David (2010). "Un generador de programas para instrucciones Intel AES-NI". In Gong, G.; Gupta, K.C. (eds.). Progresos en la Cryptología - INDOCRYPT 2010. Notas de conferencia en Ciencias de la Computación. Vol. 6498. Springer. pp. 311–327. doi:10.1007/978-3-642-17401-8_22. ISBN 978-3-642-17400-1.
  19. ^ "Seguridad IoT Parte 6: Galois Counter Mode". 2016-05-06. Retrieved 2023-10-17.
  20. ^ Pfau, Johannes; Reuter, Maximilian; Harbaum, Tanja; Hofmann, Klaus; Becker, Jurgen (septiembre 2019). "Una perspectiva de hardware en los Cifras ChaCha: Chacha escalable8/12/20 Implementaciones Ranging from 476 Slices to Bitrates of 175 Gbit/s": 294–299. doi:10.1109/SOCC46988.2019.1570548289. {{cite journal}}: Cite journal requires |journal= (Ayuda)
  21. ^ McGrew, David A.; Viega, John. "El modo Galois/Counter de Operación (GCM) Declaración de Propiedad Intelectual" (PDF). Centro de recursos de seguridad informática, NIST.
  22. ^ McGrew, David A.; Viega, John (2004). "The Security and Performance of the Galois/counter mode (GCM) of Operation". Proceedings of INDOCRYPT 2004. Notas de conferencia en Ciencias de la Computación. Vol. 3348. Springer. CiteSeerX 10.1.1.1.4591. doi:10.1007/978-3-540-30556-9_27. ISBN 978-3-540-30556-9.
  23. ^ Niels Ferguson, Authentication Weaknesses in GCM, 2005-05-20
  24. ^ Markku-Juhani O. Saarinen (2011-04-20). "Cycling Attacks on GCM, GHASH and Other Polynomial MACs and Hashes". Cryptology ePrint Archive. FSE 2012.
  • NIST Special Publication SP800-38D defining GCM and GMAC
  • RFC 4106: El uso del modo Galois/Counter (GCM) en IPsec Encapsulación de la carga de seguridad (ESP)
  • RFC 4543: El uso de Galois Código de autenticación de mensajes (GMAC) en IPsec ESP y AH
  • RFC 5288: AES Galois Counter Mode (GCM) Cipher Suites for TLS
  • RFC 6367: Addition of the Camellia Cipher Suites to Transport Layer Security (TLS)
  • IEEE 802.1AE – Media Access Control (MAC) Security
  • IEEE Security in Storage Working Group developed the P1619.1 standard
  • INCITS T11 Technical Committee works on Fibre Channel – Security Protocols project.
  • AES-GCM y AES-CCM Authenticated Encryption in Secure RTP (SRTP)
  • The Galois/Counter Mode of Operation (GCM)