Lata temu losowe ośmioznakowe hasła składające się z wielkich i małych liter, symboli i cyfr były niezwykle trudne do złamania. W niektórych przypadkach złamanie takich haseł zajmowało lata.
Dzięki dzisiejszej zmieniającej się technologii i wynajmowanym urządzeniom, ten czas skrócił się do kilku godzin. Ale jak w ogóle przechowywane są te hasła? Sprawdź Hasła to już przeszłość: dlaczego wycofujemy je w tym roku.

Szybkie linki
Jak przechowywane są hasła online?
Systemy nie przechowują haseł użytkowników bezpośrednio w plikach ani bazach danych, ponieważ atakujący mógłby przejąć kontrolę nad bazą danych, w której przechowywane są hasła. Zamiast tego systemy szyfrują dane użytkowników, pozostawiając atakującemu zaszyfrowaną kopię każdego hasła.
Istnieją zaawansowane algorytmy wykorzystywane przez systemy do szyfrowania haseł. Jednym z takich algorytmów jest szyfrowanie symetryczne. Jest to rodzaj szyfrowania, w którym ten sam klucz jest używany zarówno do szyfrowania, jak i deszyfrowania. Bezpieczeństwo algorytmów szyfrowania symetrycznego wiąże się z pewnym ryzykiem, ponieważ do deszyfrowania używany jest tylko jeden klucz. Z tego powodu systemy zazwyczaj nie stosują algorytmów szyfrowania symetrycznego.
Ogólnie rzecz biorąc, system szyfrowania wykorzystuje algorytmy haszujące. Służą one do weryfikacji integralności i reprezentacji danych, a nie do ich szyfrowania. Algorytmy haszujące konwertują dane na hasz o stałym rozmiarze, zazwyczaj reprezentujący unikalny fragment danych. Zadaniem funkcji haszującej jest utworzenie mapy o stałej długości losowo wygenerowanego fragmentu danych.
Dzięki algorytmowi haszującemu, jeśli atakujący przejmie bazę danych zawierającą hasło, nie będzie mógł uzyskać do niego dostępu wstecz. Należy tu zwrócić uwagę na bardzo ważny niuans. Teoretycznie atakujący, który włamie się do systemu używającego tego samego algorytmu haszującego dla wszystkich kombinacji haseł, może porównać wyniki. Jeśli atakujący uzyska tę samą wartość w wyniku tych porównań, odkryje jawną wersję hasła. Ta metoda opiera się na próbach i błędach, a ten typ ataku jest ogólnie nazywany atakiem siłowym.
Na początku XXI wieku wypróbowanie wszystkich 8-znakowych kombinacji haseł zaszyfrowanych za pomocą popularnych algorytmów haszujących zajęłoby setki lat. Oczywiście, nawet bardzo proste kombinacje, takie jak „123456” czy „mojehasło”, nie są zawarte w tym zestawie. Wraz z postępem technologii oprogramowania i sprzętu, sposób łamania haseł również uległ znacznym zmianom. Sprawdź Czy można ufać bezpieczeństwu aplikacji do zarządzania hasłami?
Wpływ pojawienia się kart graficznych

Możliwości przetwarzania równoległego procesorów graficznych (GPU) z czasem uległy poprawie. Karty graficzne nie są w stanie wykonywać zadań wielozadaniowych tak, jak procesory ogólnego przeznaczenia. Dlatego, pomimo wielu rdzeni i mocy przetwarzania równoległego, nie ma sensu wykorzystywać ich do niemal każdego zadania, tak jak procesora.
Jednak niektóre algorytmy haszujące używane do haseł można bardzo wydajnie zaimplementować na procesorach graficznych. Liczba haszów na sekundę, jaką można uzyskać przy użyciu tradycyjnych procesorów, drastycznie wzrosła dzięki nowym kartom graficznym.
Aby to sobie uświadomić, sprawdź liczbę skrótów na sekundę (termin „szybkość skrótu” odnosi się do szybkości, z jaką komputer może wykonywać obliczenia skrótu) dla algorytmów haszujących, takich jak NTLM, MD5 i SHA1, w poniższej tabeli. Na razie wystarczy wiedzieć, że są to tylko algorytmy haszujące. Do utworzenia tej tabeli użyłem klastra składającego się z 25 kart graficznych AMD Radeon.
| algorytm | Liczba fragmentów na sekundę |
| NTLM | 350.000.000.000 |
| MD5 | 180.000.000.000 |
| SHA1 | 63.000.000.000 |
| Krypt SHA512 | 364.000 |
| Bkrypt | 71.000 |
| Scrypt | 33.000 |
Jak widać, dzięki takiemu systemowi można generować skróty NTLM 350 miliardów razy na sekundę. Oznacza to, że można wypróbować wszystkie 8-znakowe kombinacje haseł w mniej niż 6 godzin. Co więcej, sprzęt w tym przykładzie ma już kilka lat. Wyobraź sobie, jaką moc ma dziś łamanie haseł.
Co powinni zrobić twórcy oprogramowania?

