Ein manipulationssicherer Audit-Trail ist einer, in dem jede Änderung historischer Daten erkennbar ist. Die klassische Technik — der Blockchain entlehnt, aber viel einfacher — ist die Hash-Kette: Jeder Datensatz enthält den kryptografischen Hash des vorangegangenen. Ändern Sie irgendeinen historischen Datensatz, ändern sich alle nachfolgenden Hashes.
Das Rezept
Für jede Rechnung berechnen Sie:
hash_n = SHA256(prev_hash || canonicalize(payload_n))
// wobei canonicalize() eine deterministische Byte-Folge erzeugt
// (sortierte Schlüssel, keine Whitespaces, stabile Zahlenformate).Speichern Sie den Hash an der Rechnung selbst. Um die Integrität einer einzelnen Rechnung zu beweisen, müssen Sie nur prüfen, ob ihr Hash dem aus dem Hash der vorigen Rechnung und der canonicalisierten Payload neu berechneten Hash entspricht. ZATCA Phase 2 schreibt genau dieses Schema vor.
Warum Canonicalization alles ist
Zwei byte-unterschiedliche JSON-Serialisierungen desselben logischen Objekts erzeugen unterschiedliche Hashes. RFC 8785 (JCS — JSON Canonicalization Scheme) ist der Standard: Schlüssel lexikografisch sortiert, keine bedeutungslosen Whitespaces, Zahlen in der kürzesten eindeutigen Form, Strings entkommen nach RFC 8259.
Pro-Tenant-Ketten, nicht global
Führen Sie eine eigene Kette pro Tenant statt einer globalen. Zwei Gründe: (1) Sie können Speicher und Compute pro Tenant sharden, ohne Schreibzugriffe zu koordinieren, und (2) eine Korruption in der Kette eines Tenants vergiftet nicht den Audit-Trail aller anderen.
Nachträgliche Verifikation
Ein Prüfer (oder Sie zur Verteidigung) kann die Kette ab Genesis abspielen: Hashen Sie das Payload der ersten Rechnung ohne prev_hash, prüfen Sie die Übereinstimmung mit dem gespeicherten Hash und iterieren Sie. Jede Abweichung lokalisiert den manipulierten Datensatz. Web Cryptos subtle.digest liefert Ihnen SHA-256 in jedem modernen Runtime — Node, Deno oder Browser.
Invocie schreibt einen verketteten Hash an jede Rechnung und an jeden ComplianceLog-Eintrag. Die zwei Ketten sind unabhängig: Rechnungen für ZATCA-artigen Beweis, Logs für operatives Audit.