注意: 原文はこの翻訳よりも新しくなっています。
鍵署名 (Keysigning)
トレードショウやカンファレンスではたくさんの開発者たちが集まりますから、 他の人に自分の GnuPG 鍵に署名してもらい、 「信頼のネットワーク (Web of Trust)」を強化する良い機会といえます。 特にプロジェクトに新しく参加した人にとっては、 他の開発者たちに会ったり鍵署名を行ったりするのは、 とても楽しいことでしょう。
この文書は、鍵署名の一連の作業に対する参考となるべく書かれました。
以下の例は、すべて鍵サーバとして keyring.debian.org
を使っています。もし問題となっている鍵が Debian keyring
にない場合は、keyring.debian.org
を
wwwkeys.pgp.net
(その名前にかかわらず、GnuPG
の鍵も扱っています) などの公開鍵サーバに置き換えてください。
ある鍵に署名をする際は、少なくとも以下の二つの条件が必要です:
- 鍵の所有者は署名者に対して、 UID に書かれている個人情報が実際に自分の個人情報であることを、 署名者が納得するような証拠を用いて、証明しなければなりません。 普通の場合は、鍵の所有者は政府などの発行した証明書 (鍵の所有者の情報が書かれている写真つきのもの) を提示することになるでしょう。 (署名者によっては、提示を受けた政府発行の ID が 簡単に捏造されることを知っていたり、 発行者の権威が疑わしいことを知っていたりして、 追加情報や別の情報を要求することもあるかもしれません。)
- 鍵の所有者は、署名されようとしている鍵の指紋 (fingerprint) と鍵の期限が、 実際に自分の鍵のものであることを確認しなければなりません。
最も重要なのは、鍵の所有者が鍵交実の場に実際に参加しなければ、 この条件の 1 と 2 の両方を満たすことはできない、という点です。 鍵の所有者の代理人では、 鍵所有者の成すべき 1 の要件を満たすことはできません。 なぜならこれを許してしまうと、ID カードを盗んだ人間によって、 代理人になりすまして PGP 鍵への署名を受けることが 可能になってしまうからです。 また鍵の所有者の代理人が、 鍵所有者の成すべき 2 の要件を満たすことはできません。 なぜなら代理人が、 別の PGP 鍵に所有者の名前を付け、 その指紋に差し替えて署名を行わせることが 可能になってしまうからです。
- GnuPG 指紋と鍵の期限を印刷したものと、自分自身であることを証明するID カード (パスポートや運転免許証など) が必要です。
- 指紋と鍵の期限は、会合の後であなたの鍵に署名してくれる、他の人達に渡します。
- GnuPG 鍵をまだ所有していなければ、
gpg --gen-key
によって作成してください。 - 鍵の所有者が、まさに所有者であると証明された場合に限って、 その鍵に署名するようにしてください。
- 会合が終ったら、署名する GnuPG 鍵を入手してください。
以下のような感じになるでしょう。
gpg --keyserver keyring.debian.org --recv-keys 0xDEADBEEF
この手続きや、他の GnuPG 処理においては、 指紋の (16 進数字の) 最後の 8 桁が使えます。 先頭にある 0x は省略しても構いません。
- 鍵に署名するには、次のコマンドによって編集メニューに入ります。
gpg --edit-key 0xDEADBEEF
- GnuPG から、署名するすべての uid を
uid n
(n
はメニューに表示されている uid の番号) によって選択します。 enter キーを押せば、すべての uid に署名できます。 - 鍵に署名するには、
sign
と入力します。 するとその鍵の指紋と鍵の期限が表示されますので、 先に実際に会った人物からもらったものと比較しなければなりません。 - 検証のレベルを聞かれたら、「簡単な検証 (casual)」を選んでください。
quit
と入力して GnuPG を終了します。- 正しく署名できたかどうか確認するには、次のコマンドを実行します。
gpg --list-sigs 0xDEADBEEF
出力に自分 (署名者) の名前と指紋 (短い形式) が現われているはずです。
- すべてうまくいっていることが確認できたら、
次のコマンドを実行し、署名した鍵を受取人に送信します。
gpg --export -a 0xDEADBEEF > someguys.key
-a
オプションを指定すると、 ASCII 形式で鍵をエクスポートするので、 電子メールで送る際にも壊れる心配をしなくてすみます。 - もしだれかがこのような形であなたの鍵に署名してくれたら、
以下のコマンドを用いれば、これを Debian keyring に追加できます。
gpg --import --import-options merge-only mysigned.key gpg --keyserver keyring.debian.org --send-keys <your key id>
keyring の管理者があなたの鍵を更新するまでには 少々時間がかかるかもしれませんが、我慢してください。 また更新された鍵は、公開鍵サーバにもアップロードしておきましょう。
Debian パッケージの signing-party は、このプロセスに役立つツールをいくつか提供しています。gpg-key2ps は GnuPG 鍵を PostScript ファイルに変換して、鍵の指紋を印刷してくれます。また、 gpg-mailkeys は署名した鍵をその持ち主にメールで送信してくれます。 このパッケージにはもっと進化したツール caff も含まれています。 詳しい情報は、パッケージのドキュメンテーションを見てください。
やってはいけないこと
実際に個人的に会った人でない限り、 絶対にその人の鍵に署名してはいけません。 直接知りえた情報以外を基に鍵に署名してしまうと、 「信頼のネットワーク」を破壊してしまいます。 あなたの友達が、あなたの ID と指紋を、他の開発者に提示したとしましょう。 でもあなたはその場にいませんから、 その指紋が実際にあなたのものかどうか確認できません。 その開発者は、指紋と ID とを結びつける情報として、 何を提供されたことになるでしょうか? その友達の言葉と、あなたの鍵になされた他の署名だけに過ぎません。 従って、開発者がこのあなたの鍵に署名したとすれば、 「他の人が署名してるから自分も署名した」というのと何ら変わりはないのです!
ひとつの鍵にたくさん署名があるのは良いことです。 ですからつい手続きを省略してしまいたくなるかもしれません。 しかしながら、信頼に足る署名をしてもらうことは、 たくさんの署名を受けることよりも重要です。 ですから、鍵署名の手続きを、 可能な限り汚染されないように保つことが非常に重要です。 他の誰かの鍵に署名するということは、 その鍵の所有者の個人情報を、直接の証拠によって確認した、 という意味の承認にあたります。 これ以外のつもりで署名を行ったら、 それ以降「信頼のネットワーク」は信頼できないものになってしまいます。