掌桥专利:专业的专利平台
掌桥专利
首页

一种抗侧信道攻击的AES加密算法硬件实现方法及系统

文献发布时间:2023-06-19 18:27:32


一种抗侧信道攻击的AES加密算法硬件实现方法及系统

技术领域

本公开属于信息安全技术领域,尤其涉及一种抗侧信道攻击的AES加密算法硬件实现方法及系统。

背景技术

本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。

密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准,它在数学理论上被证明是非常安全的,能够对抗诸如线性或者差分密码分析等数学攻击。设计者假设一个经典的对抗模型,加密操作被视为一个黑匣子,仅仅为攻击者提供输入和输出接口。但是,发明人发现,当它被部署到嵌入式设备中时,一些不经意泄漏的信号例如瞬时功耗、电磁辐射等敏感信息就会使得黑匣子变为灰匣子。侧信道分析是一种廉价而且可以扩展的技术,它能够使得攻击者能够利用这些泄漏的信号,并且从中提取到我们的密钥或密码,而现有方法主要从数学理论上制造严谨安全的算法,而忽略了物理安全上的保护。

发明内容

本公开为了解决上述问题,提供了一种抗侧信道攻击的AES加密算法硬件实现方法及系统,所述方案在不失安全性的前提下,通过采用提出的S盒的掩码实现,基于串行实现、寄存器复用以及移位寄存器赋值等方式减少AES S盒的等效门数,进而有效减少了抗侧信道掩码AES加密算法硬件实现的等效门数。

根据本公开实施例的第一个方面,提供了一种抗侧信道攻击的AES加密算法硬件实现方法,包括:

将待处理的明文数据与当前轮次的加密密钥进行异或操作;并利用预先实现的S盒进行密钥扩展操作;其中,所述密钥扩展操作耗费四个S盒的周期完成每一份的低32位的转换,同时,将每一份剩余位的转换操作分布在后续执行过程中;

基于异或操作结果,顺序执行字节替换、列混合以及行变换操作,其中,所述字节替换操作基于预先实现的S盒实现;

迭代执行预设轮次上述步骤,完成AES加密算法的实现;其中,所述预设轮次有AES加密算法的密钥位数决定,且最后轮次不执行行变换;

其中,所述S盒的实现包括线性反馈移位寄存器、串行模乘乘法器、de lta函数、布尔掩码转乘法掩码、求逆、乘法掩码转布尔掩码、仿射变换以及信号控制与综合处理过程的实现。

进一步的,所述布尔掩码转乘法掩码、求逆操作以及乘法掩码转布尔掩码操作复用一组寄存器,其中,对于一阶AES的实现,选择一个16位的寄存器和一个8位的寄存器,所述16位寄存器的低8位作为所述串行乘乘法器的一组输入,高8位用于接收所述串行乘乘法器的输出;所述8位寄存器的作为所述串行乘乘法器的另外一组输入;

进一步的,对于二阶AES的实现,所述乘法掩码转布尔掩码操作在选择一个16位的寄存器和一个8位的寄存器的基础上,增加一个8位寄存器。

进一步的,所述求逆及仿射变换中均采用启发式算法对其实现门数进行优化,其中,所述启发式算法具体为:将先前所作的异或操作应用于后续的异或操作中,进而减少异或门数。

进一步的,所述delta函数的实现,具体表示为:

其中,x为S盒求逆时的输入,基于

进一步的,所述线性反馈移位寄存器通过选择32位的移位寄存器产生需要的随机数,用于delta函数、布尔掩码转乘法掩码以及乘法掩码转布尔掩码过程中随机数的生成。

进一步的,所述串行模乘乘法器为采用串行实现的8位模乘乘法器,且所述S盒中仅存在一个8位模乘乘法器。

进一步的,所述将待处理的明文数据与当前轮次的加密密钥进行异或操作,具体为:将明文数据与加密密钥的异或进行拆分,基于预设大小的位数进行计算,并通过移位寄存器在计算完成后进行循环移位,进而完成异或操作。

进一步的,所述明文数据存储于明文寄存器,所述加密密钥存储于密钥寄存器中。

根据本公开实施例的第二个方面,提供了一种抗侧信道攻击的AES加密算法硬件实现系统,其执行如上所述的一种抗侧信道攻击的AES加密算法硬件实现方法的步骤,具体为:

