HOME > Theory > Crypt |
暗号を使おう! |
The comp.security.pgp
FAQ
Version 1.4 |
付録4――PGP 5.0の高速鍵生成機能について
|
-----BEGIN PGP SIGNED MESSAGE-----
これは、その作動法ではない。DSS鍵は4つの構成要素を持っている。 g -- 生成器(ジェネレーター)と呼ばれる。他の作業が行われる土台。 したがって、あなたの公開鍵は g,p,q,yの合成である。秘密鍵は、g,p,q,xの合成である。 PGP 5.0は、Diffie-HellmanのElgamal変数を使う。それは、"q"値を除いて、DSSと同じパラメーター・セットを持っている。PGP 5.0鍵は実際には二つの完全に別々の鍵である。署名に使われるDSS鍵と、暗号に使われるElgamal鍵である。 PGPは最高4096ビットのElgamal素数をサポートしている。 鍵生成に時間がかかる部分は、(DSSとElgamalのために)巨大な素数 "p" を選ぶことである。しかし、これらが「おおっぴらな」値であって、多くの人々が同じ p,g(とDSSのためのq)を使ったとしても本当は重要ではない。 とはいえ、Diffie-Hellman アルゴリズムは「もろい」。Diffie-Hellman鍵(かDSS鍵)を攻撃するときには、素数を攻撃することになる。ログ表を計算して"y"値を手に入れ、そして"x"値を調べることははっきりしている(xは秘密鍵である)。また、弱い"p"値を特別に計算することも可能だ。だから、使っている"p"値が安全であると信用することが重要である。 1024以上の素数値のためのログ表を計算することは、現在、コンピューター的には手に負えない。 そこで、PGP 5.0が安全な素数フィールドを提供するためにやっていること。 初心者のための、PGP 5.0用作りつけの素数のすべては、少なくとも1536ビットの長さがある。つまり、もしDSS鍵のための1024ビットの値(おすすめ)を選んだとき、それはあなたのためにランダムに生成されているのと同じことだ。だから、もしだれかがコンピューター時間を大量にかけて、1024ビット素数のログ表を解くことができたとしても、それは一つの鍵の値しか得られないのである(これはRSAへの素因数分解攻撃に似ている)。 ランダムな2048ビット素数を生成するのにしばらくかかったとして(上記ほどは長くない)、PGPは組み込まれた値を持っている。組み込まれた値に「トラップ」が仕掛けられていないことを保証するため、それが作られる方法を文書化しよう。 ここに詳細をすべて検討するつもりはないが、ガンジーからの引用文が素数検索のためのランダムな開始点を作るハッシュ機能を通して実行されるというのが要点である。使われたガンジーの引用は、「あなたのすることはすべて取るに足りないが、それをすることは非常に重要だ!」 これが意味することは、1024ビットDSS素数と共有された(組み込まれた)2048ビットDH素数で、DSS/DH鍵をひじょうに妥当な時間で作ることができるということだ。 軽量化は、「もし仮に」だれかが、組み込まれた2048ビットDH素数の一覧表を計算できたならば、その素数を使っているすべての暗号化鍵を破ることができるだろう。しかし、2048ビット素数は、一覧表を計算するには「すごく」「すごく」「すごく」難しい素数なのだ。それは私の生きているあいだにはありそうにもない(あるいは、私の孫の世代でも、少なくとも数学的打開がない限りは)。 ただし、もしあなたが心配なら、あなた自信のDH素数を作ることをおすすめする。そのためには、fastkeygen オプションをチェックしなければそれでいい。 へっ、PGPにバックドアを作りたいなら、悪い素数を使うよりもずっといい方法があるだろうよ(素数がトラップされているかどうか、そんなバックドアが見つかるかどうか、調べてみたらいい)。 -Jeff -----BEGIN PGP SIGNATURE----- iQA/AwUBM6mKcPAgc1f0FJUrEQLoCACgqObiYpKf486H6dQWDdNWSsIjPuEAoLKk (訳注:この署名は機能しません) |
[ PGP-FAQ目次] [ 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11] [ 追補 1|2|3|4] [ このFAQについて | 用語集 | 著作権] |