Jak pracować z hasłami?

Wstęp

W dzisiejszych czasach każdy z nas korzysta z dziesiątek serwisów i aplikacji. Wiele z nich wymusza na nowym użytkowniku założenie własnego konta, dzięki któremu będzie miał on dostęp do różnych niezbędnych funkcjonalności. To zaś bardzo często wiąże się z wymyśleniem i zapamiętaniem kolejnego hasła. Zastanawiałeś się, drogi czytelniku, ile różnego rodzaju kont i profili założyłeś w trakcie swojej przygody z internetem? Ile haseł musiałeś stworzyć i zapamiętać? Zgaduję, że kilkadziesiąt lub może nawet kilkaset.

Taki natłok skutecznie zniechęca każdego użytkownika do stosowania bezpiecznych haseł, gdyż są one po prostu zbyt trudne do zapamiętania. Stąd też wiele osób stosuje hasła uproszczone, a czasami nawet używa tych samych haseł wielu różnych serwisach. Nie trzeba chyba wspominać, że jest to proszenie się o kłopoty.

W takim razie, jak powinniśmy zarządzać hasłami? Czym powinny się charakteryzować hasła uznawane na bezpieczne? Czy faktycznie musimy je pamiętać?

Trochę światła na tę sprawę rzuci poniższa historyjka o pewnym zespole deweloperskim poznanym w poprzednim artykule.

Zarysowanie fabuły

Gdy Sebastian – spec od bezpieczeństwa – dołączył do projektu Tomka, Ani i Adama, jego pierwszym zadaniem było przeanalizowanie sposobu pracy zespołu i wyłapanie w niej praktyk, które narażały zespół – jak i całe przedsięwzięcie – na niebezpieczeństwo z zewnątrz.

Zdecydował on, że zacznie od podstaw: sprawdzi, jaka jest świadomość zespołu na temat zarządzania hasłami. W tym celu postanowił zdobyć i zbadać dotychczasowe hasła, jakie były stosowane przez projektowe trio.

Sposoby na łamanie haseł

By dobrać się do takich sekretów, Sebastian wykorzystał dobrze znane serwisy jak HaveIBeenPwned, czy Gotcha, które przechowują dane na temat wycieków danych. Po wpisaniu adresów e-mail swoich współpracowników otrzymał listę serwisów, które zaliczyły wpadkę. Następnie rozpoczęła się czasochłonna zabawa w szukanie konkretnych baz z upublicznionymi danymi i zbieranie zahashowanych haseł.

Sebastian pozyskał łącznie kilkanaście haseł zahashowanych za pomocą różnych funkcji skrótu. Część z nich udało mu się złamać za pomocą serwisów pokroju HashKiller oraz CrackStation. W ten sposób udało mu się zdobyć kilka haseł od Ani. Pozostałe trzeba było złamać nieco bardziej tradycyjną metodą.

Korzystając z usług chmurowych, Sebastian wynajął kilka maszyn, na których zainstalował Hashcata – jeden z programów do łamania haseł. Wiedział, że w zależności od poziomu skomplikowania hasła, łamanie każdego z nich może potrwać od kilku sekund do wieczności (dosłownie). Postanowił więc, że zamiast metody brute-force polegającej testowaniu każdej możliwej kombinacji znaków, skorzysta z szybszego, lecz mniej dokładnego sposobu: będzie łamać hasła metodą słownikową, która polega na sprawdzaniu całych wyrazów oraz ich wariantów. Ponieważ program sam w sobie nie wie, jakie słowa powinny być testowane, Sebatian musiał jeszcze pobrać przynajmniej jedną z wielu dostępnych w internecie list słów.

Po kilku dniach Sebastian postanowił sprawdzić wyniki pracy wynajętych maszyn z Hashcatem. Nie były one powalające – udało się rozpracować tylko dwa hasła: oba od Adama. „No trudno”, pomyślał.

Musiał jeszcze zdobyć hasło od Tomka. Niestety, jak dotąd wszystkie szybkie metody nie dały oczekiwanych wyników. Jednak po chwili przypomniał sobie, że kiedyś Tomek zapisał przez przypadek swoje hasło w repozytorium projektowym! Przeglądając historię zmian szybko znalazł interesujący go commit i zapisał znalezioną frazę.

