---
title: "KYA-Prüfmodell: zehn Prüfschritte, sechs Status"
url: https://knowyouragent.ch/methode/pruefschritte
lang: de-CH
updated: 2026-10-12
license: CC BY 4.0
---

# Prüfmodell

Prüfen, nicht bewerten. Jeder Schritt hat eine feste Frage, jeder Status eine feste Bedeutung, jedes Nicht-Bestehen eine Begründung.

Kurz gesagt

Zehn feste Prüfschritte mit je einer Frage. Jeder liefert einen von sechs Status, jedes Nicht-Bestehen trägt einen Begründungscode.

## Die zehn Prüfschritte

| # | Prüfschritt | Prüffrage | Bereich |
|---|---|---|
| 1 | Format und Schemaparse_schemaKernschritt | Ist das Format erkannt, sind die Pflichtfelder vorhanden, ist die Version unterstützt? | Echtheit |
| 2 | Kryptografische Integritätcryptographic_integrityKernschritt | Sind Signaturen, Disclosures, Hash-Ketten und Manifest unverändert? | Echtheit |
| 3 | Ausstellerissuer_resolution | Ist der Schlüssel an den Aussteller gebunden – über eine DID oder weil die prüfende Stelle ihm vertraut? | Echtheit |
| 4 | Agent und Auftraggebersubject_agent_bindingKernschritt | Nennen alle Teile denselben Agenten, ist der Auftraggeber benannt, hält der Agent den gebundenen Schlüssel? | Identität und Auftrag |
| 5 | Gültigkeit des Mandatsmandate_validityKernschritt | War das Mandat zum Zeitpunkt der Handlung gültig? | Befugnis |
| 6 | Umfang der Handlungintent_scope | Liegt die Handlung innerhalb von Handlungstyp, Betragsgrenze, Währung und Gegenpartei des Mandats? | Befugnis |
| 7 | Delegationskettedelegation_provenance | Ist jede Stufe signiert, lückenlos verbunden und nicht breiter als die vorherige? | Identität und Auftrag |
| 8 | WiderrufrevocationKernschritt | Ist das Mandat laut Statusliste weder widerrufen noch suspendiert? | Befugnis |
| 9 | Ausführungsbelegexecution_binding | Verweist der Beleg auf genau diesen Entscheid und dieses Mandat? | Beweis |
| 10 | Zeitstempeltimestamp_assurance | Ist der RFC-3161-Zeitstempel gültig, an den Inhalt gebunden und auf einen Anker der prüfenden Stelle rückführbar? | Beweis |

Die fünf Kernschritte bilden die Kernaussage. Ohne sie ist kein Gesamturteil «gültig» möglich. Der Widerruf gehört dazu, weil die Frage lautet, ob eine Handlung zulässig war – nicht nur, ob das Mandat einmal ausgestellt wurde.

## Sechs Status

| Status | Bezeichnung | Bedeutung |
|---|---|---|
| VALID | belegt | Geprüft und belegt. |
| INVALID | widerlegt | Geprüft und widerlegt. |
| NOT_CHECKED | nicht geprüft | Nicht ausgeführt, weil eine Voraussetzung fehlt. |
| NOT_PRESENT | nicht vorhanden | Der Nachweis enthält das Element nicht. |
| UNKNOWN | unbestimmt | Ausgeführt, aber ohne belastbares Ergebnis. |
| RECOGNIZED | erkannt | Format erkannt, bewusst nicht vollständig geprüft. |

Es gibt keinen impliziten Erfolg. Ein nicht ausgeführter Schritt ist nicht bestanden, und jeder Status ausser «belegt» trägt einen Begründungscode.

## Drei Urteile

| Urteil | Bezeichnung | Bedingung |
|---|---|---|
| INVALID | Ungültig | Mindestens ein Prüfschritt ist widerlegt. |
| INDETERMINATE | Unbestimmt | Nichts ist widerlegt, aber die Kernaussage ist nicht vollständig belegt oder ein Schritt ist unbestimmt. |
| VALID | Gültig | Alle Kernschritte sind belegt und kein Schritt ist unbestimmt. |

