Nota SeguraBR

MD5: o que é e como funciona

O hash mais famoso dos anos 1990, hoje quebrado: criar dois arquivos com o mesmo MD5 leva segundos.

O que é

O MD5 (Message Digest 5) é uma função de hash criada por Ronald Rivest, o R do RSA, em 1991, e publicada como RFC 1321 em 1992. Ele transforma qualquer entrada em um resultado de 128 bits, mostrado como 32 caracteres hexadecimais.

Por muitos anos, foi o hash padrão para verificar downloads, guardar senhas e assinar certificados. Hoje ele é considerado quebrado para qualquer uso de segurança.

Como funciona

O texto recebe um preenchimento e o seu tamanho, e é dividido em blocos de 512 bits. Cada bloco passa por 64 passos, organizados em quatro rodadas, que misturam quatro palavras de 32 bits com funções lógicas, somas, rotações e uma tabela de 64 constantes.

O resultado final é a junção das quatro palavras depois do último bloco. Uma mudança de um único bit no texto altera, em média, metade dos bits do resultado, o chamado efeito avalanche. Essa propriedade continua valendo no MD5. O que falhou foi outra: a dificuldade de encontrar dois textos com o mesmo resultado.

O playground desta página tem uma implementação própria do MD5, porque o navegador não oferece esse algoritmo. Ela foi conferida com os exemplos oficiais do RFC 1321.

Exemplo

No playground, escolha MD5 e digite "abc". O resultado é 900150983cd24fb0d6963f7d28e17f72. Um texto vazio gera d41d8cd98f00b204e9800998ecf8427e, um valor tão conhecido que aparece em muitos registros de sistemas.

Para um texto comum, o MD5 ainda funciona como impressão digital. O problema é que qualquer pessoa consegue fabricar, em segundos, dois arquivos diferentes com o mesmo MD5.

Onde é usado

Em 2004, a pesquisadora Xiaoyun Wang e sua equipe mostraram a primeira colisão prática do MD5. Em 2008, pesquisadores usaram colisões e um conjunto de consoles para criar um certificado falso de autoridade certificadora, aceito pelos navegadores da época.

Em 2012, o malware de espionagem Flame usou uma colisão de MD5 para falsificar uma assinatura da Microsoft e se espalhar como se fosse uma atualização do Windows. Hoje o MD5 só aparece em usos sem adversário, como detectar se um arquivo foi corrompido durante uma cópia, e em sistemas antigos.

Pontos fortes e fracos

Pontos fortes: é muito rápido e existe em todas as linguagens. Para detectar erros acidentais, como um download interrompido, ele ainda funciona.

Pontos fracos: colisões são triviais, então ele não serve para assinaturas, certificados nem para provar que um arquivo não foi trocado por alguém. Para senhas, é ainda pior: é rapidíssimo, e existem tabelas enormes com o MD5 de bilhões de senhas comuns.

Quando usar

Use o MD5 apenas para detectar erros acidentais, quando não existe ninguém tentando enganar o sistema, ou quando um sistema antigo exige.

Para segurança, use o SHA-256 ou o SHA-512. Para senhas, use Argon2, scrypt ou bcrypt. Se encontrar senhas guardadas com MD5, trate isso como um problema urgente.

Teste os algoritmos

Escolha um algoritmo, escreva um texto e veja como ele fica. Tudo acontece no seu navegador e nada é salvo.

Criptografia

Hash

Autenticação e assinatura

Troca e derivação de chaves

Codificação

Cifras clássicas

MD5

Inseguro

Hash

Hash de 128 bits dos anos 1990. Hoje é fácil criar dois textos com o mesmo MD5, então ele não serve para segurança, só para detectar erros de cópia.

Ver todos os algoritmos

0/500

Veja também

Precisa enviar um segredo?

Use uma nota segura: o texto é criptografado com AES-256-GCM e se apaga sozinho.

Criar uma nota