AccueilđŸ‡«đŸ‡·Chercher

HMAC

Un HMAC (en anglais parfois Ă©tendu en tant que keyed-hash message authentication code (code d'authentification de message de hachage Ă  clĂ©) ou hash-based message authentication code (code d'authentification de message basĂ© sur le hachage)), 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 SHA-256 ou SHA-512, peut ĂȘtre utilisĂ©e dans le calcul d'un HMAC ; le nom de l'algorithme rĂ©sultant est HMAC-SHA-256 ou HMAC-SHA-512. 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, SHA-256 opĂšre sur des blocs de 512 bits et SHA-512 sur des blocs de 1024 bits. La taille de la sortie HMAC est la mĂȘme que celle de la fonction de hachage (ici 256 ou 512 bits), bien qu'elle puisse ĂȘtre tronquĂ©e si nĂ©cessaire.

Construction

GĂ©nĂ©ration d’un HMAC SHA-1.

Un HMAC est calculé en utilisant un algorithme cryptographique qui combine une fonction de hachage cryptographique (comme SHA-256 ou SHA-512) avec une clé secrÚte. Seuls les participants à la conversation connaissent la clé secrÚte, et le résultat de la fonction de hachage dépend à présent des données d'entrée et de la clé secrÚte. Seules les parties qui ont accÚs à cette clé secrÚte peuvent calculer le condensé d'une fonction HMAC. Cela permet de vaincre les attaques de type "man-in-the-middle" et d'authentifier l'origine des données. L'intégrité est assurée quant à elle par les fonctions de hachage.

La fonction HMAC est définie comme suit :

avec :

  • h : une fonction de hachage itĂ©rative,
  • K : la clĂ© secrĂšte, hachĂ©e par la fonction h si plus longue que sa taille de bloc, puis 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 "" 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 bits, ipad et opad sont 64 rĂ©pĂ©titions des octets, respectivement, 0x36 et 0x5c.

La construction et l'analyse des HMAC 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[1]). FIPS PUB 198 généralise et standardise l'utilisation des HMAC. HMAC-SHA-1 et HMAC-MD5 sont utilisés dans les protocoles IPsec et TLS. HMAC SHA-256 est utilisé pour les JWT Json Web Tokens (RFC 7519[2]).

Comme précisé par la RFC 2104[1], les principaux objectifs de cette construction sont :

  • Utiliser, sans modifications, les fonctions de hachage disponibles. En particulier, les fonctions de hachage qui fonctionnent bien en logiciel et pour lesquelles le code est librement et largement disponible
  • PrĂ©server la performance originale de la fonction de hachage sans subir de dĂ©gradation significative.
  • Utiliser et manipuler les clĂ©s de maniĂšre simple.
  • Avoir une analyse cryptographique de la robustesse du mĂ©canisme d'authentification, basĂ©e sur des hypothĂšses raisonnables Ă  propos de la fonction de hachage sous-jacente.
  • Permettre un remplacement facile de la fonction de hachage sous-jacente dans le cas oĂč des fonctions de hachage plus rapides ou plus sĂ»res seraient disponibles par la suite.

Voir aussi

Bibliographie

  • (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).

Article connexe

Liens externes

Références

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.