En criptografía , un código de autenticación de mensajes ( MAC ), también conocido como etiqueta de autenticación , es una breve información que se utiliza para autenticar y verificar la integridad de un mensaje. En otras palabras, se usa para confirmar que el mensaje proviene del remitente indicado (autenticidad) y que no ha sido modificado (integridad). El valor MAC permite a los verificadores (que también poseen una clave secreta) detectar cualquier cambio en el contenido del mensaje.
Terminología
El término código de integridad del mensaje ( MIC ) se usa frecuentemente en lugar del término MAC , especialmente en comunicaciones [ 1 ], para distinguirlo del uso de este último como control de acceso al medio (como en la dirección MAC ). Sin embargo, algunos autores [ 2 ] usan MIC para referirse a un resumen del mensaje , cuyo objetivo es identificar de forma única pero opaca un solo mensaje. Por lo tanto, se recomienda evitar el término código de integridad del mensaje (MIC) y, en su lugar, usar suma de verificación , código de detección de errores , hash , hash con clave , código de autenticación de mensajes o suma de verificación protegida . [ 3 ]
Definiciones
De manera informal, un sistema de código de autenticación de mensajes consta de tres algoritmos:
- Un algoritmo de generación de claves selecciona una clave del espacio de claves de forma uniforme y aleatoria.
- Un algoritmo de generación de MAC devuelve de forma eficiente una etiqueta a partir de la clave y el mensaje.
- Un algoritmo de verificación comprueba de forma eficiente la autenticidad del mensaje a partir de la misma clave y etiqueta. Es decir, devuelve " aceptado" cuando el mensaje y la etiqueta no han sido manipulados ni falsificados, y devuelve " rechazado" en caso contrario .
Un código de autenticación de mensajes seguro debe resistir los intentos de un adversario de falsificar etiquetas, para mensajes arbitrarios, seleccionados o todos los mensajes , incluso en condiciones de mensaje conocido o elegido . Debe ser computacionalmente inviable calcular una etiqueta válida del mensaje dado sin conocer la clave, incluso si, en el peor de los casos, suponemos que el adversario conoce la etiqueta de cualquier mensaje excepto el que está en cuestión. [ 4 ]
Formalmente, un sistema de código de autenticación de mensajes ( MAC ) es una tripleta de algoritmos eficientes [ 5 ] ( G , S , V ) que satisfacen:
- G (generador de claves) proporciona la clave k en la entrada 1 n , donde n es el parámetro de seguridad .
- S (signing) genera una etiqueta t en la clave k y la cadena de entrada x .
- V (verificación) emite como aceptado o rechazado las entradas: la clave k , la cadena x y la etiqueta t .
S y V deben cumplir lo siguiente:
- Pr [ k ← G (1 n ), V ( k , x , S ( k , x ) ) = aceptado ] = 1 . [ 6 ]
Un MAC es infalsificable si por cada adversario eficiente A
- Pr [ k ← G (1 n ), ( x , t ) ← A S ( k , · ) (1 n ), x ∉ Query( A S ( k , · ) , 1 n ), V ( k , x , t ) = accepted ] < negl( n ) ,
donde A S ( k , · ) denota que A tiene acceso al oráculo S ( k , · ), y Query( A S ( k , · ) , 1 n ) denota el conjunto de consultas sobre S realizadas por A , que conoce n . Claramente requerimos que ningún adversario pueda consultar directamente la cadena x en S , ya que de lo contrario podría obtener fácilmente una etiqueta válida. [ 7 ]
Seguridad
Si bien las funciones MAC son similares a las funciones hash criptográficas , poseen requisitos de seguridad diferentes. Para ser considerada segura, una función MAC debe resistir la falsificación existencial bajo ataques de mensajes elegidos . Esto significa que, incluso si un atacante tiene acceso a un oráculo que posee la clave secreta y genera códigos MAC para los mensajes que el atacante elija, no puede adivinar el código MAC de otros mensajes (que no se utilizaron para consultar el oráculo) sin realizar cálculos computacionales inviables.
Los MAC se diferencian de las firmas digitales en que los valores MAC se generan y verifican utilizando la misma clave secreta. Esto implica que el remitente y el receptor de un mensaje deben acordar la misma clave antes de iniciar las comunicaciones, como ocurre con el cifrado simétrico . Por la misma razón, los MAC no proporcionan la propiedad de no repudio que ofrecen las firmas, especialmente en el caso de una clave secreta compartida en toda la red : cualquier usuario que pueda verificar un MAC también es capaz de generar MAC para otros mensajes. En cambio, una firma digital se genera utilizando la clave privada de un par de claves, que es criptografía de clave pública. [ 5 ] Dado que esta clave privada solo es accesible para su titular, una firma digital prueba que un documento fue firmado únicamente por ese titular. Por lo tanto, las firmas digitales sí ofrecen no repudio. Sin embargo, el no repudio puede ser proporcionado por sistemas que vinculan de forma segura la información de uso de la clave a la clave MAC; La misma clave está en posesión de dos personas, pero una tiene una copia que puede usarse para generar la dirección MAC, mientras que la otra tiene una copia en un módulo de seguridad de hardware que solo permite la verificación de la dirección MAC. Esto es algo común en el sector financiero.
Si bien el objetivo principal de un MAC es prevenir la falsificación por parte de adversarios que desconocen la clave secreta, esto resulta insuficiente en ciertos escenarios. Cuando un adversario puede controlar la clave MAC, se requieren garantías más sólidas, similares a la resistencia a colisiones o la seguridad de preimagen en las funciones hash. En el caso de los MAC, estos conceptos se conocen como seguridad de compromiso y seguridad de descubrimiento de contexto . [ 8 ]
Implementación
Los algoritmos MAC pueden construirse a partir de otras primitivas criptográficas, como funciones hash criptográficas (como en el caso de HMAC ) o de algoritmos de cifrado por bloques ( OMAC , CCM , GCM y PMAC ). Sin embargo, muchos de los algoritmos MAC más rápidos, como UMAC - VMAC y Poly1305-AES , se construyen basándose en el hash universal . [ 9 ]
Los algoritmos hash con clave intrínseca, como SipHash , también son por definición MAC; pueden ser incluso más rápidos que los MAC basados en hash universal. [ 10 ]
Además, el algoritmo MAC puede combinar deliberadamente dos o más primitivas criptográficas para mantener la protección incluso si posteriormente se descubre que una de ellas es vulnerable. Por ejemplo, en las versiones de Transport Layer Security (TLS) anteriores a la 1.2, los datos de entrada se dividen en dos mitades que se procesan con una primitiva de hash diferente ( SHA-1 y SHA-2 ) y luego se combinan mediante la operación XOR para generar el MAC.
MAC de una sola vez
El hash universal , y en particular las funciones hash independientes por pares, proporcionan un código de autenticación de mensajes seguro siempre que la clave se utilice como máximo una vez. Esto puede considerarse como el cifrado de un solo uso para la autenticación. [ 11 ]
La función hash independiente por pares más simple se define mediante la clave aleatoria, key = ( a , b ) , y la etiqueta MAC para un mensaje m se calcula como tag = ( am + b ) mod p , donde p es primo.
En términos más generales, las funciones hash independientes de k proporcionan un código de autenticación de mensajes seguro siempre que la clave se utilice menos de k veces para funciones hash independientes de k vías.
Los códigos de autenticación de mensajes y la autenticación del origen de los datos también se han analizado en el marco de la criptografía cuántica . A diferencia de otras tareas criptográficas, como la distribución de claves, para una clase bastante amplia de MAC cuánticos se ha demostrado que los recursos cuánticos no ofrecen ninguna ventaja sobre los MAC clásicos de un solo uso incondicionalmente seguros. [ 12 ]
Estándares
Existen diversos estándares que definen los algoritmos MAC. Estos incluyen:
- FIPS PUB 113 Autenticación de datos informáticos , [ 13 ] retirado en 2002, [ 14 ] define un algoritmo basado en DES .
- FIPS PUB 198-1 El código de autenticación de mensajes con hash clave (HMAC) [ 15 ]
- Funciones derivadas de SHA-3 de NIST SP800-185 : cSHAKE, KMAC, TupleHash y ParallelHash [ 16 ]
- ISO/IEC 9797-1 Mecanismos que utilizan un cifrado de bloques [ 17 ]
- Mecanismos ISO /IEC 9797-2 que utilizan una función hash dedicada [ 18 ]
- ISO /IEC 9797-3 Mecanismos que utilizan una función hash universal [ 19 ]
- ISO /IEC 29192-6 Criptografía ligera - Códigos de autenticación de mensajes [ 20 ]
Las normas ISO/IEC 9797-1 y -2 definen modelos y algoritmos genéricos que pueden utilizarse con cualquier cifrado por bloques o función hash, y con diversos parámetros. Estos modelos y parámetros permiten definir algoritmos más específicos mediante la especificación de dichos parámetros. Por ejemplo, el algoritmo FIPS PUB 113 es funcionalmente equivalente al algoritmo MAC 1 de la norma ISO/IEC 9797-1 con el método de relleno 1 y el algoritmo de cifrado por bloques DES.
Un ejemplo de uso de MAC

