一种抵抗旁路攻击的加密方法及系统与流程

文档序号:29627693发布日期:2022-04-13 14:56阅读:194来源:国知局
一种抵抗旁路攻击的加密方法及系统与流程

1.本发明属于抵抗能量分析旁路攻击的方法和装置技术领域,尤其涉及一种抵抗旁路攻击的加密方法、系统、电子设备及可读存储介质。


背景技术:

2.随着网络的不断普及,社会信息化程度日益提高,信息安全的重要性已经逐步突显出来。加密作为信息安全中最有力的武器,正在发挥着重要的作用。aes加密算法具有加密速度快,易于实现的优点,被广泛应用于各种加密场景。
3.任何安全产品或者密码系统都必须面对一个如何防御攻击和窥测的问题,近些年来,出现了一种新的强有力的攻击方法,人们称之为旁路攻击(side channel attacks,sca)。旁路攻击就是利用密码芯片在运行过程中泄露的旁路信息,诸如功耗、时间、电磁波以及差错信息等,利用上述信息对密码系统进行攻击和窥测。旁路攻击已成为信息安全芯片产品的巨大威胁,其危害远大于传统的数学分析手段。
4.功耗攻击是旁路攻击的一种,利用分析密码芯片执行加密算法时消耗的功耗来对密钥进行攻击。芯片在处理不同运算的时候所消耗的功耗是不同的。即使处理同一条指令操作数不同功耗也是不一样的,因此对功耗进行分析,可以推算出密钥来。功耗攻击分为简单功耗分析(simple power analysis,spa)和差分功耗分析(differential power analysis,dpa),其中dpa攻击更有效,应用领域更广泛。
5.dpa攻击的原理是利用被攻击设备在加密过程中所消耗的功耗和加密算法中间值的相关性,从而得出密钥的一种攻击方法。
6.目前采用抵抗dpa攻击的方法有mask掩码技术,将输入的明文与随机数进行异或,然后再将异或后的结果送入运算模块计算,但是aes运算模块中的sbox需要根据随机数进行变换。而这种变换会消耗比较多的运算时间,导致整体aes的运算吞吐量较小。因此,提供一种既能够抵抗旁路攻击又能保证运算吞吐量的方案十分必要。


技术实现要素:

