本发明属于分组密码分析方法技术领域,具体涉及一种基于sat的不可能差分及零相关路径自动搜索方法。
背景技术:
对于分组密码,不可能差分和零相关分析都是很重要的分析手段,且已被广泛应用到多种结构的密码分析中。不可能差分分析最早由biham和knudsen提出,用来分析deal与skipjack算法,是一种有效的分组密码分析方法。与差分分析寻找一条概率最大的差分路径不同,不可能差分分析目的在于寻找一条概率为零的差分路径,来排除错误的候选密钥。目前,不可能差分攻击被广泛地应用到了各种结构的分组密码攻击中,在aes、misty1等密码上有非常好的攻击效果。通常来讲,实现不可能差分攻击主要包含两步,分别是构造不可能差分区分器和恢复密钥。零相关线性分析方法由bogdanov和rijmem于2012年提出,与线性分析所利用的高偏差的线性关系相反,零相关线性分析主要利用偏差为零的线性逼近关系来区分密码算法和随机函数,进而获得部分或者全部密钥信息。零相关线性分析的第一步是构造关于密码算法的零相关线性逼近关系。第二步是利用已经得到的区分器进行密钥恢复。
近年来出现了不少针对于分组密码的不可能差分及零相关路径的自动化搜索算法,如μ-method、uid-method等。其中的μ方法提供了一种通用的方案搜索算法中的不可能密码差分路径,与算法的s盒无关,只有算法的扩散层有关。但这些算法也存在一些缺点和不足,由于没充分考虑非线性组件(如s盒)的性质,往往不能准确描述密码算法的差分传播性质。
技术实现要素:
本发明针对现有不可能差分及零相关路径自动搜索方法的不足,通过研究非线性组件模加的性质,进而得到用于刻画arx型密码轮函数差分及线性传播特性的约束式,再基于布尔可满足约束问题,提出一种基于sat的不可能差分及零相关路径自动搜索方法。
本发明的技术方案是:一种基于sat的不可能差分及零相关路径自动搜索方法,包括以下步骤:
利用arx型密码转化约束式;
利用布尔可满足约束问题,对约束式进行可满足验证;
利用sat验证对约束式进行验证。
所述的基于sat的不可能差分及零相关路径自动搜索方法,所述利用arx型密码转化约束式主要包括:利用arx型密码中的线性、非线性组件性质,构造出差分经过轮函数的布尔约束式,进而构造出整个n轮密码的差分传播约束式,n为自然数。
所述的基于sat的不可能差分及零相关路径自动搜索方法,所述轮函数分为轮函数中无密钥模加和轮函数中有密钥模加。
所述的基于sat的不可能差分及零相关路径自动搜索方法,所述利用布尔可满足约束问题,对约束式进行可满足验证包括:给定差分的输入、输出集合,将集合下每一对可能的输入输出差分,带入约束式,利用布尔可满足约束问题,对约束式进行可满足验证。
所述的基于sat的不可能差分及零相关路径自动搜索方法,所述利用sat验证对约束式进行验证为:将约束式分别用sat进行验证,输出所有不满足的差分对(掩码对),每一个差分对(掩码对)即为一条不可能差分零相关路径。
本发明的有益效果是:一种基于sat的不可能差分及零相关路径自动搜索方法,与传统的不可能差分(零相关)路径自动搜索算法,不能充分考虑非线性组件的性质,因而不能得出完整、精确的结果相比,本发明基于sat的不可能差分及零相关路径自动搜索方法具有求路径效率很高,在采用并行的条件下,通常在很快时间得出结果。由于算法高效,使寻找更长轮数的不可能差分及零相关路径成为可能,加速了不可能差分及零相关分析的进展。该算法除用于自动搜索外,还可判断特定的差分对(掩码对)是否构成一条不可能差分(零相关)路径,方便了arx型密码的设计和分析。
附图说明
图1为本发明的自动搜索流程示意图。
具体实施方式
实施例1,结合图1,一种基于sat的不可能差分及零相关路径自动搜索方法,其特征在于,包括以下步骤:
利用arx型密码转化约束式,主要包括:利用arx型密码中的线性、非线性组件性质,构造出差分经过轮函数的布尔约束式,进而构造出整个n轮密码的差分传播约束式,n为自然数。轮函数分为轮函数中无密钥模加和轮函数中有密钥模加。
利用布尔可满足约束问题,对约束式进行可满足验证,包括:给定差分的输入、输出集合,将集合下每一对可能的输入输出差分,带入约束式,利用布尔可满足约束问题,对约束式进行可满足验证。
利用sat验证对约束式进行验证,包括:将约束式分别用sat进行验证,输出所有不满足的差分对,每一个差分对即为一条不可能差分零相关路径。
实施例2,结合图1,基于sat的不可能差分及零相关路径自动搜索方法,
步骤一,转换约束式,在转化约束式步骤我们所用的原理如下:首先给出差分(掩码)经过非线性组件模加的传播约束式,再与经过线性组件的约束式整合在一起,给出整个轮函数的差分(掩码)传播约束式。
针对步骤一中,我们按如下定理构建约束式。
关于轮函数中无密钥模加的情况:
定理1.我们用xdp+(α,β→γ)代表通过模加2n的差分传播概率,其中α,β为输入差分,γ为输出差分,(α,β→γ)为一条有效传递路径,当且仅当:
其中
定理2.(v,w→u)为经过模加2n的掩码传递,其中u为输出掩码,v,w为输入掩码。z是一个满足下式的n维向量,
则,
从上式知,我们可以获得一条有效掩码传播路径,当且仅当满足,
zn-1=0
其中0≤i≤n-1,0≤j≤n-3。
关于轮函数中有密钥模加的情况:
定理3.(α,β→γ)为一条经过模加2n的有效差分传递路径,当且仅当α,β,γ的最低有效位非零比特位置相同。
定理4.(v,w→u)为一条经过模加2n的有效掩码传递路径,当且仅当v,w,u的最高有效位非零bit位置相同。
利用上面四个定理,利用arx型密码中的线性、非线性组件性质,构造出差分(掩码)经过轮函数的布尔约束式,进而构造出整个n轮密码的差分(掩码)传播约束式。线性组件主要包括异或及循环移位,差分路径(α,β→γ),其输入差分α,β,输出差分γ经过异或后,遵循的关系为:
步骤二:带入输入输出差分步骤,利用布尔可满足约束问题,对约束式进行可满足验证。我们在输入输出差分(掩码)集中选取任意对输入输出差分(掩码),并将约束式中的输入输出掩码值用选取的该对输入输出差分(掩码)代替。
本方法可判定任一对输入输出差分(掩码),能否构成一条有效差分(零相关)路径。但考虑到arx型密码的分组长度,例如speck32,其分组长度为32bit,所有输入输出差分对(掩码对)的情况共有264种,以当前的计算能力,很不现实。所以我们只考虑特定的输入输出差分对情形,一般情况下我们默认输入输出差分(掩码)的重量均为1。我们再将每个输入输出差分对(掩码对),带入上一步中的约束式。
步骤三:sat验证,我们将上述约束式,分别用sat进行验证,判断结果是否为false。我们将结果为false的差分(掩码)对保存。这样的差分(掩码)对即为一条不可能差分(零相关)路径。