Articulo de referencia

Modo Galois/Contador

En criptografía , el modo Galois/Contador ( GCM ) [ 1 ] es un modo de operación para cifrados de bloques criptográficos de clave simétrica . La propuesta se publicó por primera ...

En criptografía , el modo Galois/Contador ( GCM ) [ 1 ] es un modo de operación para cifrados de bloques criptográficos de clave simétrica . La propuesta se publicó por primera vez en 2007. [ 2 ] El algoritmo GCM pertenece a la clase de métodos de cifrado autenticado con datos asociados (AEAD) . Dada una claveK{\displaystyle K}, texto planoPAG{\displaystyle P}y datos asociadosAD{\displaystyle AD}, GCM cifraPAG{\displaystyle P}para producir texto cifradodo{\displaystyle C}y una etiqueta de autenticaciónT{\displaystyle T}.T{\displaystyle T}se calcula a partir del texto cifrado y los datos asociados no cifrados. Un destinatario que sabeK{\displaystyle K}Se puede utilizar la etiqueta para verificar que ni el texto cifrado ni los datos asociados hayan sido modificados, y luego descifrar el texto cifrado para recuperar el texto sin cifrar.

GCM utiliza un cifrado de bloques con un tamaño de bloque de 128 bits (comúnmente AES-128 ), que se ejecuta 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í su nombre.

El código de autenticación de mensajes de Galois ( GMAC ) es una variante de GCM que solo admite autenticación y que puede generar un código de autenticación de mensajes incremental . Tanto GCM como GMAC pueden aceptar vectores de inicialización de longitud arbitraria.

Los distintos modos de operación de cifrado por bloques pueden presentar un rendimiento significativamente diferente con el mismo cifrado. En el modo de contador , los bloques GCM son independientes. Esto permite paralelizar el cifrado y el descifrado, a diferencia de modos como el encadenamiento de bloques de cifrado (CBC), donde cada bloque depende del anterior.

GCM fue diseñado explícitamente para estar libre de patentes. [ 3 ]

Operación básica

GCM funciona como un cifrador de bloques en modo contador para producir texto cifrado. [ 2 ]

Para la autenticación, los bloques de texto cifrado se tratan como coeficientes de un polinomio evaluado en un punto H dependiente de la clave mediante aritmética de campo finito . El resultado se cifra, generando una etiqueta de autenticación que permite verificar la integridad de los datos, de modo que el texto cifrado contiene el vector de inicialización (IV), el texto cifrado y la etiqueta de autenticación. [ 2 ]

Operación GCM. Para simplificar, se muestra un caso con un solo bloque de datos autenticados añadidos (etiquetado como Datos de Autenticación 1) y dos bloques de texto plano. Cifrado: Una serie de contadores de 128 bits se cifra utilizando el cifrado de bloques E con la clave K; esto puede ocurrir en paralelo. Los resultados se combinan mediante XOR bit a bit con bloques de texto plano de 128 bits, produciendo una serie de bloques de texto cifrado. Autenticación: Los Datos Adicionales y estos bloques de texto cifrado se combinan mediante 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.

Fundamento matemático

GCM combina el modo de cifrado de contador con el modo de autenticación de Galois. La característica central es la facilidad de cálculo paralelo de la multiplicación del campo de Galois utilizada para la autenticación. Esta característica tiene un rendimiento mayor que los algoritmos de cifrado como CBC que utilizan modos de encadenamiento. El campo GF(2 128 ) utilizado se define mediante el polinomio [ 2 ].

incógnita128+incógnita7+incógnita2+incógnita+1{\displaystyle x^{128}+x^{7}+x^{2}+x+1}.

La etiqueta de autenticación se construye introduciendo bloques de datos en la función GHASH y cifrando el resultado. Esta función GHASH se define mediante:

GHASH(H,A,do)=incógnitametro+norte+1{\displaystyle \operatorname {GHASH} (H,A,C)=X_{m+n+1}},

