RFC 10015 弃用 (D 中已过时的密钥交换 2026 年 7 月
Aviram 标准跟踪 [页码]
系列:
互联网工程任务组 (IETF)
RFC:
10015
更新:
4162, 4279, 4346, 4785, 5246, 5288, 5289, 5469, 5487, 5932, 6209, 6347, 6367, 6655, 7905, 8422, 9325
类别:
标准跟踪
发布:
ISSN:
2070-1721
作者:
N. Aviram

RFC 10015

弃用 TLS 1.2 和 DTLS 1.2 中已过时的密钥交换方法

摘要

对于 (D)TLS 1.2,本文档弃用两种密钥交换方法,即 有限域上的 Diffie-Hellman (DH) 和 RSA。本文档还不建议使用静态椭圆曲线 Diffie-Hellman (ECDH) 密码套件。

这些规定仅适用于 (D)TLS 1.2,因为 (D)TLS 1.0 和 TLS 1.1 已被 RFC 8996 弃用,而 (D)TLS 1.3 要么不使用受影响的 算法,要么不共用相关的配置选项。 (不存在 DTLS 1.1 版本。)

本文档更新了 RFC 4162、4279、4346、4785、5246、5288、5289、5469、 5487、5932、6209、6347、6367、6655、7905、8422 和 9325,以弃用或 不建议在 (D)TLS 1.2 连接中使用采用上述密钥交换 方法的密码套件。

本备忘录的状态

本文档是一份互联网标准跟踪文档。

本文档是互联网工程任务组 (IETF) 的产品。它代表了 IETF 社区的共识。本文档已经 过公开审查,并已获得互联网工程指导组 (IESG) 批准发布。有关 互联网标准的更多信息,请参阅 RFC 7841 第 2 节。

有关本文档的当前状态、任何 勘误以及如何提供反馈的信息,可从 https://www.rfc-editor.org/info/rfc10015 获取。

目录

1. 引言

(D)TLS 1.2 支持多种密钥交换算法,包括 RSA、有限域上的 Diffie-Hellman (DH) 和椭圆曲线 Diffie-Hellman (ECDH)。

任何群上的 DH 密钥交换都分为临时和非临时 两类。非临时 DH 算法使用包含在 执行身份验证的对等方证书中的静态 DH 公钥;相关讨论请参阅 [RFC4492]。相比之下, 临时 DH 算法使用在握手中发送并由对等方证书 认证的临时 DH 公钥。临时和非临时有限域 DH 算法分别称为 DHE 和 DH(或 FFDHE 和 FFDH), 临时和非临时椭圆曲线 DH 算法则 分别称为 ECDHE 和 ECDH [RFC4492]

一般而言,不建议使用非临时密码套件,因为它们缺乏 前向保密性。此外,正如针对有限域 DH 的 Raccoon 攻击 [RACCOON] 所证明的那样,公钥复用(无论是通过 非临时密码套件,还是在临时密码套件中复用密钥) 都可能导致计时侧信道,从而泄露连接 机密。对于 ECDH,无效曲线攻击同样会利用机密 复用来破坏安全性 [ICA],进一步 证明了复用公钥的风险。虽然这两种侧信道都可以在实现中避免, 但经验表明,在实践中,由于所需缓解措施的 复杂性和数量,实现可能无法抵御此类攻击。

此外,RSA 密钥交换既存在与实现选择无关的安全问题, 也存在完全源于难以正确实现安全 对策的问题。

粗略来看,影响 (D)TLS 1.2 中 FFDHE 的问题如下:

  1. FFDHE 存在互操作性问题,因为没有用于 协商群的机制,而且一些实现仅支持较小的群 (请参阅 [RFC7919] 的第 1 节)。

  2. FFDHE 群可能包含小子群,从而使多种攻击成为可能 [SUBGROUPS]。当遇到 自定义的、非标准化的 FFDHE 群时,正在握手的客户端无法切实验证 服务器所选择的群是否存在此问题。此类握手也没有 回退到客户端可接受的其他密钥交换参数的机制。 自定义 FFDHE 群被广泛使用(这是基于 [WEAK-DH] 的建议所产生的结果)。 因此,客户端不能直接拒绝提供自定义群、因而可能 具有危险性的握手。

  3. 在实践中,一些运营者使用 1024 位 FFDHE 群,因为这是 能够确保广泛支持的最大尺寸(请参阅 [RFC7919] 的第 1 节)。 相较于目前 795 位的离散对数纪录, 该尺寸只留下很小的安全余量 [DLOG795]

  4. 在上一点的基础上,只需少数几次规模很大的计算, 攻击者便能以较低成本解密相当大比例的 FFDHE 流量 (即使用特定标准化群加密的流量)[WEAK-DH]

  5. 当机密并非完全临时时,FFDHE 会受到 Raccoon 侧信道攻击 [RACCOON]。(请注意, 除非采用恒定时间缓解措施,否则 FFDH 从根本上容易受到 Raccoon 攻击。)

影响 (D)TLS 1.2 中 RSA 密钥交换的问题如下:

  1. 从构造上看,RSA 密钥交换不提供前向保密性。

  2. RSA 密钥交换可能容易受到 Bleichenbacher 攻击 [BLEI]。 经验表明,由于难以正确实现相关对策, 此攻击的变体每隔几年便会出现一次(请参阅 [ROBOT][NEW-BLEI][DROWN])。

  3. 除上述问题外,(D)TLS 1.2 中没有便于进行 密钥域分离的机制。因此,只要有一个端点容易受到 Bleichenbacher 攻击,所有共享同一 RSA 密钥的端点都会受到影响(请参阅 [XPROT][DROWN])。

本文档更新了 [RFC4162][RFC4279][RFC4346][RFC4785][RFC5246][RFC5288][RFC5289][RFC5469][RFC5487][RFC5932][RFC6209][RFC6347][RFC6367][RFC6655][RFC7905][RFC8422][RFC9325],通过弃用和 不建议使用受影响的密码套件来修复上述问题,具体列表见第 5.25.35.45.5 节。

BCP 195 [RFC8996] [RFC9325] 包含 IETF 针对 (D)TLS 协议用户 (尤其是 (D)TLS 1.2 用户)的最新建议,本文档 在若干方面更新了 [RFC9325]第 6 节详细说明了具体差异。 BCP 文档中的所有其他建议仍然有效。

1.1. 要求用语

本文档中的关键词“必须”“不得” “要求”“”“不得” “应当”“不应” “建议”“不建议” “可以”和“可选”,仅当它们像此处所示 以全部大写形式出现时,才应 按 BCP 14 [RFC2119] [RFC8174] 中的说明进行解释。

2. 非临时 Diffie-Hellman

客户端不得提供且服务器不得 在 (D)TLS 1.2 连接中选择非临时 FFDH 密码套件。 (请注意,(D)TLS 1.0 和 TLS 1.1 已被 [RFC8996] 弃用,而 (D)TLS 1.3 不支持 FFDH [RFC9846] [RFC9147]。)这包括 第 5.1 节表 1所列的所有密码套件。

客户端不应提供且服务器不应在 (D)TLS 1.2 连接中选择非临时 ECDH 密码套件。 (此要求已包含在 [RFC9325] 中。 请注意,(D)TLS 1.0 和 TLS 1.1 已被 [RFC8996] 弃用,而 (D)TLS 1.3 不支持 ECDH [RFC9846] [RFC9147]。)这包括 第 5.2 节表 2所列的所有密码套件。

此外,为避免使用非临时 DH,客户端不应 使用且服务器不应接受具有固定 DH 参数的证书。这些证书类型为 rsa_fixed_dh、dss_fixed_dh、rsa_fixed_ecdh 和 ecdsa_fixed_ecdh, 如第 5.5 节所列。这些值仅适用于 1.2 及以下版本的 (D)TLS。

3. 临时有限域 Diffie-Hellman

客户端不得提供且服务器不得 在 (D)TLS 1.2 连接中选择 FFDHE 密码套件。 这包括 第 5.3 节表 3所列的所有密码套件。 (请注意,(D)TLS 1.0 和 TLS 1.1 已被 [RFC8996] 弃用。)(D)TLS 1.3 中的 FFDHE 密码套件不存在 第 1 节所述的问题;请参阅 [RFC9846][RFC9147]。因此,客户端和服务器可以在 (D)TLS 1.3 连接中提供 FFDHE 密码套件。

4. RSA

客户端不得提供且服务器不得 在 (D)TLS 1.2 连接中选择 RSA 密码套件。(请注意,(D)TLS 1.0 和 TLS 1.1 已被 [RFC8996] 弃用,而 (D)TLS 1.3 不支持静态 RSA [RFC9846] [RFC9147]。)这包括 第 5.4 节表 4所 列的所有密码套件。请注意,这些密码套件此前在“TLS Cipher Suites”注册表 [TLS-REGISTRY]中被标记为不建议使用。

5. 对密码套件和 TLS ClientCertificateType 标识符的更新

以下各小节提及了在“TLS Cipher Suites”和“TLS ClientCertificateType Identifiers”注册表 [TLS-REGISTRY]的“Recommended”列中使用“D”。有关“D”用法的信息,请参阅 [RFC9847]

5.1. 本文档弃用的 DH 密码套件

IANA 已将“Recommended”列设置为“D”,并将本文档添加为 “TLS Cipher Suites”注册表 [TLS-REGISTRY]中以下条目的参考文献:

表 1
密码套件 参考文献
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]