将待处理的明文数据与当前轮次的加密密钥进行异或操作;并利用预先实现的S盒进行密钥扩展操作;其中,所述密钥扩展操作耗费四个S盒的周期完成每一份的低32位的转换,同时,将每一份剩余位的转换操作分布在后续执行过程中;

基于异或操作结果,顺序执行字节替换、列混合以及行变换操作,其中,所述字节替换操作基于预先实现的S盒实现;

迭代执行预设轮次上述步骤,完成AES加密算法的实现;其中,所述预设轮次有AES加密算法的密钥位数决定,且最后轮次不执行行变换;

其中,所述S盒的实现包括线性反馈移位寄存器、串行模乘乘法器、delta函数、布尔转乘法、求逆、乘法转布尔、仿射变换以及信号控制与综合处理过程的实现。

与现有技术相比,本公开的有益效果是:

本公开提供了一种抗侧信道攻击的AES加密算法硬件实现方法及系统,所述方案在不失安全性的前提下,通过采用提出的S盒的掩码实现,基于串行实现、寄存器复用以及移位寄存器赋值等方式减少AES S盒的等效门数,进而有效减少了抗侧信道掩码AES加密算法硬件实现的等效门数。

本公开附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。

附图说明

构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。

图1为本公开实施例中所述的AES S盒实现过程示意图;

图2为本公开实施例中所述的线性反馈移位寄存器示意图;

图3为本公开实施例中所述的串行模乘乘法器示意图;

图4为本公开实施例中所述的一阶delta函数示意图;

图5为本公开实施例中所述的二阶delta函数示意图;

图6为本公开实施例中所述的布尔掩码转乘法掩码伪代码示意图;

图7为本公开实施例中所述的求逆操作伪代码示意图;

图8为本公开实施例中所述的乘法掩码转布尔掩码伪代码示意图;

图9为本公开实施例中所述的AES S盒仿射变换示意图;

图10为本公开实施例中所述的一阶transform示意图;

图11为本公开实施例中所述的二阶transform示意图;

图12为本公开实施例中所述的AES算法流程图;

图13为本公开实施例中所述的一阶AES算法测试结果示意图;

图14为本公开实施例中所述的二阶AES算法测试结果示意图;

图15为本公开实施例中所述的AES S盒及AES-128的实验结果示意图;

其中,

具体实施方式

下面结合附图与实施例对本公开做进一步说明。

应该指出,以下详细说明都是例示性的,旨在对本公开提供进一步的说明。除非另有指明,本实施例所述方案使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。

实施例一:

本实施例的目的是提供了一种抗侧信道攻击的AES加密算法硬件实现方法,包括:

将待处理的明文数据与当前轮次的加密密钥进行异或操作;并利用预先实现的S盒进行密钥扩展操作;其中,所述密钥扩展操作耗费四个S盒的周期完成每一份的低32位的转换,同时,将每一份剩余位的转换操作分布在后续执行过程中;

基于异或操作结果,顺序执行字节替换、列混合以及行变换操作,其中,所述字节替换操作基于预先实现的S盒实现;

迭代执行预设轮次上述步骤,完成AES加密算法的实现;其中,所述预设轮次由AES加密算法的密钥位数决定,且最后轮次不执行行变换;(如AES-128,其采用128位密钥,其预设轮次固定为10轮);

其中,所述S盒的实现包括线性反馈移位寄存器、串行模乘乘法器、delta函数、布尔掩码转乘法掩码、求逆、乘法掩码转布尔掩码、仿射变换以及信号控制与综合处理过程的实现。

进一步的,所述布尔掩码转乘法掩码、求逆操作以及乘法掩码转布尔掩码操作复用一组寄存器,其中,对于一阶AES的实现,选择一个16位的寄存器和一个8位的寄存器,所述16位寄存器的低8位作为所述串行乘乘法器的一组输入,高8位用于接收所述串行乘乘法器的输出;所述8位寄存器的作为所述串行乘乘法器的另外一组输入;

进一步的,对于二阶AES的实现,所述乘法掩码转布尔掩码操作在选择一个16位的寄存器和一个8位的寄存器的基础上,增加一个8位寄存器。

进一步的,所述求逆及仿射变换中均采用启发式算法对其实现门数进行优化,其中,所述启发式算法具体为:将先前所作的异或操作应用于后续的异或操作中,进而减少异或门数。

进一步的,所述delta函数的实现,具体表示为:

其中,x为S盒求逆时的输入,基于

