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

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

Security Management (październik 2004)

Autor: Dr Jesper M. Johansson

Opublikowano: 19 listopada 2004

Problem zabezpieczania danych wywołuje interesujące dyskusje. Poruszane kwestie mają rożną ważność, ale ogólnie biorąc widać, że tematyka ta ciągle wzbudza emocje i interesuje coraz większą liczbę osób. Chciałbym dokonać podsumowania wniosków z tych dyskusji, jak również zaproponować swoje częściowe rozwiązania. W pierwszych trzech z moich artykułów chciałbym wkroczyć na teren dyskusji o hasłach i omówić wady i zalety haseł wielowyrazowych i jednowyrazowych.

No dobrze, być może problem "hasła wielowyrazowe czy jednowyrazowe" to "dyskusja trochę mniej fascynująca" albo nawet "nudna i w ogóle to kogo to obchodzi". Tak czy inaczej, co w końcu jest bezpieczniejsze: hasła jednowyrazowe czy wielowyrazowe? Odpowiedź wcale nie jest taka prosta, jak mogłoby się wydawać.

Aby prawidłowo przeanalizować kwestię wyższości haseł wielowyrazowych nad hasłami jednowyrazowymi, postanowiłem podzielić mój artykuł na trzy części. W niniejszej, pierwszej części, zajmę się podstawowymi zasadami, które rządzą hasłami wielo- i jednowyrazowymi, opiszę sposób ich zachowywania i podobne zjawiska. W przyszłym miesiącu opiszę zalety i wady każdej z opcji i przy pomocy podejścia matematycznego postaram się określić, która z nich jest przeważająca. W części ostatniej umieszczę podsumowanie moich artykułów i doradzę, jak wybierać hasła i jak je konfigurować.

Security Management

 

Zawartość strony
Podstawowe zasady  Podstawowe zasady
Usuwanie funkcji mieszających LM  Usuwanie funkcji mieszających LM
Wnioski końcowe  Wnioski końcowe

Podstawowe zasady

Po pierwsze, ważne jest zrozumienie istoty różnicy pomiędzy hasłami jednowyrazowymi i wielowyrazowymi. Przy wybieraniu hasła większość osób używa słów typu "Hasło" lub zlepki przypadkowych symboli, takich jak "X2!aZ@<dF:", lub też łączą obydwa te sposoby, tworząc coś w rodzaju “h@sЛ0". Hasło wielowyrazowe jest związkiem kilku wyrazów, np. "To jest naprawdę złożone hasło wielowyrazowe." Hasło wielowyrazowe jest przeważnie dłuższe niż jednowyrazowe, a jego elementy mogą być rozdzielone spacjami. Niektórzy tworzą swoje hasło poprzez połączenie pierwszych liter poszczególnych słów. Nie jest to hasło wielowyrazowe, ale jest wytworem z pomocą szczególnej metody. Z kolei hasło wielowyrazowe to inny rodzaj hasła tokenowego, w którym tokenami są całe słowa zamiast znaków z listy symboli. Hasło wielowyrazowe nie musi być poprawnym zdaniem, zgodnym z zasadami ortografii. Możliwe jest w nim też podstawianie symboli przypominających litery tylko z grubsza, jak zostało to pokazane w ostatnim przykładzie.

Zasadnicze różnice pomiędzy hasłami wielo- i jednowyrazowymi to:

(1) W hasłach wielowyrazowych przeważnie występuje spacja, w jednowyrazowych nie.

(2) Hasło wielowyrazowe jest znacznie dłuższe niż większość słów, i co więcej, jest dłuższe niż przypadkowe zlepki liter możliwe do zapamiętania przez zwykłego człowieka.

Hasło wielowyrazowe mogłoby po prostu zostać uznane za bardzo długie hasło, zazwyczaj jednak składa się z sekwencji słów lub ciągów znaków zbliżonych do słów. Oprócz tego, opisane tutaj hasła wielowyrazowe mogą być używane z systemem Windows 2000 i wyższymi. W przypadku innych systemów hasła takie mogą spełniać inne wymagania lub też w ogóle z nimi nie współdziałać.

