Ubuntu Weekly Recipe

第211回 メールをGnuPGで暗号化する

この記事を読むのに必要な時間:およそ 3 分

読者の中には特殊部隊のエージェントとして,悪の組織と日夜戦っている方もいることでしょう。上司やクライアントからの連絡は電子メールで,となると作戦の指令や顧客情報,アジトの地図といった機密性の高い情報がインターネットに平文で流れてしまい,敵に諜報され放題です。

テープやDVDなどの物理媒体であれば,特定の相手以外が受け取った時点で爆破するといった古典的な方法が使えますが,電子メールの場合はそうもいきません。そんな悩みを解決するために,今回はメールを暗号化して送受信する方法をご紹介します。

メールの暗号化とGPG鍵

今回はメールの暗号化方式としてOpenPGPと,その実装であるGnuPGを使います。これはGnuPGがUbuntuコミュニティで一般的に使われているためです注1)⁠

仕組みは単純で,メールの本文を送信相手の公開鍵で暗号化し,そのファイルをマルチパートとして添付するPGP/MIMEか,さらにASCII化(armor)した上でメール本文に埋め込んで送信しますインラインPGP)⁠受信者は自分自身の秘密鍵でこれを復号することで,本文を確認します。なお,暗号化されるのはメール本文のみです。サブジェクトは暗号化されないので,注意しましょう。

GnuPGを使うためにはまず公開鍵と秘密鍵を生成する必要がありますが,詳細は第28回の最後を参照してください。生成方法は端末で以下のコマンドを実行し,名前やメールアドレスを入力します。この名前やメールアドレスはメールの暗号化や復号の際に,どの鍵データを使うべきか特定する時にも使われます。

$ gpg --gen-key

これにより,⁠~/.gnupg/」ディレクトリに公開鍵と秘密鍵が生成されます。

さらに暗号化する際は相手の公開鍵を知っておく必要があります。公開鍵は手渡しが原則です。これは「その公開鍵ファイルが本当に相手のものであるかどうかを確認する」ことがインターネット上の通信手段だけだと難しいからです。実際のところ,公開鍵というバイナリデータをやりとりするのは大変なので,公開鍵自体は鍵サーバーに登録する,メールで送るという手段をとった上で,鍵のフィンガープリントを信頼できる通信手段で連絡し,それを用いて公開鍵を確認するという方法がとられます。

今回は,自分の公開鍵で暗号化したメールを自分のアドレスに送る形で説明しますので,このあたりの説明は省かせていただきます。他人の公開鍵を扱う方法はUbuntuの公式ドキュメントを確認してください。Software Design 2011年11月号のUbuntu Monthly Reportでも,知人と公開鍵を交換しお互いに署名を行うGPGキーサインについて紹介しています。

今回は以下の3つのメーラーで自分自身に暗号メールを送り,解読する方法を説明します。

  • Thunderbird/Enigmail
  • Sylpheed
  • Chromium/cr-gpg
注1
メールの暗号化標準規格としてS/MIMEが存在しますが,これは認証局が必要となるので今回は扱いません。

Thunderbird/Enigmail

Ubuntu 11.10から標準のメーラーになったThunderbirdはEnigmailと呼ばれるアドオンを導入することで,PGPメールを扱えるようになります。

EnigmailはThunderbirdのアドオンマネージャーからはもちろんのこと,ソフトウェアセンターからもEnigmailで検索してインストール可能です。

インストールが終わってThunderbirdを一度再起動したら,メニューの「OpenPGP→設定ウィザード」を選択して初期設定を行います。基本的に初期設定のままで良いでしょう。Thunderbirdは,初期状態だとHTML形式で編集するため,常にプレーンテキスト形式にしたい場合は,⁠編集→アカウント設定」にある「編集とアドレス入力」「HTML形式でメッセージを編集する」のチェックを外しておいてください。

暗号化メールの送信

送信メールの編集画面のツールバーに,OpenPGPのボタンが現れますので,これを使って,署名・暗号化を行います。標準ではインラインPGPとして暗号化しますが,このボタンからPGP/MIMEを指定することも可能です。本文はISO-2022-JPのテキストをそのまま暗号化します。また,添付ファイルが存在する場合は,添付ファイルも暗号化するかどうか,その方式はどうするかを個別に設定できます。

図1 送信ウィンドウでOpenPGPのボタンから暗号化にチェックを入れておくと,送信時に暗号化される

図1 送信ウィンドウでOpenPGPのボタンから暗号化にチェックを入れておくと,送信時に暗号化される

暗号化する際に使用する公開鍵は,宛先のメールアドレスから自動的に検出してくれますし,OpenPGPメニューの設定画面から,メールアドレスごとに処理を変えることも可能です。

図2 例えばGPGメールに対応していない環境から見ると,このように暗号化された状態で見える

図2 例えばGPGメールに対応していない環境から見ると,このように暗号化された状態で見える

暗号化メールの復号

受信したメールの復号は,インラインPGP,PGP/MIMEともにパスフレーズを入力すれば,自動的に行ってくれます。

ただし,インラインPGPについてはCharsetフィールドが存在しない場合は文字エンコーディングをISO-2022-JPと仮定してデコードするらしく,後述のcr-gpgから送ったテキストは文字化けします。

図3 公開鍵があるなら,自動的に復号される。本当に暗号化メールかどうかはCtrl-Uでメールの生データを見てみよう

図3 公開鍵があるなら,自動的に復号される。本当に暗号化メールかどうかはCtrl-Uでメールの生データを見てみよう

添付ファイルはPGP/MIME形式の場合そのまま復号しますが,インラインPGPの場合は添付ファイルを右クリックして表示か保存を選んでください。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入