Hasło w kryptografii to tajny ciąg znaków lub fraza używana do potwierdzenia tożsamości w systemie. W praktyce jest jednym z najprostszych i najpowszechniejszych sposobów uwierzytelniania, ale samo w sobie nie powinno być traktowane jako pełny dowód tożsamości. Hasło potwierdza raczej, że użytkownik zna sekret, dlatego musi pozostawać poufne, a jego ujawnienie natychmiast osłabia bezpieczeństwo konta lub urządzenia, które chroni tajemnica.

Pochodzenie i rozwój

Idea hasła jest znacznie starsza niż informatyka. W zastosowaniach wojskowych służyła do rozróżniania swoich i obcych, zwłaszcza po zmroku lub w warunkach ograniczonej widoczności w wojsku i pomagała ustalić, kto jest przyjacielem, a kto wrogiem. Z czasem rozwiązanie to przeniesiono do systemów cyfrowych. Wraz z rozwojem komputerów hasła zaczęły chronić dostęp do kont użytkowników, plików, poczty elektronicznej, bankowości internetowej i urządzeń mobilnych.

Rodzaje haseł

Najczęściej spotyka się hasła statyczne, czyli takie, które pozostają niezmienne do chwili ręcznej zmiany przez użytkownika. W niektórych systemach stosuje się jednak hasła dynamiczne, zmieniające się cyklicznie albo po każdej próbie logowania. Szczególną odmianą jest jednorazowy kod, który działa tylko raz i po użyciu traci ważność. Taki mechanizm bywa łączony z innymi metodami logowania, na przykład z aplikacją mobilną, kartą lub tokenem.

  • Hasło statyczne — wygodne, ale bardziej narażone na zgadnięcie, przechwycenie lub ponowne użycie.
  • Hasło dynamiczne — bezpieczniejsze w wielu scenariuszach, bo jego ważność jest ograniczona.
  • Jednorazowy kod — przydatny przy logowaniu zdalnym i w uwierzytelnianiu wieloskładnikowym.

Budowa i dobre praktyki

Współczesne hasła zwykle składają się z liter, cyfr oraz, w wielu systemach, także z znaków specjalnych i innych symboli. Serwisy internetowe często określają minimalną długość hasła, a niektóre wymagają określonej liczby znaków albo mieszania wielkich i małych liter. W praktyce wiele stron internetowych ogranicza zestaw do liter i cyfr, inne z kolei blokują część znaków z klawiatury lub narzucają własne reguły. Celem takich zasad jest zwiększenie odporności na odgadywanie i ataki słownikowe, czyli poprawa siły hasła.

Dobrze zaprojektowane hasło powinno być trudne do odgadnięcia i nie powinno opierać się na łatwych skojarzeniach, takich jak imię, data urodzenia czy prosta sekwencja znaków. W wielu serwisach zaleca się również używanie różnych haseł dla różnych usług oraz okresową zmianę tam, gdzie jest to rzeczywiście uzasadnione. Podczas wpisywania znaków system zwykle ukrywa je za pomocą gwiazdek lub podobnych symboli, aby osoby postronne nie mogły ich podejrzeć.

Hasło a inne metody zabezpieczenia

Hasła nie są jedyną metodą potwierdzania tożsamości. Coraz częściej stosuje się biometrię, na przykład skanery odcisków palców czy czytniki linii papilarnych, a także rozpoznawanie twarzy i analizę cech twarzy. W nowoczesnych systemach hasło bywa tylko jednym elementem szerszego mechanizmu, ponieważ połączenie kilku czynników jest trudniejsze do obejścia niż pojedynczy sekret.

Haszowanie, szyfrowanie i przechowywanie

W kryptografii ważne jest odróżnienie hasła od sposobu jego ochrony. Dane można szyfrować, czyli zamieniać je na postać odczytywalną dopiero po użyciu właściwego klucza. Hasła przechowuje się jednak zazwyczaj nie w postaci jawnej, lecz jako skróty kryptograficzne, czyli hasze. Hash jest funkcją jednokierunkową: z poprawnego hasła można obliczyć skrót, ale odwrócenie procesu nie jest praktycznie możliwe. Dlatego jeśli system przechowuje dobrze przygotowany hash z dodatkiem soli, odzyskanie oryginalnego hasła z samej bazy danych jest znacznie trudniejsze niż w przypadku prostego zapisu tekstowego.

Właśnie z tego powodu bezpieczeństwo haseł zależy nie tylko od ich długości i złożoności, ale też od tego, jak dany serwis je przechowuje, weryfikuje i chroni przed podsłuchem. Najlepsze efekty daje połączenie rozsądnej polityki haseł, dodatkowego uwierzytelniania oraz świadomości użytkownika.