Po drugie, należy zrozumieć różnicę pomiędzy odgadywaniem hasła i jego łamaniem. Odgadywanie hasła odbywa się wtedy, gdy ktoś siedzi przy konsoli lub przy maszynie zdalnej, próbując różnych haseł. W tym artykule nie chodzi nam o zgadywanie, ponieważ jeśli konto jest zabezpieczone stosunkowo złożonym hasłem, jego odgadnięcie się nie uda. Jeżeli jednak się uda, oznaczać to będzie, że odgadujący miał niesamowite szczęście, albo że hasło było za słabe.

Zilustruję to przykładem. Po pierwsze, uznajmy, że hasła mogą składać się z czterech rodzajów symboli: liter pisanych dużą czcionką, liter pisanych mała czcionką, cyfr i symboli nie-alfanumerycznych. Do symboli nie-alfanumerycznych należą wszystkie symbole, znajdujące się na klawiaturze, jak również wszystkie, które nie niej nie występują, na przykład znaki kodu Unicode. Niektórzy zaliczają znaki kodu Unicode i symbole znajdujące się na klawiaturze do dwóch oddzielnych kategorii, ale w pozostałych artykułach zgrupujemy je pod egidą jednej definicji. Co więcej, dla naszych potrzeb będziemy używać terminu "znak" w stosunku do wszystkich czterech kategorii. Tak na przykład, załóżmy, że hasła są nie występującymi w słowniku ciągami składającymi się z ośmiu znaków, pochodzących z przynajmniej z trzech kategorii spośród czterech, wspomnianych wcześniej, a ich ważność wygasa po 70 dniach. Intruz nie mający żadnej wiedzy o takich hasłach potrzebowałby do odgadnięcia jednego z nich komputera o przepustowości łącza 53 000 T-3 (44,736 Mbps każde). Przepustowość taka pozwoliłaby jedynie na wysłanie danych uwierzytelniających wymaganych do sprawdzenia połowy możliwych haseł (zakładając, że każde jest równie prawdopodobne).

Jeżeli ograniczymy zestaw znaków, używanych do odgadnięcia hasła i założymy, że znaki zostały wybrane przypadkowo (bądź intruz tak uważa) spośród 76 najpopularniejszych symboli, to otrzymamy 1.11 x 10^15 możliwych 8-znakowych haseł. Jeżeli intruz jest w stanie odgadnąć 300 na sekundę, co jest mało prawdopodobne nawet w przypadku najbardziej zoptymalizowanych programów, to odgadnięcie hasła zajęłoby mu 58 783 lat. Jeżeli intruz utworzy skrypt instrukcji net use sieci, wtedy ma możliwość dwóch lub trzech prób na sekundę, co oznacza, że odkrycie hasła zajęłoby około 5 878 324 lat.

Z kolei o łamaniu (cracking) hasła możemy mówić wtedy, gdy intruz posiadł już znajomość nieprzetworzonych wartości funkcji mieszającej (funkcja mieszająca często używana jest do przechowywania haseł). Intruz generuje hasła testowe, miesza je, a otrzymany wynik porównuje z przechowywanymi danymi. Łamanie hasła obywa się szybciej niż jego odgadywanie. Nawet przy korzystaniu ze sprzętu średniej klasy intruz może wygenerować i przetestować 3 000 000 haseł na sekundę. Złamanie wszystkich możliwych 8-znakowych haseł przy użyciu 76-znakowego zestawu zajmie 6 lat. Oczywiście, odkrycie wielu z tych haseł zajmie mniej czasu, statystycznie możliwe jest odgadniecie hasła w połowę tego czasu. Jeżeli hasła są tylko 7-znakowe, wtedy złamanie ich pełnego zestawu zajmie jedynie około 28 dni.

