GnuPG(GPG)でLinuxソフトウェアのデジタル署名を検証する方法
インターネットからソフトウェアをダウンロードするとき、開発者が悪意のあるプログラムを配布していないと信頼する必要があります。しかし、それだけでは不十分です。ハッカーの存在も常に意識しなければなりません。攻撃者はWebサイトに侵入し、正規のソフトウェアをバックドア付きのバージョンへ差し替えることで、大きな利益を得られる可能性があります。
例えば、Bitcoinウォレットツールを配布しているサイトを考えてみましょう。攻撃者が正規版を悪意あるものに置き換えることに成功すれば、何万人ものユーザーから金銭を盗み出せるかもしれません。また、オペレーティングシステムもバックドアを仕込む価値のある標的です。実際、過去にはLinux Mintでこのような事件が発生しました。
では、私たちには何ができるのでしょうか?
ハッシュと署名の違い
セキュリティ意識の高い開発者は、セットアップファイルやアーカイブに、検証用のチェックサムを添えて提供することがよくあります。WindowsやLinuxでのチェックサム検証方法については、別記事で詳しく解説しています。しかし、ハッシュには重大な弱点があります。ハッカーがWebサイト上のファイルを差し替えれば、ハッシュも同様に簡単に差し替えられてしまうのです。そのため、ハッシュ単体ではほとんど役に立ちません。特に、プログラム本体と同じサーバーでハッシュがホストされている場合はなおさらです。
チェックサムを実用的なものにするため、開発者は公開鍵と秘密鍵のペアを使ってデジタル署名を行うことができます。署名を作成できるのは秘密鍵の所有者だけであり、検証には対応する公開鍵が必要です。この公開鍵はインターネット上で公開されています。検証が成功すれば、(ほぼ確実に)秘密鍵の所有者自身がそのソフトウェアに署名したのだと判断できます。
ハッカーがこのセキュリティ機構を突破するには、何らかの手段で秘密鍵を盗み出すしかありません。所有者が適切な対策で秘密鍵を厳重に管理していれば、これは非常に困難です。仮に鍵が盗まれたとしても、所有者は鍵を失効(revoke)させて公表することで無効化できます。その場合、公開鍵を取得して署名を検証しようとすると、「この鍵は失効しています」という通知が表示されます。
GnuPG(GPG)で署名を検証する手順
gpgユーティリティは通常、すべてのディストリビューションにデフォルトでインストールされています。何らかの理由で見つからない場合は、以下のコマンドでインストールしてください。一部のディストリビューションでは、「gpg: failed to start the dirmngr '/usr/bin/dirmngr': No such file or directory」というエラーが表示されることがあります。その場合はdirmngrも併せてインストールしましょう。
Debian、Ubuntu、およびDebian系ディストリビューションの場合:
sudo apt install gnupg dirmngr
Red Hat/CentOSの場合:
sudo yum install gnupg dirmngr
Fedoraの場合:
sudo dnf install gnupg dirmngr
ここでは、Debian 9.8.0のインストーラISOを検証する流れを例に説明します。
「SHA256SUMS」「SHA256SUMS.sign」「debian-9.8.0-amd64-netinst.iso」の3つのファイルをダウンロードしてください。最初の2つのファイルは、ブラウザで右クリックして「名前を付けてリンク先を保存」(または同等の操作)を選ぶ必要があるかもしれません。普通にクリックすると、自動ダウンロードされずに内容が表示されるだけになることがあります。
ターミナルエミュレータを開き、ダウンロードしたファイルがあるディレクトリへ移動します。
cd Downloads/
チェックサムの検証
ISOのダウンロードが完了したら、まずSHA256チェックサムを検証します。
sha256sum -c SHA256SUMS
チェックサムが正しければ、ファイル名の後に「OK」というメッセージが表示されます。その他のチェックサム形式には、sha1sum、sha512sum、md5sumといったコマンドがあります。ただし、利用可能であれば、少なくともSHA256以上の強度を持つ方式を使うことをおすすめします。
サイトによっては、ファイル名とチェックサムを一括管理したSHA256SUMSのようなファイルを提供していない場合もあります。単にページ上にチェックサムが表示されているだけなら、次のようなコマンドでファイルのハッシュを直接確認できます。
sha256sum debian-9.8.0-amd64-netinst.iso
GPGで署名済みチェックサムを検証する
この例では、Debianチームが秘密鍵で「SHA256SUMS」ファイルに署名し、その結果を「SHA256SUMS.sign」ファイルに保存しています。次のコマンドで署名を検証してみましょう。
gpg --verify SHA256SUMS.sign SHA256SUMS
すると、次のようなメッセージが表示されます。
gpg: Signature made Sun 17 Feb 2019 05:10:29 PM EET gpg: using RSA key DF9B9C49EAA9298432589D76DA87E80D6294BE9B gpg: Can't check signature: No public key
これは、公開鍵がまだ自分のコンピュータ上に存在しないことを意味します。正常な挙動なので心配いりません。キーサーバーから公開鍵をインポートする必要があります。
gpg --keyserver keyring.debian.org --recv-keys DF9B9C49EAA9298432589D76DA87E80D6294BE9B
キーサーバーがダウンしている場合は、代替サーバーを利用できます。例えば、keyring.debian.orgをkeyserver.ubuntu.comに置き換えて実行してみてください。
では、この鍵が本当に正当なものであると、どうやって確認すればよいのでしょうか?残念ながら、完全に確実にするには「信頼の網(web of trust)」と呼ばれる仕組みを構築する必要があります。当然ながら、現時点ではそれを持っていません。しかし、代わりにできることはいくつかあります。
まず、鍵のフィンガープリント(DF9B9C49EAA9298432589D76DA87E80D6294BE9B)をGoogleなどで検索してみてください。ヒットしない場合は、末尾の8文字だけ(6294BE9B)で検索してみましょう。正当な鍵であれば、同種のソフトウェアに関連する多数のWebサイトで言及されているはずです。さらに、厳重に管理された鍵は長期間使い続けられるため、関連する投稿が複数年にわたって見つかることも信頼性を判断する材料になります。
より慎重を期したい場合は、BitTorrentイメージをダウンロードしてから、チェックサムと署名を検証するという方法もあります。トレントの仕組み上、何百人もの異なるユーザーがアップロードしたファイルを差し替えることは事実上不可能です。さらに、BitTorrentにはダウンロードする全データチャンクの整合性を検証する独自のメカニズムも備わっています。
公開鍵を入手できたら、ようやく署名を検証できます。
gpg --verify SHA256SUMS.sign SHA256SUMS
「Good signature」と表示されれば、すべて正常です。警告が表示されても気にする必要はありません。前述のとおり、公開鍵に対する確立された信頼の網がないため、これは想定内の挙動です。
まとめ
ご存じのとおり、インターネット上に絶対的な安全はありません。しかし、予防策を講じることは間違いなく有効であり、ダウンロードしたファイルのデジタル署名を検証することで、悪意のあるソフトウェアを避ける可能性が大きく高まります。バックドア付きのOSやBitcoinウォレットソフトをダウンロードしてしまったユーザーの多くは、署名を確認していれば被害を防げたはずです。正規の署名ファイル自体は改ざんされていなかったからです。面倒に感じるかもしれませんが、数分の手順で大切なデータと資産を守れるなら、実践する価値は十分にあるといえるでしょう。
-
LinuxでGPGキーを生成する方法!暗号化・公開鍵の共有まで徹底解説
隠しておきたいファイルやメッセージはありませんか?それらを確実に守るためには、GPG暗号化キーの活用がおすすめです。Linux環境であれば、GnuPGさえインストールされていれば、コマンドラインから手軽にファイルを暗号化できます。 この記事では、いくつかの簡単なターミナルコマンドだけでGPGキーを生成し、実際の暗号化に活用するまでの手順を詳しく解説します。 GnuPGのインストール まずはGnuPGをインストールしましょう。Debian系やUbuntu系のディストリビューションでは、ターミナルを開いて次のコマンドを実行します。 sudo apt install gnupg FedoraなどDN
-
LinuxでMicrosoft OneDriveを同期する方法!CLIクライアント「onedrive」の使い方
近年、プロプライエタリな製品を使わざるを得ない場面は少なくありません。オープンソース愛好家なら、クラウドストレージもオープンなものを選びたいところですが、現実にはGoogle、Amazon、Dropbox、Microsoftといった大手企業がクラウドストレージ市場をほぼ独占しています。これらのサービスは無料で信頼性の高い製品を提供する一方、法的要請への対応や広告配信のためにファイルをスキャン・読み取りする可能性があるのも事実です。しかし、だからといって利用を避ける必要はありません。 OneDriveはMicrosoftが提供するクラウドストレージサービスです。Windowsプラットフォーム向