Transport Layer Security Explained

Transport Layer Security (TLS) is a cryptographic protocol designed to provide communications security over a computer network. The protocol is widely used in applications such as email, instant messaging, and voice over IP, but its use in securing HTTPS remains the most publicly visible.

The TLS protocol aims primarily to provide security, including privacy (confidentiality), integrity, and authenticity through the use of cryptography, such as the use of certificates, between two or more communicating computer applications. It runs in the presentation layer and is itself composed of two layers: the TLS record and the TLS handshake protocols.

The closely related Datagram Transport Layer Security (DTLS) is a communications protocol that provides security to datagram-based applications. In technical writing, references to "(D)TLS" are often seen when it applies to both versions.[1]

TLS is a proposed Internet Engineering Task Force (IETF) standard, first defined in 1999, and the current version is TLS 1.3, defined in August 2018. TLS builds on the now-deprecated SSL (Secure Sockets Layer) specifications (1994, 1995, 1996) developed by Netscape Communications for adding the HTTPS protocol to their Netscape Navigator web browser.

Description

Client-server applications use the TLS protocol to communicate across a network in a way designed to prevent eavesdropping and tampering.

Since applications can communicate either with or without TLS (or SSL), it is necessary for the client to request that the server set up a TLS connection.[2] One of the main ways of achieving this is to use a different port number for TLS connections. Port 80 is typically used for unencrypted HTTP traffic while port 443 is the common port used for encrypted HTTPS traffic. Another mechanism is to make a protocol-specific STARTTLS request to the server to switch the connection to TLS – for example, when using the mail and news protocols.

Once the client and server have agreed to use TLS, they negotiate a stateful connection by using a handshaking procedure (see).[3] The protocols use a handshake with an asymmetric cipher to establish not only cipher settings but also a session-specific shared key with which further communication is encrypted using a symmetric cipher. During this handshake, the client and server agree on various parameters used to establish the connection's security:

This concludes the handshake and begins the secured connection, which is encrypted and decrypted with the session key until the connection closes. If any one of the above steps fails, then the TLS handshake fails and the connection is not created.

TLS and SSL do not fit neatly into any single layer of the OSI model or the TCP/IP model.[4] [5] TLS runs "on top of some reliable transport protocol (e.g., TCP)," which would imply that it is above the transport layer. It serves encryption to higher layers, which is normally the function of the presentation layer. However, applications generally use TLS as if it were a transport layer,[4] [5] even though applications using TLS must actively control initiating TLS handshakes and handling of exchanged authentication certificates.

When secured by TLS, connections between a client (e.g., a web browser) and a server (e.g., wikipedia.org) will have all of the following properties:

TLS supports many different methods for exchanging keys, encrypting data, and authenticating message integrity. As a result, secure configuration of TLS involves many configurable parameters, and not all choices provide all of the privacy-related properties described in the list above (see the tables below § Key exchange,, and).

Attempts have been made to subvert aspects of the communications security that TLS seeks to provide, and the protocol has been revised several times to address these security threats. Developers of web browsers have repeatedly revised their products to defend against potential security weaknesses after these were discovered (see TLS/SSL support history of web browsers).

Datagram Transport Layer Security

Datagram Transport Layer Security, abbreviated DTLS, is a related communications protocol providing security to datagram-based applications by allowing them to communicate in a way designed[6] [7] to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the stream-oriented Transport Layer Security (TLS) protocol and is intended to provide similar security guarantees. However, unlike TLS, it can be used with most datagram oriented protocols including User Datagram Protocol (UDP), Datagram Congestion Control Protocol (DCCP), Control And Provisioning of Wireless Access Points (CAPWAP), Stream Control Transmission Protocol (SCTP) encapsulation, and Secure Real-time Transport Protocol (SRTP).

As the DTLS protocol datagram preserves the semantics of the underlying transport—the application it does not suffer from the delays associated with stream protocols, however the application has to deal with packet reordering, loss of datagram and data larger than the size of a datagram network packet. Because DTLS uses UDP or SCTP rather than TCP, it avoids the "TCP meltdown problem",[8] [9] when being used to create a VPN tunnel.

The original 2006 release of DTLS version 1.0 was not a standalone document. It was given as a series of deltas to TLS 1.1.[10] Similarly the follow-up 2012 release of DTLS is a delta to TLS 1.2. It was given the version number of DTLS 1.2 to match its TLS version. Lastly, the 2022 DTLS 1.3 is a delta to TLS 1.3. Like the two previous versions, DTLS 1.3 is intended to provide "equivalent security guarantees [to TLS 1.3] with the exception of order protection/non-replayability".[11]

Many VPN clients including Cisco AnyConnect[12] & InterCloud Fabric,[13] OpenConnect,[14] ZScaler tunnel,[15] F5 Networks Edge VPN Client,[16] and Citrix Systems NetScaler[17] use DTLS to secure UDP traffic. In addition all modern web browsers support DTLS-SRTP[18] for WebRTC.

History and development

SSL and TLS protocols
scope=colProtocolscope=colPublishedscope=colStatus
scope=row
scope=row 1995Deprecated in 2011
scope=row 1996Deprecated in 2015
scope=row 1999Deprecated in 2021 [19] [20]
scope=row 2006Deprecated in 2021
scope=row 2008In use since 2008[21]
scope=row 2018In use since 2018[22]

Secure Data Network System

The Transport Layer Security Protocol (TLS), together with several other basic network security platforms, was developed through a joint initiative begun in August 1986, among the National Security Agency, the National Bureau of Standards, the Defense Communications Agency, and twelve communications and computer corporations who initiated a special project called the Secure Data Network System (SDNS).[23] The program was described in September 1987 at the 10th National Computer Security Conference in an extensive set of published papers. The innovative research program focused on designing the next generation of secure computer communications network and product specifications to be implemented for applications on public and private internets. It was intended to complement the rapidly emerging new OSI internet standards moving forward both in the U.S. government's GOSIP Profiles and in the huge ITU-ISO JTC1 internet effort internationally. Originally known as the SP4 protocol, it was renamed TLS and subsequently published in 1995 as international standard ITU-T X.274|ISO/IEC 10736:1995.

Secure Network Programming (SNP)

Early research efforts towards transport layer security included the Secure Network Programming (SNP) application programming interface (API), which in 1993 explored the approach of having a secure transport layer API closely resembling Berkeley sockets, to facilitate retrofitting pre-existing network applications with security measures. SNP was published and presented in the 1994 USENIX Summer Technical Conference.[24] [25] The SNP project was funded by a grant from NSA to Professor Simon Lam at UT-Austin in 1991.[26] Secure Network Programming won the 2004 ACM Software System Award.[27] [28] Simon Lam was inducted into the Internet Hall of Fame for "inventing secure sockets and implementing the first secure sockets layer, named SNP, in 1993."[29] [30]

SSL 1.0, 2.0, and 3.0

Netscape developed the original SSL protocols, and Taher Elgamal, chief scientist at Netscape Communications from 1995 to 1998, has been described as the "father of SSL".[31] [32] [33] [34] SSL version 1.0 was never publicly released because of serious security flaws in the protocol. Version 2.0, after being released in February 1995 was quickly found to contain a number of security and usability flaws. It used the same cryptographic keys for message authentication and encryption. It had a weak MAC construction that used the MD5 hash function with a secret prefix, making it vulnerable to length extension attacks. It also provided no protection for either the opening handshake or an explicit message close, both of which meant man-in-the-middle attacks could go undetected. Moreover, SSL 2.0 assumed a single service and a fixed domain certificate, conflicting with the widely used feature of virtual hosting in Web servers, so most websites were effectively impaired from using SSL.

These flaws necessitated the complete redesign of the protocol to SSL version 3.0.[33] Released in 1996, it was produced by Paul Kocher working with Netscape engineers Phil Karlton and Alan Freier, with a reference implementation by Christopher Allen and Tim Dierks of Certicom. Newer versions of SSL/TLS are based on SSL 3.0. The 1996 draft of SSL 3.0 was published by IETF as a historical document in .

SSL 2.0 was deprecated in 2011 by . In 2014, SSL 3.0 was found to be vulnerable to the POODLE attack that affects all block ciphers in SSL; RC4, the only non-block cipher supported by SSL 3.0, is also feasibly broken as used in SSL 3.0.[35] SSL 3.0 was deprecated in June 2015 by .

TLS 1.0

TLS 1.0 was first defined in in January 1999 as an upgrade of SSL Version 3.0, and written by Christopher Allen and Tim Dierks of Certicom. As stated in the RFC, "the differences between this protocol and SSL 3.0 are not dramatic, but they are significant enough to preclude interoperability between TLS 1.0 and SSL 3.0". Tim Dierks later wrote that these changes, and the renaming from "SSL" to "TLS", were a face-saving gesture to Microsoft, "so it wouldn't look [like] the IETF was just rubberstamping Netscape's protocol".[36]

The PCI Council suggested that organizations migrate from TLS 1.0 to TLS 1.1 or higher before June 30, 2018.[37] [38] In October 2018, Apple, Google, Microsoft, and Mozilla jointly announced they would deprecate TLS 1.0 and 1.1 in March 2020.[39] TLS 1.0 and 1.1 were formally deprecated in in March 2021.

TLS 1.1

TLS 1.1 was defined in RFC 4346 in April 2006. It is an update from TLS version 1.0. Significant differences in this version include:

Support for TLS versions 1.0 and 1.1 was widely deprecated by web sites around 2020, disabling access to Firefox versions before 24 and Chromium-based browsers before 29.[41] [42]

TLS 1.2

TLS 1.2 was defined in in August 2008. It is based on the earlier TLS 1.1 specification. Major differences include:

All TLS versions were further refined in in March 2011, removing their backward compatibility with SSL such that TLS sessions never negotiate the use of Secure Sockets Layer (SSL) version 2.0. There is currently no formal date for TLS 1.2 to be deprecated. The specifications for TLS 1.2 became redefined as well by the Standards Track Document to keep it as secure as possible; it is to be seen as a failover protocol now, meant only to be negotiated with clients which are unable to talk over TLS 1.3 (The original RFC 5246 definition for TLS 1.2 is since then obsolete).

TLS 1.3

TLS 1.3 was defined in RFC 8446 in August 2018. It is based on the earlier TLS 1.2 specification. Major differences from TLS 1.2 include:[43]

Network Security Services (NSS), the cryptography library developed by Mozilla and used by its web browser Firefox, enabled TLS 1.3 by default in February 2017.[45] TLS 1.3 support was subsequently added — but due to compatibility issues for a small number of users, not automatically enabled[46] — to Firefox 52.0, which was released in March 2017. TLS 1.3 was enabled by default in May 2018 with the release of Firefox 60.0.[47]

Google Chrome set TLS 1.3 as the default version for a short time in 2017. It then removed it as the default, due to incompatible middleboxes such as Blue Coat web proxies.[48]

The intolerance of the new version of TLS was protocol ossification; middleboxes had ossified the protocol's version parameter. As a result, version 1.3 mimics the wire image of version 1.2. This change occurred very late in the design process, only having been discovered during browser deployment.[49] The discovery of this intolerance also led to the prior version negotiation strategy, where the highest matching version was picked, being abandoned due to unworkable levels of ossification.[50] 'Greasing' an extension point, where one protocol participant claims support for non-existent extensions to ensure that unrecognised-but-actually-existent extensions are tolerated and so to resist ossification, was originally designed for TLS, but it has since been adopted elsewhere.[50]

During the IETF 100 Hackathon, which took place in Singapore in 2017, the TLS Group worked on adapting open-source applications to use TLS 1.3.[51] The TLS group was made up of individuals from Japan, United Kingdom, and Mauritius via the cyberstorm.mu team. This work was continued in the IETF 101 Hackathon in London,[52] and the IETF 102 Hackathon in Montreal.

wolfSSL enabled the use of TLS 1.3 as of version 3.11.1, released in May 2017.[53] As the first commercial TLS 1.3 implementation, wolfSSL 3.11.1 supported Draft 18 and now supports Draft 28,[54] the final version, as well as many older versions. A series of blogs were published on the performance difference between TLS 1.2 and 1.3.[55]

In , the popular OpenSSL project released version 1.1.1 of its library, in which support for TLS 1.3 was "the headline new feature".[56]

Support for TLS 1.3 was added to Secure Channel (schannel) for the releases of Windows 11 and Windows Server 2022.[57]

Enterprise Transport Security

The Electronic Frontier Foundation praised TLS 1.3 and expressed concern about the variant protocol Enterprise Transport Security (ETS) that intentionally disables important security measures in TLS 1.3.[58] Originally called Enterprise TLS (eTLS), ETS is a published standard known as the 'ETSI TS103523-3', "Middlebox Security Protocol, Part3: Enterprise Transport Security". It is intended for use entirely within proprietary networks such as banking systems. ETS does not support forward secrecy so as to allow third-party organizations connected to the proprietary networks to be able to use their private key to monitor network traffic for the detection of malware and to make it easier to conduct audits.[59] [60] Despite the claimed benefits, the EFF warned that the loss of forward secrecy could make it easier for data to be exposed along with saying that there are better ways to analyze traffic.

Digital certificates

See main article: Public key certificate. A digital certificate certifies the ownership of a public key by the named subject of the certificate, and indicates certain expected usages of that key. This allows others (relying parties) to rely upon signatures or on assertions made by the private key that corresponds to the certified public key. Keystores and trust stores can be in various formats, such as .pem, .crt, .pfx, and .jks.

Certificate authorities

See main article: Certificate authority. TLS typically relies on a set of trusted third-party certificate authorities to establish the authenticity of certificates. Trust is usually anchored in a list of certificates distributed with user agent software,[61] and can be modified by the relying party.

According to Netcraft, who monitors active TLS certificates, the market-leading certificate authority (CA) has been Symantec since the beginning of their survey (or VeriSign before the authentication services business unit was purchased by Symantec). As of 2015, Symantec accounted for just under a third of all certificates and 44% of the valid certificates used by the 1 million busiest websites, as counted by Netcraft.[62] In 2017, Symantec sold its TLS/SSL business to DigiCert.[63] In an updated report, it was shown that IdenTrust, DigiCert, and Sectigo are the top 3 certificate authorities in terms of market share since May 2019.[64]

