| < draft-ietf-uta-tls-bcp-05.txt | draft-ietf-uta-tls-bcp-06.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: April 17, 2015 TUM | Expires: April 26, 2015 TUM | |||
| P. Saint-Andre | P. Saint-Andre | |||
| &yet | &yet | |||
| October 14, 2014 | October 23, 2014 | |||
| Recommendations for Secure Use of TLS and DTLS | Recommendations for Secure Use of TLS and DTLS | |||
| draft-ietf-uta-tls-bcp-05 | draft-ietf-uta-tls-bcp-06 | |||
| Abstract | Abstract | |||
| Transport Layer Security (TLS) and Datagram Transport Security Layer | 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 | |||
| recommendations are applicable to the majority of use cases. | recommendations are applicable to the majority of use cases. | |||
| Status of This Memo | Status of This Memo | |||
| 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 April 17, 2015. | This Internet-Draft will expire on April 26, 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 | |||
| skipping to change at page 2, line 17 ¶ | skipping to change at page 2, line 17 ¶ | |||
| 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. Intended Audience and Applicability Statement . . . . . . . . 4 | 2. Intended Audience and Applicability Statement . . . . . . . . 4 | |||
| 2.1. Security Services . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Security Services . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Unauthenticated TLS . . . . . . . . . . . . . . . . . . . 5 | 2.2. Unauthenticated TLS . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Conventions used in this document . . . . . . . . . . . . . . 5 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. General Recommendations . . . . . . . . . . . . . . . . . . . 6 | 4. General Recommendations . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.1. Protocol Versions . . . . . . . . . . . . . . . . . . . . 6 | 4.1. Protocol Versions . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.1.1. SSL/TLS Protocol Versions . . . . . . . . . . . . . . 6 | 4.1.1. SSL/TLS Protocol Versions . . . . . . . . . . . . . . 6 | |||
| 4.1.2. DTLS Protocol Versions . . . . . . . . . . . . . . . 7 | 4.1.2. DTLS Protocol Versions . . . . . . . . . . . . . . . 7 | |||
| 4.1.3. Fallback to Earlier Versions . . . . . . . . . . . . 7 | 4.1.3. Fallback to Lower Versions . . . . . . . . . . . . . 7 | |||
| 4.2. Strict TLS . . . . . . . . . . . . . . . . . . . . . . . 7 | 4.2. Strict TLS . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4.3. Compression . . . . . . . . . . . . . . . . . . . . . . . 8 | 4.3. Compression . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4.4. TLS Session Resumption . . . . . . . . . . . . . . . . . 8 | 4.4. TLS Session Resumption . . . . . . . . . . . . . . . . . 9 | |||
| 4.5. TLS Renegotiation . . . . . . . . . . . . . . . . . . . . 9 | 4.5. TLS Renegotiation . . . . . . . . . . . . . . . . . . . . 9 | |||
| 4.6. Server Name Indication . . . . . . . . . . . . . . . . . 9 | 4.6. Server Name Indication . . . . . . . . . . . . . . . . . 10 | |||
| 5. Recommendations: Cipher Suites . . . . . . . . . . . . . . . 9 | 5. Recommendations: Cipher Suites . . . . . . . . . . . . . . . 10 | |||
| 5.1. General Guidelines . . . . . . . . . . . . . . . . . . . 10 | 5.1. General Guidelines . . . . . . . . . . . . . . . . . . . 10 | |||
| 5.2. Recommended Cipher Suites . . . . . . . . . . . . . . . . 11 | 5.2. Recommended Cipher Suites . . . . . . . . . . . . . . . . 11 | |||
| 5.3. Cipher Suite Negotiation Details . . . . . . . . . . . . 11 | 5.3. Cipher Suite Negotiation Details . . . . . . . . . . . . 12 | |||
| 5.4. Public Key Length . . . . . . . . . . . . . . . . . . . . 12 | 5.4. Public Key Length . . . . . . . . . . . . . . . . . . . . 12 | |||
| 5.5. Modular vs. Elliptic Curve DH Cipher Suites . . . . . . . 12 | 5.5. Modular vs. Elliptic Curve DH Cipher Suites . . . . . . . 13 | |||
| 5.6. Truncated HMAC . . . . . . . . . . . . . . . . . . . . . 13 | 5.6. Truncated HMAC . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | |||
| 7.1. Host Name Validation . . . . . . . . . . . . . . . . . . 14 | 7.1. Host Name Validation . . . . . . . . . . . . . . . . . . 14 | |||
| 7.2. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 7.2. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 7.3. Forward Secrecy . . . . . . . . . . . . . . . . . . . . . 14 | 7.3. Forward Secrecy . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 7.4. Diffie-Hellman Exponent Reuse . . . . . . . . . . . . . . 15 | 7.4. Diffie-Hellman Exponent Reuse . . . . . . . . . . . . . . 16 | |||
| 7.5. Certificate Revocation . . . . . . . . . . . . . . . . . 16 | 7.5. Certificate Revocation . . . . . . . . . . . . . . . . . 16 | |||
| 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 | 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 17 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 17 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 17 | 9.2. Informative References . . . . . . . . . . . . . . . . . 18 | |||
| Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 20 | Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 21 | |||
| A.1. draft-ietf-uta-tls-bcp-05 . . . . . . . . . . . . . . . . 20 | A.1. draft-ietf-uta-tls-bcp-06 . . . . . . . . . . . . . . . . 21 | |||
| A.2. draft-ietf-uta-tls-bcp-04 . . . . . . . . . . . . . . . . 20 | A.2. draft-ietf-uta-tls-bcp-05 . . . . . . . . . . . . . . . . 21 | |||
| A.3. draft-ietf-uta-tls-bcp-03 . . . . . . . . . . . . . . . . 20 | A.3. draft-ietf-uta-tls-bcp-04 . . . . . . . . . . . . . . . . 21 | |||
| A.4. draft-ietf-uta-tls-bcp-02 . . . . . . . . . . . . . . . . 20 | A.4. draft-ietf-uta-tls-bcp-03 . . . . . . . . . . . . . . . . 21 | |||
| A.5. draft-ietf-tls-bcp-01 . . . . . . . . . . . . . . . . . . 21 | A.5. draft-ietf-uta-tls-bcp-02 . . . . . . . . . . . . . . . . 21 | |||
| A.6. draft-ietf-tls-bcp-00 . . . . . . . . . . . . . . . . . . 21 | A.6. draft-ietf-tls-bcp-01 . . . . . . . . . . . . . . . . . . 22 | |||
| A.7. draft-sheffer-tls-bcp-02 . . . . . . . . . . . . . . . . 21 | A.7. draft-ietf-tls-bcp-00 . . . . . . . . . . . . . . . . . . 22 | |||
| A.8. draft-sheffer-tls-bcp-01 . . . . . . . . . . . . . . . . 21 | A.8. draft-sheffer-tls-bcp-02 . . . . . . . . . . . . . . . . 22 | |||
| A.9. draft-sheffer-tls-bcp-00 . . . . . . . . . . . . . . . . 22 | A.9. draft-sheffer-tls-bcp-01 . . . . . . . . . . . . . . . . 22 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | A.10. draft-sheffer-tls-bcp-00 . . . . . . . . . . . . . . . . 23 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | ||||
| 1. Introduction | 1. Introduction | |||
| Transport Layer Security (TLS) and Datagram Transport Security Layer | Transport Layer Security (TLS) [RFC5246] and Datagram Transport | |||
| (DTLS) are widely used to protect data exchanged over application | Security Layer (DTLS) [RFC6347] are widely used to protect data | |||
| protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the | exchanged over application protocols such as HTTP, SMTP, IMAP, POP, | |||
| last few years, several serious attacks on TLS have emerged, | SIP, and XMPP. Over the last few years, several serious attacks on | |||
| including attacks on its most commonly used cipher suites and modes | TLS have emerged, including attacks on its most commonly used cipher | |||
| of operation. For instance, both the AES-CBC and RC4 encryption | suites and modes of operation. For instance, both the AES-CBC | |||
| algorithms, which together comprise most current usage, have been | [RFC3602] and RC4 [I-D.ietf-tls-prohibiting-rc4] encryption | |||
| attacked in the context of TLS. A companion document | algorithms, which together are the most widely deployed ciphers, have | |||
| been attacked in the context of TLS. A companion document | ||||
| [I-D.ietf-uta-tls-attacks] provides detailed information about these | [I-D.ietf-uta-tls-attacks] 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. Note that | need updated guidance on how TLS can be used securely. This document | |||
| this document provides guidance for deployed services as well as | provides guidance for deployed services as well as for software | |||
| software implementations, assuming the implementer expects his or her | implementations, assuming the implementer expects his or her code to | |||
| code to be deployed in environments defined in the following section. | be deployed in environments defined in the following section. In | |||
| In fact, this document calls for the deployment of algorithms that | fact, this document calls for the deployment of algorithms that are | |||
| 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 confidentiality and data integrity | deployers who wish to add authentication (be it one-way only or | |||
| protection to their communications. In many (but not all) cases | mutual), confidentiality, and data integrity protection to their | |||
| authentication is also desired. This document does not address the | communications. | |||
| rare deployment scenarios where no confidentiality is 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. | |||
| Unless noted otherwise, these recommendations apply to both TLS and | Unless noted otherwise, these recommendations apply to both TLS and | |||
| DTLS. TLS 1.3, when it is standardized and deployed in the field, | DTLS. TLS 1.3, when it is standardized and deployed in the field, | |||
| should resolve the current vulnerabilities while providing | should resolve the current vulnerabilities while providing | |||
| significantly better functionality and will very likely obsolete this | significantly better functionality. It will very likely obsolete | |||
| document. | this document. | |||
| These are minimum recommendations for the use of TLS for the | These are minimum recommendations for the use of TLS for the | |||
| specified audience. Individual specifications may have stricter | specified audience. Individual specifications can have stricter | |||
| requirements related to one or more aspects of the protocol, based on | requirements related to one or more aspects of the protocol, based on | |||
| their particular circumstances. When that is the case, implementers | their particular circumstances (e.g., for use with a particular | |||
| MUST adhere to those stricter requirements. | application protocol). When that is the case, implementers are | |||
| advised to 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. Intended Audience and Applicability Statement | 2. Intended Audience and Applicability Statement | |||
| The deployment recommendations address the operators of application | The deployment recommendations of this document address the operators | |||
| layer services that are most commonly used on the Internet, | of application layer services that are most commonly used on the | |||
| including, but not limited to: | Internet, including, but not limited to: | |||
| o Operators of WWW servers that wish to protect HTTP with TLS. | o Operators of WWW servers that wish to protect HTTP with TLS. | |||
| o Operators of email servers who wish to protect the application- | o Operators of email servers 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). | |||
| 2.1. Security Services | 2.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: | |||
| o Confidentiality: all (payload) communication is encrypted with the | o Confidentiality: all (payload) communication is encrypted with the | |||
| goal that no party should be able to decrypt it except the | goal that no party should be able to decrypt it except the | |||
| intended receiver. | intended receiver. | |||
| o Data integrity: any changes made to the communication in transit | o Data integrity: any changes made to the communication in transit | |||
| are detectable by the receiver. | are detectable by the receiver. | |||
| o Authentication: this means that an end-point of the TLS | o Authentication: an end-point of the TLS communication is | |||
| communication is authenticated as the intended entity to | authenticated as the intended entity to communicate with. TLS | |||
| communicate with. TLS allows to authenticate one or both end- | enables authentication of one or both end-points in the | |||
| points in the communication. Some TLS usage scenarios do not | communication. Some TLS usage scenarios do not require | |||
| require authentication, and are further discussed in Section 2.2. | authentication. They are not in the scope of this document. We | |||
| discuss them under Section 2.2. | ||||
| Deployers MUST verify that they do not need one of the above security | If deployers deviate from the recommendations given in this document, | |||
| services if they deviate from the recommendations given in this | they MUST verify that they do not need one of the foregoing security | |||
| document. | 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. While this includes the | enforce secrecy of the data-in-transit. | |||
| majority of the TLS use cases, there are some notable exceptions. | ||||
| This document assumes that data integrity protection is always one of | This document also assumes that data integrity protection is always | |||
| the goals of a deployment. In cases when integrity is not required, | one of the goals of a deployment. In cases where integrity is not | |||
| it does not make sense to employ TLS in the first place. There are | required, it does not make sense to employ TLS in the first place. | |||
| attacks against confidentiality-only protection that utilize the lack | There are attacks against confidentiality-only protection that | |||
| of integrity to also break confidentiality (see e.g. [DegabrieleP07] | utilize the lack of integrity to also break confidentiality (see for | |||
| in the context of IPsec). | instance [DegabrieleP07] in the context of IPsec). | |||
| The intended audience covers those services that are most commonly | The intended audience covers those services that are most commonly | |||
| used on the Internet. Typically, all communication between clients | used on the Internet. Typically, all communication between TLS | |||
| and servers requires all three of the above security services. This | clients and TLS servers requires all three of the above security | |||
| is particularly true where clients are user agents like Web browsers | services. This is particularly true where TLS clients are user | |||
| or email software. | agents like Web browsers or email software. | |||
| This document does not address the rare deployment scenarios where | This document does not address the rarer deployment scenarios where | |||
| one of the above three properties is not desired, with the exception | one of the above three properties is not desired, such as the use | |||
| of the use case described in Section 2.2 below. An example of an | case described under Section 2.2 below. Another example of an | |||
| audience not needing confidentiality is the following: a monitored | audience not needing confidentiality is the following: a monitored | |||
| network where the authorities in charge of the respective traffic | network where the authorities in charge of the respective traffic | |||
| domain require full access to unencrypted (plaintext) traffic, and | domain require full access to unencrypted (plaintext) traffic, and | |||
| where users collaborate and send their traffic in the clear. | where users collaborate and send their traffic in the clear. | |||
| 2.2. Unauthenticated TLS | 2.2. Unauthenticated TLS | |||
| Several important applications use TLS to protect data between a | Several important applications use TLS to protect data between a TLS | |||
| client and a server, but do so without the client verifying the | client and a TLS server, but do so without the TLS client verifying | |||
| server's certificate. The reader is referred to | the server's certificate. The reader is referred to | |||
| [I-D.dukhovni-smtp-opportunistic-tls] for additional details and an | [I-D.ietf-dane-smtp-with-dane] for an example and an explanation of | |||
| explanation why this insecure practice is still common and likely to | why this less secure practice will likely remain common in the | |||
| remain so for a while. | context of SMTP (especially for MTA-to-MTA communications). The | |||
| practice is also encountered in similar contexts such as server-to- | ||||
| server XMPP traffic. | ||||
| In many of these scenarios the actual use of TLS is optional, i.e. | In some of these scenarios the use of TLS is optional, i.e. the | |||
| the client decides dynamically ("opportunistically") whether to use | client decides dynamically ("opportunistically") whether to use TLS | |||
| TLS with a particular server or to connect in the clear. | with a particular server or to connect in the clear. (Opportunistic | |||
| Opportunistic encryption is described at length in Sec. 2 of | encryption is described at length in Section 2 of | |||
| [I-D.farrelll-mpls-opportunistic-encrypt]. | [I-D.farrelll-mpls-opportunistic-encrypt].) In other scenarios, the | |||
| use of TLS is required but certificates are not always checked (e.g., | ||||
| this is often the case on the XMPP network, where multi-tenant | ||||
| hosting environments make it difficult for operators to obtain proper | ||||
| certificates for all of the domains they service). | ||||
| Despite the threat model differing from "standard" authenticated | It can be argued that the recommendations provided in this document | |||
| usage of TLS, the recommendations in this document are applicable to | ought to apply equally to unauthenticated TLS as well as | |||
| unauthenticated uses of TLS, with the obvious exception of peer | authenticated TLS. That would keep TLS implementations and | |||
| authentication. | deployments in sync, which is a desirable property given that servers | |||
| can be used simultaneously for unauthenticated TLS and for | ||||
| authenticated TLS (indeed, often a server will not know whether a | ||||
| client might attempt authenticated or unauthenticated TLS). On the | ||||
| other hand, it has been argued that some of the recommendations in | ||||
| this document might be too strict for unauthenticated scenarios and | ||||
| that any security is better than no security at all (i.e., sending | ||||
| traffic in the clear), even if it means deploying outdated protocol | ||||
| versions and ciphers in unauthenticated scenarios. The sense of the | ||||
| UTA Working Group was to complete work on this document about | ||||
| authenticated TLS and to initiate work on a separate document about | ||||
| unauthenticated TLS. | ||||
| 3. Conventions used in this document | In summary: this document does not apply to unauthenticated TLS use | |||
| cases. | ||||
| 3. Terminology | ||||
| A number of security-related terms in this document are used in the | ||||
| sense defined in [RFC4949]. | ||||
| 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]. | |||
| 4. 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. | |||
| skipping to change at page 6, line 28 ¶ | skipping to change at page 6, line 47 ¶ | |||
| versions: | versions: | |||
| o Implementations MUST NOT negotiate SSL version 2. | o Implementations MUST NOT negotiate SSL version 2. | |||
| Rationale: Today, SSLv2 is considered insecure [RFC6176]. | Rationale: Today, SSLv2 is considered insecure [RFC6176]. | |||
| o Implementations MUST NOT negotiate SSL version 3. | o Implementations MUST NOT negotiate SSL version 3. | |||
| Rationale: SSLv3 [RFC6101] was an improvement over SSLv2 and | Rationale: SSLv3 [RFC6101] was an improvement over SSLv2 and | |||
| plugged some significant security holes, but did not support | plugged some significant security holes, but did not support | |||
| strong cipher suites. In addition, SSLv3 does not support TLS | strong cipher suites. SSLv3 does not support TLS extensions, some | |||
| extensions, some of which (e.g. renegotiation_info) are security- | of which (e.g. renegotiation_info) are security-critical. In | |||
| critical. | addition, with the emergence of the POODLE attack [POODLE], SSLv3 | |||
| is now widely recognized as fundamentally insecure. | ||||
| o Implementations SHOULD NOT negotiate TLS version 1.0 [RFC2246]. | o Implementations SHOULD NOT negotiate TLS version 1.0 [RFC2246]. | |||
| Rationale: TLS 1.0 (published in 1999) does not support many | Rationale: TLS 1.0 (published in 1999) does not support many | |||
| modern, strong cipher suites. | modern, strong cipher suites. | |||
| o Implementations MAY negotiate TLS version 1.1 [RFC4346]. | o Implementations MAY negotiate TLS version 1.1 [RFC4346]. | |||
| Rationale: TLS 1.1 (published in 2006) is a security improvement | Rationale: TLS 1.1 (published in 2006) is a security improvement | |||
| over TLS 1.0, but still does not support certain stronger cipher | over TLS 1.0, but still does not support certain stronger cipher | |||
| skipping to change at page 7, line 11 ¶ | skipping to change at page 7, line 30 ¶ | |||
| 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 5.2 below) are only | recommended by this document (Section 5.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. 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. | |||
| 4.1.2. DTLS Protocol Versions | 4.1.2. DTLS Protocol Versions | |||
| DTLS is an adaptation of TLS for UDP datagrams. | DTLS, an adaptation of TLS for UDP datagrams, was introduced when TLS | |||
| 1.1 was published. The following are the recommendations with | ||||
| The following are the recommendations with respect to DTLS: | respect to DTLS: | |||
| o Implementations MAY negotiate DTLS version 1.0 [RFC4347]. | o Implementations MAY negotiate DTLS version 1.0 [RFC4347]. | |||
| o Implementations MUST negotiate DTLS version 1.2 [RFC6347]. | Version 1.0 of DTLS correlates to version 1.1 of TLS (see above). | |||
| Rationale: DTLS is an adaptation of TLS for UDP that was introduced | o Implementations MUST support, and prefer to negotiate, DTLS | |||
| when TLS 1.1 was published. Version 1.0 correlates to TLS 1.1 and | version 1.2 [RFC6347]. | |||
| Version 1.2 correlates to TLS 1.2. There is no Version 1.1. | ||||
| Version 1.2 of DTLS correlates to Version 1.2 of TLS 1.2 (see | ||||
| above). (There is no Version 1.1 of DTLS.) | ||||
| Note: DTLS and TLS are nearly identical. The most notable exception | Note: DTLS and TLS are nearly identical. The most notable exception | |||
| is that RC4, which is a stream-based bulk encryption algorithm, | is that RC4, which is a stream-based bulk encryption algorithm, | |||
| cannot be supported by DTLS. | cannot be supported by DTLS. | |||
| 4.1.3. Fallback to Earlier Versions | 4.1.3. Fallback to Lower Versions | |||
| Clients that "fallback" to lower versions of the protocol after the | Clients that "fallback" to lower versions of the protocol after the | |||
| server rejects higher versions of the protocol MUST NOT fallback to | server rejects higher versions of the protocol MUST NOT fallback to | |||
| SSLv3. | SSLv3. | |||
| 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 | |||
| skipping to change at page 8, line 7 ¶ | skipping to change at page 8, line 28 ¶ | |||
| 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 In many application protocols, clients can be configured to use | |||
| TLS even if the server has not advertised that TLS is mandatory or | TLS even if the server has not advertised that TLS is mandatory or | |||
| even supported (e.g., this is often the case in messaging | even supported (e.g., this is often the case in messaging | |||
| protocols such as IMAP and XMPP). Application clients SHOULD use | protocols such as IMAP and XMPP). Application clients SHOULD use | |||
| TLS by default, and disable this default only through explicit | TLS by default, and disable this default only through explicit | |||
| configration by the user. | configuration by the user. | |||
| 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 9, line 37 ¶ | skipping to change at page 10, line 13 ¶ | |||
| during renegotiation. | during renegotiation. | |||
| 4.6. Server Name Indication | 4.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 grain | servers on a single address, and therefore enables fine-grained | |||
| security for these virtual servers, by allowing each one to have its | security for these virtual servers, by allowing each one to have its | |||
| own certificate. | own certificate. | |||
| 5. 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, some available cipher | |||
| suites are insecure, and so misconfiguration can easily result in | suites are insecure, some do not provide the targeted security | |||
| reduced security. This section includes recommendations on the | services, and some no longer provide enough security. Incorrectly | |||
| selection and negotiation of cipher suites. | configuring a server leads to no or reduced security. This section | |||
| includes recommendations on the selection and negotiation of cipher | ||||
| suites. | ||||
| 5.1. General Guidelines | 5.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 | In other words, as time progresses, algorithms that were once | |||
| considered strong but are now weak, need to be phased out over time | considered strong but are now weak, need to be phased out over time | |||
| and replaced with more secure cipher suites to ensure that desired | and replaced with more secure cipher suites to ensure that desired | |||
| security properties still hold. SSL/TLS has been in existence for | security properties still hold. SSL/TLS has been in existence for | |||
| almost 20 years at this point and this section provides some much | almost 20 years at this point and this section provides some much | |||
| needed recommendations concerning cipher suite selection: | needed recommendations concerning cipher suite selection: | |||
| skipping to change at page 10, line 37 ¶ | skipping to change at page 11, line 12 ¶ | |||
| note that this guideline does not apply to DTLS, which | note that this guideline does not apply to DTLS, which | |||
| specifically forbids the use of RC4. | specifically forbids the use of RC4. | |||
| o Implementations MUST NOT negotiate cipher suites offering only so- | o Implementations MUST NOT negotiate cipher suites offering only so- | |||
| called "export-level" encryption (including algorithms with 40 | called "export-level" encryption (including algorithms with 40 | |||
| bits or 56 bits of security). | bits or 56 bits of security). | |||
| Rationale: These cipher suites are deliberately "dumbed down" and | Rationale: These cipher suites are deliberately "dumbed down" and | |||
| are very easy to break. | are very easy to break. | |||
| o Applications MUST NOT negotiate cipher suites of less than 112 | o Implementations MUST NOT negotiate cipher suites offering less | |||
| bits of security. | than 112 bits of security, including the so-called "export-level" | |||
| encryption (which provide 40 or 56 bits of security). | ||||
| Rationale: Based on [RFC3766], at least 112 bits of security is | ||||
| needed. 40-bit and 56-bit security are considered insecure today. | ||||
| TLS 1.1 and 1.2 never negotiate 40-bit or 56-bit export ciphers. | ||||
| 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 | |||
| skipping to change at page 11, line 25 ¶ | skipping to change at page 12, line 4 ¶ | |||
| which attacks can be successful. | which attacks can be successful. | |||
| 5.2. Recommended Cipher Suites | 5.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 | |||
| It is noted that those cipher suites are supported only in TLS 1.2 | These cipher suites are supported only in TLS 1.2 since they are | |||
| since they are authenticated encryption (AEAD) algorithms [RFC5116]. | authenticated encryption (AEAD) algorithms [RFC5116]. | |||
| Typically, in order to prefer these suites, the order of suites needs | ||||
| to be explicitly configured in server software. | ||||
| [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". | |||
| 5.3. Cipher Suite Negotiation Details | 5.3. Cipher Suite Negotiation Details | |||
| skipping to change at page 14, line 27 ¶ | skipping to change at page 14, line 52 ¶ | |||
| 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. | |||
| If the host name is discovered indirectly and in an insecure manner | If the host name is discovered indirectly and in an insecure manner | |||
| (e.g., by an insecure DNS query for an MX or SRV record), it SHOULD | (e.g., by an insecure DNS query for an MX or SRV record), it SHOULD | |||
| NOT be used as a reference identifier [RFC6125] even when it matches | NOT be used as a reference identifier [RFC6125] even when it matches | |||
| the presented certificate. This proviso does not apply if the host | the presented certificate. This proviso does not apply if the host | |||
| name is discovered securely (for further discussion, see for example | name is discovered securely (for further discussion, see for example | |||
| [I-D.ietf-dane-srv] and [I-D.ietf-dane-smtp]). | [I-D.ietf-dane-srv] and [I-D.ietf-dane-smtp-with-dane]). | |||
| 7.2. AES-GCM | 7.2. AES-GCM | |||
| Section 5.2 above recommends the use of the AES-GCM authenticated | Section 5.2 above recommends the use of the AES-GCM authenticated | |||
| encryption algorithm. Please refer to [RFC5246], Sec. 11 for general | encryption algorithm. Please refer to [RFC5246], Sec. 11 for general | |||
| security considerations when using TLS 1.2, and to [RFC5288], Sec. 6 | security considerations when using TLS 1.2, and to [RFC5288], Sec. 6 | |||
| for security considerations that apply specifically to AES-GCM when | for security considerations that apply specifically to AES-GCM when | |||
| used with TLS. | used with TLS. | |||
| 7.3. Forward Secrecy | 7.3. Forward Secrecy | |||
| skipping to change at page 15, line 34 ¶ | skipping to change at page 16, line 8 ¶ | |||
| derive session keys. The Diffie-Hellman scheme has both parties | derive session keys. The Diffie-Hellman scheme has both parties | |||
| maintain private secrets and send parameters over the network as | maintain private secrets and send parameters over the network as | |||
| modular powers over certain cyclic groups. The properties of the so- | modular powers over certain cyclic groups. The properties of the so- | |||
| called Discrete Logarithm Problem (DLP) allow to derive the session | called Discrete Logarithm Problem (DLP) allow to derive the session | |||
| keys without an eavesdropper being able to do so. There is currently | keys without an eavesdropper being able to do so. There is currently | |||
| no known attack against DLP if sufficiently large parameters are | no known attack against DLP if sufficiently large parameters are | |||
| chosen. 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. | |||
| 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 | |||
| skipping to change at page 16, line 7 ¶ | skipping to change at page 16, line 30 ¶ | |||
| 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. | |||
| 7.5. Certificate Revocation | 7.5. Certificate Revocation | |||
| Unfortunately there is currently no effective, Internet-scale | Unfortunately, no mechanism exists at this time that we can recommend | |||
| mechanism to effect certificate revocation: | as a complete and efficient solution for the problem of checking the | |||
| revocation status of common public key certificates (a.k.a. PKIX | ||||
| certificates, [RFC5280]). The current state of the art is as | ||||
| follows: | ||||
| o Certificate Revocation Lists (CRLs) are non-scalable and therefore | o Certificate Revocation Lists (CRLs) are not 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 | |||
| do not abort the TLS connection if the OCSP server does not | do not abort the TLS connection if the OCSP server does not | |||
| respond. | respond. | |||
| o OCSP stapling (Sec. 8 of [RFC6066]) resolves the operational | o OCSP stapling (Section 8 of [RFC6066]) resolves the operational | |||
| issues with OCSP, but is still ineffective in the presence of a | issues with OCSP, but is still ineffective in the presence of a | |||
| MITM attacker because the attacker can simply ignore the client's | MITM attacker because the attacker can simply ignore the client's | |||
| request for a stapled OCSP response. | request for a stapled OCSP response. | |||
| 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. [RFC6961] | intermediate certificates used in a certificate chain. [RFC6961] | |||
| addresses this shortcoming, but is a recent addition without much | addresses this shortcoming, but is a recent addition without much | |||
| deployment. | deployment. | |||
| 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 | With regard to PKIX certificates, servers SHOULD support OCSP and | |||
| a "must staple" mechanism similar to HSTS, would finally resolve this | OCSP stapling, including the OCSP stapling extension defined in | |||
| problem; in particular when used together with the extension defined | [RFC6961], as a best practice given the current state of the art and | |||
| in [RFC6961]. But such a mechanism has not been standardized yet. | as a foundation for a possible future solution. | |||
| The foregoing considerations do not apply to DANE certificates | ||||
| [RFC6698], since they do not require a revocation mechanism. | ||||
| 8. Acknowledgments | 8. Acknowledgments | |||
| We would like to thank Uri Blumenthal, Viktor Dukhovni, Stephen | We would like to thank Uri Blumenthal, Viktor Dukhovni, Stephen | |||
| Farrell, Simon Josefsson, Watson Ladd, Orit Levin, Johannes Merkle, | Farrell, Simon Josefsson, Watson Ladd, Orit Levin, Johannes Merkle, | |||
| Bodo Moeller, Yoav Nir, Kenny Paterson, Patrick Pelletier, Tom | Bodo Moeller, Yoav Nir, Kenny Paterson, Patrick Pelletier, Tom | |||
| Ritter, Rich Salz, Sean Turner, Aaron Zauner for their review and | Ritter, Rich Salz, Sean Turner, and Aaron Zauner for their feedback | |||
| improvements. Thanks to Brian Smith whose "browser cipher suites" | and suggested improvements. Thanks to Brian Smith whose "browser | |||
| page is a great resource. Finally, thanks to all others who | cipher suites" page is a great resource. Finally, thanks to all | |||
| commented on the TLS, UTA and other lists and are not mentioned here | others who commented on the TLS, UTA and other lists and are not | |||
| by name. | mentioned here by name. | |||
| 9. References | 9. References | |||
| 9.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. | |||
| [RFC3766] Orman, H. and P. Hoffman, "Determining Strengths For | ||||
| Public Keys Used For Exchanging Symmetric Keys", BCP 86, | ||||
| 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. | |||
| Moeller, "Elliptic Curve Cryptography (ECC) Cipher Suites | Moeller, "Elliptic Curve Cryptography (ECC) Cipher Suites | |||
| for Transport Layer Security (TLS)", RFC 4492, May 2006. | for Transport Layer Security (TLS)", RFC 4492, May 2006. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, August 2008. | (TLS) Protocol Version 1.2", RFC 5246, August 2008. | |||
| [RFC5288] Salowey, J., Choudhury, A., and D. McGrew, "AES Galois | [RFC5288] Salowey, J., Choudhury, A., and D. McGrew, "AES Galois | |||
| Counter Mode (GCM) Cipher Suites for TLS", RFC 5288, | Counter Mode (GCM) Cipher Suites for TLS", RFC 5288, | |||
| August 2008. | August 2008. | |||
| [RFC5289] Rescorla, E., "TLS Elliptic Curve Cipher Suites with SHA- | [RFC5289] Rescorla, E., "TLS Elliptic Curve Cipher Suites with | |||
| 256/384 and AES Galois Counter Mode (GCM)", RFC 5289, | SHA-256/384 and AES Galois Counter Mode (GCM)", RFC 5289, | |||
| August 2008. | August 2008. | |||
| [RFC5746] Rescorla, E., Ray, M., Dispensa, S., and N. Oskov, | [RFC5746] Rescorla, E., Ray, M., Dispensa, S., and N. Oskov, | |||
| "Transport Layer Security (TLS) Renegotiation Indication | "Transport Layer Security (TLS) Renegotiation Indication | |||
| Extension", RFC 5746, February 2010. | Extension", RFC 5746, February 2010. | |||
| [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 | |||
| skipping to change at page 18, line 16 ¶ | skipping to change at page 18, line 48 ¶ | |||
| Degabriele, J. and K. Paterson, "Attacking the IPsec | Degabriele, J. and K. Paterson, "Attacking the IPsec | |||
| standards in encryption-only configurations", 2007, | standards in encryption-only configurations", 2007, | |||
| <http://dx.doi.org/10.1109/SP.2007.8>. | <http://dx.doi.org/10.1109/SP.2007.8>. | |||
| [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.dukhovni-smtp-opportunistic-tls] | ||||
| Dukhovni, V. and W. Hardaker, "SMTP security via | ||||
| opportunistic DANE TLS", draft-dukhovni-smtp- | ||||
| opportunistic-tls-01 (work in progress), July 2013. | ||||
| [I-D.farrelll-mpls-opportunistic-encrypt] | [I-D.farrelll-mpls-opportunistic-encrypt] | |||
| Farrel, A. and S. Farrell, "Opportunistic Encryption in | Farrel, A. and S. Farrell, "Opportunistic Encryption in | |||
| MPLS Networks", draft-farrelll-mpls-opportunistic- | MPLS Networks", draft-farrelll-mpls-opportunistic- | |||
| encrypt-02 (work in progress), February 2014. | encrypt-02 (work in progress), February 2014. | |||
| [I-D.ietf-dane-smtp] | [I-D.ietf-dane-smtp-with-dane] | |||
| Finch, T., "Secure SMTP using DNS-Based Authentication of | Dukhovni, V. and W. Hardaker, "SMTP security via | |||
| Named Entities (DANE) TLSA records.", draft-ietf-dane- | opportunistic DANE TLS", draft-ietf-dane-smtp-with-dane-10 | |||
| smtp-01 (work in progress), February 2013. | (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-07 (work in | with SRV Records", draft-ietf-dane-srv-06 (work in | |||
| progress), July 2014. | progress), June 2014. | |||
| [I-D.ietf-tls-prohibiting-rc4] | [I-D.ietf-tls-prohibiting-rc4] | |||
| Popov, A., "Prohibiting RC4 Cipher Suites", draft-ietf- | Popov, A., "Prohibiting RC4 Cipher Suites", draft-ietf- | |||
| tls-prohibiting-rc4-00 (work in progress), July 2014. | tls-prohibiting-rc4-01 (work in progress), October 2014. | |||
| [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-04 (work in progress), September 2014. | 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>. | |||
| [POODLE] Moeller, B., Duong, T., and K. Kotowicz, "This POODLE | ||||
| Bites: Exploiting the SSL 3.0 Fallback", 2014, <https:// | ||||
| 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>. | |||
| [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. | |||
| [RFC3602] Frankel, S., Glenn, R., and S. Kelly, "The AES-CBC Cipher | ||||
| Algorithm and Its Use with IPsec", RFC 3602, September | ||||
| 2003. | ||||
| [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 | [RFC4347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | |||
| Security", RFC 4347, April 2006. | Security", RFC 4347, April 2006. | |||
| [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", RFC | [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", RFC | |||
| 4949, August 2007. | 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. | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | ||||
| Housley, R., and W. Polk, "Internet X.509 Public Key | ||||
| Infrastructure Certificate and Certificate Revocation List | ||||
| (CRL) Profile", RFC 5280, May 2008. | ||||
| [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. | |||
| [RFC6101] Freier, A., Karlton, P., and P. Kocher, "The Secure | [RFC6101] Freier, A., Karlton, P., and P. Kocher, "The Secure | |||
| Sockets Layer (SSL) Protocol Version 3.0", RFC 6101, | Sockets Layer (SSL) Protocol Version 3.0", RFC 6101, | |||
| August 2011. | August 2011. | |||
| [RFC6460] Salter, M. and R. Housley, "Suite B Profile for Transport | [RFC6460] Salter, M. and R. Housley, "Suite B Profile for Transport | |||
| Layer Security (TLS)", RFC 6460, January 2012. | Layer Security (TLS)", RFC 6460, January 2012. | |||
| [RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication | ||||
| of Named Entities (DANE) Transport Layer Security (TLS) | ||||
| Protocol: TLSA", RFC 6698, August 2012. | ||||
| [RFC6797] Hodges, J., Jackson, C., and A. Barth, "HTTP Strict | [RFC6797] Hodges, J., Jackson, C., and A. Barth, "HTTP Strict | |||
| Transport Security (HSTS)", RFC 6797, November 2012. | Transport Security (HSTS)", RFC 6797, November 2012. | |||
| [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. | |||
| skipping to change at page 20, line 21 ¶ | skipping to change at page 21, 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-uta-tls-bcp-05 | A.1. draft-ietf-uta-tls-bcp-06 | |||
| o Undo unauthenticated TLS, following another long thread on the | ||||
| list. | ||||
| A.2. draft-ietf-uta-tls-bcp-05 | ||||
| o Lots of comments by Sean Turner. | o Lots of comments by Sean Turner. | |||
| o Unauthenticated TLS, following a long thread on the list. | o Unauthenticated TLS, following a long thread on the list. | |||
| A.2. draft-ietf-uta-tls-bcp-04 | A.3. draft-ietf-uta-tls-bcp-04 | |||
| o Some cleanup, and input from TLS WG discussion on applicability. | o Some cleanup, and input from TLS WG discussion on applicability. | |||
| A.3. draft-ietf-uta-tls-bcp-03 | A.4. draft-ietf-uta-tls-bcp-03 | |||
| o Disallow truncated HMAC. | o Disallow truncated HMAC. | |||
| o Applicability to DTLS. | o Applicability to DTLS. | |||
| o Some more text restructuring. | o Some more text restructuring. | |||
| o Host name validation is sometimes irrelevant. | o Host name validation is sometimes irrelevant. | |||
| o HSTS: MUST implement, SHOULD deploy. | o HSTS: MUST implement, SHOULD deploy. | |||
| o Session identities are not protected, only tickets are. | o Session identities are not protected, only tickets are. | |||
| o Clarified the target audience. | o Clarified the target audience. | |||
| A.4. draft-ietf-uta-tls-bcp-02 | A.5. 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.5. draft-ietf-tls-bcp-01 | A.6. 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.6. draft-ietf-tls-bcp-00 | A.7. draft-ietf-tls-bcp-00 | |||
| o Initial WG version, with only updated references. | o Initial WG version, with only updated references. | |||
| A.7. draft-sheffer-tls-bcp-02 | A.8. 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.8. draft-sheffer-tls-bcp-01 | A.9. 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.9. draft-sheffer-tls-bcp-00 | A.10. 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 | |||
| End of changes. 69 change blocks. | ||||
| 158 lines changed or deleted | 222 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/ | ||||