ietf-corpus

rfc-5288

AES Galois Counter Mode (GCM) Cipher Suites for TLS

J. Salowey, A. Choudhury, D. McGrew
date2008-08 streamIETF areasec wgtls statusPROPOSED STANDARD pages8 canonicalhttps://www.rfc-editor.org/rfc/rfc5288 doi10.17487/RFC5288 errataview
This memo describes the use of the Advanced Encryption Standard (AES) in Galois/Counter Mode (GCM) as a Transport Layer Security (TLS) authenticated encryption operation. GCM provides both confidentiality and data origin authentication, can be efficiently implemented in hardware for speeds of 10 gigabits per second and above, and is also well-suited to software implementations. This memo defines TLS cipher suites that use AES-GCM with RSA, DSA, and Diffie-Hellman-based key exchange mechanisms. [STANDARDS-TRACK]

updated by

Extracted elements (15)

design-rationale §1

AES-GCM was chosen as an AEAD cipher for TLS because it provides both confidentiality and data origin authentication in a single pass, can be pipelined in hardware to achieve 10 Gbps and above, and is also efficient in software implementations.

tls, crypto

design-rationale §3

The nonce structure uses a 'partially explicit' design (per RFC 5116 Section 3.2.1): the 4-byte salt is implicit (derived from the handshake key material) and not transmitted, while the 8-byte nonce_explicit is sender-chosen and carried in each record, balancing bandwidth efficiency with uniqueness guarantees.

tls, crypto

interoperability-note §1

ECC-based AES-GCM cipher suites are explicitly out of scope for this document and are defined separately in RFC 5289.

tls, crypto

interoperability-note §3

The truncated_hmac TLS extension (RFC 4366 Section 3.5) has no effect on these cipher suites because they do not use HMAC; all suites use a 128-bit GCM authentication tag regardless.

tls, crypto

normative-requirement §4 MUST

Clients MUST check the TLS version and generate a fatal 'illegal_parameter' alert if they detect an incorrect version (e.g., a non-compliant server negotiating TLS 1.1 or earlier with one of these suites).

tls, security

normative-requirement §3 MUST

Each value of the nonce_explicit MUST be distinct for each distinct invocation of the GCM encrypt function for any fixed key; failure to meet this uniqueness requirement can significantly degrade security.

tls, crypto, security

normative-requirement §3 REQUIRED

For cipher suites ending with _SHA256, the PRF SHALL be the TLS PRF with SHA-256; for those ending with _SHA384, the PRF SHALL use SHA-384.

tls, crypto

normative-requirement §3 MUST

Implementations MUST send TLS Alert bad_record_mac for all types of failures encountered in processing the AES-GCM algorithm.

tls, crypto

normative-requirement §4 MUST NOT

These cipher suites MUST NOT be negotiated in older versions of TLS; clients MUST NOT offer them if they do not offer TLS 1.2 or later, and servers that select an earlier version MUST NOT select one of these cipher suites.

tls

normative-requirement §6.2 MUST

When multiple encryption processors are used, the FixedDistinct fields used by different processors MUST have the same length to ensure uniform nonce structure.

tls, crypto, security

protocol-element §3

Twelve cipher suites are defined using AES-GCM with RSA, DHE_RSA, DH_RSA, DHE_DSS, DH_DSS, and DH_anon key exchanges, covering both 128-bit and 256-bit AES key sizes, assigned codepoints 0x009C through 0x00A7.

tls, crypto

registry §5

IANA assigned codepoints for 12 new TLS cipher suites: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x00,0x9C) through TLS_DH_anon_WITH_AES_256_GCM_SHA384 (0x00,0xA7) in the TLS Cipher Suite registry.

tls, registry, crypto

security-consideration §6.1

AES-GCM security requires that the counter is never reused; the IV construction in Section 3 (combining a per-handshake salt with a per-record nonce_explicit) is specifically designed to prevent counter reuse.

tls, crypto, security

security-consideration §6.2 MUST

When multiple encryption processors share a key, the sender MUST ensure each nonce_explicit value is distinct across processors; each processor SHOULD embed a fixed distinct sub-field (FixedDistinct) with uniform length, combined with a per-record variable counter.

tls, crypto, security

wire-format §3

The GCM nonce is 12 bytes total, composed of a 4-byte implicit salt (client_write_IV or server_write_IV, not transmitted) concatenated with an 8-byte explicit nonce_explicit carried in each TLS record in GenericAEADCipher.nonce_explicit.

tls, crypto