System Kerberos

 

Strona główna
Strona wyżej

 

Użycie systemu Kerberos wymiany kluczy w systemach rozproszonych

W tej części  zostanie opisany system Kerberos Key Exchange, znakomite narzędzie umożliwiające wprowadzenie dodatkowych zabezpieczeń w dowolnej sieci. System ten został opracowany w instytucie Massachusetts Institute of Technology w ramach projektu Athena. Zastosowano w nim wiele pomniejszych mechanizmów kontroli bezpieczeństwa oraz pojedynczy bezpieczny serwer zarządzający dostępem do ogromnych systemów rozproszonych.

Wprowadzenie do systemu Kerberos

Proces uwiarygodniania w systemie Kerberos

Znane słabe punkty systemu Kerberos

Konieczne założenia czynione przez system

 

Zbiór linków:

CyberSafe: http://www.cybersafe.com

Uwiarygodnianie w sieci: http://gost.isi.edu/info/kerberos

Instrukcja obsługi systemu Kerberos: http://web.dementia.org/~shadow/kerberos.html

Zespół MIT rozwijający Kerberos: http://web.mit.edu/kerberos/www/krbdev.html

Przewodnik po systemie Kerberos: http://gost/isi.edu/brian/security/kerberos.html

Jak skerberyzować swoją sieć: http://www.epm.ornl.gov/~jar/HowToKerb.html

Asysta przy kompilowaniu systemu Kerberos: http://www.staff.uiuc.edu/~notarus


Wprowadzenie do systemu Kerberos

Kerberos — system uwiarygodnienia i autoryzacji opracowany w 1980 roku w laboratorium komputerowym instytutu MIT, powstały pierwotnie na potrzeby projektu Athena — działa na podstawie całkiem prostej zasady. W systemie Kerberos używa się jednego komputera wyposażonego w niezwykle sprawne zabezpieczenia, który może być umieszczony w pokoju chronionym przez 24 godziny na dobę. Na komputerze tym znajdują się informacje o hasłach i prawach dostępu każdego użytkownika w systemie (w instytucie MIT komputer ten nosi nazwę kerberos.mit.edu). Wszystkie komputery i użytkownicy sieci działają na podstawie danych dostarczanych przez ten serwer. W systemie Kerberos ten zabezpieczony serwer, zwany bezpiecznym serwerem, jest jedynym serwerem w sieci, który może dostarczać programom sieciowym informacje związane z dostępem. Dla serwerów działających w systemie Kerberos oraz pracujących w nim użytkowników wszystkie pozostałe elementy sieci są niepewne. Innymi słowy, system Kerberos działa na podstawie zasady upraszczania — łatwo jest w nim utrzymać jeden całkowicie bezpieczny serwer, co jest sytuacją odwrotną do zabezpieczania wszystkich serwerów w sieci.

Jeśli użytkownik sieci obsługiwanej przez system Kerberos chce uzyskać dostęp do pliku lub innego serwera sieciowego udostępniającego zasoby, to musi najpierw uzyskać pozwolenie od bezpiecznego serwera. Aby lepiej zrozumieć to rozwiązanie, warto rozważyć następujący przykład. Użytkownik (komputer-klient) chce uzyskać dostęp do pliku łodzie_żaglowe na serwerze plików (serwerze niepewnym). Zakładając, że użytkownik już się załogował w sieci, oprogramowanie sieciowe wykona kolejno kilka operacji.

1. Użytkownik żąda dostępu do pliku łodzie_żaglowe za pośrednictwem wiadomości z podpisem cyfrowym, utworzonej za pomocą swojego klucza prywatnego, i szyfruje ją za pomocą klucza publicznego serwera. Są dwa powody, dla których żądanie dostępu jest realizowane za pomocą zaszyfrowanej wiadomości opatrzonej podpisem cyfrowym. Po pierwsze, szyfrowanie z użyciem klucza sesji gwarantuje (w większym stopniu), że tylko bezpieczny serwer będzie mógł odczytać żądanie. Po drugie, bezpieczny serwer za pomocą podpisu cyfrowego określa, czy wiadomość została wysłana przez uprawnionego użytkownika (a nie hakera).

2. Oprogramowanie sieciowe wysyła zaszyfrowaną wiadomość do bezpiecznego serwera, jak to pokazałem na rysunku 1.

 

Rys. 1. Komputer-klient wysyła do bezpiecznego serwera zaszyfrowaną wiadomość

