RFC 8446

The Transport Layer Security (TLS) Protocol Version 1.3
Standards Track Obsoletes: RFC 5246
August 2018
Abstract: This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery. TLS 1.3 is the mandatory transport security protocol for 5G SBI interfaces.
Canonical source: https://www.rfc-editor.org/rfc/rfc8446  |  IETF Datatracker

1. Introduction

▶

TLS 1.3 is a major revision that removes legacy cryptographic algorithms, reduces handshake latency to 1-RTT (and 0-RTT for resumption), and provides forward secrecy by default via ephemeral Diffie-Hellman key exchange.

In 3GPP 5G networks, TLS 1.3 is the mandatory transport security protocol for all SBI (Service-Based Interface) communications between Network Functions (TS 29.500 §5.2.1), SEPP N32-c signaling, and certificate-based mutual authentication.

2. 3GPP SBI Usage

▶

TLS 1.3 secures all HTTP/2-based SBI communication in the 5G core:

  • NF ↔ NF: All service-based interface communication (Namf, Nsmf, Nausf, etc.) over HTTP/2 + TLS 1.3
  • NF ↔ NRF: NF registration, discovery, and OAuth 2.0 token exchange
  • NF ↔ SCP: Service Communication Proxy for indirect communication (Model C/D)
  • SEPP ↔ SEPP: N32-c control plane between SEPPs uses TLS 1.3
  • Mutual TLS: TS 33.501 §13.1 requires mutual authentication with client certificates
3GPP Mandate: TS 29.500 §5.2.1 requires TLS 1.3 (RFC 8446) for all SBI connections. TLS 1.2 MAY be supported for backward compatibility but TLS 1.3 MUST be the default.

3. Handshake Protocol

▶

TLS 1.3 dramatically simplifies the handshake to a single round trip:

  Client                                  Server
|                                        |
|  ClientHello                            |
|  + key_share (ECDHE)                   |
|  + supported_versions (1.3)            |
|  + signature_algorithms               |
|  + server_name (SNI)                   |
|--------------------------------------->|
|                                        |
|                        ServerHello     |
|                  + key_share (ECDHE)   |
|              {EncryptedExtensions}     |
|              {CertificateRequest*}     |
|              {Certificate}             |
|              {CertificateVerify}       |
|              {Finished}               |
|<---------------------------------------|
|                                        |
|  {Certificate*}                        |
|  {CertificateVerify*}                  |
|  {Finished}                            |
|--------------------------------------->|
|                                        |
|  [Application Data]  <===============> |

4. Cipher Suites

▶

TLS 1.3 drastically reduces the cipher suite space. All cipher suites provide AEAD encryption and are paired with HKDF for key derivation:

Cipher Suite AEAD Hash 3GPP Profile
TLS_AES_128_GCM_SHA256 AES-128-GCM SHA-256 MUST support
TLS_AES_256_GCM_SHA384 AES-256-GCM SHA-384 SHOULD support
TLS_CHACHA20_POLY1305_SHA256 ChaCha20-Poly1305 SHA-256 MAY support
TLS_AES_128_CCM_SHA256 AES-128-CCM SHA-256 MAY (IoT scenarios)
TLS_AES_128_CCM_8_SHA256 AES-128-CCM-8 SHA-256 NOT RECOMMENDED

5. Key Schedule

▶

TLS 1.3 uses HKDF (RFC 5869) for all key derivation, providing a clean key schedule:

  PSK (or 0)                 (EC)DHE (or 0)
|                          |
v                          v
HKDF-Extract ← 0          HKDF-Extract ← Early Secret
|                          |
+→ binder_key               |
+→ client_early_traffic    |
|                          |
v                          v
Derive-Secret(., "derived", "")
|                          |
v                          |
HKDF-Extract ← (EC)DHE -------+
|                     Handshake Secret
+→ client_handshake_traffic_secret
+→ server_handshake_traffic_secret
|
v
Derive-Secret(., "derived", "")
|
v
HKDF-Extract ← 0
|                     Master Secret
+→ client_application_traffic_secret_0
+→ server_application_traffic_secret_0
+→ exporter_master_secret
+→ resumption_master_secret

6. 0-RTT Resumption

▶

TLS 1.3 supports 0-RTT (zero round-trip time) resumption using pre-shared keys from a previous session. Application data can be sent in the first flight.

0-RTT Security Warning: 0-RTT data is NOT forward-secret and is vulnerable to replay attacks. In 5G SBI context, 0-RTT should be used cautiously — TS 33.501 does not mandate 0-RTT and operators should evaluate replay risk for specific NF services.

7. Certificate Requirements for 5G

▶

TS 33.310 and TS 33.501 specify certificate requirements for TLS in 5G:

  • Certificate profiles: X.509v3 with Subject Alternative Name (SAN) containing NF FQDN
  • Signature algorithms: ECDSA with P-256/P-384 (preferred), RSA-PSS with 2048+ bit keys
  • Key exchange: Ephemeral ECDHE with secp256r1 or secp384r1 (MUST support)
  • Certificate chains: Operator CA hierarchy per TS 33.310 §6
  • Revocation: OCSP stapling (RFC 6960) or CRL distribution points

8. Security Considerations

▶
  • Forward secrecy: Mandatory via ephemeral DH — compromise of long-term key does not reveal past sessions
  • Downgrade prevention: Transcript hash in Finished message prevents version downgrade
  • Encrypted handshake: Server certificate and extensions are encrypted (unlike TLS 1.2)
  • Removed: RSA key exchange, static DH, CBC mode, RC4, MD5, SHA-1, compression, renegotiation
  • ALPN: Application-Layer Protocol Negotiation for h2 (HTTP/2) selection in SBI