初期化ベクトル 【IV】 Initialization Vector

概要

初期化ベクトル(IV)とは、暗号化を行う際に用いられる、毎回異なるランダムな値。同じ暗号文が繰り返し送信されることを防ぎ、攻撃者による解読をより困難にする効果がある。

同じ暗号鍵で同じ平文暗号化すると生成される暗号文も同じになるため、通信内容を継続的に盗聴している攻撃者がいる場合、同じ暗号鍵に基づく暗号通信を繰り返すと効率的に暗号鍵を推測できしまう場合がある。

これを防ぐため、毎回異なるランダムな値を生成し、暗号鍵暗号文の算出過程の一部に取り込むことで、同じ暗号鍵でも暗号文が毎回不規則に変化するようにする手法が用いられる。このランダムな初期値を初期化ベクトルと呼び、通信開始時に決定して送信者と受信者で共有する。初期化ベクトル自体は秘密である必要はない。

初期化ベクトルの長さや用途は暗号方式ごとに異なる。暗号鍵と同じか近い長さの値を用いて暗号鍵の決定のために用いる方式もあれば、一度に暗号化する単位である平文ブロックと同じ長さの初期化ベクトルを用意して、暗号化そのものに利用する方式もある。

CBCにおけるIV

例えば、ブロック暗号の代表的な暗号利用モードの一つであるCBCCipher Block Chaining)では、同じ平文が同じ暗号文に変換されるのを防ぐため、一つ手前のブロックの暗号文と現在のブロックの平文のXOR(排他的論理和)を取ってから暗号化を行う。

このとき、先頭のブロックには一つ手前のブロックが存在しないため、何らかのダミーのデータを用意する必要があるが、これを毎回決まった内容にしてしまうと、各ブロックの暗号文が毎回同じになってしまう。これを防ぐため、先頭ブロックとXORを取るデータとして毎回異なる初期化ベクトルを生成して利用する。

(2023.9.24更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。