rfc-7925

Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things

H. Tschofenig (Editor), T. Fossati
date2016-07 streamIETF areasec wgdice statusPROPOSED STANDARD pages61 canonicalhttps://www.rfc-editor.org/rfc/rfc7925 doi10.17487/RFC7925
A common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments. This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery. The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.

Extracted elements (30)

design-rationale §4.4.4

All certificates in this profile (end-entity and CA) are signed using ECDSA exclusively, rather than supporting RSA, DSA, and ECDSA. This reduces the amount of flash memory needed on an IoT device because fewer algorithm implementations must be stored.

tls, pkix, crypto

design-rationale §4.4.3

Certificate revocation via OCSP or CRLs is not used in this profile; instead, revocation relies on a software update mechanism. This avoids the overhead of additional protocol handshakes on constrained devices, though it limits granularity of revocation.

tls, pkix, security

design-rationale §11

The 9-second initial retransmission timeout was chosen over the RFC 6347-recommended 1 second because IoT networks (e.g., IEEE 802.15.4, GSM-SMS) have high latency variance and low bandwidth. It achieves the same worst-case wait time (63 seconds) as a 1-second timeout but triggers fewer than half the retransmissions (2 vs. 5), reducing congestion.

tls, udp

design-rationale §9

The PSK ciphersuite (TLS_PSK_WITH_AES_128_CCM_8) does not offer perfect forward secrecy because it does not use a DH exchange. This is an explicit trade-off: the PSK ciphersuite offers excellent performance, very small memory footprint, and lowest on-wire overhead, making it suitable for the most constrained IoT devices.

tls, crypto, security

design-rationale §8

TLS/DTLS-level compression is disabled following RFC 7525 guidance due to the CRIME attack. For IoT applications, application-layer protocols are already highly optimized, and compression at the DTLS layer only increases code size and complexity without meaningful benefit.

tls, security

interoperability-note §4.3

Named finite-field DH groups (FFDHE-TLS) are not applicable to this profile since it relies exclusively on ECC-based key exchange (ECDHE). The recommended curve at time of writing is secp256r1 with uncompressed points, following CoAP recommendations.

tls, crypto

interoperability-note §4.4.1

The SNI extension cannot be used with constrained servers that are not provisioned with DNS domain names (e.g., local IoT devices identified by EUI-64), because SNI does not offer the ability to convey a 64-bit EUI-64 identifier.

tls

interoperability-note §2

TLS 1.3 is noted as being developed at the time of writing, but the profile defined in this document is not expected to 'just work' with TLS 1.3 due to significant changes in that version. This profile is explicitly scoped to TLS/DTLS 1.2.

tls

normative-requirement §4.4 MUST

A device compliant with the certificate-based profile MUST implement TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 and follow all guidance in Section 4.4. Support for the 'cached_info' extension (RFC 7924) is REQUIRED to reduce handshake overhead from repeated certificate transmission.

tls, crypto, pkix, security

normative-requirement §4.2 MUST

A device compliant with the PSK profile MUST implement TLS_PSK_WITH_AES_128_CCM_8 and follow all guidance in Section 4.2. This ciphersuite uses AES-128 in CCM mode with an 8-octet authentication tag and HMAC-SHA-256 as the PRF.

tls, crypto, security

normative-requirement §4.3 MUST

A device compliant with the raw public key profile MUST implement TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 and follow all guidance in Section 4.3. This ciphersuite uses ECDHE for key establishment and ECDSA for authentication, providing perfect forward secrecy.

tls, crypto, security

normative-requirement §11 RECOMMENDED

An initial DTLS retransmission timer value of 9 seconds with exponential back-off up to no less than 60 seconds is RECOMMENDED. This is chosen to absorb large latency variance from constrained endpoints or network characteristics such as GSM-SMS, while minimizing spurious retransmissions.

tls, udp

normative-requirement §7 MUST

Constrained clients MUST implement session resumption to reduce message exchanges, computational overhead, and bandwidth. When the server is constrained, the client MUST implement RFC 5077 (stateless ticket-based resumption) to avoid requiring per-session state on the server.

tls, security

normative-requirement §6 MUST NOT

Error messages marked as RESERVED (decryption_failed_RESERVED, no_certificate_RESERVED, export_restriction_RESERVED) MUST NOT be used with this profile. The TLS server MUST return decrypt_error instead of unknown_psk_identity for PSK ciphersuites.

tls

normative-requirement §4.4.2 MUST

