-15% na nową książkę sekuraka: Wprowadzenie do bezpieczeństwa IT. Przy zamówieniu podaj kod: 10000

Jak nie budować generatorów haseł – na przykładzie 'fabryki haseł’

10 września 2013, 15:38 | Aktualności | komentarzy 40

Dotarła do nas dzisiaj ciekawa informacja prasowa, dotycząca jednego z serwisów popularyzujących bezpieczne zachowania w Internecie, a którego właścicielem jest Wirtualna Polska. Między innymi pojawia się w niej informacja o serwisie – https://fabrykahasel.pl/

Sam pomysł bardzo ciekawy i na pewno potrzebny – czyli pokazane jak w prosty i interaktywny sposób zbudować własne, bezpieczne hasło.

Gorzej jednak z wykonaniem… Wpisałem w pole 'Twoja Propozycja Hasła’ słowo z niewielkiego zbioru imion żeńskich (imiona bardzo często stosowane są jako hasła – oczywiście hasła mało bezpieczne). Wybrałem więc 'Hermenegilda’. Co zobaczyłem?

Ano że taka propozycja hasła jest 'wystarczająco silna’ i że czas łamania hasła to >>> 1000 lat (’>>>’ zakładam że oznacza 'dużo więcej’ albo po prostu 'więcej’ ;)

ob3

za fabrykahasel.pl

Kolejną ciekawostką, którą zauważyłem to banner: „Uwaga, nie zapamiętujemy Twoich haseł”. Dobra, to zobaczmy:

has

Czyli generalnie każde hasło wpisane w generator jest przesyłane do części serwerowej (na szczęście banner informuje nas, że nie jest ono 'zapisywane’ czy też dokładniej – 'zapamiętane’, ufffff).

Mała ciekawostka – na stronie dostępna jest pewna dawka teorii budowy bezpiecznych haseł – i czytamy tu na przykład:

Jakie hasło NIE jest bezpieczne?
słownikowe, czyli składające się wyłącznie (lub niemal wyłącznie) z nazw własnych, np: jakub, ania12, mruczek2, atlantyk+; wbrew pozorom liczba słów i ich prostych kombinacji jest ograniczona (…)

[ i dalej: ]

Podatność na atak słownikowy jest piętą achillesową hasła, dlatego tego typu haseł nie należy używać!

Czyżby więc autorzy serwisu przeczyli sami sobie? W końcu powyższa „Hermenegilda” to idealne hasło słownikowe i to zaczerpnięte z jednego z prostszych i często używanych słowników :) Co więcej daje ono szansę na skuteczne łamanie on-line, a nie tylko off-line (pod warunkiem, że np. konto nie jest blokowane po n nieudanych próbach logowania).

Trochę dziwna jest również metodologia pokazująca w jakim czasie podane hasło można złamać (prawdopodobnie wzięty został do tego „komputer wzorcowy: AMD Athlon64 3GHz” – można o tym znaleźć fragment w stronie z teorią).

P1010020-300x225

Mini maszyna do łamania haseł na GPU- obudowa 1PC – Projekt Erebus. 'Mieli’ prawie 75 miliardów hashy MD5/sek

W dobie łamania haseł na GPU, czy potworów takich jak ten, podane na cytowanej stronie czasy są w moim odczuciu raczej z dwa rzędy wielkości zbyt optymistyczne (oczywiście wszystko zależy od wykorzystanego algorytmu przechowywania haseł – istnieją  algorytmy takie jak BCrypt  czy PBKDF2, które znacznie utrudniają crackowanie, ale nie widziałem o nich informacji na 'fabryce haseł’).

Na koniec zacząłem zastanawiać się czy proponowane zasady generowania haseł da ubrać się w pewne standardowe reguły, które często implementuje się w crackerach.

Tego typu reguły to na przykład klasyczny lit spik, ale są oczywiście i bardziej skomplikowane przykłady – z tego typu technik korzystano między innymi w konkursie, o którym pisaliśmy jakiś czas temu (Crackowanie haseł – czyli polowanie na grubego zwierza – 90% z badanej próbki haseł zostało złamanych w mniej niż 24h).

W każdym razie sprawdziłem tym razem hasło Katarzyna:

o12

za fabrykahasel.pl

Fiu, fiu, zamiana litery a na znak @ w słowie 'Katarzyna’ zwiększa czas łamania o ponad 300 lat. Nieźle :) A czy da się stworzyć odpowiedni plik z regułami np. do hashcata? To już zostawiam jako małe zadanie domowe dla naszych czytelników ;)

PS
Oczywiście popieramy wszelakie generatory ułatwiające ludziom zapamiętać hasło, róbmy to jednak z głową!

PPS
Pamiętajmy że: 'Katarzyna1′ ani 'Aleksandra’ to wcale nie są bezpieczne hasła ;-)

