CN104811295A - 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法 - Google Patents

一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法 Download PDF

Info

Publication number
CN104811295A
CN104811295A CN201510221360.9A CN201510221360A CN104811295A CN 104811295 A CN104811295 A CN 104811295A CN 201510221360 A CN201510221360 A CN 201510221360A CN 104811295 A CN104811295 A CN 104811295A
Authority
CN
China
Prior art keywords
prime
energy consumption
matrix
energy
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201510221360.9A
Other languages
English (en)
Inventor
罗鹏
李大为
曹伟琼
秦小龙
莫凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Cryptography Administration Commercial Code Testing Center
Original Assignee
State Cryptography Administration Commercial Code Testing Center
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by State Cryptography Administration Commercial Code Testing Center filed Critical State Cryptography Administration Commercial Code Testing Center
Priority to CN201510221360.9A priority Critical patent/CN104811295A/zh
Publication of CN104811295A publication Critical patent/CN104811295A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)
  • Respiratory Apparatuses And Protective Means (AREA)

Abstract

本发明公开了一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法,该方法包括:(1)建立能耗矩阵E并进行预处理获得能耗矩阵E’;(2)选择左右两边S盒输出异或值S_XorOutr作为攻击点获得中间矩阵V或分别用汉明重量、单比特确定DPA区分函数D;(3)计算仿真能耗矩阵H及两个平均能耗矩阵D0和D1;(4)计算H与E′之间的相关系数矩阵R,选取最大rp,q对应的猜测值获得正确秘钥;或通过ΔD=D1-D0,选择最大Δdpq对应的猜测值确定正确的秘钥;(5)依次进行5轮运算,反复(2)-(4)的步即可获得所有秘钥信息。本申请的技术方案解决了当前对具有掩码防护措施的ZUC密码算法没有具体的攻击方法的缺陷,创新地提出了新的二阶能量分析方法,开拓了ZUC密码算法攻击局面,扩展了侧信道能量分析手段。

Description