5.2. 本文档不建议使用的 ECDH 密码套件

[RFC9325] 规定实现 不应协商以下密码套件; 因此,它们在 IANA“TLS Cipher Suites” 注册表 [TLS-REGISTRY]的“Recommended”列中以“N”表示。根据本 文档,IANA 已将其“Recommended”列更新为“D”,以与 [RFC9847] 保持一致(并为每个条目添加了本文档作为 参考文献)。本文档还记录了不建议使用这些 密码套件的理由,并引用了证明相关风险的既有分析和攻击 (请参阅第 8 节)。

表 2
密码套件 参考文献
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]

5.3. 本文档弃用的 DHE 密码套件

IANA 已将“Recommended”列设置为“D”,并将本文档添加为 “TLS Cipher Suites”注册表 [TLS-REGISTRY]中以下条目的参考文献:

表 3
密码套件 参考文献
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]

5.4. 本文档弃用的 RSA 密码套件

IANA 已将“Recommended”列设置为“D”,并将本文档添加为 “TLS Cipher Suites”注册表 [TLS-REGISTRY]中以下条目的参考文献:

表 4
密码套件 参考文献
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]

5.5. 本文档弃用的 TLS ClientCertificateType 标识符

IANA 已将“Recommended”列设置为“D”,并将本文档添加为 “TLS ClientCertificateType Identifiers”注册表 [TLS-REGISTRY]中以下条目的参考文献:

