Kerberos (protocol)
|
Kerberos is a computer network authentication protocol which allows individuals communicating over an insecure network to prove their identity to one another in a secure manner. Kerberos prevents eavesdropping or replay attacks, and ensures the integrity of the data. Its designers aimed primarily at a client-server model, and it provides mutual authentication — both the user and the service verify each other's identity.
Kerberos builds on symmetric key cryptography and requires a trusted third party.
Contents |
History and development
The Massachusetts Institute of Technology (MIT) developed Kerberos to protect network services provided by Project Athena. Several versions of the protocol exist; versions 1–3 occurred only internally at MIT.
The Protocol was named after the Greek mythological character Kerberos (or Cerberus), known in Greek Mythology as being the monstrous three-headed hound dog of Hades.
Steve Miller and Clifford Neuman, the primary designers of Kerberos version 4, published that version in the late 1980s, although they had targeted it primarily for Project Athena.
Version 5, designed by John Kohl and Clifford Neuman, appeared as RFC 1510 in 1993, with the intention of overcoming the limitations and security problems of version 4.
MIT makes an implementation of Kerberos freely available, under copyright permissions similar to those used for BSD.
For some time, authorities in the United States classed Kerberos as a munition and banned its export because it used the DES encryption algorithm (with 56-bit keys). A non-US implementation, developed in Sweden, made the system available outside the US before the US changed its export regulations (circa 2000).
Windows 2000, Windows XP and Windows Server 2003 use Kerberos as their default authentication method.
As of 2005, the IETF Kerberos workgroup is updating the specifications [1] (http://www.ietf.org/html.charters/krb-wg-charter.html). Recent updates include "Encryption and Checksum Specifications" (RFC 3961) and "Advanced Encryption Standard (AES) Encryption for Kerberos 5" (RFC 3962).
Description
Kerberos uses as its basis the Needham-Schroeder protocol. It makes use of a trusted third party, termed a Key Distribution Center (KDC), which consists of two logically separate parts: an Authentication Server (AS) and a Ticket Granting Server (TGS). Kerberos works on the basis of "tickets" which serve to prove the identity of users.
Kerberos maintains a database of secret keys; each entity on the network — whether a client or a server — shares a secret key known only to itself and to Kerberos. Knowledge of this key serves to prove an entity's identity. For communication between two entities, Kerberos generates a session key which they can use to secure their interactions.
The protocol
One can specify the protocol as follows in security protocol notation, where Alice (A) authenticates herself to Bob (B) using a server S:
<math>A \rightarrow S: A,B<math>
<math>S \rightarrow A: \{T_S, L, K_{AB}, B, \{T_S, L, K_{AB}, A\}_{K_{BS}}\}_{K_{AS}}<math>
<math>A \rightarrow B: \{T_S, L, K_{AB}, A\}_{K_{BS}}, \{A, T_A\}_{K_{AB}}<math>
<math>B \rightarrow A: \{T_A + 1\}_{K_{AB}}<math>
We see here that the security of the protocol relies heavily on timestamps T and lifespans L as reliable indicators of the freshness of a communication (see the BAN logic).
In relation to the following Kerberos operation, it is helpful to note that the server S here stands for both authentication service (AS), and ticket granting service (TGS). In <math>\{T_S, L, K_{AB}, B, \{T_S, L, K_{AB}, A\}_{K_{BS}}\}_{K_{AS}}<math>, <math>K_{AB}<math> stands for the session key between A, and B, <math>\{T_S, L, K_{AB}, A\}_{K_{BS}}<math> is the client to server ticket.
<math>\{A, T_A\}_{K_{AB}}<math> is the authenticator.
<math>\{T_A + 1\}_{K_{AB}}<math> confirms B's true identify and its recognition of A. This is required for mutual authentication.
Kerberos operation
This is an over-simplified description of the protocol (AS = Authentication Server, TGS = Ticket Granting Server, C = Client, S = Service):
- User Enters the UserName and Password on the Client
- The Client performs a one way hash on the entered Password, and this becomes the secret key of the client.
- The Client send a Clear-Text message to AS requesting services on behalf of the user. Sample Message: "User XYZ would like to request services" . Note: Neither the secret key nor the password is sent to the AS.
- The AS checks to see if the C is in its Database. If it is, it sends back the following 2 messages to the client.
- Message A: Client/TGS session key encrypted using the Secret Key of the User.
- Message B: Ticket Granting Ticket (which includes the Client ID, Client Network Address, Ticket Validity Period, and the Client/TGS session key) encrypted using the secret key of the Ticket Granting Service.
- Once the Client receives Messages A and B, it decrypts Message A, to obtain the Client/TGS session key. This session key is used for further communications with Ticket Granting Service. Note: The Client can not decrypt the Message B, as it is encrypted using Ticket Granting Server's secret key.
- When requesting services (S), the client sends the following two messages to the Ticket Granting Service.
- Message C: comprised of the Message B and the ID of the requested Service.
- Message D: Authenticator (which is comprised of the Client ID and the Timestamp), encrypted using the Client/TGS session key.
- Upon receiving Messages C and D, the Ticket Granting Service, decrypts Message D (Authenticator) using the Client/TGS session key, and send following two message back to the Client.
- Message E: Client to Server Ticket (which includes the Client ID, Client Network Address, Validity Period, and Client/Service Session Key) encrypted using the Service's secret key.
- Message F: Client/Server Session Key encrypted with the Client/TGS Session Key.
- Upon receiving message E, and F, the Client then sends a new Authenticator and the Client to Server Ticket to the Server from which the services were requested.
- Message G: the Client to Server Ticket, encrypted using Server's secret key.
- Message H: a new Authenticator, which includes the Client ID, Timestamp and is encrypted using Client/Server Session Key.
- The Server then decrypts the Ticket using its own secret, and send the follow message to the client to confirm its true identity, and willingness to serve the client.
- Messge I: the timestamp found in Client's recent Authenticator plus 1, encrypted using the Client/Server Session Key.
- The Client decrypts the confirmation using its shared key with the Server, and check if the timestamp is correctly updated. If so, then the Client can trust the Server, and start issuing service requests to the Server.
- and the Server provides the requested services to the client.
See also
External links
- Kerberos page at MIT (http://web.mit.edu/kerberos/)
- "The Moron's Guide to Kerberos" (http://www.isi.edu/gost/brian/security/kerberos.html)
- The Kerberos FAQ (http://www.faqs.org/faqs/kerberos-faq/general/)
- Heimdal Kerberos page at KTH (http://www.pdc.kth.se/heimdal/)
- Shishi, a free Kerberos implementation for the GNU system (http://josefsson.org/shishi/)
References
- B. Clifford Neuman and Theodore Ts'o, Kerberos: An Authentication Service for Computer Networks, IEEE Communications, 32(9) pp33–38. September 1994. [2] (http://gost.isi.edu/publications/kerberos-neuman-tso.html)
- John T. Kohl, B. Clifford Neuman, and Theodore Y. T'so, The Evolution of the Kerberos Authentication System. Distributed Open Systems, pp78–94. IEEE Computer Society Press, 1994. ftp://athena-dist.mit.edu/pub/kerberos/doc/krb_evol.PS (Postscript format)da:Kerberos
de:Kerberos (Informatik) fi:Kerberos fr:Kerberos he:קרברוס (פרוטוקול)