HTTPS handshake (TLS 1.3 deep dive)
How ClientHello + ServerHello + Finished set up a secure channel in 1 round-trip.
TLS 1.3 (RFC 8446, 2018) is the current standard. Its handshake is 1 round-trip (vs TLS 1.2's 2 RTT) — meaningful on mobile networks. And it's more secure by design: dropped RSA key exchange, dropped SHA-1, dropped MD5, dropped renegotiation.
The TLS 1.3 handshake, step by step
cipher suites: TLS_AES_256_GCM_SHA384, ...
key share: (X25519 public key)
server name: acme.com (SNI)
chosen cipher: TLS_AES_256_GCM_SHA384
key share: (server X25519 public key)
certificate: (server cert chain)
signature over transcript with cert private key
derives shared secret via X25519 ECDHE
starts sending encrypted data immediately
Why 1 RTT (vs 2 in TLS 1.2)
- ClientHello INCLUDES the key share (in TLS 1.2, keys were exchanged in a second RTT)
- Server sends everything in ONE flight — server hello + cert + finished + first data
- Client verifies + can already send its first HTTP request as its Finished flight
0-RTT (session resumption)
If client + server have talked before, the client can send its FIRST HTTP request in the ClientHello — zero RTT before data. Trade-off: 0-RTT data is replayable by attackers (idempotency required). Only safe for GETs.
The interview soundbite
“TLS 1.3 is 1 RTT for new sessions, 0 RTT for resumed sessions. Key exchange is ECDHE with X25519 or P-256, so we get forward secrecy. AES-GCM or ChaCha20-Poly1305 for symmetric. Dropped RSA key exchange and CBC ciphers to simplify + secure.”
Practice what you just read
Every foundation concept has a companion quiz to close the loop.