TLS 1.3 Basics
Learn about TLS 1.3, configure handshake parameters, and explore PQC migration trade-offs.
Why this matters: TLS protects nearly all web traffic; the 1.3 handshake is the prerequisite for every hybrid-PQC rollout you'll plan.
Start here: Set the client and server panels — identity certificates and key exchange groups — then press Start Full Interaction: the handshake runs and a summary plus the negotiated results appear below.
For your role
- Developer / Engineer
- The TLS 1.3 handshake, certificates and cipher suites, then the simulator: choose a hybrid key share and an ML-DSA certificate and read every message in TXT and HEX, with the OpenSSL config that produced it.
- Security Architect
- The handshake is the prerequisite for every hybrid-PQC rollout; the simulator shows what a PQC certificate chain and a hybrid key share add to each connection.
- Researcher / Academic
- The simulator supports pure ML-DSA certificates and the IETF hybrid key shares; inspect the encodings against the drafts listed at the top of the tool.
- IT Ops / DevOps
- Set the server side as your edge is configured and run the simulator: the Config File tab and the module's Apache, nginx, HAProxy and Caddy snippets are what you deploy.
- Curious Explorer
- The padlock in your browser is TLS; the module shows what happens in the handshake and what changes when the algorithms inside it go post-quantum.
Before You Start
Prerequisites: Familiarity with public-key cryptography (asymmetric keys, digital signatures, certificates) and basic HTTPS concepts.
After completing this module, you will be able to:
- Explain the TLS 1.3 handshake and how it differs from TLS 1.2
- Compare overhead of classical, hybrid, and PQC TLS configurations quantitatively
- Configure a web server for hybrid PQC TLS key exchange
What is TLS 1.3?
1.3 is the latest version of the Transport Layer Security protocol, securing virtually all HTTPS traffic on the internet. It is specified by RFC 9846 (July 2026), which obsoleted the original RFC 8446. It was a major overhaul from TLS 1.2, removing insecure legacy features and introducing mandatory forward secrecy, a faster 1-RTT handshake, and a dramatically simplified cipher suite list.
- RSA key exchange (no forward secrecy)
- CBC cipher modes
- Renegotiation & compression
- Mandatory ECDHE forward secrecy
- 0-RTT early data (optional) — vulnerable to replay attacks; servers must mitigate (RFC 8446 §8)
- Encrypted handshake messages
- 5 cipher suites (vs hundreds in 1.2)
- 1-RTT handshake (vs 2-RTT)
- AEAD-only encryption
The TLS 1.3 Handshake
The handshake establishes a secure connection in a single round trip. The client sends its supported parameters and a key share; the server responds with its choice and key share. After the ServerHello, all remaining handshake messages are encrypted using handshake traffic keys derived via HKDF.
Current group: X25519MLKEM768 — client key share 1216 B, server response 1120 B (classical X25519 uses 32 B each; hybrid sizes include both components). CertificateVerify with mldsa44: 2,420 B.
Cipher Suites Explained
TLS 1.3 cipher suites only specify the symmetric encryption algorithm and hash — key exchange and authentication are negotiated separately. This is why there are only 5 suites compared to hundreds in TLS 1.2.
Key Exchange: Classical, PQC, and Hybrid
TLS 1.3 uses ephemeral key exchange for every connection, ensuring forward secrecy. With post-quantum cryptography (PQC), three approaches are available:
X25519, P-256, P-384. Fast and small (~32 byte keys). Vulnerable to quantum computers.
ML-KEM-512/768/1024. Quantum-resistant. Larger keys (1,184 B for ML-KEM-768, FIPS 203) increase handshake size.
X25519MLKEM768 combines both. Already deployed in Chrome and Firefox. Secure even if one algorithm is broken.
Key Schedule (HKDF)
TLS 1.3 derives all session keys through a structured key schedule using HKDF (HMAC-based Key Derivation Function). The shared secret from key exchange feeds into a chain of Extract and Expand operations:
CLIENT_HANDSHAKE_TRAFFIC_SECRET and SERVER_HANDSHAKE_TRAFFIC_SECRETCLIENT_TRAFFIC_SECRET_0 and SERVER_TRAFFIC_SECRET_0 for application dataThese exact secrets are visible in the Simulate tab after running a handshake.
Session Resumption & PSK
After a successful handshake, the server issues a Pre-Shared Key (PSK) ticket. On reconnection, the client presents this PSK, which feeds into the Early Secret stage — enabling a faster resumed handshake and optionally 0-RTT early data. In a full handshake with no prior session, the PSK input is zero.
HelloRetryRequest (HRR)
If the server does not support any of the key exchange groups offered in the client's initial ClientHello, it responds with a HelloRetryRequest instead of a ServerHello. This tells the client to retry with a different key share. The result is a 2-RTT handshake instead of the standard 1-RTT.
- Client offers X25519 only, server requires ML-KEM
- Client offers ML-KEM-768, server wants ML-KEM-1024
- Client's key_share group doesn't match any server preference
- During PQC rollout, mismatched groups are common
- Hybrid groups (X25519MLKEM768) minimize HRR — classical clients still match X25519
- HRR adds latency but never breaks the connection
In the simulator, try configuring the client with only ML-KEM-1024 and the server with only X25519 to observe a group negotiation mismatch.
Post-Quantum Cryptography in TLS
Quantum computers threaten classical key exchange (ECDH) through Shor's algorithm. The "harvest now, decrypt later" attack means adversaries can record encrypted traffic today and decrypt it once quantum computers are available. PQC integration into TLS addresses this by using lattice-based KEMs (ML-KEM) and signatures (ML-DSA).
The trade-off: PQC algorithms have larger keys and ciphertexts, increasing handshake overhead. For example, ML-KEM-768 public keys are ~1,184 bytes vs 32 bytes for X25519. The hybrid approach (e.g., X25519MLKEM768) provides quantum resistance while maintaining classical security as a fallback.
SLH-DSA: Hash-Based Alternative (FIPS 205)
SLH-DSA (formerly SPHINCS+) is a hash-based signature scheme standardized alongside ML-DSA. It relies on hash function security rather than lattice problems, providing cryptographic diversity— if lattices are broken, SLH-DSA remains secure. The trade-off is significantly larger signatures (~7.9 KB (7,856 B) for SLH-DSA-SHA2-128s vs 2,420 B, about 2.4 KB, for ML-DSA-44). Both are available in the simulator's signature algorithm options.
Scaling PQC for HTTPS
PQC signatures are significantly larger than classical ones — an ML-DSA certificate chain can add several kilobytes to every TLS handshake. For the web, where billions of connections happen daily, this overhead is a serious scalability concern. The ecosystem is deploying multiple mitigations.
TLS Certificate Compression (RFC 8879)
Already supported by major browsers, TLS certificate compression can reduce PQC certificate overhead by 30-60% (our estimate). Certificates are compressed with Zlib or Brotli before transmission and decompressed by the peer. This is a practical short-term mitigation available today while more advanced solutions are being built.
Certificate Transparency (RFC 9162)
Certificate Transparency (CT) requires CAs to log all issued certificates in publicly auditable append-only logs. Browsers verify that certificates appear in CT logs, preventing misissued certificates from going undetected. Understanding CT is essential context for Merkle Tree Certificates, which leverage this same log infrastructure.
Merkle Tree Certificates (MTC)
Google's MTC program (announced February 2026) goes further than compression — it replaces entire certificate chains with compact Merkle proofs.
Traditional TLS uses a chain of X.509 certificates, each containing a public key and a signature from the issuing CA. With PQC signatures (3,309 B, about 3.3 KB, for ML-DSA-65), a typical 2-certificate chain adds ~7 KB+ to the handshake — a substantial bandwidth increase.
MTCs replace the serialized signature chain with a compact Merkle inclusion proof. A single CA-signed "Tree Head" represents potentially millions of certificates. Browsers receive a lightweight proof-of-inclusion rather than full certificate chains.
Deployment Roadmap
Encrypted Client Hello (ECH)
PQC protects the content of TLS connections from quantum attack, but the initial ClientHello — including the Server Name Indication (SNI) — is sent in plaintext, revealing which site a user is connecting to. Encrypted Client Hello (ECH) solves this by encrypting the ClientHello using a key published in DNS.
Major browsers are deploying ECH alongside hybrid PQC key exchange (X25519MLKEM768). Together, they protect both the metadata (who you connect to) and the content (what you exchange) against current and future adversaries.
Related Resources
Products shown here are a representative selection — not an exhaustive list. For the full vendor landscape with PQC readiness status, visit the Tools & Products tab in this module or browse the Migrate catalog →
Check off all sections and mark this reading done.
Related modules
- Email & Document SigningSame track · Protocols · Same migration phase · Shares ML-DSA, X.509
- DNSSEC & Post-Quantum SignaturesSame track · Protocols · Same migration phase · Shares ML-DSA, ECDSA
- Web Gateway PQCSame track · Protocols · Shares ML-DSA, ML-KEM, RFC 9846
- Network Security & PQC MigrationSame track · Protocols · Shares ML-DSA, ML-KEM, RFC 9846
In the Industry Landscape
- Cloud Computing / Data CentersTenant-facing TLS & API endpoints · Backup & disaster-recovery encryption
- Cross-IndustryWeb & API TLS everywhere
- Aerospace / AviationBy protocol · Satellite communications & ground links
- Automotive / Connected VehiclesBy protocol · Telematics & connected-car cloud APIs
- Critical Infrastructure / EnergyBy protocol · SCADA & substation automation (IEC 61850/62351)
- Education / ResearchBy protocol · Student information systems & LMS · Research data protection (CUI)
- Finance & BankingBy protocol · Interbank payments & settlement (SWIFT/RTGS) · Digital banking channels · Long-term records & HNDL exposure
- Government & DefenseBy protocol · National security systems — transport (CNSA 2.0) · National security systems — protocol authentication (CNSA 2.0)
- Healthcare / PharmaceuticalBy protocol · EHR & health-information exchange
- Internet of Things (IoT)By protocol · Device identity & provisioning · Industrial IoT (OPC UA / IEC 62443)
- IT Industry / SoftwareBy protocol · Crypto libraries & TLS stacks — key exchange · Crypto libraries & TLS stacks — PQC signatures · Web PKI & certificate authorities
- Media / Entertainment / DRMBy protocol · Streaming delivery & license TLS
- Payment Card IndustryBy protocol · Terminal PIN security & key injection · E-commerce payment data (PCI DSS)
- Rail / TransitBy protocol · Train control key management (ETCS) · Railway mobile communications (GSM-R → FRMCS)
- Retail & E-CommerceBy protocol · Online checkout & POS
- Supply Chain / LogisticsBy protocol · Port & vessel identity systems
- TelecommunicationsBy protocol · Backhaul & core transport (IPsec/TLS)
- Water / WastewaterBy protocol · Treatment plant SCADA & remote ops · Water metering & sensor networks
- InsuranceBy protocol · Policyholder data & HNDL exposure
Check your understanding
21 questions on TLS Basics, each with its answer and the reason.
Take the quizNext step
Practice it: TLS 1.3 SimulatorTLS 1.3 Simulator is the hands-on version of this module: the same ideas, run in your browser.
Learning module content can be inaccurate. Please double-check its information. Report inaccuracies in PQC Today GitHub Discussions.