種も仕掛けもない数 (暗号)

提供: testwiki
ナビゲーションに移動 検索に移動

暗号理論における種も仕掛けもない数 (Nothing-up-my-sleeve number) とは、なんらかの性質が隠されていないことが自明であるように作られた数を指す。こういった数は暗号学的ハッシュ関数テンプレート:日本語版にない記事リンク[訳注 1]といった暗号学的関数を設計する際に用いられる。これらのアルゴリズムはしばしばデータを初期化したりデータに加え入れたりするための適当な定数を必要とするが、暗号設計者はこれらの定数が悪意ある目的(例えばバックドアを仕込むなど)で選ばれたものでないことを明示したい場合がある[1]。このようなときには調節の余地が少ないよう作られた数を使うことができる。例えば円周率の最初の何桁かを定数として採用するなどである[2]。一方で「円周率の小数点以下何桁も後ろの方」などは、暗号設計者が後で悪用するための秘密の脆弱性を仕込むことを目的として作為的にその位置を選んだ可能性があるので、信頼できるとはみなされない。

円周率、ネイピア数代数的無理数などの実数を位取り記数法で表記したときの桁は均等に出現すると予想されている(正規数を参照)。これらの数は一見ランダムではあるものの情報量は非常に低いので、コルモゴロフ複雑性の観点からは乱数ではない。こういった数を用いることは 1975 年アメリカ合衆国政府から発表された Data Encryption Standard (DES) に関する初期の論争が動機づけとなった。DES は S ボックスで用いている定数に対する説明がないことで批判を受けていたのである(実際には現在でいうところの差分解読法を防ぐため注意深く選択された定数であったことがのちに判明したが)[3]。こういった事情から、暗号に用いる定数を生成するためのより透明性の高い方法の必要性が感じられていた。

袖に隠されたカード

「種も仕掛けもない数」は英語では "nothing-up-my-sleeve number" というが、"nothing up my sleeve" とはマジシャンがマジックを行う前に袖を開いて何も隠していないことを示すときに使うフレーズである。

異なる例

  • テンプレート:仮リンク ハッシュの S ボックスはランダムに生成されたものだと主張されていた。しかし解析の結果、実際にはアルゴリズム的に生成されたものであり、いくつかの「難解な」弱点を有することが判明した[12]
  • DES は NSA により指定された定数を含んでいた。実際にはランダムからは程遠かったことが判明したものの、それらの定数は当時まだ公には知られていなかった差分解読法への耐性を強めていた[3]
  • アメリカ国立標準技術研究所が推奨していた暗号論的擬似乱数生成器 テンプレート:仮リンク において使用が推奨されていた定数は、過去の出力履歴からその先の出力を開発者が予測できるようにするために選択されたものであった可能性があるとして、2007 年に批判を受けた[1]。2013 年 9 月、The New York Times は「元 NSA の請負人であったエドワード・スノーデンによる内部情報リークによると、NSA が開発し NIST standard 2006 (Dual EC DRBG standard) に使用されていた疑似乱数生成機は NSA のためのバックドアを持っていた」と報じた[13]
  • 楕円曲線暗号に用いるため NSA により標準化された楕円曲線 P curve の係数は、特に説明のないテンプレート:仮リンクから計算されたハッシュ値であった。以下はその表である。
    • P-224: bd713447 99d5c7fc dc45b59f a3b9ab8f 6a948bc5
    • P-256: c49d3608 86e70493 6a6678e1 139d26b7 819f7e90
    • P-384: a335926a a319a27a 1d00896a 6773a482 7acdac73

直接的に関係のある話ではないが、Dual_EC_DRBG のバックドアが暴かれて以降、NIST による P curve の定数[14]に対する疑念は、NSA が秘密鍵を割り出しやすくする[15]ためにそれらの定数を定めたのではないかという懸念[16]につながった[17]。それ以降、多くのプロトコルやプログラムは NIST P-256 の代わりに Curve25519 を使い始めた。

限界

バーンスタイン及びその共著者たちは、楕円曲線などの暗号オブジェクトを生成する複雑な手続きの開始点として「種も仕掛けもない数」を用いることはバックドアが仕込まれることを防ぐには十分ではない可能性を示した。例えば円周率、ネイピア数、オイラーの定数√2, √3, √5, √7, log(2), 黄金数、ζ(3), ζ(5), sin(1), sin(2), cos(1), cos(2), tan(1), tan(2) などの一見すると無害で「興味をひかない」簡単な数学定数であっても、バイナリにおける表現方法は多数ある。またこれらの定数をシードとして用いるとき、SHA-1, SHA-256, SHA-384, SHA-512, SHA-512/256, SHA3-256, SHA3-384 など数多くのハッシュ関数を採用することができる。

暗号オブジェクトの選定において調節可能なパラメータが十分に多くある場合、組み合わせ爆発によって暗号化手法と一見簡単な数学定数の組み合わせは非常に大きくなる。したがって、機械的な探索によって所望のバックドアを持つオブジェクトを作ることが可能となってしまう[18]

脚注

出典

テンプレート:Reflist

訳注

  1. 暗号には大きく分けて「コード」(code) と「サイファ」(cipher) の 2 種類があるが、前者は単語や文を別の単語や記号に置き換える方法を指し、後者は文字レベルでの置換や転置を行う方法を指す。

参照


  1. 1.0 1.1 テンプレート:Cite magazine
  2. 2.0 2.1 テンプレート:Cite web
  3. 3.0 3.1 Bruce Schneier. Applied Cryptography, second edition, John Wiley and Sons, 1996, p. 247.
  4. テンプレート:IETF RFCSec. 3.4
  5. FIPS 180-2: Secure Hash Standard (SHS) テンプレート:Webarchive (PDF, 236 kB) – Current version of the Secure Hash Standard (SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512), 1 August 2002, amended 25 February 2004
  6. テンプレート:Cite web
  7. テンプレート:Cite web
  8. テンプレート:Cite report
  9. テンプレート:Cite conference
  10. テンプレート:Cite web
  11. テンプレート:Cite web
  12. テンプレート:Cite journal
  13. テンプレート:Cite news
  14. テンプレート:Cite web
  15. テンプレート:Cite web
  16. テンプレート:Cite web
  17. テンプレート:Cite web
  18. How to manipulate curve standards: a white paper for the black hat テンプレート:Webarchive Daniel J. Bernstein, Tung Chou, Chitchanok Chuengsatiansup, Andreas Hu ̈lsing, Eran Lambooij, Tanja Lange, Ruben Niederhagen, and Christine van Vredendaal, September 27, 2015, accessed June 4, 2016