GMSSL :SM2椭圆曲线公钥密码算法——数字签名算法4

2021SC@SDUSC

目录

一、ECDSA介绍

二、代码分析


一、ECDSA介绍

ECDSA的全名是Elliptic Curve DSA,即椭圆曲线DSA。它是Digital Signature Algorithm (DSA)应用了椭圆曲线加密算法的变种。椭圆曲线算法的原理很复杂,但是具有很好的公开密钥算法特性,通过公钥无法逆向获得私钥。

与ECDSA相关的几个概念:

私钥:一个秘密号码,只有生成它的人知道。私钥本质上是一个随机生成的数字。在比特币中,一个人的私钥与区块链可以花这笔钱。在比特币中,私钥是单个无符号256位整数(32字节)。

公钥:与私钥相对应,但不需要保密的数字。公钥可以从私钥计算,但反之亦然。公钥可以用来确定签名是否是真实的(换句话说,用正确的密钥生成),而不需要泄露私钥。

ECDSA算法的两个优点:
1.在已知公钥的情况下,无法推导出该公钥对应的私钥。
2.可以通过某些方法来证明某人拥有一个公钥所对应的私钥,而此过程不会暴露关于私钥的任何信息。

ESCDA处理的实际上是消息的哈希值,而不是消息本身。哈希函数是可选择的,但这个哈希函数必须是一个

密码学安全的哈希函数。消息的哈希值需要截取一个固定的长度 Ln ,这个长度是 n (子群的阶)的二进制位数。截取后的哈希值是一个整数,我们记为 z。

  ECDSA签名流程:

  1. 在 {1,2.......,n-1}随机选择一个整数  k(  n​ 是子群的阶)
  2. 计算点 P=kG (其中 G是子群的基点)
  3. 计算  r=xp mod n(其中 xp是  P​ 点的横坐标)
  4. 如果 r=0  ,就重新选择一个k,然后再尝试一次同样的流程
  5. 计算  ​(其中dA 是Alice的私钥, k^n-1是  k在模n下的乘法逆元)
  6. 如果  s=0,就重新选择一个 k​ 然后再尝试一次同样的流程

 二元组(r,s)就是消息的签名

在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。对于一般椭圆曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。与大数分解问题及有限域上离散对数问题相比,椭圆曲线离散对数问题的求解难度要大得多。因此,在相同安全程度要求下,椭圆曲线密码较其他公钥密码所需的密钥规模要小得多。

ECDSA优点证明:

1.在已知公钥的情况下,无法推导出该公钥对应的私

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值