CN102158338B - 一种针对Twofish加密芯片的DFA分析方法及系统 - Google Patents

一种针对Twofish加密芯片的DFA分析方法及系统 Download PDF

Info

Publication number
CN102158338B
CN102158338B CN201110137171.5A CN201110137171A CN102158338B CN 102158338 B CN102158338 B CN 102158338B CN 201110137171 A CN201110137171 A CN 201110137171A CN 102158338 B CN102158338 B CN 102158338B
Authority
CN
China
Prior art keywords
byte
aid
owk
cand
dfa
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.)
Expired - Fee Related
Application number
CN201110137171.5A
Other languages
English (en)
Other versions
CN102158338A (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.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
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 Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN201110137171.5A priority Critical patent/CN102158338B/zh
Publication of CN102158338A publication Critical patent/CN102158338A/zh
Application granted granted Critical
Publication of CN102158338B publication Critical patent/CN102158338B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明涉及密码芯片安全技术领域,尤其涉及一种Twofish加密硬件的DFA分析方法及系统。本发明结合Twofish这类未知S盒的加密系统的特点,跟踪密码硬件中错误传播途径,在未知S盒的情况下进行DFA分析,改进了传统的DFA分析方法,使得在未知S盒的情况下也能够进行有效的DFA分析,分析得到密钥;在DFA的基础上运用不可能输入输出差分集合,对可能的集合进行筛选,从而有效的进行密钥的分析;结合字节随机错误模型以及不可能输入输出差分集合方法,有效降低了算法的复杂度,使得这一DFA分析方法仅需16对错误样本,在4*224的计算复杂度上就能够成功恢复出96bit的密钥。

Description

一种针对Twofish加密芯片的DFA分析方法及系统
技术领域
本发明涉及密码安全技术领域,尤其涉及一种针对Twofish硬件的DFA分析方法及系统,利用DFA技术进行Twofish密码分析并评估其安全性。
背景技术
DFA【1】(Differential Fault Analysis)技术是一种高效的密码分析方法,这一分析方法是基于寄存器中短暂的错误输入会导致少量的错误输出。我们利用这一原理,在加密或者解密过程中插入一个或者多个比特位的错误,能够得到错误输入对应的错误输出差分,从而能够通过差分分析得到密码系统的S盒部件或者密钥等信息。
这里我们所使用的DFA攻击模型是字节随机错误模型,它假设攻击者能够在加密算法的某个步骤中引入一个字节的随机错误。字节错误模型可以通过接地、电磁干扰、频率干扰、光照等物理手段引入到设备当中【2】
Twofish【3】算法是Bruce在1998年作为AES候选算法提出的,它的分组长度为128bit,密钥长度有三种可选:128bit、192bit、256bit。算法经过16轮迭代,其最大特点是4个S盒由子密钥控制,在加密过程中,明文的左半部分要经过循环移位,S盒代换,矩阵混淆,函数混淆以及子密钥模加。
一轮Twofish的结构如图1,算法具体如下:在第一轮前面和最后一轮后面均有一个与子密钥进行异或的白化过程。具体轮函数结构可以表示为:
( F r , 0 , F r , 1 ) = F ( R r , 0 , R r , 1 , r ) R r + 1,0 = ROR ( R r , 2 ⊕ F r , 0 , 1 ) R r + 1,1 = ROL ( R r , 3 , 1 ) ⊕ F r , 1 R r + 1,2 = R r , 0 R r + 1,3 = R r , 1
其中r指示算法迭代到第r轮,取值范围为0到15。Fr,i为第r轮F函数输出的第i个32bit字。Rr,i为第r轮加密结果的第i个字。ROR为字(32bit)的循环右移函数,ROL为字(32bit)的循环左移函数。由此定义我们可以看出Twofish可被视为Feistel结构的加密算法,只是在轮结果合并的时候多了一个字的循环移位函数。
Twofish的轮函数F是由以下几个部分组成:
字为单位的循环移位操作
字节为单位的S盒代换
字节为单位的MDS矩阵混淆
字为单位的PHT混淆函数
字为单位的子密钥模加
DFA作为旁路式攻击的一种,能够高效的破解密码系统。本申请结合Twofish算法的特殊性,即Twofish算法模加的差分分布不均匀性,构造不可能输入输出差分集合(IPDS:Impossible Differential Set),并利用这个集合去测试候选密钥,如果该密钥告知输入差分落入IPDS中,即可判定该密钥值有误。如此进行若干次判断,即可得到最终唯一确定的密钥。经过理论分析与实验结果表明,本申请所提出的分析方法仅需16对错误样本,经过4*224的计算复杂度就能够成功恢复96bit的密钥。
现有的DFA攻击方法基本是面向S盒进行的分析,这些分析方法虽然能够有效的破解密码系统,但是对于Twofish这种S盒未知的密码系统则无法套用传统的DFA分析方法,这里我们将DFA方法与不可能输入输出差分集合进行结合,得到一种高效的DFA分析方法,对于S盒未知的加密算法也能够进行有效的破解。
在现有的密码加密硬件中,如智能卡等,都是用安全加密算法对数据进行安全加密。Twofish算法作为AES最终五种候选算法之一,安全性强,且S盒由密钥控制,现有的DFA攻击方法很难将其攻破。然后这里提出的DFA方法能够有效的对Twofish算法进行分析,并对Twofish的安全性进行评估。现有的互联网加密通信很大部分通过Twofish算法加解密进行,金融与军事通信也有部分系统采用该加密算法或者类似算法,利用本发明的方法可以得到这些通信系统的保密信息—密钥,并将密文还原为明文。
参考文献:
【1】Dan Boneh,Richard A.Demillo,Richard J.Lipton,On the Importance of CheckingCryptographic Protocols for Faults.Advances in Cryptology,proceedings ofEUROCRYPT’97,LNCS,pp.37-51,1997.
【2】Johannes Blomer,Jean-Pierre Serfert.Fault Based Cryptanalysis of the AdvancedEncryption Standard(AES).FC2003,LNCS2742,pp.162-181,2003.
【3】Bruce Schneier,John Kelsey,Doug Whiting,David Wagner,Chris Hall,Niels Ferguson.Twofish:A128-Bit Block Cipher.http://www.counterpane.com/twofish.html.1998.
发明内容
针对上述存在的技术问题,本发明的目的是提供一种针对Twofish算法的DFA分析方法及系统,用以破解类似Twofish这种S盒未知的加密算法。
为达到上述目的,本发明采用如下的技术方案:
假设攻击者手头有一采用Twofish算法的加解密设备(如智能卡,嵌入式设备或者PC机),以及一些经过此设备加密得到的密文,攻击者目的为了还原这些机密的密文信息为可读的明文。
一种针对Twofish加密芯片的DFA分析方法还原密文为明文的方法,包括:
①令k=0;
②初始化一个集合candk,candk的元素是个三元组(owkk,skk,0,skk,1),其中,skk,0,skk,1分别代表控制sboxk的两个字节密钥,owkk表示对应的输出白化密钥字节;
③初始化一系列的aid(d)集合;
④随机选定一个明文P,利用加密设备进行一次新的加密,得到密文c,再次利用同一明文P加密一次,并在加密的最后一轮第k字节引入一个字节的随机错误得到错误密文c',这样得到一个新的差分错误样本:8个三元组(c[i],c[i]',ε3,i)(0≤i<8),其中c[i]表示密文的第i个字节;
⑤从cand集合当中取出1个可能值(owkk,skk,0,skk,1),如果已经遍历完成,转4,否则利用这个可能值计算第k字节的sboxk输出:
so = sbox k ( owk k &CirclePlus; c [ k ] , ( sk k , 0 , sk k , 1 ) )
so &prime; = sbox k ( owk k &CirclePlus; c [ k ] &prime; , ( sk k , 0 , sk k , 1 ) )
⑥计算并判断(a·ε13,i)∈aid(d)(0≤i<8)这8个关系式是否成立,如果8个关系式当中任意一个成立,将三元组(owk0,sk0,sk1)从cand当中去除,其中对于i=0,4,判断是否属于aid(0),其它情况下为aid(0)∩aid(1)∩aid(2);a表示的是MDS变换后ε1的系数,其取值分别为:01,5B,EF,EF;
⑦判断cand集合大小,如果cand大小为1,则此三元组即为对应的三个密钥值,否则转⑤;
⑧令k:=k+1,判断k是否小于4,如果成立,转②;
⑨利用加密设备加密明文P得到密文C,形成明密文对(P,C)。
⑩穷举剩下的32比特密钥,然后将前几步确定的96比特子密钥与这32比特密钥串成128比特密钥,利用这些密钥和Twofish算法解密C,得到P',若P=P',则此128比特密钥即为完整的正确密钥K。
Figure GDA0000435043940000041
利用前几步得到的正确密钥K跟Twofish算法解密攻击者手头的机密数据所有密文,还原得到明文信息,算法结束。
一种针对Twofish硬件的DFA的分析系统,包括:
模块1:用于在硬件加密系统中插入一个字节长度的随机错误ε,同时跟踪错误传播途径;
模块2:用于初始化一个集合cand,cand的元素是个三元组(owk0,sk0,sk1),其中,skk,0,skk,1分别代表控制sbox0的两个字节密钥,owkk表示对应的输出白化密钥字节;
模块3:用于初始化一系列的aid(d)集合;
模块4:用于得到一个新的差分错误样本:8个三元组(c[i],c[i]',ε3,i)(0≤i<8),其中c[i]表示密文的第i个字节,如果没有新样本,结束,输出未能唯一确定密钥;
模块5:用于从cand集合当中取出1个可能值(owk0,sk0,sk1),如果已经遍历完成,转3,否则利用这个可能值计算第0字节的sbox0输出:
so &prime; = sbox 0 ( owk 0 &CirclePlus; c [ 0 ] &prime; , ( sk 0 , sk 1 ) )
so &prime; = sbox 0 ( owk 0 &CirclePlus; c [ 0 ] &prime; , ( sk 0 , sk 1 ) )
模块6:用于计算
Figure GDA0000435043940000044
并判断(a·ε13,i)∈aid(d)(0≤i<8)这8个关系式是否成立,如果8个关系式当中任意一个成立,将三元组(owk0,sk0,sk1)从cand当中去除,其中对于i=0,4,判断是否属于aid(0),其它情况下为aid(0)∩aid(1)∩aid(2);a表示的是MDS变换后ε1的系数,其取值分别为:01,5B,EF,EF;
模块7:用于判断cand集合大小,如果cand大小为1,则此三元组即为对应的三个密钥值,算法结束,否则转模块5。
本发明具有以下优点和积极效果:
1)本发明结合Twofish这类未知S盒的加密系统的特点,在未知S盒的情况下进行DFA分析,改进了传统的DFA分析方法,使得在未知S盒的情况下也能够进行有效的DFA分析,分析得到密钥;
2)Twofish算法在结构上混合域上的多种运算,包括异或、加法等,在分析上有较大的难度,该方法在DFA的基础上运用不可能输入输出差分集合,对可能的集合进行筛选,从而有效的进行密钥的分析;
3)本发明结合字节随机错误模型以及不可能输入输出差分集合方法,有效降低了算法的复杂度,使得这一DFA分析方法仅需16对错误样本,在4*224的计算复杂度上就能够成功恢复出96bit的密钥;
4)对Twofish加密硬件进行评估,对Twofish抗DFA攻击提供理论依据。(是否需要增加一些来突出这个算法在应用环境上的作用。)
5)本发明能破解采用Twofish进行加密的保密通信系统,得到其密钥,并利用此密钥还原加密过的密文信息为明文。
附图说明
图1是表示Twofish算法的单轮结构图。
图2是Twofish算法在第15轮插入错误后的从15轮到16轮的错误传播图。
具体实施方式
定义1:二元函数f为GF(28)上的非线性运算,且定义如下:
f:(GF(28),GF(28))→GF(28)
f(x,c)=x+c mod28
根据定义1,可以导出模加的输入输出差分集合。
定义2:f函数如定义1,得到集合ad(ε,γ,d):
ad ( &epsiv; , &gamma; , d ) = { x | f ( x , c ) &CirclePlus; f ( x &CirclePlus; &epsiv; , c + d ) = &gamma; , &ForAll; c &Element; GF ( 2 8 ) }
此集合的意义为对于满足输入差分为ε,经过f函数映射之后能够产生输出差分γ的输入x集合。注意这里参数d是指对于两个输入
Figure GDA0000435043940000052
f函数的另一参数c可能相差一个固定的偏差。这反映到差分错误分析中为正确及错误两次加密运算的字节模加上进位ci-1可能会不相同。
定义3:ad集合定义如2,得到集合aid(d):
aid(d)={(ε,γ)|ad(ε,γ,d)|=0}
这个集合对应偏差为d的模加不可能输入输出差分集合。
结合差分错误传播过程(图2),我们发现若错误ε在第15轮的第0字节引入,则可分析得到输出白化密钥owk0,以及控制第0个s盒sbox0的两个字节子密钥sk0,sk1,即三元组(owk0,sk0,sk1)。也就意味着这样的三元组每确定一个取值,就可以得到一个对应的ε1。由于我们此时并不知道MDS变换的其它输入字节,也就无法得到MDS变换输出的R15,mds[i]值,也不知道subkey15,因此不管是PHT函数还是轮密钥加,这两个f函数都不知道参数(x,c),但对于正确与错误的两次加密,得到f函数中参数x的异或值是可行的。于是,我们对ε3,i的表达式进行改写,可得到如下的结果:
&epsiv; 3 , i = ( x + c ) &CirclePlus; ( x &CirclePlus; a &CenterDot; &epsiv; 1 + c + d ) ( 0 &le; i < 8 ) - - - ( 4 )
在表达式(4)中,x,c均未知,但a已知(同上,仍为MDS变换中的系数),ε1在三元组(owk0,sk0,sk1)确定后也是已知的,d是上一字节模加产生的进位,虽然也未知,但可以确定d的取值范围:由于i=0,4时不存在进位,则d=0,其它情况下表达式(4)中除了进位加以外只有两次加法,所以d的取值范围是[0,2]。而字的移位操作对于异或是线性变换,所以ε3,i值是可以由密文推得,即:
ε3=ROL(ε4,1)
现在可以从密文得到一个模加的输入输出差分对。如果这对输入输出差分(a·ε13,i)
∈aid(d)(对于i=0,4,d为0,即集合为aid(0),其它情况下为aid(0)∩aid(1)∩aid(2)),即其为不可能的输入输出差分对,则我们可以断定对应的(owk0,sk0,sk1)的猜测是错误的,也就可以排除相应的三元组猜测密钥。
基于以上原理,我们设计得到Twofish的不可能差分错误攻击算法。
①初始化一个集合cand,cand的元素是个三元组(owk0,sk0,sk1),其中,skk,0,skk,1分别代表控制sbox0的两个字节密钥,owkk表示对应的输出白化密钥字节;
②初始化一系列的aid(d)集合;
③得到一个新的差分错误样本:8个三元组(c[i],c[i]',ε3,i)(0≤i<8),其中c[i]表示密文的第i个字节,如果没有新样本,结束,输出未能唯一确定密钥;
④从cand集合当中取出1个可能值(owk0,sk0,sk1),如果已经遍历完成,转3,否则利用这个可能值计算第0字节的sbox0输出:
so &prime; = sbox 0 ( owk 0 &CirclePlus; c [ 0 ] &prime; , ( sk 0 , sk 1 ) )
so &prime; = sbox 0 ( owk 0 &CirclePlus; c [ 0 ] &prime; , ( sk 0 , sk 1 ) )
⑤计算
Figure GDA0000435043940000064
并判断(a·ε13,i)∈aid(d)(0≤i<8)这8个关系式是否成立(对于i=0,4,判断是否属于aid(0),其它情况下为aid(0)∩aid(1)∩aid(2)),如果8个关系式当中任意一个成立,将三元组(owk0,sk0,sk1)从cand当中去除;
判断cand集合大小,如果cand大小为1,则此三元组即为对应的三个密钥值,算法结束,否则转4。
下面以具体实施例结合附图对本发明作进一步说明:
1.错误传播过程
我们在加密的第15轮第0字节上引入错误,即这样,错误传播如图2。错误ε经过s盒代换之后发生改变,可以得到第一个s盒sbox0的输出差分为ε1。在经过MDS变换之后,差分扩散到4个字节位(第0、1、2、3个字节位)上。经过PHT变换后,错误影响8个字节,即第0、1、2、3、4、5、6、7个字节。然后经轮密钥加(轮密钥加不影响差分值)和轮合并与交换后,影响的字节为包括:第0、8、9、10、11、12、13、14、15。
我们可以得到,
R 15 , su &prime; = R 15 , su &CirclePlus; &epsiv; 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
其中
Figure GDA0000435043940000075
R15表示第15轮的结果,R15[0]表示第15轮第0个字节,R15,su表示第16轮当中R15经过s盒变换之后的结果,R’15,su表示引入错去之后的s盒加密的结果。
R 15 , mds &prime; = R 15 , mds &CirclePlus; 01 &CenterDot; &epsiv; 1 5 B &CenterDot; &epsiv; 1 EF &CenterDot; &epsiv; 1 EF &CenterDot; &epsiv; 1 0 0 0 0 0 0 0 0 0 0 0 0
R 15 , pht &prime; = R 15 , pht &CirclePlus; &epsiv; 2,0 &epsiv; 2,1 &epsiv; 2,2 &epsiv; 2,3 &epsiv; 2,4 &epsiv; 2,5 &epsiv; 2 , 6 &epsiv; 2,7 0 0 0 0 0 0 0 0
R15,mds表示第15轮经过MDS矩阵变换之后的结果,R15,pht表示第15轮经过PHT变换之后的结果。R’15,mds以及R’15,pht表示插入错误之后的MDS矩阵变换以及PHT变换之后的结果。
对于0≤i<4,错误的传播满足以下表达式:
&epsiv; 2 , i = ( R 15 , mds [ i ] + 2 R 15 , mds [ i + 4 ] + c i - 1 ) &CirclePlus; ( R 15 , mds [ i ] &CirclePlus; a &CenterDot; &epsiv; 1 + 2 R 15 , mds [ i + 4 ] + c i - 1 &prime; ) mod 2 8
对于4≤i<8,则满足以下的表达式:
&epsiv; 2 , i = ( R 15 , mds [ i - 4 ] + 2 R 15 , mds [ i ] + c i - 1 ) &CirclePlus; ( R 15 , mds [ i - 4 ] &CirclePlus; a &CenterDot; &epsiv; 1 + 2 R 15 , mds [ i ] + c i - 1 &prime; ) mod 2 8
其中a是MDS变换后ε1的系数,分别为:01,5B,EF,EF。因为模加以字为单位,所以字节之间存在进位关系,这里用ci-1表示上一个字节加法产生的进位,c-1与c3均定义为0。在这里可以看到加法对于异或运算来说并不是一种线性运算,所以差分错误传播到这里发生了较大的改变。
R 15 , ak &prime; = R 15 , ak &CirclePlus; &epsiv; 3,0 &epsiv; 3 , 1 &epsiv; 3 , 2 &epsiv; 3 , 3 &epsiv; 3,4 &epsiv; 3,5 &epsiv; 3 , 6 &epsiv; 3,7 0 0 0 0 0 0 0 0
其中
&epsiv; 3 , i = ( R 15 , pht [ i ] + subkey 15 [ i ] + c i - 1 ) &CirclePlus; ( R 15 , pht [ i ] &CirclePlus; &epsiv; 2 , i + subkey 15 [ i ] + c i - 1 &prime; ) mod 2 8
因为PHT跟轮密钥加都是按字的模加,可以把这两个运算的错误表达式合并,得到以下结果:
&epsiv; 3 , i = ( R 15 , mds [ i ] + 2 R 15 , mds [ i + 4 ] + subkey 15 [ i ] + c i - 1 ) &CirclePlus; ( R 15 , mds [ i ] &CirclePlus; a &CenterDot; &epsiv; 1 + 2 R 15 , mds [ i + 4 ] + subkey 15 [ i ] + c i - 1 &prime; ) mod 2 8 ( 0 &le; i < 4 ) ( R 15 , mds [ i - 4 ] + 2 R 15 , mds [ i ] + subkey 15 [ i ] + c i - 1 ) &CirclePlus; ( R 15 , mds ( i - 4 ) &CirclePlus; a &CenterDot; &epsiv; 1 + 2 R 15 , mds [ i ] + subkey 15 [ i ] + c i - 1 &prime; ) mod 2 8 ( 4 &le; i < 8 )
最终由此可以推得R16的差分错误表达式:
R 16 &prime; = R 16 &CirclePlus; &epsiv; 0 0 0 0 0 0 0 &epsiv; 4,0 &epsiv; 4,1 &epsiv; 4,2 &epsiv; 4,3 &epsiv; 3,4 &epsiv; 3,5 &epsiv; 3,6 &epsiv; 3,7
假设ε3=(ε3,03,13,23,3),ε4=(ε4,04,14,24,3),则ε4=ROR(ε3,1)。
且能够得到最终经过密钥输出白化之后的密文差分错误表达式:
C &prime; = C &CirclePlus; &epsiv; 0 0 0 0 0 0 0 &epsiv; 4,0 &epsiv; 4,1 &epsiv; 4,2 &epsiv; 4,3 &epsiv; 3,4 &epsiv; 3,5 &epsiv; 3,6 &epsiv; 3,7
2.理论基础
通过跟踪差分错误的传播过程,发现差分错误经过了三次对异或非线性变换(一次S盒代换,两次模加),在传播到密文的时候差分错误值已经发生了很大改变,因为S盒未知,无法估计差分错误传播的特征,也就无法找到一个群上的运算fx,满足以下表达式,在任意的轮密钥及F函数情况下是恒定成立的或者以可统计的概率成立。
fx ( x , y ) &DoubleRightArrow; fx ( F ( x ) , F ( y ) )
即使可以通过猜测输出白化密钥从密文反推得到最后一轮轮函数F的输入值,还可以直接从密文中得到F函数的输出差分,但对于分析仍然是不够的。模加不仅仅是对异或的非线性运算,而且对于某个输入差分,其输出差分的分布极其不均匀,甚至可能出现对于某对固定的输入输出差分,是没有输入值可以经过模加运算之后能够产生相应的输出差分的,我们把这种不可能的输入输出差分对称为模加的不可能输入输出差分对。利用这一特点,我们进行进一步分析Twofish子密钥。
3.实现过程
①令k=0;
②初始化一个集合candk,candk的元素是个三元组(owkk,skk,0,skk,1),其中,skk,0,skk,1分别代表控制sboxk的两个字节密钥,owkk表示对应的输出白化密钥字节;
③初始化一系列的aid(d)集合;
④随机选定一个明文P,利用加密设备进行一次新的加密,得到密文c,再次利用同一明文P加密一次,并在加密的最后一轮第k字节引入一个字节的随机错误得到错误密文c',这样得到一个新的差分错误样本:8个三元组(c[i],c[i]',ε3,i)(0≤i<8),其中c[i]表示密文的第i个字节;
⑤从cand集合当中取出1个可能值(owkk,skk,0,skk,1),如果已经遍历完成,转4,否则利用这个可能值计算第k字节的sboxk输出:
so = sbox k ( owk k &CirclePlus; c [ k ] , ( sk k , 0 , sk k , 1 ) )
so &prime; = sbox k ( owk k &CirclePlus; c [ k ] &prime; , ( sk k , 0 , sk k , 1 ) )
⑥计算并判断(a·ε13,i)∈aid(d)(0≤i<8)这8个关系式是否成立,如果8个关系式当中任意一个成立,将三元组(owk0,sk0,sk1)从cand当中去除,其中对于i=0,4,判断是否属于aid(0),其它情况下为aid(0)∩aid(1)∩aid(2);a表示的是MDS变换
后ε1的系数,其取值分别为:01,5B,EF,EF;
⑦判断cand集合大小,如果cand大小为1,则此三元组即为对应的三个密钥值,否则转⑤;
⑧令k:=k+1,判断k是否小于4,如果成立,转②;
⑨利用加密设备加密明文P得到密文C,形成明密文对(P,C)。
⑩穷举剩下的32比特密钥,然后将前几步确定的96比特子密钥与这32比特密钥串成128比特密钥,利用这些密钥和Twofish算法解密C,得到P',若P=P',则此128比特密钥即为完整的正确密钥K。
Figure GDA0000435043940000101
利用前几步得到的正确密钥K跟Twofish算法解密攻击者手头的机密数据所有密文,还原得到明文信息,算法结束。
以上实施例仅供说明本发明之用,而非对本发明的限制,有关技术领域的技术人员,在不脱离本发明的精神和范围的情况下,还可以作出各种变换或变型,因此所有等同的技术方案,都落入本发明的保护范围。

