块密码实现方式中的s-box加密的制作方法

文档序号:7853878阅读:513来源:国知局
专利名称:块密码实现方式中的s-box加密的制作方法
技术领域
本发明涉及使用块密码(block cipher)的加密与解密技术,具体来讲涉及其中S-box的实现方式。本发明在诸如安装在智能卡以及其他装置中的那些密码装置(其在诸如差分功率(differential power)分析的密码分析技术方面有着明显的弱点)中具有特殊的应用,不过不是排他的,以便在装置运算期间获得侧通道(side channel)信息。
背景技术
许多密码装置使用诸如智能卡的装置上的微处理器以及相关联的逻辑来实现。许多功率分析技术被广泛地用于从智能卡中获得数据,其中所述智能卡往往在通常的输入和输出运算过程中以其他方式被安全地加密。具体来讲,执行对加密或者解密运算的逻辑的功率消耗的分析可用来确立在加密或者解密运算中所使用的轮回密钥(roundkey),例如在以下文献中所描述的那样,即Kocher等人的“DifferentialPower Analysis”,www.cryptography.com,以及Messerges等人的“Investigations of Power analysis Attacks on Smartcards”,于1999年5月在对智能卡技术的USENIX专题研究组的会议记录的第151-161页中记载。
具体来讲,存取用于数据加密标准(DES)以及高级加密标准(AES)的块密码的S-box(s-框)的“look-up(查找)”操作在功率分析技术方面有着明显的弱点,并且由于它们的非线性的字符,所以使用S-box难以防止定义的侧通道攻击。
在现有技术中,WO 00/46953已经提出了将S-box分解为两部分的方案,但是在确定的应用中,诸如在智能卡上的密码装置的实现上,这样做比平常更加易于利用或者合乎需要要求更多的存储器。

发明内容
本发明的目的在于提供一种广泛适用于块密码的加密与解密技术,其使执行密码运算的密码逻辑电路、特别是S-box减少易受功率分析攻击的弱点。
依照一个方面,本发明提供了一种在实现密码算法的密码引擎中执行加密和/或解密的方法,包括以下步骤通过执行地址修改函数以修改用于对所述S-box的查找操作的输入地址,并且通过执行数据修改函数以便修改从所述S-box输出的作为所述查找操作结果的数据,来从加密的S-box中检索数据,所述地址修改函数以及数据修改函数被选择来补偿S-box的加密。
依照另一方面,本发明提供了一种在实现密码算法的密码引擎中执行加密和/或解密的方法,包括以下步骤a)在S-box中加密所述数据以及用于存取所述数据的地址单元;b)定义相应的地址修改函数以及数据修改函数,以便补偿在S-box中数据以及地址单元的加密;c)从加密的S-box中检索数据,使用所述地址修改函数来修改用于对所述S-box的查找操作的输入地址,并且执行数据修改函数以便修改从所述S-box输出的作为所述查找操作结果的数据;并且d)利用新的加密函数周期地重复步骤a)-c)。
依照再一方面,本发明提供了一种密码引擎,包括加密的S-box,用于与加密函数相重叠地并且依照预先确定的密码变换来提供预先确定的数据,所述预先确定的数据作为输入值的函数而输出;用于从加密的S-box中检索数据的装置,所述检索通过执行地址修改函数来修改用于对所述S-box的查找操作的输入地址来实现,以及用于执行数据修改函数以便修改从所述S-box输出作为所述查找操作结果的数据的装置,所述地址修改函数以及数据修改函数被选择以便补偿S-box的加密。


