Jak szybko można złamać 10-znakowe, losowe hasło zahashowane SHA-256? Zaskakująco szybko…

12 października 2020, 10:10 | W biegu | komentarze 33
Tagi: ,
: oglądaj sekurakowe live-streamy o bezpieczeństwie IT.

Mały konkurs został ogłoszony tutaj (b62c6a4a0403f07ab65227529ebcf375b9127057a7c4fd2be4355504a953ae75, 10 znaków, alfabet hasła: A-Z, a-z, 0-9):

Nie trzeba było czekać długo na odpowiedź. Czas poświęcony na łamanie to nieco więcej niż 5 dni, a dokładniej: 5d 08:57:24.

Samo hasło z kolei to: JZpq7rz2pA

Wnioski? O obecnych czasach kiedy wydajność kart graficznych mocno rośnie (na karcie RTX 3080, SHA256 można łamać z prędkością niemal 7 gigahashy na sekundę…), lepiej używać haseł składających się z kilku (minimum: 4-5, 15+ liter) słów (paadadzisiajstraszliwyrain). Żeby takie hasło wzmocnić, pamiętajmy o używaniu mniej popularnych słów (można też wymieszać języki, jak w przykładzie powyżej), a całość można również wzmocnić dokładając w środku znak specjalny czy duplikując jakąś literę. Takie hasło będzie zapamiętywalne niemal od razu, w przeciwieństwie do…: JZpq7rz2pA. Oczywiście można używać również managerów haseł (do czego zachęcamy) czy uwierzytelnienia dwuczynnikowego (do czego ponownie zachęcamy).

Jakiego algorytmu używać po stronie serwerowej? Bcrypt czy pbkdf2 (z odpowiednim tzw. work factor).

Jeśli ktoś chciałby dalej zgłębiać tematykę bezpieczeństwa haseł, zerknijcie na nasz materiał filmowy w temacie:

–ms

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



