叛乱オンライン
HOME > Theory > Crypt

暗号を使おう!

 
The comp.security.pgp FAQ
Version 1.4
 

6. 鍵署名

  • 6.1 鍵署名とは?
  • 6.2 鍵への署名の仕方は?
  • 6.3 自分の鍵に署名すべきか?
  • 6.4 私はX氏の鍵に署名すべきか?
  • 6.5 だれかのものであると立証するには?
  • 6.6 誰かが偽の鍵を署名するように送ってこなかったかどうか知るには?
  • 6.7 鍵署名パーティーとは?
  • 6.8 鍵署名パーティーを開くには?
 

6.1 鍵署名とは?

よろしい、あなたはJohn Smithの公開暗号鍵のコピーを手に入れたところだとしよう。その鍵が本当にJohn Smithのものか、だれか詐欺師のものか、どうやってわかるだろうか? この答えが鍵署名である。それは偽造できないために、メッセージへの署名も同様である。あなたはJohn Smithの本当の鍵を手にしたのかどうかわからないとしよう。しかし、Joe Blowからの信頼できる鍵があったとする。そして、あなたはJoe BBlowを信頼しており、彼がJohn Smithの鍵に署名を追加したとする。そうすると、あなたは今や、John Smithの鍵のコピーが有効であると信用できるだろう。これが鍵署名というものだ。この信用の鎖はいくつかのレベルで伝えられる。Dを信頼するCを信頼するBを信頼するA、というように。PGP設定ファイルで、この信用の鎖が何レベルまで進んでもいいようにするかを決められる。

これをコントロールするオプション(PGPの設定ファイル、CONFIG.TXTにある)は、

Cert_Dept = n
これがあなたの「信頼の網」の最大の深さを示す。あなた自身の鍵からn個「離れた」鍵は、他の鍵を紹介するのに使われない。
Completes_Needed = n
これは、鍵を有効とするために必要な「完全に信頼できる」鍵の数を示す。ある鍵が完全に信頼されるのは、それが有効であって、しかも、この人を他の人の紹介者として信用するかどうかPGPに尋ねられたときに、「4。はい、いつも」オプションを選んだ場合である。
Marginals_Needed = n
これは、鍵を有効とするために必要な「やや信頼できる」鍵の数を示す。ある鍵がやや信頼されるのは、上記の質問で「3。たいてい」オプションを選んだ場合である。他の場合にはすべて、鍵はまったく信頼されない。

pgp -kc で、鍵の信頼度パラメーターを表示できる。質問4.7も参照のこと。いくつかのレベルの鍵は、あなたの直接の信頼から取り除かれることに注意。

PGP信頼モデルは、Alfarez Abdul-Rahmanによって詳しく論じられている。

 

6.2 鍵への署名の仕方は?

コマンド・プロンプトから以下のコマンドを実行する。
PGP -ks [-u あなたのID] <鍵ID>

これで、あなたは鍵IDで特定された鍵に署名(もし指定していれば、あなたの私的鍵で署名されたもの)を追加する。鍵IDがユーザーIDなら、あなたは特定のユーザーIDに署名する。そうでなければ、その鍵にデフォルトのユーザーID(pgp -kv <鍵ID>で最初にリストされるもの)で署名することになる。

次に、あなたはその署名とともに、"-kxa"オプションを使って、この更新された鍵のコピーを抜き取るべきだ。装甲テキストファイルが作られる。このファイルを鍵の所有者に送って、彼の選んだだれかへの新しい署名を伝えることができるようにしよう。

あなたの秘密鍵束には特に注意すること。それをだれかの機会にコピーして彼らの公開鍵に署名しようとしてはならない――彼らはあなたの秘密鍵をコピーして、あなたのパスフレーズを盗めるようにPGPを改造しているかもしれないからだ。

 

6.3 自分の鍵に署名すべきか?

