Chiffrement authentifié (AEAD)

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche

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

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