基于图论的分组密码实际密钥信息的自动化搜索系统

文档序号:26006066发布日期:2021-07-23 21:24阅读:267来源:国知局
基于图论的分组密码实际密钥信息的自动化搜索系统

本发明涉及的是一种信息安全领域的技术,具体是一种基于图论的分组密码实际密钥信息的自动化搜索系统。



背景技术:

密钥编排方案是在加解密中都会用到的一种将较短的主密钥扩展成很长的扩展密钥,并用来做轮密钥的算法。在分组密码中,考虑到算法的设计与实现,其密钥编排方案往往会比较简单,而过于简单的编排方案往往会导致一些攻击。

现有的实际密钥信息(actualkeyinformation,aki)这一概念来评估扩散密钥比特的有效速度以防御攻击,但现有的aki算法只能给出aki的上界,仅可用于攻击分析,无法用来分析密钥编排方案的强弱好坏,也不能用来改进密钥编排方案的设计;另外,由于没有考虑自动化搜索或存在不可计算的情况而实用性不足。为了分析和确定密钥编排方案的扩散程度,用时也为了通过减少密钥猜测集合的大小来优化一些密码攻击,需要计算出aki的真实值,并在一定程度上实现自动化搜索的过程。



技术实现要素:

本发明针对现有技术存在的上述不足,提出一种基于图论的分组密码实际密钥信息的自动化搜索系统,通过构建密钥编排方案与流量网络之间的桥梁,实现所有计算路径和密钥依赖路径的自动搜索并获得每条路径的真实aki值。

本发明是通过以下技术方案实现的:

本发明涉及一种基于图论的分组密码实际密钥信息的自动化搜索系统,包括:计算密钥依赖路径单元、构建流量网络单元和计算aki单元,其中:计算密钥依赖路径单元与构建流量网络单元相连,根据由密钥依赖矩阵m表示的密钥编排方案和密钥猜测集合k将流量网络中的顶点v、弧e和弧上容量信息c输出至构建流量网络单元;构建流量网络单元计算aki所需的流量网络gf(v,e,c)并输出至计算aki单元;计算aki单元通过对流量网络gf(v,e,c)应用最大流-最小割算法得到最大流k0,即密钥猜测集合k的aki值。

所述的流量网络gf(v,e,c)中的v为顶点集合,e为弧集合,c为弧上容量,并满足:

1)c(u,v)代表弧e=(u,v)上的容量,当则c(u,v)=0;

2)顶点集合v中的顶点s和t分别代表源点与汇点,并满足u≠t,v≠s,即不存在以t为起始或以s为终点的弧。

所述的最大流,通过遍历中间加密状态所有轮数的所有比特位置得到对应的密钥猜测集合,为之构建新的流量网络,并计算对应的真实aki值,故可一次性得到前r轮所有比特位置的aki值,而无需人为一遍遍地输入每一比特位置的密钥猜测集合。

技术效果

本发明整体解决了现有技术无法计算真实aki值和无法自动化搜索密钥编排方案在所有轮次和所有位置的扩散程度的不足;与现有技术相比,本发明适用于分组密码中所有情况的密钥编排方案,自动化地搜索密钥编排方案所有计算路径和密钥依赖路径上的真实的aki值,确立了利用aki不足减少密钥猜测集合的大小来优化密码攻击的实用性;本发明时间复杂度更低。对于一个主密钥长度为n比特的加密方案来说,计算第r轮的单轮实际密钥信息时,计算密钥依赖路径的时间复杂度约为o(nr),因此计算出该轮所有密钥依赖路径的复杂度为o(n2r)。对于这n条密钥依赖路径,均使用本方法计算其aki,n次调用的时间复杂度为o(n4r2.5)。对于大多数密码算法来说,本发明能在数十秒内给出分析结果。

附图说明

图1为本发明流程图;

图2为实施例示意图;

图中:(a)为由玩具密码的密钥编排方案,(b)为相应流量网络图;

图3为自动化搜索模块示意图。

具体实施方式

如图1所示,为本实施例涉及一种基于图论的分组密码实际密钥信息的自动化搜索实现方法,基于密钥依赖矩阵m和密钥猜测集合k构造流量网络gf(v,e,c),然后对该流量网络gf(v,e,c)应用最大流-最小割算法得到最大流k0,即k的实际密钥信息,具体包括:

步骤1)建立两个特殊顶点:源点s和汇点t。

步骤2)为每一个猜测比特建立两个顶点:入点uin和出点uout,并从入点uin引一条容量为1的弧至uout。

所述的猜测比特,包括集合k中的密钥比特和k所依赖的密钥比特u。

步骤3)采用以下任一方式建立容量为无穷大的弧,具体包括:

a)从源点s到每个处在主密钥上的比特u的入点uin的弧;

b)从每个在k中的比特u的出点uout到汇点t的弧;

c)分布在连续两轮上的存在依赖关系的两个比特u和v,后轮的v依赖前轮的u时,从u的出点uout到v的入点vin的弧。

