メールの暗号化について調べたのでメモ。
主に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は結構前から無料で取得できるものがあるようだ。検索すればすぐに出てくる。(ただし個人利用のみ)