Tomasz Okniński 2003r.

Kerberos

Spis treści
  1. Tytułem wstępu
  2. Podstawowe założenia
  3. Zasada działania
  4. System nazewnictwa
  5. Różnice między Kerberosem 4 i 5
  6. Zapobieganie złamaniu bezpieczeństwa
  7. Inne darmowe wersje Kerberosa

1. Tytułem wstępu...

Internet nie jest bezpiecznym miejscem. Otwarte kanały łączności umożliwiają podsłuchiwanie niezaszyfrowanych danych i haseł. W ten sposób osoby trzecie mogą uzyskać dostęp do tajnych informacji.
Próbą powstrzymania tego było stworzenie firewalla. Idea firewalla zakłada jednak, że "źli faceci" są na zewnątrz chronionej sieci i stamtąd próbują się włamać. Niestety jest to często błędne założenie, a ponadto firewall utrudnia pracę użytkownikom i może całkiem uniemożliwić korzystanie z niektórych aplikacji (Firewall jest w istocie łagodnym podejściem do zastosowania w praktyce twierdzenia, że najbezpieczniejszy komputer to taki, który nie jest podłączony do sieci i w dodatku jest w ogóle wyłączony).

System autentykacji Kerberos powstał na MIT (Massachusetts Institute od Technology) aby zapewnić użytkownikom otwartej sieci potrzebne im bezpieczeństwo przechowywanych i przesyłanych danych przez udzielanie do nich dostępu tylko uprawnionym jednostkom.
Kerberos nie zajmuje się jednak przechowywaniem danych, a jedynie przyznaje (bądź nie) dostęp do określonych usług sieciowych. Korzysta przy tym z bazy danych o użytkownikach i dostępnych usługach oraz szyfrowania komunikacji przesyłanej po otwartych łączach. Dzięki temu klienci mogą bezpiecznie korzystać z danych i usług udostępnianych w Internecie i mniejszych sieciach intranetowych.

Obecnie wersja 4 została uznana za przestarzałą i jej rozwój zakończył się na wersji "patchlevel 10". W tej chwili prace trwają jedynie nad wersją 5.
Kerberos 4 patchlevel 10 można uzyskać w sposób opisany tu:
ftp://athena-dist.mit.edu/pub/kerberos/README.KRB4
Najnowszą wersją Kerberosa w wersji 5 jest 1.2.7 dostępny pod http://web.mit.edu/kerberos/www/

2. Podstawowe założenia

Ważne informacje

3. Zasada działania

3.1 Uzyskanie TGT - zalogowanie do Kerberosa

3.2 Uzyskanie biletu do usługi

3.3 Uzyskanie dostępu do usługi

W Kerberosie bardzo ważna jest synchronizacja czasu pomiędzy klientami i serwerami działającymi w systemie. Różnice powyżej kilku minut mogą uniemożliwić dostęp do usług.
Dzieje się tak z tego powodu, że jeśli rozbieżność czasu z biletu i czasu na serwerze jest zbyt duża, serwer traktuje pakiet jako próbę ponownego wysłania żądania (tzw. replay)
Aby zabezpieczyć się przed włamaniami, serwery utrzymują bazę danych odebranych już żądań dostępu do usług, wraz z ich stemplami czasowymi. Dzięki temu "skradzione bilety" nie mogą być jeszcze raz wysłane, ani zostać zachowane do wysłania w późniejszym terminie.

3.4 Autentykacja serwera

Po otrzymaniu dostępu do serwisu, klient może od serwera domagać się jego uwierzytelnienia.
Wtedy serwer zwiększa stempel czasowy z autentykatora o 1, szyfruje to przy pomocy klucza sesji i odsyła klientowi.
To potwierdza, że serwer jest w posiadaniu klucza sesji, gdyż odszyfrował bilet (w którym był właśnie klucz sesji), który był zakodowany przez KDC hasłem zrozumiałym tylko dla niego.
To oznacza również, że serwer odczytał autentykator, który był zakodowany kluczem sesji. Jest to nieco wtórne sprawdzenie znajomości klucza sesji, gdyż jest nim przecież kodowana odpowiedź. Mimo to, jest ono również używane.


Sposób otrzymania dostępu do usługi ABCD

4. System nazewnictwa

Częścią autenykacji w Kerberosie jest potwierdzenie, że użytkownik jest tym za kogo się podaje. Dlatego musi mieć swoją nazwę.
Nazwa w Kerberosie 4 wygląda tak:

nazwa.wcielenie@królestwo

nazwa (name)
nazwa użytkownika
wcielenie (instance)
służy do rozróżniania wystąpień nazwy - może być to np. nazwa hosta albo rodzaj uprzywilejowania (np. root)
królestwo (realm)
środowisko (domena) obsługiwane przez pojedynczą bazę danych autentykacyjnych
Ponadto każdy element nazwy może się składać z 39 znaków i nie może zawierać kropek (.)

W Kerberosie 5 nazwy mają inną budowę:

nazwa@królestwo
przy czym nazwa składa się z ciągu komponentów oddzielonych ukośnikami (/) i może być dowolnie długa i zawierać kropki (.)
Najczęściej utrzymywana jest wtedy struktura drzewa w celu zhierarchizowania komunikacji między królestwami

Komunikacja między Królestwami
Użytkownik może otrzymać dostęp do zasobu spoza swojego królestwa. Musi w tym celu zgłosić się do swojego KDC po TGT do serwera KDC z innego królestwa. Dalej już zgłasza się po bilety w odpowiednie miejsce.
Komunikacja między królestwami może się odbywać, jeśli dane 2 królestwa posiadają wspólny, ustalony wcześniej, klucz do szyfrowania komunikatów.
Niestety w Kerberosie 4, jeśli klient chce przejść przez wiele królestw to musi za każdym razem otrzymywać TGT dla kolejnych KDC i może wymagać to aż O(n^2) komunikatów.
W Kerberosie 5 ten koszt został zredukowany do O(log(n)) dzięki wykorzystaniu możliwego połączenia bezpośrednio z docelowym królestwem bądź którymś z sąsiednich.


Połączenia między Królestwami w wersji 4


Połączenia między Królestwami w wersji 5

5. Różnice między Kerberosem 4 i 5

Wady Kerberosa 4

Zmiany w Kerberosie 5

6. Zapobieganie złamaniu bezpieczeństwa

7. Inne darmowe wersje Kerberosa


Tomasz Okniński 2003r.