Co to jest SHAttered? Ataki kolizyjne SHA-1, objaśnione
Pierwszego dnia 2016 roku Mozilla zakończyła obsługę słabnącej technologii bezpieczeństwa o nazwie SHA-1 w przeglądarce Firefox. Niemal natychmiast zmienili decyzję, ponieważ ograniczyliby dostęp do niektórych starszych stron internetowych. Jednak w lutym 2017 r. Ich obawy wreszcie się spełniły: naukowcy złamali SHA-1, tworząc pierwszy atak kolizyjny w rzeczywistym świecie. Oto co to znaczy.
Co to jest SHA-1?
SHA w SHA-1 oznacza Bezpieczny algorytm skrótu, i, mówiąc wprost, możesz myśleć o tym jako o problemie lub metodzie matematycznej szyfruje dane, które są w nim umieszczane. Opracowany przez NSA w Stanach Zjednoczonych, jest podstawowym składnikiem wielu technologii używanych do szyfrowania ważnych transmisji w Internecie. Typowe metody szyfrowania SSL i TLS, o których być może słyszałeś, mogą korzystać z funkcji mieszania, takiej jak SHA-1, do tworzenia podpisanych certyfikatów widocznych na pasku narzędzi przeglądarki.
Nie zajmiemy się matematyką i informatyką żadnej z funkcji SHA, ale oto podstawowa idea. "Hash" to unikalny kod oparty na danych wejściowych. Nawet małe, losowe ciągi liter wprowadzane do funkcji skrótu, takiej jak SHA-1, zwrócą długą, określoną liczbę znaków, przez co (potencjalnie) niemożliwe będzie cofnięcie ciągu znaków do oryginalnych danych. W ten sposób zwykle działa przechowywanie haseł. Podczas tworzenia hasła wprowadzane hasło jest mieszane i przechowywane przez serwer. Po powrocie, gdy wpiszesz hasło, zostanie ono ponownie zahartowane. Jeśli pasuje do oryginalnego skrótu, można założyć, że dane wejście jest takie samo, a otrzymasz dostęp do swoich danych.
Funkcje skrótu są przydatne przede wszystkim dlatego, że ułatwiają określenie, czy dane wejściowe, na przykład plik lub hasło, uległy zmianie. Kiedy dane wejściowe są tajne, podobnie jak hasło, hash jest prawie niemożliwe do odwrócenia i odzyskania oryginalnych danych (zwanych również "kluczem"). To trochę różni się od "szyfrowania", którego celem jest szyfrowanie danych w celu późniejszego ich deszyfrowania za pomocą szyfrów i tajnych kluczy. Hashe mają po prostu zapewnić integralność danych - aby upewnić się, że wszystko jest takie samo. Git, oprogramowanie do kontroli wersji i dystrybucji dla kodu open source, wykorzystuje z tego powodu skróty SHA-1.
To dużo informacji technicznych, ale mówiąc po prostu: hash to nie to samo co szyfrowanie, ponieważ służy do identyfikacji, czy plik się zmienił.
W jaki sposób wpływa na mnie ta technologia?
Powiedzmy, że musisz prywatnie odwiedzić stronę. Twój bank, Twoja poczta e-mail, a nawet konto na Facebooku - wszystkie używają szyfrowania, aby dane, które wysyłasz, są prywatne. Profesjonalna strona internetowa będzie zapewniać szyfrowanie poprzez uzyskanie certyfikatu od zaufanej instytucji - osoby trzeciej, która jest zaufana, aby zapewnić, że szyfrowanie jest na poziomie prywatnym między witryną a użytkownikiem i nie jest szpiegowana przez żadną inną stronę. Ten związek z osobą trzecią, zwany Urzędy certyfikacji, lub CA, jest kluczowy, ponieważ każdy użytkownik może utworzyć certyfikat "samopodpisany" - możesz nawet zrobić to sam na komputerze z systemem Linux z Open SSL. Symantec i Digicert to na przykład dwie znane firmy z branży CA..
Przebiegnijmy teoretyczny scenariusz: How-To Geek chce zachować logowanie sesji prywatnych z szyfrowaniem, więc zwraca się do CA, takiego jak Symantec z Żądanie podpisania certyfikatu, lub CSR. Tworzą klucz publiczny i prywatny klucz do szyfrowania i odszyfrowywania danych przesyłanych przez Internet. Żądanie CSR przesyła klucz publiczny do firmy Symantec wraz z informacjami o witrynie. Symantec sprawdza klucz pod kątem jego rekordu, aby sprawdzić, czy dane są niezmienione przez wszystkie strony, ponieważ każda niewielka zmiana w danych powoduje, że skrót jest radykalnie odmienny.
Te klucze publiczne i certyfikaty cyfrowe są podpisane za pomocą funkcji skrótu, ponieważ dane wyjściowe tych funkcji są dobrze widoczne. Klucz publiczny i certyfikat ze zweryfikowanym hashem firmy Symantec (w naszym przykładzie), autorytet, zapewnia użytkownikowi programu How-To Geek, że klucz nie ulega zmianie i nie jest wysyłany od kogoś złośliwego.
Ponieważ skrót jest łatwy do monitorowania i niemożliwy (niektórzy twierdzą, że jest "trudny") do odwrócenia, poprawna, zweryfikowana sygnatura hash oznacza, że certyfikat i połączenie mogą być zaufane, a dane mogą być uzgodnione, aby były wysyłane w postaci zaszyfrowanej od końca do końca. . Ale co jeśli hash w rzeczywistości nie był wyjątkowy?
Co to jest atak kolizyjny i czy jest to możliwe w rzeczywistym świecie?
Być może słyszeliście o "problemie urodzinowym" w matematyce, chociaż być może nie wiedzieliście, jak to się nazywa. Podstawową ideą jest to, że jeśli zgromadzisz wystarczająco dużą grupę ludzi, szanse są dość wysokie, że dwie lub więcej osób będzie miało te same urodziny. Wyższe niż można by oczekiwać, w rzeczywistości - na tyle, że wydaje się dziwnym zbiegiem okoliczności. W grupie liczącej zaledwie 23 osoby istnieje 50% szansa, że dwie osoby będą dzielić urodziny.
Jest to nieodłączną słabością wszystkich skrótów, w tym SHA-1. Teoretycznie funkcja SHA powinna tworzyć unikatowy skrót dla wszystkich danych, które są w niej umieszczane, ale wraz ze wzrostem liczby skrótów staje się bardziej prawdopodobne, że różne pary danych mogą utworzyć ten sam skrót. Można więc stworzyć niezaufany certyfikat z identycznym hashem do zaufanego certyfikatu. Jeśli zainstalują niezaufany certyfikat, może on udawać zaufane i rozpowszechniać złośliwe dane.
Znalezienie pasujących haszów w dwóch plikach nazywa się atak kolizyjny. Przynajmniej jeden atak zderzeniowy na dużą skalę zdarzył się już w przypadku skrótów MD5. Jednak 27 lutego 2017 r. Google ogłosił SHAttered, pierwszą w historii kolizję z SHA-1. Google był w stanie stworzyć plik PDF, który miał ten sam skrót SHA-1 jako inny plik PDF, pomimo różnych treści.
SHAttered został wykonany na pliku PDF. Pliki PDF są stosunkowo luźnym formatem plików; można wprowadzić wiele drobnych zmian na poziomie bitów bez uniemożliwiania czytelnikom ich otwierania lub powodowania widocznych różnic. Pliki PDF są często używane do dostarczania złośliwego oprogramowania. Chociaż SHAttered może działać na innych typach plików, takich jak ISO, certyfikaty są sztywno określone, co sprawia, że taki atak jest mało prawdopodobny.
Jak łatwy jest ten atak? SHAttered został oparty na metodzie odkrytej przez Marca Stevensa w 2012 roku, która wymagała ponad 2 ^ 60,3 (9 923 kwintylionów) operacji SHA-1 - oszałamiającej liczby. Jednak ta metoda jest wciąż 100 000 razy mniejsza niż operacje, które byłyby wymagane do uzyskania tego samego wyniku przy użyciu brutalnej siły. Firma Google stwierdziła, że przy 110 wysokiej klasy kartach graficznych pracujących równolegle, potrzeba około jednego roku, aby wytworzyć kolizję. Wypożyczenie tego czasu obliczeniowego z Amazon AWS kosztowałoby około 110 000 $. Pamiętaj, że gdy ceny spadają na części komputerowe i możesz uzyskać więcej mocy za mniej, ataki takie jak SHAttered stają się łatwiejsze do zniesienia.
110 000 $ może wydawać się dużo, ale jest w zakresie przystępności cenowej dla niektórych organizacji - co oznacza, że prawdziwi cyberjatkowie mogą fałszować podpisy dokumentów cyfrowych, ingerować w systemy tworzenia kopii zapasowych i kontroli wersji, takie jak Git i SVN, lub sprawić, że złośliwy Linux wydaje się prawowity.
Na szczęście istnieją czynniki łagodzące zapobiegające takim atakom. SHA-1 jest już rzadko używany do podpisów cyfrowych. Urzędy certyfikacji nie dostarczają już certyfikatów podpisanych przy użyciu SHA-1, a zarówno Chrome, jak i Firefox zrzekły się ich wsparcia. Dystrybucje Linuksa są zwykle wydawane częściej niż raz w roku, co czyni niepraktycznym atakowanie w celu utworzenia złośliwej wersji, a następnie wygenerowania jednego z wyściełanymi, aby mieć ten sam skrót SHA-1.
Z drugiej strony niektóre ataki oparte na SHAttered mają już miejsce w realnym świecie. System kontroli wersji SVN używa SHA-1 do rozróżniania plików. Przesłanie dwóch plików PDF z identycznymi skrótami SHA-1 do repozytorium SVN spowoduje jego uszkodzenie.
Jak mogę się chronić przed atakami SHA-1?
Dla typowego użytkownika nie ma zbyt wiele. Jeśli używasz sum kontrolnych do porównywania plików, powinieneś używać SHA-2 (SHA-256) lub SHA-3 zamiast SHA-1 lub MD5. Podobnie, jeśli jesteś programistą, użyj bardziej nowoczesnych algorytmów mieszających, takich jak SHA-2, SHA-3 lub bcrypt. Jeśli obawiasz się, że SHAttered zostało użyte do nadania dwóch różnych plików tego samego skrótu, Google opublikowało narzędzie w witrynie SHAttered, które może sprawdzić dla Ciebie.
Kredyty obrazów: Lego Firefox, mnóstwo haszów, proszę nie ranić autora internetowego nieznanego, Google.