TLS
The wire protocol itself: handshake message order, record framing, named groups, suite strings and the per-version delta. Interviewers probe it when a connection fails and "we use TLS" stops helping.
part ofWeb protocols & securityoverview, primer and where to startread it →on this pageshowhide
explore
- Handshake and Extensions6 questions
- Record Layer5 questions
- Key Exchange and PFS4 questions
- Cipher Suites4 questions
- Certificate Messages6 questions
- Session Resumption5 questions
- Version Differences4 questions
- Legacy SSL Breaks5 questions
- Mutual Authentication5 questions
- Termination and Interception3 questions
- Diagnosing Handshake Failures5 questions
- Datagram Mode6 questions
questions
page 2 of 2What property of TLS 1.0's CBC initialization vectors did BEAST (CVE-2011-3389) exploit?
basics
~10 sTLS 1.0 chains CBC across records: the initialization vector for a record is the previous record's last ciphertext block, already visible on the wire. BEAST used that predictability to test guesses at plaintext blocks.
A TLS 1.3 client holds no certificate matching the server's CertificateRequest - what does it send, and what may the server do?
basics
~20 sIt still sends a Certificate message, with an empty certificate_list and no CertificateVerify after it. The server may then either continue the handshake with an unauthenticated peer or abort it with a fatal certificate_required(116) alert.
TLS 1.3 puts no record sequence number on the wire over a stream transport, so how is each record's nonce formed?
basics
~20 sEach side keeps a 64-bit record counter for reading and one for writing, both starting at zero. The counter is left-padded to the length of the static write IV and XORed with it, producing a distinct nonce for every record.
In TLS 1.3, what does a resuming client put in its pre_shared_key(41) extension, and what does a binder prove?
basics
~20 sIt carries one or more PskIdentity entries - each an opaque ticket plus an obfuscated_ticket_age - and a matching PskBinderEntry list. A binder is a MAC keyed from the pre-shared key, proving possession and tying the offer to this exact ClientHello.
Why does the absence of unrecognized_name(112) prove nothing when a server holds no certificate for the requested host_name?
basics
~20 sBecause the alert was never required. RFC 6066 lets a server that does not recognise the requested host_name either abort with a fatal unrecognized_name(112) or simply continue the handshake, so silence is a conforming choice and carries no information.
In TLS 1.3, why might a server with a valid, correctly chained certificate still be unable to authenticate to a client?
basics
~20 sBecause authentication needs a signature scheme both sides accept. The client's signature_algorithms(13) list, and signature_algorithms_cert(50) where present, constrain which certificate the server may select; a server whose only key or chain falls outside those lists cannot sign at all.
When a TLS server honours its own cipher suite preference order rather than the client's, what does that cost a fleet of mixed-hardware clients?
basics
~20 sOrdering decides only which of the mutually acceptable suites wins, never which suites are permitted. Server order enforces one ranking on every peer, so clients without AES hardware acceleration may be pushed onto a suite they run slowly; client order lets each peer pick what it runs fastest.
A buoy's DTLS handshake flight is lost on a satellite uplink; what resends it, and how does the timer behave?
basics
~20 sNothing beneath DTLS retransmits, so the sender does. DTLS groups handshake messages into flights and keeps a timer per flight: it should start at 1 second, double on each retransmission, and cap at 60 seconds, resending the entire flight each time.
Clients abort a TLS 1.3 handshake when the server returns an extension they never offered — which rule is that?
basics
~20 sExtension negotiation is strictly offer-then-answer: a server may only respond with extensions the client actually offered, and each extension type is legal only in the specific handshake messages the specification permits. Violations are fatal, not ignorable.
In a static RSA TLS 1.2 handshake, which message carried the premaster secret, and what does TLS 1.3 send instead?
basics
~20 sThe client generated a 48-byte premaster secret, encrypted it under the RSA public key in the server's certificate, and sent it in client_key_exchange(16). TLS 1.3 has no such message: both ends contribute ephemeral key_share(51) values instead.
What does TLS_FALLBACK_SCSV in a client's retry after a failed handshake oblige the server to do?
basics
~20 sIt declares that this hello is a retry offering less than the client's best version. A server that supports a version higher than the one offered answers with a fatal inappropriate_fallback(86) alert instead of completing the handshake.
After a mutual TLS handshake, where should a service read the caller's identity from, and why not from the request payload?
basics
~20 sFrom the verified client leaf certificate, normally a subjectAltName entry: that is the only name the handshake authenticated. An identifier inside the request is unauthenticated input, so a disagreement between the two must fail the request rather than be resolved silently.
A TLS 1.3 connection carrying one continuous stream stays open for hours - how are its record-protection keys rotated without a new handshake?
basics
~20 sWith a KeyUpdate message, sent inside the protected stream after the handshake. It rotates only the sender's own write keys and resets that direction's record counter; its request_update field, set to update_requested, asks the peer to rotate its direction too.
Turnstile readers send 0-RTT early data to whichever server answers. Which RFC 8446 anti-replay defence survives a replay landing on a different server?
basics
~20 sNone survives on its own. Single-use tickets and ClientHello recording both need state shared by every server that can open the ticket; a freshness check only bounds how long a copied flight stays usable. Partitioning ticket-opening per server is the alternative.
When a service negotiates TLS 1.3 instead of TLS 1.2, which protocol capabilities are gone, and what relied on them?
basics
~20 sTLS 1.3 drops static key transport, so every full handshake uses an ephemeral exchange; it removes renegotiation and record-layer compression; its cipher suites are a separate set from TLS 1.2's; and everything from EncryptedExtensions onward, including the server's certificate, is encrypted.
How would you choose and stage a minimum TLS version floor across a metering fleet you cannot upgrade all at once?
basics
~20 sMeasure before enforcing: record the version every peer actually negotiates over a full check-in cycle, take TLS 1.2 as the deprecation baseline and prefer 1.3, run the floor in report-only first, then raise it population by population with a separately scoped, time-boxed exception.
In TLS, where does a stapled certificate status response travel, and which extension asks the server for one?
basics
~20 sThe client asks with status_request(5) in its ClientHello. TLS 1.2 answers with a separate CertificateStatus handshake message after Certificate; TLS 1.3 carries the response as an extension inside the CertificateEntry it describes, so any entry in the chain can carry one.
An audit narrows a server's TLS 1.2 suite list, yet live TLS 1.3 connections still negotiate an unlisted suite — why?
basics
~20 sTLS 1.3 suites are a separate family with their own code points, chosen by their own policy once version 1.3 is negotiated. Narrowing the 1.2 list constrains only connections that settle on 1.2, so a 1.3 connection is unaffected by it.
Which properties of SSL 2.0 mean that a peer offering it cannot be made safe by configuration alone?
basics
~20 sSSL 2.0 authenticates messages with an MD5-based construction, leaves the handshake unprotected so an intermediary can silently weaken the agreed suite, uses one key for both authentication and encryption, and lets an injected TCP FIN end a session undetectably.
Why does every protected TLS 1.3 record show application_data(23) in its header, and where is the real content type?
basics
~20 sTLS 1.3 moved the real content type inside the encrypted payload. The outer header's opaque_type reads application_data(23) for every protected record; the receiver decrypts, strips trailing zero octets, and reads the last non-zero byte as the type.
With encrypted client hello in use, which host name travels in the ClientHelloOuter and which in the ClientHelloInner?
basics
~10 sThe outer hello names the ECHConfig's public_name in its server_name(0) extension; the host the client actually wants sits in the ClientHelloInner, sealed with HPKE inside the encrypted_client_hello(0xfe0d) extension the outer carries.
Under TLS 1.3, why can a peer's warning-level alert not be treated as a recoverable condition mid-handshake?
basics
~20 sBecause TLS 1.3 makes severity implicit in the alert description. Every error alert must be treated as an error whatever level the sender claimed, and only the closure alerts close_notify(0) and user_canceled(90) are not error alerts.
Why does a TLS 1.3 handshake still put a change_cipher_spec record and a non-empty session id on the wire?
basics
~20 sMiddlebox compatibility mode. A TLS 1.3 client sends a non-empty legacy session id that the server echoes, plus a dummy change_cipher_spec record, so the exchange resembles a TLS 1.2 resumption to elements in the path. Neither changes any key.
In DTLS, what lets a receiver select the right security association when a peer reappears from a different source address?
basics
~20 sThe connection_id(54) extension. Each party advertises a ConnectionId it wishes to receive, the peer stamps that value on records it sends, and the receiver selects the association by that identifier instead of by the source address and port.
Why does a TLS 1.3 handshake still carry a ChangeCipherSpec record and echo a session id it never uses?
basics
~20 sCompatibility only. TLS 1.3 keeps a dummy session id and a ChangeCipherSpec record so the exchange resembles a TLS 1.2 handshake to intermediaries written for that version. Neither affects keys, and neither is part of the handshake transcript.
What does extended master secret change about how a TLS 1.2 master secret is derived, and why?
basics
~20 sIt derives the TLS 1.2 master secret from a hash of the handshake messages instead of the two hello random values, so a master secret can belong to only the one handshake that produced it.
In TLS 1.3, what must a client advertise before a server may request a certificate after the handshake has finished?
basics
~10 sThe post_handshake_auth(49) extension in its ClientHello. Without it the server must not send a late CertificateRequest, and a client that receives one anyway aborts the connection with a fatal alert.
When a reverse proxy forwards an HTTP request received as TLS early data, what marks it, and how can the origin refuse?
basics
~20 sRFC 8470 has the forwarding hop add the Early-Data request header field with the value 1, warning the next hop the request may be a replay. An origin unwilling to act on it answers 425 (Too Early), asking for a retry after the handshake completes.
showing 31–58 of 58