dóndeH=mik(0128){\displaystyle H=E_{k}(0^{128})}es la clave hash , una cadena de 128 bits cero cifrada utilizando el cifrado de bloques ;A{\displaystyle A}son datos que solo están autenticados (no cifrados);do{\displaystyle C}es el texto cifrado ;metro{\displaystyle m}es el número de bloques de 128 bits enA{\displaystyle A}(redondeado al alza);norte{\displaystyle n}es el número de bloques de 128 bits endo{\displaystyle C}(redondeado hacia arriba); y la variableincógnitai{\displaystyle X_{i}}parai=0,metro+norte+1{\displaystyle i=0,\dots m+n+1}se define a continuación. [ 2 ]

Primero, el texto autenticado y el texto cifrado se rellenan con ceros por separado hasta alcanzar múltiplos de 128 bits y se combinan en un único mensaje.Si{\displaystyle S_{i}}, definido como

Si={Aipara i=1,,metro1Ametro0128vpara i=metrodoimetropara i=metro+1,,metro+norte1donorte0128para i=metro+norteLen(A)Len(do)para i=metro+norte+1{\displaystyle S_{i}={\begin{cases}A_{i}&{\text{para }}i=1,\ldots ,m-1\\A_{m}^{*}\parallel 0^{128-v}&{\text{para }}i=m\\C_{im}&{\text{para }}i=m+1,\ldots ,m+n-1\\C_{n}^{*}\parallel 0^{128-u}&{\text{para }}i=m+n\\\operatorname {len} (A)\parallel \operatorname {len} (C)&{\text{para }}i=m+n+1\end{cases}}},

dóndeLen(A){\displaystyle \operatorname {len} (A)}yLen(do){\displaystyle \operatorname {len} (C)}son las representaciones de 64 bits de las longitudes de bits deA{\displaystyle A}ydo{\displaystyle C}, respectivamente;v=Len(A) mod 128{\displaystyle v=\operatorname {len} (A)\ \operatorname {mod} \ 128}es la longitud de bits del bloque final deA{\displaystyle A};=Len(do) mod 128{\displaystyle u=\operatorname {len} (C)\ \operatorname {mod} \ 128}es la longitud de bits del bloque final dedo{\displaystyle C}; y{\displaystyle \parallel }denota la concatenación de cadenas de bits.

Entonces,incógnitai{\displaystyle X_{i}}se define como:

incógnitai=j=1iSjHij+1={0para i=0(incógnitai1Si)Hpara i=1,,metro+norte+1{\displaystyle X_{i}=\sum _{j=1}^{i}S_{j}\cdot H^{i-j+1}={\begin{cases}0&{\text{para }}i=0\\\left(X_{i-1}\oplus S_{i}\right)\cdot H&{\text{para }}i=1,\ldots ,m+n+1\end{cases}}}.

La segunda forma es un algoritmo iterativo eficiente (cadaincógnitai{\displaystyle X_{i}}depende deincógnitai1{\displaystyle X_{i-1}}) producido aplicando el método de Horner al primero. Solo el finalincógnitametro+norte+1{\displaystyle X_{m+n+1}}sigue siendo una salida.

Si es necesario paralelizar el cálculo del hash, esto se puede hacer intercalandok{\displaystyle k}veces:

incógnitai={0para i0(incógnitaikSi)Hkpara i=1,,metro+norte+1kincógnitai=j=1k(incógnitai+j2kSi+jk)Hkj+1{\displaystyle {\begin{aligned}X_{i}^{'}&={\begin{cases}0&{\text{para }}i\leq 0\\\left(X_{ik}^{'}\oplus S_{i}\right)\cdot H^{k}&{\text{para }}i=1,\ldots ,m+n+1-k\\\end{cases}}\\[6pt]X_{i}&=\sum _{j=1}^{k}\left(X_{i+j-2k}^{'}\oplus S_{i+jk}\right)\cdot H^{k-j+1}\end{aligned}}}.

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

doonortetmir0={IV0311para Len(IV)=96GHASH(IV0s064Len64(IV)) con s=128Len(IV)mod128de lo contrario{\displaystyle \mathrm {Counter0} ={\begin{cases}IV\parallel 0^{31}\parallel 1&{\text{para }}\operatorname {len} (IV)=96\\\operatorname {GHASH} \left(IV\parallel 0^{s}\parallel 0^{64}\parallel \operatorname {len} _{64}(IV)\right){\text{ con }}s=128-\operatorname {len} (IV)\mod 128&{\text{en otro caso}}\end{cases}}}.

GCM fue diseñado por John Viega y David A. McGrew como un desarrollo basado en diseños anteriores de cifrado autenticado en modo contador, incluido el modo contador Carter-Wegman (modo CWC). [ 4 ]

En noviembre de 2007, el NIST anunció la publicación de la Publicación Especial 800-38D del NIST, Recomendación para los Modos de Operación de Cifrado por 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 Wi-Fi WPA3-Enterprise , IEEE 802.11ad (también conocido como WiGig ), los protocolos de seguridad Fibre Channel ANSI ( INCITS ) (FC-SP), el almacenamiento en cinta IEEE P1619.1 , los estándares IPsec de IETF , [ 6 ] [ 7 ] SSH , [ 8 ] TLS 1.2 [ 1 ] [ 9 ] y TLS 1.3. [ 10 ] AES-GCM está incluido en la criptografía NSA Suite B y su último reemplazo en la suite de algoritmos de seguridad nacional comercial (CNSA) de 2018. [ 11 ] El modo GCM se utiliza en el servidor y cliente SoftEther VPN , [ 12 ] así como en OpenVPN , donde los cifrados AES-GCM están disponibles a través de la configuración y la negociación de cifrado desde la versión 2.4. [ 13 ]

Actuación

GCM requiere una operación de cifrado por bloques y una multiplicación de 128 bits en el campo de Galois para cada bloque (128 bits) de datos cifrados y autenticados. Las operaciones de cifrado por bloques se ejecutan en paralelo o en paralelo ; las operaciones de multiplicación se ejecutan en paralelo y pueden paralelizarse (ya sea paralelizando la operación en sí, adaptando el método de Horner según la presentación original del NIST, o ambas cosas). [ 2 ]

Intel ha añadido la instrucción PCLMULQDQ , que admite la multiplicación sin acarreo utilizada en implementaciones GCM. [ 14 ] En 2011, SPARC añadió las instrucciones XMULX y XMULXHI, que también realizan multiplicación sin acarreo de 64 × 64 bits. En 2015, SPARC añadió la instrucción XMPMUL, que realiza multiplicación XOR de valores mucho mayores, 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 pueden utilizarse con cualquier representación de campo.

Se han publicado resultados de rendimiento para GCM en varias plataformas. Käsper y Schwabe describieron un " AES-GCM más rápido y resistente a ataques de temporización " [ 15 ] que alcanza 10,68 ciclos por byte de cifrado autenticado AES-GCM en procesadores Intel de 64 bits. Dai et al. informan de 3,5 ciclos por byte para el mismo algoritmo al usar 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 apropiados para las bibliotecas OpenSSL y NSS . [ 16 ]

Cuando se requiere tanto autenticación como cifrado en un mensaje, intercalar estas operaciones mediante paralelismo a nivel de instrucción puede aumentar el rendimiento. Este proceso se denomina unión de funciones [ 17 ] y, si bien en principio puede aplicarse a cualquier combinación de algoritmos criptográficos, GCM admite computación paralela, lo que puede simplificar la optimización en algunos procesadores. Manley y Gregg [ 18 ] demuestran la facilidad de optimización al usar la unión de funciones con GCM. Presentan un generador de programas que toma una versión en C anotada de un algoritmo criptográfico y genera código que se ejecuta correctamente en el procesador de destino.

GCM ha sido criticado en el mundo de los sistemas embebidos (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, 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 ]

Seguridad

Se ha demostrado que GCM es seguro en el modelo de seguridad concreto . [ 21 ] Es seguro cuando se usa con un cifrado de bloques que es indistinguible 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 clave y valor de vector de inicialización dados, GCM está limitado a cifrar 2 39 −256 bits de texto plano (64 GiB). La publicación especial 800-38D del NIST [ 5 ] incluye directrices para la elección del vector de inicialización y limita el número de posibles valores de vector de inicialización para una sola clave. A medida que la garantía de seguridad de GCM se degrada a medida que se procesan más datos usando la misma clave, el número total de bloques de texto plano y AD protegidos durante la vida útil de una sola clave debe limitarse a 2 64 . [ 5 ]

La seguridad de la autenticación depende de la longitud de la etiqueta de autenticación, como en 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 en bits de la etiqueta, denotada por 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 vida útil de la clave. El Apéndice C de NIST SP 800-38D proporciona orientación sobre estas limitaciones (por ejemplo, si t = 32 y el tamaño máximo del paquete es de 2¹⁰ bytes , la función de descifrado de autenticación no debe invocarse más de 2¹¹ veces ; si t = 64 y el tamaño máximo del paquete es de 2¹⁵ bytes , la función de descifrado de autenticación no debe invocarse más de 2³² veces). [ 5 ]

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 los datos dados con una medida de probabilidad de 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 añadido (AAD)— con una medida de probabilidad de 2 t multiplicada por un factor de n . No obstante, estas mejores etiquetas siguen estando dominadas por la medida de supervivencia del algoritmo 1 − n ⋅2 t para valores de t arbitrariamente grandes . Además, GCM no es adecuado para su uso con longitudes de etiqueta cortas o mensajes largos. [ 22 ]

Ferguson y Saarinen describieron de forma independiente cómo un atacante puede realizar los mejores ataques contra la autenticación GCM, que cumple 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 aproximada de 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 subsiguientes tengan éxito y filtra información sobre la subclave hash H . Eventualmente, H puede verse comprometida por completo, momento en el que la garantía de autenticación se pierde totalmente. [ 22 ]

Independientemente de este ataque, un adversario puede intentar adivinar sistemáticamente muchas etiquetas diferentes para una entrada dada en el descifrado autenticado y, por lo tanto, aumentar la probabilidad de que una (o más) de ellas, finalmente, 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 de verificación fallidos para cada clave. [ 5 ]

Saarinen describió GCM como con claves débiles, [ 23 ] ofreciendo un análisis adicional 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 son n × 128 bits de longitud. Sin embargo, este trabajo no muestra un ataque más efectivo que el conocido anteriormente; la probabilidad de éxito en la observación 1 de este artículo coincide con la del lema 2 del análisis INDOCRYPT 2004 (estableciendo w = 128 y l = n × 128 ). Saarinen también describió una variante de GCM Sophie Germain Counter Mode (SGCM) basada en primos de Sophie Germain .

Véase también

Referencias

  1. 1 2 J. Salowey; A. Choudhury; D. McGrew (agosto de 2008). Conjuntos de cifrado AES Galois Counter Mode (GCM) para TLS . Grupo de trabajo de redes. doi : 10.17487/RFC5288 . RFC 5288 .Norma propuesta. Actualizada por RFC 9325 . 
  2. 1 2 3 4 5 6 McGrew, David A.; Viega, John (2005). "El modo de operación Galois/Contador (GCM)" (PDF) . pág. 5. Recuperado el 20 de julio de 2013 . Tenga en cuenta que hay un error tipográfico en las fórmulas del artículo.
  3. McGrew, David A.; Viega, John. "Declaración de propiedad intelectual del modo de operación Galois/Counter (GCM)" (PDF) . Centro de recursos de seguridad informática, NIST.
  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 de software rápido . Lecture Notes in Computer Science. Vol. 3017. Berlín, Heidelberg: Springer. pp. 408–426 . doi : 10.1007/978-3-540-25937-4_26 . ISBN   978-3-540-25937-4.
  5. 1 2 3 4 5 Dworkin, Morris (2007–2011). Recomendación para los modos de operación de cifrado por bloques: modo Galois/contador (GCM) y GMAC (PDF) (Informe técnico). NIST. 800-38D . Recuperado el 18 de agosto de 2015 .
  6. J. Viega; D. McGrew (junio de 2005). El uso del modo Galois/Contador (GCM) en IPsec Encapsulating Security Payload (ESP) . Grupo de trabajo de redes. doi : 10.17487/RFC4106 . RFC 4106 .Norma propuesta.
  7. D. McGrew; J. Viega (mayo de 2006). El uso del código de autenticación de mensajes de Galois (GMAC) en IPsec ESP y AH . Grupo de trabajo de redes. doi : 10.17487/RFC4543 . RFC 4543 .Norma propuesta.
  8. K. Igoe; J. Solinas (agosto de 2009). Modo de contador de Galois AES para el protocolo de capa de transporte Secure Shell . Grupo de trabajo de redes IETF . doi : 10.17487/RFC5647 . RFC 5647 .Informativo.
  9. S. Kanno; M. Kanda (septiembre de 2011). Adición de los conjuntos de cifrado Camellia a la seguridad de la capa de transporte (TLS) . Grupo de trabajo de ingeniería de Internet . doi : 10.17487/RFC6367 . ISSN 2070-1721 . RFC 6367 . Informativo. Actualizado por RFC 8996 . 
  10. E. Rescorla (agosto de 2018). El protocolo Transport Layer Security (TLS) versión 1.3 . Grupo de trabajo TLS de la Internet Engineering Task Force . doi : 10.17487/RFC8446 . RFC 8446 .Norma propuesta. Deja obsoletas las RFC 5077 , 5246 y 6961. Actualiza las RFC 5705 y 6066 .  
  11. "Registro de algoritmos - Registro de objetos de seguridad informática | CSRC | CSRC" . 24 de mayo de 2016.
  12. "Por qué SoftEther VPN – Proyecto SoftEther VPN" .
  13. "Negociación de cifrado de canal de datos en el servidor de acceso | OpenVPN" . openvpn.net . Consultado el 13 de abril de 2026 .
  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) . Recuperado el 1 de septiembre de 2023 .
  15. Käsper, E.; Schwabe, P. (2009). "AES-GCM más rápido y resistente a ataques de temporización". En Clavier, C.; Gaj, K. (eds.). Hardware criptográfico y sistemas embebidos - CHES 2009. Lecture Notes in Computer Science. 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 para un cifrado autenticado eficiente: ¿El fin del 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 la unión de funciones" Intel Corp. (2010)
  18. 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. Lecture Notes in Computer Science. Vol. 6498. Springer. pp. 311–327 . doi : 10.1007/978-3-642-17401-8_22 . ISBN   978-3-642-17400-1.
  19. "Seguridad en IoT Parte 6: Modo de contador de Galois" . 06/05/2016 . Consultado el 17/10/2023 .
  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 slices hasta tasas de bits de 175 Gbit/s". 32.ª Conferencia Internacional IEEE sobre Sistemas en Chip (SOCC) de 2019. págs. 294–299 . doi : 10.1109/SOCC46988.2019.1570548289 . ISBN  978-1-7281-3483-3.
  21. McGrew, David A.; Viega, John (2004). "Seguridad y rendimiento del modo de operación Galois/contador (GCM)". Actas de INDOCRYPT 2004. Lecture Notes in Computer Science. Vol. 3348. Springer. CiteSeerX 10.1.1.1.4591 . doi : 10.1007/978-3-540-30556-9_27 . ISBN   978-3-540-30556-9.
  22. 1 2 Niels Ferguson, Debilidades de autenticación en GCM , 2005-05-20
  23. Markku-Juhani O. Saarinen (2011-04-20). "Ataques cíclicos a GCM, GHASH y otros MAC y hashes polinomiales" . Cryptology ePrint Archive . FSE 2012.
  • Publicación especial SP800-38D del NIST que define GCM y GMAC.
  • IEEE 802.1AE – Seguridad de control de acceso al medio (MAC)
  • El grupo de trabajo IEEE Security in Storage desarrolló el estándar P1619.1.
  • El Comité Técnico T11 de INCITS trabaja en el proyecto Fibre Channel – Protocolos de Seguridad .
  • Cifrado autenticado AES-GCM y AES-CCM en RTP seguro (SRTP)
  • Modo de operación Galois/Contador (GCM)