Cryptology Academy · Leçon

Concepts des MAC et attaques par extension de longueur

Expliquez pourquoi l’ajout d’un préfixe secret est vulnérable aux extensions de longueur.

Leçon 1 sur 413 étapes

Concepts des MAC et attaques par extension de longueur est une leçon Cryptology Academy gratuite sur CoddyKit. Ceci est la leçon 1 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

Les codes d'authentification de message (MAC) assurent l'intégrité et l'authenticité au moyen d'une clé secrète partagée. Dans cette leçon, vous étudierez les MAC, leurs propriétés et une vulnérabilité critique des hachages naïvement dotés d'une clé.

Qu'est-ce qu'un MAC ?

Un MAC est un court code d'authentification calculé à partir d'un message et d'une clé secrète. Le destinataire, qui possède la même clé, recalcule le MAC et le vérifie. Cela empêche la falsification sans la clé.

MAC, hachage et signature

Hachage : aucune clé, public, assure uniquement l'intégrité. MAC : secret partagé, symétrique, assure l'intégrité et l'authenticité. Signature numérique : clé privée, asymétrique, ajoute la non-répudiation. Seules les signatures assurent la non-répudiation.

Inforgeabilité

Un MAC sûr doit être existentiellement inforgeable sous une attaque à messages choisis (EUF-CMA) : un attaquant qui peut demander le MAC de n'importe quel message ne peut pas forger un MAC valide pour un nouveau message qui n'a pas été soumis auparavant.

Hachage naïvement doté d'une clé : MAC à préfixe

Tentative naïve : MAC(K, M) = H(K || M). Cela semble sûr, mais cette construction est vulnérable aux attaques par extension de longueur pour les fonctions de hachage de Merkle-Damgård (SHA-256, SHA-512, MD5).

Attaque par extension de longueur

L'état de SHA-256 après le hachage de M est simplement H(M). Étant donné H(K || M), un attaquant peut calculer H(K || M || padding || extra) pour toute donnée supplémentaire sans connaître K. Il étend le message pour y ajouter de nouvelles données.

Impact pratique de l'attaque

Flickr (2009) : l'API utilisait H(K || params). Les attaquants ajoutaient &api_sig=forgery aux requêtes authentifiées. Résultat : des appels d'API non autorisés semblaient valides. Il s'agissait uniquement d'une exploitation de l'extension de longueur.

Le MAC à suffixe échoue également

MAC(K, M) = H(M || K) : vulnérable aux attaques hors ligne. L'attaquant calcule H(message) sans K, puis utilise une attaque des anniversaires pour trouver M' ayant le même hachage. La clé est ajoutée après la collision.

Pourquoi HMAC résout ce problème

HMAC enveloppe deux fois le hachage avec des blocs de bourrage de clé différents : HMAC(K, M) = H((K⊕opad) || H((K⊕ipad) || M)) Le hachage interne produit H(ipad_key || M). Le hachage externe l'enveloppe avec opad_key. L'extension de longueur échoue, car l'attaquant ne peut pas définir l'état initial du hachage externe.

SHA-3 et l'extension de longueur

SHA-3 utilise la construction en éponge, qui est naturellement immunisée contre les attaques par extension de longueur. H_SHA3(K || M) constitue une construction de MAC simple valide. SHA-2 ne l'est pas — utilisez toujours HMAC avec SHA-2.

Attaques temporelles lors de la vérification des MAC

Une comparaison de MAC avec arrêt anticipé (==) révèle des informations par sa durée d'exécution. Le premier octet « correct » prend légèrement plus de temps que le premier octet « incorrect ». Après 256 requêtes : octet 1 trouvé. Après 256 requêtes supplémentaires : octet 2. Le MAC complet est récupéré en 16×256 requêtes.

Vérification rapide

Pourquoi MAC(K, M) = SHA256(K || M) n'est-il pas sûr ?

Récapitulatif

Les attaques par extension de longueur montrent pourquoi les hachages naïvement dotés d'une clé échouent. Nous allons ensuite étudier la construction de HMAC et sa preuve de sécurité.
Gratuit pour commencer

Apprends Cryptology Academy avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
67
Leçons
261

Questions Fréquemment Posées

La leçon « Concepts des MAC et attaques par extension de longueur » est-elle gratuite ?

Oui — le texte complet de « Concepts des MAC et attaques par extension de longueur » 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 « Concepts des MAC et attaques par extension de longueur » ?

Expliquez pourquoi l’ajout d’un préfixe secret est vulnérable aux extensions de longueur. 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 1 sur 4.

Combien de temps prend la leçon « Concepts des MAC et attaques par extension de longueur » ?

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