Komentarze

  1. Juri Szobasev

    A co z łamaniem ludzi? Co by o tym wszystkim powiedział Kevin sam w domu?

    Odpowiedz
  2. Artur

    Moim zdaniem zaskakująco długo. Spodziewałem się wyniku poniżej kilku godzin. Dziesięć znaków to mało, a o hasłach innych niż losowych i przechowywanych w głowie od dawna lepiej zapomnieć.

    Odpowiedz
  3. aso

    Zamiast polecać pbkdf2 moglibyście dać argon2

    Odpowiedz
    • To jest też bdb opcja, choć w praktyce mało używana :/

      Odpowiedz
      • Kuba

        Nawet jak nie jest używany (jeszcze?) Tak powszechnie, to chyba argon2 na chwilę obecną powinien być rekomendacją #1, czy mi coś umknęło? Albo inaczej, czy widzicie pozą dostępnością (w frameworkach) jakieś inne powody do wyższości pbkdf2?

        Odpowiedz
  4. 10 znaków alfanumerycznych to 59 bitów. 4–5 słów to 46–63 bity. Zatem warto wspomnieć, że użycie słów pomaga w zapamiętaniu, a nie wzmacnia samo hasło. Oczywiście może się to przełożyć na użycie lepszego hasła, ale nie można wierzyć, że użycie słów samo w sobie coś magicznie zmieni.

    W obydwu przypadkach krytyczny jest proces generowania hasła. Bo te 59/46–63b to przy założeniu, że procedura jest prawidłowa. Inaczej obydwu sytuacjach będzie żart, a nie hasło. W przypadku słów można użyć Diceware, który daje ~13 bitów na słowo. Pod warunkiem użycia dokłanie tego algorytmu, bez samodzielnych prób jego „ulepszenia”.

    Odpowiedz
    • AdrianD**a

      „Shannon entropy” sprowadza te 59 bitów przy 10 znakach do ledwo 33 bitów

      Odpowiedz
  5. money

    Jaki jestsens takiej operacji ??Wystarczy przeciez,jak w bankach,przerywac zabawe po 3 (naprzyklad)
    Jesli mzoemy probowac dowolnie dlugo i czesto,jest oczywiste,ze zlamiemy w koncu kazdy kod.im mamy szybszy sprzet ,tym szybciej bledach.

    Odpowiedz
    • Tomek

      Bazy z haszami wyciekają co kilka dni. Blokada po kilku próbach nie ma tu nic do rzeczy.

      Odpowiedz
    • Blokada po kilku próbach nie chroni przed reverse brute force. Jest też świetnym sposobem na zrobienie sobie lub swoim klientom DoS-a, jeżeli przeprowadzający atak są złośliwi.

      Odpowiedz
  6. kasyer

    62 znaki do wyboru, 10 znaków długości, 7 Giga hashy na sekundę
    62^10
    /(7*10^9)
    /60/60/24
    i wychodzi 1387d.
    Przydałby się artykuł jak łamać klucze do BTC lub podpisy transakcji.

    Odpowiedz
    • Leszek

      Dokładnie takie same obliczenia wykonałem, i wychodzi mi 1387 dni i 17 godzin. A żeby zejść do 5 dni, potrzeba aż 255 razy większej mocy obliczeniowej…

      Odpowiedz
      • Jakoś to ten koleś zrobił (nie chwalił się jakim sprzętem). Poza tym może akurat miał „szczęście” ew. użył jakiś swoich rulesów (+ teoretycznie nawet po 5 sekundach mógł złamać ;)

        Odpowiedz
        • Halo

          Tak używając konta firmowego gpc/aws i farmy serwerów ;-)

          Odpowiedz
  7. Johnny Bravo

    A moje hasło brzmi: lubie_placki_ lubie_placki_ lubie_placki_ lubie_placki_ lubie_placki_ lubie_placki_ lubie_placki_ lubie_placki_ lubie_placki_ lubie_placki.

    Odpowiedz
    • Piotr

      Mnie byś się przzejadło

      Odpowiedz
  8. A co jeśli sam zrobię hasz sam z prostego słowa i zapisze to jako hasło które potem system zhaszuje i to zapisze może być nawet MD5.

    Odpowiedz
    • Hashowanie nie zwiększa entropii procesu generowania hasła. W ten sposób jedynie ukrywasz się za security-by-obscurity.

      Odpowiedz
    • kasyer

      Takie hasła generuj
      echo -n lubie_placki5755 | sha256sum | cut -b -57 | sha256sum | cut -b -55

      Odpowiedz
      • Możesz wyjaśnić, w jaki sposób to cokolwiek zmienia, skoro siła takiego hasła i tak jest ograniczona wybranym ciągiem wejściowym, a dodatkowo jest jeszcze ścinana cut-ami? Czemu jest tam -n, który ma zerowy wpływ na wynik (zakładając, że jego obecność nie jest losowana)? Po co jest tam SHA256, skoro nawet MD4 w tym zastosowaniu nie pogorszy wyniku?

        Odpowiedz
        • kasyer

          Zmienia w taki sposób, że bardzo ciężko będzie złamać przy użyciu łamaczy.
          -n jest po to, żeby nie było niepotrzebnych znaków.
          Wynik sha256 ma więcej znaków niż wynik md4.

          Odpowiedz
          • mpan

            > Zmienia w taki sposób, że bardzo ciężko będzie złamać przy użyciu łamaczy.
            Utrudnia złamanie, bo utrudnia złamanie. Petitio principii?

            > -n jest po to, żeby nie było niepotrzebnych znaków.
            A w jaki sposób te znaki lub ich brak wpływa na ostateczny wynik? W sensie jego użyteczności jako hasła, oczywiście. Dołączenie stałej wartości do każdego elementu zbioru nie wpływa na jego rozmiar tego zbioru wg mojego podręcznika matematyki.

            > Wynik sha256 ma więcej znaków niż wynik md4.
            Jeszcze więcej znaków da naciśnięcie trzydzieści razy jednego klawisza. Co to ma do rzeczy?

          • kasyer

            > Utrudnia złamanie, bo utrudnia złamanie. Petitio principii?
            Piszesz głupoty.

            > A w jaki sposób te znaki lub ich brak wpływa na ostateczny wynik?
            Trzeba się raz określić, by nie było nieporozumień. Równie dobrze mogłem wpisać bez -n i pisałbyś: „dlaczego nie masz -n?”

            > Co to ma do rzeczy?
            Nie zrozumiałeś problemu generowania trudnego hasła z hasła prostego do zapamiętania.

  9. Mario

    A co jeśli ilość prób na zalogowanie jest 5 a później blokada adresu IP

    Odpowiedz
    • mowa o łamaniu hasła full offline, więc po udanej akcji, od razu pierwsza próba zadziała

      Odpowiedz
  10. Kamil

    Witam, posiada ktoś pełen benchmark RTX 3080 z hashcata?

    Odpowiedz
    • Udało się znaleźć na githubie

      Odpowiedz
  11. John the Ripper

    A nie lepiej dawać hasła poniżej 6 znaków ? Nikt nie będzie sprawdzał takiego hasła z założenia że jest zbyt banalne :p

    Odpowiedz
    • @johntheripper:oczywiscie ze zostanie złamane w mikrosekundy …od prostych haseł się zaczyna

      Odpowiedz
  12. Jerzyk

    Myślę, że dawno już nadszedł czas, żeby przestać nazywać karty graficzne graficznymi… ;)

    Odpowiedz
  13. santis

    A po co w ogóle trzymać hash’a hasła na bazie? Nie lepiej zaszyfrować symetrycznie hasłem np. nazwę/mail użytkowanika np. z dodaniem losowych salt’ów? Np. hasło podane w formularzu użytkowniaka może szyfrować tekst:
    yg7cdg78ewnjc838ucy8hhnc0a;USERNAME;b8b8qwlsanc

    Używając AES-256, przy logowaniu sprawdzać, czy hasło podane przez użytkownika odszyfrowuje zapisaany ciąg .*;USERNAME;.* i pasuje z USERNAME (tu oczywiście też można by USERNAME trzymać na bazie jako sha256 z salt+USERNAME i tak samo w ciągu zaszyfrowanym trzymać)?

    Czy to nie będzie mocniejsze zabezpieczenie na wypadek przejącia bazy danych niż hash?

    Odpowiedz
  14. Tomek

    A jak mam hasło 36 znaków, w tym @#$__& to ile czasu by zajęło jego złamanie?

    Odpowiedz

Odpowiedz