デジタル署名でWindowsソフトウェアの安全性を確認する方法【Gpg4win活用ガイド】
インターネットからプログラムをダウンロードするたびに、それが悪意のあるものではないと開発者を信頼するしかありません。これは避けられない事実です。ただし、有名なソフトウェアや開発者であれば、通常は大きな問題にはなりません。
しかし、ソフトウェアを配布しているウェブサイト自体は、より脆弱な存在です。攻撃者がサイトのセキュリティを突破し、正規のプログラムを悪意あるバージョンにすり替えることが可能だからです。見た目も動作も本物そっくりですが、内部にはバックドアが仕込まれています。このバックドアを通じて、攻撃者は日常のコンピューティングのさまざまな部分を支配できるようになります。PCがボットネットに組み込まれることもあれば、さらに悪質なケースでは、クレジットカードやデビットカードを使った瞬間に認証情報を盗むツールが待ち構えていることもあります。特にOS、暗号資産ウォレットなど、重要なソフトウェアをダウンロードする際は細心の注意が必要です。
デジタル署名が問題を解決してくれる
ソフトウェア開発者は、自らの製品にデジタル署名を付与できます。攻撃者が開発者の秘密鍵を盗み出せない限り、この署名を偽造する既知の手法は存在しません。実際、何千人ものユーザーが悪意あるプログラムをダウンロードしてしまった事例が数多くありますが、ほぼすべてのケースで、もしデジタル署名を確認していれば「署名が無効である」ことに気づき、被害を回避できたはずでした。脆弱なウェブサイト上のソフトウェアを差し替えるのは比較的簡単ですが、適切に保管されインターネットから隔離された秘密鍵を盗むことは極めて困難です。
デジタル署名についてさらに詳しく知りたい方は、関連記事も参考にしてください。本記事では同じ概念を、Windows標準のツールを使ってダウンロードファイルを検証する形で解説します。
Gpg4winを使ってデジタル署名を検証する方法
まず公式ページにアクセスし、Gpg4winをダウンロードしてインストールしましょう。賢明な読者ならこう疑問に思うはずです。「では、このGpg4win自体が正規のものであることはどうやって確認するのか?」——実に良い質問です。ここが崩れてしまうと、以降のすべての手順が無意味になってしまいます。
幸いなことに、Gpg4winの開発者は手間を惜しまず、認証局(CA)によるコード署名を取得しています。そして、自身のウェブサイトでプログラムの検証手順を詳しく公開しています。検証に使われる暗号技術は似ていますが、全体的な手法は異なり、こちらではデジタル証明書が利用されます。
ステップ1:ファイルのチェックサムを検証する
例として、Bitcoin Coreウォレットをダウンロードする場合を考えてみましょう。x64版Windows用の実行ファイル(exe形式。zipではない点に注意)をダウンロードします。その後、「Verify release signatures(リリース署名の検証)」をクリックして「SHA256SUMS.asc」ファイルを入手します。最初のステップは、セットアップファイルのハッシュ値を検証することです。ハッシュについては別記事で詳しく解説しています。
ダウンロードフォルダを開きます。Gpg4winがインストールされていれば、ファイルを右クリックしたときに新しいコンテキストメニューが表示されるようになっています。Bitcoinのセットアップファイル(ダウンロードしたexe)を右クリックし、下の画像のように「More GpgEX Options -> Create checksums(その他のGpgEXオプション → チェックサム作成)」を選択します。

生成された「sha256sum.txt」と、ダウンロードしておいた「SHA256SUMS.asc」の両方を開き、SHA256チェックサムを比較します。両者は完全に一致しているはずです。

ステップ2:チェックサム一覧ファイルの署名を確認する
ここで一つ疑問が生じます。セットアップファイルとチェックサム一覧を同じウェブサイトからダウンロードした場合、攻撃者がセットアップファイルをすり替えたなら、チェックサムの一覧も簡単に差し替えられるのではないか、ということです。しかし、攻撃者にどうすることもできないのが「署名の偽造」です。署名は、正規の(既知の)公開鍵によって検証できます。まずは、その公開鍵をダウンロードする必要があります。
次の画像は、署名の実際の姿です。

