13-05-2020 / Podcast

Czy korzystać z menadżera haseł?

Używanie menadżera haseł przypomina trochę przechowywanie jajek w jednym koszyku.

 Trzymanie haseł w jednym koszyku

Co gdy ktoś uzyska dostęp do menadżera? Będzie znał nasze wszystkie hasła.

To tak samo jak z jajkami - gdy się przewrócimy, wszystkie z nich się rozbiją.

 Co gdy hasła wyciekną

Czy zatem korzystać z menadżea? A może istnieje jakieś inne rozwiązania? Co robić, gdy hasła wyciekną?

Zadajemy sobie te pytania, ale zapominamy o jednym, istotnym szczególe.

 Większość kont można zresetować korzystając z maila

Do większości naszych kont można uzyskać dostęp korzystajac z funkcji resetowania hasła.

Jak ona działa? Wchodzimy na witrynę, do której hasła zapomnieliśmy. Podajemy nasz adres email. Po chwili, otrzymujemy wiadomość ze specjalnym odnośnikiem. Gdy na niego wejdziemy, możemy już zmienić nasze hasło.

I to bez korzystania z menadżera haseł.

 W ilu serwisach posiadasz konto

Problem w tym, że posiadamy zbyt wiele kont w różnych serwisach.

Z badań wynika, że ponad 70% z nas posiada co najmniej 10 różnych kont.

 Ile kont posiadasz

A 30% z nas - nie potrafi ich zliczyć. A każda taka strona to teoretycznie różne hasło do zapamiętania.

Wydaje się nam, że jesteśmy inteligentni i nasze hasła są nie do odgadnięcia.

Czy aby na pewno?

 Jak tworzymy hasła

68% ankietowanych przyznało, że hasła które tworzą to tak naprawdę lekko zmodyfikowane poprzednio używane przez nich hasło.

Czyli dokładamy do końca dodatkową literkę, cyfrę lub wykrzyknik.

Kto nigdy tak nie robił - niech pierwszy rzuci kamieniem.

 Algorytm generowania haseł

Co bardziej sprytni stosują do generowania haseł pewien algorytm. Na przykład:

  • biorą co 2 literę z adresu
  • literę c zaieniają na 4 a literę u na 7
  • do powstałego ciągu znaków doklejają kot44!

I takie rozwiazanie wydaje się w porządku. Podobnie jak dodawanie wykorzyknika lub roku do poprzednio używanego przez nas hasła. Problem w tym, że Twoje hasło wycieknie (lub już wyciekło).

 Twoje hasło wycieknie

Serwis Have I Been Pwned nie pozostawia złudzień. Wycieki są coraz częstsze.

Właśnie dlatego - Twoje hasło do każdego serwisu powinno byc unikalne i generowane losowo.

Dlaczego? W przypadku wycieku - narażone bedą dane tylko z jednej witryny - bo tylko na niej korzystasz z danego hasła.

Możesz sobie pomyśleć: ale mojego schematu nikt nie odgadnie.

To zależy. A co jeśli wyciekną hasła z kilku serwisów, z których korzystasz.

Czy na podstawie korelacji nie da się dojść do tego, jakiego algorytmu używasz do generowania haseł?

Nie jesteśmy stworzeni do zapamiętywania długich i losowych ciągów znaków.

Stąd używanie menadżerów haseł wydaje się być koniecznością.

 Plusy i minusy menadżerów haseł

W tym materiale opisze słabe i mocne strony menadżerów haseł.

Dowiesz się jak działają i na jakie opcję należy zwrócić szczególną uwagę.

Ale najpierw - ciekawostka.

 Sigsaly

Wyobraź sobie, że jesteś dowódcą ogromnego wojska podczas konfliktu zbrojnego, który odbywał się kilkadziesiąt lat temu.

Chcesz wydać rozkazy, ale równocześnie nie chcesz aby trafiły one w ręce wrogów.

Co robisz? Musisz je jakoś zaszyfrować. W dawnych czasach, aby przeprowadzić taką operację potzebowałeś skomplikowanej maszynerii - takiej jak na obrazku powyżej.

Kilka ton sprzętu, którego zadaniem było zaszyfrowanie głosu.

 Kody jednorazowe

Mechanizm ten działał na zasadzie kodów jednorazowych. Wyobraź sobię, że posiadasz malutką książeczke z wydrukowanymi ciągami liczb.

Na świecie istnieją dwie, identyczne kopie takich książeczek.

Jedna jest Twoja - druga, należy do osoby, z którą chcesz się porozumieć.

W ogromnym skrócie i uproszczeniu: zamieniasz swój tekst na ciąg liczbowy.

Następnie do każdej litery (zamienionej na liczbę) dodajesz liczbę z książeczki.

