您当前的位置: 首页 > 

小生叫安辰

暂无认证

  • 4浏览

    0关注

    105博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

鸿蒙源码分析(二十九)

小生叫安辰 发布时间:2021-08-14 13:14:40 ,浏览量:4

ED25519签名算法机制

主要介绍安全密钥木块下的ed25519签名算法,为代码的标注提供理论储备。

一、知识介绍

Curve25519/Ed25519/X25519 是著名密码学家Daniel J. Bernstein在2006年独立设计的椭圆曲线加密/签名/密钥交换算法,与现有的任何椭圆曲线算法完全独立,其中Ed25519用于签名。 ED25519 是一种 EdDSA 算法,是一种在扭曲爱德华兹曲线(Twisted Edwards curves)上使用 Schnorr 机制来实现的一种数字签名机制。它具有速度快,密钥较短,安全性高等优点。

算法参数介绍

ed25519算法采用的曲线表达式:y^2 = x^3 + 486662x^2 + x, modulop=2^255-19 私钥长度:32字节。 公钥长度:32字节。 签名长度:64字节。

算法流程介绍

1.生成密钥对 私钥生成:使用随机数生成器来生成k作为私钥 公钥生成:

  1. 计算私钥的哈希: H ( k ) = ( h 0 , h 1 , … , h 2 b − 1 ) H(k)=\left(h_{0}, h_{1}, \ldots, h_{2 b-1}\right) H(k)=(h0​,h1​,…,h2b−1​)
  2. 生成整数: a = 2 b − 2 + ∑ 3 ⩽ i ⩽ b − 3 2 i h i ∈ { 2 b − 2 , 2 b − 2 + 8 , … , 2 b − 1 − 8 } a=2^{b-2}+\sum_{3 \leqslant i \leqslant b-3} 2^{i} h_{i} \in\left\{2^{b-2}, 2^{b-2}+8, \ldots, 2^{b-1}-8\right\} a=2b−2+∑3⩽i⩽b−3​2ihi​∈{2b−2,2b−2+8,…,2b−1−8}
  3. 生成公钥: A = a B A=a B A=aB 其中A为最后生成的公钥,该算法中b取256

2.生成签名 进行签名时,需要私钥k,执行公私钥生成算法,得到公钥 A和随机数。

  1. r = H ( h b , … , h 2 b − 1 , M ) r=H\left(h_{b}, \ldots, h_{2 b-1}, M\right) r=H(hb​,…,h2b−1​,M)
  2. R = r B R=r B R=rB
  3. S = ( r + H ( R , A , M ) a )   m o d   l S=(r+H(R, A, M) a) \bmod l S=(r+H(R,A,M)a)modl

最终签名(R,S)

3.签名验证 验证公式 8 S B = 8 R + 8 H ( R , A , M ) A 8 S B=8 R+8 H(R, A, M) A 8SB=8R+8H(R,A,M)A是否成立即可

算法特点
  • 完全开放设计。算法各参数非常明确,没有任何可疑之处。
  • 安全性高。 实践上最安全的加密算法
  • 速度快。25519系列曲线是目前最快的椭圆曲线加密算法,性能远远超过NIST系列。

相关参考资料 High-speed high-security signatures:ed25519算法签名机制详细描述。 https://mp.weixin.qq.com/s/-Pws7J_9DOvwxXJ-Ma9mig http://mathworld.wolfram.com/EllipticCurve.html

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

微信扫码登录

0.2106s