暗号プリミティブに基づく設計
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/04/05 07:38 UTC 版)
「暗号論的擬似乱数生成器」の記事における「暗号プリミティブに基づく設計」の解説
安全なブロック暗号は、CTRモードで動作させることでCSPRNGとして使うことができる。これは、ランダムな鍵を選んで0を暗号化し、次に1を暗号化し、さらに2を暗号化し、というように行う。カウンタを0以外の任意の値から開始することもできる。明らかに、その周期は n-ビットブロック暗号では 2n であり、鍵と平文の初期値が攻撃者に知られてしまうと、全く安全でなくなる。また、誕生日のパラドックスから2n/2の出力で真の乱数と1/2の確率で識別可能である。 暗号学的ハッシュ関数も、場合によってはCSPRNGとして利用可能である。カウンタ値のハッシュ値を次々に計算すればよい。この場合、カウンタの初期値がランダムかつ秘密でなければならない。カウンタが多倍長整数であれば、このCSPRNGはほぼ無限に乱数を生成できる。しかし、これについて安全ではないとする者もいる。 ストリーム暗号は、平文を擬似乱数列と(通常 XOR で)結合することで暗号文を生成する。カウンタを平文として暗号文を生成すれば、新たな擬似乱数列が生成され、おそらく内部の疑似乱数列より周期を長くできる。この生成法は、内部で生成する擬似乱数列がCSPRNGであるときだけ安全であるが、一般にそうでないことが多い(RC4参照)。 この種の設計として ANSI X9.17 標準(Financial Institution Key Management (wholesale))に採用されたものがあり、FIPS にも採用されている。これは、次のような設計になっている。 入力: 64ビットの乱数のシード s と DES の56ビットの鍵 k 毎回、乱数を必要とする。 現在日時情報 D (可能な限り詳しい値)を使って、I = DES_k(D) を計算 x = DES_k(I xor s) を出力し、シード s を DES_k(x xor I) に更新 このアルゴリズムは、DESの代わりにAESを使えば改善されるだろうと指摘されている。
※この「暗号プリミティブに基づく設計」の解説は、「暗号論的擬似乱数生成器」の解説の一部です。
「暗号プリミティブに基づく設計」を含む「暗号論的擬似乱数生成器」の記事については、「暗号論的擬似乱数生成器」の概要を参照ください。
- 暗号プリミティブに基づく設計のページへのリンク