Teoria liczb w służbie kryptografii – jak ochronić swoje hasło przed złamaniem – analiza F5 Networks.
W minionym roku aż 69% polskich firm odnotowało przynajmniej jeden incydent polegający na naruszeniu bezpieczeństwa swojej sieci. Ponadto skala cyber-zagrożeń rośnie rok do roku, a wiele z nich jest wywołanych niedostatecznie mocnymi hasłami. Dowiedz się, dlaczego warto przekonać użytkowników firmowej sieci do wydłużenia swoich haseł, co wzmocni ochronę firmowych zasobów przed cyber-przestępcami
Choć coraz więcej osób zdaje sobie sprawę, że hasło powinno być długie i skomplikowane, to nadal wśród najpopularniejszych haseł znajdziemy takie frazy jak „12345”, „qwerty” czy „Haslo123”. Zbyt proste hasła wynikają z niskiej świadomości użytkowników na temat cyberbezpieczeństwa. Zadaniem zespołów odpowiedzialnych za ten obszar jest edukowanie i wspieranie użytkowników w mądrym korzystaniu z zasobów sieci.
Niestety zwyczaj ustawiania trywialnych, prostych haseł wywoływany jest często przez błędne oczekiwania administratorów sieci. Czołowe organizacje zajmujące się bezpieczeństwem w internecie (m.in. NASK) od lat rekomendują rezygnacje z praktyki regularnego zmienienia haseł użytkowników firmowych sieci. Zbyt częste modyfikowanie danych dostępowych niejako zachęca pracowników do wybierania prostych haseł i pójścia na łatwiznę, zamiast układania skomplikowanych ciągów liczb i znaków.
Na czym polega łamanie haseł?
Tradycyjna droga łamania hasła to odgadywanie litery, po literze. Prowadzi to do prostego wniosku, że im dłuższe hasła tym trudniej jest komputerom przeprowadzić wyczerpujące wyszukiwanie całej kombinacji (znane również jako wspomniany atak brute force). Dlatego zamiast krótkich słów ubogaconych o ciąg liczb warto sformułować zdanie, które będzie dużo trudniejsze do zdekodowania niż pojedyncza fraza.
Poprzez kombinację niewielkiej liczby codziennych słów możemy stworzyć hasła, które są wielokrotnie dłuższe niż 8-9 znakowe hasła, których wielu z nas nadal używa. Ale czy to naprawdę takie proste i wystarczające? Warto przyjrzeć się temu, co mówi matematyka.
Czym są hashe i jak chronią nasze hasła?
Firmy zabezpieczają hasła, przechowując je jako tzw. „hash”. Skrót ten jest wynikiem działania funkcji, która przekształca dane o dowolnej długości w ciąg o stałej długości. Hasze są teoretycznie niemożliwe do odwrócenia, więc jeśli atakujący ukradnie hasło dla swojej ofiary, nie ma innego wyjścia, jak spróbować wysłać wiele różnych słów przez tę samą funkcję, aby sprawdzić, czy otrzyma ten sam hash.
Model SHA-256 jest dobrze znaną funkcją hashującą. Choć nie jest to już zalecany standard, skorzystamy z niej analizując przykładowe hasło. Używając funkcji SHA-256 przekonwertujemy frazę H@sło123 na szyfrowany hashem wynik. Funkcja SHA256 może być uruchamiana dowolną liczbę razy na dowolnym urządzeniu. Za każdym razem otrzymamy ten sam wynik, gdy podamy te same dane wejściowe. Nie jest jednak możliwe, aby wziąć hash i uruchomić go „wstecz” żeby uzyskać oryginalne hasło.
Aby trafić we właściwą frazę, cyberprzestępcy muszą sprawdzać słowo po słowie, aż znajdą takie, które daje tę samą wartość hash jak hasło, które mają. Chociaż brzmi to jak bardzo żmudna procedura, narzędzia do łamania haseł, takie jak Hashcat, są w stanie obliczyć miliardy haseł na sekundę na jednym komputerze. Dzięki możliwościom usług cloud computing zarówno cyberprzestępcy jak i eksperci od cyberbezpieczeństwa otrzymują zasoby liczące zdolne wykonywać tak zaawansowane operacje bez konieczności samodzielnego budowania specjalistycznych komputerów. Wirtualne obliczenia w chmurze są w stanie obliczyć dziesiątki miliardów haseł na sekundę.
Poszukiwanie hasła aż do skutku
Od złośliwego oprogramowania wykorzystywanego do przechwytywania naciśnięć klawiszy, poprzez wyłudzanie formularzy w celu przechwytywania haseł do stron internetowych, aż po techniki manipulacji, takie jak phishing – przestępcy mają do dyspozycji szeroki wachlarz narzędzi i technik pozwalających na kradzież danych logowania użytkownika. Jeśli jednak wszystkie te techniki zawiodą, staromodne zgadywanie haseł przy pomocy wyszukiwań wyczerpujących może nadal zapewnić im dostęp do konta ofiary.
Podczas gdy „ataki słownikowe” przyspieszają nowoczesne łamanie haseł, najbardziej rozległym sposobem przeprowadzenia ataku typu brute force jest wypróbowanie każdej możliwej kombinacji znaków w alfabecie. Jeśli hasło użytkownika zawierało tylko małe litery a-z i miało długość 8 znaków, narzędzie do łamania haseł musiałoby zacząć od aaaaaaaa, następnie spróbować aaaaaaab, aaaaaaac, itd. i przejść całą drogę aż do zzzzzzzz. W sumie jest 328 (lub 1.0995116e+12) możliwych kombinacji.
Pamiętając, że komputery pracują w systemie binarnym, jest to mniej więcej równe 238 operacji (teoria liczb pokazuje nam, że w rzeczywistości hasło zostanie znalezione już w połowie tego czasu, czyli 119). Oznacza to, że hasło mogłoby zostać obliczone w czasie krótszym niż minuta.
Utrudnianie wyszukiwania wyczerpującego
Możemy zwiększyć złożoność hasła, utrudniając jego odgadnięcie lub przeprowadzenie wyczerpującego wyszukiwania poprzez zwiększenie liczby dostępnych znaków, z których można stworzyć hasło. Zamiast ograniczać się tylko do małych liter, użyjmy dużych. Skorzystajmy też z cyfr i niektórych znaków specjalnych. Używając a-z, A-Z, 0-9 i około 10 znaków specjalnych, nasz alfabet do tworzenia haseł wynosi teraz 72 zamiast zaledwie 26. Złożoność hasła 8-znakowego skacze z 328 do 848 kombinacji (lub 2.4787589e+15). To całkiem znaczący skok!
Biorąc pod uwagę szybkość, z jaką współczesny komputer może odgadnąć hasła, uważa się, że potrzebujemy złożoności około 2128 kombinacji, aby być bezpiecznym. Jak już wspomniano powyżej, wyczerpujące wyszukiwanie znajdzie poprawne hasło w około połowie wszystkich kombinacji (lub 2127 operacji). Jak widać, nawet przy rozszerzonym alfabecie nasze 8-znakowe hasło nadal nie jest wystarczające.
Długość hasła i passphrases
Co jeszcze możemy zrobić, aby zwiększyć trudność znalezienia hasła? Oprócz zwiększenia liczby dostępnych znaków do wyboru, możemy również zwiększyć jego długość. Po niewielkim rozszerzeniu do 12 znaków, złożoność wyszukiwania wzrośnie do 8412 kombinacji. To znacznie bezpieczniejsza opcja. W tym przypadku binarny odpowiednik wynosi około 274. To całkiem dobrze, ale wciąż daleko od 2128, do którego dążymy.
Poza wspomnianymi już metodami istnieje jeszcze inna droga, aby zwiększyć złożoność naszych haseł. I właśnie w tym przypadku sprawdzają się tzw. passphrases. Idea stojąca za nimi polega na tym, że używamy 3-5 prawdziwych słów wybranych losowo, aby utworzyć zdanie, które nie ma sensu, ale jest łatwiejsze do zapamiętania przez ludzi niż losowe cyfry i litery.
Jako przykład, podamy 4 wyrazowe passphrase: alicja posiada białego kota. Jakie trudności sprawi hakerom próbującym przeprowadzić wyczerpujące wyszukiwanie? Aby zachować układ łatwiejszy do zapamiętania dla użytkownika, załóżmy, że używamy tylko małych liter, a-z. Rozmiar naszego zestawu znaków to ponownie tylko 32. Uwzględniając spację jako znak mamy w sumie 33 możliwych znaków i długość frazy 27. To daje nam 3327 (lub 9.9971539e+40). Binarny odpowiednik wynosi około 2133. Wreszcie mamy złożoność, której potrzebujemy i oczekujemy od naszego hasła!
Łamanie złożonych haseł
Chociaż ataki na hasła są znacznie bardziej powszechne, istnieje wiele narzędzi, które pozwalają cyberprzestępcom odkryć hasła. Najprostszym z nich jest po prostu dostarczenie do narzędzia łamiącego 'Hashcat’ listy predefiniowanych haseł. Taka lista, składająca się z prawie 22 milionów znanych fraz, jest dostępna nawet na portalu Github.
Fraza „lepiej późno niż wcale”(ang. Better late than ever) ma 22 znaki, co według tradycyjnych porad dotyczących haseł sugeruje silne hasło ze względu na długość. Jest to jednak jeden z najczęstszych idiomów w języku angielskim i znajduje się w linii 18,636,796 listy fraz.
Używanie znanych fraz jest prostym sposobem na próbę złamania passphrase, ale jest ograniczone, nawet przy 22 milionach wpisów. Alternatywne podejście polega na wykorzystaniu algorytmu PRINCE do tworzenia haseł, które są następnie wysyłane do Hashcat w celu obliczenia hashy. W swojej istocie, pozwala to atakującym na dostarczenie listy pojedynczych słów, które algorytm następnie łączy na różne sposoby.
Dlaczego warto stosować słownictwo, które wyszło z obiegu?
Dzięki prawu Zipfa wiemy, że wszystkie ludzkie języki z grubsza podlegają „regule 80/20”. W rzeczywistości najbardziej powszechne 18% słów w języku angielskim tworzy 80% wszystkiego, co mówimy. Pierwsze 100 słów tworzy około połowy naszego zasobu słownictwa. Jeśli weźmiemy pod uwagę narzędzie do łamania haseł, które jest zaprogramowane z 1000 najlepszych słów w języku angielskim, to możliwe jest, że zamiast próbować każdej możliwej kombinacji znaków, zamiast tego próbuje każdej możliwej kombinacji 3-5 fraz słownych w swoim 1000-wyrazowym słowniku.
Jak w tym przypadku wygląda alfabet hasła? Nie są to już wszystkie litery (duże i małe), cyfry i niektóre znaki specjalne. Zamiast tego mamy tylko 1000 słów do wyboru. A jak długie będzie nasze hasło? Liczby znaków nie mają znaczenia, ponieważ nie zgadujemy znak po znaku. Długość naszego hasła to tylko liczba wybranych przez nas słów.
Tak więc, matematycznie, nasza złożoność wynosi teraz tylko 10004 (lub 1,000,000,000). Jest to mniej więcej 240. Język angielski ma dziś w aktywnym użyciu około 171 000 słów. Stosując prawo Zipfa możemy oszacować, że większość ludzi wybrałaby słowo z listy liczącej zaledwie 30 780. Nawet przy użyciu tej rozszerzonej listy słów, mamy maksymalną liczbę kombinacji 30 7804, co odpowiada mniej niż 260. To daje nam gorszą ochronę niż 12-znakowe losowe hasło.
Matematyka sugeruje, że stosowanie samych haseł w najlepszym wypadku nie jest lepsze od haseł złożonych, a w najgorszym może być wręcz mniej bezpieczne.
Podsumowanie
Jak widać, stosowanie haseł krótkich jest z reguły mniej bezpieczne niż stosowanie fraz złożonych. Jednak korzystanie z utrwalonych schematów, takich jak „ala ma kota”, „Grzegorz Brzęczyszczykiewicz” ma znacznie mniej sensu, bowiem tego rodzaju frazy zbierane są w bibliotekach, z których korzystają hakerzy przy okazji łamania zabezpieczeń. Krótko mówiąc, im więcej kreatywności tym bezpieczniej. Korzystajmy z niepopularnych zwrotów, znanych tylko nam. Zapamiętamy je z łatwością, ale nie będą powtórzonymi powiedzeniami i hasłami popularnymi wśród innych ludzi.