Bezpieczeństwo haseł [poradnik]

Jak bardzo cenicie waszą cyfrową przestrzeń? W korporacyjnym Internecie wśród użytkowników często lekceważy się sprawy cyberbezpieczeństwa. Do czasu aż w tę przestrzeń wkroczy ktoś nieuprawniony i osoby na własnej skórze doświadczą skutków kradzieży tożsamości, pieniędzy czy wrażliwych danych. Do zaniedbań dochodzi wskutek niewiedzy lub ignorancji. Jest ich trochę, ale dzisiaj skupimy się na polityce haseł.

Przestarzały model bezpieczeństwa

Login i hasło to jedna z najstarszych metod uwierzytelniania. Hasła zostały stworzone z myślą o tym, aby je pamiętać, jednakże gdy mamy 20+ różnych kont, wymyślenie i zapamiętanie ich wszystkich wymagałoby nadludzkiego intelektu. Dlatego wiele osób idzie na łatwiznę i używa tylko jednego hasła.

Wtedy wystarczy, że wyciekną dane z choćby jednej słabo zabezpieczonej strony, a przestępcy pierwszą rzecz jaką spróbują zrobić, to zalogować się do pozostałych kont tym samym hasłem. Jest to szczególnie niebezpieczne w przypadku skrzynki e-mail biorącej udział w resetowaniu haseł we wszystkich połączonych serwisach.


Istnieje sposób zabezpieczenia haseł w bazie nawet po wycieku – hashowanie. Jest to nieodwracalna operacja przekształcająca dowolne dane w ciąg o stałej długości. Oto kilka przykładów:

'The alternative internet, apps & lifestyle'
9c35ede2e1c3e32ec6304753b1c3db20db807a463279f6bf27f16f393fe31399

'e=~2.718281828459'
6c6686cd86fe2a29fa6f1a03651a95de42f0dcac6fc5ad012ac9c0f167c0429f

'uBlock origin'
49ac7879d24464edc5788fe7e224683b7e1f3bbe0ba70e5e6fbaa3c849e87383

O hashowaniu było pisane także na ciemnej stronie

W skrócie: 1. Użytkownik podaje hasło. 2. Serwer je hashuje i porównuje z tym w bazie. 3. Jeśli są identyczne, wpuszcza użytkownika.

Co się stanie gdy zawartość bazy wycieknie? Ano nic. Atakujący będzie mógł co najwyżej zgadywać, aż trafi na właściwe hasło, ale to równie dobrze mógłby próbować w formularzu logowania. Jedyny minus, że od martwych danych nie dostanie bana po nieudanych próbach, dlatego warto mieć 🔒 silne hasła.

Uwaga! Nie mamy żadnej gwarancji, że administrator przechowuje hasła w sposób bezpieczny. Dlatego nie zakładajmy, że hashowanie ma miejsce, tylko ustawiajmy inne hasło dla każdej strony.

Wszystkie hasła w jednym miejscu

Moglibyśmy na przykład zapisać swoje hasła na kartkach papieru. Zminimalizowałoby to wspomniane zagrożenie, ktoś jednak mógłby taką kartkę znaleźć. Bezpieczniej byłoby przechować je w miejscu, do którego tylko my mamy dostęp. Takim miejscem może być zaszyfrowany plik lub menedżer haseł.

Menedżerem haseł nazywamy taki program, który pozwala użytkownikowi zarządzać danymi logowania przechowywanymi w zabezpieczonej (zaszyfrowanej) bazie danych. Przykładem takiego programu jest KeePassXC.

Logo KeePassXC

Dotychczas hasło wpisywaliśmy z pamięci. Od teraz będziemy je wklejać. Warto upewnić się, że ustawiliśmy mocne hasło główne i lepiej go nie zgubić (na początek można je sobie zapisać na kartce).

Poza tym, koniecznie wykonujemy kopie zapasowe bazy haseł – na pendrivie, dysku zewnętrznym, czy też u zaufanej osoby.

Uwaga! Pewne firmy jak Google czy Apple oferują przechowywanie danych logowania w chmurze zintegrowanej z przeglądarką czy systemem operacyjnym. Korzystanie z tego to w zasadzie powierzanie wszystkich swoich haseł podmiotowi trzeciemu bez odpowiedniej ochrony przed nim samym.

Hasła pamięciowe

W pewnych okolicznościach będziemy potrzebować hasła pamięciowego – takiego, które musimy wpisać przed odblokowaniem menedżera haseł – na przykład... hasła głównego, ale też hasła do systemu operacyjnego, szyfrowania dysku, etc. Teraz przedstawię metodę wymyślania takich haseł, aby były mocne i łatwe w zapamiętaniu dla osoby, która je wymyśliła. Wymaga to 💡 kreatywności, ale możemy posłużyć się pewnymi schematami.

