Update gnulib files.
[shishi.git] / doc / specifications / draft-ietf-krb-wg-preauth-framework-03.txt
blob407976e2544fd88ee01980fc39b4e3b139b0ee49
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
13 Status of this Memo
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-
23    Drafts.
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.
38 Copyright Notice
40    Copyright (C) The Internet Society (2006).
42 Abstract
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
62    will interact.
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.
74 Table of Contents
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
115 1.  Introduction
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
160    client or the KDC.
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
179    common problems.
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
185    explanation.
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
254    process.
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
268       session
270    o  Whether the contents of the KDC reply can be verified by the
271       client principal
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
284       client machine
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
305    set.
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.
417 3.3.  Client to KDC
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
423    response.
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
453    KDC.
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.
460 3.4.  KDC to Client
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
466    specification.
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
477    sufficient degree.
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
495    Section 6.3.
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
577    as authenticated.
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
629    mechanism-specific.
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
654    reply key.
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-
709    hint.
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
742    security analysis.
744 6.1.  Combining Keys
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) ->
758                   (resulting key)
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
792       B.
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
813    encrypted as well.
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
826    algorithm.
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
858    state management.
860        PA_FX_COOKIE                        TBA
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.
874          ...
875      }
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
912    structure:
914        PA-AUTHENTICATION-SET ::= SEQUENCE OF PA-AUTHENTICATION-SET-ELEM
916        PA-AUTHENTICATION-SET-ELEM ::= SEQUENCE {
917           pa-type          [1] Int32,
918                -- same as padata-type.
919           pa-hint          [2] OCTET STRING,
920                -- hint data.
921            ...
922        }
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.
998 6.5.1.  FAST Request
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
1011    REQUEST.
1013     PA-FX-FAST-REQUEST ::= CHOICE {
1014         armored-data    [1] KrbFastAmoredReq,
1015         ...
1016     }
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
1028             -- the armor key.
1029         enc-fast-req    [3] EncryptedData, -- KrbFastReq --
1030             -- The encryption key is the armor key, and the key usage
1031             -- number is TBA.
1032         ...
1033     }
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.
1054 6.5.1.1.  FAST Armor
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.
1072            ...
1073        }
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
1104    host key.
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
1112    armor key.
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
1133                -- host.
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.
1137            ...
1138        }
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
1144           -- reserved(0),
1145           -- anonymous(1),
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
1154                             section.
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
1202       the KDC.
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,
1237           ...
1238       }
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.
1244           ...
1245       }
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
1251    number is TBA.
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
1258    purposes.
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.
1273           ...
1274       }
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.
1307         crealm          [4] Realm,
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.
1316         ...
1317     }
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
1335    KrbFastArmoredRep.
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
1376    element.
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
1414    factor.
1417 9.  Acknowledgements
1419    Serveral suggestions from Jeffery Hutzman based on early revisions of
1420    this documents led significant improvements of this document.
1423 10.  References
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,
1438               July 2005.
1440    [REFERALS] Raeburn, K. et al, "Generating KDC Referrals to Locate 
1441               Kerberos Realms", draft-ietf-krb-wg-kerberos-referrals, 
1442               work in progress.
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
1459               (DER).
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.
1468               
1469    [IEEE1363.2] 
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.
1491         ...
1492     }
1494     PA-AUTHENTICATION-SET ::= SEQUENCE OF PA-AUTHENTICATION-SET-ELEM
1496     PA-AUTHENTICATION-SET-ELEM ::= SEQUENCE {
1497        pa-type          [1] Int32,
1498             -- same as padata-type.
1499        pa-hint          [2] OCTET STRING,
1500             -- hint data.
1501         ...
1502         ...
1503     }
1505     PA-FX-FAST-REQUEST ::= CHOICE {
1506         armored-data    [1] KrbFastAmoredReq,
1507         ...
1508     }
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
1519             -- the armor key.
1520         enc-fast-req    [3] EncryptedData, -- KrbFastReq --
1521             -- The encryption key is the armor key, and the key usage
1522             -- number is TBA.
1523         ...
1524     }
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.
1537         ...
1538     }
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
1548             -- host.
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.
1552         ...
1553     }
1555     FastOptions ::= KerberosFlags
1556         -- reserved(0),
1557         -- anonymous(1),
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.
1564         ...
1565     }
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.
1578         ...
1579     }
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.
1597         crealm          [4] Realm,
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.
1606         ...
1607     }
1609     END
1612 Authors' Addresses
1614    Larry Zhu
1615    Microsoft Corporation
1616    One Microsoft Way
1617    Redmond, WA  98052
1618    US
1620    Email: lzhu@microsoft.com
1623    Sam hartman
1624    MIT
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
1677    ietf-ipr@ietf.org.
1680 Acknowledgment
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]