Hasła jednowyrazowe kontra hasła wielowyrazowe cz. II     Bezpieczenstwo

Hasła jednowyrazowe kontra hasła wielowyrazowe cz. III Udostępnij na: Facebook

Security Management (grudzień 2004)

Autor: Dr Jesper M. Johansson

Opublikowano: 2 lutego 2005

Zapraszam do lektury trzeciej części artykułu o hasłach jedno- i wielowyrazowych. W pierwszej części opisałem podstawowe zasady, rządzące hasłami jedno- i wielowyrazowymi, jak są przechowywane itd. W drugiej części omówiłem relatywną wyższość każdego rodzaju haseł i zilustrowałem to, podchodząc do sprawy matematycznie. Trzecia, ostatnia część zawiera podsumowanie moich artykułów i kilka pora, jak wybierać hasła i jak ustalać politykę hasłową.

Moja porada  Moja porada
Tworzenie silnych haseł wielowyrazowych  Tworzenie silnych haseł wielowyrazowych
Egzekwowanie polityki hasłowej  Egzekwowanie polityki hasłowej
Dlaczego nie należy używać blokowania konta?  Dlaczego nie należy używać blokowania konta?
Podsumowanie  Podsumowanie
Security Management

Moja porada

To, czy lepsze są hasła jedno- czy wielowyrazowe w dużym stopniu zależy od osobistych preferencji. Z całą pewnością hasło składające się z 9 słów jest trudniejsze do złamania niż hasło 9 znakowe, ale jeśli użytkownik ma kłopoty z prawidłowym jego wpisaniem, to jest to hasło dużo gorsze. A jeśli użytkownik mamrocze sobie hasło pod nosem przy wpisywaniu, to zysk jest minimalny. Tak czy inaczej, ostateczne stwierdzenie, który z rodzajów haseł jest lepszy jest niemożliwe dopóki nie zostaną przeprowadzone dalsze badania. Warto jednak pamiętać o jednym kluczowym czynniku. Jeśli obliczona przybliżona wartość entropii ma być zbliżona do rzeczywistej, trzeba użyć całkowicie losowego hasła 9 znakowego. Przyjęta przybliżona wartość entropii słów jest obliczona wystarczająco ostrożnie, by mc stosować ją do zdań mających sens. A to z kolei może być drugim najważniejszym argumentem na korzyść haseł wielowyrazowych: łatwiej je zapamiętać. Jeśli uważasz, że tak jest, używaj haseł wielowyrazowych. Na pewno nie wyjdziesz na tym gorzej, niż gdybyś używał jednowyrazowych.

 Do początku strony Do początku strony

Tworzenie silnych haseł wielowyrazowych

Pamiętaj o jeszcze jednej rzeczy: możesz bardzo łatwo zwiększyć poziom entropii hasła wielowyrazowego. Zapewne utworzyłeś kiedyś hasło ze znakiem "@" zamiast "a", "$" zamiast "s", "!" zamiast "1" itd. No cóż, nie jesteś jedyną osobą, która na to wpadła. Prawdę mówiąc, każdy kto zajmuje się łamaniem haseł zna sposoby wyszukiwania podobnych podstawień. Dlatego też nie jest to zbyt skuteczny sposób wzmacniania hasła jednowyrazowego – wyliczenia poziomu entropii zakładały że 9 znaków składających się na hasło zostało wybrane całkowicie przypadkowo ze zbioru 72 znaków. Inaczej jest natomiast w przypadku haseł wielowyrazowych. Jeśli w miejsce niektórych liter podstawimy inne znaki, to powstaną słowa nie występujące w słowniku – a to bardzo, ale to bardzo utrudni łamanie. O ile dokładnie? No cóż, górna granica zależna jest od poziomu entropii właściwego dla zastosowanego zestawu znaków. Jeśli zbiór 26 znaków wzbogacimy o 10 dodatkowych symboli, otrzymujemy zestaw 36 znaków z entropią na poziomie 5,17 bitów. Każdy z 29 symboli składających się na nasze wielowyrazowe hasło wart jest teraz 5,17 bitów, co łącznie daje niemal 150 bitów entropii. Jako że jest to więcej niż 128 bitów możliwych dla zastosowanej funkcji mieszającej, osiągamy w ten sposób najwyższy możliwy poziom entropii. Dolną granicę możemy obliczyć stosując propozycje Shannona, co da nam wartość 66,7 bitów dla całego hasła. Przybliżenie jest jak widać spore, ale na pewno wzrost entropii jest znaczny, a co za tym idzie – złamanie hasła staje się trudniejsze.

