Saltar al contenido
ecdsa.com

Canonicalización

Transformación de los datos en una única representación de bytes acordada antes de calcular el hash o firmar, para que entradas semánticamente iguales (con distintos espacios en blanco, orden de claves, prefijos de espacios de nombres o plegado de encabezados) produzcan la misma entrada de firma.
También se escribec14nJCSRFC 8785JSON Canonicalization Scheme

Las firmas cubren bytes, mientras que formatos como XML, JSON y el correo electrónico admiten muchas codificaciones en bytes del mismo contenido. Los esquemas de canonicalización fijan una: Exclusive XML Canonicalization para XML-DSig y SAML; el JSON Canonicalization Scheme (JCS, RFC 8785: claves ordenadas, formato de números de ECMAScript, sin espacios en blanco) para JSON; los algoritmos simple y relaxed de DKIM para los encabezados y el cuerpo del correo (RFC 6376 §3.4); DER como forma canónica de ASN.1.

Toda canonicalización es una superficie de ataque, porque el firmante y el verificador deben implementarla de forma idéntica y la aplicación debe actuar sobre el contenido canónico y no sobre la entrada sin procesar; la envoltura de firmas XML (XML signature wrapping) y los trucos con la longitud del cuerpo en DKIM aprovechan precisamente esas brechas. Formatos como JWS y COSE esquivan el problema porque firman exactamente los bytes transmitidos (base64url(header).base64url(payload)), y por eso es más fácil implementarlos bien.

Estándares y referencias

Todos los términos