Hash / Hashing (Funkcja skrótu)
Hashowanie to przekształcenie danych dowolnej długości w skrót o stałym rozmiarze (hash). Dobra kryptograficzna funkcja skrótu jest deterministyczna, odporna na znalezienie drugiej wiadomości o tym samym skrócie (w praktyce) i jednokierunkowa: z hasha nie odtwarzasz wejścia inaczej niż przez zgadywanie.
Na blackweb.pl ważne rozróżnienie: hash to nie szyfrowanie. Szyfrowanie ma klucz i da się odwrócić. Hash hasła w bazie ma być trudny do odwrócenia nawet dla admina. Potocznie „zahashowane hasło” bywa mylone z „bezpieczne hasło”. Bezpieczeństwo zależy od algorytmu, soli i entropii secretu.
Do czego się używa
Integralność: pobierasz obraz ISO, porównujesz SHA-256 z publikacją na stronie. Inny hash = inny plik (podmiana, uszkodzenie). Podpisy cyfrowe liczą się na hashach dokumentów, nie na surowych gigabajtach. Łańcuchy bloków i deduplikacja też stoją na skrótach, ale to osobne historie.
Hasła: serwer trzyma hash (z solą, idealnie przez KDF w stylu argon2/bcrypt), przy logowaniu liczy skrót podanego hasła i porównuje. Wyciek tabeli nie powinien od razu oddawać plaintextu. Przy MD5 bez soli i hasłach ze słownika oddaje. Stąd rainbow table i offline brute force.
Właściwości, które się liczą
Efekt lawiny: drobna zmiana wejścia zmienia cały skrót. Kolizje: dwa różne wejścia, ten sam hash. Przy złamanych funkcjach (MD5, słabe użycia SHA1 w konkretnych kontekstach) kolizje przestają być teorią. Dlatego dobór algorytmu ma datę ważności. „Kiedyś SHA1 było OK” nie jest argumentem w 2026.
Przy hasłach liczy się też koszt: celowo wolna funkcja spowalnia GPU. Szybki SHA-256 sam w sobie jest zły jako KDF haseł, bo napastnik liczy miliardy prób tanio. Stąd osobna rodzina algorytmów do password hashing.
Hash a threat intel
W reportach o malware hash pliku (SHA256) identyfikuje próbkę. W dumpach kont hash hasła identyfikuje klasę problemu. Po SQLi albo innym wycieku pytanie „jaki hash?” decyduje, czy czeka Cię stuffing w tydzień, czy droższy cracking. Patrz wycieki danych.
Dla użytkownika: nie musisz liczyć bcryptów ręcznie. Musisz nie reuse’ować haseł i nie wierzyć, że „serwis hashuje” = „możesz spać”.
Checksum pliku i KDF hasła to ten sam rodzaj obiektu matematycznego w popularnym języku, ale inne wymagania inżynierskie. Plik ma być szybki do weryfikacji. Hasło ma być drogie do zgadywania. Mylenie tych dwóch zastosowań prowadzi do złych decyzji w kodzie i do złudnego spokoju po breechu.
Czego tu nie ma
Nie ma tabeli „wybierz algorytm na egzamin” ani instrukcji crackowania. Jest mechanizm i typowe nieporozumienia (hash ≠ szyfr), bo bez tego reszta słownika o hasłach się sypie.