CN108650075B - 一种抗侧信道攻击的软硬结合aes快速加密实现方法和*** - Google Patents

一种抗侧信道攻击的软硬结合aes快速加密实现方法和*** Download PDF

Info

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
Application number
CN201810448155.XA
Other languages
English (en)
Other versions
CN108650075A (zh
Inventor
葛景全
屠晨阳
高能
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN201810448155.XA priority Critical patent/CN108650075B/zh
Publication of CN108650075A publication Critical patent/CN108650075A/zh
Application granted granted Critical
Publication of CN108650075B publication Critical patent/CN108650075B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/72Protecting 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation 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

一种抗侧信道攻击的软硬结合AES快速加密实现方法和***
技术领域
本发明属于信息安全软硬件设计技术领域,具体为基于全可编程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字节的中间值
Figure DEST_PATH_RE-BDA0001657738950000021
和16字节的轮密钥
Figure GDA0002445910140000022
输出为16字节的
Figure GDA0002445910140000023
在每一轮的加密操作中,共有4种独立运算,分别为字节代替SubBytes,行移位ShiftRows,列混淆MixColumns,轮密钥加AddRoundKey。在第一轮计算之前,先进行一次轮密钥加操作
Figure GDA0002445910140000024
这里j∈{0,...,15},pj代表第j个明文字节,
Figure GDA0002445910140000025
代表第j个初始轮密钥字节。另外,最后一轮省略了一个列混淆操作MixColumns。除了最后一轮以外,所有的轮内操作都有上述4 个相同的步骤,RKi代表第i轮的轮密钥。
AES的软件实现通常利用查找表进行操作,以降低计算消耗。除了轮密钥加AddRoundKey操作之外,其余三个操作被结合成T0、T1、T2、T3四个查找表。每个查找表由256个四字节元素组成,其中每个四字节元素对应一个字节的输入和四字节输出。利用查找表的AES软件实现在每一轮的加密过程如下所示:
Figure GDA0002445910140000026
Figure GDA0002445910140000027
Figure GDA0002445910140000028
Figure GDA0002445910140000029
利用查找表和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个字节
Figure GDA0002445910140000031
作为输入,也就是说这4个字节访问的是同一个查找表T0,另外三个访问T1、T2、T3的4字节组合从公式(1)- (4)中也能很容易找出来。查找同一个查找表的两个字节
Figure DEST_PATH_IMAGE002
如果满足
Figure GDA0002445910140000033
Figure GDA0002445910140000034
则会发生cache碰撞。因此,在这种情况下,我们可以得到等式
Figure GDA0002445910140000035
Figure GDA0002445910140000036
变换之后的等式为:
Figure GDA0002445910140000037
因为发生了cache命中,满足公式(5)的明文字节对的平均加密时间应该比其他的明文字节对的平均加密时间小。所以,在所有256种明文字节异或值的索引中,满足公式(5)的 8个连续的索引值会有明显的时间减小。
公式(1)-(4)的4组轮密钥字节的异或关系是我们在第一轮攻击中可以得到的所有信息。如果不考虑其他轮,我们无法得到更多的密钥信息。考虑到log2δ=3个低位比特不能在第一轮所得的信息中获得,攻击者仍然要猜测4*(8+3*log2δ)=68比特的密钥值才能破解所有密钥。
以上是第一轮攻击的技术细节。
最后一轮攻击破解密钥比第一轮攻击更快,并且可以破解几乎全部密钥(剩余的8比特可以直接采用暴力破解)。最后一轮AES加密省略了列混淆Mixcolumns的步骤,根据OpenSSL的版本不同,查找表的实现方式略有不同。在OpenSSL0.9.7a中,最后一轮查找表的表达公式如下所示:
Figure GDA0002445910140000038
Figure GDA0002445910140000039
Figure GDA00024459101400000310
Figure GDA00024459101400000311
在较新版本的OpenSSL1.1.0f中,最后一轮查找表的表达公式如下所示:
Figure GDA0002445910140000041
Figure GDA0002445910140000042
Figure GDA0002445910140000043
Figure GDA0002445910140000044
公式(6)-(9)利用的是查找表T4,而公式(10)-(11)利用的仍然是T0、T1、 T2、T3。他们唯一的区别就在于查找表的不同,因此两种实现对最后一轮cache时间攻击都没有防御能力。不失一般性,我们以公式(6)-(9)为例说明最后一轮攻击的实现原理。
对于任意两个密文字节ck和cj,我们可以得到
Figure GDA0002445910140000045
Figure GDA0002445910140000046
Figure GDA0002445910140000047
其中u和w分别由k和j决定。当
Figure GDA0002445910140000048
时,Cache碰撞一定会发生,由这个条件推出
Figure GDA0002445910140000049
变量替换后,我们可以得到等式
Figure GDA00024459101400000410
变换后得到:
Figure GDA00024459101400000411
因此,当此种情况发生时,cache碰撞一定发生。另一方面,如果上诉等式不成立,我们无法确知其是否是在一个cache行内,也就是说,cache碰撞会在一定小概率下发生。因此,满足
Figure GDA00024459101400000412
的索引值的平均加密时间会小于其他
Figure GDA00024459101400000413
的索引值。这就是最后一轮攻击的原理。
能量/电磁分析攻击利用的是加密过程的能量/电磁泄露波形来破解密钥,这种攻击的基本思想是能量/电磁泄露波形与指令本身和数据会有相关性。在这种攻击方式中,需要首先确定一种估计泄露量的近似模型。在表征CMOS电路电压翻转的泄露时,通常会利用汉明距离模型。汉明距离模型假设泄露跟0→1和1→0的比特变换数量是相关的,同一寄存器上的第i轮第j个字节的汉明距离模型泄露可以用下式表示:
Figure GDA00024459101400000414
其中,HD()代表求汉明距离的函数,HW()代表计算汉明重量的函数,Wj i代表所有明文的
Figure GDA00024459101400000415
组成的集合。l(t)代表一个能量/电磁能量迹的第t个时间点,L(t)代表所有能量迹 l(t)的集合。泄露的估计的集合Wj i和所有能量迹第t个时间点的集合L(t)之间的相关系数
Figure GDA00024459101400000416
可以用下面的公式表示:
Figure GDA00024459101400000417
其中,E()表示求平均的函数,Var()表示求方差的函数。如果
Figure GDA00024459101400000418
不是正确的轮秘钥,则对应的Wj i和L(t)的相关系数会很小;与其相反,如果
Figure GDA00024459101400000419
是正确密钥,则对应的泄漏点会有非常高的相关系数。
发明内容
本发明用软硬结合的方式在全可编程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轮输出中间值
Figure GDA0002445910140000051
被传递给硬件加密模块,开始硬件加密过程。硬件加密阶段开始于第R1+1轮,结束于第R1+10轮。需要注意的是,输出中间值
Figure GDA0002445910140000052
在第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个字节的轮秘钥数组
Figure GDA0002445910140000053
每次加密16字节明文分组前接收两组输入,第一组输入是两个随机数R1和R2,第二组输入是16字节明文P={p0,...p15},并计算明文与初始密钥的异或值
Figure GDA0002445910140000061
步骤2:开始软件加密轮循环,轮数i由1循环到R1,起始加密阶段结束,输出
Figure GDA0002445910140000062
进一步地,所述步骤2中软件加密轮循环的每个加密轮内的指令执行顺序按照以下步骤决定:
第一步,计算R1%4的值,如果R1%4==0,计算16字节输入中间值
Figure GDA0002445910140000063
中下标最小的四个字节值,即
Figure GDA0002445910140000064
Figure GDA0002445910140000065
记为
Figure GDA0002445910140000066
如果R1%4==1,计算下标倒数第二小的四个字节值,即
Figure GDA0002445910140000067
如果R1%4==2,计算下标第二大的四个字节的值,即
Figure GDA0002445910140000068
如果R1%4==3,计算下标最大的四个字节的值,即
Figure GDA0002445910140000069
的值;
第二步,计算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:预先输入所有的11*16个字节的轮秘钥数组
Figure GDA00024459101400000610
每次加密开始前接收两组输入,第一组输入是两个随机数R1和R2,第二组输入是16字节中间值
Figure GDA00024459101400000611
步骤2:开始运行硬件加密轮循环,轮数i由R1循环到R2,硬件加密阶段得到输出结果
Figure GDA00024459101400000612
但是并不输出,此时开始虚拟加密轮循环,轮数i由R2循环到R1+10,虚拟加密轮循环结束,输出硬件加密阶段结果
Figure GDA00024459101400000613
进一步地,所述步骤2中硬件加密轮循环按照以下步骤运行:
第一步,判断轮数i是否小于第二个随机数R2,如果结果为真,执行下一步;
第二步,在一个时钟周期内,对中间值
Figure GDA00024459101400000614
进行字节变换、行移位、列混淆操作,并使轮数i=i+1;
第三步,判断i<R2是否为真,如果为真,重复第二步,直到i<R2为假,结束硬件加密轮循环,把输出
Figure GDA00024459101400000615
存储在寄存器中,但不输出。
进一步地,所述步骤2中虚拟加密轮循环按照以下步骤运行:
第一步,判断轮数i是否小于i<(R1+10),如果结果为真,执行下一步;
第二步,除存储
Figure GDA0002445910140000071
的寄存器值保持不变外,其余操作与硬件加密轮循环相同,即在一个时钟内,完成对中间值
Figure GDA0002445910140000072
的字节变换、行移位、列混淆操作,并使轮数i=i+1;
第三步,判断i<(R1+10)是否为真,如果为真,重复第二步,知道i<(R1+10)为假,结束虚拟加密轮循环,把存储在寄存器中的
Figure GDA0002445910140000073
输出,即
Figure GDA0002445910140000074
进一步地,所述的(3)最后软件加密阶段,步骤如下:
步骤1:预先输入所有的11*16个字节的轮密钥数组
Figure GDA0002445910140000075
每次加密开始前接收两组输入,第一组输入是两个随机数R1和R2,第二组输入是16字节中间值
Figure GDA0002445910140000076
步骤2:开始软件加密轮循环,轮数i由R2循环到10,当轮数i循环到10的时候,最后软件加密阶段结束,输出16字节的密文C=S10
进一步地,所述步骤2中软件加密轮循环按照以下步骤运行:
第一步,计算R1%4的值,如果R1%4==0,计算16字节输入中间值
Figure GDA0002445910140000077
中下标最小的四个字节值,即
Figure GDA0002445910140000078
Figure GDA0002445910140000079
记为
Figure GDA00024459101400000710
如果R1%4==1,计算下标倒数第二小的四个字节值,即
Figure GDA00024459101400000711
如果R1%4==2,计算下标第二大的四个字节的值,即
Figure GDA00024459101400000712
如果R1%4==3,计算下标最大的四个字节的值,即
Figure GDA00024459101400000713
的值;
第二步,计算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核,快速的在软件和硬件之间传输数据,其具体步骤为:
第一步,当起始加密软件阶段计算好中间值
Figure GDA00024459101400000714
后,立刻运行DcacheFlushRange函数,把数据缓存Dcache中的16字节数据
Figure GDA00024459101400000715
全部刷到DDR内存中;
第二步,AXI-DMA从16字节数据
Figure GDA00024459101400000716
的虚拟地址中取出数据,传输到硬件加密模块的输入寄存器中;
第三步,当硬件加密阶段结束后,AXI-DMA立刻从硬件加密模块的输出寄存器取出16 字节数据
Figure GDA00024459101400000717
传输到最后软件加密阶段的输入内存地址中;
第四步,最后软件加密阶段开始加密前,首先运行DcacheInvalidateRange函数,使16字节数据
Figure GDA00024459101400000718
对应的Dcache地址全部无效。
本发明还提供一种抗侧信道攻击的软硬结合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是本发明的起始软件加密阶段的算法流程。
Figure DEST_PATH_IMAGE004
表示的是
Figure GDA0002445910140000082
的值。R1%4决定了哪个四字节中间值会首先被计算。如果R1%4==0,第i个加密轮内会优先计算
Figure GDA0002445910140000083
四个字节的值。当R1%4==1时,
Figure GDA0002445910140000084
四个字节会被首先计算出来,以此类推。
另一个数字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为例,说明了随机化指令操作的步骤。下面详细说明起始软件加密阶段的步骤:
步骤1:预先输入11*16个字节的轮密钥数组,即
Figure GDA0002445910140000091
步骤2:接收第一个输入,即两个随机数R1和R2
步骤3:接收第二个输入,即16字节的明文P={p0,...p15}。
步骤4:计算明文与初始密钥的异或值,得到第一轮的中间值输入S1,即
Figure GDA00024459101400000922
Figure GDA00024459101400000923
步骤5:给轮数i赋初始值,即i=1。
步骤6:判断i是否小于第一个随机数R1,即i<R1
步骤7:如果i<R1,则计算R1%4的值。如果R1%4==0,计算
Figure GDA0002445910140000092
四个字节的值,即
Figure GDA0002445910140000093
如果R1%4==1,计算
Figure GDA0002445910140000094
四个字节的值;如果R1%4==2,计算
Figure GDA0002445910140000095
四个字节的值;如果R1%4==3,计算
Figure GDA0002445910140000096
四个字节的值。
步骤8:第一组四个字节计算完成之后,则计算R2%3的值。如果R2%3==0,则计算剩余12个字节中下标最小的4个字节的值;如果R2%3==1,则计算剩余12个字节中下标处在中间的4个字节的值;如果R2%3==2,则计算剩余12个字节中下标最大的4 个字节的值。假设R1%4==0,则上一步已经计算了
Figure GDA0002445910140000097
四个字节的值,剩余12个字节以4字节为一组,分别为
Figure GDA0002445910140000098
Figure GDA0002445910140000099
下面分别以R2%3==0和 R2%3==1为例进行说明。如果R2%3==0,则
Figure GDA00024459101400000910
这4个字节在第二步将会被计算出来,剩下的两组4字节的值为
Figure GDA00024459101400000911
Figure GDA00024459101400000912
如果R2%3==1,则
Figure GDA00024459101400000913
被首先计算出来,剩下的两组4字节的值为
Figure GDA00024459101400000914
Figure GDA00024459101400000915
步骤9:在得到R2%3的值并计算过第二步的4字节中间值之后,计算(R2-R1)%2的值,并以此决定第三步计算哪组4字节中间值。假设R1%4==0并且R2%3==0,
Figure GDA00024459101400000916
Figure GDA00024459101400000917
已经被计算出来,剩余的两组4字节中间值为
Figure GDA00024459101400000918
Figure GDA00024459101400000919
如果此时得到的(R2-R1)%2==0,则首先计算
Figure GDA00024459101400000920
再计算
Figure GDA00024459101400000921
与此对应,如果此时得到的(R2-R1)%2==1,则先计算
Figure DEST_PATH_IMAGE006
再计算
Figure GDA0002445910140000102
步骤10:以上步骤结束之后,一轮加密操作就已经完成了,继续判断i<R1的条件是否成立。如果条件成立,则计算得到的16字节结果重新成为下一轮的输入,重复步骤7-9。如果判断i<R1的条件不成立,则整个加密循环结束,16字节中间值
Figure GDA0002445910140000103
就会作为输出
Figure GDA0002445910140000104
传递给硬件加密模块。
以上就是起始软件加密阶段的详细步骤。起始软件加密阶段完成之后,整个加密过程进入下一阶段,即硬件加密阶段。第R1轮的16字节中间值
Figure GDA0002445910140000105
会被传递给硬件加密模块。图3是硬件加密阶段的整个加密流程,其详细的操作步骤为:
步骤1:预先输入11*16个字节的轮密钥数组,即
Figure GDA0002445910140000106
步骤2:接收第一个输入,即两个随机数R1和R2
步骤3:接收第二个输入,即第R1轮的16字节中间值
Figure GDA0002445910140000107
步骤4:给轮数i赋初始值,即i=R1
步骤5:判断i是否小于第二个随机数R2,如果结果为真,执行下一步骤。
步骤6:对中间值
Figure GDA0002445910140000108
的所有字节进行字节变换操作。
步骤7:对中间值
Figure GDA0002445910140000109
的所有字节进行行移位操作。
步骤8:对中间值
Figure GDA00024459101400001010
的所有字节进行列混淆操作。
步骤9:以上步骤完成后,轮数i=i+1。继续判断i<R2是否为真,如果为真,重复步骤6-9,直到i<R2为假,结束循环,此时的中间值输出为
Figure GDA00024459101400001011
Figure GDA00024459101400001012
保存,但不输出,继续下面的虚拟加密***作。
步骤10:在虚拟轮中,存储输出中间值
Figure GDA00024459101400001013
的寄存器保持不变,其余操作和正常加密轮一样,称为虚拟加密轮。每一次虚拟加密轮结束后,轮数i=i+1。
步骤11:判断i<(R1+10)是否为真,如果为真,重复步骤10,直到i<(R1+10)为假,结束循环,输出结果
Figure GDA00024459101400001014
以上11个步骤就是硬件加密阶段的完整过程。增加虚拟轮的作用是为了使整个硬件加密阶段的轮数为10,以保证侧信道攻击者不能轻易地从硬件加密能量波形中看出硬件的加密轮数,从而减小攻击难度。
以上就是硬件加密阶段的详细步骤。当硬件加密阶段完成之后,第R1轮16字节的中间值
Figure GDA00024459101400001015
会被传递给ARM内核,完成最后软件加密阶段。图4是最后软件加密阶段的整个加密流程,其详细的操作步骤为:
步骤1:预先输入11*16个字节的轮密钥数组,即
Figure GDA00024459101400001016
步骤2:接收第一个输入,即两个随机数R1和R2
步骤3:接收第二个输入,即第R2轮的16字节中间值
Figure DEST_PATH_IMAGE008
步骤4:给轮数i赋初始值,即i=R2
步骤5:判断i是否小于10,如果结果为真,执行下一步骤,下面的步骤6-8与起始软件加密阶段的步骤7-9完全相同。
步骤6:先计算R1%4的值,如果R1%4==0,计算
Figure GDA0002445910140000112
四个字节的值,即
Figure GDA0002445910140000113
Figure GDA0002445910140000114
如果R1%4==1,计算
Figure GDA0002445910140000115
四个字节的值;如果R1%4==2,计算
Figure GDA0002445910140000116
四个字节的值;如果R1%4==3,计算
Figure GDA0002445910140000117
四个字节的值。
步骤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中的数据和内存中的数据并不一定是一致的。数据不一致的问题主要出在以下两个加密时间点上。
第一,当起始加密软件阶段计算好传入硬件的中间值
Figure GDA0002445910140000121
时,数据
Figure GDA0002445910140000122
有可能仍然储存在cache中,并没有存入内存。此时,如果AXI-DMAIP核从内存中读取数据
Figure GDA0002445910140000123
将很可能读出错误结果。本发明利用Vivado软件自带函数库中的Xil_DcacheFlushRange函数,把数据缓存Dcache中的数据
Figure GDA0002445910140000124
进行Flush操作,使得Dcache中的数据
Figure GDA0002445910140000125
立即进入DDR 内存中。这样操作之后,就能保证AXI-DMAIP核读取的数据
Figure GDA0002445910140000126
是正确的。
第二,当硬件加密阶段结束,AXI-DMA IP核会把硬件加密输出结果
Figure GDA0002445910140000127
送回内存中,但是cache中的数据并没有改变。如果此时cache中有对应
Figure GDA0002445910140000128
的内存地址的数据,ARM核会直接从cache中取值作为
Figure GDA0002445910140000129
进入最后软件加密阶段。为了避免这种错误,本发明利用Vivado软件自带函数库中的Xil_DcacheInvalidateRange函数,把Dcache中的数据
Figure GDA00024459101400001210
进行Inviladate操作,使得ARM核直接从内存中取
Figure GDA00024459101400001211
的数据,从而避免了cache数据不一致导致的计算错误。
采用本发明的AES加密方法在全可编程SoC上实现AES加密,在有效抵御cache时间攻击和能量/电磁分析攻击的情况下,并没有大幅降低数据吞吐率。各AES实现方法数据吞吐率的对比情况如下表1所示:
表1:三种不同AES实现的数据吞吐率
Figure GDA00024459101400001212
表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个字节的轮秘钥数组
Figure FDA0002445910130000011
每次加密16字节明文分组前接收两组输入,第一组输入是两个随机数R1和R2,第二组输入是16字节明文P={p0,...p15},并计算明文与初始密钥的异或值
Figure FDA0002445910130000012
步骤1-2:开始软件加密轮循环,轮数i由1循环到R1,起始软件加密阶段结束,输出
Figure FDA0002445910130000013
其中
Figure FDA0002445910130000014
表示第R1轮结束之后的计算结果;
所述步骤1-2中软件加密轮循环的每个加密轮内的指令执行顺序按照以下步骤决定:
第一步,计算R1%4的值,如果R1%4==0,计算16字节输入中间值
Figure FDA0002445910130000015
Figure FDA0002445910130000016
中下标最小的四个字节值,即
Figure FDA0002445910130000017
Figure FDA0002445910130000018
记为
Figure FDA0002445910130000019
如果R1%4==1,计算下标倒数第二小的四个字节值,即
Figure FDA00024459101300000110
如果R1%4==2,计算下标第二大的四个字节的值,即
Figure FDA00024459101300000111
如果R1%4==3,计算下标最大的四个字节的值,即
Figure FDA00024459101300000112
第二步,计算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:预先输入所有的11*16个字节的轮秘钥数组
Figure FDA00024459101300000113
每次加密开始前接收两组输入,第一组输入是两个随机数R1和R2,第二组输入是16字节中间值
Figure FDA0002445910130000021
步骤2-2:开始运行硬件加密轮循环,轮数i由R1循环到R2,硬件加密阶段得到输出结果
Figure FDA0002445910130000022
其中
Figure FDA0002445910130000023
表示第R2轮结束之后的计算结果,但是并不输出,此时开始虚拟加密轮循环,轮数i由R2循环到R1+10,虚拟加密轮循环结束,输出硬件加密阶段结果
Figure FDA0002445910130000024
所述步骤2-2中硬件加密轮循环按照以下步骤运行:
第一步,判断轮数i是否小于第二个随机数R2,如果结果为真,执行下一步;
第二步,在一个时钟周期内,对中间值
Figure FDA0002445910130000025
进行字节变换、行移位、列混淆操作,并使轮数i=i+1;
第三步,判断i<R2是否为真,如果为真,重复第二步,直到i<R2为假,结束硬件加密轮循环,把输出
Figure FDA0002445910130000026
存储在寄存器中,但不输出;
所述步骤2-2中虚拟加密轮循环按照以下步骤运行:
第一步,判断轮数i是否小于i<(R1+10),如果结果为真,执行下一步;
第二步,除存储
Figure FDA0002445910130000027
的寄存器值保持不变外,其余操作与硬件加密轮循环相同,即在一个时钟内,完成对中间值
Figure FDA0002445910130000028
的字节变换、行移位、列混淆操作,并使轮数i=i+1;
第三步,判断i<(R1+10)是否为真,如果为真,重复第二步,直到i<(R1+10)为假,结束虚拟加密轮循环,把存储在寄存器中的
Figure FDA0002445910130000029
输出,即
Figure FDA00024459101300000210
所述最后软件加密阶段的步骤包括:
步骤3-1:预先输入所有的11*16个字节的轮密钥数组
Figure FDA00024459101300000211
每次加密开始前接收两组输入,第一组输入是两个随机数R1和R2,第二组输入是16字节中间值
Figure FDA00024459101300000212
步骤3-2:开始软件加密轮循环,轮数i由R2循环到10,当轮数i循环到10的时候,最后软件加密阶段结束,输出16字节的密文C=S10
所述步骤3-2中软件加密轮循环按照以下步骤运行:
第一步,计算R1%4的值,如果R1%4==0,计算16字节输入中间值
Figure FDA00024459101300000213
中下标最小的四个字节值,即
Figure FDA00024459101300000214
Figure FDA00024459101300000215
记为
Figure FDA00024459101300000216
如果R1%4==1,计算下标倒数第二小的四个字节值,即
Figure FDA00024459101300000217
如果R1%4==2,计算下标第二大的四个字节的值,即
Figure FDA00024459101300000218
如果R1%4==3,计算下标最大的四个字节的值,即
Figure FDA00024459101300000219
第二步,计算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核,快速的在软件和硬件之间传输数据,其步骤为:
第一步,当起始加密软件阶段计算好中间值
Figure FDA0002445910130000031
后,立刻运行DcacheFlushRange函数,把数据缓存Dcache中的16字节数据
Figure FDA0002445910130000032
全部刷到DDR内存中;
第二步,AXI-DMA从16字节数据
Figure FDA0002445910130000033
的虚拟地址中取出数据,传输到硬件加密模块的输入寄存器中;
第三步,当硬件加密阶段结束后,AXI-DMA立刻从硬件加密模块的输出寄存器取出16字节数据
Figure FDA0002445910130000034
传输到最后软件加密阶段的输入内存地址中;
第四步,最后软件加密阶段开始加密前,首先运行DcacheInvalidateRange函数,使16字节数据
Figure FDA0002445910130000035
对应的Dcache地址全部无效。
3.一种采用权利要求1或2所述方法的抗侧信道攻击的软硬结合AES快速加密实现***,其特征在于,包括:
起始软件加密单元,运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,结束的时间点被R1随机化;
硬件加密单元,运行在全可编程SoC的FPGA上,其加密起始和结束的时间点被两个随机数R1和R2随机化;
最后软件加密单元,运行在全可编程SoC的ARM内核的软件程序上,指令操作的顺序被两个随机数R1和R2随机化,起始的时间点被R2随机化。
CN201810448155.XA 2018-05-11 2018-05-11 一种抗侧信道攻击的软硬结合aes快速加密实现方法和*** Active CN108650075B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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