Kerberos folosește ca bază protocolul Needham-Schroeder. Acesta utilizează un terț de încredere pentru autentificare, cunoscut sub numele de "centru de distribuție a cheilor (KDC)", care este format din două părți separate din punct de vedere logic: un server de autentificare (AS) și un server de acordare a biletelor (TGS). Kerberos funcționează pe baza unor "bilete" (denumite bilete Kerberos) care servesc la dovedirea identității utilizatorilor.
Baza de date Kerberos: Centrul de distribuire a cheilor (KDC) menține o bază de date cu chei secrete; fiecare entitate din rețea - client sau server - împarte o cheie secretă cunoscută doar de ea însăși și de KDC. Cunoașterea acestei chei servește la dovedirea identității fiecărei entități. Pentru comunicarea dintre două entități, KDC generează o cheie de sesiune pe care acestea o pot utiliza pentru a-și securiza comunicațiile.
Termenul "server Kerberos" se referă în general la KDC. Din motive de fiabilitate, este posibil să existe KDC-uri de rezervă. Acestea sunt denumite "servere Kerberos slave". Toți sclavii își sincronizează bazele de date de la serverul Kerberos principal.
Termenul "server de aplicații Kerberized" se referă, în general, la programele Kerberized cu care clienții comunică folosind bilete Kerberos pentru autentificare. De exemplu, serverul Kerberos telnet este un exemplu de server de aplicații Kerberizat . În timp ce termenul "aplicații Kerberizate" este utilizat pentru a se referi la partea client a serverului de aplicații Kerberizate , De exemplu, clientul Kerberos telnet este un exemplu de aplicații Kerberizate
Securitatea protocolului depinde în mare măsură de:
- Participanții menținând o sincronizare slabă a timpului.
- O declarație de autenticitate de scurtă durată: biletele Kerberos.
Descriere simplificată a protocolului
Se vor utiliza următoarele abrevieri:
· AS = Server de autentificare
· TGS = Ticket Granting Server
· SS sau Server = Service Server (Utilizator al serverului care solicită serviciul său, cum ar fi un server de imprimare, un server de fișiere etc...)
· TGT = Ticket Granting Ticket (bilet Kerberos pentru TGS. Pregătit de AS, apoi utilizat pentru a vorbi cu TGS).
Pe scurt, clientul se autentifică la AS folosind un secret partajat pe termen lung și primește un bilet de la AS. Ulterior, clientul poate utiliza acest tichet pentru a obține tichete suplimentare pentru SS utilizând același secret partajat. Aceste bilete pot fi folosite pentru a dovedi autentificarea la SS.
Protocolul în detaliu
Etape de conectare a utilizatorului bazate pe client:
- Un utilizator introduce un nume de utilizator și o parolă pe calculatorul client.
- Clientul execută o funcție unidirecțională (în general o funcție Hash) asupra parolei introduse, iar aceasta devine cheia secretă a clientului/utilizatorului.
Etapele de autentificare a clientului:
- Clientul trimite un mesaj în clar către AS prin care solicită servicii în numele utilizatorului.
Exemplu de mesaj: "Utilizatorul XYZ dorește să solicite servicii".
Notă: Nici cheia secretă, nici parola nu sunt trimise către AS. - AS verifică dacă clientul se află în baza sa de date. În caz afirmativ, AS trimite înapoi clientului următoarele două mesaje:
- Mesajul A: Cheia de sesiune client/TGS criptată cu ajutorul cheii secrete a clientului/utilizatorului.
- Mesajul B: TGT (care include ID-ul clientului, adresa de rețea a clientului, perioada de valabilitate a biletului și cheia de sesiune client/TGS) criptată cu ajutorul cheii secrete a TGS.
- Odată ce clientul primește mesajele A și B, acesta decriptează mesajul A pentru a obține cheia de sesiune client/TGS. Această cheie de sesiune este utilizată pentru comunicările ulterioare cu TGS. În acest moment, clientul are suficiente informații pentru a se autentifica în fața TGS.
Notă: Clientul nu poate decripta mesajul B, deoarece acesta este criptat cu ajutorul cheii secrete a TGS.
Etapele de autorizare a serviciului pentru clienți:
- Atunci când solicită servicii, clientul trimite următoarele două mesaje către TGS:
- Mesajul C: compus din TGT din mesajul B și din ID-ul serviciului solicitat.
- Mesajul D: Autentificatorul (care este compus din ID-ul clientului și marca temporală), criptat cu ajutorul cheii de sesiune Client/TGS.
- La primirea mesajelor C și D, TGS extrage mesajul B din mesajul C. Acesta decriptează mesajul B folosind cheia secretă TGS. În acest fel se obține cheia de sesiune Client/TGS. Folosind această cheie, TGS decriptează mesajul D (Authenticator) și trimite următoarele două mesaje clientului:
- Mesajul E: bilet client-server (care include ID-ul clientului, adresa de rețea a clientului, perioada de valabilitate și cheia de sesiune client/server) criptat cu ajutorul cheii secrete SS.
- Mesajul F: cheia de sesiune client/server criptată cu cheia de sesiune client/TGS.
Pași de solicitare a serviciilor pentru clienți:
- La primirea mesajelor E și F de la TGS, clientul dispune de suficiente informații pentru a se autentifica la SS. Clientul se conectează la SS și trimite următoarele două mesaje:
- Mesajul E: de la etapa anterioară (biletul Client-to-Server, criptat cu ajutorul cheii secrete SS).
- Mesajul G: un nou autentificator, care include ID-ul clientului, data și ora și este criptat cu ajutorul cheii de sesiune client/server.
- SS decriptează biletul folosind propria cheie secretă pentru a obține cheia de sesiune client/server. Utilizând cheia de sesiune, SS decriptează autentificatorul și trimite următorul mesaj clientului pentru a confirma adevărata sa identitate și dorința de a servi clientul:
- Mesaj H: marca temporală găsită în autentificatorul clientului plus 1, criptată cu ajutorul cheii de sesiune client/server.
- Clientul decriptează confirmarea utilizând cheia de sesiune client/server și verifică dacă marca temporală este actualizată corect. În caz afirmativ, clientul poate avea încredere în server și poate începe să emită cereri de servicii către server.
- Serverul furnizează clientului serviciile solicitate.