Resumo
- Um Internet-Draft individual publicado em 5 de setembro de 2026 combinou seis escolhas binárias de codificação CBOR sobre um objeto COSE_Sign1 de 165 octetos.
- As 64 combinações produziram 64 sequências e 64
data-hashdistintos, sem colisões, mas uma únicaSig_structurede 109 octetos; por isso a mesma assinatura foi válida em todas. - O decodificador comum não rejeitou nenhuma entrada. Trinta e uma foram silenciosamente reemitidas como a representação inicial num ciclo de leitura e escrita.
- Uma execução independente do script e dos artefatos publicados confirmou o hash de A, os 64 hashes, zero rejeições e 31 normalizações.
- Não houve quebra criptográfica nem incidente de produção. A decisão pendente é qual sequência o identificador nomeia e como preservar a capacidade de reproduzi-la.
O objeto lógico não guarda a sua embalagem
Na verificação de COSE_Sign1, a assinatura cobre uma construção definida. RFC 9052 inclui na Sig_structure o contexto, o cabeçalho protegido, os dados autenticados externos e a carga. Várias escolhas de enquadramento do recipiente CBOR ficam fora dessa construção.
Já o data-hash examinado no rascunho de medição resume todos os octetos transmitidos. Ele pode servir como endereço exato de um statement. Assim, uma parte que preserva a entrada e outra que preserva apenas o valor decodificado podem concordar sobre a assinatura e discordar sobre o identificador.
As duas operações funcionam como projetadas. A assinatura afirma integridade dentro de seu domínio. O hash distingue a forma binária inteira. O erro começa quando o sistema registra apenas “verificado” e omite qual forma foi usada para emitir o nome público.
Seis decisões, 64 preimagens
O objeto A começa com 165 octetos. O experimento alterna a presença da tag CBOR 18, array externo de comprimento definido ou indefinido e mapa de cabeçalhos desprotegidos também definido ou indefinido. Cabeçalho protegido, payload e assinatura são emitidos, cada um, como cadeia inteira ou fragmentada.
Nenhum valor interno muda. O artefato público registra 64 sequências entre 164 e 170 octetos. Todas têm SHA-256 diferente, sem colisão. Todas produzem a mesma Sig_structure de 109 octetos e aceitam a mesma assinatura.
O resultado é um piso. Larguras alternativas de inteiros e ordem de chaves de mapas ficaram fora do ensaio. O contexto de RFC 8949 deixa claro que CBOR comporta outras representações. Uma regra baseada apenas numa lista de enquadramentos proibidos não demonstra cobertura do espaço restante.
Quando o sucesso do parser apaga a entrada
As 64 entradas passaram pelo decodificador. Em 31 casos, decodificar e codificar novamente produziu exatamente A. Não apareceu erro, porque para a biblioteca o objeto semântico permaneceu válido.
Considere um serviço que recebe B, calcula hash(B) e guarda apenas A, a saída de sua biblioteca. O serviço consegue verificar a assinatura amanhã, mas não consegue recalcular hash(B) a partir do que reteve. Se o hash indexa um recibo, deduplica registros ou recebe outra atestação, a trilha documental deixa de fechar.
“Silencioso” não significa hostil. Tampouco há prova de que algum Transparency Service em produção descarte os bytes dessa maneira. O teste mostra apenas que uma resposta de parser não funciona como evidência de custódia.
Reproduzir a contagem sem inflar a conclusão
O autor publicou o vetor, os resultados e o script. Como o endpoint raw do GitHub falhou, o mesmo arquivo foi obtido pela Contents API e executado num diretório temporário com cópias dos JSON cujos hashes coincidiam com a publicação.
A saiu idêntico, com SHA-256 8595e4a4c8b93e7b1b7b798dc302a2b7d2890021f7eff372d79b32f78867e4ac. O programa encontrou novamente 64 data-hash, zero rejeições e 31 normalizações. A réplica usou cbor2 5.7.1; o texto relata 6.1.3 sobre CPython 3.13 e macOS arm64. A concordância sustenta a medida central, não uma alegação universal sobre implementações.
O Datatracker registra o documento como submissão individual, sem endosso da IETF, situação formal, fluxo RFC ou Area Director responsável. O próprio rascunho não especifica requisito. Não há assinatura forjada, colisão de hash, falha de primitiva ou incidente implantado.
A solução proposta ainda não é norma
O assunto entrou na Last Call do CCF Profile for COSE Receipts. Em mensagem de 5 de setembro, Nicholas Templeman apoiou o avanço do perfil e sugeriu que data-hash cobrisse os octetos como registrados, não uma reserialização. Ele chamou a observação de não bloqueante.
Trata-se de contribuição individual, não consenso nem redação adotada. O SCRAPI e o perfil CCF seguem como rascunhos do Working Group. RFC 9943 define a arquitetura SCITT, mas não transforma uma mensagem posterior em obrigação.
O Internet-Draft individual Canonical Payload Binding já descrevia as-transmitted: nenhuma canonicalização e a sequência exata como preimagem. jcs-n e cde-n aparecem como Withdrawn. A medição quantifica uma classe que essa opção procura fechar; não aprova a opção.
Briefing para membros
Contexto aprofundado do perfil
Faça login com o nível de assinatura correto para desbloquear o briefing completo e as notas das fontes.
Apenas para Strategic Circle
Strategic Circle
Aberto a todos os leitores. Desbloqueie Briefings de perfil após se inscrever e fazer login.
Junte-se ao Strategic CircleSomente para Leadership Alliance
Leadership Alliance
Para proprietários e gestores qualificados de ativos de PI; faça login para desbloquear os briefings da Leadership Alliance.
Junte-se ao Leadership Alliance

