Ciągle przesyłam obrazy dysków i obrazy maszyn wirtualnych (zwykle 800 GB do prawie 1 TB na plik) do serwera w chmurze za pośrednictwem rclone za pomocą SSH i zastanawiam się, jak wiarygodne są sha1sum i md5sum, jeśli chodzi o weryfikację integralności bardzo dużych plików.
Znalazłem to: Jak mogę sprawdzić, czy plik 1 TB został poprawnie przesłany?
Ma to jednak coś wspólnego z wydajnością, a nie z niezawodnością generowanych skrótów.
Czy istnieje możliwość, że inny plik ma ten sam wygenerowany skrót, biorąc pod uwagę, że istnieje tak wiele różnych plików?
Jak więc wiarygodne są sumy MD5 i SHA-1 w przypadku bardzo dużych plików? Dzięki.
Dowiedziałem się również o kolizji: https://stackoverflow.com/questions/4032209/is-md5-still-good-enough-to-uniquely-identify-files
https://www.theregister.co.uk/2017/02/23/google_first_sha1_collision/
Odpowiedzi:
Zarówno MD5, jak i SHA-1 doskonale nadają się do wykrywania przypadkowych uszkodzeń / zmian w plikach. Prawdopodobieństwo przypadkowej zmiany pliku o tym samym skrócie MD5 wynosi jeden na 2 ^ 128 = 340 282 366 920,938,463,463,374,607,431,768,211,456. Prawdopodobieństwo przypadkowego zderzenia SHA-1 jest jeszcze mniejsze, jedno na 2 ^ 160. Jeśli mówimy o znalezieniu przypadkowych dopasowań w zbiorze plików (znanym jako problem urodzinowy), potrzebujesz około 2 ^ 64 = 18 miliardów miliardów, zanim stanie się prawdopodobne kolizja MD5. Pamiętaj, że rozmiar plików nie ma znaczenia; liczy się liczba zaangażowanych plików.
Ale ani MD5, ani SHA-1 nie są wystarczające do ochrony przed złośliwym podmianą plików lub do zapewnienia wiarygodnego unikalnego identyfikatora plików. Na przykład, jeśli użyjesz jednego z nich, ktoś może dać ci jeden plik, obliczyć skrót skrótu, a następnie oszukać cię, zamieniając go na inny plik z tym samym skrótem. Lub prześlij dwa pliki z tym samym hashem, co może wprowadzić system w błąd.
BTW, przypadkowe / złośliwe rozróżnienie jest nieco luźne. Załóżmy, że ktoś znalazł dwa pliki PDF utworzone przez Google przy użyciu tego samego skrótu SHA-1, pomyślał „To fajnie! Powinienem zapisać je na później”, a następnie próbował użyć systemu do przechowywania i dystrybucji… w ten sposób przerywając sortowanie systemu -przypadkowo. Jeśli coś takiego można sobie wyobrazić, lepiej zamiast tego wybrać SHA-256.
EDYCJA: BitErrant jest podobny do tego, co opisałem w poprzednim akapicie: jest to exploit ponownie wykorzystujący BitTorrent, wykorzystujący fakt, że BitTorrent wykorzystuje sumy kontrolne SHA-1 jako identyfikatory dla kawałków plików.
źródło