DebConf12 のキーサインパーティに参加するまでにやったことまとめ
7/8〜7/14開催の DebConf12 : DebConf12 - Home に会社のお金で参加できることになり、キーサインパーティ : Keysigning - DebConf12 なるものがあるよーと、とある先輩が教えてくれたのでいろいろ調べてみた。
資料
http://tokyodebian.alioth.debian.org/pdf/debianmeetingresume201009-presentation.pdf
内容を要約すると、
- PGP/GnuPG は認証局がないので、自分が相手を信頼するしかない。
- キーサインパーティを行って、PGP/GnuPG の公開鍵をソーシャルな情報とともに交換し、信頼の輪(web of trust) を広げる。
というわけで、カンファレンスで出会った人たちとお互いに紹介しあって、信頼できそうだなと思ったら相手の PGP/GnuPG 公開鍵に署名しましょう、という趣旨のもと行われるパーティのようだ。
僕はというと、そもそも鍵自体持っていないので、まずは鍵を準備するところからはじめる。キーサインパーティ当日の流れとか所作的なところは、終わったあとでまとめたいと思う。
GnuPG のインストール
まずは GunPG がインストールされていることを確認する。
$ dpkg -l gunpg Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ 名前 バージョン 説明 +++-===========================-===========================-====================================================================== ii gnupg 1.4.10-2ubuntu1 GNU privacy guard - a free PGP replacement
gnupg がインストールされてない場合は、以下のコマンドでインストール。
$ sudo apt-get install gnupg
以降は、gnupg 1.4.10 がインストールされていることを前提とする。
GnuPG 鍵の作成
鍵の作成は gpg --gen-key コマンドを使う。
$ gpg --gen-key gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: ディレクトリー「/home/oiwatatsuya01/.gnupg」ができました gpg: 新しい構成ファイル「/home/oiwatatsuya01/.gnupg/gpg.conf」ができました gpg: 警告: 「/home/oiwatatsuya01/.gnupg/gpg.conf」のオプションは起動している間、有効になりません gpg: 鍵輪「/home/oiwatatsuya01/.gnupg/secring.gpg」ができました gpg: 鍵輪「/home/oiwatatsuya01/.gnupg/pubring.gpg」ができました
鍵のタイプの設定:ここでは 1 を選択。
ご希望の鍵の種類を選択してください: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (署名のみ) (4) RSA (署名のみ) 選択は? 1
鍵の長さの設定:1020ビットのDSA鍵はSHA1ハッシュ関数が使われるが、SHA1ハッシュは脆弱性が報告されている。そのため最低でも2048ビット以上、かつ4096ビットがイマドキらしいのでここでは4096と入力。
RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 要求された鍵長は4096ビット
有効期限の設定:環境に合わせて鍵の有効期限を設定する。基本は 0(無期限)でOK。
鍵の有効期限を指定してください。 0 = 鍵は無期限 <n> = 鍵は n 日間で満了 <n>w = 鍵は n 週間で満了 <n>m = 鍵は n か月間で満了 <n>y = 鍵は n 年間で満了 鍵の有効期間は? (0) 0 Key does not expire at all
入力確認:問題なければ y を入力。
これで正しいですか? (y/N) y
個人情報の設定:ここでは名前、電子メールなどを入力する。れにより鍵に名前のついたヘッダを追加することができる。
あなたの鍵を同定するためにユーザーIDが必要です。 このソフトは本名、コメント、電子メール・アドレスから 次の書式でユーザーIDを構成します: "Heinrich Heine (Der Dichter) <heinrichhduesseldorf.de>" 本名: Tatsuya Oiwa 電子メール・アドレス: tatsuyaoiw@gmail.com コメント: 次のユーザーIDを選択しました: “Tatsuya Oiwa <tatsuyaoiw@gmail.com>”
入力確認:問題なければ O (OK) を入力。
名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O
パスフレーズ:任意のパスフレーズを入力。
秘密鍵を保護するためにパスフレーズがいります。
マウスを動かしたりキーボードを叩いたりして乱数を発生させるので、鍵の作成中は何しててもOK。
今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 gpg: /home/oiwatatsuya01/.gnupg/trustdb.gpg: 信用データベースができました gpg: 鍵A0E6B4A1を絶対的に信用するよう記録しました 公開鍵と秘密鍵を作成し、署名しました。 gpg: 信用データベースの検査 gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル gpg: 深さ: 0 有効性: 1 署名: 0 信用: 0-, 0q, 0n, 0m, 0f, 1u pub 4096R/A0E6B4A1 2012-07-05 指紋 = EE9F 5B9E 1BAD 4A01 7E5A 8BD9 CC9D 5AD3 A0E6 B4A1 uid Tatsuya Oiwa <tatsuyaoiw@gmail.com> sub 4096R/3C2D5D73 2012-07-05
以上で鍵の作成は完了。
破棄証明書の作成
鍵を破棄したい場合に使う証明書を作成する。
$ gpg -o revoke.asc --gen-revoke tatsuyaoiw@gmail.com sec 4096R/A0E6B4A1 2012-07-05 Tatsuya Oiwa <tatsuyaoiw@gmail.com>
1 でOK。
この鍵にたいする失効証明書を作成しますか? (y/N) y 失効の理由を選択してください: 0 = 理由は指定されていません 1 = 鍵がパクられました 2 = 鍵がとりかわっています 3 = 鍵はもう不用です Q = キャンセル (ここではたぶん1を選びます) あなたの決定は? 1 予備の説明を入力。空行で終了: >
yes でOK。
失効理由: 鍵がパクられました (説明はありません) よろしいですか? (y/N) y 次のユーザーの秘密鍵のロックを解除するには パスフレーズがいります:“Tatsuya Oiwa <tatsuyaoiw@gmail.com>” 4096ビットRSA鍵, ID A0E6B4A1作成日付は2012-07-05 gpg: このセッションでgpg-agentは無効です ASCII包装出力を強制します。 失効証明書を作成しました。 見つからないような媒体に移動してください。もしワルがこの証明書への アクセスを得ると、そいつはあなたの鍵を使えなくすることができます。 媒体が読出し不能になった場合に備えて、この証明書を印刷して保管するの が賢明です。しかし、ご注意ください。あなたのマシンの印字システムは、 だれでも見える場所にデータをおくことがあります!
万が一鍵を破棄する場合は、以下のコマンドで鍵を破棄する。
$ gpg --import revcert.asc
キーサーバに公開鍵を登録
キーサーバは様々な種類があるが、ここでは @gtach さんレコメンドの MIT PGP Key Server に登録することにした。
$ gpg --keyserver pgp.mit.edu --send-keys A0E6B4A1
公開鍵に署名をして、メールで送信
公開鍵をテキストファイルに書き出す。(export-clean, export-minimal)
$ gpg --armor --export-options export-clean,export-minimal --export A0E6B4A1 > publickeyblock
公開鍵に署名する。
$ gpg --local-user A0E6B4A1 --clearsign publickeyblock
DebConf12の宛先に署名入り公開鍵を送信。
$ mail -s "KeySigning Party @ DebConf12" anibal@debian.org < publickeyblock.asc
署名入り公開鍵の作成 & メール送信までを一気にやりたい場合。
(echo -e "To: anibal@debian.org\nFrom: Tatsuya Oiwa <tatsuyaoiw@gmail.com>\nBcc: tatsuyaoiw@gmail.com\nSubject: KeySigning Party @ DebConf12\n"; gpg --armor --export-options export-clean,export-minimal --export A0E6B4A1 | gpg --local-user A0E6B4A1 --clearsign) | sendmail -t
その他のコマンド
自分の署名を確認する。
$ gpg --fingerprint tatsuyaoiw@gmail.com