Date: Thu, 8 Oct 92 14:46:45 -0400 From: "Barry Jaspan" <bjaspan@Athena.MIT.EDU> To: kerberos@Athena.MIT.EDU Archive-name: kerberos-faq/user Version: 1.0 Kerberos Users' Frequently Asked Questions October 6, 1992 Compiled by: Barry Jaspan, <bjaspan@athena.mit.edu> Geer Zolot Associates Kerberos; also spelled Cerberus. "n. The watch dog of Hades, whose duty it was to guard the entrance--against whom or what does not clearly appear; . . . is known to have had three heads. . ." -Ambrose Bierce, The Enlarged Devil's Dictionary This document answers Frequently Asked Questions about the Kerberos authentication system. It is freely distributable. Direct all responses and questions to bjaspan@athena.mit.edu. Most of the information presented here has been collected from postings to the comp.protocols.kerberos newsgroup (gatewayed to the mailing list kerberos@athena.mit.edu) and in general credit has not been given; complain if you feel offended. DISCLAIMER: Geer Zolot Associates makes no representations about the suitability of this information for any purpose. It is provided "as is" without express or implied warranty. In particular, this document is not intended as legal advice for exporting Kerberos, DES, or any other encryption software. Release Notes: This is the first full release of the Kerberos FAQ. Please make suggestions and contribute any information that you can. Questions addressed in this release: (a * indicates that no answer is currently available) 1. Kerberos and its Many Incarnations ---------------------------------------------------------------------- (1.1) What is Kerberos? What is it good for? (1.2) Where can I get Kerberos version 4 or 5? (1.3) What is the current status of version 4? (1.4) What is the current status of version 5? (1.5) Are version 4 and version 5 compatible? (1.6) How/why is Transarc's Kerberos different from MIT Kerberos V4? Can they interoperate? (1.7)* How/why is OSF DCE Kerberos different from MIT Kerberos V5? Can they interoperate? (1.8) What is Bones? What is it for? 2. Using and Administering Kerberos ---------------------------------------------------------------------- (2.1) Can I use Kerberos for local password validation? (2.2) What is the export status of Kerberos? (2.3) How can I delete a principal from the database? (2.4) What are the officially assigned Kerberos port numbers? (2.5) Are there Kerberos versions of telnet and ftpd? (2.6) Why does rlogin print "Warning: No Kerberos tickets obtained"? (2.7) What operating systems has Kerberos been ported to? What vendors provide commercial support for Kerberos? 3. Building and Installing Kerberos ---------------------------------------------------------------------- (3.1) Why do I get an error message from ld when make_commands is executed? (3.2) Why doesn't KRB5_defs.h exist when I build version 5? 4. Miscellaneous ---------------------------------------------------------------------- (4.1) List references for Kerberos and network security in general. ====================================================================== 1. Kerberos and its Many Incarnations ---------------------------------------------------------------------- (1.1) What is Kerberos? What is it good for? The following is an excerpt from [1]: Kerberos is a trusted third-party authentication service based on the model presented by Needham and Schroeder.[3] It is trusted in the sense that each of its clients believes Kerberos' judgement as to the identity of each of its other clients to be accurate. [This really isn't a very good description.] It is important to realize that Kerberos is a one-trick pony. It provides for mutual authentication between principals on an open network. It does not provide a mechanism for authorization; that is left to the application. It also does not provide password validation for individual workstations unless care is taken; see question 2.1. (1.2) Where can I get Kerberos version 4 or 5? In the United States, Kerberos is available via anonymous FTP from athena-dist.mit.edu (18.71.0.38). For specific instructions, cd to pub/kerberos and get the file README (for version 4) or README.KRB5_BETA2 (for version 5). Note that *YOU WILL NOT BE ABLE TO RETRIEVE KERBEROS WITHOUT READING THIS FILE*. Outside the United States, you can get Bones via anonymous ftp from ftp.funet.fi (128.214.6.100) in pub/unix/security/kerberos. A DES library is available from the same place. See question 1.8 for information on Bones. (1.3) What is the current status of version 4? MIT Kerberos 4 is stable and more or less cast in stone; MIT is no longer putting any resources into its development. From time to time minor bugs are reported; these may or may not be included in MIT's distribution. Several vendors provide their own versions of Kerberos which may contain improvements or extensions; see question 2.7. (1.4) What is the current status of version 5? A new beta release of MIT Kerberos V5 is available as of September 30, 1992; see question 1.2. This release brings MIT's implementation into full compliance with the current protocol. It is not backwards compatible with the previous beta release; according to MIT, this is the last release that will contain non-backwards compatible changes. (1.5) Are version 4 and version 5 compatible? No. Versions 4 and 5 are based on completely different protocols. The MIT Kerberos V5 distribution contains some compatibility code, however: (a) there is a library which converts Kerberos V4 library calls into Kerberos V5 requests, so you can run many V4 programs in a V5 environment by relinking; (b) the Kerberos server can optionally service V4 requests; (c) there is a program to convert a V4 format Kerberos database to a V5 format database. The names used by the V5 library have a prefix "krb5_" so they do not conflict with the V4 library. (1.6) How/why is Transarc's Kerberos different from MIT Kerberos V4? Can they interoperate? This is a fairly complex question, and my answer is almost guaranteed to be incomplete. The issue is regularly discussed on the info-afs-kerberos@transarc.com mailing list; send mail to the -request list for subscriptions. Years ago, the designers of AFS decided to implement their own security system based on the Kerberos specification instead of using the (then, not yet publicly available) MIT Kerberos V4. As a result, Transarc's AFS Kerberos speaks a different protocol but also understands the MIT Kerberos V4 protocol. They can, in principal, talk to each other; however, there are a sufficient number of annoying details and an insufficient number of advantages such that it may not be practical. The two versions use a different string-to-key function (the algorithm that turns a password into a DES key); the AFS version uses the realm name as part of the computation while the MIT version does not. A program that uses a password to acquire a ticket (e.g. kinit or login) will only work with one version. The two versions also use a different method of finding Kerberos servers. MIT Kerberos uses /etc/krb.conf and /etc/krb.realms to map hostnames to realms and realms to Kerberos servers. AFS kaservers for a realm, by definition, are located on the AFS database servers and can therefore be located using /usr/vice/etc/CellServDB. This means that a program built using the MIT Kerberos libraries will look in one place for the information while a program built using the AFS Kerberos libraries will look in another. You can certainly set up all three files and use both libraries, but be sure that everything is consistent. The two versions have a different password changing protocol, so you must use the correct 'kpasswd' program for the server you are talking to. In general, AFS clients that talk directly to the kaserver use an Rx-based protocol, instead of UDP as with MIT Kerberos, so those AFS clients cannot talk to an MIT server. In summary, AFS Kerberos and MIT Kerberos can interoperate once you've acquired a ticket granting ticket, which you can do with kinit (MIT) or klog (AFS, use the version that writes a ticket file). With a tgt, Kerberos applications such as rlogin can talk to an MIT or AFS Kerberos server and achieve correct results. However, it is probably best to pick one implementation and use it exclusively (1.7)* How/why is OSF DCE Kerberos different from MIT Kerberos V5? Can they interoperate? (1.8) What is Bones? What is it for? Bones is a system that provides the Kerberos API without using encryption and without providing any form of security whatsoever. It is a fake that allows the use of software that expects Kerberos to be present when it cannot be. Why does it exist? Kerberos is a network security system which relies on cryptographic methods for its security. Since Kerberos' encryption system, DES, is not exportable, Kerberos itself cannot be exported or used outside of the United States in its original form. (See question 2.2 for more information.) As a partial solution to this problem, the Kerberos source code was modified by the addition of #ifdef NOENCRYPTION around all calls to DES functions. Compiling this version with the symbol NOENCRYPTION defined results in a system that looks like Kerberos from an application's point of view but that does not require DES libraries (and, as a result, does not speak the real Kerberos protocol and does not provide any security). The final piece in this puzzle is a program called "piranha" which takes the Kerberos sources and removes all of the calls to the encryption routines, replacing it with the code which was under #ifdef NOENCRYPTION, producing the system known as Bones. Bones has the property that there is absolutely no question about whether or not it is legal to transport its sources across national boundaries, since it neither has any encryption routines nor any calls to encryption routines. #ifdef NOENCRYPTION was not documented, and it was only intended to be used in the above manner. Someone who tries compiling Kerberos with that #define has in some sense "voided the warranty", and will get something which is both (a) not secure and (b) not Kerberos. 2. Using and Administering Kerberos ---------------------------------------------------------------------- (2.1) Can I use Kerberos for local password validation? Yes, but only under certain circumstances and only if you are careful. Requests for Kerberos ticket granting tickets (tgts) (e.g. from kinit or login) are sent in plaintext to the Kerberos server, which then responds with credentials encrypted in the requesting principal's secret key. The program then attempts to decrypt the data with the supplied password and considers the authentication "successful" if the decryption appears to yield meaningful results (such as the correct principal name). The problem here is that the requesting program cannot know for sure whether the decryption succeeded or, more importantly, whether the response actually came from the Kerberos server. An attacker could, for example, walk up to an unattended machine and "log in" as a non-existent user. Kerberos will eventually respond with an appropriate error, but the attacker can arrange for another program to deliver a fake response to login first; he then types the correct password (which he knows because he created the fake response in the first place) and succeeds in spoofing login. The solution to this problem is for login to verify the tgt by using it to acquire a service ticket with a known key and comparing the results. Typically, this means requesting an rcmd.<hostname> ticket, where <hostname> is the local hostname, and checking the response against the key store in the machine's /etc/srvtab file. If the keys match then the original tgt must have come from Kerberos (since the key only exists in the srvtab and the Kerberos database), and login can allow the user to log in. The solution works only so long as the host has a srvtab containing an rcmd.<hostname> (or any other standard principal) entry. This is fine for physically secure or single-user workstations, but does not work on public workstations in which anyone could access the srvtab file. (2.2) What is the export status of Kerberos? There is a tremendous amount of confusion on this topic. In general, the COCOM treaty, signed by twenty or so countries including the United States, says that all cryptographic material will be treated as munitions. This means that these countries treat exporting DES the same way they would treat exporting weapons, fighter planes, and other nasty stuff. You cannot export such materials to any other country without an export license. However, it *is* possible to get an export license for Kerberos (DEC apparently has one for ULTRIX) provided it is hacked up in the correct way. The correct way appears to include making it impossible to perform encryption on arbitrary user data; authentication is okay, but secrecy is not. Since the Kerberos API provides this functionality, it must be carefully removed before an export license will be granted. Of course, I am not a lawyer; this information is merely a collection of what others (who are also not lawyers) have said and should not be interpreted as legal advice. If anyone out there has firm legal advice, feel free to contribute it. (2.3) How can I delete a principal from the database? MIT Kerberos V4 does not include a single command to delete a Kerberos principal. This was an intentional omission based on the assumption that by making deletion difficult, accidents were less likely to happen. If you want to delete a principal, do "kdb_util dump", edit the ASCII dump with an editor, and do a "kdb_util load". Obviously, you can write a shell script to make this more convenient. AFS Kerberos' and Kerberos V5's admin tools have a simple delete request. (2.4) What are the officially assigned Kerberos port numbers? The file src/prototypes/services.append in the MIT Kerberos distribution contains the commonly used port assignments. This file is not the whole story, however. "kerberos" has officially been moved to port 88, although people will have to listen on port 750 for some time to come, and assume that many servers won't be converted to listen to port 88 for some time. "kerberos_master" and "krb_prop" have not been reserved, but they are only used for intra-site transactions so having them reserved probably isn't necessary. Furthermore, both of their port numbers have already been assigned to other services, so requesting an official assignment will force them to change. "eklogin", "kpop", and "erlogin" have not been officially reserved, but probably should be. Their ports are not currently assigned to other services, so hopefully they will not have to change if an official assignment is requested. (2.5) Are there Kerberos versions of telnet and ftpd? A Kerberos telnet is available via anonymous ftp from ftp.uu.net, in /networking/telnet.91.03.25.tar.Z. There is also a Kerberos telnet in the V5 distribution which is based on the 4.4BSD telnet/telnetd. A distributable Kerberos version of ftpd does not appear to exist. (2.6) Why does rlogin print "Warning: No Kerberos tickets obtained"? Kerberos rlogin uses a standard Kerberos exchange to prove the identity of the user to the remote host, after which it uses the /etc/passwd and a .klogin file to determine whether the user is authorized to log in. Since the user never types a password, klogind on the remote host cannot obtain a new ticket granting ticket. The user's existing tgt cannot be used on the remote host, because MIT Kerberos V4 tickets are host-specific. Therefore, even though the user has logged in to the remote host, there is no ticket granting ticket for the user available on the remote host. The warning message is merely a reminder of this fact. (2.7) What operating systems has Kerberos been ported to? What vendors provide commercial support for Kerberos? The following port survey is compiled from data obtained from the first SF Bay Area Kerberos User Group meeting, plus additional information obtained from other sources. Corrections and additions welcomed (to edwardsg@iscnvx.is.lmsc.lockheed.com and/or kerberos@lmsc.lockheed.com). Note that this is guaranteed to be incomplete and out of date and almost certainly contains errors. Kerberos Port Survey - 17 June 1992 5 - Kerberos v5 port done D - DCE version of Kerberos done d - DCE version of Kerberos being ported or planned 4 - K4 port done, works p - porting or planned port of version 4 - - no product here who c f g m o p r t w z ? AIX 3.2 4 - - - 4 - - - - - - Cisco - - - - - - - - - p - Convex - - - - - - - - - - - LMSC partial port Cray - - - - - - - - - - - LLNL partial port, LMSC porting DECstation 4 - - - - - - - - - - HP - - - - - - - - - - d Intel Sv.4 - - - - - - - - - - d Mac 6.x p - - - 4 - - - - - - Mac 7.x p - - - 4 - - - - - - MsDos - 4 D - 4 - - - - - - MVS - - - - p - - - - 4d - NeXT - - - - 4 - - - - - - Novell - - - - p - - - - d - Pyramid - - - - - - - - - p - Sequent - - - - p - - - - - - SGI Irix 4.0.3 4 - - - - - - - - - p Sandia port Solaris 2.0 p - - - - - - - - d - SunOS 4.0.1 4 - 4 - 4 - - - - - - SunOS 4.1 4 - 4 - 4 - - - - - - Ultrix 4.1 4 - - - - - - - - 4 - VM - - - - - - - - - d - VMS - - - - - 4d - 4 4 - - Win3.1 - - - - - - - - - - p Xyplex - - - - - - - - - 4 - who c f m g o p r t w z ? c --> Cygnus Support /Steve Wilson 415/322-3811 swilson@cygnus.com f --> FTP Software /Kristine Kilduff 617/246-0900 kpk@ftp.com g --> Gradient Technologies m --> MIT release o --> Open Computing Security Group /Michael Evans 206/883-8721 p --> Project Pilgrim /Art Gaylord 413/545-2420 art@cs.umass.edu r --> Cisco Routers & Bridges t --> TGV /S. Vance 800/tgv-3440 vance@tgv.com w --> Wollengong (sp) x --> Xyplex (terminal server) z --> Product for one OEM/self Rumored ports by: Transarc - makes DCE developers kits Security Dynamics ? 3. Building and Installing Kerberos ---------------------------------------------------------------------- (3.1) Why do I get an error message from ld when make_commands is executed? The make_commands program (from the file util/ss/make_commands.c, around line 101) spawns ld as part of its normal operation. The arguments to ld are hard-coded into the exec() call and are not correct for all systems. To fix the problem, examine the call and determine the correct arguments for your environment; once you know the correct arguments, the change to the source code will be obvious. (3.2) Why doesn't KRB5-types.h exist when I build version 5? There's a bug in Sun's imake/cpp setup, so the Makefile that is generated in lib/asn.1 is broken. KRB5-types.h is generated by the ISODE program pepsy; look in the makefile just before pepsy is called. It's fairly obvious where a tab character is missing. 4. Miscellaneous ---------------------------------------------------------------------- (4.1) List references for Kerberos and network security in general. See the bibliography at the end of this document. ---------------------------------------------------------------------- BIBLIOGRAPHY The FTP site for a reference, when known, is listed in square brackets following the entry. Yes, I know that these are not in Officially Blessed Bibliography Format. Sue me. [1] Jennifer G. Steiner, Clifford Neuman, Jeffrey I. Schiller. "Kerberos: An Authentication Service for Open Network Systems", USENIX Mar 1988. [athena-dist.mit.edu:pub/kerberos/doc/usenix.PS] [2] S. P. Miller, B. C. Neuman, J. I. Schiller, and J. H. Saltzer, "Kerberos Authentication and Authorization System", 12/21/87. [3] R. M. Needham and M. D. Schroeder, "Using Encryption for Authentication in Large Networks of Computers," Communications of the ACM, Vol. 21(12), pp. 993-999 (December, 1978). [4] V. L. Voydock and S. T. Kent, "Security Mechanisms in High-Level Network Protocols," Computing Surveys, Vol. 15(2), ACM (June 1983). [5] Li Gong, "A Security Risk of Depending on Synchronized Clocks", Operating Systems Review, Vol 26, #1, pp 49--53. [6] S.M. Bellovin and M. Merritt, "Limitations of the Kerberos Authentication System," USENIX Jan 1991. [research.att.com:dist/internet_security/kerblimit.usenix.ps] [7] Refik Molva, Gene Tsudik, Els Van Herreweghen, and Stefano Zatti, "KryptoKnight Authentication and Key Distribution System." [jerico.usc.edu:pub/gene/kryptoknight.ps.Z] [8] C. Neumann and J. Kohl, "The Kerberos(tm) Network Authentication Service (V5)," April 1992. Currently released as an Internet Draft.