3. Bezpieczny serwer z kolei analizuje wiadomość z żądaniem komputera-klienta. Serwer używa podpisu cyfrowego użytkownika do zweryfikowania jego tożsamości oraz sprawdzenia, czy użytkownik znajduje się na liście użytkowników uprawnionych do uzyskania dostępu do pliku łodzie_żaglowe.

4. Jeśli użytkownik ma prawa dostępu do pliku łodzie_żaglowe na serwerze, to bezpieczny serwer połączy użytkownika z serwerem plików i wyśle do tego serwera wiadomość, że użytkownik ma prawo dostępu do pliku.

Aby rozpocząć komunikowanie się użytkownika i serwera plików (opisane w punkcie 4), bezpieczny serwer wykonuje kilka operacji.

l. Bezpieczny serwer wysyła do użytkownika unikatowy klucz zwany biletem. Aby zagwarantować bezpieczeństwo, kopia tego biletu jest szyfrowana przez bezpieczny serwer za pomocą klucza publicznego użytkownika. Bilet zawiera informacje o dostępie oraz klucz sesji. Klucz sesji jest to nieskomplikowany klucz do szyfrowania służący do połączenia się z serwerem plików. Na rysunku 2 pokazałem sposób przesyłania biletu serwera.

Rys. 10.2. Serwer szyfruje, a następnie wysyła bilet do komputera-klienta

2. Bezpieczny serwer wysyła także kopię biletu komputera-klienta do serwera plików. Aby zagwarantować bezpieczeństwo, druga kopia biletu jest szyfrowana przez bezpieczny serwer za pomocą publicznego klucza serwera plików (druga kopia biletu zawiera te same informacje, co kopia pierwsza, czyli informacje o bilecie oraz klucz sesji). Na rysunku 3 pokazałem sposób, w jaki bezpieczny serwer przesyła bilet do serwera plików.

Rys.3. Bezpieczny serwer szyfruje bilet komputera-klienta i wysyła go do serwera plików

3. Komputer użytkownika i serwer zawierający plik łodzie_żaglowe łączą się i porównują kopie biletów, aby potwierdzić swoją tożsamość. Oprogramowanie sieciowe na komputerze użytkownika szyfruje kopię biletu za pomocą publicznego klucza serwera plików, po czym wysyła go do serwera plików. Serwer plików odszyfrowuje bilet za pomocą prywatnego klucza. Jeśli przesłana przez użytkownika kopia klucza sesji jest taka sama, jak kopia wysłana przez serwer, to serwer plików uwiarygodnia bilet. Jeśli bilety są jednakowe, to użytkownik może się połączyć z serwerem plików. W przeciwnym wypadku serwer plików nie połączy się z użytkownikiem. Na rysunku 4 pokazałem sposób porównywania biletów komputera-klienta i serwera plików.

Rys. 4. Komputer-klient i serwer plików porównują bilety

4. Jeśli bilety są jednakowe, to bezpieczny serwer kończy działanie, a użytkownik komunikuje się odtąd z serwerem plików za pośrednictwem bezpiecznego kanału i uzyskuje dostęp do pliku łodzie_żaglowe. Serwer plików, w zależności od swoich ustawień, wyśle ten plik zaszyfrowany za pomocą klucza publicznego użytkownika (przechowywanego na bezpiecznym serwerze), klucza sesji albo w postaci zwykłego pliku tekstowego. Na rysunku 5 pokazałem sposoby przesyłania pliku łodzie_żaglowe od serwera plików do komputera-klicnta.

Rys.5. Serwer plików może zaszyfrować plik lub wystać go w postaci zwykłego pliku tekstowego

5. Po zakończeniu przesyłania pliku do użytkownika serwer wysyła do bezpiecznego serwera wiadomość z informacją o zakończeniu połączenia będącą dla bezpiecznego serwera sygnałem, aby zlikwidować bilet dostępu. Jeśli komputer-klient spróbuje użyć tego samego biletu dostępu, aby znowu uzyskać dostęp do tego pliku, to bezpieczny serwer uniemożliwi komputerowi-klientowi uzyskanie dostępu.

 

Jak już wspomniałem, serwer Kerberos jest jedynym bezpiecznym serwerem w sieci obsługiwanej przez system Kerberos. Innym sposobem zrozumienia takiego rozwiązania jest potraktowanie tego systemu jako metody weryfikowania tożsamości użytkowników (stacji roboczych albo serwerów sieciowych) w sieciach otwartych (nie zabezpieczonych). Weryfikacja tożsamości użytkowników w systemie Kerberos jest dokonywana bez użycia mechanizmów uwiarygodniania systemu operacyjnego odległego komputera głównego i jego adresów oraz nie wymaga, aby wszystkie komputery główne w sieci były fizycznie wyposażone w systemy ochrony. Co więcej, system Kerberos zakłada, że każdy użytkownik może odczytywać i modyfikować pakiety przesyłane w sieci oraz dodawać nowe. Innymi słowy, w systemie tym cała sieć, oprócz serwera Kerberos, jest traktowana jako jeden wielki obszar zwiększonego ryzyka. System dopuszcza możliwość podglądania wszystkich transakcji przez hakerów i ich ciągłe próby włamania się do sieci.

