« ^ »

GnuPGでファイルを署名する

所要時間: 約 10分

Emacsのパッケージがインストールされるのを眺めるで.sigという拡張子のファイルをダウンロードした。これはGnuPGの署名ファイルだ。今回はこの署名ファイルを検証する。また自分で署名ファイルも作成する。なお実行環境のOSはmacOS montereyを使用する。

準備

GnuPGとは

GNU Privacy Guard (GnuPG, GPG) とは、Pretty Good Privacy (PGP) の別実装として、GPL に基づいた暗号化ソフトである。 OpenPGP 規格 (RFC 4880) に完全準拠しているが、古い PGP との互換性は完全ではない。 (Wikipediaより: GNU Privacy Guard - https://ja.wikipedia.org/wiki/GNU_Privacy_Guard)

要は暗号化や署名といった機能を提供する。誰かにデータを渡したり渡されたりする際、データの中身を見られないようにしたり、そのデータが本当に本人から渡されたことを保証する。様々な場面で使われているが、例えばパッケージ管理ツールはPGPの機構を利用してダウンロードしたファイルを検証する。

GnuPGのインストール

今回はHomebrewを使ってインストールする。

brew install gnupg

インストールされたGnuPGのバージョンを確認する。

gpg --version
gpg (GnuPG) 2.3.8
libgcrypt 1.10.1
Copyright (C) 2021 Free Software Foundation, Inc.
License GNU GPL-3.0-or-later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: /Users/sximada/.gnupg
サポートしているアルゴリズム:
公開鍵: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
暗号方式: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
      TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
AEAD: EAX, OCB
ハッシュ: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
圧縮: 無圧縮, ZIP, ZLIB, BZIP2

gpg-agentのインストール (不要)

この手順はgpg-agentがgnupgと一緒にインストールされるようになったため、不要となった。

https://github.com/Homebrew/homebrew-core/commit/965e130e04e5900e35bf1f0b6ebad9d1c2f680a7

gpg-agentは秘密鍵を任意のプロトコルから独立して管理する。

https://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html

brew install gpg-agent

gpgはpgp-agentをバックエンドとして利用される。gpg-agentのプロセスはgpgなどの起動時に自動的に起動する。

pinentry-macのインストール

pinentryはGnuPGのパスフレーズやPIN番号を入力する手段を提供する。macOSではmacOS用のpinentry-macをインストールするとパスフレーズ入力時などにGUIのダイアログが開くようになる。Homebrewを使ってインストールする。

brew install pinentry-mac

gpg-agentがpinentry-macを使うための設定

gpg-agentにpinentry-macを利用させるには ~/.gnupg/gpg-agent.conf に次を設定する。

use-standard-socket
pinentry-program /usr/local/bin/pinentry-mac

設定が完了したら設定を読み込ませるためにgpg-agentを一度終了する。

gpgconf --kill all

鍵を作成する

自分の鍵を作成する。作成には --gen-key オプションを指定する。通常はインタラクティブな画面上のやりとりが必要だが --batch を指定することで設定ファイルからも鍵を生成できる。

master.confの中身

設定ファイルの詳しい書き方はhttps://www.gnupg.org/documentation/manuals/gnupg/Unattended-GPG-key-generation.htmlに記述されている。

では鍵を生成する。

gpg --gen-key --batch master.conf

出力

gpg: keybox'/Users/sximada/.gnupg/pubring.kbx'が作成されました
gpg: /Users/sximada/.gnupg/trustdb.gpg: 信用データベースができました
gpg: ディレクトリ'/Users/sximada/.gnupg/openpgp-revocs.d'が作成されました
gpg: 失効証明書を '/Users/sximada/.gnupg/openpgp-revocs.d/C0F7A0C0782F4AD1648F60F0DFAF86B7CD737B72.rev' に保管しました。
gpg: Successfully done

生成に成功した。master.confの設定にしたがって鍵が作成された。 /Users/xxx/.gnupg/openpgp-revocs.d には失効証明書が出力される。秘密鍵が漏れたなどの理由で鍵の失効をしなくてはいけなくなった時に使う。

署名を検証する

前回確認したarchive-contentsの署名を確認する。まずはarchive-contentsファイルとその署名ファイルをelpaからダウンロードする。

curl https://elpa.gnu.org//packages/archive-contents -o archive-contents
curl https://elpa.gnu.org//packages/archive-contents.sig -o archive-contents.sig
ファイル名説明
archive-contentselpaのindex情報
archive-contents.sigarchive-contentsの署名

ではこの署名を検証する。 --verify と署名ファイルを指定する。署名対象のファイルも指定できるが、省略した場合は .sig 拡張子が取られた状態のファイルを対象にする。

gpg --verify archive-contents.sig

出力

gpg: 署名されたデータが'archive-contents'にあると想定します
gpg: 金 10/14 18:05:03 2022 JSTに施された署名
gpg:                RSA鍵C433554766D3DDC64221BFAA066DAFCB81E42C40を使用
gpg: 署名を検査できません: No public key

署名の検査に失敗した。 No public key と出力されています。署名の検証には公開鍵を使うが、それがないようだ。署名の鍵として CA442C00F91774F17F59D9B0474F05837FBDEF9B が使用された。この鍵を探してみる。鍵の検索には --search-key と探す鍵を指定する。

gpg --search-key C433554766D3DDC64221BFAA066DAFCB81E42C40

鍵が見つかるとその情報が表示される。鍵の番号を入力しエンターを押すと鍵がインポートされる。

gpg: data source: https://162.213.33.8:443
(1)     GNU ELPA Signing Agent (2019) <[email protected]>
          3072 bit RSA key 066DAFCB81E42C40, 作成: 2019-04-23
Keys 1-1 of 1 for "C433554766D3DDC64221BFAA066DAFCB81E42C40".  番号(s)、N)次、またはQ)中
止を入力してください >1
gpg: 鍵066DAFCB81E42C40: 公開鍵"GNU ELPA Signing Agent (2019) <[email protected]>"を
インポートしました
gpg:           処理数の合計: 1
gpg:             インポート: 1