As a consequence of choosing X.509 certificates, certificate authorities and a public key infrastructure are necessary to verify the relation between a certificate and its owner, as well as to generate, sign, and administer the validity of certificates. While this can be more convenient than verifying the identities via a web of trust, the 2013 mass surveillance disclosures made it more widely known that certificate authorities are a weak point from a security standpoint, allowing man-in-the-middle attacks (MITM) if the certificate authority cooperates (or is compromised).[65] [66]

Importance of SSL Certificates

Algorithms

See also: Cipher suite.

Key exchange or key agreement

Before a client and server can begin to exchange information protected by TLS, they must securely exchange or agree upon an encryption key and a cipher to use when encrypting data (see). Among the methods used for key exchange/agreement are: public and private keys generated with RSA (denoted TLS_RSA in the TLS handshake protocol), Diffie–Hellman (TLS_DH), ephemeral Diffie–Hellman (TLS_DHE), elliptic-curve Diffie–Hellman (TLS_ECDH), ephemeral elliptic-curve Diffie–Hellman (TLS_ECDHE), anonymous Diffie–Hellman (TLS_DH_anon), pre-shared key (TLS_PSK)[67] and Secure Remote Password (TLS_SRP).[68]

The TLS_DH_anon and TLS_ECDH_anon key agreement methods do not authenticate the server or the user and hence are rarely used because those are vulnerable to man-in-the-middle attacks. Only TLS_DHE and TLS_ECDHE provide forward secrecy.

Public key certificates used during exchange/agreement also vary in the size of the public/private encryption keys used during the exchange and hence the robustness of the security provided. In July 2013, Google announced that it would no longer use 1024-bit public keys and would switch instead to 2048-bit keys to increase the security of the TLS encryption it provides to its users because the encryption strength is directly related to the key size.[69] [70]

Algorithm!scope=col
SSL 2.0scope=colSSL 3.0scope=colTLS 1.0scope=colTLS 1.1scope=colTLS 1.2scope=colTLS 1.3scope=colStatus
Defined for TLS 1.2 in RFCs
[71]
Defined for TLS 1.2 and for TLS 1.3 in .

Cipher

See also: Cipher suite, Block cipher and Cipher security summary.

Cipher security against publicly known feasible attacks
CipherProtocol versionStatus
TypeAlgorithmNominal strength (bits)SSL 2.0SSL 3.0[72] [73] [74] [75] TLS 1.0TLS 1.1TLS 1.2TLS 1.3
Block cipher
with
mode of operation
AES GCM[76] 256, 128Defined for TLS 1.2 in RFCs
AES CCM
AES CBC
Camellia GCM256, 128
Camellia CBC
ARIA GCM256, 128
ARIA CBC
SEED CBC128
3DES EDE CBC[77] 112
GOST R 34.12-2015 Magma CTR256Defined in
GOST R 34.12-2015 Kuznyechik CTR256Defined in
GOST R 34.12-2015 Magma MGM256Defined in
GOST R 34.12-2015 Kuznyechik MGM256Defined in
IDEA CBC128Removed from TLS 1.2
DES CBC56
40[78] Forbidden in TLS 1.1 and later
RC2 CBC40
Stream cipherChaCha20-Poly1305256Defined for TLS 1.2 in RFCs
RC4[79] 128Prohibited in all versions of TLS by
40
NoneNull[80] Defined for TLS 1.2 in RFCs
Notes

Data integrity

A message authentication code (MAC) is used for data integrity. HMAC is used for CBC mode of block ciphers. Authenticated encryption (AEAD) such as GCM and CCM mode uses AEAD-integrated MAC and doesn't use HMAC. HMAC-based PRF, or HKDF is used for TLS handshake.

Algorithm!scope=col
SSL 2.0scope=colSSL 3.0scope=colTLS 1.0scope=colTLS 1.1scope=colTLS 1.2scope=colTLS 1.3scope=colStatus
scope=rowHMAC-MD5Defined for TLS 1.2 in RFCs
scope=rowHMAC-SHA1
scope=rowHMAC-SHA256/384
scope=rowAEAD
scope=rowGOST 28147-89 IMITDefined for TLS 1.2 in .
scope=rowGOST R 34.12-2015 AEADDefined for TLS 1.3 in .

Applications and adoption

In applications design, TLS is usually implemented on top of Transport Layer protocols, encrypting all of the protocol-related data of protocols such as HTTP, FTP, SMTP, NNTP and XMPP.

Historically, TLS has been used primarily with reliable transport protocols such as the Transmission Control Protocol (TCP). However, it has also been implemented with datagram-oriented transport protocols, such as the User Datagram Protocol (UDP) and the Datagram Congestion Control Protocol (DCCP), usage of which has been standardized independently using the term Datagram Transport Layer Security (DTLS).

Websites

A primary use of TLS is to secure World Wide Web traffic between a website and a web browser encoded with the HTTP protocol. This use of TLS to secure HTTP traffic constitutes the HTTPS protocol.[81]

Website protocol support (May 2024)
scope=colProtocol
version
scope=colWebsite
support[82]
scope=colSecurity[83]
scope=row 0.1%
scope=row 1.4%
scope=row 27.9%
scope=row 30.0%
scope=row 99.9%
scope=row 70.1%
Notes

Web browsers

, the latest versions of all major web browsers support TLS 1.0, 1.1, and 1.2, and have them enabled by default. However, not all supported Microsoft operating systems support the latest version of IE. Additionally, many Microsoft operating systems currently support multiple versions of IE, but this has changed according to Microsoft's Internet Explorer Support Lifecycle Policy FAQ, "beginning January 12, 2016, only the most current version of Internet Explorer available for a supported operating system will receive technical support and security updates." The page then goes on to list the latest supported version of IE at that date for each operating system. The next critical date would be when an operating system reaches the end of life stage. Since June 15, 2022, Internet Explorer 11 dropped support for Windows 10 editions which follow Microsoft's Modern Lifecycle Policy.[84] [85]

Mitigations against known attacks are not enough yet:

complete (TLS_FALLBACK_SCSV is implemented since version 20, "anti-POODLE record splitting", which is effective only with client-side implementation, is implemented since version 25, SSL 3.0 itself is disabled by default since version 27. Support of SSL 3.0 itself will be dropped since version 31.)

Libraries

See main article: Comparison of TLS implementations. Most SSL and TLS programming libraries are free and open-source software.

a portable open source cryptography library (includes TLS/SSL implementation)

a free implementation (LGPL licensed)

a fork of OpenSSL by OpenBSD project.

a dual licensed implementation

FIPS 140 validated open source library

a free implementation (BSD license with some extensions)

an implementation of SSL and TLS Microsoft Windows as part of its package.

an implementation of SSL and TLS used in OS X and iOS as part of their packages.

A paper presented at the 2012 ACM conference on computer and communications security[87] showed that many applications used some of these SSL libraries incorrectly, leading to vulnerabilities. According to the authors:

"The root cause of most of these vulnerabilities is the terrible design of the APIs to the underlying SSL libraries. Instead of expressing high-level security properties of network tunnels such as confidentiality and authentication, these APIs expose low-level details of the SSL protocol to application developers. As a consequence, developers often use SSL APIs incorrectly, misinterpreting and misunderstanding their manifold parameters, options, side effects, and return values."

Other uses

The Simple Mail Transfer Protocol (SMTP) can also be protected by TLS. These applications use public key certificates to verify the identity of endpoints.

TLS can also be used for tunnelling an entire network stack to create a VPN, which is the case with OpenVPN and OpenConnect. Many vendors have by now married TLS's encryption and authentication capabilities with authorization. There has also been substantial development since the late 1990s in creating client technology outside of Web-browsers, in order to enable support for client/server applications. Compared to traditional IPsec VPN technologies, TLS has some inherent advantages in firewall and NAT traversal that make it easier to administer for large remote-access populations.

TLS is also a standard method for protecting Session Initiation Protocol (SIP) application signaling. TLS can be used for providing authentication and encryption of the SIP signalling associated with VoIP and other SIP-based applications.[88]

Security

Attacks against TLS/SSL

Significant attacks against TLS/SSL are listed below.

In February 2015, IETF issued an informational RFC[89] summarizing the various known attacks against TLS/SSL.

Renegotiation attack

A vulnerability of the renegotiation procedure was discovered in August 2009 that can lead to plaintext injection attacks against SSL 3.0 and all current versions of TLS.[90] For example, it allows an attacker who can hijack an https connection to splice their own requests into the beginning of the conversation the client has with the web server. The attacker can't actually decrypt the client–server communication, so it is different from a typical man-in-the-middle attack. A short-term fix is for web servers to stop allowing renegotiation, which typically will not require other changes unless client certificate authentication is used. To fix the vulnerability, a renegotiation indication extension was proposed for TLS. It will require the client and server to include and verify information about previous handshakes in any renegotiation handshakes.[91] This extension has become a proposed standard and has been assigned the number . The RFC has been implemented by several libraries.[92] [93] [94]

Downgrade attacks: FREAK attack and Logjam attack

See main article: Downgrade attack, FREAK and Logjam (computer security). A protocol downgrade attack (also called a version rollback attack) tricks a web server into negotiating connections with previous versions of TLS (such as SSLv2) that have long since been abandoned as insecure.

Previous modifications to the original protocols, like False Start[95] (adopted and enabled by Google Chrome[96]) or Snap Start, reportedly introduced limited TLS protocol downgrade attacks[97] or allowed modifications to the cipher suite list sent by the client to the server. In doing so, an attacker might succeed in influencing the cipher suite selection in an attempt to downgrade the cipher suite negotiated to use either a weaker symmetric encryption algorithm or a weaker key exchange.[98] A paper presented at an ACM conference on computer and communications security in 2012 demonstrated that the False Start extension was at risk: in certain circumstances it could allow an attacker to recover the encryption keys offline and to access the encrypted data.[99]

Encryption downgrade attacks can force servers and clients to negotiate a connection using cryptographically weak keys. In 2014, a man-in-the-middle attack called FREAK was discovered affecting the OpenSSL stack, the default Android web browser, and some Safari browsers.[100] The attack involved tricking servers into negotiating a TLS connection using cryptographically weak 512 bit encryption keys.

Logjam is a security exploit discovered in May 2015 that exploits the option of using legacy "export-grade" 512-bit Diffie–Hellman groups dating back to the 1990s.[101] It forces susceptible servers to downgrade to cryptographically weak 512-bit Diffie–Hellman groups. An attacker can then deduce the keys the client and server determine using the Diffie–Hellman key exchange.

Cross-protocol attacks: DROWN

See main article: DROWN attack. The DROWN attack is an exploit that attacks servers supporting contemporary SSL/TLS protocol suites by exploiting their support for the obsolete, insecure, SSLv2 protocol to leverage an attack on connections using up-to-date protocols that would otherwise be secure.[102] [103] DROWN exploits a vulnerability in the protocols used and the configuration of the server, rather than any specific implementation error. Full details of DROWN were announced in March 2016, together with a patch for the exploit. At that time, more than 81,000 of the top 1 million most popular websites were among the TLS protected websites that were vulnerable to the DROWN attack.[103]

BEAST attack

On September 23, 2011, researchers Thai Duong and Juliano Rizzo demonstrated a proof of concept called BEAST (Browser Exploit Against SSL/TLS)[104] using a Java applet to violate same origin policy constraints, for a long-known cipher block chaining (CBC) vulnerability in TLS 1.0:[105] [106] an attacker observing 2 consecutive ciphertext blocks C0, C1 can test if the plaintext block P1 is equal to x by choosing the next plaintext block ; as per CBC operation,, which will be equal to C1 if . Practical exploits had not been previously demonstrated for this vulnerability, which was originally discovered by Phillip Rogaway[107] in 2002. The vulnerability of the attack had been fixed with TLS 1.1 in 2006, but TLS 1.1 had not seen wide adoption prior to this attack demonstration.

RC4 as a stream cipher is immune to BEAST attack. Therefore, RC4 was widely used as a way to mitigate BEAST attack on the server side. However, in 2013, researchers found more weaknesses in RC4. Thereafter enabling RC4 on server side was no longer recommended.[108]

Chrome and Firefox themselves are not vulnerable to BEAST attack,[109] [110] however, Mozilla updated their NSS libraries to mitigate BEAST-like attacks. NSS is used by Mozilla Firefox and Google Chrome to implement SSL. Some web servers that have a broken implementation of the SSL specification may stop working as a result.[111]

Microsoft released Security Bulletin MS12-006 on January 10, 2012, which fixed the BEAST vulnerability by changing the way that the Windows Secure Channel (Schannel) component transmits encrypted network packets from the server end.[112] Users of Internet Explorer (prior to version 11) that run on older versions of Windows (Windows 7, Windows 8 and Windows Server 2008 R2) can restrict use of TLS to 1.1 or higher.

Apple fixed BEAST vulnerability by implementing 1/n-1 split and turning it on by default in OS X Mavericks, released on October 22, 2013.[113]

CRIME and BREACH attacks

See main article: CRIME and BREACH. The authors of the BEAST attack are also the creators of the later CRIME attack, which can allow an attacker to recover the content of web cookies when data compression is used along with TLS.[114] [115] When used to recover the content of secret authentication cookies, it allows an attacker to perform session hijacking on an authenticated web session.

While the CRIME attack was presented as a general attack that could work effectively against a large number of protocols, including but not limited to TLS, and application-layer protocols such as SPDY or HTTP, only exploits against TLS and SPDY were demonstrated and largely mitigated in browsers and servers. The CRIME exploit against HTTP compression has not been mitigated at all, even though the authors of CRIME have warned that this vulnerability might be even more widespread than SPDY and TLS compression combined. In 2013 a new instance of the CRIME attack against HTTP compression, dubbed BREACH, was announced. Based on the CRIME attack a BREACH attack can extract login tokens, email addresses or other sensitive information from TLS encrypted web traffic in as little as 30 seconds (depending on the number of bytes to be extracted), provided the attacker tricks the victim into visiting a malicious web link or is able to inject content into valid pages the user is visiting (ex: a wireless network under the control of the attacker).[116] All versions of TLS and SSL are at risk from BREACH regardless of the encryption algorithm or cipher used.[117] Unlike previous instances of CRIME, which can be successfully defended against by turning off TLS compression or SPDY header compression, BREACH exploits HTTP compression which cannot realistically be turned off, as virtually all web servers rely upon it to improve data transmission speeds for users.[116] This is a known limitation of TLS as it is susceptible to chosen-plaintext attack against the application-layer data it was meant to protect.

