1. 引言
随着现代互联网技术的飞速发展以及现代信息泄露事件的频发,数据安全变得愈发重要。密码算法作为密码学的核心之一同样也是保护数据安全的核心技术,其被广泛应用于各种通信和存储系统当中。然而,传统的分组密码算法虽然在安全性上表现优异,但在资源受限的环境当中,它们的计算复杂性和资源消耗往往成为瓶颈。因此为了在资源受限的环境当中也能提供足够的安全性,轻量级分组密码算法应运而生。这类算法力求在能够在有限的计算能力、内存和电池寿命的使用场景中能够提供最大限度的安全性,解决了传统密码算法在低功耗、小尺寸设备中的应用瓶颈,为物联网、智能卡、RFID标签等场景提供了高效且安全的加密解决方案。
近年来,随着技术的快速发展,轻量级分组密码算法,诸如CRAFT [1]、LBlock [2]、PICO [3]、FESH [4]、FBC [5]等,都有着广泛的应用场景,并表现优秀。但是由于轻量级分组密码算法是应用于资源受限的环境中的分组密码,因此在设计之初往往为了追求高效的软硬件的实现效率,可能会在安全性上做出一定的妥协,寻求安全性和高效的软硬件实现的一个平衡点,而这可能成为密码算法保障数据安全的一个薄弱环节。因此对轻量级分组密码算法进行安全性分析非常重要,这是确保其在资源受限的环境中能够可靠运行的关键。只有通过严格的安全性研究评估,才能确保这些算法在实际运用中既能满足高效性需求,又能提供足够的安全保障。
混合整数线性规划(Mixed Integer Linear Programming, MILP)是一种数学优化方法,是线性规划(Linear Programming, LP)的扩展,在线性规划的基础上引入了整数变量,被广泛地应用于解决复杂的决策问题。MILP最初于2011年由Mouha等[6]将其与密码分析方法相结合,研究者采用若干不等式来描述密码算法的各种运算,然后运用多元高次不等式求解算法来获取密钥信息,从而评估密码算法的安全性。该方法效率高且灵活,并且使用计算机辅助搜索和计算,显著提高了密码分析的效率,已成为广泛运用于密码学研究中。
INLEC是2024年由Feng等[7]提出的基于SPN结构的轻量级分组密码算法,该算法分组长度为64比特,主密钥长度为128比特,目前暂未有第三方对其进行安全性分析。为了使得INLEC在实际系统中能够保障信息的安全,因此需要对INLEC算法的安全性进行深入分析。INLEC密码设计者使用MILP自动化搜索工具,对INLEC各个部分进行建模,证明了15轮的INLEC密码算法足以抵御不可能差分攻击、差分攻击和线性攻击,此外通过分析证明了其对代数攻击、侧信道攻击的安全性。但目前的研究尚未有针对INLEC的中间相遇分析,而中间相遇分析[8]已经成功地评估了众多知名分组密码算法的安全性,如AES [9]、Midori [10]等,因此有必要进一步评估INLEC算法抵抗中间相遇攻击的能力。
本文利用MILP自动化搜索算法,提出了11轮INLEC的中间相遇分析。通过研究INLEC算法加密过程的各个操作,建立MILP自动化搜索模型,并使用Gurobi进行求解,得到数条5轮的INLEC中间相遇区分器,并选择需要猜测密钥位最少的一条中间相遇区分器,往前添加2轮,往后添加4轮构成11轮的INLEC中间相遇攻击路径,并根据该路径恢复出全部的密钥。整个攻击过程需要时间复杂度为2115.17次加密,数据复杂度为261个选择明文,存储复杂度为281个64比特块。本文评估了INLEC抵抗中间相遇攻击的能力,是INLEC的安全性研究的重要补充。
2. 预备知识
2.1. 符号说明
1)
表示第i轮的轮常数;
2)
表示将主密钥K的第i个比特;
3)
表示
的级联;
4)
表示循环向左移动i比特;
5)
表示第i轮的轮密钥;
6)
表示第i轮的第j个半字节;
7)
分别表示第i轮的P置换、单元替换、轮密钥加以及列混合之前的中间状态值的第
位置的状态值;
8)
分别表示第i轮的P置换、单元替换、轮密钥加以及列混合之前的中间状态值;
9)
分别表示第
轮的P置换、单元替换、列混合以及轮密钥加之前的中间状态值;
10)
分别表示第i轮的P置换、单元替换、列混合以及轮密钥加之前的中间状态值的第j位置的状态值。
2.2. INLEC算法介绍
INLEC算法采用SPN结构,明文长度为64比特,主密钥长度为128比特,一共15轮。该算法加密过程采用了两个不同的轮函数,分别为F1和F2,其中第1至第8轮采用F1轮函数,第9至第14轮采用F2轮函数,最后一轮仅仅进行P置换和单元替换操作。INLEC两个轮函数所包含的加密操作相同,其中轮函数F1加密操作顺序为P置换、单元替换、列混合、轮密钥加,而轮函数F2则为P置换、单元替换、轮密钥加、列混合。图1为轮函数F1的加密示意图。加密过程中涉及的操作具体定义如下所示。
1) P置换(Permute-Nibble, PN):将对合置换的应用于中间状态,从而实现对中间状态的重新排序,具体的置换关系如表1所示。
2) 单元替换(SubCell, SC):SC是一种非线性变换,通常选用S盒来进行该操作,INLEC选取的S盒是4 × 4的S盒,即S盒输入和输出都为4比特,因此将S盒按序应用于密码中间状态的每个单元,记为
。S盒具体如表2所示。
3) 轮密钥加(AddRoundKey, ARK):将64比特的轮子密钥和密码的中间状态值进行异或。
Figure 1. The round function F1 of INLEC
图1. INLEC加密轮函数F1图
Table 1. Permute-nibble of INLEC algorithm
表1. INLEC的P置换表
x |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
a |
b |
c |
d |
e |
f |
|
d |
8 |
7 |
4 |
a |
|
c |
2 |
1 |
e |
4 |
b |
6 |
0 |
9 |
f |
Table 2. S-box of INLEC algorithm
表2. INLEC算法的S盒
x |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
a |
b |
c |
d |
e |
f |
|
0 |
d |
b |
e |
7 |
5 |
6 |
4 |
f |
9 |
c |
2 |
a |
1 |
3 |
8 |
4) 列混合(MixColumn, MC):将中间状态矩阵左乘二进制矩阵M,
2.3. INLEC的密钥编排算法
INLEC的主密钥长度为128比特,记为
。使用主密钥通过密钥编排算法生成64比特的轮子密钥,具体的密钥编排算法如算法1所示。
算法1. INLEC的密钥编排算法
输入:主密钥
|
输出:轮密钥
, |
|
.;#循环向左移动7比特 |
;#循环向左移动11比特 |
;#第120至123比特经过S盒 |
;#第124至127比特经过S盒 |
;#将第116比特至119比特与轮常数进行异或运算 |
; |
End for |
; |
性质1. 对于给定的S盒,若其非零的输入差分和输出差分分别为
和
,则平均有一个
值满足等式
,该性质同样适用于
。其中
表示S盒的逆。
3. 11轮的INLEC中间相遇分析
3.1. INLEC的密钥编排方案冗余性研究
根据对INLEC密钥扩展方案的深入研究,可以求得如下性质,这些性质将用于后续的中间相遇的攻击过程当中。
性质2. RK10 [7, 8]可由主密钥K {14, 15, 16, 17, 18, 19, 20, 21, 22, 23}确定;RK11 [0, 1, 2, 3, 4]由主密钥K {6~25}确定,因此RK10 [7, 8]可由RK11 [0, 1, 2, 3, 4]推导而来。
性质3. RK9 [6]可由主密钥K {122, 123, 124, 125}确定。且由RK10 [1, 2]可由主密钥K {118, 119, 120121, 122, 123, 125, 126, 127}确定,因此可由RK10 [1, 2]推导出RK9 [6];RK9 [9]可由主密钥K {6, 7, 8, 9, 10, 11, 12, 13}确定,RK11 [0, 1, 2]可由主密钥K {6~17}确定,因此则RK9 [9]可由RK11 [0, 1, 2]推导而来。
性质4. RK8 [12, 13, 14]可由主密钥K {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13},且由先前性质可知,RK10[3, 4]和RK11 [0, 1, 2]可推导出主密钥K {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17},因此RK8 [12, 13, 14]可由RK10 [3, 4]和RK11 [0, 1, 2]推导而来。
性质5. RK1 [9]可由主密钥K {118, 119, 120, 121}确定,RK10 [0, 1, 2]可由主密钥K {116~127}确定,因此RK1 [9]可由RK10 [0, 1, 2]推导而来。
3.2. INLEC基于MILP的模型
INLEC的轮函数一共有4种操作,分别是P置换、单元替换、列混合和轮密钥加,其中轮密钥加和单元替换部分并不会改变差分传播过程当中的中间状态值,因此在本次建模中轮函数的4种操作不考虑轮密钥加和单元替换这两个操作,仅考虑P置换和列混合的建模。具体的约束条件如下:
1) P置换操作。对于INLEC而言,P置换是基于半字节级别的替换,令
分别表示P置换的输入中间状态和输出中间状态,具体如公式(1)所示。
(1)
2) 列混合运算。假设,
分别是列混合过程的输入中间状态以及输出中间状态,则列混合的变换如公式(2)所示:
(2)
因此使用公式(3)来描述列混合运算的加密过程。
(3)
3) 差分状态的约束。假设
为加密方向的状态差分,
为解密方向的状态差分,
为
和
的交集,根据上述的描述,由于无需对轮密钥加和单元替换进行建模,因此每轮的INLEC的差分状态同样可以分成3个部分,分别是每轮的输入差分状态,经过P置换后的差分状态以及经过列混合之后的差分状态,具体如公式(4)所示。
3.3. 基于MILP的中间相遇区分器搜索算法
本文采用Demirci和Selçuk提出的中间相遇攻击方式。该分析方法具体为将加密算法分成了三个部分,即
,它们相对应的部分密钥分别为
。在离线阶段,在中间的
部分构建多轮的区分器,并且计算出中间状态的有序序列值,猜测
的部分值来进行部分加密和解密,如果求解出来的中间值与计算表中的值匹配,则猜测的可能正确。具体的攻击过程如图2所示。
Figure 2. DS-MITM attack process
图2. DS-MITM攻击过程
(4)
本文首先采用3.2小节中所建立的INLEC的模型,并且结合INLEC自动化搜索中间相遇区分器算法,即算法2生成自动化搜索模型,并采用相应的求解器进行求解,最终得到数条5轮的中间相遇区分器。对搜索到的中间相遇区分器分别往前和往后添加若干轮形成相应的攻击路径,记录下各个区分器所能攻击到的最长轮数和相应复杂度的情况,构成有序序列所需的半字节个数等等信息,最终对这些区分器进行筛选,选取出攻击效果最好的区分器作为本次攻击采用的区分器,表3中列出了搜索到的效果最好的4条中间相遇区分器的具体情况。根据表3的内容可知
的效果最好,因此选取
为本文中间相遇攻击的区分器。
算法2. INLEC自动化搜索中间相遇区分器算法
输入:输入差分集合
,输出差分集合
,INLEC算法的不等式约束 |
输出:r轮的可能的中间相遇区分器集合Distlist列表IC;存储将输入差分部分加密后每轮的中间状态差分列表OC;存储将输出差分部分解密后每轮的中间状态差分 |
|
续表
输入INLEC算法的不等式约束 |
将目标函数设置为IC和OC的交集 |
end for |
|
#将输入差分部分加密,记录每轮的中间状态差分,最后返回并且存储在列表IC当中 |
|
#将输出差分部分解密,记录每轮的中间状态差分,最后返回并且存储在列表OC当中。 |
Distlist = IC AND OC#选取IC和OC中保存的每轮中的中间状态差分值的交集 |
end for |
end for |
Return中间相遇区分器集合Distlist |
Table 3. IVLBC meet-in-the-middle distinguishers (part)
表3. 搜索到的部分INLEC中间相遇区分器(部分)
编号 |
中间相遇区分器 |
轮数 |
有序序列需要猜测半字节个数 |
攻击轮数 |
|
|
5 |
20 |
11 |
|
|
5 |
19 |
10 |
|
|
5 |
15 |
10 |
|
|
5 |
16 |
10 |
在表3中0表示该半字节的差分为零,1则表示差分为非零,
表示连续i个比特为0。
3.4. 5轮的INLEC中间相遇区分器
根据上一小节中的描述,选取表3中的
作为本次中间相遇攻击的区分器,该区分器的具体情况如图3所示。为了描述搜索到的区分器,需要定义一个
集,记为
,选取其中33个
,经过5轮的INLEC加密过后得到相应的有序序列。如果该集合中该集合中有一个元素满足图3所示的截断差分,则该有序序列共
个值。将这些有序序列存放在一个预计算表
中。该5轮中间相遇区分器的性质如下:
性质6 将
处的
集
进行5轮的INLEC部分加密,如果该集合中有一个满足图3所示的截断差分特征,则与该
集相关的有序序列
的可能性为
个,由
共计20个半字节确定。
证明:根据
已知,可以推导出
的值,并猜测
的值,可以计算出
以及
的值。由于轮密钥加和列混合是线性操作不会改变中间状态的差分值,所以可以推导出
的值,类似地猜测
的值,可以推导出
和
的值,随后可以计算出
的值。然后从输出端进行反向推导,猜测
,由此根据性质1可以推导出
,随后猜测
的值,可以推导出
和
的值,再继续往前计算可以求出
的值,继续猜测
的值,所以可以推导出
的值。根据性质1,平均可以得到一个值
满足
,证毕。
Figure 3. 5-Round meet in the middle distinguisher
图3. 5轮INLEC中间相遇区分器
3.5. 11轮的INLEC中间相遇攻击过程
在图3所示的5轮中间相遇区分器的基础上往前添加2轮,往后添加4轮,构成11轮的INLEC中间相遇攻击路径,该路径具体情况如图4所示。整个攻击包含预计算阶段和在线阶段两部分,其中预计算阶段通过构建预计算表来方便在线阶段提取相对应的密钥。
3.5.1. 预计算阶段
构建一个预计算表
来存储
个有序序列
的值。并且还对分析轮当中的部分轮数建立起预计算表,以便在线阶段获得相关的轮子密钥,降低攻击的时间复杂度。
1) 表
:猜测
和
的全部
个可能值,由此计算出
,
,
,以
为索引,将
存储在
中。表
中有
行,平均每行有
个值。
Figure 4. 11 rounds of meet-in-the-middle attack process
图4. 11轮INLEC中间相遇攻击过程
2) 表
:猜测
和
的全部
个可能值,由此计算出
,
,
以
为索引,将
存储在
中。表
中有
行,平均每行有
个值。
3) 表
:猜测
和
的全部
个可能值,由此计算出
,
,
以
为索引,将
存储在
中。表
中有
行,平均每行有
个值。
4) 表
:猜测
和
的全部
个可能值,由此计算出
,
,
以
为索引,将
存储在
中。表
中有
行,平均每行有
个值。
5) 表
:猜测
和
的全部
个可能值,由此计算出
,
,
以
为索引,将
存储在
中。表
中有
行,平均每行有
个值。
6) 表
:猜测
和
的全部
个可能值,由此计算出
,
,
,以
和
为索引,将
存储在
中。表
中有
行,平均每
行有1个值。
7) 表
:猜测
和
的全部
个可能值,由此计算出
,
,以
和
。为索引,将
存储在
中。表
中有
行,平均每行有
个值。
8) 表
:猜测
和
的全部
个可能值,由此计算出
以
和
为索引,将
存储在
中。表
中有
。行,平均每
行有1个值。
9) 表
:猜测
和
的全部
个可能值,由此计算出
,
,
以
为索引,将
存储在
中。表
中有
行,平均每行有
个值。
10) 表
:猜测
和
的全部
个可能值,由此计算出
,
,
,和
为索引,将
存储在
中。表
中有
行,平均每行有1个值。
3.5.2. 在线阶段
本节中构成的中间相遇攻击路径的概率为
,具体分析如下:第一,差分
经过列混淆操作之后生成了
(记作
),该操作的概率,大小为
;第二,当
时产生的概率大小为
;第三,当
时,所产生的概率为
;第四,当
时,所产生的概率为
;第五,当
时,所产生的概率为
。因此,该截断差分特征所对应的概率大小为
。
为了找到正确的消息对,推导出使其满足每对截断差分特征的轮子密钥。然后根据
集,计算得到有序序列
的值,并判断该序列是否与预计算阶段构建的表
内的条目匹配。在线阶段的攻击过程描述如下:
1. 定义一个包含
个明文的结构,其中
取所有可能的
个值,其余的4个半字节被固定为一些常量。因此,一个结构可以生成
个明文对,且每个对都满足明文差分。现需使用
个这样的结构来生成
个明文对。在这
个明文对中,约有1个明文对满足其截断差分特征,因为该截断差分特征的概率为
。
2. 对选择的
个明文对进行加密并且筛选出满足
这4个位置为固定值的密文对,由此共有
个明密文对,利用这些密文对来计算出密文对差分值;同时对明文对继续进行筛选,筛选出满足
这6个位置为固定值的明文对,最后共有
个明密文对。然后对这些明文–密文对执行以下的操作,来恢复可能的候选密钥。
1) 根据密文对状态值,计算得到
和
的值,以
为索引访问
,得到
,并通过计算可以获得
共计
个可能值。
2) 根据密文对状态值,可以计算得到
和
的值,以
为索引访问
,得到
,并通过计算可以获得
共计
个可能值。
3) 根据密文对状态值,可以计算得到
和
的值,以
为索引访问
,得到
,并通过计算可以获得
共计
个可能值
4) 根据先前对表
的查询结果,可以计算得到
和
的值,以
为索引访问
,得到
,并通过计算可以获得
共
个可能值。
5) 根据先前对表
的查询结果,可以计算得到
和
的值,以
为索引访问
,得到
,并通过计算可以获得
共
个可能值。
6) 根据先前对表
的查询结果,可以得到
和
的值,并且根据性质2可知
可由
,且在先前的步骤中猜测了
,因此猜测
的全部
个可能值,随后根据等式
,得到
,以
和
为索引访问
,每
行得到1个值,最终可以获得
共
个可能值。
7) 根据先前对表
,
和
的查询可以得到
和
,根据性质3可知,
可推导出
,
可由
推导出,因为
在先前的步骤中都已猜测,由此可以获得
的值,根据
,计算出
,以
和
为索引访问
,每行有
个值,最终可以获得
共
个可能值。
8) 根据先前对表
的查询可以得到
和
,根据性质4可知,
可由
和
推导而来,根据
计算出
,以
和
为索引访问
,每
行有1个值,最终可以获得
共
个可能值。
9) 根据明文对状态值,可以计算得到
和
的值,以
为索引访问
,得到
,并通过计算可以获得
共
个可能值。
10) 根据明文对状态值,可以计算得到
和
的值,根据性质5,可知
可由
推导而来,且
在先前步骤已经获得,因此猜测
的全部
个可能值,可以获得
个
的可能值,因此通过计算等式
,因此以
和
为索引访问
,平均每行有一个值,因此可以获得
共
个可能值。
3. 对于上述操作所得到的有序序列
,需要判断是否与表
中的条目匹配。如果匹配则上述轮子密钥可能为正确的;否则,就是错误的轮子密钥,直接筛选出对应的密钥空间。一个错误的密钥被筛选的概率为
,因此大约还有
个候选轮子密钥剩余。根据密钥编排可知
可由
推导;
可由
推导出;
可由
推导而来;
可由
和
推导而来;
可由
推导而来,由此在在线阶段一共猜测100个主密钥相关比特位,剩余28个未知比特。最后穷举搜索
个候选轮子密钥和28个未知比特来恢复主密钥。
3.5.3. 复杂度分析
根据在线阶段的步骤(1),可以清楚地发现攻击的数据复杂度为
个选择明文。同时攻击的存储复杂度主要由预计算阶段的预计算表
的大小决定,大约为
个64比特块。预计算阶段的时间复杂度大约为
次加密,由上文可知,在线阶段复杂度最高于步骤10),因此在线阶段的时间复杂度为
次加密。对于剩下的
个候选子密钥以及28个未知比特,可以使用两个明密文对进行穷尽搜索恢复主密钥的值,该过程对应的时间复杂度为
加密。
综上所述,该攻击的时间复杂度为
次加密,数据复杂度为
个选择明文,存储复杂度为
个64比特块。
4. 结束语
本文研究了INLEC轻量级分组密码算法抵抗中间相遇攻击的能力。首先研究了INLEC密码算法的结构,结合算法2构建出基于MILP的自动化搜索模型,并使用Gurobi求解器,寻找出了多条5轮的INLEC中间相遇区分器,并且对搜索到的区分器往前和往后添加若干轮,记录其攻击的最大轮数和构建出有序序列所需的半字节个数,最终筛选出效果最好的区分器作为本文攻击的中间相遇区分器。根据上述策略,选取出效果最优的区分器,并在其基础上往前扩展2轮,往后扩展4轮,构成了针对INLEC密码算法的11轮中间相遇攻击,在攻击的过程当中通过研究其密钥编排算法,使用预计算表技巧提升了攻击的效率,降低了攻击所需的时间复杂度。该攻击所需的时间复杂度为
次加密,数据复杂度为
个选择明文,存储复杂度为
个64比特块。此结果是对INLEC安全性分析的重要补充。
NOTES
*通讯作者。