S/MIMEを使ったエンドツーエンド暗号化

この記事は End-to-End Email Encryption with S/MIME の抄訳です。

前回の投稿では、トランスポート層の暗号化とエンドツーエンドの暗号化の違いについて概要を説明し、エンドツーエンドでのメール暗号化の方法として、S/MIMEとPGP/GPGをとりあげました。
今回は、OSXやiOSのメールアプリケーションでS/MIMEを利用し、暗号化メールを送信する方法についてご紹介します。

S/MIMEはPKIに則ってなりたっているので、まずは信頼できる認証局(CA)から証明書を取得する必要があります。今回はStartComを利用します。StartComはイスラエルのCAで、商用利用をしないのであれば、無料で証明書を取得することが可能です。

StartSSL 証明書の取得

1) ブラウザを起動し、https://www.startssl.comにアクセスします。左上の“Sign-up For Free”をクリックし、入力フォームに移動します。
startssl
2) 表示されるフォームに必要な情報を入力し、しばらく待つと確認メールが届きます。
startssl

メールには認証コードが記載されています。
confirmation mail

3) 先ほどの認証コードを入力し、次に進みます。
Complete Registration

4) 次に秘密鍵を作成します。”2048(高)”を選択し、次に進みます。
Generate Private Key

5) 秘密鍵の生成が完了すると、ブラウザにインストールするか確認の画面が表示されます。MacでChromeやSafariをお使いの場合は、キーチェーンに証明書がインストールされます。
Install Certificate

6) これでメール送信に使用する証明書の準備が整いました。
Cert Installed

注意:証明書の有効期限が切れるまで、更新することはできませんので、証明書のバックアップをとっておきましょう。以下その手順です。(OSXでの場合)

  • “キーチェーンアクセス”を起動します。
  • “ログイン”キーチェーンを選択します。
  • 分類ペインで“証明書”を選択します。
  • 先程作成した証明書が表示されています。(名称はおそらくメールアドレスになっています)
  • 該当する証明書を右クリックし”〜を書き出す”を選択します。
  • 証明書を保存したい場所を選択します。
  • 暗号化のためのパスワードを入力します。
  • 生成したファイルを安全な場所に保存しておきます。

メールアプリケーション(OSX)の設定

1) メールアプリケーションを起動し、”環境設定”を開きます。
Mail App

2) 暗号化を有効にしたいアカウントを選択します。その際、StartSSLの証明書の取得に利用したメールアドレスを選択してください。

3) 一番下にある”TLS 証明書”で先程StartSSLで作成した証明書を選択してください。
Account Information
以上です。

新規メッセージを作成すると、右端に2つのアイコンが有ることが確認できます。右端のチェックマークのアイコンは、メッセージに署名されることを意味し、その隣の鍵のアイコンは、メッセージが暗号化されることを意味します。注意点として、署名入りのメッセージを受け取るまでは、S/MIMEを利用して暗号化したメールを送ることはできません。
署名入りのメールを受け取ると、メールアプリケーションは自動的に証明書(および公開鍵)を取得します。その後、暗号化して送ることが可能になります(鍵アイコンがクリック可能になります)。
compose email
なお、暗号化を有効にするためには、証明書の信頼情報のうち、安全なメール(S/MIME)およびX.509 基本ポリシーが“常に信頼”となっている必要があります。“キーチェーンアクセス”より事前に設定を確認して下さい。
key chain access
送信者と受信者の間に入り、盗聴しようとする攻撃者には以下の様に見えます。件名はハッキリと読むことが可能ですが、(その他の添付ファイルも含め)残りのメッセージは暗号化されており、攻撃者は中を見ることはできません。
encrypted message
Thunderbirdをお使いの場合は、以下のように表示されます。(TunderbirdもS/MIMEに対応しています。)
Thunderbird
ここまでは、OSXでよく利用されているメールクライアントでのエンドツーエンド暗号化について説明してきましたが、モバイル端末ではどうでしょうか? AndroidではプラグインでS/MIMEを利用可能ですが、iOSはiOS5のときからS/MIMEにネイティブ対応していますので、ここではiOSでのS/MIMEの利用方法について紹介します。

iOSでのS/MIMEの設定

1) バックアップした.p12ファイルを自分にメールします。
2) iOSデバイス上でそのファイルを開き、インポートします。
3) “設定”“メール/連絡先/カレンダー”を開きます。
4) 暗号化を有効にしたいアカウントを選択します。
5) “アカウント”を選択し、“詳細”に進みます。
7) 最下部にある “S/MIME”をオンにします。
8) “署名”および“暗号化”を有効にし、先程インポートした証明書を選択します。
iPhone setting
9) インポートした証明書は削除しておきましょう。なお、メール経由で証明書を送りたくない場合は、USB接続してiOSデバイスにダウンロードすることも可能です。

iOSから暗号化メールの送信

暗号化したメールを送る前には、まずは送りたい相手から署名入りのメールを受け取る必要があります。署名入りのメールは以下のように表示されます。
signed message
アドレスを選択し、詳細を表示します。
sender information
“証明書を表示”を選択します。
cert install
その後“インストール”を選択すると、証明書がデバイスにインストールされます。インストール後は、そのアドレスに対してメールを送信しようとした時、公開鍵によって自動的に署名され、暗号化されます。
new message
このように追加のソフトウェアをインストールすることなしでエンドツーエンド暗号化を実現することが出来ました。先日の記事で紹介したように、他にも様々な手法が有ります。次はPGP/GPGによるエンドツーエンド暗号化についてご紹介したいと思います。

SendGridがメールのセキュリティを高めるためにどのような活動をしているか、こちらの記事も是非御覧ください。