CN102404108A - 一种针对aes-128算法的新型故障攻击方法 - Google Patents

一种针对aes-128算法的新型故障攻击方法 Download PDF

Info

Publication number
CN102404108A
CN102404108A CN2011103283333A CN201110328333A CN102404108A CN 102404108 A CN102404108 A CN 102404108A CN 2011103283333 A CN2011103283333 A CN 2011103283333A CN 201110328333 A CN201110328333 A CN 201110328333A CN 102404108 A CN102404108 A CN 102404108A
Authority
CN
China
Prior art keywords
circleplus
byte
aes
invsb
bytes
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.)
Granted
Application number
CN2011103283333A
Other languages
English (en)
Other versions
CN102404108B (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.)
Hangzhou Maen Science & Technology Co ltd
Original Assignee
Ningbo University
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 Ningbo University filed Critical Ningbo University
Priority to CN201110328333.3A priority Critical patent/CN102404108B/zh
Publication of CN102404108A publication Critical patent/CN102404108A/zh
Application granted granted Critical
Publication of CN102404108B publication Critical patent/CN102404108B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种针对AES-128算法的新型故障攻击方法,包括以下步骤:首先攻击者随机选择一个明文,获取该明文在初始密钥作用下的正确密文;然后攻击者对随机选择的明文进行加密操作,在加密操作过程中任选第九轮的子密钥的前三列中的一列,对其进行多字节随机故障诱导,获得包含随机故障的错误密文;接着采用相同的操作,对第九轮的子密钥中的剩余三列分别进行多字节随机故障诱导,直至完全恢复得到第十轮的子密钥;再逆向计算得到初始密钥,优点在于其攻击第九轮子密钥加操作所需的子密钥中的任何一列都不会影响彼此的操作结果,因此可以同时使用多台设备对AES-128密码系统进行差分故障攻击,进而可快速获得初始密钥信息,可节省更多的时间。

Description