一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法
技术领域
本发明属于密码算法分析检测技术领域,涉及在密码算法实现、侧信道能量分析、密码模块检测过程中,针对具备掩码防护措施的祖冲之序列密码算法(ZUC)进行侧信道能量分析,获取受保护的密钥k,即,对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法。
背景技术
随着信息技术的发展,各种密码算法正被广泛地应用于经济、军事、行政等重要部门,保护信息的安全性。鉴于密码算法的重要性,密码算法软硬件实现(密码模块)的分析研究对保护信息安全具有重要的意义。近年来,多种对密码模块的攻击已广为人知,所有这些攻击的目的都是为了获取密码模块中的密钥。通常的攻击方式可分为侵入式攻击、半侵入式攻击和非侵入式攻击。近年来,由于非侵入式攻击中的侧信道分析实施方便、相对成本低廉而被广泛使用。侧信道分析可以细分为计时分析、能量分析和电磁分析。其中的侧信道能量分析是众多分析手段中最常用的方法之一,它突破了传统密码算法的分析模式,能力强大,实施相对容易。侧信道能量分析利用了密码模块能量消耗与数据运算和执行之间的相关性,基于密码算法实现的能量泄露函数建立能量模型,使用统计方法,猜测和验证密码模块使用的受保护密钥,几乎可被用于破解所有的对称密码和公钥密码。破解时,仅需要数十条能量迹就可以在几分钟内迅速地破解没有防御措施的大多数智能卡。侧信道能量分析方法一般包括,简单能量分析(SPA)、差分能量分析(DPA)、相关能量分析(CPA)和高阶差分能量分析(HODPA)。
直接利用能量迹各尖峰形状不同这一特性的攻击称为简单能量分析攻击SPA(Simple Power Analysis);根据密码设备的能量消耗依赖于算法执行过程中所处理的中间值分别为0和1时,所对应的平均能量迹之间的差异进行密钥恢复的攻击方法称为差分能量分析攻击DPA(Differential Power Analysis);若密码分析者利用假设能量消耗和真正能量消耗之间的线性相关性进行密钥恢复,则为相关能量分析攻击CPA(Correlation Power Analysis);在上述DPA分析中,如果仅利用了一个中间值,称为一阶DPA攻击,若是利用算法运算中的某种联合泄漏,该联合泄漏基于出现在密码设备中的多个中间值,则称相应的DPA攻击为高阶DPA分析。
鉴于当前对密码算法进行功耗分析攻击技术的不断发展,为应对能量分析带来的挑战,针对功耗分析攻击的防御技术也不断进步。抗功耗分析的防御技术包括各种隐藏技术和掩码技术,任何防御技术的目标都是使密码设备的能量消耗不依赖于设备所执行的密码算法中间值。
隐藏技术是通过能量消耗随机化,使所有操作具有相同能量消耗等方式切断被处理的中间值与设备能量消耗之间的关系。采用隐藏技术的密码设备与未加防护的设备执行相同的操作,但无法从中获取可用信息。
掩码技术是采用随机化密码设备所处理的中间值,对算法实现加入随机化掩码。其可以在算法级实现,无需改变密码设备的能量消耗特性,使设备的能量消耗与所执行的密码算法的中间值之间无依赖关系。
在掩码防御方案中,算法运算的中间值v都基于一个称为掩码的随机数m进行变换,即vm=v*m。掩码产生于密码设备内部,并且在每一次执行过程中各不相同,因此攻击者不能获知掩码。运算*通常根据密码算法所使用的操作进行定义。因此,运算*多为布尔异或运算、模加运算或模乘运算。在模加运算和模乘运算的情况下,模数根据密码算法进行选择。通常,掩码直接应用于明文或密钥。为了能够处理掩码型中间值以及对掩码进行跟踪,需要对算法进行修改。加密的结果也是掩码型的,为了获得密文,需要在计算结束时消除掩码。要保持每一个中间值在计算过程中始终处于被掩码状态,这一点非常重要。即使某一个中间值是基于它之前的中间值计算得到,保持上述性质仍然很重要。由于上述原因,对不同的中间值,往往需要分别采用不同的掩码。处于对实现性能的考虑,对每一个中间值采用一个新掩码并不合算。因此,为了获得合适的性能,需要仔细选择掩码的数量。
在算法一个执行路径中所叠加的掩码数量,称为算法掩码防御方案的阶数,对相应阶数的掩码进行能量分析的方法,称为高阶能量能量分析。一阶掩码可以防御一阶的能量分析,但不能防御二阶能量分析;二阶掩码可以防御二阶能量分析,但不能防御三阶能量分析。通常考虑到防御和分析的指数递增运算量增加,以及算法结构上可利用的能量泄露的点的限制,通常分组算法实现只能做到二阶能量分析,相应的防御措施也一般只做到二阶掩码防御即可。
下面对DPA和CPA的原理进行简单介绍。DPA原理是:对于N组明文/密文数据的加/解密运算,获取N条能量迹,这里的能量迹是指一次密码操作过程中采集到的能量消耗测量向量;对每一个猜测密钥K,产生相应的中间值(攻击对象),根据中间值确定选择函数;通过选择函数将能量迹集划分为两个子集;分别对两个子集对应的能量消耗取平均,并对两个平均能量消耗值求差,该均值差为选择函数对应的中间值对能量迹的影响效果。根据统计理论,若K猜测不正确,当能量迹的个数N趋近无穷大时,两子集的均值差将趋近于零;若K猜测正确时,在能量迹中的某个样点,将会出现一个均值差的最大尖峰(绝对值最大值),通过最大尖峰可确定正确的密钥。CPA原理是:对于N组明文/密文数据的加/解密运算,获取N条能量迹;对每一个猜测密钥K,产生相应的中间值(攻击对象);根据中间值建立能量模型;通过能量模型将中间值映射为仿真能量消耗;计算仿真能量消耗与能量迹之间的线性相关系数,范围在[-1,1]之间;选取相关系数中绝对值的最大值,理论上为1,但是由于采集能量迹过程中不可避免存在噪声干扰,最大值小于1,该相关系数最大值对应的猜测密钥即为正确密钥。
二阶DPA/CPA分析、除了可能需要对能量迹进行预处理,利用中间值的个数不一样,原理和方法与一阶侧信道能量分析的完全一致。一阶侧信道分析仅利用算法结构中的一个中间值,相应地,二阶侧信道分析利用密码设备所处理的两个中间值相关的联合泄漏。
二阶能量分析的步骤一般包括如下:选择两个中间值u和v,因采用了掩码技术,仅是掩码型中间值出现在设备操作中;记录能量迹,并对能量迹进行预处理;计算假设中间值,它是u和v的组合,对于布尔掩码的攻击,该组合通常为异或,即根据某种能量模型,将w映射为假设能量值h;对假设能量消耗和预处理能量迹进行比较(相关运算),正确的密钥猜测对应相关系数的最大值。其中,关键的两点为选择合适的两个中间值和对能量迹进行预处理。
预处理即是对能量迹中相关两点a、b进行组合形成新的能量消耗值。通常并不知道计算掩码性中间值的准确时间,所以只能猜测能量迹的一个时间间隔I=tr+1,…,tr+1,期间可能包含了vm、um的计算,因此需要将预处理函数pr e()应用于该时间间隔内的所有两点组合;一般情况下预处理函数是对称的,预处理后的能量迹的长度为l·(l-1)/2;预处理后的能量迹表示为(pre(tr+1,tr+2),pre(tr+1,tr+3),…,pre(tr+2,tr+3),…,pre(tr+l-1,tr+l));常用的预处理函数一般为:pre(tx,ty)=tx·ty(乘法)、pre(tx,ty)=(tx+ty)2、pre(tx,ty)=|tx-ty|(减法绝对值)、(归一化)、pre(tx,ty)=tx+ty、pre(tx,ty)=tx-ty等。预处理函数的选取将直接影响攻击的结果。
祖冲之算法集(ZUC算法)是由我国学者自主设计的加密和完整性算法,已经被国际组织3GPP推荐为4G无线通信的第三套国际加密和完整性标准的侯选算法。下面对该算法进行简单介绍:祖冲之算法逻辑上分为上中下三层,如图1所示,上层是16级线性反馈移位寄存器(LFSR);中层是比特重组(BR);下层是非线性函数F。(1)LFSR包括16个31比特寄存器单元变量s0,s1,L,s15。LFSR的运行模式有2种:初始化模式和工作模式。在初始化模式下,LFSR接收一个31比特字u。u是由非线性函数F的32比特输出W通过舍弃最低位比特得到,即u=W>>1,在初始化模式下,LFSR计算过程如为:
LFSRWithInitialisationMode(u)
{
(1)v=215s15+217s13+221s10+220s4+(1+28)s0mod(231-1);
(2)s16=(v+u)mod(231-1);
(3)if(s16=0)thens16=231-1;
(4)(s1,s2,L,s15,s16)→(s0,s1,L,s14,s15);
}
在工作模式下,LFSR不接收任何输入。其计算过程如下:
LFSRWithInitialisationMode()
{
(1)s16=215s15+217s13+221s10+220s4+(1+28)s0mod(231-1);
(2)if(s16=0)thens16=231-1;
(3)(s1,s2,L,s15,s16)→(s0,s1,L,s14,s15);
}
(2)比特重组(BR)从LFSR的寄存器单元中抽取128比特组成4个32比特字X0、X1、X2、X3。BR的具体计算过程如下:
Bit Reconstruction()
{
(1)X0=s15H||s14L
(2)X1=s11L||s9H
(3)X2=s7L||s5H
(4)X3=s2L||s0H
}
(3)非线性函数F包含2个32比特记忆单元变量R1和R2。F的输入为3个32比特字X0、X1、X2,输出为一个32比特字W。F的计算过程如下:
F(X0,X1,X2)
{
       ( 1 ) - - - W = ( X 0 ⊕ R 1 ) + R 2
(2)W1=R1+X1
       ( 3 ) - - - W 2 = R 2 ⊕ X 2
(4)R1=S(L1(W1L||W2H))
(5)R2=S(L2(W2L||W1H))
}
其中S为32比特的S盒变换,32比特S盒由4个小的8×8的S盒并置而成,即S=(S0,S1,S2,S3),其中S0=S2,S1=S3。S0主要基于轻量级结构构造思想,采用小S盒构建大S盒的方法设计。具体而言,S0内部使用了3个4×4的小S盒P1、P2、P3组合而成,如图2所示,其中m=5。
S1盒的设计基于有限域GF(28)上的非线性逆函数x-1和线性仿射变换设计,与AES的S盒设计类似。底层有限域GF(28)采用本原多项式x8+x7+x3+x+1定义,S1盒的数学表达式为:其中矩阵M满足:
       M = 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 0 1 C 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1
