The 6 steps of Kerberos
Players:
User
Service (Can be any service that user wants to access, such as mail service)
Kerberos Authentication Service (AS)
Kerberos Ticket Granting Service (TGS)
+--------------------+----------------------+
| | |
| Kerberos AS | Kerberos TGS |
| | |
+---------+----------+--------+-------------+
^ | ^ |
| | | |
1 | |2 3 | | 4
| | | |
| | | |
+-------------------+ | | | | +-----------------------+
| |--------------+ | | | | |
| |<--------------------+ | | | |
| +------------------------------------+ | | |
| User |<----------------------------------------+ 5 | Mail Service |
| +---------------------------------------------------------------->| |
| |<----------------------------------------------------------------+ |
+-------------------+ 6 +-----------------------+
Step 1: User ---- Username, Timestamp ----> Kerberos AS
Step 2: Kerberos AS ---- TGT=[K(user,tgs)<-P(tgs)], K(user,tgs)<-P(user) ----> User
Step 3: User ---- TGT<-P(tgs), user_name, service_name, authenticator<-K(user,tgs) ----> Kerberos TGS
Step 4: Kerberos TGS ---- ST=[K(user,service)<-P(service)], K(user,service)<-K(user,tgs) ----> User
Step 5: User ---- ST<-P(service), user_name, authenticator<-K(user,service) ----> Service
Step 6: Service ---- OK, authenticator<-K(user,service) ----> User
Authenticator = (sender_name, sender_address, timestamp, lifespan) <- SessionKey
K(user,tgs) : a session key, randomly generaged by Kerberos, shared betwee user and TGS
P(tgs) : a key based on the password of the tgs service. It's a password known only by the tgs service
P(user) : a key based on the password of the user
K(user,tgs)<-P(user) : meaning that K(user,tgs) is encrypted with the key of P(user)
TGT : Ticket Granting Ticket. It's just a token that needed for the user to talk to TGS. It contains
a session key known only by user and TGS.
Keytab files
In kerberos step 1, users can enter password to obtain the TGT from Kerberos TGS, what about services/devices? Kerberos allow the value P(user) to be exported and saved to a file, usually named keytab. This allows the service to authenticate users without talking to Kerberos server.
No comments:
Post a Comment