一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于反馈移位寄存器的流密码相邻时钟差分能量分析方法

2022-07-20 14:57:10 来源:中国专利 TAG:


1.本发明属于密码算法分析技术领域,具体涉及一种基于反馈移位寄存器流密码的相邻时钟差分能量分析方法。


背景技术:

2.随着信息安全日益受到人们的关注,针对密码集成电路的检测方法也得到了广泛的关注。无论是软件还是硬件领域,侧信道分析已被证明是对密码实现的主要威胁。其中,侧信道分析中的能量分析技术简单而有效,因此是所有侧信道分析技术里发展最快的。
3.能量分析检测的基本思想是通过分析密码设备的能量消耗获得其密钥。能量分析检测又分为简单能量分析(simple power analysis,spa)、差分能量分析(differential power analysis,dpa)和相关性能量分析(correlation power analysis,cpa)。针对能量分析检测,现有技术提出了针对国密算法sm4的二阶能量分析攻击方法、针对sm2解密算法的能量分析检测方法以及对p域的ecc算法选择明文侧信道能量分析方法。
4.现有技术对于分组密码和非对称密码的能量分析有许多,但对于流密码的能量分析比较少。


技术实现要素:

5.为了解决现有技术中存在的上述问题,本发明提供了一种基于反馈移位寄存器流密码的相邻时钟差分能量分析方法。本发明要解决的技术问题通过以下技术方案实现:
6.本发明实施例提供了一种基于反馈移位寄存器的流密码相邻时钟差分能量分析方法,包括步骤:
7.s1、根据反馈移位寄存器的相邻时钟的能量消耗差异关系确定选择函数;
8.s2、通过分析流密码目标算法,结合所述选择函数确定每轮攻击的子密钥,并根据所述每轮攻击的子密钥确定攻击轮数和时钟周期;
9.s3、收集不同初始向量对应的所有所述时钟周期的能量曲线,并根据所述能量曲线计算所述攻击轮数中相邻所述时钟周期的能量差异曲线;
10.s4、利用所述每轮攻击的子密钥中每个猜测子密钥和所述初始向量计算所述选择函数的值,并结合所述选择函数的值,利用差分能量分析方法对每轮攻击的所述能量差异曲线进行分析,得到每轮的真子密钥,重复该操作,直到完成所述攻击轮数,得到全部密钥。
11.在本发明的一个实施例中,所述反馈移位寄存器的相邻时钟的能量消耗差异关系为:
[0012][0013]
其中,hd
t i
为n比特向量st
t i
和st
t i 1
之间的汉明距离,st
t i
为反馈移位寄存器在t i时刻的状态,st
t i 1
为反馈移位寄存器在t i 1时刻的状态,s为反馈移位寄存器的状态位,n为反馈移位寄存器的级数,i为第i个时钟周期。
[0014]
在本发明的一个实施例中,所述选择函数为:
[0015][0016]
其中,s为反馈移位寄存器的状态位,n为反馈移位寄存器的级数,i为第i个时钟周期。
[0017]
在本发明的一个实施例中,步骤s2包括:
[0018]
s21、根据目标密码加载密钥的位置,确定攻击点;
[0019]
s22、分析所述流密码目标算法的空转阶段,根据每个所述时钟周期中与所述选择函数相关的密钥,将相邻两个所述时钟周期作为一轮攻击,得到所述每轮攻击的子密钥;
[0020]
s23、根据所述每轮攻击的子密钥的数量确定所述攻击轮数,并根据所述攻击轮数确定所述时钟周期。
[0021]
在本发明的一个实施例中,步骤s22包括:
[0022]
确定所述空转阶段的第一时钟周期中与所述选择函数相关的第一密钥比特和第二时钟周期中与所述选择函数相关的第二密钥比特;确定所述第一密钥比特和所述第二密钥比特中重复的密钥比特;根据所述重复的密钥比特确定每一轮攻击中需要猜测的密钥比特,得到所述每轮攻击的子密钥。
[0023]
在本发明的一个实施例中,步骤s23包括:
[0024]
当所述每轮攻击的子密钥的数量为1时结束攻击,得到所述攻击轮数;
[0025]
所述时钟周期为所述攻击轮数加1次。
[0026]
在本发明的一个实施例中,步骤s4包括:
[0027]
s41、对所述每轮攻击的子密钥进行穷举搜索,遍历所有的能量差异曲线,由所述每个猜测子密钥与每条所述能量差异曲线对应的所述初始向量计算所述选择函数的值;
[0028]
s42、根据所述选择函数的值将所述每个猜测子密钥对应的所述能量差异曲线分为两组,得到第一能量差异曲线集合和第二能量差异曲线集合;
[0029]
s43、利用差分能量分析方法计算所述第一能量差异曲线集合和所述第二能量差异曲线集合的差分值,选取差分值最大的猜测子密钥作为所述每轮的真子密钥;
[0030]
s44、重复步骤s41~s43,直到完成所述攻击轮数,得到所述全部密钥。
[0031]
在本发明的一个实施例中,步骤s42包括:
[0032]
如果所述选择函数的值为0,则将所述能量差异曲线放入所述第一能量差异曲线集合;如果所述选择函数的值不为0,则将所述能量差异曲线放入所述第二能量差异曲线集合。
[0033]
在本发明的一个实施例中,所述第一能量差异曲线集合和所述第二能量差异曲线集合的差分值为:
[0034][0035]
其中,表示第i轮攻击中第j组猜测密钥对应的差分值,p为任意一条能量差异曲线,p0为集合p0中能量差异曲线的个数,p1为集合p1中能量差异曲线的个数,w为总的能量差异曲线个数。
[0036]
与现有技术相比,本发明的有益效果:
[0037]
本发明的分析方法以相邻时钟周期的能量差异为攻击点,将已知的初始向量看作
明文输入,根据不同的初始向量和猜测子密钥计算选择函数的值,并采用差分能量分析方法逐轮恢复部分密钥,直到恢复出全部密钥,使得密钥穷尽量大幅度降低,提高了分析的灵活性、有效性和正确性。
附图说明
[0038]
图1为本发明实施例提供的一种基于反馈移位寄存器的流密码相邻时钟差分能量分析方法的流程示意图;
[0039]
图2为本发明实施例提供的一种流密码目标算法进行空转的示意图。
具体实施方式
[0040]
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
[0041]
实施例一
[0042]
请参见图1,图1为本发明实施例提供的一种基于反馈移位寄存器的流密码相邻时钟差分能量分析方法的流程示意图。
[0043]
本实施例以对grain-128流密码进行相邻时钟差分能量分析为例对该方法进行说明,该分析方法具体包括步骤:
[0044]
s1、根据反馈移位寄存器的相邻时钟的能量消耗关系确定选择函数。
[0045]
具体的,反馈移位寄存器(feedback shift register,fsr)在t时刻的状态为st
t
=(s(n-1),

,s(0)),t 1时刻的状态为st
t 1
=(s(n),s(n-1),

,s(1)),设hd
t
为n比特向量st
t
和st
t 1
之间的汉明距离,则pd
t
=(hd
t-hd
t 1
)。因此,fsr的相邻时钟的能量消耗差异为:
[0046][0047]
其中,hd
t i
为n比特向量st
t i
和st
t i 1
之间的汉明距离,st
t i
为反馈移位寄存器在t i时刻的状态,st
t i 1
为反馈移位寄存器在t i 1时刻的状态,s为反馈移位寄存器的状态位,n为反馈移位寄存器的级数,i为第i个时钟周期。
[0048]
则设定选择函数为:
[0049][0050]
其中,s为反馈移位寄存器的状态位,n为反馈移位寄存器的级数,i为第i个时钟周期。
[0051]
由式(1)和式(2)可知,选择函数和能量消耗差异直接相关。
[0052]
s2、通过分析流密码目标算法,结合所述选择函数确定每轮攻击的子密钥,并根据所述每轮攻击的子密钥确定攻击轮数和时钟周期。
[0053]
具体的,分析流密码目标算法,重点分析该算法初始化过程。
[0054]
以grain-128流密码为例,步骤s2具体包括:
[0055]
s21、根据目标密码加载密钥的位置,确定攻击点。
[0056]
具体的,确定目标密码加载密钥的位置,从而确定攻击点。本实施例中,目标密码加载密钥的位置为非线性反馈移位寄存器(nonlinear feedback shift register,nfsr),因此,攻击点即为nfsr。
[0057]
以grain-128算法为例,将128位初始密钥填充到128级的nfsr中,并将96位初始向量填充到lfsr的前96位中,其余32位都用1填充:
[0058]
(b0,

,b
127
)

