HOME > Theory > Crypt |
暗号を使おう! |
The comp.security.pgp
FAQ
Version 1.4 |
3. セキュリティの質問
|
3.1 PGPはどれくらい安全か? RSAに基づく暗号法においてまだまだわからないのは、巨大な数の素因数分解の効果的な方法があるか否か、あるいは素因数分解問題を解くことなくコードを壊すことのできるバックドア・アルゴリズムがあるか否かということである。もしそういうアルゴリズムが存在しないとしても、RSAはPGPチェーンの中では一番弱いリンクだと信じられている。
PGPに対するすべての攻撃の可能性や、欠点の可能性のすべてを論じることは、このFAQの目的を越えているだろう。ここで何がわかるかもっと知りたければ、infiNityのPGP攻撃FAQを参照のこと。 |
3.2 すべての可能な鍵を試してPGPを壊すことはできないか? これは、暗号法を最初に導入しようというときに尋ねられる最初の質問の一つである。彼らは問題の大きさを理解していない。IDEA暗号法では、128ビット鍵が必要である。2の128乗の組合わせのうちのどれでもが鍵として有効であり、また、その一つのみがすべてのメッセージ・ブロックを復号化できるのである。1秒間に10億個の鍵を試すことのできる専用チップを作ったとしよう。これは、現在実際に開発されているものをはるかに越えている。それから、そのチップを同時に10億個動かす余裕があったともしよう。それでも、128ビット鍵の可能性をすべて試すには、10兆年以上必要だ。それは、宇宙の寿命として知られているものの1000倍にもあたる! コンピューターのスピードは加速し続け、費用は急激に下がり続けている一方で、IDEAを行き当たりばったりの力ワザで攻撃して破壊しようとしてもできないだろう。
成功するかも知れない唯一の攻撃法は、数学的な観点から、平文ブロックと暗号文のあいだで起こる変化を分析して問題を解くことである。IDEAはまだかなり新しいアルゴリズムであり、複雑系理論と関連して作動する必要があるが、今のところ、IDEA暗号を解くのには、すでに実行不能だと示した力ワザ攻撃よりも優れた方法はないのである。IDEAにおいて起こる非線形の変化は、数学的問題としては非常に解きづらい部類に入る。 |
3.3 従来の暗号使用法(-c)オプションはどれほど安全か? あなたが、よい強力なランダムなパス・フレーズを使っているなら、それは実際の所、普通の暗号モードよりも強力である。チェーンの中では最も弱いリンクだと信じられているRSAを排除しているからだ。もちろん、このモードでは、あなたは秘密鍵を受け手と交換するのに、直接会うとか信頼できる仲介者を使うといった他の安全な通信手段を使う必要がある。
もしあなたが微妙なファイルをバックアップしておきたいとか、あなたが復号化する別のシステムに暗号化ファイルを持っていきたいというときには、非常に有益である。この場合、あなたは秘密鍵を持ち歩く必要がない。あなたが秘密鍵をなくしたときにも有用だ。そして、暗号化するファイルごとにパスフレーズを変えることもできるから、どれか一つのファイルを復号化できた攻撃者も、他のファイルは復号化できないのである。 |
3.4 NSAはRSAをクラックできるのか? この質問は何度もされた。もしNSAがRSAをクラックできたとしても、おそらく彼らからそれを聞くことはできないだろう。今やRSAは一般化しつつあるので、それは極めて厳重に守られた秘密なのだろう。これに対する最善の防衛は、RSAのためのアルゴリズムが全世界に知られているという事実である。多くの有能な数学者や、NSA外の暗号作成者がいて、今まさにこの分野での多くの研究がなされている。そのうちの誰かがRSAの抜け穴を発見できていたら、その話を聞いていただろうと確信している。私は、そういう発見を隠しておくようにするのは難しいだろうと思う。
こういったわけで、NSAがpgpを破ることができると「だれかが言った」というようなUSENETのメッセージを読むときには、眉に唾をつけて、その情報が正確にはどこから来ているのかを調べよう。特に、http://www.quadralay.com/www/Crypt/NSA/break-pgp.htmlのメッセージ(日本語版)は冗談である。 |
3.5 RSAは公式にクラックされたことがあるのか?RSA-129とは何か? RSA暗号メッセージが二つ、公式にクラックされた。
最初は、RSA-129鍵である。RSAの発明者は、129桁(430ビット)のRSA公開鍵でメッセージを暗号化して公開し、最初にこのメッセージを解いた人に100ドルを提供すると申し出た。1994年、Paul Leyland, Derek Atkins, Arjen Lenstra, Michael Graff に率いられた国際チームがこの公開鍵を素因数分解して平文を復元するのに成功した。メッセージはこうだった。 THE MAGIC WORDS ARE SQUEAMISH OSSIFRAGE インターネットで働いている人への電子メール、ファクス、一般の手紙で、部分的に処理してその結果を送り返してもらうという形で仕事を分担する巨大なボランティアの努力を導いた。約1600の機械が参加し、その計算力はファクス機からCrayスーパーコンピューターに及んでいた。彼らは当時知られていた最善の素因数分解アルゴリズムを使用し、その後もっとよい方法が発見されたが、結果はRSA暗号化メッセージをクラックするのに必要な作業の総量の点でやはり示唆的だった。 進行係は、プロジェクトが実際に約8か月かかって、約5000MIPS年の計算時間を費やすと見積もっていた。 このことはPGPにどう影響したか? RSA-129鍵は426ビットPGP鍵とほぼ同じ安全性を有している。これは、このプロジェクトで簡単にクラックできるということを示した。PGPは384ビット鍵を「偶然級」セキュリティとして推薦していたことがあるが、現在のバージョンでは512ビットを最小セキュリティレベルとして勧めている。 この努力は、ただ一つのRSA鍵をクラックしただけだということに注意。この実験の過程で、他の鍵のセキュリティを下げてしまうようなものは何も発見されていない。 RSA-129プロジェクトについての情報は以下参照。 ftp://ftp.ox.ac.uk/pub/math/rsa129/rsa129.ps.gz 1年後、最初の現実のPGP鍵がクラックされた。これは有名ではないブラックネット鍵、つまり「ブラックネット」として知られる匿名者のための384ビット鍵であった。Alec Muffett, Paul Leyland, Arjen Lenstra, Jim Gilloglyのチームは、十分な計算能力(約1300MIPS)を使用して、鍵を3か月素因数分解した。それから、公開されていたメッセージを鍵で復号化するのに使ったのである。 この攻撃で最も重要なことは、これがほとんど完全に秘密裏に行なわれたことである。RSA-129攻撃と違って、クラックは成功するまで公開されることがなかった。ほとんどのコンピューターは予備の時間に動くだけだったのに、総合力は巨大な、おそらくは中規模の組織に匹敵するほどになったのである。 |
3.6 「あなたの目だけに」(-m)オプションはどれほど安全か? 全然安全ではない。それを破る方法は数多くある。おそらく、最も簡単な方法は、あなたの画面出力を次のようにしてファイルに落とすことだろう。
pgp [ファイル名] > [ディスクファイル]
-mオプションは、平文が生成されないようにするための安全装置オプションとして意図されたものではない。平文のコピーをシステム内に残してほしくないということをファイル復号化のときに警告するためだけのものである。 |
3.7 パスフレーズを忘れてしまったら? 一言で言えば、忘れるな。パスフレーズを忘れたら、どの暗号化ファイルも復元する方法が全くない。もしパスフレーズを忘れることを心配するなら、そのコピーをあなたの秘密鍵で作り、それからパスフレーズを何か別のものに変え、それから秘密鍵を変更されたパスフレーズと一緒に安全なところに置いておくことだ。
|
3.8 なぜ「パスワード」ではなく「パスフレーズ」という言葉を使うのか? これは、パスワードを選べと言われたとき、多くの人は同じ単純で一般的な単語を選ぶからだ。これはシステム上でパスワードを試すための辞書を使うプログラムでクラックされてしまう。ほとんどの人々は、文字と数字が無意味に並んでいるような真にランダムなパスワードを選ぼうとはしないから、少なくとも無関係な単語を並べたパスフレーズを使うように人々に勧めるために、パスフレーズという用語を使っているのである。
|
3.9 PGPをクラックする最善の方法は何? 現在、PGPに対して可能な最善の攻撃は、パスフレーズに対する辞書攻撃である。これは、辞書から単語をプログラムで抜き出して、さまざまな方法であなたのパスワードを推測するものである。
これは、強力なパスフレーズを選ぶことがいかに大切かという理由である。これらのクラッカー・プログラムは非常に洗練されていて、言語的慣用語、有名な句、文法規則を、推測のときに利用する。単一の語による「フレーズ」、固有名詞(特に有名なもの)、有名な引用文は、プログラムで「あっさり」クラックできてしまうものである。 パスフレーズを推測することで慣例的に暗号化されたファイルを「クラック」することのできるプログラムがある。それはどのような暗号解読もしないから、強力なパスフレーズを選べば、あなたのファイルは安全だろう。プログラムそのものと情報については以下参照。http://www.voicenet.com/~markm/pgpcrack.html 暗号化されたメッセージの内容に迫る方法はほかにもある。買収、コンピューターがメッセージを解読するときの電子的放出を探ること(よくテンペスト攻撃と呼ばれる)、ブラックメール、「ゴム製ホース暗号法」――パスフレーズを言うまでゴムホースであなたの頭を殴りつけること。 |
3.10 私の秘密鍵束が盗まれたら、私のメッセージは解読できるのか? いいえ。あなたの秘密のパスフレーズが盗まれない限り、あるいはあなたのパスフレーズが総当たり攻撃を受けない限りは。双方がなければ役に立たない。しかし、鍵を撤回して、別のパスフレーズを使って鍵のペアを新しく生成すべきだろう。古い鍵を撤回する前に、ほかの人が新しいアドレスを知ることができるように、新しい鍵IDについて述べている別のユーザーIDを追加しておいてもいいだろう。
|
3.11 どのようにパスフレーズを選んだらいいか? PGPで有効になるセキュリティすべては、もし秘密鍵束を暗号化するパスフレーズにいいものを選ばなければ、完全に無意味になる。誕生日、電話番号、恋人の名、簡単に想像できる一般的な単語を使ってしまう人があまりにも多い。よいパスフレーズを生成するための数々の示唆はあるが、セキュリティ上最もよいのは、パスフレーズの文字を選ぶときに完全にランダムにすることである。これは少々覚えにくいが、案税制が高まるのは価値があることだ。完全に最小のパスフレーズとして、私は最低8つの文字と数字のランダムな組合わせ、できれば12文字というのがいい。a-zの小文字と数字の0-9で作られた12文字パスフレーズなら、約62ビットの鍵を持つことになり、56ビットDES鍵よりも6ビットよいものとなる。もし望むなら、同じレベルのセキュリティを得るための文字数を減らしたければ、パスフレーズの中で大文字小文字を混ぜればいい。
普通の単語で、句読法や特別な文字なしに構成されているパスフレーズは、辞書攻撃にさらされやすい。文字の入れ替えや綴りの誤った単語で、あなたのパスフレーズは無防備でなくなるが、専門辞書攻撃ならこういった類のことをまかなっている。 |
3.12 どうやってパスフレーズを覚えたらいいか? あなたが私に似ていて、1ダースもの違ったパスフレーズを毎日の生活で必要とするようなら、これは特に問題になるかもしれない。それを覚えておくためにどこかに書いておくことは、パスフレーズの当初の目的そのものを破ってしまう。これについてはいい方法はない。とにかく覚えておくか、それをどこかに書いて解決させるリスクを犯すしかないのである。
定期的にすべてのパスフレーズを試すことにするとか、心の中で暗唱してみるというのはいい考えだろう。充分に繰り返すことは、必要なときにすっかり忘れてしまうということを防いでくれるだろう。 長いパスフレーズを使うなら、最初の部分を書き留めて置いてそれをヒントとし、残りの部分を思い出す助けにするということが、リスクなくできるだろう。覚えやすくて強力なパスフレーズを選ぶ簡単な方法としては、Arnold Reinholdのダイスウェア・ウェブサイト参照のこと。 |
3.13 手に入れたPGPのコピーが改変されていないことをどうやって立証するか? 現在、自分用のPGPのコピーを持っていないなら、どこから最初のコピーを手に入れるか注意してほしい。二つ以上のコピーを信用できると思われる別々のところから手に入れることをおすすめする。コピーを比較して、完全に同じかどうかチェックしてほしい。悪いコピーであるという可能性は捨てきれないかもしれないが、そういう事態に陥ることをかなり防ぐ。
すでに信頼できる版のPGPを持っているのなら、未来の版の妥当性のチェックは簡単である。MIT PGPの新しいバイナリ版は、一般的な書庫フォーマットで配布されている。受け取った書庫ファイルは、別の書庫ファイルと、書庫ファイルと同じ名前で拡張子が.ASCであるものと、"setup.doc"ファイルがある。.ASCファイルは、特定のPGP配布物への攻撃に備えて開発者によって作られた内部の書庫ファイルのための独立した署名ファイルである。開発者以外の誰もその秘密鍵にアクセスできないので、それに検出されることなく書庫ファイルを改変することはできない。もちろん、内部の書庫ファイルには新しいPGP配布物がある。 略注:もし古いコピー(2.3a以前)からMIT PGPにアップグレードするなら、署名の確認に問題があるかもしれない。この問題の扱いについては、3.14参照。 署名をチェックするために、新しい版を含んだ書庫ファイルをチェックするための古い版のPGPを使わなければならない。もしあなたの古い版のPGPがC:\PGPというディレクトリにあって、新しい書庫ファイルと署名がC:\NEWにある(そしてMIT
PGP 2.6.2を検索した)ならば、あなたは以下のコマンドを実行すればいい。 MIT PGPのソース配布を調べれば、さらに二つのファイルが配布されていることがわかる。RSAREFライブラリのための書庫ファイルと、RSAREFのための署名ファイルである。メインPGPソース書庫を確認するのと同じやり方で、RSAREFライブラリを確認できる。 MIT版でないものは、PGP.EXEプログラムファイルのみに対する署名を含んでいるのが典型的だ。このファイルはふつう、PGPSIG.ASCと名付けられている。あなたは、新しい版の署名ファイルとプログラムファイルについて、古い版のPGPを実行することでプログラムそのものの正しさをチェックできる。 Phil Zimmermannは、2.3aまでのPGPのすべての版に自分で署名していた。それ以降は、PGPの版それぞれの主要な開発者が配布物に署名している。これを書いている現在、配布物に出ている署名者は以下のとおり。 MIT PGP 2.6.2 Jeff Schiller <jis@mit.edu> ViaCrypt PGP 2.7.1 ViaCrypt PGP 2.6.2i Stale Schumacher <staalesc@ifi.uio.no> PGP 2.6ui mathew <mathew@mantis.co.uk> |
3.14 私の古いPGP 2.3aでは新しいMIT PGPの署名を確認できない! この理由はもちろんMIT PGP(Jeff Schillerがサインしている)によって作られた署名が、もはやPGP
2.3aでは読めないからである。
何よりもまず、署名を確認することができず、手に入れたものが悪いコピーではないということを明らかにする他の方法を使わなければならない。しかし、これは安全ではない。もしあなたが注意深くないなら、PGPの悪いコピーを受け取ってしまうだろう。 署名をチェックすることに集中するなら、暫定的にMIT PGP 2.6にアップグレードするといい。このやや古いバージョンは、「時限爆弾」が効力を持つ以前に署名されており、その署名は古い版のPGPでも読める。この暫定的中間版の署名を有効にすれば、あなたは現在の版をチェックするために、この版を使うことができる。 別の選択肢として、PGP 2.6.2iか2.6uiにアップグレードして、2.3aでその署名をチェックし、それからさらに新しい版の署名をチェックするのにこれを使ってもいい。合衆国居住者はその間、RSA特許に違反しているかもしれない。それに、いずれにせよ、2.3aを使うことで違反しているのかもしれないから、それ以上悪くなるわけではない。 |
3.15 プログラムにトラップドアがないことはどうすればわかるか? PGPのフリー版のためのソースコードが完全に公開されていることは、隠されたトラップドアが存在できないということを意味している。ソースコードは数え切れない人々によって試され、そのようなトラップドアは発見されていない。あなたの実行ファイルが実際に与えられたソースコードを表現していることを確認するためにすべきことといえば、全プログラムを再コンパイルするだけだ。
|
3.16 NSAがMIT PGPにバックドアを入れ、バックドア入りのものだけを合法として認めている、と聞いた。 まず第一に、NSAはPGPが「合法」になるために何も関係がない。MIT PGPが解決した法的問題は、PGPで使われるRSAアルゴリズムの特許の扱いであった。
第2に、PGPのすべてのフリーウェア版は、完全なソースコードを、PGPとRSAREFライブラリに公開されている(他の以前のフリーウェア版と同じように)。このため、上記の問題で言及されたのと同じ仲間の参照の大正となっている。もし意図的な抜け穴があるのなら、それはおそらく指摘されているだろう。もしあなたがほんとうに偏執的であれば、自分自身でコードを読んで、抜け穴をさがせばいい! |
3.17 国際的なバージョンにバックドアがあるか? ない。PGPの国際版はPGPの不法輸出された版に基づいており、合衆国でのみ有効な特許に違反しているかもしれないRSA暗号化/復号化ライブラリ(MPILIB)を使用している。
どの国際版にも、いかなる国際的バックドアはないし、暗号強度を弱めるようなものも全くない。 |
3.18 PGPをネットワークやメインフレームのようなマルチユーザーシステムに置いてもいいか? よい。PGPはUnixやVMSといったハイエンドOS用のものもある。他の版も、ネットワークに接続された機械で簡単に使ってよい。
しかし、注意深くしなければならない。パスフレーズが送られるときにネットワーク監視装置の置かれたところで明らかになるかもしれないし、マルチユーザー機のオペレーターが「キーボード・スニファー」をインストールして、あなたがタイプしたパスフレーズを記録するようにしているかもしれない。また、PGPがホストシステムで使われているとき、それは何かのトロイの木馬プログラムにとらえられているかもしれない。また、あなたの秘密鍵束が復号化されているときでさえ、だれかが見ることができるように横に来させることすらいいことではないのである。 それではなぜ、PGPはUnixやVMS機のために配布されているのか? その簡単な答は、UnixとVMS機はすべてがネットワークサーバーや「メインフレーム」というわけではないからである。もしあなたがコンソールからしか機械を使わないなら(あるいはKerberosなどのネットワーク暗号商品を使うなら)、あなたは単独のユーザーであり、承認されざるアクセスを防ぐための理想的なシステムセキュリティ手段をとって、上記のリスクを理解し、これらのシステム上でPGPを安全に使うことができるのである。 また、PGPをマルチユーザーシステムやネットワークで使うとき、署名確認や復号化のために秘密鍵を使わないようにすることもできる。マルチユーザーシステムで個人鍵を使わなかったり、パスフレーズを入力しないなら、PGPをそこで安全に使うことができる。 もちろん、それらすべては結局、あなたが自分の秘密鍵をどれだけ重要なものと考えるかにかかってくる。ユーズネットへの署名投稿だけに使うとか、重要な指摘通信には使わないというのなら、上記の防御を執拗に考える必要はない。もしあなたがシステム管理者を信頼しているなら、鍵束にアクセスしてこようと狙う悪いユーザーからの防御だけをすればいい。 |
3.19 PGPをWindowsやOS/2のような「スワップ」するOSで使ってもいいか? よい。DOS用PGPは、これらのシステムのほとんどの"DOS窓"で動き、PGPはそれ専用にも作られている。
スワップするシステム上でPGPを使う問題は、そのシステムが、パスフレーズ・プロセス中にPGPをディスク上にスワップすることがあるということだ。まさにそのときにスワップされるなら、あなたのパスフレーズはスワップファイルの中に明かな文として残されてしまう。「まさにそのときに」スワップされることがどれだけ簡単に起こるかは、OSによる。Windowsは、パスフレーズを極めて規則的にディスクにスワップすると報告されているが、これは最も非効率的なシステムだ。PGPは毎回パスフレーズをメモリに残さないよう、終了前にパスフレーズを保持するために使われたメモリを「ワイプ」するが、この解決法も完全ではない。 もしこれを心配する理由があるなら、スワップファイルをワイプするユーティリティを使って、パスフレーズのいかなる痕跡もシステムに残さないようにしたほうがいいだろう。そのようなユーティリティは少なくともWindowsとLinuxにある。 |
3.20 IDEA, MD5, RSAの混合ではなく、RSA単体で使わないのはなぜか? 二つの理由がある。第一に、PGPで使われているIDEA暗号化アルゴリズムは、実のところ、同じ長さの鍵のRSAよりはるかに強い。1024ビットのRSA鍵とくらべてさえ、IDEA暗号のほうがはるかに強力だと信じられているし、また、チェーンは最も弱いリンクよりも強くないので、RSAは実際にはRSA-IDEA法のなかで最も弱い部分だと信じられている。第2に、RSA暗号はIDEAよりもはるかに遅い。ほとんどの公開鍵法でのRSAの唯一の目的は、従来の秘密鍵アルゴリズムに使われるセッション鍵の転送と、署名の複合のためなのである。
|
3.21 これらのセキュリティ手段はみな、少々偏執的ではないか? それは、あなたのプライバシーというものがあなたにどういう意味を持つかにかかっている! 政府を除いても、あなたのプライベートなメールを読みたがっている人々は数多くいる。そして、こういった人たちの多くは、あなたの手紙を解読するための十分な長さを望んでいる。さまざまなコンピューターシステムに侵入経路を見つけるウィルスプログラムを作ろうとする人々の仕事の総量を見るがいい。カネがからんでいない場合でも、システムに侵入することに没頭している人たちがいるのだ。
加えて、私的な鍵は復号化よりもはるかに有益であることを忘れないでほしい。あなたの私的な鍵を手に入れた人は、何かに署名をして、それをあとから否定することは困難になってしまう。あなたの私的鍵の安全性を保つことは、少なくとも厄介ごとを防ぐだろうし、最大、詐欺や契約違反の被害を防ぐことができる。 さらに、上記の手続きの多くは、いくつかの一般的な間接的攻撃に効果的である。たとえば、電子署名は、署名されたファイルの効果的な正しさの検査に使うことができる。したがって、PGPの新しいコピーの署名をチェックすることによって、あなたのコンピューターがPGP経由でウィルス感染しないことが保証される(もちろん、PGPの開発者がウィルス契約を結んで、署名まえにPGPに感染させない限り、だが)。 |
3.22 何らかの訴訟で私のパスフレーズを明かすよう強制されうるか? Gary Edstromは、このFAQの初期の版で次のようにレポートしていた。
以下の情報は合衆国の法廷の合衆国市民にのみあてはまる。他の国の法律は違うかもしれない。 |
[ PGP-FAQ目次] [ 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11] [ 追補 1|2|3|4] [ このFAQについて | 用語集 | 著作権] |