3 Kerberos Working Group L. Zhu
4 Internet-Draft Microsoft Corporation
5 Updates: 4120 (if approved) S. Hartman
6 Intended status: Standards Track MIT
7 Expires: April 26, 2007 October 23, 2006
10 A Generalized Framework for Kerberos Pre-Authentication
11 draft-ietf-krb-wg-preauth-framework-03
15 By submitting this Internet-Draft, each author represents that any
16 applicable patent or other IPR claims of which he or she is aware
17 have been or will be disclosed, and any of which he or she becomes
18 aware will be disclosed, in accordance with Section 6 of BCP 79.
20 Internet-Drafts are working documents of the Internet Engineering
21 Task Force (IETF), its areas, and its working groups. Note that
22 other groups may also distribute working documents as Internet-
25 Internet-Drafts are draft documents valid for a maximum of six months
26 and may be updated, replaced, or obsoleted by other documents at any
27 time. It is inappropriate to use Internet-Drafts as reference
28 material or to cite them other than as "work in progress."
30 The list of current Internet-Drafts can be accessed at
31 http://www.ietf.org/ietf/1id-abstracts.txt.
33 The list of Internet-Draft Shadow Directories can be accessed at
34 http://www.ietf.org/shadow.html.
36 This Internet-Draft will expire on April 26, 2007.
40 Copyright (C) The Internet Society (2006).
44 Kerberos is a protocol for verifying the identity of principals
45 (e.g., a workstation user or a network server) on an open network.
46 The Kerberos protocol provides a mechanism called pre-authentication
47 for proving the identity of a principal and for better protecting the
48 long-term secret of the principal.
50 This document describes a model for Kerberos pre-authentication
54 Zhu & Hartman Expires April 26, 2007 [Page 1]
56 Internet-Draft Kerberos Preauth Framework October 2006
59 mechanisms. The model describes what state in the Kerberos request a
60 pre-authentication mechanism is likely to change. It also describes
61 how multiple pre-authentication mechanisms used in the same request
64 This document also provides common tools needed by multiple pre-
65 authentication mechanisms. One of such tools is a secure channel
66 between the client and the KDC with a reply key delivery mechanism,
67 this secure channel can be used to protect the authentication
68 exchange thus eliminate offline dictionary attacks. With these
69 tools, it is straightforward to chain multiple authentication factors
70 or add a plugin to, for example, utilize a different key management
71 system, or support a new key agreement algorithm.
76 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
77 2. Conventions Used in This Document . . . . . . . . . . . . . . 4
78 3. Model for Pre-Authentication . . . . . . . . . . . . . . . . . 4
79 3.1. Information Managed by the Pre-authentication Model . . . 5
80 3.2. Initial Pre-authentication Required Error . . . . . . . . 7
81 3.3. Client to KDC . . . . . . . . . . . . . . . . . . . . . . 8
82 3.4. KDC to Client . . . . . . . . . . . . . . . . . . . . . . 9
83 4. Pre-Authentication Facilities . . . . . . . . . . . . . . . . 10
84 4.1. Client-authentication Facility . . . . . . . . . . . . . . 11
85 4.2. Strengthening-reply-key Facility . . . . . . . . . . . . . 11
86 4.3. Replacing-reply-key Facility . . . . . . . . . . . . . . . 12
87 4.4. KDC-authentication Facility . . . . . . . . . . . . . . . 13
88 5. Requirements for Pre-Authentication Mechanisms . . . . . . . . 13
89 6. Tools for Use in Pre-Authentication Mechanisms . . . . . . . . 14
90 6.1. Combining Keys . . . . . . . . . . . . . . . . . . . . . . 14
91 6.2. Protecting Requests/Responses . . . . . . . . . . . . . . 15
92 6.3. Managing States for the KDC . . . . . . . . . . . . . . . 15
93 6.4. Pre-authentication Set . . . . . . . . . . . . . . . . . . 17
94 6.5. Definition of Kerberos FAST Padata . . . . . . . . . . . . 18
95 6.5.1. FAST Request . . . . . . . . . . . . . . . . . . . . . 18
96 6.5.2. FAST Response . . . . . . . . . . . . . . . . . . . . 22
97 6.6. Authentication Strength Indication . . . . . . . . . . . . 25
98 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25
99 8. Security Considerations . . . . . . . . . . . . . . . . . . . 25
100 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 26
101 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 26
102 10.1. Normative References . . . . . . . . . . . . . . . . . . . 26
103 10.2. Informative References . . . . . . . . . . . . . . . . . . 26
104 Appendix A. ASN.1 module . . . . . . . . . . . . . . . . . . . . 26
105 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 29
106 Intellectual Property and Copyright Statements . . . . . . . . . . 30
110 Zhu & Hartman Expires April 26, 2007 [Page 2]
112 Internet-Draft Kerberos Preauth Framework October 2006
117 The core Kerberos specification [RFC4120] treats pre-authentication
118 data as an opaque typed hole in the messages to the KDC that may
119 influence the reply key used to encrypt the KDC reply. This
120 generality has been useful: pre-authentication data is used for a
121 variety of extensions to the protocol, many outside the expectations
122 of the initial designers. However, this generality makes designing
123 more common types of pre-authentication mechanisms difficult. Each
124 mechanism needs to specify how it interacts with other mechanisms.
125 Also, problems like combining a key with the long-term secret or
126 proving the identity of the user are common to multiple mechanisms.
127 Where there are generally well-accepted solutions to these problems,
128 it is desirable to standardize one of these solutions so mechanisms
129 can avoid duplication of work. In other cases, a modular approach to
130 these problems is appropriated. The modular approach will allow new
131 and better solutions to common pre-authentication problems to be used
132 by existing mechanisms as they are developed.
134 This document specifies a framework for Kerberos pre-authentication
135 mechanisms. It defines the common set of functions pre-
136 authentication mechanisms perform as well as how these functions
137 affect the state of the request and reply. In addition several
138 common tools needed by pre-authentication mechanisms are provided.
139 Unlike [RFC3961], this framework is not complete--it does not
140 describe all the inputs and outputs for the pre-authentication
141 mechanisms. Pre-Authentication mechanism designers should try to be
142 consistent with this framework because doing so will make their
143 mechanisms easier to implement. Kerberos implementations are likely
144 to have plugin architectures for pre-authentication; such
145 architectures are likely to support mechanisms that follow this
146 framework plus commonly used extensions.
148 One of these common tools is the flexible authentication secure
149 tunneling (FAST) padata. FAST provides a protected channel between
150 the client and the KDC, and it also delivers a reply key within the
151 protected channel. Based on FAST, pre-authentication mechanisms can
152 extend Kerberos with ease, to support, for example, password
153 authenticated key exchange (PAKE) protocols with zero knowledge
154 password proof (ZKPP) [EKE] [IEEE1363.2]. Any pre-authentication
155 mechanism can be encapsulated in the padata field Section 6.5 of
156 FAST. A pre-authentication type thus carried within FAST is called a
157 FAST factor. A FAST factor MUST NOT be used outside of FAST unless
158 its specification explicitly allows so. Note that FAST without a
159 FAST factor for authentication does NOT by itself authenticate the
162 New pre-authentication mechanisms SHOULD design FAST factors, instead
166 Zhu & Hartman Expires April 26, 2007 [Page 3]
168 Internet-Draft Kerberos Preauth Framework October 2006
171 of full-blown pre-authentication mechanisms.
173 A conversation consists of all messages that are necessary to
174 complete the mutual authentication between the client and the KDC. A
175 conversation is the smallest logic unit for messages exchanged
176 between the client and the KDC. The KDC need to manage mulitple
177 authentication sets frequently need to keep track of KDC states
178 during a convesation, standard solutions are provided for these
181 This document should be read only after reading the documents
182 describing the Kerberos cryptography framework [RFC3961] and the core
183 Kerberos protocol [RFC4120]. This document freely uses terminology
184 and notation from these documents without reference or further
188 2. Conventions Used in This Document
190 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
191 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
192 document are to be interpreted as described in [RFC2119].
194 The word padata is used as the shorthand of pre-authentication data.
195 A conversation is used to refer to all authentication messages
196 exchanged between the client and the KDC.
199 3. Model for Pre-Authentication
201 When a Kerberos client wishes to obtain a ticket using the
202 authentication server, it sends an initial Authentication Service
203 (AS) request. If pre-authentication is required but not being used,
204 then the KDC will respond with a KDC_ERR_PREAUTH_REQUIRED error.
205 Alternatively, if the client knows what pre-authentication to use, it
206 MAY optimize away a round-trip and send an initial request with
207 padata included in the initial request. If the client includes the
208 wrong padata, the KDC MAY return KDC_ERR_PREAUTH_FAILED with no
209 indication of what padata should have been included. In that case,
210 the client MUST retry with no padata and examine the error data of
211 the KDC_ERR_PREAUTH_REQUIRED error. If the KDC includes pre-
212 authentication information in the accompanying error data of
213 KDC_ERR_PREAUTH_FAILED, the client SHOULD process the error data as
214 that of the KDC_ERR_PREAUTH_REQUIRED error, and then retry.
216 The conventional KDC maintains no state between two requests;
217 subsequent requests may even be processed by a different KDC. On the
218 other hand, the client treats a series of exchanges with KDCs as a
222 Zhu & Hartman Expires April 26, 2007 [Page 4]
224 Internet-Draft Kerberos Preauth Framework October 2006
227 single authentication session. Each exchange accumulates state and
228 hopefully brings the client closer to a successful authentication.
230 These models for state management are in apparent conflict. For many
231 of the simpler pre-authentication scenarios, the client uses one
232 round trip to find out what mechanisms the KDC supports. Then the
233 next request contains sufficient pre-authentication for the KDC to be
234 able to return a successful reply. For these simple scenarios, the
235 client only sends one request with pre-authentication data and so the
236 authentication session is trivial. For more complex authentication
237 sessions, the KDC needs to provide the client with a cookie to
238 include in future requests to capture the current state of the
239 authentication session. Handling of multiple round-trip mechanisms
240 is discussed in Section 6.3.
242 This framework specifies the behavior of Kerberos pre-authentication
243 mechanisms used to identify users or to modify the reply key used to
244 encrypt the KDC reply. The PA-DATA typed hole may be used to carry
245 extensions to Kerberos that have nothing to do with proving the
246 identity of the user or establishing a reply key. Such extensions
247 are outside the scope of this framework. However mechanisms that do
248 accomplish these goals should follow this framework.
250 This framework specifies the minimum state that a Kerberos
251 implementation needs to maintain while handling a request in order to
252 process pre-authentication. It also specifies how Kerberos
253 implementations process the padata at each step of the AS request
256 3.1. Information Managed by the Pre-authentication Model
258 The following information is maintained by the client and KDC as each
259 request is being processed:
261 o The reply key used to encrypt the KDC reply
263 o How strongly the identity of the client has been authenticated
265 o Whether the reply key has been used in this authentication session
267 o Whether the reply key has been replaced in this authentication
270 o Whether the contents of the KDC reply can be verified by the
278 Zhu & Hartman Expires April 26, 2007 [Page 5]
280 Internet-Draft Kerberos Preauth Framework October 2006
283 o Whether the contents of the KDC reply can be verified by the
286 Conceptually, the reply key is initially the long-term key of the
287 principal. However, principals can have multiple long-term keys
288 because of support for multiple encryption types, salts and
289 string2key parameters. As described in section 5.2.7.5 of the
290 Kerberos protocol [RFC4120], the KDC sends PA-ETYPE-INFO2 to notify
291 the client what types of keys are available. Thus in full
292 generality, the reply key in the pre-authentication model is actually
293 a set of keys. At the beginning of a request, it is initialized to
294 the set of long-term keys advertised in the PA-ETYPE-INFO2 element on
295 the KDC. If multiple reply keys are available, the client chooses
296 which one to use. Thus the client does not need to treat the reply
297 key as a set. At the beginning of a handling a request, the client
298 picks a reply key to use.
300 KDC implementations MAY choose to offer only one key in the PA-ETYPE-
301 INFO2 element. Since the KDC already knows the client's list of
302 supported enctypes from the request, no interoperability problems are
303 created by choosing a single possible reply key. This way, the KDC
304 implementation avoids the complexity of treating the reply key as a
307 When the padata in the request is verified by the KDC, then the
308 client is known to have that key, therefore the KDC SHOULD pick the
309 same key as the reply key.
311 At the beginning of handling a message on both the client and the
312 KDC, the client's identity is not authenticated. A mechanism may
313 indicate that it has successfully authenticated the client's
314 identity. This information is useful to keep track of on the client
315 in order to know what pre-authentication mechanisms should be used.
316 The KDC needs to keep track of whether the client is authenticated
317 because the primary purpose of pre-authentication is to authenticate
318 the client identity before issuing a ticket. The handling of
319 authentication strength using various authentication mechanisms is
320 discussed in Section 6.6.
322 Initially the reply key has not been used. A pre-authentication
323 mechanism that uses the reply key either directly to encrypt or
324 checksum some data or indirectly in the generation of new keys MUST
325 indicate that the reply key is used. This state is maintained by the
326 client and the KDC to enforce the security requirement stated in
327 Section 4.3 that the reply key cannot be used after it is replaced.
329 Initially the reply key has not been replaced. If a mechanism
330 implements the Replace Reply Key facility discussed in Section 4.3,
334 Zhu & Hartman Expires April 26, 2007 [Page 6]
336 Internet-Draft Kerberos Preauth Framework October 2006
339 then the state MUST be updated to indicate that the reply key has
340 been replaced. Once the reply key has been replaced, knowledge of
341 the reply key is insufficient to authenticate the client. The reply
342 key is marked replaced in exactly the same situations as the KDC
343 reply is marked as not being verified to the client principal.
344 However, while mechanisms can verify the KDC reply to the client,
345 once the reply key is replaced, then the reply key remains replaced
346 for the remainder of the authentication session.
348 Without pre-authentication, the client knows that the KDC reply is
349 authentic and has not been modified because it is encrypted in a
350 long-term key of the client. Only the KDC and the client know that
351 key. So at the start of handling any message the KDC reply is
352 presumed to be verified using the client principal's long-term key.
353 Any pre-authentication mechanism that sets a new reply key not based
354 on the principal's long-term secret MUST either verify the KDC reply
355 some other way or indicate that the reply is not verified. If a
356 mechanism indicates that the reply is not verified then the client
357 implementation MUST return an error unless a subsequent mechanism
358 verifies the reply. The KDC needs to track this state so it can
359 avoid generating a reply that is not verified.
361 The typical Kerberos request does not provide a way for the client
362 machine to know that it is talking to the correct KDC. Someone who
363 can inject packets into the network between the client machine and
364 the KDC and who knows the password that the user will give to the
365 client machine can generate a KDC reply that will decrypt properly.
366 So, if the client machine needs to authenticate that the user is in
367 fact the named principal, then the client machine needs to do a TGS
368 request for itself as a service. Some pre-authentication mechanisms
369 may provide a way for the client to authenticate the KDC. Examples
370 of this include signing the reply with a well-known public key or
371 providing a ticket for the client machine as a service in addition to
372 the requested ticket.
374 3.2. Initial Pre-authentication Required Error
376 Typically a client starts an authentication session by sending an
377 initial request with no pre-authentication. If the KDC requires pre-
378 authentication, then it returns a KDC_ERR_PREAUTH_REQUIRED message.
379 After the first reply with the KDC_ERR_PREAUTH_REQUIRED error code,
380 the KDC returns the error code KDC_ERR_MORE_PREAUTH_DATA_NEEDED for
381 pre-authentication configurations that use multi-round-trip
382 mechanisms; see Section 3.4 for details of that case.
384 The KDC needs to choose which mechanisms to offer the client. The
385 client needs to be able to choose what mechanisms to use from the
386 first message. For example consider the KDC that will accept
390 Zhu & Hartman Expires April 26, 2007 [Page 7]
392 Internet-Draft Kerberos Preauth Framework October 2006
395 mechanism A followed by mechanism B or alternatively the single
396 mechanism C. A client that supports A and C needs to know that it
397 should not bother trying A.
399 Mechanisms can either be sufficient on their own or can be part of an
400 authentication set--a group of mechanisms that all need to
401 successfully complete in order to authenticate a client. Some
402 mechanisms may only be useful in authentication sets; others may be
403 useful alone or in authentication sets. For the second group of
404 mechanisms, KDC policy dictates whether the mechanism will be part of
405 an authentication set or offered alone. For each mechanism that is
406 offered alone, the KDC includes the pre-authentication type ID of the
407 mechanism in the padata sequence returned in the
408 KDC_ERR_PREAUTH_REQUIRED error.
410 The KDC SHOULD NOT send data that is encrypted in the long-term
411 password-based key of the principal. Doing so has the same security
412 exposures as the Kerberos protocol without pre-authentication. There
413 are few situations where pre-authentication is desirable and where
414 the KDC needs to expose cipher text encrypted in a weak key before
415 the client has proven knowledge of that key.
419 This description assumes a client has already received a
420 KDC_ERR_PREAUTH_REQUIRED from the KDC. If the client performs
421 optimistic pre-authentication then the client needs to optimistically
422 choose the information it would normally receive from that error
425 The client starts by initializing the pre-authentication state as
426 specified. It then processes the padata in the
427 KDC_ERR_PREAUTH_REQUIRED.
429 When processing the response to the KDC_ERR_PREAUTH_REQUIRED, the
430 client MAY ignore any padata it chooses unless doing so violates a
431 specification to which the client conforms. Clients MUST NOT ignore
432 the padata defined in Section 6.3. Clients SHOULD process padata
433 unrelated to this framework or other means of authenticating the
434 user. Clients SHOULD choose one authentication set or mechanism that
435 could lead to authenticating the user and ignore the rest. Since the
436 list of mechanisms offered by the KDC is in the decreasing preference
437 order, clients typically choose the first mechanism that the client
438 can usefully perform. If a client chooses to ignore a padata it MUST
439 NOT process the padata, allow the padata to affect the pre-
440 authentication state, nor respond to the padata.
442 For each padata the client chooses to process, the client processes
446 Zhu & Hartman Expires April 26, 2007 [Page 8]
448 Internet-Draft Kerberos Preauth Framework October 2006
451 the padata and modifies the pre-authentication state as required by
452 that mechanism. Padata are processed in the order received from the
455 After processing the padata in the KDC error, the client generates a
456 new request. It processes the pre-authentication mechanisms in the
457 order in which they will appear in the next request, updating the
458 state as appropriate. The request is sent when it is complete.
462 When a KDC receives an AS request from a client, it needs to
463 determine whether it will respond with an error or a AS reply. There
464 are many causes for an error to be generated that have nothing to do
465 with pre-authentication; they are discussed in the core Kerberos
468 From the standpoint of evaluating the pre-authentication, the KDC
469 first starts by initializing the pre-authentication state. It then
470 processes the padata in the request. As mentioned in Section 3.3,
471 the KDC MAY ignore padata that is inappropriate for the configuration
472 and MUST ignore padata of an unknown type.
474 At this point the KDC decides whether it will issue a pre-
475 authentication required error or a reply. Typically a KDC will issue
476 a reply if the client's identity has been authenticated to a
479 In the case of a KDC_ERR_PREAUTH_REQUIRED error, the KDC first starts
480 by initializing the pre-authentication state. Then it processes any
481 padata in the client's request in the order provided by the client.
482 Mechanisms that are not understood by the KDC are ignored.
483 Mechanisms that are inappropriate for the client principal or the
484 request SHOULD also be ignored. Next, it generates padata for the
485 error response, modifying the pre-authentication state appropriately
486 as each mechanism is processed. The KDC chooses the order in which
487 it will generate padata (and thus the order of padata in the
488 response), but it needs to modify the pre-authentication state
489 consistently with the choice of order. For example, if some
490 mechanism establishes an authenticated client identity, then the
491 subsequent mechanisms in the generated response receive this state as
492 input. After the padata is generated, the error response is sent.
493 Typically the errors with the code KDC_ERR_MORE_PREAUTH_DATA_NEEDED
494 in a converstation will include KDC state as discussed in
497 To generate a final reply, the KDC generates the padata modifying the
498 pre-authentication state as necessary. Then it generates the final
502 Zhu & Hartman Expires April 26, 2007 [Page 9]
504 Internet-Draft Kerberos Preauth Framework October 2006
507 response, encrypting it in the current pre-authentication reply key.
510 4. Pre-Authentication Facilities
512 Pre-Authentication mechanisms can be thought of as providing various
513 conceptual facilities. This serves two useful purposes. First,
514 mechanism authors can choose only to solve one specific small
515 problem. It is often useful for a mechanism designed to offer key
516 management not to directly provide client authentication but instead
517 to allow one or more other mechanisms to handle this need. Secondly,
518 thinking about the abstract services that a mechanism provides yields
519 a minimum set of security requirements that all mechanisms providing
520 that facility must meet. These security requirements are not
521 complete; mechanisms will have additional security requirements based
522 on the specific protocol they employ.
524 A mechanism is not constrained to only offering one of these
525 facilities. While such mechanisms can be designed and are sometimes
526 useful, many pre-authentication mechanisms implement several
527 facilities. By combining multiple facilities in a single mechanism,
528 it is often easier to construct a secure, simple solution than by
529 solving the problem in full generality. Even when mechanisms provide
530 multiple facilities, they need to meet the security requirements for
531 all the facilities they provide.
533 According to Kerberos extensibility rules (Section 1.5 of the
534 Kerberos specification [RFC4120]), an extension MUST NOT change the
535 semantics of a message unless a recipient is known to understand that
536 extension. Because a client does not know that the KDC supports a
537 particular pre-authentication mechanism when it sends an initial
538 request, a pre-authentication mechanism MUST NOT change the semantics
539 of the request in a way that will break a KDC that does not
540 understand that mechanism. Similarly, KDCs MUST not send messages to
541 clients that affect the core semantics unless the client has
542 indicated support for the message.
544 The only state in this model that would break the interpretation of a
545 message is changing the expected reply key. If one mechanism changed
546 the reply key and a later mechanism used that reply key, then a KDC
547 that interpreted the second mechanism but not the first would fail to
548 interpret the request correctly. In order to avoid this problem,
549 extensions that change core semantics are typically divided into two
550 parts. The first part proposes a change to the core semantic--for
551 example proposes a new reply key. The second part acknowledges that
552 the extension is understood and that the change takes effect.
553 Section 4.2 discusses how to design mechanisms that modify the reply
554 key to be split into a proposal and acceptance without requiring
558 Zhu & Hartman Expires April 26, 2007 [Page 10]
560 Internet-Draft Kerberos Preauth Framework October 2006
563 additional round trips to use the new reply key in subsequent pre-
564 authentication. Other changes in the state described in Section 3.1
565 can safely be ignored by a KDC that does not understand a mechanism.
566 Mechanisms that modify the behavior of the request outside the scope
567 of this framework need to carefully consider the Kerberos
568 extensibility rules to avoid similar problems.
570 4.1. Client-authentication Facility
572 The client authentication facility proves the identity of a user to
573 the KDC before a ticket is issued. Examples of mechanisms
574 implementing this facility include the encrypted timestamp facility
575 defined in Section 5.2.7.2 of the Kerberos specification [RFC4120].
576 Mechanisms that provide this facility are expected to mark the client
579 Mechanisms implementing this facility SHOULD require the client to
580 prove knowledge of the reply key before transmitting a successful KDC
581 reply. Otherwise, an attacker can intercept the pre-authentication
582 exchange and get a reply to attack. One way of proving the client
583 knows the reply key is to implement the Replace Reply Key facility
584 along with this facility. The PKINIT mechanism [RFC4556] implements
585 Client Authentication alongside Replace Reply Key.
587 If the reply key has been replaced, then mechanisms such as
588 encrypted-timestamp that rely on knowledge of the reply key to
589 authenticate the client MUST NOT be used.
591 4.2. Strengthening-reply-key Facility
593 Particularly, when dealing with keys based on passwords, it is
594 desirable to increase the strength of the key by adding additional
595 secrets to it. Examples of sources of additional secrets include the
596 results of a Diffie-Hellman key exchange or key bits from the output
597 of a smart card [RFC4556]. Typically these additional secrets can be
598 first combined with the existing reply key and then converted to a
599 protocol key using tools defined in Section 6.1.
601 If a mechanism implementing this facility wishes to modify the reply
602 key before knowing that the other party in the exchange supports the
603 mechanism, it proposes modifying the reply key. The other party then
604 includes a message indicating that the proposal is accepted if it is
605 understood and meets policy. In many cases it is desirable to use
606 the new reply key for client authentication and for other facilities.
607 Waiting for the other party to accept the proposal and actually
608 modify the reply key state would add an additional round trip to the
609 exchange. Instead, mechanism designers are encouraged to include a
610 typed hole for additional padata in the message that proposes the
614 Zhu & Hartman Expires April 26, 2007 [Page 11]
616 Internet-Draft Kerberos Preauth Framework October 2006
619 reply key change. The padata included in the typed hole are
620 generated assuming the new reply key. If the other party accepts the
621 proposal, then these padata are interpreted as if they were included
622 immediately following the proposal. The party generating the
623 proposal can determine whether the padata were processed based on
624 whether the proposal for the reply key is accepted.
626 The specific formats of the proposal message, including where padata
627 are are included is a matter for the mechanism specification.
628 Similarly, the format of the message accepting the proposal is
631 Mechanisms implementing this facility and including a typed hole for
632 additional padata MUST checksum that padata using a keyed checksum or
633 encrypt the padata. Typically the reply key is used to protect the
634 padata. If you are only minimally increasing the strength of the
635 reply key, this may give the attacker access to something too close
636 to the original reply key. However, binding the padata to the new
637 reply key seems potentially important from a security standpoint.
638 There may also be objections to this from a double encryption
639 standpoint because we also recommend client authentication facilities
640 be tied to the reply key.
642 4.3. Replacing-reply-key Facility
644 The Replace Reply Key facility replaces the key in which a successful
645 AS reply will be encrypted. This facility can only be used in cases
646 where knowledge of the reply key is not used to authenticate the
647 client. The new reply key MUST be communicated to the client and the
648 KDC in a secure manner. Mechanisms implementing this facility MUST
649 mark the reply key as replaced in the pre-authentication state.
650 Mechanisms implementing this facility MUST either provide a mechanism
651 to verify the KDC reply to the client or mark the reply as unverified
652 in the pre-authentication state. Mechanisms implementing this
653 facility SHOULD NOT be used if a previous mechanism has used the
656 As with the strengthening-reply-key facility, Kerberos extensibility
657 rules require that the reply key not be changed unless both sides of
658 the exchange understand the extension. In the case of this facility
659 it will likely be more common for both sides to know that the
660 facility is available by the time that the new key is available to be
661 used. However, mechanism designers can use a container for padata in
662 a proposal message as discussed in Section 4.2 if appropriate.
670 Zhu & Hartman Expires April 26, 2007 [Page 12]
672 Internet-Draft Kerberos Preauth Framework October 2006
675 4.4. KDC-authentication Facility
677 This facility verifies that the reply comes from the expected KDC.
678 In traditional Kerberos, the KDC and the client share a key, so if
679 the KDC reply can be decrypted then the client knows that a trusted
680 KDC responded. Note that the client machine cannot trust the client
681 unless the machine is presented with a service ticket for it
682 (typically the machine can retrieve this ticket by itself). However,
683 if the reply key is replaced, some mechanism is required to verify
684 the KDC. Pre-authentication mechanisms providing this facility allow
685 a client to determine that the expected KDC has responded even after
686 the reply key is replaced. They mark the pre-authentication state as
687 having been verified.
690 5. Requirements for Pre-Authentication Mechanisms
692 This section lists requirements for specifications of pre-
693 authentication mechanisms.
695 For each message in the pre-authentication mechanism, the
696 specification describes the pa-type value to be used and the contents
697 of the message. The processing of the message by the sender and
698 recipient is also specified. This specification needs to include all
699 modifications to the pre-authentication state.
701 Generally mechanisms have a message that can be sent in the error
702 data of the KDC_ERR_PREAUTH_REQUIRED error message or in an
703 authentication set. If the client need information such as, for
704 example, trusted certificate authorities in order to determine if it
705 can use the mechanism, then this information should be in that
706 message. In addition, such mechanisms should also define a pa-hint
707 to be included in authentication sets. Often, the same information
708 included in the padata-value is appropriate to include in the pa-
711 In order to ease security analysis the mechanism specification should
712 describe what facilities from this document are offered by the
713 mechanism. For each facility, the security consideration section of
714 the mechanism specification should show that the security
715 requirements of that facility are met. This requirement is
716 applicable to any FAST factor that is used in FAST to provide
717 authentication information.
719 Significant problems have resulted in the specification of Kerberos
720 protocols because much of the KDC exchange is not protected against
721 authentication. The security considerations section should discuss
722 unauthenticated plaintext attacks. It should either show that
726 Zhu & Hartman Expires April 26, 2007 [Page 13]
728 Internet-Draft Kerberos Preauth Framework October 2006
731 plaintext is protected or discuss what harm an attacker could do by
732 modifying the plaintext. It is generally acceptable for an attacker
733 to be able to cause the protocol negotiation to fail by modifying
734 plaintext. More significant attacks should be evaluated carefully.
737 6. Tools for Use in Pre-Authentication Mechanisms
739 This section describes common tools needed by multiple pre-
740 authentication mechanisms. By using these tools mechanism designers
741 can use a modular approach to specify mechanism details and ease
746 Frequently a weaker key need to be combined with a strong key before
747 use. For example, passwords are typically limited in size and
748 insufficiently random, therefore it is desirable to increase the
749 strength of the keys based on passwords by adding additional secrets
750 to it. Additional source of secrecy can come from a hardware token.
752 This section provides a standard way to combine two keys into one.
753 The function KRB-FX-CF1() produces a new key based on two existing
754 keys of the same enctype and it is base on the primitives encrypt(),
755 random-to-key() and K-truncate() described in [RFC3961].
757 KRB-FX-CF1(protocol key, protocol key, octet string) ->
760 The KRB-FX-CF1() function takes two protocol keys and an octet string
761 as input, and output a new key of the same enctype.
763 encrypt(B, initial-cipher-state, pepper) -> (state-1, cipher-text-1)
765 encrypt(A, initial-cipher-state, cipher-text-1) ->
766 (state-2, cipher-text-2)
768 K-truncate(cipher-text-2) -> bitstring-3
770 random-to-key(bitstring-3) -> final-key
772 KRB-FX-CF1(A, B, pepper) -> final-key
774 Where initial-cipher-state is defined in [RFC3961] and the key-
775 generation seed length K is specified by the enctype profile
776 [RFC3961]. The length of the parameter pepper MUST be chosen such
777 that cipher-text-2 has at least K bits. If the input parameter
778 pepper is too short for encrypt(), it MUST first be padded with all
782 Zhu & Hartman Expires April 26, 2007 [Page 14]
784 Internet-Draft Kerberos Preauth Framework October 2006
787 zeroes to the next shortest length that encryt() can operate on.
789 KRB-FX-CF1() has the following properties:
791 o The knowledge of the final-key does not reveal either key A or key
794 o Without the knowledge of key A, it is infeasible to find the value
795 of the final-key within the lifetime of key A.
797 o Without the knowledge of key B, it is infeasible to find the value
798 of final key within the lifetime of key B.
800 o Typically Key A is stronger than Key B. The lifetime of final-key
801 is no worse than that of Key A.
803 Any mechanism that uses KRB-FX-CF1() MUST show the security
804 requirements are met base on these properties.
806 6.2. Protecting Requests/Responses
808 Mechanism designers SHOULD provide integrity protection of the
809 messages in a conversation whenever feasible
811 Sensitive data MUST be encrypted when sent over the wire. Non-
812 sensitive data that have privacy implications are encouraged to be
815 If there are more than one roundtrip for an authentication exchange,
816 mechanism designers SHOULD allow either the client or the KDC provide
817 a checksum of all the messages exchanged on the wire, that is then
818 verified by the receiver.
820 Primitives defined in [RFC3961] are RECOMMENDED for integrity
821 protection and confidentiality. Mechanisms based on these primitives
822 have the benefit of crypto-agility provided by [RFC3961]. The
823 advantage afforded by crypto-agility is the ability to avoid a multi-
824 year standardization and deployment cycle to fix a problem specific
825 to a particular algorithm, when real attacks do arise against that
828 New mechanisms MUST NOT be hard-wired to use a specific algorithm.
830 6.3. Managing States for the KDC
832 For any conversation that consists of more than two messages, the KDC
833 likely need to keep track of KDC states for incomplete authentication
834 exchanges and destroy the states of a conversation when the
838 Zhu & Hartman Expires April 26, 2007 [Page 15]
840 Internet-Draft Kerberos Preauth Framework October 2006
843 authentication completes successful or fails, or the KDC times out.
844 When the KDC times out, the KDC returns an error message with the
845 code KDC_ERR_PREAUTH_TIMED_OUT.
847 KDC_ERR_PREAUTH_TIMED_OUT TBA
849 Upnon receipt of this error, the client MUST abort the existing
850 conversation, and restart a new one.
852 An example, where more than one message from the client is needed, is
853 when the client is authenticated based on a challenge-response
854 scheme. In that case, the KDC need to keep track of the challenge
855 issued for a client authentication request.
857 The PA-FX-COOKIE pdata type is defined in this section to facilitate
862 The corresponding padata-value field [RFC4120] contains the
863 Distinguished Encoding Rules (DER) [X60] [X690] encoding of the
864 following Abstract Syntax Notation One (ASN.1) type PA-FX-COOKIE:
866 PA-FX-COOKIE ::= SEQUENCE {
867 Cookie [1] OCTET STRING,
868 -- Opaque data, for use to associate all the messages in a
869 -- single conversation between the client and the KDC.
870 -- This can be generated by either the client or the KDC.
871 -- The receiver MUST copy the exact Cookie encapsulated in
872 -- a PA_FX_COOKIE data element into the next message of the
873 -- same conversation.
877 The PA-FX-COOKIE structure contains a opaque cookie that is a logic
878 identifier of all the messages in a conversation.
880 The PA_FX_COOKIE can be initially sent by the client or the KDC, the
881 receiver MUST copy the Cookie into a PA_FX_COOKIE padata and include
882 it in the next message, if any, in the same conversation.
884 The content of the PA_FX_COOKIE padata is a local matter of the
885 sender. Implementations MUST NOT include any sensitive or private
886 data in the PA-FX-COOKIE structure.
888 If at least one more message for a mechanism or a mechanism set is
889 expected by the KDC, the KDC returns a
890 KDC_ERR_MORE_PREAUTH_DATA_NEEDED error with a PA_FX_COOKIE to
894 Zhu & Hartman Expires April 26, 2007 [Page 16]
896 Internet-Draft Kerberos Preauth Framework October 2006
899 identify the conversation with the client.
901 KDC_ERR_MORE_PREAUTH_DATA_NEEDED TBA
903 If a PA_FX_COOKIE is included in the client request, the KDC then
904 MUST copy the exact cookie into the response.
906 6.4. Pre-authentication Set
908 If all mechanisms in a group need to successfully complete in order
909 to authenticate a client, the client and the KDC SHOULD use the
910 PA_AUTHENTICATION_SET padata element. A PA_AUTHENTICATION_SET padata
911 element contains the ASN.1 DER encoding of the PA-AUTHENTICATION-SET
914 PA-AUTHENTICATION-SET ::= SEQUENCE OF PA-AUTHENTICATION-SET-ELEM
916 PA-AUTHENTICATION-SET-ELEM ::= SEQUENCE {
918 -- same as padata-type.
919 pa-hint [2] OCTET STRING,
924 The pa-type field of the PA-AUTHENTICATION-SET-ELEM structure
925 contains the corresponding value of padata-type in PA-DATA [RFC4120].
926 Associated with the pa-type is a pa-hint, which is an octet-string
927 specified by the pre-authentication mechanism. This hint may provide
928 information for the client which helps it determine whether the
929 mechanism can be used. For example a public-key mechanism might
930 include the certificate authorities it trusts in the hint info. Most
931 mechanisms today do not specify hint info; if a mechanism does not
932 specify hint info the KDC MUST NOT send a hint for that mechanism.
933 To allow future revisions of mechanism specifications to add hint
934 info, clients MUST ignore hint info received for mechanisms that the
935 client believes do not support hint info.
937 When indicating which sets of padata are supported, the KDC includes
938 a PA-AUTHENTICATION-SET padata element for each authentication set.
940 The client element sends the padata-value for the first mechanism in
941 the authentication set, when the first mechanism completes, the
942 client and the KDC will proceed with the second mechanism, and so on.
943 The PA_FX_COOKIE as defined in Section 6.3 MUST be sent along with
944 the first message that contains a PA-AUTHENTICATION-SET, in order to
945 keep track of KDC states.
950 Zhu & Hartman Expires April 26, 2007 [Page 17]
952 Internet-Draft Kerberos Preauth Framework October 2006
955 6.5. Definition of Kerberos FAST Padata
957 The cipher text exposure of encrypted timestamp pre-authentication
958 data is a security concern for Kerberos. Attackers can lauch offline
959 dictionary attack using the cipher text. The FAST pre-authentication
960 padata is a tool to mitigate this threat. FAST also provides
961 solutions to common problems for pre-authentication mechanisms such
962 as binding of the request and the reply, freshness guarantee of the
963 authentication. FAST itself, however, does not authenticate the
964 client or the KDC, instead, it provides a typed hole to allow pre-
965 authentication data be carried with the FAST messages. A pre-
966 authentication data element used within FAST is called a FAST factor.
967 A FAST factor represents the minimal work required for extending
968 Kerberos to support a new authentication scheme. A FAST factor MUST
969 NOT be used outside of FAST unless its specification explicitly
970 allows so. The FAST typed hole can also be used as a generic one not
971 intended to prove the client's identity, or establish the reply key.
973 New pre-authentication mechanisms SHOULD design as FAST factors,
974 instead of full-blown pre-authentication mechanisms.
976 A FAST mechanism factor when used within FAST to authenticate the
977 client or the KDC is a pre-authentication mechanism, as such the
978 specification of such a FAST factor SHOULD specify which facilities
979 it provides per Section 5.
981 Implementations of the pre-authentication framework SHOULD use
982 encrypted timestamp pre-authentication, if that is the mechanism to
983 authenticate the client, as a FAST factor to avoid security exposure.
985 The encrypted timestamp FAST factor MUST fill out the encrypted rep-
986 key-package field as described in this section. This pre-
987 authentication mechanism provides the following facilities: client-
988 authentication, replacing-reply-key, KDC-authentication. It does not
989 provide the strengthening-reply-key facility. The security
990 considerations section of this document provides an explaination why
991 the security requirements are met.
993 FAST employs an armoring scheme. The armor can be a host TGT, or an
994 anonymous TGT obtained based on anonymous PKINIT [KRB-ANON], or a
995 pre-shared long term key such as a host key. The rest of this
996 section describes the messages used by FAST.
1000 A padata type PA_FX_FAST is defined for the FAST Kerberos pre-
1001 authentication padata. The corresponding padata-value field
1002 [RFC4120] contains the DER encoding of the ASN.1 type PA-FX-FAST-
1006 Zhu & Hartman Expires April 26, 2007 [Page 18]
1008 Internet-Draft Kerberos Preauth Framework October 2006
1013 PA-FX-FAST-REQUEST ::= CHOICE {
1014 armored-data [1] KrbFastAmoredReq,
1018 KrbFastAmoredReq ::= SEQUENCE {
1019 armor [1] KrbFastArmor OPTIONAL,
1020 -- Contains the armor that determines the armor key.
1021 -- MUST be present in the initial AS-REQ in a converstation,
1022 -- MUST be absent in any subsequent AS-REQ.
1023 -- MUST be absent in TGS-REQ.
1024 req-checksum [2] Checksum,
1025 -- Checksum performed over the type KDC-REQ-BODY.
1026 -- The checksum key is the armor key, and the checksum
1027 -- type is the required checksum type for the enctype of
1029 enc-fast-req [3] EncryptedData, -- KrbFastReq --
1030 -- The encryption key is the armor key, and the key usage
1035 The PA-FX-FAST-REQUEST contains a KrbFastAmoredReq structure. The
1036 KrbFastAmoredReq encapsulates the encrypted padata.
1038 The key used to encrypt the KrbFastReq structure in the
1039 KrbFastAmoredReq is called the armor key, and the key usage number
1040 for that encryption is TBA.
1042 When a KrbFastAmoredReq is included in an AS request, the
1043 KrbFastArmor field MUST be present in the initial AS-REQ in a
1044 converstation, specifying the armor key being used. The armor field
1045 MUST be absent in any subsequent AS-REQ of the same converstation.
1046 Thus the armor key is specified explicitly in the initial AS-REQ in a
1047 converstation, and implicitly thereafter.
1049 When a KrbFastAmoredReq is included in a TGS request, the
1050 KrbFastArmor field MUST be absent. In which case, the subkey in the
1051 AP-REQ authenticator in the PA-TGS-REQ MUST be present, and the armor
1052 key is implicitly that subkey.
1056 The ArmorData structure is used to identify the armor key. It
1057 contains two fields: The armor-type identifies the type of armor
1058 data, and the armor-value as an OCTET STRING contains the data.
1062 Zhu & Hartman Expires April 26, 2007 [Page 19]
1064 Internet-Draft Kerberos Preauth Framework October 2006
1067 KrbFastArmor ::= SEQUENCE {
1068 armor-type [1] Int32,
1069 -- Type of the armor.
1070 armor-value [2] OCTET STRING,
1071 -- Value of the armor.
1075 The value of the armor key is a matter of the armor type
1076 specification. The following types of armors are defined:
1079 FX_FAST_ARMOR_AP_REQUEST 1
1080 FX_FAST_ARMOR_KEY_ID 2
1082 6.5.1.1.1. Ticket Based Armors
1084 The FX_FAST_ARMOR_AP_REQUEST armor type is based on a Kerberos
1085 ticket. The content of a FX_FAST_ARMOR_AP_REQUEST is an AP-REQ
1086 encoded in DER. The subkey field in the AP-REQ MUST be present. And
1087 the armor key is the subkey in the AP-REQ authenticator.
1089 If the client has a TGT for the expected KDC, it can use that ticket
1090 to construct the AP-REQ. If not, the client can use anonymous PKINIT
1091 as described in [KRB-ANON] to obtain a TGT anonymously and use that
1092 to construct a FX_FAST_ARMOR_AP_REQUEST armor.
1094 6.5.1.1.2. Key Based Armors
1096 The FX_FAST_ARMOR_KEY_ID armor type contains an identifier of a key
1097 shared between the client host and the KDC. The content and the
1098 encoding of the armor-data is a local matter of the client and the
1099 KDC. The FX_FAST_ARMOR_KEY_ID value is an identifier of the armor
1100 key. The FX_FAST_ARMOR_KEY_ID armor is useful when the client host
1101 and the KDC does have a shared key and it is beneficial to minimize
1102 the number of messages exchanged between the client and the KDC,
1103 namely eliminating the messages to obtain a host ticket based on the
1106 Conforming implementations MUST implement the
1107 FX_FAST_ARMOR_AP_REQUEST armor.
1109 The req-checksum field contains a checksum that is performed over the
1110 type KDC-REQ-BODY. The checksum key is the armor key, and the
1111 checksum type is the required checksum type for the enctype of the
1114 The enc-fast-req field contains an encrypted KrbFastReq structure.
1118 Zhu & Hartman Expires April 26, 2007 [Page 20]
1120 Internet-Draft Kerberos Preauth Framework October 2006
1123 The KrbFastReq structure contains the following information:
1125 KrbFastReq ::= SEQUENCE {
1126 fast-options [0] FastOptions,
1127 -- Additional options.
1128 padata [1] SEQUENCE OF PA-DATA,
1129 -- padata typed holes.
1130 timestamp [2] KerberosTime,
1131 usec [3] Microseconds,
1132 -- timestamp and usec represent the time of the client
1134 req-nonce [4] OCTET STRING,
1135 -- At least 128 octets in length, randomly filled using
1136 -- a PRNG by the client for each message request.
1140 The fast-options field indicates various options to modify the
1141 behavior of the KDC. The meanings of the options are as follows:
1143 FastOptions ::= KerberosFlags
1146 -- kdc-referrals(16)
1149 Bits Name Description
1150 -----------------------------------------------------------------
1151 0 RESERVED Reserved for future expansion of this field.
1152 1 anonymous Requesting the KDC to hide client names in
1153 the KDC response, as described next in this
1155 16 kdc-referrals Requesting the KDC to follow referrals, as
1156 described next in this section.
1158 Bits 1 through 15 (with bit 2 and bit 15 included) are critical
1159 options. If the KDC does not understand the critical option, it MUST
1160 fail the request. Bit 16 and onward (with bit 16 included) are non-
1161 critical options. The KDC ignores an unknown non-critical option.
1163 The anonymous Option
1165 The Kerberos response defined in [RFC4120] contains the client
1166 identity in clear text, This makes traffic analysis
1167 straightforward. The anonymous option is designed to complicate
1168 traffic analysis against the client-KDC exchange. If the
1169 anonymous option is set, the KDC implementing PA_FX_FAST MUST
1170 identify out the client as the anonymous principal in the KDC
1174 Zhu & Hartman Expires April 26, 2007 [Page 21]
1176 Internet-Draft Kerberos Preauth Framework October 2006
1179 reply and the error response. Thus this option is set by the
1180 client to hide the client identity in the KDC response.
1182 The kdc-referrals Option
1184 The Kerberos client described in [RFC4120] has to request referral
1185 TGTs along the authentication path in order to get a service
1186 ticket for the target service. The Kerberos client described in
1187 the [REFERRALS] need to contain the AS specified in the error
1188 response in order to complete client referrals. In many cases, it
1189 is desirable to keep the client's involvement minimal. For
1190 example, the client may contact the KDC via a satellite link that
1191 has high latency, or the client has limited computational
1192 capabilities. The kdc-referrals option is designed to minimize
1193 the number of KDC response messages that the client need to
1194 process. If the kdc-referrals option is set, the KDC that honors
1195 this option acts as the client to follow AS referrals and TGS
1196 referrals [REFERRALS], and return the ticket thus-obtained using
1197 the reply key expected by the client. The kdc-referrals option
1198 can be implemented when the KDC knows the reply key. KDC can
1199 igore kdc-referrals option when it does not understand it or it
1200 does not allow it based on local policy. The client MUST be able
1201 to process the KDC responses when this option is not honored by
1204 The padata field contains a list of PA-DATA structures as described
1205 in Section 5.2.7 in [RFC4120]. These PA-DATA structures can contain
1206 FAST factors. They can also be used as generic typed-holes to
1207 contain data not intended for proving the client's identity or
1208 establishing a reply, but for protocol extensibility.
1210 The timestamp and usec fields represent the time of the client host,
1211 these fields have the same semantics as the corresponding-
1212 identically-named fields in Section 5.6.1 of [RFC4120].
1214 The req-nonce field is randomly filled using a PRNG by the client for
1215 each message request. It MUST have at least 128 octets in length.
1217 6.5.2. FAST Response
1219 The KDC that supports the PA_FX_FAST padata MUST include a PA_FX_FAST
1220 padata element in the KDC reply and/or the error response. The KDC
1221 can include a PA_FX_FAST padata element in the error response when
1222 the client and the KDC agreed upon the armor key. The corresponding
1223 padata-value field [RFC4120] in the KDC response is the DER encoding
1224 of the ASN.1 type PA-FX-FAST-REPLY.
1230 Zhu & Hartman Expires April 26, 2007 [Page 22]
1232 Internet-Draft Kerberos Preauth Framework October 2006
1235 PA-FX-FAST-REPLY ::= CHOICE {
1236 armored-data [1] KrbFastArmoredRep,
1240 KrbFastArmoredRep ::= SEQUENCE {
1241 enc-fast-rep [1] EncryptedData, -- KrbFastResponse --
1242 -- The encryption key is the armor key in the request, and
1243 -- the key usage number is TBA.
1247 The PA-FX-FAST-REPLY structure contains a KrbFastArmoredRep
1248 structure. The KrbFastArmoredRep structure encapsulates the KDC
1249 reply in the encrypted form. The KrbFastResponse is encrypted with
1250 the armor key used in the corresponding request, and the key usage
1253 The Kerberos client who does not receive a PA-FX-FAST-REPLY in the
1254 KDC response to a PA-FX-FAST-REQUEST MUST reject the reply based on a
1255 local policy. The Kerberos client MAY process an error message
1256 without a PA-FX-FAST-REPLY, if that is only intended to return better
1257 error information to the application, typically for trouble-shooing
1260 The KrbFastResponse structure contains the following information:
1262 KrbFastResponse ::= SEQUENCE {
1263 padata [1] SEQUENCE OF PA-DATA,
1264 -- padata typed holes.
1265 finish [2] KrbFastFinish OPTIONAL,
1266 -- MUST be present if the client is authenticated,
1267 -- absent otherwise.
1268 -- Typically this is present if and only if the containing
1269 -- message is the last one in a conversation.
1270 rep-nonce [3] OCTET STRING,
1271 -- At least 128 octets in length, randomly filled using
1272 -- a PRNG by the KDC for each KDC response.
1276 The padata field in the KrbFastResponse structure contains a list of
1277 PA-DATA structures as described in Section 5.2.7 of [RFC4120]. These
1278 PA-DATA structures are used to carry data completing the exchange for
1279 the FAST factors. They can also be used as generic typed-holes for
1280 protocol extensibility.
1282 The finish field contains a KrbFastFinish structure. It is filled by
1286 Zhu & Hartman Expires April 26, 2007 [Page 23]
1288 Internet-Draft Kerberos Preauth Framework October 2006
1291 the KDC to indicate the client has been authenticated, it MUST be
1292 absent otherwise. This field can only be present in an AS-REP or a
1293 TGS-REP when a ticket is returned, and typically the containing
1294 message is the last one in a conversation.
1296 The KrbFastFinish structure contains the following information:
1298 KrbFastFinish ::= SEQUENCE {
1299 authtime [1] KerberosTime,
1300 usec [2] Microseconds,
1301 -- timestamp and usec represent the time on the KDC when
1302 -- the reply was generated.
1303 rep-key-package [3] EncryptedData OPTIONAL, -- EncryptionKey --
1304 -- This, if present, replaces the reply key for AS and TGS.
1305 -- The encryption key is the client key, unless otherwise
1306 -- specified. The key usage number is TBA.
1308 cname [5] PrincipalName,
1309 -- Contains the client realm and the client name.
1310 checksum [6] Checksum,
1311 -- Checksum performed over all the messages in the
1312 -- conversation, except the containing message.
1313 -- The checksum key is the ticket session key of the reply
1314 -- ticket, and the checksum type is the required checksum
1315 -- type of that key.
1319 The timestamp and usec fields represent the time on the KDC when the
1320 reply was generated, these fields have the same semantics as the
1321 corresponding-identically-named fields in Section 5.6.1 of [RFC4120].
1322 The client MUST use the KDC's time in these fields thereafter when
1323 using the returned ticket. This KDC time in AS-REP may not match the
1324 authtime in the reply ticket if the kdc-referrals option is requested
1325 and honored by the KDC.
1327 The rep-key-package field, if present, contains the reply key
1328 encrypted using the client key unless otherwise specified. The key
1329 usage number is TBA.
1331 When the encrypted timestamp FAST factor is used in the request, the
1332 rep-key-package field MUST be present. If a KrbFastArmoredRep is
1333 included in the reply, the reply key MUST NOT be the client key. The
1334 client key can be used to encrypt the reply key enclosed in the
1337 The cname and crealm fields identifies the authenticated client.
1342 Zhu & Hartman Expires April 26, 2007 [Page 24]
1344 Internet-Draft Kerberos Preauth Framework October 2006
1347 The checksum field contains a checksum of all the prior messages in
1348 the conversation excluding the containing message. The checksum key
1349 is the ticket session key of the reply ticket, and the checksum type
1350 is the required checksum type of that key.
1352 The rep-nonce field is randomly filled using a PRNG by the KDC, for
1353 each KDC response, and it MUST have at least 128 octets in length.
1355 The client MUST include a PA_FX_COOKIE as defined in Section 6.3, if
1356 it includes a PA_FX_FAST in the request.
1358 6.6. Authentication Strength Indication
1360 Implementations that have pre-authentication mechanisms offering
1361 significantly different strengths of client authentication MAY choose
1362 to keep track of the strength of the authentication used as an input
1363 into policy decisions. For example, some principals might require
1364 strong pre-authentication, while less sensitive principals can use
1365 relatively weak forms of pre-authentication like encrypted timestamp.
1367 An AuthorizationData data type AD-Authentication-Strength is defined.
1369 AD-Authentication-Strength TBA
1371 The corresponding ad-data field contains the DER encoding of the pre-
1372 authentication data set as defined in Section 6.4. This set contains
1373 all the pre-authentication mechanisms that were used to authenticate
1374 the client. If only one pre-authentication mechanism was used to
1375 authenticate the client, the pre-authentication set contains one
1378 The AD-Authentication-Strength element MUST be included in the AD-IF-
1379 RELEVANT, thus it can be ignored if it is unknown to the receiver.
1382 7. IANA Considerations
1384 This document defines FAST factors, these are mini- and light-
1385 weighted- pre-authentication mechanisms. A new IANA registry should
1386 be setup for registering FAST factor IDs.
1389 8. Security Considerations
1391 The kdc-referrals option in the Kerberos FAST padata requests the KDC
1392 to act as the client to follow referrals. This can overload the KDC.
1393 To limit the damages of denied of service using this option, KDCs MAY
1394 restrict the number of simultaneous active requests with this option
1398 Zhu & Hartman Expires April 26, 2007 [Page 25]
1400 Internet-Draft Kerberos Preauth Framework October 2006
1403 for any given client principal.
1405 Because the client secrets are known only to the client and the KDC,
1406 the verification of the encrypted timestamp proves the client's
1407 identity, the verification of the encrypted rep-key-package in the
1408 KDC reply proves that the expected KDC responded. The encrypted
1409 reply key is contained in the rep-key-package in the PA-FX-FAST-
1410 REPLY. Therefore, the encrypted timestamp FAST factor as a pre-
1411 authentication mechanism offers the following facilities: client-
1412 authentication, replacing-reply-key, KDC-authentication. There is no
1413 un-authenticated cleartext introduced by the encrypted timestamp FAST
1419 Serveral suggestions from Jeffery Hutzman based on early revisions of
1420 this documents led significant improvements of this document.
1425 10.1. Normative References
1427 [KRB-ANON] Zhu, L., Leach, P. and Jaganathan, K., "Kerberos Anonymity
1428 Support", draft-ietf-krb-wg-anon, work in progress.
1430 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
1431 Requirement Levels", BCP 14, RFC 2119, March 1997.
1433 [RFC3961] Raeburn, K., "Encryption and Checksum Specifications for
1434 Kerberos 5", RFC 3961, February 2005.
1436 [RFC4120] Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The
1437 Kerberos Network Authentication Service (V5)", RFC 4120,
1440 [REFERALS] Raeburn, K. et al, "Generating KDC Referrals to Locate
1441 Kerberos Realms", draft-ietf-krb-wg-kerberos-referrals,
1444 [X680] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824-1:2002,
1445 Information technology - Abstract Syntax Notation One
1446 (ASN.1): Specification of basic notation.
1449 Zhu & Hartman Expires April 26, 2007 [Page 26]
1451 Internet-Draft Kerberos Preauth Framework October 2006
1455 [X690] ITU-T Recommendation X.690 (2002) | ISO/IEC 8825-1:2002,
1456 Information technology - ASN.1 encoding Rules:
1457 Specification of Basic Encoding Rules (BER), Canonical
1458 Encoding Rules (CER) and Distinguished Encoding Rules
1461 10.2. Informative References
1463 [EKE] Bellovin, S. M. and M. Merritt. "Augmented
1464 Encrypted Key Exchange: A Password-Based Protocol Secure
1465 Against Dictionary Attacks and Password File Compromise".
1466 Proceedings of the 1st ACM Conference on Computer and
1467 Communications Security, ACM Press, November 1993.
1470 IEEE P1363.2: Password-Based Public-Key Cryptography
1472 [RFC4556] Zhu, L. and B. Tung, "Public Key Cryptography for Initial
1473 Authentication in Kerberos (PKINIT)", RFC 4556, June 2006.
1476 Appendix A. ASN.1 module
1478 KerberosPreauthFramework {
1479 iso(1) identified-organization(3) dod(6) internet(1)
1480 security(5) kerberosV5(2) modules(4) preauth-framework(3)
1481 } DEFINITIONS EXPLICIT TAGS ::= BEGIN
1483 PA-FX-COOKIE ::= SEQUENCE {
1484 Cookie [1] OCTET STRING,
1485 -- Opaque data, for use to associate all the messages in a
1486 -- single conversation between the client and the KDC.
1487 -- This can be generated by either the client or the KDC.
1488 -- The receiver MUST copy the exact Cookie encapsulated in
1489 -- a PA_FX_COOKIE data element into the next message of the
1490 -- same conversation.
1494 PA-AUTHENTICATION-SET ::= SEQUENCE OF PA-AUTHENTICATION-SET-ELEM
1496 PA-AUTHENTICATION-SET-ELEM ::= SEQUENCE {
1498 -- same as padata-type.
1499 pa-hint [2] OCTET STRING,
1505 PA-FX-FAST-REQUEST ::= CHOICE {
1506 armored-data [1] KrbFastAmoredReq,
1510 KrbFastAmoredReq ::= SEQUENCE {
1511 armor [1] KrbFastArmor OPTIONAL,
1512 -- Contains the armor that determines the armor key.
1513 -- MUST be present in AS-REQ.
1514 -- MUST be absent in TGS-REQ.
1515 req-checksum [2] Checksum,
1516 -- Checksum performed over the type KDC-REQ-BODY.
1517 -- The checksum key is the armor key, and the checksum
1518 -- type is the required checksum type for the enctype of
1520 enc-fast-req [3] EncryptedData, -- KrbFastReq --
1521 -- The encryption key is the armor key, and the key usage
1526 Zhu & Hartman Expires April 26, 2007 [Page 27]
1528 Internet-Draft Kerberos Preauth Framework October 2006
1532 KrbFastArmor ::= SEQUENCE {
1533 armor-type [1] Int32,
1534 -- Type of the armor.
1535 armor-value [2] OCTET STRING,
1536 -- Value of the armor.
1540 KrbFastReq ::= SEQUENCE {
1541 fast-options [0] FastOptions,
1542 -- Additional options.
1543 padata [1] SEQUENCE OF PA-DATA,
1544 -- padata typed holes.
1545 timestamp [2] KerberosTime,
1546 usec [3] Microseconds,
1547 -- timestamp and usec represent the time of the client
1549 req-nonce [4] OCTET STRING,
1550 -- At least 128 octets in length, randomly filled using
1551 -- a PRNG by the client for each message request.
1555 FastOptions ::= KerberosFlags
1558 -- kdc-referrals(16)
1560 PA-FX-FAST-REPLY ::= SEQUENCE {
1561 enc-fast-rep [1] EncryptedData, -- KrbFastResponse --
1562 -- The encryption key is the armor key in the request, and
1563 -- the key usage number is TBA.
1567 KrbFastResponse ::= SEQUENCE {
1568 padata [1] SEQUENCE OF PA-DATA,
1569 -- padata typed holes.
1570 finish [2] KrbFastFinish OPTIONAL,
1571 -- MUST be present if the client is authenticated,
1572 -- absent otherwise.
1573 -- Typically this is present if and only if the containing
1574 -- message is the last one in a conversation.
1575 rep-nonce [3] OCTET STRING,
1576 -- At least 128 octets in length, randomly filled using
1577 -- a PRNG by the KDC for each KDC response.
1582 Zhu & Hartman Expires April 26, 2007 [Page 28]
1584 Internet-Draft Kerberos Preauth Framework October 2006
1588 KrbFastFinish ::= SEQUENCE {
1589 timestamp [1] KerberosTime,
1590 usec [2] Microseconds,
1591 -- timestamp and usec represent the time on the KDC when
1592 -- the reply was generated.
1593 rep-key-package [3] EncryptedData OPTIONAL, -- EncryptionKey --
1594 -- This, if present, replaces the reply key for AS and TGS.
1595 -- The encryption key is the client key, unless otherwise
1596 -- specified. The key usage number is TBA.
1598 cname [5] PrincipalName,
1599 -- Contains the client realm and the client name.
1600 checksum [6] Checksum,
1601 -- Checksum performed over all the messages in the
1602 -- conversation, except the containing message.
1603 -- The checksum key is the ticket session key of the reply
1604 -- ticket, and the checksum type is the required checksum
1605 -- type of that key.
1615 Microsoft Corporation
1620 Email: lzhu@microsoft.com
1626 Email: hartmans@mit.edu
1633 Zhu & Hartman Expires April 26, 2007 [Page 29]
1635 Internet-Draft Kerberos Preauth Framework October 2006
1638 Full Copyright Statement
1640 Copyright (C) The Internet Society (2006).
1642 This document is subject to the rights, licenses and restrictions
1643 contained in BCP 78, and except as set forth therein, the authors
1644 retain all their rights.
1646 This document and the information contained herein are provided on an
1647 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1648 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1649 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1650 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1651 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1652 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1655 Intellectual Property
1657 The IETF takes no position regarding the validity or scope of any
1658 Intellectual Property Rights or other rights that might be claimed to
1659 pertain to the implementation or use of the technology described in
1660 this document or the extent to which any license under such rights
1661 might or might not be available; nor does it represent that it has
1662 made any independent effort to identify any such rights. Information
1663 on the procedures with respect to rights in RFC documents can be
1664 found in BCP 78 and BCP 79.
1666 Copies of IPR disclosures made to the IETF Secretariat and any
1667 assurances of licenses to be made available, or the result of an
1668 attempt made to obtain a general license or permission for the use of
1669 such proprietary rights by implementers or users of this
1670 specification can be obtained from the IETF on-line IPR repository at
1671 http://www.ietf.org/ipr.
1673 The IETF invites any interested party to bring to its attention any
1674 copyrights, patents or patent applications, or other proprietary
1675 rights that may cover technology that may be required to implement
1676 this standard. Please address the information to the IETF at
1682 Funding for the RFC Editor function is provided by the IETF
1683 Administrative Support Activity (IASA).
1689 Zhu & Hartman Expires April 26, 2007 [Page 30]