Uploaded by bpr30154

Ataki na funkcje haszujące

advertisement
Ataki na funkcje haszujące:
Ataki na właściwości
*Klasyczne właściwości
-pre-image attack
-2nd pre-image attack
-collision attack
*k-way attacks
-k-way collision attack
-k-way 2nd pre-image attack
ataki na metodologie
*Brute force
-birthday attack
*kryptoanalityczne ataki
-ogolne:
=joux attack
=herding attack
=meet in the middle attack
=lenght extension attack
=generic 2nd pre-image attacks based on fixed
points correcting block attacks
-szczegółowe:
=rotacyjna kryptoanaliza
=liniowa kryptoanaliza
=różnicowa kryptoanaliza
=attack on underlying encryption algorithm
Atak brute force
Polega na łamaniu skrótu z wykorzystaniem wszystkich możliwości kombinacji liczbowych, z jakich
może się składać. Jest ona bardzo czasochłonna i zużywa bardzo dużo zasobów przez dużą złożoność
obliczeniową. Teoretycznie może służyć do odgadnięcia każdego klucza. W praktyce ma sens tylko
przy stosunkowo krótkich kluczach, gdzie proces obliczeniowy i weryfikujący otrzymane dane nie jest
na tyle skomplikowany, że nie podchodzi pod niemożliwy. Atak tego rodzaju w przypadku funkcji
skrótu polega na przeszukiwaniu losowego zbioru kombinacji cyfr, liter oraz innych znaków i
porównywaniu z określoną wartością danego skrótu. Istotą takiego ataku jest znalezienie dowolnej
wiadomości, która po zastosowaniu funkcji skrótu wykaże zadany skrót.
Atak urodzinowy
Atak urodzinowy jest rodzajem ataku siłowego. Oparty jest na możliwości znalezienie dowolnej pary
wiadomości, dla których skróty utworzone od tych wiadomości będą ze sobą tożsame. Innymi słowy
chodzi w tym przypadku o znalezienie kolizji funkcji haszującej. Jego nazwa związana jest z leżącym u
podstaw tego ataku tzw. paradoksem dnia urodzin. Paradoks ten daje odpowiedź na pytanie dotyczące
liczby osób, która musi znaleźć się w losowej próbce, aby prawdopodobieństwo znalezienia tam dwójki
ludzi urodzonych tego samego dnia wynosiło więcej niż ½. Odpowiedź (23 osoby) pozwala
domniemywać, że kolizja dla funkcji haszującej może zostać znaleziona dużo szybciej niż wskazuje na
to rozmiar zbioru wartości funkcji. Atak ten polega na wygenerowaniu odpowiedniej liczby skrótów,
która zawsze będzie dużo mniejsza niż pełny zbiór wszystkich skrótów, aby z 50%
prawdopodobieństwem trafić na dwa takie same skróty. 64-bitowe wartości funkcji skrótu, są
niewystarczające dla odparcia ataku urodzinowego. Zaleca się stosowanie funkcji dających wyniki
powyżej 128 bitów, gdyż dla algorytmu MD 5 (128 bitów) udany atak może nastąpić już przy
wygenerowaniu 1,1774 * 264 skrótów, przy całkowitej liczbie 2128 możliwych kombinacji.
Atak różnicowy
Jest to bardziej efektywna metoda niż w przypadku ataku brutalnego. W kryptoanalizie różnicowej
dokonuje się analizy porównawczej pary kryptogramów, które wygenerowane zostały w efekcie
zaszyfrowania wielu par wiadomości jawnych o ustalonych różnicach. Metoda różnicowa wykorzystuje
prawdopodobieństwo zniwelowania różnicy wewnątrz funkcji kompresującej już po kilku rundach,
poprzez zmianę paru bitów w analizowanym przekazie. Idea tego ataku polega na wykorzystaniu
niedoskonałości zastosowanej w algorytmie funkcji kompresującej i wskazaniu dwóch różnych
wiadomości dających ten sam skrót. Różnica określana jest funkcją logiczną xor.
Pre-image attack
Preimage resistance to właściwość funkcji skrótu H taka, że znając jakiś skrót h nie istnieje żadna szybka
metoda znalezienia wiadomości m takiej że H(m) = h. Jest to najsłabsza kryptograficzna właściwość
funkcji skrótu. Funkcje które nie są preimage resistant nie mają praktycznie zastostowań
kryptograficznych, za to samo preimage resistance nie jest właściwością wystarczającą dla wielu
zastosowań.
2nd preimage attack
Second preimage resistance (odporność na znalezienie drugiego przeciwobrazu) – właściwość funkcji
kryptograficznej H, taka że dla danej wiadomości m1 nieznana jest żadna szybka metoda znalezienia
takiego m2 różnego od m1, że ich skróty są sobie równe. Brak second preimage resistance implikuje
brak odporności na kolizje. Brak preimage resistance implikuje brak second preimage resistance. Obie
implikacje są tylko w jedną stronę. Jeśli funkcja nie jest preimage resistant, to nie jest też second
preimage resistant – dla danej wiadomości m1 liczymy hasz h, po czym go odwracamy, znajdując takie
m2, że H(m2) = h = H(m1). Ponieważ przestrzeń wiadomości jest o wiele większa od przestrzeni haszy,
z prawdopodobieństwem bliskim 1 m1 i m2 są różne. W ten sam sposób możemy znajdować kolizję
funkcji haszującej która nie jest preimage resistant – losujemy m1, liczymy h=H(m1), po czym
obliczamy m2, takie że H(m1)=h=H(m2).
Rainbow table
Tabela tęczy to wstępnie obliczona tabela do buforowania wyników kryptograficznych funkcji skrótu,
zwykle do łamania skrótów haseł. Tabele są zwykle używane do odzyskiwania funkcji wyprowadzania
klucza (lub numerów kart kredytowych itp.) o określonej długości składającej się z ograniczonego
zestawu znaków. Jest to praktyczny przykład kompromisu czasoprzestrzennego, wykorzystujący mniej
czasu przetwarzania przez komputer i więcej pamięci niż atak brute-force, który oblicza hash przy
każdej próbie, ale więcej czasu przetwarzania i mniej pamięci niż prosta funkcja wyprowadzania klucza
z jednym wpisem za hasz. Użycie kluczowej pochodnej, która wykorzystuje sól, sprawia, że ten atak
jest niewykonalny.
Tęczowe tablice zostały wynalezione przez Philippe'a Oechslina[1] jako zastosowanie wcześniejszego,
prostszego algorytmu Martina Hellmana.[2]
Jak zabezpieczyć się przed rainbow table
Wartość soli nie jest tajna i może być generowana losowo i przechowywana z hashem hasła. Duża
wartość soli zapobiega atakom polegającym na wykonywaniu obliczeń wstępnych, w tym tablicach
tęczowych, zapewniając unikatowe zaszyfrowanie hasła każdego użytkownika. Oznacza to, że dwóch
użytkowników z tym samym hasłem będzie miało różne skróty haseł (zakładając, że używane są różne
sole). Aby odnieść sukces, atakujący musi wstępnie obliczyć tabele dla każdej możliwej wartości soli.
Sól musi być wystarczająco duża, w przeciwnym razie atakujący może stworzyć tabelę dla każdej
wartości soli. W przypadku starszych haseł Unix, które używały 12-bitowej soli, wymagałoby to 4096
tabel, co oznacza znaczny wzrost kosztów dla atakującego, ale nie jest to niepraktyczne w przypadku
terabajtowych dysków twardych. Metody SHA2-crypt i bcrypt — używane w systemach Linux, BSD
Unix i Solaris — mają 128-bitowe sole.[4] Te większe wartości soli powodują, że ataki oparte na
obliczeniach wstępnych na te systemy są niewykonalne dla prawie każdej długości hasła. Nawet gdyby
atakujący mógł wygenerować milion tabel na sekundę, nadal potrzebowałby miliardów lat, aby
wygenerować tabele dla wszystkich możliwych soli.
MD5
Funkcja ta została zaprezentowana już w 1991 roku, a prace nad nią wynikały ze świadomości słabości
poprzedniczki. Jednak już dwa lata później znalezione zostają tzw. pseudokolizje dla tej funkcji, a w
roku 1995 wykazane zostają kolizje dla jej funkcji kompresującej. Kolejne słabości ujawniono w 2004
roku (metoda otrzymania kolizji dla dwublokowych wiadomości) i w 2006, kiedy to miała miejsce
publikacja algorytmu precyzującego kolizje z wykorzystaniem tzw. tunelowania. Na znalezienie kolizji
wystarczyła w tym przypadku zaledwie minuta.
SHA 0/ SHA 1/ SHA 2
Pierwsza generacja funkcji z rodziny SHA (Secure Hash Algorithm), algorytmów aprobowanych przez
National Institute of Standards and Technology i wykorzystywanych przez administrację USA. SHA 0
powstał w roku 1993. Publikowane z upływem lat informacje dotyczące wykazywania kolizji o coraz
lepszych stopniach złożoności sprowokowały powstanie nowych generacji tej funkcji.
SHA 1, która zastąpiła SHA 0, także wykazała się brakiem odporności na ataki, co sprowokowało do
dalszych prac nad ulepszaniem algorytmu.
SHA 2 przedstawiona została w 2001 roku. Posiadała trzy wersje generujące skróty o długości 256, 384
i 512 bitów. Ponieważ nie wykazano żadnych skutecznych prób złamania funkcji, w 2002 roku SHA 2
stała się zalecanym standardem (FIPS PUB 180-2). Biorąc jednak pod uwagę to, iż znalezienie kolizji
może być jedynie kwestią czasu, w 2007 roku NIST rozpisała konkurs na opracowanie nowej funkcji
skrótu pod roboczą nazwą SHA 3.
Atak roznicowy
• Śledzimy różnice pomiedzy dwoma egzemplarzami funkcji którym podano dwie wiadomości różniące
się w określony sposób
• Atak różnicowy podzielony na dwie fazy: znajdowanie ścieżki i znajdowanie warunków do jej
zaistnienia
• W pierwszym etapie analizuje się uproszczone modele funkcji i szuka ścieżki różnicowej o dużym
prawdopodobieństwie
• W drugim etapie określa się zbiór warunków, które zapewniają propagację różnicy według ścieżki i
szuka rozwiązania
Jednoczesne śledzenie różnic XOR i modularnych (śledzenie różnic binarnych ze znakiem) • Metoda
“modyfikowania wiadomości” która usprawnia znajdowanie wiadomości spełniających warunki na
ścieżkę różnicową
Download