Trzy zasadnicze właściwości to odporność na przeciwobraz (skrót niczego nie ujawnia o wejściu), odporność na drugi przeciwobraz (dla danego wejścia nie da się znaleźć innego wejścia z tym samym skrótem) i odporność na kolizje (nie da się w ogóle znaleźć dwóch wejść z tym samym skrótem). Algorytmy takie jak MD5 i SHA-1 zawiodły te właściwości i nie wolno ich używać tam, gdzie mają znaczenie.
Haszowanie pojawia się wszędzie w bezpieczeństwie: kontrole integralności i dowody manipulacji, podpisy cyfrowe podpisujące skróty zamiast całych wiadomości, adresowanie treści i — przy celowej dodatkowej pracy — przechowywanie haseł. Hasła potrzebują solonych, obliczeniowo kosztownych funkcji, takich jak dedykowane algorytmy haszowania haseł; szybki hasz ogólnego przeznaczenia jest złym narzędziem do tego konkretnego zadania.
Najważniejsze punkty
Użycie w integralnościPasujący skrót potwierdza, że treść nie zmieniła się od wyliczenia skrótu — pod warunkiem że sam skrót uzyskano przez zaufany kanał.
Przechowywanie hasełPrzechowuj solone skróty wolnego haszowania zamiast szybkich haszy; sól pokonuje wstępnie wyliczone wyszukiwania, a koszt spowalnia zgadywanie brute-force na skalę.
Wybór algorytmuUżywaj aktualnych zatwierdzonych rodzin (SHA-2, SHA-3) i traktuj MD5 oraz SHA-1 jako złamane dla celów bezpieczeństwa — pozostają akceptowalne tylko dla niekontestowanych sum kontrolnych.
Istotne ograniczenieHasz dowodzi tylko, że dwa wejścia pasowały w jednej funkcji w jednym czasie. Nie zapewnia poufności — skrót zgadywalnego wejścia odzyskuje się trywialnie przez próbowanie kandydatów — a hasz wyliczony przez niezaufany kanał może zostać podmieniony wraz z treścią, za którą ręczy.