| < draft-ietf-uta-tls-bcp-08.txt | draft-ietf-uta-tls-bcp-09.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: June 10, 2015 TUM | Expires: August 15, 2015 TUM | |||
| P. Saint-Andre | P. Saint-Andre | |||
| &yet | &yet | |||
| December 7, 2014 | February 11, 2015 | |||
| Recommendations for Secure Use of TLS and DTLS | Recommendations for Secure Use of TLS and DTLS | |||
| draft-ietf-uta-tls-bcp-08 | draft-ietf-uta-tls-bcp-09 | |||
| Abstract | Abstract | |||
| Transport Layer Security (TLS) and Datagram Transport Layer Security | Transport Layer Security (TLS) and Datagram Transport Layer Security | |||
| (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 deployed services that use TLS and DTLS. The | the security of deployed services that use TLS and DTLS. The | |||
| 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 June 10, 2015. | This Internet-Draft will expire on August 15, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2015 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 | |||
| skipping to change at page 2, line 27 ¶ | skipping to change at page 2, line 27 ¶ | |||
| 3.1.1. SSL/TLS Protocol Versions . . . . . . . . . . . . . . 4 | 3.1.1. SSL/TLS Protocol Versions . . . . . . . . . . . . . . 4 | |||
| 3.1.2. DTLS Protocol Versions . . . . . . . . . . . . . . . 5 | 3.1.2. DTLS Protocol Versions . . . . . . . . . . . . . . . 5 | |||
| 3.1.3. Fallback to Lower Versions . . . . . . . . . . . . . 6 | 3.1.3. Fallback to Lower Versions . . . . . . . . . . . . . 6 | |||
| 3.2. Strict TLS . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.2. Strict TLS . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.3. Compression . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.3. Compression . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.4. TLS Session Resumption . . . . . . . . . . . . . . . . . 7 | 3.4. TLS Session Resumption . . . . . . . . . . . . . . . . . 7 | |||
| 3.5. TLS Renegotiation . . . . . . . . . . . . . . . . . . . . 7 | 3.5. TLS Renegotiation . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.6. Server Name Indication . . . . . . . . . . . . . . . . . 8 | 3.6. Server Name Indication . . . . . . . . . . . . . . . . . 8 | |||
| 4. Recommendations: Cipher Suites . . . . . . . . . . . . . . . 8 | 4. Recommendations: Cipher Suites . . . . . . . . . . . . . . . 8 | |||
| 4.1. General Guidelines . . . . . . . . . . . . . . . . . . . 8 | 4.1. General Guidelines . . . . . . . . . . . . . . . . . . . 8 | |||
| 4.2. Recommended Cipher Suites . . . . . . . . . . . . . . . . 9 | 4.2. Recommended Cipher Suites . . . . . . . . . . . . . . . . 10 | |||
| 4.2.1. Implementation Details . . . . . . . . . . . . . . . 10 | 4.2.1. Implementation Details . . . . . . . . . . . . . . . 10 | |||
| 4.3. Public Key Length . . . . . . . . . . . . . . . . . . . . 11 | 4.3. Public Key Length . . . . . . . . . . . . . . . . . . . . 11 | |||
| 4.4. Modular vs. Elliptic Curve DH Cipher Suites . . . . . . . 11 | 4.4. Modular vs. Elliptic Curve DH Cipher Suites . . . . . . . 12 | |||
| 4.5. Truncated HMAC . . . . . . . . . . . . . . . . . . . . . 12 | 4.5. Truncated HMAC . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5. Applicability Statement . . . . . . . . . . . . . . . . . . . 13 | 5. Applicability Statement . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.1. Security Services . . . . . . . . . . . . . . . . . . . . 13 | 5.1. Security Services . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.2. Unauthenticated TLS and Opportunistic Security . . . . . 14 | 5.2. Unauthenticated TLS and Opportunistic Security . . . . . 14 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | |||
| 7.1. Host Name Validation . . . . . . . . . . . . . . . . . . 15 | 7.1. Host Name Validation . . . . . . . . . . . . . . . . . . 15 | |||
| 7.2. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 7.2. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 7.3. Forward Secrecy . . . . . . . . . . . . . . . . . . . . . 16 | 7.3. Forward Secrecy . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 7.4. Diffie-Hellman Exponent Reuse . . . . . . . . . . . . . . 17 | 7.4. Diffie-Hellman Exponent Reuse . . . . . . . . . . . . . . 17 | |||
| 7.5. Certificate Revocation . . . . . . . . . . . . . . . . . 17 | 7.5. Certificate Revocation . . . . . . . . . . . . . . . . . 18 | |||
| 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 18 | 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 19 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 19 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 20 | 9.2. Informative References . . . . . . . . . . . . . . . . . 20 | |||
| Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 23 | Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 24 | |||
| A.1. draft-ietf-uta-tls-bcp-08 . . . . . . . . . . . . . . . . 23 | A.1. draft-ietf-uta-tls-bcp-08 . . . . . . . . . . . . . . . . 24 | |||
| A.2. draft-ietf-uta-tls-bcp-07 . . . . . . . . . . . . . . . . 23 | A.2. draft-ietf-uta-tls-bcp-07 . . . . . . . . . . . . . . . . 24 | |||
| A.3. draft-ietf-uta-tls-bcp-06 . . . . . . . . . . . . . . . . 23 | A.3. draft-ietf-uta-tls-bcp-06 . . . . . . . . . . . . . . . . 24 | |||
| A.4. draft-ietf-uta-tls-bcp-05 . . . . . . . . . . . . . . . . 23 | A.4. draft-ietf-uta-tls-bcp-05 . . . . . . . . . . . . . . . . 24 | |||
| A.5. draft-ietf-uta-tls-bcp-04 . . . . . . . . . . . . . . . . 23 | A.5. draft-ietf-uta-tls-bcp-04 . . . . . . . . . . . . . . . . 24 | |||
| A.6. draft-ietf-uta-tls-bcp-03 . . . . . . . . . . . . . . . . 23 | A.6. draft-ietf-uta-tls-bcp-03 . . . . . . . . . . . . . . . . 24 | |||
| A.7. draft-ietf-uta-tls-bcp-02 . . . . . . . . . . . . . . . . 24 | A.7. draft-ietf-uta-tls-bcp-02 . . . . . . . . . . . . . . . . 25 | |||
| A.8. draft-ietf-tls-bcp-01 . . . . . . . . . . . . . . . . . . 24 | A.8. draft-ietf-tls-bcp-01 . . . . . . . . . . . . . . . . . . 25 | |||
| A.9. draft-ietf-tls-bcp-00 . . . . . . . . . . . . . . . . . . 24 | A.9. draft-ietf-tls-bcp-00 . . . . . . . . . . . . . . . . . . 25 | |||
| A.10. draft-sheffer-tls-bcp-02 . . . . . . . . . . . . . . . . 25 | A.10. draft-sheffer-tls-bcp-02 . . . . . . . . . . . . . . . . 25 | |||
| A.11. draft-sheffer-tls-bcp-01 . . . . . . . . . . . . . . . . 25 | A.11. draft-sheffer-tls-bcp-01 . . . . . . . . . . . . . . . . 26 | |||
| A.12. draft-sheffer-tls-bcp-00 . . . . . . . . . . . . . . . . 25 | A.12. draft-sheffer-tls-bcp-00 . . . . . . . . . . . . . . . . 26 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 1. Introduction | 1. Introduction | |||
| Transport Layer Security (TLS) [RFC5246] and Datagram Transport | Transport Layer Security (TLS) [RFC5246] and Datagram Transport | |||
| Security Layer (DTLS) [RFC6347] are widely used to protect data | Security Layer (DTLS) [RFC6347] are widely used to protect data | |||
| exchanged over application protocols such as HTTP, SMTP, IMAP, POP, | exchanged over application protocols such as HTTP, SMTP, IMAP, POP, | |||
| SIP, and XMPP. Over the last few years, several serious attacks on | SIP, and XMPP. Over the last few years, several serious attacks on | |||
| TLS have emerged, including attacks on its most commonly used cipher | TLS have emerged, including attacks on its most commonly used cipher | |||
| suites and modes of operation. For instance, both the AES-CBC | suites and modes of operation. For instance, both the AES-CBC | |||
| [RFC3602] and RC4 [I-D.ietf-tls-prohibiting-rc4] encryption | [RFC3602] and RC4 [I-D.ietf-tls-prohibiting-rc4] encryption | |||
| algorithms, which together are the most widely deployed ciphers, have | algorithms, which together are the most widely deployed ciphers, have | |||
| been attacked in the context of TLS. A companion document | been attacked in the context of TLS. A companion document [RFC7457] | |||
| [I-D.ietf-uta-tls-attacks] provides detailed information about these | provides detailed information about these attacks. | |||
| 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. This document | need updated guidance on how TLS can be used securely. This document | |||
| provides guidance for deployed services as well as for software | provides guidance for deployed services as well as for software | |||
| implementations, assuming the implementer expects his or her code to | implementations, assuming the implementer expects his or her code to | |||
| be deployed in environments defined in the following section. In | be deployed in environments defined in the following section. In | |||
| fact, this document calls for the deployment of algorithms that are | fact, this document calls for the deployment of algorithms that are | |||
| widely implemented but not yet widely deployed. Concerning | widely implemented but not yet widely deployed. Concerning | |||
| deployment, this document targets a wide audience, namely all | deployment, this document targets a wide audience, namely all | |||
| deployers who wish to add authentication (be it one-way only or | deployers who wish to add authentication (be it one-way only or | |||
| skipping to change at page 5, line 33 ¶ | skipping to change at page 5, line 33 ¶ | |||
| suites. | suites. | |||
| o Implementations MUST support TLS 1.2 [RFC5246] and MUST prefer to | o Implementations MUST support TLS 1.2 [RFC5246] and MUST prefer to | |||
| negotiate TLS version 1.2 over earlier versions of TLS. | negotiate TLS version 1.2 over earlier versions of TLS. | |||
| Rationale: Several stronger cipher suites are available only with | Rationale: Several stronger cipher suites are available only with | |||
| TLS 1.2 (published in 2008). In fact, the cipher suites | TLS 1.2 (published in 2008). In fact, the cipher suites | |||
| recommended by this document (Section 4.2 below) are only | recommended by this document (Section 4.2 below) are only | |||
| available in TLS 1.2. | available in TLS 1.2. | |||
| This BCP applies to TLS 1.2. It is not safe for readers to assume | This BCP applies to TLS 1.2, and also to earlier versions. It is not | |||
| that the recommendations in this BCP apply to any future version of | safe for readers to assume that the recommendations in this BCP apply | |||
| TLS. | to any future version of TLS. | |||
| 3.1.2. DTLS Protocol Versions | 3.1.2. DTLS Protocol Versions | |||
| DTLS, an adaptation of TLS for UDP datagrams, was introduced when TLS | DTLS, an adaptation of TLS for UDP datagrams, was introduced when TLS | |||
| 1.1 was published. The following are the recommendations with | 1.1 was published. The following are the recommendations with | |||
| respect to DTLS: | respect to DTLS: | |||
| o Implementations MAY negotiate DTLS version 1.0 [RFC4347]. | o Implementations SHOULD NOT negotiate DTLS version 1.0 [RFC4347]. | |||
| Version 1.0 of DTLS correlates to version 1.1 of TLS (see above). | Version 1.0 of DTLS correlates to version 1.1 of TLS (see above). | |||
| o Implementations MUST support, and prefer to negotiate, DTLS | o Implementations MUST support, and prefer to negotiate, DTLS | |||
| version 1.2 [RFC6347]. | version 1.2 [RFC6347]. | |||
| Version 1.2 of DTLS correlates to Version 1.2 of TLS 1.2 (see | Version 1.2 of DTLS correlates to Version 1.2 of TLS 1.2 (see | |||
| above). (There is no Version 1.1 of DTLS.) | above). (There is no Version 1.1 of DTLS.) | |||
| 3.1.3. Fallback to Lower Versions | 3.1.3. Fallback to Lower Versions | |||
| Clients that "fall back" to lower versions of the protocol after the | Clients that "fall back" to lower versions of the protocol after the | |||
| server rejects higher versions of the protocol MUST NOT fall back to | server rejects higher versions of the protocol MUST NOT fall back to | |||
| SSLv3. | SSLv3 or earlier. | |||
| Rationale: Some client implementations revert to lower versions of | Rationale: Some client implementations revert to lower versions of | |||
| TLS or even to SSLv3 if the server rejected higher versions of the | TLS or even to SSLv3 if the server rejected higher versions of the | |||
| protocol. This fallback can be forced by a man in the middle (MITM) | protocol. This fallback can be forced by a man in the middle (MITM) | |||
| attacker. TLS 1.0 and SSLv3 are significantly less secure than TLS | attacker. 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. (At | amount to only about 3% of the current Web server population. (At | |||
| the time of this writing, an explicit method for preventing downgrade | the time of this writing, an explicit method for preventing downgrade | |||
| attacks is being defined in [I-D.ietf-tls-downgrade-scsv].) | attacks is being defined in [I-D.ietf-tls-downgrade-scsv].) | |||
| skipping to change at page 6, line 31 ¶ | skipping to change at page 6, line 31 ¶ | |||
| 3.2. Strict TLS | 3.2. Strict TLS | |||
| To prevent SSL Stripping: | To prevent SSL Stripping: | |||
| 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 In many application protocols, clients can be configured to use | o Application protocols typically provide a way for the server to | |||
| TLS no matter whether the server offers TLS during a protocol | offer TLS during an initial protocol exchange, and sometimes also | |||
| exchange or advertises support for TLS (e.g., through a flag | provide a way for the server to advertise support for TLS (e.g., | |||
| indicating that TLS is required). Application clients SHOULD use | through a flag indicating that TLS is required); unfortunately, | |||
| TLS by default, and disable this default only through explicit | these indications are sent before the communication channel is | |||
| configuration by the user. | encrypted. A client SHOULD attempt to negotiate TLS even if these | |||
| indications are not communicated by the server. | ||||
| o HTTP client and server implementations MUST support the HTTP | o HTTP client and server implementations MUST support the HTTP | |||
| Strict Transport Security (HSTS) header [RFC6797], in order to | Strict Transport Security (HSTS) header [RFC6797], in order to | |||
| allow Web servers to advertise that they are willing to accept | allow Web servers to advertise that they are willing to accept | |||
| TLS-only clients. | TLS-only clients. | |||
| o When applicable, Web servers SHOULD use HSTS to indicate that they | o When applicable, Web servers SHOULD use HSTS to indicate that they | |||
| are willing to accept TLS-only clients. | are willing to accept TLS-only clients. | |||
| Rationale: Combining unprotected and TLS-protected communication | Rationale: Combining unprotected and TLS-protected communication | |||
| skipping to change at page 7, line 17 ¶ | skipping to change at page 7, line 17 ¶ | |||
| Implementations and deployments SHOULD disable TLS-level compression | Implementations and deployments SHOULD disable TLS-level compression | |||
| ([RFC5246], Section 6.2.2). | ([RFC5246], Section 6.2.2). | |||
| Rationale: TLS compression has been subject to security attacks, such | Rationale: TLS compression has been subject to security attacks, such | |||
| as the CRIME attack. | as the CRIME attack. | |||
| 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 Section 2.6 of [I-D.ietf-uta-tls-attacks] for | current document. See Section 2.6 of [RFC7457] for further details. | |||
| further details. | ||||
| 3.4. TLS Session Resumption | 3.4. 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, when using session tickets [RFC5077], the | safely. In particular, when using session tickets [RFC5077], the | |||
| resumption information MUST be authenticated and encrypted to prevent | resumption information MUST be authenticated and encrypted to prevent | |||
| modification or eavesdropping by an attacker. Further | modification or eavesdropping by an attacker. 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 | |||
| skipping to change at page 8, line 5 ¶ | skipping to change at page 7, line 51 ¶ | |||
| the TLS endpoint (either client or server) and its secrets from | the TLS endpoint (either client or server) and its secrets from | |||
| reading either past or future communication. The tickets must be | reading either past or future communication. The tickets must be | |||
| managed so as not to negate this security property. | managed so as not to negate this security property. | |||
| 3.5. TLS Renegotiation | 3.5. 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 recommended | To counter the Triple Handshake attack, the recommended | |||
| countermeasures from [triple-handshake]: TLS clients SHOULD apply the | countermeasures from [triple-handshake] are adopted: TLS clients | |||
| same validation policy for all certificates received over a | SHOULD apply the same validation policy for all certificates received | |||
| connection, bind the master secret to the full handshake, and bind | over a connection, bind the master secret to the full handshake, and | |||
| the abbreviated session resumption handshake to the original full | bind the abbreviated session resumption handshake to the original | |||
| handshake. In some usages, it may be simplest to refuse any change | full handshake. In some usages, the most secure option might be to | |||
| of certificates during renegotiation. | refuse any change of certificates during renegotiation. | |||
| 3.6. Server Name Indication | 3.6. 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. | |||
| Rationale: SNI supports deployment of multiple TLS-protected virtual | Rationale: SNI supports deployment of multiple TLS-protected virtual | |||
| servers on a single address, and therefore enables fine-grained | servers on a single address, and therefore enables fine-grained | |||
| skipping to change at page 8, line 37 ¶ | skipping to change at page 8, line 34 ¶ | |||
| TLS and its implementations provide considerable flexibility in the | TLS and its implementations provide considerable flexibility in the | |||
| selection of cipher suites. Unfortunately, some available cipher | selection of cipher suites. Unfortunately, some available cipher | |||
| suites are insecure, some do not provide the targeted security | suites are insecure, some do not provide the targeted security | |||
| services, and some no longer provide enough security. Incorrectly | services, and some no longer provide enough security. Incorrectly | |||
| configuring a server leads to no or reduced security. This section | configuring a server leads to no or reduced security. This section | |||
| includes recommendations on the selection and negotiation of cipher | includes recommendations on the selection and negotiation of cipher | |||
| suites. | suites. | |||
| 4.1. General Guidelines | 4.1. General Guidelines | |||
| Cryptographic algorithms weaken over time as cryptanalysis improves. | Cryptographic algorithms weaken over time as cryptanalysis improves: | |||
| In other words, as time progresses, algorithms that were once | algorithms that were once considered strong become weak. Such | |||
| considered strong but are now weak, need to be phased out over time | algorithms need to be phased out over time and replaced with more | |||
| and replaced with more secure cipher suites to ensure that desired | secure cipher suites. This helps to ensure that the desired security | |||
| security properties still hold. SSL/TLS has been in existence for | properties still hold. SSL/TLS has been in existence for almost 20 | |||
| almost 20 years at this point and this section provides some much | years and many of the cipher suites that have been recommended in | |||
| needed recommendations concerning cipher suite selection: | various versions of SSL/TLS are now considered weak or at least not | |||
| as strong as desired. Therefore this section modernizes the | ||||
| recommendations concerning cipher suite selection: | ||||
| o Implementations MUST NOT negotiate the cipher suites with NULL | o Implementations MUST NOT negotiate the cipher suites with NULL | |||
| encryption. | encryption. | |||
| Rationale: The NULL cipher suites do not encrypt traffic and so | Rationale: The NULL cipher suites do not encrypt traffic and so | |||
| provide no confidentiality services. Any entity in the network | provide no confidentiality services. Any entity in the network | |||
| with access to the connection can view the plaintext of contents | with access to the connection can view the plaintext of contents | |||
| being exchanged by the client and server. | being exchanged by the client and server. (Nevertheless, this | |||
| document does not discourage software from implementing NULL | ||||
| cipher suites, since they can be useful for testing and | ||||
| debugging.) | ||||
| o Implementations MUST NOT negotiate RC4 cipher suites. | o Implementations MUST NOT negotiate RC4 cipher suites. | |||
| Rationale: The RC4 stream cipher has a variety of cryptographic | Rationale: The RC4 stream cipher has a variety of cryptographic | |||
| weaknesses, as documented in [I-D.ietf-tls-prohibiting-rc4]. We | weaknesses, as documented in [I-D.ietf-tls-prohibiting-rc4]. Note | |||
| note that this guideline does not apply to DTLS, which | that DTLS specifically forbids the use of RC4 already. | |||
| specifically forbids the use of RC4. | ||||
| o Implementations MUST NOT negotiate cipher suites offering less | o Implementations MUST NOT negotiate cipher suites offering less | |||
| than 112 bits of security, including the so-called "export-level" | than 112 bits of security, including the so-called "export-level" | |||
| encryption (which provide 40 or 56 bits of security). | encryption (which provide 40 or 56 bits of security). | |||
| Rationale: Based on [RFC3766], at least 112 bits of security is | Rationale: Based on [RFC3766], at least 112 bits of security is | |||
| needed. 40-bit and 56-bit security are considered insecure today. | needed. 40-bit and 56-bit security are considered insecure today. | |||
| TLS 1.1 and 1.2 never negotiate 40-bit or 56-bit export ciphers. | TLS 1.1 and 1.2 never negotiate 40-bit or 56-bit export ciphers. | |||
| o Implementations SHOULD NOT negotiate cipher suites that use | o Implementations SHOULD NOT negotiate cipher suites that use | |||
| algorithms offering less than 128 bits of security. | algorithms offering less than 128 bits of security. | |||
| Rationale: Cipher suites that offer between 112-bits and 128-bits | Rationale: Cipher suites that offer between 112-bits and 128-bits | |||
| of security are not considered weak at this time, however it is | of security are not considered weak at this time, however it is | |||
| expected that their useful lifespan is short enough to justify | expected that their useful lifespan is short enough to justify | |||
| supporting stronger cipher suites at this time. 128-bit ciphers | supporting stronger cipher suites at this time. 128-bit ciphers | |||
| are expected to remain secure for at least several years, and | are expected to remain secure for at least several years, and | |||
| 256-bit ciphers "until the next fundamental technology | 256-bit ciphers "until the next fundamental technology | |||
| breakthrough". Note that some legacy cipher suites (e.g., 168-bit | breakthrough". Note that, because of so-called "meet-in-the- | |||
| 3DES) have an effective key length which is smaller than their | middle" attacks [Multiple-Encryption] some legacy cipher suites | |||
| nominal key length (112 bits in the case of 3DES). Such cipher | (e.g., 168-bit 3DES) have an effective key length which is smaller | |||
| suites should be evaluated according to their effective key | than their nominal key length (112 bits in the case of 3DES). | |||
| length. | Such cipher suites should be evaluated according to their | |||
| effective key length. | ||||
| 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. See Section 7.3 for a detailed | which attacks can be successful. See Section 7.3 for a detailed | |||
| skipping to change at page 10, line 4 ¶ | skipping to change at page 10, line 11 ¶ | |||
| 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. See Section 7.3 for a detailed | which attacks can be successful. See Section 7.3 for a detailed | |||
| discussion. | discussion. | |||
| 4.2. Recommended Cipher Suites | 4.2. Recommended Cipher Suites | |||
| Given the foregoing considerations, implementation and deployment of | Given the foregoing considerations, implementation and deployment of | |||
| the following cipher suites is RECOMMENDED: | the following 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 | |||
| These cipher suites are supported only in TLS 1.2 because they are | These cipher suites are supported only in TLS 1.2 because they are | |||
| authenticated encryption (AEAD) algorithms [RFC5116]. | authenticated encryption (AEAD) algorithms [RFC5116]. | |||
| Typically, in order to prefer these suites, the order of suites needs | Typically, in order to prefer these suites, the order of suites needs | |||
| to be explicitly configured in server software. | to be explicitly configured in server software. It would be ideal if | |||
| server software implementations were to prefer these suites by | ||||
| default. | ||||
| Some devices have hardware support for AES-CCM but not AES-GCM. | Some devices have hardware support for AES-CCM but not AES-GCM, so | |||
| There are even devices that do not support public key cryptography at | they are unable to follow the foregoing recommendations regarding | |||
| all. This BCP does not cover such devices. | cipher suites. There are even devices that do not support public key | |||
| cryptography at all, but they are out of scope entirely. | ||||
| 4.2.1. Implementation Details | 4.2.1. Implementation 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 over weaker cipher suites | |||
| if it is not the first proposal. | whenever it is proposed, even if it is not the first proposal. | |||
| 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. | |||
| This document does not change the mandatory-to-implement TLS cipher | This document does not change the mandatory-to-implement TLS cipher | |||
| suite(s) prescribed by TLS or application protocols using TLS. To | suite(s) prescribed by TLS or application protocols using TLS. To | |||
| maximize interoperability, RFC 5246 mandates implementation of the | maximize interoperability, RFC 5246 mandates implementation of the | |||
| TLS_RSA_WITH_AES_128_CBC_SHA cipher suite, which is significantly | TLS_RSA_WITH_AES_128_CBC_SHA cipher suite, which is significantly | |||
| weaker than the cipher suites recommended here. Implementers should | weaker than the cipher suites recommended here (the GCM mode does not | |||
| consider the interoperability gain against the loss in security when | suffer from the same weakness, caused by the order of MAC-then- | |||
| deploying that cipher suite. Other application protocols specify | Encrypt in TLS [Krawczyk2001], since it uses an Authenticated | |||
| other cipher suites as mandatory to implement (MTI). | Encryption with Associated Data (AEAD) mode of operation). | |||
| Implementers should consider the interoperability gain against the | ||||
| loss in security when deploying that cipher suite. Other application | ||||
| protocols specify other cipher suites as mandatory to implement | ||||
| (MTI). | ||||
| Note that some profiles of TLS 1.2 use different cipher suites. For | Note that some profiles of TLS 1.2 use different cipher suites. For | |||
| example, [RFC6460] defines a profile that uses the | 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. | |||
| [RFC4492] allows clients and servers to negotiate ECDH parameters | [RFC4492] allows clients and servers to negotiate ECDH parameters | |||
| (curves). Both clients and servers SHOULD include the "Supported | (curves). Both clients and servers SHOULD include the "Supported | |||
| Elliptic Curves" extension [RFC4492]. For interoperability, clients | Elliptic Curves" extension [RFC4492]. For interoperability, clients | |||
| and servers SHOULD support the NIST P-256 (secp256r1) curve | and servers SHOULD support the NIST P-256 (secp256r1) curve | |||
| skipping to change at page 11, line 4 ¶ | skipping to change at page 11, line 19 ¶ | |||
| Note that some profiles of TLS 1.2 use different cipher suites. For | Note that some profiles of TLS 1.2 use different cipher suites. For | |||
| example, [RFC6460] defines a profile that uses the | 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. | |||
| [RFC4492] allows clients and servers to negotiate ECDH parameters | [RFC4492] allows clients and servers to negotiate ECDH parameters | |||
| (curves). Both clients and servers SHOULD include the "Supported | (curves). Both clients and servers SHOULD include the "Supported | |||
| Elliptic Curves" extension [RFC4492]. For interoperability, clients | Elliptic Curves" extension [RFC4492]. For interoperability, clients | |||
| and servers SHOULD support the NIST P-256 (secp256r1) curve | and servers SHOULD support the NIST P-256 (secp256r1) curve | |||
| [RFC4492]. In addition, clients SHOULD send an ec_point_formats | [RFC4492]. In addition, clients SHOULD send an ec_point_formats | |||
| extension with a single element, "uncompressed". | extension with a single element, "uncompressed". | |||
| 4.3. Public Key Length | 4.3. Public Key Length | |||
| When using the cipher suites recommended in this document, two public | When using the cipher suites recommended in this document, two public | |||
| keys are normally used in the TLS handshake: one for the Diffie- | keys are normally used in the TLS handshake: one for the Diffie- | |||
| Hellman key agreement and one for server authentication. Where a | Hellman key agreement and one for server authentication. Where a | |||
| client certificate is used, a third public key is added. | client certificate is used, a third public key is added. | |||
| With a key exchange based on modular Diffie-Hellman ("DHE" cipher | With a key exchange based on modular Diffie-Hellman ("DHE" cipher | |||
| suites), DH key lengths of at least 2048 bits are RECOMMENDED. | suites), DH key lengths of at least 2048 bits are RECOMMENDED. | |||
| Rationale: For various reasons, in practice DH keys are typically | Rationale: For various reasons, in practice DH keys are typically | |||
| generated in lengths that are powers of two (e.g., 2^10 = 1024 bits, | generated in lengths that are powers of two (e.g., 2^10 = 1024 bits, | |||
| 2^11 = 2048 bits, 2^12 = 4096 bits). Because a DH key of 1228 bits | 2^11 = 2048 bits, 2^12 = 4096 bits). Because a DH key of 1228 bits | |||
| would be roughly equivalent to only an 80-bit symmetric key | would be roughly equivalent to only an 80-bit symmetric key | |||
| [RFC3766], it is better to use keys longer than that for the "DHE" | [RFC3766], it is better to use keys longer than that for the "DHE" | |||
| family of cipher suites. A DH key of 1926 bits would be roughly | family of cipher suites. A DH key of 1926 bits would be roughly | |||
| equivalent to a 100-bit symmetric key [RFC3766] and a DH key of 2048 | equivalent to a 100-bit symmetric key [RFC3766] and a DH key of 2048 | |||
| bits might be sufficient for at least the next 10 years. See | bits might be sufficient for at least the next 10 years | |||
| Section 4.4 for additional information on the use of modular Diffie- | [NIST.SP.800-56A]. See Section 4.4 for additional information on the | |||
| Hellman in TLS. | use of modular Diffie-Hellman in TLS. | |||
| As noted in [RFC3766], correcting for the emergence of a TWIRL | As noted in [RFC3766], correcting for the emergence of a TWIRL | |||
| machine would imply that 1024-bit DH keys yield about 65 bits of | machine would imply that 1024-bit DH keys yield about 65 bits of | |||
| equivalent strength and that a 2048-bit DH key would yield about 92 | equivalent strength and that a 2048-bit DH key would yield about 92 | |||
| bits of equivalent strength. | bits of equivalent strength. | |||
| With regard to ECDH keys, the IANA named curve registry contains | With regard to ECDH keys, the IANA named curve registry contains | |||
| 160-bit elliptic curves which are considered to be roughly equivalent | 160-bit elliptic curves which are considered to be roughly equivalent | |||
| to only an 80-bit symmetric key [ECRYPT-II]. The use of curves of | to only an 80-bit symmetric key [ECRYPT-II]. Curves of less than | |||
| less than 192-bits is NOT RECOMMENDED. | 192-bits SHOULD NOT be used. | |||
| When using RSA servers SHOULD authenticate using certificates with at | When using RSA servers SHOULD authenticate using certificates with at | |||
| least a 2048-bit modulus for the public key. In addition, the use of | least a 2048-bit modulus for the public key. In addition, the use of | |||
| the SHA-256 hash algorithm is RECOMMENDED (see [CAB-Baseline] for | the SHA-256 hash algorithm is RECOMMENDED (see [CAB-Baseline] for | |||
| more details). Clients SHOULD indicate to servers that they request | more details). Clients SHOULD indicate to servers that they request | |||
| SHA-256, by using the "Signature Algorithms" extension defined in | SHA-256, by using the "Signature Algorithms" extension defined in | |||
| TLS 1.2. | TLS 1.2. | |||
| 4.4. Modular vs. Elliptic Curve DH Cipher Suites | 4.4. Modular vs. Elliptic Curve DH Cipher Suites | |||
| Not all TLS implementations support both modular and elliptic curve | Not all TLS implementations support both modular and elliptic curve | |||
| Diffie-Hellman groups, as required by Section 4.2. Some | Diffie-Hellman groups, as required by Section 4.2. Some | |||
| implementations are severely limited in the length of DH values. | implementations are severely limited in the length of DH values. | |||
| When such implementations need to be accommodated, we recommend using | When such implementations need to be accommodated, the following are | |||
| (in priority order): | RECOMMENDED (in 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. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, with 1024-bit parameters. | 3. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, with 1024-bit parameters. | |||
| Rationale: Although Elliptic Curve Cryptography is widely deployed | Rationale: Although Elliptic Curve Cryptography is widely deployed | |||
| there are some communities where its uptake has been limited for | there are some communities where its uptake has been limited for | |||
| skipping to change at page 12, line 33 ¶ | skipping to change at page 12, line 48 ¶ | |||
| o There are no standardized, widely implemented protocol mechanisms | o There are no standardized, widely implemented protocol mechanisms | |||
| to negotiate the DH groups or parameter lengths supported by | to negotiate the DH groups or parameter lengths supported by | |||
| client and server. | client and server. | |||
| o Many servers choose DH parameters of 1024 bits or fewer. | o Many servers choose DH parameters of 1024 bits or fewer. | |||
| o There are widely deployed client implementations that reject | o There are widely deployed client implementations that reject | |||
| received DH parameters if they are longer than 1024 bits. In | received DH parameters if they are longer than 1024 bits. In | |||
| addition, several implementations do not perform appropriate | addition, several implementations do not perform appropriate | |||
| validation of group parameters and are vulnerable to attacks | validation of group parameters and are vulnerable to attacks | |||
| referenced in Section 2.9 of [I-D.ietf-uta-tls-attacks] | referenced in Section 2.9 of [RFC7457] | |||
| We note that with DHE and ECDHE cipher suites, the TLS master key | Note that with DHE and ECDHE cipher suites, the TLS master key only | |||
| only depends on the Diffie-Hellman parameters and not on the strength | depends on the Diffie-Hellman parameters and not on the strength of | |||
| of the RSA certificate; moreover, 1024 bit modular DH parameters are | 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 ought to carefully evaluate | |||
| interoperability vs. security considerations when configuring their | interoperability vs. security considerations when configuring their | |||
| TLS endpoints. | TLS endpoints. | |||
| 4.5. Truncated HMAC | 4.5. Truncated HMAC | |||
| Implementations MUST NOT use the Truncated HMAC extension, defined in | Implementations MUST NOT use the Truncated HMAC extension, defined in | |||
| Section 7 of [RFC6066]. | Section 7 of [RFC6066]. | |||
| Rationale: the extension does not apply to the AEAD cipher suites | Rationale: the extension does not apply to the AEAD cipher suites | |||
| recommended above. However it does apply to most other TLS cipher | recommended above. However it does apply to most other TLS cipher | |||
| suites. Its use has been shown to be insecure in [PatersonRS11]. | suites. Its use has been shown to be insecure in [PatersonRS11]. | |||
| 5. Applicability Statement | 5. Applicability Statement | |||
| The deployment recommendations of this document address the operators | The deployment recommendations of this document address the operators | |||
| of application layer services that are most commonly used on the | of application layer services that are most commonly used on the | |||
| Internet, including, but not limited to: | Internet, including, but not limited to: | |||
| o Operators of web servers that wish to protect HTTP with TLS. | o Operators of web services that wish to protect HTTP with TLS. | |||
| o Operators of email servers who wish to protect the application- | o Operators of email services who wish to protect the application- | |||
| layer protocols with TLS (e.g., IMAP, POP3 or SMTP). | layer protocols with TLS (e.g., IMAP, POP3 or SMTP). | |||
| o Operators of instant-messaging services who wish to protect their | o Operators of instant-messaging services who wish to protect their | |||
| application-layer protocols with TLS (e.g., XMPP or IRC). | application-layer protocols with TLS (e.g., XMPP or IRC). | |||
| 5.1. Security Services | 5.1. Security Services | |||
| This document provides recommendations for an audience that wishes to | This document provides recommendations for an audience that wishes to | |||
| secure their communication with TLS to achieve the following: | secure their communication with TLS to achieve the following: | |||
| skipping to change at page 13, line 41 ¶ | skipping to change at page 14, line 8 ¶ | |||
| o Authentication: an end-point of the TLS communication is | o Authentication: an end-point of the TLS communication is | |||
| authenticated as the intended entity to communicate with. | authenticated as the intended entity to communicate with. | |||
| With regard to authentication, TLS enables authentication of one or | With regard to authentication, TLS enables authentication of one or | |||
| both end-points in the communication. Although some TLS usage | both end-points in the communication. Although some TLS usage | |||
| scenarios do not require authentication, those scenarios are not in | scenarios do not require authentication, those scenarios are not in | |||
| scope for this document (a rationale for this decision is provided | scope for this document (a rationale for this decision is provided | |||
| under Section 5.2). | under Section 5.2). | |||
| If deployers deviate from the recommendations given in this document, | If deployers deviate from the recommendations given in this document, | |||
| they MUST verify that they do not need one of the foregoing security | they need to be aware that they might lose access to one of the | |||
| services. | foregoing security services. | |||
| This document applies only to environments where confidentiality is | This document applies only to environments where confidentiality is | |||
| required. It recommends algorithms and configuration options that | required. It recommends algorithms and configuration options that | |||
| enforce secrecy of the data-in-transit. | enforce secrecy of the data-in-transit. | |||
| This document also assumes that data integrity protection is always | This document also assumes that data integrity protection is always | |||
| one of the goals of a deployment. In cases where integrity is not | one of the goals of a deployment. In cases where integrity is not | |||
| required, it does not make sense to employ TLS in the first place. | required, it does not make sense to employ TLS in the first place. | |||
| There are attacks against confidentiality-only protection that | There are attacks against confidentiality-only protection that | |||
| utilize the lack of integrity to also break confidentiality (see for | utilize the lack of integrity to also break confidentiality (see for | |||
| instance [DegabrieleP07] in the context of IPsec). | instance [DegabrieleP07] in the context of IPsec). | |||
| The intended audience covers those services that are most commonly | This document addresses itself to application protocols that are most | |||
| used on the Internet. Typically, all communication between TLS | commonly used on the Internet with TLS and DTLS. Typically, all | |||
| clients and TLS servers requires all three of the above security | communication between TLS clients and TLS servers requires all three | |||
| services. This is particularly true where TLS clients are user | of the above security services. This is particularly true where TLS | |||
| agents like Web browsers or email software. | clients are user agents like Web browsers or email software. | |||
| This document does not address the rarer deployment scenarios where | This document does not address the rarer deployment scenarios where | |||
| one of the above three properties is not desired, such as the use | one of the above three properties is not desired, such as the use | |||
| case described under Section 5.2 below. Another example of an | case described under Section 5.2 below. As another scenario where | |||
| audience not needing confidentiality is the following: a monitored | confidentiality is not needed, consider a monitored network where the | |||
| network where the authorities in charge of the respective traffic | authorities in charge of the respective traffic domain require full | |||
| domain require full access to unencrypted (plaintext) traffic, and | access to unencrypted (plaintext) traffic, and where users | |||
| where users collaborate and send their traffic in the clear. | collaborate and send their traffic in the clear. | |||
| 5.2. Unauthenticated TLS and Opportunistic Security | 5.2. Unauthenticated TLS and Opportunistic Security | |||
| Several important applications use TLS to protect data between a TLS | Several important applications use TLS to protect data between a TLS | |||
| client and a TLS server, but do so without the TLS client necessarily | client and a TLS server, but do so without the TLS client necessarily | |||
| verifying the server's certificate. This practice is often called | verifying the server's certificate. This practice is often called | |||
| "unauthenticated TLS". The reader is referred to | "unauthenticated TLS". The reader is referred to | |||
| [I-D.ietf-dane-smtp-with-dane] for an example and an explanation of | [I-D.ietf-dane-smtp-with-dane] for an example and an explanation of | |||
| why this less secure practice will likely remain common in the | why this less secure practice will likely remain common in the | |||
| context of SMTP (especially for MTA-to-MTA communications). The | context of SMTP (especially for MTA-to-MTA communications). The | |||
| practice is also encountered in similar contexts such as server-to- | practice is also encountered in similar contexts such as server-to- | |||
| server traffic on the XMPP network (where multi-tenant hosting | server traffic on the XMPP network (where multi-tenant hosting | |||
| environments make it difficult for operators to obtain proper | environments make it difficult for operators to obtain proper | |||
| certificates for all of the domains they service). | certificates for all of the domains they service). | |||
| Furthermore, in some scenarios the use of TLS itself is optional, | Furthermore, in some scenarios the use of TLS itself is optional, | |||
| i.e. the client decides dynamically ("opportunistically") whether to | i.e. the client decides dynamically ("opportunistically") whether to | |||
| use TLS with a particular server or to connect in the clear. This | use TLS with a particular server or to connect in the clear. This | |||
| practice, often called "opportunistic security", and is described at | practice, often called "opportunistic security", is described at | |||
| length in Section 2 of [I-D.farrelll-mpls-opportunistic-encrypt]. | length in [RFC7435]. | |||
| It can be argued that the recommendations provided in this document | It can be argued that the recommendations provided in this document | |||
| ought to apply equally to unauthenticated TLS as well as | ought to apply equally to unauthenticated TLS as well as | |||
| authenticated TLS. That would keep TLS implementations and | authenticated TLS. That would keep TLS implementations and | |||
| deployments in sync, which is a desirable property given that servers | deployments in sync, which is a desirable property given that servers | |||
| can be used simultaneously for unauthenticated TLS and for | can be used simultaneously for unauthenticated TLS and for | |||
| authenticated TLS (indeed, a server cannot know whether a client | authenticated TLS (indeed, a server cannot know whether a client | |||
| might attempt authenticated or unauthenticated TLS). On the other | might attempt authenticated or unauthenticated TLS). On the other | |||
| hand, it has been argued that some of the recommendations in this | hand, it has been argued that some of the recommendations in this | |||
| document might be too strict for unauthenticated scenarios and that | document might be too strict for unauthenticated scenarios and that | |||
| skipping to change at page 17, line 5 ¶ | skipping to change at page 17, line 22 ¶ | |||
| Forward secrecy ensures in such cases that the session keys cannot be | Forward secrecy ensures in such cases that the session keys cannot be | |||
| determined even by an attacker who obtains the long-term keys some | determined even by an attacker who obtains the long-term keys some | |||
| time after the conversation. It also protects against an attacker | time after the conversation. It also protects against an attacker | |||
| who is in possession of the long-term keys, but remains passive | who is in possession of the long-term keys, but remains passive | |||
| during the conversation. | during the conversation. | |||
| Forward secrecy is generally achieved by using the Diffie-Hellman | Forward secrecy is generally achieved by using the Diffie-Hellman | |||
| scheme to derive session keys. The Diffie-Hellman scheme has both | scheme to derive session keys. The Diffie-Hellman scheme has both | |||
| parties maintain private secrets and send parameters over the network | parties maintain private secrets and send parameters over the network | |||
| as modular powers over certain cyclic groups. The properties of the | as modular powers over certain cyclic groups. The properties of the | |||
| so-called Discrete Logarithm Problem (DLP) allow to derive the | so-called Discrete Logarithm Problem (DLP) allow the parties to | |||
| session keys without an eavesdropper being able to do so. There is | derive the session keys without an eavesdropper being able to do so. | |||
| currently no known attack against DLP if sufficiently large | There is currently no known attack against DLP if sufficiently large | |||
| parameters are chosen. A variant of the Diffie-Hellman scheme uses | parameters are chosen. A variant of the Diffie-Hellman scheme uses | |||
| Elliptic Curves instead of the originally proposed modular | Elliptic Curves instead of the originally proposed modular | |||
| arithmetics. | arithmetics. | |||
| Unfortunately, many TLS/DTLS cipher suites were defined that do not | Unfortunately, many TLS/DTLS cipher suites were defined that do not | |||
| feature forward secrecy, e.g., TLS_RSA_WITH_AES_256_CBC_SHA256. We | feature forward secrecy, e.g., TLS_RSA_WITH_AES_256_CBC_SHA256. This | |||
| thus advocate strict use of forward-secrecy-only ciphers. | document therefore advocates strict use of forward-secrecy-only | |||
| ciphers. | ||||
| 7.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 for group membership, in order to avoid some | key they receive for group membership, in order to avoid some | |||
| known attacks. These tests are not standardized in TLS at the | known attacks. These tests are not standardized in TLS at the | |||
| time of writing. See [RFC6989] for recipient tests required of | time of writing. See [RFC6989] for recipient tests required of | |||
| IKEv2 implementations that reuse DH exponents. | IKEv2 implementations that reuse DH exponents. | |||
| 7.5. Certificate Revocation | 7.5. Certificate Revocation | |||
| Unfortunately, no mechanism exists at this time that we can recommend | The following considerations and recommendations represent the | |||
| as a complete and efficient solution for the problem of checking the | current state of the art regarding certificate revocation, even | |||
| revocation status of common public key certificates (a.k.a. PKIX | though no complete and efficient solution exists for the problem of | |||
| certificates, [RFC5280]). The current state of the art is as | checking the revocation status of common public key certificates | |||
| follows: | (a.k.a. PKIX certificates, [RFC5280]): | |||
| o Although Certificate Revocation Lists (CRLs) are the most widely | o Although Certificate Revocation Lists (CRLs) are the most widely | |||
| supported mechanism for distributing revocation information, they | supported mechanism for distributing revocation information, they | |||
| have known scaling challenges that limit their usefulness (despite | have known scaling challenges that limit their usefulness (despite | |||
| workarounds such as partitioned CRLS and delta CRLs). | workarounds such as partitioned CRLS and delta CRLs). | |||
| 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. | |||
| skipping to change at page 18, line 24 ¶ | skipping to change at page 18, line 44 ¶ | |||
| o OCSP stapling as defined in [RFC6066] does not extend to | o OCSP stapling as defined in [RFC6066] does not extend to | |||
| intermediate certificates used in a certificate chain. Although | intermediate certificates used in a certificate chain. Although | |||
| [RFC6961] addresses this shortcoming, it is a recent addition | [RFC6961] addresses this shortcoming, it is a recent addition | |||
| without much deployment. | without much deployment. | |||
| o Both CRLs and OSCP depend on relatively reliable connectivity to | o Both CRLs and OSCP depend on relatively reliable connectivity to | |||
| the Internet, which might not be available to certain kinds of | the Internet, which might not be available to certain kinds of | |||
| nodes (such as newly provisioned devices that need to establish a | nodes (such as newly provisioned devices that need to establish a | |||
| secure connection in order to boot up for the first time). | secure connection in order to boot up for the first time). | |||
| With regard to PKIX certificates, servers SHOULD support both OCSP | With regard to PKIX certificates, servers SHOULD support the | |||
| [RFC6960] and OCSP stapling. To enable interoperability with the | following as a best practice given the current state of the art and | |||
| widest range of clients, servers SHOULD support both the | as a foundation for a possible future solution: | |||
| status_request extension defined in [RFC6066] and the | ||||
| status_request_v2 extension defined in [RFC6961]. Servers also | 1. OCSP [RFC6960] | |||
| SHOULD support the OCSP stapling extension defined in [RFC6961] as a | ||||
| best practice given the current state of the art and as a foundation | 2. Both the status_request extension defined in [RFC6066] and the | |||
| for a possible future solution. | status_request_v2 extension defined in [RFC6961] (this might | |||
| enable interoperability with the widest range of clients) | ||||
| 3. The OCSP stapling extension defined in [RFC6961] | ||||
| The foregoing considerations do not apply to scenarios where the | The foregoing considerations do not apply to scenarios where the | |||
| DANE-TLSA resource record [RFC6698] is used to signal to a client | DANE-TLSA resource record [RFC6698] is used to signal to a client | |||
| which certificate a server considers valid and good to use for TLS | which certificate a server considers valid and good to use for TLS | |||
| connections. | connections. | |||
| 8. Acknowledgments | 8. Acknowledgments | |||
| We would like to thank Uri Blumenthal, Viktor Dukhovni, Stephen | Thanks to RJ Atkinson, Uri Blumenthal, Viktor Dukhovni, Stephen | |||
| Farrell, Daniel Kahn Gillmor, Paul Hoffman, Simon Josefsson, Watson | Farrell, Daniel Kahn Gillmor, Paul Hoffman, Simon Josefsson, Watson | |||
| Ladd, Orit Levin, Ilari Liusvaara, Johannes Merkle, Bodo Moeller, | Ladd, Orit Levin, Ilari Liusvaara, Johannes Merkle, Bodo Moeller, | |||
| Yoav Nir, Massimiliano Pala, Kenny Paterson, Patrick Pelletier, Tom | Yoav Nir, Massimiliano Pala, Kenny Paterson, Patrick Pelletier, Tom | |||
| Ritter, Joe St. Sauver, Joe Salowey, Rich Salz, Brian Smith, Sean | Ritter, Joe St. Sauver, Joe Salowey, Rich Salz, Brian Smith, Sean | |||
| Turner, and Aaron Zauner for their feedback and suggested | Turner, and Aaron Zauner for their feedback and suggested | |||
| improvements. Thanks to Brian Smith, who has provided a great | improvements. Thanks also to Brian Smith, who has provided a great | |||
| resource in his "Proposal to Change the Default TLS Ciphersuites | resource in his "Proposal to Change the Default TLS Ciphersuites | |||
| Offered by Browsers" [Smith2013]. Finally, thanks to all others who | Offered by Browsers" [Smith2013]. Finally, thanks to all others who | |||
| commented on the TLS, UTA, and other discussion lists but who are not | commented on the TLS, UTA, and other discussion lists but who are not | |||
| mentioned here by name. | mentioned here by name. | |||
| Robert Sparks and Dave Waltermire provided helpful reviews on behalf | ||||
| of the General Area Review Team and the Security Directorate, | ||||
| respectively. | ||||
| The authors gratefully acknowledge the assistance of Leif Johansson | ||||
| and Orit Levin as the working group chairs and Pete Resnick as the | ||||
| sponsoring Area Director. | ||||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [I-D.ietf-tls-prohibiting-rc4] | ||||
| Popov, A., "Prohibiting RC4 Cipher Suites", draft-ietf- | ||||
| tls-prohibiting-rc4-01 (work in progress), October 2014. | ||||
| [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. | |||
| [RFC3766] Orman, H. and P. Hoffman, "Determining Strengths For | [RFC3766] Orman, H. and P. Hoffman, "Determining Strengths For | |||
| Public Keys Used For Exchanging Symmetric Keys", BCP 86, | Public Keys Used For Exchanging Symmetric Keys", BCP 86, | |||
| RFC 3766, April 2004. | RFC 3766, April 2004. | |||
| [RFC4492] Blake-Wilson, S., Bolyard, N., Gupta, V., Hawk, C., and B. | [RFC4492] Blake-Wilson, S., Bolyard, N., Gupta, V., Hawk, C., and B. | |||
| skipping to change at page 20, line 29 ¶ | skipping to change at page 21, line 11 ¶ | |||
| Smart, N., "ECRYPT II Yearly Report on Algorithms and | Smart, N., "ECRYPT II Yearly Report on Algorithms and | |||
| Keysizes (2011-2012)", 2012, | Keysizes (2011-2012)", 2012, | |||
| <http://www.ecrypt.eu.org/documents/D.SPA.20.pdf>. | <http://www.ecrypt.eu.org/documents/D.SPA.20.pdf>. | |||
| [Heninger2012] | [Heninger2012] | |||
| Heninger, N., Durumeric, Z., Wustrow, E., and J. | Heninger, N., Durumeric, Z., Wustrow, E., and J. | |||
| Halderman, "Mining Your Ps and Qs: Detection of Widespread | Halderman, "Mining Your Ps and Qs: Detection of Widespread | |||
| Weak Keys in Network Devices", Usenix Security Symposium | Weak Keys in Network Devices", Usenix Security Symposium | |||
| 2012, 2012. | 2012, 2012. | |||
| [I-D.farrelll-mpls-opportunistic-encrypt] | ||||
| Farrel, A. and S. Farrell, "Opportunistic Encryption in | ||||
| MPLS Networks", draft-farrelll-mpls-opportunistic- | ||||
| encrypt-02 (work in progress), February 2014. | ||||
| [I-D.ietf-dane-smtp-with-dane] | [I-D.ietf-dane-smtp-with-dane] | |||
| Dukhovni, V. and W. Hardaker, "SMTP security via | Dukhovni, V. and W. Hardaker, "SMTP security via | |||
| opportunistic DANE TLS", draft-ietf-dane-smtp-with-dane-10 | opportunistic DANE TLS", draft-ietf-dane-smtp-with-dane-10 | |||
| (work in progress), May 2014. | (work in progress), May 2014. | |||
| [I-D.ietf-dane-srv] | [I-D.ietf-dane-srv] | |||
| Finch, T., Miller, M., and P. Saint-Andre, "Using DNS- | Finch, T., Miller, M., and P. Saint-Andre, "Using DNS- | |||
| Based Authentication of Named Entities (DANE) TLSA Records | Based Authentication of Named Entities (DANE) TLSA Records | |||
| with SRV Records", draft-ietf-dane-srv-06 (work in | with SRV Records", draft-ietf-dane-srv-06 (work in | |||
| progress), June 2014. | progress), June 2014. | |||
| [I-D.ietf-tls-downgrade-scsv] | [I-D.ietf-tls-downgrade-scsv] | |||
| Moeller, B. and A. Langley, "TLS Fallback Signaling Cipher | Moeller, B. and A. Langley, "TLS Fallback Signaling Cipher | |||
| Suite Value (SCSV) for Preventing Protocol Downgrade | Suite Value (SCSV) for Preventing Protocol Downgrade | |||
| Attacks", draft-ietf-tls-downgrade-scsv-02 (work in | Attacks", draft-ietf-tls-downgrade-scsv-02 (work in | |||
| progress), November 2014. | progress), November 2014. | |||
| [I-D.ietf-tls-prohibiting-rc4] | ||||
| Popov, A., "Prohibiting RC4 Cipher Suites", draft-ietf- | ||||
| tls-prohibiting-rc4-01 (work in progress), October 2014. | ||||
| [I-D.ietf-uta-tls-attacks] | ||||
| Sheffer, Y., Holz, R., and P. Saint-Andre, "Summarizing | ||||
| Current Attacks on TLS and DTLS", draft-ietf-uta-tls- | ||||
| attacks-04 (work in progress), September 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>. | |||
| [Krawczyk2001] | ||||
| Krawczyk, H., "The order of encryption and authentication | ||||
| for protecting communications (Or: how secure is SSL?)", | ||||
| CRYPTO 01, 2001, <https://eprint.iacr.org/2001/045.pdf>. | ||||
| [Multiple-Encryption] | ||||
| Merkle, R. and M. Hellman, "On the security of multiple | ||||
| encryption", Communications of the ACM 24, 1981, | ||||
| <http://dl.acm.org/citation.cfm?id=358718>. | ||||
| [NIST.SP.800-56A] | ||||
| Barker, E., Chen, L., Roginsky, A., and M. Smid, | ||||
| "Recommendation for Pair-Wise Key Establishment Schemes | ||||
| Using Discrete Logarithm Cryptography", NIST Special | ||||
| Publication 800-56A, 2013, <http://nvlpubs.nist.gov/ | ||||
| nistpubs/SpecialPublications/NIST.SP.800-56Ar2.pdf>. | ||||
| [POODLE] Moeller, B., Duong, T., and K. Kotowicz, "This POODLE | [POODLE] Moeller, B., Duong, T., and K. Kotowicz, "This POODLE | |||
| Bites: Exploiting the SSL 3.0 Fallback", 2014, <https:// | Bites: Exploiting the SSL 3.0 Fallback", 2014, <https:// | |||
| www.openssl.org/~bodo/ssl-poodle.pdf>. | www.openssl.org/~bodo/ssl-poodle.pdf>. | |||
| [PatersonRS11] | [PatersonRS11] | |||
| Paterson, K., Ristenpart, T., and T. Shrimpton, "Tag size | Paterson, K., Ristenpart, T., and T. Shrimpton, "Tag size | |||
| does matter: attacks and proofs for the TLS record | does matter: attacks and proofs for the TLS record | |||
| protocol", 2011, | protocol", 2011, | |||
| <http://dx.doi.org/10.1007/978-3-642-25385-0_20>. | <http://dx.doi.org/10.1007/978-3-642-25385-0_20>. | |||
| skipping to change at page 22, line 43 ¶ | skipping to change at page 23, line 25 ¶ | |||
| RFC 6960, June 2013. | RFC 6960, June 2013. | |||
| [RFC6961] Pettersen, Y., "The Transport Layer Security (TLS) | [RFC6961] Pettersen, Y., "The Transport Layer Security (TLS) | |||
| Multiple Certificate Status Request Extension", RFC 6961, | Multiple Certificate Status Request Extension", RFC 6961, | |||
| June 2013. | June 2013. | |||
| [RFC6989] Sheffer, Y. and S. Fluhrer, "Additional Diffie-Hellman | [RFC6989] Sheffer, Y. and S. Fluhrer, "Additional Diffie-Hellman | |||
| Tests for the Internet Key Exchange Protocol Version 2 | Tests for the Internet Key Exchange Protocol Version 2 | |||
| (IKEv2)", RFC 6989, July 2013. | (IKEv2)", RFC 6989, July 2013. | |||
| [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection | ||||
| Most of the Time", RFC 7435, December 2014. | ||||
| [RFC7457] Sheffer, Y., Holz, R., and P. Saint-Andre, "Summarizing | ||||
| Known Attacks on Transport Layer Security (TLS) and | ||||
| Datagram TLS (DTLS)", RFC 7457, February 2015. | ||||
| [Smith2013] | [Smith2013] | |||
| Smith, B., "Proposal to Change the Default TLS | Smith, B., "Proposal to Change the Default TLS | |||
| Ciphersuites Offered by Browsers.", 2013, <https:// | Ciphersuites Offered by Browsers.", 2013, <https:// | |||
| briansmith.org/browser-ciphersuites-01.html>. | briansmith.org/browser-ciphersuites-01.html>. | |||
| [Soghoian2011] | [Soghoian2011] | |||
| Soghoian, C. and S. Stamm, "Certified lies: Detecting and | Soghoian, C. and S. Stamm, "Certified lies: Detecting and | |||
| defeating government interception attacks against SSL.", | defeating government interception attacks against SSL.", | |||
| Proc. 15th Int. Conf. Financial Cryptography and Data | Proc. 15th Int. Conf. Financial Cryptography and Data | |||
| Security , 2011. | Security , 2011. | |||
| End of changes. 51 change blocks. | ||||
| 135 lines changed or deleted | 173 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/ | ||||