鸿蒙源码分析(三十七)

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} d1 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=u1G+u2Q=u1G+u2kG=(u1+u2k)G  u1,u2 带入C=(ew+rwk)G=(e+rk)wG=(e+rk)s1G  s=d1(e+kr)modn 得出 s1=d(e+kr)1modn带入C=(e+kr)d(d+kr)1G=dG

三、参考文档

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值