数据处理和密钥保护方法、装置、设备、存储介质和程序与流程

文档序号:27275260发布日期:2021-11-06 03:09阅读:177来源:国知局
数据处理和密钥保护方法、装置、设备、存储介质和程序与流程

1.本公开涉及计算机技术领域,具体涉及数据处理和密钥保护方法、装置、设备、存储介质和程序。


背景技术:

2.随着信息技术和计算机技术的发展和广泛应用,信息安全越来越受到人们的重视,而信息安全需要采用密码算法。目前常用的1024位rsa算法面临严重的安全威胁。由于sm2算法安全性高、计算量小、处理速度快等优势,sm2密码算法具有逐渐取代rsa算法的趋势。例如,在各行业中大量使用了rsa加密算法,而sm2加密算法也在逐渐推广。
3.在电力系统中,rsa加密算法、sm2加密算法可以广泛应用于多种场景,例如:远程抄表的数据加密传输、电力无线专网通信中无线终端和主站间的数据加密传输、配电网客户端和安全网关间的数据加密传输等。电力系统中的rsa算法、sm2算法可以在芯片中实现,以获得较高的可靠性和运算效率。
4.在芯片中实现的例如sm2算法等的加密算法的核心是点乘运算。点乘运算可以有例如私钥的密钥参与,并采用逐数据处理窗口的数据处理方式实现点乘运算。而在当前实现点乘运算的固定窗口法等传统方法中,数据串中可能出现全零窗口,即其中的数据比特全为0的数据处理窗口。在传统方法处理全零窗口时,与处理非全零窗口相比,电压、电流、功率等芯片物理状态有可能发生变化,比如有可能出现电压、电流、功率下降等情况,使得其运算会不同,攻击者可以根据不同运算产生的功耗曲线特征进行攻击。通过检测芯片物理状态的变化,分析全零窗口,可以对点乘运算进行攻击,从而导致密钥的泄露,影响数据安全。因此,在数据处理方案中亟需一种消除数据串中全零窗口,从而消除由于全零窗口导致的芯片物理状态的变化,避免数据处理过程中的点乘运算被攻击,防止导致密钥的信息泄露,以保护密钥、保障数据安全的数据处理方案。在例如公钥rsa算法、私钥rsa算法的rsa算法的模幂运算中,同样也会常常采用窗口法进行防护,因此也存在全零窗口导致芯片信息泄露物理状态变化,从而可以被外部检测、受到攻击的问题。


技术实现要素:

