抵御差分能量攻击的AES加密方法转让专利

申请号 : CN200810216907.6

文献号 : CN101729241B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张翌维郑新建彭波谢华徐非

申请人 : 国民技术股份有限公司

摘要 :

本发明涉及一种抵御差分能量攻击的AES加密方法,在一个批次的AES加、解密中,采用两路加密路径,每路加密路径中所有加密中间结果与AES算法中间结果均不同,且在不同批次中随机变化,仅在轮次结束时将两路加密路径的运算结果还原为AES标准的轮次运算结果。与现有技术相比,本发明具有以下技术效果:1.硬件实现复杂度低,电路结构仅需稍加修改。2.软件实现步骤简单,底层基本操作无须变动,易于维护。3.能量信息与AES标准中间结果汉明重量与本方法所产生能量数据(包括功耗、电磁辐射)间的相关性被完全解除,在处理步骤增加不多的情况下,具有良好的侧信道安全性。

权利要求 :

1.一种抵御差分能量攻击的AES加密方法,其特征在于:在一个批次的AES加、解密中,采用两路加密路径,每路加密路径中所有加密中间结果与AES标准算法的中间结果均不同,且在不同批次中随机变化,仅在轮次结束时将两路加密路径的运算结果还原为AES标准的轮次运算结果,在进行一个批次AES加密前,先进行如下密码初始化运算:①生成随机数r;

②设AES算法中S盒查表操作满足Y=S(X),其中表输入为X、输出为Y,根据随机数r,得出S′盒满足③采用真随机数发生器产生一个随机数查表矩阵作为S′1盒,计算S′2盒满足即将S′盒与S′1盒中对应位置元素相异或得到S′2盒,使两个等阶S′1、S′2盒之查表关系满足加密时,每一轮子密钥与随机数r进行异或,分别采用等阶S′1、S′2盒进行等阶字节替代,然后进行行移位和列混淆,在最后一轮行移位后对两路加密数据流进行还原操作,得到正常的加密结果。

2.根据权利要求1所述的抵御差分能量攻击的AES加密方法,其特征在于:加密步骤具体如下:A.子密钥与随机数r进行异或操作;

B.进行轮密钥加;

C.如果不是最后一轮加密处理,采用两路数据路径进行处理,即分别采用S′1盒、S′2盒查表后进行行移位和列混淆;并将该两路数据路径的处理结果异或得到本轮AES加密结果;

D.如果是最后一轮加密处理,采用两路数据路径进行处理,即分别采用S′1盒、S′2盒查表后进行行移位;并对其中一轮数据路径的处理结果进行轮密钥加后与另一路数据路径异或得到最后加密结果。

3.根据权利要求2所述的抵御差分能量攻击的AES加密方法,其特征在于:所述步骤C中所述的采用S′1盒、S′2盒查表后进行行移位和列混淆,是在S′1盒、S′2盒进行查表后,采用两组数据路径同时进行行移位和列混淆。

4.根据权利要求2所述的抵御差分能量攻击的AES加密方法,其特征在于:所述步骤C中所述的采用S′1盒、S′2盒查表后进行行移位和列混淆,是在S′1盒、S′2盒进行查表后,先对第一路径的数据进行行移位和列混淆,再对第二路径的数据进行行移位和列混淆。

5.根据权利要求1所述的抵御差分能量攻击的AES加密方法,其特征在于:随机数生成采用数模混合电路得到的8-bit真随机数r;设常规S盒规模为16*16字节,且查表操作满足Y=S(X),则首先计算规模同样为16*16字节的等阶S′盒满足 计算得到S盒的方法为:将S盒的第 个字节放到等阶S′1盒的第i个位置中去,其中i∈[0x00,0xFF];然后,采用真随机数发生器产生一个16*16字节的随机数查表矩阵作为S′1盒,计算S′2盒满足 即将S′盒与S′1盒中对应位置元素相异或得到

16*16字节的S′2盒。

说明书 :

抵御差分能量攻击的AES加密方法

