Zum Hauptinhalt springen
Audact
Angebot ansehen

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…5092dcae
Kein Schlüssel nötig
Ausgabe-Hash
0x97d47018e45e19e1…83c557d9
Kein Schlüssel nötig
Vorhergehende Quittung
0xbfafe10889982fd2…09fe0579
Kein Schlüssel nötig
Merkle-Wurzel
0x6e00080f64cff7d5…07658346
In Entwicklung
Authentifizierungscode
0xfd73071e00fa7837…415b54aa
Mandantenschlü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
Drei aufeinanderfolgende Quittungen. Jede trägt den Hash der vorhergehenden und erzeugt einen eigenen Hash, den die nächste Quittung wiederum trägt.

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. 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. 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. 3

    Nach oben gehen

    Für jeden weiteren Eintrag in merkle.path wiederholen, Ebene für Ebene, bis ein einziger Wert übrig ist.

  4. 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.

Jede Person kann prüfen

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.

Schlüssel nötig

Wofür der Mandanten­schlü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.

Was sie festhält

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.

Nachweiskette

Merkle-Veröffentlichung in Entwicklung

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.