Differential Analysis of the Initialization of MORUS Based on Mixed-Integer Linear Programming
-
摘要: 认证加密算法 MORUS是凯撒 (CAESAR)竞赛的优胜算法,抗差分分析性能是衡量认证加密算法安全性的重要指标之一。该文研究了MORUS算法初始化阶段的差分性质,首先给出了一个差分推导规则,可以快速获得一条概率较大的差分链。在此基础上利用混合整数线性规划(MILP)自动搜索技术求解更优的差分链。为了提高搜索速度,结合MORUS初始化阶段的结构特点给出了分而治之策略。根据ΔIV的重量、取值将MILP模型划分为多个子模型并证明了部分子模型的等价性,大大缩减了模型的求解时间,得到了MORUS初始化阶段1~6步状态更新的最优差分链。最后给出了简化版MORUS的差分-区分攻击,该文的结果较之前的工作有较大的提升。
-
关键词:
- 认证加密算法 /
- MORUS /
- 混合整数线性规划自动搜索 /
- 差分分析
Abstract: The authenticated encryption algorithm MORUS is one of the finalists of Competition on Authenticated Encryption: Security, Apllicability, and Robustness (CAESAR). The ability to resist differential analysis is one of the important indicators to evaluate the security of authenticated encryption algorithm. The differential property of the initialization of MORUS is researched in this paper. Firstly, a differential deduction rule is proposed to give fast a differential characteristic with a relatively high probability. Based on this, a better differential characteristic is given by using Mixed-Integer Linear Programming (MILP). To improve the efficiency of solving the MILP model, a Divide-and-Conquer approach is showed. According to the weight and value of ΔIV, the MILP model is divided to many sub-models. The most sub-models are proved to be equivalent, and this reduces dramatically the time to solve the model. The best differential characteristics are given with 1 to 6 state update functions in the initialization of MORUS. Finally, the differential-distinguish attack on the simplified versions of MORUS is showed. This paper improves the result of the previous related work. -
1. 引言
认证加密算法广泛应用于各类安全系统中[1],是一类兼具消息认证与数据加密功能的密码算法。认证加密算法一般包括加密算法E与解密算法D。加密算法输入密钥K、NonceN、相关数据A、明文M,输出密文C、认证码T
(C,T)=E(K,N,A,M) (1) 解密算法D输入密钥K、NonceN、相关数据A、密文C、认证码T,认证通过时输出明文M,否则输出⊥
D(K,N,A,C,T)∈{M,⊥} (2) 2014年,国际密码研究协会发起凯撒(Competition on Authenticated Encryption: Security, Apllicability, and Robustness, CAESAR)竞赛[2],面向全球密码工作者征集认证加密算法,最终于2018年公布了7个优胜算法,包括MORUS, ACORN, AEGIS, Ascon, COLM, Deoxys, OCB。2018年,美国国家标准与技术研究院(National Institute of Standards and Technology, NIST)发起征集兼具认证与加密功能的轻量级密码算法的进程[3],并于2021年公布了10个优胜算法。随着各种新型认证加密算法的提出,其安全性研究成为当前的热点问题[4-7]。
以往的安全分析往往依赖手工推导,1994年,Matsui[8]提出了分支定界搜索算法来搜索最优差分链,这是一种强有力的分析工具,拉开了自动化分析密码算法安全性的序幕[9-12]。2014年,Sun等人[13]建立混合整数线性规划(Mixed-Integer Linear Programming, MILP)模型刻画密码算法的差分性质,并利用Gurobi求解器求解MILP模型,以此来搜索最优差分链。为了提高MILP模型的求解速度,Zhou等人[14]针对沙盒置换网络(Sbox Permutation Net, SPN)结构的分组密码算法提出了分而治之策略,有效地提高了差分\线性链的搜索效率。
作为CAESAR竞赛的优胜算法之一,认证加密算法MORUS由Wu等人[15]设计提出,遵循了流密码算法的设计思路,根据参数设置分为3个版本MORUS-640-128,MORUS-1280-128,MORUS-1280-256。自提出以来,MORUS的安全性分析得到了广泛的研究,张沛等人[16]从完全性和差分扩散性两个角度对MORUS-640的初始化阶段进行了研究,给出了MORUS初始化阶段的差分推导规则,并对简化版MORUS进行了差分-区分攻击,施泰荣等人[17]结合中间相遇思想研究了MORUS算法在故障模型中的差分性质。
现有工作对MORUS算法的差分分析仍有较大改进空间,本文主要基于MILP自动搜索技术研究了MORUS算法初始化阶段的差分性质。首先给出一个改进的差分推导规则,相较张沛等人[16]的工作,在初始化阶段步数较大时可以找到更好的差分链。进而,给出了刻画MORUS初始化阶段差分性质的MILP模型,当初始化阶段步数较大时,MILP模型无法在有限时间内求解,本文针对MORUS初始化阶段的结构特点给出了分而治之策略,根据ΔIV的重量及取值,将MILP模型划分为多个子模型,并证明了其中大部分模型具有等价性,不需要对这一部分子模型进行求解,从而得到了初始化阶段1~6步状态更新的最优差分链。最后,根据得到的差分链给出了MORUS的差分-区分攻击。之前的工作[16,17]只分析了MORUS-640的差分性质,本文对MORUS的所有版本均给出了差分分析结果,且较之前的结果有较大提升。
2. 认证加密算法MORUS
MORUS算法[15]包括3种参数设置:MORUS-640-128, MORUS-1280-128, MORUS-1280-256,表1给出了MORUS的具体参数设置。
表 1 MORUS的参数设置(bit)参数 MORUS-640-128 MORUS-1280-128 MORUS-1280-256 密钥长度 128 128 256 IV长度 128 128 128 状态大小 640 1280 1280 认证码长度 128 128 128 下文用MORUS-640指代MORUS-640-128,用MORUS-1280指代MORUS-1280-128与MORUS-1280-256。在具体介绍MORUS算法之前,先给出符号说明如表2所示。
表 2 符号说明符号 说明 ⊕ 逐比特异或; & 逐比特与; <<< 循环左移; 0l l bit 0; 1l l bit 1; const0 00||01||01||02||03||05||08||0d||15||22||37||59||90||e9||79||62; const1 db||3d||18||55||6d||c2||2f||f1||20||11||31||42||73||b5||28||dd; Si 第i步输入状态; Si,j 第i步第j轮输入状态; Si,jk Si,j第k个bit块,对于MORUS-640,每个状态包含5个128 bit块,对于MORUS-1280,每个状态包含5个256 bit块; Si,jk,l Si,jk的第l bit。 对于xbit(x=128,256)块X=X1||X2||X3||X4,其中Xi是ybit(y=32,64)字,Rot\_x\_y(X,b)=(X1<<<b)||(X2<<<b)||(X3<<<b)||(X4<<<b)。MORUS的状态更新函数为Si+1=StateUpdate(Si,mi),状态更新函数包括5轮子函数,图1给出了其具体结构。
表3给出了状态更新函数中bi,wi(i=0,1,2,3,4)的取值。
表 3 循环常数MORUS-640 MORUS-1280 MORUS-640 MORUS-1280 b0 5 13 w0 32 64 b1 31 46 w1 64 128 b2 7 38 w2 96 192 b3 22 7 w3 64 128 b4 13 4 w4 32 64 完整的MORUS加密算法包括4个阶段:初始化阶段、相关数据处理阶段、明文处理阶段、认证码生成阶段,下面给出MORUS-5n算法n=128,256的具体描述:
(1) 初始化阶段。装填密钥K与IV得到初始状态S0,对于MORUS-640,令
S0,00=IV,S0,01=K,S0,02=1128,S0,03=const0,S0,04=const1 (3) 完成K与IV的装填后,初始化状态经过16步状态更新函数
Si+1=StateUpdate(Si,0), i=0,1,⋯,15 (4) 最后进行密钥加
S16,01=S16,01⊕K (5) (2) 相关数据处理阶段。相关数据AD被分割成u个n bit块AD→AD0||AD1||⋯||ADu−1,并参与接下来的状态更新
S17+i=StateUpdate(S16+i,ADi), i=0,1,⋯,u−1 (6) (3) 明文处理阶段。明文P被分割成v个n bit块P→P0||P1||⋯||Pv−1,进行加密与状态更新:对于 i=0,1,⋯,v−1
Ci=Pi⊕S16+u+i,0⊕(S16+u+i,1<<<w2)⊕(S16+u+i,2&S16+u+i,3) (7) S17+u+i=StateUpdate(S16+u+i,Pi) (8) (4) 认证码生成阶段。令L1,L2分别为相关数据长度|AD|与明文长度|P|的64 bit二进制表示,令tmp=L1||L2||0n−128,S16+u+v,4=S16+u+v,4⊕S16+u+v,0,继续进行状态更新
S17+u+v+i=StateUpdate(S16+u+v+i,tmp), i=0,1,⋯,9 (9) 产生认证码
T=S26+u+v,0⊕(S26+u+v,1<<<w2)⊕(S26+u+v,2&S26+u+v,3) (10) 3. MORUS的差分推导规则
本节针对MORUS算法初始化阶段给出差分推导规则,意在寻找概率较高的差分链。MORUS算法中唯一的非线性操作是逐比特与运算,对于与运算y=x1&x2,假设输入变量差分为Δx1,Δx2,则输出差为
Δy=(x1&x2)⊕(x1⊕Δx1)&(x2⊕Δx2)=x1Δx2⊕x2Δx1⊕Δx1Δx2 (11) 根据输入差分的不同,划分为以下4种情况:
(1) Δx1=0, Δx2=0,则Δy=0;
(2) Δx1=0, Δx2=1,则Δy=x1;
(3) Δx1=1, Δx2=0,则Δy=x2;
(4) Δx1=1, Δx2=1,则Δy=x1⊕x2⊕1。
从情况(2)—情况(4)中可以看到Δy的取值是与输入变量的值有关的,当输入变量的值已知时,Δy的值以概率1确定,当输入变量的值未知时,Δy以概率1/122取0,以概率1/122取1(事实上,MORUS初始化阶段仅第1步中的部分内部状态是已知的)。据此,本文将以上情况分为两类:
A:Δy以概率1取定值;
B:Δy以概率1/122取0,以概率1/122取1。
对于MORUS状态更新函数中的任意内部状态差分ΔSi,jk,本文称ΔSi,jk中bit 1的数量为该内部状态差分的重量,记为|ΔSi,jk|。直观地,在差分推导过程中,为了提高差分链的概率,希望内部状态差分的重量尽可能小。为了方便描述本文暂时忽略所有移位操作,这对分析不会产生任何实质影响。
首先看第i步状态更新函数中第1轮的与门Yi,0l=Si,00,l⊕Si,01,l&Si,02,l⊕Si,03,l,为了研究其输出差分ΔYi,0l的取值将会产生的影响,观察Yi,0l直接参与的所有运算:1个异或Yi,0l⊕Si,22,l⊕Si,23,l&Si,24,l,2个与门Yi,0l&Si,34,l, Yi,0l&Si,41,l。如果ΔSi,22,l=1, ΔSi,23,l=ΔSi,24,l=0,令ΔYi,0l=1可以降低ΔSi,32,l的重量,这个非0差分产生了“好的影响”。当ΔSi,34,l=0或者ΔSi,41,l=0时,ΔYi,0l=1使得上面两个与门变成了活跃的,但当ΔSi,34,l=ΔSi,41,l=1时,这两个与门必然是活跃的,则ΔYi,0l=1对这两个与门的活跃性不会产生实质性影响。综上当ΔSi,22,l=ΔSi,34,l=ΔSi,41,l=1, ΔSi,23,l=ΔSi,24,l=0时,ΔYi,0l=1将会产生“好的影响”,由此给出了如下差分推导规则:
(1) 当与门属于A类情况时,ΔYi,0l可以唯一确定;
(2) 当与门属于B类情况时,如果满足条件:ΔSi,22,l=ΔSi,34,l=ΔSi,41,l=1且ΔSi,23,l=ΔSi,24,l=0,则令ΔYi,0l=1,否则令ΔYi,0l=0。
对于第i步状态更新函数中其他轮的与门同样如此,由此得到了状态更新函数完整的差分推导规则。本文需要确定初始状态的差分便可以进行差分推导,MORUS的初始化阶段的初始状态中S0,02, S0,03, S0,04是已知常数,差分固定为0,S0,01是密钥,在实际攻击中无法控制但可以进行多次加密,差分同样固定为0。S0,00只与IV有关,由于IV是已知的,可以选择ΔIV的值,根据经验ΔIV的重量为1时,更有可能得到好的差分链,此时ΔS0,00的值有128种可能。来看第1步状态更新函数第4轮的与门S0,30,l&S0,34,l,其中ΔS0,30,l=ΔS0,00,l,S0,34,l的值是已知的,当ΔS0,30,l=ΔS0,00,l=1时,如果S0,34,l=1, Δ(S0,30,l&S0,34,l)=1,产生了一个非0差分,如果S0,34,l=0, Δ(S0,30,l&S0,34,l)=0,这表明了ΔS0,00中1的位置对差分传递是有影响的,据此给出了ΔS0,00的候选集合。令Δ(l′)(l′∈{0,1,⋯,127})表示一个128 bit块,其第l′ bit为1,其余bit为0。
对于MORUS-640,ΔS0,00的候选集合为
{Δ(l′)|l′∈{0,1,⋯,127}:S0,34,l′=0} (12) 对于MORUS-1280,ΔS0,00的候选集合为
{Δ(l′)||0128|l′∈{0,1,⋯,127}:S0,34,l′=0} (13) 加入移位操作,上面的分析仍然可行,在实际攻击中,把所有操作都考虑在内。表3给出了利用该差分推导规则得到的较高的差分转移概率。
本文将表4与现有最好的结果进行对比,文献[16]中给出了MORUS-640状态更新步数为5,6,7时的差分转移概率分别为2−228, 2−301, 2−455,当步数为5,7时,找到了概率更高的差分链,步数为6时,差分转移概率相同。另外,文献[16]中并未给出MORUS-1280的结果。
表 4 MORUS初始化阶段差分转移概率状态更新步数 1 2 3 4 5 6 7 MORUS-640 2−1 2−8 2−29 2−82 2−180 2−301 2−453 MORUS-1280 2−1 2−8 2−29 2−86 2−201 2−399 2−681 4. MORUS的MILP差分分析
第3节的差分推导规则只能保证找到的差分链中活跃与门数量尽可能少,采用的是局部最优的思想。本节给出了MORUS的MILP差分自动搜索方法,以第3节的结果为基础,利用分而治之思想,搜索全局最优的差分链。MORUS的状态更新函数包括5轮子函数,本节将状态更新以轮为单位,例如,进行16轮状态更新就是进行3.2步状态更新函数。
根据MORUS算法初始化阶段的初始状态装填,可以得到初始状态差分ΔS0,0=(ΔS0,00,ΔS0,01,ΔS0,02,ΔS0,03,ΔS0,04)如表5所示。
表 5 MORUS初始化阶段的初始状态差分ΔS0,0MORUS-640 MORUS-1280 ΔS0,00 ΔIV ΔIV||0128 ΔS0,01 0128 0256 ΔS0,02 0128 0256 ΔS0,03 0128 0256 ΔS0,04 0128 0256 对于初始化阶段的前4轮状态更新,在已知差分ΔIV的情况下,手动推导可以得到以概率1成立的差分链,所以本文的MILP模型从初始化阶段的第5轮状态更新开始刻画,这样做可以大大减少模型中变量与不等式的数量,从而提高MILP模型的求解速度。表6给出了已知ΔIV第5轮状态更新的输入差分ΔS0,4=(ΔS0,40,ΔS0,41,ΔS0,42,ΔS0,43,ΔS0,44),这是容易推导得到的。
表 6 MORUS初始化阶段第5轮状态更新的输入差分ΔS0,4MORUS-640 MORUS-1280 ΔS0,40 Rot\_128\_32(ΔIV,b0)<<<w2 Rot\_256\_64(ΔIV||0128,b0)<<<w2 ΔS0,41 0128 0256 ΔS0,42 Rot\_128\_32(ΔIV,b0+b2) Rot\_256\_64(ΔIV||0128,b0+b2) ΔS0,43 Rot\_128\_32(ΔS0,40&(S0,04<<<w1),b3) Rot\_256\_64(ΔS0,40&(S0,04<<<w1),b3) ΔS0,44 0128 0256 4.1 MILP差分模型构建
MORUS初始化阶段的主要运算包括移位、模2加、与门。首先给出这些运算的MILP刻画,其中移位只涉及变量下标的变换,不需要额外的不等式进行刻画。
对于模2加a⊕b=c,可以用下面等式刻画其差分特性,这里需要引入一个新变量dummy
Δa+Δb+Δc=2dummy (14) 对于与门a\& b=c,可以用不等式(15)刻画其差分特性
Δa+Δb≥Δc (15) 将每一轮中的模2加和与门看作一个整体a⊕(b&c)⊕d=e去刻画其差分特性
Δa+Δb+Δc+Δd−Δe≥0Δa+Δb+Δc−Δd+Δe≥0−Δa+Δb+Δc+Δd+Δe≥0−Δa+Δb+Δc−Δd−Δe≥−2} (16) 这样刻画将增加不等式的个数,但也大大减少了变量的个数。表7给出了对于R轮状态更新这两种刻画方式的比较。
表 7 MORUS子轮函数两种刻画方式的比较刻画方式 (2)+(3) (4) 变量个数 3Rn Rn 不等式个数 2Rn 4Rn 对于一个R轮状态更新,原本的刻画方式(2)+(3)需要引入新的变量来刻画与门的输出差,还要引入辅助变量dummy来刻画模2加,其变量个数是新的刻画方式(4)的3倍,从实验结果来看,刻画方式(4)加快了MILP模型的求解速度。
第r轮输出差分ΔS⌊r/5⌋,rmod50,ΔS⌊r/5⌋,rmod51,ΔS⌊r/5⌋,rmod52,ΔS⌊r/5⌋,rmod53,ΔS⌊r/5⌋,rmod54,为了进一步减少MILP模型中变量的个数,只对ΔS⌊r/5⌋,rmod5(r−1)mod5进行刻画,其余4个bit块没有发生改变或者只进行了简单移位,不需要进行重复的刻画。
MILP模型中除了设置变量与约束条件,还需要定义目标函数,本文的目标是求解r1~r2轮状态更新中活跃与门数量的最小值,目标函数设为(|表示逻辑或,n=128或256)
minr2∑r=r1n−1∑i=0(ΔS⌊r−15⌋,(r−1)mod5rmod5,i|ΔS⌊r−15⌋,(r−1)mod5(r+1)mod5,i) (17) 本节建立了以下3种MILP模型:
(1) MR:目标函数为求解MORUS初始化阶段R轮状态更新中活跃与门数量的最小值。
(2) M[r1,r2][WΔIV≥x]:目标函数为求解MORUS初始化阶段第r1~r2轮状态更新中活跃与门数量的最小值,限制ΔIV的重量大于等于x,也用WΔIV=x表示ΔIV的重量等于x。
(3) M[r1,r2][Dr=ΔS]:目标函数为求解MORUS初始化阶段第r1~r2轮状态更新中活跃与门数量的最小值,限制第r轮的输入差分为ΔS。
为了叙述方便,将模型(2), (3)统一记为M[r1,r2][Con],Con表示限制条件。用Sol( )表示模型的解,本文的目的是求解Sol(MR),其他模型作为辅助模型,下文将根据分而治之思想求解Sol(MR)。
4.2 分而治之策略
在利用MILP搜索差分链时,当轮数增加,搜索最优差分链的难度将呈指数级增加,要解决的首要问题是如何提高求解MILP模型的速度。2019年,Zhou等人[14]针对SPN结构,提出了分而治之策略以提高MILP模型的搜索能力,受他们的启发,为了使MOURS的MILP差分模型尽可能搜索更多轮,基于已有的差分链搜索经验我们提出了适用于MORUS的分而治之策略。分而治之策略的思想是将求解一个MILP模型的问题划分为求解多个MILP子模型的问题,其中大部分子模型的求解可以利用一些方法提前终止,这就大大减少了搜索时间。对于SPN结构的分组密码,输入输出差分是可以任意取值的,与SPN结构的分组密码不同的是,MORUS给定了状态的初始值,所以其初始状态差分也受到限制,这使得在搜索差分链时要“沿着”状态更新的方向。
根据第4节开始部分的分析,由于MORUS初始化阶段1~4轮的差分传递是以概率1成立的,不需要考虑1~4轮的活跃与门,所以求解Sol(MR)实际上只需求解Sol(M[5,R][WΔIV≥1])。MORUS初始化阶段的初始状态中,只有IV是可以控制的,ΔIV=0则整个初始状态差分为0,考虑这种情况是没有意义的,将ΔIV根据重量分为3种情况考虑:|ΔIV|=1, |ΔIV|=2, |ΔIV|≥3,对应地模型M[5,R][WΔIV≥1]被划分为3个子模型M[5,R][WΔIV=1], M[5,R][WΔIV=2], M[5,R][WΔIV≥3],则有
Sol(MR)=min(Sol(M[5,R][WΔIV=1]),Sol(M[5,R][WΔIV=2]),Sol(M[5,R][WΔIV≥3])) (18) 由表6,当ΔIV确定时,其对应的第5轮输入差分记为
ΔS0,4(ΔIV)=(ΔS0,40(ΔIV),ΔS0,41(ΔIV),ΔS0,42(ΔIV),ΔS0,43(ΔIV),ΔS0,44(ΔIV)) (19) ΔIV的重量为x时,取值有Cx128种,对应的ΔS0,4(ΔIV)的取值有Cx128种,记ΔS0,4(ΔIV)这Cx128种取值组成的集合为Ωx,则有定理1。
定理1 对于MORUS初始化阶段的MILP差分模型MR,有
Sol(MR)=min(minΔS∈Ω1Sol(M[5,R][D5=ΔS]),minΔS∈Ω2Sol(M[5,R][D5=ΔS]),Sol(M[5,R][WΔIV≥3])) (20) 证明 根据上文的讨论M[5,R][WΔIV=x]可以进一步划分为多个子模型M[5,R][D5=ΔS](ΔS∈Ωx),所以Sol(M[5,R][WΔIV=x])=minΔS∈ΩxSol(M[5,R][D5=ΔS]),则有
Sol(MR)=min(minΔS∈Ω1Sol(M[5,R][D5=ΔS]),minΔS∈Ω2Sol(M[5,R][D5=ΔS]),Sol(M[5,R][WΔIV≥3])) (21) 证毕
定义1 对于MORUS - 5n (n=128,256)的两个差分状态ΔS=(ΔS0,ΔS1,ΔS2,ΔS3,ΔS4), ΔS∗=(ΔS∗0,ΔS∗1,ΔS∗2,ΔS∗3,ΔS∗4),若存在b∈{0,1,⋯,n/4−1}, w∈{0,n/4,2n/4,3n/4},使得对于所有i∈{0,1,2,3,4}, ΔSi=Rot\_x\_y(ΔS∗i,b)<<<w 成立,则称这两个差分状态是关于(b,w)循环等价的,或简称循环等价。
定理2 若差分状态ΔS, ΔS∗是循环等价的,那么Sol(M[r1,r2][Dr=ΔS])=Sol(M[r1,r2][Dr=ΔS∗])。
证明 假设ΔS,ΔS∗是关于(b,w)循环等价的,对于MILP差分模型M[r1,r2][Dr=ΔS],假设Sol(M[r1,r2][Dr=ΔS])=NA,则对应一条差分链L,其第r轮输入差分是ΔS,第r1~r2轮活跃与门数量为NA,显然存在一条差分链L∗,其每一轮的差分状态与L中对应轮的差分状态均是关于(b,w)循环等价的,特别地,其第r轮输入差分是ΔS∗,L∗的第r1至r2轮活跃与门数量为NA,所以有
Sol(M[r1,r2][Dr=ΔS∗])≤NA=Sol(M[r1,r2][Dr=ΔS]) (22) 同理有
Sol(M[r1,r2][Dr=ΔS∗])≥Sol(M[r1,r2][Dr=ΔS]) (23) 所以Sol(M[r1,r2][Dr=ΔS])=Sol(M[r1,r2][Dr=ΔS∗])。
证毕
根据定义1,容易知道循环等价关系具有自反性、对称性、传递性,所以根据循环等价的定义将Ω1, Ω2中的差分状态进行分类,表8给出了MORUS-640与MORUS-1280的分类个数。
表 8 Ω1, Ω2的分类个数MORUS-640 MORUS-1280 Ω1 2 2 Ω2 257 382 在Ω1, Ω2的每一个分类中,任取一个元素作为代表元,这些代表元组成集合Ω∗1, Ω∗2,得到推论1。
推论1 对于MORUS初始化阶段的MILP差分模型MR,有
Sol(MR)=min(minΔS∈Ω∗1Sol(M[5,R][D5=ΔS]),minΔS∈Ω∗2Sol(M[5,R][D5=ΔS]),Sol(M[5,R][WΔIV≥3])) (24) 证明 结合定理1、定理2以及Ω∗1,Ω∗2的定义,推论1是显然的。
证毕 根据推论1,把求解MORUS初始化阶段R轮状态更新中最优差分链的问题转化为求解多个MILP子模型的问题,这些子模型按照ΔIV的重量分为3类:{M[5,R][D5=ΔS]|ΔS∈Ω∗1}, {M[5,R][D5=ΔS]|ΔS∈Ω∗2}, M[5,R][WΔIV≥3],分别对应了|ΔIV|=1, |ΔIV|=2, |ΔIV|≥3,根据经验,ΔIV的重量越小,越容易搜索到好的差分链,所以按如下顺序求解MILP子模型:{M[5,R][D5=ΔS]|ΔS∈Ω∗1}, {M[5,R][D5=ΔS]|ΔS∈Ω∗2}, M[5,R][WΔIV≥3],为了方便描述,本文定义了一个有序集合
Set={M[5,R][D5=ΔS]|ΔS∈Ω∗1}∪{M[5,R][D5=ΔS]|ΔS∈Ω∗2}∪{M[5,R][WΔIV≥3]} (25) 集合长度为|Set|,用M(i)表示集合Set的第i个元素(i∈{1,2,⋯,|Set|}),由表7,对于MORUS-640,|Set|=2+257+1=260,对于MORUS-1280,|Set|=2+382+1=385。
另外,为了更快计算这些MILP子模型,本文定义了两个指标:
(1)最小活跃与门数量上界。对于MORUS初始化阶段R轮状态更新,UBR表示当前最优差分链的活跃与门数量。本文利用第3节的差分推导规则得到当前最优的差分链,并以其活跃与门数量作为初始的UBR,在整个搜索过程中,如果找到了一条更好的差分链UBR将被更新。
(2)MILP差分模型M[r1,r2][Con]活跃与门数量下界。对于MILP差分模型M[r1,r2][Con], LB[r1,r2][Con]表示该模型最优解(即活跃与门数量的最小值)的下界。
定理3 对于MILP差分模型M[r1,r2][Con], maxr1≤r′<r2(LB[r1,r′][Con]+LB[r′+1,r2][Con])是该模型中活跃与门数量的下界。
证明 假设模型M[r1,r2][Con]的最优差分链为L,对于任意r′:r1≤r′<r2,差分链L可以分成两部分:一条r1~r′轮差分链L1,一条r′+1~r2轮差分链L2。NA(L), NA(L1), NA(L2)分别表示L, L1, L2的活跃与门数量,显然NA(L)=NA(L1)+NA(L2),又有NA(L1)≥LB[r1,r′][Con], NA(L2)≥LB[r′+1,r2][Con],则
Sol(M[r1,r2][Con])=NA(L)=NA(L1)+NA(L2)≥LB[r1,r′][Con]+LB[r′+1,r2][Con] (26) 所以,LB[r1,r′][Con]+LB[r′+1,r2][Con]是MILP差分模型M[r1,r2][Con]中差分链活跃与门数量的下界,maxr1≤r′<r2(LB[r1,r′][Con]+LB[r′+1,r2][Con])也是M[r1,r2][Con]中差分链活跃与门数量的下界。
证毕
定理3给出了计算M[r1,r2][Con]活跃与门数量下界的一种方法,对于轮数较少的模型,可以通过直接求解MILP模型得到其最小活跃与门数量从而获得最“紧致”的下界,也就是令LB[r1,r2][Con]=Sol(M[r1,r2][Con]);本文将利用Gurobi求解器求解所有模型,如果轮数较多可以通过将Gurobi中的参数MIPFocus设置为3,从而快速求得M[r1,r2][Con]的活跃与门数量下界。本文之所以将MORUS初始化阶段以轮为单位,就是为了充分利用定理3给出模型更加紧致的活跃与门数量下界。算法1给出了Sol(MR)完整的求解过程。
算法1 基于MILP分而治之策略搜索MORUS初始化阶段差分链 输入:R 输出:Sol(MR) 步骤1 根据第3节的差分推导规则,计算UBR的初始值,令
i=0;步骤2 令i=i+1; 步骤3 计算LB(M(i)),如果LB(M(i))≥UBR,返回步骤2,
否则,执行步骤4;步骤4 求解Sol(M(i)),如果Sol(M(i))<UBR,令
UBR=Sol(M(i));步骤5 如果i=|Set|,输出UBR,否则,返回步骤2。 利用算法1,分别令R取5,10,15,20,25,30得到了MORUS-640与MORUS-1280初始化阶段状态更新步数为1~6的最优结果,如表9所示。表9与第3节中差分推导规则得到的结果相比:对于MORUS-640,状态更新步数为5,6时,得到了更好的差分链;对于MORUS-1280,状态更新步数为6时,得到了更好的差分链。可以看出,当状态更新步数较小时,第3节中的差分推导规则可以得到最优的差分链,但当步数增加时,基于分而治之策略的MILP模型可以找到更好的差分链。
表 9 MILP模型中MORUS初始化阶段的最优差分转移概率状态更新步数 1 2 3 4 5 6 MORUS-640 2−1 2−8 2−29 2−82 2−179 2−279 MORUS-1280 2−1 2−8 2−29 2−86 2 - 201 2−379 4.3 简化版MORUS的差分-区分攻击
本节给出初始化阶段为g步的简化版MORUS的差分-区分攻击,图2给出了简化版MORUS的示意图,这里令相关数据部分为空,图2只展示了初始化阶段与第1个密钥流块的生成。简化版MORUS经过g步初始化阶段的状态更新,其输出产生了第1个密钥流块Z
Z=Sg,00⊕(Sg,01<<<w2)⊕(Sg,02&Sg,03) (27) 前面所讨论的是初始状态(S0,00,S0,01,S0,02,S0,03,S0,04)到第g步输出状态(Sg,00,Sg,01,Sg,02,Sg,03,Sg,04)的差分链,为了对密钥流块Z进行差分-区分攻击,本文需要找到一条初始状态(S0,00,S0,01,S0,02,S0,03,S0,04)到第1个密钥流块Z概率较大的差分链,区别在于:这里不需要考虑第g步第5轮的与门,而需要考虑式(25)中的与门,这是因为Sg,04不参与Z的计算。本文建立了相应的MILP模型去寻找这样的差分链,求解过程仍利用了4.2节给出的分而治之策略,表10给出了搜索结果以及与目前最好结果的对比。
文献[16]只给出了初始化阶段为3步、4步的简化版MORUS-640的差分-区分攻击,并未给出MORUS-1280的攻击结果。对于MORUS-640,其密钥流块Z的长度为128,本文给出了初始化阶段为3步、4步的简化版MORUS-640的差分-区分攻击,本文搜索到的差分链优于文献[16]的结果;对于MORUS-1280,其密钥流块Z的长度为256,本文给出了初始化阶段为4步、5步的简化版MORUS-1280的差分-区分攻击,攻击结果见表11。
表 11 简化版MORUS的差分-区分攻击算法 状态更新步数 差分转移概率 数据量 区分优势 MORUS-640 3 2−32 235 0.999665 4 2−89 292 0.999665 MORUS-1280 4 2−91 294 0.999665 5 2−207 2210 0.999665 5. 结束语
本文主要对MORUS初始化阶段的差分性质进行研究,首先给出一个改进的差分推导规则,能够快速找到一条较好的差分链。在此基础上,利用MILP自动搜索技术寻找最优差分链,为了提高MILP模型求解速度而采用了分而治之策略,得到了初始化阶段1~6步的最优差分链,最后利用得到的差分链对简化版的MORUS进行差分-区分攻击。本文的结果较之前的工作有较大提升,下一步将考虑把分而治之方法运用到MORUS的线性分析中,尝试给出MORUS更优的线性分析结果。
-
表 1 MORUS的参数设置(bit)
参数 MORUS-640-128 MORUS-1280-128 MORUS-1280-256 密钥长度 128 128 256 IV长度 128 128 128 状态大小 640 1280 1280 认证码长度 128 128 128 表 2 符号说明
符号 说明 ⊕ 逐比特异或; & 逐比特与; <<< 循环左移; 0l l bit 0; 1l l bit 1; const0 00||01||01||02||03||05||08||0d||15||22||37||59||90||e9||79||62; const1 db||3d||18||55||6d||c2||2f||f1||20||11||31||42||73||b5||28||dd; Si 第i步输入状态; Si,j 第i步第j轮输入状态; Si,jk Si,j第k个bit块,对于MORUS-640,每个状态包含5个128 bit块,对于MORUS-1280,每个状态包含5个256 bit块; Si,jk,l Si,jk的第l bit。 表 3 循环常数
MORUS-640 MORUS-1280 MORUS-640 MORUS-1280 b0 5 13 w0 32 64 b1 31 46 w1 64 128 b2 7 38 w2 96 192 b3 22 7 w3 64 128 b4 13 4 w4 32 64 表 4 MORUS初始化阶段差分转移概率
状态更新步数 1 2 3 4 5 6 7 MORUS-640 2−1 2−8 2−29 2−82 2−180 2−301 2−453 MORUS-1280 2−1 2−8 2−29 2−86 2−201 2−399 2−681 表 5 MORUS初始化阶段的初始状态差分ΔS0,0
MORUS-640 MORUS-1280 ΔS0,00 ΔIV ΔIV||0128 ΔS0,01 0128 0256 ΔS0,02 0128 0256 ΔS0,03 0128 0256 ΔS0,04 0128 0256 表 6 MORUS初始化阶段第5轮状态更新的输入差分ΔS0,4
MORUS-640 MORUS-1280 ΔS0,40 Rot\_128\_32(ΔIV,b0)<<<w2 Rot\_256\_64(ΔIV||0128,b0)<<<w2 ΔS0,41 0128 0256 ΔS0,42 Rot\_128\_32(ΔIV,b0+b2) Rot\_256\_64(ΔIV||0128,b0+b2) ΔS0,43 Rot\_128\_32(ΔS0,40&(S0,04<<<w1),b3) Rot\_256\_64(ΔS0,40&(S0,04<<<w1),b3) ΔS0,44 0128 0256 表 7 MORUS子轮函数两种刻画方式的比较
刻画方式 (2)+(3) (4) 变量个数 3Rn Rn 不等式个数 2Rn 4Rn 表 8 Ω1, Ω2的分类个数
MORUS-640 MORUS-1280 Ω1 2 2 Ω2 257 382 算法1 基于MILP分而治之策略搜索MORUS初始化阶段差分链 输入:R 输出:Sol(MR) 步骤1 根据第3节的差分推导规则,计算UBR的初始值,令
i=0;步骤2 令i=i+1; 步骤3 计算LB(M(i)),如果LB(M(i))≥UBR,返回步骤2,
否则,执行步骤4;步骤4 求解Sol(M(i)),如果Sol(M(i))<UBR,令
UBR=Sol(M(i));步骤5 如果i=|Set|,输出UBR,否则,返回步骤2。 表 9 MILP模型中MORUS初始化阶段的最优差分转移概率
状态更新步数 1 2 3 4 5 6 MORUS-640 2−1 2−8 2−29 2−82 2−179 2−279 MORUS-1280 2−1 2−8 2−29 2−86 2 - 201 2−379 表 10 简化版MORUS差分-区分攻击的差分转移概率
表 11 简化版MORUS的差分-区分攻击
算法 状态更新步数 差分转移概率 数据量 区分优势 MORUS-640 3 2−32 235 0.999665 4 2−89 292 0.999665 MORUS-1280 4 2−91 294 0.999665 5 2−207 2210 0.999665 -
[1] BELLARE M and NAMPREMPRE C. Authenticated encryption: Relations among notions and analysis of the generic composition paradigm[J]. Journal of Cryptology, 2008, 21(4): 469–491. doi: 10.1007/s00145-008-9026-x [2] BERNSTEIN DJ. CAESAR call for submissions[EB/OL]. http://competitions:cr:yp:to/caesar-call.html, 2014. [3] LAWRENCE B. Submission requirements and evaluation criteria for the lightweight cryptography standardization process[EB/OL].https://csrc.nist.gov/projects/lightweight-cryptography, 2018. [4] SAHA D, SADAKI Y, SHI Danping, et al. On the security margin of TinyJAMBU with refined differential and linear cryptanalysis[J]. IACR Transactions on Symmetric Cryptology, 2020, 2020(3): 152–174. doi: 10.13154/tosc.v2020.i3.152-174 [5] SONG Ling, TU Yi, SHI Danping, et al. Security analysis of Subterranean 2.0[J]. Designs, Codes and Cryptography, 2021, 89(8): 1875–1905. doi: 10.1007/s10623-021-00892-6 [6] ZHOU Haibo, LI Zheng, DONG Xiaoyang, et al. Practical key-recovery attacks on round-reduced Ketje Jr, Xoodoo-AE and Xoodyak[J]. The Computer Journal, 2020, 63(8): 1231–1246. doi: 10.1093/comjnl/bxz152 [7] LIU Shuai, GUAN Jie, and HU Bin. Fault attacks on authenticated encryption modes for GIFT[J]. IET Information Security, 2022, 16(1): 51–63. doi: 10.1049/ise2.12041 [8] MATSUI M. On correlation between the order of S-boxes and the strength of DES[C]. The Workshop on the Theory and Application of of Cryptographic Techniques, Perugia, Italy, 1995: 366–375. [9] 叶涛, 韦永壮, 李灵琛. ACE密码算法的积分分析[J]. 电子与信息学报, 2021, 43(4): 908–914. doi: 10.11999/JEIT200234YE Tao, WEI Yongzhuang, and LI Lingchen. Integral cryptanalysis of ACE encryption algorithm[J]. Journal of Electronics &Information Technology, 2021, 43(4): 908–914. doi: 10.11999/JEIT200234 [10] SHI Danping, SUN Siwen, DERBEZ P, et al. Programming the Demirci-Selcuk meet-in-the-middle attack with constraints[C]. The 24th International Conference on the Theory and Application of Cryptology and Information Security, Brisbane, Australia, 2018: 3–34. [11] HU Kai, SUN Siwei, TODO Y, et al. Massive superpoly recovery with nested monomial predictions[C]. The 27th International Conference on the Theory and Application of Cryptology and Information Security, Singapore, 2021: 392–421. [12] SASAKI Y and TODO Y. New algorithm for modeling S-box in MILP based differential and division trail search[C]. The 10th International Conference for Information Technology and Communications, Bucharest, Romania, 2017: 150–165. [13] SUN Siwei, HU Lei, WANG Peng, et al. Automatic security evaluation and (related-key) differential characteristic search: Application to SIMON, PRESENT, LBlock, DES(L) and other bit-oriented block ciphers[C]. The 20th International Conference on the Theory and Application of Cryptology and Information Security, Kaoshiung, China, 2014: 158–178. [14] ZHOU Chunning, ZHANG Wentao, DING Tianyou, et al. Improving the MILP-based security evaluation algorithm against differential/linear cryptanalysis using a divide-and-conquer approach[J]. IACR Transactions on Symmetric Cryptology, 2019, 2019(4): 438–469. doi: 10.13154/tosc.v2019.i4.438-469 [15] WU Hongjun and HUANG Tao. The authenticated cipher MORUS (v2)[EB/OL]. http://competitions.cr.yp.to/caesar-submissions.html, 2014. [16] 张沛, 关杰, 李俊志, 等. MORUS算法初始化过程的混乱与扩散性质研究[J]. 密码学报, 2015, 2(6): 536–548. doi: 10.13868/j.cnki.jcr.000100ZHANG Pei, GUAN Jie, LI Junzhi, et al. Research on the confusion and diffusion properties of the initialization of MORUS[J]. Journal of Cryptologic Research, 2015, 2(6): 536–548. doi: 10.13868/j.cnki.jcr.000100 [17] 施泰荣, 关杰, 李俊志, 等. 故障模型下MORUS算法的差分扩散性质研究[J]. 软件学报, 2018, 29(9): 2861–2873. doi: 10.13328/j.cnki.jos.005282SHI Tairong, GUAN Jie, LI Junzhi, et al. Research on differential diffusion property of MORUS in fault model[J]. Journal of Software, 2018, 29(9): 2861–2873. doi: 10.13328/j.cnki.jos.005282 期刊类型引用(1)
1. 刘帅,任小广,王世雄,关杰,张啸川,谭捷,王军. 基于MILP的轻量级密码算法ACE与SPIX的线性分析. 电子学报. 2024(09): 3065-3074 . 百度学术
其他类型引用(1)
-