ECDSA 安全漏洞剖析:从非 ce 泄露到密钥恢复实战
DSA 基础
ECDSA 是基于椭圆曲线的数字签名算法(DSA)变种。DSA 包含三个核心算法:
密钥生成:随机选择私钥 x,计算公钥 y = gˣ mod p
签名生成:选择随机数 k(nonce),计算 r = (gᵏ mod p) mod q,s = k⁻¹(H(m) + xr) mod q
签名验证:验证 r = (gᴴ⁽ᵐ⁾yʳ)ˢ⁻¹ mod p mod q
ECDSA 的致命弱点
非 ce 重用攻击
若两个签名使用相同 nonce k:
复制代码
部分比特泄露攻击
仅泄露 3 个 nonce 比特即可破解 160 位 DSA
LadderLeak 攻击表明:泄露<1 比特即可恢复密钥
随机数生成器仅 4 比特偏差也能导致 256 位 ECDSA 被攻破
实战格攻击(100 行 Python)
复制代码
防护措施
首选 EdDSA:内置确定性 nonce 生成
RFC 6979:确定性 nonce 生成标准
恒定时间实现:防止侧信道泄露
随机数增强:避免偏差产生
本文演示的攻击在以下场景有效:
Nonce 重用(100%成功率)
80 比特固定 nonce(需 5 个签名)
仅 4 比特偏差(需约 4000 个签名)更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码
办公AI智能小助手
评论