表 5
证书类型 参考文献
rsa_fixed_dh (3) [RFC5246] [RFC9847]
dss_fixed_dh (4) [RFC5246] [RFC9847]
rsa_fixed_ecdh (65) [RFC8422] [RFC9847]
ecdsa_fixed_ecdh (66) [RFC8422] [RFC9847]

6. 对 RFC 9325 的更新

本文档针对 (D)TLS 1.2 的使用更新了 [RFC9325]表 6 列出了具体变更。所有这些变更均针对 [RFC 9325 第 4.1 节]

表 6
RFC 9325 RFC 10015
非临时 FFDH 不应 不得
非临时 ECDH 不应 无变更
固定 DH 证书类型 未规定 不应
临时 FFDH 不应 不得
静态 RSA 不应 不得

7. IANA 注意事项

“TLS Cipher Suites”和“TLS ClientCertificateType Identifiers”注册表均 位于“Transport Layer Security (TLS) Parameters”注册表组 [TLS-REGISTRY]中。IANA 已按照第 5.15.25.35.4 节所述,更新了“TLS Cipher Suites”注册表 [TLS-REGISTRY]中的条目。IANA 还按照第 5.5 节所述,更新了“TLS ClientCertificateType Identifiers”注册表中的条目。

对于第 5.15.25.35.45.5 节列出的每个条目, IANA 已将“Recommended”列设置为“D”,并更新了条目的“Reference”列,使其引用本文档。 有关“Recommended”列中“D”的用法,请参阅 [RFC9847]

