Foundations ModeDeep Dive Mode

Focusing on conceptual mental models, architectural intuition, and operational workflows. Switch to Deep Dive for byte-level packet frames, RFC structs, and derivation math.Showing comprehensive RFC 8446 packet structures, cryptographic mathematics, and path-building algorithms. Switch to Foundations for high-level conceptual models.

01

Why TLS Matters & The On-Path Attacker's Perspective

Prerequisite Foundation: This article assumes familiarity with core network security concepts (symmetric vs. asymmetric ciphers, the CIA triad, and basic firewall concepts). For a broader survey of network security foundations, visit the Network Security Basics Guide.

Whenever data crosses the internet, it traverses dozens of intermediate hops: local Wi-Fi access points, residential ISPs, transit autonomous systems (ASNs), underwater fiber backbones, and edge load balancers. Any compromised hardware or malicious actor on this path constitutes an on-path attacker (adversary).

Beginner Concept: The Postcard vs. Sealed Titanium Safe

Plaintext HTTP is like sending postcards through public transit. Every courier can read your passwords, swap your destination, or insert advertisements into the text. TLS transforms your traffic into an armored, sealed lockbox where only the intended recipient possesses the key, and any physical tampering instantly shatters the lock.

Deep Dive: The Dolev-Yao Adversary Model

In formal cryptographic protocol verification, TLS is designed against the Dolev-Yao threat model: an active adversary controls the network medium entirely: they can eavesdrop on all packets, intercept messages, duplicate or reorder records, inject arbitrary bitstrings, and spoof source IP headers. TLS 1.3 guarantees confidentiality, integrity, and authenticity even under full active network compromise.

What Plaintext HTTP Leaks vs. What TLS Protects

Traffic AttributePlaintext HTTP (No TLS)TLS 1.3 (HTTPS)
URL Path & Query ParamsExposed to all transit routers (/api/user/123?token=secret)Encrypted & Hidden inside AEAD record payload
HTTP Headers & CookiesPlaintext on wire (Cookie: session_id=...)Encrypted & Tamper-Evident
Request/Response BodyPlaintext JSON, HTML, credentials, session tokensAuthenticated Symmetric Ciphertext (AES-GCM / ChaCha20)
Server IdentityUnauthenticated; vulnerable to ARP/DNS spoofingCryptographically Verified via X.509 PKI trust chain
Destination IP & PortExposed in L3/L4 headersExposed in L3/L4 headers (necessary for network routing)
Packet Size & TimingDirectly reveals payload characteristicsObscured via TLS 1.3 Record Padding (RFC 8446 §5.4)
What TLS Does NOT Protect Against:
  • Compromised Endpoints: Malware or keyloggers on the client or malicious code running on the origin server.
  • DNS Queries: Standard plaintext DNS queries (UDP 53) reveal the visited domains before TLS even starts, unless DoH (DNS over HTTPS) or DoT (DNS over TLS) is configured.
  • Traffic Analysis: An attacker observing packet bursts, flow cadence, and volume can infer user activity (e.g. streaming vs browsing).

02

The Record Layer & Authenticated Encryption (AEAD)

All data in TLS travels in discrete units called Records. The TLS Record Protocol provides two fundamental guarantees: Confidentiality (via symmetric ciphers) and Integrity / Authenticity (via message authentication tags).

TLS 1.3 Record Framing: Middlebox Compatibility & Inner Plaintext

In TLS 1.3, every record sent over the wire uses an outer legacy header with ContentType: 23 (Application Data) and Legacy Version: 0x0303 (TLS 1.2). This deliberate disguise prevents ossified network middleboxes (firewalls, deep packet inspection boxes) from dropping connections they do not recognize. The true content type is placed inside the encrypted envelope.

