stringtranslate.com

Modo Galois/Contador

En criptografía , el modo Galois/Counter ( GCM ) [1] 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. [2]

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(2 128 ) 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 en la secuencia de comandos 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, a continuación, 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 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 simplificar, se muestra un caso con un solo bloque de datos adicionales autenticados (etiquetado como Datos de autenticación 1) y dos bloques de texto simple.
Cifrado: Se cifra una serie de contadores de 128 bits utilizando el cifrado de bloque E con clave K; esto puede ocurrir en paralelo. Los resultados se combinan utilizando XOR bit a bit con bloques de texto simple de 128 bits, lo que produce una serie de bloques de texto cifrado.
Autenticación: Los datos adicionales y estos bloques de texto cifrado se combinan utilizando la multiplicación con una constante H dependiente de la clave en el campo de Galois GF(2 128 ) para producir la etiqueta de autenticación.

Base matemática

GCM combina el conocido modo de cifrado de contador con el nuevo modo Galois de autenticación. 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(2 128 ) 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 = 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 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 . [3]

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 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 Xi se define como:

La segunda forma es un algoritmo iterativo eficiente (cada X i depende de X i −1 ) que se obtiene aplicando el método de Horner a la primera. Solo el X m + 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 ser una mejora del modo contador Carter-Wegman (modo CWC). [4]

En noviembre de 2007, el NIST anunció el lanzamiento de la Publicación Especial NIST 800-38D Recomendación para modos de operación de cifrado de bloques: modo Galois/Contador (GCM) y GMAC, convirtiendo a GCM y GMAC en estándares oficiales. [5]

Usar

El modo GCM se utiliza en la seguridad Ethernet IEEE 802.1AE (MACsec), el protocolo de seguridad Wifi empresarial WPA3 , IEEE 802.11ad (también denominado WiGig ), los protocolos de seguridad de canal de fibra ANSI ( INCITS ) (FC-SP), el almacenamiento en cinta IEEE P1619.1 , los estándares IPsec de IETF , [6] [7] SSH , [8] TLS 1.2 [9] [10] y TLS 1.3. [11] 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. [12] El modo GCM se utiliza en el servidor y cliente VPN SoftEther , [13] 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 cifrados y autenticados. Las operaciones de cifrado de bloque 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. [14] 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 la 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(2 n ), 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 " [15] 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 . [16]

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 [17] y, si bien en principio se puede aplicar a cualquier combinación de algoritmos criptográficos, GCM es especialmente adecuado. Manley y Gregg [18] 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.

El 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 los motores de hardware criptográficos. Como resultado, el GCM reduce el rendimiento del cifrado para algunos de los dispositivos más sensibles al rendimiento. [19] Los aceleradores de hardware especializados para ChaCha20-Poly1305 son menos complejos en comparación con los aceleradores AES. [20]

Patentes

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

Seguridad

Se ha demostrado que GCM es seguro en el modelo de seguridad concreto . [22] Es seguro cuando se utiliza con un cifrado de bloque que es indistinguible 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 ( ver ataque de cifrado de flujo ). Para cualquier clave dada, GCM está limitado a cifrar 2 39 − 256 bits de texto sin formato (64 GiB). La Publicación Especial 800-38D del NIST [5] 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 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 de 2 a 10 bytes, la función de descifrado de autenticación no debe invocarse más de 2 a 11 veces; si t = 64 y el tamaño máximo del paquete es de 2 a 15 bytes, la función de descifrado de autenticación no debe invocarse más de 2 a 32 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 2 t . 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 2 t 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 ⋅2 t para un t arbitrariamente grande . 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 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. [23]

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, finalmente, se consideren válidas. Por este motivo, el sistema o protocolo que implementa GCM debe supervisar 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 . [24] Este trabajo proporciona algunas ideas valiosas 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 anteriormente; 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, el modo contador de Sophie Germain (SGCM), basado en primos de Sophie Germain .

Véase también

