10 Kerberos Working Group K. Raeburn
11 Document: draft-raeburn-krb-rijndael-krb-04.txt MIT
13 expires December 10, 2003
15 AES Encryption for Kerberos 5
19 This document is an Internet-Draft and is in full conformance with
20 all provisions of Section 10 of RFC2026 [RFC2026]. Internet-Drafts
21 are working documents of the Internet Engineering Task Force (IETF),
22 its areas, and its working groups. Note that other groups may also
23 distribute working documents as Internet-Drafts. Internet-Drafts are
24 draft documents valid for a maximum of six months and may be updated,
25 replaced, or obsoleted by other documents at any time. It is
26 inappropriate to use Internet-Drafts as reference material or to cite
27 them other than as "work in progress."
29 The list of current Internet-Drafts can be accessed at
30 http://www.ietf.org/ietf/1id-abstracts.txt
32 The list of Internet-Draft Shadow Directories can be accessed at
33 http://www.ietf.org/shadow.html.
37 Recently the US National Institute of Standards and Technology chose
38 a new Advanced Encryption Standard, which is significantly faster and
39 (it is believed) more secure than the old DES algorithm. This
40 document is a specification for the addition of this algorithm to the
41 Kerberos cryptosystem suite.
43 Comments should be sent to the author, or to the IETF Kerberos
44 working group (ietf-krb-wg@anl.gov).
48 This document defines encryption key and checksum types for Kerberos
49 5 using the AES algorithm recently chosen by NIST. These new types
50 support 128-bit block encryption, and key sizes of 128 or 256 bits.
60 INTERNET DRAFT June 2003
63 Using the "simplified profile" of [KCRYPTO], we can define a pair of
64 encryption and checksum schemes. AES is used with cipher text
65 stealing to avoid message expansion, and SHA-1 [SHA1] is the
66 associated checksum function.
68 2. Conventions Used in this Document
70 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
71 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
72 document are to be interpreted as described in RFC 2119.
74 3. Protocol Key Representation
76 The profile in [KCRYPTO] treats keys and random octet strings as
77 conceptually different. But since the AES key space is dense, we can
78 use any bit string of appropriate length as a key. We use the byte
79 representation for the key described in [AES], where the first bit of
80 the bit string is the high bit of the first byte of the byte string
81 (octet string) representation.
83 4. Key Generation From Pass Phrases or Random Data
85 Given the above format for keys, we can generate keys from the
86 appropriate amounts of random data (128 or 256 bits) by simply
87 copying the input string.
89 To generate an encryption key from a pass phrase and salt string, we
90 use the PBKDF2 function from PKCS #5 v2.0 ([PKCS5]), with parameters
91 indicated below, to generate an intermediate key (of the same length
92 as the desired final key), which is then passed into the DK function
93 with the 8-octet ASCII string "kerberos" as is done for des3-cbc-
94 hmac-sha1-kd in [KCRYPTO]. (In [KCRYPTO] terms, the PBKDF2 function
95 produces a "random octet string", hence the application of the
96 random-to-key function even though it's effectively a simple identity
97 operation.) The resulting key is the user's long-term key for use
98 with the encryption algorithm in question.
100 tkey = random2key(PBKDF2(passphrase, salt, iter_count, keylength))
101 key = DK(tkey, "kerberos")
103 The pseudorandom function used by PBKDF2 will be a SHA-1 HMAC of the
104 passphrase and salt, as described in Appendix B.1 to PKCS#5.
106 The number of iterations is specified by the string-to-key parameters
107 supplied. The parameter string is four octets indicating an unsigned
108 number in big-endian order. This is the number of iterations to be
109 performed. If the value is 00 00 00 00, the number of iterations to
110 be performed is 4294967296 (2**32). (Thus the minimum expressable
116 INTERNET DRAFT June 2003
119 iteration count is 1.)
121 For environments where slower hardware is the norm, implementations
122 may wish to limit the number of iterations to prevent a spoofed
123 response from consuming lots of client-side CPU time; it is
124 recommended that this bound be no less than 50000. Even for
125 environments with fast hardware, 4 billion iterations is likely to
126 take a fairly long time; much larger bounds might still be enforced,
127 and it might be wise for implementations to permit interruption of
128 this operation by the user if the environment allows for it.
130 If the string-to-key parameters are not supplied, the default value
131 to be used is 00 00 b0 00 (decimal 45056, indicating 45056
132 iterations, which takes slightly under 1 second on a 300MHz Pentium
133 II in tests run by the author).
135 Sample test vectors are given in the appendix.
137 5. Cipher Text Stealing
139 Cipher block chaining is used to encrypt messages. Unlike previous
140 Kerberos cryptosystems, we use cipher text stealing to handle the
141 possibly partial final block of the message.
143 Cipher text stealing is described on pages 195-196 of [AC], and
144 section 8 of [RC5]; it has the advantage that no message expansion is
145 done during encryption of messages of arbitrary sizes as is typically
146 done in CBC mode with padding.
148 Cipher text stealing, as defined in [RC5], assumes that more than one
149 block of plain text is available. If exactly one block is to be
150 encrypted, that block is simply encrypted with AES (also known as ECB
151 mode). Input of less than one block is padded at the end to one
152 block; the values of the padding bits are unspecified.
153 (Implementations may use all-zero padding, but protocols should not
154 rely on the result being deterministic. Implementations may use
155 random padding, but protocols should not rely on the result not being
156 deterministic. Note that in most cases, the Kerberos encryption
157 profile will add a random confounder independent of this padding.)
159 For consistency, cipher text stealing is always used for the last two
160 blocks of the data to be encrypted, as in [RC5]. If the data length
161 is a multiple of the block size, this is equivalent to plain CBC mode
162 with the last two cipher text blocks swapped.
164 A test vector is given in the appendix.
172 INTERNET DRAFT June 2003
175 6. Kerberos Algorithm Profile Parameters
177 This is a summary of the parameters to be used with the simplified
178 algorithm profile described in [KCRYPTO]:
180 +--------------------------------------------------------------------+
181 | protocol key format 128- or 256-bit string |
183 | string-to-key function PBKDF2+DK with variable |
184 | iteration count (see |
187 | default string-to-key parameters 00 00 b0 00 |
189 | key-generation seed length key size |
191 | random-to-key function identity function |
193 | hash function, H SHA-1 |
195 | HMAC output size, h 12 octets (96 bits) |
197 | message block size, m 1 octet |
199 | encryption/decryption functions, AES in CBC-CTS mode with |
200 | E and D zero ivec (cipher block |
202 +--------------------------------------------------------------------+
204 Using this profile with each key size gives us two each of encryption
205 and checksum algorithm definitions.
209 The following encryption type numbers are assigned:
211 +--------------------------------------------------------------------+
213 +--------------------------------------------------------------------+
214 | type name etype value key size |
215 +--------------------------------------------------------------------+
216 | aes128-cts-hmac-sha1-96 17 128 |
217 | aes256-cts-hmac-sha1-96 18 256 |
218 +--------------------------------------------------------------------+
220 The following checksum type numbers are assigned:
228 INTERNET DRAFT June 2003
231 +--------------------------------------------------------------------+
233 +--------------------------------------------------------------------+
234 | type name sumtype value length |
235 +--------------------------------------------------------------------+
236 | hmac-sha1-96-aes128 15 96 |
237 | hmac-sha1-96-aes256 16 96 |
238 +--------------------------------------------------------------------+
240 These checksum types will be used with the corresponding encryption
243 8. Security Considerations
245 This new algorithm has not been around long enough to receive the
246 decades of intense analysis that DES has received. It is possible
247 that some weakness exists that has not been found by the
248 cryptographers analyzing these algorithms before and during the AES
251 The use of the HMAC function has drawbacks for certain pass phrase
252 lengths. For example, a pass phrase longer than the hash function
253 block size (64 bytes, for SHA-1) is hashed to a smaller size (20
254 bytes) before applying the main HMAC algorithm. However, entropy is
255 generally sparse in pass phrases, especially in long ones, so this
256 may not be a problem in the rare cases of users with long pass
259 Also, generating a 256-bit key from a pass phrase of any length may
260 be deceptive, since the effective entropy in pass-phrase-derived key
261 cannot be nearly that large.
263 The iteration count in PBKDF2 appears to be useful primarily as a
264 constant multiplier for the amount of work required for an attacker
265 using brute-force methods. Unfortunately, it also multiplies, by the
266 same amount, the work needed by a legitimate user with a valid
267 password. Thus the work factor imposed on an attacker (who may have
268 many powerful workstations at his disposal) must be balanced against
269 the work factor imposed on the legitimate user (who may have a PDA or
270 cell phone); the available computing power on either side increases
271 as time goes on, as well. A better way to deal with the brute-force
272 attack is through preauthentication mechanisms that provide better
273 protection of the user's long-term key. Use of such mechanisms is
274 out of scope for this document.
276 If the PBKDF2 iteration count can be spoofed by an intruder on the
277 network, and the limit on the accepted iteration count is very high,
278 the intruder may be able to introduce a form of denial of service
284 INTERNET DRAFT June 2003
287 attack against the client by sending a very high iteration count,
288 causing the client to spend a great deal of CPU time computing an
291 Any benefit against other attacks specific to the HMAC or SHA-1
292 algorithms is probably achieved with a fairly small number of
295 Cipher text stealing mode, since it requires no additional padding in
296 most cases, will reveal the exact length of each message being
297 encrypted, rather than merely bounding it to a small range of
298 possible lengths as in CBC mode. Such obfuscation should not be
299 relied upon at higher levels in any case; if the length must be
300 obscured from an outside observer, it should be done by intentionally
301 varying the length of the message to be encrypted.
303 The author is not a cryptographer. Caveat emptor.
305 9. IANA Considerations
311 Thanks to John Brezak, Gerardo Diaz Cuellar and Marcus Watts for
312 feedback on earlier versions of this document.
314 A. Sample test vectors
316 Sample values for the PBKDF2 HMAC-SHA1 string-to-key function are
320 Pass phrase = "password"
321 Salt = "ATHENA.MIT.EDUraeburn"
322 128-bit PBKDF2 output:
323 cd ed b5 28 1b b2 f8 01 56 5a 11 22 b2 56 35 15
325 42 26 3c 6e 89 f4 fc 28 b8 df 68 ee 09 79 9f 15
326 256-bit PBKDF2 output:
327 cd ed b5 28 1b b2 f8 01 56 5a 11 22 b2 56 35 15
328 0a d1 f7 a0 4b b9 f3 a3 33 ec c0 e2 e1 f7 08 37
330 fe 69 7b 52 bc 0d 3c e1 44 32 ba 03 6a 92 e6 5b
331 bb 52 28 09 90 a2 fa 27 88 39 98 d7 2a f3 01 61
340 INTERNET DRAFT June 2003
344 Pass phrase = "password"
345 Salt="ATHENA.MIT.EDUraeburn"
346 128-bit PBKDF2 output:
347 01 db ee 7f 4a 9e 24 3e 98 8b 62 c7 3c da 93 5d
349 c6 51 bf 29 e2 30 0a c2 7f a4 69 d6 93 bd da 13
350 256-bit PBKDF2 output:
351 01 db ee 7f 4a 9e 24 3e 98 8b 62 c7 3c da 93 5d
352 a0 53 78 b9 32 44 ec 8f 48 a9 9e 61 ad 79 9d 86
354 a2 e1 6d 16 b3 60 69 c1 35 d5 e9 d2 e2 5f 89 61
355 02 68 56 18 b9 59 14 b4 67 c6 76 22 22 58 24 ff
357 Iteration count = 1200
358 Pass phrase = "password"
359 Salt = "ATHENA.MIT.EDUraeburn"
360 128-bit PBKDF2 output:
361 5c 08 eb 61 fd f7 1e 4e 4e c3 cf 6b a1 f5 51 2b
363 4c 01 cd 46 d6 32 d0 1e 6d be 23 0a 01 ed 64 2a
364 256-bit PBKDF2 output:
365 5c 08 eb 61 fd f7 1e 4e 4e c3 cf 6b a1 f5 51 2b
366 a7 e5 2d db c5 e5 14 2f 70 8a 31 e2 e6 2b 1e 13
368 55 a6 ac 74 0a d1 7b 48 46 94 10 51 e1 e8 b0 a7
369 54 8d 93 b0 ab 30 a8 bc 3f f1 62 80 38 2b 8c 2a
372 Pass phrase = "password"
373 Salt=0x1234567878563412
374 128-bit PBKDF2 output:
375 d1 da a7 86 15 f2 87 e6 a1 c8 b1 20 d7 06 2a 49
377 e9 b2 3d 52 27 37 47 dd 5c 35 cb 55 be 61 9d 8e
378 256-bit PBKDF2 output:
379 d1 da a7 86 15 f2 87 e6 a1 c8 b1 20 d7 06 2a 49
380 3f 98 d2 03 e6 be 49 a6 ad f4 fa 57 4b 6e 64 ee
382 97 a4 e7 86 be 20 d8 1a 38 2d 5e bc 96 d5 90 9c
383 ab cd ad c8 7c a4 8f 57 45 04 15 9f 16 c3 6e 31
384 (This test is based on values given in [PECMS].)
396 INTERNET DRAFT June 2003
399 Iteration count = 1200
400 Pass phrase = (64 characters)
401 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
402 Salt="pass phrase equals block size"
403 128-bit PBKDF2 output:
404 13 9c 30 c0 96 6b c3 2b a5 5f db f2 12 53 0a c9
406 59 d1 bb 78 9a 82 8b 1a a5 4e f9 c2 88 3f 69 ed
407 256-bit PBKDF2 output:
408 13 9c 30 c0 96 6b c3 2b a5 5f db f2 12 53 0a c9
409 c5 ec 59 f1 a4 52 f5 cc 9a d9 40 fe a0 59 8e d1
411 89 ad ee 36 08 db 8b c7 1f 1b fb fe 45 94 86 b0
412 56 18 b7 0c ba e2 20 92 53 4e 56 c5 53 ba 4b 34
414 Iteration count = 1200
415 Pass phrase = (65 characters)
416 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
417 Salt = "pass phrase exceeds block size"
418 128-bit PBKDF2 output:
419 9c ca d6 d4 68 77 0c d5 1b 10 e6 a6 87 21 be 61
421 cb 80 05 dc 5f 90 17 9a 7f 02 10 4c 00 18 75 1d
422 256-bit PBKDF2 output:
423 9c ca d6 d4 68 77 0c d5 1b 10 e6 a6 87 21 be 61
424 1a 8b 4d 28 26 01 db 3b 36 be 92 46 91 5e c8 2a
426 d7 8c 5c 9c b8 72 a8 c9 da d4 69 7f 0b b5 b2 d2
427 14 96 c8 2b eb 2c ae da 21 12 fc ee a0 57 40 1b
430 Pass phrase = g-clef (0xf09d849e)
431 Salt = "EXAMPLE.COMpianist"
432 128-bit PBKDF2 output:
433 6b 9c f2 6d 45 45 5a 43 a5 b8 bb 27 6a 40 3b 39
435 f1 49 c1 f2 e1 54 a7 34 52 d4 3e 7f e6 2a 56 e5
436 256-bit PBKDF2 output:
437 6b 9c f2 6d 45 45 5a 43 a5 b8 bb 27 6a 40 3b 39
438 e7 fe 37 a0 c4 1e 02 c2 81 ff 30 69 e1 e9 4f 52
440 4b 6d 98 39 f8 44 06 df 1f 09 cc 16 6d b4 b8 3c
441 57 18 48 b7 84 a3 d6 bd c3 46 58 9a 3e 39 3f 9e
443 Some test vectors for CBC with cipher text stealing, using an initial
452 INTERNET DRAFT June 2003
456 63 68 69 63 6b 65 6e 20 74 65 72 69 79 61 6b 69
459 49 20 77 6f 75 6c 64 20 6c 69 6b 65 20 74 68 65
462 c6 35 35 68 f2 bf 8c b4 d8 a5 80 36 2d a7 ff 7f
466 49 20 77 6f 75 6c 64 20 6c 69 6b 65 20 74 68 65
467 20 47 65 6e 65 72 61 6c 20 47 61 75 27 73 20
469 fc 00 78 3e 0e fd b2 c1 d4 45 d4 c8 ef f7 ed 22
470 97 68 72 68 d6 ec cc c0 c0 7b 25 e2 5e cf e5
473 49 20 77 6f 75 6c 64 20 6c 69 6b 65 20 74 68 65
474 20 47 65 6e 65 72 61 6c 20 47 61 75 27 73 20 43
476 39 31 25 23 a7 86 62 d5 be 7f cb cc 98 eb f5 a8
477 97 68 72 68 d6 ec cc c0 c0 7b 25 e2 5e cf e5 84
480 49 20 77 6f 75 6c 64 20 6c 69 6b 65 20 74 68 65
481 20 47 65 6e 65 72 61 6c 20 47 61 75 27 73 20 43
482 68 69 63 6b 65 6e 2c 20 70 6c 65 61 73 65 2c
484 97 68 72 68 d6 ec cc c0 c0 7b 25 e2 5e cf e5 84
485 b3 ff fd 94 0c 16 a1 8c 1b 55 49 d2 f8 38 02 9e
486 39 31 25 23 a7 86 62 d5 be 7f cb cc 98 eb f5
489 49 20 77 6f 75 6c 64 20 6c 69 6b 65 20 74 68 65
490 20 47 65 6e 65 72 61 6c 20 47 61 75 27 73 20 43
491 68 69 63 6b 65 6e 2c 20 70 6c 65 61 73 65 2c 20
493 97 68 72 68 d6 ec cc c0 c0 7b 25 e2 5e cf e5 84
494 9d ad 8b bb 96 c4 cd c0 3b c1 03 e1 a1 94 bb d8
495 39 31 25 23 a7 86 62 d5 be 7f cb cc 98 eb f5 a8
508 INTERNET DRAFT June 2003
512 49 20 77 6f 75 6c 64 20 6c 69 6b 65 20 74 68 65
513 20 47 65 6e 65 72 61 6c 20 47 61 75 27 73 20 43
514 68 69 63 6b 65 6e 2c 20 70 6c 65 61 73 65 2c 20
515 61 6e 64 20 77 6f 6e 74 6f 6e 20 73 6f 75 70 2e
517 97 68 72 68 d6 ec cc c0 c0 7b 25 e2 5e cf e5 84
518 39 31 25 23 a7 86 62 d5 be 7f cb cc 98 eb f5 a8
519 48 07 ef e8 36 ee 89 a5 26 73 0d bc 2f 7b c8 40
520 9d ad 8b bb 96 c4 cd c0 3b c1 03 e1 a1 94 bb d8
524 [AC] Schneier, B., "Applied Cryptography", second edition, John Wiley
525 and Sons, New York, 1996.
527 [AES] National Institute of Standards and Technology, U.S. Department
528 of Commerce, "Advanced Encryption Standard", Federal Information
529 Processing Standards Publication 197, Washington, DC, November 2001.
531 [KCRYPTO] Raeburn, K., "Encryption and Checksum Specifications for
532 Kerberos 5", draft-ietf-krb-wg-crypto-01.txt, May, 2002. Work in
535 [PKCS5] Kaliski, B., "PKCS #5: Password-Based Cryptography
536 Specification Version 2.0", RFC 2898, September 2000.
538 [RC5] Baldwin, R, and R. Rivest, "The RC5, RC5-CBC, RC5-CBC-Pad, and
539 RC5-CTS Algorithms", RFC 2040, October 1996.
541 [RFC2026] Bradner, S., "The Internet Standards Process -- Revision
542 3", RFC 2026, October 1996.
544 [SHA1] National Institute of Standards and Technology, U.S.
545 Department of Commerce, "Secure Hash Standard", Federal Information
546 Processing Standards Publication 180-1, Washington, DC, April 1995.
548 Informative References
550 [PECMS] Gutmann, P., "Password-based Encryption for CMS", RFC 3211,
564 INTERNET DRAFT June 2003
570 Massachusetts Institute of Technology
571 77 Massachusetts Avenue
575 Full Copyright Statement
577 Copyright (C) The Internet Society (2003). All Rights Reserved.
579 This document and translations of it may be copied and furnished to
580 others, and derivative works that comment on or otherwise explain it
581 or assist in its implementation may be prepared, copied, published
582 and distributed, in whole or in part, without restriction of any
583 kind, provided that the above copyright notice and this paragraph are
584 included on all such copies and derivative works. However, this
585 document itself may not be modified in any way, such as by removing
586 the copyright notice or references to the Internet Society or other
587 Internet organizations, except as needed for the purpose of
588 developing Internet standards in which case the procedures for
589 copyrights defined in the Internet Standards process must be
590 followed, or as required to translate it into languages other than
593 The limited permissions granted above are perpetual and will not be
594 revoked by the Internet Society or its successors or assigns.
596 This document and the information contained herein is provided on an
597 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
598 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
599 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
600 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
601 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."
605 Assuming this document goes through Last Call along with the Kerberos
606 crypto framework draft, the reference entry for [KCRYPTO] will list
607 the draft name, not the RFC number. This should be replaced with the
610 Remove Kerberos working group contact info from the Abstract; it's
611 right for the draft, but not the final RFC.