HMAC
![](https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/OpenSSL-funcion_HMAC.jpg/400px-OpenSSL-funcion_HMAC.jpg)
HMAC (Hashing for Message Authentication Codes) [RFC-2104]
Para proveer un modo de chequear integridad de la información transmitida o almacenada en un medio no confiable es necesario un mecanismo que permita compararla contra algo que se considere válido. Para esto se estandarizó un procedimiento basado en una clave secreta usualmente llamado Código de Autenticación de Mensajes (MAC... no confundir con Medium Access Control).
El empleo típico de estos mecanismos es a través de dos partes que comparten una clave secreta para validar la información transmitida entre ellas. HMAC propone el empleo de criptografía aplicada a funciones Hash (o resúmenes). En esta RFC, estandariza el empleo de HMAC con las funciones Hash definidas como MD5 (Message Digest versión 5) [RFC-1321] y SHA-1 (Standard Hash Algorithm Versión 1) [FIPS 180-1]. También hace mención al algoritmo propuesto por RIPE denominado RIPEMD-128/160. Hoy ya ha salido la nueva versión SHA-256, llegando hasta SHA-2048.
HMAC requiere una función Hash (H) que se encargará de comprimir un texto de longitud finita por medio de iteraciones de una función de compresión básica sobre los bloques de datos (B = 64 Byte), y una clave secreta (K); y por medio de ambas se obtendrá un resumen de longitud fija (L), que será de 16 Byte para MD5 y 20 Byte para SHA-1.
Esta función Hash es llamada “One Way” pues no es posible a través del resumen de salida obtener el texto de entrada, también resultará computacionalmente imposible obtener un valor de salida igual a través de otro valor de entrada, como así tampoco desde un valor de salida ya calculado, obtener otro valor de entrada diferente al verdadero.
En nuestro libro Seguridad por Niveles que puedes descargar gratuitamente desde nuestra web DarFe.es encontrarás desarrollado el tema en el capítulo 8:
8.1.8. Métodos de verificación de integridad (HMAC – SHA – MD5) 1) HMAC (Hashing for Message Authentication Codes) [RFC-2104]