Zaczynamy od znalezienia pewnej nieoczywistej inspiracji: ulubionego zdania z książki, cytatu, fragmentu piosenki lub innego pomysłu. Ważne, żeby nie była to pierwsza rzecz, jaka przyjdzie do głowy naszym znajomym. Następnie bierzemy po jednej literze (lub dwóch) z każdego wyrazu. Na koniec wedle uznania dokonujemy mutacji typu: zmiana wielkości liter, zastąpienie, wstawienie dodatkowych znaków, cyfr, etc.

4N1522prtlci&za;jeirasi
„Przyprowadźcie tłuste cielę i zabijcie; jedzmy i radujmy się.” – Łukasza (4 księga Nowego Testamentu) 15:22

Drugi sposób: budujemy długie hasło ze słów, które sobie wymyślimy (im bardziej bezsensowne, tym lepiej) lub ich wariacji. Możemy zapożyczać wyrazy z obcych języków, mieszać, robić błędy, wykorzystać w sposobie pierwszym i w ten sposób tworzyć coś unikatowego. Szkoda, że trzeba trzymać to w sekrecie...

[siląc się na resztki kreatywności o tej porze dnia]:

lepszy kaloryfer w garści niż tokio w remoncie
uwielbiam dźwięk czworonoga lidlowym popołudniem
nieśmiałe dokumenty ujrzały rudowłosą szybę

Kopia zapasowa i synchronizacja (KeePassXC)

Teraz gdy nasze hasła znajdują się już zabezpieczone w bazie, musimy pilnować, żeby nie zgubić dwóch rzeczy, bo nie będziemy mogli się zalogować:

Najprościej jest tworzyć nową kopię przy każdej aktualizacji. Jeśli posiadamy kilka urządzeń, może się zdarzyć, że przypadkowo dokonamy aktualizacji w dwóch różnych miejscach, wskutek czego wersje nam się „rozjeżdżają” – innymi słowy, zsynchronizowanie w obie strony spowodowałoby utratę pewnych nowych danych.

Problem ten rozwiązuje funkcja scalania – importowania zmian do lokalnego pliku zamiast nadpisywania. Załóżmy, że mamy urządzenia a i b oraz współdzielone medium (np. pendrive, dysk sieciowy, etc.).

W razie wątpliwości:

x+1------0------x+2            mamy konflikt wersji
x+1->>>-x+1-----x+2            kopiujemy wersję 1 do medium
x+1-----x+1->>>-x+1+2 = x+3    scalamy z wersją 2
x+1-----x+3-<<<-x+3            kopiujemy do medium
x+3-<<<-x+3-----x+3            nadpisujemy wersję 1

Używając zewnętrznych programów jak Nextcloud czy Syncthing można zautomatyzować kopiowanie między urządzeniami, najlepiej z włączonym wykrywaniem konfliktów lub wersjonowaniem, aby uniknąć przypadkowego nadpisania wersji.

Przy scalaniu musimy każdorazowo podawać hasło, jednak jeśli ustawimy dysk sieciowy, funkcja KeeShare może automatycznie synchronizować zmiany do wybranego pliku. Niestety nie jest ona dostępna dla wersji mobilnej.

Ostatnie słowo

Korzystanie z menedżera haseł potrafi być uciążliwe, szczególnie, jeśli mamy zamiar zalogować się z nowego urządzenia. ⚠️ Tutaj chciałbym was przestrzec przed wpisywaniem hasła na komputerach poza waszą kontrolą (np. w szkole, pracy, urzędzie) – mogą zawierać złośliwe oprogramowanie wykradające hasła, sesje przeglądarki lub inne dane.

Istnieją także inne menedżery haseł, w tym takie z wbudowaną synchronizacją, jednak ich nie wypróbowywałem. Dokonując wyboru, miejcie na uwadze przede wszystkim:

  1. otwartość kodu źródłowego i przeprowadzone audyty bezpieczeństwa,
  2. odpowiednie szyfrowanie (hasło do bazy nie może być takie samo jak do chmury),
  3. reputację autorów w kwestii ochrony prywatności.

Istnieją też inne metody uwierzytelniania niewykorzystujące haseł, a kryptografię asymetryczną, ale nie są szeroko wykorzystywane pod sztandarem technologii www. Są za to codziennością np. w SSH, o którym być może napiszę pewnego dnia. Póki co natomiast jesteśmy skazani na hasła z wszystkimi ich wadami i zaletami.