TLS 1.3 Record Structure on the WireRFC 8446 §5.1 Wire Format
┌─────────────────────────────── Outer Header (5 Bytes, Unencrypted) ───────────────────────────────┐
│ 1 Byte: Opaque ContentType (0x17 = 23) │ 2 Bytes: Legacy Version (0x0303) │ 2 Bytes: Encrypted Length │
└───────────────────────────────────────────────────────────────────────────────────────────────────┘
                                                  │
                                                  ▼
┌─────────────────────────────── AEAD Encrypted Body + Auth Tag ────────────────────────────────────┐
│                                                                        │ 16-Byte AEAD Tag         │
│  ┌───────────────────────── Inner Plaintext (Before Encryption) ─────┐ │ (Protects Header+Payload) │
│  │ Application Payload Bytes / Handshake Msg                         │ │                          │
│  │ 1 Byte: Real ContentType (22=Handshake, 23=App, 21=Alert)         │ │ [ AES-GCM / Poly1305 ]   │
│  │ Optional Zero-Padding: 0x00 0x00 ... (Hides payload length)       │ │                          │
│  └───────────────────────────────────────────────────────────────────┘ │                          │
└───────────────────────────────────────────────────────────────────────────────────────────────────┘

AEAD Sealing: Construction of the Nonce

TLS 1.3 forbids unauthenticated encryption (such as CBC mode or RC4). It exclusively mandates AEAD (Authenticated Encryption with Associated Data) algorithms: AES-128-GCM, AES-256-GCM, or ChaCha20-Poly1305.

To prevent replay attacks and cryptographic nonce reuse, the 96-bit AEAD nonce is computed dynamically for every single record by XORing the 64-bit implicit sequence number with the 96-bit static Initialization Vector (IV) derived from the key schedule:

Per-Record Nonce GenerationRFC 8446 §5.3
  Static 96-bit IV:      0x 4a 1f 9b 2c 88 10 3d e4 fa 01 77 c2
  64-bit Seq Number:  XOR  0x 00 00 00 00 00 00 00 00 00 00 00 01 (Padded to 96 bits)
  ──────────────────────────────────────────────────────────────────────────
  Per-Record Nonce:      0x 4a 1f 9b 2c 88 10 3d e4 fa 01 77 c3
Why Sequence Numbers Are Never Sent on the Wire: Both the client and server independently maintain an internal 64-bit counter incremented for every record transmitted and received. Because the counter is included in the nonce and the AEAD authentication tag, an attacker who intercepts a record and attempts to re-send it (replay) or reorder it will cause an immediate tag mismatch and connection termination.

03

The Handshake Frame by Frame

The TLS 1.3 handshake negotiates cryptographic capabilities, authenticates the server (and optionally client), establishes shared symmetric keys, and begins application data transmission in exactly 1 Round-Trip Time (1-RTT).

TLS 1.3 1-RTT Handshake Frame Sequence & Encryption BoundaryRFC 8446 Core Flow
 CLIENT                                                                    SERVER
   │                                                                         │
   │ 1. [Record: Handshake] ClientHello                                      │
   │    - Random (32 B) + CipherSuites                                       │
   │    - Extension: supported_versions [0x0304]                             │
   │    - Extension: key_share [Group X25519, Client Share $g^a$]             │
   │    - Extension: server_name (SNI: "api.cso.org")                        │
   │    - Extension: ALPN ["h2", "http/1.1"]                                 │
   │ ──────────────────────────────────────────────────────────────────────▶ │ ── (Extracts Handshake Secret)
   │                                                                         │
   │                                                                         │ 2. [Record: Handshake] ServerHello
   │                                                                         │    - Random (32 B) + Selected Cipher
   │                                                                         │    - Extension: key_share [Server Share $g^b$]
   │                                                                         │ ── (Derives Handshake Traffic Keys)
   │                                                                         │
   │                                                                         │ ─── ENCRYPTED UNDER HS KEYS ───
   │                                                                         │ 3. {EncryptedExtensions} (ALPN: "h2")
   │                                                                         │ 4. {Certificate} (X.509 Leaf + Intermediate)
   │                                                                         │ 5. {CertificateVerify} (Signature over H_4)
   │                                                                         │ 6. {Finished} (HMAC over transcript H_5)
   │ ◀────────────────────────────────────────────────────────────────────── │
   │ (Verifies Signature, Cert Chain & Finished HMAC)                        │
   │ (Derives Master Secret & Application Traffic Keys)                      │
   │                                                                         │
   │ ─── ENCRYPTED UNDER APP KEYS ────────────────────────────────────────── │
   │ 7. {Finished} (Client HMAC over H_6)                                    │
   │ 8. {Application Data} (HTTP/2 GET /v1/telemetry)                        │
   │ ──────────────────────────────────────────────────────────────────────▶ │ ── (Processes HTTP Request)
   │ ◀────────────────────────────────────────────────────────────────────── │ 9. {Application Data} (HTTP/2 200 OK)

