Zum Inhalt springen

VerfahrenFreigabe und Protokoll · 18 von 27

Wie prüfe ich einen Prüfwert reproduzierbar?

Prüfwert im Browser-Beispiel nachrechnen

Thema
KALKÜL
Lesezeit
2 Min.
Erstfassung
Stand
Prototyp, getestet
Auf dieser Seite
  1. 01Die Eingabe vor der Rechnung festlegen
  2. 02Das separate Beispiel ausführen
  3. 03Eine einzige Abweichung sichtbar machen
  4. 04Rechenfehler und Integritätsbefund trennen
  5. 05Übung
  6. 06Grenze und Regel
  7. 07Quellen
  8. 08Verwandte Seiten

Ein Prüfwert lässt sich nur reproduzieren, wenn dieselben Bytes mit demselben Verfahren verarbeitet werden. Die folgende Übung definiert dafür einen eigenen kleinen Vertrag; sie ist ausdrücklich keine Implementierung des internen SnapSite-Protokollformats.

Die Eingabe vor der Rechnung festlegen

Für den Prototyp nennt die Originalquelle SHA-256 als Protokollverfahren. Sie legt hier aber nicht die vollständige Reihenfolge, Kodierung und Serialisierung aller Protokollfelder offen. Erfinden Sie deshalb keinen vermeintlich kompatiblen Prüfer. Verwenden Sie zum Lernen stattdessen das separat definierte Beispiel: ein JSON-Array mit zwei Zeichenketten, ohne zusätzliche Leerzeichen, als UTF-8 kodiert. Seine Bedeutung bleibt auf diese Übung begrenzt.

Das separate Beispiel ausführen

Begriff · Kontext

Die begrenzte Information, auf deren Grundlage ein System arbeitet. Dazu gehören Herkunft, Aktualität, Widersprüche und Rechte.

Zuverlässiger Kontext für Agenten

Öffnen Sie die Entwicklerkonsole eines Browsers in einem sicheren Kontext und führen Sie das Beispiel aus. TextEncoder erzeugt die UTF-8-Bytes; die Web-Crypto-Schnittstelle berechnet daraus den SHA-256-Prüfwert. Die letzte Zeile gibt den Wert als hexadezimale Zeichenfolge aus. Führen Sie denselben Code zweimal aus und vergleichen Sie die Ausgaben. Eine identische Eingabe muss denselben Prüfwert liefern. Das Beispiel sendet keine Daten an einen SnapSite-Dienst.

Eine einzige Abweichung sichtbar machen

  1. Kopieren Sie die erste Ausgabe als Vergleichswert.
  2. Ändern Sie „vorbereitet“ zu „geprüft“ und berechnen Sie erneut.
  3. Stellen Sie den Ausgangstext wieder her und wiederholen Sie die Rechnung.
  4. Vergleichen Sie die Werte und prüfen Sie auch eine zusätzliche Leerstelle in der Eingabe.

Die Übung zeigt die Bedeutung exakter Bytes. Sie definiert weder ein Freigabeformat noch eine Verknüpfung mehrerer Einträge.

Rechenfehler und Integritätsbefund trennen

Wenn die Kryptografie-Schnittstelle nicht verfügbar ist, ist noch kein Protokollfehler nachgewiesen. Prüfen Sie zuerst Browser und sicheren Ausführungskontext. Weichen zwei Werte ab, vergleichen Sie Eingabe, Zeichenkodierung und unsichtbare Zeichen vor jeder fachlichen Schlussfolgerung. Ein passender Hash bestätigt nur die Übereinstimmung mit dem vorliegenden Vergleichswert. Wer auch diesen Vergleichswert ändern kann, kann die Aussage entwerten. Für historische Integrität braucht der geplante Betrieb einen unabhängig verwahrten Stand.

Übung

const input = JSON.stringify(["Objekt", "vorbereitet"]);
const bytes = new TextEncoder().encode(input);
const digest = await crypto.subtle.digest("SHA-256", bytes);
const hex = Array.from(new Uint8Array(digest))
  .map(value => value.toString(16).padStart(2, "0"))
  .join("");
console.log({ input, hex });
Übung 1SEPARATES LERNBEISPIEL · JavaScript / kein Prototypformat

Grenze

Grenze
Der Code ist eine reproduzierbare SHA-256-Übung im Browser. Er kann keine echten Prototyp-Einträge validieren, weil deren exakter Serialisierungsvertrag hier nicht spezifiziert ist.

Quellen

  1. W3C: Web Cryptography API, digestWeb-verifizierte Primärquelle für digest und SHA-256. Die veröffentlichte zweite Fassung ist ein Arbeitsentwurf; das Beispiel nutzt die etablierte digest-Operation.
  2. WHATWG: Encoding Standard, TextEncoderWeb-verifizierte Primärquelle: TextEncoder kodiert Zeichenketten als UTF-8.
  3. NIST FIPS 180-4: Secure Hash StandardWeb-verifizierte Primärquelle für die SHA-256-Hashfunktion; kein Nachweis der SnapSite-Implementierung.

Verwandte Seiten