一种轮输出为算术掩码的zuc序列密码算法掩码防护方法

文档序号:9250894阅读:1175来源:国知局
一种轮输出为算术掩码的zuc序列密码算法掩码防护方法
【技术领域】
[0001] 本发明属于密码算法的防护技术领域,特别是为了使祖冲之序列密码算法(ZUC) 抵抗侧信道分析,保护密钥k,设计了一种针对ZUC算法的掩码防护方法,即针对轮输出为 算术掩码的ZUC序列密码算法掩码防护方法;该方法随机化算法的中间值,使得设备的能 量消耗与所执行的密码算法的中间值之间无依赖关系。
【背景技术】
[0002] 随着信息技术的发展,各种密码算法正被广泛地应用于经济、军事、行政等重要部 门,保护信息的安全性。鉴于密码算法的重要性,密码算法软硬件实现(密码模块)的分析 研宄对保护信息安全具有重要的意义。
[0003] 近年来,多种对密码模块的攻击已广为人知,所有这些攻击的目的都是为了获取 密码模块中的密钥。通常的攻击方式可分为侵入式攻击、半侵入式攻击和非侵入式攻击。近 年来,由于非侵入式攻击中的侧信道分析实施方便、相对成本低廉而被广泛使用。侧信道分 析可以细分为计时分析、能量分析和电磁分析。其中的侧信道能量分析是众多分析手段中 最常用的方法之一,它突破了传统密码算法的分析模式,能力强大,实施相对容易。侧信道 能量分析利用了密码模块能量消耗与数据运算和执行之间的相关性,基于密码算法实现的 能量泄露函数建立能量模型,使用统计方法,猜测和验证密码模块使用的受保护密钥,几乎 可被用于破解所有的对称密码和公钥密码。破解时,仅需要数十条能量迹就可以在几分钟 内迅速地破解没有防御措施的大多数智能卡。侧信道能量分析方法一般包括,简单能量分 析(SPA)、差分能量分析(DPA)、相关能量分析(CPA)和高阶差分能量分析(HODPA)。
[0004] 直接利用能量迹各尖峰形状不同这一特性的攻击称为简单能量分析攻击 SPA(SimplePowerAnalysis);根据密码设备的能量消耗依赖于算法执行过程中所处理的 中间值分别为〇和1时,所对应的平均能量迹之间的差异进行密钥恢复的攻击方法称为差 分能量分析攻击DPA(DifferentialPowerAnalysis);若密码分析者利用假设能量消耗和 真正能量消耗之间的线性相关性进行密钥恢复,则为相关能量分析攻击CPA(Correlation PowerAnalysis);在上述DPA分析中,如果仅利用了一个中间值,称为一阶DPA攻击,若是 利用算法运算中的某种联合泄漏,该联合泄漏基于出现在密码设备中的多个中间值,则称 相应的DPA攻击为高阶DPA分析。
[0005] 鉴于当前对密码算法进行功耗分析攻击技术的不断发展,为应对能量分析带来的 挑战,针对功耗分析攻击的防御技术也不断进步。抗功耗分析的防御技术包括各种隐藏技 术和掩码技术,任何防御技术的目标都是使密码设备的能量消耗不依赖于设备所执行的密 码算法中间值。
[0006] 隐藏技术是通过能量消耗随机化,使所有操作具有相同能量消耗等方式切断被处 理的中间值与设备能量消耗之间的关系。采用隐藏技术的密码设备与未加防护的设备执行 相同的操作,但无法从中获取可用信息。
[0007] 掩码技术是采用随机化密码设备所处理的中间值,对算法实现加入随机化掩码。 其可以在算法级实现,无需改变密码设备的能量消耗特性,使设备的能量消耗与所执行的 密码算法的中间值之间无依赖关系。
[0008] 在掩码防御方案中,算法运算的中间值V都基于一个称为掩码的随机数m进行变 换,即Vm=v*m。掩码产生于密码设备内部,并且在每一次执行过程中各不相同,因此攻击 者不能获知掩码。运算*通常根据密码算法所使用的操作进行定义。因此,运算*多为布 尔异或运算、模加运算或模乘运算。在模加运算和模乘运算的情况下,模数根据密码算法进 行选择。通常,掩码直接应用于明文或密钥。为了能够处理掩码型中间值以及对掩码进行 跟踪,需要对算法进行修改。加密的结果也是掩码型的,为了获得密文,需要在计算结束时 消除掩码。要保持每一个中间值在计算过程中始终处于被掩码状态,这一点非常重要。即 使某一个中间值是基于它之前的中间值计算得到,保持上述性质仍然很重要。由于上述原 因,对不同的中间值,往往需要分别采用不同的掩码。处于对实现性能的考虑,对每一个中 间值采用一个新掩码并不合算。因此,为了获得合适的性能,需要仔细选择掩码的数量。
[0009] 在算法一个执行路径中所叠加的掩码数量,称为算法掩码防御方案的阶数,对相 应阶数的掩码进行能量分析的方法,称为高阶能量能量分析。一阶掩码可以防御一阶的能 量分析,但不能防御二阶能量分析;二阶掩码可以防御二阶能量分析,但不能防御三阶能量 分析。通常考虑到防御和分析的指数递增运算量增加,以及算法结构上可利用的能量泄露 的点的限制,通常分组算法实现只能做到二阶能量分析,相应的防御措施也一般只做到二 阶掩码防御即可。
[0010] 祖冲之算法集(ZUC算法)是由我国学者自主设计的加密和完整性算法,已经被国 际组织3GPP推荐为4G无线通信的第三套国际加密和完整性标准的侯选算法。下面对该算 法进行简单介绍:祖冲之算法逻辑上分为上中下三层,如图1所示,上层是16级线性反馈移 位寄存器(LFSR)冲层是比特重组(BR);下层是非线性函数F。⑴LFSR包括16个31比特 寄存器单元变量Stl,Sl,L,s15。LFSR的运行模式有2种:初始化模式和工作模式。在初始化 模式下,LFSR接收一个31比特字u。u是由非线性函数F的32比特输出W通过舍弃最低 位比特得到,即u=W>> 1,在初始化模式下,LFSR计算过程如为:
[0025] (2)比特重组(BR)从LFSR的寄存器单元中抽取128比特组成4个32比特字X。、 Xi、X2、X3。BR的具体计算过程如下:
[0026]BitReconstruction()
[0027] {
[0028] (I)X0= s15H| |s14l
[0029] (2)X1= s11L|Is9H
[0030] (3)X2= s7L|Is5H
[0031] (4)X3= s2L|Is0H
[0032] }
[0033] (3)非线性函数F包含2个32比特记忆单元变量札和R2。F的输入为3个32比 特字XpXpX2,输出为一个32比特字W。F的计算过程如下:
[0034]F(X0,X1,X2)
[0035] {
[0042] 其中S为32比特的S盒变换,32比特S盒由4个小的8X8的S盒并置而成,即S =(SQ,S1, S2, S3),其中Stl= S2,S1= S3。Stl主要基于轻量级结构构造思想,采用小S盒构 建大S盒的方法设计。具体而言,Stl内部使用了3个4X4的小S盒P pPyPji合而成,如 图2所示,其中m= 5。
[0043]S1盒的设计基于有限域GF (28)上的非线性逆函数f1和线性仿射变换设计,与AES 的S盒设计类似。底层有限域GF(28)采用本原多项式x8+x7+x3+ x+l定义,S1盒的数学表达 式为= 十0x55,其中矩阵M满足:
[0045] 设S盒S的32比特输入X和32比特输出Y分别为:
[0046]X=X01IX11IX21IX3
[0047]Y=y〇IIY11 |y21 |y3
[0048]其中XjPyi均为8比特字节,i = 0,1,2,3。则有yi= Si(Xi) ;LJPL#32比 特线性变换,定义如下: L(X) =I十(X?< 2)?(X?< 10)十(X?< 18)十(X?< 24) 「〇〇491 L2(X) =X十(X?< 8)十(X?< 14)?(X?< 22)?(JT?< 30)
[0050] 祖冲之算法的秘钥装入过程是:将128比特的初始密钥k和128比特的初始向量 iv扩展为16个31比特字作为LFSR寄存器单元变量S(l,Sl,L,S15的初始状态。设k和iv 分别为kQ| |k」|L| |1^15和ivQ|Iiv1I|L| |iv15;其中kJPivi均为8比特字节,0彡i彡15。 密钥装入过程如下:(I)D为240比特的常量,可按如下方式分成16个15比特的子串:D= dQ|Id1I|l|Id15,其中:
[0051]d0= 100010011010111 2,
[0052] (^= 010011010111100 2,
[0053]d2= 110001001101011 2,
[0054]d3= 001001101011110 2,
[0055]d4= 101011110001001 2,
[0056]d5= 011010111100010 2,
[0057]d6= 111000100110101 2,
[0058]d7= 000100110101111 2,
[0059]d8= 100110101111000 2,
[0060] d9= 010111100010011 2,
[0061] d10= 110101111000100 2,
[0062] dn= 001101011110001 2,
[0063]d12= 101111000100110 2,
[0064]Cl13= 011110001001101 2,
[0065]d14= 111100010011010 2,
[0066] d15= 100011110101100 2
[0067] (2)对0 彡i彡 15,有Si=kjIdiI|iVi。
[0068] 在初始化阶段,首先把128比特的初始密钥k和128比特的初始向量iv按照前述 密钥装入方法装入到LFSR的寄存器单元变量S(l,Sl,L,S15中,作为LFSR的初态,并置32比 特记忆单元变量&和R2为全0。然后执行下述操作:
[0069] 重复执行下述过程32次:
[0070] (I)BitReconstruction();
[0071] (2)W=F(X〇,X1,X2);
[0072] (3)LFSRffithInitialisationMode(W> > 1);
[0073] 工作阶段首先执行下列过程一次,并将F的输出W舍弃:
[0074] (I)BitReconstruction();
[0075] (2)F(X〇,X1,X2);
[0076] (3)LFSRffithfforkModeO;
[0077] 然后进入密钥输出阶段。在密钥输出阶段,每运行一个节拍,执行下列过程一次, 并输出一个32比特的密钥字Z:
[0078] (I)BitReconstruction();
[0079] (2)Z=尸(X0,XI,X2)十
[0080] (3)LFSRffithfforkModeO;
[0081]目前,利用侧信道分析(SCA),特别是运用能量分析(PA)的侧能量分析方法,通过 建立汉明重量模型,使用一阶差分能量分析(DPA)方法可分析出ZUC算法的密钥。了为抵 抗DPA/CPA分析,通常采用了掩码防护措施保护ZUC密码算法实现。为了抵抗侧信道分析, 考虑掩码技术的易操作性及有效性,在密码防护方面特别是对ZUC算法的结构和相关掩码 防御技术需要进行深入研宄分析,设计抗侧信道的掩码防御方法

【发明内容】

[0082] 本发明技术方案的目的在于为了抵抗针对ZUC算法的侧信道分析,考虑线性移位 寄存器的数据影响传递性以及能耗的泄露点,以及掩码技术的易操作性及有效性,针对于F函数,保护ZUC算法初始化过程中的前N(1 32)轮,实现ZUC序列算法掩码防护的策 略。
[0083] 实现上述目的本发明的技术方案为,一种轮输出为算术掩码的ZUC序列密码 算法掩码防护方法,该方法包括如下步骤:(1)选择需要掩码的轮数,初始化前N轮, I<N< 32,rG{〇, 1,L,N-1}为当前轮数,4个32比特随机数叫、m2、m3、m4,其中In1 = (c0,C1,c2,c3),m2= (dQ,屯,d2,d3),第1轮的Rn馬分别与m2相加,得到带掩码输入 Rfn^Vm2;若是第r(rG{1,L,N-1})轮的R2输入,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1