Dlaczego nie powinniśmy korzystać ze stron oferujących opcję „Przypomnij hasło”?

Czy zdarzyło Ci się kiedyś zapomnieć hasła? Do strony WWW, na której chcesz odczytać pocztę, porozmawiać ze znajomymi czy przeczytać artykuły. Z pewnością tak. Żyjemy w czasach, w których każdy ma w głowie co najmniej kilkanaście haseł. To sprawia, że naprawdę często zdarza nam się hasło po prostu zapomnieć.

Na szczęście (albo i nie – czytaj dalej), niektóre strony WWW pozwalają na przypomnienie hasła. Kojarzysz taką sytuację? Po próbie zalogowania ze złym (czy też zapomnianym) hasłem zostaje wyświetlony komunikat błędu. A pod spodem znajduje się link „Przypomnij hasło”. Klikasz go i po chwili hasło zostaje przysłane Tobie w wiadomości e-mail. Ale super! No nie do końca…

Przeczytaj, dlaczego nie powinniśmy korzystać ze stron oferujących opcję „Przypomnij hasło”?

Zanim zaczniemy

W niniejszym wpisie piętnuję strony, na których opcja „Przypomnij hasło” faktycznie „przypomina” hasło, czyli po prostu przesyła je użytkownikowi w wiadomości e-mail. To jest bardzo złe. Zaraz dowiesz się, dlaczego. Zauważyłem jednak, że na wielu stronach WWW opcja „Przypomnij hasło” nie powoduje przesłania „zapomnianego” hasła użytkownikowi, tylko pozwala mu ustawić nowe hasło. Oznacza to, że w praktyce ta opcja powinna nazywać się „Ustaw nowe hasło”. I to jest bardzo dobre. Zaraz dowiesz się, dlaczego.

Wróćmy do wpisu…

Gdzie i w jaki sposób są przechowywane hasła?

Czy zastanawialiście się kiedyś, w jaki sposób przebiega proces logowania, np. na stronie WWW? Sytuacja wygląda klasycznie: wpisujemy login oraz hasło, klikamy przycisk „Zaloguj” i… No właśnie, co się dalej dzieje? Login i hasło wpisane przez nas na stronie są porównywane z loginem i hasłem, które są przechowywane w bazie danych powiązanej z tą stroną WWW. Baza danych w dużym uproszczeniu przypomina zbiór tabel, które składają się z kolumn oraz wierszy. W jednej takiej tabeli są zapisane informacje o wszystkich użytkownikach, korzystających z omawianej strony WWW.

A co by się stało, gdyby ktoś uzyskał dostęp do komputera, na którym jest zainstalowana ta baza danych? Być może część z nas wyobraziła sobie teraz hakera, który włamuje się do serwerowni lub przeprowadza zdalny atak. Ale to nie musi być haker! To może być np. ktoś z rodziny pracownika, wprowadzony „na chwilę” do najważniejszego pokoju w firmie pod byle pretekstem. Może być to również sam pracownik tejże firmy, który np. tworząc kopie zapasowe „przypadkowo” zerknął o jeden ekran za daleko. Uzyskując dostęp do bazy danych z loginami i hasłami, taka osoba może odczytać dowolny login i przypisane do niego hasło. Dostęp do bazy danych może być również uzyskany zdalnie – nadal umożliwi to bezproblemowe odczytanie hasła.

Dlatego właśnie nigdy nie powinniśmy korzystać ze stron oferujących opcję „Przypomnij hasło”. Opcja „Przypomnij hasło” świadczy o tym, że hasło w bazie danych jest przechowywane w sposób jawny, czyli możliwy do odczytania bez wysiłku przez dowolne osoby mające dostęp do bazy danych.

Jaki jest najlepszy sposób przechowywania haseł?

Najlepszy sposób przechowywania haseł w bazie danych polega na ich przechowywaniu w sposób uniemożliwiający osobom postronnym ich odczytanie. To dość oczywiste stwierdzenie po powyższym opisie, ale pytanie brzmi: jak można tego dokonać? Otóż istnieje metoda, która pozwala na przechowywanie haseł w bazie danych w taki sposób, że nawet ich odczytanie nie pozwoli ich wykorzystać np. w celu zalogowania się.

Hasła w bazie danych powinny być przechowywane w postaci zaszyfrowanej.

Wyobraźmy sobie, że fikcyjny użytkownik Jan Nowak loguje się na równie fikcyjnej stronie WWW, podając swój login janek oraz hasło MojeHaslo1234. W jaki sposób dane Jana Nowaka będą przechowywane w bazie danych powiązanej ze stroną WWW?