设S盒S的32比特输入X和32比特输出Y分别为:
X=x0||x1||x2||x3
Y=y0||y1||y2||y3
其中x1和y1均为8比特字节,i=0,1,2,3。则有y1=Si(xj);L1和L2为32比特线性变换,定义如下:
       L 1 ( X ) = X &CirclePlus; ( X < < < 2 ) &CirclePlus; ( X < < < 10 ) &CirclePlus; ( X < < < 18 ) &CirclePlus; ( X < < < 24 )
       L 2 ( X ) = X &CirclePlus; ( X < < < 8 ) &CirclePlus; ( X < < < 14 ) &CirclePlus; ( X < < < 22 ) &CirclePlus; ( X < < < 30 )
祖冲之算法的秘钥装入过程是:将128比特的初始密钥k和128比特的初始向量iv扩展为16个31比特字作为LFSR寄存器单元变量s0,s1,L,s15的初始状态。设k和iv分别为k0||k1||L||k15和iv0||iv1||L||iv15;其中ki和ivi均为8比特字节,0≤i≤15。密钥装入过程如下:(1)D为240比特的常量,可按如下方式分成16个15比特的子串:D=d0||d1||L||d15,其中:
d0=1000100110101112
d1=0100110101111002
d2=1100010011010112
d3=0010011010111102
d4=1010111100010012
d5=0110101111000102
d6=1110001001101012
d7=0001001101011112
d8=1001101011110002
d9=0101111000100112
d10=1101011110001002
d11=0011010111100012
d12=1011110001001102
d13=0111100010011012
d14=1111000100110102
d15=1000111101011002
(2)对0≤i≤15,有si=ki||di||ivi
在初始化阶段,首先把128比特的初始密钥k和128比特的初始向量iv按照前述密钥装入方法装入到LFSR的寄存器单元变量s0,s1,L,s15中,作为LFSR的初态,并置32比特记忆单元变量R1和R2为全O。然后执行下述操作:
重复执行下述过程32次:
(1)Bit Reconstruction();
(2)W=F(X0,X1,X2);
(3)LFSRWithInitialisationMode(W>>1);
工作阶段首先执行下列过程一次,并将F的输出W舍弃:
(1)Bit Reconstruction();
(2)F(X0,X1,X2);
(3)LFSRWithWorkMode();
然后进入密钥输出阶段。在密钥输出阶段,每运行一个节拍,执行下列过程一次,并输出一个32比特的密钥字Z:
(1)Bit Reconstruction();
       ( 2 ) - - - Z = F ( X 0 , X 1 , X 2 ) &CirclePlus; X 3 ;
