针对sm4一阶掩码算法的二阶频域能量分析攻击的利记博彩app

文档序号:9790733阅读:543来源:国知局
针对sm4一阶掩码算法的二阶频域能量分析攻击的利记博彩app
【技术领域】
[0001] 本发明设及密码算法分析检测领域,尤其针对具有掩码防护的SM4密码算法实现 的二阶频域侧信道能量分析,特别是设及对S盒输入输出中间掩码值相同的SM4密码算法进 行的二阶频域侧信道能量分析。
【背景技术】
[0002] 随着信息和分析电路技术的发展,对硬件密码电子设备的破解不再单纯的停留在 协议和算法上,而是从其处理数据的过程中泄露的信息入手,进行破解。硬件密码电子设备 在处理信息的工程中存在能量、电磁、错误和时间等信息的泄露,利用运些泄露的信息对密 码电子设备进行攻击,就是所谓的侧信道攻击(Side Channel Attacks)。侧信道攻击可分 为能量分析攻击、电磁攻击和错误攻击等,其中能量分析攻击因效率较高,成为侧信道攻击 的主要手段。
[0003] 侧信道能量分析攻击是通过采集加密忍片等硬件密码电子设备在进行加、解密或 签名等操作时产生的能量消耗,利用密码学和统计学原理等,分析和破译密钥信息的一种 攻击方式。侧信道能量分析攻击又分为简单能量分析攻击(Simple Power Analysis,SPA)、 差分能量分析攻击(Differential Power Analysis, DPA)和相关性能量分析攻击 (Correlation Power Analysis,CPA)。
[0004] 在侧信道能量分析攻击中,CPA和DPA相比SPA具有更强的攻击性,所W能量分析攻 击中比较常用的是CPA和DPA。其中,DPA攻击的过程如下: (1) 随机选择N组不相同明文或密文Mi( i e [ 1,N])进行加/解密运算,采集每组明文进 行加密运算时设备产生的能量曲线1'1(*),*£{1,2,一,的,其中4为能量轨迹的采样点数; (2) 选择密钥Ke?E Q,Q为密钥空间),计算在松和Mi条件下,密码算法进行加密运算 时在被攻击点产生的中间值化,。 (3) 根据中间值Di,e确定选择函数F(Mi,恥),根据选择函数将Ti(t)分为两个子集So和 Si,定义式如下: S〇={Ti(t)|F(Mi,松)=0}; Si={Ti(t)|F(Mi,松)=1}; (4)计算每个采样点上两个子集的能量平均之差,如
所示,其中I So I和I Si I分别表示集合So和Si中元素的个 数; 若恥选择不正确,当化k较大时,两个子集均值差S将趋近于零;若恥选择正确,在均值 差S中将会出现一个最大尖峰,通过该尖峰即可确定拉选择正确。
[000引 CPA攻击的过程如下: (1)随机选择N组不相同明文或密文Mi( i e [ 1,N])进行加/解密运算,采集每组明文进 行加密运算时设备产生的能量曲线1'1(*),*£{1,2,一,4},其中4为能量轨迹的采样点数; (2)选择密钥Ke?e Q,Q为密钥空间),计算在拉和Ml条件下,密码算法进行加密运算 时在被攻击点产生的中间值化,e; (3 )取中间值D 1 , e的汉明距离或者汉明重量建立能量模型h 1 , e,根据
式计算Ti(t)和hi,e的相关性化; (4)取相关系数最大值时对应的松,即为实际密钥。
[0006] 侧信道能量分析攻击技术的不发展对侧信道的防御技术提出了新挑战,其中掩码 防御是抵抗侧信道能量分析攻击的一种重要手段。掩码防护根据掩码值是否随机又分为固 定掩码和随机掩码,根据重用情况又可分为横向重用型掩码、纵向重用型掩码和非重用型 掩码。根据掩码运算方式的不同又可分为乘法掩码、加法掩码,W及在布尔和算数掩码之间 转换的方法等。
[0007] 掩码的目标是使每一个中间值在计算过程中始终处于被掩码状态,运样可W使计 算过程中难于猜测到中间值而抵抗一阶侧信道能量分析攻击。在理想的掩码算法中,需要 保证每个中间值具有不同的掩码。虽然一阶掩码可W抵抗一阶能量分析,但不能抵抗二阶 能量分析,而二阶掩码不能抵抗=阶能量分析,尽管理论上掩码阶数越高越好,但在实际的 应用中,需要考虑掩码引入所带来的额外开销,所W目前常用的掩码为一阶掩码。常见的 SM4掩码方案包括S盒输入输出中间值掩码相同/不同;每一轮4个S盒的输入中间值相同/不 同;每一轮4个S盒的输出中间值相同/不同;轮输入中间值相同/不同。
[0008] 高阶二阶相关性能量攻击是针对于一阶掩码防御算法的又一种攻击手段,其攻击 思想为利用联合泄露,该联合泄露依赖于密码设备所处理的与同一个掩码相关的两个中间 值。针对掩码为布尔异或掩码的算法,所选取的两个中间值Um,Vm需满足:l)Um=U e m且Vm=V e m,其中U,V均为掩码为加寸的中间值,m为掩码;2)Um, Vm中至少有一个与密钥k的一部分有关; 3)两个中间值Um, Vm的组合中间值Um ? Vm与掩码无关。
[0009] SM4算法是分组长度和密钥长度均为128bit,加密算法和解密算法均为32轮的非 线性迭代密码算法,其加密算法和解密算法结构相同,只是运算时轮密钥使用的顺序相反, 解密轮密钥是加密轮密钥的逆序。SM4加密算法的详细流程如图1所示。
[0010] 在图1中XiEZs32化嗦示e比特的向量集),明文输入为(X〇,Xi,枯,X3)E(Z2 32)4,密 文输出为(Yo,Yi,Y2,Y3),其中Xi、Xw、Xi+沸Xi+3为轮迭代运算函数F的输入,rki e Z232为每轮 的轮密钥,iE { 〇,1,2,...,31}。
[0011] 从加密的流程可W看出,轮迭代函数F包括的运算有异或、非线性变换T和线性变 换1,轮迭代函数的表达式为:乂1+4=。化,乂1+1,乂1+2,乂1+3^4〇=乂1*1'化+1?乂1+2*乂1+3*'4〇, 在该表达式中,T表示合成置换,是由非线性变换T和线性变换L复合而成,迭代函数F的详细 的流程如图2所示。在整个SM4密码算法的加解密过程中,一共要执行32轮运样的轮迭代函 数F。
[0012] 令'631=1'(乂1+1?乂1+2?乂1+3?'4〇,则:乂1+4=尸(乂1,乂1+1,乂1+2,乂1+3,'山)=乂1*1'口1+1? Xi+2?Xi+3?rki)变为:Xi+4=F化,Xi+l,Xi+2,Xi+3,rki)=Xi?resi,非线性变换T是由4个并行S盒 子构成,每个S盒子为固定的Sbit输入Sbit输出的置换,记为訊ox(.)。
[001引设输入为心=日1,日|日1,1|日1,2|日1,3=乂1+1*乂1+2*乂1+3*地,其中日1^居22 32,表示第1轮第 j(je { 0,1,2,3 })个S盒子的输入,I表示两个数据bit的拼接,输出为Bi=bi,o|bi,i|bi,2 bi,3,bi,jEZ232,bi,康示第i轮、第j个S盒子的输出,贝排线性变换T为:Bi=T(Ai)=Sbox(ai,o)| 訊ox(ai,i) I 訊ox(ai,2) I 訊ox(ai,3)。
[0014] 线性变换L的描述如下所示, Ci=L(Bi)=Bi ? (Bi?<2) ? (Bi?<10) ? (Bi?<18) ? (Bi?<24) 在该式中,(:把2232瓜£2232,。为线性变换1的输出瓜为线性变换1的输入,同时也是 非线性变换T的输出。
[0015] 对SM4密码算法的能量分析方法通常选取S盒的输出、L移位的输出作为攻击对 象,使用汉明重量、单比特模型,利用DPA和CPA方法进行分析。运些方法仅利用了典型的 分析点。
[0016] SM4的密钥扩展算法:轮密钥由加密密钥通过密钥扩展算法生成,其结构与加密变 换类似。设加密密钥为艦=(11((),11(1,11(2,11(3),11(1£2232 4=0,1,2,3;令1(1£2232 4=0,1, 2,…,35,轮密钥rki e Z232,i=0,1,2,…,31,则轮密钥生成方法如下式所示: (Ko,Ki,K2,K3)=(MKo ? FKo,MKi ? FKi,MK2 ? FK2,MK3 ? 邸3) rki=Ki+4= Ki ? T (Ki+i ? Ki+2 ? Ki+3 ? CKi) 其中,T'变换与加密变换中的T变换基本相同,只是其中的线性变换L必须修改为W下 L' :L'(B)=B ? (B?<13) ? (B<<<23); 系统参数FKi( i=0,I,2,3)的取值,采用16进制表示为: FK〇=A3BlBAC6 ,FKi=56AA3350 ,FK2=677D9 197 ,FKs= B27022DC 固定参数CK的取值方法为设cki, j为CKi的第j字节(i=0,I,2,…,31; j=0,I,2,3),即CKi = (;cki,〇,cki,i,cki,2,cki,3,)E (Z232 ),则cki,j
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1