Tablice Tęczowe

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

ATAK

Tęczowe tablice
SEBASTIAN CZARNOTA

– przyśpiesz
atak brute-force
Stopień trudności
Tęczowe tablice pozwalają przyspieszyć ataki brute-force,
eliminując potrzebę wykonywania w każdym kolejnym ataku tych
samych obliczeń poprzez zapamiętani części kluczowych danych.
Tablice znalezione w Internecie bywają jednak niekompletne lub
płatne, dlatego zobaczmy jak zrobić je samemu!

K
ażdy doskonale wie, że przechowywanie (zwany również wiadomością) i jest on
haseł w postaci jawnej nie jest deterministyczny, tj. jeden ciąg wejściowy
bezpieczne. Przyklejanie haseł do zawsze da taki sam ciąg wynikowy;
monitora, czy wkładanie pod klawiaturę jest • ciąg wynikowy (skrót) wydaje się być
zmorą osób odpowiedzialnych w firmach za ciągiem losowym – zależność między
bezpieczeństwo. Takie eksponowanie haseł jest ciągiem wejściowym (wiadomością)
wręcz proszeniem się o kłopoty. i skrótem jest tak skomplikowana, że
W systemach komputerowych jest nie jesteśmy w stanie odtworzyć ciągu
podobnie. Przechowywanie haseł w postaci wejściowego na podstawie ciągu
jawnej jest niebezpieczne, zwłaszcza gdy wynikowego – mówi się, że taka funkcja jest
hasła te przechowuje system operacyjny, który jednokierunkowa;
zajmuje się przydzielaniem praw użytkownikom. • skrót ma ustaloną długość w bitach (MD5
Najprostszym sposobem rozwiązania tego – 128 bitów, SHA-0 – 160 bitów, SHA-1
problemu wydaje się zaszyfrowanie hasła – warianty 224, 256, 384, 512 bitowe)
za pomocą szyfru symetrycznego. Jednak (Rysunek 1).
pojawia się problem: kryptosystem symetryczny
do szyfrowania wymaga... hasła, które Warto w tym miejscu wtrącić dygresję na temat
również trzeba byłoby w sposób bezpieczny nazwy funkcja skrótu (ang. message digest),
przechować w systemie operacyjnym. Nie ponieważ, jeśli skracamy na przykład hasło
rozwiązuje to jak widać problemu, ale go tajne_haslo to jego skrót MD5 wynosi 1b955
pogłębia. 38f3035f4cba2189716fd96173c, a więc jest
Z ARTYKUŁU dłuższy. Nazwa ma swoje uzasadnienie w tym,
DOWIESZ SIĘ Funkcje skrótu że funkcje skrótu projektowane były dla tworzenia
do czego służą funkcje skrótu, Dlatego postanowiono podejść do problemu krótkiego odpowiednika dużego dokumentu.
jak wykorzystać tęczowe w inny sposób. Użyto funkcji skrótu. Funkcja Skrót przydatny jest w procesie cyfrowego
tablice,
skrótu (funkcja haszująca, ang. hash function) podpisywania dokumentu, ponieważ działanie
jak zaprojektować skuteczną
tęczową tablicę. przyjmuje jako parametr dowolny ciąg binarny, algorytmów podpisywania jest bardzo powolne,
a jako wynik swojego działania zwraca inny a czas rośnie wraz ze zwiększeniem objętości
CO POWINIENEŚ ciąg binarny o następujących cechach: dokumentu, dlatego podpisuje się jedynie
WIEDZIEĆ skrót tego dokumentu. Do przechowywania
mieć ogólne pojęcie o • ciąg wynikowy (nazywany skrótem) haseł wykorzystano istniejące już rozwiązanie
przechowywaniu i przesyłaniu
haseł. jest zależny od ciągu wejściowego zwane funkcją skrótu, a nazwa już pozostała.

14 HAKIN9 12/2009
TĘCZOWE TABLICE