(3)LFSRWithWorkMode();
目前,利用侧信道分析(SCA),特别是运用能量分析(PA)的侧能量分析方法,通过建立汉明重量模型,使用一阶差分能量分析(DPA)方法可分析出ZUC算法的密钥。了为抵抗DPA/CPA分析,通常采用了掩码防护措施保护ZUC密码算法实现。如何针对具有掩码防护措施保护ZUC密码算法进行二阶能量分析是秘钥破解的重要研究方向。因此,对于具有掩码方案的ZUC密码算法,亟需提出相应有效的二阶侧信道能量分析方法。
发明内容
本发明技术方案的目的在于提出一种针对具备掩码防护的ZUC算法,利用利用不同算法中间值,进行针对性的二阶侧信道能量分析方法获取具备相应掩码方案的ZUC算法密钥信息。
实现上述目的本发明的技术方案为,一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法,该方法包括如下步骤:
(1)采集能量迹建立能耗矩阵E并进行预处理获得处理后的能耗矩阵E’;
(2)选择ZUC算法F函数左右两边S盒输出异或值S_XorOutr作为攻击点计算获得中间矩阵V或分别用汉明重量、单比特确定DPA区分函数D;
(3)计算仿真能耗矩阵H及两个平均能耗矩阵D0和D1
(4)计算仿真能耗矩阵H与能耗矩阵E′之间的相关系数确定相关系数矩阵R,选取R中的最大值rp,q对应的猜测值即为正确的秘钥;或通过计算平均能耗矩阵D0和D1的差,得到平均能耗差矩阵ΔD=D1-D0,选择最大的能耗均值差Δdpq对应的猜测值即为正确的秘钥;
(5)选择S盒运算部分,依次进行5轮运算,依照上述(2)-(4)的分析方法即可获得所有秘钥信息。
上述步骤(1)中的能耗矩阵 E ( N &times; T ) = e 1 1 L e T 1 M e t n M e 1 N L e T N , 其中,N是采集到的ZUC算法运算的能量迹数,T为运算所用的时间,为第n次加/解密运算在时刻t产生的能量消耗值;对能耗矩阵E进行预处理的过程是:设置S盒输出第1个字节与第j个字节体现在能量迹上的时间距离范围为min-max,其中,min和max分别为最小、最大时间点距离,range=max-min+1,对于每条能量迹,依次选***-max范围中的u点,对应的能耗值一一对应进行预处理,预处理方法是减法绝对值、乘法或归一化方法;归一化方法为,当u=min时, e 1 &prime; n = ( e 1 n - &Sigma; i = 1 n e 1 i n ) ( e min n - &Sigma; i = 1 n e min i n ) , e 2 &prime; n = ( e 2 n - &Sigma; i = 1 n e 2 i n ) ( e min + 1 n - &Sigma; i = 1 n e min + 1 i n ) , . . . , e T - min + 1 &prime; n = ( e T - min + 1 n = &Sigma; i = 1 n e T - min + 1 i n ) ( e T n - &Sigma; i = 1 n e T i n ) , 当u=min+1时,依次类推,其中,n为已经分析的能量迹条数,预处理得到新的能耗矩阵 E &prime; ( N &times; T &prime; ) = e 1 &prime; 1 L e T &prime; &prime; 1 M e t &prime; n M e 1 &prime; N L e T &prime; &prime; N .
上述步骤(2)中选择作为攻击点的ZUC算法F函数左右两边S盒输出异或值Rr,1、Rr,2分别为第r轮掩码前的S盒输出值,r依次为0,1,2,3,4,Rr,1=f1(iv,kr+9),Rr,2=f2(iv,kr+5,kr+9),f1、f2分别为F函数左右两边S盒输出函数,iv为初始向量;中间矩阵V的计算为:分别选择猜测秘钥kr+9、kr+5共216个不同值,代入S_XorOutr中得到相应的中间矩阵 V ( N &times; 2 16 ) = v 0 1 K v 2 16 - 1 1 M v m n M v 0 N L v 2 16 - 1 N , 其中 v m n = f 1 ( iv n , k r + 9 , m 0 ) &CirclePlus; f 2 ( iv n , k r + 5 , m 1 , k r + 9 , m 0 ) , m=(m0,m1),ki,j表示为第i个密钥猜测值为j,即j=ki,j,ivn为已知初始向量,m0,m1均为8此特的随机数;分别用汉明重量、单比特方法所确定的DPA区分函数为: D ( iv n , k r + 9 , m 0 , k r + 5 , m 1 ) = 1 HW ( S _ Xor Out r ) < 16 0 HW ( S _ XorOut r ) > 16 其中,bit(x,p)(p∈{0,1,L,31})即中间值x中第p此特的值0或1,分别猜测S_XorOutr中的轮密钥(kr+9,kr+5)共216个不同值,代入则区分函数为1值总个数 n 1 = &Sigma; x = 1 N D ( iv n , k r + 9 , m 0 , k r + 5 , m 1 ) , 0值总个数 n 1 = &Sigma; x = 1 N ( 1 - D ( iv n , k r + 9 , m 0 , k r + 5 , m 1 ) ) .
上述步骤(3)中仿真能耗矩阵 H ( N &times; 2 8 ) = h 0 1 K h 2 8 - 1 1 M h m n M h 0 N L h 2 8 - 1 N ; 两个平均能耗矩阵D0和D1计算过程为:能耗矩阵E′中时间点t,得到该点两个的总能量消耗均值 d 0 m &prime; = &Sigma; n = 1 N ( 1 - D ( iv n , k r + 9 , m 0 , k r + 5 , m 1 ) ) e t &prime; n n 0 d 1 m &prime; = &Sigma; n = 1 N D ( iv n , k r + 9 , m 0 , k r + 5 , m 1 ) e t &prime; n n 1 , 其中,d0′m对应时间点t猜测值为m=(m0,m1)的n0组能量消耗平均值;d1′m对应时间点t猜测值为m=(m0,m1)的n1组能量消耗平均值n0+n1=N,对E′中所有的时间点求能耗均值,得到两个平均能耗矩阵
       D 0 ( 2 16 &times; T &prime; ) = d 0 0 1 K d 0 0 T M d 0 m &prime; M d 0 2 16 - 1 1 L d 0 2 16 - 1 T &prime; , D 1 ( 2 16 &times; T &prime; ) = d 1 0 1 K d 1 0 T M d 1 m &prime; M d 1 2 16 - 1 1 L d 1 2 16 - 1 T &prime;