5.为了解决相关技术中的问题,本公开实施例提供一种数据处理和密钥保护方法、装置、设备、存储介质和程序。
6.第一方面,本公开实施例中提供了一种数据处理方法,用于消除数据串中的全零窗口,包括:数据获取步骤,获取输入的密钥数据;数据随机化步骤,对所述密钥数据进行随机化处理,得到随机化数据;全零窗口消除步骤,将所述随机化数据减去预设非零序列,得到全零窗口消除数据。
7.结合第一方面,本公开在第一方面的第一种实现方式中,
所述数据随机化步骤包括:采用最高位为1的整数字长的随机数和椭圆曲线的阶,对所述密钥数据进行随机化,得到所述随机化数据。
8.结合第一方面或第一方面的第一种实现方式,本公开在第一方面的第二种实现方式中,所述预设非零序列包括:在数据处理窗口中的至少一个比特为1,其余比特为0的序列。
9.结合第一方面或第一方面的第二种实现方式,本公开在第一方面的第三种实现方式中,所述预设非零序列包括:在所述数据处理窗口中的任意一个比特为1,其余比特为0的序列。
10.结合第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,所述预设非零序列包括:在所述数据处理窗口中的末位比特为1,其余比特为0的序列。
11.第二方面,本公开实施例中提供了一种传输数据中的密钥保护方法,包括:数据获取步骤,获取输入的密钥数据;数据随机化步骤,对所述密钥数据进行随机化处理,得到随机化数据;全零窗口消除步骤,将所述随机化数据减去预设非零序列,得到全零窗口消除数据;窗口划分步骤,按照预设数据处理窗口长度对所述全零窗口消除数据进行窗口划分,得到划分窗口后数据;点乘步骤,获取预定坐标,初始化第一坐标,逐数据处理窗口计算所述预定坐标和所述划分窗口后数据的点乘计算,结合所述点乘计算的结果和所述第一坐标的倍点计算结果,更新所述第一坐标,得到第一目标坐标。
12.结合第二方面,本公开在第二方面的第一种实现方式中,还包括:坐标转换步骤,将所述第一目标坐标转换为指定维度的第二目标坐标。
13.结合第二方面的第一种实现方式,本公开在第二方面的第二种实现方式中,还包括:校验步骤,对所述指定维度的第二目标坐标进行校验。
14.结合第二方面至第二方面的第二种实现方式中的任一项,本公开在第二方面的第三种实现方式中,所述获取预定坐标包括:坐标随机化子步骤,对指定坐标进行随机化,得到随机化坐标,其中,所述指定坐标为满足椭圆曲线方程的坐标;预计算子步骤,采用指定递增序列对所述随机化坐标进行预计算,得到所述预定坐标。
15.结合第二方面的第三种实现方式,本公开在第二方面的第四种实现方式中,所述采用指定递增序列对所述随机化坐标进行预计算包括:采用所述指定递增序列中的元素和所述随机化坐标进行乘法计算。
16.结合第二方面至第二方面的第二种实现方式中的任一项,本公开在第二方面的第五种实现方式中,
所述点乘步骤中的所述结合所述点乘计算的结果和所述第一坐标的倍点计算结果,更新所述第一坐标包括:对所述点乘计算的结果和所述第一坐标的倍点计算结果进行点加计算,使用所述点加计算的结果更新所述第一坐标。
17.结合第二方面至第二方面的第二种实现方式中的任一项,本公开在第二方面的第六种实现方式中,所述点乘步骤还包括:在所述第一坐标为无穷远点时,计算所述预定坐标和当前数据处理窗口的第一前序数据处理窗口内的所述划分窗口后数据的点乘,使用所述点乘的结果更新所述第一坐标,并更新所述当前数据处理窗口为所述当前数据处理窗口的第二前序数据处理窗口。
18.结合第二方面至第二方面的第二种实现方式中的任一项,本公开在第二方面的第七种实现方式中,所述数据随机化步骤包括:采用最高位为1的整数字长的随机数和椭圆曲线的阶,对所述密钥数据进行随机化,得到所述随机化数据。
19.结合第二方面至第二方面的第二种实现方式中的任一项,本公开在第二方面的第八种实现方式中,所述预设非零序列包括:在数据处理窗口中的至少一个比特为1,其余比特为0的序列。
20.结合第二方面的第八种实现方式中的任一项,本公开在第二方面的第九种实现方式中,所述预设非零序列包括:在所述数据处理窗口中的任意一个比特为1,其余比特为0的序列。
21.结合第二方面的第九种实现方式,本公开在第二方面的第十种实现方式中,所述预设非零序列包括:在所述数据处理窗口中的末位比特为1,其余比特为0的序列。
22.结合第二方面至第二方面的第二种实现方式中的任一项,本公开在第二方面的第十一种实现方式中,所述窗口划分步骤包括:在所述数据处理窗口中,对所述全零窗口消除数据加上与所述预设非零序列相对应的特定数值,得到所述窗口划分后数据。
23.结合第二方面的第一种实现方式,本公开在第二方面的第十二种实现方式中,所述坐标转换步骤包括:对所述第一目标坐标的第三分量进行求逆计算,得到中间分量;所述第一目标坐标的第一分量和所述中间分量的平方计算的结果相乘,得到所述第二目标坐标的第一分量;所述第一目标坐标的第二分量和所述中间分量的立方计算的结果相乘,得到所述第二目标坐标的第二分量。
24.结合第二方面的第二种实现方式,本公开在第二方面的第十三种实现方式中,所述校验步骤包括:校验所述指定维度的第二目标坐标是否处于椭圆曲线上。
25.结合第二方面的第十三种实现方式,本公开在第二方面的第十四种实现方式中,当所述指定维度的第二目标坐标处于椭圆曲线上时,判断所述传输数据中的密钥
保护方法未受到差分错误分析攻击,使用所述指定维度的第二目标坐标进行加密计算;和/或当所述指定维度的第二目标坐标不处于椭圆曲线上时,判断所述传输数据中的密钥保护方法受到差分错误分析攻击,丢弃所述指定维度的第二目标坐标,和/或发出告警信息。
26.第三方面,本公开实施例中提供了一种消除数据串中的全零窗口的数据处理装置,包括:数据获取模块,用于获取输入的密钥数据;数据随机化模块,用于对密钥数据进行随机化处理,得到随机化数据;全零窗口消除模块,用于将所述随机化数据减去预设非零序列,得到全零窗口消除数据。
27.结合第三方面,本公开在第三方面的第一种实现方式中,所述数据随机化模块用于:采用最高位为1的整数字长的随机数和椭圆曲线的阶,对所述密钥数据进行随机化,得到所述随机化数据。
28.结合第三方面或第三方面的第一种实现方式,本公开在第三方面的第二种实现方式中,所述预设非零序列包括:在数据处理窗口中的至少一个比特为1,其余比特为0的序列。
29.结合第三方面的第二种实现方式,本公开在第三方面的第三种实现方式中,所述预设非零序列包括:在所述数据处理窗口中的任意一个比特为1,其余比特为0的序列。
30.结合第三方面的第三种实现方式,本公开在第三方面的第四种实现方式中,所述预设非零序列包括:在所述数据处理窗口中的末位比特为1,其余比特为0的序列。
31.第四方面,本公开实施例中提供了一种传输数据中的密钥保护装置,其特征在于,包括:数据获取模块,用于获取输入的密钥数据;数据随机化模块,用于对所述密钥数据进行随机化处理,得到随机化数据;全零窗口消除模块,用于将所述随机化数据减去预设非零序列,得到全零窗口消除数据;窗口划分模块,用于按照预设数据处理窗口长度对所述全零窗口消除数据进行窗口划分,得到划分窗口后数据;点乘模块,用于获取预定坐标,初始化第一坐标,逐数据处理窗口计算所述预定坐标和所述划分窗口后数据的点乘计算,结合所述点乘计算的结果和所述第一坐标的倍点计算结果,更新所述第一坐标,得到第一目标坐标。
32.结合第四方面,本公开在第四方面的第一种实现方式中,还包括:坐标转换模块,用于将所述第一目标坐标转换为指定维度的第二目标坐标。
33.结合第四方面的第一种实现方式,本公开在第四方面的第二种实现方式中,还包括:
校验模块,用于对所述指定维度的第二目标坐标进行校验。
34.结合第四方面至第四方面的第二种实现方式中的任一项,本公开在第四方面的第三种实现方式中,所述获取预定坐标包括:坐标随机化子模块,用于对指定坐标进行随机化,得到随机化坐标,其中,所述指定坐标为满足椭圆曲线方程的坐标;预计算子模块,用于采用指定递增序列对所述随机化坐标进行预计算,得到所述预定坐标。
35.结合第四方面的第三种实现方式,本公开在第四方面的第四种实现方式中,所述采用指定递增序列对所述随机化坐标进行预计算包括:采用所述指定递增序列中的元素和所述随机化坐标进行乘法计算。
36.结合第四方面至第四方面的第二种实现方式中的任一项,本公开在第四方面的第五种实现方式中,所述点乘模块中的所述结合所述点乘计算的结果和所述第一坐标的倍点计算结果,更新所述第一坐标包括:对所述点乘计算的结果和所述第一坐标的倍点计算结果进行点加计算,使用所述点加计算的结果更新所述第一坐标。
37.结合第四方面至第四方面的第二种实现方式中的任一项,本公开在第四方面的第六种实现方式中,所述点乘模块还用于:在所述第一坐标为无穷远点时,计算所述预定坐标和当前数据处理窗口的第一前序数据处理窗口内的所述划分窗口后数据的点乘,使用所述点乘的结果更新所述第一坐标,并更新所述当前数据处理窗口为所述当前数据处理窗口的第二前序数据处理窗口。
38.结合第四方面至第四方面的第二种实现方式中的任一项,本公开在第四方面的第七种实现方式中,其特征在于,所述数据随机化模块用于:采用最高位为1的整数字长的随机数和椭圆曲线的阶,对所述密钥数据进行随机化,得到所述随机化数据。
39.结合第四方面至第四方面的第二种实现方式中的任一项,本公开在第四方面的第八种实现方式中,所述预设非零序列包括:在数据处理窗口中的至少一个比特为1,其余比特为0的序列。
40.结合第四方面的第八种实现方式,本公开在第四方面的第九种实现方式中,所述预设非零序列包括:在所述数据处理窗口中的任意一个比特为1,其余比特为0的序列。
41.结合第四方面的第九种实现方式,本公开在第四方面的第十种实现方式中,所述预设非零序列包括:在所述数据处理窗口中的末位比特为1,其余比特为0的序列。
42.结合第四方面至第四方面的第二种实现方式中的任一项,本公开在第四方面的第十一种实现方式中,所述窗口划分模块用于:在所述数据处理窗口中,对所述全零窗口消除数据加上与所述预设非零序列相对应的特定数值,得到所述窗口划分后数据。
43.结合第四方面的第十一种实现方式,本公开在第四方面的第十二种实现方式中,
所述坐标转换模块用于:对所述第一目标坐标的第三分量进行求逆计算,得到中间分量;所述第一目标坐标的第一分量和所述中间分量的平方计算的结果相乘,得到所述第二目标坐标的第一分量;所述第一目标坐标的第二分量和所述中间分量的立方计算的结果相乘,得到所述第二目标坐标的第二分量。
44.结合第四方面的第二种实现方式,本公开在第四方面的第十三种实现方式中,所述校验模块用于:校验所述指定维度的第二目标坐标是否处于椭圆曲线上。
45.结合第四方面的第三种实现方式,本公开在第四方面的第十四种实现方式中,当所述指定维度的第二目标坐标处于椭圆曲线上时,判断所述传输数据中的密钥保护装置未受到差分错误分析攻击,使用所述指定维度的第二目标坐标进行加密计算;和/或当所述指定维度的第二目标坐标不处于椭圆曲线上时,判断所述传输数据中的密钥保护装置受到差分错误分析攻击,丢弃所述指定维度的第二目标坐标,和/或发出告警信息。
46.结合第四方面至第四方面的第二种实现方式中的任一项,本公开在第四方面的第十五种实现方式中,将所述数据传输中的密钥保护装置集成在芯片中,所述芯片在处理所述数据处理窗口的数据的过程中的物理状态处于预定范围。
47.结合第四方面的第十五种实现方式中,本公开在第四方面的第十六种实现方式中,所述芯片包括以下芯片中的至少一种:电力管理芯片,燃气管理芯片,银行管理芯片,通信管理芯片。
48.第五方面,本公开实施例中提供了一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如第一方面、第一方面的第一种实现方式到第四种实现方式、第二方面、第二方面的第一种实现方式到第十四种实现方式任一项所述的方法。
49.第六方面,本公开实施例中提供了一种可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现如第一方面、第一方面的第一种实现方式到第四种实现方式、第二方面、第二方面的第一种实现方式到第十四种实现方式任一项所述的方法。
50.第七方面,本公开实施例中提供了一种计算机程序,其中包括计算机指令,该计算机指令被处理器执行时实现如第一方面、第一方面的第一种实现方式到第四种实现方式、第二方面、第二方面的第一种实现方式到第十四种实现方式任一项所述的方法。
51.本公开实施例提供的技术方案可以包括以下有益效果:根据本公开实施例提供的技术方案,通过数据获取步骤,获取输入的密钥数据;数据随机化步骤,对密钥数据进行随机化处理,得到随机化数据;全零窗口消除步骤,将随机化数据减去预设非零序列,得到全零窗口消除数据,从而消除全零窗口。
52.通过消除全零窗口,可以防止点乘运算在计算全零窗口数据时物理状态发生变化而受到攻击,从而防止密钥泄露,保障数据安全。通过这种方式,保证了电力系统的远程抄表的数据加密传输、电力无线专网通信中无线终端和主站间的数据加密传输、配电网客户
端和安全网关间的数据加密传输等应用场景中的数据可靠传输。而在燃气系统、银行系统、通信系统中,也可以获得类似的可靠加密数据传输的效果。
53.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
54.结合附图,通过以下非限制性实施方式的详细描述,本公开的其他特征、目的和优点将变得更加明显。在附图中:图1示出根据本公开一实施方式的用于消除数据串中的全零窗口的数据处理方法的流程图;图2示出根据本公开一实施方式的传输数据中的密钥保护方法的流程图;图3示出根据本公开另一实施方式的传输数据中的密钥保护方法的流程图;图4示出根据本公开又一实施方式的传输数据中的密钥保护方法的流程图;图5示出根据本公开实施方式的图2的步骤s205中的获取预定坐标的具体流程图;图6示出根据本公开一实施方式的消除数据串中的全零窗口的数据处理装置的结构框图;图7示出根据本公开一实施方式的传输数据中的密钥保护装置的结构框图;图8示出根据本公开一实施方式的电子设备的结构框图;图9是适于用来实现根据本公开一实施方式的消除数据串中的全零窗口的数据处理方法或传输数据中的密钥保护方法的计算机系统的结构示意图。
具体实施方式
55.下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
56.在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的标签、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他标签、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
57.另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的标签可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
58.在本公开的实施例中,如图1中的步骤s101、s102,对于获取的例如长度为256比特的输入密钥数据k_sec进行随机化计算,得到随机化数据k_random其中,r1是整数字长的随机数,而且r1的最高位为1;#e是椭圆曲线的阶数。r1具有随机化特征,是预先设定的随机数。椭圆曲线e是满足方程的曲线,其中x、y分别是椭圆曲线上的点的横轴、纵轴坐标,a、b是椭圆曲线的参数。
59.在本公开的实施例中,密钥数据可以是需要进行保护,防止泄露的私钥数据,例如最高位为1的私钥数据。
60.本领域普通技术人员可以理解,密钥数据k_sec的长度可以是除256比特之外的128比特,或512比特,或者其它长度,本公开对此不作限定。
61.在点乘运算中,对数据串,即随机化数据k_random进行处理时,可采用逐数据处理窗口的方式进行处理,将预设数据处理窗口的长度设置为w比特。此时,假设随机化数据k_random包含l个数据处理窗口。随机化数据k_random中可能出现全零窗口,即数据处理窗口中的所有比特均为0的窗口。当芯片的点乘运算处理全零窗口时,和处理非全零窗口相比,芯片的物理状态会发生变化。例如,芯片的电流、电压、功率中的至少一项会降低m%。通过检测芯片在处理全零窗口时的电流、电压、功率中的至少一项的降低,可以对芯片进行攻击,从而破解密钥数据。
62.在本公开的实施例中,w比特可以8比特,或16比特,或32比特,或其它长度,本公开对此不作限定。
63.如图1的步骤s103,全零窗口消除数据k_cancel_zero可以通过序列减法计算得到其中seq1是与随机化数据k_random具有相同长度的预设非零序列。预设非零序列seq1可包括多个数据处理窗口,在seq1的每个数据处理窗口中,最低位序列值为1,其余所有位序列值均为0,即预设非零序列seq1可表示为:seq1=00...100...100...1...00...1。通过上述序列减法计算,可得到不再包括全零窗口的全零窗口消除数据k_cancel_zero。
64.本领域普通技术人员可以理解,预设非零序列seq1也可以在每个数据处理窗口中,任意一位序列值为1,其余所有位序列值均为0;或在每个数据处理窗口中,在指定的至少一位的序列值为1,例如最低位、次低位序列值为1,其余所有位序列值均为0。
65.本领域普通技术人员可以理解,除了点乘运算,例如rsa算法中的模幂运算等其它运算也可以受到全零窗口的影响,本公开对此不作限定。
66.在图2中,步骤s201、s202、s203的具体处理和图1中的步骤s101、s102、s103相同。
67.如图2的步骤s204,对全零窗口消除数据k_cancel_zero,按照预设数据处理窗口长度w进行划分,在数据处理窗口中加上与预设非零序列seq1相对应的特定数值,得到窗口划分后数据( k_split
l
‑1, k_split
l
‑2, k_split1, k_split
0 ),l为数据处理窗口个数。当seq1的每个数据处理窗口中,最低位序列值为1,其余所有位序列值均为0,即数据处理窗口中的预设非零序列seq1为00...1时,与预设非零序列seq1相对应的特定数值为1。当seq1的每个数据处理窗口中,次低位序列值为1,其余所有位序列值均为0,即数据处理窗口中的预设非零序列seq1为0...010时,与预设非零序列seq1相对应的特定数值为2,或比特序列10。当seq1的每个数据处理窗口中,最低位和次低位序列值为1,其余所有位序列值均为0,即数据处理窗口中的预设非零序列seq1为0...011时,与预设非零序列seq1相对应的特定数值为3,或比特序列11。
68.本领域普通技术人员可以理解,当数据处理窗口中的预设非零序列seq1为其它序列时,预设非零序列seq1相对应的特定数值也相应的进行更新。
69.通过在数据处理窗口中加上与预设非零序列seq1相对应的数值,实现了在消除全零窗口时,对随机化数据k_random减去预设非零序列seq1的补偿计算,保证了整体点乘运
算结果的正确性。
70.在本公开的实施例中,可以采用例如下述伪代码的步骤具体实现由全零窗口消除数据k_cancel_zero得到窗口划分后数据( k_split
l
‑1, k_split
l
‑2, k_split1, k_split
0 )。
71.1. 设置循环变量i=02. 执行循环体while i< l do 2.1. t = mod (k_cancel_zero, 2
w
),其中mod计算是除法后取余数计算; 2.2. k_split
i = t,更新k_cancel_zero = k_cancel_zero
ꢀ‑ꢀ
k_split
i
,更新k_split
i = 1 + k_split
i
; 2.3. 更新i = i + 1; 2.4. 更新k_cancel_zero = k_cancel_zero / 2
w
;3. return在上述伪代码的计算过程中,对i、k_cancel_zero、k_split
i
执行了原位赋值操作,其具体数值发生了变化。
72.本领域普通技术人员可以理解,也可以用其它具体计算方式实现由全零窗口消除数据k_cancel_zero得到窗口划分后数据( k_split
l
‑1, k_split
l
‑2, k_split1, k_split
0 ),例如采用更多的缓存进行计算,而非对k_cancel_zero、k_split
i
进行原位赋值操作,或对循环体展开的方式提高并行度,本公开对此不作限定。
73.在本公开的实施例中,如图5的步骤s501,对满足椭圆曲线方程的指定坐标p1(x1,y1),通过坐标随机化处理得到随机化坐标其中,指定坐标p1(x1,y1)由算法库输入得到,r2是随机数。
74.本领域普通技术人员可以理解,也可以使用r2对p1(x1,y1)进行其它运算得到p_random(x1,y1,z1),本公开对此不作限定。
75.在本公开的实施例中,如图5的步骤s502,对特定递增序列(1, 2, ......2
w
)和随机化坐标p_random(x1, y1, z1)执行预计算,具体是乘法计算,得到预定坐标在既往不消除全零窗口的例如固定窗口法的算法中,使用2
w

