elgio
(usa OpenSuSE)
Enviado em 26/01/2009 - 16:03h
Na verdade eram indianos (se não me engano).
O defeito no MD5 é sobre colisão. Não está diretamente ligado a força bruta, mas vamos a uma explicação.
Como um hash é sempre do mesmo tamanho, independente da string de entrada, para um mesmo hash existem infinitos outros textos. Explicando melhor, o hash normal MD5 para a palavra teste, computada com md5sum (com quebra de linha) é: 1ca308df6cdb0a8bf40d59be2a17eac1
Logo, ao procurar qual a string que resulta neste hash, pode-se obter a palavra teste. Só que exitem outras INFINITAS palavras ou frases que também resultam neste hash. Isto se chama COLISÃO e não é um defeito do MD5, mas sim uma característica do hash. Todos os hashes tem este problema.
Contudo, encontrar no universo de mensagens possíveis uma outra que tenha o mesmo hash de teste equivale a um esforço de 2^128. Apesar de se saber que existem INFINITOS, ninguém tinha, até este artigo, conseguido apresentar pelo menos DOIS que tivessem o mesmo hash.
Agora, convém informar que exitem dois ataques possíveis na colisão. Um deles é quando tu já tem o hash de uma mensagem e pretende encontrar outro igual. Este ataque poderia ser usado quando você assina digitalmente um documento e eu quero falsificá-lo, ou seja, tenho que ter a possibilidade de gerar um outro documento diferente que tenha o mesmo hash. Este ataque CONTINUA SENDO INVIÁVEL, o que mantém o sistema de senhas baseados em md5 AINDA seguros.
Um outro ataque é quanto eu desejo encontrar quaisquer dois textos que tenham o mesmo hash. Este ataque, chamado de "ataque do aniversário", exigia a metade do esforço, 2^64 no caso do MD5. Para este é que o artigo mostrou uma técnica que gera colisões. Veja, no primeiro caso você já assinou o documento e eu tenho que falsificá-lo, o que é inviável. Na técnica dos indianos se eu tenho o poder de gerar o documento ANTES QUE VOCÊ O ASSINE, eu posso usar o algoritmo.
Geraria um texto cujo teor você concordaria e de bom grado o assinaria digitalmente, mas já tenho desde de sempre um outro que você JAMAIS assinaria. Você assina o A e eu apresento o B com sua assinatura.
Dito isto, as vulnerabilidades descobertas no MD5 acerca de colisões em nada mudam a segurança no seu uso para senhas. Mesmo assim, como a criptografia é muito sensível, o MD5 já é considerado ultrapassado e não deve mais ser usado. O FreeBSD e mesmo os Linux já migraram para SHA1.
veja as linhas do seu /etc/shadow.
Se um hash começa com $1$ é MD5 (ultrapassado). Se começa com $2$ é sha1.