| rfc9325.original | rfc9325.txt | |||
|---|---|---|---|---|
| UTA Working Group Y. Sheffer | Internet Engineering Task Force (IETF) Y. Sheffer | |||
| Internet-Draft Intuit | Request for Comments: 9325 Intuit | |||
| Obsoletes: 7525 (if approved) P. Saint-Andre | BCP: 195 P. Saint-Andre | |||
| Updates: 5288, 6066 (if approved) independent | Obsoletes: 7525 independent | |||
| Intended status: Best Current Practice T. Fossati | Updates: 5288, 6066 T. Fossati | |||
| Expires: 17 February 2023 arm | Category: Best Current Practice ARM Limited | |||
| 16 August 2022 | ISSN: 2070-1721 November 2022 | |||
| Recommendations for Secure Use of Transport Layer Security (TLS) and | Recommendations for Secure Use of Transport Layer Security (TLS) and | |||
| Datagram Transport Layer Security (DTLS) | Datagram Transport Layer Security (DTLS) | |||
| draft-ietf-uta-rfc7525bis-11 | ||||
| Abstract | Abstract | |||
| Transport Layer Security (TLS) and Datagram Transport Layer Security | Transport Layer Security (TLS) and Datagram Transport Layer Security | |||
| (DTLS) are used to protect data exchanged over a wide range of | (DTLS) are used to protect data exchanged over a wide range of | |||
| application protocols, and can also form the basis for secure | application protocols and can also form the basis for secure | |||
| transport protocols. Over the years, the industry has witnessed | transport protocols. Over the years, the industry has witnessed | |||
| several serious attacks on TLS and DTLS, including attacks on the | several serious attacks on TLS and DTLS, including attacks on the | |||
| most commonly used cipher suites and their modes of operation. This | most commonly used cipher suites and their modes of operation. This | |||
| document provides the latest recommendations for ensuring the | document provides the latest recommendations for ensuring the | |||
| security of deployed services that use TLS and DTLS. These | security of deployed services that use TLS and DTLS. These | |||
| recommendations are applicable to the majority of use cases. | recommendations are applicable to the majority of use cases. | |||
| An earlier version of this document was published as RFC 7525 when | RFC 7525, an earlier version of the TLS recommendations, was | |||
| the industry was in the midst of its transition to TLS 1.2. Years | published when the industry was transitioning to TLS 1.2. Years | |||
| later this transition is largely complete and TLS 1.3 is widely | later, this transition is largely complete, and TLS 1.3 is widely | |||
| available. This document updates the guidance given the new | available. This document updates the guidance given the new | |||
| environment and obsoletes RFC 7525. In addition, the document | environment and obsoletes RFC 7525. In addition, this document | |||
| updates RFC 5288 and RFC 6066 in view of recent attacks. | updates RFCs 5288 and 6066 in view of recent attacks. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This memo documents an Internet Best Current Practice. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| BCPs is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 17 February 2023. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9325. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2. Terminology | |||
| 3. General Recommendations . . . . . . . . . . . . . . . . . . . 6 | 3. General Recommendations | |||
| 3.1. Protocol Versions . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Protocol Versions | |||
| 3.1.1. SSL/TLS Protocol Versions . . . . . . . . . . . . . . 6 | 3.1.1. SSL/TLS Protocol Versions | |||
| 3.1.2. DTLS Protocol Versions . . . . . . . . . . . . . . . 8 | 3.1.2. DTLS Protocol Versions | |||
| 3.1.3. Fallback to Lower Versions . . . . . . . . . . . . . 8 | 3.1.3. Fallback to Lower Versions | |||
| 3.2. Strict TLS . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Strict TLS | |||
| 3.3. Compression . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.3. Compression | |||
| 3.3.1. Certificate Compression . . . . . . . . . . . . . . 10 | 3.3.1. Certificate Compression | |||
| 3.4. TLS Session Resumption . . . . . . . . . . . . . . . . . 10 | 3.4. TLS Session Resumption | |||
| 3.5. Renegotiation in TLS 1.2 . . . . . . . . . . . . . . . . 12 | 3.5. Renegotiation in TLS 1.2 | |||
| 3.6. Post-Handshake Authentication . . . . . . . . . . . . . . 12 | 3.6. Post-Handshake Authentication | |||
| 3.7. Server Name Indication (SNI) . . . . . . . . . . . . . . 13 | 3.7. Server Name Indication (SNI) | |||
| 3.8. Application-Layer Protocol Negotiation (ALPN) . . . . . . 13 | 3.8. Application-Layer Protocol Negotiation (ALPN) | |||
| 3.9. Multi-Server Deployment . . . . . . . . . . . . . . . . . 14 | 3.9. Multi-Server Deployment | |||
| 3.10. Zero Round Trip Time (0-RTT) Data in TLS 1.3 . . . . . . 14 | 3.10. Zero Round-Trip Time (0-RTT) Data in TLS 1.3 | |||
| 4. Recommendations: Cipher Suites . . . . . . . . . . . . . . . 15 | 4. Recommendations: Cipher Suites | |||
| 4.1. General Guidelines . . . . . . . . . . . . . . . . . . . 15 | 4.1. General Guidelines | |||
| 4.2. Cipher Suites for TLS 1.2 . . . . . . . . . . . . . . . . 17 | 4.2. Cipher Suites for TLS 1.2 | |||
| 4.2.1. Implementation Details . . . . . . . . . . . . . . . 18 | 4.2.1. Implementation Details | |||
| 4.3. Cipher Suites for TLS 1.3 . . . . . . . . . . . . . . . . 19 | 4.3. Cipher Suites for TLS 1.3 | |||
| 4.4. Limits on Key Usage . . . . . . . . . . . . . . . . . . . 19 | 4.4. Limits on Key Usage | |||
| 4.5. Public Key Length . . . . . . . . . . . . . . . . . . . . 20 | 4.5. Public Key Length | |||
| 4.6. Truncated HMAC . . . . . . . . . . . . . . . . . . . . . 21 | 4.6. Truncated HMAC | |||
| 5. Applicability Statement . . . . . . . . . . . . . . . . . . . 21 | 5. Applicability Statement | |||
| 5.1. Security Services . . . . . . . . . . . . . . . . . . . . 22 | 5.1. Security Services | |||
| 5.2. Opportunistic Security . . . . . . . . . . . . . . . . . 23 | 5.2. Opportunistic Security | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 | 6. IANA Considerations | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | 7. Security Considerations | |||
| 7.1. Host Name Validation . . . . . . . . . . . . . . . . . . 24 | 7.1. Host Name Validation | |||
| 7.2. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 7.2. AES-GCM | |||
| 7.2.1. Nonce Reuse in TLS 1.2 . . . . . . . . . . . . . . . 25 | 7.2.1. Nonce Reuse in TLS 1.2 | |||
| 7.3. Forward Secrecy . . . . . . . . . . . . . . . . . . . . . 25 | 7.3. Forward Secrecy | |||
| 7.4. Diffie-Hellman Exponent Reuse . . . . . . . . . . . . . . 26 | 7.4. Diffie-Hellman Exponent Reuse | |||
| 7.5. Certificate Revocation . . . . . . . . . . . . . . . . . 27 | 7.5. Certificate Revocation | |||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 29 | 8. References | |||
| References . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 | 8.1. Normative References | |||
| Normative References . . . . . . . . . . . . . . . . . . . . . 29 | 8.2. Informative References | |||
| Informative References . . . . . . . . . . . . . . . . . . . . 32 | Appendix A. Differences from RFC 7525 | |||
| Appendix A. Differences from RFC 7525 . . . . . . . . . . . . . 41 | Acknowledgments | |||
| Appendix B. Document History . . . . . . . . . . . . . . . . . . 43 | Authors' Addresses | |||
| B.1. draft-ietf-uta-rfc7525bis-11 . . . . . . . . . . . . . . 43 | ||||
| B.2. draft-ietf-uta-rfc7525bis-10 . . . . . . . . . . . . . . 43 | ||||
| B.3. draft-ietf-uta-rfc7525bis-09 . . . . . . . . . . . . . . 43 | ||||
| B.4. draft-ietf-uta-rfc7525bis-08 . . . . . . . . . . . . . . 44 | ||||
| B.5. draft-ietf-uta-rfc7525bis-07 . . . . . . . . . . . . . . 44 | ||||
| B.6. draft-ietf-uta-rfc7525bis-06 . . . . . . . . . . . . . . 44 | ||||
| B.7. draft-ietf-uta-rfc7525bis-05 . . . . . . . . . . . . . . 44 | ||||
| B.8. draft-ietf-uta-rfc7525bis-04 . . . . . . . . . . . . . . 44 | ||||
| B.9. draft-ietf-uta-rfc7525bis-03 . . . . . . . . . . . . . . 45 | ||||
| B.10. draft-ietf-uta-rfc7525bis-02 . . . . . . . . . . . . . . 45 | ||||
| B.11. draft-ietf-uta-rfc7525bis-01 . . . . . . . . . . . . . . 45 | ||||
| B.12. draft-ietf-uta-rfc7525bis-00 . . . . . . . . . . . . . . 45 | ||||
| B.13. draft-sheffer-uta-rfc7525bis-00 . . . . . . . . . . . . . 46 | ||||
| B.14. draft-sheffer-uta-bcp195bis-00 . . . . . . . . . . . . . 46 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46 | ||||
| 1. Introduction | 1. Introduction | |||
| Transport Layer Security (TLS) and Datagram Transport Layer Security | Transport Layer Security (TLS) and Datagram Transport Layer Security | |||
| (DTLS) are used to protect data exchanged over a wide variety of | (DTLS) are used to protect data exchanged over a wide variety of | |||
| application protocols, including HTTP [HTTP1.1] [HTTP2], IMAP | application protocols, including HTTP [RFC9112] [RFC9113], IMAP | |||
| [RFC9051], POP [STD53], SIP [RFC3261], SMTP [RFC5321], and XMPP | [RFC9051], Post Office Protocol (POP) [STD53], SIP [RFC3261], SMTP | |||
| [RFC5321], and the Extensible Messaging and Presence Protocol (XMPP) | ||||
| [RFC6120]. Such protocols use both the TLS or DTLS handshake | [RFC6120]. Such protocols use both the TLS or DTLS handshake | |||
| protocol and the TLS or DTLS record layer. Although the TLS | protocol and the TLS or DTLS record layer. Although the TLS | |||
| handshake protocol can also be used with different record layers to | handshake protocol can also be used with different record layers to | |||
| define secure transport protocols - the most prominent example is | define secure transport protocols (the most prominent example is QUIC | |||
| QUIC [RFC9000] - such transport protocols are not directly in scope | [RFC9000]), such transport protocols are not directly in scope for | |||
| for this document; nevertheless, many of the recommendations here | this document; nevertheless, many of the recommendations here might | |||
| might apply insofar as such protocols use the TLS handshake protocol. | apply insofar as such protocols use the TLS handshake protocol. | |||
| Over the years leading to 2015, the industry had witnessed serious | Over the years leading to 2015, the industry had witnessed serious | |||
| attacks on TLS and DTLS, including attacks on the most commonly used | attacks on TLS and DTLS, including attacks on the most commonly used | |||
| cipher suites and their modes of operation. For instance, both the | cipher suites and their modes of operation. For instance, both the | |||
| AES-CBC [RFC3602] and RC4 [RFC7465] encryption algorithms, which | AES-CBC [RFC3602] and RC4 [RFC7465] encryption algorithms, which | |||
| together were once the most widely deployed ciphers, were attacked in | together were once the most widely deployed ciphers, were attacked in | |||
| the context of TLS. Detailed information about the attacks known | the context of TLS. Detailed information about the attacks known | |||
| prior to 2015 is provided in a companion document ([RFC7457]) to the | prior to 2015 is provided in a companion document [RFC7457] to the | |||
| previous version of this specification, which will help the reader | previous version of the TLS recommendations [RFC7525], which will | |||
| understand the rationale behind the recommendations provided here. | help the reader understand the rationale behind the recommendations | |||
| That document has not been updated in concert with this one; instead, | provided here. That document has not been updated in concert with | |||
| newer attacks are described in this document, as are mitigations for | this one; instead, newer attacks are described in this document, as | |||
| those attacks. | are mitigations for those attacks. | |||
| The TLS community reacted to the attacks described in [RFC7457] in | The TLS community reacted to the attacks described in [RFC7457] in | |||
| several ways: | several ways: | |||
| * Detailed guidance was published on the use of TLS 1.2 [RFC5246] | * Detailed guidance was published on the use of TLS 1.2 [RFC5246] | |||
| and DTLS 1.2 [RFC6347], along with earlier protocol versions. | and DTLS 1.2 [RFC6347] along with earlier protocol versions. This | |||
| This guidance is included in the original [RFC7525] and mostly | guidance is included in the original [RFC7525] and mostly retained | |||
| retained in this revised version; note that this guidance was | in this revised version; note that this guidance was mostly | |||
| mostly adopted by the industry since the publication of RFC 7525 | adopted by the industry since the publication of RFC 7525 in 2015. | |||
| in 2015. | ||||
| * Versions of TLS earlier than 1.2 were deprecated [RFC8996]. | * Versions of TLS earlier than 1.2 were deprecated [RFC8996]. | |||
| * Version 1.3 of TLS [RFC8446] was released, followed by version 1.3 | * Version 1.3 of TLS [RFC8446] was released, followed by version 1.3 | |||
| of DTLS [RFC9147]; these versions largely mitigate or resolve the | of DTLS [RFC9147]; these versions largely mitigate or resolve the | |||
| described attacks. | described attacks. | |||
| Those who implement and deploy TLS and TLS-based protocols need | Those who implement and deploy TLS and TLS-based protocols need | |||
| guidance on how they can be used securely. This document provides | guidance on how they can be used securely. This document provides | |||
| guidance for deployed services as well as for software | guidance for deployed services as well as for software | |||
| implementations, assuming the implementer expects their code to be | implementations, assuming the implementer expects their code to be | |||
| deployed in the environments defined in Section 5. Concerning | deployed in the environments defined in Section 5. 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 | |||
| mutual), confidentiality, and data integrity protection to their | mutual), confidentiality, and data integrity protection to their | |||
| communications. | communications. | |||
| 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 it is explicitly called out that a recommendation applies to | Unless it is explicitly called out that a recommendation applies to | |||
| TLS alone or to DTLS alone, each recommendation applies to both TLS | TLS alone or to DTLS alone, each recommendation applies to both TLS | |||
| and DTLS. | and DTLS. | |||
| This document attempts to minimize new guidance to TLS 1.2 | This document attempts to minimize new guidance to TLS 1.2 | |||
| implementations, and the overall approach is to encourage systems to | implementations, and the overall approach is to encourage systems to | |||
| move to TLS 1.3. However, this is not always practical. Newly | move to TLS 1.3. However, this is not always practical. Newly | |||
| discovered attacks, as well as ecosystem changes, necessitated some | discovered attacks, as well as ecosystem changes, necessitated some | |||
| new requirements that apply to TLS 1.2 environments. Those are | new requirements that apply to TLS 1.2 environments. Those are | |||
| summarized in Appendix A. | summarized in Appendix A. | |||
| Naturally, future attacks are likely, and this document does not | Naturally, future attacks are likely, and this document cannot | |||
| address them. Those who implement and deploy TLS/DTLS and protocols | address them. Those who implement and deploy TLS/DTLS and protocols | |||
| based on TLS/DTLS are strongly advised to pay attention to future | based on TLS/DTLS are strongly advised to pay attention to future | |||
| developments. In particular, although it is known that the creation | developments. In particular, although it is known that the creation | |||
| of quantum computers will have a significant impact on the security | of quantum computers will have a significant impact on the security | |||
| of cryptographic primitives and the technologies that use them, | of cryptographic primitives and the technologies that use them, | |||
| currently post-quantum cryptography is a work in progress and it is | currently post-quantum cryptography is a work in progress and it is | |||
| too early to make recommendations; once the relevant specifications | too early to make recommendations; once the relevant specifications | |||
| are standardized in the IETF or elsewhere, this document should be | are standardized in the IETF or elsewhere, this document should be | |||
| updated to reflect best practices at that time. | updated to reflect best practices at that time. | |||
| skipping to change at page 5, line 23 ¶ | skipping to change at line 195 ¶ | |||
| vulnerabilities listed in this document. A system that deploys TLS | vulnerabilities listed in this document. A system that deploys TLS | |||
| 1.3 should have fewer vulnerabilities than TLS 1.2 or below. | 1.3 should have fewer vulnerabilities than TLS 1.2 or below. | |||
| Therefore, this document replaces [RFC7525], with an explicit goal to | Therefore, this document replaces [RFC7525], with an explicit goal to | |||
| encourage migration of most uses of TLS 1.2 to TLS 1.3. | encourage migration of most uses of TLS 1.2 to TLS 1.3. | |||
| These are minimum recommendations for the use of TLS in the vast | These are minimum recommendations for the use of TLS in the vast | |||
| majority of implementation and deployment scenarios, with the | majority of implementation and deployment scenarios, with the | |||
| exception of unauthenticated TLS (see Section 5). Other | exception of unauthenticated TLS (see Section 5). Other | |||
| specifications that reference this document can have stricter | specifications that reference this document 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 (e.g., for use with a particular | their particular circumstances (e.g., for use with a specific | |||
| application protocol); when that is the case, implementers are | application protocol); when that is the case, implementers are | |||
| advised to adhere to those stricter requirements. Furthermore, this | advised to adhere to those stricter requirements. Furthermore, this | |||
| document provides a floor, not a ceiling: where feasible, | document provides a floor, not a ceiling: where feasible, | |||
| administrators of services are encouraged to go beyond the minimum | administrators of services are encouraged to go beyond the minimum | |||
| support available in implementations to provide the strongest | support available in implementations to provide the strongest | |||
| security possible. For example, based on knowledge about the | security possible. For example, based on knowledge about the | |||
| deployed base for an existing application protocol and a cost-benefit | deployed base for an existing application protocol and a cost-benefit | |||
| analysis regarding security strength vs. interoperability, a given | analysis regarding security strength vs. interoperability, a given | |||
| service provider might decide to disable TLS 1.2 entirely and offer | service provider might decide to disable TLS 1.2 entirely and offer | |||
| only TLS 1.3. | only TLS 1.3. | |||
| skipping to change at page 6, line 44 ¶ | skipping to change at line 258 ¶ | |||
| * Implementations MUST NOT negotiate SSL version 2. | * Implementations MUST NOT negotiate SSL version 2. | |||
| Rationale: Today, SSLv2 is considered insecure [RFC6176]. | Rationale: Today, SSLv2 is considered insecure [RFC6176]. | |||
| * Implementations MUST NOT negotiate SSL version 3. | * 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 strong | plugged some significant security holes but did not support strong | |||
| cipher suites. SSLv3 does not support TLS extensions, some of | cipher suites. SSLv3 does not support TLS extensions, some of | |||
| which (e.g., renegotiation_info [RFC5746]) are security-critical. | which (e.g., renegotiation_info [RFC5746]) are security critical. | |||
| In addition, with the emergence of the POODLE attack [POODLE], | In addition, with the emergence of the Padding Oracle On | |||
| SSLv3 is now widely recognized as fundamentally insecure. See | Downgraded Legacy Encryption (POODLE) attack [POODLE], SSLv3 is | |||
| [DEP-SSLv3] for further details. | now widely recognized as fundamentally insecure. See [RFC7568] | |||
| for further details. | ||||
| * Implementations MUST NOT negotiate TLS version 1.0 [RFC2246]. | * Implementations MUST 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. In addition, TLS 1.0 lacks a per- | modern, strong cipher suites. In addition, TLS 1.0 lacks a per- | |||
| record Initialization Vector (IV) for CBC-based cipher suites and | record Initialization Vector (IV) for cipher suites based on | |||
| does not warn against common padding errors. This and other | cipher block chaining (CBC) and does not warn against common | |||
| recommendations in this section are in line with [RFC8996]. | padding errors. This and other recommendations in this section | |||
| are in line with [RFC8996]. | ||||
| * Implementations MUST NOT negotiate TLS version 1.1 [RFC4346]. | * Implementations MUST NOT 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 | |||
| suites that were introduced with the standardization of TLS 1.2 in | suites that were introduced with the standardization of TLS 1.2 in | |||
| 2008, including the cipher suites recommended for TLS 1.2 by this | 2008, including the cipher suites recommended for TLS 1.2 by this | |||
| document (see Section 4.2 below). | document (see Section 4.2 below). | |||
| * Implementations MUST support TLS 1.2 [RFC5246]. | * Implementations MUST support TLS 1.2 [RFC5246]. | |||
| Rationale: TLS 1.2 is implemented and deployed more widely than | Rationale: TLS 1.2 is implemented and deployed more widely than | |||
| TLS 1.3 at this time and, when the recommendations in this | TLS 1.3 at this time, and when the recommendations in this | |||
| document are followed to mitigate known attacks, the use of TLS | document are followed to mitigate known attacks, the use of TLS | |||
| 1.2 is as safe as the use of TLS 1.3. In most application | 1.2 is as safe as the use of TLS 1.3. In most application | |||
| protocols that re-use TLS and DTLS, there is no immediate need to | protocols that reuse TLS and DTLS, there is no immediate need to | |||
| migrate solely to TLS 1.3 and proactively deprecate TLS 1.2, | migrate solely to TLS 1.3. Indeed, because many application | |||
| especially because the existence of large numbers of application | clients are dependent on TLS libraries or operating systems that | |||
| clients dependent on TLS libraries or operating systems that do | do not yet support TLS 1.3, proactively deprecating TLS 1.2 would | |||
| not yet support TLS 1.3 would introduce significant | introduce significant interoperability issues, thus harming | |||
| interoperability issues, thus harming security more than helping | security more than helping it. Nevertheless, it is expected that | |||
| it. Nevertheless, it is expected that a future version of this | a future version of this BCP will deprecate the use of TLS 1.2 | |||
| BCP will deprecate the use of TLS 1.2 when it is appropriate to do | when it is appropriate to do so. | |||
| so. | ||||
| * Implementations SHOULD support TLS 1.3 [RFC8446] and, if | * Implementations SHOULD support TLS 1.3 [RFC8446] and, if | |||
| implemented, MUST prefer to negotiate TLS 1.3 over earlier | implemented, MUST prefer to negotiate TLS 1.3 over earlier | |||
| versions of TLS. | versions of TLS. | |||
| Rationale: TLS 1.3 is a major overhaul to the protocol and | Rationale: TLS 1.3 is a major overhaul to the protocol and | |||
| resolves many of the security issues with TLS 1.2. To the extent | resolves many of the security issues with TLS 1.2. To the extent | |||
| that an implementation supports TLS 1.2 (even if it defaults to | that an implementation supports TLS 1.2 (even if it defaults to | |||
| TLS 1.3), it MUST follow the recommendations regarding TLS 1.2 | TLS 1.3), it MUST follow the recommendations regarding TLS 1.2 | |||
| specified in this document. | specified in this document. | |||
| skipping to change at page 8, line 6 ¶ | skipping to change at line 316 ¶ | |||
| * New transport protocols that integrate the TLS/DTLS handshake | * New transport protocols that integrate the TLS/DTLS handshake | |||
| protocol and/or record layer MUST use only TLS/DTLS 1.3 (for | protocol and/or record layer MUST use only TLS/DTLS 1.3 (for | |||
| instance, QUIC [RFC9001] took this approach). New application | instance, QUIC [RFC9001] took this approach). New application | |||
| protocols that employ TLS/DTLS for channel or session encryption | protocols that employ TLS/DTLS for channel or session encryption | |||
| MUST integrate with both TLS/DTLS versions 1.2 and 1.3; | MUST integrate with both TLS/DTLS versions 1.2 and 1.3; | |||
| nevertheless, in rare cases where broad interoperability is not a | nevertheless, in rare cases where broad interoperability is not a | |||
| concern, application protocol designers MAY choose to forego TLS | concern, application protocol designers MAY choose to forego TLS | |||
| 1.2. | 1.2. | |||
| Rationale: Secure deployment of TLS 1.3 is significantly easier | Rationale: Secure deployment of TLS 1.3 is significantly easier | |||
| and less error-prone than secure deployment of TLS 1.2. When | and less error prone than secure deployment of TLS 1.2. When | |||
| designing a new secure transport protocol such as QUIC, there is | designing a new secure transport protocol such as QUIC, there is | |||
| no reason to support TLS 1.2. By contrast, new application | no reason to support TLS 1.2. By contrast, new application | |||
| protocols that re-use TLS MAY support both TLS 1.3 and TLS 1.2 in | protocols that reuse TLS need to support both TLS 1.3 and TLS 1.2 | |||
| order to take advantage of underlying library or operating system | in order to take advantage of underlying library or operating | |||
| support for both versions. | system support for both versions. | |||
| This BCP applies to TLS 1.3, TLS 1.2, and earlier versions. It is | This BCP applies to TLS 1.3, TLS 1.2, and earlier versions. It is | |||
| not safe for readers to assume that the recommendations in this BCP | not safe for readers to assume that the recommendations in this BCP | |||
| apply to any future version of TLS. | apply 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: | |||
| skipping to change at page 8, line 41 ¶ | skipping to change at line 351 ¶ | |||
| * Implementations SHOULD support DTLS 1.3 [RFC9147] and, if | * Implementations SHOULD support DTLS 1.3 [RFC9147] and, if | |||
| implemented, MUST prefer to negotiate DTLS version 1.3 over | implemented, MUST prefer to negotiate DTLS version 1.3 over | |||
| earlier versions of DTLS. | earlier versions of DTLS. | |||
| Version 1.3 of DTLS correlates to version 1.3 of TLS (see above). | Version 1.3 of DTLS correlates to version 1.3 of TLS (see above). | |||
| 3.1.3. Fallback to Lower Versions | 3.1.3. Fallback to Lower Versions | |||
| TLS/DTLS 1.2 clients MUST NOT fall back to earlier TLS versions, | TLS/DTLS 1.2 clients MUST NOT fall back to earlier TLS versions, | |||
| since those versions have been deprecated [RFC8996]. We note that as | since those versions have been deprecated [RFC8996]. As a result, | |||
| a result of that, the downgrade-protection SCSV (Signaling Cipher | the downgrade-protection Signaling Cipher Suite Value (SCSV) | |||
| Suite Value) mechanism [RFC7507] is no longer needed for clients. In | mechanism [RFC7507] is no longer needed for clients. In addition, | |||
| addition, TLS 1.3 implements a new version negotiation mechanism. | TLS 1.3 implements a new version-negotiation mechanism. | |||
| 3.2. Strict TLS | 3.2. Strict TLS | |||
| The following recommendations are provided to help prevent SSL | The following recommendations are provided to help prevent "SSL | |||
| Stripping and STARTTLS Command Injection (attacks that are summarized | Stripping" and STARTTLS command injection (attacks that are | |||
| in [RFC7457]): | summarized in [RFC7457]): | |||
| * Many existing application protocols were designed before the use | * Many existing application protocols were designed before the use | |||
| of TLS became common. These protocols typically support TLS in | of TLS became common. These protocols typically support TLS in | |||
| one of two ways: either via a separate port for TLS-only | one of two ways: either via a separate port for TLS-only | |||
| communication (e.g., port 443 for HTTPS) or via a method for | communication (e.g., port 443 for HTTPS) or via a method for | |||
| dynamically upgrading a channel from unencrypted to TLS-protected | dynamically upgrading a channel from unencrypted to TLS protected | |||
| (e.g., STARTTLS, which is used in protocols such as IMAP and | (e.g., STARTTLS, which is used in protocols such as IMAP and | |||
| XMPP). Regardless of the mechanism for protecting the | XMPP). Regardless of the mechanism for protecting the | |||
| communication channel (TLS-only port or dynamic upgrade), what | communication channel (TLS-only port or dynamic upgrade), what | |||
| matters is the end state of the channel. When a protocol defines | matters is the end state of the channel. When a protocol defines | |||
| both a dynamic upgrade method and a separate TLS-only method, then | both a dynamic upgrade method and a separate TLS-only method, then | |||
| the separate TLS-only method MUST be supported by implementations | the separate TLS-only method MUST be supported by implementations | |||
| and MUST be configured by administrators to be used in preference | and MUST be configured by administrators to be used in preference | |||
| to the dynamic upgrade method. When a protocol supports only a | to the dynamic upgrade method. When a protocol supports only a | |||
| dynamic upgrade, implementations MUST provide a way for | dynamic upgrade method, implementations MUST provide a way for | |||
| administrators to set a strict local policy that forbids use of | administrators to set a strict local policy that forbids use of | |||
| plaintext in the absence of a negotiated TLS channel, and | plaintext in the absence of a negotiated TLS channel, and | |||
| administrators MUST use this policy. | administrators MUST use this policy. | |||
| * HTTP client and server implementations intended for use in the | * HTTP client and server implementations intended for use in the | |||
| World Wide Web (see Section 5) MUST support the HTTP Strict | World Wide Web (see Section 5) MUST support the HTTP Strict | |||
| Transport Security (HSTS) header field [RFC6797], so that Web | Transport Security (HSTS) header field [RFC6797] so that web | |||
| servers can advertise that they are willing to accept TLS-only | servers can advertise that they are willing to accept TLS-only | |||
| clients. Web servers SHOULD use HSTS to indicate that they are | clients. Web servers SHOULD use HSTS to indicate that they are | |||
| willing to accept TLS-only clients, unless they are deployed in | willing to accept TLS-only clients, unless they are deployed in | |||
| such a way that using HSTS would in fact weaken overall security | such a way that using HSTS would in fact weaken overall security | |||
| (e.g., it can be problematic to use HSTS with self-signed | (e.g., it can be problematic to use HSTS with self-signed | |||
| certificates, as described in Section 11.3 of [RFC6797]). Similar | certificates, as described in Section 11.3 of [RFC6797]). Similar | |||
| technologies exist for non-HTTP application protocols, such as | technologies exist for non-HTTP application protocols, such as | |||
| MTA-STS for mail transfer agents [RFC8461] and methods based on | Mail Transfer Agent Strict Transport Security (MTA-STS) for mail | |||
| DNS-Based Authentication of Named Entities (DANE) [RFC6698] for | transfer agents [RFC8461] and methods based on DNS-Based | |||
| SMTP [DANE-SMTP] and XMPP [RFC7712]. | Authentication of Named Entities (DANE) [RFC6698] for SMTP | |||
| [RFC7672] and XMPP [RFC7712]. | ||||
| Rationale: Combining unprotected and TLS-protected communication | Rationale: Combining unprotected and TLS-protected communication | |||
| opens the way to SSL Stripping and similar attacks, since an initial | opens the way to SSL Stripping and similar attacks, since an initial | |||
| part of the communication is not integrity protected and therefore | part of the communication is not integrity protected and therefore | |||
| can be manipulated by an attacker whose goal is to keep the | can be manipulated by an attacker whose goal is to keep the | |||
| communication in the clear. | communication in the clear. | |||
| 3.3. Compression | 3.3. Compression | |||
| In order to help prevent compression-related attacks (summarized in | In order to help prevent compression-related attacks (summarized in | |||
| Section 2.6 of [RFC7457]), when using TLS 1.2 implementations and | Section 2.6 of [RFC7457]) when using TLS 1.2, implementations and | |||
| deployments SHOULD NOT support TLS-level compression (Section 6.2.2 | deployments SHOULD NOT support TLS-level compression (Section 6.2.2 | |||
| of [RFC5246]); the only exception is when the application protocol in | of [RFC5246]); the only exception is when the application protocol in | |||
| question has been proved not to be open to such attacks, however even | question has been proven not to be open to such attacks. However, | |||
| in this case extreme caution is warranted because of the potential | even in this case, extreme caution is warranted because of the | |||
| for future attacks related to TLS compression. More specifically, | potential for future attacks related to TLS compression. More | |||
| the HTTP protocol is known to be vulnerable to compression-related | specifically, the HTTP protocol is known to be vulnerable to | |||
| attacks. Note: this recommendation applies to TLS 1.2 only, because | compression-related attacks. (This recommendation applies to TLS 1.2 | |||
| compression has been removed from TLS 1.3. | only, because compression has been removed from TLS 1.3.) | |||
| 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 Compression Ratio Info-leak Made Easy (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 Browser Reconnaissance and Exfiltration via | |||
| can only be mitigated outside of TLS and are thus outside the scope | Adaptive Compression of Hypertext (BREACH) attack is one such case. | |||
| of this document. See Section 2.6 of [RFC7457] for further details. | These issues can only be mitigated outside of TLS and are thus | |||
| outside the scope of this document. See Section 2.6 of [RFC7457] for | ||||
| further details. | ||||
| 3.3.1. Certificate Compression | 3.3.1. Certificate Compression | |||
| Certificate chains often take up the majority of the bytes | Certificate chains often take up most of the bytes transmitted during | |||
| transmitted during the handshake. In order to manage their size, | the handshake. In order to manage their size, some or all of the | |||
| some or all of the following methods can be employed (see also | following methods can be employed (see also Section 4 of [RFC9191] | |||
| Section 4 of [RFC9191] for further suggestions): | for further suggestions): | |||
| * Limit the number of names or extensions; | * Limit the number of names or extensions. | |||
| * Use keys with small public key representations, like ECDSA; | * Use keys with small public key representations, like the Elliptic | |||
| Curve Digital Signature Algorithm (ECDSA). | ||||
| * Use certificate compression. | * Use certificate compression. | |||
| To achieve the latter, TLS 1.3 defines the compress_certificate | To achieve the latter, TLS 1.3 defines the compress_certificate | |||
| extension in [RFC8879]. See also Section 5 of [RFC8879] for security | extension in [RFC8879]. See also Section 5 of [RFC8879] for security | |||
| and privacy considerations associated with its use. For the | and privacy considerations associated with its use. For the | |||
| avoidance of doubt, CRIME-style attacks on TLS compression do not | avoidance of doubt, CRIME-style attacks on TLS compression do not | |||
| apply to certificate compression. | apply to certificate compression. | |||
| Due to the strong likelihood of middlebox interference, RFC8879-style | Due to the strong likelihood of middlebox interference, compression | |||
| compression has not been made available in TLS 1.2. In theory, the | in the style of [RFC8879] has not been made available in TLS 1.2. In | |||
| cached_info extension defined in [RFC7924] could be used, but it is | theory, the cached_info extension defined in [RFC7924] could be used, | |||
| not widely enough supported to be considered a practical alternative. | but it is not supported widely enough to be considered a practical | |||
| alternative. | ||||
| 3.4. TLS Session Resumption | 3.4. TLS Session Resumption | |||
| Session resumption drastically reduces the number of full TLS | Session resumption drastically reduces the number of full TLS | |||
| handshakes and thus is an essential performance feature for most | handshakes and thus is an essential performance feature for most | |||
| deployments. | deployments. | |||
| Stateless session resumption with session tickets is a popular | Stateless session resumption with session tickets is a popular | |||
| strategy. For TLS 1.2, it is specified in [RFC5077]. For TLS 1.3, a | strategy. For TLS 1.2, it is specified in [RFC5077]. For TLS 1.3, a | |||
| more secure PSK-based mechanism is described in Section 4.6.1 of | more secure mechanism based on the use of a pre-shared key (PSK) is | |||
| [RFC8446]. See [Springall16] for a quantitative study of the risks | described in Section 4.6.1 of [RFC8446]. See [Springall16] for a | |||
| induced by TLS cryptographic "shortcuts", including session | quantitative study of the risks induced by TLS cryptographic | |||
| resumption. | "shortcuts", including session resumption. | |||
| When it is used, the resumption information MUST be authenticated and | When it is used, the resumption information MUST be authenticated and | |||
| encrypted to prevent modification or eavesdropping by an attacker. | encrypted to prevent modification or eavesdropping by an attacker. | |||
| Further recommendations apply to session tickets: | Further recommendations apply to session tickets: | |||
| * A strong cipher MUST be used when encrypting the ticket (at least | * A strong cipher MUST be used when encrypting the ticket (at least | |||
| as strong as the main TLS cipher suite). | as strong as the main TLS cipher suite). | |||
| * Ticket-encryption keys MUST be changed regularly, e.g., once every | * Ticket-encryption keys MUST be changed regularly, e.g., once every | |||
| week, so as not to negate the benefits of forward secrecy (see | week, so as not to negate the benefits of forward secrecy (see | |||
| skipping to change at page 11, line 26 ¶ | skipping to change at line 485 ¶ | |||
| period. | period. | |||
| * For similar reasons, session ticket validity MUST be limited to a | * For similar reasons, session ticket validity MUST be limited to a | |||
| reasonable duration (e.g., half as long as ticket-encryption key | reasonable duration (e.g., half as long as ticket-encryption key | |||
| validity). | validity). | |||
| * TLS 1.2 does not roll the session key forward within a single | * TLS 1.2 does not roll the session key forward within a single | |||
| session. Thus, to prevent an attack where the server's ticket- | session. Thus, to prevent an attack where the server's ticket- | |||
| encryption key is stolen and used to decrypt the entire content of | encryption key is stolen and used to decrypt the entire content of | |||
| a session (negating the concept of forward secrecy), a TLS 1.2 | a session (negating the concept of forward secrecy), a TLS 1.2 | |||
| server SHOULD NOT resume sessions that are too old, e.g. sessions | server SHOULD NOT resume sessions that are too old, e.g., sessions | |||
| that have been open longer than two ticket-encryption key rotation | that have been open longer than two ticket-encryption key rotation | |||
| periods. | periods. | |||
| Rationale: session resumption is another kind of TLS handshake, and | Rationale: Session resumption is another kind of TLS handshake and | |||
| therefore must be as secure as the initial handshake. This document | therefore must be as secure as the initial handshake. This document | |||
| (Section 4) recommends the use of cipher suites that provide forward | (Section 4) recommends the use of cipher suites that provide forward | |||
| secrecy, i.e. that prevent an attacker who gains momentary access to | secrecy, i.e., that prevent an attacker who gains momentary access to | |||
| 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. | |||
| TLS 1.3 provides the powerful option of forward secrecy even within a | TLS 1.3 provides the powerful option of forward secrecy even within a | |||
| long-lived connection that is periodically resumed. Section 2.2 of | long-lived connection that is periodically resumed. Section 2.2 of | |||
| [RFC8446] recommends that clients SHOULD send a "key_share" when | [RFC8446] recommends that clients SHOULD send a "key_share" when | |||
| initiating session resumption. In order to gain forward secrecy, | initiating session resumption. In order to gain forward secrecy, | |||
| this document recommends that server implementations SHOULD select | this document recommends that server implementations SHOULD select | |||
| the "psk_dhe_ke" PSK key exchange mode and respond with a | the "psk_dhe_ke" PSK key exchange mode and respond with a "key_share" | |||
| "key_share", to complete an ECDHE exchange on each session | to complete an Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) | |||
| resumption. As a more performant alternative, server implementations | exchange on each session resumption. As a more performant | |||
| MAY refrain from responding with a "key_share" until a certain amount | alternative, server implementations MAY refrain from responding with | |||
| of time (e.g., measured in hours) has passed since the last ECDHE | a "key_share" until a certain amount of time (e.g., measured in | |||
| exchange; this implies that the "key_share" operation would not occur | hours) has passed since the last ECDHE exchange; this implies that | |||
| for the presumed majority of session resumption requests occurring | the "key_share" operation would not occur for the presumed majority | |||
| within a few hours, while still ensuring forward secrecy for longer- | of session resumption requests (which would occur within a few hours) | |||
| lived sessions. | while still ensuring forward secrecy for longer-lived sessions. | |||
| TLS session resumption introduces potential privacy issues where the | TLS session resumption introduces potential privacy issues where the | |||
| server is able to track the client, in some cases indefinitely. See | server is able to track the client, in some cases indefinitely. See | |||
| [Sy2018] for more details. | [Sy2018] for more details. | |||
| 3.5. Renegotiation in TLS 1.2 | 3.5. Renegotiation in TLS 1.2 | |||
| The recommendations in this section apply to TLS 1.2 only, because | The recommendations in this section apply to TLS 1.2 only, because | |||
| renegotiation has been removed from TLS 1.3. | renegotiation has been removed from TLS 1.3. | |||
| Renegotiation in TLS 1.2 is a handshake that establishes new | Renegotiation in TLS 1.2 is a handshake that establishes new | |||
| cryptographic parameters for an existing session. The mechanism | cryptographic parameters for an existing session. The mechanism | |||
| existed in TLS 1.2 and in earlier protocol versions, and was improved | existed in TLS 1.2 and in earlier protocol versions and was improved | |||
| following several major attacks including a plaintext injection | following several major attacks including a plaintext injection | |||
| attack, CVE-2009-3555 [CVE]. | attack, CVE-2009-3555 [CVE]. | |||
| TLS 1.2 clients and servers MUST implement the renegotiation_info | TLS 1.2 clients and servers MUST implement the renegotiation_info | |||
| extension, as defined in [RFC5746]. | extension, as defined in [RFC5746]. | |||
| TLS 1.2 clients MUST send renegotiation_info in the Client Hello. If | TLS 1.2 clients MUST send renegotiation_info in the Client Hello. If | |||
| the server does not acknowledge the extension, the client MUST | the server does not acknowledge the extension, the client MUST | |||
| generate a fatal handshake_failure alert prior to terminating the | generate a fatal handshake_failure alert prior to terminating the | |||
| connection. | connection. | |||
| Rationale: It is not safe for a client to connect to a TLS 1.2 server | Rationale: It is not safe for a client to connect to a TLS 1.2 server | |||
| that does not support renegotiation_info, regardless of whether | that does not support renegotiation_info regardless of whether either | |||
| either endpoint actually implements renegotiation. See also | endpoint actually implements renegotiation. See also Section 4.1 of | |||
| Section 4.1 of [RFC5746]. | [RFC5746]. | |||
| A related attack resulting from TLS session parameters not being | A related attack resulting from TLS session parameters not being | |||
| properly authenticated is Triple Handshake [triple-handshake]. To | properly authenticated is a Triple Handshake [Triple-Handshake]. To | |||
| address this attack, TLS 1.2 implementations MUST support the | address this attack, TLS 1.2 implementations MUST support the | |||
| extended_master_secret extension defined in [RFC7627]. | extended_master_secret extension defined in [RFC7627]. | |||
| 3.6. Post-Handshake Authentication | 3.6. Post-Handshake Authentication | |||
| Renegotiation in TLS 1.2 was (partially) replaced in TLS 1.3 by | Renegotiation in TLS 1.2 was (partially) replaced in TLS 1.3 by | |||
| separate post-handshake authentication and key update mechanisms. In | separate post-handshake authentication and key update mechanisms. In | |||
| the context of protocols that multiplex requests over a single | the context of protocols that multiplex requests over a single | |||
| connection (such as HTTP/2 [HTTP2]), post-handshake authentication | connection (such as HTTP/2 [RFC9113]), post-handshake authentication | |||
| has the same problems as TLS 1.2 renegotiation. Multiplexed | has the same problems as TLS 1.2 renegotiation. Multiplexed | |||
| protocols SHOULD follow the advice provided for HTTP/2 in | protocols SHOULD follow the advice provided for HTTP/2 in | |||
| Section 9.3.2 of [HTTP2]. | Section 9.2.3 of [RFC9113]. | |||
| 3.7. Server Name Indication (SNI) | 3.7. Server Name Indication (SNI) | |||
| TLS implementations MUST support the Server Name Indication (SNI) | TLS implementations MUST support the Server Name Indication (SNI) | |||
| extension defined in Section 3 of [RFC6066] for those higher-level | extension defined in Section 3 of [RFC6066] for those higher-level | |||
| protocols that would benefit from it, including HTTPS. However, the | protocols that would benefit from it, including HTTPS. However, the | |||
| actual use of SNI in particular circumstances is a matter of local | actual use of SNI in particular circumstances is a matter of local | |||
| policy. At the time of writing, a technology for encrypting the SNI | policy. At the time of writing, a technology for encrypting the SNI | |||
| (called Encrypted Client Hello) is being worked on in the TLS Working | (called Encrypted Client Hello) is being worked on in the TLS Working | |||
| Group [I-D.ietf-tls-esni]. Once that method has been standardized | Group [TLS-ECH]. Once that method has been standardized and widely | |||
| and widely implemented, it will likely be appropriate to recommend | implemented, it will likely be appropriate to recommend its usage in | |||
| its usage in a future version of this BCP. | a future version of this BCP. | |||
| 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 | |||
| 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. However, SNI also leaks the target domain for a | own certificate. However, SNI also leaks the target domain for a | |||
| given connection; this information leak will be closed by use of TLS | given connection; this information leak will be closed by use of TLS | |||
| Encrypted Client Hello once that method has been standardized. | Encrypted Client Hello once that method has been standardized. | |||
| In order to prevent the attacks described in [ALPACA], a server that | In order to prevent the attacks described in [ALPACA], a server that | |||
| does not recognize the presented server name SHOULD NOT continue the | does not recognize the presented server name SHOULD NOT continue the | |||
| handshake and instead SHOULD fail with a fatal-level | handshake and instead SHOULD fail with a fatal-level | |||
| unrecognized_name(112) alert. Note that this recommendation updates | unrecognized_name(112) alert. Note that this recommendation updates | |||
| Section 3 of [RFC6066]: "If the server understood the ClientHello | Section 3 of [RFC6066], which stated: | |||
| extension but does not recognize the server name, the server SHOULD | ||||
| take one of two actions: either abort the handshake by sending a | | If the server understood the ClientHello extension but does not | |||
| fatal-level unrecognized_name(112) alert or continue the handshake." | | recognize the server name, the server SHOULD take one of two | |||
| | actions: either abort the handshake by sending a fatal-level | ||||
| | unrecognized_name(112) alert or continue the handshake. | ||||
| Clients SHOULD abort the handshake if the server acknowledges the SNI | Clients SHOULD abort the handshake if the server acknowledges the SNI | |||
| extension, but presents a certificate with a different hostname than | extension but presents a certificate with a different hostname than | |||
| the one sent by the client. | the one sent by the client. | |||
| 3.8. Application-Layer Protocol Negotiation (ALPN) | 3.8. Application-Layer Protocol Negotiation (ALPN) | |||
| TLS implementations (both client- and server-side) MUST support the | TLS implementations (both client- and server-side) MUST support the | |||
| Application-Layer Protocol Negotiation (ALPN) extension [RFC7301]. | Application-Layer Protocol Negotiation (ALPN) extension [RFC7301]. | |||
| In order to prevent "cross-protocol" attacks resulting from failure | In order to prevent "cross-protocol" attacks resulting from failure | |||
| to ensure that a message intended for use in one protocol cannot be | to ensure that a message intended for use in one protocol cannot be | |||
| mistaken for a message for use in another protocol, servers are | mistaken for a message for use in another protocol, servers are | |||
| advised to strictly enforce the behavior prescribed in Section 3.2 of | advised to strictly enforce the behavior prescribed in Section 3.2 of | |||
| [RFC7301]: "In the event that the server supports no protocols that | [RFC7301]: | |||
| the client advertises, then the server SHALL respond with a fatal | ||||
| no_application_protocol alert." Clients SHOULD abort the handshake | | In the event that the server supports no protocols that the client | |||
| if the server acknowledges the ALPN extension, but does not select a | | advertises, then the server SHALL respond with a fatal | |||
| protocol from the client list. Failure to do so can result in | | 'no_application_protocol' alert. | |||
| attacks such those described in [ALPACA]. | ||||
| Clients SHOULD abort the handshake if the server acknowledges the | ||||
| ALPN extension but does not select a protocol from the client list. | ||||
| Failure to do so can result in attacks such those described in | ||||
| [ALPACA]. | ||||
| Protocol developers are strongly encouraged to register an ALPN | Protocol developers are strongly encouraged to register an ALPN | |||
| identifier for their protocols. This applies both to new protocols | identifier for their protocols. This applies both to new protocols | |||
| and to well-established protocols; however, because the latter might | and to well-established protocols; however, because the latter might | |||
| have a large deployed base, strict enforcement of ALPN usage may not | have a large deployed base, strict enforcement of ALPN usage may not | |||
| be feasible when an ALPN identifier is registered for a well- | be feasible when an ALPN identifier is registered for a well- | |||
| established protocol. | established protocol. | |||
| 3.9. Multi-Server Deployment | 3.9. Multi-Server Deployment | |||
| Deployments that involve multiple servers or services can increase | Deployments that involve multiple servers or services can increase | |||
| the size of the attack surface for TLS. Two scenarios are of | the size of the attack surface for TLS. Two scenarios are of | |||
| interest: | interest: | |||
| 1. Deployments in which multiple services handle the same domain | 1. Deployments in which multiple services handle the same domain | |||
| name via different protocols (e.g., HTTP and IMAP). In this case | name via different protocols (e.g., HTTP and IMAP). In this | |||
| an attacker might be able to direct a connecting endpoint to the | case, an attacker might be able to direct a connecting endpoint | |||
| service offering a different protocol and mount a cross-protocol | to the service offering a different protocol and mount a cross- | |||
| attack. In a cross-protocol attack, the client and server | protocol attack. In a cross-protocol attack, the client and | |||
| believe they are using different protocols, which the attacker | server believe they are using different protocols, which the | |||
| might exploit if messages sent in one protocol are interpreted as | attacker might exploit if messages sent in one protocol are | |||
| messages in the other protocol with undesirable effects (see | interpreted as messages in the other protocol with undesirable | |||
| [ALPACA] for more detailed information about this class of | effects (see [ALPACA] for more detailed information about this | |||
| attacks). To mitigate this threat, service providers SHOULD | class of attacks). To mitigate this threat, service providers | |||
| deploy ALPN (see Section 3.8 immediately above) and to the extent | SHOULD deploy ALPN (see Section 3.8). In addition, to the extent | |||
| possible ensure that multiple services handling the same domain | possible, they SHOULD ensure that multiple services handling the | |||
| name provide equivalent levels of security (including both the | same domain name provide equivalent levels of security that are | |||
| TLS configuration and protections against compromise of server | consistent with the recommendations in this document; such | |||
| credentials) that are consistent with the recommendations in this | measures SHOULD include the handling of configurations across | |||
| document. | multiple TLS servers and protections against compromise of | |||
| credentials held by those servers. | ||||
| 2. Deployments in which multiple servers providing the same service | 2. Deployments in which multiple servers providing the same service | |||
| have different TLS configurations. In this case, an attacker | have different TLS configurations. In this case, an attacker | |||
| might be able to direct a connecting endpoint to a server with a | might be able to direct a connecting endpoint to a server with a | |||
| TLS configuration that is more easily exploitable (see [DROWN] | TLS configuration that is more easily exploitable (see [DROWN] | |||
| for more detailed information about this class of attacks). To | for more detailed information about this class of attacks). To | |||
| mitigate this threat, service providers SHOULD ensure that all | mitigate this threat, service providers SHOULD ensure that all | |||
| servers providing the same service provide equivalent levels of | servers providing the same service provide equivalent levels of | |||
| security that are consistent with the recommendations in this | security that are consistent with the recommendations in this | |||
| document. | document. | |||
| 3.10. Zero Round Trip Time (0-RTT) Data in TLS 1.3 | 3.10. Zero Round-Trip Time (0-RTT) Data in TLS 1.3 | |||
| The 0-RTT early data feature is new in TLS 1.3. It provides reduced | The 0-RTT early data feature is new in TLS 1.3. It provides reduced | |||
| latency when TLS connections are resumed, at the potential cost of | latency when TLS connections are resumed, at the potential cost of | |||
| certain security properties. As a result, it requires special | certain security properties. As a result, it requires special | |||
| attention from implementers on both the server and the client side. | attention from implementers on both the server and the client side. | |||
| Typically, this extends to both the TLS library as well as protocol | Typically, this extends to the TLS library as well as protocol layers | |||
| layers above it. | above it. | |||
| For use in HTTP-over-TLS, readers are referred to [RFC8470] for | For HTTP over TLS, refer to [RFC8470] for guidance. | |||
| guidance. | ||||
| For QUIC-on-TLS, refer to Section 9.2 of [RFC9001]. | For QUIC on TLS, refer to Section 9.2 of [RFC9001]. | |||
| For other protocols, generic guidance is given in Section 8 and | For other protocols, generic guidance is given in Section 8 and | |||
| Appendix E.5 of [RFC8446]. To paraphrase Appendix E.5, applications | Appendix E.5 of [RFC8446]. To paraphrase Appendix E.5, applications | |||
| MUST avoid this feature unless an explicit specification exists for | MUST avoid this feature unless an explicit specification exists for | |||
| the application protocol in question to clarify when 0-RTT is | the application protocol in question to clarify when 0-RTT is | |||
| appropriate and secure. This can take the form of an IETF RFC, a | appropriate and secure. This can take the form of an IETF RFC, a | |||
| non-IETF standard, or even documentation associated with a non- | non-IETF standard, or documentation associated with a non-standard | |||
| standard protocol. | protocol. | |||
| 4. Recommendations: Cipher Suites | 4. Recommendations: Cipher Suites | |||
| TLS 1.2 provided considerable flexibility in the selection of cipher | TLS 1.2 provided considerable flexibility in the selection of cipher | |||
| suites. Unfortunately, the security of some of these cipher suites | suites. Unfortunately, the security of some of these cipher suites | |||
| has degraded over time to the point where some are known to be | has degraded over time to the point where some are known to be | |||
| insecure (this is one reason why TLS 1.3 restricted such | insecure (this is one reason why TLS 1.3 restricted such | |||
| flexibility). Incorrectly configuring a server leads to no or | flexibility). Incorrectly configuring a server leads to no or | |||
| reduced security. This section includes recommendations on the | reduced security. This section includes recommendations on the | |||
| selection and negotiation of cipher suites. | selection and negotiation of cipher suites. | |||
| 4.1. General Guidelines | 4.1. General Guidelines | |||
| Cryptographic algorithms weaken over time as cryptanalysis improves: | Cryptographic algorithms weaken over time as cryptanalysis improves: | |||
| algorithms that were once considered strong become weak. | algorithms that were once considered strong become weak. | |||
| Consequently, they need to be phased out over time and replaced with | Consequently, cipher suites using weak algorithms need to be phased | |||
| more secure cipher suites. This helps to ensure that the desired | out and replaced with more secure cipher suites. This helps to | |||
| security properties still hold. SSL/TLS has been in existence for | ensure that the desired security properties still hold. SSL/TLS has | |||
| almost 20 years and many of the cipher suites that have been | been in existence for well over 20 years and many of the cipher | |||
| recommended in various versions of SSL/TLS are now considered weak or | suites that have been recommended in various versions of SSL/TLS are | |||
| at least not as strong as desired. Therefore, this section | now considered weak or at least not as strong as desired. Therefore, | |||
| modernizes the recommendations concerning cipher suite selection. | this section modernizes the recommendations concerning cipher suite | |||
| selection. | ||||
| * Implementations MUST NOT negotiate the cipher suites with NULL | * 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 | |||
| Nevertheless, this document does not discourage software from | document does not discourage software from implementing NULL | |||
| implementing NULL cipher suites, since they can be useful for | cipher suites, since they can be useful for testing and debugging. | |||
| testing and debugging. | ||||
| * Implementations MUST NOT negotiate RC4 cipher suites. | * 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 [RFC7465]. Note that DTLS | weaknesses, as documented in [RFC7465]. Note that DTLS | |||
| specifically forbids the use of RC4 already. | specifically forbids the use of RC4 already. | |||
| * Implementations MUST NOT negotiate cipher suites offering less | * Implementations MUST NOT negotiate cipher suites offering less | |||
| than 112 bits of security, including so-called "export-level" | than 112 bits of security, including so-called "export-level" | |||
| encryption (which provide 40 or 56 bits of security). | encryption (which provides 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 (found in so-called "export | needed. 40-bit and 56-bit security (found in so-called "export | |||
| ciphers") are considered insecure today. | ciphers") are considered insecure today. | |||
| * Implementations SHOULD NOT negotiate cipher suites that use | * 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 112 or more bits but less than | Rationale: Cipher suites that offer 112 or more bits but less than | |||
| 128 bits of security are not considered weak at this time; | 128 bits of security are not considered weak at this time; | |||
| however, it is expected that their useful lifespan is short enough | however, it is expected that their useful lifespan is short enough | |||
| to justify supporting stronger cipher suites at this time. | to justify supporting stronger cipher suites at this time. | |||
| 128-bit ciphers are expected to remain secure for at least several | 128-bit ciphers are expected to remain secure for at least several | |||
| years, and 256-bit ciphers until the next fundamental technology | years and 256-bit ciphers until the next fundamental technology | |||
| breakthrough. Note that, because of so-called "meet-in-the- | breakthrough. Note that, because of so-called "meet-in-the- | |||
| middle" attacks [Multiple-Encryption], some legacy cipher suites | middle" attacks [Multiple-Encryption], some legacy cipher suites | |||
| (e.g., 168-bit 3DES) have an effective key length that is smaller | (e.g., 168-bit Triple DES (3DES)) have an effective key length | |||
| than their nominal key length (112 bits in the case of 3DES). | that is smaller than their nominal key length (112 bits in the | |||
| Such cipher suites should be evaluated according to their | case of 3DES). Such cipher suites should be evaluated according | |||
| effective key length. | to their effective key length. | |||
| * Implementations SHOULD NOT negotiate cipher suites based on RSA | * Implementations SHOULD NOT negotiate cipher suites based on RSA | |||
| key transport, a.k.a. "static RSA". | key transport, a.k.a. "static RSA". | |||
| Rationale: These cipher suites, which have assigned values | Rationale: These cipher suites, which have assigned values | |||
| starting with the string "TLS_RSA_WITH_*", have several drawbacks, | starting with the string "TLS_RSA_WITH_*", have several drawbacks, | |||
| especially the fact that they do not support forward secrecy. | especially the fact that they do not support forward secrecy. | |||
| * Implementations SHOULD NOT negotiate cipher suites based on non- | * Implementations SHOULD NOT negotiate cipher suites based on non- | |||
| ephemeral (static) finite-field Diffie-Hellman key agreement. | ephemeral (static) finite-field Diffie-Hellman (DH) key agreement. | |||
| Similarly, implementations SHOULD NOT negotiate non-ephemeral | Similarly, implementations SHOULD NOT negotiate non-ephemeral | |||
| elliptic curve DH key agreement. | Elliptic Curve DH key agreement. | |||
| Rationale: The former cipher suites, which have assigned values | Rationale: The former cipher suites, which have assigned values | |||
| prefixed by "TLS_DH_*", have several drawbacks, especially the | prefixed by "TLS_DH_*", have several drawbacks, especially the | |||
| fact that they do not support forward secrecy. The latter | fact that they do not support forward secrecy. The latter | |||
| ("TLS_ECDH_*") also lack forward secrecy, and are subject to | ("TLS_ECDH_*") also lack forward secrecy and are subject to | |||
| invalid curve attacks [Jager2015]. | invalid curve attacks [Jager2015]. | |||
| * Implementations MUST support and prefer to negotiate cipher suites | * Implementations MUST support and prefer to negotiate cipher suites | |||
| offering forward secrecy. However, TLS 1.2 implementations SHOULD | offering forward secrecy. However, TLS 1.2 implementations SHOULD | |||
| NOT negotiate cipher suites based on ephemeral finite-field | NOT negotiate cipher suites based on ephemeral finite-field | |||
| Diffie-Hellman key agreement (i.e., "TLS_DHE_*" suites). This is | Diffie-Hellman key agreement (i.e., "TLS_DHE_*" suites). This is | |||
| justified by the known fragility of the construction (see | justified by the known fragility of the construction (see | |||
| [RACCOON]) and the limitation around negotiation -- including | [RACCOON]) and the limitation around negotiation, including using | |||
| using [RFC7919], which has seen very limited uptake. | [RFC7919], which has seen very limited uptake. | |||
| 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 how far back in time data | with older session keys, thus limiting how far back in time data | |||
| can be decrypted when an attack is successful. See Section 7.3 | can be decrypted when an attack is successful. See Sections 7.3 | |||
| and Section 7.4 for a detailed discussion. | and 7.4 for a detailed discussion. | |||
| 4.2. Cipher Suites for TLS 1.2 | 4.2. Cipher Suites for TLS 1.2 | |||
| 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: | |||
| * TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | * TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | |||
| * TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | * TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | |||
| * TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | * TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | |||
| * TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | * TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | |||
| As these are authenticated encryption (AEAD) algorithms [RFC5116], | As these are Authenticated Encryption with Associated Data (AEAD) | |||
| these cipher suites are supported only in TLS 1.2 and not in earlier | algorithms [RFC5116], these cipher suites are supported only in TLS | |||
| protocol versions. | 1.2 and not in earlier protocol versions. | |||
| Typically, in order to prefer these suites, the order of suites needs | Typically, to prefer these suites, the order of suites needs to be | |||
| to be explicitly configured in server software. It would be ideal if | explicitly configured in server software. It would be ideal if | |||
| server software implementations were to prefer these suites by | server software implementations were to prefer these suites by | |||
| default. | default. | |||
| Some devices have hardware support for AES-CCM but not AES-GCM, so | Some devices have hardware support for AES Counter Mode with CBC-MAC | |||
| they are unable to follow the foregoing recommendations regarding | (AES-CCM) but not AES Galois/Counter Mode (AES-GCM), so they are | |||
| cipher suites. There are even devices that do not support public key | unable to follow the foregoing recommendations regarding cipher | |||
| suites. There are even devices that do not support public key | ||||
| cryptography at all, but these are out of scope entirely. | cryptography at all, but these are out of scope entirely. | |||
| A cipher suite that operates in CBC (cipher block chaining) mode | A cipher suite that operates in CBC (cipher block chaining) mode | |||
| (e.g., TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) SHOULD NOT be used | (e.g., TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) SHOULD NOT be used | |||
| unless the encrypt_then_mac extension [RFC7366] is also successfully | unless the encrypt_then_mac extension [RFC7366] is also successfully | |||
| negotiated. This requirement applies to both client and server | negotiated. This requirement applies to both client and server | |||
| implementations. | implementations. | |||
| When using ECDSA signatures for authentication of TLS peers, it is | When using ECDSA signatures for authentication of TLS peers, it is | |||
| RECOMMENDED that implementations use the NIST curve P-256. In | RECOMMENDED that implementations use the NIST curve P-256. In | |||
| addition, to avoid predictable or repeated nonces (that would allow | addition, to avoid predictable or repeated nonces (which could reveal | |||
| revealing the long term signing key), it is RECOMMENDED that | the long-term signing key), it is RECOMMENDED that implementations | |||
| implementations implement "deterministic ECDSA" as specified in | implement "deterministic ECDSA" as specified in [RFC6979] and in line | |||
| [RFC6979] and in line with the recommendations in [RFC8446]. | with the recommendations in [RFC8446]. | |||
| Note that implementations of "deterministic ECDSA" may be vulnerable | Note that implementations of "deterministic ECDSA" may be vulnerable | |||
| to certain side-channel and fault injection attacks precisely because | to certain side-channel and fault injection attacks precisely because | |||
| of their determinism. While most fault attacks described in the | of their determinism. While most fault injection attacks described | |||
| literature assume physical access to the device (and therefore are | in the literature assume physical access to the device (and therefore | |||
| more relevant in IoT deployments with poor or non-existent physical | are more relevant in Internet of Things (IoT) deployments with poor | |||
| security), some can be carried out remotely [Poddebniak2017], e.g., | or non-existent physical security), some can be carried out remotely | |||
| as Rowhammer [Kim2014] variants. In deployments where side-channel | [Poddebniak2017], e.g., as Rowhammer [Kim2014] variants. In | |||
| attacks and fault injection attacks are a concern, implementation | deployments where side-channel attacks and fault injection attacks | |||
| strategies combining both randomness and determinism (for example, as | are a concern, implementation strategies combining both randomness | |||
| described in [I-D.mattsson-cfrg-det-sigs-with-noise]) can be used to | and determinism (for example, as described in [CFRG-DET-SIGS]) can be | |||
| avoid the risk of successful extraction of the signing key. | used to avoid the risk of successful extraction of the signing key. | |||
| 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. Servers MUST prefer this cipher suite | first proposal to any server. Servers MUST prefer this cipher suite | |||
| over weaker cipher suites whenever it is proposed, even if it is not | over weaker cipher suites whenever it is proposed, even if it is not | |||
| the first proposal. Clients are of course free to offer stronger | the first proposal. Clients are of course free to offer stronger | |||
| cipher suites, e.g., using AES-256; when they do, the server SHOULD | cipher suites, e.g., using AES-256; when they do, the server SHOULD | |||
| prefer the stronger cipher suite unless there are compelling reasons | prefer the stronger cipher suite unless there are compelling reasons | |||
| (e.g., seriously degraded performance) to choose otherwise. | (e.g., seriously degraded performance) to choose otherwise. | |||
| The previous version of this document implicitly allowed the old RFC | The previous version of the TLS recommendations [RFC7525] implicitly | |||
| 5246 mandatory-to-implement cipher suite, | allowed the old RFC 5246 mandatory-to-implement cipher suite, | |||
| TLS_RSA_WITH_AES_128_CBC_SHA. At the time of writing, this cipher | TLS_RSA_WITH_AES_128_CBC_SHA. At the time of writing, this cipher | |||
| suite does not provide additional interoperability, except with very | suite does not provide additional interoperability, except with very | |||
| old clients. As with other cipher suites that do not provide forward | old clients. As with other cipher suites that do not provide forward | |||
| secrecy, implementations SHOULD NOT support this cipher suite. Other | secrecy, implementations SHOULD NOT support this cipher suite. Other | |||
| application protocols specify other cipher suites as mandatory to | application protocols specify other cipher suites as mandatory to | |||
| implement (MTI). | implement (MTI). | |||
| [RFC8422] allows clients and servers to negotiate ECDH parameters | [RFC8422] 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 [RFC8422]. Clients and servers SHOULD | Elliptic Curves Extension" [RFC8422]. Clients and servers SHOULD | |||
| support the NIST P-256 (secp256r1) [RFC8422] and X25519 (x25519) | support the NIST P-256 (secp256r1) [RFC8422] and X25519 (x25519) | |||
| [RFC7748] curves. Note that [RFC8422] deprecates all but the | [RFC7748] curves. Note that [RFC8422] deprecates all but the | |||
| uncompressed point format. Therefore, if the client sends an | uncompressed point format. Therefore, if the client sends an | |||
| ec_point_formats extension, the ECPointFormatList MUST contain a | ec_point_formats extension, the ECPointFormatList MUST contain a | |||
| single element, "uncompressed". | single element, "uncompressed". | |||
| 4.3. Cipher Suites for TLS 1.3 | 4.3. Cipher Suites for TLS 1.3 | |||
| This document does not specify any cipher suites for TLS 1.3. | This document does not specify any cipher suites for TLS 1.3. | |||
| Readers are referred to Section 9.1 of [RFC8446] for cipher suite | Readers are referred to Section 9.1 of [RFC8446] for cipher suite | |||
| skipping to change at page 19, line 47 ¶ | skipping to change at line 889 ¶ | |||
| be able to emulate that method given their more constrained | be able to emulate that method given their more constrained | |||
| interaction with TLS/DTLS. As a result of these complexities, these | interaction with TLS/DTLS. As a result of these complexities, these | |||
| recommendations are not mandatory. | recommendations are not mandatory. | |||
| For all TLS 1.3 cipher suites, readers are referred to Section 5.5 of | For all TLS 1.3 cipher suites, readers are referred to Section 5.5 of | |||
| [RFC8446] for the values of CL and IL. For all DTLS 1.3 cipher | [RFC8446] for the values of CL and IL. For all DTLS 1.3 cipher | |||
| suites, readers are referred to Section 4.5.3 of [RFC9147]. | suites, readers are referred to Section 4.5.3 of [RFC9147]. | |||
| For all AES-GCM cipher suites recommended for TLS 1.2 and DTLS 1.2 in | For all AES-GCM cipher suites recommended for TLS 1.2 and DTLS 1.2 in | |||
| this document, CL can be derived by plugging the corresponding | this document, CL can be derived by plugging the corresponding | |||
| parameters into the inequalities in Section 6.1 of | parameters into the inequalities in Section 6.1 of [AEAD-LIMITS] that | |||
| [I-D.irtf-cfrg-aead-limits] that apply to random, partially implicit | apply to random, partially implicit nonces, i.e., the nonce | |||
| nonces, i.e., the nonce construction used in TLS 1.2. Although the | construction used in TLS 1.2. Although the obtained figures are | |||
| obtained figures are slightly higher than those for TLS 1.3, it is | slightly higher than those for TLS 1.3, it is RECOMMENDED that the | |||
| RECOMMENDED that the same limit of 2^24.5 records is used for both | same limit of 2^24.5 records is used for both versions. | |||
| versions. | ||||
| For all AES-GCM cipher suites recommended for DTLS 1.2, IL (obtained | For all AES-GCM cipher suites recommended for DTLS 1.2, IL (obtained | |||
| from the same inequalities referenced above) is 2^28. | from the same inequalities referenced above) is 2^28. | |||
| 4.5. Public Key Length | 4.5. 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. | |||
| skipping to change at page 20, line 27 ¶ | skipping to change at line 917 ¶ | |||
| bits are REQUIRED. | bits are REQUIRED. | |||
| 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]. A DH key of 2048 | equivalent to a 100-bit symmetric key [RFC3766]. A DH key of 2048 | |||
| bits (equivalent to a 112-bit symmetric key) is the minimum allowed | bits (equivalent to a 112-bit symmetric key) is the minimum allowed | |||
| by the latest revision of [NIST.SP.800-56A], as of this writing (see | by the latest revision of [NIST.SP.800-56A] as of this writing (see | |||
| in particular Appendix D). | in particular Appendix D of that document). | |||
| As noted in [RFC3766], correcting for the emergence of a TWIRL | As noted in [RFC3766], correcting for the emergence of The Weizmann | |||
| machine [TWIRL] would imply that 1024-bit DH keys yield about 61 bits | Institute Relation Locator (TWIRL) machine [TWIRL] would imply that | |||
| of equivalent strength and that a 2048-bit DH key would yield about | 1024-bit DH keys yield about 61 bits of equivalent strength and that | |||
| 92 bits of equivalent strength. The Logjam attack [Logjam] further | a 2048-bit DH key would yield about 92 bits of equivalent strength. | |||
| demonstrates that 1024-bit Diffie-Hellman parameters should be | The Logjam attack [Logjam] further demonstrates that 1024-bit Diffie- | |||
| avoided. | Hellman parameters should be avoided. | |||
| With regard to ECDH keys, implementers are referred to the IANA | With regard to ECDH keys, implementers are referred to the IANA "TLS | |||
| "Supported Groups Registry" (former "EC Named Curve Registry"), | Supported Groups" registry (formerly known as the "EC Named Curve | |||
| within the "Transport Layer Security (TLS) Parameters" registry | Registry") within the "Transport Layer Security (TLS) Parameters" | |||
| [IANA_TLS], and in particular to the "recommended" groups. Curves of | registry [IANA_TLS] and in particular to the "recommended" groups. | |||
| less than 224 bits MUST NOT be used. This recommendation is in-line | Curves of less than 224 bits MUST NOT be used. This recommendation | |||
| with the latest revision of [NIST.SP.800-56A]. | is in line with the latest revision of [NIST.SP.800-56A]. | |||
| When using RSA, servers MUST authenticate using certificates with at | When using RSA, servers MUST 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 and SHA-1 or MD5 MUST NOT | the SHA-256 hash algorithm is RECOMMENDED and SHA-1 or MD5 MUST NOT | |||
| be used ([RFC9155], and see [CAB-Baseline] for more details). | be used [RFC9155] (for more details, see also [CAB-Baseline], for | |||
| Clients MUST indicate to servers that they request SHA-256, by using | which the current version at the time of writing is 1.8.4). Clients | |||
| the "Signature Algorithms" extension defined in TLS 1.2. For TLS | MUST indicate to servers that they request SHA-256 by using the | |||
| 1.3, the same requirement is already specified by [RFC8446]. | "Signature Algorithms" extension defined in TLS 1.2. For TLS 1.3, | |||
| the same requirement is already specified by [RFC8446]. | ||||
| // Note to RFC Editor: we are looking for advice on how to best | ||||
| // handle this constantly updated guidance from the CA/Browser Forum. | ||||
| // In particular: which URL to use, which (if any) version to | ||||
| // reference | ||||
| 4.6. Truncated HMAC | 4.6. 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 recommendations of this document primarily apply to the | The recommendations of this document primarily apply to the | |||
| implementation and deployment of application protocols that are most | implementation and deployment of application protocols that are most | |||
| commonly used with TLS and DTLS on the Internet today. Examples | commonly used with TLS and DTLS on the Internet today. Examples | |||
| include, but are not limited to: | include, but are not limited to: | |||
| * Web software and services that wish to protect HTTP traffic with | * Web software and services that wish to protect HTTP traffic with | |||
| TLS. | TLS. | |||
| * Email software and services that wish to protect IMAP, POP3, or | * Email software and services that wish to protect IMAP, Post Office | |||
| SMTP traffic with TLS. | Protocol version 3 (POP3), or SMTP traffic with TLS. | |||
| * Instant-messaging software and services that wish to protect | * Instant-messaging software and services that wish to protect | |||
| Extensible Messaging and Presence Protocol (XMPP) or Internet | Extensible Messaging and Presence Protocol (XMPP) or Internet | |||
| Relay Chat (IRC) traffic with TLS. | Relay Chat (IRC) traffic with TLS. | |||
| * Realtime media software and services that wish to protect Secure | * Realtime media software and services that wish to protect Secure | |||
| Realtime Transport Protocol (SRTP) traffic with DTLS. | Realtime Transport Protocol (SRTP) traffic with DTLS. | |||
| This document does not modify the implementation and deployment | This document does not modify the implementation and deployment | |||
| recommendations (e.g., mandatory-to-implement cipher suites) | recommendations (e.g., mandatory-to-implement cipher suites) | |||
| skipping to change at page 22, line 13 ¶ | skipping to change at line 989 ¶ | |||
| which updates [RFC6120]). | which updates [RFC6120]). | |||
| Designers of new application protocols developed through the Internet | Designers of new application protocols developed through the Internet | |||
| Standards Process [RFC2026] are expected at minimum to conform to the | Standards Process [RFC2026] are expected at minimum to conform to the | |||
| best practices recommended here, unless they provide documentation of | best practices recommended here, unless they provide documentation of | |||
| compelling reasons that would prevent such conformance (e.g., | compelling reasons that would prevent such conformance (e.g., | |||
| widespread deployment on constrained devices that lack support for | widespread deployment on constrained devices that lack support for | |||
| the necessary algorithms). | the necessary algorithms). | |||
| Although many of the recommendations provided here might also apply | Although many of the recommendations provided here might also apply | |||
| to QUIC insofar it uses the TLS 1.3 handshake protocol, QUIC and | to QUIC insofar that it uses the TLS 1.3 handshake protocol, QUIC and | |||
| other such secure transport protocols are out of scope of this | other such secure transport protocols are out of scope of this | |||
| document. For QUIC specifically, readers are referred to Section 9.2 | document. For QUIC specifically, readers are referred to Section 9.2 | |||
| of [RFC9001]. | of [RFC9001]. | |||
| This document does not address the use of TLS in constrained-node | This document does not address the use of TLS in constrained-node | |||
| networks [RFC7228]. For recommendations regarding the profiling of | networks [RFC7228]. For recommendations regarding the profiling of | |||
| TLS and DTLS for small devices with severe constraints on power, | TLS and DTLS for small devices with severe constraints on power, | |||
| memory, and processing resources, the reader is referred to [RFC7925] | memory, and processing resources, the reader is referred to [RFC7925] | |||
| and [I-D.ietf-uta-tls13-iot-profile]. | and [IOT-PROFILE]. | |||
| 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: | |||
| * Confidentiality: all application-layer communication is encrypted | Confidentiality: all application-layer communication is encrypted | |||
| with the goal that no party should be able to decrypt it except | with the goal that no party should be able to decrypt it except | |||
| the intended receiver. | the intended receiver. | |||
| * Data integrity: any changes made to the communication in transit | Data integrity: any changes made to the communication in transit are | |||
| are detectable by the receiver. | detectable by the receiver. | |||
| * Authentication: an endpoint of the TLS communication is | Authentication: an endpoint 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 endpoints in the communication. In the context of opportunistic | both endpoints in the communication. In the context of opportunistic | |||
| security [RFC7435], TLS is sometimes used without authentication. As | security [RFC7435], TLS is sometimes used without authentication. As | |||
| discussed in Section 5.2, considerations for opportunistic security | discussed in Section 5.2, considerations for opportunistic security | |||
| are not in scope for this document. | are not in scope for this document. | |||
| If deployers deviate from the recommendations given in this document, | If deployers deviate from the recommendations given in this document, | |||
| they need to be aware that they might lose access to one of the | they need to be aware that they might lose access to one of the | |||
| skipping to change at page 23, line 16 ¶ | skipping to change at line 1040 ¶ | |||
| 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). | |||
| This document addresses itself to application protocols that are most | This document addresses itself to application protocols that are most | |||
| commonly used on the Internet with TLS and DTLS. Typically, all | commonly used on the Internet with TLS and DTLS. Typically, all | |||
| communication between TLS clients and TLS servers requires all three | communication between TLS clients and TLS servers requires all three | |||
| of the above security services. This is particularly true where TLS | of the above security services. This is particularly true where TLS | |||
| clients are user agents like Web browsers or email software. | clients are user agents like web browsers or email clients. | |||
| 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 in Section 5.2 below. As another scenario where | case described in Section 5.2. As another scenario where | |||
| confidentiality is not needed, consider a monitored network where the | confidentiality is not needed, consider a monitored network where the | |||
| authorities in charge of the respective traffic domain require full | authorities in charge of the respective traffic domain require full | |||
| access to unencrypted (plaintext) traffic, and where users | access to unencrypted (plaintext) traffic and where users collaborate | |||
| collaborate and send their traffic in the clear. | and send their traffic in the clear. | |||
| 5.2. Opportunistic Security | 5.2. Opportunistic Security | |||
| There are several important scenarios in which the use of TLS is | There are several important scenarios in which the use of TLS is | |||
| optional, i.e., the client decides dynamically ("opportunistically") | optional, i.e., the client decides dynamically ("opportunistically") | |||
| whether to use TLS with a particular server or to connect in the | whether to use TLS with a particular server or to connect in the | |||
| clear. This practice, often called "opportunistic security", is | clear. This practice, often called "opportunistic security", is | |||
| described at length in [RFC7435] and is often motivated by a desire | described at length in [RFC7435] and is often motivated by a desire | |||
| for backward compatibility with legacy deployments. | for backward compatibility with legacy deployments. | |||
| skipping to change at page 23, line 51 ¶ | skipping to change at line 1075 ¶ | |||
| This document has no IANA actions. | This document has no IANA actions. | |||
| 7. Security Considerations | 7. Security Considerations | |||
| This entire document discusses the security practices directly | This entire document discusses the security practices directly | |||
| affecting applications using the TLS protocol. This section contains | affecting applications using the TLS protocol. This section contains | |||
| broader security considerations related to technologies used in | broader security considerations related to technologies used in | |||
| conjunction with or by TLS. The reader is referred to the Security | conjunction with or by TLS. The reader is referred to the Security | |||
| Considerations sections of TLS 1.3 [RFC8446], DTLS 1.3 [RFC9147], TLS | Considerations sections of TLS 1.3 [RFC8446], DTLS 1.3 [RFC9147], TLS | |||
| 1.2 [RFC5246] and DTLS 1.2 [RFC6347] for further context. | 1.2 [RFC5246], and DTLS 1.2 [RFC6347] for further context. | |||
| 7.1. Host Name Validation | 7.1. Host Name Validation | |||
| Application authors should take note that some TLS implementations do | Application authors should take note that some TLS implementations do | |||
| not validate host names. If the TLS implementation they are using | not validate host names. If the TLS implementation they are using | |||
| does not validate host names, authors might need to write their own | does not validate host names, authors might need to write their own | |||
| validation code or consider using a different TLS implementation. | validation code or consider using a different TLS implementation. | |||
| It is noted that the requirements regarding host name validation | It is noted that the requirements regarding host name validation | |||
| (and, in general, binding between the TLS layer and the protocol that | (and, in general, binding between the TLS layer and the protocol that | |||
| runs above it) vary between different protocols. For HTTPS, these | runs above it) vary between different protocols. For HTTPS, these | |||
| requirements are defined by Sections 4.3.3, 4.3.4 and 4.3.5 of | requirements are defined by Sections 4.3.3, 4.3.4, and 4.3.5 of | |||
| [HTTP-SEMA]. | [RFC9110]. | |||
| Host name validation is security-critical for all common TLS use | Host name validation is security-critical for all common TLS use | |||
| cases. Without it, TLS ensures that the certificate is valid and | cases. Without it, TLS ensures that the certificate is valid and | |||
| guarantees possession of the private key, but does not ensure that | guarantees possession of the private key but does not ensure that the | |||
| the connection terminates at the desired endpoint. Readers are | connection terminates at the desired endpoint. Readers are referred | |||
| referred to [RFC6125] for further details regarding generic host name | to [RFC6125] for further details regarding generic host name | |||
| validation in the TLS context. In addition, that RFC contains a long | validation in the TLS context. In addition, that RFC contains a long | |||
| list of example protocols, some of which implement a policy very | list of application protocols, some of which implement a policy very | |||
| different from HTTPS. | different from HTTPS. | |||
| If the host name is discovered indirectly and insecurely (e.g., by a | If the host name is discovered indirectly and insecurely (e.g., by a | |||
| clear-text DNS query for an SRV or MX record), it SHOULD NOT be used | cleartext DNS query for an SRV or Mail Exchange (MX) record), it | |||
| as a reference identifier [RFC6125] even when it matches the | SHOULD NOT be used as a reference identifier [RFC6125] even when it | |||
| presented certificate. This proviso does not apply if the host name | matches the presented certificate. This proviso does not apply if | |||
| is discovered securely (for further discussion, see [DANE-SRV] and | the host name is discovered securely (for further discussion, see | |||
| [DANE-SMTP]). | [RFC7673] and [RFC7672]). | |||
| Host name validation typically applies only to the leaf "end entity" | Host name validation typically applies only to the leaf "end entity" | |||
| certificate. Naturally, in order to ensure proper authentication in | certificate. Naturally, in order to ensure proper authentication in | |||
| the context of the PKI, application clients need to verify the entire | the context of the PKI, application clients need to verify the entire | |||
| certification path in accordance with [RFC5280]. | certification path in accordance with [RFC5280]. | |||
| 7.2. AES-GCM | 7.2. AES-GCM | |||
| Section 4.2 above recommends the use of the AES-GCM authenticated | Section 4.2 recommends the use of the AES-GCM authenticated | |||
| encryption algorithm. Please refer to Section 6 of [RFC5288] for | encryption algorithm. Please refer to Section 6 of [RFC5288] for | |||
| security considerations that apply specifically to AES-GCM when used | security considerations that apply specifically to AES-GCM when used | |||
| with TLS. | with TLS. | |||
| 7.2.1. Nonce Reuse in TLS 1.2 | 7.2.1. Nonce Reuse in TLS 1.2 | |||
| The existence of deployed TLS stacks that mistakenly reuse the AES- | The existence of deployed TLS stacks that mistakenly reuse the AES- | |||
| GCM nonce is documented in [Boeck2016], showing there is an actual | GCM nonce is documented in [Boeck2016], showing there is an actual | |||
| risk of AES-GCM getting implemented insecurely and thus making TLS | risk of AES-GCM getting implemented insecurely and thus making TLS | |||
| sessions that use an AES-GCM cipher suite vulnerable to attacks such | sessions that use an AES-GCM cipher suite vulnerable to attacks such | |||
| as [Joux2006]. (See [CVE] records: CVE-2016-0270, CVE-2016-10213, | as [Joux2006]. (See [CVE] records: CVE-2016-0270, CVE-2016-10213, | |||
| CVE-2016-10212, CVE-2017-5933.) | CVE-2016-10212, and CVE-2017-5933.) | |||
| While this problem has been fixed in TLS 1.3, which enforces a | While this problem has been fixed in TLS 1.3, which enforces a | |||
| deterministic method to generate nonces from record sequence numbers | deterministic method to generate nonces from record sequence numbers | |||
| and shared secrets for all of its AEAD cipher suites (including AES- | and shared secrets for all its AEAD cipher suites (including AES- | |||
| GCM), TLS 1.2 implementations could still choose their own | GCM), TLS 1.2 implementations could still choose their own | |||
| (potentially insecure) nonce generation methods. | (potentially insecure) nonce generation methods. | |||
| It is therefore RECOMMENDED that TLS 1.2 implementations use the | It is therefore RECOMMENDED that TLS 1.2 implementations use the | |||
| 64-bit sequence number to populate the nonce_explicit part of the GCM | 64-bit sequence number to populate the nonce_explicit part of the GCM | |||
| nonce, as described in the first two paragraphs of Section 5.3 of | nonce, as described in the first two paragraphs of Section 5.3 of | |||
| [RFC8446]. This stronger recommendation updates Section 3 of | [RFC8446]. This stronger recommendation updates Section 3 of | |||
| [RFC5288], which specified that the use of 64-bit sequence numbers to | [RFC5288], which specifies that the use of 64-bit sequence numbers to | |||
| populate the nonce_explicit field was optional. | populate the nonce_explicit field is optional. | |||
| We note that at the time of writing there are no cipher suites | We note that at the time of writing, there are no cipher suites | |||
| defined for nonce reuse resistant algorithms such as AES-GCM-SIV | defined for nonce-reuse-resistant algorithms such as AES-GCM-SIV | |||
| [RFC8452]. | [RFC8452]. | |||
| 7.3. Forward Secrecy | 7.3. Forward Secrecy | |||
| Forward secrecy (also called "perfect forward secrecy" or "PFS" and | Forward secrecy (also called "perfect forward secrecy" or "PFS" and | |||
| defined in [RFC4949]) is a defense against an attacker who records | defined in [RFC4949]) is a defense against an attacker who records | |||
| encrypted conversations where the session keys are only encrypted | encrypted conversations where the session keys are only encrypted | |||
| with the communicating parties' long-term keys. | with the communicating parties' long-term keys. | |||
| Should the attacker be able to obtain these long-term keys at some | Should the attacker be able to obtain these long-term keys at some | |||
| skipping to change at page 26, line 5 ¶ | skipping to change at line 1166 ¶ | |||
| not entirely implausible. It can happen, for example, due to: | not entirely implausible. It can happen, for example, due to: | |||
| * A client or server being attacked by some other attack vector, and | * A client or server being attacked by some other attack vector, and | |||
| the private key retrieved. | the private key retrieved. | |||
| * A long-term key retrieved from a device that has been sold or | * A long-term key retrieved from a device that has been sold or | |||
| otherwise decommissioned without prior wiping. | otherwise decommissioned without prior wiping. | |||
| * A long-term key used on a device as a default key [Heninger2012]. | * A long-term key used on a device as a default key [Heninger2012]. | |||
| * A key generated by a trusted third party like a CA, and later | * A key generated by a trusted third party like a CA and later | |||
| retrieved from it either by extortion or compromise | retrieved from it by either extortion or compromise | |||
| [Soghoian2011]. | [Soghoian2011]. | |||
| * A cryptographic break-through, or the use of asymmetric keys with | * A cryptographic breakthrough or the use of asymmetric keys with | |||
| insufficient length [Kleinjung2010]. | insufficient length [Kleinjung2010]. | |||
| * Social engineering attacks against system administrators. | * Social engineering attacks against system administrators. | |||
| * Collection of private keys from inadequately protected backups. | * Collection of private keys from inadequately protected backups. | |||
| Forward secrecy ensures in such cases that it is not feasible for an | Forward secrecy ensures in such cases that it is not feasible for an | |||
| attacker to determine the session keys even if the attacker has | attacker to determine the session keys even if the attacker has | |||
| obtained the long-term keys some time after the conversation. It | obtained the long-term keys some time after the conversation. It | |||
| also protects against an attacker who is in possession of the long- | also protects against an attacker who is in possession of the long- | |||
| skipping to change at page 26, line 31 ¶ | skipping to change at line 1192 ¶ | |||
| 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 the parties to | so-called Discrete Logarithm Problem (DLP) allow the parties to | |||
| derive the session keys without an eavesdropper being able to do so. | derive the session keys without an eavesdropper being able to do so. | |||
| There is 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 | |||
| arithmetic. Given the current state of the art, elliptic-curve | arithmetic. Given the current state of the art, Elliptic Curve | |||
| Diffie-Hellman appears to be more efficient, permits shorter key | Diffie-Hellman appears to be more efficient, permits shorter key | |||
| lengths, and allows less freedom for implementation errors than | lengths, and allows less freedom for implementation errors than | |||
| finite-field Diffie-Hellman. | finite-field Diffie-Hellman. | |||
| 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. This | feature forward secrecy, e.g., TLS_RSA_WITH_AES_256_CBC_SHA256. This | |||
| document therefore advocates strict use of forward-secrecy-only | document therefore advocates strict use of forward-secrecy-only | |||
| ciphers. | ciphers. | |||
| 7.4. Diffie-Hellman Exponent Reuse | 7.4. Diffie-Hellman Exponent Reuse | |||
| skipping to change at page 27, line 18 ¶ | skipping to change at line 1227 ¶ | |||
| time of writing, although general guidance in this area is | time of writing, although general guidance in this area is | |||
| provided by [NIST.SP.800-56A] and available in many protocol | provided by [NIST.SP.800-56A] and available in many protocol | |||
| implementations. | implementations. | |||
| * Under certain conditions, the use of static finite-field DH keys, | * Under certain conditions, the use of static finite-field DH keys, | |||
| or of ephemeral finite-field DH keys that are reused across | or of ephemeral finite-field DH keys that are reused across | |||
| multiple connections, can lead to timing attacks (such as those | multiple connections, can lead to timing attacks (such as those | |||
| described in [RACCOON]) on the shared secrets used in Diffie- | described in [RACCOON]) on the shared secrets used in Diffie- | |||
| Hellman key exchange. | Hellman key exchange. | |||
| * An "invalid curve" attack can be mounted against elliptic-curve DH | * An "invalid curve" attack can be mounted against Elliptic Curve DH | |||
| if the victim does not verify that the received point lies on the | if the victim does not verify that the received point lies on the | |||
| correct curve. If the victim is reusing the DH secrets, the | correct curve. If the victim is reusing the DH secrets, the | |||
| attacker can repeat the probe varying the points to recover the | attacker can repeat the probe varying the points to recover the | |||
| full secret (see [Antipa2003] and [Jager2015]). | full secret (see [Antipa2003] and [Jager2015]). | |||
| To address these concerns: | To address these concerns: | |||
| * TLS implementations SHOULD NOT use static finite-field DH keys and | * TLS implementations SHOULD NOT use static finite-field DH keys and | |||
| SHOULD NOT reuse ephemeral finite-field DH keys across multiple | SHOULD NOT reuse ephemeral finite-field DH keys across multiple | |||
| connections. | connections. | |||
| * Server implementations that want to reuse elliptic-curve DH keys | * Server implementations that want to reuse Elliptic Curve DH keys | |||
| SHOULD either use a "safe curve" [SAFECURVES] (e.g., X25519), or | SHOULD either use a "safe curve" [SAFECURVES] (e.g., X25519) or | |||
| perform the checks described in [NIST.SP.800-56A] on the received | perform the checks described in [NIST.SP.800-56A] on the received | |||
| points. | points. | |||
| 7.5. Certificate Revocation | 7.5. Certificate Revocation | |||
| The following considerations and recommendations represent the | The following considerations and recommendations represent the | |||
| current state of the art regarding certificate revocation, even | current state of the art regarding certificate revocation, even | |||
| though no complete and efficient solution exists for the problem of | though no complete and efficient solution exists for the problem of | |||
| checking the revocation status of common public key certificates | checking the revocation status of common public key certificates | |||
| [RFC5280]: | [RFC5280]: | |||
| * Certificate revocation is an important tool when recovering from | * Certificate revocation is an important tool when recovering from | |||
| attacks on the TLS implementation, as well as cases of misissued | attacks on the TLS implementation as well as cases of misissued | |||
| certificates. TLS implementations MUST implement a strategy to | certificates. TLS implementations MUST implement a strategy to | |||
| distrust revoked certificates. | distrust revoked certificates. | |||
| * Although Certificate Revocation Lists (CRLs) are the most widely | * 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. The more | workarounds such as partitioned CRLs and delta CRLs. The more | |||
| modern [CRLite] and the follow-on Let's Revoke [LetsRevoke] build | modern [CRLite] and the follow-on Let's Revoke [LetsRevoke] build | |||
| on the availability of Certificate Transparency [RFC9162] logs and | on the availability of Certificate Transparency [RFC9162] logs and | |||
| aggressive compression to allow practical use of the CRL | aggressive compression to allow practical use of the CRL | |||
| infrastructure, but at the time of writing, neither solution is | infrastructure, but at the time of writing, neither solution is | |||
| deployed for client-side revocation processing at scale. | deployed for client-side revocation processing at scale. | |||
| * Proprietary mechanisms that embed revocation lists in the Web | * Proprietary mechanisms that embed revocation lists in the web | |||
| browser's configuration database cannot scale beyond the few, most | browser's configuration database cannot scale beyond the few most | |||
| heavily used Web servers. | heavily used web servers. | |||
| * The On-Line Certification Status Protocol (OCSP) [RFC6960] in its | * The Online Certification Status Protocol (OCSP) [RFC6960] in its | |||
| basic form presents both scaling and privacy issues. In addition, | basic form presents both scaling and privacy issues. In addition, | |||
| clients typically "soft-fail", meaning that they do not abort the | clients typically "soft-fail", meaning that they do not abort the | |||
| TLS connection if the OCSP server does not respond. (However, | TLS connection if the OCSP server does not respond. (However, | |||
| this might be a workaround to avoid denial-of-service attacks if | this might be a workaround to avoid denial-of-service attacks if | |||
| an OCSP responder is taken offline.). For an up-to-date survey of | an OCSP responder is taken offline.) For a recent survey of the | |||
| the status of OCSP deployment in the Web PKI see [Chung18]. | status of OCSP deployment in the web PKI, see [Chung18]. | |||
| * The TLS Certificate Status Request extension (Section 8 of | * The TLS Certificate Status Request extension (Section 8 of | |||
| [RFC6066]), commonly called "OCSP stapling", resolves the | [RFC6066]), commonly called "OCSP stapling", resolves the | |||
| operational issues with OCSP. However, it is still ineffective in | operational issues with OCSP. However, it is still ineffective in | |||
| the presence of a MITM attacker because the attacker can simply | the presence of an active on-path attacker because the attacker | |||
| ignore the client's request for a stapled OCSP response. | can simply ignore the client's request for a stapled OCSP | |||
| response. | ||||
| * [RFC7633] defines a certificate extension that indicates that | * [RFC7633] defines a certificate extension that indicates that | |||
| clients must expect stapled OCSP responses for the certificate and | clients must expect stapled OCSP responses for the certificate and | |||
| must abort the handshake ("hard-fail") if such a response is not | must abort the handshake ("hard-fail") if such a response is not | |||
| available. | available. | |||
| * OCSP stapling as used in TLS 1.2 does not extend to intermediate | * OCSP stapling as used in TLS 1.2 does not extend to intermediate | |||
| certificates within a certificate chain. The Multiple Certificate | certificates within a certificate chain. The Multiple Certificate | |||
| Status extension [RFC6961] addresses this shortcoming, but it has | Status extension [RFC6961] addresses this shortcoming, but it has | |||
| seen little deployment and had been deprecated by [RFC8446]. As a | seen little deployment and had been deprecated by [RFC8446]. As a | |||
| result, we no longer recommend this extension for TLS 1.2. | result, although this extension was recommended for TLS 1.2 in | |||
| [RFC7525], it is no longer recommended by this document. | ||||
| * TLS 1.3 (Section 4.4.2.1 of [RFC8446]) allows the association of | * TLS 1.3 (Section 4.4.2.1 of [RFC8446]) allows the association of | |||
| OCSP information with intermediate certificates by using an | OCSP information with intermediate certificates by using an | |||
| extension to the CertificateEntry structure. However, using this | extension to the CertificateEntry structure. However, using this | |||
| facility remains impractical because many CAs either do not | facility remains impractical because many certification | |||
| publish OCSP for CA certificates or publish OCSP reports with a | authorities (CAs) either do not publish OCSP for CA certificates | |||
| lifetime that is too long to be useful. | or publish OCSP reports with a lifetime that is too long to be | |||
| useful. | ||||
| * Both CRLs and OCSP depend on relatively reliable connectivity to | * Both CRLs and OCSP 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. A common example is newly provisioned devices that need to | nodes. A common example is newly provisioned devices that need to | |||
| establish a secure connection in order to boot up for the first | establish a secure connection in order to boot up for the first | |||
| time. | time. | |||
| For the common use cases of public key certificates in TLS, servers | For the common use cases of public key certificates in TLS, servers | |||
| SHOULD support the following as a best practice given the current | SHOULD support the following as a best practice given the current | |||
| state of the art and as a foundation for a possible future solution: | state of the art and as a foundation for a possible future solution: | |||
| OCSP [RFC6960] and OCSP stapling using the status_request extension | OCSP [RFC6960] and OCSP stapling using the status_request extension | |||
| defined in [RFC6066]. Note that the exact mechanism for embedding | defined in [RFC6066]. Note that the exact mechanism for embedding | |||
| the status_request extension differs between TLS 1.2 and 1.3. As a | the status_request extension differs between TLS 1.2 and 1.3. As a | |||
| matter of local policy, server operators MAY request that CAs issue | matter of local policy, server operators MAY request that CAs issue | |||
| must-staple [RFC7633] certificates for the server and/or for client | must-staple [RFC7633] certificates for the server and/or for client | |||
| authentication, but we recommend to review the operational conditions | authentication, but we recommend reviewing the operational conditions | |||
| before deciding on this approach. | before deciding on this approach. | |||
| The considerations in this section do not apply to scenarios where | The considerations in this section do not apply to scenarios where | |||
| the DANE-TLSA resource record [RFC6698] is used to signal to a client | the DNS-Based Authentication of Named Entities (DANE) TLSA resource | |||
| which certificate a server considers valid and good to use for TLS | record [RFC6698] is used to signal to a client which certificate a | |||
| connections. | server considers valid and good to use for TLS connections. | |||
| Acknowledgments | ||||
| Thanks to Alexey Melnikov, Alvaro Retana, Andrei Popov, Ben Kaduk, | ||||
| Christian Huitema, Corey Bonnell, Cullen Jennings, Daniel Kahn | ||||
| Gillmor, David Benjamin, Eric Rescorla, Éric Vyncke, Francesca | ||||
| Palombini, Hannes Tschofenig, Hubert Kario, Ilari Liusvaara, John | ||||
| Mattsson, John R Levine, Julien Élie, Lars Eggert, Leif Johansson, | ||||
| Magnus Westerlund, Martin Duke, Martin Thomson, Mohit Sahni, Nick | ||||
| Sullivan, Nimrod Aviram, Paul Wouters, Peter Gutmann, Rich Salz, | ||||
| Robert Sayre, Robert Wilton, Roman Danyliw, Ryan Sleevi, Sean Turner, | ||||
| Stephen Farrell, Tim Evans, Valery Smyslov, Viktor Dukhovni and | ||||
| Warren Kumari for helpful comments and discussions that have shaped | ||||
| this document. | ||||
| The authors gratefully acknowledge the contribution of Ralph Holz, | ||||
| who was a coauthor of RFC 7525, the previous version of this | ||||
| document. | ||||
| See RFC 7525 for additional acknowledgments for the previous revision | ||||
| of this document. | ||||
| References | 8. References | |||
| Normative References | 8.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [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, DOI 10.17487/RFC3766, April 2004, | RFC 3766, DOI 10.17487/RFC3766, April 2004, | |||
| <https://www.rfc-editor.org/info/rfc3766>. | <https://www.rfc-editor.org/info/rfc3766>. | |||
| skipping to change at page 32, line 10 ¶ | skipping to change at line 1434 ¶ | |||
| [RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The | [RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The | |||
| Datagram Transport Layer Security (DTLS) Protocol Version | Datagram Transport Layer Security (DTLS) Protocol Version | |||
| 1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022, | 1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022, | |||
| <https://www.rfc-editor.org/info/rfc9147>. | <https://www.rfc-editor.org/info/rfc9147>. | |||
| [RFC9155] Velvindron, L., Moriarty, K., and A. Ghedini, "Deprecating | [RFC9155] Velvindron, L., Moriarty, K., and A. Ghedini, "Deprecating | |||
| MD5 and SHA-1 Signature Hashes in TLS 1.2 and DTLS 1.2", | MD5 and SHA-1 Signature Hashes in TLS 1.2 and DTLS 1.2", | |||
| RFC 9155, DOI 10.17487/RFC9155, December 2021, | RFC 9155, DOI 10.17487/RFC9155, December 2021, | |||
| <https://www.rfc-editor.org/info/rfc9155>. | <https://www.rfc-editor.org/info/rfc9155>. | |||
| Informative References | 8.2. Informative References | |||
| [AEAD-LIMITS] | ||||
| Günther, F., Thomson, M., and C. A. Wood, "Usage Limits on | ||||
| AEAD Algorithms", Work in Progress, Internet-Draft, draft- | ||||
| irtf-cfrg-aead-limits-05, 11 July 2022, | ||||
| <https://datatracker.ietf.org/doc/html/draft-irtf-cfrg- | ||||
| aead-limits-05>. | ||||
| [ALPACA] Brinkmann, M., Dresen, C., Merget, R., Poddebniak, D., | [ALPACA] Brinkmann, M., Dresen, C., Merget, R., Poddebniak, D., | |||
| Müller, J., Somorovsky, J., Schwenk, J., and S. Schinzel, | Müller, J., Somorovsky, J., Schwenk, J., and S. Schinzel, | |||
| "ALPACA: Application Layer Protocol Confusion - Analyzing | "ALPACA: Application Layer Protocol Confusion - Analyzing | |||
| and Mitigating Cracks in TLS Authentication", 30th USENIX | and Mitigating Cracks in TLS Authentication", 30th USENIX | |||
| Security Symposium (USENIX Security 21) , 2021, | Security Symposium (USENIX Security 21), August 2021, | |||
| <https://www.usenix.org/conference/usenixsecurity21/ | <https://www.usenix.org/conference/usenixsecurity21/ | |||
| presentation/brinkmann>. | presentation/brinkmann>. | |||
| [Antipa2003] | [Antipa2003] | |||
| Antipa, A., Brown, D. R. L., Menezes, A., Struik, R., and | Antipa, A., Brown, D. R. L., Menezes, A., Struik, R., and | |||
| S. A. Vanstone, "Validation of Elliptic Curve Public | S. Vanstone, "Validation of Elliptic Curve Public Keys", | |||
| Keys", Public Key Cryptography - PKC 2003 , 2003. | Public Key Cryptography - PKC 2003, December 2003, | |||
| <https://doi.org/10.1007/3-540-36288-6_16>. | ||||
| [Boeck2016] | [Boeck2016] | |||
| Böck, H., Zauner, A., Devlin, S., Somorovsky, J., and P. | Böck, H., Zauner, A., Devlin, S., Somorovsky, J., and P. | |||
| Jovanovic, "Nonce-Disrespecting Adversaries: Practical | Jovanovic, "Nonce-Disrespecting Adversaries: Practical | |||
| Forgery Attacks on GCM in TLS", May 2016, | Forgery Attacks on GCM in TLS", May 2016, | |||
| <https://eprint.iacr.org/2016/475.pdf>. | <https://eprint.iacr.org/2016/475.pdf>. | |||
| [CAB-Baseline] | [CAB-Baseline] | |||
| CA/Browser Forum, "Baseline Requirements for the Issuance | CA/Browser Forum, "Baseline Requirements for the Issuance | |||
| and Management of Publicly-Trusted Certificates Version | and Management of Publicly-Trusted Certificates", | |||
| 1.1.6", 2013, <https://cabforum.org/documents/>. | Version 1.8.4, April 2022, | |||
| <https://cabforum.org/documents/>. | ||||
| [CFRG-DET-SIGS] | ||||
| Preuß Mattsson, J., Thormarker, E., and S. Ruohomaa, | ||||
| "Deterministic ECDSA and EdDSA Signatures with Additional | ||||
| Randomness", Work in Progress, Internet-Draft, draft-irtf- | ||||
| cfrg-det-sigs-with-noise-00, 8 August 2022, | ||||
| <https://datatracker.ietf.org/doc/html/draft-irtf-cfrg- | ||||
| det-sigs-with-noise-00>. | ||||
| [Chung18] Chung, T., Lok, J., Chandrasekaran, B., Choffnes, D., | [Chung18] Chung, T., Lok, J., Chandrasekaran, B., Choffnes, D., | |||
| Levin, D., Maggs, B., Mislove, A., Rula, J., Sullivan, N., | Levin, D., Maggs, B., Mislove, A., Rula, J., Sullivan, N., | |||
| and C. Wilson, "Is the Web Ready for OCSP Must-Staple?", | and C. Wilson, "Is the Web Ready for OCSP Must-Staple?", | |||
| Proceedings of the Internet Measurement Conference 2018, | Proceedings of the Internet Measurement Conference 2018, | |||
| DOI 10.1145/3278532.3278543, October 2018, | DOI 10.1145/3278532.3278543, October 2018, | |||
| <https://doi.org/10.1145/3278532.3278543>. | <https://doi.org/10.1145/3278532.3278543>. | |||
| [CRLite] Larisch, J., Choffnes, D., Levin, D., Maggs, B., Mislove, | [CRLite] Larisch, J., Choffnes, D., Levin, D., Maggs, B., Mislove, | |||
| A., and C. Wilson, "CRLite: A Scalable System for Pushing | A., and C. Wilson, "CRLite: A Scalable System for Pushing | |||
| All TLS Revocations to All Browsers", 2017 IEEE Symposium | All TLS Revocations to All Browsers", 2017 IEEE Symposium | |||
| on Security and Privacy (SP), DOI 10.1109/sp.2017.17, May | on Security and Privacy (SP), DOI 10.1109/sp.2017.17, May | |||
| 2017, <https://doi.org/10.1109/sp.2017.17>. | 2017, <https://doi.org/10.1109/sp.2017.17>. | |||
| [CVE] MITRE, "Common Vulnerabilities and Exposures", | [CVE] Common Vulnerabilities and Exposures, "CVE Program", | |||
| <https://cve.mitre.org>. | MITRE, <https://cve.mitre.org>. | |||
| [DANE-SMTP] | ||||
| Dukhovni, V. and W. Hardaker, "SMTP Security via | ||||
| Opportunistic DNS-Based Authentication of Named Entities | ||||
| (DANE) Transport Layer Security (TLS)", RFC 7672, | ||||
| DOI 10.17487/RFC7672, October 2015, | ||||
| <https://www.rfc-editor.org/info/rfc7672>. | ||||
| [DANE-SRV] Finch, T., Miller, M., and P. Saint-Andre, "Using DNS- | ||||
| Based Authentication of Named Entities (DANE) TLSA Records | ||||
| with SRV Records", RFC 7673, DOI 10.17487/RFC7673, October | ||||
| 2015, <https://www.rfc-editor.org/info/rfc7673>. | ||||
| [DegabrieleP07] | [DegabrieleP07] | |||
| Degabriele, J. and K. Paterson, "Attacking the IPsec | Degabriele, J. and K. Paterson, "Attacking the IPsec | |||
| Standards in Encryption-only Configurations", 2007 IEEE | Standards in Encryption-only Configurations", 2007 IEEE | |||
| Symposium on Security and Privacy (SP '07), | Symposium on Security and Privacy (SP '07), | |||
| DOI 10.1109/sp.2007.8, May 2007, | DOI 10.1109/sp.2007.8, May 2007, | |||
| <https://doi.org/10.1109/sp.2007.8>. | <https://doi.org/10.1109/sp.2007.8>. | |||
| [DEP-SSLv3] | ||||
| Barnes, R., Thomson, M., Pironti, A., and A. Langley, | ||||
| "Deprecating Secure Sockets Layer Version 3.0", RFC 7568, | ||||
| DOI 10.17487/RFC7568, June 2015, | ||||
| <https://www.rfc-editor.org/info/rfc7568>. | ||||
| [DROWN] Aviram, N., Schinzel, S., Somorovsky, J., Heninger, N., | [DROWN] Aviram, N., Schinzel, S., Somorovsky, J., Heninger, N., | |||
| Dankel, M., Steube, J., Valenta, L., Adrian, D., | Dankel, M., Steube, J., Valenta, L., Adrian, D., | |||
| Halderman, J., Dukhovni, V., Käsper, E., Cohney, S., | Halderman, J., Dukhovni, V., Käsper, E., Cohney, S., | |||
| Engels, S., Paar, C., and Y. Shavitt, "DROWN: Breaking TLS | Engels, S., Paar, C., and Y. Shavitt, "DROWN: Breaking TLS | |||
| using SSLv2", 25th USENIX Security Symposium (USENIX | using SSLv2", 25th USENIX Security Symposium (USENIX | |||
| Security 16) , 2016, | Security 16), August 2016, | |||
| <https://www.usenix.org/conference/usenixsecurity16/ | <https://www.usenix.org/conference/usenixsecurity16/ | |||
| technical-sessions/presentation/aviram>. | technical-sessions/presentation/aviram>. | |||
| [Heninger2012] | [Heninger2012] | |||
| Heninger, N., Durumeric, Z., Wustrow, E., and J. A. | Heninger, N., Durumeric, Z., Wustrow, E., and J. A. | |||
| Halderman, "Mining Your Ps and Qs: Detection of Widespread | Halderman, "Mining Your Ps and Qs: Detection of Widespread | |||
| Weak Keys in Network Devices", Usenix Security | Weak Keys in Network Devices", 21st Usenix Security | |||
| Symposium 2012, 2012. | Symposium, August 2012. | |||
| [HTTP-SEMA] | ||||
| Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | ||||
| Ed., "HTTP Semantics", STD 97, RFC 9110, | ||||
| DOI 10.17487/RFC9110, June 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9110>. | ||||
| [HTTP1.1] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | ||||
| Ed., "HTTP/1.1", STD 99, RFC 9112, DOI 10.17487/RFC9112, | ||||
| June 2022, <https://www.rfc-editor.org/info/rfc9112>. | ||||
| [HTTP2] Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113, | ||||
| DOI 10.17487/RFC9113, June 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9113>. | ||||
| [I-D.ietf-tls-esni] | [IANA_TLS] IANA, "Transport Layer Security (TLS) Parameters", | |||
| Rescorla, E., Oku, K., Sullivan, N., and C. A. Wood, "TLS | <https://www.iana.org/assignments/tls-parameters>. | |||
| Encrypted Client Hello", Work in Progress, Internet-Draft, | ||||
| draft-ietf-tls-esni-14, 13 February 2022, | ||||
| <https://www.ietf.org/archive/id/draft-ietf-tls-esni- | ||||
| 14.txt>. | ||||
| [I-D.ietf-uta-tls13-iot-profile] | [IOT-PROFILE] | |||
| Tschofenig, H. and T. Fossati, "TLS/DTLS 1.3 Profiles for | Tschofenig, H. and T. Fossati, "TLS/DTLS 1.3 Profiles for | |||
| the Internet of Things", Work in Progress, Internet-Draft, | the Internet of Things", Work in Progress, Internet-Draft, | |||
| draft-ietf-uta-tls13-iot-profile-05, 6 July 2022, | draft-ietf-uta-tls13-iot-profile-05, 6 July 2022, | |||
| <https://www.ietf.org/archive/id/draft-ietf-uta-tls13-iot- | <https://datatracker.ietf.org/doc/html/draft-ietf-uta- | |||
| profile-05.txt>. | tls13-iot-profile-05>. | |||
| [I-D.irtf-cfrg-aead-limits] | ||||
| Günther, F., Thomson, M., and C. A. Wood, "Usage Limits on | ||||
| AEAD Algorithms", Work in Progress, Internet-Draft, draft- | ||||
| irtf-cfrg-aead-limits-05, 11 July 2022, | ||||
| <https://www.ietf.org/archive/id/draft-irtf-cfrg-aead- | ||||
| limits-05.txt>. | ||||
| [I-D.mattsson-cfrg-det-sigs-with-noise] | ||||
| Mattsson, J. P., Thormarker, E., and S. Ruohomaa, | ||||
| "Deterministic ECDSA and EdDSA Signatures with Additional | ||||
| Randomness", Work in Progress, Internet-Draft, draft- | ||||
| mattsson-cfrg-det-sigs-with-noise-04, 15 February 2022, | ||||
| <https://www.ietf.org/archive/id/draft-mattsson-cfrg-det- | ||||
| sigs-with-noise-04.txt>. | ||||
| [IANA_TLS] IANA, "Transport Layer Security (TLS) Parameters", 23 | ||||
| August 2005, | ||||
| <https://www.iana.org/assignments/tls-parameters>. | ||||
| [Jager2015] | [Jager2015] | |||
| Jager, T., Schwenk, J., and J. Somorovsky, "Practical | Jager, T., Schwenk, J., and J. Somorovsky, "Practical | |||
| Invalid Curve Attacks on TLS-ECDH", Computer Security -- | Invalid Curve Attacks on TLS-ECDH", Computer Security -- | |||
| ESORICS 2015 pp. 407-425, | ESORICS 2015, pp. 407-425, | |||
| DOI 10.1007/978-3-319-24174-6_21, 2015, | DOI 10.1007/978-3-319-24174-6_21, 2015, | |||
| <https://doi.org/10.1007/978-3-319-24174-6_21>. | <https://doi.org/10.1007/978-3-319-24174-6_21>. | |||
| [Joux2006] Joux, A., "Authentication Failures in NIST version of | [Joux2006] Joux, A., "Authentication Failures in NIST version of | |||
| GCM", 2006, <https://csrc.nist.gov/csrc/media/projects/ | GCM", 2006, <https://csrc.nist.gov/csrc/media/projects/ | |||
| block-cipher-techniques/documents/bcm/comments/800-38- | block-cipher-techniques/documents/bcm/comments/800-38- | |||
| series-drafts/gcm/joux_comments.pdf>. | series-drafts/gcm/joux_comments.pdf>. | |||
| [Kim2014] Kim, Y., Daly, R., Kim, J., Fallin, C., Lee, J. H., Lee, | [Kim2014] Kim, Y., Daly, R., Kim, J., Fallin, C., Lee, J. H., Lee, | |||
| D., Wilkerson, C., Lai, K., and O. Mutlu, "Flipping Bits | D., Wilkerson, C., Lai, K., and O. Mutlu, "Flipping Bits | |||
| in Memory Without Accessing Them: An Experimental Study of | in Memory Without Accessing Them: An Experimental Study of | |||
| DRAM Disturbance Errors", 2014, | DRAM Disturbance Errors", DOI 10.1109/ISCA.2014.6853210, | |||
| <https://users.ece.cmu.edu/~yoonguk/papers/kim- | July 2014, <https://users.ece.cmu.edu/~yoonguk/papers/kim- | |||
| isca14.pdf>. | isca14.pdf>. | |||
| [Kleinjung2010] | [Kleinjung2010] | |||
| Kleinjung, T., Aoki, K., Franke, J., Lenstra, A., Thomé, | Kleinjung, T., Aoki, K., Franke, J., Lenstra, A., Thomé, | |||
| E., Bos, J., Gaudry, P., Kruppa, A., Montgomery, P., | E., Bos, J., Gaudry, P., Kruppa, A., Montgomery, P., | |||
| Osvik, D., te Riele, H., Timofeev, A., and P. Zimmermann, | Osvik, D., te Riele, H., Timofeev, A., and P. Zimmermann, | |||
| "Factorization of a 768-Bit RSA Modulus", Advances in | "Factorization of a 768-Bit RSA Modulus", Advances in | |||
| Cryptology - CRYPTO 2010 pp. 333-350, | Cryptology - CRYPTO 2010, pp. 333-350, | |||
| DOI 10.1007/978-3-642-14623-7_18, 2010, | DOI 10.1007/978-3-642-14623-7_18, 2010, | |||
| <https://doi.org/10.1007/978-3-642-14623-7_18>. | <https://doi.org/10.1007/978-3-642-14623-7_18>. | |||
| [LetsRevoke] | [LetsRevoke] | |||
| Smith, T., Dickinson, L., and K. Seamons, "Let's Revoke: | Smith, T., Dickinson, L., and K. Seamons, "Let's Revoke: | |||
| Scalable Global Certificate Revocation", Proceedings 2020 | Scalable Global Certificate Revocation", Proceedings 2020 | |||
| Network and Distributed System Security Symposium, | Network and Distributed System Security Symposium, | |||
| DOI 10.14722/ndss.2020.24084, 2020, | DOI 10.14722/ndss.2020.24084, February 2020, | |||
| <https://doi.org/10.14722/ndss.2020.24084>. | <https://doi.org/10.14722/ndss.2020.24084>. | |||
| [Logjam] Adrian, D., Bhargavan, K., Durumeric, Z., Gaudry, P., | [Logjam] Adrian, D., Bhargavan, K., Durumeric, Z., Gaudry, P., | |||
| Green, M., Halderman, J., Heninger, N., Springall, D., | Green, M., Halderman, J., Heninger, N., Springall, D., | |||
| Thomé, E., Valenta, L., VanderSloot, B., Wustrow, E., | Thomé, E., Valenta, L., VanderSloot, B., Wustrow, E., | |||
| Zanella-Béguelin, S., and P. Zimmermann, "Imperfect | Zanella-Béguelin, S., and P. Zimmermann, "Imperfect | |||
| Forward Secrecy: How Diffie-Hellman Fails in Practice", | Forward Secrecy: How Diffie-Hellman Fails in Practice", | |||
| Proceedings of the 22nd ACM SIGSAC Conference on Computer | Proceedings of the 22nd ACM SIGSAC Conference on Computer | |||
| and Communications Security, DOI 10.1145/2810103.2813707, | and Communications Security, pp. 5-17, | |||
| October 2015, <https://doi.org/10.1145/2810103.2813707>. | DOI 10.1145/2810103.2813707, October 2015, | |||
| <https://doi.org/10.1145/2810103.2813707>. | ||||
| [Multiple-Encryption] | [Multiple-Encryption] | |||
| Merkle, R. and M. Hellman, "On the security of multiple | Merkle, R. and M. Hellman, "On the security of multiple | |||
| encryption", Communications of the ACM vol. 24, no. 7, pp. | encryption", Communications of the ACM, Vol. 24, Issue 7, | |||
| 465-467, DOI 10.1145/358699.358718, July 1981, | pp. 465-467, DOI 10.1145/358699.358718, July 1981, | |||
| <https://doi.org/10.1145/358699.358718>. | <https://doi.org/10.1145/358699.358718>. | |||
| [NIST.SP.800-56A] | [NIST.SP.800-56A] | |||
| Barker, E., Chen, L., Roginsky, A., Vassilev, A., and R. | National Institute of Standards and Technology, | |||
| Davis, "Recommendation for pair-wise key-establishment | "Recommendation for Pair-Wise Key-Establishment Schemes | |||
| schemes using discrete logarithm cryptography", National | Using Discrete Logarithm Cryptography", Revision 3, NIST | |||
| Institute of Standards and Technology report, | Special Publication 800-56A, | |||
| DOI 10.6028/nist.sp.800-56ar3, April 2018, | DOI 10.6028/NIST.SP.800-56Ar3, April 2018, | |||
| <https://doi.org/10.6028/nist.sp.800-56ar3>. | <https://doi.org/10.6028/NIST.SP.800-56Ar3>. | |||
| [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", Lecture Notes in Computer Science pp. 372-389, | Protocol", Proceedings of the 17th International | |||
| DOI 10.1007/978-3-642-25385-0_20, 2011, | conference on The Theory and Application of Cryptology and | |||
| Information Security, pp. 372-389, | ||||
| DOI 10.1007/978-3-642-25385-0_20, December 2011, | ||||
| <https://doi.org/10.1007/978-3-642-25385-0_20>. | <https://doi.org/10.1007/978-3-642-25385-0_20>. | |||
| [Poddebniak2017] | [Poddebniak2017] | |||
| Poddebniak, D., Somorovsky, J., Schinzel, S., Lochter, M., | Poddebniak, D., Somorovsky, J., Schinzel, S., Lochter, M., | |||
| and P. Rösler, "Attacking Deterministic Signature Schemes | and P. Rösler, "Attacking Deterministic Signature Schemes | |||
| using Fault Attacks", 2017, | using Fault Attacks", Conference: 2018 IEEE European | |||
| Symposium on Security and Privacy, | ||||
| DOI 10.1109/EuroSP.2018.00031, April 2018, | ||||
| <https://eprint.iacr.org/2017/1014.pdf>. | <https://eprint.iacr.org/2017/1014.pdf>. | |||
| [POODLE] US-CERT, "SSL 3.0 Protocol Vulnerability and POODLE | [POODLE] US-CERT, "SSL 3.0 Protocol Vulnerability and POODLE | |||
| Attack", October 2014, | Attack", October 2014, | |||
| <https://www.us-cert.gov/ncas/alerts/TA14-290A>. | <https://www.us-cert.gov/ncas/alerts/TA14-290A>. | |||
| [RACCOON] Merget, R., Brinkmann, M., Aviram, N., Somorovsky, J., | [RACCOON] Merget, R., Brinkmann, M., Aviram, N., Somorovsky, J., | |||
| Mittmann, J., and J. Schwenk, "Raccoon Attack: Finding and | Mittmann, J., and J. Schwenk, "Raccoon Attack: Finding and | |||
| Exploiting Most-Significant-Bit-Oracles in TLS-DH(E)", | Exploiting Most-Significant-Bit-Oracles in TLS-DH(E)", | |||
| 30th USENIX Security Symposium (USENIX Security 21) , | 30th USENIX Security Symposium (USENIX Security 21), 2021, | |||
| 2021, <https://www.usenix.org/conference/usenixsecurity21/ | <https://www.usenix.org/conference/usenixsecurity21/ | |||
| presentation/merget>. | presentation/merget>. | |||
| [RFC2026] Bradner, S., "The Internet Standards Process -- Revision | [RFC2026] Bradner, S., "The Internet Standards Process -- Revision | |||
| 3", BCP 9, RFC 2026, DOI 10.17487/RFC2026, October 1996, | 3", BCP 9, RFC 2026, DOI 10.17487/RFC2026, October 1996, | |||
| <https://www.rfc-editor.org/info/rfc2026>. | <https://www.rfc-editor.org/info/rfc2026>. | |||
| [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, DOI 10.17487/RFC2246, January 1999, | RFC 2246, DOI 10.17487/RFC2246, January 1999, | |||
| <https://www.rfc-editor.org/info/rfc2246>. | <https://www.rfc-editor.org/info/rfc2246>. | |||
| skipping to change at page 39, line 5 ¶ | skipping to change at line 1718 ¶ | |||
| Suite Value (SCSV) for Preventing Protocol Downgrade | Suite Value (SCSV) for Preventing Protocol Downgrade | |||
| Attacks", RFC 7507, DOI 10.17487/RFC7507, April 2015, | Attacks", RFC 7507, DOI 10.17487/RFC7507, April 2015, | |||
| <https://www.rfc-editor.org/info/rfc7507>. | <https://www.rfc-editor.org/info/rfc7507>. | |||
| [RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre, | [RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre, | |||
| "Recommendations for Secure Use of Transport Layer | "Recommendations for Secure Use of Transport Layer | |||
| Security (TLS) and Datagram Transport Layer Security | Security (TLS) and Datagram Transport Layer Security | |||
| (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May | (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May | |||
| 2015, <https://www.rfc-editor.org/info/rfc7525>. | 2015, <https://www.rfc-editor.org/info/rfc7525>. | |||
| [RFC7568] Barnes, R., Thomson, M., Pironti, A., and A. Langley, | ||||
| "Deprecating Secure Sockets Layer Version 3.0", RFC 7568, | ||||
| DOI 10.17487/RFC7568, June 2015, | ||||
| <https://www.rfc-editor.org/info/rfc7568>. | ||||
| [RFC7590] Saint-Andre, P. and T. Alkemade, "Use of Transport Layer | [RFC7590] Saint-Andre, P. and T. Alkemade, "Use of Transport Layer | |||
| Security (TLS) in the Extensible Messaging and Presence | Security (TLS) in the Extensible Messaging and Presence | |||
| Protocol (XMPP)", RFC 7590, DOI 10.17487/RFC7590, June | Protocol (XMPP)", RFC 7590, DOI 10.17487/RFC7590, June | |||
| 2015, <https://www.rfc-editor.org/info/rfc7590>. | 2015, <https://www.rfc-editor.org/info/rfc7590>. | |||
| [RFC7633] Hallam-Baker, P., "X.509v3 Transport Layer Security (TLS) | [RFC7633] Hallam-Baker, P., "X.509v3 Transport Layer Security (TLS) | |||
| Feature Extension", RFC 7633, DOI 10.17487/RFC7633, | Feature Extension", RFC 7633, DOI 10.17487/RFC7633, | |||
| October 2015, <https://www.rfc-editor.org/info/rfc7633>. | October 2015, <https://www.rfc-editor.org/info/rfc7633>. | |||
| [RFC7672] Dukhovni, V. and W. Hardaker, "SMTP Security via | ||||
| Opportunistic DNS-Based Authentication of Named Entities | ||||
| (DANE) Transport Layer Security (TLS)", RFC 7672, | ||||
| DOI 10.17487/RFC7672, October 2015, | ||||
| <https://www.rfc-editor.org/info/rfc7672>. | ||||
| [RFC7673] Finch, T., Miller, M., and P. Saint-Andre, "Using DNS- | ||||
| Based Authentication of Named Entities (DANE) TLSA Records | ||||
| with SRV Records", RFC 7673, DOI 10.17487/RFC7673, October | ||||
| 2015, <https://www.rfc-editor.org/info/rfc7673>. | ||||
| [RFC7712] Saint-Andre, P., Miller, M., and P. Hancke, "Domain Name | [RFC7712] Saint-Andre, P., Miller, M., and P. Hancke, "Domain Name | |||
| Associations (DNA) in the Extensible Messaging and | Associations (DNA) in the Extensible Messaging and | |||
| Presence Protocol (XMPP)", RFC 7712, DOI 10.17487/RFC7712, | Presence Protocol (XMPP)", RFC 7712, DOI 10.17487/RFC7712, | |||
| November 2015, <https://www.rfc-editor.org/info/rfc7712>. | November 2015, <https://www.rfc-editor.org/info/rfc7712>. | |||
| [RFC7919] Gillmor, D., "Negotiated Finite Field Diffie-Hellman | [RFC7919] Gillmor, D., "Negotiated Finite Field Diffie-Hellman | |||
| Ephemeral Parameters for Transport Layer Security (TLS)", | Ephemeral Parameters for Transport Layer Security (TLS)", | |||
| RFC 7919, DOI 10.17487/RFC7919, August 2016, | RFC 7919, DOI 10.17487/RFC7919, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7919>. | <https://www.rfc-editor.org/info/rfc7919>. | |||
| skipping to change at page 40, line 19 ¶ | skipping to change at line 1796 ¶ | |||
| [RFC9001] Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure | [RFC9001] Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure | |||
| QUIC", RFC 9001, DOI 10.17487/RFC9001, May 2021, | QUIC", RFC 9001, DOI 10.17487/RFC9001, May 2021, | |||
| <https://www.rfc-editor.org/info/rfc9001>. | <https://www.rfc-editor.org/info/rfc9001>. | |||
| [RFC9051] Melnikov, A., Ed. and B. Leiba, Ed., "Internet Message | [RFC9051] Melnikov, A., Ed. and B. Leiba, Ed., "Internet Message | |||
| Access Protocol (IMAP) - Version 4rev2", RFC 9051, | Access Protocol (IMAP) - Version 4rev2", RFC 9051, | |||
| DOI 10.17487/RFC9051, August 2021, | DOI 10.17487/RFC9051, August 2021, | |||
| <https://www.rfc-editor.org/info/rfc9051>. | <https://www.rfc-editor.org/info/rfc9051>. | |||
| [RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | ||||
| Ed., "HTTP Semantics", STD 97, RFC 9110, | ||||
| DOI 10.17487/RFC9110, June 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9110>. | ||||
| [RFC9112] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | ||||
| Ed., "HTTP/1.1", STD 99, RFC 9112, DOI 10.17487/RFC9112, | ||||
| June 2022, <https://www.rfc-editor.org/info/rfc9112>. | ||||
| [RFC9113] Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113, | ||||
| DOI 10.17487/RFC9113, June 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9113>. | ||||
| [RFC9162] Laurie, B., Messeri, E., and R. Stradling, "Certificate | [RFC9162] Laurie, B., Messeri, E., and R. Stradling, "Certificate | |||
| Transparency Version 2.0", RFC 9162, DOI 10.17487/RFC9162, | Transparency Version 2.0", RFC 9162, DOI 10.17487/RFC9162, | |||
| December 2021, <https://www.rfc-editor.org/info/rfc9162>. | December 2021, <https://www.rfc-editor.org/info/rfc9162>. | |||
| [RFC9191] Sethi, M., Preuß Mattsson, J., and S. Turner, "Handling | [RFC9191] Sethi, M., Preuß Mattsson, J., and S. Turner, "Handling | |||
| Large Certificates and Long Certificate Chains in TLS- | Large Certificates and Long Certificate Chains in TLS- | |||
| Based EAP Methods", RFC 9191, DOI 10.17487/RFC9191, | Based EAP Methods", RFC 9191, DOI 10.17487/RFC9191, | |||
| February 2022, <https://www.rfc-editor.org/info/rfc9191>. | February 2022, <https://www.rfc-editor.org/info/rfc9191>. | |||
| [SAFECURVES] | [SAFECURVES] | |||
| Bernstein, D. J. and T. Lange, "SafeCurves: Choosing Safe | Bernstein, D. J. and T. Lange, "SafeCurves: choosing safe | |||
| Curves for Elliptic-Curve Cryptography", December 2014, | curves for elliptic-curve cryptography", December 2014, | |||
| <https://safecurves.cr.yp.to>. | <https://safecurves.cr.yp.to>. | |||
| [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", | |||
| SSRN Electronic Journal, DOI 10.2139/ssrn.1591033, 2010, | SSRN Electronic Journal, DOI 10.2139/ssrn.1591033, April | |||
| <https://doi.org/10.2139/ssrn.1591033>. | 2010, <https://doi.org/10.2139/ssrn.1591033>. | |||
| [Springall16] | [Springall16] | |||
| Springall, D., Durumeric, Z., and J. Halderman, "Measuring | Springall, D., Durumeric, Z., and J. Halderman, "Measuring | |||
| the Security Harm of TLS Crypto Shortcuts", Proceedings of | the Security Harm of TLS Crypto Shortcuts", Proceedings of | |||
| the 2016 Internet Measurement Conference, | the 2016 Internet Measurement Conference, pp. 33-47, | |||
| DOI 10.1145/2987443.2987480, November 2016, | DOI 10.1145/2987443.2987480, November 2016, | |||
| <https://doi.org/10.1145/2987443.2987480>. | <https://doi.org/10.1145/2987443.2987480>. | |||
| [STD53] Myers, J. and M. Rose, "Post Office Protocol - Version 3", | [STD53] Myers, J. and M. Rose, "Post Office Protocol - Version 3", | |||
| STD 53, RFC 1939, May 1996. | STD 53, RFC 1939, May 1996. | |||
| <https://www.rfc-editor.org/info/std53> | <https://www.rfc-editor.org/info/std53> | |||
| [Sy2018] Sy, E., Burkert, C., Federrath, H., and M. Fischer, | [Sy2018] Sy, E., Burkert, C., Federrath, H., and M. Fischer, | |||
| "Tracking Users across the Web via TLS Session | "Tracking Users across the Web via TLS Session | |||
| Resumption", Proceedings of the 34th Annual Computer | Resumption", Proceedings of the 34th Annual Computer | |||
| Security Applications Conference, | Security Applications Conference, pp. 289-299, | |||
| DOI 10.1145/3274694.3274708, December 2018, | DOI 10.1145/3274694.3274708, December 2018, | |||
| <https://doi.org/10.1145/3274694.3274708>. | <https://doi.org/10.1145/3274694.3274708>. | |||
| [triple-handshake] | [TLS-ECH] Rescorla, E., Oku, K., Sullivan, N., and C. A. Wood, "TLS | |||
| Encrypted Client Hello", Work in Progress, Internet-Draft, | ||||
| draft-ietf-tls-esni-15, 3 October 2022, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-tls- | ||||
| esni-15>. | ||||
| [Triple-Handshake] | ||||
| Bhargavan, K., Lavaud, A., Fournet, C., Pironti, A., and | Bhargavan, K., Lavaud, A., Fournet, C., Pironti, A., and | |||
| P. Strub, "Triple Handshakes and Cookie Cutters: Breaking | P. Strub, "Triple Handshakes and Cookie Cutters: Breaking | |||
| and Fixing Authentication over TLS", 2014 IEEE Symposium | and Fixing Authentication over TLS", 2014 IEEE Symposium | |||
| on Security and Privacy, DOI 10.1109/sp.2014.14, May 2014, | on Security and Privacy, DOI 10.1109/sp.2014.14, May 2014, | |||
| <https://doi.org/10.1109/sp.2014.14>. | <https://doi.org/10.1109/sp.2014.14>. | |||
| [TWIRL] Shamir, A. and E. Tromer, "Factoring Large Numbers with | [TWIRL] Shamir, A. and E. Tromer, "Factoring Large Numbers with | |||
| the TWIRL Device", proc. Crypto 2003, LNCS 2729, 1-26, | the TWIRL Device", 2014 IEEE Symposium on Security and | |||
| Springer-Verlag , 2003, | Privacy, DOI 10.1007/978-3-540-45146-4_1, 2004, | |||
| <http://cs.tau.ac.il/~tromer/papers/twirl.pdf>. | <https://cs.tau.ac.il/~tromer/papers/twirl.pdf>. | |||
| Appendix A. Differences from RFC 7525 | Appendix A. Differences from RFC 7525 | |||
| This revision of the Best Current Practices contains numerous | This revision of the Best Current Practices contains numerous | |||
| changes, and this section is focused on the normative changes. | changes, and this section is focused on the normative changes. | |||
| * High level differences: | * High-level differences: | |||
| - Described the expectations from new TLS-incorporating transport | - Described the expectations from new TLS-incorporating transport | |||
| protocols and from new application protocols layered on TLS. | protocols and from new application protocols layered on TLS. | |||
| - Clarified items (e.g. renegotiation) that only apply to TLS | - Clarified items (e.g., renegotiation) that only apply to TLS | |||
| 1.2. | 1.2. | |||
| - Changed status of TLS 1.0 and 1.1 from SHOULD NOT to MUST NOT. | - Changed the status of TLS 1.0 and 1.1 from "SHOULD NOT" to | |||
| "MUST NOT". | ||||
| - Added TLS 1.3 at a SHOULD level. | - Added TLS 1.3 at a "SHOULD" level. | |||
| - Similar changes to DTLS. | - Made similar changes to DTLS. | |||
| - Specific guidance for multiplexed protocols. | - Included specific guidance for multiplexed protocols. | |||
| - MUST-level implementation requirement for ALPN, and more | - MUST-level implementation requirement for ALPN and more | |||
| specific SHOULD-level guidance for ALPN and SNI. | specific SHOULD-level guidance for ALPN and SNI. | |||
| - Clarified discussion of strict TLS policies, including MUST- | - Clarified discussion of strict TLS policies, including MUST- | |||
| level recommendations. | level recommendations. | |||
| - Limits on key usage. | - Limits on key usage. | |||
| - New attacks since [RFC7457]: ALPACA, Raccoon, Logjam, "Nonce- | - New attacks since [RFC7457]: ALPACA, Raccoon, Logjam, and | |||
| Disrespecting Adversaries". | "Nonce-Disrespecting Adversaries". | |||
| - RFC 6961 (OCSP status_request_v2) has been deprecated. | - RFC 6961 (OCSP status_request_v2) has been deprecated. | |||
| - MUST-level requirement for server-side RSA certificates to have | - MUST-level requirement for server-side RSA certificates to have | |||
| 2048-bit modulus at a minimum, replacing a SHOULD. | a 2048-bit modulus at a minimum, replacing a "SHOULD". | |||
| * Differences specific to TLS 1.2: | * Differences specific to TLS 1.2: | |||
| - SHOULD-level guidance on AES-GCM nonce generation. | - SHOULD-level guidance on AES-GCM nonce generation. | |||
| - SHOULD NOT use (static or ephemeral) finite-field DH key | - SHOULD NOT use (static or ephemeral) finite-field DH key | |||
| agreement. | agreement. | |||
| - SHOULD NOT reuse ephemeral finite-field DH keys across multiple | - SHOULD NOT reuse ephemeral finite-field DH keys across multiple | |||
| connections. | connections. | |||
| - SHOULD NOT use static elliptic curve DH key exchange. | - SHOULD NOT use static Elliptic Curve DH key exchange. | |||
| - 2048-bit DH now a MUST, ECDH minimal curve size is 224, vs. 192 | - 2048-bit DH is now a "MUST" and ECDH minimal curve size is 224 | |||
| previously. | (vs. 192 previously). | |||
| - Support for extended_master_secret is now a MUST (previously it | - Support for extended_master_secret is now a "MUST" (previously | |||
| was a soft recommendation, as the RFC had not been published at | it was a soft recommendation, as the RFC had not been published | |||
| the time). Also removed other, more complicated, related | at the time). Also removed other, more complicated, related | |||
| mitigations. | mitigations. | |||
| - MUST-level restriction on session ticket validity, replacing a | - MUST-level restriction on session ticket validity, replacing a | |||
| SHOULD. | "SHOULD". | |||
| - SHOULD-level restriction on the TLS session duration, depending | - SHOULD-level restriction on the TLS session duration, depending | |||
| on the rotation period of an [RFC5077] ticket key. | on the rotation period of an [RFC5077] ticket key. | |||
| - Drop TLS_DHE_RSA_WITH_AES from the recommended ciphers | - Dropped TLS_DHE_RSA_WITH_AES from the recommended ciphers. | |||
| - Add TLS_ECDHE_ECDSA_WITH_AES to the recommended ciphers | - Added TLS_ECDHE_ECDSA_WITH_AES to the recommended ciphers. | |||
| - SHOULD NOT use the old MTI cipher suite, | - SHOULD NOT use the old MTI cipher suite, | |||
| TLS_RSA_WITH_AES_128_CBC_SHA. | TLS_RSA_WITH_AES_128_CBC_SHA. | |||
| - Recommend curve X25519 alongside NIST P-256 | - Recommended curve X25519 alongside NIST P-256. | |||
| * Differences specific to TLS 1.3: | * Differences specific to TLS 1.3: | |||
| - New TLS 1.3 capabilities: 0-RTT. | - New TLS 1.3 capabilities: 0-RTT. | |||
| - Removed capabilities: renegotiation, compression. | - Removed capabilities: renegotiation and compression. | |||
| - Added mention of TLS Encrypted Client Hello, but no | - Added mention of TLS Encrypted Client Hello, but no | |||
| recommendation to use until it is finalized. | recommendation for use until it is finalized. | |||
| - SHOULD-level requirement for forward secrecy in TLS 1.3 session | ||||
| resumption. | ||||
| - Generic SHOULD-level guidance to avoid 0-RTT unless it is | ||||
| documented for the particular protocol. | ||||
| Appendix B. Document History | ||||
| // Note to RFC Editor: please remove before publication. | ||||
| B.1. draft-ietf-uta-rfc7525bis-11 | ||||
| * Addressed outstanding comments by Peter Gutmann. | ||||
| B.2. draft-ietf-uta-rfc7525bis-10 | ||||
| * Addressed IESG feedback, ARTART review by Cullen Jennings, and | ||||
| TSVART review by Magnus Westerlund. | ||||
| * Improved the rationale for still recommending TLS 1.2. | ||||
| * Specified TLS 1.3 as a MUST for new transport protocols and a | ||||
| SHOULD for new application protocols. | ||||
| * Clarified TLS-only vs. dynamic upgrade for non-HTTP protocols. | ||||
| * Clarified distinction between implementation and deployment. | ||||
| * Clarified applicability to QUIC. | ||||
| * Further specified what to do on reaching the confidentiality limit | ||||
| or integrity limit. | ||||
| * Added a note about post-quantum cryptography. | ||||
| * Improved the text about Encrypted Client Hello. | ||||
| B.3. draft-ietf-uta-rfc7525bis-09 | ||||
| * More background on strict TLS for non-HTTP protocols. | ||||
| B.4. draft-ietf-uta-rfc7525bis-08 | ||||
| * Addressed SecDir review by Ben Kaduk. | ||||
| * Addressed reviews by Stephen Farrell, Martin Thomson, Tim Evans | ||||
| and John Mattsson. | ||||
| B.5. draft-ietf-uta-rfc7525bis-07 | ||||
| * Addressed AD reviews by Francesca and Paul. | ||||
| B.6. draft-ietf-uta-rfc7525bis-06 | ||||
| * Addressed several I-D nits raised by the document shepherd. | ||||
| B.7. draft-ietf-uta-rfc7525bis-05 | ||||
| * Addressed WG Last Call comments, specifically: | ||||
| - More clarity and guidance on session resumption. | ||||
| - Clarity on TLS 1.2 renegotiation. | ||||
| - Wording on the 0-RTT feature aligned with RFC 8446. | ||||
| - SHOULD NOT guidance on static and ephemeral finite field DH | ||||
| cipher suites. | ||||
| - Revamped the recommended TLS 1.2 cipher suites, removing DHE | ||||
| and adding ECDSA. The latter due to the wide adoption of ECDSA | ||||
| certificates and in line with RFC 8446. | ||||
| - Recommendation to use deterministic ECDSA. | ||||
| - Finally deprecated the old TLS 1.2 MTI cipher suite. | ||||
| - Deeper discussion of ECDH public key reuse issues, and as a | ||||
| result, recommended support of X25519. | ||||
| - Reworded the section on certificate revocation and OCSP | ||||
| following a long mailing list thread. | ||||
| B.8. draft-ietf-uta-rfc7525bis-04 | ||||
| * No version fallback from TLS 1.2 to earlier versions, therefore no | ||||
| SCSV. | ||||
| B.9. draft-ietf-uta-rfc7525bis-03 | ||||
| * Cipher integrity and confidentiality limits. | ||||
| * Require extended_master_secret. | ||||
| B.10. draft-ietf-uta-rfc7525bis-02 | ||||
| * Adjusted text about ALPN support in application protocols | ||||
| * Incorporated text from draft-ietf-tls-md5-sha1-deprecate | ||||
| B.11. draft-ietf-uta-rfc7525bis-01 | ||||
| * Many more changes, including: | ||||
| - SHOULD-level requirement for forward secrecy in TLS 1.3 session | - SHOULD-level requirement for forward secrecy in TLS 1.3 session | |||
| resumption. | resumption. | |||
| - Removed TLS 1.2 capabilities: renegotiation, compression. | - Generic MUST-level guidance to avoid 0-RTT unless it is | |||
| - Specific guidance for multiplexed protocols. | ||||
| - MUST-level implementation requirement for ALPN, and more | ||||
| specific SHOULD-level guidance for ALPN and SNI. | ||||
| - Generic SHOULD-level guidance to avoid 0-RTT unless it is | ||||
| documented for the particular protocol. | documented for the particular protocol. | |||
| - SHOULD-level guidance on AES-GCM nonce generation in TLS 1.2. | Acknowledgments | |||
| - SHOULD NOT use static DH keys or reuse ephemeral DH keys across | ||||
| multiple connections. | ||||
| - 2048-bit DH now a MUST, ECDH minimal curve size is 224, up from | ||||
| 192. | ||||
| B.12. draft-ietf-uta-rfc7525bis-00 | ||||
| * Renamed: WG document. | ||||
| * Started populating list of changes from RFC 7525. | ||||
| * General rewording of abstract and intro for revised version. | ||||
| * Protocol versions, fallback. | ||||
| * Reference to ECHO. | ||||
| B.13. draft-sheffer-uta-rfc7525bis-00 | ||||
| * Renamed, since the BCP number does not change. | ||||
| * Added an empty "Differences from RFC 7525" section. | Thanks to Alexey Melnikov, Alvaro Retana, Andrei Popov, Ben Kaduk, | |||
| Christian Huitema, Corey Bonnell, Cullen Jennings, Daniel Kahn | ||||
| Gillmor, David Benjamin, Eric Rescorla, Éric Vyncke, Francesca | ||||
| Palombini, Hannes Tschofenig, Hubert Kario, Ilari Liusvaara, John | ||||
| Preuß Mattsson, John R. Levine, Julien Élie, Lars Eggert, Leif | ||||
| Johansson, Magnus Westerlund, Martin Duke, Martin Thomson, Mohit | ||||
| Sahni, Nick Sullivan, Nimrod Aviram, Paul Wouters, Peter Gutmann, | ||||
| Rich Salz, Robert Sayre, Robert Wilton, Roman Danyliw, Ryan Sleevi, | ||||
| Sean Turner, Stephen Farrell, Tim Evans, Valery Smyslov, Viktor | ||||
| Dukhovni, and Warren Kumari for helpful comments and discussions that | ||||
| have shaped this document. | ||||
| B.14. draft-sheffer-uta-bcp195bis-00 | The authors gratefully acknowledge the contribution of Ralph Holz, | |||
| who was a coauthor of RFC 7525, the previous version of the TLS | ||||
| recommendations. | ||||
| * Initial release, the RFC 7525 text as-is, with some minor | See RFC 7525 for additional acknowledgments specific to the previous | |||
| editorial changes to the references. | version of the TLS recommendations. | |||
| Authors' Addresses | Authors' Addresses | |||
| Yaron Sheffer | Yaron Sheffer | |||
| Intuit | Intuit | |||
| Email: yaronf.ietf@gmail.com | Email: yaronf.ietf@gmail.com | |||
| Peter Saint-Andre | Peter Saint-Andre | |||
| independent | independent | |||
| Email: stpeter@stpeter.im | Email: stpeter@stpeter.im | |||
| Thomas Fossati | Thomas Fossati | |||
| arm | ARM Limited | |||
| Email: thomas.fossati@arm.com | Email: thomas.fossati@arm.com | |||
| End of changes. 171 change blocks. | ||||
| 647 lines changed or deleted | 502 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||