Перейти к содержимому
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, отсюда и формулировка) над дайджестом артефакта с помощью указанного вами открытого ключа, и подпись не сошлась. Либо подписывали не этим ключом, либо артефакт отличается от подписанного. В отличие от проверки без ключа, удостоверения и журнал прозрачности здесь ни при чём — не прошла сама криптографическая проверка подписи.

Почему это происходит

Как исправить

  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

Связанные ошибки

Открыть всю базу ошибок подписей