PPPS
Polecicie jakieś dobre generatory haseł? (niekoniecznie haseł w pełni losowych ;-)

–michal.sajdak<to_nie_jest_zabezpieczenie>sekurak.pl

 

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Sebstian

    To może Keepass, dobry umożliwia generowanie haseł według wzorca, losowo i w wymaganej ilości

    Odpowiedz
  2. soal

    Ja używam z powodzeniem generatora wbudowanego w KeePass – można w łatwy sposób utworzyć własne szablony z użyciem konkretnych zestawów znaków i ustalić oczywiście długość hasła :)

    Odpowiedz
  3. MateuszM

    Ja czasami używam takiej oto funkcji znalezionej w sieci:

    genpasswd() {
    local l=$1
    [ „$l” == „” ] && l=16
    tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs
    }

    Mam ją dodaną w .bashrc dla ułatwienia. Dodatkowo wstawiam ręcznie jakieś znaki typu *&^%$ aby ładniej hasło wyglądało.

    Kiedyś sam zapisywałem literki i cyferki co mi do głowy przyszły (że niby losowe miały być ale to tylko teoria) ale jakoś wyobraźnia mi szwankuje i się wspomagam dopalaczami jak powyżej.

    Odpowiedz
    • openworld

      Generuje ciąg o tej samej długości, i jeszcze się podpisałeś.
      buuu.

      Odpowiedz
  4. Jan

    Dla dzieci neostrady może to zająć 300 lat :)

    Odpowiedz
  5. Popieram KeePassa i chciałem tylko przypomnieć, że ma swoje klony również na tabletach :) Password Safe autorstwa Bruce Schneiera chyba też miał generator.
    A co do hasła Hermenegilda i jego czasu łamania. Autorzy strony testującej nie podali warunków. Zakładam, że chodziło o możliwości przeciętnego Chińczyka, który nie zna niemieckich imion, a skupiony jest na infiltracji tylko amerykańskich sieci ;)

    Odpowiedz
  6. ardian

    dla hasła Mariolka98 również podaje czas 1000lat :)

    Odpowiedz
  7. Maercam

    Na co dzień oczywiście korzystam z KeePass. Niemniej jednak, gdy tworzy się konta dla jakiejś grupy ludzi, lepiej złapać za PWGen. Hasła nie wyglądają jak krzaki i każdy normalny człowiek jest w stanie je przeczytać – a przez to również zapamiętać. Wtedy można sobie zrekompensować lekki ubytek na „dziwności” długością.

    Ponadto, jeśli problem zapomnianych haseł i ich „resetu” lub incydentów wygenerowanych przy kilkukrotnym błędnym logowaniu wraca do administratora – wtedy takie cudeńko się na pewno przydaje i oszczędza czas i nerwy. Polecam.

    Odpowiedz
  8. Daxop

    Ja stosuje inna technikę, do ważnych rzeczy używam haszy, biorąc pod uwagę tekst wygląda to mniej więcej tak. Hasło „katarzyna” przepuszczam przez md5 wychodzi 05e58b1e044783e22f40f39fea26f218 i coś takiego wpisuje jako hasło, można dodatkowo coś jeszcze dopisać od siebie jak ktoś chce jeszcze skomplikować. Plus taki że hasło może być w miarę proste, wpisanie go do kopiuj wklej z generatora więc to kilka chwil, gorzej gdy wygląda to gdy trzeba z palca przepisać ze smartfona ;) Uważam że md5 nadaje się najlepiej, bo z sha wychodzi długi łańcuch i nie wszędzie można go z tego względu wpisać na max limit.

    Odpowiedz
  9. bmk

    Może tak?
    cat /dev/urandom| tr -dc 'a-zA-Z0-9′ | fold -w 8 -s | head -n 4

    Odpowiedz
  10. OiSiS

    A ja mam inną metodę. Wymyślam sobie zdanie, biorę pierwsze litery ze zdania i mam hasło. Można opracować sobie jakiś system do tego np dla stron www. Zaszyć w haśle nazwę strony i mamy, np:
    Hasło do strony Sekurak.pl dla loginu Gucio89. i z tego zdania mamy hasło: HdsS.pdlG89. – później tylko podmieniamy sobie nazwę strony dla następnego portalu i jest nowe hasło. To oczywiście tylko dla mało „ważnych” kont, dla kont gdzie hasło musi być silne oczywiście KeePass i generator od niego.

    Odpowiedz
  11. slane

    apg

    Odpowiedz
  12. Odpowiedz
  13. Damian

    pwgen 20

    Odpowiedz
  14. Anonymous

    A ja tam wole użyć głowy do generowania haseł
    dobrą metodą jest nap branie pierwszych liter z jakiejs piosenki
    np: „Wlazł kotek na płotek i mruga” i powtaje hasło
    Wknpim ? Hmm.. za łatwe ? \/\/knp1m ? jeszcze inne ? Prosze !/\!knp!m może jakieś dodatkowe znaki ? na koniec albo na początku ? I po co używać generatorów ? Moje zdanie jest takie,dziwie się że ludzie ufają takim aplikacjom zawsze może ona zawierać funkcje dzięki którym zostaną wysłane takie hasła ,utworzone przez przeciętnego kowalskiego :-) do jakiegoś script kiddie <- dzięki temu koles może albo je wykorzystać do łamania dictionary on-line attack lub poprostu tworzyć słowniki popularnie używanych haseł :-) więc warto by ludzie użyli głowy. To takie moje zdanie. Pozdrawiam

    Odpowiedz
  15. Anonymous

    Oczywiscie jeżeli ktoś nie ma głowy zawsze można użyć takowo skryptu tego typu to moja taka propozycja w języku python, skopuj to do notatnika i zapisz z rozszerzeniem .py np gener.py
    Pamietaj by miec zainstalowany interpreter pythona 2.7.

    Skypt 1:

    import random
    import string
    znaki = list(string.printable) #wylistowanie wszystkich ASCII
    dlugosc = int(raw_input(„Podaj dlugosc hasla: „))
    propozycja = int(raw_input(„Podaj ile chcesz propozycji hasel: „))

    for x in range(0,propozycja):
    haslo = ”
    a = 0
    while a <= dlugosc:
    wylosowany_znak = random.choice(znaki)
    haslo += wylosowany_znak
    a += 1
    print ' UTWORZONO::: ',haslo

    raw_input("NACISNIJ ENTER")

    Skrypt 2: To samo dzialnie inaczej zapisane :-)
    #
    import random
    import string
    znaki = list(string.printable) #wylistowanie wszystkich ASCII
    dlugosc = int(raw_input("Podaj dlugosc hasla: "))
    propozycja = int(raw_input("Podaj ile chcesz propozycji hasel: "))
    print ''
    for x in range(0,propozycja):
    haslo = [x for y in range(0,dlugosc) for x in random.choice(znaki)]
    print "WYGENEROWANO::: ", ''.join(haslo)

    raw_input("NACISNIJ ENTER")

    Odpowiedz
  16. Dla hasła „Aleksandra” — czas łamania 233 lata :) + zapewnienie:

    Gratulacje
    Twoja propozycja hasła jest wystarczająco silna i spełnia wymagania produkcji.
    Nie potrzeba przetwarzać go w naszej Fabryce Haseł.

    Tutaj http://goo.gl/tqbUca natomiast twierdzą, że sprawdzają, czy hasło nie jest słownikowe. Polecam zastosować obszerniejsze słowniki ;) http://sekurak.pl/crackstation-udostepnia-ogromny-slownik-hasel/

    Odpowiedz
  17. Tomasz

    „Nietolerancja”
    > > > 1000 lat (hehehehe)
    to samo „Homoseksualista”

    KTO IM PISAŁ SŁOWNIKI?????

    Odpowiedz
  18. wosq

    Ja hasła generuję w następujący sposób:
    Otwieram program tekstowy.
    Zamykam oczy i chaotycznie uderzam w klawisze przez kilka sekund poprzez moją kartonową nakładkę na klawiaturę.
    Nakładka ta blokuje z oczywistych powodów dostęp do niektórych klawiszy.
    Potem oglądam to co uzyskałem i wycinam sobie interesujący mnie fragment lub fragmenty.
    To moje nowe hasło.

    Odpowiedz
  19. Dav
    Odpowiedz
  20. wosq

    :))))))))
    Sprawdziłem dla ciekawości w fabryce haseł:
    Tusk : czas łamania hasła 1 min.
    Kaczyński : czas łamania hasła 5 lat.
    ==========
    DOBRE :))))))))

    Odpowiedz
  21. MateuszM

    Oj tam, oj tam, czepiacie się poradnika podczas gdy przejście z hasła Kasia na Homoseksualista dla większości użytkowników WP to wielki skok cywilizacyjny.

    Wymyślanie super złożonych haseł przypomina mi anegdotę o wydaniu $1 mln przez pewien bank do zabezpieczenia $100 tys. Trzeba realnie oszacować ryzyko i dobrać zabezpieczenia na odpowiednim poziomie.

    Odpowiedz
    • Nota bene:

      Możesz w prosty sposób uatrakcyjnić swoją stronę dodając do niej Fabrykę Haseł.
      Uprzyjemnisz swoim użytkownikom proces zakładania konta i zmiany hasła, a dodatkowo polepszy się jakość haseł w Twoim serwisie.

      Odpowiedz
  22. Rafal

    Ja często wpisuję całe zdania jako hasło.
    A jak nie mogę, to używam również
    echo -n „całe zdanie” | sha1sum | cut -b -n ileSystemPozwala

    Odpowiedz
  23. p

    Po komentarzach widzę, że wiele osób wpadło na ten sam pomysł co ja kilka lat temu, czyli generowania hasła na podstawie sum kontrolnych.

    Ten pomysł zarzuciłem i przeszedłem na hasła całkowicie losowe. Otóż te rozwiązanie ma 2 olbrzymie wady:

    1. Jak już widać nawet w komentarzach – „algorytm” ten nie jest unikatowy i stosują go różne osoby.
    2. Suma kontrolna „domyślnie” rozumiana jest jako przedstawiona heksadecymalnie, a to daje tylko 16 możliwości na każdy znak!
    Więc, defacto hasło 'Anastazja1′ jest bezpieczniejsze od '5819d4c4be’ i tak samo bezpieczne jak '5819d4c4be51e0ffaaeae4cdef21d77c’.

    Odpowiedz
  24. BIGBEN

    Do sum kontrolnych można dodać znaki specjalne, samo złamanie 32 znakowego hasła jest mało prawdopodobne jeżeli dodamy własna „sól” do sumy kontrolnej

    Odpowiedz
    • nota bene, sól nie jest ochroną przed brute-force (np. hashcat potrafi łamać hasła solone).

      Odpowiedz
  25. Troglodyta

    Żeby wygenerować bezpieczne hasło wystarczy newbie posadzić przed vi i kazać mu z niego wyjść.

    Odpowiedz
  26. józek

    jako że moja pamięć już szwankuje i nie chce sobie zapamiętywać każdego znaku osobno, zapamiętuje ruch palca po klawiaturze i początkowe znaki. Wyjaśnijcie np. jak to hasło zostało stworzone:

    – ghY^7ujKI*76yU&8io( – ;)

    Odpowiedź dla leniwych – w poziomie w prawo/w dół bez shifta, w lewo/w górę z shiftem od litery g.

    Odpowiedz
  27. józek

    Hahaha z nudów, wpadłem na super epickie hasło nie do złamania przez 10000000000 lat, dla najpotężniejszych komputerów!

    !QAZxcde3@WSXcvfr4#EDCvbgt5$RFVbnhy6%TGBnmju7^YHNm,ki8&UJM,.lo9*IK./;p0(OL>

    75 znaków, 94^75 = 9.651371e+147

    (tak, brakuje jednego znaku, ale sekurak blokuje :( )

    Odpowiedz
  28. Mirek

    Ja uzywam do generowania haseł PWGen – jest on o tyle ciekawy że może generować hasło z wybranych liter. Dzięki temu omijam takie litery jak O,I, itp., które często są mylone z 0, l.

    Odpowiedz
  29. No cóż, ręce opadają. Takie inicjatywy mają pomagać, a w praktyce robią coś dokładnie odwrotnego. Najgorzej jak staną się popularne – trafiają one jako referencje do różnych prac, ludziom się nie chce sprawdzać mechanizmu i ogólne bezpieczeństwo użytkowników znowu leci na pysk (tak się stało chociażby z tym tępym paskiem xkcd z koniem, który też gdzieś tutaj się pojawił). Mam nadzieję, że ten wpis będzie popularniejszy od samej fabryki haseł – fajnie, że zwrócono na to uwagę :)

    A jakie hasło jest dobre? Unikatowe i na tyle długie, żebyś zdążył go zmienić, gdy na jaw wyjdzie jakiś wyciek (dobre nie implikuje bezpieczne).

    Jakie hasło jest bezpieczne? To jest bardzo skomplikowane pytanie, bardzo zależy od kryptosystemu, który analizujemy. Trudno znaleźć *konkretne* wytyczne/standardy odnośnie bezpieczeństwa haseł, które są aktualne. Samo badanie entropii to też grubsza sprawa, niż podnoszenie x do potęgi y. Ale o tych problemach będę tu jeszcze za niedługo pisał :)

    Odpowiedz
  30. Troglodyta: widzę, że znasz życie ;) Pamiętam, jak próbowałem wyjść z edytora „ed” znając właśnie vi. Utknąłem na bardzo długi czas i jeszcze w jakimś dziwnym shellu z idiotycznym TERM… Pomogło ubicie sesji.

    Odpowiedz
  31. józek

    @vizzdoom

    przyglądałem się kilku aplikacjom bruteforce, są trzy metody łamania haseł:
    1. metoda słownikowa, bruteforce wpisuje wszystkie słowa z danego języka (w angielskim jest ponad 200k haseł, czad) bądź z konkretnej bazy danych
    2. metoda słownikowo-kombinacyjna, program dopisuje do końca hasła cyfry oraz zamienia np. A na 4, I na 1, E na 3 itp. oraz tworzy hasła wieloczłonowe (w efekcie dostajesz np. johntrevor87, 4l4b4m4cop itp.)
    3. generator haseł, programy mają dostarczone w domyśle bazy danych wszystkich możliwych kombinacji z 8 znakowego zakresu kombinatoryki znaków (specjalne/cyfry/litery), ale możesz w dowolnym momencie zwiększyć ten zakres o ile tam chcesz znaków (wykorzystujemy moc obliczeniową GPU)

    Warto zauważyć, że generator haseł ma swoją kolejność – najpierw lecą małe litery od a (a,b,c,d,e,f itd.), potem lecą duże litery też zaczynając od A (A,B,C,D,E,F itd.), następnie program dodaje cyfry zaczynając od 0 (0,1,2,3,4,5 itd.) i dopiero na samym końcu przeskakuje na znaki zaczynając od ! („,#,$,%,& itd.). Znając mechanikę działania oprogramowania, wnioskuję, że możesz wybrać kilka elementów:
    1. zakres np. od 1-6, A-K itp.
    2. który konkretnie zbiór chcesz wygenerować (czy cyfry, czy liczby, czy znaki)
    3. element, od którego zaczynasz generowanie np. od f lub od $ itp.
    4. czy generator ma lecieć w górę czy w dół (od z->a, czy od 0->9, od K->D).

    Wyciągam kilka wniosków:
    1. używaj wszystkich 3 zbiorów znaków
    2. stwórz hasło dłuższe niż 8 znaków
    3. staraj się w większości korzystać ze znaków środkowych (np. 5,6,7 albo KLMNO itp.) umieszczając w środku hasła skrajne znaki ze zbiorów (np. AZ, 0,9, !`)
    4. nie używaj wyrazów istniejących w jakimkolwiek słowniku

    Generator najprościej wykiwać dając mu jak najwięcej pracy, czyli zmusić go do wygenerowania jak największej ilości operacji i jak najbardziej złożonego ciągu znaków.

    Odpowiedz
  32. józek

    opisałem tylko to, co zauważyłem ściągając z freeneta kilka aplikacji. Nie watpię ani trochę, że aplikacji można napisać dowolnie i ją maksymalnie rozwinąć. :)

    Odpowiedz
  33. Endrju

    W KeePass mam 445 par login+hasło do różnych witryn i aplikacji (każde hasło inne, wszystkie możliwe z generatora KeePassa, chyba że corpo narzuciło :-)

    Czy uważacie, że tyle różnych, przynajmniej *w miarę* silnych haseł da się wymyślić „z głowy”? Według mnie wszystkie powyżej podane sposoby zawiodłyby.

    BTW sposób https://xkcd.com/936/ jest fajny, ale wiele polskich sklepów internetowych czy innych witryn nie akceptuje haseł dłuższych niż np. 8, 12, 16 znaków. Moja preferowana długość w generatorze KeePass – 30 – przerasta możliwości takich stron. „CorrectHorseBatteryStaple” też by się nie zmieściło :-)

    Odpowiedz
  34. MateuszM

    Endrju, tak na prawdę masz jedno hasło do KeePass-a, które odblokowuje wszystkie pozostałe. Nie wiem czy nie bezpieczniej mieć 10-12 znakowe hasła w głowie (dwa albo trzy) niż czterysta znajdujących się w jednej bazie. Programy typu KeePass dają złudne poczucie bezpieczeństwa i równie dobrze możesz zapisać te hasła na kartce, którą będziesz trzymał w kieszeni (bo na biurku to już zbytnia ekstrawagancja).

    Odpowiedz
  35. Dla dzieci neostrady może to zająć 100 lat :)

    Odpowiedz

Odpowiedz na sekurak