Siła hasła

Siła hasła

  • Comments 9
  • Likes

Mimo postępu technologii, hasła nadal są najczęściej spotykanym mechanizmem uwierzytelniania. Nawet zakładając, że mechanizm, który ich używa nie ma żadnej słabości musimy zdać sobie sprawę, że jeżeli hasło ma skończoną długość (a trudno, żeby miało nieskończoną), to podejmując skończoną ilość prób, można hasło odgadnąć. Odgadywanie może polegać na jednej z metod:

  • Po prostu wpisujemy hasło. Imię kota, później markę samochodu, datę urodzenia, abc123. I tak do skutku. Metoda nie jest specjalnie wyszukana, ale w praktyce przynosi niezłe efekty zwłaszcza, jeżeli atakujący zna osobiście atakowanego.
  • Uruchamiamy automat, który pobiera ze słownika haseł (prosto ściągalne z Internetu) słowo po słowie i próbuje użyć ich jako hasła. Dobre słowniki mają kilkaset tysięcy haseł.
  • Uruchamiamy automat, który używa haseł ze słownika, doczepiając im na końcu najbardziej typowe znaki takie jak 0, 123 czy wykrzyknik.
    Uruchamiamy automat, który próbuje wszystkich kombinacji po kolei. aaaa, aaab, aaac, ..., zzzy, zzzz, aaaaa.... i tak dalej, do skutku. W informatycznym slangu, metoda ta nazywana jest "brute force".

Skuteczność tych metod jest różna. Jak powiedzie się metoda pierwsza, to znaczy że użyto zbyt trywialnego hasła albo, że atakujący miał dużo szczęścia. Atakującemu "ręcznie" zwykle znudzi się po jakimś czasie od minuty do godziny i prawdopodobnie się podda.

Automaty się nie nudzą a do tego są szybsze niż człowiek stukający w klawiaturę. Dla dobrego, powiedzmy, że złożonego z dziesięciu komputerów, automatu do łamania haseł, wydajność na poziomie 100000 prób na sekundę nie jest nieosiągalna.

Jak łatwo policzyć, słownik złożony nawet z miliona haseł zostanie sprawdzony w 10 sekund. Jeżeli zasób był zabezpieczony hasłem ze słownika, to w takim czasie zabezpieczenie zostanie złamane. Warto wiedzieć, że w słownikach są nie tylko "normalne" słowa, ale i typowe hasła takie jak qwerty123 czy 1qaz@WSX.

Jeżeli zastosujemy hasło składające się ze słowa słownikowego i doczepionego na końcu ciągu znaków (na przykład alamakota123) – czas łamania zależy od tego ile takich ciągów będzie sprawdzane. Typowo jest to kilkadziesiąt. To wystarcza. Przy założonej wydajności odgadywania, oznacza to, że hasło podda się w czasie kilkunastu minut. To nie jest dobre zabezpieczenie.

Ciekawiej robi się przy hasłach nie dających się odnaleźć w słowniku i nie zawierających w sobie dużych słów prosto ze słownika.

Jeżeli hasło składa się z samych małych liter – mamy do dyspozycji 26 znaków. Łamiąc takie hasło mamy:

  • Dla hasła pięcioznakowego: 11881376 możliwości, czyli niecałe 2 minuty.
  • Dla hasła sześcioznakowego: 308915776 możliwości, czyli niecałą godzinę.
  • Dla hasła siedmioznakowego: 8031810176 możliwości, czyli prawie doba.
  • Dla hasła ośmioznakowego: 208827064576 możliwości, czyli ponad 3 tygodnie.
  • Dla hasła dziewięcioznakowego: 5429503678976 możliwości, czyli niemal dwa lata.
  • Dla hasła dziesięcioznakowego: 141167095653376 możliwości, czyli około 44 lata.

Jak jasno widać – warto stosować długie hasło, ale bez sięgania po prawdziwe słowa. Jak wspomniałem wcześniej, hasła ze słownika łamane są w kilka sekund.

A jeżeli, zamiast stosować długie hasło z samych małych liter (takie jak asodczlkme) zastosujemy krótsze, ale złożone z liter dużych i małych (takie jak AsODcz)? Mamy do dyspozycji 52 znaki. Ilość prób i czas łamania wyniosą maksymalnie:

  • Dla hasła pięcioznakowego: 380204032 możliwości – 1 godzina
  • Dla hasła sześcioznakowego: 19770609664 możliwości – ponad dwa dni
  • Dla hasła siedmioznakowego: 1028071702528 możliwości – niecałe cztery miesiące
  • Dla hasła ośmioznakowego: 53459728531456 możliwości – 17 lat
  • Dla hasła dziewięcioznakowego: 2779905883635712 możliwości – ponad 800 lat
  • Dla hasła dziesięcioznakowego: 144555105949057024 możliwości – prawie 47 tysięcy lat

