Zusammenfassung

  • Der aktive Entwurf der CBOR-Arbeitsgruppe unterscheidet allgemeine, preferred-plus und deterministische Serialisierung. Deterministisch ergänzt preferred-plus um eine byteweise lexikografische Sortierung der deterministisch codierten Map-Schlüssel. Das macht die Ausgabe wiederholbar, aber die Map nicht zu einer fachlich geordneten Folge.
  • Determinismus wird benötigt, wenn unabhängige Parteien Bytes für Signatur, Hash, Inhaltsadresse, Cache-Schlüssel oder Gleichheitstest getrennt aufbauen. Reisen die geschützten Originalbytes unverändert mit, ist er meist unnötig; Vollständigkeit, Aktualität, Erlaubnis und Wirkung beweist er nie.

Die Störungsmeldung lautete zunächst „Signatur ungültig“. In beiden Anwendungsprotokollen sah das decodierte Objekt identisch aus. Erst der Hexvergleich zeigte, was geschehen war: Eine Bibliothek verwendete eine längere zulässige Argumentdarstellung und die Einfügereihenfolge der Map, die andere kürzeste Formen und sortierte Schlüssel. Beides war gültiges CBOR. Für die Kryptografie waren es dennoch andere Bytefolgen.

Diese Koordinationslücke behandelt draft-ietf-cbor-serialization-08. Das Dokument vom 29. Juli 2026 ist ein aktiver Internet-Draft der CBOR-Arbeitsgruppe im Working Group Last Call; der Datatracker führt als IESG-Status weiterhin I-D Exists. Es ist weder ein endgültiger RFC noch ein Konformitätsnachweis für ein Produkt. Sein Nutzen liegt in drei benannten Verträgen, mit denen ein Protokoll festlegt, wie viel Darstellungsfreiheit an welcher Grenze bleibt.

Bei CBOR sind Datenmodell und binäre Darstellung verschiedene Ebenen. Ein Wert kann mehrere erlaubte Codierungen besitzen. Diese Flexibilität unterstützt Streaming, kleine Geräte und heterogene Produzenten. Zum Defekt wird sie dort, wo eine nachfolgende Schicht die Bytes als Identität oder kryptografische Eingabe verwendet, obwohl nur der Wert vereinbart wurde.

Drei Verträge statt einer Güteleiter

Die allgemeine Serialisierung ist theoretisch der Standard, wenn ein CBOR-basiertes Protokoll schweigt. Für jeden unterstützten Typ soll ein Decoder alle erlaubten Codierungen annehmen, einschließlich bestimmter und unbestimmter Längen. Der Entwurf weist zugleich darauf hin, dass diese breite Zusage praktisch nicht weit verbreitet ist. „CBOR unterstützt“ ist deshalb noch keine belastbare Akzeptanzmatrix.

Preferred-plus begrenzt den Encoder. Argumente verwenden die kürzeste Form, Fließkommazahlen die kürzeste exakte Darstellung, Längen sind bestimmt, NaN folgt der festgelegten trivialen Form, Ganzzahlen und Bignums werden nach den geerbten Regeln normalisiert. Für viele Protokolle ist das eine praktische Wahl ohne Map-Sortierung.

Deterministische Serialisierung beginnt mit preferred-plus und ergänzt eine Hauptregel: Map-Einträge werden nach der byteweisen lexikografischen Reihenfolge der deterministischen Codierungen ihrer Schlüssel sortiert. Sind Datenmodell und Umgebungsregeln geklärt, können unabhängige Encoder so dieselben Bytes erzeugen.

Die Mengen sind keine moralische Rangfolge. Allgemeine Serialisierung erhält Fähigkeiten, die manche Anwendungen benötigen: Ausgabe mit unbestimmter Länge, eine fachliche Unterscheidung zwischen Bignum und gewöhnlicher Ganzzahl oder nichttriviale NaN-Nutzlasten. Determinismus entfernt diese Möglichkeiten bewusst. Die Wahl braucht einen konkreten Zweck.

Ausgabe und Annahme sind ebenfalls getrennt. Deterministisches Decodieren verlangt nicht mehr als preferred-plus. Ein System kann eine enge Form ausgeben und breitere Eingaben annehmen. Soll jede nichtdeterministische Eingabe abgelehnt werden, ist das eine eigene End-to-End-Regel mit Kompatibilitätsprüfung und Begründung.

Folgen die geschützten Bytes der Nachricht?

Signiert ein Sender eine CBOR-Nutzlast und überträgt exakt diese Bytes mit der Signatur, kann der Empfänger das Empfangene prüfen. Er muss den Wert nicht decodieren und wieder codieren. Der Entwurf verwendet COSE-Nutzlasten als anschaulichen Fall. Kryptografie verlangt eine gemeinsame Bytefolge, nicht automatisch eine einzigartige Darstellung jedes CBOR-Objekts.

Anders ist es, wenn beide Seiten die Folge selbst zusammensetzen. Eine COSE-Sig_structure wird vom Signierer aufgebaut und vom Prüfer erneut konstruiert. Unterschiedliche Breiten, Fließkommadarstellungen oder Schlüsselreihenfolgen reichen für eine Abweichung bei gleichen Modellwerten. Dasselbe gilt für Inhaltsadressen, Cache-Schlüssel, Deduplizierung und reproduzierbare Manifeste.

Die Regel muss lokal bleiben. Determinismus für Sig_structure macht weder eingebettete Nutzlast noch äußeren Umschlag oder künftige Objekte automatisch deterministisch. Eine lokale Reparatur als Plattformgesetz auszurollen, kann Streaming und Altdaten belasten, ohne zusätzliche Sicherheit zu schaffen.

Eine Architekturzeichnung sollte zeigen, welche Bytes unverändert übertragen werden und welche Werte vor einer sensiblen Operation decodiert und erneut codiert werden. Ein Gateway, das eine signierte Nutzlast reserialisiert, ist an dieser Grenze nicht transparent, selbst wenn es alle sichtbaren Werte erhält.

Sortierte Schlüssel schaffen keine Geschäftsreihenfolge

CBOR-Maps sind im allgemeinen Datenmodell ungeordnet. Deterministische Sortierung wählt lediglich eine wiederholbare Byteanordnung. Sie bestimmt weder Vorrang noch Ausführungs- oder Anzeigereihenfolge.

Debugger verführen, weil sie Schlüssel als Liste zeigen. Eine Sprache erhält die Einfügereihenfolge, eine Bibliothek die Empfangsreihenfolge, eine Hashtabelle iteriert anders. Alle können dieselbe Map darstellen. Braucht die Anwendung Reihenfolge, muss sie ein Array, ein Prioritätsfeld oder eine Regel verwenden.

Sortierung löst auch keine doppelten Schlüssel, erlaubten Tags, unbekannten Felder, Schemaänderungen oder Gleichwertigkeitsregeln. Ohne Maps kann preferred-plus zufällig ein deterministisches Ergebnis liefern; damit ist aber nicht entschieden, ob ein Tag zulässig ist oder ein fehlendes Feld die Autorisierung ändert.

Bytegleichheit kann strenger als semantische Gleichheit sein. Fachlich gleichwertige Werte können verschiedene Hashes ergeben. Identische Bytes können zugleich veraltet, bösartig oder unvollständig sein. Textnormalisierung, Zahlenräume, Standardwerte und Tag-Bedeutung gehören in den End-to-End-Vertrag.

Auch „kanonisches CBOR“ ist ohne Zusatz ungenau. Das separate Anwendungsprofil draft-mcnally-deterministic-cbor-17 schränkt CBOR weiter ein. Seine Regeln dürfen nicht still dem Arbeitsgruppenentwurf zugeschrieben werden. Eine Prüfung muss Profil und Revision nennen.

Eine gültige Signatur belegt eine Bytegrenze

Gelingt die deterministische Rekonstruktion und ist die Signatur gültig, existiert ein wichtiger Beleg: Ein bestimmter Algorithmus und Schlüssel schützten diese Folge. Der Beleg sagt nicht, dass sie alle entscheidungsrelevanten Tatsachen enthielt.

Er beweist weder vollständiges Schema noch erlaubtes Tag, aktuelle Zeit, fortbestehende Zuständigkeit des Signierers, Anwesenheit wichtiger optionaler Felder oder lokale Erlaubnis. Er beobachtet auch nicht die spätere Wirkung.

Informationsmodell, CBOR-Modell, serialisierte Bytes, kryptografische Prüfung, semantische Validierung, Richtlinie, Autorisierung, Ausführungsversuch und beobachtete Wirkung benötigen getrennte Belege. Ein grüner Zustand darf nicht die Autorität der nächsten Ebene übernehmen.

CDDL beschreibt CBOR-Datenformen. Die im Entwurf behandelte Serialisierungssteuerung kann eine Codieranforderung hinzufügen. Ein Schema ist trotzdem weder laufender Code noch Autorisierung oder Wirkungsnachweis. Eine CDDL-Übereinstimmung nennt nicht Parser-Version, Duplikatregel, Vertrauensanker oder bestätigte Zustandsänderung.

COSE und CWT verdeutlichen die Arbeitsteilung. Ein Framework trägt viele End-to-End-Protokolle und kennt nicht jede Rekonstruktions- oder Streaminganforderung. Wo das Framework keine Menge vorgibt, empfiehlt der Entwurf preferred-plus; das einbettende Protokoll bestimmt die tatsächliche Grenze. Bibliotheksstandards können diesen Vertrag nicht ersetzen.

Den tatsächlich eingesetzten Decoder prüfen

Zwischen dem theoretischen Umfang von general und realen Implementierungen liegt eine messbare Lücke. Ein Produkt kann unbestimmte Strings ablehnen, ein anderes alternative Breiten ungeprüft akzeptieren und ein drittes Bignums umformen, obwohl alle mit CBOR werben.

