[Debian] gpgキーサインの方法

隔週木曜日に実施されている Debian JP Project の IRC ミーティングで参加表明をしてしまったので gpgキーを作ってみた。

鍵の作り方などは keysignparty-ja が詳しい。ちなみに、OSC や KOF でキーサインパーティーが行われているので、もし参加にgpgキーが必要なプロジェクトにコントリビュートしたい人は私のように直前に作らず、予めそのような場で色々な人からサインをもらっておくべきだろう。

キーサインを行い、web of trust (信頼の輪) を広げる事でその人が信頼できる人なのか、(実際に存在する人か、その人からのメールは信頼できるものなのか、 etc)を検証する事ができる。

gpgキーには、暗号化と複合に別個の鍵を用いる公開鍵暗号方式を採用しており、公開鍵を使い暗号化したものはその鍵と対になる秘密鍵によって復号可能となる。また、RSAの場合は、公開鍵で暗号化したものは秘密鍵で複合でき、秘密鍵で暗号化したものは公開鍵で複合できる仕様となっている。
(私は暗号の専門家や研究者ではないし、きちんと理解していない。これ以上の暗号化についての発言は控えさせていただく)

キーサインの大まかな流れだが、

  1. 鍵を作成し鍵サーバーにアップロードしておく
  2. Face to Face でお互いのID確認の後に鍵の FingerPrint を交換
  3. 交換した鍵を公開サーバーから取得し、秘密鍵で署名する
  4. 署名した相手の公開鍵を暗号化して送付
  5. 相手から届いた署名された鍵を import して鍵サーバーにアップロード

という手順で行うようだ。

FingerPrint の交換以降は signing-party という Debian パッケージの caff というプログラムで簡単にできるのだが、smtpクライアントの設定を行う必要があるので注意が必要だ。私はメールクライアントに mutt を使っており、 メールの送信は msmtp で gmail のサーバーを使用するようにしている。
送信できず、はまったが msmtp-mta というパッケージをインストールするとメールが送信されるようになった。
caff の設定に関しては、各ホームページで詳しく解説されている。デフォルトを多少いじるだけで充分だと思う。

# .caffrc -- vim:ft=perl:
# This file is in perl(1) format - see caff(1) for details.
 
$CONFIG{'keyserver'} = 'pgp.mit.edu';
$CONFIG{'owner'} = 'YOUR_NAME';
$CONFIG{'email'} = 'YOUR_MAIL_ADDRESS';
#$CONFIG{'reply-to'} = 'foo@bla.org';
 
# You can get your long keyid from
#   gpg --with-colons --list-key <yourkeyid|name|emailaddress..>
#
# If you have a v4 key, it will simply be the last 16 digits of
# your fingerprint.
#
# Example:
#   $CONFIG{'keyid'} = [ qw{FEDCBA9876543210} ];
#  or, if you have more than one key:
#   $CONFIG{'keyid'} = [ qw{0123456789ABCDEF 89ABCDEF76543210} ];
$CONFIG{'keyid'} = [ qw{YOUR_KEY_ID} ];
 
# Select this/these keys to sign with
#$CONFIG{'local-user'} = [ qw{DB40901A6DF6E359} ];
 
# Additionally encrypt messages for these keyids
$CONFIG{'also-encrypt-to'} = [ qw{YOUR_KEY_ID} ];
 
# Mail template to use for the encrypted part
$CONFIG{'mail-template'} = << 'EOM';
Hi,
 
please find attached the user id{(scalar @uids >= 2 ? 's' : '')}
{foreach $uid (@uids) {
    $OUT .= "\t".$uid."\n";
};}of your key {$key} signed by me.
 
If you have multiple user ids, I sent the signature for each user id
separately to that user id's associated email address. You can import
the signatures by running each through `gpg --import`.
 
Note that I did not upload your key to any keyservers. If you want this
new signature to be available to others, please upload it yourself.
With GnuPG this can be done using
	gpg --keyserver pool.sks-keyservers.net --send-key {$key}
 
If you have any questions, don't hesitate to ask.
 
Regards,
{$owner}
EOM

keyseverには鍵サーバーのアドレスを、ownerには自分の名前を、keyidには自分のfingerptintの下16桁を設定する。
caffの使用方法は以下のようにする。

$caff -u 自分の鍵ID 相手1の鍵ID 相手2の鍵ID 相手3の鍵ID ...

というように複数人に一度にサインできる。
このようにサインをしていくと(実際には一度キーフレーズを入力し後は y を押すだけ) gpg のプロンプトに移動するので

$gpg> save

とすると、相手に署名した鍵を送付するか聞いてくる。ひとつひとつに y と答えると相手に署名した鍵を
送信する。

相手から鍵が送られてきたら、

$gpg --import 署名された鍵

$gpg --send-keys

を実行し、署名された鍵をサーバーにアップロードする。

ちなみに Debian JP Project の加入には、1人以上のメンバーからの署名が必須とされている。

スポンサーリンク

フォローする

スポンサーリンク