Update gnulib files.
[shishi.git] / doc / specifications / draft-ietf-cat-kerberos-pk-cross-02.txt
blob4210aadbfba849d59547b6f46db18823a486ed36
2 INTERNET-DRAFT                                              Brian Tung
3 draft-ietf-cat-kerberos-pk-cross-02.txt                 Tatyana Ryutov
4 Updates: RFC 1510                                      Clifford Neuman
5 expires January 31, 1998                                   Gene Tsudik
6                                                                    ISI
7                                                        Bill Sommerfeld
8                                                        Hewlett-Packard
9                                                          Ari Medvinsky
10                                                            Matthew Hur
11                                                  CyberSafe Corporation
14     Public Key Cryptography for Cross-Realm Authentication in Kerberos
17 0.  Status Of this Memo
19     This document is an Internet-Draft.  Internet-Drafts are working
20     documents of the Internet Engineering Task Force (IETF), its
21     areas, and its working groups.  Note that other groups may also
22     distribute working documents as Internet-Drafts.
24     Internet-Drafts are draft documents valid for a maximum of six
25     months and may be updated, replaced, or obsoleted by other
26     documents at any time.  It is inappropriate to use Internet-Drafts
27     as reference material or to cite them other than as ``work in
28     progress.''
30     To learn the current status of any Internet-Draft, please check
31     the ``1id-abstracts.txt'' listing contained in the Internet-Drafts
32     Shadow Directories on ds.internic.net (US East Coast),
33     nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or
34     munnari.oz.au (Pacific Rim).
36     The distribution of this memo is unlimited.  It is filed as
37     draft-ietf-cat-kerberos-pk-cross-01.txt, and expires January 31,
38     1998.  Please send comments to the authors.
41 1.  Abstract
43     This document defines extensions to the Kerberos protocol
44     specification (RFC 1510, 'The Kerberos Network Authentication
45     Service (V5)', September 1993) to provide a method for using
46     public key cryptography during cross-realm authentication.  The
47     methods defined here specify the way in which message exchanges
48     are to be used to transport cross-realm secret keys protected by
49     encryption under public keys certified as belonging to KDCs.
52 2.  Motivation
54     The advantages provided by public key cryptography--ease of
55     recoverability in the event of a compromise, the possibility of
56     an autonomous authentication infrastructure, to name a few--have
57     produced a demand for use by Kerberos authentication protocol.  A
58     draft describing the use of public key cryptography in the initial
59     authentication exchange in Kerberos has already been submitted.
60     This draft describes its use in cross-realm authentication.
62     The principal advantage provided by public key cryptography in
63     cross-realm authentication lies in the ability to leverage the
64     existing public key infrastructure.  It frees the Kerberos realm
65     administrator from having to maintain separate keys for each other
66     realm with which it wishes to exchange authentication information,
67     or to utilize a hierarchical arrangement, which may pose problems
68     of trust.
70     Even with the multi-hop cross-realm authentication, there must be
71     some way to locate the path by which separate realms are to be
72     transited.  The current method, which makes use of the DNS-like
73     realm names typical to Kerberos, requires trust of the intermediate
74     KDCs.
76     The methods described in this draft allow a realm to specify, at
77     the time of authentication, which certification paths it will
78     trust.  A shared key for cross-realm authentication can be
79     established, for a period of time.  Furthermore, these methods are
80     transparent to the client, so that only the KDC's need to be
81     modified to use them.
83     It is not necessary to implement the changes described in the
84     "Public Key Cryptography for Initial Authentication" draft to make
85     use of the changes in this draft.  We solicit comments about the
86     interaction between the two protocol changes, but as of this
87     writing, the authors do not perceive any obstacles to using both.
90 3.  Protocol Amendments
92     We assume that the user has already obtained a TGT.  To perform
93     cross-realm authentication, the user sends a request to the local
94     KDC as per RFC 1510.  If the two realms share a secret key, then
95     cross-realm authentication proceeds as usual.  Otherwise, the
96     local KDC may attempt to establish a shared key with the remote
97     KDC using public key cryptography, and exchange this key through
98     the cross-realm ticket granting ticket.
100     We will consider the specific channel on which the message
101     exchanges take place in Section 5 below.
104 3.1.  Changes to the Cross-Realm Ticket Granting Ticket
106     In order to avoid the need for changes to the "installed base" of
107     Kerberos application clients and servers, the only protocol change
108     is to the way in which cross-realm ticket granting tickets (TGTs)
109     are encrypted; as these tickets are opaque to clients and servers,
110     the only change visible to them will be the increased size of the
111     tickets.
113     Cross-realm TGTs are granted by a local KDC to authenticate a user
114     to a remote KDC's ticket granting service.  In standard Kerberos,
115     they are encrypted using a shared secret key manually configured
116     into each KDC.
118     In order to incorporate public key cryptography, we define a new
119     encryption type, "ENCTYPE_PK_CROSS".  Operationally, this encryption
120     type transforms an OCTET STRING of plaintext (normally an EncTktPart)
121     into the following SEQUENCE:
123         PKCrossOutput ::= SEQUENCE {
124             certificate [0]     OCTET STRING OPTIONAL,
125                                     -- public key certificate
126                                     -- of local KDC
127             encSharedKey [1]    EncryptedData,
128                                     -- of type EncryptionKey
129                                     -- containing random symmetric key
130                                     -- encrypted using public key
131                                     -- of remote KDC
132             sigSharedKey [2]    Signature,
133                                     -- of encSharedKey
134                                     -- using signature key
135                                     -- of local KDC
136             pkEncData [3]       EncryptedData,
137                                     -- (normally) of type EncTktPart
138                                     -- encrypted using encryption key
139                                     -- found in encSharedKey
140         }
142     The lifetime included in the ticket should be no longer than the
143     current time plus the maximum key lifetime allowed by the remote
144     realm (see below).
146     PKCROSS operates as follows: when a client submits a request for
147     cross-realm authentication, the local KDC checks to see if it has
148     a long-term shared key established for that realm.  If so, it uses
149     this key as per RFC 1510.
151     If not, it sends a request for information to the remote KDC.  The
152     content of this message is immaterial, as it does not need to be
153     processed by the remote KDC; for the sake of consistency, we define
154     it as follows:
156         RemoteRequest ::= [APPLICATION 41] SEQUENCE {
157             nonce [0]                   INTEGER
158         }
160     The remote KDC replies with a list of all trusted certifiers and
161     all its (the remote KDC's) certificates.  We note that this response
162     is universal and does not depend on which KDC makes the request:
164         RemoteReply ::= [APPLICATION 42] SEQUENCE {
165             trustedCertifiers       [0] SEQUENCE OF PrincipalName,
166             certificates            [1] SEQUENCE OF Certificate,
167             encTypeToUse            [2] SEQUENCE OF INTEGER,
168                                         -- encryption types usable
169                                         -- for encrypting pkEncData
170             keyLifetime             [3] INTEGER
171                                         -- allowable lifetime for key
172                                         -- in seconds
173         }
175         Certificate ::= SEQUENCE {
176             CertType                [0] INTEGER,
177                                         -- type of certificate
178                                         -- 1 = X.509v3 (DER encoding)
179                                         -- 2 = PGP (per PGP draft)
180             CertData                [1] OCTET STRING
181                                         -- actual certificate
182                                         -- type determined by CertType
183         } -- from pk-init draft
185     Upon receiving this reply, the local KDC determines whether it has
186     a certificate the remote KDC trusts, and whether the remote KDC has
187     a certificate the local KDC trusts.  If so, it issues a ticket
188     encrypted using the ENCTYPE_PK_CROSS encryption type defined above.
191 3.2.  Profile Caches
193     We observe that using PKCROSS as specified above requires two
194     private key operations: a signature generation by the local KDC and
195     a decryption by the remote KDC.  This cost can be reduced in the
196     long term by judicious caching of the encSharedKey and the
197     sigSharedKey.
199     Let us define a "profile" as the encSharedKey and sigSharedKey, in
200     conjunction with the associated remote realm name and decrypted
201     shared key (the key encrypted in the encSharedKey).
203     To optimize these interactions, each KDC maintains two caches, one
204     for outbound profiles and one for inbound profiles.  When generating
205     an outbound TGT for another realm, the local KDC first checks to see
206     if the corresponding entry exists in the outbound profile cache; if
207     so, it uses its contents to form the first three fields of the
208     PKCrossOutput; the shared key is used to encrypt the data for the
209     fourth field.  If not, the components are generated fresh and stored
210     in the outbound profile cache.
212     Upon receipt of the TGT, the remote realm checks its inbound profile
213     cache for the corresponding entry.  If it exists, then it uses the
214     contents of the entry to decrypt the data encrypted in the pkEncData.
215     If not, then it goes through the full process of verifying and
216     extracting the shared key; if this is successful, then a new entry
217     is created in the inbound profile cache.
219     The inbound profile cache should support multiple entries per realm,
220     in the event that the initiating realm is replicated.
223 4.  Finding Realms Supporting PKCROSS
225     If either the local realm or the destination realm does not support
226     PKCROSS, or both do not, the mechanism specified in Section 3 can
227     still be used in obtaining the desired remote TGT.
229     In the reference Kerberos implementations, the default behavior is
230     to traverse a path up and down the realm name hierarchy, if the
231     two realms do not share a key.  There is, however, the possibility
232     of using cross links--i.e., keys shared between two realms that
233     are non-contiguous in the realm name hierarchy--to shorten the
234     path, both to minimize delay and the number of intermediate realms
235     that need to be trusted.
237     PKCROSS can be used as a way to provide cross-links even in the
238     absence of shared keys.  If the client is aware that one or two
239     intermediate realms support PKCROSS, then a combination of
240     PKCROSS and conventional cross-realm authentication can be used
241     to reach the final destination realm.
243     We solicit discussion on the best methods for clients and KDCs to
244     determine or advertise support for PKCROSS.
247 5.  Transport Mechanism Issues
249     We have not specified the port on which KDCs supporting PKCROSS
250     should listen to receive the request for information messages noted
251     above.  We solicit discussion on which port should be used.  We
252     propose to use the standard Kerberos ports (well-known 88 or 750),
253     but another possibility is to use a completely different port.
255     Because the messages involved may get long (due to the
256     PKCrossOutput), UDP may break too frequently to be a viable choice
257     for transport.  Since the revised Kerberos RFC will explicitly
258     mention TCP as a possible mode of transport, we solicit discussion
259     on how to incorporate the use of TCP within PKCROSS.
261     We also solicit discussion on what other approaches can be taken to
262     obtain the information in the RemoteReply (e.g., secure DNS or some
263     other repository).
266 6.  Expiration Date
268     This Internet-Draft will expire on January 31, 1998.
271 7.  Authors' Addresses
273     Brian Tung
274     Tatyana Ryutov
275     Clifford Neuman
276     Gene Tsudik
277     USC/Information Sciences Institute
278     4676 Admiralty Way Suite 1001
279     Marina del Rey, CA 90292-6695
280     Phone: +1 310 822 1511
281     E-Mail: {brian, tryutov, bcn, gts}@isi.edu
283     Bill Sommerfeld
284     Hewlett Packard
285     300 Apollo Drive
286     Chelmsford MA 01824
287     Phone: +1 508 436 4352
288     E-Mail: sommerfeld@apollo.hp.com
290     Ari Medvinsky
291     Matthew Hur
292     CyberSafe Corporation
293     1605 NW Sammamish Road Suite 310
294     Issaquah WA 98027-5378
295     Phone: +1 206 391 6000
296     E-mail: {ari.medvinsky, matt.hur}@cybersafe.com