Cryptology Academy · Lekcja

Podstawy kryptoanalizy różnicowej

Poznać propagację różnic wejścia i wyjścia w celu atakowania szyfrów o zredukowanej liczbie rund

Lekcja 1 z 413 kroki

Podstawy kryptoanalizy różnicowej to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Czym jest kryptoanaliza różnicowa?

Kryptoanaliza różnicowa (Biham i Shamir, 1990) to atak z wybranym tekstem jawnym, który analizuje, jak różnice w parach tekstów jawnych propagują się przez szyfr. Znajdując różnice wejściowe, które z dużym prawdopodobieństwem powodują przewidywalne różnice wyjściowe, atakujący odzyskuje bity klucza metodami statystycznymi.

Definicja różnicy

Dla szyfrów opartych na XOR: różnica ΔX = X XOR X'. Dla szyfrów opartych na dodawaniu: różnica ΔX = X - X' mod 2^n. Różnice XOR są najczęstsze, ponieważ XOR komutuje z kluczowaniem za pomocą XOR (wpływ harmonogramu klucza znosi się w parach różnicowych).

Para różnicowa

Para różnicowa (P, P') ma różnicę wejściową ΔP = P XOR P'. Po zaszyfrowaniu otrzymujemy (C, C') z różnicą wyjściową ΔC = C XOR C'. Użyteczna różnica to ΔP → ΔC o dużym prawdopodobieństwie p — oznacza to, że wiele par (P, P') o różnicy ΔP daje różnicę wyjściową ΔC.

Tabela rozkładu różnicowego S-boxu

DDT (Differential Distribution Table) zlicza, dla każdej różnicy wejściowej Δx i różnicy wyjściowej Δy, ile wejść x spełnia warunek S(x) XOR S(x XOR Δx) = Δy. Podzielenie przez 2^n daje prawdopodobieństwo. Dobry S-box ma maksymalną wartość DDT równą 2 (prawdopodobieństwo 1/2^{n-1}) — nie występują w nim silne różnice.

Ścieżka różnicowa w szyfrze

Dla szyfru blokowego z r rundami znajdź sekwencję ΔP → ΔU1 → ΔU2 → ... → ΔU_{r-1}, w której prawdopodobieństwo przejścia w każdej rundzie jest znane. Pomnóż prawdopodobieństwa dla kolejnych rund: prawdopodobieństwo całkowite p = p1 * p2 * ... * p_{r-1}. Atak używa 2/p par do odzyskania klucza ostatniej rundy.

Atak na ostatnią rundę

Przy różnicy obejmującej r-1 rund i mającej duże prawdopodobieństwo zbierz N = 2/p par tekstów jawnych. Dla każdego kandydata na klucz ostatniej rundy K' odszyfruj oba szyfrogramy o jedną rundę, wykonaj XOR na wynikach i sprawdź, czy różnica odpowiada ΔU_{r-1}. Prawidłowy K' pasuje około ~N/2 razy, a nieprawidłowe klucze około ~N/2^{bit_size} razy.

Konstrukcja S-boxu AES

S-box AES to odwrotność multiplikatywna w GF(2^8), po której następuje transformacja afiniczna. Jego maksymalna wartość DDT wynosi 4 (na 256), co daje prawdopodobieństwo różnicowe ≤ 4/256 = 1/64 dla pojedynczego S-boxu. AES ma 4 S-boxy w każdej rundzie, ale konstrukcja Wide Trail gwarantuje, że pełne ścieżki różnicowe mają prawdopodobieństwo mniejsze niż 2^{-100}.

Strategia Wide Trail

Konstrukcja Wide Trail autorstwa Joana Daemena (używana w AES/Rijndael) definiuje liczbę rozgałęzień B dla MixColumns. Każda nietrywialna ścieżka różnicowa w jednej rundzie aktywuje co najmniej B aktywnych S-boxów. 4 rundy × 4 S-boxy na rundę gwarantują co najmniej ≥ 25 aktywnych S-boxów → prawdopodobieństwo < 2^{-100}.

Różnice obcięte

Różnice obcięte określają tylko część różnicy, na przykład które kolumny są aktywne, a nie dokładne wartości różnic. Umożliwiają ataki na większą liczbę rund, w przypadku których pełne różnice są zbyt słabe. Stosuje się je przeciwko szyfrom AES o zmniejszonej liczbie rund, SERPENT i innym szyfrom SPN.

Niemożliwe różnice

Niemożliwa różnica to para (ΔP, ΔC), która nie może wystąpić dla żadnego klucza. Każdy klucz, który odwzorowuje zaobserwowaną parę (P, P') o tej różnicy, zostaje wyeliminowany. Po zebraniu wystarczającej liczby par wszystkie nieprawidłowe klucze zostają wyeliminowane i pozostaje prawidłowy klucz.

Atak boomerangowy

Atak boomerangowy (Wagner, 1999) łączy dwie krótkie różnice w adaptacyjny atak z wybranymi tekstami jawnymi i szyfrogramami. Dzieli szyfr na dwie połowy, z których każda ma krótką różnicę o dużym prawdopodobieństwie, umożliwiając atak na większą liczbę rund, niż pozwalałaby na to pojedyncza różnica.

Szybkie sprawdzenie

Jaki jest cel tabeli rozkładu różnicowego (DDT) w kryptoanalizie?

Podsumowanie

Kryptoanaliza różnicowa wykorzystuje propagację różnic wejściowych do wyjściowych o dużym prawdopodobieństwie. AES jest na nią odporny dzięki zoptymalizowanemu pod kątem DDT S-boxowi i konstrukcji Wide Trail. Dalej: kryptoanaliza liniowa i tabele aproksymacji.

Bezpłatny start

Ucz się Cryptology Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
67
Lekcje
261

Często zadawane pytania

Czy lekcja „Podstawy kryptoanalizy różnicowej” jest bezpłatna?

Tak — pełny tekst „Podstawy kryptoanalizy różnicowej” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Podstawy kryptoanalizy różnicowej”?

Poznać propagację różnic wejścia i wyjścia w celu atakowania szyfrów o zredukowanej liczbie rund Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Podstawy kryptoanalizy różnicowej”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Podstawy kryptoanalizy różnicowej
  2. Kryptoanaliza liniowa i tablice aproksymacji
  3. Ataki urodzinowe i kolizyjne
  4. Meet-in-the-middle i kompromisy czas–pamięć
← Powrót do Cryptology Academy