2 Kerberos Working Group Jonathan Trostle
3 INTERNET-DRAFT Cisco Systems
4 Category: Standards Track Mike Swift
15 Kerberos Set/Change Password: Version 2
16 <draft-ietf-krb-wg-kerberos-set-passwd-00.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 proposal specifies an extensible protocol for setting keys and
53 changing the passwords of Kerberos [RFC1510] principals.
55 The protocol support a single operation per-session when run over UDP, or
57 Trostle et. al. [Page 1]
59 DRAFT Kerberos Set/Change Password v2 Expires November 2003
61 multiple operations per-session when run over TCP. Clients can
62 change their own principal's password or keys or they can change
63 other principals', provided that they are properly authorized to do
66 Additional related features include the ability to determine the
67 known aliases of Kerberos principals. This feature will facilitate
68 the implementation of aliasing of target principal names in KDC
69 requests by allowing principals to know which names are aliases of
70 their canonical principal names. Principal aliasing is needed to
71 properly support the use of aliases and short-form names by users
72 without requiring that clients canonicalize principal names, possibly
73 using insecure name services in the process.
75 This protocol uses IETF language tags [RFC3066] to negotiate proper
76 localization of help messages intended for users. UTF-8 is used
77 throughout for strings, suitably constrained, where necessary, by the
78 minor version of Kerberos V in use by clients and servers.
82 Kerberos lacks a single, standard protocol for changing passwords and
83 keys. While several vendor-specific protocols exist for changing
84 Kerberos passwords/keys, none are properly internationalized.
86 This document defines a protocol that is somewhat backward-compatible
87 with the "kpasswd" protocol, version 1 [KPASSWDv1] and a derivative
88 defined in [RFC3244] that uses more or less the same protocol framing.
90 This new protocol is designed to be extensible and properly
93 2. Conventions used in this document
95 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
96 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
97 document are to be interpreted as described in [RFC2119].
102 2. Conventions used in this document
107 4.2.1 The protocol over UDP
108 4.2.2 The protocol over TCP
109 4.3 Protocol version negotiation
110 4.3.1 Protocol major version negotiation
111 4.3.2 Protocol minor version negotiation
112 4.4 Use of Kerberos V
113 4.4.1 Use of KRB-ERROR
115 Trostle et. al. [Page 2]
117 DRAFT Kerberos Set/Change Password v2 Expires November 2003
120 4.6 Protocol internationalization
121 4.6.1 Normalization forms for UTF-8 strings
122 4.6.2 Language negotiation
123 4.7 Protocol Extensibility
125 5 Protocol Operations
128 7 Descriptions of each protocol requests and responses
131 7.3 Set Keys Requests
132 7.5 The Get Policy Request
133 7.6 The Get Aliases Request
134 7.7 The Get Supported Enctypes Request
135 8 IANA Considerations
136 9 Security Considerations
137 10 Description of TLV Encoding of Sample Subsets of the Protocol
138 10.1 TLV encoding of the Null request and response
139 10.2 TLV encoding of Error-Response
140 10.3 TLV encoding of the change password requests and responses
141 10.4 TLV encoding of Change Keys requests and responses
145 14 Authors' Addresses
146 15 Notes to the RFC Editor
150 The structure of the protocol is quite similar to that of typical RPC
151 protocols. Each operation has a structure for each client request and
152 a structure for each server response. Each transaction consists of a
153 single operation; the abstract syntax for the protocol implies the
154 use, on the wire, of an operation identifier associated with an
155 opaque blob representing the request of response. The protocol data
156 is wrapped in a KRB-PRIV and framed in a header that is backwards
157 compatible with version 1 of this protocol.
161 The service SHOULD accept requests on UDP port 464 and TCP port 464.
162 This is the same port used by version 1 [KPASSWDv1] of this protocol,
163 but version 2 is a completely different protocol sharing with version
164 1 only the outer framing.
168 For compatibility with the original Kerberos password changing
169 protocol developed at MIT, the first 4 bytes of the message consist
170 of a 2-byte network byte order message length, followed by a 2 byte
171 network byte order protocol version number, followed by a 2 byte
173 Trostle et. al. [Page 3]
175 DRAFT Kerberos Set/Change Password v2 Expires November 2003
177 network byte order length for an optional AP-REQ, AP-REP or
178 KRB-ERROR, followed by the same, if present, followed by a KRB-PRIV
179 (optional in TCP) containing the actual protocol message encoded in
182 In the case of TCP there is an additional 4 byte network byte order
183 length prepended to the frame described above.
185 The protocol version number MUST be set to 2 for this protocol.
187 Bytes on the wire description of the framing:
190 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
191 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
192 | message length | protocol version number |
193 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
194 | AP-REQ length (0 if absent) | AP-REQ data (if present) /
195 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
197 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
199 The same framing applies equally to requests and responses, but
200 responses use AP-REP and/or KRB-ERROR instead of AP-REQ:
203 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
204 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
205 | message length | protocol version number |
206 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
207 | AP-REP length (0 if absent) | AP-REP data (if present) /
208 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
210 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
213 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
214 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
215 | message length | protocol version number |
216 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
217 | KRB-ERROR length (0 if absent)| KRB-ERROR data (if present) /
218 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
220 For the UDP case the AP-REQ/AP-REP/KRB-ERROR MUST always be included.
222 Note that this framing is used by version 1 [KPASSWDv1] and version
223 0xff80 [RFC3244], though the latter does not use the framing when
224 responding with KRB-ERROR messages.
226 Servers MAY respond to version 0xff80 requests with an un-framed
227 KRB-ERROR and e-data set as per-RFC3244 [RFC3244], otherwise clients
228 and server MUST always use this framing. See section 4.3.
231 Trostle et. al. [Page 4]
233 DRAFT Kerberos Set/Change Password v2 Expires November 2003
235 4.2.1 The protocol over UDP
237 In the UDP case there is a single message from the client and a
238 single response from the server with no state kept between requests,
239 and each request MUST include a Kerberos AP-REQ and a KRB-PRIV and
240 each response MUST carry an AP-REP, or KRB-ERROR and a KDB-PRIV.
241 Both the client and server MUST destroy the authentication context
242 after each operation.
244 UDP clients MUST not request the use of sequence numbers, otherwise
245 it cannot generate the KRB-PRIV prior to receiving the AP-REP.
246 Clients MAY refuse to operate version 2 of the protocol over UDP; it
247 is RECOMMENDED that servers reject version 2 UDP requests.
249 4.2.2 The protocol over TCP
251 When used with the TCP transport, there is a 4 octet header in
252 network byte order that precedes the message and specifies the length
255 The initial message from the client MUST carry an AP-REQ and the
256 response to any request bearing an AP-REQ MUST carry an AP-REP.
258 Subsequent messages MAY involve Kerberos V AP exchanges, but
259 generally the client SHOULD NOT initiate a new AP exchange except
260 when it desires to authenticate as a different principal, when
261 its current authentication context is about to expire or when the
262 server responds with an error indicating that the client must
263 re-initialize the authentication context (possibly due to the
264 previous context expiring).
266 The server MUST NOT process any requests that do not contain an
267 AP-REQ unless a non-expired authentication context is currently
268 established with the client on the same TCP connection.
270 Servers MAY close open sessions at any time.
272 4.3 Protocol version negotiation
274 There are several major versions of this protocol. Version 2 also
275 introduces a notion of protocol minor versions for use in negotiating
276 protocol extensions. As of this time only one minor version is
277 defined for major version 2: minor version 0.
279 4.3.1 Protocol major version negotiation
281 Version 2 clients that also support other versions, such as
282 [KPASSWDv1] or [rfc3244] SHOULD attempt to use version 2 of the
283 protocol first and then try other versions if the server
284 responds with either a message framed as described in section 4.2 but
285 with a protocol version number other than 2 (in the case of
286 [KPASSWDv1], or a KRB-ERRROR with an error code of
287 KRB5_KPASSWD_BAD_VERSION in the e-data field [RFC3244].
289 Trostle et. al. [Page 5]
291 DRAFT Kerberos Set/Change Password v2 Expires November 2003
294 Note that some version 1 servers return a KRB-ERROR indicating that
295 versions other than 1 of the change password protocol are not
296 supported rather than an AP-REP and a KRB-PRIV containing the error
297 data. Therefore change password protocol negotiation is subject to
298 downgrade attacks where version 2 clients support version 1 of this
301 Also note that some [RFC3244] implementations do not return any
302 responses to requests for protocol versions other than 0xff80, and in
303 the TCP case close the TCP connection.
305 Version 2 servers MAY support other versions of the Kerberos password
308 Version 2 servers SHOULD respond to non-v2 requests using whatever
309 response is appropriate for the versions used by the clients, but if
310 a server does not do this or know how to do this then it MUST respond
311 with an error framed as in section 4.2, using an AP-REP and KRB-PRIV
312 if the client's AP-REQ can be accepted, or a KRB-ERROR (framed)
313 otherwise and using a ProtocolErrorCode value of
314 unsupported-major-version.
316 4.3.2 Protocol minor version negotiation
318 Version 2 clients are free to use whatever protocol minor version and
319 message extensions are available to them in their initial messages to
320 version 2 servers, provided that the minor versions (other than 0)
321 have been defined through IETF documents and registered with the
324 Version 2 clients and servers MUST support all protocol minor
325 versions between 0 to the highest version supported by the client and
326 server. That is, a client or server that supports minor version 4
327 MUST also support minor versions 0, 1, 2 and 3.
329 Version 2 servers MUST answer with the highest protocol minor version
330 number supported by the server and the client.
332 Version 2 clients MUST use the protocol minor version used in a
333 server's reply for any subsequent messages in the same session
334 (currently this only applies to TCP sessions).
336 See section 4.7 for further description of the protocol's
337 extensibility and its relation to protocol minor versions and the
340 4.4 Use of Kerberos V
342 This protocol makes use of messages defined in [RFC1510] and
343 [clarifications]. Specifically, AP-REQ, AP-REP, KRB-ERROR and
344 KRB-PRIV. Because of the proposed extensions to Kerberos V which
345 will require a new ASN.1 module, and because of the ways that the
347 Trostle et. al. [Page 6]
349 DRAFT Kerberos Set/Change Password v2 Expires November 2003
351 Kerberos V ASN.1 types will change, this protocol cannot safely
352 import any types from the Kerberos V module, therefore the Kerberos
353 PDUs are encoded as OCTET STRINGs herein.
355 All operations are to be performed by the server on behalf of the
358 The client SHOULD use "kadmin/changepw" as the server principal name
359 for this protocol. The server MUST have a principal name of
360 "kadmin/changepw" and MAY have a principal name of "kadmin/setpw."
362 The client MUST request mutual authentication and the client MUST NOT
363 request the use of sequence numbers when using the protocol over
364 UDP, but it MUST request the use of sequence numbers when running
367 The server MUST reject requests that operate on the same principal as
368 the client's if the client's principal is not in the same realm as
369 the server's principal name or if the client's ticket is not INITIAL.
371 The server MAY reject all requests from clients operating on
372 principals not in the client's realm. The server MAY reject all
373 requests operating on principals other than the client's.
375 4.4.1 Use of KRB-ERROR
377 When an error arises during the AP exchange for which
378 [clarifications] does not provide an appropriate error code then the
379 server MUST use KRB_ERR_GENERIC as the error, a localized (if
380 possible [er, is that ok, pre-extensions? probably not]) error string
381 for the e-text field of KRB-ERROR and the encoding of an
382 Error-Response PDU (see section 6) as e-data.
386 This protocol's messages are defined in ASN.1, using only features
387 from [X680]. All ASN.1 types defined herein are to be encoded in
388 DER [X690]. A complete ASN.1 module is given in section 6. The
389 ASN.1 tagging environment for this module is EXPLICIT.
391 The DER encoding of the ASN.1 PDUs are exchanged wrapped in a
392 KRB-PRIV as described above.
394 4.6 Protocol internationalization
396 Protocol requests have an optional field indicationg the languages
397 spoken by the client user; the client SHOULD send its list of spoken
398 languages to the server (once per-TCP session), but if future
399 extensions to the Kerberos protocol should add similar functionality
400 then the client SHOULD NOT use this field when using the extended
401 Kerberos protocol. All strings in the protocol are UTF-8 strings.
402 The server SHOULD localize all strings intended for users to a
403 language in common with the languages spoken by the client user.
405 Trostle et. al. [Page 7]
407 DRAFT Kerberos Set/Change Password v2 Expires November 2003
410 For TCP sessions servers MUST cache the optional language tag lists
411 from prior requests for use with requests that exclude the language
412 tag list. Clients MAY expect such server behaviour and send the
413 language tag lists only when they change or even just once per-TCP
414 session. Clients SHOULD send the server the language tag list at
415 least once, with or before any actual operation.
417 Kerberos principal and realm names used in this protocol MUST be
418 constrained as per the specification of the version of Kerberos V
421 4.6.1 Normalization forms for UTF-8 strings
423 No normalization form is required for string types other than
424 for PrincipalName and Realm, which two types are constrained by the
425 specification of the version of Kerberos V used by the client, and
426 the password fields in the change password operation, which MUST be
427 normalized according to [k5stringprep].
429 4.6.2 Language negotiation
431 The server MUST pick a language from the client's input list or
432 the default language tag (see [RFC3066]) for text in its responses
433 which is meant for the user to read.
435 The server SHOULD use a language selection algorithm such that
436 consideration is first given to exact matches between the client's
437 spoken languages and the server's available locales, followed by
438 "fuzzy" matches where only the first sub-tags of the client's
439 language tag list are used for matching against the servers available
442 When the server has a message catalog for one of the client's spoken
443 languages the server SHOULD localize any text strings intended for
446 4.7 Protocol Extensibility
448 The protocol is defined in ASN.1 and uses extensibility markers
449 throughout. As such, the module presented herein can be extended
450 within the framework of [X680].
452 Typed holes are not used in this protocol as it is very simple and
453 does not require the ability to deal with abstract data types defined
454 in different layers. For this reason, the only way to extend this
455 protocol is by extending the ASN.1 module within the framework of the
456 IETF; all future extensions to this protocol have to be defined in
457 IETF documents unless otherwise specified in a future IETF revision
460 A protocol minor version number is used to negotiate use of
461 extensions. See section 4.3.2 for the minor version negotiation.
463 Trostle et. al. [Page 8]
465 DRAFT Kerberos Set/Change Password v2 Expires November 2003
468 Message extensions are to be closely tied to protocol minor numbers.
469 Clients MAY use any protocol minor version that they support in
470 initial requests, and MUST use the protocol minor version indicated
471 in the server's initial reply in any subsequent requests in the same
472 session (this only applies in the TCP case). Clients MAY cache the
473 minor version number supported by any given server for a reasonably
474 short and finite amount of time - 24 hours is the maximum RECOMMENDED
475 time for caching server minor version information.
477 Servers SHOULD ignore protocol extensions and minor versions that they
478 do not understand in initial requests, except for extensions to the
479 "Op-req" type, which MUST result in an error; servers MAY respond
480 with an error (ProtocolErrorCode value of unsupported-minor-version)
481 to clients that use minor versions unsupported by the server in their
484 Servers MUST select the highest minor version in common with their
485 clients for use in replies.
487 Servers MAY support a subset of the operations defined in this
488 protocol but MUST support all the PDUs.
492 The structure of the protocol is such that the ASN.1 syntaxes for the
493 various operations supported by the protocol are independent of the
494 each other. Clients and servers MAY implement subsets of the overall
497 The structure of this protocol and the properties of the
498 tag-length-value (TLV) DER encoding of ASN.1 make it possible to
499 describe the encoding of individual operations' messages very simply.
501 In the interest of facilitating ease of implementation for trivial
502 subsets of this protocol, without the need for ASN.1 compilers,
503 section 10 describes examples of TLV layouts of some individual
504 protocol operations (but the DER encodings of tags, lengths and
505 UNIVERSAL values is not described).
508 5 Protocol Operations
510 The protocol as defined herein supports the following operations
511 relating to the management of Kerberos principal's passwords or keys:
515 - get password policy name and/or description of principal
516 - list aliases of a principal
517 - list enctypes supported by realm
519 These operations are needed to support Kerberos V interoperability
521 Trostle et. al. [Page 9]
523 DRAFT Kerberos Set/Change Password v2 Expires November 2003
525 between clients and KDCs of different implementation origins.
527 The operation for retrieving a list of aliases of a principal is
528 needed where KDCs implement aliasing of principal names and allows
529 clients to properly setup their "keytabs" when principal aliasing is
532 Operations such as creation or deletion of principals are outside the
533 scope of this document, and should be performed via directories or
534 other Kerberos administration protocols. However, it is conceivable
535 that such operations could be added to this protocol at a later
538 Operations can be added to the protocol only via future IETF RFCs.
540 The individual operations are described in section 7.
544 The types "Request," "Response" and "Error-Response" are the ASN.1
547 The "Request" and "Response" PDUs are always to be sent wrapped in
548 KRB-PRIV messages, except for the "Error-Response" PDU which MUST be
549 sent as KRB-ERROR e-data (see section 4.4.1) when AP exchanges fail,
550 otherwise it MUST be sent wrapped in a KRB-PRIV.
552 The PDUs are described in section 6.
557 DEFINITIONS EXPLICIT TAGS ::= BEGIN
559 -- Unsafe: IMPORT AP-REQ, AP-REP, KRB-ERROR, KRB-PRIV, PrincipalName,
560 -- Realm, KerberosString, FROM KerberosV5Spec2
562 -- From [clarifications]
563 PrincipalName ::= SEQUENCE {
565 name-string [1] SEQUENCE OF UTF8String
568 -- NOTE WELL: Principal and realm names MUST be constrained by the
569 -- specification of the version of Kerberos V used by the
572 -- [Perhaps PrincipalName should be a SEQUENCE of an optional name type
573 -- and a UTF8String, for simplicity.]
575 -- From [clarifications]
576 Int32 ::= INTEGER (-2147483648..2147483647)
577 UInt32 ::= INTEGER (0..4294967295)
579 Trostle et. al. [Page 10]
581 DRAFT Kerberos Set/Change Password v2 Expires November 2003
584 -- Based on EncryptionKey type from [clarifications]
586 enc-type [0] Int32, -- from Kerberos
587 key [1] OCTET STRING,
591 Etype ::= Int32 -- as in [clarifications]
592 -- Perhaps we should use an extensible CHOICE of Int32?
594 Language-Tag ::= UTF8String -- Constrained by [RFC3066]
596 -- Use LangTaggedText instead of UTF8String for *-text fields and remove
599 -- LangTaggedText should be used as e-text for KRB-ERROR, at least in
600 -- extensions, perhaps in [clarifications]
601 LangTaggedText ::= SEQUENCE {
602 language [0] Language-Tag OPTIONAL,
607 Request ::= [APPLICATION 0] SEQUENCE {
608 pvno-major [0] INTEGER DEFAULT 2,
609 pvno-minor [1] INTEGER DEFAULT 0,
610 languages [2] SEQUENCE OF Language-Tag OPTIONAL,
611 targ-name [3] PrincipalName OPTIONAL,
612 targ-realm [4] Realm OPTIONAL,
613 -- If targ-name/realm are missing then the request
614 -- applies to the principal of the client
615 operation [5] Op-req,
619 Response ::= [APPLICATION 1] SEQUENCE {
620 pvno-major [0] INTEGER DEFAULT 2,
621 pvno-minor [1] INTEGER DEFAULT 0,
622 language [2] Language-Tag DEFAULT "i-default",
623 result [3] Op-rep OPTIONAL,
627 Error-Response ::= [APPLICATION 2] SEQUENCE {
628 pvno-major [0] INTEGER DEFAULT 2,
629 pvno-minor [1] INTEGER DEFAULT 0,
630 language [2] Language-Tag DEFAULT "i-default",
631 error-code [3] ProtocolErrorCode,
632 help-text [4] UTF8String OPTIONAL,
633 op-error [5] Op-error OPTIONAL,
637 Trostle et. al. [Page 11]
639 DRAFT Kerberos Set/Change Password v2 Expires November 2003
644 change-pw [1] Req-change-pw,
645 set-keys [2] Req-set-keys,
646 get-pw-policy [3] Req-get-pw-policy,
647 get-princ-aliases [4] Req-get-princ-aliases,
648 get-supported-etypes [5] Req-get-supported-etypes,
654 change-pw [1] Rep-change-pw,
655 set-keys [2] Rep-set-keys,
656 get-pw-policy [3] Rep-get-pw-policy,
657 get-princ-aliases [4] Rep-get-princ-aliases,
658 get-supported-etypes [5] Rep-get-supported-etypes,
662 Op-error ::= CHOICE {
664 change-pw [1] Err-change-pw,
665 set-keys [2] Err-set-keys,
666 get-pw-policy [3] Err-get-pw-policy,
667 get-princ-aliases [4] Err-get-princ-aliases,
668 get-supported-etypes [5] Err-get-supported-etypes,
672 ProtocolErrorCode ::= ENUM {
673 -- Remember, ASN.1 enums are zero-based
675 unsupported-major-version,
676 unsupported-minor-version,
677 unsupported-operation,
678 authorization-failed,
679 initial-ticket-required,
680 target-principal-unknown,
685 -- Requests and responses
688 -- NULL request, much like ONC RPC's NULL procedure
695 Trostle et. al. [Page 12]
697 DRAFT Kerberos Set/Change Password v2 Expires November 2003
701 Req-change-pw ::= SEQUENCE {
702 old-pw [0] UTF8String,
703 new-pw [1] UTF8String OPTIONAL,
704 etypes [2] SEQUENCE (1..) OF Etype OPTIONAL,
708 Rep-change-pw ::= SEQUENCE {
709 info-text [0] UTF8String OPTIONAL,
710 new-pw [1] UTF8String OPTIONAL,
711 -- generated by the server if present
712 -- (and requested by the client)
713 etypes [2] SEQUENCE (1..) OF Etype OPTIONAL,
717 Err-change-pw ::= SEQUENCE {
718 help-text [0] UTF8String OPTIONAL,
721 wont-generate-new-pw,
723 new-pw-rejected-generic,
727 suggested-new-pw [2] UTF8String OPTIONAL,
733 Req-set-keys ::= SEQUENCE {
734 etypes [0] SEQUENCE (1..) OF Etype,
735 entropy [1] OCTET STRING OPTIONAL,
736 -- The client can provide entropy for
737 -- the server's use while generating
742 Rep-set-keys ::= SEQUENCE {
743 info-text [0] UTF8String OPTIONAL,
745 keys [2] SEQUENCE (1..) OF Key,
746 -- The server always makes the keys.
747 aliases [3] SEQUENCE OF SEQUENCE {
748 name [0] PrincipalName,
749 realm [1] Realm OPTIONAL,
753 Trostle et. al. [Page 13]
755 DRAFT Kerberos Set/Change Password v2 Expires November 2003
760 Err-set-keys ::= SEQUENCE {
761 help-text [0] UTF8String OPTIONAL, -- Reason for rejection
762 enctypes [1] SEQUENCE of Etype OPTIONAL, -- supported enctypes
769 -- Get password policy
770 Req-get-pw-policy ::= NULL
772 Rep-get-pw-policy ::= SEQUENCE {
773 help-text [0] UTF8String OPTIONAL,
774 policy-name [1] UTF8String OPTIONAL,
775 description [2] UTF8String OPTIONAL,
779 Err-get-pw-policy ::= NULL
781 -- Get principal aliases
782 Req-get-princ-aliases ::= NULL
784 Rep-get-princ-aliases ::= SEQUENCE {
785 help-text [0] UTF8String OPTIONAL,
786 aliases [1] SEQUENCE OF SEQUENCE {
787 name [0] PrincipalName,
788 realm [1] Realm OPTIONAL,
794 Err-get-princ-aliases ::= NULL
796 -- Get list of enctypes supported by KDC for new keys
797 Req-get-supported-etypes ::= NULL
799 Rep-get-supported-etypes ::= SEQUENCE OF Etype
801 Err-get-supported-etypes ::= NULL
805 7 Descriptions of each protocol requests and responses
807 This section describes the semantics of each operation request and
808 response defined in the ASN.1 module in section 6.
811 Trostle et. al. [Page 14]
813 DRAFT Kerberos Set/Change Password v2 Expires November 2003
815 Requests and responses consist of an outer structure ("Request,"
816 "Response" and "Error-Response") containing fields common to all
817 requests/responses, and an inner structure for fields that are
818 specific to each operation's requests/responses.
820 Specifically, the outer Request structure has a field for passing a
821 client's spoken (read) languages to the server. It also has two
822 optional fields for identifying the operation's target principal's
823 name and realm (if not sent then the server MUST use the client
824 principal name and realm from the AP exchange as the target).
826 The Response and Error PDU' outer structures include a field
827 indicating the language that the server has chosen for localization
828 of text intended to be displayed to users.
830 All three PDUs, "Request," "Response," and "Error-Response" include a
831 protocol version number and the two responses include an optional
832 field through which the server can indicate which language, from the
833 client's list, the server can "speak."
837 The null request is intended for use with TCP; its purpose is similar
838 to RPC null procedures and is akin to a "ping" operation.
842 The change password request has two fields: old-pw (old password -
843 required) and new-pw (new password - optional). The server MUST
844 validate the old password and MUST check the quality of the new
845 password, if sent, according to the password policy associated with
846 the client's principal before accepting the request. If the client
847 does not specify a new password the server MUST either generate one
848 and return it in the response or reject the request with
849 wont-generate-new-pw as the Err-change-pw message's error code.
851 If the server rejects a client's proposed new password it SHOULD
852 include a description of the password quality policy in effect for
853 the target principal and/or an explanation of what was wrong with the
854 proposed password in the help-text field of the Err-change-pw
855 message. Additionally, servers MAY include a randomly generated, but
856 preferably user-friendly password in the suggested-new-pw field of
857 Err-change-pw messages when the client's proposed new password
858 violates the target principal's password quality policy; of course,
859 any such suggested new password MUST pass the target principal's
860 password quality policy.
862 Clients MAY specify key enctypes to set with new passwords, but
863 generally SHOULD NOT do so. If a client requests specific enctypes
864 then the server MUST NOT create keys from the new password of any
865 enctype other than those requested by the client.
867 Servers MAY indicate the enctypes of the keys created with new
869 Trostle et. al. [Page 15]
871 DRAFT Kerberos Set/Change Password v2 Expires November 2003
873 passwords, but SHOULD NOT do so unless the client requested specific
874 enctypes - in which case the server MUST include the new key enctypes
875 in the change password response.
877 7.3 Set Keys Requests
879 The set keys request consists of a sequence of key enctypes and an
880 optional OCTET STRING of client-provided entropy.
882 The server generates keys of the requested enctypes and returns them.
883 The server MAY utilize some, all or none of the client-provided
884 entropy, if any, to generate the keys, but the server SHOULD input
885 some entropy in the process.
887 The server SHOULD also include a list of the target principal's
888 aliases, if there are any.
890 7.5 The Get Policy Request
892 It is common for sites to set policies with respect to password
893 quality. It is beyond the scope of this document to describe such
894 policies. However, it is reasonable for password policies to have
895 names and as such for this protocol to associate named password
896 quality policies with principals. It may also be reasonable for
897 users to learn of their password quality policies.
899 The protocol therefore provides an operation for retrieving the name
900 and/or description of the password policy that applies to the target
903 Management of password quality policies' actual content is beyond the
904 scope of this protocol.
906 7.6 The Get Aliases Request
908 This request allows a client to obtain a list of aliases associated
909 with a principal so that the client can properly configure the
910 principal's "keytab."
912 Principal aliases are principal names for which the KDC will issue
913 tickets (with the alias being either the client or target principal
914 name of such tickets) using the same key as the "canonical" principal
915 name, but without canonicalizing the aliased names in KDC exchanges.
917 7.7 The Get Supported Enctypes Request
919 This request allows a client to learn of the target principal's
920 realm's supported enctypes.
923 8 IANA Considerations
927 Trostle et. al. [Page 16]
929 DRAFT Kerberos Set/Change Password v2 Expires November 2003
932 9 Security Considerations
934 Implementors and site administrators should note that the redundancy
935 of UTF-8 encodings varies by Unicode codepoint used. Password
936 quality policies should, therefore, take this into account when
937 estimating the amount of redundancy and entropy in a proposed new
938 password. [?? It's late at night - I think this is correct.]
940 Kerberos set/change password/key protocol major version negotiation
941 cannot be done securely. A downgrade attack is possible against
942 clients that attempt to negotiate the protocol major version to use
943 with a server. It is not clear at this time that the attacker would
944 gain much from such a downgrade attack other than denial of service
945 (DoS) by forcing the client to use a protocol version which does not
946 support some feature needed by the client (Kerberos V in general is
947 subject to a variety of DoS attacks anyways [RFC1510]).
951 10 Description of TLV Encoding of Sample Subsets of the Protocol
953 This section provides example descriptions of the TLV DER encodings of
954 some requests and responses. This section is not intended to be
955 authoritative and implementors are encouraged to base their
956 implementations on the ASN.1 syntax given in section 6. These TLV
957 descriptions are given here in the interest of promoting
958 implementation of this protocol even by implementors who do not have
959 access to ASN.1 development tools.
961 Tags are described as T(<tag>) where <tag> is a letter denoting the
962 tag type (u for UNIVERSAL, a for APPLICATION, c for CONTEXT and p for
963 PRIVATE) and a number or universal type name.
965 Lengths and values are described as L{<value>}, where <value> is a
966 description of the encoding of the value, except for scalar UNIVERSAL
967 types, where <value> shall be '<' description of value '>'.
969 Optional fields are enclosed in square brackets ('[' and ']').
971 Repetition is denoted by ellipsis ("...").
973 Extensibility is denoted by "[...]".
975 Comments are introduced by "--" as in ASN.1
977 10.1 TLV encoding of the Null request and response
980 -- Outer application tag
981 T(a0)L{T(uSEQUENCE)L{
983 -- pvno-major == 2 so it is left out
985 Trostle et. al. [Page 17]
987 DRAFT Kerberos Set/Change Password v2 Expires November 2003
989 -- pvno-minor == 0 so it is left out
990 -- optional languages list
993 T(uUTF8String)L{<language tag>}
997 -- optional targ-name
1001 T(c0)L{T(uINTEGER)L{<name-type>}}
1005 [T(uUTF8String)L{<component name>}]
1011 -- optional targ-realm
1012 [T(c4)L{T(uUTF8String)L{<realm name>}}]
1015 -- operation choice tag
1017 -- null CHOICE (this tag indicates the CHOICE taken; replace this
1018 -- TLV with the TLV for any operation to get the Request encoding
1019 -- of that operation)
1021 -- Req-null (this is the encoding of the value of the CHOICE
1022 -- taken); NULL has no LV part.
1031 -- Outer application tag
1032 T(a1)L{T(uSEQUENCE)L{
1034 -- pvno-major == 2 so it is left out
1035 -- pvno-minor == 0 so it is left out
1036 -- optional language
1037 [T(c1)L{T(uUTF8String)L{<language tag>}}]
1039 -- operation choice tag
1043 Trostle et. al. [Page 18]
1045 DRAFT Kerberos Set/Change Password v2 Expires November 2003
1053 10.2 TLV encoding of Error-Response
1056 -- Outer application tag
1057 T(a1)L{T(uSEQUENCE)L{
1059 -- pvno-major == 2 so it is left out
1060 -- pvno-minor == 0 so it is left out
1061 -- optional language
1062 [T(c2)L{T(uUTF8String)L{<language tag>}}]
1065 T(c3)L{T(uENUM)L{<error code}}
1066 T(c4)L{T(uUTF8String)L{<error text}}
1069 -- CHOICE TLV goes here
1070 T(c<choice taken>)L{<value of CHOICE taken>}
1076 10.3 TLV encoding of the change password requests and responses
1083 T(c0)L{T(uUTF8String)L{<password string>}}
1084 -- new password (optional; if missing server must generate it)
1085 [T(c1)L{T(uUTF8String)L{<password string>}}]
1095 -- optional informational text
1096 [T(c0)L{T(uUTF8String)L{<text>}}]
1097 -- new password (optional; see section 6)
1098 [T(c1)L{T(uUTF8String)L{<new password>}}]
1101 Trostle et. al. [Page 19]
1103 DRAFT Kerberos Set/Change Password v2 Expires November 2003
1113 -- optional help text
1114 [T(c0)L{T(uUTF8String)L{<text>}}]
1116 T(c1)L{T(uENUM)L{<error code>}}]
1122 10.4 TLV encoding of Change Keys requests and responses
1129 T(c0)L{T(uSEQUENCE)L{
1130 T(uINTEGER)L{<etype integer>},
1134 [T(c1)L{T(uOCTET STRING)L{<entropy>}}]
1144 -- optional informational text
1145 [T(c0)L{T(uUTF8String)L{<text>}}]
1147 T(c1)L{T(uINTEGER)L{<new kvno>}}
1149 T(c2)L{T(uSEQUENCE)L{
1152 T(uINTEGER)L{<etype>}
1153 T(uOCTET STRING)L{<key>}
1154 -- extensions to Key
1157 -- additional keys, if any
1159 Trostle et. al. [Page 20]
1161 DRAFT Kerberos Set/Change Password v2 Expires November 2003
1166 [T(c3)L{T(uSEQUENCE)L{
1171 T(uUTF8String)L{<component1>},
1172 -- components 2..N, if any
1175 T(uUTF8String)L{<realm name>}
1179 -- additional aliases, if any
1191 -- optional help text
1192 [T(c0)L{T(uUTF8String)L{<text>}}]
1193 -- KDC supported enctypes
1194 [T(c1)L{T(uSEQUENCE)L{
1195 T(uINTEGER)L{<etype integer>},
1199 T(c2)L{T(uENUM)L{<error code>}}]
1207 The authors would like to thank Sam Hartman, Paul W. Nelson and
1208 Marcus Watts for their assistance.
1210 The authors thank Ken Raeburn, Tom Yu, Martin Rex, Sam Hartman, Tony
1211 Andrea, Paul W. Nelson, Marcus Watts and other participants from the
1212 IETF Kerberos Working Group for their input to the document.
1217 Trostle et. al. [Page 21]
1219 DRAFT Kerberos Set/Change Password v2 Expires November 2003
1221 12.1 Normative References
1224 S. Bradner, RFC2026: "The Internet Standard Process - Revision
1225 3," October 1996, Obsoletes - RFC 1602, Status: Best Current
1229 S. Bradner, RFC2119 (BCP14): "Key words for use in RFCs to
1230 Indicate Requirement Levels," March 1997, Status: Best Current
1234 Abstract Syntax Notation One (ASN.1): Specification of Basic
1235 Notation, ITU-T Recommendation X.680 (1997) | ISO/IEC
1236 International Standard 8824-1:1998.
1237 http://www.itu.int/ITU-T/studygroups/com17/languages/X680_0702.pdf
1240 ASN.1 encoding rules: Specification of Basic Encoding Rules (BER),
1241 Canonical Encoding Rules (CER) and Distinguished Encoding Rules
1242 (DER), ITU-T Recommendation X.690 (1997)| ISO/IEC International
1243 Standard 8825-1:1998.
1244 http://www.itu.int/ITU-T/studygroups/com17/languages/X690_0702.pdf
1247 J. Kohl and B. C. Neuman, RFC1510: "The Kerberos Network
1248 Authentication Service (v5)," September 1993, Status: Proposed
1252 RFC-Editor: To be replaced by RFC number for draft-ietf-krb-wg-
1253 kerberos-clarifications.
1256 RFC-Editor: To be replaced by RFC number for draft-ietf-krb-wg-
1260 H. Alvestrand, RFC3066 (BCP47): "Tags for the Identification of
1261 Languages," January 2001, Obsoletes RFC1766, Status: Best Current
1267 12.1 Informative References
1270 M. Swift, J. Trostle, J. Brezak, RFC3244: "Microsoft Windows 2000
1271 Kerberos Change Password and Set Password Protocols," February
1272 2002, Status: Informational.
1275 Trostle et. al. [Page 22]
1277 DRAFT Kerberos Set/Change Password v2 Expires November 2003
1279 13 Authors' Addresses
1285 Email: jtrostle@cisco.com
1288 University of Washington
1290 Email: mikesw@cs.washington.edu
1296 Email: jbrezak@microsoft.com
1300 500 108th Ave. NE, Suite 500
1302 Email: bgossman@cisco.com
1308 Email: nicolas.williams@sun.com
1310 14 Notes to the RFC Editor
1312 This document has two KRB WG drafts as normative references and
1313 cannot progress until those drafts progress, but no other draft
1314 depends on this one.
1316 Full Copyright Statement
1318 Copyright (C) The Internet Society (2003). All Rights Reserved.
1320 This document and translations of it may be copied and furnished to
1321 others, and derivative works that comment on or otherwise explain it
1322 or assist in its implementation may be prepared, copied, published
1323 and distributed, in whole or in part, without restriction of any
1324 kind, provided that the above copyright notice and this paragraph are
1325 included on all such copies and derivative works. However, this
1326 document itself may not be modified in any way, such as by removing
1327 the copyright notice or references to the Internet Society or other
1328 Internet organizations, except as needed for the purpose of
1329 developing Internet standards in which case the procedures for
1330 copyrights defined in the Internet Standards process must be
1331 followed, or as required to translate it into languages other than
1333 Trostle et. al. [Page 23]
1335 DRAFT Kerberos Set/Change Password v2 Expires November 2003
1339 The limited permissions granted above are perpetual and will not be
1340 revoked by the Internet Society or its successors or assigns.
1342 This document and the information contained herein is provided on an
1343 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
1344 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
1345 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
1346 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
1347 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1351 Funding for the RFC Editor function is currently provided by the