一种针对AES-128算法的新型故障攻击方法
技术领域
本发明涉及一种AES算法的故障攻击技术,尤其是涉及一种针对AES-128算法的新型故障攻击方法。
背景技术
AES(Advanced Encryption Standard,高级加密标准)是典型代换置换网络结构的分组密码,其数据分组长度为128比特,密钥长度分为128比特、192比特和256比特三种形式。在AES分组密码系统中,密钥长度为128比特的AES-128算法应用最为广泛,由加密算法、解密算法和密钥扩展算法三部分组成,其中加密算法和解密算法结构相同,只是子密钥的使用顺序相反。
AES-128加密算法共需进行十轮加密,如图1所示,除第十轮不包括列混淆(MC)操作外,每一轮加密依次进行字节代换(SB)、行变换(SR)、列混淆、子密钥加(ARK)操作,每次操作产生的结果称为一个状态(State),每个状态均包含16个字节,AES-128加密算法中各种变换均基于状态进行处理。假设s=s0s1s2…s126s127表示一个状态,其中,si∈GF(2),GF(2)为一种有限域,其包括两种元素0和1,0≤i≤127。首先按先后顺序将s分割为16个字节,分别记为:s00、s10、s20、s30、s01、s11、s21、s31、s02、s12、s22、s32、s03、s13、s23、s33,其次将上述16个字节组成一个4×4状态数组
s 00 s 01 s 02 s 03 s 10 s 11 s 12 s 13 s 20 s 21 s 22 s 23 s 30 s 31 s 32 s 33 .
AES-128加密算法的每一轮加密过程都需要一组子密钥Kn(n=1,2,…,10),子密钥由AES-128密钥扩展算法产生。AES-128密钥扩展算法依次生成一个包含4个字节的一维数组W[i],i=1,2,…,43,每4个一维数组构成一组子密钥。当i mod 4≠0时,W[i]的各字节信息为W[i-1]与W[i-4]对应项的异或值;当imod 4=0时,W[i]计算过程相对复杂。以W[40]为例,首先将W[39]循环移动(RW)一个字节得到W′[39],其次将W′[39]经字节代换(SB)操作得到W″[39],最后将W″[39]和第十轮的扩展常数项(Rcon[10])以及W[36]三者对应位置的字节进行异或操作即可获得W[40],同理可得到W[j],j=4×r,r=1,2,…,9。
在外界干扰的情况下,AES分组密码系统运行时可能会出现硬件故障或计算错误,利用这些故障行为或错误信息,采用DFA(Differential Fault Analysis,差分故障攻击)技术就可恢复AES算法的初始密钥。由于密码算法的安全强度与其结构设计关系密切,只有不懈的找出不同密码算法缺陷,并针对这些缺陷在密码算法实现时提出相应的应变措施,才能设计出更实用、更安全的密码算法。因此,为进一步完善和发展AES算法,针对AES算法的DFA学术研究已引起学者广泛关注。
根据AES-128算法的结构及其轮函数的数学形式,故障诱导技术可以采用面向不同数据单位的模型,例如面向比特、单字节以及多字节模型,其一般假设:1)攻击者能够诱导储存在静态存储器中的状态数组出现任意故障,但其并不了解故障诱导的确切位置以及确切的被引入的故障值;2)针对同一明文M而言,攻击者能够得到在相同初始密钥Key控制下的无故障密文C和有效错误密文F。
传统的针对AES-128算法的差分故障攻击方案按故障诱导位置的不同主要分为两种:第一种是将故障导入到AES-128算法的加密过程中,通过向加密过程内指定存储单元中导入随机故障,利用非线性变化的差分特性,恢复算法的初始密钥,目前这种方案的研究相对成熟且已有成功攻破加密器件的案例;第二种是将故障导入到AES-128算法的密钥扩展过程中,通过在特定时刻对子密钥的生成过程中状态进行修改,利用差分分析技术,恢复出初始密钥,然而由于这种方案要求在特定时刻对AES-128算法实施攻击,因而对故障诱导技术要求比较严格。这两种差分故障攻击方案还需进行一系列的计算才能确定被引入的故障信息。
发明内容
本发明所要解决的技术问题是提供一种针对AES-128算法的新型故障攻击方法,其能够对第九轮子密钥加操作所需的子密钥的前三列中的任一列信息进行故障诱导攻击,且对故障诱导技术要求比较宽松。
本发明解决上述技术问题所采用的技术方案为:一种针对AES-128算法的新型故障攻击方法,其特征在于包括以下步骤:
1)攻击者随机选择一个明文,获取该明文在初始密钥作用下的正确密文,将该正确密文记为C, C = SR ( SB ( S ⊕ K 9 ) ) ⊕ K 10 , 其中,S表示AES-128加密算法中经第九轮列混淆操作后的状态,K9表示AES-128加密算法中第九轮子密钥加操作所需的子密钥,K9包含W[36]、W[37]、W[38]和W[39]四列16个字节的信息,W[36]列包含K9中的第0个字节的信息K0 9、第1个字节的信息K1 9、第2个字节的信息K2 9和第3个字节的信息K3 9,W[37]列包含K9中的第4个字节的信息K4 9、第5个字节的信息K5 9、第6个字节的信息K6 9和第7个字节的信息K7 9,W[38]列包含K9中的第8个字节的信息K8 9、第9个字节的信息K9 9、第10个字节的信息K10 9和第11个字节的信息K11 9,W[39]列包含K9中的第12个字节的信息K12 9、第13个字节的信息K13 9、第14个字节的信息K14 9和第15个字节的信息K15 9,SB表示AES-128加密算法中第十轮加密的字节代换操作,SR表示AES-128加密算法中第十轮加密的行变换操作,K10表示AES-128加密算法中第十轮子密钥加操作所需的子密钥,
Figure BDA0000102022410000032
为异或操作符号;
2)攻击者对步骤1)中随机选择的明文进行加密操作,在加密操作过程中任选已正确生成且已储存在静态存储器中的K9的前三列中的一列,对所选列的所有字节进行随机故障诱导,每次随机故障诱导操作均获得一个包含多个字节的随机故障的有效错误密文,记为F, F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 ,
Figure BDA0000102022410000034
表示包含随机故障的第九轮子密钥,
Figure BDA0000102022410000035
表示包含随机故障的第十轮子密钥;然后,攻击者依照AES-128加密算法的工作原理,采用差分分析技术恢复得到K10的4个字节的信息;
3)采用与步骤2)相同的操作,对K9的前三列中剩余两列分别进行随机故障诱导,共恢复得到K10的12个字节的信息;
4)对K9的最后一列字节的信息进行暴力攻击,获取K10的剩余4个字节的信息;
5)攻击者根据AES-128密钥扩展算法的工作原理以及恢复得到的K10,逆向计算得到初始密钥。
所述的步骤2)中当随机故障诱导操作选择的是K9的第一列W[36]时,对W[36]的所有字节进行随机故障诱导,获得包含多个字节的随机故障的有效错误密文F,并以此恢复得到K10中的4个字节的具体过程为:
a-1、分别向W[36]的每个字节中引入8比特的随机故障,得到包含随机故障的第九轮子密钥,记为
a-2、根据
Figure BDA0000102022410000042
以及AES-128密钥扩展算法的工作原理,获得包含随机故障的第十轮子密钥
Figure BDA0000102022410000043
然后分别构建两个4×4的二维数组,分别记为A和B,将A中的元素记为Ai A i = K i 9 ⊕ K ~ i 9 , 将B中的元素记为Bi B i = K i 10 ⊕ K ~ i 10 ; 根据AES-128密钥扩展算法的工作原理,确定B与A之间存在线性关系,表示为: B = A × 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 , 其中,i=0,1,2,…,14,15,Ki 9表示K9中的第i个字节,表示
Figure BDA0000102022410000048
中的第i个字节,Ki 10表示K10中的第i个字节,
Figure BDA0000102022410000049
表示
Figure BDA00001020224100000410
中的第i个字节;
a-3、根据AES-128密钥扩展算法的工作原理及B与A之间的线性关系,确定
Figure BDA00001020224100000411
的所有字节中均被引入8比特的随机故障,且
Figure BDA00001020224100000412
的每一行中的每个字节包含的随机故障相同,且的任意一行的每个字节包含的8比特的随机故障与W[36]相同行内字节中包含的随机故障相同,
Figure BDA00001020224100000414
通过最后一轮加密算法的子密钥加操作后造成输出的密文中的所有字节出现故障;
a-4、根据AES-128加密算法的工作原理,确定AES-128加密算法中经第九轮加密后的加密结果中的第一列的所有字节中均被引入8比特的随机故障,将包含随机故障的第九轮加密结果记为其中,
Figure BDA00001020224100000416
对应字节包含的随机故障相同;
a-5、
Figure BDA00001020224100000418
依次完成AES-128加密算法中第十轮加密的字节代换操作、行变换操作和子密钥加操作,造成输出的密文中的4个字节出现故障;然后结合所造成的输出的密文中的所有字节出现故障,最终得到一个16个字节均包含随机故障的有效错误密文,记为F, F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 , 其中,式
Figure BDA0000102022410000052
表示随机故障经AES-128加密算法传递,式
Figure BDA0000102022410000053
表示随机故障经AES-128密钥扩展算法传递;
a-6、对 C = SR ( SB ( S ⊕ K 9 ) ) ⊕ K 10 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 分别进行逆操作,并根据AES-128加密算法中经第九轮列混淆操作后的状态S不受多字节故障诱导影响的特点,得到 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 ; 然后向 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 中引入A和B,得到 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 , 其中,InvSB表示AES-128加密算法中第十轮加密的字节代换操作的逆操作,InvSR表示AES-128加密算法中第十轮加密的行变换操作的逆操作;
a-7、将 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 以字节形式表示为 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 , 其中,j=0,1,2,…,14,15;
a-8、根据AES-128加密算法中第十轮加密的行变换操作的逆操作InvSR的工作特点,确定当i=0,4,8,12时j=i,当i=1,5,9,13时j=(i+4)%16,当i=2,6,10,14时j=(i+8)%16,当i=3,7,11,15时j=(i+12)%16,其中,“%”为求余数符号;然后根据i和j的对应关系消除 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 中的InvSR,得到 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 ;
a-9、根据
Figure BDA00001020224100000513
造成的输出的密文中的所有字节出现故障和
Figure BDA00001020224100000514
造成的输出的密文中的4个字节出现故障,确定经上述两个随机故障传递过程影响的字节在有效错误密文中存在一个交集,将交集中包含随机故障的第1字节作为当前字节,记为Cs,s∈{0,7,10,13};
a-10、根据当前字节Cs在有效错误密文F中的位置s和 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 , 确定A中与Cs对应的字节的位置x,当s=0时x=s,当s=13时x=(s+4)%16,当s=10时x=(s+8)%16,当s=7时x=(s+12)%16;再在空间大小为28的搜索空间内对Ks 10进行穷尽搜索,得到Ks 10的一组解;
a-11、将交集中包含随机故障的下一个字节作为当前字节,返回步骤a-10继续执行,直至交集中包含随机故障的所有字节全部处理完毕,最终得到K10中的第0个字节K0 10、第7个字节K7 10、第10个字节K10 10和第13个字节K13 10的一组解;
a-12、再次向K9的W[36]的所有字节中引入随机故障,并采用与步骤a-2至步骤a-11相同的操作,得到K10的第0个字节K0 10、第7个字节K7 10、第10个字节K10 10和第13个字节K13 10的另一组解;
a-13、将由步骤a-11与步骤a-12得到的两组关于K0 10、K7 10、K10 10、K13 104个字节的解中的相同值作为各自字节的正确值;
当随机故障诱导操作选择的是K9的第二列W[37]时,对W[37]的所有字节进行随机故障诱导,获得包含多个字节的随机故障的有效错误密文F,并以此恢复得到K10中的4个字节的具体过程为:
b-1、分别向W[37]的每个字节中引入8比特的随机故障,得到包含随机故障的第九轮子密钥,记为
Figure BDA0000102022410000062
b-2、根据
Figure BDA0000102022410000063
以及AES-128密钥扩展算法的工作原理,获得包含随机故障的第十轮子密钥
Figure BDA0000102022410000064
然后分别构建两个4×4的二维数组,分别记为A和B,将A中的元素记为Ai A i = K i 9 ⊕ K ~ 9 , 将B中的元素记为Bi B i = K i 10 ⊕ K ~ 10 ; 根据AES-128密钥扩展算法的工作原理,确定B与A之间存在线性关系,表示为: B = A × 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 , 其中,i=0,1,2,…,14,15,Ki 9表示K9中的第i个字节,
Figure BDA0000102022410000071
表示
Figure BDA0000102022410000072
中的第i个字节,Ki 10表示K10中的第i个字节,表示
Figure BDA0000102022410000074
中的第i个字节;
b-3、根据AES-128密钥扩展算法的工作原理及B与A之间的线性关系,确定
Figure BDA0000102022410000075
的所有字节中均被引入8比特的随机故障,且
Figure BDA0000102022410000076
的每一行中的第二列至第四列中的字节包含的随机故障相同,且
Figure BDA0000102022410000077
的任意一行的第二列至第四列中的每个字节中包含的8比特的随机故障与W[37]中相同行内字节中包含的8比特的随机故障相同,
Figure BDA0000102022410000078
通过最后一轮加密算法的子密钥加操作后造成输出的密文的第二列至第四列中的所有字节出现故障;
b-4、根据AES-128加密算法的工作原理,确定AES-128加密算法中经第九轮加密后的加密结果中的第二列的所有字节均被引入了8比特的随机故障,将包含随机故障的第九轮加密结果记为
Figure BDA0000102022410000079
其中,
Figure BDA00001020224100000710
Figure BDA00001020224100000711
对应字节包含的随机故障相同;
b-5、依次完成AES-128加密算法中第十轮加密的字节代换操作、行变换操作和子密钥加操作,造成输出的密文中的4个字节出现故障;然后结合
Figure BDA00001020224100000713
所造成的输出的密文的第二列至第四列中的所有字节出现故障,最终得到一个13个字节包含随机故障的有效错误密文,记为F,且 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 , 其中,式表示随机故障经AES-128加密算法传递,式
Figure BDA00001020224100000716
表示随机故障经AES-128密钥扩展算法传递;
b-6、对 C = SR ( SB ( S ⊕ K 9 ) ) ⊕ K 10 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 分别进行逆操作,并根据AES-128加密算法中经第九轮列混淆操作后的状态S不受多字节故障诱导影响的特点,得到 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 ; 然后向 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 中引入A和B,得到 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 , 其中,InvSB表示AES-128加密算法中第十轮加密的字节代换操作的逆操作,InvSR表示AES-128加密算法中第十轮加密的行变换操作的逆操作;
b-7、将 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 以字节形式表示为 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 , 其中,j=0,1,2,…,14,15;
b-8、根据AES-128加密算法中第十轮加密的行变换操作的逆操作InvSR的工作特点,确定当i=0,4,8,12时j=i,当i=1,5,9,13时j=(i+4)%16,当i=2,6,10,14时j=(i+8)%16,当i=3,7,11,15时j=(i+12)%16,其中,“%”为求余数符号;然后根据i和j的对应关系消除 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 中的InvSR,得到 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 ;
b-9、根据
Figure BDA0000102022410000085
造成的输出的密文的第二列至第四列中的所有字节出现故障和
Figure BDA0000102022410000086
造成的输出的密文中的4个字节出现故障,确定经上述两个随机故障传递过程影响的字节在有铲错误密文中存在一个交集,将交集中包含随机故障的第1个字节作为当前字节,记为Cs,s∈{1,4,11,14};
b-10、根据当前字节Cs在有效错误密文F中的位置s和 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 , 确定与Cs对应的字节的位置x,当s=4时x=s,当s=1时x=(s+4)%16,当s=14时x=(s+8)%16,当s=11时x=(s+12)%16;再在空间大小为28的搜索空间内对Ks 10进行穷尽搜索,得到Ks 10的一组解;
b-11、将交集中包含随机故障的下一个字节作为当前字节,返回步骤b-10继续执行,直至交集中包含随机故障的所有字节全部处理完毕,最终得到K10中的第1个字节K1 10、第4个字节K4 10、第11个字节K11 10和第14个字节K14 10的一组解;
b-12、再次向K9的W[37]的所有字节中引入随机故障,并采用与步骤b-2至步骤b-11相同的操作,得到K10的第1个字节K1 10、第4个字节K4 10、第11个字节K11 10和第14个字节K14 10的另一组解;
b-13、将由步骤b-11与步骤b-12得到的两组关于K1 10、K4 10、K11 10、K14 104个字节的解中相同值作为各自字节的正确值;
当随机故障诱导操作选择的是K9的第三列W[38]时,对W[38]的所有字节进行随机故障诱导,获得包含多个字节的随机故障的有效错误密文F,并以此恢复得到K10中的4个字节的具体过程为:
c-1、分别向W[38]的每个字节中引入8比特的随机故障,得到包含随机故障的第九轮子密钥,记为
Figure BDA0000102022410000091
c-2、根据
Figure BDA0000102022410000092
以及AES-128密钥扩展算法的工作原理,获得包含随机故障的第十轮子密钥
Figure BDA0000102022410000093
然后分别构建两个4×4的二维数组,分别记为A和B,将A中的元素记为Ai A i = K i 9 ⊕ K ~ 9 , 将B中的元素记为Bi B i = K i 10 ⊕ K ~ 10 ; 根据AES-128密钥扩展算法的工作原理,确定B与A之间存在线性关系,表示为: B = A × 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 , 其中,i=0,1,2,…,14,15,Ki 9表示K9中的第i个字节,
Figure BDA0000102022410000097
表示
Figure BDA0000102022410000098
中的第i个字节,Ki 10表示K10中的第i个字节,
Figure BDA0000102022410000099
表示
Figure BDA00001020224100000910
中的第i个字节;
c-3、根据AES-128密钥扩展算法的工作原理及B与A之间的线性关系,确定
Figure BDA00001020224100000911
的的第三列至第四列中的所有字节中均被引入8比特的随机故障,且K10的每一行中的第三列至第四列中的字节包含的随机故障相同,且
Figure BDA00001020224100000912
的任意一行的第三列至第四列中的每个字节中包含的8比特的随机故障与W[38]相同行内字节中包含的8比特的随机故障信息相同,通过最后一轮加密算法的子密钥加操作后造成输出的密文的第三列至第四列中的所有字节出现故障;
c-4、根据AES-128加密算法的工作原理,确定AES-128加密算法中经第九轮加密后的加密结果中的第三列的所有字节均被引入了8比特的随机故障,将包含随机故障的第九轮加密结果记为
Figure BDA00001020224100000914
其中,
Figure BDA00001020224100000915
Figure BDA00001020224100000916
对应字节包含的随机故障相同;
c-5、
Figure BDA0000102022410000101
依次完成AES-128加密算法中第十轮加密的字节代换操作、行变换操作和子密钥加操作,造成输出的密文中的4个字节出现故障;然后结合
Figure BDA0000102022410000102
所造成的输出的密文的第三列至第四列中的所有字节出现故障,最终得到一个10个字节包含随机故障的有效错误密文,记为F,且 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 , 其中,式
Figure BDA0000102022410000104
表示随机故障经AES-128加密算法传递,式表示随机故障经AES-128密钥扩展算法传递;
c-6、对 C = SR ( SB ( S ⊕ K 9 ) ) ⊕ K 10 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 分别进行逆操作,并根据AES-128加密算法中经第九轮列混淆操作后的状态S不受多字节故障诱导影响的特点,得到 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 ; 然后向 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 中引入A和B,得到 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 , 其中,InvSB表示AES-128加密算法中第十轮加密的字节代换操作的逆操作,InvSR表示AES-128加密算法中第十轮加密的行变换操作的逆操作;
c-7、将 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 以字节形式表示为 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 , 其中,j=0,1,2,…,14,15;
c-8、根据AES-128加密算法中第十轮加密的行变换操作的逆操作InvSR的工作特点,确定当i=0,4,8,12时j=i,当i=1,5,9,13时j=(i+4)%16,当i=2,6,10,14时j=(i+8)%16,当i=3,7,11,15时j=(i+12)%16,其中,“%”为求余数符号;然后根据i和j的对应关系消除 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 中的InvSR,得到 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 ;
c-9、根据
Figure BDA00001020224100001015
造成的输出的密文的第三列至第四列中的所有字节出现故障和
Figure BDA00001020224100001016
造成的输出的密文中的4个字节出现故障,确定经上述两个随机故障传递过程影响的字节在有效错误密文中存在一个交集,将交集中包含随机故障的第1个字节作为当前字节,记为Cs,s∈{2,5,8,15};
c-10、根据当前字节Cs在有效错误密文F中的位置s和 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 , 确定与Cs对应的字节的位置x,当s=8时x=s,当s=5时x=(s+4)%16,当s=2时x=(s+8)%16,当s=15时x=(s+12)%16;再在空间大小为28的搜索空间内对Ks 10进行穷尽搜索,得到Ks 10的一组解;
c-11、将交集中包含随机故障的下一个字节作为当前字节,返回步骤c-10继续执行,直至交集中包含随机故障的所有字节全部处理完毕,最终得到K10中的第2个字节K2 10、第5个字节K5 10、第8个字节K8 10和第15个字节K15 10的一组解;
c-12、再次向K9的W[38]的所有字节中引入随机故障,并采用与步骤c-2至c-11相同的操作,得到K10的第2个字节K2 10、第5个字节K5 10、第8个字节K8 10和第15个字节K15 10的另一组解;
c-13、将由步骤c-11与步骤c-12得到的两组关于K2 10、K5 10、K8 10、K15 104个字节的解中相同值作为各自字节的正确值。
与现有技术相比,本发明的优点在于:
1、节约了获得有效错误密文的时间:本发明方法通过对比正确密文和错误密文,不仅可以确定被引入故障的位置,而且能直接获得引入的故障值;然而在相同环境下,传统的差分故障攻击需要进行一系列的计算才能确定引入的故障信息,因此本发明方法可以快速甄别有效错误密文,节约了时间。
2、克服了故障诱导的限制:传统的差分故障攻击要求首先攻击第九轮密钥中的第四列信息,获得特定数据时,然后才可以进行下一次攻击,然而本发明方法攻击第九轮子密钥的任何一列都不会影响彼此的操作结果,因此可以同时使用多台设备对密码系统进行差分故障攻击,快速获得初始密钥,从而节省更多的时间。
附图说明
图1为AES-128加密算法的流程示意图;
图2为AES-128加密算法的部分流程示意图;
图3为向K9的W[36]的每个字节中引入随机故障后,随机故障的传递流程示意图;
图4为向K9的W[37]的每个字节中引入随机故障后,随机故障的传递流程示意图;
图5为向K9的W[38]的每个字节中引入随机故障后,随机故障的传递流程示意图。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述。
本实施例提出的一种针对AES-128算法的新型故障攻击方法,其主要包括以下步骤:
1)攻击者随机选择一个明文,获取该明文在初始密钥作用下的正确密文,将该正确密文记为C,如图2所示, C = SR ( SB ( S ⊕ K 9 ) ) ⊕ K 10 , 其中,S表示AES-128加密算法中经第九轮列混淆操作后的状态,K9表示AES-128加密算法中的第九轮密钥加操作所需的子密钥,K9包含W[36]、W[37]、W[38]和W[39]四列16个字节的信息,W[36]列包含K9中的第0个字节的信息K0 9、第1个字节的信息K1 9、第2个字节的信息K2 9和第3个字节的信息K3 9,W[37]列包含K9中的第4个字节的信息K4 9、第5个字节的信息K5 9、第6个字节的信息K6 9和第7个字节的信息K7 9,W[38]列包含K9中的第8个字节的信息K8 9、第9个字节的信息K9 9、第10个字节的信息K10 9和第11个字节的信息K11 9,W[39]列包含K9中的第12个字节的信息K12 9、第13个字节的信息K13 9、第14个字节的信息K14 9和第15个字节的信息K15 9,SB表示AES-128加密算法中第十轮加密的字节代换操作,SR表示AES-128加密算法中第十轮加密的行变换操作,K10表示AES-128加密算法中第十轮子密钥加操作所需的密钥,
Figure BDA0000102022410000122
为异或操作符号,M9表示经AES-128第九轮加密算法操作后的状态,即 M 9 = S ⊕ K 9 .
2)攻击者对步骤1)中随机选择的明文再次进行加密操作,在加密操作过程中对储存在静态存储器中的K9进行多字节随机故障诱导,每次故障诱导操作为选择K9前三列中的任意一列进行攻击,进而获得内部包含多个字节随机故障的错误密文,记为F, F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 ,
Figure BDA0000102022410000132
表示包含随机故障的第九轮子密钥,
Figure BDA0000102022410000133
表示包含随机故障的第十轮子密钥;然后,攻击者依照AES-128加密算法的工作原理,采用差分分析技术恢复得到K10的4个字节的信息。在此,引入的随机故障通过两条路径影响输出的密文,其中一条路径是经AES-128密钥扩展算法仅传递到第十轮的子密钥中,而不影响第九轮子密钥里随机故障引入列之外的信息,最终造成密文里多个字节错误输出;另一条路径是经第九轮的子密钥加操作传递给第九轮的加密结果,携带随机故障的第九轮加密结果经第十轮加密算法里三种操作造成密文里4个字节错误输出。
在此具体实施例中,当故障诱导操作选择的是K9内第一列W[36]时,获得一个包含多个故障字节的有效错误密文F,并以此恢复得到K10内4个字节信息的具体过程为:
a-1、分别向W[36]的每个字节引入8比特的随机故障,即分别向K0 9、K1 9、K2 9和K3 9中引入8比特的随机故障,引入的随机故障依次记为f0、f1、f2和f3,如图3所示,得到包含随机故障的第九轮子密钥,记为
Figure BDA0000102022410000134
a-2、根据
Figure BDA0000102022410000135
以及AES-128密钥扩展算法的工作原理,获得包含随机故障的第十轮子密钥然后分别构建两个4×4的二维数组,记为A和B,将A中的元素记为Ai A i = K i 9 ⊕ K ~ 9 , 将B中的元素记为Bi B i = K i 10 ⊕ K ~ 10 . 根据AES-128密钥扩展算法的工作原理,B与A之间存在一定的线性关系为: B = A × 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 , 其中,i=0,1,2,…,14,15,Ki 9表示K9中的第i个字节的信息,
Figure BDA00001020224100001310
表示
Figure BDA00001020224100001311
中的第i个字节的信息,Ki 10表示K10中的第i个字节的信息,
Figure BDA00001020224100001312
表示中的第i个字节的信息。
a-3、根据AES-128密钥扩展算法的工作原理及B与A之间的线性关系,确定的所有字节信息均被引入8比特的随机故障,如图3所示,且每一行每个字节包含的故障相同,且
Figure BDA00001020224100001315
任意一行包含的8比特的随机故障与W[36]相同行内字节中包含的随机故障信息相同,
Figure BDA00001020224100001316
通过最后一轮加密算法的子密钥加操作后造成输出的密文中的所有字节出现故障。
a-4、根据AES-128加密算法的工作原理,第九轮加密结果内第一列的四个字节均被引入了8比特的随机故障,将包含随机故障的第九轮加密结果记为其中
Figure BDA0000102022410000142
对应字节包含的随机故障相同。
a-5、
Figure BDA0000102022410000144
依次完成加密算法中字节代换操作、行变换操作和子密钥加操作,造成密文里四个字节出现故障;另外,包含故障的第十轮子密钥造成密文的所有字节出现故障,最终得到一个全部16字节均包含故障的有效错误密文,记为F, F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 , 表示多字节随机故障经AES-128加密算法传递,式
Figure BDA0000102022410000147
表示多字节随机故障经AES-128密钥扩展算法传递。
a-6、对 C = SR ( SB ( S ⊕ K 9 ) ) ⊕ K 10 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 分别进行逆操作,并根据AES-128加密算法中经第九轮列混淆操作后的状态S不受多字节故障诱导影响的特点,得到 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 ; 然后向 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 中引入数组A和数组B,得到 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 , 其中,InvSB表示AES-128算法字节代换操作的逆操作,InvSR表示AES-128算法行变换操作的逆操作。
a-7、将 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 以字节形式表示为 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 , 其中,j=0,1,2,…,14,15。
a-8、根据AES-128加密算法行变换操作的逆操作InvSR的工作特点,确定当i=0,4,8,12时j=i,当i=1,5,9,13时j=(i+4)%16,当i=2,6,10,14时j=(i+8)%16,当i=3,7,11,15时j=(i+12)%16,其中,“%”为求余数符号;然后根据i和j的对应关系消除 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 中的InvSR,得到 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 .
a-9、由a-3可知,被引入的四字节随机故障,经AES-128密钥扩展算法过程造成密文里全部字节产生故障,经AES-128加密算法过程造成密文的四个字节产生故障,因而经上述两个故障传递过程影响的字节在错误密文中存在一个交集,如图3中所示的
Figure BDA0000102022410000151
将交集中包含随机故障的第1字节作为当前字节,记为Cs,s∈{0,7,10,13}。
a-10、首先根据当前字节Cs在有效错误密文F中的位置s和 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 , 可确定数组A中的对应字节位置x,即 InvSB ( K s 10 ⊕ C s ) ⊕ A x ⊕ InvSB ( K s 10 ⊕ B s ⊕ F s ) = 0 ; 然后在空间大小为28的搜索空间内对Ks 10进行穷尽搜索,得到Ks 10的一组解,其中,当s=0时x=s,当s=13时x=(s+4)%16,当s=10时x=(s+8)%16,当s=7时x=(s+12)%16。
a-11、将交集中包含随机故障的下一个字节作为当前字节,返回步骤a-10继续执行,直至交集中包含随机故障的所有字节全部处理完毕,进而得到关于K10中第0个字节的信息K0 10、第7个字节的信息K7 10、第10个字节的信息K10 10和第13个字节的信息K13 10的一组解。
a-12、再次向K9中的W[36]的四个字节的信息中引入随机故障,并采用与步骤a-2至a-11相同的操作,得到关于K10的第0个字节的信息K0 10、第7个字节的信息K3 10、第10个字节的信息K10 10和第13个字节的信息K13 10的另一组解。
a-13、将由步骤a-11与步骤a-12得到的两组关于K0 10、K7 10、K10 10、K13 10四个字节的解中相同值作为各自字节的正确值。
在此具体实施例中,当故障诱导操作选择的是K9内第二列W[37]时,获得一个包含多个故障字节的有效错误密文F,并以此恢复得到K10内4个字节信息的具体过程为:
b-1、分别向W[37]的每个字节引入8比特的随机故障,即分别向K4 9、K5 9、K6 9和K7 9中引入8比特的随机故障,引入的随机故障依次记为f0、f1、f2和f3,如图4所示,得到包含随机故障的第九轮子密钥,记为
Figure BDA0000102022410000154
b-2、根据
Figure BDA0000102022410000161
以及AES-128密钥扩展算法的工作原理,获得包含随机故障的第十轮子密钥
Figure BDA0000102022410000162
然后分别构建两个4×4的二维数组,记为A和B,将A中的元素记为Ai A i = K i 9 ⊕ K ~ 9 , 将B中的元素记为Bi B i = K i 10 ⊕ K ~ 10 . 根据AES-128密钥扩展算法的工作原理,B与A之间存在一定的线性关系为: B = A × 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 , 其中,i=0,1,2,…,14,15,Ki 9表示K9中的第i个字节的信息,
Figure BDA0000102022410000166
表示
Figure BDA0000102022410000167
中的第i个字节的信息,Ki 10表示K10中的第i个字节的信息,
Figure BDA0000102022410000168
表示中的第i个字节的信息。
b-3、根据AES-128密钥扩展算法的工作原理及B与A之间的线性关系,确定
Figure BDA00001020224100001610
的第二列至第四列中所有字节信息均被引入8比特的随机故障,且每一行里后三列字节包含的故障相同。如图4所示,
Figure BDA00001020224100001611
任意一行的第二列至第四列中的每个字节的信息中包含的8比特的随机故障与W[37]相同行内字节中包含的8比特的随机故障相同,
Figure BDA00001020224100001612
通过最后一轮加密算法的子密钥加操作后造成输出的密文的第二列至第四列中的所有字节出现故障。
b-4、根据AES-128加密算法的工作原理,第九轮加密结果内第二列的四个字节均被引入了8比特的随机故障,如图4所示,将包含随机故障的第九轮加密结果记为
Figure BDA00001020224100001613
其中
Figure BDA00001020224100001614
Figure BDA00001020224100001615
对应字节包含的随机故障相同。
b-5、如图4所示,依次完成加密算法中字节代换操作、行变换操作和子密钥加操作,造成密文里四个字节出现故障;另外,包含故障的第十轮子密钥造成密文的后三列所有字节出现故障,最终得到一个内部13字节均包含故障的有效错误密文,记为F,且 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 , 其中式
Figure BDA00001020224100001618
表示多字节随机故障经AES-128加密算法传递,式
Figure BDA00001020224100001619
表示多字节随机故障经AES-128密钥扩展算法传递。
b-6、对 C = SR ( SB ( S ⊕ K 9 ) ) ⊕ K 10 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 分别进行逆操作,并根据AES-128加密算法中经第九轮列混淆操作后的状态S不受多字节故障诱导影响的特点,得到 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 ; 然后向 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 中引入数组A和数组B,得到 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 , 其中,InvSB表示AES-128算法字节代换操作的逆操作,InvSR表示AES-128算法行变换操作的逆操作。
b-7、将 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 以字节形式表示为 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 , 其中,j=0,1,2,…,14,15。
b-8、根据AES-128加密算法中第十轮加密的行变换操作的逆操作InvSR的特点,确定当i=0,4,8,12时j=i,当i=1,5,9,13时j=(i+4)%16,当i=2,6,10,14时j=(i+8)%16,当i=3,7,11,15时j=(i+12)%16,其中,“%”为求余数符号;然后根据i和j的对应关系消除 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 中的InvSR,得到 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 .
b-9、由步骤b-3可知,被引入的四字节随机故障,经AES-128密钥扩展算法过程造成错误密文里全部字节产生故障,经AES-128加密算法过程造成错误密文的四个字节产生故障,因而上述两个故障传递过程影响的字节在错误密文中存在一个交集,如图4所示的
Figure BDA0000102022410000178
将交集中包含随机故障的第1个字节作为当前字节,记为Cs,s∈{1,4,11,14}。
b-10、根据当前字节Cs在有效错误密文F中的位置s和 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 , 确定数组A中的对应字节位置x,即 InvSB ( K s 10 ⊕ C s ) ⊕ A x ⊕ InvSB ( K s 10 ⊕ B s ⊕ F s ) = 0 ; 然后在空间大小为28的搜索空间内对Ks 10进行穷尽搜索,得到Ks 10的一组解,其中,当s=4时x=s,当s=1时x=(s+4)%16,当s=14时x=(s+8)%16,当s=11时x=(s+12)%16。
b-11、将交集中包含随机故障的下一个字节作为当前字节,返回步骤b-10继续执行,直至交集中包含随机故障的所有字节全部处理完毕,进而得到关于K10中第1个字节的信息K1 10、第4个字节的信息K4 10、第11个字节的信息K11 10和第14个字节的信息K14 10的一组解。
b-12、再次向K9中的W[37]的四个字节的信息中引入随机故障,并采用与步骤b-2至b-11相同的操作,得到关于K10的第1个字节的信息K1 10、第4个字节的信息K4 10、第11个字节的信息K11 10和第14个字节的信息K14 10的另一组解。
b-13、将由步骤b-11与步骤b-12得到的两组关于K1 10、K4 10、K11 10、K14 10四个字节的解中相同值作为各自字节的正确值。
在此具体实施例中,当故障诱导操作选择的是K9内第三列W[38]时,获得一个包含多个故障字节的有效错误密文F,并以此恢复得到K10内4个字节信息的具体过程为:
c-1、分别向W[38]的每个字节引入8比特的随机故障,即分别向K8 9、K9 9、K10 9和K11 9中引入8比特的随机故障,引入的随机故障依次记为f0、f1、f2和f3,如图5所示,得到包含随机故障的第九轮子密钥,记为
Figure BDA0000102022410000181
c-2、根据
Figure BDA0000102022410000182
以及AES-128密钥扩展算法的工作原理,获得包含随机故障的第十轮子密钥然后分别构建两个4×4的二维数组,记为A和B,将A中的元素记为Ai A i = K i 9 ⊕ K ~ 9 , 将B中的元素记为Bi B i = K i 10 ⊕ K ~ 10 . 根据AES-128密钥扩展算法的工作原理,B与A之间存在一定的线性关系为: B = A × 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 , 其中,i=0,1,2,…,14,15,Ki 9表示K9中的第i个字节的信息,
Figure BDA0000102022410000187
表示
Figure BDA0000102022410000188
中的第i个字节的信息,Ki 10表示K10中的第i个字节的信息,
Figure BDA0000102022410000189
表示
Figure BDA00001020224100001810
中的第i个字节的信息。
c-3、根据AES-128密钥扩展算法的工作原理及B与A之间的线性关系,确定
Figure BDA00001020224100001811
的第三列至第四列的每个字节的信息中均被引入8比特的随机故障,且每一行字节内包含的故障相同,且
Figure BDA00001020224100001812
任意一行包含的8比特的随机故障与W[38]相同行内字节包含的随机故障信息相同,
Figure BDA0000102022410000191
通过最后一轮加密算法的子密钥加操作后造成输出的密文的第三列至第四列中的所有字节出现故障,如图5所示。
c-4、根据AES-128加密算法的工作原理,第九轮加密结果内第三列的四个字节均被引入了8比特的随机故障,如图5所示,将包含随机故障的第九轮加密结果记为
Figure BDA0000102022410000192
其中
Figure BDA0000102022410000193
Figure BDA0000102022410000194
对应字节包含的随机故障相同。
c-5、如图5所示,依次完成字节代换操作、行变换操作和子密钥加操作,造成密文里四个字节出现故障;另外,包含故障的第十轮子密钥造成密文的后两列8个字节出现故障,最终得到一个内部10字节包含故障的有效错误密文,记为F,且 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 , 其中其中式
Figure BDA0000102022410000197
表示多字节随机故障经AES-128加密算法传递,式
Figure BDA0000102022410000198
表示多字节随机故障经AES-128密钥扩展算法传递。
c-6、对 C = SR ( SB ( S ⊕ K 9 ) ) ⊕ K 10 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 分别进行逆操作,并根据AES-128加密算法中经第九轮列混淆操作后的状态S不受多字节故障诱导影响的特点,得到 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 ; 然后向 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 中引入数组A和数组B,得到 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 , 其中,InvSB表示AES-128算法字节代换操作的逆操作,InvSR表示AES-128算法行变换操作的逆操作。
c-7、将 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 以字节形式表示为 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 , 其中,j=0,1,2,…,14,15。
c-8、根据AES-128加密算法行变换操作的逆操作InvSR的工作特点,确定当i=0,4,8,12时j=i,当i=1,5,9,13时j=(i+4)%16,当i=2,6,10,14时j=(i+8)%16,当i=3,7,11,15时j=(i+12)%16,其中,“%”为求余数符号;然后根据i和j的对应关系消除 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 中的InvSR,得到 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 .
c-9、由a-3可知,被引入的四字节随机故障,经AES-128密钥扩展算法过程造成密文里8个字节产生故障;经AES-128加密算法过程造成密文的四个字节产生故障,因而经上述两个故障传递过程影响的字节在错误密文中存在一个交集如图5中所示的
Figure BDA0000102022410000202
将交集中包含随机故障的第1个字节作为当前字节,记为Cs,s∈{2,5,8,15}。
c-10、根据当前字节Cs在有效错误密文F中的位置s和 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 可确定数组A中的对应字节位置x,即 InvSB ( K s 10 ⊕ C s ) ⊕ A x ⊕ InvSB ( K s 10 ⊕ B s ⊕ F s ) = 0 ; 然后在空间大小为28的搜索空间内对Ks 10进行穷尽搜索,得到Ks 10的一组解,其中,当s=8时x=s,当s=5时x=(s+4)%16,当s=2时x=(s+8)%16,当s=15时x=(s+12)%16。
c-11、将交集中包含随机故障的下一个字节作为当前字节,返回步骤c-10继续执行,直至交集中包含随机故障的所有字节全部处理完毕,进而得到关于K10中第2个字节的信息K2 10、第5个字节的信息K5 10、第8个字节的信息K8 10和第15个字节的信息K15 10的一组解。
c-12、再次向K9中的W[38]的四个字节的信息中引入随机故障,并采用与步骤c-2至c-11相同的操作,得到关于K10的第2个字节的信息K2 10、第5个字节的信息K5 10、第8个字节的信息Ks 10和第15个字节的信息K15 10的另一组解。
c-13、将由步骤c-11与步骤c-12得到的两组关于K2 10、K5 10、K8 10、K15 10四个字节的解中相同值作为各自字节的正确值。
3)采用与步骤2)相同的操作,对K9的前三列中剩余两列分别进行多字节随机故障诱导,一共可恢复得到K10内12个字节的信息。
4)对K9中的最后一列字节的信息进行暴力攻击,获取K10的剩余4个字节的信息。在此,暴力攻击是一种穷举字符串的所有可能的策略。
5)攻击者根据AES-128密钥扩展算法的工作原理以及恢复得到的K10,逆向计算得到初始密钥。
以下为对本发明方法进行模拟实验,以客观地说明本发明方法的有效性和可行性。
在Windows工作环境下,使用Intel Pentium(R)Dual-Core CPU 2.70GHZ、2G RAM计算机进行试验,其中通过多字节随机故障诱导得到错误密文的过程是利用MATLAB工具模拟的。试验采用的128位初始密钥为00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e0f,明文选取为32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34。
使用随机生成数组函数,产生四组8比特的随机数。将该四组随机数作为具体实施方案中向第九轮子密钥加操作所需密钥K9内任意一列中引入的随机故障,实验表明只需进行6次故障诱导操作,即可获得AES-128第十轮子密钥加操作所需的密钥K10内12个字节的信息;若结合暴力攻击,即对K9的W[39]四字节信息采用暴力攻击,实验表明在不超过12分钟的时间里,就能够唯一确定AES-128第十轮子密钥加操作所需的子密钥K10,进而确定初始密钥。
表1列出了本发明方法的一组试验结果。
表1本发明方法的一组试验结果
  初始明文   32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34
  正确密文   89 05 81 e2 ed ca 35 1c 5e 76 08 40 6a 33 5f bd
  错误密文1   0f 77 f3 90 8c ab 54 2c 64 4c 60 7a 69 12 5c be
  错误密文2   22 6c e8 8b d4 f3 0c 2f 11 39 c8 0f 0f 5c 3a d8
  错误密文3   89 79 f7 94 3a 94 6b 42 5e 61 1f e1 6a 07 67 89
  错误密文4   89 87 f6 95 a6 bf 40 69 5e 43 3d dc 6a 41 86 cf
  错误密文5   89 05 bc ea ed 73 18 31 e3 76 60 28 6a 33 5d e9
  错误密文6   89 05 1f f0 ed 83 2f 06 ee 76 12 5a 6a 33 12 ec
  恢复的K10   54 99 32 d1 f0 85 57 68 10 93 ed 9c be 2c 97 4e
  恢复的初始密钥   00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
