トップページ >  PGP >  GnuPGの公開鍵をばら撒く
初版2009/09/01: 最終更新日2009/09/01
公開鍵をばら撒く
目次
はじめに
事前確認
鍵サーバーへの登録
鍵サーバーに登録した鍵の確認
成りすましへの対策
はじめに
鍵が利用可能であることを確認できたら、次は公開鍵を広めてみましょう。

公開鍵をメールやフラッシュメモリで渡すという方法もありますが、今回は、インターネット上にある鍵サーバーを利用することにします。
インターネット上に公開鍵をアップロードしておけば、鍵IDやユーザーIDを名刺の端に書いておくだけで、鍵データそのものを渡すことなく必要なときに公開鍵にアクセスすることが可能になります。

なお、今回は前チュートリアル「公開鍵と秘密鍵の作成」で作成した鍵を解説に用いています。

事前確認
鍵サーバーにアクセスする前に、まずはどの鍵をアップロードするのか確認しておきましょう。

以下のコマンドを入力してください。

gpg --list-keys

入力すると、以下のように保持している鍵の情報が現れます。

C:/Documents and Settings/ユーザー名/gnupg\pubring.gpg
---------------------------------------------------------------
pub   1024D/D6ABB386 2009-08-01
uid                  Example Taro (I'm very Taro) <example_taro@example.com>
sub   4096g/60815513 2009-08-01

これは前チュートリアルで作ったExapmle Taroの鍵です。Example Taroの鍵を使わない人は、自分の鍵をリストの中から探し出してください。
今回使用するのは、pub行にある公開鍵の鍵IDです。Example Taroの場合は“D6ABB386”となります。

鍵サーバーへの登録
公開鍵を鍵サーバーにアップロードするのは、非常に簡単です。

以下のコマンドを入力してください。

gpg --keyserver pgp.nic.ad.jp --send-keys D6ABB386

たったこれだけです。

--keyserverで国内の鍵サーバーpgp.nic.ad.jpに接続し、--send-keys以下で鍵ID“D6ABB386”を送信するよう命令しています。

入力を終えると、以下のメッセージが表示されます。

gpg: 鍵D6ABB386をhkpサーバーpgp.nic.ad.jpへ送信

たったこれだけです。これで公開鍵のアップロードは終了しました。

ちなみに、保持していない鍵の鍵IDやユーザーIDを入力すると、以下のメッセージが表示されます。このメッセージが現れた場合は、入力に間違いがないかよく確認し直してみてください。

gpg: “AAAAAAAA”鍵IDではありません: とばします
鍵サーバーに登録した鍵の確認
コマンドプロンプトでの操作はシンプルでよいのですが、いまいち淡々としすぎて情報を把握しづらいときがあります。
そんなときは、鍵サーバーに鍵のアップロード状況を問い合わせてみましょう。

鍵が正確にアップロードされているかを確認するには、以下のコマンドを利用します。

gpg --keyserver pgp.nic.ad.jp --search-keys D6ABB386

先ほどの--send-keysと同じように、--keyserverで国内の鍵サーバーpgp.nic.ad.jpに接続し、--search-keysで検索する鍵ID、またはユーザーIDの断片を指定します。(今回の場合は鍵ID)

入力後、以下のメッセージが表示されます。

gpg: “D6ABB386”をhkpサーバーpgp.nic.ad.jpから検索
(1)     Example Taro (I'm very Taro) <example_taro@example.com>
          1024 bit DSA key D6ABB386, 作成: 2009-07-27
番号(s)、N)次、またはQ)中止を入力してください >

きちんとアップロードされているようです。
今回の例では一度で目当ての鍵が現れましたが、出てこない場合はNを入力してください。

ここで数字を入力すると、指定の鍵をさらに詳しく調べることができます。
今回は1を入力します。

gpg: 鍵D6ABB386をhkpからサーバーpgp.nic.ad.jpに要求
gpg: 鍵D6ABB386:“Example Taro (I'm very Taro) <example_taro@example.com>”変更なし
gpg:     処理数の合計: 1
gpg:         変更なし: 1

手持ちの鍵と比較して更新があったかを確認します。
自分で作った鍵なので、成りすましがおこなわれていなければまず更新されていることはないでしょう。

成りすましへの対策
対応する秘密鍵以外で暗号化を解くには非常に専門的な技術が必要となりますが、誰でも自由に公開鍵をアップロードできる都合上、公開鍵の成りすましは比較的難しくはありません。

そのための対策が、電子指紋です。
電子指紋(fingerprint, hash)とは、データの並びから作り出す付加逆な文字配列のことです。これも文字配列を真似ること自体は難しくはないのですが、同一の電子指紋をもち、似た構造のデータを作り上げるのはほぼ不可能であるといわれています。
データの「個人」を特定するのによく使われているので、ご存知の方も多いのではないでしょうか。

GnuPGでデータの電子指紋を確認するには、以下のコマンドを入力します。

gpg --fingerprint D6ABB386

--fingerprintは、その字の並びのとおり、電子指紋を確認するためのコマンドです。コマンドの後ろに、電子指紋を確認したい鍵IDやユーザーIDを添えて入力します。

入力後、以下のように情報が表示されます。

pub   1024D/D6ABB386 2009-08-01
                 指紋 = A3FA 090A 4EEA 0F08 99AE 8CF6 1CB9 EC58 D6AB B386 uid                  Example Taro (I'm very Taro) <example_taro@example.com>
sub   4096g/60815513 2009-08-01

「指紋」列の文字列が、電子指紋となります。
この文字列を公開鍵を紹介しているウェブサイトや名刺などに添えておくことで、かなりの精度で成りすましを防ぐことができます。