PGPによる暗号化のすすめ
医療機関で患者情報をやりとりするなど、メールなどで重要な他に漏らしてはならない重要な情報のやり取りを行う場合には、PGP(Pretty Good Privacy)という暗号を用いたメールのやり取りにするのが最も安全性が高いということで推奨したいと考えています。PGPは極めて高度な暗号技術であり、解読は事実上不可能に近いと言われています(理論的には解読は可能なのでしょうが、現在の最高性能のコンピューターを使って計算しても千年かかるとか、1万年かかるとかいうことです。しかし、将来コンピューターの性能が100万倍になれば話はかわってきます)。背景には高度な数学理論と暗号理論がありますが、実際に使う際にはそのようなことは気にせずに、使い方だけをマスターすれば使えます。例えば、インターネット通販を利用する際にはブラウザーでは SSL という暗号技術を使って高いセキュリティーが保たれた状態でクレジットカード情報などのやり取りが行われていますが、利用する際には、SSL の暗号理論など知らなくても、使い方さえわかれば大丈夫なのと同じ事です(最近ではSSLの古いバージョンは危険だと言われていますが)。
以下に、暗号を使うにあたって知っておくべき用語と概念について説明します。これらを理解しながら、PGPの暗号を利用していってください。
対称暗号
例えば、”PDFファイルにパスワードを設定する”という例を考えると、パスワードを設定する時に使うパスワードと、ファイルを読むときに入力するパスワードは同じものを使います。こう言うと、”そんなの当たり前じゃないか…”と思われるかも知れません。暗号化するときに使うパスワード(鍵)と、復号化するときに使うパスワード(鍵)が同じであるものを対称暗号と呼びます。対称暗号には弱点があり、それは相手に鍵をどうやって伝えるかという点です。つまり、本文の安全性を確保するために暗号化したが、鍵を相手に伝えないといけない。鍵の安全性を確保するためには、鍵を暗号化したらよいが、その際の鍵をどうやって伝えるか…、という堂々巡りが生じます。これを”鍵配送問題”と呼び、対称暗号の弱点とされています。
公開鍵暗号
知らない人には不思議に思われるかも知れませんが、公開鍵暗号では、暗号化する時に使う鍵(公開鍵)と、復号(解読)するときに使う鍵(秘密鍵)が別々なものになっています。上記の対称暗号に対して非対称暗号とも呼ばれます。公開鍵と秘密鍵はPGPの使用を開始する際にパソコンの操作によって自分用のものが生成されます。公開鍵は暗号化する際に用いますが、復号する際には何の役にも立ちません。復号する際には秘密鍵を用いなければ復号できないのです。つまり、”公開鍵は一方通行であり、暗号化はできるが、復号はできない”という特殊な性質を持っています。公開鍵は広く配布するべきもので、誰に知られても何の問題もおこりません。自分の電子メールアドレスを相手に知らせるのと同じように、「これが僕の公開鍵です」と相手に知らせ、自分にPGPによる暗号メールを送ってくる際に使ってもらうように依頼するわけです。そして、自分の公開鍵で暗号化されて送られてきたメールは、自分の手元に厳重に保管された秘密鍵で復号して読むことができるわけです。
公開鍵
繰り返しになりますが、自分に暗号メールを送って欲しい人に配布します。悪意の第三者に手渡ったとしても何の害もありません。暗号化はできても、公開鍵では復号は決してできないからです。公開鍵は2,000〜3,000文字程度の長さの一見ランダムな文字列です。普通に我々がパスワードとして使う、数文字〜十数文字の文字列よりもはるかに強力そうです。
公開鍵のもうひとつの用途は、公開鍵の本来の持ち主から秘密鍵を利用して送られてくる電子署名の確認にも使います。
秘密鍵
秘密鍵は、自分から相手に送る暗号文を作る際に用います。決して人に知られてはいけません。秘密鍵のもうひとつの用途は、電子署名をする際に用います。
通常、秘密鍵を使うときには、秘密鍵を生成するときに設定したPassphraseを尋ねられます。このPassphraseは秘密鍵の盗難から守ってくれる最後の砦です。つまり、秘密鍵というのはパソコンに保存してあるのですが、Passphraseにて暗号化された状態で保存されているので、悪意の第三者に秘密鍵のファイルを盗まれても、Passphraseがわからなければ使えない状態になっています。
電子署名
暗号化と対になる概念ですが、公開鍵暗号では、電子署名もサポートしています。自分がメールを相手に送信する際に、自分の秘密鍵で電子署名をします。受け取った相手が自分の公開鍵を持っていれば、電子署名が本物であることが確認できる、すなわち送信者が自分であるということの確かな証明になります。これも公開鍵暗号の性質を利用していますが、秘密鍵で暗号化したものは、公開鍵でしか開けないという性質を利用しています。秘密鍵を持った人以外の人は、公開鍵で確認できる電子署名をすることができません。電子署名はメールの暗号化に必須なものではないので、しなくてもよいのですが、慣れてくればついでに利用すればよいでしょう。
解読と復号
用語の説明になりますが、暗号といえば”解読”という言葉が浮かびますが、ここでは復号という言葉を使います。違いは何かといいますと、解読とは、本来の受信者でないものが暗号文を傍受して本文を読み解こうとする行為で、復号とは本来の受信者が鍵を使って正当に本文を得ることです。
ECC(Elliptic Curve Cryptography)
最近では、ECC(Elliptic Curve Cryptography、楕円曲線暗号)と呼ばれる公開鍵暗号も徐々に普及してきているようです。PGPがRSAという公開鍵暗号をベースに作られているのに対して、楕円曲線上の離散対数問題という数学を利用した暗号のようですが、あまり詳しく説明するだけの理解力がありません。
iPhone、AndroidアプリのThreemaや、surespotなどはECCをベースに作られているようです。Threemaや、surespotは高度な暗号でメッセージのやり取りができるので、iPhone、Androidを使われている方にはお薦めです。Threemaはグループチャットに対応していますが、surespotは一対一のメッセージのやり取りのみでグループには対応していません。
PGPを実際に使おう
さて、PGPを実際に使うための方法も書いてみていますので、参考にしてください。