<



PGP のすすめ


Eメールのセキュリティと暗号化

この文章をお読みになっている人のほとんどは、毎日のようにEメールをチェックし、 多くは仕事や趣味でメールの送受信をしていて、Eメールを使わない生活は考えられなくなっているのではないだろうか。 Eメールは世界中のどこにいる人とでも瞬時にして、低コストでメッセージを交わすことが出来る便利な電子郵便だ。

しかしEメールを郵便物として考えるならば、それはハガキであり、決して封書ではない。 それは書かれていることを覗き見ようとする人の目から守られてはいない、ということだ。 普通の人には実感が沸かないことであるが、インターネットでやりとりされる情報は目的地に到達するまでの間に他のコンピュータやルータを経由して行く。 Eメールも同じで、それがインターネットに流されると多くの人の手渡しで送り届けられるハガキのようなものと考えれば良いかも知れない。

だからEメールのメッセージを盗み読むことは、その手段を持つ者にとっては難しいことではない。 しかも第三者に読まれたかどうかをこちら側で確認する手立ては、残念ながら無い。もっと悪いことには、滅多に無いことではあるにしても、 メッセージが改竄されて送り届けられる危険性もゼロではないということだ。この危険性を回避する最もわかりやすい手段は、メッセージに封をすること、 すなわち暗号化である。

暗号文は通常、平文を他の文字に置き換えたり文字の順序を並べ替えたりして、普通の人には判読不能にした文であり、 平文の暗号化には一定の形式があって、この形式の逆をたどれば元の文に戻すことが出来る(これを復号化と言う)。 現代の暗号文では極めて複雑な変換を高速に処理しなければならないために、専らコンピュータが主役となっている。 たとえ解読法がわかっていても人の手で1つ1つ復号化したのでは、長い文だと解読に何日、いや何ヶ月も何年もかかってしまうからだ。

例えばあなたが何人かの人と暗号文でやりとりしなければならなくなった場合を考えてみよう。 平文を暗号化したり復号化したりするためのツールは皆が所有しているという前提である。この場合、平文を暗号化するためのアルゴリズムがたった1種類しか無かったとすると、 あなたがAさんに送った暗号文は、BさんにもCさんにも解読が可能になってしまう。 そこで、アルゴリズムは共通だが、を相手ごとに区別する方法が考えられる。こうすれば、Aさんに送った暗号文はAさんにしか、 Bさんに送った暗号文はBさんにしか読むことが出来ない。ではとは何か?

平文を一定のルールに従って他の文字に置き換えたり文字の順序を並べ替えたりすることを暗号のアルゴリズムとすると、 すべての文字を同じルールで変換するのではなく、個々の文字について変換のルールを与えるのがと言うことが出来る。 鍵はふつう何十ビットかの長さを持つデータで、対応する文の1つ1つの文字をこの鍵に従って変換させる。平ったく言えばそういうことだ。 アルゴリズムが同一でも、鍵がピッタリ合わなければ暗号文を復号化することが出来ない。これによって、個々の暗号文のセキュリティが守られる。

しかし、あなたとAさん、Bさん、Cさんの4人の間で暗号文を交わし合う場合、「あなた−Aさん」「あなた−Bさん」「あなた−Cさん」「Aさん−Bさん」 「Aさん−Cさん」「Bさん−Cさん」の6通りの鍵が必要になる。つまり組み合わせ論に従って、人数 x(人数−1)÷2の鍵が必要となり、 10人の間では45鍵、100人の間ではなんと4,950鍵が理論上は必要となるのだ。この効率の悪さは鍵管理の点で問題となる。

もう1つの問題は、鍵の配布をどうするかだ。あなたが遠くに住む誰かと暗号文を交わす必要が生じた場合、鍵はどうやって渡すのか? 暗号鍵はデジタルなデータだからメールで送ったりフロッピーに入れたりすることは可能だ。しかしそもそもメールの安全を守るための鍵をメールで送ることはナンセンスであるし、 フロッピーに入れて郵便や宅配便で送るとなると負担が大きくなる。

公開鍵暗号方式

こうした問題が生ずるのは、従来の暗号が鍵1つで暗号化も復号化も出来るという共通鍵方式を用いていることに起因する。 これに対して近年注目されている公開鍵暗号方式は、暗号化のための公開鍵と、復号化のための秘密鍵という2種類の鍵をペアで用いる。 両者はプログラムによって自動的に生成され、数学的には関係づけられているが、 公開鍵から復号鍵を求めることは(理論上はともかく)実践的には不可能に近い。例えば RSA 公開鍵システムは、大きな数の素因数分解が極めて難しいという原理を利用し、 これが鍵のサイズ(ビット数)に関連づけられている。

