The Hermes Group logo
Improving YOUR business... (877)HERMESG
HomeAboutSuccessServicesAlliancesWhitePapersContactSearch
clearheading top clear

Table Of Contents
under attack
what can you do?
who's knocking on my door?
using the ticket
care and feeding of kerberos
nothing is perfect

While heterogeneous client-server environments, where PCs and Macintoshes can talk to Sun SPARCstations, VAX/VMS systems, and Unix servers have become commonplace in IT infrastructures. But connecting these different platforms presents a unique set of security problems. Even though each system probably has its own security system, the challenge is to provide a unified and rigorous security approach to function between platforms. How will you prevent a network break-in? How will you foil a snooper who taps into your network and reads passwords off the wire? As the networks grow, it becomes more and more difficult to secure the network against intruders. The widespread use of the Internet only aggravates the security issues.

The results of a network break-in can be disastrous. An intruder may be able to steal, alter, or destroy all of the organization's data, including payroll, databases, and employee records. The more computerized the business, the more valuable and sensitive that information is likely to be.

There's hope, however. Powerful security is available in the form of Kerberos, an authentication protocol currently implemented for TCP/IP networks. Kerberos, is named after the watch dog of the Greek underworld Hades, whose duty it was to guard the entrance and was is known to have had three heads. 

In modern times, Kerberos is a network authentication system for use on physically insecure networks, based on the key distribution model. It allows entities communicating over networks to prove their identity to each other while preventing eavesdropping or replay attacks. It provides for data stream integrity (detection of modification) and secrecy (preventing unauthorized reading) using cryptography systems such as DES. Connectivity software supporting Kerberos is now being developed to help secure client-server communications among Unix, Sun, VMS, OS/2, DOS, and Macintosh systems.

 UNDER ATTACK

Perhaps the simplest way to break into a network is to steal passwords. With any broadcast LAN technology such as Ethernet or Token Ring', passwords are transmitted so that anyone can collect and display them with a protocol analyzer or other direct data capture device. On an Ethernet LAN, with the proper software, almost tiny workstation can be put into a promiscuous mode, allowing the user to look at all traffic on the local network. Although multiuser systems usually require a user to have certain privileges to gain such access, one must assume that intruders can obtain the necessary level of access, or even hook up their own workstations which would not be subject to the restrictions of the multiuser system.

Once an intruder gains access to network traffic, it's a simple matter to sift through the sea of data and capture passwords transmitted in clear text (i.e., as unencrypted characters) by remote login protocols such ils Telnet and file transfer protocols such as FTP. Another common means of attack is via the Unix remote services, such RLOGIN and RSHELL. One problem with these protocols, from a security standpoint, is that they allow users to hop from machine to machine, gaining each machine's security rights as they go. Suppose, for instance, that machine "queen" has access to machine "king," and machine "prince" has access to machine "queen." A perpetrator who manages to break into "prince" can get to "king" by going through "queen." This possibility means that the system administrator at "king" not only has to worry about trusted "queen," but also about everyone that "queen" trusts and everyone they trust and so on. In a large network, monitoring this chain of trust can be an impossible task.

Another problem with remote ser-vices is spoofing, or imitating IP addresses. Although the remote proto-cols do not transmit users' passwords on the network, they identify trusted machines by their network addresses. A perpetrator can disable the real trusted machine and impersonate it using its IP network address. (You can't impersonate a trusted machine while it's on the network, since duplicate IP addresses are not allowed.)

The challenge is not just to plug such security leaks but also to prevent them from occurring in the first place.

 WHAT CAN YOU DO?

The principal problem with computer networks is that they cannot be trusted. You must assume that any-thing transmitted on the network can be heard by anyone and anything received from the network can be manufactured by a potential intruder.

Any truly secure protocol must make it possible to determine the true identity of a user who provides a false user name. The basis for making this identification is a password. The protocol must also protect sensitive password information, even if all communication with the entity is public. Kerberos is such an authentication protocol.

Named after the mythical three-headed dog that guards the gates of Hades, Kerberos is a product of Massachusetts Institute of Technology's Project Athena. MIT has a campus-wide, public network that includes a variety of workstations and servers. Any workstation can potentially be used to scan network traffic, so sending users' passwords on the network would be a high security risk. Kerberos was developed so that servers could authenticate users.

Kerberos provides authentication, not authorization. Authentication determines who someone is; authorization determines what someone can do. Authentication is a prerequisite to authorization, but it is up to the particular server to decide which ser-vices and files a user may access once his or her identity has been verified.

 WHO'S KNOCKING ON MY DOOR?

Given that we can't trust the network to verify a user's identity, how do we prove a user's identity to the server'? The Kerberos solution employs shared secrets, Data Encryption Standard (DES) encryption, and a system of tickets that allow a user to prove his identity to a server via a third party, namely the Kerberos server.