W ten sposób powstaje nowy ciąg liczb, który niewiele znaczy.

Teraz osoba po drugiej stronie wykonuje operację odwrotną.

Czyli odejmuje ciąg liczb - korzystając ze swojej kopii książeczki.

W taki sposób dane mogą być bezpiecznie transmitowane.

 Sigsaly

Podobny mechanizm wykorzystywał Sigsaly. Tylko zamiast książeczki z liczbami, wykorzystywał dwie płyty winylowe.

Na nich zapisany był losowy szum - w dwóch kopiowach.

Teraz wystarczyło do mowy - dodać losowy szum.

Jeżeli ktoś posiadał odpowiednią płytę - z identycznym szumem, mógł jej użyć do usunięcia losowych danych i odsłuchania prawdziwej wiadomości.

 Single point of failure

Tak to działało w przeszłości. Widać tutaj, że mamy doczynienia z pojedyńczym punktem awarii.

Zgubiłeś książeczkę z losowymi liczbami? Wiadomości nie da się odczytać.

Ktoś uzyskał dostęp do Twojego menadżera haseł - wszystkie Twoje hasła są w niebezpieczeństwie.

Tylko, że takich punktów awarii jest o wiele więcej, i menadżer nie jest tu jedynym wyjątkiem.

 Czy wykonujesz backup danych

Czy wykonujesz backup danych? Jeśli nie - możesz mieć o wiele większe problemy niż kradzież haseł.

Nie można zatem myśleć krótkowzrocznie i rezygnować z menadżera tylko z tego jednego powodu.

Pełni on bowiem kilka istotnych z punktu widzenia bezpieczeństwa funkcji.

 Menadżer haseł to specyficzna baza danych

Menadżer haseł to specyficzna baza danych. Przechowuje ona co najmniej 3 rekordy:

  • nazwę strony
  • login (email)
  • hasło

Dostęp do niej musi być jednak w jakiś sposób chroniony.

W większości przypadków rolę tą spełnia klucz główny (master key).

Na czym polega jego zadanie?

 Klucz główny - master key

Normalnie musisz zapamiętać wszystkie te losowo wygenerowane hasła do różnych serwisów.

Korzystasz z 10 witryn - musisz zapamiętać 10 haseł.

 Jak działa klucz główny

Nie jeśli korzystasz z menadżera haseł. Wtedy to jedno hasło chroni dostęp do wszystkich innych haseł.

Bezpieczeństwo menadżera haseł zależy zatem (w głównej mierze) od skomplikowanego hasła głównego.

 Skomplikowane hasło główne

Jest to zatem coś podobnego klucza do mieszkania - powinieneś go odpowiednio chronić.

I nie chodzi tu tylko o to aby nie przekazywać tego hasła osobom niepowołanym.

Trzeba też dbać o tak zwaną cyber higienę.

 Bezpieczeństwo menadżera zależy od bezpieczeństwa naszego komputera

Na nic bowiem nawet najbardziej skomplikowane hasło główne jeżeli na naszym komputerze będzie uruchomione złośliwe oprogramowanie.

Dlaczego? Keylogger to malware, którego celem jest zapisywanie wszystkich wciśniętych przez nas klawiszy.

 Jak działa keylogger

Nawet jeżeli mamy skomplikowane hasło - przestępca będzie je w stanie odczytać - bo złośliwe oprogramowanie zapisuje i wysyła wszystkie wciśnięte przez nas znaki na klawiaturze.

Ale twórcy menadżerów, muszą się także mierzyć z innymi problemami, z których rzadko kiedy zdajemy sobie sprawę.

 Czyszczenie schowka

Gdy korzystamy z menadżera, czasami kopiujemy z niego hasło - aby wkleić go na stronie albo zapisać w innym miejscu.

Nasze tajne hasło trafia więc do schowka. A co, gdy z komputera korzysta kilka osób?

Czy system operacyjny czyści schowek gdy użytkownik wyloguje się z komputera?

A może to oprogramowanie powinno samo wykonywać tą czynność po pewnym czasie od momentu skopiowania danych?

 Czyszczenie pamięci komputera

Ten temat jest jeszcze ciekawszy, jeżeli pomyślimy o tym jak działają komputery.

Każde oprogramowanie korzysta z pamięci operacyjnej RAM - to w niej przechowywane są wszystkie nasze dane, wykorzystywane w chwili obecnej przez komputer.

Tam też znajdują się nasze hasła, które przechowuje menadżer.

Zazwyczaj inne aplikację, mogą odczytać pamięć innego procesu.

Czy zatem menadżer powinien się przed tym chronić?

 Badania - ochrona pamięci menadżerów haseł

Badania pokazują, że nie jest to takie proste.