Czasem stosuje się określenie funkcja Wykorzystanie funkcji skrótu atak jest niepraktyczny. Niczym dziwnym
haszujące. Osoby zajmujące się tym Spójrzmy teraz jak funkcje skrótu jest, że złamanie pewnych algorytmów
zagadnieniem nie potrafią dojść do rozwiązują problem przechowywania kryptograficznych szacuje się na miliony lat.
porozumienia, która nazwa jest poprawna, hasła. Gdy użytkownik loguje się do Trzeba jednak pamiętać, że przy
o czym można przeczytać w Wikipedii, w systemu jest proszony o podanie obecnym postępie technicznym dostępna
dyskusji do tematu Funkcje skrótu. Polskie swojego hasła. System operacyjny moc obliczeniowa ciągle wzrasta. Jak
normy definiują jednak pojęcie funkcji interpretuje hasło użytkownika jako ciąg również stale ulepsza się i wynajduje
skrótu, dlatego będę się tym terminem binarny i poddaje go działaniu funkcji nowe algorytmy oraz następuje ciągły
posługiwał w dalszej części artykułu. skrótu (np. MD5). Teraz to ten skrót rozwój matematyki wyższej, która ma
Cechą funkcji skrótu jest jest porównywany z przechowywanym niebanalny wpływ na wydajność ataków
występowanie kolizji – czyli sytuacji, gdy skrótem hasła w systemie. Jeśli oba szyfry i funkcje skrótu. Dlatego tak ważne
skróty dwóch różnych wiadomości są skróty są takie same, następuje jest ich ciągłe udoskonalanie: zarówno
identyczne. Cecha ta jest bezpośrednim zalogowanie do systemu, jeśli nie, system mechanizmów, według których działają,
następstwem ustalenia długości skrótu odmówi użytkownikowi dostępu. jak i długości skrótu. Jest to o tyle ważne,
– ponieważ skoro można skracać Znając już zjawisko kolizji, wiemy, że nawet najlepiej zaprojektowana funkcja
(poddawać działaniu funkcji skrótu) że poprawne zalogowanie do systemu skrótu zostanie szybko złamana, gdy jej
wiadomość o dowolnym rozmiarze, do może wystąpić również wtedy, gdy skrót będzie zbyt krótki.
ciągu o z góry określonej długości, to użytkownik poda dowolne inne hasło,
muszą istnieć co najmniej dwie takie o takim samym skrócie. Wydaje się to Klasyczne ataki
wiadomości, które dają identyczny skrót niebezpieczne, ale pamiętajmy, że funkcja na skróty haseł
(działa tutaj twierdzenie zwane Zasadą skrótu jest funkcją jednokierunkową i W dalszej części artykułu będziemy
szufladkową Dirichleta) (Rysunek 2). znalezienie hasła na podstawie skrótu rozpatrywać atak polegający na
W kryptologii występowanie kolizji jest obliczeniowo trudne. Trudne, ale nie odzyskaniu hasła, z jego skrótu. Skróty
jest cechą niepożądaną, ponieważ niemożliwe. haseł są używane w czasie logowania
statystycznie znalezienie dowolnej Zanim przejdziemy do omówienia się zdalnie, w przypadku obecności
wiadomości, która daje określony ataków na funkcje skrótu, zauważmy specjalnego klienta. Użytkownik wtedy
skrót jest bardziej prawdopodobne, niż jeszcze kilka interesujących faktów. podaje swoje hasło w aplikacji klienckiej,
znalezienie dokładnie tej wiadomości, Obliczenie skrótu wiadomości powinno która skraca to hasło i w takiej postaci
której użyto do wygenerowania skrótu być szybkie i wydajne, natomiast przesyła do serwera (to jest znaczne
(dzieje się tak dlatego, gdyż istnieje więcej proces odwrotny musi być trudny uproszczenie, gdyż napastnik mógłby
niż jeden ciąg, dający ten sam skrót). obliczeniowo. Kryptologia określa procesy zrezygnować z użycia programu klienta,
Oznacza to, że aby zalogować się do trudne obliczeniowo jako takie, których a tylko przechwycić i przesłać sam
systemu, który przechowuje wyłącznie rozwiązanie, przy użyciu najlepszych skrót – w rzeczywistości stosuje się
skróty haseł użytkowników, można użyć znanych algorytmów i najlepszych bardziej zaawansowane protokoły, które
nie tylko hasła, które użytkownik sobie komputerów na świecie, biorąc pod uniemożliwiają takie nadużycie).
wybrał, ale również wszystkich innych uwagę wzrost ich wydajności w czasie, Hasła systemów operacyjnych
haseł, których skrót jest identyczny. Atak zajmie tak niewyobrażalnie długi czas, że również są przechowywane w postaci
kryptoanalityczny wykorzystujący tą cechę
funkcji skrótu nazywa się poszukiwaniem
przeciwobrazu (ang. preimage attack).
Kolizje w funkcjach skrótu ����������� ������

będą zawsze występowały.


����� �����������
Prostym sposobem na obniżenie
prawdopodobieństwa ich wystąpienia
jest wydłużenie skrótu. Zwiększa to ������ �����������

ilość różnych skrótów, zmniejszając


szansę na wystąpienie kolizji. Aktualnie ����� �����������
następuje zmiana standardowej
długości skrótu i zastępowanie starych,
������ �����������
niebezpiecznych funkcji skrótu nowymi.
Właśnie trwa konkurs na nowy standard
��� ���
funkcji skrótu SHA-3 organizowany
przez amerykańską agencję federalną
NIST (ang. National Institute of
Standards and Technology). Rysunek 1. Idea działania funkcji skrótu

