密码学 | 椭圆曲线数字签名方法 ECDSA(下)

目录

10  ECDSA 算法

11  创建签名

12  验证签名

13  ECDSA 的安全性

14  随机 k 值的重要性

15  结语


⚠️ 原文:Understanding How ECDSA Protects Your Data.

⚠️ 写在前面:本文属于搬运博客,自己留着学习。同时,经过几天的折磨后,我对椭圆曲线已经有点基础了,因此删除了一些我认为无关紧要的原文。

10  ECDSA 算法

现在让我们来谈谈 ECDSA 签名算法。

对于 ECDSA,你首先需要知道你的曲线参数,即 a、b、p、N 和 G。你已经知道 a 和 b 是曲线函数的参数:

y^2=(x^3+ax+b)\ \mathrm{mod}\ p

还知道 p 是模数,N 是曲线的点数。但还需要知道 G 是什么。G 代表一个 “参考点” 或者说一个 “原点”,参考点可以是曲线上的任何一点。

NIST(美国国家标准与技术研究院)和 SECG(高效加密标准组)提供了预先制作和标准化的曲线参数,这些参数被认为是有保障且高效的。

私钥是一个 160 位的随机数,而公钥是曲线上的一个点,它是私钥与参考点 G 的点乘结果。设 dA 为私钥,Qa 为公钥,则有:Qa = dA * G,其中 G 是曲线参数中的参考点。

不懂 dA 和 Qa 为什么要这样大小写

11  创建签名

一个签名的长度是 40 个字节,它由两个 20 字节的值组成,第一个称为 R,第二个称为 S,所以 (R, S) 共同构成 ECDSA 签名。具体流程如下:

首先,您必须生成一个随机值 k(20 字节),并使用 “点乘法” 计算 P 点:

P=k*G

P 点的 x 坐标值即为 R

你可能感兴趣的:(密码学,密码学,椭圆曲线)