メールの暗号化について調べたのでメモ。
主にPGP
、加えてS/MIME
について。
言葉の難しさ
メール暗号化にはPGP
とS/MIME
がある。
…とざっくり言えれば良いのだが、PGP
はソフトウェアの名前である。そして今使うならおそらくPGP
をオープンにしたOpenPGP
互換のGPG(GnuPG)
を使うことになる。それに対してS/MIME
は規格の名前である。もうこれだけでややこしい。
PGP
とGPG
を同じものとして考えておけば良いのではあるが…。
PGP
とS/MIME
は対になっているわけではなく、PGP/MIME
という選択肢もある。MIME
というのはマルチパートのことで、非対応メーラーでは添付ファイルとして扱われることになる。ただのPGP
ならテキストが本文に埋め込まれる。
PGP
は信頼性が個人に依存するのに対して、S/MIME
は信頼性が第三者に依存する。S/MIME
の信頼性はSSL
と同様にCA
によって担保される。
PGP
は完全に個人同士のやり取りになるので、自分が信頼を担保できるような手続きを踏む必要がある。
境界の難しさ
自分のPCとメールサーバーとの通信の暗号化はTLS
で行われる。ではPGP
の意味とは…?という難しさがある。
メールサーバーに保存するときはテキストなので、そこに不正アクセスがあるとメールが見られますよって言っても不正アクセスが無いと見られないわけだし、サーバー管理者には見られますよって言ってもSSL
を使ったクレジットカード番号の送信でも同じだよね?的なややこしさがある。
何をどこまで暗号化するのが良いのか、線を引くのが難しい。
素人のユーザーに「信頼とは」みたいな概念的なことまで交えて説明する破目になる。
概念の難しさ
暗号化メールを送るには送り先の公開鍵が必要である、暗号化されたメールの復号化には自分の秘密鍵に設定したパスフレーズが必要である、というのが難しい。
パスフレーズ管理の責任が非常に重くなる。暗号化zipなどのパスワードをもし忘れてしまっても人に聞けば良いが、秘密鍵のパスフレーズを忘れてしまうとそこで終了である。鍵ペアを作りなおさなければいけない。(古い公開鍵を無効にすることもできない)
もちろん、本来はパスワードの管理の責任は重いものであるので、正しいと言えば正しいのだが。
PGP
の信用の輪(Web of Trust)の概念も難しい。Webならブラウザが自動でCAのチェーンを管理していたものについて、もっと複雑なグラフを自分で把握しないといけない。
S/MIME
の場合はSSL
と同じような認識でも良いが、SSL
がドメイン所有者であれば誰でも取得できるのと同様に、S/MIME
はメールアドレス所有者であれば誰でも取得できるということを念頭に置いておかなければいけない。一般人がEV SSL
かどうかまで気にしないのと同様に、S/MIME
がClass 2
かどうかも気にしないと思う。
SSL
は1対複数が前提であるのに対して、メールは1対1が前提であるので、不特定多数向けのS/MIME
より個人の信頼に基づいたPGP
の方が方向性は合っているのではないかなと思っている。この辺も信頼のレベルを自分で考える必要があるので難しいポイントだと思う。
署名って何?という根本的な署名の概念の難しさもある。
操作の難しさ
サーバーにSSL
を設定するような作業を個人個人でやらないといけない。
特にPGP
は、別途GnuPGP
をインストールして、メーラーは標準対応していないのでプラグインも入れる必要がある。
そして非対応メーラーで見た場合では、文字化けのような文章やよく分からないファイルが添付されて「何これ?ウィルス?」的な拒否反応があるかもしれない。
PGP
を対応メーラーで見たときは、フィンガープリントを確認して信頼するかどうかを自分で決めないといけない。
ただでさえPOP3、SMTP、IMAP、STARTTLS、SSL/TLS、パスワードの認証方式、など色々選ぶ項目があるのに、そこに暗号化で更に複数方式追加で素人がどんどん置いて行かれる。
まとめ
メールの暗号化は様々なレベルで難しい。
色々調べていて気付いたが、S/MIME
は結構前から無料で取得できるものがあるようだ。検索すればすぐに出てくる。(ただし個人利用のみ)