一种可重构阵列抗功耗攻击方法、装置、设备及存储介质转让专利

申请号 : CN202210579724.0

文献号 : CN114679251B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘曼张奇惠王立峰

申请人 : 广州万协通信息技术有限公司

摘要 :

本发明实施例公开了一种可重构阵列抗功耗攻击方法、装置、设备及存储介质,方法包括:预测可重构阵列在执行密码算法过程中的计算功耗;根据计算功耗,确定与密码算法相对应的冗余运算;根据密码算法的运算流程,确定密码算法的计算环节;根据计算环节以及冗余运算,生成相应的衍生计算环节;对可重构阵列进行配置,以使可重构阵列执行衍生计算环节以替代执行相应的计算环节,且衍生计算环节的计算结果与相应的计算环节的计算结果相同。本发明实施例能够隐藏可重构阵列在运算密码算法过程中真实的功耗信息,解决了现有技术中可重构阵列在运算密码算法的过程中安全性较低的技术问题。

权利要求 :

1.一种可重构阵列抗功耗攻击方法,其特征在于,包括:预测可重构阵列在执行密码算法过程中的计算功耗;

根据所述计算功耗,确定与所述密码算法相对应的冗余运算;

根据所述密码算法的运算流程,确定所述密码算法的计算环节;

根据所述计算环节以及所述冗余运算,生成相应的衍生计算环节;

对所述可重构阵列进行配置,以使所述可重构阵列执行所述衍生计算环节以替代执行相应的计算环节,且所述衍生计算环节的计算结果与所述相应的计算环节的计算结果相同;

其中,所述根据所述计算功耗,确定与所述密码算法相对应的冗余运算,包括:根据所述计算功耗确定功耗消耗等级;

根据所述功耗消耗等级确定与所述密码算法相对应的冗余运算;

其中,所述根据所述功耗消耗等级确定与所述密码算法相对应的冗余运算,包括:根据所述功耗消耗等级,确定所述可重构阵列在执行所述冗余运算过程中,所消耗的功耗的数值范围;

根据所述数值范围,确定与所述密码算法相对应的冗余运算;

其中,所述冗余运算包括至少一个冗余子运算;

相应的,所述根据所述数值范围,确定与所述密码算法相对应的冗余运算,包括:确定与所述密码算法相对应的至少一个冗余子运算,以使所述可重构阵列在执行所有的所述冗余子运算过程中,所消耗的功耗位于所述数值范围内;

其中,所述计算环节包括至少一个计算子环节;

相应的,所述根据所述计算环节以及所述冗余运算,生成相应的衍生计算环节,包括:在所述计算环节中随机选择出至少一个目标计算子环节;

根据每个所述目标计算子环节以及每个所述冗余子运算,生成与每个目标计算子环节相对应的衍生计算子环节,且所述衍生计算子环节的计算结果与相应的目标计算子环节的计算结果相同;

其中,所述根据每个所述目标计算子环节以及每个所述冗余子运算,生成与每个目标计算子环节相对应的衍生计算子环节,包括:确定与所述目标计算子环节相对应的冗余子运算,将所述冗余子运算的计算过程添加到相应的目标计算子环节的计算过程中,生成与每个所述目标计算子环节相对应的衍生计算子环节;

其中,所述衍生计算子环节在得到所述目标计算子环节的计算结果后,在所述目标计算子环节的计算结果上执行所述冗余子运算,所述冗余子运算的运算过程为加上一个数值后再减去所述数值。

2.根据权利要求1所述的一种可重构阵列抗功耗攻击方法,其特征在于,所述预测可重构阵列在执行密码算法过程中的计算功耗,包括:根据密码算法调用相应的功耗预测模型;

将所述密码算法的待解密密文输入到所述功耗预测模型中,得到所述可重构阵列在执行所述密码算法过程中的计算功耗。

3.一种可重构阵列抗功耗攻击装置,其特征在于,包括:功耗预测模块、冗余运算确定模块、计算环节确定模块、衍生计算生成模块以及阵列配置模块;

所述功耗预测模块用于预测可重构阵列在执行密码算法过程中的计算功耗;

所述冗余运算确定模块用于根据所述计算功耗,确定与所述密码算法相对应的冗余运算;

所述计算环节确定模块用于根据所述密码算法的运算流程,确定所述密码算法的计算环节;

所述衍生计算生成模块用于根据所述计算环节以及所述冗余运算,生成相应的衍生计算环节;

所述阵列配置模块用于对所述可重构阵列进行配置,以使所述可重构阵列执行所述衍生计算环节以替代执行相应的计算环节,且所述衍生计算环节的计算结果与所述相应的计算环节的计算结果相同;

其中,所述冗余运算确定模块用于根据所述计算功耗,确定与所述密码算法相对应的冗余运算,包括:根据所述计算功耗确定功耗消耗等级;

根据所述功耗消耗等级确定与所述密码算法相对应的冗余运算;

其中,所述冗余运算确定模块用于根据所述功耗消耗等级确定与所述密码算法相对应的冗余运算,包括:根据所述功耗消耗等级,确定所述可重构阵列在执行所述冗余运算过程中,所消耗的功耗的数值范围;

