Wednesday, 18 April 2012

How Authentication Works

Kerberos performs authentication as a trusted third-party authentication service using shared secret key cryptography.
The authentication process proceeds as follows:

1. A client sends a request to the authentication server, requesting “credentials” for a given application server. These credentials can be directly for an application server or for a Ticket Granting Server.
2. The authentication server responds with these credentials, encrypted in the client’s key.
The credentials consist of the following:
  • A “ticket” for the server.
  • A temporary encryption key (called a session key).
3. If the ticket is for a Ticket Granting Server, the client then requests a ticket for the application server from the Ticket Granting Server.

4. The Ticket Granting Server replies with a ticket for the application server.

5. The client transmits the ticket (which contains the client’s identity and a copy of the session key, all encrypted in the server’s key) to the application server.

6. The session key, now shared by the client and application server, is used to authenticate the client, and can be used to authenticate the server.
It also can be used to encrypt further communication between the two parties or to exchange a separate sub session key to encrypt further communication.

An implementation consists of one or more authentication servers running on physically secure hosts. Each authentication server maintains a database of principals (that is, users and servers) and their secret keys. Code libraries on the server provide encryption and implement the Kerberos protocol. Before a typical network can add authentication to its transactions, it adds calls to the Kerberos library, which results in the transmission of the necessary messages to achieve authentication.

A client can use two methods for asking a Kerberos server for credentials.
Client sends a cleartext request for a ticket for the desired function server to the function server. The reply is sent encrypted in the client’s secret key. Usually, this request is for a Ticket Granting Ticket that can be used later with the Ticket Granting Server.
Client sends a request to the Ticket Granting Server in the same manner as when contacting any other application server that requires Kerberos credentials. The reply is encrypted in the session key from the Ticket Granting Ticket.
After credentials are obtained, they can be used to establish the level of security the application requests:
  • Verify the identity of the principals in a transaction
  • Ensure the integrity of messages exchanged between them
  • Preserve privacy of the messages
  • The application can choose whatever level of protection it deems necessary. The level of security chosen for a particular transaction depends upon the security policy being implemented by the application.
To verify the identities of the principals in a transaction, the client transmits the ticket to the function server. The ticket is sent in cleartext (cleartext is readable by anyone who chooses to look at the message). Parts of it are encrypted, but this encryption doesn’t thwart replay. An attacker could intercept it and reuse it. So, additional information accompanies the message to prove it originated at the principal to whom the ticket was issued. This information, called an authenticator, is encrypted in the session key, and includes a timestamp. The timestamp proves that the message was generated recently and is not a replay. Encrypting the authenticator in the session key proves that a party possessing the session key generated it. Because no one except the requesting principal and the server know the session key (it never travels over the network in the clear), this guarantees the identity of the client.

The integrity of the messages exchanged between principals can be guaranteed using the session key. This approach provides detection both of replay attacks and message stream modification attacks, by generating and transmitting a collision-proof checksum called a hash or digest of the client’s message, keyed with the session key.
Privacy and integrity of the messages exchanged between principals can be secured by using the session key passed in the ticket and contained in the credentials to encrypt the data to be passed.

Authentication exchanges require read-only access to the Kerberos database. Sometimes the entries in the database must be modified, however, such as when adding new principals or changing a principal’s key. Modification of entries is done using a protocol between a client and a third Kerberos server, the Kerberos Administration Server. The administration protocol is not described here. Another protocol concerns maintaining multiple copies of the Kerberos database, but it’s an implementation detail and can vary to support different database technologies.

No comments:

Post a Comment