# P-256是什么？定义、例子与常见误区

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

Source: https://ssl.sh/zh/glossary/p-256/
Last updated: 2026-11-10

P-256 是 NIST 标准化的椭圆曲线，SECG 发布时称为 secp256r1，OpenSSL 里则叫 prime256v1，三个名字指的是同一条曲线，安全强度约 128 位。TLS 中它既作为 [ECDHE](https://ssl.sh/zh/glossary/ecdhe/) 的密钥交换群 secp256r1，也用于 [ECDSA](https://ssl.sh/zh/glossary/ecdsa/) 的签名方案 ecdsa_secp256r1_sha256。

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

## 例子
生成 P-256 私钥并确认曲线：

```bash
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 已被证明不安全。** 其常数的选取方式多年来一直有争议，但目前没有已知的实用攻击，它仍是获准使用、部署最广的曲线之一。

## 相关术语

- [ECC](https://ssl.sh/zh/glossary/ecc/): ECC 即椭圆曲线密码学，是基于有限域上椭圆曲线代数结构的公钥密码技术，能用较短的密钥提供很高的安全强度。
- [ECDSA](https://ssl.sh/zh/glossary/ecdsa/): ECDSA 是基于椭圆曲线的数字签名算法，在 TLS 证书中作为 RSA 的替代方案，密钥和签名更小、签名运算更快。
- [ECDHE](https://ssl.sh/zh/glossary/ecdhe/): ECDHE 是椭圆曲线上的临时 Diffie-Hellman 密钥交换，TLS 双方每次握手都生成新的椭圆曲线密钥对，并据此协商出共享密钥。
- [Ed25519](https://ssl.sh/zh/glossary/ed25519/): Ed25519 是在 Curve25519 爱德华兹形式上实现的 EdDSA 签名方案，由 RFC 8032 定义，公钥 32 字节，签名 64 字节且为确定性签名。
- [密钥长度](https://ssl.sh/zh/glossary/key-size/): 密钥长度是密钥的位数，其安全含义取决于算法，例如 256 位的 ECDSA 密钥比 2048 位的 RSA 密钥更强。
- [X25519MLKEM768](https://ssl.sh/zh/glossary/x25519mlkem768/): X25519MLKEM768 是把经典的 X25519 与后量子算法 ML-KEM-768 组合起来的 TLS 1.3 混合密钥交换群，Chrome 从 131 版起使用。