根据所述数值范围,确定与所述密码算法相对应的冗余运算;

其中,所述冗余运算包括至少一个冗余子运算;

相应的,所述冗余运算确定模块用于根据所述数值范围,确定与所述密码算法相对应的冗余运算,包括:确定与所述密码算法相对应的至少一个冗余子运算,以使所述可重构阵列在执行所有的所述冗余子运算过程中,所消耗的功耗位于所述数值范围内;

其中,所述计算环节包括至少一个计算子环节;

相应的,所述衍生计算生成模块用于根据所述计算环节以及所述冗余运算,生成相应的衍生计算环节,包括:在所述计算环节中随机选择出至少一个目标计算子环节;

根据每个所述目标计算子环节以及每个所述冗余子运算,生成与每个目标计算子环节相对应的衍生计算子环节,且所述衍生计算子环节的计算结果与相应的目标计算子环节的计算结果相同;

其中,所述衍生计算生成模块用于根据每个所述目标计算子环节以及每个所述冗余子运算,生成与每个目标计算子环节相对应的衍生计算子环节,包括:用于确定与所述目标计算子环节相对应的冗余子运算,将所述冗余子运算的计算过程添加到相应的目标计算子环节的计算过程中,生成与每个所述目标计算子环节相对应的衍生计算子环节;

其中,所述衍生计算子环节在得到所述目标计算子环节的计算结果后,在所述目标计算子环节的计算结果上执行所述冗余子运算,所述冗余子运算的运算过程为加上一个数值后再减去所述数值。

4.一种可重构阵列抗功耗攻击设备,其特征在于,所述可重构阵列抗功耗攻击设备包括处理器以及存储器;

所述存储器用于存储计算机程序,并将所述计算机程序传输给所述处理器;

所述处理器用于根据所述计算机程序中的指令执行如权利要求1‑2中任一项所述的一种可重构阵列抗功耗攻击方法。

5.一种存储计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1‑2中任一项所述的一种可重构阵列抗功耗攻击方法。

说明书 :

一种可重构阵列抗功耗攻击方法、装置、设备及存储介质

技术领域

[0001] 本申请实施例涉及抗功耗攻击领域,尤其涉及一种可重构阵列抗功耗攻击方法、装置、设备及存储介质。

背景技术

[0002] 密码芯片在运算过程中会产生多种类型的泄露信息。例如执行时间、功耗、电磁辐射等信息,而这些泄露信息往往包含了密钥、密码、密文等隐密数据。因此,攻击者可以利用密码芯片在运行过程中的泄露信息对加密算法进行破解。例如,可以根据密码芯片在运算密码算法过程中泄露的功耗信息破解密码。目前,在可重构阵列领域中,尚未有合理有效的方法来抵御功耗攻击,导致可重构阵列在运算密码算法的过程中安全性较低。

发明内容

