secp256k1 は、256 ビットの素体上の短縮ワイエルシュトラス形式の曲線 y² = x³ + ax + b で、位数が 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 曲線と異なり、パラメーターはシードから導出されたのではなく、効率を重視して選ばれました。
Bitcoin は 2009 年に ECDSA 用にこの曲線を採用し、BIP 340(Taproot)で同じ曲線上の Schnorr 署名が追加されました。Ethereum はこの曲線でトランザクションとメッセージに署名し、Nostr のイベントには BIP 340 の Schnorr 署名が付きます。Ethereum(EIP-2 以降)と Bitcoin のリレーポリシーは、展性を排除するために 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)
← すべての曲線