GnuPGを使ったデジタル署名

前回の記事では、署名されたファイルを検証し、公開鍵を使って受信者のためのファイルを暗号化することでGnuPGを紹介しました。 また、暗号化されたメッセージを受信できるように、鍵ペアを作成して公開鍵をエクスポートする方法も共有しました。 この記事では、電子メールを介して共有したり、webサイトに公開したりする前にファイルに署名する方法を説明します。

GnuPGでは、ファイルに署名する方法が複数あります。

$ gpg --help | grep -i signSign, check, encrypt or decrypt -s, --sign make a signature --clear-sign make a clear text signature -b, --detach-sign make a detached signature --verify verify a signature

各オプションについて説明しますので、簡単なテキストファイルに署名します。

$ cat sample.txt Sample text for gpg signing

署名を作成する

--signオプションを使用すると、ファイルは秘密鍵で効果的に暗号化されます。 ファイルの内容を表示するには、公開キーが必要です。 これにより、受信者は送信元を確認し、送信元からクリアテキストコンテンツを削除します。 公開鍵を持っている人は誰でもファイルを復号化できるので、秘密ではありません。

$ gpg -s sample.txt

これにより、sampleという名前のファイルが作成されます。txt。gpg。

$ file sample*sample.txt: ASCII textsample.txt.gpg: data
画像
aからBに送信された二つのファイルを表示するグラフィック。

署名のみを検証するには、--verifyオプションを使用します。 内容を表示し、署名検証を表示するには、--decryptオプションを使用します。

$ gpg --decrypt sample.txt.gpg Sample text for gpg signinggpg: Signature made Sat 30 May 2020 09:16:24 AM EDTgpg: using DSA key 15AC***********...omitted...

デタッチされた署名を作成

デタッチされた署名オプションを使用すると、公開鍵を持たずにメッセージを表示するオプションをすべての人に提供できます。 これにより、必要に応じて元のメッセージを検証するために使用される別の署名ファイルが作成されます。 最も単純な形式では、このファイルには元のメッセージのハッシュが含まれており、秘密鍵で暗号化されています。 公開鍵を持っている人は誰でも署名を開き、ハッシュを比較して署名されたファイルの整合性を検証できます。

--detach-signオプションを使用して署名ファイルを作成します。

$ gpg -b sample.txt

結果は別です。sigデータファイル。

$ file sample*sample.txt: ASCII textsample.txt.gpg: datasample.txt.sig: data
画像
aからBに送信された二つのファイルを表示するグラフィック。

データファイルを共有、投稿、または電子メールで送信したくない場合は、--armorオプションを使用してファイルに署名すると、署名付きのASCIIテキストファイルが作 それはまた使用します。の代わりにasc拡張子.sigエクステンション:

$ cat sample.txt.asc -----BEGIN PGP SIGNATURE-----iF0EABECAB0WIQQVrPeUo9lk0dnOTCbvwxHCv6EJdAUCXtO/yAAKCRDvwxHCv6EJdC2BAJ49fIcOdBUdE0PELySEMlKNzVnZLgCdG1gsTim3gab2dgL6qagHArSlgq8==IvP/-----END PGP SIGNATURE-----

元のプレーンテキストファイルと別の署名ファイルの両方を受信者が使用できるようにする必要があります。

署名を検証するには、署名ファイルを指定してから、元のファイルを指定します。

$ gpg --verify sample.txt.sig sample.txt

デフォルトの名前が使用されている場合は、暗号化されていないファイルの名前を残すことができます。

$ gpg --verify sample.txt.sig gpg: assuming signed data in 'sample.txt'gpg: Signature made Sat 30 May 2020 09:23:53 AM EDT...omitted...

クリアテキスト署名を作成する

--clear-signオプションは、GPGの長い歴史の点で新しいオプションであり、Fedora download CHECKSUM filesなどのwebサイトに公開されているファ 内容は誰でも読むことができます。 署名情報は、コンテンツの発信元と整合性を検証するために、同じファイルでも使用できます。

画像
SHA256SUMとPGP署名ブロックのプレーンテキストの両方を示すチェックサムファイルの内容

--clear-signオプションを使用すると、新しいファイルが作成されます。asc拡張子。

$ gpg --clear-sign sample.txt
$ file sample*sample.txt: ASCII textsample.txt.asc: ASCII textsample.txt.gpg: datasample.txt.sig: data

署名を検証するには、--verifyオプションを使用します:

$ gpg --verify sample.txt.asc gpg: Signature made Sat 30 May 2020 09:27:56 AM EDT...omitted...gpg: WARNING: not a detached signature; file 'sample.txt' was NOT verified!

検証プロセス中に、関連する元のファイルがチェックされていないことを警告するメッセージが表示されることに注意してください。 Webサイトに投稿する前に、このファイルの名前を変更できます。 検証では、ファイルの内容が引き続き確認されます。

これは多くの場合、製品の消費者にとって最も便利な方法ですが、GPGのmanページには、完全な検証が必要な場合に分離された署名がより良いオプショGpgのmanページから

:

注:平文署名を検証する場合、GPGは平文署名データを構成するもののみを検証し、平文署名またはダッシュマーカー行の直後のヘッダー行以外の余分なデータは検 実際の符号付きデータを書き出すために–outputオプションを使用することもできますが、この形式には他にも落とし穴があります。 分離された署名を支持して平文署名を避けることが推奨されます。

特定のキーペアを使用して

上記の例はすべて、私のキーリングで利用可能な最初の秘密鍵で署名されました。 Webサイトで公開するためにファイルに署名するときに、別のキーを使用する場合があります。 キーペアは、プロジェクトまたは製品用に特別に作成されます。 キーペアは、新しい共有キーリングにすることもできます。

$ gpg --keyring /etc/gpgkeys --no-default-keyring --full-gen-key <other options>

ファイルが署名または暗号化されている場合は、--keyringオプションも指定してください。

一人だけがファイルに署名するためにキーを使用している場合でも、署名に使用する別のキーペアを作成します。 個人的な電子メールの暗号化など、他の日常的なタスクに同じキーを使用しないでください。 gpg --list-secretで使用可能な秘密キー名を一覧表示できます。 ID、名前、または電子メールを使用してキーを識別できます。

キーリングから特定のキーを使用してファイルに署名するには、--local-useridオプションを使用します。

$ gpg --local-user "My Project 2" --clear-sign sample.txt

ラップアップ

単純なテキストファイルが製品ダウンロードのチェックサムハッシュのリストである場合、そのファイル、署名ファイル、および署名を検証するために使用される公開鍵はすべてwebサイトに投稿することができます。 消費者は、システムにソフトウェアをインストールする前にダウンロードを確認できます。



+