Microsoft .NET Passport implements a simple and straightforward approach to provide password-based authentication. There is, however, another authentication system that is also based on
The authentication and key distribution system Kerberos [15] [10, 14 “16] was originally developed at MIT to protect the emerging network services provided by Athena Project [17 “19]. The aim of the Kerberos system was to extend the notion of authentication to the computing and networking environment at MIT.
The first three versions of the Kerberos system were used only at MIT. The first version that was made
Some sites require functionality that Kerberos V4 does not provide, while others have a computing and networking environment or administrative procedures that
It should be noted that Kerberos V4 and V5, although conceptually similar, are substantially different from one another, and are even competing for
Kerberos is based on authentication and key distribution protocols that were originally proposed in [23, 24] and later modified to use time stamps [25]. In the Kerberos model and terminology, an administration domain is called a
realm.
It is assumed that every company or organization that runs the Kerberos system establishes a realm that is uniquely identified by a realm
The aim of Kerberos is to allow a client acting on
An authentication server (AS);
A set of ticket-granting servers (TGSs).
Note that the AS and the TGSs are only logically separated components and that they may be processes running on the same machines. Also note that the machines that provide these services must be
The KDC maintains a database that includes an entry for every principal registered in the Kerberos realm. The information a Kerberos KDC stores for each principal P includes (but is not restricted to) the following two items:
The principal identifier of P;
The key K p that is shared between P and the KDC (e.g., a password if P is a user).
For obvious reasons, the confidentiality of the keys (i.e.,
K
p
for each principal P) must be protected. The Kerberos system therefore encrypts all keys with a KDC master key. This encryption allows a system manager to remove copies of the KDC database from the master server, and send copies thereof to slave servers without going to extraordinary lengths to protect the privacy of the copies. Slave servers are required in large realms to provide a highly available Kerberos authentication service. Note that Kerberos does not store the KDC master key in the same database, but
In principle, Kerberos implements a ticketing system. This basically means that a central authority (i.e., the KDC) issues tickets that clients and servers can use to
The session key that will be used for authentication between the client and the server;
The name of the principal to whom the session key was issued;
An expiration time after which the session key is no longer valid.
The ticket is not sent directly to the server, but instead sent to the client, who forwards it to the server as part of an authentication exchange. A Kerberos ticket is always encrypted with the server key, known only to the AS and the intended server. Because of this encryption, it is not possible for the client to modify the ticket without detection. There are two types of tickets:
Ticket-granting tickets (TGTs) are issued by the Kerberos AS and can be used to request service tickets from a TGS;
Service tickets , or tickets in short, in turn, are issued by a TGS and can be used to authenticate to specific server systems.
During the duration of a typical session, a TGT is usually obtained first. The TGT (instead of the user s password) is then locally stored on the client and used to request service tickets for each and every server system the client must authenticate to.
Figure 8.5 illustrates the Kerberos system and the corresponding protocol steps. The six steps can be
1 : C AS : KRB_AS_REQ( U; TGS; L 1 ; N 1 )
2 : AS C : KRB_AS_REP( U; T c , tgs ; { TGS; K; T start , T expire , N 1 } K U )
3 : C TGS : KRB_TGS_REQ( S; L 2 ; N 2 ; T c ; tgs , A c , tgs )
4 : TGS C : KRB_TGS_REP( U; T c,s , { S; K , T start , T expire , N 2 } K )
5 : C S : KRB_AP_REQ( T c , s , A c , s )
6 : S C : KRB_AP_REP({ T } K )
Figure 8.5:
The Kerberos system and the corresponding protocol steps.
Furthermore, the six steps can be grouped in three exchanges:
The AS exchange between the client and the AS (steps 1 and 2);
The TGS exchange between the client and the TGS (steps 3 and 4);
The AP exchange between the client and the application server (steps 5 and 6).
Obviously, the AS exchange must be performed only once during the log-in process, whereas the TGS exchange and the AP exchange must be performed for each server the client wants to access (if the server requires authentication).
When a user U wants to sign on a Kerberos realm, he or she has a client C send a KRB_AS_REQ (Kerberos authentication server request) message to the AS of the Kerberos KDC in step 1. The message basically includes the principal identifier for U, the identifier for a TGS, a desired lifetime
L
1
for the TGT, and a
After having received the KRB_AS_REQ message, the AS looks up and
After having received the KRB_AS_REP message in step 2, C applies a well-known one-way hash function
h
to the
Before initiating a TGS exchange, C must determine in which realm the application server he or she will request a ticket for has been registered. If C does not already possess a TGT for that realm, C must obtain one. This is first attempted by requesting a TGT for the destination realm from the local Kerberos server (using the KRB_TGS_REQ message recursively). The Kerberos server may return a TGT for the desired realm, in which case C can proceed. Alternatively, the Kerberos server may also return a TGT for a realm which is closer to the desired realm, in which case this step must be repeated with a Kerberos server in the realm specified in the returned TGT. If
In step 3, C sends a KRB_TGS_REQ (Kerberos ticket-granting server request) message to the TGS. The message includes the principal identifier
S
for the server, a
The KRB_TGS_REQ message is
When the KRB_TGS_REP is received by C, it is processed in the same manner as the KRB_AS_REP processing described above. The primary difference is that the
It turns out that there is neither functionality nor security
The AP exchange of the Kerberos V4 protocol is used by network applications either to authenticate a client to a server, or to mutually authenticate a client and a server to each other. The client must have already
In step 5, C sends a KRB_AP_REQ (Kerberos application request) message to the server S. The message includes T c,s , A c,s = { C; T } K , and some additional bookkeeping information. Authentication is based on the server s current time of day, the ticket T c,s , and the authenticator A c,s .
To make sure that the KRB_AP_REQ message is not a replay of a request recent enough to look current given the time skew, S should keep all time stamps received within the maximum allowable time skew and check that each received time stamp is different from any of the stored values. Any authenticator older than the maximum allowable time skew would be rejected anyway, so there is no need to remember values older than the threshold value. Kerberos V4, however, does not bother saving time stamps. Saving time stamps does not help if S is a replicated service in which all the instances of the service use the same master key. The threat of an eavesdropper
If no error occurs, and if mutual authentication is required, S has to return a KRB_AP_REP (Kerberos application reply) message to C in step 6. Again, this message is encrypted with the session key K that is shared between C and S. Since this key was in the ticket encrypted with the server s secret key, possession of this key is proof that S is the intended principal. More accurately, S has to increment the time stamp included in the KRB_AP_REQ message authenticator and re-encrypt it with K .
As described thus far, Kerberos provides mutual authentication services for the client and server. However, a by-product of the Kerberos authentication protocol is the exchange of a session key
K
that is shared between the clients and the servers. This key can then be used by the application to protect the confidentiality and integrity of communications. Typically, communications between the client and server is
There are at least two problems that should be considered with care when it comes to large-scale deployment of the Kerberos system:
The fact that one part of the KRB_AS_REP message is encrypted with
K
U
can be used to launch a
The fact that the Kerberos KDC shares a secret key with each principal in the realm allows the administrator of the KDC to spoof any principal. This is a consequence of the fact that the Kerberos system uses only secret key cryptography.
Furthermore, every network application must be modified to make use of the Kerberos system. The process of modifying a network application to make use of Kerberos is commonly referred to as ˜ ˜Kerberizing it. In general, Kerberizing network applications is the most difficult part of installing Kerberos. Fortunately, the MIT reference
One of the commonly agreed upon design principles for authentication and key distribution systems is the use of a standardized API, such as the Generic Security Services API (GSS-API) specified by the IETF Common Authentication Technology (CAT) WG. The use of the GSS-API for Kerberos V5 is specified in RFC 1964 [26]. Also, more work is needed to standardize and eventually simplify the GSS-API, such as demonstrated by GSS-API version 2 [27] or the Simple Public-Key GSS-API Mechanism [28].
Note that the Kerberos system provides authentication, data confidentiality, and data integrity services. By itself, it provides no information as to whether or not the client is authorized to access the server and to use the corresponding services. In general, there are three possibilities to address authorization within the Kerberos model:
The Kerberos KDC could maintain authorization information for each service and issue tickets to authorized users only.
A dedicated service could maintain authorization information by keeping access lists for each service and allowing the client to obtain sealed certification of list membership. The client would then present the sealed certification in addition to a Kerberos ticket to the requested service.
Each service could maintain its own authorization information, with the optional help of a service that stores access lists and provides certification of list membership.
The Kerberos model is based on the assumption that each service
The Secure European System for Applications in a multi-vendor Environment (SESAME) was a European research-and-development project aimed at developing an AAI and system for distributed computing and networking environments [29 “31]. It achieved this by including and combining an extended Kerberos V5 authentication service and a privilege attribute service that can be used to provide authorization and corresponding access control services.
Recall that in the Kerberos system a client
Refer to Chapter 6 of [10] or [31] to get a more comprehensive overview and discussion of the SESAME system. With the deployment of similar mechanisms in Windows 2000, interest in SESAME and SESAME-enabled applications has disappeared in the past.
More recently, Microsoft has implemented the Kerberos V5 authentication service with extensions for public key authentication [21] for the Windows 2000 operating system. The Kerberos KDC is integrated with other Windows 2000 security services running on the domain controller and uses the domain s active directory as its security account database. [22]
In addition to the functionality specified in [21], Windows 2000 implements an authorization mechanism in the Kerberos system in a specific and unique way. When the Kerberos protocol is used for authentication, a list of security identifiers (SID) identifying a principal and the principal s group memberships is transported to the client in the authorization data field of a ticket. Authorization data, in turn, are gathered in two steps:
The first step takes place when the KDC in a Windows 2000 domain prepares a TGT.
The second step is accomplished when the KDC prepares a service ticket for the server in the domain.
When a user requests a TGT, the KDC in the user s account domain queries the domain s active directory. The user s account record includes the user s SID as well as SIDs for any security group to which the user belongs. The list of SIDs returned by the KDC is placed in the authorization data field of the TGT. [23] In a multiple-domain environment, the KDC also queries the Global Catalog for any universal groups that include the user or one of the user s domain security groups. If any are found, their SIDs are also added to the list in the TGT s authorization data field.
When a user requests a service ticket, the KDC in the server s domain copies the contents of the TGT s authorization data field to the ticket s authorization data field. Furthermore, if the server s domain is different from the user s account domain, the KDC queries the active directory to find out whether any security groups in the local domain include the user or one of the user s security groups. If any are found, their SIDs are also added to the list in the service ticket s authorization data field.
[15]
In Greek mythology, Kerberos is the name of the three-headed watchdog of Hades, whose duty it was to guard the
[16] Outside the United States and Canada, the eBones distribution of Kerberos V4 is used and widely deployed. The eBones distribution is available at http://www.pdc.kth.se/kth-krb.
[17] http://web.mit.edu/kerberos/www
[18]
http://nii.isi.edu/
[19] http://web.mit.edu/kerberos/www/dialogue.html
[20] Kerberos V4 did not prompt the user to enter the password until after C has received the KRB_AS_REP message. This is because Kerberos V4 was serious in following the generally good security rule of having C know the user s password only for the minimum time possible. But waiting the few seconds to retrieve the KRB_AS_REP message before asking the user for the password really does not enhance security significantly, and in fact Kerberos V5 has the user enter the password before C sends the KRB_AS_REQ message. The reason for the designers of Kerberos V5 to change the order was that V5 requires C to prove that it knows the user s password before the AS sends the KRB_AS_REP message, which makes it less easy to obtain a quantity with which to launch an offline password guessing attack.
[21] These extensions are specified by the IETF CAT WG under the acronym PKINT.
[22] For consistency, the Microsoft documentation uses the term ˜ domain instead of ˜ realm . Furthermore, the distinction between an AS and a TGS is not made. Both components are collectively referred to as a KDC.
[23] Note that this use of the authorization data field to actually carry authorization information is consistent with revisions to the Kerberos V5 protocol specification [21] submitted to the IETF.