Referencias

  1. ^ Conjuntos de cifrados RFC 5288 AES Galois Counter Mode (GCM) para TLS
  2. ^ Lemsitzer, S.; Wolkerstorfer, J.; Felber, N.; Braendli, M. (2007). Paillier, P.; Verbauwhede, I. (eds.). Hardware criptográfico y sistemas integrados - CHES 2007. Arquitectura GCM-AES optimizada para FPGAs . Notas de clase en informática. Vol. 4727. Springer. págs. 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 de operación Galois/Contrarrevolucionario (GCM)" (PDF) . p. 5 . Consultado el 20 de julio de 2013 . Tenga en cuenta que hay un error tipográfico en las fórmulas del artículo.
  4. ^ Kohno, Tadayoshi; Viega, John; Whiting, Doug (2004). "CWC: un modo de cifrado autenticado convencional de alto rendimiento". En Roy, Bimal; Meier, Willi (eds.). Cifrado rápido de software . Apuntes de clase en informática. Vol. 3017. Berlín, Heidelberg: Springer. págs. 408–426. doi :10.1007/978-3-540-25937-4_26. ISBN 978-3-540-25937-4.
  5. ^ ab Dworkin, Morris (2007–2011). Recomendación para modos de operación de cifrado de bloques: modo Galois/Contador (GCM) y GMAC (PDF) (informe técnico). NIST. 800-38D . Consultado el 18 de agosto de 2015 .
  6. ^ RFC 4106 El uso del modo Galois/Counter (GCM) en la carga útil de seguridad encapsulada (ESP) de IPsec
  7. ^ RFC 4543 El uso del código de autenticación de mensajes de Galois (GMAC) en IPsec ESP y AH
  8. ^ RFC 5647 Modo de contador Galois AES para el protocolo de capa de transporte de Secure Shell
  9. ^ Conjuntos de cifrados RFC 5288 AES Galois Counter Mode (GCM) para TLS
  10. ^ RFC 6367 Incorporación de los conjuntos de cifrado Camellia a la seguridad de la capa de transporte (TLS)
  11. ^ RFC 8446 El protocolo de seguridad de la capa de transporte versión 1.3
  12. ^ "Registro de algoritmos - Registro de objetos de seguridad informática | CSRC | CSRC". 24 de mayo de 2016.
  13. ^ "Por qué SoftEther VPN – Proyecto SoftEther VPN".
  14. ^ Gueron, Shay; Kounavis, Michael (abril de 2014). "Instrucción de multiplicación sin acarreo de Intel y su uso para calcular el modo GCM (revisión 2.02)" (PDF) . Consultado el 1 de septiembre de 2023 .
  15. ^ Käsper, E.; Schwabe, P. (2009). "AES-GCM más rápido y resistente a ataques de tiempo". En Clavier, C.; Gaj, K. (eds.). Hardware criptográfico y sistemas integrados - CHES 2009. Apuntes de clase en informática. Vol. 5747. Springer. págs. 1–17. doi :10.1007/978-3-642-04138-9_1. ISBN 978-3-642-04138-9.
  16. ^ Gueron, Shay. "AES-GCM para cifrado autenticado eficiente: ¿Cómo poner fin al reinado de HMAC-SHA-1?" (PDF) . Taller sobre criptografía en el mundo real . Consultado el 8 de febrero de 2013 .
  17. ^ 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 mediante unión de funciones" Intel Corp. (2010)
  18. ^ Manley, Raymond; Gregg, David (2010). "Un generador de programas para instrucciones AES-NI de Intel". En Gong, G.; Gupta, KC (eds.). Progreso en criptología - INDOCRYPT 2010. Apuntes de clase en informática. Vol. 6498. Springer. págs. 311–327. doi :10.1007/978-3-642-17401-8_22. ISBN 978-3-642-17400-1.
  19. ^ "Seguridad de IoT, parte 6: modo de contador Galois". 2016-05-06 . Consultado el 2023-10-17 .
  20. ^ Pfau, Johannes; Reuter, Maximilian; Harbaum, Tanja; Hofmann, Klaus; Becker, Jurgen (septiembre de 2019). "Una perspectiva de hardware sobre los cifrados ChaCha: implementaciones escalables de Chacha8/12/20 que van desde 476 porciones hasta tasas de bits de 175 Gbit/s": 294–299. doi :10.1109/SOCC46988.2019.1570548289. {{cite journal}}: Requiere citar revista |journal=( ayuda )
  21. ^ McGrew, David A.; Viega, John. "Declaración de propiedad intelectual sobre el modo de operación Galois/Counter (GCM)" (PDF) . Centro de recursos de seguridad informática, NIST.
  22. ^ McGrew, David A.; Viega, John (2004). "Seguridad y rendimiento del modo Galois/contrarresto (GCM) de operación". Actas de INDOCRYPT 2004. Apuntes de clase en informática. 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, Debilidades de autenticación en GCM, 20 de mayo de 2005
  24. ^ Markku-Juhani O. Saarinen (20 de abril de 2011). "Ataques cíclicos en GCM, GHASH y otros MAC y hashes polinomiales". Archivo de criptografía electrónica . FSE 2012.

Enlaces externos