CN110990896B - 基于sm2白盒的数字签名装置、方法、存储介质及设备 - Google Patents

基于sm2白盒的数字签名装置、方法、存储介质及设备 Download PDF

Info

Publication number
CN110990896B
CN110990896B CN201911221653.1A CN201911221653A CN110990896B CN 110990896 B CN110990896 B CN 110990896B CN 201911221653 A CN201911221653 A CN 201911221653A CN 110990896 B CN110990896 B CN 110990896B
Authority
CN
China
Prior art keywords
component
random number
sub
lookup table
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.)
Active
Application number
CN201911221653.1A
Other languages
English (en)
Other versions
CN110990896A (zh
Inventor
潘文伦
张立廷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Electronics Technology Network Security Technology Co ltd
Original Assignee
Chengdu Westone Information Industry Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Westone Information Industry Inc filed Critical Chengdu Westone Information Industry Inc
Priority to CN201911221653.1A priority Critical patent/CN110990896B/zh
Publication of CN110990896A publication Critical patent/CN110990896A/zh
Application granted granted Critical
Publication of CN110990896B publication Critical patent/CN110990896B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting 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签名算法在不可信终端上运行时的签名私钥的安全性。其具体方案如下:
第一方面,本申请提供了一种基于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部件置
Figure BDA0002301021570000081
计算
Figure BDA0002301021570000082
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
运算过程:
Figure BDA0002301021570000091
其中,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
运算过程:
Figure BDA0002301021570000101
其中,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)对应的运算过程中,对应的输入、输出以及运行过程具体如下:
输入:
Figure BDA0002301021570000102
即k,r均为256比特向量;
输出:
Figure BDA0002301021570000103
Figure BDA0002301021570000104
Figure BDA0002301021570000111
其中,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运算过程如下:
输入:
Figure BDA0002301021570000112
输出:
Figure BDA0002301021570000113
1.记
Figure BDA0002301021570000114
2.zi=T0,j(ki,ri)
2)Ti,j;i=1,2,…,5,j=0,1,…,26-i-1
Ti,j的构造过程如下:
Figure BDA0002301021570000115
Ti,j的运行过程如下:
输入:
Figure BDA0002301021570000116
输出:
Figure BDA0002301021570000117
算法: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分别表示前一实施例公开的所述第四查找表、所述第五查找表和所述第六查找表。其中,所述第四查找表、所述第五查找表和所述第六查找表的初始化过程为:
Figure BDA0002301021570000121
Figure BDA0002301021570000122
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γ)
Madd0
Figure BDA0002301021570000123
Figure BDA0002301021570000131
Maddi
Figure BDA0002301021570000132
Figure BDA0002301021570000133
Figure BDA0002301021570000134
Madd63
Figure BDA0002301021570000135
Figure BDA0002301021570000136
Figure BDA0002301021570000137
update(tγ′)
Modp0
Figure BDA0002301021570000138
Figure BDA0002301021570000139
Modpk
Figure BDA00023010215700001310
Figure BDA00023010215700001311
Figure BDA00023010215700001312
Modp63
Figure BDA00023010215700001313
Figure BDA00023010215700001314
T={Madd0,…,Madd63,Modp0,…,Modp63}
运算过程如下:
输入:
Figure BDA00023010215700001315
输出:
Figure BDA00023010215700001316
算法:
Figure BDA00023010215700001317
Figure BDA0002301021570000141
本实施例中,tγ表示一个256比特随机数,update(tγ)表示随机生成256比特随机数,并使用tγ表示该随机数;
Figure BDA0002301021570000142
表示异或运算符;“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分量,所述第一s子分量、所述第二s子分量、所述第三s子分量和所述第四s子分量共同确定的所述r分量和所述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分量,所述第一s子分量、所述第二s子分量、所述第三s子分量和所述第四s子分量共同确定的所述r分量和所述s分量共同用以表示数字签名。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求8所述基于SM2白盒的数字签名方法的步骤。
10.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求8所述基于SM2白盒的数字签名方法的步骤。
CN201911221653.1A 2019-12-03 2019-12-03 基于sm2白盒的数字签名装置、方法、存储介质及设备 Active CN110990896B (zh)

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 CN110990896A (zh) 2020-04-10
CN110990896B true 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)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112906039B (zh) * 2021-03-26 2023-01-06 成都卫士通信息产业股份有限公司 一种无证书分布式签名方法、装置、介质和电子设备
CN114710293B (zh) * 2022-04-02 2023-06-13 建信金融科技有限责任公司 数字签名方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107094369A (zh) * 2014-09-26 2017-08-25 英特尔公司 用于提供simd sm3密码散列函数的指令和逻辑
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102761415B (zh) * 2011-04-27 2015-04-08 航天信息股份有限公司 p元域SM2椭圆曲线的数字签名生成、验证及混合系统
US8971528B2 (en) * 2013-01-29 2015-03-03 Certicom Corp. Modified elliptic curve signature algorithm for message recovery
CN103427997B (zh) * 2013-08-16 2016-06-22 西安西电捷通无线网络通信股份有限公司 一种生成数字签名的方法及装置
US9317719B2 (en) * 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
CN104836670B (zh) * 2015-05-12 2017-12-08 中国科学院软件研究所 一种基于随机数未知的sm2签名算法安全性验证方法
US11182782B2 (en) * 2016-02-23 2021-11-23 nChain Holdings Limited Tokenisation method and system for implementing exchanges on a blockchain
GB201607476D0 (en) * 2016-04-29 2016-06-15 Eitc Holdings Ltd Operating system for blockchain IOT devices
CN105933116B (zh) * 2016-06-27 2018-01-09 收付宝科技有限公司 基于分段模特性的sm2的电子签名生成及验证方法和装置
CN106230581B (zh) * 2016-09-09 2019-05-21 杭州华为数字技术有限公司 Sm3消息处理方法和装置
CN106612182B (zh) * 2016-12-22 2020-04-03 中国电子科技集团公司第三十研究所 一种基于余数系统的sm2白盒数字签名实现方法
CN108259506B (zh) * 2018-02-08 2019-04-26 上海交通大学 Sm2白盒密码实现方法
CN109639439B (zh) * 2019-02-27 2020-10-30 武汉大学 一种基于两方协同的ecdsa数字签名方法
CN110365487A (zh) * 2019-07-19 2019-10-22 北京向芯力科技有限公司 一种基于sm2算法的协同签名方法与装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107094369A (zh) * 2014-09-26 2017-08-25 英特尔公司 用于提供simd sm3密码散列函数的指令和逻辑
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
密码芯片的多算法随机作业流调度方法;李莉等;《通信学报》;20161225(第12期);第90-98页 *

