Aller au contenu
ecdsa.com

HMAC

Le code d’authentification de message à clé fondé sur le hachage de la RFC 2104 et de FIPS 198-1, calculé comme H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ m)), qui prouve l’intégrité et l’origine à quiconque partage la clé secrète.
Autres graphiesHMAC-SHA256keyed-hash message authentication codeHMAC-SHA1

HMAC fonctionne avec n’importe quelle fonction de hachage (HMAC-SHA256 donne un tag de 32 octets) et reste sûr même avec des fonctions dont la résistance aux collisions est cassée ; c’est pourquoi HMAC-SHA1 apparaît encore dans TOTP. Les clés plus longues que la taille de bloc de la fonction de hachage (64 octets pour SHA-256) sont d’abord hachées, les plus courtes complétées par des zéros ; une clé devrait avoir au moins autant de bits d’entropie que le niveau de sécurité visé. La RFC 7518 §3.2 exige des clés HS256 d’au moins 256 bits.

Usages : JWT HS256/HS384/HS512, signatures de webhooks (par exemple X-Hub-Signature-256 de GitHub et Stripe-Signature de Stripe), signature des requêtes AWS Signature Version 4, fonctionnement interne de HKDF et de PBKDF2, MAC des enregistrements TLS 1.2 et codes TOTP/HOTP. Comparez les tags avec une fonction en temps constant.

Un HMAC n’est pas une signature : chaque vérificateur détient la même clé et aurait pu produire le tag ; il n’offre donc aucune non-répudiation et ne convient pas lorsque les vérificateurs ne doivent pas pouvoir émettre de jetons. Le calculateur HMAC calcule et vérifie les tags localement.

Normes et références

Tous les termes