您当前的位置: 首页 > 

小生叫安辰

暂无认证

  • 5浏览

    0关注

    105博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

鸿蒙源码分析(三十七)

小生叫安辰 发布时间:2021-08-22 16:55:45 ,浏览量:5

ECDSA算法介绍

本篇主要介绍hks_mbedtls_ecdsa.c中涉及到的加密和签名算法过程。

一、相关代码

hks_mbedtls_ecdsa.c代码分析

二、算法介绍

ECDSA(Elliptic Curve Digital Signature Algorithm),椭圆曲线数字签名算法。 椭圆曲线数字签名生成 假设Alice希望对消息m mm进行签名,所采用的椭圆曲线参数为D = ( p , a , b , G , n , h ) D=(p,a,b,G,n,h)D=(p,a,b,G,n,h),对应的密钥对为( k , Q ) (k,Q)(k,Q),其中Q QQ为公钥,k kk为私钥。 Alice将按如下步骤进行签名: 在这里插入图片描述

其中 d − 1 d^{-1} d−1 is the multiplicative inverse of d modulo n.逆元。 签名的验证 为验证Alice对消息m mm的签名( r , s ) ,Bob需要得到Alice所用的椭圆曲线参数D = (p,a,b,G,n,h)以及Alice的公钥Q 在这里插入图片描述 正确性验证 要证明v=r,只需要证明X=dG即可。  令:  C = u 1 G + u 2 Q = u 1 G + u 2 k G = ( u 1 + u 2 k ) G  将  u 1 , u 2  带入:  C = ( e w + r w k ) G = ( e + r k ) w G = ( e + r k ) s − 1 G  由  s = d − 1 ( e + k r )   m o d   n  得出  s − 1 = d ( e + k r ) − 1   m o d   n , 带入:  C = ( e + k r ) d ( d + k r ) − 1 G = d G \begin{aligned} &\text { 令: } C=u_{1} G+u_{2} Q=u_{1} G+u_{2} k G=\left(u_{1}+u_{2} k\right) G\\ &\text { 将 } u_{1}, u_{2} \text { 带入: } C=(e w+r w k) G=(e+r k) w G=(e+r k) s^{-1} G\\ &\text { 由 } s=d^{-1}(e+k r) \quad \bmod n \text { 得出 } s^{-1}=d(e+k r)^{-1} \bmod n \text {, 带入: }\\ &C=(e+k r) d(d+k r)^{-1} G=d G \end{aligned} ​ 令: C=u1​G+u2​Q=u1​G+u2​kG=(u1​+u2​k)G 将 u1​,u2​ 带入: C=(ew+rwk)G=(e+rk)wG=(e+rk)s−1G 由 s=d−1(e+kr)modn 得出 s−1=d(e+kr)−1modn, 带入: C=(e+kr)d(d+kr)−1G=dG​

三、参考文档

主要是参考wikipedia相关知识介绍。文档链接如下: Elliptic Curve Digital Signature Algorithm Elliptic Curve Cryptography: ECDH and ECDSA

关注
打赏
1635606302
查看更多评论
立即登录/注册

微信扫码登录

0.0462s