Fehlerreferenz: Kryptografische Integrität
Sind Signaturen, Disclosures, Hash-Ketten und Manifest unverändert?
Dieser Prüfschritt rechnet alle Signaturen und Hashwerte nach: die Signatur eines JWS, die Digests von Disclosures, das Key-Binding-JWT, die Verkettung einer Beleg-Kette, das Manifest eines Nachweispakets und die Signatur eines Zeitstempels. Er beantwortet die Frage, ob der Nachweis unverändert ist und zu seinem Schlüssel passt.
Ein Code in diesem Schritt bedeutet fast immer, dass etwas verändert wurde oder nicht zusammenpasst. Das Urteil lautet dann ungültig.
signature_invalid
Die Signatur passt nicht zum Inhalt.
Ursache: Die Signatur passt nicht zu Inhalt und Schlüssel. Ursachen sind ein nachträglich veränderter Inhalt, ein falscher Schlüssel oder bei HTTP-Signaturen eine abweichende Signaturbasis.
Behebung: Verwenden Sie den Nachweis im Original. Prüfen Sie, ob die Schlüssel-ID zum hinterlegten Schlüssel passt; bei HTTP-Signaturen vergleichen Sie die Signaturbasis mit dem Werkzeug Signaturbasis nach RFC 9421.
no_key
Kein Schlüssel verfügbar. Ergänzen Sie den Schlüssel des Ausstellers unter «Vertrauen der Prüfstelle».
Ursache: Für die Signatur wurde kein passender Schlüssel gefunden: weder hinterlegt noch eingebettet noch über eine auflösbare DID.
Behebung: Hinterlegen Sie den öffentlichen Schlüssel des Ausstellers unter «Vertrauen der Prüfstelle», am besten aus seinem veröffentlichten JWKS, und achten Sie auf die passende Schlüssel-ID.
unsupported_alg
Der Signaturalgorithmus ist in dieser Umgebung nicht verfügbar. Aktualisieren Sie den Browser (Chrome oder Edge ab 137, Firefox ab 129, Safari ab 17).
Ursache: Der Signaturalgorithmus wird nicht unterstützt, etwa weil er unsicher ist, einen gemeinsamen Schlüssel voraussetzt oder dem Browser fehlt.
Behebung: Signieren Sie mit einem unterstützten Verfahren wie ES256, EdDSA mit Ed25519 oder RSA-PSS. Fehlt einem Browser nur Ed25519, meldet KYA den Schritt als nicht geprüft, nie als ungültig.
disclosure_digest_mismatch
Eine Disclosure passt nicht zu ihrem Hash.
Ursache: Der berechnete Digest einer Disclosure passt nicht zum erwarteten Wert, weil die Disclosure verändert oder mit einem anderen Hash-Verfahren erzeugt wurde.
Behebung: Übernehmen Sie Disclosures zeichengenau, ohne neu zu kodieren, und beachten Sie das Verfahren in _sd_alg. Der SD-JWT-Decoder zeigt den berechneten Digest jeder Disclosure.
disclosure_unreferenced
Eine Disclosure ist im signierten Inhalt nicht referenziert.
Ursache: Eine Disclosure gehört nicht zu diesem Token: Ihr Digest steht nirgends im signierten Teil.
Behebung: Legen Sie nur die Disclosures vor, die zum Token gehören. Der SD-JWT-Decoder zeigt für jede Disclosure, ob ihr Digest im Token referenziert ist.
disclosure_duplicate
Eine Disclosure kommt doppelt vor.
Ursache: Dieselbe Disclosure oder derselbe Digest kommt mehrfach vor. Das ist nach SD-JWT nicht zulässig, weil es auf eine manipulierte Vorlage hindeuten kann.
Behebung: Legen Sie jede Disclosure genau einmal vor. Prüfen Sie die Software, die die Vorlage zusammenstellt.
kb_jwt_invalid
Das Key-Binding-JWT ist ungültig: Der Vorlegende hält den gebundenen Schlüssel nicht nachweislich.
Ursache: Das Key-Binding-JWT ist ungültig: Die Signatur passt nicht zum Schlüssel im Nachweis, der sd_hash stimmt nicht mit der Vorlage überein oder Empfänger und Zeitpunkt passen nicht.
Behebung: Erzeugen Sie das Key-Binding-JWT nach dem Zusammenstellen der Disclosures neu, mit dem privaten Schlüssel des Agenten und dem sd_hash über genau die vorgelegte Form.
chain_hash_mismatch
Ein Beleg wurde nach dem Verketten verändert.
Ursache: Der Hash eines Eintrags in der Beleg-Kette stimmt nicht: Der Eintrag wurde nach dem Schreiben verändert.
Behebung: Verwenden Sie die Kette im Original und untersuchen Sie, wer den Eintrag geändert hat. Eine Korrektur gehört als neuer Eintrag an das Ende der Kette, nie als Änderung.
chain_link_broken
Die Beleg-Kette hat eine Lücke oder eine falsche Reihenfolge.
Ursache: Ein Eintrag verweist nicht auf den Hash seines Vorgängers. Die Kette hat eine Lücke oder die Reihenfolge stimmt nicht.
Behebung: Legen Sie die vollständige Kette in der ursprünglichen Reihenfolge vor. Fehlende Einträge lassen sich nicht nachträglich einfügen, ohne die Kette zu brechen.
binding_mismatch
Eine Schicht ist nicht an die vorherige gebunden: Hash-Bindung stimmt nicht.
Ursache: Zwei Teile, die zusammengehören sollen, passen nicht zueinander, etwa Schichten von Verifiable Intent oder ein Teil eines Nachweispakets und sein Verweis.
Behebung: Verwenden Sie Teile, die gemeinsam erzeugt wurden. Mischen Sie keine Schichten oder Teile aus verschiedenen Vorgängen.
manifest_mismatch
Der Paketinhalt stimmt nicht mit dem Manifest überein.
Ursache: Das Manifest eines Nachweispakets stimmt nicht mit seinen Teilen überein: Ein Teil wurde verändert, ergänzt oder entfernt.
Behebung: Exportieren Sie das Paket erneut aus dem System, das Mandat, Entscheid und Belege führt, und ändern Sie danach keine Teile mehr.
no_crypto_material
Der Nachweis enthält kein kryptografisches Material.
Ursache: Der Nachweis enthält nichts, was sich kryptografisch prüfen liesse, etwa unsigniertes JSON.
Behebung: Legen Sie einen signierten Nachweis vor. Unsignierte Angaben können informativ sein, belegen aber nichts.
tsa_signature_invalid
Die Signatur des Zeitstempels ist ungültig.
Ursache: Die Signatur der Zeitstempelstelle über den Zeitstempel ist ungültig. Der Zeitstempel wurde verändert oder beschädigt.
Behebung: Verwenden Sie die Zeitstempel-Datei im Original oder fordern Sie einen neuen Zeitstempel an. Der Zeitstempel-Inspektor zeigt, ob die Datei lesbar ist.