CN104852795B - 一种轮输出为布尔掩码的zuc序列密码算法掩码防护方法 - Google Patents
一种轮输出为布尔掩码的zuc序列密码算法掩码防护方法 Download PDFInfo
- Publication number
- CN104852795B CN104852795B CN201510221466.9A CN201510221466A CN104852795B CN 104852795 B CN104852795 B CN 104852795B CN 201510221466 A CN201510221466 A CN 201510221466A CN 104852795 B CN104852795 B CN 104852795B
- Authority
- CN
- China
- Prior art keywords
- mtd
- mask
- mrow
- box
- algorithm
- 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.)
- Active
Links
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 70
- 238000000034 method Methods 0.000 claims abstract description 48
- 238000006243 chemical reaction Methods 0.000 claims description 18
- 238000004364 calculation method Methods 0.000 claims description 13
- 230000000873 masking effect Effects 0.000 claims description 6
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 claims description 5
- 230000009466 transformation Effects 0.000 claims description 5
- 239000011159 matrix material Substances 0.000 claims description 3
- 101100391182 Dictyostelium discoideum forI gene Proteins 0.000 claims description 2
- 230000015572 biosynthetic process Effects 0.000 claims description 2
- 125000004122 cyclic group Chemical group 0.000 claims description 2
- 238000001514 detection method Methods 0.000 claims description 2
- 238000003786 synthesis reaction Methods 0.000 claims description 2
- 238000000844 transformation Methods 0.000 claims description 2
- 239000002131 composite material Substances 0.000 claims 1
- 238000004458 analytical method Methods 0.000 abstract description 55
- 230000006870 function Effects 0.000 abstract description 18
- 238000013461 design Methods 0.000 abstract description 5
- 238000012546 transfer Methods 0.000 abstract description 2
- 238000005265 energy consumption Methods 0.000 description 11
- 230000007123 defense Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 7
- 230000000875 corresponding effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000011068 loading method Methods 0.000 description 3
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
Landscapes
- Respiratory Apparatuses And Protective Means (AREA)
Abstract
本发明公开了一种轮输出为布尔掩码的ZUC序列密码算法掩码防护方法,该方法包括:(1)选择需要掩码的轮数,初始化前N轮,分别与掩码m0,1=m1、m0,2=m2异或作为输入;(2)异或运算通过转换函数h(x,y)转化成加法运算;(3)加法运算通过转化函数为g(x,y)转化成异或运算;(4)移位及对应分别进行L1线性L2线性运算;(5)对左、右S盒进行运算形成新的SL′及SR′;(6)对于F函数的W输出运算。本申请的技术方案设计的掩码防护方法运算中每个节点所带的掩码值均不相同,每轮S盒输出的掩码值也不相同,可抵抗汉明重量和汉明距离的一阶分析,此外,二阶分析也无法找到任何可利用的泄漏点。
Description
技术领域
本发明属于密码算法的防护技术领域,特别是为了使祖冲之序列密码算法(ZUC)抵抗侧信道分析,保护密钥k,设计了一种针对ZUC算法的掩码防护方法,即针对轮输出为布尔掩码的ZUC序列密码算法掩码防护方法;该方法随机化算法的中间值,使得设备的能量消耗与所执行的密码算法的中间值之间无依赖关系。
背景技术
随着信息技术的发展,各种密码算法正被广泛地应用于经济、军事、行政等重要部门,保护信息的安全性。鉴于密码算法的重要性,密码算法软硬件实现(密码模块)的分析研究对保护信息安全具有重要的意义。
近年来,多种对密码模块的攻击已广为人知,所有这些攻击的目的都是为了获取密码模块中的密钥。通常的攻击方式可分为侵入式攻击、半侵入式攻击和非侵入式攻击。近年来,由于非侵入式攻击中的侧信道分析实施方便、相对成本低廉而被广泛使用。侧信道分析可以细分为计时分析、能量分析和电磁分析。其中的侧信道能量分析是众多分析手段中最常用的方法之一,它突破了传统密码算法的分析模式,能力强大,实施相对容易。侧信道能量分析利用了密码模块能量消耗与数据运算和执行之间的相关性,基于密码算法实现的能量泄露函数建立能量模型,使用统计方法,猜测和验证密码模块使用的受保护密钥,几乎可被用于破解所有的对称密码和公钥密码。破解时,仅需要数十条能量迹就可以在几分钟内迅速地破解没有防御措施的大多数智能卡。侧信道能量分析方法一般包括,简单能量分析(SPA)、差分能量分析(DPA)、相关能量分析(CPA)和高阶差分能量分析(HODPA)。
直接利用能量迹各尖峰形状不同这一特性的攻击称为简单能量分析攻击SPA(Simple Power Analysis);根据密码设备的能量消耗依赖于算法执行过程中所处理的中间值分别为0和1时,所对应的平均能量迹之间的差异进行密钥恢复的攻击方法称为差分能量分析攻击DPA(Differential Power Analysis);若密码分析者利用假设能量消耗和真正能量消耗之间的线性相关性进行密钥恢复,则为相关能量分析攻击CPA(CorrelationPower Analysis);在上述DPA分析中,如果仅利用了一个中间值,称为一阶DPA攻击,若是利用算法运算中的某种联合泄漏,该联合泄漏基于出现在密码设备中的多个中间值,则称相应的DPA攻击为高阶DPA分析。
鉴于当前对密码算法进行功耗分析攻击技术的不断发展,为应对能量分析带来的挑战,针对功耗分析攻击的防御技术也不断进步。抗功耗分析的防御技术包括各种隐藏技术和掩码技术,任何防御技术的目标都是使密码设备的能量消耗不依赖于设备所执行的密码算法中间值。
隐藏技术是通过能量消耗随机化,使所有操作具有相同能量消耗等方式切断被处理的中间值与设备能量消耗之间的关系。采用隐藏技术的密码设备与未加防护的设备执行相同的操作,但无法从中获取可用信息。
掩码技术是采用随机化密码设备所处理的中间值,对算法实现加入随机化掩码。其可以在算法级实现,无需改变密码设备的能量消耗特性,使设备的能量消耗与所执行的密码算法的中间值之间无依赖关系。
在掩码防御方案中,算法运算的中间值v都基于一个称为掩码的随机数m进行变换,即vm=v*m。掩码产生于密码设备内部,并且在每一次执行过程中各不相同,因此攻击者不能获知掩码。运算*通常根据密码算法所使用的操作进行定义。因此,运算*多为布尔异或运算、模加运算或模乘运算。在模加运算和模乘运算的情况下,模数根据密码算法进行选择。通常,掩码直接应用于明文或密钥。为了能够处理掩码型中间值以及对掩码进行跟踪,需要对算法进行修改。加密的结果也是掩码型的,为了获得密文,需要在计算结束时消除掩码。要保持每一个中间值在计算过程中始终处于被掩码状态,这一点非常重要。即使某一个中间值是基于它之前的中间值计算得到,保持上述性质仍然很重要。由于上述原因,对不同的中间值,往往需要分别采用不同的掩码。处于对实现性能的考虑,对每一个中间值采用一个新掩码并不合算。因此,为了获得合适的性能,需要仔细选择掩码的数量。
在算法一个执行路径中所叠加的掩码数量,称为算法掩码防御方案的阶数,对相应阶数的掩码进行能量分析的方法,称为高阶能量能量分析。一阶掩码可以防御一阶的能量分析,但不能防御二阶能量分析;二阶掩码可以防御二阶能量分析,但不能防御三阶能量分析。通常考虑到防御和分析的指数递增运算量增加,以及算法结构上可利用的能量泄露的点的限制,通常分组算法实现只能做到二阶能量分析,相应的防御措施也一般只做到二阶掩码防御即可。
祖冲之算法集(ZUC算法)是由我国学者自主设计的加密和完整性算法,已经被国际组织3GPP推荐为4G无线通信的第三套国际加密和完整性标准的侯选算法。下面对该算法进行简单介绍:祖冲之算法逻辑上分为上中下三层,如图1所示,上层是16级线性反馈移位寄存器(LFSR);中层是比特重组(BR);下层是非线性函数F。(1)LFSR包括16个31比特寄存器单元变量s0,s1,…,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)then s16=231-1;
(4)(s1,s2,…,s15,s16)→(s0,s1,…,s14,s15);
}
在工作模式下,LFSR不接收任何输入。其计算过程如下:
LFSRWithInitialisationMode()
{
(1)s16=215s15+217s13+221s10+220s4+(1+28)s0mod(231-1);
(2)if(s16=0)then s16=231-1;
(3)(s1,s2,…,s15,s16)→(s0,s1,…,s14,s15);
}
(2)比特重组(BR)从LFSR的寄存器单元中抽取128比特组成4个32比特字X0、X1、X2、X3。BR的具体计算过程如下:
BitReconstruction()
{
(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)
(2)W1=R1+X1
(3)
(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满足:
设S盒S的32比特输入X和32比特输出Y分别为:
X=x0||x1||x2||x3
Y=y0||y1||y2||y3
其中xi和yi均为8比特字节,i=0,1,2,3。则有yi=Si(xi);L1和L2为32比特线性变换,定义如下:
祖冲之算法的秘钥装入过程是:将128比特的初始密钥k和128比特的初始向量iv扩展为16个31比特字作为LFSR寄存器单元变量s0,s1,…,s15的初始状态。设k和iv分别为k0||k1||…||k15和iv0||iv1||…||iv15;其中ki和ivi均为8比特字节,0≤i≤15。密钥装入过程如下:(1)D为240比特的常量,可按如下方式分成16个15比特的子串:D=d0||d1||…||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,…,s15中,作为LFSR的初态,并置32比特记忆单元变量R1和R2为全0。然后执行下述操作:
重复执行下述过程32次:
(1)BitReconstruction();
(2)W=F(X0,X1,X2);
(3)LFSRWithInitialisationMode(W>>1);
工作阶段首先执行下列过程一次,并将F的输出W舍弃:
(1)BitReconstruction();
(2)F(X0,X1,X2);
(3)LFSRWithWorkMode();
然后进入密钥输出阶段。在密钥输出阶段,每运行一个节拍,执行下列过程一次,并输出一个32比特的密钥字Z:
(1)BitReconstruction();
(2)
(3)LFSRWithWorkMode();
目前,利用侧信道分析(SCA),特别是运用能量分析(PA)的侧能量分析方法,通过建立汉明重量模型,使用一阶差分能量分析(DPA)方法可分析出ZUC算法的密钥。作为DPA/CPA分析,通常采用了掩码防护措施保护ZUC密码算法实现。本发明考虑掩码技术的易操作性及有效性,在密码防护方面特别是对ZUC算法的结构和相关掩码防御技术需要进行深入研究分析,设计了抗侧信道的掩码防御方法
发明内容
本发明技术方案的目的在于为了抵抗针对ZUC算法的侧信道分析,考虑线性移位寄存器的数据影响传递性以及能耗的泄露点,以及掩码技术的易操作性及有效性,针对于F函数,保护ZUC算法初始化过程中的前N(1≤N≤32)轮,实现ZUC序列算法掩码防护的策略。
实现上述目的本发明的技术方案为,一种轮输出为布尔掩码的ZUC序列密码算法掩码防护方法,该方法包括如下步骤:(1)选择需要掩码的轮数,初始化前N轮,1≤N≤32,r∈{0,1,…,N-1}为当前轮数,随机选取2个32位随机数m1、m2,每轮随机选取2个32位随机数mr,3、mr,4,在N轮中各不相同;若是第0轮,对于第1轮F函数的输入R1=0、R2=0,分别与掩码m0,1=m1、m0,2=m2异或作为输入;若是第r(r∈{1,…,N-1})轮的R1、R2输入,无需再异或掩码值;(2)将的异或运算通过转换函数h(x,y)转化成加法运算R1+mr,1,转化函数为h(x,y)定义为:(3)R1+mr,1与X1-mr,1+mr,3相加得R1+X1+mr,3,右边与异或得再将已知的R1+X1+mr,3、mr,3中R1+X1+mr,3的加法运算通过转化函数为g(x,y)转化成异或运算转换函数g(x,y)定义为:(4)通过移位后,左边的及右边变换为在对应分别进行L1线性运算,左边转化成L2线性运算,右边转化成其中,L1(mr,3,L||mr,4,H)=(a0,a1,a2,a3),L2(mr,4,L||mr,3,H)=(b0,b1,b2,b3);(5)对左、右S盒进行运算形成新的SL'及SR';运算方法是通过S盒预计算查表获得或通过公式在算法运算中通过S盒掩码计算获得;(6)对于F函数的W输出,对每1轮的X0加掩码防护得到则由于mr+1,2为已知,可将的异或运算转化成加法运算为由于mr+1,2为已知,可对的异或运算转化成加法运算为R2+mr+1,2;则加上R2+mr+1,2即为正确的W输出。
上述步骤(2)中异或(布尔)运算转化成加法(算术)运算h(x,y)的原理为:已知X、r为已知值,x不能参与运算,求A=x+r,即输入(X,r),求输出A=h(X,r)的算法如下:已知对于可得
得
即将加法掩码转化成异或掩码,具体算法步骤如下:
上述步骤(3)中,加法运算转化成异或运算g(x,y)的原理为,已知A=x+r,A、r为已知值,x不能参与运算,求即输入(A,r),求输出X=g(A,r)算法如下:已知则对于可得其中,K为32,tK-1满足:
从而可得即将加法掩码转化成异或掩码,其具体算法步骤为:
上述步骤步骤(5)中,通过S盒预计算查表获得的具体方法是:
S1、引入5个4比特的随机数r1、r2、r3、r4、r5,新S盒S0'(x)输入为
S2、预计算S盒 其中,Pi、Pi'(i=1,2,3)分别为掩码前后的S盒,每个S盒均为4×4小S盒,每个字节可存储S盒表中的两个值,共需24字节的存储空间;
S3、对于S0盒输入的8比特数据x=x1||x2,左右两边4比特数据x1、x2分别异或r1、r2,得到
S4、对右边进行P1'查表,得到
S5、左边与异或得进行P2'查表,得到
S6、右边与异或得进行P3'查表,得到
S7、左边与异或得
右边输出
其中y1、y2分别为左右两边不带掩码时的输出;将左右两部分联合在一起经过m比特循环移位后,得到S0的输出其中y=(y1||y2)<<<m,为不带掩码时的S0输出。
上述步骤(5)中,通过公式在算法运算中通过S盒掩码计算是采用了有限域转化成合成域上的求逆运算,形成一个新的S盒,其具体步骤为:
S1、引入1个8比特的随机数m,新S盒S1'(x)的输入为
S2、S盒的输入掩码m∈GF(28)进行合成域T转换成GF((24)2)合成域的T(m);
S3、将T(m)进行乘法运算得
S4、对T(m)进行平方运算得T(m)2,与异或得T(x)T(m);
S5、将T(x)T(m)输入一个0值检测函数F(x)中,判断T(x)T(m)是否为0,若为0,函数F(x)=1,否则为0,该步用于抗零值攻击;
S6、对T(x)T(m)进行逆运算,得T(x)-1T(m)-1;
S7、T(x)-1T(m)-1异或1得
S8、与T(m)进行乘法运算,得
S9、进行合成域T-1逆转换成GF(28)中的
S10、对进行仿射变换得即新S盒
上述运算中,若逆运算的输入为0,则F(x)=1,s(x,y)运算的输出为T(m);求逆运算的输出为T(m)-1,异或1为与T(m)相乘为异或F(x)=1,得到输出为T(m);再进行T逆转换和仿射变换,得
本申请的技术方案设计的掩码防护方法运算中每个节点所带的掩码值均不相同,每轮S盒输出的掩码值也不相同,可抵抗汉明重量和汉明距离的一阶分析,此外,二阶分析也无法找到任何可利用的泄漏点。其优点在于:(1)针对现有对ZUC算法的侧信道分析,创新地提出了对ZUC算法的抗侧信道掩码防护方法,使用本发明提出的新方法能够更有效、全面地抵抗侧信道分析;(2)对于ZUC算法的软硬件实现,采用该掩码防护方法,算法中无任何信息泄漏点,可以抵抗一阶侧信道分析;(3)采用该掩码防护方法,算法中无任何两个相关的信息点,可以抵抗二阶侧信道分析;(4)该掩码防护方法中的S盒掩码方案可有效地提高效率。
附图说明
图1是祖冲之算法逻辑层次结构图;
图2是S0盒结构构建示意图;
图3是对轮输出为布尔掩码的ZUC序列密码算法掩码防护原理图;
图4是S0的掩码原理结构;
图5是S1的掩码原理结构;
图6是ZUC算法的初始化能量迹;
图7是ZUC算法初始化运算信号处理后的能量迹;
具体实施方式
下面对本发明的技术方案进行具体描述,以智能卡芯片为载体,利用本申请的技术方案实现ZUC算法的掩码防护功能。这里,选择掩码的轮数N=5。具体步骤如下所示:
(1)对于初始化前5轮,随机选取2个32位随机数m1、m2(r∈{0,1,…,4})。每轮随机选取2个32位随机数mr,3、mr,4,在5轮中各不相同;
(2)对于第0轮F函数的输入R1=0、R2=0,分别异或掩码m0,1=m1、m0,2=m2后得到输入m0,1、m0,2;对于第1、2、3、4轮的R1、R2输入,由于前1轮S盒输出带有掩码防护为无需再异或掩码值;
(3)将的异或运算通过转化成加法运算R1+mr,1,图3中标识符为异或运算转换成加法运算;
(4)R1+mr,1与X1-mr,1+mr,3相加得R1+X1+mr,3,右边与异或得
(5)已知R1+X1+mr3、mr3的值,将R1+X1+mr1的加法运算通过转化成异或运算
(6)经过16位移位后,左右两边分别为
(7)L1线性运算后,左边转化成L2线性运算后,右边转化成其中,L1(mr,3,L||mr,4,H)=(a0,a1,a2,a3),L2(mr,4,L||mr,3,H)=(b0,b1,b2,b3);
(8)进行SL'运算,共包括4个S盒,SL'=(S'L,0,S'L,1,S'L,2,S'L,3)。(c0,c1,c2,c3)为32比特,每轮均不相同,且mr+1,1=(c0,c1,c2,c3)。当S盒采用掩码方案实时计算时,
其中,m3、m4、m5、n3、n4、n5分别为4比特随机数,c1=Ma1、c3=Ma3;当S盒采用预计算查表时,需在运算前将4个掩码后的新S盒预计算并存储,在运算中通过查表获取新S盒的输出,(c0,c1,c2,c3)为32比特随机数。同理,可分别采用上述方法进行SR'运算,共包括4个S盒,SR'=(S'R,0,S'R,1,S'R,2,S'R,3),其中,(d0,d1,d2,d3)为32比特,每轮均不相同,且mr+1,2=(d0,d1,d2,d3)。当S盒采用掩码方案实时计算时,如图4所示, 其中,m'3、m'4、m'5、n'3、n'4、n'5分别为4比特随机数,d1=Md1、d3=Mb3;当S盒采用预计算查表时,如图5所示,需在运算前将4个掩码后的新S盒预计算并存储,在运算中通过查表获取新S盒的输出,(d0,d1,d2,d3)为32比特随机数。综上所述,得到新1轮的F函数输入 依次进行5轮迭代运算;
(9)对于F函数的W输出,对每1轮的X0加掩码防护得到则由于mr+1,2为已知,可将的异或运算转化成加法运算为由于mr+1,2为已知,可对的异或运算转化成加法运算为R2+mr+1,2;则加上R2+mr+1,2即为正确的W输出。
下面利用选择CPA分析来验证本申请的掩码方法的可靠性,采集智能卡芯片进行ZUC算法运算中的能耗曲线,对其进行一阶的能量分析,这里以S盒具体实验步骤如下所示:采集带掩码防护方法的ZUC算法软件卡初始化阶段的能量迹,其中,S盒掩码在运算过程实时计算,如图6所示,为采集到的能量迹数据,其中初始输入的密钥值为:
对图6的能量迹进行低通滤波并对齐,如图7所示。假设最理想的攻击条件:已知前一轮密钥值,攻击算法的每一轮。例如:在分析k10时,假设已知k5,k9的密钥值,即k9=0x22,k5=0x66。选择S盒输出的汉明重量模型,以获得k5、k6、k7、k8、k9、k10、k11、k12、k13的值。利用CPA分析结果如下表1所示,分别罗列了前4个最大相关系数对应的密钥猜测值及采样时间点位置,显而易见无法获得正确的密钥值。
表1:S盒掩码后的ZUC算法进行CPA分析结果
上述技术方案仅体现了本发明技术方案的优选技术方案,本技术领域的技术人员对其中某些部分所可能做出的一些变动均体现了本发明的原理,属于本发明的保护范围之内。
Claims (5)
1.一种轮输出为布尔掩码的ZUC序列密码算法掩码防护方法,其特征在于,该方法包括如下步骤:
(1)选择需要掩码的轮数,初始化前N轮,1≤N≤32,r∈{0,1,…,N-1}为当前轮数,随机选取2个32位随机数m1、m2,每轮随机选取2个32位随机数mr,3、mr,4,在N轮中各不相同;定义mr,1、mr,2分别为第r轮轮输入R1、R2的异或掩码,若是第0轮,F函数的输入R1=0、R2=0,分别与掩码m0,1=m1、m0,2=m2异或作为输入;若是第r(r∈{1,…,N-1})轮的R1、R2自带掩码mr,1、mr,2,无需再异或掩码值;
(2)将的异或运算通过转换函数h(x,y)转化成加法运算R1+mr,1,转化函数为h(x,y)满足
(3)R1+mr,1与X1-mr,1+mr,3相加得R1+X1+mr,3,右边与异或得其中Xi(0≤i≤3)为ZUC算法LFSR寄存器单元中抽取128比特组成的4个32比特字,已知R1+X1+mr,3、mr,3,将(R1+X1)与mr,3的加法运算通过转化函数g(x,y)转化成异或运算其中W1=X1+R1,转换函数g(x,y)满足条件则
(4)通过移位后,左边的及右边变换为
其中mr,i,H、mr,i,L(i=3,4)分别为mr,i的高、低16比特值,在对应分别进行L1线性运算,左边转化成L2线性运算,右边转化成其中,Wi,H、Wi,L(i=1,2)分别为Wi的高、低16比特值,L1(mr,3,L||mr,4,H)=(a0,a1,a2,a3),L2(mr,4,L||mr,3,H)=(b0,b1,b2,b3);
(5)对左、右S盒进行运算形成新的SL'及SR';运算方法是通过S盒预计算查表获得或通过公式在算法运算中通过S盒掩码计算获得;
(6)对于每轮F函数的W输出,,对每1轮的X0加掩码防护得到则其中,X0、X1、X2、X3为ZUC算法LFSR的寄存器单元中抽取128比特组成4个32比特字;由于mr+1,2为已知,可将的异或运算转化成加法运算为由于mr+1,2为已知,可对的异或运算转化成加法运算为R2+mr+1,2;则加上R2+mr+1,2即为正确的W输出。
2.根据权利要求1所述的轮输出为布尔掩码的ZUC序列密码算法掩码防护方法,其特征在于,步骤(2)中异或运算转化成加法运算h(x,y)的原理为:已知X、r为已知值,x不能参与运算,求A=x+r,即输入(X,r),求输出A=h(X,r)的算法如下:已知对于引入任意随机数γ可得得即将加法掩码转化成异或掩码,令运算中间值为T,具体算法步骤如下:
<mrow>
<mi>T</mi>
<mo>=</mo>
<mi>X</mi>
<mo>&CirclePlus;</mo>
<mi>&gamma;</mi>
</mrow>
T=T-γ
<mrow>
<mi>T</mi>
<mo>=</mo>
<mi>T</mi>
<mo>&CirclePlus;</mo>
<mi>X</mi>
</mrow>
<mrow>
<mi>&gamma;</mi>
<mo>=</mo>
<mi>r</mi>
<mo>&CirclePlus;</mo>
<mi>&gamma;</mi>
</mrow>
<mrow>
<mi>A</mi>
<mo>=</mo>
<mi>X</mi>
<mo>&CirclePlus;</mo>
<mi>&gamma;</mi>
</mrow>
A=A-γ
<mrow>
<mi>A</mi>
<mo>=</mo>
<mi>A</mi>
<mo>&CirclePlus;</mo>
<mi>T</mi>
</mrow>
A=A+(r<<1)。
3.根据权利要求1所述的轮输出为布尔掩码的ZUC序列密码算法掩码防护方法,其特征在于,步骤(3)中,加法运算转化成异或运算g(x,y)的原理为,已知A=x+r,A、r为已知值,x不能参与运算,求即输入(A,r),求输出X=g(A,r)算法如下:已知则其中为r的反码,对于 可得其中,K为32,中间值tk(0≤k≤K-2)满足:迭代得到中间值tK-1,从而可得将加法掩码转化成异或掩码,其具体算法步骤为:
<mrow>
<mi>r</mi>
<mn>1</mn>
<mo>=</mo>
<mover>
<mi>r</mi>
<mo>&OverBar;</mo>
</mover>
<mo>+</mo>
<mn>1</mn>
</mrow>
T=2γ
<mrow>
<mi>T</mi>
<mo>=</mo>
<mi>&gamma;</mi>
<mo>&CirclePlus;</mo>
<mi>r</mi>
<mn>1</mn>
</mrow>
Ω=γ&X
<mrow>
<mi>X</mi>
<mo>=</mo>
<mi>T</mi>
<mo>&CirclePlus;</mo>
<mi>A</mi>
</mrow>
<mrow>
<mi>&gamma;</mi>
<mo>=</mo>
<mi>&gamma;</mi>
<mo>&CirclePlus;</mo>
<mi>X</mi>
</mrow>
γ=γ&r1
<mrow>
<mi>&Omega;</mi>
<mo>=</mo>
<mi>&Omega;</mi>
<mo>&CirclePlus;</mo>
<mi>&gamma;</mi>
</mrow>
for k=1to K-1do
γ=T&r1
<mrow>
<mi>&gamma;</mi>
<mo>=</mo>
<mi>&gamma;</mi>
<mo>&CirclePlus;</mo>
<mi>&Omega;</mi>
</mrow>
T=T&A
<mrow>
<mi>&gamma;</mi>
<mo>=</mo>
<mi>&gamma;</mi>
<mo>&CirclePlus;</mo>
<mi>T</mi>
</mrow>
T=2γ
end for
<mrow>
<mi>X</mi>
<mo>=</mo>
<mi>X</mi>
<mo>&CirclePlus;</mo>
<mi>T</mi>
</mrow>
<mrow>
<mi>X</mi>
<mo>=</mo>
<mi>X</mi>
<mo>&CirclePlus;</mo>
<mi>r</mi>
</mrow>
<mrow>
<mi>X</mi>
<mo>=</mo>
<mi>X</mi>
<mo>&CirclePlus;</mo>
<mi>r</mi>
<mn>1</mn>
<mo>.</mo>
</mrow>
4.根据权利要求1所述的轮输出为布尔掩码的ZUC序列密码算法掩码防护方法,其特征在于,步骤(5)中,通过S盒预计算查表获得的具体方法是:
S1、引入5个4比特的随机数r1、r2、r3、r4、r5,新S盒S0'(x)输入为
S2、预计算S盒 其中,Pi、Pi'(i=1,2,3)分别为掩码前后的S盒,每个S盒均为4×4小S盒,每个字节可存储S盒表中的两个值,共需24字节的存储空间;
S3、对于S0盒输入的8比特数据x=x1||x2,左右两边4比特数据x1、x2分别异或r1、r2,得到
S4、对右边进行P1'查表,得到
S5、左边与异或得进行P2'查表,得到
S6、右边与异或得进行P3'查表,得到
S7、左边与异或得
右边输出
其中y1、y2分别为左右两边不带掩码时的输出;将左右两部分联合在一起经过m比特循环移位后,得到S0的输出其中y=(y1||y2)<<<m,为不带掩码时的S0输出。
5.根据权利要求1所述的轮输出为布尔掩码的ZUC序列密码算法掩码防护方法,其特征在于,步骤(5)中,通过公式在算法运算中通过S盒掩码计算是采用了有限域转化成合成域上的求逆运算,形成一个新的S盒,其具体步骤为:
S1、引入1个8比特的随机数m,新S盒S1'(x)的输入为
S2、S盒的输入掩码m∈GF(28)进行合成域T转换成GF((24)2)合成域的T(m),其中
T(z)=T.z表示矩阵T与z的积,z是任意8位的二进制向量;
S3、将T(m)进行乘法运算得
S4、对T(m)进行平方运算得T(m)2,与异或得T(x)T(m);
S5、将T(x)T(m)输入一个0值检测函数F(x)中,判断T(x)T(m)是否为0,若为0,函数F(x)=1,否则为0,该S5步用于抗零值攻击;
S6、对T(x)T(m)进行逆运算,得T(x)-1T(m)-1;
S7、T(x)-1T(m)-1异或1得
S8、与T(m)进行乘法运算,得
S9、进行合成域T-1逆转换成GF(28)中的
S10、对进行仿射变换得
即新S盒仿射矩阵
<mrow>
<mi>M</mi>
<mo>=</mo>
<mfenced open = "(" close = ")">
<mtable>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>;</mo>
</mrow>
上述运算中,若逆运算的输入为0,则F(x)=1,s(x,y)运算的输出为T(m);求逆运算的输出为T(m)-1,异或1为与T(m)相乘为异或F(x)=1,得到输出为T(m);再进行T逆转换和仿射变换,得
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510221466.9A CN104852795B (zh) | 2015-05-05 | 2015-05-05 | 一种轮输出为布尔掩码的zuc序列密码算法掩码防护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510221466.9A CN104852795B (zh) | 2015-05-05 | 2015-05-05 | 一种轮输出为布尔掩码的zuc序列密码算法掩码防护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104852795A CN104852795A (zh) | 2015-08-19 |
CN104852795B true CN104852795B (zh) | 2018-03-30 |
Family
ID=53852165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510221466.9A Active CN104852795B (zh) | 2015-05-05 | 2015-05-05 | 一种轮输出为布尔掩码的zuc序列密码算法掩码防护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104852795B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10871947B2 (en) * | 2016-03-03 | 2020-12-22 | Cryptography Research, Inc. | Converting a boolean masked value to an arithmetically masked value for cryptographic operations |
CN105790923A (zh) * | 2016-04-26 | 2016-07-20 | 深圳市证通电子股份有限公司 | 密码算法抗功耗分析的实现方法及装置 |
CN105916141B (zh) * | 2016-07-12 | 2019-05-21 | 黑龙江大学 | 一种自同步的祖冲之加解密算法的实现***及其方法 |
CN106911461A (zh) * | 2017-01-13 | 2017-06-30 | 江苏大学 | 一种安全轻量的McEliece公钥掩码加密方法 |
CN107508663A (zh) * | 2017-09-05 | 2017-12-22 | 成都三零嘉微电子有限公司 | 一种布尔异或掩码转算术加法掩码的防护电路 |
CN107689863A (zh) * | 2017-09-05 | 2018-02-13 | 成都三零嘉微电子有限公司 | 一种算术加法掩码转布尔异或掩码的防护电路 |
CN107800530B (zh) * | 2017-11-28 | 2020-09-18 | 聚辰半导体股份有限公司 | 一种sms4的s盒掩码方法 |
CN110011798A (zh) * | 2019-04-08 | 2019-07-12 | 中国科学院软件研究所 | 一种zuc-256流密码算法的初始化方法和装置及通信方法 |
CN113343175B (zh) * | 2021-05-31 | 2022-05-27 | 中国电子科技集团公司第三十研究所 | 一种自动化搜索spn型轻量级分组密码活跃s盒的快速方法 |
CN113965324B (zh) * | 2021-12-07 | 2022-04-19 | 国家信息技术安全研究中心 | 基于模板的rsa-crt实现模约减攻击的私钥恢复方法和*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103138917A (zh) * | 2013-01-25 | 2013-06-05 | 国家密码管理局商用密码检测中心 | 以s盒输入为基础的汉明距离模型在sm4密码算法侧信道能量分析的应用 |
CN103227717A (zh) * | 2013-01-25 | 2013-07-31 | 国家密码管理局商用密码检测中心 | 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的应用 |
CN104202145A (zh) * | 2014-09-04 | 2014-12-10 | 成都信息工程学院 | 针对sm4密码算***函数输出的选择明文或密文侧信道能量分析攻击的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9379887B2 (en) * | 2012-09-14 | 2016-06-28 | Qualcomm Incorporated | Efficient cryptographic key stream generation using optimized S-box configurations |
-
2015
- 2015-05-05 CN CN201510221466.9A patent/CN104852795B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103138917A (zh) * | 2013-01-25 | 2013-06-05 | 国家密码管理局商用密码检测中心 | 以s盒输入为基础的汉明距离模型在sm4密码算法侧信道能量分析的应用 |
CN103227717A (zh) * | 2013-01-25 | 2013-07-31 | 国家密码管理局商用密码检测中心 | 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的应用 |
CN104202145A (zh) * | 2014-09-04 | 2014-12-10 | 成都信息工程学院 | 针对sm4密码算***函数输出的选择明文或密文侧信道能量分析攻击的方法 |
Non-Patent Citations (1)
Title |
---|
祖冲之序列密码算法IP核的设计与实现;江丽娜,高能等;《第27次全国计算机安全学术交流会》;20120831(第08期);219-222 * |
Also Published As
Publication number | Publication date |
---|---|
CN104852795A (zh) | 2015-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104852795B (zh) | 一种轮输出为布尔掩码的zuc序列密码算法掩码防护方法 | |
Trichina et al. | Simplified adaptive multiplicative masking for AES | |
KR101026439B1 (ko) | Seed 암호화에서 차분 전력 분석 공격을 방어하기 위한 마스킹 방법 | |
CN103647637B (zh) | 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法 | |
Bhasin et al. | Analysis and improvements of the DPA contest v4 implementation | |
US8971526B2 (en) | Method of counter-measuring against side-channel attacks | |
US20220271916A1 (en) | Method and apparatus for implementing a white-box cipher | |
CN103825722B (zh) | 一种sm4密码算法的二阶侧信道能量分析方法 | |
CN104301095A (zh) | Des轮运算方法和电路 | |
KR100574965B1 (ko) | 유한체 곱셈기 | |
CN104967509B (zh) | 一种轮输出为算术掩码的zuc序列密码算法掩码防护方法 | |
Liang et al. | Design of a masked S-box for SM4 based on composite field | |
Xu et al. | A Strong Key Expansion Algorithm Based on Nondegenerate 2D Chaotic Map Over GF (2 n) | |
CN111931176A (zh) | 防御侧信道攻击的方法、装置及可读存储介质 | |
Biryukov et al. | Differential resynchronization attacks on reduced round SNOW 3G⊕ | |
Bai et al. | Differential power analysis attack on SMS4 block cipher | |
Chou et al. | A high performance, low energy, compact masked 128-bit AES in 22nm CMOS technology | |
Benhadjyoussef et al. | Power-based side-channel analysis against aes implementations: Evaluation and comparison | |
CN109302278B (zh) | 一种抵御能量分析攻击的掩码方法及掩码电路 | |
Rîncu et al. | S-box design based on chaotic maps combination | |
Reddy et al. | A new symmetric probabilistic encryption scheme based on random numbers | |
Montoya et al. | Energy-efficient masking of the trivium stream cipher | |
Bai et al. | Securing SMS4 cipher against differential power analysis and its VLSI implementation | |
Fu et al. | A low cost DPA-resistant 8-bit AES core based on ring oscillators | |
Bae et al. | Deep learning-based attacks on masked AES implementation |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |