2 Kerberos Working Group Nicolas Williams
3 INTERNET-DRAFT Sun Microsystems
4 Category: Standards Track Jonathan Trostle
15 Kerberos Set/Change Password: Version 2
16 <draft-ietf-krb-wg-kerberos-set-passwd-01.txt>
23 This document is an Internet-Draft and is in full conformance with
24 all provisions of Section 10 of RFC2026 [RFC2026].
26 Internet-Drafts are working documents of the Internet Engineering
27 Task Force (IETF), its areas, and its working groups. Note that
28 other groups may also distribute working documents as Internet-
31 Internet-Drafts are draft documents valid for a maximum of six months
32 and may be updated, replaced, or obsoleted by other documents at any
33 time. It is inappropriate to use Internet- Drafts as reference
34 material or to cite them other than as "work in progress."
36 The list of current Internet-Drafts can be accessed at
37 http://www.ietf.org/ietf/1id-abstracts.txt
39 The list of Internet-Draft Shadow Directories can be accessed at
40 http://www.ietf.org/shadow.html.
42 This draft expires on December 31st, 2001. Please send comments to
48 Copyright (C) The Internet Society (2003). All Rights Reserved.
52 This document specifies an extensible protocol for setting keys and
53 changing the passwords of Kerberos V principals.
57 N. Williams et. al. [Page 1]
\f
66 2.2.1 The protocol over UDP
67 2.2.2 The protocol over TCP
68 2.3 Protocol version negotiation
69 2.3.1 Protocol major version negotiation
70 2.3.2 Protocol minor version negotiation
73 2.6 Internationalization
74 2.6.1 Normalization Forms for UTF-8 Strings
75 2.6.2 Language Negotiation
76 2.7 Protocol Extensibility
82 3.2.2 Change Kerberos Password
83 3.2.3 Set Kerberos Password
84 3.2.4 Set Kerberos Keys
85 3.2.5 Generate Kerberos Keys
88 3.2.8 Get Password Quality Policy
89 3.2.9 Get Principal Aliases
90 3.2.10 Get Realm's Supported Kerberos V Version and Features
93 7 Security Considerations
96 9.1 Normative References
97 9.2 Informative References
99 11 Notes to the RFC Editor
101 Conventions used in this document
103 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
104 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
105 document are to be interpreted as described in [RFC2119].
109 Up to this point Kerberos V has lacked a single, standard protocol
110 for changing passwords and keys. While several vendor-specific
112 N. Williams et. al. [Page 2]
\f
114 DRAFT Kerberos Set/Change Password v2 Expires April 2004
116 protocols exist for changing Kerberos passwords/keys, none are
117 properly internationalized and all are incomplete in one respect or
118 another and none are sufficiently extensible to cope with new
119 features that may be added to Kerberos V at some future time.
121 This document defines a protocol that is somewhat backward-compatible
122 with the "kpasswd" protocol, version 1 [KPASSWDv1] and a derivative
123 defined in [RFC3244] that uses more or less the same protocol
126 This new protocol is designed to be extensible and properly
131 The structure of the protocol is quite similar to that of typical RPC
132 protocols. Each transaction consists of a data structure specific to
133 an operation which is then wrapped in a data structure which is
134 general to all operations of the protocol. These data structures are
135 defined with the Abstract Syntax Notation 1 (ASN.1) [X680] and they
136 are encoded using the Distinguished Encoding Rules (DER) [X690].
138 The protocol data is wrapped in a KRB-PRIV, or, in some cases, a
139 KRB-ERROR, and framed in a header that is backwards compatible with
140 version 1 [KPASSWDv1] of this protocol and [RFC3244].
142 [Discussion: Should the v1/rfc3244 framing and port numbers be
147 The service SHOULD accept requests on UDP port 464 and TCP port 464.
148 This is the same port used by version 1 [KPASSWDv1] of this protocol,
149 but version 2 is a completely different protocol sharing with
150 [KPASSWDv1] and [RFC3244] only the outer framing.
152 [Discussion: Should we remove UDP support? I think so [Nico].]
156 For compatibility with the original Kerberos password changing
157 protocol developed at MIT as well as RFC3244, the first 4 bytes of
158 the message consist of a 2-byte network byte order message length,
159 followed by a 2 byte network byte order protocol version number,
160 followed by a 2 byte network byte order length for an optional
161 AP-REQ, AP-REP or KRB-ERROR, followed by the same, if present,
162 followed by a KRB-PRIV (optional in TCP) containing the actual
163 protocol message encoded in DER [X690].
165 In the case of TCP there is an additional 4 byte network byte order
166 length prepended to the frame described above as per-RFC3244.
168 The protocol version number MUST be set to 2 for this protocol.
170 N. Williams et. al. [Page 3]
\f
172 DRAFT Kerberos Set/Change Password v2 Expires April 2004
175 Bytes on the wire description of the framing:
178 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
179 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
180 | message length | protocol version number |
181 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
182 | AP-REQ length (0 if absent) | AP-REQ data (if present) |
183 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
185 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
187 The same framing applies equally to requests and responses, but
188 responses use AP-REP and/or KRB-ERROR instead of AP-REQ:
191 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
192 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
193 | message length | protocol version number |
194 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
195 | AP-REP length (0 if absent) | AP-REP data (if present) |
196 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
198 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
201 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
202 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
203 | message length | protocol version number |
204 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
205 | KRB-ERROR length (0 if absent)| KRB-ERROR data (if present) |
206 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
208 For the UDP case the AP-REQ/AP-REP/KRB-ERROR MUST always be included.
210 Note that this framing is used by version 1 [KPASSWDv1] and version
211 0xff80 [RFC3244], though the latter does not use the framing when
212 responding with KRB-ERROR messages.
214 Version 0xff80 servers may respond to requests with an un-framed
215 KRB-ERROR and e-data set as per-RFC3244 [RFC3244], otherwise clients
216 and server MUST always use this framing. See section 2.3.
218 2.2.1 The protocol over UDP
220 In the UDP case there is a single message from the client and a
221 single response from the server with no state kept between requests,
222 and each request MUST include a Kerberos AP-REQ and a KRB-PRIV and
223 each response MUST carry an AP-REP, or KRB-ERROR and a KRB-PRIV.
225 Both the client and server MUST destroy the sub-session key, if any,
226 resulting from the AP exchange after each operation.
228 N. Williams et. al. [Page 4]
\f
230 DRAFT Kerberos Set/Change Password v2 Expires April 2004
233 UDP clients MUST not request the use of sequence numbers, otherwise
234 they cannot generate the KRB-PRIV prior to receiving the AP-REP.
236 2.2.2 The protocol over TCP
238 The initial message from the client MUST carry an AP-REQ and the
239 response to any request bearing an AP-REQ MUST carry an AP-REP.
241 Subsequent messages MAY involve Kerberos V AP exchanges, but
242 generally the client SHOULD NOT initiate a new AP exchange except
243 when it desires to authenticate as a different principal, when the
244 ticket last used for authentication expires or when the server
245 responds with an error indicating that the client must
248 KRB-PRIV messages should use the session or sub-session key
249 established in the most recent AP exchange performed over the same
252 After each new AP exchange the client and server MUST destroy the
253 sub-session key, if any, resulting from the previous AP exchange.
255 Servers MAY close open sessions at any time.
257 2.3 Protocol version negotiation
259 There are several major versions of this protocol. Version 2 also
260 introduces a notion of protocol minor versions for use in negotiating
261 protocol extensions. As of this time only one minor version is
262 defined for major version 2: minor version 0, defined herein.
264 2.3.1 Protocol major version negotiation
266 Version 2 clients that also support other versions, such as
267 [KPASSWDv1] or [RFC3244] SHOULD attempt to use version 2 of the
268 protocol first and then MAY try other versions if the server responds
269 with either a message framed as described in section 2.2 but with a
270 protocol version number other than 2, or a KRB-ERROR with an error
271 code of KRB5_KPASSWD_BAD_VERSION in the e-data field.
273 Note that some version 1 servers return a KRB-ERROR indicating that
274 versions other than 1 of the change password protocol are not
275 supported rather than an AP-REP and a KRB-PRIV containing the error
278 Also note that some [RFC3244] implementations do not return any
279 responses to requests for protocol versions other than 0xff80, and in
280 the TCP case close the TCP connection.
282 As a result change password protocol major version negotiation is
283 subject to downgrade attacks. Therefore major version negotiation is
286 N. Williams et. al. [Page 5]
\f
288 DRAFT Kerberos Set/Change Password v2 Expires April 2004
291 Version 2 servers SHOULD respond to non-v2 requests using whatever
292 response is appropriate for the versions used by the clients, but if
293 a server does not do this or know how to do this then it MUST respond
294 with an error framed as in section 2.2, using an AP-REP and KRB-PRIV
295 if the client's AP-REQ can be accepted, or a KRB-ERROR (framed)
296 otherwise and using a ProtocolErrorCode value of
297 unsupported-major-version or .
299 2.3.2 Protocol minor version negotiation
301 Version 2 clients are free to use whatever protocol minor version and
302 message extensions are available to them in their initial messages to
303 version 2 servers, provided that the minor versions (other than 0)
304 have been defined through IETF documents and registered with the
307 Version 2 servers MUST answer with the highest protocol minor version
308 number supported by the server and the client.
310 Version 2 clients MUST use the protocol minor version used in a
311 server's reply for any subsequent messages in the same TCP session.
313 See section 2.7 for further description of the protocol's
314 extensibility and its relation to protocol minor versions and the
317 2.4 Use of Kerberos V
319 This protocol makes use of messages defined in [RFC1510] and
320 [clarifications]. Specifically, AP-REQ, AP-REP, KRB-ERROR and
323 All operations are to be performed by the server on behalf of the
326 Clients SHOULD use "kadmin/setpw" as the principal name of the server
327 for all requests except when changing the client principal's own
328 password, when expired, for which they should use "kadmin/changepw".
330 The client MUST request mutual authentication and the client MUST NOT
331 request the use of sequence numbers when using the protocol over
332 UDP, but it MUST request the use of sequence numbers when running
335 Clients SHOULD use INITIAL tickets for change password requests.
336 Servers MAY force the use of INITIAL tickets for any request - see
341 This protocol's messages are defined in ASN.1, using only features
342 from [X680]. All ASN.1 types defined herein are to be encoded in
344 N. Williams et. al. [Page 6]
\f
346 DRAFT Kerberos Set/Change Password v2 Expires April 2004
348 DER [X690]. A complete ASN.1 module is given in section 4. The
349 ASN.1 tagging environment for this module is EXPLICIT.
351 The DER encoding of the ASN.1 PDUs are exchanged wrapped in a
352 KRB-PRIV as described above and/or as e-data in KRB-ERROR messages.
354 2.6 Internationalization
356 This protocol's request PDU carries an optional field indicating the
357 languages spoken by the client user; the client SHOULD send its list
358 of spoken languages to the server (once per-TCP session). All
359 strings in the protocol are UTF-8 strings.
361 The server SHOULD localize all strings intended for users to a
362 language in common with the languages spoken by the client user.
364 For TCP sessions servers MUST cache the optional language tag lists
365 from prior requests for use with subsequent requests that exclude the
366 language tag list. Clients MAY expect such server behaviour and send
367 the language tag lists only when they change or even just once
368 per-TCP session. Clients SHOULD send the server the language tag
371 Kerberos principal and realm names used in this protocol MUST be
372 constrained as per the specification of the version of Kerberos V
375 2.6.1 Normalization Forms for UTF-8 Strings
377 No normalization form is required for string types other than
378 for PrincipalName and Realm, which two types are constrained by the
379 specification of the version of Kerberos V used by the client, and
380 the password fields in the change password operation, which MUST be
381 normalized according to [k5stringprep].
383 2.6.2 Language Negotiation
385 The server MUST pick a language from the client's input list or
386 the default language tag (see [RFC3066]) for text in its responses
387 which is meant for the user to read.
389 The server SHOULD use a language selection algorithm such that
390 consideration is first given to exact matches between the client's
391 spoken languages and the server's available locales, followed by
392 "fuzzy" matches where only the first sub-tags of the client's
393 language tag list are used for matching against the servers available
396 When the server has a message catalog for one of the client's spoken
397 languages the server SHOULD localize any text strings intended for
400 2.7 Protocol Extensibility
402 N. Williams et. al. [Page 7]
\f
404 DRAFT Kerberos Set/Change Password v2 Expires April 2004
407 The protocol is defined in ASN.1 and uses extensibility markers
408 throughout. As such, the module presented herein can be extended
409 within the framework of [X680].
411 Typed holes are not used in this protocol as it is very simple and
412 does not require the ability to deal with abstract data types defined
413 in different layers. For this reason, the only way to extend this
414 protocol is by extending the ASN.1 module within the framework of the
415 IETF; all future extensions to this protocol have to be defined in
416 IETF documents unless otherwise specified in a future IETF revision
419 A protocol minor version number is used to negotiate use of
420 extensions. See section 2.3.2 for the minor version negotiation.
422 Message extensions are to be closely tied to protocol minor numbers.
424 Clients MAY use any protocol minor version that they support in
425 initial requests, and MUST use the protocol minor version indicated
426 in the server's initial reply in any subsequent requests in the same
429 Servers SHOULD ignore additions to the ASN.1 types, in initial
430 requests, where the syntax allows them that they do not understand,
431 except for extensions to the "Op-req" type, which MUST result in an
432 error; servers MAY respond with an error (ProtocolErrorCode value of
433 unsupported-minor-version) to clients that use minor versions
434 unsupported by the server in their initial requests.
436 Servers MUST select the highest minor version in common with their
437 clients for use in replies.
441 The structure of the protocol is such that the ASN.1 syntaxes for the
442 various operations supported by the protocol are independent of the
443 each other. Client and server mplementations MAY implement subsets
444 of the overall protocol by removing some alternatives to the Op-req,
445 Op-rep and Op-err CHOICEs from the ASN.1 module given in section 4.
447 For example, it should be possible to have a password-change only
448 client that cannot set principal's keys - and vice versa.
452 The protocol as defined herein supports the following operations
453 relating to the management of Kerberos principal's passwords or keys:
456 - set password (administrative)
460 N. Williams et. al. [Page 8]
\f
462 DRAFT Kerberos Set/Change Password v2 Expires April 2004
464 - get new, un-committed keys
466 - get password policy name and/or description of principal
467 - list aliases of a principal
468 - list enctypes and version of Kerberos V supported by realm
470 These operations are needed to support Kerberos V interoperability
471 between clients and KDCs of different implementation origins.
473 The operation for retrieving a list of aliases of a principal is
474 needed where KDCs implement aliasing of principal names and allows
475 clients to properly setup their "keytabs" when principal aliasing is
478 Operations such as creation or deletion of principals are outside the
479 scope of this document, and should be performed via other means, such
480 as through directories or other Kerberos administration protocols.
482 The individual operations are described in section 3.2.
486 The types "Request," "Response" and "Error-Response" are the ASN.1
489 The "Request" and "Response" PDUs are always to be sent wrapped in
490 KRB-PRIV messages, except for the "Error-Response" PDU which MUST be
491 sent as KRB-ERROR e-data (see section 2.4.1) when AP exchanges fail,
492 otherwise it MUST be sent wrapped in a KRB-PRIV.
494 The ASN.1 syntax for the PDUs is given in section 4.
496 Note that the first field of each PDU is the major version of the
497 protocol, defaulted to 2, meaning that it is never included in
498 version 2 exchanges. Similarly, the second field of each PDU is the
499 minor version, defaulted to 0.
501 The request, responses and error PDUs consist of an outer structure
502 ("Request," "Response" and "Error-Response") containing fields common
503 to all requests/responses, and an inner structure for fields that are
504 specific to each operation's requests/responses. The inner structure
505 is optional in the case of the Error-Response PDU and need not be
506 included when generic errors occur for which there is a suitable
509 Specifically, the outer Request structure has a field for passing a
510 client user's spoken (read) languages to the server. It also has two
511 optional fields for identifying the requested operation's target
512 principal's name and realm (if not sent then the server MUST use the
513 client principal name and realm from the AP exchange as the target).
515 The Response and Error PDUs' outer structures include a field
516 indicating the language that the server has chosen for localization
518 N. Williams et. al. [Page 9]
\f
520 DRAFT Kerberos Set/Change Password v2 Expires April 2004
522 of text intended to be displayed to users; this field is defaulted
523 to "i-default". This language tag applies to all UTF8 strings
524 in the inner structure (Op-rep and Op-err) that are meant to be
527 The protocol error codes are:
529 - proto-generic-error
531 An operation-specific error ocurred, see the inner Op-error.
534 - proto-unsupported-major-version
535 - proto-unsupported-minor-version
536 - proto-unsupported-operation
538 - proto-wrong-service-principal
540 Use kadmin/setpw for the server's principal name.
542 - proto-re-authentication-required
544 The server demands that the client re-authenticate through a new
547 - proto-initial-ticket-required
549 Use of an INITIAL ticket is required for the requested
552 - proto-client-and-target-realm-mismatch
554 The server requires that the client's principal name and the
555 target principal of the operation share the same realm name.
557 - proto-target-principal-unknown
558 - proto-authorization-failed
562 This section describes the semantics of each operation request and
563 response defined in the ASN.1 module in section 4.
569 null - Null or "ping" operation
573 The null request is intended for use with TCP; its purpose is
574 similar to RPC null procedures and is akin to a "ping" operation.
576 N. Williams et. al. [Page 10]
\f
578 DRAFT Kerberos Set/Change Password v2 Expires April 2004
585 3.2.2 Change Kerberos Password
589 change-pw - Change password operation
593 Req-change-pw(old-pw, [new-pw], [etypes]) ->
594 Rep-change-pw([info-text], [new-pw], [etypes]) |
595 Err-change-pw([help-text], error code, [error info])
599 Change a principal's password.
601 The change password request has one required field and three
602 optional fields: "old-pw" (required), "new-pw" and "etypes",
603 corresponding to the target principal's old password, new password
604 and desired enctypes for the new long-term keys.
606 The server MUST validate the old password and MUST check the
607 quality of the new password, if sent, according the password
608 quality policy associated with the target principal.
610 The server SHOULD require that the old password be sent or that
611 the client's ticket be INITIAL, or both, when the client principal
612 and the target principal are the same.
614 A client MAY request that the server generate a new password by
615 excluding the new password from its request, in which case the
616 server MUST either generate a new password or respond with an
617 error indicating that it does not support this feature.
619 Server-generated passwords MUST meet the target principal's
620 password quality policy. It is RECOMMENDED that server-generated
621 passwords be user-friendly, that is, memorable and that the target
622 principal's preferred languages be taken into account by the
623 password generation alogrithm used by the server.
627 Upon successful password changes the server responds with a
628 Rep-change-pw. The fields of Rep-change-pw are all optional and
631 - 'info-text' which the server can use to send a message to the
632 user such as "Your new password will expire in 90 days," for
634 N. Williams et. al. [Page 11]
\f
636 DRAFT Kerberos Set/Change Password v2 Expires April 2004
640 - 'new-pw' which the server MUST include if the client
641 requested that the server generate a new password; generated
642 passwords MUST pass the target principal's password quality
645 - 'etypes' which the server MAY include to indicate which types
646 of long-term keys it created for the target principal and
647 which the server MUST include if the client specified a set
648 of enctypes in its request.
652 The server may respond to change password requests with protocol
653 or operation errors. See section 3.1 for a description of
654 protocol error codes.
656 All operation errors include an optional 'help-text' field by
657 which the server can describe the error in a human-readable,
660 Change password error codes include:
666 - wont-generate-new-pw
668 The server will not generate a new password for this
669 principal or does not support password generation in general.
671 - new-pw-rejected-generic
673 The client's proposed new password failed the target
674 principal's password quality policy.
676 The server MUST include a description of the password quality
677 policy or aspect of it that the client's proposed new
678 password failed to meet.
680 The server MAY generate and send a new password that the
681 client can then use as a new password and which is guaranteed
682 to pass the target principal's current password quality
685 - etype-not-supported
687 The client requested an enctype that the KDC does not
690 3.2.3 Set Kerberos Password
692 N. Williams et. al. [Page 12]
\f
694 DRAFT Kerberos Set/Change Password v2 Expires April 2004
699 set-pw - Set password operation
703 Req-set-pw([languages], [new-pw], [etypes]) ->
704 Rep-set-pw([info-text], [new-pw], [etypes]) |
705 Err-set-pw([help-text], error code, [error info])
709 Administratively set a principal's password.
711 The change password request has three optional fields:
712 "languages", "new-pw" and "etypes", corresponding to the target
713 principal's preferred languages, new password and desired enctypes
714 for the new long-term keys.
716 The server MUST check the quality of the new password, if sent,
717 according the password quality policy associated with the target
720 The server SHOULD require that the client use the change-pw
721 operation instead of set-pw when the client principal and the
722 target principal are the same.
724 A client MAY request that the server generate a new password by
725 excluding the new password from its request, in which case the
726 server MUST either generate a new password or respond with an
727 error indicating that it does not support this feature.
729 Server-generated passwords MUST meet the target principal's
730 password quality policy. It is RECOMMENDED that server-generated
731 passwords be user-friendly, that is, memorable and that the target
732 principal's preferred languages be taken into account by the
733 password generation alogrithm used by the server.
737 Upon successful password changes the server responds with a
738 Rep-change-pw. The fields of Rep-change-pw are all optional and
741 - 'info-text' which the server can use to send a message to the
742 user such as "Your new password will expire in 90 days," for
745 - 'new-pw' which the server MUST include if the client
746 requested that the server generate a new password; generated
747 passwords MUST pass the target principal's password quality
750 N. Williams et. al. [Page 13]
\f
752 DRAFT Kerberos Set/Change Password v2 Expires April 2004
755 - 'etypes' which the server MAY include to indicate which types
756 of long-term keys it created for the target principal and
757 which the server MUST include if the client specified a set
758 of enctypes in its request.
762 The server may respond to change password requests with protocol
763 or operation errors. See section XYZ for a description of
764 protocol error codes.
766 All operation errors include an optional 'help-text' field by
767 which the server can describe the error in a human-readable,
770 Change password error codes include:
776 The server demands that the client use the change-pw
777 operation for the target principal of the set-pw request.
779 - wont-generate-new-pw
781 The server will not generate a new password for this
782 principal or does not support password generation in general.
784 - new-pw-rejected-generic
786 The client's proposed new password failed the target
787 principal's password quality policy.
789 The server MUST include a description of the password quality
790 policy or aspect of it that the client's proposed new
791 password failed to meet.
793 The server MAY generate and send a new password that the
794 client can then use as a new password and which is guaranteed
795 to pass the target principal's current password quality
798 - etype-not-supported
800 The client requested an enctype that the KDC does not
803 3.2.4 Set Kerberos Keys
808 N. Williams et. al. [Page 14]
\f
810 DRAFT Kerberos Set/Change Password v2 Expires April 2004
816 Req-set-keys(new-keys, commit?, [isupport]) ->
817 Rep-set-keys([info-text], kvno, aliases, [isupport])
821 The set-keys request consists of two required fields and one
822 optional field: "new-keys", "commit" (a boolean field - see below)
823 and "isupport", an optional field for indicating to the KDC what
824 Kerberos V features are supported by the target principal.
826 When "commit" is true the KDC makes the new keys available for
827 issueing tickets encrypted in them immediately. Otherwise the
828 client MUST follow up with a commit-keys request to make the keys
831 If a principal has keys are awaiting commitment when a new
832 set-keys request for that principal s made then the KDC MUST
833 overwrite the deferred keys.
837 For successful set-keys operations the server returns:
839 - Informational text, optional.
841 - The new kvno for the target principal.
843 - A list of aliases of the target principal known to the KDC
846 - The set of Kerberos V features supported by the KDC
851 The server may respond with the following errors:
854 - deferred-commit-no-support
857 3.2.5 Generate Kerberos Keys
866 N. Williams et. al. [Page 15]
\f
868 DRAFT Kerberos Set/Change Password v2 Expires April 2004
870 Req-gen-keys(etypes, [entropy], commit?, [isupport]) ->
871 Rep-set-keys([info-text], key, kvno, aliases, [isupport])
875 The gen-keys is similar to the set-keys request (see section
876 3.2.4) but differs in that the server generates keys of
877 client-requested enctypes, rather than the client providing
880 The gen-keys request consists of two required fields and two
881 optional fields: "etypes" (the enctypes of the new keys),
882 "entropy", "commit" and "isupport" (see section 3.2.4).
884 If a principal has keys are awaiting commitment when a new
885 set-keys request for that principal s made then the KDC MUST
886 overwrite the deferred keys.
890 For successful set-keys operations the server returns:
892 - Informational text, optional.
894 - The new kvno for the target principal.
896 - The new key (only one is needed).
898 - A list of aliases of the target principal known to the KDC
901 - The set of Kerberos V features supported by the KDC
906 The server may respond with the following errors:
909 - deferred-commit-no-support
920 Req-get-keys(kvno) ->
921 Rep-get-keys([info-text], keys, aliases, [isupport]) |
922 Err-get-keys([help-text], error code, [error info])
924 N. Williams et. al. [Page 16]
\f
926 DRAFT Kerberos Set/Change Password v2 Expires April 2004
931 This request allows a client to get the keys set or generated in a
932 previous set-keys or gen-keys request with deferred commitment..
936 If the target principal and kvno correspond to uncommitted keys
937 the server MUST respond with the actual keys that would be set by
938 a subsequent commit-keys request. Otherwise the server MUST
939 respond with an error (meaning that this operation cannot be used
940 to extract keys from the KDC that may be in use).
948 3.2.7 Commit New Keys
956 Req-commit-keys(kvno) ->
958 Err-commit-keys([help-text], error code, [error info])
962 The commit-keys operation allows a client to bring a principal's
963 new keys into use at the KDC.
965 Clients SHOULD make a commit-keys request corresponding to a
966 deferred commitment set-keys/gen-keys operation as soon as the
967 local key database for the target principal is updated.
969 The target principal name and the kvno MUST match those from a
970 prior set-keys or gen-keys operation.
972 Servers MAY expire delayed key commitments at will. Servers
973 SHOULD expire uncommitted new keys after a reasonable amount of
974 time (600 seconds is RECOMMENDED).
976 Servers MUST respond to new set-keys requests for principals with
977 pending, uncommitted new keys by expiring the uncommitted new keys
978 and proceeding as if there had been no expired new keys.
982 N. Williams et. al. [Page 17]
\f
984 DRAFT Kerberos Set/Change Password v2 Expires April 2004
988 - new-keys-conflict (A set-keys or gen-keys request succeeded
989 subsequent to the request that matches this
990 {principal, kvno} tuple.)
992 3.2.8 Get Password Quality Policy
1000 Req-get-pw-policy() ->
1001 Rep-get-pw-policy([policy name], [policy description])
1005 Returns a description of the target principal's associated
1006 password quality policy, if any, as a list of localized
1009 Clients can use this operation in conjunction with the change-pw
1010 operation to obtain text that can be displayed to the user before
1011 the user actually enters a new password.
1013 It is common for sites to set policies with respect to password
1014 quality. It is beyond the scope of this document to describe such
1015 policies. Management of password quality policies' actual content
1016 is also beyond the scope of this protocol.
1020 No operation errors are defined.
1023 3.2.9 Get Principal Aliases
1031 Req-get-princ-aliases() ->
1032 Rep-get-princ-aliases(aliases)
1036 Returns a list of aliases of the target principal.
1040 N. Williams et. al. [Page 18]
\f
1042 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1045 No operation-specific errors.
1047 3.2.10 Get Realm's Supported Kerberos V Version and Features
1051 get-realm-krb5-support
1055 Req-get-realm-krb5-support() ->
1056 Rep-get-realm-krb5-support(isupport)
1060 Returns set of Kerberos V features support by the target
1061 principal's realm's KDCs.
1065 No operation-specific errors.
1067 3.3 Principal Aliases
1069 Applications that use Kerberos often have to derive acceptor
1070 principal names from hostnames entered by users. Such hostnames may
1071 be aliases, they may be fully qualified, partially qualified or not
1072 qualified at all. Some implementations have resorted to deriving
1073 principal names from such hostnames by utilizing the names services
1074 to canonicalize the hostname first; such practices are not secure
1075 unless the name service are secure, which often aren't.
1077 One method for securely deriving principal names from hostnames is to
1078 alias principals at the KDC such that the KDC will issue tickets for
1079 principal names which are aliases of others. It is helpful for
1080 principals to know what are their aliases as known by the KDCs.
1082 Note that changing a principal's aliases is out of scope for this
1085 3.4 Kerberos V Feature Negotiation
1091 DEFINITIONS EXPLICIT TAGS ::= BEGIN
1093 -- From [clarifications] with modifications
1094 PrincipalName ::= SEQUENCE {
1095 name-string [1] SEQUENCE OF UTF8String
1098 N. Williams et. al. [Page 19]
\f
1100 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1102 Realm ::= UTF8String
1104 -- NOTE WELL: Principal and realm names MUST be constrained by the
1105 -- specification of the version of Kerberos V used by the
1108 -- [Perhaps PrincipalName should be a SEQUENCE of an optional name
1109 -- type and a UTF8String, for simplicity.]
1111 -- From [clarifications]
1112 Int32 ::= INTEGER (-2147483648..2147483647)
1113 UInt32 ::= INTEGER (0..4294967295)
1115 -- Based on [clarifications]
1116 Etype ::= Int32 -- as in [clarifications]
1118 enc-type [0] Etype, -- from Kerberos
1119 key [1] OCTET STRING,
1123 Language-Tag ::= UTF8String -- Constrained by [RFC3066]
1125 -- Empty, extensible SEQUENCEs are legal ASN.1
1126 Extensible-NULL ::= SEQUENCE {
1130 -- Kerberos clients negotiate some parameters relating to their peers
1131 -- indirectly through the KDC. Today this is true of ticket session
1132 -- key enctypes, but in the future this indirect negotiation may also
1133 -- occur with respect to the minor version of Kerberos V to be used
1134 -- between clients and servers. Additionally, KDCs may need to know
1135 -- what authorization-data types are supported by service principals,
1136 -- both, for compatibility with legacy software and for optimization.
1138 -- Thesefore it is important for KDCs to know what features of
1139 -- Kerberos V each service principal supports.
1141 -- In version 2.0 of this protocol the clients and servers may notify
1142 -- each other of their support for:
1144 -- - KerberosV minor version (rfc1510 -> 0, clarifications ->1)
1146 -- - authorization data types
1147 -- - transited encoding data types
1149 -- All authorization-data types defined in [clarifications] are
1150 -- assumed to be supported if the minor version is 1 and do not need
1151 -- to be included in the ad-type list.
1153 -- Int32 is used for enctype and transited encoding data type
1156 N. Williams et. al. [Page 20]
\f
1158 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1161 -- An extensible CHOICE of Int32 is used for authorization data
1164 KerberosV-TR-ID ::= Int32
1166 KerberosV-AD-ID ::= CHOICE {
1171 KerberosVSupportNego ::= SEQUENCE {
1174 clarifications, -- replace with assigned RFC number
1178 enc-types [1] SEQUENCE OF Etype,
1179 ad-types [2] SEQUENCE OF KerberosV-AD-ID OPTIONAL,
1180 -- authorization data types
1181 tr-enc-types [3] SEQUENCE OF KerberosV-TR-ID OPTIONAL,
1182 -- transited encoding types
1184 -- A future extended Kerberos V may have optional features, in
1185 -- which case there might be an additional choice here, not of
1186 -- NULL, but of some other, possibly structured, type.
1189 Request ::= [APPLICATION 0] SEQUENCE {
1190 pvno-minor [0] INTEGER DEFAULT 0,
1191 languages [1] SEQUENCE OF Language-Tag OPTIONAL,
1192 -- Should be defaulted to the SEQUENCE of "i-default"
1193 targ-name [2] PrincipalName OPTIONAL,
1194 targ-realm [3] Realm OPTIONAL,
1195 -- If targ-name/realm are missing then the request
1196 -- applies to the principal of the client
1197 operation [4] Op-req,
1201 Response ::= [APPLICATION 1] SEQUENCE {
1202 pvno-minor [0] INTEGER DEFAULT 0,
1203 language [1] Language-Tag DEFAULT "i-default",
1208 Error-Response ::= [APPLICATION 2] SEQUENCE {
1209 pvno-minor [0] INTEGER DEFAULT 0,
1210 language [1] Language-Tag DEFAULT "i-default",
1211 error-code [2] ProtocolErrorCode,
1212 help-text [3] UTF8String OPTIONAL,
1214 N. Williams et. al. [Page 21]
\f
1216 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1218 op-error [4] Op-err OPTIONAL,
1224 change-pw [1] Req-change-pw,
1225 set-pw [2] Req-set-pw,
1226 set-keys [3] Req-set-keys,
1227 gen-keys [4] Req-gen-keys,
1228 get-keys [5] Req-get-keys,
1229 commit-keys [6] Req-commit-keys,
1230 get-pw-policy [7] Req-get-pw-policy,
1231 get-princ-aliases [8] Req-get-princ-aliases,
1232 get-realm-krb5-support [9] Req-get-realm-krb5-support,
1238 change-pw [1] Rep-change-pw,
1239 set-pw [2] Rep-set-pw,
1240 set-keys [3] Rep-set-keys,
1241 gen-keys [4] Req-gen-keys,
1242 get-keys [5] Req-get-keys,
1243 commit-keys [6] Rep-commit-keys,
1244 get-pw-policy [7] Rep-get-pw-policy,
1245 get-princ-aliases [8] Rep-get-princ-aliases,
1246 get-realm-krb5-support [9] Rep-get-realm-krb5-support,
1252 change-pw [1] Err-change-pw,
1253 set-pw [2] Err-set-pw,
1254 set-keys [3] Err-set-keys,
1255 gen-keys [4] Err-gen-keys,
1256 get-keys [5] Err-get-keys,
1257 commit-keys [6] Err-commit-keys,
1258 get-pw-policy [7] Err-get-pw-policy,
1259 get-princ-aliases [8] Err-get-princ-aliases,
1260 get-realm-krb5-support [9] Err-get-realm-krb5-support,
1264 ProtocolErrorCode ::= ENUM {
1266 proto-unsupported-major-version,
1267 proto-unsupported-minor-version,
1268 proto-unsupported-operation, -- Request CHOICE tag unknown
1269 proto-generic-see-op-error, -- See Op-error
1270 proto-wrong-service-principal, -- Use kadmin/setpw
1272 N. Williams et. al. [Page 22]
\f
1274 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1276 proto-re-authentication-required,
1277 proto-initial-ticket-required,
1278 proto-client-and-target-realm-mismatch,
1279 proto-target-principal-unknown,
1280 proto-authorization-failed,
1285 -- Requests and responses
1288 -- NULL request, much like ONC RPC's NULL procedure - NOT extensible
1296 Req-change-pw ::= SEQUENCE {
1297 old-pw [0] UTF8String,
1298 new-pw [1] UTF8String OPTIONAL,
1299 etypes [2] SEQUENCE (1..) OF Etype OPTIONAL,
1303 Rep-change-pw ::= SEQUENCE {
1304 info-text [0] UTF8String OPTIONAL,
1305 new-pw [1] UTF8String OPTIONAL,
1306 -- generated by the server if present
1307 -- (and requested by the client)
1308 etypes [2] SEQUENCE (1..) OF Etype OPTIONAL,
1312 Err-change-pw ::= SEQUENCE {
1313 help-text [0] UTF8String OPTIONAL,
1315 op-generic-error [0] Extensible-NULL,
1316 op-old-pw-incorrect [1] Extensible-NULL,
1317 op-wont-generate-new-pw [2] Extensible-NULL,
1318 op-new-pw-rejected-generic [3] SEQUENCE {
1319 policy [1] SEQUENCE OF UTF8String,
1320 suggested-pw [2] UTF8String OPTIONAL,
1323 op-etype-not-supported [4] SEQUENCE {
1324 supported-etypes [1] SEQUENCE OF Etype,
1330 N. Williams et. al. [Page 23]
\f
1332 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1338 Req-set-pw ::= SEQUENCE {
1339 languages [0] SEQUENCE OF Language-Tag OPTIONAL,
1340 new-pw [1] UTF8String OPTIONAL,
1341 etypes [2] SEQUENCE (1..) OF Etype OPTIONAL,
1345 Rep-set-pw ::= SEQUENCE {
1346 info-text [0] UTF8String OPTIONAL,
1347 new-pw [1] UTF8String OPTIONAL,
1348 -- generated by the server if present
1349 -- (and requested by the client)
1350 etypes [2] SEQUENCE (1..) OF Etype OPTIONAL,
1354 Err-set-pw ::= SEQUENCE {
1355 help-text [0] UTF8String OPTIONAL,
1357 op-generic-error [0] Extensible-NULL,
1358 op-use-change-pw [1] Extensible-NULL,
1359 op-wont-generate-new-pw [2] Extensible-NULL,
1360 op-new-pw-rejected-generic [3] SEQUENCE {
1361 policy [1] SEQUENCE OF UTF8String,
1362 suggested-pw [2] UTF8String OPTIONAL,
1365 op-etype-not-supported [4] SEQUENCE {
1366 supported-etypes [1] SEQUENCE OF Etype,
1375 Req-set-keys ::= SEQUENCE {
1376 keys [0] SEQUENCE OF Key,
1378 -- TRUE -> install keys now
1380 -- FALSE -> require set-keys-commit
1381 -- before issuing tickets
1382 -- encrypted with these keys.
1384 -- See commit-keys op
1385 isupport [2] KerberosVSupportNego OPTIONAL,
1386 -- For future Kerberos V extensions KDCs
1388 N. Williams et. al. [Page 24]
\f
1390 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1392 -- may need to know what krb5 version is
1393 -- supported by individual service
1394 -- principals. This field provides a
1395 -- way to tell the KDC what version of
1396 -- Kerberos V the target principal
1401 Rep-set-keys ::= SEQUENCE {
1402 info-text [0] UTF8String OPTIONAL,
1404 aliases [2] SEQUENCE OF SEQUENCE {
1405 name [0] PrincipalName,
1406 realm [1] Realm OPTIONAL,
1409 isupport [3] KerberosVSupportNego OPTIONAL,
1411 -- Should there be ETYPE-INFO2 stuff here?
1414 Err-set-keys ::= SEQUENCE {
1415 help-text [0] UTF8String OPTIONAL, -- Reason for rejection
1417 op-generic [0] Extensible-NULL,
1418 op-deferred-commit-no-support [1] Extensible-NULL,
1419 op-etype-no-support [2] SEQUENCE OF {
1420 supported-etypes [1] SEQUENCE OF Etype,
1428 Req-gen-keys ::= SEQUENCE {
1429 etypes [0] SEQUENCE (1..) OF Etype,
1430 entropy [1] OCTET STRING OPTIONAL,
1432 -- TRUE -> install keys now
1434 -- FALSE -> require set-keys-commit
1435 -- before issuing tickets
1436 -- encrypted with these keys.
1438 -- See commit-keys op
1439 isupport [3] KerberosVSupportNego OPTIONAL,
1440 -- For future Kerberos V extensions KDCs
1441 -- may need to know what krb5 version is
1442 -- supported by individual service
1443 -- principals. This field provides a
1444 -- way to tell the KDC what version of
1446 N. Williams et. al. [Page 25]
\f
1448 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1450 -- Kerberos V the target principal
1455 Rep-gen-keys ::= SEQUENCE {
1456 info-text [0] UTF8String OPTIONAL,
1459 aliases [3] SEQUENCE OF SEQUENCE {
1460 name [0] PrincipalName,
1461 realm [1] Realm OPTIONAL,
1464 isupport [4] KerberosVSupportNego OPTIONAL,
1466 -- Should there be ETYPE-INFO2 stuff here?
1469 Err-gen-keys ::= Err-set-keys
1471 -- Get un-committed key request
1472 Req-get-keys ::= SEQUENCE {
1477 Rep-get-keys ::= SEQUENCE {
1478 info-text [0] UTF8String OPTIONAL,
1479 keys [1] SEQUENCE OF Key,
1480 aliases [2] SEQUENCE OF SEQUENCE {
1481 name [0] PrincipalName,
1482 realm [1] Realm OPTIONAL,
1485 isupport [3] KerberosVSupportNego OPTIONAL,
1487 -- Should there be ETYPE-INFO2 stuff here?
1490 Err-get-keys ::= SEQUENCE {
1491 help-text [0] UTF8String OPTIONAL, -- Reason for rejection
1493 op-generic [0] Extensible-NULL,
1494 op-kvno-committed [1] Extensible-NULL,
1495 op-no-such-kvno [1] Extensible-NULL,
1500 -- Commit a set keys request
1501 Req-commit-keys ::= SEQUENCE {
1504 N. Williams et. al. [Page 26]
\f
1506 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1511 Rep-commit-keys ::= Extensible-NULL
1513 Err-commit-keys ::= SEQUENCE {
1514 help-text [0] UTF8String OPTIONAL, -- Reason for rejection
1516 op-generic [0] Extensible-NULL,
1517 op-kvno-expired [1] Extensible-NULL,
1518 -- The client took too long to respond.
1519 op-kvno-unknown [2] Extensible-NULL,
1520 -- The targ princ/kvno is invalid or unknown to the
1521 -- server (perhaps it lost track of state)
1522 op-new-keys-conflict [3] Extensible-NULL,
1523 -- A new-keys/commit-keys request subsequent to the
1524 -- new-keys that produced the kvno has completed
1525 -- and incremented the principal's kvno
1531 -- Get password policy
1532 Req-get-pw-policy ::= Extensible-NULL
1534 Rep-get-pw-policy ::= SEQUENCE {
1535 policy-name [0] UTF8String OPTIONAL,
1536 description [1] SEQUENCE OF UTF8String OPTIONAL,
1540 Err-get-pw-policy ::= Extensible-NULL
1542 -- Get principal aliases
1543 Req-get-princ-aliases ::= Extensible-NULL
1545 Rep-get-princ-aliases ::= SEQUENCE {
1546 help-text [0] UTF8String OPTIONAL,
1547 aliases [1] SEQUENCE OF SEQUENCE {
1548 name [0] PrincipalName,
1549 realm [1] Realm OPTIONAL,
1555 Err-get-princ-aliases ::= Extensible-NULL
1557 -- Get list of enctypes supported by KDC for new keys
1558 Req-get-realm-krb5-support ::= Extensible-NULL
1560 Rep-get-realm-krb5-support ::= SEQUENCE {
1562 N. Williams et. al. [Page 27]
\f
1564 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1566 isupport [0] KerberosVSupportNego,
1567 -- Version of Kerberos V supported by
1568 -- the target realm.
1572 Err-get-realm-krb5-support ::= Extensible-NULL
1577 6 IANA Considerations
1581 7 Security Considerations
1583 Implementors and site administrators should note that the redundancy
1584 of UTF-8 encodings varies by Unicode codepoint used. Password
1585 quality policies should, therefore, take this into account when
1586 estimating the amount of redundancy and entropy in a proposed new
1587 password. [?? It's late at night - I think this is correct.]
1589 Kerberos set/change password/key protocol major version negotiation
1590 cannot be done securely. A downgrade attack is possible against
1591 clients that attempt to negotiate the protocol major version to use
1592 with a server. It is not clear at this time that the attacker would
1593 gain much from such a downgrade attack other than denial of service
1594 (DoS) by forcing the client to use a protocol version which does not
1595 support some feature needed by the client (Kerberos V in general is
1596 subject to a variety of DoS attacks anyways [RFC1510]).
1598 This protocol does not have Perfect Forward Security (PFS). As a
1599 result, any passive network snooper watching password/key changing
1600 operations who has stolen a principal's password or long-term keys
1601 can find out what the new ones are.
1607 The authors would like to thank Raeburn, Tom Yu, Martin Rex, Sam
1608 Hartman, Tony Andrea, Paul W. Nelson, Marcus Watts, Love, Joel N.
1609 Weber II, Jeffrey Hutzelman and other participants from the IETF
1610 Kerberos Working Group for their assistance.
1614 9.1 Normative References
1617 S. Bradner, RFC2026: "The Internet Standard Process - Revision
1618 3," October 1996, Obsoletes - RFC 1602, Status: Best Current
1620 N. Williams et. al. [Page 28]
\f
1622 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1627 S. Bradner, RFC2119 (BCP14): "Key words for use in RFCs to
1628 Indicate Requirement Levels," March 1997, Status: Best Current
1632 Abstract Syntax Notation One (ASN.1): Specification of Basic
1633 Notation, ITU-T Recommendation X.680 (1997) | ISO/IEC
1634 International Standard 8824-1:1998.
1635 http://www.itu.int/ITU-T/studygroups/com17/languages/X680_0702.pdf
1638 ASN.1 encoding rules: Specification of Basic Encoding Rules (BER),
1639 Canonical Encoding Rules (CER) and Distinguished Encoding Rules
1640 (DER), ITU-T Recommendation X.690 (1997)| ISO/IEC International
1641 Standard 8825-1:1998.
1642 http://www.itu.int/ITU-T/studygroups/com17/languages/X690_0702.pdf
1645 RFC-Editor: To be replaced by RFC number for draft-ietf-krb-wg-
1646 kerberos-clarifications.
1649 RFC-Editor: To be replaced by RFC number for draft-ietf-krb-wg-
1653 H. Alvestrand, RFC3066 (BCP47): "Tags for the Identification of
1654 Languages," January 2001, Obsoletes RFC1766, Status: Best Current
1660 9.2 Informative References
1663 M. Swift, J. Trostle, J. Brezak, RFC3244: "Microsoft Windows 2000
1664 Kerberos Change Password and Set Password Protocols," February
1665 2002, Status: Informational.
1667 10 Authors' Addresses
1673 Email: nicolas.williams@sun.com
1678 N. Williams et. al. [Page 29]
\f
1680 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1684 Email: jtrostle@cisco.com
1687 University of Washington
1689 Email: mikesw@cs.washington.edu
1695 Email: jbrezak@microsoft.com
1699 500 108th Ave. NE, Suite 500
1701 Email: bgossman@cisco.com
1703 11 Notes to the RFC Editor
1705 This document has two KRB WG drafts as normative references and
1706 cannot progress until those drafts progress, but no other draft
1707 depends on this one.
1709 Full Copyright Statement
1711 Copyright (C) The Internet Society (2003). All Rights Reserved.
1713 This document and translations of it may be copied and furnished to
1714 others, and derivative works that comment on or otherwise explain it
1715 or assist in its implementation may be prepared, copied, published
1716 and distributed, in whole or in part, without restriction of any
1717 kind, provided that the above copyright notice and this paragraph are
1718 included on all such copies and derivative works. However, this
1719 document itself may not be modified in any way, such as by removing
1720 the copyright notice or references to the Internet Society or other
1721 Internet organizations, except as needed for the purpose of
1722 developing Internet standards in which case the procedures for
1723 copyrights defined in the Internet Standards process must be
1724 followed, or as required to translate it into languages other than
1727 The limited permissions granted above are perpetual and will not be
1728 revoked by the Internet Society or its successors or assigns.
1730 This document and the information contained herein is provided on an
1731 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
1732 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
1733 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
1734 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
1736 N. Williams et. al. [Page 30]
\f
1738 DRAFT Kerberos Set/Change Password v2 Expires April 2004
1740 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1744 Funding for the RFC Editor function is currently provided by the
1797 N. Williams et. al. [Page 31]
\f