公開鍵を用いて平文を暗号化すると、それに関連づけられた秘密鍵でしか復号化することが出来ない。公開鍵は安全と考えられるので、あなたは公開鍵を相手にメールで送るなり、 ホームページや公開鍵サーバに登録することにより、それを使ってあなた宛の暗号文を送ってもらうことが出来る。一方秘密鍵の方は、 あなたが安全に保管し、この鍵を用いてあなた宛の暗号文を復号する。この公開鍵暗号方式により、鍵の配布をどうするかという第2の問題がクリアされるだけでなく、 公開する人の人数分しか鍵管理の必要がなくなるため、第1の問題も解決される。

但し公開鍵方式による暗号化・復号化は、共通鍵方式に比べて処理に時間がかかり、長い文の処理には向かないという欠点がある。 そこで実際には共通鍵方式によってメッセージを暗号化し、その鍵を、公開鍵方式で暗号化するという二重の処理が用いられている。 復号化するときはこの逆で、秘密鍵によって復号された共通鍵方式の鍵により、メッセージを復号する。

公開鍵暗号方式では、メッセージを送りたい相手の公開鍵によって平文を暗号化するのが原則だ。 あなたの秘密鍵によって暗号化されたメッセージはあなたの公開鍵によって誰でも解くことが出来ることになり、暗号の意味はない。 但しそれは、あなたしか知らない秘密鍵によって暗号化されたわけであるから、間違いなくあなたからのメッセージであるという証拠になる。 この原理を用いて、デジタル署名を行うことが出来る。デジタルな印鑑と言い換えてもいい。

従来、「言った、言わない」のトラブルを回避するために有印文書が用いられているが、Eメールはメッセージの気軽なやりとりには便利でも、 証拠能力が無いという欠点があった。デジタル署名は、ある種の高速な一方向関数を使ってメッセージから固定した長さのメッセージダイジェストを生成する。 印鑑のようにどんな文章にも同じシンボルが用いられるのと違って、文章に応じて変化するから、デジタル署名を盗用して他人のふりをすることは出来ないし、 文章が改竄されればデジタル署名との照合により、それが告知される。同時にそれは、 メッセージの作成者が間違いなくそのメッセージを作成したことの否認できない証拠となろう。

暗号文を作成する機会はめったに無いにしても、平文に署名してメッセージの信憑性を保証したいと考える機会は少なくないのではないだろうか。 公開鍵暗号方式では、平文に署名を添付することも、暗号化されたメッセージに署名を添付することも出来るようになっている。

従来、暗号と言うと一部の特殊な活動をする人々が使用するもの、というイメージが強かった。しかし公開鍵方式では1対1でのやりとりが原則であり、 特定のグループの間でセクト的に用いられるためではなく、個人のプライバシーやセキュリティを保護したり、メッセージの信憑性を保証したりするために使われる。 暗号化・復号化とメッセージの検証はプログラムが自動で行ってくれるので、あなたが暗号について特別な知識や関心を持っている必要はない。

現在、公開鍵の原理を用いてEメールメッセージの暗号化を行うシステムとしては、Network Associates 社の PGP と RSA Data Security 社の S/MIME が広く知られている。 両者は、公開鍵暗号化方式を用いてメッセージの暗号化・復号化を行い、メッセージを一方向性ハッシュ関数で圧縮後、秘密鍵で生成したデジタル署名を用いるといった基本部分でよく似ているのだが、 (暗号化のアルゴリズムの違いのような面を別にしても)鍵管理の仕方が大きく違っている。

PGP では鍵の管理をユーザ自身が行い、ユーザ同士が互いに鍵を交換し合うことで鍵の信頼関係を確立しようとするのに対し、 S/MIME では鍵の管理を認証局に委託し、認証局から鍵を受け取り証明書を発行してもらうというシステムだ。突き詰めれば、自分自身を信用するのか、それとも外にあるオーソリティを信用するのかという選択肢になる。 また対応するメールソフトにも違いがあるようだ。これについては、あなたがお使いのメールソフトがどちらに対応しているのかをご自分で調べてほしい。 ただ PGP の場合は特定メーラーのプラグインに頼らない使い方もできる。

メッセージのセキュリティが問題となるのはEメールだけではない。暗号なんて関係ないよ、と思っているあなたでもSSLという言葉は聞いたことがあるだろう。 WWWブラウザ上でオンラインショッピングをするとき、クレジットカード番号などの個人情報を入力することで、その場で商品が購入できるのはとても便利だが、 インターネットに送信された個人情報は安全なのか、という心配があるはずだ。SSLでは Web クライアントと Web サーバの間の通信経路を暗号化によって安全にするが、ここでも秘密鍵暗号化方式が応用されている。

