Codes d'authentification de message
Un code d'authentification de message (MAC) utilise une clé secrète partagée pour produire une courte étiquette (tag) qui permet à un récepteur de vérifier l'intégrité et l'authenticité d'un message, détectant ainsi toute altération ou falsification.
Definition
Un code d'authentification de message est une primitive symétrique qui, étant donné une clé secrète et un message, produit une étiquette (tag) de longueur fixe telle que toute personne ne possédant pas la clé ne peut pas forger une étiquette valide pour un nouveau message, même après avoir observé des étiquettes sur des messages choisis.
Scope
Ce sujet couvre l'authentification symétrique : l'objectif de sécurité de l'infalsifiabilité existentielle sous attaque à messages choisis, les constructions de MAC à partir de fonctions de hachage (HMAC) et de chiffrements par blocs (CMAC, GMAC), et leur combinaison avec le chiffrement pour former le chiffrement authentifié (chiffrer-puis-MAC, AES-GCM). Il aborde les pièges tels que l'extension de longueur et la nécessité d'une comparaison de tags à temps constant. Il exclut les signatures numériques, qui offrent une vérifiabilité publique et une non-répudiation à l'aide de la cryptographie à clé publique.
Core questions
- Comment une clé partagée permet-elle à un récepteur de détecter toute modification d'un message ?
- Qu'exige l'infalsifiabilité existentielle sous attaque à messages choisis d'un MAC sécurisé ?
- Comment les MAC sécurisés sont-ils construits à partir de fonctions de hachage (HMAC) et de chiffrements par blocs (CMAC) ?
- Comment le chiffrement et l'authentification doivent-ils être combinés pour protéger à la fois le secret et l'intégrité ?
- Pourquoi la comparaison des tags doit-elle être à temps constant, et quelles attaques exploitent les fuites temporelles ?
Key concepts
- étiquette d'authentification
- infalsifiabilité existentielle
- attaque à messages choisis
- HMAC
- CMAC et GMAC
- chiffrement authentifié (AEAD)
- chiffrer-puis-MAC
- comparaison à temps constant
- protection contre la relecture
Key theories
- Infalsifiabilité existentielle sous attaque à messages choisis
- La définition standard de la sécurité d'un MAC : un adversaire qui peut demander des étiquettes sur des messages de son choix ne peut toujours pas produire une étiquette valide sur un message qu'il n'a pas interrogé, rendant la falsification irréalisable.
- HMAC et chiffrement authentifié
- HMAC imbrique deux fois un hachage clé pour produire un MAC prouvé sûr à partir de n'importe quel hachage standard ; la combinaison d'un MAC avec le chiffrement via chiffrer-puis-MAC (ou en utilisant AES-GCM) produit un chiffrement authentifié qui protège la confidentialité et l'intégrité simultanément.
Mechanisms
HMAC calcule H((K xor opad) || H((K xor ipad) || message)), où H est une fonction de hachage et ipad/opad sont des compléments fixes ; la structure imbriquée permet de contrer l'extension de longueur et est prouvée sûre si la fonction de compression est une fonction pseudo-aléatoire. Les MAC basés sur des chiffrements par blocs, tels que CMAC, enchaînent les chiffrements de blocs de message avec un ajustement final par clé. Les modes de chiffrement authentifié comme AES-GCM calculent un MAC de corps de Galois (GMAC) sur le texte chiffré pour lier la confidentialité et l'intégrité en une seule passe.
Clinical relevance
Les MAC authentifient la quasi-totalité du trafic réseau sécurisé : HMAC est à la base de l'intégrité des enregistrements TLS, d'IPsec, des JSON Web Tokens et de la signature des requêtes API de type AWS, tandis qu'AES-GCM fournit un chiffrement authentifié dans TLS 1.3 et le chiffrement de disque. La vérification d'un MAC est ce qui empêche un attaquant d'altérer silencieusement le texte chiffré ou de rejouer des messages capturés.
Evidence & guidelines
HMAC est normalisé dans FIPS 198-1 et RFC 2104 ; CMAC dans NIST SP 800-38B ; GCM/GMAC dans NIST SP 800-38D. Les bonnes pratiques privilégient les constructions de chiffrement authentifié (AEAD) et l'ordre chiffrer-puis-MAC ; l'ordre MAC-puis-chiffrer utilisé dans les anciennes versions de TLS a contribué aux attaques par oracle de remplissage.
History
Les premiers MAC ont été construits à partir de DES en mode CBC-MAC. La découverte que les MAC à hachage clé naïfs étaient vulnérables à l'extension de longueur a motivé le développement de HMAC, introduit par Bellare, Canetti et Krawczyk en 1996 et normalisé peu après. Les années 2000 ont vu la formalisation du chiffrement authentifié et des modes AEAD dédiés tels que GCM et CCM, qui sont désormais la norme pour la protection des données en transit.
Key figures
- Mihir Bellare
- Ran Canetti
- Hugo Krawczyk
- Phillip Rogaway
Related topics
Seminal works
- bellare1996hmac
- katz2020
- menezes1996
Frequently asked questions
- Quelle est la différence entre un MAC et une signature numérique ?
- Les deux authentifient un message, mais un MAC utilise une clé secrète partagée, de sorte que toute partie capable de vérifier une étiquette aurait également pu la produire — il n'y a pas de non-répudiation. Une signature numérique utilise une clé privée pour la signature et une clé publique pour la vérification, de sorte que seul le signataire aurait pu la créer et n'importe qui peut la vérifier.
- Faut-il chiffrer d'abord ou authentifier d'abord ?
- L'ordre recommandé est chiffrer-puis-MAC : chiffrer le texte en clair, puis calculer le MAC sur le texte chiffré. Cela permet au récepteur de rejeter les textes chiffrés falsifiés avant de les déchiffrer et évite les attaques par oracle de remplissage et d'autres attaques qui découlent des ordres MAC-puis-chiffrer.