MD5 é um algoritmo hash de 128 bits criado pelo cientista Ronald L. Rivest no início dos anos 90. A abreviatura MD5 significa Message Digest Version 5.
A criptografia MD5 é baseada em hashing, que envolve a formação de "impressões digitais" ou "somas" para verificar ainda mais sua autenticidade. Usando este método, você pode verificar a integridade das informações, bem como o armazenamento de hashes de senha.
História do MD5
A história do Message Digest Algorithm (MD5) começa em 1991, quando o professor do MIT Ronald L. Rivest relatou a criação de um novo algoritmo que substituiu o obsoleto MD4. Quanto ao MD4, várias deficiências foram realmente encontradas nele, como o criptologista alemão Hans Dobbertin escreveu mais tarde.
Rivest descreveu o novo algoritmo MD5 na RFC 1321.
O trabalho no algoritmo foi continuado pelos pesquisadores Bert den Boer e Anton Bosselars, que em 1993 provaram a possibilidade de pseudo-colisões em MD5, quando diferentes vetores de inicialização podem combinar com os mesmos resumos de mensagem.
Além disso, em 1996, Hans Dobbertin afirmou ter encontrado uma colisão no MD5. Naquela época, algoritmos de hashing mais preferidos tornaram-se conhecidos, como as funções de hash criptográficas RIPEMD-160 - desenvolvidas por Hans Dobbertin, Anton Bosselars e Bart Prenel, Whirlpool - desenvolvidas por Vincent Raymen e Paulo Barreto e o algoritmo de hashing criptográfico SHA-1.
Devido ao tamanho de hash relativamente pequeno (128 bits) no MD5, tem-se falado sobre a possibilidade de ataques de aniversário. O projeto MD5CRK, lançado por Jean-Luc Cook em 2004, visava estudar a vulnerabilidade do algoritmo usando ataques de aniversário. Mas, depois de cinco meses, em 17 de agosto de 2004, o projeto foi interrompido devido à descoberta de uma vulnerabilidade no algoritmo por um grupo de criptógrafos chineses liderados por Lai Xuejia.
Em março de 2005, os matemáticos e criptógrafos Benne de Weger, Arjen Lenstra e Wang Xiaoyun criaram dois documentos X.509 com o mesmo hash e chaves públicas diferentes.
Um ano depois, em março de 2006, um algoritmo foi publicado pelo criptógrafo tcheco Vlastimil Klima, que permite determinar colisões em um computador simples em apenas um minuto. Esse algoritmo ficou conhecido como método de "túnel".
Como resultado da análise dos resultados do trabalho, em 2008, a divisão da Administração Nacional de Segurança Cibernética do Departamento de Segurança Interna dos EUA (US-CERT) recomendou a todos os envolvidos no desenvolvimento de software, sites, bem como usuários da rede, deixem de usar o algoritmo MD5, independentemente da finalidade de sua aplicação. O motivo de tal recomendação foi a falta de confiabilidade que ele demonstrou no processo de estudá-la.
Em dezembro de 2010, os criptologistas chineses Tao Xie e Feng Denguo descobriram uma colisão de mensagens de 512 bits (um bloco). Anteriormente, as colisões eram encontradas apenas em mensagens com dois blocos ou mais de comprimento. Mais tarde, Mark Stevens obteve resultados semelhantes ao publicar blocos com o mesmo hash MD5. Ele também desenvolveu um algoritmo para obter colisões desse tipo.
O documento final que pôs fim à história do desenvolvimento do algoritmo MD5 foi um pedido de comentários - RFC 6151 (RFC é um documento oficial desenvolvido pelo Internet Engineering Council (IETF), que descreve especificações para um determinado technology), que na verdade reconheceu o MD5 como um algoritmo de hashing inseguro. O documento recomenda abandoná-lo, escolhendo a família SHA-2 de algoritmos criptográficos como alternativa.
O algoritmo MD5 discutido é considerado um dos primeiros padrões de algoritmo usados para verificar a integridade de arquivos e armazenar senhas em bancos de dados de aplicativos da web.
Mas, de fato, a funcionalidade relativamente simples, o comprimento curto da saída e a simplicidade das operações executadas, sendo as vantagens do algoritmo, também determinam suas desvantagens - MD5 refere-se a algoritmos propensos a hackers e com baixo grau de proteção contra ataques de aniversário.