コンテンツへスキップ
uencoder

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 bits
    Output
    different result on every encryption

    The 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

関連用語

関連ツール

References