1 CAT working group M. Swift
2 Internet Draft J. Brezak
3 Document: draft-brezak-win2k-krb-rc4-hmac-01.txt Microsoft
4 Category: Informational October 1999
7 The Windows 2000 RC4-HMAC Kerberos encryption type
12 This document is an Internet-Draft and is in full conformance with
13 all provisions of Section 10 of RFC2026 [1]. Internet-Drafts are
14 working documents of the Internet Engineering Task Force (IETF), its
15 areas, and its working groups. Note that other groups may also
16 distribute working documents as Internet-Drafts. Internet-Drafts are
17 draft documents valid for a maximum of six months and may be
18 updated, replaced, or obsoleted by other documents at any time. It
19 is inappropriate to use Internet- Drafts as reference material or to
20 cite them other than as "work in progress."
22 The list of current Internet-Drafts can be accessed at
23 http://www.ietf.org/ietf/1id-abstracts.txt
25 The list of Internet-Draft Shadow Directories can be accessed at
26 http://www.ietf.org/shadow.html.
30 The Windows 2000 implementation of Kerberos introduces a new
31 encryption type based on the RC4 encryption algorithm and using an
32 MD5 HMAC for checksum. This is offered as an alternative to using
33 the existing DES based encryption types.
35 The RC4-HMAC encryption types are used to ease upgrade of existing
36 Windows NT environments, provide strong crypto (128-bit key
37 lengths), and provide exportable (meet United States government
38 export restriction requirements) encryption.
40 The Windows 2000 implementation of Kerberos contains new encryption
41 and checksum types for two reasons: for export reasons early in the
42 development process, 56 bit DES encryption could not be exported,
43 and because upon upgrade from Windows NT 4.0 to Windows 2000,
44 accounts will not have the appropriate DES keying material to do the
45 standard DES encryption. Furthermore, 3DES is not available for
46 export, and there was a desire to use a single flavor of encryption
47 in the product for both US and international products.
49 As a result, there are two new encryption types and one new checksum
50 type introduced in Windows 2000.
53 2. Conventions used in this document
57 Swift Category - Informational 1
59 Windows 2000 RC4-HMAC Kerberos E-Type October 1999
62 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
63 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
64 this document are to be interpreted as described in RFC-2119 [2].
68 On upgrade from existing Windows NT domains, the user accounts would
69 not have a DES based key available to enable the use of DES base
70 encryption types specified in RFC 1510. The key used for RC4-HMAC is
71 the same as the existing Windows NT key (NT Password Hash) for
72 compatibility reasons. Once the account password is changed, the DES
73 based keys are created and maintained. Once the DES keys are
74 available DES based encryption types can be used with Kerberos.
76 The RC4-HMAC String to key function is defined as follow:
80 K = MD4(UNICODE(password))
82 The RC4-HMAC keys are generated by using the Windows UNICODE version
83 of the password. Each Windows UNICODE character is encoded in
84 little-endian format of 2 octets each. Then performing an MD4 [6]
85 hash operation on just the UNICODE characters of the password (not
86 including the terminating zero octets).
90 The MD5 HMAC function is defined in [3]. It is used in this
91 encryption type for checksum operations. Refer to [3] for details on
92 its operation. In this document this function is referred to as
93 HMAC(Key, Data) returning the checksum using the specified key on
96 The basic MD5 hash operation is used in this encryption type and
97 defined in [7]. In this document this function is referred to as
98 MD5(Data) returning the checksum of the data.
100 The basic RC4 encryption operation is used in this encryption type
101 and defined in [8]. In this document the function is referred to as
102 RC4(Key, Data) returning the encrypted data using the specified key
105 These encryption types use key derivation as defined in [9] (RFC-
106 1510BIS) in Section titled "Key Derivation". With each message, the
107 message type (T) is used as a component of the keying material.
109 All strings in this document are ASCII unless otherwise specified.
110 The lengths of ASCII encoded character strings include the trailing
111 terminator character (0).
113 The concat(a,b,c,...) function will return the logical concatenation
114 (left to right) of the values of the arguments.
116 Swift Category - Informational 2
118 Windows 2000 RC4-HMAC Kerberos E-Type October 1999
122 The nonce(n) function returns a pseudo-random number of "n" octets.
126 There is one checksum type used in this encryption type. The
127 Kerberos constant for this type is:
128 #define KERB_CHECKSUM_HMAC_MD5 (-138)
130 The function is defined as follows:
133 T - the message type, encoded as a little-endian four byte integer
137 Ksign = HMAC(K, "signature key") //includes zero octet at end
138 tmp = MD5(concat(T, data))
139 CHKSUM = HMAC(Ksign, tmp)
144 There are two encryption types used in these encryption types. The
145 Kerberos constants for these types are:
146 #define KERB_ETYPE_RC4_HMAC 23
147 #define KERB_ETYPE_RC4_HMAC_EXP 24
149 The basic encryption function is defined as follow:
151 T = the message type, encoded as a little-endian four byte integer.
154 if (K.enctype == KERB_ETYPE_RC4_HMAC_EXP)
155 L = concat("fortybits", T) //includes zero octet at
156 //end of string constant
160 Confounder = nonce(8) // get an 8 octet nonce for a confounder
161 Checksum = HMAC(Ksign, concat(Confounder, data))
163 if (K.enctype == KERB_ETYPE_RC4_HMAC_EXP)
164 memset(&Ke[7], 0x0ab, 9)
165 Ke2 = HMAC(Ke, Checksum)
166 data = RC4(Ke2, data)
168 The header field on the encrypted data in KDC messages is:
170 typedef struct _RC4_MDx_HEADER {
173 } RC4_MDx_HEADER, *PRC4_MDx_HEADER;
175 Swift Category - Informational 3
177 Windows 2000 RC4-HMAC Kerberos E-Type October 1999
181 The character constant "fortybits" evolved from the time when a 40-
182 bit key length was all that was exportable from the United States.
183 It is now used to recognize that the key length is of "exportable"
184 length. In this description, the key size is actually 56-bits.
186 7. Key Strength Negotiation
188 A Kerberos client and server can negotiate over key length if they
189 are using mutual authentication. If the client is unable to perform
190 full strength encryption, it may propose a key in the "subkey" field
191 of the authenticator, using a weaker encryption type. The server
192 must then either return the same key or suggest its own key in the
193 subkey field of the AP reply message. The key used to encrypt data
194 is derived from the key returned by the server. If the client is
195 able to perform strong encryption but the server is not, it may
196 propose a subkey in the AP reply without first being sent a subkey
197 in the authenticator.
199 8. GSSAPI Kerberos V5 Mechanism Type
201 8.1 Mechanism Specific Changes
203 The GSSAPI per-message tokens also require new checksum and
204 encryption types. The GSS-API per-message tokens must be changed to
205 support these new encryption types (See [5] Section 1.2.2). The
206 sealing algorithm identifier (SEAL_ALG) for an RC4 based encryption
208 Byte 4..5 SEAL_ALG 0x10 0x00 - RC4
210 The signing algorithm identifier (SGN_ALG) for MD5 HMAC is:
211 Byte 2..3 SGN ALG 0x11 0x00 - HMAC
213 The only support quality of protection is:
214 #define GSS_KRB5_INTEG_C_QOP_DEFAULT 0x0
216 In addition, when using an RC4 based encryption type, the sequence
217 number is sent in big-endian rather than little-endian order.
219 8.2 GSSAPI Checksum Type
221 The GSSAPI checksum type and algorithm is defined in Section 5. Only
222 the first 8 octets of the checksum are used. The resulting checksum
223 is stored in the SGN_CKSUM field (See [5] Section 1.2) for
224 GSS_GetMIC() and GSS_Wrap(conf_flag=FALSE).
226 8.3 GSSAPI Encryption Types
228 There are two encryption types for GSSAPI message tokens, one that
229 is 128 bits in strength, and one that is 56 bits in strength as
230 defined in Section 6.
234 Swift Category - Informational 4
236 Windows 2000 RC4-HMAC Kerberos E-Type October 1999
239 All padding is rounded up to 1 byte. One byte is needed to say that
240 there is 1 byte of padding. The DES based mechanism type uses 8 byte
241 padding. See [5] Section 1.2.2.3.
243 The encryption mechanism used for GSS based messages is as follow:
245 T = the message type, encoded as a little-endian four byte integer.
247 GSS-ENCRYPT(K, T, data)
249 K = XOR(K, 0xf0f0f0f0f0f0f0f0f0f0f0f0f0f0f0)
250 if (K.enctype == KERB_ETYPE_RC4_HMAC_EXP)
251 L = concat("fortybits", T) //includes zero octet at end
256 if (K.enctype == KERB_ETYPE_RC4_HMAC_EXP)
257 memset(&Ke[7], 0x0ab, 9)
259 Data = RC4(Ke2, data)
260 SND_SEQ = RC4(Ke, seq#)
262 The sequence number (SND_SEQ) and IV are used as defined in [5]
265 The character constant "fortybits" evolved from the time when a 40-
266 bit key length was all that was exportable from the United States.
267 It is now used to recognize that the key length is of "exportable"
268 length. In this description, the key size is actually 56-bits.
270 8. Security Considerations
272 Care must be taken in implementing this encryption type because it
273 uses a stream cipher. If a different IV isnÆt used in each direction
274 when using a session key, the encryption is weak. By using the
275 sequence number as an IV, this is avoided.
279 1 Bradner, S., "The Internet Standards Process -- Revision 3", BCP
280 9, RFC 2026, October 1996.
282 2 Bradner, S., "Key words for use in RFCs to Indicate Requirement
283 Levels", BCP 14, RFC 2119, March 1997
285 3 Krawczyk, H., Bellare, M., Canetti, R.,"HMAC: Keyed-Hashing for
286 Message Authentication", RFC 2104, February 1997
288 4 Kohl, J., Neuman, C., "The Kerberos Network Authentication
289 Service (V5)", RFC 1510, September 1993
293 Swift Category - Informational 5
295 Windows 2000 RC4-HMAC Kerberos E-Type October 1999
299 5 Linn, J., "The Kerberos Version 5 GSS-API Mechanism", RFC-1964,
302 6 R. Rivest, "The MD4 Message-Digest Algorithm", RFC-1320, April
305 7 R. Rivest, "The MD5 Message-Digest Algorithm", RFC-1321, April
308 8 RC4 is a proprietary encryption algorithm available under license
309 from RSA Data Security Inc. For licensing information,
311 RSA Data Security, Inc.
313 Redwood City, CA 94065-1031
315 9 Neuman, C., Kohl, J., Ts'o, T., "The Kerberos Network
316 Authentication Service (V5)", draft-ietf-cat-kerberos-revisions-
317 04.txt, June 25, 1999
320 10. Author's Addresses
326 Email: mikesw@microsoft.com
332 Email: jbrezak@microsoft.com
352 Swift Category - Informational 6
354 Windows 2000 RC4-HMAC Kerberos E-Type October 1999
358 11. Full Copyright Statement
360 Copyright (C) The Internet Society (1999). All Rights Reserved.
362 This document and translations of it may be copied and furnished to
363 others, and derivative works that comment on or otherwise explain it
364 or assist in its implementation may be prepared, copied, published
365 and distributed, in whole or in part, without restriction of any
366 kind, provided that the above copyright notice and this paragraph
367 are included on all such copies and derivative works. However, this
368 document itself may not be modified in any way, such as by removing
369 the copyright notice or references to the Internet Society or other
370 Internet organizations, except as needed for the purpose of
371 developing Internet standards in which case the procedures for
372 copyrights defined in the Internet Standards process must be
373 followed, or as required to translate it into languages other than
376 The limited permissions granted above are perpetual and will not be
377 revoked by the Internet Society or its successors or assigns.
379 This document and the information contained herein is provided on an
380 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
381 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
382 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
383 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
384 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."
411 Swift Category - Informational 7