12/2009 HAKIN9 15
ATAK
skrótów. Jednak zdobycie pliku, który rzeczywistości ich pełne przeprowadzenie kryptoanalityczne efekty. Jeszcze lepsze
przechowuje skróty, często wiąże się wymaga potężnej mocy obliczeniowej w efekty uzyskuje się, gdy znaleziony
z wtargnięciem do systemu ofiary, pierwszym przypadku i niewyobrażalnej zostanie błąd w implementacji algorytmu
więc odzyskiwanie hasła już nie jest przestrzeni dyskowej w drugim. Warto w konkretnej realizacji programowej, ale
potrzebne. Wyjątkiem jest sytuacja, gdy w tym miejscu podać pewne liczby, na to nie należy liczyć, gdyż błąd może
administrator systemu popełni błąd które uzmysłowią skalę problemu. 128- być naprawiony.
(lub zostanie do niego sprowokowany) bitowa funkcja skrótu (to znaczy taka, Kolejnym faktem jest, że nie musimy
i uda się bez włamywania na konto której skrót ma 128-bitów, wiadomość budować tablicy, dla wszystkich
administratora uzyskać ten plik. Metody może być dowolnej długości) posiada możliwych skrótów, ponieważ interesują
dalej opisane mogę wtedy zostać 2^128 różnych skrótów, daje to 6*10^23 nas jedynie hasła. Ilość wszystkich haseł
wykorzystane do eskalacji uprawnień petabajtów danych potrzebnych na do 10 znaków włącznie jest znacznie
w systemie i to w bardzo bezpieczny przechowanie tych wszystkich skrótów. mniejsza, niż liczba wszystkich skrótów,
sposób, bo offline. Jest to mniej więcej tyle petabajtów dla funkcji 128-bitowej. Dokładne
Dwa najprostsze pomysły ataku danych, ile wynosi szacowana liczba wyliczenia zależą od przyjętego zestawu
na funkcje skrótu nasuwają się chyba gwiazd we wszechświecie. A to tylko znaków.
każdemu: skróty! Drugie tyle zajmą hasła im
odpowiadające, a czas potrzebny, do Tęczowe tablice
• sprawdzanie wszystkich możliwych wygenerowania takiej tablicy będzie Tęczowe tablice to pomost między
haseł – skracanie ich i testowanie, liczony w milionach lat. przytoczonymi przeze mnie dwoma
czy dają pożądany skrót; Należy przy okazji sprostować, że są metodami ataku. Łączy w sobie zaletę
• zbudowanie ogromnej tablicy to wyliczenia teoretyczne, zakładające, przechowywania wyników, umożliwiającą
wszystkich haseł i odpowiadających że funkcja skrótu jest wyidealizowana wygenerowanie tablicy raz i korzystanie
im skrótów, posortowanie według w taki sposób, że nie da się jej budowy z niej w każdym następnym ataku oraz
skrótów i wyszukiwanie w tablicy. wewnętrznej użyć do znalezienia hasła, zmniejsza objętość tablic. Następuje
oraz że wykorzystuje wszystkie dostępne bardziej racjonalne wykorzystanie mocy
Są to metody pewne, czyli gdyby skróty. Rzeczywistość jest zupełnie obliczeniowej i pamięci.
udało się je przeprowadzić, istnieje inna. To właśnie analiza budowy funkcji Wyobraźmy sobie listę ciągów
stuprocentowa szansa na poprawne skrótu (i algorytmów kryptograficznych binarnych. Pierwszym elementem tego
znalezienie hasła. Jednak w w ogólności) daje najlepsze ciągu jest pewne hasło ze słownika
haseł. Drugim elementem jest skrót
tego hasła. Kolejnymi elementami
są: pewne hasło, wygenerowane na
����������� ������ podstawie poprzedzającego skrótu
i skrót tego hasła. Dalej podobnie,
����� �����������
hasło wygenerowane na podstawie
poprzedzającego skrótu i jego skrót,
������ ����������� itd. Należy sobie uzmysłowić, że hasła
generowane na podstawie skrótów, to
����� �������� ����������� nie są hasła, które po skróceniu dają
ten skrót, są to po prostu jakieś hasła
zależne od skrótu (Rysunek 3).
������ �����������
Generowaniem hasła ze skrótu
zajmuje się tak zwana funkcja
��� ���
redukująca. Może ona mieć dowolną
postać, ale warto, by zapewnić, aby
była w stanie wygenerować możliwie
Rysunek 2. Kolizja – dwie wiadomości mają jednakowy skrót najwięcej różnych haseł. Najprostszą

� � � � � �
����� ����������� ������ ����������� ��� �������� �����������

Rysunek 3. Łańcuch – podstawowa jednostka przechowywania danych w tęczowej tablicy. H – funkcja skrótu, R – funkcja
redukująca

16 HAKIN9 12/2009
TĘCZOWE TABLICE

funkcją redukującą może być funkcja, znajduje się w naszym łańcuchu. 5. otrzymane hasło skracamy
która będzie binarną reprezentację Ponieważ nie zapisaliśmy żadnych otrzymując inny skrót, ten skrót
skrótu zamieniać na znaki traktując je wartości pośrednich, będziemy opierać zapamiętujemy w zmiennej H,
jak kod ASCII. się na zapamiętanym, odległym skrócie. 6. przechodzimy do kroku 2,
Zapisujemy sobie początkowe Postępujemy zgodnie z algorytmem jak 7. gdy H jest równy końcowemu skrótowi
hasło takiego łańcucha i ostatni skrót. na Rysunku 4. łańcucha – łańcuch posiada szukane
Pośrednie hasła i skróty nie będą hasło,
zapisywane, bo jak się za chwilę okaże, 1. H – przyjmujemy za H szukany skrót, 8. gdy ilość skracań i redukcji
nie są potrzebne. Przydatna będzie 2. sprawdzamy, czy H jest równy przekroczyła długość łańcucha
jedynie informacja o liczbie par w całym końcowemu skrótowi łańcucha, – łańcuch nie posiada hasła.
łańcuchu. Taka para: hasło i odległy skrót 3. jeśli nie, sprawdzamy, czy ilość
jest bardzo interesująca. skracań i redukcji jest większa niż Jeśli w kroku drugim okaże się, że któreś
Wyobraźmy sobie, że chcemy długość łańcucha, H jest równe końcowemu skrótowi, to
znaleźć hasło odpowiadające skrótowi. 4. jeśli nie, to poddajemy nasz skrót mamy pewność, że w ciągu znajduje się
Najpierw musimy się upewnić, że H działaniu funkcji redukującej, hasło do naszego skrótu. Jeśli natomiast
szukane hasło odpowiadające skrótowi otrzymujemy w ten sposób hasło. wykonamy krok 3 więcej razy niż
wynosiła liczba par w całym łańcuchu, to
zaprzestajemy poszukiwań, bo łańcuch
���������������������
��������������������� hasła nie zawiera (Rysunek 5).
�����������������
Gdy już wiemy, że łańcuch
����������� zawiera hasło, przystępujemy do jego
odzyskiwania. W tym celu bierzemy z
����������������� pary zapamiętanej dla ciągu hasło i
��� poddajemy go cyklicznym skracaniom
i redukcjom. Kiedy natrafimy na
������
��� ������
poszukiwany skrót, to poprzednie hasło
���������
jest hasłem, które szukaliśmy!
��� ���
Pewnie niezrozumiałe jest teraz,
dlaczego od razu nie można było
��������������� �����������
������������� ������������� cyklicznie skracać i redukować. Już
śpieszę z wyjaśnieniem. Łańcuchów
Rysunek 4. Schemat sprawdzania, czy łańcuch zawiera skrót. Należy pamiętać, jest wiele, nawet bardzo wiele. Im
że redukowanie i skracanie wykonujemy tylko tyle razy, ile wynosi długość łańcucha więcej tym lepiej, gdyż mamy większe
(zapamiętana w czasie tworzenia) prawdopodobieństwo, że szukane hasło

R E K L A M A

12/2009 HAKIN9 17
ATAK
jest w naszym zbiorze. Cała siła tęczowych hasło, które już w innym łańcuchu zostało odstępach pojawiałyby się sekwencje
tablic zawiera się właśnie w ilości zawarte. Ponieważ funkcja redukująca tych samych skrótów i haseł (Rysunek 8).
łańcuchów i ich długości (Rysunek 6). jest jednakowa, wszystkie następujące Czy więc jesteśmy skazani na tak
Długość łańcucha to nic innego jak później hasła i skróty powtórzyłyby się! niedoskonałe narzędzie? Okazuje się,
ilość cyklicznych skracań i redukcji od Byłoby to ogromne marnotrawstwo że poradzono sobie w bardzo sprytny
pierwszego hasła do ostatniego skrótu. miejsca na dysku i mnóstwo zbędnych sposób z tymi problemami, poprzez
Im dłuższe łańcuchy, tym mniej miejsca obliczeń. Gdyby kolizje występowały wprowadzenie wielu różnych funkcji
zajmą tablice przy tej samej liczbie często, sporo danych byłaby zdublowana redukujących. Różnych, czyli takich które
haseł. Jednocześnie im dłuższe tablice, i tylko niepotrzebnie spowalniałaby użycie dla takiego samego skrótu zwracają różne
tym więcej mocy obliczeniowej będzie tęczowych tablic (Rysunek 7). hasła. Przychodzi nam zapewne na myśl
potrzebne do wyszukiwania w tablicy. To ciekawe, że kolizje, które są kilka sposobów ulokowania tych różnych
Należy więc znaleźć złoty środek. zjawiskiem niepożądanym w funkcjach funkcji redukujących. Trzy główne z nich to:
skrótu, utrudniają ataki metodą tęczowych
Kolizje i pętle tablic. Okazuje się, że funkcja skrótu • użycie za każdym razem innej funkcji
w tęczowych tablicach o licznych kolizjach sparaliżowałaby – bardzo nieefektywny sposób, gdyż
Wydaje się, że nasze tęczowe tablice działania tęczowej tablicy! Na domiar potrzeba przechowywania ogromnej
są już gotowe do pracy. Zastanówmy złego, gdyby w tym samym ciągu ilość funkcji redukujących przekracza
się jednak, co by się stało, gdybyśmy jakieś hasło wystąpiło dwa razy, to wielokrotnie rozmiar samej tęczowej
obliczając pewien łańcuch natrafili na otrzymalibyśmy zapętlenie – w równych tablicy;

� � � � � � �
������� ����������� ���� ����������� ����� ����������� ������ �����������

��� �����������


����������� � �����������
��������

� �
����������� ����� �����������


����������� � ����������� ��������

� �
����������� ������ �����������


����������� � ����������� �������

Rysunek 5. Przykład wyszukiwania hasła w jednym łańcuchu. W tablicy wykonujemy te porównania z wieloma skrótami kończącymi
łańcuchy

� � � � � �
����� ����������� ������ ����������� ��� �������� �����������

� � � � � �
������ ����������� ���� ����������� ��� ����� �����������

� � � � � �
�������� ����������� ��������� ����������� ��� ��������� �����������

� � � � � �
������ ����������� ������ ����������� ��� ������� �����������

Rysunek 6. Tęczowa tablica – w poziomie widzimy łańcuchy, a w pionie kolejno od lewej każda para stanowi warstwę

18 HAKIN9 12/2009
TĘCZOWE TABLICE

