CN114491575A - 一种sm2运算方法、系统、设备及计算机可读存储介质 - Google Patents
一种sm2运算方法、系统、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114491575A CN114491575A CN202111565585.8A CN202111565585A CN114491575A CN 114491575 A CN114491575 A CN 114491575A CN 202111565585 A CN202111565585 A CN 202111565585A CN 114491575 A CN114491575 A CN 114491575A
- Authority
- CN
- China
- Prior art keywords
- elliptic curve
- private key
- blinded
- random number
- value
- 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.)
- Pending
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/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种SM2运算方法、系统、设备及计算机可读存储介质,获取待运算的目标数据;获取当前时刻下SM2算法的第一椭圆曲线参数;获取私钥,对私钥进行盲化处理,得到盲化私钥;确定椭圆曲线点,对椭圆曲线点进行盲化处理,得到盲化曲线点;基于盲化私钥、盲化曲线点对目标数据进行运算,得到目标运算结果;获取当前时刻下SM2算法的第二椭圆曲线参数;判断第一椭圆曲线参数与第二椭圆曲线参数是否一致,若是,则确定目标运算结果正确。本申请应用盲化私钥及盲化曲线点对目标数据进行SM2运算,并且对椭圆曲线参数进行了安全验证,能够抵抗侧信道攻击,安全性好。本申请提供的一种SM2运算方法系统、设备及计算机可读存储介质也解决了相应技术问题。
Description
技术领域
本申请涉及数据安全技术领域,更具体地说,涉及一种SM2运算方法、系统、设备及计算机可读存储介质。
背景技术
SM2是2010年12月由中国国家密码管理局公布的椭圆曲线公钥密码算法,是中国拥有自主知识产权的商用密码算法,大量使用在商用密码芯片中。
但是,在SM2的运算过程中,可能受到侧信道攻击(Side Channel Attack),使得SM2运算的安全性受到影响。需要说明的是,这里所描述的侧信道攻击又称侧信道密码分析,由美国密码学家P.C.Kocher于上世纪九十年代末期提出,是一种针对密码实现(包括密码芯片、密码模块、密码系统等)的物理攻击方法,这种攻击方法的本质上是利用密码实现在执行密码相关操作的过程中产生的侧信息来恢复出密码实现中所使用的密钥。
综上所述,如何提高SM2运算的安全性是目前本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种SM2运算方法,其能在一定程度上解决如何提高SM2运算的安全性的技术问题。本申请还提供了一种SM2运算系统、设备及计算机可读存储介质。
为了实现上述目的,本申请提供如下技术方案:
一种SM2运算方法,包括:
获取待运算的目标数据;
获取当前时刻下SM2算法的第一椭圆曲线参数;
获取私钥,对所述私钥进行盲化处理,得到盲化私钥;
确定椭圆曲线点,对所述椭圆曲线点进行盲化处理,得到盲化曲线点;
基于所述盲化私钥、所述盲化曲线点对所述目标数据进行运算,得到目标运算结果;
获取当前时刻下所述SM2算法的第二椭圆曲线参数;
判断所述第一椭圆曲线参数与所述第二椭圆曲线参数是否一致,若是,则确定所述目标运算结果正确。
优选的,所述目标数据包括由所述SM2算法加密得到的密文,所述目标运算结果包括所述密文对应的明文;
所述确定椭圆曲线点,包括:
从所述密文的第一字符串中取出第一比特串,将所述目标比特串转换为所述椭圆曲线点;
所述对所述私钥进行盲化处理,得到盲化私钥,包括:
生成第一随机数;
基于第一私钥盲化公式,对所述私钥进行盲化处理,得到所述盲化私钥;
所述第一私钥盲化公式包括:
k′1=r1×N+k1;
其中,k′1表示所述盲化私钥;r1表示所述第一随机数;N表示椭圆曲线的阶;k1表示所述私钥;
所述对所述椭圆曲线点进行盲化处理,得到盲化曲线点,包括:
生成第二随机数;
基于曲线点盲化公式,对所述椭圆曲线点进行盲化处理,得到所述盲化曲线点;
所述曲线点盲化公式包括:
A′1=(A1+rand_point)-rand_point;rand_point=r2×G;
其中,A′1表示所述盲化曲线点;A1表示所述椭圆曲线点;r2表示所述第二随机数;G表示所述SM2算法的预设椭圆曲线点。
优选的,所述基于所述盲化私钥、所述盲化曲线点对所述目标数据进行运算,得到目标运算结果,包括:
计算所述盲化私钥与所述盲化曲线点的乘积值;
将所述乘积值的横坐标值及纵坐标值分别转换为第二比特串及第三比特串;
获取所述密文中第三字符串的字节长度值;
基于密钥派生函数,对所述第二比特串、所述第三比特串及所述字节长度值进行运算,得到第一运算值;
计算所述第一运算值与所述第三字符串的异或值;
计算所述第二比特串、所述异或值及所述第三比特串的哈希值;
判断所述哈希值与所述密文中的第二字符串是否一致;
若所述哈希值与所述第二字符串一致,则将所述异或值作为所述目标运算结果。
优选的,所述计算所述盲化私钥与所述盲化曲线点的乘积值,包括:
基于随机滑动窗口算法计算第二运算值,所述第二运算值为k'(A1+rand_point)的运算结果;
基于所述随机滑动窗口算法计算第三运算值,所述第三运算值为k'×rand_point的运算结果;
计算所述第二运算值与所述第三运算值的差值,得到所述乘积值。
优选的,所述随机滑动窗口算法包括:
对于α*β,若α的最低比特为1,且窗口为2,则判断αt&0x3是否大于2,若是,则令naf_w[i]=αt&0x3-4,若否,则令naf_w[i]=αt&0x3,并令αt+1=αt-naf_w[i];若α的最低比特为0,则令naf_w[i]=0,并令αt+1=αt>>1,i++;若窗口为3,则判断αt&0x7是否大于4,若是,则令naf_w[i]=αt&0x7-8,若否,则令naf_w[i]=αt&0x7,并令αt+1=αt-naf_w[i];若α的最低比特为0,则令naf_w[i]=0,并令αt+1=αt>>1,i++;若窗口为4,则判断αt&0xf是否大于8,若是,则令naf_w[i]=αt&0xf-16,若否,则令naf_w[i]=αt&0xf,并令αt+1=αt-naf_w[i];若α的最低比特为0,则令naf_w[i]=0,并令αt+1=αt>>1,i++;循环上述操作,直至为0退出循环;
对于naf_w[i],i从最高到0的过程中,均在naf_w[i]==0的条件下,令δ=2β,在naf_w[i]!=0的条件下,令δ=2β+naf_w[i];
其中,α、β表示待运算的数据;naf_w[i]表示随机窗口编码结果;w表示窗口大小值;i表示所述随机窗口编码结果的标号;αt表示当前时刻下α的值;αt+1表示当前时刻的下一时刻下α的值;>>表示右移运算;δ表示α与β的运算结果。
优选的,所述基于密钥派生函数,对所述第二比特串、所述第三比特串及所述字节长度值进行运算,得到第一运算值,包括:
基于对计数器进行随机化处理后的所述密钥派生函数,对所述第二比特串、所述第三比特串及所述字节长度值进行运算,得到所述第一运算值。
优选的,所述目标数据包括消息,所述目标运算结果包括所述消息的签名结果;
所述确定椭圆曲线点,包括:
将所述SM2算法的预设椭圆曲线点作为所述椭圆曲线点;
所述对所述私钥进行盲化处理,得到盲化私钥,包括:
生成第三随机数;
基于第二私钥盲化公式,对所述私钥进行盲化处理,得到所述盲化私钥;
所述第二私钥盲化公式包括:
k'2=r3×(1+k2);
其中,k'2表示所述盲化私钥;r3表示所述第三随机数;k2表示所述私钥;
所述对所述椭圆曲线点进行盲化处理,得到盲化曲线点,包括:
生成第四随机数;
基于曲线点盲化公式,对所述椭圆曲线点进行盲化处理,得到所述盲化曲线点;
所述曲线点盲化公式包括:
A'2=(A2+rand_point)-rand_point;rand_point=r4×G;
其中,A'2表示所述盲化曲线点;A2表示所述椭圆曲线点;r4表示所述第四随机数;G表示所述SM2算法的所述预设椭圆曲线点。
优选的,所述基于所述盲化私钥、所述盲化曲线点对所述目标数据进行运算,得到目标运算结果,包括:
计算Za=Hash(ental||IDA||a||b||Gx||Gy||pkx||pky),m'=Hash(Za||m);
生成第五随机数,对所述第五随机数进行盲化处理,得到盲化第五随机数;
计算(x1,y1)=r′5×A'2,R=(m'+x1)mod N,若R==0或R+r5=N,则重新生成所述第五随机数,返回执行所述对所述第五随机数进行盲化处理,得到盲化第五随机数的步骤;
判断S是否等于0;若S不等于0,则将(R,S)作为所述签名结果;
其中,ental表示签名标识;IDA表示所述消息的唯一标识;a、b表示所述SM2算法中的预设数值;Gx表示所述预设椭圆曲线点的横坐标值;Gy表示所述预设椭圆曲线点的纵坐标值;pkx表示公钥的横坐标值;pky表示所述公钥的纵坐标值;Hash表示哈希运算;m表示所述消息;||表示拼接运算;r′5表示所述盲化第五随机数;mod表示求余运算;r5表示所述第五随机数;N表示椭圆曲线的阶。
优选的,所述对所述第五随机数进行盲化处理,得到盲化第五随机数,包括:
生成第六随机数;
基于随机数盲化公式,对所述第五随机数进行盲化处理,得到所述盲化第五随机数;
所述随机数盲化公式包括:
r′5=r6×N+r5;
其中,r′5表示所述盲化第五随机数;r6表示所述第六随机数;N表示椭圆曲线的阶;r5表示所述第五随机数。
优选的,所述计算(x1,y1)=r′5×A'2,包括:
基于随机滑动窗口算法计算(x1,y1)=r′5×A'2。
一种SM2运算系统,包括:
第一获取模块,用于获取待运算的目标数据;
第二获取模块,用于获取当前时刻下SM2算法的第一椭圆曲线参数;
第三获取模块,用于获取私钥,对所述私钥进行盲化处理,得到盲化私钥;
第一确定模块,用于确定椭圆曲线点,对所述椭圆曲线点进行盲化处理,得到盲化曲线点;
第一运算模块,用于基于所述盲化私钥、所述盲化曲线点对所述目标数据进行运算,得到目标运算结果;
第四获取模块,用于获取当前时刻下所述SM2算法的第二椭圆曲线参数;
第一判断模块,用于判断所述第一椭圆曲线参数与所述第二椭圆曲线参数是否一致,若是,则确定所述目标运算结果正确。
一种SM2运算装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一所述SM2运算方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述SM2运算方法的步骤。
本申请提供的一种SM2运算方法,获取待运算的目标数据;获取当前时刻下SM2算法的第一椭圆曲线参数;获取私钥,对私钥进行盲化处理,得到盲化私钥;确定椭圆曲线点,对椭圆曲线点进行盲化处理,得到盲化曲线点;基于盲化私钥、盲化曲线点对目标数据进行运算,得到目标运算结果;获取当前时刻下SM2算法的第二椭圆曲线参数;判断第一椭圆曲线参数与第二椭圆曲线参数是否一致,若是,则确定目标运算结果正确。本申请中,应用盲化私钥及盲化曲线点对目标数据进行SM2运算,并且对椭圆曲线参数进行了安全验证,能够抵抗侧信道攻击,安全性好。本申请提供的一种SM2运算方法系统、设备及计算机可读存储介质也解决了相应技术问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种SM2运算方法的流程图;
图2为本申请中应用SM2算法进行解密的流程图;
图3为本申请中应用SM2算法进行签名的流程图;
图4为本申请实施例提供的一种SM2运算系统的结构示意图;
图5为本申请实施例提供的一种SM2运算设备的结构示意图;
图6为本申请实施例提供的一种SM2运算设备的另一结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,图1为本申请实施例提供的一种SM2运算方法的流程图。
本申请实施例提供的一种SM2运算方法,可以包括以下步骤:
步骤S101:获取待运算的目标数据。
实际应用中,可以先获取需进行SM2运算的目标数据,目标数据的类型可以根据实际需要确定,本申请在此不做具体限定。
步骤S102:获取当前时刻下SM2算法的第一椭圆曲线参数。
实际应用中,在获取待运算的目标数据之后,可以获取当前时刻下SM2算法的第一椭圆曲线参数,第一椭圆曲线参数也即当前时刻下SM2算法的椭圆曲线参数,以便后续基于椭圆曲线参数来验证是否存在侧信道攻击。
步骤S103:获取私钥,对私钥进行盲化处理,得到盲化私钥。
实际应用中,SM2算法的运行过程中需要应用私钥,为了避免私钥被攻击,可以在获取私钥之后,对私钥进行盲化处理,得到盲化私钥,以便后续应用盲化私钥进行SM2运算,对私钥进行盲化处理的方式可以根据实际需要确定,本申请在此不做具体限定。
步骤S104:确定椭圆曲线点,对椭圆曲线点进行盲化处理,得到盲化曲线点。
实际应用中,SM2算法的运行过程中需要应用椭圆曲线点,为了避免椭圆曲线点被攻击,可以在确定椭圆曲线点之后,对椭圆曲线点进行盲化处理,得到盲化曲线点,以便后续应用盲化曲线点进行SM2运算,对椭圆曲线点进行盲化处理的方式可以根据实际需要确定,本申请在此不做具体限定。
步骤S105:基于盲化私钥、盲化曲线点对目标数据进行运算,得到目标运算结果。
实际应用中,在得到盲化私钥及盲化曲线点之后,便可以基于盲化私钥、盲化曲线点对目标数据进行运算,得到目标运算结果,以借助盲化私钥及盲化曲线点防御侧信道攻击。
步骤S106:获取当前时刻下SM2算法的第二椭圆曲线参数。
步骤S107:判断第一椭圆曲线参数与第二椭圆曲线参数是否一致,若是,则执行步骤S108:确定目标运算结果正确。
实际应用中,为了避免在SM2运算过程中,攻击方恶意修改椭圆曲线参数,还需获取当前时刻下SM2算法的第二椭圆曲线参数,判断第一椭圆曲线参数与第二椭圆曲线参数是否一致,若是,则确定目标运算结果正确,此时可以应用目标运算结果,若第一椭圆曲线参数与第二椭圆曲线参数不一致,则可以认为SM2运算过程被攻击,目标运算结果不正确,此时可以直接结束运算,或者重新进行SM2运算等,本申请在此不做具体限定。
需要说明的是,在判断第一椭圆曲线参数与第二椭圆曲线参数是否一致时,可以计算第一椭圆曲线参数及第二椭圆曲线参数各自的哈希值,再判断两者的哈希值是否一致,若一致,则认为第一椭圆曲线参数与第二椭圆曲线参数一致,若两者的哈希值不一致,则认为第一椭圆曲线参数与第二椭圆曲线参数不一致等,当然还可以有其他判断第一椭圆曲线参数与第二椭圆曲线参数是否一致的方法,本申请在此不做具体限定。
本申请提供的一种SM2运算方法,获取待运算的目标数据;获取当前时刻下SM2算法的第一椭圆曲线参数;获取私钥,对私钥进行盲化处理,得到盲化私钥;确定椭圆曲线点,对椭圆曲线点进行盲化处理,得到盲化曲线点;基于盲化私钥、盲化曲线点对目标数据进行运算,得到目标运算结果;获取当前时刻下SM2算法的第二椭圆曲线参数;判断第一椭圆曲线与第二椭圆曲线参数是否一致,若是,则确定目标运算结果正确。本申请中,应用盲化私钥及盲化曲线点对目标数据进行SM2运算,并且对椭圆曲线参数进行了安全验证,能够抵抗侧信道攻击,安全性好。
请参阅图2,图2为本申请中应用SM2算法进行解密的流程图。
本申请实施例提供的一种SM2运算方法中,因为SM2算法可以用于对数据进行加密,加密过程可以参阅现有技术,所以可以应用SM2算法进行解密,也即目标数据包括由SM2算法加密得到的密文,目标运算结果包括密文对应的明文;现有的解密过程如图2的左侧图所示,包括以下步骤:
步骤一:输入密文cipher0||cipher1||cipher2,len为密文cipher2的字节长度,私钥为k,椭圆曲线参数为sm2Prams;
步骤二:从cipher0中取出比特串,并将数据类型转换为椭圆曲线上的点A,验证A是否满足椭圆曲线方程,若不满足则退出;若满足,则计算点乘kA,对点成后的x,y坐标转换为比特串x1,x2,计算t=KDF(x1||y2,len),其中KDF为密钥派生函数,即对输入的比特串m进行分块blocklen=(len%32!=0),也即若blocklen!=0,则令blocklen>>5+1,若blocklen=0,则令blocklen>>5,对i从1到blocklen执行H256(mi||ct),其中ct为一个32位比特构成的计数器,初始值为0x00000001,则:
t=H256(m1||0x00000001)||H256(m2||0x00000002)||…H256(mblocklen||blocklen);
步骤三:从密文中取出比特串cipher2,对len长度的cipher2计算计算u=Hash(x2||M'||y2),从密文中取出比特串cipher1,若u≠cipher1则报错退出,否则解密完成,输出解密结果为M'。
而为了抵抗侧信道攻击,本申请的解密过程可以如图2右侧所示,在基于盲化私钥、盲化曲线点对目标数据进行运算,得到目标运算结果的过程中,需计算盲化私钥与盲化曲线点的乘积值;将乘积值的横坐标值及纵坐标值分别转换为第二比特串及第三比特串;获取密文中第三字符串的字节长度值;基于密钥派生函数,对第二比特串、第三比特串及字节长度值进行运算,得到第一运算值;计算第一运算值与第三字符串的异或值;计算第二比特串、异或值及第三比特串的哈希值;判断哈希值与密文中的第二字符串是否一致;若哈希值与第二字符串一致,则将异或值作为目标运算结果。
具体应用场景中,在确定椭圆曲线点的过程中,可以从密文的第一字符串中取出第一比特串,将目标比特串转换为椭圆曲线点;
相应的,在对私钥进行盲化处理,得到盲化私钥的过程中,可以生成第一随机数;基于第一私钥盲化公式,对私钥进行盲化处理,得到盲化私钥;
第一私钥盲化公式包括:
k′1=r1×N+k1;
其中,k′1表示盲化私钥;r1表示第一随机数;N表示椭圆曲线的阶;k1表示私钥;
相应的,在对椭圆曲线点进行盲化处理,得到盲化曲线点的过程中,可以生成第二随机数;基于曲线点盲化公式,对椭圆曲线点进行盲化处理,得到盲化曲线点;
曲线点盲化公式包括:
A′1=(A1+rand_point)-rand_point;rand_point=r2×G;
其中,A′1表示盲化曲线点;A1表示椭圆曲线点;r2表示第二随机数;G表示SM2算法的预设椭圆曲线点。
具体应用场景中,在计算盲化私钥与盲化曲线点的乘积值的过程中,为了抵抗计时攻击,功耗分析,电磁分析和故障攻击,可以基于随机滑动窗口算法计算第二运算值,第二运算值为k'(A1+rand_point)的运算结果;基于随机滑动窗口算法计算第三运算值,第三运算值为k'×rand_point的运算结果;计算第二运算值与第三运算值的差值,得到乘积值。
具体的,随机滑动窗口算法可以包括:
对于α*β,若α的最低比特为1,且窗口为2,则判断αt&0x3是否大于2,若是,则令naf_w[i]=αt&0x3-4,若否,则令naf_w[i]=αt&0x3,并令αt+1=αt-naf_w[i];若α的最低比特为0,则令naf_w[i]=0,并令αt+1=αt>>1,i++;若窗口为3,则判断αt&0x7是否大于4,若是,则令naf_w[i]=αt&0x7-8,若否,则令naf_w[i]=αt&0x7,并令αt+1=αt-naf_w[i];若α的最低比特为0,则令naf_w[i]=0,并令αt+1=αt>>1,i++;若窗口为4,则判断αt&0xf是否大于8,若是,则令naf_w[i]=αt&0xf-16,若否,则令naf_w[i]=αt&0xf,并令αt+1=αt-naf_w[i];若α的最低比特为0,则令naf_w[i]=0,并令αt+1=αt>>1,i++;循环上述操作,直至为0退出循环;
对于naf_w[i],i从最高到0的过程中,均在naf_w[i]==0的条件下,令δ=2β,在naf_w[i]!=0的条件下,令δ=2β+naf_w[i];
其中,α、β表示待运算的数据;naf_w[i]表示随机窗口编码结果;w表示窗口大小值;i表示随机窗口编码结果的标号;αt表示当前时刻下α的值;αt+1表示当前时刻的下一时刻下α的值;>>表示右移运算;δ表示α与β的运算结果。
且在本申请中,在基于密钥派生函数,对第二比特串、第三比特串及字节长度值进行运算,得到第一运算值的过程中,可以基于对计数器进行随机化处理后的密钥派生函数,对第二比特串、第三比特串及字节长度值进行运算,得到第一运算值。
请参阅图3,图3为本申请中应用SM2算法进行签名的流程图。
本申请实施例提供的一种SM2运算方法中,因为SM2算法可以用于对数据进行签名,签名过程可以参阅现有技术,所以目标数据可以包括消息,目标运算结果可以包括消息的签名结果;现有的签名过程如图3的左侧图所示,包括以下步骤:
步骤一:输入消息m,唯一标识IDA,签名标识entla,消息长度len,私钥k,公钥pk,椭圆曲线参数sm2Prams;
步骤二.计算Za=Hash(ental||IDA||a||b||Gx||Gy||pkx||pky),再计算m'=Hash(Za||m)。生成随机数r,计算椭圆曲线点(x1,y1)=r×G,计算R=(m'+x1)mod N,如果R==0或者R+r=N,则重新生成随机数r,否则计算S=((1+k)-1×(k-R×k))mod n,如果s==0,则重新生成随机数r,否则输出签名(R,S)和消息m。
而为了抵抗侧信道攻击,本申请中应用SM2算法进行签名的过程可以如图3的右侧图所示,在基于盲化私钥、盲化曲线点对目标数据进行运算,得到目标运算结的过程中,可以:
计算Za=Hash(ental||IDA||a||b||Gx||Gy||pkx||pky),m'=Hash(Za||m);
生成第五随机数,对第五随机数进行盲化处理,得到盲化第五随机数;
计算(x1,y1)=r′5×A′2,R=(m'+x1)mod N,若R==0或R+r5=N,则重新生成第五随机数,返回执行对第五随机数进行盲化处理,得到盲化第五随机数的步骤;
判断S是否等于0;若S不等于0,则将(R,S)作为签名结果;
其中,ental表示签名标识;IDA表示消息的唯一标识;a、b表示SM2算法中的预设数值;Gx表示预设椭圆曲线点的横坐标值;Gy表示预设椭圆曲线点的纵坐标值;pkx表示公钥的横坐标值;pky表示公钥的纵坐标值;Hash表示哈希运算;m表示消息;||表示拼接运算;r′5表示盲化第五随机数;mod表示求余运算;r5表示第五随机数;N表示椭圆曲线的阶。
具体应用场景中,在确定椭圆曲线点的过程中,可以将SM2算法的预设椭圆曲线点作为椭圆曲线点;
相应的,对私钥进行盲化处理,得到盲化私钥的过程中,可以生成第三随机数;基于第二私钥盲化公式,对私钥进行盲化处理,得到盲化私钥;
第二私钥盲化公式包括:
k′2=r3×(1+k2);
其中,k'2表示盲化私钥;r3表示第三随机数;k2表示私钥;
相应的,在对椭圆曲线点进行盲化处理,得到盲化曲线点的过程中,可以生成第四随机数;基于曲线点盲化公式,对椭圆曲线点进行盲化处理,得到盲化曲线点;
曲线点盲化公式包括:
A'2=(A2+rand_point)-rand_point;rand_point=r4×G;
其中,A'2表示盲化曲线点;A2表示椭圆曲线点;r4表示第四随机数;G表示SM2算法的预设椭圆曲线点。
具体应用场景中,在对第五随机数进行盲化处理,得到盲化第五随机数的过程中,可以生成第六随机数;基于随机数盲化公式,对第五随机数进行盲化处理,得到盲化第五随机数;
随机数盲化公式包括:
r′5=r6×N+r5;
其中,r′5表示盲化第五随机数;r6表示第六随机数;N表示椭圆曲线的阶;r5表示第五随机数。
具体应用场景中,在计算(x1,y1)=r′5×A'2的过程中,为了抵抗计时攻击,功耗分析,电磁分析和故障攻击,可以基于随机滑动窗口算法计算(x1,y1)=r′5×A'2。其中,随机滑动窗口算法的相关描述可以参阅上述实施例,在此不再赘述。
请参阅图4,图4为本申请实施例提供的一种SM2运算系统的结构示意图。
本申请实施例提供的一种SM2运算系统,可以包括以下步骤:
第一获取模块101,用于获取待运算的目标数据;
第二获取模块102,用于获取当前时刻下SM2算法的第一椭圆曲线参数;
第三获取模块103,用于获取私钥,对私钥进行盲化处理,得到盲化私钥;
第一确定模块104,用于确定椭圆曲线点,对椭圆曲线点进行盲化处理,得到盲化曲线点;
第一运算模块105,用于基于盲化私钥、盲化曲线点对目标数据进行运算,得到目标运算结果;
第四获取模块106,用于获取当前时刻下SM2算法的第二椭圆曲线参数;
第一判断模块107,用于判断第一椭圆曲线与第二椭圆曲线参数是否一致,若是,则确定目标运算结果正确。
本申请还提供了一种SM2运算设备及计算机可读存储介质,其均具有本申请实施例提供的一种SM2运算方法具有的对应效果。请参阅图5,图5为本申请实施例提供的一种SM2运算设备的结构示意图。
本申请实施例提供的一种SM2运算设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如上任一实施例所描述SM2运算方法的步骤。
请参阅图6,本申请实施例提供的另一种SM2运算设备中还可以包括:与处理器202连接的输入端口203,用于传输外界输入的命令至处理器202;与处理器202连接的显示单元204,用于显示处理器202的处理结果至外界;与处理器202连接的通信模块205,用于实现SM2运算设备与外界的通信。显示单元204可以为显示面板、激光扫描使显示器等;通信模块205所采用的通信方式包括但不局限于移动高清链接技术(HML)、通用串行总线(USB)、高清多媒体接口(HDMI)、无线连接:无线保真技术(WiFi)、蓝牙通信技术、低功耗蓝牙通信技术、基于IEEE802.11s的通信技术。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如上任一实施例所描述SM2运算方法的步骤。
本申请所涉及的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本申请实施例提供的SM2运算系统、设备及计算机可读存储介质中相关部分的说明请参见本申请实施例提供的SM2运算方法中对应部分的详细说明,在此不再赘述。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种SM2运算方法,其特征在于,包括:
获取待运算的目标数据;
获取当前时刻下SM2算法的第一椭圆曲线参数;
获取私钥,对所述私钥进行盲化处理,得到盲化私钥;
确定椭圆曲线点,对所述椭圆曲线点进行盲化处理,得到盲化曲线点;
基于所述盲化私钥、所述盲化曲线点对所述目标数据进行运算,得到目标运算结果;
获取当前时刻下所述SM2算法的第二椭圆曲线参数;
判断所述第一椭圆曲线参数与所述第二椭圆曲线参数是否一致,若是,则确定所述目标运算结果正确。
2.根据权利要求1所述的方法,其特征在于,所述目标数据包括由所述SM2算法加密得到的密文,所述目标运算结果包括所述密文对应的明文;
所述确定椭圆曲线点,包括:
从所述密文的第一字符串中取出第一比特串,将所述目标比特串转换为所述椭圆曲线点;
所述对所述私钥进行盲化处理,得到盲化私钥,包括:
生成第一随机数;
基于第一私钥盲化公式,对所述私钥进行盲化处理,得到所述盲化私钥;
所述第一私钥盲化公式包括:
k′1=r1×N+k1;
其中,k′1表示所述盲化私钥;r1表示所述第一随机数;N表示椭圆曲线的阶;k1表示所述私钥;
所述对所述椭圆曲线点进行盲化处理,得到盲化曲线点,包括:
生成第二随机数;
基于曲线点盲化公式,对所述椭圆曲线点进行盲化处理,得到所述盲化曲线点;
所述曲线点盲化公式包括:
A′1=(A1+rand_point)-rand_point;rand_point=r2×G;
其中,A′1表示所述盲化曲线点;A1表示所述椭圆曲线点;r2表示所述第二随机数;G表示所述SM2算法的预设椭圆曲线点。
3.根据权利要求2所述的方法,其特征在于,所述基于所述盲化私钥、所述盲化曲线点对所述目标数据进行运算,得到目标运算结果,包括:
计算所述盲化私钥与所述盲化曲线点的乘积值;
将所述乘积值的横坐标值及纵坐标值分别转换为第二比特串及第三比特串;
获取所述密文中第三字符串的字节长度值;
基于对计数器进行随机化处理后的密钥派生函数,对所述第二比特串、所述第三比特串及所述字节长度值进行运算,得到第一运算值;
计算所述第一运算值与所述第三字符串的异或值;
计算所述第二比特串、所述异或值及所述第三比特串的哈希值;
判断所述哈希值与所述密文中的第二字符串是否一致。
若所述哈希值与所述第二字符串一致,则将所述异或值作为所述目标运算结果;
4.根据权利要求3所述的方法,其特征在于,所述计算所述盲化私钥与所述盲化曲线点的乘积值,包括:
基于随机滑动窗口算法计算第二运算值,所述第二运算值为k'(A1+rand_point)的运算结果;
基于所述随机滑动窗口算法计算第三运算值,所述第三运算值为k'×rand_point的运算结果;
计算所述第二运算值与所述第三运算值的差值,得到所述乘积值;
其中,所述随机滑动窗口算法包括:
对于α*β,若α的最低比特为1,且窗口为2,则判断αt&0x3是否大于2,若是,则令naf_w[i]=αt&0x3-4,若否,则令naf_w[i]=αt&0x3,并令αt+1=αt-naf_w[i];若α的最低比特为0,则令naf_w[i]=0,并令αt+1=αt>>1,i++;若窗口为3,则判断αt&0x7是否大于4,若是,则令naf_w[i]=αt&0x7-8,若否,则令naf_w[i]=αt&0x7,并令αt+1=αt-naf_w[i];若α的最低比特为0,则令naf_w[i]=0,并令αt+1=αt>>1,i++;若窗口为4,则判断αt&0xf是否大于8,若是,则令naf_w[i]=αt&0xf-16,若否,则令naf_w[i]=αt&0xf,并令αt+1=αt-naf_w[i];若α的最低比特为0,则令naf_w[i]=0,并令αt+1=αt>>1,i++;循环上述操作,直至为0退出循环;
对于naf_w[i],i从最高到0的过程中,均在naf_w[i]==0的条件下,令δ=2β,在naf_w[i]!=0的条件下,令δ=2β+naf_w[i];
其中,α、β表示待运算的数据;naf_w[i]表示随机窗口编码结果;w表示窗口大小值;i表示所述随机窗口编码结果的标号;αt表示当前时刻下α的值;αt+1表示当前时刻的下一时刻下α的值;>>表示右移运算;δ表示α与β的运算结果。
5.根据权利要求1所述的方法,其特征在于,所述目标数据包括消息,所述目标运算结果包括所述消息的签名结果;
所述确定椭圆曲线点,包括:
将所述SM2算法的预设椭圆曲线点作为所述椭圆曲线点;
所述对所述私钥进行盲化处理,得到盲化私钥,包括:
生成第三随机数;
基于第二私钥盲化公式,对所述私钥进行盲化处理,得到所述盲化私钥;
所述第二私钥盲化公式包括:
k'2=r3×(1+k2);
其中,k'2表示所述盲化私钥;r3表示所述第三随机数;k2表示所述私钥;
所述对所述椭圆曲线点进行盲化处理,得到盲化曲线点,包括:
生成第四随机数;
基于曲线点盲化公式,对所述椭圆曲线点进行盲化处理,得到所述盲化曲线点;
所述曲线点盲化公式包括:
A'2=(A2+rand_point)-rand_point;rand_point=r4×G;
其中,A'2表示所述盲化曲线点;A2表示所述椭圆曲线点;r4表示所述第四随机数;G表示所述SM2算法的所述预设椭圆曲线点。
6.根据权利要求5所述的方法,其特征在于,所述基于所述盲化私钥、所述盲化曲线点对所述目标数据进行运算,得到目标运算结果,包括:
计算Za=Hash(ental||IDA||a||b||Gx||Gy||pkx||pky),m'=Hash(Za||m);
生成第五随机数,对所述第五随机数进行盲化处理,得到盲化第五随机数;
基于随机滑动窗口算法计算(x1,y1)=r′5×A'2,R=(m'+x1)mod N,若R==0或R+r5=N,则重新生成所述第五随机数,返回执行所述对所述第五随机数进行盲化处理,得到盲化第五随机数的步骤;
若R≠0且R+r5≠N,则计算S=(R+r5)×r3×k'2 -1-R;
判断S是否等于0;若S不等于0,则将(R,S)作为所述签名结果;
其中,ental表示签名标识;IDA表示所述消息的唯一标识;a、b表示所述SM2算法中的预设数值;Gx表示所述预设椭圆曲线点的横坐标值;Gy表示所述预设椭圆曲线点的纵坐标值;pkx表示公钥的横坐标值;pky表示所述公钥的纵坐标值;Hash表示哈希运算;m表示所述消息;||表示拼接运算;r5'表示所述盲化第五随机数;mod表示求余运算;r5表示所述第五随机数;N表示椭圆曲线的阶。
7.根据权利要求6所述的方法,其特征在于,所述对所述第五随机数进行盲化处理,得到盲化第五随机数,包括:
生成第六随机数;
基于随机数盲化公式,对所述第五随机数进行盲化处理,得到所述盲化第五随机数;
所述随机数盲化公式包括:
r′5=r6×N+r5;
其中,r′5表示所述盲化第五随机数;r6表示所述第六随机数;N表示椭圆曲线的阶;r5表示所述第五随机数。
8.一种SM2运算系统,其特征在于,包括:
第一获取模块,用于获取待运算的目标数据;
第二获取模块,用于获取当前时刻下SM2算法的第一椭圆曲线参数;
第三获取模块,用于获取私钥,对所述私钥进行盲化处理,得到盲化私钥;
第一确定模块,用于确定椭圆曲线点,对所述椭圆曲线点进行盲化处理,得到盲化曲线点;
第一运算模块,用于基于所述盲化私钥、所述盲化曲线点对所述目标数据进行运算,得到目标运算结果;
第四获取模块,用于获取当前时刻下所述SM2算法的第二椭圆曲线参数;
第一判断模块,用于判断所述第一椭圆曲线参数与所述第二椭圆曲线参数是否一致,若是,则确定所述目标运算结果正确。
9.一种SM2运算装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述SM2运算方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述SM2运算方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111565585.8A CN114491575A (zh) | 2021-12-20 | 2021-12-20 | 一种sm2运算方法、系统、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111565585.8A CN114491575A (zh) | 2021-12-20 | 2021-12-20 | 一种sm2运算方法、系统、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114491575A true CN114491575A (zh) | 2022-05-13 |
Family
ID=81493854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111565585.8A Pending CN114491575A (zh) | 2021-12-20 | 2021-12-20 | 一种sm2运算方法、系统、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114491575A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117353926A (zh) * | 2023-12-01 | 2024-01-05 | 苏州元脑智能科技有限公司 | 一种基于芯片的sm2算法密码处理方法、装置及设备 |
-
2021
- 2021-12-20 CN CN202111565585.8A patent/CN114491575A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117353926A (zh) * | 2023-12-01 | 2024-01-05 | 苏州元脑智能科技有限公司 | 一种基于芯片的sm2算法密码处理方法、装置及设备 |
CN117353926B (zh) * | 2023-12-01 | 2024-02-27 | 苏州元脑智能科技有限公司 | 一种基于芯片的sm2算法密码处理方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105099672B (zh) | 混合加密方法及实现该方法的装置 | |
US9313026B2 (en) | Key negotiation method and apparatus according to SM2 key exchange protocol | |
CN107395368B (zh) | 无介质环境中的数字签名方法及解封装方法与解密方法 | |
US7218735B2 (en) | Cryptography method on elliptic curves | |
JP6782864B2 (ja) | ブロック暗号を演算するデバイス及び方法 | |
EP2835932B1 (en) | Encryption device, decryption device, encryption method, decryption method, and program | |
US20220360441A1 (en) | Data encryption and decryption method, device, storage medium and encrypted file | |
CN104917608B (zh) | 一种密钥抗功耗攻击的方法 | |
CN104838617B (zh) | 整合安全装置及整合安全装置中使用的信号处理方法 | |
CN111147245A (zh) | 一种区块链中使用国家密码进行加密的算法 | |
CN105162583A (zh) | 一种单个、单级和多级密钥对分散方法及其系统 | |
Tsunoo et al. | Differential cryptanalysis of Salsa20/8 | |
CN112930660A (zh) | 用于分配数字签名数据份额的计算机实现的系统和方法 | |
US20130243191A1 (en) | Encryption key generating apparatus | |
CN112653546A (zh) | 一种基于功耗分析的故障攻击检测方法 | |
CN111079178B (zh) | 一种可信电子病历脱敏和回溯方法 | |
CN114491575A (zh) | 一种sm2运算方法、系统、设备及计算机可读存储介质 | |
CN113158176B (zh) | 基于sm2签名的公钥解析方法、装置、设备及存储介质 | |
US20220085998A1 (en) | System and method to generate prime numbers in cryptographic applications | |
CN113098675A (zh) | 基于多项式完全同态的二进制数据加密系统及方法 | |
CN112564890B (zh) | 一种加速sm4算法的方法、装置、处理器及电子设备 | |
CN116132050A (zh) | 一种消息处理方法、系统、设备及计算机可读存储介质 | |
CN103023641B (zh) | 一种序列号生成验证方法 | |
US20230141210A1 (en) | Neural networks | |
CN113347270A (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 |