Vecteurs d'initialisation et nonces

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

Portail > Fondamentaux

Un vecteur d'initialisation (IV) ou un nonce (number used once) introduit de la variabilité pour qu'un même message chiffré deux fois avec la même clé ne produise pas le même chiffré. Leur mauvaise gestion est l'une des causes les plus fréquentes de rupture de sécurité en cryptographie symétrique.

Pourquoi un IV / nonce

Sans variabilité, chiffrer deux fois le même clair sous la même clé donnerait le même chiffré (le défaut d'ECB), révélant des répétitions. L'IV/nonce rend chaque chiffrement unique, même à clé et message constants.

IV et nonce : nuance

Les termes sont souvent confondus, mais les exigences diffèrent selon le mode :

Mode Exigence sur l'IV / nonce
CBC IV imprévisible (aléatoire) et unique ; sa prévisibilité a été exploitée (BEAST).
CTR Nonce/compteur unique sous une clé ; l'imprévisibilité n'est pas requise, l'unicité l'est.
GCM (AES-GCM) Nonce unique impératif ; 96 bits recommandés.
ChaCha20 (ChaCha20-Poly1305) Nonce unique sous une clé.

Règle générale : selon le mode, l'IV doit être imprévisible (CBC) ou simplement unique (CTR/GCM) — mais toujours non répété sous une même clé.

La catastrophe de la réutilisation de nonce

Pour les modes de type flot (CTR, GCM, ChaCha20), réutiliser un nonce avec la même clé est critique :

  • le même keystream est généré deux fois ;
  • le XOR de deux chiffrés révèle le XOR des deux clairs ;
  • en GCM, la réutilisation de nonce compromet en plus la clé d'authentification, permettant de forger des messages.

C'est l'erreur à éviter à tout prix. Quand l'unicité ne peut être garantie (systèmes distribués, redémarrages), envisager un mode résistant à la réutilisation de nonce (nonce-misuse resistant, ex. AES-GCM-SIV).

Transmission de l'IV

L'IV/nonce n'est pas secret : il est transmis en clair avec le chiffré (souvent préfixé). Ce qui doit rester secret, c'est la clé. Ce qui doit être garanti, c'est l'unicité du nonce.

Bonnes pratiques

  • Générer l'IV avec un CSPRNG (CBC) ou un compteur strictement croissant (CTR/GCM).
  • Ne jamais coder en dur un IV/nonce, ni le dériver d'un compteur réinitialisable à chaud.
  • Préférer des primitives AEAD qui encadrent l'usage du nonce.
  • Documenter la taille et la source du nonce dans la conception.

Points clés à retenir

  • L'IV/nonce rend chaque chiffrement unique ; il est public, pas secret.
  • CBC : IV imprévisible ; CTR/GCM/ChaCha20 : nonce unique impératif.
  • Réutiliser un nonce en mode flot/GCM = compromission (clairs, et clé d'auth en GCM).
  • En cas de doute sur l'unicité, viser un mode misuse-resistant (AES-GCM-SIV).

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