一种基于SM2加解密算法的签名验签系统和方法与流程

文档序号:11234378阅读:6849来源:国知局
一种基于SM2加解密算法的签名验签系统和方法与流程

本发明涉及网络空间安全的技术领域,尤其涉及到一种基于sm2加解密算法的签名验签系统和方法。



背景技术:

随着网络安全问题日趋严重,造成的影响越来越大,数字签名验签应运而生;数字签名可实现用户身份的可靠性;实现信息的完整性;确保数据在存储、传输和处理的过程中免遭任何非授权的或非预期的修改、插入、删除、重发等破坏,从而实现数据的真实性、有效性和一致性;实现抗抵赖性,通过数字签名确保信息的发送方不能抵赖曾经发送的信息,不能否认自己的操作行为。

sm2算法是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,其与rsa算法相比更先进安全,被应用于数字签名验签。

目前很多软件方法实现sm2签名验签步骤中的运算模块都采用了openssl安全套接字层密码库,该囊括主要的密码算法、常用的密钥和证书封装管理功能及ssl协议,并提供丰富的应用程序供测试或其它目的使用。但缺点是:(1)openssl被曝出现了严重安全漏洞,黑客可利用此漏洞直接对个人电脑发起“心脏出血”(heartbleed)攻击;windows上有大量软件使用了存在漏洞的openssl代码库,可能被黑客攻击抓取用户电脑上的内存数据,安全性较差。(2)单纯使用软件方法实现sm2签名验签,其运算速度较慢,不能满足用户的需求。

而若单纯地通过硬件实现签名验签,其不可操作性和较差的兼容性也决定了其跟不上多元化时代的步伐。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种软硬件协同合作、安全性高、可控性强、兼容性好、运算效率高的基于sm2加解密算法的签名验签系统。

为实现上述目的,本发明所提供的技术方案为:包括软件模块和硬件模块;所述硬件模块包括运算模块、寄存器以及随机数发生器;其中,

所述随机数发生器,产生用于算法的随机数、分别对明密文进行加解密的对称密钥、分别对对称密钥进行加解密的接收方公钥和私钥以及分别对摘要和数字签名进行加密和解密的发送方私钥和公钥;

所述运算模块,用于运算加解密过程中sm2、sm3以及sm4的算法;该三种算法均为国密算法,由国家密码局发布;其中,sm2算法为椭圆曲线公钥密码算法,sm2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,数字签名算法,密钥交换协议以及公钥加密算法都使用了国家密管理局批准的sm3算法和随机数发生器;sm3算法为杂凑算法,给出了杂凑函数算法的计算方法和计算步骤,适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求;sm4为对称算法,一个分组算法,用于无线局域网产品;解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

所述软件模块,用于实现签名验签功能;

所述寄存器,被软件模块访问调度运算模块。

为实现上述目的,本发明还提供一种用于基于sm2加解密算法的签名验签系统的方法,其包括签名加密和验签解密,其中,

签名加密包括以下步骤:

1)调用随机数发生器产生对称密钥、发送方公钥和私钥、接收方公钥和私钥;

2)软件模块通过访问寄存器调度运算模块进行sm4加密算法运算,使在对称密钥的基础上对所要发送的明文进行加密,得到报文密文;

3)软件模块通过访问寄存器调度运算模块进行sm2加密算法运算,使在接收方公钥的基础上对对称密钥进行加密,得到对称密钥密文;

4)软件模块通过访问寄存器调度运算模块对步骤2)得到的报文密文进行sm3算法运算,形成摘要;

5)软件模块通过访问寄存器调度运算模块进行sm2加密算法运算,使在发送方私钥的基础上对步骤4)形成的摘要进行加密,生成数字签名;

6)发送方将数字签名和报文密文一起发送给接收方;

验签解密包括以下步骤:

