Zum Inhalt springen

KALKÜL · Technik im Detail

Ein Nachweis für Dritte.

Wie KALKÜL Eingaben, Regelversion und Ergebnis mit SHA-256 festschreibt, mit Ed25519 signiert und mit einem Zeitstempel nach RFC 3161 belegt.

Ein Ergebnis von KALKÜL soll auch dann prüfbar sein, wenn niemand dem System vertraut, das es gerechnet hat. Darum wird jede Prüfung mit Eingaben, Version der Regeln und Ergebnis zu einem Datensatz, über den ein Prüfwert gebildet, eine Signatur gesetzt und ein Zeitstempel geholt wird.

Diese Seite beschreibt die Bauweise des Systems. Gebaut sind der Prototyp von Freigabe und Protokoll und der Demonstrator von KALKÜL; den ganzen Stand finden Sie unter Was heute steht.

Auf dieser Seite
  1. 01Was in den Nachweis gehört
  2. 02Prüfwert mit SHA-256
  3. 03Signatur mit Ed25519
  4. 04Zeitstempel nach RFC 3161
  5. 05So rechnen Dritte nach
  6. 06Eckdaten
  7. 07Weiter

Was in den Nachweis gehört

Ein Nachweis enthält alles, was man zum Nachrechnen braucht: die geprüfte Handlung mit ihren Parametern, den Zustand, von dem die Rechnung ausging, mit Herkunft und Erfassungszeit, die Regeln in der verwendeten Version, das Rechenmodell und seine Version, die Einstellungen der Rechnung wie Löser, dessen Version und Budget, und das Ergebnis: Nachweis, Gegenbeispiel oder unentschieden.

Damit derselbe Inhalt immer dieselben Bytes ergibt, wird er kanonisch geschrieben, nach dem JSON Canonicalization Scheme (RFC 8785): Schlüssel sortiert, Zahlen und Zeichenketten in einer festgelegten Darstellung, kein überflüssiger Leerraum.

Prüfwert mit SHA-256

Über die kanonischen Bytes rechnet KALKÜL SHA-256 nach FIPS 180-4. Der Prüfwert hat 256 Bit und ändert sich, wenn sich ein einziges Zeichen des Datensatzes ändert. Wer den Datensatz hat, rechnet ihn mit jedem Standardwerkzeug nach.

Für die Filmszene zu KALKÜL steht ein Beispieldatensatz in Textzeilen mit seinem SHA-256-Prüfwert im Quelltext; ein Test rechnet ihn mit node:crypto nach. Die kanonische Form nach RFC 8785 ist für den Betrieb vorgesehen.

Vom Datensatz zum Nachweis

Unten der Datensatz der Prüfung, darüber seine kanonische Form, dann Prüfwert, Signatur und Zeitstempel. Jede Schicht prüft man mit offenen Verfahren, ohne Zugang zu KALKÜL.

Nachweis in KALKÜL in Schichten: Datensatz, kanonische Form, Prüfwert, Signatur, ZeitstempelUnten der Datensatz der Prüfung, darüber seine kanonische Form, dann Prüfwert, Signatur und Zeitstempel. Jede Schicht prüft man mit offenen Verfahren, ohne Zugang zu KALKÜL.DATENSATZHANDLUNGZUSTANDREGELNRECHENMODELLERGEBNISKANONISCHE FORMJCSPRÜFWERTOB SICH ETWAS ÄNDERTESHA-256SIGNATURWER ES ERZEUGT HATED25519ZEITSTEMPELUNABHÄNGIGER DIENSTRFC 3161DRITTE PRÜFEN
  • Zeitstempel (unabhängiger Dienst): RFC 3161; Schnittstellen Dritte prüfen.
  • Signatur (wer es erzeugt hat): Ed25519.
  • Prüfwert (ob sich etwas änderte): SHA-256.
  • Kanonische Form: JCS.
  • Datensatz: Handlung, Zustand, Regeln, Rechenmodell, Ergebnis.
AUFBAU IN SCHICHTEN

Signatur mit Ed25519

