(Translated by https://www.hiragana.jp/)
暗号論的擬似乱数生成器 - Wikipedia コンテンツにスキップ

暗号あんごうろんてき擬似ぎじ乱数らんすう生成せいせい

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

暗号あんごうろんてき擬似ぎじ乱数らんすう生成せいせいCSPRNG、英語えいご: cryptographically secure pseudo random number generator暗号あんごうろんてきにセキュアな疑似ぎじ乱数らんすう生成せいせい)とは、暗号あんごう技術ぎじゅつでの利用りようてきした特性とくせい擬似ぎじ乱数らんすう生成せいせい (PRNG) である。

暗号あんごう応用おうようでは様々さまざま場面ばめん乱数らんすう必要ひつようとする。たとえば、以下いかのようなものがある。

  • かぎ生成せいせい
  • Nonce (プロトコルじょう1だけ使つかわれるかず、number used once)
  • Salt (ECDSA、RSASSA-PSS などの署名しょめいスキーマで使つかわれる)
  • ワンタイムパッド

そのさい必要ひつよう乱数らんすう性質せいしつ様々さまざまである。たとえば、なんらかの暗号あんごうプロトコルで Nonce を生成せいせいするさいもとめられるのは一意いちいせいだけである。一方いっぽうかぎ生成せいせいにはたか無作為むさくいせいもとめられる。ワンタイムパッドには暗号あんごうろんてき擬似ぎじ乱数らんすう不適ふてきで、たかエントロピーしん作為さくい情報じょうほうげん必要ひつようであり、それにより情報じょうほう理論りろんてき安全あんぜんせいる。

理想りそうてきには、暗号あんごうプロトコルとう使用しようする乱数らんすう生成せいせいにはこう品質ひんしつ情報じょうほうげんからられるエントロピーを利用りようすべきである。それは、たとえば量子りょうしろんてき乱数らんすう生成せいせい予測よそく不可能ふかのうなんらかのけいのプロセスである。情報じょうほう理論りろんてき観点かんてんでは、作為さくいせい程度ていどとはエントロピーであり、あるけい入力にゅうりょくのエントロピー以上いじょうのエントロピーは出力しゅつりょくできないからである。しかし、実用じつようシステムでは、利用りよう可能かのうなエントロピー以上いじょう乱数らんすう必要ひつようとすることがある。作為さくいせいすプロセスには時間じかんかるためである。そのような場合ばあいに CSPRNG を使つかうことがある。CSPRNG は利用りよう可能かのうなエントロピーをよりおおくのビットすう拡張かくちょうする。

要求ようきゅう仕様しよう

[編集へんしゅう]

通常つうじょうのPRNGの要求ようきゅう仕様しようは、CSPRNG でも満足まんぞくされる。しかし、ぎゃくしんではない。CSPRNG の要求ようきゅう仕様しようは2つに分類ぶんるいされる。だいいちに、その統計とうけいてき特性とくせいがよいこと(統計とうけいてき無作為むさくいせい試験しけん合格ごうかくすること)、だいに、はげしい攻撃こうげきにもえること(初期しょき状態じょうたい途中とちゅう状態じょうたい攻撃こうげきしゃあきらかになってもやぶられないこと)である。

  • すべてのCSPRNGは "next-bit test" に合格ごうかくする。next-bit test とは、乱数らんすうれつ最初さいしょk ビットをあたえられたとき、k+1 番目ばんめのビットの多項式たこうしき時間じかんで2ぶんの1をこえるかくりつ予測よそくするアルゴリズムが存在そんざいしないことを確認かくにんする試験しけんである。アンドリュー・チーチー・ヤオ1982ねん、next-bit test に合格ごうかくした生成せいせいは、作為さくいせいかんするほか多項式たこうしき時間じかん統計とうけい試験しけんにも合格ごうかくすることを証明しょうめいした。
  • すべてのCSPRNGは "state compromise extensions" にえる。その状態じょうたい一部いちぶまたは全部ぜんぶあきらかになっても(あるいはまさしく推測すいそくされても)、あきらかにされた状態じょうたいより以前いぜん生成せいせいされた乱数らんすうれつ再現さいげんできない。さらに、実行じっこうちゅうにエントロピーの入力にゅうりょくがある場合ばあい、その入力にゅうりょくっていてもCSPRNGの将来しょうらい状態じょうたい予測よそくできない。