For client certificates, the identifier used in the SubjectAltName or in the leftmost CN component of subject name MUST be an EUI-64. This applies to all client-side certificate deployments under this profile.

tls, pkix, security

normative-requirement §9 SHOULD NOT

Implementations SHOULD NOT reuse ephemeral DH keys over multiple protocol exchanges. Reuse of ephemeral keys partially defeats perfect forward secrecy and increases the damage extent of a long-term key compromise.

tls, crypto, security

normative-requirement §4.4.4 MUST

IoT devices MUST provide support for a server certificate chain of at least 3 (not including the trust anchor) and MAY reject connections from servers offering chains longer than 3. IoT devices MAY have client certificate chains of any length.

tls, pkix

normative-requirement §4.1 MUST

It MUST be ensured that a different key pair is provisioned for each device and installed in as secure a manner as possible. Generating public/private keys on the IoT device itself is preferable to generating them externally.

crypto, security

normative-requirement §4.2 MUST

PSK identities SHOULD NOT assume a structured format such as domain names or IP addresses, and a byte-by-byte comparison MUST be used by the server for any operation related to the PSK identity. These identifiers are called 'absolute' per RFC 6943.

tls, security

normative-requirement §4.4.1 MUST NOT

Server certificates MUST NOT use DNS domain names in the CN field and must instead use the subjectAltName attribute. Certificates MUST NOT contain wildcard characters and MUST NOT contain multiple names (e.g., more than one dNSName field).

tls, pkix, security

normative-requirement §5 MUST

The client MUST send the 'signature_algorithms' extension to select SHA-256; if absent, RFC 5246 defaults to SHA-1/ECDSA for ECDH_ECDSA and ECDHE_ECDSA key exchange algorithms. This extension is not applicable to PSK-based ciphersuites.

tls, crypto

normative-requirement §4.4.5 MUST

TLS/DTLS clients MUST implement support for client certificate URLs (RFC 6066) for environments where client-side certificates are used and the server-side is not constrained. This extension is NOT RECOMMENDED for constrained servers due to additional workload and DoS risk.

tls, pkix

normative-requirement §8 RECOMMENDED

TLS/DTLS layer compression is NOT RECOMMENDED by this profile. For server-initiated message exchange patterns, the use of the DTLS heartbeat extension (RFC 6520) is RECOMMENDED to maintain NAT and firewall state.

tls, security

privacy-consideration §22

Section 22 addresses privacy considerations for the IoT TLS/DTLS profile. TLS/DTLS handshake metadata (such as certificate identifiers, SNI values, and PSK identities) transmitted in cleartext can reveal device identity and association patterns to observers, which is particularly sensitive for IoT deployments.

tls, privacy, security

protocol-element §4.4.4

Certificate content for this profile is restricted to specific fields defined in Table 1: version (X.509 v3), serialNumber, signature (ecdsa-with-SHA256 or stronger), issuer, validity, subject, subjectPublicKeyInfo (id-ecPublicKey), signatureAlgorithm, signatureValue, subjectAltName, BasicConstraints, Key Usage, and Extended Key Usage.

tls, pkix, crypto

protocol-element §7

Session resumption allows a client to continue with an earlier established session using a reduced handshake with only symmetric cryptography. The server may omit the cookie exchange during resumption, but clients must still be prepared for it. Clients may send an empty session_id to force a full handshake.

tls, security

protocol-element §4.2

The DTLS cookie exchange uses a HelloVerifyRequest message containing a stateless cookie sent by the server, which must be returned in the client's subsequent ClientHello. While optional for the server to initiate, clients MUST be prepared to respond to it to resist flooding/DoS attacks.

tls, udp, security

protocol-element §4

Three credential types are defined for this IoT profile: Pre-Shared Secret (PSK), Raw Public Key (RPK), and Certificates. Each type implies different mandatory-to-implement ciphersuites, configuration preconditions, and trust anchor requirements.

tls, crypto, security

security-consideration §12

IoT devices often lack sources of randomness available on desktop systems (mouse movement, keystroke timing, hard drive turbulence). Insufficient entropy can cause the same keys to be generated repeatedly. Dedicated hardware RNGs or alternative entropy sources must be used, and deriving shared secrets from low-entropy sources such as passwords or device identifiers is not secure.

crypto, security

security-consideration §9

Physical attacks on IoT devices create additional opportunities to compromise long-term cryptographic material. PFS ciphersuites prevent an attacker from decrypting past communications after a key compromise, but this property is undermined if ephemeral DH keys are reused across sessions.

crypto, security