[PGP] [こんぴゅーた] [ほーむ]

PGPの話

ここでは,暗号プログラムPGP(Pretty Good Privacy)について, 書いていきます。
わたしには,暗号に関する専門知識はありません。
あくまで,PGPを使っていく立場からの話です。

 参考リンク


PGPってなに?

 PGP(Pretty Good Privacy)は,暗号プログラムのひとつです。 コンピュータ上のファイルを他人に読まれないように暗号化することができます。 電子メールを読んでもらいたい人にだけ読めるように暗号化することもできます。 また,他人によるデータの改竄を防ぐために, 指定したデータ(ファイル・メール)に「電子署名」を行うことができます。

なぜ暗号プログラムが必要なの?

 たとえば,現状のインターネットで交換されているメールは, 配送経路となるマシンについての管理特権を持つ者がその気になれば, 「覗き見」したり「改竄」したりすることは,それほど難しい話ではありません。 信用できない中継点があることがわかっていても, 一般には,配送経路を限定することも不可能です。

 どうしたらいいのでしょう?

 メールは,その宛先の人にだけ読めるようにしてしまえばいいですね。 じぶんが書いた内容を指定の相手以外には見てもわからない, 読めないようにできれば,配送の途中で「覗き見」されても,だいじょうぶです。 つまり,「暗号」が使えればいいわけです。

 一方,デジタルデータとしての文書は, 誰にでも偽造が可能だという問題もあります。 筆跡や印影の照合といった証明もできません。 電子メールの発信元を偽ることも,たいして難しい話ではありません。 だれかがあなたのふりをして, ウソ・中傷のメールを出してしまうかもしれません。

 これを防ぐためには,そのデジタル文書に,だれが書いたのかを 証明する方法が必要です。 つまり,デジタルデータにも「署名」ができればいいわけです。 書いた人にだけしか加えることのできない「署名」をデータに加えて, しかも,データの一部でも書き換えられれば, 無効になってしまうようなしかけがあれば, 誰が書いたデータなのか証明することが可能になります。 このための技術が「電子署名」です。

PGPって誰が作ったの?

 オリジナルを作ったのは,Phil Zimmermannという人です。 1980年半ばに開発を始めて,1991年に最初のバージョンができたそうです。

 この時点で, インタネット上にも公開された(故意なのかどうか不明)のですが, このバージョンは,必要とされる特許のライセンスを 取得していないものだったようです。 しかし,その特許権は,米国ローカルの法律にだけ基づくものだったので (アメリカの特許法って,日本やヨーロッパ諸国のと 発想からして違うんだよね), 一旦,米国を(不法にせよ)出てしまうと, その後の広がりにはとどまるところがなかったようです。

 当初は特許権でのトラブルがあったにしても, その後,Zimmerman自身,version 2.5のリリースに関わったMIT, 他の多くの人々の努力で,それは解消しています。 米国内での非商用利用ではversion 2.6.?の入手(ネットワーク経由で可能), 米国内商用利用にはViaCryptからの購入, そして,(日本を含む)米国外ではversion 2.6.?uiを利用することで, ライセンスの問題をクリアできるようになったのです。

 1997年末,Version5.0/5.0iが公開されました (現在の最新はVersion5.5/5.5iのようです)。 暗号方式にRSAとIDEA以外のものを導入する などの変更がなされています。

 PGPに限らず, 「トラブル」があったというだけで,敬遠する人もいないではないですが, 文句をつけて「トラブル」にするだけなら,何に対してだって可能ですよね。 そうじゃなきゃ,「総会屋」さんとかの商売とかできないもん。 ...っていうのは「じょうく」にしても(^o^)。

 おおざっぱな話として, 暗号の方式は「共有鍵暗号」と「公開鍵暗号」に分けられるようです。 PGPは,「共有鍵暗号」と「公開鍵暗号」を併用しています。

共有鍵暗号って?

 たとえば,2人の人間が,同じアパートの部屋に住んでいる場合 (「同棲」とかって色っぽい?話とは限りませんね(^_^;), どちらかが,一日中ずぅっとその部屋にいる!んじゃなければ, それぞれが部屋の「鍵」を持つ必要があるでしょう。 そのときは,大家さんか合鍵屋さんに頼んで,同じ「鍵」を2つ用意して, それぞれが持つわけです。 部屋には(鍵を持っていない)他人には入ってほしくないので, 他の人に合鍵を渡すことはしません。 この2人だけが持っています。

 「共有鍵暗号」は,これと同じようにして, メッセージを交換する2人の間で共通の「鍵」を持つやり方です。 メッセージ(例えば,電子メール)をやりとりする2人が, それぞれ同じ「鍵」をひとつづつ持ちます (コンピュータ上で使うソフトウェアとしての「鍵」ですけれど)。 この「鍵」を使って,メッセージを暗号化して,相手に送ります。 暗号化されているので,他の人が「盗み読み」しようとしても, 読むことはできません。意味の無い文字列にしか見えないのです。 受け取った相手は,送った人が使ったのと同じ「鍵」を使って, 暗号化されたメッセージを復号化(「平文」(=ふつうの *読める* 文) にすること))します。 メッセージを復号化できるのは,「鍵」を持っている2人だけですから, 2人の間の「ひみつのめっせーじ」は,これで ばっちり守れることになります。