Inną sprawą jest to, w jaki sposób intruz zdobędzie nieprzetworzone wartości funkcji mieszających, podobnie jak to, czy złamanie hasła jest jego głównym celem. Trzeba wziąć pod uwagę fakt, że w przypadku Windows intruz, aby złamać hasła domenowe, musi zdobyć dostęp do sterownika domeny na poziomie systemowym. Jeżeli intruzowi już się to udało, wtedy łamanie haseł jest problemem mniej istotnym. Jednakże większość atakujących łamie hasła. Dlaczego? Przeważnie dlatego, że intruz ma nadzieję, że konto innego użytkownika, zainstalowane w innym systemie i innej domenie będzie zabezpieczone tym samym loginem i hasłem. Zjawisko to nazywa się zależnością administracyjną i zajmiemy się nim w kolejnych częściach artykułu. Co więcej, skoro jedynym zabezpieczeniem protokołu typu wezwanie odpowiedź jest sama funkcja mieszająca haseł, łamanie haseł jest niepotrzebne, ponieważ sama funkcja wystarczy aby zdobyć dostęp do konta. Jednakże crackerzy przeważnie podejmują próbę złamania haseł, a ich skuteczność stanowi poważny problem.

Trzeba pamiętać, że nowoczesne systemy operacyjne przeważnie nie przechowują haseł jedno- lub wielowyrazowych jako zwykłego tekstu. W większości przypadków przechowywane wartości są wynikiem funkcji jednokierunkowej, np. mieszającej. W systemach operacyjnych, bazujących na Windows NT (łącznie z Windows 2000, XP i Server 2003) hasła są przechowywane na wiele rożnych sposobów. Najważniejsze z nich to funkcja mieszająca LM i funkcja mieszająca NT. Aby zrozumieć ten artykuł nie trzeba wiedzieć, na czym one dokładnie polegają. Trzeba wiedzieć tylko trzy rzeczy:

  • Funkcja mieszająca LM nie uwzględnia wielkości liter, funkcja mieszająca NT uwzględnia wielkość liter.
  • Wartość funkcji mieszającej LM ma zestaw znaków ograniczony do 142 sztuk, podczas gdy wartość funkcji mieszającej NT wykorzystuje wszystkie 65 536 znaków kodu Unicode.
  • Funkcja mieszająca NT oblicza wartość mieszania bazując na całym haśle, wprowadzonym przez użytkownika. Funkcja mieszająca LM rozdziela hasło na dwa 7-znakowe elementy, dodając w razie potrzeby wypełnienie.

Obydwa typy mieszania generują 128-bitową wartość zachowaną. Obecnie większość crackerów łamie hasła najpierw przy pomocy funkcji LM, następnie łamią wartość funkcji NT w ten sposób, że po prostu wypróbowują wszystkie możliwości pisania małymi i dużymi literami znaków hasła złamanego przy pomocy wartości funkcji LM.

Funkcja mieszająca LM jest mało odpornym na próby złamania sposobem przechowywania haseł. Stworzona dla systemu operacyjnego LAN Manager, funkcja LM została również zawarta w systemie Windows NT w celu utrzymania kompatybilności wstecznej. W dalszym ciągu jest używana do tego celu. Ze względu na sposób obliczania wartości funkcji mieszającej LM, hasła stworzone przy jej pomocy nie mogą być mocniejsze niż 7 znakowe hasła, stworzone przy pomocy zestawu 142 znakowego.

 Do początku strony Do początku strony

Usuwanie funkcji mieszających LM

Istnieje kilka sposobów, pozwalających na upewnienie się, że wartość funkcji mieszającej LM nie jest zapisywana. Jednym z nich jest używanie haseł jedno lub wielowyrazowych o liczbie znaków większej niż 14. Można również skorzystać z wyłącznika funkcji LM (NoLMHash) – opisanego w Polityce Grupowej systemów Windows Server 2003 i Windows XP jako "Network security: Do not store LAN Manager hash value on next password change." Skorzystanie z tego wyłącznika całkowicie zatrzymuje zachowywanie wartości funkcji LM. Zmiana ta uaktywni się przy kolejnej zmianie hasła. Jednakże samo uaktywnienie tego przełącznika nie spowoduje usunięcia istniejących wartości funkcji LM, które powstały przy aktualnym i poprzednich hasłach. Poza tym to, że przełącznik nie uaktywnia się od razu oznacza, że ewentualne problemy z współpracą spowodowane niezapisywaniem wartości funkcji LM nie wystąpią od razu. Dodatkowe informacje znaleźć można w artykule numer 299656 (j.ang.) w Bazie Wiedzy. Zawarte są tam również informacje o używaniu przełącznika NoLMHash w Windows 2000.

