Kerberos

The name comes from Greek mythology; it is a three-headed dog.

 Kerberos(AS)                             TGS
            ^      \                                 ^      /
              \       \                             /      /
           1   \       \    2              3  /      /   4
                  \       \                     /      /
                    \       \                /      /                  5
                             User/Client       ---------->     Server
  1. Request for TGS ticket (TGT)
  2. Get TGT for TGS from Kerberos
  3. Request for Sever ticket
  4. Get Ticket for Sever from TGS
  5. Request for Sevice from Server

  6.  
  •  Detailed protocol.
    1. The user is prompted for her/his username. A request {c, tgs}  is sent to AS.
    2. AS sends { Kc, tgs, {Tc,tgs}Ktgs}Kc back to the user.

    3. Tc,tgs contains C, tgs, time, lifetime, client's IP, Kc,tgs.
      A machine's network address is part of the ticket information. This address is used as an additional check to make sure the ticket hasn't been stolen and is being used on another machine.
    4. The user is asked for her/his password. The password is converted to DES key through ONE_WAY hash function and used to decrypt the response. Only Kc,tgs, {Tc,tgs}Ktgs are stored.
      In version 5, the complete principal name (including the realm) is used as the salt. There is some advantage for doing this way. User likes to use same password in more than one realm. In this case, the same encrypted passwords for two different realms will not be the same. Hence, if one key is compromised, the other one can still survive. In addition, the same encrypted passwords for two differnet principals will be different. Which is good in that the keys for two users in same realm are distinctable.
    5. Tickets for each service the client wants to use can be obtained from TGS. A request {s, {Tc,tgs,}Ktgs, {Ac}Kc,tgs } is sent to TGS Authenticator: {c, IP, time}Kc, tgs.
    6. If both TGT and Authenticator is valid, TGS  sends { {Tc,s}Ks, Kc,s}Kc,tgs back.  No password needed now.
      The reason the TGT exists is that a user doesn't have to enter in their password every time they wish to connect to a Kerberized service or keep a copy of their passwords around. If TGT is compromised, an attacker can only user the ticket for the lifetime of the ticket.
    7. Client sends {{Ac}Kc,s, {Tc,s}Ks} to sever.
    8. Server sends { {timestamp + 1} Kc,s} back to Clients. --DONE
    Updated on Oct. 24, 1998 by Min Ding (dingmin@cs.nyu.edu)