返回首页

ECDSA secp256k1 nonce 缺陷分析

该研究将 ECDSA 签名呈现为相位语料库,用于检测缺陷家族 nonce 缺陷。证明了带有发布安全性控制的 repeated-r 模式转移。该方法结合环面几何和 kNN,而不披露操作风险。

ECDSA 中的缺陷 nonce 模式:分层与转移
Advertisement 728x90

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 上,揭示了缺陷模式的几何度量。

Google AdInline article slot

理论基础与随机数的作用

随机数 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 代数、持久同调性和置换显著性检验。

Google AdInline article slot

| 符号 | 描述 | 在分析中的作用 |

|-------------|----------|---------------|

| G | 基点 | 生成 R 和 Q |

Google AdInline article slot

| 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

Advertisement 728x90

继续阅读