1个元素的序列(1, 2, ......2
w

1)进行预计算。而在本公开的实施例中,通过使用2
w
个元素的特定递增序列(1, 2, ......2
w
),保证了对随机化数据k_random进行减法计算,消除全零窗口后的计算结果正确性。
76.在本公开的实施例中,如图2的步骤s205,通过最后一个窗口中的划分窗口后数据k_split
l
‑1与预定坐标p2(x2,y2,z2)的点乘计算对第一坐标进行初始化,得到初始化的第一坐标在本公开的实施例中,逐数据处理窗口计算预定坐标和划分窗口后数据的点乘计算,对点乘计算的结果和第一坐标的倍点计算结果进行点加计算,更新第一坐标,得到第一
目标坐标。
77.在本公开的实施例中,可以通过下述伪代码的方式获取第一目标坐标q_dest1( x3, y3, z3 )。
78.fori froml

2 down to 0 {q = q + k_split
i * p2
ꢀꢀꢀꢀꢀꢀꢀꢀ
if q为无穷远点{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
q = k_split
i

1 * p2i = i
ꢀ‑ꢀ
2}}q_dest1( x3, y3, z3 ) = q。
79.其中,是对第一坐标q的倍点计算;k_split
i * p2是在当前数据窗口i中,预定坐标和划分窗口后数据的点乘计算;q = q + k_split
i * p2是点乘计算的结果和第一坐标的倍点计算结果进行点加计算。
80.当计算过程中的q为无穷远点时,通过预定坐标p2和当前数据处理窗口i的第一前序数据处理窗口i

