Ochrona Systemów Informacyjnych
Transkrypt
Ochrona Systemów Informacyjnych
Ochrona Systemów Informacyjnych Elementy Kryptoanalizy Informacje podstawowe ● ● Kryptoanaliza – dział kryptografii zajmujący się łamaniem szyfrów. W zależności od rodzaju informacji dostępnych w trakcie kryptoanalizy można rozróżnić kilka podstawowych rodzajów ataków mających na celu złamanie szyfrów: ● Ciphertext only ● Known plaintext ● Chosen plaintext ● Chosen ciphertext Atak typu ciphertext-only ● ● ● Dostępny jest pewien podzbiór kryptogramów, bez odpowiadających im tekstów jawnych Celem ataku jest znalezienie klucza albo przynajmniej tekstów jawnych Kryptogramy mogą pochodzić z podsłuchu dostępnych kanałów informacyjnych Alice Bob Atak typu known plaintext ● ● ● Pewne pary tekst jawny-kryptogram są znane, Pary te nie mogą być wybierane przez atakującego Celem ataku jest znalezienie klucza Alice Bob Ataki typu chosen plaintext ● ● Atakujący dysponuje kryptogramem dla dowolnie wybranego tekstu jawnego Szukamy klucza mając dostępne urządzenie kryptograficzne KEY Atak typu chosen ciphertext ● ● Atakujący może uzyskać tekst jawny dla dowolnego kryptogramu. Atakujący ma możliwość deszyfrowania przy pomocy urządzenia kryptograficznego KEY Uwarunkowania dodatkowe ● ● Nawet gdy atak wymaga bardzo dużo czasu i mocy obliczeniowej, można go zrealizować w określonych okolicznościach. Przykłady: Wirusy – pozwalają na korzystanie z mocy obliczeniowych zainfekowanych komputerów – po zarażeniu wirusy wykorzystują momenty słabszego obciążenia maszyny do wykonywania obliczeń. Po sukcesie wynik może być wysłany bądź automatycznie bądź z nieświadomą ingerencją użytkownika do hackerów. Uwarunkowania dodatkowe ● „Chińska ruletka” - każdy odbiornik TV w Chinach może być wyposażony w układ łamiący szyfry -dane mogą być przesyłane jako teletekst. Każdy odbiornik odpowiada za oddzielna część algorytmu. W przypadku znalezienia klucza – pojawia się komunikat na ekranie telewizora z informacją o kluczu. Wtedy użytkownik może być proszony o kontakt z „dostawcą loterii” i po podaniu klucza może odebrać nagrodę. Kryptoanaliza różnicowa ● ● ● ● Kryptoanaliza różnicowa – metoda ataku kryptologicznego opracowana niezależnie przez różnych kryptologów ale po raz pierwszy upubliczniona w 1990 roku przez Eli Bihama i Adi Shamira. Polega na porównywaniu dwóch szyfrogramów, które powstały w wyniku zaszyfrowania dwóch, różniących się w pewien szczególny sposób, tekstów jawnych tym samym kluczem. Wymyślenie kryptoanalizy różnicowej było przełomowym wydarzeniem dla kryptologii, gdyż po raz pierwszy metoda ta oferowała złamanie DES-a szybciej niż metoda brute force. Jest to atak z wybranym tekstem jawnym (chosen plaintext) - w przypadku DES-a potrzebuje ona ponad 72 biliardy tekstów jawnych - podczas gdy z zastosowaniem kryptoanalizy różnicowej udało się zredukować ich liczbę do ponad 140 miliardów tekstów jawnych. Chociaż jej odkrywcy przygotowali podstawy teoretyczne, opublikowali je i sprawdzili na niepełnych (mniej niż szesnastorundowych) wersjach DES-a to jednak algorytm opierający się na tej metodzie dla pełnego DES-a okazał się mniej efektywny niż metoda brute force. Po opublikowaniu prac Bihama i Shamira NSA oświadczyła, że ta metoda znana była jej już w latach 70 i dlatego S-BOXy przeprojektowano tak, aby uodpornić je na ten rodzaj ataku oraz zaproponowano w tym celu właśnie 16, a nie mniej rund. Kluczowa obserwacja ● ● ● Stosując operację XOR z bitami klucza K otrzymujemy z ciągów X i Y ciągi (X xor K) i (Y xor K) będąc danymi wejściowymi dla S-boxów. (X xor K) xor (Y xor K) = X xor Y Zatem różnica między danymi wejściowymi Sboksów jest taka sama jak różnica pomiędzy X i Y. Zatem nie znając danych wejściowych dla Sboxów, jakie powstają w przypadku X i Y, możemy łatwo obliczyć ich różnicę Kryptoanaliza liniowa Kryptoanaliza liniowa ● Kryptoanaliza liniowa - wprowadzona przez M. Matsui, polega na aproksymacji szyfru za pomocą liniowej funkcji boolowskiej. Na podstawie tej aproksymacji, przy znajomości par tekst jawny - szyfrogram, możliwe jest znalezienie bitów klucza. Atak typu brute-force ● ● określenie algorytmu, który opiera się na sukcesywnym sprawdzeniu wszystkich możliwych kombinacji w poszukiwaniu rozwiązania problemu, zamiast skupiać się na jego szczegółowej analizie. Jest to zwykle nieoptymalna, ale najprostsza do zaimplementowania i najbardziej skuteczna metoda postępowania (ponieważ teoretycznie pozwala ona złamać każde hasło – praktycznie, w zależności skomplikowania hasła - może to być bardzo długi czas (np.dłuższy niż istnieje Wszechświat)). W zależności od kontekstu, w którym termin brute force zostaje użyty, może mieć on nieznacznie różne definicje. Kryptoanaliza statystyczna ● ● ● Zbiór metod kryptoanalitycznych opierających się na fakcie nierównomiernego występowania poszczególnych liter i sylab w językach naturalnych. Powoduje to również nierównomierny rozkład liter i zlepków literowych w tekście zaszyfrowanym. Na ataki z tej grupy podatne są szczególnie szyfry podstawieniowe. Obecnie historyczna wersja kryptoanalizy statystycznej ma marginalne znaczenie ze względu na praktyczne wycofanie z użycia szyfrów podatnych na łamanie tymi metodami. Jednak metody statystyczne w kryptoanalizie przeżywają swój renesans ze względu na znaczne ilości informacji, jakie są szyfrowane współcześnie. Daje to olbrzymie próbki statystyczne umożliwiające ataki kryptoanalityczne, co nie byłoby możliwe w wypadku szyfrogramów składających się jedynie z kilkuset znaków. Typowymi przykładami są: analiza entropii, analiza współinformacji (mutual information), poszukiwanie kolizji. Kryptoanaliza statystyczna jest obecnie podstawowym narzędziem służącym sprawdzaniu jakości algorytmów szyfrujących. Ataki statystyczne ● Ataki statystyczne - to zespół ataków na szyfry, których wspólna cecha jest wykorzystanie informacji statystycznych na temat struktury tekstu jawnego. Historycznie najstarszym przykładem takiego ataku jest np. wykorzystanie następującego sposobu: ● ● ● ● ● ● ● należy wyznaczyć rozkład znaków w zaszyfrowanym tekście i porównać z rozkładem w dowolnym tekście jawnym z tego samego języka (najlepiej, ale niekoniecznie, tego samego autora na podobny temat). Przy dłuższym tekście tajnym pozwala to na idealne rozszyfrowanie. Inne metody mogą polegać na poszukiwaniu takich statystycznych własności tekstu jawnego, które pomimo zastosowania algorytmu szyfrowania ukrywającego częstości znaków tekstu jawnego nadal są możliwe do odtworzenia na podstawie szyfrogramu (porównaj: test kappa, mutual information, entropia) Współcześnie ataki tego rodzaju są niezmiernie ważne i popularne, a to z następujących powodów: ilości informacji szyfrowanej (szyfrogramów) dostępnych współcześnie są olbrzymie. Na przykład zaszyfrowanie jednego średniej wielkości pliku Worda dostarcza tyle informacji co ok. 600 stron druku (strona wydruku ASCII to ok. 1KB) informacje szyfrowane zwykle posiadają bardzo bogatą i ściśle określoną strukturę, np. bity w plikach skompresowanych spełniają szereg znanych prawideł statystycznych, ich zaszyfrowanie ułatwia złamanie szyfru. wykonanie ataku statystycznego często nie wymaga znajomości szczegółów algorytmu szyfrowania, wystarczy ogólna znajomość do jakiej rodziny algorytmów należy zastosowany algorytm; zgodnie z współczesnym paradygmatem kryptologii, bezpieczeństwo szyfru leży we właściwym wyborze klucza. Jednak ludzie mają tendencję do nieprawidłowej oceny losowości procesów, i znane są prawidłowości statystyczne które dają się rozpoznać jeśli klucz nie jest generowany bezpiecznym kryptologicznie generatorem losowym, lecz przez człowieka. W pewnych sytuacjach wystarcza to do przeprowadzenia ataków słownikowych, niekiedy do ataków statystycznych. ● Ciekawym aspektem odporności na atak brute force jest następująca cecha: algorytm szyfrowania jest tym odporniejszy na atak brute force im wolniej działa. Jeśli zatem zaszyfrowanie nawet niewielkiego jawnego komunikatu wymaga dużej aktywności obliczeniowej i czasu np. rzędu 1 s, to atak brute force usiłujący sprawdzić wynik szyfrowania tekstu jawnego w celu odgadnięcia klucza straci nieporównanie więcej czasu przeszukując zbiór możliwych kluczy, niż w wypadku szybkiego algorytmu. Z punktu widzenia użytkownika niska szybkość szyfrowania może wydawać się wadą, a w pewnych wypadkach nawet ograniczać możliwość użycia algorytmu (np. szyfrowanie transmisji dźwięku). Atak w oparciu o słabość algorytmu ● Najważniejszy, podstawowy rodzaj ataku kryptologicznego. Polega na wykorzystaniu słabości algorytmu szyfrowania, przez co uzyskuje się pewną wiedzę na temat zaszyfrowanego tekstu, co zwykle pozwala przeprowadzić następne kroki w deszyfracji aż do częściowego lub całkowitego odtworzenia informacji. Tęczowe tablice ● Tęczowe tablice (ang. rainbow tables) – baza skrótów wykorzystywana w łamaniu haseł zakodowanych jednokierunkową funkcją skrótu. Pozwala na zaoszczędzenie mocy obliczeniowej koniecznej do złamania hasła metodą brute force. Jednym z pionierów tej techniki był Philippe Oechslin z Politechniki w Lozannie. ● ● ● Zwykłe bazy danych skrótów zajmują setki gigabajtów, przez co są nieefektywne. Tęczowa tablica jest tworzona przez zapisywanie łańcuchów (ang. chains) ze skrótów z możliwych haseł. Dzięki temu zapisywany jest jeden skrót na kilkaset, a nawet kilka tysięcy wygenerowanych. Czas łamania hasła skraca się przez to do kilkudziesięciu sekund na potężnych komputerach. Tęczowe tablice pozwalają na złamanie większości popularnych funkcji skrótu, w tym MD5, SHA-1, NTLM czy Cisco Pix. Obrona ● ● Dobrym sposobem na zabezpieczenie się przed tego typu atakiem jest stosowanie soli (ang. salt), czyli losowo generowanej wartości dodawanej jako argument funkcji skrótu i zapisywanej obok wartości skrótu. Sprawia to, że dla każdej soli funkcja skrótu jest inna. Żeby złamać taki skrót cracker musiałby posiadać tęczową tablicę dla każdej możliwej soli, co jest niepraktyczne. Większość dystrybucji GNU/Linuksa i systemów BSD wykorzystuje sól do zapisywania haseł użytkowników, funkcja ta jest oferowana przez pakiet shadow. Z kolei większość aplikacji internetowych w PHP wykorzystuje do kodowania haseł użytkowników zwykłe MD5, co ułatwia złamanie hasła. Kleptografia ● Metoda przeprowadzania ataku poprzez kradzież klucza