Jest jeszcze jeden sposób przybliżonego obliczenia uzyskanego dzięki podstawieniom wzrostu siły hasła. Z danych dotyczących przybliżonej częstości występowania poszczególnych liter w języku angielskim [podobne dane dla jęz. polskiego na stronie http://www-users.mat.uni.torun.pl/~krypto/zasoby/wlasn_stat_liter.htm - przyp.tłum.]. wynika, że w wielowyrazowym haśle złożonym z 25 znaków (bez spacji) może pojawić się 21 różnych liter, z których najczęściej występują E (3,25), T (2,3), N (1,98), R (1,9) i O (1,88). Nie znam wprawdzie żadnych często stosowanych podstawień dla liter N i R (ani dla odpowiednich małych liter), ale za E często podstawie się 3, za T – 7, a za O - 0. W haśle wystąpi do 7 znaków z tej grupy (|3,25|+|2,3|+|1,88|), z których dowolną liczbę można zastąpić cyframi. I tak, dla wielowyrazowego hasła tego rodzaju wystąpi 2^7=128 różnych kombinacji, co oznacza, że hasło może być 128 razy silniejsze, jeśli przyjmiemy, że zastąpiona została co najmniej jedna litera w sposób najczęściej stosowany. Jeśli zastosowane zostaną inne sposoby podstawienia lub umyślne błędy ortograficzne, hasło stanie się jeszcze silniejsze.

 Do początku strony Do początku strony

Egzekwowanie polityki hasłowej

Po przeczytaniu tych artykułów być może zdecydujesz się zmienić swoją politykę hasłową tak, by możliwe było jedynie używanie haseł wielowyrazowych bądź w jakiś inny sposób. Jak to zrobić? Najpierw musisz określić politykę hasłową w ramach polityki grupowej; oto kilka porad, jak to zrobić.

Na początek możesz utworzyć dla polityki hasłowej osobny obiekt polityki grupowej. W ten sposób łatwiej będzie się wycofać, gdyby coś poszło źle. Przejdź do narzędzia Active Directory Users and Computers, kliknij domenę prawym klawiszem myszy i kliknij opcję Properties. Następnie kliknij zakładkę Group Policy i kliknij przycisk New. Kiedy skończysz, dokonaj edycji nowego obiektu polityki grupowej i skonfiguruj swoją politykę hasłową w węźle Computer Configuration:Windows Settings:Security Settings:Account Policies:Password Policies.

Pamiętaj także, że polityki hasłowe zastosować można jedynie na poziomie domeny i że dotyczą one wszystkich użytkowników w danej domenie. Niemożliwe jest ustawienie osobnej polityki dla części użytkowników ani nawet dla jednostki OU. Jeśli utworzysz politykę hasłową dla jednostki OU, to będzie ona miała zastosowanie jedynie dla kont lokalnych komputerów w tej jednostce.

Może zwrócisz uwagę na to, że opcje polityki hasłowej są nieco ograniczone; jest ich tylko sześć. W przypadku większości systemów można kierować się zaleceniami z Przewodnika bezpieczeństwa Windows Server 2003:

  • Enforce password history (wymuszaj tworzenie historii haseł) – To ustawienie uniemożliwia użytkownikom ponowne wykorzystywanie starych haseł. Zalecane ustawienie: 24
  • Maximum password age (maksymalny okres ważności hasła) – Określa, jak często hasła muszą być zmieniane, by ich łamanie bądź odgadywanie było trudniejsze. Zalecane ustawienie: pomiędzy 42 (wartość domyślna) a 90
  • Minimum password age (minimalny okres ważności hasła) – Sprawia, że hasła muszą być używane przez określony czas zanim można będzie je zmienić. Zalecane ustawienie: 2
  • Minimum password length (minimalna długość hasła) – Podaje minimalną długość, jaką musi mieć hasło. Zwróć uwagę, że przechowywanie wartości funkcji mieszającej LM od 7 do 8 znaków nie daje zbyt dużych korzyści (szczegóły w pierwszym artykule z serii). Zalecane ustawienie: 8
  • Passwords must meet complexity requirements (hasła muszą spełniać wymagania co do złożoności) – Sprawia, że wymagany jest minimalny poziom skomplikowania hasła. Włączenie tego ustawienia sprawia, że hasła muszą zawierać znaki z co najmniej trzech spośród czterech kategorii (duże litery, małe litery, cyfry, symbole niealfanumeryczne) oraz że nie mogą zawierać całości ani części nazwy użytkownika. Zwróć uwagę, że spełnienie tych wymagań niekoniecznie spowoduje, że hasło będzie silne. Tak na przykład, wymagania spełnia hasło: "Trudne1". Zalecane ustawienie: włączone
  • Store passwords using reversible encryption (zapisz hasła dla wszystkich użytkowników w domenie, korzystając z szyfrowania odwracalnego) – Szyfrowanie odwracalne używane jest w systemach, w których aplikacje potrzebują dostępu do haseł zapisanych otwartym tekstem. Zazwyczaj nie jest to konieczne. Zalecane ustawienie: wyłączone.

 Do początku strony Do początku strony

Dlaczego nie należy używać blokowania konta?

Przewodnik zaleca wprawdzie włączenie blokowania konta po 50 nieudanych próbach, ale ja uważam, że nie należy wprowadzać takiego ustawienia. Po pierwsze (jak opisałem to w pierwszym artykule z serii), szanse że atakujący odgadnie hasło są zbyt małe, by sens miało blokowanie konta. Po drugie, włączenie blokowania daje atakującemu do ręki możliwość przejęcia ustawień blokowania i wykorzystanie go jako ataku typu denial-of-service (odmowa usługi), blokując wszystkie konta w systemie. Po trzecie, większość narzędzi szacujących zagrożenia zablokuje wszystkie konta w domenie. Tak więc to, czy zdecydujesz się na używanie blokowania kont zależy od przyjętej polityki zabezpieczeń i Twojej opinii na dawany przez nie wzrost bezpieczeństwa. Pamiętaj jednak, że problemy związane z zablokowanym kontem to jedna z najczęstszych spraw zgłaszanych do pomocy technicznej Microsoft, a jedno resetowanie konta kosztuje średnio 70 USD [w USA - przyp.tłum.]. Być może zdecydujesz się jednak na przyjęcie tak surowej polityki zabezpieczeń, że gotów jesteś zaakceptować te koszty. Jeśli nie, to zrób swojemu działowi obsługi technicznej przysługę i wyłącz blokowanie.

Egzekwowanie ustawień unikalnych

Jak już zapewne zdążyłeś zauważyć, ustawienia polityki hasłowej w ramach polityki grupowej nie mają zbyt wielu opcji, ani nie gwarantują nawet tworzenia dobrych haseł. I tak, dopóki w węźle Computer Configuration:Windows Settings:Security Settings:Local Policies:Security Options nie włączysz ustawienia "Network security: Do not store LAN Manager hash value on next password change", zapisywane będą łatwe do złamania wartości funkcji mieszającej LM. Poza tym, sam fakt spełniania kryteriów złożoności nie oznacza, że hasła nie da się odgadnąć albo złamać. I w końcu, ze względu na ograniczenia interfejsu polityki grupowej, nie można wymagać haseł dłuższych niż 14 znaków.

Problemy te można rozwiązać, ale potrzeba do tego pewnych umiejętności programistycznych: można napisać niestandardowy filtr haseł. Filtr haseł to po prostu biblioteka DLL, do której przy każdej zmianie hasła trafia jego zapisana otwartym tekstem kopia. Filtr może wtedy sprawdzić, czy hasło spełnia dowolnie ustalone kryteria. Można na przykład ustawić wyszukiwanie, czy hasło nie występuje w słowniku, sprawdzanie, czy hasło 8 znakowe ma wolną ósmą pozycję, upewnianie się, że w haśle nie pojawiają się słowa związane z firmą itp. Jedynym ograniczeniem zakresu filtrowania są Twoje umiejętności programistyczne i to, jak szybkiego filtrowania potrzebujesz. Tak na przykład, w niektórych firmach filtry haseł służą upewnianiu się, że hasła do kont administracyjnych są silniejsze niż w przypadku zwykłych użytkowników.

Pełen opis tworzenia filtrów haseł wybiega poza zakres niniejszego artykułu. Szczegółowe informacje znaleźć można w takich źródłach, jak:

Warto wiedzieć jeszcze jedno o filtrach haseł. Są one znakomitym narzędziem, ale są to przeważnie funkcje przetwarzania ciągów znaków napisane w języku C/C++, a biblioteka DLL zawierająca filtr ładowana jest do procesu LSA w kontrolerach domen. Zdecydowanie niedobrze byłoby, gdyby doszło tam do przepełnienia buforu, a jeśli nie będziesz bardzo uważny przy pisaniu swojego programu, to właśnie to może Ci grozić.

 Do początku strony Do początku strony

Podsumowanie

W artykule tym, trochę za pomocą wnioskowania, a trochę – danych empirycznych, starałem się przyczynić do rozwiązania starego problemu: czy hasła wielowyrazowe są lepsze od jednowyrazowych. Jednak zanim wyciągnę wnioski, chcę zwrócić uwagę, że jest to debata czysto teoretyczna – trzeba pamiętać, że jeśli atakujący ma możliwość złamania funkcji mieszających hasła, to najpewniej to zrobi, zhakuje domenę i całkowicie pokona zabezpieczenia sieci. Poza tym, łamanie nie jest nawet konieczne, jeśli atakujący dysponuje narzędziem mogącym bezpośrednio odczytać wartości funkcji mieszających. Pamiętaj też, że jeśli Twoi użytkownicy nie wiedzą, o co chodzi w hasłach i bezmyślnie w nie wierzą, to nie zadziała żaden schemat haseł.

Co prawda w dalszym ciągu nie można dać ostatecznej odpowiedzi na pytanie, czy hasła wielowyrazowe są silniejsze niż jednowyrazowe, ale z matematyki zdaje się wynikać, że pięcio- czy sześciowyrazowe hasło ma podobną siłę, co całkowicie losowe hasło dziewięcioznakowe. A skoro większość ludzi łatwiej zapamięta hasło sześciowyrazowe niż losowy, dziewięcioznakowy ciąg, to wielowyrazowe hasła mogą być lepszym wyborem. Hasło wielowyrazowe można poza tym wydatnie wzmocnić, robiąc w nim umyślne błędy ortograficzne lub podstawiając inne znaki w miejsce niektórych liter, co nie jest możliwe w przypadku z założenia losowych haseł jednowyrazowych. Tak więc możesz zapomnieć to, czego nauczyłeś się w szkole: czasem błędy ortograficzne są dobre!

Na zakończenie podam kilka porad dotyczących używania haseł wielowyrazowych, gdybyś się na to zdecydował. Po pierwsze, jeśli hasło wielowyrazowe ma mieć taką siłę jak losowe hasło jednowyrazowe, to powinno mieć co najmniej 5 (a nawet 6) wyrazów. Po drugie, słowa nie powinny być krótkie, ponieważ krótkie słowa są bardzo łatwe do złamania przy użyciu standardowych narzędzi. Po trzecie, nie zapominaj o błędach ortograficznych i podstawieniach: to bardzo wzmocni Twoje hasło. Podobne wzmocnienie możesz osiągnąć, dodając kilka spacji w niestandardowych miejscach, a kasując te, których można by się spodziewać. Po czwarte, zdania nie muszą być zrozumiałe. Właściwie nawet lepiej, jeśli zrozumiałe nie są. I w końcu, używanie kombinacji dużych i małych liter oraz włączenie cyfr i innych znaków to absolutny mus. Preferably, the symbols should not be selected from those above the numbers on the keyboard. Those are the first symbols attackers try.

Jeśli po przeczytaniu mojego artykułu planujesz wprowadzenie haseł wielowyrazowych, chcielibyśmy prosić Cię o przysługę. Spróbuj wymyślić jakieś hasło wielowyrazowe (tylko nie to, którego obecnie używasz!), po czym prześlij je na adres passstud@microsoft.com*. Dzięki przesłanym hasłom będziemy mogli zbadać, jaka jest ich rzeczywista siła w porównaniu z jednowyrazowymi oraz sposób ich użycia. Jeśli otrzymamy wystarczająco dużą próbkę, to być może pokuszę się o napisanie artykułu z dalszym omówieniem haseł wielowyrazowych.

Jak zwykle, ta rubryka przeznaczona jest dla Was. Skontaktujcie się z nami, gdybyście chcieli poruszyć jakiś temat lub gdybyśmy mogli pomóc Wam lepiej zabezpieczyć Wasze systemy. Wystarczy wcisnąć ikonę "Komentarze" i wysłać do nas wiadomość.

*Przesłane do nas hasło wielowyrazowe zostanie zachowane jedynie w celu przeprowadzenia analizy. Wasz adres e-mail i inne dane nie zostaną zachowane. Przesłane przez Was hasło wielowyrazowe zostanie dołączone do pozostałych, otrzymanych przez nas i w żaden sposób nie zostanie dołączone do danych osobowych, przesłanych wraz z Waszą wiadomością.

 Do początku strony Do początku strony

Hasła jednowyrazowe kontra hasła wielowyrazowe cz. II     Bezpieczenstwo