Understanding IV and Nonce
Learn the difference between IVs and nonces, their uniqueness requirements, and the consequences of reuse.
Problem
You are unsure when to use an IV versus a nonce and what happens if the same value is reused across encryptions.
Prerequisites
- Understanding of symmetric encryption modes
- Knowledge of CBC and CTR modes
Steps
-
1. Distinguish IV from nonce
An IV (Initialization Vector) is used in CBC mode and must be unpredictable (random). A nonce (number used once) is used in CTR and GCM modes and must be unique but not necessarily random. Both are public and stored with the ciphertext.
InputCBC: random IV | CTR/GCM: unique nonceOutputboth public, never reused -
2. Understand the consequences of reuse
Reusing an IV in CBC leaks whether two plaintexts share a prefix. Reusing a nonce in CTR or GCM is catastrophic: it reveals the XOR of two plaintexts and, in GCM, allows forgery of authenticated messages. Never reuse a nonce with the same key.
Inputnonce reuse in CTROutputXOR of plaintexts exposed -
3. Generate correctly per mode
For CBC, generate a fresh random 16-byte IV each time. For GCM, use a counter-based nonce or generate randomly, but track used nonces to prevent reuse. A 96-bit nonce is standard for GCM and allows hardware acceleration.
InputGCM nonce: 12 bytesOutputunique per key
Expected result
Correctly generated IVs/nonces that are never reused with the same key, preventing catastrophic information leakage.
Common errors
- Hardcoding the IV/nonce to a fixed value
- Generate a fresh random or counter-based value for every encryption. A fixed IV/nonce defeats the purpose entirely.
- Using a random nonce in GCM without tracking uniqueness
- With a 96-bit random nonce, the probability of collision is negligible until ~2^32 encryptions. For higher volumes, use a deterministic counter.
Troubleshooting
- If two ciphertexts share a prefix and the same IV was used, the IV was reused. Regenerate keys and IVs.
- In GCM, if a nonce is reused even once, the key is compromised. Rotate the key immediately.
Security limits
- IV/nonce reuse is one of the most common and devastating cryptographic failures. Always generate fresh values.
- This tool generates IVs locally using a cryptographically secure RNG.
Related tools
Related glossary
Related tasks
Ready to run it?