Selbst nachprüfen
Wenn Sie ein von uns versiegeltes Angebot, einen exportierten Protokollauszug oder einen veröffentlichten Ankerwert in der Hand haben, prüfen Sie das hier nach — ohne uns irgendetwas glauben zu müssen. Ein Feld zum Einfügen des Dokuments gibt es bewusst nicht.
Was diese Seite nicht leisten kann
Sie kann Ihnen nicht bestätigen, dass ein Dokument echt ist. Geprüft werden sollen wir — eine Auskunft von uns ist deshalb kein Nachweis über uns. Eine Seite mit grünem Haken würde Sie einladen, genau das zu glauben, was Sie hier überprüfen wollten. Was wir redlich tun können: das Verfahren offenlegen, das Werkzeug herausgeben und uns dann heraushalten.
Das einzig Brauchbare, was ein Server von uns leisten kann, ist sich selbst zu widersprechen. Wenn Sie bereits einen von uns veröffentlichten Ankerwert besitzen und unsere heutige Auskunft nicht mehr dazu passt, ist Ihre Kopie der Beleg dafür. Darum geht es im dritten Abschnitt.
Drei Dinge, die Sie prüfen können
Jede dieser Prüfungen läuft auf Ihrem eigenen Rechner, gegen Daten, die Sie ohnehin schon haben.
Ein versiegeltes Angebot
Bei der Annahme wird über Angebotsnummer, Währung, Summen und sämtliche Positionen eine Prüfsumme gebildet und gespeichert. Lassen Sie sich diese Prüfsumme bei der Annahme geben. Wird später eine Position geändert, passt die gespeicherte Prüfsumme nicht mehr zum Dokument — und Sie halten den Wert in der Hand, zu dem sie passen müsste.
Ein Protokollauszug
Der Export kommt als ZIP-Archiv mit den Einträgen als JSON Lines und einem eigenständigen verify.php. Aufruf: php verify.php audit.jsonl. Das Programm rechnet jeden Hashwert aus der Datei neu, endet mit 0 bei intakter Kette und mit 1, wenn nicht — unter Angabe des Eintrags, an dem es bricht. Es benötigt keine Installation und nimmt keinen Kontakt zu uns auf.
Ein Ankerwert
Eine Hashkette sichert ihr eigenes Ende nicht: löscht man die jüngsten Einträge, prüft der Rest fehlerfrei. Deshalb wird der Hashwert des jeweils letzten Eintrags regelmäßig als Anker festgeschrieben und außerhalb unseres Zugriffs veröffentlicht — an eine Adresse des Betriebs, an einen Zeitstempeldienst und auf die gedruckte Verfahrensdokumentation. Bewahren Sie einen auf: eine verkürzte Kette widerspricht ihm.
Das Verfahren, vollständig
Keine Zusammenfassung, sondern die gesamte Konstruktion. Das oben heruntergeladene Prüfprogramm setzt genau das um — lesen Sie im Zweifel das Programm und nicht diese Tabelle.
Die Tabelle lässt sich seitlich scrollen.
| Schritt | Was geschieht | Warum gerade so |
|---|---|---|
| Serialisieren | Jedes Feld wird als seine Bytelänge, ein Doppelpunkt und dann die Bytes geschrieben. „Nicht vorhanden“ und „leer“ sind verschiedene Markierungen. | Längenpräfix statt Trennzeichen. Bei einem Trennzeichen kann ein Wert, der es enthält, als zwei Felder gelesen werden — dann würde eine Prüfsumme zwei verschiedene Dokumente bestätigen. Die Länge wird vor den Bytes gelesen, das kann nicht passieren. |
| Hashen | SHA-256 über diese Bytes, zusammen mit dem Hashwert des vorhergehenden Eintrags. | Jede Feldänderung ändert den Hashwert des Eintrags und bricht alle folgenden. Wird ein Eintrag aus der Mitte entfernt, entsteht eine Lücke in der Nummerierung, die ein eindeutiger Datenbankindex nicht stillschweigend schließen lässt. |
| Versionieren | Die Fassung der Serialisierung steht auf jedem Eintrag. | Eine geänderte kanonische Form würde jeden historischen Hashwert entwerten. Sie wird deshalb nie geändert: eine neue Form ist eine neue Fassung, und alte Einträge bleiben dauerhaft unter der alten prüfbar. |
| Verankern | Der Hashwert des jüngsten Eintrags wird regelmäßig veröffentlicht, und die Anker sind ihrerseits miteinander verkettet. | Nichts innerhalb einer Datenbank kann deren eigenes Ende bezeugen, denn wer löscht, verfügt auch darüber. Die Verkettung der Anker macht einen entfernten Anker ebenso sichtbar wie einen entfernten Eintrag. |
Einen Ankerwert nachschlagen
Rufen Sie /verify/anchor?digest= gefolgt von den 64 Zeichen auf, die Sie erhalten haben. Leerzeichen stören nicht — der gedruckte Wert ist in Achtergruppen gesetzt, damit er sich von Papier abschreiben lässt.
Sie erhalten reinen Text zurück: ob wir diesen Anker noch führen, welchen Protokolleintrag er benennt und ob unsere Kette diesen Eintrag heute noch enthält. Es ist ein Nachschlagen, keine Suche: ein unvollständiger Wert wird abgewiesen, weil eine Präfixsuche aus einer 64-stelligen Frage eine erratbare machen würde.
Dies ist das Einzige auf dieser Seite, was wir selbst beantworten — und was das wert ist, sei deutlich gesagt: für sich genommen nichts. Brauchbar wird es in dem Moment, in dem unsere Auskunft nicht mehr zu Ihrer Kopie passt.
Was dies alles nicht belegt
Eine Aufzählung, in der nichts fehlt, hat niemand geprüft.
Dass überhaupt ein Eintrag geschrieben wurde
Keine Hashkette kann belegen, dass zu einem Vorgang ein Eintrag entstanden ist. Sie belegt, dass vorhandene Einträge seither nicht verändert wurden. Diese Lücke schließt kein Verfahren, und wer das Gegenteil behauptet, verkauft etwas.
Dass die jüngsten Einträge abgedeckt sind
Ein Anker bezeugt nur Einträge bis zu der Nummer, die er benennt. Alles, was seit dem letzten Anker geschrieben wurde, ist durch nichts bezeugt. Häufigeres Verankern verschiebt dieses Fenster, es schließt es nicht.
Dass ein unveröffentlichter Anker etwas bedeutet
Ein Anker, der nur in unserer eigenen Datenbank liegt, kann von denselben Personen geändert werden, die auch den verankerten Eintrag löschen könnten. Das ist kein schwacher Nachweis, sondern gar keiner. Er zählt erst, wenn er jemanden erreicht hat, der nicht wir ist — deshalb wird er hinausgesendet und nicht bloß gespeichert.