上述步骤(4)中仿真能耗矩阵H与能耗矩阵E′之间的相关系数矩阵为 R ( 2 16 &times; T &prime; ) = r 0,1 K r 0 , T &prime; M r m , t M r 2 16 - 1,1 1 L r 2 16 - 1 , T &prime; , 其中, r m , t = &Sigma; n = 1 N [ h m n - h m n &OverBar; ] [ e t &prime; n - e t &prime; n &OverBar; ] &Sigma; n = 1 N [ h m n - h m n &OverBar; ] 2 &Sigma; n = 1 N [ e t &prime; n - e t &prime; n &OverBar; ] 2 , 为矩阵H第m列的平均值,为矩阵E′第t列的平均值,选取R中的最大值rp,q对应(kr+9,kr+5)的猜测值(p/28,p%28)即为分析得到的正确秘钥;计算平均能耗矩阵D0和D1的差,选择最大的能耗均值差对应的猜测轮密钥(kr+9,kr+5)的猜测值(p/28,p%28)即为分析得到的正确秘钥值。
本申请的技术方案具有以下优点,解决了当前对具有掩码防护措施的ZUC密码算法实现没有具体的攻击方法的缺陷,针对ZUC算法特定的掩码防护实现方法,创新地提出了新的二阶能量分析方法,开拓了ZUC密码算法攻击的新局面,扩展了对ZUC算法的侧信道能量分析手段,该方法能够更全面有效地对ZUC密码算法实现进行侧信道能量分析;同时本申请技术方案提出的方法是针对常见的掩码防护措施,实用性强,对现有的掩码防护方案设计提供了参考。
附图说明
图1是祖冲之算法逻辑层次结构图;
图2是S0盒结构构建示意图;
图3是ZUC算法一阶掩码S盒防御方式示意;
图4是ZUC算法S盒输出掩码值相同防护的二阶攻击点位置示意;
图5是S盒输出掩码值相同ZUC算法的功耗曲线;
具体实施方式
下面对本发明的技术方案进行具体描述,首先介绍一下一阶简单掩码防护方法,为了节省S盒的存储空间,加快掩码的效率,设计者会对ZUC算法F函数左右两边S盒采用1个32比特随机数m进行掩码预计算,输出则8个S盒的输出仅需进行预计算4个S盒,若使实现更高效,可令m=(m0,m1,m0,m1),其中m0,m1均为8比特的随机数,则仅需进行2个S盒的预处理。如图3所示ZUC算法一阶掩码S盒防御方式示意,左右边S盒的输入分别为 S _ in R &prime; = S _ in R &CirclePlus; n , 其输出值分别 R 1 &prime; = R 1 &CirclePlus; m , R 2 &prime; = R 2 &CirclePlus; m , 其中,m=(m0,m1,m2,m3),n=(n0,n1,n2,n3),i依次为0,1,2,3,xi表示为32位x的第i个字节。对于上述S盒输出掩码值一致的掩码方案,将新S盒的输出进行异或消去掩码,即第r(r依次为0,1,2,3,4)轮的攻击点为 S _ XorOut r = R r , 1 &prime; &CirclePlus; R r , 2 &prime; = R r , 1 &CirclePlus; m &CirclePlus; R r , 2 &CirclePlus; m = R r , 1 &CirclePlus; R r , 2 , 其中,Rr,1、Rr,2、Rr,1′、Rr,2′分别为第r轮掩码前、后的S盒输出值。根据ZUC算法的结构,今Rr,1=f1(iv,kr+9),Rr,2=f2(iv,kr+5,kr+9),f1、f2分别为F函数左右两边S盒输出函数,以iv,kr+9,kr+5作为参数,则分别猜测kr+9、kr+5共16位的密钥值,进行二阶DPA/CPA分析获得kr+9、kr+5的正确值;分别对前5轮进行二阶侧信道分析,r依次为0,1,2,3,4,进行二阶DPA/CPA分析获得ZUC算法的9个轮密钥字节。因此,对于S盒输出掩码值相同的ZUC算法实现,可将S盒输出的异或S_XorOutr作为攻击点,进行二阶侧信道能量分析。具体攻击点的选择如图4所示。
通过对上述攻击点选择的分析,可以确定对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法:采集能量迹建立能耗矩阵E并进行预处理获得处理后的能耗矩阵E’;如图5所示针对左右S盒输出掩码值相同的一阶简单掩码防护的ZUC算法采集初始化前5轮的能量迹,框中为初始化前5轮采集数据,每轮分别R1、R2均带有相同掩码,其中,初始输入的密钥值为: k 0 = 00 , k 1 = 11 , k 2 = 22 , k 3 = 33 , k 4 = 44 , k 5 = 55 , k 6 = 66 , k 7 = 77 k 8 = 88 , k 9 = 99 , k 10 = aa , k 11 = bb , k 12 = cc , k 13 = dd , k 14 = ee , k 15 = ff ; 分别利用归一化方法和减法绝对值方法对能耗矩阵进行预处理;选择ZUC算法F函数左右两边S盒输出异或值S_XorOutr作为攻击点,使用汉明重量模型,进行CPA分析;采用预处理方法为归一化的分析结果如表1所示,当相关系数与最大相关系数比率值最小,其相关系数最大值对应的密钥猜测值为正确密钥。
表1:预处理为归一化的二阶能量分析结果
      
      
同样采用预处理方法为减法绝对值方法进行二阶分析,实验结果如表2所示,由表2可知通过二阶能量分析也可以可获得正确密钥。
表2:预处理为减法绝对值方法时的的二阶能量分析结果
      
