基于SMT的线性扩散层分支数测评方法、设备及介质技术

技术编号:32239235 阅读:12 留言:0更新日期:2022-02-09 17:43
本发明专利技术公开了一种基于SMT的线性扩散层分支数测评方法、设备及介质,其中方法包括:步骤一、将线性扩散层内部比特之间的关系的差分和线性传播行为用可满足性模理论SMT的表达式等价刻画;步骤二、建立线性扩散层每个字块和对应比特之间的约束条件;步骤三、计算分支数的大小即统计非零字块的最少个数,先将分支数设置为一个较小值,使得SMT模型没有满足解,然后逐渐增大分支数的大小,直到SMT模型有满足解时,此解即为线性扩散层的分支数大小。本发明专利技术将线性扩散层差分分支数和线性分支数的计算问题转化为SAT问题,建立SMT模型后调用SMT求解器boolector求解,可在较短时间内求解出宽度大于32的线性扩散层的分支数。度大于32的线性扩散层的分支数。度大于32的线性扩散层的分支数。

【技术实现步骤摘要】
基于SMT的线性扩散层分支数测评方法、设备及介质


[0001]本专利技术涉及分组密码算法
,尤其涉及一种基于SMT的线性扩散层分支数测评方法、设备及介质。

技术介绍

[0002]一个分组密码算法通常有混淆层和扩散层,混淆层一般由若干个m
×
m的S盒并置组成,比如AES算法的混淆层由16个8
×
8的S盒并置而成,Camellia算法的混淆层由8个8
×
8的S盒并置而成。一个S盒的输入m比特仅与其输入的m比特有关,与其它S盒的输入无关。而扩散层的作用就是将这些S盒的输出打乱、混合,使得输出的m比特尽可能地与其它S盒的输入也相关。
[0003]扩散层一般由线性变换θ来实现。如果混淆层是由n个m
×
m的S盒并置而成,则θ可以被看成的一个变换,其中
[0004]扩散层分支数的定义:
[0005]令θ:x

θ(x)=y是一个变换,θ(x)=y是一个变换,则称:
[0006][0007]为θ的分支数。其中ω
b
(x)表示非零x
i
(1≤i≤n)的个数,被称为x的包重量,通常S盒的大小为8比特时,x
i
为一个字节,S盒的大小为4比特时,x
i
为一个半字节(nibble),本专利技术在将x
i
统称为一个字块。
[0008]分支数的概念和差分分析及线性密码分析紧密相关,利用它可以给出分组密码活动S盒数目的界,并进一步量化分组密码对差分密码分析和线性密码分析的抵抗力。针对差分密码分析及线性密码分析,类似地定义θ的差分分支数B
d
(θ)和线性分支数B
l
(θ):
[0009][0010][0011]对任何线性变换θ,因为所以差分分支数和分支数是一致的,计算方法相同。
[0012]如果我们将线性变换θ:表示成矩阵形式θ(x)=x
·
M,则θ(x)
·
β
t
=x
·
M
·
β
t
=x
·

·
M
t
)
t
,当且仅当α=β
·
M
t

[0013]所以对于线性变换θ(x)=x
·
M,线性分支数可以表示为:
[0014][0015]即线性变换θ(x)=x
·
M的线性分支数等于λ(x)=x
·
M
t
,因此当线性变换矩阵M是对称矩阵时,即M=M
t
时,线性分支数和差分分支数相等。
[0016]对于变换θ:分支数的概念反映了θ扩散性的好坏,分支数越大,θ扩散效果越好。因此扩散层的安全性设计指标是分支数尽可能大。
[0017]对任何输入x,都有ω
b
(θ(x))≤n,而我们总可以选择汉明重量为1的输入,因此,扩散层θ的分支数最大可以达到n+1,当线性变换的差分分支数达到最大时,可以证明它的线性分支数达到最大。把差分分支数和线性分支数达到n+1的变换θ称为最优扩散变换。利用纠错码的知识可以构造许多最优扩散变换,如AES算法的线性扩散层,为的置换,分支数达到5。不过考虑到实现性能,一些密码算法的扩散层采用2元域上的线性变换,例如Camellia和ARIA算法,虽然分支数不可能达到最大值n+1,但是也达到了面向字节的2元域上的线性变换所达到的最大值,比如Camellia的扩散层可以表示成2元域上8
×
8的矩阵,其分支数为5,ARIA的扩散层可以表示成2元域上16
×
16的矩阵,其分支数为8。
[0018]前面讨论的线性扩散层都是面向字块的,而一些密码算法的扩散层采用比特级的扩散层,比如SMS4和Dblock算法的扩散层。以SMS4算法的为例,线性扩散层为:
[0019][0020]x为32比特的字,如果将其看作的变换,它的分支数是5,其分支数的计算可以直接按照定义的方式遍历计算,计算复杂度为O(2
32
)。而当线性扩散层的宽度较大时,即n
×
m≥32时,按定义遍历计算分支数会变得很慢,计算复杂度为O(2
n
×
m
)。比如将SMS4的线性扩散层扩宽成64比特时,同样构造一个比特级的线性扩散层如下:
[0021][0022][0023]即x为64比特,将θ看作的线性扩散层时,利用定义遍历计算其分支数的复杂度为O(2
64
),使用目前的计算资源在可接受的时间内已经无法计算出其分支数。该类置换的软硬件实现效率都很快,若能保证其分支数的大小,无疑可将其作为分组密码算法中一个性质良好的线性扩散层。
[0024]另外,比如商用密码竞赛算法SMBA中使用的线性扩散层L
64
也是比特级的的置换,设计者利用该置换的一些性质保证其分支数达到6,但利用定义同样无法计算出它的分支数,计算复杂度为O(2
64
),如果有一种能够快速计算出宽度较大的线性扩散层分支数的方法,则会使分组密码线性扩散层的设计变得更加容易。

