防止基于功耗分析攻击aes算法的软件掩码防护方案的制作方法

文档序号:7798082阅读:299来源:国知局
防止基于功耗分析攻击aes算法的软件掩码防护方案的制作方法
【专利摘要】本发明公开了一种防止基于功耗分析攻击AES算法的软件掩码防护方案。引入掩码矩阵M,在加密运算的每一轮设置三个随机掩码防护点;每次加密过程生成M的一组掩码序列对上述三处防护点进行保护;在密码芯片内部设置计数器C,每加密一次进行初始值叠加,当达到阈值T1时矩阵M构造完成;当达到阈值T2时,重置计数器C并从下次加密开始更新矩阵M,以此反复;由于设置的三个随机掩码防护点对至少在穷举少量子密钥时能计算出的重要中间值进行了掩码防护,因此能有效抵抗高阶差分功耗攻击,保护AES密钥安全;同时掩码矩阵采用队列模式进行动态更新,减少了随机掩码更换的频率,降低了防护成本。
【专利说明】防止基于功耗分析攻击AES算法的软件掩码防护方案
【技术领域】
[0001]本发明涉及一种防止基于功耗分析攻击AES算法的软件掩码防护方案,具体是一种防止基于功耗分析攻击AES算法的软件掩码防护方案,能够利用非对称随机掩码矩阵防止对智能卡中软件实现的AES算法的功耗攻击,提高防护效率,属于信息安全领域。
【背景技术】
[0002]高级加密标准(AdvancedEncryption Standard, AES),又称 Ri jndael 加密法,是由美国联邦政府采用的一种加密算法,该标准用来替代原有的DES,是迄今为止世界上最为广泛使用和流行的一种对称加密算法。虽然国内很多加密芯片仍然在使用DES算法,但随着智能CPU卡的逐渐普及,越来越多的加密芯片必将选择安全等级更高的AES算法来保护智能卡的安全。
[0003]侧信道攻击(side channel attack简称SCA),又称芳路攻击:针对加密电子设备在运行过程中的时间消耗、功率消耗或电磁辐射之类的侧信道信息泄露而对加密设备进行攻击的方法被称为侧信道攻击。这类新型攻击的有效性远高于密码分析的数学方法,因此给密码设备带来了严重的威胁。对边信道攻击的学术研究起于1996-1999年。传统的分组密码分析技术局限于算法的数学结构,其攻击效果往往不佳。国内外密码学界都在加强及预算法实现的分析方法研究,边信道分析技术作为一种新的密码分析方法迅速成为研究热点。对于智能卡密码设备而言,功耗攻击是最有效的攻击方法。
[0004]1998年和1999年:P.Kocher等人提出了功耗分析的思想,即简单功耗攻击(SPA,Simple Power Analysis)和差分功耗攻击(DPA, Different Power Analysis)方法,2004年,相关系数功耗攻击(CPA,Correlation Power Analysis)方法的提出使其迅速成为主流功耗分析方法,利用这种方法对采用对称加密算法的智能卡进行攻击的案例也频繁出现。
[0005]现有的智能卡无论其内部加密算法是由硬件系统还是软件系统实现,最终一定是运行在硬件上的,而密码设备的电路部分基本都是由CMOS (Complementary Metal OxideSemiconductor,互补金属氧化物半导体)电路构成的,因此加密过程中采用不同的密钥所消耗的功耗也不同。功耗的变化能间接反映出所采用密钥的内容,功耗分析便是基于此进行攻击的。
[0006]差分功耗攻击:功耗攻击的一种,攻击者无须了解关于被攻击设备的详细内容,通过分析加密密钥与功耗数据之间的相关性,利用统计分析方法寻找与密钥相关的有用信息,从而完成攻击;相关系数功耗攻击可以看作是对差分功耗分析方法的优化与改进,它利用功耗模型首先求出假设功耗,然后计算假设功耗和实测功耗之间的相关系数,通过比较相关系数来确定密钥。
[0007]对采用AES加密算法的智能卡芯片的功耗攻击流程通常是:第一,首先选择AES算法中一个与密钥相关联的中间值;第二,测量加密或解密时设备的功耗,此时明文或密文通常需要是已知的;第三,计算假设的中间值,该中间值由第一步中与密钥相关的函数关系所计算得到,该中间值可映射为一个中间值矩阵;第四,利用功耗模型(汉明距离或汉明重量模型)计算得到假设中间值矩阵对应的功耗矩阵;第五,将映射得到的功耗矩阵与实际功耗相比较,根据相关性计算方法可计算得到相关系数最高的功耗值,据此可对应找出可能性最大的密钥值,从而完成攻击。
[0008]目前针对软件实现的密码系统的功耗攻击防护方法主要采用以下所述的几种措施:
O算法级防护。在不改变算法执行结果的情况下,改变算法执行流程;使其具有一定的随机性,干扰旁路信息的获取。最具代表性的方法为掩码防护,其核心思想是在数据运行的过程中为数据掩上一个掩码(异或上一个与计算无关的值),并在得到最后的结果前去除该掩码;由于掩码数据和密码计算本身无关,可以是任何一个值,因此掩码数据本身拥有不可预知性;虽然掩码防护的安全性较高,然而对于软件实现的密码算法,一次加密用于生成全部随机掩码的时间甚至超过加密所用的全部时间,大大降低了加密效率。
[0009]2)逻辑级防护。改变密码电路中逻辑单元的设计,使运算时数据产生的功耗不具有区分性。最具代表性的方法为双轨逻辑,其核心思想是利用冗余的编码技术,重新设计了电路的逻辑单元,使不同数据的编码产生相同的功耗;该设计虽然可达到很好的安全防护效果,然而对于软件实现的密码算法,对于表存储空间的需求会翻倍,大大降低了加密效率。

