hypergraphs.de

Reproduzierbares Praxislabor

RDF Canonicalization und Signaturen einordnen

Erzeugen zwei verschieden serialisierte, aber äquivalente RDF-Datasets nach Kanonisierung exakt dieselbe Bytefolge?

Redaktion Hypergraphs.deFachprüfung: 18.09.2026TechArticle

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.

Weitere reproduzierbare Versuche