63
MacでPGP暗号化を使ってメールのプライバシーを守る方法

前回のPrivate Iでは、公開鍵暗号(PK暗号)の基礎について説明しました。PK暗号とは、特定の鍵を持つ人だけがメッセージを復号できるように暗号化する方法で、その鍵を公開したり共有したりする必要はありません。PK暗号は理論上の脆弱性が知られていない効果的なシステムであり、現在実装されている実装は堅牢であると考えられています。

まとめると、公開鍵方式の優れた点は、公開鍵と秘密鍵という2つの相補鍵を持つ点です。公開鍵は自由に配布できます。公開鍵を使って暗号化されたデータは、対応する秘密鍵にアクセスすることでのみ復号できます。また、秘密鍵は文字列や文書に「署名」するために使用でき、秘密鍵の所有者だけが署名できることを数学的に証明できます。

しかし、Mac、iOS、その他のプラットフォームのユーザーがPKを活用するには、まだ2つの要素が欠けています。1つ目は実用的な問題です。送信者と受信者は互換性のあるソフトウェアツールまたはプラグインを必要とします。できればアプリに統合され、手間がかからないようにする必要があります。2つ目は存在論的な問題です。直接会ったり電話をしたりといった事前の取り決めがなければ、誰かの公開鍵だと称するものが本当にその人の鍵だと、どうやって判断できるでしょうか?

これらの問題を解決する最も簡単な方法は、エンドツーエンドの独自エコシステムを利用することですが、結局はiMessageなどのサービスに戻ってしまいます。Silent Circleは、公開鍵暗号を組み込んだ最良の選択肢の一つです。ただし、コミュニケーションを取る相手全員にオプトインしてもらう必要があります。月額10ドルから利用可能で、ユーザー間のテキストメッセージ、通話、ビデオチャット、ファイル転送が無制限です。このサービスのメッセージングと通話機能は、電子フロンティア財団(EFF)のセキュアメッセージングスコアカードで7点満点中7点を獲得しています。

しかし、私たちのほとんどは壁に囲まれた庭に住んでいるわけではない。同社の創設者の一人、フィル・ジマーマン氏は、約25年前、公開鍵暗号方式をPGP(Pretty Good Privacy)と名付けた技術へと変換した。(PGPの仕組みについてはパート1で説明されている。)

メールでジェイソンにメールを送信する

ローカル GPG キーチェーンにキーがある受信者にメールでメッセージを作成する場合、ロック アイコンをクリックすると、送信時にメッセージを暗号化できます。

PGPは、フリーソフトウェアGPG(GNU Privacy Guard)のバージョンであるGPGToolsを介してMacで利用できます。GPGToolsを使用すると、他人の公開鍵のディレクトリを作成できるだけでなく、暗号化、復号化、署名、検証も実行できます。(PGPは商標であり、GPGはそれを回避する造語ですが、公開鍵を使用するこの方法を指す一般的な用語としてPGPが使われることがよくあります。)

EFFは、GPGToolsをインストールするための非常に分かりやすいステップバイステップの手順を公開しています。Apple MailまたはMozilla Thunderbirdで直接メールを操作できるようになります。また、テキストを操作または選択できるアプリケーションの「サービス」メニューからもツールを利用できます。GPGToolsは現在無料ですが、開発費用を賄うため、将来的にはメールプラグインにごくわずかな料金を課す予定です。

sent email to jason encrypted

送信されたメッセージは送信済みメールボックスに暗号化された状態で表示され、このウィンドウに表示するには復号化する必要があります。

EFFの手順書では、GPGキーチェーンで独自の公開鍵/秘密鍵を作成する手順が説明されています。GPGToolsをメールで使用するには、暗号化されたメッセージを送信する返信先アドレスと同じメールアドレスを鍵に設定する必要があります。鍵を作成したら、鍵を選択して「鍵」>「公開鍵を鍵サーバーに送信」を選択することで、鍵を鍵サーバーにアップロードできます。これにより、PGPディレクトリで名前とメールアドレスで鍵を検索できるようになります。鍵にはフィンガープリントが関連付けられています。フィンガープリントは公開鍵の暗号変換で、公開鍵よりもはるかに短いものです。これについては後ほど説明します。

インストールと鍵の作成が完了したら、Mailでメールを作成すると、送信元アカウントが作成した公開鍵と一致する場合、件名欄に2つの新しいアイコンが表示されます。青い星型のチェックマークは、送信メールがあなたの秘密鍵で署名されていることを示します。これにより、他の人はあなたの公開鍵を持っている限り、送信中にメールが変更されていないことを確認できます。また、アドレス欄の受信者全員がGPGキーチェーンに公開鍵を保存している場合は、鍵アイコンをクリックできます。