System Kerberos dokonuje uwiarygodniania transakcji działając zgodnie z tymi niedoskonałymi założeniami. System ten jest po prostu bezpieczną dodatkową usługą uwiarygodniania. Uwiarygodnianie transakcji jest przeprowadzane przy użyciu tradycyjnych metod kryptograficznych, czyli z użyciem wspólnego klucza tajnego. Należy pamiętać, że jest to klucz wymieniany między dwiema stronami połączenia za pośrednictwem bezpiecznego kanału jeszcze przed rozpoczęciem przesyłania danych. Klucze te są określane mianem wspólnych kluczy tajnych, ponieważ podczas ich używania poufne informacje są wspólne dla dwóch (lub więcej) stron. Nie można mylić tego klucza z kluczem prywatnym używanym w systemach kryptograficznych. Klucza prywatnego nie powinien znać nikt oprócz użytkownika, do którego należy ten klucz, a jak już poprzednio wspomniano, wspólny klucz tajny znają co najmniej dwie strony (użytkownik i serwer).

 

Proces uwiarygodniania w systemie Kerberos

Jak wspomniałem wcześniej, bezpieczny serwer systemu Kerberos uwiarygodnia każdą transakcję przed jej przeprowadzeniem w sieci. Jest to, co więcej, jedyny serwer w sieci mogący uwiarygodniać transakcje. Procedura uwiarygodniania przebiega następująco:

1) komputer-klient wysyła do serwera uwiarygodniania (bezpiecznego serwera systemu Kerberos) żądanie wydania mu upoważnienia do uzyskania dostępu do określonego serwera;

2) serwer uwiarygodniania sprawdza prawa dostępu komputera-klienta i określa, czy komputer-klient jest uprawniony do uzyskania dostępu do danego serwera i jego zasobów;

3) jeśli komputer-klient nie ma praw dostępu do serwera lub określonych zasobów, to serwer uwiarygodniania odrzuca żądanie komputera-klienta, co oznacza, że nie wysyła biletu do komputera-klienta;

4) jeśłi komputer-klient ma prawo dostępu, to serwer uwiarygodniania daje mu odpowiednie upoważnienie (określane zazwyczaj jako bilet) zaszyfrowane przy użyciu publicznego klucza komputera-klienta; upoważnienia składają się z biletu dostępu do serwera z zasobami oraz tymczasowego klucza szyfrowania;

5) serwer uwiarygodniania szyfruje bilet (zawierający zarówno informacje o bilecie, jak i klucz sesji) przy użyciu publicznego klucza serwera z zasobami, a następnie wysyła zaszyfrowany w ten sposób bilet do serwera zasobów, który z kolei odszyfrowuje wiadomość i czeka na połączenie komputera-klienta;

6) następnie komputer-klient szyfruje klucz sesji przy użyciu klucza publicznego serwera zasobów i wysyła do niego bilet (składający się z informacji identyfikujących komputer-klient oraz z zaszyfrowanej kopii klucza sesji);

7) serwer zasobów odszyfrowuje wiadomość zawierającą klucz sesji przy użyciu własnego klucza prywatnego; sprawdza klucz sesji nadesłany przez komputer-klient oraz klucz już uzyskany od serwera uwiarygodniania; jeśli klucze są identyczne, to serwer zasobów uwiarygodnia komputer-klient; komputer-klient także może użyć klucza sesji w celu uwiarygodnienia serwera; użytkownicy mogą odtąd używać klucza sesji do symetrycznego szyfrowania wiadomości przesyłanych między sobą lub mogą wymienić oddzielne klucze podscsji, których będą używać do szyfrowania informacji.

 

