ECDSA(椭圆曲线数字签名算法)
一句话定义: 比特币原有的签名方案,用于验证所有权;Taproot 的 Schnorr 出现前一直使用。
ECDSA 是比特币最初的数字签名方案。自 2009 年起,网络就是靠它验证:花掉某个 UTXO 的人,真的掌控着该 UTXO 对应的私钥。
机制建立在 secp256k1 椭圆曲线上。大致流程:
- 持有私钥
k的签名者产出一个签名(r, s),它取决于k、被签名的消息,以及一个随机选取的临时数(nonce)。 - 任何持有对应公钥的人都能验证这个签名在数学上自洽——也就是说,签名者必然知道
k。 - 验证者在此过程中对
k本身一无所知。
生产级 ECDSA 实现还必须遵守严格的常数时间纪律:签名里的模乘步骤若实现得天真,会通过时间侧信道泄露密钥位。Bitcoin Core 的 libsecp256k1 是生产密码学中常数时间实现打磨得最认真的代码库之一。
ECDSA 能用,但有几处恼人:
- 签名延展性。 一个有效签名
(r, s)可以被轻松改写成(r, n − s)(n是曲线阶),两者对同一消息、同一公钥都验证通过。这给交易 ID 的稳定性制造过真实的麻烦,后来被 SegWit 部分修复。 - 没有原生聚合。 多签输出的五个联署人产出五个独立签名,各自占用链上空间,没有干净的压缩办法。
- 证明略别扭。 ECDSA 的可证明安全性结果比 Schnorr 的更乱。
Schnorr 签名(2021 年 11 月随 Taproot 激活)把这三个问题都解决了。ECDSA 仍用于旧式地址类型(P2PKH、P2SH、P2WPKH、P2WSH),仍是生产比特币中经受检验最充分的签名方案。新的 Taproot 输出默认用 Schnorr。
ECDSA 的安全性建立在椭圆曲线离散对数问题的计算难度上。这个假设会被足够强大的量子计算机上运行的 Shor 算法击穿。迁移框架见后量子比特币。
相关词条: 适配器签名 · BIP 66 · 常数时间实现 · 椭圆曲线 · MuSig · MuSig2 · 后量子比特币 · Schnorr 签名 · Shor 算法 · 签名聚合 · 签名裁剪 · SegWit(隔离见证,BIP 141)