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.

Sobre Fábio dos Reis (1317 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*