daemon@TELECOM.MIT.EDU (NESSETT%CCC.MFECC.LLNL.GOV@.MIT.EDU) Tue May 9 21:18:33 1989 From: NESSETT%CCC.MFECC.LLNL.GOV@.MIT.EDU To: KERBEROS@ATHENA.MIT.EDU On the 3rd of May at the Symposium on Security and Privacy in Oakland, I pointed out several problems with Kerberos that, I believe, require attention. I was somewhat surprised at the level of interest these comments received. So that my criticisms can be scrutinized by those directly involved with the ongoing Kerberos design, I summarize them below. Included are two other points, which I did not make at Oakland, related to the "realms" concept of Kerberos. Several of the comments made below are applications of work described in a technical report written several years ago by Dick Watson, Art Sorkin and me entitled, "Connection Management and Key Distribution Protocols." This report examines the design issues associated with the management of secure connections and critiques several key distribution protocols, such as Needham and Schroeder as well as Denning and Sacco according to how well they address these issues. I would be happy to send a copy of this report to anyone interested. As a final preliminary remark, let me point out that I have only been on the Kerberos mailing list since 9 May, 1989. If any of the criticisms given below are "old hat", I apologize. I believe Kerberos to be deficient in the following ways : o Kerberos keeps its encryption keys in application process space. While several Kerberos defenders have attempted to deflect this criticism with the observation that only short-term keys are so kept, in fact the long-term key derived by transforming the user's password also appears, however briefly, in application process space as well. That it is used quickly and then obliterated is of little comfort after one realizes that : a) computer programs installed on a host by an intruder with the specific intention of capturing the user's password need little time to do so, and b) copies of the password may exits in disk swapping space and terminal input buffers far longer than one might expect. The environment for which Kerberos was engineered (i.e., an "open" environment with little physical security) admits a rich assortment of intruder attacks that can take advantage of these properties. o Kerberos (as described in the Winter '88 USENIX paper) seals the client's IP address within ticket's and authenticators, yet these addresses cannot be guaranteed correct. I am told that the current version of the Kerberos protocol does not seal IP addresses in tickets and authenticators, since the Kerberos designers now understand that this affords no protection against message replay. Regrettably, the removal of these addresses does not fix the problem, since ticket/authenticator pairs captured by an intruder by observing the traffic passing over an Ethernet or through an intermediate node can be replayed. The window of opportunity for replay is on the order of minutes, well within the capacity of programs written by an intruder to capture such information and replay it. o The security properties of Kerberos rest to a large extent on the timestamp and lifetime information carried by tickets and authenticators. Since this information must be compared by servers against the value of some clock, its security properties also rests on the mechanism by which clocks are kept synchronized. Attacks against servers are possible by attacking the clock synchronization protocol/mechanism. This threat is not adequately met by the Kerberos architecture described in the public literature. o One major advantage of central authentication (which is the basic service that Kerberos offers) is the ability to revoke someone's access to distributed system resources quickly and atomically (i.e., by means of a single operation). At first sight, one might believe this possible with Kerberos by invalidating a user's long-term key in the Kerberos database. However, there is an attack against this strategy. If an intruder can isolate one of the slave Kerberos servers (perhaps by congesting an appropriate part of the network), thereby preventing the arrival of update messages, he can continue to operate even when his key has been invalidated in the master database. o While it is strenuously asserted that Kerberos only supports an authentication service, the mechanisms by which this service is provided strongly favors one type of authorization, namely, the use of access control lists. Authenticating a user's identity or identity.instance to individual servers for the purpose of access control (as distinct from accountability purposes) is of little value unless authorization is also based on identity. This introduces a transitivity problem (acknowledged in the USENIX paper) whereby servers accessing the resources of other servers on behalf of clients must pose as those clients. But this action violates the principle of least privilege, since servers posing as clients gain potential access to all of the client's resources, not just to those necessary to carry out their function. o There are occasions when it is desirable for administrators to shut down remote access to servers of given class (e.g., remote logon), while allowing remote access to other servers (e.g., E-mail). For example, if a worm is loose in a distributed system and you determine it is attacking the remote logon and file transfer services, you would like to shut down access to these services from outside your administrative domain (for the purposes of this discussion, administrative domain is used synonymously with realm) without affecting the inter-administrative-domain E-mail service. The realm mechanism supported by Kerberos is not well-suited to this requirement. First of all, to quickly revoke the privileges of a user from one realm to resources in another requires contacting the ticket granting server in the latter realm and "black-listing" that user. I have seen no mechanism described for doing this. Secondly, in the short-term (since tickets issued by the ticket granting server may be good for several hours), all servers of the target classes must be contacted and directed not to accept service requests from user's of other realms. Simply locating all servers of a given class is an arduous task, not helped by the fact that Kerberos keeps no record of the type of service offered by a particular server. In addition, a secure administration protocol is necessary to direct the involved servers to take the appropriate action. I have seen no description of such a protocol in the Kerberos literature. o Kerberos is designed to work in an environment in which all administrative domains use the same communications protocol (e.g., TCP/IP). In addition, all servers of all realms must support the Kerberos protocol in order to interoperate. These requirements are impractical. If there is one characteristic of large distributed systems it is that they are heterogeneous. Administrative domains in practical distributed systems will support different communications protocols and will not, in general support common mechanisms such as those of Kerberos. Schemes that require the existence of common mechanisms throughout the distributed system will have only limited applicability in the distributed systems of the future.
daemon@TELECOM.MIT.EDU (John T Kohl) Wed May 10 09:29:08 1989 From: John T Kohl <jtkohl@ATHENA.MIT.EDU> To: NESSETT%CCC.MFECC.LLNL.GOV@.mit.edu Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: [0717] ... ticket/authenticator pairs captured by an intruder by observing the traffic passing over an Ethernet or through an intermediate node can be replayed. ... This is a bug in the current implementations. The authenticator contains a sealed request_id which the server is supposed to check against the request_id's produced in the lastminutes (where is the max allowed clock skew). Any duplication should be treated as a replay attack. o Kerberos is designed to work in an environment in which all administrative domains use the same communications protocol (e.g., TCP/IP). We recognize this undesirability, and we plan to allow/support multiple protocols (e.g. ISO, IP, ...) in the next version of Kerberos. In addition, all servers of all realms must support the Kerberos protocol in order to interoperate. ... Not strictly true. As long as a service provider has access to a secret shared with its KDC, it can `play the game' as a passive recipient of authentication information. If the service provider wants to initiate authentication to some other entity, it needs to speak the Kerberos protocol to the appropriate KDC's, and it needs to know what communications protocol to speak with those KDC's. John Kohl <jtkohl@ATHENA.MIT.EDU> Digital Equipment Corporation/Project Athena
daemon@TELECOM.MIT.EDU (Jerome H Saltzer) Wed May 10 10:12:36 1989 From: Jerome H Saltzer <jhs%computer-lab.cambridge.ac.uk@NSFNET-RELAY.AC.UK> To: NESSETT%ccc.mfecc.llnl.gov@NSFNET-RELAY.AC.UK Cc: KERBEROS@ATHENA.MIT.EDU, In-Reply-To: NESSETT@gov.llnl.mfecc.ccc's message of Tue, 9 May 89 18:13:45 PDT <890509181345.2660012a@CCC.MFECC.LLNL.GOV> On the whole, the comments made by Nessett are quite interesting, especially to deciding to what range of problems Kerberos might be applicable. There are a few things in Nessett's analysis and critique that should be discussed before accepting the criticisms as valid, though. > o Kerberos keeps its encryption keys in application process space. I don't think that is a criticism of Kerberos itself as much as a criticism of the way in which Kerberos is implemented in UNIX systems. The protocol does not specify where keys should be kept, and in a system specially designed for security one might well provide hardware or software-in-the-supervisor storage mechanisms for the keys and for temporary storage to hold the password. Addition of such mechanisms to UNIX would not require changes in the basic design of Kerberos. (But the changes to UNIX would be extensive enough as to risk considerable debate, which is why the current Kerberos implementation didn't try.) > o Kerberos (as described in the Winter '88 USENIX paper) seals the > client's IP address within ticket's and authenticators, yet these > addresses cannot be guaranteed correct. . . . this affords no > protection against message replay. . . .The window of opportunity > for replay is on the order of minutes, well within the capacity of > programs written by an intruder to capture such information and replay > it. I think this criticism arises from a misunderstanding of the Kerberos design that may in turn arise from the somewhat simplified description that appeared in the USENIX paper. The inclusion of the IP address in a ticket is not intended to have any bearing on replay protection, even though it does have the effect of increasing slightly the work factor in creating a replay attack against a service that chooses not to protect itself against replay. The fundamental protection against replay resides in the expiration of authenticators. Any service concerned about replay should keep a list of authenticators it has accepted until they expire. The expiration times are very short exactly so that that list can be short. When a service keeps such a list, there is no window of replay vulnerability. > o The security properties of Kerberos rest to a large extent on the > timestamp and lifetime information carried by tickets and > authenticators. Since this information must be compared by servers > against the value of some clock, its security properties also rests on > the mechanism by which clocks are kept synchronized. This concern is definitely true, and it causes me to be somewhat worried about recent moves from the traditional eyeball-and-timex method of setting system clocks to the fancier network time-synchronization protocols. The eyeball-and-timex method at least provides a known level of security on which Kerberos can build. However, I think that the securing of the time-synchronization protocol is a matter best thought of as orthogonal to the authentication protocol; the Kerberos system should specify that a secure time-synchronization method be used rather than specify the method itself. > o One major advantage of central authentication (which is the basic > service that Kerberos offers) is the ability to revoke someone's access > to distributed system resources quickly and atomically (i.e., by > means of a single operation). At first sight, one might believe this > possible with Kerberos by invalidating a user's long-term key in the > Kerberos database. However, there is an attack against this strategy. > If an intruder can isolate one of the slave Kerberos servers (perhaps > by congesting an appropriate part of the network), thereby > preventing the arrival of update messages, he can continue to > operate even when his key has been invalidated in the master > database. Quick invalidation of user authentication was not one of the design criteria of Kerberos, and its lack is a valid criticism in some application situations. Since tickets can have a fairly long lifetime (8 hours is the default in the current implementation) there is a much simpler attack than isolating a slave Kerberos server--just acquire a set of tickets for interesting services, and then continue to operate for up to eight hours after the administrator pulls you from the database. > . . . Authenticating a user's identity or > identity.instance to individual servers for the purpose of access > control (as distinct from accountability purposes) is of little value > unless authorization is also based on identity. > This introduces a transitivity problem (acknowledged in the USENIX > paper) whereby servers accessing the resources of other servers on > behalf of clients must pose as those clients. This concern seems to be based on some assumptions about the range of transitive authorization mechanisms that can be based on identity. A service A when working for client B can present its credentials to service C in at least the following several ways-- - this is service A asking for service C - this is service A operating on behalf of client B asking for service C - this is client B asking for service C The present design of Kerberos does not provide for any form of transitive credentials-passing (that lack is the transitivity problem mentioned in the paper) so the proper criticism is probably about that lack, rather than on speculation on how it might be filled wrongly. > o There are occasions when it is desirable for administrators to shut > down remote access to servers of given class (e.g., remote logon), > while allowing remote access to other servers (e.g., E-mail). . . . > The realm mechanism supported by Kerberos is not well-suited to this > requirement. . . . I have seen no mechanism described for doing this. > ;In addition, a secure administration protocol is necessary to direct > the involved servers to take the appropriate action. I have seen > no description of such a protocol in the Kerberos literature. The requirement you describe here is not an authentication requirement, but an authorization requirement. Since Kerberos does not claim to provide authorization control, it is not surprising that it does not meet this requirement. > o Kerberos is designed to work in an environment in which all > administrative domains use the same communications protocol (e.g., > TCP/IP). Actually, there is nothing about the Kerberos design that requires it use TCP or that requires that all interoperating realms use the same protocol. The current implementation happens to be TCP, but there is no design barrier to producing a DECNET, SNA, or ISO version, and there is nothing to keep a realm from accepting connections via any protocol that it implements. One might be concerned that perhaps noone may ever get around to implementing other versions, but that is not a design problem. > In addition, all servers of all realms must support the Kerberos > protocol in order to interoperate. Perhaps you could more carefully specify this concern, because as it is currently stated, it appears to be dramatically overdrawn. Interoperation of any client with a server requires that the particular pair agree on the protocol to be used, and if the server demands Kerberos mediation, then the client had better be prepared to provide Kerberos credentials. If the server doesn't, then the client need not provide them. Both arrangements can coexist simultaneously, and a client can use Kerberos mediation with a server that itself obtains further services without Kerberos mediation. There are a lot of interoperability concerns in the world, but I can't figure out which one you think is made especially difficult to deal with by the use of Kerberos. Jerry Saltzer
daemon@TELECOM.MIT.EDU (NESSETT%CCC.MFECC.LLNL.GOV@.MIT.EDU) Thu May 11 12:10:53 1989 From: NESSETT%CCC.MFECC.LLNL.GOV@.MIT.EDU To: KERBEROS@ATHENA.MIT.EDU I would like to briefly explore several points made by John Kohl and Jerry Saltzer in response to my comments on Kerberos. Kohl proposes a counter-measure to thwart the replay threat that relies on servers retaining the request_ids produced by a client during an authenticator's replay window. This in fact works, but in the interest of simplifying the counter-measure model, observe that the technique sets up a de facto secure connection between the client and server (the request_ids acting as sequence numbers). Connection management for this secure connection is based on a timer mechanism, much as timers are used for the Delta-t and VMTP transport protocols to manage their connection records. One of the main contributions of the technical report cited in my previous comments is just this observation, i.e., protecting against communication threats is directly analogous to dealing with communication errors. The main difference between the two is that the statistical properties of intruder-created security "errors" are distinctly non-random. Thus, dealing with them can be achieved through the use of mechanisms, such as encryption, that randomize deliberate "errors." Saltzer suggests that any mechanism used to keep clocks synchronized is orthoginal to the Kerberos authentication protocol. From a system modularity viewpoint, this is correct. However, from a security viewpoint, the two are inseparable. That is, the security of the authentication protocol is directly related to the maintenance of synchronized clocks. In order to analyze the security properties of Kerberos in a given threat environment, the security characteristics of the clock synchronization mechanism must be established. Several points of rebuttal are made that appeal to the fact that Kerberos only supplies an authentication service, not an authorization service. However, authentication alone is almost useless. It must be integrated into a system of security services, such as access control and accountability, that provides statistical assurances that resources are being used properly. Thus, a legitimate question to ask is : what type of authorization mechanism does Kerberos naturally support and what is its security properties? I observed that Kerberos seems most naturally suited to work with access list authorization based on user identity, which has the undesirable transitive properties I suggest. That is, servers providing a value-added service to clients by operating on client resources are given access to more resources than they need to carry out their function. Examples are compilers, distributed database systems and distributed directory services, to mention a few. That the ability to quickly revoke a user's access to distributed system resources is not an authentication requirement and therefore not a Kerberos requirement, while technically correct, also ignores how Kerberos will fit into the overall security apparatus of a distributed system. One can imagine an authorization mechanism that works with Kerberos and also allows quick revocation, but it would very likely duplicate much of the Kerberos mechanism (e.g., a database under the control of a single administration, a protocol between servers and this database). Duplication of this mechanism would increase costs unnecessarily and introduce a higher probability of failure of the access control system. Both Kohl and Saltzer point out that the Kerberos protocols work properly regardless of the underlying transport services they use. In rereading by comments on this topic I see that I fail to make the point I intended. Let me try again. Large distributed systems are composed of parts, which I shall call administrative domains, managed by administratively independent organizations. These organizations retain control over the resources available within administrative domains and over the protocols that manage inter-resource interactions. It is futile to engineer a scheme for large distributed systems that relies on the existence of common mechanism across all administrative domains. In practice interoperability must rely on the translation of services at administrative domain boundaries. The reliance on a common authentication protocol to achieve inter-realm authentication limits the applicability of Kerberos to those distributed systems for which administrative domains support this common mechanism. It is not likely that a large proportion of future distributed systems will satisfy this property, although portions of them may. Thus, my point is that the realm concept of Kerberos is insufficiently general to solve many of the distributed system heterogeneity problems that will arise in the future.