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. |