Information About Kerberos
Kerberos is a secret-key network authentication protocol, developed at the Massachusetts Institute of Technology (MIT), that uses the Data Encryption Standard (DES) cryptographic algorithm for encryption and authentication. Kerberos was designed to authenticate requests for network resources. Kerberos, like other secret-key systems, is based on the concept of a trusted third party that performs secure verification of users and services. In the Kerberos protocol, this trusted third party is called the key distribution center (KDC).
The primary use of Kerberos is to verify that users and the network services they use are really who and what they claim to be. To accomplish this, a trusted Kerberos server issues tickets to users. These tickets, which have a limited lifespan, are stored in a user’s credential cache and can be used in place of the standard username-and-password authentication mechanism.
The Kerberos credential scheme embodies a concept called “single logon.” This process requires authenticating a user once, and then allows secure authentication (without encrypting another password) wherever that user’s credential is accepted.
Cisco IOS XE software includes Kerberos 5 support, which allows organizations already deploying Kerberos 5 to use the same Kerberos authentication database on their routers that they are already using on their other network hosts (such as UNIX servers and PCs).
The following network services are supported by the Kerberos authentication capabilities in Cisco IOS XE software:
-
Telnet
-
rlogin
-
rsh
-
rcp
Note |
Cisco Systems’ implementation of Kerberos client support is based on code developed by CyberSafe, which was derived from the MIT code. As a result, the Cisco Kerberos implementation has successfully undergone full compatibility testing with the CyberSafe Challenger commercial Kerberos server and MIT’s server code, which is freely distributed. |
The table below lists common Kerberos-related terms and their definitions.
Term |
Definition |
---|---|
authentication |
A process by which a user or service identifies itself to another service. For example, a client can authenticate to a router or a router can authenticate to another router. |
authorization |
A means by which the router determines what privileges you have in a network or on the router and what actions you can perform. |
credential |
A general term that refers to authentication tickets, such as ticket granting tickets (TGTs) and service credentials. Kerberos credentials verify the identity of a user or service. If a network service decides to trust the Kerberos server that issued a ticket, it can be used in place of retyping in a username and password. Credentials have a default lifespan of eight hours. |
instance |
An authorization level label for Kerberos principals. Most Kerberos principals are of the form user@REALM (for example, smith@EXAMPLE.COM). A Kerberos principal with a Kerberos instance has the form user/instance@REALM (for example, smith/admin@EXAMPLE.COM). The Kerberos instance can be used to specify the authorization level for the user if authentication is successful. It is up to the server of each network service to implement and enforce the authorization mappings of Kerberos instances. Note that the Kerberos realm name must be in uppercase characters. |
Kerberized |
Applications and services that have been modified to support the Kerberos credential infrastructure. |
Kerberos realm |
A domain consisting of users, hosts, and network services that are registered to a Kerberos server. The Kerberos server is trusted to verify the identity of a user or network service to another user or network service. Kerberos realms must always be in uppercase characters. |
Kerberos server |
A daemon running on a network host. Users and network services register their identity with the Kerberos server. Network services query the Kerberos server to authenticate to other network services. |
key distribution center (KDC) |
A Kerberos server and database program running on a network host. |
principal |
Also known as a Kerberos identity, this is who you are or what a service is according to the Kerberos server. |
service credential |
A credential for a network service. When issued from the KDC, this credential is encrypted with the password shared by the network service and the KDC, and with the user’s TGT. |
SRVTAB |
A password that a network service shares with the KDC. The network service authenticates an encrypted service credential by using the SRVTAB (also known as a KEYTAB) to decrypt it. |
ticket granting ticket (TGT) |
A credential that the key distribution center (KDC) issues to authenticated users. When users receive a TGT, they can authenticate to network services within the Kerberos realm represented by the KDC. |
Kerberos Client Support Operation
This section describes how the Kerberos security system works with a Cisco router functioning as the security server. Although (for convenience or technical reasons) you can customize Kerberos in a number of ways, remote users attempting to access network services must pass through three layers of security before they can access network services.
Authenticating to the Boundary Router
This section describes the first layer of security that remote users must pass through when they attempt to access a network. The first step in the Kerberos authentication process is for users to authenticate themselves to the boundary router. The following process describes how users authenticate to a boundary router:
-
The remote user opens a PPP connection to the corporate site router.
-
The router prompts the user for a username and password.
-
The router requests a TGT from the KDC for this particular user.
-
The KDC sends an encrypted TGT to the router that includes (among other things) the user’s identity.
-
The router attempts to decrypt the TGT using the password the user entered. If the decryption is successful, the remote user is authenticated to the router.
A remote user who successfully initiates a PPP session and authenticates to the boundary router is inside the firewall but still must authenticate to the KDC directly before being allowed to access network services. This is because the TGT issued by the KDC is stored on the router and is not useful for additional authentication unless the user physically logs on to the router.
Obtaining a TGT from a KDC
This section describes how remote users who are authenticated to the boundary router authenticate themselves to a KDC.
When a remote user authenticates to a boundary router, that user technically becomes part of the network; that is, the network is extended to include the remote user and the user’s machine or network. To gain access to network services, however, the remote user must obtain a TGT from the KDC. The following process describes how remote users authenticate to the KDC:
-
The remote user, at a workstation on a remote site, launches the KINIT program (part of the client software provided with the Kerberos protocol).
-
The KINIT program finds the user’s identity and requests a TGT from the KDC.
-
The KDC creates a TGT, which contains the identity of the user, the identity of the KDC, and the expiration time of the TGT.
-
Using the user’s password as a key, the KDC encrypts the TGT and sends the TGT to the workstation.
-
When the KINIT program receives the encrypted TGT, it prompts the user for a password (this is the password that is defined for the user in the KDC).
-
If the KINIT program can decrypt the TGT with the password the user enters, the user is authenticated to the KDC, and the KINIT program stores the TGT in the user’s credential cache.
At this point, the user has a TGT and can communicate securely with the KDC. In turn, the TGT allows the user to authenticate to other network services.
Authenticating to Network Services
The following process describes how a remote user with a TGT authenticates to network services within a given Kerberos realm. Assume the user is on a remote workstation (Host A) and wants to log in to Host B.
-
The user on Host A initiates a Kerberized application (such as Telnet) to Host B.
-
The Kerberized application builds a service credential request and sends it to the KDC. The service credential request includes (among other things) the user’s identity and the identity of the desired network service. The TGT is used to encrypt the service credential request.
-
The KDC tries to decrypt the service credential request with the TGT it issued to the user on Host A. If the KDC can decrypt the packet, it is assured that the authenticated user on Host A sent the request.
-
The KDC notes the network service identity in the service credential request.
-
The KDC builds a service credential for the appropriate network service on Host B on behalf of the user on Host A. The service credential contains the client’s identity and the desired network service’s identity.
-
The KDC then encrypts the service credential twice. It first encrypts the credential with the SRVTAB that it shares with the network service identified in the credential. It then encrypts the resulting packet with the TGT of the user (who, in this case, is on Host A).
-
The KDC sends the twice-encrypted credential to Host A.
-
Host A attempts to decrypt the service credential with the user’s TGT. If Host A can decrypt the service credential, it is assured the credential came from the real KDC.
-
Host A sends the service credential to the desired network service. Note that the credential is still encrypted with the SRVTAB shared by the KDC and the network service.
-
The network service attempts to decrypt the service credential using its SRVTAB.
-
If the network service can decrypt the credential, it is assured the credential was in fact issued from the KDC. Note that the network service trusts anything it can decrypt from the KDC, even if it receives it indirectly from a user. This is because the user first authenticated with the KDC.
At this point, the user is authenticated to the network service on Host B. This process is repeated each time a user wants to access a network service in the Kerberos realm.