1内的划分窗口后数据k_split
i
‑1的点乘,重置第一坐标q = k_split
i

1 * p2,并且更新当前窗口为i = i
ꢀ‑ꢀ
2。
81.在上述伪代码的计算过程中,对i、q执行了原位赋值操作,其具体数值发生了变化。
82.在本公开的实施例中,如图3的步骤s301,可以对三维的第一目标坐标q_dest1( x3, y3, z3 )进行坐标转换,得到指定维度,即二维的第二目标坐标q_dest2( x2, y2 )。
83.在本公开的实施例中,可以使用下述伪代码方式实现将三维第一目标坐标q_dest1( x3, y3, z3 )转换为二维第二目标坐标q_dest2( x2, y2 )。
84.在本公开的实施例中,第一目标坐标q_dest1( x3, y3, z3 )是仿射坐标,第二目标坐标q_dest2( x2, y2 )是射影坐标。
85.z2 = z3
‑1x2 = x3*z22y2 = y3*z23其中,z3
‑1是z3的求逆计算。
86.在芯片实现中,求逆计算较为耗时。在本公开的实施例中,使用1次求逆计算,再进行耗时较少的平方计算、立方计算,可以提升计算性能。
87.在本公开的实施例中,上述从获取随机化数据至得到二维第二目标坐标q_dest2( x2, y2 )的所有计算过程共同构成点乘运算。
88.在本公开的实施例中,对应图4的步骤s401,可以对第二目标坐标q_dest2( x2, y2 )进行校验,即通过校验x2、y2是否满足椭圆曲线方程
,即q_dest2( x2, y2 )是否位于椭圆曲线上,来判断点乘运算是否受到差分错误分析(differential fault analysis,dfa)攻击。
89.当第二目标坐标不位于椭圆曲线上时,判断点乘运算受到dfa攻击,可以丢弃受攻击的数据,和/或发出告警信息,或者进行其它处理,本公开对此不作限定。当第二目标坐标位于椭圆曲线上时,判断点乘运算未受到dfa攻击,得到正确的第二目标坐标用于后续加密计算。
90.在本公开的实施例中,在rsa算法的模幂运算中,可以采用数据处理窗口的方式,逐数据处理窗口进行计算,从而节约计算量。当模幂运算中出现全零窗口时,电压、电流、功率等芯片物理状态有可能发生变化,例如有可能出现电压、电流、功率下降等情况。通过检测芯片物理状态的变化,分析全零窗口,可以对rsa算法的模幂运算进行攻击,从而导致密钥泄露,影响数据安全。
91.在本公开的实施例中,可以采用消除全零窗口的方式,避免模幂运算受到攻击。
92.在本公开的实施例中,通过以下方式进行公钥rsa算法的模幂运算其中,a是待加密数据,e是公钥的第一部分,m是公钥的第二部分,w是数据处理窗口长度,数据处理窗口个数len(e)是e的比特数,是向上取整数运算。
93.当len(e)不能被w整除时,在e的最高位前补0至l*w位,得到e_padding。
94.当len(e)可以被w整除时,e_padding = e。
95.e_padding中可能包括全零窗口,即数据处理窗口中所有比特均为0的窗口。
96.全零窗口消除密钥e_cancel_zero可以通过序列减法计算得到其中seq2是与e_padding具有相同长度的预设非零序列。预设非零序列seq2可包括多个数据处理窗口,在seq2的每个数据处理窗口中,最低位序列值为1,其余所有位序列值均为0,即预设非零序列seq2可表示为:seq2 = 00...100...100...1...00...1。通过上述序列减法计算,可得到不再包括全零窗口的全零窗口消除密钥e_cancel_zero。
97.在本公开的实施例中,通过以下伪代码的步骤从全零窗口消除密钥e_cancel_zero得到窗口划分后密钥(e_split
l
‑1, e_split
l
‑2, e_split0)。
98.1. 设置循环变量i = 02. 执行循环体while e_cancel_zero> 0 do2.1 q = mod(e_cancel_zero, 2
w
),其中mod计算是除法后取余数计算;2.2 e_split
i
= q,e_cancel_zero=e_cancel_zero

e
i
,更新e_split
i
= 1+e_split
i
;2.3. 更新i = i + 1;2.4 更新e_cancel_zero = e_cancel_zero / 2
w
;3. return ( e_split
l
‑1, e_split
l
‑2, e_split
0 )
在上述伪代码的计算过程中,对i、e_canel_zero、e_spliti执行了原位赋值操作,其具体数值发生了变化。
99.本领域普通技术人员可以理解,也可以用其它具体计算方式实现从全零窗口消除密钥e_cancel_zero得到窗口划分后密钥(e_split
l
‑1, e_split
l
‑2, e_split0)。例如,使用更多的缓存进行计算,而非对i、e_canel_zero、e_split
i
执行原位赋值操作的方式,或对循环体展开的方式提高并行度,本公开对此不作限定。
100.在本公开的实施例中,通过以下伪代码的步骤对a进行逐数据处理窗口的模幂运算,得到s4. 初始化;5. 执行循环体for i = l