[ 21 ] En este ejemplo, el remitente de un mensaje lo procesa mediante un algoritmo MAC para generar una etiqueta de datos MAC. El mensaje y la etiqueta MAC se envían al receptor. Este, a su vez, procesa la parte del mensaje de la transmisión mediante el mismo algoritmo MAC con la misma clave, generando una segunda etiqueta de datos MAC. El receptor compara la primera etiqueta MAC recibida con la segunda etiqueta MAC generada. Si son idénticas, el receptor puede asumir con seguridad que el mensaje no fue alterado ni manipulado durante la transmisión (integridad de los datos).
Sin embargo, para que el receptor pueda detectar ataques de repetición , el mensaje debe contener datos que garanticen que solo se puede enviar una vez (por ejemplo, marca de tiempo, número de secuencia o el uso de un MAC de un solo uso ). De lo contrario, un atacante podría, sin siquiera comprender su contenido, grabar el mensaje y reproducirlo posteriormente, obteniendo el mismo resultado que el remitente original.
Véase también
- Suma de verificación
- CMAC
- HMAC (código de autenticación de mensajes basado en hash)
- MAA
- MAC de tejón MMH
- Poli1305
- Cifrado autenticado
- UMAC
- VMAC
- SipHash
- KMAC
Notas
- ↑ Norma IEEE para Tecnología de la Información - Telecomunicaciones e Intercambio de Información entre Sistemas - Redes de Área Local y Metropolitana - Requisitos Específicos - Parte 11: Control de Acceso al Medio (MAC) y Especificaciones de la Capa Física (PHY) de Redes de Área Local Inalámbricas (PDF) . (Revisión de 2007). IEEE-SA . 12 de junio de 2007. doi : 10.1109/IEEESTD.2007.373646 . ISBN 978-0-7381-5656-9Archivado del original (PDF) el 13 de octubre de 2008.
- ↑ "CS 513 Seguridad del sistema: hashes y resúmenes de mensajes" . www.cs.cornell.edu . Consultado el 20 de diciembre de 2023 .
- ↑ R. Shirey (agosto de 2007). Glosario de seguridad de Internet, versión 2. Grupo de trabajo de redes. doi : 10.17487/RFC4949 . RFC 4949 .Informativo. Sustituye a RFC 2828 .
- ↑ Se supone que el adversario más fuerte tiene acceso al algoritmo de firma sin conocer la clave. Sin embargo, su mensaje falsificado final debe ser diferente de cualquier mensaje que haya elegido para consultar el algoritmo de firma previamente. Véanse las discusiones de Pass antes de la definición 134.2.
- 1 2 Teóricamente, un algoritmo eficiente se ejecuta en un tiempo polinomial probabilístico.
- ↑ Aprobar, def 134.1
- ↑ Aprobar, def 134.2
- ^ Bhaumik, Ritam; Chakraborty, Bishwajit; Choi, Wonseok; Dutta, Avijit; Govinden, Jérôme; Shen, Yaobin (2024). "El compromiso de seguridad de los 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.
- ↑ "VMAC: Código de autenticación de mensajes mediante hash universal" . Grupo de trabajo CFRG . Consultado el 16 de marzo de 2010 .
- ↑ Jean-Philippe Aumasson y Daniel J. Bernstein (18 de septiembre de 2012). "SipHash: un PRF rápido de entrada corta" (PDF) .
- ↑ Simmons, Gustavus (1985). "Teoría de la autenticación/teoría de la codificación". Avances en criptología: Actas de CRYPTO 84. Berlín: Springer. págs. 411–431 .
- ↑ Nikolopoulos, Georgios M.; Fischlin, Marc (2020). "Autenticación del origen de datos segura desde el punto de vista de la teoría de la información con recursos cuánticos y clásicos" . Cryptography . 4 (4): 31. arXiv : 2011.06849 . doi : 10.3390/cryptography4040031 . S2CID 226956062 .
- ↑ "FIPS PUB 113 Autenticación de datos informáticos " . Archivado del original el 27 de septiembre de 2011. Consultado el 10 de octubre de 2010 .
- ↑ "Publicaciones de estándares federales de procesamiento de información, FIPS retiradas listadas por número" . Archivado del original el 1 de agosto de 2010. Recuperado el 10 de octubre de 2010 .
- ↑ " El código de autenticación de mensajes basado en hash con clave (HMAC) " (PDF) . Consultado el 20 de diciembre de 2023 .
- ↑ Funciones derivadas de SHA-3 nvlpubs.nist.gov
- ↑ "ISO/IEC 9797-1:2011" . ISO . Consultado el 20 de diciembre de 2023 .
- ↑ "ISO/IEC 9797-2:2011" . ISO . Consultado el 20 de diciembre de 2023 .
- ↑ "ISO/IEC 9797-3:2011" . ISO . Consultado el 20 de diciembre de 2023 .
- ↑ "ISO/IEC 29192-6:2019" . ISO . Consultado el 20 de diciembre de 2023 .
- ↑ "Descripción general de la seguridad de Mac", Mac® Security Bible , Wiley Publishing, Inc., 1 de noviembre de 2011, págs. 1–26 , doi : 10.1002/9781118257739.ch1 , ISBN 9781118257739
Referencias
- Goldreich, Oded (2001), Fundamentos de criptografía I: Herramientas básicas , Cambridge: Cambridge University Press, ISBN 978-0-511-54689-1
- Goldreich, Oded (2004), Fundamentos de criptografía II: Aplicaciones básicas (1.ª ed. publ .), Cambridge [ua]: Cambridge Univ. Press, ISBN 978-0-521-83084-3
- Pass, Rafael, Un curso de criptografía (PDF) , consultado el 31 de diciembre de 2015.[ 1 ]
Enlaces externos
- Entrada de RSA Laboratories en MACs
- Conferencia de Ron Rivest sobre MACs
- ↑ 11-12-20C8
- Códigos de autenticación de mensajes
- Detección y corrección de errores