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