Jeżeli bowiem hasło jest wyświetlane użytkownikowi - oznacza to, że musisz też znajdować się gdzieś w pamięci operacyjnej komputera.

W prawidłowe wyczyszczenie takich danych nie jest proste.

To jak z rozlaną farbą - większość jesteś w stanie pozbierać, ale jak coś wejdzie między fugi - ciężko będzie się tego pozbyć.

 Menadżer haseł to program komputerowy

Poza tym - menadżer haseł to program komputerowy.

Czy wiesz jak działa? Skąd masz pewność, że nie wykonuje żadnych szkodliwych operacji - na przykład nie szyfruje plików na Twoim dysku twardym?

Nie możemy popadać w paranoję i czasami musimy po prostu zaufać producentowi, że wykonuje swoją prace należycie.

Ale stworzenie dobrego menadżera nie jest takie proste.

 Menadżer haseł to skomplikowana aplikacja

Ale jak to? Przecież to prosta aplikacja, która zapisuje hasła w pamięci i gdy potrzeba - wyświetla je ponownie użytkownikowi.

Problem w tym, że chcemy korzystać z tego rodzaju oprogramowania w różnych miejscach.

Każdy z nas korzysta z innego systemu operacyjnego, innej przeglądarki czy innego telefonu.

A każda taka inna platforma, to inna aplikacja, która musi zostać stworzona przez producenta aby wspierać dany segmenty rynku.

Każdy system rzadzi się swoimi prawami i posiada własne problemy.

 Menadżer haseł powinien posiadać dwie główne opcje

Uogulniając: każdy menadżer haseł powinien posiadać dwie, glówne funkcję:

  • możliwość generowania (i zapisywania) losowych haseł
  • możliwość wypełniana formularzy, wcześniej zapisanymi hasłami.
 Generowanie losowych haseł

Generowanie losowych haseł wydaje się być względnie prostą operacją.

Ale tak nie jest. Komputer jest bowiem dobry w generowaniu liczb pseudolosowych - czyli takich, które wyglądają jak losowe, ale nimi nie są.

 Entropia

Żeby liczby były prawdziwie losowe, nowoczesne systemy operacyjne generują ją na podstawie danych z zewnątrz.

Ciekawy model zastosowało tutaj Cloudflare. Skorzytali z lava lamp.

Jest to taka lampa, w które znajduje się wosk. Podczas jego podgrzewania, unosi się on i opada w trudny do przewidzenia sposób.

Naukowcy, stworzyli wiec całą ścianę takich lamp a następnie robili im zdjęcia.

Każde zdjęcie było inne - kawałek wosku w każdej lampie bowiem zmieniał losowo swoje położenie.

Na tej podstawie komputer mógł zatem wygenerować losowa liczbę.

 Wypełnianie formularzy

Wydaje mi się jednak, że często generowanie haseł przysłania drugą, niesamowicie ważną funkcję menadzerów haseł - a więc możliwość wypełniania formularzy.

Dlaczego jest to tak istotna funkcjonalność?

  • Bo chroni ona przed phishingiem - kiedy to jakaś inna osoba, próbuje podszyć się pod firmę/instytucję i wyłudzić nasze hasło do serwisu.

A to nie jest takie trudne jak mogło by się wydawać.

 Przykład phishingu

Popatrz na przykład powyżej. Czy potrafisz rozpoznac prawidłową domenę Poczty Polskiej?

Gdy zapiszę literkę i korzystając z małej litery - sprawa wydaje się oczywista.

Jednak, gdy i zapiszemy z dużej litery I i użyjemy odpowiedniej czczcionki - różnica jest trudna do wychwycenia.

Czy nie nabrał byś się i czy nie wszedł być na niewłaściwą stronę?

I właśnie tu do gry wchodzi menadżer haseł.

Jeżeli bowiem zapisałes hasło na oryginalnej stronie Poczty Polskiej - menadżer podpowie Ci tylko i wyłącznie tam.

Jeśli wejdziesz na stronę, z której korzystasz - a hasło nie zostanie podpowiedziane, istnieja dwa wytłumaczenia:

  • menadżer się zepsuł i z jakiegoś powodu nie rozpoznaje danej domeny
  • ktoś próbuje Cię zaatakować i znajdujesz się na phishingowej stronie

Z punktu widzenia użytkownika więc - jeżeli hasło powinno się wyświetlić, ale się nie wyświetla - dzieje się coś złego.

  • Powinniśmy zachować wzmożoną czujność i sprawdzić co się dzieje.
 Synchronizacja danych

Jeżeli już korzystasz z menadżera haseł chciałbyś, robić to na wzsystkich swoich urządzeniach.