The Transcript Hash: Cumulative Tamper-Proofing

From the first byte of ClientHello, both endpoints maintain a running cryptographic hash (e.g. SHA-384) of the entire handshake transcript.

  • H_1 = Hash(ClientHello)
  • H_2 = Hash(ClientHello || ServerHello)
  • H_4 = Hash(ClientHello || ServerHello || EncryptedExtensions || Certificate)
  • H_5 = Hash(ClientHello || ... || CertificateVerify)

The server's CertificateVerify signature is computed over H_4, and the Finished verification message contains an HMAC over H_5. If an active on-path attacker attempts to tamper with a single bit in the ClientHello (such as stripping a cipher suite to force a downgrade), the transcript hashes will diverge, the server's signature will fail, and the handshake will abort with a fatal alert.


04

The HKDF Key Schedule & Forward Secrecy

TLS 1.3 replaces legacy ad-hoc PRF constructions with HKDF (HMAC-based Extract-and-Expand Key Derivation Function, RFC 5869). The key schedule transitions through three distinct cryptographic epochs: Early Secret, Handshake Secret, and Master Secret.

The TLS 1.3 HKDF Key Derivation PipelineRFC 8446 §7.1
                  PSK (or 0)
                      │
                      ▼
               HKDF-Extract(0) ──────────────► [ Early Secret ]
                                                     │
                                                     ├─► client_early_traffic_secret (0-RTT)
                                                     ▼
    (ECDH Shared Secret $g^{ab}$) ──────────► HKDF-Extract
                                                     │
                                                     ▼
                                            [ Handshake Secret ]
                                                     │
                                                     ├─► client_handshake_traffic_secret
                                                     ├─► server_handshake_traffic_secret
                                                     ▼
               HKDF-Extract(0) ─────────────► [ Master Secret ]
                                                     │
                                                     ├─► client_application_traffic_secret_0
                                                     ├─► server_application_traffic_secret_0
                                                     ├─► resumption_master_secret
                                                     └─► exporter_master_secret

Why Ephemeral Key Exchange Guarantees Forward Secrecy

In legacy protocols (TLS 1.2 RSA key transport), the client generated a premaster secret, encrypted it with the server's static RSA public key, and sent it across the wire. If the server's private key was ever stolen or subpoenaed years later, attackers could decrypt all historically recorded network traffic.

In TLS 1.3, Perfect Forward Secrecy (PFS) is mandatory. The Diffie-Hellman exponents ($a$ and $b$) are generated randomly in RAM for each individual handshake and permanently destroyed as soon as the shared secret $g^(ab)$ is derived. The server's certificate private key is used strictly to sign the transcript hash (authenticating the origin), never to encrypt session keys.

RFC 8446 HKDF Key Schedule Derivation Graph & Traffic Secret LabelsRFC 8446 Math

