如何使用ECDSA算法生成数字签名
现在我们经常在区块链中看到数字签名这一术语是非常常见的。在发送交易时,无论是比特币、Ethereum、Hyperledger Fabric还是任何其他平台,都在使用数字签名进行签名和验证。
区块链中的数字签名
ECDSA算法
从A点到B点在椭圆曲线上的切线
根据wiki ECDSA为:
椭圆曲线密码体制是一种基于有限域椭圆曲线代数结构的公钥密码体制。与非对称密码学相比,ECC需要更小的密钥来提供同等的安全性。椭圆曲线适用于密钥协议、数字签名、伪随机发生器等任务。通过将密钥协议与对称加密方案相结合,它们可以间接用于加密。它们也被用于一些基于椭圆曲线的整数分解算法中,这些算法在密码学中有广泛的应用,例如Lenstra椭圆曲线分解。
简单来说,ECDSA算法可以使用公钥密码学方法生成公钥/私钥集合,用于签名和验证签名。让我们看看公钥密码学是什么样子的。
公钥和私钥由加密算法生成,如RSA,ECDSA。发件人通过收件人公钥加密邮件并发送。在另一端,收件人通过自己的私钥解密消息并获取消息。
现在回过头来看看ECDSA,利用椭圆曲线在给定的源点G上画切线,生成密钥。p是一个具有很大值的有限模。
椭圆曲线上的切线
椭圆曲线上的切线定义为
Y²mod p=(x³+7)mod p
G:来源点
p:为椭圆曲线定义范围。
生成数字签名的私钥和公钥:
从一个随机生成的数字为dA的私钥开始,我们将它乘以曲线上的一个预定点,称为生成点G,在曲线的另一个地方产生另一个点,也就是对应的公钥Qa。生成点被指定为secp256k1标准的一部分,对所有键都是相同的。
从私钥dA生成公钥Qa
使用ECDSA算法生成数字签名
利用私钥dA生成签名
验证签名
验证是签名生成函数的逆值,使用R、S值和公钥计算一个值P,这是椭圆曲线上的一个点(创建签名时使用的临时公钥P)。
总结
数字签名可以使用自己的私钥签名,并且可以使用公钥独立进行验证。公开签名在任何情况下都不会导致获取用户的私钥。因此,ECDSA算法在保证私钥安全的同时生成签名。
- •华为50家核心供应商盘点2019-03-21
- •中小学生“缺觉”影响身心发育 专家建议睡前少看电子产品2019-03-21
- •AT&T计划将采用5G E标识取代4G手机屏幕上的LTE标识2019-01-23
- •三星电视销量节节败退 传言将削减中国电视产量2019-01-23
- •格力投资新世纪机器人 传统家电巨头们开始智能家居市场的突围之路2019-01-23
- •全球首家第五代移动通信网络机器人咖啡厅正式开业2019-01-23
- •全球首家智能机器人售货超市正式开业 计划2019年在光谷建店10家2019-01-23
- •人工智能和机器人的进步最终将超越目前的局限2019-01-23
- •产能扩充变得重要 动力电池市场将迎来新一轮的激烈竞争2019-01-23
- •盘点2018航天大事件:火箭发射数量首次位居世界第一2019-01-23