Also Published As

Publication number Publication date
CN110990896A (zh) 2020-04-10

Similar Documents

Publication Publication Date Title
CN109309569B (zh) 基于sm2算法的协同签名的方法、装置及存储介质
JP2020502856A5 (zh)
Almajed et al. SE-ENC: A secure and efficient encoding scheme using elliptic curve cryptography
US8452974B2 (en) Image processing apparatus, electronic signature generation system, electronic signature key generation method, image processing method, and program
CN107004084B (zh) 用于加密操作的乘法掩码
CN111404952B (zh) 变电站数据加密传输方法、装置、计算机设备和存储介质
US8370633B2 (en) Apparatus, method, and computer instructions for generating a substitute signature key pair
CN112906038B (zh) 基于sm9密钥的门限化处理方法、装置、设备及存储介质
CN111262704A (zh) Sm9数字签名生成方法、装置、计算机设备和存储介质
CN110990896B (zh) 基于sm2白盒的数字签名装置、方法、存储介质及设备
CN112003696A (zh) Sm9密钥生成方法、系统、电子设备、装置及存储介质
Dolmatov et al. Gost r 34.10-2012: Digital signature algorithm
CN112054896B (zh) 白盒加密方法、装置、终端及存储介质
CN110602190B (zh) 区块链共识的方法及区块链节点和存储装置
CN112926075B (zh) 一种sm9密钥生成方法、装置、设备及存储介质
CN110971409B (zh) 椭圆曲线上倍点运算的白盒实现方法、装置、设备及介质
JP6053983B2 (ja) 暗号システム、署名システム、暗号プログラム及び署名プログラム
JP2012123426A (ja) 暗号化方法用の楕円曲線を求める方法
CN107592963B (zh) 用于执行安全计算的方法和计算设备
CN108964923B (zh) 隐藏私钥的交互式sm2签名方法、系统和终端
CN110958115B (zh) 基于sm9白盒的数字签名装置、方法、存储介质及设备
CN115766244A (zh) 车联网信息加密方法、装置、计算机设备和存储介质
CN112019327B (zh) 一种白盒实现方法、装置、电子设备及计算机存储介质
TWI701931B (zh) 具分級機制的數位簽章方法及適用該方法的硬體錢包裝置
CN116318636A (zh) 一种基于sm2的门限签名方法

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.