Timing attacks on padding

Earlier TLS versions were vulnerable against the padding oracle attack discovered in 2002. A novel variant, called the Lucky Thirteen attack, was published in 2013.

Some experts also recommended avoiding triple DES CBC. Since the last supported ciphers developed to support any program using Windows XP's SSL/TLS library like Internet Explorer on Windows XP are RC4 and Triple-DES, and since RC4 is now deprecated (see discussion of RC4 attacks), this makes it difficult to support any version of SSL for any program using this library on XP.

A fix was released as the Encrypt-then-MAC extension to the TLS specification, released as .[118] The Lucky Thirteen attack can be mitigated in TLS 1.2 by using only AES_GCM ciphers; AES_CBC remains vulnerable. SSL may safeguard email, VoIP, and other types of communications over insecure networks in addition to its primary use case of secure data transmission between a client and the server

POODLE attack

See main article: POODLE. On October 14, 2014, Google researchers published a vulnerability in the design of SSL 3.0, which makes CBC mode of operation with SSL 3.0 vulnerable to a padding attack . They named this attack POODLE (Padding Oracle On Downgraded Legacy Encryption). On average, attackers only need to make 256 SSL 3.0 requests to reveal one byte of encrypted messages.[119]

Although this vulnerability only exists in SSL 3.0 and most clients and servers support TLS 1.0 and above, all major browsers voluntarily downgrade to SSL 3.0 if the handshakes with newer versions of TLS fail unless they provide the option for a user or administrator to disable SSL 3.0 and the user or administrator does so. Therefore, the man-in-the-middle can first conduct a version rollback attack and then exploit this vulnerability.[119]

On December 8, 2014, a variant of POODLE was announced that impacts TLS implementations that do not properly enforce padding byte requirements.[120]

RC4 attacks

Despite the existence of attacks on RC4 that broke its security, cipher suites in SSL and TLS that were based on RC4 were still considered secure prior to 2013 based on the way in which they were used in SSL and TLS. In 2011, the RC4 suite was actually recommended as a work around for the BEAST attack.[121] New forms of attack disclosed in March 2013 conclusively demonstrated the feasibility of breaking RC4 in TLS, suggesting it was not a good workaround for BEAST.[83] An attack scenario was proposed by AlFardan, Bernstein, Paterson, Poettering and Schuldt that used newly discovered statistical biases in the RC4 key table[122] to recover parts of the plaintext with a large number of TLS encryptions.[123] [124] An attack on RC4 in TLS and SSL that requires 13 × 220 encryptions to break RC4 was unveiled on 8 July 2013 and later described as "feasible" in the accompanying presentation at a USENIX Security Symposium in August 2013.[125] [126] In July 2015, subsequent improvements in the attack make it increasingly practical to defeat the security of RC4-encrypted TLS.[127]

As many modern browsers have been designed to defeat BEAST attacks (except Safari for Mac OS X 10.7 or earlier, for iOS 6 or earlier, and for Windows; see), RC4 is no longer a good choice for TLS 1.0. The CBC ciphers which were affected by the BEAST attack in the past have become a more popular choice for protection. Mozilla and Microsoft recommend disabling RC4 where possible.[128] [129] prohibits the use of RC4 cipher suites in all versions of TLS.

On September 1, 2015, Microsoft, Google and Mozilla announced that RC4 cipher suites would be disabled by default in their browsers (Microsoft Edge, Internet Explorer 11 on Windows 7/8.1/10, Firefox, and Chrome) in early 2016.[130] [131] [132]

Truncation attack

A TLS (logout) truncation attack blocks a victim's account logout requests so that the user unknowingly remains logged into a web service. When the request to sign out is sent, the attacker injects an unencrypted TCP FIN message (no more data from sender) to close the connection. The server therefore doesn't receive the logout request and is unaware of the abnormal termination.[133]

Published in July 2013,[134] [135] the attack causes web services such as Gmail and Hotmail to display a page that informs the user that they have successfully signed-out, while ensuring that the user's browser maintains authorization with the service, allowing an attacker with subsequent access to the browser to access and take over control of the user's logged-in account. The attack does not rely on installing malware on the victim's computer; attackers need only place themselves between the victim and the web server (e.g., by setting up a rogue wireless hotspot).[133] This vulnerability also requires access to the victim's computer.Another possibility is when using FTP the data connection can have a false FIN in the data stream, and if the protocol rules for exchanging close_notify alerts is not adhered to a file can be truncated.

Plaintext attack against DTLS

In February 2013 two researchers from Royal Holloway, University of London discovered a timing attack[136] which allowed them to recover (parts of the) plaintext from a DTLS connection using the OpenSSL or GnuTLS implementation of DTLS when Cipher Block Chaining mode encryption was used.

Unholy PAC attack

This attack, discovered in mid-2016, exploits weaknesses in the Web Proxy Autodiscovery Protocol (WPAD) to expose the URL that a web user is attempting to reach via a TLS-enabled web link.[137] Disclosure of a URL can violate a user's privacy, not only because of the website accessed, but also because URLs are sometimes used to authenticate users. Document sharing services, such as those offered by Google and Dropbox, also work by sending a user a security token that's included in the URL. An attacker who obtains such URLs may be able to gain full access to a victim's account or data.

The exploit works against almost all browsers and operating systems.

Sweet32 attack

The Sweet32 attack breaks all 64-bit block ciphers used in CBC mode as used in TLS by exploiting a birthday attack and either a man-in-the-middle attack or injection of a malicious JavaScript into a web page. The purpose of the man-in-the-middle attack or the JavaScript injection is to allow the attacker to capture enough traffic to mount a birthday attack.[138]

Implementation errors: Heartbleed bug, BERserk attack, Cloudflare bug

See main article: Heartbleed and Cloudbleed. The Heartbleed bug is a serious vulnerability specific to the implementation of SSL/TLS in the popular OpenSSL cryptographic software library, affecting versions 1.0.1 to 1.0.1f. This weakness, reported in April 2014, allows attackers to steal private keys from servers that should normally be protected.[139] The Heartbleed bug allows anyone on the Internet to read the memory of the systems protected by the vulnerable versions of the OpenSSL software. This compromises the secret private keys associated with the public certificates used to identify the service providers and to encrypt the traffic, the names and passwords of the users and the actual content. This allows attackers to eavesdrop on communications, steal data directly from the services and users and to impersonate services and users.[140] The vulnerability is caused by a buffer over-read bug in the OpenSSL software, rather than a defect in the SSL or TLS protocol specification.

In September 2014, a variant of Daniel Bleichenbacher's PKCS#1 v1.5 RSA Signature Forgery vulnerability[141] was announced by Intel Security Advanced Threat Research. This attack, dubbed BERserk, is a result of incomplete ASN.1 length decoding of public key signatures in some SSL implementations, and allows a man-in-the-middle attack by forging a public key signature.[142]

In February 2015, after media reported the hidden pre-installation of superfish adware on some Lenovo notebooks,[143] a researcher found a trusted root certificate on affected Lenovo machines to be insecure, as the keys could easily be accessed using the company name, Komodia, as a passphrase.[144] The Komodia library was designed to intercept client-side TLS/SSL traffic for parental control and surveillance, but it was also used in numerous adware programs, including Superfish, that were often surreptitiously installed unbeknownst to the computer user. In turn, these potentially unwanted programs installed the corrupt root certificate, allowing attackers to completely control web traffic and confirm false websites as authentic.

In May 2016, it was reported that dozens of Danish HTTPS-protected websites belonging to Visa Inc. were vulnerable to attacks allowing hackers to inject malicious code and forged content into the browsers of visitors.[145] The attacks worked because the TLS implementation used on the affected servers incorrectly reused random numbers (nonces) that are intended to be used only once, ensuring that each TLS handshake is unique.[145]

In February 2017, an implementation error caused by a single mistyped character in code used to parse HTML created a buffer overflow error on Cloudflare servers. Similar in its effects to the Heartbleed bug discovered in 2014, this overflow error, widely known as Cloudbleed, allowed unauthorized third parties to read data in the memory of programs running on the servers—data that should otherwise have been protected by TLS.[146]

Survey of websites vulnerable to attacks

, the Trustworthy Internet Movement estimated the ratio of websites that are vulnerable to TLS attacks.[82]

Survey of the TLS vulnerabilities of the most popular websites
scope=col rowspan=2Attacksscope=col colspan=4Security
scope=colInsecurescope=colDependsscope=colSecurescope=colOther
scope=rowRenegotiation attack
scope=rowRC4 attacks
scope=rowTLS Compression (CRIME attack)
scope=rowHeartbleed
scope=rowChangeCipherSpec injection attack
scope=rowPOODLE attack against TLS
(Original POODLE against SSL 3.0 is not included)
scope=rowProtocol downgrade

Forward secrecy

See main article: Forward secrecy. Forward secrecy is a property of cryptographic systems which ensures that a session key derived from a set of public and private keys will not be compromised if one of the private keys is compromised in the future.[147] Without forward secrecy, if the server's private key is compromised, not only will all future TLS-encrypted sessions using that server certificate be compromised, but also any past sessions that used it as well (provided that these past sessions were intercepted and stored at the time of transmission).[148] An implementation of TLS can provide forward secrecy by requiring the use of ephemeral Diffie–Hellman key exchange to establish session keys, and some notable TLS implementations do so exclusively: e.g., Gmail and other Google HTTPS services that use OpenSSL.[149] However, many clients and servers supporting TLS (including browsers and web servers) are not configured to implement such restrictions.[150] [151] In practice, unless a web service uses Diffie–Hellman key exchange to implement forward secrecy, all of the encrypted web traffic to and from that service can be decrypted by a third party if it obtains the server's master (private) key; e.g., by means of a court order.[152]

Even where Diffie–Hellman key exchange is implemented, server-side session management mechanisms can impact forward secrecy. The use of TLS session tickets (a TLS extension) causes the session to be protected by AES128-CBC-SHA256 regardless of any other negotiated TLS parameters, including forward secrecy ciphersuites, and the long-lived TLS session ticket keys defeat the attempt to implement forward secrecy. Stanford University research in 2014 also found that of 473,802 TLS servers surveyed, 82.9% of the servers deploying ephemeral Diffie–Hellman (DHE) key exchange to support forward secrecy were using weak Diffie–Hellman parameters. These weak parameter choices could potentially compromise the effectiveness of the forward secrecy that the servers sought to provide.[153]

Since late 2011, Google has provided forward secrecy with TLS by default to users of its Gmail service, along with Google Docs and encrypted search, among other services.[154] Since November 2013, Twitter has provided forward secrecy with TLS to users of its service.[155], about 80% of TLS-enabled websites are configured to use cipher suites that provide forward secrecy to most web browsers.[82]

TLS interception

TLS interception (or HTTPS interception if applied particularly to that protocol) is the practice of intercepting an encrypted data stream in order to decrypt it, read and possibly manipulate it, and then re-encrypt it and send the data on its way again. This is done by way of a "transparent proxy": the interception software terminates the incoming TLS connection, inspects the HTTP plaintext, and then creates a new TLS connection to the destination.[156]

TLS/HTTPS interception is used as an information security measure by network operators in order to be able to scan for and protect against the intrusion of malicious content into the network, such as computer viruses and other malware.[156] Such content could otherwise not be detected as long as it is protected by encryption, which is increasingly the case as a result of the routine use of HTTPS and other secure protocols.

A significant drawback of TLS/HTTPS interception is that it introduces new security risks of its own. One notable limitation is that it provides a point where network traffic is available unencrypted thus giving attackers an incentive to attack this point in particular in order to gain access to otherwise secure content. The interception also allows the network operator, or persons who gain access to its interception system, to perform man-in-the-middle attacks against network users. A 2017 study found that "HTTPS interception has become startlingly widespread, and that interception products as a class have a dramatically negative impact on connection security".[156]

Protocol details

The TLS protocol exchanges records, which encapsulate the data to be exchanged in a specific format (see below). Each record can be compressed, padded, appended with a message authentication code (MAC), or encrypted, all depending on the state of the connection. Each record has a content type field that designates the type of data encapsulated, a length field and a TLS version field. The data encapsulated may be control or procedural messages of the TLS itself, or simply the application data needed to be transferred by TLS. The specifications (cipher suite, keys etc.) required to exchange application data by TLS, are agreed upon in the "TLS handshake" between the client requesting the data and the server responding to requests. The protocol therefore defines both the structure of payloads transferred in TLS and the procedure to establish and monitor the transfer.

TLS handshake

When the connection starts, the record encapsulates a "control" protocol – the handshake messaging protocol (content type 22). This protocol is used to exchange all the information required by both sides for the exchange of the actual application data by TLS. It defines the format of messages and the order of their exchange. These may vary according to the demands of the client and server – i.e., there are several possible procedures to set up the connection. This initial exchange results in a successful TLS connection (both parties ready to transfer application data with TLS) or an alert message (as specified below).

Basic TLS handshake

