MSTR Cat

区块链/等级 II · 运作机制/2.1 密码学/课程 3

私钥、公钥和 secp256k1

整数、曲线与单向门

材料一个显示见证数据的区块浏览器A. M. Antonopoulos与D. A. Harding著,《精通比特币》,第3版(2023年),第4章

好奇

  1. 为什么将一个点乘以一个数只需几毫秒,而逆向求解却需要比宇宙年龄还长的时间?
  2. 是什么使 secp256k1 在结构上不同于大多数其他数字签名所使用的 NIST 曲线?
  3. 一个32字节的数值如何能在不暴露控制者身份的情况下掌控价值数十亿的资产?

探索

  1. 比特币私钥是一个介于 1 和 n−1 之间的随机整数,其中 n 是椭圆曲线生成点的阶数。这个数值 n 大约为 1.158 × 10^77,即一个 78 位数字,其数值与可观测宇宙中的原子总数(约为 10^80)相差不大。公钥则是通过标量乘法生成的:将这个整数 k 与椭圆曲线上的固定生成点 G 相乘。由于所有比特币用户使用的 G 值都是相同的,因此每个唯一的 k 都会在曲线上产生一个唯一且确定的点 K。
  2. secp256k1曲线是在素数域上由方程y² = x³ + 7定义的,其中p = 2^256 − 2^32 − 977。这一特定参数集由Certicom在SEC 2标准中确立。2009年选择secp256k1并不寻常;它是一条科布利茨曲线(以Neal Koblitz命名),其特殊结构(一种可高效计算的自同态)可实现更快的标量乘法,而且其参数几乎没有隐藏选择的余地,这与那些由无法解释的随机种子生成的曲线不同。中本聪从未解释过这一选择。
  3. 标量乘法之所以快速,是因为实现中采用了“倍点-加法”(double-and-add)算法,逐位处理私钥的二进制表示。点的倍乘和两点相加都是计算机可在微秒级完成的基本曲线运算。然而,逆向操作——即由K和G推导出k——被称为椭圆曲线离散对数问题(ECDLP)。目前尚无已知的针对secp256k1上ECDLP的高效经典算法;暴力搜索密钥空间在计算上不可行,这为其提供了约128位的抗经典攻击安全性。
  4. 公钥会以特定格式进行序列化,以便存储和传输。未压缩公钥长65字节,以前缀04开头,其后是x坐标和y坐标。压缩公钥长33字节,使用前缀02或03表示y坐标的奇偶性,因此仅凭x坐标即可重建公钥。2021年11月激活的Taproot采用了进一步的优化——仅x坐标公钥(x-only key),长32字节,完全省略前缀,这依赖于Schnorr签名方案的特性。
  5. 私钥与公钥之间的关系是严格单向的。分享公钥无法透露任何关于私钥的信息,因为对于这种曲线尺寸而言,离散对数问题仍然无法解决。相反,只要拥有私钥,就可以立即计算出对应的公钥。正是这种不对称性构成了比特币所有权模型的基础:任何人都可以验证某个签名是否由特定的私钥生成,而无需看到该私钥本身。
  6. 要验证这些机制,可打开任意区块浏览器并找到某笔交易的输入。对于原生 SegWit(P2WPKH)支出,见证数据中包含签名和33字节的压缩公钥;对于 Taproot 密钥路径支出,32字节的密钥就位于输出本身之中,见证数据中只有签名。将其与前一个输出中的地址进行比较:地址是公钥的哈希,而原始公钥则在花费时出现在这里。注意,公钥坐标是表示曲线上点的十六进制字符串,不同于 SegWit 版本0地址中使用的20字节和32字节哈希值。

关键事实

  • 私钥是一个介于 1 和 n−1 之间的随机整数,其中 n ≈ 1.158 × 10^77。
  • secp256k1 是在素数域 p = 2^256 − 2^32 − 977 上定义的,其方程为 y² = x³ + 7。
  • 标量乘法 k·G 生成公钥;逆向求解(ECDLP)在计算上不可行。
  • 未压缩的公钥为65字节(前缀为04);已压缩的公钥为33字节(前缀为02/03)。
  • Taproot使用32字节的仅x坐标密钥,完全省略了y坐标及前缀。
  • secp256k1是一条几乎没有无法解释参数的科布利茨曲线,由中本聪于2009年选定。

练习 九、六、三、一

9收集列出 secp256k1 的 9 项特性:其方程、域素数、生成点阶数、密钥尺寸(未压缩/已压缩/仅 X 值)、安全级别、标准起源、曲线类型,以及与其应用相关的两则历史事实。
6归类将这9项分为6类:方程与域、生成点与阶、密钥格式、安全级别、标准发展史以及采用情况。
3提炼将这6类归纳为 secp256k1 适合比特币所有权模型的3个理由。
1凝结用一句话写出将私有整数转换为公钥点的精确数学运算,并说出使其无法逆推的难题名称。

事实核查

日期、数字及数据均依据下方列出的已发表资料进行核实。

在互动学院中打开 →

EN PT ES JA KO RU DE FR MS