WINDI Documentation
← Zurück
WINDI System Tools wcaf verify-evidence
CLI TOOL AUDITORS · BANKS · COURTS 5-STEP VERIFICATION

wcaf verify-evidence

Vollständige externe Verifikation eines WINDI Evidence-Pakets: PDF-Signatur, WCAF-Kette, Merkle-Log, STH-Signatur und Inklusionsbeweis.

Zweck

wcaf verify-evidence führt eine vollständige externe Verifikation eines WINDI Evidence-Pakets durch. Entwickelt für Auditoren, Banken, Compliance-Teams, Streitbeilegung, Gerichte und Regulierungsbehörden.

Befehl

Grundlegende Verwendung

wcaf verify-evidence bundle.json report.pdf report.sig audit-key.pem

Benutzerdefinierte Merkle-Log-URL

wcaf verify-evidence bundle.json report.pdf report.sig audit-key.pem \
  --merkle-url=http://localhost:4051

Eingaben

DateiBeschreibung
bundle.jsonWCAF-Bundle mit document_id, timeline[], combined_root_hash
report.pdfMenschenlesbarer Audit-Bericht, generiert von windi-audit-report
report.sigBase64-Signatur der PDF-Bytes
audit-key.pemÖffentlicher Schlüssel zur Verifikation der PDF-Signatur (RSA PEM)

Ausgabe

Das Tool gibt einen schrittweisen Verifikationsbericht aus und endet mit:

✅ EVIDENCE VERIFIED oder ✖ verification failure

Exit Codes

CodeBedeutung
0Verifikation OK
1CLI-Nutzungsfehler (fehlende Argumente, ungültige Flags)
2PDF-Signatur ungültig
3Bundle-Chain-Integrität fehlgeschlagen
4Merkle-Log-Suche fehlgeschlagen (Hash nicht gefunden / Netzwerkfehler)
5STH-Signatur ungültig
6Inklusionsbeweis ungültig
7Konsistenzbeweis / Pinning-Fehler (Phase 3B.2+)

Exit-Codes sind eine stabile API für Automatisierungspipelines.

Verifikationsschritte (Normativ)

STEP 1

PDF Signature

Algorithm: RSA-SHA256

Input: Rohe PDF-Bytes + Signatur (Base64) + Öffentlicher Schlüssel (PEM)

Output: valid / invalid

Fehlschlag bedeutet: Bericht ist nicht authentisch oder wurde nach der Signierung modifiziert.

STEP 2

Bundle Chain Integrity

WCAF-Kette von prev_hash → event_hash über Timeline-Events verifizieren. Sicherstellen, dass keine Manipulation oder fehlende Events vorliegen.

Fehlschlag bedeutet: Bundle wurde modifiziert, gekürzt oder gefälscht.

STEP 3

Merkle Log Lookup

combined_root_hash aus Bundle bestimmen und abfragen:

GET /lookup?combined_root_hash=<hash>
→ Must return found=true and leaf_index

Fehlschlag bedeutet: Anker wurde nicht öffentlich veröffentlicht, falscher Hash, oder Log-Endpoint nicht erreichbar.

STEP 4

STH Signature Verification

Aktuellen STH und öffentlichen Schlüssel des Logs abrufen. Ed25519-Signatur über kanonisches JSON {tree_size, timestamp, root_hash} verifizieren.

GET /sth
GET /pubkey

Fehlschlag bedeutet: Log-Betreiber-Signatur ungültig oder falscher Schlüssel / key_id-Nichtübereinstimmung.

STEP 5

Inclusion Proof Verification

Inklusionsbeweis abrufen, Leaf-Hash rekonstruieren und mit sth.root_hash vergleichen:

leaf_hash = SHA256(0x00 || canonical_json(leaf_payload))
→ Combine with audit_path → Reconstruct root
→ Compare with sth.root_hash

Fehlschlag bedeutet: Anker ist nicht tatsächlich im festgeschriebenen Baum enthalten, oder Beweis/Log-Manipulation.

Evidence Pack Format

evidence-pack.zip
  bundle.json
  report.pdf
  report.sig
  merkle-proof.json
  pubkeys/
    audit_pub.pem
    merkle_log_pub.pem

merkle-proof.json

{
  "combined_root_hash": "<hex>",
  "leaf_index": 42,
  "leaf_payload": { ... },
  "sth": {
    "tree_size": 12345,
    "timestamp": "ISO-8601",
    "root_hash": "<hex>",
    "signature_alg": "Ed25519",
    "signature": "<base64>",
    "key_id": "hub-log-2026"
  },
  "inclusion_proof": {
    "leaf_index": 42,
    "tree_size": 12345,
    "audit_path": ["<hex>", "..."]
  }
}

Wenn vorhanden, kann die CLI Netzwerkaufrufe überspringen und offline verifizieren.

Flags

FlagBeschreibung
--merkle-urlBasis-URL des Merkle-Log-Dienstes
--strictAktiviert Pinning + Konsistenzbeweis-Verifikation (Phase 3B.2+)
--pin-fileSpeicherort für STH-Cache
--offlineErfordert merkle-proof.json, überspringt Netzwerk

Sicherheitshinweise

Compliance Statement

Wenn alle Schritte bestanden werden, kann der Verifizierer feststellen: Der Audit-Bericht ist authentisch (signiert), die WCAF-Beweiskette ist intakt, und der Evidenzanker ist öffentlich in einem CT-Stil Merkle Transparency Log durch einen signierten Tree Head festgeschrieben. Daher existierte der Dokumentenbeweis zu oder vor dem Transparency-Log-Zeitstempel und wurde seit der Verankerung nicht modifiziert.