Ein Prüfwert zeigt, dass sich nichts geändert hat, aber nicht, wer ihn erzeugt hat. Dafür signiert KALKÜL den Prüfwert mit Ed25519, einem Signaturverfahren auf der Edwards-Form der Kurve Curve25519 nach RFC 8032. Öffentliche Schlüssel haben 32 Byte, Signaturen 64 Byte, und das Verfahren ist deterministisch: Derselbe Schlüssel und dieselbe Nachricht ergeben immer dieselbe Signatur, ohne Zufall beim Signieren.

Der private Schlüssel liegt nach der Bauweise in einem Hardware-Sicherheitsmodul. Der öffentliche wird veröffentlicht und mit seinem Gültigkeitszeitraum geführt, sodass jeder mit ihm prüfen kann, dass ein Nachweis aus KALKÜL stammt, auch nach einem Wechsel des Schlüssels.

Zeitstempel nach RFC 3161

Eine Signatur sagt nicht, wann. Ein Zeitstempel nach RFC 3161 bestätigt durch einen unabhängigen Zeitstempeldienst (Time Stamping Authority), dass der Prüfwert zu einem bestimmten Zeitpunkt existierte. KALKÜL schickt dafür nur den Prüfwert der Signatur, nicht den Inhalt, und erhält ein signiertes Zeitstempeltoken zurück.

Qualifizierte elektronische Zeitstempel nach der eIDAS-Verordnung (Verordnung (EU) Nr. 910/2014, Artikel 41 und 42) stammen von qualifizierten Vertrauensdiensteanbietern; für sie gilt die Vermutung, dass Datum und Uhrzeit richtig sind und die Daten seitdem unverändert. Vorgesehen ist ein solcher Dienst; welcher, entscheidet der Betreiber.

So rechnen Dritte nach

Eine Prüferin braucht fünf Dinge: den Datensatz, die Signatur, den öffentlichen Schlüssel von KALKÜL, das Zeitstempeltoken und das Zertifikat des Zeitstempeldienstes. Sie bildet die kanonische Form, rechnet SHA-256, prüft die Ed25519-Signatur über den Prüfwert und prüft, dass das Zeitstempeltoken über den Prüfwert der Signatur ausgestellt und gültig signiert ist; so bleibt die Signatur datiert, auch wenn der Schlüssel später kompromittiert wird. Für keinen dieser Schritte braucht sie Zugang zu KALKÜL.

Will sie das Ergebnis selbst bestätigen, rechnet sie die Prüfung neu: mit denselben Regeln, demselben Zustand und einem Löser ihrer Wahl. Ein Gegenbeispiel prüft sie durch Einsetzen, einen Nachweis über den beigelegten Beweis oder eine eigene Gegenrechnung.

d   = JCS(Datensatz)                 RFC 8785
h   = SHA-256(d)                     FIPS 180-4
sig = Ed25519.sign(sk, h)            RFC 8032
tst = Zeitstempeldienst(SHA-256(sig)) RFC 3161

prüfen:  SHA-256(JCS(Datensatz)) = h
         Ed25519.verify(pk, h, sig)
         tst nennt SHA-256(sig) und ist gültig signiert
Bilden und Prüfen eines Nachweises, schematisch, mit den Standards je Schritt.

Eckdaten

Inhalt
Handlung, Zustand mit Herkunft, Regeln mit Version, Rechenmodell mit Version, Einstellungen, Ergebnis
Kanonische Form
JSON Canonicalization Scheme, RFC 8785
Prüfwert
SHA-256 nach FIPS 180-4, 256 Bit
Signatur
Ed25519 nach RFC 8032; öffentlicher Schlüssel 32 Byte, Signatur 64 Byte
Zeitstempel
RFC 3161; qualifiziert nach eIDAS, Artikel 41 und 42
Schlüssel
privat in einem Hardware-Sicherheitsmodul, öffentlich mit Gültigkeitszeitraum
Prüfung durch Dritte
ohne Zugang zu KALKÜL, mit Standardwerkzeugen

Weiter

Wer prüft bei Ihnen Entscheidungen im Nachhinein? Mit ihm legen wir fest, was ein Nachweis enthalten muss.