エンドツーエンド暗号化入門

エンドツーエンド暗号化入門

この記事は Paranoid Email: End-to-End Crypto Primer の抄訳です。

先日お伝えしたとおり、SendGridでは”ResetTheNet”キャンペーンへの賛同として、SendGridから送信されるメールのTLS暗号化に対応しました。これは、全員を監視対象とするバルクサーベイランスに対抗するための大きな一歩でもあり、同時にある特定の対象に狙いを定めて監視するターゲットサーベイランスに対しても有効です。

受動的攻撃と能動的攻撃

TLSを使用したSMTP通信では、”data in motion”つまり送信元のメールサーバからSendGridまでの通信内容が保護されます。そしてSendGridがメッセージに対して所定の処理を実施したのち、宛先に向かって送信されます。ここで、もし宛先のメールサーバがTLSに対応している場合は、暗号化通信を利用して送ります。受動的攻撃(passive attack)であれば暗号化されたテキストを見ることしかできません。

このため、TLSを使用したSMTP通信では、NSAによるAT&Tの盗聴問題などのような受動的攻撃には有効です。
しかしながら、高度な技術を持った攻撃者の場合は、TLSで通信路が暗号化されていても中間者攻撃(man-in-the-middle attack; MITM)のような、能動的攻撃(active attack)を行うことも可能です。攻撃者は通信路の間に入り、独自の証明書と鍵を利用し一旦復号し、再度暗号化して相手のサーバにデータを届けます。

エンドツーエンド暗号化の技術

SSL/TLSに対する能動的攻撃に対抗するためには、エンドツーエンドもしくは保存されたデータ(いわゆるData at Rest)を暗号化する必要があります。公開鍵によるメールの暗号化は90年代から行われてきました。以下その代表的な技術を紹介します。

最初に成功した実装例として、1991年にフィル・ジマーマンが開発したPretty Good Privacy(PGP)があげられます。PGPは米国憲法保護のもとハードカバーの書籍としてソースコードが出版されたことでも有名です。ですが、使用するのに必要となる技術レベルが非常に高く、また利用する上でのユーザビリティの改善も行われなかったため、普及したとは言えませんでした。PGPの別実装の暗号化ソフトウェアとしてGNU Privacy Guard(GPG)もあります。こちらはGPLライセンスで提供されており、現在も開発が継続しています。

S/MIME(Secure/Multipurpose Internet Mail Extenxtions)は、2004年にRFCによって規定されたメールの暗号化とデジタル署名に関する標準規格です。S/MIMEはPGP鍵のかわりに、X.509の証明書を利用します。興味深いのは、S/MIMEは比較的マイナーな技術でありながら、Outlook、Appleメール、Thunderbirdといった有名なメールクライアントがサポートしていることです。一方、それらのクライアントではサードパーティのプラグイン無しにPGPを利用することはできません。Appleにいたっては、iPhone/iPad/iPod TouchのS/MIMEによるメール暗号化のサポートを2012年のiOS5リリース時に発表しました。

S/MIMEに対する主な批判としては、そのセキュリティモデルが認証局に依存しているということがあげられます。実際インターネット全体はPKI(Public Key Infrastructure)に依存しており、常に重大な脅威にさらされています。これについての議論は本記事のスコープを逸脱するためここまでにしますが、皆様がご利用のブラウザもPKIに依存していることからS/MIMEやパブリック証明書が十分に安全なものである必要があることは容易に想像がつくでしょう。もしターゲットサーベイランスの対象になっているとお思いなら、自己署名証明書を利用したS/MIMEを利用することが現実的です。ですが、そういった証明書を検証することはPGP鍵を検証することと変わらないという点を認識しておいてください。

Googleのエンドツーエンド

6月頭のブログ記事で、Googleは透明性レポート配信中のメールの暗号化を追加したことをアナウンスしました。また、同記事で、GmailでPGP/GPG方式の暗号化を可能にするChrome拡張機能のコードも公開しました。
JavaScriptを使用してブラウザ内で暗号化を実施することは、読者の方々のセキュリティの考えに反するかもしれません。しかしGoogleがその広告による利益を犠牲にしてまでもGmailユーザのプライバシーを尊重する姿勢をみせたのは素晴らしいことです。

最後に

PGP/GPGやS/MINEについてご紹介しましたが、どちらを選べばよいのでしょうか?上で述べたとおり、S/MIMEはOutlookなど主要なクライアントでサポートされています。次回はその使い方についてご紹介したいと思います。