本文へスキップ
ecdsa.com
Sigstore cosign (verify-blob / verify with --key)その他のツール

エラーメッセージ

invalid signature when validating ASN.1 encoded signature

別の表記

  • Error: failed to verify signature: could not verify message: invalid signature when validating ASN.1 encoded signature
  • invalid signature when validating IEEE_P1363 encoded signature

まず「Error: …」として出力され、さらに「error during command execution: …」として再度出力されます。バンドル(`--bundle`)を使う場合、cosign 3 は先頭に「failed to verify signature: could not verify message:」を付けます。IEEE P1363 形式の署名では「…when validating IEEE_P1363 encoded signature」というエラーになります。中心となる文言は cosign 2.6 と 3.1 で同じです。

Sigstore cosign (verify-blob / verify with --key) — sigstore-go signature verifier

このエラーの意味

cosign は、指定された公開鍵を使って、アーティファクトのダイジェストに対する ECDSA 署名(DER/ASN.1 エンコードのため、このような文言になります)を検証しましたが、一致しませんでした。鍵が署名に使われたものではないか、アーティファクトが署名されたものと異なるかのどちらかです。キーレス検証とは異なり、ID や透明性ログは関係しません。署名そのものの検証が失敗しています。

発生する理由

修正方法

  1. 1.

    ダイジェストと鍵を照合する

    アーティファクトの SHA-256 は公開されているダイジェストと、公開鍵は署名鍵から導出したものと照合してください。

    bash
    sha256sum artifact.txt                             # compare with the digest published with the release
    cosign public-key --key release.key > derived.pub   # (key holder) public half of the signing key
    diff <(openssl pkey -pubin -in derived.pub -outform DER | sha256sum) \
         <(openssl pkey -pubin -in cosign.pub -outform DER | sha256sum)
  2. 2.

    単独の署名ではなくバンドルを配布する

    Sigstore バンドルは署名と検証用のデータをまとめて保持するため、取り違えのほとんどを防げます。

    bash
    # Prefer bundles: signature, verification material and the log entry travel together
    cosign sign-blob --yes --key release.key --bundle artifact.sigstore.json artifact.txt   # uploads to Rekor
    cosign verify-blob --key release.pub --bundle artifact.sigstore.json artifact.txt

関連するエラー

署名エラーデータベースをすべて見る