The shared secrets are keys. A key is a string of characters used to encrypt a message, that is, to turn the message into an unintelligible series of characters. You can decrypt the message (turn it back into clear text) only if you also know the same key. Some keys are persistent, that is, they stay the same until someone changes them. For instance, there's a client key and a server key which are persistent. Persistent keys are usually known only to the entity they belong to and to Kerberos. Session keys, in contrast, are only good for one communications session. After that, they're tossed out. Session keys may be known to Kerberos and two other entities, such as the client and the server. In this article, we'll refer to a session key between Joe and Tom as the (Joe, Tom) key, so you can keep them straight. A persistent key will be referred to simply as the server key or the client key.

The ticket-getting process is much like getting a driver's license. The Ticket-Granting Service (TGS) on the Kerberos server issues the driver's license, and the client uses it to prove its identity to the target server (the server the client wants to access). Kerberos is a little more demanding than the Department of Motor Vehicles (DMV) in that it requires you to get a new license for each destination (each server). On the plus side, Kerberos licenses take only a few seconds to get, and you don't have to leave your desk.

Before the client can apply for the driver's license, though, the client's password has to be entered into a database at the Kerberos server, where it is permanently stored in encrypted form. That encrypted password is the client key. Both the client password and the client key are critical parts of the system. Password entry should be done in a completely secure fashion, and the Kerberos server should be protected so no one can access the keys.


Now, let's say Joe sits down at a workstation and types in his password to log on to a particular target server. The client software running at Joe's workstation sends a request to the Key Distribution Center (KDC) on the Kerberos server. The KDC is the network equivalent of the DMV. The client software first asks the KDC to issue a "ticket-granting ticket," provided by the Ticket-Granting Ticket (TGT) service (sec Figure 1). The ticket-granting ticket's purpose is to let you get tickets from the TGS, so it might he easier to think of it as a ticket-getting ticket. In our example, the ticket-getting ticket proves to the TGS that Joe is who he claims to be.

The KDC responds with a message encrypted in the client key, which is derived from Joe's password. The message contains a ticket-getting ticket which allows the client to use the TGS, and a (TGS, client) key which is now a shared secret between the TGS and the client software.

The client decrypts the KDC's message, using the client key. Then the client has the ticket-getting tick-et, which it uses to request tickets from the TGS. Since that client key is derived from Joe's password, the ability to decrypt the KDC message and obtain the ticket-getting-ticket proves to the TGS that Joe gave the right password. Thus, Joe has proved his identity without ever sending his password across the network, in fact, even the client key never went across the network only messages encrypt-ed with the client key.

 USING THE TICKET

Now the client software can send requests to the TGS, encrypting them in the (TGS, client) key, which it just got from the TGT service. The TGS provides tickets for the services that the user really wants to use (see Figure 2).

However, the TGS will not accept just the ticket-getting ticket itself as proof positive that it's talking to Joe. It's possible that a snooper could steal the ticket-getting ticket and use it to get illegal tickets for servers. 

To prevent this possibility, the TGS re-quires the client to send an authenticator along with the ticket-getting ticket (see Figure 3). The authenticator consists of a time stamp and Joe's address and user name, all encrypted with the (client, TGS) key. The TGS decrypts the ticket using the TGS server key. Then it decrypts the authenticator, using the (client, TGS) key, which it got from the ticket. The TGS compares its internal clock to the time on the time stamp in the authenticator. In version 4 of Kerberos, the two had to be within about five minutes of each other--a necessary compromise since clocks on different machines may not be precisely synchronized. However, this compromise means that a thief could steal a ticket-getting ticket and an authenticator and submit them both to the TGS within five minutes of their original submission and thus gain illegal access to a service. With version 4 of Kerberos, programmers creating Kerberos implementations for servers can save authenticators for five minutes and refuse to accept the same authenticator twice. The code for implementing such an "authenticator cache" isincluded with version 5 of Kerberos. Although each user needs only one ticket-getting-ticket for each logon session, a separate ticket is required for each service on each separate server machine. Two separate tickets would be required to access the RLOGIN services on machines foo and bar, and two separate tickets would be required for the RLOGIN and ADMIN services on machine spare. The requirement for a new ticket for each server breaks the "chain of trust" inherent in the remote protocols. Get-ting into "prince" docs not get you to "queen," and getting into "queen" docs not get you into "king." Instead, Kerberos keeps track of the servers you may access and only lets you into those servers.

Once the ticket-getting ticket is obtained, however, the client software will automatically obtain tickets for services on servers as needed, without user intervention. So Joe doesn't need to sec anything more than an initial request for his password.

Joe provides his password just once. Requests to the TGS use the (client, TGS) key and the ticket-getting ticket, not the password. The Kerberos client software minimizes exposure of the user's password, even zeroing out the client's memory where the password is read. Thus, even it' an intruder were using a system memory analyzer, he or she would have only a fraction of a second to spy the user's password before it wits erased.

The TGS sends a response to the client that contains a ticket and a (client, server) key. The ticket contains information that proves it was issued by the official TGS, just as a driver's license picture may be overlaid with a difficult-to-forget pattern to prove that the driver received the license from the DMV. The ticket contains the names of the client and server, the client's network address, a time stamp, a lifetime for the ticket, and a (client, server) key. The ticket is encrypted in the server key (which the TGS also knows), so the client can't decrypt it.

