一种抗侧信道攻击的软硬结合AES快速加密实现方法和系统技术方案

技术编号:19150894 阅读:17 留言:0更新日期:2018-10-13 10:29
本发明专利技术涉及一种抗侧信道攻击的软硬结合AES快速加密实现方法和系统。该方法包括:起始软件加密阶段,运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,结束的时间点被R1随机化;硬件加密阶段,运行在全可编程SoC的FPGA上,其加密起始和结束的时间点被两个随机数R1和R2随机化;最后软件加密阶段,运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,起始的时间点被R2随机化。本发明专利技术在保证高数据吞吐率的情况下,可同时抵御cache时间攻击、能量/电磁分析攻击,是一种高效、安全的AES加密方法。

A fast hard and fast encryption method and system for resisting side channel attacks based on AES

The invention relates to a hard and fast AES encryption method and system for resisting side channel attack. This method includes: in the initial software encryption phase, the order of instruction operation is randomized by two random numbers R1 and R2, and the end time is randomized by R1; in the hardware encryption phase, the encryption starts and ends on the FPGA of the fully programmable SoC, and the encryption starts and ends at two time points Random numbers R1 and R2 are randomized; at the last stage of software encryption, the order of instruction operation is randomized by two random numbers R1 and R2, and the starting time point is randomized by R2. The invention can resist cache time attack and energy/electromagnetic analysis attack at the same time while ensuring high data throughput, and is an efficient and safe AES encryption method.