2 downto 05.1;5.2;6. return (s)在上述伪代码的计算过程中,对i、s执行了原位赋值操作,其具体数值发生了变化。
101.本领域普通技术人员可以理解,也可以用其它具体计算方式实现对a进行逐数据处理窗口的模幂运算,得到s。例如,使用更多的缓存进行计算,而非对i、s执行原位赋值操作的方式,或对循环体展开的方式提高并行度,本公开对此不作限定。
102.本领域普通技术人员可以理解,对于私钥rsa算法的模幂运算,也可以由于全零窗口受到攻击,也可以采用消除全零窗口的方式避免受到攻击,处理方法与上述公钥rsa算法的模幂运算基本一致,本公开在此不再赘述。
103.图1示出根据本公开一实施方式的消除数据串中的全零窗口的数据处理方法的流程图。
104.如图1所示,消除数据串中的全零窗口的数据处理方法包括:步骤s101、s102、s103。
105.在步骤s101中,获取输入的密钥数据。
106.在步骤s102中,对密钥数据进行随机化处理,得到随机化数据。
107.在步骤s103中,将随机化数据减去预设非零序列,得到全零窗口消除数据。
108.步骤s101是数据获取步骤,步骤s102是数据随机化步骤,步骤s103是全零窗口消除步骤。
109.在本公开的实施例中,获取密钥数据k_sec后,对密钥数据k_sec进行随机化计算,得到随机化数据k_random随机化数据k_random通过减去预设非零序列seq1,得到全零窗口消除数据根据本公开实施例提供的技术方案,通过数据获取步骤,获取输入的密钥数据;数据随机化步骤,对密钥数据进行随机化处理,得到随机化数据;全零窗口消除步骤,将随机化数据减去预设非零序列,得到全零窗口消除数据,从而消除全零窗口。
)。
130.1. 设置循环变量i=02. 执行循环体while i< l do 2.1. t = mod (k_cancel_zero, 2
w
),其中mod()计算是除法后取余数计算; 2.2. k_split
i = t,更新k_cancel_zero = k_cancel_zero
ꢀ‑ꢀ
k_split
i
,更新k_split
i = 1 + k_split
i
; 2.3. 更新i = i + 1; 2.4. 更新k_cancel_zero = k_cancel_zero / 2
w
;3. return在上述伪代码的计算过程中,对i、k_cancel_zero、k_split
i
执行了原位赋值操作,其具体数值发生了变化。
131.本领域普通技术人员可以理解,也可以用其它具体计算方式实现由全零窗口消除数据k_cancel_zero得到窗口划分后数据( k_split
l
‑1, k_split
l
‑2, k_split1, k_split
0 ),例如,使用更多的缓存进行计算,而非对k_cancel_zero、k_split
i
执行了原位赋值操作的方式,或对循环体展开的方式提高并行度,本公开对此不作限定。
132.在本公开的实施例中,可以通过以下伪代码方式实现点乘步骤,获得第一目标坐标q_dest1( x3, y3, z3 )。
133.fori froml

2 down to 0 {q = q + k_split
i * p2
ꢀꢀꢀꢀꢀꢀꢀꢀ
if q为无穷远点{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
q = k_split
i

1 * p2i = i
ꢀ‑ꢀ
2}}q_dest1( x3, y3, z3 ) = q其中,p2(x2,y2,z2)是预定坐标,预定坐标p2(x2,y2,z2)通过以下方式得到:满足椭圆曲线方程的指定坐标p1(x1,y1)通过坐标随机化处理得到随机化坐标p_random(x1, y1, z1),再对特定递增序列(1, 2, ......2
w
)和随机化坐标p_random(x1, y1, z1)执行乘法计算,得到预定坐标p2(x2,y2,z2)。
134.根据本公开实施例提供的技术方案,通过数据获取步骤,获取输入的密钥数据;数据随机化步骤,对密钥数据进行随机化处理,得到随机化数据;全零窗口消除步骤,将随机化数据减去预设非零序列,得到全零窗口消除数据;窗口划分步骤,按照预设数据处理窗口长度对全零窗口消除数据进行窗口划分,得到划分窗口后数据;点乘步骤,获取预定坐标,初始化第一坐标,逐数据处理窗口计算预定坐标和划分窗口后数据的点乘计算,结合点乘计算的结果和第一坐标的倍点计算结果,更新第一坐标,得到第一目标坐标,从而通过消除
全零窗口,防止点乘运算在计算全零窗口数据时物理状态发生变化而受到攻击,防止密钥泄露。
135.图3示出根据本公开另一实施方式的传输数据中的密钥保护方法的流程图。
136.如图3所示,传输数据中的密钥保护方法除了包含和图2相同的步骤s201、s202、s203、s204、s205,还包括步骤s301。
137.在步骤s301中,将第一目标坐标转换为指定维度的第二目标坐标。
138.步骤s301是坐标转换步骤。
139.在本公开的实施例中,可以对三维的第一目标坐标q_dest1( x3, y3, z3 )进行坐标转换,得到二维的第二目标坐标q_dest2( x2, y2 )。
140.根据本公开实施例提供的技术方案,通过坐标转换步骤,其中,将第一目标坐标转换为指定维度的第二目标坐标,从而使得第二目标坐标回到椭圆曲线坐标,进行sm2加密的后续正确运算。
141.在本公开的实施例中,可以使用下述伪代码方式实现从三维第一目标坐标q_dest1( x3, y3, z3 )到二维第二目标坐标q_dest2( x2, y2 )的转换。
142.z2 = z3
‑1x2 = x3*z22y2 = y3*z23其中,z3
‑1是z3的求逆计算。
143.在芯片实现中,求逆计算较为耗时。在本公开的实施例中,使用1次求逆计算,得到中间变量z2,再对z2进行耗时较少的平方计算、立方计算,将x3、y3分别和平方计算、立方计算的结果相乘,得到x2、y2,可以提升计算性能,在实际操作中提升数据处理效率,降低功耗。
144.根据本公开实施例提供的技术方案,通过坐标转换步骤包括:对第一目标坐标的第三分量进行求逆计算,得到中间分量;所述第一目标坐标的第一分量和中间分量的平方计算的结果相乘,得到第二目标坐标的第一分量;第一目标坐标的第二分量和中间分量的立方计算的结果相乘,得到第二目标坐标的第二分量,从而提高计算性能,提高数据处理效率,降低功耗。
145.图4示出根据本公开又一实施方式的传输数据中的密钥保护方法的流程图。
146.如图3所示,传输数据中的密钥保护方法除了包含和图3相同的步骤s201、s202、s203、s204、s205、s301,还包括步骤s401。
147.在步骤s401中,对指定维度的第二目标坐标进行校验。
148.步骤s401是校验步骤。
149.在本公开的实施例中,可以对第二目标坐标q_dest2( x2, y2 )进行校验,即通过校验x2、y2是否满足椭圆曲线方程来判断点乘运算是否受到差分错误分析(differential fault analysis,dfa)攻击。
150.根据本公开实施例提供的技术方案,通过校验步骤,对指定维度的第二目标坐标
进行校验,从而检测点乘运算是否受到dfa攻击,保证点乘计算的正确性和安全性。
151.在本公开的实施例中,当第二目标坐标不位于椭圆曲线上时,判断点乘运算受到dfa攻击,可以丢弃受攻击的数据,和/或发出告警信息,或者进行其它处理,本公开对此不作限定。当第二目标坐标位于椭圆曲线上时,判断点乘运算未受到dfa攻击,得到正确的第二目标坐标用于后续加密计算。
152.根据本公开实施例提供的技术方案,通过当指定维度的第二目标坐标处于椭圆曲线上时,判断传输数据中的密钥保护方法未受到差分错误分析攻击,使用指定维度的第二目标坐标进行加密计算;和/或当指定维度的第二目标坐标不处于椭圆曲线上时,判断传输数据中的密钥保护方法受到差分错误分析攻击,丢弃所述指定维度的第二目标坐标,和/或发出告警信息,从而在可能受到dfa攻击时,保证点乘计算的正确性和安全性。
153.图5示出根据本公开实施方式的图2的步骤s205中的获取预定坐标的具体流程图。
154.如图5所示,图2的步骤s205中的“获取预定坐标”的具体实施方式包括:步骤s501、s502。
155.在s501中,对指定坐标进行随机化,得到随机化坐标,其中,指定坐标为满足椭圆曲线方程的坐标。
156.在s502中,采用指定递增序列对随机化坐标进行预计算,得到预定坐标。
157.步骤s501是坐标随机化子步骤,s502是预计算子步骤。
158.在本公开的实施例中,对满足椭圆曲线方程的指定坐标p1(x1,y1),通过坐标随机化处理得到随机化坐标其中,指定坐标p1(x1,y1)由算法库输入得到,r2是随机数。
159.在本公开的实施例中,对特定递增序列(1, 2, ......2
w
)和随机化坐标p_random(x1, y1, z1)执行乘法计算,得到预定坐标p2(x2,y2,z2)=p_random, 2p_random, 3p_random, ...... , 2
w
p_random在既往不消除全零窗口的算法中,使用2
w