TLS 1.3 derives all encryption keys deterministically using HKDF-Expand-Label with distinct secret labels:

 Handshake Secret (HS) = HKDF-Extract(Early Secret, ECDHE Shared Secret)
   │
   ├──▶ HKDF-Expand-Label(HS, "c hs traffic", H_2) ──▶ client_handshake_traffic_secret
   ├──▶ HKDF-Expand-Label(HS, "s hs traffic", H_2) ──▶ server_handshake_traffic_secret
   ▼
 Master Secret (MS) = HKDF-Extract(HS, 0)
   ├──▶ HKDF-Expand-Label(MS, "c ap traffic", H_5) ──▶ client_application_traffic_secret_0
   ├──▶ HKDF-Expand-Label(MS, "s ap traffic", H_5) ──▶ server_application_traffic_secret_0
   └──▶ HKDF-Expand-Label(MS, "resumption",  H_6) ──▶ resumption_master_secret

Interactive TLS 1.3 Handshake & Protocol Stepper

Use the interactive simulator below to step through the TLS 1.3 key schedule transitions, 0-RTT PSK resumption, and Encrypted Client Hello frame exchanges:

Interactive Lab 1

TLS 1.3 Key Schedule & Wire Frame Inspector

Client (Browser)
Server (Origin)

Security State & Cryptographic Inspector

Handshake Latency0 RTT
Wire StatePlaintext
Negotiated CipherTLS_AES_256_GCM_SHA384
Wire Packet Payload Inspector
// Click "Next Step" to observe packet generation and encryption transitions...

05

What Is Inside an X.509 Certificate

A digital certificate is a cryptographically signed document conforming to the ITU-T X.509 v3 (RFC 5280) standard. It binds a server's identity (domain names) to a public encryption/signature key.

Anatomy of an X.509 v3 Certificate (ASN.1 DER Structure)RFC 5280 Field Breakdown
  TBSCertificate (To Be Signed Certificate):
  ├── Version: v3 (0x02)
  ├── Serial Number: 03:a1:4c:92:0f:7b:4e:88:12:3d
  ├── Signature Algorithm: ecdsa-with-SHA384 (1.2.840.10045.4.3.3)
  ├── Issuer: C=US, O=Let's Encrypt, CN=R3
  ├── Validity:
  │   ├── NotBefore: Aug 01 00:00:00 2026 GMT
  │   └── NotAfter:  Oct 30 23:59:59 2026 GMT (90-Day Lifecycle)
  ├── Subject: CN=api.cso.org (Legacy field)
  ├── Subject Public Key Info:
  │   ├── Algorithm: id-ecPublicKey (secp256r1)
  │   └── Public Key: 04:e2:8a:11:5b:... (65 bytes uncompressed EC point)
  └── Extensions:
      ├── Basic Constraints: Critical, CA:FALSE (End-entity leaf cert)
      ├── Key Usage: Critical, Digital Signature (No keyCertSign)
      ├── Extended Key Usage: Server Authentication (1.3.6.1.5.5.7.3.1)
      ├── Subject Alternative Name (SAN):
      │   ├── DNS: api.cso.org
      │   └── DNS: *.api.cso.org
      ├── Authority Information Access (AIA):
      │   ├── OCSP Responder: http://r3.o.lencr.org
      │   └── CA Issuers: http://r3.i.lencr.org/
      └── Signed Certificate Timestamps (SCTs):
          ├── Log: Cloudflare Nimbus2026 Log (Signature verified)
          └── Log: Google Argon2026 Log (Signature verified)
  ─────────────────────────────────────────────────────────────────────────────
  Signature Value: 30:65:02:30:7f:1b:... (Parent CA R3 Private Key Signature)

Crucial X.509 Fields Explained

01

SAN (Subject Alternative Name)

The only authoritative field for hostname matching since RFC 6125. The legacy CN (Common Name) is completely ignored by modern browsers. Wildcard certificates (e.g. *.cso.org) match exactly one subdomain level (api.cso.org, but NOT a.b.cso.org or cso.org).

02

Basic Constraints

Specifies CA:TRUE or CA:FALSE. Leaf certificates MUST have CA:FALSE. If an attacker tricks a CA into issuing a certificate without CA:FALSE, the attacker could issue valid sub-certificates for any website on the internet.

