国密SM2验签算法浅谈(一)

  • Post author:
  • Post category:其他



在测PBOC 3.0中的脱机数据国密认证中,发卡行公钥证书、IC卡公钥证书、签名的静态应用数据、签名的动态数据都会用到签名验签的功能。那么验签是怎么样的原理呢?在了解验签功能之前我们来了解下签名和验签是怎么回事,下面我们先来了解一些基本知识,直接上干货吧。



一、SM2算法基本知识




SM2




是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法。公钥密码算法属于


非对称加密算法,


常见的非对称加密算法还有:



RSA







Elgamal



、背包算法、Rabin、D-H、



ECC



(椭圆曲线加密算法)。非对称加密算法需要两个密钥:



公开密钥



(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只能用对应的私钥才能解密;反之,用私钥对数据进行加密,只能用对应的公钥才能解密。因为具备这种独特的加解密特性,非对称加密算法不仅可实现数据的加密传输,还能对数据进行签名和验签








SM2




算法是一种更先进安全的算法,采用是国密标准的椭圆曲线加密算法,









我们国家



商用密码



体系中被用来替换RSA算法。




1






椭圆曲线到底是什么样的




基于实数,




椭圆曲线看起来都是平滑,




如下图所示:




上面是两个不同椭圆曲线在坐标系中的几何表示


,


不过这个坐标系不是二维坐标系,而是射影坐标系。可以用空间思维想像一下


(


但是注意不是三维坐标系


),


打个比方,你晚上站在一个路灯前面,地上有你的影子,你本身是在一个二维坐标系


(


把你想像成一个纸片


)


,和你的影子一起构成一个射影坐标系。



曲线的每一个点


,


用三个参量表示


, (X,Y,Z)


。我们知道在二维坐标系里的每个图形都遵循一个方程,比如直接的二元一次方程是


y=kx+b,


圆的方程是


(x





a)2+(y





b)2=r2,


椭圆曲线在射影坐标系里也有自己的定义


:



Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3



所有椭圆曲线上的点都满足上述方程,


a1,a2,a3,a4,a6


是系数,决定曲线的形状和位置。



二维坐标和射影坐标有一个对应关系,即


x=X/Z, y=Y/Z,


这样就可以把上面的方程转成普通的二维坐标系方程


:



y2+a1xy+a3y= x3+a2x2+a4x+a6











2






离散的椭圆曲线





如果我们限制曲线的点都必须是整数,曲线就变成离散,如下图所示:



再进一步限制,要求整数必须大于


0,


小于某个大整数


P,


这样就形成了一个有限域


Fp.


然后我们在这个有限域里定义一些点与点之间的加减乘除运算规则,比如


A


点加


B


点得到


C





(


记做


A+B≡C (mod p))


,或者


A


点乘以


n


得到


K





(


记做


A×n≡K (mod p))


。至于具体规则细节可以不用关心,只要知道有这样的操作即可。



选一条曲线,比如



y2=x3+ax+b



把它定义在


Fp





,


要求


a,b


满足:



4a3+27b2≠0


(mod p)



我们把这样的曲线记为


Ep(a,b)



加解密是基于这样的数学难题,


K=kG


,其中


K,G





Ep(a,b)


上的点,


k


是整数,小于


G





(


注意区分,不是我们平常说的那个意思


)


的阶


(


不用关心什么是点的阶


)


。给定


k





G


,计算


K


很容易;但给定


K





G


,求


k


就困难了。这样,


G


就叫做基点,


k


是私钥,


K


是公钥。



最后总结。描述一条


Fp


上的椭圆曲线,有六个参量:



T=(p,a,b,G,n,h)






p





a





b


用来确定一条椭圆曲线,



G


为基点,



n


为点


G


的阶,



h


是椭圆曲线上所有点的个数


m





n


相除的整数部分。



基本知识就到这些。



版权声明:本文为zhuimenglushang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。