表2给出了在采用暴力攻击的条件下采用不同的差分故障攻击方法获得初始密钥所需的故障诱导次数,从表2中可以看出,在采用暴力攻击的条件下本发明方法所需的故障诱导次数最少,而方法一(C.-N Chen,S.-M Yen.Differential Fault Analysis on AES KeySchedule and Some Countermeasures[C].8th Australasian Conference on InformationSecurity and Privacy,Wollongong.Pages:118-129(2003)(基于AES密钥扩展算法的差分故障攻击及其防御))所需的故障诱导次数是本发明方法所需的故障诱导次数的17倍以上,方法二(Takahashi J,Fukunaga T,Yamakoshi K.DFA Mechanism on the AES KeySchedule.4th International Workshop on Fault Diagnosis and Tolerance in Cryptography,Vienna.Pages:62-72(2007).(基于AES密钥扩展算法的差分故障攻击))和方法三(刘上力、赵劲强、聂勤务,AES差分故障攻击的建模与分析,计算机工程)所需的故障诱导次数也远远多于本发明方法所需的故障诱导次数,足以说明本发明方法是有效可行的。
表2不同的差分故障攻击方法所需的故障诱导次数比较
  差分故障攻击方法   本发明方法   方法一   方法二   方法三
  故障诱导次数(组)   6   104   30   22~44