1个元素的序列(1, 2, ......2
w

1)。而在本公开的实施例中,通过使用2
w
个元素的特定递增序列(1, 2, ......2
w
),保证了对随机化数据k_random进行减法计算,消除全零窗口后的计算结果正确性。
160.根据本公开实施例提供的技术方案,通过坐标随机化子步骤,其中,对指定坐标进行随机化,得到随机化坐标,其中,指定坐标为满足椭圆曲线方程的坐标;预计算子步骤,其中,采用指定递增序列对所述随机化坐标进行预计算,得到所述预定坐标,从而保证消除全零窗口后的点乘运算的正确性。
161.根据本公开实施例提供的技术方案,通过采用指定递增序列对随机化坐标进行预计算包括:采用指定递增序列中的元素和随机化坐标进行乘法计算,从而保证消除全零窗口后的点乘运算的正确性。
162.根据本公开实施例提供的技术方案,通过点乘步骤中的结合点乘计算的结果和第一坐标的倍点计算结果,更新第一坐标包括:对点乘计算的结果和第一坐标的倍点计算结果进行点加计算,使用点加计算的结果更新所述第一坐标,从而保证点乘运算的正确性。
163.在本公开的实施例中,当点乘运算中的第一坐标为无穷远点时,需要对第一坐标进行重新赋值,避免计算出现异常值,保证计算结果的正确性。重新赋值过程可以通过以下
伪代码方式实现if q为无穷远点{
ꢀꢀꢀꢀꢀꢀ
q = k_split
i

1 * p2i = i
ꢀ‑ꢀ
2}当计算过程中的q为无穷远点时,通过预定坐标p2和当前数据处理窗口i的第一前序数据处理窗口i

1内的划分窗口后数据k_split
i
‑1的点乘,重置第一坐标q = k_split
i

