SHA-256 i efekt lawiny: jak działa funkcja skrótu
Funkcja skrótu to odcisk palca danych: krótki, stały i niepodrabialny. Zmień jedną literę i zobacz, jak połowa z 256 bitów skrótu zmienia się w nieprzewidywalnych miejscach.
Odcisk palca dowolnych danych
Funkcja skrótu zamienia dane dowolnej długości – słowo, książkę, plik filmu – w krótki ciąg o stałej długości. SHA-256 daje zawsze 256 bitów, zapisywanych zwykle jako 64 znaki szesnastkowe. Te same dane dają zawsze ten sam skrót, więc działa on jak odcisk palca: pozwala sprawdzić, czy dwie rzeczy są identyczne, bez porównywania ich w całości.
Dobra kryptograficzna funkcja skrótu ma trzy cechy:
- Jednokierunkowość. Ze skrótu nie da się w praktyce odtworzyć danych – nie znamy sposobu lepszego niż zgadywanie.
- Odporność na kolizje. Nie znamy sposobu na znalezienie dwóch różnych danych o tym samym skrócie SHA-256.
- Efekt lawiny. Najmniejsza zmiana danych zmienia średnio około połowy bitów skrótu, i to w nieprzewidywalnych miejscach.
Sprawdź sam
Efekt lawiny w SHA-256
SHA-256(A)
SHA-256(B)
Zmieniło się 0 z 256 bitów (0%). Skróty nie zdradzają, jak podobne były teksty.
Dlaczego połowa?
Gdyby skrót był ciągiem losowych bitów, każdy bit nowego skrótu zgadzałby się ze starym z prawdopodobieństwem pół na pół. Liczba zmienionych bitów układałaby się wtedy jak liczba orłów w 256 rzutach monetą: średnio 128, zwykle od 112 do 144. Dokładnie to widać na histogramie – ten sam dzwon co na desce Galtona. Skrót podobnych tekstów nie jest ani trochę podobny, więc nie zdradza niczego o danych.
Ile trwa zgadywanie?
Skrót ma 2²⁵⁶ możliwych wartości – to liczba 78-cyfrowa. Komputer sprawdzający miliard miliardów (10¹⁸) skrótów na sekundę potrzebowałby średnio około 10⁵¹ lat, żeby trafić konkretny skrót. Wszechświat ma niecałe 1,4 · 10¹⁰ lat. Dlatego skrót jest bezpieczny nawet wtedy, gdy wszyscy go znają.
Uwaga: skrót to nie szyfrowanie. Nie ma klucza i nie da się go „odszyfrować”. Krótkie i przewidywalne dane, np. słabe hasło, można jednak odgadnąć, sprawdzając skróty kolejnych kandydatów – stąd do przechowywania haseł używa się specjalnych, celowo wolnych funkcji.
SHA-256 w losowaniach na losowaliczba.pl
Skróty są wszędzie tam, gdzie losowość ma być sprawdzalna. Tak wygląda droga od rundy drand do liczby w weryfikowalnym losowaniu:
- Podpis rundySieć drand podpisuje numer rundy (podpis BLS)
- SHA-256Skrót podpisu to 256 bitów losowości rundy
- StrumieńSHA-256(nazwa ‖ losowość ‖ licznik) daje kolejne bloki
- LiczbaBlok zamieniony na zakres metodą odrzucania
- DowódKażdy przeliczy wynik na stronie weryfikacji
- Koło fortuny zapisuje w dowodzie skrót listy pól, więc po losowaniu nie da się jej niepostrzeżenie zmienić.
- Generator haseł łączy źródła entropii funkcją HKDF opartą na SHA-256, a pula z ruchów myszy przechodzi przez SHA-256 (zobacz skąd komputer bierze losowość).
- Każdą wartość możesz policzyć sam, np. poleceniem
sha256sumw terminalu – nie musisz wierzyć stronie.
Wypróbuj w praktyce
Weryfikacja losowania