通过步骤1)~3)建立密钥猜测集合k所对应的流量网络gf(v,e,c),同一轮比特之间不可能存在弧,只有相邻两轮的比特之间或与源点汇点之间才会存在无穷大容量的弧。因此,可以将流量网络gf(v,e,c)分成r个分组,其中r是k中比特所在的最大轮数,每个分组包含k中的密钥比特和k所依赖的密钥比特在这一轮对应的入点与出点。

如图2所示,为一个由玩具密码的密钥编排方案通过以上方法得出的流量网络图。图2(a)中玩具密码左侧是迭代的轮函数,右侧是密钥编排,其分组大小和主密钥长度均为6比特,每一轮中间加密状态都直接与对应轮密钥进行异或操作。左侧灰色比特为计算第4轮o0这一比特所需要依赖的计算路径上的比特,右侧灰色比特为左侧计算路径所对应的密钥依赖路径上的比特。密钥依赖路径上的比特就是为了计算o0这一比特而需要知道的密钥信息,它们组成密钥猜测集合k,由图2(b)流量网络图中黑色的点表示。当密钥编排方案的依赖矩阵为m=((100000),(010100),(000010),(100001),(001000),(000101))时,得到k所依赖的密钥比特除自身中的比特外还包括轮密钥中第3轮第3比特,第2轮第1、2、4比特和第1轮第3、4、6比特,这些依赖比特由(b)流量网络图中每一轮的白色点表示。为每个k中的密钥比特和k所依赖的密钥比特,即所有黑点和白点构建入点和出点以及入点到出点的容量为1的弧。之后建立特殊点源点s和汇点t,并且引源点s到主密钥上比特,即第1轮黑点和白点的入点的容量为无穷大的弧;从每个在k中的比特,即所有黑点的出点到汇点t的容量为无穷大的弧。最后,对于分布在连续两轮上的存在依赖关系的两个比特,引从前轮比特的出点到后轮比特的入点的容量为无穷大的弧。

以上所述所有的弧都由(b)流量网络图中的箭头表示,箭头上的1表示容量为1,箭头上无数字表示容量为无穷大。

步骤4)对流量网络gf(v,e,c)应用最大流-最小割算法得出的最大流,即密钥猜测集合k的真实aki值,对应的最小割中入点与出点被割在两个不同集合中比特构成的集合即为一个实际密钥信息集合。

如图2所示的由玩具密码所构建出的流量网络图中的虚线就是利用最大流-最小割算法得到的该流量网络的一个最小割。最小割中涉及的5个比特即为实际密钥信息集合,即流量网络gf(v,e,c)对应的真实aki值为5。

所述的最大流-最小割算法采用ford-fulkerson算法,具体步骤为:

1)初始化网络流量f=0,残留网络gr=gf(v,e,c)。对于gr的每条弧(u,v),初始化流量f(u,v)=0;

2)当gr中存在一条从源点s到汇点t的路径p,使得路径上每条弧(u,v)∈p,都有剩余容量cr(u,v)>0,那么先设置路径p本次应发送的流量为路径最小剩余容量:cr(p)=min{cr(u,v)|(u,v)∈p};然后更新网络流量f=f+cr(p);

3)对于每一条弧(u,v)∈p,更新gr的剩余流量:包括f(u,v)=f(u,v)+cr(p)和f(v,u)=f(v,u)-cr(p)。当在残留网络gr中不再存在从源点s到汇点t的路径,此算法终止,此时网络流量f即为初始流量网络gf(v,e,c)的最大流。

优选地,在生成流量网络gf时可以任意指定密钥猜测集合;如图3所示,通过遍历中间加密状态所有轮数的所有比特位置得到对应的密钥猜测集合,即构建流量网络,并计算对应的真实aki值,故只需输入表示轮数的参数r,便可一次性得到前r轮所有比特位置的aki值,而无需像现有技术一样人为一遍遍地输入密钥猜测集合,一次只能得到某一轮某一个位置的aki值,即可实现自动化地搜索。

经过具体实际实验,在inteli7-9750hcpu,16gbram的环境设置下,以rectangle-128加密算法作为实验对象,以7轮为实验参数,运行上述方法,对每一轮中间加密状态的比特对应的密钥依赖路径进行自动化搜索,得出rectangle-128在前6轮均出现aki不足,即存在密钥信息泄露;在第7轮的所有中间加密状态的比特对应的密钥依赖路径的aki都达到了主密钥长度,即不存在密钥信息泄露。期间自动进行了128*7=896次搜索路径并构造流量网络计算,耗时为45s,得到每条路径的aki值的平均时间约为50ms。

综上,与现有技术中贪心思想的出发点完全不同,本发明改进了现有技术手段无法计算真实aki值,可以自动化地检测密码算法是否存在密钥信息泄露,计算扩散路径上的实际密钥信息,不仅可以通过减少密钥猜测集合的大小来优化一些密码攻击,而且可以用来分析密钥编排方案的强弱好坏,并以此为依据改进密钥编排方案的设计。

上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1