そう、あなたはあなたの鍵のそれぞれの個人IDに署名すべきである。これは、だれかが偽のアドレスをID部分に書き込んであなたへのメールを彼らのところに送るようなことができないようにするだろう。もちろん彼らは暗号化メールを読めないが、あなたはそれをまったく見ることすらできなくなるだろう。さらに悪いことには、「今から0x416A1A35鍵を使ってください」と読める偽ユーザーIDを付け加えれば、あなたの鍵ではなく、どこかの詐欺師の鍵を使うことになってしまうのである。

ユーザーIDをだれかの鍵に追加することは非常に簡単だ。それに必要なのはバイナリ・エディタと、PGP公開鍵フォーマットについての少しの知識である。しかし、あなたのユーザーIDに署名できる唯一の人物はあなたしかおらず、偽者は署名できないので、その鍵を手にした者はすぐに偽物かどうかわかる。たとえば、私の公開鍵束の登録は、以下のように"-kvv"コマンドで示すことができる。


Type Bits/KeyID    Date       User ID
pub  1024/416A1A35 1994/10/01 Arnoud Engelfriet <galactus@stack.nl>
sig       416A1A35             Arnoud Engelfriet <galactus@stack.nl>
                              *** <galactus@stack.urc.tue.nl> now INVALID!
sig       416A1A35             Arnoud Engelfriet <galactus@stack.nl>
                              Galactus <galactus@stack.urc.tue.nl>
sig       3602A619             Stephen Hopkins <shopkins@coventry.ac.uk>
sig       DD63EF3D             Frank Castle <Frank_Castle@panther.pphost.nl>
sig       416A1A35             Arnoud Engelfriet <galactus@stack.nl>
                              Arnoud Engelfriet <galactus@stack.urc.tue.nl>
sig       390E3FB1             Martijn Heemels <M.A.L.Heemels@stud.tue.nl>
sig       DA87C0C7             Edgar W. Swank   <EdgarSwank@Juno.com>
sig       416A1A35             Arnoud Engelfriet <galactus@stack.nl>

あなたが自分の鍵に署名すべき理由についてさらに詳しい議論を見たいなら、Walther Soldiererの「なぜあなたは自分の鍵に署名すべきか」を参照のこと。

PGP 2.6.3[i]は自動的に、あなた自身の鍵に追加したすべてのユーザーIDに自動的に署名することに注意。

 

6.4 私はX氏の鍵に署名すべきか?

だれかの鍵に署名することは、その鍵がまさにその人物のものであって、彼がそのように称している人物そのものであると信じているということを世界に示すことである。他の人は、あなたの署名によって、その鍵が有効かどうかを決めるのだから、気まぐれに署名すべきではない。

国によっては、パスポート申請のときの本人の証拠として、パスポートの写真に医者やエンジニアなどの尊敬される専門家に裏書きしてもらうことが必要なところもある――だれかの鍵に署名することは同じようなものだと考えるべきだ。代わりに、だれかの鍵に署名するときには、その人物の同一性について法廷で証言する覚悟があるかというくらい自問自答すべきだ。

ある人の鍵に署名することは、その人を好きかどうかとか、その人を信頼するかどうかとか、その人の行動を支持するかどうかとは関係ないことを忘れてはならない。それはちょうどパーティーでだれかに会って、「やあ、あそこにいるのがJoe Blowだよ」というようなものだ。Joe Blowは斧殺人者かもしれない。だが、彼を群衆の中から見分けたからといって、あなたはその犯罪で訴えられることはないのである。

 

6.5 だれかのものであると立証するには?

それは、あなたがその人をどれだけよく知っているかにかかっている。親族、友人、同僚なら簡単だ。会議で会った人や、鍵署名セッションでは、運転免許証やクレジット・カードのようないくらかの証拠が必要である。
 

6.6 誰かが偽の鍵を署名するように送ってこなかったかどうか知るには?

誰かが誤ったIDの鍵を作って、不正なヘッダで電子メールを送ってきたり、電子メールが送られてくる中継点で別の鍵とすり替えることは非常に簡単である。フィンガー・サービスは改変しづらいけれども、不可能ではない。問題は、公開鍵交換は、安全な経路は必要ではない(盗聴なら問題とはならない)が、改変を証明する経路は必要(鍵代用は問題)ということだ。

