2003年12月01日

PGPを使って暗号メールをBecky!で送る

PGP規格に対応したオープンソースであるGnuPGを使ってPGP鍵を作成し,
その鍵とプラグインを利用してBecky!で暗号メールを送る方法をまとめる.

試験環境は,OSがWindowsXP,利用したアプリケーションは以下の3つ.
gnupg-w32cli-1.2.1-1.zip
BkGnuPG-1.0.3.exe
Becky! 2.05.10
既にいくつかは新しいバージョンが出ているので,各自で確認をしてください.

まずは,署名・暗号化の基本機能を提供するGnuPGをインストールする
http://www.gnupg.org/(en)/download/index.html
gnupg-w32cli-1.2.1-1.zip
1.zipファイルを解凍する
2.C:\gnupg フォルダを作る
3."gpg.exe", "gpgv.exe","gpgkeys_ldap.exe"の3つのファイルを
  C:\gnupgにコピーする
4.環境変数PATHにC:\gnupgを加える
  WindowsXPでは,「コントロールパネル」-「システム」-「詳細設定」-「環境変数」で,
  ユーザ環境変数に「変数:path,値:C\gnupg」を加える.
  (システム環境変数側にPathがあってもかまわない.両者は連結される.)
  「プログラム」-「アクセサリ」-「コマンド・プロンプト」を起動(再起動)し,
  path コマンドを実行すると(pathと入力する),
  変更が正しく反映されていることを確認できるはずである.
  (参考:環境変数について:http://forum.nifty.com/ftex/install/win/dviout.htm#path)
これで,GnuPGのインストールは完了
(鍵保存用のデフォルト・フォルダをC:\gnupg以外とするには,README.W32を見よ.)

次は,GnuPGを使って鍵を生成します.
5.「gpg --gen-key」を実行
  鍵の種類は,「DSA and ElGamal」を選択
  鍵のサイズは,「1024ビット」を選択
  鍵の有効期間は,「2y」(2年)と指定
  Real nameは,「Toshikazu Ichikawa」
  E-Mail Addressは,「username@domainname」
  Commentは,「」(なし)
  パスフェーズを入力して完成

次に,鍵が生成されているか,確認します.また,鍵に関する情報を取得します.
6.「gpg --fingerprint」を実行
  出力結果例:
   pub 1024D/F0CD25EA 2003-02-17 Toshikazu Ichikawa
    Key fingerprint = 1C98 7233 F225 D783 0A70 A958 2876 F825 F0CD 25EA
   sub 1024g/DBA011E4 2003-02-17 [expires: 2005-02-16]
  ここで,「F0CD25EA」が鍵IDです.
  また,「Key fingerprint = Hex文字列」を,メールのシグネチャに追加しておくと良い.
  メールの相手が公開鍵の正当性を確認するために用いることができる.

次に,誰かが鍵のパスフェーズを知ってしまったり,
自分が鍵のパスフェーズを忘れてしまった時のために,
失効証明(revocation certificate)を作成しておく.
7.「gpg --gen-revoke your_user_id」を実行
  your_user_id の部分は,メールアドレスや鍵IDなどでよい.
  出力された内容を保存しておく.
  このデータは,絶対に他人がアクセスできないようにしておくべきである.

そして,メールクライアントBeckyから署名・暗号化GnuPGを利用するための
Beckyプラグイン「GNU Privacy Guard Plug-in for Becky! 2」を導入する
http://hp.vector.co.jp/authors/VA023900/gpg-pin/index.html
 BkGnuPG-1.0.3.exe
?GnuPG ホームディレクトリ (レジストリで指定) を設定する?
8.Becky!を一旦終了し,BkGnuPG-1.0.3.exe を実行します
  インストーラが起動し,インストールが行われます
9.正しくインストールが完了していれば,
  「ツール」-「プラグインの設定」-「GNU Privacy Guard Plug-in」
  と辿って設定ダイアログを開くことができます。
10.署名を付加するには,
  新規メール作成ウィンドウで,「ツール」-「GnuPG:署名」を選びます.
  ダイアログのローカルユーザが,鍵のメールアドレスと一致していることを確認し,
  パフフレーズを入力します.すると,添付ファイルとして署名が付加されます.
11.署名を検証するには,
  検証対象のメールを開いた状態で,「ツール」-「GnuPG:復号化と検証」を選びます.
  正しい署名ならば,次のような文字列がダイアログに入っているはずです.
  Good signature from "Toshikazu Ichikawa "

  詳しい利用方法は,次のURLに譲ります.
  http://hp.vector.co.jp/authors/VA023900/gpg-pin/manual/index.html

一通り最低限のことができるようになったので,
公開鍵を相手に知らせる,公開鍵・秘密鍵を別のシステムに移す方法を解説します.
頭をGnuPGに切り替えてください.
12.公開鍵を取り出すには
  「gpg --export --armor your_user_id」を実行します
13.秘密鍵を取り出すには
  「gpg --export-secret-keys --armor your_user_id」を実行します
  your_user_id の部分は,メールアドレスや鍵IDなどでよい.
  出力は表示可能なASCII文字で構成されており,メモ帳などのテキストエディタで保存すればよい.
  公開鍵は,Webや電子メールで相手に送付します.
  秘密鍵を取り出す場合は,その保存形式に互換性の問題があります(以下「秘密鍵の保存形式」参照).
14.公開鍵を取り込むには,
  「gpg --import < keyfile 」を実行します
  keyfile とは,鍵情報の入ったファイル名です
15.秘密鍵を取り込むには,
  「gpg --import --allow-secret-key-import < keyfile 」を実行します
これで,色々なWindows端末のBecky!で同じ公開鍵・秘密鍵を使うことができるようになりました.