SM2签名算法简介及安全性分析

  本文主要论述SM2算法的基本理论,着重分析SM2的数字签名过程中存在的不安全步骤,分析其安全性原因。

椭圆曲线算数理论

  著名的维尔斯方程定义了椭圆曲线 E E E 在域 K K K 上的表现形式如下:
E : y 2 + a 1 x y + a 3 y = x 3 + a 2 x 2 + a 4 x + a 6 (1) E:y^2+a_1xy+a_3y=x^3+a_2x^2+a_4x+a_6 \tag{1} E:y2+a1xy+a3y=x3+a2x2+a4x+a6(1)
其中,
Δ = − d 2 2 d 8 − 8 d 4 3 − 27 d 6 2 + 9 d 2 d 4 d 8 \Delta = -d_2^2d_8-8d_4^3-27d_6^2+9d_2d_4d_8 Δ=d22d88d4327d62+9d2d4d8
d 2 = a 1 2 + 4 a 2 d_2 = a_1^2 + 4a_2 d2=a12+4a2
d 4 = 2 a 4 + a 1 a 3 d_4 = 2a_4+a_1a_3 d4=2a4+a1a3
d 6 = a 3 2 + 4 a 6 d_6 = a_3^2 + 4a_6 d6=a32+4a6
d 8 = a 1 2 a 6 + a 2 a 6 − a 1 a 3 a 4 + a 2 a 3 2 − a 4 2 d_8 = a_1^2a_6 + a_2a_6 - a_1a_3a_4 + a_2a_3^2 - a_4^2 d8=a12a6+a2a6a1a3a4+a2a32a42
系数 a 1 , a 2 , a 3 , a 4 , a 6 ∈ K a_1,a_2,a_3,a_4,a_6 \in K a1,a2,a3,a4,a6K, Δ ≠ 0 \Delta \neq 0 Δ=0, 保证曲线上点的切线至多2个,公式(1)称为Weierstrass方程,可以利用相容性变换进行简化,如,存在 u , r , s , t ∈ E u,r,s,t\in E u,r,s,tE, 且 u ≠ 0 u \neq 0 u=0,使得公式(2)满足, E 1 E_1 E1就可以变换成 E 2 E_2 E2:
E 1 : y 2 + a 1 x y + a 3 y = x 3 + a 2 x 2 + a 4 x + a 6 E_1:y^2+a_1xy+a_3y=x^3+a_2x^2+a_4x+a_6 E1:y2+a1xy+a3y=x3+a2x2+a4x+a6
E 2 : y 2 + a 1 ˉ x y + a 3 ˉ y = x 3 + a 2 ˉ x 2 + a 4 ˉ x + a 6 ˉ E_2:y^2+\bar{a_1}xy+\bar{a_3}y=x^3+\bar{a_2}x^2+\bar{a_4}x+\bar{a_6} E2:y2+a1ˉxy+a3ˉy=x3+a2ˉx2+a4ˉx+a6ˉ
( x , y ) → ( u x + r , u 3 y + u 2 s x + t ) (2) (x,y)\rightarrow (u^x + r, u^3y+u^2sx+t)\tag{2} (x,y)(ux+r,u3y+u2sx+t)(2)
E 1 E_1 E1 E 2 E_2 E2 称为域 K K K 上的同构曲线。
  SM2依赖于椭圆曲线上点的运算,又依赖于域的运算,域的选择可以使素数域也可以是二元域,接下来进行素数域 F p F_p Fp 进行研究,其中 p p p 代表大素数。

素域 F p F_p Fp上的基本计算

(1) 加法 ⊕ \oplus 的单位元为0
(2) 乘法 ⊗ \otimes 的单位元为1
(3) 域上的加法要模上素数 p p p,存在 a , b ∈ F p a,b\in F_p a,bFp,即, a + b = ( a + b ) m o d    p a + b = (a+b) \mod p a+b=(a+b)modp
(4) 域上的乘法要模上素数 p p p,存在 a , b ∈ F p a,b\in F_p a,bFp,即, a ⋅ b = ( a ⋅ b ) m o d    p a \cdot b = (a \cdot b) \mod p ab=(ab)modp

素域 F p F_p Fp上的群运算法则

   对椭圆曲线上 E ( F p ) E(F_p) E(Fp) 的点制定运算规则使其构成一个交换群,如在仿射坐标下的运算规则:
1)两个无穷远点 O O O 相加: O + O = O O+O=O O+O=O
2)点 P = ( x , y ) ∈ E ( F p ) ) \ { O } P=(x,y)\in E(F_p))\backslash \{O\} P=(x,y)E(Fp))\{ O}, P + O = O + P = P P+O=O+P=P P+O=O+P=P
3)点 P = ( x , y ) ∈ E ( F p ) ) \ { O } P=(x,y)\in E(F_p))\backslash \{O\} P=(x,y)E(Fp))\{ O} P P P的逆元 − P = ( x , − y ) -P = (x,-y) P=(x,y), P + ( − P ) = O P+(-P)=O P+(P)=O
4) 点加运算:
不同点 P 1 ∈ ( x 1 , y 1 ) ∈ E ( F p ) ) \ { O } , P 2 ∈ ( x 2 , y 2 ) ∈ E ( F p ) ) \ { O } P_1\in (x_1,y_1)\in E(F_p))\backslash \{O\}, P_2\in (x_2,y_2)\in E(F_p))\backslash \{O\} P1(x1,y1)E(Fp))\{ O},P2(x2,y2)E(Fp))\{ O} P 1 ≠ ± P 2 P_1 \neq \pm P_2 P1=±P2, 则 P 1 + P 2 = ( x 3 , y 3 ) P_1+P_2=(x_3,y_3) P1+P2=(x3,y3),其中
x 3 = ( y 2 − y 1 x 2 − x 1 ) 2 − x 1 − x 2 x_3 = (\frac{y_2-y_1}{x_2-x_1})^2-x_1-x_2 x3=(x2x1y2y1)2x1x2
y 3 = ( y 2 − y 1 x 2 − x 1 ) ( x 1 − x 3 ) − y 1 y_3 = (\frac{y_2-y_1}{x_2-x_1})(x_1-x_3)-y_1 y3=(x2x1y2y1)(x

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_74043383

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值