【ホームページに戻る】

公開鍵を入手する方法

デジタル署名を用いたファイルの検証に必要な公開鍵(Public-key)を探す場合、普通は、そのファイルが公開されているWeb-page内を探すか、または、同Web-page内のFAQページを探します。しかし、なかなか見つけられない場合があります。
そのような場合、ファイルを公開しているWeb-page管理者の多くが、自分の公開鍵を鍵サーバー(Public-Key-Server)に登録していることから、鍵サーバーから必要な公開鍵を入手できます。
以下、その実例を示します。

デジタル署名を用いて、ファイルが改ざんされていないことを検証するために「gpg --verify」コマンドを使います。
以下の例では、ホームディレクトリに「gnupg-1.4.0.tar.bz2」と「gnupg-1.4.0.tar.bz2.sig」とが存在すると仮定します。
Mac:~ lisa$ gpg --verify ./gnupg-1.4.0.tar.bz2.sig
gpg: 〓〓〓 12/16 19:50:52 2004 JSTにDSA鍵ID 57548DCDで施された署名
gpg: 署名を検査できません: 公開鍵が見つかりません
この例では、デジタル署名の検証に必要な公開鍵が無いため「署名を検査できません: 公開鍵が見つかりません」と言うエラーメッセージが表示されました。
ここで重要な情報は「DSA鍵ID 57548DCD」です。なぜなら、これが見つからなかった公開鍵のIDだからです。

その鍵ID「57548DCD」を用いて、鍵サーバーから公開鍵を読み込みます。
以下は「gpg --keyserver 鍵サーバーアドレス --recv-key 鍵ID」コマンドを用いて公開鍵を読み込んだ例です。
Mac:~ lisa$ gpg --keyserver pgp.nic.ad.jp --recv-key 57548DCD
gpg: 鍵57548DCDをhkpからサーバーpgp.nic.ad.jpに要求
gpg: 鍵57548DCD: 重複したユーザーIDの検出 - 併合
gpg: 鍵57548DCD: 公開鍵“Werner Koch (gnupg sig) <dd9jn@gnu.org>”を読み込みました
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、classic信用モデル
gpg: 深さ: 0  有効性:   3  署名:   4  信用: 0-, 0q, 0n, 0m, 0f, 3u
gpg: 深さ: 1  有効性:   4  署名:   0  信用: 0-, 0q, 0n, 0m, 4f, 0u
gpg:     処理数の合計: 1
gpg:           読込み: 1

ここで、再度ファイルの検証を行った例を示します
Mac:~ lisa$ gpg --verify ./gnupg-1.4.0.tar.bz2.sig
gpg: 〓〓〓 12/16 19:50:52 2004 JSTにDSA鍵ID 57548DCDで施された署名
gpg: “Werner Koch (gnupg sig) <dd9jn@gnu.org>”からの正しい署名
gpg: 警告: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
主鍵の指紋: 6BD9 050F D8FC 941B 4341  2DCC 68B7 AB89 5754 8DCD
今度は、公開鍵があるために「“Werner Koch (gnupg sig) <dd9jn@gnu.org>”からの正しい署名」と表示されました。
しかし、その下に「警告」が表示されています。これは、公開鍵を読み込んだだけで、署名をしていないからです。単にファイルの検証目的にしか使わない公開鍵の場合はこのままでも問題はありません。

もし気になる場合は、読み込んだ公開鍵に署名をしてください。
以下の例は、私が提供しているshell-scriptを用いた署名の例です。
Mac:~ lisa$ ./SignKeys.sh 'PASSPHRASE'  57548DCD
署名後に、再度ファイルの検証を行った例を示します。
Mac:~ lisa$ gpg --verify ./gnupg-1.4.0.tar.bz2.sig
gpg: 〓〓〓 12/16 19:50:52 2004 JSTにDSA鍵ID 57548DCDで施された署名
gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、classic信用モデル
gpg: 深さ: 0  有効性:   3  署名:   5  信用: 0-, 0q, 0n, 0m, 0f, 3u
gpg: 深さ: 1  有効性:   5  署名:   0  信用: 0-, 0q, 0n, 0m, 5f, 0u
gpg: 次回の信用データベース検査は、2005-12-31です
gpg: “Werner Koch (gnupg sig) <dd9jn@gnu.org>”からの正しい署名
以上のように、署名した直後のファイルの検証では、「信用データベースの検査」が行われます。「2005-12-31」は、この公開鍵の有効期限です。
その後のファイルの検証例は、以下の通りです。
Mac:~ lisa$ gpg --verify ./gnupg-1.4.0.tar.bz2.sig
gpg: 〓〓〓 12/16 19:50:52 2004 JSTにDSA鍵ID 57548DCDで施された署名
gpg: “Werner Koch (gnupg sig) <dd9jn@gnu.org>”からの正しい署名


By: Tomio
【ホームページに戻る】