通过上述对一阶掩码防护的二阶能量分析,可知利用本申请方法可以成功分析出该防护的密钥且两种不同的预处理方法分析结果相同。
上述技术方案仅体现了本发明技术方案的优选技术方案,本技术领域的技术人员对其中某些部分所可能做出的一些变动均体现了本发明的原理,属于本发明的保护范围之内。

Claims (5)

1.一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法,其特征在于,该方法包括如下步骤:
(1)采集能量迹建立能耗矩阵E并进行预处理获得处理后的能耗矩阵E′;
(2)选择ZUC算法F函数左右两边S盒输出异或值S_XorOutr作为攻击点计算获得中间矩阵V或分别用汉明重量、单比特确定DPA区分函数D;
(3)计算仿真能耗矩阵H及两个平均能耗矩阵D0和D1
(4)计算仿真能耗矩阵H与能耗矩阵E′之间的相关系数确定相关系数矩阵R,选取R中的最大值rp,q对应的猜测值即为正确的秘钥;或通过计算平均能耗矩阵D0和D1的差,得到平均能耗差矩阵ΔD=D1-D0,选择最大的能耗均值差Δdp q对应的猜测值即为正确的秘钥;
(5)选择S盒运算部分,依次进行5轮运算,依照上述(2)-(4)的分析方法即可获得所有秘钥信息。
2.根据权利要求1所述的对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法,其特征在于,步骤(1)中的能耗矩阵 E ( N &times; T ) = e 1 1 L e T 1 M e t n M e 1 N L e T N , 其中,N是采集到的ZUC算法运算的能量迹数,T为运算所用的时间,为第n次加/解密运算在时刻t产生的能量消耗值;对能耗矩阵E进行预处理的过程是:设置S盒输出第1个字节与第j个字节体现在能量迹上的时间距离范围为min-max,其中,min和max分别为最小、最大时间点距离,range=max-min+1,对于每条能量迹,依次选***-max范围中的u点,对应的能耗值——对应进行预处理,预处理方法是减法绝对值、乘法或归一化方法;归一化方法为,当u=min时, e 2 &prime; n = ( e 2 n - &Sigma; i = 1 n e 2 i n ) ( e min + 1 n - &Sigma; i = 1 n e min + 1 i n ) , . . . , e T - min + 1 &prime; n = ( e T - min + 1 n - &Sigma; i = 1 n e T - min + 1 i n ) ( e T n - &Sigma; i = 1 n e T i n ) , 当u=min+1时,依次类推,其中,n为已经分析的能量迹条数,预处理得到新的能耗矩阵 E &prime; ( N &times; T &prime; ) = e 1 &prime; 1 L e T &prime; &prime; 1 M e t &prime; n M e 1 &prime; N L e T &prime; &prime; N .
3.根据权利要求1所述的对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法,其特征在于,步骤(2)中选择作为攻击点的ZUC算法F函数左右两边S盒输出异或值Rr,1、Rr,2分别为第r轮掩码前的S盒输出值,r依次为0,1,2,3,4,Rr,i=f1(iv,kr+9),Rr,2=f2(iv,kr+5,kr+9),f1、f2分别为F函数左右两边S盒输出函数,iv为初始向量;中间矩阵V的计算为:分别选择猜测秘钥kr+9、kr+5共216个不同值,代入S_XorOutr中得到相应的中间矩阵 V ( N &times; 2 16 ) = v 0 1 K v 2 16 - 1 1 M v m n M v 0 N L v 2 16 - 1 N , 其中m=(m0,m1),ki,j表示为第i个密钥猜测值为j,即j=ki,j,iv″为已知初始向量,m0,m1均为8比特的随机数;分别用汉明重量、单比特方法所确定的DPA区分函数为: D ( iv n , k r + 9 , m 0 , k r + 5 , m 1 ) = 1 HW ( S _ XorOut r ) < 16 0 HW ( S _ XorOut r ) > 16 其中,bit(x,p)(p∈{0,1,L,31})即中间值x中第p比特的值0或1,分别猜测S_XorOutr中的轮密钥(kr+9,kr+5)共216个不同值,代入则区分函数为1值总个数 n 1 = &Sigma; x = 1 N D ( iv n , k r + 9 , m 0 , k r + 5 , m 1 ) , 0值总个数 n 1 = &Sigma; x = 1 N ( 1 - D ( iv n , k r + 9 , m 0 , k r + 5 , m 1 ) ) .
4.根据权利要求1所述的对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法,其特征在于,步骤(3)中仿真能耗矩阵 H ( N &times; 2 8 ) = h 0 1 K h 2 8 - 1 1 M h m n M h 0 N L h 2 8 - 1 N ; 两个平均能耗矩阵D0和D1计算过程为:能耗矩阵E′中时间点t,得到该点两个的总能量消耗均值 d 0 m t = &Sigma; n = 1 N ( 1 - D ( iv n , k r + 9 , m 0 , k r + 5 , m 1 ) ) e t &prime; n n 0 d 1 m t = &Sigma; n = 1 N D ( iv n , k r + 9 , m 0 , k r + 5 , m 1 ) e t &prime; n n 1 , 其中,对应时间点t猜测值为m=(m0,m1)的n0组能量消耗平均值;对应时间点t猜测值为m=(m0,m1)的n1组能量消耗平均值n0+n1=N,对E′中所有的时间点求能耗均值,得到两个平均能耗矩阵 D 0 ( 2 16 &times; T &prime; ) = d 0 0 1 K d 0 0 T &prime; M d 0 m t M d 0 2 16 - 1 1 L d 0 2 16 - 1 T &prime; ,
D 1 ( 2 16 &times; T &prime; ) = d 1 0 1 K d 1 0 T &prime; M d 1 m t M d 1 2 16 - 1 1 L d 1 2 16 - 1 T &prime; .
5.根据权利要求1所述的对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法,其特征在于,步骤(4)中仿真能耗矩阵H与能耗矩阵E′之间的相关系数矩阵为 R ( 2 16 &times; T &prime; ) = r 0,1 K r 0 , T &prime; M r m , t M r 2 16 - 1,1 1 L r 2 16 - 1 , T &prime; , 其中,为矩阵H第m列的平均值,为矩阵E′第t列的平均值,选取R中的最大值rp,q对应(kr+9,kr+5)的猜测值(p/28,p%28)即为分析得到的正确秘钥;计算平均能耗矩阵D0和D1的差,选择最大的能耗均值差对应的猜测轮密钥(kr+9,kr+5)的猜测值(p/28,p%28)即为分析得到的正确秘钥值。
CN201510221360.9A 2015-05-05 2015-05-05 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法 Pending CN104811295A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510221360.9A CN104811295A (zh) 2015-05-05 2015-05-05 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510221360.9A CN104811295A (zh) 2015-05-05 2015-05-05 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法