インポートされた鍵を確認する。鍵の一覧を確認するには -k を指定する。

gpg -k

出力

pub   rsa4096 2022-10-15 [SCEA] [有効期限: 2022-11-14]
      C0F7A0C0782F4AD1648F60F0DFAF86B7CD737B72
uid           [  究極  ] TakesxiSximada <[email protected]>sub   rsa4096 2022-10-15 [SEA] [有効期限: 2022-11-14]

pub   rsa3072 2019-04-23 [SC] [有効期限: 2024-04-21]
      C433554766D3DDC64221BFAA066DAFCB81E42C40
uid           [  不明  ] GNU ELPA Signing Agent (2019) <[email protected]>

再度署名を検証する。

gpg --verify archive-contents.sig

出力

gpg: 署名されたデータが'archive-contents'にあると想定します
gpg: 金 10/14 18:05:03 2022 JSTに施された署名
gpg:                RSA鍵C433554766D3DDC64221BFAA066DAFCB81E42C40を使用
gpg: "GNU ELPA Signing Agent (2019) <[email protected]>"からの正しい署名 [不明の]
gpg: *警告*: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
 主鍵フィンガープリント: C433 5547 66D3 DDC6 4221  BFAA 066D AFCB 81E4 2C40

先ほどインポートした公開鍵が信用できるものとして登録されていないので警告が出る。鍵の信用を設定するためには --edit-key オプションを使う。

gpg --edit-key C433554766D3DDC64221BFAA066DAFCB81E42C40

コマンドを実行するとインタラクティブに操作を求められる。trustコマンドを実行し公開鍵の信用を設定する。

gpg (GnuPG) 2.3.8; Copyright (C) 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.


pub  rsa3072/066DAFCB81E42C40
     作成: 2019-04-23  有効期限: 2024-04-21  利用法: SC  
     信用: 不明の     有効性: 不明の
[  不明  ] (1). GNU ELPA Signing Agent (2019) <[email protected]>

gpg> trust
pub  rsa3072/066DAFCB81E42C40
     作成: 2019-04-23  有効期限: 2024-04-21  利用法: SC  
     信用: 不明の     有効性: 不明の
[  不明  ] (1). GNU ELPA Signing Agent (2019) <[email protected]>

他のユーザの鍵を正しく検証するために、このユーザの信用度を決めてください
(パスポートを見せてもらったり、他から得たフィンガープリントを検査したり、などなど)

  1 = 知らない、または何とも言えない
  2 = 信用し ない
  3 = まぁまぁ信用する
  4 = 充分に信用する
  5 = 究極的に信用する
  m = メーン・メニューに戻る

あなたの決定は? 5
本当にこの鍵を究極的に信用しますか? (y/N) y

pub  rsa3072/066DAFCB81E42C40
     作成: 2019-04-23  有効期限: 2024-04-21  利用法: SC  
     信用: 究極        有効性: 不明の
