
ファイルにデジタル署名が必要な状況や理由は様々でしょう。例えば、機密情報を共有する際、受信者がそのデータを含むファイルを信頼できることを確認したい場合などです。その場合、クライアントに送信する前にファイルにデジタル署名を付与しておくことが一つの方法です。クライアントはファイルを受け取った後、署名を検証し、デジタル署名が信頼できると判断した場合は、ファイルからデータを抽出して使用することができます。
Linuxでは、これはかなり簡単にできます。必要なのは、gnupgのインストール、gpgキー、そして署名するファイルだけです。それぞれの手順を順に説明しましょう。
ソフトウェアのインストール
ここでは Elementary OS でデモンストレーションを行いますが、プロセスはどの Linux ディストリビューションでも同様です (選択したディストリビューションに合わせてインストール コマンドを変更するだけです)。
gnupg をインストールするには、ターミナル ウィンドウを開いて次のコマンドを実行します。
sudo apt install gnupg
上記のコマンドは必要な依存関係をすべて取得し、問題なく完了します。
キーの生成
次のステップは、署名に使用するGPGキーを生成することです。このコマンドは、ファイルに署名するユーザーが実行します。これを行うには、次のコマンドを実行します。
gpg --gen-key
次の質問に答えるよう求められます。
- 必要なキーの種類 (デフォルトの RSA を受け入れるには Enter キーを押します)。
- 必要なキー サイズ (最大キー サイズは 4096 です)。
- キーの有効期間。
注: このキーを 1 つのファイルにのみ使用する場合、キーが 1 日後に期限切れになるように設定できます。
次に、次の情報を入力するよう求められます。
- 本名
- 電子メールアドレス
- コメント(任意)
- パスフレーズ
上記の入力が完了したら、gpg が鍵生成に必要なエントロピーを収集できるように、いくつか作業を行う必要があります。4096 サイズの鍵を使用することを推奨しているため、かなりの作業が必要になります。鍵が作成されたら、署名の準備は完了です。
ファイルに署名する
ファイルの署名は非常に簡単です。ターミナルウィンドウから、署名するファイルがあるディレクトリに移動します。ここでは ~/Downloads/gpg.docx を例に説明します。ターミナルウィンドウから次のコマンドを実行します。
gpg --sign gpg.docx
gpgキーを生成する際に使用したパスフレーズの入力を求められます。システムに複数のgpgキーがある場合は、関連付けられたメールアドレスでキーを指定できます。例:
gpg --sign --default-key email@address gpg.docx
email@address は使用するキーに関連付けられたアドレスです。システムにどのようなキーが登録されているか不明な場合は、次のコマンドを実行してください。
gpg --list-keys
鍵のパスフレーズを入力すると、ファイルが署名され、.gpg拡張子の新しいファイルが生成されます。署名されたファイルは、次のコマンドで署名を検証できます。
gpg --verify gpg.docx.gpg
上記のコマンドの出力には、キーの関連情報が表示されます (図 A )。
図A

ファイルを受信者に送信すると、受信者は次のコマンドを使用してファイルを確認し、ファイルを抽出できます。
gpg --output gpg.docx --decrypt gpg.docx.gpg
受信者は署名鍵のパスフレーズを尋ねられることはありません。復号が完了すると、文書はすぐに使用できるようになります。
でも待ってください…
「誰かが私の情報を使ってgpgキーを生成し、偽のデータをクライアントに送信するのをどうやって防ぐのか?」と自問自答している方もいるかもしれません。正直なところ、ほとんどありません。しかし、私にはこれに対する非常に簡単な「回避策」があります。それは、1日だけ有効な新しい署名キーを作成し、作成中にコメント欄に一意のフレーズを入力することです。ファイルを受信者に送信する際、受信者にファイルの検証とコメントの繰り返しを依頼します。コメントが正しければ、ファイルを復号して使用することを許可します。コメントが間違っていれば、受信者は偽のファイルを受け取ることになります。
文書検証へのシンプルな道
コストを抑えたい(そして社内で処理したい)なら、gpgのようなツールを文書サイネージに活用するのが理にかなっています。クライアントに信頼できるデータを提供していることを簡単に伝えることができます。完璧なシステムではありませんが、費用対効果が高く、信頼性も高いです。