Ao usar md5sum
para verificar a integridade de um arquivo, qual é a precisão do processo?
Um MD5 verificado significa que TODOS os bits são exatamente iguais ou existe um limite que deve ser quebrado antes que a alteração binária seja refletida no MD5?
Qualquer documentação sobre como um MD5 é gerado também seria apreciada.
Respostas:
O MD5 está quebrado para esse fim contra um adversário inteligente. É possível construir maliciosamente dois blocos diferentes de dados que produzem o mesmo hash MD5.
No entanto, é totalmente adequado (embora haja maneiras quase certamente melhores) usar o MD5 para proteger contra corrupção de dados inadvertida em trânsito ou armazenamento. Embora seja concebível que esse evento possa causar o mesmo hash MD5, a probabilidade é tão baixa que é quase inimaginável que seria uma probabilidade com a qual vale a pena se preocupar. Falhas causadas por radiação de fundo, tunelamento, estática e dezenas de outras fontes seriam ordens de magnitude mais prováveis.
Mesmo se você tivesse um quatrilhão de unidades de dados, a probabilidade de um MD5 incompatível produzir um hash MD5 pertencente a uma dessas unidades de quatrilhão é muito menor que uma em um quatrilhão.
fonte
MD5 é um hash. Basicamente, mapeia todo o conteúdo de um arquivo em uma pequena sequência com IIRC de 16 bytes.
Obviamente, haverá vários arquivos com hash na mesma soma MD5. Portanto, uma soma MD5 correspondente não é garantia de uma correspondência exata entre arquivos.
Não existe um limite como tal, porque o modo como os hashes funcionam. Portanto, uma soma MD5 pode detectar até uma única alteração de bit. No entanto, muitas alterações de bit único juntas podem fazer com que o hash MD5 seja o mesmo. Portanto, é bastante razoável usar o MD5 para validar a integridade do arquivo contra corrupção aleatória, mas não se a intenção maliciosa for possível, pois alguém poderá modificar um arquivo enquanto garante que o hash do MD5 seja o mesmo.
fonte
Um MD5-Hash consiste em 128 bits. Um único bit invertido na fonte inverte (em média) 64 bits no hash.
A probabilidade de dois hashes colidirem acidentalmente é 1/2 ^ 128, que é 1 em 340 undecilhões 282 decilhões 366 nonillion 920 octillion 938 septillion 463 sextillion 463 quintillion 374 quadrillion 607 trilhões 431 bilhões 768 milhões 211 mil 456.
No entanto, se você mantiver todos os hashes, graças ao paradoxo do aniversário, a probabilidade é um pouco maior. Para ter 50% de chance de qualquer hash colidir, você precisa de 2 ^ 64 hashes. Isso significa que, para obter uma colisão, em média, você precisará misturar 6 bilhões de arquivos por segundo por 100 anos.
Fonte: porneL, /programming/201705/how-many-random-elements-before-md5-produces-collisions
fonte