|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T U
Length: 772207 (0xbc86f) Types: TextFile Notes: Uncompressed file
└─⟦4f9d7c866⟧ Bits:30007245 EUUGD6: Sikkerheds distributionen └─⟦07e3da56a⟧ »./papers/Kerberos/kerberos.mail.Z« └─⟦this⟧
[0001] root@TELECOM.MIT.EDU Kerberos 08/07/87 18:09 (1 line) Subject: Reason for this meeting This is a transcript of the "kerberos" mailing list. --[0001]-- \f [0002] daemon@TELECOM.MIT.EDU Kerberos 08/07/87 18:58 (4 lines) Subject: test From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: kerberos-mtg@achilles.LOCAL does this work ... --[0002]-- \f [0003] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:12 (220 lines) Subject: Kerberos Support for Remote Services From mtc@ATHENA.MIT.EDU Tue Jun 3 17:14:23 1986 To: geer, bcn, spm Cc: charlie, saltzer, noah, jis Subject: Kerberos Support for Remote Services, Project Description (long) Date: Tue, 03 Jun 86 17:12:41 -0500 From: Mark Colan <mtc@ATHENA.MIT.EDU> Introduction I have been asked to put Kerberos support into the remote services rlogin, rsh, and rcp. The task has evolved as I have proceeded; therefore, the purpose of this project is to document what I'm doing with this project, to identify and resolve conflicts with what other people think should be done, and to give a status report on the project. Comments on this report are encouraged. A feature of my approach is that it requires a new port number for the Kerberos-authenticated services. These port numbers should be assigned by SRI-NIC so that they can become "well-known"; if we do not do this, it may break rlogin to foreign hosts (ie, if the host thinks the port means something other than Kerberos). The Problem In the Athena environment we lose control over the administration of individual workstations. This fact allows a workstation user to capitalize on a hole in the rlogin (etc) "host trusting" mechanism, possibly to destructive ends, assuming that the user has the root password for the workstation, which is likely. For example, I (mtc) have the machines I use regularly set up to trust each other. "menelaus" is a VAX750 and "goanna" is my uVax II workstation. If goanna goes down, it creates an opportunity for an evil hacker to use any workstation to masquerade as mtc logged in on goanna: all he has to do is name the workstation "goanna" and create an account for "mtc", then rlogin to menelaus. Menelaus cannot tell that the hacker is not me, and because of the way I have trusting set up, allows the hacker full access to my menelaus resources. The only alternative to this security hole that exists now is removal of "trusting" from my ~/.rhosts file; this causes the nuisance of having to type my password each time I begin an rlogin session. The Solution Kerberos can be used to prevent this kind of illicit access. To start an authenticated rlogin session, a user creates a set of encrypted tickets (via vxlogin) that absolutely identify him to a remote host. With this kind of security, it is possible to trust a session, since Kerberos can detect tampering, re-use, etc, of the tickets. Goals of the Project The services to be modified to use Kerberos authentication are rlogin, rsh, and rcp. The changes must be made in such a way as to not break the existing function for use without Kerberos. For example, for the rlogin service: 1) An external user (eg, on a client without Kerberos) must still be able to rlogin to a Kerberos host, provided that that host is set up to allow the access. 2) A user of a Kerberos host must be able to rlogin to a host that does not support Kerberos. A change to the format of the ~/.rhosts and /etc/hosts.equiv files have been proposed to allow some new flexibility in tailoring the Kerberos environment; these changes are described later. Since these services make use of a few common routines for setting up the connection, changes should be made to those routines which can be used by all targeted services. The changes will be the minimum required to support authentication, to avoid breaking any other existing functions. Changes to Permission Control Files Steve Miller suggested some changes to the format of the files ~/.rhosts and /etc/hosts.equiv for better tailoring to the Kerberos environment. These files allow users to rlogin without typing their password for each session. Currently, the files can contain two types of specification: host trust all users from the specified host host username trust username from the specified host The proposed extensions use a special cookie, "*krb*", to indicate that the control applies to Kerberos logins: *krb* allow Kerberos-authenticated logins from any user on any host. host *krb* allow Kerberos-authenticated logins from any user on the specified host. host user *krb* allow Kerberos-authenticated logins from the specified user on the specified host. At the moment, an authenticated rlogin now works without these extensions; it is governed by the same restrictions as a non-kerberos login. The main difference between the authenticated and non-authenticated login is that we have closed the hole of doubt as to the clients true identity. However, a remote user can still gain access without authentication by using the standard version of rlogin. What the proposed extensions provide is flexibility in restricting access. For example, a workstation in building E40 might be willing to trust any workstation or host in E40 with or without Kerberos authentication, but require others to authenticate their sessions. The /etc/hosts.equiv file spec is: *krb* menelaus goanna (other hosts and workstations) Changes to rlogin protocol Continue to support the normal rlogin protocol: lusername<0> rusername<0> terminal_info<0> Add alternate protocol for Kerberos support: KTEXT object # count in text form, a space, and count chars # of the Kerberos text string. rusername<0> terminal_info<0> Note that the Kerberos protocol does not explicitly supply the lusername; this is taken from the authenticated data enclosed in the KTEXT structure. Changes to rcmd.c Added a new argument, a pointer to a KTEXT object, which controls the type of protocol used by remote services. If the pointer is NULL, use the normal protocol; if it points to a KTEXT object, use the Kerberos protocol via SendKerberosTicket(). New routine SendKerberosTicket() sends a KTEXT structure across the connection from the client to the server. New routine GetKerberosData() snarfs the KTEXT sent by SendKerberosTicket() and uses rd_ap_req to extract the AUTH_DAT from the KTEXT object. The remote username (ie client's local username) is translated by antoln and returned. ruserok() (and its subordinate routines) will be changed to extend the function of /etc/hosts.equiv and ~/.rhosts, as described earlier. Changes to rlogin.c Find the port number for a Kerberos login session (from /etc/services). If not found, punt the Kerberos login session and try normal rlogin. Otherwise, create a KTEXT object and fill it in (via mk_ap_req). Attempt connection to the remote host using the Kerberos port, by means of rcmd() with a pointer to the KTEXT object. If the connection fails, punt the Kerberos login session, release the KTEXT object, and try the normal login. If the Kerberos login failed, find the port number for a normal login session. Attempt the connection via rcmd(), using NULL for the KTEXT object. Changes to rlogind.c Look at the command name. If its "rlogind", spawn "login -r fromhost" as before. If its "klogind", spawn "login -k fromhost" to get login to expect the Kerberos protocol. Changes to login.c Check for the presence of "-k". Allow only one of: "-r -h or -k" (instead of the first two only). If "-r" is found, call doremotelogin() as before. If "-k" is found, call doKerberosLogin() instead, to use the modified rlogin protocol. Add new routine doKerberosLogin(). It snarfs a KTEXT object off of the connection stream via GetKerberosData() (see rcmd.c). Then gets the lusername (ie, rusername sent by rlogin) and terminal characteristics. ruserok() is called as before (for the time being, until the Kerberos extensions to /etc/hosts.equiv are implemented), but using the lusername enclosed in the KTEXT, which is known to be authentic. Changes to rsh.c Will be changed analogous to the changes to rlogin.c. Changes to rshd.c Will be changed analogous to the changes to rlogind.c and login.c. Changes to rcp.c Will be changed analogous to the changes to rlogin.c. Current Status rlogin now works with Kerberos authentication, and does not break existing function. It is complete except for the changes to ruserok. Work remaining: modify rsh, rshd and rcp to use the new version of rcmd() etc. --[0003]-- \f [0004] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:12 (68 lines) Subject: Re: Kerberos Support for Remote Serv From Saltzer@ATHENA.MIT.EDU Mon Jun 9 00:52:57 1986 Date: Mon, 9 Jun 86 00:47:25 EDT Subject: re: Kerberos Support for Remote Services, Project Description (long) To: Mark Colan <mtc@ATHENA.MIT.EDU> Cc: geer@ATHENA.MIT.EDU, bcn@ATHENA.MIT.EDU, spm@ATHENA.MIT.EDU, charlie@ATHENA.MIT.EDU, noah@ATHENA.MIT.EDU, jis@ATHENA.MIT.EDU In-Reply-To: Mark Colan <mtc@ATHENA.MIT.EDU>'s message of Tue, 03 Jun 86 17:12:41 -0500 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> Mark, That plan looks fairly good. Here are some minor questions. (Your writeup assumes rather substantial recall of a lot of Kerberos details; since I didn't memorize them, some of the answers to these questions may seem obvious to you.) 1. > To start > an authenticated rlogin session, a user creates a set of encrypted > tickets (via vxlogin) that absolutely identify him to a remote host. What is "vxlogin"? 2. >Changes to rlogin.c > > Find the port number for a Kerberos login session (from /etc/services) > If not found, punt the Kerberos login session and try normal rlogin. > Otherwise, create a KTEXT object and fill it in (via mk_ap_req). The management of Kerberos service keys isn't clear here. Does every server that might allow Kerberos-mediated rlogin have a different key? Or is there a standard Kerberos-mediated rlogin key that every server must know? Assuming the former, just what does the prospective client ask for by way of a ticket? How does the proper UNIX user id get into the ticket? Do you assume that the Kerberos name of the user is identical to the UNIX user id to be used at the rlogin server? 3. Are the same service keys used for rsh, rcp, and rlogin? 4. > Add new routine doKerberosLogin(). It snarfs a KTEXT object off of > the connection stream via GetKerberosData() (see rcmd.c). Then gets > the lusername (ie, rusername sent by rlogin) and terminal > characteristics. Where does the rlogin service store the private key it uses for deciphering Kerberos tickets? 5. > A feature of my approach is that it requires a new port number for > the Kerberos-authenticated services. This feature strikes me as being more of a bug. Have you established for certain that you can't just extend the present protocol in a way that produces a well-defined error response if you try to use the Kerberos extensions in talking to a server that doesn't know about Kerberos? I would expect that you could define a couple of new operation types within the protocol that request a Kerberos login and that supply the Kerberos ticket. Jerry --[0004]-- \f [0005] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:12 (36 lines) Subject: Re: Kerberos support for remote Serv From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Mon Jun 9 08:10:02 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: re: Kerberos Support for Remote Services, Project Description (long) To: Saltzer@ATHENA.MIT.EDU Cc: mtc@ATHENA.MIT.EDU, geer@ATHENA.MIT.EDU, spm@ATHENA.MIT.EDU, charlie@ATHENA.MIT.EDU, noah@ATHENA.MIT.EDU, jis@ATHENA.MIT.EDU In-Reply-To: <8606090447.AA16708@HERACLES> I will respond to the non-aplication specific questions. Vxlogin is the program used to get one's initial tickets. It is the piece of kerberos that will be merged into the login program. Each server that allows kerberos mediated rlogin has a separate key (conceptually). In practice, you could use the same keys, but the tradeoff is that compromising the security of one system would then give you the key for the other if only one key is used. The server gets it's key from the file /etc/srvtab (which is protected using Unix's file protection mechanism. A ticket for a client is only good to rlogin to a single host. If a client needs to rlogin to a different host he has to get a new ticket. This is (or will be) transparent to both the user and the application since the kerberos library routine to create an authenticator will get the new ticket from kerberos using its ticket granting ticket. The unix user ID of a user does not appear in the ticket. Instead, the routine antoln (authentication name to local name) is called by the server to convert the name obtained from the ticket into a local username. At the moment, the routine just returns the initial part of the authentication name, but the routine is used so that an arbitrary mapping can take place once it is finally implemented. ~ Cliff ------- --[0005]-- \f [0006] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:12 (108 lines) Subject: Re: Kerberos Support for Remote Serv From mtc@ATHENA.MIT.EDU Mon Jun 9 16:25:49 1986 To: saltzer Cc: geer@athena.mit.edu, bcn@athena.mit.edu, spm@athena.mit.edu, charlie@athena.mit.edu, noah@athena.mit.edu, jis@athena.mit.edu Subject: re: Kerberos Support for Remote Services, Project Description (long) Date: Mon, 09 Jun 86 16:24:04 -0500 From: Mark Colan <mtc@ATHENA.MIT.EDU> Jerry, Thanks for your comments and questions. Here are some answers: > What is "vxlogin"? As bcn stated, it is (at present) a utility which creates the tickets. The user types his Kerberos name and password, and tickets are created if they match. Eventually vxlogin is planned to be merged into login(?). > The management of Kerberos service keys isn't clear here. Does every > server that might allow Kerberos-mediated rlogin have a different > key? Or is there a standard Kerberos-mediated rlogin key that every > server must know? Assuming the former, just what does the > prospective client ask for by way of a ticket? How does the proper > UNIX user id get into the ticket? Do you assume that the Kerberos > name of the user is identical to the UNIX user id to be used at the > rlogin server? I its the former: every server has a different key. Upon calling vxlogin, the client gets ALL tickets s/he is entitled to. I do not need to assume that the Kerberos name is the same as the Un*x id on server, because of the following: a. A kerberos name is placed in the ticket by vxlogin. This name may or may not be the same as the client's local username; a translation is performed by the server (via antoln) which takes the kerberos name and translates it to the client's username. I understand that at present they ARE in fact the same, but by using antoln to do the "conversion", the code will continue to work if at some point in the future they are different. b. The remote username, specified by the client via a switch on the rlogin command, is not involved with Kerberos. The login will be attempted if Kerberos says that the request has been authenticated; generally, changing one's username over an rlogin involves typing a password anyway. > 3. Are the same service keys used for rsh, rcp, and rlogin? There are separate service keys for each type of service. rcp and rsh are actually the same "service", in that the same server (rshd) is used to service both clients; therefore, they both use the same service key. rlogin is a different type of service and thus has a different service key. You've probably noticed that the current scheme calls for the creation of a large number of service keys: one for each type of service available on each host. It is not clear to me that having separate keys for each service, for the purpose of additional flexibility in controlling access, is worth the cost of multiplying the number of keys that are required; this feature appears to be a remnant of the days when Kerberos was also in the authorization business. > Where does the rlogin service store the private key it uses for > deciphering Kerberos tickets? In /etc/srvtab, under Un*x file protection (see bcn's note). > This feature strikes me as being more of a bug. Have you established > for certain that you can't just extend the present protocol in a way > that produces a well-defined error response if you try to use the > Kerberos extensions in talking to a server that doesn't know about > Kerberos? I would expect that you could define a couple of new > operation types within the protocol that request a Kerberos login and > that supply the Kerberos ticket. I generally refer to a "feature" as a known, unavoidable side effect. Frequently a feature is undesirable, as is the case here. I could have underscored this by labelling it a "misfeature". A "bug", by contrast, is when a program fails to work as designed. There are three cases worth considering here: 1. Both client and server speak Kerberos. If I could assume this to be the case, it would be very easy to extend the protocol. 2. The server knows Kerberos, the client does not. My original version assumed that this would be one of the cases. It distinguished between a Kerberos-speaking client and one that did not by means of a special cookie sent before the username in the protocol; receipt of this cookie changed the server's expectation of what followed. Because of the requirements of solving #3 below, I removed this ugly hackery. 3. The client knows kerberos, the server does not. The term "protocol" glorifies the communication between the client and server: it is simply a one-way message consisting of three or four NULL-terminated text strings from the client to the server. It does NOT provide any well-defined error indication. If rlogind does not like the information sent by the client, it simply prompts the user for a "login: ". While I could look for a string of characters like "login: ", I feel this is not well defined; local versions of login may vary. Steve had suggested the use of the new port. It has the advantage of absolutely identifying servers which speak Kerberos (after it is made "well-known" via registry). After thinking about it, I doubt a better solution exists, but I'm listening. mtc --[0006]-- \f [0007] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:12 (41 lines) Subject: Kerberos Servers From spm@ATHENA.MIT.EDU Fri Jun 13 15:58:31 1986 To: saltzer, ostlund, kelley, jis, bcn Cc: spm Subject: Kerberos servers Date: Fri, 13 Jun 86 15:57:02 -0500 From: Steve Miller <spm@ATHENA.MIT.EDU> Some of us have been discussing alternate means of providing a highly available Kerberos service, and I believe that this issue needs to be pondered for a while. The most direct approach is to put a kerberos server in each cluster, thus insulating each cluster from gateway and backbone problems. The drawback with this solution is that it requires a lot of servers (and $$), each of which ought to be more secure physically than we currently can provide, and each of which needs to be updated and managed. In terms of the workload on Kerberos, I estimate that with 2000 workstations, except for brief periods of bursty load (26-100 empties into the adjoining terminal room), three or four uvax2 class servers will provide sufficient service. Each should be able to handle 3-5 requests/second, with a typical request asking for 3 tickets. Once routine logging for debugging is turned off, the limiting factor is software encryption time. We will have much more than 4 clusters. I would propose, as a long term alternative, that instead of spending the equipment money on a Kerberos server per cluster, we install only 3 or 4 Kerberos servers, judiciously located, and that the extra equipment budget go towards providing a more redundant network, e.g. two gateways per cluster. This would provide higher availability for all services, not just Kerberos. Of course, just providing the gateways is not adequate if the backbone is not highly reliable, but I suspect sooner or later the backbone will for many reasons have to become highly reliable. In the interim, Pete and John are considering the one per cluster approach, since it is in the realm of what they can do, and do quickly. --[0007]-- \f [0008] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:12 (38 lines) Subject: Re: Kerberos Support for Remote Serv From Saltzer@ATHENA.MIT.EDU Sat Jun 14 10:42:47 1986 Date: Sat, 14 Jun 86 10:40:10 EDT Subject: re: Kerberos Support for Remote Services, Project Description (long) To: Mark Colan <mtc@ATHENA.MIT.EDU> Cc: geer@athena.mit.edu, bcn@athena.mit.edu, spm@athena.mit.edu, charlie@athena.mit.edu, noah@athena.mit.edu, jis@athena.mit.edu In-Reply-To: Mark Colan <mtc@ATHENA.MIT.EDU>'s message of Mon, 09 Jun 86 16:24:04 -0500 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> > > What is "vxlogin"? > > As bcn stated, it is (at present) a utility which creates the tickets. Where did the IBM people go? Who let a name like that into Athena? Are all logins to a VAX? Come on, guys, change its name. (Drop the "v"). > a. A kerberos name is placed in the ticket by vxlogin. This name may or > may not be the same as the client's local username; a translation is > performed by the server (via antoln) which takes the kerberos name This approach sounds good, but it just pushes the problem back to whoever has to implement antoln. (Which would be better named an_to_ln.) Are there any good ideas on how that function should be implemented in the long run? > You've probably noticed that the current scheme calls for the creation of > a large number of service keys: one for each type of service available on > each host. It certainly seems to me that rsh, rcp, and rlogin should be handled as one service and thus use one service key. Jerry --[0008]-- \f [0009] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:12 (110 lines) Subject: Kerberos and rlogin services From mtc@ATHENA.MIT.EDU Sat Jun 14 12:36:52 1986 To: saltzer Cc: kerberos, geer, jis, charlie, noah Subject: Kerberos and rlogin services Date: Sat, 14 Jun 86 12:34:52 -0500 From: Mark Colan <mtc@ATHENA.MIT.EDU> [Reminder: for those of you not already on the new "kerberos" mailing list, add yourself via madm if you want to participate in these discussions.] Jerry, This is a reply to your two notes of Saturday June 14. I have avoided addressing issues not directly related to the my part of the project in favor of letting Cliff or Steve comment on them. > ...for simplicity, the switches [whether to use normal or Kerberos- > authenticated protocols] probably should consist of placing > either or both of two demon startups in /etc/inetd.conf.) That is exactly the case now. > ...it might be appropriate to make it possible to tie it in to > opening of an X window, and call it "xlogin" rather than "rlogin". I've been calling it "klogin" etc. Programs which start with "k" are just links to their "r*" counterparts; for the daemons (servers), the name of the program is used to determine the expected protocol. Switching to "x*" names is okay with me, except that implies some interaction with the window system. Maybe that's appropriate; we COULD extend rlogin to pop up a new window for the session if we know we are on an X display. > a single command named "rlogin" with the current user interface > might under the covers first try to invoke the xlogin protocol, > and if rebuffed (by the new, cleanly specified xlogin protocol) > then attempt to use the rlogin protocol on the old rlogin port. That's the way it is now, except for the new protocol. > It certainly seems to me that rsh, rcp, and rlogin should be handled > as one service and thus use one service key. I agree. What to call it to distinguish it from other Kerberos clients? "xlogin" does not seem to be a good name for a service that includes rsh and rcp. > ...the idea that Kerberos should be controlled using a mechanism > like the rlogin /etc/hosts.equiv and ~/.rhosts files is going > the wrong direction...The notion that Kerberos might be trusted > but only if the login comes from certain hosts or users is flawed. I agree that the use of these two files is a mess, non-intuitive, etc, and that the proposed extensions to the file make it much messier. Thus, you are proposing to eliminate this kind of administrative control from Kerberos-authenticated services altogether. That implies that Kerberos authentication, together with the protection obtained from the Un*x password and file system, is sufficient control for remote access. > the old protocol is so badly designed that it can't be extended; > yet the proposed new protocol is just as bad as the old one... > Create a new protocol on a new port that is Kerberos-only, that > has a nice clean protocol specification, and that is tailored to our > real requirements...a single new protocol (the one I call xlogin) > should actually suffice to do all of these things. I have approached the project with the philosophy of changing as little as possible to get the work done, to avoid side effects of the changes; the "new" protocol is a simple extension to the old one. A new protocol sounds like a good idea, and I'm willing to design and implement one. The major problems with the old protocol are the following: 1. It is not (readily) extensible (in some situations) 2. It provides no feedback (normal/error indication) 3. The only way to determine whether we have the entire message is context-specific - have enough Null-teminated strings been received? Off the top of my head, I can think of a very simple, clean protocol that addresses these points, while providing the necessary exchanged of information. I'd appreciate comments from those of you who have more experience with protocol design. A (very) rough sketch follows: 1. Send first a function code, two or four bytes, which requests an action and implies the form of the parameters that follow, and a length attribute to state how many bytes of message follow. The length is necessary because some messages, like the Kerberos ticket, will not be Null-terminated strings. Some initial functions: a. Kerberos-authenticated rlogin request (followed by ticket and other information) b. Kerberos-authenticated rsh/rcp request (followed by ticket and other information). These are the same function because rcp uses the rshd server. c. Acknowledgement, followed by a status code (okay, error code, etc). 2. The server side always sends back an acknowledgement. The client acknowledges the acknowledgment, signalling the server to actually do its work. Note that this protocol provides all of the services we are discussing, in the same way as the rcmd() routine now provides them. mtc --[0009]-- \f [0010] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:14 (21 lines) Subject: revised ext_srvtab From ostlund@ATHENA.MIT.EDU Tue Jun 17 17:08:53 1986 From: ostlund@ATHENA.MIT.EDU Date: Tue, 17 Jun 86 17:07:33 EDT To: kerberos Subject: revised ext_srvtab I've fixed menelaus:~ostlund/src/ext_srvtab to ask for the Kerberos master key and then use this to decrypt services' passwords before writing them to the srvtab file. Usage is: ext_srvtab host ... You will be asked for the Kerberos master password. If you enter the correct password, a file "host-new-srvtab" file will be generated for each named host. John --[0010]-- \f [0011] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:14 (43 lines) Subject: rlogin, klogin, etc From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Wed Jun 18 16:16:27 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: rlogin, klogin, etc To: kerberos@ATHENA.MIT.EDU Maybe it is time to make a clean break from the existing Unix programs and thus avoid complicating this too far. I would not be against creating our own klogin to replace rlogin. klogin would not need to deal with host.equiv file, etc. I would, however, like to see a .khosts file which allows users to specify what user, when authenticated by kerberos, can use their account. This is an authorization problem, and not an authentication one. If we do take this route, the new protocol should contain version number as Steve suggested. I would also suggest that things be changed to pas the entire environment across, instead of just the terminal type. As to the key issue, I see no problem with grouping all the services which run as root on a machine together, and using a single key for them all. Of course, all the clients of these servers will have to know which key they need. This isn't really a problem, as long as you do it from the start. rsh, rexec, rcp, and rlogin should clearly use the same key. I think that individual hosts should have different keys, though. Since the name of the server will contain the hostname (by convention), using a key based on the cluster the server is in would require the client to be able to figure out which cluster a server is in. One could use the same text for the key in each case, but this doesn't buy anything. I will change antoln to an_to_ln as per Jerry's suggestion. I will also rename vxlogin. The question is, to what, if we use the name klogin for the new rlogin, then we can't use it for this. Vxlogin (or it's new name) isn't in the long term plan, though, since it's function will be performed by the normal login program. ~ Cliff ------- --[0011]-- \f [0012] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:14 (14 lines) Subject: the kerberos alias From ostlund@ATHENA.MIT.EDU Thu Jun 19 13:17:56 1986 From: ostlund@ATHENA.MIT.EDU Date: Thu, 19 Jun 86 13:06:40 EDT To: kerberos Subject: the kerberos alias ... is finally on the air. (Extraction of the alias file got hung up for the last couple of days. I "brute forced" an extraction at about noon today.) John --[0012]-- \f [0013] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:15 (18 lines) Subject: Kerberos flavored passwd From ostlund@ATHENA.MIT.EDU Thu Jun 26 16:06:38 1986 From: ostlund@ATHENA.MIT.EDU Date: Thu, 26 Jun 86 16:05:06 EDT To: kerberos Subject: Kerberos flavored passwd The version of passwd I was putting together to seed the Kerberos database was less secure than Cliff feels is necessary. After a couple of rounds of discussion, I agree with him, and have decided to "do it right". In terms of timing, this means I probably won't have it done until next Tuesday or Wednesday. Sorry about the delay. In the (presumably brief) meantime, we can change passwords by hand for people who want to use Kerberos immediately. John --[0013]-- \f [0014] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:15 (24 lines) Subject: db_edit From ostlund@ATHENA.MIT.EDU Fri Jun 27 16:52:15 1986 From: ostlund@ATHENA.MIT.EDU Date: Fri, 27 Jun 86 16:50:41 EDT To: kerberos Subject: db_edit I've modified db_edit slightly so that it can generate random passwords for principals on demand. To get a random password, type "RANDOM" (twice, unfortunately) in response to the request for new password. You'll be asked to verify that you want a random password: if you don't respond 'y' or 'Y', you'll get "RANDOM" as the literal password. Random passwords are of little use for people, but are of use for services. John --[0014]-- \f [0015] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:15 (67 lines) Subject: initial version of kerberos-authenti From mtc@ATHENA.MIT.EDU Mon Jun 30 16:49:26 1986 To: kerberos Subject: initial version of kerberos-authenticated rlogin etc Date: Mon, 30 Jun 86 16:47:04 -0500 From: Mark Colan <mtc@ATHENA.MIT.EDU> This memo describes the use of the initial version of the remote services (rlogin, rcp, rsh) that use Kerberos authentication. This software is still in slightly rough shape and is will be undergoing some development for the next week or so, depending on the types of bugs found. At the moment, these programs use a very slightly modified "protocol" from the original utilities. A new protocol may be developed if Athena mgt decides that this is appropriate use of resources. INSTALLING THE SOFTWARE The following files are located in goanna:krb/bin. They can be installed in any directory on the host machine, but a symbolic link /krb must point to their home. rshd,kshd remote shell daemon; same file, different links rlogind,klogind login daemon; same file, different links rlogin,rcp,rsh the user programs to access remote services login called by rlogind Note that rlogin, rcp, and rsh must be owned by root and set uid, as in: su chown root rlogin rcp rsh chmod 4555 rlogin rcp rsh CONFIGURATION FILES Two files require new entries to use these programs. /etc/inetd.conf: Add these two lines at the end of the file: kshell stream tcp nowait root /krb/kshd kshd klogin stream tcp nowait root /krb/klogind klogind After updating /etc/inetd.conf, you must cycle inetd to get it to read the changes: su ps -aux | grep inetd kill -9 <pid> where <pid> came from the ps, above. inetd /etc/services: Add these lines somewhere in the file: # # Kerberos-authenticated services # klogin 543/tcp kshell 544/tcp cmd # no passwords used In addition, the usual Kerberos configuration files, /etc/srvtab and /etc/k_in_tkts must be properly set up; see bcn for more information on the required changes. Also, new entries are required in the Kerberos database to enable a particular user to use services. Please report problems and bugs to mtc. mtc --[0015]-- \f [0016] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:15 (26 lines) Subject: krb_err_txt.c From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Thu Jul 3 14:15:11 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: krb_err_txt.c To: spm@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU I am going to update this. You went and created it, and apparently told other people that they could use is (such as MTC) without ever even mentioning to me that it existed. What you didn't realize when you created it was that not all routines returned the same thing. For example, and error code of 2 in rd_ap_requested meant that the ticket was expired, but in mk_ap_request, it meant you couldn't find the ticket. I think it probably is a good idea to have the same code mean the same thing for all routines, and I have since started to make this the case. The problem is that you were telling people to use this array of error messages for all routines (or at least they thought you were) when it wasn't the case. Anyway, people should use the error codes defined in krb.h for comparisons in their own code. The array should only be used to display the messages. ~ Cliff ------- --[0016]-- \f [0017] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:15 (10 lines) Subject: Thursday at MIT From miller%erlang.DEC@decwrl.DEC.COM Thu Jul 10 11:49:40 1986 Date: 09-Jul-1986 0956 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB) Subject: Thursday at MIT I will be at Athena Thursday, July 10, as long as "styx" is up and running ok. --[0017]-- \f [0018] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:15 (24 lines) Subject: RT encryption library From spm@ATHENA.MIT.EDU Thu Jul 10 19:10:24 1986 To: kerberos Subject: RT encryption library Date: Thu, 10 Jul 86 19:08:27 -0500 From: Steve Miller <spm@ATHENA.MIT.EDU> I finally got the encryption library for the RT to give the right answers! However, I have to integrate many (conditional) changes back into the main sources, and I have to insert the alignment checks at the front end of the encryption routines to conditionally bcopy data instead of using assignment. For now, there is a copy of the routines and library in styx:/projects/auth/src/lib/des/ibmws that checks out ok on the "verify" program. Also, a backup copy of the changed stuff is in menelaus:~spm/backup. (The active copy of the modified stuff is on my VS2). I will be on vacation for the next two weeks, and will be back at Athena one day the following week, July 28+. --[0018]-- \f [0019] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:15 (167 lines) Subject: Kerberos slave data base From miller%erlang.DEC@decwrl.DEC.COM Fri Jul 11 12:28:41 1986 Date: 11-Jul-1986 1059 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @SYSOGIN:KERB) Subject: Kerberos slave data base Purpose: -------- This note presents plans for slave copies of the Kerberos database. Recall that multiple replicas of the Kerberos authentication database and server may run concurrently in order to provide greater availability and a degree of load sharing. In order to avoid the difficult problems of distributed databases, only one copy, the master copy, may be directly updated. All the other replicas, called slaves, are entirely dependent on the master copy, and are only updated from the master copy. For Kerberos type applications with relatively low frequency of update, and modest requirements for timeliness, it is sufficient to update the slave copies on the order of once or twice a day. Master Copy: ------------- The master copy of the Kerberos authentication database is layered on top of the RTI Ingres relational database. Alternative technologies with similar characteristics -- indexed access by multiple keys, concurrency control, good performance independent of size, ability to support many ad-hoc queries -- could be easily substituted if RTI Ingres is not available. A small library of embedded query language (equel) database access routines provides the standard interface between the Kerberos database and various Kerberos utilities. A few new utilities, such as one to change the master key of the stored database, may need either additional library routines, or specific equel programming. The master copy is read/write, and once sufficient slave copies are operational, should only be used for database related activities, not routine Kerberos requests for tickets. Slave Copies: ------------- Slave copies of the database are designed to be read-only, and do not use the RTI Ingres database, but rather only the standard Unix file system. They are intended to support routine Kerberos ticket requests as efficiently as possible. Slave copies only contain a subset of the fields for each record, but should contain all records from the master db. A slave copy is produced periodically at the master site as follows: 1) A routine steps through the entire master copy, where for each record it: a) computes a hash function of the name and instance, b) writes a Unix file entry consisting of a subset of the fields of the master records, and the computed hash. c) note that step (b) requires a Unix file, since RTI Ingres does not support nested operations. 2) The Unix file containing all the slave records is sorted according to the hash values. 3) Two new files are produced from the sorted file, an index file, and a data file. (Details below). The data file contains the hash sorted entries in order, without the hash values. The index file contains an array of offset values, each value representing the byte offset in the data file where all records with that hash value begin. 4) Steps (2) and (3) could be combined, if desired. The slave files are then copied to the slave Kerberos servers. This copy should be checked for integrity by using Kerberos protocols to compute a checksum of the file at the master site, and securely transmitting the checksum to the slaves. The slave sites then recompute the checksum of the received file, and compare it to the checksum securely received from the Kerberos protocol. If they match, the file integrity is ok, and the slave should reinitialize its database, as atomically as possible, using the new file. The slave server uses the slave file as follows: 1) On startup, it opens both the index and data files, checks their size, allocates memory for the entire files, and reads both entire files into memory. In other words, we are using the virtual memory system as a cache. This should work well as long as the size of the files does not greatly exceed the available physical memory. Most or all lookups can be done entirely in memory. Let the system do the dirty work, but keep an eye on the paging/swapping counts. A rough calculation is 10,000 records x 50 bytes/record = .5mb, which should be fine even on a base system with only 2mb total memory. But keep monitoring, just in case the cacheing strategy needs to be changed. 2) For each request, compute the hash value of the name and instance using the same hash function as before. Then determine the search limits of offset[hashvalue] to offset[hashvalue+1] by looking up the index file values. Within this range of offsets, search the data file, comparing the actual name and instance to the request. Either a match will be found, or the upper limit to the search reached. The hash value is chosen to produce a mean of only 10-15 entries per bucket, which should all fit in a single page. 3) The slave database functions noted in (1) and (2) are packaged as a Kerberos database library supporting a subset of the semantics of the master library. Either the routine names could be identical, with two differently named libraries, and "ld" specifying the appropriate one, or slightly different versions of the routine names could be used. Details: -------- hash function - For a population of ~10,000-20,000 records, use ~ 1000 buckets such that most buckets are 10- 20 records and fit within one page. (I have some good functions, cheap to compute, that I tested on the entire athena_reg database of >10000, and produce a good mean and standard deviation of bucket counts. I have to find the code to give you the particulars.) index file -- If N is the number of buckets in the hash function, numbered 0 - N-1, then the file need just be structured as: unsigned long offset[N+1]; /* array of offsets*/ where offset[i] = byte offset from beginning of data file to beginning of records with hash value 'i' and offset[N] = size of data file, in bytes, used to terminate searches on the last bucket. data file -- The data file is a sequence of records, sorted by the computed hash. Each record contains only those fields needed by routine Kerberos ticket request operations. Any other needs should go to the master. Name and instance are compressed so they only take up as much space as needed, not the entire space (currently 40 char) allowed in the master database. The fields are as follows, in order beginning with the lowest address. By convention, all database multi-byte fields are defined in vax byte order. Field: type: name ascii null term string instance "" key_version unsigned char kdc_key_version unsigned char max_life unsigned char key_low unsigned long key_high unsigned long exp_date unsigned long attributes unsigned ?? /* check definition*/ (Note: when searching, read name, instance, compare, then skip fixed distance to next name,instance if needed. Compare new address to limit.) Both the data file and the index file could be prefixed with a timestamp and address of creation, as long as these were taken into account in computing the offsets. This may help in managing slave file versions. --[0019]-- \f [0020] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:15 (13 lines) Subject: Kerberos release From bcn@ATHENA.MIT.EDU Mon Jul 14 20:32:30 1986 From: Clifford Neuman <bcn@ATHENA.MIT.EDU> Date: Mon, 14 Jul 86 20:30:18 EDT To: treese Subject: Kerberos release Cc: kerberos Is on castor in /projects/auth/release/860714. Read the README file for more info. ~ Cliff --[0020]-- \f [0021] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:15 (15 lines) Subject: Re: Kerberos release From treese@ATHENA.MIT.EDU Tue Jul 15 17:09:14 1986 From: Win Treese <treese@ATHENA.MIT.EDU> Date: Tue, 15 Jul 86 17:06:49 EDT To: Clifford Neuman <bcn@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Clifford Neuman's message of Mon, 14 Jul 86 20:30:18 EDT Subject: Re: Kerberos release Us-Snail: E40-342B, 1 Amherst St, Cambridge, MA 02139 Thanks; I picked it up. Win --[0021]-- \f [0022] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:16 (72 lines) Subject: integration with old protocols From Saltzer@ATHENA.MIT.EDU Tue Jul 22 20:35:32 1986 Date: Tue, 22 Jul 86 20:32:35 EDT To: kerberos Subject: integration with old protocols From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> Yet another proposal (in this case the example is POP) for integration of kerberos by assigning a new well-known TCP port for a protocol variant leads me to want to explore possible alternatives. Here is a proposal that might eliminate the need to make any changes at all in old protocols that we want to authenticate with Kerberos. The idea is to assign one new well-known TCP port, exclusively for the purpose of compatible authentication in preexisting protocols. Any server that ran one or more of the old protocols would also run a listener on this port, known as the Ksetup server (better name proposals are welcome.) The scenario, say for POP, would go as follows: 1. The POP client, modified to use Kerberos, would track down a POP ticket and authenticator and send them together with the service name for POP in a single UDP datagram, to the Ksetup server's port. (Using a standard time-out/retry procedure for reliability.) The authenticator part of the packet would include in one field, encrypted, the identity of this client, in exactly the form the POP protocol expects to receive it. 2. The Ksetup server would look in /etc/servtab for the appropriate key, examine the ticket and authenticator, and if all looks OK, create an entry in a new table, /etc/Kconnections. This entry would contain all the interesting information in the original ticket--client identification, expiration date, temporary key, etc., plus the IP address of the client that sent it. It would return a datagram reporting success or failure in this endeavor. 3. The POP client, upon receipt of a success response, would then proceed to invoke the POP protocol according to the present specification. 4. The POP server, upon receiving a request for connection, would collect the requester's claimed identity (in the form provided as part of the standard protocol) and the IP address of the requester (may be tricky--is that information easily available?) and call to a Kerberos library routine named is_this_one_OK(). That routine returns 0 for failure and the value of the temporary key for success. 5. The routine is_this_one_OK() operates by comparing the information supplied by the POP server with the information in /etc/Kconnections. If the IP address and identity both match, it returns the temporary key. 6. The POP server can now accept the connection, and if wanted it might even encipher the data with the temporary key before sending it back to the POP client. I think the same pattern would work for rlogin, rsh, rexec, lpr, POP, and even NFS and RVD. Protocols such as tftp, which do not attempt to identify their clients, require a different strategy, though authentication based only on IP address would probably suffice. New protocols such as notify would have the option of including the initial exchange as part of their definition rather than by relying on the Ksetup server. Any comments? Jerry --[0022]-- \f [0023] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:16 (17 lines) Subject: integration with old protocols From mike@ATHENA.MIT.EDU Wed Jul 23 15:28:12 1986 Date: Wed, 23 Jul 86 15:25:29 EDT From: Michael R. Gretzinger <mike@ATHENA.MIT.EDU> Sender: mike@ATHENA.MIT.EDU To: Saltzer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Tue, 22 Jul 86 20:32:35 EDT Subject: integration with old protocols Sounds good to me. It certainly makes server modifications to support Kerberos easy. --mike --[0023]-- \f [0024] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:16 (29 lines) Subject: Re: Integration with old protocols From bcn@ATHENA.MIT.EDU Fri Jul 25 09:42:43 1986 From: Clifford Neuman <bcn@ATHENA.MIT.EDU> Date: Fri, 25 Jul 86 09:40:37 EDT To: Saltzer Subject: Re: Integration with old protocols Cc: kerberos Your proposal for integrating Kerberos with existing protocols looks pretty good. It is sort of the "next step" towards a library that would provide automatically authenticated TCP and UDP functionality. I see some problems with using the "Ksetup" (Yeah, we need a new name) approach. As defined, it would be easier for an active attacker to impersonate someone else. But then again, even the current rlogin, rsh, rcp integration allow such an attack since authentication is only applied at the beginning of the connection. The details of the Ksetup server and the library routines to access authentication information using it are not completely specified, and it may be possible to come up with an approach that is no less secure. I am willing to work with someone designing the server, and defining a new procedure for the Kerberos library to come retrieve information from the server. I have other priorities, though (ticket granting tickets, and getting Kerberos to run on the RT), so someone else will have to do the actual coding. ~ Cliff --[0024]-- \f [0025] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:16 (48 lines) Subject: Re: RVD authorization and Kerberos i From bcn@ATHENA.MIT.EDU Fri Jul 25 10:36:37 1986 From: Clifford Neuman <bcn@ATHENA.MIT.EDU> Date: Fri, 25 Jul 86 10:33:48 EDT To: Saltzer Subject: Re: RVD authorization and Kerberos integration plan Cc: kerberos, rvd-info This is in response to your proposal on the RVD authorization and Kerberos integration plan. Assuming the existence an access control list server (ACLS), your proposal looks good. I have problems with one point, though, which is more an issue in the design of the ACLS. I do not see the authorization as being a name of a Kerberos principal. This seem to muddy an already unclear concept. A Kerberos principal should be someone at either end of a connection, such as a user, or a service. It is more an authentication concept that an authorization concept since each prinicpal has it's own key (although it could be the same as the key for another principal). There are cases where one user may have several instances. In this case, the user gets to choose which principal he wants to be come when he "logs in". I propose instead that the ACLS provide its own ticket to a user such that the user can pass the ticket on to the service. This ticket is distinct from a Kerberos ticket, and may contain different/additional information that can be used by the end service. The authenticity of this ticket can be checked using Kerberos. This can be accomplished as follows: The beginning of an ACLS ticket is a Kerberos authenticatior for the end service issued to the ACLS. Note that this ticket is encrypted in the services key, so the user who the ticket is returned to can't read it. The second part of the ACLS ticket contains the authorization information to be provided to the end service. There are two ways the authenticity of the second part of the ACLS ticket can be checked. The Kerberos authenticator contains a checksum of the authorization data or the authorization data is encrypted in the session key from the ticket. Both these approches can be accomplished without change to Kerberos. The tradeoff is speed in creating the ACLS ticket, versus difficulty in modifying the authorization data. If you encrypt the authorization data, you also get the additional side effect (for better or worse) that only the end service can determine the contents of the ACLS ticket. ~ Cliff --[0025]-- \f [0026] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:16 (34 lines) Subject: Re: RVD authorization and Kerberos i From wesommer@ATHENA.MIT.EDU Fri Jul 25 11:24:36 1986 To: bcn@athena.mit.edu Cc: saltzer@athena.mit.edu Cc: kerberos@athena.mit.edu, rvd-info@athena.mit.edu Subject: Re: RVD authorization and Kerberos integration plan In-Reply-To: Your message of Fri, 25 Jul 86 10:33:48 EDT. <8607251433.AA07502@MENELAUS> Date: Fri, 25 Jul 86 11:21:25 -0500 From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> If you encrypt the authorization data, you also get the additional side effect (for better or worse) that only the end service can determine the contents of the ACLS ticket. Why not do as you do with Kerberos, which is to enclose the plaintext part of the ticket in unencrypted form in the reply, along with the encrypted form; the whole thing could be wrapped up and encrypted in the user's key. I think that it might also be reasonable to provide some form of local ACL library for some applications, to cut down the burden on the central ACLS and to reduce the amount of network latency involved. Presumably, the ACL, which would be a list of pairs of the form "name of principal", "access allowed" (with some wildcarding of the "name of principal"), could be stored in a protected file on the server, and manipulated using utilities on the server or using an extension to the protocol. This is the approach which is being taken by Stan Zanarotti in his "discuss" system (a networked notes- or Multics forum-like conferencing system). - Bill --[0026]-- \f [0027] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:16 (81 lines) Subject: Access Control Lists and RVD From bcn@ATHENA.MIT.EDU Mon Jul 28 13:37:21 1986 From: Clifford Neuman <bcn@ATHENA.MIT.EDU> Date: Mon, 28 Jul 86 13:21:41 EDT To: kerberos, rvd-info Subject: Access Control Lists and RVD On Friday, Jerry and I worked out some more of the details of an Access Control List Server (ACLS), and how it could be used by RVD. The ACLS will be contacted by the user and authenticated via Kerberos. The user tells that ACLS the name of the service he wishes to use and the name of the list he claims to be in. The ACLS will determine whether the user is in that list. If not, it will return an error. If so, it will generate an ACLS ticket that consists of the following: A Kerberos authenticator authenticating the ACLS to the service. This consists of: A Kerberos ticket issued to the ACLS for the service and additional information encrypted in the session key from the ticket. Authorization data including the name of the authorized principal, his network address, and the name of the access control list of which the principal is a member. This data is also encrypted in the session key from the ticket. The user will use the ACLS authenticator in place of the Kerberos authenticator. This is possible because the ACLS ticket begins with a Kerberos ticket. When the service receives an authenticator it decrypts it, and sees that the authenticated principal is "ACLS" "machinename". This tells it that it is from an ACLS, and that there is more to the authenticator. It then reads the name of the list from the remainder of the authenticator, and it generates a list name to be compared with its internal database of who is authorized to spinup what disks. It is important to note that local authorization data is still maintained. This data is a list of a fixed number of principals authorized to use a service/disk. What we have done through the ACLS, is to allow that list to contain groups. i.e. anyone on a particular ACL. At first we decided that a list name would appear as "ACLS" "listname". This would, if desired, allow one to create a principal with the same name as a list, and thus one could bypass the ACLS if desired by the people maintaining Kerberos. Since our discussion, I found one problem with such names in that, if one did allow bypassing, the person with the password for an ACLS principal could pretend to be an ACLS, and thus falsely certify his membership in any ACL. This is easy to fix, although it makes things a bit less clean, by having the apparent principal for lists be "ACL" "listname". Thus, the service end not only fills in the instance from the last part of the ACLS authenticator, but it also changes "ACLS" into "ACL". Thus, we can still allow bypassing the ACLS if desired, but we do not have to resort to remembering the instance names of all certified ACLSs. One unresolved issue (we just didn't think of it while discussing this) has to do with final authentication of the user to the service. Can an ACL authenticator be reused? If so, do we require a user to authenticate himself to an end service in addition to presenting the ACLS authenticator? If the answer to the above are Yes, and No, then the only thing that stops an attacker from stealing the ACL authenticator off the net and reusing it is the presence of a network address inside. But, this can be easily gotten around. Requiring the user to additionally authenticate himself to the end service will solve this problem but may complicate the protocol. If we only allow an ACL authenticator to be used once, then we must require that it is returned to the user encrypted in the session key from the ticket the user used to authenticate himself to the ACLS. This also requires many additional calls to the ACLS, and, thus, is undesirable. The above is a rough design for an ACLS server. Comments are welcome, as are offers to help finish/refine the design, and to implement it. ~ Cliff --[0027]-- \f [0028] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:16 (37 lines) Subject: More on an ACLS From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Mon Jul 28 22:46:00 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: More on an ACLS To: kerberos@ATHENA.MIT.EDU Over dinner, srz, spook, and myself discussed the proposal for the ACLS. A few additions to the pervious message emerged. The ACLS will maintain privileges along with each authorization in it's database. Right now, we think 8 bits is enough, but I will entertain arguments for more. At the service end, each entry for a group, or direct user will have a mask which will indicate which of these bits may be used. For users authenticated directly, only the mask will be used. For those authenticated/authorized through the ACLS, the logical AND of the mask and the privelege bits will be used. Interpretation of the bits is up to the individual service, but some kind of convention will be appropriate. It is desirable to be able to delegate part of the namespace of groups to particular individuals. Thus, if I have a unique service, or services that I provide, and if for some reason it is appropriate for me to be able to create new ACLs, I can be granted a prefix, under which I can create other lists. An example of this would be the person responible for creating and assigning RVDs. For each RVD he create, he will want to create an ACL with the same name. This is distinct from allowing someone modify access to an existing ACL. To avoid the issue of dividing names into components, or choosing a separator for different parts of an ACL name, I propose granting such access based on prefixes. Thus, when I assign part of the namesapce to RVD, I can choose "rvd_" as the prefix. If some other application want's to use something else as the prefix, this is fine too. ~ Cliff ------- --[0028]-- \f [0029] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:17 (11 lines) Subject: Friday From miller%erlang.DEC@decwrl.DEC.COM Wed Jul 30 11:22:01 1986 Date: 30-Jul-1986 1000 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB) Subject: Friday August 1, I will be at Athena. If you know of any reason why things will be broken (menelaus, lyre, styx, RVD, etc.) please let me know before hand. thanks. --[0029]-- \f [0030] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:17 (39 lines) Subject: Re: integration with old protocols From spm@ATHENA.MIT.EDU Sun Aug 3 13:42:25 1986 To: saltzer@athena.mit.edu Cc: kerberos@athena.mit.edu Cc: spm@menelaus.mit.edu Subject: Re: integration with old protocols In-Reply-To: Your message of Tue, 22 Jul 86 20:32:35 EDT. <8607230032.AA16734@HERACLES> Date: Sun, 03 Aug 86 13:40:00 -0500 From: Steve Miller <spm@ATHENA.MIT.EDU> I read your recent proposal, and believe it will work given a couple of additions: 1) The "cached" authentication that the Ksetup server stores may only be used once, within a very brief time of creation. Otherwise, you have lost replay protection. 2) If "is_this_one_ok()" fails, it still has to distinguish whether it failed because the Kerberos authentication is invalid, or because the client does not speak Kerberos. This is a sticky problem, since we might wish to allow non-Kerberos clients to operate, but dont want to allow someone who should be using Kerberos to break security by just disabling the Kerberos portion. Perhaps a crude address filter could be used for this? I see four implications: 1) Many extra port assignments are not needed. 2) Run time cost increases by two messages. 3) Security is a bit weaker, since the opportunity to crytographically bind some of the application protocol into the authenticator is lost. 4) A new privileged entity is created, Ksetup, and more sensitive data is stored on the server. There is already sufficient information in the protocol messages to support this. Overall, I think it is a good approach to try. --[0030]-- \f [0031] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:17 (9 lines) Subject: At Athena From miller%erlang.DEC@decwrl.DEC.COM Wed Aug 6 19:17:55 1986 Date: 06-Aug-1986 1728 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB) Subject: At Athena I will be at Athena on Friday, Aug 8. --[0031]-- \f [0032] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:17 (14 lines) Subject: caucus From geer@ATHENA.MIT.EDU Sat Aug 9 00:26:36 1986 From: Dan Geer <geer@ATHENA.MIT.EDU> Date: Sat, 9 Aug 86 00:23:10 EDT To: bcn, fhsu, jis, mike, ostlund, treese Subject: caucus Cc: kerberos relative to privileged access to specialized servers, KERBEROS, E40-PO, HESIOD, and the like - views, please, on whether they belong in the regular propagation process. --dan --[0032]-- \f [0033] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:17 (17 lines) Subject: Major problem in workstation configu From bcn@ATHENA.MIT.EDU Sat Aug 9 13:12:19 1986 From: Clifford Neuman <bcn@ATHENA.MIT.EDU> Date: Sat, 9 Aug 86 13:08:17 EDT To: athena, kerberos Subject: Major problem in workstation configuration It seems that someone a long time ago decided give mt8 the same major and minor device number as ra1a. This is fine if your workstation has floppies as ra1 and ra2, but if your workstation has a second hard disk this can cause major problems as running tar (or dump) will write over your hard disk. This is not good. In case anyone is wondering, the reason kerberos is down is because of this. It should be running again on Monday. ~ Cliff --[0033]-- \f [0034] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:17 (49 lines) Subject: SUN RPC & XDR From wesommer@athena.MIT.EDU Sat Aug 9 15:24:54 1986 To: hackers@athena.MIT.EDU, kerberos@athena.MIT.EDU Subject: SUN RPC & XDR Date: Sat, 09 Aug 86 15:22:07 -0500 From: Bill Sommerfeld <wesommer@athena.MIT.EDU> I just found the posting of the SUN Remote Procedure Call library on mod.sources. Sources (which have been slighly hacked to get them to work) are in /@/priam/mit/w/e/wesommer/rpc. I've already psroff'ed the documents; if you want a copy, I'll lend you the one I printed for copying... The system is set up to allow RPC over both TCP and UDP, and provides a dynamic port-mapper daemon to map "program numbers" to UDP ports. RCP calls are uniquely identified by a (program number, version number, procedure number) tuple. SUN will "register" program numbers from 0x00000000 to 0x1fffffff; they allocate 0x20000000 to 0x3fffffff to "customer specific applications", and 0x40000000 to 0x5fffffff for dynamically allocated program numbers. SUN RPC attempts to solve the data representation and transport problem; it does not attempt to solve the rendezvous problem (clients have to know which machine their server is on, and which program number, version number, and procedure numbers it is listening for). Data representation is done through what they call XDR ("eXternal Data Representation"); each type provides an "xdr" operation, which walks the data structure, calling the xdr operations of its components. Depending on the state of the XDR "stream" passed in, this either builds a data structure from a stream of bytes, sends it over RPC, flattens it into a stream of bytes, or destroys the data structure. There are hooks for arbitrary authentication; I think I have implemented the proper ones for Kerberos, (look at the routines in rpc/rpclib/*krb*) although since kerberos.mit.edu is down right now, I can't test this. Since the authenticator is decyphered by the server-side library before the service is identifed, a catch-all "rpc" or "sunrpc" principal for each host involved will be needed to get this to work. There may be a way around this if we're not afraid to do some sort of "modularity violation" in the Kerberos-specific code. - Bill --[0034]-- \f [0035] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:17 (16 lines) Subject: Kerberos is running again From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Sat Aug 9 16:36:30 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: Kerberos is running again To: kerberos@ATHENA.MIT.EDU Well, I have kerberos running again. I stated with the database as it exists on menelaus, so it is quite a bit out of date. There are still a number of machines that are not registered, and most of the users that were registered aren't anymore. I tried installing the passwd program, but couldn't get it to run. If we can get it to run, people will be able to register themselves. ~ Cliff ------- --[0035]-- \f [0036] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:18 (33 lines) Subject: Sun RPC may now be kerberos authenti From wesommer@ATHENA.MIT.EDU Sat Aug 9 23:08:28 1986 To: hackers, kerberos Subject: Sun RPC may now be kerberos authenticated... Date: Sat, 09 Aug 86 23:04:58 -0500 From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> From looking at the Sun RPC documents, I got the general impression that plugging a new type of authenticator into the library is relatively simple. I was right. If you look in /@/priam/mit/w/e/wesommer/rpc/rpclib/, at auth_krb.c, auth_krb.h, and svc_auth_krb.c, you can see what I had to do. Mutual authentication is not implemented yet (although it should be simple), and the error codes returned leave a little bit to be desired (Kerberos has a somewhat wider variety, and information gets lost when they get translated to the RPC codes). It also doesn't know how to deal with service principals other than "rcmd.<machine_name>@Athena". I have a test program which uses this, as a "whoami" service (the service takes a "void" parameter, and ships back three strings: the three parts of your kerberos principal name). I have "priam" hardcoded into the programs (for simplicity); if the "test" program (the daemon) is running on priam (I left it running), and you've done a kinit and have a ticket for rcmd.priam@Athena, you're in business; run "client", and it will tell you who you have authenticated as. These playtoys are in rpc/westoys. - Bill --[0036]-- \f [0037] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:18 (15 lines) Subject: Re: caucus From ostlund@ATHENA.MIT.EDU Mon Aug 11 11:56:49 1986 From: ostlund@ATHENA.MIT.EDU Date: Mon, 11 Aug 86 11:53:28 EDT To: bcn@ATHENA.MIT.EDU, fhsu@ATHENA.MIT.EDU, geer@ATHENA.MIT.EDU, jis@ATHENA.MIT.EDU, mike@ATHENA.MIT.EDU, ostlund@ATHENA.MIT.EDU, treese@ATHENA.MIT.EDU Subject: Re: caucus Cc: kerberos@ATHENA.MIT.EDU KERBEROS should certainly not be in the standard propagation scheme. This requires KERBEROS's rtingres user to trust hector: bad idea. John --[0037]-- \f [0038] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:18 (35 lines) Subject: notes from today's discussion of ker From geer@ATHENA.MIT.EDU Mon Aug 11 15:28:44 1986 From: Dan Geer <geer@ATHENA.MIT.EDU> Date: Mon, 11 Aug 86 15:20:20 EDT To: bcn, geer, ostlund, treese Subject: notes from today's discussion of kerberos deployment Cc: kerberos 1. Propagage /krb/passwd to all time share machines today. This implements John's dual /etc/passwd change and Kerberos register/change routine as of code freeze date. 2. Next week, pending testing by friendlies who already have /krb in their search path before /bin and /usr/ucb, move passwd to /usr/athena. This will allow /bin/passwd to remain as it now is (which is useful in single user mode especially) and yet puts the new passwd in front of all users, based on Athena standard search paths. Staff machines on Monday; rest of Athena on Friday pending favorable results. 3. A new release of Kerberos with the ticket-granting ticket and other associated changes out today or tomorrow; this is waiting on bug fixes to mtc's (/krb/)rsh code. 4. Bugs remain in using the new passwd on workstations, and will be addressed ASAP. 5. Kerberos dependent servers (klogind & kshd) to be propagated to all Athena machines today. I'll take responsibility to notify relevant parties. Other key files are /etc/services entries and the /etc/srvtab (unique) machine key. 6. The old /etc/k_in_tkts file is no longer needed. --dan --[0038]-- \f [0039] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:18 (29 lines) Subject: How am I supposed to cleanly get at From wesommer@ATHENA.MIT.EDU Mon Aug 11 21:13:25 1986 To: bcn Cc: kerberos Subject: How am I supposed to cleanly get at the session key? Date: Mon, 11 Aug 86 21:09:53 -0500 From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To plug a lighter-weight authentication into the Sun RPC library (using a method similar to that proposed in the Sun USENIX paper on secure RPC, with Kerberos authenticators used for the initial exchange of session keys), I need to get at a few things "internal" to mk_ap_req: - The timestamp used inside the ticket (since there does not seem to be any library routine for mutual authentication; the server will ship back the timestamp-1 sealed in the session key and a 32-bit identifier). "Timestamp+1" is not used, since that could be used as a verifier on another procedure call. - The session key contained in the authenticator.. There doesn't seem to be any way to get that other than to use "retrieve" again. This will be used to encrypt successive timestamps attached to each RPC request. - Bill --[0039]-- \f [0040] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:18 (15 lines) Subject: Re: How am I supposed to cleanly get From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Mon Aug 11 21:51:02 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: Re: How am I supposed to cleanly get at the session key? To: wesommer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: <8608120110.AA04013@HEIMDALL> When you do a rd_ap_req, what you get back is a structure of type AUTH_DAT. One of the fields of this structure contains the session key. ~ Cliff ------- --[0040]-- \f [0041] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:18 (15 lines) Subject: Re: How am I supposed to cleanly get From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Mon Aug 11 21:51:09 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: Re: How am I supposed to cleanly get at the session key? To: wesommer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: <8608120110.AA04013@HEIMDALL> You are right that you need to use retrieve to get the session key on the user side. I should probably make that fill in a structure instead. It might be a little cleaner that way. I will look into the timestamp issue. ~ Cliff ------- --[0041]-- \f [0042] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:18 (15 lines) Subject: Re: How am I supposed to cleanly get From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Tue Aug 12 10:59:19 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: Re: How am I supposed to cleanly get at the session key? To: wesommer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: <8608120110.AA04013@HEIMDALL> The new kerberos library now takes a structre of type credentials for retrieve and returns the credentials in that structure. I don't think that anyone but bill is calling retrieve directly, but if you are, you will have to change your code. ~ Cliff ------- --[0042]-- \f [0043] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:18 (23 lines) Subject: Re: How am I supposed to cleanly get From wesommer@ATHENA.MIT.EDU Tue Aug 12 11:38:38 1986 To: bcn%deep-thought@eddie.mit.edu Cc: kerberos@athena.mit.edu Subject: Re: How am I supposed to cleanly get at the session key? In-Reply-To: Your message of Tue 12 Aug 86 10:51:26-EDT. <12230228458.17.BCN@DEEP-THOUGHT.MIT.EDU> Date: Tue, 12 Aug 86 11:35:26 -0500 From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> While you're breaking "retrieve", I'd like to make a little bit of a plea for a more sane name for the routine; it's a rather generic name to use for something in a library routine. I've had to debug things where there were name collisions before; it's not fun. The worst case was debugging "lpc"; it had a routine called "select" in it; when it was first linked with the nameserver library, this broke the nameserver (which called the "select" system call to allow a timed-out read) It took me a few hours of single-stepping to figure out that this was indeed the case. Perhaps krb_retrieve would be a better name? - Bill --[0043]-- \f [0044] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:19 (53 lines) Subject: kerberos related testing From geer@ATHENA.MIT.EDU Tue Aug 12 12:05:26 1986 To: alix, kelley Cc: kerberos, planning_managers, lerman Subject: kerberos related testing Date: Tue, 12 Aug 86 12:02:02 -0500 From: geer@ATHENA.MIT.EDU We want to propagate some Kerberos and Kerberos related files as follows. I have discussed this with Pete, but also want to put it in this form for your reference. The object is to put some parts of Kerberos out for testing now in the hope of releasing them to general use for September 1. We propagaged /krb/passwd to all time share machines Monday. This implements John's dual /etc/passwd change and Kerberos register/change routine as of code freeze date. It has no effect on anyone not already using Kerberos. Next Monday, pending testing by existing friendly testers who already have /krb in their search path before /bin and /usr/ucb, we'll move /krb/passwd to /usr/athena in E40 staff machines. This will allow /bin/passwd to remain as it now is (which is useful in single user mode especially) and yet puts the new passwd in front of all staff users, based on Athena standard search paths. This has almost no effect on those not yet using Kerberos, the only exception is that this passwd installs their password in the Kerberos database in addition to the usual Athena_reg database. Pending staff use and acceptable behavior, we would propagate this to general use with the September 1 time-share release. (Our real desire is to do this Monday 25 August). This is important; 9/1 is the best, or perhaps only, time to start loading the Kerberos database. Loading it is, itself, a prerequisite to a smooth integration of Kerberos wise services later in the year. Bugs remain in using this new passwd on workstations, and will be addressed ASAP. Today, Tuesday 12 August, we will put out the last release of Kerberos before September. (This release provides the ticket-granting ticket functionality.) The old /etc/k_in_tkts file is no longer needed. If further bugs appear, we will address them as part of our handling of other bugs found before the September 1 date, which is to say fast fix and inclusion in a new bug-fix release. Kerberos dependent servers (klogind & kshd) will be released to all Athena machines today. (Other key files are /etc/services entries, /etc/inetd.conf entries, and the /etc/srvtab unique machine key.) These free-standing servers will not affect those not using Kerberos, but will allow Kerberos testers/users to use authenticated rlogin and rsh to the entire Athena environment. --dan --[0044]-- \f [0045] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:19 (12 lines) Subject: Re: How am I supposed to cleanly get From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Tue Aug 12 12:14:16 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: Re: How am I supposed to cleanly get at the session key? To: wesommer@ATHENA.MIT.EDU Cc: bcn%deep-thought@EDDIE.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: <8608121535.AA05085@HEIMDALL> Retrieve has been renamed get_credentials. ~ Cliff ------- --[0045]-- \f [0046] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:19 (43 lines) Subject: Kerberos release From bcn@ATHENA.MIT.EDU Tue Aug 12 21:59:07 1986 From: Clifford Neuman <bcn@ATHENA.MIT.EDU> Date: Tue, 12 Aug 86 21:51:55 EDT To: treese Subject: Kerberos release Cc: geer, kerberos The makefiles foer the new release are complete. The release can be found on castor in /projects/auth/release/860812. A copy of the README file follows: This is the latest release of the kerberos software. Run make clean, make all, make install and the software will be installed in ./dist. These are the files that should be installed in /krb on the workstations. They can go wherever you want as long as the link /krb points to them. login, kshd and rlogind should be installed on all timesharing systems in the directory pointed to by /krb. For the time being, John and I will get this installed. Also, on all timesharing system, a site specific /etc/srvtab must exist. John and I are also worrying about this problem. In the last release, the file /etc/k_in_tkts was needed. This file is not needed this time around, and can be deleted. Its continued existence does not hurt anything though. libkrb.a and libdes.a should appear in /usr/athena/lib, and the include files should appear somewhere that <> will work for them. Timesharing machines should have the two lines in inetd.conf.app included in their inetd.conf file. Once again, you should worry about this for the fall release, but for now, John and I will worry about it. Also, /etc/services must have the lines appearing in services.app. Finally, please make links similar to those in /usr/hosts for all athena machines in /krb. Also, please add a link for eddie since it is also using kerberos for authentication. ~ Cliff --[0046]-- \f [0047] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:19 (26 lines) Subject: Re: caucus (propagation to servers) From treese@ATHENA.MIT.EDU Wed Aug 13 13:10:18 1986 From: Win Treese <treese@ATHENA.MIT.EDU> Date: Wed, 13 Aug 86 13:07:08 EDT To: Dan Geer <geer@ATHENA.MIT.EDU> Cc: bcn@ATHENA.MIT.EDU, fhsu@ATHENA.MIT.EDU, jis@ATHENA.MIT.EDU, mike@ATHENA.MIT.EDU, ostlund@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Dan Geer's message of Sat, 9 Aug 86 00:23:10 EDT Subject: Re: caucus (propagation to servers) Us-Snail: E40-342B, 1 Amherst St, Cambridge, MA 02139 I think we need to distinguish two classes of servers: 1. Highly secure ones (such as kerberos) 2. Standard services (such as post office, name service (Hesiod), etc.) In the secure case, we have to leave them out in order to protect them. kerberos, for example, should not trust hector for the passwd file propagation. Other servers, such as the post office, can safely trust hector and receive a passwd file, though we probably need a careful definition of which accounts get propagated to them. This class includes RVD servers, as well. Win --[0047]-- \f [0048] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:19 (20 lines) Subject: Re: Kerberos release From treese@ATHENA.MIT.EDU Wed Aug 13 15:51:31 1986 From: Win Treese <treese@ATHENA.MIT.EDU> Date: Wed, 13 Aug 86 15:48:17 EDT To: Clifford Neuman <bcn@ATHENA.MIT.EDU> Cc: geer@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Clifford Neuman's message of Tue, 12 Aug 86 21:51:55 EDT Subject: Re: Kerberos release Us-Snail: E40-342B, 1 Amherst St, Cambridge, MA 02139 As far as /etc/services and /etc/inetd.conf go, I plan to add the Kerberos entries to the master sources. It won't hurt to have them there is they're not being used. As I understand it, all I need to do now is install the system on the RVD. Correct? Win --[0048]-- \f [0049] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:19 (14 lines) Subject: Re: Kerberos release From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Wed Aug 13 16:35:57 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: Re: Kerberos release To: treese@ATHENA.MIT.EDU Cc: geer@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: <8608131948.AA01160@CIROCCO> That is correct. You need to install it on the RVD (with the right modes) and set up the host links. That should be it. ~ Cliff ------- --[0049]-- \f [0050] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:19 (15 lines) Subject: kerberos backup system From ostlund@ATHENA.MIT.EDU Thu Aug 14 16:40:37 1986 From: ostlund@ATHENA.MIT.EDU Date: Thu, 14 Aug 86 16:37:37 EDT To: kerberos Subject: kerberos backup system Chris Reed has completed a program that backs up the kerberos database onto a separate disk from the live copy. It's installed on both kerberos and menelaus. Ask Chris (panda) if you're interested in details. John --[0050]-- \f [0051] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:19 (28 lines) Subject: today's rcmd changes - summary From mtc@ATHENA.MIT.EDU Thu Aug 14 18:37:07 1986 To: bcn, geer Cc: kerberos Subject: today's rcmd changes - summary Date: Thu, 14 Aug 86 18:32:46 -0500 From: Mark Colan <mtc@ATHENA.MIT.EDU> I have made some changes to rcmd commands; here's a list. 1. fixed a bug which existed in both rsh and rcp, but manifested itself only when a hostname with subdomains specified was used. The name came out wrong. 2. fixed a minor bug in login.c; a routine I added has one case where it failed to return a proper value. 3. changed login.c to add more information when someone logs in as root via Kerberos (ie, /.khosts has an entry for the user, and the user does an rlogin hostname -l root). When this happens, the syslog now also contains the name, instance, and realm used for authentication. There are no more bugs that have been reported, and all features I have been asked to implement are complete. Please advise me of problems in the Kerberos rlogin, rsh, and rcp commands. mtc --[0051]-- \f [0052] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:20 (35 lines) Subject: Re: rcp not finding hosts From mtc@ATHENA.MIT.EDU Fri Aug 15 14:18:51 1986 To: srz@athena.mit.edu Cc: kerberos Subject: Re: rcp not finding hosts In-Reply-To: Your message of Thu, 14 Aug 86 23:09:15 EDT. <8608150309.AA14759@CHARON> Date: Fri, 15 Aug 86 14:15:23 -0500 From: Mark Colan <mtc@ATHENA.MIT.EDU> > Well, the specific instance was fixed, but playing with it showed up > a spurious error message: > login (don't run kinit): > charon% /krb/rcp trillian.mit.edu:/mit/s/r/srz/.login trill.login > erberos key length invalid. > and then it copies the file over, using the .rhosts file. > I think this should either be a better error message, or just > eliminated. Thanx for pointing out the bug. It has been fixed; get the latest rcp binary from menelaus:~auth/src/services/rcmd/rcp. The problem was that in the case of remote to local, the error return from mk_ap_req was not checked. Since it failed, there was no ticket, but we used the Kerberos port anyway. That caused the "can't happen" message you saw. Now that the error return from mk_ap_req is properly handled, we give up on Kerberos in this situation and use the normal shell port instead. I did NOT actually remove the error message; it remains to indicate the "can't happen" situation. mtc --[0052]-- \f [0053] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:20 (52 lines) Subject: Re: caucus (propagation to servers) From Saltzer@ATHENA.MIT.EDU Sat Aug 16 11:05:27 1986 Date: Sat, 16 Aug 86 11:01:49 EDT To: Win Treese <treese@ATHENA.MIT.EDU> Subject: Re: caucus (propagation to servers) Cc: Dan Geer <geer@ATHENA.MIT.EDU>, bcn@ATHENA.MIT.EDU, fhsu@ATHENA.MIT.EDU, jis@ATHENA.MIT.EDU, mike@ATHENA.MIT.EDU, ostlund@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Win Treese <treese@ATHENA.MIT.EDU>'s message of Wed, 13 Aug 86 13:07:08 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> It seems to me that propagating password files (and creating user directories) several times a day is primarily a requirement that came from general-purpose time-sharing service. After a little more software is in place, propagation shouldn't be needed for any servers to which general users don't log in. The missing link is the proposed ACLS server. If we put an ACLS service in place, the other servers can be set up to allow direct login only by root. All other login would be Kerberos-mediated, just as on a workstation, and restricted to those who can present an ACLS proof-of-membership ticket in one of a small number of lists, such as "operations" and "print-server-operators". The membership of those lists would be managed by the ACLS server; the set of lists would change rarely, so there would be no need for daily propagation to run-of-the-mill servers. This approach leaves two special cases. 1. There is one entry in the /etc/passwd file on each server: root. Occasionally that root password must be changed. Probably a Kerberos-mediated rcp of a new /etc/passwd is the simplest way. This event isn't accompanied by creating a new directory, so doesn't require such a heavy-duty mechanism as propagation. A script running on Hector that krcp's all of these one-line server password files sounds about right. 2. Kerberos itself should be set up in the same way, but allow login only by root and by users delivering Kerberos-supplied tickets that it has itself authenticated, rather than list-membership-tickets from the ACLS. In addition, probably the Kerberos servers shouldn't allow anyone to rcp a new /etc/passwd; their root passwords must be changed by hand. While waiting for an ACLS to appear, traditional propagation of /etc/passwd files to non-Kerberos servers is probably the simplest way to proceed, though. Jerry --[0053]-- \f [0054] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:20 (25 lines) Subject: re: SUN RPC & XDR From Saltzer@ATHENA.MIT.EDU Sat Aug 16 11:05:58 1986 Date: Sat, 16 Aug 86 11:02:09 EDT Subject: re: SUN RPC & XDR To: spm, bcn Cc: Bill Sommerfeld <wesommer@athena.MIT.EDU>, kerberos In-Reply-To: Bill Sommerfeld <wesommer@athena.MIT.EDU>'s message of Sat, 09 Aug 86 15:22:07 -0500 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> > Since the authenticator is decyphered by the server-side library > before the service is identifed, a catch-all "rpc" or "sunrpc" > principal for each host involved will be needed to get this to work. > There may be a way around this if we're not afraid to do some sort of > "modularity violation" in the Kerberos-specific code. Steve and Cliff, Have you any thoughts on the right way to deal with this problem? It comes up any time one tries to integrate Kerberos directly with the transport level protocol rather than the service level protocol. Jerry --[0054]-- \f [0055] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:20 (67 lines) Subject: New release From bcn@ATHENA.MIT.EDU Tue Aug 19 21:57:25 1986 From: Clifford Neuman <bcn@ATHENA.MIT.EDU> Date: Tue, 19 Aug 86 19:53:53 EDT To: geer Subject: New release Cc: asp, kerberos There is a new version of kerberos available for friendly testers and others who want it. It can be found in ~auth/src/kerberos.tar on menelaus. As before, to use it, untar this file where you want the new kerberos directory to go. The tar file will create the directory for you. If you already have a local kerberos directory, delete it, or move it before untaring the new release. Once untared, set the symbolic link "/krb" to point to the new directory. If you are on a workstation and don't want the .a or .h files, feel free to delete them. It will give you back considerable space. WARNING: if you run the old version of kinit you must use the old verions of rlogin, rcp, etc, and vice versa. Using different versions of these commands will result in a segmentation fault because of (infinite recursion). The new release provides the following: krb.conf This file specifies your local realm on the first line and the kerbeors servers for various realms on the following lines. Warning: If not hosts are specified for the default realm, kinit will time out real fast as it "retries each of them" multiple times. kinit no longer prints a message except for failures, or if you specify the "-c" (confirmation) flag. It also allows you specify a realm with the "-r" flag. This only works if you have hosts listed in /etc/krb.conf for that realm. kinit will also now try multiple kerberos servers if more than one has been specified in /krb.conf. kdestroy has a "-q" (quiet) and a "-f" (force) option. The quiet option suppresses printing ^Gs wheras the force option keeps it from printing anything. Also, thanks to wesommer, kdestroy no zeroes the ticket file before unlinking it. klogind Assorted bug fixes. kshd rlogin rcp rsh ----- realms Are now supported. You should not hardcode realm names when using kerberos. You can, instead, use the routine krb_getrlm(s,1) to write the current realm (from krb.conf) into the string pointed to by s. The length of this string should be REALM_SZ. prot v4 The initial exchange of tickets now uses protocol version 4. This limits the number of tickets requested to 1. The change will alow the kerberos server to be more resistant to errors since the lentgh of its response is now bounded. The increment in ther version number effects other exchanges as well. Version three will be phased out and no longer supported sometome around the 27th. --[0055]-- \f [0056] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:20 (13 lines) Subject: New version From bcn@ATHENA.MIT.EDU Tue Aug 19 21:58:58 1986 From: Clifford Neuman <bcn@ATHENA.MIT.EDU> Date: Tue, 19 Aug 86 19:55:42 EDT To: geer Subject: New version Cc: kerberos Add to my previous message before forwarding it that krb.conf should be put in /etc. Thanks. ~ Cliff --[0056]-- \f [0057] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:20 (16 lines) Subject: Re: New release From wesommer@ATHENA.MIT.EDU Tue Aug 19 22:07:33 1986 To: bcn@athena.mit.edu Cc: geer@athena.mit.edu Cc: asp@athena.mit.edu, kerberos@athena.mit.edu Subject: Re: New release In-Reply-To: Your message of Tue, 19 Aug 86 19:53:53 EDT. <8608192353.AA05841@MENELAUS> Date: Tue, 19 Aug 86 21:02:53 -0500 From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> I assume you meant "/@/menelaus/projects/auth/kerberos.tar"; ~auth/src/kerberos.tar doesn't exist.. - Bill --[0057]-- \f [0058] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:20 (13 lines) Subject: Re: New release From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Wed Aug 20 09:24:40 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: Re: New release To: wesommer@ATHENA.MIT.EDU Cc: geer@ATHENA.MIT.EDU, asp@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: <8608200102.AA03825@PRIAM> Right. /@/menelaus/projects/auth/kerberos.tar. Sorry. ~ Cliff ------- --[0058]-- \f [0059] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:20 (56 lines) Subject: Kerberos authenticated RFS is workin From wesommer@ATHENA.MIT.EDU Wed Aug 20 10:10:03 1986 To: rfs-info, kerberos Subject: Kerberos authenticated RFS is working. Date: Wed, 20 Aug 86 10:06:31 -0500 From: wesommer@ATHENA.MIT.EDU I set aside last night towards making RFS and Kerberos work together. After much hacking, quite a bit of kludging, and other work-arounds, I managed to get it working. The code is not yet ready for "release" (it isn't all that robust, it requires the latest Kerberos release to work properly, and I want to keep watching the log files so I know when it breaks...). I managed to get it working without any kernel modifications; this made my life a lot easier. This is possible because, although the kernel makes the actual connection, it has no idea of the authentication used. RFS connections (which are TCP connections) are relatively long-lived (typically as long as a login session); when the connection is made to the server, the server does a "call-back" to a "mount daemon" running on the client; the mount daemon provides the authenticators. There is a noticeable "pregnant pause" of a few seconds while the appropriate tickets are requested, and the authenticators encoded, shipped, and decoded. The mount daemon does the actual calls to mk_ap_req, after consulting the /etc/utmp file to see who's logged in. This causes a bit of a problem, as there is no documented way to specify more than one ticket file for an application to look at; I got around this by writing my own tkt_string routine which returned what I thought the filename should be for each user. I haven't gotten this reconciled with Toehold's insistance on putting the tickets in /tmp/tkt_ttyv0 rather than /tmp/tkt<uid>. The other major problem was translating domain names (e.g. PRIAM.MIT.EDU) into service fullnames (rcmd.priam@ATHENA.MIT.EDU); I wound up breaking up the domain name around the left-most period, lowercasifying the first part, and making the second part the realm, unless it happened to be MIT.EDU, in which case I translated it into ATHENA.MIT.EDU. The new server is, surprisingly enough, somewhat smaller than the old one while executing (with perhaps 80KB of data space as opposed to 160KB in the old version); this is because it no longer builds a permission map out of everyone's .rhosts files on startup. - Bill --[0059]-- \f [0060] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:21 (10 lines) Subject: Friday' From spm@ATHENA.MIT.EDU Thu Aug 21 20:51:25 1986 From: Steve Miller <spm@ATHENA.MIT.EDU> Date: Thu, 21 Aug 86 20:48:05 EDT To: champine, fhsu, kerberos Subject: Friday' Aug 22 I will be at Athena. --[0060]-- \f [0061] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:21 (68 lines) Subject: interesting bug From henry@ATHENA.MIT.EDU Fri Aug 22 16:54:17 1986 To: kerberos Subject: interesting bug Dish-Of-The-Day: Frozen Ammonia Pops Fruit-Of-The-Day: kumquat Home-Address: P. O. Box 1303 Kendall Square Station; Cambridge, MA 02142 Work-Address: MIT/Project Athena; E40-371; Cambridge, MA 02139 Work-Phone: (617) 253-0177 Date: Fri, 22 Aug 86 16:50:57 -0500 From: Henry Mensch <henry@ATHENA.MIT.EDU> I've enclosed portions of two terminal sessions from two different hosts below. Something seems scwewy! Script started on Fri Aug 22 16:34:52 1986 42 charon /mit/h/e/henry --> date Fri Aug 22 16:35:21 EDT 1986 43 charon /mit/h/e/henry --> /krb/kinit MIT Project Athena, (charon) Kerberos login: henry Password: 44 charon /mit/h/e/henry --> man tcsh | /krb/rsh theseus "lpr -Pln03-bldge40-3" erberos rsh or rcp failed: Ticket expired (rd_ap_req) Kerberos rcmd failed. Tell your guru. Trying normal rsh. 45 charon /mit/h/e/henry --> date Fri Aug 22 16:36:17 EDT 1986 46 charon /mit/h/e/henry --> /krb/kdestroy Tickets destroyed 47 charon /mit/h/e/henry --> exit 48 charon /mit/h/e/henry --> script done on Fri Aug 22 16:36:27 1986 (**** now I realize that charon often runs things differently (**** so I went back to theseus and tried the same sorts of (**** things. This is what happened: Script started on Fri Aug 22 16:38:41 1986 42 theseus /tmp/henry --> date Fri Aug 22 16:38:51 EDT 1986 43 theseus /tmp/henry --> kinit MIT Project Athena, (theseus) Kerberos login: henry Password: 44 theseus /tmp/henry --> ls /tmp total 58 0 #26502 1 henry 11 11-124 0 line 7 11-124d 1 list_of_keys 0 Scribe002742 20 messages 1 cur_line 1 post011503 2 first_week 9 terminal_room_filing_cabinets 4 foo 1 tkt12408 45 theseus /tmp/henry --> rsh charon "man tcsh" | lpr -Pln03-bldge40-3 erberos rsh or rcp failed: Ticket expired (rd_ap_req) You have new mail. 46 theseus /tmp/henry --> ^charon^odyss rsh odyss "man tcsh" | lpr -Pln03-bldge40-3 erberos rsh or rcp failed: Ticket expired (rd_ap_req) 47 theseus /tmp/henry --> date Fri Aug 22 16:40:33 EDT 1986 48 theseus /tmp/henry --> exit 49 theseus /tmp/henry --> script done on Fri Aug 22 16:40:46 1986 --[0061]-- \f [0062] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:21 (17 lines) Subject: Kerberos/styx From spm@ATHENA.MIT.EDU Fri Aug 22 18:05:38 1986 From: Steve Miller <spm@ATHENA.MIT.EDU> Date: Fri, 22 Aug 86 18:02:13 EDT To: bcn Subject: Kerberos/styx Cc: kerberos I got the kinit to work, with some effort. Had a problem with byte swapping in pkt_clen(); my macro was not working right. So I replaced it with a "swab", and had to add another temp. So there is a new version of pkt_clen() on menel. See if "hindmost" can get the other stuff to build, then we can continue debugging it. --[0062]-- \f [0063] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:21 (11 lines) Subject: hacking at the gates of hell From mtc@ATHENA.MIT.EDU Wed Aug 27 13:13:29 1986 To: kerberos Cc: wdc, dm Subject: hacking at the gates of hell Date: Wed, 27 Aug 86 13:21:16 -0500 From: Mark Colan <mtc@ATHENA.MIT.EDU> Bill Cattey proposed the development of a program to break thru the Kerberos protection. He wants to call it "Dante". --[0063]-- \f [0064] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:21 (9 lines) Subject: Friday From miller%erlang.DEC@decwrl.DEC.COM Thu Aug 28 14:45:07 1986 Date: 28-Aug-1986 1434 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB), dec@athena.mit.edu Subject: Friday I will be at Athena late morning on Friday, Aug 29. --[0064]-- \f [0065] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:21 (15 lines) Subject: Inter realm communications From bcn@ATHENA.MIT.EDU Tue Sep 2 18:48:05 1986 From: Clifford Neuman <bcn@ATHENA.MIT.EDU> Date: Tue, 2 Sep 86 18:47:28 EDT To: kerberos Subject: Inter realm communications I think I have the inter-realm code running in the server. It should only take a little bit more work to get the client code to make use of this functionality. Unfortunately, there is a problem with rlogin, etc. It can't seem to pars a REALM entry in a .klogin file that contains a period (such as LCS.MIT.EDU). ~ Cliff --[0065]-- \f [0066] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:21 (22 lines) Subject: realm From spm@ATHENA.MIT.EDU Tue Sep 2 20:47:32 1986 From: Steve Miller <spm@ATHENA.MIT.EDU> Date: Tue, 2 Sep 86 20:44:29 EDT To: kerberos Subject: realm I'm pleased that Cliff has the realm stuff working in the server. I think it would be worthwhile to extend the .klogin notion, and make it a bit more generic. Kerberos would provide a routine, "check_auth_type_1()" that would specify a file name, and the name, instance, and realm of the request. The routine would read and parse the named file, and either just return True/False, or some arbitrary string tacked onto the end of the entry. This is only rally having kerberos provide the parsing, doing it once, preferably correct, and re-using it in a general fashion for any other application that so desires. Of course, there is no requirement to use this routine or authorization scheme. --[0066]-- \f [0067] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:21 (23 lines) Subject: unimplemented features From spm@ATHENA.MIT.EDU Tue Sep 2 21:03:56 1986 From: Steve Miller <spm@ATHENA.MIT.EDU> Date: Tue, 2 Sep 86 21:00:51 EDT To: kerberos Subject: unimplemented features Last I checked, there were two unimplemented features relating to the protocol. The first is guaranteed replay detection. This requires stable storage at the servers, and can be a significant performance hit. When implemented, its use should be optional, reserved for applications where detecting all replays is very important, e.g. cash machines. Without the stable store, certain types of replays cannot be detected. The second feature is the mutual authentication option. Again, this is critical when you dont want to surrender the family jewels until you are sure that the bank is the bank. It involves implementing a protocl message, and modifying the interface and code to support it. I would suggest adding these two features after the current functionality has survived some considerable large scale use. --[0067]-- \f [0068] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:22 (40 lines) Subject: Re: Bug in rlogin, etc From mtc@ATHENA.MIT.EDU Wed Sep 3 12:24:40 1986 To: bcn Cc: kerberos Subject: Re: Bug in rlogin, etc In-Reply-To: Your message of Tue, 2 Sep 86 18:42:13 EDT. <8609022242.AA03464@TARTAROS> Date: Wed, 03 Sep 86 12:22:49 -0500 From: Mark Colan <mtc@ATHENA.MIT.EDU> An immediate fix for your problem is to put the realm in quotes. For example: realm="ATHENA.MIT.EDU" will give you the desired result. The .klogin parsing is working as designed; similar to the C language, a token can consist of any alphanum or '_'. Therefore, ATHENA.MIT.EDU is received as five tokens. Cliff, I can easily change the rules for what constitutes a token. If you want me to do that, tell me which of the following alternatives you prefer. Making the change for any of these alternatives is trivial. 1. Leave as is, require quotes for tokens containing punctuation and whitespace. 2. Allow '.' in a (non-quoted) realm token, as well as alphanums and '_'. 3. Allow '.' '_' and alphanum, and the following punctuation: (you specify) 4. Allow ANY ASCII (except comma and whitespace) to be part of a token. mtc --[0068]-- \f [0069] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:22 (19 lines) Subject: Re: Bug in rlogin, etc From mtc@ATHENA.MIT.EDU Wed Sep 3 13:31:53 1986 To: wesommer Cc: kerberos Subject: Re: Bug in rlogin, etc Date: Wed, 03 Sep 86 13:30:55 -0500 From: Mark Colan <mtc@ATHENA.MIT.EDU> from wesommer: > How about option 4A: Allow any @i(printable) ascii other than comma > and whitespace to be part of a token?? Okay. Actually, we're going with 4B: any printable ascii other than comma AND EQUAL SIGN. A "printable ascii" will be >040 and <0177. The equal sign is part of the "keyword=value" syntax. mtc --[0069]-- \f [0070] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:22 (19 lines) Subject: Inter-realm interactctiosn work From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Wed Sep 3 14:37:04 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: Inter-realm interactctiosn work To: kerberos@ATHENA.MIT.EDU I just got the rest of the kerberos library to work correctly with the inter-realm authentication. Mark claims to have fixed the problem with the .klogin files. This leaves only one more thing to be done for inter-realm authentication to be used. The client code for rlogin, rcp, etc, has to be able to figure out what realm a machine is in so that it can be passed to mk_ap_req. I will leave this to mtc since it involves the rcmd code itself. The potential problem comes up when trying to figure out what realm a machine in the .MIT.EDU domain resides in. With LCS.MIT.EDU machines, it is easy. ~ Cliff ------- --[0070]-- \f [0071] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:22 (25 lines) Subject: Re: realm From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Wed Sep 3 14:37:15 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: Re: realm To: spm@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: <8609030044.AA24377@MENELAUS> I think it would be worthwhile to extend the .klogin notion, and make it a bit more generic. Kerberos would provide a routine, "check_auth_type_1()" that would specify a file name, and the name, instance, and realm of the request. The routine would read and parse the named file, and either just return True/False, or some arbitrary string tacked onto the end of the entry. Isn't this what we defined an-to_ln to do? Of course, this routine would read a single file for the entire systems instead of individual files in a users drectory. Also, the file reading functionality is not yet implemented. Anyway, I am not going to concern myself with this issue until I am out in WA. I have too much to do in the next 2 days as it is. ~ Cliff ------- --[0071]-- \f [0072] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:22 (22 lines) Subject: RT kerberos library From BCN%DEEP-THOUGHT@EDDIE.MIT.EDU Wed Sep 3 17:21:10 1986 From: Clifford Neuman <BCN%DEEP-THOUGHT@EDDIE.MIT.EDU> Subject: RT kerberos library To: kerberos@ATHENA.MIT.EDU I managed to get a get_ad_tkt call to run successfully. This means that mk_ap_req on the RT does in fact work. At first I got the message "time is out of bounds" and thought it might be byte ordering, but checking the time on STYX, it was indeed 17 hours off. rlogin, rcp, and rsh do not work on the RT with kerberos. Brian is working on those programs now. Also, the version of krb.h in /usr/include on STYX is ancient, and on the RVD. When Steve is in on Friday, we can try merging the few remaining changes on the RT version back into the primary sources on menelaus. For now, it looks like the RT kerberos library does work, and I plan to spend tomorrow and Friday working on Hesiod. ~ Cliff ------- --[0072]-- \f [0073] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:22 (25 lines) Subject: Kerberos on the RT From spm@ATHENA.MIT.EDU Fri Sep 5 16:59:49 1986 From: Steve Miller <spm@ATHENA.MIT.EDU> Date: Fri, 5 Sep 86 16:59:00 EDT To: kerberos Subject: Kerberos on the RT Cc: Lerman, Saltzer, dec Since I had previously gotten the DES library and the "kinit" working on the RT, and "hindmost" reports that he has had initial success with the rcmd stuff on the RT, I believe that the RT is now ready for full scale Kerberos testing and development (e.g. RVD). This, of course, does not mean that it is bug free, but rather that we should start using it and wait for bug reports. Consequently, I will discontinue my weekly visits to Athena, and switch to an occasional or on request mode. I can be reached at 1-486-7545, or at mail address miller%erlang.dec@decwrl.com . Steve. P.S. Please do keep me informed of significant issues, either with the protocols, operation of the system, or types of use. --[0073]-- \f [0074] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:22 (25 lines) Subject: Re: realm From spm@ATHENA.MIT.EDU Fri Sep 5 18:01:54 1986 To: bcn%deep-thought@eddie.mit.edu Cc: spm@athena.mit.edu Cc: kerberos@athena.mit.edu Cc: spm@menelaus.mit.edu Subject: Re: realm In-Reply-To: Your message of Wed 3 Sep 86 14:21:42-EDT. <12236033903.14.BCN@DEEP-THOUGHT.MIT.EDU> Date: Fri, 05 Sep 86 18:02:21 -0500 From: Steve Miller <spm@ATHENA.MIT.EDU> It (check_auth_type()) is similar, but not identical to the an_to_ln(), but semantically quite different. an_to_ln() maps from an athena Kerberos name to a system specific name, but does not imply any authorization. For example, it could be used to map Kerberos names into Kanji characters in Japan! As Cliff mentioned, it could be managed by the system or some central authority. The check_auth_type_1() would operate on a name (Kerberos or local, by convention), and return an authorization. This needs to be managed by whoever is allowed to control a given service. E.g. I manipulate the files authorizing access to my account. --[0074]-- \f [0075] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:23 (11 lines) Subject: marv From spm@ATHENA.MIT.EDU Fri Sep 5 18:03:32 1986 From: Steve Miller <spm@ATHENA.MIT.EDU> Date: Fri, 5 Sep 86 18:04:08 EDT To: kerberos Subject: marv Who is marv@src.dev.com on the kerberos mailing list? I am getting mail bounced back addressed to him. --[0075]-- \f [0076] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:23 (20 lines) Subject: Integrated interrealm into rcmd From srz@athena.MIT.EDU Sun Sep 7 15:16:13 1986 From: srz@athena.MIT.EDU Date: Sun, 7 Sep 86 15:16:29 EDT To: mtc@athena.MIT.EDU Subject: Integrated interrealm into rcmd Cc: kerberos@athena.MIT.EDU I have fixed up LCS's version of rlogin, rcp, etc. to handle inter-realm authentication. This allows users authenticated in the LCS realm to present tickets and login to the ATHENA realm. For this to go the other way, the ATHENA rcmd stuff will have to be updated. I have left sources for rlogin & rcmd in my homedir in menelaus. In rcmd.c, I have replaced PrincipalHostname with ExpandHost, which takes a user-specified host ("MENELAUS"), and converts it into a principal host ("menelaus") and a kerberos realm ("ATHENA.MIT.EDU"). rlogin, rcp, etc, just need to be changed to pass the results of this call to mk_ap_req. --[0076]-- \f [0077] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:23 (15 lines) Subject: Re: Kerberos on the RT From geer@ATHENA.MIT.EDU Mon Sep 8 14:19:24 1986 To: spm@lyre Cc: kerberos@lyre Cc: lerman@lyre, saltzer@lyre, dec@lyre Subject: Re: Kerberos on the RT In-Reply-To: Your message of Fri, 5 Sep 86 16:59:00 EDT. <8609052059.AA02736@LYRE> Date: Mon, 08 Sep 86 14:17:33 -0500 From: geer@ATHENA.MIT.EDU thank, steve, for everything. we'll keep you informed. --dan --[0077]-- \f [0078] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:23 (50 lines) Subject: Security breakin at Stanford. From miller%erlang.DEC@decwrl.DEC.COM Tue Sep 9 00:09:28 1986 Date: 08-Sep-1986 1707 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @[MILLER]KERB) Subject: Security breakin at Stanford. From: ERLANG::RONSICKI "DTN 226-7551, LKG1-2/A19" 8-SEP-1986 15:07 To: FALCONE,DICKENS,WEITHMAN,MILLER,GLASER Subj: Massive security problem at Stanford To: everyone From: reid (Brian Reid) Date: 4 Sep 1986 2209-PDT (Thursday) Cc: Subject: computer security This week there was a massive computer breakin at Stanford. Virtually every Unix computer on the campus has been penetrated. The intruders are clearly experts: they made changes to various system programs, recompiled them, installed the recompiled versions, and reset the "last-write" date of the changed programs. Even as I send this message, one of the burglars is logged in to a certain Vax over a dialup, editing the source for "login". The police have been unable (legally or technically, I am not certain) to trace the phone calls, and the system managers involved have chosen to monitor the people's activities rather than terminate the accounts that they are using. The breakin pattern is to break into one machine, gain root permission there, and then fan out from that machine using ".rhosts" and "/etc/hosts.equiv" to take over accounts on other machines. The burglars seem to have tremendous patience: Stanford folks stopped counting at 50 machines penetrated. It is just a matter of time until they expand from attacking Stanford hosts to attacking hosts nearby on the network, i.e. DEC. There are so many ways to break into Unix systems that it's somewhat of a pointless exercise to try to keep all the holes plugged, but if the system managers of DEC Palo Alto machines will contact me I will explain how the breakins happened. I just checked saturn, decwrl, magic, clark, and eros, and all of them have this security leak. This would be a good time to check every machine to make sure that none of the .rhosts files on them reference host names outside DEC. Brian --[0078]-- \f [0079] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:23 (16 lines) Subject: is this kerberos? From geer@ATHENA.MIT.EDU Wed Sep 10 08:28:45 1986 From: Dan Geer <geer@ATHENA.MIT.EDU> Date: Wed, 10 Sep 86 08:27:20 EDT To: kerberos Subject: is this kerberos? when starting my various windows and rsh xterms, i often find client: All ports in use and some windows will fail to appear. is this kerberos server congestion in some way? --dan --[0079]-- \f [0080] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:23 (11 lines) Subject: kinit password length From spm@ATHENA.MIT.EDU Wed Sep 10 21:23:39 1986 To: kerberos Subject: kinit password length Date: Wed, 10 Sep 86 21:21:47 -0500 From: Steve Miller <spm@ATHENA.MIT.EDU> (menelaus /usr/local/kinit ) still breaks with a long password. Breaks meaning doesnt work right, rejecting the password. --[0080]-- \f [0081] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:23 (12 lines) Subject: Re: kinit password length From srz@athena.MIT.EDU Wed Sep 10 22:25:23 1986 From: srz@athena.MIT.EDU Date: Wed, 10 Sep 86 22:24:09 EDT To: spm@ATHENA.MIT.EDU Subject: Re: kinit password length Cc: kerberos@athena.MIT.EDU On what principal is this losing on? It seems to work ok on the LCS realm. Was this set with passwd? passwd loses on new passwords that are too long. --[0081]-- \f [0082] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:23 (19 lines) Subject: Re: kinit password length From spm@ATHENA.MIT.EDU Thu Sep 11 20:57:22 1986 To: srz@athena.mit.edu Cc: kerberos@athena.mit.edu Subject: Re: kinit password length In-Reply-To: Your message of Wed, 10 Sep 86 22:24:09 EDT. <8609110224.AA12188@CHARON> Date: Thu, 11 Sep 86 20:55:39 -0500 From: Steve Miller <spm@ATHENA.MIT.EDU> I changed my password with the new Athena/Kerberos passwd command, then kinit didnt work with the new 10char passwd. Steve. --[0082]-- \f [0083] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:24 (13 lines) Subject: Re: kinit password length From srz@athena.MIT.EDU Thu Sep 11 22:24:44 1986 From: srz@athena.MIT.EDU Date: Thu, 11 Sep 86 22:23:18 EDT To: spm@ATHENA.MIT.EDU Subject: Re: kinit password length Cc: kerberos@athena.MIT.EDU The problem is with passwd, unless somebody has fixed it. Cliff was having the same problem when he used passwd to set his LCS password. -stan --[0083]-- \f [0084] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:24 (19 lines) Subject: Re: kinit password length From ostlund@ATHENA.MIT.EDU Thu Sep 11 23:11:32 1986 From: ostlund@ATHENA.MIT.EDU Date: Thu, 11 Sep 86 23:08:25 EDT To: spm@ATHENA.MIT.EDU, srz@athena.MIT.EDU Subject: Re: kinit password length Cc: kerberos@athena.MIT.EDU The present (installed on Athena 750's) /bin/passwd only accepts 8 character passwords. The revised edition (tested, soon to be released to the Athena staff cluster) accepts 40 character passwords, of which the first eight are handed to UNIX crypt(3) and stuffed into athenareg as the encrypted UNIX password. (This version also will work on VS2's and RT's.) For the moment, passwords longer than 8 characters won't work. John --[0084]-- \f [0085] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:24 (30 lines) Subject: Re: is this kerberos? From ostlund@ATHENA.MIT.EDU Fri Sep 12 15:34:46 1986 From: ostlund@ATHENA.MIT.EDU Date: Fri, 12 Sep 86 13:39:38 EDT To: kerberos Subject: Re: is this kerberos? From geer@ATHENA.MIT.EDU Wed Sep 10 08:28:15 1986 To: kerberos@ATHENA.MIT.EDU Subject: is this kerberos? when starting my various windows and rsh xterms, i often find client: All ports in use and some windows will fail to appear. is this kerberos server congestion in some way? --dan ------------- The answer, I think, is yes. Now that userreg is finally done, I'm planning to dive pretty much exclusively into Kerberos for a while. I hope I can answer this and other questions within the next week or so. John --[0085]-- \f [0086] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:24 (21 lines) Subject: New control arguments for rlogin,rsh From jis@BITSY.MIT.EDU Sat Sep 13 21:27:24 1986 Date: Sat, 13 Sep 86 21:26:43 EDT From: jis@BITSY.MIT.EDU (Jeffrey I. Schiller) To: kerberos@athena.mit.edu Subject: New control arguments for rlogin,rsh and rcp I have checked new versions of rcp.c, rlogin.c and rsh.c into ~auth/src/services/rcmd on menelaus. These updated programs support the "-k" control argument to specify a different realm then the one your machine is in. Ie. with them you can do the following: rlogin borax.lcs.mit.edu -k LCS.MIT.EDU which will "do the right thing" about negotiating with the various kerberi. Note: If you install these programs be sure to install the current "kinit" from ~auth on menelaus as well or else they will not operate at all! -Jeff --[0086]-- \f [0087] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:24 (23 lines) Subject: New control arguments for rlogin,rsh From wesommer@ATHENA.MIT.EDU Sat Sep 13 22:45:11 1986 Date: Sat, 13 Sep 86 21:26:43 EDT From: jis@BITSY.MIT.EDU (Jeffrey I. Schiller) To: kerberos@athena.mit.edu Subject: New control arguments for rlogin,rsh and rcp Sender: wesommer@ATHENA.MIT.EDU I have checked new versions of rcp.c, rlogin.c and rsh.c into ~auth/src/services/rcmd on menelaus. These updated programs support the "-k" control argument to specify a different realm then the one your machine is in. Ie. with them you can do the following: rlogin borax.lcs.mit.edu -k LCS.MIT.EDU which will "do the right thing" about negotiating with the various kerberi. Note: If you install these programs be sure to install the current "kinit" from ~auth on menelaus as well or else they will not operate at all! -Jeff --[0087]-- \f [0088] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:24 (52 lines) Subject: knetd (formerly Ksetup) From jtkohl@ATHENA.MIT.EDU Tue Sep 16 10:52:26 1986 From: John T Kohl <jtkohl@ATHENA.MIT.EDU> Date: Tue, 16 Sep 86 10:45:30 EDT To: kerberos Subject: knetd (formerly Ksetup) Us-Snail: Room A303, 4 Ames St, Cambridge, MA Zip-Code: 02142-1306 Dan Geer has asked me to work on the proposed Ksetup daemon (which I would like to rename knetd, for reasons below) and circulate a brief design spec for it. The design Jerry proposed has an extra overhead of two messages per connection, since the client would talk to a kerberos server and then to the desired server. I propose eliminating the extra message pair by the following scheme: knetd, similar in fashion to inetd, will act as a "multiplexor" to the various kerberos authenticated services. It will listen to one well-known port for tcp and udp connections. When a client wishes to connect to an authenticated server, it connects first to the knetd. The first message is the name (in suitable form) of the service the client wishes to use. The knetd correlates this name with a table (of the form maintained by /etc/inetd) and forks off the appropriate server, with appropriate arguments such that it realizes it is connected to a kerberos-speaking client. The server takes whatever authentication and/or authorization steps it deems necessary. (There are already routines in use by the login and rcmd protocols which do the grunge work of verifying the authenticity of a client, so development of the is_this_one_ok() authorization routine would not be necessary). This has the added benefit that the existing kerberos servers need not be changed drastically to accomodate this scenario (they might need a few minor changes regarding releasing the socket back to the knetd). We would already need to modify the server's code to allow kerberos authentication under the Ksetup scenario, so we are not losing ease of conversion by using knetd. We can also avoid allocating more well-known ports for new services (if desired) by having them connect through knetd. This table can be maintained simultaneously with /etc/srvtab and /etc/inetd.conf. To cover the problem of people who should use kerberos who are trying to avoid it by using the old existing protocols, an address filter (similar to the one used by the userinfod) can be devised to insure they are not circumventing authentication. Comments? --[0088]-- \f [0089] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:24 (294 lines) Subject: perhaps of interest ... From henry@ATHENA.MIT.EDU Wed Sep 17 12:11:57 1986 To: kerberos Subject: perhaps of interest ... Date: Wed, 17 Sep 86 10:08:35 -0500 From: Henry Mensch <henry@ATHENA.MIT.EDU> some time ago <spm> forwarded a message from Brian Reid at Stanford describing some large-scale breakins to Unix hosts on that campus. More on details on this are to be found in the message below. -- henry / <henry@athena.mit.edu> ------- Forwarded Message Return-Path: NEUMANN@CSL.SRI.COM Received: by THESEUS (5.45/4.7) id AA01476; Wed, 17 Sep 86 05:50:15 EDT Received: by ATHENA (5.45/4.7) id AA04363; Wed, 17 Sep 86 05:49:56 EDT Message-Id: <8609170949.AA04363@ATHENA> Date: Tue 16 Sep 86 15:40:35-PDT From: RISKS FORUM (Peter G. Neumann -- Coordinator) <RISKS@CSL.SRI.COM> Subject: RISKS-3.56 Sender: NEUMANN@CSL.SRI.COM To: RISKS-LIST@CSL.SRI.COM RISKS-LIST: RISKS-FORUM Digest, Tuesday, 16 September 1986 Volume 3 : Issue 56 FORUM ON RISKS TO THE PUBLIC IN COMPUTER SYSTEMS ACM Committee on Computers and Public Policy, Peter G. Neumann, moderator Contents: Massive UNIX breakins at Stanford (Brian Reid) The RISKS Forum is moderated. Contributions should be relevant, sound, in good taste, objective, coherent, concise, nonrepetitious. Diversity is welcome. (Contributions to RISKS@CSL.SRI.COM, Requests to RISKS-Request@CSL.SRI.COM) (Back issues Vol i Issue j available in CSL.SRI.COM:<RISKS>RISKS-i.j. Summary Contents in MAXj for each i; Vol 1: RISKS-1.46; Vol 2: RISKS-2.57.) - ---------------------------------------------------------------------- From: reid@decwrl.DEC.COM (Brian Reid) Date: 16 Sep 1986 1519-PDT (Tuesday) To: Peter G. Neumann <Neumann@csl.sri.com> [FOR RISKS] Subject: Massive UNIX breakins at Stanford Lessons learned from a recent rash of Unix computer breakins Introduction A number of Unix computers in the San Francisco area have recently been plagued with breakins by reasonably talented intruders. An analysis of the breakins (verified by a telephone conversation with the intruders!) show that the networking philosophy offered by Berkeley Unix, combined with the human nature of systems programmers, creates an environment in which breakins are more likely, and in which the consequences of breakins are more dire than they need to be. People who study the physical security of buildings and military bases believe that human frailty is much more likely than technology to be at fault when physical breakins occur. It is often easier to make friends with the guard, or to notice that he likes to watch the Benny Hill show on TV and then wait for that show to come on, than to try to climb fences or outwit burglar alarms. Summary of Berkeley Unix networking mechanism: The user-level networking features are built around the principles of "remote execution" and "trusted host". For example, if you want to copy a file from computer A to computer B, you type the command rcp A:file B:file If you want to copy the file /tmp/xyz from the computer that you are now using over to computer C where it will be called /usr/spool/breakin, you type the command rcp /tmp/xyz C:/usr/spool/breakin The decision of whether or not to permit these copy commands is based on "permission" files that are stored on computers A, B, and C. The first command to copy from A to B will only work if you have an account on both of those computers, and the permission file stored in your directory on both of those computers authorizes this kind of remote access. Each "permission file" contains a list of computer names and user login names. If the line "score.stanford.edu reid" is in the permission file on computer "B", it means that user "reid" on computer "score.stanford.edu" is permitted to perform remote operations such as rcp, in or out, with the same access privileges that user "reid" has on computer B. How the breakins happened. One of the Stanford campus computers, used primarily as a mail gateway between Unix and IBM computers on campus, had a guest account with user id "guest" and password "guest". The intruder somehow got his hands on this account and guessed the password. There are a number of well-known security holes in early releases of Berkeley Unix, many of which are fixed in later releases. Because this computer is used as a mail gateway, there was no particular incentive to keep it constantly up to date with the latest and greatest system release, so it was running an older version of the system. The intruder instantly cracked "root" on that computer, using the age-old trojan horse trick. (He had noticed that the guest account happened to have write permission into a certain scratch directory, and he had noticed that under certain circumstances, privileged jobs could be tricked into executing versions of programs out of that scratch directory instead of out of the normal system directories). Once the intruder cracked "root" on this computer, he was able to assume the login identity of everybody who had an account on that computer. In particular, he was able to pretend to be user "x" or user "y", and in that guise ask for a remote login on other computers. Sooner or later he found a [user,remote-computer] pair for which there was a permission file on the other end granting access, and now he was logged on to another computer. Using the same kind of trojan horse tricks, he was able to break into root on the new computer, and repeat the process iteratively. In most cases the intruder left trojan-horse traps behind on every computer that he broke into, and in most cases he created login accounts for himself on the computers that he broke into. Because no records were kept, it is difficult to tell exactly how many machines were penetrated, but the number could be as high as 30 to 60 on the Stanford campus alone. An intruder using a similar modus operandi has been reported at other installations. How "human nature" contributed to the problem The three technological entry points that made this intrusion possible were: * The large number of permission files, with entirely too many permissions stored in them, found all over the campus computers (and, for that matter, all over the ARPAnet). * The presence of system directories in which users have write permission. * Very sloppy and undisciplined use of search paths in privileged programs and superuser shell scripts. Permissions: Berkeley networking mechanism encourages carelessness. The Berkeley networking mechanism is very very convenient. I use it all the time. You want to move a file from one place to another? just type "rcp" and it's there. Very fast and very efficient, and quite transparent. But sometimes I need to move a file to a machine that I don't normally use. I'll log on to that machine, quickly create a temporary permission file that lets me copy a file to that machine, then break back to my source machine and type the copy command. However, until I'm quite certain that I am done moving files, I don't want to delete my permission file from the remote end or edit that entry out of it. Most of us use display editors, and oftentimes these file copies are made to remote machines on which the display editors don't always work quite the way we want them to, so there is a large nuisance factor in running the text editor on the remote end. Therefore the effort in removing one entry from a permission file--by running the text editor and editing it out--is high enough that people don't do it as often as they should. And they don't want to *delete* the permission file, because it contains other entries that are still valid. So, more often than not, the permission files on rarely-used remote computers end up with extraneous permissions in them that were installed for a one-time-only operation. Since the Berkeley networking commands have no means of prompting for a password or asking for the name of a temporary permission file, everybody just edits things into the permanent permission file. And then, of course, they forget to take it out when they are done. Write permission in system directories permits trojan horse attacks. All software development is always behind schedule, and programmers are forever looking for ways to do things faster. One convenient trick for reducing the pain of releasing new versions of some program is to have a directory such as /usr/local/bin or /usr/stanford/bin or /usr/new in which new or locally-written versions of programs are kept, and asking users to put that directory on their search paths. The systems programmers then give themselves write access to that directory, so that they can intall a new version just by typing "make install" rather than taking some longer path involving root permissions. Furthermore, it somehow seems more secure to be able to install new software without typing the root password. Therefore it is a nearly-universal practice on computers used by programmers to have program directories in which the development programmers have write permission. However, if a user has write permission in a system directory, and if an intruder breaks into that user's account, then the intruder can trivially break into root by using that write permission to install a trojan horse. Search paths: people usually let convenience dominate caution. Search paths are almost universally misused. For example, many people write shell scripts that do not specify an explicit search path, which makes them vulnerable to inheriting the wrong path. Many people modify the root search path so that it will be convenient for systems programmers to use interactively as the superuser, forgetting that the same search path will be used by system maintenance scripts run automatically during the night. It is so difficult to debug failures that are caused by incorrect search paths in automatically-run scripts that a common "repair" technique is to put every conceivable directory into the search path of automatically-run scripts. Essentially every Unix computer I have ever explored has grievous security leaks caused by underspecified or overlong search paths for privileged users. Summary conclusion: Wizards cause leaks The people who are most likely to be the cause of leaks are the wizards. When something goes wrong on a remote machine, often a call goes in to a wizard for help. The wizard is usually busy or in a hurry, and he often is sloppier than he should be with operations on the remote machine. The people who are most likely to have permission files left behind on stray remote machines are the wizards who once offered help on that machine. But, alas, these same wizards are the people who are most likely to have write access to system directories on their home machines, because it seems to be in the nature of wizards to want to collect as many permissions as possible for their accounts. Maybe that's how they establish what level of wizard that they are. The net result is that there is an abnormally high probability that when an errant permission file is abused by an intruder, that it will lead to the account of somebody who has an unusually large collection of permissions on his own machine, thereby making it easier to break into root on that machine. Conclusions. My conclusions from all this are these: * Nobody, no matter how important, should have write permission into any directory on the system search path. Ever. * Somebody should carefully re-think the user interface of the Berkeley networking mechanisms, to find ways to permit people to type passwords as they are needed, rather than requiring them to edit new permissions into their permissions files. * The "permission file" security access mechanism seems fundamentally vulnerable. It would be quite reasonable for a system manager to forbid the use of them, or to drastically limit the use of them. Mechanized checking is easy. * Programmer convenience is the antithesis of security, because it is going to become intruder convenience if the programmer's account is ever compromised. This is especially true in setting up the search path for the superuser. Lament I mentioned in the introduction that we had talked to the intruders on the telephone. To me the most maddening thing about this intrusion was not that it happened, but that we were unable to convince any authorities that it was a serious problem, and could not get the telephone calls traced. At one point an intruder spent 2 hours talking on the telephone with a Stanford system manager, bragging about how he had done it, but there was no way that the call could be traced to locate him. A few days later, I sat there and watched the intruder log on to one Stanford comptuer, and I watched every keystroke that he typed on his keyboard, and I watched him break in to new directories, but there was nothing that I could do to catch him because he was coming in over the telephone. Naturally as soon as he started to do anything untoward I blasted the account that he was using and logged him off, but sooner or later new intruders will come along, knowing that they will not be caught because what they are doing is not considered serious. It isn't necessarily serious, but it could be. I don't want to throw such people in jail, and I don't want to let them get away either. I just want to catch them and shout at them and tell them that they are being antisocial. Brian Reid DEC Western Research and Stanford University - ------------------------------ End of RISKS-FORUM Digest ************************ - ------- ------- End of Forwarded Message --[0089]-- \f [0090] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:25 (18 lines) Subject: Re: knetd From jis@BITSY.MIT.EDU Wed Sep 17 16:43:22 1986 Date: Wed, 17 Sep 86 16:41:57 EDT From: jis@BITSY.MIT.EDU (Jeffrey I. Schiller) To: kerberos@athena.mit.edu Subject: Re: knetd I agree with John's approach. It makes sense to have a knetd daemon which gobbles down an ascii service name and authenication strings and passes this information on (via a standard calling convention) to a spawned service process. The spawned processes could then use rd_ap_req() on the authenicant (as they do today) to determine whether or not the authenication is valid (though it is still up to the server to decide AUTHORIZATION issues, ie. whether or not it will in fact grant the service). -Jeff --[0090]-- \f [0091] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:25 (17 lines) Subject: Re: knetd From srz@athena.MIT.EDU Wed Sep 17 17:27:03 1986 From: srz@athena.MIT.EDU Date: Wed, 17 Sep 86 17:25:20 EDT To: jis@BITSY.MIT.EDU Subject: Re: knetd Cc: kerberos@athena.MIT.EDU Why not have knetd do the rd_ap_req, and just send the authentication information to the subprocess via argv? This would keep the individual programs from calling Kerberos, or even require them to run as root (although some of the services need it for other reasons). I don't see the use of using knetd if all it does is demultiplexing different kerberos protocols. That's what inetd for. -stan --[0091]-- \f [0092] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:25 (45 lines) Subject: Re: knetd From Saltzer@ATHENA.MIT.EDU Wed Sep 17 23:50:08 1986 Date: Wed, 17 Sep 86 23:31:46 EDT To: kerberos@athena.MIT.EDU Subject: Re: knetd In-Reply-To: <srz@athena.MIT.EDU>'s message of Wed, 17 Sep 86 17:25:20 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> Before getting in too deep on knetd, let's review the fundamental goals of the original ksetup proposal. There were two, both related to integrating preexisting services with Kerberos as painlessly as possible: 1. To stop in its tracks the approach of adding a new well-known port for every old protocol that we adapt to Kerberos. 2. To allow the old protocol to operate without change in its specification and with a minimum change in its implementation. The knetd proposal meets goal number 1 beautifully: we add one new well-known port for knetd and never again raise the issue of defining more well-known ports. Goal 2 is not so obviously met by the present knetd proposal. In the case of UDP protocols, I don't see any way to preserve an old protocol unchanged and at the same time avoid the extra two packets for setup. The suggestion by Stan that knetd should complete the authentication on the spot and report the authenticated identity of its invoker to the called subprocess as an extra argument sounds like it advances the goal of minimizing the impact on old implementations. And having a separate knetd.conf and inetd.conf is a nice compatibility win, because a site can decide, for example, to stop accepting non-kerberos-authenticated rlogins simply by removing rlogin from inetd.conf. (Assuming that the client strategy for kerberos-mediated rlogin is to attempt a knetd connection, and if it is rejected simply invoke the old rlogin command, which will try the inetd connection.) Jerry --[0092]-- \f [0093] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:25 (22 lines) Subject: Re: knetd From jtkohl@ATHENA.MIT.EDU Thu Sep 18 12:52:45 1986 From: John T Kohl <jtkohl@ATHENA.MIT.EDU> Date: Thu, 18 Sep 86 12:50:33 EDT To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: kerberos@athena.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Wed, 17 Sep 86 23:31:46 EDT Subject: Re: knetd Us-Snail: Room A303, 4 Ames St, Cambridge, MA Zip-Code: 02142-1306 Do we want the server to be able to see the kerberos authentication ticket for its own purposes? If not, it makes sense for the knetd to do the decoding. If so, I don't see an easy way to achieve it. I don't like the idea of maintaining a table on disk of what connections are currently "OK", mainly because it opens another possible window of opportunity for breaching kerberos security. John --[0093]-- \f [0094] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:25 (24 lines) Subject: Re: knetd From Saltzer@ATHENA.MIT.EDU Thu Sep 18 15:21:44 1986 Date: Thu, 18 Sep 86 15:18:20 EDT To: John T Kohl <jtkohl@ATHENA.MIT.EDU> Subject: Re: knetd Cc: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU>, kerberos@athena.MIT.EDU In-Reply-To: John T Kohl <jtkohl@ATHENA.MIT.EDU>'s message of Thu, 18 Sep 86 12:50:33 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> Isn't the original ticket in /tmp? If so, and if the server is smart enough to know that there is more information of interest, it can include a copy of the kerberos library routines, which know where to look for the original ticket. I would guess that most old protocols would be satisfied to be called with a parameter giving the (authenticated) name of their client. Jerry --[0094]-- \f [0095] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:25 (36 lines) Subject: Re: knetd From wesommer@ATHENA.MIT.EDU Thu Sep 18 15:36:51 1986 To: saltzer@athena.mit.edu Cc: kerberos@athena.mit.edu Subject: Re: knetd In-Reply-To: Your message of Thu, 18 Sep 86 15:18:20 EDT. <8609181918.AA24932@HERACLES> Date: Thu, 18 Sep 86 15:34:39 -0500 From: wesommer@ATHENA.MIT.EDU The original *ticket* is in /tmp/tkt_[foo] on the client side of the connection, and thus is inaccessible from the server side (unless, of course, the client is running some sort of file server and the ticket file is readable to the server.... something which shouldn't happen). The ticket is rather sensitive information; it permits anyone who possesses it to impersonate the principal who owns it for one particular instance of a service. Therefore, it does not leave the workstation. The *authenticator* (built with mk_ap_req from the ticket file) passed over is usually kept only in the address space of the server process. It is only valid from one internet address, for one user, for about five minutes (+/- clock skew). Passing the authenticated name to the server process should be done carefully; there should not be any way for randoms executing processes on the server (which, under many circumstances, will be a timesharing machine to some extent) to spoof the server process by calling it with a forged principal name; in particular, the process recieving the name should probably verify that it was invoked by a root process (if the daemon happens to be set-uid), and that it happens to be connected on an internet domain socket to the host where the user was coming from. - Bill --[0095]-- \f [0096] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:25 (32 lines) Subject: Re: knetd From Saltzer@ATHENA.MIT.EDU Thu Sep 18 16:58:06 1986 Date: Thu, 18 Sep 86 16:54:11 EDT Subject: Re: knetd To: wesommer@ATHENA.MIT.EDU Cc: saltzer@athena.mit.edu, kerberos@athena.mit.edu In-Reply-To: wesommer@ATHENA.MIT.EDU's message of Thu, 18 Sep 86 15:34:39 -0500 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> oops. obviously. Back to the original proposal: 1. knetd swallows the authenticator and places in /etc/ a root-writeable-anyone-readable table that lists (user identity, service, ip address, expiration time) 4-tuples that have been authenticated. 2. knetd invokes the appropriate server. The server runs what it thinks is the standard protocol with the client. 3. When the client declares its claimed identity via the standard protocol, the server asks is_this_one_ok by calling a subroutine that looks to see if the claimed identity is actually in the table. I think that may help remove the need for server to make sure they are invoked by root processes. (Instead, they probably need check to make sure that the table is still writeable only by root!) Jerry --[0096]-- \f [0097] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:26 (27 lines) Subject: Re: knetd From jtkohl@ATHENA.MIT.EDU Thu Sep 18 17:06:26 1986 From: John T Kohl <jtkohl@ATHENA.MIT.EDU> Date: Thu, 18 Sep 86 17:04:18 EDT To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: kerberos@athena.mit.edu In-Reply-To: Jerome H. Saltzer's message of Thu, 18 Sep 86 16:54:11 EDT Subject: Re: knetd Us-Snail: Room A303, 4 Ames St, Cambridge, MA Zip-Code: 02142-1306 Maybe I'm just paranoid, but I don't trust the security of such a table. It is just asking for impersonation. Consider someone who breaks root on a server machine. He can then impersonate whomever he chooses by writing to the table appropriately. If there is no such table, he cannot authenticate himself to kerberos and impersonate someone without other breaches. John --[0097]-- \f [0098] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:26 (22 lines) Subject: Re: knetd From wesommer@ATHENA.MIT.EDU Thu Sep 18 17:21:40 1986 To: saltzer@athena.mit.edu Cc: kerberos Subject: Re: knetd In-Reply-To: Your message of Thu, 18 Sep 86 16:54:11 EDT. <8609182054.AA26039@HERACLES> Date: Thu, 18 Sep 86 17:19:27 -0500 From: wesommer@ATHENA.MIT.EDU I would have the table say: user identity, service identity, ip addr, expiration time, checksum (the checksum is the 32 bit protected number in the authenticator, which is useful for some protocols). There would have to be some way to have entries deleted from the table, both at expiration time and before that (currently, the authenticators are transient, and disappear when the connections break). - Bill --[0098]-- \f [0099] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:26 (19 lines) Subject: Re: knetd From Saltzer@ATHENA.MIT.EDU Thu Sep 18 23:57:57 1986 Date: Thu, 18 Sep 86 23:37:35 EDT Subject: Re: knetd To: wesommer@ATHENA.MIT.EDU Cc: saltzer@athena.mit.edu, kerberos@ATHENA.MIT.EDU In-Reply-To: wesommer@ATHENA.MIT.EDU's message of Thu, 18 Sep 86 17:19:27 -0500 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> Bill's suggestion is only one step short of putting the entire received authenticator in the table, so that a Kerberos library routine buried in the server process can extract anything needed, with security, so long as it does it before the authenticator expires. Jerry --[0099]-- \f [0100] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:28 (19 lines) Subject: knetd and the proposed table From jtkohl@ATHENA.MIT.EDU Sat Sep 20 18:07:15 1986 From: John T Kohl <jtkohl@ATHENA.MIT.EDU> Date: Sat, 20 Sep 86 18:05:51 EDT To: kerberos Subject: knetd and the proposed table Us-Snail: Room A303, 4 Ames St, Cambridge, MA Zip-Code: 02142-1306 I dislike the idea of putting authentication information into a disk file, because it raises the probability of successful impersonation. I will not object to using this scheme if I am convinced (by you guys) that it is sufficiently secure not to worry about. Any arguments on the security of such a setup? John --[0100]-- \f [0101] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:28 (34 lines) Subject: Re: knetd From jis@BITSY.MIT.EDU Sun Sep 21 19:37:28 1986 Date: Sun, 21 Sep 86 19:36:40 EDT From: jis@BITSY.MIT.EDU (Jeffrey I. Schiller) To: kerberos@athena.mit.edu Subject: Re: knetd I think it is pointless to build a table for known authenicated connections consider: Since we first started talking about this proposal, we have haired it up quite considerably, what that table would have to look like, and how it would have to be read (ie. you cannot trust the table, so you have to make sure it is still root-only writable). Well it is pretty obvious if you go with this approach that you will have to provide a subroutine call that does all this work for you... BUT WE ALREADY HAVE ONE it is called RD_AP_REQ. If you have to edit a server program at all (ie. to add the subroutine call that fetches the authenication from a table) then you might as well add the call to RD_AP_REQ. There is also another piece of information that rd_ap_req gives you that hasn't been mentioned yet, that is the session key that is associated with a ticket, and is provided by the authenicator. You obviously don't want to leave this key in a readable place! What is the objection to using rd_ap_req? It is really the only subroutine that has to be used by a service (there is an issue of security having to do with non-trusted services all having to be able to read /etc/srvtab, but that can be corrected by spliting /etc/srvtab up into several separate files....). -Jeff --[0101]-- \f [0102] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:28 (27 lines) Subject: re: knetd From spm@ATHENA.MIT.EDU Mon Sep 22 21:36:43 1986 To: kerberos Subject: re: knetd Date: Mon, 22 Sep 86 21:30:16 -0500 From: Steve Miller <spm@ATHENA.MIT.EDU> After being away for a week, I read all the notes re knetd. I agree with Jerry's goals of minimizing new well known ports and the disruption to existing protocols. Knetd could clearly address the new ports issue simply, while not requiring any extra tables (other than the knetd) on the server. From there, I am in closest agreement with Jeff, that is, embed the existing rd_ap_req() in the Kerberos versions of the protocols. As far as relative security is concerned: a) If you have root access to a server, all bets are off regardless of whether or not Kerberos is involved, extra tables are involved, etc. b) A two-stage approach, where you first authenticate to knetd, then invoke "is_this_one_ok()" is somewhat less secure, in that you have opened a time window for impersonation of the client. Steve. --[0102]-- \f [0103] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:28 (83 lines) Subject: simpler approach to RVD-kerberos in From Saltzer@ATHENA.MIT.EDU Sat Sep 27 12:11:25 1986 Date: Sat, 27 Sep 86 12:09:38 EDT To: kerberos, rvd-info, yba Subject: simpler approach to RVD-kerberos integration From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> John Ostlund, Jim Van Sciver, and I have been going over a strategy to simplify the integration of RVD with Kerberos, and I think we now have a complete and consistent simpler proposal. The idea is to focus on the goal for initial integration: The first goal isn't to increase RVD security, it is to simplify administration and use by replacing a password-per-spinup interface with one based on a password at login time. This proposal effectively does that simplification but only for what will be the most common and hard-to-administer case, the student locker. At the same time, we need to finesse the temporary lack of an Access Control List Service. With this proposal, when that service is available, a second round of minor changes to RVD will lead to both better function and better security. The idea is to make just one change right now: activate the "owner" field associated with each pack at the server. A new RVD packet type, "authenticated-spinup", is defined; it looks just like ordinary spinup but it contains an authenticated Kerberos ticket instead of a password. The server uses the standard Kerberos library routines to examine the ticket and extract the Athena user name. If this user name matches the name found in the "owner" field, the spinup request is honored. If not, it isn't. In addition, no change is made to the server's action on receiving an old-fashioned spinup packet. It extracts the password field of the packet and compares it with the appropriate password field of the pack data, which we continue to maintain. The client spinup command now behaves as follows: Try to obtain a Kerberos ticket for RVD service. If it is obtainable, ask the client driver to send an "authenticated-spinup". If that succeeds, carry on. If it doesn't (or a Kerberos ticket wasn't obtainable) the command tries an ordinary spinup sequence, prompting for a password if necessary, just as is done now. [Tuneup: If, on an authenticated-spinup request that fails the owner test, the server goes ahead and checks for a null password in the pack data, and allows the spinup, it could save the client the extra round of interaction currently used to discover the need for a password.] Administration of student lockers would be done by creating packs with the name of the owner as the owner, and with random strings as passwords. I would be inclined not to even admit the existence of the random strings, so as not to encourage the procedure of exchanging files by exchanging passwords; the ability to allow someone else spinup access is better postponed till we have an ACLS and can do it appropriately. System library packs would continue to operate as now, with some operations or system engineering id being owner, a null password for read access, and a password known to both operations and system engineering for update access. Managing those passwords is two orders of magnitude less hassle than trying to do it for all students. The same is less true for class library packs, but I think hand administration will still work there, at least until we can field an ACLS. Two more loose ends: Operations and administration would still be accomplished with passwords, as at present; but now is the time to separate those two functions. And finally, the change to encrypt the passwords found in the RVD data base should now be made. Steve Miller's high-performance DES one-way-encipherment will be used rather than the more majestically paced Unix algorithm. When the ACLS server becomes available, a second round of changes would be made: the server would accept ACLS membership certification tickets as well as Kerberos tickets; all password fields would be replaced by list or user names, and operations and administrative operations would be done by supplying tickets. Comments? Jerry --[0103]-- \f [0104] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:28 (38 lines) Subject: Re: simpler approach to RVD-kerberos From rlk@ATHENA.MIT.EDU Sat Sep 27 14:13:31 1986 Date: Sat, 27 Sep 86 14:12:00 EDT From: Robert L. Krawitz <rlk@ATHENA.MIT.EDU> Sender: rlk@ATHENA.MIT.EDU To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU, rvd-info@ATHENA.MIT.EDU, yba@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Sat, 27 Sep 86 12:09:38 EDT Subject: Re: simpler approach to RVD-kerberos integration Date: Sat, 27 Sep 86 12:09:38 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Administration of student lockers would be done by creating packs with the name of the owner as the owner, and with random strings as passwords. I would be inclined not to even admit the existence of the random strings, so as not to encourage the procedure of exchanging files by exchanging passwords; the ability to allow someone else spinup access is better postponed till we have an ACLS and can do it appropriately. Hiding that sort of information is useless. For something as vital as sharing information, people will learn how sooner or later. How are people going to share files under these circumstances? By the obvious expedient of giving out their password. Comments? Why not allow people to specify a different password for r/o spinup, and use the same sort of procedure? Then people at least don't have to give out their login password just to give other people the [bogus] sort of access that r/o spinup allows? [I won't except by this reference rehash the old arguments about rvd lockers. As usual, the entire flame can be found in /@/priam/mit/r/l/rlk/Rmail/rvdwars.] Robert^Z --[0104]-- \f [0105] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:28 (34 lines) Subject: Re: simpler approach to RVD-kerberos From Saltzer@ATHENA.MIT.EDU Sat Sep 27 19:04:58 1986 Date: Sat, 27 Sep 86 19:02:55 EDT To: Robert L. Krawitz <rlk@ATHENA.MIT.EDU> Subject: Re: simpler approach to RVD-kerberos integration Cc: rlk@ATHENA.MIT.EDU, Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU>, kerberos@ATHENA.MIT.EDU, rvd-info@ATHENA.MIT.EDU, yba@ATHENA.MIT.EDU In-Reply-To: Robert L. Krawitz <rlk@ATHENA.MIT.EDU>'s message of Sat, 27 Sep 86 14:12:00 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> > How are > people going to share files under these circumstances? By the obvious > expedient of giving out their password. I agree, that is probably what will happen. To forestall it, see below. > Why not allow people to specify a different password for r/o spinup, > and use the same sort of procedure? Then people at least don't have > to give out their login password just to give other people the [bogus] > sort of access that r/o spinup allows? That is allowed by the existing machinery in the RVD server; the only hitch is providing an administrative mechanism to do the change to the database. The missing piece is an interface to the database stored on Hector to make the change permanent. We can add that as soon as someone gets time to code it, without touching the server. What I would rather do is quickly design and code a simple Access Control List server and interface so people can set their own ACL's. We need it anyway, for all services including NFS export control. Jerry --[0105]-- \f [0106] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:29 (60 lines) Subject: Re: simpler approach to RVD-kerberos From jis@BITSY.MIT.EDU Sun Sep 28 10:57:57 1986 Date: Sun, 28 Sep 86 10:57:07 EDT From: jis@BITSY.MIT.EDU (Jeffrey I. Schiller) To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: rlk@ATHENA.MIT.EDU, Robert L. Krawitz <rlk@ATHENA.MIT.EDU>, kerberos@ATHENA.MIT.EDU, rvd-info@ATHENA.MIT.EDU, yba@ATHENA.MIT.EDU Subject: Re: simpler approach to RVD-kerberos + I agree with RLK. If we don't provide a way for users to exchange information, short of exchanging their login passwords, they WILL exchange their login passwords. This wouldn't be so bad except that I feel it establishes a bad precedent that would be hard to change later, once ACL service is available. How hard would it be to code in the password setting code on the database server on hector (setup so that anyone with kerberos authentication as the owner can diddle the passwords)? On another topic: Operations and Maintenance of RVDs. I have been chomping over in my mind a proposal for quite some time. I haven't said anything yet because I feel it is "unclean" and fuzzes the boundary between AUTHENTICATION and AUTHORIZATION... a boundary that I was an ardent supporter of! Begin suggest-a-kludge mode (until an ACL service lives): Currently each service machine resides within a kerberos realm, and each service can find out its realm with a kerberos library call. Each kerberos principal has a name that consists of two components. a "name" and an "instance". For humans registered in the database the "name" is their login name and their "instance" is NULL. Some few of us also have a different "principal" (with its own password). This principal has our login names as our "name" and the string "root" as our instance. Certain services know to grant certain (listed) people "super-user" access as long as their "root" instances are used to authenticate their requests. We only get tickets for services with our "root" instances if we intend to do super-userish sort of things. In this way our normally logged in terminal is not a gateway to the world for some intruder. Note: everything in the above paragraphs is already implemented. I propose generalizing this mechanism of "root" instance trusting so that all who come calling with a "root" instance are trusted as the super-user. We then only allow certain individuals to have "root" instances. Therefore in place of the RVD operations password any "root" instance from a realm equal to the realm of the server is permitted to do RVD system control operations, and the "name" field of the authentication is logged in the RVD log. When an individual no longer needs root access (ie. he no longer works for Athena) his root instance can be decommisioned without effecting his normal NULL instance. End suggest-a-kludge mode; -Jeff --[0106]-- \f [0107] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:29 (18 lines) Subject: How are things going From BCN@WARD.CS.WASHINGTON.EDU Sun Sep 28 18:44:58 1986 Date: Sun 28 Sep 86 15:42:55-PDT From: Clifford Neuman <BCN@WARD.CS.WASHINGTON.EDU> Subject: How are things going To: kerberos@ATHENA.MIT.EDU, hesiod@ATHENA.MIT.EDU How are things going with kerberos and hesiod. Has there been any progress with hesiod? And have there been any problems with kerberos? What is the next step for each of these projects. I see that there has been a lot of concern on the Arpanet over the existing Unix scheme of authentication, but haven't had a chance to read all the messages yet. It may be the right time to make kerberos available beyond MIT (and Washington). ~ Cliff ------- --[0107]-- \f [0108] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:29 (23 lines) Subject: Re: simpler approach to RVD-kerberos From jvs@ATHENA.MIT.EDU Mon Sep 29 11:16:20 1986 From: jvs@ATHENA.MIT.EDU Date: Mon, 29 Sep 86 11:14:35 EDT To: Saltzer, jis Subject: Re: simpler approach to RVD-kerberos + Cc: bitsy.mit:Krawitz@edu, bitsy.mit:Robert@edu, kerberos, rlk, rvd-info, yba John Ostlund and I had discussed using the instance to specify an RVD server capability; e.g. rather than passing an instance of "root" have the RVD server recognize instances of "rvd_admin" or "rvd_oper" and then allow the authenticated user to perform administration or operations functions. This is a relatively clean way to use Kerberos authentication to provide some authorization. The problems with this solution: 1. it is a temporary fix that would have to be backed out when a real ACLS became available. 2. it does not solve the larger problem of pack access lists. In general, I think our efforts would be best spent in creating an ACLS rather than trying to work around its absense. -Jim VS --[0108]-- \f [0109] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:29 (28 lines) Subject: Re: Operations and Maintenance of RV From miller%erlang.DEC@decwrl.DEC.COM Tue Sep 30 00:44:04 1986 Date: 29-Sep-1986 1650 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu, rvd-info@athena.mit.edu, miller%erlang.DEC@decwrl.DEC.COM Subject: Re: Operations and Maintenance of RVDs kludge I have trouble with the kludge suggested by Jeff. It not only mixes authentication and authorization, but naming as well. It could set a dangerous precedent on use of names for privileges. I believe that in such cases, the name can be used by convention as a HINT. In other words, all privileged access requests might require instance "rvd-admin", but would still be subject to some type of authorization system. But even the use as a HINT is questionable, and should only be done if it simplifies management. Another temporary alternative for RVD administration is to clone to routines Mark setup for the rcmd stuff, and use the same routines with a separate file listing the authorized Kerberos names who are valid rvd administrators. I had previously suggested making this form of local authorization more generic than just rcmd. Steve. --[0109]-- \f [0110] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:29 (23 lines) Subject: Re: Operations and Maintenance of RV From Saltzer@ATHENA.MIT.EDU Tue Sep 30 11:47:48 1986 Date: Tue, 30 Sep 86 10:24:44 EDT To: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) Subject: Re: Operations and Maintenance of RVDs kludge Cc: rvd-info@athena.mit.edu, kerberos@athena.mit.edu, miller%erlang.DEC@decwrl.DEC.COM In-Reply-To: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller)'s message of 29-Sep-1986 1650 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> > Another temporary alternative for RVD administration is to clone to > routines Mark setup for the rcmd stuff, and use the same routines > with a separate file listing the authorized Kerberos names who are > valid rvd administrators. I had previously suggested making this > form of local authorization more generic than just rcmd. I have a different problem with that proposal: it is implementing a service-specific access control list. I would rather put the effort int a rudimentary access control list service. Jerry --[0110]-- \f [0111] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:29 (25 lines) Subject: knetd available for testing From jtkohl@ATHENA.MIT.EDU Wed Oct 8 16:01:24 1986 From: John T Kohl <jtkohl@ATHENA.MIT.EDU> Date: Wed, 8 Oct 86 15:59:02 EDT To: kerberos Subject: knetd available for testing Us-Snail: Room A303, 4 Ames St, Cambridge, MA Zip-Code: 02142-1306 The new knetd package is available for testing. There is a tar distribution file available from charon by anonymous ftp in ~ftp/pub/knetd.distrib, or from priam:~jtkohl/knetd.distrib (for those with access to priam). The tar file contains a README file which should get you set up to test knetd. Knetd is a simple TCP port multiplexor whose intent is to reduce the number of well-known ports kerberos integration requires. Please report any problems you have to jtkohl@ATHENA.MIT.EDU John --[0111]-- \f [0112] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:29 (146 lines) Subject: a different proposal for authorizati From Saltzer@ATHENA.MIT.EDU Sat Oct 11 23:18:28 1986 Date: Sat, 11 Oct 86 23:15:36 EDT To: kerberos, watchmakers, developers Subject: a different proposal for authorization, etc. From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> Jeff and I have been chewing over several alternate possibilities for design of an authorization service. Each has a Japanese-tea-party-like scenario of interaction among a client, Kerberos, authorization service, name service, and the service the client was interested in (if it hasn't lost interest after all that). The result of those discussions is a new proposal, radically different from the previous one I made (recently well summarized by Steve Miller) on how to organize this architecture. There are three issues that are beginning to dominate my thinking on this topic: 1. Availability: It is appropriate to minimize the number of distinct, other network services that must be available at the instant that one decides to invoke some service, especially if the other network service isn't really needed for the specific case at hand. (E.g., you are importing a public file system that allows anyone read access. Access lists are irrelevant, so no request should be made of an access list server, which may be on the other side of a gateway that is reloading right now.) 2. Intricacy: some of the scenarios are very baroque; others seem more intuitively organized and modular. Simplicity should win. Also, simpler cases should have simpler scenarios. 3. Who's in charge: access authorization is a poorly organized area, with lots of different ways to do it. In the absence of widespread agreement that there is one best way, the server designer should get to decide how to do it, rather than having to fit into someone else's imposed model. Another aspect of this consideration is that private services should get to (have to) store their own authorization information, rather than burdening a public storehouse with such stuff. The new proposal, and a more-or-less complete scenario for integrating name service, Kerberos, and authorization, is as follows (there are a lot of services flying around in this discussion--the one the client really wants to invoke is called the "desired service"): 1. Assume for starters that each client (and service) knows the internet address of a name service and the name of Kerberos. As part of its initialization, the client invokes the name service to determine the internet address of Kerberos. It also performs an initial transaction with Kerberos to obtain a ticket-granting ticket. Each service that cares about authorization has done the same thing as part of its initialization. 2. The client learns the name of a desired service. It may learn in one of any number of ways. Here are a few examples: - A prospective user reads the name on a bulletin board. - User copies a program from a public place; the program has the name buried in it. - The name is embedded in a system-provided library program. - The name is embedded in a class-provided library program. - The user knows a watchmaker. 3. The person exporting the desired service has previously done one thing: registering the name of that service with the name service. If this step hasn't happened, it doesn't prevent use of the desired service, but it does mean that the client has to invoke it by discovering and using a host name and port number, rather than by name. 4. The client invokes the name service to learn the host name and port of the desired service. The client can cache this information at its own risk, to allow future invocations of the desired service without using the name service again. The name service provides a time-to-live value for the information that gives the client a hint about how long it is safe to cache it. [There is an open question of whether for this record type the name service should also resolve the host name into a host internet address, to avoid another inquiry of the name service. Since a different authoritative name server is likely to be the real source of the name-to-IP address information, there may be no advantage to doing it under the covers.] 5. The client invokes the Kerberos ticket-granting service, requesting a ticket for the desired service name. If Kerberos has never heard of the desired service, that doesn't cause the scenario to abort; it may simply be that the desired service doesn't require authentication. 6. [Assuming that the initial response from the name service was the name of the server's host] The client invokes the name service again, to transform the host name of the desired service into an internet address. 7. The client invokes the desired service, presenting its Kerberos ticket (if by now it has one) certifying the client's identity. It is the responsibilty of the desired service to decide whether or not it wishes to deal with this client. 8. The desired service may invoke a list membership service, which operates via a network connection in a process running on the same host. This list membership service looks up the client's identity in a list that was mentioned in the request, and reports whether or not it finds that name. A list may contain names of other lists; the list membership service will perform a recursive descent through these lists trying to verify membership of the client in one of them. 9. A named list can either be stored in a file containing lists on this host, or it can be managed by a list membership service running on a different host. The access list service is organized like the BIND name service: a local process manages some authoritative data; it may refer to remote list membership servers which manage other authoritative data. The ability to use remote servers allows the possibility of shared, centrally managed lists. The ability to use local lists allows the possibility of lists whose contents are unknown to any central authority. The architecture allows that these two possibilities can be mixed and matched in any way desired by the implementer or manager of the host that offers the service. Because the desired service is probably depending on the authenticity of the certifications of the list membership service, each connection with a remote list membership service must be initiated via Kerberos and the responses from the service need to be integrity-assured. One way could be for the remote list membership service to return a copy of the original request, with a yes or no bit added, enciphered in the session key that the invoker obtained at initial connection with the list membership service. This description leaves a fair amount to be designed as to how the list membership service might work internally. Because of the family resemblance, an initial model might be that it is organized much like the BSD BIND package, perhaps to the extent of implementing it by starting with the code of that package. It seems fairly likely that the same list membership service can serve both for access control lists and also for mailing lists--especially since it would provide neatly both for completely private as well as publicly shared mailing lists. It should be apparent that this proposal needs some comment and discussion . . . Jerry --[0112]-- \f [0113] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:30 (70 lines) Subject: Re: a different proposal for authori From miller%erlang.DEC@decwrl.DEC.COM Tue Oct 14 12:31:20 1986 Date: 14-Oct-1986 1151 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB), watchmakers@athena.mit.edu, developers@athena.mit.edu, miller%erlang.DEC@decwrl.DEC.COM Subject: Re: a different proposal for authorization, etc. Many moons ago, while discussing these issues, we noted that a key design decision was whether it was the service's responsibility to request authorization information, or whether the client had to provide a "sealed capability" that verified its authorization privileges. The current proposal by Jerry is of the former type, where the service has the entire responsibility, given an authenticated user id, to determine the authorization in whatever fashion it deems best. I believe that this is a reasonably clean solution with only one drawback. That is, if a single server (process) handles multiple clients, the server must either block other clients while performing a potentially lengthy network transaction to check authorization, or alternatively, must be prepared to simulate separate threads for each client. Thus, while waiting for authorization information to be returned for client A, client B's requests could be serviced. The problem is that if the server blocks, performance (throughput) suffers considerably. Or in order to simulate threads, new and more complex programming of the server is required. The Kerberos versions of the "rcmd"s currently work in a similar manner; all authorization policy and mechanism is done by the service, locally. If server performance is a potential bottleneck, this approach also adds workload to the server for the extra messages to check authorization. With these provisos in mind, I find this proposal comparable to the previous, with different tradeoffs. Minor comments: Servers registering in name service-- For servers with well known ports, this works well, with few transactions. For servers that are not at well known ports, but whose port changes each time instantiated, update traffic at the name service should be kept in mind, as well as the authorization for changing the name service entry. Alternately, a two-stage binding could be used, where the name service maps to a host, and something on the host maps to a specific port. List membership service-- This could be a generic interface via network protocols ( and library), rather than requiring it to be local. The only difference would be performance, and security/integrity on the network media. The library could detect whether the two ends were on the same host or not, and apply encryption or integrity checks accordingly. As mentioned in the proposal, this service would be authoritative for certain lists, and would communicate with other list membership services where needed. If the list membership service recursively translates lists, it must provide cycle detection at input/update. Caches should time-out relatively quickly, since they provide real value, rather than just a performance improvement. And you cannot guarantee any means of invalidation in a network environment with a variety of types of failures. {end} --[0113]-- \f [0114] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:30 (35 lines) Subject: Re: a different proposal for authori From Saltzer@ATHENA.MIT.EDU Tue Oct 14 14:52:06 1986 Date: Tue, 14 Oct 86 14:49:31 EDT To: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) Cc: kerberos, watchmakers, developers Subject: Re: a different proposal for authorization, etc. In-Reply-To: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller)'s message of 14-Oct-1986 1151 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> Steve, Thanks for the quick response. You have pinpointed the one issue that worries me most about this approach, namely that any server that uses the common authorization system must wait for a network transaction; some servers may not be organized in a way that makes that easy. If we implement the list membership service via a network path to a server running on the same machine, then desired services that are organized with a single thread perhaps could accept a restriction: their membership lists must be all handled locally by the first list membership server asked. Since the first such server is actually on the same machine the response is guaranteed to be quick. To enforce such a restriction, the interface to and the protocol with to the list membership server could both have a parameter that says "Don't refer this request forward." To reduce time further, it might be more appropriate to implement the local list membership service as a library subroutine that works directly with files stored in /site/authorizations/ and that invokes a real network protocol only when those lists seem to refer to outside, common lists. Jerry --[0114]-- \f [0115] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:30 (15 lines) Subject: Re: a different proposal for authori From jg@ATHENA.MIT.EDU Tue Oct 14 18:45:24 1986 From: jg@ATHENA.MIT.EDU To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: miller%erlang.DEC@decwrl.dec.com, kerberos, watchmaker, developers Subject: Re: a different proposal for authorization, etc. In-Reply-To: Your message of Tue, 14 Oct 86 14:49:31 -0400. <8610141849.AA04472@HERACLES> Date: Tue, 14 Oct 86 18:41:50 EDT I note that the X server is one of the type that Steve describes, and yes, it would be very painful to recode to not block on doing the authorization... In addition, when you run a program to your display, you would really like it to be able to start quickly.... Jim --[0115]-- \f [0116] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:30 (47 lines) Subject: Re: a different proposal for authori From Saltzer@ATHENA.MIT.EDU Tue Oct 14 23:51:48 1986 Date: Tue, 14 Oct 86 23:48:18 EDT To: <jg@ATHENA.MIT.EDU> Subject: Re: a different proposal for authorization, etc. Cc: miller%erlang.DEC@decwrl.dec.com, kerberos@ATHENA.MIT.EDU, watchmakers@ATHENA.MIT.EDU, developers@ATHENA.MIT.EDU In-Reply-To: <jg@ATHENA.MIT.EDU>'s message of Tue, 14 Oct 86 18:41:50 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> > I note that the X server is one of the type that Steve describes, and > yes, it would be very painful to recode to not block on doing the > authorization... In addition, when you run a program to your > display, you would really like it to be able to start quickly.... Good point. However this one may be salvageable within a general framework of having the server responsible for authorization decisions. The X server is a good example of a service that almost certainly can get along without the need for shared membership lists. Suppose that the xhost mechanism is replaced with a simple check by the x server of a locally-stored list of (Kerberos-authenticated) users who are permitted to open windows. That would probably require opening a file--perhaps only at X startup time--but no block awaiting some network service to respond. Another way to attack it is to observe that the one thing that needs to go as fast as possible is figuring out that the window is being opened by the workstation user from another host. If that case goes fast perhaps the less frequent but more general case of a stranger opening a window can be slower. Here is a question for the Kerberos/rlogin crowd. If I am Kerberos-authenticated at my workstation, and I rlogin or rsh to another machine successfully, what (if anything) can my process at the other machine do to short-cut the full-bore Kerberos ticket acquisition mechanism when opening commerce with my workstation? Superficially, the X client code at the other host is going to have to go to Kerberos to get an X server ticket enciphered in my own private key so that my workstation will accept it; but my workstation could have provided that ticket as well. Any ideas on how to get this out-and-back authentication to go cheaply? (Without accidentally permitting anyone else logged in on the same time-sharing system to open a window, too.) Jerry --[0116]-- \f [0117] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:30 (79 lines) Subject: Re: a different proposal for authori From jis@BITSY.MIT.EDU Wed Oct 15 00:19:53 1986 Date: Wed, 15 Oct 86 00:18:43 EDT From: jis@BITSY.MIT.EDU (Jeffrey I. Schiller) To: Saltzer@ATHENA.MIT.EDU Cc: jg@athena.mit.edu, miller%erlang.DEC@decwrl.dec.com, kerberos@ATHENA.MIT.EDU, watchmakers@ATHENA.MIT.EDU, developers@ATHENA.MIT.EDU Subject: Re: a different proposal for authorization, etc. Ah. what a can of worms. One thing I have done often is login to host A, and then rlogin to host B. Now on host B I want to invoke a kerberos authenicated service, but I have to get tickets. To get these tickets I have to give host B my password. Now my rlogin connection between A and B is NOT enciphered, so my password is going over the net in the clear, something that kerberos is supposed to avoid. What is clearly needed here is for rlogin (kerberos authenicated version) to transmit a ticket granting ticket for me from host A to host B using the make_private_message function to hide the ticket. Now tickets are IP address specific so I cannot merely send my ticket granting ticket from host A to host B, for that will not work. I therefore propose that kerberos authenicated rlogin be changed to perform the following transaction: Currently the rlogin program (client) makes an authenicator (with mk_ap_req) for you and sends it with some other information (terminal type and whatnot) as the first bytes in a rlogin connection. The server then reads this authenicator and validates it (using rd_ap_req) This should be changed so that the rlogin client determines the IP address you are about to communicate with (it does this anyhow, how else could it make a connection!). It then using your krbtgt (ticket granting ticket) it asks the kerberos server for an additional krbtgt valid from host B. Then it sets up a connection to host B sending first your authenticator (created with mk_ap_req) and then the new krbtgt encased in a private message (with mk_private_message) followed by your terminal type info. The rlogind program (server on host B), would read this information and then store the krbtgt in /tmp/tkt_... (ie. where kerberos login stores it now). In this way your login session on host B will have a krbtgt and be able to go on from there as if you had logged in directly, and no private information is sent unenciphered on the network. Note: You are completely safe, for even if host B is not who you think he is (ie. someone faked out the name service) your krbtgt will not be exposed, If B is bogus he won't be able to decode your authenicator and therefore not get the session key contained therein, which is the key that mk_private_message used to encipher the transaction that contains your krbtgt. Also Note: The kerberos server would have to be modified to support the "I want a krbtgt for host B" given a krbtgt for host A (of course this transaction will have to be initiated from host A). Presumably a library function could be added to the kerberos library to support this "promotion" of a krbtgt. Now what does this have to do with X? Well if this mechanism was in place, then if you rlogin'd to a time sharing system from a workstation, the time sharing system would have a krbtgt for you and could get a service ticket for the X server on your workstation and thus make authenticators. NOTE: today we DO NOT have service keys on the workstations. If we wanted the X server on your workstation to accept kerberos authentication we would have to register an X server instance FOR EACH WORKSTATION in the kerberos database, and more troublesome, maintain those keys on the workstations. It is this fact that will probably nix have the X server use kerberos authenication at all!!! Enough for one message... -Jeff --[0117]-- \f [0118] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:30 (68 lines) Subject: authentication forwarding; X servers From miller%erlang.DEC@decwrl.DEC.COM Thu Oct 16 03:39:14 1986 Date: 15-Oct-1986 1518 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB) Subject: authentication forwarding; X servers The recent messages from both Jerry and Jeff point out that Kerberos was not initially designed to support such "authentication forwarding". I believe Jeff's suggestions can provide a reasonable workaround, analogous to poor-man's-routing. Note that the address is sealed in the ticket to provide an inexpensive means of detecting certain replay attempts when using one-way authentication. Unless we go to a 3-way handshake for mutual authentication, and eliminate the one-way authentication, it should stay there. To address Jerry's question using the X client example, Jeff's suggestion could be further extended such that a client on host A can request tickets that would be valid from host B. Then the client safely transports the tickets from host A to host B, and uses them on host B as if they were originally obtained there. I would suggest a couple of minor changes- a) Only the session key needs to be secret, since the ticket is only valid in conjunction with the session key to create an authenticator. (could even change a future version of Kerberos to not encrypt the tickets returned from the Kerberos server, but merely the session keys and a checksum of the tickets.) b) modify the ticket-granting ticket to allow requesting more than one ticket at a time, only restricted by the minimum length limits of a UDP datagram. This makes the network and server transactions more efficient when you know you need more than one ticket at a time. The original auth_request allowed this, but has since been limited to only 1 ticket request at a time. c) guarantee that a new krbtgt ticket created from an existing krbtgt ticket expires no later than the original. The X problem, where the X server comes and goes with different owners on a workstation, is not readily solved using the Kerberos server. It would require frequent changes to the Kerberos database, and to the "owner" of an entry in the database. The current batch update of the database, as well as its administrative restrictions, make this unreasonable. Make your own ticket-- ---------------------- However, if you view the role of the Kerberos server as securely distributing a session key between a client and server, other possibilities arise. The secrets that Kerberos maintains are the master keys. A user logging into a workstation is in a perfect position to securely distribute a session key to the server, i.e. the X server on the workstation, and the client, i.e. themself! For example, the user could use their own password as the temporary X server master key, and construct their own ticket for the X service automatically at login time! Local X client applications would use the ticket thus constructed. If you wanted to rlogin to another system then run an X application to the original host, do as suggested by Jeff, but making your own ticket. I havent thought through all the details for the X server problem, but I think this type of approach is feasible. Comments? --[0118]-- \f [0119] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:30 (31 lines) Subject: re: authentication forwarding; X ser From Saltzer@ATHENA.MIT.EDU Thu Oct 16 12:28:38 1986 Date: Thu, 16 Oct 86 12:26:07 EDT To: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) Subject: re: authentication forwarding; X servers Cc: kerberos@athena.mit.edu (Distribution list @KERB) In-Reply-To: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller)'s message of 15-Oct-1986 1518 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> > A user logging into a workstation is in a perfect position to > securely distribute a session key to the server, i.e. the X server on > the workstation, and the client, i.e. themself! For example, the > user could use their own password as the temporary X server master > key, and construct their own ticket for the X service automatically > at login time! This is clearly the right direction to go for X authentication. I don't like the idea of using the user's own password, which otherwise doesn't need to remain around on the workstation. But for self-authentication any randomly-generated key will do just fine. The obvious one to use is the session key obtained in the initial Kerberos encounter. The main problem underlying this direction is mechanical: the current mechanism for rsh and rlogin isn't equipped to pass environment information, such as display location and, with this proposal, authenticators. Jerry --[0119]-- \f [0120] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:30 (60 lines) Subject: Re: a different proposal for authori From BCN@WARD.CS.WASHINGTON.EDU Mon Oct 20 23:28:27 1986 Date: Mon 20 Oct 86 20:26:36-PDT From: Clifford Neuman <BCN@WARD.CS.WASHINGTON.EDU> Subject: Re: a different proposal for authorization, etc. To: jis@BITSY.MIT.EDU Cc: Saltzer@ATHENA.MIT.EDU, jg@ATHENA.MIT.EDU, miller%erlang.DEC@DECWRL.DEC.COM, kerberos@ATHENA.MIT.EDU, watchmakers@ATHENA.MIT.EDU, developers@ATHENA.MIT.EDU In-Reply-To: <8610150418.AA09755@BITSY.MIT.EDU> Alot of the discussions that have been going on on this list recently with respect to kerberos mirror many of issues that have been discussed before. I will first discuss authentication forwadring. Having rlogin generate a new set of tickets for the destination host is clearly the way to go. There are a few problems though. First, one does not want to do this automatically (or at least without providing an override). As a security-concious user, you are not going to desire the forwarding of your credentials to a new system that you know is not secure. Perhaps this would be acceptable if you made the life of those credentials sufficiently short, but once credentials expire in the middle of the rlogin session, the simple path no longer exists for renewing them and you are back where you started. Another possible solution, although not as clean, would require some kind of call back mechanism from the remote system that would allow the desired tickets (or perhaps a shortlived tgt) to be obtained as necessary. Once the user has logged out of the remote system, further requests would be disallowed. Although a bit more secure, this doesn't solve the problem completely. The problem is one of deciding just how far you want to trust an untrustworthy agent. Steve suggested restricting the lifetime of new tickets to the remaining life of the ticket granting ticket. If I recall correctly, this is allready the case. Now onto the next topic, X. At the moment, service keys do not reside on the public workstations. I expect that this is the way things will remain since their security can't be assured. The first approach one might consider taking to solve this problem is to use the key for the client who is currently logged in. This is bad since we want to get rid of this key as quickly as possible after it has been entered. In discussions with mike and tony (regarding the noticication server) I presented a possible scheme where an intial unauthenticated request triggers a reply that is the initial message of a mutual authentication exchange. Unfortunately, this only works for requests from a timesharing (or server host) to a workstation, and not between workstations. It is also fairly complex. I have a few other ideas on this topic, but they, too, are overly complex, and I won't go into them here. Most of the relavant issue have been mentioned with respect to an access control list server. The main tradeoff is between conceptual simplicity in the approach where the end service calles the ACLS, and taking the load off the end service when the ACLS is called by the client. ------- --[0120]-- \f [0121] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:30 (35 lines) Subject: Re: a different proposal for authori From jis@E40-311B-2.MIT.EDU Tue Oct 21 10:57:55 1986 Date: Tue, 21 Oct 86 10:55:37 EDT From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: Clifford Neuman <BCN@WARD.CS.WASHINGTON.EDU> Cc: Saltzer@ATHENA.MIT.EDU, jg@ATHENA.MIT.EDU, jis@BITSY.MIT.EDU, miller%erlang.DEC@DECWRL.DEC.COM, kerberos@ATHENA.MIT.EDU, watchmakers@ATHENA.MIT.EDU, developers@ATHENA.MIT.EDU Subject: Re: a different proposal for authorization, etc. Ah, but the trick is you don't need a permanent service key on a workstation. Consider: User logs into workstation. A RANDOM service key is generated for the "X" service and stored into /etc/srvtab. Now when the user does an rlogin to a timesharing system (assuming that rlogin hands over tickets), rlogin calls a subroutine (yet to be written) that constructs an "X" ticket for use on the timesharing system by fetching the service key out of /etc/srvtab. The timesharing machine can then use this ticket for creating authenicators that the X server on the workstation can check using normal kerberos subroutines (rd_ap_req). The beauty of this approach is that it is secure, and requires NO interaction with the kerberos server. Although the kerberos PROTOCOL is used, the server is not because there is no need to use a central registry to hang onto the service key. In fact we may want to generalize this one step further by creating a service name of "ME" (well we can pick a better name, but I'll use this for an example) which could be used by all services that run on the workstation. Specifically all services that want to know "Is this incoming connection being made on behalf of the user which is using ME." -Jeff --[0121]-- \f [0122] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:31 (13 lines) Subject: Visit From miller%erlang.DEC@decwrl.DEC.COM Wed Oct 22 01:26:35 1986 Date: 21-Oct-1986 1512 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB), dec@athena.mit.edu, miller%erlang.DEC@decwrl.DEC.COM Subject: Visit I expect to drop by tomorrow, Wed, late morning to say hello and see what is exciting. Steve. --[0122]-- \f [0123] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:31 (13 lines) Subject: Authentication forwarding From miller%erlang.DEC@decwrl.DEC.COM Wed Oct 22 04:22:57 1986 Date: 21-Oct-1986 1601 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB), miller%erlang.DEC@decwrl.DEC.COM Subject: Authentication forwarding Another possibility is to do the forwarding as previously discussed (jis), but as a separable command, e.g. "Kerb_forward hostname". This leaves all the muck out of rlogin, yet you could alias (or script) "rlogin" et all to be "Kerb_forward \!*; rlogin \!*". --[0123]-- \f [0124] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:31 (21 lines) Subject: Re: Authentication forwarding From srz@athena.MIT.EDU Wed Oct 22 10:48:56 1986 From: srz@athena.MIT.EDU Date: Wed, 22 Oct 86 10:47:11 EDT To: kerberos@athena.MIT.EDU Subject: Re: Authentication forwarding But how can a separate command forward tickets between two hosts in a secure way? There needs to be a session key kept between the two parties, which is something that rlogin would have to do. I like the idea of being able to manually forward tickets, though; I would then be tempted in writing a "ksu", which is like "su", except it requires kerberos tickets, not passwords. Keeping login passwords off the network doesn't help if people have to type in root passwords... -stan --[0124]-- \f [0125] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:31 (46 lines) Subject: Re: Authentication forwarding From spook@ATHENA.MIT.EDU Wed Oct 22 13:09:20 1986 To: kerberos Subject: Re: Authentication forwarding In-Reply-To: srz's message of Wed, 22 Oct 86 10:47:11 EDT. Date: Wed, 22 Oct 86 11:57:21 -0500 From: Ken Raeburn <spook@ATHENA.MIT.EDU> But how can a separate command forward tickets between two hosts in a secure way? There needs to be a session key kept between the two parties, which is something that rlogin would have to do. I like the idea of being able to manually forward tickets, though; I would then be tempted in writing a "ksu", which is like "su", except it requires kerberos tickets, not passwords. Keeping login passwords off the network doesn't help if people have to type in root passwords... While it could be done for trusted timesharing machines, workstations (or not-necessarily-trusted timesharing systems) on the receiving end do not present a reasonable way to do this before logging in. If the initial rlogin protocol set up the session key (randomly generated?), this key could be used later to transfer the TGT (or a limited set of tickets) after logging in, could it not? The session key would not in itself provide a way to get the TGT from the host without the user requesting that it be sent, but if the user decided he wanted to use the TGT from the remote host, he could then send it over, via a separate program. That would still allow someone to send a phony TGT, but if the program that did the receiving were to check that a valid rcmd ticket could be requested for that user, given the supposed TGT that it was given, this could be excluded. Since the program receiving the TGTs from the network and rlogind would be running independently, some location in the filesystem would probably have to be predetermined as the location of that user's tickets; some sort of double server accepting TGT-transfer connections from the network and accepting pathnames from local processes (through a socket accessible only through setuid programs?) would be possible, but a little messy. [An even messier possibility -- add to the klogin protocol an escape sequence that says "here comes a TGT!", and a sequence on the user side....] _kr --[0125]-- \f [0126] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:31 (16 lines) Subject: Re: Authentication forwarding From Raeburn.PDO@MIT-MULTICS.ARPA Wed Oct 22 13:58:04 1986 Date: Wed, 22 Oct 86 13:44 EDT From: Ken Raeburn <Raeburn@MIT-MULTICS.ARPA> Subject: Re: Authentication forwarding To: kerberos@ATHENA.MIT.EDU Cc: Ken Raeburn <spook@ATHENA.MIT.EDU> In-Reply-To: Message of 22 Oct 86 12:57 EDT from "Ken Raeburn" Wait, never mind that message. I realized after a little more thought that that's not the right way to do things, even if it were to work.. Sigh. -Ken --[0126]-- \f [0127] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:31 (45 lines) Subject: Time synchronization From miller%erlang.DEC@decwrl.DEC.COM Thu Oct 23 11:10:33 1986 Date: 23-Oct-1986 0948 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB) Subject: Time synchronization I tracked down a problem that Jim VanSciver was having with Kerberos, and it turned out to be a time synchronization problem. The Kerberos server itself was running over 3 minutes slow, while his workstation was running fast. The net result was that the Kerberos server rejected ticket-granting-ticket requests. The current maximum time skew allowed by the protocol is 5 minutes. Stretching this does not solve the problem, but only increases the number of days clocks can drift before the problem bites you. It also increases vulnerability to replays. Therefore I would suggest the following: a) The time on Kerberos servers is manually set by the Kerberos administrator every couple of days (or more frequently.) The Athena timeservice should not be automatically used for this, since it could be spoofed, may not be accurate, and the time exchange is not authenticated. b) Workstations and time sharing systems should synchronize to "real" time, using either the Athena time service or other means, on a daily basis using some mechanism such as crontab. c) A system/network manager should monitor the Timeserver time to check for significant discrepancies. If the Kerberos time and the timeserver time get too far out of synch, Kerberos effectively will reject all requests from systems that synched to the timeserver. A more ambitious approach would be to make the timeserver a trusted, Athena administered service using a Kerberos protocol to provide integrity for certain requests. Then by adding a reliable source of the time, such as a WWV receiver, things could stay correctly in synch. Of course, to boot the "system" you still need a good external reference of time to setup the Kerberos time before it talks to the timeserver. So if wierd, intermittent Kerberos errors occur, check the time synchronization. Steve. --[0127]-- \f [0128] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:31 (23 lines) Subject: re: Time synchronization From Saltzer@ATHENA.MIT.EDU Thu Oct 23 17:50:34 1986 Date: Thu, 23 Oct 86 17:47:32 EDT To: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) Subject: re: Time synchronization Cc: kerberos@athena.mit.edu (Distribution list @KERB) In-Reply-To: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller)'s message of 23-Oct-1986 0948 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> A quick strategy that would help improve the situation would be to have crontab on the Kerberos server run a program once a day to invoke the network standard time server, compare it with the Kerberos clock, and if they are different by more than 15 seconds, send a mail message to the Kerberos administrator. The Kerberos administrator would be the only one who would actually modify the Kerberos clock. With this approach, the only bad effect of a spoofed, inaccurate, or unauthenticated timeservice response is a message to the administrator. Jerry --[0128]-- \f [0129] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:31 (24 lines) Subject: Kerberos edits From miller%erlang.DEC@decwrl.DEC.COM Sat Oct 25 01:57:59 1986 Date: 24-Oct-1986 1056 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB) Subject: Kerberos edits I just made two edits to the kerberos sources on menel. The first is a bug fix to ~auth/src/lib/krb/decomp_ticket.c . It no longer swaps the session key under any circumstances. This fixes a problem Jim VanSciver had on the RT. The second is a change to one register assignment in ~auth/src/lib/des/vax/des.c . This results in a savings of almost 10% in execution time on the microvax2. I recompiled the verify program to confirm it is still yielding the correct results. These changes should go in the next release, and the bug fix should be made available to anyone developing kerberos server code on the RT asap. Steve. --[0129]-- \f [0130] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:31 (32 lines) Subject: Re: Authentication forwarding From miller%erlang.DEC@decwrl.DEC.COM Sat Oct 25 07:54:28 1986 Date: 24-Oct-1986 1059 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu, "srz@athena.mit.edu"%DEWCWRL.DEC@decwrl.DEC.COM (Distribution list @KERB) Subject: Re: Authentication forwarding It could work similar to the manner in which rcmd works. That is, starting at host A, you request a ticket from Kerberos to talk to the forwarding service on host B. The forwarding server is akin to the rcmd stuff. Then you make a standard authenticated request (mk_ap_req) to the forwarding service on host B. Thus A and B now share a session key. Then, from A, you ask Kerberos for another ticket-granting-ticket, but as if you were from host B (or this could be done earlier). Kerberos replies with that ticket, but to the requesting host A. Then host A, using the session key just setup with the forwarding service, securely (mk_private_msg or mk_safe_msg) transfers that new ticket to host B. Host B installs the ticket in a ticket file, as if it had originated there. The forwarding service could even just be an extension to the "rcmd" suite. All it does it receive and store forwarded tickets. As was pointed out, this is ok if Host B is a trusted time-sharing service. Otherwise, it is as if you walked away from your workstation in the middle of a session without destroying your tickets. Any other user of that workstation, given root access, could use your tickets for up to about a day, when they expire. Steve. --[0130]-- \f [0131] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:32 (31 lines) Subject: Re: Authentication forwarding From miller%erlang.DEC@decwrl.DEC.COM Sat Oct 25 08:20:20 1986 Date: 23-Oct-1986 1004 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu, srz@athena.mit.edu (Distribution list @KERB), miller%erlang.DEC@decwrl.DEC.COM Subject: Re: Authentication forwarding It could work similar to the manner in which rcmd works. That is, starting at host A, you request a ticket from Kerberos to talk to the forwarding service on host B. The forwarding server is akin to the rcmd stuff. Then you make a standard authenticated request (mk_ap_req) to the forwarding service on host B. Thus A and B now share a session key. Then, from A, you ask Kerberos for another ticket-granting-ticket, but as if you were from host B (or this could be done earlier). Kerberos replies with that ticket, but to the requesting host A. Then host A, using the session key just setup with the forwarding service, securely (mk_private_msg or mk_safe_msg) transfers that new ticket to host B. Host B installs the ticket in a ticket file, as if it had originated there. The forwarding service could even just be an extension to the "rcmd" suite. All it does it receive and store forwarded tickets. As was pointed out, this is ok if Host B is a trusted time-sharing service. Otherwise, it is as if you walked away from your workstation in the middle of a session without destroying your tickets. Any other user of that workstation, given root access, could use your tickets for up to about a day, when they expire. Steve. --[0131]-- \f [0132] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:32 (16 lines) Subject: Code for January release From treese@ATHENA.MIT.EDU Fri Oct 31 15:19:26 1986 From: treese@ATHENA.MIT.EDU Date: Fri, 31 Oct 86 15:17:22 EST To: kerberos Subject: Code for January release Us-Snail: E40-342B, 1 Amherst St, Cambridge, MA 02139 I need to nail down any changes to the Kerberos code that I have for release in January. In other words, are we changing anything from what is now distributed? - Win --[0132]-- \f [0133] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:32 (20 lines) Subject: Re: Code for January release From srz@athena.MIT.EDU Fri Oct 31 16:27:03 1986 From: srz@athena.MIT.EDU Date: Fri, 31 Oct 86 16:25:16 EST To: treese@ATHENA.MIT.EDU Subject: Re: Code for January release Cc: kerberos@athena.MIT.EDU I recall that the kerberos code that reached the workstations was not the latest code that Cliff had. Most of this had to do with different realms. I think 'kinit' and 'rlogin' might have changed since August. Also, toehold needs to be recompiled with the latest kerberos library. (And tested, of course) -stan --[0133]-- \f [0134] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:32 (15 lines) Subject: Re: Code for January release From Saltzer@ATHENA.MIT.EDU Fri Oct 31 20:19:49 1986 Date: Fri, 31 Oct 86 20:18:17 EST To: kerberos@athena.MIT.EDU Subject: Re: Code for January release From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> It seems to me that Jim VanSciver fixed several byte-order dependent bugs in his integration of Kerberos with RVD on the RT. Best make sure those changes get picked up. Jerry --[0134]-- \f [0135] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:32 (39 lines) Subject: Re: Host unknown From Saltzer@ATHENA.MIT.EDU Sat Nov 1 20:40:08 1986 Date: Sat, 1 Nov 86 18:27:04 EST To: kerberos, jis, spm%erlang.dec@decwrl.dec.com Subject: Re: Host unknown In-Reply-To: johnsson@decwrl.DEC.COM (Richard Johnsson)'s message of 1 Nov 1986 0010-PST (Saturday) From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> My last message to the kerberos mailing list got a bounceback--the copy for Steve Miller at DEC came back with the message "host unknown". I thought it was a problem inside decwrl, so I forwarded it to their postmaster, who replied. . . > Actually your problem is "decwrl.arpa". Our name is "decwrl.dec.com" > and has been for the last year or so. Decwrl.arpa was recently > deleted as a nickname and mail still using the old, obsolete name is > getting bounced. Apparently kerberos@athena.MIT.EDU has set up > forwarding to the old address. I checked our local domain name server (strawberry) and it answered with three (!) different addresses for decwrl.arpa, a time to live of about one day, and a note that the primary name is decwrl.dec.com. Then I checked the nic domain name server, and it answered, presumably authoritatively, that the name decwrl.arpa is not known. 1. Jeff: how does strawberry know things that sri-nic doesn't? Does it have a pirate (out of date) copy of the .arpa authoritative data base? If so, it looks like being out of date leads to an obscure kind of bug--our outgoing SMTP can get their address but their incoming SMTP claims it isn't the place we are trying to talk to. 2. Steve: could you please fix your forwarding address to use the new domain name? Jerry --[0135]-- \f [0136] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:32 (75 lines) Subject: Interrealm misfeatures and alternate From wesommer@ATHENA.MIT.EDU Mon Nov 3 03:46:33 1986 To: kerberos Subject: Interrealm misfeatures and alternate an_to_ln Date: Mon, 03 Nov 86 03:44:27 -0500 From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> I have just spent the last three hours examining some interrealm misfeatures of Kerberos. Currently, Kerberos is quite inconvenient to use in many protocols if both systems are not in the same realm. One obstacle I ran across (but did not attempt to fix) is that ticket files do not contain the realm of the principal they are for (it is assumed that it is the same as the local realm of the machine). As a result, when constructing an authenticator, mk_ap_req does a get_credentials for the appropriate service; assuming that succeeds, it proceeds to build the authenticator. When building the request ID (including the user's identity encrypted in the session key), it uses the name and instance retrieved from the ticket file, but always uses the local realm, rather than the realm encoded in the ticket (which is not stored in the clear in the ticket file). This makes "kinit -r" (for an alternate realm) worthless unless you are empowered to do surgery on /etc/krb.conf as well. (I am sure that others have noticed this bug before). The following syslog trace of a server which shall remain nameless demonstrates the problem: [Oliver is in the ATHENA realm, and I have "kinit"ed for the TELECOM realm] Nov 3 02:15:58 paris xxx[15029]: connection accepted from OLIVER.SIPB.MIT.EDU Nov 3 02:15:59 paris xxx[15029]: ticket->length: 56 Nov 3 02:15:59 paris xxx[15029]: Ticket Contents. Nov 3 02:15:59 paris xxx[15029]: Aname: wesommer.TELECOM.MIT.EDU Nov 3 02:15:59 paris xxx[15029]: Service: rcmd.paris Nov 3 02:15:59 paris xxx[15029]: About to decrypt req_id Nov 3 02:15:59 paris xxx[15029]: Done. Nov 3 02:15:59 paris xxx[15029]: Pname: wesommer wesommer Nov 3 02:15:59 paris xxx[15029]: Realm: TELECOM.MIT.EDU ATHENA.MIT.EDU Nov 3 02:15:59 paris xxx[15029]: rd_ap_req(rcmd.paris) failed, code 36 "So close, and yet so far..."; the ticket is OK except for the bogus realm (ATHENA.MIT.EDU) put in by the client code. On a more optimistic note, I just implemented an "improved" an_to_ln() routine (this is the routine which translates Kerberos names into local names). In addition to translating {<name>, "", <local-realm>} into the local name <name>, it also attempts to translate foreign realms or non-null instances by looking them up in a DBM keyed database (in /etc/aname.{dir,pag}). To make this useable, I also wrote a simple user-interface program (krb_alias) which allows one to examine and modify the database: krb_alias with no arguments dumps the whole database; krb_alias with one argument (a kerberos name of form <name>.<instance>@<realm>) prints the local name or "unknown" if no local name can be found), and krb_alias with two arguments (kerberos name and local name) establishes a mapping, or deletes the mapping from the kerberos name if the local name is "-delete". Naturally, /etc/aname.* is set up to be mode 644, owner root, so krb_alias must be setuid root. I made a few policy decisions: - root can map any Kerberos name into any local name or delete any mapping - <user> can map any Kerberos name of the form <user>.*@* into <user>, or delete any mapping from <user>.*@* I think that the second one could be relaxed a little bit, but I'm not sure exactly how far (it's really a policy decision which I'm not prepared to make at 3AM). Sources for these modules may be found in /@/paris/mit/w/e/wesommer/remote_krb/irlm/{lib,prog}; a binary for krb_alias is installed in /krb on paris. Comments anyone? - Bill --[0136]-- \f [0137] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:32 (32 lines) Subject: Re: Interrealm misfeatures; alternat From miller%erlang.DEC@decwrl.DEC.COM Mon Nov 3 11:05:42 1986 Date: 03-Nov-1986 1042 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB), miller%erlang.DEC@decwrl.DEC.COM Subject: Re: Interrealm misfeatures; alternate an_to_ln Bill's analysis of the realm problem looks right. The local ticket file should keep track of the principal's realm, and this should be used in mk_ap_req(). This should be a straightforward fix. (Who is maintaining Kerberos currently?). Also, I would suggest doing a quick "grep" of the Kerberos library looking for various uses of the realm where it may similarly be hard-wired or ignored. The main thing to keep in mind about the realm is that the Kerberos server labels the tickets with the realm. All the rest is bookkeeping. Regarding "an_to_ln()", Bill's intention is good. The original mapping was just a simple default to get things going, and isolate the Kerberos name space from system-specific name spaces. Before adopting this new "an_to_ln()" on a larger scale, there should be some discussion with the people doing the name service and service management service. In terms of the details of Bill's suggestion, two comments: 1) The search order has to be specified, e.g. can the default {name,"",realm} ---> <name> be overriden by the auxiliary file? 2) a local user <name> could be allowed to control all Kerberos names that map into <name>, since <name> represents the local resources and privileges. This allows a more general proxy mechanism, though perhaps complicating management. In the long run, are these mappings handled through SMS? Steve --[0137]-- \f [0138] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:32 (19 lines) Subject: Re: Interrealm misfeatures; alternat From wesommer@ATHENA.MIT.EDU Mon Nov 3 12:41:52 1986 To: miller%erlang.dec@decwrl.dec.com Cc: kerberos@athena.mit.edu Subject: Re: Interrealm misfeatures; alternate an_to_ln In-Reply-To: Your message of 03-Nov-1986 1042. <8611031559.AA24599@decwrl.dec.com> Date: Mon, 03 Nov 86 12:39:37 -0500 From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> 1) The search order has to be specified, e.g. can the default {name,"",realm} ---> <name> be overriden by the auxiliary file? Currently, this is not done; however, I could, of course, swap two blocks of code. As this was a midnight->3AM hack, I didn't feel like implementing or changing policy. One can map other realms to the local name, just not the local realm. - Bill --[0138]-- \f [0139] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:33 (22 lines) Subject: Re: Interrealm misfeatures and alte From srz@athena.MIT.EDU Mon Nov 3 14:47:47 1986 From: srz@athena.MIT.EDU Date: Mon, 3 Nov 86 14:45:18 EST To: wesommer@ATHENA.MIT.EDU Subject: Re: Interrealm misfeatures and alternate an_to_ln Cc: kerberos@athena.MIT.EDU Actually, the ticket file does contain the realm of the principal they are in, except kerberos doesn't rely on it to determine the local domain. As kerberos is currently set up, there is only one krbtgt entry in which the instance (the realm that the ticket is good for) is the same as the realm in which the ticket was gotten. That is the 'local' realm. For example, if I am in the LCS realm, and do a 'kinit', I get a ticket of the form: 'srz', '', 'krbtgt', 'LCS.MIT.EDU', 'LCS.MIT.EDU'. When I log on over to athena, I get an additional ticket: 'srz', '', 'krbtgt', 'ATHENA.MIT.EDU', 'LCS.MIT.EDU'. If rd_ad_tkt were changed so that it determined the local realm from the tickets, as opposed to using krb.conf, then a single 'kinit -r' would change your realm for the entire session. The ticket file would stay the same. --[0139]-- \f [0140] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:33 (9 lines) Subject: Re: realms From miller%erlang.DEC@decwrl.DEC.COM Tue Nov 4 09:41:05 1986 Date: 04-Nov-1986 0932 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB), miller%erlang.DEC@decwrl.DEC.COM Subject: Re: realms --[0140]-- \f [0141] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:33 (30 lines) Subject: source code control transfer From ostlund@ATHENA.MIT.EDU Tue Nov 4 11:01:07 1986 From: ostlund@ATHENA.MIT.EDU Date: Tue, 4 Nov 86 11:00:18 EST To: kerberos Subject: source code control transfer This week, Win and I will put together a release of the kerberos code from menelaus that will land on paris and thereafter be considered the master source. Further development (now mainly being done by Dave Jedlinsky [opus], Chris Reed [panda], and Brian Murphy [hindmost]) will use the code from paris as the starting point, and will need to check code in and out through Win. A consequence of this shift from menelaus to paris will be that the latest and greatest kerberos code now living on menelaus will become part of the January release. If anyone knows of Kerberos work NOT now on menelaus (e.g., on styx) that should go into Win's master sources, please let us know THIS WEEK. Thanks. I will continue to be the coordinator for the work Dave, Chris, and Brian are doing, will continue to be the password-changer, backup-checker, and general babysitter for the Kerberos machine, and will, of course, be including support for Kerberos in the SMS design. John --[0141]-- \f [0142] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:33 (24 lines) Subject: Re: realms From miller%erlang.DEC@decwrl.DEC.COM Tue Nov 4 13:50:45 1986 Date: 04-Nov-1986 1036 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB), miller%erlang.DEC@decwrl.DEC.COM Subject: Re: realms SSorry, the last one got away when I was trying to kill it. Anyhow, the point with realms should be to not lock out any reasonable types of use. For example, I should be able to do a normal login into the Athena realm, get appropriate Athena tickets, and then also do a kinit into a DEC realm. This should be possible even if Athena and DEC dont know about each other. As long as "rlogin", et. al, understand how to figure out what realm is needed, they can obtain and use the right tickets. So I think you should be able to support tickets for multiple realms concurently. The current ticket file, and its utilities may need to be enhanced to do this. Steve. --[0142]-- \f [0143] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:33 (21 lines) Subject: Bug with kerberos rlogin From treese@ATHENA.MIT.EDU Sat Nov 8 23:40:11 1986 From: treese@ATHENA.MIT.EDU Date: Sat, 8 Nov 86 23:39:04 EST To: kerberos Cc: wdc Subject: Bug with kerberos rlogin Us-Snail: E40-342B, 1 Amherst St, Cambridge, MA 02139 Though I have not attempted to reproduce this at will, it appears that when a kerberos rlogin fails because the tickets have expired (after a marathon session at a workstation...), it prompts for a password. Even if the password is carefully typed (i.e., I'm sure I got it right), the rlogin fails and prompts for "login:". Has anyone else noticed this? (I cc'ed Bill Cattey since I have often heard him complain about tickets expiring). - Win --[0143]-- \f [0144] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:33 (33 lines) Subject: Re: Bug with kerberos rlogin From ostlund@ATHENA.MIT.EDU Mon Nov 17 17:32:06 1986 From: ostlund@ATHENA.MIT.EDU Date: Mon, 17 Nov 86 17:30:41 EST To: treese Subject: Re: Bug with kerberos rlogin Cc: kerberos, wdc From treese@ATHENA.MIT.EDU Sat Nov 8 23:39:31 1986 To: kerberos@ATHENA.MIT.EDU Subject: Bug with kerberos rlogin Though I have not attempted to reproduce this at will, it appears that when a kerberos rlogin fails because the tickets have expired (after a marathon session at a workstation...), it prompts for a password. Even if the password is carefully typed (i.e., I'm sure I got it right), the rlogin fails and prompts for "login:". Has anyone else noticed this? (I cc'ed Bill Cattey since I have often heard him complain about tickets expiring). - Win --------------- Sorry, this escaped from my input queue somehow. Yes, this is a known bug. Worse than what you've reported is that the TERMCAP environment variable ends up set to "network" even after you successfully log in. At present, you have to know to bail out, get fresh tickets, and try again. John --[0144]-- \f [0145] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:33 (19 lines) Subject: sources moving to paris (eventually) From ostlund@ATHENA.MIT.EDU Wed Nov 19 12:37:07 1986 From: ostlund@ATHENA.MIT.EDU Date: Wed, 19 Nov 86 12:36:27 EST To: kerberos Subject: sources moving to paris (eventually) As I announced a few weeks ago, the master sources for Kerberos are moving from menelaus to paris. Due to disk space shortage on paris, this move is happening by way of castor. The master sources for Kerberos are now in castor:/projects/auth/release/861106. DON'T make changes to the sources on menelaus, or your changes may get lost in the shuffle. Thanks. (Before the sources actually get put on paris, we will probably [a] convince the Makefiles to work, [b] integrate the RT Kerberos code now on styx, [c] integrate knetd, and [d] fix miscellaneous bugs. This will all get done on castor.) John --[0145]-- \f [0146] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:34 (95 lines) Subject: [Mike Kazar: Re: A few questions] From wesommer@ATHENA.MIT.EDU Mon Nov 24 09:43:14 1986 To: watchmakers, kerberos Subject: [Mike Kazar: Re: A few questions] Date: Mon, 24 Nov 86 09:41:53 EST From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> I asked Mike Kazar of CMU to describe the authentication scheme used by the Vice fileserver; since the security of this was under discussion earlier I figured that it would be appropriate to forward this to the list. By the way, I made the Kerberos paper available to him via anonymous FTP, since he showed some interest in it. ------- Forwarded Message Return-Path: @po5.andrew.cmu.edu:kazar#@andrew.cmu.edu Received: by PRIAM.MIT.EDU (5.45/4.7) id AA06596; Mon, 24 Nov 86 09:03:44 EST Received: by ATHENA (5.45/4.7) id AA10844; Mon, 24 Nov 86 09:03:27 EST Received: by po5.andrew.cmu.edu (4.12/3.15) id <AA00369>; Mon, 24 Nov 86 08:59:51 est Received: FROM mooncrest VIA queuemail ID </cmu/common/mailqs/q006/QF.mooncrest.1fc85d25.1f8>; Mon, 24 Nov 86 08:59:03 est Message-Id: <MS.V3.18.kazar.80020c0c.mooncrest.ibm032.1181.1@andrew.cmu.edu> Date: Mon, 24 Nov 86 08:58:58 est From: kazar#@andrew.cmu.edu (Mike Kazar) To: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Subject: Re: A few questions. The next release of venus will not use .cx or .hx files at all for the reason you just hit. Unfortunately, bec requires the based editor 1 library as part of it, and that is not a trivial thing to ship. How about I just send you the object file version of bec, and you run it on your .cx and .hx files. What machine type do you want it for? When I hear from you, I'll put the appropriate machine type bec's on cmu's H vax, and you can ftp it over. Anyway, all further vice updates will include the sources in regular text file format. As for our authentication scheme, it is essentially the one described under Needham and Schroder's standard paper on the encryption. In particular, the only thing shipped over the network in the clear is what we call a "secret token", which is really a session key generated by the authentication server, and encrypted with the file server's password. This session key, by virtue of being encrypted with the file server's password, is useless for eavesdroppers. Once it has been received by the file server, the secret token is decrypted, yielding both the session key to use with this session, and a time, set by the authentication server, that the token should be considered obsolete. Our system currently runs with that time being 25 hours, after which the user of a vice console must re-authenticate using login or the "log" program. After that time, the connection drops to an unauthenticated level, and you are so warned by our console program. Hopefully in the next release, venus will actually warn you before the token expires. That's the scheme, however, we're running a modified version thereof for performance reasons. First of all, we have no DES hardware, so we use XOR instead of DES. This is, of course, infinitely more susecptible to a known cleartext attack. Secondly, at cmu we do not encrypt the packets used for regular vice traffic at all. We plan to remedy most of these problems in the next release. In particular, while the cost of running DES in software is high, authentication happens rarely enough that we can actually use it for conversations with the authentication server without too much trouble, I believe. So, one item that should get fixed shortly is that the secret token will really be encrypted with DES. The problem with the day-to-day traffic, however, is worse. We plan to offer both headers-only encryption and whole-packet encryption modes, at a user's option, but frankly, remote procedure call headers are so susceptible to known clear-text attack that we may as well not bother doing any encryption at all unless we use something better than XOR for the algorithm. In short, while the framework is present for doing our full algorithm in a secure manner, our use of XOR instead of DES means that it is possible, by spying on the network, to inject a call into an RPC stream. This will screw up the connection as far as the real user is concerned, but the injected call will get handled. What encrypted algorithm do you plan to use? How do you plan to get it to run fast enough? Yes, I would be very interested in seeing the Kerberos paper. I don't see any real problems with you guys putting your own authentication system in venus; it shouldn't take much work to figure out how to fit it in. Mike ------- End of Forwarded Message --[0146]-- \f [0147] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:34 (24 lines) Subject: Kerberos sources From treese@ATHENA.MIT.EDU Mon Nov 24 19:06:36 1986 From: treese@ATHENA.MIT.EDU Date: Mon, 24 Nov 86 19:05:34 EST To: kerberos, watchmakers, developers Subject: Kerberos sources Us-Snail: E40-342B, 1 Amherst St, Cambridge, MA 02139 (I don't think this got to everyone, so I am sending it again.) The Kerberos master sources now live on paris (currently in /source/kerberos). Any changes made for release should be made there, and I should be notified that they are taking place (i.e., same rules as for the rest of the master sources). Thanks, Win --[0147]-- \f [0148] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:34 (16 lines) Subject: Kerberos-authenticated RVD server From treese@ATHENA.MIT.EDU Sun Nov 30 00:34:36 1986 From: treese@ATHENA.MIT.EDU Date: Sun, 30 Nov 86 00:33:13 EST To: rvd-info, kerberos Subject: Kerberos-authenticated RVD server Us-Snail: E40-342B, 1 Amherst St, Cambridge, MA 02139 ...is now up and running on priam. This version requires some additions to the rvddb file. I expect to have it running on pollux and agamemnon by sometime tomorrow. Old versions of the client code can talk to it; the new client code will be in the coming release. - Win --[0148]-- \f [0149] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:34 (16 lines) Subject: Re: Kerberos-authenticated RVD serve From henry@ATHENA.MIT.EDU Sun Nov 30 00:39:12 1986 To: treese@athena.mit.edu Cc: rvd-info@athena.mit.edu, kerberos@athena.mit.edu Subject: Re: Kerberos-authenticated RVD server In-Reply-To: Your message of Sun, 30 Nov 86 00:33:13 EST. <8611300533.AA00326@CIROCCO> Date: Sun, 30 Nov 86 00:39:05 -0500 From: Henry Mensch <henry@ATHENA.MIT.EDU> >> the new client code will be in the coming release. in WHICH new release? -- Henry --[0149]-- \f [0150] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:34 (18 lines) Subject: Re: Kerberos-authenticated RVD serve From treese@ATHENA.MIT.EDU Sun Nov 30 01:50:08 1986 From: treese@ATHENA.MIT.EDU Date: Sun, 30 Nov 86 01:48:45 EST To: Henry Mensch <henry@ATHENA.MIT.EDU> Cc: rvd-info@athena.mit.edu, kerberos@athena.mit.edu In-Reply-To: Henry Mensch's message of Sun, 30 Nov 86 00:39:05 -0500 Subject: Re: Kerberos-authenticated RVD server Us-Snail: E40-342B, 1 Amherst St, Cambridge, MA 02139 >> in WHICH new release? The release scheduled to go to the world on January 1, and the staff on December 1. As far as I am concerned right now, this is the only release that exists. - Win --[0150]-- \f [0151] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:34 (17 lines) Subject: Source code control From treese@ATHENA.MIT.EDU Mon Dec 1 03:38:46 1986 From: treese@ATHENA.MIT.EDU Date: Mon, 1 Dec 86 03:37:26 EST To: kerberos Subject: Source code control Us-Snail: E40-342B, 1 Amherst St, Cambridge, MA 02139 I am freezing the kerberos sources on paris until they can be cleaned up (i.e., reasonable makefiles, everything checked in under RCS, etc.) If changes must be made, please see me first. Thanks, Win --[0151]-- \f [0152] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:34 (12 lines) Subject: Visit From miller%erlang.DEC@decwrl.DEC.COM Fri Dec 12 16:31:09 1986 Date: 12-Dec-1986 1612 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB), miller%erlang.DEC@decwrl.DEC.COM Subject: Visit I thought I would come visit either Tues, Dec 16, or Friday, Dec 19. Any preferences? --[0152]-- \f [0153] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:35 (13 lines) Subject: Visit Friday From miller%erlang.DEC@decwrl.DEC.COM Mon Dec 15 10:44:31 1986 Date: 15-Dec-1986 1035 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB), dec@athena.mit.edu, miller%erlang.DEC@decwrl.DEC.COM Subject: Visit Friday Looks like Friday is better due to the Human Interface/Toolkit meeting Tuesday, so I'll be in Friday morning and can spend most of the day. Steve. --[0153]-- \f [0154] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:35 (33 lines) Subject: Cleanup of DES library. From wesommer@ATHENA.MIT.EDU Tue Jan 13 18:17:53 1987 Date: Tue, 13 Jan 87 18:17:57 EST From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Sender: wesommer@ATHENA.MIT.EDU To: kerberos Subject: Cleanup of DES library. Cc: jis, shew, treese, mckie I have just finished a major cleanup of the DES library configuration. The two directories lib/des/vax and lib/des/ibmws have been merged into a single directory lib/des/bsd; architecture dependancies in the code which are #ifdef'ed on various tags now depend on the inclusion of the file des_conf.h, which contains two sets of declarations (one for the VAX, one for the RT), #ifdef'ed on "vax" and "ibm032". I had to make a number of fixes to support the new IBM compiler (which lints and compiles in one pass), and I have not yet cleaned up all of the things which it warns about (such as unreferenced variables, etc). The library has been successfully regression-tested using the test suite, and kinit and other Kerberos client programs are known to work with it on both VAX and RT. Also, all source files are known to be checked in and cleaned up by Release Engineering standards. (Win, sorry for filling your mailbox with notifications of forced breaking of RCS locks..). The sources have not yet been moved back over & installed on Paris (since PAZ.MIT.EDU just crashed for unknown reasons); this will be done as soon as PAZ is back up. - Bill --[0154]-- \f [0155] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:35 (39 lines) Subject: Ooops. SMS cannot store keys that ge From jis@BITSY.MIT.EDU Wed Jan 28 00:49:20 1987 Date: Wed, 28 Jan 87 00:48:14 EST From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: Saltzer@athena.mit.edu Cc: Kerberos@Athena.mit.edu Subject: Ooops. SMS cannot store keys that get loaded into kerberos. The following problem came up during a conversation between Melissa and myself. The current design of the kerberos database enciphers the private keys of users and services with the kerberos "master" key. This protects the keys from disclosure, but does not "seal" them against modification. Specifically it is still possible to copy one user's key information onto another, and thus make the second user's key the same as the first. If SMS loads all information into kerberos, then all one would have to do to forge the id of some user (assuming breaking into SMS first), is to make that user's private key data equal to the data for the forger's private key, and wait for the next SMS => kerberos download. I can see two ways to prevent this: 1) Not store private key information in SMS, Kerberos would be responsible for long term storage of the keys. 2) Change the master key encipherment so that first the first eight characters (64 bits) of the principal name is Xor'd into the private key and then enciphered with the master key. This would ensure that two users with the same key (password) don't have identical values stored in the database for their keys, and the attack above is thwarted. -Jeff --[0155]-- \f [0156] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:35 (31 lines) Subject: /source/kerberos/client/crp.c (or ho From jis@BITSY.MIT.EDU Thu Jan 29 18:50:02 1987 Date: Thu, 29 Jan 87 18:49:24 EST From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: treese@athena.mit.edu, wesommer@athena.mit.edu, geer@athena.mit.edu Cc: kerberos@athena.mit.edu Subject: /source/kerberos/client/crp.c (or how to change a root instance) This program allows an individual to change the password associated with their root instance. It works through the same backend that the "admin" program uses (and which will eventually be merged with the passwd backend program). You can also optionally give a "-name" or "-inst" control argument so you can use it to change the password of an arbitrary name and instance (as long as you know the old password). It isn't installed anywhere (though the Makefile has been modified and a binary built on paris). Win, can you take care of distributing it? (Also note, I don't care you want to change its name...."crp" may not be the best name). Also note: The coding standards employed are not completely up to my normal "standards" so I will want to checkin a cleaned up version at some point, but the code is correct as is (ie. I want to cleanup the comments and do some of the error reporting differently). I tested it against both legitimate and illegit uses... -Jeff --[0156]-- \f [0157] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:35 (62 lines) Subject: Re: Ooops. SMS cannot store keys th From miller%erlang.DEC@decwrl.DEC.COM Fri Jan 30 06:39:41 1987 Date: 29-Jan-1987 1032 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB), miller%erlang.DEC@decwrl.DEC.COM Subject: Re: Ooops. SMS cannot store keys that get loaded into Kerberos I agree with Jeff's assessment of the situation, but would address it more generically. The Kerberos servers must be secure to protect against the three fundamental types of threats: 1) Unauthorized disclosure; 2) Unauthorized modifications; 3 Denial of service. In the first case, the unauthorized disclosure risk to Kerberos is its master key, which in turn allows disclosure of principal keys and unauthorized modification. The second case, unauthorized modification, could be, as the previous memo suggested, accomplished if someone had access to the Kerberos database (directly or through SMS) and could copy principal A's key to principal B, or otherwise modify a key. This does not require knowledge of any secret keys, only write access to the database. The simplest case of denial of service is pulling the plug on the Kerberos servers, causing all ticket requests to fail. Jeff's suggestion is to cryptographically bind an integrity check (xor the principal name) to the enciphered key. This may help protect against the specific attack described, but really only shifts the point of attack to where this integrity check is applied. It further assumes that Kerberos itself has not been compromised. Even if an integrity check were sufficient, a simple XOR is not. Kerberos has to be able to detect if a principal's key has been modified. Consider the following: My key, value "01234567" is stored XORd with my name, "spm" (which is usually shorter than an 8-byte key). Then it is encrypted in the master key, resulting in value X, and stored in the SMS/Kerberos database. An intruder copies his encrypted key, Y, onto my entry. When I ask for a ticket, Kerberos then decrypts Y, xors the result with "spm", and ends up with "34567890". But the problem is that Kerberos cant tell whether "34567890" is ok or bad, because there was no redundancy. So in order to check properly for integrity, you need at least implicit redundancy in the ciphertext "key". One way to do this is to encrypt my private key, "01234567", concatenated with my name "spm", under the master key into the saved "key". Then when you decrypt it, you get the real key and my name "spm", which is redundant with the database name. If someone had substituted a different encrypted value, when it was decrypted it would not yield "spm". Furthermore, modifications, including splicing attacks, can be detected if the encryption/decryption is performed using the PCBC DES mode which propagates errors indefinitely. As an optimization on this, since names can be long, compute a CRC on the name, and use that instead. However, despite all this, the bottom line is that wherever the master Kerberos key is in use must be strongly protected against all threats. But you do find a particular threat to be easy and common, it may be worthwhile to address it, as long as it is understood that only that one hole has been plugged. Steve. --[0157]-- \f [0158] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:35 (59 lines) Subject: Thoughts on the protection of the ma From jis@BITSY.MIT.EDU Fri Jan 30 18:06:51 1987 Date: Fri, 30 Jan 87 18:05:54 EST From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: kerberos@athena.mit.edu Subject: Thoughts on the protection of the master key AND database. The more I think about this issue, the more I think that the number of systems playing with the kerberos database should be kept to a minimum. Probably only kerberos itself. The kerberos database master key (and associated password) have an interesting property. That is, it has residual value even if it is changed. Consider the following form of attack: Grab a copy of the database somehow (poach a backup tape, or intercept the database being FTP'd in the clear, or have read-only or write access to the SMS database, whatever...) Now this copy is useless because all of the secret information is enciphered with the master key. However bide your time.... At some point the master key is changed, once changed people are likely to not have any inhibition from giving out the OLD key (after all it has been changed...). Now you have a copy of the OLD database AND the old master key. You can now decrypt your data and obtain the secret key for any principal which has not changed their key since the time you grabbed the database. You will probably get a significant number of both user private keys AND service keys. This of course is based on the psychology of password maintenance. Specifically taking advantage that most people consider an OLD password as no longer confidential. This leads me to believe that instead of hairing up the master key encipherment process on private keys, that instead efforts be made to protect the database from disclosure regardless of the fact that secret information is enciphered in the master key. This leads to two changes in direction. 1) SMS should not have a copy of key data from kerberos. This isn't really necessary anyhow, as all data in SMS can be linked to the appropriate record in kerberos by the principal (name,instance) fields which SMS would still have a copy of. 2) Slave kerberos database propagation, which currently sends the database in the clear, be changed to use a kerberos authenticated connection to send the data AND use the session key provided by kerberos to either encipher ALL the data going across the connection, or at the very least the private key fields. Because SMS will not have a copy of ALL the information stored on kerberos, kerberos will need to be a backed up service (ie. the database should be periodically backed up [which it is today...once a day to tape]) and the backup media should be protected (ie. stored in a locked room). -Jeff --[0158]-- \f [0159] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:35 (22 lines) Subject: re: /source/kerberos/client/crp.c (o From Saltzer@ATHENA.MIT.EDU Sun Feb 1 19:42:33 1987 Date: Sun, 1 Feb 87 19:40:16 EST To: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> Subject: re: /source/kerberos/client/crp.c (or how to change a root instance) Cc: treese@athena.mit.edu, wesommer@athena.mit.edu, geer@athena.mit.edu, kerberos@athena.mit.edu In-Reply-To: Jeffrey I. Schiller <jis@BITSY.MIT.EDU>'s message of Thu, 29 Jan 87 18:49:24 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> > This program allows an individual to change the password associated > with their root instance. It works through the same backend that > the "admin" program uses (and which will eventually be merged with > the passwd backend program). Why not name this program chpass, make its default instance the null instance, and make it the normal way of changing all passwords? (Or name it "passwd" if the additional semantics of -name and -inst don't create a documentation incompatibility mess. Jerry --[0159]-- \f [0160] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:35 (64 lines) Subject: re: Thoughts on the protection of th From Saltzer@ATHENA.MIT.EDU Sun Feb 1 19:42:43 1987 Date: Sun, 1 Feb 87 19:40:12 EST To: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> Subject: re: Thoughts on the protection of the master key AND database. Cc: kerberos@athena.mit.edu In-Reply-To: Jeffrey I. Schiller <jis@BITSY.MIT.EDU>'s message of Fri, 30 Jan 87 18:05:54 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> > The kerberos database master key (and associated password) > have an interesting property. That is, it has residual value even if > it is changed. Jeff's concern for attack using old, less-well protected keys is a good one. That concern raises several further interesting points. 1. The double-edged sword. When the master key is changed, previous backup copies become worthless. (Well, not completely; if you remember the old master key you could reload the old backups, and rechange the key. But the point of changing the key is to stop being dependent on it.) So the key change procedure providing both security and integrity probably goes like this: - change the master key - make a couple of new backup tapes and reload one of them to make sure it is really valid. - destroy all copies of the old master key and degauss all old backup tapes. - load (by hand, I think) the slave servers with the new master key but tell them not to use it yet. - send the slave servers the new data base and tell them cut over to the new master key when they switch to the new data base. 2. Degaussing old backup tapes can help minimize the risk that Jeff suggests, namely that people may be less protective of old master keys than new ones. 3. Whether SMS or private backup tapes are used as the backup mechanism, it might still be wise to encipher/seal keys in a block containing the associated principal identifer, in order to inhibit any kind of substitution attack. The one objection is decryption time, which is serial with each authentication. If we had some supported decryption hardware for use in the Kerberos servers I think it would be worth doing this step. While awaiting arrival of such hardware the idea probably has to be commented out. 4. I agree that SMS does not need to feed Kerberos. I claim further that the principal identifier field is the ONLY item that needs to be duplicated between the two data bases, and it provides an adequate link between the information on record in the two places. There are two more advantages of keeping SMS clear of Kerberos: - Kerberos is then forced to be self-sufficient in management tools, which helps insure its modular exportability. - it is possible to have Kerberos-authenticable identities that are not known to SMS. That could be useful in any case where the administrative boundaries surrounding SMS and Kerberos don't exactly coincide. (For example, one Kerberos realm might cover Athena, Administrative Computing, and Telecommunications, while SMS might maintain information only about Athena.) Jerry --[0160]-- \f [0161] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:36 (22 lines) Subject: /source/kerberos/client/crp.c (or ho From jis@BITSY.MIT.EDU Sun Feb 1 20:11:58 1987 Date: Sun, 1 Feb 87 20:11:07 EST From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: Saltzer@ATHENA.MIT.EDU Cc: treese@athena.mit.edu, wesommer@athena.mit.edu, geer@athena.mit.edu, kerberos@athena.mit.edu In-Reply-To: Jerome H. Saltzer's message of Sun, 1 Feb 87 19:40:16 EST <8702020040.AA18912@HERACLES> Subject: /source/kerberos/client/crp.c (or how to change a root instance) There is a catch. /bin/passwd also changes your password in the password file on the local machine and instructs kerberos to update the athenareg database as well. "crp" (or chpass, that is just as good a name) makes no attempt to fool around with either a password file or athenareg (though it turns out you can use '-inst ""' and it will change your login password, for those times when login uses kerberos authentication). Clearly in the long run this will be THE password changing program (or a variant of it). However for now we need /bin/passwd's current behavior for compatability. -Jeff --[0161]-- \f [0162] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:36 (26 lines) Subject: On the backup of kerberos. From jis@BITSY.MIT.EDU Sun Feb 1 20:18:44 1987 Date: Sun, 1 Feb 87 20:17:56 EST From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: Saltzer@ATHENA.MIT.EDU Cc: kerberos@athena.mit.edu In-Reply-To: Jerome H. Saltzer's message of Sun, 1 Feb 87 19:40:12 EST <8702020040.AA18909@HERACLES> Subject: On the backup of kerberos. The current scheme uses three backup tapes that are rotated through. A tape gets written each night with three snapshots of the kerberos database, one from each of the previous three nights. This scheme has the advantage that only three tapes ever have confidential data on them to worry about. The disadvantage is that we only save information for the previous five days (the oldest data being from the oldest file on the oldest tape). This also makes it unnecessary to deguass any tapes just because the kerberos master key was changed. As it turns out we have already had one tape fail, and that tape is now waiting for me to take it to W91 for deguassing. -Jeff --[0162]-- \f [0163] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:36 (74 lines) Subject: Protecting Kerberos From miller%erlang.DEC@decwrl.DEC.COM Thu Feb 12 08:28:43 1987 Date: 11-Feb-1987 1752 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB) Subject: Protecting Kerberos From: RHEA::DECWRL::MAILER-DAEMON "Mail Delivery Subsystem" 9-FEB-1987 07:47 To: <erlang::miller (Steve Miller)> Subj: Returned mail: Cannot send message for 3 days ----- NOTICE ----- Due to a hardware failure, DECWRL has been disconnected from the Internet for several days. We hope to be reconnected some- time Monday, Feb 9, 1987. Please give us a chance to recover and then retry your message. ----- Transcript of session follows ----- I agree with the recent notes by Jeff and Jerry re protecting the OLD master key and backup copies of the database. Kerberos must be protected! The only other solution to losing an old master key would be to invalidate all the principal keys every time the master key changed. Then a new key could be established by a protocol that passed the old password STRING to the password server, before its one-way encryption into the key form. If that was ok, a new key could be created. Meanwhile, the old key, compromised by the disclosure of the old Master key, would not be valid for routine authentication. Since the Kerberos database already contains a master key version field for each entry, enough hooks currently exist to do this. This may be too drastic a step for the Athena environment, but the alternative is to potentially compromise all the keys. I would also suggest that the slave copies of the database dont even use the master key at all. Instead of encrypting the database (or at least key fields) with a session key in order to transmit it between the master and the slave, the master can just convert it to be encrypted under the session key, or some other temporary key. Thus the slave database has its key fields encrypted by some key OTHER than the master key, and it changes every time a new slave database version is loaded. This provides much more protection for the master key, since it now exists on the master database only. In other words, where E(foo)bar means Encrypt 'foo' with key 'bar' Let PrinKey == my principal key master: EncPrinKey = E(PrinKey)Kmaster /* master encrypts my prin key*/ master: store(EncPrinKey) /* master stores encrypted key*/ master: SlaveKey = E(D(EncPrinKey)Kmaster)Kslave /* master decrypts and re-encrypts my prin key using Kslave */ master: ProtSlaveKey = E(SlaveKey)Ksession /* master encrypts SlaveKey for secure transmission */ master --> slave: ProtSlaveKey /* master transmits sealed key*/ slave: SlaveKey= D(ProtSlaveKey)Ksession /* slave decrypts received key*/ slave: store(SlaveKey) /* slave stores SlaveKey */ slave: PrinKey = D(SlaveKey)Kslave /* slave decrypts to yield PrinKey upon Kerberos requests */ Ksession is used to protect the transfer, using the private_msg() or equivalent. Kslave is another 'session' key used as the temporary 'master' for the slave. Despite the best reasonable efforts, sooner or later major Kerberos security problems, such as disclosing an old master key, will occur. I would strongly suggest that Jerry, Jeff and others walk through some likely scenarios and recovery procedures. Steve. --[0163]-- \f [0164] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:36 (46 lines) Subject: re: Protecting Kerberos From Saltzer@ATHENA.MIT.EDU Thu Feb 12 10:21:57 1987 Date: Thu, 12 Feb 87 10:19:17 EST To: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) Subject: re: Protecting Kerberos Cc: kerberos@athena.mit.edu (Distribution list @KERB) In-Reply-To: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller)'s message of 11-Feb-1987 1752 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> Steve, I like the idea that the slaves have their database enciphered with a temporary Slave Key rather than the real master, to reduce the number of exposure points for the master. But I don't think your specific proposal is as effective as it sounds. The problem is that your scenario sends the new Slave Key enciphered with KSession. Where did Ksession come from? Presumably it is a result of an authenticated handshake between the slave and the master. And how did that handshake get authenticated? Presumably by virtue of a private key known only to the slave and to some Kerberos, probably the master. So now the slave's private key becomes an effective "master key", albeit two steps removed, with the usual problems of future disclosure. The one advantage your scenario provides is make it necessary that an attacker who has discovered that private key be present at the right time so as to watch the initial handshake (so as to discover Ksession) and also to snatch a copy of E(SlaveKey)Ksession as it goes by. Assuming everyone is careful to destroy Ksession as soon as SlaveKey is safely acquired by the slave, the attack work factor is certainly somewhat higher than if the slave database is simply enciphered with the Master key. There is also an availability problem: following a power failure, for example, the slave Kerberos can't begin work again until it has been reloaded from the Master Kerberos, unless it took the precaution of preserving both its old data base and the SlaveKey that is enciphering it. But preserving the SlaveKey in the persistent storage of the slave machine is exactly the action that (I assume) you are trying to avoid, so as to minimize its risk of disclosure. I agree that we need to work out the best approach to handling the case where a first-class compromise of the master key occurs. Jerry --[0164]-- \f [0165] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:36 (43 lines) Subject: More re Protecting kerberos From miller%erlang.DEC@decwrl.DEC.COM Tue Feb 17 20:18:36 1987 Date: 17-Feb-1987 0939 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB) Subject: More re Protecting kerberos (The gateway from the DEC engineering net to the Arpanet , 'decwrl', has been flaky lately, so mail is being delayed and bounced around. spm) ---------------- Jerry, You are right, my last suggestion only shifts the attack from the master key to the interchange key between the slave database and the master Kerberos database. Though it does make it a little harder. The only way it might work, and still address the availability problem is if you could afford, operationally, to create new interchange keys between the slave db and master db every time an update was made, manually distribute them out of band (Jeff on roller skates!), feed them to the slaves, then immediately destroy them as soon as the update protocol had fired up. On powerfail, Jeff on Skates would have to redo the procedure, but unless all slaves power-failed at once, Kerberos would still be available. But it would still leave a slave key resident at the slave, subject to attack, even though no one had ever directly seen it. I conclude that it is not worth the effort for Athena for a minor improvement in security. The only solution is real physical security of the master keys, backup tapes, maybe even real crypto boxes, key guns, etc. Perhaps some time before we all retire, Public key can be made fast enough to allow a 3-way public-key based handshake without the direct intervention of a 3rd party (Kerberos server) with critical secrets. Note that Kerberos not only authenticates, but enforces an expiration date on principals, which would not be possible in a 2-party Public Key exchange. (Assume that the public half is published.) Introducing the 3rd party introduces that critical secret -- in one case a Kerberos DES master key, in another an RSA (or similar) public half of the key-pair. --[0165]-- \f [0166] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:36 (32 lines) Subject: On the security of kerberos (need fo From jis@BITSY.MIT.EDU Wed Feb 18 15:58:19 1987 Date: Wed, 18 Feb 87 15:56:30 EST From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: kerberos@athena.mit.edu Subject: On the security of kerberos (need for physical security) All this talk of how to deliver the keys isn't really addressing the likeliest form of attack, namely: 1) Obtain physical access to a kerberos slave machine. 2) Deposit a trap door program that allows a remote root login at a later time. 3) Arrange it to look like the system crashed in some "normal" maner. 4) Wait for the system to be restarted. 5) Now while the machine is running, utilize trap door, make a copy of the database and use the "gcore" program to grab a core image of the running kerberos server and extract the master key (or the equivalent of the master key for the database copy you must made). 6) Done. And let Athena beware! Providing physical security is the key here (no pun intended). Encryption hardware would help (if the hardware allows the key to be written, but not read out, and it clears the key memory on bus reset). -Jeff --[0166]-- \f [0167] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:36 (17 lines) Subject: rcp protocol screwup From Saltzer@ATHENA.MIT.EDU Tue Mar 3 18:41:36 1987 Date: Tue, 3 Mar 87 18:39:10 EST To: bugs, kerberos Subject: rcp protocol screwup From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> Running on Paris, I just tried to rcp a file from my RT, and got the following message. . . rcp: protocol screwup: mtime.sec not delimited the file did not transfer. Jerry --[0167]-- \f [0168] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:37 (14 lines) Subject: tftp From treese@ATHENA.MIT.EDU Sat Mar 7 19:19:33 1987 From: treese@ATHENA.MIT.EDU To: bugs@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU Subject: tftp ...doesn't work. Among other things, the name "menelaus" is hard-coded into the call to mk_ap_req(). This needs to be fixed... - Win --[0168]-- \f [0169] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:37 (16 lines) Subject: re: tftp From Saltzer@ATHENA.MIT.EDU Sat Mar 7 22:44:03 1987 Date: Sat, 7 Mar 87 22:41:36 EST To: <treese@ATHENA.MIT.EDU> Cc: kerberos Subject: re: tftp In-Reply-To: <treese@ATHENA.MIT.EDU>'s message of Sat, 7 Mar 87 19:17:39 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> Can anyone direct me to the sources for the Kerberized version of PC/tftp? Presumably there is also a login/get-ticket command. Jerry --[0169]-- \f [0170] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:37 (16 lines) Subject: Re: tftp From treese@ATHENA.MIT.EDU Sat Mar 7 23:13:56 1987 To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU Subject: Re: tftp In-Reply-To: Your message of Sat, 07 Mar 87 22:41:36 -0500. Date: Sat, 07 Mar 87 23:11:58 EST From: Win Treese <treese@ATHENA.MIT.EDU> paris:/src/athena.lib/kerberos/services/tftp. (not obvious, I know) - Win --[0170]-- \f [0171] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:37 (21 lines) Subject: Re: tftp From wesommer@ATHENA.MIT.EDU Sat Mar 7 23:45:37 1987 From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Sender: wesommer@ATHENA.MIT.EDU To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Sat, 7 Mar 87 22:41:36 EST <8703080341.AA09987@HERACLES> Subject: Re: tftp One thing I should warn you: you may have to do a bit of hacking on the DES library; it used to work on PC's, but as I rearranged the sources to get the same source tree to work on both VAX and RT, I may have inadvertantly broken the PC DES library. (Sorry, but Athena got out of the business of supporting IBM PC's - and I remember diking out a few grossnesses used to support the PC cross-compiler in a makefile cleanup). I didn't go out of my way to break the IBM PC stuff, but I didn't waste time testing it either.. - Bill --[0171]-- \f [0172] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:37 (19 lines) Subject: Re: tftp From treese@ATHENA.MIT.EDU Sun Mar 8 16:54:44 1987 To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU>, treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU Subject: Re: tftp In-Reply-To: Your message of Sun, 08 Mar 87 14:23:38 -0500. Date: Sun, 08 Mar 87 16:52:41 EST From: Win Treese <treese@ATHENA.MIT.EDU> Jerry, The copy in /u1/auth on paris was not touched by Bill (as far as I know). However, I don't think that his work really touched the tftp sources, just the makefile support for the PC subdirectories. - Win --[0172]-- \f [0173] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:37 (15 lines) Subject: Re: tftp From wesommer@ATHENA.MIT.EDU Sun Mar 8 17:00:14 1987 From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Sender: wesommer@ATHENA.MIT.EDU To: Win Treese <treese@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Win Treese's message of Sun, 08 Mar 87 16:52:41 EST <8703082152.AA10705@CIROCCO.MIT.EDU> Subject: Re: tftp That's correct. I didn't touch tftp at all, except to change a few routine calls to use "newer" names. - Bill --[0173]-- \f [0174] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:37 (29 lines) Subject: PC sources From miller%erlang.DEC@decwrl.DEC.COM Mon Mar 9 10:25:29 1987 Date: 09-Mar-1987 1001 From: miller%erlang.DEC@decwrl.DEC.COM (Steve Miller) To: kerberos@athena.mit.edu (Distribution list @KERB), miller%erlang.DEC@decwrl.DEC.COM Subject: PC sources The last I worked on it, there was one set of DES library sources, with sufficient conditional compilations defined such that it would work for either the VAX, PC, or RT. The DES library is independent of the rest of the Kerberos protocol library stuff, which I recall was NOT updated to follow the revisions in the Kerberos protocol spec. I also have some backup copies floating around if the need arises. To check out the DES library on the PC (or elsewhere) there is a test program called "verify" in with the sources. It runs some standard tests of the algorithm, from the FIPS spec, and displays the computed output as well as the expected output, which you then can inspect by eye to determine if the library is obviously wrong. All the PC stuff was built for the LCS cross-compiler and loader, not any of the native PC utilities. (P.s. the "not updated" above refers to the PC only. Should have used the editor to compose this!). ( P.p.s. not updated also refers only to the Kerberos library, not the DES library.) --[0174]-- \f [0175] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:38 (31 lines) Subject: DES library for IBM PC From Saltzer@ATHENA.MIT.EDU Sun Mar 15 00:36:13 1987 Date: Sun, 15 Mar 87 00:33:25 EST To: kerberos Subject: DES library for IBM PC From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> I'm trying to revive Kerberos on the IBM PC; right now I'm trying to build the DES library. Can anyone offer help on the following details: 1. A couple of programs in libdes.a call on the 4.2 C-library functions bzero() and bcmp(). Those two functions aren't part of the standard CC86 C-library. Cliff and Steve: did one of you write versions of those functions for the PC? I didn't find them anywhere. Or did those calls get added to the sources after the last time libdes was checked out on the PC? 2. For the PC/8086, should the compile-time parameter BIG be defined or not? From the three places it is used I couldn't figure out just what BIG does--something about enabling a table-driven permutation transformation, I think. 3. Do I recall correctly that the PC/8086 has its bytes in the same order as the RT? Thanks. Jerry --[0175]-- \f [0176] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:38 (32 lines) Subject: Re: DES library for IBM PC From BCN@WARD.CS.WASHINGTON.EDU Sun Mar 15 01:24:16 1987 Date: Sat 14 Mar 87 22:22:45-PST From: Clifford Neuman <BCN@WARD.CS.WASHINGTON.EDU> Subject: Re: DES library for IBM PC To: Saltzer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: <8703150533.AA06986@HERACLES> I wrote a few routines for the PC, and they can be found in /mit/b/c/bcn/kdst/lib/krb/pc.c. I expect there is still a copy in the master sources, but it may have been removed since I left. Tis file contains 3 four line procedures. Since steve did the DES stuff, I am not sure what BIG is for, but if I recall correctly then, by setting BIG, a more time efficient approach is taken, but at the cost of space. Unfortunately, on the XT we were very limited in the maximimum program size. I am not sure about the byte/bit ordering question, but I think that there was some difference between the XT and the RT. I may be wrong though. ~ Cliff ------- --[0176]-- \f [0177] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:38 (30 lines) Subject: Re: DES library for IBM PC From Saltzer@ATHENA.MIT.EDU Mon Mar 16 09:54:17 1987 Date: Mon, 16 Mar 87 09:51:10 EST To: Clifford Neuman <BCN@WARD.CS.WASHINGTON.EDU> Subject: Re: DES library for IBM PC Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Clifford Neuman <BCN@WARD.CS.WASHINGTON.EDU>'s message of Sat 14 Mar 87 22:22:45-PST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> > I wrote a few routines for the PC, and they can be found in > /mit/b/c/bcn/kdst/lib/krb/pc.c. I expect there is still a copy in the > master sources, but it may have been removed since I left. Tis file > contains 3 four line procedures. They were there, and they supplied the two missing routines as well as a third one that I hadn't missed yet. > Since steve did the DES stuff, I am not sure what BIG is for, but if I > recall correctly then, by setting BIG, a more time efficient approach > is taken, but at the cost of space. Unfortunately, on the XT we were > very limited in the maximimum program size. The DES library now compiles, runs, and verifies on the PC again. BIG is switched on, but I may need to switch it off when I try to load the library with anything useful. Thanks for your help. Jerry --[0177]-- \f [0178] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:38 (31 lines) Subject: help: pc sources missing From Saltzer@ATHENA.MIT.EDU Thu Mar 19 11:05:33 1987 To: spm, bcn Cc: kerberos Subject: help: pc sources missing From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> Steve and Cliff, At this point I have the DES and Kerberos libraries working well enough on the PC that I can get ticket-granting tickets with pclogin. So now I need an application to try out. After considerable searching, it appears that the sources for the Kerberos version of PC/tftp are nowhere online at Athena. By chance do either of you have a copy squirreled away somewhere? The particular programs needed have names like "tftp_srv.c", "tftp_use.c" and "tftp_util.c". Since PC/tftp is organized as a library that may be used by various commands, the sources for the Kerberos version may have been placed in the library section of the pcip source hierarchy. It looks like the whole pcip source hierarchy was deleted somewhere along the line. Another possibility is a dusty backup tape, either a standard one, or a special one hiding in someone's desk. Any idea what the date should look like on such a backup tape or where there might be one? Jerry --[0178]-- \f [0179] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:38 (22 lines) Subject: re: help: pc sources missing From Saltzer@ATHENA.MIT.EDU Thu Mar 19 16:48:29 1987 Subject: re: help: pc sources missing Cc: kerberos To: spm, bcn In-Reply-To: Jerome H. Saltzer <Saltzer>'s message of Thu, 19 Mar 87 11:03:27 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> Here is a little more on the missing pc/tftp sources. . . 1. From references in an old makefile, it looks like the directory containing the sources I am looking for was probably under /projects/auth/ibm/. 2. The oldest backup tape that Berni could find (from last December, actually so it isn't very old) doesn't have that directory, or anything else that would help. Jerry --[0179]-- \f [0180] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:38 (17 lines) Subject: Mystery subdirectories From treese@ATHENA.MIT.EDU Fri Mar 20 22:09:55 1987 From: treese@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Subject: Mystery subdirectories What are the "ss" and "et" subdirectories of /src/athena.lib/kerberos/client? They are not in the makefile. Are they still needed? - Win --[0180]-- \f [0181] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:38 (16 lines) Subject: Re: Mystery subdirectories From wesommer@ATHENA.MIT.EDU Fri Mar 20 22:17:05 1987 From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Sender: wesommer@ATHENA.MIT.EDU To: Win <treese@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: <treese@ATHENA.MIT.EDU>'s message of Fri, 20 Mar 87 22:07:32 EST <8703210307.AA28535@CIROCCO.MIT.EDU> Subject: Re: Mystery subdirectories Those look like Ken Raeburn's "subsystem" and "error table" libraries from discuss; Jeff took them for the "admin" program. - Bill --[0181]-- \f [0182] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:38 (18 lines) Subject: Re: Mystery subdirectories From jis@BITSY.MIT.EDU Sun Mar 22 00:37:18 1987 Date: Sun, 22 Mar 87 00:36:36 EST From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU Subject: Re: Mystery subdirectories Oops. They are my fault. That is part of the "admin" program that Annette uses. I moved the sources over to paris (feeling that paris should have a copy of all sources that represent a program in use). I didn't however finish putting all the Makefiles in order (or in the case of ss and et, making make files that work on paris). I will eventually get around to it... if it needs priority, I can give it priority. -Jeff --[0182]-- \f [0183] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:39 (23 lines) Subject: #ifndef BIG fails From Saltzer@ATHENA.MIT.EDU Mon Mar 23 19:17:15 1987 To: kerberos Subject: #ifndef BIG fails From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> OK, guys, when was the last time that the DES library passed its verify test when compiled with BIG not defined? When defined, BIG causes compilation of a program that is quite a bit faster, but in payment is also quite a bit larger. I need the small library on the PC. With BIG defined the des library passes its verify test both on the VAX and the PC. With BIG undefined, it fails both places. (With different wrong answers.) Steve: can you reconstruct any changes that might have led to this problem? Or identify a set of sources that passes verify with BIG undefined, so that we can diff? Jerry --[0183]-- \f [0184] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:39 (18 lines) Subject: re: Fix for des library From Saltzer@ATHENA.MIT.EDU Wed Mar 25 01:02:40 1987 To: spm%lyre.DEC@decwrl.DEC.COM (Steve Miller), kerberos Subject: re: Fix for des library In-Reply-To: spm%lyre.DEC@decwrl.DEC.COM (Steve Miller)'s message of Tuesday, 24 Mar 1987 11:09:36-PST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> > I played with it on my Ultrix system, and found that disabling BIG > caused the wrong values to be computed. I finally tracked this down > to a missing initialization (R2=0) in the des_make_p.c file. With this > fixed, it works ok for the Ultrix Vax with BIG disabled. I just tried Steve's fix on the PC and it verifies there, too. So this bug is now history. Jerry --[0184]-- \f [0185] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:39 (22 lines) Subject: re: Fix for des library From Saltzer@ATHENA.MIT.EDU Wed Mar 25 12:48:32 1987 To: spm%lyre.DEC@decwrl.DEC.COM (Steve Miller), kerberos Subject: re: Fix for des library In-Reply-To: spm%lyre.DEC@decwrl.DEC.COM (Steve Miller)'s message of Tuesday, 24 Mar 1987 11:09:36-PST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <Saltzer-PC> > I played with it on my Ultrix system, and found that disabling BIG > caused the wrong values to be computed. I finally tracked this down > to a missing initialization (R2=0) in the des_make_p.c file. With this > fixed, it works ok for the Ultrix Vax with BIG disabled. I just tried Steve's fix on the PC and it verifies there, too. So this bug is now history. Jerry --[0185]-- \f [0186] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:39 (93 lines) Subject: "solving" the xhost problem From swick@ATHENA.MIT.EDU Fri Mar 27 13:50:37 1987 Resent-From: swick@ATHENA.MIT.EDU Resent-Message-Id: <8703271847.AA10595@HERACLES.MIT.EDU> To: geer@ATHENA.MIT.EDU, treese@ATHENA.MIT.EDU, saltzer@ATHENA.MIT.EDU, jis@ATHENA.MIT.EDU Cc: lbm@ATHENA.MIT.EDU Subject: "solving" the xhost problem Date: Fri, 27 Mar 87 12:18:04 EST From: Ralph R. Swick <swick@ATHENA.MIT.EDU> Resent-To: kerberos@ATHENA.MIT.EDU From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> ----- Begin Forwarded Message ----- After long consideration, it is my conclusion that a real solution to replacing xhost with a more convenient authorization mechanism will require two additions to Kerberos. After a lengthy description of the proposed additions, I also propose a simple short-term solution. The problem is two-fold; the current authorization based only upon host name is insufficient in general and should be augmented to authorize by user. The second part of the problem is, as Jeff points out, a thorny issue in Kerberos about when a users credentials should be copied to another host. I propose that the first extension to Kerberos be a request to obtain temporary credentials (a ticket-granting ticket) valid for a different node that the one from which the request originates. This should require the user to re-enter his Kerberos principal key; i.e. the temporary credentials on the requesting host should never be considered sufficient for obtaining new ones. As a bone to users less concerned with security, klogin should consult a table (in the user's home directory?) of nodes for which to obtain credentials during login. This solves the problem of having to send passwords in cleartext over the network in order to kinit on a remote host. I have no definite proposal on how to get the ticket-granting ticket over to the other node, but the new rlogin/rlogind work should provide some clues. I do believe that once the tgt is obtained on the local host, it is acceptable to automatically transfer it to the destination node when needed. Parenthetically, I believe logout should always cause a kdestroy. The second addition to Kerberos is needed to provide a service key for transient services (i.e. the user's X server). If the service is transient, it cannot store it's own key in a permanent manner. This is a re-statement of "workstations cannot have secrets". This proposal requires the addition of a minimal amount of state to Kerberos, but I believe it will have more utility than just the 'X0.E40-327-1' service. Specifically, I propose adding a request, "get service key" to Kerberos. Upon receipt of this request, Kerberos would create a random service key, store it in its database and send it back to the requestor. "Get service key" must require that the service be pre-registered with Kerberos, with an attribute allowing the generated service key to be stored (by Kerberos; i.e. Kerberos will need to know that this is a transient service). The transient service then accepts tickets sealed in this service key for as long as it wants and can unilaterally invalidate the key (by exiting or requesting a new one, for example) without having to notify the Kerberos server. "Get service key" could also require that the service instance include the node name and that the request originate from the same node. This attaches extra semantics to the instance, but reduces denial of service interference. A transient service as defined above inherently cannot be assured the same level of security as provided to a service that can store it's own secrets. In particular, it does not protect the transient service against spoofs of the Kerberos server itself or against wiretapping during transmission of the new service key. I believe the above mechanisms are necessary to provide the by-user authentication desired in X and similar services that cannot keep secrets. The easy short-term improvement requires only one line to be added to the user's .cshrc file: alias xlogin 'xhost \!:1; xterm -n "\!:-1" -e rlogin \!*' The `xlogin' command has identical syntax to the `rlogin' command but also causes the remote session to be displayed in an alternate window (a useful freebie, I believe) and allows any X clients on the remote system to access the local display. It may be argued that rlogin itself should be redefined as above and I believe that would be acceptable. This does not handle `rsh'd clients, but I suspect that most uses of rsh are within scripts (like .login) where an explicit xhost is acceptable. Comments are, of course, invited. -Ralph --[0186]-- \f [0187] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:39 (19 lines) Subject: "solving" the xhost problem From jtkohl@ATHENA.MIT.EDU Fri Mar 27 14:50:14 1987 From: John T Kohl <jtkohl@ATHENA.MIT.EDU> To: swick@ATHENA.MIT.EDU Cc: kerberos, treese, geer, lbm, jis, saltzer In-Reply-To: Ralph R. Swick's message of Fri, 27 Mar 87 12:18:04 EST <8703271718.AA13787@ORPHEUS.MIT.EDU> Subject: "solving" the xhost problem Us-Snail: Room A303, 4 Ames St, Cambridge, MA Zip-Code: 02142-1306 >to the destination node when needed. Parenthetically, I believe logout should >always cause a kdestroy. The kerberized login (in use on workstations) does indeed destroy tickets at logout time, PROVIDED that the user has not put them somewhere other than what login believes KRBTKFILE should be. John --[0187]-- \f [0188] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:39 (57 lines) Subject: re: "solving" the xhost problem From Saltzer@ATHENA.MIT.EDU Fri Mar 27 16:13:10 1987 Subject: re: "solving" the xhost problem To: Ralph R. Swick <swick@ATHENA.MIT.EDU> Cc: geer@ATHENA.MIT.EDU, treese@ATHENA.MIT.EDU, kerberos, jis@ATHENA.MIT.EDU, lbm@ATHENA.MIT.EDU In-Reply-To: Ralph R. Swick <swick@ATHENA.MIT.EDU>'s message of Fri, 27 Mar 87 12:18:04 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> Ralph, I don't think that adding state to Kerberos is the right solution, but I have an alternative to propose. To add state is a major change in Kerberos design ground rules, and it fouls up quite a number of assumptions. For example, the way Kerberos is currently designed, a Kerberos client goes through a list of Kerberos slaves that nominally have identical authoritative information, and uses the first one to respond. If Kerberos begins to manage state dynamically we have to add some mechanism to get the word to all the slaves when a user adds a temporary session key at one of them. For another, if the Kerberos server crashes and reboots, all authentications EXCEPT these self-authentications still work. I propose a quite different method. This method would work for X, and possibly for the other services you were thinking of. The method is to have the workstation open up a Kerberos service port, and run a mini-Kerberos service whose only function is to give out tickets and session keys to clients who present credentials that originated at this workstation. I think that the realm mechanism offers enough semantics to pull this off with no change in any of the current Kerberos machinery. That is, workstation E40-399-21.ATHENA.MIT.EDU runs a realm with that same name. The distant host receives the workstation identity, a ticket-granting ticket, and the session key for the tgt from the workstation via the undiscussed rlogin/environment-variable mechanism, and it invokes make-app-request specifying as the realm the name of the workstation. There is one new subroutine, that adds the imported ticket to the local ticket collection. The result is a request back to the workstation, supplying a tgt that the workstation itself fabricated and can recognize. The workstation mini-Kerberos responds with an X ticket and a new session key, all properly sealed up with the tgt session key. One minor problem this approach has is that without massive tinkering of the rlogin environment-variable passing mechanism, the tgt session key would be transmitted to the distant host in cleartext. Fixing that is only a matter of effort (it and the ticket itself could be enciphered in the rlogin session key) , which effort may not be worth it for protecting X windows. Jerry --[0188]-- \f [0189] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:39 (43 lines) Subject: re: "solving" the xhost problem From Saltzer@ATHENA.MIT.EDU Fri Mar 27 17:57:34 1987 Subject: re: "solving" the xhost problem To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: Ralph R. Swick <swick@ATHENA.MIT.EDU>, geer@ATHENA.MIT.EDU, treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU, jis@ATHENA.MIT.EDU, lbm@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU>'s message of Fri, 27 Mar 87 16:10:45 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> Jeff offered his own version of my suggestion; his is one step simpler. Rather than fabricating a ticket-granting ticket for a mini-realm, the workstation running the X server could simply fabricate a ticket that its X server would honor. It could construct one that appears to be from the default realm. Doing so would simplify life for the time-sharing host at the other end which currently isn't equipped to keep track of tickets that come from a variety of realms. Ralph points out that there is another, more difficult, application that is also of interest: the granting of permission to a completely different user to open a window on your workstation. If we assume that the foreign user starts by requesting attachment via Zephyr, which has authenticated the user's identity, and that the workstation can trust Zephyr because it has a ticket for communication with Zephyr, then the same mechanism could be used there: the workstation fabricates an X ticket it will honor, and sends that ticket to the foreign user, who sends it back to the X port. This approach requires a hand-hold inside Zephyr, to get a ticket-containing message back to a user who has used Zephyr to contact your workstation. Jerry --[0189]-- \f [0190] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:40 (20 lines) Subject: Re: "solving" the xhost problem From lbm@ATHENA.MIT.EDU Fri Mar 27 18:19:15 1987 To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: Ralph R. Swick <swick@ATHENA.MIT.EDU>, geer@ATHENA.MIT.EDU, treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU, jis@ATHENA.MIT.EDU, lbm@ATHENA.MIT.EDU, lbm Subject: Re: "solving" the xhost problem In-Reply-To: Your message of Fri, 27 Mar 87 17:55:04 -0500. <8703272255.AA11864@HERACLES.MIT.EDU> Date: Fri, 27 Mar 87 18:17:39 EST From: Linda B. Merims <lbm@ATHENA.MIT.EDU> Yesterday I discovered that kerberos does not authenticate operations between workstations (I was trying to rcp my files between two workstations while logged in on both). Win explained that it is because we don't run kerberos daemons in workstations because they are unsecure. So, it was back to .rhost files. Can this mechanism solve that problem, too? --[0190]-- \f [0191] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:40 (15 lines) Subject: Kerberos error messages From treese@ATHENA.MIT.EDU Thu Apr 9 22:36:04 1987 From: treese@ATHENA.MIT.EDU To: kerberos Subject: Kerberos error messages Ken Raeburn has suggested that all Kerberos error messages print "Kerberos" in them somewhere to make problems easier to diagnose for those who don't know the details. Is this worth doing? Any volunteers? - Win --[0191]-- \f [0192] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:40 (16 lines) Subject: Re: Kerberos error messages. From jis@BITSY.MIT.EDU Fri Apr 10 11:02:53 1987 Date: Fri, 10 Apr 87 11:01:46 EST From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: kerberos@ATHENA.MIT.EDU Subject: Re: Kerberos error messages. Sounds reasonable. I will do it with my next pass over the code (which will be shortly, to remove dependancy on RTI Ingres). Note: The error code numbers will remain the same, just the associated messages will change. To get the new messages, an application would need to be relinked when the updated libkrb.a is available. -Jeff --[0192]-- \f [0193] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:40 (57 lines) Subject: New error message names. From jis@BITSY.MIT.EDU Fri Apr 10 11:11:05 1987 Date: Fri, 10 Apr 87 11:10:18 EST From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: kerberos@ATHENA.MIT.EDU Subject: New error message names. Ok, here is an exerpt of the new error message file. Basically all I did was replace the parenthasized subroutine references (of the form "(get_credentials)") with the string "(kerberos)." This ok? char *krb_err_txt[256] = { "OK", /* 000 */ "Principal expired (kerberos)", /* 001 */ "Service expired (kerberos)", /* 002 */ "Authentication expired (kerberos)", /* 003 */ "Unknown protocol version number (kerberos)", /* 004 */ "Principal: Incorrect master key version (kerberos)", /* 005 */ "Service: Incorrect master key version (kerberos)", /* 006 */ "Bad byte order (kerberos)", /* 007 */ "Principal unknown (kerberos)", /* 008 */ "Principal not unique (kerberos)", /* 009 */ "Principal has null key (kerberos)", /* 010 */ "Permission Denied (kerberos)", /* 020 */ "Can't read ticket file (kerberos)", /* 021 */ "Can't find ticket (kerberos)", /* 022 */ "Ticket granting ticket expired (kerberos)", /* 026 */ "Can't decode authenticator (kerberos)", /* 031 */ "Ticket expired (kerberos)", /* 032 */ "Ticket issue date too far in the future (kerberos)", /* 033 */ "Repeat request (kerberos)", /* 034 */ "Ticket for wrong server (kerberos)", /* 035 */ "Request inconsistent (kerberos)", /* 036 */ "Time is out of bounds (kerberos)", /* 037 */ "Incorrect network address (kerberos)", /* 038 */ "Protocol version mismatch (kerberos)", /* 039 */ "Illegal message type (kerberos)", /* 040 */ "Message integrity error (kerberos)", /* 041 */ "Message duplicate or out of order (kerberos)", /* 042 */ "Unauthorized request (kerberos)", /* 043 */ "Current password is NULL (kerberos)", /* 051 */ "Current password incorrect (kerberos)", /* 052 */ "Protocol error (kerberos)", /* 053 */ "Error returned by KDC (kerberos)", /* 054 */ "Null ticket returned by KDC (kerberos)", /* 055 */ "Retry count exceeded (kerberos)", /* 056 */ "Can't send request (kerberos)", /* 057 */ "Warning: Not ALL tickets returned (kerberos)", /* 061 */ "Password incorrect", /* 062 */ "Protocol error (kerberos)", /* 063 */ "Generic error (kerberos)", /* 070 */ "Don't have ticket granting ticket (kerberos)", /* 071 */ -Jeff --[0193]-- \f [0194] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:40 (13 lines) Subject: Re: New error message names. From Raeburn.PDO@MIT-MULTICS.ARPA Fri Apr 10 11:18:26 1987 Date: Fri, 10 Apr 87 12:11 EDT From: Ken Raeburn <Raeburn@MIT-MULTICS.ARPA> Subject: Re: New error message names. To: "Jeffrey I. Schiller" <jis@BITSY.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Message of 10 Apr 87 12:10 EDT from "Jeffrey I. Schiller" For readability, wouldn't such messages as "Kerberos principal expired", "Kerberos principal not unique", etc., make much more sense, at least for those for which it can easily be done? --[0194]-- \f [0195] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:40 (17 lines) Subject: Kerberos document available From Saltzer@ATHENA.MIT.EDU Fri Apr 10 16:10:07 1987 To: athena, kerberos Subject: Kerberos document available From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> A new draft of Athena Technical Plan section E.2.1 describing the Kerberos Authentication System is now available for review and comment. It is substantially revised and expanded from the previous version of August 25, 1986. Kate Lonnie will have copies in room E40-391 on Monday. Jerry --[0195]-- \f [0196] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:40 (17 lines) Subject: Kerberos document available From bcn@june.cs.washington.edu Fri Apr 10 17:50:43 1987 Date: Fri, 10 Apr 87 14:26:54 PST From: bcn@june.cs.washington.edu (Clifford Neuman) Return-Path: <bcn> To: Saltzer@ATHENA.MIT.EDU Cc: athena@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Fri, 10 Apr 87 16:02:38 EST Subject: Kerberos document available Can you have a copy of the new kerberos spec sent to me. My address is PO Box 45775 Seattle, WA 98145-0775 Thanks, Cliff. --[0196]-- \f [0197] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:40 (78 lines) Subject: FYI From treese@ATHENA.MIT.EDU Wed Apr 22 03:20:54 1987 To: kerberos@ATHENA.MIT.EDU Subject: FYI Date: Wed, 22 Apr 87 02:18:41 EST From: Win Treese <treese@ATHENA.MIT.EDU> An RFC that may be of interest. As usual, it's in /u3/rfc on paris. - Win ------- Forwarded Message Received: by E40-PO.MIT.EDU (5.45/4.7) id AA04936; Tue, 21 Apr 87 23:01:59 EST Received: by ATHENA (5.45/4.7) id AA08978; Tue, 21 Apr 87 23:00:32 EST Received: from venera.isi.edu by SRI-NIC.ARPA with TCP; Tue 21 Apr 87 18:33:15-PDT Posted-Date: Tue, 21 Apr 87 18:32:51 PDT Message-Id: <8704220132.AA02615@venera.isi.edu> Received: from LOCALHOST by venera.isi.edu (5.54/5.51) id AA02615; Tue, 21 Apr 87 18:32:52 PDT To: ;@Request-for-Comments-List Cc: Westine@venera.isi.edu Subject: RFC 1004 Now Available Date: Tue, 21 Apr 87 18:32:51 PDT From: Ann Westine <westine@venera.isi.edu> A new Request for Comments is now available from the Network Information Center in the online library at SRI-NIC.ARPA. RFC 1004: Title: A Distributed-Protocol Authentication Scheme Author: D. L. Mills Mailbox: Mills@UDEL.EDU Pages: 8 Characters: 21,402 pathname: RFC:RFC1004.TXT The purpose of this RFC is to focus discussion on authentication problems in the Internet and possible methods of solution. The proposed solutions this document are not intended as standards for the Internet at this time. Rather, it is hoped that a general consensus will emerge as to the appropriate solution to authentication problems, leading eventually to the adoption of standards. This document suggests mediated access-control and authentication procedures suitable for those cases when an association is to be set up between users belonging to different trust environments. Distribution of this memo is unlimited. Public access files may be copied from the <RFC> directory at SRI-NIC.ARPA via FTP with username ANONYMOUS and password GUEST. The normal method for distribution of RFCs is for interested parties to copy the documents from the NIC online library using FTP. Requests for special distribution should be addressed to either the author of the RFC in question or to NIC@SRI-NIC.ARPA. Unless specifically noted otherwise on the RFC itself, all RFCs are for unlimited distribution. Submissions for Requests for Comments should be sent to POSTEL@ISI.EDU. Requests to be added to or deleted from this distribution list should be sent to NIC@SRI-NIC.ARPA. --jon. ------- End of Forwarded Message --[0197]-- \f [0198] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:40 (39 lines) Subject: missing kerberos feature needed for From Saltzer@ATHENA.MIT.EDU Mon Apr 27 15:02:09 1987 To: jis@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU Subject: missing kerberos feature needed for mailing lists From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> ARPANET RFC 989 ("Privacy Enhancement for Internet Electronic Mail") identifies a key-distribution feature that we don't currently have in Kerberos: The ability to ask Kerberos for a bunch of tickets all of which have the same session key inside. The use would be in the case where one is sending a message to a mailing list of, say, 20 other users. You would ask Kerberos for a mail ticket for each of the 20 people (probably Kerberos would seal mail tickets using the recipient's private key) but specify that it should materialize a single temporary session key and seal that one key inside every ticket. Then you encipher the message contents once, under the session key, and for each recipient, include that recipient's ticket in the header of that recipient's copy. Using the facilities that Kerberos now provides, each ticket has a different session key inside it. If used for mail, distinct session keys would require that the entire message text be reenciphered once for each recipient. This comment applies either to the case where the originator of the message does the mailing list explosion, or where the originator sends the message to a trusted list-exploder, in which case the list-exploder is the one that needs the extended Kerberos function. Comments? How soon do we need to start thinking about privacy-enhanced mail? I suspect soon, in the M.I.T. non-Athena context. Jerry --[0198]-- \f [0199] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:41 (67 lines) Subject: missing kerberos feature needed for From jis@BITSY.MIT.EDU Mon Apr 27 15:28:43 1987 Date: Mon, 27 Apr 87 15:27:29 AST From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: Saltzer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Mon, 27 Apr 87 14:58:13 EDT <8704271858.AA13937@HERACLES.MIT.EDU> Subject: missing kerberos feature needed for mailing lists Date: Mon, 27 Apr 87 14:58:13 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> ARPANET RFC 989 ("Privacy Enhancement for Internet Electronic Mail") identifies a key-distribution feature that we don't currently have in Kerberos: The ability to ask Kerberos for a bunch of tickets all of which have the same session key inside. The use would be in the case where one is sending a message to a mailing list of, say, 20 other users. You would ask Kerberos for a mail ticket for each of the 20 people (probably Kerberos would seal mail tickets using the recipient's private key) but specify that it should materialize a single temporary session key and seal that one key inside every ticket. Then you encipher the message contents once, under the session key, and for each recipient, include that recipient's ticket in the header of that recipient's copy. Using the facilities that Kerberos now provides, each ticket has a different session key inside it. If used for mail, distinct session keys would require that the entire message text be reenciphered once for each recipient. This comment applies either to the case where the originator of the message does the mailing list explosion, or where the originator sends the message to a trusted list-exploder, in which case the list-exploder is the one that needs the extended Kerberos function. Comments? How soon do we need to start thinking about privacy-enhanced mail? I suspect soon, in the M.I.T. non-Athena context. Jerry Actually I looked into this RFC when it first came out. My idea would be to choose a common session key with which to encipher the message, then encipher this session key in the per ticket session key for each user ie: To: User1, User2 Ticket-For-User1: T {K } User1 m K T User1 Ticket-For-User2: T {K } User2 m K T User2 Message: {{Message Text per RFC } } (Encoded per RFC) K m -Jeff --[0199]-- \f [0200] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:41 (21 lines) Subject: quad_cksum failures. From jis@BITSY.MIT.EDU Wed Jul 8 00:47:16 1987 Date: Wed, 8 Jul 87 00:46:30 EDT From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: Saltzer@ATHENA.MIT.EDU Cc: Geer@ATHENA.MIT.EDU, Treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU Subject: quad_cksum failures. Well turns out that quad_cksum was converted to compile on the RT, but byte-order issues were never thought about. Therefore it yields different results on the RT then it does on the VAX. The password changing utilities are the first set of programs that put this routine to use. I have looked over the code and it shouldn't be too hard to fix so that it works on the RT (though the RT version would suffer a small performance degradation as byte swapping would have to occur at several places in the algorithm). -Jeff --[0200]-- \f [0201] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:41 (15 lines) Subject: Re: quad_cksum failures. From jbloom@ATHENA.MIT.EDU Wed Jul 8 12:35:11 1987 From: jbloom@ATHENA.MIT.EDU To: Saltzer@ATHENA.MIT.EDU, jis@BITSY.MIT.EDU Subject: Re: quad_cksum failures. Cc: Geer@ATHENA.MIT.EDU, Treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU I don't remember off the top of my head what the byte ordering rules used in the rest of kerberos are, but the fix in this case should follow the same idea. If network byte order is always used, the checksum should be in network byte order. If the source machine determines the order, then that order should be used in this case. Jim --[0201]-- \f [0202] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:41 (32 lines) Subject: Re: quad_cksum failures. From jis@BITSY.MIT.EDU Wed Jul 8 13:39:56 1987 Date: Wed, 8 Jul 87 13:38:42 EDT From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: jbloom@ATHENA.MIT.EDU Cc: Saltzer@ATHENA.MIT.EDU, Geer@ATHENA.MIT.EDU, Treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: jbloom@ATHENA.MIT.EDU's message of Wed, 8 Jul 87 12:35:45 EDT <8707081635.AA14812@PARIS.MIT.EDU> Subject: Re: quad_cksum failures. Well there are two issues with the network byte order: 1) How the result is expressed. 2) How it is computed. (1) should be obvious. However issue two comes up because the algorithm looks at the byte stream as if it were a collection of 16 bits integers. As a practical matter I am planning to fix this by having the RT code emulate the VAX code (ie. VAX byte order). This is because there is already production code running on many vaxes in our environment. I might do this and rename the function at the same time to be "broken_quad_cksum" and have quad_cksum behave properly in a later release. -Jeff --[0202]-- \f [0203] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:41 (20 lines) Subject: quad_cksum failures. From tytso@ATHENA.MIT.EDU Wed Jul 8 14:01:42 1987 From: Theodore Ts'o <tytso@ATHENA.MIT.EDU> To: jbloom@ATHENA.MIT.EDU Cc: Saltzer@ATHENA.MIT.EDU, jis@BITSY.MIT.EDU, Geer@ATHENA.MIT.EDU, Treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: <jbloom@ATHENA.MIT.EDU>'s message of Wed, 8 Jul 87 12:35:45 EDT <8707081635.AA14812@PARIS.MIT.EDU> Subject: quad_cksum failures. Reply-To: tytso@athena.mit.edu Address: EC Bemis 509, 3 Ames Street, Cambridge, MA 02139 Phone: (617) 225-6569 Well, "rlogin E40-302-13" didn't work yesterday (didn't give me tickets) but it works now. I thought mods to the kerberos database took effect immediately, but I guess not, now that there's a slave kerberos machine (kerberos1, which I thought wasn't running yet, but oh well). Have fun with xtrek! - Ted --[0203]-- \f [0204] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:41 (16 lines) Subject: quad_cksum failures. From tytso@ATHENA.MIT.EDU Wed Jul 8 14:06:12 1987 From: Theodore Ts'o <tytso@ATHENA.MIT.EDU> To: jbloom@ATHENA.MIT.EDU Cc: Saltzer@ATHENA.MIT.EDU, jis@BITSY.MIT.EDU, Geer@ATHENA.MIT.EDU, Treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: <jbloom@ATHENA.MIT.EDU>'s message of Wed, 8 Jul 87 12:35:45 EDT <8707081635.AA14812@PARIS.MIT.EDU> Subject: quad_cksum failures. Reply-To: tytso@athena.mit.edu Address: EC Bemis 509, 3 Ames Street, Cambridge, MA 02139 Phone: (617) 225-6569 I accidentally replied to the wrong message, sorry! - Ted --[0204]-- \f [0205] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:41 (22 lines) Subject: Availability of Kerberos From jis@BITSY.MIT.EDU Thu Jul 9 13:19:53 1987 Date: Thu, 9 Jul 87 13:19:00 EDT From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: Saltzer@ATHENA.MIT.EDU Cc: jbloom@ATHENA.MIT.EDU, Saltzer@ATHENA.MIT.EDU, Geer@ATHENA.MIT.EDU, Treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Wed, 8 Jul 87 14:04:06 EDT <8707081804.AA03310@HERACLES.MIT.EDU> Subject: Availability of Kerberos I would not pick up kerberos this instant. I am in the middle of adding support for non-Ingres based databases (ie. on top of ndbm files). This support includes the low level record manipulation functions (mostly done at this point, thanx to Stan Zanarotti at LCS), and utility programs to dump and load the database (in progress now). This work should be in a reasonable state in about a weeks time (which is when I am targetting cutting Athena over to it). Stay tuned for more information. -Jeff --[0205]-- \f [0206] jon@ATHENA.MIT.EDU Kerberos 08/09/87 21:41 (73 lines) Subject: Re: handling of tdc? From jis@BITSY.MIT.EDU Thu Jul 9 14:15:11 1987 Date: Thu, 9 Jul 87 14:13:50 EDT From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: dyer@ATHENA.MIT.EDU Cc: geer@ATHENA.MIT.EDU, treese@ATHENA.MIT.EDU, Saltzer@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: ---'s message of Wed, 08 Jul 87 15:28:20 EDT <8707081928.AA23441@MENELAUS.MIT.EDU> Subject: Re: handling of tdc? We have a problem here, and it is going to get bigger over time. Specifically our environment is not really oriented toward dealing with machines in other domains (or subdomains). Hesiod is only one example, kerberos is another. The kerberos situation is: There is an implicit notion in the kerberos software that one's domain is equal to one's realm (with a special hack that MIT.EDU maps to ATHENA.MIT.EDU). This comes up in several places. One place is in answering the question "What realm is that machine over there in?" which is asked when you need to get tickets for a specific service. The algorithm is: Client "C" wants to use "rcmd" service at host "A.FOO.BAR.BAZ". Strip domain name off of A.FOO.BAR.BAZ yielding FOO.BAR.BAZ as the realm name and "A" as the service instance. Thus ask for tickets for: SERVICE=rcmd INSTANCE=a REALM=FOO.BAR.BAZ as the service. This will not be easy to change. First we need to invent a mechanism (or use a nameservice like hesiod) to translate machine name into realm name to use. Second we need to change our current notion of instance name to be a fully qualified domain name, instead of just the host name portion. * As for the first problem I recommend creating a simple UDP based server that would run on each machine that would simply return the machines realm name. Thus to talk to A.FOO.BAR.BAZ you would ask him! Suppose he answers ATHENA.MIT.EDU, using this information and change number two above we would get a request for: SERVICE=rcmd INSTANCE=a.foo.bar.baz REALM=ATHENA.MIT.EDU as the service. Solving problem number two above is harder. It involves a massive flagday (the day we convert all the "a"s to "a.mit.edu"s) or carrying two entries for each service (one with the old instance name and one with the new) whose keys are the same (this would be a royal pain in the you-know-what). Now for the practical short term solution. Stop giving out subdomain based names to living groups. Note: They are NOT authoritative for their own domains today anyway (ie. we need to update tables on campus when they add machines, they don't manage the domain from the living group). It would therefore be no additional work on our part to NOT have subdomains out there. We did it originally because it was "cute" not because of any technical or procedural reason. This is a cop-out solution. We do need to solve the above mentioned problems. However I do not think that the living groups are the right places to debug it! -Jeff ----------------------------------------------------------------- (*) I am disinclined from making the kerberos software dependent on the functioning of hesiod. A simple UDP based server would have the property of always being available as long as the service machine itself was. And if the service machine is unavailable, so what, you cannot talk to it anyway. --[0206]-- \f [0209] daemon@TELECOM.MIT.EDU Kerberos 08/12/87 17:29 (9 lines) Subject: list_tkts -l To: kerberos@ATHENA.MIT.EDU From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Why isn't the -l option the default for list_tkts? I haven't yet found a case when I was interested in knowing what tickets I have when I wasn't also interested in knowing when then will expire. Jerry --[0209]-- \f [0210] daemon@TELECOM.MIT.EDU Kerberos 08/22/87 22:41 (10 lines) Subject: Locking ticket files From: Robert S. French <rfrench@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU It would be extremely useful if the sections of the Kerberos library that played with tickets file would LOCK it before doing so...two applications updating the file simultaneously seems to be the primary cause of garbled ticket files. Rob --[0210]-- \f [0211] daemon@TELECOM.MIT.EDU Kerberos 08/23/87 11:27 (13 lines) Subject: re: tftp manual page To: <treese@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU, bcn@ATHENA.MIT.EDU, geer@ATHENA.MIT.EDU, In-Reply-To: <treese@ATHENA.MIT.EDU>'s message of Sun, 23 Aug 87 02:55:33 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > There does not seem to be a manual page for the MIT version of tftp with > Kerberos. Anyone have any pointers? I'm afraid that I have never seen one. Cliff: did you prepare one? Jerry --[0211]-- \f [0212] daemon@TELECOM.MIT.EDU Kerberos 08/31/87 17:07 (15 lines) Subject: problems in kerberos From: jbloom@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU I have found three problems with kerberos. First and most serious, when retrieve() was renamed to get_credentials(), nobody changed the manual page. This makes it very difficult for a programmer to use kerberos. The next problem is that decomp_ticket.c has the string "ATHENA.MIT.EDU" hardcoded in as the default realm. It should be the defined value KRB_REALM. (This is in lib/krb) Finally, libkrb has one routine multiply defined. Both conf.c and get_krbhst.c define the routine get_krbhst(). Jim --[0212]-- \f [0213] daemon@TELECOM.MIT.EDU Kerberos 09/05/87 12:00 (53 lines) Subject: re: managled hesiod info To: <chariot@ATHENA.MIT.EDU> Cc: bugs@ATHENA.MIT.EDU, rtbugs@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU, In-Reply-To: <chariot@ATHENA.MIT.EDU>'s message of Sat, 05 Sep 87 06:35:48 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > Hesiod is returning host names in upper case when asked for filsys > entries. This causes attach on 5.0 RT's to fail with "NFS uidmap: krb > error was Can't find ticket (get_credentials)<cr> NFS Kerberos > authentication failed". Let's be very careful about just how this one gets fixed; the wrong fix will get us in deeper water very quickly. The basic principles for dealing with upper and lower case from a human engineering standpoint are: 1. People who store and pass along other people's data shouldn't tamper with (coerce) it; they should store and pass along both upper and lower case as they find it. Thus SMS stores and passes to Hesiod and Hesiod returns to its client both upper and lower case information. (Some customers require it, e.g., UNIX file names may appear in returned Hesiod info). 2. People who USE data should coerce it to a standard form before doing string comparisons. Thus Hesiod clients, after getting a string of data from Hesiod, should coerce it before looking it up in a local table (they should coerce the information found in the table, too). The UNIX file system (to its everlasting disgrace--Multics had proved that it was a mistake by 1969 and the UNIX design team knew it) explicitly violates this second principle. And there are too many programs in the world that know about the violation and depend on it, so it can't be changed now. The real challenge is to keep that design mistake from spreading. The specific bug report looks like a Kerberos library problem. Since Kerberos uses the UNIX file system to store its tickets, it must be very careful about the case-ness of the names it uses for the purpose, so that it can find its own tickets later, if the user happens to identify them using a different case. Since Kerberos uses the service principal name to construct the ticket file name, for consistency it should probably coerce that principal name to lower case at both ticket creation time and at ticket lookup time. Incidentally, does anyone know why just the 5.0 RT attach is failing? Did case sensitivity in attach get somehow addressed in 5.4? Or is there a case-sensitivity difference between the RT and VAX libraries? Or perhaps the 5.4 VAX system is failing, too, but no examples have turned up yet? Jerry --[0213]-- \f [0214] daemon@TELECOM.MIT.EDU Kerberos 09/05/87 22:13 (21 lines) Subject: Re: managled hesiod info To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: <chariot@ATHENA.MIT.EDU>, bugs@ATHENA.MIT.EDU, rtbugs@ATHENA.MIT.EDU, In-Reply-To: Your message of Sat, 05 Sep 87 11:56:58 -0400. From: Win Treese <treese@ATHENA.MIT.EDU> There have been two problems with attach: 1) Hesiod returning domain-qualified names, which don't work with Kerberos, and 2) Hesiod returning all-uppercase names, which don't work with Kerberos as service instances. (1) was fixed in 5.k for k>0. (2) was fixed today, and is included in the 5.4A update. The fix for (2) was made in /etc/athena/nfsid (which attach calls). It remains to be discussed what, if anything, should be done in the Kerberos library (that is, whether or not Kerberos should be case-sensitive for service and instance names). (Note: this may be explicit somewhere; I haven't checked.) - Win --[0214]-- \f [0215] daemon@TELECOM.MIT.EDU Kerberos 09/08/87 17:01 (40 lines) Subject: case sensitivity To: kerberos@ATHENA.MIT.EDU From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> I propose that Kerberos be modified to be non-case-sensitive in both principal and instance identifiers. Does anyone know a good reason for Kerberos to maintain case sensitivity? It doesn't appear to be a requirement to operate with UNIX. The issue comes up right now because we are being bitten by applications that have obtained a ticket for an instance identifier heracles, then look for it later using the identifier HERACLES, and fail. Since we have a widely known convention that host names are not case-sensitive, the failure is a surprising result. Some applications have worked around this problem by including explicit code that coerces instance names to lower case, because they know that Kerberos administrators conventionally use lower case only. Those applications will fail in an even more puzzling way the first time some Kerberos administrator tries to create an instance name using upper case. The more general problem is that Kerberos currently admits the possibility that three different users might have id's "smith", "Smith", and "SMITH". From the point of view of trying to make an authorization/authentication system as mistake-free as possible, this design is a human-engineering disaster! The specific change would probably be in just two places: searching the kerberos data base and searching the ticket file. In both places, the search would be changed to be insensitive to case both in the data base (file) and in the supplied identifier. That way the database can store names in any case (for human-engineered display) and the application can supply names in any case (whatever is easiest to come up with.) 1. Have I got the facts straight? 2. Comments? Jerry --[0215]-- \f [0216] daemon@TELECOM.MIT.EDU Kerberos 09/23/87 18:27 (55 lines) Subject: BURROWS SEMINAR Resent-From: STATON@XX.LCS.MIT.EDU From: Gail-Lenora Staton <STATON@XX.LCS.MIT.EDU> To: saltzer@MULTICS.MIT.EDU Cc: staton@XX.LCS.MIT.EDU, sollins@XX.LCS.MIT.EDU Resent-To: kerberos@XX.LCS.MIT.EDU From: Jerome H. Saltzer <Saltzer@XX.LCS.MIT.EDU> ----- Begin Forwarded Message ----- SEMINAR DATE: Tuesday, September 29, 1987 TIME: 3:30 p.m. (Refreshments) TIME: 3:45 p.m. (Lecture) PLACE: 545 Tech Sq., Room NE43-512A A LOGIC OF AUTHENTICATION MIKE BURROWS Cambridge University Abstract We have developed a logic which allows one to describe authentication protocols and to prove their correctness. It is useful for the designers and implementors of authentication protocols because: - it can determine the exact end state of the protocol in terms of the beliefs of the two authenticated parties; - it shows up redundant information and redundant encryption in the protocol; - it highlights any undesirable assumptions that the protocol relies upon in order to reach a desired end state; - it uses concepts which can be understood (were developed!) by people with little experience with formal techniques. We have built a theorem checker for the logic, and analyzed various published protocols, the results of which will be presented. This work was done by Roger Needham and Mike Burrows at DEC SRC. HOST: Karen R. Sollins ------- --[0216]-- \f [0217] daemon@TELECOM.MIT.EDU Kerberos 09/29/87 12:44 (66 lines) Subject: [Gail-Lenora Staton <STATON@XX.LCS.MIT.EDU>: Burrows Seminar - NEW TIME] Resent-From: SOLLINS@XX.LCS.MIT.EDU From: Karen R. Sollins <SOLLINS@XX.LCS.MIT.EDU> To: csr-people@COMET.LCS.MIT.EDU Resent-To: kerberos@XX.LCS.MIT.EDU From: Jerome H. Saltzer <Saltzer@XX.LCS.MIT.EDU> 1. Note change in time. 2. Mike Burrows stopped by to talk for a few minutes this morning. He says that his talk will include an analysis of exactly what you know for sure when each of several authentication protocols, including Kerberos, is completed. Jerry ----- Begin Forwarded Message ----- Date: Tue 29 Sep 87 10:08:08-EDT From: Gail-Lenora Staton <STATON@XX.LCS.MIT.EDU> Subject: Burrows Seminar - NEW TIME To: tech-sq@XX.LCS.MIT.EDU ***TODAY **** TODAY **** TODAY **** TODAY **** TODAY **** TODAY*** SEMINAR DATE: Tuesday, September 29, 1987 NOTE NEW TIME ====> TIME: 3:00 p.m. (Refreshments) NOTE NEW TIME ====> TIME: 3:15 p.m. (Lecture) PLACE: 545 Tech Sq., Room NE43-512A A LOGIC OF AUTHENTICATION MIKE BURROWS Cambridge University Abstract We have developed a logic which allows one to describe authentication protocols and to prove their correctness. It is useful for the designers and implementors of authentication protocols because: - it can determine the exact end state of the protocol in terms of the beliefs of the two authenticated parties; - it shows up redundant information and redundant encryption in the protocol; - it highlights any undesirable assumptions that the protocol relies upon in order to reach a desired end state; - it uses concepts which can be understood (were developed!) by people with little experience with formal techniques. We have built a theorem checker for the logic, and analyzed various published protocols, the results of which will be presented. This work was done by Roger Needham and Mike Burrows at DEC SRC. HOST: Karen R. Sollins ------- ------- --[0217]-- \f [0218] daemon@TELECOM.MIT.EDU Kerberos 10/15/87 12:56 (22 lines) Subject: passwd bugs From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU The command to change a Kerberos password, "passwd", accepts a carriage return as valid input for the new password prompt. After changing the password in this way, the user can't authenticate to Kerberos anymore at all, neither using a <CR> in response to the password prompt, nor the old password. John Barba noticed this bug and will fix it. We propose that, as in the "register" program, a password of less than 4 characters not be accepted. Any objections? There is another, known (at least to Carla) bug, which is: if you type the command "passwd", even if you type in the correct old password at the prompt, your password is deemed incorrect. If you give the command "passwd -name your_name", however, all goes as expected. Is someone looking into this already? Jennifer --[0218]-- \f [0219] daemon@TELECOM.MIT.EDU Kerberos 10/15/87 15:00 (25 lines) Subject: Re: passwd bugs To: <steiner@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU, barba@ATHENA.MIT.EDU In-Reply-To: Your message of Thu, 15 Oct 87 12:56:11 -0400. From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> "Fixed in next release". The passwd program is currently built and installed from the *SMS* source tree. It's in sms/clients/passwd/passwd.c, and requires sms/rpc/{admin_call.c,admin_err.et,admin_server.h,admin_util,c} as well. Note that this is a reimplemented version of Jeff's admin_util routine; admin_util() maintains the same calling interface, but calls admin_call() to do all the real work after collecting the passwords. This was so that the user registration server could use the same code as passwd. These should probably be merged back into the Kerberos library at some point. The fix to the first bug (disallowing a key of the null string) should be made in admin_util() rather than admin_call(). The second reported bug (requiring '-name foo', rather than defaulting to the user's login name) was fixed shortly after the deadline for the release. - Bill --[0219]-- \f [0220] daemon@TELECOM.MIT.EDU Kerberos 10/16/87 18:08 (9 lines) Subject: Kerberos dev sources moved From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU The sources that we're doing development from (used to be in paris:~steiner/kerberos) have been moved. The new location is: paris:/u3/kerberos.new Jennifer --[0220]-- \f [0221] daemon@TELECOM.MIT.EDU Kerberos 10/22/87 13:08 (22 lines) Subject: file locking From: raeburn@ATHENA.MIT.EDU To: bugs@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In case this isn't already on the Kerberos buglist, file locking would sorely help: oliver% list_tkts -l Ticket file for principal raeburn@ATHENA.MIT.EDU Issued Expires Principal Oct 22 12:56:36 Oct 22 20:56:36 krbtgt.ATHENA.MIT.EDU@ATHENA.MIT.EDU Oct 22 12:56:41 Oct 22 20:56:41 rvdsrv.priam@ATHENA.MIT.EDU Oct 22 12:57:52 Oct 22 20:57:52 rvdsrv.orpheus@ATHENA.MIT.EDU Oct 22 12:58:02 Oct 22 20:58:02 rvdsrv.charon@ATHENA.MIT.EDU Oct 22 12:58:29 Oct 22 20:58:29 rvdsrv.m4-035-w@ATHENA.MIT.EDU Oct 22 12:58:46 Oct 22 20:58:46 rvdsrv.eurydice@ATHENA.MIT.EDU Oct 22 12:58:51 Oct 22 20:58:51 rvdsrv.paris@ATHENA.MIT.EDU Oct 22 12:59:03 Oct 22 20:59:03 rvdsrv.snorkelwacker@ATHENA.MIT.EDU Oct 19 02:45:23 Oct 19 10:45:23 zephyr.zephyr@ATHENA.MIT.EDU *|q:c?.4MHV+s9~!rvdsrv@zeus32:31 _i4Yb2x\/4 CL,xj% oliver% --[0221]-- \f [0222] daemon@TELECOM.MIT.EDU Kerberos 10/22/87 13:47 (19 lines) Subject: Re: file locking From: steiner@ATHENA.MIT.EDU To: <raeburn@ATHENA.MIT.EDU> Cc: bugs@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Thu, 22 Oct 87 13:06:24 -0400. The new Kerberos library has the following routines for manipulating ticket files: * tf_init opens the ticket file and locks it. * * tf_get_pname returns the principal's name. * * tf_get_pinst returns the principal's instance (may be null). * * tf_get_cred returns the next CREDENTIALS record. * * tf_close closes the ticket file and releases the lock. Jennifer --[0222]-- \f [0223] daemon@TELECOM.MIT.EDU Kerberos 10/22/87 16:13 (14 lines) Subject: Re: file locking To: <steiner@ATHENA.MIT.EDU> Cc: <raeburn@ATHENA.MIT.EDU>, kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Thu, 22 Oct 87 13:46:29 -0400. From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Interface questions: It seems to me to make more sense to have one function which returns the (name, instance, realm) tuple. Does tf_get_pinst() return "" or NULL for a null instance? - Bill --[0223]-- \f [0224] daemon@TELECOM.MIT.EDU Kerberos 10/23/87 13:53 (16 lines) Subject: Kerberos function names From: treese@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Cc: treese@ATHENA.MIT.EDU Without considering the labor involved, it seems to me that it would be a good idea to change the Kerberos library function names to something alon the X pattern; that is, functions would have names like KUsefulFunction(). For example, mk_ap_request would become something like KMkApRequest() or KMakeApRequest(). A scheme like this has less potential for name collisions with other software, and makes it easier to find the Kerberos changes in the code. Comments? - Win --[0224]-- \f [0225] daemon@TELECOM.MIT.EDU Kerberos 10/23/87 14:26 (19 lines) Subject: Kerberos function names From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: treese@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU, treese@ATHENA.MIT.EDU In-Reply-To: <treese@ATHENA.MIT.EDU>'s message of Fri, 23 Oct 87 13:50:03 EDT <8710231750.AA22720@PARIS.MIT.EDU> I wouldn't mind a kerberos prefix (like the capital K) [of course I would really go for kerberos_$mk_ap_request] , but I for one *hate* using capital letters for "word" delimiters. Underscores look so much better (my eyes/brain can parse the "words" foo_bar more easily than FooBar ... it just "looks" like there's a space there). The real problem is you have to get all the clients as well. I wonder if it's worth that? (Though it will only get harder and harder to do the longer we wait.) -- Jon --[0225]-- \f [0226] daemon@TELECOM.MIT.EDU Kerberos 10/23/87 14:42 (18 lines) Subject: Re: Kerberos function names To: Jon Rochlis <jon@ATHENA.MIT.EDU> Cc: treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Fri, 23 Oct 87 14:23:40 -0400. From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> I second Jon's motion... In addition to being hard to read, the X names are also incredibly hard to type. Usually, I wind up capitalizing one more or one less letter than I have to. You have to shift for underscores, too, but that's further off the keyboard, so it's less likely that you'll make the mistake when typing. Of course, LISP-style names using '-' instead of '_' are even easier to type. A prefix of krb_ would be appropriate; kerberos_ is too long. '$' is not strictly a legal character in C identifiers, by ANSI C specs; PCC accepts it, but. - Bill --[0226]-- \f [0227] daemon@TELECOM.MIT.EDU Kerberos 10/23/87 14:47 (23 lines) Subject: Re: Kerberos function names To: Jon Rochlis <jon@ATHENA.MIT.EDU> Cc: treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Fri, 23 Oct 87 14:23:40 -0400. From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> [oops: this got sent too soon] I second Jon's motion... In addition to being hard to read, the X names are also incredibly hard to type. Usually, I wind up capitalizing one more or one less letter than I have to. You have to shift for underscores, too, but that's further off the keyboard, so it's less likely that you'll make the mistake when typing. Of course, LISP-style names using '-' instead of '_' are even easier to type. A prefix of krb_ would be appropriate; kerberos_ is too long. '$' is not strictly a legal character in C identifiers, by ANSI C specs; PCC accepts it, but other utilities, like "indent", tend to break it. It also brings back bad memories of 6.170 and 6.035 (although I think that the use of $ in CLU was ripped off from Multics..) - Bill --[0227]-- \f [0228] daemon@TELECOM.MIT.EDU Kerberos 10/23/87 17:37 (11 lines) Subject: Re: Kerberos function names To: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Cc: Jon Rochlis <jon@ATHENA.MIT.EDU>, treese@ATHENA.MIT.EDU, In-Reply-To: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU>'s message of Fri, 23 Oct 87 14:46:16 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > (although I think that the use of $ in CLU was ripped off from > Multics..) It sure was, may they both soon rest in peace. Jerry --[0228]-- \f [0229] daemon@TELECOM.MIT.EDU Kerberos 10/23/87 18:00 (11 lines) Subject: Re: Kerberos function names From: raeburn@ATHENA.MIT.EDU To: wesommer@ATHENA.MIT.EDU Cc: jon@ATHENA.MIT.EDU, treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Bill Sommerfeld's message of Fri, 23 Oct 87 14:46:16 EDT <8710231846.AA05432@EPIMETHEUS.MIT.EDU> Funny, just a couple of days or so ago I sent a similar suggestion off (in private mail to steiner). "krb_foo" is probably the best way to do it. (Although I too must confess to a preference for the kerberos_$foo idea. Think my bit of Multics upbringing is showing through?) --[0229]-- \f [0230] daemon@TELECOM.MIT.EDU Kerberos 10/23/87 18:14 (11 lines) Subject: Re: Kerberos function names From: Jim Bloom <jb%cs.brown.edu@RELAY.CS.NET> To: kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Fri, 23 Oct 87 14:23:40 EDT. I generally agree with Jon on this one. Not being a great typist, I general prefer things in lowercase and short. I'm not a big fan of capitals in names in any case. I don't mind a prefix if it isn't too long. "krb_" would be quite reasonable and should prevent conflicts in most cases. Jim --[0230]-- \f [0231] daemon@TELECOM.MIT.EDU Kerberos 10/25/87 21:17 (11 lines) Subject: Re: Kerberos function names From: geer@ATHENA.MIT.EDU To: <treese@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU, geer@ATHENA.MIT.EDU In-Reply-To: Your message of Fri, 23 Oct 87 13:50:03 -0400. i have no opinion about the function names in particular (other than to second Bill on lisp-style), but i do think that NOW is the time to make whatever change we are going to make. --dan --[0231]-- \f [0232] daemon@TELECOM.MIT.EDU Kerberos 10/27/87 15:21 (26 lines) Subject: reporting of errors From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU One of the most frequent complaints I've heard about Kerberos is that the way it deals with errors is ad hoc at best. I'd like to solicit ideas for a consistent and handy way of dealing with them. As it now stands, sometimes returned errors are ignored by the calling routines; some routines take it upon themselves to print a message (sometimes to stderr, sometimes to stdout) and exit (or not); sometimes perror() is used; the com_err library is used some places and not others; if an error code manages to find its way back to the user, it's usually the same error for any number of wildly different problems. Sometimes when getting an error, the program will print its name, sometimes the routine will print its name. In the list of error texts (krb_err_text.c in the library), the routine name is a part of the error string. Is this helpful? Should there be a krb_errno a la Unix errno? Or is there a better way to handle the problem than a global variable? Any comments are appreciated. Jennifer --[0232]-- \f [0233] daemon@TELECOM.MIT.EDU Kerberos 10/28/87 09:30 (17 lines) Subject: Hostname-instance problems From: treese@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Cc: treese@ATHENA.MIT.EDU Problem: rvddown aggie vssys fails to work using Kerberos authentication. The problem is that "aggie" is not a valid instance name. Some programs, such as rlogin, handle this by calling gethostbyname() to get the canonical name, then strip off the domain information and lower-case the string. Instead of having every client do that, I propose that we make that part of mk_ap_req() as as standard feature. Comments? - Win --[0233]-- \f [0234] daemon@TELECOM.MIT.EDU Kerberos 10/28/87 11:21 (22 lines) Subject: re: Hostname-instance problems To: <treese@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU, treese@ATHENA.MIT.EDU In-Reply-To: <treese@ATHENA.MIT.EDU>'s message of Wed, 28 Oct 87 09:26:43 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > Problem: > rvddown aggie vssys > fails to work using Kerberos authentication. The problem is that "aggie" > is not a valid instance name. Some programs, such as rlogin, handle this > by calling gethostbyname() to get the canonical name, then strip off the > domain information and lower-case the string. Instead of having every > client do that, I propose that we make that part of mk_ap_req() as as > standard feature. I see one problem: it somewhat permanently associates the concept of "instance" with "canonicalized domain name". It seems to me that there are other good sources for instance fields. Maybe a more suitable way is to define a kerberos library routine named krb_hostname_to_instance() which returns a string that you can hand to make_ap_req(). Jerry --[0234]-- \f [0235] daemon@TELECOM.MIT.EDU Kerberos 10/28/87 14:20 (24 lines) Subject: Hostname-instance problems From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: Saltzer@ATHENA.MIT.EDU Cc: treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU, treese@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Wed, 28 Oct 87 11:20:52 EST <8710281620.AA12417@HERACLES.MIT.EDU> This also has to do with the relationship between Kerberos realms and namespace domains. For example we had the frats (and the SIPB) in their own domain, but using the Athena Kerberos realm. Since the instance for service keys wasn't fully qualified, you had to be careful about name assigment. (E.g. rlogin into binkley.sipb.mit.edu by getting tickets for rcmd.binkley, but that implies that there isn't a binkley.mit.edu). This is a can of worms, and really should be solved, but is it too much to deal with in the first release. See Jeff's message to the kerberos list on July 9 of this year for more of the problem (transaction [0206] in the kerberos discuss meeting on achilles). I think a shipped Kerberos should probably use the fully qualified domain names for service instances, and we should seriously consider doing that ourselves (even with the flag day, or duplicate entries that that would imply). -- Jon --[0235]-- \f [0236] daemon@TELECOM.MIT.EDU Kerberos 10/28/87 14:30 (25 lines) Subject: multi-homed hosts From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU While we're mentioning problems with Kerberos, I should point out that Kerberos has lots of problems with multi-homed hosts. Basically if you a request for a ticket on one interface, and send it to a service through another interface you'll lose because the sealed IP address won't match the IP address you claim to be coming from. For example if you have a network (say 128.15) with a kerberos server someplace on it and you have a multi-homed host on milnet (net 26) on which you want to run to run some application to talk to something at MIT. First you go off an talk to your kerberos server getting a ticket with your 128.15 address sealed in it, but when you ship it to MIT, you'll have your net 26 address in the packet header, and the server's rd_ap_req will fail. When talking to the service, binding the socket you intend to use the same address that you used to get the ticket in the first place may be the only "easy" was to fix the problem, without substainal changes to the guts of kerberos. -- Jon --[0236]-- \f [0237] daemon@TELECOM.MIT.EDU Kerberos 10/29/87 11:53 (9 lines) Subject: kerberos library From: John T Kohl <jtkohl@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU I have noticed many functions in the kerberos library which are used only by the kerberos server programs. Should we create a separate library for these functions, and leave -lkrb for the client and server applications? John --[0237]-- \f [0238] daemon@TELECOM.MIT.EDU Kerberos 10/29/87 12:51 (22 lines) Subject: discuss meeting for Kerberos development team under Jennifer Steiner From: raeburn@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Announced in Athena_Meetings on Menelaus: [0005] raeburn@ATHENA.MIT.EDU Athena_Meetings 10/29/87 12:43 (7 lines) Subject: Kerberos_Development meeting Meeting Name: Kerberos_Development Host: MENELAUS.MIT.EDU Pathname: /usr/spool/discuss/krb_dev Participation: Public This meeting will serve as information exchange and log for the Kerberos development team. Suggestions and comments are welcome. --[0005]-- If you have interest in reading this meeting but have not used Discuss, you can get information on using Discuss from the Student Information Processing Board (in room 11-205), or send me mail directly. For those not involved in and without direct interest in the development, it may be a bit boring.... --[0238]-- \f [0239] daemon@TELECOM.MIT.EDU Kerberos 10/29/87 13:27 (13 lines) Subject: re: kerberos library To: kerberos@ATHENA.MIT.EDU Cc: John T Kohl <jtkohl@ATHENA.MIT.EDU> In-Reply-To: John T Kohl <jtkohl@ATHENA.MIT.EDU>'s message of Thu, 29 Oct 87 11:52:46 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > I have noticed many functions in the kerberos library which are used > only by the kerberos server programs. Should we create a separate > library for these functions, and leave -lkrb for the client and server > applications? Definitely. Jerry --[0239]-- \f [0240] daemon@TELECOM.MIT.EDU Kerberos 10/29/87 15:59 (44 lines) Subject: Re: reporting of errors. From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU \begin{flame} 'errno' is a crock which people keep copying it in the vain hope that they are calling something reasonable. Global variables shared between libraries and applications are inherently _evil_, since they clutter up the namespace. In addition, there are insufficient constraints on when errno can and cannot be clobbered. Instead, use of Ken's com_err package (which is already in use by SMS, as well as being in use inside discuss and a few other places) seems to make a lot of sense. In the presence of \end{flame} Exercise for the reader: /* * Explain why this program prints "open: Not a typewriter" when it is * run with stdout redirected into a file. The "printf" works fine, by * the way. * * Hints: errno, "man 4 tty". */ main() { int fd; fd = open("/sadf/asdf/asdf/asd", 0, 0); if (fd == -1) { printf("Couldn't open the file\n"); perror("open"); } exit(0); } - Bill --[0240]-- \f [0241] daemon@TELECOM.MIT.EDU Kerberos 10/29/87 17:22 (30 lines) Subject: Re: Hostname-instance problem From: srz@MELANGE.LCS.MIT.EDU (Stan Zanarotti) To: kerberos@ATHENA.MIT.EDU Cc: treese@ATHENA.MIT.EDU >I think a shipped Kerberos should probably use the fully qualified domain >names for service instances, and we should seriously consider doing >that ourselves (even with the flag day, or duplicate entries that that >would imply). Using fully qualified domain names as service instances doesn't solve the entire problem; it only avoids name conflicts when the same kerberos server serves machines with the same initial hostname (if there were a BINKLEY.SIPB.MIT.EDU and BINKLEY.PIKA.MIT.EDU). The problem we're running into it is answering the question: "I'm trying to contact this host; what realm do I use to get kerberos tickets for it?" Cliff was originally planning on having the name service answer this question; associated with each machine is its Kerberos realm. This never got implemented. So right now we're stuck with the situation where either the domain name of a hostname is used to determine the realm (as the LCS code does it), or explicitly giving the realm on the command line with the '-k' option (as the Athena code does it). Jeff talked about having a UDP service that returns the kerberos realm name for a machine; when contacting a machine, you contact this UDP service first to determine which realm to use. -stan --[0241]-- \f [0242] daemon@TELECOM.MIT.EDU Kerberos 10/30/87 10:26 (27 lines) Subject: Re: reporting of errors. From: steiner@ATHENA.MIT.EDU To: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Thu, 29 Oct 87 15:58:48 -0500. > Global variables shared between libraries and applications are > inherently _evil_, since they clutter up the namespace. In addition, > there are insufficient constraints on when errno can and cannot be > clobbered. Instead, use of Ken's com_err package (which is already in > use by SMS, as well as being in use inside discuss and a few other > places) seems to make a lot of sense. I agree com_err is nice. It integrates lists of error codes and texts, such as Unix system errors and Kerberos library errors, and it provides a uniform way of printing them. But com_err by itself doesn't enforce any policy as far as I know (and it probably shouldn't). The error code you pass to it can be "errno", the return value of a function, your mother's middle initial, or whatever. What I'm wondering about are things like, should library functions print error messages, if so, in what cases; or should they only pass on any errors they get, if so, how; is there any time when they should abort a program, etc.? Jennifer --[0242]-- \f [0243] daemon@TELECOM.MIT.EDU Kerberos 10/30/87 12:41 (22 lines) Subject: Re: reporting of errors. From: Robert S. French <rfrench@ATHENA.MIT.EDU> To: <steiner@ATHENA.MIT.EDU> Cc: wesommer@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: <steiner@ATHENA.MIT.EDU>'s message of Fri, 30 Oct 87 10:25:59 EST From: <steiner@ATHENA.MIT.EDU> Date: Fri, 30 Oct 87 10:25:59 EST What I'm wondering about are things like, should library functions print error messages, if so, in what cases; or should they only pass on any errors they get, if so, how; is there any time when they should abort a program, etc.? Jennifer I strongly believe that library routines should ONLY return error codes. The error codes should be universal across all routines (ala com_err style). Applications should be able to deal with error codes in their manner. The library should never force an screen display and especially should never cause a program abort. Rob --[0243]-- \f [0244] daemon@TELECOM.MIT.EDU Kerberos 10/30/87 14:23 (22 lines) Subject: Re: reporting of errors. To: Robert S. French <rfrench@ATHENA.MIT.EDU> Cc: rfrench@ATHENA.MIT.EDU, <steiner@ATHENA.MIT.EDU>, wesommer@ATHENA.MIT.EDU, In-Reply-To: Robert S. French <rfrench@ATHENA.MIT.EDU>'s message of Fri, 30 Oct 87 12:40:25 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > What I'm wondering about are things like, should library functions print > error messages, if so, in what cases; or should they only pass on any > errors they get, if so, how; is there any time when they should abort > a program, etc.? One way to think about this issue is as follows: for a library routine to decide to print a message and abort, it is effectively saying "for the awful situation I just discovered, there is absolutely nothing that any application in the universe could possibly want to--or be able to--do next, so I might as well abort." There are cases where that is an appropriate position to take, (Unix kernel panics tend to operate that way) but they are rare. On the whole, I would expect the Kerberos library not to have any such cases. Jerry --[0244]-- \f [0245] daemon@TELECOM.MIT.EDU Kerberos 10/30/87 19:17 (42 lines) Subject: given realm, where is master kerberos server? From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU This is a problem I've run into when trying to set up a new kerberos realm on another machine. (I've talked to several people about this and most of the ideas here are theirs, not mine. I'm just confused.) If you want to do a write operation (like changing a password), the Master kerberos server must be located, unlike read-only (authentication) operations where Slave servers will do. Say you know what realm you want; how do you find out which machine the master is running on? Right now, it's assumed to be on a machine called "kerberos". Maybe this is a good idea; that means that, given a realm; you can always find the master kerberos server on a machine called "kerberos". But the way that the local realm is found, and the way a generic (slave or master) kerberos server is found, is done differently and maybe that model should also be used for the master. Namely, /etc/krb_config is consulted, and if it's not there, the #define KRB_HOST or KRB_REALM is taken as default. The master could be designated in the krb_config file too, or default to a #define'd KRB_MASTER. This would certainly make testing easier on machines which don't happen to think their name is "kerberos", but that's not necessarily a good reason to do it. Another related question is: could a nameserver (Hesiod) be used in place of the /etc/krb_config file? It could be argued that someone could impersonate the nameserver, but it could also be argued that that wouldn't get them very far. Finally, does this relate to the Hostname-as-instance problem at all? Enlightenment would be appreciated. Jennifer --[0245]-- \f [0246] daemon@TELECOM.MIT.EDU Kerberos 11/01/87 23:13 (18 lines) Subject: get_ad_tkt From: Theodore Ts'o <tytso@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU Reply-To: tytso@ATHENA.MIT.EDU Right now, get_ad_tkt doesn't do any sanity checking on the ticket that it gets back from kerberos after it decrypts it. Thus, if the ticket gets somehow garbled in transit, get_ad_tkt will blithly (using strcpy, not strncpy, which is *ANOTHER* problem), copy garbage into s_name and s_inst and the put said garbage into the user's ticket file. It should probably check to make sure that the ticket that it got back from kerberos matches what it asked for by checking the returned service name/instance strings. After all, get_ad_tkt can't be *sure* that it is talking to kerberos, so it should be as paranoid as possible. - Ted --[0246]-- \f [0247] daemon@TELECOM.MIT.EDU Kerberos 11/01/87 23:30 (21 lines) Subject: re: get_ad_tkt To: tytso@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU, tytso@ATHENA.MIT.EDU In-Reply-To: tytso@ATHENA.MIT.EDU's message of Sun, 1 Nov 87 23:12:34 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > It should probably check to make sure that the ticket that it > got back from kerberos matches what it asked for by checking the > returned service name/instance strings. After all, get_ad_tkt can't be > *sure* that it is talking to kerberos, so it should be as paranoid as > possible. It should check, but primarily for human engineering, rather than paranoia. If the Kerberos is bogus, no service will accept the ticket anyway, so the client's data is safe. (In some relaxed protocols the client may include some data in the same packet with the ticket, but presumably a protocol would do that only if it weren't paranoid about that particular data.) But if something is just accidentally screwed up, the earlier the problem is discovered, the easier it is to diagnose and get started untangling the mess. Jerry --[0247]-- \f [0248] daemon@TELECOM.MIT.EDU Kerberos 11/01/87 23:58 (19 lines) Subject: Re: get_ad_tkt From: raeburn@ATHENA.MIT.EDU To: Saltzer@ATHENA.MIT.EDU Cc: tytso@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Sun, 1 Nov 87 23:29:10 EST <8711020429.AA23405@HERACLES.MIT.EDU> One thing Ted mentioned which you missed is that the program may not be talking to Kerberos, or that the ticket it has is actually valid; in the interest of security (through obscurity, alas) I will not describe a fairly simple mechanism which has been demonstrated to bypass Kerberos authentication as it is implemented in certain programs. (Being on the development team now, I hope to plug a few of these.) There is little excuse for the Kerberos library to fail to make checks against this sort of thing. The checks can do no harm, and may plug hole we haven't even seen yet. -- Ken --[0248]-- \f [0249] daemon@TELECOM.MIT.EDU Kerberos 11/05/87 15:00 (41 lines) Subject: Too many zephyr kerberos tickets From: mar@ATHENA.MIT.EDU To: zephyr-comments@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU I just noticed that I have four identical zephyr.zephyr kerberos tickets: Ticket file for principal mar@ATHENA.MIT.EDU Issued Expires Principal Nov 5 11:01:10 Nov 5 19:01:10 krbtgt.ATHENA.MIT.EDU@ATHENA.MIT.EDU Nov 5 11:01:13 Nov 5 19:01:13 rvdsrv.eurydice@ATHENA.MIT.EDU Nov 5 11:01:51 Nov 5 19:01:51 rvdsrv.paris@ATHENA.MIT.EDU Nov 5 11:02:17 Nov 5 19:02:17 zephyr.zephyr@ATHENA.MIT.EDU Nov 5 11:02:17 Nov 5 19:02:17 zephyr.zephyr@ATHENA.MIT.EDU Nov 5 11:02:17 Nov 5 19:02:17 zephyr.zephyr@ATHENA.MIT.EDU Nov 5 11:02:17 Nov 5 19:02:17 zephyr.zephyr@ATHENA.MIT.EDU Nov 5 11:02:39 Nov 5 19:02:39 discuss.charon@ATHENA.MIT.EDU Nov 5 11:02:48 Nov 5 19:02:48 rvdsrv.helen@ATHENA.MIT.EDU Nov 5 11:02:50 Nov 5 19:02:50 discuss.menelaus@ATHENA.MIT.EDU Nov 5 11:03:00 Nov 5 19:03:00 pop.e40-po@ATHENA.MIT.EDU Nov 5 11:03:06 Nov 5 19:03:06 rvdsrv.menelaus@ATHENA.MIT.EDU Nov 5 11:03:01 Nov 5 19:03:01 discuss.odysseus@ATHENA.MIT.EDU Nov 5 11:03:25 Nov 5 19:03:25 rvdsrv.theseus@ATHENA.MIT.EDU Nov 5 11:03:21 Nov 5 19:03:21 discuss.bloom-beacon@ATHENA.MIT.EDU Nov 5 11:03:35 Nov 5 19:03:35 discuss.matisse@ATHENA.MIT.EDU Nov 5 13:44:56 Nov 5 19:04:56 sms.sms@ATHENA.MIT.EDU Nov 5 14:01:12 Nov 5 19:01:12 rvdsrv.euterpe@ATHENA.MIT.EDU On trying to duplicate this, I discovered that I usually get two identical ones, but I couldn't get four again. I start up zephyr with this line in my .login: (zwgc; zlogin; zinit; zcheckmail; znol | zwrite mar) > /dev/null & My guess is that several programs are trying to get zephyr tickets at the same time. They each see that there are no zephyr tickets in my ticket file, and each one fetches a ticket and appends it to the file. The number of duplicates is determined by how many programs try to get a ticket before the first one succeeds. This isn't really a problem, but an interesting race condition. -Mark --[0249]-- \f [0250] daemon@TELECOM.MIT.EDU Kerberos 11/05/87 15:25 (58 lines) Subject: Too many zephyr kerberos tickets From: probe@ATHENA.MIT.EDU To: mar@ATHENA.MIT.EDU Cc: zephyr-comments@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: <mar@ATHENA.MIT.EDU>'s message of Thu, 5 Nov 87 14:59:44 EST <8711051959.AA13308@TOTO.MIT.EDU> Reply-To: Richard Basch <probe@ATHENA.MIT.EDU> > From: <mar@ATHENA.MIT.EDU> > Date: Thu, 5 Nov 87 14:59:44 EST > Play-Safe: it could save your life > I just noticed that I have four identical zephyr.zephyr kerberos > tickets: > Ticket file for principal mar@ATHENA.MIT.EDU > Issued Expires Principal > Nov 5 11:01:10 Nov 5 19:01:10 krbtgt.ATHENA.MIT.EDU@ATHENA.MIT.EDU > Nov 5 11:01:13 Nov 5 19:01:13 rvdsrv.eurydice@ATHENA.MIT.EDU > Nov 5 11:01:51 Nov 5 19:01:51 rvdsrv.paris@ATHENA.MIT.EDU > Nov 5 11:02:17 Nov 5 19:02:17 zephyr.zephyr@ATHENA.MIT.EDU > Nov 5 11:02:17 Nov 5 19:02:17 zephyr.zephyr@ATHENA.MIT.EDU > Nov 5 11:02:17 Nov 5 19:02:17 zephyr.zephyr@ATHENA.MIT.EDU > Nov 5 11:02:17 Nov 5 19:02:17 zephyr.zephyr@ATHENA.MIT.EDU > Nov 5 11:02:39 Nov 5 19:02:39 discuss.charon@ATHENA.MIT.EDU > Nov 5 11:02:48 Nov 5 19:02:48 rvdsrv.helen@ATHENA.MIT.EDU > Nov 5 11:02:50 Nov 5 19:02:50 discuss.menelaus@ATHENA.MIT.EDU > Nov 5 11:03:00 Nov 5 19:03:00 pop.e40-po@ATHENA.MIT.EDU > Nov 5 11:03:06 Nov 5 19:03:06 rvdsrv.menelaus@ATHENA.MIT.EDU > Nov 5 11:03:01 Nov 5 19:03:01 discuss.odysseus@ATHENA.MIT.EDU > Nov 5 11:03:25 Nov 5 19:03:25 rvdsrv.theseus@ATHENA.MIT.EDU > Nov 5 11:03:21 Nov 5 19:03:21 discuss.bloom-beacon@ATHENA.MIT.EDU > Nov 5 11:03:35 Nov 5 19:03:35 discuss.matisse@ATHENA.MIT.EDU > Nov 5 13:44:56 Nov 5 19:04:56 sms.sms@ATHENA.MIT.EDU > Nov 5 14:01:12 Nov 5 19:01:12 rvdsrv.euterpe@ATHENA.MIT.EDU > On trying to duplicate this, I discovered that I usually get two > identical ones, but I couldn't get four again. I start up zephyr with > this line in my .login: > (zwgc; zlogin; zinit; zcheckmail; znol | zwrite mar) > /dev/null & > My guess is that several programs are trying to get zephyr tickets at > the same time. They each see that there are no zephyr tickets in my > ticket file, and each one fetches a ticket and appends it to the file. > The number of duplicates is determined by how many programs try to get > a ticket before the first one succeeds. > This isn't really a problem, but an interesting race condition. > -Mark I have noticed that many people get multiple zephyr tickets. As you said, this is an interesting race condition, but contrary to what you said, I believe it can be a problem -- I have also seen incorrect time stamps associated with the tickets indicating that there is a file-locking problem. -Richard Basch --[0250]-- \f [0251] daemon@TELECOM.MIT.EDU Kerberos 11/06/87 13:49 (11 lines) Subject: Mailing list addition request From: Greg Hollingsworth <gregh@TRANTOR.UMD.EDU> To: kerberos@ATHENA.MIT.EDU Could you add kerberos@trantor.umd.edu to the kerberos mailing list. Also, if there is an archive of previous discussions, could you send me a pointer to it. Thanks, Greg Hollingsworth (gregh@trantor.umd.edu) University of Maryland, Systems Staff --[0251]-- \f [0252] daemon@TELECOM.MIT.EDU Kerberos 11/13/87 16:02 (29 lines) Subject: an_to_ln From: srz@MELANGE.LCS.MIT.EDU (Stan Zanarotti) To: kerberos@ATHENA.MIT.EDU In paris:/mit/srz/rpc.mountd, I have a version of Bill Sommerfeld's an_to_ln routine that uses /etc/aname.{pag,dir} to convert authentication names into local user names. This was part of the original Kerberos concept, but was never implemented by the time Cliff left. I also changed it so that it special cases name.root to map to name. Although this is a site-specific customization (in other words, Jeff Schiller couldn't live without it), an_to_ln was intended to have some site customization in it. With this feature, users can allow arbitrary principals to map to their user name on the local machine. This comes in very handy for people who live on the interrealm boundary. In the same directory, I have a modified version of rpc.mountd that uses an_to_ln to do the mapping, and Bill's krb_alias program that allows people to update this database. I propose that this version of an_to_ln gets installed in the kerberos library. Athena's version of rpc.mountd should be updated, although Jeff hasn't found the time to install it yet. If it had used an_to_ln in the first place, it could have avoided the "it doesn't check the realm name" bug. Comments? -stan --[0252]-- \f [0253] daemon@TELECOM.MIT.EDU Kerberos 11/13/87 22:34 (25 lines) Subject: Re: an_to_ln From: raeburn@ATHENA.MIT.EDU To: srz@MELANGE.LCS.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Stan Zanarotti's message of Fri, 13 Nov 87 16:00:59 EST <8711132100.AA06250@melange.LCS.MIT.EDU> It sounds good, but the krb_alias program, as implemented (if I remember it right), would permit denial of service of a sort. Consider this scenario: I log in to Charon. I run "krb_alias" with the appropriate arguments to map "jon@ATHENA.MIT.EDU" to "raeburn". Jon can no longer log in to his own account on Charon. (Guess who I was just discussing this with?) You would probably have to present tickets for <aname> to be mapped, as well as tickets for the target <lname> (or someone who can get mapped to it) in order to establish the mapping. A simple implementation could ask for the password of the <aname> while logged in as <lname> (which assumes that authentication and authorization have already been established). --[0253]-- \f [0254] daemon@TELECOM.MIT.EDU Kerberos 11/14/87 00:06 (31 lines) Subject: Re: an_to_ln From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To: raeburn@ATHENA.MIT.EDU, srz@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU Not really a denial of service. Jon can then log into Ken's account, remove the alias, and then delete all of Ken's files if he's feeling nasty. Seriously, the way to deal with this so that it doesn't become a denial of service is to provide a remote service equivalent to krb_alias. It would require one authenticator for a delete, and two for an add (basically saying "equivalence these two so that A now maps to what B maps to"); some care would have to be taken so that replays of old authenticators in the 'B' slot wouldn't work (B would have to contain as its checksum the quad_cksum() of A's ticket, or something like that). To be complete, there should also be a remote "whoami" service; you send over the authenticator, and the other end sends back an ascii string equivalent to what you map into. That way, the response to that kind of hacking would be: Jon tries to log into his account; finds that it fails ("jon has not given permission for jon@ATHENA.MIT.EDU to log in"). Jon runs "rkrb_alias" to find out what he maps into, deletes the mapping, (falling back to the old one, of course), and starts winning again. - Bill --[0254]-- \f [0255] daemon@TELECOM.MIT.EDU Kerberos 11/14/87 01:04 (20 lines) Subject: Re: an_to_ln To: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Cc: wesommer@ATHENA.MIT.EDU, raeburn@ATHENA.MIT.EDU, srz@ATHENA.MIT.EDU, In-Reply-To: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU>'s message of Sat, 14 Nov 87 00:06:08 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > Jon tries to log into his account; finds that it fails ("jon > has not given permission for jon@ATHENA.MIT.EDU to log in"). > Jon runs "rkrb_alias" to find out what he maps into, deletes > the mapping, (falling back to the old one, of course), and starts > winning again. The only problem with this scenario is that an ordinary mortal who has been victim of this hack is very unlikely to figure out what has happened. Even after he or she finds an authentication wizard to explain mapping, it is unlikely the victim will carry away warm feelings toward Kerberos. Do we really need this kind of mapping? Jerry --[0255]-- \f [0256] daemon@TELECOM.MIT.EDU Kerberos 11/14/87 01:43 (24 lines) Subject: Re: an_to_ln From: raeburn@ATHENA.MIT.EDU To: Saltzer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Sat, 14 Nov 87 01:03:41 EST <8711140603.AA02985@HERACLES.MIT.EDU> If the user (Jon) does figure out that he has been logged into my account, it may not be possible for him to delete the mapping. Consider a .cshrc which says "exec myhack", which only allows escape to a shell with a magic password. It could also fake a failed login attempt. Actually, where Bill mentions that Jon would get "jon has not given permission ....", I had been assuming that the mapping was automatic and it would be logging him into my account -- I forgot for the moment that the username requested on the opposite end is specified elsewhere in that particular protocol, so that what I suggest for rlogin would not work. For protocols that depend wholly on Kerberos for authentication, however, this would not provide a way out. It would be very difficult to deal with inter-realm activities that require usernames without some sort of mapping from Kerberos-authenticated entity to user. All that is needed is the proper caution in permitting the mappings to be set up. --[0256]-- \f [0257] daemon@TELECOM.MIT.EDU Kerberos 11/14/87 11:05 (59 lines) Subject: re: an_to_ln To: srz@MELANGE.LCS.MIT.EDU (Stan Zanarotti) Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: srz@melange.LCS.MIT.EDU (Stan Zanarotti)'s message of Fri, 13 Nov 87 16:00:59 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> I think some of this discussion is barking up the wrong tree. There are two mapping concepts here that are best kept orthogonal. 1. Mapping from an external identity to internal identity. This mapping should be one-to-one, should almost never change, and should be as obvious as possible. 2. Allowing several identities to map together, to accomplish some kind of proxy login or access control goal. This mapping should be done either by mapping external identities to external identities, or by mapping internal identities to internal identities. The mapping from authentication name (Kerberos principal identifier) to local name (the ID you have on some time-sharing system) is something that a non-standard world forces on us, but it isn't the right place to introduce user-settable arbitrary rebindings. The ideal external-to-internal mapping would be the identity mapping, because any other mapping violates the principle of minimum surprise, an especially important principle for protection mechanisms. That is, protection mechanisms that have non-obvious properties are protection mechanisms that well-intentioned users have a good chance of setting up wrong, using incorrectly, or not auditing properly. Unfortunately, there isn't much prospect of instantly changing UNIX to use Kerberos principal identifiers in full, or of assuming that every local system within a Kerberos realm will change its identifiers for users to match everyone else's names for those same users. So some mapping is required. I think that one balances those two pressures by: 1. Using a mapping as close to identity as possible, wherever possible. The algorithmic mapping we use at Athena for instance-less names is a good example. 2. Where it can't be an identity, set it up once and for all and leave it, so that once people learn a mapping for a particular system they don't find it changing from day to day. This consideration argues against any discussion about what tickets you need to present to change the mapping. Wiring it into a table that only a system administrator can get at is actually a good idea in this case. Since the requirements for mapping are very site-dependent, it is possible that the Kerberos master sources need to offer a few optional versions of the an_to_ln() function, together with a good explanation of the tradeoffs. And any hint of function along the line of "I want to be able to allow that user to log in to this system as me" ought to be handled by an orthogonal mechanism, explicitly managed as a proxy system, with appropriate logging and safeguards. Jerry --[0257]-- \f [0258] daemon@TELECOM.MIT.EDU Kerberos 11/17/87 15:39 (70 lines) Subject: re: an_to_ln From: srz@MELANGE.LCS.MIT.EDU (Stan Zanarotti) To: Saltzer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU >There are two mapping concepts here that are best kept orthogonal. >1. Mapping from an external identity to internal identity. This >mapping should be one-to-one, should almost never change, and should >be as obvious as possible. >2. Allowing several identities to map together, to accomplish some >kind of proxy login or access control goal. This mapping should be >done either by mapping external identities to external identities, or >by mapping internal identities to internal identities. Let me see if I can figure this through, so that I can understand exactly what you're proposing. Situation #1: One capability that I want to have is NFS, POP, and rlogin access from my LCS account over to my Athena account. This is an access decision that I make. If this had to be done by a system administrator, I could whine at Jeff to get this done, but it would be better if I could set this up myself from my Athena account. Since this is a many-to-one mapping, it would have to be covered by mapping #2. The external identity srz@LCS.MIT.EDU would have to be mapped to the external identity srz@ATHENA.MIT.EDU. Presumably, when the LCS client machine contacts Athena's kerberos server, it presents tickets authenticating me as srz@LCS.MIT.EDU. The kerberos server would give me back tickets authenticating me as srz@ATHENA.MIT.EDU. I can present these tickets to charon, which will allow me to access my files. This scheme's advantage is that it takes care of the entire realm at once. By updating one database (the one on the kerberos server(s)), I can allow srz@LCS.MIT.EDU proxy for srz@ATHENA.MIT.EDU, for all services. I do not have to set up separate access control lists for the mail services, the NFS service, etc. The disadvantages are that there is no granularity of access control (it's all or nothing), there is still a denial of service attack, it involves changing the Kerberos protocol (I'm getting back different tickets than I'm asking for) and adding another database that the kerberos server has to maintain. Situation #2: Athena has the concept of "root" instances, which are Kerberos instances that are more privileged than the normal (user, "") instances. Services with access control lists (like rlogin), will sometimes have root instances listed, but not the normal instances. What Jeff wants is for POP and NFS access still work with root tickets as well as normal tickets. That is, ("jis", "root") tickets would be able to read the mailbox for "jis", just as well as ("jis", ""). This too is a many-to-one mapping, and therefore has to be covered by mapping #2. The external identity jis.root@ATHENA.MIT.EDU maps to the external identity jis@ATHENA.MIT.EDU. If this mapping was always done before the access control list check, then the root instances would be useless; they would simply be washed away by this mapping. So I'm not sure how we can accomplish both goals simulateneously if we restrict ourselves to the two types of mappings above. And if we're giving up on any of these goals, I would like to know now. One final observation about goal #1: The current interrealm mechanisms in Kerberos are woefully inadequate. If we start promoting Kerberos as the solution to inter-realm access control, we've got to come up with better inter-realm support. Currently I am one of the few people suffering from this; Jeff gave up on the TELECOM realm. -stan --[0258]-- \f [0259] daemon@TELECOM.MIT.EDU Kerberos 11/18/87 14:39 (51 lines) Subject: re: an_to_ln To: srz@MELANGE.LCS.MIT.EDU (Stan Zanarotti) Cc: Saltzer@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: srz@melange.LCS.MIT.EDU (Stan Zanarotti)'s message of Tue, 17 Nov 87 15:38:04 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > One capability that I want to have is NFS, POP, and rlogin access from > my LCS account over to my Athena account. This is an access decision > that I make. If this had to be done by a system administrator, I > could whine at Jeff to get this done, but it would be better if I > could set this up myself from my Athena account. I think that is pure proxy; some services support user-designated proxies and some don't. If you originally authenticate yourself as srz@lcs I don't think that the Athena Kerberos server has any business giving out tickets that say you are srz@athena; it should give tickets for Athena services but the ticket should still identify you as srz@lcs and the service should decide whether or not it wants to allow usage by that principal, and also whether or not to map it to the same thing that it would map srz@athena. Similarly, if your LCS ticket comes through saying "stan@lcs" the service gets to decide that it wants to map that name to "srz@athena" before proceeding. > What Jeff wants is for POP and NFS access still work with root tickets > as well as normal tickets. That is, ("jis", "root") tickets would be > able to read the mailbox for "jis", just as well as ("jis", ""). This > too is a many-to-one mapping, and therefore has to be covered by > mapping #2. The external identity jis.root@ATHENA.MIT.EDU maps to > the external identity jis@ATHENA.MIT.EDU. If this mapping was always > done before the access control list check, then the root instances would be > useless; they would simply be washed away by this mapping. Shouldn't that class of "mapping" should be handled by an access control list that implements wild cards? For the case indicated, the access list might say "jis.*@athena.mit.edu" > One final observation about goal #1: The current interrealm > mechanisms in Kerberos are woefully inadequate. If we start promoting > Kerberos as the solution to inter-realm access control, we've got to > come up with better inter-realm support. Currently I am one of the > few people suffering from this; Jeff gave up on the TELECOM realm. I think everyone agrees that there are a lot of loose ends in this area. The trick is to separate the fundamental issues out from the current kit bag of shortcuts and implementation hacks. In particular, when the present implementation runs into problems, the question each time is whether it is because of a fundamental gap in the Kerberos design or is it because some service (or Kerberos itself) hasn't gotten around to implementing a nominally required feature. Jerry --[0259]-- \f [0260] daemon@TELECOM.MIT.EDU Kerberos 11/20/87 15:04 (56 lines) Subject: Re: an_to_ln From: srz@MELANGE.LCS.MIT.EDU (Stan Zanarotti) To: Saltzer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU I think part of the reason we've been having this discussion is that Kerberos is not really complete. Only the authentication head has been completed. Authorization is a much harder problem, but one which we have to deal with at the present time. Theoretically, once Kerberos provides authentication, each service can decide what access should be given to that principal. In practice, we want to come up with common mechanisms or tools that services can use to make authorization decisions. Currently, I believe that discuss, rlogin and RVD have access control lists. POP, RFS, and NFS do not. The people who 'kerberized' these applications did not want to put in the time to add access control lists, and the administration associated with them. If tools were around that made this easy, then the authorization would be there. > Similarly, if your LCS ticket comes through saying "stan@lcs" the > service gets to decide that it wants to map that name to "srz@athena" > before proceeding. I find it easier to think about this as a simple access control problem. Instead of asking the question: "What Athena principal does this map to before I map external names to internal names?", I ask the question: "Does stan@lcs have access to perform the requested operation?". For networked file systems, the requested operation is setting up the uid mapping. Presumably, there would be an ACL for each uid on the server; if you present tickets for a principal on the ACL, you would be allowed to map to that uid. To prevent a denial of service attack such as Ken described, the client program would have to request what uid to map to, instead of having the server decide. > In particular, when the present implementation runs into problems, the > question each time is whether it is because of a fundamental gap in > the Kerberos design or is it because some service (or Kerberos itself) > hasn't gotten around to implementing a nominally required feature. Since the access control question can be solved by having every service do its own access checking, I would agree that it's not a fundamental gap with the Kerberos design. Just a major inconvenience. If you consider the actions of the kerberos library as part of its design, then there is a design gap that should be fixed. If I can get LCS tickets on an Athena machine, I should be able to use LCS services with those tickets. Right now, the library uses /etc/krb.conf to determine the current realm, which hardwires the machine to a given realm. If the library were changed to remember the realm in the ticket file, then inter-realm operations would be more useful. That way, Jeff would not have to customize /etc/krb.conf every time he logs into a workstation to use the TELECOM realm. -stan --[0260]-- \f [0261] daemon@TELECOM.MIT.EDU Kerberos 11/23/87 15:13 (8 lines) Subject: protocol version 3 From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU What exactly is the difference between versions 3 and 4 of the Kerberos protocol? Is it reasonable to stop supporting version 3 at this time? Jennifer --[0261]-- \f [0262] daemon@TELECOM.MIT.EDU Kerberos 11/25/87 01:06 (19 lines) Subject: protocol version 3 From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: steiner@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: <steiner@ATHENA.MIT.EDU>'s message of Mon, 23 Nov 87 15:12:03 EST <8711232012.AA18671@BACH> From: <steiner@ATHENA.MIT.EDU> Organization: Project Athena, MIT Cambridge MA Date: Mon, 23 Nov 87 15:12:03 EST What exactly is the difference between versions 3 and 4 of the Kerberos protocol? Is it reasonable to stop supporting version 3 at this time? Jennifer Version 3 was the pre-realm version. Ie. there was just one realm "the" realm. Now is probably a very good time to drop its support. -Jeff --[0262]-- \f [0263] daemon@TELECOM.MIT.EDU Kerberos 11/29/87 16:42 (29 lines) Subject: Kerberos login suggestions From: treese@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Cc: treese@ATHENA.MIT.EDU Situation: 1. I ksu on my workstation. 2. I rlogin to paris as root. Problems: 1. A "finger" shows "root" logged in. When I notice root logged in on paris, I always check to see who it is (a little paranoia). 2. My environment is the vanilla root one; there is no way for me to customize it. Since login in this situation knows that it is me, logging in with a root instance, it seems that it could do the following: 1. Note the entry in utmp as something like "#treese" instead of "root". The '#' indicates that this is really a root login, similar to the '*' used on a login server. (this change may actually be in klogind; I don't recall now who does that). 2. login could set two environment variables, KUSER and INSTANCE that could be used in .login/.cshrc files to customize the environment. Comments? - Win --[0263]-- \f [0264] daemon@TELECOM.MIT.EDU Kerberos 11/29/87 17:54 (16 lines) Subject: re: Kerberos login suggestions To: <treese@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU, treese@ATHENA.MIT.EDU In-Reply-To: <treese@ATHENA.MIT.EDU>'s message of Sun, 29 Nov 87 16:39:54 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > 1. Note the entry in utmp as something like "#treese" instead of > "root". The '#' indicates that this is really a root login, > similar to the '*' used on a login server. (this change may > actually be in klogind; I don't recall now who does that). If utmp has room, how about noting the entry as "treese.root". Using the full (external) Kerberos name.instance also extends in an obvious way to cover some other cases that may come up. Jerry --[0264]-- \f [0265] daemon@TELECOM.MIT.EDU Kerberos 11/29/87 17:54 (54 lines) Subject: why knetd? From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU After reviewing the archives of this list, and thinking about the upcoming distribution of kerberos, I think it's time to once again ask the question "why knetd?" Is there a valid reason for its existence and should we ship it or admit it was ill-conceived and punt while it's still easy. Bascially there seem to have been two factors which motivated the development of knetd: 1) a desire for a "toolkit" layer dealing with the guts of authentication/authorization so the applications don't have to. 2) conservation of well-known ports Now, nobody would pretend that #1 has been accomplished. Instead, knetd currently just accepts connections on the knetd port, reads a bit of information including the "service" name, forks the appropriate server (from knetd.conf). No useful authentication/authorization is done either for client or server! Indeed most servers will need to do their own authorization in any case. So all we are left with is an de-multiplexer, which allows us to succeed in #2, conservation of well-known ports. But I would argue that two years later (or whatever), that has become a moot point. Why do you want to control growth of well-known ports? Becuase it's hard to add new ones? Adding new services is just not difficult. The majority of people out there will have some Yellow Pages/Hesiod mechanism for updating information contained in /etc/services, so it does not requiring updating of thousands of files. Because you have to register it with the NIC? Better reason, but people these days hardly seem to care. And what does using one port cost you? Mainting knetd.conf, knetd, and *losing* information when using netwatch/netstat! (Is that knetd connection a telnet, rcp, or pop connect?). The port name scheme for TCP/IP works fine, and has plenty for room for hundred's of new port assigments. Do we really need to have a kerberos scheme for naming network ports? Somehow I think knetd is a nice idea that just doesn't pan out. I don't seen the need for the extra complexity of explaining another daemon, another library, another config file, etc ... Comments? -- Jon --[0265]-- \f [0266] daemon@TELECOM.MIT.EDU Kerberos 11/29/87 22:37 (43 lines) Subject: re: why knetd? To: Jon Rochlis <jon@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Jon Rochlis <jon@ATHENA.MIT.EDU>'s message of Sun, 29 Nov 87 17:37:31 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > Bascially there seem to have been two factors which motivated the > development of knetd: > 1) a desire for a "toolkit" layer dealing with the guts of > authentication/authorization so the applications don't have to. > 2) conservation of well-known ports Jon, As I recall, number 1 was not directed at creation of a general toolkit but rather at the creation of a crutch for preexisting applications, to minimize the work required to mediate them with Kerberos. By providing an interface with an inetd-type handoff, the idea was that you could secure any inetd-implemented protocol without having to go inside its implementation; just tack on a standard prefix to the protocol that is stripped off by knetd before the handoff. I'd be interested in hearing how successful knetd was in achieving that goal. If it worked well, maybe the thing to do is simplify it a bit by using one well-known port per service. That way, knetd could probably be merged with inetd, leaving a single demon driven from a single configuration file. (I think that covers all the costs you listed!) On the subject of well-known ports, my intuition tells me there is something not quite right about a requirement to have an entry in Hesiod, the Yellow Pages, or /etc/services in order to offer a new service. Somehow it seems it should be possible to offer services without requirement of a central registry; if I know the name of the server (which is centrally registered) and the name it knows the service by, that ought to be sufficient. Central registration of service names should be possible, but not required. The knetd design was (perhaps too much) influenced by that consideration. (Of course lack of central registration does, by definition, make the life of netwatch harder.) Jerry --[0266]-- \f [0267] daemon@TELECOM.MIT.EDU Kerberos 11/29/87 23:29 (37 lines) Subject: Re: atalanta build From: billb@ATHENA.MIT.EDU To: <steiner@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Sun, 29 Nov 87 13:03:22 -0500. Jennifer, John and I tried to build the animal Sunday night. After many misadventures, including the editing of makefiles to reflect the new source tree layout, we discovered that a macro defined in include/prot.h has been ifdefed out of existence for the RT. Said macro is pkt_time_ws: #ifdef MUSTALIGN /* pkt_time_ws has to be rewritten for RT */ #else #define pkt_time_ws(packet) (unsigned long *) \ (packet->dat+5+strlen((char *)pkt_a_name(packet)) + \ strlen((char *)pkt_a_inst(packet)) + \ strlen((char *)pkt_a_realm(packet))) #endif MUSTALIGN Can't build the software until the macro is written for the RT. (The build fails when trying to construct the programs in the server directory; both kerberos and kerberos_slave need the macro.) Anyone out there have time to fix this? ASAP? Regards, etc. Bill and John --[0267]-- \f [0268] daemon@TELECOM.MIT.EDU Kerberos 11/30/87 00:17 (38 lines) Subject: Kerberos login suggestions From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: treese@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU, treese@ATHENA.MIT.EDU In-Reply-To: <treese@ATHENA.MIT.EDU>'s message of Sun, 29 Nov 87 16:39:54 EST <8711292139.AA06453@CIROCCO.MIT.EDU> From: <treese@ATHENA.MIT.EDU> Date: Sun, 29 Nov 87 16:39:54 EST Situation: 1. I ksu on my workstation. 2. I rlogin to paris as root. Problems: 1. A "finger" shows "root" logged in. When I notice root logged in on paris, I always check to see who it is (a little paranoia). 2. My environment is the vanilla root one; there is no way for me to customize it. Since login in this situation knows that it is me, logging in with a root instance, it seems that it could do the following: 1. Note the entry in utmp as something like "#treese" instead of "root". The '#' indicates that this is really a root login, similar to the '*' used on a login server. (this change may actually be in klogind; I don't recall now who does that). 2. login could set two environment variables, KUSER and INSTANCE that could be used in .login/.cshrc files to customize the environment. Comments? Good idea. All the work is in "login". klogind merely tells login that "root" is trying to login, "login" is the guy who looks at the kerberos data to see who it really is. -Jeff --[0268]-- \f [0269] daemon@TELECOM.MIT.EDU Kerberos 11/30/87 12:18 (55 lines) Subject: Re: why knetd? From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: Rochlis <jon@ATHENA.MIT.EDU>, kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Sun, 29 Nov 87 22:33:20 EST, By providing an interface with an inetd-type handoff, the idea was that you could secure any inetd-implemented protocol without having to go inside its implementation; just tack on a standard prefix to the protocol that is stripped off by knetd before the handoff. But that's not what knetd does! All knetd mediates is who gets forked (ignoring internal services). The only difference between knetd and inetd is that knetd uses a string passed as the first bytes in the data stream to name the service and inetd uses the internet port of the destination address to decide what to fork. knetd does *not* currently do anything which resembles "securing any inetd-implemented protocol with having to go inside of its implementation." You still have to muck with the application, if only to read off the ticket (the second thing in the data stream) and do authorization. I'd be interested in hearing how successful knetd was in achieving that goal. If it worked well, maybe the thing to do is simplify it a bit by using one well-known port per service. That way, knetd could probably be merged with inetd, leaving a single demon driven from a single configuration file. (I think that covers all the costs you listed!) It's a total failure in my opinion. The only vaguely useful things are (Send Receive)KerberbosData which are only 15 lines long and should be provided as part of libkrb. All they do is take a file descriptor, service name, host name (really service instance of course), write (/read) the service name on the file descriptor, do a mk_ap_req (/rd_ap_req) and write (/read) the ticket on the file descriptor. Somehow it seems it should be possible to offer services without requirement of a central registry; if I know the name of the server (which is centrally registered) and the name it knows the service by, that ought to be sufficient. That's what Sun did with portmapper. But it still argues against multiplexing the use of a single port. My point is no matter how you do it, you should be able to come up with a port to use to connect to your kerberos service. It doesn't matter to me whether its through a nameservice, /etc/services, portmapper or whatever. Knetd doesn't have to be in between. There are enough naming mechanisms already and adding one more piece of complexity with dubious functionality is not a good idea. I say knetd should be dropped while we still have the chance. -- Jon --[0269]-- \f [0270] daemon@TELECOM.MIT.EDU Kerberos 11/30/87 17:55 (15 lines) Subject: Re: Kerberos login suggestions To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: <treese@ATHENA.MIT.EDU>, kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Sun, 29 Nov 87 17:46:53 -0500. From: Win Treese <treese@ATHENA.MIT.EDU> > If utmp has room, how about noting the entry as "treese.root". Using > the full (external) Kerberos name.instance also extends in an obvious > way to cover some other cases that may come up. Unfortunately, utmp has only 8 characters for the username... - Win --[0270]-- \f [0271] daemon@TELECOM.MIT.EDU Kerberos 11/30/87 19:14 (12 lines) Subject: Re: Kerberos login suggestions To: Win Treese <treese@ATHENA.MIT.EDU> Cc: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU>, <treese@ATHENA.MIT.EDU>, In-Reply-To: Win Treese <treese@ATHENA.MIT.EDU>'s message of Mon, 30 Nov 87 17:51:37 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > Unfortunately, utmp has only 8 characters for the username... I was afraid of that. In that case, how does the * work on dialin passthrough? Does the last character of long usernames get truncated? Jerry --[0271]-- \f [0272] daemon@TELECOM.MIT.EDU Kerberos 12/01/87 11:16 (18 lines) Subject: Re: kerberos login suggestions. From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To: Saltzer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU >I was afraid of that. In that case, how does the * work on dialin >passthrough? Does the last character of long usernames get >truncated? Yes. But a comment in <utmp.h> implies that the size of '8' is not magic; however, I don't want to think about what would break if it were changed. Perhaps the fix _might_ be to stick the information into the "ut_host" field (which is 16 characters long) instead. I hate fixed-length-field databases. - Bill --[0272]-- \f [0273] daemon@TELECOM.MIT.EDU Kerberos 12/01/87 14:25 (13 lines) Subject: Re: kerberos login suggestions. From: Jim Bloom <jb%cs.brown.edu@RELAY.CS.NET> To: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Cc: Saltzer@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Tue, 01 Dec 87 11:15:59 EST. To change the size of the fields, you would have to look at every program that uses <utmp.h>. Many of them probably use string routines with a count of "8" instead of using a sizeof(). There may even be a few programs that assume null termination floating around. Bill can exercise a few of the bugs if they exist (8 char login). Jim --[0273]-- \f [0274] daemon@TELECOM.MIT.EDU Kerberos 12/01/87 14:41 (12 lines) Subject: Re: kerberos login suggestions. From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To: Jim Bloom <jb%cs.brown.edu@RELAY.CS.NET> Cc: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU>, Saltzer@ATHENA.MIT.EDU, In-Reply-To: Jim Bloom's message of Tue, 01 Dec 87 13:30:18 EST, Bill can exercise a few of the bugs if they exist (8 char login). I already have (several times), although only in locally developed code (John Romkey's rewrite of finger and one intermediate version of the locally-hacked MDQS). - Bill --[0274]-- \f [0275] daemon@TELECOM.MIT.EDU Kerberos 12/01/87 16:02 (9 lines) Subject: kerberos login suggestions. From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: jb%cs.brown.edu@RELAY.CS.NET Cc: wesommer@ATHENA.MIT.EDU, Saltzer@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Jim Bloom's message of Tue, 01 Dec 87 13:30:18 EST <8712011830.AA04155@archer.cs.brown.edu> Lets also not forget some programs that we have in binary form only that look at this file (like RTI Ingres for example). -Jeff --[0275]-- \f [0276] daemon@TELECOM.MIT.EDU Kerberos 12/01/87 16:11 (13 lines) Subject: Re: kerberos login suggestions. To: Jim Bloom <jb%cs.brown.edu@RELAY.CS.NET> Cc: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU>, Saltzer@ATHENA.MIT.EDU, In-Reply-To: Jim Bloom <jb%cs.brown.edu@RELAY.CS.NET>'s message of Tue, 01 Dec 87 13:30:18 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > To change the size of the fields, you would have to look at every > program that uses <utmp.h>. Many of them probably use string routines > with a count of "8" instead of using a sizeof(). There may even be a > few programs that assume null termination floating around. Wouldn't touch this one with a ten foot pole. Jerry --[0276]-- \f [0277] daemon@TELECOM.MIT.EDU Kerberos 12/07/87 14:06 (44 lines) Subject: timestamps in Kerberos: a question From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Timestamps are used in the Kerberos protocol to help detect replays of messages. The current status of timestamps in Kerberos is: they are described in the Technical Plan. They are partially implemented. Partially implemented means that the timestamps are inserted into messages from the user to Kerberos and in Kerberos' reply back to the user. (I haven't looked carefully at how they're used in the user->server exchange yet.) Although the timestamps are sent back and forth from user to Kerberos and back, no one ever looks at them. My question is this: use of timestamps to preclude replays is described inconsistently in the Technical Plan and I wonder which way it should be. 1. On page 8, 4 paragraphs into the "4. The Kerberos Authentication Model" section, it is stated that, in the part of the message which Kerberos returns to the user, which is encrypted in the user's private key, a "copy of the timestamp that was in the original request" is inserted. In other words, a copy of the timestamp which the client sent in the request, which the client keeps a copy of. 2. On the other hand, on page 24, in the Protocol description of the KKDS (section 7.1.2), it is stated that, in the reply from Kerberos back to the user, one of the components of the "cipher" (the part of the message encrypted in the user's private key, as above) is time_sec[kkds] or the time of day according to the Kerberos server. In the implementation, the second method is used. Could someone shed some light; which one is correct, and what is the rationale behind it? Thanks, Jennifer --[0277]-- \f [0278] daemon@TELECOM.MIT.EDU Kerberos 12/08/87 11:03 (11 lines) Subject: timestamps in Kerberos: a question From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: steiner@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: <steiner@ATHENA.MIT.EDU>'s message of Mon, 07 Dec 87 14:05:08 EST <8712071905.AA00929@BACH> Time stamps as a mechanism to detect replay in the user<=>kerberos interchange is unimportant (ie. nothing is gained for an intruder to replay a request of reply). The truely interesting case in in the user=>server interaction. -Jeff --[0278]-- \f [0279] daemon@TELECOM.MIT.EDU Kerberos 12/08/87 13:00 (57 lines) Subject: re: timestamps in Kerberos: a question To: steiner@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU, In-Reply-To: Jeffrey I. Schiller <jis@BITSY.MIT.EDU>'s message of Tue, 8 Dec 87 11:03:16 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > Time stamps as a mechanism to detect replay in the > user<=>kerberos interchange is unimportant (ie. nothing is gained for > an intruder to replay a request of reply). The truely interesting case > in in the user=>server interaction. A standard technique in checking validity of received, encrypted, material is that the encrypted data should always contain some item whose value the recipient can predict; if the recipient doesn't find that value, there is immediate warning that the receiver and sender aren't key-synchronized. This is, of course, a probabilistic test that improves in quality as the predictable data value grows in bit-length. The time-stamp could serve that function, in which case the return of the originator's time stamp would be more effective than inserting the server's time stamp. (Looking for a range of values isn't as good because it increases the chance that random data will be accepted.) In the case of the client-Kerberos interaction, there is another predictable data value that can serve this function, the name of the service for which this ticket is intended. If that service name is at least as long as a timestamp, (and assuming that the client checks the service name, which check it omits at its grave peril!) then it can serve the validity-checking function, and the timestamp serves only to catch certain denial-of-service attacks early in the ticket-analysis process. The detectable denial-of-service attack is for an interloper to intercept the reply and hand the client instead a duplicate of a reply to an earlier request for the same service but from months ago when it had a different key. If there is a time-stamp in the response, a careful client will immediately notice something amiss, rather than being bewildered when the service rejects the ticket as indecipherable. Bottom line for the client-Kerberos interaction: The predictable data in the enciphered part of the response consists of the service name and instance, and the time stamp. (The session key and encrypted ticket are advertised as unpredictable, the realm is filled in by the server, possibly different from what the client expected, the lifetime isn't controlled by the client, and even the version number could be from a range if we are in the middle of a protocol transition.) Since we don't control how long a service name is (could be one byte with a null instance), it is probably a good idea to also have the timestamp for the purpose of authenticating the encryption key, in which case it ought to be a copy of the client's timestamp. Anyone else care to try an analysis? This stuff is tricky and there are usually at least three different analyses, all of which sound equally plausible at first. (And all of which may turn out to be faulty.) Jerry --[0279]-- \f [0280] daemon@TELECOM.MIT.EDU Kerberos 12/08/87 14:45 (35 lines) Subject: Re: Kerberos timestamps From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER@DECWRL.DEC.COM In reply to the three previous messages on this. I agree with Jeff and Jerry. Jennifer's message refers to two distinct timestamps used for two different purposes. Both timestamps are completely implemented in the protocol messages. The first, sent from a client to Kerberos and back, is really just a bookeeping aid for the client. The Kerberos server COULD detect that the client's timestamp is too far out of whack and reject it, but in the version of the code I have (year and a half old) it doesn't. The second, the time_sec[kkds] (section 7.1.2) on the auth_reply message serves two purposes. First, it provides an authenticated timestamp of the KDC as a reference. The (old) client code does indeed check this time against the local time, and causes an error if it is too far off. The second purpose it serves is to detect modification of the reply message. Based on the way the crypto algorithms work, modifying only a single bit anywhere in the encrypted part of the message preceeding the time_sec[kkds] will cause approximately half of the bits in time_sec[kkds] to change. This would most likely result in a time_sec[kkds] that is out of range with respect to local time, so an error is caused. So this serves as a mechanism to protect the client against forged/modified messages returned from the Kerberos server. Timestamps are used in a similar fashion in the exchange between a client and server, sections 7.1.3, and are embedded in tickets. They can detect certain replay attempts and modification attempts. They are also used to enforce the expiration of tickets, based on the timestamp plus lifetime. Steve --[0280]-- \f [0281] daemon@TELECOM.MIT.EDU Kerberos 12/08/87 16:35 (44 lines) Subject: Re: Kerberos timestamps To: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: miller%erlang.DEC@decwrl.dec.com (Steve Miller)'s message of 8 Dec 87 14:46 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Steve, Thanks for your comments. Two clarifications: > The first, sent from a client to Kerberos and back, is really just a > bookeeping aid for the client. According to the protocol specification, the client's timestamp is returned to the client in the clear, rather than in the enciphered-in-the-client-key section of the response, so I don't see that it has any security value. Its only use seems to be as a hint in matching this response with the corresponding request. > The Kerberos server COULD detect that > the client's timestamp is too far out of whack and reject it, but in > the version of the code I have (year and a half old) it doesn't. > The second, the time_sec[kkds] (section 7.1.2) on the auth_reply message > serves two purposes. First, it provides an authenticated timestamp of the > KDC as a reference. If the Kerberos server were to check the client timestamp to verify that it is in range, and then return that timestamp in the enciphered-in-the-client-key section of the response, wouldn't that provide an equally good reference? [Aside: An interesting addition to the protocol could be a field returned from the Kerberos server to the client that gives the difference between the client's timestamp and the Kerberos server's clock. That would allow the client to know just what a server timestamp would contain (and exactly when the tickets expire), and also how far different the clocks are, so as to allow reporting drift.] Returning the client's original timestamp would also improve the reliability of modification detection, because the client could then look for exact match rather than for out-of-range value. Jerry --[0281]-- \f [0282] daemon@TELECOM.MIT.EDU Kerberos 12/08/87 17:45 (21 lines) Subject: More protocol discussion From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER@DECWRL.DEC.COM Sorry. Fat fingered the editor, didn't think it would send it off. The point of the redefined requirement is that the calling thread needs the ability to specify particular routines that block it after the request has been sent, and unblock it after the response has been received. Normally, we expect that this is specified at stub generation time or link time, for example to hook into the ADA run-time threads package. The architecture does not distinguish between the user and kernel mode parts of a call. For modeling purposes, assume there is just a single thread that executes in user and/or kernel mode until the message is physically on the wire, then blocks. Similarly, it unblocks as soon as the response is received, and continues executing to provide the reply arguments, et. al, to the user. The fact that a real kernel queues requests and has its own internal threads is not relevant to our architecture. Steve --[0282]-- \f [0283] daemon@TELECOM.MIT.EDU Kerberos 12/09/87 14:23 (53 lines) Subject: More re Kerberos From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU (Sorry about the misdirected message re threads et al. Ignore it. This is the one that was intended-- it may be a duplicate.) From: ERLANG::MILLER "Steve Miller" 8-DEC-1987 17:36 To: MILLER,MILLER Subj: Kerberos Jerry, First set of your clarifications, agreed -- that is all that I meant. >If the Kerberos server were to check the client timestamp to verify >that it is in range, and then return that timestamp in the >enciphered-in-the-client-key section of the response, wouldn't that >provide an equally good reference? > Almost agreed. There is a subtle difference. The kkds time represents events, and their sequence, at the Kerberos server(s), and is embedded in the ticket and used for calculating expiration times. This both gives a more uniform time reference, since the Kerberos server(s) are centrally managed, and creates a better partial ordering of events at the server and on the network. This is useful for debugging and auditing. For example, alternatively, if the time embedded in the ticket was the workstation time, you could get anomalous situations where the ticket was granted with a timestamp that preceeds the time at the Kerberos server when the client or server was defined (or modified, etc.,) in the Kerberos database. >[Aside: An interesting addition to the protocol could be a field >returned from the Kerberos server to the client that gives the >difference between the client's timestamp and the Kerberos server's >clock. That would allow the client to know just what a server >timestamp would contain (and exactly when the tickets expire), and >also how far different the clocks are, so as to allow reporting >drift.] Fine, as long as it is encrypted. Is it worth the price of encryption? >Returning the client's original timestamp would also improve the >reliability of modification detection, because the client could then >look for exact match rather than for out-of-range value. True, but not of practical concern. Even a single bit modification to the ciphertext will change roughly half of the following bits, so between the timestamp range and changes to the preceeding fields, all modifications will almost certainly be detected. In the worst case, checking the range will cause roughly 300/4,000,000,000 undetected errors, while checking the specific value will be lower by the factor of 300 (5minutes). Steve (enjoying a little bit of a diversion). --[0283]-- \f [0284] daemon@TELECOM.MIT.EDU Kerberos 12/11/87 16:08 (43 lines) Subject: [Steven L. Waldbusser: Vice Authentication] From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU You might be interested in the following paper. The whole paper can be found in /mit/jon/Random/Text/vice.PS (spify poscript figures and all). An abreviated lpt version of particular relevance to athentication can be found in the RMAIL file /mit/jon/Mail/awg ... -- Job INTEGRATING SECURITY IN A LARGE DISTRIBUTED SYSTEM M. Satyanarayanan Department of Computer Science Carnegie Mellon University 30 November 1987 ABSTRACT Andrew is a distributed computing environment that is a synthesis of the personal computing and timesharing paradigms. When mature, it is expected to encompass over 5000 workstations spanning the Carnegie Mellon University campus. This paper examines the security issues that arise in such an environment and describes the mechanisms that have been developed to address them. These mechanisms include the logical and physical separation of servers and clients, support for secure communication at the remote procedure call level, a distributed authentication service, a file-protection scheme that combines access lists with Unix mode bits, and the use of encryption as a basic building block. The paper also discusses the assumptions underlying security in Andrew and analyses the vulnerability of the system. Usage experience reveals that resource control, particularly of workstation CPU cycles, is more important than originally anticipated and that the mechanisms available to address this issue are rudimentary. --[0284]-- \f [0285] daemon@TELECOM.MIT.EDU Kerberos 12/16/87 15:22 (29 lines) Subject: [John D. Kubiatowicz: Re: Problems with /etc/knetd ] From: Jean Marie Diaz <ambar@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU Reply-To: ambar@ATHENA.MIT.EDU something to check for the beta release.. AMBAR To: Tony Della Fera <tony@ATHENA.MIT.EDU> Cc: vs-testers@ATHENA.MIT.EDU Subject: Re: Problems with /etc/knetd In-Reply-To: Your message of Wed, 16 Dec 87 12:51:37 -0500. <8712161751.AA00482@NESKAYA.MIT.EDU> Date: Wed, 16 Dec 87 14:53:24 EST From: John D. Kubiatowicz <kubitron@ATHENA.MIT.EDU> Do you have an /etc/krb.conf? How about /usr/etc/knetd.conf? Does /etc/services have kerberos ports defined? Do you have an /etc/srvtab (I'm assuming so, since you seem to have used knetd before)? | The knetd has a particularly nasty habit of merely exiting without | giving error messages. However, the above questions are pertinent. I | don't have immediate access to a 6.0 vs machine, so I can't check it | out. Incidentally, if I remember the correctly, the 6.0 release IS missing the link between /usr/etc/login.krb and /bin/login. Consequently, attempts to login via kerberos aren't successful. --[0285]-- \f [0286] daemon@TELECOM.MIT.EDU Kerberos 12/17/87 14:58 (92 lines) Subject: updating credits From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Kerberos documents, sources, and man pages are being updated, and new documentation and papers on Kerberos are being written. I'd like to make sure that we give credit where it's due, but since I wasn't here for most of Kerberos's history, I need help getting it right. Below is a list of credits. Please let me know of any people or categories I have left out or which should be changed. Jennifer ------- Designers Steven Miller Cliff Neuman Jeff Schiller Jerry Saltzer Contributors of ideas Jim Bloom Bill Bryant Dan Geer Jon Rochlis Win Treese Stan Zanarotti Main Implementers Mark Colan Steve Miller Cliff Neuman Jeff Schiller Stan Zanarotti Contributing Implementors John Barba Richard Basch Chris Reed Jennifer Steiner People who contributed but I don't know how or to what extent (help) Jim Aspnes Bob Baldwin Rob French John Kohl John Kubiatowicz Brian Murphy John Ostlund Ken Raeburn Bill Sommerfeld Ted T'so Documentors Bill Bryant What about people who have written 'Kerberized' applications? ------- Where credit is noted Technical Plan designers (authors) everybody else (acknowledgements) Kerberos introductory man page everybody? Individual man pages implementors of topic Individual source files original implementor anyone making major revisions Other documentation, such as Kerberos administrators manual documentor (author) Papers (we're writing one now for Usenix) everybody (acknowledgements) Anything else? --[0286]-- \f [0287] daemon@TELECOM.MIT.EDU Kerberos 12/18/87 18:54 (12 lines) Subject: misparsable/ambiguous error message To: kerberos@ATHENA.MIT.EDU From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> nfsid: can't find ticket (get credentials) (for instance paris realm Athena.MIT.EDU) I know there isn't a comma after the phrase "for instance" but I persist in misreading it anyway. A colon after the "for" would help disambiguate it a little. Jerry --[0287]-- \f [0288] daemon@TELECOM.MIT.EDU Kerberos 12/18/87 23:31 (26 lines) Subject: misparsable/ambiguous error message From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: Saltzer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Fri, 18 Dec 87 18:53:16 EST <8712182353.AA20989@HERACLES.MIT.EDU> Date: Fri, 18 Dec 87 18:53:16 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Originating-Client: <E40-391A-1.MIT.EDU> nfsid: can't find ticket (get credentials) (for instance paris realm Athena.MIT.EDU) I know there isn't a comma after the phrase "for instance" but I persist in misreading it anyway. A colon after the "for" would help disambiguate it a little. Actually this whole message is bogus. The problem (correct me if I am wrong, Jerry) was that your ticket granting ticket had expired. I see no mention of that fact in the error message. In fact the message itself conveys very little information (beside the obvious "something spazzed" to anyone but a kerberos guru, who having studied at the prescribed oracles knows what the message can fortell!). -Jeff --[0288]-- \f [0289] daemon@TELECOM.MIT.EDU Kerberos 12/19/87 18:21 (33 lines) Subject: Re: misparsable/ambiguous error message To: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> Cc: Saltzer@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Fri, 18 Dec 87 23:31:17 -0500. From: Win Treese <treese@ATHENA.MIT.EDU> > Actually this whole message is bogus. The problem (correct me > if I am wrong, Jerry) was that your ticket granting ticket had > expired. I see no mention of that fact in the error message. In fact > the message itself conveys very little information (beside the obvious > "something spazzed" to anyone but a kerberos guru, who having studied > at the prescribed oracles knows what the message can fortell!). Jeff is right, there's a real error message problem here. There are actually two problems: 1) nfsid isn't being very friendly. It's got serious problems with error messages, and those I will take care of fixing. But, 2) the Kerberos library error messages aren't very helpful, either. In the error message original sent by Jerry: nfsid: can't find ticket (get credentials) (for instance paris realm Athena.MIT.EDU) The "can't find ticket (get_credentials)" is from the Kerberos library table of error messages, and the rest is supplied by nfsid. The Kerberos error in this case isn't always clear, either. - Win --[0289]-- \f [0290] daemon@TELECOM.MIT.EDU Kerberos 12/20/87 02:12 (11 lines) Subject: Re: misparsable/ambiguous error message From: srz@ATHENA.MIT.EDU To: treese@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU Just to add some more fuel to the flames, the version of nfsid I copied over to LCS is losing on realm names. For instance, I can do an nfsid to host 'paris.MIT.EDU', but not for 'paris.mit.edu'. Another case where case-sensitivity is causing problems. This would result in the same error message that Jerry got... -stan --[0290]-- \f [0291] daemon@TELECOM.MIT.EDU Kerberos 12/20/87 12:44 (23 lines) Subject: Re: misparsable/ambiguous error message From: steiner@ATHENA.MIT.EDU To: Win Treese <treese@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Sat, 19 Dec 87 18:19:14 -0500. Win is right; several kinds of errors map to the "can't get ticket (get_credentials)" error. Would the following breakdown in error messages suffice? problem with ticket file (perror) could be it doesn't exit, can't be read, is locked by another application, is in bad format (not perror in this case; Kerberos bad-ticket-file-format error) ticket-granting ticket expired -- run "kinit" Rob French pointed this out. There's no point in going to Kerberos and asking for an application ticket when the ticket-granting ticket is expired. Jennifer --[0291]-- \f [0292] daemon@TELECOM.MIT.EDU Kerberos 12/20/87 14:48 (13 lines) Subject: Re: misparsable/ambiguous error message From: srz@ATHENA.MIT.EDU To: steiner@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU I think error messages should be as fine grained as possible. If the ticket file is locked, and we can determine that, we should state that in the message. Ticket granting ticket expired, unknown realm, time out-of-sync with kerberos, non-existent ticket file, etc, should all have different error messages; it makes tracking down errors much easier. With the current software, the only way of tracking down what "Can't get credentials" means is using dbx on the kerberos library. -stan --[0292]-- \f [0293] daemon@TELECOM.MIT.EDU Kerberos 12/20/87 16:13 (14 lines) Subject: Re: misparsable/ambiguous error message To: <srz@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: <srz@ATHENA.MIT.EDU>'s message of Sun, 20 Dec 87 14:48:06 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > I think error messages should be as fine grained as possible. I agree; Stan has the right handle on this problem. In an environment where many different things can go wrong, it is far more user-friendly to give a precise description of what happened. To a first approximation, every different test that can fail ought to result in a distinct error message. Jerry --[0293]-- \f [0294] daemon@TELECOM.MIT.EDU Kerberos 12/20/87 16:13 (17 lines) Subject: Re: misparsable/ambiguous error message To: <srz@ATHENA.MIT.EDU> Cc: treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: <srz@ATHENA.MIT.EDU>'s message of Sun, 20 Dec 87 02:12:14 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > Just to add some more fuel to the flames, the version of nfsid I > copied over to LCS is losing on realm names. For instance, I > can do an nfsid to host 'paris.MIT.EDU', but not for 'paris.mit.edu'. > Another case where case-sensitivity is causing problems. This would > result in the same error message that Jerry got... As I have indicated before, I would recommend fixing this particular problem by making Kerberos case-insensitive. Then, an improved error message ("realm does not match", or whatever) would become genuinely helpful. Jerry --[0294]-- \f [0295] daemon@TELECOM.MIT.EDU Kerberos 12/21/87 10:45 (32 lines) Subject: timestamps revisited From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU According to Steve's mail about timestamps, there are two timestamps sent back to the client from the authentication server: one is a copy of the client's original timestamp, sent in the clear; the other is the Kerberos timestamp, sent back to the client encrypted in the client's private key. In that case, the Technical Plan is misleading. It says ... Anyone could send such a message or intercept its response; that response, however, is usable only to the client named in the original request, because Kerberos seals the response by enciphering it in the private key of that client. The response contains three parts: the ticket (which itself is further sealed in the private key of the service), a newly-minted key for use in this client-server session, and a copy of the timestamp that was in the original request. I've modified it to read: ... Anyone could send such a message or intercept its response; that response, however, is usable only to the client named in the original request, because Kerberos seals the response by enciphering it in the private key of that client. The response contains three parts: the ticket (which itself is further sealed in the private key of the service), a newly-minted key for use in this client-server session, and the time of day according to the Kerberos server. A copy of the client's original timestamp is returned in the clear, as a bookkeeping aid to the client. Jennifer --[0295]-- \f [0296] daemon@TELECOM.MIT.EDU Kerberos 12/21/87 11:37 (53 lines) Subject: Re: Timestamps revisited From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU If you want to make the documentation entirely accurate, but without drowning the intent in the detail, you would have to make the further changes I am suggesting, marked by >> and CAPITALIZED. Also note that "time of day" is misleading, since the timestamp includes both the date and time. Steve. ----------- From: DECWRL::"steiner@ATHENA.MIT.EDU" "21-Dec-87 1044 EST" 21-DEC-1987 10:48 To: kerberos@ATHENA.MIT.EDU Subj: timestamps revisited According to Steve's mail about timestamps, there are two timestamps sent back to the client from the authentication server: one is a copy of the client's original timestamp, sent in the clear; the other is the Kerberos timestamp, sent back to the client encrypted in the client's private key. In that case, the Technical Plan is misleading. It says ... Anyone could send such a message or intercept its response; that response, however, is usable only to the client named in the original request, because Kerberos seals the response by enciphering it in the private key of that client. The response contains three parts: the ticket (which itself is further sealed in the private key of the service), a newly-minted key for use in this client-server session, and a copy of the timestamp that was in the original request. I've modified it to read: ... Anyone could send such a message or intercept its response; that response, however, is usable only to the client named in >> the original request, because Kerberos seals PART OF the response by >> enciphering it in the private key of that client. The SEALED PART OF THE response contains three parts: the ticket (which itself is further sealed in the private key of the service), a newly-minted key for use in this client-server session, and the TIMESTAMP according to the Kerberos server. A copy of the client's original timestamp is returned in the clear, as a bookkeeping aid to the client. Jennifer ======================================================================== Received: from ATHENA.MIT.EDU by decwrl.dec.com (5.54.4/4.7.34) id AA01776; Mon, 21 Dec 87 07:46:39 PST Received: by ATHENA.MIT.EDU (5.45/4.7) id AA16754; Mon, 21 Dec 87 10:44:54 EST Received: by BRAHMS.MIT.EDU (5.45/4.7) id AA00364; Mon, 21 Dec 87 10:44:48 EST Message-Id: <8712211544.AA00364@BRAHMS.MIT.EDU> Organization: Project Athena, MIT Cambridge MA --[0296]-- \f [0297] daemon@TELECOM.MIT.EDU Kerberos 01/16/88 15:29 (9 lines) Subject: accounts on atalanta From: barba@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Everybody in krbdev should now have an account on Atalanta. Problems to me. John Barba --[0297]-- \f [0298] daemon@TELECOM.MIT.EDU Kerberos 01/23/88 18:40 (63 lines) Subject: RFC1004 From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU RCC1004 - "A Distributed-Protocol Authentication Scheme" by Mills is of releavance to the kerberos crowd. Read kerberos server for cookie jar and it's just about the same thing (at least the main points are, 3-party authentication, client only talks to the authent server and then to its associate) ... -- Jon ---------------------- The purpose of this RFC is to focus discussion on authentication problems in the Internet and possible methods of solution. The proposed solutions this document are not intended as standards for the Internet at this time. Rather, it is hoped that a general consensus will emerge as to the appropriate solution to authentication problems, leading eventually to the adoption of standards. Distribution of this memo is unlimited. 1. Introduction and Overview This document suggests mediated access-control and authentication procedures suitable for those cases when an association is to be set up between multiple users belonging to different trust environments, but running distributed protocols like the existing Exterior Gateway Protocol (EGP) [2], proposed Dissimilar Gateway Protocol (DGP) [3] and similar protocols. The proposed prcedures are evolved from those described by Needham and Shroeder [5], but specialized to the distributed, multiple-user model typical of these protocols. The trust model and threat environment are identical to that used by Kent and others [1]. An association is defined as the end-to-end network path between two users, where the users themselves are secured, but the path between them is not. The network may drop, duplicate or deliver messages with errors. In addition, it is possible that a hostile user (host or gateway) might intercept, modify and retransmit messages. An association is similar to the traditional connection, but without the usual connection requirements for error-free delivery. The users of the association are sometimes called associates. The proposed procedures require each association to be assigned a random session key, which is provided by an authentication server called the Cookie Jar. The procedures are designed to permit only those associations sanctioned by the Cookie Jar while operating over arbitrary network topologies, including non-secured networks and broadcast-media networks, and in the presence of hostile attackers. However, it is not the intent of these procedures to hide the data (except for private keys) transmitted via these networks, but only to authenticate messages to avoid spoofing and replay attacks. The procedures are intended for distributed systems where each user i runs a common protocol automaton using private state variables for each of possibly several associations simultaneously, one for each user j. An association is initiated by interrogating the Cookie Jar for a one-time key K(i,j), which is used to encrypt the checksum which authenticates messages exchanged between the users. The initiator then communicates the key to its associate as part of a connection establishment procedure such as described in [3]. --[0298]-- \f [0299] daemon@TELECOM.MIT.EDU Kerberos 01/23/88 21:17 (61 lines) Subject: [desaree@venera.isi.edu: RFC1040 now Available] From: henry@GARP.MIT.EDU (Henry Mensch) To: kerberos@ATHENA.MIT.EDU This might be of interest here . . . Original-Subject: RFC1040 now Available Original-Date: Fri, 22 Jan 88 16:22:36 PST Original-From: Desaree Scott <desaree@venera.isi.edu> A new Request for Comments is now available from the Network Information Center in the online library at SRI-NIC.ARPA. RFC 1040: Title: Privacy Enhancement for Internet Electronic Mail: Part I: Message Encipherment and Authentication Procedures Author: J. Linn Mailbox: Linn@CCY.BBN.COM Pages: 29 Characters: 76276 pathname: RFC:RFC1040.TXT This RFC is the outgrowth of a series of IAB Privacy Task Force meetings and of internal working papers distributed for those meetings. This memo defines message encipherment and authentication procedures, as the initial phase of an effort to provide privacy enhancement services for electronic mail transfer in the Internet. Detailed key management mechanisms to support these procedures will be defined in a subsequent RFC. As a goal of this initial phase, it is intended that the procedures defined here be compatible with a wide range of key management approaches, including both conventional (symmetric) and public-key (asymmetric) approaches for encryption of data encrypting keys. Use of conventional cryptography for message text encryption and/or integrity check computation is anticipated. This RFC suggest a proposed protocol for the Internet community, and requests discussion and suggestions for improvements. Distribution of this memo is unlimited. Public access files may be copied from the <RFC> directory at SRI-NIC.ARPA via FTP with username ANONYMOUS and password GUEST. The normal method for distribution of RFCs is for interested parties to copy the documents from the NIC online library using FTP. Requests for special distribution should be addressed to either the author of the RFC in question or to NIC@SRI-NIC.ARPA. Unless specifically noted otherwise on the RFC itself, all RFCs are for unlimited distribution. Submissions for Requests for Comments should be sent to POSTEL@ISI.EDU. Requests to be added to or deleted from this distribution list should be sent to NIC@SRI-NIC.ARPA. --jon. --[0299]-- \f [0300] daemon@TELECOM.MIT.EDU Kerberos 01/26/88 18:12 (14 lines) Subject: authentication papers From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU I've received three papers on authentication from Karen Sollins: 1. "Authentication: A Practical Study in Belief and Action" by Mike Burrows, Martin Abadi, and Roger Needham (DEC SRC) 2. "Block Encryption" by David Wheeler (Cambridge University) 3. "Cascaded Authentication" by Karen Sollins (LCS) Unfortunately, they're hardcopy, but I'll make some xeroxes. If you'd like one, send me mail. --[0300]-- \f [0301] daemon@TELECOM.MIT.EDU Kerberos 01/26/88 22:48 (9 lines) Subject: Re: authentication papers From: Theodore Ts'o <tytso@ATHENA.MIT.EDU> To: <steiner@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Jennifer Steiner's message of Tue, 26 Jan 88 18:11:46 EST, Reply-To: tytso@ATHENA.MIT.EDU Could you make a copy of the three papers for me? Thanks! - Ted --[0301]-- \f [0302] daemon@TELECOM.MIT.EDU Kerberos 01/27/88 18:05 (17 lines) Subject: Authentication on remote machines From: treese@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Cc: treese@ATHENA.MIT.EDU This is a followup to a suggestion from Jeff and Jerry for our remaining timesharing systems. In the orignal suggestion, we need to prompt for a password when a user runs rlogin, so the remote timesharing machine can get Kerberos tickets for use on that machine. I propose that rlogin prompt for the password, and use the session key to encrypt it to send to the remote login daemon, which can then get tickets for the user. Comments? - Win --[0302]-- \f [0303] daemon@TELECOM.MIT.EDU Kerberos 01/27/88 19:15 (12 lines) Subject: Re: Authentication on remote machines From: srz@ATHENA.MIT.EDU To: treese@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU Why not do it right, and not require the password to be typed at all? The local machine could request tickets, which could be sent over encrypted to the remote machine. This would require a change to kerberos, so that one machine can request tickets that would be good for another machine. Of course, the lifetime couldn't exceed the lifetime of the original tickets. -stan --[0303]-- \f [0304] daemon@TELECOM.MIT.EDU Kerberos 01/28/88 19:49 (37 lines) Subject: Authentication on remote machines From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: srz@ATHENA.MIT.EDU Cc: treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: <srz@ATHENA.MIT.EDU>'s message of Wed, 27 Jan 88 19:14:35 EST <8801280014.AA01330@CHARON.MIT.EDU> From: <srz@ATHENA.MIT.EDU> Date: Wed, 27 Jan 88 19:14:35 EST Why not do it right, and not require the password to be typed at all? The local machine could request tickets, which could be sent over encrypted to the remote machine. This would require a change to kerberos, so that one machine can request tickets that would be good for another machine. Of course, the lifetime couldn't exceed the lifetime of the original tickets. -stan I like Win's suggestion. I do not like this one. The problem I see is that it would allow someone who walked up to your workstation, to propagate a TGT for you to some other machine. Example: User "B" is logged in to server "S". User "A" leaves his terminal unattended for a moment. User "B" walks up to "A"'s workstation and uses "rlogin" to get to "S". He then copies the tkt file created on "S" to another location and sets it to be publicly readable. He then grabs it from his session on "S" and now is in possession of a valid TGT for host "S" for user "A". Win's approach does not suffer from this problem. -Jeff P.S. This issue has come up and been debated before. ALL: Please check the archives of the "kerberos" mailing list for the old discussion. --[0304]-- \f [0305] daemon@TELECOM.MIT.EDU Kerberos 01/28/88 20:07 (20 lines) Subject: Authentication on remote machines From: bcn@JUNE.CS.WASHINGTON.EDU (Clifford Neuman) To: treese@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: treese@ATHENA.MIT.EDU's message of Wed, 27 Jan 88 18:02:54 EST <8801272302.AA26210@CIROCCO.MIT.EDU> I may be answering the worng question here, since I wasn't present for the discussion Win is following up, but anyway... Note that whatever mechanism you come up with for your remaining timesharing systems will get used in other circumstances also. Especially when Kerberos gets outside MIT. As such, the host one is connecting to will not always be trusted, and the user might not always want to give his password. As such, it must be possible for a user to choose not to give his password. Ideally, one would not have to give the remote system his password. Instead, rlogin could obtain a new ticket granting ticket for the user that is good from the remote address, it could then send that along with necessary session key, encrypted, to the remote system. ~ Cliff --[0305]-- \f [0306] daemon@TELECOM.MIT.EDU Kerberos 01/28/88 20:11 (9 lines) Subject: Addendum to previous message From: bcn@JUNE.CS.WASHINGTON.EDU (Clifford Neuman) To: treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Clifford Neuman's message of Thu, 28 Jan 88 17:06:22 PST <8801290106.AA16493@june.cs.washington.edu> Even if the mechanism does not involve sending ones password to the remote system, the user should still have the option of not even sending a ticket granting ticket. ~ Cliff --[0306]-- \f [0307] daemon@TELECOM.MIT.EDU Kerberos 01/28/88 20:24 (27 lines) Subject: Yet another addendum From: bcn@JUNE.CS.WASHINGTON.EDU (Clifford Neuman) To: treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Clifford Neuman's message of Thu, 28 Jan 88 17:06:22 PST <8801290106.AA16493@june.cs.washington.edu> The answer to Jeff's problem is to require that the response to a request from kerberos for a ticket with a different internet address come back encrypted in the users secret key instead of the session key. As such, the user would be required to type in his password again. I think it is important to minimize the number of machines that see the users password. Since the user is already logged into the local machine, we can presume that at one point, it had the password. If we use Wins suggestion, then once the password has been decrypted on the remote system, it has seen the password. If, howver, the password is used and discarded on the local machine, then, even if the remote machine has been compromised, it at most gets a ticket granting ticket good for a finite lifetime. Another issue that should be considered is the case of a user taking two rlogin hops. If we tell him that it is OK to type his password to rlogin, then when he makes the second hop, he is typing to to the rlogin on the remote machine, and it is not encrypted on the network between his local host and the remote host (even though it is between the first remote host and the second). ~ Cliff --[0307]-- \f [0308] daemon@TELECOM.MIT.EDU Kerberos 01/28/88 20:30 (17 lines) Subject: Re: Yet another addendum From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: bcn@JUNE.CS.WASHINGTON.EDU Cc: treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Clifford Neuman's message of Thu, 28 Jan 88 17:22:56 PST <8801290122.AA17383@june.cs.washington.edu> Date: Thu, 28 Jan 88 17:22:56 PST From: bcn@june.cs.washington.edu (Clifford Neuman) The answer to Jeff's problem is to require that the response to a request from kerberos for a ticket with a different internet address come back encrypted in the users secret key instead of the session key. As such, the user would be required to type in his password again. I'll buy off on this one... -Jeff --[0308]-- \f [0309] daemon@TELECOM.MIT.EDU Kerberos 01/29/88 08:42 (391 lines) Subject: [SYSTEM%CRNLNS.BITNET@CUNYVM.CUNY.EDU: distribution of sensitive software like DES] From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU The following appears to be relevant to Kerberos distributions; the modularity of our DES library does not appear to be as critical as it used to be. - Bill ------- Forwarded Message Resent-From: <security@aim.rutgers.edu> Date: Mon, 11 Jan 88 12:01 EST From: SYSTEM%CRNLNS.BITNET@CUNYVM.CUNY.EDU Subject: distribution of sensitive software like DES To: SECURITY@aim.rutgers.edu Resent-Date: Thu, 28 Jan 88 03:07 EST Resent-To: security-list@aim.rutgers.edu A recent discussion of DES software distribution on one of the Bitnet mailing lists came to a definitive resolution. Since this seems to be security related, I thought the readers of this list might find it interesting. Selden Ball system@crnlns.bitnet -------------------------------------------- Date: Fri, 8 Jan 88 21:43:42 -0500 From: Rayan Zachariassen <rayan@ai.utoronto> Subject: Re: DES To: "Selden E. Ball, Jr." <SYSTEM@CRNLNS> After you read the following article (referred to earlier by Dennis Ferguson), hopefully the DES discussion will disappear from this list. Date: Mon, 26 Oct 87 17:18:36 PST From: John Gilmore <hoptoad.UUCP!gnu@cgl.ucsf.edu> Subject: Export control does *NOT* apply to publicly available software. To: info-futures@bu-cs.bu.edu I researched this topic pretty thoroughly last year, by going down to the local Federal Building and wading through the rulebooks in Commerce Dept. library. What prompted me to do it was that I had a PD DES, that I had posted to comp.sources.unix, which a Canadian reader claimed was in violation of export laws. Rich $alz took the info I got and talked with the NSA (US National Security Agency) and some Boston-area cryptographers. The upshot was that NSA never came up with anything that contradicted the rules I found, and Rich posted not only the DES code, for worldwide distribution, but also the "crypt breaker's workbench" that decrypts the ancient Unix "crypt" command. Now, the way things wag with NSA is that if you ask them "Can I do this?" the answer is almost always "No". What you have to say is "Show me the rules that say I can't do this. I have some that say I can." The courts have regularly ruled that the government cannot enforce a policy which is not written down and equally applied to everyone (it's called "secret law"). So if what *is* written down supports you, they are stuck with it. They can't secretly make new laws and tell you later that you broke them. Since everyone else on this topic is shooting off their mouth without having done any research (now we have *two* Canadians who are falsely telling us what the US export law is -- thanks guys!), I figured I'd better post my full references to make it credible. Save this message; if I ever leave the net somebody had better have a copy to shout down the clowns again. From: gnu@hoptoad.uucp (John Gilmore) Subject: There are basically no export controls on public domain information. Date: 3 Oct 86 23:57:06 GMT I got into a hassle last month for posting a DES program to mod.sources because someone claimed that I was breaking the export control law. I spent the afternoon down at the Federal Building and discovered that export policy is in better shape than I thought. Basically, you can export any technical data to any destination if it "has been made generally available to the public in any form". This export is under a "general license" which is available to everyone without any paperwork. So, you should expect to see the DES posting again (it was canceled) and to see Crypt Breaker's Workbench on mod.sources soon. Here are the regs for all you policy hounds: Export Administration Regulations, Part 370.2, Definitions. "General License. A license established by the US Department of Commerce for which no application is required and for which no document is granted or issued. It is available for use by all persons, except those listed in and prohibited by the provisions of Supplement No. 1 to Part 388, and permits export within the provisions thereof as prescribed in the Export Administration Regulations. These general licenses are not applicable to exports under the licensing jurisdiction of agencies other than the Department of Commerce." Part 379.1, Definitions. "... All software is technical data." Part 379.2, Licenses to Export. "Except as provided in Part 370.3(a), an export of technical data must be made under either a US Department of Commerce general license or a validated export license. General licenses GTDA and GTDR apply to specific types of exports of technical data..." Part 379.3, General license GTDA: Technical Data Available to all Destinations. "A General License designated GTDA is hereby established authorizing the export to all destinations of technical data described in 379.3(a), (b), or (c) below: (a) Data Generally Available Data that have been made generally available to the public in any form, including-- (1) Data released orally or visually at open conferences, lectures, trade shows, or other media open to the public; and (2) Publications that may be purchased without restrictions at a nominal cost, or obtained without costs, or are readily available at libraries open to the public. The term "nominal cost" as used in 379.3(a)(2) above, is intended to reflect realistically only the cost of preparing and distributing the publication and not the intrinsic value of the technical data. If the cost is such as to prevent the technical data from being generally available to the public, General License GTDA would not be applicable. (b) Scientific or Educational Data ... (c) Patent Applications ..." ------ (end of first message) John here, talking to info-futures again. Chris Lewis (the first Canadian "expert") tried to pick the above to pieces, so I provided more explanation by private mail, now revealed to the info-futures readership for the first time ever! Date: Sun, 12 Oct 86 16:57:06 PDT From: gnu (John Gilmore) Subject: Re: Export control revisited Chris Lewis is still somewhat concerned about export control. I will try to explain the things he mentioned in his message of 8 October. >> "General License. A license established by the US Department >> of Commerce for which no application is required and for which >> no document is granted or issued. It is available for use by >> all persons, except those listed in and prohibited by the >> provisions of Supplement No. 1 to Part 388, and permits export > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > what is this section about? It lists people who have abused the general license in circumstances where it does not apply (eg shipping Vaxen to Russia). The idea is that you are innocent until proven guilty with regards to general licenses. I looked in the supplement and it was a 3-page list of names and cities. I was not on it. :-) >> within the provisions thereof as prescribed in the Export >> Administration Regulations. These general licenses are not >> applicable to exports under the licensing jurisdiction of agencies >> other than the Department of Commerce." I also got myself a copy of the regulations on cryptographic material export, but I didn't include it in my posting since it did not apply. It's listed under Part 399.1, supplement #1 (the Commodity Control List), "ECCN 1527A". It mentions that computers when combined with cryptographic software are covered under this ECCN, and says "Technical Note: No technical data or software controlled under this ECCN may be exported or reexported under General License GTDR." HOWEVER, we are exporting under General License GTDA, not GTDR, and this is a valid distinction. There is nothing in this ECCN section that precludes shipping cryptographic technical data (e.g. software) under general license GTDA. It also says, "Exporters requesting a VALIDATED LICENSE from the Department of Commerce must provide a statement from the Department of State, Office of Munitions Control, verifying that the equipment intended for export is under the licensing jurisdiction of the Department of Commerce." (emphasis mine) However, we are not requesting a validated license, we are using the general license, so this requirement does not apply either. In summary, I believe that the provisions of ECCN 1527A do not apply to public domain software, and we are OK. (I don't know of any other ECCN sections that apply either.) >> "A General License designated GTDA is hereby established >> authorizing the export to all destinations of technical data ... >> >> (1) Data released orally or visually at open conferences, >> lectures, trade shows, or other media open to the public; and >> >> (2) Publications that may be purchased without restrictions >> at a nominal cost, or obtained without costs, or are readily >> available at libraries open to the public. > 1) Has *this* DES program been formally published before? > 2) Can it legally be? Journals are supposed to be reviewed prior > to publication by one of the security agencies. We're a loophole. > 3) From another tack: can you make a DES program PD? (1) You elided the relevent section of the general license definition. "(a) Data Generally Available: Data the have been made generally available to the public IN ANY FORM, including... (1) and (2)...". (emphasis mine.) If something has been placed into the public domain and its location advertised to the Usenet community, or placed into a publicly accessible bulletin board, or posted to the Usenet, I claim that it has been made generally available to the public. (1) and (2) are not the only ways something can be made available to the public; they are just examples. (2) You can't be expected to know how things work in the U.S., being Canadian, but there is NO requirement that "journals are supposed to be reviewed prior to publication". We have a free press here. They tried to impose something like this and it didn't work. There is a "voluntary" system whereby authors can submit manuscripts to the NSA for review, but you are not even bound by the result -- they can only make suggestions. Mostly this is so they can recommend that you delete certain phrases that might give away what they are working on, and you are supposed to feel patriotic enough to go along. Presumably they could also try to go to court to stop you from publishing, but I don't think that has happened to any paper that has been voluntarily submitted under this program. (They did go to court against the magazine that published the "how to build an atom bomb" article.) You may be confused between mandatory review of journals and the Defense Department's right to review articles by people who they fund. If you are doing government-sponsored research, they can write the contract such that they get to OK any release of information derived from the sponsored research. But if I invent something on my own, without gov't money, I can publish it. (3) Public Domain-ness is a state of ownership. Since you can certainly own a DES program (e.g. AMD owns the copyright of the 8068 DES chip; ATT owns crypt(1)), you can also renounce its ownership and place it into the public domain. >You didn't include anything from 370.3 (or is that a typo?) either. It was not a typo. I don't have a copy of it here, but I don't think it applies to us. It's part of the "General Policy on Exports" section. >If this program were to be published in a technical magazine (presumably >safest in a real journal, not necessarily BYTE), then I'd feel safe >because they've already had approval. BYTE published one or two DES programs >ages ago, but this was before the NBS standard was formalized. Presumably >you could publish *that* program (6502 assembler), but not anything written >since then. I haven't seen a DES program since (though, I don't read all >that many journals...) This objection is covered above -- there is no required government review of publications here, and no government approval is required to publish. >I realize perfectly well that a court challenge on this would probably >find in our favor - as in, is DES in software really DES? But, I want >to ensure that we stay well clear of the shadow (if not the substance) >of the law. Actually, this is not relevant. The export control regs don't mention DES at all. They say "cryptographic equipment...designed to ensure secrecy of communications...or of stored information...and "software"... performing the functions of such cryptographic equipment", and then make a few exemptions for things like simple scrambled voice, video, or fax. >I can't help remembering the export restrictions on crypt (which, I believe >are still in effect *even tho* Enigma has been declassified for years), >AT&T's security package, Motorola and Intel's encryption boards etc. >I remember seeing discussions in trade journals 2-4 years ago about DES >export restrictions, code-breaking discussions, other more recent encryption >methods, but I can't remember where. None of the above stuff is "technical data generally available to the public", so it cannot be exported under the GTDA general license. Note that journal articles like the AT&T Tech Journal one on breaking crypt are generally available to the public, and they are being exported without trouble. Ditto for _Cryptologia_. It *DOES* take an export license to export non-public technical data, e.g. the Unix crypt command (licensed software), encryption boards (hardware, not technical data), etc. I must say that I felt the same way you do about this -- I had a general feeling that exporting this stuff was illegal, even though I thought it should be legal -- until I spent the time to research it. My opinion of the people who wrote US export law has gone up significantly. They really believe that if the US "public" can get it, it is exportable. FYI, here is the definitive story on how the "export restrictions on crypt" came about, from Dennis Ritchie himself. As you can see, no government agency ever said it could not be exported; AT&T and DEC simply decided that applying for an export license was too much trouble. I've also included a message from Gordon Moffett who says that Amdahl is now exporting Unix with the crypt command without trouble. From: dmr@research.UUCP Subject: export controls Date: 18 Sep 84 05:15:46 GMT Posted: Mon Sep 17 22:15:46 1984 As has been said, there is indeed a special "International Edition" of System V that differs from the ordinary system in that it lacks the crypt command, the encrypting features of ed and vi, and the encrypt entry of crypt (3). The crypt entry, which is used for passwords, is there, as is the underlying DES algorithm. Here's how it happened. About a year ago, I got mail from Armando Stettner saying basically, "Do you know of any problems with exporting crypt? Our lawyers [at DEC] are worried about it." I replied that such worries were utterly unfounded for a variety of sensible reasons. Now, as it has turned out, DEC was very justified in worrying about export controls in general; they have recently been fined (I think) $500,000 for the Vaxen that almost got sent to Russia. I conjecture that the earliest stages of this or a similar incident were already in progress and they were trying to be extra careful when they learned about crypt. At any rate, the DEC lawyers communicated their fears to AT&T, and the AT&T lawyers, equally cautious, sought government advice. The problem, you see, is that cryptographic materials are under export control. There is a thing called the Munitions Control Board that worries not only about machine guns going to Libya, but also about the crypt command going to England. In practice, the enforcement is done by the Commerce department. AT&T had a meeting with Commerce, the MCB, and NSA. The upshot was that they decided it would be simplest all around just not to export the crypt command. The gov't would almost certainly have granted the license, but (probably wisely) AT&T decided it wasn't worth the hassle. In technical terms, the situation is ludicrous. The encrypt subroutine is distinguished mainly by the excruciating care I took to make it an exact transcription of the algorithm published in the Federal Register, and by its slowness. NBS, the caretaker of DES standardization, is explicit that software implementations cannot be certified, so in that sense encrypt is not "real" DES. The underlying subroutine is still there, only the simple command that uses it is missing. So there is actually nothing to protect, and even if there were, it's not protected. Nevertheless, in the present situation we officially don't need an export license, whereas with the crypt command we would. In political terms, AT&T probably could have done better. Conservative and careful, they called a big meeting at which no one could possibly have put forward anything but official positions about encryption programs. Private checking with well-placed people in the appropriate agencies might well have done the job. But who knows? Dennis Ritchie ----- In article <3140@amdahl.UUCP> Gordon Moffett writes: Our Corporate legal advisor says that the restrictions against exporting encryption stuff has been lifted. We used to have two UTS's: one with the crypt(3) stuff for domestic customers, and one without export. We no longer distiguish between the two -- we now ship everything to non-USA customers just as to the USA sites. I've already gotten one letter about this, asking me for further confirmation that this is ``true''. First, PLEASE DON'T ASK ME! Talk to *your* companies' legal advisors, or to the Federal Government directly. Second, I am sure we would hear about it from the Federalees if our Corporation were making a mistake .... -- Gordon A. Moffett ...!{ihnp4,seismo,hplabs}!amdahl!gam [Back to Chris's comments: -- gnu] >The definitive answer would be to see whether the current listing of >restricted items includes DES, and in what forms. I don't think excerpts >from a different set of legislation is sufficient to answer this question. >Further, there *may* be a difference between "legislation" and "regulation" >here. DES restriction might *not* be enshrined in legislation, but come >out of some other department's regulatory powers. The second paragraph >I've quoted still leaves that whole question open. I have spent the time researching it, and I think it's OK to export. If you still think differently, please give details of the regulations or laws involved. I'm not interested in "maybes"; I have an answer that came straight from the rule books, and won't be swayed from it by anything less definitive. ------- End Forwarded Message --[0309]-- \f [0310] daemon@TELECOM.MIT.EDU Kerberos 01/29/88 11:36 (21 lines) Subject: Re: Yet another addendum From: Theodore Ts'o <tytso@ATHENA.MIT.EDU> To: bcn@june.cs.washington.edu Cc: treese@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Clifford Neuman's message of Thu, 28 Jan 88 17:22:56 PST, Reply-To: tytso@ATHENA.MIT.EDU Date: Thu, 28 Jan 88 17:22:56 PST From: bcn@june.cs.washington.edu (Clifford Neuman) The answer to Jeff's problem is to require that the response to a request from kerberos for a ticket with a different internet address come back encrypted in the users secret key instead of the session key. As such, the user would be required to type in his password again. Instead of doing that, why not modify Kerberos so that you can ask for a Ticket Granting Ticket for any arbitrary internet address? Or is that what you're suggesting already? (Your mention of "instead of the session key" leads me to assume that that's not what you intended.) - Ted --[0310]-- \f [0311] daemon@TELECOM.MIT.EDU Kerberos 01/29/88 13:37 (27 lines) Subject: rlogin From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM As Cliff pointed out, if multi-hop rlogins occur, none of the solutions that require typing in a password are secure, since rlogin sessions are not encrypted for privacy. I believe that once you have authenticated yourself the first time on your local system, you should be able to navigate throughout the network, given the appropriate authorizations, without having to type the password again anywhere. (Assume that the tgt doesnt't expire.) If you make it a rule that the password is NEVER entered again, you minimize the exposure on the wire or in another system. Whenever you walk away from your system, anyone else can capture it and "be" you for whatever intent they wish. I am not convinced that this is particularly different in terms of security for the different scenarios suggested -- the original tgt is still available. (Unless you start tying authorizations to the source address in addition to the kerberos name.) Some of the alternatives may make it simpler to do more damage, so it might be worth considering. I would go with along with what Cliff and Stan suggested, but probably not with having the user type in their password again. It loses big in the multi-hop case, and buys little otherwise. Steve. --[0311]-- \f [0312] daemon@TELECOM.MIT.EDU Kerberos 01/29/88 15:57 (15 lines) Subject: Re: [SYSTEM%CRNLNS.BITNET@CUNYVM.CUNY.EDU: distribution of sensitive software like DES] To: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Fri, 29 Jan 88 08:40:42 -0500. From: Win Treese <treese@ATHENA.MIT.EDU> > The following appears to be relevant to Kerberos distributions; the > modularity of our DES library does not appear to be as critical as it > used to be. > - Bill This material has already been turned over to Bill Hogue for evaluation. - Win --[0312]-- \f [0313] daemon@TELECOM.MIT.EDU Kerberos 01/29/88 16:53 (30 lines) Subject: rlogin From: bcn@JUNE.CS.WASHINGTON.EDU (Clifford Neuman) To: kerberos@ATHENA.MIT.EDU In-Reply-To: Theodore Ts'o's message of Fri, 29 Jan 88 11:32:39 EST <8801291632.AA22179@THOR.MIT.EDU> If I recall correctly, there is a field in the ticket for privileges (flags). I don't think this field has ever been used though. How about using one of these bits in the ticket granting ticket to indicate that one can use it to obtain a new ticket granting ticket for a new address. When a request is received for a new ticket granting ticket at a different IP address, the ticket granting server uses the bit in the existing ticket granting ticket to decide whether to return the response encrypted in the users key or the session key. As to how to decide what type of ticket to initially issue a user, one can base it on who the user is, recording the default in the same manner one could choose a default ticket lifetime. Alternatively, the default could be decided by the local machine. If it is a public workstation, one might be more careful, than if it is the users personal machine. As for the possibilty of someone changing the software on a public workstation to get the other type of ticket, if they do this, they might as well have it record the password. Finally, there should be a way for the user to overide the default when logging in, and as already mentioned, when rloggin in. The final question is what type of ticket granting ticket should be issued based on an existing ticket granting ticket. I propose the same type (unless the user chooses to overide the default). I can see arguments both ways though. ~ Cliff --[0313]-- \f [0314] daemon@TELECOM.MIT.EDU Kerberos 01/29/88 17:25 (9 lines) Subject: Re: flags and rlogin From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM Careful with the flags. At least one bit IS used to indicate byte ordering (create_ticket.c, decomp_ticket.c). This is becoming incredibly arcane... Steve --[0314]-- \f [0315] daemon@TELECOM.MIT.EDU Kerberos 01/30/88 12:00 (32 lines) Subject: re: Yet another addendum To: kerberos@ATHENA.MIT.EDU In-Reply-To: bcn@june.cs.washington.edu (Clifford Neuman)'s message of Thu, 28 Jan 88 17:22:56 PST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > The answer to Jeff's problem is to require that the response to a > request from kerberos for a ticket with a different internet address > come back encrypted in the users secret key instead of the session > key. As such, the user would be required to type in his password > again. That proposal smells almost right for the case when you WANT the user to type a password as part of moving to a new environment. The only problem I see is that if while logged in at A you rlogin to B, then from B you rlogin to C, you still end up sending your password over the net from A to B. The user could able avoid this exposure by always doing rlogins directly from A, but it requires some indoctrination to realize why it is worth the bother. However, I find very appealing Steve's argument that, once identified, you should be able to navigate without exposing your password at all, even to the local workstation. I suspect it is easier for a user to understand (and protect against) the exposure in leaving a workstation unattended than the exposure in doing rlogin from a to b to c. I think this is a fairly tough call, trading off subtle objectives. The discussion about flags leaves me cold. Noone will ever understand how to set them to get the right result. Jerry --[0315]-- \f [0316] daemon@TELECOM.MIT.EDU Kerberos 01/30/88 13:32 (21 lines) Subject: Yet another addendum From: bcn@JUNE.CS.WASHINGTON.EDU (Clifford Neuman) To: Saltzer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Sat, 30 Jan 88 11:57:00 EST <8801301657.AA14743@HERACLES.MIT.EDU> The way flags get set can be analagous to the way the ticket lifetime is set. Users can select a default. Those that want to overide the default can then use a special option to rlogin or login. Most people would have no need to do this, however. The above combined with the ability for the user to optionally select the lifetime of the ticket to be sent to the remote host will allow just the amount of trust that is needed to be placed in that host. The exact same mechanism could be used for proxies where either the local application knows exactly what services will be accessed by a remote service, or where it is willing to entrust the remote system with a short lived and not further propogatable ticket granting ticket. ~ Cliff --[0316]-- \f [0317] daemon@TELECOM.MIT.EDU Kerberos 01/30/88 17:51 (48 lines) Subject: Draft of Visa paper To: kerberos@ATHENA.MIT.EDU From: Win Treese <treese@ATHENA.MIT.EDU> ...is now available. LaTeX source and a PostScript file are in /mit/treese/Doc/draft_vis.{tex,PS}. I also printed one out if anyone wants to photocopy (you get double-sided that way). Note that it is still a draft, and it shows. The edges are still a little rough. - Win ------- Forwarded Message Received: by E40-PO.MIT.EDU (5.45/4.7) id AA07612; Sat, 30 Jan 88 15:31:50 EST Received: by ATHENA.MIT.EDU (5.45/4.7) id AA25362; Sat, 30 Jan 88 15:31:27 EST Received: by CIROCCO.MIT.EDU (5.45/4.7) id AA14401; Sat, 30 Jan 88 15:27:38 EST Path: bloom-beacon!mit-eddie!ll-xn!ames!pasteur!ucbvax!rt234.usc.EDU!estrin From: estrin@rt234.usc.EDU (Deborah L. Estrin) Newsgroups: comp.protocols.tcp-ip Subject: Visa paper draft Finally available Message-Id: <8801271816.AA00480@rt234.usc.edu> Date: 27 Jan 88 18:16:17 GMT Sender: usenet@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 16 Apparently-To: treese A DRAFT of the visa protocol paper mentioned long ago is now ready for limited distribution. Those of you who requested copies via usmail will receive them shortly. Those who requested copies via email, are asked to ftp it over to save the mail systems. If this is not possible for you let me know and i will send email or usmail. The draft isavailable by anonymous ftp on oberon.usc.edu in pub/draft_visa.tex It is still a Draft so we recommend that you only look at it if you are seriously interested in providing us with some feedback with the understanding that it is not finished and is not intended for broad distribution. thank you, Deborah Estrin (and co-authors Jeff Mogul of Digital and Gene Tsudik of USC) ------- End of Forwarded Message --[0317]-- \f [0318] daemon@TELECOM.MIT.EDU Kerberos 02/19/88 12:07 (312 lines) Subject: DEC's lawyers on DES To: kerberos@ATHENA.MIT.EDU, tony@ATHENA.MIT.EDU, champine@ATHENA.MIT.EDU, From: Win Treese <treese@ATHENA.MIT.EDU> Posted to the net; it seems to be relevant. - Win ------- Forwarded Message Received: by E40-PO.MIT.EDU (5.45/4.7) id AA10621; Fri, 19 Feb 88 00:47:20 EST Received: by ATHENA.MIT.EDU (5.45/4.7) id AA14352; Fri, 19 Feb 88 00:46:18 EST Received: by CIROCCO.MIT.EDU (5.45/4.7) id AA24282; Fri, 19 Feb 88 00:45:03 EST Path: bloom-beacon!husc6!bbn!uwmcsd1!ig!agate!ucbvax!DECWRL.DEC.COM!kent From: kent@DECWRL.DEC.COM Newsgroups: comp.society.futures Subject: Re: distribution of sensitive software like DES Message-Id: <8802162241.AA16997@armagnac.DEC.COM> Date: 16 Feb 88 22:41:07 GMT References: <8801281211.AA13780@decwrl.dec.com> Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 284 Apparently-To: treese This is a memo prepared by Digital's lawyers in response to John Gilmore's note of last October. Please note that I am only passing this along, without comment -- I know little if anything about the law, and am not in the least interested in engaging in debate about this issue, nor am I willing to pass such debate back to the lawyers piecemeal. chris - --------Begin Forwarded Message From: ehrgood@wnpv01.enet (TOM EHRGOOD, WNP, DTN 427-5698) To: @cryptomemo.dis, ehrgood Subject: Crypto Export Controls - Answer To Gilmore _____________________________ | | | | | | | | | d | i | g | i | t | a | l | I n t e r o f f i c e M e m o |___|___|___|___|___|___|___| TO: "TO" Distribution DATE: 16 February 1988 FROM: Tom Ehrgood CC: "CC" Distribution DEPT: Corporate Law TEL: (202) 383-5698 LOC: WNP SUBJECT: Controls Over The Export Of Cryptographic Software This memo answers points made in an October 27, 1987, memo by John Gilmore, which we received on January 28th. Gilmore's memo, which I am separately forwarding, argues that the posting of cryptographic software to certain widely available bulletin boards places that software in the "public domain," with the consequence that export licenses are not required for the exports of that software. Gilmore's analysis has been given wide distribution on various networks. Gilmore is mistaken in his analysis and in his conclusion. Given the high national security sensitivity of cryptography, generally, and DES encryption, specifically, it is important to set the record straight. The fundamental points that Gilmore gets wrong are: o Exports of cryptographic software are governed by the State Department's International Traffic in Arms Regulations ("ITAR"), not by the Commerce Department's Export Administration Regulations ("EAR"). Exports would be governed by Commerce's EAR only if State waived jurisdiction. o Although State Department regulations contain a "public domain" exemption for technical data, cryptographic software does not qualify as "technical data," and thus the "public domain" exemption does not apply. A legal analysis follows. \f DISCUSSION I. State Department Control Over Cryptographic Software ---------------------------------------------------- A. Cryptographic software is a "defense article" --------------------------------------------- Section 38 of the Arms Export Control Act authorizes the President to control the export and import of "defense articles" and "defense services." This statutory authority -- which includes the authority to to "designate those items which shall be considered as defense articles and defense services" -- was delegated to the Department of State, which in turn has implemented the statutory authority through promulgation of the International Traffic in Arms Regulations ("ITAR"), 22 C.F.R. Subch. M. The term "defense article" is defined in section 120.7 of ITAR to mean "any item designated in section 121.1," which contains the United States Munitions List. Category XIII of the Munitions List provides in paragraph (b) as follows: Speech scramblers, privacy devices, CRYPTOGRAPHIC DEVICES AND SOFTWARE (ENCODING AND DECODING), and components specifically designed or modified therefore, ancillary equipment, and protective apparatus specifically designed or modified for such devices, components, and equipment. (Emphasis added.) Since "cryptographic . . . software" is thus included on the United States Munitions List, it is a "defense article" subject to the State Department's ITAR controls over exports of such articles. At certain low thresholds, it may not be clear whether software containing certain encryption functionality in a technical sense constitutes "cryptographic software" within the meaning of Category XIII(b), above. Section 120.5 of ITAR establishes a procedure under which "[t]he Office of Munitions Control will provide, upon written request, a determination on whether a particular article is included on the United States Munitions List." Questionable cases may be resolved by following this procedure. Assuming that encryption software does constitute "cryptographic software" within the meaning of Category XIII(b), State Department export licenses are required, REGARDLESS OF WHETHER THE ENCRYPTION IS BASED ON THE DES ALGORITHM. The relevance of DES vs. non-DES lies in the ease with which licenses can be obtained, not in whether licenses are required. B. The State Department's "public domain" exemption does not apply to exports of "defense articles." --------------------------------------------------------- Part 123 of ITAR contains rules governing export licenses for the export of "defense articles." The basic rule is stated in Section 123.1(a) as follows: Any person who intends to export a defense article must obtain a license from the Office of Munitions Control prior to the export unless the export qualifies for an exemption under the provisions of this Subchapter. Part 123 sets forth a number of exemptions in sections 123.16 through 123.22. None is these exemptions covers the posting of cryptographic software on a bulletin board. Section 126.5 exempts from the licensing requirement any exports of unclassified defense articles or unclassified technical data to Canada for end-use in Canada or return to the United States. This exemption would be potentially applicable only if the ONLY exports that might take place as a result of the bulletin board posting were exports to Canada. (See section 120.10, which defines "export" to include "[s]ending or taking defense articles outside the United States in any manner.") In any event, care would have to be taken to ensure that applicable documentation requirements are met to invoke properly the exemption. Part 125 of ITAR contains rules governing exports of technical data. Section 125.1(a) provides: The export controls of this part apply to the export of technical data . . . . Information which is in the "public domain" (see section 120.18) is not subject to the controls of this chapter. Section 120.18 defines "public domain" as follows: "Public domain" means information which is published AND WHICH IS GENERALLY ACCESSIBLE TO THE PUBLIC: (a) Through sales at newstands and bookstores; (b) Through subscriptions which are available without restriction to any individual who desires to obtain or purchase the published information; (c) Through second class mailing privileges granted by the U.S. Government; or, (d) At liberaries open to the public. (Emphasis added.) This definition is a much more restrictive one than the analogous Commerce GTDA regulation analyzed by Gilmore: a bulletin board posting of information would not fall within ITAR's public domain unless that posting qualified under paragraphs (a)-(d) of section 120.18. A posting would not appear to so qualify. (This memo does not take any position on whether bulletin board posting would place Commerce-controlled technical data into Commerce's public domain; specific information about the technical data and the bulletin board would be necessary.) Regardless of how the ITAR "public domain" applies to bulletin board postings in general, the posting of cryptographic software cannot fall within the "public domain" provision, because, per section 125.1(a) above, the "public domain" provision applies to "technical data." Cryptographic software -- a "defense article" (see Section I.A above) -- does not constitute "technical data" under ITAR. More on that below. The term "technical data" is defined in section 120.21 as follows: "Technical data" means for purposes of this subchapter: (a) Classified information relating to defense articles and defense services; (b) Information covered by an invention secrecy order; (c) Information which is directly related to the design, engineering, development, production, processing, manufacture, use, operation, overhaul, repair, maintenance, modification, or reconstruction of defense articles. This includes, for example, information in the form of blueprints, drawings, photographs, plans, instructions, computer software and documentation. This also includes information which advances that state of the art of articles on the U.S. Munitions List. This does not include information concerning general scientific, mathematical or engineering principles. "Technical data" per this definition thus consists either of information "relating to defense articles" (par. (a)) or information directly related to the doing of things to "defense articles" (par. (c)). [Paragraph (c) is not relevant here.] Since cryptographic software is itself a "defense article," it cannot simultaneously qualify as "technical data." Moreover, different ITAR Parts govern exports of "defense articles" (Part 123) and exports of "technical data" (Part 125). Of course, not all encryption materials (DES or otherwise) necessarily take the form of "cryptographic software" controlled under Category XIII(b) of the Munitions List. Non-Category XIII(b) materials will qualify as "technical data" within the meaning of the section 120.21 and will thus be eligible for "public domain" treatment if the specific ITAR conditions apply. II. Commerce Department Controls Over Cryptographic Software -------------------------------------------------------- Section 370.10 of Commerce's Export Administration Regulations state the general rule that Commerce does not control exports of State Department-controlled items. Specifically, subsection (a) provides: (a) U.S. Munitions List. Regulations administered by the Office of Munitions Control, U.S. Department of State, Washington, D.C. 20520, govern the export of defense articles and defense services on the U.S. Munitions List. Thus, Gilmore's statement that the State Department's concerns about exports of crypt commands are "enforced" by Commerce is wrong. What has complicated the picture and confused Gilmore is that Commerce's Commodity Control List -- Commerce's counterpart to the United States Munitions List -- contains a category 1527A covering "cryptographic equipment . . . and software controlling or performing the function of such cryptographic equipment." Gilmore identified this regulatory control provision, but he misinterpreted it. Gilmore found the note in category 1527A, which states that Exporters requesting a validated license from the Department of Commerce must provide a statement from the Department of State, Office of Munitions Control, verifying that the equipment intended for export is under the licensing jurisdiction of the Department of Commerce. Gilmore mistakingly says, however, that "we are not requesting a validated license, we are using the general license, so this requirement does not apply . . . ." Gilmore missed the 1527A heading: "Validated License Required: Country Groups QSTVWYZ." These designated country groups comprise every country in the world except Canada. Consequently, a validated license issued by Commerce is required in order to make any export of 1527A-controlled cryptographic software. And because a validated license is required, exporters seeking such a license must, per the note quoted above, submit a State Department statement "verifying" that Commerce has jurisidiction over that cryptographic software. Such a statement would generally take the form of an ITAR section 120.5 commodity jurisdication determination. In sum, unless the State Department has issued a statement verifying Commerce jurisdiction over the cryptographic software that Gilmore has in mind, Commerce's controls do not apply. And without such a statement, Gilmore's analysis of section 379.3 of EAR (General License GTDA) is completely irrelevant. III. Conclusions ----------- Gilmore's conclusion that the posting of cryptographic software to a bulletin board places it in the public domain and thus exempts it from export licensing controls is flat-out wrong. U.S. law is clear: in order to export "cryptographic software" within the meaning of Category XIII(b) of the United States Munitions List to any country other than Canada, a State Department export license is required. If there is any reason to believe or suspect that a non-U.S. or non-Canadian national will gain access to that bulletin board, an export to a third country should be assumed and a license is required.. If there is any question whether specific encryption software constitutes "cryptographic software" within the meaning of Category XIII(b), clarification can be obtained under procedures established pursuant to section 120.5 of ITAR. A determination from State under 120.5 that it does not have jurisdiction is the prerequisite to bringing the control question into Commerce's export regulations. IT IS IMPERATIVE THAT NO DIGITAL EMPLOYEE ACT IN RELIANCE ON GILMORE'S ANALYSIS OR HIS CONCLUSIONS. - --------End Forwarded Message ------- End of Forwarded Message --[0318]-- \f [0319] daemon@TELECOM.MIT.EDU Kerberos 02/19/88 13:14 (51 lines) Subject: re: DEC's lawyers on DES To: kerberos@ATHENA.MIT.EDU Cc: tony@ATHENA.MIT.EDU, champine@ATHENA.MIT.EDU, wfhogue@ATHENA.MIT.EDU, Cc: rivest@LCS.MIT.EDU In-Reply-To: Win Treese <treese@ATHENA.MIT.EDU>'s message of Fri, 19 Feb 88 12:04:12 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > Posted to the net; it seems to be relevant. It certainly is. I was expecting that this is where the issue of DES exportability would come out, and I'm happy to see that someone has analyzed the issue with some clarity. We may see some more debate on the net, but I suspect that the conclusion isn't going to change. My interpretation of what it all means for Kerberos is as follows: 1. We should segregate and label the DES library from the rest of Kerberos; it is clearly subject to export licensing. 2. We should create a non-cryptographic replacement for the DES library (the present DES-NOOP might qualify, though its name is misleadingly wrong; if we can convince ourselves that a single XOR with an unchanging 56-bit key isn't a cryptographic transformation then that might be more suitable.) 3. We can't place the real DES library with the rest of M.I.T.'s copyrighted sources in a publicly accessible locker on Zeus; we should keep it protected on Paris, probably with the same level of access as for BSD sources. 4. When we ship Kerberos tapes that include the DES library, we need to insure that a. they are going to someone inside the U.S. b. they contain a clear notice of export control. 5. It appears that it may be necessary for M.I.T. to request an ITAR 120.5 determination as to whether the authentication parts of Kerberos require export license. Since they are not in themselves cryptographic in any way--they just depend on cryptographic elements for their operation to be secure--, the M.I.T. lawyers ought to study this question and the regulations carefully with the goal of convincing themselves that we don't have to ask. Unfortunately, until this step is completed, we may need to regard all of Kerberos as non-exportable. Bill Hogue: could you please start on step 5? I invite anyone interested to propose an alternate interpretation of any of this stuff. My interpretation leads to a lot more hassle than I like. Jerry --[0319]-- \f [0320] daemon@TELECOM.MIT.EDU Kerberos 02/19/88 17:07 (54 lines) Subject: Legal hassles. From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU The only flaw that I can see is their comments about whether or not publication on Usenet counts as being put in the public domain. I would argue that it is; I don't think that this impacts the overall decision though. >Section 120.18 defines "public domain" as follows: > > "Public domain" means information which is published AND WHICH > IS GENERALLY ACCESSIBLE TO THE PUBLIC: > (a) Through sales at newstands and bookstores; > (b) Through subscriptions which are available without restriction > to any individual who desires to obtain or purchase the published > information; > (c) Through second class mailing privileges granted by the U.S. > Government; or, > (d) At liberaries open to the public. > >(Emphasis added.) This definition is a much more restrictive one than >the analogous Commerce GTDA regulation analyzed by Gilmore: a bulletin >board posting of information would not fall within ITAR's public domain >unless that posting qualified under paragraphs (a)-(d) of section >120.18. A posting would not appear to so qualify. (This memo does not >take any position on whether bulletin board posting would place >Commerce-controlled technical data into Commerce's public domain; >specific information about the technical data and the bulletin board >would be necessary.) I think that category (b) holds here (note there is no limit to subscription costs here). There are several public-access timesharing systems which provide USENET access; anyone who can afford a terminal and modem can presumably subscribe to one of these for a fee. Also, the USENIX association sells newsfeed access to the USENET (through uunet.uu.net); anyone who wants to buy into this (and can afford the phone bill.) presumably can. Uunet also has a stash of software which has been anonymously FTP'ed from various sites on the arpanet, so that non-arpa sites can pick up a lot of public domain stuff as well. - Bill --[0320]-- \f [0321] daemon@TELECOM.MIT.EDU Kerberos 02/22/88 00:02 (34 lines) Subject: re: Legal hassles. To: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU>'s message of Fri, 19 Feb 88 17:06:38 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > The only flaw that I can see is their comments about whether or not > publication on Usenet counts as being put in the public domain. > > (b) Through subscriptions which are available without restriction > > to any individual who desires to obtain or purchase the published > > information; > I think that category (b) holds here (note there is no limit to > subscription costs here). 1. That interpretation is certainly the obvious one from the point of view of anyone familiar with how access to Usenet postings works in practice. But the question may rest on some obscure interpretation of "published" which may apply only to paper copies or things that libraries know how to store, or something. If someone out there does offer paper copies of Usenet postings to anyone willing to pay for them, then it would be clear that the papers copies are public domain. Lacking that, a test case leading to an argument before a judge might be required to settle the question. 2. It isn't really a flaw in their argument because they go on to argue (fairly convincingly) that the clauses that exempt public domain stuff from export licensing don't apply to munitions and crypto. (Where that leaves the people who have posted crypto things to Usenet isn't clear. The only thing that is clear is that the law can't work as intended; its main effect is to create hassles.) Jerry --[0321]-- \f [0322] daemon@TELECOM.MIT.EDU Kerberos 02/22/88 21:34 (28 lines) Subject: storage of keys in the database and byte order From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU I've discovered a nasty little gotcha in trying to set up a slave Kerberos running on an RT. It turns out that when keys stored in the database are stored encytped in the master key, which is all well and good, however the initial vector passed into pcbc_encypt is the key schedule (well, the first 64 bits of it anyway) *which is byte-order dependent*. This means that the internal formats of the database are different on different byte order architectures and you cannot go back and forth. All other uses of pcbc_encypt in the krb library use the key itself as the initial vector. Is there a reason for this difference? Is now the time to change the database touching programs to use the key as the initial vector? (I'm volunteering to do it.) I count the following programs as needing two or three lines of changes (as well as a conversion program for the existing databases) ... kerberos.c, kerberos_slave.c, admin_server.c, kdb_init.c, kdb_edit.c, ext_srvtab.c, kstash.c. Any others? I think this is important. -- Jon --[0322]-- \f [0323] daemon@TELECOM.MIT.EDU Kerberos 02/23/88 11:16 (16 lines) Subject: re: storage of keys in the database and byte order To: Jon Rochlis <jon@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Jon Rochlis <jon@ATHENA.MIT.EDU>'s message of Mon, 22 Feb 88 21:33:19 EST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > Is now the time to change the database touching programs to use the > key as the initial vector? (I'm volunteering to do it.) I count the > following programs as needing two or three lines of changes (as well > as a conversion program for the existing databases) ... kerberos.c, > kerberos_slave.c, admin_server.c, kdb_init.c, kdb_edit.c, > ext_srvtab.c, kstash.c. Any others? Is another approach to change those same programs to set up the key schedule differently depending on the byte order? Jerry --[0323]-- \f [0324] daemon@TELECOM.MIT.EDU Kerberos 02/23/88 11:24 (16 lines) Subject: Re: Storage of keys in the database and byte order From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM If my memory serves me correctly, the reason I did that was to minimize the exposure of the master key. It only needs to be exposed once, to convert into the key schedule, then can be cleared. I don't recall from the DES algorithm whether the key schedule is uniquely invertible to the key, but even if it is, it is considerably more work than snatching the key. I would suggest as an alternative that when the server is initialized use the master key to ECB encrypt a constant (roughly half the bits 1s, not a zero constant) once you have the schedule, then use the encrypted constant for the IV. That way, the master key can be cleared, and can not be recovered from the one-way encrypted IV. Steve --[0324]-- \f [0325] daemon@TELECOM.MIT.EDU Kerberos 02/23/88 11:29 (15 lines) Subject: More re storage of keys in the database... From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM Re Jerry's comments, I would strongly recommend against mucking with the byte order of the key schedule. I spent much more time fighting with byte order to get the correct answers than I did on the basic algorithm or making it go reasonably fast. If someone is looking for a significant project, the DES library could be rewritten, starting on a BigEndian machine (instead of a VAX) to make it cleaner and more readable. Since the DES algorithm is written in BigEndian order, it was a major hassle doing it on the VAX and then being able to get it to also work on the BigEndian RT PC. Steve --[0325]-- \f [0326] daemon@TELECOM.MIT.EDU Kerberos 02/23/88 11:39 (9 lines) Subject: DES NOOP From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM In the recent notes about exporting the DES library, there was mention of the DES NOOP library. Unfortunately, when I left this many moons ago I don't think it entirely worked, so someone will have to look at it carefully. Steve. --[0326]-- \f [0327] daemon@TELECOM.MIT.EDU Kerberos 02/23/88 21:42 (16 lines) Subject: Re: Storage of keys in the database and byte order From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU In-Reply-To: Steve Miller's message of 23 Feb 88 11:17, I don't recall from the DES algorithm whether the key schedule is uniquely invertible to the key, but even if it is, it is considerably more work than snatching the key. But if you have the key schedule you don't need the key at all! (Jeff thought of this right off the bat.) pcbc_encrypt doesn't even take the key as an argument, it only takes the key schedule. So I don't think the protecting the master key argument flies ... -- Jon --[0327]-- \f [0328] daemon@TELECOM.MIT.EDU Kerberos 02/24/88 04:21 (14 lines) Subject: key <-> key schedule. From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU From examining the key schedule algorithm, it appears to be relatively trivial to invert; each of the 16 iterations through the DES algorithm through just uses a different 48 bit subset of the 56 bit key. To recreate the key from the key schedule is just a matter of going through the key schedule putting the bits back where they came from, followed by recreating the parity bits (which are not used by the encryption algorithm). - Bill --[0328]-- \f [0329] daemon@TELECOM.MIT.EDU Kerberos 02/24/88 10:45 (14 lines) Subject: Re: re: Storage of keys... From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM Right, Jon and Jeff, though it is a bit more work. I can't remember any other reason to use the key schedule instead of the key. In the long term, if the use of DES ever migrates towards hardware, I think you are better off assuming you can't read the key or key schedule, and using a one-way encrypted constant. Then the key and key schedule arguments just become handles that point to something within the confines of the DES hardware. But for now I think the key is ok for the IV, provided you convert the database! Steve --[0329]-- \f [0330] daemon@TELECOM.MIT.EDU Kerberos 03/09/88 13:49 (44 lines) Subject: ticket/authenticator terminology To: kerberos@ATHENA.MIT.EDU, spm@ATHENA.MIT.EDU, bcn@ATHENA.MIT.EDU From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Bill Bryant just pointed out that there is a terminology problem in the documents describing Kerberos, in which there are three kinds of physical objects being discussed but only two labels for them; the documentation and the code are inconsistent in the way they apply the labels. This inquiry is to see if there are strong opinions one way or another as to which way we should resolve the inconsistency. The three physical objects are: Thing #1. The thing that Kerberos sends to a client, almost always called a "ticket". Thing #2. The thing that a client adds to a ticket to inhibit replay, called an "authenticator" in the Technical Plan, not specifically labeled in the code and accompanying comments. Thing #3. The thing that a client sends to a server, consisting of a Thing #1 and a Thing #2. Thing #3 is variously called a "ticket" (in the Technical Plan) and an "authenticator" (in the code and some manual pages.) On the one hand. . . The Technical Plan pattern of using the term "ticket" to describe both Thing #1 and Thing #3 supports the common usage "you have to present a ticket to the server to prove your identity." Describing the extra field created by the client as an "authenticator" is consistent with usual terminology in the cryptographic/authentication field. It is also consistent with first-cut, simplified descriptions of Kerberos that omit mention of the replay-prevention machinery, in which case there are only "tickets" to discuss. On the other hand. . . The pattern of labeling Thing #3 the "authenticator" seems to be fairly deeply embedded in variable names, comments in the code, and some manual pages. I'm inclined to suggest for new documentation the usage in the Technical Plan, and to change the manual pages to conform. Does anyone else have an opinion? Jerry --[0330]-- \f [0331] daemon@TELECOM.MIT.EDU Kerberos 03/14/88 15:16 (18 lines) Subject: Re: Terminology From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM I suppose that the only clean solution would be to come up with three entirely new terms, and fix everything. But that might be prohibitive, and cause excessive shock. Off the top of my head, I can't think of quite the right metaphor to fit these three pieces. "Ticket", in sense #1, is a bit of a misnomer, since it is reusable, which real "tickets" for a plane or game, etc., are not. "Ticket" in sense #3 is more accurate, but still misleading because "ticket" suggests authorization as well. So I would just as soon stay with Jerry's suggestion, with the possible addition of a qualifier on the #1 type ticket, if someone thinks of a good one, such as "raw ticket", "half ticket", etc. Steve --[0331]-- \f [0332] daemon@TELECOM.MIT.EDU Kerberos 03/14/88 17:14 (18 lines) Subject: Re: Terminology To: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: miller%erlang.DEC@decwrl.dec.com (Steve Miller)'s message of 14 Mar 88 14:14 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > So I would just as soon stay with Jerry's suggestion, with the possible > addition of a qualifier on the #1 type ticket, if someone thinks of a good > one, such as "raw ticket", "half ticket", etc. When things get thick enough that it is important to make the distinction, we could refer to thing #1 (the thing that comes back from Kerberos) as an "unvalidated ticket", while the thing that goes to the service is a "validated ticket". (To be completely consistent one could also rename thing #2 from "authenticator" to "validator", but I think that step isn't necessary. We simply can say that the authenticator acts to validate the ticket.) Jerry --[0332]-- \f [0333] daemon@TELECOM.MIT.EDU Kerberos 03/14/88 17:55 (22 lines) Subject: Terminology From: bcn@JUNE.CS.WASHINGTON.EDU (Clifford Neuman) To: Saltzer@ATHENA.MIT.EDU Cc: miller%erlang.DEC@DECWRL.DEC.COM, kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Mon, 14 Mar 88 17:12:13 EST <8803142212.AA22021@HERACLES.MIT.EDU> I like the term validator. How about the following: Ticket: What the client gets back from kerberos. (Thing #1) Validator: What the client sends to the client along with the ticket. (Thing #2) Authenticator: The ticket plus the validator. I would strongly discourage anyone from changing the meaning or name of "ticket". Ticket has always been used to describe what the client got back from kerberos, and nothing else. The only term that has been confused is authenticator which has been used to mean both the validator, and the ticket plus the validator. ~ Cliff --[0333]-- \f [0334] daemon@TELECOM.MIT.EDU Kerberos 03/14/88 18:03 (10 lines) Subject: Terminology From: bcn@JUNE.CS.WASHINGTON.EDU (Clifford Neuman) To: Saltzer@ATHENA.MIT.EDU Cc: miller%erlang.DEC@DECWRL.DEC.COM, kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Mon, 14 Mar 88 17:12:13 EST <8803142212.AA22021@HERACLES.MIT.EDU> The other thing to consider is that in the Usenix paper, thing #2 was refered to as an authenticator, and naming the combination of thing #2 and the ticket was was specifically avoided. ~ Cliff --[0334]-- \f [0335] daemon@TELECOM.MIT.EDU Kerberos 03/14/88 18:45 (51 lines) Subject: Re: Terminology From: steiner@ATHENA.MIT.EDU To: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Mon, 14 Mar 88 17:12:13 -0500. Thing #1 (ticket without authenticator) is like a T pass or a museum card. It says a certain person can use a certain service for a certain period of time. In practice, I can loan my museum card to my housemate, so in order to make sure the museum card is being used by the right person, the person's identity has to be verified. In real life, that could be done using a photo ID or a signature. In Kerberos it's done using Thing #2 (the authenticator). Calling Thing #1 the ticket and Thing #2 the authenticator seems okay, although as Steve says, usually real-life tickets can only be used once. The problem was that Thing #3 (authenticator + ticket) was also called an "authenticator" in the code, which is bad. I like Jerry's proposal of calling Thing #3 the same as what you call Thing #1, when speaking loosely, but having a more specific term when necessary. I also like the idea of having the specific term being an adjective in front of "ticket". But why "valid", why not "authenticated"? (If you call Thing #3 a "validated ticket", then what's a Thing #3 in which the identity in the authenticator and the identity in the ticket don't match? An "invalid validated ticket"? Besides, the ticket in and of itself is a perfectly valid thing; it's its use that's either valid or invalid. A Thing #3 can only be validated based on whether the authenticator and ticket match, like getting a signed check validated in the grocery store.) Either way, the problem of Thing #3 being referred to as an "authenticator" in the code would still have to be fixed. Modified nouns don't work very well in code (e.g., "authtkt" or "valtkt"); a new noun would be nicer. But there's no name for it in real life either; what do you call combinations of airline ticket/passport, or museum card/photo ID, or signed check/grocery ID? "Credentials" might work, but unfortunately, it's used for something else in the Kerberos code (the ticket/session key tuple, I think). Jennifer P.S. Why are we dealing with tickets at all? In the real life analogies, the ticket carries authorization, and the ID gives authentication. Whereas in Kerberos, all we're accomplishing with ticket+authenticator is authentication. ?? --[0335]-- \f [0336] daemon@TELECOM.MIT.EDU Kerberos 03/14/88 20:40 (12 lines) Subject: Re: Terminology From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: miller%erlang.DEC@DECWRL.DEC.COM Cc: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM In-Reply-To: Steve Miller's message of 14 Mar 88 14:14 <8803142014.AA04759@decwrl.dec.com> Half kidding: I have thought that perhaps we should change our terminology thus: Ticket becomes "T-Pass" and Authenticator becomes "Ticket." For a T-Pass is good an arbitrary number of times, by one user, for a given time duration. A ticket is useful only once. -Jeff --[0336]-- \f [0337] daemon@TELECOM.MIT.EDU Kerberos 03/14/88 21:17 (16 lines) Subject: Re: Terminology From: Theodore Ts'o <tytso@ATHENA.MIT.EDU> To: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> Cc: miller%erlang.DEC@DECWRL.DEC.COM, kerberos@ATHENA.MIT.EDU, In-Reply-To: Jeffrey I. Schiller's message of Mon, 14 Mar 88 20:39:11 EST, Reply-To: tytso@ATHENA.MIT.EDU Date: Mon, 14 Mar 88 20:39:11 EST From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> Ticket becomes "T-Pass" and Authenticator becomes "Ticket." For a T-Pass is good an arbitrary number of times, by one user, for a given time duration. A ticket is useful only once. I couldn't resist.... how about "token"? :-) --[0337]-- \f [0338] daemon@TELECOM.MIT.EDU Kerberos 03/14/88 21:21 (16 lines) Subject: Re: Terminology From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU Ticket becomes "T-Pass" and Authenticator becomes "Ticket." For a T-Pass is good an arbitrary number of times, by one user, for a given time duration. A ticket is useful only once. I couldn't resist.... how about "token"? :-) Does that make a set of authenticated principals in a circle a "token ring"? :-) :-) :-) --[0338]-- \f [0339] daemon@TELECOM.MIT.EDU Kerberos 03/15/88 22:52 (33 lines) Subject: Terminology From: bcn@JUNE.CS.WASHINGTON.EDU (Clifford Neuman) To: steiner@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: steiner@ATHENA.MIT.EDU's message of Mon, 14 Mar 88 18:43:40 EST <8803142344.AA06117@BACH> I agree with Jennifer. It seems that the technical plan (dated 10 April 1987), uses authenticator to refer to just the piece of data used to validate the ticket. Where both the ticket and the authenticator is needed it says that both are sent. It does not name the combination. This means that the only thing that doesn't necessarily agree with this naming convention is a few references in the code. Since many people have the Usenix paper, and quite a few people have the technical plan, I think we should stick with that terminology. If my recollection of the history is correct, authenticator originally refered to the combination. Since there was not originally a name for the information used to authenticate the prinicpal other than that in the ticket, people started refering to the additional information as the authenticator. Relatively quickly, people started to explicitly specify that they meant both the ticket and authenticator when they meant the combination. This all happend before the first real cleanup of the document, but after the initial code was written. Since the time that people, other than Steve and myself, worked on the code, ticket meant just that, authenticator was the additional information, and the combination of the two was refered to as such, and not named in itself. If anything should be changed, the code should be made to agree with the de facto usage of the terms. Language changes by use, not rule. In this case, I think it was for the better. ~ Cliff --[0339]-- \f [0340] daemon@TELECOM.MIT.EDU Kerberos 03/16/88 10:43 (39 lines) Subject: re: Terminology To: bcn@JUNE.CS.WASHINGTON.EDU (Clifford Neuman) Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: bcn@june.cs.washington.edu (Clifford Neuman)'s message of Tue, 15 Mar 88 19:46:47 PST From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > I agree with Jennifer. It seems that the technical plan (dated 10 > April 1987), uses authenticator to refer to just the piece of data > used to validate the ticket. Where both the ticket and the > authenticator is needed it says that both are sent. It does not name > the combination. This means that the only thing that doesn't > necessarily agree with this naming convention is a few references in > the code. Since many people have the Usenix paper, and quite a few > people have the technical plan, I think we should stick with that > terminology. The more recent draft (December 22, 1987) of the Technical Plan section follows this usage also. So far, I think everyone is in agreement that naming the thing that Kerberos sends back the ticket, and naming the thing that is added to a ticket the authenticator is the right approach. But this approach does leave one loose end beyond the code itself. The man page for the kerberos library [Kerberos(3)] has to name the structure that contains the ticket and the authenticator. The pointer to that structure is of type KTEXT and instances are currently named "authent" and "ticket" in synopses for {mk_ap_req, rd_ap_req} and {retrieve}, respectively. And the text says things like, "rd_ap_req takes an authenticator of type KTEXT, . . ." Under the agreed-upon convention, both labels are inappropriate. And unfortunately, these particular labels are visible to the application programmer. I suppose the thing to do is to rename the documentation variable, e.g., to tkt_auth, and to revise the text to say things such as "rd_ap_req takes a structure tkt_auth of type KTEXT that contains a ticket and an authenticator. . ." Jerry --[0340]-- \f [0341] daemon@TELECOM.MIT.EDU Kerberos 04/01/88 14:56 (105 lines) Subject: [Karen R. Sollins: just for fun on April 1] From: Ken Raeburn <raeburn@ATHENA.MIT.EDU> To: watchmakers@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU, sipb@ATHENA.MIT.EDU ------- Forwarded Message Date: Fri, 1 Apr 1988 13:21 EST From: "Karen R. Sollins" <sollins@XX.LCS.MIT.EDU> To: csr-people@XX.LCS.MIT.EDU, sra@XX.LCS.MIT.EDU, raeburn@ATHENA.MIT.EDU, msollins@BBN.COM, skent@BBN.COM, mb%computer-lab.cambridge.ac.uk@NSS.CS.UCL.AC.UK Subject: just for fun on April 1 >From reserch!dmr Fri Apr 1 09:22:22 PST 1988 Article 16 of news.announce.important: Path: sun!reserch!dmr >From: drm@reserch.uucp (Dennis Ritchie) Newsgroups: news.announce.conferences,news.announce.important Subject: First International Conference on Secure Information Systems Message-ID: <6.0225x10toda23@reserch.uucp> Date: 1 Apr 88 00:00:00 GMT Expires: 1 May 88 00:00:00 GMT Organization: AT&T Bell Labs, Unix Research Lines: 77 Xref: sun news.announce.conferences:250 news.announce.important:16 FOR IMMEDIATE RELEASE % FOR IMMEDIATE RELEASE The System Security Society of Southern Saskatchewan and the University of North Saskatechwan, Hoople campus announce the First International Conference on Secure Information Systems. This conference will feature a star studded panel of security and system experts from across the computing spectrum giving boring papers and comparing notes on security problems and possible solutions for existing and future operating systems and networking environments. Papers that will be given at the conference include: Richard Brandow, MacMag magazine: Computer Viruses as a form of social terrorism Dennis Ritchie, AT&T: Trojan Horses: Security Hole or Debugging Aid? Richard M. Stallman, Free Software Foundation: Passwords are a Communist Plot, or Give Me Access to Your Computer, Dammit! Chuq Von Rospach, Fictional Reality: A Secure USENET, an Exercise in Futility. Greg Woods, NOAO: Benign Dictatorships in Anarchic Environments: A Case Study Peter Honeyman, University of Michigan: Security Features in Honey-DanBer UUCP, or Why a Flat Name Space is Good. John Mashey, MIPS Computers: RISC security risks on Usenet Peter G. Neumann, SRI: The RISKS Of Risk Discussion, or Why This Conference Should be Classified. William Joy, Sun Microsystems: Unix is Your Friend. Donn Parker, SRI: Breaking Security for Fun and Profit: A Survey Lauren Weinstein, The Stargate Project: Stargate Encryption; Turning Free Data into Revenue. Mark Horton & Rick Adams, The UUNET project: Security Aspects of Pay for Play on USENET. C. Edward Brown, National Security Agency: How to get USENET feeds when you don't exist, A Case Study. Gordon Moffett, Amdahl Corp.: The USENET anarchist's cookbook; An alternative to the backbone cabal John Quarterman, University of Texas: The USENIX social agenda and national security; A summary of Usenet discussions from Star Wars to Tar Wars. Landon C. Noll & Ron Karro, Amdahl Corp.: Public Key Encryption in Smail3.1; How to send E-mail that the NSA can't read A. I Gavrilov, KGB, North American Information Bureau: Exporting American Military Information via Encoded USENET Signatures, Theory and Practice. The Conference will be held March 2 through 4, 1989 on the campus of the University of North Saskatechwan in Hoople, Saskatechwan, Canada. Registration is $195 until December 1, 1989, $295 afterward. For more information please contact Professor Peter Schikele, Department of Computer Science, University of North Saskatechwan, Hoople, Saskatechwan, Canada 1Q5 UI9. Note: This conference is a rescheduling of the conference originally scheduled for October, 1988 but cancelled after the United States Department of Commerce decided that the material was too sensitive to allow non-American citizens to read (including the material written by the Canadians on the committee). Because of this, the conference has been moved to Canada, which doesn't have a complete Freedom of Speech written into it's constitution, but has better things to do than worry about ways of circumventing civil rights. Americans having trouble getting their papers cleared for distribution at the conference should contact Professor Shikele about setting up a direct uucp link for the troff source. ------- End Forwarded Message --[0341]-- \f [0342] daemon@TELECOM.MIT.EDU Kerberos 04/04/88 14:08 (35 lines) Subject: converting a hostname into its realm From: John T Kohl <jtkohl@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU We have a need in the Kerberos system to determine the realm of a host given its Internet domain name. One convention established in a system in use at MIT is to take the domain name (e.g. MIT.EDU, S1.GOV) as the domain name. For historical reasons, this fails at MIT, so we need to translate the MIT.EDU into ATHENA.MIT.EDU, the realm in use for many MIT hosts. The easiest way to do this would be to have a translation table from domain names to Kerberos realms for those hosts whose realm != domain. An open question is whether the table should be compiled into the library function or disk-resident in a configuration file. (The latter is much more flexible, but may be prone to spoofing. comments?) I propose the following function for the Kerberos library: /* * krb_getrealm. Given a fully-qualified domain-style primary host name, * return the name of the Kerberos realm for the host. */ char * krb_getrealm(host) char *host; { take domain portion of hostname compare with a table of translations, translating if necessary: MIT.EDU -> ATHENA.MIT.EDU *.CMU.EDU -> CMU.EDU etc. return the domain name or translated name } --[0342]-- \f [0343] daemon@TELECOM.MIT.EDU Kerberos 04/04/88 14:21 (22 lines) Subject: converting a hostname into its realm From: probe@ATHENA.MIT.EDU To: jtkohl@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: John T Kohl's message of Mon, 4 Apr 88 14:05:58 EDT <8804041805.AA12219@ELRIC.MIT.EDU> Reply-To: Richard Basch <probe@ATHENA.MIT.EDU> A domain such as .MIT.EDU could theoretically contain several Kerberos realms. How do you provide for such a thing in the translation table that you suggest? For instance: ACHILLES.MIT.EDU might be in the realm TELECOM.MIT.EDU whereas ODIE.MIT.EDU could be in the realm ATHENA.MIT.EDU. I have not fully thought this out to the same extent that John has given his idea, but how would a query to the remote machine sound? For instance, if you open a connection to the remote machine on some arbitrary port (ie krb_query tcp/ip), you would get information about its Kerberos facilities. If this fails, you could then fall back onto a table. -Richard Basch --[0343]-- \f [0344] daemon@TELECOM.MIT.EDU Kerberos 04/04/88 14:29 (31 lines) Subject: Re: converting a hostname into its realm From: davy@INTREPID.ECN.PURDUE.EDU (Dave Curry) To: John T Kohl <jtkohl@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Mon, 04 Apr 88 14:05:58 EDT. From: John T Kohl <jtkohl@athena.mit.edu> Date: Mon, 4 Apr 88 14:05:58 EDT Subject: converting a hostname into its realm An open question is whether the table should be compiled into the library function or disk-resident in a configuration file. (The latter is much more flexible, but may be prone to spoofing. comments?) One lesson we learned here at Purdue, and still get bitten by with several old pieces of software: *never*, *ever* compile hostnames into a piece of code unless you have a real need to do so (which is very seldom). Especially with a library routine, you'll be recompiling the world every time something in your host configuration changes, or you add a new realm (well, a new real whose name != domain name). That's pretty gross, and you'll get sick of it fast. The voice of experience talking here. It should be reasonably easy to make the file un-prone to spoofing. (No symbolic links, link count = 1, correct owner and mode, you could even store a checksum in the binary and update it like "ps" updates itself, if you had to.) --Dave Curry --[0344]-- \f [0345] daemon@TELECOM.MIT.EDU Kerberos 04/04/88 14:44 (23 lines) Subject: Re: Converting a hostname into its realm From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM Two comments - First, I would not assume a one-to-one mapping from domain name to Kerberos realm. We intentionally did NOT use domains as management units to allow flexibility in configuring security management. So if you do a mapping, it should be from a full host name to Kerberos realm. You might want to try to optimize this by first trying a domain name based translation, with backup provision of some sort for a host name based translation. Second, in terms of security, it shouldn't make any differences. If the realm name is wrong, it could result in a denial of service, since you couldn't discover what Kerberos realm to talk to. In order to prevent a service from being spoofed, the mutual authentication option of Kerberos should be used -- but this is true whether within a single realm or across realms. The only difference is that if the realm is looked up transparently behind the users back, it is easier for them to believe they are talking to the right realm and server when indeed they are talking to a different realm and server. Steve. --[0345]-- \f [0346] daemon@TELECOM.MIT.EDU Kerberos 04/04/88 14:46 (19 lines) Subject: Re: converting a hostname into its realm From: John T Kohl <jtkohl@ATHENA.MIT.EDU> To: davy@INTREPID.ECN.PURDUE.EDU Cc: John T Kohl <jtkohl@ATHENA.MIT.EDU>, kerberos@ATHENA.MIT.EDU In-Reply-To: Dave Curry's message of Mon, 04 Apr 88 13:27:42 EST, From: davy@intrepid.ecn.purdue.edu (Dave Curry) Date: Mon, 04 Apr 88 13:27:42 EST It should be reasonably easy to make the file un-prone to spoofing. (No symbolic links, link count = 1, correct owner and mode, you could even store a checksum in the binary and update it like "ps" updates itself, if you had to.) It's probably even easier that that. Currently the /etc/krb.conf file is trusted; theoretically an attack there would be just as damaging as an attack on a translation table in some other file. John --[0346]-- \f [0347] daemon@TELECOM.MIT.EDU Kerberos 04/04/88 16:25 (70 lines) Subject: re: converting a hostname into its realm To: John T Kohl <jtkohl@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: John T Kohl <jtkohl@ATHENA.MIT.EDU>'s message of Mon, 4 Apr 88 14:05:58 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > We have a need in the Kerberos system to determine the realm of a host > given its Internet domain name. > > The easiest way to do this would be to have a translation table from > domain names to Kerberos realms for those hosts whose realm != domain. > > An open question is whether the table should be compiled into the > library function or disk-resident in a configuration file. (The latter > is much more flexible, but may be prone to spoofing. comments?) This is a job for a network inquiry, either of a name server or of the target host itself. The trick is to avoid adding an extra level of fragility to the system by introducing dependence on yet another network path and yet another host. A second trick is to keep the total number of network interchanges from doubling. I believe that spoofing is not really a problem. By virtue of its knowledge of the keys of its clients, Kerberos is self-protecting. The worst thing that can happen when someone slips you a bogus realm value is that you can't find a Kerberos that can give you a valid ticket. Since there are lots of ways for me to prevent you from finding your way to Kerberos or to the service itself, I don't think that providing info via an unprotected remote inquiry (or by a stored configuration file) represents a new exposure. I would be inclined to go at it sequentially: 1. Assume that the target service is in your Kerberos realm and ask your Kerberos for a ticket. (Your own realm is named in your own krb.conf.) This will answer 95% of the questions without adding any packets or delay. [The only thing that could go wrong is if your realm isn't the right one, but it happens to have a different service with the identical service name and instance. Since the instance for a service includes the fully qualified host name, I don't think that problem arises in practice.] 2. If your Kerberos responds "never heard of that service" then begin looking harder. Ask the host server itself at a krb-realm inquiry port. In order to do that, you first have to ask an IP name server for that server's IP address. Thus in the unusual case of cross-realm access there is a little extra network traffic. Question: is there any reason to assume that all the services offered by a given host are in the same realm? The present krb.conf provides only a single realm value, but there is no reason why that value couldn't be indexed by service. Note that the inquiry in part 2 can include the service name, and therefore the answer can be per-service. An alternative to step (2) would be to ask the IP name service for a record of type krb-realm for the target host. Since you have to be able to get to that name service to find the IP address anyway, this doesn't add any extra fragility, but I can't find any particular advantage to doing it that way, apart from automatic caching of the result in the name server cache. (I suspect that closely repeated inquiries for the realm name of the same server are infrequent enough that caching would have little effect on either performance or robustness.) And it would be more awkward to provide different answers for different services at the same host. [We could ask Hesiod to provide service-dependent realm info, but that would introduce a dependence on an additional set of servers, and also make running a Hesiod service a prerequisite for using Kerberos. Both of those properties are negatives.] Jerry --[0347]-- \f [0348] daemon@TELECOM.MIT.EDU Kerberos 04/04/88 17:08 (19 lines) Subject: re: converting a hostname into its realm From: srz@ATHENA.MIT.EDU To: Saltzer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU The problem with going at it sequentially is that you are assuming that the service names are going to be unique for each realm. For instance, if I am in the LCS.MIT.EDU realm, and I want to log onto KERBEROS.MIT.EDU, I would be asking for the service "rcmd.kerberos". If that service were registered in the LCS realm, I would get tickets valid for KERBEROS.LCS.MIT.EDU, not KERBEROS.MIT.EDU. Similar problems occur for generic service names, such as "zephyr.zephyr". I think the routine that John suggested should be defined, even though the exact implementation may be site-specific. That way, different sites can make tradeoffs between flexibility and the cost of network traffic. If we assume that different services on the same server may be in different realms, then perhaps the service name should be another argument to this routine. --[0348]-- \f [0349] daemon@TELECOM.MIT.EDU Kerberos 04/04/88 17:16 (45 lines) Subject: Re: converting a hostname into its realm From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: Richard Basch <probe@ATHENA.MIT.EDU> Cc: jtkohl@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Richard Basch's message of Mon, 4 Apr 88 14:19:43 EDT, I have not fully thought this out to the same extent that John has given his idea, but how would a query to the remote machine sound? For instance, if you open a connection to the remote machine on some arbitrary port (ie krb_query tcp/ip), you would get information about its Kerberos facilities. If this fails, you could then fall back onto a table. This is extactly what Jeff proposed quite a while ago. It sounds very attractive but I have been convinced that you have serious spoofing problems with this scheme. Bascially you allow somebody to point you at the wrong kerberos realm. Any realm you exchange ticket-granting ticket keys with would be able to do you serious harm. Imagine: Client in Kerberos realm A queries server in Kerberos realm C, what realm are you in? But nasty in Kerberos realm B replies, "I'm in realm B". Then client in A goes and gets tickets for the service but in the wrong realm (B not C). This works however, if A's Kerberos and B's Kerberos have exchanged a common key for inter-realm authentication. Realm B can then look just like realm C ... Basically if you use the simple query mechanism any realm you "trust" to do inter-realm sytle authentication can spoof any other realm you might want to deal with. The simplest way to deal with this is to know the hostname to realm mapping a priori. A good aproximatation to this is a table in the *local* filesystem. I think Richard's point about achilles.mit.edu and odie.mit.edu belonging to different realms and Rob's point made last week about CMU have ten million sub-domains which probably want to be mappped into the same kerberos realm, mean you have to have a do something like this: 1) look up the whole hostname in the table. if you find a realm use it. 2) otherwise look up the domain and use what you find While the table approach is nice, it is very attractive to be able to fall back on an algorithmic approach that will work the first time at a new site ... -- Jon --[0349]-- \f [0350] daemon@TELECOM.MIT.EDU Kerberos 04/04/88 18:56 (47 lines) Subject: Re: converting a hostname into its realm To: Jon Rochlis <jon@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Jon Rochlis <jon@ATHENA.MIT.EDU>'s message of Mon, 4 Apr 88 17:13:37 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > Basically if you use the simple query mechanism any realm you "trust" > to do inter-realm sytle authentication can spoof any other realm you > might want to deal with. Jon's argument is a very good one, but there is a part of it that I find slightly suspect. If I start things off by saying rlogin nutmeg.lcs.mit.edu without specifying which realm I want authentication in, presumably it is acceptable to connect me with any service that has an authenticable Kerberos identity of the form {rcmd, nutmeg, *}. If there is more than one such identity out there, I'm not convinced that getting a different one from the one I expected is an example of "spoofing". If I wanted to be connected to the one that is authenticated by kerberos.lcs.mit.edu, I should have said so. (Not that we currently have any syntax for saying so.) Kerberos provides a guarantee that you are talking to the service that you named, nothing more. If you provide an ambiguous name, then Kerberos can give only an ambiguous guarantee. That does mean that we need a way to allow people to specify unambiguously what service they want, including realm. > The simplest way to deal with this is to know the hostname to realm > mapping a priori. A good aproximatation to this is a table in the > *local* filesystem. One problem in the Athena environment is that this mapping would have to be per-user, wouldn't it? I don't think we want to get into the business of distributing system-wide tables of all the services that our users may use in other realms--adding a realm becomes a big job. But a per-user mapping is certainly a nuisance from a user-interface point of view--each user of the new realm has to add it. The real problem here appears to be that we want an authenticated realm default translation but we don't have an authenticated name service. So the local table is the only way to gain authenticity. A Kerberos-mediated name server would work as well. Jerry --[0350]-- \f [0351] daemon@TELECOM.MIT.EDU Kerberos 04/07/88 18:01 (107 lines) Subject: [eachus@mitre-bedford.arpa: Re: Question--Exporting the DES Algorithm] From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU Here's yet another opinion on DES exportability. - Bill ------- Forwarded Message Resent-From: <security@aim.rutgers.edu> Date: Fri, 11 Mar 88 17:55:05 EST From: eachus@mitre-bedford.arpa Subject: Re: Question--Exporting the DES Algorithm Sender: security@aim.rutgers.edu To: iconsys!bryan@uunet.uu.net Resent-Date: Wed, 6 Apr 88 23:01 EST Resent-To: security-list@aim.rutgers.edu The communications on exporting the DES algorithm which have appeared on the net recently are ALL correct. Huh? What did you just say? Read on. If something not subject to ITAR regulations is in the public domain, or "widely published" in the US, any citizen has a general license to export that information. If fact you may go overseas and speak publicly about what you know, and that will create information subject to license requirements, qualify it for general license, and export it. In other words, as an American citizen, your freedom of speech does not end at the waters' edge. (The country where you give the speech might not like what you say, but that is a different issue.) However, if you have information subject to ITAR regulations (no matter how you got it), you (or your company) can be prosecuted if you export it without State Department approval. See the "aid and comfort" clause in the constitution. Since some crypto information is clearly protected this way, most company lawyers "take the easy way out" and advise the company not to export any crypto software, without checking to see if it falls under the ITAR rules. (Apply standard disclaimers to what follows at least twice.) Last time I checked the "opinion" of State was that the DES algorithm was not subject to ITAR rules, although certain implementations (usually in the form of chips) were protected. Note that any government employee must be vague here, either he knows all the (classified) uses of crypto (and where is YOUR need to know) but can't tell you, or he doesn't know and can't be more specific. Therefore the standard procedure is to request an opinion before exporting crypto implementations, and if you don't get something on the order of "your application does not currently appear to fall under ITAR rules..." you talked to the wrong person (or you really are trying to export a 300 MIP DES chip 8^> ). If you do ACCIDENTLY export something subject to ITAR rules, you probably won't go to jail. In any violation, your rights to free speech must be shown to conflict with other constitutional powers, and the balence must tilt strongly against you before the ITAR regulations have any standing. If you intentionally violate the ITAR regs, however you might not have any constitutional protection. Let me give you a realistic example. You buy a Zowie 1000 portable computer and take it with you to England. Unbeknownst to you, the Zowie 1000 is used in a test system for Stealth Bomber ECM equiptment. You violated the ITAR regulations, but in the normal course of events, you won't even know it, because the DoD is unlikely to tell the Customs people which COTS (commercial off the shelf) equipment is used on black projects. In any case your violation was innocent and is probably protected. Second case, an ATE specialist on the Stealth project buys a Zowie 1000 for personal use because he uses it at work and likes it. He takes it (and some of his software) to England on his vacation. Dumb, and the security folk at the plant may have a long talk with him, but if it was innocent probably no long term repercussions. The third case of course, is he takes it with him and sells it to a foriegn agent for $100,000 -- and twenty years hard labor. What did you think the ITAR regulations were for anyway? So now you know why all the weasel words. If you take my (knowingly incoorect) advice (or someone elses) and innocently violate the ITAR regs, I'm guilty and you are not... "So you're going to Berlin on your vacation? Could you do me a favor? I have this package for my sister, but the mail takes weeks. I'll give you ten bucks for your trouble." You are only guilty if you think he's a spy and do it anyway... Each case is different, and an awful lot depends on intent. It would be nice if someone who has requested and recieved (from the government, not from a company lawyer) a recent opinion on the DES algorithm, would post the opinion here. If no one out in net land has a recent opinion, someone should go ahead and request one. The most recent opinion I have seen was two companies back, and things can change in either direction. Robert I. Eachus Disclaimer: Oh boy, do I need one here. If you have any intention of exporting anything which might be subject to ITAR rules, have your lawyer check with the State Department and get a written opinion. If you decide to create a test case and take it to the Supreme Court, I'll be glad to come cheer, but if you expect me to get up and say it was all my idea, you didn't read carefully. Second Disclaimer: I didn't ask MITRE, MITRE's lawyers, or anyone elses lawyers for their opinion of this message, but if I did, I'm sure that they would waffle at least as well as I did. ------- End Forwarded Message --[0351]-- \f [0352] daemon@TELECOM.MIT.EDU Kerberos 04/07/88 22:46 (19 lines) Subject: "athena-dist.mit.edu" IP number From: claris!clay@AMES.ARC.NASA.GOV (Clay Maeckel) To: info-kerberos@ATHENA.MIT.EDU I am interested in obtaining the documentation on Kerberos. I have FTP access using Apple's VAX but they have not installed the name server and depend on a very large /etc/hosts table. If I could get the actual IP number that would greatly help, or if hardcopy is relatively cheap then I could get it that way. Thanks for you help. Clay Maeckel * UUCP: {ames,apple,portal,sun,voder}!claris!clay (I know nothing!) * Arpanet: claris!clay@ames.arc.nasa.gov Claris Corporation * AppleLink: Maeckel1 * CompuServe: 73057,255 and as an extra feature, US Mail: Claris 440 Clyde Avenue Mountain View, CA 94043 --[0352]-- \f [0353] daemon@TELECOM.MIT.EDU Kerberos 04/07/88 22:56 (8 lines) Subject: athena-dist.mit.edu IP address. From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To: Clay Maeckel <claris!clay@AMES.ARC.NASA.GOV> Cc: kerberos@ATHENA.MIT.EDU ATHENA-DIST.MIT.EDU is currently at 18.71.0.38; it is an add-name for AENEAS.MIT.EDU. - Bill --[0353]-- \f [0354] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 09:56 (28 lines) Subject: Pls send Kerberos Documentation Hardcopy To: info-kerberos@ATHENA.MIT.EDU From: Steve Goldstein <goldstei@MITRE.ARPA> >If you can't ftp, and would like a hardcopy, send your request (and US/PTT mail address) to info-kerberos@athena.mit.edu. Thanks, I can FTP to another host, but it's quite remote from my actual location, and downloading PS to a Mac at 1200 Baud just won't hack it! Please send whatever you can to Steven N. Goldstein c/o The MITRE Corporation Suite 200A (West Wing) 600 Maryland Avenue, SW Washington, DC 20024 (202) 755-0676 One of my duties is formulating network security policy for NASA Science Internet, a new partner in the DARPA Internet. I want to do more than to repeat the old saw that "responsibility for security resides [wholly] in the host". If there's anything of a policy nature attached to releasing any info to me, please check with Dave Clark, LCS. Thanks again, Steve Goldstein --[0354]-- \f [0355] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 10:54 (12 lines) From: "Michael A. Shiels" <mshiels%watmath.waterloo.edu@RELAY.CS.NET> To: info-kerberos@ATHENA.MIT.EDU I am not in the Internet for FTP access so could I please have a snail-mail copy. Thanx. Michael A. Shiels 9-426 Hazel Street Waterloo, ON CANADA N2L 3P8 --[0355]-- \f [0356] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 11:33 (16 lines) Subject: Kerberos papers From: Robert Stroud <Robert_Stroud%newcastle.ac.uk@NSS.CS.UCL.AC.UK> To: info-kerberos@ATHENA.MIT.EDU Please could you send me hard copies of the papers on Kerberos advertised recently in RISKS. My snail-mail address is below. Unfortunately, I cannot ftp over the ARPANET from the UK. Thank you. Dr Robert J Stroud, Computing Laboratory, University of Newcastle upon Tyne, Claremont Road, Newcastle upon Tyne, ENGLAND NE1 7RU --[0356]-- \f [0357] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 11:45 (16 lines) Subject: Kerberos paper From: rmarks@ksp.unisys.com (richard marks) To: info-kerberos@ATHENA.MIT.EDU Dear Ms Steiner: Please send me a copy of the Kerberos paper. Below is my home address as my group is moving in a few weeks and US mail may get confused. Thank you, Richard Marks 931 Sulgrave Lane Bryn Mawr, PA 19010 --[0357]-- \f [0358] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 11:56 (19 lines) Subject: Kerberos Documentation To: info-kerberos@ATHENA.MIT.EDU Cc: Lee@TSCA.ISTC.SRI.COM From: lee@TSCA.ISTC.SRI.COM I would like to receive a copy of your documentation on MIT Project Athena's authentication service, Kerberos. I could not ftp to athena-dist.mit.edu. My address is as follows: Diane Lee SRI International MS EK358 333 Ravenswood Avenue Menlo Park, CA 94025 Thanks Diane --[0358]-- \f [0359] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 12:09 (15 lines) Subject: Kerberos doc request From: cam%columbia-pdn@ACC-SB-UNIX.ARPA (Chris Markle acc_gnsc) To: info-kerberos@ATHENA.MIT.EDU Sir or Madame, Please send Kerberos doc to me at the following address: Chris Markle ACC 10220 Old Columbia Rd. Columbia MD 21046 Thanks in advance for your attention to this request. Chris Markle --[0359]-- \f [0360] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 12:38 (13 lines) From: Quentin Fennessy <quentin%umb.edu@RELAY.CS.NET> To: info-kerberos@ATHENA.MIT.EDU Hi, I would appreciate info on the Kerberos project. My USMAIL address is : Quentin Fennessy 43 Billings St. West Roxbury, MA 02132 Thank you very much --[0360]-- \f [0361] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 12:56 (8 lines) Subject: Kerberos inquiries From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Apologies that people on the "kerberos" mailing list have been getting mail directed toward "info-kerberos". The situation is being rectified. Jennifer --[0361]-- \f [0362] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 13:23 (10 lines) Subject: where is athena-dist? From: sstovall@DAITC.ARPA (Steve Stovall) To: info-kerberos@ATHENA.MIT.EDU what is the address of athena-dist.mit.edu? its not in the master host table. steven stovall sstovall@daitc.arpa defense applied information technology center (703) 998 3452 --[0362]-- \f [0363] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 14:25 (12 lines) Subject: inquiries From: steiner@ATHENA.MIT.EDU To: info-kerberos@ATHENA.MIT.EDU To the people on the info-kerberos mail list: Due to the recent postings to net news, we're getting a lot of requests coming in to info-kerberos. I just wanted to let you know, so that these people don't get answers from 5 different Athenians, that I am answering them. Jennifer --[0363]-- \f [0364] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 15:30 (13 lines) Subject: Information Request From: Bob Schumaker <rts@ADEA-ATT.ARPA> To: info-kerberos@ATHENA.MIT.EDU I tried to ftp to athena.mit.edu and cannot get there (not was I able to find the arpa address). Could you send me the net address that I should ftp to? Bob Schumaker (schumaker@adea-att.arpa) The BDM Corporation 10116 36th Avenue Court SW Suite 300 Tacoma, WA 98499 --[0364]-- \f [0365] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 16:49 (11 lines) Subject: Kerberos info From: Brian Kaye <BDK%UNB.BITNET@MITVMA.MIT.EDU> To: info-kerberos@ATHENA.MIT.EDU Please send the documentaion on Project Athena's "KERBEROS" to Brian Kaye Computing Centre University of New Brunswick P.O. Box 4400 Fredericton, N.B. Canada E3B 5A3 --[0365]-- \f [0366] daemon@TELECOM.MIT.EDU Kerberos 04/08/88 18:04 (16 lines) Subject: Documents From: wyatt%cfa@HARVARD.HARVARD.EDU (Bill Wyatt) To: info-kerberos@ATHENA.MIT.EDU Unfortunately our LaserWriters can't quite hack the PostScript files in the pub/kerberos/doc directory on athena-dist. Soooo... Please send a copy to: William F. Wyatt Smithsonian Astrophysical Observatory, mail stop 20 60 Garden St. Cambridge MA 02138 Thanks.. --[0366]-- \f [0367] daemon@TELECOM.MIT.EDU Kerberos 04/19/88 16:34 (40 lines) From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU, sdsu!vinge@UCSD.EDU (Please copy Vernor on any replies as he is not on the mailing list.) Jennifer ------- Forwarded Message Received: by E40-PO.MIT.EDU (5.45/4.7) id AA21587; Sat, 16 Apr 88 23:17:58 EST Received: by ATHENA.MIT.EDU (5.45/4.7) id AA20583; Sat, 16 Apr 88 23:17:22 EST Received: from sdsu by ucsd.edu (5.58/UCSD-1.0) via UUCP; Sat, 16 Apr 88 21:18:15 PDT id AA06696 for steiner@ATHENA.MIT.EDU Received: by sdsu.SDSU.EDU (5.51/SDSU-ROOT) id AA28587 for delivery to ucsd!steiner@athena.mit.edu; Sat, 16 Apr 88 21:15:24 PDT From: sdsu!vinge@ucsd.edu (Vernor Vinge) Message-Id: <8804170415.AA28587@sdsu.SDSU.EDU> To: steiner@ATHENA.MIT.EDU Subject: kerberos question Date: Sat, 16 Apr 88 21:15:19 PDT Jennifer -- I just read "Kerberos: An Authentication Service for Open Network Systems". Thanks for showing me how to get it. I have a question (2.5 actually): Why is it necessary to include the client's IP address in the tickets and authenticators? Wouldn't the client's name suffice? Why is it necessary to include the server's name in the ticket? Thanks, - -- Vernor Vernor Vinge Dept Math Sci San Diego State University San Diego, CA 92182 ------- End of Forwarded Message --[0367]-- \f [0368] daemon@TELECOM.MIT.EDU Kerberos 04/19/88 18:53 (29 lines) Subject: Re: kerberos question From: jordan@UCBARPA.BERKELEY.EDU (Jordan Hayes) To: sdsu!vinge@UCSD.EDU Cc: kerberos@ATHENA.MIT.EDU From: sdsu!vinge@ucsd.edu (Vernor Vinge) Why is it necessary to include the client's IP address in the tickets and authenticators? Wouldn't the client's name suffice? I don't think there's a big problem just using the name, except that it's probably easier to code using an IP address, since it's a fixed length. The other problem is that you may not be able to resolve the name correctly all the time. Probably it's just easier. I'm not sure what the system does about gateways (those machines that have more than one IP address), but it probably checks all the addresses. Why is it necessary to include the server's name in the ticket? To make sure you get the right server? You need to tell the ticket-granting service which server you want, so I assume it's in the initial request. Who on the kerberos design-team is on this list? /jordan --[0368]-- \f [0369] daemon@TELECOM.MIT.EDU Kerberos 04/19/88 20:41 (36 lines) Subject: Re: client name vs. client IP address. From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To: jordan@UCBARPA.BERKELEY.EDU Cc: sdsu!vinge@UCSD.EDU, kerberos@ATHENA.MIT.EDU The IP address is sealed into the ticket in an attempt to increase security by a small amount. Someone attempting an attack by replay must be able to forge the `from' address of an IP packet, which is (marginally) harder than just sending packets, and is more likely to be noticed. The hostname is not in there because doing a nameserver/host table lookup will impose a pretty large network delay on the server end; in the current setup, the server side never blocks for I/O (not counting looking up the service key). Also, the domain nameserver is eminently spoofable, since its requests aren't authenticated... With respect to multi-homed clients (clients with more than one net address): this is a problem which hasn't really been resolved, as there is only one address in the packet. If the client binds all its outgoing sockets to its `primary' address, this ceases to be a problem, but this requires special code in each client application using kerberos. I suspect that there will be some sort of protocol rearrangement in the future which should include (a) having a list of addresses sealed in the ticket and (b) tagging each address with some sort of address family code (I'm pretty sure that DEC, IBM, and Apollo are all interested in using kerberos over their own proprietary protocols, and ISO is looming somewhere over the horizon...). The _service_ name is included in the ticket as an extra check to make sure that the ticket was decrypted correctly. - Bill --[0369]-- \f [0370] daemon@TELECOM.MIT.EDU Kerberos 04/20/88 14:11 (24 lines) Subject: Re: client name vs. client IP address. From: Jim Bloom <jb%cs.brown.edu@RELAY.CS.NET> To: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Cc: jordan@ucbarpa.berkeley.edu, sdsu!vinge@ucsd.edu, kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of Tue, 19 Apr 88 20:32:31 EDT. Those problem with multiply homed hosts are a real pain. When I initially installed kerberos, I found that gethostid(2) was used to determine the primary address. I didn't have the hostid set and the call returned zero. The IPC worked fine, but the protocol broke because different "addresses" were used. These problems occured on a host with only one interface. Using one address as primary on a multiply homed host and only using that address may lead to problems. Communication might be only one direction due to routing differences. At Brown, we have a host on network 128.148 and 128.121. I have seen cases where the route selected might go through some other machine, out to the internet and return. Selection of the correct address by the kernel would totally avoid the problem. For whatever reason, the hostid might be set to the wrong interface. Jim --[0370]-- \f [0371] daemon@TELECOM.MIT.EDU Kerberos 04/24/88 21:38 (132 lines) Subject: Kerberos and host addresses From: kazar+@andrew.cmu.edu Resent-From: Mike Kazar <kazar+@ANDREW.CMU.EDU> Resent-To: kerberos@ATHENA.MIT.EDU To: Mike Kazar <kazar+@ANDREW.CMU.EDU> Mike, Here's a copy of a recent discussion on the "kerberos" mail list which may be of interest. Jennifer ------- Forwarded Message Received: by E40-PO.MIT.EDU (5.45/4.7) id AA08666; Tue, 19 Apr 88 18:02:03 EST Received: by ATHENA.MIT.EDU (5.45/4.7) id AA09827; Tue, 19 Apr 88 17:49:26 EST Received: by ucbarpa.Berkeley.EDU (5.59/1.28) id AA11331; Tue, 19 Apr 88 15:48:44 PDT Date: Tue, 19 Apr 88 15:48:44 PDT From: jordan@ucbarpa.Berkeley.EDU (Jordan Hayes) Message-Id: <8804192248.AA11331@ucbarpa.Berkeley.EDU> To: sdsu!vinge@ucsd.edu Subject: Re: kerberos question Cc: kerberos@ATHENA.MIT.EDU From: sdsu!vinge@ucsd.edu (Vernor Vinge) Why is it necessary to include the client's IP address in the tickets and authenticators? Wouldn't the client's name suffice? I don't think there's a big problem just using the name, except that it's probably easier to code using an IP address, since it's a fixed length. The other problem is that you may not be able to resolve the name correctly all the time. Probably it's just easier. I'm not sure what the system does about gateways (those machines that have more than one IP address), but it probably checks all the addresses. Why is it necessary to include the server's name in the ticket? To make sure you get the right server? You need to tell the ticket-granting service which server you want, so I assume it's in the initial request. Who on the kerberos design-team is on this list? /jordan ---------- Received: by E40-PO.MIT.EDU (5.45/4.7) id AA09143; Tue, 19 Apr 88 19:33:39 EST Received: by ATHENA.MIT.EDU (5.45/4.7) id AA11308; Tue, 19 Apr 88 19:32:57 EST Received: by STEVE-DALLAS.MIT.EDU (5.45/4.7) id AA05954; Tue, 19 Apr 88 20:32:31 EDT Date: Tue, 19 Apr 88 20:32:31 EDT From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Message-Id: <8804200032.AA05954@STEVE-DALLAS.MIT.EDU> To: jordan@ucbarpa.berkeley.edu Cc: sdsu!vinge@ucsd.edu, kerberos@ATHENA.MIT.EDU Subject: Re: client name vs. client IP address. The IP address is sealed into the ticket in an attempt to increase security by a small amount. Someone attempting an attack by replay must be able to forge the `from' address of an IP packet, which is (marginally) harder than just sending packets, and is more likely to be noticed. The hostname is not in there because doing a nameserver/host table lookup will impose a pretty large network delay on the server end; in the current setup, the server side never blocks for I/O (not counting looking up the service key). Also, the domain nameserver is eminently spoofable, since its requests aren't authenticated... With respect to multi-homed clients (clients with more than one net address): this is a problem which hasn't really been resolved, as there is only one address in the packet. If the client binds all its outgoing sockets to its `primary' address, this ceases to be a problem, but this requires special code in each client application using kerberos. I suspect that there will be some sort of protocol rearrangement in the future which should include (a) having a list of addresses sealed in the ticket and (b) tagging each address with some sort of address family code (I'm pretty sure that DEC, IBM, and Apollo are all interested in using kerberos over their own proprietary protocols, and ISO is looming somewhere over the horizon...). The _service_ name is included in the ticket as an extra check to make sure that the ticket was decrypted correctly. - Bill ------------ Received: by E40-PO.MIT.EDU (5.45/4.7) id AA13767; Wed, 20 Apr 88 13:16:43 EST Received: by ATHENA.MIT.EDU (5.45/4.7) id AA24456; Wed, 20 Apr 88 13:08:50 EST Received: from relay2.cs.net by RELAY.CS.NET id ac00397; 20 Apr 88 10:26 EDT Received: from cs.brown.edu by RELAY.CS.NET id ab29151; 20 Apr 88 10:09 EDT Received: by cs.brown.edu (5.51/1.00) id AA28389; Wed, 20 Apr 88 09:29:58 EST From: Jim Bloom <jb%cs.brown.edu@RELAY.CS.NET> Message-Id: <8804201329.AA15527@archer.cs.brown.edu> To: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> Cc: jordan@UCBARPA.BERKELEY.EDU, sdsu!vinge@UCSD.EDU, kerberos@ATHENA.MIT.EDU Subject: Re: client name vs. client IP address. In-Reply-To: Your message of Tue, 19 Apr 88 20:32:31 EDT. <8804200032.AA05954@STEVE-DALLAS.MIT.EDU> Date: Wed, 20 Apr 88 09:29:11 EDT Those problem with multiply homed hosts are a real pain. When I initially installed kerberos, I found that gethostid(2) was used to determine the primary address. I didn't have the hostid set and the call returned zero. The IPC worked fine, but the protocol broke because different "addresses" were used. These problems occured on a host with only one interface. Using one address as primary on a multiply homed host and only using that address may lead to problems. Communication might be only one direction due to routing differences. At Brown, we have a host on network 128.148 and 128.121. I have seen cases where the route selected might go through some other machine, out to the internet and return. Selection of the correct address by the kernel would totally avoid the problem. For whatever reason, the hostid might be set to the wrong interface. Jim ------- End of Forwarded Message --[0371]-- \f [0372] daemon@TELECOM.MIT.EDU Kerberos 04/26/88 11:40 (25 lines) Subject: More on Kerberos questions From: spm%lyre.DEC@DECWRL.DEC.COM (Steven Miller) To: jordan@ucbarpa.berkeley.edu, kazar+@andrew.cmu.edu The net (Internet) address in the ticket is used, as Bill stated, to inhibit replay attempts. The receiver checks the address sealed in the Kerberos ticket against the address received from. Using a host name is both much more expensive (to encrypt more data) and not as strong a deterrent, since it is easier to forge. Multiply-homed hosts are currently a problem if different addresses are used when requesting tickets than when requesting authorizations. This was an oversight in the design. On the second question, the server's complete name must be included in the ticket. Note that there are no rules prohibiting running multiple Kerberos mediated servers with the same crypto keys, or running multiple Kerberos-mediated servers in a single process. So the server name is required to assure that the correct service is represented, regardless of these "packaging" issues. The service name will-- but is not necessary to -- ensure that the ticket was unmodified and properly decrypted. Errors in other fields could detect such errors. Steve --[0372]-- \f [0373] daemon@TELECOM.MIT.EDU Kerberos 04/26/88 19:40 (77 lines) Subject: a possible attack on Kerberos. From: Bill Sommerfeld <wesommer@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU Cc: John Leo <leo@ATHENA.MIT.EDU> One possible attack on Kerberos could involve being able to predict the random number generator used by the KDC to create session keys. In particular, the `rand()' random number generator is not very good; the low order bit is not really random. `random()' is better, but not available on non-BSD systems. System V includes a `rand48()' which is supposedly better than `random()'; however, it isn't available on Berkeley Unix.. It might make a lot of sense to do a portable implementation of the algorithm described in the paper referred to in this posting and include it in the distribution. Of course, if you _really_ wanted to produce good random numbers for session keys, you'd hook up a radioisitope and geiger counter to the KDC... - Bill (this is truncated from the posting, so I don't overfill everyone's mailbox..) From bloom-beacon!athena.mit.edu!leo Tue Apr 26 19:26:34 EDT 1988 Article 1154 of sci.crypt: Path: bloom-beacon!athena.mit.edu!leo >From: leo@athena.mit.edu (Oblivious Transfer) Newsgroups: sci.math,sci.crypt Subject: pseudo-random number generation Message-ID: <4898@bloom-beacon.MIT.EDU> Date: 26 Apr 88 22:49:28 GMT Sender: daemon@bloom-beacon.MIT.EDU Reply-To: leo@athena.mit.edu (Oblivious Transfer) Organization: Massachusetts Institute of Technology Lines: 278 Xref: bloom-beacon sci.math:3624 sci.crypt:1154 For those interested, the following is the introduction to the Blum-Micali paper on pseudorandom number generation. Although the paper is rather difficult reading, the introduction is fairly easy to follow and quite enjoyable. I have included the numbered references, but not mentioned what they are; also notation has been made TeX-like for precision. Hopefully there are not too many typos. John Leo leo@xx.lcs.mit.edu leo@athena.mit.edu ****** Siam Journal of Computing, Volume 13, Number 4, November 1984 (pages 850-864) How to Generate Cryptographically Strong Sequences of Pseudo-random Bits Manuel Blum and Silvio Micali ABSTRACT: We give a set of conditions that allow one to generate 50-50 unpredictable bits. Based on those conditions, we present a general algorithmic scheme for constructing polynomial-time deterministic algorithms that stretch a short secret random input into a long sequence of unpredictable pseudo-random bits. We give an implementation of our scheme and exhibit a pseudo-random bit generator for which any efficient strategy for predicting the next output bit with better thant 50-50 chance is easily transformable into an "equally efficient" algorithm for solving the discrete logarithm problem. In particular, if the discrete logarithm problem cannot be solved in probabilistic polynomial time, no probabilistic polynomial-time algorithm can guess the next output bit better than by flipping a coin: if "head" guess "0", if "tail" guess "1". KEY WORDS. randomness, pseudo-random number generation, unpredictability, random self-reducibility --[0373]-- \f [0374] daemon@TELECOM.MIT.EDU Kerberos 04/27/88 07:47 (14 lines) Subject: a possible attack on Kerberos. From: chariot@ATHENA.MIT.EDU To: wesommer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU, leo@ATHENA.MIT.EDU In-Reply-To: Bill Sommerfeld's message of Tue, 26 Apr 88 19:37:41 EDT <8804262337.AA09081@EPIMETHEUS.MIT.EDU> Re. the Blum-Micali paper, etc. If anyone is interested in this, I am currently taking 6.875J -- intro to cryptography and cryptoanalysis. We recently did poly-random generators in all their gory detail. I have a hard copy of this paper and many revent other papers if anyone is interested. I can also *explain* it as well... Warning: the paper is not easy to understand without a reasonable math background... - Mark Lillibridge --[0374]-- \f [0375] daemon@TELECOM.MIT.EDU Kerberos 04/27/88 21:12 (59 lines) Subject: Powerhouse Patrons Behind ID Tokens Resent-From: Bob Sidebotham <bob+@andrew.cmu.edu> Resent-To: kerberos@ATHENA.MIT.EDU X-Digest-From: RISKS FORUM (Peter G. Neumann -- Coordinator) <RISKS@KL.SRI.COM> X-Digest-To: RISKS-LIST@KL.SRI.COM From: "Vin McLellan" <SIDNEY.G.VIN%OZ.AI.MIT.EDU@XX.LCS.MIT.EDU> Apparently-To: kerberos@athena.mit.edu A new venture in token-based ID authentication -- and a hint of a broad new thrust in EDP security -- has emerged with the first product from the Applied Information Technologies Research Center, a little-known R&D consortium organized in 1984 by a number of universities and leading U.S. vendors of information service products. AITRC, in Columbus, Ohio, about to beta test a credit card-sized calculator which impliments a challenge-response ID authentication. A software module on a host CPU sends a 7-digit challenge to a remote terminal, the user keys that number into his "calculator," presses a special authentication button to process that number (and a token-specific seed) through a one-way crypto algorithm -- then reads off the 7-digit response code on the calculator's LCD screen. That number, transmitted to the host, verifies the token as one issued to a specific user. Tokens (also called "hand-held password generators") are said by IBM to increase the certainty of end user authentication by at least a full order of magnitude over mere passwords. Tokens impliment the second of the three ID authentication options (something known, something held, something inherent to the user) and have drawn rising interest as the relative frailty of classic password systems becomes apparent and risks proliferate. The two leading vendors, Security Dynamics in Cambridge, Ma., and Sytek of Mountain View, Ca., are NSA-certified -- so their tokens can be integrated into access control systems for secure DoD computers -- and SD last week obtained a GSA scheduled contract which allows no-bid purchases by federal agencies. But the AITRC development may mark tokens even more forcefully as the future direction for the industry. AITRC is jointly funded by CompuServ, Meade Data Central, Chemical Abstracts, the Online Computer Library Center and John Wiley & Sons; as well as Carnegie Mellon University, University of Pittsburgh, Wright State University, Ohio State, the Ohio State University Research Foundation, BDM Corp., and Batelle Institute. No lightweights there. AITRC hopes to see licensed token/calculators marketed at $10 apiece by the end of this year, according to AITRC president George Minot -- although the members of the AITRC consortium could potentially use and offer them to their clients for even less, he said, since consortium members get royalty-free access to the technology. At $10 per unit, AITRC would revolutionize the pricing of tokens -- which currently range between four and ten times that for comparable devices. Minot conceeded, however, that projected price is based on high volume production (minimum100,000) overseas. The AITRC token is built upon the 4-bit NEC calculator chip, works as a standard calculator, and is powered by a 2-year lithium battery. According to Minot, the device is also designed to be "initialized," or registered on the host, from any remote terminal or push button telephone. Vin McLellan, The Privacy Guild, Boston, Ma. (617) 426-2487 --[0375]-- \f [0376] daemon@TELECOM.MIT.EDU Kerberos 04/28/88 16:37 (18 lines) Subject: Re: Random Session Keys. From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM I talked very briefly to our crypto guru, and he mentioned that some of the crypto-based pseudo-random key generators were very expensive computationally, and one had to exercise care in the initial (secret) seed. He suggested looking at a DES based solution as sketched out in the ANSI X9.17-1985 Appendix C, which is seeded using a secret double length DES key and secret IV. I will paper mail a copy of the page to Bill Sommerfield. It would be a very worthwhile minor project to carefully look into this and other similar alternatives, making sure the sequences are extremely long. If something works out in terms of both randomness and computes, I would strongly recommend adopting it. Steve. --[0376]-- \f [0377] daemon@TELECOM.MIT.EDU Kerberos 05/04/88 06:49 (6 lines) Subject: release date? From: Jordan Hayes <jordan@ADS.COM> To: kerberos@ATHENA.MIT.EDU any word on when we can get a look at the code? /jordan --[0377]-- \f [0378] daemon@TELECOM.MIT.EDU Kerberos 05/04/88 15:38 (15 lines) Subject: Re: release date? From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Jordan, I am waiting for documentation on installation and operations to be completed. It is currently being debugged and should not take much longer. I am hoping it will be finished by end of this week, but will release the code by next week at the latest in any case. Thanks for your patience, Jennifer --[0378]-- \f [0379] daemon@TELECOM.MIT.EDU Kerberos 05/13/88 17:19 (10 lines) Subject: beta test release delay From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU I'm still awaiting official word that we can release Kerberos code for beta test (with or without DES). I've been promised an answer by Monday. Once again, sorry for the delay. Jennifer --[0379]-- \f [0380] daemon@TELECOM.MIT.EDU Kerberos 05/16/88 13:30 (50 lines) Subject: one more piece of paper From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Kerberos beta testers, I'm afraid I have to ask for one more piece of paper from you, which we require in order to protect MIT from any problems should a copy of our DES implementation make its way overseas. Could you send a signed copy of the letter below to me? Upon receipt I will either mail you a tape or give you ftp instructions, whichever is appropriate. Jennifer (my address again:) Project Athena MIT E40-300 77 Massachusetts Avenue Cambridge, MA 02139 USA ------------------------- cut here ------------------------------ To: Jennifer Steiner Date: Subject: Kerberos beta distribution I understand that the Data Encryption Standard library of MIT Project Athena's Kerberos beta test source code distribution may be subject to restrictions imposed by the Export and Commodities Control List, and that the beta test release is not for redistribution. Signed, ------------------------- (signature) ------------------------- (name, please print) of ------------------------- (Name of Institution) --[0380]-- \f [0381] daemon@TELECOM.MIT.EDU Kerberos 05/19/88 13:00 (187 lines) Subject: Kerberos beta testers From: steiner@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Below is a list of people who will be participating in the Kerberos beta test, along with brief descriptions of their test environments. Jennifer -------- Steve Bellovin <smb@research.att.com> of AT&T Bell Labs. We have ~30 Suns running SunOS 3.4, plus several VAXen and a CCI 6/32 running 4.3bsd. Our machines are linked via assorted gateways to a moderate number of other TCP/IP networks (using assorted technologies). We'd really like to run Kerberos on our local nets plus those of one affiliated department, since we provide computing services for them (though they have their own workstations as well). Our applications include the obvious standards ones (rsh, rlogin, and NFS (our VAXen are starting to run Mt. Xinu NFS)), possibly others. -------- Dave Curry <davy@intrepid.ecn.purdue.edu> of Purdue University. 26 timesharing machines (Vaxes and Goulds), 147 Sun workstations with about 100-150 more on order to show up this summer. We have 7 different Schools of Engineering in our network; we might make each one a different Kerberos realm (or not, depends on some of the capabilities of Kerberos). We have about 12,000 users. We are also connected to the Computer Center and the Computer Science department here. -------- Craig Finset <fin@uf.msc.umn.edu> of the Minnesota Supercomputer Center. Our environment includes: 5 Sun 3/180 and 3/280 computers 10 Sun 3/50 and 3/60 diskless workstations 2 CRAY-2 supercomputers They are connected via Ethernet and Hyperchannel. We will initially bring it up on our development computer and some of the workstations. As we gain experience and confidence in it, we will expand it to our staff machine, then (ultimately) to our routers. Finally, we hope to port it to the Crays (and, after you have released the official version, to offer it to our customers). Initial applications will be to authenticate NFS mounts, to eliminate the /bin/su program, and to eliminate .rhosts files. Later applications will be to convert from offering telnet-accessed local accounts to direct network access to services. -------- Jordan Hayes <jordan@ucbarpa.Berkeley.EDU> of Advanced Decision Systems. Environment: Vaxes, Suns, Pyramids, Intel HyperCube, BBN Butterfly, etc. We are a government contractor centering on artificial intelligence applications. We're interested in security, on the network and in UNIX in particular. -------- Greg Kenley <harvard!palladium!gkenley> of Epoch Systems. Epoch Systems currently consists of a heterogeneous mix of Vaxen, Suns, Macs and PCs and our own DataStation(tm). The DataStation is an ultra high capacity NFS compatable file server designed to support the current and next generation of technical workstations. The common thread amongst all our systems is that they connect via NFS, the Darpa protocols and Ethernet. -------- Norm Kincl <norm%atom@hplabs.HP.COM> of HP labs. We plan to bring Kerberos up on our HP-UX workstations and begin experimenting with authentication in various services. -------- Pierre-Louis Neumann <neumann%inria.inria.fr@uunet.uu.net> of Inria. Inria is a governmental research institute in computer science. We use 150 machines connected on an Ethernet: 100 Sun3 diskless workstations (with 20 Sun servers) 4 Vax 785 4.3BSD 2 NP1 Gould 1 Pyramid 10 Apollo on their Domain ring network the others are French BULL SPS7 (System V.2 + sockets + NFS) -------- Gary Rosenblum <rosenblg@acf3.nyu.edu> of New York University. Our initial test environment will consist of two Vaxen running Mt. Xinu's release of 4.3BSD, a Sun 3/180-S server, my Sun 3/50 workstation (both running Sun OS 3.4), and a Microvax running either 4.3BSD or Xinu's 4.3. Then we will extend to more Vaxen and Sun workstations. In the summer, a new dorm will open with space for 80 workstations. We plan to stock it with IBM PCs, Mac IIs, and Sun workstations. Our plan is to use Kerberos for authentication of the workstations. Eventually, we hope to include the (approximately) 100 Sun workstations and servers on other subnets, on our extended LAN. -------- Robert Viduya <robert@pyr.gatech.edu> of the Georgia Institute of Technology. Our environment currently consists of a Pyramid 90x running an essentially 4.2BSD kernel, a MicroVAX II running 4.3BSD acting as our main network nameserver and two MicroVAX II's running Ultrix 2.2 acting as fileservers for a cluster of 24 VAXStation 2000's running Ultrix 2.2. In addition, we have two AT&T 3B20's running SysV R2.1.1 with Wollongong TCP/IP and a few 3B2's running SysV R3.0, also with the Wollongong TCP/IP package. We also have 60 Macintosh II's with A/UX (to be installed), and 24 Macintosh II's running MacOS. -------- Mike Zeleznik <zeleznik@cs.utah.edu> of the University of Utah. Two groups within the University of Utah Computer Science Department will be working with Kerberos. 1) Utah Retrieval System Architecture (URSA) group: We are interested in integrating Kerberos with the URSA information retrieval system. The URSA system is designed for very large (e.g. 50+ Gbyte) non-formated databases, supported by custom pattern search hardware. The architecture is message-based, distributed, and reconfigurable on the fly (the datacomm package relocates modules and reestablishes connections), with a sophisticated window-based user interface. It has run distributed across Apollo, Sun, and VAX systems, on both BSD4.X and native Apollo Aegis (it was designed also for portability). Currently, we are working very closely with Apollo. We are also involved with the startup of the Univ. of Utah campus computing network, currently underway, which could also offer some interesting testing possibilities for Kerberos (e.g., multiple administrative domains). 2) Computer Science Department systems programming group: We have ported 4.3 with NFS to the HP 9000/300 series machines (Bobcats), and are investigating using MIT's RVD protocol to provide diskless support for these HP workstations. The current version of RVD uses Kerberos. In addition, in the CS dept's environment of well over 100 Unix hosts, we want to investigate Kerberos as a replacement for our current Berkeley .rhosts method of authentication, with its well known weaknesses. -------- In addition (people for whom I don't yet have an environment description) are: -------- Scott Bradner <sob@harvard.harvard.edu> of Harvard. -------- Steve Miller of DEC <miller%erlang.DEC@decwrl.dec.com>, one of the original creators of Kerberos. -------- Steven M. Miller <smiller@umn-cs.cs.umn.edu> of the Secure Computing Technology Center of Honeywell. -------- --[0381]-- \f [0382] daemon@TELECOM.MIT.EDU Kerberos 05/25/88 17:55 (22 lines) Subject: erlogin To: kerberos@ATHENA.MIT.EDU Cc: don@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Beta testers, Below is an addendum to the "Kerberos Installation Notes" document. Jennifer ---------- The directory SRCDIR/appl/erlogin contains some code based on rlogin[d], modified by Don Davis of Project Athena to do the following: erlogin is a rewritten version of 4.3bsd rlogin(d). it causes the remote login session to share the invoker's DISPLAY environment-variable/value, and can readily be modified to pass other environment variables/values. it offers kerberos authentication, but can talk to hosts that don't support kerberos. it is intended to be backwards compatible with 4.2bsd rlogin. --[0382]-- \f [0383] daemon@TELECOM.MIT.EDU Kerberos 05/26/88 14:23 (34 lines) Subject: beta testers addendum To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Scott Bradner <sob@harvisr.harvard.edu> of Harvard The computing environment at William James: 5 Microvax IIs running Mt Xinu 4.3 with NFS 1 Sun 3/60 running SunOS 4.0 about 30 PCs on Ethernet, PCnet (gated to Ethernet with tcp/ip drivers) or Appletalk (all Appletalked PCs to be moved to Ethernet within 2 months) about 15 Macs on Appletalk Appletalk connected with a fastpath box to the Ethernet New uses for Kerberos: We do printer serving on the Microvaxes for the PCs and Macs. Since we must charge for the printer use the current method of printing requires the user to "print" the file on the PC or Mac which transfers the file to a subdirectory in the user's Microvax account. The user must then login to the Microvax (establishing their id for billing) then send the file to the printer. We wish to add Kerberos to a version of the printer driver in the Mac and into the network drivers on the PC so that the user is not required to do the second step. We also provide for electronic mail to and from the PCs. (We ported Berkeley mail to the PC and have it use a server on one of the Microvaxs.) The user must currently type in a password in order to send or receive mail; Kerberos could be used to make this easer. We have developed software to do remote incremental backups of the PCs, this like the email requires that the user enter a password to get things started, another logical place for Kerberos. --------- --[0383]-- \f [0384] daemon@TELECOM.MIT.EDU Kerberos 05/26/88 20:01 (25 lines) Subject: Sun Licenses To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> It turns out we can only supply NFS Kerberos modifications to holders of a Sun NFS Educational Institution Source License. Commercial license holders must obtain our changes directly from Sun. I am in the process of getting a name of someone to contact at Sun. According to my records, the following sites have sent us copies of the required (Educational Institution) license: NYU Univ. Utah If you think you sent me such a license and aren't on that list, please drop me a note. I'll let you know as soon as I have a person to contact at Sun, for those people who have a commercial-type source license. Jennifer --[0384]-- \f [0385] daemon@TELECOM.MIT.EDU Kerberos 05/31/88 16:07 (10 lines) Subject: Sun NFS modifications To: kerberos@ATHENA.MIT.EDU Cc: warrens@sun.com From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Beta testers who have a Sun NFS Source License (as opposed to a Sun NFS Educational Institute Source License) must get MIT's Kerberos modifications to NFS directly from Sun. The person to contact is Warren Smith (warrens@sun.com). Jennifer --[0385]-- \f [0386] daemon@TELECOM.MIT.EDU Kerberos 06/05/88 16:26 (31 lines) Subject: faster encrypted rlogin From: Ken Raeburn <raeburn@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU Jeff and I were talking a little last night, and this idea came up. While the encrypted rlogin that is in the beta release (at least, I think it was; I picked up one from our sources here that works ok) tends to be quite slow (enough so as to be noticable even at 1200 baud), there is no real reason why the DES routines have to be run in real time. Why not use a DES-generated random sequence of bytes to XOR against the data? The XOR values can be generated using, say, the session key as the seed, and can be computed before the data is available against which it is to be XOR'ed. The random number generation could even be done in a subprocess, if CPU time is still the problem. (Another help would be getting a better compiler for the VAX -- due to some oversight, the des.c code is maybe half as fast on the vax as it could be.) The "random" number generation could be done by taking a seed and repeatedly putting it through encryption (with the known key) and using one byte of the result each time. I myself don't know quite enough about DES to know how good this is, or if we could get away with using more bytes of the result... This wouldn't work so well for batch-type data transfers (though it might make a small difference), but should be useful for user login sessions, where a lot of idle time is wasted waiting for the user... Comments & opinions? _kr --[0386]-- \f [0387] daemon@TELECOM.MIT.EDU Kerberos 06/05/88 17:52 (26 lines) Subject: faster encrypted rlogin From: Mark Lillibridge <chariot@ATHENA.MIT.EDU> To: raeburn@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Ken Raeburn's message of Sun, 5 Jun 88 16:21:42 EDT <8806052021.AA27194@BINKLEY.MIT.EDU> Reply-To: chariot@ATHENA.MIT.EDU Well, the scheme you describe for generating random numbers is quite close to one of the schemes used in cryptography to generate poly-perfect random number generators. (A poly-perfect random number generator is a generator who's output is indistishable from a truely random sequence in polynomial time) The difference is that cryptography replaces the DES function with a number theory function (RSA for example although it is slower than some alternates) that we have reason to believe is not invertable in polynomial time. It can be proved that if the function used is indeed not invertable in polynomial time, then a poly-perfect random number generator will result. Unfortunely, since very little is known about DES mathamatically at the moment, it is very hard to say if it is not invertable in polynomial time. None the less, I think that this method is reasonably secure compared to the original method. Anyone with the resources to break this method is almost certain to be able to break the original method as well. This is only my opinion of course, through.... - Mark Lillibridge --[0387]-- \f [0388] daemon@TELECOM.MIT.EDU Kerberos 06/06/88 15:16 (18 lines) Subject: Re: faster encrypted rlogin From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM Ken and Jeff's suggestion sounds like a variation on a Vernam cipher, or one-time-pad. A true random bit stream used as the XOR is uncrackable, if used only once, and is used for the highest security level communications. So the question is to make sure you get a good pseudo-random stream from the DES seed, and don't reuse it. The reuse is a problem with Kerberos, since the Session key is valid for some considerable time -- actually can be multiple sessions. You could use the DES output feedback (OFB) mode to produce the bit stream, or even better, according to our crypto guru, just use a counter that doesn't wrap, e.g. >=32 bits, and encrypt the counter. Let me know how it works out. Steve. --[0388]-- \f [0389] daemon@TELECOM.MIT.EDU Kerberos 06/06/88 18:29 (18 lines) Subject: Re: faster encrypted rlogin From: Mike Kazar <kazar+@andrew.cmu.edu> To: kerberos@ATHENA.MIT.EDU In-Reply-To: <8806052021.AA27194@BINKLEY.MIT.EDU> Your message doesn't specify what data you are encrypting with your DES/XOR scheme, so I'm not sure how important the attack I'll describe here is. However, you should note that XOR-based encryption schemes, while not vulnerable to decipherment, are quite vulnerable to tampering in an environment where the cleartext is known. So, for instance, if I have a ticket authenticating me as "bogon", and it is encrypted via your scheme (using DES/XOR with these quasi-random numbers), then if I can find the ticket in the cleartext (which should be easy, given the sources), I can change the ticket to authenticate me as "kazar" instead of "bogon" by XORing the ticket with ("kazar" XOR "bogon"). Of course, as I said, above, if you're encrypting data that you don't mind being tampered with invisibly, then this objection doesn't matter. --[0389]-- \f [0390] daemon@TELECOM.MIT.EDU Kerberos 06/06/88 19:57 (48 lines) Subject: Re: faster encrypted rlogin From: Ken Raeburn <raeburn@ATHENA.MIT.EDU> To: Mike Kazar <kazar+@ANDREW.CMU.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Mike Kazar's message of Mon, 6 Jun 88 18:21:21 -0400 (EDT), Date: Mon, 6 Jun 88 18:21:21 -0400 (EDT) From: Mike Kazar <kazar+@andrew.cmu.edu> So, for instance, if I have a ticket authenticating me as "bogon", and it is encrypted via your scheme (using DES/XOR with these quasi-random numbers), then if I can find the ticket in the cleartext (which should be easy, given the sources), I can change the ticket to authenticate me as "kazar" instead of "bogon" by XORing the ticket with ("kazar" XOR "bogon"). I don't think this attack would work quite as described, but there is some possible risk here. Remember, we aren't using XOR for the authentication encryption, just for later data. The authenticator/ticket itself would be DES-encrypted such that only the intended receiver could decrypt it. An XOR on this data would produce meaningless garbage. However, a known sequence of data could be tampered with through the attack you describe, but only that portion for which the cleartext (and position in the data stream) is known, but this isn't difficult. Hmm...perhaps a randomly-generated (and constantly changing) translation table, with offsets transmitted? It wouldn't need to be too sophisticated, just something that couldn't be reversed (and used in the forward direction) with a known cleartext. Perhaps using two numbers to generate the table; for example: Use #1 for the character \000 translates to. Use #2 as an offset into a table of the first N numbers relatively prime to 256, and use it as an offset to get the consecutive numbers in the translate table. (I.e., \001 maps to (#1 + #2) mod 256, \002 maps to (#1 + 2 * #2) mod 256, etc.) There are simpler mathematical methods for getting the results in both directions here, but I think this provides a means by which we'd be safe sending data without fear of eavesdropping or tampering, since in order to substitute a (known) second value, the second random byte would have to be known. Would we be safe in taking two bytes of the encryption output for the random number sequence, or should it require two passes? Doing the latter would slow it down, but we can see how it compares against realtime encryption.... --[0390]-- \f [0391] daemon@TELECOM.MIT.EDU Kerberos 06/07/88 14:41 (33 lines) Subject: Re: Integrity From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM The Kerberos tickets are integrity protected, so attempts at modifying them will be detected via causing invalid values for some/all of the fields. In this case, the integrity protection is provided by using a modified cipher-block-chaining modes of DES with the characteristic that modifying a single bit of ciphertext will cause about 50% of all the subsequent cleartext bits in the message to change. Then by placing fields with constraints on their values, such as a timestamp or a constant, at the end of the message, modification attempts will cause invalid field values. If you want to provide integrity protection for rlogin, you will have to use some integrity mechanism, for example the one used for tickets. But it is harder to integrate that with a character by character operation, and it is not obvious how it interacts with the DES generated random bit stream used for the XOR. DES has an integrity checksum mode, whose exact name I forgot at the moment, but that requires a separate pass crypto pass over the data, which is why we picked the technique described above for the tickets -- no extra crypto. A basic principle of providing integrity checks is to provide a redundant copy of the data, usually in the form of a checksum, etc., and include that in the data stream to be encrypted. Then it is virtually impossible to modify both the data and its redundant copy in a consistent fashion, as long as the checksum technique is well chosen. On decryption, the receiver decrypts, then recomputes the checksum over the cleartext and compares the computed value to the received value. This is an interesting problem. Have fun. Steve --[0391]-- \f [0392] daemon@TELECOM.MIT.EDU Kerberos 06/13/88 14:10 (62 lines) Subject: Re: ksu (really ticket lifetimes) From: Jon Rochlis <jon@BITSY.MIT.EDU> To: <qjb@ATHENA.MIT.EDU> Cc: steiner@ATHENA.MIT.EDU, watchmakers@ATHENA.MIT.EDU, In-Reply-To: Emanuel 'Jay' Berkenbilt's message of Mon, 13 Jun 88 11:20:50 EDT, From: <qjb@ATHENA.MIT.EDU> Date: Mon, 13 Jun 88 11:20:50 EDT Why do kerberos tickets obtained "automatically" while ksu'ed only last for ten minutes? This is rather inconvenient... Is there some deep security reason? Is there any way to vary this? This really belongs on "kerberos", not "watchmakers". The ten minute lifetime is a feature. You can get longer-lasting tickets by using "kinit -i" (or with the new kerberos stuff "kinit qjb.root") or by making your own version of ksu (which you should only be using on a workstation BTW, not on a server unless you are on the console or otherwise have a secure path over which to type your root instance password). ksu specifically asks for ten-minute tickets so if you spaz and forget about those tickets no harm will probably be done since they expire so quickly. If you forget to do a kdestroy (exiting the ksu shell won't do that for you!) this is a big win. The same rational is employed in using a separate root instance as well. Your null instance tickets are less important than your root instance tickets (not because of the name "root" but rather because your root instance appears in access control lists that lets you unix login as root for a given server). Perhaps a user should be able to vary the life of his tickets. It is not uncommon for a user to say something like, "I have a program that writes to my nfs locker, and it is going to run for ten hours. I want to put up the screensaver and go away. Can I do that?" Writing to the nfs locker is a different issue. At the current time mappings from uid,client to uid,nfs-server don't go away until the locker is detached (or the server crashes). It is only when establishing the mapping (at attach/mount time) that you need non-expired kerberos tickets. However, you can easily imagine other services who require valid tickets as you suggest. I guess the real issue is the user interface. At the moment how long your tickets last if a function of what program did the get_in_tkt call and what it filled in for a "lifetime". Perhaps what you're looking for is a -lifetime argument for kinit (or login!). In anycase, kerberos ticket lifetimes range between 0 and 255 and are in units of five minutes, so the longest a ticket can last is 255 * 5 = 21.25 hours ... There have been some bugs found recently in lifetime processing so we want to look carefully at this whole area (the so-called "supertickets" on big-endian machines) and reports that request initial tickets with a lifetime if -1 (i.e. 255) works [tickets have a max lifetime in the database of eight hours, and any new ticket is supposed to have a lifetime of the min of database lifetime and the TGT used]. Some thought should also be given to the user-interface side of notifying a user that tickets have expired. -- Jon --[0392]-- \f [0393] daemon@TELECOM.MIT.EDU Kerberos 06/14/88 00:13 (19 lines) Subject: "Postdated" tickets? From: Zalman Stern <zs01+@andrew.cmu.edu> To: kerberos@ATHENA.MIT.EDU Is it possible to ask Kerberos for a ticket that is valid between two times in the future? That is, good from say 10 hours from now until 20 hours from now? If not, are there any inherent security problems in doing this? I think it should be possible to exchange the times the ticket is valid for over an authenticated connection so snoops wouldn't even know when the ticket can be used. This might increase security slightly. The reason I ask is because I have an idea for an at(1) like batch queue program that could use postdated tickets to implement an authenticated file service connection. Sincerely, Zalman Stern Internet: zs01+@andrew.cmu.edu Usenet: I'm soooo confused... Information Technology Center, Carnegie Mellon, Pittsburgh, PA 15213-3890 --[0393]-- \f [0394] daemon@TELECOM.MIT.EDU Kerberos 06/21/88 11:38 (9 lines) Subject: Re: NFS security From: Jim Evins <evins@NRL-RADAR.ARPA> To: kerberos@ATHENA.MIT.EDU In-Reply-To: Sun-Spots's message of Sun, 19 Jun 88 21:07:19 CDT Could you please send me more information about the Kerberos authentication system, mentioned by treese@athena.mit.edu in the Sun-spots mail digest. Thanks. -Jim Evins <evins@nrl-radar.arpa> --[0394]-- \f [0395] daemon@TELECOM.MIT.EDU Kerberos 06/21/88 14:15 (9 lines) Subject: Kerberos system From: dean@WRATH.CS.CORNELL.EDU (Dean Krafft) To: kerberos@ATHENA.MIT.EDU I'm interested in information about the Kerberos authentication system. How should I proceed? Dean Krafft Computer Science Dept. Cornell University dean@gvax.cs.cornell.edu --[0395]-- \f [0396] daemon@TELECOM.MIT.EDU Kerberos 06/21/88 14:26 (9 lines) Subject: (ip_addr,uid) -> uid From: bks@OKEEFFE.BERKELEY.EDU (Brian K. Shiratsuki) To: kerberos@ATHENA.MIT.EDU would you please send information on the kerberors authentication system. TNX, brian --[0396]-- \f [0397] daemon@TELECOM.MIT.EDU Kerberos 06/21/88 15:37 (11 lines) Subject: anyone beta testing? To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Beta testers, are you out there? Send news. Have you been able to build/install/use Kerberos? Jennifer P.S. Sorry for the inquiries about Kerberos that have been appearing on this mail list. Someone seems to have given out a pointer to the wrong mail list. --[0397]-- \f [0398] daemon@TELECOM.MIT.EDU Kerberos 06/21/88 18:00 (45 lines) To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> ------- Forwarded Message Received: by E40-PO.MIT.EDU (5.45/4.7) id AA22592; Tue, 21 Jun 88 17:43:08 EDT Received: by ATHENA.MIT.EDU (5.45/4.7) id AA08261; Tue, 21 Jun 88 17:42:34 EDT Received: from tachyon by atom ; Tue, 21 Jun 88 14:42:19 pdt To: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Subject: Re: anyone beta testing? X-Mailer: mh6.5 In-Reply-To: Your message of Tue, 21 Jun 88 15:31:26 -0400. <8806211931.AA10004@BACH.MIT.EDU> Date: Tue, 21 Jun 88 14:42:14 PDT Message-Id: <253.582932534@atom> From: Your Name Here <ranous@atom.hpl.hp.com> I'm working for Norm Kincl here at HP, and I'm porting kerberos to HP-UX. I only started last week, and have been mainly getting used to HP equipment, so I haven't had a lot of time to work on it. I've just finished making the dependencies on the source last week. The HP-UX cc doesn't support the -M option, so I had to port the 4.3 cpp and convince cc to use it. Also, I had to wait for the op system to get upgraded to a new version that supports file names longer than 14 characters. You might want to consider making the long names shorter so others trying to port to SYS V machines won't have to go to the trouble. Also it seems that programs compiled and run out of make need to exit(0) explictly with the SYS V make, or it kills the make. I had to add that to those programs that make the include files in the make depend step in the des library. I've started compiling real code now, and have run into a few problems, but I haven't had a real change to check things out yet. I'm at Usenix for the week, so I'll won't find much more out until next week. I'll let you know about any more problems. Alex Ranous ranous@hplabs.hp.com ------- End of Forwarded Message --[0398]-- \f [0399] daemon@TELECOM.MIT.EDU Kerberos 06/21/88 19:34 (13 lines) Subject: NFS security (kerberos) From: benjaram@SUN.COM (Raj Benjaram) To: kerberos@ATHENA.MIT.EDU I would be very interested to recieve any details you can provide on the Kerberos authentication system. Thank You. -Raj Benjaram (sun!rbenjaram) -Catalyst Technical Support -Sun Microsystems -415-336-4564 --[0399]-- \f [0400] daemon@TELECOM.MIT.EDU Kerberos 06/22/88 10:00 (162 lines) To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> (Please mail to kerberos.mit.edu not just me, for the benefit of other beta testers. -Jennifer) ------- Forwarded Message Received: by E40-PO.MIT.EDU (5.45/4.7) id AA22864; Tue, 21 Jun 88 18:24:04 EDT Received: by ATHENA.MIT.EDU (5.45/4.7) id AA08844; Tue, 21 Jun 88 18:23:43 EDT Received: by uc.msc.umn.edu (5.54/1.14) id AA19916; Tue, 21 Jun 88 17:21:27 CDT Date: Tue, 21 Jun 88 17:21:27 CDT From: "Stuart Levy" <slevy@uc.msc.umn.edu> Message-Id: <8806212221.AA19916@uc.msc.umn.edu> To: steiner@ATHENA.MIT.EDU Subject: Re: anyone beta testing? I haven't installed a server nor applications yet but did compile most things. Some changes were needed to accommodate SUNs. include/osconf.h Couldn't find any documentation on how to add configuration information for new kinds of machines, so inserted #ifdef sun here. include/conf-bsd-m68k.h The #ifdef sun in osconf.h includes this. (This is a new file, so I did diff -c /dev/null.) bsd/Makefile: Sun 3.3 (at least) <sys/param.h> doesn't define MAXHOSTNAMELEN so I put this in the Makefile. I'm not sure where this kind of hack really belongs; maybe in <osconf.h>? In that case kcmd.c would need to include it. bsd/rlogin.c There's an #ifdef sun related to handling the window size structure but it doesn't work; the distributed rlogin.c explicitly declares "struct winsize" which conflicts with the declaration of the same structure in Sun's <sys/ioctl.h>. bsd/rshd.c bsd/rlogind.c appl/sample_server.c Minor changes to accommodate the difference between 4.2 and 4.3 syslog(3). Before we can actually use this on a pre-4.0 SUN, I need to integrate the Kerberos login.c into the 4.2 environment (different ttys format, no getttyent(), etc.). This shouldn't be too big a deal but I haven't gotten to it yet. Here are diffs for the changes made so far. *** /tmp/,RCSt1a02544 Tue Jun 21 16:52:52 1988 - --- osconf.h Mon Jun 6 19:51:55 1988 *************** *** 18,22 **** - --- 18,26 ---- #else #ifdef ibm032 #include "conf-bsd-ibm032.h" + #else + #ifdef sun + #include "conf-bsd-m68k.h" + #endif /* sun */ #endif /* ibm032 */ #endif /* not vax */ *** /dev/null Tue Jun 21 17:00:18 1988 - --- conf-bsd-m68k.h Mon Jun 6 19:55:32 1988 *************** *** 0 **** - --- 1,19 ---- + /* + * $Source: /mit/kerberos/src/include/RCS/conf-bsdvax.h,v $ + * $Author: steiner $ + * $Header: conf-bsdvax.h,v 1.3 88/02/25 14:44:06 steiner Exp $ + * + * Copyright 1988 by the Massachusetts Institute of Technology. + * + * For copying and distribution information, please see the file + * <mit-copyright.h>. + * + * Machine-type definitions: 68000 with BSD Unix, e.g. SUN + */ + + #include <mit-copyright.h> + + #define BITS32 + #define BIG + #define MSBFIRST + #define BSDUNIX *** /tmp/,RCSt1a02520 Tue Jun 21 16:52:05 1988 - --- rlogin.c Mon Jun 6 22:02:12 1988 *************** *** 83,92 **** #endif #ifdef sun struct ttysize winsize; - - struct winsize { - - unsigned short ws_row, ws_col; - - unsigned short ws_xpixel, ws_ypixel; - - }; #else sun struct winsize winsize; #endif sun - --- 83,88 ---- *** /tmp/,RCSt1a02525 Tue Jun 21 16:52:07 1988 - --- rlogind.c Mon Jun 6 22:09:32 1988 *************** *** 48,53 **** - --- 48,57 ---- #include <syslog.h> #include <strings.h> + #ifndef LOG_AUTH + # define LOG_AUTH 0 + #endif LOG_AUTH + #ifdef KERBEROS #include <sys/param.h> #include <utmp.h> *** /tmp/,RCSt1a02530 Tue Jun 21 16:52:09 1988 - --- rshd.c Mon Jun 6 22:06:08 1988 *************** *** 78,84 **** - --- 78,88 ---- #ifdef KERBEROS ksh = (strcmp(*argv,"kshd")==0); #endif KERBEROS + #if defined(LOG_ODELAY) && defined(LOG_DAEMON) openlog("rsh", LOG_PID | LOG_ODELAY, LOG_DAEMON); + #else /* probably 4.2BSD */ + openlog("rsh", LOG_PID); + #endif /* 4.2BSD */ fromlen = sizeof (from); if (getpeername(0, &from, &fromlen) < 0) { fprintf(stderr, "%s: ", argv[0]); *** /tmp/,RCSt1a02560 Tue Jun 21 16:53:31 1988 - --- sample_server.c Mon Jun 6 21:37:08 1988 *************** *** 49,55 **** - --- 49,59 ---- /* open a log connection */ + #ifdef LOG_DAEMON openlog("sample_server", 0, LOG_DAEMON); + #else !LOG_DAEMON + openlog("sample_server", 0); + #endif !LOG_DAEMON /* * To verify authenticity, we need to know the address of the ------- End of Forwarded Message --[0400]-- \f [0401] daemon@TELECOM.MIT.EDU Kerberos 06/22/88 12:15 (9 lines) Subject: wrong address To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> > (Please mail to kerberos.mit.edu not just me, for the > benefit of other beta testers. -Jennifer) I mean, "kerberos@athena.mit.edu". Jennifer --[0401]-- \f [0402] daemon@TELECOM.MIT.EDU Kerberos 06/22/88 18:39 (8 lines) Subject: kerberos From: mcgrew@TOPAZ.RUTGERS.EDU (Charles) To: kerberos@ATHENA.MIT.EDU Please send me info about kerberos.. Thanks, Charles --[0402]-- \f [0403] daemon@TELECOM.MIT.EDU Kerberos 06/22/88 18:41 (24 lines) Subject: information request From: "Alan Bleier, Brigham and Women's Dept. of Radiology" To: kerberos@ATHENA.MIT.EDU X-Vms-To: MAILER%"kerberos@athena.mit.edu",BLEIER In a recent posting I read in Sun-Spots, Win Treese mentioned that more information is available from you about the Kerberos authentication system. I plan and manage the research network in the Radiology Department at Brigham and Women's Hospital, and we are naturally concerned about security for research data and patient information. As you can see, we do not have a direct connection via ethernet to the internet, but we may have a bridge from our network to Harvard's ethernet soon. Please send me any references, writeups, citations, etc. to the above address on HUSC3, or to Alan Bleier, PhD Brigham and Women's Hospital Department of Radiology 75 Francis St. Boston, MA 02130 phone: 732-7986 Thanks! (oops -- the zip code should be 02115) --[0403]-- \f [0404] daemon@TELECOM.MIT.EDU Kerberos 06/22/88 19:31 (12 lines) From: mcvax!minster.york.ac.uk!forsyth@UUNET.UU.NET To: kerberos <athena.mit.edu!kerberos@ukc.ac.uk> Please tell me about yourself (kerberos). I've recently read some amusing articles in USENIX proceedings and a Sun glossy, written by someone at Sun who claims to be talking about ``security''. I don't think this can be true, though, since he then says I have to put my root password decrypted in a secret file (and/or have people queue up at all our discless workstations to allow setuid files to work). I know that you publish your root passwords, but also have the wit to make this not matter. Anyhow, I'd like to know more. --[0404]-- \f [0405] daemon@TELECOM.MIT.EDU Kerberos 06/22/88 21:19 (40 lines) Subject: information From: John Iarocci <iarocci@ENEEVAX.UMD.EDU> To: kerberos@ATHENA.MIT.EDU We've been looking around for an authentication system to replace Yellow Pages. There are some serious problems with YP and there are some nice features. We are junking the `hosts' yellow page map and running BIND. Some of the other maps can be distributed via rdist. This leaves us with access to machines. We are interested in security both in the account sense and the remote mount sense. One of the features of Yellow Pages that we would rather like to keep is the concept of `netgroups'. By using this mechanism, I can have a password file that looks like this: root:OaWYiXw/YZLCU:0:10:Eneevax,J-0313,4546849,4548798:/:/bin/csh daemon:*:1:1:The devil himself,,,,:/: bin:dWAkTAiH9ZE2s:3:10:System File Owner,,,,:/bin:/bin/csh news:LD5fc4QzrJ3Ug:7:12:The News System,,,,:/usr/spool/news:/bin/csh adm:q6J3eGswXEhH2:8:10:Accounts Administrator,,,,:/usr/adm:/bin/csh mdqs:*:11:10:The Mdqs System,,,,:/usr/lib/mdqs:/bin/csh guest:*:51:17:The Guest Account--can't log in,,,,:/usr/tmp:/bin/csh +@Staff::0:0::: +@EE_Department::0:0::: +@All::80:10::/usr/local/restrict:/bin/sh This lets the groups `Staff' and `EE_Department' on the machine in question, and restricts the group `All' (albeit, in a nonsecure manner). Please forward any information concerning your kerberos system. Thank you, John Iarocci iarocci@eneevax.umd.edu College of Engineering University of Maryland College Park Campus College Park, MD 20742 (301) 454 - 1526 (6849) --[0405]-- \f [0406] daemon@TELECOM.MIT.EDU Kerberos 06/23/88 16:02 (13 lines) Subject: Re: NFS security From: awhite%fang@XENURUS.GOULD.COM (Arden White) To: kerberos@ATHENA.MIT.EDU Please send me more info on Kerberos authentication system. Thanks, Arden ------------------------------------------------------------ Arden White o Gould CSD o Urbana, IL (217) 384-8705 awhite@Gould.com uiucdcs!ccvaxa!awhite ------------------------------------------------------------ --[0406]-- \f [0407] daemon@TELECOM.MIT.EDU Kerberos 06/24/88 11:07 (20 lines) Subject: kerberos From: prlb2!jjq@UUNET.UU.NET (Jean-Jac. Quisquater) To: kerberos@ATHENA.MIT.EDU I'm interested into more information about the Kerberos authentication system. Many thanks, Best regards, Jean-Jacques Quisquater, SMAIL: Philips Research Laboratory Brussels Avenue Van Becelaere, 2; Box 8; B-1170 Brussels, Belgium. TELEFAX: 32-2-674.22.99 UUCP: World: ...{philabs,uunet,munnari,mcvax}!prlb2!jjq INTERNET: na.quisquater@score.stanford.edu --[0407]-- \f [0408] daemon@TELECOM.MIT.EDU Kerberos 06/24/88 14:01 (25 lines) Subject: ticket file access From: mar@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU I have run into an unfortunate interaction with the new ticket file access checks and system daemons that use kerberos. If someone kills a daemon that was started by /etc/rc and starts it by hand, that daemon inherits their KRBTKFILE environment variable. But that points to a file owned by the user, not root, and the daemon will run as root and be unable to store tickets there. This causes errors like: "Can't access tkt file: /tmp/tkt_ttyp1" from the daemon. The only workaround I know of right now is to explicitly unset or change the KRBTKFILE environment variable before invoking the daemon. Do we want to have to continue this workaround, or add code to every system daemon to handle this case, or change the kerberos library? This is further complicated by the fact that there are no C library routines for setenv() or unsetenv(). This means that more than a couple of lines of code need to be added to a program to fix this. I would propose that either the library be changed back to allow root to write to people's ticket files, or a routine be added to the kerberos library that will change the ticket file location (i.e. do a setenv(KRBTKFILE, [location])). -Mark --[0408]-- \f [0409] daemon@TELECOM.MIT.EDU Kerberos 06/24/88 14:20 (24 lines) Subject: Re: ticket file access From: Ken Raeburn <raeburn@ATHENA.MIT.EDU> To: <mar@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Mark A. Rosenstein's message of Fri, 24 Jun 88 13:54:17 EDT, From: <mar@ATHENA.MIT.EDU> Date: Fri, 24 Jun 88 13:54:17 EDT This is further complicated by the fact that there are no C library routines for setenv() or unsetenv(). Actually, the C libraries that Athena is running now (in version 6.0) do have these routines. However, this isn't sufficiently portable, and it's sorta kludgy. I would propose that either the library be changed back to allow root to write to people's ticket files, or a routine be added to the kerberos library that will change the ticket file location (i.e. do a setenv(KRBTKFILE, [location])). The first is probably okay as long as it doesn't include depositing new ticket-granting tickets there. Regardless of this, I would like to see the second done as well. --[0409]-- \f [0410] daemon@TELECOM.MIT.EDU Kerberos 06/24/88 14:32 (17 lines) Subject: Re: ticket file access From: John T Kohl <jtkohl@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU In-Reply-To: Mark Rosenstein's message, [0408] All that is required to change the library's idea of where the tickets should live is to define a function tkt_string(). An example from the Zephyr server: static char tkt_file[] = ZEPHYR_TKFILE; /* Hack to replace the kerberos library's idea of the ticket file with our idea */ char * tkt_string() { return(tkt_file); } --[0410]-- \f [0411] daemon@TELECOM.MIT.EDU Kerberos 06/25/88 01:34 (12 lines) Subject: Authentication Schemes From: malik@GONDOR.CS.PSU.EDU (Sohail Malik) To: kerberos@ATHENA.MIT.EDU If I am interested in a thorough knowledge of the way the Kerberos authentication system works, which documents should I read to get right up to date? Thanks for any help you can provide, -Sohail malik@gondor.psu.edu miy@psuvm.bitnet --[0411]-- \f [0412] daemon@TELECOM.MIT.EDU Kerberos 06/27/88 08:53 (9 lines) Subject: info on kerberos authentication wanted From: Karl Kleine -- FZI Karlsruhe <kleine%ira.uka.de@RELAY.CS.NET> To: kerberos@ATHENA.MIT.EDU we would like to get detailled information on kerberos (per email, mit reports, info on software availability, incl. university site licence). Karl Kleine, Forschungszentrum Informatik an der Universitaet Karlsruhe (FZI), Haid-und-Neu-Str. 10-14, D-7500 Karlsruhe, West Germany kleine@uka.uucp, {...}!unido!uka!kleine, kleine@germany.csnet, +49-721-690639 --[0412]-- \f [0413] daemon@TELECOM.MIT.EDU Kerberos 06/27/88 16:07 (28 lines) Subject: woe the (poor) commercial site From: Jordan Hayes <jordan@ADS.COM> To: kerberos@ATHENA.MIT.EDU From: warrens@Sun.COM (Warren A. Smith) Date: Mon, 27 Jun 88 11:41:46 PDT To: jordan@ads.com Subject: Re: Kerberos modifications to NFS Cc: kc%sunned@Sun.COM The changes for Kerberos involve source level changes. We don't support object changes for Kerberos at this time. To get a commercial NFS source license (which gets you a reference port of NFS to the Berkeley 4.3 kernel) contact K.C. Chan (kcchan@sun.com) at 415/336-2184. This license costs $25,000 and is a full implementation of 4.3BSD with NFS, Yellow Pages, RPC/XDR, REX, Lock Manager, Status Monitor. K.C. can tell you about university licensing. Well, I don't have $25,000 for a source license, but I still want to run this code. Do I have any other options? Why can't we get objects? Anyone wanna slip me some .o's? (i assume this doesn't break any license agreements, but correct me if i'm wrong) ... seems to me that .o's aren't an unreasonable request ... Also, anybody using Kerberos on a 4.0 machine? /jordan --[0413]-- \f [0414] daemon@TELECOM.MIT.EDU Kerberos 06/27/88 18:39 (11 lines) Subject: authentication ... From: suneast!db@SUN.COM (David Brownell) To: kerberos@ATHENA.MIT.EDU Can you direct me to a few places that Kerberos is published? I'd like to read about it. Also in general more Athena stuff: do you have a collection of papers? Or should I go to some library on campus? - Dave Brownell Sun ECD Networking --[0414]-- \f [0415] daemon@TELECOM.MIT.EDU Kerberos 06/28/88 04:59 (26 lines) Subject: the Kerberos authentication system From: Jonas Dahl`n <jonas%holtec.se@RELAY.CS.NET> To: kerberos@ATHENA.MIT.EDU Read about Kerberos in SUN-SPOTS. >More information about the Kerberos authentication system can be obtained >by mailing to kerberos@athena.mit.edu. Please send more info. Yours, jonas -- Jonas Dahlen ! E-mail: Holistic Technology AB (Holtec) ! jonas@holtec.se Gr|na gatan 59 ! ..!mcvax!enea!chalmers!holtec!jonas S-414 54 Gothenburg ! Sweden ! tel: +46 31 420370 ! telfax:+46 31 247456 ! telex: 20182 Telegot S, Holtec ----------------------------------------------------------------------------- My opinions are my own, and do not reflect official policy, either explicit or implied, of the Holistic Technology AB. --[0415]-- \f [0416] daemon@TELECOM.MIT.EDU Kerberos 06/28/88 14:21 (5 lines) From: FEN@XX.LCS.MIT.EDU To: kerberos@ATHENA.MIT.EDU May I have the top level architectural description? Tnx. --[0416]-- \f [0417] daemon@TELECOM.MIT.EDU Kerberos 06/30/88 01:11 (15 lines) Subject: Authentication system information requested From: ihnp4!drutx!drusp!fidder@EDDIE.MIT.EDU To: drutx!ihnp4!kerberos@ATHENA.MIT.EDU Hi, If you have a standard burb you send out on information on you authentication system (being used by the NFS id mapping service) I would be interested in see a copy. Thanks, Ted Fidder ihnp4!drutx!fidder --[0417]-- \f [0418] daemon@TELECOM.MIT.EDU Kerberos 06/30/88 23:50 (37 lines) Subject: <unspecified> From: G.Eustace%massey.ac.nz@RELAY.CS.NET To: kerberos@ATHENA.MIT.EDU X-Vms-To: IN%"kerberos@ATHENA.MIT.EDU" Reply-to: CSnet or ACSnet:G.Eustace@massey.ac.nz or: INTERnet:G.Eustace%massey.ac.nz@relay.cs.net or: JANET/Greybook: G.Eustace@NZ.AC.MASSEY ======================================================================= Subject: Problems with NFS environments. We are currently trying to set up a network with about 500 pcs, and some 5 servers. I am having difficulty trying to work out how to cope with the problems of user authentication, allocation of user ids etc. The problem is that we anticipate a user community of approx. 1200 people to be using the 500 workstations, so each more station will have multiple users and each user can use multiple stations. These are some more concerns: 1. The NFS export lists are on the basis of host, not user, which presents security difficulties. 2. What sort of user names does one use, we would like to have J.Smith etc, but unix then thinks you are are caps only teletype! 3. What is going to happen to interactive logins that have to search a passwd file that has thousands of entries. The comments I have seen regarding kerberos seem to suggest that some of these problems have already been addressed. Any help or info you can send would be much appreciated. ----------------------------------------------------------------------- Glen Eustace, Software Mgr, Comp.Cntr, Massey Uni, Palmerston Nth, N.Z. uucp: {uunet,watmath!cantuar}!vuwcomp!csvaxa!glen DTE: 530163000005 Janet/Greybook: G.Eustace@nz.ac.massey Phone: +64 63 69099 x7440 CSnet/ACSnet/Internet: G.Eustace@massey.ac.nz New Zealand = GMT+12 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> --[0418]-- \f [0419] daemon@TELECOM.MIT.EDU Kerberos 07/01/88 14:38 (31 lines) Subject: using Kerberos with AFS, some comments From: Mike Kazar <kazar+@ANDREW.CMU.EDU> To: kerberos@ATHENA.MIT.EDU I've been looking at making the Andrew file system authentication system "compatible" with the Kerberos authentication system. The most fundamental level of compatibility we can aim for is compatibility at the ticket level: our file system has to understand Kerberos-generated tickets, otherwise no other level of compatibility even makes sense. The only problem we have in using Kerberos-format tickets in our system is that the lifetime field simply does not allow us to represent long expiration times. We have been running the Andrew file system using tickets (of our own design) that expire in 25 hours, and have been repeatedly criticized by our users on the grounds that this value is too small. We've promised to address that problem in our "next" system, which we hope to make Kerberos-based. I believe that it is reasonable, in certain restricted applications, for ticket lifetimes to be as long as two weeks, rather than the 21+ hours in the present format. Note that we're *not* arguing for the default ticket timeout value to be weeks, simply that for certain applications, long values make sense. I would therefore suggest/request/whatever that the Kerberos ticket lifetime field be increased from its current 8 bits (of 5 minute resolution) to 16 bits (of unsigned 5 minute resolution), increasing the maximum ticket lifetime representable to about 227 days. I'll send more comments after the July 4 weekend, but I believe this to be our only make-or-break problem. Mike Kazar (kazar+@andrew.cmu.edu) --[0419]-- \f [0420] daemon@TELECOM.MIT.EDU Kerberos 07/01/88 15:29 (27 lines) Subject: short Kerberos ticket times From: fin@UF.MSC.UMN.EDU (Craig Finseth) To: kazar+@ANDREW.CMU.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Mike Kazar's message of Fri, 1 Jul 88 14:23:52 -0400 (EDT) <cWmxWsy00Uk-M250V2@andrew.cmu.edu> We are wondering about the short times ourselves. In our environment, it is not unusual to have a single "batch" job (i.e., detached shell script) run for over two weeks. This job will have been checkpoint/restarted several times during its lifetime. In some cases, the job may be held for over a day before it is restarted. Is it reasonable to ask that a researcher log in once each day so that their job doesn't stop? We checkpoint/restart jobs during system maintenance time (like 2 to 5 AM). For jobs that started before 8 AM the previous day, do we have to tell our researchers "sorry, but you have to get up an log in in order to make use of the early morning time?" We haven't gotten far enough to actually encounter this problem in real life: we are just "looking for trouble" that we may encounter down the road. Any ideas? Craig A. Finseth fin@uc.msc.umn.edu [CAF13] Minnesota Supercomputer Center, Inc. (612) 624-3375 --[0420]-- \f [0421] daemon@TELECOM.MIT.EDU Kerberos 07/04/88 17:20 (39 lines) Subject: <unspecified> From: G.Eustace%massey.ac.nz@RELAY.CS.NET To: kerberos@ATHENA.MIT.EDU X-Vms-To: IN%"kerberos@ATHENA.MIT.EDU" Reply-to: CSnet or ACSnet:G.Eustace@massey.ac.nz or: INTERnet:G.Eustace%massey.ac.nz@relay.cs.net or: JANET/Greybook: G.Eustace@NZ.AC.MASSEY ======================================================================= Subject: Problems with setting up and administrating NFS environments. We are currently trying to set up a network with about 500 pcs, and some 5 servers. I am having difficulty trying to work out how to cope with the problems of user authentication, allocation of user ids etc. The problem is that we anticipate a user community of approx. 1200 people to be using the 500 workstations, so each more station will have multiple users and each user can use multiple stations. These are some more concerns: 1. The NFS export lists are on the basis of host, not user, which presents security difficulties. 2. What sort of user names does one use, we would like to be able to have sensible names like J.Smith, W.Fitzgerald etc. but Unix doesn't like '.'s or names >8 characters, and some versions aren't to keen on capital letters. 3. What is going to happen to interactive logins that have to search a passwd file that has thousands of entries. The comments I have seen regarding kerberos seem to suggest that some of these problems have already been addressed. Any help or info you can send would be much appreciated. ----------------------------------------------------------------------- Glen Eustace, Software Mgr, Comp.Cntr, Massey Uni, Palmerston Nth, N.Z. uucp: {uunet,watmath!cantuar}!vuwcomp!csvaxa!glen DTE: 530163000005 Janet/Greybook: G.Eustace@nz.ac.massey Phone: +64 63 69099 x7440 CSnet/ACSnet/Internet: G.Eustace@massey.ac.nz New Zealand = GMT+12 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> --[0421]-- \f [0422] daemon@TELECOM.MIT.EDU Kerberos 07/05/88 11:12 (26 lines) Subject: short Kerberos ticket times From: fin@uf.msc.umn.edu (Craig Finseth) To: kazar+@andrew.cmu.edu, kerberos@ATHENA.MIT.EDU In-Reply-To: Mike Kazar's message of Fri, 1 Jul 88 14:23:52 -0400 (EDT) <cWmxWsy00Uk-M250V2@andrew.cmu.edu> We are wondering about the short times ourselves. In our environment, it is not unusual to have a single "batch" job (i.e., detached shell script) run for over two weeks. This job will have been checkpoint/restarted several times during its lifetime. In some cases, the job may be held for over a day before it is restarted. Is it reasonable to ask that a researcher log in once each day so that their job doesn't stop? We checkpoint/restart jobs during system maintenance time (like 2 to 5 AM). For jobs that started before 8 AM the previous day, do we have to tell our researchers "sorry, but you have to get up an log in in order to make use of the early morning time?" We haven't gotten far enough to actually encounter this problem in real life: we are just "looking for trouble" that we may encounter down the road. Any ideas? Craig A. Finseth fin@uc.msc.umn.edu [CAF13] Minnesota Supercomputer Center, Inc. (612) 624-3375 --[0422]-- \f [0423] daemon@TELECOM.MIT.EDU Kerberos 07/05/88 16:15 (16 lines) Subject: file server mappings From: chariot@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Reply-To: chariot@ATHENA.MIT.EDU I currently implementing authentication for Vice using kerberos. The question I have is should file server mappings (a mapping is what tells the server that uid XXX on host YY is really user ZZZ) expire? In the current athena set up if you log in and work for 8 hours, your kerberos tickets will expire preventing you from reading your mail and attaching new filesystems. However, you can still read and write to all already attached filesystems, including your home directory. The question is, should your ability to read and write to already existing filesystems expire when your tickets do? Comments would be great. Note that this is just a private opinion poll. - Mark --[0423]-- \f [0424] daemon@TELECOM.MIT.EDU Kerberos 07/05/88 18:01 (58 lines) Subject: Re: Misc Kerberos questions From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM File Server Mappings- This is a very deep question, way beyond Kerberos per se. It is really a question of what is the access control model. Most systems (Unix, VMS, etc.) check access when a file is first opened, but once the file is opened, changing the protection on the file has no effect on existing clients. Some systems may check access on EVERY ACCESS. Kerberos should be consistent with whatever access control model is in use. For example, if the VICE model is that access is checked on every file open, then if your Kerberos ticket expires, subsequent open requests should treat it as just as if the access controls on the file had changed -- the client can no longer authenticate as a user granted access. But just as in the local case without Kerberos, once the file has been opened, access may continue. Now, of course, one can change the existing model to cutoff access to open files. But then one should logically cutoff access to open files if the protection on the file is changed while the file is open, such that the existing client would be excluded from the current access mode. Short Tickets- ---------------- In the Kerberos design maximum ticket lifetimes were intentionally kept short to be consistent with the Athena workstation environment and common security practices. The main concern is that in an open workstation environment like Athena, the tickets may be exposed on the workstations after the user has left, either due to forgetting to clean up, or system idiosyncracies. Also recall that the workstations have no hardware protection for keys or tickets. So the longer the lifetime, the more exposed the system is for misuse. And, designed as part of a security system, this is precisely what we were trying to prevent. There is a second tier of arguments centered around crypto-attacks, where the general principle is to restrict the amount of data encrypted with any single key; Kerberos uses the same session key between parties for the entire lifetime of the ticket. The crypto threat is less important in the university environment. Also note that Kerberos does not support any notion of revocating tickets. Once issued, they are valid until they expire, unless the recipient makes a conscious decision to reject a particular ticket based on some knowledge learned from an external channel. So, while you could extend the maximum lifetime allowed in the ticket, to do so would weaken the protection environment Kerberos offers, and weaken the damage control enforced by ticket lifetimes. I don't feel that it is unreasonable to ask a researcher to login once a day in order to gain Kerberos' benefits. Alternatively, if the security of the application is not crucial, don't use Kerberos for it. Nobody claimed that security is free. (p.s. the size of encrypted fields within the ticket must be minimized to minimize the performance cost of encryption.) Steve --[0424]-- \f [0425] daemon@TELECOM.MIT.EDU Kerberos 07/05/88 21:26 (21 lines) Subject: Re: file server mappings From: Mike Kazar <kazar+@ANDREW.CMU.EDU> To: kerberos@ATHENA.MIT.EDU In-Reply-To: <8807052008.AA11009@VULCAN.MIT.EDU> The current authentication system at use at CMU cuts off authenticated access to AFS (aka Vice) on ticket expiration as soon as it discovers the ticket has expired, i.e. when the cache manager next tries an RPC to the file server. The file server checks the ticket status cached in its client status entry, on every RPC, and returns a distinctive error code when the ticket expires. The cache manager detects this, and switches to an unauthenticated RPC connection for the remaining operations. The other possibility would be to only check the expiration time when a ticket has to be decoded. In general, our user's didn't like that system as much because it was less predictable: they generally assumed the tickets never expired, and were surprised when occasionally they did. And, of course, it leaves you more vulnerable to security problems. I'd vote for matching the current Vice semantics: stop the accesses as soon as the tickets expire. --[0425]-- \f [0426] daemon@TELECOM.MIT.EDU Kerberos 07/05/88 21:37 (21 lines) Subject: Re: Misc Kerberos questions From: Mike Kazar <kazar+@ANDREW.CMU.EDU> To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM In-Reply-To: <8807052151.AA17136@decwrl.dec.com> The problem with short ticket lifetimes is that our researchers *do* find it unreasonable to login (more than) once a day to keep their computation running. And they've told us so. They like to start long batch jobs and walk away, often for a weekend. Most of them do things like setup cron jobs to re-authenticate themselves periodically so that they can store their data back to the file servers. When they make some mistake in setting up these re-authentication jobs, they do not blame themselves for their lost efforts, they blame us. And to a certain extent, they're right. They have physically secure machines and are not really concerned with a cryptographic attack on their tickets. A ticket expiring in O(72) hours is exactly the level of security they want. While I realize that ticket lengths must be minimized to keep encryption costs down, I think the expiration field was trimmed down just a bit too much in the original design. An extra byte encrypted in a 60 byte or so ticket shouldn't really be noticible. --[0426]-- \f [0427] daemon@TELECOM.MIT.EDU Kerberos 07/05/88 21:56 (17 lines) Subject: Re: Misc Kerberos questions From: "Stuart Levy" <slevy@UC.MSC.UMN.EDU> To: MILLER%erlang.DEC@DECWRL.DEC.COM, kazar+@ANDREW.CMU.EDU, Would there be some way to cause file accesses to freeze, rather than abort, when a ticket for file access or some such thing expired? It would still be annoying, but much less annoying than just losing a multi-hour (or day, or week) job. Ticket lifetimes would be much less of an issue. I'm not sure what the best way to do this would be. At a minimum, file servers would have to distinguish expired mappings/tickets from ordinary access control failure and return a different error code. But then what? Should the client just go and suspend the process? Sleep for a while and retry? Send a message to a daemon (which could try to notify the user that the job had gone to sleep)? Stuart Levy --[0427]-- \f [0428] daemon@TELECOM.MIT.EDU Kerberos 07/06/88 07:57 (24 lines) Subject: Re: RPC for communicating with Kerberos To: Mike Kazar <kazar+@andrew.cmu.edu> Cc: kerberos@ATHENA.MIT.EDU, dachurch@ATHENA.MIT.EDU In-Reply-To: Your message of Tue, 05 Jul 88 22:16:54 -0400. From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Actually the non-idempotent Kerberos operations are done via a different protocol, which is missing, you're right. It's being re-written. The server is called the "admin server" and the clients which interface with it are "kpasswd" and "kadmin", with the obvious functionality. In addition, our "register" program talks to the admin server in order to allocate a user name for a new user and set the initial password. Doug Church is designing the new admin server and should have specs to post soon. I would like to see some RPC system used for both the admin server and the authentication server. I believe Bill Sommerfeld is looking at using Apollo's RPC with Kerberos (Bill?) and it would be interesting to compare theirs and CMU's. Jennifer --[0428]-- \f [0429] daemon@TELECOM.MIT.EDU Kerberos 07/06/88 12:42 (19 lines) Subject: NFS Authorization Server From: "M. D. Parker x2130" <chip!mparker@NOSC.MIL> To: kerberos@ATHENA.MIT.EDU Greetings... I'd be interested in obtaining more information about the Kerberos Authorization system. =============================================================================== M. D. Parker ARPANet: chip!mparker@nosc.mil UNIX Systems Manager UUCP: ...{ucsd,nosc,hp-sdd,crash}!chip!mparker Phone: (619) 457-2340 USPS: M/A-COM Government Systems, 3033 Science Park Road, San Diego, CA 92121 Disclaimer: Opinions expressed are my own and not necessarily that of M/A-COM Government Systems Inc. --[0429]-- \f [0430] daemon@TELECOM.MIT.EDU Kerberos 07/06/88 13:33 (64 lines) Subject: re: should mappings expire? From: Mark Lillibridge <chariot@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU, athena-ws@ATHENA.MIT.EDU Reply-To: chariot@ATHENA.MIT.EDU > I don't feel that it is unreasonable to ask a researcher to login once a > day in order to gain Kerberos' benefits. Alternatively, if the security > of the application is not crucial, don't use Kerberos for it. Nobody > claimed that security is free. (from Steve) Security if used for filesystem authentication, is not optional. If Athena decides that all filesystem accesses must be authenticated (this is the current policy), then the researcher must keep himself authenticated in order to read or write any of his files. Very few applications will work without some form of file storage. Hence, security becomes mandatory to every application, not just some. The choice of whether they want the security at the price of having to log in once a day has been taken out of the hands of the users. The way I see it (correct me here if I am wrong) is that workstations of the Athena/Andrew type get used in two distinct ways. One is as a public workstation being used by a user to read mail, write a paper, or play a game. Total usage time is normally less than eight hours, sometimes as much as 30 hours (we are talking about MIT/CMU here...) but only with extreme rarity more than 30 hours. Very few people are going to sit at a terminal with no food/drink for 30 hours straight. For this usage, requiring the user to reauthenticate every n hours, n>=8, is not too bad as he is physically present and can take any needed corrective action. It is still going to be a fairly big surprise to the user the first time his tickets expire. This will be particularly bad if the first time he discovers this is the day he is writting his final paper. (i.e., spending 30 hours on the computer normally happens only just before a major project of some sort is due) The Vice system solves this problem for this group of people fairly well by simply upping the default ticket lifetime to 25 hours, ensuring that very few students will encounter expiration at all. The few that do probably fall into the second class. The second type is the private workstation in someone's office or in an area of a lab all of whom's reasearchers trust each other. In this situation, it is reasonable for someone to want to run a data collection job while he's on vacation. 72 hours or more is perfectly reasonable for a private workstation. (i.e., batch jobs over the weekend) However, Vice does not currently provide (to my knowledge anyways...) any real means of supporting researchers wishing to do this. Ironically, the current athena setup does support this. Since in the current athena setup tickets expire but not mappings, so long as no services needing tickets need to be used (e.g., to read mail), batch jobs on private workstations can run forever with no problems. It would seem to me that the ability to create tickets with any length and using 25-30 hours as the default ticket lifetime for normal tickets would solve most of the problems abet at a loss of security. What would be nice (hint, hint, kerberos developers) is a utility that would allow you to throw away selective tickets from your ticket file. This would allow me to kinit -lifetime 72, "attach" my home filesystem, and then destroy all my tickets except my file server tickets. This would greatly lower the security risk if I did lose my tickets. This is basically what the current athena system lets you do now. - Mark Lillibridge --[0430]-- \f [0431] daemon@TELECOM.MIT.EDU Kerberos 07/06/88 16:00 (33 lines) Subject: Another realm... From: Doug Alan <nessus@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU Henry told me that I should forward the following message here... From: Doug Alan <nessus@athena.mit.edu> To: athena-ws@athena Date: Wed, 06 Jul 88 03:42:14 EDT I set up an NFS server, FENCHURCH.MIT.EDU, which is in the kerberos realm EECS.MIT.EDU. I want to get r/w access to my files on fenchurch from an Athena workstation. Everything works fine if I change /etc/krb.conf so that the workstation is in the EECS.MIT.EDU realm, but I'd rather not have to do this. How do I tell fenchurch that 'nessus@ATHENA.MIT.EDU' is equivalent to 'nessus@EECS.MIT.EDU'? I set up the '/usr/etc/credential' file as follows, but it doesn't work: nessus:654:64:844:390:75:64 nessus@ATHENA.MIT.EDU:654:64:844:390:75:64 nobody:32767:9999:74 'nfsid fenchurch map' outputs the following error: nfsid: Can't find ticket (get_credentials) (for instance fenchurch realm ATHENA.MIT.EDU) No UID maps installed |>oug /\lan P.S. How it should work, is that I should be able to be simultaneously authenticated as multiple users in multiple realms, but I've been told that something similar to what I tried to do above is what I'll have to settle for, at the moment. --[0431]-- \f [0432] daemon@TELECOM.MIT.EDU Kerberos 07/06/88 16:49 (35 lines) Subject: Re: RPC et al From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM Re: Short Ticket Lifetime-- Possible workaround - It might be possible to tweek the code in a few places that set or read the the ticket lifetime to change the effective units from 5minutes to some larger value. This would not involve any protocol change. It wouldn't interoperate properly with "vanilla" installations. Re: RPC -- Mike Kazar's first point -- re a duplicate response -- is well taken. I don't know what the existing code does, but the request and response both carry the requestor's timestamp, so should always be matched up appropriately, discarding extraneous responses. Note that the responses are not quite idempotent, since they will contain different session keys. The second point is also on target, that is some of the management operations are not idempotent, and need more than just a raw datagram transport. I don't know what they currently run on -- I thought it was TCP, which will offer the right behavior. An RPC that provides *At-most-once* semantics is one way to address these issues, but not the only way. You need duplicate suppression and retransmission at the transport layer to get the right behavior -- TCP could do all this, or certain request/response protocols, or certain RPC protocols. There are a multitude of RPC protocols around, all of which do not provide the right services. Again, the only real concern about switching the protocols to be RPC based, given the right semantics, is interoperability, and perhaps performance at the potential bottlenecks such as the Kerberos server. Steve --[0432]-- \f [0433] daemon@TELECOM.MIT.EDU Kerberos 07/07/88 15:17 (20 lines) Subject: Re: RPC et al From: Mike Kazar <kazar+@ANDREW.CMU.EDU> To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM In-Reply-To: <8807062040.AA15522@decwrl.dec.com> Steve Miller suggests: It might be possible to tweek the code in a few places that set or read the the ticket lifetime to change the effective units from 5minutes to some larger value. This would not involve any protocol change. It wouldn't interoperate properly with "vanilla" installations. The biggest problem with this suggestion is that the ticket lifetime is interpreted by the application server, and this server does not know how to interpret the lifetime field. For instance, if we build Andrew file system servers that interpret the lifetime field in 4 hour units, instead of the standard 5 minute units, then a standard MIT kerberos ticket will be interpreted "incorrectly" by an Andrew file server here at CMU (if reached over NFSnet, say). In addition, folks at MIT will have to modify Andrew file server releases to remove this lifetime conversion factor on every release. --[0433]-- \f [0434] daemon@TELECOM.MIT.EDU Kerberos 07/07/88 18:07 (11 lines) Subject: nfsid From: qjb@ATHENA.MIT.EDU To: nessus@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU I don't know how much of your problem is caused by nfsid, but the current version of nfsid will assume that the realm is ATHENA.MIT.EDU if the host name ends with .MIT.EDU. It does this even after finding out what realm it should be in! While working in the SMS_TEST realm, we had to build a new nfsid to solve the problem, but I haven't tried using it for inter- realm stuff. . --[0434]-- \f [0435] daemon@TELECOM.MIT.EDU Kerberos 07/08/88 16:15 (28 lines) Subject: Liftimes in tickets From: Clifford Neuman <bcn%arctic.uit.uninett@TOR.NTA.NO> To: <kerberos@ATHENA.MIT.EDU> This message is based on very little knowledge of what has been discussed on this issue so far. I am in Norway, and I do not have my mail forwarded to me. If you reply, please cc this address directly if you want me to see the message before I get home in two weeks. Anyway, I think I agree with the CMU people. The choice of 1 byte and 5 minute granularity was made for efficiency reasons. It was an acceptable choice for the Athena environment, but if we expect Kerberos to become a standard, then we have to make it useful when people want liftimes that are longer than are allowed in the current implementation. Now is the time to do it. I would also suggest changing the granularity to 1 minute. 5 minutes was chosen because given 1 byte, that allowed a reasonable range for uses that we expected in our environment. Without the one byte restriction, 5 becomes a somewhat arbitrary choice. If someone can suggest a choice that is intuitively more appropriate than 1 minute, choose that as the granularity. By the way, at this course (ARCTIC '88) Kerberos has been mentioned a couple of times, and a number of people seem to think that it is likely get wider use and to become a standard in the same manner X did. ~ Cliff --[0435]-- \f [0436] daemon@TELECOM.MIT.EDU Kerberos 07/09/88 14:46 (24 lines) Subject: Re: nfsid From: "Robert S. French" <rfrench@ATHENA.MIT.EDU> To: <qjb@ATHENA.MIT.EDU> Cc: nessus@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: <qjb@ATHENA.MIT.EDU>'s message of Thu, 07 Jul 88 17:55:22 EDT From: <qjb@ATHENA.MIT.EDU> Date: Thu, 07 Jul 88 17:55:22 EDT I don't know how much of your problem is caused by nfsid, but the current version of nfsid will assume that the realm is ATHENA.MIT.EDU if the host name ends with .MIT.EDU. It does this even after finding out what realm it should be in! While working in the SMS_TEST realm, we had to build a new nfsid to solve the problem, but I haven't tried using it for inter- realm stuff. . This is proper behavior. The krb_getrealm call looks in /etc/krb.realms to map domains to Kerberos realms. It knows what realm YOU are in, but not what realm the host you're talking to is in. The proper fix is for you to add lines to /etc/krb.realms to map the hosts you're trying to talk to to the SMS_TEST realm explicitly. Rob --[0436]-- \f [0437] daemon@TELECOM.MIT.EDU Kerberos 07/09/88 15:10 (14 lines) Subject: Timestamps From: Clifford Neuman <bcn%arctic.uit.uninett@TOR.NTA.NO> To: steiner@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: <8807091149.AA08041@BACH.MIT.EDU> I think that using an expiration timestamp instead of a liftime is fine, but we should still have a starting time since that information is used to make sure the ticket is valid. I also like the idea of allowing postdated tickets as suggested, and whatever approach is considered, this should be taken into account. If we are going to make such changes now, then now is also the time to reconsider the form of the timestamp. We should be using some standard time format other than that found in Unix. ~ Cliff --[0437]-- \f [0438] daemon@TELECOM.MIT.EDU Kerberos 07/10/88 22:25 (7 lines) Subject: nfsid From: qjb@ATHENA.MIT.EDU To: rfrench@ATHENA.MIT.EDU Cc: nessus@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: "Robert S. French"'s message of Sat, 9 Jul 88 14:35:50 EDT <8807091835.AA00332@CAROLINGIA.MIT.EDU> -- I have since discovered that by reading sources. My /etc/krb.realms file has been appropriately modified. --[0438]-- \f [0439] daemon@TELECOM.MIT.EDU Kerberos 07/11/88 17:58 (18 lines) Subject: Re: Liftimes in tickets From: Jim Bloom <jb%cs.brown.edu@RELAY.CS.NET> To: Clifford Neuman <bcn%arctic.uit.uninett@TOR.NTA.NO> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of "08 Jul 88 12:55:00 GMT." I agree that the liftimes need a longer timeout. I personally think the granularity should be in seconds. I realize this is probably much finer than needed, but it makes calculations easier. Most machines have a clock which counts seconds (plus maybe finer times). Working in minutes, more arithmetic is required every time the lifetime is checked. The disadvantage of this is that the field would need to be at least 3 bytes long to record a reasonable maximum timeout (2 bytes maxs out at 18 hours). What's the tradeoff of encrypting additional bytes versus having to convert time units (a multiplication or division)? Jim --[0439]-- \f [0440] daemon@TELECOM.MIT.EDU Kerberos 07/11/88 18:07 (8 lines) Subject: Questions about names & instances From: Ted Anderson <ota+@andrew.cmu.edu> To: kerberos@ATHENA.MIT.EDU Is there a restricted set of legal characters in names and instances? If not may I suggests something like upper/lower case letters, numbers, underscore, and hyphen? Also is there a wild card instance, which matches any (or all) instances? Ted Anderson --[0440]-- \f [0441] daemon@TELECOM.MIT.EDU Kerberos 07/11/88 18:59 (18 lines) Subject: Questions about names & instances From: Mark Lillibridge <chariot@ATHENA.MIT.EDU> To: ota+@ANDREW.CMU.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Ted Anderson's message of Mon, 11 Jul 88 15:50:42 -0400 (EDT) <4WqFkGy00VseE0eG8l@andrew.cmu.edu> Reply-To: chariot@ATHENA.MIT.EDU > Is there a restricted set of legal characters in names and instances? If not > may I suggests something like upper/lower case letters, numbers, underscore, > and hyphen? Also is there a wild card instance, which matches any (or all) > instances? > Ted Anderson I would like to add "." to that list for instances only. It is needed in some cases. I.e., service name = "vice", instance = "wm.athena.mit.edu". - Mark Lillibridge --[0441]-- \f [0442] daemon@TELECOM.MIT.EDU Kerberos 07/11/88 21:44 (29 lines) Subject: interested in authentication for batch jobs From: Jerry Scharf <jerry@PIONEER.ARC.NASA.GOV> To: kerberos@ATHENA.MIT.EDU Cc: bkaufman@PIONEER.ARC.NASA.GOV Hi, I'm new to the group. If this has been discussed before, please point me to the archives (and even tell me where they might be.) I am interested in using Kerberos as the authenticator for some of our machines. I have read some papers on the subject and think I understand most of the ideas involved. I have some problems when I get to systems that are both batch and interective in usage. The time limit of 22 hours (255 5 minute ticks) is limiting in both the run time and the wait time before a job runs. In the interactive use, the user is required to retype their password, which doesn't seem to work for a batch job. There is also the problem that Kerberos doesn't have the idea of an authenticated agent that I could see. The way I look at it, the batch job itself is not authenticated, but instead is operating as an agent of the authenticted user. This means that all the tickets of the user should be passed to the batch job, along with the decrypting key of the user. This looks unsafe to me at first glance. Are there any cheap workarounds to these problems that don't compromise the security? Are there any plans to extend Kerberos in some of these directions? Can people point me to the liturature that will help me understand this, or better yet send me copies of papers by email? (Will Spaceman Spiff live through the next episode)? Jerry Scharf NASA Ames Research Center --[0442]-- \f [0443] daemon@TELECOM.MIT.EDU Kerberos 07/12/88 01:03 (27 lines) Subject: Crossing Realms From: Doug Alan <nessus@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU So, is there anyone who would like to tell me the details of what I have to do to get inter-realm access to work? Let's say, for example, that from an Athena workstation, WS.MIT.EDU, I want to write files on the NFS server, SERVER.MIT.EDU, which is in the EECS.MIT.EDU domain. Let's also say that there is a kerberos server for the EECS.MIT.EDU domain called KERBEROS.EECS.MIT.EDU. Before this will work, do KERBEROS.EECS.MIT.EDU and KERBEROS.MIT.EDU have to have exchanged some kind of password between them so that they will be able to identify each other? If so, is this done with the usual service instance mechanism, with a password that goes in /etc/srvtab? What is the name of this instance? Then I have to add a line to /usr/etc/credentials on SERVER.MIT.EDU, to grant access to nessus@ATHENA.MIT.EDU? What does this line look like? "nessus@ATHENA.MIT.EDU:654"? Then I have to add a line to /etc/krb.realms on WS.MIT.EDU? What does this line look like? "server.mit.edu EECS.MIT.EDU"? Is there anything else that I am missing? |>oug /\lan --[0443]-- \f [0444] daemon@TELECOM.MIT.EDU Kerberos 07/12/88 14:29 (50 lines) Subject: Re: Crossing Realms From: Jon Rochlis <jon@BITSY.MIT.EDU> To: Doug Alan <nessus@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Doug Alan's message of Tue, 12 Jul 88 00:57:52 EDT, From: Doug Alan <nessus@ATHENA.MIT.EDU> Date: Tue, 12 Jul 88 00:57:52 EDT Sender: nessus@WONKO.MIT.EDU Before this will work, do KERBEROS.EECS.MIT.EDU and KERBEROS.MIT.EDU have to have exchanged some kind of password between them so that they will be able to identify each other? If so, is this done with the usual service instance mechanism, with a password that goes in /etc/srvtab? What is the name of this instance? Yes you need to share a secret with each realm you want to play ball with. It is not srvtab based. Rather the ATHENA realm has a entry for krbtgt.EECS.MIT.EDU@ATHENA.MIT.EDU which has the same key as the entry in the EECS realm for krbtgt.ATHENA.MIT.EDU@EECS.MIT.EDU ... (Give me or Jeff or Ron a call if you actually want to do this and we'll set it up). Then I have to add a line to /usr/etc/credentials on SERVER.MIT.EDU, to grant access to nessus@ATHENA.MIT.EDU? What does this line look like? "nessus@ATHENA.MIT.EDU:654"? That would be my guess (that's what Sommerfeld maintained when the credentials stuff was done). If it doesn't work that way it should. Then I have to add a line to /etc/krb.realms on WS.MIT.EDU? What does this line look like? "server.mit.edu EECS.MIT.EDU"? Yes, I think that is right. Is there anything else that I am missing? /etc/krb.conf on WS.MIT.EDU has to have a line like "EECS.MIT.EDU kerberos.eecs.mit.edu" in order for the workstation to be able to figure out how to talk to the EECS kerberos server. The basic idea is that you get a TGT for EECS from the ATHENA server (krbtgt.EECS.MIT.EDU@ATHENA.MIT.EDU), and present it to the EECS kerberos server in order to get a ticket for rvdsrv.server@EECS.MIT.EDU (which has your identity nessus@ATHENA.MIT.EDU sealed inside). You are not "authenticated" by the EECS realm at all, you are authenticated by the ATHENA realm and that is why you need to be able to specify a realm in the credentials file (or any other kind of access control list you might think of). -- Jon --[0444]-- \f [0445] daemon@TELECOM.MIT.EDU Kerberos 07/12/88 15:44 (33 lines) Subject: Re: Re: Lifetimes in tickets From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU From: DECWRL::"jb%cs.brown.edu@RELAY.CS.NET" "Jim Bloom 11-Jul-88 1553 EDT" 11-JUL-1988 18:09 To: Clifford Neuman <bcn%arctic.uit.uninett@TOR.NTA.NO> Subj: Re: Liftimes in tickets Cc: kerberos@ATHENA.MIT.EDU I agree that the liftimes need a longer timeout. I personally think the granularity should be in seconds. I realize this is probably much finer than needed, but it makes calculations easier. Most machines have a clock which counts seconds (plus maybe finer times). Working in minutes, more arithmetic is required every time the lifetime is checked. The disadvantage of this is that the field would need to be at least 3 bytes long to record a reasonable maximum timeout (2 bytes maxs out at 18 hours). What's the tradeoff of encrypting additional bytes versus having to convert time units (a multiplication or division)? Jim >> This is a bad tradeoff; encryption is much more expensive than arithmetic. >> For example, the moderately optimised Athena DES code took 2.5 milliseconds >> per 8 byte block, that is over 300 usec per byte on a Microvax II. And >> each byte in the ticket is encrypted twice at the Kerberos server, and >> once at the client and once at the server. By comparison, a single integer >> multiply or divide on a Microvax II is at most a few tens of microseconds >> (I don't have the exact figures handy), which is an order of magnitude >> cheaper. >> >> Steve. --[0445]-- \f [0446] daemon@TELECOM.MIT.EDU Kerberos 07/14/88 10:43 (15 lines) Subject: new beta test site To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Peter_King@NeXT.COM The NeXT corporate internet consists of several Ethernets, an Apollo ring net, several Appletalk nets, and a factory floor network. These networks are located at two sites in Palo Alto, California and the Fremont, California factory. T1 links connect these three sites. Numerous gateways tie the whole thing together. On these networks we have NeXT machines, SUN 3/50's and 3/60's, and Apple Macintoshes. We will be using Kerberos to authenticate access to a variety of network services, some of which are remote file systems (including NFS), and name services. --[0446]-- \f [0447] daemon@TELECOM.MIT.EDU Kerberos 07/14/88 15:53 (17 lines) Subject: information please From: Russell Brand <wuthel!brand@LLL-CRG.LLNL.GOV> To: kerberos@ATHENA.MIT.EDU Reply-To: brand@postgres.berkeley.edu Win Treese(treese@athena.mit.edu) suggested I send mail to this address find out about the Kerberos system is there an overview paper of it? thanks wuthel (brand@lll-crg.llnl.gov) --[0447]-- \f [0448] daemon@TELECOM.MIT.EDU Kerberos 07/19/88 06:59 (24 lines) Subject: Re: Questions about names & instances To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> > > Is there a restricted set of legal characters in names and instances? > > If not may I suggests something like upper/lower case letters, numbers, > > underscore, > > and hyphen? Also is there a wild card instance, which > > matches any (or all) instances? > > Ted Anderson > > I would like to add "." to that list for instances only. It is > needed in some cases. I.e., service name = "vice", instance = > "wm.athena.mit.edu". > > - Mark Lillibridge You can find the specifications for naming in the part of the Athena Technical Plan on Kerberos, pp 6-7. "." is not legal unless escaped with a backslash. Personally, I think this should be modified; it would be useful to be able to include "." in instances, as Mark points out. Wild card names and instances would also be useful. For example, when extracting a list of tickets for servers on a given host, we essentially need a wildcard name, and the host as instance. Jennifer --[0448]-- \f [0449] daemon@TELECOM.MIT.EDU Kerberos 07/19/88 12:15 (18 lines) Subject: Re: Problems with rlogin? To: kerberos@ATHENA.MIT.EDU Cc: Ken Raeburn <raeburn@ATHENA.MIT.EDU> In-Reply-To: Ken Raeburn <raeburn@ATHENA.MIT.EDU>'s message of Mon, 18 Jul 88 12:05:58 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > rlogin:Kerberos rcmd failed: Principal unknown (kerberos). > The problem here is that the machine is not properly registered with > Kerberos for providing rlogin service. The unknown principal is > "rcmd.m11-115-5", which Kerberos must know about in order for you to > get tickets: A second problem is that the error message doesn't report what principal name it couldn't identify. A much better error message would be: rlogin:Kerberos rcmd failed: Principal "rcmd.m11-115-5" unknown (kerberos). Jerry --[0449]-- \f [0450] daemon@TELECOM.MIT.EDU Kerberos 07/20/88 15:38 (29 lines) Subject: re: RPC for communicating with Kerberos To: Mike Kazar <kazar+@andrew.cmu.edu> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Mike Kazar <kazar+@andrew.cmu.edu>'s message of Tue, 5 Jul 88 22:16:54 -0400 (EDT) From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > From my reading of the Kerberos source code, administrative requests > are sent from the client to the Kerberos server repeatedly until the > client receives a response from the appropriate host (correct me if > I'm wrong). There seem to be several problems with this protocol: Mike, I think that the Kerberos protocols are clean on this point. The ticket acquisition and exchange protocols are all designed to be completely idempotent (for security reasons as well as the for the potential flakiness problems you mention) and the administrative functions that can't be idempotent are implemented with tcp, rather than doing retransmission themselves. > Unfortunately, in our environment, with a 2-3% packet loss rate (Unix > process to Unix process), and packets delays measured in seconds, > these problems should result in a moderately flakey overall system. I certainly sympathize with the performance problems you must have to put up with, but I believe that the Kerberos protocols are designed to cope with that level of confusion without anyone noticing. Jerry --[0450]-- \f [0451] daemon@TELECOM.MIT.EDU Kerberos 07/20/88 15:38 (17 lines) Subject: re: using Kerberos with AFS, some comments To: Mike Kazar <kazar+@andrew.cmu.edu> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Mike Kazar <kazar+@andrew.cmu.edu>'s message of Fri, 1 Jul 88 14:23:52 -0400 (EDT) From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > The only problem we have in using Kerberos-format tickets in our > system is that the lifetime field simply does not allow us to > represent long expiration times. I agree that inability to request long-lived tickets is a major problem with the current protocol design and that the next Kerberos release should fix it. Long-running computations are common in many environments, and there has to be a way to allow them to be authenticated. Jerry --[0451]-- \f [0452] daemon@TELECOM.MIT.EDU Kerberos 07/20/88 16:15 (34 lines) Subject: Re: Liftimes in tickets To: kerberos@ATHENA.MIT.EDU Cc: Clifford Neuman <bcn%arctic.uit.uninett@tor.nta.no>, In-Reply-To: Jim Bloom <jb%cs.brown.edu@RELAY.CS.NET>'s message of Mon, 11 Jul 88 15:53:11 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > I agree that the liftimes need a longer timeout. . . . > What's the tradeoff of encrypting additional bytes versus having to > convert time units (a multiplication or division)? One way to expand the range of timeouts, yet avoid encrypting additional bytes, is to notice that it isn't really important to allow a timeout of every possible integer value. If one allowed timeouts only of 1, 2, 4, 8, 16, etc. seconds, a single byte could be used, interpreted as an exponent of 2. That would allow timeouts ranging from 1 second to several gazillion years, but without very good resolution at the larger end. A practical version of this idea could be to reinterpret one byte in a rudimentary floating point: take the last three bits of the byte, shift them left the number of bits indicated by the first five bits, and consider the result to be the integer number of seconds wanted for the timeout. That would allow timeouts ranging from 1 second to 500 years, with good resolution. (One might limit the shift value to 29, so that the result would always fit in a 32-bit word. That would limit the upper end to about 100 years.) Jerry --[0452]-- \f [0453] daemon@TELECOM.MIT.EDU Kerberos 07/20/88 19:30 (14 lines) Subject: Re: RPC for communicating with Kerberos From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: Saltzer@ATHENA.MIT.EDU Cc: kazar+@ANDREW.CMU.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Wed, 20 Jul 88 15:26:14 EDT <8807201926.AA00933@HERACLES.MIT.EDU> Actually I believe that Mike was referring to the "admin server" protocol. This protocol is UDP based and not idempotent. At MIT we therefore do not retransmit but instead take advantage of the fact that the network rarely loses packets (most of the time). Needless to say this is a crock. A good RPC mechanism is certainly called for and there is discussion in that direction among the Kerberos developers. -Jeff --[0453]-- \f [0454] daemon@TELECOM.MIT.EDU Kerberos 07/23/88 00:04 (31 lines) Subject: interrealm krbtgt's From: qjb@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU Suppose I have the following /etc/krb.realms: .MIT.EDU ATHENA.MIT.EDU HOST2.MIT.EDU REALM2.MIT.EDU My workstation is in realm ATHENA.MIT.EDU. If I login or kinit qjb, I get a single ticket: krbtgt.ATHENA.MIT.EDU@ATHENA.MIT.EDU Even though REALM2.MIT.EDU and ATHENA.MIT.EDU allow each have the appropriate keys for inter-realm mutual authentication (if this is the correct terminology), I cannot nfsid HOST2 Now, if I change kerberos ticket files and kinit qjb@REALM2.MIT.EDU, I get a single ticket: krbtgt.REALM2.MIT.EDU@REALM2.MIT.EDU Now if I type "nfsid soup", I get an error. The only way I can successfully get both commands to work simultaenously is to hand-edit my kerberos ticket file and add the latter ticket to the first file (or the other way around). If I do this and then type "nfsid HOST2", I get both the rvdsrv.HOST2.MIT.EDU@REALM2.MIT.EDU ticket and the krbtgt.REALM2.MIT.EDU@ATHENA.MIT.EDU that had to exist for this to work in the first place. Is there a way that I can get both of these tickets without hand-editing my ticket file? --[0454]-- \f [0455] daemon@TELECOM.MIT.EDU Kerberos 07/23/88 15:49 (11 lines) Subject: Re: interrealm krbtgt's From: Ken Raeburn <raeburn@ATHENA.MIT.EDU> To: <qjb@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Emanuel 'Jay' Berkenbilt's message of Fri, 22 Jul 88 23:59:05 EDT, Just what errors do you get when you try to use nfsid? Do you have an entry for qjb@ATHENA.MIT.EDU in the credentials database on the file server in REALM2? (I don't know if this even works, but knowing the errors you get would help determine the source of the problem.) Do you get additional tickets when you try it, despite the failure? --[0455]-- \f [0456] daemon@TELECOM.MIT.EDU Kerberos 07/25/88 10:01 (9 lines) Subject: interrealm krbtgt's From: qjb@ATHENA.MIT.EDU To: raeburn@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Ken Raeburn's message of Sat, 23 Jul 88 15:41:22 EDT <8807231941.AA07146@PRIAM.MIT.EDU> Hmm. It works now and I haven't changed anything. All the correct tickets appear "automatically" when I try to do nfsid HOST2. I wonder what was wrong before? Oh well. --[0456]-- \f [0457] daemon@TELECOM.MIT.EDU Kerberos 07/26/88 13:04 (21 lines) Subject: new beta test site To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Dan Kolkowitz (Stanford) Stanford's total network based environment consists of more than one thousand computers inter-connected on Stanford SUNeT network. Most of the computers are Unix based workstations and minicomputers, the exceptions being DEC System 20's running TOPS-20. The principal workstation vendors are Sun, DEC, IBM, and HP. We are looking to provide vendor independent secure services across Stanford. The proposed model is similar enough to Kerberos' that we hope to use substantial components from it. The major component of the application would be authentication of a user requesting a resource. We intend to first use this for secure login and to later extend it to general network services. The version of secure login would be implemented on all of the above mentioned architectures, including the 20's. In addition we hope to incorporate the secure protocols in our ethernet terminal servers to provide secure login on any ethernet access. --[0457]-- \f [0458] daemon@TELECOM.MIT.EDU Kerberos 07/26/88 22:31 (16 lines) Subject: NFS security From: mac@SUN.COM (Mac Townsend) To: kerberos@ATHENA.MIT.EDU Could you please send me information on the following: ============================================================================ MIT's Project Athena has implemented a user ID mapping scheme for NFS that maps a pair {client IP address, uid} onto a uid on the server. The mappings are established at mount time and are authenticated using Athena's Kerberos authentication system. With such a server, an Amiga (or any other NFS machine) can't access private files simply by changing the uid in the request. ============================================================================ Thanks for the trouble, Mac Townsend --[0458]-- \f [0459] daemon@TELECOM.MIT.EDU Kerberos 07/28/88 10:39 (19 lines) Subject: new beta test site To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Patrick Powell <papowell@julius.cs.umn.edu> University of Minnesota We are currently running a site with an ENCORE Multimax, SEQUENT Symmetry (in Sept.), Sun 2s, Sun3s, Sun4s, HP 300 workstations, VAXen (VMS, 4.3, and ULTRIX), MicroVaxes, and a couple of hundred personal computers. We have 3 major nets: the fibre net backbone, which connects the Univerisity, the CS net, which interconnects the CS department, and several subnets. In addition there are several other subnets which we actively communicate with. What we want to do is to implement a secure mail/news/lineprinter spooler system that will allow us to use our current network AND have some reasonable control over it. --[0459]-- \f [0460] daemon@TELECOM.MIT.EDU Kerberos 07/28/88 13:07 (51 lines) Subject: valid names From: qjb@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU There has been a change from the old kerberos to the new about what is considered a valid name: ---- old protocol % kinit MIT Project Athena, (dodo) Kerberos login: 13.10 Principal unknown (kerberos) % kinit -i MIT Project Athena, (dodo) Kerberos login: krbtgt Kerberos instance: SMS_TEST.MIT.EDU Password: Password incorrect % --- new protocol % kinit MIT Project Athena, (soup) Kerberos Initialization Kerberos name: 13.10 kinit: bad Kerberos name format Exit 1 kinit % % kinit -i MIT Project Athena, (soup) Kerberos Initialization Kerberos name: krbtgt Kerberos instance: ATHENA.MIT.EDU kinit: bad Kerberos instance format Exit 1 kinit -i % kinit krbtgt.ATHENA.MIT.EDU kinit: Bad Kerberos name format (kname_parse) MIT Project Athena, (soup) Kerberos Initialization Kerberos name: ^C% ---- Is this really appropriate? Some operating systems have usernames with .'s and @'s in them. (In MPE, a Hewlett Packard operating system, ALL usernames have .'s in them.) --[0460]-- \f [0461] daemon@TELECOM.MIT.EDU Kerberos 07/28/88 15:17 (191 lines) Subject: New Kerberos ticket proposal From: Ted Anderson <ota+@ANDREW.CMU.EDU> To: kerberos@ATHENA.MIT.EDU I'd like to suggest several changes to the Kerberos ticket format. The original motivation for a format change was to increase the range of specifiable ticket lifetimes, but once that can of worms is open, I'd like to make some additional suggestions. This is the current format, as I understand it, from the _Project Athena_ _Technical Plan, Section E.2.1, *Kerberos Authentication and Authorization*_ _*System*_, dated 21 Dec 1987: ticket = {flags, namep, instancep, realmp, addressp, Ksession, lifetime, time_seckkds, names, instances}Kskvno where: flags: 1 byte, unsigned: byte order of granter? namep: >= 0 chars, null terminated string instancep: >= 0 chars, null terminated string realmp: >= 0 chars, null terminated string addressp: 4 bytes, unsigned: IP address Ksession: 8 bytes, unsigned lifetime: 1 byte, unsigned: in 5 minute intervals time_seckkds: 4 bytes, unsigned: time issued, sec since 0000 GMT 1/1/70 names: >= 0 chars, null terminated string instances: >= 0 chars, null terminated string Kskvno: the server's (kvno'th) key, which encrypts the ticket Accompanying the ticket, but not actually part of it are two additional fields: a two byte unsigned length and a one byte key version number (kvno). First several questions. The purpose of the kvno is not explained. The paper uses kvno as a subscript on keys which are used for encrypting tickets. From this, and some later discussion about changing master passwords, I gather it serves to distinguish between tickets encrypted with an old password and those encrypted with the new password. Is this right? Is this the only use envisioned for this field? What is the flags field used for? I found one place in the Kerberos document revision history that suggested it was used to specify the byte order of the ticket granter. Is this still true? Are any of the other bits used for anything? The current definition appears to allow for a zero length principal name. Is this intentional or useful? What is the purpose of including the server's name/instance in the ticket? These are potentially lengthy strings which could contribute significantly to the encryption/decryption time and contain very minimal information. Surely a server with the correct key would know its own name. The only thing I can think of that that it would provide a final check against a ticket that had been tampered with. It seems an expensive way of accomplishing this. Am I missing something? Here is an alternative ticket proposal: ticket = {kvno, {flags, Ksession, namep, instancep, realmp, addressp, starttime, endtime, label}Kskvno} where these fields are different from the above: kvno: 1 byte: identifies the encryption key to the server Ksession: 8 byte sequence namep: > 0 chars, null terminated string starttime: 4 bytes: time ticket becomes valid endtime: 4 bytes: time ticket expires label: >= 2 chars: a string to verify correct decryption Comments/Rationale: I propose limiting principal names to upper and lower case letters, digits, underscore, apostrophe, and hyphen. The length must be between 1 and 63 characters plus a trailing null. Instance and realm strings would be restricted to the same character set with the addition of dot (mainly for Internet domain names) and lengths of between 0 and 63 characters plus a null. The motivation for the length limitation is to bound the size of the largest ticket (the minimum length is 33 bytes, the maximum would be 217). This will simplify allocation procedures and codify the maximum length, which many implementation are likely to impose anyway. The length limit of 63 characters is fairly arbitrary. The selection of a length should ideally accommodate very nearly all the envisioned uses. Certainly, the vast majority of user's names will fit in 63 characters. Indeed 31 would probably be enough, although the trend lately towards hyphenated names may push this limit. Realms and in some cases instances have been named after domain names so their length is a consideration. RFC-1035 specifies a limit of 63 characters on the individual components of a domain name, but the whole name may be as long as 255 characters. This could cause trouble, but 63 characters will probably be sufficient in practice. The limit on realms could be increased to 255 but this seems excessive. The character set restrictions are the same as those ``strongly recommended'' for domain names [RFC-1035] with the addition of underscore, and apostrophe. These graphics allow the following representations for some of the more exotic names that might be encountered: Du_Pont, D'Urfey, Dvora'k (which omits the miniature, raised 'v' over the 'r'), de_Soto, Dore' (where the apostrophe following a letter indicates an accent over the letter). Other possible additions include ':' following a letter to stand for an umlaut, and backquote following a letter to indicate accent grave. Internet domain names are case insensitive, whereas, names, instances, and realms are case sensitive. A standard needs to be established for selecting the name of a realm from the various case representations of the corresponding domain name. Alternatively, realms (and perhaps instances) could be made case insensitive. I suggest using network byte order for constructing tickets and that the bits of the flags field be reserved for future use and set to zero by current implementations. The Internet standard for byte order is specified in RFC-791: Internet Protocol, appendix B: Data Transmission Order, and is strictly big-endian. At the byte level, which is the most important for machines with byte addressing, the order is left to right for strings, and most significant to least significant for multi-byte integers. Note that the session key is a 8 byte sequence, not a 64 bit integer. In spite of the fact that this ordering may not be the most convenient for all machines, utilizing a standard for communications has several advantages. First, the Internet standard is already in wide use for inter-machine communication so adhering to a well known standard will minimize confusion about byte order. Second, from a conceptual point of view, it will be simpler for implementors to uniformly convert into network order when assembling a ticket and out of network order when disassembling them. This eliminates checking the flags bit and having code that handles both cases. The cost of conversion to and from network order is small enough that the savings realized in cases where the natural ordering at the sender and receiver is the same is not worth the added complexity. I suggest that kvno be used by the server to identify the key needed to decrypt a ticket. This will work for the case of a transition period where some outstanding tickets are encrypted with an old password. In addition, it smoothly handles the case of a server which maintains several passwords. An example of where this would be useful is the case of Kerberos servers in a multiple, independent realm environment. Each Kerberos ticket granting server exchanges a password with the Kerberos in each cooperating realm. This password is used to encrypt tickets that authenticate its users to the other Kerberos. For safety reasons the password exchanged with another realm should not be the same as the password used locally. Thus a ticket received by a Kerberos server may be encrypted by either the local password or an external password. In general, to provide security firewalls in a large multi-realm environment there may be many external passwords known to a server, although each Kerberos will only need to remember one for each server. Other reasons why a server might encounter tickets encrypted with different passwords can be imagined. The kvno field allows a simple method for discriminating between such tickets. The argument for including the kvno as an unencrypted part of the ticket is that the ticket is effectively useless without the kvno. Thus, it is conceptually simpler, to treat the ticket as a single entity where only the encryption routines know which part is encrypted. The use of both a start time and end time provides the most flexible means for controlling ticket lifetimes. These times should be checked for reasonability by making sure the starttime is in the past, the endtime is in the future, and The difference between the two is strictly positive but less than some reasonable upperbound. The upperbound should allow lifetimes of at least one year. An alternative is to provide a start time with a duration, which could be specified as a two byte unsigned number of minutes. This allows the specification of lifetimes less than 45 days long. The advantage of the start/end method is that the ticket format does not impose precision or length limitations of the specification of lifetimes. Thus the simplicity and flexibility more than compensate for the small additional cost in ticket length. From a cryptographic standpoint, putting the most random part of the ticket at the beginning makes attempts to decrypt it more difficult because of the use of cipher-block-chaining during encryption. This also means that interference with a ticket is most likely to garble the end of the ticket. Since the order of fields in the ticket is arbitrary it would be advantageous to put the session key near the beginning and an easily recognized label at the end. Leaving the flags at the very beginning allows the possibility of using it to support a later incompatible format change. This ticket proposal eliminates the name and instance of the server from the ticket. This should provide a substantial reduction in the length, and corresponding encryption and decryption times, of tickets. The absence of the server's identity from the ticket could only cause confusion if a user supplies some other ticket to a server. In almost every case this error would be detected because the key used by the server to decrypt the ticket would be wrong and result in total garbage. If a server's password has been compromised, a user could forge tickets at will, and all would be lost anyway. The only other alternative is that two servers coincidentally selected the same password and their tickets are inadvertently switched by the user. In this exceedingly unlikely case the user is still correctly authenticated to the server and no security violation occurs. Thus, naming the server for which a ticket is created is entirely unnecessary. Using the server's name and instance as the ticket's label is also questionable. To detect decryption errors I suggest, in addition to reasonability checks on all the fields in the ticket, padding the end with a constant string. Since the encryption algorithm requires its input to be a multiple of 8 bytes, adding at least two characters and enough more to bring the length to this boundary would allow this extra correctness check with a minimum of overhead. Specifically, if the length of the part to be encrypted is N; append the first 9-(N+1)%8 characters of the string "TicketEnd" to the ticket before encryption. Checking for this terminal sequence after decryption provides added confidence in the integrity of the ticket. --[0461]-- \f [0462] daemon@TELECOM.MIT.EDU Kerberos 07/28/88 16:01 (19 lines) Subject: Background on Ticket Proposal From: Ted Anderson <ota+@ANDREW.CMU.EDU> To: kerberos@ATHENA.MIT.EDU Cc: Mike Kazar <kazar+@ANDREW.CMU.EDU> I suppose a bit of background on my proposal to change the Kerberos ticket format would be in order. I have taken over the implementation of a Kerberos-style authentication server for the Andrew File System. For various reasons we can't use Kerberos as is, but we'd like to retain as much as possible. Since all our client/server communication uses RPC we can't use the Kerberos protocols directly, but ticket level compatibility is still useful. Specifically, one senario involves having an Andrew File System cell at MIT use tickets obtained from the Athena Kerberos (with an Athena log program). This allows a single authentication database to serve both systems at MIT. The proposal developed during the process of considering the design issues for the new authentication server and figuring out the Kerberos design document. I'd appreciate comments on the proposal. My intent is to try and reach agreement on a compromise ticket format that everyone can use. Ted Anderson --[0462]-- \f [0463] daemon@TELECOM.MIT.EDU Kerberos 07/28/88 16:15 (14 lines) Subject: Re: valid names From: Ted Anderson <ota+@ANDREW.CMU.EDU> To: kerberos@ATHENA.MIT.EDU Cc: qjb@ATHENA.MIT.EDU In-Reply-To: <8807281702.AA01361@SOUP.MIT.EDU> I don't think there's any intrinsic reason to prevent '.' in a username. Some ambiguity arises in trying to decide where the user name ends and the instance begins. Maybe comma should be an alternate separator between the name and instance. This is a far less likely character to find in either a user or instance name. However, allowing atsign in usernames is right out. Any system that allows '@' in usernames and also supports network mail is going to be sorry. Ted Anderson --[0463]-- \f [0464] daemon@TELECOM.MIT.EDU Kerberos 07/28/88 16:29 (11 lines) Subject: Background on Ticket Proposal From: Mark Lillibridge <chariot@ATHENA.MIT.EDU> To: ota+@ANDREW.CMU.EDU Cc: kerberos@ATHENA.MIT.EDU, kazar+@ANDREW.CMU.EDU In-Reply-To: Ted Anderson's message of Thu, 28 Jul 88 15:49:45 -0400 (EDT) <8WvsJNy00VseMGl4cP@andrew.cmu.edu> Reply-To: chariot@ATHENA.MIT.EDU I'm interested in getting kerberos working with vice as well. I'm one of people "managing" the mit vice cell. Can you send me your current proposal? - Mark Lillibridge --[0464]-- \f [0465] daemon@TELECOM.MIT.EDU Kerberos 07/28/88 16:40 (15 lines) Subject: valid names From: qjb@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU I have been informed (and have verified) that quoting the period or @ with a backslash works: kinit -i test\.root will work as will kinit test\\.root I guess I jumped too soon. --[0465]-- \f [0466] daemon@TELECOM.MIT.EDU Kerberos 07/28/88 18:26 (17 lines) Subject: my second question related to Kerberos From: Jerry Scharf <jerry@PIONEER.ARC.NASA.GOV> To: kerberos@ATHENA.MIT.EDU As one of the people who started the whole issue of lifetimes of Kerberos tickets, my question was adressed in the sense that there was a large response that longer tickets were needed. I agree, but was asking also if there are any ideas to reduce the risk of a lost ticket, thus making the idea of a longer ticket not represent a weakening of the system security. The other question I had was on the idea of batch jobs working as agents for an authenticaed user. There has been work done on the ability to pass a ticket on to an agent, and have that agent represent itself as the user. This seems like a critical issue for batch job preocessing, and wanted to know if Kerberos could/should be extended to allow this model of authentication. Jerry Scharf NASA Ames Research Center --[0466]-- \f [0467] daemon@TELECOM.MIT.EDU Kerberos 07/28/88 18:53 (143 lines) Subject: Re: New Kerberos ticket proposal From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU Re: Ted Anderson's questions and proposal- I am quite pleased to see this interest in the evolution of Kerberos. Steve ------------------------------------------------------------------- ...text deleted... >First several questions. > >The purpose of the kvno is not explained. The paper uses kvno as a subscript >on keys which are used for encrypting tickets. From this, and some later >discussion about changing master passwords, I gather it serves to distinguish >between tickets encrypted with an old password and those encrypted with the new >password. Is this right? Is this the only use envisioned for this field? Yes, it is for orderly transition when keys change. If a principal changes its key, as it should do routinely, there will be tickets outstanding with both the old and the new keys. The tickets with the old keys would otherwise be valid until they expire, so if the server (receiver really) isn't worried about having compromised its old key, it can honor either the old or the new for some period of time, after which all tickets should have the new key. >What is the flags field used for? I found one place in the Kerberos document >revision history that suggested it was used to specify the byte order of the >ticket granter. Is this still true? Are any of the other bits used for >anything? It is used to define byte ordering of multi-octet integer fields that appear in a few places in different protocol messages. I don't think any of the other bits were used. >The current definition appears to allow for a zero length principal name. Is >this intentional or useful? Probably an accident. Don't think it is particularly useful. >What is the purpose of including the server's name/instance in the ticket? >These are potentially lengthy strings which could contribute significantly to >the encryption/decryption time and contain very minimal information. Surely a >server with the correct key would know its own name. The only thing I can >think of that that it would provide a final check against a ticket that had >been tampered with. It seems an expensive way of accomplishing this. Am I >missing something? We went around on this a few times. It serves two purposes, each of which could be served better. The first is that it disambiguates the ticket if different instances of a principal or even entirely different principals use the same key. Otherwise a ticket for one principal could be used for a different one. Second, given the modified cbc crypto mode used, and its position at the tail of the ticket, it guarantees that any modifications to the ticket will be detected, resulting in invalid server name, instance. ... deleted text... >Here is an alternative ticket proposal: I don't have the time to go through the proposal in detail right now, but will offer some generic suggestions. >I propose limiting principal names to upper and lower case letters, digits, >underscore, apostrophe, and hyphen. The length must be between 1 and 63 >characters plus a trailing null... > ...(text deleted) Conventions on the principal et al. names are a good idea. I don't have any idea what the right conventions are. >I suggest using network byte order for constructing tickets and that the bits >of the flags field be reserved for future use and set to zero by current >implementations... > (text deleted) While this is probably a good idea in theory, if it ain't broke, don't fix it. At this point in time, what does it buy? >I suggest that kvno be used by the server to identify the key needed to decrypt >a ticket. >... (text deleted)... This is already the case, at least in the protocol design. I thought the interfaces already support this. >The use of both a start time and end time provides the most flexible means for >controlling ticket lifetimes. > ... text deleted... There are two questions here: what is the maximum ticket lifetime, and how is it encoded. First, the easy question about encoding -- use the densest encoding possible to minimize the size of the encrypted data. So that probably points to using a start time plus offset encoding. Second, the hard question, is what should the architected maximum lifetime be? My views on this were and still are that it needs to be reasonably bounded, otherwise the whole authentication serves no purpose. I would also point out that the people who have found the current lifetime too short have gone beyond the original design goal and tied the authentication lifetime exactly to the authorization lifetime, e.g. files service access. Not to belabor the point, if there is pressure to extend the field, extend it, but not by too much. >From a cryptographic standpoint, putting the most random part of the ticket at >the beginning makes attempts to decrypt it more difficult because of the use of >cipher-block-chaining during encryption. >... text deleted... First, we never worried about cryptanalysis, but we were concerned about detecting active modification attacks. The layout of the ticket was not arbitrary, but planned to put values at the end that would detect modification. This interacted well with the modified cbc mode, in that if a single bit was modified anywhere in the ticket, about 50% of the bits in the last block, containing the server name and instance, would change. A similar effect can be achieved by including a known constant at the end of the cleartext, but it is not necesary because there are enough other fields that would almost certainly cause problems if modified. >This ticket proposal eliminates the name and instance of the server from the >ticket. This should provide a substantial reduction in the length, and >corresponding encryption and decryption times, of tickets. > ... text deleted... This is a good direction to pursue, but I would not eliminate it entirely, rather use a condensed signature function of it instead. This signature could even be used on the principal name, moving the actual name into the cleartext part of the ticket. Of course, a signature will sacrifice some security since multiple inputs will produce the same signature. Unfortunately, the good signatures -- crypto MACs, require the same amount of computation as encrypting the whole thing. The quad_cksum (signature) in Kerberos is computationally inexpensive, though probably not terribly secure. I had proposed an alternative protocol along these lines when we were first starting to use Kerberos. >Using the server's name and instance as the ticket's label is also >questionable. To detect decryption errors I suggest, in addition to >reasonability checks on all the fields in the ticket, padding the end with a >constant string. >... text deleted ... If you look at the properties of DES in the CBC mode, a single bit error anywhere will cause about 50% of all the subsequent bits to change. So if the ticket ends with a value that has a small valid range, you will have a very good integrity check. So for the purposes of Kerberos, I don't think anything else is necessary. Steve. --[0467]-- \f [0468] daemon@TELECOM.MIT.EDU Kerberos 07/28/88 19:42 (14 lines) Subject: P.s. re New Ticket proposal From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM The end of the existing ticket is already zero padded to a multiple of eight bytes, so checking any padding for zero after decryption would buy a small amount of additional integrity at no additional runtime cost or change in the protocol. So if you believe that the size distribution of the names, modulo 8, is reasonably evenly distributed, about 7/8 of the time you will get some extra integrity for free. BTW, other than at the beginning of the first block in a chain, zero is about as good an integrity constant as any. Steve --[0468]-- \f [0469] daemon@TELECOM.MIT.EDU Kerberos 07/28/88 20:09 (46 lines) From: (Stephen Tihor) <TIHOR@CMCL1.NYU.EDU> To: <KERBEROS@ATHENA.MIT.EDU> In-Reply-To: <MWvreay00VseAGl3Mu@andrew.cmu.edu> Any field which contains the names of (a) existing programs, or (b) users must be in general unbounded and unrestricted. There are operating systems which permit pretty arbitrary usernames contain all the alphanumeric, national replacement characters, and selected separators (INCLUDING BLANKS). Considering the possibilities of Kanji usernames in any of the possible encodings it would be best to not restrict this field. Historically people hacking together code for Unix tend to ignore such issues (e.g. sendmail) but if Kerberos is a serious first draft of a protocol we hope to see adopted generally then it is a bad idea to add restrictions that rule out its use by other vendors. Realms and instances if named with the internet domain rules should follow those rules as to the maximum size. I suspect in practice most names will be shorter than 35 characters but everyday I use a couple of boxes that can not express an internet name over 12 characters because their designers expected the world to be xyz.asb.hjk. Setting a defacto limit means some other, honest person will try and follow the rules and lose when using your version of the code. Granted that we can define what a realm is so that it follows our own naming rules but if the use of the real domain name rules is not acceptable why were these fields defined as domain names rather than say unix path names, another well defined heirarchical namespace? You write, "Internet domain names are case insensitive, whereas, names, instances, and realms are case sensitive. A standard needs to be established for selecting the name of a realm from the various case representations of the corresponding domain name. Alternatively, realms (and perhaps instances) could be made case insensitive." I agree. By the same arguement I made before I believe we should try and follow those rules exactly or else make up our own ab initio. If you feel you need to put an upper bound on the size of the ticket you can ask around for reasoable values but I expect you will end up with something like 1000 bytes worst cases. If preallocation of buffers is necessary perhaps specifying an options dialog whereby Kerberos can discuss the legal size of fields at the moment when a piece of Kerberos using code needs to get a buffer allocated would be appropriate. [I am unsure why you are that concered about this issue.] I am much more concerned about the realtively short passwords being used. ------- --[0469]-- \f [0470] daemon@TELECOM.MIT.EDU Kerberos 07/29/88 07:14 (15 lines) Subject: Don't forget us From: mcvax!inria.inria.fr!neumann@UUNET.UU.NET (Pierre Louis Neumann) To: kerberos@ATHENA.MIT.EDU, steiner@ATHENA.MIT.EDU Kindly send us the tape as soon as possible Many thanks Pierre-Louis NEUMANN INRIA adresse electronique: Domaine de Voluceau ^^^^^^^^^^^^^^^^^^^^^ ROCQUENCOURT neumann@inria.inria.fr BP.105 neumann@inria.uucp 78153 Le Chesnay CEDEX ...uunet!mcvax!inria!neumann FRANCE --[0470]-- \f [0471] daemon@TELECOM.MIT.EDU Kerberos 07/29/88 12:58 (53 lines) Subject: Re: valid names To: kerberos@ATHENA.MIT.EDU Cc: Ted Anderson <ota+@andrew.cmu.edu> In-Reply-To: Ted Anderson <ota+@andrew.cmu.edu>'s message of Thu, 28 Jul 88 16:01:00 -0400 (EDT) From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > I don't think there's any intrinsic reason to prevent '.' in a > username. Some ambiguity arises in trying to decide where the user > name ends and the instance begins. Maybe comma should be an > alternate separator between the name and instance. This is a far > less likely character to find in either a user or instance name. > > However, allowing atsign in usernames is right out. Any system > that allows '@' in usernames and also supports network mail is going > to be sorry. > Ted Anderson I think that this discussion may be losing sight of some fundamentals. There are non-UNIX systems out there that use different mail conventions, and that may have at-signs, dots, dollar-signs, and even blank spaces in their user names. Kerberos ought to be applicable to those systems, too. Kerberos itself should enforce restrictions on the range of principal, instance, and realm identifiers only to the extent that restrictions are required for proper, secure operation of an authentication service. So far the only such requirement I have heard articulated is of name length, in order to keep the cost of encryption from getting out of hand. I would propose in addition that a human-factors/security argument would suggest we constrain identifiers to the 94 ASCII characters that have usual graphic representations. Apart from those two sources of argument, no one has mentioned anything about the authentication process, the Kerberos protocol, or the Kerberos subroutine call interfaces that requires that anything else (even space characters) should not be allowed in Kerberos identifiers. When Kerberos is applied to particular situations, such as the authentication of UNIX logins, a mapping of Kerberos names to UNIX login identifiers needs to be implemented, and to the extent that people find it convenient to use one-to-one mapping, they may wish to enforce some restriction from outside Kerberos that leads to not registering certain names. In the case of UNIX one might impose restrictions such as no more than 8 characters, that they must all be lower case alphabetic or numeric, and they must begin with an alphabetic. Similarly, if one decides to use Kerberos to authenticate names used for mail receipt, one might decide not to register names with at-signs. But each of these examples are application restrictions, not things that should be enforced by the Kerberos server itself. Jerry Saltzer --[0471]-- \f [0472] daemon@TELECOM.MIT.EDU Kerberos 07/29/88 13:25 (31 lines) Subject: Comments on beta test version From: jb%cs.brown.edu@RELAY.CS.NET To: kerberos@ATHENA.MIT.EDU I have only gotten as far as reading the documentation and compiling the code of the beta test release and have not started running it yet. Here are some comments about what I have seen so far. First, the manual pages make too much reference to the Athena environment. If someone outside of MIT is told there system is running kerberos and types man kerberos, the paragraph has the sentence "All Athena timesharing machines and public workstations support Kerberos." What does this fact have to do with anyone else using the software. Other comments like this and about other software at Athena are also included. The manual pages should be complete in themselves and not reference other software that is not running on the machine. Next, I used a compiler that effectively runs lint on the code as well. I had more lines of lint style warning from the compiler than commands executed by make. Rcs ids I won't argue about (this was only about half of the errors though), but there were lots of unused variables. Also included were many statics that were not initialized before use. Finally, skimming the code for rsh and rlogin leads to some interesting discoveries. First, the "-n" flag has different meanings between the two programs. In rsh it means disconnect stdin from the terminal and in rlogin it means allow escape character (I think). On a similar note, how about manual pages which describe the new options in the bsd applications. Half of the mods were made for various reasons at Athena which are not related kerberos. Jim --[0472]-- \f [0473] daemon@TELECOM.MIT.EDU Kerberos 07/29/88 19:55 (20 lines) Subject: Re: valid names From: jb%cs.brown.edu@RELAY.CS.NET To: "Jerome H. Saltzer" <Saltzer@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of "Fri, 29 Jul 88 12:49:23 EDT." I think even limiting the character set to printable ascii is overly restrictive. If at all possible, the protocol should be able to handle any character set using 8-bit bytes. Anything more restrictive than forbidding NULL might interfere with users tring to use international character sets. (Anyone know how kanji works?) Most people don't even consider the international character sets. It would look good if we had thought about the issue and tried to be compatible with the internation character sets. At the application level, it is reasonable to be more restrictive. If at all possible, the library routines should accept any null teminated string of bytes for the principal, instance, and realm identifiers. The server should be as general as possible too. Jim --[0473]-- \f [0474] daemon@TELECOM.MIT.EDU Kerberos 07/29/88 20:59 (28 lines) Subject: valid names From: bcn@JUNE.CS.WASHINGTON.EDU (Clifford Neuman) To: Saltzer@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU I beleive that in the current protocol, the only character that is not allowed in components of names is NULL. The three components of a name are treated separately and there is no problem if a name contains an "@" or a ".". This is as it should be. Note, however, that although the protocol allows anything other than NULL this choice is (presently) restricted in the user interface. For example, the character set that can be used in the .klogin files is more restricted. Programs that read text files or take user input and try separating the three fields of a name might get confused if they accept input as a single token and the separators also appear in the individual fields. This is a separate issue, and I do not feel that the way to solve it is to restrict what is legal according to the protocol. As to the size of the fields. As far as the protocol goes, they should be unlimited. This follows from application of the zero-one-infinity argument. The lengths are currently restricted by the implementations, but this is something that can be fixed, although it would be a low priority task. A user that wants a long name should be allowed to do so. As long as allowing long names only slows things down when such names are actually used, there is no reason to disallow them. ~ Cliff --[0474]-- \f [0475] daemon@TELECOM.MIT.EDU Kerberos 07/30/88 11:05 (30 lines) Subject: more comments on kerberos installation From: jbloom@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU It would be nice if there was some easy way to check the output from the des test program verify. I find having to read a printed copy and the program output more difficult than is needed. A couple ideas for making this less error prone would be to include a copy of the correct output so that diff might be run or to have verify have the results hardcoded inside and test for correctness itself using bcmp. The second is more work, but even easier for someone installing kerberos. The operation guide is fairly complete about all of the steps needed to install kerberos and run a first test of the system. One step was missed here; There was no mention that an entry for kerberos was needed in /etc/services. Another problem in the operations guide with the sample entry in inetd.conf for the sample (test) server. What is the field entry "switched"? This is not most machines to which I have access. In fact, the only machines I can find it on are the Athena machines. It is NOT described in the online manual pages there either. This field should probably be dropped be from the operations guide sample. I'm not sure if I really like the idea of the installation being performed to /usr/athena. I don't feel that everyone outside of Athena should have to add something else to their path to access kerberos. Maybe the libraries should go in /usr/local/lib which is searched by most loaders when looking for libraries referenced as -llibname. Jim Bloom --[0475]-- \f [0476] daemon@TELECOM.MIT.EDU Kerberos 08/01/88 12:39 (47 lines) Subject: Limits in Standards From: Ted Anderson <ota+@ANDREW.CMU.EDU> To: jb%cs.brown.edu@RELAY.CS.NET, bcn@june.cs.washington.edu (Clifford Neuman) Cc: kerberos@ATHENA.MIT.EDU While I am sympathetic to the desire to allow as much flexibility and generality in the protocol as possible I think limits should be imposed by a standard that has aspirations of usefulness. A standard is used by an implementor to provide information about how other implementations will behave. When an program is expected to communicate with other systems these guidelines to those other system's behavior is critically important. A standard that is too opened ended really just refuses to provide this information, it defers decisions to another person or another time. The implementor is then forced to guess, decide on his own, experimentally determine the operational parameters of other implementations or take other measures to answer these questions for himself. This is the process I am going through now since there is no standard yet, but it would be nice to save future implementors the trouble. Although there may be techniques for allowing truly unlimited name lengths, these will span a spectrum of difficulty. I think it is safe to assume that all implementations will impose some length limits, either explicitly or implicitly. We owe it to the users of the system to specify, in advance, when a name is too long. Otherwise, longish names will fail in unpredictable ways when the limits are reached, perhaps in extremely subtle and intermittent ways. A fixed upper bound can also be a well tested upper bound. In our case, RPC needs a preallocated area in which to return tickets from Kerberos. Above some limit, less than 1000 bytes, the underlying IP protocol will be forced to fragment the packets which will be a source of delay, complication and error. At still larger sizes an FTP like protocol will have to be used, which will further complicate things. The limit I suggested of 63 characters has the property that tickets are smaller that 256 bytes, which should be reasonably convenient for everyone. A similar, but weaker, argument can be made for restricting the character set of names. My main purpose in suggesting the restrictions was to allow reasonability checks on the result of decrypting a ticket. A totally garbaged ticket could still produce a legal user name, although there will be other ways of detecting this. Allowing international character sets even precludes checking for the eighth bit being on. Even if we allow this can we at least require both user and instance name to have either all or none of their eighth bits set? If the consensus is to allow any 8 bit byte except null then we should explicitly say that we expect any sequence of bytes in names and remind people not to do things like clear the eighth bit, canonicalize white space or whatever. We should also suggests a standard escape convention for user level applications to allow entry of unusual characters, such as backslash followed by three octal digits. Ted Anderson --[0476]-- \f [0477] daemon@TELECOM.MIT.EDU Kerberos 08/05/88 13:07 (49 lines) Subject: completeness of DES_CRYPT(3) To: kerberos@ATHENA.MIT.EDU From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> As everyone on this list probably knows, export of Kerberos outside the U.S. leads, because it uses cryptographic techniques, into a wonderful maze of government regulations, controls, confusion, and related time-sinks. I'm looking at a particular narrow question in the middle of that maze, and would like to get opinions from anyone who has looked at the relevant parts of Kerberos. The question is the following: if one were to receive a copy of the Kerberos sources with the DES library sources and binaries omitted, would it be possible to write a working library with the information found in the man pages labeled DES_CRYPT(3), assuming the programmer also had copies of the relevant FIPS specifications of DES and DES usage? A reasonable meaning for the term "working library" is that servers and clients could interwork in any combination: e.g., a client loaded with the standard distribution library could get tickets from a server loaded with the newly-programmed library, and that those tickets would be recognized by servers loaded with either the standard distribution or the newly-programmed library. All clients (including, e.g., password-changing commands) should interwork. A weaker definition of "working library" (let's call this "working without interworking") would be that the resulting library could be used to put together a complete self-consistent set of clients and servers that work together but that don't work across the net with clients or servers from a realm that uses the standard distribution. There are two obvious possible stumbling blocks: 1. The algorithm to be used by subroutine string-to-key is not specified in DES_CRYPT(3), but a first look suggests that it may not matter; as long as everyone within a single realm agrees on the algorithm used by string-to-key within that realm, it doesn't matter if different realms use different algorithms. (Can anyone think of a counterexample?) 2. The function of pcbc_encrypt isn't specified in the FIPS standards, but a first look at the man page suggests that it supplies enough detail. (Again, alternate opinions are solicited.) Are there any others? Thanks for your help. Jerry --[0477]-- \f [0478] daemon@TELECOM.MIT.EDU Kerberos 08/06/88 08:04 (77 lines) Subject: bugs in ext_srvtab.c From: jb%cs.brown.edu@RELAY.CS.NET To: kerberos@ATHENA.MIT.EDU Ext_srvtab has a couple minor problems. If it is called using a relative beginning with a "." and without the "-n" flag, it complains that the path used for executing the program is an invalid instance. The easiest test case I found was "./ext_srvtab host". I traced this problem down to poor handling of the argument list. A second problem is that the srvtab created has bad permissions. When I ran the program, the srvtab was readable by everyone on the machine. It should be readable by only root for security reasons. Below are fixes for both of these problems as well as removing an unused variable. Jim *** ext_srvtab.c.orig Mon May 23 15:58:18 1988 --- ext_srvtab.c Sat Jul 30 10:22:45 1988 *************** *** 48,54 **** char realm[REALM_SZ]; int fopen_errs = 0; char *arg; - Principal master_princ; Principal princs[40]; int more, prompt; register int n, i; --- 48,53 ---- *************** *** 64,70 **** exit (-1); } } - argc++; argv--; CheckArgs(argc, argv); --- 63,68 ---- *************** *** 84,91 **** fprintf(stderr, "%s: couldn't get local realm\n", progname); exit(1); } ! while (--argc) { ! arg = *++argv; sprintf(fname, "%s-new-srvtab", arg); if ((fout = fopen(fname, "w")) == NULL) { fprintf(stderr, "Couldn't create file '%s'.\n", fname); --- 82,90 ---- fprintf(stderr, "%s: couldn't get local realm\n", progname); exit(1); } ! (void) umask(077); ! while (argc--) { ! arg = *argv++; sprintf(fname, "%s-new-srvtab", arg); if ((fout = fopen(fname, "w")) == NULL) { fprintf(stderr, "Couldn't create file '%s'.\n", fname); *************** *** 129,135 **** int c; char *v[]; { ! for (; --c; ++v) if (!k_isinst(*v)) { fprintf(stderr, "%s: bad instance name: %s\n", progname, *v); --- 128,134 ---- int c; char *v[]; { ! for (; c--; v++) if (!k_isinst(*v)) { fprintf(stderr, "%s: bad instance name: %s\n", progname, *v); --[0478]-- \f [0479] daemon@TELECOM.MIT.EDU Kerberos 08/06/88 08:10 (57 lines) Subject: bug in lib/des/read_password.c From: jb%cs.brown.edu@RELAY.CS.NET To: kerberos@ATHENA.MIT.EDU When trying to read in passwords, if an EOF is provided at the beginning of a line, read_password goes into an infinite loop asking for input, not reading from the terminal and complaining about a bad password. I fixed this by clearing the EOF flag whenever an error occurs reading a password. This doesn't change the looping structure, i.e. it will continue to ask for passwords, but it lets the user input something. Jim *** read_password.c.orig Mon May 23 16:00:37 1988 --- read_password.c Sat Jul 30 17:59:57 1988 *************** *** 115,122 **** if (!strlen(s)) continue; #else ! if (!gets(s)) continue; #endif if (verify) { printf("\nVerifying, please re-enter %s",prompt); --- 115,124 ---- if (!strlen(s)) continue; #else ! if (!gets(s)) { ! clearerr(stdin); continue; + } #endif if (verify) { printf("\nVerifying, please re-enter %s",prompt); *************** *** 126,133 **** if (!strlen(key_string)) continue; #else ! if (!gets(key_string)) continue; #endif if (strcmp(s,key_string)) { printf("\n\07\07Mismatch - try again"); --- 128,137 ---- if (!strlen(key_string)) continue; #else ! if (!gets(key_string)) { ! clearerr(stdin); continue; + } #endif if (strcmp(s,key_string)) { printf("\n\07\07Mismatch - try again"); --[0479]-- \f [0480] daemon@TELECOM.MIT.EDU Kerberos 08/06/88 19:01 (25 lines) Subject: Re: bugs in ext_srvtab.c From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: jb%cs.brown.edu@RELAY.CS.NET Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: jb%cs.brown.edu@RELAY.CS.NET's message of Sat, 06 Aug 88 07:55:42 -0400, From: jb%cs.brown.edu@RELAY.CS.NET Date: Sat, 06 Aug 88 07:55:42 -0400 A second problem is that the srvtab created has bad permissions. When I ran the program, the srvtab was readable by everyone on the machine. It should be readable by only root for security reasons. Just a minor point here. I have no problem with the umask change you made, but remember that root may very well not be the person running ext_srvtab. After all you only need read access to the dir and pag files. While you probably don't want many user-accounts on your kerberos master, you might have a few. (I might want an account so I in could have read-access to the database, but not write. Limit the damage I could do unless I explicity chose to log in as root. Unix generally loses in making you spend too much time logged in as root in anycase.) -- Jon --[0480]-- \f [0481] daemon@TELECOM.MIT.EDU Kerberos 08/08/88 11:43 (91 lines) Subject: Mike's wish list To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> ------- Forwarded Message Received: by E40-PO.MIT.EDU (5.45/4.7) id AA21570; Thu, 4 Aug 88 10:27:37 EDT Received: by ATHENA.MIT.EDU (5.45/4.7) id AA11479; Thu, 4 Aug 88 10:25:49 EDT Received: by po5.andrew.cmu.edu (5.54/3.15) id <AA00682> for steiner@athena.mit.edu; Thu, 4 Aug 88 10:25:07 EDT Received: via switchmail; Thu, 4 Aug 88 10:25:00 -0400 (EDT) Received: from whitaker.andrew.cmu.edu via qmail ID </afs/andrew.cmu.edu/service/mailqs/q000/QF.whitaker.andrew.cmu.edu.22f87369.7ca4c>; Thu, 4 Aug 88 07:23:40 -0700 (PDT) Received: from whitaker.andrew.cmu.edu via qmail ID </afs/andrew.cmu.edu/usr7/kazar/.Outgoing/QF.whitaker.andrew.cmu.edu.22f87364.98a7d>; Thu, 4 Aug 88 07:23:32 -0700 (PDT) Received: from Version.6.20.N.CUILIB.3.44.SNAP.NOT.LINKED.whitaker.andrew.cmu.edu.rt.r3 via MS.5.5.whitaker.andrew.cmu.edu.rt_r3; Thu, 4 Aug 88 07:23:31 -0700 (PDT) Message-Id: <EWy7BXy00Uk-80TEpL@andrew.cmu.edu> Date: Thu, 4 Aug 88 07:23:31 -0700 (PDT) From: Mike Kazar <kazar+@andrew.cmu.edu> X-Andrew-Message-Size: 4066+0 To: steiner@ATHENA.MIT.EDU Subject: Fwd: Kerberos wish list References: <MWxm8my00Uk-48PGIX@andrew.cmu.edu> ... - ---------- Forwarded message begins here ---------- Well, the heart of our wish list is Ted Anderson's ticket proposal that he sent to the kerberos mailing list about a week ago. I'm assuming you've seen that note; if not, send mail to me or to Ted (ota+@andrew.cmu.edu) and we can send you a copy of the message. The key ideas in that message are (and I'm over-simplifying here, so you should really read the original note): More flexibility in specifying when a ticket is valid. We'd like to be able to specify that a ticket will be valid for a longer period than is possible now, and we would also like to be able to specify that a ticket doesn't become valid until a certain time. Ted's proposes using a start time and an end time, both in Unix date format seconds, to get this functionality. I certainly wish that tickets had only one format: network byte order. The time to convert these things to a different byte order is essentially trivial, and of course having only one format simplifies things. It looks like there really is no need for placing the server's name and instance into a ticket. That would probably reduce the size of tickets considerably. Aside from the ticket format, there are several other problems with the Kerberos distribution as it stands now. The Kerberos administrative protocols are UDP-based and non-idempotent, yet the Kerberos code simply retransmits requests without any attempt to prevent a request from multiple executions. This affects virtually every network request except for the "get tickets" request. We strongly suggest the use of an RPC mechanism here, and we're working with IBM to try to make our RPC and light-weight thread package available essentially in the public domain if you folks want to use it. Using an RPC mechanism has a significant effect on the protocols, but we believe, based on our experience, that RPC interfaces are quite easy to understand and well worth using in those circumstances where they make sense. Another "system design" level problem with Kerberos is the lack of a mechanism for storing tickets for others to read. In the Andrew file system, we associate tickets with process trees, and any process within a tree can get the tickets for that tree. Any process can establish itself as the root of a new process tree, which starts out life with no tickets available (except for those it had the sense to retrieve before establishing its own tree). Certainly the current Kerberos scheme of storing tickets in a file on /tmp is unacceptably insecure on timesharing machines. Finally, we'd like to see a better replication scheme for the kerberos database. When I create a new user, change a password, or whatever, I'd like the operation to take effect as soon as the operation completes, at least assuming that no network partitions have occurred (the problem gets *seriously* difficult in the presence of network partitions). We'd like to write utilities for administrators that do things like create new users, and in our environment, this requires that Kerberos database operations complete before we can proceed to create the new users' home dirs, as well as add them to the appropriate user groups and other file system configuration tables. Well, that's my first cut at a wish list. Mike ------- End of Forwarded Message --[0481]-- \f [0482] daemon@TELECOM.MIT.EDU Kerberos 08/08/88 18:20 (16 lines) Subject: Re: Completeness of DES_CRYPT(3) From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM In principal, I don't see why not, especially since we intended to keep the crypto as a separable component. But I haven't looked at the documentation carefully for quite a while. Both the string-to-key and pcbc_encrypt are straightforward. If needed, I am sure that sufficient additional documentation for DES_CRYPT could be done unambiguously. The string-to-key algorithm should be the same across realms if the inter-realm authentication is used, and the keys are defined (indirectly) using the string-to-key. E.g. the LCS Kerberos appears as a member of the Athena realm, so if string-to-key is used to setup their shared key, it had better be the same. Steve --[0482]-- \f [0483] daemon@TELECOM.MIT.EDU Kerberos 08/09/88 10:04 (93 lines) Subject: Mike's wish list To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> - ------- Forwarded Message Received: by E40-PO.MIT.EDU (5.45/4.7) id AA21570; Thu, 4 Aug 88 10:27:37 EDT Received: by ATHENA.MIT.EDU (5.45/4.7) id AA11479; Thu, 4 Aug 88 10:25:49 EDT Received: by po5.andrew.cmu.edu (5.54/3.15) id <AA00682> for steiner@athena.mit.edu; Thu, 4 Aug 88 10:25:07 EDT Received: via switchmail; Thu, 4 Aug 88 10:25:00 -0400 (EDT) Received: from whitaker.andrew.cmu.edu via qmail ID </afs/andrew.cmu.edu/service/mailqs/q000/QF.whitaker.andrew.cmu.edu.22f87369.7ca4c>; Thu, 4 Aug 88 07:23:40 -0700 (PDT) Received: from whitaker.andrew.cmu.edu via qmail ID </afs/andrew.cmu.edu/usr7/kazar/.Outgoing/QF.whitaker.andrew.cmu.edu.22f87364.98a7d>; Thu, 4 Aug 88 07:23:32 -0700 (PDT) Received: from Version.6.20.N.CUILIB.3.44.SNAP.NOT.LINKED.whitaker.andrew.cmu.edu.rt.r3 via MS.5.5.whitaker.andrew.cmu.edu.rt_r3; Thu, 4 Aug 88 07:23:31 -0700 (PDT) Message-Id: <EWy7BXy00Uk-80TEpL@andrew.cmu.edu> Date: Thu, 4 Aug 88 07:23:31 -0700 (PDT) From: Mike Kazar <kazar+@andrew.cmu.edu> X-Andrew-Message-Size: 4066+0 To: steiner@ATHENA.MIT.EDU Subject: Fwd: Kerberos wish list References: <MWxm8my00Uk-48PGIX@andrew.cmu.edu> ... - - ---------- Forwarded message begins here ---------- Well, the heart of our wish list is Ted Anderson's ticket proposal that he sent to the kerberos mailing list about a week ago. I'm assuming you've seen that note; if not, send mail to me or to Ted (ota+@andrew.cmu.edu) and we can send you a copy of the message. The key ideas in that message are (and I'm over-simplifying here, so you should really read the original note): More flexibility in specifying when a ticket is valid. We'd like to be able to specify that a ticket will be valid for a longer period than is possible now, and we would also like to be able to specify that a ticket doesn't become valid until a certain time. Ted's proposes using a start time and an end time, both in Unix date format seconds, to get this functionality. I certainly wish that tickets had only one format: network byte order. The time to convert these things to a different byte order is essentially trivial, and of course having only one format simplifies things. It looks like there really is no need for placing the server's name and instance into a ticket. That would probably reduce the size of tickets considerably. Aside from the ticket format, there are several other problems with the Kerberos distribution as it stands now. The Kerberos administrative protocols are UDP-based and non-idempotent, yet the Kerberos code simply retransmits requests without any attempt to prevent a request from multiple executions. This affects virtually every network request except for the "get tickets" request. We strongly suggest the use of an RPC mechanism here, and we're working with IBM to try to make our RPC and light-weight thread package available essentially in the public domain if you folks want to use it. Using an RPC mechanism has a significant effect on the protocols, but we believe, based on our experience, that RPC interfaces are quite easy to understand and well worth using in those circumstances where they make sense. Another "system design" level problem with Kerberos is the lack of a mechanism for storing tickets for others to read. In the Andrew file system, we associate tickets with process trees, and any process within a tree can get the tickets for that tree. Any process can establish itself as the root of a new process tree, which starts out life with no tickets available (except for those it had the sense to retrieve before establishing its own tree). Certainly the current Kerberos scheme of storing tickets in a file on /tmp is unacceptably insecure on timesharing machines. Finally, we'd like to see a better replication scheme for the kerberos database. When I create a new user, change a password, or whatever, I'd like the operation to take effect as soon as the operation completes, at least assuming that no network partitions have occurred (the problem gets *seriously* difficult in the presence of network partitions). We'd like to write utilities for administrators that do things like create new users, and in our environment, this requires that Kerberos database operations complete before we can proceed to create the new users' home dirs, as well as add them to the appropriate user groups and other file system configuration tables. Well, that's my first cut at a wish list. Mike - ------- End of Forwarded Message ------- End of Forwarded Message --[0483]-- \f [0484] daemon@TELECOM.MIT.EDU Kerberos 08/11/88 08:31 (36 lines) Subject: new beta test site To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> From: mts@emptys.cc.umich.edu (Michael T. Stolarchuk) ------------------------------------------------------------------ There has been some public announcement about the UofM-IBM contract to develop the IFS (institutional file system). The project is beginning with the AFS from CMU. We currently plan to provide AFS facilites on our IBM 3090-600E, with some more local intermediate servers. The AFS code will be moved into an MVS environment, a CMS (VM/370) environment, and of course AIX 370. We want to stay protocol compatable with CMU so that we can use CMU's file systems too. The project's goal is to provide an instituional wide file system for all of the machines which want to be connected. Services will be provided so that clients can connect to the IFS, unaware of whether the operating system which is providing the service is MVS. Some University officials believe the UofM community will need support for 30,000 workstations within a few years. Currently the university has over 500 advanced function workstations, and about 2000 public limited function workstations. Because of the different vendors involved, and the different environments, we will need some mechanism for distributed authentication. We already have this problem with services we would like to provide on the IBM mainframe -- printing and backup services. Kerberos would help us begin integrating these sevices into our distributed environment. ------------------------------------------------------------------- --[0484]-- \f [0485] daemon@TELECOM.MIT.EDU Kerberos 08/12/88 09:21 (24 lines) Subject: Mis-Routed Messages From: apollo!griffith_j@ATHENA.MIT.EDU To: wesommer@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: A message dated Thursday, August 11, 1988 6:15:34 pm (EDT) Again - I received this message (griffith_j@apollo.com, griffith_j@apollo.uucp). > Received: from RA.MIT.EDU by apollo.com; Thu, 11 Aug 88 17:45:29 EDT > From: wesommer@ATHENA.MIT.EDU > Received: by ra.mit.edu (5.51/4.7) > id AA00951; Thu, 11 Aug 88 17:45:11 EDT > Date: Thursday, August 11, 1988 5:45:11 pm (EDT) > To: kerberos@ATHENA.MIT.EDU > Subject: testing again. > >(Sorry about this, but mail from the real list doesn't seem to be getting >through). Looks to me like RA.MIT.EDU is going mental..... ----- griff --[0485]-- \f [0486] daemon@TELECOM.MIT.EDU Kerberos 08/27/88 23:56 (30 lines) Subject: picked up from eunet.general From: henry@GARP.MIT.EDU (Henry Mensch) To: kerberos@ATHENA.MIT.EDU Reply-To: henry@GARP.MIT.EDU > I am working on a software implementation of DES, and would like either > another implementation or a set of test examples (plaintext block, > key, ciphertext block in ECB mode) to verify the correctness of > my version. So far in the small amount of literature I have looked at, > I have found only 2 worked examples. > > When I am reasonably satisfied of the correctness of the code I will post > it to eunet.sources (maybe to net.unix.sources, too). > > The code (if it is in fact correct) is quite fast: 2ms per cipher block > on a VAX 11/785. I am working on a port to Sun. Some of the bit twiddling > is byte-order dependent (UGH!). > > Peter Lamb prl@ethz.uucp, cernvax!ethz!prl > Integrated Systems Lab. Phone: +41 1 256 5241 > Federal Inst. of Technology (ETH) > Zurich, Switzerland > -- > Peter Lamb > uucp: seismo!mcvax!ethz!prl eunet: prl@ethz.uucp Tel: +411 256 5241 > Institute for Integrated Systems > ETH-Zentrum, 8092 Zurich --[0486]-- \f [0487] daemon@TELECOM.MIT.EDU Kerberos 09/01/88 16:44 (24 lines) Subject: random_key() From: Ted Anderson <ota+@ANDREW.CMU.EDU> To: kerberos@ATHENA.MIT.EDU Cc: Mike Kazar <kazar+@ANDREW.CMU.EDU> I was using the Kerberos DES package to run some experiments and I discovered that the random_key package doesn't behave very well. In particular my program was calling random_key, calling key_sched, and encrypting one number. What I descovered is that after 170 thousand keys, about one in five keys returned was in the table of 170 thousand keys. In fact I was getting several duplicates even after the first few thousand. I looked at the code and discovered that it is calling srandom() every time you ask for a random key. It uses the time of day and so forth to seed srandom(), but then the key is constructed from the first two values returned by random(). I reimplemented it by adding an init_random_key() routine that calls srandom() and have random_key() just call random() twice. In 64 000 calls to this new random_key() I've found no duplicates. I understand that although the period of random() is very long (something like 2^1000) its output isn't, in fact, all that random. Better random values are can be obtained by using an encryption algorithm. Since this is all part of an encryption package, and the call to random_key() doesn't need to be all that fast, maybe this would be an even better approach. Ted Anderson --[0487]-- \f [0488] daemon@TELECOM.MIT.EDU Kerberos 09/02/88 10:18 (18 lines) Subject: Re: random_key() To: Ted Anderson <ota+@andrew.cmu.edu> Cc: Mike Kazar <kazar+@andrew.cmu.edu>, In-Reply-To: Your message of Thu, 01 Sep 88 15:46:37 -0400. From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Ted, Thanks for your message about problems with random_key. Last I heard, Steve Miller was going to send Bill Sommerfeld information about a cryptographic random number generator and Bill was going to implement it. However, I don't know if or when this will happen (Bill?) so it would be useful to have your modifications in the interim. Could you post your diffs to the mail list? Thanks. Jennifer --[0488]-- \f [0489] daemon@TELECOM.MIT.EDU Kerberos 09/02/88 15:55 (28 lines) Subject: cbc_encrypt From: Ted Anderson <ota+@ANDREW.CMU.EDU> To: kerberos@ATHENA.MIT.EDU Cc: Mike Kazar <kazar+@ANDREW.CMU.EDU> I've been reading up on encryption and ran accross a detailed definition of cipher-block-chaining in "Cryptography: A New Dimension in Computer Data Security", by Meyer and Matyas, John Wiley publisher, 1982; around page 70. The basic idea of cipher block chaining is to provide feedback in the encryption process that increases the effective block size of the cipher. There are two basic ways to do this. One is uses ciphertext feedback and the other uses plaintext-ciphertext feedback. Both accomplish hiding of patterns in the clear text data. But only the latter accomplishes error propagation during decryption. Since the insuring data integrity is a crucial aspect of using DES to encrypt Kerberos tickets it is imperitive that we incorporate plaintext feedback in our cipher-block-chaining. The Meyer&Matyas text was not clear about which was the NBS approved method. I looked at the code in the krb/src/lib/des/cbc_encrypt.c and found that it is using only ciphertext feedback. A simple test program that inverted a single bit of the first block of ciphertext produce the expected result upon decryption. The first block of plaintext was totally garbaged, the second block had the corresponding bit inverted and the subsequent blocks were unaffected. I rewrote cbc_encrypt to use plaintext-ciphertext feedback (a very simple mod) and it managed to garble all blocks of the plaintext. Is this a known problem or did it just slip by? If people are interested I can send a description of the fix to cbc_encrypt. Ted Anderson --[0489]-- \f [0490] daemon@TELECOM.MIT.EDU Kerberos 09/02/88 16:00 (9 lines) Subject: Re: random_key() From: Ted Anderson <ota+@ANDREW.CMU.EDU> To: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Cc: Mike Kazar <kazar+@ANDREW.CMU.EDU>, In-Reply-To: <8809021415.AA12823@BACH.MIT.EDU> We're going to use an encryption based scheme for generating keys also. The simplest fix to the existing random_keys is to move the code that calls srandom(seed) into another function and call it just once. Then calling random() twice and fixing up the key parity is all random_key needs to do. --[0490]-- \f [0491] daemon@TELECOM.MIT.EDU Kerberos 09/02/88 19:17 (8 lines) Subject: Kerberos From: Sam Drake <drake@IBM.COM> To: kerberos%athena.mit.edu@RELAY.CS.NET Hi, we're now subscribed to the Kerberos newsgroup, thank you, but have not yet been given information about getting a copy of Kerberos itself. Is there something that I need to do? Thanks, ...Sam --[0491]-- \f [0492] daemon@TELECOM.MIT.EDU Kerberos 09/02/88 19:48 (14 lines) Subject: cbc_encrypt From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: ota+@ANDREW.CMU.EDU Cc: kerberos@ATHENA.MIT.EDU, kazar+@ANDREW.CMU.EDU In-Reply-To: Ted Anderson's message of Fri, 2 Sep 88 15:47:46 -0400 (EDT) <kX7jfWy00VseI-iJZm@andrew.cmu.edu> Barf. cbc_encrypt is DEFINED by the DES itself don't change it. What you want to do is defined by the routine pcbc_encrypt() (I don't remember exact what source module it is in). It is pcbc_encrypt() that is used by the kerberos library for exactly the reasons you mentioned. Last I checked it was not an "official" mode of using DES, but it does what we want (it actually chains both ways, using cipher text and plaintext). -Jeff --[0492]-- \f [0493] daemon@TELECOM.MIT.EDU Kerberos 09/04/88 20:10 (26 lines) Subject: rcp - a non-trivial problem From: qjb@ATHENA.MIT.EDU To: kerberos@ATHENA.MIT.EDU One of the unresolved (to my knowledge) problems with Kerberos is ticket forwarding. One of the manifestations of this is in rcp: **=> m16-034-15:/mit/qjb <=** % rcp priam:/mit/qjb/.cshrc paris:/mit/q/j/qjb/.cshrc Kerberos rcp failed: No ticket file (tf_util). trying normal rcp (/bin/rcp.ucb) Permission denied. Exit 1 rcp /mit/qjb/.cshrc paris:/mit/q/j/qjb/.cshrc I haven't looked deeply into this, but I assume that rcpd on priam was trying to go to paris. Would it be possible for the "kerberized" rcp to grab the file from the first host and copy it to the second when two hosts are involved, is the a to b and then b to c routing there for a deeper reason that I am not seeing right now? Jay P.S. I decided not to send this to bugs. If you think that it should go to bugs, feel free to forward it... --[0493]-- \f [0494] daemon@TELECOM.MIT.EDU Kerberos 09/05/88 12:41 (30 lines) Subject: re: rcp - a non-trivial problem To: <qjb@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: <qjb@ATHENA.MIT.EDU>'s message of Sun, 4 Sep 88 20:06:24 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > One of the unresolved (to my knowledge) problems with Kerberos is > ticket forwarding. One of the manifestations of this is in rcp: > . . . > P.S. I decided not to send this to bugs. If you think that it should > go to bugs, feel free to forward it... Jay, This problem is definitely not a bug, it is a limitation in the current design, and will require some careful thinking to decide just what design extension is the right one. One reason why forwarding is not easy to work out is that your ticket, in order to complicate the life of anyone who hopes to make a killing by snatching a copy of the ticket from your workstation, contains your network address inside. It isn't valid when used from any other network address. A second reason is a strong feeling that in forwarding situations, the ultimate target should receive authenticated information that both the originater and the intermediary are involved in the transaction, in case the target cares. And, finally, any solution is likely to need to deal with more than one level of forwarding. Jerry --[0494]-- \f [0495] daemon@TELECOM.MIT.EDU Kerberos 09/05/88 13:43 (106 lines) Subject: Re: rcp - a non-trivial problem From: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> To: qjb@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: <qjb@ATHENA.MIT.EDU>'s message of Sun, 4 Sep 88 20:06:24 EDT <8809050006.AA16400@M16-034-15.MIT.EDU> Indeed you have stumbled onto a non-trivial problem. What makes it non-trivial is that the solution is surrounded by complex issues that effectively boil down to a tradeoff between security and convenience (as is usually the case with "security" enforcing software). The issue here is how to get tickets on a host which is the destination of an "rlogin" in a secure manner. To start some facts: The tickets in your ticket file are customized to work only from the IP address they were issued to (it is stored in the ticket) and are not transferable to another host. The kerberos server will not (currently) issue tickets for an IP address (host in other words) given a "ticket granting ticket" from a different IP address. The contents of your ticket file is confidential. If shipped over the network in the clear your kerberos authenticity can be faked (by those who intercept the network transfer). Possible Solutions: Solution 1: After rlogin'ing in on the destination host. The user manually runs "kinit" and gets tickets for the destination host. Advantages: It works. Already in place (ie. people can do this today, and do no doubt). Disadvantages: Typed password is shipped over the network in the clear (and thus is interceptable). Inconvenient. Solution 2: Modify kerberos server so that given a TGT (ticket granting ticket) from one host, a TGT for another host can be fetched. Use this feature to have the rlogin program fetch a TGT for the destination host and ship it over (encrypted in the session key that "rlogin" and "rlogind" have in common). Possibly do this only if an option appears on the command line. Advantages: Convenient to use. "Does the right thing" from the (naive) user's point of view. Disadvantages: Requires modification to the kerberos server. Is a marginal security hole. Suppose for example I control host "B" and I walk up to your terminal which is logged into host "A" (assuming you are elsewhere). I can now rlogin to host "B" which deposits on host "B" a TGT for you which is valid from host "B". Now I go and steal the ticket file (because I control host "B" I can do this) and can now masquerade as you for upto the ticket lifetime (which is measured in hours). Of course after I have stolen the tickets I logout of "B" from your terminal and clear the screen, you are none the wiser that your name has been compromised. Solution 3: Modify rlogin and rlogind (actually klogind) so that as part of the connection establishment protocol the "kinit" program is invoked on the destination host to get you tickets. During the invocation of "kinit" rlogin and rlogind are encrypting the connection so that the password the user types is not sent in the clear. [There are actually several ways to implement this that are slightly different then what I describe above, but are semantically equivalent. The basic idea is that the user is asked for a password which is securely transmitted to the destination host for use in fetching tickets.] Advantages: Does not require modification to the kerberos server. Securely fetches tickets on the destination machine (as opposed to solution 1 which gets tickets in an insecure fashion). Requires that the user provide his password explicitly so the security hole in solution 2 is not present. Disadvantages: Slightly less convenient then solution 2 as the user has to type his/her password. Generally unworkable from a shell script (ie. if you wanted to write a shell script which invoked rlogin on some host and then fed it commands to execute). --- If I had my choice of solutions I would go for solution 3 above. -Jeff --[0495]-- \f [0496] daemon@TELECOM.MIT.EDU Kerberos 09/05/88 15:48 (24 lines) Subject: Re: rcp - a non-trivial problem From: jb%cs.brown.edu@RELAY.CS.NET To: "Jeffrey I. Schiller" <jis@BITSY.MIT.EDU> Cc: qjb@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Your message of "Mon, 05 Sep 88 13:38:56 EDT." You only hit upon one problem that Jay(?) was having. His problem was with rcp. Rcp never creates a login session on the remote machine. By modifying rcp, Jay's problem can be fixed. Rcp currently handles the third party transfers by doing an rsh to the src host and starting up an rcp to the destination host. If rcp was modified to do the transfer in two steps, it could work with "no" new authentication problems. (The "no" is qualified because a new ticket will need to be fetched.) The first transfer is to copy the src file to the initiatiing machine. Next, copy the file to the destination machine. There are some problems with this approach. First, there must be enough disk space on the initiating machine to store the file temporarily. The second problem is that there is twice as much network traffic since the file is being transferred twice. The second problem might be ignorable because I don't think third party transfers are used much. (Was this the first time someone mentioned that a third party rcp did not work under kerberos?) Jim --[0496]-- \f [0497] daemon@TELECOM.MIT.EDU Kerberos 09/05/88 16:34 (67 lines) Subject: Re: rcp - a non-trivial problem To: Jeffrey I. Schiller <jis@BITSY.MIT.EDU> Cc: qjb@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Jeffrey I. Schiller <jis@BITSY.MIT.EDU>'s message of Mon, 5 Sep 88 13:38:56 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > . . . > Solution 2: > > Modify kerberos server so that given a TGT (ticket granting ticket) > from one host, a TGT for another host can be fetched. Use this feature > to have the rlogin program fetch a TGT for the destination host and > ship it over (encrypted in the session key that "rlogin" and "rlogind" > have in common). Possibly do this only if an option appears on the > command line. > . . . > Disadvantages: > > . . . > Is a marginal security hole. Suppose for example I control host > "B" and I walk up to your terminal which is logged into host "A" > (assuming you are elsewhere). There is another plausible-sounding security attack if this solution is used. Suppose I rlogin to another workstation or a time-sharing system controlled by C, without realizing that C is not trustworthy. Solution 2 obtains a fully valid ticket-granting ticket and stores it on C's machine for the duration of my activity. Even if I destroy that ticket on logout, there is plenty of time for C to have made a copy of my TGT while I was logged in, which C can then continue to use at leisure for all manner of services after I leave. A similar scenario plagues the other solutions, too. One way to reduce the exposure would be obtain only an ordinary ticket, rather than a ticket-granting ticket, at the target machine. On that basis, here is a solution 4 (only for the specific example of rcp from C to D from A: After obtaining the network address, but before opening a connection to the rlogin server at C, use the TGT stored at A to obtain an rcmd ticket for D, but specified to contain the network address of C. (Kerberos change required to support this.) A opens an encrypted connection to C and sends the rcmd ticket across the connection, then asks C to perform the rcp to D. At logout, destroy the ticket. Advantages: The exposure at C is limited to the ability to do rcmd's to D under A's identity for the duration of the ticket lifetime. Disadvantages: Not awfully general--originator at A has to know at outset what ticket will be needed to accomplish the job at C. Every different scenario is another case. Two more comments: 1. None of these solutions generalize in an obvious way to multiple levels. 2. For rcp/rcmd, it would seem appropriate to request (as default) especially short-lived tickets, like ten minutes. The option of using long-lived tickets should require asking for them explicitly so the user has a chance to evaluate the exposure on long-running jobs. Jerry --[0497]-- \f [0498] daemon@TELECOM.MIT.EDU Kerberos 09/07/88 14:50 (10 lines) Subject: CBC vs PCBC From: Ted Anderson <ota+@andrew.cmu.edu> To: kerberos@ATHENA.MIT.EDU Mea Culpa! I should have read the help files more carefully. Thanks for the clarifications. On a related topic what does Kerberos assume for the value of the Initialization Vector? Ted Anderson --[0498]-- \f [0499] daemon@TELECOM.MIT.EDU Kerberos 09/07/88 15:26 (18 lines) Subject: Re: CBC vs PCBC From: Jon Rochlis <jon@BITSY.MIT.EDU> To: Ted Anderson <ota+@ANDREW.CMU.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Ted Anderson's message of Wed, 7 Sep 88 14:42:55 -0400 (EDT), On a related topic what does Kerberos assume for the value of the Initialization Vector? Most calls to pcbc_encrypt seem to use the key itself as the initialization vector. I caught some of the internal server-side database routines using the key schedule for the ivec when I ran a server on the RT. I stamped this out since the key schedule is byte-order dependent and the key isn't. -- Jon --[0499]-- \f [0500] daemon@TELECOM.MIT.EDU Kerberos 09/07/88 15:32 (15 lines) Subject: CBC vs PCBC From: rwu@ARRAN.BELLCORE.COM (Ronald W Underwood) To: kerberos@ATHENA.MIT.EDU I received the following by mistake: > >Mea Culpa! I should have read the help files more carefully. Thanks for the >clarifications. > >On a related topic what does Kerberos assume for the value of the >Initialization Vector? > Ted Anderson > > --[0500]-- \f [0501] daemon@TELECOM.MIT.EDU Kerberos 09/07/88 19:45 (21 lines) Subject: Re: CBC vs PCBC From: "Stuart Levy" <slevy@UC.MSC.UMN.EDU> To: jon@BITSY.MIT.EDU, ota+@ANDREW.CMU.EDU Cc: kerberos@ATHENA.MIT.EDU Speaking of key byte order independence, that's something that seems to be missing from the des_crypt(3) man page. The DES standard specifies keys and data blocks in terms of 64-bit strings but doesn't talk about arranging them on octet arrays as far as I can see. And des_crypt doesn't mention anything about the format its routines use. All the DES implementations I've seen -- including Kerberos' -- assign DES bit 1 = 0x80 in the first byte, ..., DES bit 64 = 0x01 in the last byte but it would be nice if that were written down. It would be pretty natural to go the other way around and say DES bit <i> has significance 2 ** (i-1), yielding bit 1 = 0x01 in the first byte, ... bit 64 = 0x80 in the last byte on little-endian machines. I'm surprised this hasn't caused more trouble. Stuart Levy, Minnesota Supercomputer Center slevy@uc.msc.umn.edu --[0501]-- \f [0502] daemon@TELECOM.MIT.EDU Kerberos 09/08/88 07:13 (19 lines) Subject: Request for Information From: usas@cup.portal.com To: kerberos@ATHENA.MIT.EDU Twice in the past couple of months I have attempted to request information about the Kerberos authentication system developed at MIT. I understand from a USENET posting that you have documentation and reports available. So far, nothing has reached me. Would you please acknowledge this message and send me the information you have available for distribution? Thank you very much. ---------------------------+------------------------------------------------- Alan M. Usas | ARPA : usas@cup.portal.com Tandem Computers | UUCP : {gateway}!sun!portal!cup.portal.com!usas 19333 Vallco Parkway 3-15 | Cupertino, CA 95014-2599 | VOICE: 408-725-5037 ===========================+================================================= --[0502]-- \f [0503] daemon@TELECOM.MIT.EDU Kerberos 09/12/88 15:48 (16 lines) Subject: encryption question From: Ted Anderson <ota+@andrew.cmu.edu> To: kerberos@ATHENA.MIT.EDU Cc: Mike Kazar <kazar+@ANDREW.CMU.EDU> I noticed a comment in Birrell's Secure RPC paper that suggested that exchanging cipher text blocks resulted in no error propagation. It wasn't clear that they were using pcbc so I tried a test case. The result is that using pcbc, switching two cipher text blocks fails to affect any subsequent blocks of plaintext. Has a fix for this problem been decided upon? How about xoring the block count in with the plaintext & cipher text? Ted Anderson I checked up on this a bit and it seems that they were using only an XOR checksum. Perhaps a CRC checksum would have worked better for Birrell's problem. ota --[0503]-- \f [0504] daemon@TELECOM.MIT.EDU Kerberos 09/13/88 16:10 (12 lines) Subject: encryption question From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM I am a little confused about the question from Ted Anderson. Is it about the Kerberos DES-based pcbc encryption? If the crypto algorithm is just an XOR, since XOR is commutative, A XOR B = B XOR A and you won't detect shuffled blocks. This is not the case with the DES based pcbc_encrypt. Steve --[0504]-- \f [0505] daemon@TELECOM.MIT.EDU Kerberos 09/13/88 16:30 (33 lines) Subject: Re: random_key() From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM The problem of generating truly random and secret keys without a hardware random number generator is difficult. Using a pseudo-random number generator, the problem is reduced to providing a truly random seed that is secret, i.e. can't be guessed. Most systems, such as the Unix or Ultrix systems used for Kerberos, do not have much system "noise" to create a good random seed. "Noise" can take the form of low order bits of the time of day, system resource utilization, etc. In the experiment reported by Ted Anderson, I believe that the system noise used by the existing random_key routine was further minimized by the nature of the experiment-- iterating random_key in a tight loop. In the environment for which it was targeted, that is the Kerberos server, there would be more variability than in such an experiment. This does not suggest that the existing technique is good however. We did run some tests of at least 10000 keys to verify that it was at least minimally adequate. The reason we kept changing the seed was to prevent attacks where you would get a key, then try to search the random number generator output until you found the matching key, which could be done without exorbitant computation. My documentation on random claims a period of 16*((2**31)-1). Then, if a match was found, the attacker has a free lunch of subsequent "random" keys. A better solution, as Ted suggested, is to take the random number, or even just a sequence number, and encrypt it under a secret key. While the random_key code notes this in a comment, for reasons I don't recall it was never implemented. Maybe we didn't want to require the presence of a secret key to produce a random key. Steve. --[0505]-- \f [0506] daemon@TELECOM.MIT.EDU Kerberos 09/14/88 10:14 (73 lines) Subject: Re: encryption question From: Ted Anderson <ota+@andrew.cmu.edu> To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM Cc: Mike Kazar <kazar+@ANDREW.CMU.EDU> In-Reply-To: <8809132001.AA16517@decwrl.dec.com> Let me try to be a little more clear. There is a relatively obscure comment in the paper by Birrell called "Secure Communication Using Remote Procedure Calls" where he mentions that the method he suggests for detecting modifications to cipher text is inadaquate. He was using standard CBC encryption with a message checksum at the end. He refers to the Voydock and Kent article "Security Mechanisms in High-Level Network Protocols" which I looked at. By implication the checksum he was using was a simple XOR which was (probably then encrypted with CBC as) the last block of the message. The weakness is that if an attacker swaps to adjacent cipher blocks the checksum will not help detect the modification. It was not entirely clear to me at first what method he was using so I figured it would be a good idea to try it out with the Kerberos PCBC routine. As I understand it Kerberos encrypts messages with PCBC which does a much better job of ciphertext error propagation and so doesn't use a checksum at all. I wrote a little program which just swapped the two first two bolcks of ciphertext obtained from pcbc_encrypt of a simple message and then decrypted it. The result was that the two exchanged blocks were garbled but no subsequent blocks were affected. Here is the program I used which also inverts a single bit in the ciphertext to see what happens: long msg[8]; /* this is a four block (64 bits each) message */ long out[8]; string_to_key ("abcdefgh", key); code = key_sched (key, schedule); for (i=0; i<8; i++) msg[i]=i; print_msg ("Input message", msg, sizeof(msg)); pcbc_encrypt (msg, out, sizeof(msg), schedule, default_ivec, ENCRYPT); print_msg ("Using Kerberos PCBC", out, sizeof(msg)); pcbc_encrypt (out, msg, sizeof(msg), schedule, default_ivec, DECRYPT); print_msg ("Decrypted", msg, sizeof(msg)); /* invert the 32nd bit of the first ciphertext block */ out[0] ^= 1; pcbc_encrypt (out, msg, sizeof(msg), schedule, default_ivec, DECRYPT); print_msg ("Invert 32nd bit", msg, sizeof(msg)); out[0] ^= 1; /* set the bit back */ /* swap first two ciphertext blocks */ { unsigned long temp; temp = out[0]; out[0] = out[2]; out[2] = temp; temp = out[1]; out[1] = out[3]; out[3] = temp; } pcbc_encrypt (out, msg, sizeof(msg), schedule, default_ivec, DECRYPT); print_msg ("Exchanging first two ciphertext blocks", msg, sizeof(msg)); and here is the output: Input message 00000000 00000001 00000002 00000003 00000004 00000005 00000006 00000007 Using Kerberos PCBC fd09ff5a 90f9e7d0 bc58ef9f 400c9454 811a8b28 4138af1d a47698d4 c68a246d Decrypted 00000000 00000001 00000002 00000003 00000004 00000005 00000006 00000007 Invert 32nd bit 6d4851de 177f7242 6d4851dd 177f7240 6d4851db 177f7246 6d4851d9 177f7244 Exchanging first two ciphertext blocks fd09ff58 90f9e7d2 415110c7 d0f57387 00000004 00000005 00000006 00000007 Ted Anderson --[0506]-- \f [0507] daemon@TELECOM.MIT.EDU Kerberos 09/23/88 12:29 (8 lines) Subject: new beta test site To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Keith Bostic, UC Berkeley: We're interested in integrating Kerberos and Hesiod into the 4BSD distribution. We'll be running it on CCI 6/32's, MIPs and VAXen, approximately 15 machines. --[0507]-- \f [0508] daemon@TELECOM.MIT.EDU Kerberos 09/23/88 16:30 (44 lines) Subject: DES Pseudorandom key generation From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU I have copied verbatim (except for possible typos!) Appendix C of ANSI X9.17-1985, "Financial Institution Key Management (Wholesale)" that describes a technique for producing pseudorandom DES keys and IVs (initialization vectors). It requires a secret DES key pair, a secret 64 bit-seed, the date and time, and multiple encryption operations, making it fairly expensive in software. 'DEA' means the Data Encryption Algorithm of DES. The 'ede' operation using the key pair encrypts with the left key of the pair, then decrypts with the right key of the pair, and finally encrypts with the left key of the pair. I don't know to what extent this is actually used currently, but presumably it was designed for large $$ transactions. Steve ---------------------------------------------------------- ---------------------------------------------------------- C.1 Purpose The purpose of this appendix is to present an example of a pseudorandom key and IV generator. C.2 Algorithm Let ede*X(Y) represent the DEA multiple encryption of Y under key *X. Let *K be a DEA key pair reserved only for the generation of other keys, let V be a 64-bit seed value which is also kept secret, and let + be the exclusive-or operator. Let DT be a date/time vector which is updated on each key generation. I is an intermediate value. A 64-bit vector R is generated as follows: I = ede*K(DT) R = ede*K(I + V) and a new V is generated by V = ede*K(R + I). To obtain a DEA key, every eighth bit is reset to odd parity. To obtain an Initialization Vector (IV), R may be used directly. --[0508]-- \f [0509] daemon@TELECOM.MIT.EDU Kerberos 09/27/88 17:41 (26 lines) Subject: new beta test site To: kerberos@ATHENA.MIT.EDU Cc: mar@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> From: David A Rasmussen <dave@csd4.milw.wisc.edu> The University of Wisconsin - Milwaukee, Computing Services Division, is a supplier of computing resources for researchers and students on our campus. We currently maintain a Unisys 7000/40 supermini running 4.3 Tahoe source release, a Unisys 1100/81A running Exec, a number of small 68010 based machines and VAXstations to support our networking and printer traffic. We also provide campus gateway services to supercomputer centers and the Internet via an ISI 68010 box and some Proteon routers for other departments who have their own machines including VAXen, workstations, and assorted PC type machines. We are currently looking into subnetting PC's with SLIP and Ethernet, and Kerberos sounds like it may have applications in the management of some of this. We are also expanding our user management software to deal with mailing lists, project groups, multiple machines, and such, and if and when SMS gets released, hopefully we will have a basic understanding of Kerberos, which it seems to depend upon. From reading the paper on SMS it encompasses more than our equivalent package will as currently planned. --[0509]-- \f [0510] daemon@TELECOM.MIT.EDU Kerberos 10/06/88 16:22 (8 lines) Subject: NFS credentials From: Doug Alan <nessus@ATHENA.MIT.EDU> Reply-To: Doug Alan <nessus@ATHENA.MIT.EDU> To: kerberos@ATHENA.MIT.EDU With Athena's authenticated NFS system, what is the recommended method of notifying the NFS server that its credentials file has changed? |>oug /\lan --[0510]-- \f [0511] daemon@TELECOM.MIT.EDU Kerberos 10/06/88 16:59 (11 lines) Subject: Re: NFS credentials From: "Robert S. French" <rfrench@ATHENA.MIT.EDU> To: Doug Alan <nessus@ATHENA.MIT.EDU> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Doug Alan's message of Thu, 06 Oct 88 16:16:42 EDT rpc.mountd, which is the only program that uses the credentials file, stats it every five minutes or so to see if it's been updated. If it has, it rereads it... Rob --[0511]-- \f [0512] daemon@TELECOM.MIT.EDU Kerberos 10/18/88 13:43 (61 lines) Subject: Ticket Authentication From: Ted Anderson <ota+@andrew.cmu.edu> To: kerberos@ATHENA.MIT.EDU This is a follow up message to my earlier proposal for changes to the Kerberos ticket format. That proposal is fairly long so I don't want to include it but if anyone is interested in a copy, send me a note and I will forward you my original message. I've done some more reading on the problems of authentication and have concluded that the current mechanism for detecting modifications of Kerberos tickets should be augmented. The basic problem is that although plaintext-ciphertext block chaining (pcbc_encrypt in the Kerberos distribution) is an improvement over the DES Standard CBC mode of operation it still has several weaknesses. These problems result in several simple modifications to the encrypted ticket failing to propagate errors to the end of the ticket when it is decrypted. Changes like swapping two ciphertext blocks or inserting blocks whose xor is zero have this problem. While it isn't clear that these modifications will lead to usable (for an intruder) changes to the decrypted ticket information, it is hard to make a convincing case that no one will ever be able to exploit this weakness. Most authentication schemes rely on a cryptographic checksum appended to the message which is then encrypted (if secrecy is desired) using CBC mode. While using DES for the checksum seems excessively expensive for Kerberos, a simpler hash function would still be useful. A very cheap solution is to append the arithmetic sum of all the bytes in the ticket. A better function is suggested in the X.509 draft standard for directory authentication. It uses multiplication with a suitably chosen modulus to combine the blocks to be checksummed. A modulus less than 2^16 and a block size of 8 bits should result in a inexpensive algorithm for most machines that can do small multiplies nearly as fast as adds. The more fundamental issue in authentication is that the message being authenticated must contain sufficient redundancy to make it unlikely that a random message would be accepted. Adding a 16 bit checksum is really just adding 16 bits of redundancy. However, the redundancy is distributed over the whole message such that a modification to any bit is equally likely to produce an incorrect checksum. In contrast, inserting two zero blocks into a ticket at a point within the name has a probability of (255/256)^16 (or about 94%) of going undetected, at least as far as format goes. Since I earlier suggested removing the server name from the ticket using the argument that it was redundant, it seems appropriate to give some attention to the total redundancy in the ticket. Here is a list of fields and the approximate (in some cases very approximate) redundancy of each. flags: 8 bits. Assuming only one value is legal. session key: 8 bits. The parity requirement on DES keys provides a bit per byte. name, instance, realm: 24 bits. The requirement that each end with a null supplies about 8 bits each, the length limits and the requirement that the name is at least one character long provides only a small additional amount. host address: 32 bits. Assuming this is checked, and there is only one correct host address. starttime, endtime: 16 bits. I assumed 128K seconds as the maximum lifetime and a bit for the fact that the interval must be positive. This totals 88 bits plus the 16 bits of checksum. A very respectable amount. I'm very interested in comments and suggestions on this suggestion as well as the other aspects of the ticket proposal. Ted Anderson --[0512]-- \f [0513] daemon@TELECOM.MIT.EDU Kerberos 10/18/88 17:47 (23 lines) Subject: installing kerberos From: David A Rasmussen <dave@CSD4.MILW.WISC.EDU> To: kerberos@ATHENA.MIT.EDU Forgive my stupid questions regarding making this beast, but I am hung up on the lib/des directory where in make depend it builds a bunch of include files like: # Generated files GFILES = \ ./key_perm.h \ ./p_table.h \ ./s_table.h \ ./odd.h \ ./e.c \ ./p.c \ ./s.c \ ./fp.c \ ./ip.c My make runs until it dies at p_table.h. make_ptable works fine if I execute it myself. Just wondering if anyone had any makefile patches or anything before I figure out that a slash or something else is missing somewhere. ;-? --[0513]-- \f [0514] daemon@TELECOM.MIT.EDU Kerberos 10/21/88 01:02 (9 lines) Subject: Re: installing kerberos From: Jon Rochlis <jon@ATHENA.MIT.EDU> To: David A Rasmussen <dave@csd4.milw.wisc.edu> Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: David A Rasmussen's message of Tue, 18 Oct 88 16:40:13 CDT, Hmm ... des makes some files (I think these) during the make depend phase of things. Did you do a "make depend"? -- Jon --[0514]-- \f [0515] daemon@TELECOM.MIT.EDU Kerberos 10/21/88 07:35 (47 lines) Subject: An idea for forwarding access to remote machines From: Mark W. Eichin <eichin@ATHENA.MIT.EDU> To: athena-ws@ATHENA.MIT.EDU Cc: kerberos@ATHENA.MIT.EDU I rlogin to multiple machines in my normal work -- the sipb RT server, my E40 VS2000 (if I am not on it), charon, and occaisional other machines. Typing my password over the net is obviously wrong (grabbing passwords typed over the net is more than just a theoretical possibility) and yet at times I need to authenticate myself from the remote machine to my file server (and homedirectory) in order to transfer files (examples: using macsyma or scheme on my VS2000, or running andrew on the SIPB RT (with 32Meg of swapspace) when I am not on the apropriate machine type.) Fortunately, I am a watchmaker, and have root access to priam (my file server.) Thus I can kinit with my root instance, rlogin to priam as root, and use `nfsc' by hand to tell priam to create a mapping for me from whatever remote machine I am using. I have found myself doing this often enough that I now have an alias for it. However, I am starting to think that this might be more generally useful. Providing root access to the server is clearly excessive (that is: WRONG) but perhaps providing an extension to the nfsid mapping protocol to allow `proxy mappings', where I present tickets to request that a mapping from another machine be created. Note that this is not identically equivalent to the problem of forwarding tickets to remote machines, as it is not transitive. The authentication itself is still tied to the machine I am sitting in front of; I am using this authentication to authorize other machines to access my files. One of the classic arguments against `ticket forwarding' is that if I am away from my terminal for a moment, someone can forward my tickets to another machine where they can use them to do me harm, without my being able to revoke that access. If `proxy mappings' are in some way tied to the authorizing host, then the `flush mappings for this host' nfsid request can be extended to also `flush mappings authorized by this host', thus limiting this form of damage somewhat. Comments? Would this indeed be useful, and which flaws does this design have that make it impractical? Mark Eichin <eichin@athena.mit.edu> SIPB Member & Project Athena ``Watchmaker'' --[0515]-- \f [0516] daemon@TELECOM.MIT.EDU Kerberos 10/21/88 13:04 (9 lines) Subject: An idea for forwarding access to remote machines From: mar@ATHENA.MIT.EDU To: eichin@ATHENA.MIT.EDU Cc: athena-ws@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Mark W. Eichin's message of Fri, 21 Oct 88 07:27:55 EDT <8810211127.AA00466@OLIVER.MIT.EDU> I would find proxy file mappings very useful. I do a lot of work in a different kerberos realm, and it is very difficult for me to get nfs mappings for the hosts in that realm. -Mark --[0516]-- \f [0517] daemon@TELECOM.MIT.EDU Kerberos 10/21/88 13:09 (15 lines) Subject: Miscellaneous low level Kerberos questions From: Ted Anderson <ota+@andrew.cmu.edu> To: kerberos@ATHENA.MIT.EDU What does Kerberos do about byte order for machines that are neither purely little or big endian? For instance the 286 just byte swaps the halfwords of a long or something. How about if such a machine converts to one or the other of the existing machine types on output? This seems much better than teaching all existing implementations about yet another machine type. I gather that the ticket flags field encodes the byte order but it isn't clear from the documentation which bit of the flag it used for this. LSB? Am I correct in assuming that the kvno of the key used to encrypt a ticket is always passed around with the ticket? Can a ticket be interpreted with out one (perhaps by trying all plausible keys)? --[0517]-- \f [0518] daemon@TELECOM.MIT.EDU Kerberos 10/21/88 14:45 (28 lines) Subject: re: An idea for forwarding access to remote machines To: Mark W. Eichin <eichin@ATHENA.MIT.EDU> Cc: athena-ws@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Mark W. Eichin <eichin@ATHENA.MIT.EDU>'s message of Fri, 21 Oct 88 07:27:55 EDT From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > If `proxy mappings' are in some way tied to the authorizing host, > then the `flush mappings for this host' nfsid request can be extended > to also `flush mappings authorized by this host' . . . Mark, In order for that to work, you need to come up with a bright idea for automatically deciding when to run nfsid flush and which servers to send it to. Telling the user to do it by hand misses the interesting case where someone else authorizes a proxy while I was distracted by a bull session in the next aisle. (unless the intruder happens to send proxy authorizations only to servers where you already have an ordinary mapping.) Possibly the server should refuse to accept authorization of proxy mappings unless there is already an ordinary mapping for the authorizing user. Then, your suggested extension to nfsid/flush would have the effect that whatever mechanism that user relies on to flush the ordinary mapping can also be relied on to flush the proxies. (But you have to think through unmap, too.) Jerry --[0518]-- \f [0519] daemon@TELECOM.MIT.EDU Kerberos 10/21/88 15:36 (42 lines) Subject: An idea for forwarding access to remote machines From: probe@ATHENA.MIT.EDU To: Saltzer@ATHENA.MIT.EDU Cc: eichin@ATHENA.MIT.EDU, athena-ws@ATHENA.MIT.EDU, kerberos@ATHENA.MIT.EDU In-Reply-To: Jerome H. Saltzer's message of Fri, 21 Oct 88 14:33:53 EDT <8810211833.AA04474@HERACLES.MIT.EDU> Reply-To: Richard Basch <probe@ATHENA.MIT.EDU> > Date: Fri, 21 Oct 88 14:33:53 EDT > From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > Sender: Saltzer@ATHENA.MIT.EDU > Repository: heracles > Originating-Client: E40-391A-1 > > If `proxy mappings' are in some way tied to the authorizing host, > > then the `flush mappings for this host' nfsid request can be extended > > to also `flush mappings authorized by this host' . . . > Mark, > In order for that to work, you need to come up with a bright idea for > automatically deciding when to run nfsid flush and which servers to > send it to. Telling the user to do it by hand misses the interesting > case where someone else authorizes a proxy while I was distracted by > a bull session in the next aisle. (unless the intruder happens to > send proxy authorizations only to servers where you already have an > ordinary mapping.) > Possibly the server should refuse to accept authorization of proxy > mappings unless there is already an ordinary mapping for the > authorizing user. Then, your suggested extension to nfsid/flush > would have the effect that whatever mechanism that user relies on to > flush the ordinary mapping can also be relied on to flush the > proxies. (But you have to think through unmap, too.) There is an option to nfsid that will flush all of a user's mappings to a given host (nfsid -r host). Unfortunately, becuase the KUIDUPURGE code is broken in the current release of rpc.mountd, this does not work as expected (actually, the KUIDUPURGE code was missing). "Fixed in the next release". -Richard --[0519]-- \f [0520] daemon@TELECOM.MIT.EDU Kerberos 10/21/88 15:58 (21 lines) Subject: yabts (yet another beta test site) To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> Robert Van Cleef (NASA Ames Research Center) vancleef@prandtl.nas.nasa.gov The NAS programming network consists of the following systems: 2 Cray 2's Running UNICOS 4.0 an Amdahl 5880 Running UTS 1.2.2 VAX 11/780's running BSD 4.2 25 IRIS 2500T workstations running SGI 3.5 Unix 15 IRIS 3100 workstations running SGI 3.5 Unix 15 IRIS 4D workstations running SGI 3.0 Unix 21 Sun 3 workstations running SunOS 3.5 All systems are connected through a combination of ethernet and HYPERchannel using TCP/IP. Our goal is to evaluate Kerberos for trusted links for systems administration and support functions. --[0520]-- \f [0521] daemon@TELECOM.MIT.EDU Kerberos 10/24/88 14:42 (33 lines) Subject: Re: Misc Kerberos questions From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU >From: DECWRL::"ota+@andrew.cmu.edu" "Ted Anderson 21-Oct-88 1302 EDT" 21-OCT-1988 13:46 >To: kerberos@athena.mit.edu >Subj: Miscellaneous low level Kerberos questions > >What does Kerberos do about byte order for machines that are neither purely >little or big endian? For instance the 286 just byte swaps the halfwords of a >long or something. How about if such a machine converts to one or the other of >the existing machine types on output? This seems much better than teaching all >existing implementations about yet another machine type. My recollection of the 286, from porting the Kerberos code to a PC-AT, is that it is little endian. But if such a weird beast did exist, yes, it should mimic either a little endian or big endian machine. >I gather that the ticket flags field encodes the byte order but it isn't clear >from the documentation which bit of the flag it used for this. LSB? Yes, the LSB. The documentation should be fixed to make this clear. >Am I correct in assuming that the kvno of the key used to encrypt a ticket is >always passed around with the ticket? Can a ticket be interpreted with out one >(perhaps by trying all plausible keys)? Yes, it is passed in cleartext as a hint to tell the receiver what key to use. In principle, the receiver could try multiple keys if it wanted, but I don't remember if the existing interface directly supports that. Trying multiple keys would be very expensive when the number of possibilities is greater than one, such as when a server is in the process of changing its key, yet doesn't want to invalidate outstanding tickets. Steve. --[0521]-- \f [0522] daemon@TELECOM.MIT.EDU Kerberos 11/01/88 18:47 (9 lines) Subject: configuring kerberos From: Gary Veum <veum@AMELIA.NAS.NASA.GOV> To: kerberos@ATHENA.MIT.EDU From the Installation Notes (DRAFT), May 11, 1988, it doesn't really specify where to set up the hardware specific dependencies. I am attempting to build it on a Sun 4.0 system. Thank you. -Gary Veum --[0522]-- \f [0523] daemon@TELECOM.MIT.EDU Kerberos 11/01/88 19:00 (5 lines) Subject: test From: Robert E. Van Cleef <vancleef@PRANDTL.NAS.NASA.GOV> To: kerberos@ATHENA.MIT.EDU testing the kerberos alias on prandtl Bob --[0523]-- \f [0524] daemon@TELECOM.MIT.EDU Kerberos 11/02/88 10:59 (104 lines) Subject: Re: Ticket Authentication From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU (** This may be a duplicate, may mailer returned it to me claiming unsent. *) This message is in response to Ted Anderson's mail of Oct 18, 1988. I agree that the problem with the pcbc_encrypt should be fixed. However, it is not a backwards compatible fix, and any tickets outstanding or data stored encrypted with the old pcbc will be trashed. There are a number of ways to fix it. You could add a DES MAC, quad_cksum, CRC, or some other form of checksum computed over the cleartext message. The checksum would then be encrypted as part of the message (ticket). But any of the checksum or MAC type approaches both cost time for the checksum computation, which is very significant in the case of a DES MAC, and cost additional encryption overhead by lengthening the ticket. I would therefore recommend fixing it by fixing the pcbc_encrypt routine to properly detect swapped blocks. Basically, we got it wrong, but I don't feel bad since the same wrong solution was published by others as well. I talked to one of our crypto experts, and came up with a variation that seems to work. The basic difference is that when encrypting block N, instead of XORing the cleartext from block N-1 with the CLEARTEXT for block N prior to encrypting block N, the cleartext from block N-1 is XORed with the CIPHERTEXT resulting from encrypting block N. I have attached a schematic describing this at the end of this message. I hacked up a version of this, and tried it out, and it did successfully detect swapped ciphertext blocks and other modifications, propagating the errors thru to the end of the decrypted cleartext. In terms of the redundancy of the ticket, I believe that it is more than adequate, given a fix to pcbc as outlined above. Ted's note underestimates the effective redundancy in the ticket, since there are strong semantic constraints on the values contained in the tickets above and beyond the fact that the strings are null terminated, the key has parity, etc. So I would not include a checksum. When encrypting arbitrary data with no known semantic constraints a checksum/MAC should be used, but Kerberos tickets are not in this category. The server name in the ticket provides more than just redundancy. Without it, if two different servers (or instances) happened to use the same master key, and I got a ticket for one, it would also be valid at the other. Since master keys are derived from strings typed in by people, it is likely that multiple servers (or instances) would have the same key, especially if an administrator is responsible for multiple servers. Steve \f Legend: let P0...Pn represent blocks of plaintext let C0...Cn represent blocks of ciphertext let XOR be the XOR operation let E be the DES ECB Encrypt operation let D be the DES ECB Decrypt operation let IV be the initialization vector let K be the DES session key. --------------------------------------------------------------------------- New pcbc encrypt, also detects misordered ciphertext blocks and insertions P0 >-+ P1 | | | | | | v | v IV --> XOR | +----->XOR | | | | | | | | v | | v K ---> E | | K -->E | | | | | | | | v | | v 0 --> XOR +---|----->XOR | | | | | | v | v C0 >----+ C1 ============================================================================== Decrypt C0 >-+ C1 | | | | | | v | v 0 --> XOR | +----->XOR | | | | | | | | v | | v K ---> D | | K -->D | | | | | | | | v | | | IV -->XOR +---|----->XOR | | | | | | v | v P0 >----+ P1 --[0524]-- \f [0525] daemon@TELECOM.MIT.EDU Kerberos 11/03/88 15:33 (10 lines) Subject: Inter-Realm Access From: Ted Anderson <ota+@andrew.cmu.edu> To: kerberos@ATHENA.MIT.EDU I've read the Kerberos document section on cross-realm authentication. It has a distinctly tentative feel to it as if few installations actually use it. Are there Kerberos users making extensive use of the cross-realm features and is there a more detailed description of the protocols? I'm hoping for a list of dos, don'ts, hints, caveats, and provisos that would be helpful to look at. Thanks, Ted Anderson --[0525]-- \f [0526] daemon@TELECOM.MIT.EDU Kerberos 11/03/88 17:22 (54 lines) Subject: Re: Inter-Realm Access From: sommerfeld@apollo.com To: ota+@ANDREW.CMU.EDU Cc: kerberos@ATHENA.MIT.EDU In-Reply-To: Ted Anderson's message of Thursday, November 3, 1988 3:29:28 pm (EST) The interrealm mechanism works; however, it seems to require more support from the application than many application writers seem to want to provide. The biggest problem on the client side is the question of "what realm is this server or service in"? Currently, this is handled by the use of what some call a heuristic, but I call a kludge: the domain of the host (everything after the first `.') is used as its realm, with the exception that (for historic reasons; you really _don't_ want to know why) the domain MIT.EDU maps to the realm ATHENA.MIT.EDU. This is under the control of a configuration file on the client side, accessed through the use of a library routine. I've been kicking around the idea of replacing the configuration file with some sort of a "secured" nameservice. (It should be obvious why the nameservice has to be secure). The equivalent problem on the service end is "what do I do now that this remote user claims to be in a completely different realm?". This is just an authorization decision like any other. In answer to your question about major interrealm kerberos users, I believe the biggest (in terms of number of tickets requested) is "discuss", a networked conferencing system. It doesn't have a concept of a "unix user"; all its authorization decisions are made by looking for the kerberos principal name of its caller on an access control list. The protocol for interrealm access is basically this: if I am user X in realm A, and want to talk to service Y in realm B, I first need a ticket granting ticket for realm A (a ticket for krbtgt.A@A), which I presumably picked up at login time. I can then get a ticket for B's ticket granting service, granted by A (a ticket for krbtgt.B@A), and I can then present that to B's KDC to get a ticket for Y@B. However, all these details are hidden under the covers.. all the applications programmer has to do is come up with the realm of the server as a parameter to krb_mk_req. The application's service doesn't have to do anything "special" to get it to work; the system managers of the two realms merely have to come up with a shared secret. One common error is forgetting to check the realm or instance of the decoded authenticator, thus allowing user "joe@B" to have all the access of "joe@A"; from the point of view of interface design, I think that this error would have been harder to make had kerberos names been a specific datatype, as opposed three strings travelling together... - Bill --[0526]-- \f [0527] daemon@TELECOM.MIT.EDU Kerberos 11/04/88 11:12 (21 lines) Subject: Re: Ticket Authentication From: Ted Anderson <ota+@ANDREW.CMU.EDU> To: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller), kerberos@ATHENA.MIT.EDU In-Reply-To: <8811021547.AA02650@decwrl.dec.com> When I was looking at variations on block chaining I considered something like this but it seems dangerous to put the clear text one XOR from the data that goes out over the wire. A compromise of any piece of cleartext may allow an attack to discover certain cipher text blocks which could then be used to reveal clear text in a different message. This is a little fuzzy but it just seemed like a bad idea. The important concern about the redundency of tickets is that there are large, easily located areas of the ticket that have very low redundency (ie the name and instance). These would make relatively easy targets for insertion attacks. The checksum I favor is a two byte variant on the quad cksum which should be quite cheap to implement. It costs roughly a 16x16 bit multiply and a modulus operation per byte. This seems to run an order of magnitude faster an a single DES so it should be a performance problem. A checksum like this has the advantage that it protects you against any current or future problems with cbc or its variants. Ted Anderson --[0527]-- \f [0528] daemon@TELECOM.MIT.EDU Kerberos 11/07/88 11:04 (27 lines) Subject: Re: Ticket Authentication From: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) To: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM As Ted pointed out, the new "pcbc" mode I suggested in a Nov 2 memo is no good - the cleartext could be recovered by an exhaustive search of XORs. I retract the suggestion-- the cure was worse than the disease. Our crypto guy also realized this, but unfortunately not until after I had sent the note out. So much for ad-hoc design. It still may be possible to construct a modified pcbc mode with the desired properties by using other operations on the plaintext. For example, instead of XORing the plaintext, as in the original Kerberos pcbc, add a running sum of all the plaintext blocks. (I don't know if this particular one works.) Some such solutions will be data sensitive. I don't have time to play with these. So my revised recommendation is that for the next version of Kerberos other possible pcbc modes are investigated. If a satisfactory one is found that always propagates errors (doesn't resync), even if two ciphertext blocks are switched, is not particularly data sensitive, and doesn't put a simple function of the plaintext on the wire, use it. Otherwise, use vanilla cbc mode and add a checksum to the end of the ticket, as Ted suggested. The checksum should be inexpensive to compute compared to DES itself. I have been very reluctant to add a checksum because even if the checksum calculation is free, it adds to the length of the ticket, and therefore the DES encryption costs. Steve. --[0528]-- \f [0529] daemon@TELECOM.MIT.EDU Kerberos 11/07/88 12:19 (16 lines) Subject: Re: Ticket Authentication To: miller%erlang.DEC@DECWRL.DEC.COM (Steve Miller) Cc: kerberos@ATHENA.MIT.EDU, MILLER%erlang.DEC@DECWRL.DEC.COM In-Reply-To: miller%erlang.DEC@decwrl.dec.com (Steve Miller)'s message of 7 Nov 88 10:30 From: Jerome H. Saltzer <Saltzer@ATHENA.MIT.EDU> > As Ted pointed out, the new "pcbc" mode I suggested in a Nov 2 memo > is no good - the cleartext could be recovered by an exhaustive search > of XORs. I retract the suggestion-- the cure was worse than the > disease. Our crypto guy also realized this, but unfortunately not > until after I had sent the note out. So much for ad-hoc design. Would someone be so good as to remind me just how serious is the disease for which this particular modification, had it not been a loser, would have been a cure? Jerry --[0529]-- \f [0530] daemon@TELECOM.MIT.EDU Kerberos 11/08/88 13:26 (15 lines) Subject: new project leader To: kerberos@ATHENA.MIT.EDU From: Jennifer Steiner <steiner@ATHENA.MIT.EDU> John Kohl <jtkohl@athena.mit.edu> will be taking over responsibility for leading the Kerberos development project at Athena. John graduated from MIT last year and is now a DEC employee working full-time at Athena. During his undergraduate career at MIT, he worked on various Athena projects, including Kerberos and the Zephyr Notification System. I'll still be working on Kerberos for a while, mostly working on some documents that need to be written. Jennifer --[0530]-- \f