跳到主要内容
ecdsa.com
可接受短 Weierstrass 形式

secp256k1

secp256k1 是保障比特币、以太坊和 Nostr 安全的 256 位 Koblitz 曲线 y² = x³ + 7。

secp256k1 是形如 y² = x³ + ax + b 的短 Weierstrass 曲线,定义在 256 位素域上,其素数阶子群为 256 位,余因子为 1;估计安全级别为 128 位。状态:安全,但仅限特定地区或小众场景。

secp256k1 由 SEC 2 定义,基于素数 p = 2^256 − 2^32 − 977,且 a = 0、b = 7。它的素数阶群提供约 128 位安全强度;a = 0 加上 p ≡ 1 (mod 3),带来了可加速标量乘法的 GLV 自同态。与 NIST 曲线不同,它的参数是出于效率考虑选定的,而不是由种子推导而来。

2009年,比特币采用它进行 ECDSA 签名,BIP 340(Taproot)又在同一曲线上加入了 Schnorr 签名;以太坊用它对交易和消息签名,Nostr 事件则携带 BIP 340 Schnorr 签名。以太坊(自 EIP-2 起)和比特币的中继策略都会拒绝 high-S 形式的 ECDSA 签名,以杜绝延展性——参见 low-S。

在区块链之外,它并不常见:RFC 8422 已在 TLS 中弃用它(码点 22),JOSE(ES256K,RFC 8812)和 COSE(算法 −47)注册了它,而 NIST SP 800-186 只允许将其用于与区块链相关的应用。

各标准中的名称

标准名称
SEC 2secp256k1
JOSE / COSEsecp256k1

对象标识符

域参数

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

域素数 p
0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
系数 a
0x0
系数 b
0x7
基点 x 坐标
0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
基点 y 坐标
0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8
基点的阶 n
0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141
余因子 h
0x1

用于

  • Bitcoin
  • Ethereum
  • Nostr
  • JOSE (ES256K)
  • COSE (ES256K)

注册表中的标识符

TLS 支持的组
secp256k1 0x0016
JOSE 算法
ES256K
JWK 曲线
secp256k1
COSE 算法
ES256K -47
COSE 椭圆曲线
secp256k1 8
HPKE KEM 标识符
DHKEM(secp256k1, HKDF-SHA256) 0x0016

标准与参考资料

全部曲线