Internet DRAFT - draft-bartle-tls-deprecate-ffdhe
draft-bartle-tls-deprecate-ffdhe
Network Working Group C. Bartle
Internet-Draft Apple, Inc.
Intended status: Standards Track N. Aviram
Expires: 28 August 2021
F. Valsorda
24 February 2021
Deprecating FFDH(E) Ciphersuites in TLS
draft-bartle-tls-deprecate-ffdhe-00
Abstract
This document deprecates and discourages use of finite field and
elliptic curve Diffie Hellman cipher suites that have known
vulnerabilities or improper security properties when implemented
incorrectly.
Discussion Venues
This note is to be removed before publishing as an RFC.
Discussion of this document takes place on the Transport Layer
Security Working Group mailing list (tls@ietf.org), which is archived
at https://mailarchive.ietf.org/arch/browse/tls/.
Source for this draft and an issue tracker can be found at
https://github.com/cbartle891/draft-deprecate-ffdhe.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
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
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 28 August 2021.
Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Simplified BSD License text
as described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Simplified BSD License.
Table of Contents
1. Introduction
1.1. Requirements
2. Non-Ephemeral Diffie Hellman
3. Ephemeral Diffie Hellman
4. IANA Considerations
5. Security Considerations
6. Acknowledgments
7. References
7.1. Normative References
7.2. Informative References
Authors' Addresses
1. Introduction
TLS supports a variety of key exchange algorithms, including those
based on finite field and elliptic curve Diffie Hellman (DH) groups.
Each of these also come in ephemeral and non-ephemeral varieties.
Non-ephemeral DH algorithms use static DH public keys included in the
authenticating peer's certificate; see [RFC4492] for discussion. In
contrast, ephemeral DH algorithms use ephemeral DH public keys sent
in the handshake and authenticated by the peer's certificate.
Ephemeral and non-ephemeral finite field DH algorithms are called DHE
and DH, respectively, and ephemeral and non-ephemeral elliptic curve
DH algorithms are called ECDHE and ECDH, respectively [RFC4492].
In general, non-ephemeral cipher suites are not recommended due to
their lack of forward secrecy. However, as demonstrated by the
[Raccoon] attack, public key reuse, either via non-ephemeral cipher
suites or reused keys with ephemeral cipher suites, can lead to
timing side channels that may leak connection secrets. (Note that
Raccoon only applies to finite field DH cipher suites, and not those
based on elliptic curves.) While these side channels can be avoided
in implementations, doing is demonstrably difficult given the
prevalence of related side channels in TLS implementations.
Given these problems, this document updates [RFC4346], [RFC5246],
[RFC4162], [RFC6347], [RFC5932], [RFC5288], [RFC6209], [RFC6367],
[RFC8422], [RFC5289], and [RFC5469] to deprecate, prohibiting and
discouraging, cipher suites with key reuse.
1.1. Requirements
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
2. Non-Ephemeral Diffie Hellman
Clients MUST NOT offer non-ephemeral DH cipher suites in TLS 1.0,
1.1, and 1.2 connections. This includes all cipher suites listed in
the following table.
+==========================================+====================+
| Ciphersuite | Reference |
+==========================================+====================+
| TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_DES_CBC_SHA | [RFC5469] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_DES_CBC_SHA | [RFC5469] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 | [RFC4346][RFC6347] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_RC4_128_MD5 | [RFC5246][RFC6347] |
+------------------------------------------+--------------------+
| TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_DES_CBC_SHA | [RFC5469] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_3DES_EDE_CBC_SHA | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_AES_128_CBC_SHA | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_AES_128_CBC_SHA | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_AES_128_CBC_SHA | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_AES_256_CBC_SHA | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_AES_256_CBC_SHA | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_AES_256_CBC_SHA | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_AES_128_CBC_SHA256 | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_AES_128_CBC_SHA256 | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA | [RFC5932] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA | [RFC5932] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA | [RFC5932] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_AES_256_CBC_SHA256 | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_AES_256_CBC_SHA256 | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_AES_128_CBC_SHA256 | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_AES_256_CBC_SHA256 | [RFC5246] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA | [RFC5932] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA | [RFC5932] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA | [RFC5932] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_SEED_CBC_SHA | [RFC4162] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_SEED_CBC_SHA | [RFC4162] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_SEED_CBC_SHA | [RFC4162] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_AES_128_GCM_SHA256 | [RFC5288] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_AES_256_GCM_SHA384 | [RFC5288] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_AES_128_GCM_SHA256 | [RFC5288] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_AES_256_GCM_SHA384 | [RFC5288] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_AES_128_GCM_SHA256 | [RFC5288] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_AES_256_GCM_SHA384 | [RFC5288] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 | [RFC5932] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 | [RFC5932] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256 | [RFC5932] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 | [RFC5932] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 | [RFC5932] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256 | [RFC5932] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
+------------------------------------------+--------------------+
| TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
+------------------------------------------+--------------------+
| TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
+------------------------------------------+--------------------+
| TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
+------------------------------------------+--------------------+
Table 1
Clients SHOULD NOT offer non-ephemeral ECDH cipher suites in TLS 1.0,
1.1, and 1.2 connections. This includes all cipher suites listed in
the following table.
+=============================================+====================+
| Ciphersuite | Reference |
+=============================================+====================+
| TLS_ECDH_ECDSA_WITH_NULL_SHA | [RFC8422] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_RC4_128_SHA | [RFC8422][RFC6347] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA | [RFC8422] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA | [RFC8422] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA | [RFC8422] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_NULL_SHA | [RFC8422] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_RC4_128_SHA | [RFC8422][RFC6347] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA | [RFC8422] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_AES_128_CBC_SHA | [RFC8422] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_AES_256_CBC_SHA | [RFC8422] |
+---------------------------------------------+--------------------+
| TLS_ECDH_anon_WITH_NULL_SHA | [RFC8422] |
+---------------------------------------------+--------------------+
| TLS_ECDH_anon_WITH_RC4_128_SHA | [RFC8422][RFC6347] |
+---------------------------------------------+--------------------+
| TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA | [RFC8422] |
+---------------------------------------------+--------------------+
| TLS_ECDH_anon_WITH_AES_128_CBC_SHA | [RFC8422] |
+---------------------------------------------+--------------------+
| TLS_ECDH_anon_WITH_AES_256_CBC_SHA | [RFC8422] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 | [RFC5289] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 | [RFC5289] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 | [RFC5289] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 | [RFC5289] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 | [RFC5289] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 | [RFC5289] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 | [RFC5289] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 | [RFC5289] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 | [RFC6367] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 | [RFC6367] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 | [RFC6367] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 | [RFC6367] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
+---------------------------------------------+--------------------+
| TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
+---------------------------------------------+--------------------+
| TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
+---------------------------------------------+--------------------+
Table 2
3. Ephemeral Diffie Hellman
Clients and servers MUST NOT reuse ephemeral DHE or ECDHE public keys
across TLS connections for all existing (and future) TLS versions.
Doing so invalidates forward secret properties of these connections.
In the case of DHE (finite field DH) cipher suites, such reuse may
also lead to vulnerabilities such as those use in the [Raccoon]
attack. See Section 5 for related discussion.
4. IANA Considerations
This document makes no requests to IANA. All cipher suites listed in
Section 2 are already marked as not recommended in the "TLS Cipher
Suites" registry.
5. Security Considerations
Non-ephemeral finite field DH cipher suites (TLS_DH_*), as well as
ephemeral key reuse for finite field DH cipher suites, are prohibited
due to the [Raccoon] attack. Both are already considered bad
practice since they do not provide forward secrecy. However, Raccoon
revealed that timing side channels in processing TLS premaster
secrets may be exploited to reveal the encrypted premaster secret.
Raccoon does not apply to non-ephemeral elliptic curve DH suites,
since the same timing side channel does not exist. However, such re-
use is still discouraged, and thus deprecated in this document.
6. Acknowledgments
This document was inspired by discussion on the TLS WG mailing list
and a suggestion by Filippo Valsorda following release of the
[Raccoon] attack.
7. References
7.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC4162] Lee, H.J., Yoon, J.H., and J.I. Lee, "Addition of SEED
Cipher Suites to Transport Layer Security (TLS)",
RFC 4162, DOI 10.17487/RFC4162, August 2005,
<https://www.rfc-editor.org/info/rfc4162>.
[RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.1", RFC 4346,
DOI 10.17487/RFC4346, April 2006,
<https://www.rfc-editor.org/info/rfc4346>.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246,
DOI 10.17487/RFC5246, August 2008,
<https://www.rfc-editor.org/info/rfc5246>.
[RFC5288] Salowey, J., Choudhury, A., and D. McGrew, "AES Galois
Counter Mode (GCM) Cipher Suites for TLS", RFC 5288,
DOI 10.17487/RFC5288, August 2008,
<https://www.rfc-editor.org/info/rfc5288>.
[RFC5289] Rescorla, E., "TLS Elliptic Curve Cipher Suites with SHA-
256/384 and AES Galois Counter Mode (GCM)", RFC 5289,
DOI 10.17487/RFC5289, August 2008,
<https://www.rfc-editor.org/info/rfc5289>.
[RFC5469] Eronen, P., Ed., "DES and IDEA Cipher Suites for Transport
Layer Security (TLS)", RFC 5469, DOI 10.17487/RFC5469,
February 2009, <https://www.rfc-editor.org/info/rfc5469>.
[RFC5932] Kato, A., Kanda, M., and S. Kanno, "Camellia Cipher Suites
for TLS", RFC 5932, DOI 10.17487/RFC5932, June 2010,
<https://www.rfc-editor.org/info/rfc5932>.
[RFC6209] Kim, W., Lee, J., Park, J., and D. Kwon, "Addition of the
ARIA Cipher Suites to Transport Layer Security (TLS)",
RFC 6209, DOI 10.17487/RFC6209, April 2011,
<https://www.rfc-editor.org/info/rfc6209>.
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347,
January 2012, <https://www.rfc-editor.org/info/rfc6347>.
[RFC6367] Kanno, S. and M. Kanda, "Addition of the Camellia Cipher
Suites to Transport Layer Security (TLS)", RFC 6367,
DOI 10.17487/RFC6367, September 2011,
<https://www.rfc-editor.org/info/rfc6367>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8422] Nir, Y., Josefsson, S., and M. Pegourie-Gonnard, "Elliptic
Curve Cryptography (ECC) Cipher Suites for Transport Layer
Security (TLS) Versions 1.2 and Earlier", RFC 8422,
DOI 10.17487/RFC8422, August 2018,
<https://www.rfc-editor.org/info/rfc8422>.
7.2. Informative References
[Raccoon] Merget, R., Brinkmann, M., Aviram, N., Somorovsky, J.,
Mittmann, J., and J. Schwenk, "Raccoon Attack: Finding and
Exploiting Most-Significant-Bit-Oracles in TLS-DH(E)", 1
August 2012,
<https://raccoon-attack.com/RacoonAttack.pdf>.
[RFC4492] Blake-Wilson, S., Bolyard, N., Gupta, V., Hawk, C., and B.
Moeller, "Elliptic Curve Cryptography (ECC) Cipher Suites
for Transport Layer Security (TLS)", RFC 4492,
DOI 10.17487/RFC4492, May 2006,
<https://www.rfc-editor.org/info/rfc4492>.
Authors' Addresses
Carrick Bartle
Apple, Inc.
Email: cbartle@apple.com
Nimrod Aviram
Email: nimrod.aviram@gmail.com
Filippo Valsorda
Email: ietf@filippo.io