| < draft-sheffer-tls-bcp-00.txt | draft-sheffer-tls-bcp-01.txt > | |||
|---|---|---|---|---|
| Network Working Group Y. Sheffer | tls Y. Sheffer | |||
| Internet-Draft Porticor | Internet-Draft Porticor | |||
| Intended status: BCP September 8, 2013 | Intended status: BCP R. Holz | |||
| Expires: March 12, 2014 | Expires: March 24, 2014 TUM | |||
| September 20, 2013 | ||||
| Recommendations for Secure Use of TLS and DTLS | Recommendations for Secure Use of TLS and DTLS | |||
| draft-sheffer-tls-bcp-00 | draft-sheffer-tls-bcp-01 | |||
| Abstract | Abstract | |||
| Over the last few years there have been several serious attacks on | Over the last few years there have been several serious attacks on | |||
| TLS, including attacks on its most commonly used ciphers and modes of | TLS, including attacks on its most commonly used ciphers and modes of | |||
| operation. This document offers recommendations on securely using | operation. This document offers recommendations on securely using | |||
| the TLS and DTLS protocols, given existing standards and | the TLS and DTLS protocols, given existing standards and | |||
| implementations. | implementations. | |||
| Status of this Memo | Status of this Memo | |||
| skipping to change at page 1, line 34 ¶ | skipping to change at page 1, line 35 ¶ | |||
| 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 12, 2014. | This Internet-Draft will expire on March 24, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2013 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 . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Conventions used in this document . . . . . . . . . . . 3 | 1.1. Conventions used in this document . . . . . . . . . . 3 | |||
| 2. Attacks on TLS . . . . . . . . . . . . . . . . . . . . 3 | 2. Attacks on TLS . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. BEAST . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. BEAST . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Lucky Thirteen . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Lucky Thirteen . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.3. Attacks on RC4 . . . . . . . . . . . . . . . . . . . . 4 | 2.3. Attacks on RC4 . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.4. Compression Attacks: CRIME and BREACH . . . . . . . . . 4 | 2.4. Compression Attacks: CRIME and BREACH . . . . . . . . 4 | |||
| 3. Selection Criteria . . . . . . . . . . . . . . . . . . 4 | 3. Selection Criteria . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Recommendations . . . . . . . . . . . . . . . . . . . . 5 | 4. Recommendations . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.1. Details . . . . . . . . . . . . . . . . . . . . . . . . 5 | 4.1. Summary . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5. Implementation Status . . . . . . . . . . . . . . . . . 5 | 4.2. Cipher Suite Negotiation Details . . . . . . . . . . . 6 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . 6 | 4.3. Downgrade Attacks . . . . . . . . . . . . . . . . . . 6 | |||
| 6.1. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4.4. Alternatives . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 6.2. Downgrade Attacks . . . . . . . . . . . . . . . . . . . 6 | 5. Implementation Status . . . . . . . . . . . . . . . . 7 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . 6 | 6. Security Considerations . . . . . . . . . . . . . . . 8 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . 6 | 6.1. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . 6 | 6.2. Perfect Forward Secrecy (PFS) . . . . . . . . . . . . 8 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . 7 | 6.3. Session Resumption . . . . . . . . . . . . . . . . . . 9 | |||
| Appendix A. Appendix: Change Log . . . . . . . . . . . . . . . . . 8 | 7. IANA Considerations . . . . . . . . . . . . . . . . . 9 | |||
| A.1. -00 . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . 9 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . 8 | 9. References . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . 9 | ||||
| 9.2. Informative References . . . . . . . . . . . . . . . . 10 | ||||
| Appendix A. Appendix: Change Log . . . . . . . . . . . . . . . . . 12 | ||||
| A.1. -01 . . . . . . . . . . . . . . . . . . . . . . . . . 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 | Over the last few years there have been several major attacks on TLS | |||
| [RFC5246], including attacks on its most commonly used ciphers and | [RFC5246], including attacks on its most commonly used ciphers and | |||
| modes of operation. Details are given in Section 2, but suffice it | modes of operation. Details are given in Section 2, but suffice it | |||
| to say that both AES-CBC and RC4, which together make up for most | to say that both AES-CBC and RC4, which together make up for most | |||
| current usage, have been seriously attacked in the context of TLS. | current usage, have been seriously attacked in the context of TLS. | |||
| Given these issues, there is need for IETF guidance on how TLS can be | Given these issues, there is need for IETF guidance on how TLS can be | |||
| used securely. Unlike most IETF documents, this is guidance for | used securely. Unlike most IETF documents, this is guidance for | |||
| deployers rather than for implementers. In fact the recommendations | deployers, as well as for implementers. In fact the recommendations | |||
| below call for the use of widely implemented algorithms, which are | below call for the use of widely implemented algorithms, which are | |||
| not seeing widespread use today. | not seeing widespread use today. | |||
| Rather than standardizing new mechanisms in TLS, our goal is to | ||||
| recommend a few already-specified mechanisms and cipher suites, and | ||||
| to encourage the industry to use them in order to improve the overall | ||||
| security of TLS-protected network traffic. When picking these | ||||
| mechanisms, we consider their security, their technical maturity and | ||||
| interoperability, as well as their prevalence at the time of writing. | ||||
| This recommendation applies to both TLS and DTLS. TLS 1.3, when it | This recommendation applies to both TLS and DTLS. TLS 1.3, when it | |||
| is standardized and deployed in the field, should resolve the current | 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 | ||||
| attacks can change quickly, and experience shows that a crypto BCP is | ||||
| a point-in-time statement more than other BCPs. Readers are advised | ||||
| to seek out any errata or udpates that apply to this document. | ||||
| 1.1. Conventions used in this document | 1.1. Conventions used in this document | |||
| [[Are we normative? This section might go away.]] | [[Are we normative? Currently we're not and this section might go | |||
| 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 | 2. Attacks on TLS | |||
| This section lists the attacks that motivated the current | This section lists the attacks that motivated the current | |||
| recommendation. This is not intended to be an extensive survey of | recommendations. This is not intended to be an extensive survey of | |||
| TLS's security. | TLS's security. | |||
| While there are widely deployed mitigations for some of the attacks | While there are widely deployed mitigations for some of the attacks | |||
| listed below, we believe that their root causes necessitate a more | listed below, we believe that their root causes necessitate a more | |||
| systemic solution. | systemic solution. | |||
| 2.1. BEAST | 2.1. BEAST | |||
| The BEAST attack [BEAST] uses issues with the TLS 1.0 implementation | The BEAST attack [BEAST] uses issues with the TLS 1.0 implementation | |||
| of CBC (that is, predictable IV) to decrypt parts of a packet, and | 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 | specifically shows how this can be used to decrypt HTTP cookies when | |||
| run over TLS. | run over TLS. | |||
| 2.2. Lucky Thirteen | 2.2. Lucky Thirteen | |||
| A consequence of the MAC-then-encrypt design is the existence of | A consequence of the MAC-then-encrypt design in all current versions | |||
| padding oracle attacks [Padding-Oracle]. A recent incarnation of | of TLS is the existence of padding oracle attacks [Padding-Oracle]. | |||
| these attacks is the Lucky Thirteen attack [CBC-Attack], a timing | A recent incarnation of these attacks is the Lucky Thirteen attack | |||
| side-channel attack that allows the attacker to decrypt arbitrary | [CBC-Attack], a timing side-channel attack that allows the attacker | |||
| ciphertext. | to decrypt arbitrary ciphertext. | |||
| 2.3. Attacks on RC4 | 2.3. Attacks on RC4 | |||
| The RC4 algorithm [RC4] has been used with TLS (and previously, SSL) | The RC4 algorithm [RC4] has been used with TLS (and previously, SSL) | |||
| for many years. Attacks have also been known for a long time, e.g. | for many years. Attacks have also been known for a long time, e.g. | |||
| [RC4-Attack-FMS]. But recent attacks [RC4-Attack] have weakened this | [RC4-Attack-FMS]. But recent attacks ([RC4-Attack], | |||
| algorithm even more. See [I-D.popov-tls-prohibiting-rc4] for more | [RC4-Attack-AlF]) have weakened this algorithm even more. See | |||
| details. | [I-D.popov-tls-prohibiting-rc4] for more details. | |||
| 2.4. Compression Attacks: CRIME and BREACH | 2.4. Compression Attacks: CRIME and BREACH | |||
| The CRIME attack [CRIME] allows an active attacker to decrypt | The CRIME attack [CRIME] allows an active attacker to decrypt | |||
| cyphertext (specifically, cookies) when TLS is used with protocol- | cyphertext (specifically, cookies) when TLS is used with protocol- | |||
| level compression. The attack is a consequence of the TLS MAC-then- | level compression. | |||
| encrypt approach. | ||||
| The BREACH attack [BREACH] makes similar use of HTTP-level | The BREACH attack [BREACH] makes similar use of HAdded TTP-level | |||
| compression which is much more prevalent than compression at the TLS | compression, which is much more prevalent than compression at the TLS | |||
| level, to decrypt secret data passed in the HTTP response. | level, to decrypt secret data passed in the HTTP response. | |||
| While the former attack can be mitigated by disabling TLS | The former attack can be mitigated by disabling TLS compression, as | |||
| compression, we are not aware of mitigations at the protocol level to | recommended below. We are not aware of mitigations at the protocol | |||
| the latter attack, and so application-level mitigations are needed. | level to the latter attack, and so application-level mitigations are | |||
| For example, implementations of HTTP that use CSRF tokens will need | needed (see [BREACH]). For example, implementations of HTTP that use | |||
| to randomize them even when the recommendations of the current | CSRF tokens will need to randomize them even when the recommendations | |||
| document are adopted. | of the current document are adopted. | |||
| [[Is it possible to affect some length hiding using TLS 1.2 as | ||||
| specified today, i.e. without draft-pironti-tls-length-hiding-01, and | ||||
| using available APIs?]] | ||||
| 3. Selection Criteria | 3. Selection Criteria | |||
| Given the above attacks, we are proposing that deployers opt for a | Given the above attacks, we are proposing that deployers opt for a | |||
| specific ciphersuite when negotiating TLS. We have used the | specific cipher suite when negotiating TLS. We have used the | |||
| following criteria when framing our recommendations: | following criteria when framing our recommendations: | |||
| o The ciphersuite must be secure in default use, and should not | o The cipher suite must be secure in default use, and should not | |||
| require any additional security measures beyond those defined in | require any additional security measures beyond those defined in | |||
| the standard. | the standard. | |||
| o The cipher suite must be widely implemented, i.e. available in a | ||||
| o The ciphersuite must be widely implemented, i.e. available in a | ||||
| large percentage of popular cryptographic libraries. | large percentage of popular cryptographic libraries. | |||
| o The ciphersuite must have undergone a significant amount of | o The cipher suite must have undergone a significant amount of | |||
| analysis, and the algorithm and mode of operation must both be | analysis, and the algorithm and mode of operation must both be | |||
| standardized by relevant organizations. | standardized by relevant organizations. | |||
| o We prefer ciphersuites that provide client-side privacy and | o We prefer cipher suites that provide client-side privacy and | |||
| perfect forward secrecy, i.e. those that use ephemeral Diffie- | perfect forward secrecy, i.e. those that use ephemeral Diffie- | |||
| Hellman. | 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 | o When there are multiple key sizes available, we have chosen the | |||
| current industry standard, 128 bits of strength. Of course | current industry standard, 128 bits of strength. Of course | |||
| deployers are free to opt for a stronger ciphersuite. | deployers are free to opt for a stronger cipher suite. | |||
| 4. Recommendations | 4. Recommendations | |||
| Based on the criteria above, we recommend using as a preferred | Following are recommendations for people implementing and deploying | |||
| ciphersuite the following: | client and server-side TLS. | |||
| o TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 [RFC5288] | 4.1. Summary | |||
| It is noted that the above ciphersuite is an authenticated encryption | Based on the criteria above, we recommend using as a preferred cipher | |||
| (AEAD) algorithm [RFC5116], and therefore requires the use of TLS | suite the following: | |||
| 1.2. | ||||
| 4.1. Details | o TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 [RFC5829] | |||
| We recommend that clients include this cipher suite as the first | It is noted that the above cipher suite is an authenticated | |||
| encryption (AEAD) algorithm [RFC5116], and therefore requires the use | ||||
| of TLS 1.2. | ||||
| We recommend using 2048-bit server certificates, with a SHA-256 | ||||
| fingerprint. See [CAB-Baseline] for more details. | ||||
| [RFC4492] allows clients and servers to negotiate ECDH parameters | ||||
| (curves). We recommend that clients and servers prefer verifiably | ||||
| random curves (specifically Brainpool P-256, brainpoolp256r1 | ||||
| [I-D.merkle-tls-brainpool]), and fall back to the commonly used NIST | ||||
| P-256 (secp256r1) [RFC4492]. In addition, clients should send an | ||||
| ec_point_formats extension with a single element, "uncompressed". | ||||
| We recommend to always disable TLS-level compression ([RFC5246], Sec. | ||||
| 6.2.2). | ||||
| Finally, we recommend that clients disable fallback to SSLv3 (see | ||||
| Section 4.3). | ||||
| 4.2. Cipher Suite Negotiation Details | ||||
| We recommend that clients include the above cipher suite as the first | ||||
| proposal to any server, unless they have prior knowledge that the | proposal to any server, unless they have prior knowledge that the | |||
| server cannot respond to a TLS 1.2 client_hello message. | server cannot respond to a TLS 1.2 client_hello message. | |||
| We recommend that servers prefer this ciphersuite (or a similar but | We recommend that servers prefer this cipher suite (or a similar but | |||
| stronger one) whenever it is proposed, even if it is not the first | stronger one) whenever it is proposed, even if it is not the first | |||
| proposal. | proposal. | |||
| Note that other profiles of TLS 1.2 exist that use different | Both clients and servers should include the "Supported Elliptic | |||
| ciphersuites. For example, [RFC6460] defines a profile that uses the | Curves" extension [RFC4492]. | |||
| Clients are of course free to offer stronger cipher suites, e.g. | ||||
| using AES-256; when they do, the server should prefer the stronger | ||||
| cipher suite unless there are reasons (e.g. performance) to choose | ||||
| otherwise. | ||||
| Note that other profiles of TLS 1.2 exist that use different cipher | ||||
| 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 ciphersuites. | TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 cipher suites. | |||
| This document is not an application profile standard, in the sense of | ||||
| Sec. 9 of [RFC5246]. As a result, clients and servers are still | ||||
| required to support the TLS mandatory cipher suite, | ||||
| TLS_RSA_WITH_AES_128_CBC_SHA. | ||||
| 4.3. Downgrade Attacks | ||||
| 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 | ||||
| reasons, including its complexity compared to modular arithmetic and | ||||
| longstanding IPR concerns. On the other hand, there are two related | ||||
| issues hindering effective use of modular Diffie-Hellman cipher | ||||
| suites in TLS: | ||||
| o There are no protocol mechanisms to negotiate the DH groups or | ||||
| parameter lengths supported by client and server. | ||||
| o There are widely deployed client implementations that reject | ||||
| received DH parameters, if they are longer than 1024 bits. | ||||
| 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 | ||||
| the the RSA certificate; moreover, 1024 bits DH parameters are | ||||
| generally considered insufficient at this time. | ||||
| Because of the above, we recommend using (in priority order): | ||||
| 1. Elliptic Curve DHE with negotiated parameters, as described in | ||||
| Section 4.1. | ||||
| 2. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 [RFC5288], with 2048-bit | ||||
| Diffie-Hellman parameters. | ||||
| 3. The same cipher suite, with 1024-bit parameters. | ||||
| With modular ephemeral DH, deployers should carefully evaluate | ||||
| interoperability vs. security considerations when configuring their | ||||
| TLS endpoints. | ||||
| 5. Implementation Status | 5. Implementation Status | |||
| Since this document does not propose a new protocol or a new | Since this document does not propose a new protocol or a new cipher | |||
| ciphersuite, we do not provide a full implementation status, as per | suite, we do not provide a full implementation status, as per | |||
| [RFC6982]. However it is useful to list some known existing | [RFC6982]. However it is useful to list some known existing | |||
| implementations of the recommended ciphersuite(s). | implementations of the recommended cipher suite(s). | |||
| +----------+----------------+--------------+------------------------+ | +----------+--------------+---------------------+-------------------+ | |||
| | Category | Software | As Of | Comment | | | Category | Software | As Of Version | Comment | | |||
| | | | Version | | | +----------+--------------+---------------------+-------------------+ | |||
| +----------+----------------+--------------+------------------------+ | | Library | OpenSSL | 1.0.1 | | | |||
| | Library | OpenSSL | 1.0.1 | | | | | GnuTLS | | | | |||
| | | GnuTLS | | | | | | NSS | 3.11.1 | | | |||
| | | NSS | 3.11.1 | | | | Browser | Internet | IE8 on Windows 7 | | | |||
| | Browser | Internet | IE8 on | | | | | Explorer | | | | |||
| | | Explorer | Windows 7 | | | | | Firefox | TBD | | | |||
| | | Firefox | | TBD | | | | Chrome | TLS 1.2 and AES-GCM | | | |||
| | | Chrome | | TBD | | | | | expected in Chrome | | | |||
| | | Safari | | TBD | | | | | 30 | | | |||
| | Web | Apache | ?? | | | | | Safari | TBD | | | |||
| | server | (mod_gnutls) | | | | | Web | Apache | ?? | | | |||
| | | Apache | ?? | | | | server | (mod_gnutls) | | | | |||
| | | (mod_ssl) | | | | | | Apache | ?? | | | |||
| | | Nginx | 1.0.9, 1.1.6 | With a recent version | | | | (mod_ssl) | | | | |||
| | | | | of OpenSSL | | | | 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. Downgrade Attacks | 6.2. Perfect Forward Secrecy (PFS) | |||
| [[Do we need to disallow some protocol variants, e.g. SSL 3.0, so | PFS is a defense against an attacker who records encrypted | |||
| that there are no downgrade attacks possible?]] | conversations where the session keys are only encrypted with the | |||
| communicating parties' long-term keys. Should the attacker be able | ||||
| to obtain these long-term keys at some point later in the future, he | ||||
| will be able to decrypt the session keys and thus the entire | ||||
| conversation. In the context of TLS and DTLS, such compromise of | ||||
| long-term keys is not entirely implausible. It can happen, for | ||||
| example, due to: | ||||
| o A client or server being attacked by some other attack vector, and | ||||
| the private key retrieved. | ||||
| o A long-term key retrieved from a device that has been sold or | ||||
| otherwise decommissioned without prior wiping. | ||||
| 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 | ||||
| retrieved from it either by extortion or compromise | ||||
| [Soghoian2011]. | ||||
| o A cryptographic break-through, or the use of asymmetric keys with | ||||
| insufficient length [Kleinjung2010]. | ||||
| 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 | ||||
| the conversation. It also protects against an attacker who is in | ||||
| possession of the long-term keys, but remains passive during the | ||||
| conversation. | ||||
| PFS is generally achieved by using the Diffie-Hellman scheme to | ||||
| derive session keys. The Diffie-Hellman scheme has both parties | ||||
| maintain 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) allow to derive the session | ||||
| keys without an eavesdropper being able to do so. There is currently | ||||
| no known attack against DLP if sufficiently large parameters are | ||||
| chosen. | ||||
| 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 | ||||
| strict use of PFS-only ciphers. These are listed in Section | ||||
| Section 4.1. | ||||
| 6.3. Session Resumption | ||||
| TBD, https://www.imperialviolet.org/2013/06/27/botchingpfs.html. | ||||
| 7. IANA Considerations | 7. IANA Considerations | |||
| [Note to RFC Editor: please remove this section before publication.] | ||||
| This document requires no IANA actions. | This document requires no IANA actions. | |||
| 8. References | 8. Acknowledgements | |||
| 8.1. Normative References | We would like to thank Stephen Farrell, Simon Josefsson, Yoav Nir, | |||
| Kenny Paterson, Patrick Pelletier, and Rich Salz for their review. | ||||
| Thanks to Brian Smith whose "browser cipher suites" page is a great | ||||
| resource. Finally, Thanks to all others who commented on the TLS and | ||||
| other lists and are not mentioned here by name. | ||||
| The document was prepared using the lyx2rfc tool, created by Nico | ||||
| Williams. | ||||
| 9. References | ||||
| 9.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. | ||||
| Moeller, "Elliptic Curve Cryptography (ECC) Cipher Suites | ||||
| 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. | |||
| 8.2. Informative References | [RFC5829] Brown, A., Clemm, G., and J. Reschke, "Link Relation Types | |||
| for Simple Version Navigation between Web Resources", | ||||
| RFC 5829, April 2010. | ||||
| [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] | [I-D.popov-tls-prohibiting-rc4] | |||
| Popov, A., "Prohibiting RC4 Cipher Suites", | Popov, A., "Prohibiting RC4 Cipher Suites", | |||
| draft-popov-tls-prohibiting-rc4-00 (work in progress), | draft-popov-tls-prohibiting-rc4-00 (work in progress), | |||
| August 2013. | August 2013. | |||
| [RFC5116] McGrew, D., "An Interface and Algorithms for Authenticated | [RFC5116] McGrew, D., "An Interface and Algorithms for Authenticated | |||
| Encryption", RFC 5116, January 2008. | Encryption", RFC 5116, January 2008. | |||
| [RFC6460] Salter, M. and R. Housley, "Suite B Profile for Transport | [RFC6460] Salter, M. and R. Housley, "Suite B Profile for Transport | |||
| skipping to change at page 8, line 8 ¶ | skipping to change at page 11, line 15 ¶ | |||
| [RC4-Attack-FMS] | [RC4-Attack-FMS] | |||
| Fluhrer, S., Mantin, I., and A. Shamir, "Weaknesses in the | Fluhrer, S., Mantin, I., and A. Shamir, "Weaknesses in the | |||
| Key Scheduling Algorithm of RC4", Selected Areas in | Key Scheduling Algorithm of RC4", Selected Areas in | |||
| Cryptography , 2001. | Cryptography , 2001. | |||
| [RC4-Attack] | [RC4-Attack] | |||
| ISOBE, T., OHIGASHI, T., WATANABE, Y., and M. MORII, "Full | ISOBE, T., OHIGASHI, T., WATANABE, Y., and M. MORII, "Full | |||
| Plaintext Recovery Attack on Broadcast RC4", International | Plaintext Recovery Attack on Broadcast RC4", International | |||
| Workshop on Fast Software Encryption , 2013. | Workshop on Fast Software Encryption , 2013. | |||
| [RC4-Attack-AlF] | ||||
| AlFardan, N., Bernstein, D., Paterson, K., Poettering, B., | ||||
| and J. Schuldt, "On the Security of RC4 in TLS", Usenix | ||||
| Security Symposium 2013, 2013, <https://www.usenix.org/ | ||||
| conference/usenixsecurity13/security-rc4-tls>. | ||||
| [Padding-Oracle] | [Padding-Oracle] | |||
| Vaudenay, S., ""Security Flaws Induced by CBC Padding | Vaudenay, S., "Security Flaws Induced by CBC Padding | |||
| Applications to SSL, IPSEC, WTLS...", EUROCRYPT 2002, | Applications to SSL, IPSEC, WTLS...", EUROCRYPT 2002, | |||
| 2002, <http://www.iacr.org/cryptodb/archive/2002/ | 2002, <http://www.iacr.org/cryptodb/archive/2002/ | |||
| EUROCRYPT/2850/2850.pdf>. | EUROCRYPT/2850/2850.pdf>. | |||
| [CAB-Baseline] | ||||
| "Baseline Requirements for the Issuance and Management of | ||||
| Publicly-Trusted Certificates Version 1.1.6", 2013, | ||||
| <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] | ||||
| 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. | ||||
| [Kleinjung2010] | ||||
| Kleinjung, T., "Factorization of a 768-Bit RSA Modulus", | ||||
| CRYPTO 10, 2010. | ||||
| [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. | ||||
| 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. -00 | A.1. -01 | |||
| o Clarified our motivation in the introduction. | ||||
| o Added a section justifying the need for PFS. | ||||
| o Added recommendations for RSA and DH parameter lengths. Moved | ||||
| from DHE to ECDHE, with a discussion on whether/when DHE is | ||||
| appropriate. | ||||
| o Recommendation to avoid fallback to SSLv3. | ||||
| o Initial information about browser support - more still needed! | ||||
| o More clarity on compression. | ||||
| o Client can offer stronger cipher suites. | ||||
| o Discussion of the regular TLS mandatory cipher suite. | ||||
| A.2. -00 | ||||
| o Initial version. | o Initial version. | |||
| Author's Address | 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 | ||||
| Technische Universitaet Muenchen | ||||
| Boltzmannstr. 3 | ||||
| Garching 85748 | ||||
| Germany | ||||
| Email: holz@net.in.tum.de | ||||
| End of changes. 46 change blocks. | ||||
| 102 lines changed or deleted | 308 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/ | ||||