CN108650075B - 一种抗侧信道攻击的软硬结合aes快速加密实现方法和*** - Google Patents
一种抗侧信道攻击的软硬结合aes快速加密实现方法和*** Download PDFInfo
- Publication number
- CN108650075B CN108650075B CN201810448155.XA CN201810448155A CN108650075B CN 108650075 B CN108650075 B CN 108650075B CN 201810448155 A CN201810448155 A CN 201810448155A CN 108650075 B CN108650075 B CN 108650075B
- Authority
- CN
- China
- Prior art keywords
- encryption
- bytes
- round
- software
- byte
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种抗侧信道攻击的软硬结合AES快速加密实现方法和***。该方法包括:起始软件加密阶段,运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,结束的时间点被R1随机化;硬件加密阶段,运行在全可编程SoC的FPGA上,其加密起始和结束的时间点被两个随机数R1和R2随机化;最后软件加密阶段,运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,起始的时间点被R2随机化。本发明在保证高数据吞吐率的情况下,可同时抵御cache时间攻击、能量/电磁分析攻击,是一种高效、安全的AES加密方法。
Description
技术领域
本发明属于信息安全软硬件设计技术领域,具体为基于全可编程SoC的软硬结合AES 快速加密实现方法和***。本发明在保证了高数据吞吐率的情况下,可同时抵御cache时间攻击、能量/电磁分析攻击,是一种高效、安全的AES加密方法。
背景技术
近些年,随着物联网技术的巨大发展,大量的物联网设备涌入了市场,并极大的改变了人们的生活方式。与此同时,物联网在使用和传输数据的过程中所面临的安全问题,也引起了越来越多的注意。
加密是解决数据安全问题的一种最普遍的方法之一,物联网也不例外。现代密码学从数学理论的角度考虑密码算法的安全问题,这种密码学上的困难性问题并不能保证充分的安全。当一种密码算法在现实世界的芯片上实现时,会暴露出更多的弱点。这种利用现实世界加密实现的缺陷获取密钥信息的方法,被称为“侧信道攻击”。攻击者可以利用加密时间、cache行为、能量消耗和电磁辐射等侧信道泄露完成对密钥的破解。
自从Kocher在1996年提出了侧信道攻击的方法以来(见P“Kocher.Timingattacks on implementations of Diffie-Hellman,RSA,DSS,and other systems.InAdvances in Cryptology, pages 104-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行。我们以ARM Cortex-A9 MPCore为例,其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,而公式(10)-(11)利用的仍然是T0、T1、 T2、T3。他们唯一的区别就在于查找表的不同,因此两种实现对最后一轮cache时间攻击都没有防御能力。不失一般性,我们以公式(6)-(9)为例说明最后一轮攻击的实现原理。
对于任意两个密文字节ck和cj,我们可以得到和 其中u和w分别由k和j决定。当时,Cache碰撞一定会发生,由这个条件推出变量替换后,我们可以得到等式变换后得到:因此,当此种情况发生时,cache碰撞一定发生。另一方面,如果上诉等式不成立,我们无法确知其是否是在一个cache行内,也就是说,cache碰撞会在一定小概率下发生。因此,满足的索引值的平均加密时间会小于其他的索引值。这就是最后一轮攻击的原理。
能量/电磁分析攻击利用的是加密过程的能量/电磁泄露波形来破解密钥,这种攻击的基本思想是能量/电磁泄露波形与指令本身和数据会有相关性。在这种攻击方式中,需要首先确定一种估计泄露量的近似模型。在表征CMOS电路电压翻转的泄露时,通常会利用汉明距离模型。汉明距离模型假设泄露跟0→1和1→0的比特变换数量是相关的,同一寄存器上的第i轮第j个字节的汉明距离模型泄露可以用下式表示:
其中,HD()代表求汉明距离的函数,HW()代表计算汉明重量的函数,Wj i代表所有明文的组成的集合。l(t)代表一个能量/电磁能量迹的第t个时间点,L(t)代表所有能量迹 l(t)的集合。泄露的估计的集合Wj i和所有能量迹第t个时间点的集合L(t)之间的相关系数可以用下面的公式表示:
发明内容
本发明用软硬结合的方式在全可编程SoC中实现了AES算法,目的在于同时抵抗cache 时间攻击和能量/电磁分析攻击,并且保证数据吞吐率的损失可以接受。
本发明AES实现利用两个随机数R1和R2把整个AES加密过程分成三个阶段。图1 展示了整个软硬结合AES加密实现的过程。开始阶段和最后阶段运行在ARM内核的软件上,中间阶段运行在可编程硬件逻辑FPGA上。在软件阶段的每个加密轮内,指令操作的顺序被两个随机数R1和R2随机化。而在中间阶段的硬件加密过程,开始轮Round R1+1和结束轮RoundR2同样由R1和R2决定。因为软件和硬件的加密速度不同,硬件加密快于软件加密,因此整个加密过程的加密时间就由两个随机数R1和R2决定。另外,所有的44 字节轮密钥被预先计算好并且传送给了软件和硬件。
在起始软件加密阶段和最后软件加密阶段,每一个加密轮内的敏感操作顺序都会被随机化,以增加能量/电磁泄露的噪声。如公式(1)一(4)所示,本发明把软件加密轮内的操作分成了4个独立的操作,每个公式就是一个独立操作,它们的执行顺序并不影响最后的加密轮输出。指令操作的顺序是由R1和R2这两个随机数决定。
在起始软件加密阶段和最后软件加密阶段之间,是硬件加密阶段。起始软件加密阶段完成以后,16字节R1轮输出中间值被传递给硬件加密模块,开始硬件加密过程。硬件加密阶段开始于第R1+1轮,结束于第R1+10轮。需要注意的是,输出中间值在第R2-1轮就已经被计算出来。让硬件继续运行第R2轮到第R1+10轮虚拟加密轮,目的是为了确保攻击者不会通过硬件加密与软件加密的能量/电磁波形的显著差异来猜测出硬件加密轮数。
具体来说,本发明提供的一种抗侧信道攻击的软硬结合AES快速加密实现方法,利用两个随机数R1和R2把整个AES加密过程分成三个阶段,分别为起始软件加密阶段、硬件加密阶段和最后软件加密阶段,其中:
(1)起始软件加密阶段运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,结束的时间点被R1随机化;
(2)硬件加密阶段运行在全可编程SoC的FPGA上,其加密起始和结束的时间点被两个随机数R1和R2随机化;
(3)最后软件加密阶段运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,起始的时间点被R2随机化。
进一步地,所述的(1)起始软件加密阶段,步骤如下:
步骤1:预先输入所有的11*16个字节的轮秘钥数组每次加密16字节明文分组前接收两组输入,第一组输入是两个随机数R1和R2,第二组输入是16字节明文P={p0,...p15},并计算明文与初始密钥的异或值
进一步地,所述步骤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个字节中下标小的四个字节值。
进一步地,所述的(2)硬件加密阶段,步骤如下:
进一步地,所述步骤2中硬件加密轮循环按照以下步骤运行:
第一步,判断轮数i是否小于第二个随机数R2,如果结果为真,执行下一步;
进一步地,所述步骤2中虚拟加密轮循环按照以下步骤运行:
第一步,判断轮数i是否小于i<(R1+10),如果结果为真,执行下一步;
进一步地,所述的(3)最后软件加密阶段,步骤如下:
步骤2:开始软件加密轮循环,轮数i由R2循环到10,当轮数i循环到10的时候,最后软件加密阶段结束,输出16字节的密文C=S10。
进一步地,所述步骤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个字节中下标小的四个字节值。
进一步地,整个加密过程保持cache处于打开状态,并利用基于AXI-HP接口的AXI-DMA IP核,快速的在软件和硬件之间传输数据,其具体步骤为:
本发明还提供一种抗侧信道攻击的软硬结合AES快速加密实现***,其包括:
起始软件加密单元,运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,结束的时间点被R1随机化;
硬件加密单元,运行在全可编程SoC的FPGA上,其加密起始和结束的时间点被两个随机数R1和R2随机化;
最后软件加密单元,运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,起始的时间点被R2随机化。
本发明与现有技术相比,具有以下有益效果:
第一,本发明利用低随机熵的两个随机数R1和R2,使软件加密轮内的操作随机化,同时确定硬件的加密和结束轮。这种加密方式不仅有效的增加了加密时间的噪声,有效的抵御了cache时间攻击,同时由于软件加密轮内操作顺序的随机化,使得能量电磁分析攻击的难度大大增加,从而有效的抵御了能量/电磁分析攻击。
第二,为了提高软件和硬件之间的传输速度,本发明利用全可编程SoC的AXI总线的 AXI-HP高速接口,在SoC上的FPGA硬件内实现了一个AXI-DMA IP核。通过这种设计,最终实现了数据吞吐率的降低在可接受的范围内。
附图说明
图1为软硬结合AES加密方法的整体流程图;
图2为起始软件加密阶段的算法流程图;
图3为硬件加密阶段的加密流程图;
图4为最后软件加密阶段的算法流程图;
图5为cache第一轮的攻击对比结果图;
图6为cache最后一轮的攻击对比结果图;
图7为能量分析攻击的对比结果图;
图8为电磁分析攻击的对比结果图。
具体实施方式:
下面结合附图对本发明做进一步的说明。
图2是本发明的起始软件加密阶段的算法流程。表示的是的值。R1%4决定了哪个四字节中间值会首先被计算。如果R1%4==0,第i个加密轮内会优先计算四个字节的值。当R1%4==1时,四个字节会被首先计算出来,以此类推。
另一个数字R2%3则决定了剩余的12个字节中哪四个字节的中间值将在第二组指令中被计算,如果R2%3==0,将把下边排在最前面的字节在此组指令中计算出来,以此类推。 (R2-R1)%2的结果对应着第三组指令计算的四字节中间值,剩余的8字节计算顺序由其决定。
图2以流程图的方式对整个起始软件加密阶段的加密流程进行了描述,并分别以R1%4==0,R2%3==0,(R2-R1)%2==0和(R2-R1)%2==1为例,说明了随机化指令操作的步骤。下面详细说明起始软件加密阶段的步骤:
步骤2:接收第一个输入,即两个随机数R1和R2。
步骤3:接收第二个输入,即16字节的明文P={p0,...p15}。
步骤5:给轮数i赋初始值,即i=1。
步骤6:判断i是否小于第一个随机数R1,即i<R1。
步骤8:第一组四个字节计算完成之后,则计算R2%3的值。如果R2%3==0,则计算剩余12个字节中下标最小的4个字节的值;如果R2%3==1,则计算剩余12个字节中下标处在中间的4个字节的值;如果R2%3==2,则计算剩余12个字节中下标最大的4 个字节的值。假设R1%4==0,则上一步已经计算了四个字节的值,剩余12个字节以4字节为一组,分别为和下面分别以R2%3==0和 R2%3==1为例进行说明。如果R2%3==0,则这4个字节在第二步将会被计算出来,剩下的两组4字节的值为和如果R2%3==1,则被首先计算出来,剩下的两组4字节的值为和
步骤9:在得到R2%3的值并计算过第二步的4字节中间值之后,计算(R2-R1)%2的值,并以此决定第三步计算哪组4字节中间值。假设R1%4==0并且R2%3==0,和已经被计算出来,剩余的两组4字节中间值为和如果此时得到的(R2-R1)%2==0,则首先计算再计算与此对应,如果此时得到的(R2-R1)%2==1,则先计算再计算
步骤10:以上步骤结束之后,一轮加密操作就已经完成了,继续判断i<R1的条件是否成立。如果条件成立,则计算得到的16字节结果重新成为下一轮的输入,重复步骤7-9。如果判断i<R1的条件不成立,则整个加密循环结束,16字节中间值就会作为输出传递给硬件加密模块。
以上就是起始软件加密阶段的详细步骤。起始软件加密阶段完成之后,整个加密过程进入下一阶段,即硬件加密阶段。第R1轮的16字节中间值会被传递给硬件加密模块。图3是硬件加密阶段的整个加密流程,其详细的操作步骤为:
步骤2:接收第一个输入,即两个随机数R1和R2。
步骤4:给轮数i赋初始值,即i=R1。
步骤5:判断i是否小于第二个随机数R2,如果结果为真,执行下一步骤。
以上11个步骤就是硬件加密阶段的完整过程。增加虚拟轮的作用是为了使整个硬件加密阶段的轮数为10,以保证侧信道攻击者不能轻易地从硬件加密能量波形中看出硬件的加密轮数,从而减小攻击难度。
步骤2:接收第一个输入,即两个随机数R1和R2。
步骤4:给轮数i赋初始值,即i=R2。
步骤5:判断i是否小于10,如果结果为真,执行下一步骤,下面的步骤6-8与起始软件加密阶段的步骤7-9完全相同。
步骤7:第一组四个字节计算完成之后,则计算R2%3的值。如果R2%3==0,则计算剩余12个字节中下标最小的4个字节的值;如果R2%3==1,则计算剩余12个字节中下标处在中间的4个字节的值;如果R2%3==2,则计算剩余12个字节中下标最大的4 个字节的值。
步骤8:在得到R2%3的值并计算过第二步的4字节中间值之后,计算(R2-R1)%2的值,并以此决定第三步计算哪组4字节中间值。如果(R2-R1)%2==0,先算剩余8个字节中下标小的4个字节的值,后计算下标大的4个字节的值;如果(R2-R1)%2==1,则先计算8个字节中下标大的4个字节的值,后计算下标小的4个字节的值。
步骤9:以上步骤结束之后,一轮加密操作就已经完成了,继续判断i<10的条件是否成立。如果条件成立,则计算得到的16字节结果重新成为下一轮的输入,重复步骤6-8。如果判断i<10的条件不成立,则整个加密循环结束,输出得到16字节的最终结果 C=S10。
以上9个步骤就是最后软件加密阶段的完整过程。
在起始软件加密阶段、硬件加密阶段、最后软件加密节段完成之后,整个加密过程结束,最后软件加密阶段的输出C=S10就是最终的16字节密文输出。
在全可编程SoC上,联接ARM和FPGA的数据接口一共有三种,分别是AXI-GP,AXI-HP,和AXI-ACP接口。其中,AXI-GP接口直接把主互联接口和从互联接口连接起来,中间没有任何额外的FIFO缓冲存储。因此,其数据传输速度受到主互联接口和从互联接口的限制,是这三种接口中速度最慢的。AXI-GP接口仅用于通用的应用目的,并不追求高数据传输率。AXI-HP接口为FPGA和DDR内存或者OCM存储器提供了高带宽的快速数据通路,该类型的每个接口都有两个用于读写数据流的FIFO缓冲区。AXI-ACP接口是加速一致性端口,为 FPGA和ARM之间提供了低延迟的访问方式,并可选择与L1或L2高速缓存一致。
综合考虑数据传输速率和资源利用的效率,本发明选择利用AXI-HP作为软硬件之间的数据传输接口。利用免费的AXI-DMAIP核,本发明可以快速的在软件和硬件之间传输数据。
为了提高加密速度,本发明使能了ARM内核的cache。但是,使能cache的同时会带来一个问题。当利用AXI-DMAIP核传递数据时,cache中的数据和内存中的数据并不一定是一致的。数据不一致的问题主要出在以下两个加密时间点上。
第一,当起始加密软件阶段计算好传入硬件的中间值时,数据有可能仍然储存在cache中,并没有存入内存。此时,如果AXI-DMAIP核从内存中读取数据将很可能读出错误结果。本发明利用Vivado软件自带函数库中的Xil_DcacheFlushRange函数,把数据缓存Dcache中的数据进行Flush操作,使得Dcache中的数据立即进入DDR 内存中。这样操作之后,就能保证AXI-DMAIP核读取的数据是正确的。
第二,当硬件加密阶段结束,AXI-DMA IP核会把硬件加密输出结果送回内存中,但是cache中的数据并没有改变。如果此时cache中有对应的内存地址的数据,ARM核会直接从cache中取值作为进入最后软件加密阶段。为了避免这种错误,本发明利用Vivado软件自带函数库中的Xil_DcacheInvalidateRange函数,把Dcache中的数据进行Inviladate操作,使得ARM核直接从内存中取的数据,从而避免了cache数据不一致导致的计算错误。
采用本发明的AES加密方法在全可编程SoC上实现AES加密,在有效抵御cache时间攻击和能量/电磁分析攻击的情况下,并没有大幅降低数据吞吐率。各AES实现方法数据吞吐率的对比情况如下表1所示:
表1:三种不同AES实现的数据吞吐率
表1展示了三种不同AES实现方式的平均加密时间和数据吞吐率。其中,第一种“未做任何保护的AES实现”是OpenSSL0.9.7a中的原始AES软件加密;第二种“随机化加密轮内指令顺序的AES实现”是在原始的OpenSSL0.9.7a的AES软件加密实现的基础上,利用与本发明的起始和最后软件加密阶段一样的随机化指令顺序的步骤,实现的加密方法。第三种“软硬结合AES实现”就是本发明采用的AES加密方法。在计算数据吞吐率时,我们以第二种方法为归一化的基准,从表中可以看出,本发明的软硬结合AES实现的数据吞吐率是纯软件AES实现的0.75倍,并没有大幅的降低。
为了说明本发明的抗cache时间攻击和能量/电磁分析攻击的效果,首先给出cache第一轮和最后一轮的攻击对比结果,然后给出能量分析攻击的攻击对比结果,最后给出电磁分析攻击的攻击对比结果。
图5是cache第一轮的攻击对比结果,其中横坐标为第8和第16个明文字节的异或值索引,纵坐标为平均时间clock,深灰色线条是指被破解的正确密钥索引。其中,(a)图是“未作任何保护的AES实现”的cache第一轮攻击结果,(b)图是“随机化加密轮内指令顺序的AES 实现”的攻击结果,(c)图是本发明“软硬结合AES实现”的攻击结果。从三幅图的对比中可以明显的看到本发明的AES实现方法抵御cache第一轮攻击的效果。
图6是cache最后一轮的攻击对比结果,其中横坐标为第2个和第6个密文字节异或值索引,纵坐标为平均时间clock,深灰色线条是指被破解的正确密钥索引。其中,(a)图是“未作任何保护的AES实现”的cache最后一轮攻击结果,(b)图是“随机化加密轮内指令顺序的 AES实现”的攻击结果,(c)图是本发明“软硬结合AES实现”的攻击结果。从三幅图的对比中可以明显的看到本发明的AES实现方法抵御cache最后一轮攻击的效果。
图7是对硬件加密的能量分析攻击的对比结果,其中横坐标为第4轮和第5轮的第四个中间值字节的汉明距离,纵坐标为相关系数。其中,(a)图是在全可编程SoC上实现的未加任何防护的硬件加密的能量攻击结果,(b)图是对本发明的硬件加密阶段进行能量攻击的结果。从对比结果中可以看出,本发明的AES实现方法能够有效的抵御能量分析攻击。
图8是对硬件加密的电磁分析攻击的对比结果,其中横坐标为第4轮和第5轮的第四个中间值字节的汉明距离,纵坐标为相关系数。其中,(a)图是在全可编程SoC上实现的未加任何防护的硬件加密的电磁攻击结果,(b)图是对本发明的硬件加密阶段进行电磁攻击的结果。从对比结果中可以看出,本发明的AES实现方法能够有效的抵御电磁分析攻击。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (3)
1.一种抗侧信道攻击的软硬结合AES快速加密实现方法,其特征在于,该方法利用两个随机数R1和R2把整个AES加密过程分成三个阶段,分别为起始软件加密阶段、硬件加密阶段和最后软件加密阶段,其中:
(1)起始软件加密阶段运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,结束的时间点被R1随机化;
(2)硬件加密阶段运行在全可编程SoC的FPGA上,其加密起始和结束的时间点被两个随机数R1和R2随机化;
(3)最后软件加密阶段运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,起始的时间点被R2随机化;
所述起始软件加密阶段的步骤包括:
步骤1-1:预先输入所有的11*16个字节的轮秘钥数组每次加密16字节明文分组前接收两组输入,第一组输入是两个随机数R1和R2,第二组输入是16字节明文P={p0,...p15},并计算明文与初始密钥的异或值
所述步骤1-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个字节中下标小的四个字节值;
所述硬件加密阶段的步骤包括:
步骤2-2:开始运行硬件加密轮循环,轮数i由R1循环到R2,硬件加密阶段得到输出结果其中表示第R2轮结束之后的计算结果,但是并不输出,此时开始虚拟加密轮循环,轮数i由R2循环到R1+10,虚拟加密轮循环结束,输出硬件加密阶段结果
所述步骤2-2中硬件加密轮循环按照以下步骤运行:
第一步,判断轮数i是否小于第二个随机数R2,如果结果为真,执行下一步;
所述步骤2-2中虚拟加密轮循环按照以下步骤运行:
第一步,判断轮数i是否小于i<(R1+10),如果结果为真,执行下一步;
所述最后软件加密阶段的步骤包括:
步骤3-2:开始软件加密轮循环,轮数i由R2循环到10,当轮数i循环到10的时候,最后软件加密阶段结束,输出16字节的密文C=S10;
所述步骤3-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个字节中下标小的四个字节值。
2.根据权利要求1所述的抗侧信道攻击的软硬结合AES快速加密实现方法,其特征在于,整个加密过程保持cache处于打开状态,并利用基于AXI-HP接口的AXI-DMA IP核,快速的在软件和硬件之间传输数据,其步骤为:
3.一种采用权利要求1或2所述方法的抗侧信道攻击的软硬结合AES快速加密实现***,其特征在于,包括:
起始软件加密单元,运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,结束的时间点被R1随机化;
硬件加密单元,运行在全可编程SoC的FPGA上,其加密起始和结束的时间点被两个随机数R1和R2随机化;
最后软件加密单元,运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,起始的时间点被R2随机化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810448155.XA CN108650075B (zh) | 2018-05-11 | 2018-05-11 | 一种抗侧信道攻击的软硬结合aes快速加密实现方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810448155.XA CN108650075B (zh) | 2018-05-11 | 2018-05-11 | 一种抗侧信道攻击的软硬结合aes快速加密实现方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108650075A CN108650075A (zh) | 2018-10-12 |
CN108650075B true CN108650075B (zh) | 2020-09-08 |
Family
ID=63754602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810448155.XA Active CN108650075B (zh) | 2018-05-11 | 2018-05-11 | 一种抗侧信道攻击的软硬结合aes快速加密实现方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108650075B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109714310A (zh) * | 2018-11-07 | 2019-05-03 | 苏州蜗牛数字科技股份有限公司 | 一种sim卡的侧信道抗攻击方法 |
CN110502933B (zh) * | 2019-07-05 | 2021-07-13 | 中国科学院信息工程研究所 | 一种可抵抗基于flush操作的cache攻击的软硬协同计时器实现方法和*** |
CN110442469B (zh) * | 2019-07-23 | 2020-06-30 | 浙江大学 | 一种基于局部随机映射的缓存侧信道攻击防御方法 |
US11704443B2 (en) * | 2019-11-19 | 2023-07-18 | Silicon Laboratories Inc. | Block cipher side-channel attack mitigation for secure devices |
CN111723388A (zh) * | 2020-06-23 | 2020-09-29 | 湖南国科微电子股份有限公司 | 一种密码运算防护方法、装置、设备及介质 |
CN115801412B (zh) * | 2022-11-18 | 2023-05-02 | 国网河北省电力有限公司电力科学研究院 | 一种电力物联信息网络攻击行为特征的提取方法 |
CN115643003B (zh) * | 2022-12-23 | 2023-03-14 | 飞腾信息技术有限公司 | 用于侧信道分析的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1761185A (zh) * | 2005-11-18 | 2006-04-19 | 清华大学 | 乱序执行的数据流aes加密电路结构 |
CN104378196A (zh) * | 2014-11-07 | 2015-02-25 | 昆腾微电子股份有限公司 | 加解密算法的安全执行方法和装置 |
CN107017016A (zh) * | 2017-03-30 | 2017-08-04 | 中国科学院计算技术研究所 | 一种防时序侧通道攻击的内存刷新控制方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10103873B2 (en) * | 2016-04-01 | 2018-10-16 | Intel Corporation | Power side-channel attack resistant advanced encryption standard accelerator processor |
-
2018
- 2018-05-11 CN CN201810448155.XA patent/CN108650075B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1761185A (zh) * | 2005-11-18 | 2006-04-19 | 清华大学 | 乱序执行的数据流aes加密电路结构 |
CN104378196A (zh) * | 2014-11-07 | 2015-02-25 | 昆腾微电子股份有限公司 | 加解密算法的安全执行方法和装置 |
CN107017016A (zh) * | 2017-03-30 | 2017-08-04 | 中国科学院计算技术研究所 | 一种防时序侧通道攻击的内存刷新控制方法及装置 |
Non-Patent Citations (1)
Title |
---|
Cache Attacks and Countermeasures:The Case of AES;Dag Arne Osvik等;《Springer》;20061231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108650075A (zh) | 2018-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108650075B (zh) | 一种抗侧信道攻击的软硬结合aes快速加密实现方法和*** | |
US8417961B2 (en) | Apparatus and method for implementing instruction support for performing a cyclic redundancy check (CRC) | |
CN112152785A (zh) | 基于sha2和sha3组合的xmss硬件加速器 | |
US11042655B2 (en) | Decryption method and circuit, corresponding device | |
AU2009208124A1 (en) | Data encryption system and method | |
CN111832050A (zh) | 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 | |
US9317286B2 (en) | Apparatus and method for implementing instruction support for the camellia cipher algorithm | |
US20130151842A1 (en) | Encryption key transmission with power analyis attack resistance | |
US20220075738A1 (en) | Systems, methods and apparatus for low latency memory integrity mac for trust domain extensions | |
JP2003513490A (ja) | 意図しないサイド・チャネル信号の分析によるデータ抜取りに耐性のデータ処理方法 | |
JP5202350B2 (ja) | 暗号処理装置及び暗号処理方法及び暗号処理プログラム | |
EP4311158A1 (en) | Efficient low-overhead side-channel protection for polynomial multiplication in post-quantum encryption | |
Bjørstad | Cryptanalysis of grain using time/memory/data tradeoffs | |
Rachh et al. | Efficient implementations of S-box and inverse S-box for AES algorithm | |
Liu et al. | Fast composite field S-box architectures for advanced encryption standard | |
CN114826560A (zh) | 一种轻量级分组密码cref实现方法及*** | |
Ege et al. | Memory encryption for smart cards | |
US20220083651A1 (en) | Protection of authentication tag computation against power and electromagnetic side-channel attacks | |
Wei et al. | A small first-order DPA resistant AES implementation with no fresh randomness | |
Peng et al. | A Hardware/Software Collaborative SM4 Implementation Resistant to Side-channel Attacks on ARM-FPGA Embedded SoC | |
CN113630236A (zh) | 一种sm3的数据加密方法及相关装置 | |
Rachh et al. | Implementation of AES S-Boxes using combinational logic | |
Neve et al. | On the complexity of side-channel attacks on AES-256--methodology and quantitative results on cache attacks | |
TWI776474B (zh) | 單回合高階加密標準電路模組 | |
CN116820397B (zh) | 基于CRYSTALS-Kyber的快速数论变换电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |