Rafał Ślusarz
Hasło zabezpiecza Twoje zasoby (konto pocztowe, w serwisie społecznościowym, w usłudze online, ale też dostęp do miejsc i urządzeń) tak długo, jak długo komuś innemu nie uda sie go odgadnąć.
Podstawowe (STARE) zasady tworzenia haseł mówiły o tym, że w 6-cio, lub 8-znakowym haśle powinny znaleźć się przynajmniej 2 cyfry lub inne znaki specjalne np.: !@#$%^&*()][';/.,}{":? - i to zasadniczo powinno wystarczyć, by hasła nie dało się łatwo "odgadnąć". Niestety, tak już nie jest.
Nie jest tak z jednego, prostego powodu: znacząco wzrosła moc obliczeniowa nawet najprostszych komputerów. Teraz, zamiast odgadywać hasła metodą słownikową prościej (bo skuteczniej) jest użyć pełnej metody brute force
i w ten sposób odgadnąć hasło.
Obydwa te hasła oprą się atakom słownikowym, ponieważ nie są popularnymi imionami, nie zawierają daty urodzenia ani fragmentu adresu itp. Aby porównać ich "wytrzymałość" na atak brute force, w uproszczony sposób obliczymy ile czasu zajęłoby ich złamanie sprawdzając wszystkie możliwości, znak po znaku, miejsce po miejscu.
Pierwsze z haseł (&Tk7$8sB) zawiera 8 znaków, z czego na każdej z tych ośmiu pozycji może się pojawić jeden z 95 znaków (duże i małe litery, cyfry i wszystkie popularne znaki specjalne). To drugie hasło (idziedwatalerz) zawiera 14 znaków, z których każdy może przyjąć 26 różnych wartości (tylko małe litery).
W obydwu tych przypadkach ilość haseł o tej samej długości, możliwych do ułożenia z tego samego zestawu znaków, można wyliczyć stosując proste wyrażenie na ilość wariacji z powtórzeniami: V=nk (n - to ilość elementów w naszym zbiorze (odpowiednio: 95 lub 26 znaków), k- długość ciągu (odpowiednio: 8 lub 14 znaków)).
W przypadku naszych haseł wyniki to odpowiednio: 6634204312890625 możliwości oraz 64509974703297150976 możliwości, czyli to drugie hasło wymaga prawie 10 tysięcy razy więcej prób, aby wyczerpać wszystkie możliwości poprawnego ułożenia naszego hasła, jakiekolwiek by ono nie było.
Dla porównania mocy haseł tych skomplikowanych (jak nasze krótkie/dla robotów) do tych "zwykłych" (jak nasz "idzie dwa talerz") wspomnę tylko, że dla maszyny generującej wszystkie możliwe hasła o konkretnej długości (z dostępnych w obydwu zbiorach znaków), to nasze 8-mio znakowe hasło ma taką samą (porównywalną) "moc", jak zwykłe, mało-literowe słowo o długości 11 znaków. Hasło zawierające same małe litery o długości 12 znaków już będzie od niego "silniejsze". A jak łatwo jest zapamiętać jedno i drugie hasło? Sami sobie odpowiedzcie...
To jakie hasło jest lepsze? Dłuższe, czy bardziej skomplikowane?
Karta graficzna typu RTX 4090, za pomocą narzędzia hashcat osiąga ok. 150 miliardów obliczeń hashy MD5 w czasie 1 sekundy. Używając takiej właśnie karty haker sprawdzałby wszystkie możliwości, aby znaleźć nasze "krótkie hasło dla robotów" przez około 12 godzin. Gdyby jednak ten sam haker był obrzydliwie bogaty i kupił sobie 100 takich kart, to sprawdzenie tego 8-mio znakowego hasła dla robotów zajęłoby mu trochę ponad 7 minut - i to tylko w sytuacji, gdyby nasze prawdziwe hasło odgadł dopiero w ostatniej próbie.
Na tych samych stu kartach RTX 4090 nasze 14-znakowe hasło złożone z samych małych liter, ten sam haker odgadywałby przez prawie 50 dni. W sumie to jest całkiem wykonalne i potencjalnie niebezpieczne, ale gdyby do naszego mało-literowego hasła dodać jeszcze 3 literki, to czas jego odgadywania wydłużyłby się do prawie 2400 lat. Chyba można spać spokojnie...
Proszę mnie tu nie łapać za słówka, że przez 2400 lat nikt nie odgadnie takiego hasła, bo oczywiście może się zdarzyć, że hasło zostanie odgadnięte po pierwszej próbie. Statystycznie można chyba przyjąć, że do złamania (odgadnięcia) dowolnego hasła potrzebna by była mniej więcej połowa czasu na przeliczenie wszystkich możliwych hashy. No i oczywiście (w dobrych, bezpiecznych systemach/bazach) stosuje się obecnie znacznie bardziej bezpieczne algorytmy szyfrowania , niż archaiczny MD5; to wymaga jeszcze dłuższego czasu.
Czy więc w ogóle warto zakładać hasła dłuższe, niż 17-18 znaków? To zależy od naszego własnego przekonania, ale póki nawet hakerzy nie mają możliwości kupienia na "bazarku" komputera kwantowego, to z punktu widzenia matematyki i rozsądku: NIE.
Zawsze też można dodać chociaż kilka wielkich liter do naszego "wyrażenia" budującego hasło - to je wzmocni o nową pulę znaków - DWUDZIESTOSZEŚCIOKROTNIE.
Wyrażenia hasłowe powinny być zlepkiem nierealnym, oderwanym od rzeczywistości, ale jednocześnie powinny się nam (ich właścicielom) z czymś kojarzyć - abyśmy mogli je łatwo zapamiętać. Mogą to być jakieś osobiste wspomnienia przeplecione czymś "niepasującym" lub wyrażenia zrozumiałe tylko dla nas, na przykład:
(...) Kiedy użytkownicy są zmuszani do zmian haseł, zbyt często robią drobne zmiany lub używają przewidywalnych schematów do modyfikacji swojego hasła i/lub zapominają nowego hasła.Na podobnym stanowisku stoją ustawodawcy regulujący wymagania stawiane systemom teleinformatycznym obsługującym autoryzacje, na przykład National Institute of Standards and Technology w dokumencie Digital Identity Guidelines, Authentication and Lifecycle Management (dostępnym tutaj
Ostatnie badania naukowe kwestionują wartość pewnych zakorzenionych w środowisku praktyk dotyczących haseł takich jak okresowe wygasanie haseł i wskazują na lepsze alternatywy.
(Mechanizmy sprawdzające poprawność hasła) NIE POWINNY wymagać arbitralnej zmiany zapamiętanych haseł (np. okresowo).Z kolei Application Security Verification Standard dostępny na tej stronie
2.1.10 Sprawdź, czy nie ma okresowej rotacji hasła lub wymagań związanych z historią hasła.Wszystko to oznacza, że jeżeli mamy dobre, długie hasło (o ile nikt go nie podejrzy), to nie musimy go obsesyjnie zmieniać. Zmienić możemy, jeżeli zachodzi podejrzenie, że ktoś mógł zerknąć, lub kiedy hasło wpisaliśmy w pole przeznaczone na login... Różnie przecież bywa.
Więcej na temat tych wspomnianych rozwiązań można przeczytać na przykład na stronie CERT .
TL; DR: | Jakie hasło jest wystarczająco dobre? |
Najlepsza jest najdłuższa fraza, jaką jesteś w stanie łatwo zapamiętać. |