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 2 | secp256k1 |
| JOSE / COSE | secp256k1 |
域参数
256 位素域 · 约 128 位安全强度
- 域素数 p
- 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
- 系数 a
- 0x0
- 系数 b
- 0x7
- 基点 x 坐标
- 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
- 基点 y 坐标
- 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8
- 基点的阶 n
- 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141
- 余因子 h
- 0x1
用于
- Bitcoin
- Ethereum
- Nostr
- JOSE (ES256K)
- COSE (ES256K)
← 全部曲线