Por que o MD5 ainda é muito usado?

17

O MD5 parece ter vulnerabilidades bem documentadas e, no entanto, continua sendo amplamente utilizado. 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?

    
por David in Dakota 27.10.2009 / 15:22

5 respostas

16

É rápido de gerar, e muitas vezes o fato de que as colisões são teoricamente possíveis não é um grande problema. ou seja, verificar se um arquivo em cache foi alterado para evitar o download de uma nova cópia.

Um referencial rápido feito 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 integrados, o MD5 pode ser 2-3 vezes mais rápido de produzir do que o SHA1 para as mesmas informações.

    
por 27.10.2009 / 15:20
10

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. Basta iniciar o MD5 e dividir o ISO. Compare o hash com o hash publicado. Se os hashes coincidirem, você pode ter certeza de que o ISO foi copiado corretamente e completamente.

    
por 27.10.2009 / 15:19
4
  1. É curto - mais fácil de ler.
  2. É muito difundido - ótima interoperabilidade com outros sistemas
  3. É normal - todo mundo está acostumado com isso.

e a segurança pode ser melhorada com a salga.

    
por 27.10.2009 / 15:16
3

O MD5 é amplamente utilizado como uma função hash de checksum porque é rápido e apresenta uma taxa de colisão extremamente baixa. Uma soma de verificação MD5 é composta de 32 dígitos hexadecimais que juntos fornecem uma chance de 1 em ~ 3,42e34 de uma colisão. Você poderia, teoricamente, fazer o hash de todos os arquivos em todos os computadores em 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 hash de senhas de banco de dados ou outros campos que exigem segurança interna para a sua velocidade, mas também porque o MD5 oferece um nível razoável de segurança onde a criptografia strong não é uma preocupação.

(*) para a maioria dos checksum, uma colisão só é significativa se ocorrer entre dois objetos de origens semelhantes e com o mesmo tamanho. Apesar de uma alta probabilidade de exclusividade do MD5, as colisões podem ocorrer entre dois arquivos muito distintos. Digamos, um arquivo de banco de dados de 1.5Mb e um arquivo de 35k gif. Para a maioria das finalidades, isso é uma colisão sem sentido. Ainda mais porque o MD5 é apenas um elemento da indexação de arquivos. O tamanho do arquivo é outro importante.

    
por 27.10.2009 / 15:30
2

O MD5 é amplamente utilizado porque tem sido amplamente utilizado e as quebras ainda não são significativas o suficiente para ser um problema óbvio nos sistemas existentes.

    
por 27.10.2009 / 16:42