(k0,

,k
127
);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0059][0060]
其中,k0,

,k
127
为128位初始密钥,b0,

,b
127
为128级状态位的nfsr,iv0,

,iv
95
为96位初始向量,s0,

,s
127
为128级状态位的lfsr。
[0061]
s22、分析所述流密码目标算法的空转阶段,根据每个所述时钟周期中与所述选择函数相关的密钥,将相邻两个所述时钟周期作为一轮攻击,得到所述每轮攻击的子密钥。
[0062]
请参见图2,图2为本发明实施例提供的一种流密码目标算法进行空转的示意图。流密码目标算法的空转阶段包括步骤:
[0063]
s221、对从非线性反馈移位寄存器中选取的流密码的7位状态位、线性反馈移位寄存器中的第一状态位和过滤函数进行异或得到密钥流:
[0064][0065]
其中,zi为密钥流,ci为从非线性反馈移位寄存器中选取的流密码的7位状态位,hi为过滤函数,s
i 93
为线性反馈移位寄存器中的第一状态位。
[0066]
具体的,过滤函数为:
[0067][0068]
其中,b为非线性反馈移位寄存器的更新状态位,s为线性反馈移位寄存器的状态位。
[0069]
s222、对所述非线性反馈移位寄存器的更新函数、所述密钥流和所述线性反馈移位寄存器的第二状态位进行异或得到所述非线性反馈移位寄存器的更新状态位:
[0070][0071]
其中,b
i 128
为非线性反馈移位寄存器的更新状态位,gi为非线性反馈移位寄存器的更新函数,si为线性反馈移位寄存器的第二状态位,zi为密钥流,(bi,

,b
i 127
)

