Siła hasła
Mimo postepu technologii, hasla nadal sa najczesciej spotykanym mechanizmem uwierzytelniania. Nawet zakladajac, ze mechanizm, który ich uzywa nie ma zadnej slabosci musimy zdac sobie sprawe, ze jezeli haslo ma skonczona dlugosc (a trudno, zeby mialo nieskonczona), to podejmujac skonczona ilosc prób, mozna haslo odgadnac. Odgadywanie moze polegac na jednej z metod:
- Po prostu wpisujemy haslo. Imie kota, pózniej marke samochodu, date urodzenia, abc123. I tak do skutku. Metoda nie jest specjalnie wyszukana, ale w praktyce przynosi niezle efekty zwlaszcza, jezeli atakujacy zna osobiscie atakowanego.
- Uruchamiamy automat, który pobiera ze slownika hasel (prosto sciagalne z Internetu) slowo po slowie i próbuje uzyc ich jako hasla. Dobre slowniki maja kilkaset tysiecy hasel.
- Uruchamiamy automat, który uzywa hasel ze slownika, doczepiajac im na koncu 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".
Skutecznosc tych metod jest rózna. Jak powiedzie sie metoda pierwsza, to znaczy ze uzyto zbyt trywialnego hasla albo, ze atakujacy mial duzo szczescia. Atakujacemu "recznie" zwykle znudzi sie po jakims czasie od minuty do godziny i prawdopodobnie sie podda.
Automaty sie nie nudza a do tego sa szybsze niz czlowiek stukajacy w klawiature. Dla dobrego, powiedzmy, ze zlozonego z dziesieciu komputerów, automatu do lamania hasel, wydajnosc na poziomie 100000 prób na sekunde nie jest nieosiagalna.
Jak latwo policzyc, slownik zlozony nawet z miliona hasel zostanie sprawdzony w 10 sekund. Jezeli zasób byl zabezpieczony haslem ze slownika, to w takim czasie zabezpieczenie zostanie zlamane. Warto wiedziec, ze w slownikach sa nie tylko "normalne" slowa, ale i typowe hasla takie jak qwerty123 czy 1qaz@WSX.
Jezeli zastosujemy haslo skladajace sie ze slowa slownikowego i doczepionego na koncu ciagu znaków (na przyklad alamakota123) – czas lamania zalezy od tego ile takich ciagów bedzie sprawdzane. Typowo jest to kilkadziesiat. To wystarcza. Przy zalozonej wydajnosci odgadywania, oznacza to, ze haslo podda sie w czasie kilkunastu minut. To nie jest dobre zabezpieczenie.
Ciekawiej robi sie przy haslach nie dajacych sie odnalezc w slowniku i nie zawierajacych w sobie duzych slów prosto ze slownika.
Jezeli haslo sklada sie z samych malych liter – mamy do dyspozycji 26 znaków. Lamiac takie haslo mamy:
- Dla hasla piecioznakowego: 11881376 mozliwosci, czyli niecale 2 minuty.
- Dla hasla szescioznakowego: 308915776 mozliwosci, czyli niecala godzine.
- Dla hasla siedmioznakowego: 8031810176 mozliwosci, czyli prawie doba.
- Dla hasla osmioznakowego: 208827064576 mozliwosci, czyli ponad 3 tygodnie.
- Dla hasla dziewiecioznakowego: 5429503678976 mozliwosci, czyli niemal dwa lata.
- Dla hasla dziesiecioznakowego: 141167095653376 mozliwosci, czyli okolo 44 lata.
Jak jasno widac – warto stosowac dlugie haslo, ale bez siegania po prawdziwe slowa. Jak wspomnialem wczesniej, hasla ze slownika lamane sa w kilka sekund.
A jezeli, zamiast stosowac dlugie haslo z samych malych liter (takie jak asodczlkme) zastosujemy krótsze, ale zlozone z liter duzych i malych (takie jak AsODcz)? Mamy do dyspozycji 52 znaki. Ilosc prób i czas lamania wyniosa maksymalnie:
- Dla hasla piecioznakowego: 380204032 mozliwosci – 1 godzina
- Dla hasla szescioznakowego: 19770609664 mozliwosci – ponad dwa dni
- Dla hasla siedmioznakowego: 1028071702528 mozliwosci – niecale cztery miesiace
- Dla hasla osmioznakowego: 53459728531456 mozliwosci – 17 lat
- Dla hasla dziewiecioznakowego: 2779905883635712 mozliwosci – ponad 800 lat
- Dla hasla dziesiecioznakowego: 144555105949057024 mozliwosci – prawie 47 tysiecy lat
Choc mozna zalozyc, ze w tym czasie komputery zwieksza (zgodnie z prawem Moore'a) swoja moc obliczeniowa, to i tak troche im to zajmie.
Wychodzi, ze dziesiecioznakowe haslo zlozone z duzych i malych liter (takie jak sKIrEcyeAk) jest calkiem dobrym zabezpieczeniem.
Kombinujmy wiec dalej. Do duzych i malych liter dodajmy cyfry. Razem 62 znaki do dyspozycji. Jezeli zechcemy takie haslo zlamac metodami brute force, otrzymamy maksymalne czasy:
- Dla hasla piecioznakowego: 916132832 – 2,5 godziny
- Dla hasla szescioznakowego: 56800235584 – prawie tydzien
- Dla hasla siedmioznakowego: 3521614606208 – ponad rok
- Dla hasla osmioznakowego: 218340105584896 – prawie 70 lat
- Dla hasla dziewiecioznakowego: 13537086546263552 – ponad 4000 lat
- Dla hasla dziesiecioznakowego: 839299365868340224 – ponad 260 tysiecy lat
Duze i male litery polaczone z cyframi (na przyklad dE3F4R5aa1) daja juz haslo calkiem przyzwoite i trudne do zlamania.
W przypadku tak zwanych znaków specjalnych, sprawa nieco sie komplikuje. wynika to z faktu, ze o ile litera A jest mniej wiecej tak samo czesto uzywana jak Z, a cyfra 1 jak cyfra 9, to znak ! czy . jest znacznie bardziej popularny niz na przyklad znaki + { ; _ czy \.
Podstawowe znaki specjalne obejmuja to, co dostepne jest przez Shift+cyfra: !@#$%^&*() oraz znak kropki. Rozszerzona lista obejmie dodatkowo wszystko to, co dostepne jest z prawej strony klawiatury. Mozna teoretycznie uzywac znaków "bardzo specjalnych" takich jak ™, ® czy €, ale wtedy pojawia sie duze ryzyko, ze jakis system bedzie je zle rozumial lub wprowadzal w taki sposób, ze uwierzytelnianie stanie sie niemozliwe, wiec lepiej ich unikac. Przyjmujac, ze podstawowych znaków specjalnych jest 11 a z rozszerzonymi lacznie 30, otrzymamy w koncu tabelke:
Male litery (26) | Male i wielkie litery (52) | Litery i cyfry (62) | Litery, cyfry i podstawowe znaki specjalne (73) | Litery, cyfry i pelny 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 miesiace | 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ócic uwage, ze mowa jest o czasach maksymalnych. Jezeli atakujacy bedzie mial duzo szczescia – zgadnie w pierwszej sekundzie. Utrudnic mu to mozna stosujac taki zestaw znaków hasla, jakich na pewno nie zechce sprawdzac. Czyli cos w okolicach ostatniej kolumny tabelki.
Dla jasnosci, warto wspomniec jeszcze co sie stanie, jezeli haslo zastapimy kluczem o dlugosci na przyklad 128 bitów. Maksymalny czas lamania przez nasz automat wyniesie ponad 107902830708060141889705291 lat. Dlugo, zwlaszcza pamietajac, ze wszechswiat istnieje "tylko" 14000000000 lat
Warto pomyslec jeszcze o zwiekszaniu mocy obliczeniowej automatu zgadujacego hasla. Komputerów na swiecie jest duzo i jezeli do pracy "namówimy" na przyklad dziesiec tysiecy maszyn – czas lamania skróci sie tysiac razy w porównaniu z dziesiecioma komputerami zalozonymi na poczatku. To duzy zysk, ale na przyklad dla dziewiecioznakowego hasla ze znakami specjalnymi, oznacza w praktyce sto piecdziesiat lat nieprzerwanego liczenia. Czyli w praktyce nie ma sie chyba czego obawiac.
Wszystkie te dywagacje opieraja sie na zalozeniu, ze stosowane algorytmy nie maja znanych wad. Dla wspólczesnie stosowanych rozwiazan zazwyczaj jest to prawda, ale o niejednym algorytmie tak myslano i czas brutalnie rozwial te nadzieje.
Jezeli ktos chce zweryfikowac powyzsze obliczenia, to przypomne tylko, ze zbiór odgadywanych hasel jest wariacja z powtórzeniami.
Autor: Grzegorz Tworek [MVP]
Comments
Anonymous
January 01, 2003
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?Anonymous
January 01, 2003
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.Anonymous
January 01, 2003
Tęczowe tablice są super wynalazkiem, ale:
- muszą być policzone dokładnie dla tego hasła, którego użyjesz
- musisz bardzo dokładnie znać algorytm szyfrowania
- musisz mieć dostęp do zaszyfrowanej wartości Zazwyczaj spełnienie wszystkich trzech warunków nie jest takie proste jak się wydaje.
Anonymous
October 16, 2009
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:)Anonymous
November 03, 2009
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ć.Anonymous
November 05, 2009
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 ?Anonymous
December 04, 2009
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ąć. :)Anonymous
January 02, 2011
te dane z czasem są już nieaktualne.. nVidia wprowadziła technologię CUDA, która przyspiesza crackowanie hasła kilka razyAnonymous
January 04, 2011
@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.