8. 安全注意事项

由于 Raccoon 攻击 [RACCOON],禁止使用非临时有限域 DH 密码套件 (TLS_DH_*), 也禁止为有限域 DH 密码套件复用临时密钥。这两种做法 已被视为不良实践,因为它们不提供前向保密性。然而, Raccoon 攻击揭示了处理 TLS 预主机密时的计时侧信道可能被 利用,以泄露加密的预主机密。

对于非临时 ECDH 密码套件 (TLS_ECDH_*),放弃前向保密性 不仅会在密钥泄露时允许追溯解密, 还可能促成一大类攻击:攻击者利用密钥复用 重复查询密码学机密。

此类攻击包括但不一定限于以下 示例:

  1. 无效曲线攻击,其中攻击者利用密钥复用进行重复 查询,并最终获知密钥本身。事实证明,此类攻击 可实际用于现实中的 TLS 实现 [ICA]

  2. 侧信道攻击,其中攻击者利用密钥复用和一个额外的 侧信道来获知密码学机密。此类攻击的示例 请参阅 [MAY4]

  3. 故障攻击,其中攻击者利用密钥复用和错误 计算来获知密码学机密。此类攻击的示例 请参阅 [PARIS256]

此类攻击通常依赖于具体实现,上述示例亦是如此。 然而,这些示例表明,在实践中构建一个复用密钥且 能避开此类攻击的系统非常困难。相比之下,避免 密钥复用不仅可以防止密钥泄露时发生解密, 还可以从根本上排除此类攻击。因此,本文档 不建议复用 ECDH 公钥。

对于 (D)TLS 1.2 中的临时有限域 DH(TLS_DHE_* 和 TLS_PSK_DHE_*),如 上文所述,客户端无法在确保只协商其可接受的安全参数的同时,切实支持这些密码套件。 在 (D)TLS 1.2 中,由服务器选择 DH 群,而自定义群十分常见。因此,一旦客户端在 握手中包含这些密码套件,而服务器提供了自定义群,客户端就无法在确保安全的同时 完成握手。验证群结构对客户端而言代价高得难以承受。使用已知安全群的 安全列表也不切实际,因为服务器运营者过去曾被建议生成 自己的自定义群。此外,握手没有回退到客户端和服务器均可接受的其他 参数的机制。

9. 参考文献

9.1. 规范性参考文献

