RFC 7525

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

๐Ÿ“… published May 2015, from ietf

RFC 7525: Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) ๐ŸŽ€

okay so the title block first ๐Ÿ’…

  • Series: Internet Engineering Task Force (IETF), Request for Comments 7525 ๐Ÿฆ‹
  • Authors: Y. Sheffer (Intuit), R. Holz (NICTA), and P. Saint-Andre (&yet) ๐Ÿ’–
  • Category: Best Current Practice, which is BCP 195 ๐Ÿ‘‘
  • ISSN: 2070-1721
  • Date: May 2015
  • Obsoletes / Updates: the title block doesn't list any, so there's nothing it replaces or changes ๐ŸŒธ

Abstract โœจ

okay so TLS and DTLS are the bodyguards for tons of app protocols, like HTTP, SMTP, IMAP, POP, SIP, and XMPP ๐Ÿ›ก๏ธ but over the last few years a bunch of seriously bad attacks showed up, and they hit the most popular cipher suites and how they run ๐Ÿ’€ this doc gives recommendations for making deployed TLS and DTLS services more secure. the good news is they apply to most use cases ๐Ÿซถ

Status of This Memo

This memo documents an Internet Best Current Practice. ๐ŸŒˆ

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). More info on BCPs is in Section 2 of RFC 5741 ๐Ÿ“š

For the current status of this document, any errata, and how to send feedback, check http://www.rfc-editor.org/info/rfc7525 ๐Ÿ”—

Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved. ๐ŸŽ€

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please read these carefully, bestie, because they describe your rights and restrictions for this document. Code Components pulled out of this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License ๐Ÿงš

Table of Contents ๐Ÿ“‹

1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   4
2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   5
3.  General Recommendations . . . . . . . . . . . . . . . . . . .   5
  3.1.  Protocol Versions . . . . . . . . . . . . . . . . . . . .   5
    3.1.1.  SSL/TLS Protocol Versions . . . . . . . . . . . . . .   5
    3.1.2.  DTLS Protocol Versions  . . . . . . . . . . . . . . .   6
    3.1.3.  Fallback to Lower Versions  . . . . . . . . . . . . .   7
  3.2.  Strict TLS  . . . . . . . . . . . . . . . . . . . . . . .   7
  3.3.  Compression . . . . . . . . . . . . . . . . . . . . . . .   8
  3.4.  TLS Session Resumption  . . . . . . . . . . . . . . . . .   8
  3.5.  TLS Renegotiation . . . . . . . . . . . . . . . . . . . .   9
  3.6.  Server Name Indication  . . . . . . . . . . . . . . . . .   9
4.  Recommendations: Cipher Suites  . . . . . . . . . . . . . . .   9
  4.1.  General Guidelines  . . . . . . . . . . . . . . . . . . .   9
  4.2.  Recommended Cipher Suites . . . . . . . . . . . . . . . .  11
    4.2.1.  Implementation Details  . . . . . . . . . . . . . . .  12
  4.3.  Public Key Length . . . . . . . . . . . . . . . . . . . .  12
  4.4.  Modular Exponential vs. Elliptic Curve DH Cipher Suites .  13
  4.5.  Truncated HMAC  . . . . . . . . . . . . . . . . . . . . .  14
5.  Applicability Statement . . . . . . . . . . . . . . . . . . .  15
  5.1.  Security Services . . . . . . . . . . . . . . . . . . . .  15
  5.2.  Opportunistic Security  . . . . . . . . . . . . . . . . .  16
6.  Security Considerations . . . . . . . . . . . . . . . . . . .  17
  6.1.  Host Name Validation  . . . . . . . . . . . . . . . . . .  17
  6.2.  AES-GCM . . . . . . . . . . . . . . . . . . . . . . . . .  18
  6.3.  Forward Secrecy . . . . . . . . . . . . . . . . . . . . .  18
  6.4.  Diffie-Hellman Exponent Reuse . . . . . . . . . . . . . .  19
  6.5.  Certificate Revocation  . . . . . . . . . . . . . . . . .  19
7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  21
  7.1.  Normative References  . . . . . . . . . . . . . . . . . .  21
  7.2.  Informative References  . . . . . . . . . . . . . . . . .  22
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  26
Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  27

1. Introduction โœจ

okay so TLS [RFC5246] and Datagram Transport Security Layer (DTLS) [RFC6347] are everywhere protecting data for app protocols like HTTP, SMTP, IMAP, POP, SIP, and XMPP ๐Ÿซถ and over the last few years, a lot of serious attacks hit TLS, especially its most used cipher suites and their modes of operation ๐Ÿ˜ญ for instance, both the AES-CBC [RFC3602] and RC4 [RFC7465] encryption algorithms have been attacked in the TLS context, and together they were the most widely deployed ciphers ๐Ÿ’€ a companion doc [RFC7457] digs into those attacks in detail, so you can see why these recommendations exist ๐Ÿ”

because of all this, the people who build and run TLS and DTLS need fresh guidance on using TLS safely ๐Ÿ›ก๏ธ this doc covers deployed services and software implementations, assuming the implementer expects their code to be deployed in the environments defined in Section 5 ๐ŸŒธ fun twist: it actually calls for algorithms that are widely implemented but not yet widely deployed ๐Ÿ‘€ the target audience is pretty huge, basically every deployer who wants to add authentication (one-way or mutual), confidentiality, and data integrity protection to their communications ๐Ÿ’œ

the recommendations take into account how secure each mechanism is, how mature and interoperable it is, and how common it is in implementations when this was written ๐Ÿง  unless it's explicitly said that a recommendation applies only to TLS or only to DTLS, it applies to both ๐Ÿฆ‹

it's expected that TLS 1.3 will fix many of the vulnerabilities listed here โœจ a system that deploys TLS 1.3 should have fewer vulnerabilities than TLS 1.2 or below ๐ŸŽ‰ this doc will probably get updated once TLS 1.3 gets noticeable deployment ๐Ÿ”„

these are minimum recommendations for using TLS in the vast majority of implementation and deployment scenarios, except for unauthenticated TLS (see Section 5) ๐Ÿ™ˆ other specs that reference this doc can have stricter requirements about one or more aspects of the protocol, based on their own situation (for example, for use with a particular application protocol), and when that happens, implementers are advised to follow those stricter requirements ๐Ÿงš also, this doc is a floor, not a ceiling, so stronger options are always allowed (for example, depending on how people weigh cryptographic strength against computational load) ๐Ÿ’ช