Po przeanalizowaniu haseł Sebastian był gotów do podzielenia się swoimi uwagami.

Moi drodzy! – zawołał Sebastian z – Zapraszam wszystkich do stolika!

Gdy już wszyscy wygodnie się rozsiedli na krzesłach, uczestnicy zebrania skierowali ciekawskie spojrzenia na Sebastiana. To był znak, że można rozpocząć spotkanie.

– Pewnie zastanawiacie się, dlaczego się tutaj zebraliśmy – rozpoczął Sebastian – Chciałbym z wami porozmawiać o hasłach… – Tak, wiemy – machnął ręką Adam – jeżeli mamy najmniejsze podejrzenie, że nasze hasła ktoś poznał, to powinniśmy natychmiastowo je zmienić. Przecież już to przerabialiśmy.

– Bardzo mnie to cieszy. – odpowiedział Sebastian, podejrzanie się uśmiechając – Jednak temat nie ogranicza się tylko do szybciej reakcji na wycieki haseł, lecz też do bardziej ogólnego zarządzania nimi. Lecz zanim na tym się skupimy, warto sobie powiedzieć na temat tego, jak konstruować trudne do złamania hasła. Co nam po wiedzy z zarządzania nimi, jeżeli losowa osoba będzie w stanie je złamać w ciągu minuty? – Prychnął.

Tworzenie silnych haseł

– Jest kilka ważnych rzeczy, o których należy pamiętać, gdy chcemy stworzyć hasło trudne do odgadnięcia:

  • Im dłuższe hasło, tym trudniej je złamać. Wiele źródeł zaleca, by hasło składało się z co najmniej 12 znaków.
  • Powinno składać się z małych i wielkich liter, cyfr oraz znaków specjalnych jak wykrzyknik (!), myślnik (-), gwiazdka (*), itd. Im więcej potencjalnych różnych znaków może znajdować się w haśle, tym więcej prób będzie trzeba wykonać, by je odgadnąć.
  • Hasło nie powinno składać się z wyrazów występujących w słownikach. Często stosowaną metodą łamania haseł jest wspomniany wcześniej atak słownikowy. Jeżeli hasło zawiera popularne frazy, to istnieje dość duża szansa, że będzie bardziej podatne na tego rodzaju atak.
  • Powinno być ono nieoczywiste. Hasło nie powinno nawiązywać do serwisu, w którym jest wykorzystywane. Nie powinno też mieć żadnego związku z jego użytkownikiem (zainteresowaniami, imionami swoich znajomych, datą urodzenia, itd.) Wszystkie takie powiązania są potencjalnymi wskazówkami dla hakera, który wszystkie informacje na temat ofiary może znaleźć w internecie.
  • Hasło nie powinno być jednym z tych, które występują w listach Top X najczęściej używanych. Takie hasła najpewniej znajdują się na większości list słów, jakie należy przetestować w pierwszej kolejności.

– Oczywiście, jeżeli ktoś nie jest pewien, jak solidne jest jego hasło, może posłużyć się narzędziami online, które dadzą odpowiednie wskazówki. Można również skorzystać z gotowych generatorów.

To samo hasło dla wielu różnych serwisów

– Nawet silne hasła zdają się na nic, jeżeli będziemy nimi źle zarządzać. Co dokładnie mam na myśli? Przede wszystkim to, że nie powinniśmy stosować tych samych haseł w wielu różnych miejscach.

Każdy z serwisów może zaliczyć wpadkę i doprowadzić do upublicznienia haseł swoich użytkowników. Jeżeli atakujący będzie umiał znaleźć serwisy, w których wykorzystano ten sam login lub e-mail, to bez wątpienia będzie chciał sprawdzić, czy hasło z wycieku pasuje również w pozostałych miejscach. Stąd też będziemy musieli zmieniać hasło nie tylko w tym jednym konkretnym serwisie, który zaliczył wyciek, lecz we wszystkich, które je współdzieliły.