Claims (2)

1.一种针对AES-128算法的新型故障攻击方法,其特征在于包括以下步骤:
1)攻击者随机选择一个明文,获取该明文在初始密钥作用下的正确密文,将该正确密文记为C, C = SR ( SB ( S ⊕ K 9 ) ) ⊕ K 10 , 其中,S表示AES-128加密算法中经第九轮列混淆操作后的状态,K9表示AES-128加密算法中第九轮子密钥加操作所需的子密钥,K9包含W[36]、W[37]、W[38]和W[39]四列16个字节的信息,W[36]列包含K9中的第0个字节的信息K0 9、第1个字节的信息K1 9、第2个字节的信息K2 9和第3个字节的信息K3 9,W[37]列包含K9中的第4个字节的信息K4 9、第5个字节的信息K5 9、第6个字节的信息K6 9和第7个字节的信息K7 9,W[38]列包含K9中的第8个字节的信息K8 9、第9个字节的信息K9 9、第10个字节的信息K10 9和第11个字节的信息K11 9,W[39]列包含K9中的第12个字节的信息K12 9、第13个字节的信息K13 9、第14个字节的信息K14 9和第15个字节的信息K15 9,SB表示AES-128加密算法中第十轮加密的字节代换操作,SR表示AES-128加密算法中第十轮加密的行变换操作,K10表示AES-128加密算法中第十轮子密钥加操作所需的子密钥,
Figure FDA0000102022400000012
为异或操作符号;
2)攻击者对步骤1)中随机选择的明文进行加密操作,在加密操作过程中任选已正确生成且已储存在静态存储器中的K9的前三列中的一列,对所选列的所有字节进行随机故障诱导,每次随机故障诱导操作均获得一个包含多个字节的随机故障的有效错误密文,记为F, F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 ,
Figure FDA0000102022400000014
表示包含随机故障的第九轮子密钥,
Figure FDA0000102022400000015
表示包含随机故障的第十轮子密钥;然后,攻击者依照AES-128加密算法的工作原理,采用差分分析技术恢复得到K10的4个字节的信息;
3)采用与步骤2)相同的操作,对K9的前三列中剩余两列分别进行随机故障诱导,共恢复得到K10的12个字节的信息;
4)对K9的最后一列字节的信息进行暴力攻击,获取K10的剩余4个字节的信息;
5)攻击者根据AES-128密钥扩展算法的工作原理以及恢复得到的K10,逆向计算得到初始密钥。
2.根据权利要求1所述的一种针对AES-128算法的新型故障攻击方法,其特征在于所述的步骤2)中当随机故障诱导操作选择的是K9的第一列W[36]时,对W[36]的所有字节进行随机故障诱导,获得包含多个字节的随机故障的有效错误密文F,并以此恢复得到K10中的4个字节的具体过程为:
a-1、分别向W[36]的每个字节中引入8比特的随机故障,得到包含随机故障的第九轮子密钥,记为
Figure FDA0000102022400000021
a-2、根据
Figure FDA0000102022400000022
以及AES-128密钥扩展算法的工作原理,获得包含随机故障的第十轮子密钥
Figure FDA0000102022400000023
然后分别构建两个4×4的二维数组,分别记为A和B,将A中的元素记为Ai A i = K i 9 ⊕ K ~ i 9 , 将B中的元素记为Bi B i = K i 10 ⊕ K ~ i 10 ; 根据AES-128密钥扩展算法的工作原理,确定B与A之间存在线性关系,表示为: B = A × 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 , 其中,i=0,1,2,…,14,15,Ki 9表示K9中的第i个字节,
Figure FDA0000102022400000027
表示
Figure FDA0000102022400000028
中的第i个字节,Ki 10表示K10中的第i个字节,
Figure FDA0000102022400000029
表示中的第i个字节;
a-3、根据AES-128密钥扩展算法的工作原理及B与A之间的线性关系,确定
Figure FDA00001020224000000211
的所有字节中均被引入8比特的随机故障,且
Figure FDA00001020224000000212
的每一行中的每个字节包含的随机故障相同,且
Figure FDA00001020224000000213
的任意一行的每个字节包含的8比特的随机故障与W[36]相同行内字节中包含的随机故障相同,
Figure FDA00001020224000000214
通过最后一轮加密算法的子密钥加操作后造成输出的密文中的所有字节出现故障;
a-4、根据AES-128加密算法的工作原理,确定AES-128加密算法中经第九轮加密后的加密结果中的第一列的所有字节中均被引入8比特的随机故障,将包含随机故障的第九轮加密结果记为
Figure FDA00001020224000000215
其中,
Figure FDA00001020224000000216
Figure FDA00001020224000000217
对应字节包含的随机故障相同;
a-5、
Figure FDA0000102022400000031
依次完成AES-128加密算法中第十轮加密的字节代换操作、行变换操作和子密钥加操作,造成输出的密文中的4个字节出现故障;然后结合
Figure FDA0000102022400000032
所造成的输出的密文中的所有字节出现故障,最终得到一个16个字节均包含随机故障的有效错误密文,记为F, F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 , 其中,式
Figure FDA0000102022400000034
表示随机故障经AES-128加密算法传递,式
Figure FDA0000102022400000035
表示随机故障经AES-128密钥扩展算法传递;
a-6、对 C = SR ( SB ( S ⊕ K 9 ) ) ⊕ K 10 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 分别进行逆操作,并根据AES-128加密算法中经第九轮列混淆操作后的状态S不受多字节故障诱导影响的特点,得到 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 ; 然后向 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 中引入A和B,得到 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 , 其中,InvSB表示AES-128加密算法中第十轮加密的字节代换操作的逆操作,InvSR表示AES-128加密算法中第十轮加密的行变换操作的逆操作;
a-7、将 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 以字节形式表示为 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 , 其中,j=0,1,2,…,14,15;
a-8、根据AES-128加密算法中第十轮加密的行变换操作的逆操作InvSR的工作特点,确定当i=0,4,8,12时j=i,当i=1,5,9,13时j=(i+4)%16,当i=2,6,10,14时j=(i+8)%16,当i=3,7,11,15时j=(i+12)%16,其中,“%”为求余数符号;然后根据i和j的对应关系消除 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 中的InvSR,得到 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 ;
a-9、根据
Figure FDA00001020224000000315
造成的输出的密文中的所有字节出现故障和
Figure FDA00001020224000000316
造成的输出的密文中的4个字节出现故障,确定经上述两个随机故障传递过程影响的字节在有效错误密文中存在一个交集,将交集中包含随机故障的第1字节作为当前字节,记为Cs,s∈{0,7,10,13};
a-10、根据当前字节Cs在有效错误密文F中的位置s和 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 , 确定A中与Cs对应的字节的位置x,当s=0时x=s,当s=13时x=(s+4)%16,当s=10时x=(s+8)%16,当s=7时x=(s+12)%16;再在空间大小为28的搜索空间内对Ks 10进行穷尽搜索,得到Ks 10的一组解;
a-11、将交集中包含随机故障的下一个字节作为当前字节,返回步骤a-10继续执行,直至交集中包含随机故障的所有字节全部处理完毕,最终得到K10中的第0个字节K0 10、第7个字节K7 10、第10个字节K10 10和第13个字节K13 10的一组解;
a-12、再次向K9的W[36]的所有字节中引入随机故障,并采用与步骤a-2至步骤a-11相同的操作,得到K10的第0个字节K0 10、第7个字节K3 10、第10个字节K10 10和第13个字节K13 10的另一组解;
a-13、将由步骤a-11与步骤a-12得到的两组关于K0 10、K7 10、K10 10、K13 104个字节的解中的相同值作为各自字节的正确值;
当随机故障诱导操作选择的是K9的第二列W[37]时,对W[37]的所有字节进行随机故障诱导,获得包含多个字节的随机故障的有效错误密文F,并以此恢复得到K10中的4个字节的具体过程为:
b-1、分别向W[37]的每个字节中引入8比特的随机故障,得到包含随机故障的第九轮子密钥,记为
b-2、根据
Figure FDA0000102022400000043
以及AES-128密钥扩展算法的工作原理,获得包含随机故障的第十轮子密钥
Figure FDA0000102022400000044
然后分别构建两个4×4的二维数组,分别记为A和B,将A中的元素记为Ai A i = K i 9 ⊕ K ~ 9 , 将B中的元素记为Bi B i = K i 10 ⊕ K ~ 10 ; 根据AES-128密钥扩展算法的工作原理,确定B与A之间存在线性关系,表示为: B = A × 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 , 其中,i=0,1,2,…,14,15,Ki 9表示K9中的第i个字节,
Figure FDA0000102022400000052
表示中的第i个字节,Ki 10表示K10中的第i个字节,
Figure FDA0000102022400000054
表示
Figure FDA0000102022400000055
中的第i个字节;
b-3、根据AES-128密钥扩展算法的工作原理及B与A之间的线性关系,确定
Figure FDA0000102022400000056
的所有字节中均被引入8比特的随机故障,且
Figure FDA0000102022400000057
的每一行中的第二列至第四列中的字节包含的随机故障相同,且
Figure FDA0000102022400000058
的任意一行的第二列至第四列中的每个字节中包含的8比特的随机故障与W[37]中相同行内字节中包含的8比特的随机故障相同,
Figure FDA0000102022400000059
通过最后一轮加密算法的子密钥加操作后造成输出的密文的第二列至第四列中的所有字节出现故障;
b-4、根据AES-128加密算法的工作原理,确定AES-128加密算法中经第九轮加密后的加密结果中的第二列的所有字节均被引入了8比特的随机故障,将包含随机故障的第九轮加密结果记为
Figure FDA00001020224000000510
其中,
Figure FDA00001020224000000511
Figure FDA00001020224000000512
对应字节包含的随机故障相同;
b-5、
Figure FDA00001020224000000513
依次完成AES-128加密算法中第十轮加密的字节代换操作、行变换操作和子密钥加操作,造成输出的密文中的4个字节出现故障;然后结合所造成的输出的密文的第二列至第四列中的所有字节出现故障,最终得到一个13个字节包含随机故障的有效错误密文,记为F,且 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 , 其中,式
Figure FDA00001020224000000516
表示随机故障经AES-128加密算法传递,式表示随机故障经AES-128密钥扩展算法传递;
b-6、对 C = SR ( SB ( S ⊕ K 9 ) ) ⊕ K 10 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 分别进行逆操作,并根据AES-128加密算法中经第九轮列混淆操作后的状态S不受多字节故障诱导影响的特点,得到 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 ; 然后向 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 中引入A和B,得到 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 , 其中,InvSB表示AES-128加密算法中第十轮加密的字节代换操作的逆操作,InvSR表示AES-128加密算法中第十轮加密的行变换操作的逆操作;
b-7、将 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 以字节形式表示为 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 , 其中,j=0,1,2,…,14,15;
b-8、根据AES-128加密算法中第十轮加密的行变换操作的逆操作InvSR的工作特点,确定当i=0,4,8,12时j=i,当i=1,5,9,13时j=(i+4)%16,当i=2,6,10,14时j=(i+8)%16,当i=3,7,11,15时j=(i+12)%16,其中,“%”为求余数符号;然后根据i和j的对应关系消除 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 中的InvSR,得到 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 ;
b-9、根据
Figure FDA0000102022400000066
造成的输出的密文的第二列至第四列中的所有字节出现故障和
Figure FDA0000102022400000067
造成的输出的密文中的4个字节出现故障,确定经上述两个随机故障传递过程影响的字节在有铲错误密文中存在一个交集,将交集中包含随机故障的第1个字节作为当前字节,记为Cs,s∈{1,4,11,14};
b-10、根据当前字节Cs在有效错误密文F中的位置s和 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 , 确定与Cs对应的字节的位置x,当s=4时x=s,当s=1时x=(s+4)%16,当s=14时x=(s+8)%16,当s=11时x=(s+12)%16;再在空间大小为28的搜索空间内对Ks 10进行穷尽搜索,得到Ks 10的一组解;
b-11、将交集中包含随机故障的下一个字节作为当前字节,返回步骤b-10继续执行,直至交集中包含随机故障的所有字节全部处理完毕,最终得到K10中的第1个字节K1 10、第4个字节K4 10、第11个字节K11 10和第14个字节K14 10的一组解;
b-12、再次向K9的W[37]的所有字节中引入随机故障,并采用与步骤b-2至步骤b-11相同的操作,得到K10的第1个字节K1 10、第4个字节K4 10、第11个字节K11 10和第14个字节K14 10的另一组解;
b-13、将由步骤b-11与步骤b-12得到的两组关于K1 10、K4 10、K11 10、K14 104个字节的解中相同值作为各自字节的正确值;
当随机故障诱导操作选择的是K9的第三列W[38]时,对W[38]的所有字节进行随机故障诱导,获得包含多个字节的随机故障的有效错误密文F,并以此恢复得到K10中的4个字节的具体过程为:
c-1、分别向W[38]的每个字节中引入8比特的随机故障,得到包含随机故障的第九轮子密钥,记为
Figure FDA0000102022400000071
c-2、根据
Figure FDA0000102022400000072
以及AES-128密钥扩展算法的工作原理,获得包含随机故障的第十轮子密钥
Figure FDA0000102022400000073
然后分别构建两个4×4的二维数组,分别记为A和B,将A中的元素记为Ai A i = K i 9 ⊕ K ~ 9 , 将B中的元素记为Bi B i = K i 10 ⊕ K ~ 10 ; 根据AES-128密钥扩展算法的工作原理,确定B与A之间存在线性关系,表示为: B = A × 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 , 其中,i=0,1,2,…,14,15,Ki 9表示K9中的第i个字节,
Figure FDA0000102022400000077
表示
Figure FDA0000102022400000078
中的第i个字节,Ki 10表示K10中的第i个字节,
Figure FDA0000102022400000079
表示
Figure FDA00001020224000000710
中的第i个字节;
c-3、根据AES-128密钥扩展算法的工作原理及B与A之间的线性关系,确定
Figure FDA00001020224000000711
的的第三列至第四列中的所有字节中均被引入8比特的随机故障,且K10的每一行中的第三列至第四列中的字节包含的随机故障相同,且
Figure FDA00001020224000000712
的任意一行的第三列至第四列中的每个字节中包含的8比特的随机故障与W[38]相同行内字节中包含的8比特的随机故障信息相同,通过最后一轮加密算法的子密钥加操作后造成输出的密文的第三列至第四列中的所有字节出现故障;
c-4、根据AES-128加密算法的工作原理,确定AES-128加密算法中经第九轮加密后的加密结果中的第三列的所有字节均被引入了8比特的随机故障,将包含随机故障的第九轮加密结果记为
Figure FDA0000102022400000081
其中,
Figure FDA0000102022400000082
对应字节包含的随机故障相同;
c-5、
Figure FDA0000102022400000084
依次完成AES-128加密算法中第十轮加密的字节代换操作、行变换操作和子密钥加操作,造成输出的密文中的4个字节出现故障;然后结合
Figure FDA0000102022400000085
所造成的输出的密文的第三列至第四列中的所有字节出现故障,最终得到一个10个字节包含随机故障的有效错误密文,记为F,且 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 , 其中,式
Figure FDA0000102022400000087
表示随机故障经AES-128加密算法传递,式表示随机故障经AES-128密钥扩展算法传递;
c-6、对 C = SR ( SB ( S ⊕ K 9 ) ) ⊕ K 10 F = SR ( SB ( S ⊕ K ~ 9 ) ) ⊕ K ~ 10 分别进行逆操作,并根据AES-128加密算法中经第九轮列混淆操作后的状态S不受多字节故障诱导影响的特点,得到 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 ; 然后向 K 9 ⊕ InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ K ~ 9 ⊕ InvSB ( InvSR ( K ~ 10 ⊕ F ) ) = 0 中引入A和B,得到 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 , 其中,InvSB表示AES-128加密算法中第十轮加密的字节代换操作的逆操作,InvSR表示AES-128加密算法中第十轮加密的行变换操作的逆操作;
c-7、将 InvSB ( InvSR ( K 10 ⊕ C ) ) ⊕ A ⊕ InvSB ( InvSR ( K 10 ⊕ B ⊕ F ) ) = 0 以字节形式表示为 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 , 其中,j=0,1,2,…,14,15;
c-8、根据AES-128加密算法中第十轮加密的行变换操作的逆操作InvSR的工作特点,确定当i=0,4,8,12时j=i,当i=1,5,9,13时j=(i+4)%16,当i=2,6,10,14时j=(i+8)%16,当i=3,7,11,15时j=(i+12)%16,其中,“%”为求余数符号;然后根据i和j的对应关系消除 InvSB ( InvSR ( K i 10 ⊕ C i ) ) ⊕ A j ⊕ InvSB ( InvSR ( K i 10 ⊕ B i ⊕ F i ) ) = 0 中的InvSR,得到 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 ;
c-9、根据
Figure FDA0000102022400000091
造成的输出的密文的第三列至第四列中的所有字节出现故障和造成的输出的密文中的4个字节出现故障,确定经上述两个随机故障传递过程影响的字节在有效错误密文中存在一个交集,将交集中包含随机故障的第1个字节作为当前字节,记为Cs,s∈{2,5,8,15};
c-10、根据当前字节Cs在有效错误密文F中的位置s和 InvSB ( K i 10 ⊕ C i ) ⊕ A j ⊕ InvSB ( K i 10 ⊕ B i ⊕ F i ) = 0 , 确定与Cs对应的字节的位置x,当s=8时x=s,当s=5时x=(s+4)%16,当s=2时x=(s+8)%16,当s=15时x=(s+12)%16;再在空间大小为28的搜索空间内对Ks 10进行穷尽搜索,得到Ks 10的一组解;
c-11、将交集中包含随机故障的下一个字节作为当前字节,返回步骤c-10继续执行,直至交集中包含随机故障的所有字节全部处理完毕,最终得到K10中的第2个字节K2 10、第5个字节K5 10、第8个字节K8 10和第15个字节K15 10的一组解;
c-12、再次向K9的W[38]的所有字节中引入随机故障,并采用与步骤c-2至c-11相同的操作,得到K10的第2个字节K2 10、第5个字节K5 10、第8个字节K8 10和第15个字节K15 10的另一组解;
c-13、将由步骤c-11与步骤c-12得到的两组关于K2 10、K5 10、K8 10、K15 104个字节的解中相同值作为各自字节的正确值。
CN201110328333.3A 2011-10-25 2011-10-25 一种针对aes-128算法的新型故障攻击方法 Expired - Fee Related CN102404108B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110328333.3A CN102404108B (zh) 2011-10-25 2011-10-25 一种针对aes-128算法的新型故障攻击方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110328333.3A CN102404108B (zh) 2011-10-25 2011-10-25 一种针对aes-128算法的新型故障攻击方法