Der Unterschied zwischen «ungültig» und «unbestimmt» ist die wichtigste Aussage des Modells: Widerlegt und nicht überprüfbar sind verschiedene Dinge und fallen nie zusammen.

## Zeitbasis

Enthält der Nachweis einen Entscheid mit Ausstellungszeitpunkt, wird die Gültigkeit des Mandats zu diesem Zeitpunkt beurteilt – also zum Moment der Handlung. Ohne Entscheid gilt der Prüfzeitpunkt. Der Bericht nennt immer, welche Zeitbasis verwendet wurde. Eine Toleranz von 60 Sekunden fängt Uhrenabweichungen ab, nicht mehr.

Statuslisten spiegeln den Stand zum Zeitpunkt ihrer Ausstellung. Ein Widerruf nach der Handlung macht eine damals zulässige Handlung nicht nachträglich unzulässig; der Bericht weist den Ausstellungszeitpunkt der Liste deshalb mit aus.

## Schlüsselherkunft

| Herkunft | Bedeutung | Belegt den Aussteller |
|---|---|---|
| did | aus der Aussteller-DID | ja |
| trusted | von der prüfenden Stelle | ja |
| embedded | im Token selbst (selbst behauptet) | nein |
| bundled | dem Paket beigelegt (selbst behauptet) | nein |

Nur «aus der Aussteller-DID» und «von der prüfenden Stelle» belegen den Aussteller. Die beiden anderen Herkünfte belegen Integrität, aber nicht, wer ausgestellt hat.

## Begründungscodes

Jeder Code ist stabil und in beiden Sprachen gleich definiert. Er steht im maschinenlesbaren Bericht und wird in der Oberfläche übersetzt.

