椭圆曲线

发布时间 2023-11-18 10:46:51作者: AikNr

椭圆曲线简单总结

写这篇文章原因是老是忘记每个符号代表什么,所以搞一个简单的对照表

元素 符号
参考起始点 G ,可以是任意一点
私钥dA 一个随机数dA
公钥QA QA = dA x G
随机数 k
消息摘要 z
P点 k * G
签名 (R, S)
R 是 P点的x坐标
\(S = k^{-1} (z + dA * R)\)

点A + 点B:两点连线再取X轴镜像值

image

k * G: k个点G相加

验证签名: \(P = S^{-1} * z * G + S^{-1} * R * QA\)

  • 获取到的P点X坐标如果和签名的R相同,就说明正确。

带入\(P = k * G 和 Qa = dA * G\)

  • \(k * G = S^{-1} * z * G + S ^ {-1} * dA * R  * dA * G\)
  • \(k = S^{-1} * (z + dA * R)\)

两边求逆,有

  • \(S = k^{-1} * (z + dA * R)\), 即一开始签名所用公式
  • 索尼PS3漏洞成因: 使用了相同的随机数,导致在相同点G的情况下点R将相同。因此可以通过使用两个签名相减 的方式获取到k值,从而获得私钥dA
  • 总结: 在自定义的过程中需要保证随机数一定是随机的,不能随便用重复的