れい: 円周えんしゅうりつ数列すうれつから出力しゅつりょく生成せいせいするCSPRNGがあり、2進数しんすうした数列すうれつのどこからを使つかうのか不明ふめいであるとする。これはnext-bit testを満足まんぞくするが暗号あんごうろんてき安全あんぜんではない。なぜなら、アルゴリズムの状態じょうたいにあたる「円周えんしゅうりつのどの部分ぶぶん現在げんざい使つかわれているか」を攻撃こうげきしゃめた場合ばあい、その攻撃こうげきしゃ先行せんこうするビットをすべて計算けいさんできるからである。

おおくのPRNGはCSPRNGとしては不適ふてきであり、上記じょうきの2つを満足まんぞくしない。だいいちにPRNGの出力しゅつりょく統計とうけいてき作為さくいえるが、リバースエンジニアリングにはたいせいがない。したがって、アルゴリズムを解析かいせきすることで特別とくべつ統計とうけいてき試験しけん設計せっけいでき、PRNG の出力しゅつりょくしん乱数らんすうではないことをしめすことができる。だい状態じょうたいあきらかであれば、過去かこ乱数らんすうれつ再現さいげんでき、攻撃こうげきしゃすべての過去かこのメッセージをむことが可能かのうとなる。当然とうぜん将来しょうらい暗号あんごう解読かいどく可能かのうとなる。

CSPRNGは、このような暗号あんごう解読かいどく対抗たいこうするものとして設計せっけいされる。

背景はいけい

[編集へんしゅう]

Santha と Vazirani は、作為さくいせいよわビット列びっとれつ複数ふくすうわせることでこう品質ひんしつ擬似ぎじ乱数らんすうれつ生成せいせいできることを証明しょうめいした[1]。それ以前いぜんジョン・フォン・ノイマンビット列びっとれつからバイアスのだい部分ぶぶん除去じょきょできる簡単かんたんなアルゴリズムがあることを証明しょうめい[2]、Santha-Vazirani の設計せっけいもとづいたCSPRNGでフォン・ノイマンのアルゴリズムを入力にゅうりょくビット列びっとれつ適用てきようする必要ひつようがある。これを entropy extraction(エントロピー抽出ちゅうしゅつ)とび、研究けんきゅうさかんな領域りょういきである。

設計せっけい

[編集へんしゅう]

ここでは、CSPRNGの設計せっけい

  1. ブロック暗号あんごう暗号あんごうがくてきハッシュ関数かんすうなどの暗号あんごうプリミティブにもとづく設計せっけい
  2. 数学すうがくてきくのがむずかしい問題もんだいもとづく設計せっけい
  3. 特殊とくしゅ設計せっけい

けて解説かいせつする。

暗号あんごうプリミティブにもとづく設計せっけい