Publications (2)

Publication Number Publication Date
CN102404108A true CN102404108A (zh) 2012-04-04
CN102404108B CN102404108B (zh) 2014-07-09

Family

ID=45885929

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110328333.3A Expired - Fee Related CN102404108B (zh) 2011-10-25 2011-10-25 一种针对aes-128算法的新型故障攻击方法

Country Status (1)

Country Link
CN (1) CN102404108B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103001762A (zh) * 2012-11-25 2013-03-27 宁波大学 一种密码器件上防御零值功耗攻击的方法
CN104639310A (zh) * 2014-12-31 2015-05-20 东华大学 一种检测sha-1算法抵御差分故障攻击的方法
WO2016019670A1 (zh) * 2014-08-06 2016-02-11 国家电网公司 一种分组密码防攻击的加解密方法和装置
CN106161391A (zh) * 2015-04-17 2016-11-23 国民技术股份有限公司 一种安全芯片及其对错误注入攻击的防御方法和装置
CN108055120A (zh) * 2017-12-27 2018-05-18 东华大学 一种检测aes-otr算法抵御差分故障攻击的方法
CN110401627A (zh) * 2019-01-31 2019-11-01 中国科学院软件研究所 一种适用于分组密码算法感染防护的抗差分故障攻击安全性评估方法和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1753357A (zh) * 2005-08-18 2006-03-29 复旦大学 应用于des加密芯片的差分功耗分析屏蔽电路
US20080152144A1 (en) * 2006-12-22 2008-06-26 Atmel Corporation Key protection mechanism
CN102025505A (zh) * 2010-12-16 2011-04-20 浪潮(北京)电子信息产业有限公司 一种基于aes算法的加密、解密方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1753357A (zh) * 2005-08-18 2006-03-29 复旦大学 应用于des加密芯片的差分功耗分析屏蔽电路
US20080152144A1 (en) * 2006-12-22 2008-06-26 Atmel Corporation Key protection mechanism
CN102025505A (zh) * 2010-12-16 2011-04-20 浪潮(北京)电子信息产业有限公司 一种基于aes算法的加密、解密方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ALESSANDRO BARENGHI ETC.: "fault attack on AES with Single-Bit induced faults", 《IEEE》, 25 August 2010 (2010-08-25) *
刘上力等: "AES差分故障攻击的建模与分析", 《计算机工程》, vol. 36, no. 1, 31 January 2010 (2010-01-31) *
赵新杰等: "一种新的针对AES的访问驱动cache攻击", 《小型微型计算机系统》, vol. 30, no. 4, 30 April 2009 (2009-04-30) *
韩军等: "抗差分功耗分析和差分故障分析的AES算法VLSI设计与实现", 《通信学报》, vol. 31, no. 1, 31 January 2010 (2010-01-31) *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103001762A (zh) * 2012-11-25 2013-03-27 宁波大学 一种密码器件上防御零值功耗攻击的方法
CN103001762B (zh) * 2012-11-25 2015-08-19 宁波大学 一种密码器件上防御零值功耗攻击的方法
CN105376046B (zh) * 2014-08-06 2018-08-17 国家电网公司 一种分组密码防攻击的加解密方法和装置
WO2016019670A1 (zh) * 2014-08-06 2016-02-11 国家电网公司 一种分组密码防攻击的加解密方法和装置
CN105376046A (zh) * 2014-08-06 2016-03-02 国家电网公司 一种分组密码防攻击的加解密方法和装置
CN104639310B (zh) * 2014-12-31 2017-12-29 东华大学 一种检测sha‑1算法抵御差分故障攻击的方法
CN104639310A (zh) * 2014-12-31 2015-05-20 东华大学 一种检测sha-1算法抵御差分故障攻击的方法
CN106161391A (zh) * 2015-04-17 2016-11-23 国民技术股份有限公司 一种安全芯片及其对错误注入攻击的防御方法和装置
CN106161391B (zh) * 2015-04-17 2020-10-23 国民技术股份有限公司 一种安全芯片及其对错误注入攻击的防御方法和装置
CN108055120A (zh) * 2017-12-27 2018-05-18 东华大学 一种检测aes-otr算法抵御差分故障攻击的方法
CN108055120B (zh) * 2017-12-27 2021-07-09 东华大学 一种检测aes-otr算法抵御差分故障攻击的方法
CN110401627A (zh) * 2019-01-31 2019-11-01 中国科学院软件研究所 一种适用于分组密码算法感染防护的抗差分故障攻击安全性评估方法和系统
CN110401627B (zh) * 2019-01-31 2020-07-10 中国科学院软件研究所 一种适用于分组密码算法感染防护的抗差分故障攻击安全性评估方法和系统