【发明内容】

[0010]发明目的:针对现有技术存在的问题与不足,本发明提供一种防止基于功耗分析攻击AES算法的软件掩码防护方案,能够防范对智能卡中软件实现的AES算法的功耗攻击,尤其是目前主流的相关系数功耗攻击,使攻击者无法通过该分析方法得到AES的密钥,从而获取智能卡内部的敏感信息;同时方案的设计也充分考虑到了加密效率问题,采取队列更新模式降低了防护成本;
技术方案:一种防止基于功耗分析攻击AES算法的软件掩码防护方案,其实施步骤如
下:
引入掩码矩阵M,在加密运算的每一轮设置三个随机掩码防护点,分别为子密钥异或结果,即S盒输入;字节代换结果,即S盒输出;以及轮加密结果;
第I轮加密过程中,首个子密钥Kl未对数据进行操作之前,加密算法流程保持和AES流程相同。在第I轮子密钥Kl对明文进行异或操作后引入掩码X,字节代换操作后引入掩码X1,第I轮加密操作结束时引入掩码X2 ;
第2轮至第9轮的加密过程,操作方式与第I轮加密过程类似,即在三个随机掩码防护点处设置随机掩码,只是异或的随机数值与第I轮不相同(记为Xi,3〈=i〈=19);
在第10轮字节代换操作后引入掩码X2tl,加密结果输出前引入掩码X21,最后经过逆置换操作引入掩码Y还原真实的密文信息。
[0011]掩码矩阵M在第一次加密过程中的密钥初始化阶段随机生成第一组掩码序列,第二次加密过程随机生成第二组掩码序列,以此反复,每次加密过程均从M中随机选取一组掩码序列进行防护设置;当达到计数器C的阈值Tl (i=N)时,矩阵M构造完成,此后的加密过程不再变更M的大小;当达到阈值T2 (i=2N)时,重置计数器C (i=0),之后的加密过程以阈值Tl为计数周期,T2为重置周期,采用队列模式更新掩码矩阵M,即第j次加密生成的掩码序列将替换M中的第j组掩码序列(l〈=j〈=N),更新完成之后当达到重置周期T2时才进行下一次替换,以此反复完成多次加密过程中掩码矩阵的动态更新;
有益效果:相对于现有技术,本发明中,由于在AES加密运算的每一轮所设置的三个随机掩码防护点对至少在穷举少量子密钥时能计算出的重要中间值进行了掩码防护,因此能有效抵抗高阶差分功耗攻击;并且使用的掩码矩阵M并非在密钥初始化阶段全部生成,而是每次加密运算动态产生一组掩码序列以供防护设置,降低和控制了运算成本及加密流程的效率损失;同时队列模式的更新方法能有效防止攻击者通过寄存器劫持获取掩码序列的方式进行高阶差分攻击,进一步增强了防护方案的安全性。
【专利附图】

