r-04.05.doc

(631 KB) Pobierz
Rozdział 4

Rozdział 4

Protokoły zabezpieczeń

 

Rozwiązania natychmiastowezobacz na stronie

Konfigurowanie protokołów z kluczami tajnymi (shared secrets protocol)

Zastosowanie centrum dystrybucji kluczyCentrum Dystrybucji Kluczy (kKey dDistribution Ccenter — KDC)

Podstawowe wiadomości o podprotokołach (subprotocols) protokołu Kerberos

Analiza biletów protokołu Kerberos (Kerberos tickets)

Delegowanie uwierzytelniania

Konfigurowanie zasad domeny protokołu Kerberos (Kerberos domain policy)

Zastosowanie interfejsu usługodawcy obsługi zabezpieczeń (Security Support Provider Interface)

 

W skrócie

 

Protokoły

 

Protokoły są zasadniczą częścią każdego systemu zabezpieczeń, a podstawowe wiadomości o protokołach zastosowanych w systemie Windows 2000 są koniecznym elementem wyposażenia administratora. Jednak protokołów nie konfiguruje się od razu, jak na przykład np. Active Directory czy Zzasady grupowe (Group Policy). Przed przystąpieniem do konfigurowania protokołu, konieczna jest znajomość zasad ich działania oraz skutków, jakie pociągają za sobą wprowadzane zmiany. Niniejszy rozdział zawiera więcej teorii niż którykolwiek z pozostałych w tej książce a i jednocześnie mniej gotowych rozwiązań i opisów czynności. Nie jest to bynajmniej żle — solidna pokaźna wiedza o protokołach zabezpieczeń jest konieczna.

Zabezpieczenia warstwy transportowej (transport layer security) oparte na protokole Secure Sockets Layer wersja 3 (SSL 3/TLS) opisano w rozdziale 6., przy okazji omawiania certyfikatów z kluczem publicznym (public key certificates). Zabezpieczenia protokołu IP (IP security) na poziomie sieci omówiono w rozdziale 10. Pozostaje NT LAN Manager (NTLM) i protokół Kerberos wersja 5. Protokołu NTLM używa się, aby zapewnić zgodność wsteczną (backward compatibility) z poprzednimi wersjami sieciowych systemów operacyjnych Microsoftu (Microsoft Network Operating Systems -NOS), takimi jak Windows NT 4 i LAN Manager. Tak więc większa część niniejszego rozdziału poświęcona jest protokołowi Kerberos.

 

Rozwiązania pokrewne                                                                                    zobacz na stronie

Ustanawianie zabezpieczeń sieci WWW (World Wide Web Security)

 

Porównanie protokołów NTLM i Kerberos

 

Usługodawca zabezpieczeń NTLM dow celu uwierzytelniania korzysta z procedury wyzwanie --odpowiedź (challenge --response). Usługodawca zabezpieczeń (security provider) zna hasło danego użytkownika, lub, ściślej mówiąc, wyciąg uzyskany za pomocą funkcji skrótu MD 4 (MD4 hash of the password). Za pomocą funkcji skrótu MD4 (MD4 hash) szyfruje losowo wygenerowany blok danych i odsyła go do klienta (wyzwanie)(challenge). Następnie klient rozszyfrowuje blok danych i przesyła z powrotem do serwera. Jeśli klient również zna prawidłowe hasło, dane zostaną rozszyfrowane poprawnie i serwer zarejestruje danego klienta jako uwierzytelnionego. Z kolei Uusługodawca zabezpieczeń (security provider) z kolei generuje niepowtarzalny znacznik dostępu (access token), który jest przesyłany do klienta, aby korzystałć z niego w przyszłości. Kolejne uwierzytelnienia klienta dokonywane są na podstawie tego znacznika (token) i usługodawca zabezpieczeń (security provider) NTLM nie musi powtarzać procedury uwierzytelniania wyzwanie --odpowiedź (challenge --response).

 

Wskazówka: MD2, MD4 i MD5 są algorytmami wyznaczania funkcji skrótu wiadomości (message digest) opracowanych dla potrzeb aplikacji tworzących podpisy cyfrowe, w których duży blok wiadomości (message) musi zostać „skompresowany” w sposób bezpieczny, zanim zostanie podpisany za pomocą klucza prywatnego. Opis i kody źródłowe wymienionych powyżej trzech algorytmów można znaleźć w dokumentach Requests For Comment (RFC) od 1319 do 1321. Więcej informacji dostępnych jest na stronie internetowej RSA Laboratory www.rsasecurity.com/rsalabs/, a szczególnie na stroniepod adresem Frequently Asked Questions (FAQ) www.rsasecurity.com/rsalabs/faq/3-6-6.html.

 

