| < draft-ietf-uta-tls-bcp-02.txt | draft-ietf-uta-tls-bcp-03.txt > | |||
|---|---|---|---|---|
| UTA Y. Sheffer | UTA Y. Sheffer | |||
| Internet-Draft Porticor | Internet-Draft Porticor | |||
| Intended status: Best Current Practice R. Holz | Intended status: Best Current Practice R. Holz | |||
| Expires: February 25, 2015 TUM | Expires: March 25, 2015 TUM | |||
| P. Saint-Andre | P. Saint-Andre | |||
| &yet | &yet | |||
| August 24, 2014 | September 21, 2014 | |||
| Recommendations for Secure Use of TLS and DTLS | Recommendations for Secure Use of TLS and DTLS | |||
| draft-ietf-uta-tls-bcp-02 | draft-ietf-uta-tls-bcp-03 | |||
| Abstract | Abstract | |||
| Transport Layer Security (TLS) and Datagram Transport Security Layer | Transport Layer Security (TLS) and Datagram Transport Security Layer | |||
| (DTLS) are widely used to protect data exchanged over application | (DTLS) are widely used to protect data exchanged over application | |||
| protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the | protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the | |||
| last few years, several serious attacks on TLS have emerged, | last few years, several serious attacks on TLS have emerged, | |||
| including attacks on its most commonly used cipher suites and modes | including attacks on its most commonly used cipher suites and modes | |||
| of operation. This document provides recommendations for improving | of operation. This document provides recommendations for improving | |||
| the security of both software implementations and deployed services | the security of both software implementations and deployed services | |||
| skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
| 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 February 25, 2015. | This Internet-Draft will expire on March 25, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Conventions used in this document . . . . . . . . . . . . . . 3 | 2. Intended Audience . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. General Recommendations . . . . . . . . . . . . . . . . . . . 4 | 2.1. Security Services . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.1. Protocol Versions . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.2. Fallback to SSL . . . . . . . . . . . . . . . . . . . . . 4 | 3. Conventions used in this document . . . . . . . . . . . . . . 4 | |||
| 3.3. Always Use TLS . . . . . . . . . . . . . . . . . . . . . 5 | 4. General Recommendations . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.4. Compression . . . . . . . . . . . . . . . . . . . . . . . 5 | 4.1. Protocol Versions . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.5. Session Resumption . . . . . . . . . . . . . . . . . . . 5 | 4.2. Applicability to DTLS . . . . . . . . . . . . . . . . . . 5 | |||
| 3.6. Renegotiation . . . . . . . . . . . . . . . . . . . . . . 6 | 4.3. Fallback to SSL . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.7. Server Name Indication . . . . . . . . . . . . . . . . . 6 | 4.4. Strict TLS . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. Recommendations: Cipher Suites . . . . . . . . . . . . . . . 6 | 4.5. Compression . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.1. Cipher Suite Selection . . . . . . . . . . . . . . . . . 6 | 4.6. TLS Session Resumption . . . . . . . . . . . . . . . . . 7 | |||
| 4.2. Public Key Length . . . . . . . . . . . . . . . . . . . . 8 | 4.7. TLS Renegotiation . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.3. Cipher Suite Negotiation Details . . . . . . . . . . . . 8 | 4.8. Server Name Indication . . . . . . . . . . . . . . . . . 7 | |||
| 4.4. Modular vs. Elliptic Curve DH Cipher Suites . . . . . . . 9 | 5. Recommendations: Cipher Suites . . . . . . . . . . . . . . . 7 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 5.1. General Guidelines . . . . . . . . . . . . . . . . . . . 8 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | 5.2. Recommended Cipher Suites . . . . . . . . . . . . . . . . 9 | |||
| 6.1. Host Name Validation . . . . . . . . . . . . . . . . . . 10 | 5.3. Cipher Suite Negotiation Details . . . . . . . . . . . . 9 | |||
| 6.2. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 5.4. Public Key Length . . . . . . . . . . . . . . . . . . . . 10 | |||
| 6.3. Forward Secrecy . . . . . . . . . . . . . . . . . . . . . 10 | 5.5. Modular vs. Elliptic Curve DH Cipher Suites . . . . . . . 10 | |||
| 6.4. Diffie Hellman Exponent Reuse . . . . . . . . . . . . . . 11 | 5.6. Truncated HMAC . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 6.5. Certificate Revocation . . . . . . . . . . . . . . . . . 12 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 12 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 7.1. Host Name Validation . . . . . . . . . . . . . . . . . . 11 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 13 | 7.2. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 13 | 7.3. Forward Secrecy . . . . . . . . . . . . . . . . . . . . . 12 | |||
| Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 15 | 7.4. Diffie Hellman Exponent Reuse . . . . . . . . . . . . . . 13 | |||
| A.1. draft-ietf-tls-bcp-02 . . . . . . . . . . . . . . . . . . 15 | 7.5. Certificate Revocation . . . . . . . . . . . . . . . . . 13 | |||
| A.2. draft-ietf-tls-bcp-01 . . . . . . . . . . . . . . . . . . 15 | 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| A.3. draft-ietf-tls-bcp-00 . . . . . . . . . . . . . . . . . . 16 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| A.4. draft-sheffer-tls-bcp-02 . . . . . . . . . . . . . . . . 16 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 14 | |||
| A.5. draft-sheffer-tls-bcp-01 . . . . . . . . . . . . . . . . 16 | 9.2. Informative References . . . . . . . . . . . . . . . . . 15 | |||
| A.6. draft-sheffer-tls-bcp-00 . . . . . . . . . . . . . . . . 16 | Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 17 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | A.1. draft-ietf-uta-tls-bcp-03 . . . . . . . . . . . . . . . . 17 | |||
| A.2. draft-ietf-uta-tls-bcp-02 . . . . . . . . . . . . . . . . 17 | ||||
| A.3. draft-ietf-tls-bcp-01 . . . . . . . . . . . . . . . . . . 18 | ||||
| A.4. draft-ietf-tls-bcp-00 . . . . . . . . . . . . . . . . . . 18 | ||||
| A.5. draft-sheffer-tls-bcp-02 . . . . . . . . . . . . . . . . 18 | ||||
| A.6. draft-sheffer-tls-bcp-01 . . . . . . . . . . . . . . . . 18 | ||||
| A.7. draft-sheffer-tls-bcp-00 . . . . . . . . . . . . . . . . 19 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | ||||
| 1. Introduction | 1. Introduction | |||
| Transport Layer Security (TLS) and Datagram Transport Security Layer | Transport Layer Security (TLS) and Datagram Transport Security Layer | |||
| (DTLS) are widely used to protect data exchanged over application | (DTLS) are widely used to protect data exchanged over application | |||
| protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the | protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the | |||
| last few years, several serious attacks on TLS have emerged, | last few years, several serious attacks on TLS have emerged, | |||
| including attacks on its most commonly used cipher suites and modes | including attacks on its most commonly used cipher suites and modes | |||
| of operation. For instance, both AES-CBC and RC4, which together | of operation. For instance, both AES-CBC and RC4, which together | |||
| comprise most current usage, have been attacked in the context of | comprise most current usage, have been attacked in the context of | |||
| TLS. A companion document [I-D.ietf-uta-tls-attacks] provides | TLS. A companion document [I-D.ietf-uta-tls-attacks] provides | |||
| detailed information about these attacks. | detailed information about these attacks. | |||
| Because of these attacks, those who implement and deploy TLS and DTLS | Because of these attacks, those who implement and deploy TLS and DTLS | |||
| need updated guidance on how TLS can be used securely. Note that | need updated guidance on how TLS can be used securely. Note that | |||
| this document provides guidance for deployed services, as well as | this document provides guidance for deployed services, as well as | |||
| software implementations. In fact, this document calls for the | software implementations. In fact, this document calls for the | |||
| deployment of algorithms that are widely implemented but not yet | deployment of algorithms that are widely implemented but not yet | |||
| widely deployed. | widely deployed. Concerning deployment, this document targets a wide | |||
| audience, namely all deployers who wish to add authentication, | ||||
| confidentiality and data integrity to their communications. This | ||||
| document does not address the rare deployment scenarios where one of | ||||
| these three properties is not desired. | ||||
| The recommendations herein take into consideration the security of | The recommendations herein take into consideration the security of | |||
| various mechanisms, their technical maturity and interoperability, | various mechanisms, their technical maturity and interoperability, | |||
| and their prevalence in implementations at the time of writing. | and their prevalence in implementations at the time of writing. | |||
| These recommendations apply to both TLS and DTLS. TLS 1.3, when it | Unless noted otherwise, these recommendations apply to both TLS and | |||
| is standardized and deployed in the field, should resolve the current | DTLS. TLS 1.3, when it is standardized and deployed in the field, | |||
| vulnerabilities while providing significantly better functionality, | should resolve the current vulnerabilities while providing | |||
| and will very likely obsolete this document. | significantly better functionality, and will very likely obsolete | |||
| this document. | ||||
| These are minimum recommendations for the general use of TLS. | These are minimum recommendations for the use of TLS for the | |||
| Individual specifications may have stricter requirements related to | specified audience. Individual specifications may have stricter | |||
| one or more aspects of the protocol, based on their particular | requirements related to one or more aspects of the protocol, based on | |||
| circumstances. When that is the case, implementers MUST adhere to | their particular circumstances. When that is the case, implementers | |||
| those stricter requirements. | MUST adhere to those stricter requirements. | |||
| Community knowledge about the strength of various algorithms and | Community knowledge about the strength of various algorithms and | |||
| feasible attacks can change quickly, and experience shows that a | feasible attacks can change quickly, and experience shows that a | |||
| security BCP is a point-in-time statement. Readers are advised to | security BCP is a point-in-time statement. Readers are advised to | |||
| seek out any errata or updates that apply to this document. | seek out any errata or updates that apply to this document. | |||
| 2. Conventions used in this document | 2. Intended Audience | |||
| In the following, we specify which audience this document addresses | ||||
| concerning deployment. Most deployers are very likely part of this | ||||
| audience, but very specialized use cases of TLS that are outside of | ||||
| the intended audience can exist. | ||||
| 2.1. Security Services | ||||
| This document provides recommendations for an audience that wishes to | ||||
| secure their communication with TLS to achieve the following: | ||||
| o Authentication: this means that an end-point of the TLS | ||||
| communication is authenticated as the intended entity to | ||||
| communicate with. TLS allows to authenticate one or both end- | ||||
| points in the communication. | ||||
| o Confidentiality: all (payload) communication is encrypted with the | ||||
| goal that no party should be able to decrypt it except the | ||||
| intended receiver. | ||||
| o Data integrity: any changes made to the communication are | ||||
| detectable by the receiver. | ||||
| Deployers MUST verify that they do not need one of these three | ||||
| properties if they deviate from the recommendations given in this | ||||
| document. | ||||
| 2.2. Examples | ||||
| The intended audience covers those services that are most commonly | ||||
| used on the Internet, among many others: | ||||
| o Operators of WWW servers (HTTPS). | ||||
| o Operators of email servers (SMTPS, IMAPS, POPS). | ||||
| o Operators of instant-messaging services (XMPPS, IRCS). | ||||
| 3. Conventions used in this document | ||||
| 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]. | |||
| 3. General Recommendations | 4. General Recommendations | |||
| This section provides general recommendations on the secure use of | This section provides general recommendations on the secure use of | |||
| TLS. Recommendations related to cipher suites are discussed in the | TLS. Recommendations related to cipher suites are discussed in the | |||
| following section. | following section. | |||
| 3.1. Protocol Versions | 4.1. Protocol Versions | |||
| It is important both to stop using old, less secure versions of SSL/ | It is important both to stop using old, less secure versions of SSL/ | |||
| TLS and to start using modern, more secure versions. Therefore: | TLS and to start using modern, more secure versions. Therefore: | |||
| o Implementations MUST NOT negotiate SSL version 2. | o Implementations MUST NOT negotiate SSL version 2. | |||
| Rationale: SSLv2 is considered today as insecure [RFC6176]. | Rationale: SSLv2 is considered today as insecure [RFC6176]. | |||
| o Implementations MUST NOT negotiate SSL version 3. | o Implementations MUST NOT negotiate SSL version 3. | |||
| skipping to change at page 4, line 48 ¶ | skipping to change at page 5, line 48 ¶ | |||
| o Implementations MUST support, and prefer to negotiate, TLS version | o Implementations MUST support, and prefer to negotiate, TLS version | |||
| 1.2 [RFC5246]. | 1.2 [RFC5246]. | |||
| Rationale: Several stronger cipher suites are available only with | Rationale: Several stronger cipher suites are available only with | |||
| TLS 1.2 (published in 2008). | TLS 1.2 (published in 2008). | |||
| This BCP applies to TLS 1.2. It is not safe for readers to assume | This BCP applies to TLS 1.2. It is not safe for readers to assume | |||
| that the recommendations in this BCP apply to any future version of | that the recommendations in this BCP apply to any future version of | |||
| TLS. | TLS. | |||
| 3.2. Fallback to SSL | 4.2. Applicability to DTLS | |||
| DTLS [RFC4347] [RFC6347] is an adaptation of TLS for UDP datagrams. | ||||
| With respect to the recommendations in the current document, DTLS 1.0 | ||||
| is equivalent to TLS 1.1. The only exception is RC4 which is | ||||
| disallowed in DTLS. DTLS 1.2 is equivalent to TLS 1.2. | ||||
| 4.3. Fallback to SSL | ||||
| Some client implementations revert to lower versions of TLS or even | Some client implementations revert to lower versions of TLS or even | |||
| to SSLv3 if the server rejected higher versions of the protocol. | to SSLv3 if the server rejected higher versions of the protocol. | |||
| This fall back can be forced by a man in the middle (MITM) attacker. | This fall back can be forced by a man in the middle (MITM) attacker. | |||
| By default, such clients MUST NOT fall back to SSLv3. | By default, such clients MUST NOT fall back to SSLv3. | |||
| Rationale: TLS 1.0 and SSLv3 are significantly less secure than TLS | Rationale: TLS 1.0 and SSLv3 are significantly less secure than TLS | |||
| 1.2, the version recommended by this document. While TLS 1.0-only | 1.2, the version recommended by this document. While TLS 1.0-only | |||
| servers are still quite common, IP scans show that SSLv3-only servers | servers are still quite common, IP scans show that SSLv3-only servers | |||
| amount to only about 3% of the current Web server population. | amount to only about 3% of the current Web server population. | |||
| 3.3. Always Use TLS | 4.4. Strict TLS | |||
| Combining unprotected and TLS-protected communication opens the way | Combining unprotected and TLS-protected communication opens the way | |||
| to SSL Stripping and similar attacks. Therefore: | to SSL Stripping and similar attacks. Therefore: | |||
| o In cases where an application protocol allows implementations or | o In cases where an application protocol allows implementations or | |||
| deployments a choice between strict TLS configuration and dynamic | deployments a choice between strict TLS configuration and dynamic | |||
| upgrade from unencrypted to TLS-protected traffic (such as | upgrade from unencrypted to TLS-protected traffic (such as | |||
| STARTTLS), clients and servers SHOULD prefer strict TLS | STARTTLS), clients and servers SHOULD prefer strict TLS | |||
| configuration. | configuration. | |||
| o When applicable, Web servers SHOULD advertise that they are | o Client and server implementations MUST support the HTTP Strict | |||
| willing to accept TLS-only clients, using the HTTP Strict | Transport Security (HSTS) header [RFC6797], in order to allow Web | |||
| Transport Security (HSTS) header [RFC6797]. | servers to advertise that they are willing to accept TLS-only | |||
| clients. | ||||
| 3.4. Compression | o When applicable, Web servers SHOULD use HSTS to indicate that they | |||
| are willing to accept TLS-only clients. | ||||
| 4.5. Compression | ||||
| Implementations and deployments SHOULD disable TLS-level compression | Implementations and deployments SHOULD disable TLS-level compression | |||
| ([RFC5246], Sec. 6.2.2), because it has been subject to security | ([RFC5246], Sec. 6.2.2), because it has been subject to security | |||
| attacks. | attacks. | |||
| Implementers should note that compression at higher protocol levels | Implementers should note that compression at higher protocol levels | |||
| can allow an active attacker to extract cleartext information from | can allow an active attacker to extract cleartext information from | |||
| the connection. The BREACH attack is one such case. These issues | the connection. The BREACH attack is one such case. These issues | |||
| can only be mitigated outside of TLS and are thus out of scope of the | can only be mitigated outside of TLS and are thus out of scope of the | |||
| current document. See Sec. 2.5 of [I-D.ietf-uta-tls-attacks] for | current document. See Sec. 2.5 of [I-D.ietf-uta-tls-attacks] for | |||
| further details. | further details. | |||
| 3.5. Session Resumption | 4.6. TLS Session Resumption | |||
| If TLS session resumption is used, care ought to be taken to do so | If TLS session resumption is used, care ought to be taken to do so | |||
| safely. In particular, the resumption information (either session | safely. In particular, when using session tickets [RFC5077], the | |||
| IDs [RFC5246] or session tickets [RFC5077]) MUST be authenticated and | resumption information MUST be authenticated and encrypted to prevent | |||
| encrypted to prevent modification or eavesdropping by an attacker. | modification or eavesdropping by an attacker. Further | |||
| Further recommendations apply to session tickets: | recommendations apply to session tickets: | |||
| o A strong cipher suite MUST be used when encrypting the ticket (as | o A strong cipher suite MUST be used when encrypting the ticket (as | |||
| least as strong as the main TLS cipher suite). | least as strong as the main TLS cipher suite). | |||
| o Ticket keys MUST be changed regularly, e.g. once every week, so as | o 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 | not to negate the benefits of forward secrecy (see Section 7.3 for | |||
| details on forward secrecy). | details on forward secrecy). | |||
| o Session ticket validity SHOULD be limited to a reasonable duration | o Session ticket validity SHOULD be limited to a reasonable duration | |||
| (e.g. 1 day), for similar reasons. | (e.g. 1 day), for similar reasons. | |||
| 3.6. Renegotiation | 4.7. TLS Renegotiation | |||
| Where handshake renegotiation is implemented, both clients and | Where handshake renegotiation is implemented, both clients and | |||
| servers MUST implement the renegotiation_info extension, as defined | servers MUST implement the renegotiation_info extension, as defined | |||
| in [RFC5746]. | in [RFC5746]. | |||
| To counter the Triple Handshake attack, we adopt the recommendation | To counter the Triple Handshake attack, we adopt the recommendation | |||
| from [triple-handshake]: TLS clients SHOULD ensure that all | from [triple-handshake]: TLS clients SHOULD ensure that all | |||
| certificates received over a connection are valid for the current | certificates received over a connection are valid for the current | |||
| server endpoint, and abort the handshake if they are not. In some | server endpoint, and abort the handshake if they are not. In some | |||
| usages, it may be simplest to refuse any change of certificates | usages, it may be simplest to refuse any change of certificates | |||
| during renegotiation. | during renegotiation. | |||
| 3.7. Server Name Indication | 4.8. Server Name Indication | |||
| TLS implementations MUST support the Server Name Indication (SNI) | TLS implementations MUST support the Server Name Indication (SNI) | |||
| extension for those higher level protocols which would benefit from | extension for those higher level protocols which would benefit from | |||
| it, including HTTPS. However, unlike implementation, the use of SNI | it, including HTTPS. However, unlike implementation, the use of SNI | |||
| in particular circumstances is a matter of local policy. | in particular circumstances is a matter of local policy. | |||
| 4. Recommendations: Cipher Suites | 5. Recommendations: Cipher Suites | |||
| TLS and its implementations provide considerable flexibility in the | TLS and its implementations provide considerable flexibility in the | |||
| selection of cipher suites. Unfortunately many available cipher | selection of cipher suites. Unfortunately many available cipher | |||
| suites are insecure, and so misconfiguration can easily result in | suites are insecure, and so misconfiguration can easily result in | |||
| reduced security. This section includes recommendations on the | reduced security. This section includes recommendations on the | |||
| selection and negotiation of cipher suites. | selection and negotiation of cipher suites. | |||
| 4.1. Cipher Suite Selection | 5.1. General Guidelines | |||
| It is important both to stop using old, insecure cipher suites and to | It is important both to stop using old, insecure cipher suites and to | |||
| start using modern, more secure cipher suites. Therefore: | start using modern, more secure cipher suites. Therefore: | |||
| o Implementations MUST NOT negotiate the NULL cipher suites. | o Implementations MUST NOT negotiate the NULL cipher suites. | |||
| Rationale: The NULL cipher suites offer no encryption whatsoever | Rationale: The NULL cipher suites offer no encryption whatsoever | |||
| and thus are completely insecure. | and thus are completely insecure. | |||
| o Implementations MUST NOT negotiate RC4 cipher suites | o Implementations MUST NOT negotiate RC4 cipher suites | |||
| skipping to change at page 7, line 40 ¶ | skipping to change at page 9, line 5 ¶ | |||
| o Implementations MUST support, and SHOULD prefer to negotiate, | o Implementations MUST support, and SHOULD prefer to negotiate, | |||
| cipher suites offering forward secrecy, such as those in the | cipher suites offering forward secrecy, such as those in the | |||
| Ephemeral Diffie-Hellman and Elliptic Curve Ephemeral Diffie | Ephemeral Diffie-Hellman and Elliptic Curve Ephemeral Diffie | |||
| Hellman ("DHE" and "ECDHE") families. | Hellman ("DHE" and "ECDHE") families. | |||
| Rationale: Forward secrecy (sometimes called "perfect forward | Rationale: Forward secrecy (sometimes called "perfect forward | |||
| secrecy") prevents the recovery of information that was encrypted | secrecy") prevents the recovery of information that was encrypted | |||
| with older session keys, thus limiting the amount of time during | with older session keys, thus limiting the amount of time during | |||
| which attacks can be successful. | which attacks can be successful. | |||
| 5.2. Recommended Cipher Suites | ||||
| Given the foregoing considerations, implementation of the following | Given the foregoing considerations, implementation of the following | |||
| cipher suites is RECOMMENDED (see [RFC5289] for details): | cipher suites is RECOMMENDED: | |||
| o TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | o TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | |||
| o TLS_ECDHE_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_DHE_RSA_WITH_AES_256_GCM_SHA384 | |||
| o TLS_ECDHE_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 | We suggest that TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 be preferred in | |||
| general. | general. See [RFC5289] for additional implementation details. | |||
| It is noted that those cipher suites are supported only in TLS 1.2 | It is noted that those cipher suites are supported only in TLS 1.2 | |||
| since they are authenticated encryption (AEAD) algorithms [RFC5116]. | since they are authenticated encryption (AEAD) algorithms [RFC5116]. | |||
| [RFC4492] allows clients and servers to negotiate ECDH parameters | [RFC4492] allows clients and servers to negotiate ECDH parameters | |||
| (curves). For interoperability, clients and servers SHOULD support | (curves). Both clients and servers SHOULD include the "Supported | |||
| the NIST P-256 (secp256r1) curve [RFC4492]. In addition, clients | Elliptic Curves" extension [RFC4492]. For interoperability, clients | |||
| SHOULD send an ec_point_formats extension with a single element, | and servers SHOULD support the NIST P-256 (secp256r1) curve | |||
| "uncompressed". | [RFC4492]. In addition, clients SHOULD send an ec_point_formats | |||
| extension with a single element, "uncompressed". | ||||
| 4.2. Public Key Length | ||||
| With a key exchange based on modular Diffie-Hellman ("DHE" cipher | ||||
| suites), key lengths of at least 2048 bits are RECOMMENDED. | ||||
| Rationale: 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 "DHE" 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 "DHE" family. For modular groups, key lengths of at least 2048 | ||||
| bits are estimated to be roughly equivalent to 112-bit symmetric keys | ||||
| and might be sufficient for at least the next 10 years. | ||||
| Servers SHOULD authenticate using 2048-bit certificates. In | ||||
| addition, the use of SHA-256 fingerprints is RECOMMENDED (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.3. Cipher Suite Negotiation Details | 5.3. Cipher Suite Negotiation Details | |||
| Clients SHOULD include TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 as the | Clients SHOULD include TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 as the | |||
| first proposal to any server, unless they have prior knowledge that | first proposal to any server, unless they have prior knowledge that | |||
| the server cannot respond to a TLS 1.2 client_hello message. | the server cannot respond to a TLS 1.2 client_hello message. | |||
| Servers SHOULD prefer this cipher suite whenever it is proposed, even | Servers SHOULD prefer this cipher suite whenever it is proposed, even | |||
| if it is not the first proposal. | if it is not the first proposal. | |||
| Both clients and servers SHOULD include the "Supported Elliptic | ||||
| 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 compelling reasons (e.g., seriously | cipher suite unless there are compelling reasons (e.g., seriously | |||
| degraded performance) to choose 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 mandatory TLS cipher suite, | REQUIRED to support the mandatory TLS cipher suite, | |||
| TLS_RSA_WITH_AES_128_CBC_SHA. | TLS_RSA_WITH_AES_128_CBC_SHA. | |||
| 4.4. Modular vs. Elliptic Curve DH Cipher Suites | 5.4. Public Key Length | |||
| With a key exchange based on modular Diffie-Hellman ("DHE" cipher | ||||
| suites), key lengths of at least 2048 bits are RECOMMENDED. | ||||
| Rationale: 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 "DHE" 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 "DHE" family. For modular groups, key lengths of at least 2048 | ||||
| bits are estimated to be roughly equivalent to 112-bit symmetric keys | ||||
| and might be sufficient for at least the next 10 years. | ||||
| Servers SHOULD authenticate using 2048-bit certificates. In | ||||
| addition, the use of SHA-256 fingerprints is RECOMMENDED (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. | ||||
| 5.5. Modular vs. Elliptic Curve DH Cipher Suites | ||||
| Not all TLS implementations support both modular and EC Diffie- | Not all TLS implementations support both modular and EC Diffie- | |||
| Hellman groups, as required by Section 4.1. Some implementations are | Hellman groups, as required by Section 5.2. Some implementations are | |||
| severely limited in the length of DH values. When such | severely limited in the length of DH values. When such | |||
| implementations need to be accommodated, we recommend using (in | implementations need to be accommodated, we recommend using (in | |||
| priority order): | priority order): | |||
| 1. Elliptic Curve DHE with negotiated parameters [RFC5289] | 1. Elliptic Curve DHE with negotiated parameters [RFC5289] | |||
| 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. | |||
| skipping to change at page 10, line 5 ¶ | skipping to change at page 11, line 17 ¶ | |||
| 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 | |||
| of the RSA certificate; moreover, 1024 bit modular DH parameters are | of the RSA certificate; moreover, 1024 bit modular DH parameters are | |||
| generally considered insufficient at this time. | generally considered insufficient at this time. | |||
| 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. IANA Considerations | 5.6. Truncated HMAC | |||
| The truncated HMAC extension, defined in Sec. 7 of [RFC6066] does not | ||||
| 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], and implementations MUST NOT use it. | ||||
| 6. IANA Considerations | ||||
| This document requests no actions of IANA. [Note to RFC Editor: | This document requests no actions of IANA. [Note to RFC Editor: | |||
| please remove this whole section before publication.] | please remove this whole section before publication.] | |||
| 6. Security Considerations | 7. Security Considerations | |||
| This entire document discusses security practices, and this section | This entire document discusses the security practices directly | |||
| adds a few security considerations and includes further discussion of | affecting applications using the TLS protocol. This section contains | |||
| particular recommendations. | broader security considerations related to technologies used in | |||
| conjunction with or by TLS. | ||||
| 6.1. Host Name Validation | 7.1. Host Name Validation | |||
| Application authors should take note that TLS implementations | Application authors should take note that TLS implementations | |||
| frequently do not validate host names, and must therefore determine | frequently do not validate host names, and must therefore determine | |||
| if the TLS implementation they are using does, and if not write their | if the TLS implementation they are using does, and if not write their | |||
| own validation code or consider changing the TLS implementation. | own validation code or consider changing the TLS implementation. | |||
| It is noted that the requirements regarding host name validation (and | It is noted that the requirements regarding host name validation (and | |||
| in general, binding between the TLS layer and the protocol that runs | in general, binding between the TLS layer and the protocol that runs | |||
| above it) vary between different protocols. For HTTPS, these | above it) vary between different protocols. For HTTPS, these | |||
| requirements are defined by Sec. 3 of [RFC2818]. | requirements are defined by Sec. 3 of [RFC2818]. | |||
| Readers are referred to [RFC6125] for further details regarding | Readers are referred to [RFC6125] for further details regarding | |||
| generic host name validation in the TLS context. In addition, the | generic host name validation in the TLS context. In addition, the | |||
| RFC contains a long list of example protocols, some of which | RFC contains a long list of example protocols, some of which | |||
| implement a policy very different from HTTPS. | implement a policy very different from HTTPS. | |||
| 6.2. AES-GCM | With some protocols, the host name is obtained indirectly and in an | |||
| insecure manner, e.g. by an insecure DNS query for an MX record. In | ||||
| these cases, the host name SHOULD NOT be used as a trusted identity | ||||
| even when it matches the presented certificate. | ||||
| Please refer to [RFC5246], Sec. 11 for general security | 7.2. AES-GCM | |||
| considerations when using TLS 1.2, and to [RFC5288], Sec. 6 for | ||||
| security considerations that apply specifically to AES-GCM when used | ||||
| with TLS. | ||||
| 6.3. Forward Secrecy | Sec. Section 5.2 above recommends the use of the AES-GCM | |||
| authenticated encryption algorithm. Please refer to [RFC5246], Sec. | ||||
| 11 for general security considerations when using TLS 1.2, and to | ||||
| [RFC5288], Sec. 6 for security considerations that apply specifically | ||||
| to AES-GCM when used with TLS. | ||||
| Forward secrecy (also often called Perfect Forward Secrecy or "PFS") | 7.3. Forward Secrecy | |||
| is a defense against an attacker who records encrypted conversations | ||||
| where the session keys are only encrypted with the communicating | Forward secrecy (also often called Perfect Forward Secrecy or "PFS", | |||
| parties' long-term keys. Should the attacker be able to obtain these | and defined in [RFC4949]) is a defense against an attacker who | |||
| long-term keys at some point later in time, he will be able to | records encrypted conversations where the session keys are only | |||
| decrypt the session keys and thus the entire conversation. In the | encrypted with the communicating parties' long-term keys. Should the | |||
| context of TLS and DTLS, such compromise of long-term keys is not | attacker be able to obtain these long-term keys at some point later | |||
| entirely implausible. It can happen, for example, due to: | in time, 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 | 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 | |||
| skipping to change at page 11, line 37 ¶ | skipping to change at page 13, line 16 ¶ | |||
| 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. A variant of the Diffie-Hellman scheme uses Elliptic Curves | chosen. A variant of the Diffie-Hellman scheme uses Elliptic Curves | |||
| instead of the originally proposed modular arithmetics. | instead of the originally proposed modular arithmetics. | |||
| Unfortunately, many TLS/DTLS cipher suites were defined that do not | Unfortunately, many TLS/DTLS cipher suites were defined that do not | |||
| feature PFS, e.g. TLS_RSA_WITH_AES_256_CBC_SHA256. We thus advocate | feature PFS, e.g. TLS_RSA_WITH_AES_256_CBC_SHA256. We thus advocate | |||
| strict use of PFS-only ciphers. | strict use of PFS-only ciphers. | |||
| 6.4. Diffie Hellman Exponent Reuse | 7.4. Diffie Hellman Exponent Reuse | |||
| For performance reasons, many TLS implementations reuse Diffie- | For performance reasons, many TLS implementations reuse Diffie- | |||
| Hellman and Elliptic Curve Diffie-Hellman exponents across multiple | Hellman and Elliptic Curve Diffie-Hellman exponents across multiple | |||
| connections. Such reuse can result in major security issues: | connections. Such reuse can result in major security issues: | |||
| o If exponents are reused for a long time (e.g., more than a few | o If exponents are reused for a long time (e.g., more than a few | |||
| hours), an attacker who gains access to the host can decrypt | hours), an attacker who gains access to the host can decrypt | |||
| previous connections. In other words, exponent reuse negates the | previous connections. In other words, exponent reuse negates the | |||
| effects of forward secrecy. | effects of forward secrecy. | |||
| o TLS implementations that reuse exponents should test the DH public | o TLS implementations that reuse exponents should test the DH public | |||
| key they receive, in order to avoid some known attacks. These | key they receive, in order to avoid some known attacks. These | |||
| tests are not standardized in TLS at the time of writing. See | tests are not standardized in TLS at the time of writing. See | |||
| [RFC6989] for recipient tests required of IKEv2 implementations | [RFC6989] for recipient tests required of IKEv2 implementations | |||
| that reuse DH exponents. | that reuse DH exponents. | |||
| 6.5. Certificate Revocation | 7.5. Certificate Revocation | |||
| Unfortunately there is currently no effective, Internet-scale | Unfortunately there is currently no effective, Internet-scale | |||
| mechanism to affect certificate revocation: | mechanism to affect certificate revocation: | |||
| o Certificate Revocation Lists (CRLs) are non-scalable and therefore | o Certificate Revocation Lists (CRLs) are non-scalable and therefore | |||
| rarely used. | rarely used. | |||
| o The On-Line Certification Status Protocol (OCSP) presents both | o The On-Line Certification Status Protocol (OCSP) presents both | |||
| scaling and privacy issues when used for heavy traffic Web | scaling and privacy issues when used for heavy traffic Web | |||
| servers. In addition, clients typically "soft-fail", meaning they | servers. In addition, clients typically "soft-fail", meaning they | |||
| skipping to change at page 12, line 38 ¶ | skipping to change at page 14, line 19 ¶ | |||
| o Proprietary mechanisms that embed revocation lists in the Web | o Proprietary mechanisms that embed revocation lists in the Web | |||
| browser's configuration database cannot scale beyond a small | browser's configuration database cannot scale beyond a small | |||
| number of the most heavily used Web servers. | number of the most heavily used Web servers. | |||
| The current consensus appears to be that OCSP stapling, combined with | The current consensus appears to be that OCSP stapling, combined with | |||
| a "must staple" mechanism similar to HSTS, would finally resolve this | a "must staple" mechanism similar to HSTS, would finally resolve this | |||
| problem; in particular when used together with the extension defined | problem; in particular when used together with the extension defined | |||
| in [RFC6961]. But such a mechanism has not been standardized yet. | in [RFC6961]. But such a mechanism has not been standardized yet. | |||
| 7. Acknowledgments | 8. Acknowledgments | |||
| We would like to thank Stephen Farrell, Simon Josefsson, Watson Ladd, | We would like to thank Viktor Dukhovni, Stephen Farrell, Simon | |||
| Johannes Merkle, Bodo Moeller, Yoav Nir, Kenny Paterson, Patrick | Josefsson, Watson Ladd, Orit Levin, Johannes Merkle, Bodo Moeller, | |||
| Pelletier, Tom Ritter, Rich Salz, Aaron Zauner for their review. | Yoav Nir, Kenny Paterson, Patrick Pelletier, Tom Ritter, Rich Salz, | |||
| Thanks to Brian Smith whose "browser cipher suites" page is a great | Aaron Zauner for their review and improvements. Thanks to Brian | |||
| resource. Finally, thanks to all others who commented on the TLS, | Smith whose "browser cipher suites" page is a great resource. | |||
| UTA and other lists and are not mentioned here by name. | Finally, thanks to all others who commented on the TLS, UTA and other | |||
| lists and are not mentioned here by name. | ||||
| 8. References | 9. References | |||
| 8.1. Normative 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. | |||
| [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | |||
| [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. | |||
| skipping to change at page 13, line 39 ¶ | skipping to change at page 15, line 18 ¶ | |||
| [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and | [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and | |||
| Verification of Domain-Based Application Service Identity | Verification of Domain-Based Application Service Identity | |||
| within Internet Public Key Infrastructure Using X.509 | within Internet Public Key Infrastructure Using X.509 | |||
| (PKIX) Certificates in the Context of Transport Layer | (PKIX) Certificates in the Context of Transport Layer | |||
| Security (TLS)", RFC 6125, March 2011. | Security (TLS)", RFC 6125, March 2011. | |||
| [RFC6176] Turner, S. and T. Polk, "Prohibiting Secure Sockets Layer | [RFC6176] Turner, S. and T. Polk, "Prohibiting Secure Sockets Layer | |||
| (SSL) Version 2.0", RFC 6176, March 2011. | (SSL) Version 2.0", RFC 6176, March 2011. | |||
| 8.2. Informative References | [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | |||
| Security Version 1.2", RFC 6347, January 2012. | ||||
| 9.2. Informative References | ||||
| [CAB-Baseline] | [CAB-Baseline] | |||
| CA/Browser Forum, , "Baseline Requirements for the | CA/Browser Forum, , "Baseline Requirements for the | |||
| Issuance and Management of Publicly-Trusted Certificates | Issuance and Management of Publicly-Trusted Certificates | |||
| Version 1.1.6", 2013, <https://www.cabforum.org/ | Version 1.1.6", 2013, <https://www.cabforum.org/ | |||
| documents.html>. | documents.html>. | |||
| [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 | |||
| skipping to change at page 14, line 18 ¶ | skipping to change at page 15, line 48 ¶ | |||
| [I-D.ietf-uta-tls-attacks] | [I-D.ietf-uta-tls-attacks] | |||
| Sheffer, Y., Holz, R., and P. Saint-Andre, "Summarizing | Sheffer, Y., Holz, R., and P. Saint-Andre, "Summarizing | |||
| Current Attacks on TLS and DTLS", draft-ietf-uta-tls- | Current Attacks on TLS and DTLS", draft-ietf-uta-tls- | |||
| attacks-01 (work in progress), June 2014. | attacks-01 (work in progress), June 2014. | |||
| [Kleinjung2010] | [Kleinjung2010] | |||
| Kleinjung, T., "Factorization of a 768-Bit RSA Modulus", | Kleinjung, T., "Factorization of a 768-Bit RSA Modulus", | |||
| CRYPTO 10, 2010, <https://eprint.iacr.org/2010/006.pdf>. | CRYPTO 10, 2010, <https://eprint.iacr.org/2010/006.pdf>. | |||
| [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>. | ||||
| [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", | [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", | |||
| RFC 2246, January 1999. | RFC 2246, January 1999. | |||
| [RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.1", RFC 4346, April 2006. | (TLS) Protocol Version 1.1", RFC 4346, April 2006. | |||
| [RFC4347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | ||||
| Security", RFC 4347, April 2006. | ||||
| [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", RFC | ||||
| 4949, August 2007. | ||||
| [RFC5077] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig, | [RFC5077] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig, | |||
| "Transport Layer Security (TLS) Session Resumption without | "Transport Layer Security (TLS) Session Resumption without | |||
| Server-Side State", RFC 5077, January 2008. | Server-Side State", RFC 5077, January 2008. | |||
| [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. | |||
| [RFC6066] Eastlake, D., "Transport Layer Security (TLS) Extensions: | [RFC6066] Eastlake, D., "Transport Layer Security (TLS) Extensions: | |||
| Extension Definitions", RFC 6066, January 2011. | Extension Definitions", RFC 6066, January 2011. | |||
| skipping to change at page 15, line 21 ¶ | skipping to change at page 17, line 15 ¶ | |||
| [triple-handshake] | [triple-handshake] | |||
| Delignat-Lavaud, A., Bhargavan, K., and A. Pironti, | Delignat-Lavaud, A., Bhargavan, K., and A. Pironti, | |||
| "Triple Handshakes Considered Harmful: Breaking and Fixing | "Triple Handshakes Considered Harmful: Breaking and Fixing | |||
| Authentication over TLS", 2014, <https://secure- | Authentication over TLS", 2014, <https://secure- | |||
| resumption.com/>. | resumption.com/>. | |||
| Appendix A. Change Log | Appendix A. Change Log | |||
| Note to RFC Editor: please remove this section before publication. | Note to RFC Editor: please remove this section before publication. | |||
| A.1. draft-ietf-tls-bcp-02 | A.1. draft-ietf-uta-tls-bcp-03 | |||
| o Disallow truncated HMAC. | ||||
| o Applicability to DTLS. | ||||
| o Some more text restructuring. | ||||
| o Host name validation is sometimes irrelevant. | ||||
| o HSTS: MUST implement, SHOULD deploy. | ||||
| o Session identities are not protected, only tickets are. | ||||
| o Clarified the target audience. | ||||
| A.2. draft-ietf-uta-tls-bcp-02 | ||||
| o Rearranged some sections for clarity and re-styled the text so | o Rearranged some sections for clarity and re-styled the text so | |||
| that normative text is followed by rationale where possible. | that normative text is followed by rationale where possible. | |||
| o Removed the recommendation to use Brainpool curves. | o Removed the recommendation to use Brainpool curves. | |||
| o Triple Handshake mitigation. | o Triple Handshake mitigation. | |||
| o MUST NOT negotiate algorithms lower than 112 bits of security. | o MUST NOT negotiate algorithms lower than 112 bits of security. | |||
| o MUST implement SNI, but use per local policy. | o MUST implement SNI, but use per local policy. | |||
| o Changed SHOULD NOT negotiate or fall back to SSLv3 to MUST NOT. | o Changed SHOULD NOT negotiate or fall back to SSLv3 to MUST NOT. | |||
| o Added hostname validation. | o Added hostname validation. | |||
| o Non-normative discussion of DH exponent reuse. | o Non-normative discussion of DH exponent reuse. | |||
| A.2. draft-ietf-tls-bcp-01 | A.3. draft-ietf-tls-bcp-01 | |||
| o Clarified that specific TLS-using protocols may have stricter | o Clarified that specific TLS-using protocols may have stricter | |||
| requirements. | requirements. | |||
| o Changed TLS 1.0 from MAY to SHOULD NOT. | o Changed TLS 1.0 from MAY to SHOULD NOT. | |||
| o Added discussion of "optional TLS" and HSTS. | o Added discussion of "optional TLS" and HSTS. | |||
| o Recommended use of the Signature Algorithm and Renegotiation Info | o Recommended use of the Signature Algorithm and Renegotiation Info | |||
| extensions. | extensions. | |||
| o Use of a strong cipher for a resumption ticket: changed SHOULD to | o Use of a strong cipher for a resumption ticket: changed SHOULD to | |||
| MUST. | MUST. | |||
| o Added an informational discussion of certificate revocation, but | o Added an informational discussion of certificate revocation, but | |||
| no recommendations. | no recommendations. | |||
| A.3. draft-ietf-tls-bcp-00 | A.4. draft-ietf-tls-bcp-00 | |||
| o Initial WG version, with only updated references. | o Initial WG version, with only updated references. | |||
| A.4. draft-sheffer-tls-bcp-02 | A.5. draft-sheffer-tls-bcp-02 | |||
| o Reorganized the content to focus on recommendations. | o Reorganized the content to focus on recommendations. | |||
| o Moved description of attacks to a separate document (draft- | o Moved description of attacks to a separate document (draft- | |||
| sheffer-uta-tls-attacks). | sheffer-uta-tls-attacks). | |||
| o Strengthened recommendations regarding session resumption. | o Strengthened recommendations regarding session resumption. | |||
| A.5. draft-sheffer-tls-bcp-01 | A.6. draft-sheffer-tls-bcp-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.6. draft-sheffer-tls-bcp-00 | A.7. draft-sheffer-tls-bcp-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 | Peter Saint-Andre | |||
| &yet | &yet | |||
| P.O. Box 787 | ||||
| Parker, CO 80134 | ||||
| USA | ||||
| Email: ietf@stpeter.im | Email: peter@andyet.com | |||
| End of changes. 57 change blocks. | ||||
| 138 lines changed or deleted | 253 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/ | ||||