【技术实现步骤摘要】
一种抗侧信道攻击的软硬结合AES快速加密实现方法和系统
本专利技术属于信息安全软硬件设计
,具体为基于全可编程SoC的软硬结合AES快速加密实现方法和系统。本专利技术在保证了高数据吞吐率的情况下,可同时抵御cache时间攻击、能量/电磁分析攻击,是一种高效、安全的AES加密方法。
技术介绍
近些年,随着物联网技术的巨大发展,大量的物联网设备涌入了市场,并极大的改变了人们的生活方式。与此同时,物联网在使用和传输数据的过程中所面临的安全问题,也引起了越来越多的注意。加密是解决数据安全问题的一种最普遍的方法之一,物联网也不例外。现代密码学从数学理论的角度考虑密码算法的安全问题,这种密码学上的困难性问题并不能保证充分的安全。当一种密码算法在现实世界的芯片上实现时,会暴露出更多的弱点。这种利用现实世界加密实现的缺陷获取密钥信息的方法,被称为“侧信道攻击”。攻击者可以利用加密时间、cache行为、能量消耗和电磁辐射等侧信道泄露完成对密钥的破解。自从Kocher在1996年提出了侧信道攻击的方法以来(见P.Kocher.TimingattacksonimplementationsofDiffie-Hellman,RSA,DSS,andothersystems.InAdvancesinCryptology,pages104-113,1996),侧信道攻击已经成为了加密设备的非常严重的安全隐患。在此之后,研究人员提出了很多防御侧信道攻击的加密方法,例如掩码、随机延时、随机指令等。但是,这些攻击和防御方法大多选择简单架构的芯片作为目标,例如8位微控制器,这种目标不能满足市场上微电子器件的发展需求。另一方面,随着物联网的快速发展,物联网设备的功能越来越丰富、复杂和个性化。全可编程SoC把ARM和FPGA结合起来,为嵌入式系统创造了新的可能,为系统架构工程师和ARM开发人员提供了一个更加强大和灵活的开发平台以满足消费者的个性需求。考虑到其广阔的市场前景,研究全可编程SoC的安全问题成为了一个必须和紧迫的问题。Rijndael算法在2001年被NIST确定为下一代加密标准,即AES算法。现在,AES算法已经成为了应用最广泛的加密算法之一。AES算法是一种分组密码算法,对128比特明文进行多轮运算。根据密钥大小的不同,分为128比特、192比特和256比特三种,分别对应10轮、12轮和14轮运算。为了简单并不失一般性,以128比特10轮AES为例进行说明。AES是一种迭代算法,第i轮的输入为16字节的中间值和16字节的轮密钥输出为16字节的在每一轮的加密操作中,共有4种独立运算,分别为字节代替SubBytes,行移位ShiftRows,列混淆MixColumns,轮密钥加AddRoundKey。在第一轮计算之前,先进行一次轮密钥加操作这里j∈{0,…,15},pj代表第j个明文字节,代表第j个初始轮密钥字节。另外,最后一轮省略了一个列混淆操作MixColumns。除了最后一轮以外,所有的轮内操作都有上述4个相同的步骤,RKi代表第i轮的轮密钥。AES的软件实现通常利用查找表进行操作,以降低计算消耗。除了轮密钥加AddRoundKey操作之外,其余三个操作被结合成T0、T1、T2、T3四个查找表。每个查找表由256个四字节元素组成,其中每个四字节元素对应一个字节的输入和四字节输出。利用查找表的AES软件实现在每一轮的加密过程如下所示:利用查找表和16字节异或操作,运行在软件里的轮计算可以非常快速并且易于实现。但是,大型查找表在软件实现中非常容易遭到cache攻击,例如cache时间攻击。对于硬件实现的AES,目前有三类实现方法分别满足不同的应用需求。第一类AES方法把注意力放在更高的数据吞吐率上,不关注资源利用率。第二类方法的研究人员追求更好的资源利用效率,对数据吞吐率的要求并不十分苛刻。第三类设计则专注于降低加密运算的能量消耗。不论哪类方法,其侧信道泄露问题同样十分严重,面临着严峻的安全问题。在CPU和主存储器之间,有一块小型快速的存储区域被称为“cache”(高速缓冲存储器,简称缓存)。CPU利用cache存储最常被访问的内存地址。当CPU在主存储中寻找数据时,CPU会把该数据存储在cache中,然后把之前存在cache中的数据驱逐出去。这个过程完成之后,CPU再次查询相同地址时,就会直接从cache中取出数据,速度比从主存储中取值更快,这种情况叫做cache命中。Cache机制的运用,大大提高了现代CPU的性能。但是,利用cache命中和失效之间的侧信道泄露,可以对敏感数据进行cache攻击,cache时间攻击是其中最常见并且最易实施的一种攻击类型。现代CPU的cache不存储单独的字节,而是以行为单位进行存储,不同的CPU拥有不同大小的cache行。我们以ARMCortex-A9MPCore为例,其cache行的大小为32字节。T0、T1、T2、T3表的每个元素是4字节。如果我们用δ代表一个cache行的元素数量,则δ=32/4=8个元素组成一个Cortex-A9的cache行。对于任意的字节s和s′,如果忽略掉log2δ个低位比特,其余的比特位都相等的话,那么在查找s时会把s′也存进cache行。我们把这种高位相等的s和s'写成<s>=<s′>。当查找的两个元素s和s′满足<s>=<s′>时,一个cache命中或者叫cache碰撞就会发生。相反的,如果<s>≠<s′>,则会发生一次cache失效。总体来看,第二种情况的发生会导致更长的操作时间,因为CPU需要继续查询其他层cache甚至主存。cache第一轮攻击利用的是第一轮加密时的cache命中。由公式(1)—(4)可以看到,查找表T0在第一轮使用了4个字节作为输入,也就是说这4个字节访问的是同一个查找表T0,另外三个访问T1、T2、T3的4字节组合从公式(1)—(4)中也能很容易找出来。查找同一个查找表的两个字节如果满足则会发生cache碰撞。因此,在这种情况下,我们可以得到等式变换之后的等式为:因为发生了cache命中,满足公式(5)的明文字节对的平均加密时间应该比其他的明文字节对的平均加密时间小。所以,在所有256种明文字节异或值的索引中,满足公式(5)的8个连续的索引值会有明显的时间减小。公式(1)—(4)的4组轮密钥字节的异或关系是我们在第一轮攻击中可以得到的所有信息。如果不考虑其他轮,我们无法得到更多的密钥信息。考虑到log2δ=3个低位比特不能在第一轮所得的信息中获得,攻击者仍然要猜测4*(8+3*log2δ)=68比特的密钥值才能破解所有密钥。以上是第一轮攻击的技术细节。最后一轮攻击破解密钥比第一轮攻击更快,并且可以破解几乎全部密钥(剩余的8比特可以直接采用暴力破解)。最后一轮AES加密省略了列混淆Mixcolumns的步骤,根据OpenSSL的版本不同,查找表的实现方式略有不同。在OpenSSL0.9.7a中,最后一轮查找表的表达公式如下所示:在较新版本的OpenSSL1.1.0f中,最后一轮查找表的表达公式如下所示:公式(6)—(9)利用的是查找表T4本文档来自技高网...

