sigやascファイル(GPG signature)の検証方法
フリーソフトウェアなどのファイルをwget等でダウンロードする時、下の例のように同じ場所に拡張子がsigやascのファイル(GPG signature)が置いてある場合があります。
hoge.tar.gz
hoge.tar.gz.sig
このGPG signatureファイルを使えばダウンロードしたファイルを検証することができます。
GPG signatureの検証方法
使用ツール
検証には一般的にGnuPGというツールを使います。
gpgというコマンドが使用できる環境なら問題ありません。
主なディストリビューションではgnupg(v2系はgnupg2)などのパッケージ名で用意されていると思いますので、インストールしておきましょう。
手順
binutilsを例に手順を示します。
まずはファイルをwgetコマンドなどでダウンロードします。
$ wget https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.xz
$ wget https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.xz.sig
次にgpgコマンドでGPG signatureを確認してみます。
$ gpg --verify binutils-2.33.1.tar.xz.sig
gpg: directory `/home/username/.gnupg' created
gpg: new configuration file `/home/username/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/username/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/home/username/.gnupg/pubring.gpg' created
gpg: assuming signed data in `binutils-2.33.1.tar.xz'
gpg: Signature made Sat Oct 12 23:15:53 2019 JST using RSA key ID DD9E3C4F
gpg: Can't check signature: public key not found
.gnupgディレクトリが存在しなかったので作成され、そしてIDがDD9E3C4Fの公開鍵が見つからないと言われて検証が中止されました。
ですのでgpgコマンドで見つからなかった公開鍵を取得してきます。
$ gpg --keyserver keys.gnupg.net --recv-key DD9E3C4F
gpg: requesting key DD9E3C4F from hkp server keys.gnupg.net
gpg: /home/username/.gnupg/trustdb.gpg: trustdb created
gpg: key DD9E3C4F: public key "Nick Clifton (Chief Binutils Maintainer) <nickc@redhat.com>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
無事に公開鍵が取得できたようですので改めて検証してみます。
$ gpg --verify binutils-2.33.1.tar.xz.sig
gpg: assuming signed data in `binutils-2.33.1.tar.xz'
gpg: Signature made Sat Oct 12 23:15:53 2019 JST using RSA key ID DD9E3C4F
gpg: Good signature from "Nick Clifton (Chief Binutils Maintainer) <nickc@redhat.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: 3A24 BC1E 8FB4 09FA 9F14 3718 13FC EF89 DD9E 3C4F
ワーニングは出ていますがGood signatureで検証に成功しているので取り合えずOKです。