Basicamente, colisão de hash é uma situação que ocorre quando dois arquivos distintos tem o mesmo valor de hash. A probabilidade de que haja uma colisão de hash é maior quando utilizamos MD5, pois o tamanho do valor gerado é menor:
MD5("") = d41d8cd9 8f00b204 e9800998 ecf8427e
SHA1("") = da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709
SHA256("") = e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855
Há uma vulnerabilidade no algorítimo do MD5 que permite ao atacante "forjar" uma colisão de MD5, modificando um arquivo original e gerando para este arquivo resultante o mesmo hash do arquivo original.
Uma "solução de contorno" seria utilizar ambos algoritmos para o mesmo arquivo: MD5 e SHA1, pois, mesmo que haja manipulação do arquivo e a "maracutaia" para colisão do MD5 seja aplicada, o SHA1 será alterado e evidenciará o ataque.
Maiores informações sobre o assunto:
- White Papper AccessData sobre o assunto.
- Algorítimo em C para colisão MD5
- Fast Collision Attack on MD5
- Hash Collisions (The Poisoned Message Attack)
- On Collisions for MD5 - M.M.J. Stevens
- http://en.wikipedia.org/wiki/Hash_collision
- http://en.wikipedia.org/wiki/Collision_attack
- http://en.wikipedia.org/wiki/Hash_table#Collision_resolution

No comments:
Post a Comment