Dobra funkcja skrótu ma następujące właściwości:
Biorąc pod uwagę skrót wiadomości, atakujący nie może znaleźć innej wiadomości, której skróty są identyczne.
Biorąc pod uwagę parę wiadomości, m 'im', jest obliczeniowo niewykonalne znalezienie dwóch takich, że h (m) = h (m ')
Te dwa przypadki nie są takie same. W pierwszym przypadku istnieje wcześniej istniejący skrót, dla którego próbujesz znaleźć kolizję. W drugim przypadku, starasz się znaleźć jakiekolwiek dwie wiadomości kolidujących. Drugie zadanie jest znacznie łatwiejsze ze względu na urodzinowy „paradoks”.
Tam, gdzie wydajność nie jest tak wielkim problemem, należy zawsze używać bezpiecznej funkcji skrótu. Istnieją bardzo sprytne ataki, które można wykonać, wymuszając kolizje w hashu. Jeśli od samego początku użyjesz czegoś mocnego, zabezpieczasz się przed tym.
Nie używaj MD5 ani SHA-1 w nowych projektach. Większość kryptologów, łącznie ze mną, uznałaby je za zepsute. Głównym źródłem słabości obu tych projektów jest to, że druga właściwość, którą nakreśliłem powyżej, nie dotyczy tych konstrukcji. Jeśli osoba atakująca może wygenerować dwie wiadomości, m i m ', obie mają tę samą wartość, może użyć tych wiadomości przeciwko tobie. SHA-1 i MD5 również cierpią z powodu ataków rozszerzających wiadomości, które mogą fatalnie osłabić twoją aplikację, jeśli nie będziesz ostrożny.
Bardziej nowoczesny haszysz, taki jak Whirpool, to lepszy wybór. Nie cierpi z powodu tych ataków rozszerzających wiadomości i używa tej samej matematyki, której używa AES, aby udowodnić bezpieczeństwo przed różnymi atakami.
Mam nadzieję, że to pomoże!