一种SM2运算方法、系统、设备及计算机可读存储介质技术方案

技术编号:33528653 阅读:22 留言:0更新日期:2022-05-19 01:55
本申请公开了一种SM2运算方法、系统、设备及计算机可读存储介质,获取待运算的目标数据;获取当前时刻下SM2算法的第一椭圆曲线参数;获取私钥,对私钥进行盲化处理,得到盲化私钥;确定椭圆曲线点,对椭圆曲线点进行盲化处理,得到盲化曲线点;基于盲化私钥、盲化曲线点对目标数据进行运算,得到目标运算结果;获取当前时刻下SM2算法的第二椭圆曲线参数;判断第一椭圆曲线参数与第二椭圆曲线参数是否一致,若是,则确定目标运算结果正确。本申请应用盲化私钥及盲化曲线点对目标数据进行SM2运算,并且对椭圆曲线参数进行了安全验证,能够抵抗侧信道攻击,安全性好。本申请提供的一种SM2运算方法系统、设备及计算机可读存储介质也解决了相应技术问题。也解决了相应技术问题。也解决了相应技术问题。

【技术实现步骤摘要】
一种SM2运算方法、系统、设备及计算机可读存储介质


[0001]本申请涉及数据安全
,更具体地说,涉及一种SM2运算方法、系统、设备及计算机可读存储介质。

技术介绍

[0002]SM2是2010年12月由中国国家密码管理局公布的椭圆曲线公钥密码算法,是中国拥有自主知识产权的商用密码算法,大量使用在商用密码芯片中。
[0003]但是,在SM2的运算过程中,可能受到侧信道攻击(Side Channel Attack),使得SM2运算的安全性受到影响。需要说明的是,这里所描述的侧信道攻击又称侧信道密码分析,由美国密码学家P.C.Kocher于上世纪九十年代末期提出,是一种针对密码实现(包括密码芯片、密码模块、密码系统等)的物理攻击方法,这种攻击方法的本质上是利用密码实现在执行密码相关操作的过程中产生的侧信息来恢复出密码实现中所使用的密钥。
[0004]综上所述,如何提高SM2运算的安全性是目前本领域技术人员亟待解决的问题。

技术实现思路

[0005]本申请的目的是提供一种SM2运算方法,其能在一定程度上解决如何提高SM2运算的安全性的技术问题。本申请还提供了一种SM2运算系统、设备及计算机可读存储介质。
[0006]为了实现上述目的,本申请提供如下技术方案:
[0007]一种SM2运算方法,包括:
[0008]获取待运算的目标数据;
[0009]获取当前时刻下SM2算法的第一椭圆曲线参数;
[0010]获取私钥,对所述私钥进行盲化处理,得到盲化私钥;
[0011]确定椭圆曲线点,对所述椭圆曲线点进行盲化处理,得到盲化曲线点;
[0012]基于所述盲化私钥、所述盲化曲线点对所述目标数据进行运算,得到目标运算结果;
[0013]获取当前时刻下所述SM2算法的第二椭圆曲线参数;
[0014]判断所述第一椭圆曲线参数与所述第二椭圆曲线参数是否一致,若是,则确定所述目标运算结果正确。
[0015]优选的,所述目标数据包括由所述SM2算法加密得到的密文,所述目标运算结果包括所述密文对应的明文;
[0016]所述确定椭圆曲线点,包括:
[0017]从所述密文的第一字符串中取出第一比特串,将所述目标比特串转换为所述椭圆曲线点;
[0018]所述对所述私钥进行盲化处理,得到盲化私钥,包括:
[0019]生成第一随机数;
[0020]基于第一私钥盲化公式,对所述私钥进行盲化处理,得到所述盲化私钥;
[0021]所述第一私钥盲化公式包括:
[0022]k
′1=r1×
N+k1;
[0023]其中,k
′1表示所述盲化私钥;r1表示所述第一随机数;N表示椭圆曲线的阶;k1表示所述私钥;
[0024]所述对所述椭圆曲线点进行盲化处理,得到盲化曲线点,包括:
[0025]生成第二随机数;
[0026]基于曲线点盲化公式,对所述椭圆曲线点进行盲化处理,得到所述盲化曲线点;
[0027]所述曲线点盲化公式包括:
[0028]A
′1=(A1+rand_point)

rand_point;rand_point=r2×
G;
[0029]其中,A
′1表示所述盲化曲线点;A1表示所述椭圆曲线点;r2表示所述第二随机数;G表示所述SM2算法的预设椭圆曲线点。
[0030]优选的,所述基于所述盲化私钥、所述盲化曲线点对所述目标数据进行运算,得到目标运算结果,包括:
[0031]计算所述盲化私钥与所述盲化曲线点的乘积值;
[0032]将所述乘积值的横坐标值及纵坐标值分别转换为第二比特串及第三比特串;
[0033]获取所述密文中第三字符串的字节长度值;
[0034]基于密钥派生函数,对所述第二比特串、所述第三比特串及所述字节长度值进行运算,得到第一运算值;
[0035]计算所述第一运算值与所述第三字符串的异或值;
[0036]计算所述第二比特串、所述异或值及所述第三比特串的哈希值;
[0037]判断所述哈希值与所述密文中的第二字符串是否一致;
[0038]若所述哈希值与所述第二字符串一致,则将所述异或值作为所述目标运算结果。
[0039]优选的,所述计算所述盲化私钥与所述盲化曲线点的乘积值,包括:
[0040]基于随机滑动窗口算法计算第二运算值,所述第二运算值为k'(A1+rand_point)的运算结果;
[0041]基于所述随机滑动窗口算法计算第三运算值,所述第三运算值为k'
×
rand_point的运算结果;
[0042]计算所述第二运算值与所述第三运算值的差值,得到所述乘积值。
[0043]优选的,所述随机滑动窗口算法包括:
[0044]对于α*β,若α的最低比特为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退出循环;
[0045]对于naf_w[i],i从最高到0的过程中,均在naf_w[i]==0的条件下,令δ=2β,在naf_w[i]!=0的条件下,令δ=2β+naf_w[i];
[0046]其中,α、β表示待运算的数据;naf_w[i]表示随机窗口编码结果;w表示窗口大小值;i表示本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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<...

【专利技术属性】
技术研发人员:万刘蝉郑茳肖佐楠匡启和汪建强
申请(专利权)人:苏州国芯科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1