Protokół Kerberos korzysta z idei biletów pośrednich (proxy tickets). Weźmy pod uwagę, na przykład np. pod uwagę proces A, który wywołuje aplikację B. Następnie aplikacja B staje się personifikacją procesu A (impersonates A), tzn. aplikacja B w ustalony sposób działa jak A. Jednak jeśli B, działając jako A, wywoła inną aplikację (C), to domyślnie aplikacja C będzie personifikacją B (impersonate B), a nie A, ponieważ uprawnienia dotyczące zabezpieczeń (security privileges) procesu A nie zostaną delegowane do aplikacji C. Prawdziwe delegowanie (delegation), takie, jakie zapewnia protokół Kerberos, oznacza, że jeśli aplikacja B, która jest działającym wątkiem (thread) A, wywoła inną aplikację, C , to aplikacja C może być personifikacją A (impersonate A). Aplikacja B posiada bilet pośredni (proxy ticket) aplikacji A, który umożliwia personifikację A (impersonate A), nawet, jeśli wywołuje inne aplikacje.

Komputery pracujące pod kontrolą systemów Windows 3.11, Windows 95, Windows 98 lub Windows NT 4 będą korzystały z protokołu NTLM przy uwierzytelnianiu sieciowym (network authentication) w domenach Windows 2000. Komputery pracujące pod kontrolą systemu Windows 2000 będą korzystały z protokołu NTLM w przypadku uwierzytelniania przez serwery systemu Windows NT 4 i przy dostępie do zasobów znajdujących się w domenach systemu Windows NT 4. Ale w systemie Windows 2000 głównym protokołem jest Kerberos. Korzyści z zastosowania protokołu Kerberos do uwierzytelniania są następujące:

·         uUwierzytelnianie wzajemne (mutual authentication) — Pprotokół NTLM pozwala serwerowi na weryfikowanie tożsamości klientów, ale nie umożliwia klientom sprawdzania tożsamości serwera ani nie daje serwerowi możliwości zweryfikowania tożsamości innego serwera. Protokół Kerberos gwarantuje, że obydwie strony połączenia sieciowego wiedzą, że druga strona połączenia jest tym, za co się podaje,.

·         Sszybsze połączeniawW przypadku uwierzytelniania za pomocą protokołu NTLM serwer aplikacji, aby uwierzytelnić każdego klienta, musi dołączyć się do kontrolera domeny (DC). W) przypadku uwierzytelniania za pomocą protokołu Kerberos, serwer nie musi odwoływać się do kontrolera domeny (DC), ale zamiast tego może uwierzytelnić klienta, sprawdzając jego dane uwierzytelniające (credentials). Klientyci uzyskują dane uwierzytelniające (credentials) dla danego serwera tylko raz, a potem korzystają z nich ponownie w trakcie logowania sieciowego (network logon session),.

·         Pprostsze zarządzanie relacjami zaufania (trust management) — Jjedną z głównych korzyści uwierzytelniania wzajemnego (mutual authentication) w przypadku protokołu Kerberos jest to, że relacje zaufania pomiędzy domenami systemu Windows 2000 domyślnie są obustronne (two-way) i przechodnie (transitive). Jeśli sieć zawiera kilka drzew, to dane uwierzytelniające wydane przez domenę w dowolnym drzewie są uznawane w całym drzewie,.

 

Uwaga: Przechodnia relacja zaufania (transitive trust) oznacza, że jeśli A ufa B i B ufa C, to A ufa C. Relacje zaufania ustanawiane za pomocą protokołu Kerberos są przechodnie, a relacje ustanawiane za pomocą protokołu NTLM nie.

 

·           Uuwierzytelnianie delegowane (delegated authentication) — Zzarówno protokół NTLM, jak i protokół Kerberos dostarczają informacji potrzebnych usłudze do personifikowania (impersonate) swojego klienta lokalnie, ale niektóre aplikacje rozproszone zostały zaprojektowane tak, że usługa zewnętrzna (front-end service) musi personifikować (impersonate) klientyów (clients), łącząc się z usługami wewnętrznymi (back-end services) na innym komputerze. Protokół Kerberos zawiera mechanizm pośredniczący (proxy mechanism), który pozwala usłudze na personifikowanie klienta, kiedy ten łączy się z innymi usługami. Protokół NTLM takiego mechanizmu nie zawiera,.

·           Wwspółdziałanie (interoperability) — Iimplementacja protokołu Kerberos w wersji firmy Microsoft jest oparta na specyfikacji przedstawionej grupie roboczej Internet Engineering Task Force (IETF). W wyniku tego implementacja protokołu Kerberos w systemie Windows 2000 stanowi podstawę współdziałania z innymi sieciami (szczególnie z sieciami zgodnymi z e standardem POSIX), w których do uwierzytelniania stosuje się protokół Kerberos.

Protokół uwierzytelniania Kerberos umożliwia wzajemne uwierzytelnianie (mutual authentication) pomiędzy klientem a serwerem oraz pomiędzy dwoma serwerami, zanim pomiędzy nimi zostanie ustanowione połączenie sieciowe. Protokół przyjmuje, że początkowe transakcje (transactions) pomiędzy klientami a serwerami mają miejsce w otwartej sieci, w której większość komputerów nie jest zabezpieczonych i „napastnicy” mogą monitorować ioraz dowolnie modyfikować pakiety tak, jak w Internecie. Protokół Kerberos gwarantuje, że nadawca wie, kim jest odbiorca i odwrotnie, oraz gwarantuje, że nikt z zewnątrz nie będzie mógł się podszywać podawać zapod żadną ze stron.

 

