RFC 8734 | ECC Brainpool Curves for TLS 1.3 | February 2020 |
Bruckert, et al. | Informational | [Page] |
椭圆曲线加密 (ECC) Brainpool 曲线是传输层安全 (TLS) 协议版本 1.2 中身份验证和密钥交换的一个选项,但 IETF 已弃用与 TLS 版本 1.3 一起使用,因为它们很少使用。 然而,这些曲线尚未被证明具有明显的加密弱点,并且有人对在 TLS 1.3 中使用其中几条曲线感兴趣。¶
本文档提供了在 TLS 1.3 中使用 ECC Brainpool 曲线所需的协议机制。 此方法未得到 IETF 认可。¶
本文档不是互联网标准跟踪规范;发布仅供参考。¶
这是对 RFC 系列的贡献,独立于任何其他 RFC 流。 RFC 编辑自行决定发布本文档,并且未声明其实施或部署的价值。 RFC 编辑批准发布的文档不是任何级别的互联网标准的候选文档;请参阅 RFC 7841 第 2 节。¶
有关本文档当前状态、任何勘误表以及如何提供反馈的信息,请访问 https://www.rfc-editor.org/info/rfc8734。¶
版权所有 (c) 2020 IETF Trust 和文档作者。 保留所有权利。¶
本文档受本文档发布之日生效的 BCP 78 和 IETF Trust 与 IETF 文件相关的法律规定 (https://trustee.ietf.org/license-info) 的约束。 请仔细阅读这些文档,因为它们描述了您对本文档的权利和限制。¶
[RFC5639] 指定一组新的有限素数域上的椭圆曲线组,用于加密应用程序。 这些组表示为 ECC Brainpool 曲线,以可验证的伪随机方式生成,并符合 ISO [ISO1][ISO2]、ANSI [ANSI1]、NIST [FIPS]、和 SECG [SEC2]。¶0>
[RFC8422] 定义了 TLS 1.2 及更早版本中用于身份验证和密钥协商的椭圆曲线的使用,以及 [RFC7027] 定义 ECC Brainpool 曲线在 TLS 中进行身份验证和密钥交换的用法。 后者适用于 TLS 1.2 及更早版本,但不适用于 TLS 1.3,由于缺乏广泛部署,TLS 1.3 弃用了 [RFC7027] 中定义的 ECC Brainpool 曲线 ID。 然而,人们对在 TLS 1.3 中使用这些曲线感兴趣。¶
根据 [RFC8446],TLS 1.3 中密钥交换的 ECC Brainpool 曲线协商需要定义和分配额外的 NamedGroup ID。 本文档提供了使用 [RFC5639] 中的三个 ECC Brainpool 曲线所需的附加 SignatureScheme ID 的定义和分配。¶
这种方法并未得到 IETF 的认可。 实施者和部署者需要了解他们使用的所有安全机制的优点和缺点。¶
关键字“必须”、“不得”、“必需”、“应当”、“不应"、"应该"、"不应"、"推荐"、"不推荐本文档中的“”、“可以”和“可选0>”应按照 BCP 14 [RFC2119 中的描述进行解释t12>]1> [RFC81744>]3> 当且仅当它们全部大写出现时,如此处所示。¶5>
根据 [RFC8446],“supported_groups”扩展用于在启动新 TLS 会话的握手期间协商 Diffie-Hellman 组和椭圆曲线组以进行密钥交换。 本文档将 [RFC5639] 中定义的三个椭圆曲线的新命名组添加到“supported_groups”扩展中,如下所示。¶
enum { brainpoolP256r1tls13(31), brainpoolP384r1tls13(32), brainpoolP512r1tls13(33) } NamedGroup;¶
sec256r1、secp384r1 和 secp521r1 的临时椭圆曲线 Diffie-Hellman (ECDHE) 参数的编码,如 [RFC8446]第 4.2.8.2 节 中定义/t0>,也适用于本文档。¶
根据[RFC8446],名称空间 SignatureScheme 用于通过“signature_algorithms”扩展协商椭圆曲线组以进行身份验证。 此外,在签名之前还需要指定用于对消息进行哈希处理的哈希函数。 本文档为 [RFC5639] 中定义的三个椭圆曲线添加了新的 SignatureScheme 类型,如下所示。¶
enum { ecdsa_brainpoolP256r1tls13_sha256(0x081A), ecdsa_brainpoolP384r1tls13_sha384(0x081B), ecdsa_brainpoolP512r1tls13_sha512(0x081C) } SignatureScheme;¶
IANA 已更新“传输层安全 (TLS) 参数”注册表的“TLS 支持的组”[IANA-TLS] 子注册表中列出的 ECC Brainpool 曲线的参考参考本文档。¶
Value | Description | DTLS-OK | Recommended | Reference |
---|---|---|---|---|
31 | brainpoolP256r1tls13 | Y | N | RFC 8734 |
32 | brainpoolP384r1tls13 | Y | N | RFC 8734 |
33 | brainpoolP512r1tls13 | Y | N | RFC 8734 |
IANA 已更新“传输层安全 (TLS) 参数”注册表的“TLS SignatureScheme”子注册表 [IANA-TLS] 中 ECC Brainpool 曲线的引用,以供参考到此文档。¶
Value | Description | Recommended | Reference |
---|---|---|---|
0x081A | ecdsa_brainpoolP256r1tls13_sha256 | N | RFC 8734 |
0x081B | ecdsa_brainpoolP384r1tls13_sha384 | N | RFC 8734 |
0x081C | ecdsa_brainpoolP512r1tls13_sha512 | N | RFC 8734 |
TLS 通信的机密性、真实性和完整性受到所应用的最弱加密原语的限制。 为了在使用表 1 中的椭圆曲线之一进行密钥交换和/或使用表 2 中的签名算法之一进行 TLS 身份验证时实现最高安全级别,其他部署的加密方案的参数应选择相应的强度,例如,根据[NIST800-57]和[RFC5639的建议]。 特别是,这适用于(a)密钥导出函数,(b)对称加密和消息认证的算法和密钥长度,以及(c)用于签名生成的算法、位长度和散列函数。 此外,私钥 Diffie-Hellman 密钥应从随机密钥流生成,其长度等于 [RFC5639] 中定义的群 E(GF(p)) 的阶数长度。 私钥 Diffie-Hellman 密钥的值应小于群 E(GF(p)) 的阶数。¶
当使用 ECDHE 密钥协议与曲线 BrainpoolP256r1tls13、brainpoolP384r1tls13 或 BrainpoolP512r1tls13 时,节点必须通过确保该点是椭圆曲线上的有效点来验证彼此的公共值 Q。 如果不进行此检查,攻击者可以强制将密钥交换到一个小子组中,并且可以以更少的努力猜测出结果共享秘密。¶
TLS 椭圆曲线加密的实现可能容易受到旁道攻击。 对于使用系数 Z 的映射 (x',y') = (x*Z^2, y*Z^3) 将曲线点内部转换为相应“扭曲曲线”上的点的实现,应特别小心在 [RFC5639] 中为该曲线指定,以便利用基于扭曲曲线的特殊参数 (A = -3) 的高效算术。 尽管扭曲曲线本身提供与相应随机曲线相同级别的安全性(通过数学等价),但基于小曲线参数的算术可能更难防范侧信道攻击。 [BSI1] 和 [HMV] 中给出了椭圆曲线加密实现抵御旁路攻击的一般指导t2>.¶
此非规范性附录提供了一些测试向量(例如,使用表 1 中定义的每条曲线进行 Diffie-Hellman 密钥交换)。 以下符号用于所有后续部分:¶
使用 [SEC1] 中指定的 FieldElement-to-OctetString 转换方法将字段元素 x_qA、y_qA、x_qB、y_qB、x_Z 和 y_Z 表示为十六进制值。¶
曲线 BrainpoolP256r1¶
dA = 81DB1EE100150FF2EA338D708271BE38300CB54241D79950F77B063039804F1D x_qA = 44106E913F92BC02A1705D9953A8414DB95E1AAA49E81D9E85F929A8E3100BE5 y_qA = 8AB4846F11CACCB73CE49CBDD120F5A900A69FD32C272223F789EF10EB089BDC dB = 55E40BC41E37E3E2AD25C3C6654511FFA8474A91A0032087593852D3E7D76BD3 x_qB = 8D2D688C6CF93E1160AD04CC4429117DC2C41825E1E9FCA0ADDD34E6F1B39F7B y_qB = 990C57520812BE512641E47034832106BC7D3E8DD0E4C7F1136D7006547CEC6A x_Z = 89AFC39D41D3B327814B80940B042590F96556EC91E6AE7939BCE31F3A18BF2B y_Z = 49C27868F4ECA2179BFD7D59B1E3BF34C1DBDE61AE12931648F43E59632504DE¶
曲线 BrainpoolP384r1¶
dA = 1E20F5E048A5886F1F157C74E91BDE2B98C8B52D58E5003D57053FC4B0BD6 5D6F15EB5D1EE1610DF870795143627D042 x_qA = 68B665DD91C195800650CDD363C625F4E742E8134667B767B1B47679358 8F885AB698C852D4A6E77A252D6380FCAF068 y_qA = 55BC91A39C9EC01DEE36017B7D673A931236D2F1F5C83942D049E3FA206 07493E0D038FF2FD30C2AB67D15C85F7FAA59 dB = 032640BC6003C59260F7250C3DB58CE647F98E1260ACCE4ACDA3DD869F74E 01F8BA5E0324309DB6A9831497ABAC96670 x_qB = 4D44326F269A597A5B58BBA565DA5556ED7FD9A8A9EB76C25F46DB69D19 DC8CE6AD18E404B15738B2086DF37E71D1EB4 y_qB = 62D692136DE56CBE93BF5FA3188EF58BC8A3A0EC6C1E151A21038A42E91 85329B5B275903D192F8D4E1F32FE9CC78C48 x_Z = 0BD9D3A7EA0B3D519D09D8E48D0785FB744A6B355E6304BC51C229FBBCE2 39BBADF6403715C35D4FB2A5444F575D4F42 y_Z = 0DF213417EBE4D8E40A5F76F66C56470C489A3478D146DECF6DF0D94BAE9 E598157290F8756066975F1DB34B2324B7BD¶
曲线 BrainpoolP512r1¶
dA = 16302FF0DBBB5A8D733DAB7141C1B45ACBC8715939677F6A56850A38BD87B D59B09E80279609FF333EB9D4C061231FB26F92EEB04982A5F1D1764CAD5766542 2 x_qA = 0A420517E406AAC0ACDCE90FCD71487718D3B953EFD7FBEC5F7F27E28C6 149999397E91E029E06457DB2D3E640668B392C2A7E737A7F0BF04436D11640FD0 9FD y_qA = 72E6882E8DB28AAD36237CD25D580DB23783961C8DC52DFA2EC138AD472 A0FCEF3887CF62B623B2A87DE5C588301EA3E5FC269B373B60724F5E82A6AD147F DE7 dB = 230E18E1BCC88A362FA54E4EA3902009292F7F8033624FD471B5D8ACE49D1 2CFABBC19963DAB8E2F1EBA00BFFB29E4D72D13F2224562F405CB80503666B2542 9 x_qB = 9D45F66DE5D67E2E6DB6E93A59CE0BB48106097FF78A081DE781CDB31FC E8CCBAAEA8DD4320C4119F1E9CD437A2EAB3731FA9668AB268D871DEDA55A54731 99F y_qB = 2FDC313095BCDD5FB3A91636F07A959C8E86B5636A1E930E8396049CB48 1961D365CC11453A06C719835475B12CB52FC3C383BCE35E27EF194512B7187628 5FA x_Z = A7927098655F1F9976FA50A9D566865DC530331846381C87256BAF322624 4B76D36403C024D7BBF0AA0803EAFF405D3D24F11A9B5C0BEF679FE1454B21C4CD 1F y_Z = 7DB71C3DEF63212841C463E881BDCF055523BD368240E6C3143BD8DEF8B3 B3223B95E0F53082FF5E412F4222537A43DF1C6D25729DDB51620A832BE6A26680 A2¶