0Pricing
Cryptology Academy · Leçon

Construction HMAC et preuve de sécurité

Suivez la construction ipad/opad et ses propriétés de sécurité.

Construction HMAC et preuve de sécurité est une leçon Cryptology Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cryptology Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cryptology Academy comprend 4 leçons au total.

Bienvenue

HMAC est la construction standard d’un MAC à clé. Sa conception à double hachage empêche les attaques par extension de longueur et bénéficie d’une preuve formelle de sécurité qui ramène la sécurité de HMAC à celle de la fonction de hachage sous-jacente.

Construction de HMAC

HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)) Où : - K' = K complété par des zéros jusqu’à la taille de bloc B (ou H(K) si |K|>B) - ipad = 0x36 répété B fois - opad = 0x5C répété B fois

Pourquoi ipad et opad ?

ipad (0x36) et opad (0x5C) sont des constantes différentes qui garantissent que K' ⊕ ipad ≠ K' ⊕ opad. Elles créent en pratique deux clés pseudoaléatoires différentes à partir de K, utilisées pour le hachage interne et externe.

HMAC étape par étape

Pour K=secret, M=message, H=SHA256 : 1. K' = K complété jusqu’à 64 octets 2. inner_key = K' XOR ipad 3. inner_hash = SHA256(inner_key || M) 4. outer_key = K' XOR opad 5. result = SHA256(outer_key || inner_hash)

HMAC en Python

import hmac, hashlib key = b'my_secret_key' message = b'Hello, World!' mac = hmac.new(key, message, hashlib.sha256) print(mac.hexdigest()) # 64-char hex string (256 bits)

Pourquoi l’extension de longueur échoue avec HMAC

Étant donné HMAC(K,M) = SHA256(outer_key || SHA256(inner_key || M)) L’attaquant connaît SHA256(inner_key || M) = inner_hash. Mais il ne peut pas l’étendre : le hachage externe prend (outer_key || inner_hash) comme entrée, et non pas seulement inner_hash. Il ne connaît pas outer_key.

Preuve de sécurité de HMAC (Bellare)

Bellare (1996) a démontré que si la fonction de hachage H est une fonction pseudoaléatoire (PRF), alors HMAC est une PRF. En pratique : HMAC-SHA256 est aussi sûr que SHA-256 pour les propriétés de sécurité visées.

Longueur de clé pour HMAC

La clé HMAC doit avoir : - Au moins L octets (longueur de sortie du hachage) - Recommandation : exactement L octets de données aléatoires - Si key > block_size : la clé est hachée au préalable jusqu’à block_size - Utilisez os.urandom(32) pour les clés HMAC-SHA256

Troncature de HMAC

La sortie de HMAC peut être tronquée à la moitié de sa longueur sans perte de sécurité significative. TOTP/HOTP tronquent la sortie à 4 octets. Les MAC de TLS sont tronqués. Ne tronquez jamais en dessous de 80 bits (10 octets).

HMAC dans différents contextes

HMAC-SHA256 est utilisé pour : - TOTP : codes d’authentification (tronqués à 6 chiffres) - TLS 1.2 : MAC de session (inutile avec AEAD dans TLS 1.3) - JWT : signature HS256 (symétrique) - Signature des requêtes d’API : webhooks GitHub, AWS SigV4

HKDF : dérivation de clés fondée sur HMAC

HKDF(IKM, salt, info, L) utilise HMAC deux fois : 1. Extraction : PRK = HMAC-SHA256(salt, IKM) 2. Expansion : OKM = HMAC-SHA256(PRK, info || counter) Utilisé dans l’ordonnancement des clés de TLS 1.3, dans Signal et dans WireGuard pour la dérivation de clés.

Vérification rapide

À quoi sert opad (0x5C répété) dans HMAC ?

Récapitulatif

Vous avez compris la construction et la preuve de HMAC. Nous allons maintenant appliquer HMAC à la signature des requêtes d’API et voir comment empêcher les attaques par rejeu.

Questions Fréquemment Posées

La leçon « Construction HMAC et preuve de sécurité » est-elle gratuite ?

Oui — le texte complet de « Construction HMAC et preuve de sécurité » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cryptology Academy, passe à CoddyKit PRO. Le cours Cryptology Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Construction HMAC et preuve de sécurité » ?

Suivez la construction ipad/opad et ses propriétés de sécurité. Tu pratiques Cryptology Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Cryptology Academy ?

Aucune expérience préalable n'est requise. Cryptology Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Construction HMAC et preuve de sécurité » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Cryptology Academy ?

Oui. Chaque leçon Cryptology Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Concepts des MAC et attaques par extension de longueur
  2. Construction HMAC et preuve de sécurité
  3. HMAC dans les API : signature des requêtes
  4. CMAC et Poly1305 : MAC fondées sur un chiffrement par blocs
← Retour à Cryptology Academy