Also Published As

Publication number Publication date
CN102404108B (zh) 2014-07-09

Similar Documents

Publication Publication Date Title
CN107070630B (zh) 一种aes算法的快速安全硬件结构
CN102404108B (zh) 一种针对aes-128算法的新型故障攻击方法
CN106663387B (zh) 加密函数和解密函数生成方法、加密和解密方法以及相关装置
CN101739695B (zh) 一种基于三维Arnold映射的图像分组加密方法
EP2316189B1 (en) Method for generating a cipher-based message authentication code
CN103444124B (zh) 加密处理装置、加密处理方法
CN104065474B (zh) 一种轻量级Surge分组密码实现方法
CN102904716A (zh) 一种抗侧信道攻击的对策方法
CN104734845A (zh) 基于全加密算法伪操作的旁路攻击防护方法
CN103051442A (zh) 采用Feistel-PG结构的密码装置及加密方法
CN103491279A (zh) 超混沌Lorenz系统的4-邻域异或图像加密方法
Dutertre et al. Fault round modification analysis of the advanced encryption standard
CN109450632A (zh) 基于白盒分组密码clefia分析的密钥恢复方法
CN112653546A (zh) 一种基于功耗分析的故障攻击检测方法
CN111224770B (zh) 一种基于门限技术的抗侧信道与故障攻击的综合防护方法
CN104158796A (zh) 分组密码抗线性攻击安全性的评估方法
Salam et al. Random differential fault attacks on the lightweight authenticated encryption stream cipher grain-128AEAD
CN105916141A (zh) 一种自同步的祖冲之加解密算法的实现系统及其方法
CN109218008A (zh) 一种针对sm4密钥扩展算法的模板攻击方法
AlTawy et al. Fault analysis of Kuznyechik
CN110299988A (zh) 轻量级分组密码算法抗攻击能力的检测方法及检测装置
CN104753668B (zh) 一种针对sm4密码线性变换输出的侧信道能量攻击方法
Zhao et al. Differential fault analysis on LED using Super‐Sbox
CN108449169A (zh) 一种用于无线传感器网路的混沌分组加密方法
CN108650072A (zh) 一种支持多种对称密码算法芯片及其抗攻击电路实现方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20210106

Address after: Room A507-1, Building 9, Jiuhuan Road, Jianggan District, Hangzhou City, Zhejiang 310000

Patentee after: HANGZHOU MAEN SCIENCE & TECHNOLOGY Co.,Ltd.

Address before: 315211, Fenghua Road, Jiangbei District, Zhejiang, Ningbo 818

Patentee before: Ningbo University

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140709

Termination date: 20211025

CF01 Termination of patent right due to non-payment of annual fee