Tutaj idealnym przykładem hasło Tomka: dEa2g$543d-a. Jest ono trudne do zgadnięcia i złamania. Jeżeli korzystamy z kilkudziesięciu portali, to nie lada wyczynem jest zapamiętanie takiejż samej ilości losowych ciągów znaków. Dlatego Tomek doszedł do wniosku, że stworzy tylko jedno hasło, z którego będzie korzystał wszędzie. Przecież nikt go nie złamie – jest bezpieczne. Jednakże Tomek nie był świadomy tego, że jednak jego tajemnica nie była tak bardzo poufna. Przypadkowo opublikował swoje hasło wraz z innymi zmianami w kodzie w naszym projektowym repozytorium. Od tego momentu, pomimo że hasło było skomplikowane, to nie spełniało więcej swojej funkcji, bo każdy mógł je poznać. A skoro już je poznałem, to mogłem je wykorzystać do zalogowania się na różne portale jako Tomek i siać zamęt. Przykładowo, mogłem przejąć jego konto na Facebooku i wyłudzać pieniądze od jego znajomych.

Niebezpieczeństwo haseł ze stałym rdzeniem

– Zapamiętywanie haseł jest niewątpliwie sporym problemem. Dlatego Ania postanowiła podejść do sprawy w nieco inny sposób. Postanowiła zastosować różne hasła w różnych serwisach, zachowując ich stopień skomplikowania. Zanim go opiszę, przedstawię jej trzy hasła, jakie udało się złamać: BdF-All3, BdF-Ado3, BdF-Yah3.

Jak udało mi się złamać takie hasła? Tutaj, niestety, winę ponoszą serwisy, które je przechowywały. Hasła te były słabo zabezpieczone, gdyż były przechowywane w formie skrótu MD5, który dziś jest uważany za mały bezpieczny. Jest tak, ponieważ w dużej mierze takie hashe można szybko rozpracować za pomocą serwisów korzystających z tzw. tablic tęczowych.

Na pierwszy rzut oka hasła Ani wyglądają na skomplikowane. Jednak, jeżeli przyjrzeć się im bliżej, to można znaleźć pewną regułę – wszystkie zaczynają się wspólnym rdzeniem BdF- oraz kończą znakiem 3. A czymże jest zmienny środek? Może być to trudne do zgadnięcia, chyba że skojarzymy te hasła z serwisami, w których były używane. Przykładowo, BdF-All3 było używane do logowania się w Allegro, a BdF-Yah3 – w serwisie Yahoo. Tak, zmienny środek hasła to nic innego, jak początkowa nazwa serwisu, w którym hasło było wykorzystywane!

Wystarczy, że dwa serwisy, z których korzysta Ania zaliczą wpadkę, a atakujący będzie znał wzorzec jej haseł (czasami dwa wycieki to aż o jeden za dużo, by poznać wzorzec!). Znając formę haseł Ani, mogłem bezproblemowo zdobyć dostęp do innych jej kont. Myślę, że nie pomylę się, że hasło Ani do profilu Steam będzie wyglądało następująco: BdF-Ste3, prawda Aniu?

Bardziej różnorodne, lecz mniej skomplikowane hasła

– Adam przyjął inną strategię: postawił na całkowitą różnorodność haseł kosztem ich poziomu złożoności. Przykładowymi jego hasłami są: Error36 oraz NotSoSpectacular. Zaletą tego podejścia jest fakt, że gdy takie hasło wycieknie, to atakujący będzie miał dostęp tylko do tego konkretnego portalu, w którym było ono używane. Wszystkie inne powinny być bezpieczne pod tym względem.

Jednak stosowanie takich prostych haseł niesie za sobą inne zagrożenie – niezależnie od ich sposobu i formy przechowywania, można je często łatwo odgadnąć. W tym celu skorzystałem ze wcześniej wspomnianego ataku słownikowego, który w tych dwóch przypadkach zakończył się sukcesem.

Kto jest zwycięzcą?

