一种轮输出为布尔掩码的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计算过程如为:
[0011] LFSRWithInitialisationMode(u)
[0012] {
[0013] (I)V= 215s15+217s13+221s1(l+220s4+(1+28)s〇mod(231_1);
[0014] (2)S16= (v+u)mod(2 31-1);
[0015] (3)if(S16= 0)thens16= 2 31_1 ;
[0016] (4) (S1,s2,L,s15,s16) - (s0,S1,L,s14,s15);
[0017] }
[0018] 在工作模式下,LFSR不接收任何输入。其计算过程如下:
[0019] LFSRWithInitialisationModeO
[0020] {
[0021 ] (I)S16= 2 15s15+217s13+221s1Q+220s4+(1+28)sQmod(231_1);
[0022] (2)if(S16= 0)thens16= 2 31_1 ;
[0023] (3) (Si,Sg,L,S15,Sig) ~(s。,Si,L,S14,S15);
[0024] }
[0025] (2)比特重组(BR)从LFSR的寄存器单元中抽取128比特组成4个32比特字X。、 Xi、X2、X3。BR的具体计算过程如下:
[0026]BitReconstrustionO
[0027] {
[0028] (I)X0= s15H| |s14l
[0029] (2)X1= s11L| |s9H
[0030] (3)X2= s7L|Is5H
[0031] (4)X3= s2L| Is0H
[0032] }
[0033] (3)非线性函数F包含2个32比特记忆单元变量札和R2。F的输入为3个32比 特字XpXpX2,输出为一个32比特字W。F的计算过程如下:
【主权项】
1. 一种轮输出为布尔掩码的ZUC序列密码算法掩码防护方法,其特征在于,该方法包 括如下步骤: (1)选择需要掩码的轮数,初始化前N轮,1彡N彡32,r e {0,1,L,N-1}为当前轮数, 随机选取2个32位随机数Hipm2,每轮随机选取2个32位随机数mn3、mn4,在N轮中各不相 同;若是第〇轮,对于第1轮F函数的输入R1= 0、R2= 0,分别与掩码Ihcm= m p Ii^2= Iii2异或作为输入;若是第r(r e {1,L,N-1})轮的RpR2输入