secp256k1 曲线上 ECDSA 随机数缺陷的分层分析
secp256k1 曲线上的 ECDSA 签名被分析为相位语料库,其中随机数生成缺陷表现为持久性家族(缺陷家族),而非孤立故障。转换到 (u_r, u_z) 坐标可通过环面几何和 kNN 搜索检测分层模式。研究证实了重复 r 模式在 58 次重建测试中的可转移性(全部通过签名验证),且外部语料库中未出现跨地址碰撞。
标准 ECDSA 使用随机数 k 生成点 R = k·G,从中得到 r = x(R) mod n。s 分量计算为 s = k^{-1} · (z + r · d) mod n。验证引入 w = s^{-1} mod n,u_z = z · w mod n,u_r = r · w mod n,并恢复 R' = u_z · G + u_r · Q,其中 x(R') mod n = r。
这些 (u_r, u_z) 坐标将签名投影到环面 Z_n × Z_n 上,揭示了缺陷模式的几何度量。
理论基础与随机数的作用
随机数 k 至关重要:其重复(重复 r)表明系统生成器缺陷,而非随机故障。在相位表示 PhasePoint = (u_r, u_z, verification_x, verification_y_raw, branch_y) 中,PhaseCorpus 聚合来自单个地址上下文的点。
关键 ECDSA 关系:
Q = d · G
R = k · G, r = x(R) mod n
s = k^{-1} · (z + r · d) mod n
w = s^{-1} mod n
u_z = z · w mod n, u_r = r · w mod n
R' = u_z · G + u_r · Q
x(R') mod n = r
r 的重复伴随 k 的重复发生,使 u_r、u_z 成为缺陷家族的标记。该方法结合了 ECDSA 代数、持久同调性和置换显著性检验。
| 符号 | 描述 | 在分析中的作用 |
|-------------|----------|---------------|
| G | 基点 | 生成 R 和 Q |
| n | 子群阶 | 计算模数 |
| d | 私钥 | 签名者的秘密 |
| k | 随机数 | 缺陷来源 |
| (r,s) | 签名 | 可观测数据 |
| (u_r, u_z) | 相位坐标 | 模式检测 |
实验设计与材料
对象 — secp256k1 签名语料库作为 PhasePoint 集合。主题 — 缺陷家族签名:重复 r、(u_r, u_z) 的几何、可转移性。
假设:缺陷在环面上留下分层痕迹,重复 r 是更深层模式的表面。
方法论:
- 转换到相位坐标。
- kNN 检测器和语料库结果。
- 在受控数据上进行合成重放。
- 发布安全性审计。
语料库:30 个地址上下文,6257 个签名。1 个上下文中出现重复 r,跨地址 r 碰撞 — 0。属性扫描确认了 4 种场景的可转移性,重建 — 58/58 通过 ECDSA 验证。状态纠缠 — 0 检测。审计识别出 498 个问题(30 个关键),阻止了敏感数据的发布。
与商业工具对比:
| 特性 | 商业工具(CertiK、Hacken) | ECDSA 分层分析套件 |
|-----------------|--------------------------------|-----------------------------|
| 任务 | 合约漏洞 | 随机数中的缺陷家族 |
| 装置 | 模糊测试、验证 | 环面几何、kNN |
| 输出 | 漏洞报告 | 模式分类 |
| 受众 | 开发者、交易所 | 实验室、标准机构 |
结果与已验证断言
已验证缺陷家族从真实供体到 58 个地址目标的转移,并通过密码学验证。外部语料库中未出现自发转移。
局限性:数学可转移性已证明,但发布排除了操作步骤、原始 r/s/z、恢复脚本。聚合数据经过清理以确保可复现性。
合成重放的代码片段(安全):
import numpy as np
# 示例 PhasePoint 生成(已清理)
def phase_point(r, s, z, Q):
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 # secp256k1
w = pow(s, -1, n)
u_z = (z * w) % n
u_r = (r * w) % n
return (u_r, u_z)
合成数据上的置换显著性检验确认了稳健性。
可复现性与发布安全性
项目定义了解释边界:科学严谨性不降低利用门槛。纯合成控制和审计确保了安全管道。
科学新颖性:整合了 ECDSA 代数、Z_n × Z_n 的环面几何、语料库分析和发布安全性。
关键要点:
- 重复 r 是缺陷家族的指标,在 58/58 次测试中可转移。
- 相位坐标 (u_r, u_z) 揭示了环面上的分层。
- 外部语料库中无跨地址 r 碰撞。
- 发布安全性阻止了 30 个关键风险。
- 该方法适用于分类随机数生成器,而无需披露漏洞。
— Editorial Team
暂无评论。