[0003] 本发明实施例提供了一种可重构阵列抗功耗攻击方法、装置、设备及存储介质,本发明实施例能够隐藏可重构阵列在运算密码算法过程中真实的功耗信息,解决了现有技术中可重构阵列在运算密码算法的过程中安全性较低的技术问题。
[0004] 第一方面,本发明实施例提供了一种可重构阵列抗功耗攻击方法,包括:
[0005] 预测可重构阵列在执行密码算法过程中的计算功耗;
[0006] 根据所述计算功耗,确定与所述密码算法相对应的冗余运算;
[0007] 根据所述密码算法的运算流程,确定所述密码算法的计算环节;
[0008] 根据所述计算环节以及所述冗余运算,生成相应的衍生计算环节;
[0009] 对所述可重构阵列进行配置,以使所述可重构阵列执行所述衍生计算环节以替代执行相应的计算环节,且所述衍生计算环节的计算结果与所述相应的计算环节的计算结果相同。
[0010] 优选的,所述预测可重构阵列在执行密码算法过程中的计算功耗,包括:
[0011] 根据密码算法确定可重构阵列的配置信息;
[0012] 根据所述配置信息调用相应的功耗预测模型;
[0013] 将所述密码算法的待解密密文输入到所述功耗预测模型中,得到所述可重构阵列在执行所述密码算法过程中的计算功耗。
[0014] 优选的,所述根据所述计算功耗,确定与所述密码算法相对应的冗余运算,包括:
[0015] 根据所述计算功耗确定功耗消耗等级;
[0016] 根据所述功耗消耗等级确定与所述密码算法相对应的冗余运算。
[0017] 优选的,所述根据所述功耗消耗等级确定与所述密码算法相对应的冗余运算,包括:
[0018] 根据所述功耗消耗等级,确定所述可重构阵列在执行所述冗余运算过程中,所消耗的功耗的数值范围;
[0019] 根据所述数值范围,确定与所述密码算法相对应的冗余运算。
[0020] 优选的,所述冗余运算包括至少一个冗余子运算;
[0021] 相应的,所述根据所述数值范围,确定与所述密码算法相对应的冗余运算,包括:
[0022] 确定与所述密码算法相对应的至少一个冗余子运算,以使所述可重构阵列在执行所有的所述冗余子运算过程中,所消耗的功耗位于所述数值范围内。
[0023] 优选的,所述冗余运算包括至少一个冗余子运算,所述计算环节包括至少一个计算子环节;
[0024] 相应的,所述根据所述计算环节以及所述冗余运算,生成相应的衍生计算环节,包括:
[0025] 在所述计算环节中随机选择出至少一个目标计算子环节;
[0026] 根据每个所述目标计算子环节以及每个所述冗余子运算,生成与每个目标计算子环节相对应的衍生计算子环节,且所述衍生计算子环节的计算结果与相应的目标计算子环节的计算结果相同。
[0027] 优选的,所述根据每个所述目标计算子环节以及每个所述冗余子运算,生成与每个目标计算子环节相对应的衍生计算子环节,包括:
[0028] 确定与所述目标计算子环节相对应的冗余子运算,将所述冗余子运算的计算过程添加到相应的目标计算子环节的计算过程中,生成与每个所述目标计算子环节相对应的衍生计算子环节。
[0029] 第二方面,本发明实施例提供了一种可重构阵列抗功耗攻击装置,包括:功耗预测模块、冗余运算确定模块、计算环节确定模块、衍生计算生成模块以及阵列配置模块;
[0030] 所述功耗预测模块用于预测可重构阵列在执行密码算法过程中的计算功耗;
[0031] 所述冗余运算确定模块用于根据所述计算功耗,确定与所述密码算法相对应的冗余运算;
[0032] 所述计算环节确定模块用于根据所述密码算法的运算流程,确定所述密码算法的计算环节;
[0033] 所述衍生计算生成模块用于根据所述计算环节以及所述冗余运算,生成相应的衍生计算环节;
[0034] 所述阵列配置模块用于对所述可重构阵列进行配置,以使所述可重构阵列执行所述衍生计算环节以替代执行相应的计算环节,且所述衍生计算环节的计算结果与所述相应的计算环节的计算结果相同。
[0035] 第三方面,本发明实施例提供了一种可重构阵列抗功耗攻击设备,所述可重构阵列抗功耗攻击设备包括处理器以及存储器;
[0036] 所述存储器用于存储计算机程序,并将所述计算机程序传输给所述处理器;
[0037] 所述处理器用于根据所述计算机程序中的指令执行如第一方面所述的一种可重构阵列抗功耗攻击方法。
[0038] 第四方面,本发明实施例提供了一种存储计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的一种可重构阵列抗功耗攻击方法。
[0039] 上述,本发明实施例通过在密码算法的计算环节中增加冗余运算,从而生成相应的衍生计算环节,使得可重构阵列在执行衍生计算环节的过程中,即运行了密码算法,又运行了冗余运算,由于可重构阵列需要消耗额外的功耗来执行冗余运算,可重构阵列所消耗的功耗会高于可重构阵列实际在运算密码算法过程中的功耗,从而能够隐藏可重构阵列在运算密码算法过程中真实的功耗,即使攻击者在可重构阵列运行的过程中获取到功耗信息,也无法从功耗信息中获取密码算法的密文等隐密数据,提高了可重构阵列在运算密码算法的过程中安全性,解决了现有技术中可重构阵列在运算密码算法的过程中安全性较低的技术问题。

附图说明

[0040] 图1为本发明实施例提供的一种可重构阵列的结构示意图。
[0041] 图2为本发明实施例提供的一种可重构阵列抗功耗攻击方法的流程示意图。
[0042] 图3为本发明实施例提供的另一种可重构阵列抗功耗攻击方法的流程示意图。
[0043] 图4为本发明实施例提供的又一种可重构阵列抗功耗攻击方法的流程示意图。
[0044] 图5为本发明实施例提供的一种可重构阵列抗功耗攻击装置的结构示意图。
[0045] 图6为本发明实施例提供的一种可重构阵列抗功耗攻击设备的结构示意图。

具体实施方式

