Niebezpieczny Internet
Niezależni kalifornijscy specjaliści ds. bezpieczeństwa, we współpracy z ekspertami z holenderskiego Centrum Wiskunde & Informatica (CWI), uniwersytetu technicznego w Eindhoven (TU/e) oraz szwajcarskiego EPFL odkryli lukę w powszechnie wykorzystywanych w Internecie cyfrowych certyfikatach. Dziura umożliwia takie podrobienie certyfikatu, że zostanie on zaakceptowany przez każdą przeglądarkę. Pozwala to atakującemu na przygotowanie witryny lub serwisu pocztowego, który bez najmniejszego problemu podszyje się pod prawdziwą stronę. Przestępca może wówczas niezauważenie dokonać ataku phishingowego.
Eksperci poinformowali o swoim odkryciu podczas odbywającej się właśnie w Berlinie konferencji 25C3. Mają nadzieję, że dzięki ich ostrzeżeniu upowszechnią się bezpieczniejsze algorytmy.
Mowa tutaj o sytuacji, gdy korzystamy z powszechnie stosowanego protokołu https. Przeglądarka informuje nas o tym fakcie wyświetlając zamkniętą kłódkę, co oznacza, że witryna, którą odwiedzamy, została zabezpieczona szyfrowanym certyfikatem. W takich wypadkach stosuje się kilka algorytmów, a jednym z najpowszechniejszych jest MD5. I to w nim właśnie znaleziono lukę.
O pierwszych problemach z MD5 poinformowali Chińczycy w 2005 roku. Byli oni w stanie znaleźć kolizję dla tego algorytmu i przeprowadzić atak polegający na wysłaniu dwóch różnych wiadomości chronionych tym samym podpisem cyfrowym. Chińska metoda była jednak bardzo trudna do wykonania. W maju 2007 roku uczeni z CWI, EPFL i TU/e pokazali, że podczas podobnego ataku można wykorzystać dowolne wiadomości.
Obecnie ci sami eksperci dowiedli, że możliwe jest podrobienie dowolnego certyfikatu tak, że zostanie on zaakceptowany przez wszystkie popularne przeglądarki internetowe. Co więcej, do podrobienia certyfikatu wystarczy moc obliczeniowa ponad 200 współczesnych konsoli do gier.
Specjaliści zwracają uwagę, że połączenie podrobionego certyfikatu ze znanymi słabościami systemu DNS pozwala na przeprowadzenie niewykrywalnego ataku phishingowego. Może on polegać na przykład na przekierowaniu użytkowników online'owych banków na fałszywe witryny, które będą wyglądały identycznie jak witryny banków, a przedstawione przez nie certyfikaty bezpieczeństwa zostaną zaakceptowane. Użytkownik, wierząc, że odwiedza witrynę swojego banku, nieświadomie prześle przestępcom wszelkie informacje, które będą im potrzebne do skutecznego wyczyszczenia jego konta z pieniędzy.
Wspomniani na wstępie specjaliści poinformowali już firmy produkujące popularne przeglądarki o problemie.
Odkrywcy luki uważają, że instytucje wydające certyfikaty bezpieczeństwa powinny zrezygnować z używania MD5 i korzystać z innych algorytmów, takich jak np. SHA-2.
Komentarze (12)
nexon, 30 grudnia 2008, 20:58
Ciekawe odkrycie które oczywiście wiele wnosi do świata ludzi szybkosiębogacących i szybkobiedniejących ale "luka w MD5" to tak naprawdę od lat znana właściwość, "skutek uboczny" niezłomności szyfrowania MD5.
MD5 potrafi każdy ciąg liter, cyfr, czegokolwiek sprowadzić do 32 znaków. Co na szczęście powoduje że jest nieodwracalny. Jednak jak się głębiej zastanowić to na 100% istnieją dwa wyrażenia które dają takie same wyniki działania MD5.
Proste liczenie. Ile jest możliwości przy 32 znakach a ile przy nieskończonej liczbie. Prędzej czy później muszą się powtórzyć.
Co więcej w internecie już od paru lat dostępne są słowniki MD5. Jeszcze niewiele tam wyrazów z pośród wszystkich możliwych ale ciągle się rozwijają.
Mimo wszystko MD5 nadal jest najskuteczniejszym z najszybszych algorytmów.
Jarek Duda, 31 grudnia 2008, 11:16
Ej, powoli ... 32 znaki szesnastkowe, czyli jakoś 3.4*10^38 kombinacji - powodzenia z szukaniem bez użycia jakiegoś na prawdę dobrego triku...
Ale ogólnie to nie rozumiem jak można opierać praktycznie światowe bezpieczeństwo na kryptosystemach tworzonych w sposób: używaj najprostrzysch operacji logicznych tak długo dopuki nie będzie wyglądało na bezpieczne.
Przecież można użyć porządnej nieliniowości. Na przykład są szybkie, zupełnie nieprzewidywalne generatory liczb losowych - inicjalizujemy go naszym kluczem i dostajemy potencjalnie nieskończony, unikalny ciąg losowy - używamy go do zmiksowania naszej wiadomości i ... nikt nawet nie pomyśli o próbie łamania tego.
Choć ... ostatnio myślałem nad nowymi podejściami wykorzystania fizyki do rozwiązywania ciężkich problemów:
http://www.topix.com/forum/science/cryptography/T1S37KE55VQ8LN50K
Pewnie to nierealne, ale daleko jestem od bycia tego pewnym. W każdym razie żeby zabezpieczyć kryptosystem przed taką ewentualnością, powinien wymagać długiej inicjalizacji specyficznej dla danego klucza(jak oparte na asymmetric numeral systems).
wilk, 31 grudnia 2008, 17:00
O (praktycznych) kolizjach w MD5 wiadomo już przynajmniej od 1996. Nikt rozsądny nie polega na MD5 tylko (a nawet w ogóle), certyfikaty zawierają dlatego tandem MD5+SHA1. A te 200 konsol, to były PS3.
Ale tutaj nie są to algorytmy szyfrujące, a funkcje skrótu. Poza tym istota tkwi w ilości rund, które teoretycznie wykładniczo podnoszą bezpieczeństwo.
Są też algorytmy oparte na problemach NP-zupełnych, jak np. problem faktoryzacji iloczynu liczb pierwszych (RSA), problem logarytmu dyskretnego (ElGamal) czy krzywe eliptyczne. Tu wszystko opiera się na złożoności matematycznej.
I czym to się różni od obecnych systemów? Jak jednorazowy, unikalny klucz prześlesz drugiej osobie? Poza tym nie ma idealnego PRNG. Jest projekt http://random.org który zbiera także szumy z echa radiowego. Są też szyfry one-time pad, jak szyfr Vernama, które używają jednorazowych kluczy.
Jarek Duda, 31 grudnia 2008, 18:29
no właśnie z tego co wiem jedynym argumentem to bo tak się wydaje. Bo dowodzenie że nie ma drogi na skróty to coś w stylu dowodzenia że P!=NP...
Nie mówię o RSA, krzywych eliptycznych - one są dużo bardziej wyrafinowane, ale za to dużo wolniejsze - asymetryczność kosztuje.
Natomiast większość używanych kryptosystemów symetrycznych, systemów haszujących używa podstawowych operacji logicznych i przestawiania bitów KROPKA. Czyli tworzenie takich łamigłówek logicznych ... bo wydaje się że jest bezpieczne.
Użycie generatora liczb losowych inicjalizowanego kluczem zupełnie zmienia sytuację: używając wygenerowanej sekwencji definiujesz unikalny koder. Losowań było tak dużo że jego konstrukcja jest oparta praktycznie tylko na statystyce. Nie ma szans odtworzyć kodera, a jeśli nawet to i tak klucz jest bezpieczny. Przyglądnij się asymmetric numeral systems.
wilk, 31 grudnia 2008, 20:25
PRNG nigdy nie daje bezokresowego ciągu, a tylko gwarantowaną długość cyklu. Jak rozumiem kluczem ma być seed i numer iteracji? Ok, ale w czym to daje przewagę nad innymi systemami? PRNG to iteracyjna maszyna stanu, też używa prostych instrukcji (xorshift, isaac, mt, nawet zwyczajna funkcja skrótu czy system kryptografii symetrycznej ze sprzężeniem zwrotnym może działać jak PRNG). A dlaczego używa się prostych instrukcji w rundach? Dlatego, że to jest szybkie i daje się łatwo zoptymalizować.
Jarek Duda, 1 stycznia 2009, 08:54
Jak tylko chcemy, to te okresy są tak długie że nie mamy szans się do nich zbliżyć (mt, kryprografia symetryczna ze sprzężeniem zwrotnym).
Klucz daje seed, a z wyjściowym ciągiem robimy co chcemy, jak na przykład użycie go do określenia parametrów algorytmu, określenia interesujących nas w tym ciągu pozycji.
Jak dobrze się to ustali, to nawet przy scenariuszach typu adaptive chosen ciphertext nie ma szans ustalić tych ukrytych parametrów. A tym bardziej szukać jakichś regularności.
ANS na przykład losuje w ten sposób dość specyficzne tablice kodujące bliskie pewnej statystyki. Dzięki takiemu podejściu (większość obliczeń jest wykonywane podczas inicjalizacji) z jednej strony kodowanie jest już błyskawiczne, z drugiej jest dodatkowo odporny na ataki brute force - żeby sprawdzić klucz trzeba wykonać pełną inicjalizację, co zajmuje wybraną przez użytkownika ilość czasu.
wilk, 2 stycznia 2009, 13:24
Póki to podejście zapewnia spełnienie rygorów dyfuzji, konfuzji, lawinowości i zupełności (to kryterium odpada, bo jak rozumiem ten system jest strumieniowy z racji konstrukcji OFB), to ok. Jakkolwiek nie wiem jaki to ma związek z problemem funkcji skrótu, a raczej z certyfikatami, które są domeną kryptografii asymetrycznej.
Jarek Duda, 2 stycznia 2009, 13:45
Funkcje hashujące też są zwykle oparte na powtarzaniu kosmiczną ilość razy podstawowych operacji logicznych, podczas gdy wystarczy na przykład użyć dobrego kodera kryptograficznego żeby zakodować plik (ze stałym lub pozyskiwanym z pliku kluczem), potem najlepiej zakodować wyjście jeszcze raz w odwrotnym kierunku i jako funkcję haszującą wziąść ostatnie uzyskane bity...
ANS jest trochę poza klasyfikacją typu OFB - dla klucza generujemy zgodnie ze statystyką dużą tablicę kodującą, która mówi jak zmienia się stan kodera (ukryta zmienna) i co wypluwa pod wpływem nowych bitów. Bloki są krótkie, ale za to o bardzo zmiennej długości. Możliwe zachowania są losowo, w przybliżeniu jednorodnie rozrzucone po przestrzeni stanów kodera - najmniejsza zmiana i wszystko się chaotycznie rozjeżdża.
wilk, 2 stycznia 2009, 15:59
Tam nie ma kosmicznej ilości rund. SHA-1 używa 80 rund, zaś MD5 jedynie 4. Natomiast użycie jedynie ostatnich bitów nie gwarantuje:
1. wiązania każdego bitu wiadomości z wyjściem funkcji (nawet w trybie CBC/CFB)
2. efektu lawinowego zapewniającego przy zmianie dowolnego bitu zmianę przynajmniej połowy bitów wyjściowych
Jarek Duda, 2 stycznia 2009, 17:08
Ok ... MD5 używa 'tylko' 4 rund ... po 16 operacji ;D
Według mnie to jednak dość dużo. A co do użycia kryptosystemu, to 'dobry' dla mnie znaczy m.in. że najmniejsza zmiana na wejściu oznacza wyprodukowanie zupełnie innego, losowego ciągu (jak ANS), czyli tym bardziej praktycznie losowo zmieni te ostatnie wyprodukowane bity. A przejście tam i potem spowrotem powoduje że znalezienie dwóch plików dających to samo staje się praktycznie niewykonalane.
wilk, 2 stycznia 2009, 19:34
Jeśli znasz operacje szybsze niż xor, and, or, not, shl/shr (operacje zajmujące 1-4 cykli procesora, w zależności od typu adresowania), to gratuluję.
Trochę kłopotliwe jest to, że jednocześnie piszesz o jednokierunkowych funkcjach skrótu (nas za określenie "funkcja haszująca" wykładowca by zamordował :]), szyfrowaniu i generatorach liczb pseudolosowych. Wybacz, że się tak czepiam, ale jeśli chodzi Ci w tym cytacie o funkcje skrótu, to oczywiście, że się da. Z prostej przyczyny - one mają określoną długość bitów na wyjściu, a przerabiają dowolne zbiory danych (od 1 bajtu, po obrazy iso). Siła tkwi w tym, że spreparowana wiadomość musi mieć sens. W przypadku szyfrowania - wiadomo, do tego dążymy. Jak będę miał dłuższą chwilkę obiecuję przyjrzeć się dokładniej Twojemu podejściu (ANS).
Jarek Duda, 2 stycznia 2009, 20:35
Tylko że pojedyńcza składa się z jakichś 10 takich ... razy 64 to już trochę.
Co do nazw to wolę używać orginalnych, 'funkcja skrótu' to jak dla mnie lekka przesada z potrzebą spolszczania. Co do łączenia to najwięcej wymaga się od kryptosystemu, bo zarówno powinien być m.in. możliwy do wykorzystania jako generator liczb losowych, jak i ma dość niedaleko do użycia go jako funkcji haszującej... z której znowu łatwo zrobić PRNG ... a z takiego nietrudno kryptosystem
Jak trochę (w sumie nad czymkolwiek) pomyślisz, to wszystko jest strasznie rozymte i się z wszystkim łączy