Netscape Communicator や Microsoft Internet Explorer では、SSLを使用しているサイトにアクセスするとブラウザのステータスバーにロックされた鍵のマークで示されるのですぐにわかる。 また Netscape Communicator では「セキュリティ」ボタンをクリックすることで、或る Web ページが暗号化されているかどうかや、 認証局によって発行された証明書の内容を確認することが出来る。このほか、企業などのイントラネット間を暗号化されたネットワークで接続する技術として最近注目されている VPN にも公開鍵暗号方式が利用されている。

話を暗号化メールに戻すと、PGP と S/MIME のどちらを選べばよいのか、と迷う人もあるだろう。S/MIME の方は、 Netscape Messenger や Microsoft Outlook(Express) のような大手のメールソフトが対応しており、 またSSLの場合のように認証局の証明書がもらえるので、という理由で魅力を感ずるかも知れない。但し現在のところ、影響力や個人レベルの広がりの大きさという点では、 PGP の方が勝っているように思われる。以下では PGP に絞って話を進めることにする。

PGP について

PGP(Pretty Good Privacy)は Philip R. Zimmerman 氏によってオリジナルが開発され、公開鍵に RSA 暗号方式、共通鍵に自家製の暗号方式を入れて1991年にバージョン 1.0 が公開された。 翌1992年には、1.0にインスパイアされた人々が PGP に本格的な IDEA 暗号方式を搭載したバージョン2.0をリリースし、これが標準となった。 PGP は多くのコンピュータユーザに支持され、現在までに様々な人の手によって、様々なバージョン、米国版と国際版、普及版と商用版などが公開されている。 バリエーションが複雑なのは、当初 PGP が米国内で有効であった RSA の特許に抵触していたとか、暗号が軍需品と見なされるために米国版の国外への輸出が禁止されていたといった問題が絡んでいるためだが、 現在では法的な問題は解決済みとなっているようである。

PGP はインターネットからダウンロードできるフリーウェア版のほか、安心して使用したい人やビジネスユースを考えている人のために店頭で購入できるパッケージ版がある。 PGP が広く普及したのはバージョン 2.x からであった。現在入手可能な初期版は 2.6.3i で(i は国際版を表す)、公開鍵暗号方式に RSA、共通鍵暗号方式に IDEA、メッセージダイジェスト用に MD5 を使用している。ほとんどの日本製メールソフトが対応しており、ユーザも多いというメリットがあるが、 公開鍵に RSA 方式しかないこと、上位互換性が無いこと、コマンドライン版しかないため初心者には設定が面倒というデメリットもある。

これに対してバージョン 5.x 以降の新しい版は、GUI 化されており、公開鍵暗号方式に Diffie-Hellman(El-Gamal)/DSS、共通鍵暗号方式に CAST 及び Triple DES、メッセージダイジェスト用に SHA-1 が追加された。 鍵もより大きいサイズを選択できるようになってセキュリティが増している。注意しなければならないのは、5.x 以降の新しい版で暗号化されたメッセージは古い 2.x では復号できず、 2.x で暗号化されたメッセージは 6.x 以降では復号できないことだ。従ってどのバージョンを使用すべきか迷うところだが、これから初めて使うという人は、6.x 以降の新しい版を選んだ方が良いかも知れない。 グラフィックインターフェースを持っているので初心者にも使いやすいし、日本語化版もあり、対応するメールソフトも今後ふえて行くことだろう。

PGP のような公開鍵方式では、メッセージを暗号化してから送る相手を選ぶのではなく、送る相手の公開鍵を使ってメッセージを暗号化するのがルールだ。従って、あなたがメッセージを受け取るためにも自分の公開鍵を相手に知ってもらう必要がある。 PGP の機能を使って自分の公開鍵を "(自分のユーザ名).asc" というファイルに出力し、Eメールに添付したりフロッピーに入れたりして相手に送ってもいいし、より多くの人に知ってもらうためには、公開鍵サーバに登録したり、 Web ページで公開してもいい(例:私の公開鍵ファイル)。

相手に暗号化メッセージを送る場合は、あらかじめ "(相手のユーザ名).asc" というファイルを自分の鍵リング(自分や他の人の公開鍵を登録するリスト。鍵ホルダーとも言う)にインポートしておき、 暗号化したいメッセージをその人の公開鍵を選んで作成する。逆に自分が暗号化メッセージを受け取った場合は、相手が自分の公開鍵を取得しているということであるから、 対応する自分の秘密鍵で復号化することが出来るわけだ。相手の公開鍵を自分の鍵リングに追加しておくことは、暗号のやりとりだけでなく、相手から受け取ったデジタル署名が正当なものかどうかを検証する時のためにも必要だ。