• użycie w każdym łańcuchu innej zarówno pamięciowy, jak i obliczeniowy, bo posortowana w porządku rosnącym
funkcji redukującej – patrząc na trzeba byłoby dla każdej warstwy tablicy czy malejącym;
tablicę, jednakowe funkcje redukujące wykonywać tyle redukcji i skróceń, ile jest • Proces generowania takich
byłyby ułożone w poziomie; wszystkich łańcuchów i każdy z wyników tablic można bardzo wydajnie
• użycie w każdym łańcuchu, każdej porównać z zapamiętanym skrótem. zaimplementować na nowoczesnych
funkcji redukującej dokładnie jeden Dlatego w tęczowych tablicach stosuje procesorach, ponieważ nietrudno
raz – takie ułożenie da pionowe się to drugie podejście. Używa się tylu zauważyć, że wygenerowanie
ułożenie jednakowych funkcji (ułożenie funkcji redukujących, ile wynosi długość każdego łańcucha będzie
w warstwy). łańcucha. Każda redukcja w łańcuchu jest wymagało identycznych operacji,
inna, jednak kolejność redukcji w każdym a różnica będzie jedynie w danych
Rozważmy dwa ostatnie sposoby. z nich jest jednakowa. Zauważmy teraz początkowych. Istnieją specjalne
Gdyby każdy łańcuch posiadał inną cechy takiego podejścia. Zjawisko pętli rozkazy popularnych procesorów
funkcję redukującą, rozwiązany zostałby jest całkowicie wyeliminowane, gdyż każda do pracy w trybie SIMD (ang. Single
definitywnie problem kolizji między funkcja redukująca jest inna i jest bardzo Instruction Multiple Data), z którym
łańcuchami. Nawet gdyby natrafiono na mała szansa, że choćby kilka haseł i mamy tutaj do czynienia. Rozkazy te
takie same hasło, które występowało w skrótów się powtórzy. Nadal może dojść są częścią między innymi zestawu
innym łańcuchu, to kolejne hasła i skróty do kolizji, ale jedynie wtedy spowoduje ona instrukcji SSE (ang. Streaming SIMD
były różne, gdyż już w kolejnym kroku ze powtórzenie wszystkich kolejnych haseł Extensions);
skrótu tego kolizyjnego hasła powstałyby i skrótów, gdy identyczne hasło znajduje • Na początku tworzenia tęczowej
różne skróty. Nie rozwiązuje to jednak się na tej samej pozycji w łańcuchu. tablicy tworzymy listę funkcji
problemu pętli, ponieważ w ramach Nietrudno obliczyć, że szansa na taką redukujących, następnie generujemy
jednego łańcucha funkcja jest jednakowa. kolizję zmniejsza się diametralnie wraz ze łańcuchy dbając tylko o różne
Podejście to ma jeszcze inne wady. wzrostem długości łańcucha. hasła początkowe, co nie nastręcza
Pierwszą jest konieczność wygenerowania To ostatnie podejście do doboru większych problemów, gdyż są one
funkcji redukującej dla każdego nowego funkcji redukujących ma szereg zalet: zapamiętywane w tęczowej tablicy;
łańcucha. Jest to z różnych względów • Możemy rozszerzyć zbiór funkcji
niepraktyczne, gdyż należy wtedy wraz • W czasie przeszukiwania jednej redukujących już po utworzeniu
ze wzrostem liczby łańcuchów pamiętać warstwy, potrzeba wykonać tęczowej tablicy i również wtedy
coraz więcej funkcji redukujących. jedną redukcję i jedno skracanie skorzystać z zalet trybu SIMD.
Natomiast gdy chcielibyśmy wyszukiwać oraz wyszukanie ciągu w liście
w tablicy, każda ta funkcja musiałaby być zapamiętanych skrótów. Zyskujemy O funkcjach redukujących
wykonana na poszukiwanym skrócie, gigantyczny wzrost szybkości Funkcje redukujące są kluczowym
wynik ponownie skrócony i dopiero tej operacji, natomiast operacja elementem tęczowych tablic. Od
wówczas porównany z przechowywaną wyszukiwania może być bardzo ich jakości zależy, czy nasze tablice
wartością. Powstaje więc duży narzut szybka, gdy lista skrótów zostanie uwzględnią prawdopodobne hasła czy

� � � � � �
����� ����������� ������ ����������� �������� ����������� ���

� � � � � �
����� ����������� ����� ����������� ������ ����������� ���

Rysunek 7. Przykład wystąpienia kolizji. Od haseł zaznaczonych na czerwono dalsze części łańcuchów są identyczne

� � � � �
����� ����������� ������ ����������� ��������

� � � � �
����������� ����� ����������� ������ ���

Rysunek 8. Przykład pętli. Ciągłe, cykliczne występowanie kilku haseł i skrótów

12/2009 HAKIN9 19
ATAK
427842A8A984FE86775D679D8061FECB → zapytania. Wybrana funkcja redukująca
427842A8A9 może wygenerować każde możliwe hasło
������������������������������

Czy to jest dobra funkcja redukująca? 6b611f64655f6861731f6f5f64616a1f →


