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 算法……)。在这里,您可以为每个密码套件分别选择要支持的椭圆曲线。选择一起配置哪些参数是方便与灵活性的问题。
¹更准确地说,它是曲线上点坐标的位大小。但是对于所有常见的曲线,这也是私钥的大小。