术语表

P-256 (secp256r1,prime256v1)

最后核实

定义

P-256 是 NIST 标准化的 256 位素数域椭圆曲线,也叫 secp256r1 或 prime256v1,广泛用于 ECDSA 证书和 ECDHE 密钥交换。

P-256 是 NIST 标准化的椭圆曲线,SECG 发布时称为 secp256r1,OpenSSL 里则叫 prime256v1,三个名字指的是同一条曲线,安全强度约 128 位。TLS 中它既作为 ECDHE 的密钥交换群 secp256r1,也用于 ECDSA 的签名方案 ecdsa_secp256r1_sha256。

为什么重要

P-256 是 ECDSA 证书最常用的曲线。截至 2026 年 11 月,WebPKI 中的 CA 签发的 ECDSA 证书使用 P-256 或 P-384。TLS 1.3 规范(RFC 8446,现行版本为 RFC 9846)规定实现必须支持 secp256r1 密钥交换和 ECDSA P-256 签名,所以几乎所有 TLS 协议栈都支持它;硬件安全模块和经过 FIPS 验证的密码模块对它的支持也很完善。在密钥交换方面,很多客户端优先使用 X25519(或混合方案 X25519MLKEM768),P-256 作为兼容性最好的后备。申请证书时选择"ECC 256 位",通常指的就是这条曲线。

例子

生成 P-256 私钥并确认曲线:

openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out example.com.key
openssl pkey -in example.com.key -noout -text | grep -i curve

输出中会同时出现 OID 名 prime256v1 和 NIST 名 P-256。Nginx 中写 ssl_ecdh_curve X25519:prime256v1; 即可把它作为密钥交换群提供。

常见误区

  • P-256、secp256r1、prime256v1 是三条不同的曲线。 它们是同一条曲线在 NIST、SECG 和 OpenSSL 中的不同名字。
  • 256 比 2048 小,所以 P-256 不如 RSA-2048。 P-256 约 128 位安全强度,RSA-2048 约 112 位。
  • P-256 已被证明不安全。 其常数的选取方式多年来一直有争议,但目前没有已知的实用攻击,它仍是获准使用、部署最广的曲线之一。

延伸阅读