前回の記事では、署名されたファイルを確認し、公開鍵を使用して受信者のファイルを暗号化することでGnuPGを紹介しました。また、暗号化されたメッセージを受信できるように、キーペアを作成して公開キーをエクスポートする方法も共有しました。この記事では、電子メールで共有したり、Webサイトで公開したりする前にファイルに署名する方法を示します。
GnuPGには、ファイルに署名する方法が複数あります。
$ gpg --help | grep -i sign
Sign, 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 text
sample.txt.gpg: data
署名のみを確認するには、--verify
を使用します オプション。コンテンツの表示と署名の確認の両方を行うには、--decrypt
を使用します オプション。
$ gpg --decrypt sample.txt.gpg
Sample text for gpg signing
gpg: Signature made Sat 30 May 2020 09:16:24 AM EDT
gpg: using DSA key 15AC***********
...omitted...
切り離された署名を作成する
分離署名オプションを使用すると、公開鍵なしでメッセージを表示するオプションをすべての人に提供できます。これにより、必要に応じて元のメッセージを検証するために使用される個別の署名ファイルが作成されます。最も単純な形式では、このファイルには元のメッセージのハッシュが含まれており、秘密鍵で暗号化されています。公開鍵を持っている人は誰でも署名を開き、ハッシュを比較して署名されたファイルの整合性を検証できます。
--detach-sign
を使用して署名ファイルを作成します オプション。
$ gpg -b sample.txt
結果は別の.sig データファイル。
$ file sample*
sample.txt: ASCII text
sample.txt.gpg: data
sample.txt.sig: data
データファイルを共有、投稿、または電子メールで送信したくない場合は、--armor
を使用してファイルに署名できます。 オプションを選択すると、署名付きのASCIIテキストファイルが作成されます。 .ascも使用します .sigの代わりに拡張子 拡張子:
$ cat sample.txt.asc
-----BEGIN PGP SIGNATURE-----
iF0EABECAB0WIQQVrPeUo9lk0dnOTCbvwxHCv6EJdAUCXtO/yAAKCRDvwxHCv6EJ
dC2BAJ49fIcOdBUdE0PELySEMlKNzVnZLgCdG1gsTim3gab2dgL6qagHArSlgq8=
=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ダウンロードチェックサムファイルなどのWebサイトに公開されたファイルで非常に一般的です。内容は誰でも読むことができます。内容の出所と完全性を確認したい人のために、署名情報も同じファイルで利用できます。
--clear-sign
オプションを選択すると、 .ascを使用して新しいファイルが作成されます 拡張機能。
$ gpg --clear-sign sample.txt
$ file sample*
sample.txt: ASCII text
sample.txt.asc: ASCII text
sample.txt.gpg: data
sample.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のマニュアルページから:
注:クリアテキスト署名を検証する場合、GPGは、クリアテキスト署名データを構成するもののみを検証し、クリアテキスト署名または破線のマーカー行の直後のヘッダー行以外の追加データは検証しません。 --outputオプションを使用して、実際の署名付きデータを書き出すことができますが、この形式には他にも落とし穴があります。切り離された署名を優先して、クリアテキスト署名を避けることをお勧めします。
特定のキーペアを使用する
上記の例はすべて、私のキーリングで利用可能な最初の秘密鍵で署名されています。 Webサイトで公開するファイルに署名するときに、別のキーを使用したい場合があります。キーペアは、プロジェクトまたは製品専用に作成されます。キーペアは、新しい共有キーリング上に置くこともできます。
$ gpg --keyring /etc/gpgkeys --no-default-keyring --full-gen-key <other options>
ファイルが署名または暗号化されている場合は、必ず--keyring
も指定してください。 オプション。
キーを使用してファイルに署名しているのが1人だけの場合でも、署名に使用する別のキーペアを作成します。個人のメール暗号化など、他の日常的なタスクに同じキーを使用しないでください。 gpg --list-secret
で使用可能な秘密鍵名を一覧表示できます 。 ID、名前、または電子メールを使用して、キーを識別できます。
キーリングから特定のキーを使用してファイルに署名するには、--local-user
を使用します IDオプション。
$ gpg --local-user "My Project 2" --clear-sign sample.txt
まとめ
単純なテキストファイルが製品ダウンロードのチェックサムハッシュのリストである場合、そのファイル、署名ファイル、および署名の検証に使用される公開キーはすべてWebサイトに投稿できます。消費者は、システムにソフトウェアをインストールする前に、ダウンロードを確認できます。
[セキュリティについてもっと知りたいですか? ITセキュリティとコンプライアンスのチェックリストを確認してください。 ]