Message authentication code
En criptografía, un '''Message authentication code''', de cutiu llamáu poles sos sigles '''MAC''' o pola so traducción al asturianu '''Códigu de Autenticación de Mensaxe''', ye una porción d'información utilizada pa autenticar un mensaxe.

Los valores MAC calcular por aciu l'aplicación d'una [[función hash criptográfica]] con clave secreta ''K'', que namái conocen el remitente y destinatario, pero non los atacantes. Dizse que la función hash tien que ser [[función hash criptográfica|criptográfica]] porque tien que cumplir ciertes [[#propiedá de seguridá|propiedá de seguridá]] que les faen resistentes frente ataques d'adversarios. [[Matemática]]mente la [[Función matemática|función]] [[función hash|hash]] [[función hash criptográfica|criptográfica]] toma dos argumentos: una clave ''K'' de tamañu fixu y un mensaxe ''M'' de llargor arbitrariu. La resultancia ye un códigu MAC de llargor fixu:

:''MAC'' = ''C''<sub>K</sub>(''M'')

onde:
* ''M'' ye un mensaxe de llargor arbitrariu *
''C''<sub>K</sub> ye la función que tresforma'l mensaxe nun valor ''MAC'' y qu'utiliza una clave secreta ''K'' como parámetru *
''MAC'' ye'l valor MAC calculáu de llargor fixu

Si'l valor MAC unviáu coincide col valor que'l destinatario calcula, ésti puede garantizar que:
* El mensaxe nun foi alteriáu *
El mensaxe provién del remitente indicáu nel mensaxe *
Si'l mensaxe inclúi un númberu de secuencia, que'l mensaxe sigue la secuencia correuta

== Seguridá ==

=== Función MAC ideal ===

Defínese la función MAC ideal como un mapeo aleatoriu de tolos posibles valores del mensaxe d'entrada ''M'' en salíes de tamañu de ''n'' bits.

=== Propiedá de seguridá ===

<ref>A. J. Menezes et all, "[http://www.cacr.math.uwaterloo.ca/hac/ Handbook of Applied Cryptography]", CRC Press 2011</ref>Por que una función MAC pueda ser usada ye necesariu que sía [[función hash#Resistencia a la computación de nuevos valores hash|resistente a la computación de nuevos valores hash]].

== Tipos de funciones MAC ==

Anguaño, esisten 3 grandes grupos de funciones MAC: 

* '''CBC-MAC''': La idea detrás d'esti algoritmu ye la de convertir un algoritmu de cifráu simétricu nuna función MAC. El funcionamientu básicu consiste en cifrar el mensaxe usando un algoritmu en manera CBC y tirar tou la resultancia de testu cifráu a esceición del últimu bloque. 
* '''[[HMAC]]''': Yá que una función MAC ye un mapeo aleatoriu, y que les funciones hash pórtense como tales, podemos esplotar la idea d'utilizar una función hash pa implementar una función MAC. La opción más popular anguaño ye la d'usar HMAC-SHA-256. 
* '''UMAC''': Les funciones UMAC parten de la premisa de que l'atacante precisa interactuar col sistema pa comprobar si la resultancia MAC que xeneró ye válidu o non. Esto ye, nun esiste nada asemeyao a un ataque refechu off-line contra les funciones MAC. Asina, argumenten que puede amenorgase la resultancia a tan solo 64 bits. Sicasí, nun esiste un estándar bien definíu de funciones MAC como asocede coles funciones hash, lo que tien efeutos contraproducentes al llargu plazu dende'l puntu de vista de la implementación.

== Debilidá. Aplicación del principiu de Horton<ref>J. Weiss,"Java cryptography extensions: practical guide for programmers",MORGAN KAUFMANN PUBLISHERS 2004</ref><ref name="Li-Chang Lo_1">J. Li-Chang Lo,"A framework for cryptography algorithms on mobile devices",Universy of Pretoria 2007</ref> ==
L'usu de valores MAC pa autenticar aprove cierta seguridá pero nun ye la panacea. Por casu podría haber un ataque que consistiera n'interceptar el mensaxe y el valor MAC pa poder reutilizalo pa autenticarse.

Polo xeneral el [[principiu de Horton]] establez que se debe autenticar el significáu del mensaxe, y non el códigu del mensaxe. Aplicando'l principiu a autenticación de mensaxe con MAC, deberíamos autenticar non yá el valor MAC, sinón tamién cierta información que sía usada pa formar un valor MAC que nun sía ambiguu. Por casu, pue ser bona idea incorporar dalgún tipu de sellu de tiempu cuando calculo'l valor MAC (por casu concatenándolo al mensaxe). Esti sellu de tiempu unviar al verificador. Si'l verificador recibe un sellu de tiempu antiguu entós decide que ye falsu (caducó). Si l'adversariu decide actualizar el sellu de tiempu entós el valor MAC interceptáu yá nun sería válidu pa manda-y lo al verificador.

Otru sistemes proponen<ref name="Li-Chang Lo_1">J. Li-Chang Lo,"A framework for cryptography algorithms on mobile devices",Universy of Pretoria 2007</ref> concatenar al mensaxe (pa calcular el valor MAC) ciertu datos relativos al contestu nel que se ta (númberu de mensaxe, tamaños de campos negociaos, númberu de versión del protocolu,...). Estos datos nun habría qu'unvia-y los al verificador porque yá tán nel contestu y conocer.

== Aplicaciones ==

Les MAC suélense usar para [[autenticación]] (d'ende'l so nome). El que se quier autenticar y el verificador comparten la clave de la función MAC y caltener de callao. D'esta forma cuando'l verificador recibe'l valor MAC puede verificar si esi valor MAC corresponder col que se tien que xenerar a partir d'un mensaxe dau.

Hai dos formes principales de funcionar, según onde se xenere'l mensaxe:
* El mensaxe ye xeneráu pol que se quier autenticar y dempués ésti manda al verificador el mensaxe y el valor MAC asociáu. Nel pasu siguiente'l verificador verifica la validez del valor MAC y al empar asegúrase de la integridá del mensaxe recibíu.
* El mensaxe ye xeneráu pol verificador y mándase-y al que se quier autenticar por que ésti xenere'l valor MAC y mandar al verificador. Esti tipu de protocolu encuadrar nos llamada [[protocolo desafío-respuesta]]

== Ver tamién ==
* [[Función hash criptográfica]]
* [[Data Authentication Code]], un [[algoritmu]] de cálculu de valores MAC d'[[ANSI]] basáu nel [[cifrador simétricu]] [[Data Encryption Standard|DES]]
* [[UMAC]]
* [[HMAC]]
* [[CMAC]]
* [[Poly1305-AES]]
* [[Poly1305-AED]]
* [[Hash]]

== Referencies ==
{{llistaref}}


{{Tradubot|Message authentication code}}

{{control d'autoridaes}}
[[Categoría:Criptografía]]
En criptografía, un Message authentication code, de cutiu llamáu poles sos sigles MAC o pola so traducción al asturianu Códigu de Autenticación de Mensaxe, ye una porción d'información utilizada pa autenticar un mensaxe.

Los valores MAC calcular por aciu l'aplicación d'una función hash criptográfica con clave secreta K, que namái conocen el remitente y destinatario, pero non los atacantes. Dizse que la función hash tien que ser criptográfica porque tien que cumplir ciertes propiedá de seguridá que les faen resistentes frente ataques d'adversarios. Matemáticamente la función hash criptográfica toma dos argumentos: una clave K de tamañu fixu y un mensaxe M de llargor arbitrariu. La resultancia ye un códigu MAC de llargor fixu:

MAC = CK(M)

onde:
 M ye un mensaxe de llargor arbitrariu *
CK ye la función que tresforma'l mensaxe nun valor MAC y qu'utiliza una clave secreta K como parámetru *
MAC ye'l valor MAC calculáu de llargor fixu

Si'l valor MAC unviáu coincide col valor que'l destinatario calcula, ésti puede garantizar que:
 El mensaxe nun foi alteriáu *
El mensaxe provién del remitente indicáu nel mensaxe *
Si'l mensaxe inclúi un númberu de secuencia, que'l mensaxe sigue la secuencia correuta

 Seguridá 

 Función MAC ideal 

Defínese la función MAC ideal como un mapeo aleatoriu de tolos posibles valores del mensaxe d'entrada M en salíes de tamañu de n bits.

 Propiedá de seguridá 

A. J. Menezes et all, "Handbook of Applied Cryptography", CRC Press 2011Por que una función MAC pueda ser usada ye necesariu que sía resistente a la computación de nuevos valores hash.

 Tipos de funciones MAC 

Anguaño, esisten 3 grandes grupos de funciones MAC: 

 CBC-MAC: La idea detrás d'esti algoritmu ye la de convertir un algoritmu de cifráu simétricu nuna función MAC. El funcionamientu básicu consiste en cifrar el mensaxe usando un algoritmu en manera CBC y tirar tou la resultancia de testu cifráu a esceición del últimu bloque. 
 HMAC: Yá que una función MAC ye un mapeo aleatoriu, y que les funciones hash pórtense como tales, podemos esplotar la idea d'utilizar una función hash pa implementar una función MAC. La opción más popular anguaño ye la d'usar HMAC-SHA-256. 
 UMAC: Les funciones UMAC parten de la premisa de que l'atacante precisa interactuar col sistema pa comprobar si la resultancia MAC que xeneró ye válidu o non. Esto ye, nun esiste nada asemeyao a un ataque refechu off-line contra les funciones MAC. Asina, argumenten que puede amenorgase la resultancia a tan solo 64 bits. Sicasí, nun esiste un estándar bien definíu de funciones MAC como asocede coles funciones hash, lo que tien efeutos contraproducentes al llargu plazu dende'l puntu de vista de la implementación.

 Debilidá. Aplicación del principiu de HortonJ. Weiss,"Java cryptography extensions: practical guide for programmers",MORGAN KAUFMANN PUBLISHERS 2004J. Li-Chang Lo,"A framework for cryptography algorithms on mobile devices",Universy of Pretoria 2007 
L'usu de valores MAC pa autenticar aprove cierta seguridá pero nun ye la panacea. Por casu podría haber un ataque que consistiera n'interceptar el mensaxe y el valor MAC pa poder reutilizalo pa autenticarse.

Polo xeneral el principiu de Horton establez que se debe autenticar el significáu del mensaxe, y non el códigu del mensaxe. Aplicando'l principiu a autenticación de mensaxe con MAC, deberíamos autenticar non yá el valor MAC, sinón tamién cierta información que sía usada pa formar un valor MAC que nun sía ambiguu. Por casu, pue ser bona idea incorporar dalgún tipu de sellu de tiempu cuando calculo'l valor MAC (por casu concatenándolo al mensaxe). Esti sellu de tiempu unviar al verificador. Si'l verificador recibe un sellu de tiempu antiguu entós decide que ye falsu (caducó). Si l'adversariu decide actualizar el sellu de tiempu entós el valor MAC interceptáu yá nun sería válidu pa manda-y lo al verificador.

Otru sistemes proponenJ. Li-Chang Lo,"A framework for cryptography algorithms on mobile devices",Universy of Pretoria 2007 concatenar al mensaxe (pa calcular el valor MAC) ciertu datos relativos al contestu nel que se ta (númberu de mensaxe, tamaños de campos negociaos, númberu de versión del protocolu,...). Estos datos nun habría qu'unvia-y los al verificador porque yá tán nel contestu y conocer.

 Aplicaciones 

Les MAC suélense usar para autenticación (d'ende'l so nome). El que se quier autenticar y el verificador comparten la clave de la función MAC y caltener de callao. D'esta forma cuando'l verificador recibe'l valor MAC puede verificar si esi valor MAC corresponder col que se tien que xenerar a partir d'un mensaxe dau.

Hai dos formes principales de funcionar, según onde se xenere'l mensaxe:
 El mensaxe ye xeneráu pol que se quier autenticar y dempués ésti manda al verificador el mensaxe y el valor MAC asociáu. Nel pasu siguiente'l verificador verifica la validez del valor MAC y al empar asegúrase de la integridá del mensaxe recibíu.
 El mensaxe ye xeneráu pol verificador y mándase-y al que se quier autenticar por que ésti xenere'l valor MAC y mandar al verificador. Esti tipu de protocolu encuadrar nos llamada protocolo desafío-respuesta

 Ver tamién 
 Función hash criptográfica
 Data Authentication Code, un algoritmu de cálculu de valores MAC d'ANSI basáu nel cifrador simétricu DES
 UMAC
 HMAC
 CMAC
 Poly1305-AES
 Poly1305-AED
 Hash

 Referencies 

Categoría:Criptografía