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です。