Publications (1)

Publication Number Publication Date
CN104811295A true CN104811295A (zh) 2015-07-29

Family

ID=53695814

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510221360.9A Pending CN104811295A (zh) 2015-05-05 2015-05-05 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法

Country Status (1)

Country Link
CN (1) CN104811295A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107547193A (zh) * 2016-06-28 2018-01-05 埃沙尔公司 使替换运算免受侧信道分析的方法
TWI611682B (zh) * 2016-06-03 2018-01-11 華邦電子股份有限公司 破解裝置以及方法
US10277392B2 (en) 2016-06-03 2019-04-30 Winbond Electronics Corp. Cracking devices and methods thereof
CN114531232A (zh) * 2021-12-31 2022-05-24 南京理工大学 多信道旁路信号安全分析与检测***
CN114765530A (zh) * 2022-03-17 2022-07-19 西安电子科技大学 基于反馈移位寄存器的流密码相邻时钟差分能量分析方法
CN114785478A (zh) * 2022-03-30 2022-07-22 南京航空航天大学 应用于多项式硬件乘法的侧信道相关能量分析方法及***

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571331A (zh) * 2012-02-07 2012-07-11 中国科学院软件研究所 一种用于防御能量分析攻击的密码算法实现保护方法
CN103166752A (zh) * 2013-01-25 2013-06-19 国家密码管理局商用密码检测中心 选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用
CN103647637A (zh) * 2013-11-19 2014-03-19 国家密码管理局商用密码检测中心 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法
CN103813313A (zh) * 2012-11-07 2014-05-21 中国科学院微电子研究所 一种祖冲之算法的硬件实现装置及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571331A (zh) * 2012-02-07 2012-07-11 中国科学院软件研究所 一种用于防御能量分析攻击的密码算法实现保护方法
CN103813313A (zh) * 2012-11-07 2014-05-21 中国科学院微电子研究所 一种祖冲之算法的硬件实现装置及方法
CN103166752A (zh) * 2013-01-25 2013-06-19 国家密码管理局商用密码检测中心 选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用
CN103647637A (zh) * 2013-11-19 2014-03-19 国家密码管理局商用密码检测中心 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI611682B (zh) * 2016-06-03 2018-01-11 華邦電子股份有限公司 破解裝置以及方法
US10277392B2 (en) 2016-06-03 2019-04-30 Winbond Electronics Corp. Cracking devices and methods thereof
CN107547193A (zh) * 2016-06-28 2018-01-05 埃沙尔公司 使替换运算免受侧信道分析的方法
CN114531232A (zh) * 2021-12-31 2022-05-24 南京理工大学 多信道旁路信号安全分析与检测***
CN114531232B (zh) * 2021-12-31 2024-03-19 南京理工大学 多信道旁路信号安全分析与检测***
CN114765530A (zh) * 2022-03-17 2022-07-19 西安电子科技大学 基于反馈移位寄存器的流密码相邻时钟差分能量分析方法
CN114785478A (zh) * 2022-03-30 2022-07-22 南京航空航天大学 应用于多项式硬件乘法的侧信道相关能量分析方法及***
CN114785478B (zh) * 2022-03-30 2024-07-09 南京航空航天大学 应用于多项式硬件乘法的侧信道相关能量分析方法及***

