Vecteurs d'initialisation et nonces
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
- Modes opératoires des chiffrements par bloc
- Génération d'aléa et CSPRNG
- Chiffrement authentifié (AEAD)
- Attaques sur le chiffrement symétrique
| 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 |