现在将参照附图、通过举例来描述本发明的实施例,其中图1是举例说明实现使用DES块密码算法的加密运算的流程图;图2是举例说明在图1过程中部署的S-box查找操作的详细流程图;图3是举例说明加载S-box的示意图;图4是举例说明对S-box的查找操作的示意图;图5是图1的DES算法实现的S-box结构的示意图;图6是AES块密码算法的S-box结构的示意图;
图7是举例说明在图1的DES加密过程中常规的加密轮回的详细流程;图8是举例说明依照本发明一个实施例修改的DES加密轮回的详细流程图;图9是举例说明DES解密过程中的常规解密轮回的详细流程图;图10是举例说明依照本发明一个实施例修改的DES解密轮回的详细流程图;图11是举例说明依照本发明一个实施例修改的AES加密运算的示意图;图12是举例说明依照本发明一个实施例修改的AES解密运算的示意图;图13是密钥调度运算的示意图。
具体实施例方式
DES算法实现现在依照DES块密码环境来描述本发明的第一详细实现方式,将其在图1中以流程图的形式示意性地示出了。在图中,信息流线条表明在每个信息流中转送的数据位的数目。
DES块密码接收每个64位的明文分组10。每个64位分组10进行初始置换(IP)函数12,其中预先确定的位被移到预先确定的新的位的位置。此运算的输出被划分为两个32位块140和150,分别称为左块L和右块R。在第一轮回中,将这些块表示为L0和R0。
然后对左右块L和R进行16次顺序的轮回的操作。在每个轮回中,在141,将右块R无变化地转送到新轮回的左块,例如转送到L1。
所述右块还用于生成左块中的变换。为此目的,在161,在密码函数运算f中,将32位的右块R0与第一密钥RK1组合,这部分内容将参照图2更加详细的描述。将密码函数运算f的32位输出在XOR运算171中与32位的左块L0组合起来,以便在151形成新的右块R1。
对起始于140、150的左右块重复所述过程达16次轮回以上、直到1416和1516。在每次轮回中,使用了不同的48位密钥RK1到RK16,它们是依照密钥调度算法从64位DES密钥导出的。
在16次轮回结束时,在18将处于1416和1516的左右块L16和R16重新组合为64位块,其中初始置换函数的逆-IP-1将这些块的位重新排列到最终的密文输出块19。
参照图2,在161到16n,现在将描述密码函数f的实现方式。
仅仅通过复制确定的预先确定的位的位置,将显示在21的32位右块Rn扩展为显示在22的48位块R′n。然后,将显示在20处的48位轮回密钥RKn+1在XOR函数23中与扩展的右块21组合,以便生成48位输出值24。将此输出值分为八个6位块,240...247。将每个6位块用作到相应的S-box(查找表)260到267的输入,以便生成相应的4位输出280到287,这些输出被组合以便形成32位块28。将块28输入到预先确定的置换函数29,以便生成32位输出,所述输出在XOR(异或)函数18n中与Ln(图1中的块14n)组合,以便生成右块Rn+1(图1中的块15n+1)。
在DES算法的许多硬件实现方式中,S-box是可经常从ROM或者闪存下载到密码引擎中的。本发明提供了对下载的S-box S0到S7的加密。
参照图3,每当将S-box 26从ROM下载到密码引擎时,将查找表的地址与随机值RAI进行XOR组合,并且将下载的数据与随机值RDI进行XOR组合。如图2所示,每个S-box地址是6位的,而每个数据输出是4位的。由此,对于所有组合的八个S-box来说,RAI值是48位宽,称为RA,而RDI值是32位宽,称为RD。由此,将会认识到S-box中的数据位置及其值已经被加密了。
由此,总体而言,存储在S-box中的数据依照数据修改函数来修改,并且数据的地址依照地址修改函数来修改。在优选的实施例中,所述数据修改函数包括数据与预先确定的随机值的XOR组合。在优选的实施例中,所述地址修改函数包括地址与预先确定的随机值的XOR组合。
为了从加密的S-box中恢复数据,在图2中的查找操作期间,必须首先将地址值240到247与相应的随机值RAI进行XOR组合,并且必须将数据输出值280到287与相应的随机值RDI进行XOR组合,以便给出与常规的S-box相同的结果。此运算在图4中举例说明。
由此,总体而言,在查找操作期间,查找的地址值依照地址修改函数来修改,并且从查找操作输出的数据依照数据修改函数来修改。在优选的实施例中,所述数据修改函数包括数据输出与预先确定的随机值的XOR组合。在优选的实施例中,所述地址修改函数包括地址输入与预先确定的随机值的XOR组合。
然而在本发明的优选的实施例中,在S-box的输入和/或输出不直接应用XOR函数(或者其他修改函数),而是在其他位置应用,以便确保当已经重新加载了S-box时,密码引擎中的寄存器与逻辑内容将发生变化。
图7示出了常规的DES加密轮回的简化图示。寄存器14,15均包含32位。在扩展器22中将R扩展为48位,并且R与用于该轮回的48位轮回密钥RKn进行XOR组合。这是到8个未加密S-box 26的输入。未加密S-box的32位输出被置换29,然后与L寄存器14的内容进行XOR组合,以便导出用于下一轮回的R的新值。寄存器15中的R的旧值被移位到L寄存器14中,以便下一轮回使用。
比较起来,图8示出了依照本发明一个实施例修改的DES加密轮回。在此结构中,S-box 80在依照结合图3描述的过程将其加载期间被加密了。为了补偿S-box 80的加密,在到加密的S-box 80的输入插入附加的地址修改函数81。然而,不同于结合图4描述的加密的S-box的查找方法,依照此结构,不立即将从加密的S-box输出的数据通过数据修改函数进行解密。当将寄存器15中的R数据块转送到寄存器14中的L数据块时,将数据修改函数82插入在置换函数29之后。
所述地址修改函数81还可以插入到密钥存储器自身和轮回密钥产生器之间,这还将保护轮回密钥的生成。
在图8的方案中,分别用于所述地址修改函数和数据修改函数的数据值RAI和RDI(图3)分别由数据值C和D代替,对于所有的i都如此(即8个S-box)。选择C和D的值来将数据修改函数82的延迟补偿到后续轮回中。
RD是32位随机值。首先,我们选择RA=Expd(Perm(RD)),其中Expd是DES扩展函数22(图2),并且Perm是置换函数29(图2)。此运算不需要进一步的硬件,因为置换函数只不过是交换这些位,并且扩展函数只不过是复制所选数据位。
优选的是,如此来选择C和D,以便使L和R寄存器14、15始终与标准DES相差随机值(除了第一和最后的轮回)。这意味着当这些数据值在后续块加密中改变时,R和L寄存器的内容将不同于在前的块加密运算。此外,其他逻辑元件的输出也将不同。倘若随机常数RD经常改变的话,这使得对加密系统的直接侧通道攻击很难或者不可能。
下面的表1给出每个加密轮回的示例性的C和D的值。列LnLNn和RnRNn表明与标准DES算法的实现方式相比、寄存器L和R的内容之间的差值。注意,除了首尾,重复了4个轮回。
表1常数C和D的选择

