キーストリーム:データ暗号化に用いる疑似乱数列
キーストリームの定義、形式、生成方法、歴史的背景、ストリーム暗号とブロック暗号のCTRモードでの利用、安全性の考慮事項、主な用途を解説する。
キーストリームとは、メッセージと組み合わせて暗号化結果を生成する、通常は乱数または疑似乱数の過程で作られる記号列である。暗号学の分野では、キーストリームは平文データを秘匿データへ変換するための基本的な構成要素である。これは平文メッセージの各要素に適用され、単純な算術演算によって、しばしば暗号文と呼ばれる暗号化された出力を生成する。
キーストリームの形式
キーストリームの要素は、暗号方式や媒体に応じて複数の形式をとり得る。一般的な単位サイズには、単一の2進ビット、8ビットのバイト、定められた範囲内の数値、印字可能な文字がある。キーストリーム要素と平文要素を結合する演算には、通常、加算、減算、またはビット単位の排他的論理和(XOR)が用いられる。これらは通常、同じキーストリームが分かっていれば演算を元に戻せるよう、256を法とする加算や2を法とする演算などのモジュラー演算の規則に従って実行される。
キーストリームの生成方法
キーストリームの生成には、大きく二つの方法がある。第一は、理想的なワンタイムパッドで使われる真の乱数出力である。メッセージと同じ長さの秘密の乱数列を一度だけ使用すれば、情報理論的安全性が得られる。第二は、秘密鍵をシードとして用いる擬似乱数生成器などの決定論的アルゴリズムであり、計算上は乱数と区別できないストリームを生成する。この種の決定論的生成器は、現代のストリーム暗号の基盤となっている。
- 真の乱数によるキーストリーム:一度限りの使用では高い安全性を持つが、大きなメッセージには実用的でない。
- 疑似乱数によるキーストリーム:鍵から再現でき、多くのプロトコルで実用的である。
- ブロック暗号に基づくキーストリーム:ブロック暗号をストリーム生成器へ変換する動作モードである。
ブロック暗号からキーストリームを得る一般的な方法の一つが、カウンタに基づく動作である。暗号は連続するカウンタ値を暗号化してブロック列を生成し、それらをキーストリームのように用いる。この構成はしばしばCTRモード(整数カウンタモードとも呼ばれる)と呼ばれる。これはブロック暗号の基本要素をストリーム生成器に変換する方法の一つであり、ブロック暗号がストリーミング動作をサポートする複数の方法の一つでもある。
安全性と運用上の考慮事項
キーストリームに関する主要な安全規則は単純かつ絶対的である。すなわち、異なる二つの平文に同じキーストリームを再利用すると情報が漏えいする可能性があり、多くの場合、両方のメッセージを効率的に復元できる。このため、ワンタイムパッドを使用するプロトコルではパッドを決して繰り返さないことが求められ、ストリーム暗号の設計者と利用者はIVまたはカウンタが繰り返されないことを確保しなければならない。ほかにも、疑似乱数生成器の品質、鍵回復攻撃への耐性、送信者と受信者間の同期を適切に扱うことが実務上の重要事項となる。
用途と主な事実
キーストリームは多くの実システムに現れる。例として、制約のあるデバイス向けの軽量ストリーム暗号、CTRを用いるトランスポート層の暗号化モード、連続的なキーストリーム生成を必要とする安全な音声・無線通信リンクがある。理想的なキーストリームを用いる理論上のワンタイムパッドは完全秘匿性を実現する一方、実際に配備されるシステムの大半は、完全秘匿性と引き換えに実用性および管理可能な鍵サイズを得る鍵付きアルゴリズムに依存している。
ここで触れた概念と実装についてさらに学ぶには、暗号学の入門資料、ストリーム暗号の解説、キーストリームの生成に利用できるブロック暗号の説明、そしてワンタイムパッドとCTRなどのモードに関する古典的な解説を参照するとよい。キーストリームがどのように生成・適用されるかを理解することは、暗号方式の安全性を評価するうえで不可欠である。
関連項目
著者
AlegsaOnline.com キーストリーム:データ暗号化に用いる疑似乱数列 Leandro Alegsa
URL: https://ja.alegsaonline.com/art/53141
出典
- cacr.math.uwaterloo.ca : Handbook of Applied Cryptography