Glossaire

HMAC

code d'authentification de message basé sur un hashhash à clé

HMAC est un code d'authentification de message à clé construit à partir d'une fonction de hachage cryptographique.

Définition

HMAC signifie Hash-based Message Authentication Code. Il combine une clé secrète avec une fonction de hachage cryptographique pour produire une étiquette d'authentification de taille fixe pour un message.

Un vérificateur qui possède la même clé secrète recalcule l'étiquette sur les octets exacts du message et la compare à l'étiquette reçue. Une correspondance montre que le message n'a pas été modifié et que l'étiquette a été créée par quelqu'un qui connaissait la clé partagée.

Fonctionnement

HMAC hache la clé et le message en deux étapes imbriquées avec des constantes de remplissage différentes. Cette construction est plus sûre qu'un simple hash(key || message), qui peut être vulnérable avec certaines fonctions de hachage.

La fonction de hachage choisie détermine la taille de l'étiquette: HMAC-SHA256 produit 32 octets, généralement écrits avec 64 caractères hexadécimaux. HMAC-SHA512 et HMAC-SHA384 produisent des étiquettes plus longues, tandis que HMAC-SHA1 subsiste surtout pour la compatibilité.

Usages et limites

HMAC est utilisé pour les signatures d'API, les webhooks, les données de session, JWT HS256 et les messages de protocole lorsque les deux côtés partagent déjà un secret. Il fournit intégrité et authentification, pas confidentialité: le message lui-même n'est pas caché.

Utilisez une clé secrète aléatoire, conservez les octets exacts à signer et comparez les étiquettes en temps constant dans le code applicatif. Pour une vérification publique sans secret partagé, utilisez une signature numérique.

Questions fréquentes

Non. HMAC authentifie un message mais ne le cache pas. Utilisez un chiffrement séparé lorsque le message doit rester confidentiel.

Un hash simple n'a pas de clé secrète: n'importe qui peut modifier le message et calculer un nouveau hash. HMAC exige le secret partagé pour créer une étiquette valide.

Non. La vérification recalcule l'étiquette à partir du message d'origine et de la clé secrète; elle ne récupère pas ces valeurs depuis l'étiquette.

Voir aussi
Outils associés