7.为解决上述问题,本发明的目的是提供一种抵抗旁路攻击的加密方法,该方法通过设置模拟运算引擎与加密运算引擎同时工作,掩藏运算引擎的真实功耗,从而达到有效抵抗旁路攻击的目的。
8.为实现上述目的,本发明的技术方案为:一种抵抗旁路攻击的加密方法,包括以下步骤:
9.通过第一运算引擎和第一秘钥对待加密明文进行一次加密,生成中间加密密文;通过第二运算引擎和第二秘钥对所述中间加密密文进行二次加密,生成所述待加密明文对应的加密密文。
10.其中:
11.在所述一次加密的持续过程中,基于所述待加密明文和预设随机数列,通过模拟
运算引擎进行模拟加密运算;在所述二次加密的持续过程中,基于所述预设随机数列和所述中间加密密文,通过所述模拟运算引擎进行所述模拟加密运算。
12.所述第一运算引擎对待加密明文进行一次加密的持续过程中,模拟运算引擎对待加密明文和预设随机数列的运算结果进行运算,即第一运算引擎和模拟运算引擎同时都在进行运算,同时都产生功耗;所述第二运算引擎对所述中间加密密文进行二次加密的持续过程中,模拟运算引擎对所述中间加密密文和所述随机数列的运算结果进行运算,即第二运算引擎和模拟运算引擎同时都在进行运算,同时都产生功耗,使得进行加密运算的实际功耗不被直接获取和分析,从而有效抵抗旁路攻击。
13.优选的,所述第一秘钥和所述第二秘钥基于所述待加密明文对应的加密秘钥通过秘钥扩展得到;所述第一运算引擎根据实时运算轮次,将所述加密秘钥对应的实时扩展轮秘钥作为所述第一秘钥;所述第二运算引擎根据实时运算轮次,将所述加密秘钥对应的实时扩展轮秘钥作为所述第二秘钥。
14.加密密钥进行扩展获得的第一密钥和第二密钥只进行一次扩展并存储,作为后续相应轮次加密运算的密钥。无需每轮运算都重新扩展密钥,节省了时间,提高单位时间内的数据吞吐量。
15.优选的,在所述一次加密的持续过程中,所述模拟运算引擎基于所述第一秘钥进行所述模拟加密运算;在所述二次加密的持续过程中,所述模拟运算引擎基于所述第二秘钥进行所述模拟加密运算。
16.优选的,在所述一次加密的持续过程中,选取待加密明文与预设随机数列通过运算器进行多项取反和/或异或运算得到多项运算结果,通过第二多选器对多项运算结果择一作为模拟运算引擎的输入数据;在所述二次加密的持续过程中,选取中间加密密文与预设随机数列通过运算器进行多项取反和/或异或运算得到多项运算结果,通过第二多选器对多项运算结果择一作为模拟运算引擎的输入数据。
17.进一步的,所述明文和所述中间加密密文经过第一多选器进行选择运算后,获得第一选择结果并与预设随机数列通过运算器进行运算,运算包括以下方式:1、将所述第一选择结果直接输出;2、将所述第一选择结果取反后输出;3、将所述第一选择结果取反后与所述预设随机数列异或后输出;4、将所述第一选择结果与所述预设随机数列异或后输出;5、将所述预设随机数列直接输出。所述运算器的多个输出结果均输入第二多选器。所述第二多选器对所述多项运算结果择一输出作为模拟运算引擎的输入数据。
18.可选的,当连续多次的进行加密运算时,即所述第二运算引擎在进行二次加密时,所述第一运算引擎进行下一条待加密密文的一次加密运算,此时模拟运算引擎不进行运算。
19.基于相同的构思,本发明还提供一种实现上述抵抗旁路攻击的加密方法的系统,其特征在于,包括:
20.第一运算模块,用于和第一秘钥对待加密明文进行一次加密,生成中间加密密文;
21.第二运算模块,用于和第二秘钥对所述中间加密密文进行二次加密,生成所述待加密明文对应的加密密文;
22.模拟运算模块,用于在所述一次加密的持续过程中,基于所述待加密明文和预设随机数列,通过模拟运算模块进行模拟加密运算;在所述二次加密的持续过程中,基于所述
预设随机数列和所述中间加密密文,通过所述模拟运算模块进行所述模拟加密运算。
23.所述第一运算模块对待加密明文进行一次加密的持续过程中,模拟运算模块对待加密明文和预设随机数列的运算结果进行运算,即第一运算模块和模拟运算模块同时都在进行运算,同时都产生功耗;所述第二运算模块对所述中间加密密文进行二次加密的持续过程中,模拟运算模块对所述中间加密密文和所述随机数列的运算结果进行运算,即第二运算模块和模拟运算模块同时都在进行运算,同时都产生功耗,使得进行加密运算的实际功耗不被直接获取和分析,从而有效抵抗旁路攻击。
24.进一步的,所述抵抗旁路攻击的加密系统还可以包括密钥扩展模块,用于对加密秘钥进行扩展得到所述第一秘钥和所述第二秘钥;所述第一秘钥作为所述第一运算模块实时运算的轮密钥;所述第二秘钥作为所述第二运算模块实时运算的轮密钥。
25.加密密钥进行扩展获得的第一密钥和第二密钥只进行一次扩展并存储,作为后续相应轮次加密运算的密钥。避免重复进行密钥扩展,节约时间,提高单位时间的运算吞吐量。
26.进一步的,所述模拟运算模块与所述第一运算模块和所述第二运算模块采用相同的加密算法。即,所述模拟运算模块、所述第一运算模块和所述第二运算模块内部结构相同。
27.进一步的,所述抵抗旁路攻击的加密系统还可以包括与所述模拟运算模块连接的选择模块,所述选择模块包括第一多选器、运算器和第二多选器,在所述一次加密的持续过程中,所述选择模块通过所述第一多选器选取待加密明文,并与预设随机数列通过运算器进行多项取反和/或异或运算得到多项运算结果,第二多选器基于多项运算结果择一选择作为模拟运算模块的输入数据;在所述二次加密的持续过程中,选择模块通过第一多选器选取中间加密密文,并与预设随机数列通过运算器进行多项取反和/或异或运算得到多项运算结果,第二多选器基于多项运算结果择一选择作为模拟运算模块的输入数据。
28.基于相同的构思,本发明还提供一种电子设备,其特征在于,包括:
29.存储器,所述存储器用于存储处理程序;
30.处理器,所述处理器执行所述处理程序时实现上述所述的抵抗旁路攻击的加密方法。
31.基于相同的构思,本发明还提供一种可读存储介质,其特征在于,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现上述所述的抵抗旁路攻击的加密方法。
32.本发明由于采用以上技术方案,使其与现有技术相比具有以下的优点和积极效果:本发明实施例中设置模拟运算引擎,在第一运算引擎/第二运算引擎进行加密运算过程中,模拟运算引擎也同时进行运算和产生功耗,掩藏第一运算引擎/第二运算引擎的真实功耗保证敏感信息不会泄露,从而达到有效抵抗旁路攻击的目的。设置模拟运算引擎,在第一运算引擎和第二运算引擎都进行加密运算时,模拟运算引擎处于空闲状态,不进行运算,使得系统始终有两个运算引擎在工作,降低在加密过程中所消耗的功耗和加密算法中间值的相关性,进一步保证敏感信息不泄露从而有效抵抗旁路攻击。设置密钥扩展模块,将输入密钥进行扩展并将每轮用到的轮密钥存储起来以供运算引擎使用,无需在运算过程中实时计算每轮的轮密钥,从而无需额外增加运算周期,减少了运算过程和时间消耗,提高单位时间
内的运算吞吐量。
附图说明
33.下面结合附图对本发明的具体实施方式作进一步详细说明,其中:
34.图1为本发明的一种抵抗旁路攻击的加密方法流程图;
35.图2为本发明的一种抵抗旁路攻击的加密系统的结构示意图;
36.图3为发明的一种抵抗旁路攻击加密系统的选择模块结构示意图。
37.附图标记说明:
38.1:密钥扩展模块;201:第一运算模块;202:第二运算模块;3:选择模块;301:第一多选器;302:运算器;303:第二多选器;4:模拟运算模块。
具体实施方式
39.以下结合附图和具体实施例对本发明作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比率,仅用以方便、明晰地辅助说明本发明实施例的目的。
40.需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后
……
)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
41.目前采用的抵抗旁路攻击的方法主要是mask掩码技术,在运算过程中需要实时计算每轮的轮密钥,再将输入的明文与生成的轮密钥进行异或,然后再将异或后的结果输入运算模块计算,而计算每轮的轮密钥需要额外增加运算周期,即增加了原有的流水线运算周期,降低了单位时间内的运算吞吐量。
42.本发明的显著特点在于,在有效抵抗旁路攻击保证数据安全性的同时,能够保证运算吞吐量,使得aes流水线保持较高的运行效率。以下通过具体的实施例进行说明。
43.第一实施例
44.如图1所示,本实施例提供一种抵抗旁路攻击的加密方法,其特征在于,包括以下步骤:
45.对加密密钥进行扩展,并将每轮用到的轮密钥存储起来以供运算引擎使用,运算引擎包括第一运算引擎、第二运算引擎和模拟运算引擎。加密密钥进行扩展获得的第一密钥和第二密钥只进行一次扩展并存储,作为后续相应轮次加密运算的密钥。无需每轮运算都重新扩展密钥,节省了时间,提高单位时间内的数据吞吐量。待加密明文输入到第一运算引擎中进行一次加密,即执行aes加密过程中的前一半轮数的加密运算,第一运算引擎根据内部正在进行的运算轮数选择密钥扩展输出的轮密钥即第一密钥进行一次加密运算,运算后输出中间加密密文;在一次加密的持续过程中,待加密明文和预设随机数列输入到选择模块3,选择模块3进行运算后获得模拟运算引擎输入数据并将模拟运算引擎输入数据输入模拟运算引擎4进行运算。
46.中间加密密文输入第二运算引擎进行二次加密,即执行aes加密过程中的后一半轮数的加密运算,第二运算引擎根据内部正在进行的运算轮数选择密钥扩展输出的轮密钥即第二密钥进行二次加密运算,运算后输出加密密文;在二次加密的持续过程中,中间加密
密文和预设随机数列输入到选择模块3,选择模块3进行运算后获得模拟运算引擎输入数据并将模拟运算引擎输入数据输入模拟运算引擎4进行运算。
47.在第一运算引擎/第二运算引擎进行加密运算过程中,模拟运算引擎也同时进行运算,产生的功耗使得真实的加密运算的功耗不被获取和分析,保证敏感信息不会泄露从而有效抵抗旁路攻击。
48.进一步的,在通过选择模块3执行运算的步骤中,可以包括第一多选器301对待加密明文和中间加密密文进行选择运算后获得第一选择结果。获得的第一运算结果作为模拟运算模块的运算输入数据。
49.进一步的,选择模块3进行运算的步骤,还包括运算器302对第一选择结果和预设随机数列进行取反和/或异或运算以获得多个运算结果。
50.进一步的,选择模块3进行运算的步骤,还包括多选器303对多个运算结果进行选择运算以获得模拟运算引擎输入数据。
51.运算器302对第一选择结果和预设随机数列进行运算,运算包括以下方式:1、将第一选择结果直接输出;2、将第一选择结果取反后输出;3、将第一选择结果取反后与预设随机数列异或后输出;4、将第一选择结果与预设随机数列异或后输出;5、将预设随机数列直接输出。运算器302的多个输出结果均输入第二多选器303。
52.第二实施例
53.与第一实施例不同的在于,第一实施例对单次输入明文进行运算,而本实施例对连续多次输入明文进行运算,即形成动态流式运算。第一运算引擎对第一条明文数据进行一次加密后获得第一条明文数据的中间加密密文,第二运算引擎对第一条明文数据的中间加密密文进行二次加密;在第二运算引擎对第一条明文数据的中间加密密文进行二次加密的持续过程中,第一运算引擎对第二条明文数据进行一次加密后获得第二条明文数据的中间加密密文;此时模拟运算引擎功能屏蔽,不进行运算。以此流水线模式持续进行运算,因为第一运算引擎和第二运算引擎同时都在运算加密,可以提高运算数据的吞吐量;同时模拟运算引擎功能屏蔽,不进行运算,所以系统中始终保持两个运算引擎工作,降低在加密过程中所消耗的功耗和加密算法中间值的相关性,进一步保证敏感信息不泄露从而有效抵抗旁路攻击。
54.第三实施例
55.如图2-图3所示,本实施例提供一种抵抗旁路攻击的加密系统,其特征在于,包括:
56.密钥扩展模块1,用于将输入密钥进行扩展,并将每轮用到的轮密钥存储起来,以供运算模块使用,运算模块包括第一运算模块201、第二运算模块202和模拟运算模块4;密钥扩展模块1将输入的密钥根据aes算法的密钥长度(128比特、192比特和256比特)进行扩展生成第一密钥和第二密钥;密钥扩展模块在密钥扩展完成以后,会将生成第一密钥和第二密钥分别输出给第一运算模块201、第二运算模块202和模拟运算模块4,由运算模块自主根据运算的轮数选择具体的轮密钥。可以理解的是,在上述过程中,第一运算模块201通过第一运算引擎进行实现,第二运算模块202通过第二运算引擎进行实现,模拟运算模块4通过模拟运算引擎进行实现。
57.第一运算模块201,用于和第一秘钥对待加密明文进行一次加密,生成中间加密密文。
58.第二运算模块202,用于和第二秘钥对中间加密密文进行二次加密,生成待加密明文对应的加密密文。
59.模拟运算模块4,用于在一次加密的持续过程中,基于待加密明文和预设随机数列,通过模拟运算模块4进行模拟加密运算;在二次加密的持续过程中,基于预设随机数列和中间加密密文,通过模拟运算模块4进行模拟加密运算。
60.第一运算模块201和第二运算模块202共同组成二级流水线运算模块,完成aes加密运算过程。输入的明文首先被输入到第一运算模块201中进行aes加密运算前一半轮数的运算,如果密钥长度为128比特,那么第一运算模块201将进行前5轮的轮运算;如果密钥长度为192比特,那么第一运算模块201将进行前6轮的轮运算;如果密钥长度为256比特,那么第一运算模块201将进行前7轮的轮运算。第一运算模块201的运算结果被送入到第二运算模块202中进行aes加密运算后一半轮数的运算,如果密钥长度为128比特,那么第二运算模块202将进行后5轮的轮运算;如果密钥长度为192比特,那么第二运算模块202将进行后6轮的轮运算;如果密钥长度为256比特,那么第二运算模块202将进行后7轮的轮运算。第二运算模块202的运算结果作为最终的密文输出。
61.本发明在密钥长度为128比特的情况下,每5个周期可以完成一次aes加密运算;在密钥长度为192比特的情况下,每6个周期可以完成一次aes加密运算;在密钥长度为256比特的情况下,每7个周期可以完成一次aes加密运算。
62.抵抗旁路攻击的加密系统还包括与模拟运算模块4连接的选择模块3,选择模块3包括第一多选器301、运算器302和第二多选器303。
63.当只输入单次明文数据进行加密运算时,在一次加密的持续过程中,选择模块3通过第一多选器301选取待加密明文,并与预设随机数列通过运算器302进行多项取反和/或异或运算得到多项运算结果,第二多选器303基于多项运算结果择一作为模拟运算模块4的输入数据;在二次加密的持续过程中,选择模块3通过第一多选器301选取中间加密密文,并与预设随机数列通过运算器302进行多项取反和/或异或运算得到多项运算结果,第二多选器303基于多项运算结果择一作为模拟运算模块4的输入数据。
64.可选的,当连续多次输入明文数据进行加密时,选择模块3的第一多选器301对待加密明文选择作为第一选择结果的优先级高于中间加密密文。模拟运算模块4的运算机制为:如果第一运算模块201在运行而第二运算模块202空闲,那么模拟运算模块4进行模拟加密运算;如果第一运算模块201空闲而第二运算模块202在运行,那么模拟运算模块4进行模拟加密运算;如果第一运算模块201和第二运算模块202都在运行,那么模拟运算模块4将处于空闲状态;如果第一运算模块201和第二运算模块202都空闲,那么模拟运算模块4也将处于空闲状态。
65.进一步的,运算器302对第一选择结果和预设随机数列进行运算输出多个运算结果,运算包括以下方式:1、将第一选择结果直接输出;2、将第一选择结果取反后输出;3、将第一选择结果取反后与预设随机数列异或后输出;4、将第一选择结果与预设随机数列异或后输出;5、将预设随机数列直接输出。运算器302的多个输出结果均输入第二多选器303。第二多选器302对多项运算结果择一作为模拟运算模块4的输入数据。
66.进一步的,第一运算模块201、第二运算模块202和模拟运算模块4具有完全相同的运算电路。
67.第四实施例
68.一种电子设备,包括:
69.存储器,存储器用于存储处理程序;
70.处理器,处理器执行处理程序时实现上述任意一种抵抗旁路攻击的加密方法。
71.第五实施例
72.一种可读存储介质,可读存储介质上存储有处理程序,处理程序被处理器执行上述实现任意一项抵抗旁路攻击的加密方法。
73.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。
74.下面对本发明的工作过程作详细说明:
75.当进行单次明文加密运算时:密钥扩展模块1对输入密钥进行扩展,并将每轮需要用到的轮密钥存储起来,以供第一运算模块201、第二运算模块202、模拟运算模块4使用;明文同时输入到第一运算模块201和选择模块3,此时预设随机数列也被输入到选择模块3,选择模块3对明文和预设随机数列进行运算后获得模拟运算模块输入数据,第一运算模块201在对明文进行一次加密运算的同时,模拟运算模块4也对模拟运算模块输入数据进行运算;第一运算模块201运算后获得中间加密密文,中间加密密文输入到第二运算模块202和选择模块3,第二运算模块202对中间加密密文进行二次加密运算,同时,模拟运算模块4也对选择模块3输出的模拟运算模块输入数据进行运算。
76.当进行连续多次明文加密运算时:密钥扩展模块1对输入密钥进行扩展,并将每轮需要用到的轮密钥存储起来,以供第一运算模块201、第二运算模块202、模拟运算模块4使用;第一条明文数据同时输入到第一运算模块201和选择模块3,此时预设随机数列也被输入到选择模块3,选择模块3对第一条明文数据和预设随机数列进行运算后获得模拟运算模块输入数据,第一运算模块201在对第一条明文数据进行一次加密运算的同时,模拟运算模块4也对模拟运算模块输入数据进行运算;第一运算模块201运算后获得中间加密密文,中间加密密文输入到第二运算模块202和选择模块3,第二运算模块202对中间加密密文进行二次加密运算,同时,第一运算模块201对第二条明文数据进行一次加密运算,而模拟运算模块4功能屏蔽不进行模拟运算,直到第一运算模块201处于空闲状态时,模拟运算模块4基于最后一条明文数据的中间加密密文和预设随机数列的运算结果进行运算。
77.其中,当有明文输入时,选择模块3将明文与预设随机数列进行运算,当没有明文输入只有中间加密密文输入时,选择模块3将中间加密密文与预设随机数列进行运算。即第一多选器301的选择机制是优先选择明文数据,当没有明文输入时,选择中间加密密文。第一多选器201将选择后的第一选择结果输入给运算器302进行运算,运算器302将多个运算结果输入给第二多选器303,第二多选器303的选择机制可以由外部模块确定。
78.上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式。即使对本发明作出各种变化,倘若这些变化属于本发明权利要求及其等同技术的范围之内,则仍落入在本发明的保护范围之中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1