法律状态公告日
法律状态信息
法律状态
2019-03-15
授权
授权
2016-11-09
实质审查的生效 IPC(主分类):H04L9/06 申请日:20160513
实质审查的生效
2016-10-12
公开
公开
技术领域
本发明属于信息安全技术领域,尤其涉及一种分组密码相关密钥不可能差分路径的搜索方法。
背景技术
随着技术的不断发展,信息安全的作用日益突出,人们的生活与信息密不可分,密码学作为信息安全的基础快速发展起来。密码编码学与密码分析是共同演化的,所以在密码编码学发展之时,密码分析也随之备受关注。但是一直以来密码分析主要都是以手动分析为主,虽然期间也有人提出过不可能差分搜索方法,借助计算机辅助密码分析。不管是手动分析方法还是已提出的不可能差分搜索方法,均存在不足:
1.手动分析方法完全是依靠人工对密码算法结构的了解来进行理论分析,如果对所有可能的情形进行遍历,耗费的时间过长,而且计算过程中容易出错,效率太低;
2.对于已经提出的不可能差分路径搜索方法,虽然能够借助计算机自动搜索到最长的不可能差分路径,但并没有结合相关密钥的攻击方法,所以对密码算法的分析不如本方法深入、透彻。
3.已存在的不可能差分路径的搜索方法只是对于广义Feistel结构的密码算法而言,并没有涉及到任何非广义Feistel结构的密码算法。
发明内容
本发明的目的在于提供一种分组密码相关密钥不可能差分路径的搜索方法,旨在将相关密钥差分搜索方法和不可能差分搜索方法相结合用以解决现有具有广义Feistel结构或能转化成广义Feistel结构、加解密矩阵满足1-特性以及轮函数满足双射的分组密码算法的最大相关密钥不可能差分路径计算机自动搜索的问题。
本发明是这样实现的,所述分组密码相关密钥不可能差分路径的搜索方法将不可能差分攻击方法和相关密钥攻击方法相结合,并将相关密钥搜索方法和不可能差分搜索方法结合在一起设计并实现了分组密码算法的相关密钥不可能差分路径的自动搜索。将该方法应用于任何一种具有广义Feistel结构或能转化成广义Feistel结构、加解密矩阵满足1-特性以及轮函数满足双射的分组密码算法时,改变相应的加解密矩阵,根据密钥扩展方法对密钥差分搜索方法进行修改即可自动搜索最大的相关密钥不可能差分路径。本发明使寻找相关密钥不可能差分路径的方法实现了计算机的自动搜索,不需要再手动的计算寻找相关密钥不可能差分路径,能够遍历所有路径,克服了手动分析不全面、容易出错、效率低的缺点,并且能够计算出分组密码算法的相关密钥不可能差分路径的最大长度。
进一步,所述分组密码相关密钥不可能差分路径的搜索方法包括:
步骤一,若分组密码算法为非广义Feistel结构但是能转化成广义Feistel结构,则将其转化成广义Feistel结构,求出其加密矩阵ε和解密矩阵D;若分组密码算法为广义Feistel结构,则直接计算其加解密矩阵。
步骤二,搜索相关密钥差分路径。
步骤三,将密钥差分搜索方法与不可能差分搜索方法相结合。
步骤四,计算加密方向最大轮数Μεi(a,m)和解密方向最大轮数,将加密方向的最大轮数和解密方向的最大轮数相加,若轮数之和与相关密钥差分路径轮数相等,则说明存在该轮数的相关密钥不可能差分路径,否则不存在该轮数的相关密钥不可能差分路径。
进一步,所述步骤二具体包括:
第一步,根据密钥扩展算法设定密钥差分搜索过程中的最佳概率Bn和轮数n。
第二步,对所有满足条件的密钥输入差分做以下迭代搜索:计算i轮差分特征概率p0p1…pi,若p0p1…pi≥Bn且i<n则进入i+1轮的搜索;若p0p1…pi≥Bn且i=n则搜索到的密钥差分符合要求,输出该密钥差分。
进一步,第二步中所有满足条件的密钥输入差分是根据密码算法中密钥扩展算法的弱点来选择的汉明重量较小的密钥差分。一般选取汉明重量为1的密钥差分,此时所有满足条件的密钥输入差分的数量为初始密钥的长度。
进一步,所述步骤三具体包括:
对步骤二输出的每一密钥差分做下述操作:
第一步,根据找到的重量小、扩散慢的非零密钥差分路径确定不可能差分路径的输入差分向量和输出差分向量
第二步,根据求得的密码算法的加解密矩阵的规模将密钥差分进行转化,使其适合矩阵运算。
进一步,所述第二步中的转化与密码算法结构相关,具体如下:将所求的相关密钥差分根据加解密矩阵进行转化使其适合矩阵运算,一般将加密方向中每轮密钥差分之前添加一半规模的0,解密方向中每轮密钥差分之后添加一半规模的0;或者将加密方向中每轮密钥差分之后添加一半规模的0,解密方向中每轮密钥差分之前添加一半规模的0。
进一步,所述步骤四具体包括:
对步骤三中确定的每对相关密钥不可能差分路径的输入差分向量和输出差分向量做下述操作:
第一步,根据输入差分向量进行加密方向密钥差分和加密矩阵ε的矩阵运算,直到经过r轮后ar的所有分量都为不确定为止,记
第二步,根据输出差分向量进行解密方向密钥差分和解密矩阵D的矩阵运算,直到经过r'轮后br'的所有分量都为不确定为止,记其中是m的补集。
第三步,计算若存在M=n,则存在该轮数的相关密钥不可能差分路径,否则不存在。
进一步,所述第一步中的运算如下:每轮的输入差分先和密钥差分相加之后再和加密矩阵进行矩阵运算。由于Feistel结构的特殊性,每一轮的输出中有一部分为该轮未经过任何变化的输入部分,因此上述计算的轮输出结果要人为保持这种不变性。每轮重复相同的操作,直到经过r轮后ar所有分量均为不确定为止。所述第二步中的运算类似。
本发明提供的分组密码相关密钥不可能差分路径的搜索方法,将不可能差分攻击方法和相关密钥攻击方法相结合,以解决密码分析中相关密钥不可能差分路径的自动搜索和最长分析路径的寻找问题,对密码算法能够做更深入、更透彻的分析。本发明使寻找相关密钥不可能差分路径的方法从传统的手动分析升级到使用计算机自动搜索,大大加快了寻找相关密钥不可能差分路径的速度,也就加快了密码算法的分析速度,推动了密码算法分析的进展。并且实现相关密钥不可能差分路径的计算机自动搜索后,在搜索具体的密码算法的相关密钥不可能差分路径时能够遍历所有可能的路径,解决了手动分析不全面以及容易出错的问题。本发明可以计算出分组密码算法的相关密钥不可能差分路径的最大长度,为进一步分析分组密码算法提供了更好、更强的保障。本发明与现有技术相比具有如下优点:
(1)由于本发明使用相关密钥攻击与不可能差分攻击相结合,充分利用了密钥差分对不可能差分路径的影响,因此在对密码算法进行攻击时,比现有的不可能差分分析方法有了更高轮数的分析,而且使用该方法有望实现密码算法的攻破。在使用该方法自动搜索LBlock密码算法的相关密钥不可能差分路径时,首次给出了18轮相关密钥不可能差分路径,这是目前的最好结果。
(2)由于本发明使相关密钥不可能差分路径的搜索得以计算机实现,因此避免了现有手动分析方法在对密码算法进行分析时繁琐、易出错的弊端,更重要的是借助计算机实现自动搜索能够遍历所有可能的路径,使路径的查找更全面,大大提高密码分析效率的同时也提高了密码分析的深度。
(3)由于本发明实现了将非广义Feistel密码结构转化成广义Feistel结构,因此可以广泛的应用于多种密码结构的密码算法的相关密钥不可能差分路径搜索,更好地实现对密码算法的分析。
附图说明
图1是本发明实施例提供的分组密码相关密钥不可能差分路径的搜索方法流程图。
图2是本发明实施例提供的加密结构示意图。
图3是本发明实施例提供的密钥差分路径搜索的子流程图。
图4是本发明实施例提供的非广义Feistel结构转化成广义Feistel结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面结合附图对本发明的应用原理作详细的描述。
参照图1,本发明的实施步骤如下:
步骤1,计算非广义Feistel结构密码算法的加解密矩阵
本实施例选取非广义Feistel结构的分组密码LBlock为例进行说明。LBlock的分组规模为64bit,每4bit为一块,主密钥为80bit,其加密结构参照图2。
参照图4,将本实施例中非广义Feistel结构转化成广义Feistel结构,进而求得加密特征矩阵ε(N×N)和解密特征矩阵D(N×N),其中N为分组密码子块的规模,本实施例中取N=16。
步骤2,搜索相关密钥差分路径
参照图3,本步骤的实现如下:
2a)根据密钥扩展算法设定密钥差分搜索过程中的最佳概率Bn和轮数n,本实施例中选择Bn=0.25,n=18进行相关密钥差分路径的搜索。
2b)对所有满足条件的密钥输入差分做以下迭代搜索:计算i轮差分特征概率p0p1…pi,若p0p1…pi≥Bn且i<n则进入i+1轮的搜索;若p0p1…pi≥Bn且i=n则搜索到的密钥差分符合要求,输出该密钥差分。
2c)步骤2b)中所有满足条件的密钥输入差分是根据密码算法中密钥扩展算法的弱点来选择的汉明重量较小的密钥差分。本实施例中选取汉明重量为1的密钥差分,此时本实施例中所有满足条件的密钥输入差分的数量为80。
步骤3,将密钥差分搜索方法与不可能差分搜索方法相结合
对步骤2中输出的每一密钥差分做下述操作:
3a)根据找到的重量小、扩散慢的非零密钥差分路径确定相关密钥不可能差分路径的输入差分向量和输出差分向量
本实施例中经过密钥差分搜索的结果,发现每三轮会出现一轮的非零密钥,所以搜到的密钥差分在加密方向和解密方向分别会出现三种情况,分别用flag和flag1表示。变量flag的取值为1、2、3,分别表示加密密钥可能出现的三种输入情况,即第一轮的密钥为非零;第一轮的密钥为全零,而第二轮的密钥为非零;第一轮和第二轮的密钥均为全零,第三轮的密钥为非零(注此处还需设置变量记录密钥差分非零子块的位置)。变量flag1的取值为1、2、3,分别表示解密密钥可能出现的三种输入情况,即倒数第一轮的密钥为非零;倒数第一轮的密钥为全零,而倒数第二轮的密钥为非零;倒数第一轮和倒数第二轮的密钥均为全零,倒数第三轮的密钥为非零。
本步骤的具体实现步骤如下:
3a1)根据flag的值确定不可能差分路径的输入差分,比如flag=1时,要想使相关密钥不可能差分路径加密方向达到最长,选择分组密码结构的输入差分也应该为全0。根据使相关密钥不可能差分路径达到最长的原则得到输入差分
3a2)根据flag2的值确定不可能差分路径的输出差分选取原则和步骤3a1)的相同。
3b)根据步骤2中所求得的密码算法的加解密矩阵的规模将密钥差分进行转化使其适合矩阵运算,一般将加密方向中每轮密钥差分之前添加一半规模的0,解密方向中每轮密钥差分之后添加一半规模的0;或者将加密方向中每轮密钥差分之后添加一半规模的0,解密方向中每轮密钥差分之前添加一半规模的0。本实施例中每轮加密密钥后32位补零,每轮解密密钥前32位补零。
步骤4,计算加密方向最大轮数Μεi(a,m)和解密方向最大轮数i表示分组密码的第i个子块,本实施例中i取0~15,是m的补集,m表示每一轮中每个子块的状态。
m有四种状态,分别为全零用0表示,非零固定差分用1表示,非零非固定差分用2表示,非零非固定差分异或非零固定差分记为3。
对步骤3中确定的每对相关密钥不可能差分路径的输入差分向量和输出差分向量做下述操作:
4a)根据输入差分向量进行加密方向密钥差分和加密矩阵ε的矩阵运算,直到经过r轮后ar的所有分量都为不确定为止,记
4a1)令r=0,由于flag值的不同因而一开始的运算也不同,如当flag=2时,r=r+1,对于第i=0~7个半字节,对于第i=8~15个半字节
4a2)之后的操作为每轮的输入差分先和密钥差分相加之后再和加密矩阵进行矩阵运算。由于Feistel结构的特殊性,每一轮的输出中有一部分为该轮未经过任何变化的输入部分,因此上述计算的轮输出结果要人为保持这种不变性。每轮重复相同的操作,直到经过r轮后ar所有分量均为不确定为止。
4b)根据输出差分向量进行解密方向密钥差分和解密矩阵D的矩阵运算,直到经过r'轮后br'的所有分量都为不确定为止,记
该步的实现和4a)中相似,只是进行的是解密方向的操作,求得后确定
4c)计算其中m=0,1,2,3,i=0~15,若存在Μ=n,则存在该轮数的相关密钥不可能差分路径,否则不存在。
名词解释:
Bn:设定的相关密钥差分路径搜索过程中的最佳概率。
pi:搜索相关密钥差分时每一轮的概率。
ε:N×N阶加密特征矩阵,N的取值由分组密码的规模决定。
D:N×N阶解密特征矩阵,N的取值由分组密码的规模决定。
相关密钥不可能差分路径的输入差分向量。
相关密钥不可能差分路径的输出差分向量。
经过r轮加密运算后输出差分的第i个半字节。
经过r'轮解密运算后输出差分的第i个半字节。
第r轮子密钥的第i个半字节。
以上描述仅是本发明的一个具体实施例,且用该方法首次搜索到了LBlock算法的最大相关密钥不可能差分路径的轮数为18轮,是目前最好的结果。显然对于本领域的专业人员来说,在了解本发明内容和原理后,都可以在不背离本发明原理、结构的情况下,对其他具有广义或非广义Feistel结构的分组密码进行细节上的修改后实施相关密钥不可能差分路径最大长度的搜索,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
机译: 从子密钥序列生成用于加密操作的主密钥的方法,从用于加密操作的相关子密钥的正向和反向序列生成主密钥的方法,用于解密使用分组密码加密的消息的方法,处理块的方法具有密钥编程的密码消息,用于从子密钥序列生成用于加密操作的主密钥的设备,用于利用具有密钥编程的块密码处理消息的设备,计算机程序产品以及一个或多个计算机可读介质
机译: 从子密钥序列生成用于加密操作的主密钥的方法,从用于加密操作的相关子密钥的正向和反向序列生成主密钥的方法,用于解密使用分组密码加密的消息的方法,处理块的方法具有密钥编程的密码消息,用于从子密钥序列生成用于加密操作的主密钥的设备,用于利用具有密钥编程的块密码处理消息的设备,计算机程序产品以及一个或多个计算机可读介质
机译: 包括旋转密钥调度的分组密码装置和分组密码方法