第18回「PGP? S/MIME? 電子署名の違いを学ぶ」研修で教えてくれない!

「メールの送信元を詐称できるのは僕も知ってます」「本当なら電子署名とかで本人確認ができればいいんだけど」「あっ、PGPとかS/MIMEとかってヤツですよね?」

» 2007年10月09日 18時40分 公開
[山賀正人ITmedia]

 大手総合商社・メデア商事の新人・小林ケンタは、同じ営業3課の先輩・高柳ワタルと昼飯を食べていた。

小林 最近、ネットで読んだ記事なんですけど、官公庁を騙ったメールがある企業に送られてきて、なんちゃら白書みたいなデータが添付されていたようだから、つい開けてしまったら、実はそれがスパイウェアだったらしいんです。

高柳 あぁ、その記事は俺も読んだ。

小林 メールの送信元を詐称できるのは僕も知ってますけど、そんなメールを受け取ったら、僕も不用意に開いちゃうかも、ってちょっと不安になりました。

高柳 そうだよな。本当なら電子署名とかで本人確認ができればいいんだけど……。

小林 電子署名? あっ、PGP(ピージーピー)とかS/MIME(エスマイム)とかってヤツですよね? 一度、知り合いからPGPで暗号化されたメールが送られてきてちんぷんかんぷんだったんですよね。それで勉強してみようと思ったんですけど、公開鍵がどうとかっていう時点で挫折しちゃって。それに違いもよく分かんないんですよ(苦笑)。あまり普及もしてないみたいですし……。

高柳 確かにちょっと分かりづらいよな。でも、最低限のことぐらいは知っていた方がいいんじゃないか。

小林 そうですね(余計なこと言わなきゃ良かった……)。

電子署名とは

 メールの署名が送信者の名前などを記した単なる文字列であるのに対して、電子署名とは、送信者の本人確認をするための仕組みであり、またそのための文字列である。


PGPで署名したメールをOutlook 2003で受信したところ。意味不明な文字列が並んでいる

 メールの電子署名として世界標準と言えるものに、「PGP(Pretty Good Privacy)」と「S/MIME(Secure/Multipurpose Internet Mail Extensions)」がある。これらは暗号化の手法として広く知られているが、同時に署名の機能を有している。

 これらの技術の特徴は、各ユーザーがそれぞれ「公開鍵(Public Key)」「秘密鍵(Private Key:私有鍵)」と呼ばれる2種類の鍵を持つ必要があること。この2つの鍵で暗号化と署名を行う。送信者が受信者の公開鍵を使って暗号化し、受信者は自分の秘密鍵で復号する一方、送信者は自分の秘密鍵で署名し、受信者は送信者の公開鍵を用いて、その署名の正しさを検証するわけだ。このため、2つの鍵のうち(文字通り)「公開鍵」だけをメールをやり取りする相手に「何らかの方法で」渡す必要がある。


小林 う〜ん、分かったような、分かんないような……。

高柳 暗号化技術そのものはさて置き、大事なのは「公開鍵」の扱いなんだ。もちろん「秘密鍵」を漏らさないように厳重に管理することが大事なのは言うまでもないが、署名の検証にしろ、暗号の復号にしろ、公開鍵自体が偽者だったら意味がないだろ? この「公開鍵」の検証方法がPGPとS/MIMEの違いといっても過言じゃない。

 本人の「公開鍵」を適切にやり取りするには、いくつかの方法が考えられる。最も確実な方法は「手渡し」であろう。しかし、メールを送信する可能性のあるすべての人に自分の公開鍵を「手渡し」するのは現実的ではない。そこでPGPとS/MIMEではそれぞれ異なった方法が用いられている。

 PGPでは「友達の友達は皆友達」という「Web-of-trust(信用の輪)」の考えを用いている。PGPの公開鍵には、別のユーザーが自らの秘密鍵で署名できるのだ。すでに何らかの方法で本人確認が済んでいる第三者によって署名されている公開鍵は「(ある程度)信用できる」と判断するわけである。

 PGPの場合はこのほか、公開鍵ごとに異なる文字列「フィンガープリント」を使って検証する方法もある。例えば、公開鍵自体は普通のメールなどで送付し、別途電話などでフィンガープリントを伝え、そのフィンガープリントによって公開鍵を検証する。また、フィンガープリントについては、名刺に記載しておく方法も一般的である。

 一方、S/MIMEでは公開鍵の正当性を「認証局」が証明してくれる。ただし、当然のことながら、認証局に「認証費用」を支払わなくてはならない。

 上記の違いから、PGPは小規模なコミュニティ内で手軽に利用するのに適しているのに対して、S/MIMEは不特定多数とのやり取りに適していると言えそうだ。

PGPとS/MIMEの違い
名前 公開鍵の検証方法 適した利用例
PGP
(Pretty Good Privacy)
呼び方:ピージーピー
「Web-of-trust(信用の輪)」の理念に基づき、別のユーザーが自らの秘密鍵で署名できる。公開鍵ごとに異なる文字列「フィンガープリント」を使って検証する方法もある。 小規模なコミュニティ
S/MIME
(Secure/Multipurpose Internet Mail Extensions)
呼び方:エスマイム
公開鍵の正当性は「認証局」が証明。ただし、認証局に「認証費用」を支払う必要がある。 不特定多数とのやり取り

小林 へー、PGPとS/MIMEの違いは何となく分かりました。けど、そもそも何で普及しないんでしょう?

高柳 PGPについてはOutlookなどのメジャーなメールクライアントが標準では対応していないってこともあるし、S/MIMEの場合は、認証局にお金を支払わなきゃならないから――かな……。でも、本質的には、暗号化とか署名とかの必要性を、PGPやS/MIMEを導入してまで解決しようと考えている人が少ないからだと思うな。

著者紹介 山賀正人(やまが・まさひと)

セキュリティ関連の話題を中心に執筆中のフリーライター。翻訳(英語、韓国語)やプログラミング、システム構築等コンサルなど活動は多岐に渡る。JPCERT/CC専門委員。Webサイトはこちら


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