[編集へんしゅう]
  • 安全あんぜんブロック暗号あんごうは、CTRモード動作どうささせることでCSPRNGとして使つかうことができる。これは、ランダムかぎえらんで0を暗号あんごうし、つぎに1を暗号あんごうし、さらに2を暗号あんごうし、というようにおこなう。カウンタを0以外いがい任意にんいから開始かいしすることもできる。あきらかに、その周期しゅうきn-ビットブロック暗号あんごうでは 2n であり、かぎ平文へいぶん初期しょき攻撃こうげきしゃられてしまうと、まった安全あんぜんでなくなる。また、誕生たんじょうのパラドックスから2n/2出力しゅつりょくしん乱数らんすうと1/2のかくりつ識別しきべつ可能かのうである。
  • 暗号あんごうがくてきハッシュ関数かんすうもCSPRNGとして利用りよう可能かのうである。カウンタのハッシュ次々つぎつぎ計算けいさんすればよい。しかし、これについて安全あんぜんではないとする主張しゅちょうもある[3]
  • ストリーム暗号あんごうは、平文へいぶん擬似ぎじ乱数らんすうれつと(通常つうじょう XOR で)結合けつごうすることで暗号あんごうぶん生成せいせいする。カウンタを平文へいぶんとして暗号あんごうぶん生成せいせいすれば、あらたな擬似ぎじ乱数らんすうれつ生成せいせいされ、おそらく内部ないぶ疑似ぎじ乱数らんすうれつより周期しゅうきながくできる。この生成せいせいほうは、内部ないぶ生成せいせいする擬似ぎじ乱数らんすうれつがCSPRNGであるときだけ安全あんぜんであるが、一般いっぱんにそうでないことがおおい(RC4参照さんしょう)。
  • ANSI X9.17 標準ひょうじゅんFinancial Institution Key Management (wholesale)[4]では、ブロック暗号あんごうであるDESもちいた疑似ぎじ乱数らんすう生成せいせいほうげており、FIPSにも採用さいようされている。この生成せいせいほうでは、64ビットのシード s とDESのかぎ kもちいて、つぎのように64ビット乱数らんすう生成せいせいする。まず現在げんざい日時にちじ情報じょうほう D可能かのうかぎくわしい)を使つかって、中間なかま 計算けいさんつぎ計算けいさんして乱数らんすうとして出力しゅつりょくし、シードを 更新こうしんする。64ビット以上いじょう乱数らんすう必要ひつよう場合ばあいは、上記じょうき手続てつづきを必要ひつよう回数かいすうかえす。DESをべつ任意にんいのブロック暗号あんごうえることもでき、AES利用りよう推奨すいしょうされている[5]

かずろんてき設計せっけい

[編集へんしゅう]
  • Blum-Blum-Shub は、素因数そいんすう分解ぶんかいむずかしさにもとづいたCSPRNGであり、条件じょうけんきでセキュリティが証明しょうめいされている。ただし、実装じっそうすると手法しゅほうよりも非常ひじょう性能せいのうわるい。
  • Micali–Schnorr generator, Naor-Reingold pseudorandom function

特殊とくしゅ設計せっけい

[編集へんしゅう]

以下いかのような、暗号あんごうろんてき安全あんぜんとなるよう設計せっけいされた実用じつようてきPRNGがある。

標準ひょうじゅん

[編集へんしゅう]

標準ひょうじゅん規格きかくされたCSPRNGとして、以下いかのものがある。

  • FIPS 186-2
  • NIST SP 800-90: Hash_DRBG, HMAC_DRBG, CTR_DRBG, Dual_EC_DRBG
  • ANSI X9.17-1985 Appendix C
  • ANSI X9.31-1998 Appendix A.2.4
  • ANSI X9.62-1998 Annex A.4, obsoleted by ANSI X9.62-2005, Annex D (HMAC_DRBG)

NIST では、これにかんするよいリンクしゅう管理かんりしている。

CSPRNG の統計とうけいてき試験しけんについての標準ひょうじゅんもある。

脚注きゃくちゅう

[編集へんしゅう]
  1. ^ Miklos Santha, Umesh V. Vazirani (24 October 1984). "Generating quasi-random sequences from slightly-random sources" (PDF). Proceedings of the 25th IEEE Symposium on Foundations of Computer Science. University of California. pp. 434–440. ISBN 0-8186-0591-X. 2006ねん11月29にち閲覧えつらん
  2. ^ John von Neumann (1963ねん3がつ1にち). “Various techniques for use in connection with random digits”. The Collected Works of John von Neumann. Pergamon Press. pp. 768–770. ISBN 0-08-009566-6 
  3. ^ Young and Yung, Malicious Cryptography, Wiley, 2004, sect 3.2
  4. ^ https://nvlpubs.nist.gov/nistpubs/Legacy/FIPS/fipspub171.pdf (Appendix C)
  5. ^ Young and Yung, op. cit., sect 3.5.1

外部がいぶリンク

[編集へんしゅう]