System Kerberos używa jednego lub kilku serwerów uwiarygodniania (bezpiecznych serwerów) działających na zabezpieczonych fizycznie komputerach głównych. Serwery uwiarygodniania zawierają bazę danych z informacjami o użytkownikach (innymi słowy, baza danych zawiera spis wszystkich użytkowników i serwerów), a także wspólny klucz tajny i klucz publiczny każdego użytkownika. Biblioteki źródłowe dostarczają mechanizmów szyfrowania i implementują protokół Kerberos. Aby wprowadzić funkcję uwiarygodniania przesyłanych danych, typowa aplikacja sieciowa wysyła jedno lub dwa zapytania do biblioteki Kerberos, po których uzyskuje informacje niezbędne do uwiarygodnienia. Wprowadzanie w aplikacji odwołań do biblioteki Kerberos nosi nazwę kerberyzowania aplikacji.

Znane słabe punkty systemu KERBEROS

Jak wiadomo, system Kerberos wydaje uwiarygodnienie na podstawie identyfikatora logowania użytkownika i wspólnego klucza tajnego. Z takim rozwiązaniem wiąże się niebezpieczeństwo oszukania serwera przez hakera. Innymi słowy, włamywacz może sprawić, że bezpieczny serwer będzie go traktował jak uprawnionego użytkownika. Osoba taka może uzyskać wszelkie prawa dostępu. Na przykład można wysłać do bezpiecznego serwera wiadomość z prośbą o przyznanie prawa dostępu do serwera plików. Haker może przechwycić taką wiadomość i przesłać ją następnie do bezpiecznego serwera, który uzna, że to uprawniony użytkownik zażądał uwiarygodnienia. Aby wyeliminować taką możliwość, programiści projektu Athena wprowadzili do niego mechanizm znaczników czasu. Mechanizm ten gwarantuje, że wszystkie wiadomości otrzymywane przez bezpieczny serwer zawierają datę i bezpieczny serwer odrzuca wszystkie te wiadomości, które są przestarzałe o co najmniej 5 minut. Mechanizm znaczników czasu pomaga zapobiec wielu działaniom osób nieuprawnionych. Na rysunku 6 pokazałem sposób odrzucania przestarzałych biletów przez serwer uwiarygodniania.

Nadal jednak system Kerberos pozostaje niezwykle wrażliwy pod innym względem — rozszyfrowywania poza siecią. Włamywacz może przechwycić wiadomość z odpowiedzią serwera przesłaną do użytkownika (zawierającą bilet i zaszyfrowaną przy użyciu publicznego klucza użytkownika). Następnie przy użyciu słownika może on próbować odszyfrować wiadomość poprzez odgadnięcie klucza prywatnego. Włamywacz może obserwować przesyłane wiadomości od dłuższego czasu i w celu zdobycia klucza prywatnego może zastosować metodę ataku czasowego. Jeśli mu się powiedzie i odczyta wiadomość (znacznik czasu lub adres sieciowy), to może złamać klucz prywatny.

 

Serwer uwiarygodniania

Rys. 6. Serwer uwiarygodniania odrzuca przestarzałe bilety

Konieczne założenia czynione przez system

Opisałem najważniejsze słabe punkty systemu Kerberos. Oprócz nich istnieje kilka założeń czynionych przez system Kerberos, określających środowisko, w którym może on właściwie funkcjonować. Mogą one odsłonić przed włamywaczami potencjalne czułe punkty systemu.

• System Kerberos nie oferuje możliwości obrony przed atakami ze strony usług. W systemie tym włamywacz może z łatwością uniemożliwić aplikacji wzięcie udziału we właściwym przeprowadzeniu operacji uwiarygodniania. Wykrywanie ataków tego typu (z których kilka może się wydawać normalnymi sytuacjami awaryjnymi w systemie) i zapobieganie im należy do obowiązków administratorów i użytkowników.

• Ponieważ serwer Kerberos zakłada, że wspólny klucz tajny jest rzeczywiście tajny, użytkownicy w tym systemie muszą bezwzględnie chronić ten klucz. W wypadku skradzenia klucza użytkownika może on posłużyć do podszycia się pod użytkownika lub dowolny serwer.

• System Kerberos nie chroni przed atakami polegającymi na odgadywaniu hasła. Jeśli użytkownik wybierze sobie łatwe hasło, to haker może z łatwością zastosować metodę pozasieciowego ataku przy użyciu słownika i wypróbowywać kolejne zawarte w nim słowa. W tej metodzie skopiowane przez hakera wiadomości są poddawane kolejnym próbom odszyfrowania. Jak wiadomo, użytkownik szyfruje wiadomości przy użyciu klucza generowanego przez system Kerberos na podstawie hasła użytkownika. Teoretycznie, po dostatecznie długim czasie i przy odrobinie szczęścia, haker może odczytać hasło użytkownika ze skopiowanych wiadomości.

 

 Z POWROTEM DO GÓRY STRONY