« Twoje hasło musi zawierać 8 znaków, wielką literę, małą literę, cyfrę i znak specjalny. »
Wszyscy znamy tę zasadę. A jednak w cyberbezpieczeństwie nazywa się to “teatrem bezpieczeństwa”. Hasło takie jak P@ssw0rd1! spełnia wszystkie te zasady. Ale to popularne słowo z przewidywalnymi podstawieniami, czyli dokładnie to, co narzędzia do łamania haseł sprawdzają najpierw.
Prawdziwe bezpieczeństwo nie opiera się na arbitralnych zasadach wizualnych, ale na bezlitosnej rzeczywistości matematycznej: entropii.
Entropia według Claude’a Shannona
Aby zrozumieć siłę hasła, musimy zwrócić się do Claude’a Shannona, ojca teorii informacji. Entropia mierzy stopień niepewności lub nieprzewidywalności informacji.
W zastosowaniu do haseł, entropia jest obliczana w bitach. Im wyższa liczba bitów, tym bardziej nieprzewidywalne jest hasło dla komputera. Uproszczony wzór na entropię (E) losowo wygenerowanego hasła to:
E = L × log2(R)
- L to długość hasła.
- R to rozmiar puli znaków (26 dla małych liter, 62 z wielkimi literami i cyframi, 94 ze wszystkimi drukowalnymi symbolami). Cztery zestawy znaków naszego generatora dają 91, ponieważ jego zestaw symboli ma 29 znaków.
Zwiększenie rozmiaru puli (dodanie symboli) zwiększa entropię, ale zwiększenie długości (dodanie znaków) zwiększa ją znacznie drastyczniej. Jednakże, długość pokonuje złożoność tylko pod jednym warunkiem: hasło musi zostać wygenerowane całkowicie losowo.
Brute Force vs. Atak Słownikowy
Jeśli używasz słów lub przewidywalnych struktur, zasada samej długości upada.
Oprogramowanie hakerskie nie sprawdza wszystkich kombinacji liter jedna po drugiej (nazywa się to Brute Force). Używają ogromnych list prawdziwych haseł z wcześniejszych wycieków danych, a także popularnych słów i wyrażeń. To jest Atak Słownikowy (Dictionary Attack).
Jeśli twoje hasło jest długie, ale składa się ze słów ze słownika lub przewidywalnych podstawień, jego rzeczywista entropia jest dramatycznie niższa niż jego teoretyczna entropia matematyczna.
Poniższa tabela stosuje jedną zasadę: 100 miliardów prób na sekundę, czyli tempo, które strona naszego generatora zakłada dla ataku offline na szybki hash. Czasy są przeciętne (połowa wszystkich możliwości) i zaokrąglone w dół tym samym wzorem co na tamtej stronie. Najszybsza droga dla każdego hasła jest pogrubiona:
| Hasło | Entropia, gdyby każdy znak był losowy | Brute Force (przeciętnie) | Atak słownikowy (nasz szacunek) |
|---|---|---|---|
password123 | 56 bitów (11 znaków, małe litery i cyfry) | 7 dni | Mniej niż sekunda |
S3cr3t!99 | 58 bitów (9 znaków, wszystkie cztery zestawy) | 24 dni | Mniej niż sekunda |
correct horse battery staple | 133 bity (28 znaków, małe litery i spacja) | Więcej niż 1 bilion lat | 1 minuta |
gL7!pQ9z#vX2 | 78 bitów (12 znaków, wszystkie cztery zestawy) | 51 tysięcy lat | Brak skrótu |
Kolumna słownikowa to szacunek. Zakłada, że próby atakującego podążają za strukturą każdego hasła i że każde słowo bazowe należy do 1000 najpopularniejszych:
password123: jedno popularne słowo i trzy cyfry. To 1000 × 1000, czyli około miliona prób.S3cr3t!99: jedno popularne słowo, z wielką literą lub bez, z każdym “e” zamienionym na “3” lub nie, a potem dowolny trzyznakowy przyrostek. To około 7 miliardów prób.correct horse battery staple: cztery popularne słowa. Komiks xkcd, który je rozsławił, liczy 44 bity dla czterech słów z listy 2048 słów. Przy tym samym tempie to przeciętnie 88 sekund, po zaokrągleniu w dół 1 minuta.gL7!pQ9z#vX2: brak słowa i wzoru, więc najszybszą drogą jest brute force.
Te szacunki traktują każde hasło tak, jakby atakujący go nie znał. Każde hasło w tym artykule jest teraz publiczne, więc każde trafia do słownika. Opublikowane hasło to spalone hasło.
Iluzja Leetspeak i Zasady Mutacji
Weźmy na przykład S3cr3t!99. Wizualnie wydaje się skomplikowane i solidne. A jednak jest to po prostu słownikowe słowo “secret”, w którym ’e’ zostały zastąpione przez ‘3’, do którego dodano bardzo powszechny przyrostek (!99). To się nazywa leetspeak.
Przeciwko atakowi słownikowemu to hasło wytrzymuje mniej niż sekundę, a nie 24 dni, które sugerowałaby jego długość. Nowoczesne oprogramowanie do łamania (takie jak Hashcat) nie zadowala się testowaniem statycznych list słów; automatycznie stosują zasady mutacji. Wezmą każde słowo ze swojego słownika, przetestują wszystkie możliwe kombinacje leetspeak, zamienią wielkie litery i dodadzą lata lub symbole. Leetspeak daje fałszywe poczucie bezpieczeństwa.
Sztuczka ze Zmianą Klawiatury (Keyboard Shift)
Aby skomplikować łatwą do zapamiętania frazę, niektórzy używają sztuczki polegającej na zmianie układu klawiatury. Na przykład zapamiętujesz frazę taką jak my-cat. Ale w momencie jej wpisywania umieszczasz palce na fizycznej klawiaturze QWERTY, podczas gdy twój system operacyjny jest skonfigurowany na AZERTY (francuski).
- Pomyślane słowo:
my-cat - Wpisany rezultat:
,y)cqt(Klawisz ’m’ staje się ‘,’; ‘-’ staje się ‘)’; ‘a’ staje się ‘q’).
Czy to dobry pomysł w OPSEC? Nie, ta metoda nie jest wystarczająca, jeśli jest używana samodzielnie. Podobnie jak leetspeak, zmiana układu klawiatury to stałe podstawienie: atakujący, który ją podejrzewa, stosuje to samo odwzorowanie do każdej próby. W OPSEC jest to bezpieczeństwo przez niejasność (security by obscurity): opóźnia amatorskiego atakującego, ale nie powstrzyma ukierunkowanego i wyposażonego ataku.
W połączeniu z hasłem, które już jest silne (jak długa losowa fraza hasłowa), daje niewiele. Nawet jeśli atakujący wypróbuje tysiąc par układów, dodaje to mniej niż 10 bitów, bo log2(1000) ≈ 9,97. Siła nadal pochodzi z frazy hasłowej pod spodem.
Budowa hasła głównego (~250 bitów)
Jeśli listy słów, leetspeak i sztuczki z pisaniem mają swoje ograniczenia, jak zbudować hasło główne, które przetrwa lata? Nasz generator już ocenia 80 bitów jako “Silne”, a 100 bitów jako “Bardzo Silne”. Dla hasła głównego, które ma służyć przez dziesięciolecia, ten artykuł mierzy znacznie wyżej: w około 250 bitów entropii. Sekcja kwantowa poniżej wyjaśnia dlaczego i czego ten zapas nie zapewnia.
Istnieją dwa sposoby osiągnięcia tego celu w zależności od potrzeb:
1. Losowe znaki (dla menedżera haseł)
Ciąg znaków wygenerowany całkowicie losowo, bez wzoru, który maszyna mogłaby wykorzystać:
8}8,_$-p)M&n,XvUCT0o+.5hDE6P^w6b@U-evS0
39 znaków wylosowanych z 91 znaków naszego generatora: generator pokazuje “Liczba bitów: ≈ 253”. To hasło wylosowano na potrzeby tego artykułu, więc jest teraz publiczne. Nigdy go nie używaj.
2. Losowa fraza hasłowa (dla hasła, które zapamiętujesz)
Losowe słowa łatwiej zapamiętać niż losowe znaki. Każde słowo wylosowane z listy EFF liczącej 7776 słów dodaje około 12,9 bitu, więc to liczba słów wyznacza entropię. Dwanaście słów daje “Liczba bitów: ≈ 155”, daleko powyżej progu “Bardzo Silne” naszego generatora. Same słowa przekraczają 250 bitów dopiero przy 20 słowach.
Nasz generator kończy na 12 słowach. Aby przekroczyć 250 bitów mniejszą liczbą słów, zaznacz “Losowa cyfra po każdym słowie” i wybierz “Cyfra + Symbol” jako separator. 11 słów daje wtedy “Liczba bitów: ≈ 260”:
depletion78$sporting14~overlap11>macaw86>paced95,paramedic41}blot41$flagstone07;uncanny92/broadways77#say2
Wylosowane na potrzeby tego artykułu, dokładnie z tymi ustawieniami. Opublikowane hasło to spalone hasło: nigdy nie używaj tego ani żadnego przykładu, który czytasz. Liczy się tylko to, co zostało wylosowane. Wielka litera na początku każdego słowa nic nie dodaje, a słowa wybrane samodzielnie są dużo słabsze od losowych.
Kwantowe Zagrożenie: Algorytm Grovera
Dlaczego dążyć do 250 bitów, skoro 128 bitów już dziś blokuje superkomputery? Odpowiedź leży w perspektywie dużych komputerów kwantowych.
W kryptografii algorytm Grovera pozwala komputerowi kwantowemu przeszukiwać nieposortowaną bazę danych znacznie szybciej niż klasyczny komputer. Konkretnie, Grover skutecznie zmniejsza o połowę poziom bezpieczeństwa klucza symetrycznego lub hasła.
W starciu z komputerem kwantowym z uruchomionym algorytmem Grovera hasło o entropii 128 bitów dawałoby teoretycznie odporność równoważną zaledwie 64 bitom. To znacznie cieńszy zapas.
Podwojenie entropii zachowuje zapas: około 256 bitów nadal zostawiłoby około 128 bitów wobec algorytmu Grovera. Stąd bierze się cel 250 bitów w tym artykule. To środek ostrożności wybrany przez ten artykuł, a nie liczba zaczerpnięta z jakiegoś standardu.
Ten zapas ma swoje granice. Przyspieszenie Grovera jest kwadratowe, a nie nieograniczone. Każdy jego krok nadal musi obliczyć hash hasła danej strony, i to na komputerze kwantowym wystarczająco dużym, by go wykonać. Dla porównania: przy 100 miliardach prób na sekundę, które zakłada strona naszego generatora, przeciętne przeszukanie 100 bitów trwa już co najmniej 200 miliardów lat.
Ta logika przypomina Harvest Now, Decrypt Later (HNDL): skradzioną bazę hashów haseł można dziś przechować i zaatakować później, lepszymi maszynami. Większy zapas podnosi poprzeczkę wobec takiego ataku. Nie jest to trwała gwarancja.
Arpokrat Password Generator: Stwórz własne
Nie pozostawiaj bezpieczeństwa swoich dostępów przypadkowi. Nasz darmowy generator tworzy losowe hasła i frazy-hasła. Dla każdego pokazuje entropię w bitach i średni czas, jaki zajęłoby przeszukiwanie.
Tylko generuje: nie ocenia hasła, którego już używasz. Dla opisanego wyżej celu 250 bitów wybierz hasło o długości 39 znaków ze wszystkimi czterema zestawami znaków. Generator pokaże je jako “Liczba bitów: ≈ 253”.
Działa w twojej przeglądarce. To, co wygeneruje, nigdy nie jest wysyłane ani zapisywane.
Ostatnie Słabe Ogniwo: Recykling i Zarządzanie Dostępami
Matematyczna entropia nie chroni przed błędem ludzkim. Hasło 250-bitowe traci swoją wartość, gdy wycieknie, jeśli jest używane wielokrotnie na wielu stronach (atak zwany Credential Stuffing) lub jeśli nie jest chronione drugim składnikiem uwierzytelniania (2FA).
Złotą zasadą higieny cyfrowej jest pamiętanie tylko jednego hasła: twojego 250-bitowego hasła głównego (losowej frazy hasłowej, jak wyżej). Wszystkie inne twoje dostępy (bank, sieci społecznościowe, serwery) muszą wykorzystywać unikalne losowe hasła, wygenerowane specjalnie dla nich.
Aby przechowywać wszystkie te hasła, których nie da się zapamiętać, używaj menedżera haseł. Wybierz taki, który szyfruje twój skarbiec na twoim urządzeniu przed synchronizacją (często mówi się o zero-knowledge), najlepiej taki, który jest open source i poddawany niezależnym audytom.
