Keyed-Hash Message Authentication Code

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis HMAC)
Aller à : navigation, rechercher

Un HMAC, de l'anglais keyed-hash message authentication code (code d'authentification d'une empreinte cryptographique de message avec clé), est un type de code d'authentification de message (CAM), ou MAC en anglais (Message Authentication Code), calculé en utilisant une fonction de hachage cryptographique en combinaison avec une clé secrète. Comme avec n'importe quel CAM, il peut être utilisé pour vérifier simultanément l'intégrité de données et l'authenticité d'un message. N'importe quelle fonction itérative de hachage, comme MD5 ou SHA-1, peut être utilisée dans le calcul d'un HMAC ; le nom de l'algorithme résultant est HMAC-MD5 ou HMAC-SHA-1. La qualité cryptographique du HMAC dépend de la qualité cryptographique de la fonction de hachage et de la taille et la qualité de la clé.

Une fonction itérative de hachage découpe un message en blocs de taille fixe et itère dessus avec une fonction de compression. Par exemple, MD5 et SHA-1 opèrent sur des blocs de 512 bits. La taille de la sortie HMAC est la même que celle de la fonction de hachage (128 ou 160 bits dans les cas du MD5 et SHA-1), bien qu'elle puisse être tronquée si nécessaire.

Construction[modifier | modifier le code]

La fonction HMAC est définie comme suit :

\operatorname{HMAC}_K(m) = h\Bigg((K \oplus opad) \;||\; h\Big((K \oplus ipad) \;||\; m\Big)\Bigg)

avec :

  • h : une fonction de hachage itérative,
  • K : la clé secrète complétée avec des zéros pour qu'elle atteigne la taille de bloc de la fonction h
  • m : le message à authentifier,
  • "||" désigne une concaténation et "\oplus" un « ou » exclusif,
  • ipad et opad, chacune de la taille d'un bloc, sont définies par : ipad = 0x363636...3636 et opad = 0x5c5c5c...5c5c. Donc, si la taille de bloc de la fonction de hachage est 512, ipad et opad sont 64 répétitions des octets, respectivement, 0x36 et 0x5c.

La construction et l'analyse des HMACs ont été publiées pour la première fois en 1996 par Mihir Bellare, Ran Canetti, et Hugo Krawczyk (qui a écrit la RFC 2104). FIPS PUB 198 généralise et standardise l'utilisation des HMACs. HMAC-SHA-1 et HMAC-MD5 sont utilisés dans les protocoles IPsec et TLS.

Liens externes[modifier | modifier le code]

Article connexe[modifier | modifier le code]

Références[modifier | modifier le code]

  • (en) Mihir Bellare, Ran Canetti et Hugo Krawczyk, Keying Hash Functions for Message Authentication, CRYPTO 1996, p. 1–15 (PS or PDF).
  • (en) Mihir Bellare, Ran Canetti et Hugo Krawczyk, Message authentication using hash functions: The HMAC construction, CryptoBytes 2(1), été 1996 (PS or PDF).