A typical connection example follows, illustrating a handshake where the server (but not the client) is authenticated by its certificate:

  1. Negotiation phase:
    • A client sends a ClientHello message specifying the highest TLS protocol version it supports, a random number, a list of suggested cipher suites and suggested compression methods. If the client is attempting to perform a resumed handshake, it may send a session ID. If the client can use Application-Layer Protocol Negotiation, it may include a list of supported application protocols, such as HTTP/2.
    • The server responds with a ServerHello message, containing the chosen protocol version, a random number, cipher suite and compression method from the choices offered by the client. To confirm or allow resumed handshakes the server may send a session ID. The chosen protocol version should be the highest that both the client and server support. For example, if the client supports TLS version 1.1 and the server supports version 1.2, version 1.1 should be selected; version 1.2 should not be selected.
    • The server sends its Certificate message (depending on the selected cipher suite, this may be omitted by the server).[157]
    • The server sends its ServerKeyExchange message (depending on the selected cipher suite, this may be omitted by the server). This message is sent for all DHE, ECDHE and DH_anon cipher suites.
    • The server sends a ServerHelloDone message, indicating it is done with handshake negotiation.
    • The client responds with a ClientKeyExchange message, which may contain a PreMasterSecret, public key, or nothing. (Again, this depends on the selected cipher.) This PreMasterSecret is encrypted using the public key of the server certificate.
    • The client and server then use the random numbers and PreMasterSecret to compute a common secret, called the "master secret". All other key data (session keys such as IV, symmetric encryption key, MAC key[158]) for this connection is derived from this master secret (and the client- and server-generated random values), which is passed through a carefully designed pseudorandom function.
  2. The client now sends a ChangeCipherSpec record, essentially telling the server, "Everything I tell you from now on will be authenticated (and encrypted if encryption parameters were present in the server certificate)." The ChangeCipherSpec is itself a record-level protocol with content type of 20.
    • The client sends an authenticated and encrypted Finished message, containing a hash and MAC over the previous handshake messages.
    • The server will attempt to decrypt the client's Finished message and verify the hash and MAC. If the decryption or verification fails, the handshake is considered to have failed and the connection should be terminated.
  3. Finally, the server sends a ChangeCipherSpec, telling the client, "Everything I tell you from now on will be authenticated (and encrypted, if encryption was negotiated)."
    • The server sends its authenticated and encrypted Finished message.
    • The client performs the same decryption and verification procedure as the server did in the previous step.
  4. Application phase: at this point, the "handshake" is complete and the application protocol is enabled, with content type of 23. Application messages exchanged between client and server will also be authenticated and optionally encrypted exactly like in their Finished message. Otherwise, the content type will return 25 and the client will not authenticate.

Client-authenticated TLS handshake

The following full example shows a client being authenticated (in addition to the server as in the example above; see mutual authentication) via TLS using certificates exchanged between both peers.

  1. Negotiation Phase:
    • A client sends a ClientHello message specifying the highest TLS protocol version it supports, a random number, a list of suggested cipher suites and compression methods.
    • The server responds with a ServerHello message, containing the chosen protocol version, a random number, cipher suite and compression method from the choices offered by the client. The server may also send a session id as part of the message to perform a resumed handshake.
    • The server sends its Certificate message (depending on the selected cipher suite, this may be omitted by the server).[157]
    • The server sends its ServerKeyExchange message (depending on the selected cipher suite, this may be omitted by the server). This message is sent for all DHE, ECDHE and DH_anon ciphersuites.
    • The server sends a CertificateRequest message, to request a certificate from the client.
    • The server sends a ServerHelloDone message, indicating it is done with handshake negotiation.
    • The client responds with a Certificate message, which contains the client's certificate, but not its private key.
    • The client sends a ClientKeyExchange message, which may contain a PreMasterSecret, public key, or nothing. (Again, this depends on the selected cipher.) This PreMasterSecret is encrypted using the public key of the server certificate.
    • The client sends a CertificateVerify message, which is a signature over the previous handshake messages using the client's certificate's private key. This signature can be verified by using the client's certificate's public key. This lets the server know that the client has access to the private key of the certificate and thus owns the certificate.
    • The client and server then use the random numbers and PreMasterSecret to compute a common secret, called the "master secret". All other key data ("session keys") for this connection is derived from this master secret (and the client- and server-generated random values), which is passed through a carefully designed pseudorandom function.
  2. The client now sends a ChangeCipherSpec record, essentially telling the server, "Everything I tell you from now on will be authenticated (and encrypted if encryption was negotiated). "The ChangeCipherSpec is itself a record-level protocol and has type 20 and not 22.
    • Finally, the client sends an encrypted Finished message, containing a hash and MAC over the previous handshake messages.
    • The server will attempt to decrypt the client's Finished message and verify the hash and MAC. If the decryption or verification fails, the handshake is considered to have failed and the connection should be torn down.
  3. Finally, the server sends a ChangeCipherSpec, telling the client, "Everything I tell you from now on will be authenticated (and encrypted if encryption was negotiated)."
    • The server sends its own encrypted Finished message.
    • The client performs the same decryption and verification procedure as the server did in the previous step.
  4. Application phase: at this point, the "handshake" is complete and the application protocol is enabled, with content type of 23. Application messages exchanged between client and server will also be encrypted exactly like in their Finished message.

Resumed TLS handshake

Public key operations (e.g., RSA) are relatively expensive in terms of computational power. TLS provides a secure shortcut in the handshake mechanism to avoid these operations: resumed sessions. Resumed sessions are implemented using session IDs or session tickets.

Apart from the performance benefit, resumed sessions can also be used for single sign-on, as it guarantees that both the original session and any resumed session originate from the same client. This is of particular importance for the FTP over TLS/SSL protocol, which would otherwise suffer from a man-in-the-middle attack in which an attacker could intercept the contents of the secondary data connections.[159]

TLS 1.3 handshake

The TLS 1.3 handshake was condensed to only one round trip compared to the two round trips required in previous versions of TLS/SSL.