the security world moves fast! community knowledge about how strong algorithms are and which attacks are feasible can change quickly, and experience shows that a Best Current Practice document about security is a snapshot in time ๐Ÿ“ธ readers should go looking for any errata or updates that apply to this doc ๐Ÿ”Ž

2. Terminology ๐Ÿ“–

a bunch of the security terms in this doc are used in the sense defined in [RFC4949] ๐Ÿค“

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. ๐ŸŽ€

3. General Recommendations ๐ŸŒท

this section has general recommendations for using TLS securely ๐Ÿ’– the cipher suite recommendations come in the next section ๐Ÿฆ‹

3.1. Protocol Versions ๐ŸŒˆ

3.1.1. SSL/TLS Protocol Versions

it's important to both stop using the old, less secure versions of SSL/TLS and start using the modern, more secure ones ๐Ÿšซ so here are the recommendations on TLS/SSL protocol versions ๐Ÿ‘‘

  • Implementations MUST NOT negotiate SSL version 2.

Rationale: SSLv2 is considered insecure today [RFC6176]. ๐Ÿ’€

  • Implementations MUST NOT negotiate SSL version 3.

Rationale: SSLv3 [RFC6101] was an upgrade from SSLv2 and patched some big security holes, but it didn't support strong cipher suites ๐Ÿฉน it also doesn't support TLS extensions, and some of those, like renegotiation_info [RFC5746], are security-critical ๐Ÿ˜ฑ on top of that, with the POODLE attack [POODLE] showing up, SSLv3 is now widely recognized as fundamentally insecure ๐Ÿ™…โ€โ™€๏ธ see [DEP-SSLv3] for more details ๐Ÿ“Ž

  • Implementations SHOULD NOT negotiate TLS version 1.0 [RFC2246]; the only exception is when no higher version is available in the negotiation.

Rationale: TLS 1.0 (published in 1999) doesn't support many modern, strong cipher suites ๐Ÿฅฒ it also lacks a per-record Initialization Vector (IV) for CBC-based cipher suites and doesn't warn against common padding errors ๐Ÿ™ˆ

  • Implementations SHOULD NOT negotiate TLS version 1.1 [RFC4346]; the only exception is when no higher version is available in the negotiation.

Rationale: TLS 1.1 (published in 2006) is a security improvement over TLS 1.0, but it still doesn't support certain stronger cipher suites ๐Ÿ“ˆ

  • Implementations MUST support TLS 1.2 [RFC5246] and MUST prefer to negotiate TLS version 1.2 over earlier versions of TLS. โญ

Rationale: several stronger cipher suites are only available with TLS 1.2 (published in 2008) ๐Ÿ”ฅ in fact, the cipher suites this doc recommends (Section 4.2 below) are only available in TLS 1.2 ๐Ÿ’–

this BCP applies to TLS 1.2 and to earlier versions too ๐Ÿ“œ it's not safe for readers to assume the recommendations in this BCP apply to any future version of TLS ๐Ÿ”ฎ

3.1.2. DTLS Protocol Versions

DTLS, which is basically TLS adapted for UDP datagrams, came out when TLS 1.1 was published ๐Ÿฆ‹ here's what this doc recommends for DTLS:

  • Implementations SHOULD NOT negotiate DTLS version 1.0 [RFC4347].

DTLS version 1.0 lines up with TLS version 1.1 (see above). ๐Ÿงฉ

  • Implementations MUST support and MUST prefer to negotiate DTLS version 1.2 [RFC6347].

DTLS version 1.2 lines up with TLS version 1.2 (see above). (There is no DTLS version 1.1.) ๐Ÿซถ

3.1.3. Fallback to Lower Versions ๐Ÿฆ‹

okay bestie, clients that "fall back" to lower versions after the server rejects higher ones MUST NOT fall back to SSLv3 or earlier ๐Ÿ™…โ€โ™€๏ธ no cap, that's a hard no.

Rationale: some client implementations go back to lower versions of TLS, or even to SSLv3, if the server rejected the higher versions ๐Ÿ˜ญ. A man-in-the-middle (MITM) attacker can force that fallback, and it's giving danger. TLS 1.0 and SSLv3 are way less secure than TLS 1.2, which is the version this document recommends ๐Ÿ’…. TLS 1.0-only servers are still pretty common, but IP scans show SSLv3-only servers are only about 3% of the current Web server population ๐ŸŒธ. (At the time of writing, an explicit method for preventing downgrade attacks was recently defined in [RFC7507].)


3.2. Strict TLS ๐Ÿ”’

The following recommendations help prevent SSL Stripping (an attack summarized in Section 2.1 of [RFC7457]) ๐Ÿ™ˆ:

  • In cases where an application protocol lets implementations or deployments choose between a strict TLS configuration and a dynamic upgrade from unencrypted to TLS-protected traffic (like STARTTLS), clients and servers SHOULD prefer strict TLS configuration ๐Ÿ’–.
  • Application protocols usually give the server a way to offer TLS during an initial protocol exchange, and sometimes a way to advertise TLS support (like a flag saying TLS is required). Unfortunately, these indications are sent before the channel is encrypted ๐Ÿ˜ค. A client SHOULD attempt to negotiate TLS even if the server doesn't communicate these indications ๐Ÿซถ.
  • HTTP client and server implementations MUST support the HTTP Strict Transport Security (HSTS) header [RFC6797], so Web servers can advertise that they're willing to accept TLS-only clients โœจ.
  • Web servers SHOULD use HSTS to indicate they're willing to accept TLS-only clients, unless they're deployed in a way where using HSTS would actually weaken overall security (for example, it can be problematic to use HSTS with self-signed certificates, as described in Section 11.3 of [RFC6797]) ๐Ÿ’€.

Rationale: combining unprotected and TLS-protected communication opens the door to SSL Stripping and similar attacks. An initial part of the communication isn't integrity protected, so an attacker who wants to keep things in the clear can manipulate it ๐Ÿšจ.

SSL Stripping is the main villain here, bestie ๐Ÿฆน

3.3. Compression ๐Ÿ—œ๏ธ

To help prevent compression-related attacks (summarized in Section 2.6 of [RFC7457]), implementations and deployments SHOULD disable TLS-level compression (Section 6.2.2 of [RFC5246]), unless the application protocol in question has been shown not to be open to such attacks ๐Ÿ™Œ.