– Która z opisywanych strategii jest najlepsza: Tomka, Ani czy Adama? Powiedziałbym, że żadna. Właściciel każdej z tych metod poszedł na kompromis między bezpieczeństwem a wygodą użytkowania sprawiając, że dostęp do ich sekretów i kont stał się znacznie uproszczony.

Co z tego, że Tomek stosował silne hasło, jeżeli wszędzie było takie samo? Wystarczył jeden wyciek i dostęp do wszystkich jego profili stał się otwarty. Z podobnym problemem zmaga się Ania. Jej różnorodność haseł daje tylko złudne poczucie bezpieczeństwa. O ile boty mogą mieć problemy ze zgadywaniem kolejnych wersji haseł, o tyle człowiek bez większego zastanowienia rozpozna zastosowany wzorzec.

Adamowi z kolei żadne wycieki nie są straszne – nie są potrzebne, by zgadnąć hasło. Wystarczy skorzystać z jednego z darmowych programów jak hashcat czy nmap NSE.

Menedżery haseł

– Dlatego najlepiej jest stosować długie i skomplikowane hasła, które spełniają wcześniejsze zalecenia. Ponadto żadne z nich nie powinno być użyte w więcej, niż w jednym serwisie.

– Ale… każdy z nas korzysta z kilkudziesięciu portali! Nawet w samym projekcie jest ich z dziesięć… – Ania załamała ręce – W jaki sposób mamy je wszystkie zapamiętać? Przecież to niemożliwe!

– Tutaj z pomocą przychodzą menedżery haseł. Są to programy, które działają jak wirtualne sejfy. Mogą w bezpieczny sposób przechować każdy sekret. Ich zadaniem jest zapamiętywanie skomplikowanych haseł za ciebie. Oczywiście, podobnie jak prawdziwy sejf, potrzebuje szyfru (hasła lub alternatywy), by ujawnić swoje tajemnice.

– Kolejne hasło… – zdało się usłyszeć czyjeś westchnienie.

– Fakt tworzenia kolejnego hasła nie brzmi najlepiej, jednak hasło do tego sejfu będzie jedynym, które tak naprawdę będziesz musiała zapamiętać. Wszystkie inne będą przecież zapisane w twoim menedżerze.

Co ważne, programy te zostały zaprojektowane w taki sposób, by nawet podczas wpisywania hasła, osoba, która siedzi obok, nie poznawała twojego sekretu. Nie jest więc wymagane ręczne przepisywanie hasła. Za pomocą jednego lub dwóch skrótów klawiszowych menedżery same mogą wpisać zapisane hasło w konkretne pole. Ponadto, większość z nich ma wbudowane generatory haseł oraz funkcje oceniające ich poziom bezpieczeństwa, dzięki czemu nie trzeba korzystać z dodatkowych serwisów wspomnianych wcześniej.

– Jak zapisane hasła są przechowywane? – zainteresował się Tomek.

– Menedżer tworzy bazę haseł, która jest szyfrowana. By poznać jej zawartość, najprostszym sposobem jest podanie hasła, które umożliwi rozszyfrowanie danych. W zależności od programu, baza haseł może być przechowywana na lokalnym komputerze lub na wyznaczonych do tego serwerach, co daje do niej dostęp z wielu różnych urządzeń, przykładowo: z telefonu.

– Czyli taka baza może wyciec, tak jak każde inne pliki? – Zauważył Adam.

– Zgadza się. Jednak fakt, że jest ona zaszyfrowana dość znacząco utrudni poznanie tajemnic w niej przechowywanych. Potencjalny haker musiałby poświęcić dłuuugie lata, by złamać hasło (przy założeniu, że zastosowane zostało silne hasło) lub znaleźć odpowiedni klucz.

Nie oznacza to jednak, że w razie wycieku można machnąć na to ręką i udawać, że nic się nie stało. Szyfrowanie bazy daje nam tylko więcej czasu na reakcję. Odpowiednio zdeterminowana osoba, wcześniej czy później, może znaleźć sposób na dobranie się do naszych tajemnic. Stąd też w takich sytuacjach nawet zaszyfrowana baza powinna zostać traktowana jako upubliczniona i powinniśmy zresetować wszystkie hasła, jakie były w niej zawarte.

