Cuando se utiliza md5sum
para verificar la integridad de un archivo, ¿qué tan preciso es el proceso?
¿Un MD5 verificado significa que CADA bit es exactamente el mismo, o hay un umbral que debe romperse antes de que la alteración binaria se refleje en el MD5?
También se agradecería cualquier documentación sobre cómo se genera un md5.
Respuestas:
MD5 está roto para este propósito contra un adversario inteligente. Es posible construir maliciosamente dos bloques diferentes de datos que producen el mismo hash MD5.
Sin embargo, es totalmente adecuado (aunque seguramente hay mejores formas) de usar MD5 para proteger contra la corrupción accidental de datos en tránsito o en almacenamiento. Si bien es concebible que tal evento pueda causar que el hash MD5 sea el mismo, la probabilidad es tan baja que es casi inimaginable que sería una probabilidad por la que vale la pena preocuparse. Las fallas causadas por radiación de fondo, túneles, estática y docenas de otras fuentes serían órdenes de magnitud más probables.
Incluso si tuviera un billón de unidades de datos, la probabilidad de que un MD5 no coincidente produzca un hash MD5 perteneciente a una de esas billones de unidades es mucho menor que uno en un billón.
fuente
MD5 es un hash. Básicamente, asigna todo el contenido de un archivo en una pequeña cadena de 16 bytes de longitud IIRC.
Obviamente habrá varios archivos que se combinan con la misma suma MD5. Por lo tanto, una suma MD5 coincidente no es garantía de una coincidencia exacta entre archivos.
No existe un umbral como tal debido a la forma en que funcionan los hashes. Por lo tanto, una suma MD5 puede detectar incluso un solo cambio de bit. Sin embargo, muchos cambios de un solo bit juntos pueden hacer que el hash MD5 sea el mismo. Por lo tanto, es bastante razonable usar MD5 para validar la integridad del archivo contra la corrupción aleatoria, pero no si es posible una intención maliciosa ya que alguien podría modificar un archivo mientras se asegura de que el hash MD5 sea el mismo.
fuente
Un MD5-Hash consta de 128 bits. Un solo bit invertido en la fuente voltea (en promedio) 64 bits en el hash.
La probabilidad de que dos hashes colisionen accidentalmente es 1/2 ^ 128, que es 1 en 340 undecillion 282 decillion 366 nonillion 920 octillion 938 septillion 463 sextillion 463 quintillion 374 quadrillion 607 trillion 431 billones 768 millones 211 mil 456.
Sin embargo, si mantiene todos los hash, entonces, gracias a la paradoja de cumpleaños, la probabilidad es un poco mayor. Para tener un 50% de posibilidades de que un hash choque, necesitas 2 ^ 64 hashes. Esto significa que para obtener una colisión, en promedio, necesitará hash 6 mil millones de archivos por segundo durante 100 años.
Fuente: porneL, /programming/201705/how-many-random-elements-before-md5-produces-collisions
fuente