Reproduzierbares Praxislabor
RDF Canonicalization und Signaturen einordnen
Erzeugen zwei verschieden serialisierte, aber äquivalente RDF-Datasets nach Kanonisierung exakt dieselbe Bytefolge?
Voraussetzungen
Nutzen Sie Node.js in einem leeren Laborprojekt und installieren Sie eine festgehaltene Version von `rdf-canonize`. Prüfen Sie API und Algorithmus gegen die Primärdokumentation.
Zwei N-Quads-Dateien enthalten denselben Blank Node und dieselben Aussagen, aber Zeilenreihenfolge und lokale Blank-Node-Bezeichner unterscheiden sich.
Versuchsaufbau und minimale Daten
Speichern Sie die Eingaben als `a.nq` und `b.nq`. Das Skript normalisiert mit explizitem Algorithmus, schreibt UTF-8 ohne weitere Transformation und berechnet SHA-256.
Verglichen wird die kanonische Ausgabe byteweise. Eine Signatur folgt erst nach erfolgreichem Vergleich; Kanonisierung allein authentifiziert keinen Herausgeber.
Befehl oder Abfrage
# a.nq
_:a <https://example.org/name> "Atlas" .
_:a <https://example.org/type> <https://example.org/Product> .
# b.nq, gleiche Aussagen in anderer Reihenfolge und mit anderem lokalen Label
_:x <https://example.org/type> <https://example.org/Product> .
_:x <https://example.org/name> "Atlas" .
# canonicalize.mjs
import fs from 'node:fs';
import crypto from 'node:crypto';
import canonize from 'rdf-canonize';
for (const name of ['a','b']) {
const input=fs.readFileSync(name+'.nq','utf8');
const out=await canonize.canonize(input,{algorithm:'RDFC-1.0',inputFormat:'application/n-quads',format:'application/n-quads'});
fs.writeFileSync(name+'.canon.nq',out);
console.log(name,Buffer.byteLength(out),crypto.createHash('sha256').update(out).digest('hex'));
}
# node canonicalize.mjs && cmp -s a.canon.nq b.canon.nq; echo $?Nur in der beschriebenen isolierten Laborumgebung ausführen. Versionen und Exitcodes gehören zum Protokoll.
Erwartetes Ergebnis
Beide Protokollzeilen müssen dieselbe Byte-Anzahl und denselben SHA-256-Wert zeigen. `cmp` endet mit Exitcode 0. Hash und Länge werden als laufabhängige Oracles festgehalten.
Der Befund gilt nur für diese Eingaben, Version und Optionen. Er ist kein Nachweis von Urheberschaft, Zeitpunkt oder Unverändertheit einer später übertragenen Datei.
Negativtest
Ändern Sie in `b.nq` genau ein Literal. Byte-Anzahl oder Hash müssen abweichen und `cmp` mit Exitcode 1 enden. Bleibt der Vergleich gleich, ist der Aufbau fehlerhaft.
Ändern Sie nicht gleichzeitig Algorithmus, Bibliotheksversion und Eingabe, sonst lässt sich die Abweichung nicht zuordnen.
Rollback und Aufräumen
Löschen Sie `*.canon.nq` und Hashprotokolle; die versionierten Eingaben bleiben. Entfernen Sie das isolierte Laborprojekt, falls die Abhängigkeit nicht weiter benötigt wird.
Private Schlüssel gehören nicht in dieses Labor. Ein irrtümlich erzeugter Testschlüssel darf niemals produktiv verwendet werden.
Einordnung
Deterministische Bytes sind eine Vorbedingung für bestimmte kryptografische Verfahren. Algorithmuskennung, Implementierungsversion und Eingabeformat sind Teil des Ergebnisses.
Quellen zu diesem Beitrag
Die Primärquellen für „RDF Canonicalization und Signaturen einordnen“ wurden am 18.09.2026 geprüft. Versions- und Statusangaben sind vor einem produktiven Einsatz erneut zu kontrollieren.
- W3C RDF Dataset Canonicalization
Primärspezifikation; aktuellen Status vor Einsatz prüfen. - rdf-canonize repository
Primärdokumentation der Implementierung. - Node.js Crypto
Primärdokumentation für SHA-256.