stringtranslate.com

MAC con una sola tecla

El código MAC de una sola clave ( OMAC ) es una familia de códigos de autenticación de mensajes construidos a partir de un cifrado de bloques muy similar al algoritmo CBC-MAC . Puede utilizarse para garantizar la autenticidad y, por lo tanto, la integridad de los datos. Se definen dos versiones:

OMAC es gratuito para todos los usos: no está cubierto por ninguna patente. [4]

Historia

El núcleo del algoritmo CMAC es una variación de CBC-MAC que Black y Rogaway propusieron y analizaron bajo el nombre "XCBC" [5] y presentaron al NIST . [6] El algoritmo XCBC aborda de manera eficiente las deficiencias de seguridad de CBC-MAC, pero requiere tres claves.

Iwata y Kurosawa propusieron una mejora de XCBC que requiere menos material de clave (solo una clave) y denominaron al algoritmo resultante One-Key CBC-MAC (OMAC) en sus artículos. [1] Más tarde presentaron el OMAC1 (= CMAC), [2] un refinamiento de OMAC y un análisis de seguridad adicional. [7]

Algoritmo

Para generar una etiqueta CMAC de ℓ bits ( t ) de un mensaje ( m ) utilizando un cifrado de bloque de b bits ( E ) y una clave secreta ( k ), primero se generan dos subclaves de b bits ( k 1 y k 2 ) utilizando el siguiente algoritmo (esto es equivalente a la multiplicación por x y x 2 en un campo finito GF(2 b )). Sea ≪ el operador de desplazamiento a la izquierda estándar y ⊕ el operador exclusivo o bit a bit :

  1. Calcular un valor temporal k 0 = E k (0).
  2. Si msb( k 0 ) = 0, entonces k 1 = k 0 ≪ 1, de lo contrario k 1 = ( k 0 ≪ 1) ⊕ C ; donde C es una constante determinada que depende únicamente de b . (Específicamente, C son los coeficientes no principales del primer polinomio binario irreducible lexicográficamente de grado b con el número mínimo de unos: 0x1B para bloques de 64 bits, 0x87 para 128 bits y 0x425 para bloques de 256 bits).
  3. Si msb( k 1 ) = 0 , entonces k 2 = k 1 ≪ 1 , de lo contrario k 2 = ( k 1 ≪ 1) ⊕ C .
  4. Teclas de retorno ( k 1 , k 2 ) para el proceso de generación de MAC.

Como pequeño ejemplo, supongamos que b = 4 , C = 0011 2 y k 0 = E k (0) = 0101 2. Entonces k 1 = 1010 2 y k 2 = 0100 ⊕ 0011 = 0111 2 .

El proceso de generación de etiquetas CMAC es el siguiente:

  1. Dividir el mensaje en bloques de b bits m = m 1 ∥ ... ∥ m n −1m n , donde m 1 , ..., m n −1 son bloques completos. (El mensaje vacío se trata como un bloque incompleto).
  2. Si m n es un bloque completo entonces m n ′ = k 1m n de lo contrario m n ′ = k 2 ⊕ ( m n ∥ 10...0 2 ) .
  3. Sea c 0 = 00...0 2 .
  4. Para i = 1, ..., n − 1 , calcule c i = E k ( c i −1m i ) .
  5. c n = E k ( c n −1m n ′)
  6. Salida t = msb ( c n ) .

El proceso de verificación es el siguiente:

  1. Utilice el algoritmo anterior para generar la etiqueta.
  2. Verifique que la etiqueta generada sea igual a la etiqueta recibida.

Variantes

CMAC-C1 [8] es una variante de CMAC que proporciona garantías adicionales de compromiso y seguridad de descubrimiento de contexto .

Implementaciones

Referencias

  1. ^ ab Iwata, Tetsu; Kurosawa, Kaoru (24 de febrero de 2003). "OMAC: CBC MAC de una sola clave". Cifrado rápido de software . Apuntes de clase sobre informática. Vol. 2887. Springer, Berlín, Heidelberg. págs. 129–153. doi :10.1007/978-3-540-39887-5_11. ISBN 978-3-540-20449-7.
  2. ^ abc Iwata, Tetsu; Kurosawa, Kaoru (2003). "OMAC: One-Key CBC MAC – Addendum" (PDF) . En esta nota, proponemos OMAC1, una nueva opción de los parámetros de la familia OMAC (ver [4] para los detalles). También se presentan vectores de prueba. En consecuencia, cambiamos el nombre del OMAC anterior a OMAC2. (Es decir, los vectores de prueba para OMAC2 ya se mostraron en [3].) Usamos OMAC como un nombre genérico para OMAC1 y OMAC2. {{cite journal}}: Requiere citar revista |journal=( ayuda )
  3. ^ Dworkin, Morris (2016). "Recomendación para los modos de operación del cifrado de bloques: el modo CMAC para autenticación" (PDF) . doi : 10.6028/nist.sp.800-38b . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  4. ^ Rogaway, Phillip. "CMAC: Non-licensing" (CMAC: no concesión de licencias) . Consultado el 27 de mayo de 2020. Declaración de Phillip Rogaway sobre el estado de propiedad intelectual de CMAC
  5. ^ Black, John; Rogaway, Phillip (20 de agosto de 2000). Avances en criptología: CRYPTO 2000. Springer, Berlín, Heidelberg. págs. 197–215. doi :10.1007/3-540-44598-6_12. ISBN . 978-3540445982.
  6. ^ Black, J; Rogaway, P. "Una sugerencia para manejar mensajes de longitud arbitraria con el CBC MAC" (PDF) . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  7. ^ Iwata, Tetsu; Kurosawa, Kaoru (8 de diciembre de 2003). "Límites de seguridad más sólidos para OMAC, TMAC y XCBC". En Johansson, Thomas; Maitra, Subhamoy (eds.). Avances en Criptología - INDOCRYPT 2003 . Apuntes de conferencias sobre informática. vol. 2904. Springer Berlín Heidelberg. págs. 402–415. CiteSeerX 10.1.1.13.8229 . doi :10.1007/978-3-540-24582-7_30. ISBN  9783540206095.
  8. ^ Bhaumik, Ritam; Chakraborty, Bishwajit; Choi, Wonseok; Dutta, Avijit; Govinden, Jérôme; Shen, Yaobin (2024). "El compromiso de seguridad de MAC con aplicaciones de composición genérica". En Reyzin, Leonid; Stebila, Douglas (eds.). Avances en Criptología – CRYPTO 2024 . Apuntes de conferencias sobre informática. vol. 14923. Cham: Springer Nature Suiza. págs. 425–462. doi :10.1007/978-3-031-68385-5_14. ISBN 978-3-031-68385-5.
  9. ^ "Impacket es una colección de clases de Python para trabajar con protocolos de red: SecureAuthCorp/impacket". 15 de diciembre de 2018 – vía GitHub.
  10. ^ "Extensión Ruby C para la función hash con clave AES-CMAC (RFC 4493): louismullie/cmac-rb". 4 de mayo de 2016 – vía GitHub.

Enlaces externos