Chiffrement authentifié (AEAD)
Portail > Intégrité et authentification
L'AEAD (Authenticated Encryption with Associated Data) combine, en une seule primitive, la confidentialité du chiffrement et l'intégrité/authenticité d'un MAC. C'est l'approche recommandée par défaut : elle évite les pièges des combinaisons manuelles.
Ce que fournit l'AEAD
À partir d'une clé, d'un nonce, d'un message clair et de données associées optionnelles, une primitive AEAD produit un chiffré + un tag d'authentification. Au déchiffrement, si le tag ne correspond pas, l'opération échoue et ne renvoie aucun clair.
<mermaid> flowchart LR
K[Clé] --> E[AEAD chiffrer] N[Nonce] --> E M[Clair] --> E A[Données associées AAD] --> E E --> C[Chiffré] E --> T[Tag d'authentification]
</mermaid>
(Schéma en Mermaid.)
Les données associées (AAD)
Les données associées sont authentifiées mais non chiffrées. On y met les informations qui doivent rester en clair tout en étant protégées contre la modification : en-têtes de protocole, numéro de version, identifiants, métadonnées de routage. Toute altération de l'AAD fait échouer la vérification.
Principales primitives
| Primitive | Base | Remarques |
|---|---|---|
| AES-GCM | AES en mode CTR + GMAC | Très répandu, accéléré matériellement (AES-NI). Nonce unique impératif. |
| ChaCha20-Poly1305 | ChaCha20 + Poly1305 | Excellent sans accélération matérielle (mobile, embarqué). |
| AES-CCM | AES CTR + CBC-MAC | Courant en environnements contraints (IoT, Wi-Fi). |
| AES-GCM-SIV | GCM résistant à la réutilisation de nonce | À privilégier si l'unicité du nonce est difficile à garantir. |
Pourquoi préférer l'AEAD
- Une seule primitive correctement conçue → moins d'erreurs que de combiner chiffrement + MAC à la main.
- Vérification d'intégrité avant tout traitement du clair → neutralise les oracles de padding.
- Gestion intégrée des données associées.
Pièges à éviter
- Réutiliser un nonce (surtout GCM) : compromet confidentialité et authentification (Vecteurs d'initialisation et nonces).
- Ignorer l'échec de vérification : ne jamais utiliser le clair si le tag est invalide.
- Tronquer le tag au point de le rendre faible.
Exemple (openssl)
# Chiffrement AES-256-GCM (le tag est géré par l'outil/la bibliothèque) openssl enc -aes-256-gcm -K <hex_cle> -iv <hex_nonce> -in clair.bin -out chiffre.bin
(En pratique, on utilise une bibliothèque qui gère proprement nonce, tag et AAD.)
Points clés à retenir
- AEAD = confidentialité + intégrité en une primitive ; à utiliser par défaut.
- AAD : authentifiée mais non chiffrée (en-têtes, métadonnées).
- AES-GCM (matériel) et ChaCha20-Poly1305 (logiciel) sont les choix standards.
- Nonce unique impératif ; en cas de doute, AES-GCM-SIV. Ne jamais ignorer un échec de tag.
Voir aussi
- AES-GCM
- ChaCha20-Poly1305
- Vecteurs d'initialisation et nonces
- Codes d'authentification de message (MAC et HMAC)
| Cryptographie symétrique — Portail | |
|---|---|
| Fondamentaux | Principe · Bloc et flot · Modes opératoires · Padding · IV et nonces |
| Intégrité / auth. | MAC et HMAC · AEAD |
| Gestion des clés | Aléa / CSPRNG · KDF · Échange de clés · Stockage / rotation |
| Algorithmes | AES · ChaCha20/Salsa20 · DES / 3DES · Blowfish et Twofish · RC4 · Camellia, ARIA et SM4 · AES-GCM · ChaCha20-Poly1305 · Hachage |
| Applications | Données au repos · En transit / hybride |
| Sécurité avancée | Attaques · Conformité · Post-quantique |