| < draft-burgin-kerberos-aes-cbc-hmac-sha2-01.txt | draft-burgin-kerberos-aes-cbc-hmac-sha2-02.txt > | |||
|---|---|---|---|---|
| Network Working Group K.W. Burgin | Network Working Group K. Burgin | |||
| Internet Draft National Security Agency | Internet Draft National Security Agency | |||
| Intended Status: Standards Track M.A. Peck | Intended Status: Informational M. Peck | |||
| Expires: January 12, 2012 The MITRE Corporation | Expires: April 22, 2013 The MITRE Corporation | |||
| July 11, 2011 | October 19, 2012 | |||
| AES-CBC Mode with HMAC-SHA2 For Kerberos 5 | AES Encryption with HMAC-SHA2 for Kerberos 5 | |||
| draft-burgin-kerberos-aes-cbc-hmac-sha2-01 | draft-burgin-kerberos-aes-cbc-hmac-sha2-02 | |||
| Abstract | Abstract | |||
| This document specifies two encryption types and two corresponding | This document specifies two encryption types and two corresponding | |||
| checksum types for Kerberos 5. The new types use AES in CBC mode | checksum types for Kerberos 5. The new types use AES in CBC mode | |||
| with PKCS#5 padding for confidentiality and HMAC with a SHA-2 hash | with ciphertext stealing for confidentiality and HMAC with a SHA-2 | |||
| for integrity. | hash for integrity. | |||
| Status of this Memo | Status of this Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on January 12, 2012. | This Internet-Draft will expire on February 21, 2013. | |||
| Copyright and License Notice | Copyright and License Notice | |||
| Copyright (c) 2011 IETF Trust and the persons identified as the | Copyright (c) 2012 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Conventions used in this Document . . . . . . . . . . . . . . 3 | 2. Conventions used in this Document . . . . . . . . . . . . . . 3 | |||
| 3. Protocol Key Representation . . . . . . . . . . . . . . . . . 3 | 3. Protocol Key Representation . . . . . . . . . . . . . . . . . 3 | |||
| 4. Key Generation from Pass Phrases . . . . . . . . . . . . . . . 3 | 4. Key Generation from Pass Phrases . . . . . . . . . . . . . . . 3 | |||
| 5. Key Derivation Function . . . . . . . . . . . . . . . . . . . 4 | 5. Key Derivation Function . . . . . . . . . . . . . . . . . . . 4 | |||
| 6. Kerberos Algorithm Protocol Parameters . . . . . . . . . . . . 5 | 6. Kerberos Algorithm Protocol Parameters . . . . . . . . . . . . 5 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
| 9 References . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 9.1 Normative References . . . . . . . . . . . . . . . . . . . 8 | 9.1. Normative References . . . . . . . . . . . . . . . . . . . 8 | |||
| 9.2 Informative References . . . . . . . . . . . . . . . . . . 9 | 9.2. Informative References . . . . . . . . . . . . . . . . . . 9 | |||
| Appendix A. AES-CBC Test Vectors . . . . . . . . . . . . . . . . 9 | Appendix A. AES-CBC Test Vectors . . . . . . . . . . . . . . . . 9 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 9 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 1 Introduction | 1. Introduction | |||
| This document defines two encryption types and two corresponding | This document defines two encryption types and two corresponding | |||
| checksum types for Kerberos 5 using AES with 128-bit or 256-bit keys. | checksum types for Kerberos 5 using AES with 128-bit or 256-bit keys. | |||
| The new types conform to the framework specified in [RFC3961], but | The new types conform to the framework specified in [RFC3961], but do | |||
| do not use the simplified profile. | not use the simplified profile. | |||
| The new encryption types use AES in CBC mode, but do not use | The new encryption types use AES in CBC mode with ciphertext stealing | |||
| ciphertext stealing as in [RFC3962]. Instead, the messages are | similar to [RFC3962] but with several variations. | |||
| padded to a multiple of the AES block size as described in Section | ||||
| 6.3 of [RFC5652]. | ||||
| The new types use the PBKDF2 algorithm for key generation from | The new types use the PBKDF2 algorithm for key generation from | |||
| strings, with a modification to the use in [RFC3962] that the hash | strings, with a modification to the use in [RFC3962] that the hash | |||
| algorithm in the pseudorandom function used by PBKDF2 will be SHA-256 | algorithm in the pseudorandom function used by PBKDF2 will be SHA-256 | |||
| instead of SHA-1. | instead of SHA-1. | |||
| The new types use key derivation to produce keys for encryption, | The new types use key derivation to produce keys for encryption, | |||
| integrity protection, and checksum operations as in [RFC3962]. | integrity protection, and checksum operations as in [RFC3962]. | |||
| However, a key derivation function from [SP800-108] which uses the | However, a key derivation function from [SP800-108] which uses the | |||
| SHA-256 or SHA-384 hash algorithm is used in place of the DK key | SHA-256 or SHA-384 hash algorithm is used in place of the DK key | |||
| derivation function used in [RFC3961]. | derivation function used in [RFC3961]. | |||
| The new types use the HMAC algorithm with a hash from the SHA-2 | The new types use the HMAC algorithm with a hash from the SHA-2 | |||
| family for integrity protection and checksum operations. | family for integrity protection and checksum operations. | |||
| 2. Conventions used in this Document | 2. Conventions used in this Document | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| 3. Protocol Key Representation | 3. Protocol Key Representation | |||
| The AES key space is dense, so we can use random or pseudorandom | The AES key space is dense, so we can use random or pseudorandom | |||
| octet strings directly as keys. The byte representation for the key | octet strings directly as keys. The byte representation for the key | |||
| is described in [FIPS197], where the first bit of the bit string is | is described in [FIPS197], where the first bit of the bit string is | |||
| the high bit of the first byte of the byte string (octet string). | the high bit of the first byte of the byte string (octet string). | |||
| 4. Key Generation from Pass Phrases | 4. Key Generation from Pass Phrases | |||
| skipping to change at page 4, line 14 ¶ | skipping to change at page 4, line 13 ¶ | |||
| information such as the principal's realm and name components. | information such as the principal's realm and name components. | |||
| * The final key derivation step uses the algorithm KDF-HMAC-SHA2 | * The final key derivation step uses the algorithm KDF-HMAC-SHA2 | |||
| defined below in Section 5 instead of the DK function. | defined below in Section 5 instead of the DK function. | |||
| * If no string-to-key parameters are specified, the default number | * If no string-to-key parameters are specified, the default number | |||
| of iterations is raised to 32,768. | of iterations is raised to 32,768. | |||
| To ensure that different long-term keys are used with different | To ensure that different long-term keys are used with different | |||
| enctypes, we prepend the enctype name to the salt string, separated | enctypes, we prepend the enctype name to the salt string, separated | |||
| by a null byte. The enctype name is "aes128-cbc-hmac-sha256-128" or | by a null byte. The enctype name is "aes128-cts-hmac-sha256-128" or | |||
| "aes256-cbc-hmac-sha384-192" (without the quotes). The user's long- | "aes256-cts-hmac-sha384-192" (without the quotes). The user's long- | |||
| term key is derived as follows | term key is derived as follows | |||
| saltp = enctype-name | 0x00 | salt | saltp = enctype-name | 0x00 | salt | |||
| tkey = random2key(PBKDF2(passphrase, saltp, | tkey = random-to-key(PBKDF2(passphrase, saltp, | |||
| iter_count, keylength)) | iter_count, keylength)) | |||
| key = KDF-HMAC-SHA2(tkey, "kerberos") where "kerberos" is the | key = KDF-HMAC-SHA2(tkey, "kerberos") where "kerberos" is the | |||
| byte string {0x6b 0x65 0x72 0x62 0x65 0x72 0x6f 0x73}. | byte string {0x6b 0x65 0x72 0x62 0x65 0x72 0x6f 0x73}. | |||
| where the pseudorandom function used by PBKDF2 is the SHA-256 HMAC of | where the pseudorandom function used by PBKDF2 is the SHA-256 HMAC of | |||
| the passphrase and salt, the value for keylength is the AES key | the passphrase and salt, the value for keylength is the AES key | |||
| length, and the algorithm KDF-HMAC-SHA2 is defined in Section 5. | length, and the algorithm KDF-HMAC-SHA2 is defined in Section 5. | |||
| 5. Key Derivation Function | 5. Key Derivation Function | |||
| We use a key derivation function from Section 5.1 of [SP800-108] | We use a key derivation function from Section 5.1 of [SP800-108] | |||
| which uses the HMAC algorithm as the PRF. The counter i is expressed | which uses the HMAC algorithm as the PRF. The counter i is expressed | |||
| as four octets in big-endian order. The length of the output key in | as four octets in big-endian order. The length of the output key in | |||
| bits (denoted as k) is also represented as four octets in big-endian | bits (denoted as k) is also represented as four octets in big-endian | |||
| order. The "Label" input to the KDF is the usage constant supplied | order. The "Label" input to the KDF is the usage constant supplied | |||
| to the key derivation function, and the "Context" input is null. | to the key derivation function, and the "Context" input is null. | |||
| When the encryption type is aes128-cbc-hmac-sha256-128: | When the encryption type is aes128-cts-hmac-sha256-128: | |||
| n = 1 | n = 1 | |||
| K1 = HMAC-SHA-256(key, 00 00 00 01 | constant | 0x00 | 00 00 00 80) | K1 = HMAC-SHA-256(key, 00 00 00 01 | constant | 0x00 | 00 00 00 80) | |||
| DR(key, constant) = First 128 bits of K1 | DR(key, constant) = First 128 bits of K1 | |||
| KDF-HMAC-SHA2(key, constant) = random-to-key(DR(key, constant)) | KDF-HMAC-SHA2(key, constant) = random-to-key(DR(key, constant)) | |||
| When the encryption type is aes256-cbc-hmac-sha384-192: | When the encryption type is aes256-cts-hmac-sha384-192: | |||
| n = 1 | n = 1 | |||
| K1 = HMAC-SHA-384(key, 00 00 00 01 | constant | 0x00 | 00 00 01 00) | K1 = HMAC-SHA-384(key, 00 00 00 01 | constant | 0x00 | 00 00 01 00) | |||
| DR(key, constant) = First 256 bits of K1 | DR(key, constant) = First 256 bits of K1 | |||
| KDF-HMAC-SHA2(key, constant) = random-to-key(DR(key, constant)) | KDF-HMAC-SHA2(key, constant) = random-to-key(DR(key, constant)) | |||
| 6. Kerberos Algorithm Protocol Parameters | 6. Kerberos Algorithm Protocol Parameters | |||
| The following parameters apply to the encryption types aes128-cbc- | The following parameters apply to the encryption types aes128-cts- | |||
| hmac-sha256-128 and aes256-cbc-hmac-sha384-192. | hmac-sha256-128 and aes256-cts-hmac-sha384-192. | |||
| The key-derivation function described in the previous section is used | The key-derivation function described in the previous section is used | |||
| to produce the three intermediate keys. CBC mode [SP800-38A] | to produce the three intermediate keys. Typically, CBC mode [SP800- | |||
| requires the input be padded to a multiple of the encryption | 38A] requires the input be padded to a multiple of the encryption | |||
| algorithm block size, which is 128 bits for AES. The input will be | algorithm block size, which is 128 bits for AES. However, to avoid | |||
| padded as described in Section 6.3 of [RFC5652] in which the value of | ciphertext expansion, we use the CBC-CS3 variant to CBC mode defined | |||
| each added octet equals the number of octets that are added. | in [SP800-38A+]. | |||
| Each encryption will use a freshly generated 16-octet initialization | Each encryption will use a freshly generated 16-octet nonce generated | |||
| vector generated at random by the message originator. | at random by the message originator. The initialization vector (IV) | |||
| used by AES is obtained by xoring the random nonce with the | ||||
| cipherstate. | ||||
| The ciphertext is the concatenation of the initialization vector, the | The ciphertext is the concatenation of the random nonce, the output | |||
| output of AES in CBC mode, and the HMAC of the plaintext and padding | of AES in CBC-CS3 mode, and the HMAC of the initialization vector | |||
| using either SHA-256 or SHA-384. The output of SHA-256 is truncated | concatenated with the AES output. The HMAC is computed using either | |||
| to 128 bits and the output of SHA-384 is truncated to 192 bits. | SHA-256 or SHA-384. The output of SHA-256 is truncated to 128 bits | |||
| Sample test vectors are given in Appendix A. | and the output of SHA-384 is truncated to 192 bits. Sample test | |||
| vectors are given in Appendix A. | ||||
| Decryption is performed by removing the HMAC, decrypting the | Decryption is performed by removing the HMAC, verifying the HMAC | |||
| remainder, verifying the HMAC, and verifying and removing the | against the remainder, and then decrypting the remainder if the HMAC | |||
| padding. | is correct. | |||
| The encryption and checksum mechanisms below use the following | The encryption and checksum mechanisms below use the following | |||
| notation from [RFC3961]. | notation from [RFC3961]. | |||
| HMAC output size, h | HMAC output size, h | |||
| message block size, m | message block size, m | |||
| encryption/decryption functions, E and D | encryption/decryption functions, E and D | |||
| cipher block size, c | cipher block size, c | |||
| Encryption Mechanism for AES-CBC-HMAC-SHA2 | Encryption Mechanism for AES-CBC-HMAC-SHA2 | |||
| skipping to change at page 5, line 50 ¶ | skipping to change at page 6, line 4 ¶ | |||
| protocol key format 128- or 256-bit string | protocol key format 128- or 256-bit string | |||
| specific key structure Three protocol-format keys: { Kc, Ke, Ki }. | specific key structure Three protocol-format keys: { Kc, Ke, Ki }. | |||
| required checksum As defined below. | required checksum As defined below. | |||
| mechanism | mechanism | |||
| key-generation seed key size (128 or 256 bits) | key-generation seed key size (128 or 256 bits) | |||
| length | length | |||
| cipher state Random nonce of length c (128 bits) | ||||
| cipher state Initial vector of length c (128 bits) | ||||
| initial cipher state All bits zero | initial cipher state All bits zero | |||
| encryption function N = random nonce of length c (128 bits) | encryption function N = random nonce of length c (128 bits) | |||
| IV = N + cipherState (+ denotes XOR) | ||||
| pad = Shortest string of non-zero length to | C = E(Ke, plaintext, IV) | |||
| bring plaintext to a length that is a | using CBC-CS3-Encrypt defined | |||
| multiple of m. The value of each added | in [SP800-38A+] | |||
| octet equals the number of octets that | H = HMAC(Ki, N | C) | |||
| are added. | ||||
| N1 = N + cipherState (+ denotes XOR) | ||||
| C = E(Ke, plaintext | pad, N1) | ||||
| H = HMAC(Ki, N | plaintext | pad) | ||||
| ciphertext = N | C | H[1..h] | ciphertext = N | C | H[1..h] | |||
| cipherState = N | cipherState = N | |||
| decryption function (N,C,H) = ciphertext | decryption function (N, C, H) = ciphertext | |||
| (P, pad) = D(Ke, C, N + cipherState) | if (H != HMAC(Ki, N | C)[1..h]) | |||
| if (H != HMAC(Ki, N | P | pad)[1..h] | stop, report error | |||
| or pad is bad) | IV = N + cipherState (+ denotes XOR) | |||
| report error | P = D(Ke, C, IV) | |||
| using CBC-CS3-Decrypt defined | ||||
| in [SP800-38A+] | ||||
| cipherState = N | cipherState = N | |||
| pseudo-random function Kp = KDF-HMAC-SHA2(protocol-key, "prf") | pseudo-random function Kp = KDF-HMAC-SHA2(protocol-key, "prf") | |||
| PRF = HMAC(Kp, octet-string) | PRF = HMAC(Kp, octet-string) | |||
| key generation functions: | key generation functions: | |||
| string-to-key function tkey = random2key(PBKDF2(passphrase, saltp, | string-to-key function tkey = random-to-key(PBKDF2(passphrase, saltp, | |||
| iter_count, | iter_count, | |||
| keylength)) | keylength)) | |||
| base-key = KDF-HMAC-SHA2(tkey, "kerberos") | base-key = KDF-HMAC-SHA2(tkey, "kerberos") | |||
| where the pseudorandom function used by PBKDF2 | where the pseudorandom function used by PBKDF2 | |||
| is the SHA-256 HMAC of the passphrase and salt | is the SHA-256 HMAC of the passphrase and salt | |||
| default string-to-key 00 00 80 00 | default string-to-key 00 00 80 00 | |||
| parameters | parameters | |||
| random-to-key function identity function | random-to-key function identity function | |||
| key-derivation function KDF-HMAC-SHA2 as defined in Section 5. The | key-derivation function KDF-HMAC-SHA2 as defined in Section 5. The | |||
| key usage number is expressed as four octets | key usage number is expressed as four octets | |||
| in big-endian order. | in big-endian order. | |||
| Kc = KDF-HMAC-SHA2(base-key, usage | 0x99); | Kc = KDF-HMAC-SHA2(base-key, usage | 0x99) | |||
| Ke = KDF-HMAC-SHA2(base-key, usage | 0xAA); | Ke = KDF-HMAC-SHA2(base-key, usage | 0xAA) | |||
| Ki = KDF-HMAC-SHA2(base-key, usage | 0x55); | Ki = KDF-HMAC-SHA2(base-key, usage | 0x55); | |||
| Checksum Mechanism for AES-CBC-HMAC-SHA2 | Checksum Mechanism for AES-CTS-HMAC-SHA2 | |||
| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | |||
| associated cryptosystem AES-128-CBC or AES-256-CBC as appropriate | associated cryptosystem AES-128-CBC or AES-256-CBC as appropriate | |||
| get_mic HMAC(Kc, message)[1..h] | get_mic HMAC(Kc, message)[1..h] | |||
| verify_mic get_mic and compare | verify_mic get_mic and compare | |||
| Using this profile with each key size gives us two each of encryption | Using this profile with each key size gives us two each of encryption | |||
| and checksum algorithm definitions. | and checksum algorithm definitions. | |||
| +--------------------------------------------------------------------+ | +--------------------------------------------------------------------+ | |||
| | encryption types | | | encryption types | | |||
| +--------------------------------------------------------------------+ | +--------------------------------------------------------------------+ | |||
| | type name etype value key size | | | type name etype value key size | | |||
| +--------------------------------------------------------------------+ | +--------------------------------------------------------------------+ | |||
| | aes128-cbc-hmac-sha256-128 TBD1 128 | | | aes128-cts-hmac-sha256-128 TBD1 128 | | |||
| | aes256-cbc-hmac-sha384-192 TBD2 256 | | | aes256-cts-hmac-sha384-192 TBD2 256 | | |||
| +--------------------------------------------------------------------+ | +--------------------------------------------------------------------+ | |||
| +--------------------------------------------------------------------+ | +--------------------------------------------------------------------+ | |||
| | checksum types | | | checksum types | | |||
| +--------------------------------------------------------------------+ | +--------------------------------------------------------------------+ | |||
| | type name sumtype value length | | | type name sumtype value length | | |||
| +--------------------------------------------------------------------+ | +--------------------------------------------------------------------+ | |||
| | hmac-sha256-128-aes128 TBD3 128 | | | hmac-sha256-128-aes128 TBD3 128 | | |||
| | hmac-sha384-192-aes256 TBD4 192 | | | hmac-sha384-192-aes256 TBD4 192 | | |||
| +--------------------------------------------------------------------+ | +--------------------------------------------------------------------+ | |||
| These checksum types will be used with the corresponding encryption | These checksum types will be used with the corresponding encryption | |||
| types defined above. | types defined above. | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| IANA is requested to assign: | IANA is requested to assign: | |||
| 1. Encryption type numbers for aes128-cbc-hmac-sha256-128 and | 1. Encryption type numbers for aes128-cts-hmac-sha256-128 and | |||
| aes256-cbc-hmac-sha384-192 in the Kerberos Encryption Type | aes256-cts-hmac-sha384-192 in the Kerberos Encryption Type | |||
| Numbers registry. | Numbers registry. | |||
| Etype encryption type Reference | Etype encryption type Reference | |||
| ----- --------------- --------- | ----- --------------- --------- | |||
| TBD1 aes128-cbc-hmac-sha256-128 [I.D.burgin-kerberos-aes- | TBD1 aes128-cts-hmac-sha256-128 [I.D.burgin-kerberos-aes- | |||
| cbc-hmac-sha2] | cbc-hmac-sha2] | |||
| TBD2 aes256-cbc-hmac-sha384-192 [I.D.burgin-kerberos-aes- | TBD2 aes256-cts-hmac-sha384-192 [I.D.burgin-kerberos-aes- | |||
| cbc-hmac-sha2] | cbc-hmac-sha2] | |||
| 2. Checksum type numbers for hmac-sha256-128-aes128 and hmac-sha384- | 2. Checksum type numbers for hmac-sha256-128-aes128 and hmac-sha384- | |||
| 192-aes256 in the Kerberos Checksum Type Numbers registry. | 192-aes256 in the Kerberos Checksum Type Numbers registry. | |||
| Sumtype Checksum type Size Reference | Sumtype Checksum type Size Reference | |||
| ------- ------------- ---- --------- | ------- ------------- ---- --------- | |||
| TBD3 hmac-sha256-128-aes128 16 [I.D.burgin-kerberos- | TBD3 hmac-sha256-128-aes128 16 [I.D.burgin-kerberos- | |||
| aes-cbc-hmac-sha2] | aes-cbc-hmac-sha2] | |||
| TBD4 hmac-sha384-192-aes256 24 [I.D.burgin-kerberos- | TBD4 hmac-sha384-192-aes256 24 [I.D.burgin-kerberos- | |||
| aes-cbc-hmac-sha2] | aes-cbc-hmac-sha2] | |||
| 8. Security Considerations | 8. Security Considerations | |||
| Padding oracle attacks were introduced by Vaudenay in [POA]. The | ||||
| attack relies on an oracle that decrypts messages that were encrypted | ||||
| using CBC mode with PKCS#5 padding and returns an answer to the | ||||
| sender about whether the padding is correct. This information allows | ||||
| an attacker to recover the plaintext from an encrypted message | ||||
| through repeated inquiries to the oracle even though the encryption | ||||
| key is never learned by the attacker. The attack can be mitigated by | ||||
| returning a single error type when decryption fails and not | ||||
| distinguishing between failed MAC check and failed padding check. | ||||
| This specification requires implementations to generate random | This specification requires implementations to generate random | |||
| values. The use of inadequate pseudo-random number generators | values. The use of inadequate pseudo-random number generators | |||
| (PRNGs) can result in little or no security. The generation of | (PRNGs) can result in little or no security. The generation of | |||
| quality random numbers is difficult. NIST Special Publication 800-90 | quality random numbers is difficult. NIST Special Publication 800-90 | |||
| [SP800-90] and [RFC4086] offer random number generation guidance. | [SP800-90] and [RFC4086] offer random number generation guidance. | |||
| This document specifies a mechanism for generating keys from pass | This document specifies a mechanism for generating keys from pass | |||
| phrases or passwords. The salt and iteration count resist brute | phrases or passwords. The salt and iteration count resist brute | |||
| force and dictionary attacks, however, it is still important to | force and dictionary attacks, however, it is still important to | |||
| choose or generate strong passphrases. | choose or generate strong passphrases. | |||
| 9 References | 9. References | |||
| 9.1 Normative References | 9.1. Normative References | |||
| [SP800-38A+] National Institute of Standards and Technology, | ||||
| "Recommendation for Block Cipher Modes of Operation: | ||||
| Three Variants of Ciphertext Stealing for CBC Mode", | ||||
| Addendum to NIST Special Publication 800-38A, October | ||||
| 2010. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC3961] Raeburn, K., "Encryption and Checksum Specifications for | [RFC3961] Raeburn, K., "Encryption and Checksum Specifications for | |||
| Kerberos 5", RFC 3961, February 2005. | Kerberos 5", RFC 3961, February 2005. | |||
| [RFC3962] Raeburn, K., "Advanced Encryption Standard (AES) | [RFC3962] Raeburn, K., "Advanced Encryption Standard (AES) | |||
| Encryption for Kerberos 5", RFC 3962, February 2005. | Encryption for Kerberos 5", RFC 3962, February 2005. | |||
| [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | |||
| "Randomness Requirements for Security", BCP 106, | "Randomness Requirements for Security", BCP 106, | |||
| RFC 4086, June 2005. | RFC 4086, June 2005. | |||
| [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD | ||||
| 70, RFC 5652, September 2009. | ||||
| [FIPS197] National Institute of Standards and Technology, | [FIPS197] National Institute of Standards and Technology, | |||
| "Advanced Encryption Standard (AES)", FIPS PUB 197, | "Advanced Encryption Standard (AES)", FIPS PUB 197, | |||
| November 2001. | November 2001. | |||
| 9.2 Informative References | 9.2. Informative References | |||
| [SP800-38A] National Institute of Standards and Technology, | [SP800-38A] National Institute of Standards and Technology, | |||
| "Recommendation for Block Cipher Modes of Operation - | "Recommendation for Block Cipher Modes of Operation - | |||
| Methods and Techniques", NIST Special Publication 800- | Methods and Techniques", NIST Special Publication 800- | |||
| 38A, February 2001. | 38A, February 2001. | |||
| [SP800-90] National Institute of Standards and Technology, | [SP800-90] National Institute of Standards and Technology, | |||
| Recommendation for Random Number Generation Using | Recommendation for Random Number Generation Using | |||
| Deterministic Random Bit Generators (Revised), NIST | Deterministic Random Bit Generators (Revised), NIST | |||
| Special Publication 800-90, March 2007. | Special Publication 800-90, March 2007. | |||
| skipping to change at page 9, line 34 ¶ | skipping to change at page 9, line 27 ¶ | |||
| [SP800-108] National Institute of Standards and Technology, | [SP800-108] National Institute of Standards and Technology, | |||
| "Recommendation for Key Derivation Using Pseudorandom | "Recommendation for Key Derivation Using Pseudorandom | |||
| Functions", NIST Special Publication 800-108, October | Functions", NIST Special Publication 800-108, October | |||
| 2009. | 2009. | |||
| [SP800-132] National Institute of Standards and Technology, | [SP800-132] National Institute of Standards and Technology, | |||
| "Recommendation for Password-Based Key Derivation, Part | "Recommendation for Password-Based Key Derivation, Part | |||
| 1: Storage Applications", NIST Special Publication 800- | 1: Storage Applications", NIST Special Publication 800- | |||
| 132, June 2010. | 132, June 2010. | |||
| [POA] Vaudenay, Serge, "Security Flaws Induced by CBC Padding | ||||
| Applications to SSL, IPSEC, WTLS...", EUROCRYPT 2002. | ||||
| Appendix A. AES-CBC Test Vectors | Appendix A. AES-CBC Test Vectors | |||
| TBD | TBD | |||
| Authors' Addresses | Authors' Addresses | |||
| Kelley W. Burgin | Kelley W. Burgin | |||
| National Security Agency | National Security Agency | |||
| EMail: kwburgi@tycho.ncsc.mil | EMail: kwburgi@tycho.ncsc.mil | |||
| End of changes. 38 change blocks. | ||||
| 89 lines changed or deleted | 77 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||