Kerberos – Protokół Uwierzytelniania i Autoryzacji
Kerberos to protokół zaprojektowany w Massachusetts Institute of Technology (MIT) do zapewnienia bezpieczeństwa w sieciach komputerowych poprzez uwierzytelnianie i autoryzację. Protokół oparty jest na systemie centralnej dystrybucji kluczy i umożliwia integrację mechanizmów bezpieczeństwa w aplikacjach poprzez różne interfejsy programistyczne, w tym GSS-API dla Javy.
Historia i Rozwój
Kerberos został stworzony w MIT w latach 80. XX wieku, pierwotnie dla projektu Athena. Protokół przeszedł kilka wersji, z których wersja 5, opracowana w 1993 roku, stała się standardem. Wersja ta wprowadziła istotne poprawki w zakresie bezpieczeństwa w porównaniu do wcześniejszych wersji.
W 2005 roku zaktualizowano specyfikację, wprowadzając m.in. szyfrowanie za pomocą AES oraz nową edycję specyfikacji GSS-API. MIT opublikował ogólnodostępną implementację Kerberosa, a w 2007 roku powołano konsorcjum wspierające jego dalszy rozwój, z udziałem m.in. Oracle, Microsoft i Google.
Opis Protokółu
Kerberos wykorzystuje proces uwierzytelnienia, w którym klient komunikuje się z serwerem uwierzytelniającym (AS) oraz serwerem usług (SS) przez centralne KDC. Proces ten obejmuje:
- Uwierzytelnienie klienta i wygenerowanie unikatowego identyfikatora TGT przez AS.
- Weryfikację i szyfrowanie kluczy sesyjnych, umożliwiające logowanie do serwera usług.
Wady i Ograniczenia
- Wymagana jest ciągła dostępność KDC; jego awaria uniemożliwia logowanie nowych użytkowników.
- Ograniczenia czasowe wymagają synchronizacji zegarów hostów, co może prowadzić do problemów z uwierzytelnieniem.
- Brak standardu dla protokołu administracyjnego oraz różnice w implementacjach mogą stwarzać problemy.
- Zagrożenia związane z symetrycznym szyfrowaniem, gdy KDC może stać się celem ataków.
Luki w Zabezpieczeniach
Początkowo Kerberos używał algorytmu DES, który obecnie uznawany jest za słaby. W 2014 roku wykryto lukę w implementacji KDC w systemach Windows, co mogło prowadzić do nadużyć uprawnień przez użytkowników. Aktualizacje są istotne dla zapewnienia bezpieczeństwa protokołu.