Deprecate TLS 1.2 kex: Deprecating Obsolete Key Exchange Methods in TLS 1.2 and DTLS 1.2
TLS 1.2 and DTLS 1.2 must stop using RSA key exchange and finite-field Diffie-Hellman, and should avoid static ECDH.
Aviram, N., "Deprecating Obsolete Key Exchange Methods in TLS 1.2 and DTLS 1.2", RFC 10015, DOI 10.17487/RFC10015, July 2026, <https://www.rfc-editor.org/info/rfc10015>.
@misc{rfc10015,
series = {Request for Comments},
number = 10015,
howpublished = {RFC 10015},
publisher = {RFC Editor},
doi = {10.17487/RFC10015},
url = {https://www.rfc-editor.org/info/rfc10015},
author = {N. Aviram},
title = {{Deprecating Obsolete Key Exchange Methods in TLS 1.2 and DTLS 1.2}},
pagetotal = 21,
year = 2026,
month = jul,
} RFC text
Contents
Internet Engineering Task Force (IETF) N. Aviram
Request for Comments: 10015 July 2026
Updates: 4162, 4279, 4346, 4785, 5246, 5288,
5289, 5469, 5487, 5932, 6209, 6347,
6367, 6655, 7905, 8422, 9325
Category: Standards Track
ISSN: 2070-1721
Deprecating Obsolete Key Exchange Methods in TLS 1.2 and DTLS 1.2
Abstract
For (D)TLS 1.2, this document deprecates the use of two key
exchanges, namely Diffie-Hellman (DH) over a finite field and RSA.
It also discourages the use of static Elliptic Curve Diffie-Hellman
(ECDH) cipher suites.
These prescriptions apply only to (D)TLS 1.2, since (D)TLS 1.0 and
TLS 1.1 are deprecated by RFC 8996 and (D)TLS 1.3 either does not use
the affected algorithms or does not share the relevant configuration
options. (There is no DTLS version 1.1.)
This document updates RFCs 4162, 4279, 4346, 4785, 5246, 5288, 5289,
5469, 5487, 5932, 6209, 6347, 6367, 6655, 7905, 8422, and 9325 to
either deprecate or discourage the use of cipher suites using the
above key exchange methods in (D)TLS 1.2 connections.
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc10015.
Copyright Notice
Copyright (c) 2026 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 Revised BSD License text as described in Section 4.e of the
Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents
1. Introduction
1.1. Requirements Language
2. Non-Ephemeral Diffie-Hellman
3. Ephemeral Finite Field Diffie-Hellman
4. RSA
5. Updates to Cipher Suites and TLS ClientCertificateType
Identifiers
5.1. DH Cipher Suites Deprecated by This Document
5.2. ECDH Cipher Suites Whose Use Is Discouraged by This
Document
5.3. DHE Cipher Suites Deprecated by This Document
5.4. RSA Cipher Suites Deprecated by This Document
5.5. TLS ClientCertificateType Identifiers Deprecated by This
Document
6. Updates to RFC 9325
7. IANA Considerations
8. Security Considerations
9. References
9.1. Normative References
9.2. Informative References
Acknowledgments
Author's Address
1. Introduction
(D)TLS 1.2 supports a variety of key exchange algorithms, including
RSA, Diffie-Hellman (DH) over a finite field, and Elliptic Curve
Diffie-Hellman (ECDH).
DH key exchange, over any group, comes 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 (or FFDHE and FFDH), 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. Moreover, as demonstrated by the
Raccoon attack [RACCOON] on finite field DH, 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. For ECDH, invalid curve attacks similarly exploit secret
reuse in order to break security [ICA], further demonstrating the
risk of reusing public keys. While both side channels can be avoided
in implementations, experience shows that in practice,
implementations may fail to thwart such attacks due to the complexity
and number of the required mitigations.
Additionally, RSA key exchange suffers from security problems that
are independent of implementation choices as well as problems that
stem purely from the difficulty of implementing security
countermeasures correctly.
At a rough glance, the problems affecting FFDHE in (D)TLS 1.2 are as
follows:
1. FFDHE suffers from interoperability problems because there is no
mechanism for negotiating the group, and some implementations
only support small group sizes (see [RFC7919], Section 1).
2. FFDHE groups may have small subgroups, which enables several
attacks [SUBGROUPS]. When presented with a custom, non-
standardized FFDHE group, a handshaking client cannot practically
verify that the group chosen by the server does not suffer from
this problem. There is also no mechanism for such handshakes to
fall back to other key exchange parameters that are acceptable to
the client. Custom FFDHE groups are widespread (as a result of
advice based on [WEAK-DH]). Therefore, clients cannot simply
reject handshakes that present custom, and thus potentially
dangerous, groups.
3. In practice, some operators use 1024-bit FFDHE groups since this
is the maximum size that ensures wide support (see [RFC7919],
Section 1). This size leaves only a small security margin versus
the current discrete log record, which stands at 795 bits
[DLOG795].
4. Expanding on the previous point, just a handful of very large
computations allow an attacker to cheaply decrypt a relatively
large fraction of FFDHE traffic (namely, traffic encrypted using
particular standardized groups) [WEAK-DH].
5. When secrets are not fully ephemeral, FFDHE suffers from the
Raccoon side-channel attack [RACCOON]. (Note that FFDH is
inherently vulnerable to the Raccoon attack unless constant-time
mitigations are employed.)
The problems affecting RSA key exchange in (D)TLS 1.2 are as follows:
1. RSA key exchange offers no forward secrecy, by construction.
2. RSA key exchange may be vulnerable to Bleichenbacher's attack
[BLEI]. Experience shows that variants of this attack arise
every few years because implementing the relevant countermeasure
correctly is difficult (see [ROBOT], [NEW-BLEI], and [DROWN]).
3. In addition to the above point, there is no convenient mechanism
in (D)TLS 1.2 for the domain separation of keys. Therefore, a
single endpoint that is vulnerable to Bleichenbacher's attack
would affect all endpoints sharing the same RSA key (see [XPROT]
and [DROWN]).
This document updates [RFC4162], [RFC4279], [RFC4346], [RFC4785],
[RFC5246], [RFC5288], [RFC5289], [RFC5469], [RFC5487], [RFC5932],
[RFC6209], [RFC6347], [RFC6367], [RFC6655], [RFC7905], [RFC8422], and
[RFC9325] to remediate the above problems, by deprecating and
discouraging the use of affected cipher suites, as listed in Sections
5.2, 5.3, 5.4, and 5.5.
BCP 195 [RFC8996] [RFC9325] contains the latest IETF recommendations
for users of the (D)TLS protocol (and specifically, (D)TLS 1.2), and
this document updates [RFC9325] in several points. Section 6 details
the exact differences. All other recommendations in the BCP
documents remain valid.
1.1. Requirements Language
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 and servers MUST NOT select non-ephemeral FFDH
cipher suites in (D)TLS 1.2 connections. (Note that (D)TLS 1.0 and
TLS 1.1 are deprecated by [RFC8996], and (D)TLS 1.3 does not support
FFDH [RFC9846] [RFC9147].) This includes all cipher suites listed in
Table 1 in Section 5.1.
Clients SHOULD NOT offer and servers SHOULD NOT select non-ephemeral
ECDH cipher suites in (D)TLS 1.2 connections. (This requirement is
already present in [RFC9325]. Note that (D)TLS 1.0 and TLS 1.1 are
deprecated by [RFC8996], and (D)TLS 1.3 does not support ECDH
[RFC9846] [RFC9147].) This includes all cipher suites listed in
Table 2 in Section 5.2.
In addition, to avoid the use of non-ephemeral DH, clients SHOULD NOT
use and servers SHOULD NOT accept certificates with fixed DH
parameters. These certificate types are rsa_fixed_dh, dss_fixed_dh,
rsa_fixed_ecdh, and ecdsa_fixed_ecdh as listed in Section 5.5. These
values only apply to (D)TLS versions of 1.2 and below.
3. Ephemeral Finite Field Diffie-Hellman
Clients MUST NOT offer and servers MUST NOT select FFDHE cipher
suites in (D)TLS 1.2 connections. This includes all cipher suites
listed in Table 3 in Section 5.3. (Note that (D)TLS 1.0 and TLS 1.1
are deprecated by [RFC8996].) FFDHE cipher suites in (D)TLS 1.3 do
not suffer from the problems presented in Section 1; see [RFC9846]
and [RFC9147]. Therefore, clients and servers MAY offer FFDHE cipher
suites in (D)TLS 1.3 connections.
4. RSA
Clients MUST NOT offer and servers MUST NOT select RSA cipher suites
in (D)TLS 1.2 connections. (Note that (D)TLS 1.0 and TLS 1.1 are
deprecated by [RFC8996], and (D)TLS 1.3 does not support static RSA
[RFC9846] [RFC9147].) This includes all cipher suites listed in
Table 4 in Section 5.4. Note that these cipher suites were
previously marked as not recommended in the "TLS Cipher Suites"
registry [TLS-REGISTRY].
5. Updates to Cipher Suites and TLS ClientCertificateType Identifiers
The following subsections mention the use of "D" in the "Recommended"
column of the "TLS Cipher Suites" and "TLS ClientCertificateType
Identifiers" registries [TLS-REGISTRY]. See [RFC9847] for
information on the use of the "D".
5.1. DH Cipher Suites Deprecated by This Document
IANA has set the "Recommended" column to "D" and added this document
as a reference for the following entries in the "TLS Cipher Suites"
registry [TLS-REGISTRY]:
+==========================================+=====================+
| Cipher Suite | Reference |
+==========================================+=====================+
| TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
+------------------------------------------+---------------------+
| TLS_DH_DSS_WITH_DES_CBC_SHA | [RFC8996] |
+------------------------------------------+---------------------+
| 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 | [RFC8996] |
+------------------------------------------+---------------------+
| 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 | [RFC8996] |
+------------------------------------------+---------------------+
| 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
5.2. ECDH Cipher Suites Whose Use Is Discouraged by This Document
[RFC9325] specifies that implementations SHOULD NOT negotiate the
following cipher suites; accordingly, they appeared with "N" in the
"Recommended" column in the IANA "TLS Cipher Suites" registry
[TLS-REGISTRY]. Per this document, IANA has updated them to have "D"
in the "Recommended" column to align with [RFC9847] (and added this
document as a reference for each). This document also records the
rationale for discouraging use of these cipher suites, and it cites
prior analyses and attacks that demonstrate the associated risks (see
Section 8).
+=============================================+=====================+
| Cipher Suite | 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
5.3. DHE Cipher Suites Deprecated by This Document
IANA has set the "Recommended" column to "D" and added this document
as a reference for the following entries in the "TLS Cipher Suites"
registry [TLS-REGISTRY]:
+===========================================+=====================+
| Cipher Suite | Reference |
+===========================================+=====================+
| TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_DES_CBC_SHA | [RFC8996] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_DES_CBC_SHA | [RFC8996] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_NULL_SHA | [RFC4785] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_AES_128_CBC_SHA | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_AES_256_CBC_SHA | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA | [RFC5932] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA | [RFC5932] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA | [RFC5932] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA | [RFC5932] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_RC4_128_SHA | [RFC4279] [RFC6347] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA | [RFC4279] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_AES_128_CBC_SHA | [RFC4279] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_AES_256_CBC_SHA | [RFC4279] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_SEED_CBC_SHA | [RFC4162] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_SEED_CBC_SHA | [RFC4162] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | [RFC5288] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | [RFC5288] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 | [RFC5288] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 | [RFC5288] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 | [RFC5487] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 | [RFC5487] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 | [RFC5487] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 | [RFC5487] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_NULL_SHA256 | [RFC5487] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_NULL_SHA384 | [RFC5487] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 | [RFC5932] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 | [RFC5932] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 | [RFC5932] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 | [RFC5932] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_AES_128_CCM | [RFC6655] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_AES_256_CCM | [RFC6655] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_AES_128_CCM_8 | [RFC6655] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_AES_256_CCM_8 | [RFC6655] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_AES_128_CCM | [RFC6655] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_AES_256_CCM | [RFC6655] |
+-------------------------------------------+---------------------+
| TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 | [RFC7905] |
+-------------------------------------------+---------------------+
| TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 | [RFC7905] |
+-------------------------------------------+---------------------+
| TLS_PSK_DHE_WITH_AES_128_CCM_8 | [RFC6655] |
+-------------------------------------------+---------------------+
| TLS_PSK_DHE_WITH_AES_256_CCM_8 | [RFC6655] |
+-------------------------------------------+---------------------+
Table 3
5.4. RSA Cipher Suites Deprecated by This Document
IANA has set the "Recommended" column to "D" and added this document
as a reference for the following entries in the "TLS Cipher Suites"
registry [TLS-REGISTRY]:
+===========================================+=====================+
| Cipher Suite | Reference |
+===========================================+=====================+
| TLS_RSA_WITH_NULL_MD5 | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_NULL_SHA | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_RSA_EXPORT_WITH_RC4_40_MD5 | [RFC4346] [RFC6347] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_RC4_128_MD5 | [RFC5246] [RFC6347] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_RC4_128_SHA | [RFC5246] [RFC6347] |
+-------------------------------------------+---------------------+
| TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 | [RFC4346] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_IDEA_CBC_SHA | [RFC8996] |
+-------------------------------------------+---------------------+
| TLS_RSA_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_DES_CBC_SHA | [RFC8996] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_3DES_EDE_CBC_SHA | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_NULL_SHA | [RFC4785] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_AES_128_CBC_SHA | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_AES_256_CBC_SHA | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_NULL_SHA256 | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_AES_128_CBC_SHA256 | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_AES_256_CBC_SHA256 | [RFC5246] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA | [RFC5932] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA | [RFC5932] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_RC4_128_SHA | [RFC4279] [RFC6347] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA | [RFC4279] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_AES_128_CBC_SHA | [RFC4279] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_AES_256_CBC_SHA | [RFC4279] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_SEED_CBC_SHA | [RFC4162] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_AES_128_GCM_SHA256 | [RFC5288] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_AES_256_GCM_SHA384 | [RFC5288] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 | [RFC5487] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 | [RFC5487] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 | [RFC5487] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 | [RFC5487] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_NULL_SHA256 | [RFC5487] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_NULL_SHA384 | [RFC5487] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 | [RFC5932] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 | [RFC5932] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 | [RFC6367] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_AES_128_CCM | [RFC6655] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_AES_256_CCM | [RFC6655] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_AES_128_CCM_8 | [RFC6655] |
+-------------------------------------------+---------------------+
| TLS_RSA_WITH_AES_256_CCM_8 | [RFC6655] |
+-------------------------------------------+---------------------+
| TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 | [RFC7905] |
+-------------------------------------------+---------------------+
Table 4
5.5. TLS ClientCertificateType Identifiers Deprecated by This Document
IANA has set the "Recommended" column to "D" and added this document
as a reference for the following entries in the "TLS
ClientCertificateType Identifiers" registry [TLS-REGISTRY]:
+=======================+=====================+
| Certificate Type | Reference |
+=======================+=====================+
| rsa_fixed_dh (3) | [RFC5246] [RFC9847] |
+-----------------------+---------------------+
| dss_fixed_dh (4) | [RFC5246] [RFC9847] |
+-----------------------+---------------------+
| rsa_fixed_ecdh (65) | [RFC8422] [RFC9847] |
+-----------------------+---------------------+
| ecdsa_fixed_ecdh (66) | [RFC8422] [RFC9847] |
+-----------------------+---------------------+
Table 5
6. Updates to RFC 9325
This document updates [RFC9325] with respect to the use of (D)TLS
1.2, and Table 6 lists the exact changes. All of these changes are
made in Section 4.1 of [RFC9325].
+============================+=============+============+
| | RFC 9325 | RFC 10015 |
+============================+=============+============+
| Non-ephemeral FFDH | SHOULD NOT | MUST NOT |
+----------------------------+-------------+------------+
| Non-ephemeral ECDH | SHOULD NOT | No change |
+----------------------------+-------------+------------+
| Fixed DH certificate types | Unspecified | SHOULD NOT |
+----------------------------+-------------+------------+
| Ephemeral FFDH | SHOULD NOT | MUST NOT |
+----------------------------+-------------+------------+
| Static RSA | SHOULD NOT | MUST NOT |
+----------------------------+-------------+------------+
Table 6
7. IANA Considerations
The "TLS Cipher Suites" and "TLS ClientCertificateType Identifiers"
registries both appear within the "Transport Layer Security (TLS)
Parameters" registry group [TLS-REGISTRY]. IANA has updated entries
in the "TLS Cipher Suites" registry [TLS-REGISTRY] as indicated in
Sections 5.1, 5.2, 5.3, and 5.4. IANA has also updated entries in
the "TLS ClientCertificateType Identifiers" registry as indicated in
Section 5.5.
For each entry listed in Sections 5.1, 5.2, 5.3, 5.4, and 5.5, IANA
has set the "Recommended" column to "D" and updated the entry's
Reference column to refer to this document. For information about
the use of "D" in the "Recommended" column, see [RFC9847].
8. 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 [RACCOON]. Both are already considered bad
practice since they do not provide forward secrecy. However, the
Raccoon attack revealed that timing side channels in processing TLS
premaster secrets may be exploited to reveal the encrypted premaster
secret.
As for non-ephemeral ECDH cipher suites (TLS_ECDH_*), forgoing
forward secrecy not only allows retroactive decryption in the event
of key compromise but may also enable a broad category of attacks
where the attacker exploits key reuse to repeatedly query a
cryptographic secret.
This category includes, but is not necessarily limited to, the
following examples:
1. Invalid curve attacks, where the attacker exploits key reuse to
repeatedly query and eventually learn the key itself. These
attacks have been shown to be practical against real-world TLS
implementations [ICA].
2. Side-channel attacks, where the attacker exploits key reuse and
an additional side channel to learn a cryptographic secret. For
an example of such an attack, refer to [MAY4].
3. Fault attacks, where the attacker exploits key reuse and
incorrect calculations to learn a cryptographic secret. For an
example of such an attack, see [PARIS256].
Such attacks are often implementation-dependent, including the above
examples. However, these examples demonstrate that building a system
that reuses keys and avoids this category of attacks is difficult in
practice. In contrast, avoiding key reuse not only prevents
decryption in the event of key compromise, but it also precludes this
category of attacks altogether. Therefore, this document discourages
the reuse of ECDH public keys.
As for ephemeral finite field DH in (D)TLS 1.2 (TLS_DHE_* and
TLS_PSK_DHE_*), as explained above, clients have no practical way to
support these cipher suites while ensuring they only negotiate
security parameters that are acceptable to them. In (D)TLS 1.2, the
server chooses the DH group, and custom groups are prevalent.
Therefore, once the client includes these cipher suites in its
handshake and the server presents a custom group, the client cannot
complete the handshake while ensuring security. Verifying the group
structure is prohibitively expensive for the client. Using a
safelist of known-good groups is also impractical, since server
operators were encouraged to generate their own custom group.
Further, there is no mechanism for the handshake to fall back to
other parameters that are acceptable to both the client and server.
9. References
9.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, September 2005,
<https://www.rfc-editor.org/info/rfc4162>.
[RFC4279] Eronen, P., Ed. and H. Tschofenig, Ed., "Pre-Shared Key
Ciphersuites for Transport Layer Security (TLS)",
RFC 4279, DOI 10.17487/RFC4279, December 2005,
<https://www.rfc-editor.org/info/rfc4279>.
[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>.
[RFC4785] Blumenthal, U. and P. Goel, "Pre-Shared Key (PSK)
Ciphersuites with NULL Encryption for Transport Layer
Security (TLS)", RFC 4785, DOI 10.17487/RFC4785, January
2007, <https://www.rfc-editor.org/info/rfc4785>.
[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>.
[RFC5487] Badra, M., "Pre-Shared Key Cipher Suites for TLS with SHA-
256/384 and AES Galois Counter Mode", RFC 5487,
DOI 10.17487/RFC5487, March 2009,
<https://www.rfc-editor.org/info/rfc5487>.
[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>.
[RFC6655] McGrew, D. and D. Bailey, "AES-CCM Cipher Suites for
Transport Layer Security (TLS)", RFC 6655,
DOI 10.17487/RFC6655, July 2012,
<https://www.rfc-editor.org/info/rfc6655>.
[RFC7905] Langley, A., Chang, W., Mavrogiannopoulos, N.,
Strombergson, J., and S. Josefsson, "ChaCha20-Poly1305
Cipher Suites for Transport Layer Security (TLS)",
RFC 7905, DOI 10.17487/RFC7905, June 2016,
<https://www.rfc-editor.org/info/rfc7905>.
[RFC7919] Gillmor, D., "Negotiated Finite Field Diffie-Hellman
Ephemeral Parameters for Transport Layer Security (TLS)",
RFC 7919, DOI 10.17487/RFC7919, August 2016,
<https://www.rfc-editor.org/info/rfc7919>.
[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>.
[RFC8996] Moriarty, K. and S. Farrell, "Deprecating TLS 1.0 and TLS
1.1", BCP 195, RFC 8996, DOI 10.17487/RFC8996, March 2021,
<https://www.rfc-editor.org/info/rfc8996>.
[RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The
Datagram Transport Layer Security (DTLS) Protocol Version
1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022,
<https://www.rfc-editor.org/info/rfc9147>.
[RFC9325] Sheffer, Y., Saint-Andre, P., and T. Fossati,
"Recommendations for Secure Use of Transport Layer
Security (TLS) and Datagram Transport Layer Security
(DTLS)", BCP 195, RFC 9325, DOI 10.17487/RFC9325, November
2022, <https://www.rfc-editor.org/info/rfc9325>.
[RFC9846] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 9846, DOI 10.17487/RFC9846, July 2026,
<https://www.rfc-editor.org/info/rfc9846>.
[RFC9847] Salowey, J. and S. Turner, "IANA Registry Updates for TLS
and DTLS", RFC 9847, DOI 10.17487/RFC9847, December 2025,
<https://www.rfc-editor.org/info/rfc9847>.
9.2. Informative References
[BLEI] Bleichenbacher, D., "Chosen Ciphertext Attacks against
Protocols Based on the RSA Encryption Standard PKCS #1",
Advances in Cryptology -- CRYPTO'98, Lecture Notes in
Computer Science, vol. 1462, pp. 1-12,
DOI 10.1007/BFb0055716, 1998,
<https://doi.org/10.1007/BFb0055716>.
[DLOG795] Boudot, F., Gaudry, P., Guillevic, A., Heninger, N.,
Thomé, E., and P. Zimmermann, "Comparing the difficulty of
factorization and discrete logarithm: a 240-digit
experiment", Cryptology ePrint Archive, Paper 2020/697,
DOI 10.1007/978-3-030-56880-1_3, 17 August 2020,
<https://eprint.iacr.org/2020/697>.
[DROWN] Aviram, N., Schinzel, S., Somorovsky, J., Heninger, N.,
Dankel, M., Steube, J., Valenta, L., Adrian, D.,
Halderman, J. A., Dukhovni, V., Käsper, E., Cohney, S.,
Engels, S., Paar, C., and Y. Shavitt, "DROWN: Breaking TLS
using SSLv2", Proceedings of the 25th USENIX Security
Symposium, August 2016,
<https://drownattack.com/drown-attack-paper.pdf>.
[ICA] Jager, T., Schwenk, J., and J. Somorovsky, "Practical
invalid curve attacks on TLS-ECDH", ESORICS 2015, Part I,
Lecture Notes in Computer Science, vol. 9326, pp. 407-425,
DOI 10.1007/978-3-319-24174-6_21, 21 September 2015,
<https://link.springer.com/content/
pdf/10.1007/978-3-319-24174-6_21.pdf>.
[MAY4] Genkin, D., Valenta, L., and Y. Yarom, "May the Fourth Be
With You: A Microarchitectural Side Channel Attack on
Several Real-World Applications of Curve25519",
Proceedings of the 2017 ACM SIGSAC Conference on Computer
and Communications Security, DOI 10.1145/3133956.3134029,
30 October 2017,
<https://dl.acm.org/doi/pdf/10.1145/3133956.3134029>.
[NEW-BLEI] Meyer, C., Somorovsky, J., Weiss, E., Schwenk, J.,
Schinzel, S., and E. Tews, "Revisiting SSL/TLS
Implementations: New Bleichenbacher Side Channels and
Attacks", Proceedings of the 23rd USENIX Security
Symposium, August 2014,
<https://www.usenix.org/system/files/conference/
usenixsecurity14/sec14-paper-meyer.pdf>.
[PARIS256] Devlin, S. and F. Valsorda, "The PARIS256 Attack", 8
August 2018, <https://i.blackhat.com/us-18/Wed-August-8/
us-18-Valsorda-Squeezing-A-Key-Through-A-Carry-Bit-
wp.pdf>.
[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)", 9
September 2020,
<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>.
[ROBOT] Boeck, H., Somorovsky, J., and C. Young, "Return Of
Bleichenbacher's Oracle Threat (ROBOT)", Proceedings of
the 27th USENIX Security Symposium, August 2018,
<https://www.usenix.org/system/files/conference/
usenixsecurity18/sec18-bock.pdf>.
[SUBGROUPS]
Valenta, L., Adrian, D., Sanso, A., Cohney, S., Fried, J.,
Hastings, M., Halderman, J. A., and N. Heninger,
"Measuring small subgroup attacks against Diffie-Hellman",
Cryptology ePrint Archive, Paper 2016/995, 17 October
2016, <https://eprint.iacr.org/2016/995/20161017:193515>.
[TLS-REGISTRY]
IANA, "Transport Layer Security (TLS) Parameters",
<https://www.iana.org/assignments/tls-parameters>.
[WEAK-DH] Adrian, D., Bhargavan, K., Durumeric, Z., Gaudry, P.,
Green, M., Halderman, J. A., Heninger, N., Springall, D.,
Thomé, E., Valenta, L., VanderSloot, B., Wustrow, E.,
Zanella-Béguelin, S., and P. Zimmermann, "Weak Diffie-
Hellman and the Logjam Attack", October 2015,
<https://weakdh.org/>.
[XPROT] Jager, T., Schwenk, J., and J. Somorovsky, "On the
Security of TLS 1.3 and QUIC Against Weaknesses in PKCS#1
v1.5 Encryption", Proceedings of the 22nd ACM SIGSAC
Conference on Computer and Communications Security, pp.
1185-1196, DOI 10.1145/2810103.2813657, October 2015,
<https://doi.org/10.1145/2810103.2813657>.
Acknowledgments
This document includes many important contributions from Carrie
Bartle, who wrote much of the prose and presented it several times at
the IETF TLS WG.
The document was inspired by discussions on the TLS WG mailing list
and a suggestion by Filippo Valsorda following the release of the
Raccoon attack [RACCOON]. Thanks to Christopher A. Wood for writing
up the initial draft of this document. Thanks also to Thomas
Fossati, Sean Turner, Joe Salowey, Yaron Sheffer, Christian
Buchgraber, John Preuß Mattsson, and Manuel Pégourié-Gonnard for
their comments and suggestions.
Author's Address
Nimrod Aviram
Email: nimrod.aviram@gmail.com
AI ELI5
On this page
§1Why These Key Exchanges Are Retired
(D)TLS 1.2 supports several key exchange algorithms: RSA, Diffie-Hellman (DH) over a finite field, and Elliptic Curve Diffie-Hellman (ECDH). DH comes in an ephemeral form, where fresh public keys are sent in the handshake and authenticated by the peer's certificate, and a non-ephemeral form, where a static DH public key sits in the certificate. The ephemeral and non-ephemeral finite-field variants are called DHE and DH; for elliptic curves they are ECDHE and ECDH.
The RFC says non-ephemeral suites are generally not recommended because they lack forward secrecy. Reusing a public key, whether through a non-ephemeral suite or by reusing keys with an ephemeral one, also opens timing side channels. The Raccoon attack does this to finite-field DH, and invalid curve attacks exploit secret reuse in ECDH. Both can be avoided in implementations, but the RFC notes that in practice implementations may fail to do so, given the number and complexity of the mitigations.
The scope is limited to (D)TLS 1.2. (D)TLS 1.0 and TLS 1.1 are already deprecated by RFC 8996, and (D)TLS 1.3 either does not use the affected algorithms or does not share the relevant configuration options. There is no DTLS version 1.1.
Some of the ways computers agree on a secret code have cracks that clever attackers keep finding. The people who write the rules decided to stop using the leaky ones in the older version of the secure-web protocol.
§2The Problems With FFDHE and RSA
The RFC lists five problems with finite-field ephemeral DH (FFDHE) in (D)TLS 1.2:
- There is no mechanism for negotiating the group, and some implementations only support small group sizes, which causes interoperability problems.
- FFDHE groups may have small subgroups, which enables several attacks. A client cannot practically verify a custom group chosen by the server, and cannot fall back to other parameters. Custom groups are widespread, so clients cannot simply reject them.
- Some operators use 1024-bit groups for wide support. That leaves a small margin against the current discrete log record of 795 bits.
- A handful of very large computations let an attacker cheaply decrypt a large fraction of traffic that uses particular standardized groups.
- When secrets are not fully ephemeral, FFDHE suffers from the Raccoon side-channel attack. FFDH is inherently vulnerable unless constant-time mitigations are used.
RSA key exchange has three problems of its own. It offers no forward secrecy, by construction. It may be vulnerable to Bleichenbacher's attack, and variants of that attack keep appearing every few years because the countermeasure is hard to implement correctly. And (D)TLS 1.2 has no convenient domain separation for keys, so one vulnerable endpoint can affect every endpoint that shares the same RSA key.
Some locks are too small, some are made by the same factory so one picked lock opens many doors, and some leave old messages readable if the key is ever stolen. Those are the problems the rule-writers are fixing.
§3What Is Prohibited and What Is Discouraged
The normative rules are short, and each applies only to (D)TLS 1.2 connections:
- Non-ephemeral finite-field DH: clients MUST NOT offer and servers MUST NOT select these cipher suites.
- Ephemeral finite-field DH (FFDHE): clients MUST NOT offer and servers MUST NOT select these cipher suites.
- RSA key exchange: clients MUST NOT offer and servers MUST NOT select RSA cipher suites. The RFC notes these were already marked as not recommended in the IANA registry.
- Non-ephemeral ECDH: clients SHOULD NOT offer and servers SHOULD NOT select these. This requirement was already present in RFC 9325.
- Fixed DH certificates: clients SHOULD NOT use and servers SHOULD NOT accept certificates with fixed DH parameters.
FFDHE cipher suites in (D)TLS 1.3 do not suffer from the problems above, so clients and servers MAY offer them there.
For three of the risky locks the rule is a firm no. For the ECDH locks and the fixed-key certificates, the rule is a strong please do not.
§4Registry Changes and Updated RFCs
IANA has set the Recommended column to D (deprecated, as explained in RFC 9847) and added this document as a reference for the affected entries. The RFC groups them in tables:
- Table 1: non-ephemeral DH cipher suites (names starting
TLS_DH_), deprecated. - Table 2: non-ephemeral ECDH cipher suites, whose use is discouraged. They were previously marked
Nvia RFC 9325 and now getD. - Table 3: ephemeral finite-field DH suites (
TLS_DHE_*andTLS_PSK_DHE_*), deprecated. - Table 4: RSA cipher suites, deprecated.
- Table 5: four TLS ClientCertificateType identifiers, deprecated.
The document updates RFCs 4162, 4279, 4346, 4785, 5246, 5288, 5289, 5469, 5487, 5932, 6209, 6347, 6367, 6655, 7905, 8422 and 9325 to deprecate or discourage cipher suites that use these key exchanges in (D)TLS 1.2.
There is a big public list of every lock type. The rule-writers went through it and stamped a warning label on each risky one.
§5Changes to RFC 9325
BCP 195 (RFC 8996 and RFC 9325) holds the current IETF recommendations for users of (D)TLS. This document changes several points in Section 4.1 of RFC 9325 and says every other recommendation in those documents remains valid. The changes are summarised in a table in the RFC.
Non-ephemeral FFDH, ephemeral FFDH and static RSA move from SHOULD NOT to MUST NOT. Non-ephemeral ECDH is unchanged at SHOULD NOT. Fixed DH certificate types, which RFC 9325 left unspecified, become SHOULD NOT.
An earlier rulebook said please avoid for several of these locks. This note upgrades three of them to a firm no and adds a warning for the fixed-key certificates.
| Key exchange | RFC 9325 | RFC 10015 |
|---|---|---|
| Non-ephemeral FFDH THIS RFC | SHOULD NOT | MUST NOT |
| Non-ephemeral ECDH | SHOULD NOT | No change |
| Fixed DH certificate types THIS RFC | Unspecified | SHOULD NOT |
| Ephemeral FFDH THIS RFC | SHOULD NOT | MUST NOT |
| Static RSA THIS RFC | SHOULD NOT | MUST NOT |
§6Certificate Types Affected
To avoid non-ephemeral DH altogether, the RFC also targets the certificate types that carry a fixed DH key. These are rsa_fixed_dh (3), dss_fixed_dh (4), rsa_fixed_ecdh (65) and ecdsa_fixed_ecdh (66) in the TLS ClientCertificateType registry. Clients SHOULD NOT use and servers SHOULD NOT accept them, and IANA marked them D.
The RFC points out that these values only apply to (D)TLS versions 1.2 and below.
Some ID cards come with the secret key built in. Because that key never changes, the rule says to stop using those cards.
- 3rsa_fixed_dh — Fixed DH parameters; SHOULD NOT be used or accepted.
- 4dss_fixed_dh — Fixed DH parameters; SHOULD NOT be used or accepted.
- 65rsa_fixed_ecdh — Fixed ECDH parameters; SHOULD NOT be used or accepted.
- 66ecdsa_fixed_ecdh — Fixed ECDH parameters; SHOULD NOT be used or accepted.
§7Security Considerations
Non-ephemeral finite-field DH suites and ephemeral key reuse for finite-field DH are prohibited because of the Raccoon attack, which showed that timing side channels in processing TLS premaster secrets may reveal the encrypted premaster secret. Both are already considered bad practice without forward secrecy.
For non-ephemeral ECDH, giving up forward secrecy allows retroactive decryption after a key compromise. It may also enable attacks that exploit key reuse to repeatedly query a secret: invalid curve attacks, side-channel attacks and fault attacks. Such attacks are often implementation-dependent, but the RFC argues that building a system that reuses keys and avoids all of them is difficult in practice, while avoiding key reuse precludes the whole category.
For ephemeral finite-field DH in (D)TLS 1.2, the server chooses the group and custom groups are prevalent. Verifying a group's structure is prohibitively expensive for the client, a safelist of known-good groups is impractical, and the handshake cannot fall back to other parameters. A client that offers these suites therefore cannot complete a handshake with a custom group while ensuring security.
Reusing the same key is like using one house key for years: if someone copies it, everything is exposed. A fresh key each time avoids that, and checking an unknown lock design is too hard for a visitor to do on the spot.