Zum Inhalt springen
ecdsa.com

Kanonisierung

Die Umwandlung von Daten in eine einzige vereinbarte Bytedarstellung vor dem Hashen oder Signieren, damit semantisch gleiche Eingaben (abweichender Whitespace, andere Reihenfolge der Schlüssel, andere Namespace-Präfixe oder gefaltete Header) dieselbe Eingabe für die Signatur ergeben.
Auch geschrieben alsc14nJCSRFC 8785JSON Canonicalization Scheme

Signaturen decken Bytes ab, während Formate wie XML, JSON und E-Mail viele Bytekodierungen desselben Inhalts zulassen. Kanonisierungsverfahren legen eine davon fest: Exclusive XML Canonicalization für XML-DSig und SAML; das JSON Canonicalization Scheme (JCS, RFC 8785: sortierte Schlüssel, Zahlenformatierung nach ECMAScript, kein Whitespace) für JSON; die Algorithmen simple und relaxed von DKIM für Header und Body von E-Mails (RFC 6376 §3.4); DER als kanonische Form von ASN.1.

Jede Kanonisierung ist eine Angriffsfläche, denn Signierer und Verifizierer müssen sie identisch implementieren, und die Anwendung muss mit dem kanonischen Inhalt arbeiten statt mit der rohen Eingabe; XML Signature Wrapping und Tricks mit der Body-Länge bei DKIM nutzen genau dort Lücken aus. Formate wie JWS und COSE umgehen das Problem, indem sie exakt die übertragenen Bytes signieren (base64url(header).base64url(payload)), und sind deshalb leichter korrekt umzusetzen.

Standards und Quellen

Alle Begriffe