Atak na Two-Time Pad

Jest ogólną zasadą kryptografii, że nie można używać tego samego strumienia znaków klucza szyfrującego więcej niż jeden raz. W przeciwnym wypadku, szyfr staje się podatny na ataki ze znanym szyfrogramem.

Poniższy przykład pokazuje, jakie są skutki zastosowania dwukrotnie tych samych bajtów klucza do zaszyfrowania danych przy użyciu szyfru OTP:

c1 <- m1 XOR PRG(k)
c2 <- m2 XOR PRG(k)

Podsłuchawszy obie zaszyfrowane wiadomości, ewentualny napastnik mógłby wtedy złamać szyfr za pomocą prostego sumowania kolejnych bajtów zaszyfrowanych tekstów:

c1 XOR c2 = m1 XOR PRG(k) XOR m2 XOR PRG(k) = m1 XOR m2

Otrzymany ciąg bajtów jest tworzony jedynie przez znaki z obu oryginalnych wiadomości. Dzięki temu, że zarówno w kodowaniu ASCII, jak i w językach mówionych występuje wystarczająco dużo redundancji, atakujący jest w stanie odgadnąć oryginalną wiadomość:

m1 XOR m2 -> m1m2

Obecnie, w dobrze zaprojektowanych szyfrach symetrycznych, algorytmy dołączają do bitów sekretnych kluczy szyfrujących dodatkowe unikalne (dla każdej porcji szyfrowanych informacji) znaki. W najprostszym przypadku może to być zwykły licznik, zapisywany na kilku kolejnych bajtach i zwiększający się o 1 w każdej iteracji działania algorytmu szyfrującego. Gwarantuje to skuteczne zabezpieczenie wiadomości, bez ryzyka powtórzenia się sekretnych bitów klucza.

Projekt Venona

Podczas II Wojny Światowej i po jej zakończeniu setki kryptologów agencji wywiadowczych Stanów Zjednoczonych i Wielkiej Brytanii współpracowały przeciwko siatkom szpiegowskim Związku Radzieckiego. W tym celu zbierano i analizowano przesyłane przez radzieckich szpiegów wiadomości. Najważniejsze informacje wysyłane przez nich były szyfrowane za pomocą szyfru OTP.

Cześć wysyłanych wiadomości stała się możliwa do złamania, z powodu poważnego błędu po stronie radzieckiej, polegającego na wielokrotnym wykorzystaniu tych samych stron ksiąg kodowych, zawierających znaki klucza szyfrującego (działo się tak z powodów opóźnień w dostarczaniu nowych ksiąg, zawierających nowe znaki kluczy szyfrujących). Zgodnie z założeniem, każda strona księgi kodów powinna była zostać zniszczona zaraz po jej użyciu.

W ten sposób złamano główne założenie szyfru OTP i umożliwiono drugiej stronie odniesienie wielu sukcesów w walce wywiadów jaka miała miejsce w czasie całej Zimnej Wojny.

MS-PPTP

PPTP (ang. Point to Point Tunnelling Protocol) to jeden z protokołów komunikacyjnych, umożliwiających tworzenie wirtualnych prywatnych sieci (VPN, ang. Virtual Private Network) wykorzystujących technologię tunelowania. Implementacja tego protokołu przez Microsoft była swego czasu jedną z najbardziej popularnych (z racji zaimplementowania w Windowsach 98 i NT) i jednocześnie zawierającą najwięcej błędów. Microsoft od 2012 roku uznaje MS-PPTP za skompromitowany i nie zaleca jego używania.

Jedną ze słabości MS-PPTP jest to, że klient i serwer dzielą ten sam sekretny klucz (zwykle jest nim hasło użytkownika) i obie strony używają go oddzielnie w taki sam niewłaściwy sposób do szyfrowania wysyłanych wiadomości, nie synchronizując poprawnie jego użycia między sobą.

Szyfrowanie w protokole MS-PPTP
Szyfrowanie w protokole MS-PPTP

Klient łączy porcje danych, które zamierza wysłać w większe wiadomości i szyfruje je za pomocą współdzielonego sekretnego klucza. Serwer przeprowadza takie same operacje, żeby wysyłać swoje wiadomości - łączy je, szyfruje używając tego samego klucza, a następnie wysyła do klienta.

Problem polega na tym, że ewentualny intruz może posłuchać wiadomości przesyłane w obie strony (wobec tego zawierające inne dane) i zaszyfrowane za pomocą takich samych bajtów klucza. Dysponując różnymi wiadomościami, zaszyfrowanymi za pomocą dokładnie tych samych bajtów strumienia klucza, można atakować szyfr i odtworzyć sekretne informacje.

802.11 WEP

802.11 to grupa standardów IEEE (ang. Institute of Electrical and Electronics Engineers) odnoszących się do działania sieci bezprzewodowych. W ich starszych wersjach, do szyfrowania transmisji bezprzewodowej zalecany był powstały w 1997 roku standard WEP (ang. Wired Equivalent Privacy).

Szyfrowanie WEP
Szyfrowanie WEP

Wiadomości wymieniane pomiędzy klientami i punktem dostępowym są szyfrowane za pomocą algorytmu strumieniowego szyfru symetrycznego RC4. Oba urządzenia współdzielą sekretny pięciobajtowy klucz szyfrujący, na podstawie którego generowany jest strumień bajtów klucza. Każda ze stron generuje samodzielnie taki sam strumień klucza. Dla zapewnienia tego, że każda wysyłana ramka będzie szyfrowana innymi bajtami, do każdego klucza dołączane są dodatkowe trzy bajty z wektora IV. IV jest dołączany w postaci jawnych danych do każdej zaszyfrowanej wiadomości, tak aby odbiorca mógł odszyfrować wiadomość.

Należy jednak zauważyć, wektor IV ma długość 24 bitów, więc po stosunkowo krótkim czasie jego wartości zaczynają się powtarzać. Następuje to po wysłaniu około 16 milionów ramek, czyli w przypadku dużego ruchu na routerze, po około 5 godzinach jego pracy. Ponadto, niektóre urządzenia resetują wektor IV w momencie restartu, co dodatkowo umożliwia szybsze uzyskanie powtarzających się wartości strumienia bajtów klucza.

Protokół WEP posiada jeszcze szereg innych wad. Zwykle do wypełnienia wektora IV używa się zwykłych liczników. Sprawia to, że bajty szyfrujące przesyłane dane są do siebie bardzo podobne. Dodatkowo, niektóre wartości wektora są uważane za słabe, ponieważ umożliwiają ataki na konkretne bajty sekretnego klucza szyfrującego. Wszystko to powoduje, że zabezpieczenia WEP można złamać obecnie w bardzo krótkim czasie (w ciągu paru minut).

W nowszych wersjach standardów IEEE, zalecane są nowsze protokoły zabezpieczające, WPA (ang. Wi-Fi Protected Access) oraz WPA2.

Atak KRACK

Innym przykładem ataku wykorzystującego podatności two-time-pad jest zaprezentowany w październiku 2017 roku atak KRACK. Z racji jego złożoności, poświęcona mu została oddzielna podstrona.