O MD5 parece ter vulnerabilidades bem documentadas e, no entanto, permanece difundido em seu uso. Alguém tem alguma razão para continuar sendo uma opção viável quando outras alternativas (por exemplo, SHA-2) parecem ser mais robustas?
O MD5 parece ter vulnerabilidades bem documentadas e, no entanto, permanece difundido em seu uso. Alguém tem alguma razão para continuar sendo uma opção viável quando outras alternativas (por exemplo, SHA-2) parecem ser mais robustas?
Respostas:
É rápido de gerar e, muitas vezes, o fato de colisões serem teoricamente possíveis não é um problema enorme. ou seja, verificar se um arquivo em cache foi alterado para evitar o download de uma nova cópia.
Uma referência rápida feita em 1996 mostra o seguinte:
Digest Performance in MegaBytes per Second
Pentium P5 Power Mac SPARC 4 DEC Alpha
90 MHz 80 MHz 110 MHz 200 MHz
MD5 13.1 3.1 5.1 8.5
SHA1 2.5 1.2 2.0 3.3
Para um uso moderno - em chips incorporados, o MD5 pode ser 2-3 vezes mais rápido do que o SHA1 para as mesmas informações.
Um hash MD5 é "bom o suficiente" para a maioria das tarefas domésticas. Lembre-se de que ainda é incrivelmente difícil produzir colisões significativas no mesmo número de bytes.
Por exemplo, digamos que você baixe o novo Ubuntu 9.10 na próxima semana a partir de um espelho confiável. Você deseja verificar se o arquivo foi baixado corretamente e completamente. Simplesmente inicie o MD5 e faça o hash do ISO. Compare o hash com o publicado. Se os hashes corresponderem, você pode ter certeza de que o ISO foi copiado corretamente e completamente.
e a segurança pode ser melhorada com a salga.
O MD5 é amplamente usado como uma função de hash de soma de verificação porque é rápido e apresenta uma taxa de colisão extremamente baixa. Uma soma de verificação MD5 é composta por 32 dígitos hexadecimais que, juntos, fornecem chances 1 em ~ 3.42e34 de colisão. Teoricamente, você poderia fazer o hash de todos os arquivos em todos os computadores de um país do tamanho dos EUA e não produzir uma colisão (*).
Para criptografia, o MD5 é uma alternativa válida se a segurança for apenas uma preocupação moderada. É uma opção muito viável para fazer o hash de senhas de bancos de dados ou outros campos que exigem segurança interna principalmente devido à sua velocidade, mas também porque o MD5 oferece um nível razoável de segurança onde a criptografia forte não é uma preocupação.
(*) para a maioria dos propósitos de soma de verificação, uma colisão só é significativa se ocorrer entre dois objetos de origens semelhantes e com o mesmo tamanho. Apesar da alta probabilidade de exclusividade do MD5, colisões podem eventualmente ocorrer entre dois arquivos muito distintos. Digamos, um arquivo de banco de dados de 1,5 Mb e um arquivo gif de 35k. Para a maioria dos propósitos, essa é uma colisão sem sentido. Ainda mais porque o MD5 é apenas um elemento da indexação de arquivos. O tamanho do arquivo é outro importante.
O MD5 é amplamente utilizado porque foi amplamente utilizado, e as quebras ainda não são significativas o suficiente para serem um problema óbvio nos sistemas existentes.
sha256sum filename.iso
vez demd5sum filename.iso
?