10 Internet-Draft K. Raeburn
11 Kerberos Working Group MIT
12 Updates: RFC 1964 August 13, 2003
13 Document: draft-ietf-krb-wg-gss-crypto-00.txt expires February 13, 2004
15 General Kerberos Cryptosystem Support
16 for the Kerberos 5 GSSAPI Mechanism
20 This document describes an update to the Kerberos 5 mechanism for
21 GSSAPI to allow the use of Kerberos-defined cryptosystems directly in
22 GSSAPI messages, without requiring further changes for each new
23 encryption or checksum algorithm that complies with the Kerberos
24 crypto framework specifications.
28 This document is an Internet-Draft and is in full conformance with
29 all provisions of Section 10 of RFC2026 [RFC2026]. Internet-Drafts
30 are working documents of the Internet Engineering Task Force (IETF),
31 its areas, and its working groups. Note that other groups may also
32 distribute working documents as Internet-Drafts. Internet-Drafts are
33 draft documents valid for a maximum of six months and may be updated,
34 replaced, or obsoleted by other documents at any time. It is
35 inappropriate to use Internet-Drafts as reference material or to cite
36 them other than as "work in progress."
38 The list of current Internet-Drafts can be accessed at
39 http://www.ietf.org/ietf/1id-abstracts.txt
41 The list of Internet-Draft Shadow Directories can be accessed at
42 http://www.ietf.org/shadow.html.
46 Kerberos defines an encryption and checksum framework [KCRYPTO] that
47 provides for complete specification and enumeration of cryptosystem
48 specifications in a general way, to be used within Kerberos and
49 associated protocols. The GSSAPI Kerberos 5 mechanism definition
50 [GSSAPI-KRB5] sets up a framework for enumerating encryption and
51 checksum types, independently of how such schemes may be used in
52 Kerberos, thus requiring updates for any new encryption or checksum
53 algorithm not directly compatible with those already defined.
60 INTERNET DRAFT August 2003
63 This document describes an update to [GSSAPI-KRB5] to allow the use
64 of any Kerberos-defined cryptosystems directly in GSSAPI messages,
65 without requiring further changes for each new encryption or checksum
66 algorithm that complies with the framework specifications, and
67 without making assumptions concerning block sizes or other
68 characteristics of the underlying encryption operations.
70 2. Conventions Used in This Document
72 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
73 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
74 document are to be interpreted as described in RFC 2119.
76 3. New Algorithm Identifiers
78 Two new sealing algorithm numbers and one new signing algorithm
79 number are defined, for use in MIC, Wrap and Delete tokens.
82 type name octet values
83 -----------------------------------------
84 seal KERBEROS5-ENCRYPT 00 01
85 sign KERBEROS5-CHECKSUM 00 01
89 The KERBEROS5-ENCRYPT algorithm encrypts using the Kerberos
90 encryption type [KCRYPTO] indicated by the encryption key type (using
91 the session key or initiator's subkey, as described in [GSSAPI-
92 KRB5]), with a key usage value KG_USAGE_SEAL, defined below. All
93 Kerberos encryption types provide for integrity protection, and
94 specify any padding that might be required; neither needs to be done
95 at the GSS mechanism level when KERBEROS5-ENCRYPT is used. When
96 KERBEROS5-ENCRYPT is used as the seal algorithm, the sign algorithm
99 The signing algorithm value NONE MUST be used only with a sealing
100 algorithm that incorporates integrity protection; currently,
101 KERBEROS5-ENCRYPT is the only such sealing algorithm.
103 The KERBEROS5-CHECKSUM signing algorithm MAY be used in other cases.
104 The contents of the SGN_CKSUM field are determined by computing a
105 Kerberos checksum [KCRYPTO], using the session key or subkey, and a
106 key usage value of KG_USAGE_SIGN. The Kerberos checksum algorithm to
107 be used is the required-to-implement checksum algorithm associated
108 with the encryption key type. It should be noted that the checksum
109 input data in this case is not the same as the "to-be-signed data"
110 described in section 1.2.1.1 of [GSSAPI-KRB5]; see below.
116 INTERNET DRAFT August 2003
119 The encryption or checksum output incorporated in the MIC and Wrap
120 tokens is the octet string output from the corresponding operation in
121 [KCRYPTO]; it should not be confused with the EncryptedData or
122 Checksum object in [KrbClar].
124 For purposes of key derivation, we add two new usage values to the
125 list defined in [KrbClar]; one for signing messages, and one for
130 ----------------------
135 4. Adjustments to Previous Definitions
137 4.1. Quality of Protection
139 The GSSAPI specification [GSSAPI] says that a zero QOP value
140 indicates the "default". The original specification for the Kerberos
141 5 mechanism says that a zero QOP value (or a QOP value with the
142 appropriate bits clear) means DES encryption.
144 Since the quality of protection cannot be improved without fully
145 reauthenticating with a stronger key type, the QOP value is now
150 The definitions of the MIC and Wrap tokens in [GSSAPI-KRB5] assumed
151 an 8-byte checksum size, and a CBC-mode block cipher with an 8-byte
152 block size, without integrity protection. In the crypto framework
153 described in [KCRYPTO], integrity protection is built into the
154 encryption operations. CBC mode is not assumed, and indeed there may
155 be no initial vector to supply. While the operations are performed
156 on messages of specific sizes, the underlying cipher may be a stream
159 We modify the message definitions such that the portions after the
160 first 8 bytes (which specify the token identification and the signing
161 and sealing algorithms) are defined by the algorithms chosen. The
162 remaining bytes must convey sequence number and direction
163 information, and must protect the integrity of the token id and
164 algorithm indicators. For the DES-based algorithms specified in
165 [GSSAPI-KRB5], the definition for the remaining data is backwards
172 INTERNET DRAFT August 2003
175 The revised message descriptions are thus as follows:
179 Byte # Name Description
180 -------------------------------------------------------
181 0..1 TOK_ID Identification field (01 01).
182 2..3 SGN_ALG Integrity algorithm indicator.
183 4..7 Filler Contains ff ff ff ff
184 8..N Dependent on SGN_ALG.
186 If SGN_ALG is 0000, 0100, 0200:
187 8..15 SND_SEQ Sequence number/direction
189 16..23 SGN_CKSUM Checksum of bytes 0..7 and
190 application data, as described
193 8..15 SND_SEQ Sequence number/direction
194 field, NOT encrypted.
195 16..N SGN_CKSUM Checksum of bytes 0..15 and
196 application data, with key
200 Suggestions from Microsoft: Moving to 64-bit sequence numbers
201 would be better for long sessions with many messages. Using the
202 direction flag to perturb the encryption or integrity protection
203 is safer than simply including a flag which a buggy but mostly
204 working implementation might fail to check.
206 I am considering changing to use 64-bit sequence numbers, and
207 omitting the direction flag from the transmitted cleartext data.
208 How it would factor into the encrypted Wrap token, I haven't
211 - Change the key usage values based on the direction? It's
212 suggested in [KCRYPTO], perhaps not strongly enough, that the key
213 usage numbers should perturb the key, but DES ignores them,
214 although DES shouldn't use this extension.
216 - Add a direction flag byte in encrypted data? Either depends on
217 an implementor remembering to add the check. Adding it to
218 checksummed data requires that the implementor get it right.
220 - Generate one or two new keys using PRF and random-to-key
221 operations, using different keys for each direction? Pulling the
222 DK function out of the simplified profile is probably not a good
228 INTERNET DRAFT August 2003
233 The filler bytes are included in the checksum calculation for
234 simplicity. There is no security benefit from including them.
236 In the Wrap token, the initial bytes, sequence number and direction
237 are incorporated into the data to be encrypted. In most cases, this
238 is likely to be more efficient in terms of space and computing power
239 than using unencrypted sequence number and direction fields, adding a
240 checksum, and doing the additional work to authenticate that the
241 checksum and encrypted data are part of the same message. (The
242 framework in [KCRYPTO] has no support for integrity protection of a
243 block of data only some of which is encrypted, except by treating the
244 two portions independently and using some additional means to ensure
245 that the two parts continue to be associated with one another.)
247 The length is also included, as a 4-byte value in network byte order,
248 because the decryption operation in the Kerberos crypto framework
249 does not recover the exact length of the original input. Thus,
250 messages with application data larger than 4 gigabytes are not
253 [Q: Should this length be 8 bytes? ASN.1 wrapper?]
257 Byte # Name Description
258 -------------------------------------------------------------
259 0..1 TOK_ID Identification field (02 01).
260 2..3 SGN_ALG Integrity algorithm indicator.
261 4..5 SEAL_ALG Sealing algorithm indicator.
262 6..7 Filler Contains ff ff
263 8..last Dependent on SEAL_ALG and SGN_ALG.
266 8..15 SND_SEQ Encrypted sequence number field.
267 16..23 SGN_CKSUM Checksum of plaintext padded data,
268 calculated according to algorithm
269 specified in SGN_ALG field. (RFC
271 24..last Data Encrypted padded data.
273 If SEAL_ALG is 0001 and SGN_ALG is ffff:
274 8..last Data Encrypted bytes 0..5, 2-byte
275 direction flag, sequence number,
276 4-byte data length, and data.
284 INTERNET DRAFT August 2003
287 If SEAL_ALG is ffff, and SGN_ALG is 0000, 0100, 0200:
288 8..15 SND_SEQ Encrypted sequence number field.
289 16..23 SGN_CKSUM Checksum of plaintext padded data,
291 24..last Data plaintext padded data
293 If SEAL_ALG if ffff, and SGN_ALG is 0001:
294 8..15 SND_SEQ Sequence number/direction field,
296 16..N SGN_CKSUM Checksum of bytes 0..15 and
297 application data, with key usage
299 N+1..last Data plaintext data
302 The direction flag, as in [GSSAPI-KRB5], is made up of bytes
303 indicating the party sending the token: 00 for the context initiator,
304 or hex FF for the context acceptor. In the KERBEROS5-ENCRYPT case,
305 only two bytes are used, and they replace the fixed filler bytes of
306 the token header, which need no protection; this reduces slightly the
307 redundancy of the data transmitted.
309 The context-deletion token is essentially a MIC token with no user
310 data and a different TOK_ID value. Thus, its modification is
314 Context deletion token
315 Byte # Name Description
316 -------------------------------------------------------
317 0..1 TOK_ID Identification field (01 02).
318 2..3 SGN_ALG Integrity algorithm indicator.
319 4..7 Filler Contains ff ff ff ff
321 If SGN_ALG is 0000, 0100, 0200:
322 8..15 SND_SEQ Sequence number/direction
324 16..23 SGN_CKSUM Checksum of bytes 0..7, as
325 described in [GSSAPI-KRB5].
328 8..15 SND_SEQ Sequence number/direction
329 field, NOT encrypted.
330 16..N SGN_CKSUM Checksum of bytes 0..15, with
331 key usage KG_USAGE_SIGN.
340 INTERNET DRAFT August 2003
343 5. Backwards Compatibility Considerations
345 The context initiator should request of the KDC credentials using
346 session-key cryptosystem types supported by that implementation; if
347 the only types returned by the KDC are not supported by the mechanism
348 implementation, it should indicate a failure. This may seem obvious,
349 but early implementations of both Kerberos and the GSSAPI Kerberos
350 mechanism supported only DES keys, so the cryptosystem compatibility
351 question was easy to overlook.
353 Under the current mechanism, no negotiation of algorithm types
354 occurs, so server-side (acceptor) implementations cannot request that
355 clients not use algorithm types not understood by the server.
356 However, administration of the server's Kerberos data (e.g., the
357 service key) has to be done in communication with the KDC, and it is
358 from the KDC that the client will request credentials. The KDC could
359 therefore be given the task of limiting session keys for a given
360 service to types actually supported by the Kerberos and GSSAPI
361 software on the server.
363 This does have a drawback for cases where a service principal name is
364 used both for GSSAPI-based and non-GSSAPI-based communication (most
365 notably the "host" service key), if the GSSAPI implementation does
366 not understand (for example) AES but the Kerberos implementation
367 does. It means that AES session keys cannot be issued for that
368 service principal, which keeps the protection of non-GSSAPI services
369 weaker than necessary.
371 It would also be possible to have clients attempt to get DES session
372 keys before trying to get AES session keys, and have the KDC refuse
373 to issue the DES keys only for the most critical of services, for
374 which DES protection is considered inadequate. However, that would
375 eliminate the possibility of connecting with the more secure
376 cryptosystem to any service that can be accessed with the weaker
377 cryptosystem. We thus recommend the former approach, putting the
378 burden on the KDC administration and gaining the best protection
379 possible for GSSAPI services, possibly at the cost of weaker
380 protection of non-GSSAPI Kerberos services sharing service principal
381 names with GSSAPI services that have not been updated to support this
386 This mechanism extension MUST NOT be used with the DES encryption key
387 types described in [KCRYPTO], which ignore the key usage values.
396 INTERNET DRAFT August 2003
399 6. Implementation Note
401 At least two implementations have been done of extensions to the RFC
402 1964 mechanism for specific non-DES encryption types. These are not
403 standards-track extensions, but implementors may wish to implement
404 them as well for compatibility with existing products. No guidance
405 is provided as to when an implementation may wish to use these non-
406 standard extensions instead of the extension specified in this
409 7. Security Considerations
411 Various tradeoffs arise regarding the mixing of new and old software,
412 or GSSAPI-based and non-GSSAPI Kerberos authentication. They are
413 discussed in section 5.
415 Remember to check direction flag. Key usage numbers and direction
416 checks? Considerations depend on the approach taken....
422 9. Normative References
425 Linn, J., "Generic Security Service Application Program Interface
426 Version 2, Update 1", RFC 2743, January, 2000.
429 Linn, J., "The Kerberos Version 5 GSS-API Mechanism", RFC 1964,
433 draft-ietf-krb-wg-crypto-XX -> RFC xxxx
436 draft-ietf-krb-wg-kerberos-clarifications-XX -> RFC xxxx
452 INTERNET DRAFT August 2003
458 Massachusetts Institute of Technology
459 77 Massachusetts Avenue
462 Full Copyright Statement
464 Copyright (C) The Internet Society (2003). All Rights Reserved.
466 This document and translations of it may be copied and furnished to
467 others, and derivative works that comment on or otherwise explain it
468 or assist in its implementation may be prepared, copied, published
469 and distributed, in whole or in part, without restriction of any
470 kind, provided that the above copyright notice and this paragraph are
471 included on all such copies and derivative works. However, this
472 document itself may not be modified in any way, such as by removing
473 the copyright notice or references to the Internet Society or other
474 Internet organizations, except as needed for the purpose of
475 developing Internet standards in which case the procedures for
476 copyrights defined in the Internet Standards process must be
477 followed, or as required to translate it into languages other than
480 The limited permissions granted above are perpetual and will not be
481 revoked by the Internet Society or its successors or assigns.
483 This document and the information contained herein is provided on an
484 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
485 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
486 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
487 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
488 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."
490 Document Change History
494 Split up Abstract and create a real Introduction. Fix RFC 2026
495 reference in Status section. Added Conventions, Acknowledgements and
496 Implementation Note sections. Updated References with more
497 placeholders. Capitalize some uses of "must" etc.
499 Fill in case of Wrap token without integrity protection, using
500 KERBEROS5-CHECKSUM for SGN_ALG. Fix descriptions of which message
501 layout is used for which algorithms.
508 INTERNET DRAFT August 2003
511 Remove discussion of authenticated encryption with additional data.
513 Add discussion of 64-bit sequence numbers and data length, and
514 alternate handling of the direction flag.
517 Version -XX sent in early 2003 to Kerberos working group: