Kryptografia

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)

bit 1bit 0bit inny niż w A

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:

  1. Podpis rundySieć drand podpisuje numer rundy (podpis BLS)
  2. SHA-256Skrót podpisu to 256 bitów losowości rundy
  3. StrumieńSHA-256(nazwa ‖ losowość ‖ licznik) daje kolejne bloki
  4. LiczbaBlok zamieniony na zakres metodą odrzucania
  5. DowódKażdy przeliczy wynik na stronie weryfikacji
Każda strzałka z SHA-256 jest powtarzalna: każdy, kto zna dane wejściowe, dostanie ten sam wynik
  • 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 sha256sum w terminalu – nie musisz wierzyć stronie.

Powiązane narzędzia