rfc-8442

ECDHE_PSK with AES-GCM and AES-CCM Cipher Suites for TLS 1.2 and DTLS 1.2

J. Mattsson, D. Migault
date2018-09 streamIETF areasec wgtls statusPROPOSED STANDARD pages7 canonicalhttps://www.rfc-editor.org/rfc/rfc8442 doi10.17487/RFC8442
This document defines several new cipher suites for version 1.2 of the Transport Layer Security (TLS) protocol and version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. These cipher suites are based on the Ephemeral Elliptic Curve Diffie-Hellman with Pre-Shared Key (ECDHE_PSK) key exchange together with the Authenticated Encryption with Associated Data (AEAD) algorithms AES-GCM and AES-CCM. PSK provides light and efficient authentication, ECDHE provides forward secrecy, and AES-GCM and AES-CCM provide encryption and integrity protection.

Extracted elements (12)

design-rationale §1

ECDHE_PSK cipher suites were created to fill a gap: RFC 4279 defined PSK cipher suites without elliptic curve cryptography, RFC 8422 introduced ECC for TLS without PSK, RFC 5487 combined AES-GCM with PSK but not ECDHE, and RFC 5489 combined PSK with ECDHE but not AES-GCM or AES-CCM. This document unifies all three capabilities.

tls, crypto, security

design-rationale §1

PSK authentication is used in 3GPP networks (authenticating subscribers and networks) and IoT deployments where it is preferred for performance and energy efficiency. ECDHE is included to provide Perfect Forward Secrecy, which is mandatory in HTTP/2 and CoAP.

tls, crypto, security

interoperability-note §3

The assigned code points {0xD0,0x01}–{0xD0,0x05} can only be used for TLS 1.2 and DTLS 1.2. Equivalent functionality for TLS 1.3 is provided by TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_AES_128_CCM_8_SHA256, and TLS_AES_128_CCM_SHA256.

tls, security

normative-requirement §3 MUST

A client MUST treat the selection of these cipher suites in combination with a (D)TLS version other than 1.2 as an error and generate a fatal 'illegal_parameter' TLS alert.

tls, security

normative-requirement §5 MUST

GCM and CCM MUST only be used with a system guaranteeing nonce uniqueness, as reusing a nonce with the same key undermines the security of GCM and CCM.

tls, crypto, security

normative-requirement §3 MUST NOT

The cipher suites defined in this document MUST NOT be negotiated for any version of (D)TLS other than version 1.2. Servers MUST NOT select one of these cipher suites when selecting a (D)TLS version other than version 1.2.

tls, security

normative-requirement §5 MUST

The pre-shared keys used for authentication MUST have a security level equal to or higher than the cipher suite used — at least 128-bit security for AES-128 cipher suites and at least 192-bit security for AES-256 cipher suites.

tls, crypto, security

protocol-element §3

Four new cipher suites are defined for TLS 1.2 and DTLS 1.2: TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256 {0xD0,0x01}, TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384 {0xD0,0x02}, TLS_ECDHE_PSK_WITH_AES_128_CCM_8_SHA256 {0xD0,0x03}, and TLS_ECDHE_PSK_WITH_AES_128_CCM_SHA256 {0xD0,0x05}. These combine ECDHE key exchange with PSK authentication and AEAD encryption.

tls, crypto, security

protocol-element §3

Messages and premaster secret construction follow RFC 5489 (ECDHE_PSK). The ServerKeyExchange and ClientKeyExchange messages are used, and the premaster secret is computed as for the ECDHE_PSK key exchange. Elliptic curve parameters are negotiated using extensions from RFC 8422.

tls, crypto

protocol-element §3

The AEAD algorithms used are AEAD_AES_128_GCM, AEAD_AES_256_GCM, AEAD_AES_128_CCM, and AEAD_AES_128_CCM_8 as defined in RFC 5116 and RFC 6655.

tls, crypto

registry §4

Four new cipher suite values ({0xD0,0x01}, {0xD0,0x02}, {0xD0,0x03}, {0xD0,0x05}) are registered in the 'TLS Cipher Suites' registry defined by RFC 8446 and RFC 8447. TLS_ECDHE_PSK_WITH_AES_128_CCM_8_SHA256 is marked not recommended; the other three are recommended.

tls, registry

security-consideration §5

All cipher suites defined provide confidentiality, mutual authentication, and forward secrecy. AES-128 suites provide 128-bit security and AES-256 suites provide at least 192-bit security, but AES_128_CCM_8 only provides 64-bit security against message forgery.

tls, crypto, security