技术实现思路

[0025]针对宽度大于32的比特级线性扩散层的分支数难以计算的问题,本专利技术提供了基于SMT的线性扩散层分支数测评方法、设备及介质,本质是将线性扩散层差分分支数和线性分支数的计算问题转化为SAT问题,建立SMT模型后调用SMT求解器boolector求解,可以在较短的时间内求解出宽度大于32的线性扩散层的分支数。
[0026]本专利技术采用的技术方案如下:
[0027]一种基于SMT的线性扩散层分支数测评方法,包括:
[0028]步骤一、将线性扩散层内部比特之间的关系的差分和线性传播行为用可满足性模理论SMT的表达式等价刻画,所述线性扩散层内部比特之间的关系包括异或、分支和移位;
[0029]步骤二、建立线性扩散层每个字块和对应比特之间的约束条件,即当输入输出线性扩散层每个字块中的任意一个比特非零时,相应的字块值非零,当每个字块中的所有比特为零时,对应字块的值为零;
[0030]步骤三、计算分支数的大小即统计非零字块的最少个数,先将分支数设置为一个较小值,使得SMT模型没有满足解,然后逐渐增大分支数的大小,直到SMT模型有满足解时,此解即为线性扩散层的分支数大小。
[0031]进一步地,对于线性扩散层θ,x

θ(x)=y为的变换,其中:
[0032][0033][0034][0035][0036]上述x
i
,y
i
为字块,x
ij
,y
ij
为比特,1≤i≤n;将字块x
i
,y
i
,是否为零用0和1值本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于SMT的线性扩散层分支数测评方法,其特征在于,包括:步骤一、将线性扩散层内部比特之间的关系的差分和线性传播行为用可满足性模理论SMT的表达式等价刻画,所述线性扩散层内部比特之间的关系包括异或、分支和移位;步骤二、建立线性扩散层每个字块和对应比特之间的约束条件,即当输入输出线性扩散层每个字块中的任意一个比特非零时,相应的字块值非零,当每个字块中的所有比特为零时,对应字块的值为零;步骤三、计算分支数的大小即统计非零字块的最少个数,先将分支数设置为一个较小值,使得SMT模型没有满足解,然后逐渐增大分支数的大小,直到SMT模型有满足解时,此解即为线性扩散层的分支数大小。2.根据权利要求1所述的基于SMT的线性扩散层分支数测评方法,其特征在于,对于线性扩散层θ如图,x

θ(x)=y为的变换,其中:的变换,其中:的变换,其中:的变换,其中:上述x
i
,y
i
称作为字块,x
ij
,y
ij
称作为比特,1≤i≤n;将字块x
i
,y
i
,是否为零用0和1值来表示,x
i
,y
i
非零时记为1,x
i
,y
i
为零时记为0,公式表示为:每个输入输出比特x
ij
,y
ij
均为二元域上的变量,取值为0或1,其中1≤i≤n,1≤j≤m,变量的值为0时表示输入输出差分或线性掩码为0,值为1时表示输入输出差分或线性掩码为1,称为活跃比特。3.根据权利要求2所述的基于SMT的线性扩散层分支数测评方法,其特征在于,执行步骤一之前,首先要确保线性扩散层的输入比特x
ij
非零,即至少引入1比特差分或线性掩码,用SMT方程表示为:(assert(=#b1(bvorx
11
x
12

x
1m

x
n1
x
n2

x
nm
)))。4.根据权利要求2所述的基于SM...

【专利技术属性】
技术研发人员:苗旭东董新锋张晶谭豪
申请(专利权)人:中国电子科技集团公司第三十研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1