System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于SM9解密算法的安全防护方法技术_技高网
当前位置: 首页 > 专利查询>东南大学专利>正文

一种基于SM9解密算法的安全防护方法技术

技术编号:44650613 阅读:1 留言:0更新日期:2025-03-17 18:40
本发明专利技术公开了一种基于SM9解密算法的安全防护方法,将私钥用随机数掩码,并对点乘的操作数进行了随机化操作,整个解密算法的过程中私钥都未泄露,同时中间过程都进行了全流程掩码,使得功耗、电磁和密钥信息无相关性,从而能够抵御能量功耗和电磁攻击;由于运算时间是根据随机数的值来确定的,采用NAF点乘运算时,随机窗口的点乘运算时间也是随机的,因此可以抵抗计时攻击;使用KDF函数运算时采用ct随机化方式,避免泄漏敏感信息;通过前后SM3杂凑运算值进行比较,有效检测参数变量是否被篡改或者是否有错误注入;对解密后的明文又进行加密运算,能检测全流程运算中所有参数变量及中间变量是否被篡改或者是否有错误注入,因此能够抵抗故障攻击。

【技术实现步骤摘要】

本专利技术属于数据安全领域,具体涉及一种基于sm9解密算法的安全防护方法。


技术介绍

1、sm9算法是一种基于标识的密码算法(简称“ibc”),是基于椭圆曲线的公钥密码体制,也是我国首个全体系纳入iso/iec标准的非对称密码算法。相比于传统密码体系,sm9密码系统最大的优势就是无需证书、易于使用、易于管理、总体拥有成本低。sm9算法的应用十分广泛,可以实现各类数据的加密、身份认证等安全服务;由于它的易用性和高安全性,非常适合海量设备间的安全通信,在保障移动互联网、大数据、工业互联网、物联网、车联网等领域的数据安全有着得天独厚的优势。

2、sm9算法作为基于椭圆曲线的公钥密码体制,其实现过程相对复杂。复杂的实现可能增加侧信道泄露的风险,因为更多的硬件资源和运算步骤可能产生更多的功耗、电磁辐射等物理特征,这些特征可能被攻击者利用来窃取密钥信息。当sm9算法实现时存在时间特性上的差异,例如对不同密钥或明文的执行时间不一致时,那么攻击者可能通过测量这些操作的时间来推断密钥信息。此外,攻击者还可能在运算步骤中故意插入一个错误从而导致运算过程中泄露相关密钥信息。


技术实现思路

1、为解决上述问题,本专利技术公开了一种基于sm9解密算法的安全防护方法。

2、为达到上述目的,本专利技术的技术方案如下:

3、一种基于sm9解密算法的安全防护方法,包括如下步骤:

4、步骤1,从密文c中取出比特串c1,根据数据类型转换为椭圆曲线上的点,验证c1∈g1是否成立,若不成立则报错并退出,若成立则计算hash=sm3(c,k1,k2,deb);其中,k1为分组密码算法中密钥,k2为函数mac(k2,z)中密钥,z为比特串,deb为用户b的私钥,sm3为sm3杂凑运算;

5、步骤2,生成1个256比特的随机数k;

6、步骤3,采用naf点乘算法计算deb'=k*deb,并计算k-1;

7、步骤4,计算gt中的元素w=e(c1,deb');e为从g1xg2到gt的双线性对,g1、g2、gt均为阶为素数n的加法循环群;

8、步骤5,计算w'=w^k-1,将w'的数据类型转换为比特串;

9、步骤6,根据加密明文的方法分类进行计算:

10、c)如果加密明文的方法是基于密钥派生函数的序列密码算法,则

11、4)计算整数klen=mlen+k2_len,然后计算k'=kdf(c1||w'||idb,klen),令k1'为k'

12、最左边的mlen比特,k2'为剩下的k2_mlen比特,其中kdf采用ct随机化方式,若k1'为全0比特串,则报错并退出;采用ct随机化方式的kdf函数在每次hv运算之前,生成一个随机数r,r的位宽与ct的位宽相同,根据r从剩余的ct中随机选择一个值参与运算;其中,mlen为密文c=c1||c3||c2中c2的比特长度,k1_len为k1的比特长度,k2_len为k2的比特长度;

13、5)计算hash'=sm3(c,k1,k2,deb),如果hash'≠hash,则退出并报错;

14、6)计算m'=c2⊕k1',⊕为长度相等的两个比特串按比特的模2加运算;

