draft-ietf-tls-rsa-aes-gcm-02.txt   draft-ietf-tls-rsa-aes-gcm-03.txt 
TLS Working Group J. Salowey TLS Working Group J. Salowey
Internet-Draft A. Choudhury Internet-Draft A. Choudhury
Intended status: Standards Track D. McGrew Intended status: Standards Track D. McGrew
Expires: August 10, 2008 Cisco Systems, Inc. Expires: October 16, 2008 Cisco Systems, Inc.
February 7, 2008 April 14, 2008
AES-GCM Cipher Suites for TLS AES-GCM Cipher Suites for TLS
draft-ietf-tls-rsa-aes-gcm-02 draft-ietf-tls-rsa-aes-gcm-03
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 35 skipping to change at page 1, line 35
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."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 10, 2008. This Internet-Draft will expire on October 16, 2008.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2008). Copyright (C) The IETF Trust (2008).
Abstract Abstract
This memo describes the use of the Advanced Encryption Standard (AES) This memo describes the use of the Advanced Encryption Standard (AES)
in Galois/Counter Mode (GCM) as a Transport Layer Security (TLS) in Galois/Counter Mode (GCM) as a Transport Layer Security (TLS)
authenticated encryption operation. GCM provides both authenticated encryption operation. GCM provides both
skipping to change at page 2, line 22 skipping to change at page 2, line 22
3. AES-GCM Cipher Suites . . . . . . . . . . . . . . . . . . . . . 3 3. AES-GCM Cipher Suites . . . . . . . . . . . . . . . . . . . . . 3
4. TLS Versions . . . . . . . . . . . . . . . . . . . . . . . . . 4 4. TLS Versions . . . . . . . . . . . . . . . . . . . . . . . . . 4
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5
6. Security Considerations . . . . . . . . . . . . . . . . . . . . 5 6. Security Considerations . . . . . . . . . . . . . . . . . . . . 5
6.1. Counter Reuse . . . . . . . . . . . . . . . . . . . . . . . 5 6.1. Counter Reuse . . . . . . . . . . . . . . . . . . . . . . . 5
6.2. Recommendations for Multiple Encryption Processors . . . . 5 6.2. Recommendations for Multiple Encryption Processors . . . . 5
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 7 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 6
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 7 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 7
8.1. Normative References . . . . . . . . . . . . . . . . . . . 7 8.1. Normative References . . . . . . . . . . . . . . . . . . . 7
8.2. Informative References . . . . . . . . . . . . . . . . . . 7 8.2. Informative References . . . . . . . . . . . . . . . . . . 7
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 8 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 7
Intellectual Property and Copyright Statements . . . . . . . . . . 9 Intellectual Property and Copyright Statements . . . . . . . . . . 9
1. Introduction 1. Introduction
This document describes the use of AES [AES]in Galois Counter Mode This document describes the use of AES [AES]in Galois Counter Mode
(GCM) [GCM] (AES-GCM) with various key exchange mechanisms as a (GCM) [GCM] (AES-GCM) with various key exchange mechanisms as a
ciphersuite for TLS. AES-GCM is not only efficient and secure, but cipher suite for TLS. AES-GCM is an authenticated encryption with
hardware implementations can achieve high speeds with low cost and associated data (AEAD) cipher (as defined in TLS 1.2
low latency, because the mode can be pipelined. Applications like [I-D.ietf-tls-rfc4346-bis]) providing both confidentiality and data
CAPWAP, which uses DTLS, can benefit from the high-speed origin authentication. The following sections define cipher suites
implementations when wireless termination points (WTPs) and based on RSA, DSS and Diffie-Hellman key exchanges; ECC based cipher
controllers (ACs) have to meet requirements to support higher suites are defined in a separate document [I-D.ietf-tls-ecc-new-mac].
throughputs in the future. AES-GCM has been specified as a mode that
can be used with IPsec ESP [RFC4106] and 802.1AE MAC Security AES-GCM is not only efficient and secure, but hardware
[IEEE8021AE]. This document defines ciphersutes based on RSA, DSS implementations can achieve high speeds with low cost and low
and Diffie-Hellman key exchanges; ECC based ciphersuites are defined latency, because the mode can be pipelined. Applications that
in a separate document [I-D.ietf-tls-ecc-new-mac]. AES-GCM is an require high data throughput can benefit from these high-speed
authenticated encryption with associated data (AEAD) cipher, as implementations. AES-GCM has been specified as a mode that can be
defined in TLS 1.2 [I-D.ietf-tls-rfc4346-bis]. The ciphersuites used with IPsec ESP [RFC4106] and 802.1AE MAC Security [IEEE8021AE].
defined in this draft may be used with Datagram TLS defined in
[RFC4347]. This memo uses GCM in a way similar to
[I-D.ietf-tls-ecc-new-mac].
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 [RFC2119] document are to be interpreted as described in [RFC2119].
3. AES-GCM Cipher Suites 3. AES-GCM Cipher Suites
The following ciphersuites use the new authenticated encryption modes The following cipher suites use the new authenticated encryption
defined in TLS 1.2 with AES in Galois Counter Mode (GCM) [GCM]: modes defined in TLS 1.2 with AES in Galois Counter Mode (GCM) [GCM]:
CipherSuite TLS_RSA_WITH_AES_128_GCM_SHA256 = {TBD,TBD} CipherSuite TLS_RSA_WITH_AES_128_GCM_SHA256 = {TBD,TBD}
CipherSuite TLS_RSA_WITH_AES_256_GCM_SHA384 = {TBD,TBD} CipherSuite TLS_RSA_WITH_AES_256_GCM_SHA384 = {TBD,TBD}
CipherSuite TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 = {TBD,TBD} CipherSuite TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 = {TBD,TBD}
CipherSuite TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = {TBD,TBD} CipherSuite TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = {TBD,TBD}
CipherSuite TLS_DH_RSA_WITH_AES_128_GCM_SHA256 = {TBD,TBD} CipherSuite TLS_DH_RSA_WITH_AES_128_GCM_SHA256 = {TBD,TBD}
CipherSuite TLS_DH_RSA_WITH_AES_256_GCM_SHA384 = {TBD,TBD} CipherSuite TLS_DH_RSA_WITH_AES_256_GCM_SHA384 = {TBD,TBD}
CipherSuite TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 = {TBD,TBD} CipherSuite TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 = {TBD,TBD}
CipherSuite TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 = {TBD,TBD} CipherSuite TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 = {TBD,TBD}
CipherSuite TLS_DH_DSS_WITH_AES_128_GCM_SHA256 = {TBD,TBD} CipherSuite TLS_DH_DSS_WITH_AES_128_GCM_SHA256 = {TBD,TBD}
CipherSuite TLS_DH_DSS_WITH_AES_256_GCM_SHA384 = {TBD,TBD} CipherSuite TLS_DH_DSS_WITH_AES_256_GCM_SHA384 = {TBD,TBD}
CipherSuite TLS_DH_anon_WITH_AES_128_GCM_SHA256 = {TBD,TBD} CipherSuite TLS_DH_anon_WITH_AES_128_GCM_SHA256 = {TBD,TBD}
CipherSuite TLS_DH_anon_WITH_AES_256_GCM_SHA384 = {TBD,TBD} CipherSuite TLS_DH_anon_WITH_AES_256_GCM_SHA384 = {TBD,TBD}
These ciphersuites use the AES-GCM authenticated encryption with These ciphersuites use the AES-GCM authenticated encryption with
associated data (AEAD) algorithms AEAD_AES_128_GCM and associated data (AEAD) algorithms AEAD_AES_128_GCM and
AEAD_AES_256_GCM described in [RFC5116]. Note that each of these AEAD_AES_256_GCM described in [RFC5116]. Note that each of these
AEAD algorithms uses a 128-bit authentication tag with GCM. The AEAD algorithms uses a 128-bit authentication tag with GCM. The
"nonce" SHALL be 12 bytes long and it is "partially implicit" (see "nonce" SHALL be 12 bytes long consisting of two parts as follows:
section 3.2.1 in [RFC5116]). Part of the nonce is generated as part (this is an example of a "partially explicit" nonce; see section
of the handshake process and is static for the entire session and the 3.2.1 in [RFC5116]).
other part is carried in each packet.
Struct{ struct{
opaque salt[4]; opaque salt[4];
opaque explicit_nonce_part[8]; opaque nonce_explicit[8];
} GCMNonce } GCMNonce;
The salt is the "implicit" part of the nonce and is not sent in the The salt is the "implicit" part of the nonce and is not sent in the
packet. It is either the client_write_IV if the client is sending or packet. Instead the salt is generated as part of the handshake
the server_write_IV if the server is sending. These IVs SHALL be 4 process: it is either the client_write_IV (when the client is
bytes long, therefore, for all the algorithms defined in this sending) or the server_write_IV (when the server is sending). The
section, SecurityParameters.fixed_iv_length=4. salt length (SecurityParameters.fixed_iv_length) is 4 octets.
The explicit_nonce_part is chosen by the sender and included in the The nonce_explicit is the "explicit" part of the nonce. It is chosen
packet. Each value of the explicit_nonce_part MUST be distinct for by the sender and is carried in each TLS record in the
each distinct invocation of GCM encrypt function for any fixed key. GenericAEADCipher.nonce_explicit field. The nonce_explicit length
Failure to meet this uniqueness requirement can significantly degrade (SecurityParameters.record_iv_length) is 8 octets.
security. The explicit_nonce_part is carried in the IV field of the
GenericAEADCipher structure. For all the algorithms defined in this
section, SecurityParameters.record_iv_length=8.
In the case of TLS the explicit_nonce_part MAY be the 64-bit sequence Each value of the nonce_explicit MUST be distinct for each distinct
number. In the case of Datagram TLS [RFC4347] the invocation of GCM encrypt function for any fixed key. Failure to
explicit_nonce_part MAY be formed from the concatenation of the 16- meet this uniqueness requirement can significantly degrade security.
bit epoch with the 48-bit DTLS seq_num. The nonce_explicit MAY be the 64-bit sequence number.
The RSA, DHE_RSA, DH_RSA, DHE_DSS, DH_DSS, and DH_anon key exchanges The RSA, DHE_RSA, DH_RSA, DHE_DSS, DH_DSS, and DH_anon key exchanges
are performed as defined in [I-D.ietf-tls-rfc4346-bis]. are performed as defined in [I-D.ietf-tls-rfc4346-bis].
The PRF algorithms SHALL be as follows: The PRF algorithms SHALL be as follows:
For ciphersuites ending in _SHA256 the hash function is SHA256. For cipher suites ending with _SHA256, the PRF is the TLS PRF
[I-D.ietf-tls-rfc4346-bis] with SHA-256 as the hash function.
For ciphersuites ending in _SHA384 the hash function is SHA384. For cipher suites ending with _SHA384, the PRF is the TLS PRF
[I-D.ietf-tls-rfc4346-bis] with SHA-384 as the hash function.
Implementations MUST send TLS Alert bad_record_mac for all types of
failures encountered in processing the AES-GCM algorithm.
4. TLS Versions 4. TLS Versions
These ciphersuites make use of the authenticated encryption with These ciphersuites make use of the authenticated encryption with
additional data defined in TLS 1.2 [I-D.ietf-tls-rfc4346-bis]. They additional data defined in TLS 1.2 [I-D.ietf-tls-rfc4346-bis]. They
MUST NOT be negotiated in older versions of TLS. Clients MUST NOT MUST NOT be negotiated in older versions of TLS. Clients MUST NOT
offer these cipher suites if they do not offer TLS 1.2 or later. offer these cipher suites if they do not offer TLS 1.2 or later.
Servers which select an earlier version of TLS MUST NOT select one of Servers which select an earlier version of TLS MUST NOT select one of
these cipher suites. Because TLS has no way for the client to these cipher suites. Because TLS has no way for the client to
indicate that it supports TLS 1.2 but not earlier, a non-compliant indicate that it supports TLS 1.2 but not earlier, a non-compliant
server might potentially negotiate TLS 1.1 or earlier and select one server might potentially negotiate TLS 1.1 or earlier and select one
of the cipher suites in this document. Clients MUST check the TLS of the cipher suites in this document. Clients MUST check the TLS
version and generate a fatal "illegal_parameter" alert if they detect version and generate a fatal "illegal_parameter" alert if they detect
an incorrect version. an incorrect version.
5. IANA Considerations 5. IANA Considerations
skipping to change at page 5, line 47 skipping to change at page 5, line 44
6.1. Counter Reuse 6.1. Counter Reuse
AES-GCM security requires that the counter is never reused. The IV AES-GCM security requires that the counter is never reused. The IV
construction in Section 3 is designed to prevent counter reuse. construction in Section 3 is designed to prevent counter reuse.
6.2. Recommendations for Multiple Encryption Processors 6.2. Recommendations for Multiple Encryption Processors
If multiple cryptographic processors are in use by the sender, then If multiple cryptographic processors are in use by the sender, then
the sender MUST ensure that, for a particular key, each value of the the sender MUST ensure that, for a particular key, each value of the
explicit_nonce_part used with that key is distinct. In this case nonce_explicit used with that key is distinct. In this case each
each encryption processor SHOULD include in the explicit_nonce_part a encryption processor SHOULD include in the nonce_explicit a fixed
fixed value that is distinct for each processor. The recommended value that is distinct for each processor. The recommended format is
format is
explicit_nonce_part = FixedDistinct || Variable
nonce_explicit = FixedDistinct || Variable
where the FixedDistinct field is distinct for each encryption where the FixedDistinct field is distinct for each encryption
processor, but is fixed for a given processor, and the Variable field processor, but is fixed for a given processor, and the Variable field
is distinct for each distinct nonce used by a particular encryption is distinct for each distinct nonce used by a particular encryption
processor. When this method is used, the FixedDistinct fields used processor. When this method is used, the FixedDistinct fields used
by the different processors MUST have the same length. by the different processors MUST have the same length.
In the terms of Figure 2 in [RFC5116], the Salt is the Fixed-Common In the terms of Figure 2 in [RFC5116], the Salt is the Fixed-Common
part of the nonce (it is fixed, and it is common across all part of the nonce (it is fixed, and it is common across all
encryption processors), the FixedDistinct field exactly corresponds encryption processors), the FixedDistinct field exactly corresponds
to the Fixed-Distinct field, and the Variable field corresponds to to the Fixed-Distinct field, and the Variable field corresponds to
the Counter field, and the explicit part exactly corresponds to the the Counter field, and the explicit part exactly corresponds to the
explicit_nonce_part. nonce_explicit.
For clarity, we provide an example for TLS in which there are two For clarity, we provide an example for TLS in which there are two
distinct encryption processors, each of which uses a one-byte distinct encryption processors, each of which uses a one-byte
FixedDistinct field: FixedDistinct field:
Salt = eedc68dc Salt = eedc68dc
FixedDistinct = 01 (for the first encryption processor) FixedDistinct = 01 (for the first encryption processor)
FixedDistinct = 02 (for the second encryption processor) FixedDistinct = 02 (for the second encryption processor)
The GCMnonces generated by the first encryption processor, and their The GCMnonces generated by the first encryption processor, and their
corresponding explicit_nonce_parts, are: corresponding nonce_explicit, are:
GCMNonce explicit_nonce_part GCMNonce nonce_explicit
------------------------ ---------------------------- ------------------------ ----------------------------
eedc68dc0100000000000000 0100000000000000 eedc68dc0100000000000000 0100000000000000
eedc68dc0100000000000001 0100000000000001 eedc68dc0100000000000001 0100000000000001
eedc68dc0100000000000002 0100000000000002 eedc68dc0100000000000002 0100000000000002
... ...
The GCMnonces generated by the second encryption processor, and their The GCMnonces generated by the second encryption processor, and their
corresponding explicit_nonce_parts, are corresponding nonce_explicit, are
GCMNonce explicit_nonce_part GCMNonce nonce_explicit
------------------------ ---------------------------- ------------------------ ----------------------------
eedc68dc0200000000000000 0200000000000000 eedc68dc0200000000000000 0200000000000000
eedc68dc0200000000000001 0200000000000001 eedc68dc0200000000000001 0200000000000001
eedc68dc0200000000000002 0200000000000002 eedc68dc0200000000000002 0200000000000002
... ...
7. Acknowledgements 7. Acknowledgements
This draft borrows heavily from [I-D.ietf-tls-ecc-new-mac]. The This draft borrows heavily from [I-D.ietf-tls-ecc-new-mac]. The
authors would like to thank Alex Lam and Pasi Eronen for providing authors would like to thank Alex Lam, Simon Josefsson and Pasi Eronen
useful comments during the review of this draft. for providing useful comments during the review of this draft.
8. References 8. References
8.1. Normative References 8.1. Normative References
[AES] National Institute of Standards and Technology, [AES] National Institute of Standards and Technology, "Advanced
"Specification for the Advanced Encryption Standard Encryption Standard (AES)", FIPS 197, November 2001.
(AES)", FIPS 197, November 2001.
[GCM] National Institute of Standards and Technology, [GCM] Dworkin, M., "Recommendation for Block Cipher Modes of
"Recommendation for Block Cipher Modes of Operation: Operation: Galois/Counter Mode (GCM) and GMAC", National
Galois Counter Mode (GCM) for Confidentiality and Institute of Standards and Technology SP 800-38D,
Authentication", SP 800-38D, April 2006. November 2007.
[I-D.ietf-tls-rfc4346-bis] [I-D.ietf-tls-rfc4346-bis]
Dierks, T. and E. Rescorla, "The Transport Layer Security Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", draft-ietf-tls-rfc4346-bis-08 (TLS) Protocol Version 1.2", draft-ietf-tls-rfc4346-bis-10
(work in progress), January 2008. (work in progress), March 2008.
[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.
[RFC4347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
Security", RFC 4347, April 2006.
[RFC5116] McGrew, D., "An Interface and Algorithms for Authenticated [RFC5116] McGrew, D., "An Interface and Algorithms for Authenticated
Encryption", RFC 5116, January 2008. Encryption", RFC 5116, January 2008.
8.2. Informative References 8.2. Informative References
[I-D.ietf-tls-ecc-new-mac] [I-D.ietf-tls-ecc-new-mac]
Rescorla, E., "TLS Elliptic Curve Cipher Suites with SHA- Rescorla, E., "TLS Elliptic Curve Cipher Suites with SHA-
256/384 and AES Galois Counter Mode", 256/384 and AES Galois Counter Mode",
draft-ietf-tls-ecc-new-mac-02 (work in progress), draft-ietf-tls-ecc-new-mac-05 (work in progress),
December 2007. April 2008.
[IEEE8021AE] [IEEE8021AE]
Institute of Electrical and Electronics Engineers, "Media Institute of Electrical and Electronics Engineers, "Media
Access Control Security", IEEE Standard 802.1AE, Access Control Security", IEEE Standard 802.1AE,
August 2006. August 2006.
[RFC4106] Viega, J. and D. McGrew, "The Use of Galois/Counter Mode [RFC4106] Viega, J. and D. McGrew, "The Use of Galois/Counter Mode
(GCM) in IPsec Encapsulating Security Payload (ESP)", (GCM) in IPsec Encapsulating Security Payload (ESP)",
RFC 4106, June 2005. RFC 4106, June 2005.
 End of changes. 30 change blocks. 
76 lines changed or deleted 68 lines changed or added

This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/