Hasła to jeden z najważniejszych, najbardziej złożonych, obrośniętych szkodliwymi mitami i budzących najwięcej kontrowersji tematów w obszarze bezpieczeństwa. Spróbujemy go dla was rozebrać na czynniki pierwsze w krótkim cyklu artykułów.
Przez kolejne dni będziecie mogli przeczytać nasze rekomendacje na temat tego, jak hasła tworzyć, jak je przechowywać, czym je najlepiej wzmocnić i jak zabezpieczać urządzenia mobilne, a ostatniego dnia odpowiemy na wasze najczęstsze pytania z tego obszaru. Zaczynamy dzisiaj od kwestii niezwykle ciekawej, czyli jak tworzyć hasła, by były bezpieczne i dało się je zapamiętać.
Cały cykl znajdziecie tu:
- Część 1, czyli jak tworzyć hasła,
- Część 2, czyli jak przechowywać hasła,
- Część 3, czyli które metody uwierzytelnienia dwuskładnikowego mają sens,
- Cześć 4, czyli jak zabezpieczać urządzenia mobilne i czy ufać biometrii,
- Cześć 5, czyli najczęściej zadawane pytania.
Hasło dłuższe lepsze od skomplikowanego
Pamiętacie te rekomendacje, że hasło powinno zawierać duże i małe litery, cyfry i znaki specjalne? Niestety to jeden z najmocniej zakorzenionych mitów dotyczących haseł. Do tej pory identyczne (lub bardziej skomplikowane!) rekomendacje można spotkać w wielu (czasem nawet poważnych) serwisach. Tymczasem matematyka nie kłamie i wskazuje na zupełnie inne rozwiązanie.
Załóżmy, że naszego hasła nie ma w słowniku, z którego korzysta haker i będzie musiał je zgadywać, sprawdzając wszystkie możliwe kombinacje znaków. Porównajmy teraz hasło spełniające popularne kryteria:
$Tk0A&8B
z hasłem, które na pierwszy rzut oka wielu osobom wyda się „słabe”:
czarnazabakumka
Oba hasła zapewne oprą się atakom słownikowym. A które z nich jest silniejsze? Obliczymy to w mocno uproszczony sposób, by nie męczyć was logarytmami. To pierwsze hasło ma 8 znaków, z których każdy może przyjąć jedną z 95 wartości. To drugie ma 15 znaków, z których każdy może przyjąć 26 różnych wartości. Jeśli porównamy więc 95 do potęgi 8 z 26 do potęgi 15 to okaże się, że nasze 15-znakowe hasło składające się z samych małych liter jest ponad 200 tysięcy razy trudniejsze do złamania niż hasło 8-znakowe, zawierające wszystkie kategorie znaków.
Jak bardzo długość hasła wpływa na trudność jego złamania niech najlepiej pokaże fakt, że porównywalną do tego „skomplikowanego”, ale krótkiego hasła siłę będzie miało hasło składające się z samych małych liter o długości 11 znaków, a hasło o 12 znakach będzie od niego silniejsze. Teraz jeszcze odpowiedzcie sobie na pytanie, które z nich jest łatwiej zapamiętać – i mamy gotową rekomendację „dłuższe lepsze od skomplikowanego”.
Dłuższe, ale jak długie?
Aby odpowiedzieć na to pytanie musimy przyjąć kilka założeń – najlepiej pesymistycznych, by być w razie pomyłki po lepszej stronie. Po pierwsze, liczymy dla hasła składającego się z samych małych liter. Po drugie zakładamy, że hasło jest przechowywane w formie najgorszego możliwego, często używanego hasha (najszybszego do obliczania), czyli MD5. Po trzecie zakładamy, że atakujący ma do dyspozycji botnet, duży budżet na maszyny w AWS lub własny superkomputer.
Karta graficzna typu RTX 3090 za pomocą narzędzia hashcat osiąga ok. 67 miliardów sprawdzanych hashy na sekundę. Załóżmy zatem, że atakujący jest absurdalnie bogaty i bardzo zdeterminowany i może użyć 1000 takich kart naraz. Nasze „skomplikowane” hasło 8-znakowe łamałby niecałe dwie minuty (statystycznie ujmując, połowę tego czasu – bo musiałby mieć dużego pecha, by trafić na nie w ostatniej próbie). Z kolei pokonanie naszego „prostego, ale długiego” hasła zajęłoby maksymalnie 290 dni (o rachunku za prąd nie wspominając). Jeśli 290 dni was nie satysfakcjonuje, to wystarczy dodać 3 kolejne litery i dostajemy ok. 14 tysięcy lat.
Czy jest zatem sens tworzyć hasła dłuższe niż 18 znaków? Jeśli ktoś lubi, to oczywiście – ale nie wpływa to już w żaden realny sposób na jego bezpieczeństwo. 18 znaków powinno wystarczyć każdemu – nawet jeśli są to tylko małe litery.
Ale ataki słownikowe!
Słusznie, to ważny temat. Wszystkie powyższe rozważania opieramy na założeniu, że nasze hasło nie znajduje się w słowniku napastnika. Słowniki znacząco skracają czas potrzebny na łamanie haseł. Jakie hasła zatem są w słownikach napastników, a jakich nie ma? Spójrzmy na kilka nieoczywistych przykładów.
litwoojczyznomojatyjestesjakzdrowie
To hasło oczywiście (podobnie jak wiele fragmentów wierszy, piosenek czy innych popularnych powiedzonek) znajduje się w licznych słownikach. Nie używajcie fraz, które występują w takiej postaci w sieci.
zaq!@WSXCDE#$rfvbgt%^
To hasło znajduje się w każdym słowniku hakera. To „wężyk” po klawiaturze. Każdy szanujący się haker ma w swoim słowniku wszystkie wężyki.
P@k1st@n!P@k1st@n!P@k1st@n!
To hasło też znajduje się w słowniku hakera. Nie bezpośrednio – w słowniku znajduje się słowo „pakistan”, a program łamiący hasła (np. hashcat) zna różne regułki, których używacie do modyfikacji swoich haseł i aplikuje je po kolei do każdego słowa ze słownika. Zaaplikowane zostaną więc popularne regułki takie jak „pierwsza litera duża”, „zamień a na @”, „zamień i na 1”, „dodaj ! na końcu” oraz „powtórzy 3 razy”.
poznalemswojazonenaplazywustce
Tego zdania nie ma w słowniku hakera. Dlaczego? Bo to zdanie osobiste, które dotyczy konkretnej (być może tylko jednej na świecie) osoby.
bederobil20pompekjakwstane
To hasło także nie znajdzie się w słowniku hakera, a co więcej, jego codzienne wpisywanie może pomóc w realizacji planu.
Co więcej, warto zauważyć, że ułożenie hasła z 5 słów znajdujących się w słowniku hakera nie oznacza, że do złamania takiego hasła wystarczy łamać je 5 razy dłużej. Jeśli słownik hakera ma 100 000 haseł, to oznacza to, że łamanie hasła z 5 wyrazów (znajdujących się w słowniku) będzie wymagać 100 000 do potęgi piątej prób (1 i 25 zer, czyli bardzo dużo).
Ale hasła powinien generować manager haseł!
O tym, czy / kiedy / jak używać managera haseł, opowiemy w kolejnym odcinku. Jeśli z niego korzystacie, to oczywiście używanie całkiem losowych haseł, składających się z małych i dużych liter, cyfr i znaków specjalnych o długości przynajmniej 11-12 znaków daje porównywalny poziom bezpieczeństwa, co hasła 15-znakowe składające się z samych małych liter.
Może zapytacie „a po co mi hasło z małych liter układające się w zdanie, skoro korzystam z managera haseł”. Odpowiemy: „może przyda się do zabezpieczenia managera haseł albo logowania do komputera” :)
Miernik siły hasła mówi mi, że moje hasło jest słabe
Niestety wiele mierników siły hasła na różnych stronach nie liczy jego prawdziwej siły, tylko działa według starych reguł, dawno uznanych za nieprzydatne, a wręcz obniżające jakość hasła. Najprościej taki miernik przetestować, porównując dwa hasła: „calkiemdobrehaslomam” oraz „Abcd123!”.
Jeśli to pierwsze zostanie uznane za słabe, a drugie za silne, to wiecie już, że autorzy tego miernika nie wiedzą, co czynią.
Różne hasła w różnych miejscach
Dobre hasło nie wystarczy. Trzeba mieć ich dużo, a najlepiej jest mieć osobne hasło do każdego serwisu.
Dlaczego osobne hasła są takie ważne? Włamywacze lubią, gdy macie takie same hasła w wielu miejscach. W jednym ukradną, w drugim użyją. Hasła do poczty czy Facebooka praktycznie nigdy nie są wykradane z serwerów poczty czy Facebooka. Bardzo często wykradane są z innych miejsc (np. fora czy sklepy internetowe) i sprawdzane, czy pasują do danej skrzynki pocztowej lub konta w mediach społecznościowych. Używając różnych haseł w różnych miejscach, rzucacie włamywaczom kłody pod nogi.
Jak sobie poradzić z posiadaniem wielu różnych haseł? Odpowiedź na ten temat znajdziecie już w środę w kolejnym artykule, tym razem poświęconym przechowywaniu haseł.
Macie pytania dotyczące haseł? Piszcie je od razu w komentarzach, odpowiemy w kolejnych odcinkach.
Dla zachowania pełnej przejrzystości: Patronem cyklu jest Aruba Cloud. Za opracowanie i opublikowanie tego artykułu pobieramy wynagrodzenie.
Komentarze
W kontekście liczenia 1000000^5 – czyli łamania brutforcem po słowniku. Zazwyczaj słownik będzie krótszy, odcięcie na poziomie np 800-1000 (tle unikalnych słów dziennie używamy) czy nawet 10-20k (tyle mniej więcej jest w naszym osobistym słowniku) najczęściej używanych słów znacznie zmniejszy przestrzeń haseł do zbadania, nie obniżając bardzo skuteczności. Oczywiście są różnice z uwagi na język (np odmiana w j.polskim), ale praktyka będzie taka, że słownik z 100k słów raczej będzie zbędny.
Biorąc pod uwagę leniwość użytkowników przy wpisywaniu haseł, w większości przypadków zatrzymamy się na 3-4 słowach, bo to już i tak zazwyczaj 15+ znaków. Frazy 5+ słów będą po prostu zbyt długie w codziennym użytku. Tym bardziej, że w hasłowych poradnikach też często pojawiają się często 3 (wasz 1 przykład) lub 4
(znany XCKD) słowa.
To w sumie wychodzi często słabiej niż skomplikowane 8 znaków.
Poza tym takiego hasła nie przyjmie spora część serwisów, powiedzą że za słabe.
Jeśli więc propozycją są hasła-połączenia słów, które można łamać za pomocą samych słowników to mit zastępujemy mitem. Moim zdaniem zabrakło kilku disclaimerów, które pomogą utrudnić pracę łamaczom.
Przecież nawet jak weźmiesz słownik z 10k słów to musisz uwzględnić, że:
kumkać
kumkam
kumkasz
kumka
kumkają
kumkamy
kumkacie
kumkałem
kumkałeś
kumkał
kumkała
kumkali
kumkały
kumkaliśmy
kumkaliście
i z jednego czasownika masz minimum 15 form do uwzględnienia. Więc mam pytanie, czy sprawdziłeś swoją hipotezę w praktyce?
Przy odmianie to tylko końcówki. Więc, chyba, nie trzeba zapisać każdej odmiany z osobna. W tym wypadku nie wystarczyłyby same końcówki? Dałoby się stworzyć taki słownik?
@jzaam. Operacje na końcówkach zwiększą ilość koniecznych prób do tego samego poziomu co powiększenie słownika a o to chodzi.
Jezyki z odmianą mają tu rzeczywiście przewagę. Nie każde hasło jest jednak po np. polsku. Do tego wykorzystanie faktu, że częstość użycia słów pokrywa się z rozkładem pareto może pomóc w optymalizacji łamania takich fraz.
Niezależnie od języka ludzie są przewidywalni i atakujący to wiedzą:
Are A Mix Of Non-English Passwords More Secure?
https://passwordbits.com/mix-non-english-passwords-secure/
Biedny onet. Znowu im się dostało.
Nie używać passphrase. Ludzie nie są aż tak kreatywni. Używają mało słów i chcą mieć krótkie do wpisywania hasła. W wielu serwisach nie użyjesz takich haseł, bo nie akceptują polskich liter, spacji i długości powyżej 16 znaków.
Tak się łamie batteryhorsestaple i podobne
https://www.pentestpartners.com/security-blog/three-word-passwords/
czarnazabakumka padnie, poznalemswojazonenaplazywustce pewnie nie, ale gdzie to hasło wpiszesz? Wymyślisz może z kilka passphrase: jedno do veracrypt, drugie do systemu, trzecie do password managera. Do stron/portali tylko menadżer haseł się nadaje.
Bez robienia błędów w wyrazach takie rady za 5 lat nie będą miały sensu. Już praktycznie nie mają, bo XKCD z passphrase powstało w 2011 roku.
https://www.linkedin.com/posts/adykiel_hasagka-cyberbezpieczeagmstwo-fakty-activity-6967960628753784832-8KTe
Pytanie:
Po przeczytaniu poniższego artykułu zastanawiam się czy tworząc hasła (np. do plików kdbx czy 7-zip) powinniśmy uwzględnić fakt, że za kilka lat mogą się pojawić komputery kwantowe?
Innymi słowy, czy realny jest scenariusz, że ktoś dzisiaj wykrada plik zabezpieczony według dzisiejszych standardów bardzo silnym hasłem i łamie to hasło gdy będą dostępne komputery kwantowe? Jeśli tak to jak się przed tym zabezpieczyć?
Doomsday clock: quantum computers will break our defenses in less than eight years
https://cybernews.com/tech/doomsday-clock-quantum-computers-will-break-our-defenses-in-less-than-eight-years/
Jeżeli dobrze rozumiem temat to komputery kwantowe łąmią algorytm szyfrujący, a na to jakiego algorytmu używa dostawca nie masz raczej wpływu. Jeśli staną się na tyle szybkie i tanie by atakować z ich pomocą zwykłych użytkowników to myślę, że dostawcy usług zmienią algorytm szyfrowania na taki, który oprze się tym komputerom tak jak współczesne algorytmy opierają się współczesnym komputerom.
https://en.wikipedia.org/wiki/Post-quantum_cryptography
Pewien obywatel RPA myślał, że hasło typu „litwoojczyznomojatyjestesjakzdrowie” jest dobrym pomysłem i zapłacił za swój błąd utratą 4 bitcoinów:
Brain wallet disaster
https://www.reddit.com/r/Bitcoin/comments/1ptuf3/brain_wallet_disaster/
„Just lost 4 BTC out of a hacked brain wallet. The pass phrase was a line from an obscure poem in Afrikaans. Somebody out there has a really comprehensive dictionary attack program running.”
PS Afrikaans to język używany przez potomków holenderskich osadników w Afryce Południowej
Czyli cały poradnik sprowadza się do tego, że hasła muszą być długie i losowe. Nie ma innej rady. Ktoś kto myśli inaczej, powinien się pójść i zabić!
Ja generuję hasła z 2 generatorów online (Avast i ESET), z każdego hasło ma 30-40 znaków, co razem daje 60-80 znaków, które jeszcze dodatkowo ze sobą mieszam, mam skrypt w Pythonie na to. A na końcu pozwalam kotu przebiec przez klawiaturę, co zwiększa entropię i znów miksuję wszystko (wcześniej wygenerowane perfekcyjnie losowe hasło + efekt kociska) swoim skryptem w Pythonie. Jest dobrze! Takie hasło jest nie do rozwalenia. Trochę to śmieszne, ale skuteczne.
Ale każdemu i tak dodatkowo polecam klucze YubiKey jako dodatkowy czynnik uwierzytelniający. Nie ma silniejszej ochrony!
Jest niezerowa szansa, że kot biegnący po klawiaturze, odpali Ci formatowanie dysku. Ja bym uważał… ;)
Duży Pies wskazał 2 generatory, dorzuciłbym jeszcze 2 mierniki siły hasła: passwordmonster.com czy password.kaspersky.com – w którym faktycznie P@k1st@n!P@k1st@n!P@k1st@n! wskazane jest jako „Frequently used words”.
Opcja 60-80 znaków nie wszędzie się sprawdza.
Spotkałem się z systemami (polskimi), które przepuszczały 32, czy 48 znaków, a już 64 i wiecej nie…
A szkoda, bo nie wszyscy developerzy stosują się do rekomendacji:
https://cert.pl/posts/2022/01/rekomendacje-techniczne-systemow-uwierzytelniania/
System „POWINIEN pozwalać na ustawienie hasła o długości co najmniej do 64 znaków”
W świetnym artykule CERTU:
https://cert.pl/posts/2022/01/co-wycieki-danych-mowia-o-haslach/
statystyki długości na poczatku mnie rozwaliły… WTF? że co, tylko ~2% osób stosuje dłuższe hasła niż 16 znaków?
Ponoć DT używał hasła składajacego się z 9 znaków:
A Holenderski ekspert twierdzi, że uzyskał dostęp do konta prezydenta Trumpa @realDonaldTrump na Twitterze, odgadując jego hasło: „maga2020!”
https://cyfrowa.rp.pl/it/art18141941-zlamal-hasla-trumpa-do-twittera-i-linkedin-byly-zaskakujace
Ja bym pokusił się o mix słowników językowych typu: estoński, włoski, niemiecki, polski + słówka mniej popularne, czy trudniejsze których może nie być w bazach podstawowych słów. Może coś w stylu:
ma^kohtasinSwojąEhefraunaBellissimaplaz7wŚwinuojściu
*gdzie a, y (lub inne) nie jest zamieniane ani na 4 ani na @ tylko inny sobie znany znak.
Wg passwordmonster.com, więc nieco lepiej niż przykład Adama, tj. 25 – million trillion trillion trillion trillion years ;)
Możnaby się pokusić o bardziej skomplikowane:
UmorusdanyUrwipołećZRozczohranąKoafiurąNucil12groszyKazikaNieplaczP5osze06ranoprzyRobieniu30pompek
4 trillion trillion trillion trillion trillion trillion trillion trillion trillion trillion years (wg passwordmonster.com) – korzystając z fraz, które nie pojawią się w słownikach (lub dla graczy na kurniku/scrabble) np. z tych:
https://polszczyzna.pl/najdziwniejsze-slowa-w-jezyku-polskim/
https://zagrajmywzycie.pl/trudne-slowa-lepsze-slownictwo/
https://scrabblemania.pl/ (2,5 mln słów)
Nie mam dobrej karty graficznej, ale czy ktoś mogłby jeszcze haschcatem czy inną maszynką zweryfikować, czy passwordmonster to dobry miernik?
Wiem, na wymyślaniu straciłbym jednego hasła 5 minut, ale być może to gra warta świeczki również i jakiś sposób na bardziej rozmyślne rozwiązania i ewolujące łamacze?
„Według badania Openwave Mobility ludzie marnują ponad 12 godzin każdego roku na samo zajmowanie się hasłami. Oznacza to pół dnia każdego roku lub pięć dni co 10 lat. Zmęczenie wywołane ustalaniem haseł obniża produktywność pracownika, szacuje się, że jest to 480 dolarów rocznie na jednego pracownika.”
https://interaktywnie.com/biznes/newsy/biznes/ile-czasu-poswiecamy-na-wymyslanie-hasel-oto-wyniki-badania-262517
Poza menedżarami, generatorami i własną inwencją twórczą (spunderyzmy, przysłowia, utwory literacklie, teksty piosenek, mixy słowników) to chyba nie ma idealnego rozwiązania na hasła:)
Dorzucając do tej dyskusji cegiełkę wydaje mi się też, że w tym wszystkim, przy zachowaniu kompromisu i mimo wszystko zdrowej paranoi, rozsądnym jest zastosować mix różnych możliwych rozwiązań tj. silne hasła + menedżery haseł + yubikey + MFA + bieżące aktualizacje + rozsądek + analogoway backup w postaci notatnika/kalendarza (albo 2, na wypadek gdyby jeden się zgubił/spalił w pożarze). AMEN.
To są moje zasady dla tworzenia bezpiecznych haseł. Stosując je zapewniam, że nigdy nie będzie problemu.
1. Używać co najmniej 8 znaków, im więcej tym lepiej.
2. Zawierać zarówno małe i duże litery, cyfry oraz znaki specjalne.
3. Unikać słów i fraz związanych z osobistymi danymi, takimi jak nazwiska, daty urodzenia itp.
4.Unikać używania słów i fraz związanych z informacjami, które łatwo znaleźć w Internecie, takimi jak nazwy miejscowości, ulubionych zespołów itp.
5. Regularnie zmieniać swoje hasło.
6. Nie udostępniać swojego hasła innym osobom.
7. Unikanie używania tych samych haseł dla różnych kont.
8. Unikanie używania słów lub fraz związanych z motywami powtarzającymi się, takimi jak „1234” czy „qwerty”.
9. Używanie trudnych słów takich jak opisane tutaj: Trudne polskie słowa, które warto znać
10. Unikanie używania słów lub fraz związanych z popularnymi hasłami (np. „password”, „admin”, „letmein”)
Szkoda tylko, że wiele serwisów ma spore ograniczenia w tworzeniu haseł, zwłaszcza banki gdzie nie raz 16 znaków to MAX. Co z tego, że korzysta się z menedżera haseł, jak w wielu miejscach dłuższych haseł się po prostu nie da ustawić :(
Dodatkowo w każdym serwisie obowiązkowo 2FA (najlepiej yubikey) – ale tutaj tak samo żaden bank w PL nie obsługuje yubikey.
Jeszcze gorzej, że wiele serwisów w ogóle nie obsługuje 2FA, nawet gdy przechowują masę informacji o nas (chociażby ZUS który dalej 2FA nie ma, a są tam wszystkie nasze dane…)
Podsumowując najlepiej wszędzie mieć długie hasła (powyżej 20 znaków) z menedżera haseł. Sam menedżer haseł zabezpieczyć 2FA. Dodatkowo dla większego bezpieczeństwa posiadając czarny klucz yubikey możemy część hasła ustawić jako statyczne hasło. Wtedy przy logowaniu wpisujemy np swoje kilkunastoznakowe hasło, przytrzymujemy chwilkę klucz i klucz uzupełnia np kolejne 30 znaków – łącznie mamy przykładowo 50 znakowe hasło + 2FA do menedżera więc nie do złamania :D
Jak właściwie łamie się hasła KeePassX? O ile serwisy mnie nie martwią, bo używam losowych znaków o ponad 32 znakach, o tyle zastanawiam się, jak ktoś się włamie mi na kompa, to czy szybko scrackuje mi Keepassa.
Jeśli mi wstawi keyloggera, to wiadomo.
Ale załóżmy, że umieszczam mój plik keepassXC na publicznym serwerze.
Hasło ma 15 znaków. Ile czasu zajmie np. Googlowi scrackowanie takiego hasła? A mają przecież najlepsze komputery.
Albo umieszczam sobie na dysku google jakieś swoje zdjęcia pamiątki zaszyfrowane Veracryptem, z 32 znakowym hasłem losowym (ASCII+znaki specjalne)
Ile zajmie googlowi scrackowanie takiego pliku – bo w to, że oni zostawiają takie pliki w spokoju jakoś nie wierzę. ?
15 znaków dla hasła do menedżera haseł to nie jest najlepszy pomysł moim zdaniem mimo tych rzekomych setek tysięcy lat na złamanie, za kilka lat może to być znacznie mniej (nie tylko wzrost mocy obliczeniowej, ale też kolejne wykrywane słabości algorytmów). Celowałbym w okolice 25 i stosowałbym wszystkie możliwe utrudnienia które nie uniemożliwią zapamiętania tego hasła. To w końcu tylko jedno hasło
Mi brakuje popularności używania zamiast haseł – plików. Takich key-files jakie były w TrueCrypcie.
Robię sobie dostęp typu „hasłem jest zawartość pliku”, i trzymam na pendrivie/chmurze/dysku jakiś niewinny obrazek tudzież ikonkę o rozmiarze 5kB. I my się cackamy czy 32 bity wystarczą, czy może jednak 64, a tutaj bez żadnego wysiłku mam hasło o długości 40 tysięcy bitów.
Hasła dłuższe niż 256 bitów nie mają sensu, bo i tak są haszowane.
ja sprawdzam zazwyczaj hasło rozdzielam ma 3 literowe partie i sprawdzam każdą czy nie występuje w słowniku https://poocoo.pl do tego dodaję losowy cyfry i co najmniej 4 znaki specjalne. Ważne aby hasło nie było słowem z liter występujących w słowniku.