HMAC

La definición y el análisis de la construcción HMAC se publicó por primera vez en 1996 por Mihir Bellare, Ran Canetti y Hugo Krawczyk,[1]​ que también escribió el RFC 2104.

Asimismo, este documento define una variante llamada NMAC que rara vez, o nunca, se utiliza.

Los valores de ipad y opad no son críticos para la seguridad del algoritmo, pero se define de tal manera que tengamos una gran distancia de Hamming entre sí y para que las llaves interior y exterior tengan menos bits en común.

[cita requerida] La función de hash Keccak, que fue seleccionada por el NIST como el ganador del concurso SHA-3, no necesita este enfoque anidado y se puede utilizar para generar un MAC simplemente anteponiendo la clave del mensaje.

El ataque más común contra HMAC es la fuerza bruta para descubrir la clave secreta.

HMAC está mucho menos afectada por las colisiones que sus algoritmos de hash subyacentes solos.

[6]​[7]​[8]​ Por lo tanto, HMAC-MD5 no sufre de las mismas debilidades que se han encontrado en MD5.

En 2006, Jongsung Kim, Alex Biryukov, Bart Preneel y Seokhie Hong mostraron cómo distinguir HMAC con versiones reducidas de MD5 y SHA-1 o las versiones completas de HAVAL, MD4 y SHA-0 de una función aleatoria o HMAC con una función aleatoria.

Además, diferentes y distinguidores rectangulares pueden conducir a ataques de segunda-preimagen.

[9]​ En 2009, Xiaoyun Wang presentó un ataque de identificación en HMAC-MD5 sin utilizar claves relacionadas.

[10]​ En 2011 un informativo RFC 6151[11]​ se aprobó para actualizar las consideraciones de seguridad en MD5 y HMAC-MD5.

SHA-1 HMAC Generation.