Wartości funkcji mieszania LM można również usunąć, dodając pewne znaki do hasła. Utrzymuje się, że używanie znaków tworzonych przy użycia klawisza ALT wyklucza możliwość zapisania wartości funkcji LM. W rzeczywistości właściwości takie przejawiają tylko pewne znaki kodu Unicode. Na przykład, znaki tego kodu, znajdujące się pomiędzy 0128 i 0159 powodują, że wartość funkcji LM nie jest generowana. Pewne znaki kodu Unicode przed zmieszaniem są przetwarzane na inne znaki.

Usuwanie wartości funkcji LM jest problematyczne – może doprowadzić do uszkodzeń! Wartości funkcji LM pozostają zachowane w komputerze z tego powodu, że usunięcie ich uszkadza aplikacje które korzystają z uwierzytelnienia RPC bazującego na UDP. Chodzi tutaj o Windows Cluster Services, Real Time Communications Server i prawdopodobnie również inne aplikacje. Problem ten można rozwiązać poprzez włączenie ustawienia NtlmMinClientSec, opisanego jako "Network security: Minimum session security for NTLM SSP based (including secure RPC) clients" w Polityce Grupowej systemu Windows Server 2003. Problemy te można rozwiązać, konfigurując ustawienie NtlmMinClientSec tak, aby wymagało co najmniej integralności wiadomości i zabezpieczenia sesji NTLMv2 (0x80010). Przy takim ustawieniu RPC korzysta z uwierzytelnienia NTLMv2, które wykorzystuje funkcję mieszania NT. (Zobacz artykuł numer 828861 (j.ang.) w Bazie Wiedzy, aby poznać więcej szczegółów na temat problemów z klastrami w konfiguracjach z wyłączonymi funkcjami mieszania LM). Z powodu braku funkcji mieszania LM mogą uszkodzić się również inne aplikacje. Na przykład wymaga jej program pocztowy Outlook 2001 dla komputerów typu Macintosh. System Windows 3.x z pewnością uszkodzi się bez funkcji mieszania LM, a Windows 95 i 98 mogą uszkodzić się w pewnych przypadkach. Na dodatek, niektóre urządzenia dodatkowe, takie jak archiwa sieciowe mogą wymagać funkcji LM.

 Do początku strony Do początku strony

Wnioski końcowe

Pierwszy z serii trzech artykułów o zagadnieniu haseł opisywał ich podstawy. W artykule drugim spróbuję przeanalizować kwestię, czy hasła wielowyrazowe właściwie maja przewagę nas hasłami jednowyrazowymi. Jednakże, biorąc pod uwagę fakt, że tak mało osób z nich korzysta, tak naprawdę mamy niewiele autentycznych danych na temat haseł wielowyrazowych. Aby dokładniej zrozumieć ich naturę, chcielibyśmy prosić Państwa o przysługę. Jeżeli chcielibyście nam pomoc, wymyślcie i prześlijcie do nas hasło wielowyrazowe (tylko nie to, którego używacie obecnie!) pod adres passstud@microsoft.com. Mamy nadzieje, że liczba zgłoszeń pozwoli nam przeanalizować hasła wielowyrazowe i zrozumieć sposób, w jaki powstają.

Oczywiście, ta rubryka należy również do Was. Jeżeli chcielibyście poruszyć jakąś kwestię lub potrzebujecie naszej pomocy przy lepszym zabezpieczeniu Waszego systemu, wystarczy wcisnąć znajdujący się poniżej przycisk "Komentarze" i wysłać do nas wiadomość.

 Do początku strony Do początku strony

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