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. Stvara se zaseban servis za autentifikaciju pa ostali servisi ne moraju održavati vlastitu bazu podataka o svim korisnicima. Kako bi ovakav pristup radio, svi klijenti i poslužitelji moraju posjedovati zajednički tajni ključ registriran 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
- Centar za distribuciju ključeva (Key Distribution Center, KDC) - centralni autentifikacijski poslužitelj u Kerberos okruženju, sadrži:
- Autentifikacijski poslužitelj (Authentication Server, AS) - obavlja inicijalnu autentifikaciju te izdaje inicijalnu karticu (ticket)
- Distributer kartica (Ticket Granting Service ,TGS) - upravlja zahtjevima za kartice
- 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:
1. Korisnik započinje proces autentifikacije tako da pošalje zahtjev autentifikacijskom poslužitelju
2. Autentifikacijski poslužitelj generira novi tajni ključ i šalje dvodijelnu poruku:
* a) prvi dio sadrži kljuć sjednice šifriran tajnim ključem korisnika (često je to sažetak lozinke korisnika) * b) drugi dio sadrži “Karticu za izdavanje kartica” (engl. Ticket-granting ticket) šifriranu tajnim ključem
distributera kartica . U "kartici za izdavanje kartica" nalazi se i identifikator korisnika, rok trajanja kartice i ključ sjednice.
3. Korisnik dešifrira prvi dio poruke svojim tajnim ključem i tako dobiva ključ sjednice koji koristi za šifriranje komunikacije s distributerom kartice.
4. Korisnik šalje zahtjev za autentifikaciju na neki servis (npr. neku web aplikaciju) distributeru kartica. Zahtjev se sastoji od:
* a) Poruke opisane u dijelu “2b” i identifikatora servisa na koji se korisnik želi autentificirati. Podsjetimo se da je ta poruka opisana u dijelu “2b” šifrirana tajnim ključem distributera kartice. * b) Identifikator korisnika i vremenska oznaka
5. Distributer kartica dešifrira poruku “4a” svojim tajnim ključem te tako dobije ključ sjednice, zatim dešifrira poruku “4b”. Uspoređuju se korisnički identifikatori iz poruka “4a” i “4b”, ako se poklapaju, distributer kartica zna da je zahtjev autentičan. Također se uspoređuju vremenska oznaka i rok trajanja. Ako se distirbuter kartica uvjerio u autentičnost podataka šalje:
* a) Ključ sjednice za komunikaciju sa servisom * b) Karticu za servis (engl. service ticket) - šifriranu tajnim ključem servisa. U njoj se nalazi korisnički identifikator, vremenska oznaka te ključ iz dijela “5a”
6. Korisnik servisu pošalje:
* a) Karticu za servis (iz dijela 5b) * b) Korisnički identifikator - šifriran ključem iz dijela 5a
7. Servis dešifrira “karticu za servis” pomoću svog tajnog ključa i tako dobije ključ kojim može dešifrirati poruku “6b”. Uspoređuje korisničke identifikatore i vremenske oznake iz poruka 6a i 6b i ako je sve u redu, korisnik je autentificiran
Uloga kartice slična je ulozi akreditacije na poslovnim događajima. Da bismo dobili akreditaciju, moramo pokazati osobnu iskaznicu. Nakon toga za potrebe identificiranja pokazujemo samo akreditaciju, a osobnu iskaznicu više ne vadimo. Ako izgubimo akreditaciju, jednostavno zatražimo novu tako što opet pokažemo osobnu iskaznicu nadležnoj osobi. Analogno, korisnik jednom upiše lozinku i dobije karticu te nakon toga više nema potrebe za upisivanjem lozinke, već se autentifikacija radi preko kartice. Isto tako, korisnik može u bilo kojem trenutku tražiti novu karticu. Naravno, kad je u pitanju internetska sigurnost, potrebne su dodatne mjere, stoga se uvodi ograničeno vrijeme trajanje kartice (8 do 10 sati) i još se za dodatnu autentifikaciju koristi ključ sesije koji je jednokratan.