Qu'est-ce que HMAC ?

Code d'authentification de message construit à partir d'une fonction de hachage et d'une clé partagée. À l'aide de deux valeurs dérivées de la clé, K ⊕ ipad et K ⊕ opad, il applique deux fois la fonction de hachage : HMAC(K, m) = H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ m)). Contrairement au simple hachage de la clé suivie du message, il n'est pas vulnérable aux attaques par extension de longueur, même avec une fonction de hachage à construction de Merkle–Damgård comme SHA-256. Il est défini par la RFC 2104 et largement utilisé dans TLS, IPsec, JWT et la fonction de dérivation de clé HKDF.

Nom japonais: HMAC

« HMAC » apparaît dans 4 questions d'entraînement réparties sur 2 thèmes, dont Bases et applications de la cryptographie, Bases de la sécurité de l'information.

Domaine: Bases et applications de la cryptographie

S'entraîner : questions sur HMAC

Quelle affirmation compare correctement un code d'authentification de message (MAC) et une signature numérique ?

  1. AUn MAC peut être vérifié par n'importe qui avec une clé publique ; son effet de non-répudiation est donc plus fort que celui d'une signature numérique
  2. BUn MAC est créé avec une clé secrète partagée par l'émetteur et le destinataire ; il permet de détecter les falsifications, mais comme le destinataire peut aussi créer le même MAC, il ne peut pas assurer la non-répudiation, c'est-à-dire prouver à un tiers que c'est l'émetteur qui a créé le message
  3. CUn MAC se contente de calculer une valeur de hachage sans clé ; même si un attaquant modifie le message et recalcule le MAC, le destinataire peut s'en apercevoir
Afficher la réponse et l'explication

Réponse : B. Un MAC est créé avec une clé secrète partagée par l'émetteur et le destinataire ; il permet de détecter les falsifications, mais comme le destinataire peut aussi créer le même MAC, il ne peut pas assurer la non-répudiation, c'est-à-dire prouver à un tiers que c'est l'émetteur qui a créé le message

Un code d'authentification de message (MAC) est une courte valeur calculée à partir d'un message et d'une clé secrète ; HMAC, qui utilise une fonction de hachage, est courant. Le destinataire le recalcule avec la même clé et compare : s'ils concordent, le message vient de quelqu'un qui connaît la clé et n'a pas été modifié en chemin. Un attaquant qui ne connaît pas la clé ne peut pas produire un MAC correct pour un message modifié. Mais le destinataire détient la même clé et peut lui aussi créer des MAC. Il ne peut donc pas prouver à un tiers que c'est l'émetteur qui a créé le message : un MAC n'assure pas la non-répudiation. Une signature numérique ne peut être créée qu'avec la clé privée de l'émetteur et peut être vérifiée par n'importe qui avec la clé publique ; elle assure donc la non-répudiation. Les MAC, en revanche, sont légers à calculer et largement utilisés pour les vérifications entre les deux parties, comme la détection des falsifications sur chaque paquet d'une connexion. Une simple valeur de hachage sans clé peut être recalculée par un attaquant en même temps que le message modifié ; elle ne permet donc pas de détecter une falsification délibérée.

Utiliser comme étiquette de détection des falsifications la valeur de hachage SHA-256(K ‖ m) d'une clé secrète K suivie d'un message m est considéré comme dangereux. Quelle en est la raison ?

  1. ASi l'étiquette et la longueur de l'entrée sont connues, on peut calculer sans connaître K l'étiquette d'un message obtenu en ajoutant des données après m
  2. BOn connaît une méthode efficace pour retrouver, à partir de la sortie de SHA-256, la seule partie K placée au début de l'entrée
  3. CPlacer la clé K devant le message allonge l'entrée, et avec SHA-256 cela rend les collisions plus faciles à trouver
Afficher la réponse et l'explication

Réponse : A. Si l'étiquette et la longueur de l'entrée sont connues, on peut calculer sans connaître K l'étiquette d'un message obtenu en ajoutant des données après m

Dans une fonction de hachage à construction de Merkle–Damgård comme SHA-256, la valeur de hachage produite est exactement l'état interne après le traitement du dernier bloc. Un attaquant peut donc prendre l'étiquette comme état interne et poursuivre le calcul, obtenant sans connaître K la valeur de hachage d'un message formé de K ‖ m suivi d'un remplissage de forme fixe et de données arbitraires (attaque par extension de longueur). HMAC, qui utilise deux valeurs dérivées de la clé et hache une nouvelle fois la valeur de hachage interne avec la clé, empêche cette attaque. SHA-3 n'est pas vulnérable à cette attaque par construction ; c'est pourquoi KMAC, qui se contente de placer la clé en tête, a aussi été normalisé.

« HMAC » dans les explications

Questions mentionnant « HMAC » (4)

  1. Quelle affirmation compare correctement un code d'authentification de message (MAC) et une signature numérique ?
  2. Utiliser comme étiquette de détection des falsifications la valeur de hachage SHA-256(K ‖ m) d'une clé secrète K suivie d'un message m est considéré comme dangereux. Quelle en est la raison ?
  3. Dans des protocoles comme TLS 1.3, le secret partagé obtenu par un échange de clés ECDHE n'est pas utilisé directement comme clé de chiffrement : les clés sont produites en le faisant passer par une fonction de dérivation de clé (KDF) comme HKDF. Quelle en est une raison appropriée ?
  4. Quelle combinaison indique correctement ce que spécifie la suite cryptographique TLS_AES_128_GCM_SHA256 de TLS 1.3 ?

Termes associés

Fonction de hachage TLS (Transport Layer Security) Échange de clés Diffie-Hellman Code d'authentification de message Signature numérique Entropie de l'information AES (Advanced Encryption Standard) Chiffrement authentifié (AEAD) Cryptosystème RSA Agilité cryptographique (crypto-agilité)

Retour au glossaire