[0001] 技术领域 本发明涉及信息安全技术领域中的AES(高级加密标准)对称分组密码技术,尤其涉及一种考虑侧信道安全的AES实现技术,采用该方法能够有效抵御针对集成电路的差分能量攻击。
[0002] 背景技术 当前的信息安全领域中,各种密码分析手段不断涌现。与针对安全算法的常规密码分析方式不同,侧信道分析更加关注安全算法在硬件中运行时的特征,通过以功耗、电磁辐射、错误诱导等方式所泄露的信息,极大限度地获得与安全算法有关的机密数据。
[0003] 加密硬件以半导体逻辑为基础,逻辑门由大量晶体管构成,当逻辑门上发生放电现象时,电子从硅衬底流过、消耗能量,同时产生电磁辐射。而能量分析就是监测硬件的功耗或者电磁辐射等能量信息的变化,利用统计方法和攻击经验对收集到的边信息进行分析。能量分析技术主要有以下四种:简单功耗分析(Simple Power Analysis)、简单电磁辐射分析(SimpleElectromagnetic Analysis)以及相对应的差分功耗分析(Differential Power Analysis)和差分电磁辐射分析(Differential Electromagnetic Analysis)。
[0004] 简单能量分析是根据功耗或电磁辐射曲线的特征及攻击经验直观地分析出指令执行或电路晶体管翻转的顺序,常被用来破解执行顺序与某些数据有关的密码算法。差分能量分析可从功耗或电磁辐射曲线微小的差分信号分析出所需的机密信息,但需要搜集大量的信息,并采集多组能量曲线以及每条曲线对应的明文、密文记录,通常需要一定的简单能量分析经验和较长时间的运算,对分析平台的设备要求也比较高。目前,能量分析技术尤其是差分能量分析已被广泛使用以窃取密码电子器件所保护的数据。
[0005] 由于涉及能量分析的侧信道攻击已经触及并正在越来越深的影响到银行、金融、工商业和人民日常生活。国内外关于能量攻击防御方面的研究报道也逐步出现,其主流技术包括:算法及其硬件实现中的掩码技术、时钟扰乱技术等。其中掩码方法由于实现代价可控且不影响数字电路的工作特性,已经受到广泛关注。
[0006] S.Chari在1999年首次提出了抗DPA(Differential Power Analysis,差分功耗分析)分析的掩码技术(见S.Chari,C.Jutla,J.R.Rao,P.Rohatgi,A Cautionary NoteRegarding Evaluation of AES Candidates on Smart-Cards.Proc.of the 2nd AES CandidateConference,Rome,Italy,pp.133-147,1999.),通过对加密操作中的中间结果进行掩盖的方法使差分功耗分析变得十分困难,通过这种掩盖,往往使DPA的区分函数对功耗曲线的划分“出错”,从而使差分后的结果无法正确地显示出高的相关优度。通常的掩码做法是,对加密过程中的一段敏感硬件电路或软件程序y=F(x),设输入信号为x,掩码为r,则掩盖和解扰步骤为:(1) (2)y′=F(x′)和r′=F(r′);(3) 。S.Chari认为(见S.Chari,C.S.Jutla,J.R.Rao and P.Rohatgi,Towards Sound Approaches to CounteractPower-Analysis Attacks,Proc.of Advances in Cryptology(CRYPTO′99),LNCS1666,Springer-Verlag,pp.398-412,1999.),即使采用了部分随机掩码或数据汉明平衡技术,一个聪明的攻击者能够消除掉能量中隐藏的虚假信息,除非对加密处理中的所有中间变量进行拆裂。蒋惠萍在文献“一种抗差分功耗攻击的改进DES算法及其硬件实现”(见蒋惠萍毛志刚,一种抗差分功耗攻击的改进DES算法及其硬件实现,计算机学报,27(3):334-338,2004.)中建议采用随机序列对数据加密标准DES(Data Encryption Standard)算法中密钥扩展后的中间结果进行掩盖,并在查询S盒存储单元之前求逆,还原了输入数据,这种中途的解掩盖仍然是危险的。
[0007] 新的研究表明加密中每一轮都会受到能量分析的威胁,即使采用了部分随机掩码或数据汉明平衡技术,一个聪明的攻击者能够消除掉能量中的隐藏的虚假信息,除非对加密处理中的所有中间变量进行拆裂,而对加密中所有中间过程的掩盖需要不断地在掩盖—解掩盖间反复操作,这往往需要消耗十分大的硬件存储空间,若采用VLSI(超大规模集成电路)实现会使关键路径延迟增长。
[0008] Messerges在文献“Securing the AES Finalists Against Power Analysis Attacks”(见T.S.Messerges,Securing the AES Finalists Against Power Analysis Attacks,Proc.of Fast Software Encryption(FSE2000),LNCS1978,Springer-Verlag,pp.293-301,2000.)中提出了一种AES处理引擎,将随机掩码用于AES算法,并设计了微处理器,将电路中所有逻辑运算以算术运算替代,并采用随机数进行掩盖获得了良好的功耗安全性。然而采用算术运算去等效逻辑运算大大降低处理效率,例如异或操作被逐位的模2加法替代,这需要的步骤远多于简单的异或。
[0009] 为了减少存储空间和硬件处理负荷,H.CHANG在论文“A study on Securing AES againstDiferential Power Analysis”(见H.CHANG.A study on Securing AES against DiferentialPower Analysis[EB/OL],http://caislab.icu.ac.kr/pub/down/2004/w20022122_chs.pdf,2003.)中第16页建议了固定值掩码(Fixed Value Masking)方法,其实质是,在q组固定掩码中随机的选择1组,然后对加密过程的中间变量进行掩盖。固定值掩码方法有两种:1)对于一组固定值,每个加密轮次都使用不同的掩盖次序;2)对于一组固定值,一次加密中的所有轮次都使用相同的掩盖次序,而每次加密使用不同的掩盖次序。对于AES硬件电路的固定值掩码过程如图8所示。
[0010] 然而,从图8中可以看出,该实现方法采用多组S盒,需占用较多的存储空间。特别是在每轮的字节替代(S盒查表)后数据被还原为正常值,即与AES标准算法的中间结果一致,这种轮次中不完整的掩盖使许多标准的中间运算结果暴露于能量信息中,无法抵抗针对汉明重量的差分能量攻击。
[0011] 中国发明专利申请CN1761185公开了一种乱序执行的数据流AES加密电路结构,该电路结构集成在一个芯片上共包含:输入部分;输出部分;完成密钥扩展和密钥扩展环。对轮密钥进行与随机状态信息的逐位混合运算、行移位运算、列混合变换运算以及轮迭代运算,以得到密文后通过输出部分输出。该电路结构使功耗差分比降低了66%,提高了攻击的难度。但是从电路结构的随机处理方式来规避能量风险很难推广到其他实现领域(如软件方式),且对原有结构的改进将十分困难,必须根据该结构重新设计电路,方可引入到系统中。此外,这种乱序处理方式抵抗差分能量分析的落脚点为:使反复加密过程中的相同操作的能量曲线无法在时域进行对准。这与时钟加扰的作用是类似的,从差分比降低66%的结果看来,仍无法从根本上抵御差分能量攻击。
[0012] 综上所述,现有技术所存在的不足具体如下:
[0013] a)未能掩盖密码操作中的所有运算步骤,仅掩盖以S盒为主体的密码非线性操作部分,由于存在未掩盖的部分,且未掩盖的行移位与列混淆执行时间往往比较长,消耗能量比较大,所以对于未掩盖操作的差分能量攻击依然会成功。
[0014] b)未能有效的破坏差分能量分析中的汉明重量模型,能量消耗与汉明重量间的相关性未能完全解除。
[0015] c)采用逻辑运算与算术运算互换原则,对AES所有步骤掩码,虽然取得了良好的抗差分分析效果,但处理效率大大降低,且使用算术运算去等效逻辑运算若采用VLSI实现,实现代价也会大大提高,无法满足当前商用密码的普及需求。
[0016] 发明内容本发明要解决的技术问题在于避免上述现有技术的不足之处而提出一种抵御差分能量攻击的AES加密方法,使用该加密方法,硬件实现代价低、软件实现相对简单且能量安全性高,能够使正确轮密钥所对应的差分尖峰100%完全削平,能量消耗与汉明重量间的相关性完全被解除,易于普及和推广。
[0017] 本发明解决所述技术问题可以通过采用以下技术方案来实现:
[0018] 提出一种抵御差分能量攻击的AES加密方法,在一个批次的AES加、解密中,采用两路加密路径,每路加密路径中所有加密中间结果与AES标准算法的中间结果均不同,且在不同批次中随机变化,仅在轮次结束时将两路加密路径的运算结果还原为AES标准的轮次运算结果。
[0019] 在进行一个批量AES加密前,先进行如下密码初始化运算:
[0020] ①生成随机数r;
[0021] ②设AES算法中S盒查表操作满足Y=S(X),根据相同的输入输出X和Y与随机数r,得出S′盒满足
[0022] ③采用真随机数发生器产生一个随机数查表矩阵作为 盒(元素为8位2进制数),计算 盒满足 即将S′盒与 盒中对应位置元素相异或得到 盒,即两个等阶盒满足
[0023] 加密时,每一轮子密钥与随机数r进行异或,分别采用等阶 盒进行等阶字节替代,然后进行行移位和列混淆,在最后一轮行移位后对两路加密数据流进行还原操作,得到正常的加密结果。
[0024] 所述抵御差分能量攻击的N(N可为10、12或14)轮次AES加密方法,加密步骤具体如下:
[0025] A.子密钥与随机数r进行异或操作;
[0026] B.进行轮密钥加;
[0027] C.如果不是最后一轮(即前N-1轮)加密处理,则采用两路数据路径进行处理,即分别采用盒、盒进行查表后进行行移位和列混淆;并将该两路数据路径的处理结果异或得到本轮AES加密结果;
[0028] D.如果是最后一轮(即第N轮)加密处理,则采用两路数据路径进行处理,即分别采用盒、盒进行查表后进行行移位;并对其中一轮数据路径的处理结果进行轮密钥加后与另一路数据路径异或得到最后加密结果。
[0029] 本发明方法,在一个加、解密轮次内所有中间运算结果与AES标准算法的中间运算结果都不相同,且对应中间结果的汉明距离也随明文的变化发生随机变化。与现有技术相比,本发明具有以下技术效果:1.硬件实现复杂度低,电路结构仅需稍加修改。2.软件实现步骤简单,底层基本操作无须变动,易于维护。3.能量信息与AES标准中间结果汉明重量与本方法所产生能量数据(包括功耗、电磁辐射)间的相关性被完全解除,在处理步骤增加不多的情况下,具有良好的侧信道安全性。

