Proof
Zeigen Sie Zeile für Zeile, was daraus folgte.
Für gesteuerte Interaktionen ist im Produkt eine Compliance-Quittung sichtbar. Sie hält fest, was das System empfangen, entschieden und gesendet hat – als Hashes, verkettet mit der vorhergehenden Quittung und zu einer Merkle-Wurzel zusammengefasst. Drei dieser Bestandteile kann heute jede Person nachrechnen, die die Quittung hat: ohne Schlüssel, ohne Konto, ohne Zugriff auf unsere Datenbank. Der fünfte, der Authentifizierungscode, wird mit dem Schlüssel geprüft, den wir Ihrem Mandanten ausstellen.
Compliance-Quittung
Durchgerechnetes Beispiel- Eingabe-Hash
0xfeb0ca5b0546ad8c…5092dcaeKein Schlüssel nötig- Ausgabe-Hash
0x97d47018e45e19e1…83c557d9Kein Schlüssel nötig- Vorhergehende Quittung
0xbfafe10889982fd2…09fe0579Kein Schlüssel nötig- Merkle-Wurzel
0x6e00080f64cff7d5…07658346In Entwicklung- Authentifizierungscode
0xfd73071e00fa7837…415b54aaMandantenschlüssel nötig
Durchgerechnetes Beispiel. Acme GmbH und Nova Industries sind erfunden; hier stehen keine Kundendaten. Dies sind die Werte der Quittung unter /sample-receipt.json. /receipt-explorer rechnet die drei schlüsselfreien Werte in Ihrem eigenen Browser nach und faltet das Blatt bis zu der Merkle-Wurzel hoch, die in derselben Datei steht – das ist etwas anderes, als sie gegen eine außerhalb unserer Systeme veröffentlichte Wurzel zu halten.
Aktueller Nachweisstand
- Quittung im ProduktSichtbar
- Produktions-ExportLäuft heute
- Drei Hash-PrüfungenÖffentlich
- Externe Wurzel-VeröffentlichungIn Entwicklung
- Öffentliche Prüfung des AusstellersNicht verfügbar
Fünf Stände, nicht einer. Jeder steht unten, mit dem, worauf er beruht.
Feld für Feld
Was in einer Quittung steht
Eine Quittung ist ein Objekt je reguliertem Vorgang. Das meiste darin ist eine Aufzeichnung: Sie können es ablesen, und das Ablesen sagt Ihnen, wovon das System zu diesem Zeitpunkt ausging. Vier Felder verhalten sich anders: sie lassen sich nachrechnen, und eine Nachrechnung stimmt überein oder eben nicht. Drei davon brauchen nichts als die Quittung; das vierte faltet sich zu der Merkle-Wurzel hoch, die die Quittung selbst trägt. Sie gegen eine außerhalb unserer Systeme veröffentlichte Wurzel zu setzen, geht erst, wenn wir die Wurzeln veröffentlichen.
- Feld
- receipt_id
- Was es festhält
- Die Kennung der Quittung selbst.
- Prüfung
- Ablesen
- Feld
- issued_at
- Was es festhält
- Wann die Quittung geschrieben wurde, nach unserer Uhr.
- Prüfung
- Ablesen
- Feld
- input
- Was es festhält
- Was der Agent vorgeschlagen hat: Auftraggeber, Gegenpartei, Agent, Mandat und Version, Kanal, Rechtsraum und Betrag.
- Prüfung
- Ablesen
- Feld
- input_hash
- Was es festhält
- SHA-256 über den input-Block, so wie das System ihn empfangen hat.
- Prüfung
- Nachrechnen
- Feld
- output
- Was es festhält
- Was entschieden wurde: die Befugnisposition, die Überschreitung, die Entscheidung und die Freigabe-Kennung.
- Prüfung
- Ablesen
- Feld
- output_hash
- Was es festhält
- SHA-256 über den output-Block, so wie das System ihn festgehalten hat.
- Prüfung
- Nachrechnen
- Feld
- previous
- Was es festhält
- Die zuvor geschriebene Quittung in ihren fünf Kernfeldern: receipt_id, issued_at, input_hash, output_hash, previous_receipt_hash.
- Prüfung
- Ablesen
- Feld
- previous_receipt_hash
- Was es festhält
- SHA-256 über genau diese fünf Felder. Genau das macht daraus eine Kette.
- Prüfung
- Nachrechnen
- Feld
- receipt_hash
- Was es festhält
- Dieselben fünf Felder dieser Quittung, gehasht. Dieser Wert ist das Blatt, bei dem die Einschlussprüfung beginnt.
- Prüfung
- Ablesen
- Feld
- merkle.root · merkle.path · merkle.leaf_index
- Was es festhält
- Die Wurzel, die diese Quittung selbst trägt, die Geschwister-Hashes auf dem Weg dorthin und die Position dieser Quittung im Stapel. Sie gegen eine außerhalb unserer Systeme veröffentlichte Wurzel zu setzen, wartet auf diese Veröffentlichung.
- Prüfung
- In Entwicklung
- Feld
- auth.alg · auth.key_ref · auth.mac
- Was es festhält
- HMAC-SHA256 über die kanonische Quittung, unter einem symmetrischen Schlüssel je Mandant, und mit welchem Schlüssel er erzeugt wurde.
- Prüfung
- Schlüssel nötig
- Feld
- _sample · _disclaimer · _generated
- Was es festhält
- Die drei Zeilen am Anfang der Datei: was dieses Beispiel ist, was es nicht belegt und welches Skript es geschrieben hat.
- Prüfung
- Ablesen
Jeder Name in dieser Spalte ist ein Feld des illustrativen Beispiels unter /sample-receipt.json, geschrieben wie die Datei es schreibt: Öffnen Sie die Datei, und jedes davon steht darin. Wo eine Benennung bedeuten würde, einen Feldpfad zu erfinden, steht die Zeile nicht in dieser Tabelle.
Die Kette
Jede Quittung nennt die vorhergehende.
Eine Quittung steht nicht für sich. Bevor sie geschrieben wird, geht der Hash der vorhergehenden Quittung in sie ein; die Quittungen eines Mandanten bilden so eine einzige geordnete Kette.
Genau dadurch wird eine Änderung sichtbar. Ändern Sie einen Wert in einer Quittung, ändert sich ihr Hash; die nächste Quittung trägt weiterhin den alten, und die beiden passen nicht mehr zusammen. Nichts daran verhindert eine Änderung; es macht eine Änderung für jede Person sichtbar, die die Kette durchgeht.
Quittung RCP-899
- Trägt den Hash von
0xc15f…df07- Eigener Hash
0xe48f…5a07
Quittung RCP-900
- Trägt den Hash von
0xe48f…5a07- Eigener Hash
0xbfaf…0579
Quittung RCP-901
- Trägt den Hash von
0xbfaf…0579- Eigener Hash
0xc5a5…4b00
Wenn sich eine ändert
Jede folgende Quittung passt nicht mehr, und die erste Abweichung benennt die Stelle, an der die Kette gebrochen ist. Geschrieben wird bei uns ausschließlich anhängend. Erkennbar ist das, was Sie prüfen können.
Prüfprotokoll
Ereigniskette, an die nur angehängt wird. Eine spätere Änderung oder Umsortierung ist erkennbar, indem die Kette gegen das aufbewahrte Commitment neu berechnet wird.
Einschluss
Rechnen Sie die Wurzel selbst nach.
Quittungen werden zu Stapeln zusammengefasst, und ein Stapel wird durch paarweises Hashen auf eine einzige Wurzel reduziert. Die Quittung trägt ihre Position in diesem Stapel und die Geschwister-Hashes auf dem Weg nach oben. Mit diesen beiden lässt sich die Wurzel allein aus der Quittung nachrechnen.
- Weg von dieser Quittung
- Verwendete Geschwister-Hashes
- Übrige Quittungen im Stapel
Vier Schritte
- 1
Die fünf Kernfelder hashen
receipt_id, issued_at, input_hash, output_hash und previous_receipt_hash nehmen, in eine feste Form bringen (Schlüssel alphabetisch, keine Leerzeichen) und den SHA-256 bilden. Dieser Wert ist das Blatt, und die Quittung trägt ihn als receipt_hash. Es ist kein Hash über die ganze Quittung.
- 2
Den ersten Geschwister-Hash einrechnen
Das Blatt und den ersten Hash aus merkle.path in Bytes zurückwandeln, den Geschwister-Hash auf die Seite setzen, die sein Feld side nennt, beide aneinanderhängen und den SHA-256 des Paares bilden.
- 3
Nach oben gehen
Für jeden weiteren Eintrag in merkle.path wiederholen, Ebene für Ebene, bis ein einziger Wert übrig ist.
- 4
Vergleichen
Diesen Wert gegen merkle.root halten. Gleich heißt: Diese Quittung passt zu der Wurzel, die die Datei selbst trägt. Damit es heißt, die Quittung sei zu diesem Zeitpunkt im Stapel gewesen, muss diese Wurzel gegen ein außerhalb unserer Systeme veröffentlichtes Commitment gehalten werden – und diese Veröffentlichung ist in Entwicklung.
Keiner dieser vier Schritte braucht einen Schlüssel: die Quittung und ihr Pfad genügen. Was sie belegen, ist, dass die Quittung zu der Wurzel passt, die sie selbst trägt. Eine fünfte Prüfung – diese Wurzel gegen ein außerhalb unserer Systeme veröffentlichtes Commitment – ist in Entwicklung.
Aus dem illustrativen Beispiel
- Feld
- receipt_hash
- Wie veröffentlicht
- 0xc5a5788a435ffee6…fe3a4b00
- Feld
- merkle.leaf_index
- Wie veröffentlicht
- 2
- Feld
- merkle.path
- Wie veröffentlicht
- right · left · right
- Feld
- merkle.root
- Wie veröffentlicht
- 0x6e00080f64cff7d5…07658346
Prüfung für Prüfung
Sieben Prüfungen, und sie sind nicht gleich verfügbar.
Den Merkle-Pfad bis zu der Wurzel nachzurechnen, die eine Quittung selbst trägt, ist nicht dieselbe Prüfung wie die Bestätigung, dass diese Wurzel vor einem bestimmten Zeitpunkt außerhalb unserer Systeme veröffentlicht wurde. Die erste können Sie heute durchführen, im ausgearbeiteten Beispiel. Die zweite kann niemand, denn die Wurzeln werden noch nicht veröffentlicht. Jede Zeile nennt, worauf die Prüfung beruht und wo sie steht.
- Prüfung
- Den Eingabe-Hash nachrechnen
- Worauf sie beruht
- SHA-256 über den input-Block der Quittung, die Sie in der Hand halten. Mehr braucht es nicht.
- Stand
- Verfügbar
- Prüfung
- Den Ausgabe-Hash nachrechnen
- Worauf sie beruht
- SHA-256 über den output-Block derselben Datei.
- Stand
- Verfügbar
- Prüfung
- Die Verknüpfung zur vorhergehenden Quittung nachrechnen
- Worauf sie beruht
- SHA-256 über die fünf Kernfelder der vorhergehenden Quittung, die diese Quittung vollständig mitführt.
- Stand
- Verfügbar
- Prüfung
- Den Merkle-Pfad bis zu der Wurzel nachrechnen, die die Quittung selbst trägt
- Worauf sie beruht
- Das Blatt über merkle.path nach oben falten und gegen merkle.root halten – gegen die Wurzel, die in derselben Datei steht, nicht gegen eine anderswo gefundene. Die Schritte laufen heute auf /sample-receipt.json; der Produktions-Export wird noch validiert.
- Stand
- Im ausgearbeiteten Beispiel verfügbar
- Prüfung
- Diese Wurzel gegen ein außerhalb unserer Systeme veröffentlichtes Commitment halten
- Worauf sie beruht
- Die Veröffentlichung der Wurzeln und der offene Endpunkt dafür sind in Entwicklung; die vierte Prüfung folgt, sobald sie veröffentlicht sind.
- Stand
- In Entwicklung
- Prüfung
- Allein mit öffentlich zugänglicher Kryptografie feststellen, wer die Quittung ausgestellt hat
- Worauf sie beruht
- Die Quittung trägt HMAC-SHA256 unter einem symmetrischen Schlüssel je Mandant. Einen frei zugänglichen Schlüssel zum Prüfen gibt es nicht, also gibt es für Dritte nichts, wogegen sie prüfen könnten.
- Stand
- Nicht verfügbar
- Prüfung
- Den Aussteller darauf festlegen, wenn er bestreitet, sie geschrieben zu haben
- Worauf sie beruht
- Ein Authentifizierungscode unter einem geteilten Schlüssel leistet das nicht: Wer ihn prüfen kann, kann ihn auch erzeugen, und wir halten denselben Schlüssel. Er ist keine Unterschrift.
- Stand
- Vom heutigen HMAC-Verfahren nicht geleistet
/receipt-explorer führt die ersten vier davon am ausgearbeiteten Beispiel in Ihrem Browser aus. Kein öffentlicher Dienst prüft heute eine Quittung stellvertretend für Dritte.
Selbst nachrechnen
Drei Werte, von jeder Person nachrechenbar.
Beginnen Sie links: drei Werte, die jede Person nachrechnen kann, die eine Quittung hat, ohne Schlüssel und ohne uns. Der vierte, der Einschluss in der Merkle-Wurzel, folgt, sobald wir die Wurzeln veröffentlichen. Daneben steht, wofür der Mandantenschlüssel da ist und worüber eine Quittung eine Aufzeichnung ist. So lässt sich die erste Spalte wörtlich nehmen und nicht auf Vertrauen.
Drei Werte, von jeder Person nachrechenbar
Der Eingabe-Hash, der Ausgabe-Hash, die Verknüpfung zur vorhergehenden Quittung. Der Einschluss in der Merkle-Wurzel ist die vierte Prüfung; sie folgt, sobald wir die Wurzeln veröffentlichen. Diese Veröffentlichung und der offene Endpunkt dafür sind in Entwicklung.
Kein Schlüssel, kein Konto und kein Zugriff auf unsere Datenbank: Die Rechnung läuft auf der Quittung, die Sie in der Hand halten.
Wofür der Mandantenschlüssel da ist
Der Code ist HMAC-SHA256 über die kanonische Quittung, unter einem symmetrischen Schlüssel je Mandant. Es ist ein Authentifizierungscode und kein Verfahren mit öffentlichem Schlüssel; einen frei zugänglichen Schlüssel zum Prüfen gibt es nicht.
Wer den Code prüfen kann, kann ihn auch erzeugen, und wir halten denselben Schlüssel. Er belegt, dass der Datensatz unversehrt ist, nicht, wer ihn geschrieben hat.
Worüber eine Quittung etwas sagt, und worüber nicht
Eine Quittung ist eine getreue Aufzeichnung dessen, was das System empfangen, entschieden und gesendet hat. Genau das belegt sie, nicht, ob die Wirklichkeit dazu passte.
Hat ein Anrufer einen falschen Namen genannt, hält die Quittung den falschen Namen getreu fest. Nachweis über den Ablauf ist kein Nachweis über die Tatsache, und keine Kryptografie schließt diese Lücke.
Selbst ausprobieren
Nehmen Sie eine Quittung auseinander.
Der Explorer geht das ausgearbeitete Beispiel Feld für Feld durch, mit den Beispieldateien daneben. Nichts davon braucht ein Konto.
- Receipt Explorer
Das ausgearbeitete Beispiel Feld für Feld durchgehen.
- Beispielquittung (JSON)
Erfundene Beteiligte, echte Rechnung: Drei Werte rechnen sich aus der Datei allein nach, und der vierte faltet sich bis zu der Merkle-Wurzel hoch, die in derselben Datei steht.
- Beispielquittung (PDF)
Derselbe Datensatz in einer Form, die ein Datenschutzbeauftragter lesen kann.
- Evidence-Vault-API
Wie Quittungen geschrieben und abgerufen werden.
- Wie man sie nachrechnet – die genaue Form
Die kanonische Form, welcher Block in welchen Wert geht, und vier Testvektoren zum Abgleichen. Kein Code von uns.
Nachweiskette
Drei dieser Bestandteile kann heute jede Person nachrechnen, die die Quittung hat: ohne Schlüssel, ohne Konto, ohne Zugriff auf unsere Datenbank.
Für die Prüfung des Authentifizierungscodes dient der symmetrische Schlüssel, den wir Ihrem Mandanten ausstellen.
Control what AI can cause. Prove what follows.
Woher eine Quittung kommt
Eine Quittung ist das, was ein gesteuertes Gespräch hinterlässt.
Voice ist die Anwendung, aus der sie stammt: Telefonie, die Offenlegung nach Artikel 50 und die Länderrichtlinie an einer Stelle, mit einer Quittung, die für gesteuerte Interaktionen im Produkt sichtbar ist. Die Quittung, die auf dieser Seite auseinandergenommen wird, trägt dieselben Felder und dieselbe Rechnung.
