Hash to ciąg o stałej długości (skrót) generowany z danych wejściowych dowolnej wielkości przy użyciu funkcji hash. Proces jest jednokierunkowy — nie można odszyfrować ani odwrócić hasha, aby uzyskać oryginalne dane. Dlatego „szyfrowanie hash” jest określeniem błędnym; haszowanie nie jest szyfrowaniem.
Popularne algorytmy haszujące obejmują:
MD5 (przestarzałe ze względów bezpieczeństwa)
SHA-1 (przestarzałe)
SHA-256, SHA-512 (część rodziny SHA-2)
SHA-3
bcrypt, scrypt, Argon2 (do bezpiecznego haszowania haseł)
Hashowanie służy kilku celom w cyberbezpieczeństwie i integralności danych. Główne powody korzystania z hashowania obejmują:
Integralność danych: Zapewnia, że dane nie zostały zmienione (np. sumy kontrolne plików).
Przechowywanie haseł: Bezpieczne przechowywanie haseł poprzez porównywanie haseł zamiast przechowywania rzeczywistych haseł.
Podpisy cyfrowe: Podpisuje się hasze, a nie duże dokumenty.
Wydajność: Małe wartości hash o stałym rozmiarze są szybsze do porównania niż duże bloki danych.
Ponieważ hasze są deterministyczne i szybkie, idealnie nadają się do zadań weryfikacyjnych.
Używanie funkcji skrótu obejmuje:
Wprowadzanie danych (np. pliku, ciągu znaków lub hasła).
Przetwarzanie danych za pomocą algorytmu skrótu.
Uzyskiwanie skrótu, który jest ciągiem znaków o stałym rozmiarze, który jednoznacznie reprezentuje dane wejściowe.
Aby chronić hasło:
Połącz hasło z solą (danymi losowymi).
Zastosuj bezpieczną funkcję skrótu (np. bcrypt lub Argon2).
Przechowuj wynikowy hash i sól w bezpiecznym miejscu.
Ponieważ hashów nie można cofnąć, weryfikujesz dane wejściowe (jak hasło) poprzez ponowne hashowanie i porównanie nowego hasha z zapisanym.
Hashowanie należy stosować, gdy:
Konieczna jest weryfikacja integralności danych (np. sprawdzenie pod kątem uszkodzenia lub manipulacji).
Hasła muszą być bezpiecznie przechowywane (nie szyfrowane ani w postaci zwykłego tekstu).
Podpisy cyfrowe i certyfikaty są zaangażowane (hashowanie zapewnia autentyczność dokumentu).
Szybkie porównywanie danych jest konieczne (np. w tablicach skrótów lub pamięciach podręcznych).
Haszowanie nie jest odpowiednie, gdy później trzeba odzyskać oryginalne dane — do tego służy szyfrowanie.