(b
i 1
,

,b
i 127
,b
i 128
)。
[0072]
s223、对所述线性反馈移位寄存器的更新函数和所述密钥流进行异或得到所述线性反馈移位寄存器的更新状态位:
[0073][0074]
其中,s
i 128
为线性反馈移位寄存器的更新状态位,fi为线性反馈移位寄存器的更新函数,zi为密钥流,(si,

,s
i 127
)

(s
i 1
,

,s
i 127
,s
i 128
)。
[0075]
s224、重复步骤s221~s223,完成初始化过程。
[0076]
综上,流密码目标算法进行空转的过程为:
[0077][0078][0079]
然后,确定空转阶段中,每个时钟周期中与选择函数相关的密钥,将相邻两个时钟周期作为一轮攻击,得到每轮攻击的子密钥。具体的,根据所述初始化过程中第一时钟周期中与所述选择函数相关的第一密钥比特和第二时钟周期中与所述选择函数相关的第二密钥比特;确定所述第一密钥比特和所述第二密钥比特中重复的密钥比特;根据所述重复的密钥比特确定每一轮攻击中需要猜测的密钥比特,得到所述每轮攻击的子密钥。
[0080]
请参见表1,表1为grain-128算法初始化过程中每轮猜测的密钥比特的列表。
[0081]
表1
[0082][0083]
表1中,由选择函数和grain-128的初始化过程可知,在第一个时钟周期,与选择函数c相关的第一密钥比特有:
[0084]
k0,k2,k3,k
11
,k
12
,k
13
,k
15
,k
17
,k
18
,k
26
,k
27
,k
36
,k
40
,k
45
,k
48
,k
56
,k
59
,k
61
,k
64
,k
65
,k
67
,k
68
,k
73
,k
84
,k
89
,k
91
,k
95
,k
96

