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

IVの大きさは使用する暗号化アルゴリズムと暗号プロトコルに依存し、通常は暗号のブロックサイズと同じか暗号鍵と同じサイズである。IVは受信者がその暗号を解読する際に必須である。IVを渡す方法としては、鍵交換やハンドシェイクの際に合意した上でパケットと共にIVを送るか、IVの計算方法を共有しておくか、現在時間のようなインクリメンタルな測定値(RSA SecurIDVASCO 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は「弱く」、容易に解読可能である[1]。なりすましパケット注入により、WEPは5分以内に解読できる。このため、WEPは急速に廃れた。

関連項目

編集

脚注

編集
  1. ^ Nikita Borisov, Ian Goldberg, David Wagner. Intercepting Mobile Communications: The Insecurity of 802.11. http://www.isaac.cs.berkeley.edu/isaac/mobicom.pdf 2006年9月12日閲覧。. 

参考文献

編集
  • B. Schneier, 'Applied Cryptography', Wiley 1996
  • N. Ferguson and B. Schneier, 'Practical Cryptography', Wiley 2003

📚 Artikel Terkait di Wikipedia

RAII

RAII(Resource Acquisition Is Initialization)は、日本語では「リソース取得は初期化である」「リソースの確保は初期化時に」「リソースの取得と初期化」などの意味を持ち、資源(リソース)の確保と解放を、クラス型の変数の初期化と破棄処理に結び付けるというプログラミン

IV

リムーバブルハードディスクの一種iVDRの愛称の一つ。 IrfanViewの略。 イメージビデオ(ImageVideo)の略。 初期化ベクトル (Initialization Vector) の略。 兵庫エフエム放送 - 兵庫県のラジオ放送局。呼出符号がJOIV-FM。 IV線 (Indoor Vinyl) - 屋内配線用電線の一種。

Unified EFI Forum

specification"が元になっている。さらに、ファームウェア内のアーキテクチャーで、ファームウェアとハードウェアのインターフェースを指す"Platform Initialization (PI) specification"や、規格適合を確認するための"Self-Certification Test suites"も策定している。

型推論

Vector3<double> v2 { 1.0, 2.0, 3.0 }; // C++11 以降の uniform initialization を使用した実体化。 Vector3 v3(1.0, 2.0, 3.0); // C++17 以降でのみ有効。Vector3<double>

Aircrack-ng

「PTW」という名前のこの新しい攻撃は、WEPキーを復号するために必要な初期化ベクトル(IV, Initialization Vector)の数を減らし、0.9リリース以降Aircrack-ngに含まれている。 Aircrack-ngは、元のAircrackプロジェ

C++11

渡すことができ、右辺値からのムーブを実現できる。 例えば、std::vector は内部的には C スタイル配列のサイズ付きのラッパである。従来は、std::vector の一時変数が生成されたとき、新たな std::vector を生成してそこに全ての右辺値データをコピーしないといけなかった。コ

C++20

Extensions to C++ for Modules”. 2019年4月30日閲覧。 ^ Tim Shen. “Designated Initialization Wording”. 2017年7月16日閲覧。 ^ Thomas Köppe. “Allow lambda capture [=, this]”

New演算子

^ その後、std::auto_ptrはC++17で廃止(削除)された。 ^ Default-initialization - cppreference.com ^ Value-initialization - cppreference.com ^ operator new, operator new[]