进一步的,所述线性反馈移位寄存器通过选择32位的移位寄存器产生需要的随机数,用于delta函数、布尔掩码转乘法掩码以及乘法掩码转布尔掩码过程中随机数的生成。

进一步的,所述串行模乘乘法器为采用串行实现的8位模乘乘法器,且所述S盒中仅存在一个8位模乘乘法器。

进一步的,所述将待处理的明文数据与当前轮次的加密密钥进行异或操作,具体为:将明文数据与加密密钥的异或进行拆分,基于预设大小的位数进行计算,并通过移位寄存器在计算完成后进行循环移位,进而完成异或操作。

进一步的,所述明文数据存储于明文寄存器,所述加密密钥存储于密钥寄存器中。

具体的,为了便于理解,以下结合附图对本实施例所述方案进行详细说明:

在侧信道安全实现中,本实施例所述方案的目标是使实现中处理值的泄漏能够独立于敏感输入和敏感中间变量,在架构级别上,这是通过掩码来实现的,这意味着掩码处理后的数据被概率性地分为多个份额,只有在所有份额都已知的情况下才能恢复出敏感数据。而且随着噪声水平的增加,恢复密文也将变得更加困难。本实施例中仅针对一阶和二阶DPA(Differential Power Analysis:差分功耗分析)攻击提出安全实现措施,因为在充足的噪声水平下,这已经是很安全的了。

AES-128算法包括十轮的加密操作,整个算法包括两个输入接口和一个输出接口,在进入第一轮之前首先要将明文和加密密钥异或,之后进入九轮的相同操作:密钥扩展、字节替换、列混合以及行变换,最后一轮与前九轮不同的是没有行变换,在其中的密钥扩展以及字节替换中都需要用到S盒,因此如何安全高效地实现AES S盒又是工作的重中之重。S盒的掩码实现主要包括:为解决零值问题提出的Kronecker Delta function、布尔掩码转乘法掩码、求逆过程、乘法掩码转布尔掩码、仿射变换几个过程。

在已有的论文及实验中,已经为我们提出了如何实现S盒和AES算法的思路以及理论与技术支持,我们的发明是通过一系列技术例如:串行实现、寄存器复用、移位寄存器赋值等来优化已有结果的等效门数,并且不影响它的安全性。从结果来看,我们极大地优化了一阶和二阶AES S盒算法实现的等效门数,并且在三阶AES算法上也展现出了很大的优化,二阶 AES算法也有一定的优化。同时,我们也将我们的实现部署到一个能够评估侧信道安全性的 FPGA中,在低噪声的环境下去分析安全性,我们采集了多达二十万条曲线没有发现泄漏。

具体的,一种抗侧信道攻击的AES加密算法硬件实现方法,包括AES S盒的实现以及基于实现的S盒进行AES加密算法的实现,以下分别进行详细说明:

(一)S盒的实现

如图1所示,AES S盒的掩码实现过程包括:delta函数、布尔掩码转乘法掩码、求逆、乘法掩码转布尔掩码、仿射变换以及最后的信号控制与综合处理六个过程。在实现这六个步骤之前,我们首先需要实现生成随机数的工具——线性反馈移位寄存器(LFSR)以及整个转换过程所用到的串行模乘乘法器(Multiply Serial),这两个工具在整个算法是实现的基础,以下对S盒的实现过程进行详细说明,具体的,以下除了针对S盒各模块相应的理论计数以及实现过程进行说明外,还将分一阶二阶对其相应的等效门优化方案、寄存器的使用以及信号控制等进行详细说明:

(1)实现线性反馈移位寄存器(LFSR)

不管一阶还是二阶本实施例所述方案用的都是相同的随机数生成工具,在delta函数、布尔掩码转乘法掩码以及步骤六乘法掩码转布尔掩码三个步骤中都用到线性反馈移位寄存器 (LFSR)来生成我们算法所需要用到的随机数。

如图2所示,我们选择32位的移位寄存器来产生所需要的随机数。在复位信号(rst_n) 到来的时候,通过输入一个随机的32位数,然后当使能信号(seed_valid)到来时,我们开始做移位,将图示四位进行取反、异或的结果赋给移位寄存器的最低位,而将移位寄存器的最高位作为随机数种子输出。

需要说明的是,所述delta函数所需要的随机数是一个周期产生1bit,一共需要七个周期,产生随机数操作与delta函数矩阵运算操作同步。而布尔与乘法掩码之间转换所需要的8位随机数是提前生成好的。

(2)实现串行模乘乘法器(Multiply_serial)

