Eu li algo no sentido de que a construção HMAC é capaz de diminuir o problema de colisões no hash subjacente.
Isso significa que algo como HMAC-MD5 ainda pode ser considerado seguro para autenticar dados criptografados?
Comentários
- Algo relevante (HMAC de força bruta) crypto.stackexchange.com/a/6753/5231
- Você pode encontrar respostas sobre a segurança do HMAC-MD5 em geral, seguindo este link .
Resposta
Sim, atualmente não há ataques conhecidos ao HMAC-MD5.
Em particular, após os primeiros ataques de colisão no MD5, Mihir Bellare (um dos inventores do HMAC) propôs uma nova prova de segurança para HMAC que não requer resistência à colisão:
“ Resumo: O HMAC foi provado por Bellare, Canetti e Krawczyk (1996) como um PRF assumindo que (1) a função de compressão subjacente é um PRF e (2) a função hash iterada é fracamente resistente a colisões. No entanto, ataques recentes mostram que a suposição (2) é falsa para MD5 e SHA-1, removendo o suporte baseado em provas para HMAC nesses casos. Este artigo prova que o HMAC é um PRF sob a única suposição de que a função de compressão é um PRF. Isso recupera uma garantia baseada em prova, uma vez que nenhum ataque conhecido compromete a pseudo-aleatoriedade da função de compressão e também ajuda a explicar a resistência a ataques que o HMAC mostrou, mesmo quando implementado com funções hash cuja (fraca) resistência à colisão está comprometida. Também mostramos que uma condição ainda mais fraca do que PRF na função de compressão, ou seja, que é um MAC de preservação de privacidade, é suficiente para estabelecer que o HMAC é um MAC seguro, desde que a função hash atenda ao requisito muito fraco de ser quase computacionalmente universal, onde novamente o valor reside no fato de que ataques conhecidos não invalidam as suposições feitas. “
No entanto, isso não significa que você deve usar HMAC-MD5 em novos designs de criptossistema. Parafraseando Bruce Schneier, “ os ataques só ficam melhores, nunca piores. “Já temos ataques de colisão práticos para MD5, mostrando que ele não cumpre seus objetivos de segurança originais; é possível que, a qualquer momento, alguém possa descobrir uma maneira de estendê-los em algum novo ataque que iria comprometer a segurança do HMAC-MD5. Uma escolha muito melhor seria usar HMAC com uma função hash sem ataques conhecidos, como SHA-2 ou SHA-3.
Comentários
- SHA-2 tem ataques conhecidos: en.wikipedia.org/wiki/SHA-2
- @baptx Qualquer primitivo criptográfico tem " ataques conhecidos ". A questão é se eles quebram significativamente a quantidade total de rodadas. Para SHA-2, eles atualmente não ' t. A menos que você possa comprovar que o SHA-2 foi quebrado com qualquer significado, eu gostaria de remover esses comentários da resposta.
- " ataques recentes mostram essa suposição (2) é falso para MD5 " quais ataques recentes? o ataque de prefixo escolhido? por que isso significa isso?
Resposta
A resposta de Ilmari Karonen está correta quando o HMAC é usado para seu finalidade pretendida, mas isso não significa que o HMAC não seja totalmente afetado pelas colisões do MD5:
Dada uma chave específica, observe que K xor opad
e K xor ipad
são independentes da mensagem m
. Isso significa que qualquer colisão em H((K xor ipad) || m)
resultará em uma colisão HMAC
, até com duas mensagens diferentes.
Para HmacMd5, K xor ipad
teria 64 bytes. Portanto, se você encontrar duas mensagens m1
e m2
com pelo menos um prefixo comum de 64 bytes pre
, você pode calcular uma chave K = pre xor ipad
que criará uma colisão entre H((K xor ipad) || m1)
e H((K xor ipad) || m2)
, leadi rumo a uma colisão completa em todo o HMAC.
Isso pode ser explorado de duas maneiras:
- Você não confia na pessoa que gerou a chave, e o HMAC está sendo usado indevidamente como uma espécie de soma de verificação.
- Um invasor obtém acesso à chave e pode usar o ataque de prefixo escolhido do MD5 para causar colisões.
Mas como o aceito A resposta afirma que, se a chave for secreta e controlada por você ou por terceiros, o HmacMd5 ainda é seguro.
Comentários
- Sim, já existia esse tipo de resposta até que foi excluída. A pergunta afirma explicitamente " para autenticação de dados criptografados ". O uso para calcular somas de verificação e a disponibilidade da chave são perpendiculares a essa parte da pergunta. Bem-vindo à criptografia de qualquer maneira, esse tipo de resposta bem escrita é muito bem-vindo aqui!
- Eu concordo, porém esta informação será útil para muitas pessoas que chegam a esta página e não fornece informações incorretas com respeito à pergunta inicial. Afirma claramente que hmacmd5 ainda é seguro se usado corretamente.