(PGP で暗号化された電子メールはメッセージの内容を保護しますが、件名やメタデータ (ルーティング情報や電子メール ヘッダーに保存されるその他の詳細で、パターンを識別するための NSA やその他の政府セキュリティ機関による分析の大部分を占める) は保護されないことに注意してください。)

unlock my key

GPG ツールは、必要に応じてキーのパスフレーズを入力するように要求し、変更可能なデフォルトを使用して 10 分間ロック解除状態を維持します。

このようなメッセージを送信すると、パスフレーズの入力を求められます。私はパスフレーズを1Passwordに保存しているので、すぐに呼び出すことができます。パスフレーズを入力する場合は、「From the still of the ! night」のように、長くて覚えやすく、句読点を1つだけ入れたフレーズにしてください。このフレーズは長さと、単語頻度分析に使われる英語のテキストには決して現れないという事実から、基本的に解読不可能です。

もちろん、受信者も同じ手順を踏むか、他のPGP互換ソフトウェアを使用する必要があります。シマンテックは現在もPGPを製造していますが、MacではMicrosoft Outlookでのみ動作します。他のプラットフォーム向けにはGPGの実装が存在します。また、一部のモバイルアプリはPGPで暗号化された文書やメールを処理できます。(要件を満たすPGP iOSアプリを探しましたが、現在のラインナップには様々な制限があります。状況が変わったら、さらに詳しく調査する予定です。)

encrypt in bbedit

「サービス」メニューでは、テキストの挿入または選択時にすべての GPGTools (OpenPGP という名前) にアクセスできます。

GPGTools がインストールされていれば、サービスメニューから PGP 風の操作もすべて実行できます。例えば、BBEdit でこのメッセージを作成しているときに、BBEdit > サービス > 指紋を挿入(53F4 9E97 2652 4E2F 2993 4611 BB54 A24B EDD1 8384)を選択できます。暗号化、署名、検証なども行えます。

鍵の確認

しかし、ここで実存的な問題に目を向けてみましょう。あなたは自分のメールアドレスに関連付けられた鍵を持っており、その公開鍵を鍵サーバーに投稿します。では、どうすればそれがあなたの鍵だと確信できるのでしょうか?もし誰かがそのアドレスにメールを送信した場合、あなたのメールが改ざんされ、メッセージが傍受され、あなたが知らないうちに返信されている可能性があります。鍵を検証する方法の一つは、誰かに電話をかけることです。なぜなら、中間者があなたが電話をかけていることを知り、傍受して偽の鍵の指紋をリアルタイムで話す可能性はほぼゼロだからです。音声または指紋を使って直接鍵を検証すれば、準備完了です。

しかし、公開鍵メッセージングの人気が高まると私が確信している理由は、Keybase.io のおかげです。Keybase.io は現在、招待者限定の無料公開鍵サービスであり、ブラウザーまたはコマンドラインツールで鍵を管理し、暗号化タスクを処理しますが、他の人が満足する公開鍵を検証するための実質的で便利な方法も提供しています。

keybase.io public key popup

Keybase.io のポップアップ公開鍵ウィンドウには、エクスポートまたは確認するためのユーザーの詳細が表示されます。

Keybase.ioの私のプロフィールをご覧いただければ、私が複数の方法で本人確認を行っていることがお分かりいただけると思います。Keybaseから提供されたコードを含むツイートを投稿し、GitHubリポジトリにアイテムを投稿し、特別なテキストのみのDNSレコードを追加し、ウェブサイトにファイルをアップロードしました。これらは、おそらく他人が気づかれずにハイジャックすることができないような、優れた一連のベクトルと言えるでしょう。

Keybaseの優れた点は、招待制の段階から拡張していくことで、誰もが鍵をアップロードしたり、新しい鍵を生成したり、そして一度に認証したりできる共通の場所を提供することです。Keybaseは鍵サーバーソフトウェアを運用していませんが(理由は不明瞭なものも含め様々です)、誰かのプロフィールの鍵をクリックすると、ポップアップウィンドウが開き、その人の公開鍵を保存したり、コピーしたりできます。

GPGキーチェーンを使用すると、公開鍵をメインウィンドウに貼り付けたり、公開鍵ファイルをインポートしたりできます。その後、同じポップアップウィンドウで、その鍵とサイトのフィンガープリントをすぐに照合できます。

これらはどれも、言うまでもなく、簡単ではありません。しかし、かつてのような調整や複雑な作業は必要ありません。一度設定すれば、鍵のパスフレーズを覚えておくか、検索するだけで、PGPを使用する他のユーザーと暗号化されたメールを送受信できます。これにより、これまでよりも、オンデマンドで信頼性の高い暗号化通信の実現に大きく近づきます。