PGP では他の人の鍵を信用するかどうかということが大切なポイントになる。それぞれの鍵の信用度は自分の鍵リングの中に設定しておくことが出来る。デフォルトでは、自分自身の鍵には絶対的な信用が置かれているのに対し、 取得したばかりの他人の鍵には最低の設定がなされている。その人が親しい友人だとか、尊敬する著名人だというだけで、簡単に高い信用を与えてはいけない。 自分用の鍵を生成するとき、自分のユーザ名+メールアドレス、公開鍵と秘密鍵のペア、鍵ID、それに「指紋(finger print)」と呼ばれる公開鍵パラメータの暗号ハッシュが作成されるが、自分のユーザ名とメールアドレスは自由に設定できる。 つまり誰か他人の名前とメールアドレスで鍵を作成し、それを鍵サーバに登録することも可能なわけで、鍵サーバはユーザ名の正当性をチェックしない。

ではどうやって鍵の正当性を証明したらいいのか?鍵の信用度を証明するには実際にその鍵の持ち主と公開鍵を用いてやりとりし、その鍵が正当なものであることを検証しなければならない。 手っ取り早い方法としては、相手に PGP で作成した指紋を送ってもらい、それが公開鍵に関連づけられている指紋と一致することを確かめるというやり方がある。もちろん鍵の作成日や鍵サイズも確認しておこう。

PGP では自分の鍵は自分でしっかり管理しなければならない。自分宛の暗号メッセージを復号化したり、メッセージにデジタル署名したり、鍵の設定を変えるというような場合、自分だけが知っているパスフレーズの入力を求められる。 パスフレーズとはパスワードを長くしたものと考えれば良く、その長さによってセキュリティを確保するから覚えやすい文章でも構わないとされるが、 だからといって自分の名前や短い語をパスフレーズにするような愚はやってはいけない。もしあなたのマシンにアクセスできる人があなたのパスフレーズを知ってしまったら、その鍵のセキュリティは失われてしまうからだ。

暗号を利用できる環境の必要性

PGP は世界中のあらゆるレベルのコンピュータユーザの間に拡がり、広く支持されている。その反面、全く知らなかったという人も数多くいるのは事実だ。 元よりセキュリティについての話題は一般受けしにくいという事情もあるが、それ以上に、一般の人が暗号化メッセージを使い機会は滅多にないと考えていることも否定できない。 確かに、私もかつてはそう考えていた。

しかしEメールはメッセージを気軽にやりとりする手段としては便利なのだけれども、安全性についての保証が何もない。 ということは、今後Eコマースを初めとして、社会のあらゆるシステムにインターネットを取り入れようとしているとき、大変困る問題が出てくるのである。 先だっても、私が ICANN at Large のメンバーシップを得るために、Web フォーマットから申し込みをしたときにも、そうした事情に直面した。 メンバーシップナンバーとパスワードはEメールで速やかに送られてきたが、PIN(Personal Identification Number)は郵送で送られる規定だったために、届くまでに1か月以上も待たされたからだ。

ICANN のようにインターネットと密接に関わっている組織ですら、いやだからこそ、Eメールによる PIN 送付に十分な信頼を置くことが出来なかったのだろう。 こうした現実は、インターネットを社会システムに取り込む上で障碍になる。もし暗号化メールや電子署名を普通にやりとりすることが出来たら、そういう問題は多分無くなるだろう。 しかしそのためには、誰もが暗号システムを利用できる環境をあらかじめ持っていなければならない。つまり、あなたが暗号を使う必要は滅多になくても、あなたがあなた宛のメッセージを安全に受け取るために、 暗号を利用できる環境が必要なのだ。

好むと好まざるとに関わらず、これからは公開鍵方式による暗号化システムがインターネットの中に取り込まれていくことは間違いない。 PGP と S/MIME はこのシステムの標準的地位を巡って競争関係にあり、どちらに軍配が上がるかはまだわからない。IETF がEメール暗号化の標準プロトコルとしてのお墨付きをどちらかに与えれば、 流れは一気にそちらに傾くかも知れない。いずれにせよ、PGP は個人レベルで広がって行くところに強みがある。 暗号メールが常識化する日に備える意味でも、今から PGP を試してみるのも必要ではないだろうか。

[2000/ 9/ 1]



次のトピックは「アクセスアップ5つの法則」です。

目次 | ← 前のトピック | ↑ページのトップ | 次のトピック →

ご意見・ご質問がありましたら「ザ・掲示板」またはメールにて梅ちゃん堂まで