Choć można założyć, że w tym czasie komputery zwiększą (zgodnie z prawem Moore'a) swoją moc obliczeniową, to i tak trochę im to zajmie.

Wychodzi, że dziesięcioznakowe hasło złożone z dużych i małych liter (takie jak sKIrEcyeAk) jest całkiem dobrym zabezpieczeniem.

Kombinujmy więc dalej. Do dużych i małych liter dodajmy cyfry. Razem 62 znaki do dyspozycji. Jeżeli zechcemy takie hasło złamać metodami brute force, otrzymamy maksymalne czasy:

  • Dla hasła pięcioznakowego: 916132832 – 2,5 godziny
  • Dla hasła sześcioznakowego: 56800235584 – prawie tydzień
  • Dla hasła siedmioznakowego: 3521614606208 – ponad rok
  • Dla hasła ośmioznakowego: 218340105584896 – prawie 70 lat
  • Dla hasła dziewięcioznakowego: 13537086546263552 – ponad 4000 lat
  • Dla hasła dziesięcioznakowego: 839299365868340224 – ponad 260 tysięcy lat

Duże i małe litery połączone z cyframi (na przykład dE3F4R5aa1) dają już hasło całkiem przyzwoite i trudne do złamania.

W przypadku tak zwanych znaków specjalnych, sprawa nieco się komplikuje. wynika to z faktu, że o ile litera A jest mniej więcej tak samo często używana jak Z, a cyfra 1 jak cyfra 9, to znak ! czy . jest znacznie bardziej popularny niż na przykład znaki + { ; _ czy \.

Podstawowe znaki specjalne obejmują to, co dostępne jest przez Shift+cyfra: !@#$%^&*() oraz znak kropki. Rozszerzona lista obejmie dodatkowo wszystko to, co dostępne jest z prawej strony klawiatury. Można teoretycznie używać znaków "bardzo specjalnych" takich jak ™, ® czy €, ale wtedy pojawia się duże ryzyko, że jakiś system będzie je źle rozumiał lub wprowadzał w taki sposób, że uwierzytelnianie stanie się niemożliwe, więc lepiej ich unikać. Przyjmując, że podstawowych znaków specjalnych jest 11 a z rozszerzonymi łącznie 30, otrzymamy w końcu tabelkę:

 

  Małe litery (26) Małe i wielkie litery (52) Litery i cyfry (62) Litery, cyfry i podstawowe znaki specjalne (73) Litery, cyfry i pełny zestaw znaków specjalnych (92)
5 znaków 2 minuty godzina 2 godziny 5 godzin 18 godzin
6 znaków godzina 2 dni 7 dni 17 dni 70 dni
7 znaków doba 4 miesiące 1 rok 3 lata 17 lat
8 znaków 20 dni 17 lat 70 lat 255 lat 1600 lat
9 znaków 2 lata 800 lat 4000 lat 19000 lat 150000 lat
10 znaków 44 lata 47000 lat 260000 lat 1,3mln lat 13mln lat

 

Warto zwrócić uwagę, że mowa jest o czasach maksymalnych. Jeżeli atakujący będzie miał dużo szczęścia – zgadnie w pierwszej sekundzie. Utrudnić mu to można stosując taki zestaw znaków hasła, jakich na pewno nie zechce sprawdzać. Czyli coś w okolicach ostatniej kolumny tabelki.

Dla jasności, warto wspomnieć jeszcze co się stanie, jeżeli hasło zastąpimy kluczem o długości na przykład 128 bitów. Maksymalny czas łamania przez nasz automat wyniesie ponad 107902830708060141889705291 lat. Długo, zwłaszcza pamiętając, że wszechświat istnieje "tylko" 14000000000 lat

Warto pomyśleć jeszcze o zwiększaniu mocy obliczeniowej automatu zgadującego hasła. Komputerów na świecie jest dużo i jeżeli do pracy "namówimy" na przykład dziesięć tysięcy maszyn – czas łamania skróci się tysiąc razy w porównaniu z dziesięcioma komputerami założonymi na początku. To duży zysk, ale na przykład dla dziewięcioznakowego hasła ze znakami specjalnymi, oznacza w praktyce sto pięćdziesiąt lat nieprzerwanego liczenia. Czyli w praktyce nie ma się chyba czego obawiać.

Wszystkie te dywagacje opierają się na założeniu, że stosowane algorytmy nie mają znanych wad. Dla współcześnie stosowanych rozwiązań zazwyczaj jest to prawda, ale o niejednym algorytmie tak myślano i czas brutalnie rozwiał te nadzieje.

Jeżeli ktoś chce zweryfikować powyższe obliczenia, to przypomnę tylko, że zbiór odgadywanych haseł jest wariacją z powtórzeniami.

Autor: Grzegorz Tworek [MVP]

Comments
  • Dodam, że jeżeli ktoś ma problem z hasłami (wymyślanie oraz zapamiętywanie) to można pomyśleć na menadżerem haseł. Bynajmniej nie w postać notatnika lub excela ;)

    Ja używam z sukcesem od kilku lat program KeePass, który również w sobie ma wbudowany generator haseł. Używam go do każdego loginu - w każdym miejscu gdzie się zapisałem mam inne losowe hasło. W praktyce wygląda to tak, że nie znam żadnego swojego hasła, które jest zbudowane średnio z 32 znaków (litery mełe oraz duże, cyfry i znaki specjalne).

    Jedynie trzeba pomyśleć nad sesownym i rozważnym backupowaniem bazy i odpowiednim przechowywaniem jej jak i programu.

    P.S.

    Bardzo ciekawy art Grzegorzu:)

  • Dziękuję za dobre słowa :)

    Wiem, że to podstawy, ale jak widać, czasem warto do nich sięgnąć, oprócz bujania w obłokach na wysokim poziomie.

    KeePass jest świetny i choć sam nie używam (w każdym razie, póki moja własna pamięć działa) - zdecydowanie jest godny polecenia.

    Generator o którym wspominasz ma również tą zaletę, że nie jest człowiekiem i wygeneruje hasło mocno przypadkowe, przez co nie wystąpią w nim żadne proste do odgadnięcia wzorce.

  • Dla zainteresowanych tematyką http://www.goodpassword.info/. Problem tylko w tym, że ludzie wierzą w siłę hasła, nie zwracając uwagi na inne drogi, którymi niepowołani mogą to hasło zdobyć.

  • A jak się ma kwestia wykorzystania tęczowych tablic do brutalnego łamania haseł ? O ile skróciłby się teoretycznie okres czasu potrzebny na złamanie hasła - kilkadziesiąt sekund w miejsce kilkunastu/kilkudziesięciu dni ?

  • Tęczowe tablice są super wynalazkiem, ale:

    1. muszą być policzone dokładnie dla tego hasła, którego użyjesz

    2. musisz bardzo dokładnie znać algorytm szyfrowania

    3. musisz mieć dostęp do zaszyfrowanej wartości

    Zazwyczaj spełnienie wszystkich trzech warunków nie jest takie proste jak się wydaje.

  • Osobiście mówiąc ten artykuł pomógł mi z hasłem :) Osobiście mam bardzo skuteczną pamięć i mnie nie zawodzi przy zapamiętywaniu haseł. Moje hasło które założyłem na folder :) Z prywatnymi rzeczami składa się z 16 cyfer , Dużych I Małych liter jak i znaków specjalnych ;] Kolega próbował odgadnąć automatem hasło , jednak mineły 2 miesiące i nie może go odgadnąć. :)

  • te dane z czasem są już nieaktualne..  nVidia wprowadziła technologię CUDA, która przyspiesza crackowanie hasła  kilka razy

  • Zgadzam się z Tobą. Dlatego powołałem się na prawo Moore'a.

    Ile haseł na sekundę możesz sprawdzić dzięki tej technologii, o której piszesz?

  • @Dariusz - polecam dropbox do backupu bazy danych keepass.

    @Grzegorz - jezeli nie uzywasz KeepPass to prawdopodobnie znaczy, ze uzywasz tego samego hasla do wiecej niz jednej strony. Sa z tym dwa problemy

    1.Twoje haslo moze zostac przejete poprzez wlamanie do systemu, ktory w niezby dobry sposob przechowuje hasla.

    2.Moze Ci sie trafic nieuczciwy operator strony, ktory celowo bedzie przechwytywal hasla i sprawdzal, czy pasuja do innych stron

    Widzialem rowniez takie strony, ktore celowo wyswietlaja komunikat, ze podales zle haslo. Co wtedy robi uzytkownik ? Z reguly proboje inne haslo z repertuaru tych ktore uzywa.

    Ja najbardziej w tym momencie boje sie keyloggerow, mimo, ze uzywam wszedzie inne haslo to tego jednak sie bardzo boje.

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment