本文へスキップ
ecdsa.com

Authenticode

Windows の実行ファイル、ドライバー、インストーラー、スクリプト向けの Microsoft のコード署名形式で、ファイルのハッシュに対する PKCS #7 SignedData を PE の証明書テーブルに埋め込み、通常はタイムスタンプも付けます。
別表記AuthenticodesigntoolPE signatureWIN_CERTIFICATE

PE ファイルの場合、署名はセキュリティディレクトリから参照される WIN_CERTIFICATE 構造体に格納されます。署名対象のハッシュ(Authenticode ダイジェスト)は、チェックサムフィールド、セキュリティディレクトリのエントリ、署名自体を除外して計算されます。署名するには signtool sign /fd SHA256 /tr にタイムスタンプサーバーの URL と /td SHA256 を続けて実行し、検証には signtool verify /pa または PowerShell の Get-AuthenticodeSignature を使います。複数の署名を入れ子にすることもできます(古いシステム向けの SHA-1 と SHA-256 の二重署名など)。

Windows SmartScreen は、証明書ごと、ファイルごとに評価(レピュテーション)を蓄積します。カーネルモードドライバーには、さらに Microsoft によるアテステーション署名または WHQL 署名が必要です。2013年、認証されないデータを署名を壊さずに署名済みファイルへ追加できることが判明し(MS13-098、2013年)、これを受けて、より厳格なチェックがオプションとして導入されました。Authenticode インスペクターは、署名とタイムスタンプをローカルで解析します。

規格と参考文献

すべての用語