Rationale: TLS compression has been subject to security attacks, like the CRIME attack ๐Ÿ˜ฑ.

Implementers should note that compression at higher protocol levels can allow an active attacker to extract cleartext information from the connection. The BREACH attack is one such case. These issues can only be mitigated outside of TLS, so they're outside the scope of this document. See Section 2.6 of [RFC7457] for further details ๐Ÿ“š.


3.4. TLS Session Resumption ๐ŸŽซ

If TLS session resumption is used, care ought to be taken to do it safely. In particular, when using session tickets [RFC5077], the resumption information MUST be authenticated and encrypted to prevent modification or eavesdropping by an attacker ๐Ÿ”. Further recommendations apply to session tickets:

  • A strong cipher suite MUST be used when encrypting the ticket (as least as strong as the main TLS cipher suite).
  • Ticket keys MUST be changed regularly, e.g., once every week, so as not to negate the benefits of forward secrecy (see Section 6.3 for details on forward secrecy).
  • For similar reasons, session ticket validity SHOULD be limited to a reasonable duration (e.g., half as long as ticket key validity) โณ.

Rationale: session resumption is another kind of TLS handshake, so it must be as secure as the initial handshake ๐Ÿ’…. This document (Section 4) recommends cipher suites that provide forward secrecy, meaning they prevent an attacker who gains momentary access to the TLS endpoint (either client or server) and its secrets from reading either past or future communication ๐Ÿ•ต๏ธ. The tickets have to be managed so they don't negate this security property ๐Ÿงš.


3.5. TLS Renegotiation ๐Ÿ”

Where handshake renegotiation is implemented, both clients and servers MUST implement the renegotiation_info extension, as defined in [RFC5746] ๐Ÿซถ.

The most secure option for countering the Triple Handshake attack is to refuse any change of certificates during renegotiation. In addition, TLS clients SHOULD apply the same validation policy for all certificates received over a connection ๐Ÿ‘€. The [triple-handshake] document suggests several other possible countermeasures, such as binding the master secret to the full handshake (see [SESSION-HASH]) and binding the abbreviated session resumption handshake to the original full handshake. Although the latter two techniques are still under development and thus don't qualify as current practices, those who implement and deploy TLS are advised to watch for further development of appropriate countermeasures ๐Ÿ”ญ.


3.6. Server Name Indication ๐Ÿท๏ธ

TLS implementations MUST support the Server Name Indication (SNI) extension defined in Section 3 of [RFC6066] for those higher-level protocols that would benefit from it, including HTTPS. However, the actual use of SNI in particular circumstances is a matter of local policy ๐Ÿ—บ๏ธ.

Rationale: SNI supports deployment of multiple TLS-protected virtual servers on a single address, and therefore enables fine-grained security for these virtual servers, because each one can have its own certificate ๐ŸŒˆ.


4. Recommendations: Cipher Suites ๐ŸŽ€

TLS and its implementations give you considerable flexibility when selecting cipher suites. Unfortunately, some available cipher suites are insecure, some don't provide the targeted security services, and some no longer provide enough security. Configuring a server incorrectly leads to no security or reduced security ๐Ÿ˜ฌ. This section includes recommendations on the selection and negotiation of cipher suites ๐Ÿ’œ.

4.1. General Guidelines ๐Ÿ“œ

Cryptographic algorithms weaken over time as cryptanalysis improves: algorithms that were once considered strong become weak. Those algorithms need to be phased out over time and replaced with more secure cipher suites, which helps make sure the desired security properties still hold ๐Ÿ”„. SSL/TLS has been around for almost 20 years, and many of the cipher suites recommended in various versions of SSL/TLS are now considered weak, or at least not as strong as we'd like. So this section modernizes the recommendations about cipher suite selection โœจ.

  • Implementations MUST NOT negotiate the cipher suites with NULL encryption.

Rationale: NULL cipher suites don't encrypt traffic, so they provide no confidentiality. Anybody in the network with access to the connection can read the plaintext of what the client and server exchange ๐Ÿ‘€. (Nevertheless, this document does not discourage software from implementing NULL cipher suites, since they can be useful for testing and debugging ๐Ÿงช.)

  • Implementations MUST NOT negotiate RC4 cipher suites.

Rationale: the RC4 stream cipher has a variety of cryptographic weaknesses, as documented in [RFC7465]. Note that DTLS already specifically forbids the use of RC4 ๐Ÿ™…โ€โ™€๏ธ.

  • Implementations MUST NOT negotiate cipher suites offering less than 112 bits of security, including so-called "export-level" encryption (which provides 40 or 56 bits of security) ๐Ÿšซ.

Rationale: based on [RFC3766], at least 112 bits of security is needed. 40-bit and 56-bit security are considered insecure today. TLS 1.1 and 1.2 never negotiate 40-bit or 56-bit export ciphers ๐Ÿ™Œ.

  • Implementations SHOULD NOT negotiate cipher suites that use algorithms offering less than 128 bits of security.

Rationale: cipher suites offering between 112 and 128 bits of security aren't considered weak at this time. However, their useful lifespan is expected to be short enough to justify supporting stronger cipher suites right now. 128-bit ciphers are expected to stay secure for at least several years, and 256-bit ciphers until the next fundamental technology breakthrough ๐Ÿ”ฎ. Note that, because of so-called "meet-in-the-middle" attacks [Multiple-Encryption], some legacy cipher suites (e.g., 168-bit 3DES) have an effective key length that's smaller than their nominal key length (112 bits in the case of 3DES). Such cipher suites should be evaluated according to their effective key length ๐Ÿง.

  • Implementations SHOULD NOT negotiate cipher suites based on RSA key transport, a.k.a. "static RSA".

Rationale: these cipher suites, which have assigned values starting with the string TLS_RSA_WITH_*, have several drawbacks. Especially, they don't support forward secrecy ๐Ÿ’”.

  • Implementations MUST support and prefer to negotiate cipher suites offering forward secrecy, such as those in the Ephemeral Diffie-Hellman and Elliptic Curve Ephemeral Diffie-Hellman ("DHE" and "ECDHE") families ๐Ÿ”ฅ.

Rationale: forward secrecy (sometimes called "perfect forward secrecy") prevents the recovery of information that was encrypted with older session keys, which limits the amount of time during which attacks can be successful โฐ. See Section 6.3 for a detailed discussion.

