Efekt lawinowy ("efekt obsunięcia się ziemi") jest właściwością szyfrów blokowych i algorytmów kryptograficznych funkcji haszowych. Jest on często pożądany w kryptografii. Efekt ten polega na tym, że drobna zmiana wejścia powoduje znaczącą, pozornie losową zmianę wyjścia — inaczej mówiąc, duża część bloków wyjściowych powinna się zmienić, nawet jeśli wejście zmienia się tylko nieznacznie. W dobrych szyfrach blokowych oznacza to, że niewielka zmiana klucza lub zwykłego tekstu powinna spowodować silną zmianę szyfru, uniemożliwiając w prosty sposób przewidywanie zależności między wejściem i wyjściem.
Efekt lawinowy zachodzi szczególnie wtedy, gdy algorytm stosuje wiele iteracji (rund), bo niewielkie różnice na wejściu szybko się rozprzestrzeniają. W idealnym przypadku każdy bit wyjścia zależy od każdego bitu wejścia — zmiana jednego bitu wejściowego powinna zmienić około połowy bitów wyjściowych.
Termin "efekt lawinowy" został po raz pierwszy użyty przez Horsta Feistela (Feistel 1973). Później koncepcja ta została zidentyfikowana przez Shannon jako własność zamieszania. W praktyce projektanci szyfrów łączą mechanizmy zamieszania (confusion) i dyfuzji (diffusion), aby uzyskać pożądany efekt lawinowy.
Definicja i kryteria formalne
W literaturze kryptograficznej efekt lawinowy bywa formalizowany przez kilka kryteriów:
- Strict Avalanche Criterion (SAC) — kryterium ścisłego efektu lawinowego: dla każdej pojedynczej zmiany bitu wejściowego każdy bit wyjściowy powinien zmieniać się z prawdopodobieństwem 1/2. W praktyce testuje się to statystycznie, oczekując, że przy zmianie jednego bitu około połowa bitów wyjściowych ulegnie odwróceniu.
- Bit Independence Criterion (BIC) — kryterium niezależności bitów: zmiany poszczególnych bitów wyjściowych powinny być niezależne od siebie wtedy, gdy zmieniany jest pojedynczy bit wejściowy. BIC jest silniejszym wymaganiem niż SAC.
Znaczenie w projektowaniu
Jeżeli szyfr blokowy lub funkcja kryptograficznego haszu nie spełnia w znacznym stopniu efektu lawinowego, to ma on słabą randomizację. Tak więc kryptoanalityk może sporządzać prognozy dotyczące wejścia, jeśli podano tylko wyjście. Może to wystarczyć do częściowego lub całkowitego przerwania (złamania) algorytmu. Silny efekt lawinowy utrudnia prowadzenie ataków różnicowych i liniowych, ponieważ małe różnice wejściowe powodują złożone i trudne do przewidzenia zmiany wyjściowe.
W praktyce projektowania szyfrów i funkcji haszujących realizuje się efekt lawinowy poprzez:
- stosowanie wielu rund (iteracji),
- warstw nieliniowych (np. S-box) dla uzyskania zamieszania,
- silnych warstw dyfuzji (przestawienia, mieszanie kolumn itd.),
- odpowiedniego schematu generowania kluczy (key schedule).
Testowanie i metryki
Typowe testy efektu lawinowego obejmują:
- zamianę kolejno każdego bitu wejściowego i pomiar Hammingowej odległości między wyjściami (oczekuje się około połowy bitów zmienionych),
- statystyczne eksperymenty z wieloma losowymi wejściami i analizą rozkładu liczby zmienionych bitów (np. testy zgodności z rozkładem dwumianowym),
- badanie niezależności bitów wyjściowych (BIC) oraz analizę korelacji.
Przykłady i ograniczenia
Wiele nowoczesnych algorytmów (np. AES, rodzina SHA-2/3) projektowano z myślą o silnej dyfuzji i zamieszaniu, aby uzyskać dobry efekt lawinowy. Starsze konstrukcje także wykazywały efekt lawinowy, jednak niektóre z nich (np. DES, MD5) mają inne słabości kryptograficzne mimo zadowalającego lokalnego efektu lawinowego.
Ważne ograniczenia i uwagi:
- Efekt lawinowy jest konieczny, ale nie wystarczający — sam silny efekt lawinowy nie gwarantuje odporności na wszystkie ataki; konieczne są także inne właściwości kryptograficzne (np. brak struktur sprzyjających kolizjom, wysoka nieliniowość, bezpieczny key schedule).
- Komponenty implementacyjne — słaba implementacja (np. podatna na boczne kanały) może zniweczyć korzyści wynikające z dobrego projektu algorytmu.
- Kompleksowość vs. wydajność — zwiększanie liczby rund lub złożoności warstw może poprawić efekt lawinowy, ale podnosi koszt obliczeniowy; projektanci muszą znaleźć kompromis między bezpieczeństwem a wydajnością.
Podsumowując, efekt lawinowy to kluczowa cecha pożądana w projektowaniu szyfrów blokowych i funkcji haszujących: sprawia, że nawet drobna zmiana wejścia prowadzi do zasadniczo innego wyjścia, utrudniając kryptoanalityczne wnioskowanie i zwiększając odporność algorytmów na typowe ataki.