【技术保护点】
1.一种抗侧信道攻击的软硬结合AES快速加密实现方法,其特征在于,该方法利用两个随机数R1和R2把整个AES加密过程分成三个阶段,分别为起始软件加密阶段、硬件加密阶段和最后软件加密阶段,其中:(1)起始软件加密阶段运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,结束的时间点被R1随机化;(2)硬件加密阶段运行在全可编程SoC的FPGA上,其加密起始和结束的时间点被两个随机数R1和R2随机化;(3)最后软件加密阶段运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,起始的时间点被R2随机化。

【技术特征摘要】
1.一种抗侧信道攻击的软硬结合AES快速加密实现方法,其特征在于,该方法利用两个随机数R1和R2把整个AES加密过程分成三个阶段,分别为起始软件加密阶段、硬件加密阶段和最后软件加密阶段,其中:(1)起始软件加密阶段运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,结束的时间点被R1随机化;(2)硬件加密阶段运行在全可编程SoC的FPGA上,其加密起始和结束的时间点被两个随机数R1和R2随机化;(3)最后软件加密阶段运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,起始的时间点被R2随机化。2.根据权利要求1所述的抗侧信道攻击的软硬结合AES快速加密实现方法,其特征在于,所述起始软件加密阶段的步骤包括:步骤1:预先输入所有的11*16个字节的轮秘钥数组每次加密16字节明文分组前接收两组输入,第一组输入是两个随机数R1和R2,第二组输入是16字节明文P={p0,…p15},并计算明文与初始密钥的异或值步骤2:开始软件加密轮循环,轮数i由1循环到R1,起始加密阶段结束,输出3.根据权利要求2所述的抗侧信道攻击的软硬结合AES快速加密实现方法,其特征在于,所述步骤2中软件加密轮循环的每个加密轮内的指令执行顺序按照以下步骤决定:第一步,计算R1%4的值,如果R1%4==0,计算16字节输入中间值中下标最小的四个字节值,即和记为如果R1%4==1,计算下标倒数第二小的四个字节值,即如果R1%4==2,计算下标第二大的四个字节的值,即如果R1%4==3,计算下标最大的四个字节的值,即的值;第二步,计算R2%3的值,如果R2%3==0,计算剩余12字节中下标最小的四个字节的值;如果R2%3==1,计算剩余12个字节中下标处在中间的四个字节的值;如果R2%3==2,计算剩余12字节中下标最大的四个字节的值;第三步,计算(R2-R1)%2的值,如果(R2-R1)%2==0,首先计算剩余8个字节中下标小的四个字节值,再计算剩余8个字节中下标大的四个字节值;如果(R2-R1)%2==1,首先计算剩余8个字节中下标大的四个字节值,再计算8个字节中下标小的四个字节值。4.根据权利要求1所述的抗侧信道攻击的软硬结合AES快速加密实现方法,其特征在于,所述硬件加密阶段的步骤包括:步骤1:预先输入所有的11*16个字节的轮秘钥数组每次加密开始前接收两组输入,第一组输入是两个随机数R1和R2,第二组输入是16字节中间值步骤2:开始运行硬件加密轮循环,轮数i由R1循环到R2,硬件加密阶段得到输出结果但是并不输出,此时开始虚拟加密轮循环,轮数i由R2循环到R1+10,虚拟加密轮循环结束,输出硬件加密阶段结果5.根据权利要求4所述的抗侧信道攻击的软硬结合AES快速加密实现方法,其特征在于,所述步骤2中硬件加密轮循环按照以下步骤运行:第一步,判断轮数i是否小于第二个随机数R2,如果结果为真,执行下一步;第二步,在一个时钟周期内,对中间值进行字节变换、行移位、列混淆操作,并使轮数i=i+1;第三步,判断i<R2是否为真,如果为真,重复第二步,直到i<R2为假,结束硬件加密轮循环,把输出存储在寄存器中,但不输出。6.根据权利要求4所述的抗侧信道攻击的软硬结合AES快速加密实现方法,其特征在于,所述步骤2中虚拟...

【专利技术属性】
技术研发人员:葛景全屠晨阳高能
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

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

1