Jakie hasła są bezpieczne?

Eksperci od lat wieszczą koniec haseł statycznych jako metody uwierzytelniania. Jak jednak pokazuje praktyka, są to bardziej pobożne życzenia niż stan faktyczny. A skoro - jak wiele wskazuje - hasła raczej pozostaną w użyciu, spróbujmy podsumować to, co pozwala na korzystanie z nich w miarę bezpiecznie i wygodnie.

Za przykład potwierdzający utrzymywanie się haseł statycznych jako jednej z głównych metod uwierzytelniania, niech posłuży historia znana autorowi niniejszego artykułu. Jakiś czas temu wdrażano system uwierzytelniania dwuelementowego, opartego na tokenach znanego producenta, w jednej z instytucji finansowych. Wdrożeniem były objęte systemy Windows i Unix/Linux. Po pół roku od zakończenia wdrożenia już połowa administratorów systemów Unix wróciła do haseł statycznych. Po kolejnych 6 miesiącach tokenów używało już tylko 25% administratorów. Obecnie, gdy minęły ponad dwa lata od wdrożenia (okres działania tokenów wynosi w tym projekcie 3 lata), tylko jeden administrator systemów Unix pozostał wierny tokenom i stosuje je do uwierzytelniania w kluczowym z biznesowego punktu widzenia systemie finansowym - jednym systemie. Tokeny pozostały w użytku w niezmienionej liczbie jedynie do uwierzytelniania VPN.

Silne czy słabe?

Algorytm generowania haseł

Algorytm generowania haseł

Hasła statyczne należą do grupy mechanizmów uwierzytelniania jednoelementowego (obok uwierzytelniania wieloelementowego). Możemy wyróżnić przynajmniej kilka ich kategorii. Czasami korzysta się z haseł numerycznych przyjmujących postać PIN-ów. Z reguły nie są one długie (do 6 znaków), a ich zastosowanie ogranicza się w korporacjach do urządzeń fizycznej kontroli dostępu. Wykorzystuje się je również jako mechanizm zabezpieczania dostępu do wieloelementowych urządzeń uwierzytelniania (np. tokenów). Najpopularniejsze są jednak wieloznakowe hasła alfanumeryczne.

Siłę hasła zwykło się określać terminem entropia (stopień losowości i nieuporządkowania), który zawdzięczamy nieżyjącemu już matematykowi Claude Shannonowi. Jednostką entropii jest zwyczajowo bit. Im wyższą ma wartość, tym hasło bezpieczniejsze. Ponieważ - jak wiadomo - "matematyka jest wszędzie," także w naszym przypadku powstało równanie, które może posłużyć do obliczenia entropii hasła:

najpierw h=log2(b), a potem h*l

- gdzie "b" to zbiór znaków, z którego można stworzyć hasło, a "l" to liczba znaków w haśle.

Jeżeli przyjmiemy, że na klawiaturze komputera mamy do dyspozycji 94 znaki [h=log2(94)], to entropia jednego znaku wyniesie 6.555. Jeżeli pomnożymy tą wartość przez długość hasła uzyskamy entropię hasła w bitach.

Przyjmuje się, że bezpieczne hasło powinno składać się co najmniej z 8 znaków i zawierać cyfry, duże i małe litery oraz znaki specjalne (np. #,$). Okazuje się przy tym, że nie bez znaczenia jest "mechanizm" generowania haseł. Hasła tworzone przez użytkowników mają znacznie niższy poziom entropii niż hasła generowane losowo. Szacuje się, że np. 8-znakowe hasło tworzone przez użytkownika może sięgnąć 30 bitów, podczas gdy hasło generowane losowo - 52 bitów, przy założeniu, że wykorzystywany jest alfabet 94-znakowy (klawiatura komputera). Dzieje się tak głównie dlatego, że użytkownicy podświadomie stosują pewne wzorce, np. częściej używają "@" niż "/". Nie mówimy tutaj o królowej haseł wśród administratorów: "dupa1" lub jego bardziej finezyjnej "DuP@1". Proponujemy wyliczenie entropii takiego hasła.