IV (Initialization Vector)
初期化ベクトル(IV、Initialization Vector)は、ブロック暗号モードにランダム性を注入する入力である。同じ平文でも暗号化ごとに異なる暗号文が生成される。
目的
同一平文のパターン漏洩を防ぎ、意味論的セキュリティを提供する。
メカニズム
IV の長さは通常ブロック長に等しい(AES では 128 ビット)。CBC は予測不能な(ランダムな)IV を要求し、CTR/GCM は一意性を要求する(カウンタでよい)。IV は秘密にする必要はなく、暗号文と一緒に送信される。GCM では IV はしばしば nonce と呼ばれる。
ユースケース
- AES-CBC のランダム IV
- AES-GCM の一意 nonce
- ディスク暗号化での IV 保存
- 暗号文の識別とデデュープ
例
- 入力
AES-CBC IV=random 128 bitsOutputdifferent result on every encryptionThe IV is transmitted with the ciphertext
よくあるエラー
- A fixed or predictable IV enables chosen-plaintext attacks
- Use a random IV for CBC and a unique nonce for CTR/GCM
関連用語
Nonce
ノンス(nonce、number used once)は暗号化で一度だけ使われる値である。IVと似るが、ランダム性よりも一意性を重視し、ストリーム暗号やAEADで広く使われる。 用語集
CBC (Cipher Block Chaining)
CBC モードは、暗号化前に直前の暗号文ブロックと現在の平文ブロックを XOR するため、同一の平文ブロックも異なる暗号文になる。ランダムな IV が必要である一方、完全性の認証は提供しない。 用語集
GCM (Galois/Counter Mode)
GCM(Galois/Counter Mode)は CTR 暗号と GHASH 認証を組み合わせた AEAD モードであり、機密性と完全性を同時に提供し、TLS 1.2/1.3 の推奨モードである。 用語集
Mode of Operation
運用モード(mode of operation)は、ブロック暗号を任意長のデータに適用するための方式で、暗号化時に複数の平文ブロックをどう連結するかを定義する。代表的なものにECB、CBC、CTR、GCMがある。 用語集