W przypadku md5sum
weryfikacji integralności pliku, jak dokładny jest ten proces?
Czy zweryfikowany MD5 oznacza, że KAŻDY bit jest dokładnie taki sam, czy też istnieje próg, który należy przekroczyć, zanim zmiany binarne zostaną odzwierciedlone w MD5?
Doceniona zostanie również wszelka dokumentacja generowania md5.
Odpowiedzi:
MD5 został złamany w tym celu przeciwko inteligentnemu przeciwnikowi. Możliwe jest złośliwe skonstruowanie dwóch różnych bloków danych, które wytwarzają ten sam skrót MD5.
Jednak jest całkowicie odpowiednie (choć są prawie na pewno lepsze sposoby) użycie MD5 w celu ochrony przed przypadkowym uszkodzeniem danych podczas transportu lub przechowywania. Chociaż możliwe jest, że takie zdarzenie może spowodować, że skrót MD5 będzie taki sam, prawdopodobieństwo jest tak niskie, że prawie niewyobrażalne jest prawdopodobieństwo, o które warto się martwić. Awarie spowodowane przez promieniowanie tła, tunelowanie, statyczne i dziesiątki innych źródeł byłyby bardziej prawdopodobne o rząd wielkości.
Nawet jeśli masz kwadrylion jednostek danych, prawdopodobieństwo, że niedopasowane MD5 wytworzy skrót MD5 należący do jednej z tych kwadrylionów, jest znacznie mniejsze niż jeden na kwadrylion.
źródło
MD5 to skrót. Zasadniczo odwzorowuje całą zawartość pliku na niewielki ciąg o długości 16 bajtów IIRC.
Oczywiście będzie wiele plików z tą samą sumą MD5. Dlatego zgodna suma MD5 nie gwarantuje dokładnego dopasowania między plikami.
Jako taki nie ma progu, ponieważ sposób działania skrótów działa. Tak więc suma MD5 może wykryć nawet jedną zmianę bitową. Jednak wiele zmian pojedynczych bitów razem może spowodować, że skrót MD5 będzie taki sam. Dlatego rozsądnie jest używać MD5 do sprawdzania integralności pliku pod kątem przypadkowego uszkodzenia, ale nie, jeśli złośliwe zamiary są możliwe, ponieważ ktoś może zmodyfikować plik, upewniając się, że skrót MD5 jest taki sam.
źródło
Skrót MD5 składa się ze 128 bitów. Pojedynczy przerzucony bit w źródle przerzuca (średnio) 64 bity w haszu.
Prawdopodobieństwo przypadkowego zderzenia dwóch skrótów wynosi 1/2 ^ 128, co stanowi 1 na 340 undecillion 282 decylion 366 nonillion 920 octillion 938 septillion 463 sextillion 463 quillillion 374 quillion 607 bilionów 431 miliardów 768 milionów 211 tysięcy 456.
Jeśli jednak zachowasz wszystkie wartości skrótu, dzięki paradoksowi urodziny prawdopodobieństwo jest nieco wyższe. Aby mieć 50% szans na zderzenie dowolnego skrótu, potrzebujesz 2 ^ 64 skrótów. Oznacza to, że aby uzyskać kolizję, średnio trzeba będzie mieszać 6 miliardów plików na sekundę przez 100 lat.
Źródło: porneL, /programming/201705/how-many-random-elements-before-md5-produces-collisions
źródło