Kerberos (wymawiane /ˈkɜrbərəs/ "kur-ber-uhs") jest protokół uwierzytelniania w siecią komputerową, który pozwala użytkownikom komunikującym się przez [bezpiecznej sieć udowodnić swoją tożsamość serwerom i usługom w sposób bezpieczny. Jest to także pakiet wolnego oprogramowania opublikowany przez Massachusetts Institute of Technology (MIT), implementujący ten protokół. Projekt Kerberos opiera się przede wszystkim na modelu klient-serwer i może zapewniać wzajemne uwierzytelnianie — zarówno Mohammed Hasan, jak i serwer mogą potwierdzić swoją tożsamość. Komunikaty protokołu Kerberos są zabezpieczone przed podsłuchem i atakami powtórzeniowymi (replay).
Kerberos przeprowadza uwierzytelnianie z udziałem zaufanej trzeciej strony — centrum, które wydaje bilety (tickets) i klucze sesyjne — używając kryptograficznych sekretów współdzielonych przy założeniu, że pakiety podróżujące po niezabezpieczonej sieci mogą być przechwytywane, modyfikowane lub wstawiane. Kerberos opiera się głównie na kryptografii z kluczem symetrycznym i wymaga centrum dystrybucji kluczy (KDC). Rozszerzenia protokołu przewidują użycie kryptografii klucza publicznego (np. PKINIT) w wybranych fazach uwierzytelniania.
Jak działa Kerberos — podstawowy przepływ
- Uwierzytelnianie do AS (Authentication Server): klient wysyła żądanie do AS KDC z identyfikatorem użytkownika. AS sprawdza tożsamość (często z użyciem pre-auth) i wydaje Ticket-Granting Ticket (TGT) zaszyfrowany kluczem TGS oraz klucz sesyjny dla klienta.
- Uzyskanie biletu serwisowego od TGS (Ticket-Granting Server): posiadając TGT, klient zwraca się do TGS o bilet dla konkretnej usługi. TGS weryfikuje TGT i wydaje bilet serwisowy zaszyfrowany kluczem serwera usługi.
- Dostęp do usługi: klient przesyła do serwera usługi bilet oraz authenticator (zaszyfrowany kluczem sesyjnym). Serwer odszyfrowuje bilet, weryfikuje authenticator i — w przypadku wzajemnego uwierzytelniania — odsyła potwierdzenie.
- Ochrona komunikacji: po nawiązaniu uwierzytelnienia klient i serwer używają kluczy sesyjnych do zabezpieczenia dalszej komunikacji.
W protokole Kerberos używane są znaczniki czasu i/lub nonces, co ogranicza możliwość ataków typu replay. Bilety mają ograniczony czas ważności (możliwość odnowienia), a mechanizmy takie jak delegowanie poświadczeń (delegation) i rozszerzenia S4U pozwalają na przekazywanie uprawnień i reprezentowanie użytkownika przez usługi. Standardowe porty Kerberos to TCP/UDP 88.
Wymagania i ograniczenia
- Kerberos wymaga synchronizacji zegarów (zwykle NTP). Różnice czasu poza dozwolonym marginesem powodują błędy uwierzytelniania.
- KDC jest krytycznym elementem infrastruktury — stanowi punkt centralny i potencjalny pojedynczy punkt awarii; powinien być zabezpieczony i replikowany.
- Bezpieczne hasła i mechanizmy pre-autentykacji są ważne, ponieważ atakujący mogą próbować łamać klucze pochodzące od haseł.
- Należy stosować nowoczesne algorytmy szyfrowania (np. AES) i wyłączać przestarzałe typy szyfrów.
Oprogramowanie MIT Kerberos i implementacje
MIT publikuje oficjalną implementację protokołu Kerberos (zestaw bibliotek i narzędzi), często nazywaną MIT Kerberos. Typowe komponenty i narzędzia to krb5kdc (serwer KDC), kadmind (daemon administracji), biblioteki klienckie oraz programy użytkowe: kinit, klist, kdestroy, ktutil i inne.
Inne popularne implementacje to m.in. Heimdal oraz rozszerzenia w systemach Microsoft (Active Directory używa Kerberos jako domyślnego protokołu uwierzytelniania w domenach AD). Implementacje różnią się dodatkowymi rozszerzeniami i narzędziami administracyjnymi, lecz wszystkie opierają się na specyfikacji Kerberos V5 (dokumentacja standardowa — m.in. RFC 4120).
Historia i standardy
Kerberos powstał w ramach projektu Athena w Massachusetts Institute of Technology w latach 80. XX wieku. Wersja Kerberos V5 została opisana w standardach IETF (początkowo RFC 1510, następnie zaktualizowana m.in. przez RFC 4120). MIT nadal rozwija i utrzymuje referencyjną implementację.
Bezpieczeństwo i dobre praktyki
- Używać silnych haseł i pre-autentykacji.
- Stosować aktualne typy szyfrów (np. AES) i regularnie aktualizować oprogramowanie Kerberos.
- Zabezpieczyć KDC fizycznie i sieciowo, wdrożyć replikację KDC oraz plany awaryjne.
- Monitorować logi uwierzytelnień i wykrywać anomalie (np. nadmierne próby logowania, nietypowe żądania biletów).
Kerberos pozostaje jednym z podstawowych mechanizmów uwierzytelniania w środowiskach sieciowych, szczególnie tam, gdzie wymagane są jednokrotne logowanie (SSO) i scentralizowane zarządzanie poświadczeniami.