NILFS リリースの PGP 署名の検証

このサイトを通じリリースされるソフトウェアには、対応する PGP 署名を用意しています。署名を検証して、 ダウンロードされたリリースの完全性を確認することをお勧めします。

検証のプロセスを解説するために、ここでは nilfs-utils-2.2.7 リリースを例として用います。 事前にリリースパッケージである nilfs-utils-2.2.7.tar.bz2 と その署名である nilfs-utils-2.2.7.tar.bz2.asc を入手している前提で話を進めます。 (まだの場合には、例えば "wget" を用いて以下のように 取得することができます。)

$ wget https://nilfs.sourceforge.io/download/nilfs-utils-2.2.7.tar.bz2
$ wget https://nilfs.sourceforge.io/download/nilfs-utils-2.2.7.tar.bz2.asc

パッケージの正当性は、"gpg2" (もしくは "gpg") を署名ファイルに対して "--verify" コマンドを指定して実行することで確かめることができます。

$ gpg2 --verify nilfs-utils-2.2.7.tar.bz2.asc

出力結果はおそらく

gpg: Signature made Thu 09 Nov 2017 09:56:24 PM JST using RSA key ID 6DEFF458
gpg: Can't check signature: No public key

となるでしょう。 このメッセージはリリースマネージャの公開鍵が、 使用中のシステムに登録されていないことを示しています。 この場合、以下のようにして PGP サーバから公開鍵を取り込む必要があります。

$ gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 8B055AE86DEFF458

ここで、"8B055AE86DEFF458" はリリースマネージャのロングフォーマットの"key ID"(PGP 鍵の識別番号)です。

では、再び "gpg2 --verify" を試してみましょう。

$ gpg2 --verify nilfs-utils-2.2.7.tar.bz2.asc
gpg: Signature made Thu 09 Nov 2017 09:56:24 PM JST using RSA key ID 6DEFF458
gpg: Good signature from "Ryusuke Konishi <konishi.ryusuke@gmail.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 6147 BCD9 6F8A A0C3 527D  FF3C 8B05 5AE8 6DEF F458

今度は、署名は適正であることが確認されました。 しかしながら、鍵が信用できることは保証されていません。 このパッケージを署名するのに用いられた鍵(この例では 6DEFF458)が、 実際にパッケージマネージャのものであるかを検証する必要があります。

このための真に安全な方法は、PGP の"Web of Trust" (WoT) を用いることです。 WoT は暗号に基づく鍵への信頼のチェーンを提供します。 PGP WoT については、 Wikipedia の記事 および GnuPG マニュアルの Validating other keys on your public keyring の章をお読み下さい。

この方法はしかし時間と手間を要するかもしれません。 妥当な水準で安全性を確認する簡単な方法は、Ryusuke Konishi の鍵からパッケージの署名に用いられた鍵へのトラストチェーンを見ることです。 これには、サイト pgp.cs.uu.nl を用います(具体的には、 "to" の欄に、署名の検証時に出力された鍵を入力して"trust paths" ボタンを押します)。 このサイトのパッケージをリリースするのは、Ryusuke もしくは Ryusuke が直接署名したメンバのみです。

  • follow NILFS in RSS
  • follow NILFS in feedly
  • follow NILFS in inoReader