Claims (2)

1.一种针对Twofish加密芯片的DFA分析方法,其特征在于,包括:
①令k=0;
②初始化一个集合cand,cand的元素是个三元组(owkk,skk,0,skk,1),其中,skk,0,skk,1分别代表控制sboxk的两个字节密钥,owkk表示对应的输出白化密钥字节;
③初始化一系列的aid(d)集合,d是上一字节模加产生的进位,d的取值范围是[0,2];
④随机选定一个明文P,利用加密设备进行一次新的加密,得到密文C,再次利用同一明文P加密一次,并在加密的最后一轮第k字节引入一个字节的随机错误得到错误密文C,这样得到一个新的差分错误样本:8个三元组(c[i],c[i]',ε3,i)(0≤i<8),其中c[i]表示密文的第i个字节,ε表示随机错误;
⑤从cand集合当中取出1个可能值(owkk,skk,0,skk,1),如果已经遍历完成,转④,否则利用这个可能值计算第k字节的sboxk输出:
so = sbox k ( owk k &CirclePlus; c [ k ] , ( sk k , 0 , sk k , 1 ) )
so &prime; = sbox k ( owk k &CirclePlus; c [ k ] &prime; , ( sk k , 0 , sk k , 1 ) )
⑥计算并判断(a·ε13,i)∈aid(d)(0≤i<8)这8个关系式是否成立,如果8个关系式当中任意一个成立,将三元组(owk0,sk0,sk1)从cand当中去除,其中对于i=0,4,判断是否属于aid(0),其它情况下为aid(0)∩aid(1)∩aid(2);a表示的是MDS变换后ε1的系数,其取值分别为:01,5B,EF,EF;
⑦判断cand集合大小,如果cand大小为1,则此三元组即为对应的三个密钥值,否则转⑤;
⑧令k:=k+1,判断k是否小于4,如果成立,转②;
⑨利用加密设备加密明文P得到密文C,形成明密文对(P,C);
⑩穷举剩下的32比特密钥,然后将前几步确定的96比特子密钥与这32比特密钥串成128比特密钥,利用这些密钥和Twofish算法解密C,得到P',若P=P',则此128比特密钥即为完整的正确密钥K;
Figure FDA0000435043930000014
利用前几步得到的正确密钥K跟Twofish算法解密攻击者手头的机密数据所有密文,还原得到明文信息,结束。
2.一种针对Twofish硬件的DFA的分析系统,其特征在于:
模块1:用于在硬件加密系统中插入一个字节长度的随机错误ε,同时跟踪错误传播途径;
模块2:用于初始化一个集合cand,cand的元素是个三元组(owk0,sk0,sk1),其中,skk,0,skk,1分别代表控制sbox0的两个字节密钥,owkk表示对应的输出白化密钥字节;
模块3:用于初始化一系列的aid(d)集合,d是上一字节模加产生的进位,d的取值范围是[0,2];
模块4:用于得到一个新的差分错误样本:8个三元组(c[i],c[i]',ε3,i)(0≤i<8),其中c[i]表示密文的第i个字节,如果没有新样本,结束,输出未能唯一确定密钥;
模块5:用于从cand集合当中取出1个可能值(owk0,sk0,sk1),如果已经遍历完成,转模块3,否则利用这个可能值计算第0字节的sbox0输出:
so &prime; = sbox 0 ( owk 0 &CirclePlus; c [ 0 ] &prime; , ( sk 0 , sk 1 ) )
so &prime; = sbox 0 ( owk 0 &CirclePlus; c [ 0 ] &prime; , ( sk 0 , sk 1 ) )
模块6:用于计算并判断(a·ε13,i)∈aid(d)(0≤i<8)这8个关系式是否成立,如果8个关系式当中任意一个成立,将三元组(owk0,sk0,sk1)从cand当中去除,其中对于i=0,4,判断是否属于aid(0),其它情况下为aid(0)∩aid(1)∩aid(2),a表示的是MDS变换后ε1的系数,其取值分别为:01,5B,EF,EF;
模块7:用于判断cand集合大小,如果cand大小为1,则此三元组即为对应的三个密钥值,算法结束,否则转模块5。
CN201110137171.5A 2011-05-25 2011-05-25 一种针对Twofish加密芯片的DFA分析方法及系统 Expired - Fee Related CN102158338B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110137171.5A CN102158338B (zh) 2011-05-25 2011-05-25 一种针对Twofish加密芯片的DFA分析方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110137171.5A CN102158338B (zh) 2011-05-25 2011-05-25 一种针对Twofish加密芯片的DFA分析方法及系统

Publications (2)

Publication Number Publication Date
CN102158338A CN102158338A (zh) 2011-08-17
CN102158338B true CN102158338B (zh) 2014-04-16

Family

ID=44439540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110137171.5A Expired - Fee Related CN102158338B (zh) 2011-05-25 2011-05-25 一种针对Twofish加密芯片的DFA分析方法及系统

Country Status (1)

Country Link
CN (1) CN102158338B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104317552B (zh) * 2014-11-06 2018-04-13 合肥濯新光电科技有限公司 真随机数发生器及方法、真随机数密钥加密系统及方法
CN105376058B (zh) * 2015-10-08 2018-08-10 深圳先进技术研究院 一种基于rsa算法的硬件的安全性评估方法及装置
CN109831294B (zh) * 2019-01-02 2020-11-27 北京邮电大学 Spn型分组密码抗故障攻击能力评估方法及装置
CN113285870A (zh) * 2021-06-09 2021-08-20 成都安恒信息技术有限公司 一种保护互联网聊天隐私的方法及系统

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
.一种对AES-128的差分错误分析原理.《计算机工程》.2006,(第23期),第174-176页. *
Twofish加密算法及其应用;简清明;《计算机系统应用》;20070331(第03期);第47-49页 *
杜育松 *
沈静 *
王大星 *
简清明.Twofish加密算法及其应用.《计算机系统应用》.2007,(第03期),第47-49页.

Also Published As

Publication number Publication date
CN102158338A (zh) 2011-08-17

Similar Documents

Publication Publication Date Title
Saha et al. RK‐AES: An Improved Version of AES Using a New Key Generation Process with Random Keys
CN105553638A (zh) 针对sm4一阶掩码算法的二阶频域能量分析攻击
Rhouma et al. Cryptanalysis of a spatiotemporal chaotic image/video cryptosystem
CN101383703A (zh) 基于广义信息域的动态加密系统及方法
CN110601822A (zh) 一种基于量子保密通信技术的加密盲签名方法
Mewada et al. Exploration of efficient symmetric AES algorithm
CN104348625A (zh) 加解密装置及其加解密方法
Mishra et al. A New algorithm of encryption and decryption of images using chaotic mapping
CN104301095A (zh) Des轮运算方法和电路
CN102158338B (zh) 一种针对Twofish加密芯片的DFA分析方法及系统
Kendhe et al. A survey report on various cryptanalysis techniques
El Hennawy et al. LEA: link encryption algorithm proposed stream cipher algorithm
Huang et al. Low area-overhead low-entropy masking scheme (LEMS) against correlation power analysis attack
CN102013974B (zh) 基于随机变化的非线性步骤的加密方法和解密方法
CN112765686A (zh) 芯片内算法密钥的防功耗攻击架构及方法
Tunstall Practical complexity differential cryptanalysis and fault analysis of AES
Saberi et al. Enhanced key expansion for AES-256 by using even-odd method
Riyadi et al. The Dynamic Symmetric Four-Key-Generators System for Securing Data Transmission in the Industrial Control System.
Nissar et al. Implementation of security enhancement in AES by inducting dynamicity in AES s-box
Li et al. Security analysis of the lightweight cryptosystem TWINE in the Internet of Things
Li et al. Single byte differential fault analysis on the LED lightweight cipher in the wireless sensor network
Riyadi et al. Real-time testing on improved data transmission security in the industrial control system
Young et al. Backdoor attacks on black-box ciphers exploiting low-entropy plaintexts
Li et al. An extension of differential fault analysis on AES
Wang et al. A one-way coupled chaotic map lattice based self-synchronizing stream cipher

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140416