首页/安全/加密与证书速查/ECDSA 随机数 k 的安全要求
加密算法基础95 条

ECDSA 随机数 k 的安全要求

ECDSA 签名依赖一次性随机数 k:k 重复或可预测即可从两个签名中恢复私钥;工程上推荐 RFC 6979 的确定性 k 或使用成熟库。

加密与证书速查安全更新于 2026-10-12
规则一同一私钥下 k 必须唯一
规则二k 不可预测,取自带密码学随机源
确定性方案RFC 6979:由私钥与消息散列确定派生 k
历史案例2010 年 PS3 因 k 固定导致私钥被恢复

使用成熟库(cryptography)

使用成熟库(cryptography)
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import ec

sig = private_key.sign(data, ec.ECDSA(hashes.SHA256()))   # 库内部安全处理 k
签名服务若在重启或容器复制后复用随机状态,可能产生相同 k;密钥生成与签名都应由可信随机源驱动。

易错点

  • 虚拟机快照回滚后随机源状态可能重复,签名服务要评估熵源质量
  • 把自研 k 生成代码当作「等价实现」是高风险做法,审计时重点检查

数据来源与参考

  • RFC 6979(确定性 DSA/ECDSA)
  • FIPS 186-5 附录(随机数与密钥生成)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