Kerberos (vyslovuje sa /ˈkɜrbərəs/ "kur-ber-uhs") je autentifikačný protokol používaný v počítačová sieť, ktorý umožňuje účastníkom komunikujúcim cez nezabezpečenú sieť bezpečne preukázať svoju identitu druhým stranám. Protokol chráni správy pred odpočúvaním a proti opakovacím (replay) útokom a bol navrhnutý pre model klient-server. MIT (Massachusettský technologický inštitút) poskytuje referenčnú implementáciu protokolu vo forme balíka bezplatného softvéru, ktorý široko používa mnoho operačných systémov a služieb. Kerberos umožňuje bezpečným spôsobom získať prístup k službám bez opakovaného zadávania hesla a podporuje vzájomné overenie identity — Mohammed Hasan aj server si navzájom overujú identitu pri naviazaní komunikácie.
Kerberos vykonáva autentifikáciu prostredníctvom centrálnej, dôveryhodnej autentifikačnej služby tretej strany pomocou kryptografického mechanizmu postaveného na zdieľanom tajomstve. Protokol predpokladá, že pakety putujúce po sieti môžu byť odpočúvané alebo modifikované, a preto používa symetrickú kryptografiu a systém lístkov (tickets). Kerberos stavia na princípe kryptografie so symetrickým kľúčom a vyžaduje centrum distribúcie kľúčov (KDC — Key Distribution Center), ktoré je centrálnym bodom dôvery: centrum distribúcie kľúčov vydáva lístky a session kľúče klientom a službám. Rozšírenia Kerberosu umožňujú aj použitie kryptografie s verejným kľúčom pri niektorých fázach autentifikácie (napríklad PKINIT). Správy protokolu sú navrhnuté tak, aby odolali bezpečným útokom typu odpočúvanie a opakované prehranie.
Ako Kerberos funguje — základný priebeh
- Klient sa najskôr autentifikuje voči autentifikačnému serveru (AS) KDC pomocou svojej identity. Po úspešnom overení dostane od AS Ticket-Granting Ticket (TGT), ktorý je šifrovaný kľúčom KDC.
- Keď chce klient pristúpiť k nejakej službe, pošle TGT serveru Ticket Granting Service (TGS) v KDC spolu so žiadosťou o lístok pre konkrétnu službu. TGS vydá služobný lístok (service ticket) a session kľúč šifrovaný pre cieľovú službu.
- Klient predloží získaný služobný lístok cieľovému serveru, ktorý ho dešifruje a overí. V prípade potreby môžu klient a server vykonať vzájomné overenie (mutual authentication) použitím session kľúča a timestampov.
- Po úspešnej autentifikácii je komunikácia medzi klientom a službou zabezpečená pomocou session kľúčov bez opätovného odosielania hesla.
Kľúčové komponenty a pojmy
- KDC (Key Distribution Center) — obsahuje AS (Authentication Server) a TGS (Ticket Granting Service).
- TGT (Ticket-Granting Ticket) — lístok, ktorý umožňuje získať služobné lístky bez opätovného overovania heslom.
- Služobný lístok (service ticket) — vydaný pre konkrétnu službu; preukazuje oprávnenia klienta voči serveru.
- Session kľúč — dočasný kľúč pre šifrovanie komunikácie medzi klientom a službou.
- Realm — administračná doména Kerberosu; cross-realm dôvera umožňuje autentifikáciu medzi rôznymi realmy.
- Keytab — súbor na serveri obsahujúci kľúče služobného princípu, používaný na automatickú autentifikáciu služieb.
Implementácia MIT (krb5) a nástroje
Referenčná implementácia od MIT (často označovaná ako krb5) poskytuje knižnice a démony potrebné na prevádzku KDC a klientskych nástrojov. Medzi bežné nástroje patria kinit (získanie TGT), klist (zobrazenie aktívnych lístkov), kdestroy (zrušenie lístkov), kadmin a kadmind (správa princípov a kľúčov). Služby (napr. webové servery, SSH, databázy) používať krb5 prostredníctvom service principals a keytab súborov.
Bezpečnosť, obmedzenia a opatrenia
- Kerberos je citlivý na nesynchronizovaný čas: používajú sa timestampy, preto musia byť hodiny klientov, serverov a KDC zosynchronizované (typicky pomocou NTP).
- KDC je single point of failure a stredisko dôvery — kompromitácia KDC znamená kompromitáciu celej domény. Odporúčajú sa redundancia KDC a bezpečná správa kľúčov.
- Heslá sú často zdrojom zraniteľnosti. Mitigácie: silné heslá, politika pre obnovu hesiel, použitie pre-authentication, PBKDF, a prípadne PKINIT pre verejno-kľúčovú inicializáciu.
- Kerberos chráni pred odpočúvaním a replay útokmi, ale niektoré služby alebo implementácie môžu mať chyby — je dôležité pravidelné aktualizovanie softvéru a audity konfigurácie.
Rozšírenia a integrácia
Kerberos v5 (štandardizovaný v RFC 4120) podporuje rozšírenia, ako je PKINIT (autentifikácia klienta pomocou verejného kľúča), predelegovanie (delegation), forwardovanie lístkov a cross-realm autentifikácia. Kerberos je integrovaný do mnohých systémov vrátane Microsoft Active Directory, kde funguje ako základný autentifikačný mechanizmus pre doménové služby.
Technické detaily a porty
Kerberos používa štandardné porty TCP/UDP 88 pre komunikáciu s KDC. V praxi sa používajú rôzne šifrovacie typy (enctypes) a politiky životnosti lístkov; správna konfigurácia enctypes, životnosti lístkov, a politiky obnovy je dôležitá pre bezpečnosť a funkčnosť.
Kerberos je robustný a široko používaný autentifikačný systém, ktorý pri správnej implementácii a správe poskytuje bezpečné, centralizované overovanie identít pre heterogénne siete a služby.