Resumo

  • As RFCs 2403 e 2404 colocam os primeiros 96 bits do HMAC calculado em ESP ou AH, embora a saída completa e o tamanho de chave exigido sejam diferentes.
  • As orientações posteriores para ESP/AH separaram os algoritmos: a RFC 8221 classifica HMAC-MD5-96 como MUST NOT e HMAC-SHA1-96 como MUST-. O tamanho comum da etiqueta nunca significou uma avaliação de segurança comum.

Um campo, duas construções

Em novembro de 1998, as RFCs 2403 e 2404 especificaram transformações de autenticação com chave para o Encapsulating Security Payload (ESP) e o Authentication Header (AH) do IPsec. Uma combinou HMAC com MD5; a outra, com SHA-1. Ambas buscavam autenticar a origem e proteger a integridade dos dados quando apenas as partes que se comunicam conhecem o segredo. Nenhuma, sozinha, fornecia confidencialidade.

O número visível no pacote era igual: 96 bits. A saída HMAC-MD5 completa da RFC 2403 tem 128 bits; a saída HMAC-SHA-1 da RFC 2404, 160. Em ambas as transformações, quem envia grava os primeiros 96 bits no campo autenticador. Quem recebe calcula o HMAC inteiro e compara esses mesmos 96 bits. Essa escolha correspondia ao tamanho padrão do autenticador AH e dava às duas construções uma largura comum no fio. Não transformava os resumos completos em hashes de 96 bits.

As regras de chave também diferiam: a RFC 2403 exige uma chave HMAC de 128 bits; a RFC 2404 exige uma de 160. Assim, o mesmo tamanho de campo convivia com saídas completas e chaves fixas distintas. A identidade da transformação negociada e o tratamento da chave continuavam importantes; contar apenas os bits visíveis não descrevia todo o mecanismo.

Resistência a colisões não responde tudo sobre HMAC

Os documentos de 1998 não equipararam uma colisão em um hash sem chave à quebra imediata do HMAC. A RFC 2403 observou que, em comparação com assinaturas baseadas em MD5, o HMAC dependia menos da forte resistência a colisões do MD5 e que, naquele momento, não eram conhecidos ataques práticos contra HMAC-MD5-96. A RFC 2404 registrou uma avaliação semelhante, situada no seu tempo, para HMAC-SHA-1-96. Essas conclusões históricas não eram garantias para o futuro.

A evolução dos requisitos de implementação mostra a mudança de avaliação sem transformar o tamanho da etiqueta no critério decisivo. Em 2005, a RFC 4305 classificou HMAC-SHA1-96 como MUST e HMAC-MD5-96 como MAY. Em 2007, a RFC 4835 manteve essa diferença e observou que as fraquezas de colisão então conhecidas não deveriam afetar o uso desses hashes com HMAC. Em 2014, a RFC 7321 mencionou resultados teóricos contra HMAC-MD5, mas não identificou vulnerabilidade prática aparente nem considerou urgente removê-lo dos protocolos existentes; também continuou considerando HMAC-SHA-1 seguro, apesar da fraqueza de colisão do SHA-1.

Publicada em 2017, a RFC 8221 traçou uma divisão mais clara nos requisitos de implementação de ESP/AH: HMAC-MD5-96 passou a MUST NOT; HMAC-SHA1-96 caiu de MUST para MUST-. A proibição do primeiro citou a vulnerabilidade conhecida do MD5 a colisões, enquanto a redução do segundo foi atribuída a uma tendência geral da indústria de abandonar o uso do SHA-1. Isso não significa que o campo de 96 bits tenha mudado, nem que a RFC 2404 tenha passado a definir outra etiqueta.

Uma tabela de status não é uma captura de tráfego

Mais tarde, a RFC 9395 atualizou a RFC 8221 e alterou um registro de transformações IKEv2, onde aparece uma entrada chamada AUTH_HMAC_MD5_96 marcada como DEPRECATED. Esse registro não é a tabela de requisitos de implementação ESP/AH da RFC 8221. Um nome aparentemente igual surge em contextos IPsec vizinhos; por isso, todo status precisa ser lido junto com o protocolo e o escopo do documento.

Esses documentos registram parâmetros de protocolo e diretrizes de implementação datadas. Não contam equipamentos em operação, não identificam a última associação de segurança negociada com HMAC-MD5, nem definem uma data universal de retirada. Uma equipe de operação precisa separar o protocolo escolhido, o identificador da transformação, os recursos dos pares, a associação instalada e o tráfego observado. A etiqueta de 96 bits é apenas parte da evidência.

Fontes