[RFC2119]
Bradner, S.“用于在 RFC 中指示要求级别的关键词”BCP 14RFC 2119DOI 10.17487/RFC2119<https://www.rfc-editor.org/info/rfc2119>
[RFC4162]
Lee, H.J.Yoon, J.H.J.I. Lee“向传输层安全 (TLS) 添加 SEED 密码套件”RFC 4162DOI 10.17487/RFC4162<https://www.rfc-editor.org/info/rfc4162>
[RFC4279]
Eronen, P.,编H. Tschofenig, 编“传输层 安全 (TLS) 的预共享密钥密码套件”RFC 4279DOI 10.17487/RFC4279<https://www.rfc-editor.org/info/rfc4279>
[RFC4346]
Dierks, T.E. Rescorla“传输层安全 (TLS) 协议 1.1 版”RFC 4346DOI 10.17487/RFC4346<https://www.rfc-editor.org/info/rfc4346>
[RFC4785]
Blumenthal, U.P. Goel“采用 NULL 加密的传输 层安全 (TLS) 预共享密钥 (PSK) 密码套件”RFC 4785DOI 10.17487/RFC4785<https://www.rfc-editor.org/info/rfc4785>
[RFC5246]
Dierks, T.E. Rescorla“传输层安全 (TLS) 协议 1.2 版”RFC 5246DOI 10.17487/RFC5246<https://www.rfc-editor.org/info/rfc5246>
[RFC5288]
Salowey, J.Choudhury, A.D. McGrew“TLS 的 AES Galois Counter Mode (GCM) 密码套件”RFC 5288DOI 10.17487/RFC5288<https://www.rfc-editor.org/info/rfc5288>
[RFC5289]
Rescorla, E.“采用 SHA-256/384 和 AES Galois Counter Mode (GCM) 的 TLS 椭圆曲线密码套件”RFC 5289DOI 10.17487/RFC5289<https://www.rfc-editor.org/info/rfc5289>
[RFC5469]
Eronen, P.,编“传输层安全 (TLS) 的 DES 和 IDEA 密码套件”RFC 5469DOI 10.17487/RFC5469<https://www.rfc-editor.org/info/rfc5469>
[RFC5487]
Badra, M.“采用 SHA-256/384 和 AES Galois Counter Mode 的 TLS 预共享密钥密码套件”RFC 5487DOI 10.17487/RFC5487<https://www.rfc-editor.org/info/rfc5487>
[RFC5932]
Kato, A.Kanda, M.S. Kanno“TLS 的 Camellia 密码套件”RFC 5932DOI 10.17487/RFC5932<https://www.rfc-editor.org/info/rfc5932>
[RFC6209]
Kim, W.Lee, J.Park, J.D. Kwon“向传输层安全 (TLS) 添加 ARIA 密码套件”RFC 6209DOI 10.17487/RFC6209<https://www.rfc-editor.org/info/rfc6209>
[RFC6347]
Rescorla, E.N. Modadugu“数据报传输层安全 1.2 版”RFC 6347DOI 10.17487/RFC6347<https://www.rfc-editor.org/info/rfc6347>
[RFC6367]
Kanno, S.M. Kanda“向传输层安全 (TLS) 添加 Camellia 密码套件”RFC 6367DOI 10.17487/RFC6367<https://www.rfc-editor.org/info/rfc6367>
[RFC6655]
McGrew, D.D. Bailey“传输层安全 (TLS) 的 AES-CCM 密码套件”RFC 6655DOI 10.17487/RFC6655<https://www.rfc-editor.org/info/rfc6655>
[RFC7905]
Langley, A.Chang, W.Mavrogiannopoulos, N.Strombergson, J.S. Josefsson“传输层安全 (TLS) 的 ChaCha20-Poly1305 密码套件”RFC 7905DOI 10.17487/RFC7905<https://www.rfc-editor.org/info/rfc7905>
[RFC7919]
Gillmor, D.“传输层安全 (TLS) 的协商式有限域 Diffie-Hellman 临时参数”RFC 7919DOI 10.17487/RFC7919<https://www.rfc-editor.org/info/rfc7919>
[RFC8174]
Leiba, B.“RFC 2119 关键词中大写与 小写的歧义”BCP 14RFC 8174DOI 10.17487/RFC8174<https://www.rfc-editor.org/info/rfc8174>
[RFC8422]
Nir, Y.Josefsson, S.M. Pegourie-Gonnard“传输层安全 (TLS) 1.2 及更早版本的椭圆曲线 密码学 (ECC) 密码套件”RFC 8422DOI 10.17487/RFC8422<https://www.rfc-editor.org/info/rfc8422>
[RFC8996]
Moriarty, K.S. Farrell“弃用 TLS 1.0 和 TLS 1.1”BCP 195RFC 8996DOI 10.17487/RFC8996<https://www.rfc-editor.org/info/rfc8996>
[RFC9147]
Rescorla, E.Tschofenig, H.N. Modadugu“数据报 传输层安全 (DTLS) 协议 1.3 版”RFC 9147DOI 10.17487/RFC9147<https://www.rfc-editor.org/info/rfc9147>
[RFC9325]
Sheffer, Y.Saint-Andre, P.T. Fossati“安全使用 传输层安全 (TLS) 和数据报传输层安全 (DTLS) 的建议”BCP 195RFC 9325DOI 10.17487/RFC9325<https://www.rfc-editor.org/info/rfc9325>
[RFC9846]
Rescorla, E.“传输层 安全 (TLS) 协议 1.3 版”RFC 9846DOI 10.17487/RFC9846<https://www.rfc-editor.org/info/rfc9846>
[RFC9847]
Salowey, J.S. Turner“TLS 和 DTLS 的 IANA 注册表更新”RFC 9847DOI 10.17487/RFC9847<https://www.rfc-editor.org/info/rfc9847>

9.2. 资料性参考文献