Zdecydowanie nie, ponieważ dla tej funkcji każde_hasło_daję
���
jest tak naprawdę niewiele haseł, które
może wygenerować spośród wszystkich ale większość stanowić będą te, złożone
����������� ������������ ���� ��������������������� możliwych haseł. Poza tym hasła przez nią właśnie ze znaków niedrukowalnych,
� � �
zwracane składają się tylko z 16 znaków (10 gdyż jest ich po prostu więcej w tabeli
cyfr i 6 liter od A do F). Powinniśmy poszukać ASCII. Warto tutaj wspomnieć, że
lepszej funkcji. Weźmy teraz funkcję, która wszystkie znaki ASCII można otrzymać
Rysunek 9. Wykorzystanie zakresów
traktuje bajty skrótu, jako kody ASCII. poprzez kombinację [ALT]+ kod znaku w
do wyboru znaku, ze zmniejszonego
zestawu znaków. 6B szesnastkowo to postaci dziesiętnej wpisany z klawiatury
107 dziesiętnie, 107 wpada do zakresu 427842A8A984FE86775D679D8061FECB → numerycznej. Nie potrzeba sięgać po
od 105 do 110, który odpowiada literze K. BxB?????w]g??a?? żadne dodatkowe narzędzie.
Bajt 6B zostanie zamieniony na literę K Jednak jeśli nie potrzebujemy, aby nasza
Co tutaj się wydarzyło? Dlaczego tyle tablica skupiała się na tak wyszukanych
całkowicie losowe ciągi znaków, których razy powtarza się znak zapytania, chociaż hasłach, zaprezentowana powyżej funkcja
właściwie nikt nie użyje jako hasło (nikt jego kod ASCII to 3F i nie występuje on redukująca jest zbyt rozrzutna, ponieważ
z wyjątkiem osób korzystających z w tym skrócie ani razu? Dzieje się tak równie często będzie sięgała po znaki
generatorów pseudolosowych). To od dlatego, gdyż tabela kodów ASCII zawiera alfanumeryczne, jak i po inne.
jakości funkcji redukujących zależy jakość 256 elementów i składa się nie tylko z W popularnych programach
całej tablicy. liter i cyfr, ale również z symboli i kodów łamiących hasła metodą pełnego
Zastanówmy się nad prostą funkcją sterujących, takich jak powrót karetki, nowa przeglądu (ang. brute force), często
redukującą – funkcja, która bierze linia, czy sygnał dźwiękowy oraz ze znaków mamy możliwość wybrania zestawu
pierwszych 10 znaków funkcji skrótu i białych, takich jak spacja czy tabulacja. W znaków, jakie mają być testowane. Każdy
zwraca je jako hasło. tym ciągu reprezentowane są jako znaki kto używał takiego programu i spędził z
nim kilka chwil, z pewnością zauważył, że
zwiększenie zestawu znaków wydłuża czas
poszukiwania, to naturalne i w przypadku
tęczowych tablic, też tak się dzieje.
Dlatego należy umiejętnie wybrać zestaw
znaków, który nasze funkcje redukujące
będą używać, ponieważ od tego zależy
skuteczność i szybkość działania tablicy.
Warto chwilę się zastanowić, jakich
znaków sami używamy w hasłach i być
może na tej podstawie wybrać interesujący
nas zestaw. Zestawy najczęściej stosowane
bazują na dużych i małych literach oraz
cyfrach, bardziej rozszerzone zawierają
dodatkowo symbole dostępne po
naciśnięciu [SHIFT] i cyfry (!, @, #, …),
spacja, nawiasy, polskie znaki diakrytyczne,
a w skrajnych wypadkach udostępniają
nawet kody ASCII o wysokich wartościach,
dostępne przez kombinację [ALT]+ kod
ASCII. Należy wybrać złoty środek między
skutecznością a szybkością działania.

Jak zredukować skrót do hasła,


które używa zmniejszony zestaw
znaków?
Rozwiązań jest kilka. Można na przykład
Rysunek 10. Częstość występowania znaków w języku angielskim wybrać zakresy wartości bajtów,

20 HAKIN9 12/2009
TĘCZOWE TABLICE

odpowiadających określonym literom, Jestem pewien, że większość użytkowników poprzez zwiększenie funkcji w danym
np. gdy wartość bajtu wynosi od 0 do 15 nie stosuje tych znaków bardzo często. zbiorze. Warto rozważyć tutaj pewną
można przyjąć, że zamieniamy wtedy taki Zdarza się nawet, że używamy słów z uwagę projektową. Funkcje w łańcuchu
bajt na A, wartości z zakresu 16 do 23 języka polskiego (Rysunek 10). powinny być uszeregowane w kolejności
zamieniamy na B itd. Używanie takiej funkcji Świetnym podejściem do tego od tych, które generują najdłuższe
redukującej spowoduje, że podobne skróty zagadnienia może być przeanalizowanie hasła do tych najkrótszych. Dlaczego?
będą redukowane do takich samych haseł. listy haseł jakiegoś działającego systemu Aby możliwie maksymalnie zmniejszyć
Nie jest to cecha niepożądana, jednak ze z dużą liczbą użytkowników i zebranie szansę wystąpienia kolizji.
względów wydajnościowych może lepsze potrzebnych danych statystycznych Rozważmy przykład, że wbrew tej
byłoby zastosowanie jakiegoś wzoru na temat znaków. Dane statystyczne zasadzie na początku umieściliśmy
przekształcającego, niż tabeli z zakresami występowania znaków dla języka można funkcję zwracającą hasła o długości
(Rysunek 9). znaleźć w literaturze, a nawet łatwo jednego znaku. Mamy 1/n szansy
Innym pomysłem może być samemu zebrać, natomiast listy haseł (gdzie n to wielkość zbioru znaków) na
zastosowanie właśnie wzoru, do powinny być (i są) chronione przed powtórzenie się tego samego hasła,
powyższego pomysłu. Możemy na dostępem osób nieupoważnionych, co przy 100 znakach w zbiorze daje
przykład przeskalować cały zakres dlatego raczej nie mamy do nich aż 1%! Oznacza to, że średnio co setny
znaków ASCII (od 0 do 255) do naszego dostępu. łańcuch będzie identyczny, ponieważ
zmniejszonego zbioru, np. 70 znaków. W Rozróżnianie częstotliwości kolizja wystąpi w tej samej warstwie, co
tym celu, dzielimy 256 : 70 = 3,7 i co występowania znaków można spowoduje, że wszystkie kolejne skróty i
3,7 wartości bajta w skrócie wybieramy zrealizować wykorzystując zakresy hasła będą takie same. Jest to wysoce
kolejny znak z naszego zbioru. Można wartości bajtów funkcji skrótu. Dla znaków niepożądane zjawisko. Gdy natomiast na
wymyślić całkiem sporo ciekawych o dużym prawdopodobieństwie zakres początku umieścimy funkcje generujące
metod takiego rozszerzania, zachęcam będzie proporcjonalnie większy. długie hasła, np. 10-znakowe, wtedy
do eksperymentowania! szansa wystąpienia tego samego hasła
Jak otrzymywać różnej długości spada do 1/(n^10) co staje się szansą
Co jeszcze można ulepszyć? hasła? małą, nawet w ogromnych tablicach.
Jesteśmy coraz bliżej stworzenia Hasła często różnią się długościami. Drugie podejście do generowania
doskonałych funkcji redukujących, jednak Funkcje redukujące muszą redukować różnych długości haseł to ustalenie, że
nie wzięliśmy pod uwagę częstości skróty do haseł różnej długości. Możemy pewne bajty skrótu będą odpowiadać
występowania znaków. Oczywiste jest, że do tego podejść dwojako. Możemy ustalić, długości wygenerowanego hasła.
w języku polskim, czy angielskim znaki że jedna funkcja redukująca zawsze Przykładowo, pierwszy bajt może
w tekstach występują nierównomiernie. zwraca hasła o konkretnej długości albo określać ile znaków chcemy otrzymać.
W języku polskim litera a występuje uzależnić długość hasła od skrótu. Moim zdaniem takie podejście jedynie
najczęściej, natomiast w angielskim, litera W pierwszym przypadku stworzymy niepotrzebnie komplikuje sprawę
e. Co prawda hasła nie zawsze składają sobie zbiory funkcji redukujących, które i utrudnia analizę tęczowej tablicy,
się ze słów, jednak warto zastosować zawsze zwracają określonej długości ponieważ nie możemy sprawdzić, ile
rozróżnienie występowania znaków, bo, hasła. Jest to podejście wystarczające, jakiej długości haseł mamy, a jedynie
zastanówmy się sami, jak często używamy możemy wtedy nawet regulować ilość statystycznie określić. Poza tym, aby
w hasłach znaków w stylu !, @, #, $, (, ),…? wygenerowanych haseł o danej długości zróżnicować ilość haseł o danych

� �� � �� �� �
����� ����������� ������ ����������� ��� �������� �����������

� �� � �� �� �
������ ����������� ���� ����������� ��� ����� �����������

� �� � �� �� �
�������� ����������� ��������� ����������� ��� ��������� �����������

� �� � �� �� �
������ ����������� ������ ����������� ��� ������� �����������

Rysunek 11. Tęczowa tablica – te same funkcje redukujące są tego samego koloru tworząc tęczę

12/2009 HAKIN9 21
ATAK
długościach trzeba byłoby zastosować polega wtedy na pobraniu ciągu od przechowywane lub przesyłane, w
znów podejście z różnymi zakresami uwierzytelniającego się użytkownika, postaci funkcji skrótu. W pełni pokazują
wartości dla określonej długości. doklejenie soli do tego ciągu i swoje walory, gdy musimy atakować
skrócenie. Wtedy następuje porównanie wiele różnych haseł, skróconych tą samą
Jak sprawić, aby funkcji z zapamiętanym skrótem. W efekcie funkcją skrótu, ponieważ wtedy opłaca
redukujących było wiele? uzyskujemy o wiele większy stopień, gdyż się wygenerować ogromne tablice, które
Trzeba mieszać. Mieszać możemy nie wystarczy już znalezienie dowolnego można przechować i wykorzystać wyniki
kolejność zakresów, zakresy możemy ciągu, którego skrót jest równy obliczeń w przyszłości.
rozbić na pojedyncze wartości i przechowywanemu. Dodatkowo trzeba Prostym sposobem na utrudnienie
wymieszać te wartości. zapewnić, by część tego ciągu była solą. działania tęczowych tablic jest użycie
Możemy na początku wymieszać Ilość możliwych ciągów pasujących jest soli, czyli połączenie hasła z pewnym
skrót – wtedy wystarczy nam jedna diametralnie zmniejszona. ciągiem przed skróceniem. Ciąg ten
funkcja redukująca (tzw. wewnętrzna) Czy to już koniec tęczowych tablic? zapamiętujemy obok skrótu hasła, aby się
i wiele sposobów mieszania. Wtedy Niezupełnie. Kolizje, których chcieliśmy upewnić, że wpisano prawidłowe hasło,
projektujemy jedną funkcję wewnętrzną ciągle unikać (i nadal chcemy ze a nie wykorzystano kolizji występującej
o dobrych parametrach co do częstości względu na dublowanie tych samych w funkcji skrótu. Skuteczność tej metody
liter w hasłach i zapamiętujemy danych w różnych łańcuchach) okazują jest bardzo wysoka, a koszt stosowania
różne klucze. Gdy dostajemy skrót się częściowo radzić sobie z tym niewielki, dlatego wszędzie gdzie to
do zredukowania to doklejamy do problemem. Interesujące są dla nas tylko możliwe, należy stosować sól.
niego klucz i ponownie skracamy. takie kolizje, które występują na różnych Inną dość oczywistą cechą
Otrzymujemy wtedy wymieszany skrót pozycjach w łańcuchach i dotyczą funkcji tęczowych tablic, nie wspomnianą
i działamy na nim naszą dobrą funkcją skrótu, czyli sytuacji, gdy z różnych haseł przeze mnie wyżej, jest zdolność
wewnętrzną. Takie podejście sprawia, powstaje taki sam skrót. do przeprowadzenia ataku offline.
że różne funkcje redukujące to ta sama Gdyby taka sytuacja występowała Offline, ponieważ gdy już zdobędziemy
funkcja wewnętrzna z różnymi kluczami często, moglibyśmy rozszerzyć algorytm skrót interesującego nas hasła, nie
mieszającymi, więc zapamiętać musimy wyszukiwania haseł w tęczowej tablicy, potrzebujemy żadnej dodatkowej
tylko funkcję wewnętrzną i różne klucze, aby nie zatrzymywał się po znalezieniu interakcji, a tylko dużą moc obliczeniową.
co pozwala na zaoszczędzenie miejsca. pierwszego pasującego skrótu, ale Gdy już odzyskamy hasło, możemy go
Co więcej, tworzenie nowych funkcji kontynuował poszukiwania dopóty, dopóki użyć zupełnie jak uprawniony użytkownik.
redukujących jest proste, bo sprowadza oprócz skrótu, zgadza się część ciągu Tęczowe tablice są wręcz idealne
się do wybierania nowych kluczy. zawierająca sól. do wykorzystania w modelu obliczeń
Sposobów i pomysłów jest wiele, Są to rozważania czysto teoretyczne, rozproszonych. Każdy węzeł sieci
sztuką jest wybrać optymalny i go gdyż rozmiar tablicy, która umożliwiałaby rozproszonej posiada własny podzbiór
stosować konsekwentnie w całej dużą skuteczność takich poszukiwań łańcuchów i poszukiwanie wykonuje
tablicy, dlatego ważne jest przemyślane byłby przeogromny, jednak jest wyłącznie na nim.
zaprojektowanie kluczowych jej ciekawostką, którą należy mieć na Należy sobie jeszcze uświadomić, że
elementów. uwadze, gdyż pewnego dnia, może się tęczowe tablice nie są szybsze niż atak
okazać możliwą do realizacji. brute force. Etap generowania tablicy jest
Sól (w oku) nawet wolniejszy, bo wymaga wykonania
Tęczowe tablice pozwalają na znaczne Skąd się wzięła nazwa? dla każdego skróconego hasła
przyspieszenie ataku na funkcje Znając mechanizm rządzący tworzeniem redukowania. Nie mamy też pewności,
skrótu. Raz wygenerowane tablice tęczowych tablic warto wyjaśnić, skąd ile potrzebujemy łańcuchów, aby tablica
można używać wielokrotnie i ciągle wzięła się ich nazwa. Otóż gdyby zawierała wszystkie interesujące nas
rozbudowywać o nowe łańcuchy narysować tablicę, w której wierszach hasła.
zwiększając jej skuteczność. Wydawać znajdowałyby się łańcuchy, a w Tęczowe tablice posiadają
by się mogło, że użycie tęczowych tablic kolumnach kolorami zaznaczono by ograniczenia i nie na pewno nie są
obali zasadność stosowania funkcji funkcje redukujące, to powstanie tęcza. uniwersalną metodą łamania haseł, ale w
skrótu, jednak tak się nie stało. Bardzo długa tęcza (długość tęczy przypadku powtarzalnych schematów ich
Istnieje jednak prosty sposób na to ilość łańcuchów) o wielu barwach zastosowanie daje doskonałe rezultaty.
utrudnienie pracy tęczowych tablic. (każda barwa symbolizuje inną funkcję
Stosuje się tak zwaną sól. Polega redukującą – warstwę) (Rysunek 11). Sebastian Czarnota
to na zapamiętaniu obok skrótu Autor jest studentem czwartego roku Wojskowej
Akademii Technicznej na specjalności Kryptologia.
hasła pewnego ciągu. Ciąg ten jest Podsumowanie Pracuje jako programista aplikacji GIS. Ponadto
dopisywany do hasła i dopiero wtedy Tęczowe tablice są świetnym sposobem, interesuje się zagadnieniami bezpieczeństwa
kryptograficznego, algorytmami i szyframi.
skracany. Metoda weryfikacji hasła na usprawnienie ataków na hasła Kontakt z autorem: sebastian.czarnota@gmail.com.

22 HAKIN9 12/2009
Jeśli nie możesz odczytać zawartości płyty CD, a nie jest ona
uszkodzona mechanicznie, sprawdź ją na co najmniej dwóch
napędach CD.

W razie problemów z płytą, proszę napisać pod adres:


cd@software.com.pl

You might also like