ietf-corpus

rfc-5705

Keying Material Exporters for Transport Layer Security (TLS)

E. Rescorla
date2010-03 streamIETF areasec wgtls statusPROPOSED STANDARD pages7 canonicalhttps://www.rfc-editor.org/rfc/rfc5705 doi10.17487/RFC5705 errataview
A number of protocols wish to leverage Transport Layer Security (TLS) to perform key establishment but then use some of the keying material for their own purposes. This document describes a general mechanism for allowing that. [STANDARDS-TRACK]

updated by

Extracted elements (19)

design-rationale §4

The context value allows applications to mix their own data with the TLS PRF to prevent substitution attacks. For example, when client credentials are valid for more than one identity, the expected identity can be mixed into the keying material via the context value.

tls, crypto, security

design-rationale §1

The mechanism was previously named 'TLS Extractors' but was renamed to 'TLS Exporters' to avoid a name conflict with the use of 'Extractor' in the cryptographic community.

tls

design-rationale §4

The two-formula construction (with and without context) allows interoperability with older exporter-type constructions that do not use context values, such as EAP-TTLSv0 (RFC 5281). The context_value_length field in the PRF input is what distinguishes the two modes.

tls, crypto

interoperability-note §4

The exporter mechanism is compatible with all versions of TLS. The no-context formula enables interoperability with older exporter-type constructions (e.g., RFC 5281) which do not use context values.

tls

interoperability-note §3

Upper-layer context information exchanged in TLS extensions (ClientHello/ServerHello) is protected by Finished messages, ensuring both peers share the same view. However, upper-layer messages embedded in the protocol are not covered by TLS Finished messages and may not automatically secure all important context information.

tls, security

normative-requirement §4 MUST

All exporter label values not beginning with 'EXPERIMENTAL' MUST be registered via Specification Required as described by RFC 5226.

tls, registry

normative-requirement §5 MUST NOT

An attacker who can control the context value MUST NOT be able to predict the output of the exporter, even when allowed to choose multiple (label, context value) pairs and observe their outputs.

tls, security, crypto

normative-requirement §3 REQUIRED

Any application using the exporter must establish the upper-layer context where keying material will be used, and at a minimum there should be some mechanism for signaling that an exporter will be used. The context must include a part indicating which application will use the exported keys.

tls, security

normative-requirement §4 SHOULD

Exporter labels SHOULD begin with 'EXPORTER' to prevent collision with existing PRF labels. This is not a MUST because there are existing uses with labels that do not begin with this prefix.

tls

normative-requirement §6 MUST

IANA MUST verify that one registered exporter label is not a prefix of any other label. For example, labels 'key' or 'master secretary' are forbidden.

tls, registry

normative-requirement §6 MUST NOT

The reserved labels 'client finished', 'server finished', 'master secret', and 'key expansion' MUST NOT be used for the exporter purpose described in RFC 5705, to avoid confusion with their use in RFC 5246.

tls, registry

protocol-element §4

Labels are ASCII strings with no terminating NULL, following the same definition as TLS PRF labels. Label values beginning with 'EXPERIMENTAL' MAY be used for private use without registration.

tls, registry

protocol-element §4

The TLS keying material exporter (EKM) takes three inputs: a disambiguating label string, a per-association context value provided by the application, and a length value. It outputs a pseudorandom bit string derived from the TLS master_secret via the PRF.

tls, crypto

registry §6

IANA created a 'TLS Exporter Label' registry. Initial entries include 'client finished', 'server finished', 'master secret', 'key expansion' (all from RFC 5246, reserved), 'client EAP encryption' (RFC 5216), 'ttls keying material', and 'ttls challenge' (RFC 5281). Future values use the Specification Required policy.

tls, registry

security-consideration §5

Because an exporter produces the same value when applied twice with the same label to the same master_secret, two EKM values generated with the same label MUST NOT be used for two different purposes — hence the requirement for IANA registration.

tls, security, registry

security-consideration §5

The prime security requirement is that exporter outputs be independent: after a TLS session, an adversary given outputs for chosen (label, context value) pairs must be unable to distinguish exporter output for any other pair from a random value. An attacker without the master secret must not distinguish valid exporter outputs from random values.

tls, security, crypto

security-consideration §5

With RSA key exchange, a malicious party acting as TLS server in one session and TLS client in another can cause both sessions to share the same TLS master secret. Applications using EKM must consider this; requiring Diffie-Hellman key exchange cipher suites may be advisable.

tls, security, crypto

wire-format §4

When a context value is provided, the exporter computes PRF(master_secret, label, client_random + server_random + context_value_length + context_value)[length]. The context_value_length is encoded as an unsigned 16-bit quantity (uint16). The context MAY be zero length.

tls, crypto

wire-format §4

When no context is provided, the exporter computes PRF(master_secret, label, client_random + server_random)[length]. This construction allows interoperability with older exporter-type constructions that do not use context values.

tls, crypto