Korzystanie z menedżerów haseł w zespole

– No dobrze… Wszystko to brzmi jak rozwiązanie do użytku domowego. Jednak czy ma to również zastosowanie w wieloosobowych projektach? – Zapytał Tomek

– Tak. Istnieją menedżery haseł zaprojektowane specjalnie do pracy w zespołach. Umożliwiają one tworzenie dwóch rodzajów sekcji w bazie:

Ponadto, co ważne, programy te zostały zaprojektowane w taki sposób, by łatwo można było zarządzać dostępem do poszczególnych sekcji bazy dla konkretnych pracowników. Przykładem takich programów są 1Password for Teams, Passbolt czy też LastPass Teams.

Przeglądarkowe menedżery haseł

– Jeżeli się nie mylę, to dzisiejsze przeglądarki również oferują funkcje menedżerów haseł, prawda? – powiedział Adam.

– Tak – zgodził się Sebastian – Jednak jest kilka różnic pomiędzy zwykłymi menedżerami a przeglądarkowymi. Wynikają one głównie z faktu, że wersje przeglądarkowe są tylko dodatkiem do głównego produktu (czyli przeglądarki). Stąd też nie oferują tylu funkcji (np. generowanie haseł) i takiego poziomu bezpieczeństwa, co dedykowane do tego aplikacje. Przykładem może być fakt, że kiedyś Google Chrome w ogóle nie szyfrował zapamiętanych haseł, co powodowało, że każdy mógł je podejrzeć. Na szczęście już się to zmieniło.

Ponadto, należy pamiętać, że przeglądarka jest jednak aplikacją przystosowaną pod obsługę jednego użytkownika (pomijam tutaj różnego rodzaju funkcjonalności profili, które wspierają przełączanie się między kontami). To oznacza, że takie menedżery haseł nie będą dobrze sprawdzać się podczas pracy w zespole, gdzie część haseł i kodów dostępowych jest współdzielona między współpracownikami.

Sebastian skończył. Widząc, że wszyscy dalej się w niego wpatrują, klasnął głośno i zapytał lekko się uśmiechając:

– To jak, chętni na wypróbowanie menedżerów haseł?

Podsumowanie

W niniejszym artykule chciałem przypomnieć kilka prostych zasad tworzenia haseł uchodzących za trudne do złamania. W razie wątpliwości co do jego skuteczności, zawsze można wspomóc się gotowymi narzędziami w internecie.

Jednak nawet najlepsze hasła nie zagwarantują nam całkowitego bezpieczeństwa naszych danych – równie ważny jest sposób zarządzania nimi. Odpowiedzialność za to bierzemy zarówno my jako użytkownicy haseł, jak i serwis, który te hasła przechowuje. Gdy któraś ze stron nawali doprowadzając do upublicznienia hasła lub jego skrótu, wtedy jedynym rozwiązaniem jest stworzenie nowego.

Nie jest zalecanym pójście na kompromis między poziomem bezpieczeństwa hasła a wygodą jego korzystania, gdyż wiąże się to dodatkowymi niebezpieczeństwami, które mogą być przyczyną przełamania zabezpieczeń użytkownika. Do takich ułatwień zalicza się:

  • Używanie tych samych haseł w wielu serwisach,
  • Stosowanie różnego rodzaju wzorców i rdzeni,
  • Wykorzystywanie w hasłach nazw serwisów lub słów jednoznacznie wskazujących na dane personalne lub zainteresowania właściciela,
  • Korzystanie z haseł, które po prostu nie są skomplikowane.

Istnieją aplikacje, które pomagają w zarządzaniu i pracy z silnymi hasłami. Są to menedżery haseł, które zapamiętują hasła za użytkownika, pomagają w ich generowaniu oraz zapewniają bezpieczne ich przechowywanie. Bardzo dobrze sprawdzają się również w zastosowaniu projektowym.

Głównie programista, choć lubi również wchodzić w buty innych ról. „Generator”: charakteryzuje się nieustanną potrzebą tworzenia czegokolwiek w jakiejkolwiek formie.
PODZIEL SIĘ