資料請求リスト
0

初期化ベクトルとは?暗号化で知っておくべき基礎知識を解説!

2023年01月17日 最終更新

暗号化ソフトの製品一覧
初期化ベクトルとは?暗号化で知っておくべき基礎知識を解説!

初期化ベクトルとはどのようなものなのでしょうか。暗号化に関する言葉とは知っていても、具体的に何を意味するのか知らない人は多いでしょう。この記事では初期化ベクトルの概要や使われ方、ソルトとの違い、生成方法について紹介します。暗号化への理解を深める参考にしてください。

\ 無料で一括資料請求!/
目次

    初期化ベクトルとは

    初期化ベクトルはinitialization vector、略してIVと呼ばれています。まずは初期化ベクトルとは何か、その概要を見ていきましょう。

    データを解読しにくくするランダムなビット列のこと

    同じデータを常に同じ暗号文に置き換えると、その頻度から暗号化される前の元のデータが推測されてしまいます。そのため、同じデータでも違う暗号文に置き換える仕組みが必要です。

    そこで用いられるのが初期化ベクトルです。初期化ベクトルはランダムに生成されるビット列であり、これを利用することで暗号化の結果を毎回変えられます。具体的にどのような形式で初期化ベクトルが用いられるかは、暗号化アルゴリズムによって異なります。

    初期化ベクトルはそのためだけに使われるデータであり、初期化ベクトルから元のデータを予測することは不可能です。したがって、初期化ベクトルは第三者に知られても問題ありません。

    ブロック暗号とストリーム暗号で使用される

    初期化ベクトルはブロック暗号やストリーム暗号で使われます。では、それぞれにおける初期化ベクトルの使われ方を見ていきましょう。

    ブロック暗号:最初のブロックまたは平文の前に設置

    ブロック暗号とは、ある程度まとまった長さのデータを一括処理する暗号アルゴリズムです。たとえば、ブロック暗号として有名なAESでは128・192・256bitのデータをまとめて暗号化します。データが一定量たまってから処理するため、遅延が生じる反面、処理の負荷が小さくなります。

    ブロック暗号では、モードと呼ばれるルールに従って暗号化が行われます。いくつかあるモードの中で、初期化ベクトルが使われる代表的なモードがCBCモードです。

    CBCモードでは、ある平文を暗号化する際、その平文と直前のブロックの暗号文の排他的論理和を暗号化の結果とします。排他的論理和は論理演算の一種です。つまり、暗号化結果を算出するには、直前のブロックの情報が必要ということです。

    ところが、一番初めのデータは参照すべき直前のブロックがありません。そこで代理のブロックとして使われるのが初期化ベクトルです。初期化ベクトルを毎回変えることで暗号化の結果も変わります。

    ストリーム暗号:ビットの出力前に初期値として設定

    ストリーム暗号はブロック暗号とは対照的に、データを1ビットあるいは1バイトずつ処理する暗号アルゴリズムです。効率はブロック暗号に劣りますが、処理速度が優れているため、無線LANの暗号化方式にも使われています。

    ストリーム暗号では、疑似乱数生成器から得た乱数を使って平文を暗号化します。その乱数を生成する際に、元となるのがシードと初期化ベクトルです。シードは乱数を生み出す材料のようなものです。疑似乱数生成器をミキサーに例えるなら、シードは果物に当たります。

    しかし、シードが毎回同じであれば、得られる乱数も同じになります。そこで、シードだけでなくランダムなビット列である初期化ベクトルを加えることで、得られる乱数を毎回変えるのです。

    初期化ベクトルとソルトの違い

    初期化ベクトルと似たものにソルトがあります。

    ソルトはパスワードをハッシュ化する際に、パスワードの前後に付加する文字列のことです。また、ハッシュ化とは不可逆的にデータを変換することです。ソルトを付加することで、ハッシュ化前のパスワードが第三者に推測されるのを防ぎます。

    初期化ベクトルとソルトは、変換されたデータの平文を推測されにくくするための文字列である点では同じです。しかし、初期化ベクトルで複雑化された暗号文は、あくまでも後に復号できるものでなければなりません。一方、ソルトは復号を困難にするために使われます。

    暗号化ソフト の製品を調べて比較 /
    製品をまとめて資料請求! 資料請求フォームはこちら

    初期化ベクトルの生成方法

    共通鍵暗号方式で暗号化するケースを例に、初期化ベクトルの生成方法を見ていきましょう。

    まず、初期化ベクトル(iv)は以下のコードで生成できます。

    SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
    byte[]_iv = new byte[16];
    random.nextBytes(iv);

    上記のコードで得られた初期化ベクトルを使い、以下のコードで暗号化します。

    byte[] encrypt(byte[] plainText, byte[] key, byte[] iv, enum cipherMode)

    「plainText」は平文、「key」は鍵、「iv」が初期化ベクトル、「cipherMode」がモードです。これらを与えて出力される値が暗号文です。

    初期化ベクトルについて知り、セキュリティ意識を向上!

    初期化ベクトルとは、暗号化の解読を困難にするためのランダムな文字列です。以下のような形式で使われます。

    ブロック暗号
    最初のデータブロックの暗号化結果を変える
    ストリーム暗号
    疑似乱数生成器から生成される乱数を変える

    初期化ベクトルは解読を困難にするために使われますが、あくまで復号される前提です。不可逆的に変換するソルトとはその点で異なります。以上を参考にして、セキュリティへの意識を高めてください。

    \ 無料で一括資料請求!/
    この記事を読んだ人は、こちらも参考にしています

    話題のIT製品、実際どうなの?

    導入ユーザーのリアルな体験談

    電球

    IT製品を導入しDXに成功した企業に

    直接インタビュー!

    電球

    営業・マーケ・人事・バックオフィス

    様々なカテゴリで絶賛公開中

    私たちのDXロゴ
    bizplay動画ページリンク
    動画一覧を見てみる
    IT製品・サービスの比較・資料請求が無料でできる、ITトレンド。「初期化ベクトルとは?暗号化で知っておくべき基礎知識を解説!」というテーマについて解説しています。暗号化ソフトの製品 導入を検討をしている企業様は、ぜひ参考にしてください。
    このページの内容をシェアする
    facebookに投稿する
    Xでtweetする
    このエントリーをはてなブックマークに追加する
    pocketで後で読む
    カテゴリー関連製品・サービス
    カテゴリー関連製品・サービス
    D.AMO DP
    ペンタセキュリティ株式会社
    ☆☆☆☆☆
    ★★★★★
    ★★★★★
    0.0
    Server-GENERAL
    株式会社ソフトエイジェンシー
    ☆☆☆☆☆
    ★★★★★
    ★★★★★
    0.0
    Security Platform
    ハミングヘッズ株式会社
    ☆☆☆☆☆
    ★★★★★
    ★★★★★
    0.0
    セキュリティ・ウェアハウス
    株式会社スカイネクサス
    ☆☆☆☆☆
    ★★★★★
    ★★★★★
    0.0
    D.AMO DE
    ペンタセキュリティ株式会社
    ☆☆☆☆☆
    ★★★★★
    ★★★★★
    0.0
    カテゴリー資料請求ランキング
    カテゴリー資料請求ランキング
    03月31日(月)更新
    ITトレンドへの製品掲載・広告出稿はこちらから
    暗号化ソフトの製品をまとめて資料請求