正如可以从表与看到的那样,D或者是RD或者是0。C可以具有三个可能的值,Expd(RD)、Expd(Perm(RD))和Expd(RDPerm(RD))。其中,只有最后一个要求附加的硬件,即32个XOR逻辑门。寄存器L和R用三个可能的值来改变rd、Perm(RD)和RDPerm(RD)。
现在参考图9和10,现在将描述解密轮回。与加密运算相比,在解密中,左右寄存器14,15被反过来,并且依照与XOR运算23相反的次序(RK16降至RK1)来施加48位轮回密钥。图9示出了常规的DES解密运算。
图10示出了依照本发明优选实施例修改的相应解密运算,是对图8的加密轮回的补充。施加相同的校正项来获得C和D。
三重DES算法实现已经描述了适合于DES算法的优选实施例。本发明还可以被施加到三重DES算法。
三重DES加密包括三个部分DES的16次加密轮回,继之以利用不同的轮回密钥组进行16次解密轮回,以及利用又一个加密轮回密钥组进行另外的16次加密轮回。
在本发明的一个实施例中,常数C和D可以用于这三个部分的每一个部分。然而,应注意的是,在每个部分结束时,寄存器L和R不通过随机值修改,由此引入易受攻击的可能性。
由此,在进一步的优选实施例中,常数C和D对于三重DES实现方式来说被稍微修改。除第三部分的最后两次轮回之外,对于所有其他轮回来说,常数D保持为零。在这种情况下,对于16和32轮回也重复表1中的四个轮回模式。在16轮回,L和R寄存器两者都与常规三重DES实现方式相差随机值RD。交换这些值,由于后续解密轮回,对生成校正项C和D没有什么影响。
在过渡到第三部分时、即32轮回同样如此。为了在加密结束时在L和R寄存器中获得校正值,我们必须使C46和D46分别等于C14和D14,如表1所示,并且同样必须使C47和D47分别等于C15和D15。
实际上,RD可以从32位线性反馈移位寄存器生成。在复位之后,依照预先确定的协议,它将运行达某一随机时间段之久。作为选择,RD可以通过任何类型的随机发生器生成。
在预先确定数量的加密或者解密之后,根据攻击的风险或者依照用户的偏爱来更新RD的值。在那个时候,S-box再次被重新加载与RD进行XOR组合的数据以及与RA=Expd(Perm(RD))进行XOR组合的地址。应理解的是,更加频繁地为S-box重新加载新近加密的数据,以增加处理时间为代价增加了密码系统的安全性。
常数C和D的计算在下文中,用引号(′)表示正常DES的值。这样就能够更加容易看到哪些是必须被校正的。
对于正常S-box来说,施加
·SBoxlnn′=Expd(Rn′)RKn·Rn′=Perm(SBoxn-1)′L′n-1·Ln′=Rn-1′。
原始以及修改的S-box的内容以及地址具有以下关系1.SBoxlnn′=SBoxlnnRA2.SBoxn′=SBoxnRD。
对于修改的DES方案来说,施加Rn=Ln-1Perm(SBoxn-1)==Ln-1Perm(SBox′n-1)Perm(RD)=R′nL′n-1Ln-1Perm(RD)Ln=Rn-1Dn-1SBoxlnn=Expd(Rn)RKnCn==Expd(Rn)RKnCnExpd(Rn′)RKnSBoxlnnRA因此,Cn=Expd(Rn)Expd(Rn′)RA=Expd(L′n-1Ln-1)Expd(Perm(RD))RA。
对于轮回1和2我们选择D=RD,对于其余轮回选择D=0,除了最后的2个轮回。此外,我们选择Expd(Perm(RD))=RA。
现在,我们已经找到以下关系Rn=R′nL′n-1Ln-1Perm(RD)Ln=Rn-1Dn-1Cn=Expd(Ln-1Ln-1)for n>0C0=RA=Expd(Perm(RD))此外,我们因DPA具有以下要求Ln≠Ln′except for n=0 and n=16Rn≠Rn′except for n=0 and n=16Rn=R′nL′n-1Ln-1Perm(RD)Ln=Rn-1Dn-1
Rn+1=R′n+1L′nLnPerm(RD)Ln+1=RnDn=R′nL′n-1Ln-1Perm(RD)Dn=L′n+1L′n-1Ln-1Perm(RD)DnRn+1R′n-1=L′nLnPerm(RD)Ln+1L′n+1=L′n-1Ln-1Perm(RD)DnRn+2R′n+2=L′n+1Ln+1Perm(RD)=L′n-1Ln-1DnLn+2L′n+2=L′nLnPerm(RD)Dn+1Rn+3R′n+3=L′n+2Ln+2Perm(RD)=L′nLn Dn+1=R′n-1Rn-1Dn-1Dn+1Ln+3L′n+3=L′n+1Ln+1Perm(RD)Dn+2==L′n-1Ln-1DnDn+2在4次轮回之后存在重复,除了所述常数。
Rn+3R′n+3=R′n-1Rn-1Dn-1Dn+1Ln+3L′n+3=L′n-1Ln-1DnDn+2如果我们知道最初4次轮回的关系,那么我们知道所有轮回的关系R0RD′=0L0LD′=0对于3个随后的轮回,我们使用公式Rn+1R′n+1=LnL′nPerm(RD)Ln+1L′n+1=RnR′nDnRound 1 D0=RDR1R′1=L0L′DPerm(RD)=Perm(RD)L1L′1=R0R′0D0=RDRound 2 D1=RDR2R′2=L1L′1Perm(RD)=RDPerm(RD)L2L′2= R1R′1D1=RD=RDPerm(RD)Round 3 D2=0R3R′3=L2L′2Perm(RD)=RDL3L′3=R2R′2D2=RDPerm(RD)对于以下轮回,我们将使用公式
Rn+3+R′n+3=Rn=1R′n-1Dn-1Dn+1Ln+1L′n+1=Rn-1R′n-1DnRound 4,8 and 12 D3=0;D7=0;D13=0;R4R′4=R0R′0D0D2=RDL4L′4=R3R′3D3=RDRound 5,11 D4=0;D6=0R5R′5=R1R′1D1D3=Perm(RD)RDL5L′5=R4R′4D4=RDRound 6,10 and 14 D5=0;D9=0;D13=0R6R′6=R2=R′2D2D4=Perm(RD)RDL6L6=R5R′5D5=RDPerm(RD)Round 7 and 11 D6=0;D10=0R7R′7=R3R′3D3D5=RDL7L′7=R6R′6D6=RDPerm(RD)我们希望到最后时,L16=L′16并且R+16+=R′16Round 15 D14=RDR15R′15=R11R′11D11D13=RDL15L′15=R14R′14D14=Perm(RD)Round 16 D15=RDR16R′16=R12R′12D12D14=RDD14=0L16L′16=R15R′15D15=RDD15=0所述S-box通常在随机存取存储器(RAM)中实现,但是作为选择,可以使用可以预先设置的锁存器来实现,其不需要从ROM或者闪存中加载。
在预置之后(其中所述锁存器具有预先规定的初始状态),加载S-box,如此使得在地址ARA处,数据被与RD相异,但是RA和RD被预置为固定数据值(其可以是零)而不是随机数据值。
取代来自于ROM或者闪存的数据的是,来自于S-box的数据也可用于以在地址A+RA’的加密数据(RD′)重新加载。
因此,我们需要5位地址计数器(A)以及两个32位寄存器(D0和D1)来依照以下算法临时存储中间数据
for A=0 to 31 do{ D0=SBox{A]D1=SBox[ARARA′]SBox[A]=D1RDRD′SBox[ARARA’]=D0RDRD′}总之,对于范围0...31中的每个地址来说,我们在地址A以及地址ARARA’都读取S-box,并且在D0和D1中存储数据。然后,我们将新的加密数据D1RDRD’写到地址A,并且将新的加密数据D0RDRD’写到地址ARARA′。这样做具有以下效果,所述地址利用RA’而不是RA来加扰,数据利用RD′而不是RD加扰。唯一的要求是RA和RA′的最高有效位不同,如此使得ARARA′始终在范围32...63中。
高级加密标准实现方式本发明的原理广泛适用于DES和AES算法这二者。
如上所述的原理因此能在修改AES算法中加以部署。虽然DES算法使用8个S-box 500...507,每个均具有六个输入和四个输出(图5中示意性地示出了),但是所述AES算法还可以使用具有八个输入和八个输出的1个S-box。可以将8个S-box 500...507依照共享同一存储器的方式组合起来,由此节省硬件资源。
图6中示出了用于AES的这种S-box实现方式。到S-box 600...607的输入是相同的,对应于所述地址的最低六位Din(5:0)。偶数的S-box600、602、604...给出数据输出7:4,奇数的S-box 601、603、605...给出输出3:0。多路复用器62多路复用每个S-box对的八个输出,同时地址输入的最高两位Din(7:6)选择哪对S-box输出被实际用于生成八位输出Dout(7:0)。
图11示出了使用根据本发明的加密的S-box的AES加密运算的优选实施例的示意图。在图表中,应理解的是,过程步骤100到109相当于AES密码算法的常规的过程步骤,已经依照本发明的优选实施例将步骤110到112加入其中。换言之,如果地址修改常数C在步骤110和111是0,并且数据修改常数D在步骤112是0,那么所述过程还原到常规的AES密码算法。
在密码算法的初始轮回中,明文输入块100作为AddRoundKey(添加轮回密钥)变换101的输入被提供。所述AddRoundKey变换包括以下步骤将128位输入块100与128位RoundKey(轮回密钥)进行XOR组合,并且构成AES算法的第一轮回。
除了最后的轮回外,对于每个后续轮回(对于包括128位的输入块来说存在九个),轮回过程115包括(i)SubBytes(子字节)变换102,其通常根据用于实现乘法逆和仿射(affine)变换的S-box查找操作来执行;(ii)ShiftRows(移动行)变换103,其包括表示为4×4矩阵的16字节(128位)块中每行的循环左移;(iii)MixColumns(最大列)变换104,用于依照预先确定的多项式函数变换每个列;以及(iv)AddRoundKey变换105,用于通过将从MixColumns变换的输出与当前轮回密钥XOR组合来为后续轮回生成新轮回密钥。
在进入最终轮回120以前、此过程115(在判定框106的控制下)执行九次,其中省略了MixColumns变换。
与早先描述的DES实施例相似,用于SubBytes变换102的S-box已经依照地址修改函数加以修改。在所描述的优选的实施例中,所述地址修改函数包括对查找表的地址与随机值RA进行XOR组合。同样地,S-box中的数据已经依照数据修改函数修改。在优选的实施例中,所述数据修改函数包括对数据与随机值RD进行XOR组合。
因为SubBytes S-box的修改的内容,以下关系必须满足SubBytes查找地址,br,c=b′r,cRASubBytes输出,Cr,c=c′r,cRD在第一轮回101中,地址修改常数C=RA。
在编号为2...Nr-1的后续轮回115中,其中N是输入块100大小所需要的轮回数目,来自ShiftRows变换103的输出是d=ShiftRows(c)。
因为此运算仅仅在一行内交换字节,所以数据不改变。因此,dr,c=d′r,cRD来自于MixColumns的输出变换,e=MixColumn(d)。
er,c=e′r,cRD.
a=eRoundKey=e′RDRoundKey=a’RDbr,c=ar,cC=a′r,cRDCbr,c=b’r,cRA=a’r,cRA,因为对于标准AES而言C=0.
它遵循RDC=RA.
C=RDRA当我们选择RD=RA,C=0时,没有任何校正要做。
将所有数据与RD进行XOR组合。如此当RD被有规则地改变时,所有数据都被随机地改变,由此使得进行差分功率分析称为不可能。
在最终轮回中,所述输出数据必须变成等于标准AES算法的输出。这意味着我们必须向每个字节添加D=RD。
在所描述的实施例中,不改变密钥。
在密钥调度的一些周期期间,所述密钥经历SubByte变换。在优选的实施例中,将相同的硬件用于此变换。在该情况下,在将密钥输入S-box以前,将其与RD进行XOR组合,并且还将所述输出与RD进行XOR组合。
概括地说,在优选的实施例中,我们选择RD=RA。在第一轮回中,C=RD。在中间轮回中,C=0。在最后的轮回中,D=RD。所有数据与标准AES算法相比相差RD。由此,RD的规律性的改变使数据改变,并且将给出不同的功率分析当前踪迹。
图12示出了使用根据本发明的加密S-box的解密运算的优选实施例的示意图。在图表中,应理解的是,过程步骤120到129相当于AES解密算法的常规的过程步骤,已经将步骤130到132依照优选实施例加入其中。换言之,如果地址修改常数C在步骤130和131是0,并且数据修改常数D在步骤132是0,那么所述过程还原到常规的AES解密算法。
在所述算法的初始轮回中,密文输入块120作为AddRoundKey变换121的输入被提供。所述AddRoundKey变换包括以下步骤将128位输入块100与128位RoundKey进行XOR组合,并且构成AES解密算法的第一轮回。
除了最后的轮回外,对于每个后续轮回(对于包括128位的输入块来说存在九个),轮回过程135包括(i)InvShiftRows变换122,其是ShiftRows变换103的逆运算;(ii)InvSubBytes变换123,其是SubBytes变换102的逆运算;(iii)InvMixColumns变换125,其是MixColumns变换104的逆运算;以及(iv)AddRoundKey变换124,用于通过将从InverseSubBytes变换的输出与当前轮回密钥进行XOR组合来为后续轮回生成新轮回密钥。
在进入最终轮回140以前、此过程115(在判定框126的控制下)执行九次,其中省略了InvMixColumns变换。
与早先描述的DES实施例相似,用于InvSubBytes变换123的S-box已经依照地址修改函数修改了。在所描述的优选实施例中,所述地址修改函数包括将查找表的地址与随机值RA进行XOR组合。同样地,S-box中的数据已经依照数据修改函数修改。在优选的实施例中,所述数据修改函数包括对数据与随机值RD进行XOR组合。
因为InvSubBytes S-box的修改的内容,以下关系必须满足cr,c=c’r,cRAdr,c=d’r,cRD在第一轮回中,C=RA。
ar,c=a’r,cbr,c=ar,cC=a′r,cC=b’r,cC,因为a’r,c=b’r,cc=InvShiftRows(b)因为此运算仅仅在一行内交换字节,所以数据不改变。因此,cr,c=c′r,cC.
因此对于第一轮回,我们必须选择C=RA。
在每个后续轮回2...Nr-1中,InvSubByte的输出施加dr,c=d’r,cRDe=dRoundKey=d’RDRoundKey=e’RDa=InvMlxColumns(e).
ar,c=a’r,cRDbr,c=ar,cC=a’r,cRDC=b’r,cRDC因为b’r,c=a’r,cc=InvShiftRows(b)
因为此运算仅仅在一行内交换字节,所以数据不改变。因此,cr,c=c’r,cRDC.
这样必须使Cr,c=C′r,cRA。
现在,对于加密,我们挑选,C=0并且RD=RA。
将所有数据与RD进行XOR组合。如此当RD被习惯性地随机改变时,所有数据也将随机地改变,由此使得差x分功率分析不可能进行。
此外,对于最终轮回来说,我们选择C=0。在此轮回中,输出数据必须变成等于标准AES算法的输出。这意味着我们必须向每个字节添加D=RD。
在密钥调度的一些部分中,将其与上面的解密运算并行执行,需要继之以仿射变换的乘法逆元,即加密SubBytes变换。在优选实施例中,所希望的是,使用相同的硬件来实现此变换。图13中示出了用于此做法的过程步骤。首先,将SubKey(子密钥)与RD进行XOR组合(步骤150)。然后,执行仿射变换151以便消除后续InvSubBytes变换152内包含的隐含逆向仿射变换(对应于图12的步骤123)。拉茨此查找操作的输出再次经受仿射变换153,并且利用将所述输出与RD进行XOR组合154来完成所述运算以便生成新的SubKey。
概括地说,我们选择RD=RA。在第一轮回中,C=RD。在所有其他轮回中C=0。在最后的轮回中,D=RD。所有数据与标准AES相比相差RD。因此有规则地改变RD将改变数据,并且将给出不同的当前踪迹。
RD的生成可以与DES引擎组合。为此,将RD选择为32位向量,不过对于DES来说,它还可能是4次重复的字节。实际上,RD可以从32位线性反馈移位寄存器生成。在复位之后,依照预先确定的协议,它将运行达某一随机时间段之久。作为选择,RD可以通过任何类型的随机发生器生成。
优选的是,在一次对话(例如16加密运算)之后,更新RD的值。在对话之间,它将运行固定次数。然后,S-box以与新值RD进行XOR组合的数据和与RA=RD进行XOR组合的地址来重新加载。
应理解的是,本发明可以很容易地适应于AES算法的128位(如图所示)、192位以及256位密钥大小的实现方式,并且还适应于其他具有不同密钥以及块大小的Rijndael算法的实现方式。
其他实施例都属于所附权利要求的范围内。
权利要求
1.一种在实现密码算法的密码引擎中执行加密或者解密的方法,包括以下步骤通过执行地址修改函数以修改用于对一个加密的S-box的查找操作的输入地址,并且通过执行数据修改函数以便修改从所述S-box输出的作为所述查找操作结果的数据,来从所述加密的S-box中检索数据,所述地址修改函数以及数据修改函数被选择来补偿S-box的加密。
2.如权利要求1所述的方法,其中所述地址修改函数包括执行输入地址与地址修改常数RA的XOR组合。
3.如权利要求2所述的方法,其中所述数据修改函数包括执行来自于S-box的输出与数据修改常数RD的XOR组合。
4.如权利要求3所述的方法,将其应用于DES算法,其中RD是随机的32位值,而RA=Expd(Perm(RD))。
5.如权利要求1所述的方法,还包括至少一个其他数据变换步骤,所述数据变换步骤发生在所述地址修改函数和所述查找操作之间,所述地址修改函数和数据修改函数适合于补偿所述至少一个其他数据变换步骤的影响。
6.如权利要求1所述的方法,还包括至少一个其他数据变换步骤,所述数据变换步骤发生在所述查找操作的输出和所述数据修改函数之间,所述地址修改函数和数据修改函数适合于补偿所述至少一个其他数据变换步骤的影响。
7.如权利要求6所述的方法,将其应用于DES算法,其中对于后续加密轮回来说,所述数据修改函数被应用于从右块R转送到左块L的数据。
8.如权利要求7所述的方法,其中所述地址修改函数在对所述S-box进行查找操作之前立即应用。
9.如权利要求8所述的方法,其中所述数据修改函数包括执行右块数据与数据修改常数D的XOR组合,并且所述地址修改函数包括执行S-box地址与地址修改常数的XOR组合。
10.如权利要求9所述的方法,其中对于每个加密轮回、依照表1中的列表选择C和D的值。
11.如权利要求10所述的方法,将其应用于三重DES算法的三个阶段的每一个,其中修改C和D的值,以致对于轮回1和2来说,D=RD,对于轮回3到46来说,D=0,对于轮回47、48来说,D=RD;除了被分别设定为C14和C15的C46和C47之外,C不做改变。
12.如权利要求1或者6所述的方法,将其应用于AES加密算法,其中对于连续轮回,所述地址修改函数应用于每个SubBytes运算的数据输入,并且在最终轮回中,应用数据修改函数。
13.如权利要求1或者6所述的方法,将其应用于AES解密算法,其中对于连续轮回,所述地址修改函数应用于每个InvShiftRows运算的数据输入,并且在最终轮回中,应用数据修改函数。
14.如权利要求12所述的方法,其中所述地址修改函数包括执行SubBytes变换的输入与地址修改常数C的XOR组合,并且所述数据修改函数包括执行在最终轮回中AddRoundKey运算的输出与数据修改常数D的XOR组合。
15.如权利要求14所述的方法,其中C的值是在第一加密轮回中是RD,而在后续加密轮回中是0,并且将D的值选为RD。
16.如权利要求13所述的方法,其中所述地址修改函数包括执行InvShiftRows变换的输入与地址修改常数C的XOR组合,并且所述数据修改函数包括执行在最终轮回中AddRoundKey运算的输出与数据修改常数D的XOR组合。
17.如权利要求16所述的方法,其中C的值是在第一解密轮回中是RD,而在后续解密轮回中是0,并且将D的值选为RD。
18.如先前任一项权利要求所述的方法,还包括以下步骤对于加密/解密算法的后续迭代周期地改变所述地址修改函数和数据修改函数,所述改变被选择以便补偿在S-box的加密中的相应变化。
19.一种在实现密码算法的密码引擎中执行加密或者解密的方法,包括以下步骤a)在S-box中加密所述数据以及用于存取所述数据的地址单元;b)定义相应的地址修改函数以及数据修改函数,以便补偿在S-box中数据以及地址单元的加密;c)从加密的S-box中检索数据,使用所述地址修改函数来修改用于对所述S-box的查找操作的输入地址,并且执行数据修改函数以便修改从所述S-box输出作为所述查找操作结果的数据;并且d)利用新的加密函数周期地重复步骤a)-c)。
20.一种密码引擎,包括加密的S-box,用于与加密函数相重叠地并且依照预先确定的密码变换来提供数据,所述预先确定的数据作为输入值的函数而输出;用于从加密的S-box中检索数据的装置,所述检索通过执行地址修改函数来修改用于对所述S-box的查找操作的输入地址来实现,并且用于执行数据修改函数以便修改从所述S-box输出作为所述查找操作结果的数据的装置,所述地址修改函数以及数据修改函数被选择来补偿S-box的加密。
21.如权利要求20所述的密码引擎,还包括用于周期地向S-box施加新的加密函数并且更新对应于它的所述地址修改函数和数据修改函数的装置。
22.如权利要求20或者21所述的密码引擎,将其提供在智能卡装置中。
23.一种计算机程序产品,包括计算机可读介质,其上具有计算机程序代码装置,当将所述程序加载到计算机上时,其可使计算机执行如权利要求1至19任一项所述过程。
24.一种计算机程序,可通过电子数据传输加以分发,包括计算机程序代码装置,当将所述程序加载到计算机上时,其可使计算机执行如权利要求1至19任一项所述过程。
全文摘要
一种在用于实现密码算法的密码引擎中执行加密或解密的方法,用于降低从S-box的输入和输出泄漏密钥信息的差分功率分析的风险。在S-box中将数据以及用于存取数据的地址单元进行加密。通过执行地址修改函数以便修改用于对所述S-box的查找操作的输入地址,并且通过执行数据修改函数来修改从所述S-box输出作为所述查找操作结果的数据,以此来从加密的S-box中检索数据,所述地址修改函数和数据修改函数被选择来补偿S-box的加密。所述S-box加密和修改函数是被周期性更新的。
文档编号H04L9/06GK1656733SQ03811569
公开日2005年8月17日 申请日期2003年5月15日 优先权日2002年5月23日
发明者G·T·M·胡伯特 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1