To start the handshake, the client guesses which key exchange algorithm will be selected by the server and sends a ClientHello message to the server containing a list of supported ciphers (in order of the client's preference) and public keys for some or all of its key exchange guesses. If the client successfully guesses the key exchange algorithm, 1 round trip is eliminated from the handshake. After receiving the ClientHello, the server selects a cipher and sends back a ServerHello with its own public key, followed by server Certificate and Finished messages.[160]

After the client receives the server's finished message, it now is coordinated with the server on which cipher suite to use.[161]

Session IDs

In an ordinary full handshake, the server sends a session id as part of the ServerHello message. The client associates this session id with the server's IP address and TCP port, so that when the client connects again to that server, it can use the session id to shortcut the handshake. In the server, the session id maps to the cryptographic parameters previously negotiated, specifically the "master secret". Both sides must have the same "master secret" or the resumed handshake will fail (this prevents an eavesdropper from using a session id). The random data in the ClientHello and ServerHello messages virtually guarantee that the generated connection keys will be different from in the previous connection. In the RFCs, this type of handshake is called an abbreviated handshake. It is also described in the literature as a restart handshake.

  1. Negotiation phase:
    • A client sends a ClientHello message specifying the highest TLS protocol version it supports, a random number, a list of suggested cipher suites and compression methods. Included in the message is the session id from the previous TLS connection.
    • The server responds with a ServerHello message, containing the chosen protocol version, a random number, cipher suite and compression method from the choices offered by the client. If the server recognizes the session id sent by the client, it responds with the same session id. The client uses this to recognize that a resumed handshake is being performed. If the server does not recognize the session id sent by the client, it sends a different value for its session id. This tells the client that a resumed handshake will not be performed. At this point, both the client and server have the "master secret" and random data to generate the key data to be used for this connection.
  2. The server now sends a ChangeCipherSpec record, essentially telling the client, "Everything I tell you from now on will be encrypted." The ChangeCipherSpec is itself a record-level protocol and has type 20 and not 22.
    • Finally, the server sends an encrypted Finished message, containing a hash and MAC over the previous handshake messages.
    • The client will attempt to decrypt the server's Finished message and verify the hash and MAC. If the decryption or verification fails, the handshake is considered to have failed and the connection should be torn down.
  3. Finally, the client sends a ChangeCipherSpec, telling the server, "Everything I tell you from now on will be encrypted."
    • The client sends its own encrypted Finished message.
    • The server performs the same decryption and verification procedure as the client did in the previous step.
  4. Application phase: at this point, the "handshake" is complete and the application protocol is enabled, with content type of 23. Application messages exchanged between client and server will also be encrypted exactly like in their Finished message.
Session tickets

extends TLS via use of session tickets, instead of session IDs. It defines a way to resume a TLS session without requiring that session-specific state is stored at the TLS server.

When using session tickets, the TLS server stores its session-specific state in a session ticket and sends the session ticket to the TLS client for storing. The client resumes a TLS session by sending the session ticket to the server, and the server resumes the TLS session according to the session-specific state in the ticket. The session ticket is encrypted and authenticated by the server, and the server verifies its validity before using its contents.

One particular weakness of this method with OpenSSL is that it always limits encryption and authentication security of the transmitted TLS session ticket to AES128-CBC-SHA256, no matter what other TLS parameters were negotiated for the actual TLS session.[162] This means that the state information (the TLS session ticket) is not as well protected as the TLS session itself. Of particular concern is OpenSSL's storage of the keys in an application-wide context (SSL_CTX), i.e. for the life of the application, and not allowing for re-keying of the AES128-CBC-SHA256 TLS session tickets without resetting the application-wide OpenSSL context (which is uncommon, error-prone and often requires manual administrative intervention).[163] [164]

TLS record

This is the general format of all TLS records.

TLS record format, general
scope=colOffsetscope=col style=width:22%Byte+0scope=col style=width:22%Byte+1scope=col style=width:22%Byte+2scope=col style=width:22%Byte+3
scope=rowByte
0
style=background:#dfdContent typecolspan=3
scope=row rowspan=2Bytes
1–4
Legacy versionLength
(Major)(Minor)(bits 15–8)(bits 7–0)
scope=rowBytes
5–(m−1)
Protocol message(s)
scope=rowBytes
m–(p−1)
MAC (optional)
scope=rowBytes
p–(q−1)
Padding (block ciphers only)
Content type
  • This field identifies the Record Layer Protocol Type contained in this record.
    Content types
    scope=colHexscope=colDecscope=colType
    scope=row0×1420ChangeCipherSpec
    scope=row0×1521Alert
    scope=row0×1622Handshake
    scope=row0×1723Application
    scope=row0×1824Heartbeat
    Legacy version
  • This field identifies the major and minor version of TLS prior to TLS 1.3 for the contained message. For a ClientHello message, this need not be the highest version supported by the client. For TLS 1.3 and later, this must to be set 0x0303 and application must send supported versions in an extra message extension block.
    Versions
    scope=colMajor
    version
    scope=colMinor
    version
    scope=colVersion type
    scope=row30SSL 3.0
    scope=row31TLS 1.0
    scope=row32TLS 1.1
    scope=row33TLS 1.2
    scope=row34TLS 1.3
    Length

    The length of "protocol message(s)", "MAC" and "padding" fields combined (i.e. q−5), not to exceed 214 bytes (16 KiB).

    Protocol message(s)
  • One or more messages identified by the Protocol field. Note that this field may be encrypted depending on the state of the connection.
    MAC and padding
  • A message authentication code computed over the "protocol message(s)" field, with additional key material included. Note that this field may be encrypted, or not included entirely, depending on the state of the connection.
  • No "MAC" or "padding" fields can be present at end of TLS records before all cipher algorithms and parameters have been negotiated and handshaked and then confirmed by sending a CipherStateChange record (see below) for signalling that these parameters will take effect in all further records sent by the same peer.

    Handshake protocol

    Most messages exchanged during the setup of the TLS session are based on this record, unless an error or warning occurs and needs to be signaled by an Alert protocol record (see below), or the encryption mode of the session is modified by another record (see ChangeCipherSpec protocol below).

    TLS record format for handshake protocol
    scope=colOffsetscope=col style=width:22%Byte+0scope=col style=width:22%Byte+1scope=col style=width:22%Byte+2scope=col style=width:22%Byte+3
    scope=rowByte
    0
    style=background:#dfd22colspan=3
    scope=row rowspan=2Bytes
    1–4
    Legacy versionLength
    (Major)(Minor)(bits 15–8)(bits 7–0)
    scope=row rowspan=2Bytes
    5–8
    Message typeHandshake message data length
    (bits 23–16)(bits 15–8)(bits 7–0)
    scope=rowBytes
    9–(n−1)
    Handshake message data
    scope=row rowspan=2Bytes
    n–(n+3)
    Message typeHandshake message data length
    (bits 23–16)(bits 15–8)(bits 7–0)
    scope=rowBytes
    (n+4)–
    Handshake message data
    Message type: This field identifies the handshake message type.
    Message types
    scope=colCodescope=colDescription
    scope=row0HelloRequest
    scope=row1ClientHello
    scope=row2ServerHello
    scope=row4NewSessionTicket
    scope=row8EncryptedExtensions (TLS 1.3 only)
    scope=row11Certificate
    scope=row12ServerKeyExchange
    scope=row13CertificateRequest
    scope=row14ServerHelloDone
    scope=row15CertificateVerify
    scope=row16ClientKeyExchange
    scope=row20Finished
    Handshake message data length
  • This is a 3-byte field indicating the length of the handshake data, not including the header.

    Note that multiple handshake messages may be combined within one record.

    Alert protocol

    This record should normally not be sent during normal handshaking or application exchanges. However, this message can be sent at any time during the handshake and up to the closure of the session. If this is used to signal a fatal error, the session will be closed immediately after sending this record, so this record is used to give a reason for this closure. If the alert level is flagged as a warning, the remote can decide to close the session if it decides that the session is not reliable enough for its needs (before doing so, the remote may also send its own signal).

    TLS record format for alert protocol
    scope=colOffsetscope=col style=width:22%Byte+0scope=col style=width:22%Byte+1scope=col style=width:22%Byte+2scope=col style=width:22%Byte+3
    scope=rowByte
    0
    style=background:#dfd21colspan=3
    scope=row rowspan=2Bytes
    1–4
    Legacy versionLength
    (Major)(Minor)02
    Bytes
    5–6
    LevelDescriptioncolspan=2
    Bytes
    7–(p−1)
    MAC (optional)
    Bytes
    p–(q−1)
    Padding (block ciphers only)
    Level
  • This field identifies the level of alert. If the level is fatal, the sender should close the session immediately. Otherwise, the recipient may decide to terminate the session itself, by sending its own fatal alert and closing the session itself immediately after sending it. The use of Alert records is optional, however if it is missing before the session closure, the session may be resumed automatically (with its handshakes).
  • Normal closure of a session after termination of the transported application should preferably be alerted with at least the Close notify Alert type (with a simple warning level) to prevent such automatic resume of a new session. Signalling explicitly the normal closure of a secure session before effectively closing its transport layer is useful to prevent or detect attacks (like attempts to truncate the securely transported data, if it intrinsically does not have a predetermined length or duration that the recipient of the secured data may expect).
    Alert level types
    scope=colCodescope=colLevel typescope=colConnection state
    scope=row1style=background:yellow;text-align:centerwarningconnection or security may be unstable.
    scope=row2style=background:red;text-align:centerfatalconnection or security may be compromised, or an unrecoverable error has occurred.
    Description
  • This field identifies which type of alert is being sent.
    Alert description types
    scope=colCodescope=colDescriptionscope=colLevel typesscope=colNote
    scope=row0Close notifystyle=background:orange;text-align:centerwarning/fatal
    scope=row10Unexpected messagestyle=background:red;text-align:centerfatal
    scope=row20Bad record MACstyle=background:red;text-align:centerfatalPossibly a bad SSL implementation, or payload has been tampered with e.g. FTP firewall rule on FTPS server.
    scope=row21Decryption failedstyle=background:red;text-align:centerfatalTLS only, reserved
    scope=row22Record overflowstyle=background:red;text-align:centerfatalTLS only
    scope=row30Decompression failurestyle=background:red;text-align:centerfatal
    scope=row40Handshake failurestyle=background:red;text-align:centerfatal
    scope=row41No certificatestyle=background:orange;text-align:centerwarning/fatalSSL 3.0 only, reserved
    scope=row42Bad certificatestyle=background:orange;text-align:centerwarning/fatal
    scope=row43Unsupported certificatestyle=background:orange;text-align:centerwarning/fatale.g. certificate has only server authentication usage enabled and is presented as a client certificate
    scope=row44Certificate revokedstyle=background:orange;text-align:centerwarning/fatal
    scope=row45Certificate expiredstyle=background:orange;text-align:centerwarning/fatalCheck server certificate expire also check no certificate in the chain presented has expired
    scope=row46Certificate unknownstyle=background:orange;text-align:centerwarning/fatal
    scope=row47Illegal parameterstyle=background:red;text-align:centerfatal
    scope=row48Unknown CA (Certificate authority)style=background:red;text-align:centerfatalTLS only
    scope=row49Access deniedstyle=background:red;text-align:centerfatalTLS only – e.g. no client certificate has been presented (TLS: Blank certificate message or SSLv3: No Certificate alert), but server is configured to require one.
    scope=row50Decode errorstyle=background:red;text-align:centerfatalTLS only
    scope=row51Decrypt errorstyle=background:orange;text-align:centerwarning/fatalTLS only
    scope=row60Export restrictionstyle=background:red;text-align:centerfatalTLS only, reserved
    scope=row70Protocol versionstyle=background:red;text-align:centerfatalTLS only
    scope=row71Insufficient securitystyle=background:red;text-align:centerfatalTLS only
    scope=row80Internal errorstyle=background:red;text-align:centerfatalTLS only
    scope=row86Inappropriate fallbackstyle=background:red;text-align:centerfatalTLS only
    scope=row90User canceledstyle=background:red;text-align:centerfatalTLS only
    scope=row100No renegotiationstyle=background:yellow;text-align:centerwarningTLS only
    scope=row110Unsupported extensionstyle=background:yellow;text-align:centerwarningTLS only
    scope=row111Certificate unobtainablestyle=background:yellow;text-align:centerwarningTLS only
    scope=row112Unrecognized namestyle=background:orange;text-align:centerwarning/fatalTLS only; client's Server Name Indicator specified a hostname not supported by the server
    scope=row113Bad certificate status responsestyle=background:red;text-align:centerfatalTLS only
    scope=row114Bad certificate hash valuestyle=background:red;text-align:centerfatalTLS only
    scope=row115Unknown PSK identity (used in TLS-PSK and TLS-SRP)style=background:red;text-align:centerfatalTLS only
    scope=row116Certificate requiredstyle=background:red;text-align:centerfatalTLS version 1.3 only
    scope=row120 or 255No application protocolstyle=background:red;text-align:centerfatalTLS version 1.3 only

    ChangeCipherSpec protocol

    TLS record format for ChangeCipherSpec protocol
    scope=colOffsetscope=col style=width:22%Byte+0scope=col style=width:22%Byte+1scope=col style=width:22%Byte+2scope=col style=width:22%Byte+3
    scope=rowByte
    0
    style=background:#dfd20colspan=3
    scope=row rowspan=2Bytes
    1–4
    Legacy versionLength
    (Major)(Minor)01
    Byte
    5
    CCS protocol type
    CCS protocol type
  • Currently only 1.

    Application protocol

    TLS record format for application protocol
    scope=colOffsetscope=col style=width:22%Byte+0scope=col style=width:22%Byte+1scope=col style=width:22%Byte+2scope=col style=width:22%Byte+3
    scope=rowByte
    0
    style=background:#dfd23colspan=3
    scope=row rowspan=2Bytes
    1–4
    Legacy versionLength
    (Major)(Minor)(bits 15–8)(bits 7–0)
    Bytes
    5–(m−1)
    Application data
    Bytes
    m–(p−1)
    MAC (optional)
    Bytes
    p–(q−1)
    Padding (block ciphers only)
    Length
  • Length of application data (excluding the protocol header and including the MAC and padding trailers)
    MAC
  • 32 bytes for the SHA-256-based HMAC, 20 bytes for the SHA-1-based HMAC, 16 bytes for the MD5-based HMAC.
    Padding
  • Variable length; last byte contains the padding length.

    Support for name-based virtual servers

    From the application protocol point of view, TLS belongs to a lower layer, although the TCP/IP model is too coarse to show it. This means that the TLS handshake is usually (except in the STARTTLS case) performed before the application protocol can start. In the name-based virtual server feature being provided by the application layer, all co-hosted virtual servers share the same certificate because the server has to select and send a certificate immediately after the ClientHello message. This is a big problem in hosting environments because it means either sharing the same certificate among all customers or using a different IP address for each of them.

    There are two known workarounds provided by X.509:

    To provide the server name, Transport Layer Security (TLS) Extensions allow clients to include a Server Name Indication extension (SNI) in the extended ClientHello message. This extension hints to the server immediately which name the client wishes to connect to, so the servercan select the appropriate certificate to send to the clients.

    also documents a method to implement name-based virtual hosting by upgrading HTTP to TLS via an HTTP/1.1 Upgrade header. Normally this is to securely implement HTTP over TLS within the main "http" URI scheme (which avoids forking the URI space and reduces the number of used ports), however, few implementations currently support this.

    See also

    Further reading

    Primary standards

    The current approved version of (D)TLS is version 1.3, which are specified in:

    "The Transport Layer Security (TLS) Protocol Version 1.3".

    "The Datagram Transport Layer Security (DTLS) Protocol Version 1.3"

    The current standards replaces these former versions, which are now considered obsolete:

    "The Transport Layer Security (TLS) Protocol Version 1.2".

    "Datagram Transport Layer Security Version 1.2"

    "The Transport Layer Security (TLS) Protocol Version 1.1".

    "The TLS Protocol Version 1.0".

    "The Secure Sockets Layer (SSL) Protocol Version 3.0".

    "The SSL Protocol"

    Extensions

    Other RFCs subsequently extended (D)TLS.

    Extensions to (D)TLS 1.3 include:

    "GOST Cipher Suites for Transport Layer Security (TLS) Protocol Version 1.3".Extensions to (D)TLS 1.2 include:

    "AES Galois Counter Mode (GCM) Cipher Suites for TLS".

    "TLS Elliptic Curve Cipher Suites with SHA-256/384 and AES Galois Counter Mode (GCM)".

    "Transport Layer Security (TLS) Renegotiation Indication Extension".

    "Transport Layer Security (TLS) Authorization Extensions".

    "Camellia Cipher Suites for TLS"

    "Transport Layer Security (TLS) Extensions: Extension Definitions", includes Server Name Indication and OCSP stapling.

    "Using OpenPGP Keys for Transport Layer Security (TLS) Authentication".

    "Prohibiting Secure Sockets Layer (SSL) Version 2.0".

    "Addition of the ARIA Cipher Suites to Transport Layer Security (TLS)".

    "Datagram Transport Layer Security Version 1.2".

    "Addition of the Camellia Cipher Suites to Transport Layer Security (TLS)".

    "Suite B Profile for Transport Layer Security (TLS)".

    "AES-CCM Cipher Suites for Transport Layer Security (TLS)".

    "Elliptic Curve Cryptography (ECC) Brainpool Curves for Transport Layer Security (TLS)".

    "AES-CCM Elliptic Curve Cryptography (ECC) Cipher Suites for TLS".

    "Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension".

    "Encrypt-then-MAC for Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)".

    "Prohibiting RC4 Cipher Suites".

    "TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks".

    "Deprecating Secure Sockets Layer Version 3.0".

    "Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension".

    "A Transport Layer Security (TLS) ClientHello Padding Extension".

    "GOST Cipher Suites for Transport Layer Security (TLS) Protocol Version 1.2".Extensions to (D)TLS 1.1 include:

    "Transport Layer Security (TLS) Extensions" describes both a set of specific extensions and a generic extension mechanism.

    "Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)".

    "TLS Handshake Message for Supplemental Data".

    "TLS User Mapping Extension".

    "Pre-Shared Key (PSK) Ciphersuites with NULL Encryption for Transport Layer Security (TLS)".

    "Using the Secure Remote Password (SRP) Protocol for TLS Authentication". Defines the TLS-SRP ciphersuites.

    "Transport Layer Security (TLS) Session Resumption without Server-Side State".

    "Using OpenPGP Keys for Transport Layer Security (TLS) Authentication", obsoleted by .

    "The EAP-TLS Authentication Protocol"

    Extensions to TLS 1.0 include:

    "Using TLS with IMAP, POP3 and ACAP". Specifies an extension to the IMAP, POP3 and ACAP services that allow the server and client to use transport-layer security to provide private, authenticated communication over the Internet.

    "Addition of Kerberos Cipher Suites to Transport Layer Security (TLS)". The 40-bit cipher suites defined in this memo appear only for the purpose of documenting the fact that those cipher suite codes have already been assigned.

    "Upgrading to TLS Within HTTP/1.1", explains how to use the Upgrade mechanism in HTTP/1.1 to initiate Transport Layer Security (TLS) over an existing TCP connection. This allows unsecured and secured HTTP traffic to share the same well known port (in this case, http: at 80 rather than https: at 443).

    "HTTP Over TLS", distinguishes secured traffic from insecure traffic by the use of a different 'server port'.

    "SMTP Service Extension for Secure SMTP over Transport Layer Security". Specifies an extension to the SMTP service that allows an SMTP server and client to use transport-layer security to provide private, authenticated communication over the Internet.

    "AES Ciphersuites for TLS". Adds Advanced Encryption Standard (AES) cipher suites to the previously existing symmetric ciphers.

    "Transport Layer Security (TLS) Extensions", adds a mechanism for negotiating protocol extensions during session initialisation and defines some extensions. Made obsolete by .

    "Transport Layer Security Protocol Compression Methods", specifies the framework for compression methods and the DEFLATE compression method.

    "Transport Layer Security (TLS) Protocol Compression Using Lempel-Ziv-Stac (LZS)".

    "Addition of Camellia Cipher Suites to Transport Layer Security (TLS)".

    "Addition of SEED Cipher Suites to Transport Layer Security (TLS)".

    "Securing FTP with TLS".

    "Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)", adds three sets of new cipher suites for the TLS protocol to support authentication based on pre-shared keys.

    Informational RFCs

    "Summarizing Known Attacks on Transport Layer Security (TLS) and Datagram TLS (DTLS)"

    "Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)"

    External links

    Notes and References

    1. i.e. News: Delegated Credentials for (D)TLS . 2024-06-26 . Ietf . en . 2024-06-26 . https://web.archive.org/web/20240626174852/https://datatracker.ietf.org/doc/html/draft-ietf-tls-subcerts-15 . live .
    2. Lawrence. Scott. Khare. Rohit. Upgrading to TLS Within HTTP/1.1. 2817. Internet Engineering Task Force. May 2000.
    3. Web site: SSL/TLS in Detail. TechNet. Microsoft Docs. October 8, 2009. 2021-10-24. 2022-08-13. https://web.archive.org/web/20220813015525/https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc785811(v=ws.10). live.
    4. Book: Hooper. Howard. CCNP Security VPN 642–648 Official Cert Guide. 2012. Cisco Press. 9780132966382. 22. 2.
    5. Web site: What layer is TLS?. Information Security Stack Exchange. Andrew. Spott. Tom. Leek. etal. 2017-04-13. 2021-02-13. https://web.archive.org/web/20210213050549/https://security.stackexchange.com/questions/93333/what-layer-is-tls/93338. live.
    6. 4347. Datagram Transport Layer Security. Eric. Rescorla. Nagendra. Modadugu. April 2006.
    7. 6347. Datagram Transport Layer Security Version 1.2. Eric. Rescorla. Nagendra. Modadugu. January 2012.
    8. Web site: Why TCP Over TCP Is A Bad Idea. Olaf. Titz. 2001-04-23. 2015-10-17. 2023-03-10. https://web.archive.org/web/20230310043036/http://sites.inka.de/bigred/devel/tcp-tcp.html. live.
    9. 2005SPIE.6011..138H. Understanding TCP over TCP: effects of TCP tunneling on end-to-end throughput and latency. Honda, Osamu . Ohsaki, Hiroyuki . Imase, Makoto . Ishizuka, Mika . Murayama, Junichi . 8945952. Performance, Quality of Service, and Control of Next-Generation Communication and Sensor Networks III. 6011. October 2005. 10.1117/12.630496. 10.1.1.78.5815. Atiquzzaman. Mohammed. Balandin. Sergey I.
    10. § 4
    11. 9147 . The Datagram Transport Layer Security (DTLS) Protocol Version 1.3 . April 21, 2022 . Rescorla . Eric . Tschofenig . Hannes . Modadugu . Nagena .
    12. Web site: AnyConnect FAQ: tunnels, reconnect behavior, and the inactivity timer. Cisco. 26 February 2017. 26 February 2017. https://web.archive.org/web/20170226131243/http://www.cisco.com/c/en/us/support/docs/security/anyconnect-secure-mobility-client/116312-qanda-anyconnect-00.html. live.
    13. Web site: Cisco InterCloud Architectural Overview. Cisco Systems. 2022-11-29. 2022-08-09. https://web.archive.org/web/20220809111605/https://www.cisco.com/c/en/us/td/docs/solutions/Hybrid_Cloud/Intercloud/Intercloud_Fabric/Intercloud_Fabric_2.pdf. live.
    14. Web site: OpenConnect . 26 February 2017 . . 2 February 2017 . https://web.archive.org/web/20170202104439/http://www.infradead.org/openconnect/ . live .
    15. Web site: ZScaler ZTNA 2.0 Tunnel. ZScaler. 2022-11-29. 2022-11-29. https://web.archive.org/web/20221129041020/https://help.zscaler.com/z-app/about-z-tunnel-1.0-z-tunnel-2.0. live.
    16. Web site: f5 Datagram Transport Layer Security (DTLS). f5 Networks. 2022-11-29. 2022-11-29. https://web.archive.org/web/20221129041024/https://www.f5.com/glossary/datagram-transport-layer-security-dtls. live.
    17. Web site: Configuring a DTLS Virtual Server . . 2022-11-29 . 2016-12-21 . https://web.archive.org/web/20161221020000/http://docs.citrix.com/en-us/netscaler/11/traffic-management/ssl/config-ssloffloading/config-dtls-vserver.html . live .
    18. Web site: WebRTC Interop Notes . dead . https://web.archive.org/web/20130511043959/https://sites.google.com/site/webrtc/interop . 2013-05-11.
    19. Web site: Here is what is new and changed in Firefox 74.0 Stable – gHacks Tech News. www.ghacks.net. 10 March 2020. 2020-03-10. 2020-03-11. https://web.archive.org/web/20200311120434/https://www.ghacks.net/2020/03/10/here-is-what-is-new-and-changed-in-firefox-74-0-stable/. live.
    20. Web site: TLS 1.0 and TLS 1.1 – Chrome Platform Status. chromestatus.com. 2020-03-10. 2023-07-07. https://web.archive.org/web/20230707094450/https://chromestatus.com/feature/5759116003770368. live.
    21. Web site: Using TLS to protect data. https://web.archive.org/web/20210721072543/ncsc.gov.uk/guidance/using-tls-to-protect-data. July 21, 2021. August 24, 2022. www.ncsc.gov.uk. live.
    22. Web site: TLS 1.3: One Year Later. https://web.archive.org/web/20200708030455/https://www.ietf.org/blog/tls13-adoption. July 8, 2020. August 24, 2022. IETF. live.
    23. Web site: Creating TLS: The Pioneering Role of Ruth Nelson. 2020-07-04. 2020-06-24. https://web.archive.org/web/20200624123447/http://www.circleid.com/posts/20190124_creating_tls_the_pioneering_role_of_ruth_nelson/. live.
    24. Thomas Y. C. . Woo . Raghuram . Bindignavle . Shaowen . Su . Simon S. . Lam . Simon S. Lam . SNP: An interface for secure network programming . Proceedings USENIX Summer Technical Conference . June 1994 . 2023-07-05 . 2014-12-12 . https://web.archive.org/web/20141212000043/http://www.cs.utexas.edu/users/lam/Vita/Cpapers/WBSL94.pdf . live .
    25. Web site: 1994 USENIX Summer Technical Conference Program, Boston, 6–10 June 1994 . 21 January 2024 . 6 October 2023 . https://web.archive.org/web/20231006204601/https://www.usenix.org/legacy/publications/library/proceedings/bos94/ . live .
    26. [Simon S. Lam]
    27. Web site: 2004 ACM Software System Award citation. ACM. 25 July 2012. 17 June 2013. https://web.archive.org/web/20130617014921/http://awards.acm.org/award_winners/lam_1287606.cfm. live.
    28. Web site: ACM Press Release, March 15, 2005. ACM. 25 July 2012. 10 January 2016. https://web.archive.org/web/20160110063723/http://www.cs.utexas.edu/~lam/Awards/SoftwareSystemAward/ACM%20Press%20Release,%20March%2015,%202005.htm. live.
    29. Web site: Internet Hall of Fame inductee Simon S. Lam. 3 Mar 2024. 6 February 2024. https://web.archive.org/web/20240206211215/https://www.internethalloffame.org/inductee/simon-s-lam/. live.
    30. Web site: Computer Scientist Inducted into Internet Hall of Fame. 3 Mar 2024. 8 March 2024. https://web.archive.org/web/20240308192655/https://cns.utexas.edu/news/accolades/computer-scientist-inducted-internet-hall-fame. live.
    31. News: Messmer. Ellen. Father of SSL, Dr. Taher Elgamal, Finds Fast-Moving IT Projects in the Middle East. Network World. 30 May 2014. dead. https://web.archive.org/web/20140531105537/http://www.networkworld.com/news/2012/120412-elgamal-264739.html. 31 May 2014.
    32. News: Greene. Tim. Father of SSL says despite attacks, the security linchpin has lots of life left. Network World. 30 May 2014. dead. https://web.archive.org/web/20140531105257/http://www.networkworld.com/news/2011/101111-elgamal-251806.html. 31 May 2014.
    33. Book: Oppliger, Rolf. SSL and TLS: Theory and Practice. 2nd. 2016. Introduction. https://books.google.com/books?id=jm6uDgAAQBAJ&pg=PA15. 13. Artech House. 978-1-60807-999-5. Google Books. 2018-03-01.
    34. Web site: https://web.archive.org/web/19970614020952/http://home.netscape.com/newsref/std/SSL.html. 14 June 1997. THE SSL PROTOCOL. Netscape Corporation. 2007.
    35. Web site: POODLE: SSLv3 vulnerability (CVE-2014-3566). 21 October 2014. live. https://web.archive.org/web/20141205124712/https://access.redhat.com/articles/1232123. 5 December 2014.
    36. Web site: Security Standards and Name Changes in the Browser Wars. 2020-02-29. 2020-02-29. https://web.archive.org/web/20200229221707/http://tim.dierks.org/2014/05/security-standards-and-name-changes-in.html. live.
    37. Web site: Date Change for Migrating from SSL and Early TLS. Laura K. Gray. 2015-12-18. Payment Card Industry Security Standards Council blog. 2018-04-05. 2015-12-20. https://web.archive.org/web/20151220190802/http://blog.pcisecuritystandards.org/migrating-from-ssl-and-early-tls. live.
    38. News: Changes to PCI Compliance are Coming June 30. Is Your Ecommerce Business Ready?. Forbes. 2018-06-20. en. 2018-06-21. https://web.archive.org/web/20180621020422/https://www.forbes.com/sites/thesba/2018/05/30/changes-to-pci-compliance-are-coming-june-30-is-your-ecommerce-business-ready/. live.
    39. Web site: Apple, Google, Microsoft, and Mozilla come together to end TLS 1.0. Bright. Peter. 17 October 2018. 17 October 2018. 17 October 2018. https://web.archive.org/web/20181017000107/https://arstechnica.com/gadgets/2018/10/browser-vendors-unite-to-end-support-for-20-year-old-tls-1-0/. live.
    40. Web site: Transport Layer Security Parameters – Cipher Suites . 2022-12-16 . Internet Assigned Numbers Authority (IANA) . 2016-12-21 . https://web.archive.org/web/20161221223613/http://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4 . live .
    41. Web site: Mackie. Kurt. Microsoft Delays End of Support for TLS 1.0 and 1.1 -. Microsoft Certified Professional Magazine Online. 2021-06-14. 2021-06-14. https://web.archive.org/web/20210614004948/https://mcpmag.com/articles/2020/04/02/microsoft-tls-1-0-and-1-1.aspx. live.
    42. Web site: TLS 1.2 FAQ – Knowledge Base. Answers.psionline.com. 20 February 2022. 20 February 2022. https://web.archive.org/web/20220220051112/https://answers.psionline.com/knowledgebase/tls-1-2-faq/. live.
    43. Web site: Differences between TLS 1.2 and TLS 1.3 (#TLS13). 2019-09-18. 2019-09-18. WolfSSL. https://web.archive.org/web/20190919000200/https://www.wolfssl.com/differences-between-tls-12-and-tls-13-9. 2019-09-19.
    44. Web site: Archived copy . 2024-03-17 . 2024-03-17 . https://web.archive.org/web/20240317154304/https://datatracker.ietf.org/meeting/116/materials/slides-116-tls-null-encryption-and-key-exchange-without-forward-secrecy-are-discouraged-00 . live .
    45. Web site: NSS 3.29 release notes. February 2017. Mozilla Developer Network. live. https://web.archive.org/web/20170222052829/https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.29_release_notes. 2017-02-22.
    46. Web site: Enable TLS 1.3 by default. 16 October 2016. Bugzilla@Mozilla. 10 October 2017. 12 August 2018. https://web.archive.org/web/20180812021410/https://bugzilla.mozilla.org/show_bug.cgi?id=1310516. live.
    47. Web site: Firefox — Notes (60.0). Mozilla. en-US. 2018-05-10. 2018-05-09. https://web.archive.org/web/20180509230339/https://www.mozilla.org/en-US/firefox/60.0/releasenotes/. live.
    48. Web site: ProxySG, ASG and WSS will interrupt SSL connections when clients using TLS 1.3 access sites also using TLS 1.3. 16 May 2017. BlueTouch Online. 11 September 2017. live. https://web.archive.org/web/20170912061432/http://bluecoat.force.com/knowledgebase/articles/Technical_Alert/000032878. 12 September 2017.
    49. Web site: Why TLS 1.3 isn't in browsers yet. 2017-12-26. The Cloudflare Blog. en. 2020-03-14. Sullivan. Nick. 2017-12-26. https://web.archive.org/web/20171226210134/https://blog.cloudflare.com/why-tls-1-3-isnt-in-browsers-yet/. live.
    50. 9170 . Long-Term Viability of Protocol Extension Mechanisms . December 2021 . Thomson . Martin . Pauly . Tommy .
    51. Web site: TLS 1.3 IETF 100 Hackathon. dead. https://web.archive.org/web/20180115220635/https://datatracker.ietf.org/meeting/100/materials/slides-100-hackathon-sessa-tls-13. 2018-01-15.
    52. News: Hurrah! TLS 1.3 is here. Now to implement it and put it into software. 2018-03-28. en. 2018-03-27. https://web.archive.org/web/20180327213242/https://www.theregister.co.uk/2018/03/27/with_tls_13_signed_off_its_implementation_time/. live.
    53. Web site: wolfSSL TLS 1.3 BETA Release Now Available. 11 May 2017. info@wolfssl.com. 11 May 2017. 9 July 2018. https://web.archive.org/web/20180709065543/https://www.wolfssl.com/wolfssl-tls-1-3-beta-release-now-available/. live.
    54. Web site: TLS 1.3 PROTOCOL SUPPORT. info@wolfssl.com. 2018-07-09. 2018-07-09. https://web.archive.org/web/20180709065545/https://www.wolfssl.com/docs/tls13/. live.
    55. Web site: TLS 1.3 Draft 28 Support in wolfSSL. 14 June 2018. info@wolfssl.com. 14 June 2018. 9 July 2018. https://web.archive.org/web/20180709065545/https://www.wolfssl.com/tls-1-3-draft-28-support-wolfssl/. live.
    56. Web site: OpenSSL 1.1.1 Is Released. 11 Sep 2018 . Matt Caswell. 19 Dec 2018 . 8 December 2018. https://web.archive.org/web/20181208141108/https://www.openssl.org/blog/blog/2018/09/11/release111/. live.
    57. Web site: Protocols in TLS/SSL (Schannel SSP). Microsoft Docs. May 25, 2022. 21 February 2023. 25 January 2023. https://web.archive.org/web/20230125160351/https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-. live.
    58. Web site: ETS Isn't TLS and You Shouldn't Use It. Hoffman-Andrews. Jacob. 2019-02-26. Electronic Frontier Foundation. en. 2019-02-27. 2019-02-26. https://web.archive.org/web/20190226214559/https://www.eff.org/deeplinks/2019/02/ets-isnt-tls-and-you-shouldnt-use-it. live.
    59. Book: TS 103 523-3 – V1.1.1 – CYBER; Middlebox Security Protocol; Part 3: Profile for enterprise network and data centre access control. https://web.archive.org/web/20181114104718/https://www.etsi.org/deliver/etsi_ts/103500_103599/10352303/01.01.01_60/ts_10352303v010101p.pdf. November 14, 2018. PDF. ETSI.org. live.
    60. Web site: Monumental Recklessness. February 26, 2019. https://web.archive.org/web/20190227071044/boingboing.net/2019/02/26/monumental-recklessness.html. February 27, 2019. Boing Boing. Cory Doctorow. live.
    61. Web site: Alternatives to Certification Authorities for a Secure Web. Rea. Scott. 2013. RSA Conference Asia Pacific. 7 September 2016. live. https://web.archive.org/web/20161007222635/https://www.rsaconference.com/writable/presentations/file_upload/sec-t02_final.pdf. 7 October 2016.
    62. Web site: Counting SSL certificates. https://web.archive.org/web/20150516035536/http://news.netcraft.com/archives/2015/05/13/counting-ssl-certificates.html. dead. 16 May 2015. 20 February 2022.
    63. News: Raymond. Art. Lehi's DigiCert swallows web security competitor in $1 billion deal. 21 May 2020. Deseret News. 3 August 2017. 29 September 2018. https://web.archive.org/web/20180929171244/https://www.deseretnews.com/article/865686081/Lehis-DigiCert-swallows-web-security-competitor-in-1-billion-deal.html. live.
    64. Web site: Market share trends for SSL certificate authorities. W3Techs. 21 May 2020.
    65. Law Enforcement Appliance Subverts SSL. https://web.archive.org/web/20140412151324/http://www.wired.com/threatlevel/2010/03/packet-forensics. March 24, 2010. April 12, 2014. wired.com. Ryan Singel. live.
    66. Web site: New Research Suggests That Governments May Fake SSL Certificates. https://web.archive.org/web/20100325223422/http://www.eff.org/deeplinks/2010/03/researchers-reveal-likelihood-governments-fake-ssl. March 24, 2010. March 25, 2010. Seth Schoen. EFF.org. live.
    67. Pre-Shared Key Ciphersuites for Transport Layer Security (TLS). 4279. Internet Engineering Task Force. 9 September 2013. P. Eronen, Ed.. P . H . Eronen . Tschofenig . December 2005.
    68. 5054. Using the Secure Remote Password (SRP) Protocol for TLS Authentication. Internet Engineering Task Force. December 21, 2014. D. Taylor, Ed.. November 2007.
    69. Web site: Gothard. Peter. Google updates SSL certificates to 2048-bit encryption. Computing. 31 July 2013. Incisive Media. 9 September 2013. live. https://web.archive.org/web/20130922082322/http://www.computing.co.uk/ctg/news/2285984/google-updates-ssl-certificates-to-2048bit-encryption. 22 September 2013.
    70. News: The value of 2,048-bit encryption: Why encryption key length matters. SearchSecurity. 2017-12-18. en-US. live. https://web.archive.org/web/20180116081141/http://searchsecurity.techtarget.com/answer/From-1024-to-2048-bit-The-security-effect-of-encryption-key-length. 2018-01-16.
    71. Web site: Consensus: remove DSA from TLS 1.3. September 17, 2015. Sean Turner. live. https://web.archive.org/web/20151003193113/http://www.ietf.org/mail-archive/web/tls/current/msg17680.html. October 3, 2015.
    72. must be implemented to fix a renegotiation flaw that would otherwise break this protocol.
    73. If libraries implement fixes listed in, this violates the SSL 3.0 specification, which the IETF cannot change unlike TLS. Most current libraries implement the fix and disregard the violation that this causes.
    74. The BEAST attack breaks all block ciphers (CBC ciphers) used in SSL 3.0 and TLS 1.0 unless mitigated by the client and/or the server. See .
    75. The POODLE attack breaks all block ciphers (CBC ciphers) used in SSL 3.0 unless mitigated by the client and/or the server. See .
    76. [AEAD block cipher modes of operation|AEAD]
    77. CBC ciphers can be attacked with the Lucky Thirteen attack if the library is not written carefully to eliminate timing side channels.
    78. 40-bit strength cipher suites were intentionally designed with reduced key lengths to comply with since-rescinded US regulations forbidding the export of cryptographic software containing certain strong encryption algorithms (see Export of cryptography from the United States). These weak suites are forbidden in TLS 1.1 and later.
    79. Use of RC4 in all versions of TLS is prohibited by (because RC4 attacks weaken or break RC4 used in SSL/TLS).
    80. Authentication only, no encryption.
    81. Web site: Http vs https. 2015-02-12. live. https://web.archive.org/web/20150212105201/https://www.instantssl.com/ssl-certificate-products/https.html. 2015-02-12.
    82. As of May 03, 2024. Web site: SSL Pulse: Survey of the SSL Implementation of the Most Popular Websites. 2024-05-30. Qualys. 2021-03-08. https://web.archive.org/web/20210308160353/https://web.archive.org/web/20171202155646/https://www.ssllabs.com/ssl-pulse/. live.
    83. Web site: RC4 in TLS is Broken: Now What?. 2013-07-30. Qualsys Security Labs. ivanr. 19 March 2013. live. https://web.archive.org/web/20130827044512/https://community.qualys.com/blogs/securitylabs/2013/03/19/rc4-in-tls-is-broken-now-what. 2013-08-27.
    84. Web site: Internet Explorer 11 has retired and is officially out of support—what you need to know. June 15, 2022. 2022-06-15. 2022-06-15. https://web.archive.org/web/20220615131949/https://blogs.windows.com/windowsexperience/2022/06/15/internet-explorer-11-has-retired-and-is-officially-out-of-support-what-you-need-to-know/. live.
    85. Web site: Internet Explorer 11 desktop app support ended for certain versions of Windows 10. 2022-06-17.
    86. Web site: Java Secure Socket Extension (JSSE) Reference Guide. 2021-12-24. Oracle Help Center. en-US. 2022-01-22. https://web.archive.org/web/20220122070356/https://docs.oracle.com/en/java/javase/17/security/java-secure-socket-extension-jsse-reference-guide.html. live.
    87. Book: Georgiev. Martin. Iyengar. Subodh. Jana. Suman. Anubhai. Rishita. Boneh. Dan. Shmatikov. Vitaly. The most dangerous code in the world: validating SSL certificates in non-browser software. Proceedings of the 2012 ACM conference on Computer and communications security. 2012. 978-1-4503-1651-4. 38–49. Association for Computing Machinery . live. https://web.archive.org/web/20171022194807/http://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf. 2017-10-22.
    88. 5630. The Use of the SIPS URI Scheme in the Session Initiation Protocol (SIP). 2009 . 10.17487/RFC5630 . Audet . F. .
    89. 7457. Summarizing Known Attacks on Transport Layer Security (TLS) and Datagram TLS (DTLS). 2015 . 10.17487/RFC7457 . Sheffer . Y. . Holz . R. . Saint-Andre . P. .
    90. Web site: CVE – CVE-2009-3555. live. https://web.archive.org/web/20160104234608/http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555. 2016-01-04.
    91. Web site: Eric. Rescorla. Understanding the TLS Renegotiation Attack. Educated Guesswork. 2009-11-27. 2009-11-05. live. https://web.archive.org/web/20120211120608/http://www.educatedguesswork.org/2009/11/understanding_the_tls_renegoti.html. 2012-02-11.
    92. Web site: SSL_CTX_set_options SECURE_RENEGOTIATION. OpenSSL Docs. 2010-11-18. 2010-02-25. live. https://web.archive.org/web/20101126121933/http://openssl.org/docs/ssl/SSL_CTX_set_options.html#SECURE_RENEGOTIATION. 2010-11-26.
    93. Web site: GnuTLS 2.10.0 released. GnuTLS release notes. 2011-07-24. 2010-06-25. live. https://web.archive.org/web/20151017033726/http://article.gmane.org/gmane.network.gnutls.general/2046. 2015-10-17.
    94. Web site: NSS 3.12.6 release notes. NSS release notes. 2011-07-24. 2010-03-03. dead. https://web.archive.org/web/20120306184633/https://developer.mozilla.org/NSS_3.12.6_release_notes. March 6, 2012.
    95. Transport Layer Security (TLS) False Start. Internet Engineering Task Force. IETF. 2013-07-31. A. Langley. N. Modadugu. B. Moeller. 2010-06-02. live. https://web.archive.org/web/20130905215608/http://tools.ietf.org/html/draft-bmoeller-tls-falsestart-00. 2013-09-05.
    96. Web site: Wolfgang. Gruener. False Start: Google Proposes Faster Web, Chrome Supports It Already. 2011-03-09. https://web.archive.org/web/20101007061707/http://www.conceivablytech.com/3299/products/false-start-google-proposes-faster-web-chrome-supports-it-already. 2010-10-07.
    97. Web site: Brian. Smith. Limited rollback attacks in False Start and Snap Start. 2011-03-09. live. https://web.archive.org/web/20110504014418/http://www.ietf.org/mail-archive/web/tls/current/msg06933.html. 2011-05-04.
    98. Web site: Adrian. Dimcev. False Start. Random SSL/TLS 101. 2011-03-09. live. https://web.archive.org/web/20110504060256/http://www.carbonwind.net/blog/post/Random-SSLTLS-101-False-Start.aspx. 2011-05-04.
    99. Book: Mavrogiannopoulos, Nikos. Vercautern, Frederik. Velichkov, Vesselin. Preneel, Bart. A cross-protocol attack on the TLS protocol. Proceedings of the 2012 ACM conference on Computer and communications security. 2012. 978-1-4503-1651-4. 62–72. Association for Computing Machinery . live. https://web.archive.org/web/20150706104327/https://www.cosic.esat.kuleuven.be/publications/article-2216.pdf. 2015-07-06.
    100. Web site: SMACK: State Machine AttaCKs. live. https://web.archive.org/web/20150312074827/https://www.smacktls.com. 2015-03-12.
    101. Web site: HTTPS-crippling attack threatens tens of thousands of Web and mail servers. Dan. Goodin. Ars Technica. 2015-05-20. live. https://web.archive.org/web/20170519130937/https://arstechnica.com/security/2015/05/https-crippling-attack-threatens-tens-of-thousands-of-web-and-mail-servers. 2017-05-19.
    102. Web site: One-third of all HTTPS websites open to DROWN attack. Leyden. John. 1 March 2016. The Register. 2016-03-02. live. https://web.archive.org/web/20160301215536/http://www.theregister.co.uk/2016/03/01/drown_tls_protocol_flaw. 1 March 2016.
    103. Web site: More than 11 million HTTPS websites imperiled by new decryption attack. Ars Technica. March 2016. 2016-03-02. live. https://web.archive.org/web/20160301191108/http://arstechnica.com/security/2016/03/more-than-13-million-https-websites-imperiled-by-new-decryption-attack. 2016-03-01.
    104. Web site: Here Come The ⊕ Ninjas. 2011-05-13. Thai Duong. Juliano Rizzo. amp. live. https://web.archive.org/web/20140603102506/https://bug665814.bugzilla.mozilla.org/attachment.cgi?id=540839. 2014-06-03.
    105. Web site: Hackers break SSL encryption used by millions of sites. 2011-09-19. Dan. Goodin. The Register. live. https://web.archive.org/web/20120210185309/http://www.theregister.co.uk/2011/09/19/beast_exploits_paypal_ssl. 2012-02-10.
    106. Web site: Y Combinator comments on the issue. 2011-09-20. live. https://web.archive.org/web/20120331225714/http://news.ycombinator.com/item?id=3015498. 2012-03-31.
    107. Web site: Security of CBC Ciphersuites in SSL/TLS: Problems and Countermeasures. https://web.archive.org/web/20120630143111/http://www.openssl.org/~bodo/tls-cbc.txt. 2012-06-30. 2004-05-20.
    108. Web site: Is BEAST Still a Threat?. Sep 10, 2013. 8 October 2014. Ristic. Ivan. live. https://web.archive.org/web/20141012121824/https://community.qualys.com/blogs/securitylabs/2013/09/10/is-beast-still-a-threat. 12 October 2014.
    109. Web site: Chrome Stable Release. Chrome Releases. 2011-10-25. 2015-02-01. live. https://web.archive.org/web/20150220020306/http://googlechromereleases.blogspot.jp/2011/10/chrome-stable-release.html. 2015-02-20.
    110. Web site: Attack against TLS-protected communications. Mozilla Security Blog. Mozilla. 2011-09-27. 2015-02-01. live. https://web.archive.org/web/20150304221307/https://blog.mozilla.org/security/2011/09/27/attack-against-tls-protected-communications. 2015-03-04.
    111. Web site: (CVE-2011-3389) Rizzo/Duong chosen plaintext attack (BEAST) on SSL/TLS 1.0 (facilitated by websockets-76). 2011-09-30. Brian. Smith. 2011-11-01. 2012-02-10. https://web.archive.org/web/20120210202750/https://bugzilla.mozilla.org/show_bug.cgi?id=665814. live.
    112. MSRC. Microsoft Security Response Center. 2012-01-10. Vulnerability in SSL/TLS Could Allow Information Disclosure (2643584). Security Bulletins. MS12-006. 2021-10-24. Microsoft Docs.
    113. Web site: Apple Enabled BEAST Mitigations in OS X 10.9 Mavericks. Oct 31, 2013. 8 October 2014. Ristic. Ivan. live. https://web.archive.org/web/20141012122536/https://community.qualys.com/blogs/securitylabs/2013/10/31/apple-enabled-beast-mitigations-in-os-x-109-mavericks. 12 October 2014.
    114. Web site: Crack in Internet's foundation of trust allows HTTPS session hijacking. Ars Technica. Dan. Goodin. 2012-09-13. 2013-07-31. live. https://web.archive.org/web/20130801104610/http://arstechnica.com/security/2012/09/crime-hijacks-https-sessions. 2013-08-01.
    115. Web site: CRIME Attack Uses Compression Ratio of TLS Requests as Side Channel to Hijack Secure Sessions. ThreatPost. September 13, 2012. Fisher. Dennis. 2012-09-13. dead. https://web.archive.org/web/20120915224635/http://threatpost.com/en_us/blogs/crime-attack-uses-compression-ratio-tls-requests-side-channel-hijack-secure-sessions-091312. September 15, 2012.
    116. Web site: Goodin. Dan. Gone in 30 seconds: New attack plucks secrets from HTTPS-protected pages. Ars Technica. Condé Nast. 2 August 2013. 1 August 2013. live. https://web.archive.org/web/20130803181144/http://arstechnica.com/security/2013/08/gone-in-30-seconds-new-attack-plucks-secrets-from-https-protected-pages. 3 August 2013.
    117. Web site: Leyden. John. Step into the BREACH: New attack developed to read encrypted web data. The Register. 2 August 2013. 2 August 2013. live. https://web.archive.org/web/20130805233414/http://www.theregister.co.uk/2013/08/02/breach_crypto_attack. 5 August 2013.
    118. Internet Engineering Task Force. 7366. Encrypt-then-MAC for Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS). September 2014. P. Gutmann.
    119. Web site: This POODLE Bites: Exploiting The SSL 3.0 Fallback. Bodo Möller, Thai Duong. Krzysztof Kotowicz. amp. 2014-10-15. live. https://web.archive.org/web/20141014224443/https://www.openssl.org/~bodo/ssl-poodle.pdf. 2014-10-14.
    120. Web site: The POODLE bites again. December 8, 2014. Langley. Adam. 2014-12-08. live. https://web.archive.org/web/20141208200653/https://www.imperialviolet.org/2014/12/08/poodleagain.html. December 8, 2014.
    121. Web site: ssl – Safest ciphers to use with the BEAST? (TLS 1.0 exploit) I've read that RC4 is immune. Serverfault.com. 20 February 2022. 20 February 2022. https://web.archive.org/web/20220220210446/https://serverfault.com/questions/315042/safest-ciphers-to-use-with-the-beast-tls-1-0-exploit-ive-read-that-rc4-is-im. live.
    122. Book: Discovery and Exploitation of New Biases in RC4. Pouyan Sepehrdad. Serge Vaudenay. Martin Vuagnoux. Selected Areas in Cryptography: 17th International Workshop, SAC 2010, Waterloo, Ontario, Canada, August 12–13, 2010, Revised Selected Papers. Lecture Notes in Computer Science. Alex Biryukov. Guang Gong. Guang Gong. Douglas R. Stinson. 2011. 6544. 74–91. 10.1007/978-3-642-19574-7_5. 978-3-642-19573-0.
    123. Web site: Attack of the week: RC4 is kind of broken in TLS. Cryptography Engineering. March 12, 2013. Green. Matthew. 12 March 2013. live. https://web.archive.org/web/20130314214026/http://blog.cryptographyengineering.com/2013/03/attack-of-week-rc4-is-kind-of-broken-in.html. March 14, 2013.
    124. Web site: On the Security of RC4 in TLS. Royal Holloway University of London. March 13, 2013. Nadhem. AlFardan. Dan. Bernstein. Kenny. Paterson. Bertram. Poettering. Jacob. Schuldt. live. https://web.archive.org/web/20130315084623/http://www.isg.rhul.ac.uk/tls. March 15, 2013.
    125. Nadhem J.. AlFardan. Daniel J.. Bernstein. Kenneth G.. Paterson. Bertram. Poettering. Jacob C. N.. Schuldt. 8 July 2013. On the Security of RC4 in TLS and WPA. 2 September 2013. Information Security Group. live. https://web.archive.org/web/20130922170155/http://www.isg.rhul.ac.uk/tls/RC4biases.pdf. 22 September 2013.
    126. On the Security of RC4 in TLS. Nadhem J.. AlFardan. Daniel J.. Bernstein. Kenneth G.. Paterson. Bertram. Poettering. Jacob C. N.. Schuldt. 15 August 2013. 22nd USENIX Security Symposium. 2 September 2013. Plaintext recovery attacks against RC4 in TLS are feasible although not truly practical. 51. live. https://web.archive.org/web/20130922133950/https://www.usenix.org/sites/default/files/conference/protected-files/alfardan_sec13_slides.pdf. 22 September 2013.
    127. Web site: Goodin. Dan. Once-theoretical crypto attack against HTTPS now verges on practicality. Ars Technical. 15 July 2015. Conde Nast. 16 July 2015. live. https://web.archive.org/web/20150716084138/http://arstechnica.com/security/2015/07/once-theoretical-crypto-attack-against-https-now-verges-on-practicality. 16 July 2015.
    128. Web site: Mozilla Security Server Side TLS Recommended Configurations. Mozilla. 2015-01-03. live. https://web.archive.org/web/20150103093047/https://wiki.mozilla.org/Security/Server_Side_TLS. 2015-01-03.
    129. Web site: Security Advisory 2868725: Recommendation to disable RC4. 2013-11-12. Microsoft. 2013-12-04. live. https://web.archive.org/web/20131118081816/http://blogs.technet.com/b/srd/archive/2013/11/12/security-advisory-2868725-recommendation-to-disable-rc4.aspx. 2013-11-18.
    130. Web site: Ending support for the RC4 cipher in Microsoft Edge and Internet Explorer 11. Microsoft Edge Team. September 1, 2015. live. https://web.archive.org/web/20150902054341/http://blogs.windows.com/msedgedev/2015/09/01/ending-support-for-the-rc4-cipher-in-microsoft-edge-and-internet-explorer-11. September 2, 2015.
    131. Web site: Intent to deprecate: RC4. Sep 1, 2015. Langley. Adam. September 2, 2015. May 23, 2013. https://web.archive.org/web/20130523081122/http://groups.google.com/a/chromium.org/group/chromium-os-dev/browse_thread/thread/337cca9a0da59ad6/9354a38894da5df5#!msg/security-dev/kVfCywocUO8/vgi_rQuhKgAJ. live.
    132. Web site: Intent to ship: RC4 disabled by default in Firefox 44. Sep 1, 2015. Barnes. Richard. live. http://arquivo.pt/wayback/20110122130054/https://groups.google.com/forum/#!topic/mozilla.dev.platform/JIEFcrGhqSM/discussion. 2011-01-22.
    133. Web site: Gmail, Outlook.com and e-voting 'pwned' on stage in crypto-dodge hack. The Register. 1 August 2013. John Leyden. 1 August 2013. live. https://web.archive.org/web/20130801193054/http://www.theregister.co.uk/2013/08/01/gmail_hotmail_hijacking. 1 August 2013.
    134. Web site: BlackHat USA Briefings. Black Hat 2013. 1 August 2013. live. https://web.archive.org/web/20130730124037/http://www.blackhat.com/us-13/briefings.html#Smyth. 30 July 2013.
    135. Smyth. Ben. Pironti. Alfredo. Truncating TLS Connections to Violate Beliefs in Web Applications. 7th USENIX Workshop on Offensive Technologies. 2013. 15 February 2016. live. https://web.archive.org/web/20151106110117/https://hal.inria.fr/hal-01102013. 6 November 2015. report.
    136. Plaintext-recovery attacks against datagram TLS . AlFardan . Nadhem . Paterson . Kenneth G . Network and distributed system security symposium (NDSS 2012) . 2012 . https://web.archive.org/web/20120118070007/http://www.isg.rhul.ac.uk/~kp/dtls.pdf . 2012-01-18 . unfit.
    137. Web site: Goodin. Dan. New attack bypasses HTTPS protection on Macs, Windows, and Linux. Ars Technica. 26 July 2016. Condé Nast. 28 July 2016. live. https://web.archive.org/web/20160727160434/http://arstechnica.com/security/2016/07/new-attack-that-cripples-https-crypto-works-on-macs-windows-and-linux. 27 July 2016.
    138. News: HTTPS and OpenVPN face new attack that can decrypt secret cookies. Dan. Goodin. Ars Technica. August 24, 2016. August 24, 2016. live. https://web.archive.org/web/20160824181630/http://arstechnica.com/security/2016/08/new-attack-can-pluck-secrets-from-1-of-https-traffic-affects-top-sites. August 24, 2016.
    139. News: Why is it called the 'Heartbleed Bug'?. The Washington Post. 2014-04-09. live. https://web.archive.org/web/20141009063758/http://www.washingtonpost.com/blogs/style-blog/wp/2014/04/09/why-is-it-called-the-heartbleed-bug. 2014-10-09.
    140. Web site: Heartbleed Bug vulnerability [9 April 2014]]. Comodo Group. live. https://web.archive.org/web/20140705212748/https://blogs.comodo.com/e-commerce/heartbleed-bug-comodo-urges-openssl-users-to-apply-patch. 5 July 2014.
    141. Web site: Bleichenbacher's RSA signature forgery based on implementation error. August 2006. Daniel. Bleichenbacher. Daniel Bleichenbacher. dead. https://web.archive.org/web/20141216203704/http://www.imc.org/ietf-openpgp/mail-archive/msg06063.html. 2014-12-16.
    142. Web site: BERserk. September 2014. Intel Security: Advanced Threat Research. live. https://web.archive.org/web/20150112153121/http://www.intelsecurity.com/advanced-threat-research. 2015-01-12.
    143. Web site: Lenovo PCs ship with man-in-the-middle adware that breaks HTTPS connections. Goodin. Dan. February 19, 2015. Ars Technica. December 10, 2017. live. https://web.archive.org/web/20170912103610/https://arstechnica.com/information-technology/2015/02/lenovo-pcs-ship-with-man-in-the-middle-adware-that-breaks-https-connections. September 12, 2017.
    144. Web site: Filippo. Valsorda. Komodia/Superfish SSL validation is broken. Filippo.io. 2015-02-20. live. https://web.archive.org/web/20150224112141/https://blog.filippo.io/komodia-superfish-ssl-validation-is-broken. 2015-02-24.
    145. Web site: Goodin. Dan. "Forbidden attack" makes dozens of HTTPS Visa sites vulnerable to tampering. Ars Technica. 26 May 2016. 26 May 2016. live. https://web.archive.org/web/20160526175713/http://arstechnica.com/security/2016/05/faulty-https-settings-leave-dozens-of-visa-sites-vulnerable-to-forgery-attacks. 26 May 2016.
    146. Web site: Clark Estes. Adam. Everything You Need to Know About Cloudbleed, the Latest Internet Security Disaster. Gizmodo. February 24, 2017. 2017-02-24. live. https://web.archive.org/web/20170225013516/http://gizmodo.com/everything-you-need-to-know-about-cloudbleed-the-lates-1792710616. 2017-02-25.
    147. Whitfield. Diffie. van Oorschot. Paul C. Wiener. Michael J.. Authentication and Authenticated Key Exchanges. 2. Designs, Codes and Cryptography. 2. 107–125. June 1992. 10.1007/BF00124891. 2008-02-11. live. https://web.archive.org/web/20080313081157/http://citeseer.ist.psu.edu/diffie92authentication.html. 2008-03-13. 10.1.1.59.6682. 7356608.
    148. Web site: Discussion on the TLS mailing list in October 2007. https://web.archive.org/web/20130922103746/http://www.ietf.org/mail-archive/web/tls/current/msg02134.html. dead. 22 September 2013. 20 February 2022.
    149. Web site: Protecting data for the long term with forward secrecy. 2012-11-05. live. https://web.archive.org/web/20130506184654/http://googleonlinesecurity.blogspot.com.au/2011/11/protecting-data-for-long-term-with.html. 2013-05-06.
    150. Web site: SSL/TLS & Perfect Forward Secrecy. Vincent. Bernat. 28 November 2011. 2012-11-05. live. https://web.archive.org/web/20120827064047/https://vincent.bernat.ch/en/blog/2011-ssl-perfect-forward-secrecy. 2012-08-27.
    151. Web site: SSL Labs: Deploying Forward Secrecy. Qualys.com. 2013-07-10. 2013-06-25. live. https://web.archive.org/web/20130626193314/https://community.qualys.com/blogs/securitylabs/2013/06/25/ssl-labs-deploying-forward-secrecy. 2013-06-26.
    152. Web site: Ristic. Ivan. SSL Labs: Deploying Forward Secrecy. Qualsys. 2013-08-31. 2013-08-05. live. https://web.archive.org/web/20130920150259/https://community.qualys.com/blogs/securitylabs/2013/06/25/ssl-labs-deploying-forward-secrecy. 2013-09-20.
    153. L.S. Huang. S. Adhikarla. D. Boneh. C. Jackson. An Experimental Study of TLS Forward Secrecy Deployments. IEEE Internet Computing. 2014. 18. 6. 43–51. 16 October 2015. live. https://web.archive.org/web/20150920011317/http://crypto.stanford.edu/~dabo/pubs/abstracts/websec_ecc.html. 20 September 2015. 10.1109/MIC.2014.86. 10.1.1.663.4653. 11264303.
    154. Web site: Protecting data for the long term with forward secrecy. 2014-03-07. live. https://web.archive.org/web/20140212214518/http://googleonlinesecurity.blogspot.com.au/2011/11/protecting-data-for-long-term-with.html. 2014-02-12.
    155. Web site: Hoffman-Andrews. Jacob. Forward Secrecy at Twitter. Twitter. 2014-03-07. live. https://web.archive.org/web/20140216041202/https://blog.twitter.com/2013/forward-secrecy-at-twitter-0. 2014-02-16.
    156. Durumeric. Zakir. Ma. Zane. Springall. Drew. Barnes. Richard. Sullivan. Nick. Bursztein. Elie. Bailey. Michael. Halderman. J. Alex. Paxson. Vern. The Security Impact of HTTPS Interception. NDSS Symposium. 5 September 2017. 10.14722/ndss.2017.23456. 978-1-891562-46-4. 11 March 2019. 22 March 2019. https://web.archive.org/web/20190322145041/https://www.ndss-symposium.org/ndss2017/ndss-2017-programme/security-impact-https-interception/. live.
    157. These certificates are currently X.509, but also specifies the use of OpenPGP-based certificates.
    158. Web site: tls – Differences between the terms "pre-master secret", "master secret", "private key", and "shared secret"?. 2020-10-01. Cryptography Stack Exchange. 2020-09-22. https://web.archive.org/web/20200922021454/https://crypto.stackexchange.com/questions/27131/differences-between-the-terms-pre-master-secret-master-secret-private-key. live.
    159. Web site: Chris. vsftpd-2.1.0 released – Using TLS session resume for FTPS data connection authentication. Scarybeastsecurity. blogspot.com. 2009-02-18. 2012-05-17. live. https://web.archive.org/web/20120707213409/http://scarybeastsecurity.blogspot.com/2009/02/vsftpd-210-released.html. 2012-07-07.
    160. The Transport Layer Security (TLS) Protocol Version 1.3. 8446. 4.1.1 . Cryptographic Negotiation. IETF . August 2018 . Rescorla . Eric .
    161. Web site: Valsorda. Filippo. An overview of TLS 1.3 and Q&A. The Cloudflare Blog. 23 September 2016. 3 May 2019. 3 May 2019. https://web.archive.org/web/20190503043936/https://blog.cloudflare.com/tls-1-3-overview-and-q-and-a/. live.
    162. Web site: TLS "Secrets": Whitepaper presenting the security implications of the deployment of session tickets (RFC 5077) as implemented in OpenSSL. Florent. Daignière. Matta Consulting Limited. 7 August 2013. live. https://web.archive.org/web/20130806233112/https://media.blackhat.com/us-13/US-13-Daigniere-TLS-Secrets-WP.pdf. 6 August 2013.
    163. Web site: TLS "Secrets": What everyone forgot to tell you…. Florent. Daignière. Matta Consulting Limited. 7 August 2013. live. https://web.archive.org/web/20130805134805/https://media.blackhat.com/us-13/US-13-Daigniere-TLS-Secrets-Slides.pdf. 5 August 2013.
    164. Web site: How to botch TLS forward secrecy. Adam. Langley. imperialviolet.org. 27 June 2013. live. https://web.archive.org/web/20130808221614/https://www.imperialviolet.org/2013/06/27/botchingpfs.html. 8 August 2013.