Laufzeitbelege nennen Bibliothek, Version, Build, Optionen, Encodermodus, angenommene Decodermenge, Schemaversion, Eingabewert, ausgegebene Bytes, akzeptierte Varianten und Folgeergebnis. Golden Vectors müssen zwischen unabhängigen Implementierungen ausgetauscht werden.

Negativtests zeichnen die Grenze: eine legale allgemeine Form an einen allgemeinen Empfänger, eine nichtminimale Form an ein preferred-plus-Gate, veränderte Einfügereihenfolgen, Integer/Bignum-Grenzen, bestimmte und unbestimmte Längen, Fließkommabreiten und NaN. Neben „Parsing erfolgreich“ gehören resultierender Wert und Richtlinienpfad in das Protokoll.

Ein Encodertest beweist keine Decoderbreite. Ein Annahmetest beweist keine deterministische Ausgabe. Ein Roundtrip durch dieselbe Bibliothek verbirgt beides, weil er ihre Annahmen wiederholt. Interoperabilität beginnt zwischen unabhängig gebauten Pfaden.

Sonderwerte machen das verborgene Modell sichtbar

Preferred-plus wählt die kürzeste exakte Fließkommadarstellung und das spezifizierte triviale Quiet NaN. Manche Anwendungen bewahren jedoch NaN-Nutzbits oder geben ihnen Bedeutung. Gehören diese Bits zum Informationsmodell, braucht das Protokoll einen anderen Serialisierungsvertrag.

Dasselbe gilt, wenn Bignum und gewöhnliche Ganzzahl verschiedene Kategorien sind oder ein Produzent senden muss, bevor die Gesamtlänge bekannt ist. Allgemeine oder besondere Serialisierung kann richtig sein. Gefährlich ist nicht die Ausnahme, sondern ihre Existenz als versteckte Bibliotheksoption statt als End-to-End-Vereinbarung.

Die minimale Anfangsspezifikation koordiniert nur die kleinste nötige Fläche: Determinismus an Rekonstruktionsgrenzen, preferred-plus im gewöhnlichen Austausch, sofern passend, und ein allgemeines oder benanntes Sonderprofil, wo die Anwendung es verlangt. Für eine Signaturstruktur muss nicht das gesamte Ökosystem eingefroren werden.

Einen verdeckten Kanal verkleinern

Mehrere legale Darstellungen können Information transportieren, die nach dem Decodieren verschwindet. Ein kompromittierter Encoder kann Argumentbreiten, Segmentierung unbestimmter Elemente oder andere Varianten wählen. Preferred-plus und Determinismus reduzieren dieses Alphabet und machen Abweichungen sichtbar.

Sie beseitigen nicht jede Exfiltration. Ein Angreifer kann erlaubte Werte, Zeitstempel, Tags, Padding anderer Schichten, Paketgröße oder Timing nutzen. Ein Test darf nur behaupten, dass dieser Build für ein festes Modellkorpus die erwarteten Bytes erzeugte.

An sensiblen Grenzen kann man unter Datenschutz- und Aufbewahrungsregeln den Byte-Digest und das normalisierte Modell speichern. Ändert ein angeblich deterministischer Produzent den Digest derselben Probe, werden Eingabe, Version, Optionen und Umgebung geprüft. Die Abweichung ist ein Indiz, kein automatischer Angriffsnachweis.

Ein Beleg, der Bibliothekswechsel überlebt

Der belastbare Datensatz verbindet Protokoll und Revision, geforderte Menge an jeder Grenze, CBOR-Modellprofil, Tags und Schlüsseltypen, Duplikatpolitik, Encoder und Decoder samt Optionen, Schema, Eingabe, Bytes oder abrufbaren Digest, kryptografische Eingabe, Schlüsselherkunft, Prüfung, Semantik, Richtlinie, Autorisierung, Versuch und Wirkung.

Er markiert außerdem, wo Bytes reisen und wo sie neu entstehen. Diese Karte entlarvt häufig ein Gateway, das signierte Nutzlast reserialisiert, einen Cache, der ein geparstes Objekt hasht, oder zwei Dienste mit abweichenden Standardwerten.

Die Verantwortung bleibt verteilt: Protokollautoren besitzen die Bytegrenze, Engineering beweist Ausgabe und Annahme, Security Parser und Kryptografie, der Anwendungsverantwortliche die Bedeutung, der Policy-Eigner die Erlaubnis, Operations die Wirkung. Eine begrenzte Transaktionskennung verbindet die Belege, ohne ihre Aussagen zu verschmelzen.

Lu Hengs Running-Code Primacy fragt nach der tatsächlich ausgeführten Version und Option. Reality Layers verhindert, dass deterministische Bytes die Autorität des Schemas und die Signatur die Autorität der Entscheidung übernehmen. Deterministisches CBOR löst genau ein Problem: Unabhängige Encoder können dieselbe Bytefolge bilden. Mehr Autorität sollte ihm nicht zugeschrieben werden.

Quellen