Differential Meet-In-The-Middle Cryptanalysis
Abstract
本文利用原有的两种攻击方式,即差分攻击和中间相遇攻击,结合二者引入了一种新的攻击框架:差分中间相遇攻击(Diff-MITM)。大致思路是利用差分攻击方法覆盖中间若干轮,加密的前几轮和后几轮使用MITM来验证,对于MITM进行了变体和扩展,从而达到比单独使用两者其中任何一个都能覆盖更多的轮数。在论文中,作者将该方法应用于SKINNY-128-384的单密钥模型以及AES-256的关联密钥模型,给出了优于先前分析方法的结果。
差分攻击:利用输入差分(△x)和输出差分(△y)的高概率传播路径
中间相遇攻击:将加密过程分为两部分,在中间状态进行匹配,以期减小密钥搜索的复杂度
中间相遇攻击(MITM)
来源于1977年(Diffie & Hellman, Exhaustive Cryptanalysis of the NBS Data Encryption Standard),该文章对于当时的NBS标准(DES)进行穷举分析,对于多重加密过程,提出了空间-时间折中思路,降低穷举的复杂度。
攻击方法分为大致三步:
1、前向枚举并存表:对于所有可能的密钥进行枚举,对于明文使用密钥进行加密并存入查找表中;
2、反向枚举并查表:对于所有可能的密钥进行枚举,对于密文使用密钥进行解密并存入查找表中,对照步骤1中的查找表,寻找可能的匹配明文-密文对,得到候选密钥对
;
3、候选验证:使用多对明文-密文对将得到的可能密钥对进行筛选。
Attack Framework
Generic Method
在Diff-MITM中将密码E分为三段,使用差分覆盖中间段
,而这段差分概率可设为
,对外两端用MITM的方式并行枚举部分子密钥并在中间做匹配。可以令状态位长度为n,主密钥长度为k,上半部分需要猜位
,下半部分需要猜位
,那么交集位数就为
。
具体思路如上述,论文给出了伪代码如图:
在论文中还给出了时间复杂度、数据复杂度以及内存复杂度的公式如下:
时间复杂度:
数据复杂度:
内存复杂度:
我们以时间复杂度为例,解释计算过程。时间复杂度前后两项分别代表两个过程,第一项为差分相关过程,括号内为两个枚举所有可能的密钥所需的复杂度之和,则代表在差分概率为
的情况下所需的期望值;第二项为MITM匹配过程,指的是匹配阶段的碰撞期望,
可以看做
,
为n位匹配的概率。
在论文中还给出了类似的时间复杂度计算公式:
第三项指的是若是交集不能完全覆盖k位密钥,则需要进行的增加操作的时间复杂度。
Parallel partitions(并行分区)
可以发现,在多数轻量级设计中,例如SKINNY、GIFT等,在ART阶段只向状态的一部分注入轮密钥,即这一轮仅影响m比特,则m<p时,可利用并行分区技巧扩展攻击轮数而不显著增加时间复杂度。
SKINNY
来源于2016年(Beierle, C. et al. (2016). The SKINNY Family of Block Ciphers and Its Low-Latency Variant MANTIS),典型的SPN结构的对称加密算法,具有典型的SPN结构的轮变换操作:SC(S-box)、AC、ART(密钥异或)、SR(行移位)、MC(列混淆)。需要注意的是ART操作是把来自tweakey的轮子密钥异或到状态的上两行,而这一步仅影响一半的比特,这也是并行分区可以实现的条件。
在论文中讨论的SKINNY-128-384,tweakey分为三份,TK1、TK2、TK3,每份128bit;每轮的子密钥是把三份对应字节按位异或得到的。
Main Idea
在ART阶段只影响其中m比特的情况下,考虑并行枚举m位的种情况,对于每次枚举,分别运用MITM进行匹配。在这种操作下,时间复杂度看起来乘了
,但是匹配条件多了部分约束,因为在匹配时,需要这m位与对应的分支满足特定的等式,这样增加的枚举复杂度可以被约束抵消,使得整体时间复杂度不会明显上升,但是攻击轮数确实增加了1轮。
我们将结合论文第三节的具体实验进行分析,有关枚举m位是如何对应约束条件抵消多余的时间复杂度:
因为在ART阶段中,对于SKINNY-128-384来讲,只对于前两行进行TK的异或运算,所以下两行的R-1轮输入差分应该为0,否则不可能出于同意一条差分路径。即表示为如下:
写成比较概括的形式则是:
在我们的加密解密过程中,SR和MC均为线性变换,则我们得到的是m个独立的线性方程,以此作为约束条件以抵消次多出的枚举。
Reducing Data with Imposed Conditions
不难注意到,时间复杂度和其他复杂度计算时有一个很重要的因素,也就是差分概率导致的运算次数期望值。若这个值太大或者若是到了
这样的规模之后,数据复杂度会非常高,使得无法进行实践操作。论文给出了一种思路,即通过加强约束(固定若干明文位)或结构化采样来减少所需数据量。
Main Idea
考虑这样的思考方式:对选择的明文P强制固定x个比特,那么对于同一P构造出的候选满足该约束的概率会下降
。也就是原来需要尝试期望位
次P才遇到差分概率成功的话,现在需要
次,时间复杂度会有所增加;同时,我们在固定x位后,每次只用到
个明文,所以数据复杂度下降
。本质上,这是一种以时间换空间的思想,把数据量换为重复和枚举的次数。
具体可行性条件为两个不等式,这在论文中已经给出:
1、:需要保证在固定x位后,仍然能在
大小的数据中看到满足差分的候选明文
;
2、:若复原主密钥所需的时间超过穷举的时间复杂度
,则该攻击效率不如暴力穷举的基本方案,它就没有意义了。因此不等式左侧的条件是安全性的检查。
时间复杂度检查:对于增加约束之后的操作,时间复杂度可以看做如下等式(论文中给出)
等式左侧是增加约束后数据量减少和每次枚举次数增加后的时间复杂度计算项,可以得到等式右侧推导,我们可以近似认为时间复杂度并没有显著变化,这也是该思路的可行性条件。另外,论文中给出了这个固定的x位具体可以固定多少的计算公式,这在后续对于SKINNY加密算法分析中被加以运用,公式如下:
带入公式计算,可以得到最小的数据量规模。
例如在对于SKINNY加密算法的实验中,代入n=128,p=105.9,得到x约为11。同时实验中比较了固定位数和原实验过程,数据复杂度确实有了较显著的降低。
Discussion and Comparison
从概率角度来看论文提出的新方法,Diff-MITM攻击方法可以看做是一种带概率的MITM,或者可以看做是差分路径定义了MITM的相遇条件。传统的MITM是中间相遇概率为1的确定事件,Diff-MITM则是中间相遇概率为的不确定事件。
Experiment
具体数值计算方法:
交集规模
交集的规模会直接影响整体计算时的复杂度,具体可以看时间复杂度的计算公式,所以在实验中,交集规模的计算必须是精确的。
论文中对于这一部分的计算使用了矩阵运算。轮密钥的得出经过的操作均为线性变换,则可以列出若干轮密钥与主密钥的关系,这是许多个线性方程,每个方程的系数向量作为一行,就可以得到一个矩阵,该矩阵是规模是,也就是并集与主密钥长度大小的一个矩阵。对该矩阵进行高斯消元,那么该矩阵的秩就是
的值,那么使用
和
以及矩阵的秩即可得到交集大小。
差分概率p
论文中采用了一种“截断差分模式”来计算,首先选定一种截断差分模式(图6、图10),采用Choco-solver 的约束编程求解,具体做法是枚举所有满足全局传播约束的具体轨迹,即讨论每个活跃S盒的输入和输出差分,检查传播路径的可能性;再对于每条传播路径,使用活跃S盒的DDT来计算传播轨迹概率;最后聚合所得到的传播路径概率以得到整体的差分概率。
为什么不用全局的DDT计算?通常我们可以通过计算S盒的DDT得到传播概率,这里理论上可以采用一个DDT来计算全局的传播概率。通过搜索可知,这样会使计算量急剧增加,并不如使用多个活跃S盒的DDT进行聚合运算。
Choco-solver:概括来讲是一种将密码分析问题转化为约束求解问题,可以用于解决约束满足问题或约束优化问题,这个就有点像笔者之前用到的MILP和SAT求解问题,但是不同于SAT/MILP,它更强调逻辑一致性与领域削减(?),在论文中可以用于对于差分路径的搜索。
第一次写论文的学习记录,不妥处请多指教!ps:这个还需要标注参考文献吗(?)