Przejdź do treści

Czym jest „silne hasło” i co o tym decyduje?

5
(1)

„Silne hasło” to obecnie bardzo często pojawiający się zwrot używany w kontekście bezpieczeństwa naszych haseł. Zastosowanie tego typu hasła jest już wymogiem w nowoczesnych systemach, a niezastosowanie się do ogólnie przyjętych reguł dotyczących „siły hasła” w wielu przypadkach uniemożliwi nam chociażby rejestrację do danego serwisu internetowego. Choć podstawowe wytyczne dotyczące siły hasła są (mam nadzieję) powszechnie znane, nie każdy wie, z czego wynika taki wymów – bynajmniej nie chodzi tutaj jedynie o większą trudność w zgadnięciu hasła podczas przeprowadzania takich prób, fizycznie przez daną osobę.

Mimo, iż definicja silnego hasła powinna być już powszechnie znana, nie mogę pominąć krótkiego wstępu teoretycznego wyjaśniającego tą kwestię. Przyjęło się, że silne hasło to kombinacja przynajmniej 8 znaków nie mających logicznego sensu (nie będących wyrażeniami słownikowymi, czyli słowami które możemy znaleźć w dowolnym słowniku) składająca się ze znaków pochodzących z przynajmniej 3 spośród 4 grup:

  • małych liter (od „a” do „z”)
  • dużych liter (od „A” do „Z”)
  • cyfr (0,1,2,3,4,5,6,7,8,9)
  • znaków specjalnych (np. !@#$%^&*()/?’)

Są to oczywiście ogólnie przyjęte wymagania minimalne. Aby lepiej zrozumieć czym jest silne hasło posłużmy się przykładem. Słabym lub niewystarczająco silnym hasłem będą np.

  • Agnieszka12 (mimo posiadania znaków z 3 różnych grup oraz wymaganej długości, imię „Agnieszka” bez problemu jesteśmy w stanie znaleźć czy to w słowniku czy na liście znanych imion)
  • kwiatek345! (tutaj również, mimo posiadania znaków z 3 różnych grup oraz wymaganej długości, słowo „kwiatek” znajdziemy w każdym słowniku języka polskiego, a zastosowanie „!” na końcu jest jednym z najbardziej oczywistych zabiegów)
  • jgdoeiutn (tutaj hasło nie jest już słownikowe, jednak składa się wyłącznie z małych liter, co sprawia, że jest ono stosunkowo proste do złamania)

Przykładem silnego haseła może być natomiast np.

  • QxXt&qCky55$ (znaki pochodzą ze wszystkich 4 grup, nie stanowią logicznej całości oraz jest ich wystarczająco dużo)

Co właściwie decyduje o sile hasła? Dlaczego wcześniej wymienione hasła nie są wystarczająco silne?

O sile hasła decyduje jego złożoność, a wymogi dotyczące silnego hasła zostały ustalone na podstawie chłodnych obliczeń matematycznych. Do zrozumienia tych obliczeń oraz samego pojęcia „siły” haseł, będziemy musieli zahaczyć o podstawy kryptografii. Zacznijmy jednak od tego, dlaczego w ogóle wspominamy w tym miejscu o kryptografii, a najłatwiej będzie nam to wytłumaczyć na konkretnym przykładzie – działania w danym systemie przykładowego mechanizmu rejestracji oraz logowania w kontekście przetwarzania i przechowywania hasła.

Załóżmy, że mamy użytkownika, który rejestruje się na stronie przykład.pl. Przy rejestracji oprócz adresu email czy loginu podaje on swoje hasło – załóżmy, że użytkownik nie jest świadomy istoty posiadania silnego hasła i stosuje on hasło „haslo123”. Aby zarejestrowany użytkownik mógł się zalogować do systemu, system musi posiadać informację czy wprowadzone podczas logowania hasło jest prawidłowe. Upraszczając, by móc to stwierdzić, podczas rejestracji hasło zapisywane jest do bazy danych, a w momencie logowania, wprowadzone przy tej okazji hasło chcącego zalogować się do systemu użytkownika zostaje porównane z tym, znajdującym się w bazie danych. Jeżeli hasła są identyczne użytkownik zostaje zalogowany, jeżeli nie, następuje odmowa dostępu i najczęściej użytkownik proszony jest o wprowadzenie hasła ponownie.

I tutaj zahaczamy o kryptografię – znajdujące się z bazie danych hasło de facto nie jest hasłem, a tzw. hash-em tego hasła. Hash to nic innego jak zaszyfrowana za pomocą stosowanego algorytmu szyfrującego (najczęściej MD5, SHA lub bcrypt) postać naszego hasła, która nie jest możliwa do odczytania gołym okiem. Użytkownik wprowadzając hasło przy okazji logowania wprowadza je oczywiście w tzw. formie jawnej, czyli w postaci niezaszyfrowanej. Dopiero system po naciśnięciu przycisku „login” szyfruje hasło za pomocą tego samego algorytmu, a następnie porównuje uzyskany hash z tym, który znajduje się w bazie danych. Przy logowaniu porównywane są więc nie tyle hasła, co hash-e, czyli ich zaszyfrowane postaci. Naturalnie zastosowanie tego samego algorytmu szyfrującego w każdym przypadku zwróci taki sam hash dla takiego samego hasła. Dla podanego wcześniej przykładowego hasła hash będzie miał następującą formę:

Dlaczego hasła przechowywane są w bazie danych w postaci zaszyfrowanej? Odpowiedź jest bardzo prosta. W przypadku wycieku bazy danych, czyli ujawnienia dostępnych w niej informacji osobom niepowołanym, nie zobaczą oni haseł użytkowników, a jedynie ich zaszyfrowane formy, które jak widać na powyższym przykładzie nie stanowią żadnej logicznej, zrozumiałej dla człowieka całości. Aby móc je poznać i jakkolwiek wykorzystać, przestępcy będą zmuszeni odszyfrować takie hasła, co w przypadku dobrego algorytmu szyfrującego oraz silnego hasła nie jest prostym zadaniem. Wynika to przede wszystkim z faktu, że hasła szyfrowane są za pomocą tzw. funkcji jednostronnej. Jest to specjalny typ algorytmu, za pomocą którego w łatwy sposób możemy zaszyfrować hasło, natomiast jego odszyfrowanie jest z definicji niemożliwe – funkcje te są tworzone w taki sposób, aby matematycznie, w rozsądnej ilości czasu, nie było sposobu na odszyfrowanie takiego hasła.

Jedyną metodą na „złamanie” takiego hasła, czyli poznanie jego wartości jawnej (upraszczając: odszyfrowanie) jest więc szyfrowanie kolejnych haseł i porównywanie otrzymanych hash-y. Hasła łamane są za pomocą dedykowanych do tego programów (np. hashcat), a prędkość łamania zależna jest od mocy obliczeniowej karty graficznej urządzenia, na którym łamiemy hasło. Powołując się na to wystąpienie, karta graficzna GTX 1080, którą może zakupić każdy z nas potrafi łamać hash-e utworzone za pomocą jednego z najpopularniejszych algorytmów – MD5 z maksymalną prędkością 25 miliardów kombinacji na sekundę (w przypadku zwykłych komputerów wyposażonych w 1 dedykowaną kartę graficzną prędkość zależna będzie przede wszystkim od stosowanej strategii łamania haseł – brute-force, atak słownikowy itp., przez co może być istotnie różna od podanej wartości, ale na potrzeby tego wpisu posłużę się podaną wartością). Oznacza to, że hashcat uruchomiony na komputerze z taką kartą graficzną porównuje „łamany” hash z 25 miliardami różnych haseł w ciągu zaledwie jednej sekundy! A pamiętajmy, że obecnie przestępcy do łamania haseł wykorzystują tworzone w chmurze maszyny wirtualne, do których podpięte może być kilka takich kart graficznych, co przyśpiesza ten proces nawet kilkukrotnie!

Teraz trochę matematyki, aby uzmysłowić sobie z czego wynikają wymagania dotyczące siły hasła. Alfabet angielski (najczęściej wykorzystywany w przypadku kryptografii) zawiera 26 liter. Oznacza to, że teoretycznie hasło składające się z zaledwie jednej litery posiadałoby 26 możliwych kombinacji, czyli było by możliwe do złamania nawet przez człowieka, stosując metodę prób i błędów w najwyżej minutę. Hasło zawierające 2 małe litery posiada już 26*26 czyli 676 możliwych kombinacji (np. „aa”, „ab”, „ba”). Jak widać dodanie każdego kolejnego znaku, nawet jeżeli są to tylko małe litery istotnie zwiększa liczbę możliwych kombinacji. Załóżmy teraz, że hasło złożone z 2 liter może zawierać zarówno małe, jak i duże litery. Wtedy nie operujemy już na 26 literach, a na 52 – 26 małych („a”-„z”) + 26 dużych („A”-„Z”). Czyli dwu znakowe hasło, zawierające małe lub duże litery posiada już 52 * 52 czyli 2704 możliwe kombinacje – ponad 4 razy więcej kombinacji na skutek wzięcia pod uwagę jedynie większych liter podczas tworzenia hasła!

Powyższe przykłady jasno obrazują na czym polega złożoność hasła – jest to po prostu liczba możliwych kombinacji takiego hasła, która przekłada się bezpośrednio na trudność jego złamania. To jasno pokazuje dlaczego tak istotne jest posiadanie długiego hasła oraz różnicowanie wykorzystanych do jego tworzenia znaków – posługując się konkretnymi liczbami:

  • 8 znakowe hasło, złożone wyłącznie z małych liter ma 208 827 064 576 możliwych kombinacji. Dla człowieka może się to wydawać ogromna liczba, dla komputera, łamiącego 25 mld kombinacji na sekundę (zgodnie z wcześniej opisywanymi danymi) takie hasło w najgorszym przypadku zostanie złamane przed upływem 8 sekund (!)
  • 8 znakowe hasło, złożone tym razem zarówno z małych jak i dużych liter posiada 53 459 728 531 456 możliwych kombinacji. Złamanie takiego hasła przy tym samym algorytmie szyfrowania oraz tej samej maszynie zajmie w najgorszym przypadku 35 minut (!). Samo dodanie dużych liter to tego samego hasła, podniosło czas łamania z 8 sekund do 35 minut! Różnica jest ogromna!

Naturalnie dodając do naszego 8 znakowego hasła cyfry oraz znaki specjalne istotnie podnosimy ilość możliwych kombinacji. Jak to wygląda w przypadku spełnienia ogólnie przyjętych minimalnych wymagań dotyczących złożoności hasła?

  • Do 52 znaków (wszystkie możliwe małe i duże litery) dodajemy również 10 możliwych cyfr (0-9), więc na każdy jeden znak w haśle przypadają w tym przypadku 62 możliwe kombinacje. 8 znakowe hasło ma więc 62^8 = 218 340 105 584 896 możliwych kombinacji. Złamanie takiego hasła za pomocą tej samej maszyny oraz sposobu, sprawdzającego 25 miliardów kombinacji na sekundę zajmie w najgorszym przypadku już prawie 2,5 godziny!

Mało? Dużo? To zależy. Pamiętajmy, że są to jedynie wymagania minimalne. Dla porządku, jak wygląda sytuacja gdy w haśle zastosujemy również znaki specjalne?

  • Biorąc pod uwagę wszystkie znaki specjalne znajdujące się na klawiaturze liczba możliwych kombinacji jednego znaku zwiększa się nam z 62 do 95. W takim przypadku liczba kombinacji dla 8 znakowego hasła wynosi 6 634 204 312 890 625 co daje nam w najgorszym przypadku około 3 dni.

Finalnie, jeżeli atakujący jest świadomy łamania hasła do bardzo kluczowego systemu, bariera 3 dni nie będzie żadną przeszkodą. Do systemów o kluczowym znaczeniu nie powinniśmy stosować minimalnych wymagań bezpieczeństwa – wydaje się to logiczne nie tylko w kontekście hasła. Takie hasło oprócz złożoności wygenerowanej poprzez zastosowanie różnego typu znaków powinno być również odpowiednio dłuższe. Jaki wpływ na złożoność hasła ma dodanie jednego dodatkowego znaku ? Zależnie od tego jakie znaki stosujemy, mamy już wyżej wyliczoną liczbę możliwych kombinacji dla 8 znakowego hasła. Biorąc na warsztat hasło 9 znakowe otrzymaną liczbę kombinacji należy przemnożyć przez liczbę możliwych kombinacji pojedynczego znaku. Dlatego dla hasła składającego się z małych i dużych liter, oraz cyfr bierzemy liczbę kombinacji dla 8 znakowego hasła – 218 340 105 584 896 i mnożymy ją przez liczbę kombinacji pojedynczego znaku – 62. W ten sposób liczba kombinacji zwiększa się do około 13 biliardów kombinacji. Wynika z tego, że dodanie tylko jednego znaku do naszego hasła zwiększyło maksymalny czas potrzebny na złamanie hasła z 2,5h do ponad 6 dni!

Optymalne hasło

Jak widać zwiększenie długości hasła o każdy 1 znak powoduje istotne zwiększenie liczby kombinacji z znaczne wydłużenie czasu potrzebnego na złamanie takiego hasła. Jakie wnioski można z tego wysnuć ? Stosowanie odpowiednio długiego i złożonego hasła może dać nam względne bezpieczeństwo. Jeżeli już upieramy się przy tym, aby przechowywać swoje hasło w głowie, musimy znaleźć rozsądny balans pomiędzy długością hasła a możliwością jego zapamiętania. W mojej opinii rozsądną granicą jest zastosowanie 12 znakowego hasła, składającego się ze znaków pochodzących ze wszystkich 4 grup. Takie hasło posiada aż 540 360 087 662 636 962 890 625 możliwych kombinacji. Posługując się dokładnie tymi samymi danymi, które były stosowane w obliczeniach powyżej, maksymalny czas potrzebny na złamanie takiego hasła to prawie 700 tys lat! Pod warunkiem, że znaki wchodzące w skład hasła nie tworzą logicznej całości …

„Hasła słownikowe”

Omawiane przed chwilą wyliczenia przedstawiają wpływ dwóch podstawowych czynników na siłę hasła – stosowania różnego typu znaków oraz odpowiedniej długości. W domyśle zakładałem tutaj, że hasło łamane jest metodą brute-force (polegającą na sprawdzaniu kolejno podstawianych znaków i sprawdzaniu czy ich aktualny układ jest zgodny z prawdziwym hasłem). Jednak metoda brute-force zdecydowanie nie jest najchętniej wybieraną metodą łamania hasła – jest najwolniejszą ze znanych metod, a w większości przypadków lepiej sprawdzą się inne metody. O co dokładnie chodzi?

Ludzie bardzo często budują swoje hasła tak, aby mogli je łatwo zapamiętać. Stąd też hasła uznawane za słabe bardzo często mimo posiadania odpowiedniej długości oraz złożoności posiadają kilka charakterystycznych cech:

  • Wyraz znajdujący się w słowniku
  • Imię, Nazwisko, Nazwa firmy lub inny logiczny ciąg znaków/wyraz, który jest powszechnie znany, ale może nie znaleźć się w słowniku
  • liczby z zakresu 1-10 lub odwołujące się do dat (np. urodzenia), najczęściej z przedziału od 1900 do obecnego roku
  • „!” stosowany na końcu hasła

Tego typu „typowe” zabiegi, pojawiające się wśród haseł użytkowników, znacznie obniżają siłę takiego hasła. Wynika to z zastosowania tzw. ataku słownikowego, polegającego na sprawdzeniu czy hasło nie składa się z tego typu elementów. Obecnie oprogramowania pozwalające na przeprowadzenie ataku słownikowego wykonuje również typowe permutacje – sprawdza np. czy zamiast litery „A” ktoś nie wstawił „4”, zamiast litery „E” cyfry „3” itp.

Dlatego właśnie hasła zawierające szeroko pojęty logiczny ciąg znaków (np. słowa) w wielu przypadkach nie będą uznawane za silne hasła. W przypadku, gdy ciąg znaków jest zupełnie losowy, atak słownikowy nie będzie miał żadnego sensu, co bardzo często może wiązać się z nieodszyfrowaniem takiego hasła przez atakującego, który dla wszystkich haseł, które wyciekły z bazy danych będzie próbował zastosować atak słownikowy, przede wszystkim ze względu na jego szybkość oraz wysoką skuteczność.

Rozwiązanie aktualnie najbliższe ideałowi

Stosowanie bardziej złożonych i dłuższych haseł dla wielu osób może być trudne do zapamiętania. Wymuszanie tego typu haseł np. na pracownikach firmy, którą zabezpieczamy kończy się zapisywaniem ich na słynnych żółtych karteczkach, co całkowicie przeczy podnoszeniu poziomu bezpieczeństwa. Jak jest więc bliższe ideałowi rozwiązanie niż opisane wcześniej optymalne hasło? Stosowanie długich i złożonych haseł, które będziemy przechowywać w menadżerze haseł.

Menadżer haseł pozwala na tworzenie długich i złożonych haseł bez konieczności pamiętania ich. W zasadzie jedynie co musimy pamiętać to główne hasło, dzięki któremu będziemy w stanie dostać się do swoich haseł. W przypadku przechowywania swoich haseł w chmurze korzystając np. z LastPass nie musimy nawet pamiętać hasła do odblokowywania komputera – wystarczy, że posiadamy aplikację na swoim telefonie, do którego pin przeważnie i tak pamiętamy. Menadżer haseł jest o tyle wygodnym rozwiązaniem, że może on również tworzyć dla nas bezpieczne hasła:

Powyższe hasło jest bardzo trudne do zapamiętania, ale gwarantuje nam wysoki poziom bezpieczeństwa. Hasło z menadżera haseł możemy przy okazji skopiować, lub doinstalować odpowiednią wtyczkę w przeglądarce wypełniającą takie hasło w panelu logowania do danego serwisu za nas. Przy okazji jesteśmy w ten sposób chronieni przez fałszywymi stronami podszywającymi się pod popularne media społecznościowe czy banki – dla człowieka literówka w adresie URL/domenie może być niezauważalna na pierwszy rzut oka, natomiast dla menadżera haseł jest to zupełnie inna strona. W ten sposób posiadanie wtyczki zabezpieczy nas przed ujawnieniem swoich danych uwierzytelniających przestępcom, ponieważ menadżer nie wypełni takich danych logowania na tej stronie.

Coś jest dla Ciebie niezrozumiałe? Chciałbyś wyrazić opinię na temat artykułu? Znalazłeś jakiś błąd? Koniecznie daj mi o tym znać wysyłając maila lub wypełniając formularz!

Czy ten wpis był dla Ciebie przydatny?

Zostaw ocenę!

Średnia ocena 5 / 5. 1

Nikt nie ocenił jeszcze tego wpisu. Bądź pierwszym, który to zrobi!

Przykro mi, że post nie był dla Ciebie przydatny ...

Podziel się proszę swoją opinią

Twoja opinia jest dla mnie niezwykle ważna

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.