| < draft-sheffer-tls-bcp-01.txt | draft-sheffer-tls-bcp-02.txt > | |||
|---|---|---|---|---|
| tls Y. Sheffer | UTA Y. Sheffer | |||
| Internet-Draft Porticor | Internet-Draft Porticor | |||
| Intended status: BCP R. Holz | Intended status: Best Current Practice R. Holz | |||
| Expires: March 24, 2014 TUM | Expires: August 17, 2014 TUM | |||
| September 20, 2013 | P. Saint-Andre | |||
| &yet | ||||
| February 13, 2014 | ||||
| Recommendations for Secure Use of TLS and DTLS | Recommendations for Secure Use of TLS and DTLS | |||
| draft-sheffer-tls-bcp-01 | draft-sheffer-tls-bcp-02 | |||
| Abstract | Abstract | |||
| Over the last few years there have been several serious attacks on | Transport Layer Security (TLS) and Datagram Transport Security Layer | |||
| TLS, including attacks on its most commonly used ciphers and modes of | (DTLS) are widely used to protect data exchanged over application | |||
| operation. This document offers recommendations on securely using | protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the | |||
| the TLS and DTLS protocols, given existing standards and | last few years, several serious attacks on TLS have emerged, | |||
| implementations. | including attacks on its most commonly used cipher suites and modes | |||
| of operation. This document provides recommendations for improving | ||||
| the security of both software implementations and deployed services | ||||
| that use TLS and DTLS. | ||||
| Status of this Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on March 24, 2014. | This Internet-Draft will expire on August 17, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Conventions used in this document . . . . . . . . . . 3 | 2. Conventions used in this document . . . . . . . . . . . . . . 3 | |||
| 2. Attacks on TLS . . . . . . . . . . . . . . . . . . . . 3 | 3. Recommendations . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. BEAST . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3.1. Protocol Versions . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.2. Lucky Thirteen . . . . . . . . . . . . . . . . . . . . 4 | 3.2. Fallback to SSL . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.3. Attacks on RC4 . . . . . . . . . . . . . . . . . . . . 4 | 3.3. Cipher Suites . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.4. Compression Attacks: CRIME and BREACH . . . . . . . . 4 | 3.4. Public Key Length . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3. Selection Criteria . . . . . . . . . . . . . . . . . . 4 | 3.5. Compression . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. Recommendations . . . . . . . . . . . . . . . . . . . 5 | 3.6. Session Resumption . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.1. Summary . . . . . . . . . . . . . . . . . . . . . . . 5 | 4. Detailed Guidelines . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.2. Cipher Suite Negotiation Details . . . . . . . . . . . 6 | 4.1. Cipher Suite Negotiation Details . . . . . . . . . . . . 7 | |||
| 4.3. Downgrade Attacks . . . . . . . . . . . . . . . . . . 6 | 4.2. Alternative Cipher Suites . . . . . . . . . . . . . . . . 7 | |||
| 4.4. Alternatives . . . . . . . . . . . . . . . . . . . . . 6 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5. Implementation Status . . . . . . . . . . . . . . . . 7 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . 8 | 6.1. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 6.1. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . 8 | 6.2. Forward Secrecy . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 6.2. Perfect Forward Secrecy (PFS) . . . . . . . . . . . . 8 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 6.3. Session Resumption . . . . . . . . . . . . . . . . . . 9 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . 9 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
| 8. Acknowledgements . . . . . . . . . . . . . . . . . . . 9 | 8.2. Informative References . . . . . . . . . . . . . . . . . 10 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . 9 | Appendix A. Appendix: Change Log . . . . . . . . . . . . . . . . 11 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . 9 | A.1. -02 . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . 10 | A.2. -01 . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| Appendix A. Appendix: Change Log . . . . . . . . . . . . . . . . . 12 | A.3. -00 . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| A.1. -01 . . . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| A.2. -00 . . . . . . . . . . . . . . . . . . . . . . . . . 12 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . 12 | ||||
| 1. Introduction | 1. Introduction | |||
| Over the last few years there have been several major attacks on TLS | Transport Layer Security (TLS) and Datagram Transport Security Layer | |||
| [RFC5246], including attacks on its most commonly used ciphers and | (DTLS) are widely used to protect data exchanged over application | |||
| modes of operation. Details are given in Section 2, but suffice it | protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the | |||
| to say that both AES-CBC and RC4, which together make up for most | last few years, several serious attacks on TLS have emerged, | |||
| current usage, have been seriously attacked in the context of TLS. | including attacks on its most commonly used cipher suites and modes | |||
| of operation. For instance, both AES-CBC and RC4, which together | ||||
| Given these issues, there is need for IETF guidance on how TLS can be | comprise most current usage, have been attacked in the context of | |||
| used securely. Unlike most IETF documents, this is guidance for | TLS. A companion document [I-D.sheffer-uta-tls-attacks] provides | |||
| deployers, as well as for implementers. In fact the recommendations | detailed information about these attacks. | |||
| below call for the use of widely implemented algorithms, which are | ||||
| not seeing widespread use today. | ||||
| Rather than standardizing new mechanisms in TLS, our goal is to | Because of these attacks, those who implement and deploy TLS and DTLS | |||
| recommend a few already-specified mechanisms and cipher suites, and | need updated guidance on how TLS can be used securely. Note that | |||
| to encourage the industry to use them in order to improve the overall | this document provides guidance for deployed services, as well as | |||
| security of TLS-protected network traffic. When picking these | software implementations. In fact, this document calls for the | |||
| mechanisms, we consider their security, their technical maturity and | deployment of algorithms that are widely implemented but not yet | |||
| interoperability, as well as their prevalence at the time of writing. | widely deployed. | |||
| This recommendation applies to both TLS and DTLS. TLS 1.3, when it | The recommendations herein take into consideration the security of | |||
| is standardized and deployed in the field, should resolve the current | various mechanisms, their technical maturity and interoperability, | |||
| and their prevalence in implementatios at the time of writing. These | ||||
| recommendations apply to both TLS and DTLS. TLS 1.3, when it is | ||||
| standardized and deployed in the field, should resolve the current | ||||
| vulnerabilities while providing significantly better functionality, | vulnerabilities while providing significantly better functionality, | |||
| and will very likely obsolete the current document. | and will very likely obsolete the current document. | |||
| Our knowledge about the strength of various algorithms and feasible | Community knowledge about the strength of various algorithms and | |||
| attacks can change quickly, and experience shows that a crypto BCP is | feasible attacks can change quickly, and experience shows that a | |||
| a point-in-time statement more than other BCPs. Readers are advised | security BCP is a point-in-time statement. Readers are advised to | |||
| to seek out any errata or udpates that apply to this document. | seek out any errata or updates that apply to this document. | |||
| 1.1. Conventions used in this document | ||||
| [[Are we normative? Currently we're not and this section might go | 2. Conventions used in this document | |||
| away.]] | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| 2. Attacks on TLS | 3. Recommendations | |||
| This section lists the attacks that motivated the current | 3.1. Protocol Versions | |||
| recommendations. This is not intended to be an extensive survey of | ||||
| TLS's security. | ||||
| While there are widely deployed mitigations for some of the attacks | It is important both to stop using old, less secure versions of SSL/ | |||
| listed below, we believe that their root causes necessitate a more | TLS and to start using modern, more secure versions. Therefore: | |||
| systemic solution. | ||||
| 2.1. BEAST | o Implementations MUST NOT negotiate SSL version 2. | |||
| The BEAST attack [BEAST] uses issues with the TLS 1.0 implementation | Rationale: SSLv2 has serious security vulnerabilities [RFC6176]. | |||
| of CBC (that is, predictable IV) to decrypt parts of a packet, and | ||||
| specifically shows how this can be used to decrypt HTTP cookies when | ||||
| run over TLS. | ||||
| 2.2. Lucky Thirteen | o Implementations SHOULD NOT negotiate SSL version 3. | |||
| A consequence of the MAC-then-encrypt design in all current versions | Rationale: SSLv3 [RFC6101] was an improvement over SSLv2 and | |||
| of TLS is the existence of padding oracle attacks [Padding-Oracle]. | plugged some significant security holes, but did not support | |||
| A recent incarnation of these attacks is the Lucky Thirteen attack | strong cipher suites. | |||
| [CBC-Attack], a timing side-channel attack that allows the attacker | ||||
| to decrypt arbitrary ciphertext. | ||||
| 2.3. Attacks on RC4 | o Implementations MAY negotiate TLS version 1.0 [RFC2246]. | |||
| The RC4 algorithm [RC4] has been used with TLS (and previously, SSL) | Rationale: TLS 1.0 (published in 1999) includes a way to downgrade | |||
| for many years. Attacks have also been known for a long time, e.g. | the connection to SSLv3 and does not support more modern, strong | |||
| [RC4-Attack-FMS]. But recent attacks ([RC4-Attack], | cipher suites. | |||
| [RC4-Attack-AlF]) have weakened this algorithm even more. See | ||||
| [I-D.popov-tls-prohibiting-rc4] for more details. | ||||
| 2.4. Compression Attacks: CRIME and BREACH | o Implementations MAY negotiate TLS version 1.1 [RFC4346]. | |||
| The CRIME attack [CRIME] allows an active attacker to decrypt | Rationale: TLS 1.1 (published in 2006) prevents downgrade attacks | |||
| cyphertext (specifically, cookies) when TLS is used with protocol- | to SSL, but does not support certain stronger cipher suites. | |||
| level compression. | ||||
| The BREACH attack [BREACH] makes similar use of HAdded TTP-level | o Implementations MUST support, and prefer to negotiate, TLS version | |||
| compression, which is much more prevalent than compression at the TLS | 1.2 [RFC5246]. | |||
| level, to decrypt secret data passed in the HTTP response. | ||||
| The former attack can be mitigated by disabling TLS compression, as | Rationale: Several stronger cipher suites are available only with | |||
| recommended below. We are not aware of mitigations at the protocol | TLS 1.2 (published in 2008). | |||
| level to the latter attack, and so application-level mitigations are | ||||
| needed (see [BREACH]). For example, implementations of HTTP that use | ||||
| CSRF tokens will need to randomize them even when the recommendations | ||||
| of the current document are adopted. | ||||
| 3. Selection Criteria | As of the date of this writing, the latest version of TLS is 1.2. | |||
| When TLS is updated to a newer version, this document will be updated | ||||
| to recommend support for the latest version. If this document is not | ||||
| updated in a timely manner, it can be assumed that support for the | ||||
| latest version of TLS is recommended. | ||||
| Given the above attacks, we are proposing that deployers opt for a | 3.2. Fallback to SSL | |||
| specific cipher suite when negotiating TLS. We have used the | ||||
| following criteria when framing our recommendations: | ||||
| o The cipher suite must be secure in default use, and should not | Some client implementations revert to SSLv3 if the server rejected | |||
| require any additional security measures beyond those defined in | higher versions of SSL/TLS. This fallback can be forced by a MITM | |||
| the standard. | attacker. Moreover, IP scans [[reference?]] show that SSLv3-only | |||
| o The cipher suite must be widely implemented, i.e. available in a | servers amount to only about 3% of the current web server population. | |||
| large percentage of popular cryptographic libraries. | Therefore, by default clients SHOULD NOT fall back from TLS to SSLv3. | |||
| o The cipher suite must have undergone a significant amount of | ||||
| analysis, and the algorithm and mode of operation must both be | ||||
| standardized by relevant organizations. | ||||
| o We prefer cipher suites that provide client-side privacy and | ||||
| perfect forward secrecy, i.e. those that use ephemeral Diffie- | ||||
| Hellman. See Section 6.2 for more details. | ||||
| o As currently specified and implemented, elliptic curve groups are | ||||
| preferable over modular DH groups: they are easier and safer to | ||||
| use within TLS. | ||||
| o When there are multiple key sizes available, we have chosen the | ||||
| current industry standard, 128 bits of strength. Of course | ||||
| deployers are free to opt for a stronger cipher suite. | ||||
| 4. Recommendations | 3.3. Cipher Suites | |||
| Following are recommendations for people implementing and deploying | It is important both to stop using old, insecure cipher suites and to | |||
| client and server-side TLS. | start using modern, more secure cipher suites. Therefore: | |||
| 4.1. Summary | o Implementations MUST NOT negotiate the NULL cipher suites. | |||
| Based on the criteria above, we recommend using as a preferred cipher | Rationale: The NULL cipher suites offer no encryption whatsoever | |||
| suite the following: | and thus are completely insecure. | |||
| o TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 [RFC5829] | o Implementations MUST NOT negotiate RC4 cipher suites | |||
| It is noted that the above cipher suite is an authenticated | Rationale: The RC4 stream cipher has a variety of cryptographic | |||
| encryption (AEAD) algorithm [RFC5116], and therefore requires the use | weaknesses, as documented in [I-D.popov-tls-prohibiting-rc4]. | |||
| of TLS 1.2. | ||||
| We recommend using 2048-bit server certificates, with a SHA-256 | o Implementations MUST NOT negotiate cipher suites offering only so- | |||
| fingerprint. See [CAB-Baseline] for more details. | called "export-level" encryption (including algorithms with 40 | |||
| bits or 56 bits of security). | ||||
| Rationale: These cipher suites are deliberately "dumbed down" and | ||||
| are very easy to break. | ||||
| o Implementations SHOULD NOT negotiate cipher suites that use | ||||
| algorithms offering less than 128 bits of security (even if they | ||||
| advertise more bits, such as the 168-bit 3DES cipher suites). | ||||
| Rationale: Although these cipher suites are not actively subject | ||||
| to breakage, their useful life is short enough that stronger | ||||
| cipher suites are desirable. | ||||
| o Implementations SHOULD prefer cipher suites that use algorithms | ||||
| with at least 128 (and, if possible, 256) bits of security. | ||||
| Rationale: Although the useful life of such cipher suites is | ||||
| unknown, it is probably at least several years for the 128-bit | ||||
| ciphers and "until the next fundamental technology breakthrough" | ||||
| for 256-bit ciphers. | ||||
| o Implementations MUST support, and SHOULD prefer to negotiate, | ||||
| cipher suites offering forward secrecy, such as those in the | ||||
| "EDH", "DHE", and "ECDHE" families. | ||||
| Rationale: Forward secrecy (sometimes called "perfect forward | ||||
| secrecy") prevents the recovery of information that was encrypted | ||||
| with older session keys, thus limiting the amount of time during | ||||
| which attacks can be successful. | ||||
| Given the foregoing considerations, implementation of the following | ||||
| cipher suites is RECOMMENDED (see [RFC5289] for details): | ||||
| o TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | ||||
| o TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | ||||
| o TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | ||||
| o TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | ||||
| We suggest that TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 be preferred in | ||||
| general. | ||||
| Unfortunately, those cipher suites are supported only in TLS 1.2 | ||||
| since they are authenticated encryption (AEAD) algorithms [RFC5116]. | ||||
| A future version of this document might recommend cipher suites for | ||||
| earlier versions of TLS. | ||||
| [RFC4492] allows clients and servers to negotiate ECDH parameters | [RFC4492] allows clients and servers to negotiate ECDH parameters | |||
| (curves). We recommend that clients and servers prefer verifiably | (curves). Clients and servers SHOULD prefer verifiably random curves | |||
| random curves (specifically Brainpool P-256, brainpoolp256r1 | (specifically Brainpool P-256, brainpoolp256r1 [RFC7027]), and fall | |||
| [I-D.merkle-tls-brainpool]), and fall back to the commonly used NIST | back to the commonly used NIST P-256 (secp256r1) curve [RFC4492]. In | |||
| P-256 (secp256r1) [RFC4492]. In addition, clients should send an | addition, clients SHOULD send an ec_point_formats extension with a | |||
| ec_point_formats extension with a single element, "uncompressed". | single element, "uncompressed". | |||
| We recommend to always disable TLS-level compression ([RFC5246], Sec. | 3.4. Public Key Length | |||
| 6.2.2). | Because Diffie-Hellman keys of 1024 bits are estimated to be roughly | |||
| equivalent to 80-bit symmetric keys, it is better to use longer keys | ||||
| for the "DH" family of cipher suites. Unfortunately, some existing | ||||
| software cannot handle (or cannot easily handle) key lengths greater | ||||
| than 1024 bits. The most common workaround for these systems is to | ||||
| prefer the "ECDHE" family of cipher suites instead of the "DH" | ||||
| family, then use longer keys. Key lengths of at least 2048 bits are | ||||
| RECOMMENDED, since they are estimated to be roughly equivalent to | ||||
| 112-bit symmetric keys and might be sufficient for at least the next | ||||
| 10 years. In addition to 2048-bit server certificates, the use of | ||||
| SHA-256 fingerprints is RECOMMENDED (see [CAB-Baseline] for more | ||||
| details). | ||||
| Finally, we recommend that clients disable fallback to SSLv3 (see | Note: The foregoing recommendations are preliminary and will likely | |||
| Section 4.3). | be corrected and enhanced in a future version of this document. | |||
| 4.2. Cipher Suite Negotiation Details | 3.5. Compression | |||
| We recommend that clients include the above cipher suite as the first | Implementations and deployments SHOULD disable TLS-level compression | |||
| proposal to any server, unless they have prior knowledge that the | ([RFC5246], Sec. 6.2.2). | |||
| server cannot respond to a TLS 1.2 client_hello message. | ||||
| We recommend that servers prefer this cipher suite (or a similar but | 3.6. Session Resumption | |||
| stronger one) whenever it is proposed, even if it is not the first | ||||
| proposal. | ||||
| Both clients and servers should include the "Supported Elliptic | If TLS session resumption is used, care ought to be taken to do so | |||
| safely. In particular, the resumption information (either session | ||||
| IDs [RFC5246] or session tickets [RFC5077]) needs to be authenticated | ||||
| and encrypted to prevent modification or eavesdropping by an | ||||
| attacker. For session tickets, a strong cipher suite SHOULD 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 effect of forward secrecy. Session ticket | ||||
| validity SHOULD be limited to a reasonable duration (e.g. 1 day), so | ||||
| as not to negate the benefits of forward secrecy. | ||||
| 4. Detailed Guidelines | ||||
| The following sections provide more detailed information about the | ||||
| recommendations listed above. | ||||
| 4.1. Cipher Suite Negotiation Details | ||||
| Clients SHOULD include TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 as the | ||||
| first proposal to any server, unless they have prior knowledge that | ||||
| the server cannot respond to a TLS 1.2 client_hello message. | ||||
| Servers SHOULD prefer this cipher suite (or a similar but stronger | ||||
| one) whenever it is proposed, even if it is not the first proposal. | ||||
| Both clients and servers SHOULD include the "Supported Elliptic | ||||
| Curves" extension [RFC4492]. | Curves" extension [RFC4492]. | |||
| Clients are of course free to offer stronger cipher suites, e.g. | Clients are of course free to offer stronger cipher suites, e.g. | |||
| using AES-256; when they do, the server should prefer the stronger | using AES-256; when they do, the server SHOULD prefer the stronger | |||
| cipher suite unless there are reasons (e.g. performance) to choose | cipher suite unless there are compelling reasons (e.g., seriously | |||
| otherwise. | degraded performance) to choose otherwise. | |||
| Note that other profiles of TLS 1.2 exist that use different cipher | Note that other profiles of TLS 1.2 exist that use different cipher | |||
| suites. For example, [RFC6460] defines a profile that uses the | suites. For example, [RFC6460] defines a profile that uses the | |||
| TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 and | TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 and | |||
| TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 cipher suites. | TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 cipher suites. | |||
| This document is not an application profile standard, in the sense of | This document is not an application profile standard, in the sense of | |||
| Sec. 9 of [RFC5246]. As a result, clients and servers are still | Sec. 9 of [RFC5246]. As a result, clients and servers are still | |||
| required to support the TLS mandatory cipher suite, | required to support the TLS mandatory cipher suite, | |||
| TLS_RSA_WITH_AES_128_CBC_SHA. | TLS_RSA_WITH_AES_128_CBC_SHA. | |||
| 4.3. Downgrade Attacks | 4.2. Alternative Cipher Suites | |||
| Some client implementations revert to SSLv3 if the server rejected | ||||
| higher versions of SSL/TLS. This fallback can be forced by a MITM | ||||
| attacker. Moreover, IP scans [[reference?]] show that SSLv3-only | ||||
| servers amount to about 3% of the current server population. As a | ||||
| result, we recommend that by default, clients should avoid falling | ||||
| back to SSLv3. | ||||
| 4.4. Alternatives | ||||
| Elliptic Curves Cryptography is not universally deployed for several | Elliptic Curves Cryptography is not universally deployed for several | |||
| reasons, including its complexity compared to modular arithmetic and | reasons, including its complexity compared to modular arithmetic and | |||
| longstanding IPR concerns. On the other hand, there are two related | longstanding IPR concerns. On the other hand, there are two related | |||
| issues hindering effective use of modular Diffie-Hellman cipher | issues hindering effective use of modular Diffie-Hellman cipher | |||
| suites in TLS: | suites in TLS: | |||
| o There are no protocol mechanisms to negotiate the DH groups or | o There are no protocol mechanisms to negotiate the DH groups or | |||
| parameter lengths supported by client and server. | parameter lengths supported by client and server. | |||
| o There are widely deployed client implementations that reject | o There are widely deployed client implementations that reject | |||
| received DH parameters, if they are longer than 1024 bits. | received DH parameters, if they are longer than 1024 bits. | |||
| We note that with DHE and ECDHE cipher suites, the TLS master key | We note that with DHE and ECDHE cipher suites, the TLS master key | |||
| only depends on the Diffie Hellman parameters and not on the strength | only depends on the Diffie Hellman parameters and not on the strength | |||
| the the RSA certificate; moreover, 1024 bits DH parameters are | the the RSA certificate; moreover, 1024 bits DH parameters are | |||
| generally considered insufficient at this time. | generally considered insufficient at this time. | |||
| Because of the above, we recommend using (in priority order): | Because of the above, we recommend using (in priority order): | |||
| 1. Elliptic Curve DHE with negotiated parameters, as described in | 1. Elliptic Curve DHE with negotiated parameters [RFC5289] | |||
| Section 4.1. | ||||
| 2. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 [RFC5288], with 2048-bit | 2. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 [RFC5288], with 2048-bit | |||
| Diffie-Hellman parameters. | Diffie-Hellman parameters | |||
| 3. The same cipher suite, with 1024-bit parameters. | 3. The same cipher suite, with 1024-bit parameters. | |||
| With modular ephemeral DH, deployers should carefully evaluate | With modular ephemeral DH, deployers SHOULD carefully evaluate | |||
| interoperability vs. security considerations when configuring their | interoperability vs. security considerations when configuring their | |||
| TLS endpoints. | TLS endpoints. | |||
| 5. Implementation Status | 5. IANA Considerations | |||
| Since this document does not propose a new protocol or a new cipher | ||||
| suite, we do not provide a full implementation status, as per | ||||
| [RFC6982]. However it is useful to list some known existing | ||||
| implementations of the recommended cipher suite(s). | ||||
| +----------+--------------+---------------------+-------------------+ | This document requests no actions of IANA. | |||
| | Category | Software | As Of Version | Comment | | ||||
| +----------+--------------+---------------------+-------------------+ | ||||
| | Library | OpenSSL | 1.0.1 | | | ||||
| | | GnuTLS | | | | ||||
| | | NSS | 3.11.1 | | | ||||
| | Browser | Internet | IE8 on Windows 7 | | | ||||
| | | Explorer | | | | ||||
| | | Firefox | TBD | | | ||||
| | | Chrome | TLS 1.2 and AES-GCM | | | ||||
| | | | expected in Chrome | | | ||||
| | | | 30 | | | ||||
| | | Safari | TBD | | | ||||
| | Web | Apache | ?? | | | ||||
| | server | (mod_gnutls) | | | | ||||
| | | Apache | ?? | | | ||||
| | | (mod_ssl) | | | | ||||
| | | Nginx | 1.0.9, 1.1.6 | With a recent | | ||||
| | | | | version of | | ||||
| | | | | OpenSSL | | ||||
| +----------+--------------+---------------------+-------------------+ | ||||
| 6. Security Considerations | 6. Security Considerations | |||
| 6.1. AES-GCM | 6.1. AES-GCM | |||
| Please refer to [RFC5246], Sec. 11 for general security | Please refer to [RFC5246], Sec. 11 for general security | |||
| considerations when using TLS 1.2, and to [RFC5288], Sec. 6 for | considerations when using TLS 1.2, and to [RFC5288], Sec. 6 for | |||
| security considerations that apply specifically to AES-GCM when used | security considerations that apply specifically to AES-GCM when used | |||
| with TLS. | with TLS. | |||
| 6.2. Perfect Forward Secrecy (PFS) | 6.2. Forward Secrecy | |||
| PFS is a defense against an attacker who records encrypted | Forward secrecy (also often called Perfect Forward Secrecy or "PFS") | |||
| conversations where the session keys are only encrypted with the | is a defense against an attacker who records encrypted conversations | |||
| communicating parties' long-term keys. Should the attacker be able | where the session keys are only encrypted with the communicating | |||
| to obtain these long-term keys at some point later in the future, he | parties' long-term keys. Should the attacker be able to obtain these | |||
| will be able to decrypt the session keys and thus the entire | long-term keys at some point later in the future, he will be able to | |||
| conversation. In the context of TLS and DTLS, such compromise of | decrypt the session keys and thus the entire conversation. In the | |||
| long-term keys is not entirely implausible. It can happen, for | context of TLS and DTLS, such compromise of long-term keys is not | |||
| example, due to: | entirely implausible. It can happen, for example, due to: | |||
| o A client or server being attacked by some other attack vector, and | o A client or server being attacked by some other attack vector, and | |||
| the private key retrieved. | the private key retrieved. | |||
| o A long-term key retrieved from a device that has been sold or | o A long-term key retrieved from a device that has been sold or | |||
| otherwise decommissioned without prior wiping. | otherwise decommissioned without prior wiping. | |||
| o A long-term key used on a device as a default key [Heninger2012]. | o A long-term key used on a device as a default key [Heninger2012]. | |||
| o A key generated by a Trusted Third Party like a CA, and later | o A key generated by a Trusted Third Party like a CA, and later | |||
| retrieved from it either by extortion or compromise | retrieved from it either by extortion or compromise | |||
| [Soghoian2011]. | [Soghoian2011]. | |||
| o A cryptographic break-through, or the use of asymmetric keys with | o A cryptographic break-through, or the use of asymmetric keys with | |||
| insufficient length [Kleinjung2010]. | insufficient length [Kleinjung2010]. | |||
| PFS ensures in such cases that the session keys cannot be determined | PFS ensures in such cases that the session keys cannot be determined | |||
| even by an attacker who obtains the long-term keys some time after | even by an attacker who obtains the long-term keys some time after | |||
| the conversation. It also protects against an attacker who is in | the conversation. It also protects against an attacker who is in | |||
| possession of the long-term keys, but remains passive during the | possession of the long-term keys, but remains passive during the | |||
| conversation. | conversation. | |||
| PFS is generally achieved by using the Diffie-Hellman scheme to | PFS is generally achieved by using the Diffie-Hellman scheme to | |||
| derive session keys. The Diffie-Hellman scheme has both parties | derive session keys. The Diffie-Hellman scheme has both parties | |||
| maintain private secrets and send parameters over the network as | maintain private secrets and send parameters over the network as | |||
| modular powers over certain cyclic groups. The properties of the so- | modular powers over certain cyclic groups. The properties of the so- | |||
| called Discrete Logarithm Problem (DLP) allow to derive the session | called Discrete Logarithm Problem (DLP) allow to derive the session | |||
| keys without an eavesdropper being able to do so. There is currently | keys without an eavesdropper being able to do so. There is currently | |||
| no known attack against DLP if sufficiently large parameters are | no known attack against DLP if sufficiently large parameters are | |||
| chosen. | chosen. | |||
| Unfortunately, many TLS/DTLS cipher suites were defined that do not | Unfortunately, many TLS/DTLS cipher suites were defined that do not | |||
| enable PFS, e.g. TLS_RSA_WITH_AES_256_CBC_SHA256. We thus advocate | enable PFS, e.g. TLS_RSA_WITH_AES_256_CBC_SHA256. We thus advocate | |||
| strict use of PFS-only ciphers. These are listed in Section | strict use of PFS-only ciphers. | |||
| Section 4.1. | ||||
| 6.3. Session Resumption | ||||
| TBD, https://www.imperialviolet.org/2013/06/27/botchingpfs.html. | ||||
| 7. IANA Considerations | ||||
| [Note to RFC Editor: please remove this section before publication.] | ||||
| This document requires no IANA actions. | ||||
| 8. Acknowledgements | 7. Acknowledgements | |||
| We would like to thank Stephen Farrell, Simon Josefsson, Yoav Nir, | We would like to thank Stephen Farrell, Simon Josefsson, Yoav Nir, | |||
| Kenny Paterson, Patrick Pelletier, and Rich Salz for their review. | Kenny Paterson, Patrick Pelletier, and Rich Salz for their review. | |||
| Thanks to Brian Smith whose "browser cipher suites" page is a great | Thanks to Brian Smith whose "browser cipher suites" page is a great | |||
| resource. Finally, Thanks to all others who commented on the TLS and | resource. Finally, thanks to all others who commented on the TLS and | |||
| other lists and are not mentioned here by name. | other lists and are not mentioned here by name. | |||
| The document was prepared using the lyx2rfc tool, created by Nico | 8. References | |||
| Williams. | ||||
| 9. References | ||||
| 9.1. Normative References | 8.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC4492] Blake-Wilson, S., Bolyard, N., Gupta, V., Hawk, C., and B. | [RFC4492] Blake-Wilson, S., Bolyard, N., Gupta, V., Hawk, C., and B. | |||
| Moeller, "Elliptic Curve Cryptography (ECC) Cipher Suites | Moeller, "Elliptic Curve Cryptography (ECC) Cipher Suites | |||
| for Transport Layer Security (TLS)", RFC 4492, May 2006. | for Transport Layer Security (TLS)", RFC 4492, May 2006. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, August 2008. | (TLS) Protocol Version 1.2", RFC 5246, August 2008. | |||
| [RFC5288] Salowey, J., Choudhury, A., and D. McGrew, "AES Galois | [RFC5288] Salowey, J., Choudhury, A., and D. McGrew, "AES Galois | |||
| Counter Mode (GCM) Cipher Suites for TLS", RFC 5288, | Counter Mode (GCM) Cipher Suites for TLS", RFC 5288, | |||
| August 2008. | August 2008. | |||
| [RFC5829] Brown, A., Clemm, G., and J. Reschke, "Link Relation Types | [RFC5289] Rescorla, E., "TLS Elliptic Curve Cipher Suites with | |||
| for Simple Version Navigation between Web Resources", | SHA-256/384 and AES Galois Counter Mode (GCM)", RFC 5289, | |||
| RFC 5829, April 2010. | August 2008. | |||
| [I-D.merkle-tls-brainpool] | ||||
| Merkle, J. and M. Lochter, "ECC Brainpool Curves for | ||||
| Transport Layer Security (TLS)", | ||||
| draft-merkle-tls-brainpool-04 (work in progress), | ||||
| July 2013. | ||||
| 9.2. Informative References | ||||
| [I-D.popov-tls-prohibiting-rc4] | ||||
| Popov, A., "Prohibiting RC4 Cipher Suites", | ||||
| draft-popov-tls-prohibiting-rc4-00 (work in progress), | ||||
| August 2013. | ||||
| [RFC5116] McGrew, D., "An Interface and Algorithms for Authenticated | ||||
| Encryption", RFC 5116, January 2008. | ||||
| [RFC6460] Salter, M. and R. Housley, "Suite B Profile for Transport | ||||
| Layer Security (TLS)", RFC 6460, January 2012. | ||||
| [RFC6982] Sheffer, Y. and A. Farrel, "Improving Awareness of Running | ||||
| Code: The Implementation Status Section", RFC 6982, | ||||
| July 2013. | ||||
| [CBC-Attack] | ||||
| AlFardan, N. and K. Paterson, "Lucky Thirteen: Breaking | ||||
| the TLS and DTLS Record Protocols", IEEE Symposium on | ||||
| Security and Privacy , 2013. | ||||
| [BEAST] Rizzo, J. and T. Duong, "Browser Exploit Against SSL/TLS", | ||||
| 2011, <http://packetstormsecurity.com/files/105499/ | ||||
| Browser-Exploit-Against-SSL-TLS.html>. | ||||
| [CRIME] Rizzo, J. and T. Duong, "The CRIME Attack", EKOparty | ||||
| Security Conference 2012, 2012. | ||||
| [BREACH] Prado, A., Harris, N., and Y. Gluck, "The BREACH Attack", | ||||
| 2013, <http://breachattack.com/>. | ||||
| [RC4] Schneier, B., "Applied Cryptography: Protocols, | ||||
| Algorithms, and Source Code in C, 2nd Ed.", 1996. | ||||
| [RC4-Attack-FMS] | ||||
| Fluhrer, S., Mantin, I., and A. Shamir, "Weaknesses in the | ||||
| Key Scheduling Algorithm of RC4", Selected Areas in | ||||
| Cryptography , 2001. | ||||
| [RC4-Attack] | [RFC6176] Turner, S. and T. Polk, "Prohibiting Secure Sockets Layer | |||
| ISOBE, T., OHIGASHI, T., WATANABE, Y., and M. MORII, "Full | (SSL) Version 2.0", RFC 6176, March 2011. | |||
| Plaintext Recovery Attack on Broadcast RC4", International | ||||
| Workshop on Fast Software Encryption , 2013. | ||||
| [RC4-Attack-AlF] | [RFC7027] Merkle, J. and M. Lochter, "Elliptic Curve Cryptography | |||
| AlFardan, N., Bernstein, D., Paterson, K., Poettering, B., | (ECC) Brainpool Curves for Transport Layer Security | |||
| and J. Schuldt, "On the Security of RC4 in TLS", Usenix | (TLS)", RFC 7027, October 2013. | |||
| Security Symposium 2013, 2013, <https://www.usenix.org/ | ||||
| conference/usenixsecurity13/security-rc4-tls>. | ||||
| [Padding-Oracle] | 8.2. Informative References | |||
| Vaudenay, S., "Security Flaws Induced by CBC Padding | ||||
| Applications to SSL, IPSEC, WTLS...", EUROCRYPT 2002, | ||||
| 2002, <http://www.iacr.org/cryptodb/archive/2002/ | ||||
| EUROCRYPT/2850/2850.pdf>. | ||||
| [CAB-Baseline] | [CAB-Baseline] | |||
| "Baseline Requirements for the Issuance and Management of | "Baseline Requirements for the Issuance and Management of | |||
| Publicly-Trusted Certificates Version 1.1.6", 2013, | Publicly-Trusted Certificates Version 1.1.6", 2013, | |||
| <https://www.cabforum.org/documents.html>. | <https://www.cabforum.org/documents.html>. | |||
| [TLS-IANA] | ||||
| "Transport Layer Security (TLS) Parameters - TLS Cipher | ||||
| Suite Registry", <https://www.iana.org/assignments/ | ||||
| tls-parameters/tls-parameters.xhtml#tls-parameters-4>. | ||||
| [Heninger2012] | [Heninger2012] | |||
| Heninger, N., Durumeric, Z., Wustrow, E., and J. | Heninger, N., Durumeric, Z., Wustrow, E., and J. | |||
| Halderman, "Mining Your Ps and Qs: Detection of Widespread | Halderman, "Mining Your Ps and Qs: Detection of Widespread | |||
| Weak Keys in Network Devices", Usenix Security | Weak Keys in Network Devices", Usenix Security Symposium | |||
| Symposium 2012, 2012. | 2012, 2012. | |||
| [I-D.popov-tls-prohibiting-rc4] | ||||
| Popov, A., "Prohibiting RC4 Cipher Suites", draft-popov- | ||||
| tls-prohibiting-rc4-01 (work in progress), October 2013. | ||||
| [I-D.sheffer-uta-tls-attacks] | ||||
| Sheffer, Y., Holz, R., and P. Saint-Andre, "Summarizing | ||||
| Current Attacks on TLS and DTLS", draft-sheffer-uta-tls- | ||||
| attacks-00 (work in progress), February 2014. | ||||
| [Kleinjung2010] | [Kleinjung2010] | |||
| Kleinjung, T., "Factorization of a 768-Bit RSA Modulus", | Kleinjung, T., "Factorization of a 768-Bit RSA Modulus", | |||
| CRYPTO 10, 2010. | CRYPTO 10, 2010. | |||
| [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", | ||||
| RFC 2246, January 1999. | ||||
| [RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security | ||||
| (TLS) Protocol Version 1.1", RFC 4346, April 2006. | ||||
| [RFC5077] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig, | ||||
| "Transport Layer Security (TLS) Session Resumption without | ||||
| Server-Side State", RFC 5077, January 2008. | ||||
| [RFC5116] McGrew, D., "An Interface and Algorithms for Authenticated | ||||
| Encryption", RFC 5116, January 2008. | ||||
| [RFC6101] Freier, A., Karlton, P., and P. Kocher, "The Secure | ||||
| Sockets Layer (SSL) Protocol Version 3.0", RFC 6101, | ||||
| August 2011. | ||||
| [RFC6460] Salter, M. and R. Housley, "Suite B Profile for Transport | ||||
| Layer Security (TLS)", RFC 6460, January 2012. | ||||
| [Soghoian2011] | [Soghoian2011] | |||
| Soghoian, C. and S. Stamm, "Certified lies: Detecting and | Soghoian, C. and S. Stamm, "Certified lies: Detecting and | |||
| defeating government interception attacks against SSL.", | defeating government interception attacks against SSL.", | |||
| Proc. 15th Int. Conf. Financial Cryptography and Data | Proc. 15th Int. Conf. Financial Cryptography and Data | |||
| Security , 2011. | Security , 2011. | |||
| Appendix A. Appendix: Change Log | Appendix A. Appendix: Change Log | |||
| Note to RFC Editor: please remove this section before publication. | Note to RFC Editor: please remove this section before publication. | |||
| A.1. -01 | A.1. -02 | |||
| o Reorganized the content to focus on recommendations. | ||||
| o Moved description of attacks to a separate document (draft- | ||||
| sheffer-uta-tls-attacks). | ||||
| o Strengthened recommendations regarding session resumption. | ||||
| A.2. -01 | ||||
| o Clarified our motivation in the introduction. | o Clarified our motivation in the introduction. | |||
| o Added a section justifying the need for PFS. | o Added a section justifying the need for PFS. | |||
| o Added recommendations for RSA and DH parameter lengths. Moved | o Added recommendations for RSA and DH parameter lengths. Moved | |||
| from DHE to ECDHE, with a discussion on whether/when DHE is | from DHE to ECDHE, with a discussion on whether/when DHE is | |||
| appropriate. | appropriate. | |||
| o Recommendation to avoid fallback to SSLv3. | o Recommendation to avoid fallback to SSLv3. | |||
| o Initial information about browser support - more still needed! | o Initial information about browser support - more still needed! | |||
| o More clarity on compression. | o More clarity on compression. | |||
| o Client can offer stronger cipher suites. | o Client can offer stronger cipher suites. | |||
| o Discussion of the regular TLS mandatory cipher suite. | o Discussion of the regular TLS mandatory cipher suite. | |||
| A.2. -00 | A.3. -00 | |||
| o Initial version. | o Initial version. | |||
| Authors' Addresses | Authors' Addresses | |||
| Yaron Sheffer | Yaron Sheffer | |||
| Porticor | Porticor | |||
| 29 HaHarash St. | 29 HaHarash St. | |||
| Hod HaSharon 4501303 | Hod HaSharon 4501303 | |||
| Israel | Israel | |||
| Email: yaronf.ietf@gmail.com | Email: yaronf.ietf@gmail.com | |||
| Ralph Holz | Ralph Holz | |||
| Technische Universitaet Muenchen | Technische Universitaet Muenchen | |||
| Boltzmannstr. 3 | Boltzmannstr. 3 | |||
| Garching 85748 | Garching 85748 | |||
| Germany | Germany | |||
| Email: holz@net.in.tum.de | Email: holz@net.in.tum.de | |||
| Peter Saint-Andre | ||||
| &yet | ||||
| Email: ietf@stpeter.im | ||||
| End of changes. 80 change blocks. | ||||
| 299 lines changed or deleted | 298 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||