初期化ベクトル

初期化ベクトル（英: initialization vector、IV）はビット列であり、ストリーム暗号またはブロック暗号を任意の暗号利用モードで実行するとき、同じ暗号鍵でストリームを生成しても毎回異なるストリームを生成するのに必要とされる。これにより、毎回暗号鍵を替えるといった時間のかかる作業を省くことができる。

IVの大きさは使用する暗号化アルゴリズムと暗号プロトコルに依存し、通常は暗号のブロックサイズと同じか暗号鍵と同じサイズである。IVは受信者がその暗号を解読する際に必須である。IVを渡す方法としては、鍵交換やハンドシェイクの際に合意した上でパケットと共にIVを送るか、IVの計算方法を共有しておくか、現在時間のようなインクリメンタルな測定値（RSA SecurID、VASCO Digipassなどのハードウェア認証トークン）や、送信者または受信者のID、ファイルID、パケット、セクタ番号やクラスタ番号などをパラメータとして使う。プロトコルに従い、複数の変数を組み合わせたり、ハッシュ関数を使う。IVをランダムに選択した場合、衝突の可能性を考慮する必要があり、インクリメンタルなIVをnonceとして使う場合、関連IV攻撃への耐性を考慮しておく必要がある。

ブロック暗号 
ブロック暗号とストリーム暗号ではIVの実装は異なる。直接的なブロック暗号あるいはECBモードでは、同じ平文を同じ鍵で暗号化すると同じ暗号文になり、セキュリティへの大きな脅威となる。そのため、IVを平文の最初のブロックに線形に加算（またはXOR）するか、運用モードによっては平文の前にIVを含めておいて暗号化する。

ストリーム暗号 
ストリーム暗号では、IVが鍵ストリームの初期値として暗号器に設定され、最初のビットを出力する前に何回か暗号器を回す。性能を向上させるため、この事前に回す回数はなるべく少なくなるように設計する。しかし、その最小回数を求めるのは簡単ではなく、エントロピー損失、暗号生成ごとのユニーク性、ストリーム暗号のセキュリティ問題である関連IV攻撃とIV関連攻撃などを考慮しなければならない。このためストリーム暗号のIVは重要な問題であり、現在も研究が盛んに行われている。

WEP 
IEEE 802.11 の暗号アルゴリズムとしてWEP（Wired Equivalent Privacy）があるが、WEPの使用するIVは「弱く」、容易に解読可能である。なりすましパケット注入により、WEPは5分以内に解読できる。このため、WEPは急速に廃れた。

関連項目 
 暗号利用モード
 ノンス
 ソルト

脚注

参考文献 
 B. Schneier, 'Applied Cryptography', Wiley 1996
 N. Ferguson and B. Schneier, 'Practical Cryptography', Wiley 2003

暗号技術