[BLEI]
Bleichenbacher, D.“针对基于 RSA 加密标准 PKCS #1 的协议的选择密文攻击”《密码学进展——CRYPTO'98》,计算机科学讲义, 第 1462 卷,第 1-12 页DOI 10.1007/BFb0055716<https://doi.org/10.1007/BFb0055716>
[DLOG795]
Boudot, F.Gaudry, P.Guillevic, A.Heninger, N.Thomé, E.P. Zimmermann“比较因数分解与离散对数的难度:一次 240 位数实验”密码学 ePrint 档案,论文 2020/697DOI 10.1007/978-3-030-56880-1_3<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.Y. Shavitt“DROWN:使用 SSLv2 破解 TLS”第 25 届 USENIX 安全 研讨会论文集<https://drownattack.com/drown-attack-paper.pdf>
[ICA]
Jager, T.Schwenk, J.J. Somorovsky“针对 TLS-ECDH 的实际无效 曲线攻击”ESORICS 2015,第一部分, 计算机科学讲义,第 9326 卷,第 407-425 页DOI 10.1007/978-3-319-24174-6_21<https://link.springer.com/content/pdf/10.1007/978-3-319-24174-6_21.pdf>
[MAY4]
Genkin, D.Valenta, L.Y. Yarom“愿原力与你同在: 针对 Curve25519 若干实际应用的微体系结构侧信道攻击”2017 年 ACM SIGSAC 计算机与通信安全会议论文集DOI 10.1145/3133956.3134029<https://dl.acm.org/doi/pdf/10.1145/3133956.3134029>
[NEW-BLEI]
Meyer, C.Somorovsky, J.Weiss, E.Schwenk, J.Schinzel, S.E. Tews“重新审视 SSL/TLS 实现:新的 Bleichenbacher 侧信道 与攻击”第 23 届 USENIX 安全 研讨会论文集<https://www.usenix.org/system/files/conference/usenixsecurity14/sec14-paper-meyer.pdf>
[PARIS256]
Devlin, S.F. Valsorda“PARIS256 攻击”<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.J. Schwenk“Raccoon 攻击:发现并利用 TLS-DH(E) 中的最高有效位预言机”<https://raccoon-attack.com/RacoonAttack.pdf>
[RFC4492]
Blake-Wilson, S.Bolyard, N.Gupta, V.Hawk, C.B. Moeller“传输层安全 (TLS) 的椭圆曲线密码学 (ECC) 密码套件”RFC 4492DOI 10.17487/RFC4492<https://www.rfc-editor.org/info/rfc4492>
[ROBOT]
Boeck, H.Somorovsky, J.C. Young“Bleichenbacher 预言机威胁再临 (ROBOT)”第 27 届 USENIX 安全研讨会论文集<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.N. Heninger“测量针对 Diffie-Hellman 的小子群攻击”密码学 ePrint 档案,论文 2016/995<https://eprint.iacr.org/2016/995/20161017:193515>
[TLS-REGISTRY]
IANA“传输层安全 (TLS) 参数”<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.P. Zimmermann“弱 Diffie-Hellman 与 Logjam 攻击”<https://weakdh.org/>
[XPROT]
Jager, T.Schwenk, J.J. Somorovsky“TLS 1.3 和 QUIC 抵御 PKCS#1 v1.5 加密弱点的安全性”第 22 届 ACM SIGSAC 计算机与 通信安全会议论文集,第 1185-1196 页DOI 10.1145/2810103.2813657<https://doi.org/10.1145/2810103.2813657>

致谢

本文档包含 Carrie Bartle 的许多重要贡献,她撰写了大部分正文,并多次 在 IETF TLS 工作组中作了介绍。

本文档的灵感源于 TLS 工作组邮件列表上的讨论,以及 Raccoon 攻击 [RACCOON] 发布后 Filippo Valsorda 提出的一项建议。 感谢 Christopher A. Wood 编写本文档的初始草案。 还要感谢 Thomas FossatiSean TurnerJoe SaloweyYaron ShefferChristian BuchgraberJohn Preuß MattssonManuel Pégourié-Gonnard 提供的意见和建议。

作者地址

Nimrod Aviram