Podejście, które programiści powinni przyjąć, jest dość proste: powinni preferować algorytmy, które wymagają dłuższego czasu na obliczenie wartości skrótu podczas szyfrowania haseł. Programiści muszą wiedzieć nie tylko, jak dobrze algorytm, którego używają, działa na procesorze, ale także jak odporny jest na obciążenia kart graficznych.
Jeśli programiści pracują z frameworkiem, który obsługuje także szyfrowanie haseł, takim jak Django, Ruby on Rails lub Spring Security, powinni sprawdzić, czy w ramach frameworka podjęto właściwe decyzje dotyczące bezpieczeństwa.
Na przykład używasz Waluta Jedna z najpopularniejszych bibliotek do obsługi operacji użytkownika w Ruby on Rails, Bcrypt, jest używana jako domyślny algorytm haszujący. Pozwala również na użycie innej metody jako algorytmu haszującego. Algorytm Bcrypt jest niezawodny, ponieważ karta graficzna nadal potrzebuje dużo czasu, aby osiągnąć właściwy punkt.
Krótko mówiąc, im dłużej trwa obliczanie wartości skrótu, tym jesteś bezpieczniejszy.
Ile znaków powinno zawierać Twoje hasło?
Każdy dodatkowy znak, którego użyjesz, zwiększy geometrycznie liczbę prób i błędów potrzebnych do złamania hasła i uczynienia go bezpieczniejszym.
Rozważmy tę sytuację w dwóch różnych scenariuszach. Weźmy pod uwagę wartości z powyższej tabeli dla algorytmu skrótu NTLM i wyobraźmy sobie, że próbujesz złamać hasło. Wyobraź sobie, że celem jest hasło składające się z ośmiu lub więcej znaków.
| Liczba znaków | Wielkie/małe litery i cyfry | Wielkie/małe litery, cyfry i symbole specjalne |
| 8 | Mniej niż minuta | 2 minuty |
| 9 | 2 minuty | Dwie godziny |
| 10 | Dwie godziny | Jeden tydzień |
| 11 | sześć dni | سنتين |
| 12 | Jeden rok | 200 |
| 13 | Od 100 do XNUMX | Od 1000 do XNUMX |
Analizując tabelę, widać, że hasło składające się z co najmniej 12 znaków jest bezpieczne, jeśli zawiera kombinacje wielkich i małych liter, cyfry oraz znaki specjalne. Jeśli nie używasz znaków specjalnych, okazuje się, że potrzebujesz 13 znaków, aby uzyskać bezpieczne hasło. Jeśli w tym systemie używasz metody haszowania Bcrypt zamiast NTLM, 8 znaków wystarczy. Nie masz jednak możliwości poznania metody haszowania używanej przez system, do którego uzyskujesz dostęp przez sieć i który przechowuje Twoje hasło. Dlatego powinieneś rozważyć wszystkie możliwości.
Głównym problemem dla twórców oprogramowania jest to, że praktycznie niemożliwe jest przekonanie użytkowników do używania haseł składających się z co najmniej 12 znaków. Obecnie wskaźnik wykorzystania haseł o takiej długości jest niski. Dlatego, w zależności od scenariusza użytkowania opracowywanego systemu, konieczne będzie znalezienie kompromisu akceptowalnego dla użytkowników, aby poprawić bezpieczeństwo ich haseł.
Ostatnią sugestią dla programistów jest sprawdzenie nie tylko minimalnej, ale także maksymalnej długości danych wejściowych otrzymywanych za pośrednictwem formularzy udostępnianych użytkownikowi. Zwłaszcza gdy ze względów bezpieczeństwa włączysz użycie algorytmu haszującego o powolnym obliczeniu, takiego jak Bcrypt, możesz narazić się na pewne ryzyko, jeśli nie będziesz kontrolować maksymalnej długości hasła wprowadzanego przez użytkownika. Na przykład, atakujący mogliby przeprowadzić ataki, próbując jednocześnie kilkudziesięciu haseł składających się z 100 XNUMX znaków i kilku specjalnie spreparowanych żądań. W takiej sytuacji Twój system najprawdopodobniej przestanie reagować na zapytania innych użytkowników. Sprawdź Jak rozpoznać, czy Twoje hasła są sprzedawane w Internecie.
Porady dla użytkowników końcowych
Hasło powinno mieć co najmniej 12 znaków i zawierać wielkie i małe litery, cyfry oraz znaki specjalne. Pamiętaj, że systemy przechowujące hasła mogą zostać zhakowane, a Twoje dane mogą zostać wykorzystane w niewłaściwy sposób. Nie możesz znać algorytmów używanych przez system do szyfrowania Twojego hasła, więc to od Ciebie zależy, czy podejmiesz odpowiednie środki ostrożności i stworzysz silne hasła. Możesz już teraz sprawdzić Jak tworzyć silne hasła online, które trudno złamać.









