Resumo

  • A RFC 9861 define quatro funções de saída extensível, mas o resultado depende também dos bytes exatos, do domínio ou personalização e do comprimento solicitado.
  • KT128 e KT256 mudam de caminho interno quando a entrada codificada passa de 8192 bytes; execução paralela e serial precisam terminar nos mesmos bytes.
  • O status Informational da IRTF e os registros da IANA coordenam referências, sem certificar uma biblioteca ou autorizar implantação.

O arquivo de auditoria dizia apenas KT128. A nova equipe tinha o mesmo documento de entrada e uma biblioteca compatível, mas não conseguia regenerar o identificador antigo. O dado perdido podia ser uma personalização, o comprimento da saída, uma regra de serialização ou a ordem dos fragmentos.

Essa ausência é mais importante que uma troca de fornecedor. A RFC 9861 define TurboSHAKE128, TurboSHAKE256, KT128 e KT256 como referência estável. Publicada em outubro de 2025, sua ficha a classifica como Informational no fluxo IRTF. O texto representa consenso do CFRG, mas não é Internet Standard do IETF e não decide se um ambiente deve adotá-lo.

Comprimento não é formatação

TurboSHAKE recebe M, um byte de separação de domínio D e um comprimento positivo L. D aceita valores de 01 a 7F; o padrão é 1F. Mantidos M e D, a saída menor é prefixo da maior.

Isso descreve a função, não a política de comparação. Um protocolo que usa 32 bytes não autorizou 64 automaticamente. Uma coluna que corta a saída não implementou uma migração. O recibo precisa registrar variante, D, L, serialização e regra de truncamento. “Configuração padrão” não resiste à troca de API.

As interfaces incrementais também carregam responsabilidade. Partes de entrada devem equivaler à concatenação na ordem em que foram fornecidas. Partes de saída devem, quando reunidas, equivaler a uma única solicitação pelo comprimento total. O tamanho do buffer pode mudar; a sequência de bytes, não.

A personalização entra no fato criptográfico

KT128 e KT256 aceitam a cadeia opcional C. A entrada efetiva é construída como S = M || C || length_encode(|C|). O contexto e seu tamanho entram de forma reversível no cálculo.

Por isso, uma URI, um nome de protocolo ou um identificador de tenant usado como C não é comentário. Normalizar a URI, mudar codificação ou apagar um campo “descritivo” altera o resultado. A autoridade operacional pode estar no serializador, embora o painel mostre apenas o nome da primitiva.

Até a cadeia vazia precisa de procedência. Ela pode ser escolha explícita, padrão imposto por uma interface sem parâmetro ou informação perdida. O valor atual coincide, mas o risco de migração difere.

A árvore começa depois da codificação

KangarooTwelve divide S em blocos de 8192 bytes. Até esse limite usa um nó único. Acima dele, blocos posteriores produzem valores de encadeamento, reunidos com o primeiro bloco em um nó final. KT128 usa valores intermediários de 32 bytes; KT256, de 64.

O limite pertence a S, não só a M. Alterar C pode mover uma mensagem inalterada para o modo em árvore. Testes devem cobrir abaixo, no limite e acima, com personalização vazia e preenchida. O backend pode usar SIMD e paralelismo; a resposta final continua única.

Este relatório não mediu desempenho nem testou produtos. A RFC afirma que a redução para 12 rodadas traz velocidade em relação a SHAKE e apresenta alegações de 128 ou 256 bits conforme a variante. FIPS 202 fornece a base Keccak/SHA-3 e SP 800-185 o contexto de funções derivadas. Nada disso certifica um binário ou sua proteção contra canal lateral.

Um perfil fixo fecha parâmetros; um código não fecha a execução

No registro Named Information da IANA, k12-256 fixa KT128, C vazia e 32 bytes; k12-512 fixa KT256, C vazia e 64 bytes. Eles não significam qualquer saída possível das famílias KT.

O registro de Algoritmos COSE atribui valores às quatro funções. O código oferece uma referência comum, mas não revela os bytes recebidos, o perfil do protocolo, a versão da biblioteca, o backend ou o resultado dos vetores.

O erratum é uma lição sobre parâmetros explícitos

A RFC inclui vetores para comprimentos, mensagens, personalizações e fronteiras diferentes. O registro de errata mostra o item técnico 8997, ainda Reported. Ele observa que algumas chamadas KT omitem a etiqueta M= no primeiro argumento posicional. A correção proposta uniformiza a apresentação; não altera as saídas publicadas.

Reported não é Verified. O registro de conformidade deve preservar esse estado e guardar, para cada vetor, argumentos, valor esperado, valor observado, build, caminho de hardware e data. Uma declaração genérica de teste aprovado não permite reconstrução.

Igualdade de bytes não é autoridade

A RFC define HopMAC e permite outras colocações reversíveis da chave. “MAC KT128” ainda deixa em aberto a construção, a chave, a custódia, a personalização e o comprimento do tag. Mesmo uma igualdade perfeita prova somente o resultado sob o contrato declarado; não prova autoria, atualidade, permissão ou efeito posterior.

A sequência correta separa definição, perfil, serialização, execução, comparação, aceitação pelo protocolo e resultado real. Conectá-las por recibos produz clareza. Fundi-las em um selo verde dá ao nome uma autoridade que ele não recebeu.

Fontes