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:
Autentifikacija se odvija u sljedećim koracima:
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.
Napadač može započeti zahtjev za autentifikacijom kao neki korisnik i kao odgovor će dobiti poruku šifriranu tajnim ključem odnosno lozinkom korisnika (poruka 2a). Uz pomoć te poruke, napadač može na svom računalu automatizirano pokušati pogoditi lozinku korisnika, kada se poruka ispravno dešifrira znat će da je pogodio lozinku. Budući da se napad odvija lokalno, na napadačevom računalu, napad je višestruko brži od “online” pogađanja lozinki te sustav ne može primijeniti nikakva ograničenja (npr. da zaključa pristup korisničkom računu nakon 10 neuspjelih pokušaja).
Kako bi izbjegli ovakav napad, neke implementacije Kerberosa (npr. Windows Active Directory implementacija) su nadogradile protokol tzv. “predautentifikacijom” - incijalni zahtjev za autentifikacijom mora također biti šifriran tajnim ključem korisnika. Ako je ova mjera implementirana, napadač ne može dobiti poruke šifrirane tajnim ključem korisnika, osim ako je u poziciji gdje može presretati autentifikacijski promet legitimnog korisnika.
Pri Kerberos autentifikaciji na neki servis, korisnik prima “karticu za servis” (korak 5b) koja je šifrirana tajnim ključem servisa. Taj tajni ključ je uglavnom dugi, nasumično generirani ključ, koji se uz to i periodički mijenja. Međutim, ponekad se radi o kratkoj lozinci koju je postavio čovjek. Napadač može započeti autentifikaciju na neki servis, dobiti “karticu za servis” i onda na svom računalu pokušati pogoditi tajni ključ servisa. Ako uspije, može lažirati kartice za servis tako da se servisu može predstaviti kao bilo koji korisnik.
Općenito, trebalo bi izbjegavati to da ljudi postavljaju tajne ključeve servisa, ali ako je to potrebno oni bi trebali biti dugački i nasumično generirani.