前言
讲ECDSA的文章很多、很长,但通常也是晦涩难懂,本篇志于很简单的语言让读者彻底掌握ECDSA原理并能讲给别人听。
私钥和公钥
ECDSA 定义了点的特殊操作,并提供了强大的trapdoor function。对于点G(生成元)和随机整数x,我们可以得到点P,其中P = x*G。trapdoor function 特性使得从x 得到P 很容易,但通过知道P 得到x 却非常困难。在实作中,x 将是私钥,点P(x 坐标)将是公钥。
签名
1. 输入参数:随机生成数k, 讯息msg , 私钥private_key,椭圆曲线使用的质数p
2. 计算点R = k*G
3. 将r 设置为R 点的x 坐标
4. 计算值s
5. r, s 为签名结果
验证
1. 输入参数:讯息msg, 公钥public_key point(P), r, s 值
2. 计算点Q
3. 验证Q 的x 坐标等于 r