CN110990896A - 基于sm2白盒的数字签名装置、方法、存储介质及设备 - Google Patents
基于sm2白盒的数字签名装置、方法、存储介质及设备 Download PDFInfo
- Publication number
- CN110990896A CN110990896A CN201911221653.1A CN201911221653A CN110990896A CN 110990896 A CN110990896 A CN 110990896A CN 201911221653 A CN201911221653 A CN 201911221653A CN 110990896 A CN110990896 A CN 110990896A
- Authority
- CN
- China
- Prior art keywords
- component
- random number
- lookup table
- sub
- signature
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种基于SM2白盒的数字签名装置、方法、存储介质及设备,包括:随机数生成器生成随机数k′;椭圆曲线点加计算器利用随机数向量和随机数k′计算得到(x,y);消息压缩处理器用于将待签名消息按SM2签名算法规范进行杂凑运算得到杂凑运算结果,进而结合(x,y)中的x分量得到r分量;第一计算模块利用随机数k′计算出第一s子分量;第二计算模块利用r分量计算出第二s子分量;第三计算模块利用随机数k′和r分量计算第三s子分量和第四s子分量;第四计算模块利用第一s子分量、第二s子分量、第三s子分量和第四s子分量确定s分量。本申请能够有效地保证SM2签名算法在不可信终端上运行时的签名私钥的安全性。
Description
技术领域
本发明涉及数字签名技术方案,具体地,涉及一种基于SM2白盒的数字签名装置、方法、存储介质及设备。
背景技术
随着网络和智能终端的发展,许多隐私数据或版权数据在终端上被读取并处理。攻击者或者恶意用户可以在终端上监控密码模块的运行,然后通过逆向工程、获取密码算法的中间计算结果等方式来破解出密码算法的密钥。例如,当使用SM2(椭圆曲线公钥密码算法)签名算法进行数字签名时,如果此时运行上述SM2签名算法的终端不可信,那么上述SM2签名算法在运行过程中所采用的签名私钥将会面临泄漏的风险。
为此,如何保证SM2签名算法在不可信终端上运行时的签名私钥的安全性是目前有待解决的。
发明内容
有鉴于此,本申请的目的在于提供一种基于SM2白盒的数字签名装置、方法、存储介质及设备,能够有效地保证SM2签名算法在不可信终端上运行时的签名私钥的安全性。其具体方案如下:
第一方面,本申请提供了一种基于SM2白盒的数字签名装置,包括随机数生成器、椭圆曲线点加计算器、消息压缩处理器、第一计算模块、第二计算模块、第三计算模块和第四计算模块;其中,
所述随机数生成器,用于生成随机数k′,并将所述随机数k′传送至所述椭圆曲线点加计算器、所述第一计算模块和所述第三计算模块;
所述椭圆曲线点加计算器,用于利用自身内部的随机数向量和所述随机数k′,计算得到(x,y);其中,(x,y)=k′·T1;k′表示所述随机数,T1表示所述随机数向量,·表示向量点乘;
所述消息压缩处理器,用于获取待签名消息,按SM2签名算法规范进行杂凑运算以得到相应的杂凑运算结果,然后根据所述杂凑运算结果和所述(x,y)中的x分量得到签名结果中的r分量,并将所述r分量传送至所述第二计算模块和所述第三计算模块;
所述第一计算模块,用于利用所述随机数k′,计算出所述签名结果中的第一s子分量,并将所述第一s子分量传送至所述第四计算模块;
所述第二计算模块,用于利用所述r分量,计算出所述签名结果中的第二s子分量,并将所述第二s子分量传送至所述第四计算模块;
所述第三计算模块,用于利用所述随机数k′和所述r分量,计算出所述签名结果中的第三s子分量和第四s子分量,并将所述第三s子分量和所述第四s子分量传送至所述第四计算模块;
所述第四计算模块,用于利用所述第一s子分量、所述第二s子分量、所述第三s子分量和所述第四s子分量,确定出所述签名结果中的s分量。
可选地,所述第一计算模块的内部设有第一向量和第一查找表,具体用于利用所述随机数k′、所述第一向量和所述第一查找表计算出所述签名结果中的第一s子分量。
可选地,所述第二计算模块的内部设有第二向量和第二查找表,具体用于利用所述r分量、所述第二向量和所述第二查找表计算出所述签名结果中的第二s子分量。
可选地,所述第三计算模块的内部设有第三查找表,具体用于利用所述随机数k′、所述r分量和所述第三查找表,计算出所述签名结果中的第三s子分量和第四s子分量。
可选地,所述第四计算模块的内部设有第四查找表、第五查找表和第六查找表,具体用于利用所述第一s子分量、所述第三s子分量和所述第四查找表计算得到第一临时结果,利用所述第二s子分量、所述第四s子分量和所述第五查找表计算得到第二临时结果,然后利用所述第一临时结果、所述第二临时结果和所述第六查找表计算得到所述签名结果中的s分量。
可选地,所述数字签名装置,还包括初始化模块;其中,所述初始化模块,包括:
秘密参数生成单元,用于随机生成秘密参数;
第一生成单元,用于利用所述秘密参数生成所述椭圆曲线点加计算器的所述随机数向量;
第二生成单元,用于生成所述第一计算模块内部的所述第一向量和所述第一查找表;
第三生成单元,用于生成所述第二计算模块内部的所述第二向量和所述第二查找表;
第四生成单元,用于生成所述第三计算模块内部的所述第三查找表;
第五生成单元,用于生成所述第四计算模块内部的所述第四查找表、所述第五查找表和所述第六查找表;
信息整理单元,用于保存所述随机数向量、所述第一向量、所述第二向量、所述第一查找表、所述第二查找表、所述第三查找表、所述第四查找表、所述第五查找表和所述第六查找表,并删除其他信息,以完成初始化操作。
可选地,所述第一生成单元具体用于根据随机数空间的实际需求量生成所述随机数向量。
第二方面,本申请提供了一种基于SM2白盒的数字签名方法,包括:
通过随机数生成器生成随机数k′;
通过椭圆曲线点加计算器利用自身内部的随机数向量和所述随机数k′,计算得到(x,y);其中,(x,y)=k′·T1;k′表示所述随机数,T1表示所述随机数向量,·表示向量点乘;
通过消息压缩处理器获取待签名消息,按SM2签名算法规范进行杂凑运算以得到相应的杂凑运算结果,然后根据所述杂凑运算结果和所述(x,y)中的x分量得到签名结果中的r分量;
通过第一计算模块利用所述随机数k′,计算出所述签名结果中的第一s子分量;通过第二计算模块利用所述r分量,计算出所述签名结果中的第二s子分量;通过第三计算模块利用所述随机数k′和所述r分量,计算出所述签名结果中的第三s子分量和第四s子分量;通过第四计算模块利用所述第一s子分量、所述第二s子分量、所述第三s子分量和所述第四s子分量,确定出所述签名结果中的s分量。
第三方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述基于SM2白盒的数字签名方法的步骤。
第四方面,本申请提供了一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现前述基于SM2白盒的数字签名方法的步骤。
可见,本申请在进行SM2数字签名时,分别生成了签名结果中的r分量和s分量。其中,在生成上述r分量和s分量的过程中并没有出现明文形式的签名密钥,并且,本申请中,上述签名结果的s分量被划分成四个子分量来分别进行计算,每个子分量均可以得到编码保护,因此,本申请通过上述方案,能够有效地保证了签名私钥的安全性,即便是在不可信终端上进行上述数字签名过程,也能够有效防止外界破解签名密钥的事件发生。与此同时,本申请中的上述技术方案,还具体以下效果:能够适合在单一终端上独立完成SM2签名过程,无需由多个终端联合起来才能够完成运算过程,从而拓宽了应用场景,并且本申请的技术方案具有标准的签名结果,对应的验签过程与SM2标准算法的验签过程相同,可用于直接替换现有的SM2签名算法。而且,从实际的运行效果来看,本方案所需的存储空间较低、运行效率较高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种基于SM2白盒的数字签名装置结构示意图;
图2为本申请公开的一种具体的基于SM2白盒的数字签名装置结构示意图;
图3为本申请公开的第三查找表的信息输入输出示意图;
图4为本申请公开的一种基于SM2白盒的数字签名方法流程图;
图5为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,随着网络和智能终端的发展,许多隐私数据或版权数据在终端上被读取并处理。攻击者或者恶意用户可以在终端上监控密码模块的运行,然后通过逆向工程、获取密码算法的中间计算结果等方式来破解出密码算法的密钥。例如,当使用SM2签名算法进行数字签名时,如果此时运行上述SM2签名算法的终端不可信,那么上述SM2签名算法在运行过程中所采用的签名私钥将会面临泄漏的风险。为此,本申请提供了一种基于SM2白盒的数据签名方案,能够有效保证SM2签名算法在不可信终端上运行时的签名私钥的安全性。
参见图1所示,本发明实施例公开了一种基于SM2白盒的数字签名装置,包括随机数生成器11、椭圆曲线点加计算器12、消息压缩处理器13、第一计算模块14、第二计算模块15、第三计算模块16和第四计算模块17;其中,
所述随机数生成器11,用于生成随机数k′,并将所述随机数k′传送至所述椭圆曲线点加计算器12、所述第一计算模块14和所述第三计算模块16;
所述椭圆曲线点加计算器12,用于利用自身内部的随机数向量和所述随机数k′,计算得到(x,y);其中,(x,y)=k′·T1;k′表示所述随机数,T1表示所述随机数向量,·表示向量点乘;
所述消息压缩处理器13,用于获取待签名消息,按SM2签名算法规范进行杂凑运算以得到相应的杂凑运算结果,然后根据所述杂凑运算结果和所述(x,y)中的x分量得到签名结果中的r分量,并将所述r分量传送至所述第二计算模块15和所述第三计算模块16;
所述第一计算模块14,用于利用所述随机数k′,计算出所述签名结果中的第一s子分量,并将所述第一s子分量传送至所述第四计算模块17;
所述第二计算模块15,用于利用所述r分量,计算出所述签名结果中的第二s子分量,并将所述第二s子分量传送至所述第四计算模块17;
所述第三计算模块16,用于利用所述随机数k′和所述r分量,计算出所述签名结果中的第三s子分量和第四s子分量,并将所述第三s子分量和所述第四s子分量传送至所述第四计算模块17;
所述第四计算模块17,用于利用所述第一s子分量、所述第二s子分量、所述第三s子分量和所述第四s子分量,确定出所述签名结果中的s分量。
可见,本申请实施例在进行SM2数字签名时,分别生成了签名结果中的r分量和s分量。其中,在生成上述r分量和s分量的过程中并没有出现明文形式的签名密钥,并且,本申请实施例中,上述签名结果的s分量被划分成四个子分量来分别进行计算,每个子分量均可以得到编码保护,因此,本申请实施例通过上述方案,能够有效地保证了签名私钥的安全性,即便是在不可信终端上进行上述数字签名过程,也能够有效防止外界破解签名密钥的事件发生。与此同时,本申请实施例中的上述技术方案,还具体以下效果:能够适合在单一终端上独立完成SM2签名过程,无需由多个终端联合起来才能够完成运算过程,从而拓宽了应用场景,并且本申请实施例的技术方案具有标准的签名结果,对应的验签过程与SM2标准算法的验签过程相同,可用于直接替换现有的SM2签名算法。而且,从实际的运行效果来看,本方案所需的存储空间较低、运行效率较高。
在前述实施例公开的技术方案的基础上,本申请实施例对技术方案进行了进一步的说明和优化。具体的:
本实施例中,所述第一计算模块的内部设有第一向量和第一查找表,具体用于利用所述随机数、所述第一向量和所述第一查找表计算出所述签名结果中的第一s子分量。也即,本实施例具体可以使用查找表来计算出第一s子分量,以此实现对该计算结果的编码保护。
所述第二计算模块的内部设有第二向量和第二查找表,具体用于利用所述r分量、所述第二向量和所述第二查找表计算出所述签名结果中的第二s子分量。也即,本实施例具体可以使用查找表来计算出第二s子分量,以此实现对该计算结果的编码保护。
所述第三计算模块的内部设有第三查找表,具体用于利用所述随机数、所述r分量和所述第三查找表,计算出所述签名结果中的第三s子分量和第四s子分量。也即,本实施例具体可以使用查找表来计算出第三s子分量和第四s子分量,以此实现对该计算结果的编码保护。
所述第四计算模块的内部设有第四查找表、第五查找表和第六查找表,具体用于利用所述第一s子分量、所述第三s子分量和所述第四查找表计算得到第一临时结果,利用所述第二s子分量、所述第四s子分量和所述第五查找表计算得到第二临时结果,然后利用所述第一临时结果、所述第二临时结果和所述第六查找表计算得到所述签名结果中的s分量。也即,本实施例具体可以使用查找表来计算出最终的s分量,以此实现对该计算结果的编码保护。
进一步的,本实施例中的所述数字签名装置,还可以包括初始化模块;其中,所述初始化模块,具体可以包括:
秘密参数生成单元,用于随机生成秘密参数;
第一生成单元,用于利用所述秘密参数生成所述椭圆曲线点加计算器的所述随机数向量;
第二生成单元,用于生成所述第一计算模块内部的所述第一向量和所述第一查找表;
第三生成单元,用于生成所述第二计算模块内部的所述第二向量和所述第二查找表;
第四生成单元,用于生成所述第三计算模块内部的所述第三查找表;
第五生成单元,用于生成所述第四计算模块内部的所述第四查找表、所述第五查找表和所述第六查找表;
信息整理单元,用于保存所述随机数向量、所述第一向量、所述第二向量、所述第一查找表、所述第二查找表、所述第三查找表、所述第四查找表、所述第五查找表和所述第六查找表,并删除其他信息,以完成初始化操作。
可以理解的是,本实施例中,上述生成所述第一查找表、所述第二查找表、所述第三查找表、所述第四查找表的过程,实质上便是所述第一查找表、所述第二查找表、所述第三查找表、所述第四查找表各自的初始化过程。
其中,为了保证具有足够的随机数空间,本实施例中的所述第一生成单元具体可以用于根据随机数空间的实际需求量生成所述随机数向量。
参见图2所示,本申请实施例公开了一种具体的基于SM2白盒的数字签名装置,包括以下部件:
随机数生成器Rand_k、椭圆曲线点加计算器ECC_Add、消息压缩处理器M_Hash_r、第一计算模块TA、第二计算模块TB、第三计算模块Lookup_Table_C和第四计算模块Lookup_Table_D。
其中,基于上述各个部件的签名过程WBSM2_Sig,对应的输入、输出以及运行过程具体如下:
1.输入:待签名消息M;
2.输出:签名(r,s);
3.运行过程:
a)Rand_k部件生成256随机数k′=k0k1…k255,并将k′传送至ECC_Add、TA、Lookup_Table_C部件;
b)ECC_Add部件计算(x,y)=k′·T1,并将(x,y)传送至M_Hash_r部件;其中,T1表示ECC_Add部件内部的随机数向量;
c)M_Hash_r部件置计算r=x+e,并输出r,同时将r传送至TB,Lookup_Table_C部件;其中,ZA表示关于用户A的可辨别标识、部分椭圆曲线***参数和用户A公钥的杂凑值,||表示拼接符号,Hv表示消息摘要长度为v比特的密码杂凑算法;
d)TA部件计算s1=TA(k′),并将s1传送至Lookup_Table_D部件;其中,s1表示s分量中的第一s子分量,关于s1=TA(k′)的具体运算过程会在下文进行说明;
e)TB部件计算s2=TB(r),并将s2传送至Lookup_Table_D部件;其中,s2表示s分量中的第二s子分量,关于s2=TB(r)的具体运算过程会在下文进行说明;
f)Lookup_Table_C部件计算(s3,s4)=Lookup_table_C(k,r),并将s3,s4传送至Lookup_Table_D部件;其中,s3和s4分别表示s分量中的第三s子分量和第四s子分量,(s3,s4)=Lookup_table_C(k,r)的具体运算过程会在下文进行说明;
g)Lookup_Table_D部件计算s=Lookup_table_D(s1,s2,s3,s4),并输出s;其中,s=Lookup_table_D(s1,s2,s3,s4)的具体运算过程会在下文进行说明。
其中,与s1=TA(k′)对应的运算过程中,对应的输入、输出以及运行过程具体如下:
输入:k′=(k255,k254,…,k0);
输出:s1;
运算过程:
其中,Ai=F((1+dA)-1Ki+ui),i=0,1,…,255,K255,K254,…,K0为预先选定的256个随机数,与ECC_Add部件中的相同,u255,u254,…,u0为预先选定的256个随机数,F=f63||f62||…||f0,fj为随机生成的4比特置换,dA表示私钥,Lookup_Table_A表示前一实施例公开的所述第一查找表。另外,前一实施例公开的所述第一向量在此处具体可以表示为A=(A255,A254,…,A0)。综上可见,本实施例中,TA部件的输入为k′=(k255,k254,…,k0),ki∈{0,1},输出为签名结果中s分量的第一s子分量。另外,所述第一查找表Lookup_Table_A的初始化过程为:Lookup_Table_A=INITIAL_MADD(F-1,F-1,F)。
另外,与s2=TB(r)对应的运算过程中,对应的输入、输出以及运行过程具体如下:
输入:r=(r255,r254,…,r0);
输出:s2;
运算过程:
其中,Bi=G(-(1+dA)-1dA·2i+vi),i=0,1,…,255,v255,v254,…,v0为预先选定的256个随机数,G=g63||g62||…||g0,gj为随机生成的4比特置换。dA表示私钥,Lookup_Table_B表示前一实施例公开的所述第二查找表。另外,前一实施例公开的所述第二向量在此处具体可以表示为B=(B255,B254,…,B0)。综上可见,本实施例中,TB部件的输入为r分量,输出为签名结果中s分量的第二s子分量。另外,所述第二查找表Lookup_Table_B的初始化过程为:Lookup_Table_B=INITIAL_MADD(G-1,G-1,G)。
进一步的,与(s3,s4)=Lookup_table_C(k,r)对应的运算过程中,对应的输入、输出以及运行过程具体如下:
其中,T0,i和Ti,j均为位于前一实施例中提到的所述第三查找表中的查找表。
具体的,所述第三查找表为:
T0,0,T0,1,…,T0,63,T1,0,T1,1,…,T1,31,T2,0,T2,1,…,T2,15,T3,0,T3,1,…,T3,7,T4,0,T4,1,T4,2,T4,3,T5,0,T5,1
参见图3所示,图3示出了所述第三查找表的输入输出信息。其中,查找表T0,j的输入信息xj=k4jk4j+1k4j+k4j+3r4jr4j+1r4j+2r4j+,kj,rj分别为rand_k,r的第j比特。
以下逐一说明Lookup_table_C中每个查找表的输入输出及构造方式。
1)T0,j;j=0,1,…,63;
T0,j的构造方式如下:
y=F0,j(x0·u4j+x1·u4j+1+x2·u4j+2+x3·u4j+3+x4·v4j+x5·v4j+1+x6·v4j+2+x7·v4j+3)
其中,F0,j=f0,j,0||f0,j,1||…||f0,j,63,;f0,j,k为随机生成的4比特置换。
T0,j运算过程如下:
2.zi=T0,j(ki,ri)
2)Ti,j;i=1,2,…,5,j=0,1,…,26-i-1
Ti,j的构造过程如下:
Ti,j的运行过程如下:
算法:z=MADD(x,y,Ti,j);
进一步的,与s=Lookup_table_D(s1,s2,s3,s4)对应的运算过程中,对应的输入、输出以及运行过程具体如下:
输入:s1,s2,s3,s4;
输出:s;
运算过程:
s=Lookup_table_D(s1,s2,s3,s4)
1.tmp1=MADD(s1,s3,Lookup_table_D1)
2.tmp2=MADD(s2,s4,Lookup_table_D2)
3.s=MADD(tmp1,tmp2,Lookup_table_D3)
其中,Lookup_table_D1、Lookup_table_D2和Lookup_table_D3分别表示前一实施例公开的所述第四查找表、所述第五查找表和所述第六查找表。其中,所述第四查找表、所述第五查找表和所述第六查找表的初始化过程为:
Lookup_table_D3=INITIAL_MADD(F′-1,G′-1,I);
其中,I表示恒等映射。
本实施例中,需要进一步指出的是,有关模加运算查找表的初始化过程和运行过程,具体如下:
给定映射F,G,H,其中F=f63||f62||…||f0,G=g63||g62||…||g0,H=h63|| h62||…|| h0,完成z′=H(F-1(x′)+G-1(y′)mod p)运算,其中,x′、y′表示输入变量,以根据上述表达式计算出z′,初始化过程即输入映射F-1,G-1,H,生成一系列查找表以实现上述运算过程。
其中,查找表初始化过程如下:
T=INITIAL_MADD(F-1,G-1,H):
update(tγ)
update(tγ′)
T={Madd0,…,Madd63,Modp0,…,Modp63}
运算过程如下:
算法:
本实施例中,tγ表示一个256比特随机数,update(tγ)表示随机生成256比特随机数,并使用tγ表示该随机数;表示异或运算符;“5,4L”表示将括号内的值看作5比特向量,并截取低4比特的值;“5,1H”表示将括号内的值看作5比特向量,并截取高1比特的值;α与x,y类似,同样表示构造查找表时的输入变量,即遍历(x,y,α),根据上述相应表达式计算出z,并按顺序存储z,从而生成该查找表;tγ′表示256比特随机数,update(tγ′)表示随机生成256比特随机数,并使用tγ′表示该随机数;p′k表示2256-p的第k个4比特值,其中p为SM2签名算法所选参数中的模数。
本实施例中,对图2中的各个部件进行初始化的过程中,对应的输入、输出以及具体初始化过程INITIAL_WBSM2_Sig包括:
1.输入:私钥dA;
2.输出:ECC_Add,A,B,Lookup_table_A,Lookup_table_B,Lookup_table_C与Lookup_table_D;
3.初始化过程:
a)随机生成秘密参数K0,K1,…,K255;
b)生成ECC_Add部件内部信息,即计算随机数向量T1=([K0]G,[K1]G,…,[K255]G);需要指出的是,此处的G是SM2签名算法参数中的椭圆曲线上的基点,不同于前述的映射G。
c)生成TA,即计算向量A,并生成查找表Lookup_table_A;
d)生成TB,即计算向量B,并生成查找表Lookup_table_B;
e)生成查找表Lookup_table_C;
f)生成查找表Lookup_table_D;
g)存储向量T1,A,B与查找表Lookup_table_A,Lookup_table_B,Lookup_table_C,Lookup_table_D,删除其它信息,完成初始化。
在初始化阶段,由私钥dA依次初始化图中的每个部件,在签名过程,获取到待签名消息M,根据图中的初始化后的信息计算出与待签名消息M对应的签名(r,s)。
参见图4所示,本申请实施例还公开了一种基于SM2白盒的数字签名方法,包括:
步骤S11:通过随机数生成器生成随机数k′;
步骤S12:通过椭圆曲线点加计算器利用自身内部的随机数向量和所述随机数k′,计算得到(x,y);其中,(x,y)=k′·T1;k′表示所述随机数,T1表示所述随机数向量,·表示向量点乘;
步骤S13:通过消息压缩处理器获取待签名消息,按SM2签名算法规范进行杂凑运算以得到相应的杂凑运算结果,然后根据所述杂凑运算结果和所述(x,y)中的x分量得到签名结果中的r分量;
步骤S14:通过第一计算模块利用所述随机数k′,计算出所述签名结果中的第一s子分量;
步骤S15:通过第二计算模块利用所述r分量,计算出所述签名结果中的第二s子分量;
步骤S16:通过第三计算模块利用所述随机数k′和所述r分量,计算出所述签名结果中的第三s子分量和第四s子分量;
步骤S17:通过第四计算模块利用所述第一s子分量、所述第二s子分量、所述第三s子分量和所述第四s子分量,确定出所述签名结果中的s分量。
可见,本申请在进行SM2数字签名时,分别生成了签名结果中的r分量和s分量。其中,在生成上述r分量和s分量的过程中并没有出现明文形式的签名密钥,并且,本申请中,上述签名结果的s分量被划分成四个子分量来分别进行计算,每个子分量均可以得到编码保护,因此,本申请通过上述方案,能够有效地保证了SM2签名私钥的安全性,即便是在不可信终端上进行上述SM2数字签名过程,也能够有效防止外界破解签名密钥的事件发生。与此同时,本申请中的上述技术方案,还具体以下效果:能够适合在单一终端上独立完成SM2签名过程,无需由多个终端联合起来才能够完成运算过程,从而拓宽了应用场景,并且本申请实施例的技术方案具有标准的签名结果,对应的验签过程与SM2标准算法的验签过程相同,可用于直接替换现有的SM2签名算法。而且,从实际的运行效果来看,本方案所需的存储空间运行效率较高。
图5是根据一示例性实施例示出的一种电子设备20的框图。如图5所示,该电子设备20可以包括:处理器21,存储器22。该电子设备20还可以包括多媒体组件23,输入/输出(I/O)接口24,以及通信组件25中的一者或多者。
其中,处理器21用于控制该电子设备20的整体操作,以完成上述的基于SM2白盒的数字签名方法中的全部或部分步骤。存储器22用于存储各种类型的数据以支持在该电子设备20的操作,这些数据例如可以包括用于在该电子设备20上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器22可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件23可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器22或通过通信组件25发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口704为处理器21和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件25用于该电子设备20与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件25可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备20可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的基于SM2白盒的数字签名方法。
在另一示例性实施例中,还提供了一种存储有计算机程序的计算机可读存储介质,该程序被处理器执行时实现上述的基于SM2白盒的数字签名方法的步骤。例如,该计算机可读存储介质可以为上述包括程序的存储器22,上述程序可由电子设备20的处理器21执行以完成上述的基于SM2白盒的数字签名方法。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的基于SM2白盒的数字签名装置、方法、存储介质及设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种基于SM2白盒的数字签名装置,其特征在于,包括随机数生成器、椭圆曲线点加计算器、消息压缩处理器、第一计算模块、第二计算模块、第三计算模块和第四计算模块;其中,
所述随机数生成器,用于生成随机数k′,并将所述随机数k′传送至所述椭圆曲线点加计算器、所述第一计算模块和所述第三计算模块;
所述椭圆曲线点加计算器,用于利用自身内部的随机数向量和所述随机数k′,计算得到(x,y);其中,(x,y)=k′·T1;k′表示所述随机数,T1表示所述随机数向量,·表示向量点乘;
所述消息压缩处理器,用于获取待签名消息,按SM2签名算法规范进行杂凑运算以得到相应的杂凑运算结果,然后根据所述杂凑运算结果和所述(x,y)中的x分量得到签名结果中的r分量,并将所述r分量传送至所述第二计算模块和所述第三计算模块;
所述第一计算模块,用于利用所述随机数k′,计算出所述签名结果中的第一s子分量,并将所述第一s子分量传送至所述第四计算模块;
所述第二计算模块,用于利用所述r分量,计算出所述签名结果中的第二s子分量,并将所述第二s子分量传送至所述第四计算模块;
所述第三计算模块,用于利用所述随机数k′和所述r分量,计算出所述签名结果中的第三s子分量和第四s子分量,并将所述第三s子分量和所述第四s子分量传送至所述第四计算模块;
所述第四计算模块,用于利用所述第一s子分量、所述第二s子分量、所述第三s子分量和所述第四s子分量,确定出所述签名结果中的s分量。
2.根据权利要求1所述的基于SM2白盒的数字签名装置,其特征在于,所述第一计算模块的内部设有第一向量和第一查找表,具体用于利用所述随机数k′、所述第一向量和所述第一查找表计算出所述签名结果中的第一s子分量。
3.根据权利要求2所述的基于SM2白盒的数字签名装置,其特征在于,所述第二计算模块的内部设有第二向量和第二查找表,具体用于利用所述r分量、所述第二向量和所述第二查找表计算出所述签名结果中的第二s子分量。
4.根据权利要求3所述的基于SM2白盒的数字签名装置,其特征在于,所述第三计算模块的内部设有第三查找表,具体用于利用所述随机数k′、所述r分量和所述第三查找表,计算出所述签名结果中的第三s子分量和第四s子分量。
5.根据权利要求4所述的基于SM2白盒的数字签名装置,其特征在于,所述第四计算模块的内部设有第四查找表、第五查找表和第六查找表,具体用于利用所述第一s子分量、所述第三s子分量和所述第四查找表计算得到第一临时结果,利用所述第二s子分量、所述第四s子分量和所述第五查找表计算得到第二临时结果,然后利用所述第一临时结果、所述第二临时结果和所述第六查找表计算得到所述签名结果中的s分量。
6.根据权利要求5所述的基于SM2白盒的数字签名装置,其特征在于,还包括初始化模块;其中,所述初始化模块,包括:
秘密参数生成单元,用于随机生成秘密参数;
第一生成单元,用于利用所述秘密参数生成所述椭圆曲线点加计算器的所述随机数向量;
第二生成单元,用于生成所述第一计算模块内部的所述第一向量和所述第一查找表;
第三生成单元,用于生成所述第二计算模块内部的所述第二向量和所述第二查找表;
第四生成单元,用于生成所述第三计算模块内部的所述第三查找表;
第五生成单元,用于生成所述第四计算模块内部的所述第四查找表、所述第五查找表和所述第六查找表;
信息整理单元,用于保存所述随机数向量、所述第一向量、所述第二向量、所述第一查找表、所述第二查找表、所述第三查找表、所述第四查找表、所述第五查找表和所述第六查找表,并删除其他信息,以完成初始化操作。
7.根据权利要求6所述的基于SM2白盒的数字签名装置,其特征在于,所述第一生成单元具体用于根据随机数空间的实际需求量生成所述随机数向量。
8.一种基于SM2白盒的数字签名方法,其特征在于,包括:
通过随机数生成器生成随机数k′;
通过椭圆曲线点加计算器利用自身内部的随机数向量和所述随机数k′,计算得到(x,y);其中,(x,y)=k′·T1;k′表示所述随机数,T1表示所述随机数向量,·表示向量点乘;
通过消息压缩处理器获取待签名消息,按SM2签名算法规范进行杂凑运算以得到相应的杂凑运算结果,然后根据所述杂凑运算结果和所述(x,y)中的x分量得到签名结果中的r分量;
通过第一计算模块利用所述随机数k′,计算出所述签名结果中的第一s子分量;通过第二计算模块利用所述r分量,计算出所述签名结果中的第二s子分量;通过第三计算模块利用所述随机数k′和所述r分量,计算出所述签名结果中的第三s子分量和第四s子分量;通过第四计算模块利用所述第一s子分量、所述第二s子分量、所述第三s子分量和所述第四s子分量,确定出所述签名结果中的s分量。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求8所述基于SM2白盒的数字签名方法的步骤。
10.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求8所述基于SM2白盒的数字签名方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911221653.1A CN110990896B (zh) | 2019-12-03 | 2019-12-03 | 基于sm2白盒的数字签名装置、方法、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911221653.1A CN110990896B (zh) | 2019-12-03 | 2019-12-03 | 基于sm2白盒的数字签名装置、方法、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110990896A true CN110990896A (zh) | 2020-04-10 |
CN110990896B CN110990896B (zh) | 2023-01-06 |
Family
ID=70089619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911221653.1A Active CN110990896B (zh) | 2019-12-03 | 2019-12-03 | 基于sm2白盒的数字签名装置、方法、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110990896B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112906039A (zh) * | 2021-03-26 | 2021-06-04 | 成都卫士通信息产业股份有限公司 | 一种无证书分布式签名方法、装置、介质和电子设备 |
CN114710293A (zh) * | 2022-04-02 | 2022-07-05 | 建信金融科技有限责任公司 | 数字签名方法、装置、电子设备及存储介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102761415A (zh) * | 2011-04-27 | 2012-10-31 | 航天信息股份有限公司 | p元域SM2椭圆曲线的数字签名生成、验证及混合*** |
US20140211938A1 (en) * | 2013-01-29 | 2014-07-31 | Certicom Corp. | Modified elliptic curve signature algorithm for message recovery |
CN104836670A (zh) * | 2015-05-12 | 2015-08-12 | 中国科学院软件研究所 | 一种基于随机数未知的sm2签名算法安全性验证方法 |
US20160191252A1 (en) * | 2013-08-16 | 2016-06-30 | China Iwncomm Co., Ltd. | Method and device for generating digital signature |
CN105933116A (zh) * | 2016-06-27 | 2016-09-07 | 收付宝科技有限公司 | 基于sm2的电子签名生成及验证方法和装置 |
CN106230581A (zh) * | 2016-09-09 | 2016-12-14 | 杭州华为数字技术有限公司 | Sm3消息处理方法和装置 |
CN106575215A (zh) * | 2014-09-04 | 2017-04-19 | 英特尔公司 | Sm3哈希算法加速处理器、方法、***和指令 |
CN106612182A (zh) * | 2016-12-22 | 2017-05-03 | 中国电子科技集团公司第三十研究所 | 一种基于余数***的sm2白盒数字签名实现方法 |
CN107094369A (zh) * | 2014-09-26 | 2017-08-25 | 英特尔公司 | 用于提供simd sm3密码散列函数的指令和逻辑 |
WO2017145008A1 (en) * | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Tokenisation method and system for implementing exchanges on a blockchain |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与*** |
CN108259506A (zh) * | 2018-02-08 | 2018-07-06 | 上海交通大学 | Sm2白盒密码实现方法 |
CN109639439A (zh) * | 2019-02-27 | 2019-04-16 | 武汉大学 | 一种基于两方协同的ecdsa数字签名方法 |
US20190158470A1 (en) * | 2016-04-29 | 2019-05-23 | nChain Holdings Limited | Operating system for blockchain iot devices |
CN110365487A (zh) * | 2019-07-19 | 2019-10-22 | 北京向芯力科技有限公司 | 一种基于sm2算法的协同签名方法与装置 |
-
2019
- 2019-12-03 CN CN201911221653.1A patent/CN110990896B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102761415A (zh) * | 2011-04-27 | 2012-10-31 | 航天信息股份有限公司 | p元域SM2椭圆曲线的数字签名生成、验证及混合*** |
US20140211938A1 (en) * | 2013-01-29 | 2014-07-31 | Certicom Corp. | Modified elliptic curve signature algorithm for message recovery |
US20160191252A1 (en) * | 2013-08-16 | 2016-06-30 | China Iwncomm Co., Ltd. | Method and device for generating digital signature |
CN106575215A (zh) * | 2014-09-04 | 2017-04-19 | 英特尔公司 | Sm3哈希算法加速处理器、方法、***和指令 |
CN107094369A (zh) * | 2014-09-26 | 2017-08-25 | 英特尔公司 | 用于提供simd sm3密码散列函数的指令和逻辑 |
CN104836670A (zh) * | 2015-05-12 | 2015-08-12 | 中国科学院软件研究所 | 一种基于随机数未知的sm2签名算法安全性验证方法 |
WO2017145008A1 (en) * | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Tokenisation method and system for implementing exchanges on a blockchain |
US20190158470A1 (en) * | 2016-04-29 | 2019-05-23 | nChain Holdings Limited | Operating system for blockchain iot devices |
CN105933116A (zh) * | 2016-06-27 | 2016-09-07 | 收付宝科技有限公司 | 基于sm2的电子签名生成及验证方法和装置 |
CN106230581A (zh) * | 2016-09-09 | 2016-12-14 | 杭州华为数字技术有限公司 | Sm3消息处理方法和装置 |
CN106612182A (zh) * | 2016-12-22 | 2017-05-03 | 中国电子科技集团公司第三十研究所 | 一种基于余数***的sm2白盒数字签名实现方法 |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与*** |
CN108259506A (zh) * | 2018-02-08 | 2018-07-06 | 上海交通大学 | Sm2白盒密码实现方法 |
CN109639439A (zh) * | 2019-02-27 | 2019-04-16 | 武汉大学 | 一种基于两方协同的ecdsa数字签名方法 |
CN110365487A (zh) * | 2019-07-19 | 2019-10-22 | 北京向芯力科技有限公司 | 一种基于sm2算法的协同签名方法与装置 |
Non-Patent Citations (6)
Title |
---|
FAN DING: "Study on Secret Sharing for SM2 Digital Signature and Its Application", 《2018 14TH INTERNATIONAL CONFERENCE ON COMPUTATIONAL INTELLIGENCE AND SECURITY (CIS)》 * |
XIAOSHU CHENG: "Simplification and Hardware Parallel Design of Frobenius Mapping Algorithm Based on SM9", 《2019 IEEE THE 3RD INTERNATIONAL CONFERENCE ON CIRCUITS, SYSTEMS AND DEVICES》 * |
中国标准出版社: "SM2密码算法加密签名消息语法规范", 《HTTPS://MAX.BOOK118.COM/HTML/2019/0505/7045024031002024.SHTMGM/T0010-2012》 * |
曹启: "车联网密钥管理***设计与实现", 《中国优秀硕士学位论文期刊》 * |
李莉等: "密码芯片的多算法随机作业流调度方法", 《通信学报》 * |
陈博宇等: "基于FPGA的SM3算法的优化实现", 《信息技术》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112906039A (zh) * | 2021-03-26 | 2021-06-04 | 成都卫士通信息产业股份有限公司 | 一种无证书分布式签名方法、装置、介质和电子设备 |
CN114710293A (zh) * | 2022-04-02 | 2022-07-05 | 建信金融科技有限责任公司 | 数字签名方法、装置、电子设备及存储介质 |
CN114710293B (zh) * | 2022-04-02 | 2023-06-13 | 建信金融科技有限责任公司 | 数字签名方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110990896B (zh) | 2023-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5599728B2 (ja) | ホワイトボックス実装 | |
CN107004084B (zh) | 用于加密操作的乘法掩码 | |
JP7123959B2 (ja) | 楕円曲線点乗算デバイス及び方法 | |
CN111404952B (zh) | 变电站数据加密传输方法、装置、计算机设备和存储介质 | |
JP2022533950A (ja) | 準群演算を含む暗号化データに対して等価演算および未満演算を実行するシステムおよび方法 | |
KR20060134992A (ko) | 정수를 가산하는 컴퓨터 시스템 | |
CN111262704A (zh) | Sm9数字签名生成方法、装置、计算机设备和存储介质 | |
JP2020521392A (ja) | 暗号装置及び方法 | |
CN112906038B (zh) | 基于sm9密钥的门限化处理方法、装置、设备及存储介质 | |
CN110990896B (zh) | 基于sm2白盒的数字签名装置、方法、存储介质及设备 | |
CN110784306A (zh) | Sm4算法白盒实现方法、装置、电子设备及计算机介质 | |
CN107888385B (zh) | Rsa模数生成方法、rsa密钥生成方法、计算机设备及介质 | |
JPWO2015156020A1 (ja) | 情報処理装置、プログラム及び記憶媒体 | |
CN110971409B (zh) | 椭圆曲线上倍点运算的白盒实现方法、装置、设备及介质 | |
JP6053983B2 (ja) | 暗号システム、署名システム、暗号プログラム及び署名プログラム | |
CN107592963B (zh) | 用于执行安全计算的方法和计算设备 | |
CN114221753B (zh) | 密钥数据处理方法和电子设备 | |
CN110958115B (zh) | 基于sm9白盒的数字签名装置、方法、存储介质及设备 | |
CN115883212A (zh) | 信息处理方法、装置、电子设备和存储介质 | |
CN112019327B (zh) | 一种白盒实现方法、装置、电子设备及计算机存储介质 | |
KR102364047B1 (ko) | 구조화된 행렬들에 기초한 공개키 암호를 위한 방법과 장치 | |
TWI701931B (zh) | 具分級機制的數位簽章方法及適用該方法的硬體錢包裝置 | |
US11095429B2 (en) | Circuit concealing apparatus, calculation apparatus, and program | |
CN113708927A (zh) | 基于sm2数字签名的泛指定验证者签名证明*** | |
CN112989421A (zh) | 一种安全选择问题处理方法和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: No. 333, Yunhua Road, high tech Zone, Chengdu, Sichuan 610041 Patentee after: China Electronics Technology Network Security Technology Co.,Ltd. Address before: No. 333, Yunhua Road, high tech Zone, Chengdu, Sichuan 610041 Patentee before: CHENGDU WESTONE INFORMATION INDUSTRY Inc. |