本文へスキップ
ecdsa.com

コード署名

実行ファイル、パッケージ、スクリプト、ファームウェアに X.509 証明書、プラットフォームの鍵、OpenPGP、Sigstore を使って署名し、オペレーティングシステム、ストア、ユーザーが発行元を検証して改ざんを検出できるようにすることです。
別表記code signingcode-signing certificatesoftware signingEV code signing

形式はプラットフォームごとに異なります。Windows の PE ファイル、MSI、PowerShell には Authenticode、Apple には Developer ID 証明書によるコード署名と公証(notarization)、Android には APK 署名スキーム、Java には JAR 署名、RPM と Debian のリポジトリには OpenPGP による署名、コンテナイメージには cosign による署名があり、UEFI セキュアブートは独自の鍵階層を持ちます。タイムスタンプがあれば、署名はそれを作成した証明書よりも長く有効であり続けます。

公的に信頼されるコード署名証明書は、CA/Browser Forum のコード署名 Baseline Requirements に従います。2023年6月1日以降、秘密鍵はハードウェアモジュール(最低でも FIPS 140-2 レベル 2 またはコモンクライテリア EAL 4+)で生成・保管しなければならず、2026年3月1日からは証明書の最大有効期間が 460 日です(投票 CSC-31)。

盗まれた署名鍵は繰り返し使われてきた攻撃経路です(Stuxnet のドライバー証明書、2012年の Adobe のビルドサーバー侵害)。そのため、アルゴリズムの選択よりも、ハードウェアで保持する鍵、独立した署名サービス、失効の計画のほうが重要です。

規格と参考文献

すべての用語