A to wymaga synchronizacji danych - czyli wymiany haseł zapisanych na jednym urządzeniu (np. telefonie) z innymi Twoimi urządzeniami.

 Hasła a chmura

I tu do gry wkracza chmura. Równocześnie producenci oprogramowania mają pewien problem.

Jeżeli razem zestawimy słowa:

  • baza
  • haslo
  • chmura

sporo użytkowników może mieć pewne wątpliwości. Jak to bowiem mamy zapisać swoje hasło w chmurze? Przecież ono jest tylko nasze i powinno być tajne? Jak może być tajne, jeżeli konieczna jest synchronizacja danych?

Ale i na ten problem znaleziono rozwiązanie

 Zero knowledge
  • Zero knowledge - firma nie zna Twojego hasła a jedynie przechowuje zaszyfrowaną bazę.

Jak to działa w praktyce?

1. Menadżer zapisuje hasła w bazie danych

2. Baza danych jest szyfrowana Twoim kluczem głównym

3. Zaszyfrowana baza danych jest wysyłana do chmury

Producent nie zna Twojego hasła głównego - nie może więc odszyfrować bazy i odczytać haseł, które się w niej znajdują.

A więc są one bezpieczne. Ale tu pojawia się inne pytanie.

 Skąd serwer wie, że to nasza baza

Skąd serwer wie, że to nasza baza? Przecież nie możemy mu wysłać naszego hasła głównego - bo wtedy by je poznał - co przeczy zasadzie zero knowledge.

Dlatego w większości przypadków serwer przechowuje hash hasła - a nie nasze hasło.

Hash to wynik pewnej matematyczne funkcji - dla przykładu sha1.

Dla hasła pies taki hash to 795e88f2519ea12ec832102376d0f2994749f7f9.

To funkcja ma pewną specyficzną właściwość. Nie da się na podstawie wyniku przywrócić hasła, które zostało użyte do stworzenia takiego hasha.

 Metoda brute force

Jedyną możliwością jest sprawdzanie wszystkich możliwych kombinacji.

Przykład: atakujący wie, że twoje hasło składa sie z 4 liter, z których pierwsza to p.

Musi wiec przetestować wiele różnych kombinacji:

  • paaa
  • paab
  • paac
  • ....
  • pzzy
  • pzzz

Dla każdego z tych wyrazów generuje hash i sprawdza czy jest identyczny z tym, którego szuka.

Taką metodę nazywamy siłową (lub brute force) - bo należy sprawdzić wszystkie możliwości aby natrafić na nasze prawidłowe hasło.

 Sól

Możesz teraz pomyśleć: przecież przestępcy, mogą mieć wygenerowaną bazę takich potencjalnych wszystkich haseł i odpowiadających im hashy.

Teoretycznie jest to możliwe, ale raczej mało prawdopodobne.

Dlaczego? Ponieważ już dla haseł, które składają się z kilku liter - wygenerowanie i przechowywanie wszystkich możliwych kombinacji jest nieopłacalne.

Jest ich po prostu za dużo i trzymanie ich wszystkich w bazie danych nikomu się nie opłaca.

Można takie dane przechować w nieco bardziej optymalnej formie wykorzystując tablice tęczowe - ale to nieco bardziej skomplikowany temat.

Mając to na uwadze - menadżery haseł wykorzystują dodatkowy mechanizm - tak zwaną sól.

Dla każdego użytkownika generowana jest pewna losowa wartość - tak zwana sól.

W naszym przypadku może to być coś w stylu l1935ga6fj3l1k2.

Ta wartość jest doklejana do hasła użytkownika i dopiero z tak powstałego nowego wyrazu, liczny jest hash hasła.

Załóżmy więc, że nasze hasło to C3er5one_r9że.

Doklejamy do niego naszą sól, więc w końcowym etapie nasze hasło brzmi l1935ga6fj3l1k2C3er5one_r9że.

Po co tak utrudniać?

Teraz jeżeli atakujący uzyska hasze haseł różnych użytkowników, ich sprawdzenie zajmie mu o wiele więcej haseł.

Dlaczego? Ponieważ każda osoba ma różną sól.

Więc dla jednej osoby będzie musiał wygenerować hasze, które wyglądają:

  • sól1_paaa
  • sól1_paab
  • sól1_paac
  • sól1_....
  • sól1_pzzy
  • sól1_pzzz

a dla drugiej:

  • sól2_paaa
  • sól2_paab
  • sól2_paac
  • sól2_....
  • sól2_pzzy
  • sól2_pzzz

Czyli wykonuje tą samą pracę 2 razy.

 pbkdf2

To nie jedyne zabezpieczenia stosowane przez menadżery haseł.

Obecne karty graficzne potrafią wygenerować setki tysięcy hashy haseł na sekundę.