それが、よく知っていて、声もわかる人からの鍵であれば、電話をして彼らの鍵の指紋を読み上げてもらえばいい(pgp -kvc <ユーザーID>で出てくる)。確かにするために、鍵のサイズと鍵IDも尋ねよう。同一の指紋で、偽造鍵を作る方法があるからだ(質問4.10に詳細がある)。たとえば、彼が業務用名詞に印刷しているようなときにも、これらの詳細をチェックすることができるだろう。

その人をよく知らないなら、鍵を面と向かって交換し、その人のものであるという証拠を尋ねればいい。彼らが鍵を追加できるように、あなたの公開鍵ディスクを機械に入れてみようと考えてはならない――それはあなたの鍵を同時に詐術的に交換できる。もしユーザーIDに電子メールアドレスが含まれているなら、同意された暗号化メッセージを、署名する前にそのアドレスと交換して確かめよう。あなたが確認していない鍵のユーザーIDには、署名してはならない。

 

6.7 鍵署名パーティーとは?

鍵署名パーティーは、PGPのいろいろなユーザーが集まって、鍵に署名するものである。これは「信頼の網」を広げるのに大いに役立つ。
 

6.8 鍵署名パーティーを開くには?

考え方は簡単だが、実際にやるのはちょっと難しい。他の人の私的鍵を汚損させたり、ウィルスを広めたりしたくないだろうからだ(これは、フロッピーが交換されるときには否応なくついてまわるリスクだが)。ふつう、こういうパーティーは、パーティーで誰もが会い、本人のものであると立証し、彼らから鍵指紋を得て、家で署名することになる。

Derek Atkins <warlord@mit.edu> はこの方法を推薦している。

鍵署名セッションを開くにはいろいろな方法がある。多くの提案がなされてきた。そして、このニュースグループにさらに指摘しておくために、うまくいき、しかも配布と署名についてn2乗問題を解決できる一つの方法を提案しておこう。これがそのやり方。

  1. 鍵署名セッションを発表し、参加するつもりの人は、公開鍵をあなたに(あるいはそこにいるだれかに)送ってくるように頼む。RSVPもステップ3のための人数に数えてよい。
  2. あなたは、公開鍵を一つの鍵束に入れ、その鍵束に pgp -kvc を実行して、出力をファイルに保存する。
  3. pgp -kvcファイルのハードコピーしたものをN部印刷して、これとメディアに保存された鍵束を集まりに持っていく。
  4. 集まりでは、印刷物を配布し、鍵束を検索する場所を提供する(ftpサイトを動かすか、あるいはフロッピーのコピーをつくってもよいし、あるいは――たいしたことではない)。
  5. 全員が部屋に入ったら、それぞれの人が立って、この人物を認定する(たとえば、「はい、この人はまさにDerek Atkinsです――私は彼と6年間学校に通ったし、2年間一緒に住んでいました」)。
  6. それぞれの人が自分自身の指紋を確実にとっておき、認証されたあとで、指紋を声を出して読み上げ、配られた印刷物と突きあわせて確認する。
  7. この手続きが終わった後、家に帰って、鍵束を取り出し、pgp -kvc を自ら実行して、ビットをもう一度確認し、暇なときに鍵に署名する。
  8. 鍵サーバーに保存するために、あなたはすべての署名をもとの人に選んで送ってもいい。送られた人は、それをもう一度単一の鍵束に組み込んで、鍵サーバーと個々の人にその単一の鍵束を送信することができる。
 
[ PGP-FAQ目次]
[ 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11]
[ 追補 ]
[ このFAQについて | 用語集 | 著作権]
 

HOME > Theory > Crypt

2000年盗聴法対抗
ダウンロードPGP6.5.1iPGP disk
日本語化PGP鍵作成
PGPdiskマウント秘密鍵を隠す
落とし穴
完全抹消法

PGP ユーザーズ・マニュアル 第1巻
The comp.security.pgp FAQ 日本語版
パスフレーズFAQ 日本語版
バックドア NSAPhrack Magazineソースコード
暗号関係リンク集

叛乱オンライン