椭圆曲线数字签名算法(ECDSA)

椭圆曲线数字签名算法(ECDSA)

首先,我们给出ECDSA处理过程的简要概述。本质上,包括四个基本要素:

  1. 参与数字签名的所有通信方都使用相同的全局域参数,用定义椭圆曲线以及曲线上的基点
  2. 签名者首先需要生成一对公钥、私钥。对于私钥,签名者选择一个随机数或者伪随机数作为签名者的私钥。使用随机数和基点,签名者计算出椭圆曲线上的另一解点,作为签名者的公钥
  3. 对于待签名的消息计算其hash值。使用私钥、全局域参数、hash值来产生签名、签名包括两个整数,r和s
  4. 如果要对签名进行验证,验证者使用签名者的公钥、全局域参数、整数s作为输入,并将计算得到的输出值v与收到的r进行比较。如果v=r,则签名通过

接下来,我们依次介绍这四个基本元素

全局域参数

可用于密码应用的椭圆曲线有两类:上的素数域椭圆曲线和上的二次域椭圆曲线。对于ECDSA使用素数域椭圆曲线。ECDSA的全局域参数入戏:

q           一个素数

a,b    上的整数,通过等式来定义椭圆曲线

G         满足椭圆曲线等式的基点,表示为

n         点G的阶,即n是满足nG=0 的最小正整数。这也等于曲线上点的个数

 密钥产生

每个签名者需要产生一个密钥对,包括一个私钥和一个公钥。签名者,假设是Bob,通过以下步骤产生上述两个密钥:

  1. 选择随机整数d,
  2. 计算Q=dG。得到一个曲线上的解点
  3. Bob的公钥是Q,私钥是d

数字签名的产生与认证

通过使用公开的全局域参数和手中的私钥,Bob对于消息m产生320字节数字签名的步骤如下:

  1. 选择一个随机整数或伪随机整数k,
  2. 计算曲线的解点p=(x,y)=kG,以及r =x mod n 。如果r=0,则跳到步骤1
  3. 计算 
  4. 计算e=H(m)。这里的H是hash函数SHA-2或SHA-3
  5. 计算 如果s=0,则跳到步骤1
  6. 消息m的签名是(r,s)对

Alice拥有公开的全局域参数以及Bob的公钥,Alice收到Bob发送的消息以及数字签名后,对于签名的验证步骤如下:

  1. 检查r和s是否为1到n-1之内的整数
  2. 使用SHA,计算160位的hash值e=H(m)
  3. 计算
  4. 计算 和 
  5. 计算解点
  6. 当且晋档v=r时,接受Bob的签名

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值