Jak silne musi być hasło

Co naprawdę mierzy entropia w bitach, dlaczego długość wygrywa z zupą znaków specjalnych, ile kosztuje ponowne używanie tego samego hasła oraz gdzie w tym wszystkim mieszczą się frazy hasłowe i menedżery haseł.

Do konta, którego stratą byś się przejął, użyj losowo wygenerowanego hasła o długości co najmniej 16 znaków albo frazy hasłowej złożonej z co najmniej 5 losowo wybranych słów, i użyj go dokładnie na jednej stronie. Daje to od 65 do 95 bitów entropii, z dużym zapasem poza zasięgiem ataku siłowego, a część "na jednej stronie" ma większe znaczenie niż sama siła. Poniżej rozumowanie stojące za tymi liczbami.

Entropia w bitach

Entropia mierzy, z ilu jednakowo prawdopodobnych możliwości wylosowano hasło, wyrażając to jako potęgę dwójki. 40 bitów entropii oznacza jedną z 2^40 możliwości, czyli mniej więcej bilion, a każdy dodatkowy bit podwaja pracę potrzebną do odgadnięcia. Wzór to bity = długość x log2(rozmiar zbioru znaków), więc małe litery są warte po 4,7 bita, litery i cyfry po 5,95, cały drukowalny ASCII po 6,57, a słowo z listy 7776 słów 12,9:

HasłoEntropia
8 małych liter38 bitów
12 liter i cyfr71 bitów
12 znaków, pełny ASCII79 bitów
16 liter i cyfr95 bitów
5 losowych słów65 bitów
6 losowych słów78 bitów

Ta matematyka trzyma się tylko wtedy, gdy hasło pochodzi z rzeczywistego procesu losowego. Tr0ub4dor&3 to 11 znaków ze zbioru 95 znaków, co wzór wycenia na 72 bity, ale jest to słowo ze słownika z przewidywalnymi podstawieniami i narzędzie do łamania haseł dociera do niego znacznie wcześniej. Entropia opisuje generator, a nie ciąg znaków.

Co kupują ci te bity

Szybkość zgadywania zależy od tego, jak strona zapisała hasło. Wobec działającego formularza logowania z ograniczaniem liczby prób atakujący dostaje kilka prób na godzinę. Wobec skradzionej bazy danych zależy to od funkcji skrótu: szybką, taką jak MD5 albo SHA-1, da się próbować w ogromnym tempie na konsumenckich kartach graficznych, natomiast funkcja zbudowana specjalnie do haseł, taka jak bcrypt albo Argon2, jest wolniejsza o wiele rzędów wielkości.

Poniżej najgorszy przypadek, czyli szybka funkcja skrótu bez soli przy założonych dziesięciu miliardach prób na sekundę. Pokazuje, jak gwałtownie zagina się ta krzywa, i nie jest pomiarem:

EntropiaCzas na wyczerpanie całej przestrzeni
40 bitówOkoło dwóch minut
50 bitówOkoło doby
60 bitówKilka lat
70 bitówKilka tysięcy lat
80 bitówMiliony lat

Średnio atakujący odnosi sukces w połowie tego czasu. Praktyczny wniosek: poniżej 50 bitów niewiele to daje wobec ataku offline, od 60 do 70 bitów wystarcza w większości zastosowań, a od 80 bitów w górę pozostanie wygodnie bezpieczne.

Długość wygrywa z zupą znaków specjalnych

Weź 12 znakowe hasło złożone z liter i cyfr (71 bitów). Dodanie interpunkcji, czyli poszerzenie zbioru z 62 do 95 znaków, doprowadzi cię do 79 bitów. Dodanie zamiast tego dwóch kolejnych liter albo cyfr doprowadzi do 83. Każdy dodatkowy znak mnoży przestrzeń przeszukiwania przez cały alfabet, natomiast poszerzenie alfabetu dokłada tylko jakieś 0,6 bita na każdy znak, który już masz. Długość wygrywa i wygrywa dalej.

Reguły składu ("musi zawierać wielką literę, cyfrę i znak specjalny") wpychają ludzi w wąski zestaw wzorców: wielka litera na początku, cyfra i wykrzyknik na końcu. Narzędzia do łamania haseł próbują tych przekształceń jako pierwszych. To jeden z powodów, dla których wytyczne NIST dotyczące tożsamości cyfrowej odeszły od reguł składu i wymuszanych okresowych zmian na rzecz długości oraz sprawdzania haseł wobec list znanych wycieków.

Prawdziwym ryzykiem jest ponowne używanie

Prawie nikomu konto nie zostaje przejęte atakiem siłowym. To, co się dzieje naprawdę, to credential stuffing: słaba strona zostaje włamana, pary adresu e-mail i hasła trafiają do publikacji, a zautomatyzowane narzędzia próbują każdej pary na setkach innych serwisów. Jeśli użyłeś na poczcie tego samego hasła co na zaatakowanym forum, jego siła nie ma znaczenia. Zostało oddane, a nie odgadnięte.

Phishing działa tak samo: 30 znakowe hasło wpisane na przekonującej podróbce strony logowania jest warte dokładnie tyle co password1. Zatem w kolejności tego, co ma znaczenie:

  1. Inne hasło na każdej stronie.
  2. Uwierzytelnianie dwuskładnikowe wszędzie tam, gdzie to ważne, przede wszystkim na poczcie, bo to ona jest drogą resetowania wszystkiego innego.
  3. Długość wystarczająca, żeby łamanie offline było beznadziejne.

Frazy hasłowe

Fraza hasłowa to kilka słów wybranych losowo z listy, na przykład harvest-cobalt-mural-drift-plinth. Przy 12,9 bita na słowo pięć słów daje 65 bitów, a sześć 78.

Działa to pod dwoma warunkami. Słowa muszą być wybrane losowo, kostką albo przez oprogramowanie, a nie wskazane przez ciebie. Oraz siła bierze się z liczby słów, a nie z separatora ani z zapisania jednej litery wielką: wers piosenki albo cytat mają niemal zerową entropię, ponieważ pochodzą z niewielkiej puli rzeczy, które ludzie mówią.

Frazy hasłowe zarabiają na siebie przy tych kilku hasłach, które wpisujesz z pamięci: logowaniu do urządzenia, haśle głównym menedżera, szyfrowaniu dysku.

Gdzie mieści się menedżer haseł

Menedżer haseł zamienia zadanie "wymyśl i zapamiętaj 200 unikalnych haseł" w zadanie "zapamiętaj jedną długą frazę hasłową". Generuje ciągi o wysokiej entropii i wypełnia je we właściwej domenie, co stępia phishing, ponieważ menedżer nie uzupełni ich automatycznie na łudząco podobnym adresie.

Skupia ryzyko w jednym miejscu, co jest realnym zarzutem i mimo to pozostaje lepszym układem: jeden sejf za długą frazą hasłową i drugim składnikiem bije jedno hasło rozdane na dziesiątki stron o nieznanej jakości.

Uwaga o haszowaniu

Haszowanie to druga strona logowania. Dobrze zbudowana usługa przechowuje osolony skrót z celowo wolnego algorytmu, nigdy samego hasła, więc wyciek nie daje od razu tekstu jawnego. Funkcje skrótu ogólnego przeznaczenia, takie jak SHA-256, są zbudowane tak, by były szybkie, co czyni je znakomitymi do sum kontrolnych plików i kiepskim wyborem do przechowywania haseł. Zahaszowanie własnego hasła, żeby "zrobić je silniejszym", nie daje nic: wynik jest dokładnie tak trudny do odgadnięcia jak wejście.