Kerberos
Wprowadzenie
Kerberos Key Exchange jest systemem bezpiecznej wymiany danych. Jest on obecnie bardzo rozpowszechniony i udostępniany jako składowa wielu poważnych systemów operacyjnych. Poza tym jest to przykład dobrze pomyślanej, praktycznej realizacji bezpieczeństwa danych w systemie rozproszonym.
Kerberos opracowany został w Massachusetts Institute of Technology, w ramach projektu Athena. Jest to miejsce w którym miało początki wiele nowatorskich projektów informatycznych, w szczególności związanych z technologiami sieciowymi.
Teoretyczne podstawy protokołu Kerberos powstały na początku lat osiemdziesiątych, zaś zaimplementowany został w latach 1987/88. Od początku funkcjonowania system był intensywnie rozwijany i nie notował przypadków złamania zabezpieczeń.
Założenia systemu Kerberos
Kerberos realizuje bezpieczeństwo w sieci w trzech aspektach: umożliwia weryfikację tożsamości komunikujących się stron, zapewnia integralność przesyłanych danych, zapewnia poufność danych.
System Kerberos
Działa w środowisku rozproszonym, w którym wyznawana jest zasada maximum zaufania do fizycznego bezpieczeństwa centralnego serwera oraz jego niezawodności oraz
-
braku zaufania do zabezpieczeń systemu operacyjnego klienta, poprawności jego adresu oraz fizycznemu bezpieczeństwu sieci.
A bezpieczeństwo jest uzyskiwane dzięki kierowaniu się następującymi zasadami:
- Żadna tajna informacja (typu hasło użytkownika w protokole z ustalonym hasłem) nie powinna być transmitowana niebezpiecznymi kanałami (np. niechronionymi łączami szeregowymi czy sieciowymi)
- Żadna tajna informacja (hasła, klucze tajne) nie powinna być przechowywana w systemie. Jeżeli jednak jest taka konieczność to informacja ta powinna być starannie zabezpieczona przed nieupoważnionym dostępem
- Powinno być możliwe dostatecznie szybkie wykonywanie protokołu przez biorące w nim udział strony. Wykonanie protokołu nie powinno nastręczać użytkownikowi problemów;
- Protokół powinien być tak skonstruowany, aby w razie potrzeby umożliwiał uwierzytelnianie obustronne.
Istnieje też kilka założeń czynionych przez system Kerberos, określających środowisko, w którym może on właściwie funkcjonować. Odsłaniają one 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 niektóre mogą wydawać się normalnymi sytuacjami awaryjnymi w systemie) i zapobieganie im należy do obowiązków administratorów i użytkowników.
- Ponieważ serwer Kerberos, że wspólny klucz tajny jest w rzeczywistości 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żeli użytkownik wybierze sobie łatwe hasło, haker może z łatwością zastosować metodę pozasieciowego ataku przy użyciu słownika. W tej metodzie skopiowane przez hakera wiadomości są poddawane kolejnym próbom odszyfrowania: 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, haker może odczytać hasło użytkownika ze skradzionych wiadomości
Koncepcja techniczna
W systemie Kerberos używa się jednego komputera wyposażonego w niezwykle sprawne zabezpieczenia, który znajduje się w pomieszczeniu strzeżonym 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 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. Projektanci systemu wykorzystali fakt, że łatwo jest utrzymać jeden całkowicie bezpieczny serwer (w przeciwieństwie do zabezpieczania wszystkich serwerów sieci)
Istota systemu polega na wydawaniu przez uprawniony centralny serwer biletów (tickets) do konkretnych usług sieciowych. Użytkownik chcąc np. przeczytać poczty musi uzyskać bilet umożliwiający dostęp do serwera poczty. Uzyskanie biletu wymaga każdorazowo weryfikacji tożsamości, przez podanie hasła. Bilety są ważne tylko przez określony czas (zwykle do kilkunastu godzin), tak więc nawet kradzież biletu, jako zjawisko jednostkowe nie ma większego wpływu na bezpieczeństwo systemu. Bilety są szyfrowane. Klient uzyskuje bilet, którym posłuży się do uzyskania dostępu do danego serwera, nie może jednak biletu ani odkodować, ani tym bardziej zmieniać.
Informacje uwierzytelniające oraz bilety szyfrowane są przy pomocy algorytmu DES. Żadna poufna informacja nie jest nigdy przekazywana otwartym tekstem.
Charakterystyczną cechą protokołu Kerberos jest to, że system bezpieczeństwa jedynie pośredniczy w nawiązaniu łączności pomiędzy klientem a serwerem, dalsza komunikacja odbywa się już bez udziału Kerberosa, jest to korzystne ze względu na wydajność.
W praktyce realizuje się wariant "biletu na bilety", który otrzymuje użytkownik rozpoczynając sesję i uwierzytelniając się hasłem. Wydawanie biletów do konkretnych usług jest już zautomatyzowane i nie wymaga interwencji użytkownika
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 sieci były fizycznie wyposażone w systemy ochrony.
Działanie systemu
Załóżmy, że użytkownik chce uzyskać dostęp do plików umieszczonych na serwerze plików.
- Użytkownik przesyła serwerowi uprawnień żądanie "biletu na bilety", podaje identyfikator.
- Serwer generuje "bilet na bilety", szyfruje go kluczem publicznym serwera biletów, generuje klucz sesji i całość szyfruje kluczem publicznym użytkownika, po czym wysyła do użytkownika
W bilecie znajdują się także informacje służące weryfikacji: czas utworzenia biletu, czas ważności oraz klucz sesji
- Użytkownik ze swojego hasła generuje klucz prywatny, którym może rozkodować bilet do serwera biletów (nadal zakodowany) i klucz sesji. To plus nazwa serwera plików do którego użytkownik chce uzyskać dostęp zostają wysłane do serwera biletów.
- Serwer biletów odkodowuje bilet i weryfikuje autentyczność "biletu do na bilety" porównując klucz sesji otrzymany od użytkownika z kluczem sesji zawartym w bilecie do serwera biletów
- W razie sukcesu serwer biletów generuje bilet do konkretnego serwera plików, który szyfruje kluczem publicznym serwera plików, zamieszczając w nim uprzednio nowo utworzony klucz sesji i po zaszyfrowaniu wszystkiego starym kluczem sesji wysyła to do użytkownika
- Użytkownik odkodowuje starym kluczem sesji bilet do serwera plików (zakodowany cały czas kluczem serwera plików) oraz nowy klucz sesji
- Wysyła zakodowany bilet do serwera plików
- Serwer plików odkodowuje bilet kluczem prywatnym i weryfikuje jego autentyczność
- W tym momencie użytkownik i serwer plików jako jedyni dysponują nowym kluczem sesji.
- Następuje wymiana zaszyfrowanych za pomocą nowego klucza sesji, informacji między użytkownikiem a serwerem plików
Słabe strony i wady protokołu Kerberos
- Serwer upoważnień oraz serwery biletów są najwrażliwszymi ogniwami systemu. Muszą być chronione fizycznie, gdyż ich uszkodzenie lub penetracja byłyby katastrofalne dla całej sieci
- Jest niezbyt dobrze przystosowany do pracy w środowiskach liczących bardzo wielu użytkowników. Spowodowane jest to powstaniem wąskiego gardła w serwerze uprawnień . Trudno sobie na przykład wyobrazić weryfikacjię tożsamości wszystkich użytkowników Internetu przy pomocy systemu Kerberos.
- Możliwe jest obejście systemu poprzez np. oszukanie bezdyskowej stacji roboczej, która swój system pobiera z serwera plików, co może się skończyć zainstalowaniem zmienionej wersji Kerberosa umożliwiającej dostęp do danych niepowołanym osobom.
- Jest wrażliwy na rozszyfrowanie poza siecią. Włamywacz może przechwycić wiadomość z odpowiedzią serwera przesłaną do użytkownika (zawierającą bilet i zaszyfrowaną przy pomocy klucza użytkownika. Następnie przy użyciu słownika może on próbować odszyfrować wiadomość poprzez odgadnięcie klucza prywatnego użytkownika.
Przydatne linki dotyczące Kerberosa
Lista dyskusyjna kerberos@mit.edu ( ZAPISY ),
lub grupa news:comp.protocols.kerberos
Massachusetts Institute of Technology
Przewodnik po Kerberosie
Jak "zkerberyzować" sieć
Coś o kompilacji systemu
ghost.isi.edu