これはインライン署名(検証対象と同じファイル内に含まれる形式)です。場合によっては、分離署名として別ファイルに格納されることもあります。このテキストファイル内のたった一文字でも変更すれば、署名は無効になります。つまり、「開発者がこの特定の内容と正しいチェックサムを承認し、署名した」ということを保証する仕組みです。
ステップ3:開発者の公開鍵をインポートする
公開鍵は、Bitcoinのダウンロードページにある「Bitcoin Core Release Signing Keys」セクションから入手できます。念のため、別の情報源からもダウンロードしておくと安心です。仮に攻撃者が正規の鍵を自分のものにすり替えていたとしても、他の場所で公開・議論されている正しい鍵(とフィンガープリント)と照合すれば、矛盾に気づける可能性が高まります。
「SHA256SUMS.asc」を右クリックし、「Decrypt and Verify(復号して検証)」を選択します。まだ公開鍵を持っていないため、プログラムはその旨を通知してくるでしょう。「Search(検索)」をクリックします。

検索には時間がかかることがあります。「Find(検索)」欄に表示されている文字列に注目してください。

この文字列をコピーしてGoogleで検索すれば、この公開鍵フィンガープリントが正規のフォーラムやウェブサイトなどで言及されているかを確認できます。見つかる場所が多ければ多いほど、その鍵が本来の所有者のものである確信が持てます。
鍵を選択してインポートします。次のプロンプト(鍵への署名・認証を行うかどうか)では、やり方がわからない場合や今は行いたくない場合は「No」を選んで構いません。
最後に「Show Audit Log(監査ログを表示)」をクリックします。

次の画像でハイライトされている「Good signature(正当な署名)」というテキストが表示されるはずです。

試しに「SHA256SUMS.asc」内のたった一文字を変更してみてください。すると、次の画像のような結果(署名無効)になります。

まとめ
自分のソフトウェアが本当に本人から提供されたものだと検証できる手段を用意している開発者は多くありません。しかし、機密性の高いデータを扱うプログラムや非常に重要なソフトウェアの場合、このオプションが用意されていることが一般的です。ぜひ活用してください。いつか必ず、トラブルからあなたを守ってくれるはずです。
-
Scoopを使ってWindowsのソフトウェアを簡単にインストール・更新する方法
Scoopは、Windows向けプログラムをコマンドラインからシンプルにインストールできるツールです。前回のガイドでは、Scoopのインストール方法とコマンドラインの基本的な使い方をご紹介しました。本記事では、Scoopの主な機能を概観しながら、Windowsでのソフトウェア管理がどれほど快適になるのかを見ていきます。通常のソフトウェア導入手順は、おそらく次のような流れではないでしょうか。ダウンロードサイトにアクセスし、インストーラーをダウンロードして、画面の指示に従ってクリックを進めていく。その間、紛り込む広告に惑わされないよう注意しなければなりません。しかも、プログラムを更新する段階になる
-
【Windows】「Windows はこのファイルのデジタル署名を検証できません」エラー(コード52)の直し方
USBポートに接続したハードウェアが認識されず、「Windows はこのファイルのデジタル署名を検証できません」というメッセージとともにエラーコード52が表示されることがあります。エラー名が示すとおり、この問題はデジタル署名に関連しており、Windowsのアップグレード後やデバイスマネージャーでドライバーに異常が発生した後に表示されるケースが多いです。 デジタル署名とは? Windowsは有効なデジタル署名を使って、以下の情報を検証しています。 ファイルまたはファイル群(ドライバーパッケージなど)が署名されていること 署名者が信頼できること 署名者を認証した認証局が信頼できること 公開後に