2010-10-26 10 views
9

Jaka jest najbardziej odpowiednia funkcja skrótu do sprawdzania integralności plików (sum kontrolnych) w celu wykrycia uszkodzenia?Odpowiednia funkcja skrótu do wykrywania uszkodzenia danych/sprawdzania integralności danych?

muszę rozważyć następujące kwestie:

Szeroki zakres wielkości pliku (1 KB do 10 GB +)
wiele różnych typów plików
duży zbiór plików (+/- 100 TB i rośnie)

Czy większe pliki wymagają większych rozmiarów (SHA-1 vs SHA 512)?

Widzę, że rodzina SHA jest określana jako kryptograficzna funkcja skrótu. Czy nie nadają się do użytku "ogólnego przeznaczenia", takiego jak wykrywanie uszkodzenia plików? Czy coś takiego jak MD5 czy Tiger będzie lepsze?

Jeśli złośliwa ingerencja jest również problemem, to czy twoja odpowiedź zmieni w.r.t najbardziej odpowiednią funkcję haszującą?

Biblioteki zewnętrzne nie są opcją, tylko to, co jest dostępne w systemie Windows XP SP3 +.

Naturalne działanie również budzi niepokój.

(Proszę wybaczyć moją terminologię, jeśli jest ona nieprawidłowa, moja wiedza na ten temat jest bardzo ograniczona).

Odpowiedz

15

Każda kryptograficzna funkcja skrótu, nawet zepsuta, będzie odpowiednia do wykrywania przypadkowego uszkodzenia. Dana funkcja hash może być zdefiniowana tylko dla wejść do pewnego ograniczenia, ale dla wszystkich standardowych funkcji skrótu ten limit wynosi co najmniej 2 bitów, tj. Około 2 miliony terabajtów. To dość duże.

Typ pliku nie ma żadnej częstości. Funkcje skrótu działają na sekwencjach bitów (lub bajtach) niezależnie od tego, co reprezentują te bity.

Wydajność funkcji Hash jest mało prawdopodobna. Nawet "wolne" funkcje skrótu (np. SHA-256) będą działać szybciej na typowym komputerze niż na twardym dysku: czytanie pliku będzie wąskim gardłem, a nie hashowaniem (komputer z 2,4 GHz może mieszać dane z SHA-512 z prędkością blisko 200 MB/s, używając jednego rdzenia). Jeśli wydajność funkcji skrótu jest problemem, to albo twój procesor jest bardzo słaby, albo twoje dyski są szybkie SSD (i jeśli masz 100 TB szybkiego SSD to jestem trochę zazdrosny). W takim przypadku niektóre funkcje mieszające są nieco szybsze niż inne, ponieważ MD5 jest jedną z "szybkich" funkcji (ale MD4 jest szybsza i jest to wystarczająco proste, że jego kod może być zawarty w dowolnej aplikacji bez większego problemu).

Jeśli złośliwe sabotażowanie jest problemem, staje się to problemem związanym z bezpieczeństwem, a to jest bardziej złożone. Po pierwsze, będziesz chciał użyć jednej z nieskrytych kryptograficznych funkcji skrótu, a więc SHA-256 lub SHA-512, a nie MD4, MD5 lub SHA-1 (słabości znalezione w MD4, MD5 i SHA-1 mogą nie mieć zastosowania do konkretnego sytuacja jest subtelna i lepiej jest grać bezpiecznie). Hashowanie może, ale nie musi być wystarczające, w zależności od tego, czy atakujący ma dostęp do wyników mieszania. Być może trzeba użyć wartości MAC, którą można wyświetlić jako rodzaj skrótu z kluczami. HMAC to standardowy sposób budowania MAC z funkcji skrótu. Istnieją inne oparte na hash MAC. Co więcej, MAC używa tajnego klucza "symetrycznego", co nie jest właściwe, jeśli chcesz, aby niektórzy ludzie mogli zweryfikować integralność pliku bez możliwości wykonywania cichych zmian; w takim przypadku musiałbyś uciekać się do podpisów cyfrowych. Krótko mówiąc, w kontekście bezpieczeństwa potrzebna jest dokładna analiza bezpieczeństwa z jasno zdefiniowanym modelem ataku.

+0

Doskonała odpowiedź! Dzięki wielkie. – links77

Powiązane problemy