(1接收方接收发送过来的数字签名和报文密文;

(2软件模块通过访问寄存器调度运算模块对报文密文进行sm3算法运算,得到新的摘要;

(3软件模块通过访问寄存器调度运算模块进行sm2解密算法运算,使在发送方公钥的基础上对数字签名进行解密,得到原来的摘要;

(4对两个摘要进行对比,若相同则软件模块通过访问寄存器调度运算模块进行sm2解密算法运算,使在接收方私钥的基础上对对称密钥密文进行解密,得到对称密钥;

(5软件模块通过访问寄存器调度运算模块进行sm4算法运算,使在对称密钥的基础上对报文密文进行解密,得到明文。

进一步地,所述sm3算法由软硬件协同实现,其中,sm3算法由运算模块执行,过程如下:

1))填充

sm3对消息长度小于为2^64位进行运算,假设消息m的长度为l比特,先将比特“1”添加到消息的末尾,另添加k个“0”,k为满足l+1+k=448mod512的最小的非负整数,然后另添加一个64位比特串,该比特串为长度l的二进制表示,填充后的消息m′的比特长度为512的倍数;

2))迭代压缩

先进行消息扩展,之后迭代与压缩,其扩展与压缩计算以循环移位为主,并有异或计算,填充的消息经扩展后再进行64轮迭代,最后计算出杂凑结果;

sm3算法的软件调度部分如下:

通过配置硬件寄存器的地址,对所有的接口寄存器进行访问,其中需要调度的有状态寄存器、控制寄存器和数据寄存器;根据大小端的不同,将数据写入输入寄存器,通过对控制寄存器的操作实现相应的运算,对状态寄存器的读取,判断计算是否完成,在计算完成后读取输出寄存器的值作为输出。

进一步地,所述sm2加解密算法由软硬件协同实现,计算部分由运算模块实现,软件部分实现签名验签功能。

进一步地,所述sm2加解密算法实现签名验签过程中需要对输入数据进行预处理,预处理中用到的数据均采用大端表示法,在此过程中需要两次求得字节流的杂凑值,最终的杂凑值即明文的摘要作为签名函数的真正输入。

进一步地,所述sm2加解密算法包括模运算和点运算;其中,模运算包括模加、模减、模乘、模逆,模乘运算采用交错算法,模逆采用二进制欧拉算法,同时将模乘、模逆合并实现模逆乘;点运算包括点加、点乘、倍点运算,点加、倍点调度引入投影坐标,减少模逆的运算时间。

本方案原理及优点如下:

签名验签过程中产生的随机数由随机数发生器产生,极大地提高数据的安全性;方案中的运算部分均由硬件模块实现,软件模块实现签名验签功能,通过软硬件协同合作,相比于纯软件实现,极大地提高运算速度,相比于纯硬件实现的不可操作性,具有更强的可控、可编程、可移植性、兼容性。

附图说明

图1为本发明的加解密流程图;

图2为本发明中系统的结构示意图。

具体实施方式

下面结合具体实施例对本发明作进一步说明:

参见附图1-2所示,本实施例所述的一种基于sm2加解密算法的签名验签系统,包括软件模块1和硬件模块2;所述硬件模块2包括运算模块3、寄存器4以及随机数发生器5;其中,

所述随机数发生器5,产生用于算法的随机数、分别对明密文进行加解密的对称密钥、分别对对称密钥进行加解密的接收方公钥和私钥以及分别对摘要和数字签名进行加密和解密的发送方私钥和公钥;

运算模块3,用于运算加解密过程中sm2、sm3以及sm4的算法;

软件模块1,用于实现签名验签功能;

寄存器4,被软件模块1访问调度运算模块3。

签名加密时,经过以下步骤:

1)调用随机数发生器产生对称密钥、发送方公钥和私钥、接收方公钥和私钥;

2)软件模块1通过访问寄存器4调度运算模块3进行sm4加密算法运算,使在对称密钥的基础上对所要发送的明文进行加密,得到报文密文;

3)软件模块1通过访问寄存器4调度运算模块3进行sm2加密算法运算,使在接收方公钥的基础上对对称密钥进行加密,得到对称密钥密文;

4)软件模块1通过访问寄存器4调度运算模块3对步骤2)得到的报文密文进行sm3算法运算,形成摘要;

5)软件模块1通过访问寄存器4调度运算模块3进行sm2加密算法运算,使在发送方私钥的基础上对步骤4)形成的摘要进行加密,生成数字签名;

6)发送方将数字签名和报文密文一起发送给接收方;

签名加密时,经过以下步骤:

(1接收方接收发送过来的数字签名和报文密文;

(2软件模块1通过访问寄存器4调度运算模块3对报文密文进行sm3算法运算,得到新的摘要;

(3软件模块1通过访问寄存器4调度运算模块3进行sm2解密算法运算,使在发送方公钥的基础上对数字签名进行解密,得到原来的摘要;

(4对两个摘要进行对比,若相同则软件模块1通过访问寄存器4调度运算模块3进行sm2解密算法运算,使在接收方私钥的基础上对对称密钥密文进行解密,得到对称密钥;

(5软件模块1通过访问寄存器4调度运算模块3进行sm4算法运算,使在对称密钥的基础上对报文密文进行解密,得到明文。

本实施例中,sm2和sm3算法均由软硬件协同实现。其中,sm2算法由硬件模块2中的运算模块3执行,其加解密算法包括模运算和点运算,模运算包括模加、模减、模乘、模逆,模乘运算采用交错算法,模逆采用二进制欧拉算法,同时将模乘、模逆合并实现模逆乘;点运算包括点加、点乘、倍点运算,点加、倍点调度引入投影坐标,减少模逆的运算时间。

sm2加解密算法实现签名验签过程中需要对输入数据进行预处理,预处理中用到的数据均采用大端表示法,在此过程中需要两次求得字节流的杂凑值,最终的杂凑值即明文的摘要作为签名函数的真正输入。

而sm3算法由运算模块执行,过程如下:

1))填充

sm3对消息长度小于为2^64位进行运算,假设消息m的长度为l比特,先将比特“1”添加到消息的末尾,另添加k个“0”,k为满足l+1+k=448mod512的最小的非负整数,然后另添加一个64位比特串,该比特串为长度l的二进制表示,填充后的消息m′的比特长度为512的倍数;

3))迭代压缩

先进行消息扩展,之后迭代与压缩,其扩展与压缩计算以循环移位为主,并有异或计算,填充的消息经扩展后再进行64轮迭代,最后计算出杂凑结果;

sm3算法的软件调度部分如下:

通过配置硬件寄存器的地址,对所有的接口寄存器进行访问,其中需要调度的有状态寄存器、控制寄存器和数据寄存器;根据大小端的不同,将数据写入输入寄存器,通过对控制寄存器的操作实现相应的运算,对状态寄存器的读取,判断计算是否完成,在计算完成后读取输出寄存器的值作为输出。

本实施例中,签名验签过程中产生的随机数由随机数发生器产生,极大地提高了数据的安全性;方案中的运算部分均由硬件模块实现,软件模块实现签名验签功能,通过软硬件协同合作,相比于纯软件实现极大地提高了运算速度,相比于纯硬件实现的不可操作性,具有更强的可控、可编程、可移植性、兼容性。

以上所述之实施例子只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1