krypteks

Schyłek ery tradycyjnych haseł

Od dawna wiadomo, że era haseł jakie do tej pory wykorzystywaliśmy musi dobiec końca. Od kiedy? W zasadzie od prelekcji RSA Security Conference w 2004 r, w której Bill Gates przewidział konieczność odejścia od tej metody autoryzacji. Jest to tym bardziej prorocze, że zaledwie rok wcześniej amerykański NIST opublikował wytyczne opisujące w jaki sposób chronić swoją cyfrową tożsamość. Uwzględniając w nich porady dotyczące haseł. Autor tego dokumentu, Bill Burr, w 2017 r. w jednym z wywiadów z rozbrajającą szczerością przyznał, że żałuje popełnionego dzieła. Dlaczego wytyczne te nie nadążyły za duchem czasu? Musimy to rozpatrzeć na trzech poziomach: kwestie zależne od nas, kwestie niezależne oraz technologia.

Trochę teorii

Jakość hasła

Posiadając wpływ na złożoność hasła, powinniśmy używać takich kombinacji znaków, które będą zarówno trudne do odgadnięcia jak i łatwe do zapamiętania. Jednak większość z nas koncentruje się tylko na tym drugim aspekcie. Tym bardziej jeżeli musimy wymyślić frazę nie do jednego serwisu a dwudziestu. Do niedawna standard mówił – minimum 8 znaków, w tym: min. 1 litera wielka + min. 1 litera mała + cyfra + znak specjalny. Co ciekawsze, w znakomitej większości to minimum nam wystarcza. Miało być 8 znaków, jest, 10 to za dużo. Rezultatem w takim podejściu najczęściej jest wyraz np. „Poziom1!” lub „Poz1om1!”. O ile w mniemaniu zwykłego internauty propozycja numer dwa może wydawać się bardziej skomplikowana, o tyle dla algorytmu nie ma to żadnego istotnego znaczenia. To po prostu ciąg ośmiu znaków z zakresu [A-Z][0-9][znaki specjalne], w którym może się zdarzyć, że i =1, a=4, e=3 itd. Dokładne obliczenia zostawimy sobie na później.

Zabezpieczenia drugiej strony

Jednak to co wymyślimy to tylko połowa sukcesu. Drugą część układanki stanowią zabezpieczenia wdrażane przez serwisy przetrzymujące nasze hasła. Zabezpieczenia a dokładnie algorytmy hash’ujące wpisywane frazy. Każda rozgarnięta osoba raczej unika wykorzystywania rozwiązań, które nie są wspierane, zostały zdeprecjonowane lub nie są wystarczająco bezpieczne. Niestety, tak samo jak nie wszyscy dbają o jakość haseł, w taki sam sposób druga strona nie musi dbać o ich prawidłowe przechowywanie. Dlatego, mimo iż mamy wrażenie, że jakaś firma jest za duża, zbyt rozpoznawalna czy doświadczona aby stosować słabe zabezpieczenia, powinniśmy brać na to poprawkę. Przykładem samym w sobie jest Microsoft. Skoro hasła nie jawiły mu się jako „spełniające kryteria wystarczającego bezpieczeństwa” to dlaczego w swoich produktach wspierał i nadal wspiera to rozwiązanie. Domyślne preferencje dotyczące ustawień złożoności hasła w Windowsach, bez użycia dodatkowych narzędzi konfiguracyjnych, w pełni odzwierciedlają tę zastanawiającą sytuację.

Możliwości techniczne

Gdy dodamy do tego aspekty technologiczne sytuacja zmienia się tym bardziej na naszą niekorzyść . Być może kiedyś, moc obliczeniowa komputerów nie dawała pola do popisu w tym obszarze, lecz obecne technologie rozciągają przed nami wachlarz możliwości. Od tradycyjnych procesorów, poprzez wysokowydajne układy graficzne oraz klastry aż do połączenia tych technik w postaci chmur obliczeniowych i wielowątkowych obliczeń na urządzeniach podpiętych do sieci. Jedyną barierą pozostają fundusze na szansę korzystania z tych możliwości. Bo czy jakiegoś przeciętnego cyfrowego rzezimieszka będzie stać na kupno wielu układów graficznych lub korzystanie z mocy obliczeniowej Azure, AWS, Google Cloud w trybie 24/7? Chętniej zrobią to wielcy gracze lub osoby zdeterminowane na skompromitowaniu wartościowego celu. Co komu po atakowaniu urzędu w Aleksandrowie Kujawskim? Może dla frajdy.