[0085]
第二个时钟周期中,与选择函数的计算相关的第二密钥比特有:
[0086]
其中重复的密钥比特有k3,k
12
,k
13
,k
18
,k
27
,k
65
,k
68
,k
96
,因此第一轮攻击中需要猜测48比特。
[0087]
其他轮攻击所需要猜测的密钥如表1所示,从而得到每轮攻击的子密钥。
[0088]
s23、根据所述每轮攻击的子密钥的数量确定所述攻击轮数,并根据所述攻击轮数确定所述时钟周期。
[0089]
具体的,当所述每轮攻击的子密钥的数量为1时结束攻击,得到所述攻击轮数;所述时钟周期为所述攻击轮数加1次。
[0090]
由表1可知,一共需要收集grain-128初始化前12个时钟周期的功耗,因此,攻击轮数为11轮,时钟周期为12。
[0091]
s3、收集不同初始向量对应的所有所述时钟周期的能量曲线,并根据所述能量曲线计算所述攻击轮数中相邻所述时钟周期的能量差异曲线。
[0092]
具体的,通过固定密钥key和大量不同的初始向量iv值,收集不同iv值对应的前t轮时钟周期的能量曲线。并计算全部r轮相邻时钟的能量差异。例如,收集12个时钟周期的能量曲线,并将相邻两个时钟周期的能量曲线取差值,得到11轮攻击轮数的能量差异曲线。
[0093]
s4、利用所述每轮攻击的子密钥中每个猜测子密钥和所述初始向量计算所述选择函数的值,并结合所述选择函数的值,利用差分能量分析方法对每轮攻击的所述能量差异曲线进行分析,得到每轮的真子密钥,重复该操作,直到完成所述攻击轮数,得到全部密钥。
[0094]
具体的,根据差分能量分析方法对11轮相邻时钟的能量差异曲线进行分析,逐轮分析出子密钥,直到全部恢复出密钥。
[0095]
具体包括步骤:
[0096]
s41、对所述每轮攻击的子密钥进行穷举搜索,遍历所有的能量差异曲线,由所述每个猜测子密钥与每条所述能量差异曲线对应的所述初始向量计算所述选择函数的值。
[0097]
具体的,初始向量为已知的,每个猜测子密钥由每轮攻击的子密钥可知,因此,可计算出选择函数中每一项的值,进而得到选择函数的值。
[0098]
s42、根据所述选择函数的值将所述每个猜测子密钥对应的所述能量差异曲线分为两组,得到第一能量差异曲线集合和第二能量差异曲线集合。
[0099]
具体的,如果所述选择函数的值为0,则将所述能量差异曲线放入所述第一能量差异曲线集合;如果所述选择函数的值不为0,则将所述能量差异曲线放入所述第二能量差异曲线集合。
[0100]
s43、利用差分能量分析方法计算所述第一能量差异曲线集合和所述第二能量差异曲线集合的差分值,选取差分值最大的猜测子密钥作为所述每轮的真子密钥。
[0101]
具体的,所述第一能量差异曲线集合和所述第二能量差异曲线集合的差分值为:
[0102][0103]
其中,表示第i轮攻击中第j组猜测密钥对应的差分值,p为任意一条能量差异曲线,p0为集合p0中能量差异曲线的个数,p1为集合p1中能量差异曲线的个数,w为总的能量差异曲线个数。
[0104]
进一步的,计算出第一能量差异曲线集合和所述第二能量差异曲线集合的差分值后,选取差分值最大的猜测子密钥作为所述每轮的真子密钥。
[0105]
s44、重复步骤s41~s43,直到完成所述攻击轮数,得到所述全部密钥。
[0106]
综上,设每轮需要猜测的密钥比特数为m,功耗曲线的数量为w,则步骤s4可表达为:
[0107][0108]
本实施例中,通过11轮的运算能够恢复108比特密钥,剩余的20比特信息通过穷举获得。对grain-128实施差分能量攻击,其总的时间复杂度为2
48
2
14
2
11
29 26×
3 23 22×
2 21 2
20
≈o(2
48
)。
[0109]
本实施例中,对流密码算法进行差分能量攻击,将iv值看作明文输入,使选择函数可以称为猜测密钥和已知明文的函数,并且密钥的穷尽量大幅降低。另外,在去掉了n-1个重复项产生的能量对选择方程c的影响,可以达到了去除算法噪声的目的,进而提高了选择方程c的划分精度。
[0110]
综上所述,本实施例的分析方法以流密码fsr在相邻时钟周期的能量差异为攻击点,根据不同的iv输入,得到不同的中间值,根据不同的初始向量和猜测子密钥计算选择函数的值,并采用差分能量分析方法逐轮恢复部分密钥,直到恢复出全部密钥,使得密钥穷尽量从降低到提高了分析的灵活性、有效性和正确性。
[0111]
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的
保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献