在电子元件中采用密钥加密算法的对抗方法

文档序号:6419200阅读:193来源:国知局
专利名称:在电子元件中采用密钥加密算法的对抗方法
技术领域
本发明涉及一种在采用密钥加密算法(秘密关键字密码算法)的电子元(部)件中的对抗方法。这类方法都是用在严格加以控制的服务存取或数据存取的应用方面。它们具有在微处理机(器)和存储器周围所形成的体系结构,其程序存储包含秘密密钥。
这些电子元件尤其是用在智能卡(芯片卡)方面某些应用。例如某些银行数据存取应用,银行业务应用,远程支付应用,例如电视,汽油配给或者高速公路通行付款。
因此这些元件或这些智能卡要使用密钥算法,其公知的是DES(英文文献中的Data Encryption Standard)。其它的现有密钥算法如RC5算法或COMP128算法。当然所列举的并非是全部。
一般地或简单扼要地说,这些算法的功能就是根据由主系统(服务人员、银行分发员……)以输入的形式加在卡上的信息及含在卡中的密钥来计算密码信息,并且可把该密码信息返回给主系统,例如这就可允许主系统认证电子元件或智能卡,也可改变数据……。
然而,可以看出,这些元件或这些卡都容易受到包括电流功耗示差分析在内的侵扰,而且可以使不怀好意的第三者发现密钥。这类侵扰被称作DPA侵扰,DPA是英文Differential Power Analysis的缩写。
这些DPA侵扰的起因是基于执行指令的微处理机的电流功耗可按照操作数据而变化。
特别是,处理一个比特数据的微处理机指令根据该比特为“1”或“0”而产生两种不同电流的曲线。典型地说,如果指令控制(操纵“0”,则在此执行瞬间有第一个功耗电流振幅,而如果指令操作“1”,则有与第一个不同的第二个功耗电流振幅。
密码算法的特征是公知的有效计算所用参数。唯一不知的是存储程序所含的密钥。它不能从单独知道外加输入信息及返回提供的密码信息而推断出来。
可是,在密码算法中,所计算的某些数据仅仅取决于以明码施加在卡输入端的信息及存在卡中的密钥。在算法中所计算的其它数据也可以单独由密码信息(通常以明码在卡输出端向主系统提供)及存在卡中的密钥重新计算。更确切地说,这些特殊数据的每个比特都可以由输入或输出信息以及密钥特定比特位组的限定数所确定。
因此,由一组特定的密钥比特形成的于密钥对应特定数据的每个比特。
这些可预测特定数据的比特(信息位)后面称为目标比特位。
DPA侵扰的基本要领就是按照其操纵“1”或“0”来利用一个指令的电流功耗曲线差,并且尽可能根据已知输入或输出信息及按相应子密钥的假设通过算法指令计算目标比特。
因而侵扰DPA的原理就是检验给出的子密钥假设,同时要对大量的电流曲线应用布尔选择函数,随着子密钥的假设而变化,每个测量曲线都与一个已知的侵扰者输入信息有关,而且对于每个曲线它(假设)是由一个目标比特预测值所确定的。
在对相关的子密钥进行假设的同时,事实上人们就能够预测该目标比特对于给定的输入或输出信息所要选取的值“0”或“1”。
那么作为布尔(booléenne)选择函数可以应用对于所考虑的子密钥假设的目标比特所预测的值“0”或“1”,以便把这些曲线分类排序成两个信息包第一个信息包汇集了那些已看出目标比特控制到“0”的曲线,而第二个信息包汇集了那些已看出按照子密钥假设目标比特控制到“1”的曲线。求出在每个信息包中平均电流功耗的同时,就得到了第一个信息包的平均功耗曲线M0(t)及第二个信息包的平均功耗曲线M1(t)。
如果子密钥的假设是准确的,第一个信息包实际上汇集了N个曲线中已看出目标比特控制到“0”的所有曲线,而第二个信息包则汇集了N个曲线中已显出目标比特“1”控制的所有曲线。第一信息包的平均功耗曲线M0(t)那时除了在执行关键指令时以外,处处都将具有平均功耗,并呈现“0”目标控制的特征电流功耗曲线外形(profilo)。换句话说,对于所有这些曲线来说,所有受控比特等于“0”和等于“1”的机会是一样的,除非目标比特总是为“0”值。这可写成M0(t)=[(profilo+profil1)/2]t≠tci+[profil0]tci或M0(t)=[Vmt]t≠tci+[profil0]tci
其中tci表示临界时刻,在该时刻执行了一种关键指令。
同样,第二信息包的平均功耗曲线M1(t)处处对应一种平均功耗,除执行关键指令时刻外,具有“1”目标比特控制的特征电流功耗曲线外形profil0,可写成M1(t)=[(profil0+profil1)/2]t≠tci+[profil1]tci或者M1(t)=[Vmt]t≠tci+[profil1]tci人们已看到两条曲线profil0和profil1不是相等的。曲线M0(t)和M1(t)差那时产生一种信号DPA(t)其振幅在执行关键指令的临界时刻tci等于profil0-profil1此关键指令可控制该比特,也就是说,在

图1上所表示的实例中,在tc0至tc6的地方,其振幅在临界时刻之外差不多等于零。
如果子密钥的假设是错误的,分类(筛分)就不对应现实性。统计地说,那时在每个信息包中有相同数量的曲线实际看出了“0”目标比特控制以及相同数量的曲线看出了“1”目标比特的控制。那么所得出的平均曲线M0(t)处在由(profil0+profil1)/2=Vm所给出的平均值周围,因为对于每条曲线,所有的受控比特,其中包括目标比特,等于“0”和等于“1”的机会可能性几率是一样的。
对第二信息包的相同推理可导致平均电流功耗曲线M1(t)其振幅处在由(profilo+profil1/2=Vm年给出的平均值周围。
由M0(t)-M1(t)差所提供的信号DPA(t)在此情况下几乎等于零。在错误子密钥假设情况下的信号DPA(t)表示在图2上了。
因此侵扰DPA利用了在按照受控比特值执行指令过程中电功耗曲线差,以便根据针对给出的子密钥假设的布尔选择函数进行分类(选择)电流功耗曲线。进行所得曲线两个信息包之间平均电流功耗的示差分析时,就可得到一个DPA(t)信息信号。
侵把DPA的进程那时总的说来就在于a—取出N个随机信息(例如N等于1000);b—对N个随机信息中的每一个都要利用卡执行算法,同时每一次都要统计电流功耗曲线(在元件供电端子上测量的);c—对子密钥进行假设;d—对每个随机信息预测由其中一个目标比特所选取的值,只值依赖于信息比特(输入的或输出的)及按假设所选取的子密钥,以便得到布尔选择函数;e—根据该布尔选择函数对这些曲线进行分类排序(也就是说根据对于该目标比特为每个曲线按子密钥假设所预测的值“0”或“1”分类);f—在每个信息包中计算由平均电流功耗所得到的曲线;g—求出这些平均曲线的差,以便得到信号DPA(t)。
如果对于子密钥的假设是准确的,布尔选择函数是正确的并且第一信息包的曲线直正对应了这样一些曲线,即,对于这些曲线来说在输入或输出所加的信息给出了卡中“0”目标比特而第二信息包的曲线实际对应了这样一些曲线,即,对于这些曲线来说,输入或输出所加的信息给出了卡中“1”目标比特。
在图1的情况下是信号DPA(t)在对应执行关键指令的时刻tc0至tc6不为零(这些指令控制目标比特)。在目标显示搜索周期中至少有一个临界时刻就够了。
要指出的是侵扰(攻击)者不需要精确地知道临界时刻,如果子密钥的假设不准确,选择分类不对应现实性并且在那种情况下每个信息包中所具有的实际对应“0”目标比特的曲线与对应“1”目标比特的曲线一样多。信号DPA(t)差不多处处为零(图2上所示的情况)。必需返回到步骤C-并且对于子密钥进行新的假设。
如果假设被证实是正确的,就可以进行其它子密钥的佑算,直到最大限度地重设关键码。例如,采用DES算法,可使用64比特的关键码,其中仅56比特是有效的。利用侵扰DPA,人们能够至少重设56个有效比特中的48个比特。
本发明的目的就是在电子元件中采用可引起零信号DPA(t)的对抗方法,甚至在子密钥假设是正确的情况下。
由此可见,什么都不可以从错误关键码的假设情况识别出正确的关键码的假设情况。利用这种对抗,电子元件防止了DPA侵扰。
根据本发明,对抗方法可以使目标比特不能预料,也就是说由关键指令控制的数据不能预料。
事实上,因为对抗,对于每个从输入所加的信息来说,由关键指令所控制的一个目标比特能以相同的几率选取值0或1。侵扰者在给定的子密钥的假设下所作的每个曲线信息包中,借助他要计算的布尔选择函数,就会有一样多的实际上可控制“0”目标比特的曲线和可实际上控制“1”目标比特的曲线。不管子密钥的假设正确或不正确,DPA(t)将总是为零。
在本发明中,特别对密码算法DES感兴趣。
这种算法包括16个相同的计算循环。
在这种算法中,可以明白显示的是,由侵扰者所预料的数据处在第一个循环和最后一个循环,而且在侵扰DPA方面,关键指令处在前三个循环及最后三个循环中。
在本发明中,更具体地找到了一种方法使得由这些前三个循环和后三个循环的关键指令所控制的数据是不能预料的,同时得到了校正的输出密码信息。
因而本发明的一个目的就是使得由关键指令所控制的数据不可预料,同时还得到了校正的最终结果(密码信息C)。
这些不同技术问题的解决方法是在编成组(G1)和另一个组(G4)中找到的,组(G1)至少包括前三个循环,而组(G4)至少包括后三个循环,并且使用这些装置组为的是可使由含在这些循环中的关键指令所控制的数据不可预料。
根据本发明,每组的输出结果都是正确的。
正象特征描述的那样,本发明涉及的是在电子元件中的对抗方法,使用密钥加密算法由输入信息计算密码信息,运用的算法包括16个计算循环,每个循环都利用第一个装置根据输入数据而提供输出数据,输出数据和/或分接引出数据都由前三个循环和后三个循环中的关键指令控制。根据本发明,人们可编成一个至少含有前三个循环的组和另一个至少含有后三个循环的组,并且可把在每个循环中利用第一个装置的第一序列及在至少某些循环中利用其它装置的第二序列与其中每一组相关联,所述第一和第二序列是这样的,即,它们对于同一个指定的输入信息在输出端由每一组最后一个循环可提供相同输出结果,在有关的组中选择要执行的序列随1/2概率统计规律而变化,以便使得由上述关键指令所控制的所有数据都是不可预料的。
在一种实施方式中,可编成四个组,每个组有连续的4个循环。
在另一种实施方式中,可编成分别含有前三个循环和后三个循环的两个组。
本发明的其它一些特征和优点在后面以非限定性的说明实例所作的描述中就更加详细了,还参照了一些附图,图中有—已经描述过的图1和2表示出信号DPA(t),此信号能够按照侵扰DPA,根据对密钥K的分(次)关键码所作的假设而得到;—图3和4是表示算法DES最初循环和最后循环的程序方框图;—图5是算法DES中所使用的SBOX操作方框图;—图6给出了在SBOX操作中使用的输出及输入基本常数表的实例;—图7表示的是采用本发明对抗方法的DES执行程序方框图的第一个实例;—图8是按照图7上所示第一个实例根据对抗方法的第二序列,DES最初循环的程序方框图;—图9和10分别表示本发明中所使用的第二个和第三个基本常数表;—图11表示出采用本发明对抗方法,DES执行程序方框图的第二个实例;—图12和13是分别按照图11所示第二个实例根据对抗方法的第二序列和第一序列的DES最初循环程序方框图;—图14和15是关于本发明对抗方法第三种应用方式的程序方框图;—图16表示出本发明第四种应用方式中所用的第三个基本常数表;—图17表示出根据本发明对抗方法第三种应用方式的一种变型的DES执行程序方框图;以及—图18表示出一种带有电子元件的智能卡简化方框示意图,在该电子元件中使用了本发明对抗方法。
DES密钥加密算法(后面将比较简要地谈到DES或DES算法)包括16个计算循环,标注为T1至T16,如图3和4上所示。
DES对于输入信息M从初始排列IP开始(图3)。输入信息M是64比特的字码f。排列之后,得到64比特的字码e,将其分成两部分以便形成第一循环(T1)的输入参数L0和R0。L0是32比特的字码d,它含有字码e的32个最高有效位比特。R0是32比特的字码h,它含有字码e的最低有效位32比特。
密钥K是64比特的字码q,它本身要进行排列和压缩以便提供56比特的字码r。
第一循环包括对参数R0的操作EXP PERM,包括扩展和排列,以便输出48比特的字码1。
该字码1在标为XOR的异或(0U exclusif)操作中与参数K1相组合,以便提供48比特的字码b。参数K1是48比特的字码m,它是利用移位(在图3和4上标注为SHIFT的操作)从字码r得到的,接着进行排列和压缩(标注为COMP PERM的操作)。
字码b进行标注为SBOX的操作,操作输出得到32比特的字码a。这种特殊的操作将联系图5和6作更详细的说明。
字码a要进行P PERM排列,输出32比特的字码c。
该字码c,在标注为XOR的异或(exclusive OR)逻辑操作中与第一循环T1的输入参数L0相组合,输出32比特的字码g。
第一循环的字码h(=R0)提供下一个循环(T2)的输入参数L1,而第一循环的字码g提供下一个循环的输入参数R1。第一循环的字码P提供下一个循环的输入r。
其它的循环T2至T16都以类似的方式进行,除了有关根据所考虑的循环对一个或两个位置所实现的SHIFT移位操作。
因此每个循环Ti按输入方式接收参数Li-1,Ri-1和r并且以输出方式为后一个循环Ti+1提供参数Li及Ri和r。
DES算法结束(图4),密码信息根据由最后一个循环T16所提供的参数L16和R16进行计算。
密码信息C的这种计算实际上包括如下的操作—在转换字码L16和R16的位置,然后又把它们连结起来时形成64比特的字码e’;—应用与DES初始排列相反的排列IP-1,以便得到可形成密码信息C的64比特字码f’。
在图5和图6上详细描述了SBOX操作。它包括TCo常数表用于提供与输入数据b有关的输出数据a。
实际上,这种TCo常数表具有8个基本常数表TCo1至TCo8,每个表仅输入接收字码b的6个比特,以便仅仅输出字码a的4个比特。
因此,图6上所示基本常数表TCo1接收了字码b的b1至b6比特作为输入数据而输出字码a的a1至a4比特作为输出数据。
其实,这8个基本常数表TCo1至TCo8都被存储在电子元件的程序存储器中。
在第一循环T1的SBOX操作中,常数表TCo的输出数据a的一个特定比特仅仅取决于输入所加的数据b的6个比特,也就是说只与密钥K的6个比特及输入信息(M)有关。
在最后循环T16的SBOX操作中,常数表TCo输出数据a的一个特定比特可仅仅根据密钥K的6个比特及密码信息(C)重新计算。
然而如果重复DPA侵扰原理,如果选择输出数据a的一个比特作为目标比特,则为了预测给定的输入信息(M)或输出信息(C)的一个目标比特值只对密钥K的6个比特进行假设就足够了。换句话说,对于DES,对6比特的子密钥进行假设就够了。
在这种针对给定目标比特算法的DPA侵扰中,则要在64种可能之中鉴别一个正确的子密钥假设。
因此,在仅仅选取字码a的8个比特作为目标比特时(从基本常数Tco1至Tco8表选用的输出比特),就可发现一直到6×8=48个密钥比特,同时对这些目标比特中的每一个进行侵扰DPA。
在DES中,因而找到了在算法开始和结束时侵扰DPA意义上的关键指令。
DES算法开始时,可以根据输入信息M及子密钥假设所预测的那些数据都是在第一循环(T1)中所计算的数据a和g。
第一循环T1的数据a(图3)是所考虑循环SBOX操作的输出数据。数据g是根据数据a,通过排列(PPERM)以及采用输入参数L0的异或操作而计算的。
事实上,第一循环的数据C是从第一循环数据a导出的一个数据。导出数据C对应数据a的比特单一排列。
第二循环的数据1是从第一循环数据g导出的一个数据,因为它对应字码g比特的一种排列,此外,字码g的某些比特还是复制的。
知道了a和g,也就能知道这些导出数据。
算法开始的关键指令是这样一些关键指令,它们或者控制人们能预测的数据,如第一循环的数据a,或控制一种导出数据。
可控制第一循环T1数据a或导出数据c的那些关键指令就是一些SBOX操作结束、PPERM操作结束及第一循环T1的XOR操作开始的指令。
可控制数据g或导出数据的那些关键指令是所有的那些第一循环T1结束时操作XOR停止的指令直到第二循环T2的SBOX操作开始指令以及第三循环T3结束时XOR操作开始的指令(L2=h(T2)=g(T1))。
DES算法结束,可以根据密码信息C及子密钥假设预测的数据是第16循环T16的数据a及等于第14循环T14字码h的数据L15。
可控制第16循环数据a或导出数据的关键指令是那些SBOX操作结束的第16循环、PPERM排列操作及XOR操作开始的指令。
对于数据L15来说,可控制这个数据或导出数据的关键指令是所有那些第14循环XOR操作结束的指令直到第15循环SBOX操作开始的指令以及第16循环XOR操作开始的指令。
应用到这种DES算法的本发明对抗方法主要在于,对每个关键指令来说,关键指令控制数据及控制其补码都有同样多的可能性。因此,不管目标比特如何,针对该目标比特的侵扰DPA都可以实现,控制该比特的关键指令以同样的可能性控制“1”或“0”。
实际上,对于每个潜在的目标比特来说,这一点是确实的换句话说侵扰者可在几个可能的侵扰之间,也就是在几个可能的布尔选择函数之间进行选择以便针对一个给定的子密钥假设进行曲线的分类筛选,本发明对抗方法的使用应该依附于这种情况,即,由每个关键指令所控制的那些数据按二分之一的机会对一个值或其补码进行随机选取。关于本发明对抗方法在DES算法上的应用,必须把对抗用到DES开始的关键指令及DES结束的关键指令,以便完全受到保护。
在DES中,由关键指令所控制的所有数据是一种输出数据或SBOX操作输出数据的导出数据。
事实上,在DES开始时,可以预测的数据都是第一循环T1的数据a和g。数据a是第一循环SBOX操作的输出数据。数据g是根据数据a计算的,因为g=P PERM(a)XOR LO。因而g是由第一循环SBOX操作的输出数据a导出的数据。因此,所有的由DES开始时关键指令所控制的数据都直接或间接地由第一循环SBOX操作的输出数据a引出。
关于DES的结束,可预测的那些数据是第16循环T16的数据a和第14循环T14的数据g,g等于L15。
数据a是第16循环T16的SBOX操作的输出数据。
至于数据L15,它是在正常执行DES算法中根据第14循环T14的SBOX操作的输出数据a而计算的L15=PPERM(a)XORL14。
如果能够使这些特殊SBOX操作的输出数据a是不可预料的,也就能使得所有的导出数据是不可预料的因而使得由DES算法的关键指令所控制的所有数据都是不可预料的。如果考虑到这些SBOX操作构成了第一个装置用于根据输入数据E=b得出输出数据S=a,则用到DES算法的对抗方法主要就在于利用其它装置使输出数据是不可预料的,以致于这种输出数据和/或由关键指令控制的导出数据都是不可预料的。
根据本发明,人们编成两组,一组是由至少前三个循环组成的;另一组是由至少后三个循环组成的。因而这两组包括了所有的含关键指令的循环。
把可以使用适于所有循环的第一种装置的第一序列以及可使用至少适于某些循环的其它装置的第二序列与这两个组相关联。
在其它不属于这两组的循环中,可以继续使用第一种装置。
这些其它装置的使用是这样的,即,输出结果,也就是密码信息可保持是正确的。
这些其它装置可包括几种不同的装置,它们可以使补码数据与第一种装置的输入及输出数据中的一个和/或另一个数据相对应。
因此,考虑到大量的执行,各个组将按平均为二分之一的机会使用第一序列,它是算法的正常序列,而另一半机会使用另一个序列。在这些组中由关键指令所控制的数据,对应某些中间结果,因而将会平均以二分之一的机会进行补码。因而根据大量的曲线,给定的目标比特为1或0将会统计性地具有一样多的可能性。
图7表示出了本发明的第一个实施方式。
在这种实施方式中,把DES算法的16个循环分成各带有4个连续循环的4个组G1至G4,因此组G1包括循环T1至T4,组G2包括循环T5至T8,组G3包括循环T9至T12而组G4包括循环T13至T16。
使两个序列与每个组相关联第一个序列SEQA主要在于使用适于每个循环的第一种装置TC0。第二个序列SEQB使用至少适于某些循环的另外的装置。
在所介绍的实例中,这些另外的装置包括第二种装置TC2和第三种装置TC1。
第二种装置TC2被用在每一组的第二个循环和前-后循环中也就是说被用在G1的T2、T3中;G2的T6、T7中;G3的T10、T11中以及G4的T14和T15中。
第三种装置TC1被用在每个组中的第一个循环和最后一个循环中。也就是说被用在G1的T1、T4中,G2的T5、T8中,G3的T9、T12以及G4的T13、T16中。
实际上,这些不同的装置就是一些常数表。第一种装置对应第一个常数表TC0,它对应DES的正常执行。另外的装置TC1和TC2相对于该第一个常数表TC0以补码方式确定。
第二种装置TC2是,对于输入数据E的补码/E来说,它们提供了第一种装置TC0输出数据S的补码。对应于第一个基本常数表TC01的第二个基本常数表的实例表示在图9上了。要指出的是在文中所用的补码/E的符号(标记)对应图上补码数据上面带有横杠的符号标记。
第三种装置是对于输入数据E来说,它们提供第一种装置TC0输出数据S的补码/S。对应第一个基本常数表TC01的第三个基本常数表TC01的实例表示在图10上了。
执行算法开始时,计算程序主要在于抽取一个等于0或1的随机值RND1,然后检验该RND1值。在实例中,如果RND1为1就在对G1至G4的每一组使用第二序列SEQB时进行计算。
如果RND1为0,就在对每一组使用第一序列的同时进行计算。
不管使用第一或第二序列,都可在每组的输出得到输出参数的正确结果。因此,第一组G1的输出参数L4和R4,第二组G2的输出参数L8和R8,第三组G3的输出参数L12和R12,第四组G4的输出参数L16和R16,不管使用的序列如何都是正确的。
当完成了所有的循环时,就得到正确参数L16和R16,它们将可以计算正确的密码信息C。
相反地,在各组内,某些中间结果根据所用的序列都不具有相同的值,而是一些互补值,正如参照图3和8所指出的那样。
已经描述过的图3事实上对应的是在第一序列SEQA中第一组G1的4个循环T1、T2、T3及T4的计算程序方框图。
图8指出了在第二序列SEQB中第一组G1的4个循环T1、T2、T3及T4的详细程序方框图。
在该第二个序列中,循环T1使用第三种装置TC1。在SBOX操作输出得到了数据/a(图8),不是采用第一序列SEQA的数据a(图3)。
因而属于单一排列的循环T1的P PERM操作也将在输出提供一个相对于序列SEQA的补码信息/C。
数据g是利用在补码数据/C与非补码数据L0之间的异或方式得到的,它也能以输出方式提供一个补码数据/g。
因此,利用循环T1的第三种装置,可得到所有下面相对采用序列SEQA所得数据的补码数据—在循环T1中/a、/c、/g;—在循环T2中/R1、/h、/l、/b;—在循环T3中/L2那时就到达循环T2中所使用的第二种装置TC2。按照其定义,在应用补码数据/b的同时,就可在输出得到补码数据/a。在把该推理一直引伸到循环T4结束时,同时要注意到在两个补码数据之间的异或产生一个非补码结果(例如在循环T4中/L3XOR/C=g),就可在循环T4输出得到非补码数据L4、R4。
此外,大家可观察到对于DES开始的所有关键指令来说,关键指令将以随机方式根据RND1数据来控制数据或其补码,这要依照所执行的序列是第一序列SEQA或是第二序列SWQB而定。
因而在该第一种实施方式中对抗方法是非常引人注目的。在DES的计算程序中只需两种补充性的操作,它们是随机值抽样及该值的检测。程序存储本身应包括三种不同的所用装置,也就是三个常数表TC0、TC1、TC2。
再回到图7,将要指出的是在中间组G2和G3中不需要对抗,因为这两组不含有DPA侵扰意义上的关键指令。因而将只把采用其两个序列SEQA及SEQB的对抗方法应用到第一组G1和最后一组G4。只需有步骤地把第一序列SEQA应用到组G2及G3就够了。
但是,由于把对抗方法应用到所有各组而使整体系统具有一致性。
因此,最好把两个序列SEQA及SEQB与组G1至G4中的每一组相关联。
本发明对抗方法的第二种实施方式表示在图11上了。该第二种实施方式实际上是第一种实施方式的变型。这种变型的好处是只使用第二种装置TC2作为序列SEQB中的其它装置。其实,人们已看到不同的装置TC0、TC1、TC2实际上对应的是那些常数表,每个表又含有8个基本常数表,这就占用了不可忽略的程序存储空间。
因而这种变型主要在于只单独使用序列SEQB中的第二种装置TC2。为此,在每组的最前和最后循环的计算程序中设计了一种补充操作CP以便对输到第二种装置的输入数据进行补码。这种补充操作CP实际上是采用1逻辑的输入数据的一种异或。如果参照图12,该图表示出第一组G1中4个循环T1到T4的第二个计算序列SEQB的详细程序方框图,这涉及到对数据b的补码,是在循环T1和T4的SBOX操作输入应用该数据之前进行的补码。因为第二种装置TC2可对输入进行补码,所以求补操作CP加之第二种装置TC2就相当于在本发明第一个实施方式中所使用的第三个装置TC1,也就是说等效于输出一个未补码的数据。
但是为了使第二个实施方式的对抗方法是有效的,必须要指令数本身是准确的,不管所用的计算序列如何。事实证明,如果在两个可能的序列SEQA及SEQB之间存在任何一种差异,那就将会出现有成效的DPA侵扰的可能性。
正因为如此,并且如同图13上所表示的那样,在第一序列SEQA的循环T1和T4中设计一个相同复制操作ID,它主要包括SBOX操作输入采用0逻辑的一种异或,为的是在应用与补充操作CP相同的指令时不改变输入数据。
这样,就会在两个序列中有相同的指令数。
图14表示本发明对抗方法的第三个实施方式。
在该实施方式中,编成含有前三个循环T1、T1、T3的第一组G1和含有后三个循环T14、T15、T16的另一组G4。把第一序列SEQA和第二序列每个组相关联,该第一序列可使用适于每个循环的第一种装置TC0,而第二序列可使用至少适于某些循环的其它装置。
每个组G1、G4的输出可得到正确的输出结果L3、R3及L16、R16,不管所用序列SEQA或SEQB如何。
在实例中其它装置是与第一个实施方式有联系的已参看过的第三种装置TC1以及第四种装置TC3。
该第四种装置TC3是相对第一种装置TC0确定的,如同使输出数据S与输入数据E的补码/E相对应。相应的基本常数表TC31表示在图16上。
对于其它未包括在各组中的循环,也就是说,对于循环T4至T13,可应用第一种装置TC0。
因此,在抽取随机值RND1以后,就检验该值以便确定要应用到第一组的序列,利用计算过的参数L3、R3继续输出,同时利用第一种装置TC0执行后面的循环。循环T13结束,把由随机值RND1所确定的序列应用到组G4。得到参数L16、R16将用于计算密码信息C。
图15是适于第二序列SEQB的详细的相应程序方框图。
该程序方框图上可清楚地看出得到了对于这些循环所有关键指令的补码数据(补码是用数据上的横杠标记的)。第三个循环的输出数据L3和R3未补码。可继续执行算法,同时达到循环T4,根据正常执行算法把第一种装置TC0应用到该循环。
在这个图上,人们可注意到在第三个循环T3的SBOX操作中,将能够使用第一个装置TC0代替第三个装置TC1,同时在SBOX操作输出端设计一个补码的补充操作CP。这是一种等效的解决办法。
那时必须使得在序列SEQA中相同复制的补充操作与序列SEQB中补码的补充操作相对应。
图17表示可利用该变型的执行程序方框图。对于两个组G1和G4的第三个循环来说,在第一序列SEQA中使用了接连复制补充操作ID的第一个装置TC0,这标注为T3(TC0,ID)。在第二序列SEQB中,对于第三个循环使用了第一个装置,它在输出处接连补码的补充操作CP,这标注为T3(TC0,CP)。
因此,第二个实施方式和第三个实施方式的这种变型表明了不同装置的输入或输出补充操作的使用。即,所用装置的输入或输出。在第一序列SEQA中相同复制ID的补充操作那时对应第二序列中每个补码的补充操作CP。
本发明适合DES密钥加密算法,描述了该算法的几种非限定性的实施例。这种算法通常都是按照16个计算循环的密钥加密算法实施的,其关键指令处在前三个循环或后三个循环的指令之中。
电子元件1可采用本发明按DES密钥加密算法的对抗法,它典型地如图18所示包括一个微处理机μP,一个程序存储器2及一个工作存储器3。为了能够管理本发明不同装置TC0、TC1、TC2的使用,这些装置实际上是一些程序存储器存储的常数表,设计了0与1之间的随机值生成装置4,如果联系到图7和11的程序方框图,可看出此装置在每次执行DES时能提供RND1值。这种电子元件可具体地用到智能卡5中,以便提高其不可侵犯性。
权利要求
1.采用密钥(K)加密算法的电子元(部)件中的对抗方法,该算法用于根据输入信息(M)来计算密码信息(C),算法的运用包括16个计算循环(T1……,T16),每个循环都使用第一个装置(TC0)以便根据一个输入数据而提供一个输出数据,输出数据和/或导出数据由前三个循环(T1、T2、T3)和后三个循环(T14、T15、T16)中的关键指令控制,其特征在于编成一个组(G1)至少含有前三个循环和另一个组(G4)至少含有后三个循环,其特征还在于把第一个序列(SEQA)及第二个序列(SEQB)与这两个组(G1和G4)中的每一个组相关联,第一个序列在每个循环中都使用第一个装置TC0,而第二个序列在至少某些循环中使用另外的装置(TC1、TC2、TC3),所述的第一和第二序列是这样的,即,它们对于同一个给定的输入信息(M)在输出端由每个组最后循环可提供相同输出结果,选择在相关组中要执行的序列要随着一半几率的统计规律而变化,使得由上述关键指令所控制的所有数据都是不可预料的。
2.根据权利要求1所述的对抗方法,其特征在于其它的装置是要能够对第一个装置的输入数据(E)和/或输出数据(S)中的一个和/或另一个或两个进行补码。
3.根据权利要求2所述的对抗方式,其特征在于第二个序列(SEQB)对于一个或几个循环来说都包括一种在所用装置输入或输出端上的补码的补充操作(CP),其特征还在于在第一个序列(SEQA)中相同复制(ID)的补充操作与第二个序列中的每一个补码补充操作相对应。
4.根据上述权利要求中任一权利要求所述的对抗装置,其特征在于编成四个组(G1……,G4),每组有四个连续的循环(T1……,T4),特征还在于,把第一序列(SEQA)与每个组相关联,特征再在于把第二序列(SEQB)至少与第一组(G1)和最后一个组(G4)相关联。
5.根据权利要求4所述的对抗方法,其特征在于,第二序列(SEQB)与每个组(G1……,G4)相关联。
6.根据权利要求1至3中任一权利要求所述的对抗方法,其特征在于第一组(G1)是由前三个循环(T1、T2、T3)形成的,特征还在于最后一组是由后三个循环(T14、T15、T16)形成的。
7.根据上述权利要求中任一权利要求所述的对抗方法,其特征在于选择要执行的序列是在开始执行算法时通过一个随机值(RND1)的抽样而完成的,被选择的序列可用在每个有关的组中。
8.根据上述权利要求中任一权利要求所述的对抗方法,其特征在于不同的装置是些常数表。
9.采用根据上述任一权利要求所述对抗方法的安全可靠的电子元件,其特征在于可利用输入数据提供输出数据的各种装置(TC0、TC1、TC2)是按所述电子元件的程序存储而固定的,其特征还在于它包括0或1随机值(RND1)的生成装置(4)用于管理所述不同装置的使用。
10.含有根据权利要求9所述安全可靠电子元件的智能卡。
全文摘要
本发明涉及一种采用密钥K加密算法的电子元(部)件中的对抗方法,该算法有16个计算循环,由输入信息(M)提供输出一个密码信息(C),每个循环都使用第一个装置以便由一个输入信息得到一个输出信息,所述方法主要在于选择一个利用第一个装置的序列或利用其它装置TC
文档编号G06F21/06GK1328733SQ99812248
公开日2001年12月26日 申请日期1999年9月15日 优先权日1998年10月16日
发明者克里斯多弗·克拉维尔, 奥利维尔·本诺伊特 申请人:格姆普拉斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1