Trochę praktyki

Przejdźmy zatem do szczegółowych obliczeń. Zastosujemy trzy podejścia do generowania haseł, możliwości obliczeniowe najpotężniejszych układów graficznych dostępnych na rynku oraz aplikację Hashcat. Aby wygenerować odpowiednią moc obliczeniową musimy posłużyć się odpowiednią kartą graficzną. W segmencie laptopów będzie to Nvidia GeForce RTX 2080, w segmencie desktopów jego odpowiednik Nvidia GeForce RTX 2080 Ti a półkę serwerową zapełni nam Nvidia Tesla V100. Dla wyolbrzymienia skali problemu – słabych algorytmów hash’ujących, w naszych obliczeniach będziemy odwoływać się do „szyfrowania” za pomocą funkcji MD5. Czyli algorytmu, który bezwzględnie nie powinien być już stosowany w żadnych rozwiązaniach. Dla wyżej wspomnianych kart, wydajność generowania hash’y wynosi odpowiednio ok. 37000 MH/s, 50000 MH/s i 56000 MH/s. Ale żeby naprawdę podkręcić tempo, możemy zainwestować w instancję Amazon EC2 P3, która wykorzystuje układ ośmiu takich kart generując moc 450 GH/s. Oznacza to nic innego jak możliwość łamania 450 miliardów haseł na sekundę.

Do wizualizacji wyników posłużymy się tabelą przedstawiającą moc obliczeniową ww. układów graficznych oraz maksymalny czas potrzebny do złamania wszystkich możliwych kombinacji. Obliczając kombinacje wziąłem pod uwagę litery z alfabetu angielskiego – 26, znaki specjalne dostępne z klawiatury – 33, cyfry – 10. W przypadku wyniku grubo poniżej 1 np. 0,001 wpisywałem po prostu 0. Rzeczywisty czas potrzebny do skompromitowania hasła może różnić się od czasu przewidywanego. Czas ten będzie wydłużony jeżeli do hash’owania użyto mocniejszych algorytmów.

Metoda 1: Losowy ciąg znaków

Zwykle trudno jest zapamiętać ciąg zawierający losowo wybrane znaki, zwłaszcza gdy z niczym się taki wyraz nie kojarzy. Rozwiązaniem może być wymyślenie frazy składającej się z kilku słów i wybranie tylko pierwszych liter do utworzenia hasła. Będąc na etapie opieki nad dzieckiem jedyne co wpadło mi do głowy to: „poszłam sobie do ogródka, napotkałam krasnoludka” :), a więc: „PsDo,Nk1”

Liczba kombinacji: 6 095 689 385 410 816 – słabo

Metoda 2: Słownik

Jeżeli żadna fraza nie przychodzi nam do głowy a mimo to potrzebujemy łatwo przyswajalnego hasła zapewne skorzystamy z opcji słownikowej. Proszę nie mylić słownikowego tworzenia hasła z jego słownikowym odgadywaniem. Myśląc, że przechytrzymy hakera, użyjemy zamiast niektórych liter, cyfr. Takich zamienników jest raptem osiem 1=i, 2=z, 3=e, 4=a, 5=s, 8=b, 9=g, 0=o, a więc: „P0d4N!3m”

Liczba kombinacji: 14 623 232 000 – b. słabo

Metoda 3: Szablon

Jeżeli mamy totalną pustkę w głowie w czasie wymyślania hasła, korzystamy zazwyczaj z tego co jest skojarzeniowe i łatwo powtarzalne aby przy ewentualnej zmianie nie wymyślać koła na nowo. Najczęściej jest to coś związanego z nami osobiście i liczba wskazująca miesiąc, rok lub kombinacja tych rozwiązań. Gdy zmiana hasła wymuszana jest co trzydzieści dni, mamy większe szanse, że w określonym miesiącu dokonało jej więcej osób – celów, np. „A$ka0120”.

Liczba kombinacji: 52 200 625 – dno, nie warto pokazywać samych zer w wynikach.

W jaki sposób tworzyć mocne hasła

Metoda 1 – Więcej znaków

Niestety nie jest to metoda wydajna dla zwykłego użytkownika. Dlatego polecam stosować ją w przypadku kont o szczególnym znaczeniu lub takich, które rzadko używamy. Przykładem może być domyślne konto głównego administratora systemu lub konto techniczne wykorzystywane na masową skalę np. konto do udziału sieciowego wykorzystywanego przez skaner. O ile oczywiście nie ma logowania via AD, poprzez kartę zbliżeniową lub kod PIN.

