Criptografia – Hashes MD5
Hashes MD5
Um Hash MD5, ou “Message Digest 5”, é uma função de hash criptográfico já não muito usada atualmente. Ela produz um valor de hash de 32 caracteres hexadecimais (equivalente a 128 bits), independentemente do tamanho dos dados de entrada. Por isso trata=se de um Resumo (Digest) de 128 bits.
Desenvolvida em 1991 por Ron Rivest, no MIT, seu código fonte pode ser encontrado na RFC 1321.
A seguir temos um exemplo de hash MD5:
ce71c959b85d3b76daa12a09c531a774
Em 1996 uma falha foi encontrada no design do MD5. Apesar de não ser uma fraqueza fatal (na época), criptógrafos começaram a recomendar o uso de outros algoritmos a partir de então.
Aplicações de um hash MD5
Um hash MD5 pode ser usado em aplicações como:
- Verificar se um arquivo transferido chegou intacto ao destino (“checksum” – MD5sum)
- Armazenar hashes de senhas (“one-way hash”)
No mundo real não se recomenda usar o MD5 para essas aplicações, pois sua segurança está severamente comprometida. Existe um ataque de colisão que pode encontrar colisões em segundos mesmo em um computador simples, por exemplo com uma CPU Pentium 4 ou mais recente. Falaremos mais disso adiante.
Efeito avalanche
Damos o nome de “Efeito avalanche” ao que ocorre com o hash quando uma minúscula mudança no texto original provoca uma mudança brutal no resultado computado do hash. Veja o seguinte exemplo:
MD5(Fábio) = ce71c959b85d3b76daa12a09c531a774
MD5(Fabio) = cfb4d5711d6bb261eb05108684d876aa
Note que apenas mudamos a letra “à” de Fábio para “a” (sem o acento), e o resultado final do hash mudou completamente. Desta forma, não há relação entre o conteúdo gerado na saída e os dados de entrada que originaram o hash.
Segurança do MD5
A segurança do hash MD5 está fortemente comprometida. Ele é vulnerável a ataques de colisão , mesmo usando máquinas comuns com poder de processamento médio.
Um ataque de colisão em um hash criptográfico é um tipo de ataque onde se tenta encontrar duas entradas que produzam o mesmo valor de hash na saída. Se esses valores são encontrados, dizemos que houve uma “colisão”. Desde o ano de 2004 sabemos que os hashes MD5 não são resistentes à colisão, e por isso eles jamais devem ser utilizados em aplicações como certificados SSL ou assinaturas digitais, por exemplo.
Outro problema grave, relativo ao uso de hashes MD5 para armazenar senhas, é o uso de Rainbow Tables para reverter um hash e descobrir a string que o originou. Vamos abordar o uso de Rainbow Tables em nosso próximo artigo sobre hashes.
Gerando um hash MD5 no Linux
Podemos gerar um hash MD5 no Linux usando o utilitário md5sum. Veja os exemplos a seguir:
1 – Gerar hash de uma palavra ou frase digitada diretamente no terminal:
echo -n Texto | md5sum
2 – Gerar hash MD5 de um texto ou arquivo salvo no computador:
md5sum arquivo_teste
Gerando Hashes MD5 no Windows
Podemos gerar um hash no Windows usando vários programas, como por exemplo o WinMD5Free (para arquivos), que pode ser encontrado no site http://www.winmd5.com/
Existe também o File Checksum Integrity Verifier (FCIV), que é um utilitário de prompt de comandos para computar e verificar hashes criptográficos (MD5 e SHA-1) em arquivos. Você pode se informar sobre esse utilitário na página oficial de suporte da Microsoft: http://support.microsoft.com/kb/841290
No próximo artigo vamos falar de forma mais aprofundada sobre segurança e ataques a hashes, incluindo as Rainbow Tables.
Escreva um comentário