This is an old revision of the document!
Kerberos
Kerberos je mrežni autentifikacijski protokol čija je svrha međusobna autentifikacija klijenata i poslužitelja u svrhu uspostave sigurne komunikacije, a čiji pristup problemu se svodi na stvaranje servisa čija je jedina zadaća autentifikacija te pomoću kojeg oslobađamo ostale servise od potrebe za održavanjem vlastite baze podataka o svim korisnicima. Kako bi ovakav pristup radio, svi klijenti i poslužitelji moraju posjedovati zajednički tajni ključ registritan kod autentifikacijskog poslužitelja. Ključevi su dugotrajni, odnosno traju tjednima ili čak mjesecima. Kerberos u pravilu koristi UDP port 88 i oslanja se na simetričnu kriptografiju ključa.
Osnovne komponente Kerberosa su:
- Principal - korisnik ili servis koji treba autentificirati.
- Key Distribution Center (KDC) - centralni autentifikacijski server u Kerberos okruženju. Sastoji se od dva dijela:
- Autentifikacijski poslužitelj (Authentication Server (AS)) - obavlja inicijalnu autentifikaciju te izdaje inicijalni ticket za TGT (Ticket Granting Ticket)
- Ticket Granting Service (TGS) - upravlja zahtjevima za tickete
- Domena (Realm) - kerberosova administrativna domena, definira doseg autentifikacije (npr. Domena.com)
- Baza podataka - AS verificira pristupne dozvole svih korisnika u bazi
Autentifikacija se se odvija u sljedećim koracima:
- Korisnik šalje upit o autentifikaciji AS-u i zahtjeva TGT
- AS se priprema za povezivanje klijenta i poslužitelja, odnosno korisnika i servisa.
- Generira se novi tajni ključ kojeg će dijeliti samo korisnik i servis
- AS šalje korsiniku dvodijelnu poruku. Prvi dio sadrži novi ključ enkriptiran pomoću trajnog ključa korisnika. Drugi dio sadrži taj isti novi ključ, zajedno s imenom korisnika, enkriptirane pomoću trajnog ključa servisa. U kerberosu prvi dio poruke često nazivamo vjerodajnicama (eng. credentials), drugi ticketom, a novi ključ ključem sesije (eng. session key). U ovom trenutku, samo korisnik ima ključ sesije.
- Korisnik generira novu poruku, odnosno autentifikator, i kriptira je ključem sesije. Poruka i ticket se zatim šalju servisu. Servis dekriptira ticket dugotrajnim ključem i time dolazi do ključa sesije, koji se zatim koristi za dekripciju autentifikatora. Servis vjeruje AS-u, tako da zna da je samo legitiman korisnik mogao poslati poruku. Ovime je proces autentifikacije završen.
Kerberos je podložan određenim napadima, kao na primjer krađi TGT-a ili napadima s poznatim jasnim tekstom. Kako bi se rizik od krađe ticketa smanjio, ticketi tipično imaju „rok trajanja“ od 8 sati. Također, postoje razna proširenja kerberosa, kao npr. PKINIT (kerberos with Public Key cryptography for INITial authentication), koje poboljšavaju sigurnost.
IZVORI:
[1] https://web.mit.edu/kerberos/
[2] https://wpollock.com/AUnixSec/MoronsGuideToKerberos.htm
[3] https://dl.packetstormsecurity.net/papers/general/kerberoasting.pdf