Deprecating Secure Sockets Layer Version 3.0
updated by
- rfc-8996 — Deprecating TLS 1.0 and TLS 1.1
updates
- rfc-5246 — The Transport Layer Security (TLS) Protocol Version 1.2
Extracted elements (13)
SSLv3 cannot be patched to fix its CBC, key exchange, or primitive flaws because the available correction mechanisms (extensions, renegotiation indication, encrypt-then-MAC) were all introduced as TLS extensions, a feature SSLv3 does not support. This structural limitation makes deprecation the only viable path.
SSLv3 is unable to use ClientHello extensions and therefore cannot benefit from AEAD modes, ECDH/ECDSA, stateless session tickets, DTLS, or ALPN — all significant capabilities added in TLS 1.0 and later. Even new cipher suites cannot compensate for the absence of modern cryptographic modes.
This document updates the backward compatibility section of RFC 5246 and its predecessors (RFC 2246, RFC 4346) to prohibit fallback to SSLv3, overriding prior guidance that permitted negotiation of older protocol versions for compatibility.
TLS specifications were historically unclear about what value TLSPlaintext.version could contain when sending ClientHello. RFC 5246 Appendix E permits selecting the record layer version to maximize interoperability; servers must therefore accept any {03,XX} record layer version for ClientHello even though SSLv3 negotiation itself is forbidden.
Any party receiving a Hello message with protocol version set to {03,00} MUST respond with a 'protocol_version' alert message and close the connection.
Clients MUST NOT send a ClientHello with ClientHello.client_version set to {03,00}.
Servers MUST NOT send a ServerHello with ServerHello.server_version set to {03,00}.
SSLv3 MUST NOT be used. Negotiation of SSLv3 from any version of TLS MUST NOT be permitted.
TLS servers MUST accept any value {03,XX} (including {03,00}) as the record layer version number for ClientHello, but they MUST NOT negotiate SSLv3.
RC4 is the only stream cipher defined in SSLv3 that remains in widespread use, but RC4 exhibits serious biases and is no longer fit for use (RFC 7465). This leaves SSLv3 with no suitable record protection mechanism.
SSLv3 defines custom constructions for PRF, HMAC, and digital signatures that lack the cryptographic scrutiny of standard TLS constructions. All SSLv3 primitives rely on SHA-1 and MD5, which are considered weak and are being replaced with stronger hash functions such as SHA-256.
The non-deterministic padding used in the CBC construction of SSLv3 trivially permits recovery of plaintext (POODLE attack). The CBC modes use a flawed MAC-then-encrypt construction that cannot be corrected in SSLv3 because the fix relies on TLS extensions, a feature SSLv3 lacks.
The SSLv3 key exchange is vulnerable to man-in-the-middle attacks when renegotiation (RFC 5746) or session resumption (Triple Handshake attack) are used. Both flaws were fixed in TLS via extensions that SSLv3 cannot adopt.