03

Validity Lifetime Reduction

Certificate lifespans have decreased from 5 years to 3 years, to 1 year, to the current 90-day standard, with Apple/Google pushing for 45-day limits. Shorter lifespans limit the window of exposure if a private key is silently compromised.

Deep Dive: Automated PKI with the ACME Protocol (RFC 8555)Automation

The Automated Certificate Management Environment (ACME) protocol enables web servers (Certbot, Caddy, Traefik) to obtain and renew certificates automatically without human intervention.

  ACME Client (Certbot on Web Server)                     Let's Encrypt CA
         │                                                       │
         │ 1. New Order Request (Domain: "api.cso.org")          │
         │ ────────────────────────────────────────────────────▶ │
         │ 2. Return Authorization Challenges (HTTP-01 / DNS-01)  │
         │ ◀──────────────────────────────────────────────────── │
         │                                                       │
         │ 3. Client places challenge token at:                  │
         │    http://api.cso.org/.well-known/acme-challenge/XYZ │
         │ 4. Client signals challenge ready                     │
         │ ────────────────────────────────────────────────────▶ │ ── (CA queries DNS & fetches token via HTTP)
         │                                                       │
         │ 5. Client submits CSR (Certificate Signing Request)   │
         │ ────────────────────────────────────────────────────▶ │
         │ 6. CA signs certificate and returns signed DER chain  │
         │ ◀──────────────────────────────────────────────────── │

06

Verifying Trust: Path Building, CT & Browser Errors

When a browser receives a certificate chain, it must independently construct and verify a cryptographic path from the untrusted leaf certificate up to a trusted Root Certificate Authority pre-installed in the operating system's trust store.

