某些密码字符串中的“P”值是什么?

信息安全 tls 哈希 密码选择 密码
2021-08-18 16:00:33

我看到的大多数密码字符串都采用以下格式:

TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

但是,我遇到过带有额外“P”值的密码字符串的工作站:

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521

什么是“P”值(它们代表什么)?此外,有些看起来像常见的散列长度,但上面的“521”不是错字。

更新:

抱歉,我应该更具体地问我的问题:

1. 有和没有 P 值的密码套件有什么区别?
2. P 值的密码串是强还是弱?
3. 在基本术语中,P 值的添加对 PKI 过程有什么作用?它是某种嵌套/附加消息身份验证吗?
4. 521是哈希长度吗?如果不是,那是什么?

3个回答

P521为椭圆曲线

“P521”是椭圆曲线的绝版,SECG 和 TLS 正式将其称为secp521r1,而NIST FIPS 186-4将其称为 P-521。椭圆曲线是椭圆曲线算法(如 ECDH 和 ECDSA)使用的数学域。

曲线通常以包含有关曲线类型和密钥大小¹的一些信息的名称而闻名。字母“sec”代表SECG(高效密码学组标准),特别是SEC2中描述的曲线。下面的 P 是因为曲线在素数域(元素数为素数的有限域)上。521 是与曲线相关的位大小。R 表示曲线的某些参数是随机生成的,最后的 1 是因为这是第一条(也是迄今为止唯一的)secp521r 曲线。

曲线参数通常以这样一种方式选择,即在给定数学约束的情况下使计算更快,以确保参数具有所需的安全属性。特别是,如果字段的大小与 2 的幂相差尽可能少的位,这会有所帮助,因为这允许快速模减少碰巧 2 521 -1 是素数。没有任何素数几乎一样好并且有 512 位或更少。

大小而言,今天,对于临时密钥交换 (ECDH) 和签名 (ECDSA) 的椭圆曲线而言,256 位已足够。像往常一样,较大的尺寸会以较低的性能为代价提供更多的抵抗力(但“在实践中牢不可破”并不是一个实际好处的抵抗力更强)。

椭圆曲线和 TLS 密码套件

TLS密码套件是一组参数,用于描述 TLS 协议如何设置用于通信的密钥。请参阅SSL/TLS 如何工作?想要查询更多的信息。例如,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256意味着使用椭圆曲线 Diffie-Hellman (ECDH) 和一次性(E 表示临时密钥)执行密钥交换,使用 RSA 验证服务器的签名,以及使用 AES-128-CBC 加密安全通道和HMAC-SHA-256 对其进行身份验证。客户端和服务器在 TLS 连接开始时协商使用哪个密码套件(客户端发送它支持的密码套件列表,服务器选择一个并让客户端知道哪一个)。ECDH 椭圆曲线的选择不是密码套件编码的一部分. 曲线是单独协商的(这里也是由客户端提出和服务器决定)。

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521不是与 不同的东西TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256这意味着TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256与 secp521r1 一起用于 ECDHE 部分。

大多数 TLS 服务器软件允许管理员配置它愿意支持的安全参数。有时,这对每个部分都是独立完成的(哪些密钥交换类型、哪些密钥协商算法、哪些签名散列、哪些椭圆曲线、哪些 HMAC 散列、哪些对称密码、哪些 AEAD 算法……)。在这里,您可以为每个密码套件分别选择要支持的椭圆曲线。选择一起配置哪些参数是方便与灵活性的问题。

¹更准确地说,它是曲线上点坐标的位大小。但是对于所有常见的曲线,这也是私钥的大小。

我建议这些表示 ECDHE 密钥交换中使用的曲线,即 NIST P-256、NIST P-384 和 NIST P-521。这些实际上并不是密码本身的一部分(即 TLS 握手中使用的 16 位密码 id),但看起来微软已将其添加到他们的密码语法中。

有和没有“P 值”的密码套件之间确实没有区别,除了一个明确说明它使用的是哪个椭圆曲线,而另一个将使用系统默认值。

它们是NIST ECC 曲线的命名另见NIST.FIPS.186-4

NIST  RFC 4492

P-256 secp256r1  
P-384 secp384r1 
P-521 secp521r1