Aller au contenu
ecdsa.com

Canonicalisation

La transformation de données en une représentation unique et convenue en octets avant le hachage ou la signature, afin que des entrées sémantiquement équivalentes (espaces différents, ordre des clés, préfixes d’espace de noms ou repliement des en-têtes) produisent la même entrée de signature.
Autres graphiesc14nJCSRFC 8785JSON Canonicalization Scheme

Les signatures portent sur des octets, alors que des formats comme XML, JSON et l’e-mail admettent de nombreux encodages en octets d’un même contenu. Les schémas de canonicalisation en fixent un : la canonicalisation XML exclusive (Exclusive XML Canonicalization) pour XML-DSig et SAML ; le JSON Canonicalization Scheme (JCS, RFC 8785 : clés triées, formatage des nombres ECMAScript, aucun espace) pour JSON ; les algorithmes simple et relaxed de DKIM pour les en-têtes et le corps des messages (RFC 6376 §3.4) ; DER comme forme canonique d’ASN.1.

Toute canonicalisation est une surface d’attaque, car le signataire et le vérificateur doivent l’implémenter à l’identique et l’application doit agir sur le contenu canonique plutôt que sur l’entrée brute ; l’encapsulation de signature XML (XML signature wrapping) et les manipulations de la longueur du corps DKIM exploitent toutes deux les failles de cette étape. Des formats comme JWS et COSE contournent le problème en signant les octets exacts transmis (base64url(header).base64url(payload)), ce qui les rend plus faciles à implémenter correctement.

Normes et références

Tous les termes