ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

ECC椭圆曲线算法(4)签名验证过程

2021-05-01 21:58:40  阅读:307  来源: 互联网

标签:椭圆 ECC 曲线 Alice 算法 rG 签名 Bob


1. 说明

Alice和Bob在通信的过程中,为了验证消息的来源,既消息确实是Alice发出来的。需要由Alice对消息使用自己的私钥生成一个签名hash,然后Bob用Alice的公钥进行验证,判断hash是否一样,从而知道签名是否正确。

2. 步骤

假设:

  • 基点:G
  • 私钥:k
  • 公钥:K =k *G
  • Message:M

step1. Alice 数据传送前的操作:生成公私钥对

step2. Alice

  • 选择随机数r
  • 计算点r*G,得到(x, y)
  • 根据消息求哈希h
  • 根据随机数r、消息M的哈希h、私钥k,计算s = (h + kx)/r.
  • 将消息M、签名{rG, s}、公钥K发给Bob

step3. Bob:收到消息M、以及签名{rG=(x,y), s}

  • 根据消息求哈希h
  • 使用发送方公钥K计算:hG/s + xK/s,并与rG比较,如相等即验签成功

hG/s + xK/s = hG/s + x(kG)/s = (h+xk)G/s = r(h+xk)G / (h+kx) = rG

在这里插入图片描述
注:

  • r值
    在选择随机数r的时候,真正的算法需要做一个判断,计算 r 值是否为0, 如果r == 0, 需要重新随机:r = x   mod  n
  • n值
    如果说椭圆曲线方程可用(CURVE, G, n)表示,其中CURVE表示椭圆曲线点域和几何方程;G是所有点倍积运算的基点;n是该椭圆曲线的可倍积阶数(multiplicative order),作为一个很大的质数,n的几何意义在于,nG 是阿贝尔群的单位元。
  • h值
    实际上需要对h值作一个转换,既是对h的二进制形式下最左边(即最高位)L_n个bits,而L_n是上述椭圆曲线参数中的可倍积阶数n的二进制长度。注意z 可能大于n,但长度绝对不会比 n 更长
    在这里插入图片描述

【参考】

  1. 密码学系列 - 椭圆曲线 ECDSA - 签名与验签 csdn
  2. Elliptic Curve Digital Signature Algorithm Wikipedia

标签:椭圆,ECC,曲线,Alice,算法,rG,签名,Bob
来源: https://blog.csdn.net/thefist11cc/article/details/116332455

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有