Rozwiązania natychmiastowe

 

Konfigurowanie protokołów z kluczem tajnym (shared secrets protocol)

 

W protokole Kerberos zastosowano uwierzytelnianie wymagające kluczy tajnych (shared secrets). Jeśli tylko dwojeóch ludzi zna klucz tajny (secret), to wtedy wówczas każdy z nich może zweryfikować tożsamość drugiej strony przez uzyskanie potwierdzenia, że osoba ta zna ten sam klucz tajny (secret). Załóżmy na przykład, że np. Bonnie często wysyła wiadomości do Clyde’a, który musi mieć pewność, że wiadomość od Bonnie jest autentyczna, zanim zacznie działać zgodnie z otrzymanymi informacjami. Bonnie i Clyde jako rozwiązanie tego problemu wybrali hasło, które nie będzie udostępniane nikomu innemu. Jeśli z wiadomości od Bonnie będzie wynikało, że nadawca zna to hasło, Clyde będzie wiedział, że nadawcą jest Bonnie.

W jaki sposób Bonnie pokaże, że zna to hasło? Mogłaby zamieścić w zakończeniu swojej wiadomości coś takiego jak na wzór bloku podpisu (signature block) na zakończenie wiadomości. Jest to sposób prosty i wydajny, ale będzie bezpieczny tylko wtedy, gdy Bonnie i Clyde mogą być będą pewni, że nikt inny nie czyta ich poczty. Niestety, wiadomości są przesyłane przez sieć, z której korzysta Szeryf, posiadający analizator sieci (network analyzer). Tak więc Bonnie, jedynie podając hasło,nie może udowodnić, że je zna hasło po prostu podając je, tylko musi wykazać się jego znajomościąpokazać, że je zna, bez przesyłania poprzez sieć.

W protokole Kerberos rozwiązano ten problem za pomocą kryptografii z kluczem tajnym (secret key cryptography). Zamiast współdzielenia hasła, partnerzy komunikacji współdzielą klucz (cryptographic key) i stosują go do weryfikowania tożsamości drugiej strony. Klucz wspólny (shared key) musi być symetryczny (symmetric).i Innymi słowy, ten sam klucz służy do szyfrowania i odszyfrowywania. Jedna ze stron udowadnia znajomość klucza poprzez zaszyfrowanie części danych, a druga — rozszyfrowując te dane. Uwierzytelnianie za pomocą klucza tajnego (secret key authentication) rozpoczyna się, gdy jedna ze stron przedstawi wartość uwierzytelniającą (authenticator) w postaci części danych zaszyfrowanych za pomocą klucza tajnego (secret key). Zestaw danych do tworzenia wartości uwierzytelniającej (authenticator) za każdym razem musi być inny, w przeciwnym razie stara wartość uwierzytelniająca (authenticator) mógłaby być wykorzystanya ponownie przez kogoś, komu udałoby się podsłuchać wymianę danych. Po otrzymaniu wartości uwierzytelniającej (authenticator) odbiorca odszyfrowuje ją. Jeśli odszyfrowanie przebiegło pomyślnie, to odbiorca wie, że osoba przedstawiająca wartość uwierzytelniającą (authenticator) zna właściwy klucz. Tylko dwoje óch ludzi ma właściwy klucz; o-odbiorca jest jedną z nich, więc osoba przedstawiająca wartość uwierzytelniającą (authenticator) musi być tą drugą.

 

Ostrzeżenie! Przyjęto, że dwie i tylko dwie osoby posiadają klucz tajny (secret key). Jeśli byłby on znanyKlucz tajny (secret key), znany osobie trzeciej, przestałby byćnie jest już tajnym.

 

Jeśli dane są pobierane z zaufanego źródła, odbiorca musi upewnić się, czy źródło jest tym, czym rzekomo jest, oraz czy informacje nie zostały sfałszowane po drodze sfałszowane. Nie jest Trudno to mało znaczącyokreślić jako prosty problem, ale parametry są ustalone i można znaleźć właściwe rozwiązanie. Należy wrócić uwagę, że w kontekście bezpieczeństwa nie ma rozwiązań doskonałych. W przypadku komunikacji dwukierunkowej, kiedy wymagane jest uwierzytelnianie wzajemne (mutual authentication), pojawiają się nowe problemy, zwłaszcza kiedy gdy dochodzi do współdzielenia kluczy tajnych (secret keys), i konieczne jest zastosowanie nowych narzędzi do rozwiązania tych problemów.

Odbiorca, aby zapewnić uwierzytelnianie wzajemne (mutual authentication), może wziąć część danych z pierwotnej wartości uwierzytelniającej (authenticator), zaszyfrować je, tworząc nową wartość uwierzytelniającą (authentic...

Zgłoś jeśli naruszono regulamin