为了减少等效门数,本实施例所述方案在整个S盒乃至整个AES的实现过程中自始至终只有一个8位的模乘乘法器,串行实现,串行调用,用时间换面积。我们设定一个计数器,因为是串行计算,一次算一位,因此8位数需要8个周期才能计算完成,我们按照乘数从高位到低位来计算,第一次计算因为数不可能超过GF(2^8)因此不用取模,剩余的计算部分都一样,先将结果左移1位,再与被和乘数8个乘数的最高位、次高位直至最低位相与的结果进行异或,从第二次计算开始需要再将结果的最高位与mod相与来判断是否需要取模,我们这里省去了判断逻辑,直接将其与9个结果最高位和mod相与的结果异或,这样全0等于没异或,全1等于异或了,可以减少不必要的逻辑开销。另外我们将结果定义为寄存器,这样省去了中间寄存器的门数,也方便与模块外部进行交互。如图3所示为本实施例所述的串行模乘乘法器的实现图解。

(3)delta函数的实现(目的是解决乘法掩码中的零值问题)

为了解决乘法掩码中存在的零值问题,本实施例所述方案沿用了KroneckerDelta函数的思路,并且在AES S盒求逆时,有以下公式成立:x

以下对其具体实现进行详细说明,我们分一阶二阶来详细说明。一阶时,我们将输入x 分成两个,其中一个为第二份的最低位取反和第一份的最低位,另一个为第二份的剩余位取反和第一份的剩余位,注意它们是每一份(即通过掩码技术将算法的输入分成d+1份,也就是说这d+1份的异或结果应该与输入保持一致,具体分几份可根据实际需求进行确定)的对应位组合,然后从高位到低位排列,这样做的好处是方便我们后面的运算。紧接着把它们输入到delta函数中,在复位的时候分别赋给两个寄存器a和b,然后我们需要用线构造一个始终参与运算过程的2*2矩阵,矩阵中每个元素即是a的最低两位和b的最低两位按位相与和交叉相与的结果,注意第二个和第三个位置要异或随机数random1,然后在en信号到来之后我们就可以对a寄存器赋值为矩阵每一行异或的结果,对b寄存器进行循环右移2位,经过7个时钟周期完成运算,注意我们随机数是用步骤一的lfsr生成的,一周期产生1bit,与矩阵运算一起产生,一起运算,是瞬时的。

二阶与一阶不同的是,我们输入还是分成两个,其中一个为每一份的最低位组合,另一个为每一份剩余位的组合,注意这里没取反。而是在输入到delta函数中后经时钟复位后全部取反,其实不管一阶还是二阶我们都需要将其中一份取反,只不过二阶全部取反效果是一样的。同理我们构造一个3*3的矩阵,这里自然也编程了a的最低3位和b的最低3位按位和交叉相与的结果,而且这里需要三个随机数,上三角和下三角三个对应的位置分别异或 random1、random2和random3,自然也就需要图1所示的三个lfsr,当en信号到来时a是三行的每一行异或结果,b每次循环右移三位,最终完成deltax的输出即可。下面两个图分别为一阶和二阶delta函数的实现图示:

(4)布尔掩码转乘法掩码

不管一阶还是二阶,所述布尔掩码转乘法掩码都与求逆以及乘法掩码转布尔掩码复用一组寄存器,进而可以有效节省门数,其中,一阶时我们需要一个16位的寄存器xin和1个 8位寄存器yin,16位寄存器xin的最低8位作为步骤二所述乘法器的其中一组输入,最高8位则用来接收每次乘法器运算完成的输出结果zout,另外一个8位寄存器yin作为乘法器的另外一组输入,这样按照图6和图7所述算法以及其执行过程一阶布尔掩码转乘法掩码需要3个乘法器周期即可完成,我们通过cnt计数达到乘法器运算周期10以及btm信号计数达到3来标记该步骤的顺利完成,同时通过移位寄存器xin来每次替换乘法器的输入x以及寄存器与求逆以及乘法掩码转布尔掩码的复用大大减少了等效门数。

二阶时同理,只不过要多1个8位寄存器用到乘法掩码转布尔掩码中,其中,布尔掩码转乘法掩码和求逆操作的寄存器数量没变,还是将每次算法的其中一个乘数依次覆盖16位寄存器xin的最低8位,将另一个乘数也就是我们生产的随机数放在8位寄存器yin中,这样经过6个乘法器周期就可以完成运算,我们依然通过cnt是否为10以及btm是否为6来标记算法的执行与结束。

进一步的,通过图6算法所示,一阶实现需要1个8位随机数random1,二阶实现需要3个8位随机数random1、random2、random3,注意这些随机数与乘法掩码转布尔掩码所需随机数为同一类,而与delta函数所需随机数不同,它们虽然也是由不同的lfsr产生,但它们却是在算法一开始通过消耗8个周期产生的,产生完成之后把它们存储到随机数寄存器中,然后参与我们后序的算法执行,这些随机数寄存器是不占用我们实际算法的门数的,只是在测算法安全性的时候将它们打开。

如图6所述为该算法的伪代码,具体算法流程图将在下文S盒的整体实现中结合求逆以及乘法掩码转布尔掩码进行说明。

(5)求逆的实现

有限域上的求逆实际上是求这个数的254次方,我们按照图7所示算法来求,这样的话一共需要5个乘法器周期即可完成。具体通过布尔掩码转乘法掩码操作中所述的一个16位寄存器xin和一个8位寄存器yin,同时我们还需要实现求x^2、x^4以及x^16的三个函数,我们通过一种新的启发式算法对这三个函数进行优化,其技术构思为将之前所作的异或操作应用到后续的异或操作中,这样能够有效减少异或门数;所述启发式算法具体来自论文“Boyar J,Matthews P,Peralta R.Logic Minimization Techniques withApplications to Cryptology”,其具体步骤此处不再赘述。

最后,同样把求逆每步的乘数与被乘数输入到相应的xin、yin中,然后通过cnt是否为10 以及iv信号是否达到5来控制求逆的顺利进行。

(6)、乘法掩码转布尔掩码

一阶时思路基本是与布尔掩码转乘法掩码以及求逆操作一致,按照图8所示算法依次将所需要的乘数被乘数输入到xin和yin中,此时需要另外一个随机数random2与步骤四的 random1相对应,然后通过移位寄存器逻辑完成整个过程。还是判断cnt是否为10以及mtb 信号是否达到3来保证该过程的顺利进行。

二阶时要注意的是需要多一个8位的寄存器来保存中间的某一步的结果zout,不然寄存器不够用,然后二阶需要额外的random4、random5两个随机数于布尔掩码转乘法掩码操作中二阶的random1、random2、random3相对应,此时需要判断cnt是否为10以及mtb信号是否达到6来保证二阶乘法转布尔算法的顺利进行,如图8所示为该算法的伪代码。

(7)仿射变换

AES S盒的仿射变换非常简单,我们只需要将AES S盒的仿射变换矩阵实现成步骤五求逆一样的函数即可,同时我们还是利用新的启发式算法对其门数进行优化,另外注意我们一个仿射变换只对一份也就是8位数做,因此一阶的需要两个周期完成,二阶的需要三个周期完成。我们利用rdy信号来控制该过程,同时注意该rdy信号也标志着AES S盒执行结束,应作为S盒与AES算法交互的接口。最终优化门数的思路就是:启发式算法减少计算门数,一个周期仿射变换一份减少总门数。如图9所示为AES S盒的仿射变换过程图解。

(8)AES S盒的整体实现

通过cnt计数控制各个信号模块,其中,en信号控制delta函数的计算,load信号控制产生后续算法过程所需要的随机数,btm信号控制布尔掩码转乘法掩码过程,iv信号控制求逆过程,mtb信号控制乘法掩码转布尔掩码过程,rdy信号控制仿射变换以及整个AES S盒执行的结束与S盒和外部AES算法的交互。

同时,本实施例所述方案将转换过程的寄存器进行复用,将一个算法的输出作为下一个算法的输入,将复用寄存器作为单个乘法器的接口,这样大大减少了算法的总门数。如图10和图11展示了算法关键转换过程。

(2)AES加密算法的实现

基于上述的S盒进行AES加密算法的实现,首先,AES加密算法的实现过程需要1个明文寄存器和1个密钥寄存器。如图12所示,进入AES算法之前,首先要将明文和加密密钥做一次异或,为了减少门数,我们用周期换面积,并且将这一步与后面的addroundkey放在一起,因为这俩本质上是一样的,同时我们将明文与加密密钥的异或进行拆分,每4位地计算或者每8位地计算,通过移位寄存器在完成之后进行循环移位,这样经过相应周期数即可复原并完成异或操作。一阶两个256位的数进行异或,我们每8位进行计算,二阶两个384 位的数进行异或,我们每4位进行计算,这样做是为了保证我们的计数num位都能够被充分利用。