[0046] 以下描述和附图充分地示出本申请的具体实施方案,以使本领域的技术人员能够实践它们。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本申请的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。在本文中,各实施方案可以被单独地或总地用术语“发明”来表示,这仅仅是为了方便,并且如果事实上公开了超过一个的发明,不是要自动地限制该应用的范围为任何单个发明或发明构思。本文中,诸如第一和第二等之类的关系术语仅仅用于将一个实体或者操作与另一个实体或操作区分开来,而不要求或者暗示这些实体或操作之间存在任何实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素。本文中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的结构、产品等而言,由于其与实施例公开的部分相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0047] 可重构阵列是一种新型且位于学术界前沿的通用硬件设计架构,一般来说,可重构阵列由一些具有相同运算功能的处理单元(PE)组成。如图1所示,处理单元能够实现的运算功能被称为算子,一个运算单元包含多个算子,且可以通过不同的配置指令完成不同的运算功能。然而,可重构阵列中的处理单元在执行密码算法的过程中,避免不了会泄露功耗信息,如何防止攻击者根据可重构阵列泄露的功耗信息破解密码算法的密钥、密码、密文等隐密数据,成为了目前亟需解决的技术问题。
[0048] 如图2所示,图2为本发明实施例提供的一种可重构阵列抗功耗攻击方法的流程图。本发明实施例提供的可重构阵列抗功耗攻击方法可以由可重构阵列抗功耗攻击设备执行,该可重构阵列抗功耗攻击设备可以通过软件和/或硬件的方式实现,该可重构阵列抗功耗攻击设备可以是两个或多个物理实体构成,也可以由一个物理实体构成。例如可重构阵列抗功耗攻击设备可以是电脑、上位机、平板等设备。方法包括以下步骤:
[0049] 步骤101、预测可重构阵列在执行密码算法过程中的计算功耗。
[0050] 本实施例中,密码算法是用于加密和解密的数学函数,密码算法是密码协议的基础,现有的密码算法主要包括序列密码、分组密码、公钥密码以及散列函数等,用于保证信息的安全,提供鉴别、完整性以及抗抵赖等服务。可重构阵列在执行密码算法之前,首先需要预测可重构阵列在执行密码算法过程中所需要消耗的功耗,即计算功耗,以便后续根据可重构阵列所消耗的计算功耗来确定可重构阵列所需要执行的冗余运算。在一个实施例中,可通过调用预先训练好的神经网络预测可重构阵列所需要消耗的计算功耗。具体的,可以预先对不同结构的可重构阵列相对应的功耗预测神经网络进行训练,得到与不同结构的可重构阵列相对应的功耗预测模型,后续在预测可重构阵列执行密码算法过程中的计算功耗时,可以根据可重构阵列的结构调用相对应的功耗预测模型,并将密码算法的待解密密文输入到功耗预测模型中,利用功耗预测模型来预测可重构阵列在处理待解密密文的过程中所需要消耗的计算功耗。
[0051] 在上述实施例的基础上,步骤101中预测可重构阵列在执行密码算法过程中的计算功耗,具体由步骤1011‑步骤1012执行,包括:
[0052] 步骤1011、根据密码算法调用相对应的功耗预测模型。
[0053] 首先,在本实施例中,可根据密码算法调用相对应的功耗预测模型。其中,需要进一步说明的是,功耗预测模型预先通过预先对神经网络进行训练得到。在一个实施例中,在对神经网络进行训练之前,需要根据密码算法确定可重构阵列的配置信息。具体的,可根据密码算法的代码,确定密码算法的运算流程,运算流程,即密码算法的运行逻辑,之后,进一步根据密码算法的运算流程,确定出密码算法中的计算环节,计算环节是指密码算法中执行运算的步骤。由于可重构阵列中由处理单元(PE)来执行运算功能,因此,密码算法中的计算环节决定了处理单元的配置方式,通过对处理单元进行配置,可以使得处理单元执行相对应的运算,从而实现密码算法中的计算环节。另外,由于密码算法的运算流程决定了数据的流向,因此,需要根据密码算法的运算流程来配置处理单元之间的连接关系,从而使得每个处理单元的运算结果能够传输到下一个正确的处理单元中。之后,即可根据每个处理单元的配置方式以及处理单元之间的连接关系,生成可重构阵列的配置信息。
[0054] 在得到可重构阵列的配置信息后,对可重构阵列进行配置,从而使得可重构阵列能够执行相对应的密码算法。之后,获取大量密码算法的待解密密文,将大量的待解密密文作为神经网络的训练样本,将训练样本输入到神经网络中,并以实际测量到的可重构阵列在对每个待解密密文进行解密过程中所消耗的真实功耗值作为神经网络的输出期望值,通过自适应学习不断训练和调整神经网络的权值系数和节点数目,使得神经网络输出的预测功耗值能够逼近真实功耗值,直至预测功耗值和真实功耗值的误差在预设范围内为止,得到训练好的功耗预测模型。后续根据所需要执行的密码算法调用对应的功耗预测模型即可。
[0055] 步骤1012、将密码算法的待解密密文输入到功耗预测模型中,得到可重构阵列在执行密码算法过程中的计算功耗。
[0056] 之后,将所需要执行的密码算法的待解密密文输入到调用的功耗预测模型中,功耗预测模型即可根据输入的待解密密文,预测可重构阵列在执行密码算法的过程中所需要消耗的功耗,即计算功耗。
[0057] 步骤102、根据计算功耗,确定与密码算法相对应的冗余运算。
[0058] 在得到可重构阵列在执行密码算法过程中的计算功耗后,进一步根据计算功耗,确定出与密码算法相对应的冗余运算。示例性的,在一个实施例中,可以为不同的密码算法统一设置一个目标功耗,又或者是,为不同的密码算法设置不同的目标功耗,在得到计算功耗后,计算出计算功耗和目标功耗的差值,该差值即为可重构阵列在执行密码算法的过程中所需要额外消耗的功耗,并根据该功耗来确定出相对应的冗余运算,冗余运算是指不具有实际意义的运算,例如将一个计算结果加上10后再减去10,加上10后在减去10的操作对该计算结果并没有任何影响,加上10后再减去10的过程即为一个冗余运算。在另一个实施例中,可以以查表的方式来确定出相对应的冗余运算。例如,服务器或数据库中储存有运算功耗数据查找表,表中包括有可重构阵列在执行每一个冗余运算时所需要的功耗,根据差值即可在运算功耗数据查找表选择对至少一个冗余运算。
[0059] 步骤103、根据密码算法的运算流程,确定密码算法的计算环节。
[0060] 之后,进一步根据密码算法的运算流程,确定出密码算法中的计算环节。具体的,在一个实施例中,可以对密码算法的代码进行分析,确定出确定出密码算法的运算流程,并根据运算流程确定出密码算法中的计算环节。在本实施例中,密码算法中所有执行运算的步骤构成计算环节。
[0061] 步骤104、根据计算环节以及冗余运算,生成相应的衍生计算环节。
[0062] 在确定了密码算法中的计算环节后,即可根据计算环节以及冗余运算环节,生成相应的衍生计算环节。具体的,在一个实施例中,在保证不改变计算环节的计算结果的情况下,将冗余运算添加到计算环节中,例如在计算环节的开始或结尾时,进行加上10后再减去10的操作。
[0063] 步骤105、对可重构阵列进行配置,以使可重构阵列执行衍生计算环节以替代执行相应的计算环节,且衍生计算环节的计算结果与相应的计算环节的计算结果相同。
[0064] 最后,即可根据密码算法的运算流程以及衍生计算环节,对可重构阵列中的处理单元进行配置。具体的,可根据衍生计算环节中的每一个计算步骤,对可重构阵列的处理单元(PE)进行配置,从而使得不同的处理单元可以实现不同的计算步骤,之后,再根据运算流程中数据的流向,配置不同处理单元之间的连接关系,从而使得每个处理单元的计算结果可以传输给下一个相对应的处理单元,以便后续在各个处理单元的配合下,实现密码算法的执行过程。
[0065] 可重构阵列配置完成后,即可将密码算法中的待解密密文输入到可重构阵列中,可重构阵列即可执行衍生计算环节对待解密密文进行相应的计算,从而得到相对应的明文。由于在本实施例中衍生计算环节的计算结果与密码算法实际的计算环节的计算结果相同,因此在此过程中衍生计算环节并不会影响待解密密文的计算过程,从而保证计算出来的明文的准确性。并且在此过程中,由于可重构阵列在执行衍生计算环节中的冗余运算时,需要消耗多余的功耗,使得可重构阵列所消耗的功耗会高于可重构阵列执行密码算法的计算环节过程中所消耗的功耗,从而能够隐藏可重构阵列在运算密码算法过程中真实的功耗信息。
[0066] 上述,本发明实施例通过在密码算法的计算环节中增加冗余运算,从而生成相应的衍生计算环节,使得可重构阵列在执行衍生计算环节的过程中,即运行了密码算法,又运行了冗余运算,由于可重构阵列需要消耗额外的功耗来执行冗余运算,可重构阵列所消耗的功耗会高于可重构阵列实际在运算密码算法过程中的功耗,从而能够隐藏可重构阵列在运算密码算法过程中真实的功耗,即使攻击者在可重构阵列运行的过程中获取到功耗信息,也无法从功耗信息中获取密码算法的密文等隐密数据,提高了可重构阵列在运算密码算法的过程中安全性,解决了现有技术中可重构阵列在运算密码算法的过程中安全性较低的技术问题。
[0067] 如图3所示,图3为本发明实施例提供的另一种可重构阵列抗功耗攻击方法的流程图,该可重构阵列抗功耗攻击方法是对上述可重构阵列抗功耗攻击方法的具体化。参考图3,该可重构阵列抗功耗攻击方法包括:
[0068] 步骤201、预测可重构阵列在执行密码算法过程中的计算功耗。
[0069] 步骤202、根据计算功耗确定功耗消耗等级。
[0070] 在本实施例中,在预测了可重构阵列在执行密码算法过程中的计算功耗后,进一步根据计算功耗确定出功耗消耗等级。具体的,在一个实施例中,可预先设置不同的功耗消耗等级,并为每个功耗消耗等级划定一个功耗范围。例如,第一功耗消耗等级的范围为0‑50W,第二功耗消耗等级的范围为50W‑100W,第三功耗消耗等级的范围为100W‑150W等,在得到了预测的计算功耗后,即可根据计算功耗,确定出计算功耗所在的范围,从而确定出相对应的功耗消耗等级。
[0071] 步骤203、根据功耗消耗等级确定与密码算法相对应的冗余运算。
[0072] 在得到功耗消耗等级后,进一步根据功耗消耗等级确定出与密码算法相对应的冗余运算。在一个实施例中,对于不同的功耗消耗等级,可设置相对应的冗余运算功耗范围,该冗余运算功耗范围即为可重构阵列在执行冗余运算的过程中所需要消耗的功耗的范围,后续根据冗余运算功耗范围,即可确定出与密码算法相对应的冗余运算。在另一个实施例中,可为每个功耗消耗等级设置一个目标功耗,之后,进一步计算出计算功耗和相对应的目标功耗之间的差值,该差值即为可重构阵列在执行冗余运算的过程中所需要消耗的功耗,后续根据冗余运算功耗,即可确定出与密码算法相对应的冗余运算。
[0073] 在上述实施例的基础上,步骤203中根据功耗消耗等级确定与密码算法相对应的冗余运算,具体由步骤2031‑步骤2032执行,包括:
[0074] 步骤2031、根据功耗消耗等级,确定可重构阵列在执行冗余运算过程中,所消耗的功耗的数值范围。
[0075] 在一个实施例中,可根据功耗消耗等级,确定可重构阵列在执行冗余运算过程中,所消耗的功耗的数值范围。例如,设置第一功耗消耗等级的相对应的数值范围为5W‑8W,设置第二功耗消耗等级相对应的数值范围为4W‑6W等。可理解,在一个实施例中,功耗消耗等级越高,可将数值范围设置的越小,从而避免可重构阵列后续消耗的功耗过多,超出电源所能够供电的范围。
[0076] 步骤2032、根据数值范围,确定与密码算法相对应的冗余运算。
[0077] 之后,即可根据数值范围,确定出与密码算法相对应的冗余运算。在一个实施例中,可通过查表的方式确定出相对应的冗余运算。例如,服务器或数据库中储存有运算功耗数据查找表,表中包括有可重构阵列在执行每一个冗余运算时所需要的功耗,根据数值范围即可在运算功耗数据查找表选择对应冗余运算。例如,若数值范围为5W‑8W,第一冗余运算所消耗的功耗为5W,第二冗余运算所消耗的功耗为7W,第三冗余运算所消耗的功耗为9W,则此时可以选择第一冗余运算作为可重构阵列需要执行的冗余运算,或者是选择第二冗余运算作为可重构阵列需要执行的冗余运算。可理解,在本实施例中不对具体冗余运算的类型进行限定,只需要保证所选择的冗余运算所消耗的功耗位于数值范围内即可。在本实施例中,根据可重构阵列在执行冗余运算过程中所消耗的功耗的数值范围,来确定与密码算法相对应的冗余运算,能够灵活选择可重构阵列所需要执行的冗余运算,从而使得可重构阵列每次在执行同一个密码算法的过程中,总体上所消耗的功耗并非是一个固定值,打乱功耗的变化规律,进一步提高安全性。其次,通过确定冗余运算而不是控制可重构阵列执行随机运算,从而避免随机运算影响计算环节的计算结果。
[0078] 在上述实施例的基础上,冗余运算包括至少一个冗余子运算;
[0079] 相应的,步骤2032中根据数值范围,确定与密码算法相对应的冗余运算,具体由步骤20321执行,包括:
[0080] 步骤20321、确定与密码算法相对应的至少一个冗余子运算,以使可重构阵列在执行所有的冗余子运算过程中,所消耗的功耗位于数值范围内。
[0081] 在本实施例中,冗余运算由至少一个冗余子运算构成,在确定与密码算法相对应的冗余运算时,需要确定出与密码算法相对应的至少一个冗余子运算,使得以使可重构阵列在执行所有的冗余子运算过程中,所消耗的功耗位于数值范围内。
[0082] 示例性的,在一个实施例中,若数值范围为5W‑8W,第一冗余子运算所消耗的功耗为2W,第二冗余子运算所消耗的功耗为3W,第三冗余子运算所消耗的功耗为6W,则此时可以选择第三冗余子运算作为可重构阵列需要执行的冗余运算,或者是选择第一冗余子运算和第二冗余子运算作为可重构阵列需要执行的冗余运算等,又或者是可以重复选择三个第一冗余子运算作为作为可重构阵列需要执行的冗余运算等。可理解,在本实施例中,冗余子运算的数量可以根据实际需要进行灵活选择,只要保证最少选择一个冗余子运算且可重构阵列在执行该冗余满足所消耗的功耗位于数值范围内即可。
[0083] 步骤204、根据密码算法的运算流程,确定密码算法的计算环节。
[0084] 步骤205、根据计算环节以及冗余运算,生成相应的衍生计算环节。
[0085] 步骤206、对可重构阵列进行配置,以使可重构阵列执行衍生计算环节以替代执行相应的计算环节,且衍生计算环节的计算结果与相应的计算环节的计算结果相同。
[0086] 上述,本发明实施例通过根据可重构阵列在执行冗余运算过程中所消耗的功耗的数值范围,来确定与密码算法相对应的冗余运算,能够灵活改变可重构阵列所需要执行的冗余运算,使得可重构阵列每次在执行同一个密码算法的过程中,总体上所消耗的功耗并非是一个固定值,打乱功耗的变化规律,避免攻击者破解出功耗变化的规律后获取可重构阵列在执行密码算法时的真实的功耗,进一步可重构阵列的提高安全性。其次,通过确定冗余运算而不是控制可重构阵列执行随机运算,也能够避免随机运算破坏计算环节的计算结果。
[0087] 如图4所示,图4为本发明实施例提供的另一种可重构阵列抗功耗攻击方法的流程图,该可重构阵列抗功耗攻击方法是对上述可重构阵列抗功耗攻击方法的具体化。参考图4,该可重构阵列抗功耗攻击方法包括:
[0088] 步骤301、预测可重构阵列在执行密码算法过程中的计算功耗。
[0089] 步骤302、根据计算功耗,确定与密码算法相对应的冗余运算。
[0090] 步骤303、根据密码算法的运算流程,确定密码算法的计算环节。
[0091] 步骤304、在计算环节中随机选择出至少一个目标计算子环节;其中,计算环节包括至少一个计算子环节。
[0092] 在本实施例中,计算环节中包括至少一个计算子环节。其中,计算环节是密码算法中所有执行运算的步骤,计算子环节是指计算步骤中所有执行运算的步骤中的一个步骤。
[0093] 在本实施例中,首先在计算环节的所有计算子环节中,随机选择出至少一个目标计算子环节。
[0094] 步骤305、根据每个目标计算子环节以及每个冗余子运算,生成与每个目标计算子环节相对应的衍生计算子环节,且衍生计算子环节的计算结果与相应的目标计算子环节的计算结果相同,其中,冗余运算包括至少一个冗余子运算。
[0095] 在本实施例中,冗余运算包括至少一个冗余子运算。在随机选择出至少一个目标计算子环节后,根据选择出的目标计算子环节以及每一个冗余子运算,将冗余子运算的计算步骤添加到每个目标计算子环节中,从而生成与每个目标计算环节相对应的衍生计算子环节,并且在本实施例中衍生计算子环节的计算结果和相应的目标计算子环节的计算结果相同,即冗余子运算不影响每一个目标计算子环节的计算结果。
[0096] 在一个实施例中,步骤305中根据每个目标计算子环节以及每个冗余子运算,生成与每个目标计算子环节相对应的衍生计算子环节,具体由步骤3051执行:
[0097] 步骤3051、确定与目标计算子环节相对应的冗余子运算,将冗余子运算的计算过程添加到相应的目标计算子环节的计算过程中,生成与每个目标计算子环节相对应的衍生计算子环节。
[0098] 在一个实施例中,首先在冗余运算中,确定出与每一个目标计算子环节相对应的冗余子运算。可理解,当冗余子运算的数量小于目标计算子环节的数量时,冗余子运算可以复用,即多个目标计算子环节可以对应同一个冗余子运算。之后,进一步将冗余子运算的计算过程添加到相应的目标计算子环节的计算过程中,从而生成与每个目标计算子环节相对应的衍生计算子环节。示例性的,在一个实施例中,一个冗余子运算为对数据取反后,再次进行取反。此时,可以将该冗余子运算添加到一个目标计算子环节后,使得目标计算子环节在计算得到计算结果后,执行冗余子运算,即对计算结果取反后,再次进行取反,在此过程中并不会改变计算结果的数值,即冗余运算不影响目标计算子环节的计算结果。
[0099] 步骤306、对可重构阵列进行配置,以使可重构阵列执行衍生计算环节以替代执行相应的计算环节,且衍生计算环节的计算结果与相应的计算环节的计算结果相同。
[0100] 之后,即可根据密码算法中的衍生计算子环节以及未添加冗余子运算的计算子环节对可重构阵列进行配置。配置完成后,可重构阵列即可执行密码算法,并在执行密码算法的过程中,可重构阵列会执行衍生计算子环节来替代执行相对应的目标计算子环节,以及执行未添加冗余子运算的计算子环节。并且在此过程中,可重构阵列执行衍生子环节的计算结果和相对应的目标计算子环节的计算结果相同,从而使得可重构阵列在执行衍生子环节的过程中,并不会改变密码算法的目标计算子环节的计算结果。
[0101] 上述,本发明实施例通过将冗余运算子环节添加到随机选择的目标计算子环节中,并生成衍生计算子环节,从而使得可重构阵列在执行密码算法的过程中,执行衍生计算子环节的时刻是随机的,打乱可重构阵列执行冗余运算的时刻,从而打乱可重构阵列消耗功率的规律,进一步提高密码算法的安全性。
[0102] 如图5所示,图5为本发明实施例提供的一种可重构阵列抗功耗攻击装置,包括:功耗预测模块401、冗余运算确定模块402、计算环节确定模块403、衍生计算生成模块404以及阵列配置模块405;
[0103] 功耗预测模块401用于预测可重构阵列在执行密码算法过程中的计算功耗。
[0104] 冗余运算确定模块402用于根据计算功耗,确定与密码算法相对应的冗余运算。
[0105] 计算环节确定模块403用于根据密码算法的运算流程,确定密码算法的计算环节。
[0106] 衍生计算生成模块404用于根据计算环节以及冗余运算,生成相应的衍生计算环节。
[0107] 阵列配置模块405用于对可重构阵列进行配置,以使可重构阵列执行衍生计算环节以替代执行相应的计算环节,且衍生计算环节的计算结果与相应的计算环节的计算结果相同。
[0108] 在上述实施例的基础上,功耗预测模块401用于预测可重构阵列在执行密码算法过程中的计算功耗,包括:
[0109] 用于根据密码算法调用相应的功耗预测模型;将密码算法的待解密密文输入到功耗预测模型中,得到可重构阵列在执行密码算法过程中的计算功耗。
[0110] 在上述实施例的基础上,冗余运算确定模块402用于根据计算功耗,确定与密码算法相对应的冗余运算,包括:
[0111] 用于根据计算功耗确定功耗消耗等级;根据功耗消耗等级确定与密码算法相对应的冗余运算。
[0112] 在上述实施例的基础上,冗余运算确定模块402用于根据功耗消耗等级确定与密码算法相对应的冗余运算,包括:
[0113] 用于根据功耗消耗等级,确定可重构阵列在执行冗余运算过程中,所消耗的功耗的数值范围;根据数值范围,确定与密码算法相对应的冗余运算。
[0114] 在上述实施例的基础上,冗余运算包括至少一个冗余子运算;
[0115] 相应的,冗余运算确定模块402用于根据数值范围,确定与密码算法相对应的冗余运算,包括:
[0116] 用于确定与密码算法相对应的至少一个冗余子运算,以使可重构阵列在执行所有的冗余子运算过程中,所消耗的功耗位于数值范围内。
[0117] 在上述实施例的基础上,冗余运算包括至少一个冗余子运算,计算环节包括至少一个计算子环节;
[0118] 相应的,衍生计算生成模块404用于根据计算环节以及冗余运算,生成相应的衍生计算环节,包括:
[0119] 用于在计算环节中随机选择出至少一个目标计算子环节;根据每个目标计算子环节以及每个冗余子运算,生成与每个目标计算子环节相对应的衍生计算子环节,且衍生计算子环节的计算结果与相应的目标计算子环节的计算结果相同。
[0120] 在上述实施例的基础上,衍生计算生成模块404用于根据每个目标计算子环节以及每个冗余子运算,生成与每个目标计算子环节相对应的衍生计算子环节,包括:
[0121] 用于确定与目标计算子环节相对应的冗余子运算,将冗余子运算的计算过程添加到相应的目标计算子环节的计算过程中,生成与每个目标计算子环节相对应的衍生计算子环节。
[0122] 本实施例还提供了一种可重构阵列抗功耗攻击设备,如图6所示,所述可重构阵列抗功耗攻击设备50包括处理器500以及存储器501;
[0123] 所述存储器501用于存储计算机程序502,并将所述计算机程序502传输给所述处理器;
[0124] 所述处理器500用于根据所述计算机程序502中的指令执行上述的一种可重构阵列抗功耗攻击方法实施例中的步骤。
[0125] 示例性的,所述计算机程序502可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器501中,并由所述处理器500执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序502在所述可重构阵列抗功耗攻击设备50中的执行过程。
[0126] 所述可重构阵列抗功耗攻击设备50可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述可重构阵列抗功耗攻击设备50可包括,但不仅限于,处理器500、存储器501。本领域技术人员可以理解,图6仅仅是可重构阵列抗功耗攻击设备50的示例,并不构成对可重构阵列抗功耗攻击设备50的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述可重构阵列抗功耗攻击设备50还可以包括输入输出设备、网络接入设备、总线等。
[0127] 所称处理器500可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器  (Digital Signal Processor,DSP)、专用集成电路 (Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field‑Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0128] 所述存储器501可以是所述可重构阵列抗功耗攻击设备50的内部存储单元,例如可重构阵列抗功耗攻击设备50的硬盘或内存。所述存储器501也可以是所述可重构阵列抗功耗攻击设备50的外部存储设备,例如所述可重构阵列抗功耗攻击设备50上配备的插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器501还可以既包括所述可重构阵列抗功耗攻击设备50的内部存储单元也包括外部存储设备。所述存储器501用于存储所述计算机程序以及所述可重构阵列抗功耗攻击设备50所需的其他程序和数据。所述存储器501还可以用于暂时地存储已经输出或者将要输出的数据。
[0129] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0130] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0131] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0132] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0133] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储计算机程序的介质。
[0134] 本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种可重构阵列抗功耗攻击方法,该方法包括以下步骤:
[0135] 预测可重构阵列在执行密码算法过程中的计算功耗;
[0136] 根据所述计算功耗,确定与所述密码算法相对应的冗余运算;
[0137] 根据所述密码算法的运算流程,确定所述密码算法的计算环节;
[0138] 根据所述计算环节以及所述冗余运算,生成相应的衍生计算环节;
[0139] 对所述可重构阵列进行配置,以使所述可重构阵列执行所述衍生计算环节以替代执行相应的计算环节,且所述衍生计算环节的计算结果与所述相应的计算环节的计算结果相同。
[0140] 注意,上述仅为本发明实施例的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明实施例不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明实施例的保护范围。因此,虽然通过以上实施例对本发明实施例进行了较为详细的说明,但是本发明实施例不仅仅限于以上实施例,在不脱离本发明实施例构思的情况下,还可以包括更多其他等效实施例,而本发明实施例的范围由所附的权利要求范围决定。