附图说明

[0030] 图1是本发明方法实施例一前N-1轮的单轮AES加密处理流程示意图;
[0031] 图2是本发明方法实施例一第N轮的AES加密处理流程示意图;
[0032] 图3是本发明方法实施例二前N-1轮的单轮AES加密处理流程示意图;
[0033] 图4是本发明方法实施例二第N轮的AES加密处理流程示意图;
[0034] 图5是本发明方法的AES解密处理流程示意图;
[0035] 图6是AES标准加密算法流程示意图;
[0036] 图7是AES标准解密算法流程示意图;
[0037] 图8是现有技术中AES密码机的固定值掩码过程示意图;
[0038] 图9是采用现有AES加密方法实现的功耗差分曲线图;
[0039] 图10是采用本发明AES加密方法实现的功耗差分曲线图。
[0040] 具体实施方式 以下结合附图所示之最佳实施例作进一步详述。
[0041] 图6、图7是正常AES标准算法流程框图。如图6所示,在加密过程中,首先进行轮密钥加,然后是8-bit输入8-bit输出的S盒查表,查表后数据存储为4*4字节的数据空间进行行移位、列混淆,从而完成一轮加密。最后一轮加密需将列混淆替换为轮密钥加。如图7所示,解密是加密的逆过程,包括逆行移位、解密用逆S盒、逆列混淆和轮密钥加。
[0042] 在保证计算正确性的前提下,本发明方法比较全面地考虑到了标准处理流程和现有抗差分能量攻击技术中的缺点。本发明方法是在一个批次的AES加、解密中,采用两路加密路径,每路加密路径中所有加密中间结果与AES算法中间结果均不同,且在不同批次中随机变化,仅在轮次结束时将两路加密路径的运算结果还原为AES标准的轮次运算结果。
[0043] 本发明实施例一现详述如下:
[0044] 密钥扩展方法与常规AES算法一致,主要技术要点在加解密过程中。
[0045] 在进行一个批量AES加密前,进行一系列密码初始化运算,前N-1轮的每轮AES加密处理如图1所示:
[0046] ①生成随机数r;
[0047] ②设AES算法中S盒查表操作满足Y=S(X),根据相同的输入输出X和Y与随机数r,得出S′盒满足
[0048] ③采用真随机数发生器产生一个16*16字节的随机数查表矩阵作为 盒,计算盒满足 即将S′盒与 盒中对应位置元素相异或得到16*16字节的 盒。
[0049] 如此,两个等阶 盒满足
[0050] 在加密过程中,每一轮子密钥都与随机数r进行异或,利用上述两个等阶 盒的性质,分别进行等价查表操作(字节替代),但在查表操作后并不直接采用异或运算进行还原,而继续分两组数据通路存储为4*4字节的矩阵,分别进行行移位和列混淆,其后将两路数据异或后还原为正常的轮加密结果。
[0051] 第N轮加密处理如图2所示。在最后一轮加密中,需要进行相应调整,即在行移位后不进行列混淆,而是对一路数据进行轮密钥加后与另一路数据异或得到最终加密结果。
[0052] 上述实施例一在等阶、盒查表后,未考虑集成电路实现中的复用性,行移位和列混淆过程采用两组数据路径同时进行;实施例二考虑复用性可进行时序折叠,分两次通过同一数据路径。实施例二如图3、图4所示,具体处理过程为:
[0053] 前N-1轮的AES加密处理如图3所示,首先对记忆单元清零,将每一轮子密钥都与随机数r进行异或,利用两个等阶、盒的性质,分别进行等价查表操作(字节替代),在查表操作后先对路径1中的数据进行行移位和列混淆,与零向量异或后存入记忆单元中;然后对路径2中的数据采用相同模块进行行移位和列混淆,与记忆单元中的向量异或后更新记忆单元,此时记忆单元中的向量即为轮加密结果。
[0054] 最后一轮即第N轮加密流程仅需用轮密钥加替换列混淆即可,其他操作及顺序保持不变,如图4所示。
[0055] 以上对加密过程进行了详细描述,依照加密过程,在批量数据解密前也需进行逆S盒初始化,具体过程与加密时相同,也需产生真随机数r,并产生的两个等阶逆 盒满足
[0056] N轮解密过程如图5所示,具体过程为:
[0057] 1.采用AES标准算法进行密钥扩展;
[0058] 2.在首轮加密中,将子密钥与真随机数r进行异或,然后与明文做轮密钥加;
[0059] 3.逆行移位后,分两路采用 盒进行字节替代;
[0060] 4.替代后其中一路做轮密钥加,然后两路分别进行列混淆;
[0061] 5.将两路列混淆结果与真随机数r做三输入异或运算;
[0062] 6.返回步骤3,直到第N-1轮完成;
[0063] 7.最后一轮先做逆行移位,处理结果分别对 盒进行字节替代(查表),最后将两路查表结果与末轮密钥异或完成解密。
[0064] 由于芯片流过的电流与其消耗的功耗成正比,所以通过对处理器进行加密操作时电流的测量,可以得到密码机工作时的功耗数据。采用AES标准算法加密和本发明方法加密实验结果如下:
[0065] 首先采用标准AES算法和32位微处理器运行环境,采用128-bit密钥“0x000102030405060708090a0b0c0d0f”对5000组随机明文进行AES加密,针对首轮加密的第4个S盒的差分结果表明:当猜测与该S盒相关的8-bit密钥段为“0x03”时(即第4个8-bit密钥段),得到明显的功耗差分结果,如图9所示,从图中可以看出一个很明显的尖峰,这说明本组猜测的轮密钥段正确,攻击成功。
[0066] 而采用本发明方法时,功耗差分曲线如图10所示,设正确密钥已知,当与第4个S盒相关的8-bit密钥段仍为“0x03”时,差分尖峰完全不显现,被有效掩盖。