之后是密钥扩展操作,这里我们需要花费4个S盒的周期来完成每一份的低32位的转换,同时我们将每一份剩余位的转换操作分布在后续的算法执行过程中与它们做pipeline,这不仅是为了减少周期数,更是充分利用我们计数器的位数。

然后紧接着我们需要16个S盒的计算周期来完成subbytes操作,这里依然是利用移位寄存器方式,对S盒输入x进行循环右移8位来变换S盒每次的输入,并且将输出结果sx与明文寄存器做组合移位,来完成明文寄存器的更新。

再往后是shiftrows,这里我们将其实现为一次计算一份即128位的函数,然后一个周期调用一次,很明显一阶需要花费2个周期,二阶需要花费3个周期,之后是mixcolumn我们依然将其实现为函数,一次计算32位,我们通过最简算法即92个异或门来实现32位的mixcolumn,这样一阶需要8个周期,二阶需要12个周期来完成,当然这里还需要一个判断逻辑来保证最后一轮不执行mixcolumn。

最后我们将这些部分组合,通过round信号控制轮数,通过num信号控制周期,另外通过之前提到过的S盒的输出信号rdy来保证S盒与AES算法的交互从而整体实现了AES算法。

进一步的,为了证明本实施例所述方案的有效性,以下进行了相应的安全性分析以及实验结果证明。

(一)安全性分析

我们将一阶AES算法和二阶AES算法部署到Xilinx Spartan6 FPGA中,然后通过ISE 传到UART板子上,通过该板子与PC进行交互,然后通过PICO示波器编写相应的采集代码采集曲线,一阶AES是27000个点,二阶AES时30000个点,时钟频率为48mhz,采样频率为1.25GS/s,我们都分别采了10万-20万条曲线。

针对一阶、二阶情况的采集功耗曲线,如图13、14所示,通过t-test检验发现t值始终在(-4.5-4.5)之间,根据t-test结果分析,可以判定它们均不存在中间值信息的泄露。

(二)实验结果及分析

我们使用tsmc90nm工艺库,利用Design Compiler来测算法的等效门数,现将结果公布如图15所示,可以看出我们在不失安全性的前提下通过减少AES S盒的等效门数从而大大减少了AES算法整体的等效门数。

我们通过寄存器复用、移位寄存器、串行实现以及用周期换面积等思想大大减少了抗侧信道掩码AES硬件实现的等效门数,特别是串行思想,我们几乎贯彻了整个AES S盒乃至整个AES算法的实现过程中,并且我们保证了优化算法没有中间值等敏感信息的泄漏,即不失安全性,从实验结果以及安全性分析来讲我们的实验成果是非常成功的。

实施例二:

本实施例的目的是提供一种抗侧信道攻击的AES加密算法硬件实现系统。

一种抗侧信道攻击的AES加密算法硬件实现系统,其执行如上所述的一种抗侧信道攻击的AES加密算法硬件实现方法的步骤,具体为:

将待处理的明文数据与当前轮次的加密密钥进行异或操作;并利用预先实现的S盒进行密钥扩展操作;其中,所述密钥扩展操作耗费四个S盒的周期完成每一份的低32位的转换,同时,将每一份剩余位的转换操作分布在后续执行过程中;

基于异或操作结果,顺序执行字节替换、列混合以及行变换操作,其中,所述字节替换操作基于预先实现的S盒实现;

迭代执行预设轮次上述步骤,完成AES加密算法的实现;其中,所述预设轮次有AES加密算法的密钥位数决定,且最后轮次不执行行变换;

其中,所述S盒的实现包括线性反馈移位寄存器、串行模乘乘法器、delta函数、布尔转乘法、求逆、乘法转布尔、仿射变换以及信号控制与综合处理过程的实现。

进一步的,本实施例所述系统与实施例一中所述方法相对应,其技术细节在实施例一中已经进行了详细说明,故此处不再赘述。

上述实施例提供的一种抗侧信道攻击的AES加密算法硬件实现方法及系统可以实现,具有广阔的应用前景。

以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

相关技术
  • 一种基于硬件虚拟化的云平台受控侧信道攻击检测方法
  • 一种抗侧信道攻击的软硬结合AES快速加密实现方法和系统
  • 一种抗侧信道攻击的软硬结合AES快速加密实现方法和系统
技术分类

06120115578224