[  不明  ] (1). GNU ELPA Signing Agent (2019) <[email protected]>
プログラムを再起動するまで、表示された鍵の有効性は正しくないかもしれない、
ということを念頭においてください。

gpg> quit

再度署名の検証を行う。

gpg --verify archive-contents.sig
gpg: 署名されたデータが'archive-contents'にあると想定します
gpg: 金 10/14 18:05:03 2022 JSTに施された署名
gpg:                RSA鍵C433554766D3DDC64221BFAA066DAFCB81E42C40を使用
gpg: 信用データベースの検査
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: 深さ: 0  有効性:   2  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 2u
gpg: 次回の信用データベース検査は、2022-11-14です
gpg: "GNU ELPA Signing Agent (2019) <[email protected]>"からの正しい署名 [究極]

今回は署名の検証に成功した。

署名を作成する

今度はファイルに対して署名を作成する。署名を作るファイルはこのような内容のテキストファイルにする。

gpg --detach-sign test.txt

実行するとパスフレーズを入力するためのダイアログが表示されます。

https://s3.qrunch.io/dc3a0d1b3b630fc5f98c8eb263b380f3.jpg

正しいパスフレーズを入力するとtest.txt.sigが作成される。

作成した署名を確認するには以前と同様 --verity を使って.sigファイルを指定する。

gpg --verify test.txt.sig

出力はこのように変わる。

gpg: 署名されたデータが'test.txt'にあると想定します
gpg: 土 10/15 21:03:45 2022 JSTに施された署名
gpg:                RSA鍵213299F2E67D819A784403CF330B310D2375BAC4を使用
gpg: "TakesxiSximada <[email protected]>"からの正しい署名 [究極]

適切に署名ができた。

公開鍵を公開する

誰かにこの署名を検証してもらうためには自分の公開鍵を渡す必要がある。公開鍵をエクスポートしてWeb上のどこかに置いておくか、またはPGP公開鍵サーバーに公開鍵をアップロードするという方法もある。

公開鍵をエクスポートする

公開鍵をWeb上に配置するにせよ誰かに渡すにせよ、GnuPGが内部的に管理している状態では渡すこともできず不便だ。 --export を使って公開鍵を出力してそれを渡す。

gpg --export --armor
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=EcDA
-----END PGP PUBLIC KEY BLOCK-----

このテキストが公開鍵なので、必要に応じてこれを渡せばば良い。逆にインポートは --import FILENAME で取り込める。

PGP公開鍵サーバーに公開鍵をアップロードする

より多くの人に使ってもらいたい場合はPGP公開鍵サーバーに公開鍵をアップロードするほうが好ましいこともある。PGP公開鍵サーバーを使うことで何が嬉しいかというと、鍵の検索やインポートをgpgコマンドのみでできる。

鍵の一覧を確認する。

gpg -k
---------------------------------
pub   rsa4096 2022-10-15 [SCEA] [有効期限: 2022-11-14]
      C0F7A0C0782F4AD1648F60F0DFAF86B7CD737B72
uid           [  究極  ] TakesxiSximada <[email protected]>sub   rsa4096 2022-10-15 [SEA] [有効期限: 2022-11-14]

pub   rsa3072 2019-04-23 [SC] [有効期限: 2024-04-21]
      C433554766D3DDC64221BFAA066DAFCB81E42C40
uid           [  究極  ] GNU ELPA Signing Agent (2019) <[email protected]>
鍵の一覧

--keyserver で送信するサーバーを指定し --send-keys で送信する鍵を指定する。コマンドは以下のようになる。今回は継続使うものではないので送信しなかった。

gpg --keyserver pgp.mit.edu --send-keys 27621C5B18388278B335B3903DEB51DB0CA60F0A
鍵の送信

公開鍵は送信すると削除はできないが、失効は失効証明書を使うことで失効できる。

まとめ

  • GnuPGとは何かを説明し、使用できる環境を作成した。
  • 自分の鍵を作成しどこのディレクトリに配置されたのかを確認した。
  • 署名を検証した実際のデータ(elpaのインデックス情報)を使って学んだ。
  • 自分の鍵を使用してファイルを署名する手順を学んだ。
  • 自分の公開鍵を公開する方法を学んだ。

GnuPGを扱う上でだいたい一通りのことを今回実施した。使い方はとっつきにくいが、慣れればそれほどでもないので、色々と触ってみると良いかもしれない。

参考