Given the foregoing considerations, implementing and deploying the following cipher suites is RECOMMENDED ๐Ÿ‘‘:

  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

These cipher suites are supported only in TLS 1.2 because they are authenticated encryption (AEAD) algorithms [RFC5116] ๐Ÿง.

Typically, in order to prefer these suites, the order of suites needs to be explicitly configured in server software. (See [BETTERCRYPTO] for helpful deployment guidelines, but note that its recommendations differ from the current document in some details ๐Ÿ“–.) It would be ideal if server software implementations preferred these suites by default ๐Ÿฅน.

Some devices have hardware support for AES-CCM but not AES-GCM, so they're unable to follow the foregoing recommendations regarding cipher suites ๐Ÿ™ƒ. There are even devices that don't support public key cryptography at all, but they're out of scope entirely ๐Ÿซ .

4.2.1. Implementation Details โœจ

okay so, clients SHOULD put TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 as the very first proposal to any server ๐Ÿ’–, unless they already know the server can't respond to a TLS 1.2 client_hello message ๐Ÿ™ˆ.

Servers MUST prefer this cipher suite over weaker ones whenever it's proposed, even if it isn't the first thing on the list ๐Ÿ‘‘.

Clients are totally free to offer stronger cipher suites, like the ones using AES-256 ๐Ÿ’…. When they do, the server SHOULD prefer the stronger one, unless there are compelling reasons (like seriously degraded performance ๐Ÿ’€) to pick something else.