| Code | Bedeutung |
|---|---|---|
| format_unknown | Das Format ist nicht bekannt. |
| format_recognized_not_supported | Das Format ist erkannt, wird in dieser Version aber nicht geprüft. |
| not_evidence_key_material | Das ist Schlüsselmaterial, kein Nachweis. Fügen Sie es unter «Vertrauen der Prüfstelle» ein. |
| malformed | Die Eingabe ist strukturell fehlerhaft. |
| required_claim_missing | Ein Pflichtfeld fehlt. |
| format_not_supported | Nicht geprüft, weil das Format nicht unterstützt ist. |
| signature_invalid | Die Signatur passt nicht zum Inhalt. |
| no_key | Kein Schlüssel verfügbar. Ergänzen Sie den Schlüssel des Ausstellers unter «Vertrauen der Prüfstelle». |
| 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). |
| disclosure_digest_mismatch | Eine Disclosure passt nicht zu ihrem Hash. |
| disclosure_unreferenced | Eine Disclosure ist im signierten Inhalt nicht referenziert. |
| disclosure_duplicate | Eine Disclosure kommt doppelt vor. |
| kb_jwt_invalid | Das Key-Binding-JWT ist ungültig: Der Vorlegende hält den gebundenen Schlüssel nicht nachweislich. |
| chain_hash_mismatch | Ein Beleg wurde nach dem Verketten verändert. |
| chain_link_broken | Die Beleg-Kette hat eine Lücke oder eine falsche Reihenfolge. |
| binding_mismatch | Eine Schicht ist nicht an die vorherige gebunden: Hash-Bindung stimmt nicht. |
| manifest_mismatch | Der Paketinhalt stimmt nicht mit dem Manifest überein. |
| no_crypto_material | Der Nachweis enthält kein kryptografisches Material. |
| tsa_signature_invalid | Die Signatur des Zeitstempels ist ungültig. |
| issuer_key_not_trusted | Der Schlüssel stammt aus dem Nachweis selbst und ist nicht an den Aussteller gebunden. |
| kid_issuer_mismatch | Die Schlüsselkennung zeigt auf eine andere Identität als der Aussteller. |
| no_signed_artifact | Kein signiertes Artefakt vorhanden. |
| agent_mismatch | Die Teile des Nachweises nennen verschiedene Agenten. |
| principal_missing | Der Auftraggeber ist nicht benannt. |
| agent_missing | Der Agent ist nicht benannt. |
| no_credential | Kein Mandat und kein Agent Passport vorhanden. |
| credential_is_not_a_mandate | Das vorgelegte Credential ist kein Mandat. |
| expired | Abgelaufen zum Prüfzeitpunkt. |
| not_yet_valid | Zum Prüfzeitpunkt noch nicht gültig. |
| mandate_not_included | Das Mandat liegt nicht bei. |
| action_not_in_scope | Der Handlungstyp liegt ausserhalb des Mandats. |
| amount_exceeds_limit | Der Betrag überschreitet die Grenze des Mandats. |
| currency_mismatch | Die Währung weicht vom Mandat ab. |
| counterparty_not_allowed | Die Gegenpartei ist im Mandat nicht zugelassen. |
| mandate_without_scope | Das Mandat hat keinen Umfang. Eine unbegrenzte Vollmacht ist nicht prüfbar. |
| constraint_not_supported | Eine Bedingung des Mandats ist ohne weitere Angaben nicht maschinell prüfbar, etwa ohne Schlüssel des Händlers. |
| no_action | Keine Handlung im Nachweis. |
| no_delegation | Keine Delegationskette: Der Auftraggeber hat direkt mandatiert. |
| delegation_broken | Die Delegationskette ist unterbrochen oder abgelaufen. |
| delegation_scope_widened | Eine Delegationsstufe erweitert den Umfang. |
| delegation_key_missing | Für eine Delegationsstufe fehlt ein gebundener Schlüssel. |
| revoked | Das Mandat ist widerrufen. |
| suspended | Das Mandat ist suspendiert. |
| status_value_unknown | Die Statusliste meldet einen unbekannten Wert. |
| status_list_not_provided | Keine passende Statusliste vorgelegt. |
| status_list_unverified | Die Statusliste ist nicht nachweislich vom Aussteller. |
| status_list_invalid | Die Statusliste ist fehlerhaft. |
| no_status_reference | Das Mandat nennt keinen Widerrufsmechanismus. |
| receipt_decision_mismatch | Der Beleg verweist auf einen anderen Entscheid. |
| receipt_mandate_mismatch | Der Beleg verweist auf ein anderes Mandat. |
| no_receipt | Kein Ausführungsbeleg vorhanden. |
| no_decision_reference | Der Beleg nennt keinen Entscheid. |
| tsa_malformed | Der Zeitstempel ist nicht lesbar. |
| tsa_imprint_mismatch | Der Zeitstempel gilt für einen anderen Inhalt. |
| tsa_anchor_not_provided | Kein Zeitstempel-Anker angegeben. Ergänzen Sie ihn unter «Vertrauen der Prüfstelle». |
| tsa_not_trusted | Der Zeitstempel führt zu keinem der angegebenen Anker. |
| tsa_target_unknown | Unklar, welchen Inhalt der Zeitstempel belegt. |
| no_timestamp | Kein Zeitstempel vorhanden. |
| prerequisite_failed | Nicht geprüft, weil eine vorherige Prüfung gescheitert ist. |

## Determinismus

Der Bericht `kya-report/1` enthält Eingabe-Hash, Options-Digest, Prüfzeitpunkt, Version des Prüfkerns und Policy-Version. Sein `reportDigest` ist der SHA-256 über das kanonische JSON des Berichts. Gleiche Eingabe, gleiche Optionen und gleicher Prüfzeitpunkt ergeben denselben Digest – im Browser, auf der Kommandozeile und in CI.

---
Quelle: https://knowyouragent.ch/methode/pruefschritte · KYA – Know Your Agent