共有鍵暗号の問題点って?

 「共有鍵暗号」方式には,実は大きな欠点があります。 それは,「メッセージを暗号化して交換したい者同士が 同じ「鍵」を持たなければならない」 という「鍵」の共有ということ自体です。

 メッセージを交換したい相手が増えてくると, 「鍵」の管理が,とたんに大変になってきます。 ある2者の間でのやりとりに1つの「鍵」が必要なわけですから, 2人だと1つの「鍵」で済んだものが,3人なら3つ,4人なら6つ 必要になってしまいます(n(n-1)/2)。 あなたが5人の相手それぞれとメッセージをやりとりするなら, あなたは5つの「鍵」を使い分けなければなりません。 そして,その5人が相互にやりとりをするなら, 「鍵」の数は,のべ10個要ることになります。

 もうひとつの大きな問題は, これからメッセージを交換しようという相手にどうやって「鍵」を渡すのか, という点です。 「鍵」はメッセージをやりとりする2者の間の「ひみつ」でなくてはなりません (このことから、「共有鍵暗号」のことを「秘密鍵暗号」とも呼びます)。 第3者に「鍵」を手に入れられてしまうと (これは,配送する間に覗き見をするだけで可能すね), 以降のメッセージのやりとりは, 平文でのものより,むしろ危険なものになってしまいます。 「鍵」さえあれば,メッセージを解読することができます。 さらに問題なのは, 暗号化すること(メッセージの偽造)もできてしまうということです。 そして,第3者に解読されたり偽造されていることを見つけるのは, かなりむずかしい話です。

公開鍵暗号

 「公開鍵暗号」は、「鍵」をふたつに分けて、 一方の「鍵」を公開し、もう一方を個人の秘密にしておく方式です。 前者を「公開鍵」、後者を「秘密鍵」と呼びます。

 一方の「鍵」で暗号化されたメッセージは、 もう一方の「鍵」でだけ復号化することができます。 個人でもつ鍵が2つになる、暗号化の際に用いた「鍵」で復号化できない、 というのは、一見、不都合に見えるかもしれませんが、これにより、 鍵の管理が格段に簡単になるのです。

 ある人の「公開鍵」で暗号化したメッセージは、そのペアとなっている「秘密鍵」でしか 復号化できません。 A さんが、 B さんにメッセージを送る時には、 B さんの「公開鍵」を使って暗号化します。 A さんからのメッセージを受け取った B さんは、 自分の「秘密鍵」で復号化して初めて、メッセージの内容を読むことができます。 「秘密鍵」が無い限り、暗号化されたメッセージは読むことができませんから、 A さんから B さんへのメッセージの「ひみつ」が保たれることになります。

 さて、C さんも A さんに「ひみつ」のメッセージを送りたいとしたら? B さんと同じように、 A さんの「公開鍵」を使って暗号化して送ればよいのです。 ここで暗号化されたメッセージは、 B さんには復号化できません。 共有鍵暗号方式を使っている場合は、 A さんと B さん、 A さんと C さん、 それぞれメッセージをやりとりしたい人の間ごとに、「鍵」が必要になりましたが、 公開鍵暗号方式を使うと、「人の間」単位ではなく、「人」単位の数× 2 の「鍵」があればよいことになります ( n(n-1)/2 > 2n (ただし、 n は自然数)を解けば、どこに境目があるか、わかりますね(^^;。 意外と少ない人数から、扱わなければならない鍵の数に差が出ます)。

公開鍵の配布

 

電子署名

 

PGP とは

 

PGP の入手

 

PGP 5.5.3i Windows 用 freeware 版

インストール

 

利用

 

PGP 5.0i UNIX 版

 

インストール

 

利用

 

IPAの資料から

 情報処理振興事業協会(IPA) には,IPA セキュリティセンター というのが設けられていて,そこに, 暗号技術調査室 があります。

 (...つづく)


[PGP] [こんぴゅーた] [ほーむ]