Similar Documents

Publication Publication Date Title
CN103166752B (zh) 选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用
CN103227717B (zh) 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的方法
CN104811295A (zh) 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法
CN103138917B (zh) 以s盒输入为基础的汉明距离模型进行sm4密码算法侧信道能量分析方法
CN103647637B (zh) 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法
CN103825722B (zh) 一种sm4密码算法的二阶侧信道能量分析方法
CN106788974A (zh) 掩码s盒、分组密钥计算单元、装置及对应的构造方法
CN104852795A (zh) 一种轮输出为布尔掩码的zuc序列密码算法掩码防护方法
CN103457719A (zh) 一种对sm3密码算法hmac模式的侧信道能量分析方法
CN1989726A (zh) 用于执行加密计算的方法和装置
CN103258312B (zh) 具有快速密钥流生成机制的数字图像加密方法
CN103067155A (zh) 一种防止基于功耗分析的des算法攻击的方法及测试电路
CN103905182B (zh) 基于动态改变中间数据存储位置的抗攻击方法及电路实现
CN103532973A (zh) 面向des算法电路的差分功耗攻击测试方法
CN104333447A (zh) 一种可抵御能量分析攻击的sm4方法
Duan et al. Differential power analysis attack and efficient countermeasures on PRESENT
CN103679008A (zh) 一种高效的安全芯片功耗攻击测试方法
CN104301095A (zh) Des轮运算方法和电路
CN106656459A (zh) 一种针对sm3‑hmac的侧信道能量分析方法和装置
CN104796250A (zh) 针对RSA密码算法M-ary实现的侧信道攻击方法
CN103916236A (zh) 面向aes算法的抗功耗攻击方法及电路实现
CN104967509B (zh) 一种轮输出为算术掩码的zuc序列密码算法掩码防护方法
CN103259647A (zh) 加密***边信道攻击测试方法
CN104811297A (zh) 针对RSA之M-ary实现模乘余数输入侧信道攻击
Luo et al. Cryptanalysis of a chaotic block cryptographic system against template attacks

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20150729

RJ01 Rejection of invention patent application after publication