W systemie mało profesjonalnym mogłoby to wyglądać tak:

    • Login: janek
    • Hasło: MojeHaslo1234

W systemie profesjonalnym mogłoby to wyglądać co najmniej tak:

    • Login: janek
    • Hasło: a0bdecca60a49888d45ca9cf2fe9a46d

Czy osoba, która uzyska hasło Janka zapisane w systemie profesjonalnym będzie tak naprawdę znała hasło Janka? Nie. Nawet, jeżeli zapamięta ten ciąg znaków (lub skopiuje go czy też zrobi zdjęcie telefonem), nie będzie w stanie nic z tą informacją zrobić. Bo to nie jest hasło, które Janek wpisuje do formularza aby się zalogować.

To bardzo dobrze, że w bazie danych nie ma zapisanego w sposób jawny hasła Janka. Jednak wobec tego, rodzi się pytanie: gdy Janek zaloguje się na stronie WWW podając swój login oraz hasło, w jaki sposób nastąpi porównanie danych wpisanych w formularzu logowania z danymi zapisanymi w bazie danych?

Otóż przed porównaniem hasło wpisane do formularza zostanie zaszyfrowane w ten sam sposób, w jaki zostało zaszyfrowane hasło zapisane w bazie danych. Tylko wtedy, jeśli zaszyfrowane hasło wpisane w formularzu będzie takie samo jak zaszyfrowane hasło zapisane w bazie danych, porównanie zakończy się sukcesem – czyli Janek będzie mógł się zalogować.

Korzystam ze stron, na których jest opcja „Przypomnij hasło”. Co teraz?

Nie korzystaj ze stron, na których jest opcja „Przypomnij hasło”!

A jeśli musisz z nich korzystać lub już z nich korzystasz, przyjmij założenie, że hasło do tej strony WWW jest znane całemu światu. Staraj się unikać stron, które oferują opcję „Przypomnij hasło”. Opcja „Przypomnij hasło” świadczy o braku profesjonalizmu firmy będącej właścicielem strony WWW czy aplikacji.

Przyznam, że ilekroć zdarzy mi się znaleźć stronę lub aplikację oferującą opisane powyżej przypomnienie hasła, zawsze przesyłam do właściciela „pouczającą” wiadomość e-mail (której treść stanowi niniejszy wpis – stworzyłem go właśnie na podstawie moich doświadczeń z takimi mało profesjonalnymi firmami).

Jakie jest najlepsze rozwiązanie problemu zapomnianego hasła?

No właśnie. Co powinna zrobić profesjonalna firma, aby umożliwić swoim użytkownikom zalogowanie się na stronie WWW, gdy Ci zapomną hasła? Powinna udostępniać możliwość ustawiania nowego hasła. Tak robią to najlepsi!

Korzystaj ze stron, na których jest opcja „Ustaw nowe hasło” zamiast „Przypomnij hasło”.

Wygląda to następująco:

  1. Logując się na stronie WWW podajesz niepoprawne hasło.
  2. Na kolejnym ekranie widzisz komunikat z informacją o niepoprawnych danych wraz z linkiem „Ustaw nowe hasło”.
  3. Po kliknięciu linku „Ustaw nowe hasło” podajesz swój adres e-mail.
  4. Jeśli adres e-mail jest poprawny (czyli jeśli istnieje w bazie danych użytkowników), system wysyła do Ciebie wiadomość e-mail, w której znajduje się link.
  5. Po kliknięciu tego linka pojawia się formularz, w którym możesz ustawić nowe hasło.

Na pierwszy rzut oka powyższe punkty mogą wyglądać trochę skomplikowanie, jednak okazuje się, że w praktyce to najbezpieczniejszy sposób „odzyskiwania” zapomnianych haseł.

Epilog

W powyższym przykładzie w firmie „profesjonalnej” hasło Janka było w bazie danych zapisane w postaci zaszyfrowanej. I choć na pierwszy rzut oka ciąg znaków a0bdecca60a49888d45ca9cf2fe9a46d nic nam nie mówi, to okazuje się, że istnieją metody na – przynajmniej częściowe – zdekodowanie tej informacji.

Czyli w niektórych sytuacjach można z zapisu a0bdecca60a49888d45ca9cf2fe9a46d uzyskać tekst MojeHaslo1234, a więc hasło, które Janek wpisuje do formularza logowania. Proces takiego „odszyfrowania” jest możliwy dzięki tzw. tęczowym tablicom. Już niedługo poświęcę im oddzielny wpis.

Dodaj komentarz