孙春辉 李晖 杨旸 吕超
(西安电子科技大学计算机网络与信息安全教育部重点实验室,陕西西安 710071)
边信道攻击是利用密码设备在工作时的泄漏信息来恢复密钥的方法[1],常见的边信道攻击主要有时间攻击[1-3]、功耗分析攻击[1,4-5]、电磁攻击[6-7]和故障攻击[1,8-9]等.
目前,广泛使用Square攻击[10]来衡量分组密码的安全性,而时间攻击多用于针对公钥密码体制. Kocher在文献[2]中介绍了针对Diffie-Hellman、RSA、数字签名标准(DSS)的时间攻击,并指出时间攻击可以用来攻击其它密码系统(包括分组密码),特别是可以通过检测DES的轮密钥生成过程中,因移动密钥中非零位而引起执行时间的不同,来揭示密钥的汉明重量,其所能提供的密钥信息为 3.95b.文献[3]中根据Kocher的观点,在一台主频为120MHz、运行单任务操作系统MSDOS的计算机上,检测RSA-DES和L-DES在固定输入全零明文和设置不同汉明重量的密钥进行加密时,轮密钥生成过程和整个加密过程所需的时间,得到不同汉明重量的密钥与时间之间的关系.文献[3]中认为时间攻击能找出DES全部的密钥而不仅仅是其汉明重量,并用精心选择的消息输入DES,通过分析加密时间(不计子密钥生成时间)的差异得到DES密钥.
为了研究密码算法的安全性能,文中提出一种基于选择明文-时间差异的边信道攻击(简称选择明文-时间攻击)方法,并以分组密码DES算法为例来说明选择明文 -时间攻击的具体实现.通过在单片机上的实际攻击验证,只需 49个明文即可直接恢复出智能卡DES算法的第一轮48位子密钥而不仅仅是其汉明重量.最后,分析了密码算法在实现过程中,出现执行时间差异的原因,给出了相应的抵抗措施,并对其性能进行了分析和比较.
DES作为美国国家标准学会(ANSI)的数据加密算法(DEA)和国际标准化组织(ISO)的DEA-1,成为一个世界范围内的标准已经 30多年了[11]. DES算法在卫星通信、网关服务器、智能卡等领域中有着广泛的应用.
DES密钥的长度为 56位(密钥通常表示为 64位的数,但每个字节的第 8位都用作奇偶校验,可以忽略)[11],所有的保密性依赖于密钥.密钥通过密钥置换并移位,然后从 56位中通过压缩置换选出 48位.E盒将通过初始置换(IP)后的数据的右半部分Ri-1扩展成 48位,再与 48位子密钥进行异或运算,然后通过8个 S盒将这 48位替代成新的 32位数据,并用P盒置换一次.这4步运算构成了函数f.然后,使用另一个异或运算将函数f的输出与数据的左半部分 Li-1相结合,其结果作为下一轮运算的右半部分Ri,原来数据的右半部分交换成为下一轮运算的左半部分Li,如图1所示.该操作重复16次,即可实现DES的16轮运算[11].
图1 一轮DES运算示意图Fig.1 Schematic diagram of one round DESoperation
非线性的S盒是 DES算法安全的核心所在[11].E盒扩展出的数据与子密钥异或后,输出的48位按顺序分成 8组,分别通过 S1,S2,…,S8盒后压缩为 32位,即每个 S盒输入为 6位,输出为 4位,如图2所示.
图2 Si盒的输入与输出Fig.2 Input and output of Si box
设Si盒的输入端为a1a2a3a4a5a6,输出端为b1b2b3b4,需要在 Si盒中查找并输出 a1a6行、a2a3a4a5列的值,即Si(a1a6,a2a3a4a5).在程序实现的DES算法中,若调整S盒输入端每一位的顺序,则对标准S表进行查表操作,这部分代码执行所消耗的时间,与 S盒输入端每一位的汉明重量密切相关.通过精心选择明文输入,测量执行时间,可以分析推算出子密钥.
DES算法广泛应用于智能卡中,文中用文献
[12]中的智能IC卡DES算法,该算法采用汇编语言编写,代码简洁紧凑,执行效率高,占用存储空间小于 4 kB,运行所需内存小于 256 B,可以在与80C52兼容的微控制器单元(MCU)上运行,适用于8位CPU的智能卡.其密钥为 64位,以 8位为一组存储,共占用 8 B,密钥由低位到高位的位顺序为k8…k1,k16…k9,…,k64…k57,其中 k8、k16、k24、k32、k40、k48、k56、k64为奇偶校验位.明文及密文的位顺序也和密钥的一致.E盒扩展输出的数据与48位子密钥异或的结果存储在 8个字节中(每字节中高 6位有效),对应8个S盒的输入.以第一轮运算为例,R0经过E盒扩展后与第一轮子密钥K1异或,得到 48位值,按每字节 6位存储,对应 8个 S盒.其中对应任一S盒的字节内部存储形式为
要对标准的S表进行查表,程序将对应 S盒的输入位顺序调整为
对应S盒中S1查表算法如下所示:
其中S_BOXES_DATA是标准S表的首地址,S1查表算法将对应 S1表的输入位顺序调整为可以直接查标准S表的形式存入累加器A,并通过MOVC A, @A+DPTR查表指令进行查表.程序执行时,会因为数据比特位的不同而选择不同的分支,从而存在执行时间差,可以用来进行时间攻击.当采用高级语言编写时,使用不同的优化等级得到的机器代码是不同的.
定义1 选择明文 -时间攻击是一种只需精心选择与密钥长度相当数量的明文,将其输入加密系统,并测量加密算法中相关敏感部分代码的执行时间,通过比较分析这些时间差,从而分析出密钥的方法.
在选择明文 -时间攻击方法中,选择合适的明文很重要.选择正确合理的明文后,在攻击中就能快捷、高效地反映出不同汉明重量密钥在密码运算过程中的时间特征,进而准确地分析推断出密钥.反之,选择明文不合适,会造成时间特征不明显,因而难以分析甚至无法分析出密钥.
通用的明文选择标准为:每组明文的相应位与密钥作用后,能够引起密码算法相应部分运算时间的不同,并可以通过对该部分运算时间的比较推断出不同密钥位的值.
在选择了合适的明文后,通用的攻击方法为:依次向密码系统输入选择的明文,分别测量密码算法相应部分代码的执行时间,根据所攻击的具体密码算法的实现细节,确定出可行的比较分析方案,进而根据测量的执行时间逐步推断出密钥.
文中以攻击智能卡DES算法的第一轮对应S1盒的 6位子密钥为例[12],具体说明两种不同的明文选择方法及相应的时间攻击分析方法.
2.2.1 第一种攻击方法的具体操作步骤
(1)观察第一轮中E盒输出的前 6位与 K1对应的6位进行的异或操作.首先可以让 E盒输出的6位全部为 0,让子密钥 K1直接进行位顺序调整,将对S1盒查表所消耗的时间作为一个时间基准.再通过选择特殊的 6位与 K1异或,并检测位顺序调整操作后对S1盒查表所消耗的时间.将测得的时间与时间基准比对,即可分析出K1中对应位的比特值.选择攻击S1盒需要的7个6位特殊值(二进制)为
000000、100000、010000、001000、000100、000010、000001.
通过这7个 6位特殊值可以分别对 K1对应S1盒的6位进行测试.设这7个6位的值为Xi(i=0, 1,…,6),根据式(1)进行向上逆推即可求得对应明文.
式中:E-1、IP-1分别为E盒扩展和IP初始置换的逆运算,E-1(Xi)=R0.求出对应的7个明文(十六进制)为
0000000000000000、0000000100000000、
0000000001000000、0000000000010000、
0000000000000100、0000000000000001、
4000000000000000.
(2)输入第一个测试明文,测得第一轮中进入S1盒的执行时间,作为基准时间.再输入后 6个明文,分别得到6个执行时间.由于S盒输入的数据为E盒扩展输出的数据与子密钥异或的结果,当 E盒输出全为 0时,密钥直接作用于 S盒,故将第一个全0输入作为时间基准.后 6个测试明文对应到 S1盒的 6位输入端,各有一位为 1.根据异或规则,即 1 0=1、0 1=1、1 1=0、0 0=0,当 E输入位对应S1盒某位为 1,与对应位子密钥作用后,执行时间比基准时间长,说明异或后产生了 1,子密钥在该位上是 0;反之,若执行时间比基准时间短,则说明异或后产生了0,子密钥在该位上是1.
(3)通过计算剩余的 7个 S盒对应的选择明文,作类似的攻击,即可通过总共 49组明文分析出48位第一轮子密钥.剩下的 8位只需通过 256次穷举即可获得,这样就得到了密钥K(K中剩余的 k8、k16、k24、k32、k40、k48、k56、k64为奇偶校验位,无需处理).
2.2.2 第二种攻击方法的具体操作步骤
第一种攻击方法要求时间检测的触发起点精确位于 E盒输出与子密钥异或后的位置.为降低对触发起点位置选择的要求,可将时间检测的触发点置于初始置换前.这时,由于增加了其它额外的操作,作为时间基准使用的第一个全零明文的汉明重量为0,无法起到基准的作用,所以剔除这组明文而使用剩下的6个明文.改进后第二种攻击方法的具体操作步骤如下:
(1)选择测试明文为
0000000100000000、0000000001000000、
0000000000010000、0000000000000100、
0000000000000001、4000000000000000.
(2)由于 6个明文的汉明重量均为 1,故在经过初始置换后,所消耗的时间是一致的.而后面的 E盒将 32位输入扩展为 48位,其重复操作的16位对应于明文中的 16位,即这些位要比其它位多操作一次.其中,选择的明文中为 1的位,分别对应第 25、33、57、7位,即第一个、第二个、第五个和第六个明文.这4个明文中为 1的位,会比第三个、第四个明文中为 1的位多操作一次,故将检测的 6个明文对应的执行时间划分为两个集合,即
A={第一个时间,第二个时间,第五个时间,第六个时间},
B={第三个时间,第四个时间}.
(3)根据时间值接近程度,将 A、B集合再分别划分为两个子集,子集中数值大的即对应密钥位 0,数值小的对应密钥位 1.时间值的接近程度可以通过以下方法来判别.
以集合A为例,首先对集合 A中元素进行从大到小的排序,得到
对排序后集合A中元素求差值,
将根据式(3)求得的差值按从大到小排序,得到
为便于后面的比较分析,Δti可以适当进行等比放大,一般以Δt0放大到整数时的倍数即可.当最大差值Δt0满足
时,将以最大差值Δt0为界进行后续分析.其中α的值可取 3~5或根据实际的执行时间差异作调整.文中设,将排序后集合 A中元素以为界分成两个子集{t0,t1,t2}、{t3},子集{t0,t1,t2}中为执行时间相对较长的元素,分别对应密钥位为0,子集{t3}中为执行时间相对较短的元素,对应密钥位为 1.集合B中只有两个元素,对其进行判别时,可将集合B中元素的差值ΔtB与集合A中的Δt0作比较,若ΔtB与 Δt0很接近,Δt0为集合 A分界的依据,则集合 B中数值大的元素对应密钥位为 0,数值小的对应密钥位为1.最后,将集合A、B中元素恢复到原来 6位的顺序,代入推算出对应的 0或 1值,即可得到对应的6位密钥.
可能存在的特殊情况是,若集合中元素的差值都很接近,无法划分子集,则说明这几位元素对应的子密钥位可能全为 1或 0.可以进一步通过产生对应的基准时间来比较判断,要求产生基准时间的明文中有一位为 1,此 1在 E盒中的处理次数,与需要判断的集合中 1的处理次数相同,而在 E盒的输出端,要求1出现在正在判断的S盒后.这样通过与基准时间的比较,即可分析出是全为 1或全为 0.由于此时每个S盒分为两个集合,最多的情况每盒需要2个基准明文.当最后一个 S盒出现这种情况时,可以与剩余的 8位密钥一起穷举,计算量最小为 2× 256次,最大为 4×256次.
(4)计算剩余的 7个S盒对应的选择明文,作类似的攻击,使用最少 48组最多 64组明文,即可分析出 48位第一轮子密钥.剩下的 8位只需通过 256次穷举即可获得,这样就得到了密钥K.
在与80C52兼容的STC89C51RC单片机中使用智能卡 DES算法[12],在算法中相应位置嵌入了触发信号的控制代码,用来精确触发示波器进行采集,以测试相应程序段的执行时间.
选择明文-时间攻击的测试实验装置如图3所示.计算机(CPU2.8GHz,150GB硬盘,1GB内存, LAN及RS-232口)通过交换机(TP-LINK,10/100Mb自适应)与数字存储示波器(Tektronix DPO7254, 2个有源探头TAP2500)的LAN口相连,自动采集分析软件可以控制示波器自动进行连续的数据采集并以一定格式存储.被测加密电路板(STC89C51RC单片机)由数字稳压电源(LPS-305)供电.示波器CH2作为示波器的触发信号使用,用于在需要的程序段触发示波器进行数据采集.
图3 实验装置示意图Fig.3 Schematic diagram of experimental device
示波器通过网络接口与计算机相连,由边信道攻击分析软件来控制采集.通过单片机执行智能IC卡DES算法来进行实际攻击测试,由RS-232接口接收计算机输出测试明文,并返回密文和解密得到的明文.示波器设置为每条轨迹1000点,选择CH2上升沿触发.测试明文输入后,由触发代码来控制示波器在DES代码相应位置进行数据采集.文中设置触发起点为E盒输出与子密钥异或后的位置,触发结束点为对应 S1盒输入值的位顺序调整程序后的位置.由于不同明文在程序中运行的时间不同,故从触发起点到触发结束点的时间也不同,这段时间示波器采集到的数据点数,即可表示触发区间内程序执行的时间.实际测试例中,密钥设置全为 0x66,可以算出对应子密钥K1的前6位为000111.当 E盒输出前 6位中有且只有一位为 1时,测得这部分代码的执行时间大于基准时间,说明 E盒输出中对应1的位与对应部分子密钥异或运算后产生了 1,根据异或运算的规则,可以判定该子密钥在 E盒输出中对应 1位置上的值为 0;反之,当测得的执行时间小于基准时间,可以判定子密钥在该位置上的值为 1.
第一种攻击方法的测量时间及分析结果见表1.将表 1中 100000至 000001对应的测量时间与000000对应的基准时间比较,按第一种攻击方法的步骤(2)进行分析,例如 40.15μs大于基准时间39.10μs,说明异或后产生了 1,从而推断出子密钥在该位上的值为 0.这样便可以得到这 6位子密钥000111.同理,可以推算后 7个 S盒对应的测试明文,进行类似的测试分析即可得到子密钥,最后可得到48位的子密钥 K1.通过对 K1反推,可以得到密钥 K的 48位,剩下的 8位只需通过256次穷举即可获得,从而得到密钥K(K中剩余8位为奇偶校验位,无需处理).
表1 第一种攻击方法的测量时间及分析结果Table 1 Measured time and analysis resu lts of the first attack method
进一步观察可以看出,前面基本分析得到的数据较为准确,一致性也比较好,为了降低对前触发点的要求,将时间检测的触发点置于初始置换前.这时由于触发中增加了其它操作消耗的时间,可能会引入噪声,故将示波器设置为每条轨迹 5000点,以提高时间分辨率.按第二种攻击方法进行两次时间测量,结果如表2所示.
表2 第二种攻击方法的测量时间Table 2 Measured time of the second attack methodμs
对于表 2中数据,按照第二种攻击方法中的步骤(2),将第一次测量时间划分为集合A={824.75, 825.00,819.50,819.50}和B={822.00,816.75}.按照式(2),将A中元素按从大到小的顺序排列后得到A={825.00,824.75,819.50,819.50}.按照式(3),计算得到差值为{0.025,5.25,0},按从大到小排序得到{5.25,0.025,0}.显然有5.25>5×0.025和5.25>5×0,满足式(5),则集合A中元素对应{0,0,1,1}.集合B中两个元素的差值为5.25,此值与集合A的最大差值5.25相等,而5.25为集合A的分界参考值,故B中元素对应{0,1}.将集合A、B中元素恢复到原来 6位的顺序,代入推算出对应位的 0或 1值,得到对应于第一轮 S1盒的 6位子密钥000111.同样,将第二次测量时间进行类似处理分析,也可以得到对应于第一轮 S1盒的 6位子密钥000111.
通过以上实验可以看出,选择明文-时间攻击方法的攻击效率较高,仅需与所要攻击密钥长度相当数量的明文(如第一种攻击方法仅需 49个明文、第二种攻击方法仅需 48个明文即可攻击出48位子密钥)进行简单的比较判断,而无需复杂的统计运算,即可恢复出密钥,对密码系统的安全性具有较大的威胁.与选择明文 -时间攻击相比,差分功耗攻击(DPA)[1,4-5]、差分电磁攻击(DEMA)[6-7]需要数千至数万组明文输入和采集对应的功率及电磁辐射信息,运行时间长,所需存储量大,并需要进行一系列复杂的统计运算方可获取密钥,运算量很大.
针对选择明文 -时间攻击,可以通过改进算法,使不同汉明重量的变量执行时间相同.然而如果使用高级语言,由于编译器及其优化等级的不同,直接看到的结果与实际编译后的结果并不一致,可能带来安全隐患.下面以单片机C语言为例(Keil环境),给出一个实例进行具体分析.
图4 未增加等时操作的 C代码及其部分反汇编代码Fig.4 C code without time equivalent operation and its part of disassembled code
包含if语句的C代码及其部分反汇编代码如图4所示.从图4中可以看出,if语句选择不同的分支,由于不同分支的代码数量不同,即符合 if条件时,需额外执行=0x20语句(对应的汇编代码为ORL 0x10,#0x20),因而执行时间有所不同.在包含if语句后加上else等时操作=0,使不同分支代码数量一致,其C代码如图5所示.
图5 增加等时操作的C代码Fig.5 C code with time equivalentoperation
图6 不同优化等级下增加等时操作的C代码的反汇编代码Fig.6 Disassembled code of C code with time equivalent operation and different levels of compiler optimization
事实上,高级语言在编译器设置不同的优化等级下,编译产生的机器代码并不完全一致,这将导致某种不确定性,对密码系统带来潜在的威胁.在不同优化等级下,增加等时操作的 C代码的反汇编代码如图 6所示.从图 6中可以看出,当编译器设置的优化等级大于等于 3时,增加的等时操作代码被优化掉,没能起到作用.对照没有增加等时操作指令的反汇编代码,编译器给增加等时操作语句的代码在if语句有效的分支后自动增加了一条跳转指令.这样不仅没有改善算法的执行时间均衡性,反而扩大了程序选择不同分支执行时间的差异,而且降低了整个密码系统的效率.当编译器设置的优化等级小于等于 2时,增加的等时操作代码有效,但对照没有增加等时操作指令的反汇编代码,编译器仍是给增加等时操作语句的代码在 if语句有效的分支后自动增加了一条跳转指令.
汇编指令执行所需要的机器周期见表3.从表3可知,增加的等时操作代码与编码器自动增加的跳转指令执行所需的机器周期相同,所以改进后并没有增加密码系统的安全性,却降低了执行效率.
表3 指令的机器周期Table 3 Machine cycles of instructions
根据以上分析,在编码器设置的优化等级小于等于 2的情况下,可以增加两条等时操作代码,如重复执行两次,来达到平衡两个分支的执行时间的目的.可见,仅仅通过增加等时操作代码,并不能像直观看到的那样有效,增加的等时操作代码受到编程语言、编译器及其优化设置等情况的影响,不确定因素很多.这些潜伏在算法实现过程中的具体问题很可能会为选择明文-时间攻击提供机会.
根据以上分析,在软件实现的密码系统中,由于设计过程中设计者可能未考虑到如何抵抗选择明文 -时间攻击,或即使考虑到了抵抗该攻击,但因受到编程语言、编译器及其优化设置的不同影响,故很容易造成程序在不同分支的不同.当这样的问题出现在处理密码系统的敏感量时,会导致执行时间因敏感量的汉明重量不同而不同,即为选择明文 -时间攻击提供了机会.攻击者可以通过精心选择合适的明文消息,输入密码系统进行加密,再检测密码算法相关部分的代码执行时间,然后根据具体密码算法的实现细节确定分析方案,从而根据测得的执行时间进行分析攻击,这种攻击就有可能破译密码系统的密钥,导致密码系统被攻破.
这类问题在密码系统中是普遍存在的,例如在HDL语言硬件实现的密码系统中,由于设计或综合优化过程的不同,会给密码系统带来毁灭性的安全隐患.由此可以看出,选择明文-时间攻击的主要思想是通过检测密码系统因敏感量的汉明重量不同而导致的不同时间差异来获得其密钥.
文献[1]中提出,可以通过在程序中加入随机延迟来达到掩盖执行时间差异的目的,但在一定程度上会降低密码系统的效率.同时,攻击者可采用增加测量次数进行统计平均等方法来减小随机延迟对攻击的影响.
文中提出一种更为有效的方法,即通过重组S表中的元素位置,使之不用对输入S盒的值进行位调整即可直接查表.对应于标准 S表的S1表如表 4所示,标准S表对输入位要求按 a1a6行、a2a3a4a5列进行查表,由于S盒为DES算法安全的核心所在,且其设计准则至今尚未完全公开,重新设计 S盒不一定能保证达到原有的安全级别,故在不改变S表安全性能并按原规则查表的前提下,变换 S表中元素的顺序,使其可直接用a6a5a4a3a2a1的位顺序对改进后的 S表进行线性查表,同时查表结果与按a1a6行、a2a3a4a5列方式对标准 S表查表的结果相同.改进后的 S1表如表 5所示.这样,对于智能卡DES算法中的结果,只需统一右移两位或之前的处理均按靠右端存储,即可直接对改进后的S表进行线性查表,而无需按标准 S表查表时需要调整输入比特位,因而不存在执行时间差的问题,且不损失代码的执行效率.
表4 标准S表中的S1表Tab le 4 S1 in standard S table
表5 改进后的S1表Tab le 5 Improved S1 Table
文中提出了一种选择明文-时间攻击方法,并在单片机上进行了实际的攻击验证,结果表明:只需精心选择与密钥长度相当数量的明文输入密码系统,通过分析相关部分代码的执行时间即可恢复出密钥;密码算法的安全性除了与其本身密码体制的安全性有关外,还与密码算法的具体实现细节密切相关,不适当的实现过程尽管能完成算法的相应功能,但会带来致命的隐患.文中最后给出了几种抵抗该攻击的措施,并对其性能进行了分析和比较.文中虽然以DES算法为例,但选择明文-时间攻击方法同样适用于其它的分组密码或公钥密码系统.
[1] Bar-EIHagai.Introduction to side channel attacks[EB/ OL].[2009-07-16].http:∥www.discretix.com/PDF/Introduction%20to%20Side%20Channel%20Attacks.pdf.
[2] Kocher P.Timing attacks on imp lementations of Diffie-Hellman,RSA,DSS,and other systems[M]∥Advances in Cryptology.Berlin/Heidelberg:Springer-Verlag,1996: 104-113.
[3] Hevia A,Kiwi M.Strength of two data encryption standard implementations under timing attacks[C]∥Proceedings of the Third Latin American Symposium on Theoretical Informatics.Berlin/Heidelberg:Springer-Verlag,1998:192-205.
[4] Mangard Stefan,Oswald Elisabeth,Popp Thomas.Power analysis attacks:revealing the secrets of smart cards [M].Berlin/Heidelberg:Springer-Verlag,2007:6-12.
[5] Chu Jie,Zhao Qiang,Ding Guoliang,et al.Differential power analysis for cryp tographic ICs[C]∥Proceedings of International Con ference on Electronic Measurement&Instruments.Xi'an:IEEE,2007:292-295.
[6] Gandolfi Karine,Mourtel Christophe,Olivier Francis.Electromagnetic analysis:concrete results[C]∥Proceedings of the Third International Workshop on Cryptographic Hardware and Embedded Systems.Berlin/Heidelberg:Springer-Verlag,2001:251-261.
[7] Quisquater Jean-jacques,Samyde David.Electromagnetic analysis(EMA):measures and counter-measures forsmart cards[C]∥Proceedings of International Con fe-rence on Research in Smart Cards.Berlin/Heidelberg:Sp ringer-Verlag,2001:200-210.
[8] 李玮,谷大武.基于密钥编排故障的SMS4算法的差分故障分析[J].通信学报,2008,29(10):135-142.
LiWei,Gu Da-wu.Differential faultanalysis on the SMS4 cipher by inducing fau lts to the key schedule[J].Journal on Communications,2008,29(10):135-142.
[9] 张蕾,吴文玲.SMS 4密码算法的差分故障攻击 [J].计算机学报,2006,29(9):2596-2602. Zhang Lei,Wu Wen-ling.Differential fault analysis on SMS4[J].Chinese Journal of Computers,2006,29(9): 2596-2602.
[10] 王美一,唐学海,李超,等.3D密码的Square攻击[J].电子与信息学报,2010,32(1):157-161.
Wang Mei-yi,Tang Xue-hai,Li Chao,et al.Square attacks on 3D cipher[J].Journal of Electronics&Information Technology,2010,32(1):157-161.
[11] Bruce Schneier.应用密码学:协议、算法与C源程序[M].2版.吴世忠,祝世雄,张文政,译.北京:机械工业出版社,2000:185-201.
[12] Chen Kiwi.DES encryption/decryption used in IC smart cards[CP/OL].[2009-07-03].http:∥www.8052. com/codelib/files/des.asm.