Existen por fuera de los criptosistemas. Es una terna de algoritmos:
- Gen (Algoritmo de generación de claves)
- Mac (Etiquetado):
- La idea es que sea más chica que el mensaje original
- Vrfy (Verificación):
De esta forma:
- La salida de Gen define el espacio de claves.
- Mac es una función no deterministica
- Vrfy retorna 0 (invalido) o 1 (valido)
- Para todo y validos:
Seguridad de un MAC
![[Pruebas de Seguridad#message-authentication-experiment—textmac-forge_a-pi|Message Authentication Experiment ]]
Ataques de Replay
Los MACs no ofrecen protección contra un ataque de replay, donde se repite un mensaje enviado/almacenado anteriormente. Esto debe ser solucionado explícitamente en los protocolos, mediante números de secuencia o timestamps.
CBC-MAC
Podemos construir un MAC a partir de una primitiva de cifrado de bloque: Sea una función pseudoaleatoria.
- Gen:
- Mac:
- Sea , sea
- Vrfy:
Condición de Infalsificabilidad
Es infalsificable si solo se permiten mensajes de la misma longitud.
Extensiones
Las siguientes extensiones son seguras para mensajes de longitud arbitraria:
- En vez de utilizar , utilizamos como clave para la función .
- Computar
- Calcular ,
- Computar
- Utilizar dos claves y : Como esto requiere claves del doble de longitud no se usa mucho.
- Calcular
WARNING
La variante no es segura
HMAC
Funciones de Hash y MACs
Es posible construir un MAC a partir de una función de Hash. Dado una función de hash libre de colisiones, la función es infalsificable (pasa la prueba MAC-Forge), donde :
- GEN:
- MAC: , donde y .
El valor de y no importa, siempre y cuando sean diferentes.
Enlace al original