跳到主要内容
ecdsa.com
推荐短 Weierstrass 形式

P-256

P-256(secp256r1、prime256v1)是部署最广泛的椭圆曲线:TLS、X.509、JOSE ES256、WebAuthn 和 DNSSEC 都在使用它。

P-256 是形如 y² = x³ + ax + b 的短 Weierstrass 曲线,定义在 256 位素域上,其素数阶子群为 256 位,余因子为 1;估计安全级别为 128 位。状态:推荐用于新系统。

P-256 是素数 p = 2^256 − 2^224 + 2^192 + 2^96 − 1 上的短 Weierstrass 曲线 y² = x³ − 3x + b,这个素数的特殊形式使模约简可以快速完成。它的群阶是一个约为 2^256 的素数(余因子为 1),安全强度约为 128 位。同一条曲线有三个名称:P-256(NIST、JOSE、COSE)、secp256r1(SEC 2、TLS)和 prime256v1(ANSI X9.62、OpenSSL)。

公钥是一个点:未压缩形式为 65 字节(0x04 ‖ x ‖ y),压缩形式为 33 字节。ECDSA 签名在原始 r ‖ s 格式下为 64 字节(JOSE、WebCrypto),在 DER 编码下通常为 70~72 字节(X.509、TLS、OpenSSL、WebAuthn 断言);混淆这两种编码是最常见的互操作问题之一,DER ⇄ 原始格式转换器可以在两者之间转换。

硬件支持非常广泛:Apple 的 Secure Enclave 只生成 P-256 密钥,FIDO2 安全密钥和平台认证器通常也生成 P-256 通行密钥(passkey),对应 COSE 算法 −7(ES256)。与其他 NIST 曲线一样,b 由一个来源没有文档说明的 SHA-1 种子推导而来,这也是部分协议设计者更青睐 Curve25519 的原因之一;至今尚未发现 P-256 存在任何弱点。

各标准中的名称

标准名称
NIST FIPS 186-5 / SP 800-186P-256
SEC 2secp256r1
ANSI X9.62prime256v1
JOSE / COSEP-256
SSHnistp256

对象标识符

域参数

256 位素域 · 约 128 位安全强度

域素数 p
0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff
系数 a
0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc
系数 b
0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b
基点 x 坐标
0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296
基点 y 坐标
0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5
基点的阶 n
0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551
余因子 h
0x1
种子
0xc49d360886e704936a6678e1139d26b7819f7e90

用于

  • TLS 1.3
  • X.509 / Web PKI
  • JOSE (ES256)
  • COSE (ES256, ESP256)
  • SSH (ecdsa-sha2-nistp256)
  • DNSSEC (algorithm 13)
  • WebAuthn / passkeys
  • Apple Secure Enclave

注册表中的标识符

TLS 支持的组
secp256r1 0x0017SecP256r1MLKEM512 0x11E9SecP256r1MLKEM768 0x11EBSecP256r1Kyber768Draft00 0x639A
TLS 签名方案
ecdsa_secp256r1_sha256 0x0403
JOSE 算法
ES256HPKE-0HPKE-0-KEHPKE-7HPKE-7-KE
JWK 曲线
P-256
COSE 算法
ESP256 -9
COSE 椭圆曲线
P-256 1
SSH 密钥交换方法
ecdh-sha2-nistp256gss-nistp256-sha256-*mlkem768nistp256-sha256
SSH 公钥算法
ecdsa-sha2-nistp256x509v3-ecdsa-sha2-nistp256
DNSSEC 算法编号
ECDSAP256SHA256 13
HPKE KEM 标识符
DHKEM(P-256, HKDF-SHA256) 0x0010DHKEM(CP-256, HKDF-SHA256) 0x0013MLKEM768-P256 0x0050

标准与参考资料

全部曲线