15、d)如果加密明文的方法是结合密钥派生函数的分组密码算法,则

16、3)计算整数klen=k1_len+k2_len,然后计算k'=kdf(c1||w'||idb,klen),令k1'为k'最左边的k1_len比特,k2'为剩下的k2_mlen比特,若k1'为全0比特串,则报错并退出;

17、4)计算hash'=sm3(c,k1,k2,deb),如果hash'≠hash,则退出并报错;

18、计算m'=dec(k1',c2),dec为分组解密算法;

19、步骤7,计算u=mac(k2',c2),从c中取出比特串c3,如果u≠c3,则报错并退出;

20、步骤8,对明文m'再进行一次加密运算,如果加密结果不等于c,则报错并退出;

21、步骤9,输出明文m'。

22、进一步的,每次进行点乘运算前,再次对所有的参数进行sm3杂凑运算,如果此时参数的杂凑值和第一次运算的值不一致,则说明椭圆曲线参数被篡改或者有错误注入,同时打印错误信息,如果杂凑值一致,则再进行点乘运算。

23、进一步的,所述步骤8中的加密运算包括如下步骤:

24、a1:计算群g1中的元素qb=[h1(idb||hid,n)]p1+ppub-e;其中g1为阶为素数n的加法循环群,h1()为由密码杂凑函数派生的密码函数,idb为用户b的标识,p1为群g1的生成元,ppub-s为签名主公钥,hid为私钥生成函数识别符;

25、a2:产生随机数r∈[1,n-1],n为大于2191的素数;

26、a3:计算群g1中的元素c1=[r]qb;

27、a4:计算群gt中的元素g=e(ppub-e,p2),p2为群g2的生成元;

28、a5:计算群gt中的元素w=gr;gr为乘法群中运算g的r次幂;

29、a6:根据加密明文的方法分类进行计算:

30、c)如果加密明文的方法是基于密钥派生函数的序列密码算法,则

31、3)计算整数klen=mlen+k2_len,然后计算k=kdf(c1||w||idb,klen),令k1为k最左边的k1_len比特,k2为剩下的k2_mlen比特,若k1为全0比特串,则返回步骤2;

32、4)计算c2=m⊕k1;

33、d)如果加密明文的方法是结合密钥派生函数的分组密码算法,则

34、3)计算整数klen=k1_len+k2_len,然后计算k=kdf(c1||w||idb,klen),令k1为k最左边的k1_len比特,k2为剩下的k2_mlen比特,若k1为全0比特串,则返回步骤2;

35、4)计算c2=enc(k1,m);

36、a7:计算c3=mac(k2,c2);

37、a8:输出密文c=c1||c3||c2。

38、本专利技术的有益效果为:

39、1.本专利技术将私钥deb先用一个256比特随机数k掩码,得到deb'=k*deb,同时计算k-1的值,然后再相应的计算w'=e(c1,deb'),随后再计算w=(w')^k-1=e(c1,deb')^k-1=e(c1,k*deb)^k-1=e(c1,k-1*k*deb)=e(c1,deb)运算,得到正确的结果,并在点乘运算中,对点乘的操作数进行了随机化操作,同时都采用naf点乘运算算法,因此整个解密算法的过程中,私钥都未泄露,同时中间过程都进行了全流程掩码,使得功耗、电磁和密钥信息无相关性,从而能够抵御能量功耗和电磁攻击。

40、2.由于在进行掩码时运算时间是根据随机数的值来确定的,本文档来自技高网...

【技术保护点】

1.一种基于SM9解密算法的安全防护方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的基于SM9解密算法的安全防护方法,其特征在于,每次进行点乘运算前,再次对所有的参数进行SM3杂凑运算,如果此时参数的杂凑值和第一次运算的值不一致,则说明椭圆曲线参数被篡改或者有错误注入,同时打印错误信息,如果杂凑值一致,则再进行点乘运算。

3.根据权利要求1所述的基于SM9解密算法的安全防护方法,其特征在于,所述步骤8中的加密运算包括如下步骤:

【技术特征摘要】

1.一种基于sm9解密算法的安全防护方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的基于sm9解密算法的安全防护方法,其特征在于,每次进行点乘运算前,再次对所有的参数进行sm3杂凑运算,如果此时参数的杂凑值和第...

【专利技术属性】
技术研发人员:钟名富黄杰肖佐楠汪建强万刘蝉
申请(专利权)人:东南大学
类型:发明
国别省市:

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

1