Cryptology Academy · Lekcja

Meet-in-the-middle i kompromisy czas–pamięć

Zaatakować double-DES metodą MITM i poznać tablice Hellmana

Lekcja 4 z 413 kroki

Meet-in-the-middle i kompromisy czas–pamięć to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 4 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.

Atak spotkania pośrodku (MITM)

Ataki MITM dzielą szyfr na dwie połowy i atakują je niezależnie. Atakujący buduje tabelę od jednego końca, a następnie od drugiego końca szuka dopasowania. Zmniejsza to złożoność ataku z O(2^{2n}) do O(2^n) kosztem pamięci O(2^n).

Łamanie Double-DES

Double-DES stosuje DES dwukrotnie: C = DES_{K2}(DES_{K1}(P)). Przestrzeń kluczy: 2^{112}. Atak MITM: dla wszystkich 2^{56} wartości K1 oblicz DES_{K1}(P) i zapisz wynik. Dla wszystkich 2^{56} wartości K2 oblicz DES_{K2}^{-1}(C) i wyszukaj wynik w tabeli. Dopasowanie → kandydat pary (K1, K2). Łącznie potrzeba jedynie 2^{57} operacji.

Algorytm MITM

Krok 1: zaszyfruj tekst jawny P za pomocą wszystkich możliwych wartości K1 → tabela T[DES_{K1}(P)] = K1. Krok 2: dla każdej wartości K2 odszyfruj szyfrogram C: v = DES^{-1}_{K2}(C). Sprawdź, czy v ∈ T. Jeśli istnieje T[v] = K1, zweryfikuj parę (K1, K2) na drugiej parze tekstu jawnego i szyfrogramu. Należy oczekiwać 1–2 fałszywych dopasowań i je odrzucić.

Odporność Triple-DES

Triple-DES (3DES) używa trzech kluczy K1,K2,K3: C = DES_{K3}(DES^{-1}_{K2}(DES_{K1}(P))). Atak MITM nadal ma zastosowanie, ale jest mniej skuteczny: w przypadku dwukluczowego 3DES (K3=K1) wymaga pracy rzędu 2^{112}. W przypadku trzykluczowego 3DES istnieje atak MITM o koszcie 2^{112}, co wyjaśnia, dlaczego 3DES zapewnia jedynie około 112 bitów efektywnego bezpieczeństwa mimo klucza 168-bitowego.

Kompromis czas–pamięć Hellmana

Hellman (1980) zaproponował wstępne obliczanie tabeli łańcuchów (start_point, end_point) w celu przyspieszenia wyszukiwania kluczy offline. Dla docelowego skrótu lub szyfrogramu należy przeszukać tabelę Hellmana pod kątem łańcucha, który go zawiera. Kompromis: P = N (czas × pamięć = stała przestrzeni). To rozwiązanie stanowi podstawę tęczowych tablic.

Tęczowe tablice

Tęczowe tablice (Oechslin, 2003) udoskonalają tablice Hellmana, używając różnych funkcji redukcji na każdej pozycji łańcucha, co eliminuje fałszywe alarmy (połączone łańcuchy). Są skuteczne w łamaniu niesolonych skrótów haseł. Wyszukiwanie zajmuje O(table_size/chain_length) czasu.

Udaremnianie działania tęczowych tablic za pomocą soli

Sól to losowa wartość dołączana do hasła przed obliczeniem skrótu: H(salt||password). Różne sole dają różne skróty dla tego samego hasła — tęczowa tablica dla „password” jest bezużyteczna, jeśli użyto innej soli. Sole muszą być przechowywane razem ze skrótem.

MITM w harmonogramie klucza AES

Ataki MITM na AES-128 (10 rund) dzielą znane konstrukcje w rundzie 5: pięć rund jest szyfrowanych w przód, pięć rund odszyfrowywanych wstecz, a następnie następuje spotkanie pośrodku łańcucha. Najlepszy znany atak, biclique, zmniejsza koszt z 2^{128} do 2^{126.1} — nie jest praktyczny, ale pokazuje, że AES nie ma marginesu bezpieczeństwa wobec podejść typu MITM.

MITM dla preobrazu funkcji skrótu

W przypadku funkcji skrótu Merkle-Damgarda MITM może dla niektórych konstrukcji znaleźć preobrazy szybciej niż metodą brute force. Atak polega na zbudowaniu tabeli z bloków wiadomości, zaczynając od IV, a następnie na wyszukiwaniu wstecz od docelowego skrótu. W przypadku SHA-256 z pełną liczbą rund nadal jest to około 2^{255} — bez poprawy względem brute force.

Atak typu dissection

Atak dissection uogólnia MITM na podział na r części. Przy podziale szyfru na 3 części należy zaszyfrować w przód 1/3 rund, spotkać się pośrodku łańcucha, a następnie odszyfrować wstecz 1/3 rund. Wymaga to czasu O(2^{n*2/3}) i pamięci O(2^{n/3}) — jest to bardziej zrównoważony kompromis.

Wyprowadzanie klucza zapobiega atakom MITM

W protokołach atakom MITM można zapobiegać poprzez używanie długich kluczy wyprowadzanych za pomocą KDF z haseł o wysokiej entropii (zmniejsza to przestrzeń kluczy, którą można przeszukać), używanie tokenów sprzętowych (FIDO2), w przypadku których klucz nigdy nie opuszcza urządzenia, lub stosowanie uwierzytelniania kluczem publicznym (brak wspólnego sekretu do przeszukania).

Szybki test

Jaki jest poziom efektywnego bezpieczeństwa Double-DES (2x DES, łączny klucz 112-bitowy) wobec ataku MITM?

Podsumowanie

Ataki MITM dzielą szyfry na połowy, zmniejszając czas z 2^{2n} do 2^n przy użyciu pamięci 2^n. Łamią Double-DES, a w przypadku 3DES są ograniczone, lecz zapewniają mu jedynie 112 bitów efektywnego bezpieczeństwa. Tęczowe tablice wykorzystują logikę MITM do łamania haseł — zapobieganie temu wymaga stosowania soli. Następnie: ataki czasowe i ataki bocznokanałowe.

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 „Meet-in-the-middle i kompromisy czas–pamięć” jest bezpłatna?

Tak — pełny tekst „Meet-in-the-middle i kompromisy czas–pamięć” 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 „Meet-in-the-middle i kompromisy czas–pamięć”?

Zaatakować double-DES metodą MITM i poznać tablice Hellmana Ć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 4 z 4.

Ile czasu zajmuje lekcja „Meet-in-the-middle i kompromisy czas–pamięć”?

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