ソフトウェア署名
英語表記:Software Signing
ソフトウェア署名とは、ソフトウェアの開発者や配布元が「これは正規のものです」と証明するために付与する電子署名のことです。ダウンロードしたアプリやプログラムが、本当に信頼できる提供元から配布されたものであるかを確認するために使われます。
例えば、あなたがあるツールをインストールしようとしたとき、OSが「このアプリの提供元を確認できません」と警告を出した経験はありませんか?それは、ソフトウェアに署名がない、あるいは信頼できる署名として認識されていない場合に表示されるものです。署名があることで、利用者は「このプログラムは途中で改ざんされていない」「信頼できる開発者が作ったものだ」と判断できます。
ソフトウェア署名のしくみには公開鍵暗号方式を利用しています。開発者が秘密鍵で署名を作成し、それをソフトウェアに埋め込むか、別ファイルとして署名を添付します。ユーザー側の環境では、対応する公開鍵を使って署名を検証します。
もし誰かがファイルを改ざんした場合、署名の整合性が崩れるため、正しく検証できなくなります。このしくみにより、配布の途中で悪意ある第三者に書き換えられていないか、信頼できない開発者によって提供されているものでないかを検出できるわけです。
署名には「誰が署名したのか」を証明するための証明書が使われます。この証明書は認証局(CA)が開発者や企業の身元を確認したうえで発行したものを使います。「自己署名」ではなく、信頼された認証局の証明書を利用することが安全な運用につながるのです。
ソフトウェア署名は、アプリケーションだけでなく、ドライバやアップデートファイル、スクリプトなどにも使われています。近年では、サプライチェーン攻撃(開発・配布の過程を狙う攻撃)への対策としても、署名の重要性が増しています。攻撃者が正規の配布経路に偽のファイルを混入させても、署名の検証によって異常を発見できるのです。
安全なソフトウェア利用の基本は、「正しい署名を確認すること」から始まります。開発者にとっても、ユーザーにとっても、信頼の印として欠かせないしくみですね。
用語解説の監修:増井 敏克