1 * p2,并且更新当前窗口为i = i
ꢀ‑ꢀ
2。
164.根据本公开实施例提供的技术方案,通过在第一坐标为无穷远点时,计算预定坐标和当前数据处理窗口的第一前序数据处理窗口内的划分窗口后数据的点乘,使用点乘的结果更新第一坐标,并更新当前数据处理窗口为当前数据处理窗口的第二前序数据处理窗口,从而避免计算出现异常值,保证结果的正确性。
165.在本公开的实施例中,对于获取的例如长度为256比特的密钥数据k_sec进行随机化计算,得到随机化数据k_random其中,r1是整数字长的随机数,而且r1的最高位为1;#e是椭圆曲线的阶数。椭圆曲线e是满足方程的曲线,其中x、y分别是椭圆曲线上的点的横轴、纵轴坐标,a、b是椭圆曲线的参数。
166.根据本公开实施例提供的技术方案,通过数据随机化步骤包括:采用最高位为1的整数字长的随机数和椭圆曲线的阶,对所述密钥数据进行随机化,得到所述随机化数据,从而对密钥数据进行随机化,加强对密钥数据的保护。
167.在本公开的实施例中,预设非零序列seq1可包括多个数据处理窗口。预设非零序列seq1可以在每个数据处理窗口中,任意一位序列值为1,其余所有位序列值均为0。通过序列减法计算可得到不再包括全零窗口的全零窗口消除数据k_cancel_zero。
168.根据本公开实施例提供的技术方案,通过预设非零序列包括:在数据处理窗口中的任意一个比特为1,其余比特为0的序列,从而消除全零窗口。
169.在本公开的实施例中,进一步地,在seq1的每个数据处理窗口中,可以最低位序列值为1,其余所有位序列值均为0,即预设非零序列seq1可表示为:seq1=00...100...100...1...00...1。通过序列减法计算可得到不再包括全零窗口的全零窗口消除数据k_cancel_zero。
170.在本公开的实施例中,可以在每个数据处理窗口中,在至少一个位置的序列值为1,例如最低位、次低位序列值为1,其余所有位序列值均为0,即数据处理窗口中的seq1为0...011。
171.根据本公开实施例提供的技术方案,通过预设非零序列包括:在数据处理窗口中的至少一个比特为1,其余比特为0的序列,从而消除全零窗口。
172.根据本公开实施例提供的技术方案,通过预设非零序列包括:在数据处理窗口中的末位比特为1,其余比特为0的序列,从而消除全零窗口。
173.在本公开的实施例中,对全零窗口消除数据k_cancel_zero,按照预设数据处理窗口长度w进行划分,在数据处理窗口中加上与预设非零序列seq1相对应的特定数值,得到窗口划分后数据( k_split
l
‑1, k_split
l
‑2, k_split1, k_split
0 )。
174.当seq1的每个数据处理窗口中,最低位序列值为1,其余所有位序列值均为0,即数据处理窗口中的预设非零序列seq1为00...1时,与预设非零序列seq1相对应的特定数值为1。当seq1的每个数据处理窗口中,次低位序列值为1,其余所有位序列值均为0,即数据处理窗口中的预设非零序列seq1为0...010时,与预设非零序列seq1相对应的特定数值为2,或比特序列10。当seq1的每个数据处理窗口中,最低位和次低位序列值为1,其余所有位序列值均为0,即数据处理窗口中的预设非零序列seq1为0...011时,与预设非零序列seq1相对应的特定数值为3,或比特序列11。
175.本领域普通技术人员可以理解,当数据处理窗口中的预设非零序列seq1为其它序列时,预设非零序列seq1相对应的特定数值也相应的进行更新。
176.根据本公开实施例提供的技术方案,通过窗口划分步骤包括:在数据处理窗口中,对全零窗口消除数据加上与预设非零序列相对应的特定数值,得到所述窗口划分后数据,从而保证消除全零窗口后的计算结果正确。
177.在本公开的实施例中,可以对第二目标坐标q_dest2( x2, y2 )进行校验,即通过校验x2、y2是否满足椭圆曲线方程,即q_dest2( x2, y2 )是否位于椭圆曲线上,来判断点乘运算是否受到dfa攻击。
178.根据本公开实施例提供的技术方案,通过校验步骤包括:校验指定维度的第二目标坐标是否处于椭圆曲线上,从而检测点乘运算是否受到dfa攻击。
179.当第二目标坐标不位于椭圆曲线上时,判断点乘运算受到dfa攻击,可以丢弃受攻击的数据,和/或发出告警信息,或者进行其它处理,本公开对此不作限定。当第二目标坐标位于椭圆曲线上时,判断点乘运算未受到dfa攻击,得到正确的第二目标坐标用于后续加密计算。
180.根据本公开实施例提供的技术方案,通过当指定维度的第二目标坐标处于椭圆曲线上时,判断传输数据中的密钥保护方法未受到差分错误分析攻击,使用指定维度的第二目标坐标进行加密计算;和/或当指定维度的第二目标坐标不处于椭圆曲线上时,判断传输数据中的密钥保护方法受到差分错误分析攻击,丢弃所述指定维度的第二目标坐标,和/或发出告警信息,从而在点乘运算可能受到dfa攻击的条件下保证点乘运算的正确、安全。
181.图6示出根据本公开一实施方式的消除数据串中的全零窗口的数据处理装置的结构框图。
182.如图6所示,消除全零窗口的数据处理装置600包括:数据获取模块601、数据随机化模块602、全零窗口消除模块603。
183.数据获取模块601用于获取输入的密钥数据。
184.数据随机化模块602用于对密钥数据进行随机化处理,得到随机化数据。
185.全零窗口消除模块603用于将随机化数据减去预设非零序列,得到全零窗口消除数据。
186.根据本公开实施例提供的技术方案,通过数据获取模块,用于获取输入的密钥数据;数据随机化模块,用于对密钥数据进行随机化处理,得到随机化数据;全零窗口消除模块,用于将随机化数据减去预设非零序列,得到全零窗口消除数据,从而消除全零窗口。
187.根据本公开实施例提供的技术方案,通过数据随机化模块用于:采用最高位为1的整数字长的随机数和椭圆曲线的阶,对密钥数据进行随机化,得到随机化数据,从而对密钥数据进行随机化,加强对密钥数据的保护。
188.根据本公开实施例提供的技术方案,通过预设非零序列包括:在数据处理窗口中的至少一个比特为1,其余比特为0的序列,从而消除全零窗口。
189.根据本公开实施例提供的技术方案,通过预设非零序列包括:在数据处理窗口中的任意一个比特为1,其余比特为0的序列,从而消除全零窗口。
190.根据本公开实施例提供的技术方案,通过预设非零序列包括:在数据处理窗口中的末位比特为1,其余比特为0的序列,从而消除全零窗口数据。
191.图7示出根据本公开一实施方式的传输数据中的密钥保护装置的结构框图。
192.如图7所示,传输数据中的密钥保护装置700包括:数据获取模块701、数据随机化模块702、全零窗口消除模块703、窗口划分模块704、点乘模块705。
193.数据获取模块701,用于获取输入的密钥数据。
194.数据随机化模块702,用于对密钥数据进行随机化处理,得到随机化数据。
195.全零窗口消除模块703,用于将随机化数据减去预设非零序列,得到全零窗口消除数据。
196.窗口划分模块704,用于按照预设数据处理窗口长度对全零窗口消除数据进行窗口划分,得到划分窗口后数据。
197.点乘模块705,用于获取预定坐标,初始化第一坐标,逐数据处理窗口计算预定坐标和划分窗口后数据的点乘计算,结合点乘计算的结果和第一坐标的倍点计算结果,更新第一坐标,得到第一目标坐标。
198.根据本公开实施例提供的技术方案,通过数据获取模块,用于获取输入的密钥数据;数据随机化模块,用于对密钥数据进行随机化处理,得到随机化数据;全零窗口消除模块,用于将随机化数据减去预设非零序列,得到全零窗口消除数据;窗口划分模块,用于按照预设数据处理窗口长度对全零窗口消除数据进行窗口划分,得到划分窗口后数据;点乘模块,用于获取预定坐标,初始化第一坐标,逐数据处理窗口计算预定坐标和划分窗口后数据的点乘计算,结合点乘计算的结果和第一坐标的倍点计算结果,更新第一坐标,得到第一目标坐标,从而通过消除全零窗口,防止点乘运算在计算全零窗口数据时物理状态发生变化而受到攻击,防止密钥泄露。
199.在本公开的实施例中,传输数据中的密钥保护装置还可以包括:坐标转换模块。
200.坐标转换模块用于将第一目标坐标转换为指定维度的第二目标坐标。
201.根据本公开实施例提供的技术方案,通过还包括:坐标转换模块,用于将第一目标坐标转换为指定维度的第二目标坐标,从而使得第二目标坐标回到椭圆曲线坐标,进行sm2
加密的后续正确运算。
202.在本公开的实施例中,传输数据中的密钥保护装置还可以包括:校验模块。
203.校验模块用于对指定维度的第二目标坐标进行校验。
204.根据本公开实施例提供的技术方案,通过还包括:校验模块,用于对指定维度的第二目标坐标进行校验,从而检测点乘运算是否受到dfa攻击,保证数据的正确性和安全性。
205.根据本公开实施例提供的技术方案,通过获取预定坐标包括:坐标随机化子模块,用于对指定坐标进行随机化,得到随机化坐标,其中,指定坐标为满足椭圆曲线方程的坐标;预计算子模块,用于采用指定递增序列对所述随机化坐标进行预计算,得到所述预定坐标,从而保证消除全零窗口后的点乘运算的正确性。
206.根据本公开实施例提供的技术方案,通过采用指定递增序列对随机化坐标进行预计算包括:采用指定递增序列中的元素和随机化坐标进行乘法计算,从而保证消除全零窗口后的点乘运算的正确性。
207.根据本公开实施例提供的技术方案,通过点乘步骤中的结合点乘计算的结果和第一坐标的倍点计算结果,更新第一坐标包括:对点乘计算的结果和第一坐标的倍点计算结果进行点加计算,使用点加计算的结果更新所述第一坐标,从而保证点乘运算的正确性。
208.根据本公开实施例提供的技术方案,通过点乘模块还用于:在第一坐标为无穷远点时,计算预定坐标和当前数据处理窗口的第一前序数据处理窗口内的划分窗口后数据的点乘,使用点乘的结果更新第一坐标,并更新当前数据处理窗口为当前数据处理窗口的第二前序数据处理窗口,从而避免计算出现异常值,保证结果的正确性。
209.根据本公开实施例提供的技术方案,通过数据随机化模块用于:采用最高位为1的整数字长的随机数和椭圆曲线的阶,对密钥数据进行随机化,得到随机化数据,从而对密钥数据进行随机化,加强对密钥数据的保护。
210.根据本公开实施例提供的技术方案,通过预设非零序列包括:在数据处理窗口中的至少一个比特为1,其余比特为0的序列,从而消除全零窗口。
211.根据本公开实施例提供的技术方案,通过预设非零序列包括:在数据处理窗口中的任意一个比特为1,其余比特为0的序列,从而消除全零窗口。
212.根据本公开实施例提供的技术方案,通过预设非零序列包括:在数据处理窗口中的末位比特为1,其余比特为0的序列,从而消除全零窗口数据。
213.根据本公开实施例提供的技术方案,通过窗口划分模块用于:在数据处理窗口中,对全零窗口消除数据加上与预设非零序列相对应的特定数值,得到所述窗口划分后数据,从而保证消除全零窗口后的计算结果正确。
214.根据本公开实施例提供的技术方案,通过坐标转换模块用于:对第一目标坐标的第三分量进行求逆计算,得到中间分量;所述第一目标坐标的第一分量和中间分量的平方计算的结果相乘,得到第二目标坐标的第一分量;第一目标坐标的第二分量和中间分量的立方计算的结果相乘,得到第二目标坐标的第二分量,从而提高计算性能,提高数据处理效率,降低功耗。
215.根据本公开实施例提供的技术方案,通过校验模块用于:校验指定维度的第二目标坐标是否处于椭圆曲线上,从而检测点乘运算是否受到dfa攻击。
216.根据本公开实施例提供的技术方案,通过当指定维度的第二目标坐标处于椭圆曲
线上时,判断传输数据中的密钥保护方法未受到差分错误分析攻击,使用指定维度的第二目标坐标进行加密计算;和/或当指定维度的第二目标坐标不处于椭圆曲线上时,判断传输数据中的密钥保护方法受到差分错误分析攻击,丢弃所述指定维度的第二目标坐标,和/或发出告警信息,从而在点乘运算可能受到dfa攻击的条件下保证点乘运算的正确、安全。
217.在本公开的实施例中,在芯片包含数据传输中的密钥保护装置时,芯片如果采用传统不消除全零窗口的处理方式,会使得芯片在处理全零窗口时,例如电流、电压、功率等的物理状态比处理非全零窗口时降低m%。芯片通过采用上述数据获取步骤、数据随机化步骤、全零窗口消除步骤、窗口划分步骤、点乘步骤,可以消除全零窗口,使得芯片的电流、电压、功率等物理状态处于预定范围,例如不降低m%,并保证了计算结果的正确性。
218.根据本公开实施例提供的技术方案,通过将数据传输中的密钥保护装置集成在芯片中,芯片在处理所述数据处理窗口的数据的过程中的物理状态处于预定范围,从而避免检测到芯片物理状态的变化,而导致密钥泄露。
219.在本公开的实施例中,实现密钥保护方法的芯片可以用于,例如电力远程抄表芯片、电力无线通信专网芯片、配电网加密传输芯片等的电力管理芯片,燃气远程抄表芯片、燃气设备数据加密传输芯片等的燃气管理芯片,银行atm机加密数据传输芯片、网银加密传输芯片等的银行管理芯片,公网加密通信芯片、5g物联网终端加密数据传输芯片等的通信管理芯片,也可以是其它进行点乘运算的芯片,本公开对此不作限定。
220.根据本公开实施例提供的技术方案,通过芯片包括以下芯片中的至少一种:电力管理芯片,燃气管理芯片,银行管理芯片,通信管理芯片,使得密钥保护方法可以应用于多种不同的场景。
221.图8示出根据本公开一实施方式的电子设备的结构框图。
222.本公开实施方式还提供了一种电子设备,如图8所示,所述电子设备800包括处理器801和存储器802;其中,存储器802存储有可被至少一个处理器801执行的指令,指令被至少一个处理器801执行以实现以下步骤:数据获取步骤,获取输入的密钥数据;数据随机化步骤,对所述密钥数据进行随机化处理,得到随机化数据;全零窗口消除步骤,将所述随机化数据减去预设非零序列,得到全零窗口消除数据。
223.在本公开的实施例中,所述数据随机化步骤包括:采用最高位为1的整数字长的随机数和椭圆曲线的阶,对所述密钥数据进行随机化,得到所述随机化数据。
224.在本公开的实施例中,所述预设非零序列包括:在数据处理窗口中的至少一个比特为1,其余比特为0的序列。
225.在本公开的实施例中,所述预设非零序列包括:在数据处理窗口中的任意一个比特为1,其余比特为0的序列。
226.在本公开的实施例中,所述预设非零序列包括:在所述数据处理窗口中的末位比特为1,其余比特为0的序列。
227.存储器802存储还有可能被至少一个处理器801执行的指令,指令被至少一个处理器801执行以实现以下步骤:数据获取步骤,获取输入的密钥数据;
数据随机化步骤,对所述密钥数据进行随机化处理,得到随机化数据;全零窗口消除步骤,将所述随机化数据减去预设非零序列,得到全零窗口消除数据;窗口划分步骤,按照预设数据处理窗口长度对所述全零窗口消除数据进行窗口划分,得到划分窗口后数据;点乘步骤,获取预定坐标,初始化第一坐标,逐数据处理窗口计算所述预定坐标和所述划分窗口后数据的点乘计算,结合所述点乘计算的结果和所述第一坐标的倍点计算结果,更新所述第一坐标,得到第一目标坐标。
228.指令还可以被至少一个处理器801执行以实现以下步骤:坐标转换步骤,将所述第一目标坐标转换为指定维度的第二目标坐标。
229.指令还可以被至少一个处理器801执行以实现以下步骤:校验步骤,对所述指定维度的第二目标坐标进行校验。
230.在本公开的实施例中,所述获取预定坐标包括:坐标随机化子步骤,对指定坐标进行随机化,得到随机化坐标,其中,所述指定坐标为满足椭圆曲线方程的坐标;预计算子步骤,采用指定递增序列对所述随机化坐标进行预计算,得到所述预定坐标。
231.在本公开的实施例中,所述采用指定递增序列对所述随机化坐标进行预计算包括:采用所述指定递增序列中的元素和所述随机化坐标进行乘法计算。
232.在本公开的实施例中,所述点乘步骤中的所述结合所述点乘计算的结果和所述第一坐标的倍点计算结果,更新所述第一坐标包括:对所述点乘计算的结果和所述第一坐标的倍点计算结果进行点加计算,使用所述点加计算的结果更新所述第一坐标。
233.在本公开的实施例中,所述点乘步骤还包括:在所述第一坐标为无穷远点时,计算所述预定坐标和当前数据处理窗口的第一前序数据处理窗口内的所述划分窗口后数据的点乘,使用所述点乘的结果更新所述第一坐标,并更新所述当前数据处理窗口为所述当前数据处理窗口的第二前序数据处理窗口。
234.在本公开的实施例中,所述数据随机化步骤包括:采用最高位为1的整数字长的随机数和椭圆曲线的阶,对所述密钥数据进行随机化,得到所述随机化数据。
235.在本公开的实施例中,所述预设非零序列包括:在数据处理窗口中的至少一个比特为1,其余比特为0的序列。
236.在本公开的实施例中,所述预设非零序列包括:在所述数据处理窗口中的任意一个比特为1,其余比特为0的序列。
237.在本公开的实施例中,所述预设非零序列包括:在所述数据处理窗口中的末位比特为1,其余比特为0的序列。
238.在本公开的实施例中,所述窗口划分步骤包括:在所述数据处理窗口中,对所述全零窗口消除数据加上与所述预设非零序列相对应的特定数值,得到所述窗口划分后数据。
239.在本公开的实施例中,所述坐标转换步骤包括:
对所述第一目标坐标的第三分量进行求逆计算,得到中间分量;所述第一目标坐标的第一分量和所述中间分量的平方计算的结果相乘,得到所述第二目标坐标的第一分量;所述第一目标坐标的第二分量和所述中间分量的立方计算的结果相乘,得到所述第二目标坐标的第二分量。
240.在本公开的实施例中,所述校验步骤包括:校验所述指定维度的第二目标坐标是否处于椭圆曲线上。
241.在本公开的实施例中,当所述指定维度的第二目标坐标处于椭圆曲线上时,判断所述传输数据中的密钥保护方法未受到差分错误分析攻击,使用所述指定维度的第二目标坐标进行加密计算;和/或当所述指定维度的第二目标坐标不处于椭圆曲线上时,判断所述传输数据中的密钥保护方法受到差分错误分析攻击,丢弃所述指定维度的第二目标坐标,和/或发出告警信息。
242.图9是适于用来实现根据本公开一实施方式的消除数据串中的全零窗口的数据处理方法或传输数据中的密钥保护方法的计算机系统的结构示意图。
243.如图9所示,计算机系统900包括处理单元901,其可以根据存储在只读存储器(rom)902中的程序或者从存储部分908加载到随机访问存储器(ram)903中的程序而执行上述附图所示的实施方式中的各种处理。在ram903中,还存储有系统900操作所需的各种程序和数据。处理单元901、rom902以及ram903通过总线904彼此相连。输入/输出(i/o)接口905也连接至总线904。
244.以下部件连接至i/o接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至i/o接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。其中,所述处理单元901可实现为cpu、gpu、tpu、fpga、npu等处理单元。
245.特别地,根据本公开的实施方式,上文参考附图描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行附图中的方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。
246.附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用
执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
247.描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
248.作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述节点中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
249.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其他技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1