draft-ietf-uta-tls-bcp-06.txt | draft-ietf-uta-tls-bcp-07.txt | |||
---|---|---|---|---|
UTA Y. Sheffer | UTA Y. Sheffer | |||
Internet-Draft Porticor | Internet-Draft Porticor | |||
Intended status: Best Current Practice R. Holz | Intended status: Best Current Practice R. Holz | |||
Expires: April 26, 2015 TUM | Expires: May 15, 2015 TUM | |||
P. Saint-Andre | P. Saint-Andre | |||
&yet | &yet | |||
October 23, 2014 | November 11, 2014 | |||
Recommendations for Secure Use of TLS and DTLS | Recommendations for Secure Use of TLS and DTLS | |||
draft-ietf-uta-tls-bcp-06 | draft-ietf-uta-tls-bcp-07 | |||
Abstract | Abstract | |||
Transport Layer Security (TLS) and Datagram Transport Layer Security | Transport Layer Security (TLS) and Datagram Transport Layer Security | |||
(DTLS) are widely used to protect data exchanged over application | (DTLS) are widely used to protect data exchanged over application | |||
protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the | protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the | |||
last few years, several serious attacks on TLS have emerged, | last few years, several serious attacks on TLS have emerged, | |||
including attacks on its most commonly used cipher suites and modes | including attacks on its most commonly used cipher suites and modes | |||
of operation. This document provides recommendations for improving | of operation. This document provides recommendations for improving | |||
the security of deployed services that use TLS and DTLS. The | the security of deployed services that use TLS and DTLS. The | |||
skipping to change at page 1, line 40 | skipping to change at page 1, line 40 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 26, 2015. | This Internet-Draft will expire on May 15, 2015. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Intended Audience and Applicability Statement . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2.1. Security Services . . . . . . . . . . . . . . . . . . . . 4 | 3. General Recommendations . . . . . . . . . . . . . . . . . . . 4 | |||
2.2. Unauthenticated TLS . . . . . . . . . . . . . . . . . . . 5 | 3.1. Protocol Versions . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.1.1. SSL/TLS Protocol Versions . . . . . . . . . . . . . . 4 | |||
4. General Recommendations . . . . . . . . . . . . . . . . . . . 6 | 3.1.2. DTLS Protocol Versions . . . . . . . . . . . . . . . 5 | |||
4.1. Protocol Versions . . . . . . . . . . . . . . . . . . . . 6 | 3.1.3. Fallback to Lower Versions . . . . . . . . . . . . . 5 | |||
4.1.1. SSL/TLS Protocol Versions . . . . . . . . . . . . . . 6 | 3.2. Strict TLS . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.1.2. DTLS Protocol Versions . . . . . . . . . . . . . . . 7 | 3.3. Compression . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.1.3. Fallback to Lower Versions . . . . . . . . . . . . . 7 | 3.4. TLS Session Resumption . . . . . . . . . . . . . . . . . 7 | |||
4.2. Strict TLS . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.5. TLS Renegotiation . . . . . . . . . . . . . . . . . . . . 7 | |||
4.3. Compression . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.6. Server Name Indication . . . . . . . . . . . . . . . . . 8 | |||
4.4. TLS Session Resumption . . . . . . . . . . . . . . . . . 9 | 4. Recommendations: Cipher Suites . . . . . . . . . . . . . . . 8 | |||
4.5. TLS Renegotiation . . . . . . . . . . . . . . . . . . . . 9 | 4.1. General Guidelines . . . . . . . . . . . . . . . . . . . 8 | |||
4.6. Server Name Indication . . . . . . . . . . . . . . . . . 10 | 4.2. Recommended Cipher Suites . . . . . . . . . . . . . . . . 9 | |||
5. Recommendations: Cipher Suites . . . . . . . . . . . . . . . 10 | 4.2.1. Implementation Details . . . . . . . . . . . . . . . 10 | |||
5.1. General Guidelines . . . . . . . . . . . . . . . . . . . 10 | 4.3. Public Key Length . . . . . . . . . . . . . . . . . . . . 10 | |||
5.2. Recommended Cipher Suites . . . . . . . . . . . . . . . . 11 | 4.4. Modular vs. Elliptic Curve DH Cipher Suites . . . . . . . 11 | |||
5.3. Cipher Suite Negotiation Details . . . . . . . . . . . . 12 | 4.5. Truncated HMAC . . . . . . . . . . . . . . . . . . . . . 12 | |||
5.4. Public Key Length . . . . . . . . . . . . . . . . . . . . 12 | 5. Applicability Statement . . . . . . . . . . . . . . . . . . . 12 | |||
5.5. Modular vs. Elliptic Curve DH Cipher Suites . . . . . . . 13 | 5.1. Security Services . . . . . . . . . . . . . . . . . . . . 12 | |||
5.6. Truncated HMAC . . . . . . . . . . . . . . . . . . . . . 14 | 5.2. Unauthenticated TLS and Opportunistic Encryption . . . . 13 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | |||
7.1. Host Name Validation . . . . . . . . . . . . . . . . . . 14 | 7.1. Host Name Validation . . . . . . . . . . . . . . . . . . 14 | |||
7.2. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 7.2. AES-GCM . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
7.3. Forward Secrecy . . . . . . . . . . . . . . . . . . . . . 15 | 7.3. Forward Secrecy . . . . . . . . . . . . . . . . . . . . . 15 | |||
7.4. Diffie-Hellman Exponent Reuse . . . . . . . . . . . . . . 16 | 7.4. Diffie-Hellman Exponent Reuse . . . . . . . . . . . . . . 16 | |||
7.5. Certificate Revocation . . . . . . . . . . . . . . . . . 16 | 7.5. Certificate Revocation . . . . . . . . . . . . . . . . . 17 | |||
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17 | 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 17 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 18 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 18 | 9.2. Informative References . . . . . . . . . . . . . . . . . 19 | |||
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 21 | Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 21 | |||
A.1. draft-ietf-uta-tls-bcp-06 . . . . . . . . . . . . . . . . 21 | A.1. draft-ietf-uta-tls-bcp-07 . . . . . . . . . . . . . . . . 21 | |||
A.2. draft-ietf-uta-tls-bcp-05 . . . . . . . . . . . . . . . . 21 | A.2. draft-ietf-uta-tls-bcp-06 . . . . . . . . . . . . . . . . 21 | |||
A.3. draft-ietf-uta-tls-bcp-04 . . . . . . . . . . . . . . . . 21 | A.3. draft-ietf-uta-tls-bcp-05 . . . . . . . . . . . . . . . . 21 | |||
A.4. draft-ietf-uta-tls-bcp-03 . . . . . . . . . . . . . . . . 21 | A.4. draft-ietf-uta-tls-bcp-04 . . . . . . . . . . . . . . . . 22 | |||
A.5. draft-ietf-uta-tls-bcp-02 . . . . . . . . . . . . . . . . 21 | A.5. draft-ietf-uta-tls-bcp-03 . . . . . . . . . . . . . . . . 22 | |||
A.6. draft-ietf-tls-bcp-01 . . . . . . . . . . . . . . . . . . 22 | A.6. draft-ietf-uta-tls-bcp-02 . . . . . . . . . . . . . . . . 22 | |||
A.7. draft-ietf-tls-bcp-00 . . . . . . . . . . . . . . . . . . 22 | A.7. draft-ietf-tls-bcp-01 . . . . . . . . . . . . . . . . . . 22 | |||
A.8. draft-sheffer-tls-bcp-02 . . . . . . . . . . . . . . . . 22 | A.8. draft-ietf-tls-bcp-00 . . . . . . . . . . . . . . . . . . 23 | |||
A.9. draft-sheffer-tls-bcp-01 . . . . . . . . . . . . . . . . 22 | A.9. draft-sheffer-tls-bcp-02 . . . . . . . . . . . . . . . . 23 | |||
A.10. draft-sheffer-tls-bcp-00 . . . . . . . . . . . . . . . . 23 | A.10. draft-sheffer-tls-bcp-01 . . . . . . . . . . . . . . . . 23 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | A.11. draft-sheffer-tls-bcp-00 . . . . . . . . . . . . . . . . 23 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 | ||||
1. Introduction | 1. Introduction | |||
Transport Layer Security (TLS) [RFC5246] and Datagram Transport | Transport Layer Security (TLS) [RFC5246] and Datagram Transport | |||
Security Layer (DTLS) [RFC6347] are widely used to protect data | Security Layer (DTLS) [RFC6347] are widely used to protect data | |||
exchanged over application protocols such as HTTP, SMTP, IMAP, POP, | exchanged over application protocols such as HTTP, SMTP, IMAP, POP, | |||
SIP, and XMPP. Over the last few years, several serious attacks on | SIP, and XMPP. Over the last few years, several serious attacks on | |||
TLS have emerged, including attacks on its most commonly used cipher | TLS have emerged, including attacks on its most commonly used cipher | |||
suites and modes of operation. For instance, both the AES-CBC | suites and modes of operation. For instance, both the AES-CBC | |||
[RFC3602] and RC4 [I-D.ietf-tls-prohibiting-rc4] encryption | [RFC3602] and RC4 [I-D.ietf-tls-prohibiting-rc4] encryption | |||
skipping to change at page 3, line 40 | skipping to change at page 3, line 41 | |||
fact, this document calls for the deployment of algorithms that are | fact, this document calls for the deployment of algorithms that are | |||
widely implemented but not yet widely deployed. Concerning | widely implemented but not yet widely deployed. Concerning | |||
deployment, this document targets a wide audience, namely all | deployment, this document targets a wide audience, namely all | |||
deployers who wish to add authentication (be it one-way only or | deployers who wish to add authentication (be it one-way only or | |||
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 noted otherwise, these recommendations apply to both TLS and | Unless it is explicitly called out that a recommendation applies to | |||
DTLS. TLS 1.3, when it is standardized and deployed in the field, | TLS alone or to DTLS alone, each recommendation applies to both TLS | |||
should resolve the current vulnerabilities while providing | and DTLS. | |||
significantly better functionality. It will very likely obsolete | ||||
this document. | ||||
These are minimum recommendations for the use of TLS for the | It is expected that the TLS 1.3 specification will resolve many of | |||
specified audience. Individual specifications can have stricter | the vulnerabilities listed in this document. A system that deploys | |||
TLS 1.3 will have fewer vulnerabilities than TLS 1.2 or below. This | ||||
document is likely to be updated after TLS 1.3 gets noticeable | ||||
deployment. | ||||
These are minimum recommendations for the use of TLS in the vast | ||||
majority of implementation and deployment scenarios, with the | ||||
exception of unauthenticated TLS (see Section 5). Other | ||||
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 particular | |||
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. | advised to adhere to those stricter requirements. | |||
Community knowledge about the strength of various algorithms and | Community knowledge about the strength of various algorithms and | |||
feasible attacks can change quickly, and experience shows that a | feasible attacks can change quickly, and experience shows that a | |||
security BCP is a point-in-time statement. Readers are advised to | security BCP is a point-in-time statement. Readers are advised to | |||
seek out any errata or updates that apply to this document. | seek out any errata or updates that apply to this document. | |||
2. Intended Audience and Applicability Statement | 2. Terminology | |||
The deployment recommendations of this document address the operators | ||||
of application layer services that are most commonly used on the | ||||
Internet, including, but not limited to: | ||||
o Operators of WWW servers that wish to protect HTTP with TLS. | ||||
o Operators of email servers who wish to protect the application- | ||||
layer protocols with TLS (e.g., IMAP, POP3 or SMTP). | ||||
o Operators of instant-messaging services who wish to protect their | ||||
application-layer protocols with TLS (e.g., XMPP or IRC). | ||||
2.1. Security Services | ||||
This document provides recommendations for an audience that wishes to | ||||
secure their communication with TLS to achieve the following: | ||||
o Confidentiality: all (payload) communication is encrypted with the | ||||
goal that no party should be able to decrypt it except the | ||||
intended receiver. | ||||
o Data integrity: any changes made to the communication in transit | ||||
are detectable by the receiver. | ||||
o Authentication: an end-point of the TLS communication is | ||||
authenticated as the intended entity to communicate with. TLS | ||||
enables authentication of one or both end-points in the | ||||
communication. Some TLS usage scenarios do not require | ||||
authentication. They are not in the scope of this document. We | ||||
discuss them under Section 2.2. | ||||
If deployers deviate from the recommendations given in this document, | ||||
they MUST verify that they do not need one of the foregoing security | ||||
services. | ||||
This document applies only to environments where confidentiality is | ||||
required. It recommends algorithms and configuration options that | ||||
enforce secrecy of the data-in-transit. | ||||
This document also assumes that data integrity protection is always | ||||
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. | ||||
There are attacks against confidentiality-only protection that | ||||
utilize the lack of integrity to also break confidentiality (see for | ||||
instance [DegabrieleP07] in the context of IPsec). | ||||
The intended audience covers those services that are most commonly | ||||
used on the Internet. Typically, all communication between TLS | ||||
clients and TLS servers requires all three of the above security | ||||
services. This is particularly true where TLS clients are user | ||||
agents like Web browsers or email software. | ||||
This document does not address the rarer deployment scenarios where | ||||
one of the above three properties is not desired, such as the use | ||||
case described under Section 2.2 below. Another example of an | ||||
audience not needing confidentiality is the following: a monitored | ||||
network where the authorities in charge of the respective traffic | ||||
domain require full access to unencrypted (plaintext) traffic, and | ||||
where users collaborate and send their traffic in the clear. | ||||
2.2. Unauthenticated TLS | ||||
Several important applications use TLS to protect data between a TLS | ||||
client and a TLS server, but do so without the TLS client verifying | ||||
the server's certificate. The reader is referred to | ||||
[I-D.ietf-dane-smtp-with-dane] for an example and an explanation of | ||||
why this less secure practice will likely remain common in the | ||||
context of SMTP (especially for MTA-to-MTA communications). The | ||||
practice is also encountered in similar contexts such as server-to- | ||||
server XMPP traffic. | ||||
In some of these scenarios the use of TLS is optional, i.e. the | ||||
client decides dynamically ("opportunistically") whether to use TLS | ||||
with a particular server or to connect in the clear. (Opportunistic | ||||
encryption is described at length in Section 2 of | ||||
[I-D.farrelll-mpls-opportunistic-encrypt].) In other scenarios, the | ||||
use of TLS is required but certificates are not always checked (e.g., | ||||
this is often the case on the XMPP network, where multi-tenant | ||||
hosting environments make it difficult for operators to obtain proper | ||||
certificates for all of the domains they service). | ||||
It can be argued that the recommendations provided in this document | ||||
ought to apply equally to unauthenticated TLS as well as | ||||
authenticated TLS. That would keep TLS implementations and | ||||
deployments in sync, which is a desirable property given that servers | ||||
can be used simultaneously for unauthenticated TLS and for | ||||
authenticated TLS (indeed, often a server will not know whether a | ||||
client might attempt authenticated or unauthenticated TLS). On the | ||||
other hand, it has been argued that some of the recommendations in | ||||
this document might be too strict for unauthenticated scenarios and | ||||
that any security is better than no security at all (i.e., sending | ||||
traffic in the clear), even if it means deploying outdated protocol | ||||
versions and ciphers in unauthenticated scenarios. The sense of the | ||||
UTA Working Group was to complete work on this document about | ||||
authenticated TLS and to initiate work on a separate document about | ||||
unauthenticated TLS. | ||||
In summary: this document does not apply to unauthenticated TLS use | ||||
cases. | ||||
3. Terminology | ||||
A number of security-related terms in this document are used in the | A number of security-related terms in this document are used in the | |||
sense defined in [RFC4949]. | sense defined in [RFC4949]. | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
4. General Recommendations | 3. General Recommendations | |||
This section provides general recommendations on the secure use of | This section provides general recommendations on the secure use of | |||
TLS. Recommendations related to cipher suites are discussed in the | TLS. Recommendations related to cipher suites are discussed in the | |||
following section. | following section. | |||
4.1. Protocol Versions | 3.1. Protocol Versions | |||
4.1.1. SSL/TLS Protocol Versions | 3.1.1. SSL/TLS Protocol Versions | |||
It is important both to stop using old, less secure versions of SSL/ | It is important both to stop using old, less secure versions of SSL/ | |||
TLS and to start using modern, more secure versions; therefore, the | TLS and to start using modern, more secure versions; therefore, the | |||
following are the recommendations concerning TLS/SSL protocol | following are the recommendations concerning TLS/SSL protocol | |||
versions: | versions: | |||
o Implementations MUST NOT negotiate SSL version 2. | o Implementations MUST NOT negotiate SSL version 2. | |||
Rationale: Today, SSLv2 is considered insecure [RFC6176]. | Rationale: Today, SSLv2 is considered insecure [RFC6176]. | |||
o Implementations MUST NOT negotiate SSL version 3. | o Implementations MUST NOT negotiate SSL version 3. | |||
Rationale: SSLv3 [RFC6101] was an improvement over SSLv2 and | Rationale: SSLv3 [RFC6101] was an improvement over SSLv2 and | |||
plugged some significant security holes, but did not support | plugged some significant security holes, but did not support | |||
strong cipher suites. SSLv3 does not support TLS extensions, some | strong cipher suites. SSLv3 does not support TLS extensions, some | |||
of which (e.g. renegotiation_info) are security-critical. In | of which (e.g., renegotiation_info) are security-critical. In | |||
addition, with the emergence of the POODLE attack [POODLE], SSLv3 | addition, with the emergence of the POODLE attack [POODLE], SSLv3 | |||
is now widely recognized as fundamentally insecure. | is now widely recognized as fundamentally insecure. | |||
o Implementations SHOULD NOT negotiate TLS version 1.0 [RFC2246]. | o Implementations SHOULD NOT negotiate TLS version 1.0 [RFC2246]. | |||
Rationale: TLS 1.0 (published in 1999) does not support many | Rationale: TLS 1.0 (published in 1999) does not support many | |||
modern, strong cipher suites. | modern, strong cipher suites. | |||
o Implementations MAY negotiate TLS version 1.1 [RFC4346]. | o Implementations MAY negotiate TLS version 1.1 [RFC4346]. | |||
Rationale: TLS 1.1 (published in 2006) is a security improvement | Rationale: TLS 1.1 (published in 2006) is a security improvement | |||
over TLS 1.0, but still does not support certain stronger cipher | over TLS 1.0, but still does not support certain stronger cipher | |||
suites. | suites. | |||
o Implementations MUST support, and prefer to negotiate, TLS version | o Implementations MUST support, and prefer to negotiate, TLS version | |||
1.2 [RFC5246]. | 1.2 [RFC5246]. | |||
Rationale: Several stronger cipher suites are available only with | Rationale: Several stronger cipher suites are available only with | |||
TLS 1.2 (published in 2008). In fact, the cipher suites | TLS 1.2 (published in 2008). In fact, the cipher suites | |||
recommended by this document (Section 5.2 below) are only | recommended by this document (Section 4.2 below) are only | |||
available in TLS 1.2. | available in TLS 1.2. | |||
This BCP applies to TLS 1.2. It is not safe for readers to assume | This BCP applies to TLS 1.2. It is not safe for readers to assume | |||
that the recommendations in this BCP apply to any future version of | that the recommendations in this BCP apply to any future version of | |||
TLS. | TLS. | |||
4.1.2. DTLS Protocol Versions | 3.1.2. DTLS Protocol Versions | |||
DTLS, an adaptation of TLS for UDP datagrams, was introduced when TLS | DTLS, an adaptation of TLS for UDP datagrams, was introduced when TLS | |||
1.1 was published. The following are the recommendations with | 1.1 was published. The following are the recommendations with | |||
respect to DTLS: | respect to DTLS: | |||
o Implementations MAY negotiate DTLS version 1.0 [RFC4347]. | o Implementations MAY negotiate DTLS version 1.0 [RFC4347]. | |||
Version 1.0 of DTLS correlates to version 1.1 of TLS (see above). | Version 1.0 of DTLS correlates to version 1.1 of TLS (see above). | |||
o Implementations MUST support, and prefer to negotiate, DTLS | o Implementations MUST support, and prefer to negotiate, DTLS | |||
version 1.2 [RFC6347]. | version 1.2 [RFC6347]. | |||
Version 1.2 of DTLS correlates to Version 1.2 of TLS 1.2 (see | Version 1.2 of DTLS correlates to Version 1.2 of TLS 1.2 (see | |||
above). (There is no Version 1.1 of DTLS.) | above). (There is no Version 1.1 of DTLS.) | |||
Note: DTLS and TLS are nearly identical. The most notable exception | 3.1.3. Fallback to Lower Versions | |||
is that RC4, which is a stream-based bulk encryption algorithm, | ||||
cannot be supported by DTLS. | ||||
4.1.3. Fallback to Lower Versions | ||||
Clients that "fallback" to lower versions of the protocol after the | Clients that "fallback" to lower versions of the protocol after the | |||
server rejects higher versions of the protocol MUST NOT fallback to | server rejects higher versions of the protocol MUST NOT fallback to | |||
SSLv3. | SSLv3. | |||
Rationale: Some client implementations revert to lower versions of | Rationale: Some client implementations revert to lower versions of | |||
TLS or even to SSLv3 if the server rejected higher versions of the | TLS or even to SSLv3 if the server rejected higher versions of the | |||
protocol. This fallback can be forced by a man in the middle (MITM) | protocol. This fallback can be forced by a man in the middle (MITM) | |||
attacker. TLS 1.0 and SSLv3 are significantly less secure than TLS | attacker. TLS 1.0 and SSLv3 are significantly less secure than TLS | |||
1.2, the version recommended by this document. While TLS 1.0-only | 1.2, the version recommended by this document. While TLS 1.0-only | |||
servers are still quite common, IP scans show that SSLv3-only servers | servers are still quite common, IP scans show that SSLv3-only servers | |||
amount to only about 3% of the current Web server population. | amount to only about 3% of the current Web server population. | |||
4.2. Strict TLS | 3.2. Strict TLS | |||
To prevent SSL Stripping: | To prevent SSL Stripping: | |||
o In cases where an application protocol allows implementations or | o In cases where an application protocol allows implementations or | |||
deployments a choice between strict TLS configuration and dynamic | deployments a choice between strict TLS configuration and dynamic | |||
upgrade from unencrypted to TLS-protected traffic (such as | upgrade from unencrypted to TLS-protected traffic (such as | |||
STARTTLS), clients and servers SHOULD prefer strict TLS | STARTTLS), clients and servers SHOULD prefer strict TLS | |||
configuration. | configuration. | |||
o In many application protocols, clients can be configured to use | o In many application protocols, clients can be configured to use | |||
TLS even if the server has not advertised that TLS is mandatory or | TLS no matter whether the server offers TLS during a protocol | |||
even supported (e.g., this is often the case in messaging | exchange or advertises support for TLS (e.g., through a flag | |||
protocols such as IMAP and XMPP). Application clients SHOULD use | indicating that TLS is required). Application clients SHOULD use | |||
TLS by default, and disable this default only through explicit | TLS by default, and disable this default only through explicit | |||
configuration by the user. | configuration by the user. | |||
o HTTP client and server implementations MUST support the HTTP | o HTTP client and server implementations MUST support the HTTP | |||
Strict Transport Security (HSTS) header [RFC6797], in order to | Strict Transport Security (HSTS) header [RFC6797], in order to | |||
allow Web servers to advertise that they are willing to accept | allow Web servers to advertise that they are willing to accept | |||
TLS-only clients. | TLS-only clients. | |||
o When applicable, Web servers SHOULD use HSTS to indicate that they | o When applicable, Web servers SHOULD use HSTS to indicate that they | |||
are willing to accept TLS-only clients. | are willing to accept TLS-only clients. | |||
Rationale: Combining unprotected and TLS-protected communication | Rationale: Combining unprotected and TLS-protected communication | |||
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. | |||
4.3. Compression | 3.3. Compression | |||
Implementations and deployments SHOULD disable TLS-level compression | Implementations and deployments SHOULD disable TLS-level compression | |||
([RFC5246], Sec. 6.2.2). | ([RFC5246], Section 6.2.2). | |||
Rationale: TLS compression has been subject to security attacks, such | Rationale: TLS compression has been subject to security attacks, such | |||
as the CRIME attack. | as the CRIME attack. | |||
Implementers should note that compression at higher protocol levels | Implementers should note that compression at higher protocol levels | |||
can allow an active attacker to extract cleartext information from | can allow an active attacker to extract cleartext information from | |||
the connection. The BREACH attack is one such case. These issues | the connection. The BREACH attack is one such case. These issues | |||
can only be mitigated outside of TLS and are thus out of scope of the | can only be mitigated outside of TLS and are thus out of scope of the | |||
current document. See Sec. 2.5 of [I-D.ietf-uta-tls-attacks] for | current document. See Section 2.5 of [I-D.ietf-uta-tls-attacks] for | |||
further details. | further details. | |||
4.4. TLS Session Resumption | 3.4. TLS Session Resumption | |||
If TLS session resumption is used, care ought to be taken to do so | If TLS session resumption is used, care ought to be taken to do so | |||
safely. In particular, when using session tickets [RFC5077], the | safely. In particular, when using session tickets [RFC5077], the | |||
resumption information MUST be authenticated and encrypted to prevent | resumption information MUST be authenticated and encrypted to prevent | |||
modification or eavesdropping by an attacker. Further | modification or eavesdropping by an attacker. Further | |||
recommendations apply to session tickets: | recommendations apply to session tickets: | |||
o A strong cipher suite MUST be used when encrypting the ticket (as | o A strong cipher suite MUST be used when encrypting the ticket (as | |||
least as strong as the main TLS cipher suite). | least as strong as the main TLS cipher suite). | |||
o Ticket keys MUST be changed regularly, e.g. once every week, so as | o Ticket keys MUST be changed regularly, e.g., once every week, so | |||
not to negate the benefits of forward secrecy (see Section 7.3 for | as not to negate the benefits of forward secrecy (see Section 7.3 | |||
details on forward secrecy). | for details on forward secrecy). | |||
o Session ticket validity SHOULD be limited to a reasonable duration | o Session ticket validity SHOULD be limited to a reasonable duration | |||
(e.g. 1 day), for similar reasons. | (e.g., 1 day), for similar reasons. | |||
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 5) 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. | |||
4.5. TLS Renegotiation | 3.5. TLS Renegotiation | |||
Where handshake renegotiation is implemented, both clients and | Where handshake renegotiation is implemented, both clients and | |||
servers MUST implement the renegotiation_info extension, as defined | servers MUST implement the renegotiation_info extension, as defined | |||
in [RFC5746]. | in [RFC5746]. | |||
To counter the Triple Handshake attack, we adopt the recommendation | To counter the Triple Handshake attack, we adopt the recommendation | |||
from [triple-handshake]: TLS clients SHOULD ensure that all | from [triple-handshake]: TLS clients SHOULD ensure that all | |||
certificates received over a connection are valid for the current | certificates received over a connection are valid for the current | |||
server endpoint, and abort the handshake if they are not. In some | server endpoint, and abort the handshake if they are not. In some | |||
usages, it may be simplest to refuse any change of certificates | usages, it may be simplest to refuse any change of certificates | |||
during renegotiation. | during renegotiation. | |||
4.6. Server Name Indication | 3.6. Server Name Indication | |||
TLS implementations MUST support the Server Name Indication (SNI) | TLS implementations MUST support the Server Name Indication (SNI) | |||
extension for those higher level protocols which would benefit from | extension for those higher level protocols which would benefit from | |||
it, including HTTPS. However, unlike implementation, the use of SNI | it, including HTTPS. However, unlike implementation, the use of SNI | |||
in particular circumstances is a matter of local policy. | in particular circumstances is a matter of local policy. | |||
Rationale: SNI supports deployment of multiple TLS-protected virtual | Rationale: SNI supports deployment of multiple TLS-protected virtual | |||
servers on a single address, and therefore enables fine-grained | servers on a single address, and therefore enables fine-grained | |||
security for these virtual servers, by allowing each one to have its | security for these virtual servers, by allowing each one to have its | |||
own certificate. | own certificate. | |||
5. Recommendations: Cipher Suites | 4. Recommendations: Cipher Suites | |||
TLS and its implementations provide considerable flexibility in the | TLS and its implementations provide considerable flexibility in the | |||
selection of cipher suites. Unfortunately, some available cipher | selection of cipher suites. Unfortunately, some available cipher | |||
suites are insecure, some do not provide the targeted security | suites are insecure, some do not provide the targeted security | |||
services, and some no longer provide enough security. Incorrectly | services, and some no longer provide enough security. Incorrectly | |||
configuring a server leads to no or reduced security. This section | configuring a server leads to no or reduced security. This section | |||
includes recommendations on the selection and negotiation of cipher | includes recommendations on the selection and negotiation of cipher | |||
suites. | suites. | |||
5.1. General Guidelines | 4.1. General Guidelines | |||
Cryptographic algorithms weaken over time as cryptanalysis improves. | Cryptographic algorithms weaken over time as cryptanalysis improves. | |||
In other words, as time progresses, algorithms that were once | In other words, as time progresses, algorithms that were once | |||
considered strong but are now weak, need to be phased out over time | considered strong but are now weak, need to be phased out over time | |||
and replaced with more secure cipher suites to ensure that desired | and replaced with more secure cipher suites to ensure that desired | |||
security properties still hold. SSL/TLS has been in existence for | security properties still hold. SSL/TLS has been in existence for | |||
almost 20 years at this point and this section provides some much | almost 20 years at this point and this section provides some much | |||
needed recommendations concerning cipher suite selection: | needed recommendations concerning cipher suite selection: | |||
o Implementations MUST NOT negotiate the cipher suites with NULL | o Implementations MUST NOT negotiate the cipher suites with NULL | |||
skipping to change at page 11, line 5 | skipping to change at page 9, line 5 | |||
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. | |||
o Implementations MUST NOT negotiate RC4 cipher suites. | o Implementations MUST NOT negotiate RC4 cipher suites. | |||
Rationale: The RC4 stream cipher has a variety of cryptographic | Rationale: The RC4 stream cipher has a variety of cryptographic | |||
weaknesses, as documented in [I-D.ietf-tls-prohibiting-rc4]. We | weaknesses, as documented in [I-D.ietf-tls-prohibiting-rc4]. We | |||
note that this guideline does not apply to DTLS, which | note that this guideline does not apply to DTLS, which | |||
specifically forbids the use of RC4. | specifically forbids the use of RC4. | |||
o Implementations MUST NOT negotiate cipher suites offering only so- | ||||
called "export-level" encryption (including algorithms with 40 | ||||
bits or 56 bits of security). | ||||
Rationale: These cipher suites are deliberately "dumbed down" and | ||||
are very easy to break. | ||||
o Implementations MUST NOT negotiate cipher suites offering less | o Implementations MUST NOT negotiate cipher suites offering less | |||
than 112 bits of security, including the so-called "export-level" | than 112 bits of security, including the so-called "export-level" | |||
encryption (which provide 40 or 56 bits of security). | encryption (which provide 40 or 56 bits of security). | |||
Rationale: Based on [RFC3766], at least 112 bits of security is | Rationale: Based on [RFC3766], at least 112 bits of security is | |||
needed. 40-bit and 56-bit security are considered insecure today. | needed. 40-bit and 56-bit security are considered insecure today. | |||
TLS 1.1 and 1.2 never negotiate 40-bit or 56-bit export ciphers. | TLS 1.1 and 1.2 never negotiate 40-bit or 56-bit export ciphers. | |||
o Implementations SHOULD NOT negotiate cipher suites that use | o Implementations SHOULD NOT negotiate cipher suites that use | |||
algorithms offering less than 128 bits of security. | algorithms offering less than 128 bits of security. | |||
Rationale: Cipher suites that offer between 112-bits and 128-bits | Rationale: Cipher suites that offer between 112-bits and 128-bits | |||
of security are not considered weak at this time, however it is | of security are not considered weak at this time, however it is | |||
expected that their useful lifespan is short enough to justify | expected that their useful lifespan is short enough to justify | |||
supporting stronger cipher suites at this time. 128-bit ciphers | supporting stronger cipher suites at this time. 128-bit ciphers | |||
are expected to remain secure for at least several years, and | are expected to remain secure for at least several years, and | |||
256-bit ciphers "until the next fundamental technology | 256-bit ciphers "until the next fundamental technology | |||
breakthrough". Note that some legacy cipher suites (e.g. 168-bit | breakthrough". Note that some legacy cipher suites (e.g., 168-bit | |||
3DES) have an effective key length which is smaller than their | 3DES) have an effective key length which is smaller than their | |||
nominal key length (112 bits in the case of 3DES). Such cipher | nominal key length (112 bits in the case of 3DES). Such cipher | |||
suites should be evaluated according to their effective key | suites should be evaluated according to their effective key | |||
length. | length. | |||
o Implementations MUST support, and SHOULD prefer to negotiate, | o Implementations MUST support, and SHOULD prefer to negotiate, | |||
cipher suites offering forward secrecy, such as those in the | cipher suites offering forward secrecy, such as those in the | |||
Ephemeral Diffie-Hellman and Elliptic Curve Ephemeral Diffie- | Ephemeral Diffie-Hellman and Elliptic Curve Ephemeral Diffie- | |||
Hellman ("DHE" and "ECDHE") families. | Hellman ("DHE" and "ECDHE") families. | |||
Rationale: Forward secrecy (sometimes called "perfect forward | Rationale: Forward secrecy (sometimes called "perfect forward | |||
secrecy") prevents the recovery of information that was encrypted | secrecy") prevents the recovery of information that was encrypted | |||
with older session keys, thus limiting the amount of time during | with older session keys, thus limiting the amount of time during | |||
which attacks can be successful. | which attacks can be successful. See Section 7.3 for a detailed | |||
discussion. | ||||
5.2. Recommended Cipher Suites | 4.2. Recommended Cipher Suites | |||
Given the foregoing considerations, implementation and deployment of | Given the foregoing considerations, implementation and deployment of | |||
the following cipher suites is RECOMMENDED: | the following cipher suites is RECOMMENDED: | |||
o TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | o TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | |||
o TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | o TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | |||
o TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | o TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | |||
o TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | o TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | |||
These cipher suites are supported only in TLS 1.2 since they are | These cipher suites are supported only in TLS 1.2 since they are | |||
authenticated encryption (AEAD) algorithms [RFC5116]. | authenticated encryption (AEAD) algorithms [RFC5116]. | |||
Typically, in order to prefer these suites, the order of suites needs | Typically, in order to prefer these suites, the order of suites needs | |||
to be explicitly configured in server software. | to be explicitly configured in server software. | |||
[RFC4492] allows clients and servers to negotiate ECDH parameters | 4.2.1. Implementation Details | |||
(curves). Both clients and servers SHOULD include the "Supported | ||||
Elliptic Curves" extension [RFC4492]. For interoperability, clients | ||||
and servers SHOULD support the NIST P-256 (secp256r1) curve | ||||
[RFC4492]. In addition, clients SHOULD send an ec_point_formats | ||||
extension with a single element, "uncompressed". | ||||
5.3. Cipher Suite Negotiation Details | ||||
Clients SHOULD include TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 as the | Clients SHOULD include TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 as the | |||
first proposal to any server, unless they have prior knowledge that | first proposal to any server, unless they have prior knowledge that | |||
the server cannot respond to a TLS 1.2 client_hello message. | the server cannot respond to a TLS 1.2 client_hello message. | |||
Servers SHOULD prefer this cipher suite whenever it is proposed, even | Servers SHOULD prefer this cipher suite whenever it is proposed, even | |||
if it is not the first proposal. | if it is not the first proposal. | |||
Clients are of course free to offer stronger cipher suites, e.g. | Clients are of course free to offer stronger cipher suites, e.g., | |||
using AES-256; when they do, the server SHOULD prefer the stronger | using AES-256; when they do, the server SHOULD prefer the stronger | |||
cipher suite unless there are compelling reasons (e.g., seriously | cipher suite unless there are compelling reasons (e.g., seriously | |||
degraded performance) to choose otherwise. | degraded performance) to choose otherwise. | |||
Note that other profiles of TLS 1.2 exist that use different cipher | ||||
suites. For example, [RFC6460] defines a profile that uses the | ||||
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 and | ||||
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 cipher suites. | ||||
This document is not an application profile standard, in the sense of | This document is not an application profile standard, in the sense of | |||
Sec. 9 of [RFC5246]. As a result, clients and servers are still | Section 9 of [RFC5246]. As a result, clients and servers are still | |||
REQUIRED to support the mandatory TLS cipher suite, | REQUIRED to support the mandatory TLS cipher suite, | |||
TLS_RSA_WITH_AES_128_CBC_SHA. | TLS_RSA_WITH_AES_128_CBC_SHA. | |||
5.4. Public Key Length | Note that some profiles of TLS 1.2 use different cipher suites. For | |||
example, [RFC6460] defines a profile that uses the | ||||
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 and | ||||
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 cipher suites. | ||||
[RFC4492] allows clients and servers to negotiate ECDH parameters | ||||
(curves). Both clients and servers SHOULD include the "Supported | ||||
Elliptic Curves" extension [RFC4492]. For interoperability, clients | ||||
and servers SHOULD support the NIST P-256 (secp256r1) curve | ||||
[RFC4492]. In addition, clients SHOULD send an ec_point_formats | ||||
extension with a single element, "uncompressed". | ||||
4.3. Public Key Length | ||||
When using the cipher suites recommended in this document, two public | When using the cipher suites recommended in this document, two public | |||
keys are normally used in the TLS handshake: one for the Diffie- | keys are normally used in the TLS handshake: one for the Diffie- | |||
Hellman key agreement and one for server authentication. Where a | Hellman key agreement and one for server authentication. Where a | |||
client certificate is used, a third one is added. | client certificate is used, a third public key is added. | |||
With a key exchange based on modular Diffie-Hellman ("DHE" cipher | With a key exchange based on modular Diffie-Hellman ("DHE" cipher | |||
suites), DH key lengths of at least 2048 bits are RECOMMENDED. | suites), DH key lengths of at least 2048 bits are RECOMMENDED. | |||
Rationale: because Diffie-Hellman keys of 1024 bits are estimated to | Rationale: For various reasons, in practice DH keys are typically | |||
be roughly equivalent to 80-bit symmetric keys, it is better to use | generated in lengths that are powers of two (e.g., 2^10 = 1024 bits, | |||
longer keys for the "DHE" family of cipher suites. Key lengths of at | 2^11 = 2048 bits, 2^12 = 4096 bits). Because a DH key of 1228 bits | |||
least 2048 bits are estimated to be roughly equivalent to 112-bit | would be roughly equivalent to only an 80-bit symmetric key | |||
symmetric keys and might be sufficient for at least the next | [RFC3766], it is better to use keys longer than that for the "DHE" | |||
10 years. See Section 5.5 for additional information on the use of | family of cipher suites. A DH key of 1926 bits would be roughly | |||
modular Diffie-Hellman in TLS. | equivalent to a 100-bit symmetric key [RFC3766] and a DH key of 2048 | |||
bits might be sufficient for at least the next 10 years. See | ||||
Section 4.4 for additional information on the use of modular Diffie- | ||||
Hellman in TLS. | ||||
Servers SHOULD authenticate using 2048-bit certificates. In | As noted in [RFC3766], correcting for the emergence of a TWIRL | |||
machine would imply that 1024-bit DH keys yield about 65 bits of | ||||
equivalent strength and that a 2048-bit DH key would yield about 92 | ||||
bits of equivalent strength. | ||||
Servers SHOULD authenticate using at least 2048-bit certificates. In | ||||
addition, the use of SHA-256 fingerprints is RECOMMENDED (see | addition, the use of SHA-256 fingerprints is RECOMMENDED (see | |||
[CAB-Baseline] for more details). Clients SHOULD indicate to servers | [CAB-Baseline] for more details). Clients SHOULD indicate to servers | |||
that they request SHA-256, by using the "Signature Algorithms" | that they request SHA-256, by using the "Signature Algorithms" | |||
extension defined in TLS 1.2. | extension defined in TLS 1.2. | |||
5.5. Modular vs. Elliptic Curve DH Cipher Suites | 4.4. Modular vs. Elliptic Curve DH Cipher Suites | |||
Not all TLS implementations support both modular and EC Diffie- | Not all TLS implementations support both modular and EC Diffie- | |||
Hellman groups, as required by Section 5.2. Some implementations are | Hellman groups, as required by Section 4.2. Some implementations are | |||
severely limited in the length of DH values. When such | severely limited in the length of DH values. When such | |||
implementations need to be accommodated, we recommend using (in | implementations need to be accommodated, we recommend using (in | |||
priority order): | priority order): | |||
1. Elliptic Curve DHE with negotiated parameters [RFC5289] | 1. Elliptic Curve DHE with negotiated parameters [RFC5289] | |||
2. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 [RFC5288], with 2048-bit | 2. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 [RFC5288], with 2048-bit | |||
Diffie-Hellman parameters | Diffie-Hellman parameters | |||
3. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, with 1024-bit parameters. | 3. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, with 1024-bit parameters. | |||
Rationale: Elliptic Curve Cryptography is not universally deployed | Rationale: Elliptic Curve Cryptography is not universally deployed | |||
for several reasons, including its complexity compared to modular | for several reasons, including its complexity compared to modular | |||
arithmetic and longstanding IPR concerns. On the other hand, there | arithmetic and longstanding perceptions of IPR concerns (which, for | |||
are two related issues hindering effective use of modular Diffie- | the most part, have now been resolved [RFC6090]). On the other hand, | |||
Hellman cipher suites in TLS: | there are two related issues hindering effective use of modular | |||
Diffie-Hellman cipher suites in TLS: | ||||
o There are no protocol mechanisms to negotiate the DH groups or | o There are no protocol mechanisms to negotiate the DH groups or | |||
parameter lengths supported by client and server. | parameter lengths supported by client and server. | |||
o There are widely deployed client implementations that reject | o There are widely deployed client implementations that reject | |||
received DH parameters if they are longer than 1024 bits. | received DH parameters if they are longer than 1024 bits. | |||
We note that with DHE and ECDHE cipher suites, the TLS master key | We note that with DHE and ECDHE cipher suites, the TLS master key | |||
only depends on the Diffie-Hellman parameters and not on the strength | only depends on the Diffie-Hellman parameters and not on the strength | |||
of the RSA certificate; moreover, 1024 bit modular DH parameters are | of the RSA certificate; moreover, 1024 bit modular DH parameters are | |||
generally considered insufficient at this time. | generally considered insufficient at this time. | |||
With modular ephemeral DH, deployers SHOULD carefully evaluate | With modular ephemeral DH, deployers SHOULD carefully evaluate | |||
interoperability vs. security considerations when configuring their | interoperability vs. security considerations when configuring their | |||
TLS endpoints. | TLS endpoints. | |||
5.6. Truncated HMAC | 4.5. Truncated HMAC | |||
Implementations MUST NOT use the Truncated HMAC extension, defined in | Implementations MUST NOT use the Truncated HMAC extension, defined in | |||
Sec. 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 | ||||
The deployment recommendations of this document address the operators | ||||
of application layer services that are most commonly used on the | ||||
Internet, including, but not limited to: | ||||
o Operators of web servers that wish to protect HTTP with TLS. | ||||
o Operators of email servers who wish to protect the application- | ||||
layer protocols with TLS (e.g., IMAP, POP3 or SMTP). | ||||
o Operators of instant-messaging services who wish to protect their | ||||
application-layer protocols with TLS (e.g., XMPP or IRC). | ||||
5.1. Security Services | ||||
This document provides recommendations for an audience that wishes to | ||||
secure their communication with TLS to achieve the following: | ||||
o Confidentiality: all application-layer communication is encrypted | ||||
with the goal that no party should be able to decrypt it except | ||||
the intended receiver. | ||||
o Data integrity: any changes made to the communication in transit | ||||
are detectable by the receiver. | ||||
o Authentication: an end-point of the TLS communication is | ||||
authenticated as the intended entity to communicate with. | ||||
With regard to authentication, TLS enables authentication of one or | ||||
both end-points in the communication. Although some TLS usage | ||||
scenarios do not require authentication, those scenarios are not in | ||||
scope for this document (a rationale for this decision is provided | ||||
under Section 5.2). | ||||
If deployers deviate from the recommendations given in this document, | ||||
they MUST verify that they do not need one of the foregoing security | ||||
services. | ||||
This document applies only to environments where confidentiality is | ||||
required. It recommends algorithms and configuration options that | ||||
enforce secrecy of the data-in-transit. | ||||
This document also assumes that data integrity protection is always | ||||
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. | ||||
There are attacks against confidentiality-only protection that | ||||
utilize the lack of integrity to also break confidentiality (see for | ||||
instance [DegabrieleP07] in the context of IPsec). | ||||
The intended audience covers those services that are most commonly | ||||
used on the Internet. Typically, all communication between TLS | ||||
clients and TLS servers requires all three of the above security | ||||
services. This is particularly true where TLS clients are user | ||||
agents like Web browsers or email software. | ||||
This document does not address the rarer deployment scenarios where | ||||
one of the above three properties is not desired, such as the use | ||||
case described under Section 5.2 below. Another example of an | ||||
audience not needing confidentiality is the following: a monitored | ||||
network where the authorities in charge of the respective traffic | ||||
domain require full access to unencrypted (plaintext) traffic, and | ||||
where users collaborate and send their traffic in the clear. | ||||
5.2. Unauthenticated TLS and Opportunistic Encryption | ||||
Several important applications use TLS to protect data between a TLS | ||||
client and a TLS server, but do so without the TLS client necessarily | ||||
verifying the server's certificate. This practice is often called | ||||
"unauthenticated TLS". The reader is referred to | ||||
[I-D.ietf-dane-smtp-with-dane] for an example and an explanation of | ||||
why this less secure practice will likely remain common in the | ||||
context of SMTP (especially for MTA-to-MTA communications). The | ||||
practice is also encountered in similar contexts such as server-to- | ||||
server traffic on the XMPP network (where multi-tenant hosting | ||||
environments make it difficult for operators to obtain proper | ||||
certificates for all of the domains they service). | ||||
Furthermore, in some scenarios the use of TLS itself is optional, | ||||
i.e. the client decides dynamically ("opportunistically") whether to | ||||
use TLS with a particular server or to connect in the clear. This | ||||
practice, often called "opportunistic encryption", and is described | ||||
at length in Section 2 of [I-D.farrelll-mpls-opportunistic-encrypt]. | ||||
It can be argued that the recommendations provided in this document | ||||
ought to apply equally to unauthenticated TLS as well as | ||||
authenticated TLS. That would keep TLS implementations and | ||||
deployments in sync, which is a desirable property given that servers | ||||
can be used simultaneously for unauthenticated TLS and for | ||||
authenticated TLS (indeed, a server cannot know whether a client | ||||
might attempt authenticated or unauthenticated TLS). On the other | ||||
hand, it has been argued that some of the recommendations in this | ||||
document might be too strict for unauthenticated scenarios and that | ||||
any security is better than no security at all (i.e., sending traffic | ||||
in the clear), even if it means deploying outdated protocol versions | ||||
and ciphers in unauthenticated scenarios. The sense of the UTA | ||||
Working Group was to complete work on this document about | ||||
authenticated TLS and to initiate work on a separate document about | ||||
unauthenticated TLS. | ||||
In summary: this document does not apply to unauthenticated TLS use | ||||
cases. | ||||
6. IANA Considerations | 6. IANA Considerations | |||
This document requests no actions of IANA. [Note to RFC Editor: | This document requests no actions of IANA. [Note to RFC Editor: | |||
please remove this whole section before publication.] | please remove this whole section before publication.] | |||
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 | |||
skipping to change at page 14, line 40 | skipping to change at page 15, line 8 | |||
7.1. Host Name Validation | 7.1. Host Name Validation | |||
Application authors should take note that TLS implementations | Application authors should take note that TLS implementations | |||
frequently do not validate host names and must therefore determine if | frequently do not validate host names and must therefore determine if | |||
the TLS implementation they are using does and, if not, write their | the TLS implementation they are using does and, if not, write their | |||
own validation code or consider changing the TLS implementation. | own validation code or consider changing the TLS implementation. | |||
It is noted that the requirements regarding host name validation (and | It is noted that the requirements regarding host name validation (and | |||
in general, binding between the TLS layer and the protocol that runs | in general, binding between the TLS layer and the protocol that runs | |||
above it) vary between different protocols. For HTTPS, these | above it) vary between different protocols. For HTTPS, these | |||
requirements are defined by Sec. 3 of [RFC2818]. | requirements are defined by Section 3 of [RFC2818]. | |||
Readers are referred to [RFC6125] for further details regarding | Readers are referred to [RFC6125] for further details regarding | |||
generic host name validation in the TLS context. In addition, the | generic host name validation in the TLS context. In addition, the | |||
RFC contains a long list of example protocols, some of which | RFC contains a long list of example protocols, some of which | |||
implement a policy very different from HTTPS. | implement a policy very different from HTTPS. | |||
If the host name is discovered indirectly and in an insecure manner | If the host name is discovered indirectly and in an insecure manner | |||
(e.g., by an insecure DNS query for an MX or SRV record), it SHOULD | (e.g., by an insecure DNS query for an MX or SRV record), it SHOULD | |||
NOT be used as a reference identifier [RFC6125] even when it matches | NOT be used as a reference identifier [RFC6125] even when it matches | |||
the presented certificate. This proviso does not apply if the host | the presented certificate. This proviso does not apply if the host | |||
name is discovered securely (for further discussion, see for example | name is discovered securely (for further discussion, see for example | |||
[I-D.ietf-dane-srv] and [I-D.ietf-dane-smtp-with-dane]). | [I-D.ietf-dane-srv] and [I-D.ietf-dane-smtp-with-dane]). | |||
Host name validation typically applies only to the leaf "end entity" | ||||
certificate. Naturally, in order to ensure proper authentication in | ||||
the context of the PKI, application clients need to verify the entire | ||||
certification path in accordance with [RFC5280] (see also [RFC6125]). | ||||
7.2. AES-GCM | 7.2. AES-GCM | |||
Section 5.2 above recommends the use of the AES-GCM authenticated | Section 4.2 above recommends the use of the AES-GCM authenticated | |||
encryption algorithm. Please refer to [RFC5246], Sec. 11 for general | encryption algorithm. Please refer to [RFC5246], Section 11 for | |||
security considerations when using TLS 1.2, and to [RFC5288], Sec. 6 | general security considerations when using TLS 1.2, and to [RFC5288], | |||
for security considerations that apply specifically to AES-GCM when | Section 6 for security considerations that apply specifically to AES- | |||
used with TLS. | GCM when used with TLS. | |||
7.3. Forward Secrecy | 7.3. Forward Secrecy | |||
Forward secrecy (also often called Perfect Forward Secrecy or "PFS" | Forward secrecy (also often called Perfect Forward Secrecy or "PFS" | |||
and defined in [RFC4949]) is a defense against an attacker who | and defined in [RFC4949]) is a defense against an attacker who | |||
records encrypted conversations where the session keys are only | records encrypted conversations where the session keys are only | |||
encrypted with the communicating parties' long-term keys. Should the | encrypted with the communicating parties' long-term keys. Should the | |||
attacker be able to obtain these long-term keys at some point later | attacker be able to obtain these long-term keys at some point later | |||
in time, he will be able to decrypt the session keys and thus the | in time, he will be able to decrypt the session keys and thus the | |||
entire conversation. In the context of TLS and DTLS, such compromise | entire conversation. In the context of TLS and DTLS, such compromise | |||
skipping to change at page 15, line 40 | skipping to change at page 16, line 14 | |||
o A long-term key used on a device as a default key [Heninger2012]. | o A long-term key used on a device as a default key [Heninger2012]. | |||
o A key generated by a Trusted Third Party like a CA, and later | o A key generated by a Trusted Third Party like a CA, and later | |||
retrieved from it either by extortion or compromise | retrieved from it either by extortion or compromise | |||
[Soghoian2011]. | [Soghoian2011]. | |||
o A cryptographic break-through, or the use of asymmetric keys with | o A cryptographic break-through, or the use of asymmetric keys with | |||
insufficient length [Kleinjung2010]. | insufficient length [Kleinjung2010]. | |||
PFS ensures in such cases that the session keys cannot be determined | Forward secrecy ensures in such cases that the session keys cannot be | |||
even by an attacker who obtains the long-term keys some time after | determined even by an attacker who obtains the long-term keys some | |||
the conversation. It also protects against an attacker who is in | time after the conversation. It also protects against an attacker | |||
possession of the long-term keys, but remains passive during the | who is in possession of the long-term keys, but remains passive | |||
conversation. | during the conversation. | |||
PFS is generally achieved by using the Diffie-Hellman scheme to | Forward secrecy is generally achieved by using the Diffie-Hellman | |||
derive session keys. The Diffie-Hellman scheme has both parties | scheme to derive session keys. The Diffie-Hellman scheme has both | |||
maintain private secrets and send parameters over the network as | parties maintain private secrets and send parameters over the network | |||
modular powers over certain cyclic groups. The properties of the so- | as modular powers over certain cyclic groups. The properties of the | |||
called Discrete Logarithm Problem (DLP) allow to derive the session | so-called Discrete Logarithm Problem (DLP) allow to derive the | |||
keys without an eavesdropper being able to do so. There is currently | session keys without an eavesdropper being able to do so. There is | |||
no known attack against DLP if sufficiently large parameters are | currently no known attack against DLP if sufficiently large | |||
chosen. A variant of the Diffie-Hellman scheme uses Elliptic Curves | parameters are chosen. A variant of the Diffie-Hellman scheme uses | |||
instead of the originally proposed modular arithmetics. | Elliptic Curves instead of the originally proposed modular | |||
arithmetics. | ||||
Unfortunately, many TLS/DTLS cipher suites were defined that do not | Unfortunately, many TLS/DTLS cipher suites were defined that do not | |||
feature PFS, e.g. TLS_RSA_WITH_AES_256_CBC_SHA256. We thus advocate | feature forward secrecy, e.g., TLS_RSA_WITH_AES_256_CBC_SHA256. We | |||
strict use of PFS-only ciphers. | thus advocate strict use of forward-secrecy-only ciphers. | |||
7.4. Diffie-Hellman Exponent Reuse | 7.4. Diffie-Hellman Exponent Reuse | |||
For performance reasons, many TLS implementations reuse Diffie- | For performance reasons, many TLS implementations reuse Diffie- | |||
Hellman and Elliptic Curve Diffie-Hellman exponents across multiple | Hellman and Elliptic Curve Diffie-Hellman exponents across multiple | |||
connections. Such reuse can result in major security issues: | connections. Such reuse can result in major security issues: | |||
o If exponents are reused for a long time (e.g., more than a few | o If exponents are reused for a long time (e.g., more than a few | |||
hours), an attacker who gains access to the host can decrypt | hours), an attacker who gains access to the host can decrypt | |||
previous connections. In other words, exponent reuse negates the | previous connections. In other words, exponent reuse negates the | |||
effects of forward secrecy. | effects of forward secrecy. | |||
o TLS implementations that reuse exponents should test the DH public | o TLS implementations that reuse exponents should test the DH public | |||
key they receive, in order to avoid some known attacks. These | key they receive for group membership, in order to avoid some | |||
tests are not standardized in TLS at the time of writing. See | known attacks. These tests are not standardized in TLS at the | |||
[RFC6989] for recipient tests required of IKEv2 implementations | time of writing. See [RFC6989] for recipient tests required of | |||
that reuse DH exponents. | IKEv2 implementations that reuse DH exponents. | |||
7.5. Certificate Revocation | 7.5. Certificate Revocation | |||
Unfortunately, no mechanism exists at this time that we can recommend | Unfortunately, no mechanism exists at this time that we can recommend | |||
as a complete and efficient solution for the problem of checking the | as a complete and efficient solution for the problem of checking the | |||
revocation status of common public key certificates (a.k.a. PKIX | revocation status of common public key certificates (a.k.a. PKIX | |||
certificates, [RFC5280]). The current state of the art is as | certificates, [RFC5280]). The current state of the art is as | |||
follows: | follows: | |||
o Certificate Revocation Lists (CRLs) are not scalable and therefore | o Certificate Revocation Lists (CRLs) are not scalable and therefore | |||
skipping to change at page 17, line 16 | skipping to change at page 17, line 41 | |||
o Proprietary mechanisms that embed revocation lists in the Web | o Proprietary mechanisms that embed revocation lists in the Web | |||
browser's configuration database cannot scale beyond a small | browser's configuration database cannot scale beyond a small | |||
number of the most heavily used Web servers. | number of the most heavily used Web servers. | |||
With regard to PKIX certificates, servers SHOULD support OCSP and | With regard to PKIX certificates, servers SHOULD support OCSP and | |||
OCSP stapling, including the OCSP stapling extension defined in | OCSP stapling, including the OCSP stapling extension defined in | |||
[RFC6961], as a best practice given the current state of the art and | [RFC6961], as a best practice given the current state of the art and | |||
as a foundation for a possible future solution. | as a foundation for a possible future solution. | |||
The foregoing considerations do not apply to DANE certificates | The foregoing considerations do not apply to scenarios where the | |||
[RFC6698], since they do not require a revocation mechanism. | DANE-TLSA resource record [RFC6698] is used to signal to a client | |||
which certificate a server considers valid and good to use for TLS | ||||
connections. | ||||
8. Acknowledgments | 8. Acknowledgments | |||
We would like to thank Uri Blumenthal, Viktor Dukhovni, Stephen | We would like to thank Uri Blumenthal, Viktor Dukhovni, Stephen | |||
Farrell, Simon Josefsson, Watson Ladd, Orit Levin, Johannes Merkle, | Farrell, Paul Hoffman, Simon Josefsson, Watson Ladd, Orit Levin, | |||
Bodo Moeller, Yoav Nir, Kenny Paterson, Patrick Pelletier, Tom | Ilari Liusvaara, Johannes Merkle, Bodo Moeller, Yoav Nir, Kenny | |||
Ritter, Rich Salz, Sean Turner, and Aaron Zauner for their feedback | Paterson, Patrick Pelletier, Tom Ritter, Rich Salz, Sean Turner, and | |||
and suggested improvements. Thanks to Brian Smith whose "browser | Aaron Zauner for their feedback and suggested improvements. Thanks | |||
cipher suites" page is a great resource. Finally, thanks to all | to Brian Smith, whose "browser cipher suites" page is a great | |||
others who commented on the TLS, UTA and other lists and are not | resource. Finally, thanks to all others who commented on the TLS, | |||
mentioned here by name. | UTA, and other discussion lists but who are not mentioned here by | |||
name. | ||||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | |||
skipping to change at page 20, line 23 | skipping to change at page 20, line 46 | |||
Encryption", RFC 5116, January 2008. | Encryption", RFC 5116, January 2008. | |||
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
(CRL) Profile", RFC 5280, May 2008. | (CRL) Profile", RFC 5280, May 2008. | |||
[RFC6066] Eastlake, D., "Transport Layer Security (TLS) Extensions: | [RFC6066] Eastlake, D., "Transport Layer Security (TLS) Extensions: | |||
Extension Definitions", RFC 6066, January 2011. | Extension Definitions", RFC 6066, January 2011. | |||
[RFC6090] McGrew, D., Igoe, K., and M. Salter, "Fundamental Elliptic | ||||
Curve Cryptography Algorithms", RFC 6090, February 2011. | ||||
[RFC6101] Freier, A., Karlton, P., and P. Kocher, "The Secure | [RFC6101] Freier, A., Karlton, P., and P. Kocher, "The Secure | |||
Sockets Layer (SSL) Protocol Version 3.0", RFC 6101, | Sockets Layer (SSL) Protocol Version 3.0", RFC 6101, | |||
August 2011. | August 2011. | |||
[RFC6460] Salter, M. and R. Housley, "Suite B Profile for Transport | [RFC6460] Salter, M. and R. Housley, "Suite B Profile for Transport | |||
Layer Security (TLS)", RFC 6460, January 2012. | Layer Security (TLS)", RFC 6460, January 2012. | |||
[RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication | [RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication | |||
of Named Entities (DANE) Transport Layer Security (TLS) | of Named Entities (DANE) Transport Layer Security (TLS) | |||
Protocol: TLSA", RFC 6698, August 2012. | Protocol: TLSA", RFC 6698, August 2012. | |||
skipping to change at page 21, line 15 | skipping to change at page 21, line 39 | |||
[triple-handshake] | [triple-handshake] | |||
Delignat-Lavaud, A., Bhargavan, K., and A. Pironti, | Delignat-Lavaud, A., Bhargavan, K., and A. Pironti, | |||
"Triple Handshakes Considered Harmful: Breaking and Fixing | "Triple Handshakes Considered Harmful: Breaking and Fixing | |||
Authentication over TLS", 2014, <https://secure- | Authentication over TLS", 2014, <https://secure- | |||
resumption.com/>. | resumption.com/>. | |||
Appendix A. Change Log | Appendix A. Change Log | |||
Note to RFC Editor: please remove this section before publication. | Note to RFC Editor: please remove this section before publication. | |||
A.1. draft-ietf-uta-tls-bcp-06 | A.1. draft-ietf-uta-tls-bcp-07 | |||
o WGLC feedback. | ||||
A.2. draft-ietf-uta-tls-bcp-06 | ||||
o Undo unauthenticated TLS, following another long thread on the | o Undo unauthenticated TLS, following another long thread on the | |||
list. | list. | |||
A.2. draft-ietf-uta-tls-bcp-05 | A.3. draft-ietf-uta-tls-bcp-05 | |||
o Lots of comments by Sean Turner. | o Lots of comments by Sean Turner. | |||
o Unauthenticated TLS, following a long thread on the list. | o Unauthenticated TLS, following a long thread on the list. | |||
A.3. draft-ietf-uta-tls-bcp-04 | A.4. draft-ietf-uta-tls-bcp-04 | |||
o Some cleanup, and input from TLS WG discussion on applicability. | o Some cleanup, and input from TLS WG discussion on applicability. | |||
A.4. draft-ietf-uta-tls-bcp-03 | A.5. draft-ietf-uta-tls-bcp-03 | |||
o Disallow truncated HMAC. | o Disallow truncated HMAC. | |||
o Applicability to DTLS. | o Applicability to DTLS. | |||
o Some more text restructuring. | o Some more text restructuring. | |||
o Host name validation is sometimes irrelevant. | o Host name validation is sometimes irrelevant. | |||
o HSTS: MUST implement, SHOULD deploy. | o HSTS: MUST implement, SHOULD deploy. | |||
o Session identities are not protected, only tickets are. | o Session identities are not protected, only tickets are. | |||
o Clarified the target audience. | o Clarified the target audience. | |||
A.5. draft-ietf-uta-tls-bcp-02 | A.6. draft-ietf-uta-tls-bcp-02 | |||
o Rearranged some sections for clarity and re-styled the text so | o Rearranged some sections for clarity and re-styled the text so | |||
that normative text is followed by rationale where possible. | that normative text is followed by rationale where possible. | |||
o Removed the recommendation to use Brainpool curves. | o Removed the recommendation to use Brainpool curves. | |||
o Triple Handshake mitigation. | o Triple Handshake mitigation. | |||
o MUST NOT negotiate algorithms lower than 112 bits of security. | o MUST NOT negotiate algorithms lower than 112 bits of security. | |||
o MUST implement SNI, but use per local policy. | o MUST implement SNI, but use per local policy. | |||
o Changed SHOULD NOT negotiate or fall back to SSLv3 to MUST NOT. | o Changed SHOULD NOT negotiate or fall back to SSLv3 to MUST NOT. | |||
o Added hostname validation. | o Added hostname validation. | |||
o Non-normative discussion of DH exponent reuse. | o Non-normative discussion of DH exponent reuse. | |||
A.6. draft-ietf-tls-bcp-01 | A.7. draft-ietf-tls-bcp-01 | |||
o Clarified that specific TLS-using protocols may have stricter | o Clarified that specific TLS-using protocols may have stricter | |||
requirements. | requirements. | |||
o Changed TLS 1.0 from MAY to SHOULD NOT. | o Changed TLS 1.0 from MAY to SHOULD NOT. | |||
o Added discussion of "optional TLS" and HSTS. | o Added discussion of "optional TLS" and HSTS. | |||
o Recommended use of the Signature Algorithm and Renegotiation Info | o Recommended use of the Signature Algorithm and Renegotiation Info | |||
extensions. | extensions. | |||
o Use of a strong cipher for a resumption ticket: changed SHOULD to | o Use of a strong cipher for a resumption ticket: changed SHOULD to | |||
MUST. | MUST. | |||
o Added an informational discussion of certificate revocation, but | o Added an informational discussion of certificate revocation, but | |||
no recommendations. | no recommendations. | |||
A.7. draft-ietf-tls-bcp-00 | A.8. draft-ietf-tls-bcp-00 | |||
o Initial WG version, with only updated references. | o Initial WG version, with only updated references. | |||
A.8. draft-sheffer-tls-bcp-02 | A.9. draft-sheffer-tls-bcp-02 | |||
o Reorganized the content to focus on recommendations. | o Reorganized the content to focus on recommendations. | |||
o Moved description of attacks to a separate document (draft- | o Moved description of attacks to a separate document (draft- | |||
sheffer-uta-tls-attacks). | sheffer-uta-tls-attacks). | |||
o Strengthened recommendations regarding session resumption. | o Strengthened recommendations regarding session resumption. | |||
A.9. draft-sheffer-tls-bcp-01 | A.10. draft-sheffer-tls-bcp-01 | |||
o Clarified our motivation in the introduction. | o Clarified our motivation in the introduction. | |||
o Added a section justifying the need for PFS. | o Added a section justifying the need for forward secrecy. | |||
o Added recommendations for RSA and DH parameter lengths. Moved | o Added recommendations for RSA and DH parameter lengths. Moved | |||
from DHE to ECDHE, with a discussion on whether/when DHE is | from DHE to ECDHE, with a discussion on whether/when DHE is | |||
appropriate. | appropriate. | |||
o Recommendation to avoid fallback to SSLv3. | o Recommendation to avoid fallback to SSLv3. | |||
o Initial information about browser support - more still needed! | o Initial information about browser support - more still needed! | |||
o More clarity on compression. | o More clarity on compression. | |||
o Client can offer stronger cipher suites. | o Client can offer stronger cipher suites. | |||
o Discussion of the regular TLS mandatory cipher suite. | o Discussion of the regular TLS mandatory cipher suite. | |||
A.10. draft-sheffer-tls-bcp-00 | A.11. draft-sheffer-tls-bcp-00 | |||
o Initial version. | o Initial version. | |||
Authors' Addresses | Authors' Addresses | |||
Yaron Sheffer | Yaron Sheffer | |||
Porticor | Porticor | |||
29 HaHarash St. | 29 HaHarash St. | |||
Hod HaSharon 4501303 | Hod HaSharon 4501303 | |||
Israel | Israel | |||
End of changes. 73 change blocks. | ||||
268 lines changed or deleted | 291 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |