Resumen

  • draft-templeman-scitt-framing-space-00 es un Internet-Draft individual de carácter informativo, disponible desde el 5 de septiembre de 2026. No es una RFC, una posición de consenso ni una propuesta normativa.
  • Al combinar seis libertades binarias de codificación CBOR, la prueba obtuvo 64 secuencias aceptadas y 64 data-hash distintos. Todas reconstruyeron el mismo Sig_structure y validaron la misma firma.
  • Treinta y una secuencias se convirtieron silenciosamente en la forma canónica A al decodificarse y volver a codificarse. Guardar solo esa nueva emisión puede hacer irreproducible el identificador entregado al cliente.

El número público se calculó en la puerta. El objeto se guardó después de atravesar el decodificador. Cuando llegó la auditoría, el número y el objeto ya no coincidían.

Esa escena no necesita una colisión, una firma falsa ni un atacante que modifique el payload. Solo requiere dos componentes con ideas distintas sobre la identidad: uno identifica la secuencia exacta recibida; el otro cree que la identidad vive en el valor CBOR decodificado.

El documento de Nicholas Templeman, recogido en el anuncio oficial de Internet-Drafts, convierte esa diferencia en una medición reproducible. Su alcance está expresamente limitado: es un trabajo individual informativo, no especifica nada y no propone texto. Informa a la discusión sobre SCITT, pero no representa una decisión de la IETF.

Lo firmado y lo transmitido no son sinónimos

RFC 9052 construye la entrada de firma COSE mediante Sig_structure. En COSE_Sign1 incluye el contexto, los atributos protegidos, datos externos autenticados y payload. La forma exacta del contenedor CBOR exterior no entra completa en esa estructura.

La flexibilidad proviene de RFC 8949. CBOR puede representar un mismo valor con longitudes definidas o indefinidas y cadenas de bytes enteras o fragmentadas; ciertos perfiles pueden aceptar el objeto con o sin etiqueta. El decoder recupera el mismo dato, pero el cable transporta bytes diferentes.

El ensayo parte del objeto A, de 165 octetos. Cambia seis opciones: presencia de la etiqueta 18; longitud definida o indefinida del array exterior y del mapa de cabecera no protegida; y emisión completa o fragmentada de las cadenas que contienen la cabecera protegida, el payload y la firma.

Ningún valor cambia. Las combinaciones producen 64 secuencias de entre 164 y 170 octetos. El decoder cbor2 6.1.3 no rechaza ninguna. Todas generan un solo Sig_structure de 109 octetos, por lo que una firma válida sirve para cada una.

Al aplicar SHA-256 a la representación transmitida aparecen 64 resultados distintos y cero colisiones. Eso confirma dos cálculos correctos sobre dos fronteras distintas: estabilidad criptográfica del contenido firmado y sensibilidad del identificador a los octetos exteriores.

El dato decisivo es 31

La mitad del problema no está en la variedad visible, sino en lo que el sistema borra sin avisar. Treinta y una de las 64 entradas regresan exactamente a los bytes canónicos de A después de una lectura y una nueva codificación.

Para una aplicación interesada solo en el valor, esa reparación puede ser deseable. Para una aplicación que ha llamado data-hash al digest de los bytes “tal como se transmitieron”, es una alteración de procedencia. El almacenamiento ya no puede demostrar qué recibió, aunque pueda demostrar qué entiende.

La discrepancia se vuelve operativa si el hash sirve para buscar, deduplicar, registrar o firmar una segunda afirmación. Una declaración puede existir bajo un identificador y parecer ausente bajo otro. Dos participantes pueden aprobar la firma y discrepar honestamente sobre la clave de registro. La firma no arbitra porque esa elección de framing quedó fuera de su frontera.

El artefacto con las 64 variantes y el vector de partida permiten repetir el ensayo. El borrador indica la versión del decoder y la plataforma, y menciona una recomputación independiente de uno de los ejes.

Sin embargo, la prueba no estudia anchuras de enteros ni orden de claves, y por eso la clase real es mayor. Tampoco es un sondeo de productos desplegados. Sirve para demostrar un mecanismo, no para asignar una tasa de incidencia.

Preservar primero, interpretar después

La defensa más directa es separar el objeto probatorio del objeto de trabajo. El gateway conserva de forma inmutable el cuerpo exacto antes de invocar cualquier parser. Calcula el wire hash sobre esa copia, registra la frontera nombrada y enlaza después la forma decodificada y la normalizada como derivados.

Si una cola recibe solo una estructura en memoria, o una base vuelve a codificar antes de persistir, la organización debe admitir que esa capa ya no transporta la evidencia original. No basta con que todos los servicios usen la misma biblioteca: una actualización, un lenguaje distinto o una configuración preferida puede volver a abrir la diferencia.

Otra estrategia consiste en exigir una codificación determinista y rechazar toda entrada que no la cumpla. RFC 8949 ofrece requisitos básicos para que un protocolo defina esa política. La preferencia de un encoder no sustituye una regla de protocolo ni la verificación de entrada.

El borrador as-transmitted toma la primera ruta: ninguna canonicalización y un selector que nombra la secuencia exacta fijada por el formato. Es anterior a la nueva medición y también es un trabajo individual. La relación correcta es temporal y técnica, no institucional: una propuesta previa define la frontera; la medición posterior muestra el tamaño del problema que esa frontera evita.

Un registro no hereda la autoridad de la firma

RFC 9943 organiza SCITT mediante declaraciones firmadas, servicios de transparencia, receipts y valoración posterior. Los borradores de API de referencia y perfil de receipts CCF dan al data-hash funciones concretas de coordinación.

Cada evidencia debe hablar solo por su capa. Los bytes conservados prueban lo recibido por un componente. La firma válida prueba la integridad del Sig_structure con una clave, no por sí sola la identidad ni la autorización de su titular. El receipt prueba una inclusión según las reglas del servicio, no la verdad, actualidad o utilidad del contenido.

La idea de Heng Lu de publicar realidad y no defensa institucional mantiene el caso en su escala: no hay que acusar a una implementación concreta. Su primacía del código en funcionamiento exige atravesar el camino real y observar dónde cambian los bytes. La diferencia entre capacidad técnica y autoridad impide que la normalización automática se convierta, sin decisión explícita, en un poder para renombrar evidencia.

La pregunta no es si canonicalizar es correcto en abstracto. Es quién decide qué realidad nombra el identificador y si el sistema conserva todavía esa realidad después de leerla.

Sources