Note that the (client, server) key appears twice, once separate from the ticket and once inside the ticket. The client can't get it the one inside the ticket, because the ticket is encrypted in the server key, which is known only to the server and the TGS. That's why the TGS sends the (client, server) key outside the ticket as well.

The ticket is the client's driver's license. The client needs to send that driver's license to the target server. Normally, the server would provide a service like Telnet or RLOGIN. In Joe's case, he's been studying the Kerberos protocol and has a headache. Luckily, his network contains an aspirin server which will dispatch first, fast, fast relief to his desk, if only he can prove his identity. But the client can't just send the ticket across the network, because tickets may be good for an extended period of time, perhaps several hours. A snooper might capture the ticket, store it, and "replay" it later to get access to the server. So the client sends both the ticket and an authenticator, just as it did originally with the TGS.

Once the server confirms that the ticket is legitimate and the authenticator recent, it grants the service, Joe gets his aspirin, and everyone's happy. Except possibly Joe. Being deep into the science of network security, he is paranoid and fears that a treacherous placebo server may have disabled the aspirin server and may now be impersonating it. Joe sent off his ticket and authenticator and a bottle marked "aspirin" arrived at his desk. But how can he know it's the real thing?

So far, the (client, server) key has been used to authenticate the client. For instance, the fact that the (client, server) key in the ticket successfully decrypts the authenticator proves to the server that the authenticator was encrypted with the (client, server) key. That proves that the client who encrypted the time stamp is the same client that got the ticket. That means the client successfully proved Joe's identity to the Kerberos server.

The client can also use the (client, server) key to authenticate the server. To do this, the client issues a challenge which consists of a random number, usually a time stamp, encrypted in the (client, server) key. The server decrypts the challenge, increments the time stamp by one, then encrypts the new number using the (client, server) key and sends it back to the client. After the client decrypts this response, it' the value of the returned number is one greater than the original number, then the server has demonstrated that it knows the (client, server) key. That means it was able to decrypt the ticket, which means it knows the server key and must be the legitimate server.

CARE AND FEEDING OF KERBEROS

The KDC is the keystone of the entire Kerberos network authentication sys-tem. The network is no more secure than the KDC machine. Keeping that machine (or machines, since it is advisable to have multiple KDCs to ensure a high level of availability) in a locked and guarded room is not an undue precaution. Although some may consider it a design shortcoming of Kerberos that there is a single point of attack, there is an advantage to it, too: you can concentrate your security efforts on protecting the KDC.

The database is administered using programs that are either run on the KDC machine or on an administration server that is accessed by client programs run on workstations. Users authorized to modify the KDC database must be trustworthy, since they can grant any level of access to any machine on the network that depends on Kerberos for authentication. To simplify management, normal users are able to change their own passwords so the database administrators aren't burdened with ongoing changes.

Like the KDC machine, the KDC's database needs to be protected. The ability to modify the database would almost certainly allow an intruder to break into any machine on the network. Although breaking in to read the KDC database would constitute a somewhat lesser breach of security, at the very least it would provide a comprehensive list of user names (which would be very useful for a password-guessing attack). However, the intruder could not get the users' passwords from the KDC database, since passwords are stored only in an encrypted form.

 NOTHING IS PERFECT

Kerberos offers a very nice distributed authentication service. It certainly is a better way to prove a user's identity to a server than with the network equivalent of shouting passwords across a crowded room. But using Kerberos cannot guarantee that your network and machines will never be burglarized. First and foremost, the cleverest authentication scheme will not provide much security if a thief can get or guess users' passwords. Kerberos does prevent spying someone's password by just snooping on the network, but users must still be educated so that they choose passwords that are difficult to guess and so that they don't give their password to anyone, even someone claiming to be a new system administrator.

There are other ways to impersonate a user, even on a Kerberos-protected system. Attacks can be based on replaying authenticators previously spied on the network, which is difficult since an authenticator typically has a five-minute lifespan. However, an attacker could fool the network time service so that an expired authenticator can be used. As such attack strategies are discovered, however, defenses to counter them tire being developed and incorporated into subsequent versions of the Kerberos protocol and code.

Of course, other attacks can be made on a networked environment that Kerberos cannot secure against. For instance, an intruder can leave a program running at a public workstation that appears to be the normal login screen but really stores the user name and password as they are typed in. When an unsuspecting user walks up to the workstation and types his user name and password, then that user's security has been completely violated. This sort of a attack can be prevented only by fairly extreme measures such as carrying around a portable PC and never using a public workstation, or through physical proofs of identity such as thumbprint readers.

Basically, a clever and determined computer crook can break into any-thing. But you can at least make it harder to break in than walking through an open front door. Using an authentication approach such as Kerberos, you cannot only lock the front door, but you have a fairly good watchdog guarding that door.


  Home | About Us | Client Success | Services | Alliances | White Papers |  Contact Us |  Site Search

Comments or suggestions? webmaster@hermesgroup.com
Copyright© 2005. The Hermes Group, Inc. All rights reserved.