This document does not change the mandatory-to-implement TLS cipher suite(s) that TLS already prescribes ๐ŸŽ€. To keep things interoperable, RFC 5246 mandates TLS_RSA_WITH_AES_128_CBC_SHA, which is significantly weaker than the cipher suites recommended here ๐Ÿ˜ญ. (GCM mode doesn't have the same weakness, which comes from the MAC-then-Encrypt order in TLS [Krawczyk2001], since it uses an AEAD mode of operation โœจ.) Implementers should weigh the interoperability gain against the loss in security when deploying TLS_RSA_WITH_AES_128_CBC_SHA ๐Ÿฆ‹. Other application protocols specify other cipher suites as mandatory to implement (MTI) ๐ŸŒธ.

Some profiles of TLS 1.2 use different cipher suites, which is giving variety ๐ŸŒˆ. For example, [RFC6460] defines a profile that uses TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 and TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 ๐Ÿงš.

[RFC4492] lets clients and servers negotiate ECDH parameters (curves) ๐Ÿ“. Both clients and servers SHOULD include the "Supported Elliptic Curves" extension [RFC4492]. For interoperability, clients and servers SHOULD support the NIST P-256 (secp256r1) curve [RFC4492] ๐Ÿ’œ. Also, clients SHOULD send an ec_point_formats extension with a single element, "uncompressed" ๐Ÿซถ.


4.3. Public Key Length

okay this one is lowkey important ๐Ÿ”ฅ. When you use the cipher suites recommended in this document, two public keys are normally used in the TLS handshake: one for the Diffie-Hellman key agreement, and one for server authentication ๐Ÿ”‘. If a client certificate is used, a third public key gets added ๐ŸŽ€.

With a key exchange based on modular exponential (MODP) Diffie-Hellman groups (the "DHE" cipher suites), DH key lengths of at least 2048 bits are RECOMMENDED โœจ.

Rationale: In practice, DH keys are typically generated in lengths that are powers of two (e.g., 2^10 = 1024 bits, 2^11 = 2048 bits, 2^12 = 4096 bits) ๐ŸŒธ. A DH key of 1228 bits would be roughly equivalent to only an 80-bit symmetric key [RFC3766], so it's better to use keys longer than that for the "DHE" family of cipher suites ๐Ÿ˜ญ. A DH key of 1926 bits would be roughly equivalent to a 100-bit symmetric key [RFC3766], and a DH key of 2048 bits might be sufficient for at least the next 10 years [NIST.SP.800-56A] ๐Ÿ’…. See Section 4.4 for additional information on the use of MODP Diffie-Hellman in TLS ๐Ÿฆ‹.

As noted in [RFC3766], correcting for the emergence of a TWIRL machine would imply that 1024-bit DH keys yield about 65 bits of equivalent strength, and that a 2048-bit DH key would yield about 92 bits of equivalent strength ๐Ÿ™ˆ.

With regard to ECDH keys, the IANA "EC Named Curve Registry" (within the "Transport Layer Security (TLS) Parameters" registry [IANA-TLS]) contains 160-bit elliptic curves that are considered to be roughly equivalent to only an 80-bit symmetric key [ECRYPT-II] ๐Ÿ’€. Curves of less than 192 bits SHOULD NOT be used ๐Ÿšซ.

When using RSA, servers SHOULD authenticate using certificates with at least a 2048-bit modulus for the public key ๐Ÿ”. The use of the SHA-256 hash algorithm is RECOMMENDED too (see [CAB-Baseline] for more details) ๐Ÿ‘‘. Clients SHOULD indicate to servers that they request SHA-256 by using the "Signature Algorithms" extension defined in TLS 1.2 ๐Ÿซถ.


4.4. Modular Exponential vs. Elliptic Curve DH Cipher Suites

Not every TLS implementation supports both modular exponential (MODP) and elliptic curve (EC) Diffie-Hellman groups, even though Section 4.2 asks for them ๐Ÿ˜ญ. Some implementations are severely limited in the length of DH values ๐Ÿ’”. When those implementations need to be accommodated, the following are RECOMMENDED (in priority order) ๐ŸŒˆ:

  1. Elliptic Curve DHE with appropriately negotiated parameters (e.g., the curve to be used) and a Message Authentication Code (MAC) algorithm stronger than HMAC-SHA1 [RFC5289] ๐Ÿงš
  2. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 [RFC5288], with 2048-bit Diffie-Hellman parameters ๐Ÿ’œ
  3. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, with 1024-bit parameters ๐Ÿ™ˆ

Rationale: Elliptic Curve Cryptography is widely deployed, but there are some communities where adoption has been limited for several reasons ๐Ÿ“. These include its complexity compared to modular arithmetic, and longstanding perceptions of IPR concerns (which, for the most part, have now been resolved [RFC6090]) ๐Ÿ’…. Note that ECDHE cipher suites exist for both RSA and ECDSA certificates, so moving to ECDHE cipher suites does not require moving away from RSA-based certificates โœจ. On the other hand, there are two related issues hindering effective use of MODP Diffie-Hellman cipher suites in TLS ๐Ÿ˜ค:

  • There are no standardized, widely implemented protocol mechanisms to negotiate the DH groups or parameter lengths supported by client and server ๐Ÿคทโ€โ™€๏ธ.
  • Many servers choose DH parameters of 1024 bits or fewer ๐Ÿ’€.
  • There are widely deployed client implementations that reject received DH parameters if they are longer than 1024 bits ๐Ÿšซ. In addition, several implementations do not perform appropriate validation of group parameters, and are vulnerable to attacks referenced in Section 2.9 of [RFC7457] ๐Ÿ˜ฑ.

Note that with DHE and ECDHE cipher suites, the TLS master key only depends on the Diffie-Hellman parameters and not on the strength of the RSA certificate ๐Ÿ”‘. Moreover, 1024-bit MODP DH parameters are generally considered insufficient at this time ๐Ÿ™…โ€โ™€๏ธ.

With MODP ephemeral DH, deployers ought to carefully evaluate interoperability vs. security considerations when configuring their TLS endpoints ๐Ÿซถ.


4.5. Truncated HMAC

Implementations MUST NOT use the Truncated HMAC extension, defined in Section 7 of [RFC6066] ๐Ÿšซ. This one is a hard no, bestie ๐Ÿ’€.

Rationale: The extension doesn't apply to the AEAD cipher suites recommended above ๐Ÿ™ˆ. However, it does apply to most other TLS cipher suites ๐Ÿซ . Its use has been shown to be insecure in [PatersonRS11] ๐Ÿ˜ญ.


5. Applicability Statement

The recommendations of this document mainly apply to the implementation and deployment of application protocols that are most commonly used with TLS and DTLS on the Internet today ๐ŸŒ. Examples include, but are not limited to:

  • Web software and services that want to protect HTTP traffic with TLS ๐ŸŒธ.
  • Email software and services that want to protect IMAP, POP3, or SMTP traffic with TLS ๐Ÿ’Œ.
  • Instant-messaging software and services that want to protect Extensible Messaging and Presence Protocol (XMPP) or Internet Relay Chat (IRC) traffic with TLS ๐Ÿ’ฌ.
  • Realtime media software and services that want to protect Secure Realtime Transport Protocol (SRTP) traffic with DTLS ๐ŸŽฅ.

This document does not modify the implementation and deployment recommendations (e.g., mandatory-to-implement cipher suites) prescribed by existing application protocols that employ TLS or DTLS ๐Ÿ™…โ€โ™€๏ธ. If the community that uses such an application protocol wants to modernize its usage of TLS or DTLS to match the best practices recommended here, it needs to explicitly update the existing application protocol definition (one example is [TLS-XMPP], which updates [RFC6120]) ๐Ÿฆ‹.

Designers of new application protocols developed through the Internet Standards Process [RFC2026] are expected, at minimum, to conform to the best practices recommended here ๐Ÿ‘‘. The exception is if they provide documentation of compelling reasons that would prevent that conformance (e.g., widespread deployment on constrained devices that lack support for the necessary algorithms) ๐Ÿงธ.


5.1. Security Services

This document gives recommendations for an audience that wants to secure their communication with TLS to achieve the following ๐Ÿ”’:

  • Confidentiality: all application-layer communication is encrypted, with the goal that no party should be able to decrypt it except the intended receiver ๐Ÿคซ.
  • Data integrity: any changes made to the communication in transit are detectable by the receiver ๐Ÿ•ต๏ธโ€โ™€๏ธ.
  • Authentication: an endpoint of the TLS communication is authenticated as the intended entity to communicate with ๐Ÿชช.

With regard to authentication, TLS enables authentication of one or both endpoints in the communication ๐Ÿค. In the context of opportunistic security [RFC7435], TLS is sometimes used without authentication ๐Ÿ™ˆ. As discussed in Section 5.2, considerations for opportunistic security are not in scope for this document ๐ŸŒธ.

If deployers deviate from the recommendations given in this document, they need to be aware that they might lose access to one of the security services above ๐Ÿ˜ฌ.

This document applies only to environments where confidentiality is required ๐Ÿ”. It recommends algorithms and configuration options that enforce secrecy of the data in transit ๐Ÿค.

This document also assumes that data integrity protection is always one of the goals of a deployment ๐Ÿ›ก๏ธ. In cases where integrity is not required, it doesn't make sense to use TLS in the first place ๐Ÿ™ƒ. There are attacks against confidentiality-only protection that use the lack of integrity to also break confidentiality (see, for instance, [DegabrieleP07] in the context of IPsec) ๐Ÿ’€.

This document addresses application protocols that are most commonly used on the Internet with TLS and DTLS ๐ŸŒ. Typically, all communication between TLS clients and TLS servers requires all three of the above security services ๐Ÿ’ฏ. This is especially true where TLS clients are user agents like Web browsers or email software ๐Ÿฆ‹.

This document does not address the rarer deployment scenarios where one of the above three properties is not desired, such as the use case described in Section 5.2 below ๐Ÿง. Another scenario where confidentiality isn't needed is a monitored network where the authorities in charge of the traffic domain require full access to unencrypted (plaintext) traffic, and where users collaborate and send their traffic in the clear ๐Ÿ‘€.


5.2. Opportunistic Security

There are several important scenarios where the use of TLS is optional ๐ŸŽฒ. This means the client decides dynamically ("opportunistically") whether to use TLS with a particular server or to connect in the clear ๐Ÿคทโ€โ™€๏ธ. This practice, often called "opportunistic security", is described at length in [RFC7435] and is often motivated by a desire for backward compatibility with legacy deployments ๐Ÿ•ฐ๏ธ.

In these scenarios, some of the recommendations in this document might be too strict, since following them could cause fallback to cleartext ๐Ÿ˜ฑ. That's a worse outcome than using TLS with an outdated protocol version or cipher suite ๐Ÿ’€.

This document specifies best practices for TLS in general ๐Ÿ“˜. A separate document with recommendations for the use of TLS with opportunistic security is to be completed in the future ๐Ÿ”ฎ.


6. Security Considerations

This entire document discusses the security practices that directly affect applications using the TLS protocol ๐Ÿ›ก๏ธ๐Ÿ”ฅ. This section contains broader security considerations related to technologies used in conjunction with or by TLS ๐Ÿšจ.

6.1. Host Name Validation ๐ŸŽ€

Okay bestie, heads up for app authors ๐Ÿšจ. Some TLS implementations just don't validate host names, and that's a whole thing. If yours is one of them, you might need to write your own validation code or switch to a different TLS implementation ๐Ÿ› ๏ธ.

Host name validation rules (and honestly, how the TLS layer gets tied to the protocol running on top of it) are different for each protocol. For HTTPS, those rules are set by Section 3 of [RFC2818] ๐Ÿ”’.

If you want the generic host name validation details in the TLS context, go check [RFC6125] ๐Ÿ“–. It also has a looong list of example protocols, and some of them do things super differently from HTTPS, so don't assume anything ๐Ÿ‘€.

If a host name was found indirectly and insecurely (like through an insecure DNS query for an MX or SRV record), it SHOULD NOT be used as a reference identifier [RFC6125], even if it matches the presented certificate ๐Ÿ™…โ€โ™€๏ธ. This doesn't apply if the host name was found securely. For more on that, see [DANE-SRV] and [DANE-SMTP] โœจ.

Host name validation usually only applies to the leaf "end entity" certificate. But to get proper authentication in the PKI context, application clients need to verify the entire certification path under [RFC5280] (also see [RFC6125]) ๐Ÿซถ.

6.2. AES-GCM ๐Ÿ”

Section 4.2 above recommends AES-GCM authenticated encryption, and it's giving main character energy ๐Ÿ‘‘. For general security considerations when you're using TLS 1.2, check Section 11 of [RFC5246]. For the ones that apply specifically to AES-GCM with TLS, check Section 6 of [RFC5288] ๐Ÿ’….

6.3. Forward Secrecy ๐Ÿฆ‹

Forward secrecy (also called "perfect forward secrecy" or "PFS," and defined in [RFC4949]) is a defense against an attacker who records encrypted conversations where the session keys are only encrypted with the communicating parties' long-term keys ๐Ÿ‘€. If that attacker gets those long-term keys later on, the session keys and the entire conversation could be decrypted ๐Ÿ’€.

In TLS and DTLS, long-term key compromise is not entirely implausible, ngl ๐Ÿ˜ฌ. It can happen, for example, due to:

  • A client or server being attacked by some other attack vector, and the private key retrieved.
  • A long-term key retrieved from a device that has been sold or otherwise decommissioned without prior wiping.
  • A long-term key used on a device as a default key [Heninger2012].
  • A key generated by a trusted third party like a CA, and later retrieved from it either by extortion or compromise [Soghoian2011].
  • A cryptographic break-through, or the use of asymmetric keys with insufficient length [Kleinjung2010].
  • Social engineering attacks against system administrators.
  • Collection of private keys from inadequately protected backups.

So in those cases, forward secrecy makes sure it's not feasible for an attacker to figure out the session keys, even if they got the long-term keys some time after the conversation ๐Ÿ”’. It also protects against an attacker who has the long-term keys but stays passive during the conversation ๐Ÿซฃ.

Forward secrecy is generally achieved by using the Diffie-Hellman scheme to derive session keys ๐Ÿงš. With this scheme, both parties keep private secrets and send parameters over the network as modular powers over certain cyclic groups. The properties of the so-called Discrete Logarithm Problem (DLP) let the parties derive the session keys without an eavesdropper being able to do the same. There's no known attack against DLP as long as sufficiently large parameters are chosen ๐ŸŒธ. There's also a variant of Diffie-Hellman that uses Elliptic Curves instead of the originally proposed modular arithmetic โœจ.

Unfortunately, a lot of TLS/DTLS cipher suites were defined without forward secrecy, e.g., TLS_RSA_WITH_AES_256_CBC_SHA256 ๐Ÿ˜ฉ. So this document advocates strict use of forward-secrecy-only ciphers, and I'm 100% here for it ๐Ÿ’–.

6.4. Diffie-Hellman Exponent Reuse ๐Ÿ“

For performance reasons, a lot of TLS implementations reuse Diffie-Hellman and Elliptic Curve Diffie-Hellman exponents across multiple connections ๐ŸŽ๏ธ. But this can cause some major security issues ๐Ÿšจ:

  • If exponents are reused for too long (e.g., even more than a few hours), an attacker who gains access to the host can decrypt previous connections. In other words, exponent reuse negates the effects of forward secrecy ๐Ÿ’”.
  • TLS implementations that reuse exponents should test the DH public key they receive for group membership, so they can avoid some known attacks ๐Ÿ™ˆ. These tests aren't standardized in TLS at the time of writing. For the recipient tests that IKEv2 implementations which reuse DH exponents are required to do, see [RFC6989] ๐Ÿ“š.

6.5. Certificate Revocation ๐Ÿšซ

The following considerations and recommendations represent the current state of the art for certificate revocation ๐Ÿ’…. Even so, no complete and efficient solution exists for checking the revocation status of common public key certificates [RFC5280], so here's the tea ๐Ÿซ–:

  • Certificate Revocation Lists (CRLs) are the most widely supported mechanism for distributing revocation information, but they have known scaling challenges that limit their usefulness (despite workarounds such as partitioned CRLs and delta CRLs) ๐Ÿ˜ฎโ€๐Ÿ’จ.
  • Proprietary mechanisms that embed revocation lists in the Web browser's configuration database can't scale beyond a small number of the most heavily used Web servers ๐Ÿ™ƒ.
  • The On-Line Certification Status Protocol (OCSP) [RFC6960] has both scaling and privacy issues. Plus, clients typically "soft-fail," meaning they don't abort the TLS connection if the OCSP server doesn't respond. (However, this might be a workaround to avoid denial-of-service attacks if an OCSP responder is taken offline ๐Ÿคทโ€โ™€๏ธ.)
  • The TLS Certificate Status Request extension (Section 8 of [RFC6066]), commonly called "OCSP stapling," resolves the operational issues with OCSP. However, it's still ineffective in the presence of a MITM attacker, because the attacker can simply ignore the client's request for a stapled OCSP response ๐Ÿ˜ค.
  • OCSP stapling as defined in [RFC6066] doesn't extend to intermediate certificates used in a certificate chain. The Multiple Certificate Status extension [RFC6961] addresses this shortcoming, but it's a recent addition without much deployment yet ๐ŸŒฑ.
  • Both CRLs and OCSP depend on relatively reliable connectivity to the Internet, which might not be available to certain kinds of nodes (such as newly provisioned devices that need to establish a secure connection in order to boot up for the first time) ๐Ÿ”Œ.

With regard to common public key certificates, servers SHOULD support the following as a best practice, given the current state of the art and as a foundation for a possible future solution ๐Ÿซถ:

  1. OCSP [RFC6960]
  2. Both the status_request extension defined in [RFC6066] and the status_request_v2 extension defined in [RFC6961] (This might enable interoperability with the widest range of clients.)
  3. The OCSP stapling extension defined in [RFC6961]

The considerations in this section don't apply to scenarios where the DANE-TLSA resource record [RFC6698] is used to signal to a client which certificate a server considers valid and good to use for TLS connections ๐Ÿงšโ€โ™€๏ธ.


7. References ๐Ÿ“š

7.1. Normative References ๐Ÿ’œ

7.2. Informative References โœจ

okay bestie, here's the extra reading list ๐Ÿ“š these aren't strictly needed to implement anything, but they're the receipts behind all the vibes ๐Ÿ’…

[BETTERCRYPTO]
           bettercrypto.org, "Applied Crypto Hardening", April 2015,
           <https://bettercrypto.org/static/
           applied-crypto-hardening.pdf>.

[CAB-Baseline]
           CA/Browser Forum, "Baseline Requirements for the Issuance
           and Management of Publicly-Trusted Certificates Version
           1.1.6", 2013, <https://www.cabforum.org/documents.html>.

[DANE-SMTP]
           Dukhovni, V. and W. Hardaker, "SMTP security via
           opportunistic DANE TLS", Work in Progress, draft-ietf-
           dane-smtp-with-dane-16, April 2015.

[DANE-SRV] Finch, T., Miller, M., and P. Saint-Andre, "Using DNS-
           Based Authentication of Named Entities (DANE) TLSA Records
           with SRV Records", Work in Progress,
           draft-ietf-dane-srv-14, April 2015.

[DEP-SSLv3]
           Barnes, R., Thomson, M., Pironti, A., and A. Langley,
           "Deprecating Secure Sockets Layer Version 3.0", Work in
           Progress, draft-ietf-tls-sslv3-diediedie-03, April 2015.

[DegabrieleP07]
           Degabriele, J. and K. Paterson, "Attacking the IPsec
           Standards in Encryption-only Configurations", IEEE
           Symposium on Security and Privacy (SP '07), 2007,
           <http://dx.doi.org/10.1109/SP.2007.8>.

[ECRYPT-II]
           Smart, N., "ECRYPT II Yearly Report on Algorithms and
           Keysizes (2011-2012)", 2012,
           <http://www.ecrypt.eu.org/ecrypt2/>.

[Heninger2012]
           Heninger, N., Durumeric, Z., Wustrow, E., and J.
           Halderman, "Mining Your Ps and Qs: Detection of Widespread
           Weak Keys in Network Devices", Usenix Security Symposium
           2012, 2012.

[IANA-TLS] IANA, "Transport Layer Security (TLS) Parameters",
           <http://www.iana.org/assignments/tls-parameters>.

[Kleinjung2010]
           Kleinjung, T., "Factorization of a 768-Bit RSA modulus",
           CRYPTO 10, 2010, <https://eprint.iacr.org/2010/006.pdf>.

[Krawczyk2001]
           Krawczyk, H., "The Order of Encryption and Authentication
           for Protecting Communications (Or: How Secure is SSL?)",
           CRYPTO 01, 2001,
           <https://www.iacr.org/archive/crypto2001/21390309.pdf>.

[Multiple-Encryption]
           Merkle, R. and M. Hellman, "On the security of multiple
           encryption", Communications of the ACM, Vol. 24, 1981,
           <http://dl.acm.org/citation.cfm?id=358718>.

[NIST.SP.800-56A]
           Barker, E., Chen, L., Roginsky, A., and M. Smid,
           "Recommendation for Pair-Wise Key Establishment Schemes
           Using Discrete Logarithm Cryptography", NIST Special
           Publication 800-56A, 2013,
           <http://nvlpubs.nist.gov/nistpubs/SpecialPublications/
           NIST.SP.800-56Ar2.pdf>.

[POODLE]   US-CERT, "SSL 3.0 Protocol Vulnerability and POODLE
           Attack", Alert TA14-290A, October 2014,
           <https://www.us-cert.gov/ncas/alerts/TA14-290A>.

[PatersonRS11]
           Paterson, K., Ristenpart, T., and T. Shrimpton, "Tag size
           does matter: attacks and proofs for the TLS record
           protocol", 2011,
           <http://dx.doi.org/10.1007/978-3-642-25385-0_20>.

[RFC2026]  Bradner, S., "The Internet Standards Process -- Revision
           3", BCP 9, RFC 2026, October 1996,
           <http://www.rfc-editor.org/info/rfc2026>.

[RFC2246]  Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
           RFC 2246, January 1999,
           <http://www.rfc-editor.org/info/rfc2246>.

[RFC3602]  Frankel, S., Glenn, R., and S. Kelly, "The AES-CBC Cipher
           Algorithm and Its Use with IPsec", RFC 3602, September
           2003, <http://www.rfc-editor.org/info/rfc3602>.

[RFC4346]  Dierks, T. and E. Rescorla, "The Transport Layer Security
           (TLS) Protocol Version 1.1", RFC 4346, April 2006,
           <http://www.rfc-editor.org/info/rfc4346>.

[RFC4347]  Rescorla, E. and N. Modadugu, "Datagram Transport Layer
           Security", RFC 4347, April 2006,
           <http://www.rfc-editor.org/info/rfc4347>.

[RFC5077]  Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig,
           "Transport Layer Security (TLS) Session Resumption without
           Server-Side State", RFC 5077, January 2008,
           <http://www.rfc-editor.org/info/rfc5077>.

[RFC5116]  McGrew, D., "An Interface and Algorithms for Authenticated
           Encryption", RFC 5116, January 2008,
           <http://www.rfc-editor.org/info/rfc5116>.

[RFC5280]  Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
           Housley, R., and W. Polk, "Internet X.509 Public Key
           Infrastructure Certificate and Certificate Revocation List
           (CRL) Profile", RFC 5280, May 2008,
           <http://www.rfc-editor.org/info/rfc5280>.

[RFC6090]  McGrew, D., Igoe, K., and M. Salter, "Fundamental Elliptic
           Curve Cryptography Algorithms", RFC 6090, February 2011,
           <http://www.rfc-editor.org/info/rfc6090>.

[RFC6101]  Freier, A., Karlton, P., and P. Kocher, "The Secure
           Sockets Layer (SSL) Protocol Version 3.0", RFC 6101,
           August 2011, <http://www.rfc-editor.org/info/rfc6101>.

[RFC6120]  Saint-Andre, P., "Extensible Messaging and Presence
           Protocol (XMPP): Core", RFC 6120, March 2011,
           <http://www.rfc-editor.org/info/rfc6120>.

[RFC6460]  Salter, M. and R. Housley, "Suite B Profile for Transport
           Layer Security (TLS)", RFC 6460, January 2012,
           <http://www.rfc-editor.org/info/rfc6460>.

[RFC6698]  Hoffman, P. and J. Schlyter, "The DNS-Based Authentication
           of Named Entities (DANE) Transport Layer Security (TLS)
           Protocol: TLSA", RFC 6698, August 2012,
           <http://www.rfc-editor.org/info/rfc6698>.

[RFC6797]  Hodges, J., Jackson, C., and A. Barth, "HTTP Strict
           Transport Security (HSTS)", RFC 6797, November 2012,
           <http://www.rfc-editor.org/info/rfc6797>.

[RFC6960]  Santesson, S., Myers, M., Ankney, R., Malpani, A.,
           Galperin, S., and C. Adams, "X.509 Internet Public Key
           Infrastructure Online Certificate Status Protocol - OCSP",
           RFC 6960, June 2013,
           <http://www.rfc-editor.org/info/rfc6960>.

[RFC6961]  Pettersen, Y., "The Transport Layer Security (TLS)
           Multiple Certificate Status Request Extension", RFC 6961,
           June 2013, <http://www.rfc-editor.org/info/rfc6961>.

[RFC6989]  Sheffer, Y. and S. Fluhrer, "Additional Diffie-Hellman
           Tests for the Internet Key Exchange Protocol Version 2
           (IKEv2)", RFC 6989, July 2013,
           <http://www.rfc-editor.org/info/rfc6989>.

[RFC7435]  Dukhovni, V., "Opportunistic Security: Some Protection
           Most of the Time", RFC 7435, December 2014,
           <http://www.rfc-editor.org/info/rfc7435>.

[RFC7457]  Sheffer, Y., Holz, R., and P. Saint-Andre, "Summarizing
           Known Attacks on Transport Layer Security (TLS) and
           Datagram TLS (DTLS)", RFC 7457, February 2015,
           <http://www.rfc-editor.org/info/rfc7457>.

[RFC7507]  Moeller, B. and A. Langley, "TLS Fallback Signaling Cipher
           Suite Value (SCSV) for Preventing Protocol Downgrade
           Attacks", RFC 7507, April 2015.

[SESSION-HASH]
           Bhargavan, K., Ed., Delignat-Lavaud, A., Pironti, A.,
           Langley, A., and M. Ray, "Transport Layer Security (TLS)
           Session Hash and Extended Master Secret Extension", Work
           in Progress, draft-ietf-tls-session-hash-05, April 2015.

[Smith2013]
           Smith, B., "Proposal to Change the Default TLS
           Ciphersuites Offered by Browsers.", 2013,
           <https://briansmith.org/browser-ciphersuites-01.html>.

[Soghoian2011]
           Soghoian, C. and S. Stamm, "Certified lies: Detecting and
           defeating government interception attacks against SSL",
           Proc. 15th Int. Conf. Financial Cryptography and Data
           Security, 2011.

[TLS-XMPP] Saint-Andre, P. and a. alkemade, "Use of Transport Layer
           Security (TLS) in the Extensible Messaging and Presence
           Protocol (XMPP)", Work in Progress,
           draft-ietf-uta-xmpp-07, April 2015.

[triple-handshake]
           Delignat-Lavaud, A., Bhargavan, K., and A. Pironti,
           "Triple Handshakes Considered Harmful: Breaking and Fixing
           Authentication over TLS", 2014,
           <https://secure-resumption.com/>.

Acknowledgments ๐Ÿซถ

huge thank-yous to RJ Atkinson, Uri Blumenthal, Viktor Dukhovni, Stephen Farrell, Daniel Kahn Gillmor, Paul Hoffman, Simon Josefsson, Watson Ladd, Orit Levin, Ilari Liusvaara, Johannes Merkle, Bodo Moeller, Yoav Nir, Massimiliano Pala, Kenny Paterson, Patrick Pelletier, Tom Ritter, Joe St. Sauver, Joe Salowey, Rich Salz, Brian Smith, Sean Turner, and Aaron Zauner for their feedback and suggested improvements ๐Ÿ’œ Brian Smith also gets extra love for his great resource, the "Proposal to Change the Default TLS Ciphersuites Offered by Browsers" [Smith2013] ๐ŸŒˆ Finally, thanks to everyone who commented on the TLS, UTA, and other discussion lists but isn't named here, you're all iconic โœจ

Robert Sparks and Dave Waltermire provided helpful reviews on behalf of the General Area Review Team and the Security Directorate, respectively ๐ŸŽ€

During IESG review, Richard Barnes, Alissa Cooper, Spencer Dawkins, Stephen Farrell, Barry Leiba, Kathleen Moriarty, and Pete Resnick provided comments that led to further improvements ๐Ÿ”ฅ

Ralph Holz gratefully acknowledges the support by Technische Universitaet Muenchen. The authors gratefully acknowledge the assistance of Leif Johansson and Orit Levin as the working group chairs and Pete Resnick as the sponsoring Area Director ๐Ÿ‘‘


Authors' Addresses ๐Ÿ’Œ

Yaron Sheffer
Intuit
4 HaHarash St.
Hod HaSharon  4524075
Israel

EMail: yaronf.ietf@gmail.com


Ralph Holz
NICTA
13 Garden St.
Eveleigh 2015 NSW
Australia

EMail: ralph.ietf@gmail.com


Peter Saint-Andre
&yet

EMail: peter@andyet.com
URI:   https://andyet.com/
๐Ÿ“ฆ where this page comes from