Hierarchical Path Building & Verification PipelinePKIX RFC 5280 Verification
  1. End-Entity Leaf Certificate (CN=api.cso.org, SAN=[api.cso.org])
     │  - Validates: Current Date is between NotBefore and NotAfter
     │  - Validates: Hostname matches SAN
     │  - Validates: Signed by Issuer Key (Let's Encrypt R3)
     ▼
  2. Intermediate CA Certificate (CN=R3, O=Let's Encrypt)
     │  - Validates: BasicConstraints CA=TRUE, pathLenConstraint >= 0
     │  - Validates: KeyUsage includes keyCertSign
     │  - Validates: Signed by Parent Key (ISRG Root X1)
     ▼
  3. Trust Anchor / Root CA (CN=ISRG Root X1)
     │  - Stored in OS / Browser Local Trust Store (Keychain, NSS, Windows CAs)
     │  - Self-signed, intrinsically trusted by root store policy
     ▼
  4. Certificate Transparency (CT) Validation
     └─ Validates: 2+ Signed Certificate Timestamps (SCTs) from independent public logs

Certificate Transparency (CT) & Revocation Reality

Historically, rogue or compromised CAs (such as DigiNotar in 2011) could secretly issue fraudulent certificates for major domains without anyone knowing. Under Certificate Transparency (RFC 6962), CAs must submit all issued certificates to public, append-only, Merkle-tree audit logs. Browsers will reject any public certificate that does not contain embedded Signed Certificate Timestamps (SCTs).

Why Traditional CRL & OCSP Failed

CRLs (Certificate Revocation Lists): Grew to tens of megabytes; impractical for mobile clients.

Online OCSP Queries: If the CA's OCSP server went down, browsers chose "soft-fail" (ignoring the error) so websites wouldn't break, rendering revocation checks toothless to active attackers who simply blocked the OCSP port.

Modern Revocation: OCSP Stapling & Push Lists

OCSP Stapling: The web server periodically fetches and cryptographically caches the revocation proof directly inside the TLS handshake flight.

Browser Push Lists: Google Chrome (CRLSets) and Mozilla (OneCRL) push high-priority revoked certificate hashes directly to browsers in daily background updates.

Interactive Certificate Chain Inspector & Validator

Select a preset scenario below to test how browser PKIX validation engines evaluate certificate chains and surface exact error alerts:

Interactive Validator

Certificate Chain Diagnostic Tester

Certificate Chain Structure

Validation Pipeline Checks

Validation Verdict:Ready

Click "Validate Chain" to run PKIX verification.


07

Resumption, 0-RTT & Encrypted Client Hello (ECH)

As web applications strive for zero latency, TLS 1.3 introduced Session Resumption with 0-RTT Early Data. However, eliminating round trips introduces cryptographic trade-offs that every engineer must understand.

Session Tickets & 0-RTT Replay Attacks

When a client completes a standard TLS 1.3 handshake, the server issues a NewSessionTicket containing a Pre-Shared Key (PSK) encrypted under the server's Session Ticket Encryption Key (STEK). On future connections, the client sends this ticket and can immediately transmit application requests in the very first flight (0-RTT).

The 0-RTT Replay Attack Vulnerability:Because 0-RTT Early Data is sent before the server has replied with its ephemeral key share, an on-path attacker can record the 0-RTT packet and re-send it to the server 100 times.

Defense Rule: Servers MUST NEVER process state-changing HTTP requests (e.g. POST /api/transfer-funds, DELETE /user) over 0-RTT. 0-RTT is strictly safe only for idempotent requests (e.g. GET /static/styles.css).

Encrypted Client Hello (ECH): Closing the Final Privacy Leak

Even in TLS 1.3, the Server Name Indication (SNI) extension was transmitted in plaintext during the ClientHello. Any eavesdropping ISP, school network, or repressive regime could inspect the SNI to block or censor specific websites (e.g. wikipedia.org).

ECH (RFC 9460) splits the handshake into two layers: an Outer ClientHello addressed to an innocuous public decoy host (e.g. cloudflare.com), containing an encrypted extension payload that holds the real Inner ClientHello (e.g. sensitive-news.org) sealed with Hybrid Public Key Encryption (HPKE).

Encrypted Client Hello (ECH) ArchitectureRFC 9460 / HPKE Protocol
  DNS Query (SVCB/HTTPS RR):  dig HTTPS sensitive-site.org
  DNS Response:               Returns ECHConfig (Public Key of Origin/CDN)
                                     │
                                     ▼
  CLIENT                                                     EDGE / CDN
    │                                                            │
    │ [Outer ClientHello (Plaintext on Wire)]                    │
    │  - Outer SNI: "public-cdn-decoy.com"                       │
    │  - Extension: EncryptedClientHello                         │
    │    ┌─────────────────────────────────────────────────────┐ │
    │    │ HPKE Ciphertext (Inner ClientHello):                │ │
    │    │  - Inner SNI: "sensitive-site.org"                  │ │
    │    │  - Inner KeyShare, ALPN, Session Tickets            │ │
    │    └─────────────────────────────────────────────────────┘ │
    │ ─────────────────────────────────────────────────────────▶ │ ── (CDN decrypts Inner SNI using private key)
    │                                                            │ ── (Routes request to true backend origin)
Draft-IETF-TLS-ESNI: Encrypted Client Hello (ECH) Inner/Outer Packet LayoutECH Protocol

ECH splits the initial handshake into two distinct ClientHello records to prevent SNI domain leakage on public networks:

 ClientHelloOuter (Plaintext, Visible to ISP):
 ├── SNI: public-frontend.cloudflare.com (Cover domain)
 └── Extension: encrypted_client_hello (AEAD Encrypted Payload)
          │
          ▼ (Decrypted with CDN Private Key)
 ClientHelloInner (Confidential, Target Backend):
 ├── SNI: internal-payment-core.bank.com (Real Private Origin)
 └── ALPN: h2, KeyShares, SessionTickets

08

The Post-Quantum Migration & Protocol Reference

All modern asymmetric cryptography (RSA, ECDHE, ECDSA) relies on mathematical problems (integer factorization, discrete logarithms) that can be solved in polynomial time by a Cryptographically Relevant Quantum Computer (CRQC) running Shor's Algorithm.

The "Harvest Now, Decrypt Later" (HNDL) Threat

Nation-state adversaries are currently recording petabytes of encrypted internet traffic flowing through fiber backbone taps. Even if a quantum computer capable of breaking RSA/ECC is 10 to 15 years away, traffic captured today that requires decades-long confidentiality (financial secrets, government intelligence, medical records) will be decrypted retroactively.

Hybrid Post-Quantum Key Exchange: X25519MLKEM768

To defend against HNDL without abandoning proven classical algorithms, the IETF and browser vendors (Google Chrome, Apple Safari, Cloudflare) have deployed Hybrid Key Exchange combining classical X25519 with NIST lattice-based ML-KEM-768 (formerly Crystals-Kyber, FIPS 203):

Hybrid Key Derivation CombinerNIST FIPS 203 & RFC 9370
  Classical Share (X25519):   32 Bytes Public Key ──► Classical ECDH Shared Secret (32 B)
                                                                 │
                                                                 ├──► Concatenate: (ECDH || ML-KEM)
                                                                 │
  Post-Quantum (ML-KEM-768):  1,184 Bytes Public Key ─► Lattice KEM Shared Secret (32 B)
                                                                 │
                                                                 ▼
                                                  HKDF-Extract(Early Secret, Combined Secret)
                                                                 │
                                                                 ▼
                                                    [ Handshake Master Secret ]
Why Hybrid? If ML-KEM is found to have an unforeseen mathematical flaw in the future, the connection remains protected by X25519. If quantum computers emerge, the connection is protected by ML-KEM. Both must be broken simultaneously to compromise the session.

The MTU Fragmentation Challenge & Signature Lag

Classical X25519 key shares are 32 bytes. ML-KEM-768 shares are 1,184 bytes. Including certificates and extensions, the initial ClientHello exceeds the standard Ethernet MTU (1,500 bytes), causing TCP packet fragmentation across two packets. Network engineers must ensure MTU and MSS clamping configurations do not drop fragmented initial SYN flights.

TLS Version & Cryptographic Protocol Reference Matrix

TLS VersionHandshake RTTKey Exchange SchemesSymmetric CiphersSecurity Status
TLS 1.0 / 1.12 RTTStatic RSA, Static DHRC4, 3DES, CBC (BEAST/POODLE)DEPRECATED & INSECURE
TLS 1.22 RTTRSA, ECDHE (Optional PFS)AES-CBC, AES-GCM (Optional AEAD)LEGACY (Phasing Out)
TLS 1.3 (Classical)1 RTT / 0-RTTECDHE (X25519, secp256r1) Mandatory PFSAES-128-GCM, AES-256-GCM, ChaCha20CURRENT GOLD STANDARD
TLS 1.3 (Post-Quantum)1 RTTHybrid X25519MLKEM768 (FIPS 203)AES-256-GCM, ChaCha20-Poly1305FUTURE-PROOF (Active Rollout)

Networking Committee: Production TLS Hardening Checklist

Disable TLS 1.0 and TLS 1.1: Reject any legacy client attempting pre-TLS 1.2 negotiation.
Enable TLS 1.3 with Prioritized Ciphers: Default to TLS_AES_256_GCM_SHA384 and TLS_CHACHA20_POLY1305_SHA256.
Enable OCSP Stapling (Must-Staple): Eliminate client-side revocation latency and privacy leakage.
Automate Renewals with ACME: Enforce 60-to-90 day certificate turnover to minimize key compromise duration.
Enforce HSTS with Preload: Strict-Transport-Security: max-age=63072000; includeSubDomains; preload.
Prepare for Post-Quantum Hybrid Groups: Test edge load balancers for multi-segment ClientHello handling.