Funkcja skrótu (ang. hash function) to algorytm, który bierze dowolne dane — hasło, plik, cały film, jedno słowo — i zwraca z nich krótki ciąg znaków o stałej długości, zwany skrótem (hash, digest). Niezależnie od tego, czy wrzucisz literę a, czy obraz ISO o wadze 4 GB, na wyjściu dostaniesz wartość tej samej długości — np. 256 bitów dla SHA-256. Zmienisz w danych jeden bit, a skrót zmieni się nie do poznania (to tzw. efekt lawinowy).
Kluczowa cecha: funkcja działa w jedną stronę. Z danych łatwo policzysz skrót, ale ze skrótu nie da się praktycznie odtworzyć danych wejściowych. To dlatego skróty świetnie nadają się do dwóch zadań: sprawdzania, czy dane nie zostały zmienione (integralność), oraz przechowywania haseł bez trzymania ich w formie jawnej.
Jak to działa w praktyce
Gdy logujesz się na stronę, serwer nie trzyma Twojego hasła. Trzyma jego skrót. Przy logowaniu liczy skrót z tego, co wpisałeś, i porównuje z zapisanym. Zgadza się — wpuszcza. Dzięki temu po wycieku bazy atakujący nie dostaje gotowych haseł, tylko ich skróty.
Druga klasyka to weryfikacja plików. Pobierasz obraz systemu i sprawdzasz, czy nie został podmieniony albo uszkodzony w transmisji. W terminalu na Linuksie wygląda to tak:
sha256sum debian-12.iso
Dostajesz długi ciąg szesnastkowy, który porównujesz z wartością podaną na stronie wydawcy. Identyczny — plik jest oryginalny. Różny choćby o jeden znak — coś jest nie tak.
Częste błędy i mity
Nie używaj MD5 ani SHA-1 do niczego, gdzie liczy się bezpieczeństwo. Oba mają udowodnione kolizje (dwa różne pliki dają ten sam skrót), więc nadają się co najwyżej do sumy kontrolnej przy braku złych intencji. Do integralności bierz SHA-256 lub nowszy.
Drugi grzech to haszowanie haseł zwykłym SHA-256. Jest za szybkie — atakujący policzy miliardy skrótów na sekundę i przeleci słownik w minuty. Do haseł używasz wolnych, dedykowanych funkcji jak bcrypt, scrypt czy Argon2, i zawsze z solą (losowy dodatek do każdego hasła), żeby identyczne hasła nie miały identycznych skrótów.
I pamiętaj: funkcja skrótu to nie szyfrowanie. Szyfrowanie da się odwrócić kluczem — skrót z definicji nie. Jeśli ktoś obiecuje „odszyfrowanie hasła ze skrótu”, w rzeczywistości po prostu zgaduje.
Pojęcia powiązane
Warto znać: kolizja, sól (salt), bcrypt i Argon2, SHA-256, HMAC (skrót z kluczem do uwierzytelniania), tablice tęczowe (rainbow tables) oraz integralność danych.