* – przy wykorzystaniu instancji Amazon EC2 P3

Metoda 2 – Polskie znaki

Wykorzystywanie polskich znaków w hasłach nie jest takie oczywiste. Z reguły używamy liter z angielskiego alfabetu – 26, natomiast polski oferuje ich aż 32, co przy uwzględnieniu dużych liter daje 52 i odpowiednio 64 znaki. Przekładając to na kombinacje, z uwzględnieniem cyfr i znaków specjalnych dostępnych z klawiatury, mamy 107 znaków do dyspozycji. Porównując z pierwszą tabelą, otrzymujemy następujące wyniki:

Liczba kombinacji: 112 404 703 353 490 100

Metoda 3 – Połączone wyrazy

Metoda słownikowa nie jest skuteczna jeżeli skorzystamy tylko z jednego wyrazu. Natomiast skuteczność tego sposobu wzrasta proporcjonalnie jeżeli połączymy kilka wyrazów w jedną frazę. Biorąc pod uwagę, że słownik języka polskiego ze wszystkimi odmianami zawiera ok. 200 tyś ośmioznakowych wyrazów, otrzymujemy pokaźną liczbę kombinacji. Nie możemy jedynie używać dobrze znanych zwrotów, przysłów, cytatów itp.

Liczba kombinacji: 1 600 000 000 000 000 000 000

Alternatywy

W przypadku gdy nie mamy ochoty silić się na kombinacje i próbować przechytrzać crack’erów, możemy skorzystać z wielu alternatyw jakie obecnie są na rynku. Niektóre są na nim już od dawna, niektóre dopiero raczkują, przynajmniej w Polsce. Najbardziej popularną opcją jest 2FA (uwierzytelnienie dwuskładnikowe) np. przez SMS, choć i na tym polu znajdują się przestępcy, którzy potrafią wykorzystać słabość metody lub bardziej osób posługujących się tą metodą. Kolejna opcja to wsparcie sprzętowe z wykorzystaniem klucza bezpieczeństwa np. YubiKey. Pytanie, czy zdołamy się zalogować do konta gdy przypadkowo zniszczymy lub zgubimy urządzenie. Możemy również rozważyć wykorzystanie partnera uwierzytelnienia jakim jest Google Authenticator. Jednak czy gigant z Moutain View musi wiedzieć o nas wszystko. Wideoweryfikacja dopiero zagląda nam pod strzechy ale nie boją się w nią inwestować instytucje finansowe więc wydaje się bezpieczna. Czy zdąży zadomowić się na tyle szybko aby kolejna technologia – telemetria, jej nie wyparła, to się dopiero okaże.

Podsumowanie

Hasło to wciąż podstawowa metoda uwierzytelnienia. Jednak nie należy się do niej zbytnio przywiązywać a może nawet wypada korzystać z nowinek, które mogą ułatwić życie. Człowiek z natury jest próżny i nie będzie tworzył sobie dodatkowych problemów tam gdzie nie musi. Jakiekolwiek hasło musiałby wymyślić, zawsze będzie ono trudne do zapamiętania. Wynika to z faktu, że potrzebujemy ich nie tylko do banku, sklepu internetowego czy lekarza. W dobie „on-line” potrzebujemy ich w każdym aspekcie życia. Sam naliczyłem ich ze trzydzieści. Jedni przechowują je w kalendarzu, inni w pliku, jeszcze inni w menedżerze haseł. Bez względu na zabezpieczenie tych „nośników”, jeżeli chcecie chronić coś co jest dla Was na prawdę ważne, powinniście uwzględnić alternatywne lub dodatkowe mechanizmy obrony. Najlepiej takie, w posiadaniu których jesteście a nie ma ich strona druga a nawet trzecia. Na koniec pozostaje mi odesłać wszystkich zainteresowanych do nowych wytycznych NIST 800-63-3 „Digital Identity Guidelines”.

Spodobał Ci się ten wpis? Zajrzyj i polub nasz profil na Facebook’u, Twitterze lub LinkedIn aby otrzymywać najświeższe informacje. A jeśli potrzebujesz wsparcia w zakresie bezpieczeństwa informacji, skontaktuj się z nami. Przygotujemy ofertę dostosowaną do potrzeb Twojej organizacji. Auditownia świadczy usługi w zakresie przeprowadzania audytów, analizy ryzyka, przygotowania polityk, doradztwa i wsparcia w obszarze bezpieczeństwa informacji.