【附图说明】
[0012]图1为本发明实施例的AES加密流程图;
图2为本发明实施例的掩码矩阵构造更新图;
【具体实施方式】
[0013]下面,以AES算法的软件实现和在每一次运算进行的掩码设置为例,说明本发明的【具体实施方式】。应理解该实施例仅用于说明本发明而不用于限制本发明的范围,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
[0014]由于智能卡中的加密系统是由软件实现的,而软件实现的密码系统在它计算过程中的任意中间值都有存放寄存器的步骤,故所有的计算中间值均为潜在的攻击点。因此,不同于硬件的掩码防护方案,为抵抗一阶DPA和高阶DPA,运算过程中的任何一步元运算,或者至少是在穷举子密钥时能计算出的任意中间值均需要在掩码的防护下才能保证密码系统的安全性。
[0015]为克服上述问题,本发明在加密运算的每一轮设置了三个随机掩码防护点,分别为子密钥异或结果(即S盒输入)、字节代换结果(即S盒输出)以及轮加密结果,这三处均是由密钥与相关数据计算得到的中间值,最易被攻击者利用进行功耗攻击,因此上述三处需设置不同的随机掩码。
[0016]在第一次加密运算进行密钥初始化时生成只包含一行掩码序列值的掩码矩阵M并将其存放于专用寄存器中,如图1所示,第I轮加密过程中,从寄存器中读取矩阵M的值依次置于三个掩码防护处,第2轮至第9轮的加密过程类似,由AES加密结构可知,上一轮的加密结果恰好作为本轮的字节代换操作的输入,而它们均为掩码防护点,故上述两处只需设置一个掩码值即可,故2至9轮的加密操作均只需设置两个掩码防护点,注意到第10轮加密完成之后需对结果进行掩码去除操作以恢复真实的密文信息,因此第10轮加密需要增加一个额外的掩码Y ;因此,对于一次完整的加密操作共需23个掩码防护值(均从掩码矩阵M中获取)。
[0017]AES加密流程中的掩码选择如下:
1)第一次加密的掩码序列值从掩码矩阵M中的第一行中获取;
2)第二次加密从掩码矩阵M的两行掩码序列中随机选取一行;以此反复,到第η次加密从掩码矩阵M的η行掩码序列中随机选取一行;
3)第η+1次到第2η次加密过程仍从矩阵M的η行掩码序列中随机选取一行; 4)第2n+l次开始,从已更新的矩阵M中随机选取一行作为掩码防护值,以此反复完成每次加密运算的掩码设置;
芯片内部设置计数器C,其初始值i=0,设定两个门限值分别为T1=N,T2=2N,密码芯片执行一次密码运算,初始值i=i+l,同时掩码矩阵生成新的一行掩码序列值,加密过程随机选择一行掩码序列进行防护设置;当i=N时,加密过程随机选择η行掩码序列中的一行进行防护设置,此时掩码矩阵M构造完成,不再变更大小;当i=2N时,重置i的值为初始值O,从下次加密开始掩码矩阵M生成新的一行掩码序列Mi替代现有的第i行(0〈=i〈=n),以此反复,通过维持掩码矩阵M的持续更新保证掩码序列的随机性。
[0018]如图2所示,掩码矩阵的构造和更新过程如下:
1)第一次加密生成第一行掩码序列M1;
2)第二次加密生成第二行掩码序列M2;以此反复,第η次加密生成第η行掩码序列Mn ;
3)第η+1次到第2η次,不再生成新的掩码序列;
4)第2η+1次开始前,计数器N重置为0,对加密次数进行重新计数,第i次生成的新掩码序列替换原来M中的第i行Mi, l〈=i〈=n,待掩码矩阵M中的每一行掩码序列值全部更新完成,停止生成新的掩码序列;
5)以此反复,直到第2n+l次开始进行下一轮更新,完成掩码矩阵M的动态更新;
从安全防护的角度出发,可以看出,在侧信道信息泄露的情况下,通过设置随机掩码,对在穷举少量子密钥时能计算出的重要中间值进行了掩码防护,使得功耗攻击,尤其是差分功耗攻击和相关性功耗攻击分析AES算法密钥变得极其困难,无法找出密钥与相关数据之间的关联性,无论是一阶差分功耗攻击还是高阶差分功耗攻击,其攻击代价均大大增加;同时队列模式的更新方法能有效防止攻击者通过寄存器劫持获取掩码序列的方式进行高阶差分攻击,因此该方案能有效保证AES算法的安全性,进而保护智能卡的安全。
[0019]对于防护成本,从上述对掩码矩阵M的构造过程中可以看出,矩阵M是动态生成的,而并非在密钥初始阶段生成全部所需的掩码值;在每次加密运算中只需生成一组掩码序列,当达到计数器C的阈值N时停止增加矩阵M的大小,当达到阈值2N时,采用先进先出的队列替换原则,动态更新矩阵M的掩码序列。虽然掩码防护的实现方案必将导致加密效率的大幅下降,但该方案在保持掩码随机性的同时,减少了加密过程构造掩码矩阵M所需的时间和随机掩码更换的频率,对防护效果的提高有着很好的作用。
【权利要求】
1.一种防止基于功耗分析攻击AES算法的软件掩码防护方案,其特征在于该方案主要针对的是软件实现的AES算法的掩码防护,对至少在穷举少量子密钥时能计算出的重要中间值进行了保护;防止了攻击者通过寄存器劫持获取掩码序列的方式进行高阶差分攻击,减少了随机掩码更换的频率,降低了防护成本,其实施步骤如下: 引入掩码矩阵M用于生成随机数序列,在加密运算的每一轮设置三个随机掩码防护点,分别为子密钥异或结果,即S盒输入;字节代换结果,即S盒输出;以及轮加密结果; 第I轮加密过程中,首个子密钥Kl未对数据进行操作之前,加密算法流程保持和AES流程相同;在第I轮子密钥Kl对明文进行异或操作后引入掩码X,字节代换操作后引入掩码X1,第I轮加密操作结束时引入掩码X2 ; 第2轮至第9轮的加密过程,操作方式与第I轮加密过程类似,即在三个随机掩码防护点处设置随机掩码,只是异或的随机数值与第I轮不相同; 在第10轮字节代换操作后引入掩码X2tl,加密结果输出前引入掩码X21,最后经过逆置换操作引入掩码Y还原真实的密文信息; 掩码矩阵M在第一次加密过程中的密钥初始化阶段随机生成第一组掩码序列,第二次加密过程随机生成第二组掩码序列,以此反复,每次加密过程均从M中随机选取一组掩码序列进行防护设置;当达到计数器C的阈值Tl (i=N)时,矩阵M构造完成,此后的加密过程不再变更M的大小;当达到阈值T2 (i=2N)时,重置计数器C (i=0),之后的加密过程以阈值Tl为计数周期,T2为重置周期,采用队列模式更新掩码矩阵M,即第j次加密生成的掩码序列将替换M中的第j组掩码序列(l〈=j〈=N),更新完成之后当达到重置周期T2时才进行下一次替换,以此反复完成多次加密过程中掩码矩阵的动态更新。
【文档编号】H04L9/06GK103795527SQ201410075270
【公开日】2014年5月14日 申请日期:2014年3月3日 优先权日:2014年3月3日
【发明者】徐佩, 姬晨, 刘自强, 张瑜, 李思遥, 傅鹂, 向宏, 陈京浩 申请人:重庆大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1