一种CLOC认证加密算法抵御差分故障攻击的检测方法与流程

文档序号:14776303发布日期:2018-06-23 03:26阅读:247来源:国知局
一种CLOC认证加密算法抵御差分故障攻击的检测方法与流程
本发明涉及信息安全
技术领域
,特别是涉及一种CLOC认证加密算法抵御差分故障攻击的检测方法。
背景技术
:随着现代计算机技术的飞速发展,信息安全问题逐渐凸显出来,网络攻击、非法侵入等行为每年都在呈上升趋势,给人们在互联网的使用过程中带来了巨大的安全隐患。在2014年,CLOC密码作为一种新型认证加密算法被提出,它适用于嵌入式处理器,并能有效地处理短输入数据。差分故障攻击针对对称密码的结构和轮函数的特性,结合差分分析,在算法执行时导入故障,分析其对输出的影响,最终获得关键信息。目前还没有公开的报告评估CLOC认证加密算法抵御差分故障攻击的能力,这给正在使用CLOC认证加密算法封装的产品留下了安全隐患。技术实现要素:本发明所要解决的技术问题是提供一种CLOC认证加密算法抵御差分故障攻击的检测方法,能够对CLOC认证加密算法的有效性进行评估。本发明解决其技术问题所采用的技术方案是:提供一种CLOC认证加密算法抵御差分故障攻击的检测方法,包括以下步骤:(1)随机生成要处理的明文消息,记为M;(2)利用CLOC算法处理明文消息M,得到一个正确的输出C、第一个错误输出C'和第二个错误输出C”;(3)计算正确的输出C与第一个错误输出C'的差分值,并将结果记为ΔC',计算正确的输出C与第二个错误输出C”的差分值,并将结果记为ΔC”;(4)分析ΔC'和ΔC”,判断CLOC认证加密算法是否受到差分故障分析的影响,并推导出故障导入的位置,分析其有效性;(5)通过认证所得到的一个T值,通过导入故障,求得密钥K。所述步骤(2)具体包括以下子步骤:(21)输入明文消息M,控制实验环境不受其他不相关事务的干扰,使得CLOC算法能够准确无误地进行,从而得到正确的输出结果,将其记为C;(22)重新输入明文消息M,再次用CLOC算法对其进行加密处理,同时借助其他物理设备改变运行环境,诱导产生故障来干扰CLOC算法的处理过程,将导入两次故障后所输出的结果分别记为C'和C”。所述步骤(22)中通过改变运行环境诱导产生故障的方法包括:改变时钟、电压、湿度、辐射、压力、以及光和涡电流。所述步骤(4)中当ΔC0至ΔC15,ΔC'0至ΔC'15的差分值都不为0,且当ΔC0,ΔC1,ΔC2,ΔC3之间的比例关系不等于ΔC'0,ΔC1',ΔC'2,ΔC3'之间的比例关系时,说明故障导入为正确故障,其中,ΔCi表示故障导入后的第9+i轮产生的差分值,ΔCi'表示第一个故障导入后的第9+i轮的正确的输出C与第一个错误输出C'的差分值。若满足下列其中一个等式:则故障导入在M[0,0]或M[1,1]或M[2,2]或M[3,3];若满足下列其中一个等式:则故障导入在M[0,1]或M[1,2]或M[2,3]或M[3,0];若满足下列其中一个等式:则故障导入在M[0,2]或M[1,3]或M[2,0]或M[3,1];若满足下列其中一个等式:则故障导入在M[0,3]或M[1,0]或M[2,1]或M[3,2],其中,M[i,j]表示明文消息M第i行第j列的矩阵元素。所述步骤(4)中当故障导入在第8轮之前时为无效故障;当ΔC'=0时,说明导入故障后的值等于原先正确的值,差分值为0,导入故障没有意义;当ΔC”=0时,说明导入故障后的值等于原先正确的值,差分值为0,导入故障没有意义;当ΔC'=ΔC”时,说明两次故障导入的位置相同,为无效故障;当最后所得的密钥不唯一时为无效故障。所述步骤(5)具体包括以下步骤:(51)在认证过程中用CLOC算法处理明文消息M,随机导入一个故障;(52)求出一个正确的值T和一个错误的值T';(53)再导入第二个故障,求得另一个错误的值T”;(54)计算正确输出T与错误的T'的差分值,计算正确输出T与错误的T”的差分值;(55)列出差分比例关系式,通过比例求得密钥K。有益效果由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明首先通过CLOC算法对某一个输入消息进行处理;在处理消息阶段对执行环境实施两种控制,一种是要控制处理过程准确无误地运行,并记录其输出结果为C,另一种则是在处理同一过程中通过某些手段人为地导入故障,诱导其输出错误的结果,并记为C'和C”。通过计算C与C'的差分值和C与C”的差分值,来测评CLOC认证加密算法对差分故障攻击的抵御能力。如果检测到有故障发生,能够推导出故障发生的位置,并进一步判断故障位置的有效性。本发明的方法具有简单、快速、准确且易于实现等特点,对检测CLOC认证加密算法抵御差分故障攻击的能力提供了良好的分析依据。附图说明图1是本发明的流程图;图2是CLOC认证加密算法的差分故障分析图;图3是CLOC认证加密算法的认证分析图;图4是实施例的实验环境示意图。具体实施方式下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。使用CLOC认证加密算法对于同一个消息使用同一个密钥进行处理时,如果实验环境(如时钟、电压、湿度、辐射、压力、光和涡电流等)不同,攻击者可以分别获得一个正确输出和两个错误输出,分别计算出正确输出跟错误输出的差分值,即和其中,为异或运算,就可以推导出关键信息。攻击者可以在运行CLOC认证加密算法期间诱导故障发生,但是不知道发生故障的具体位置和具体产生的错误值。由此可知故障导入的具体位置是关键,要想从差分值中获取重要信息,则必须保证导入故障的位置是有效的,不然,导入无效故障就无法从ΔC'和ΔC”中获取到关键信息。图1为本发明提供的检测CLOC认证加密算法抵御差分故障攻击的方法的流程图,所述的检测CLOC算法抵御差分故障攻击的方法包括如下步骤:步骤1:随机生成要处理的消息,记为M;步骤2:处理消息M,得到正确输出,记为C,得到错误输出,分别记为C'和C”;步骤3:计算正确密文与错误密文的差分,结果分别记为ΔC'和ΔC”;步骤4:分析ΔC'和ΔC”,推出导入故障的具体位置,并判断导入故障是否有;步骤5:通过认证所得到的一个T值,通过导入故障,求得密钥K。针对步骤2,用CLOC认证加密算法对M进行处理,实验过程中,对运行环境实施两种不同的控制,即:(1)输入消息M,控制实验环境不受其他任何不相关事物的干扰,使得CLOC认证加密算法能够正确进行,从而得到正确的输出结果,将其记为C;(2)重新输入消息,再次用CLOC认证加密算法对其进行处理,同时借助其他物理设备改变运行环境,诱导产生故障来干扰CLOC认证加密算法的处理过程,将输出结果记为C';再执行一次,将输出结果记为C”。其中,步骤2中诱导故障产生的方法包括:改变时钟、电压、湿度、辐射、压力、光和涡电流等;针对步骤3,计算差分和其中代表异或运算,ΔC'和ΔC”都为128比特,分别代表第九轮两次输出结果的差分。针对步骤4,对ΔC的差分分析及确定故障位置的原理如下:CLOC是一种使用相关数据进行认证加密的分组密码的操作模式,也称为认证密码。CLOC的设计旨在保证可靠的安全,超出块密码的开销,预计算时间复杂度和内存要求。CLOC有效地处理短输入数据,适用于嵌入式处理器。CLOC的分组长度为128比特,加密和解密都可以在线方式进行处理。通过对算法进行故障导入,从而推出密钥K。如图2所示,在第八轮中导入一个故障之后,在第九轮会产生对应的差分比例,因为第9轮加密的最后输出的等于第10轮解密完毕后的状态,通过求得的ΔC'之间的比例关系来推出故障导入的具体位置并且确定密钥的候选值,把这些候选值放入L中,L为导入第一个故障之后所推出的密钥候选值集合。采用相同的方法导入第二个故障,同理,可找到满足ΔC”比例的对应密钥候选值,把这些候选值放入S中,S为导入第二个故障之后所推出的密钥候选值集合,最后让S和L作交运算,得到唯一的密钥,即为正确密钥K。通过分析,所得差分结果共有以下4种差分结果,如表1、表2、表3和表4所示2β1β4β33β2β1β43β32β2β13β42β3β23β12β4β3β2表1第一种差分比例情况3β22β1β4β32β2β1β43β3β2β13β42β3β23β12β4β3表2第二种差分比例情况表3第三种差分比例情况β4β33β22β1β43β32β2β13β42β3β2β12β4β3β23β1表4第四种差分比例情况其中,β是第9轮一开始的故障值,表中的差分结果为第9轮加密后输出的差分结果,同时也是第10轮解密完毕后的状态。通过推算,得到以下结论:若差分比例如表1所示,则说明故障导入位置为M[0,0]或M[1,1]或M[2,2]或M[3,3];若差分比例如表2所示,则说明故障导入位置为M[0,1]或M[1,2]或M[2,3]或M[3,0];若差分比例如表3所示,则说明故障导入位置为M[0,2]或M[1,3]或M[2,0]或M[3,1];若差分比例如表4所示,则说明故障导入位置为M[0,3]或M[1,0]或M[2,1]或M[3,2]。以表1中的差分结果为例,则导入第一个故障之后有以下差分等式:其中,C与C'是已知的,所以可以通过穷举的方法,可求得满足上述等式的K值,将所有候选值放入L中,其中Ki表示密钥K的第i个字节。同理,导入第二个故障后对应的差分情况为上述4个表中的其中一个,根据差分比例可推得密钥候选值,将其放入S中;若不通过比例关系式,通过穷举取得K值的可能结果有2128种,现在根据差分关系式,每导入一个故障可以得出满足一个等式的密钥有28种可能结果,共有4个等式,所以共有210种可能。若推出的密钥是正确的,那他应该满足两次故障导入之后的差分比例关系,所以,当S与L作交集之后,应该有一个正确的密钥;若作交集之后为空或者不止一个密钥,则导入的故障为无效故障。对故障分析的有效性,具体分析如下:①有效故障:当ΔC0至ΔC15,ΔC'0至ΔC'15差分值都不为0,且当ΔC0,ΔC1,ΔC2,ΔC3之间的比例关系不等于ΔC'0,ΔC1',ΔC'2,ΔC3'之间的比例关系时,说明故障导入为正确故障。1)若满足下列其中一个等式:2ΔC0=ΔC1=ΔC2=3ΔC3ΔC4=ΔC5=3ΔC6=2ΔC7ΔC8=3ΔC9=2ΔC10=ΔC113ΔC12=2ΔC13=ΔC14=ΔC15则可以推出故障导入在M[0,0]或M[1,1]或M[2,2]或M[3,3]。2)若满足下列其中一个等式:3ΔC0=2ΔC1=ΔC2=ΔC32ΔC4=ΔC5=ΔC6=3ΔC7ΔC8=ΔC9=3ΔC10=2ΔC11ΔC12=3ΔC13=2ΔC14=ΔC15则可推出故障导入在M[0,1]或M[1,2]或M[2,3]或M[3,0]。3)若满足下列其中一个等式:ΔC0=3ΔC1=2ΔC2=ΔC33ΔC4=2ΔC5=ΔC6=ΔC72ΔC8=ΔC9=ΔC10=3ΔC11ΔC12=ΔC13=3ΔC14=2ΔC15则可推出故障导入在M[0,2]或M[1,3]或M[2,0]或M[3,1]。4)若满足下列其中一个等式:ΔC0=ΔC1=3ΔC2=2ΔC3ΔC4=3ΔC5=2ΔC6=ΔC73ΔC8=2ΔC9=ΔC10=ΔC112ΔC12=ΔC13=ΔC14=3ΔC15则可推出故障导入在M[0,3]或M[1,0]或M[2,1]或M[3,2]。其中,M[i,j]表示明文消息M第i行第j列的矩阵元素②无效故障:1)当故障导入在第8轮之前时为无效故障。2)当ΔC'=0时,说明导入故障后的值等于原先正确的值,差分值为0,导入故障没有意义。3)当ΔC”=0时,说明导入故障后的值等于原先正确的值,差分值为0,导入故障没有意义。4)当ΔC'=ΔC”时,说明两次故障导入的位置相同,为无效故障。5)当最后所得的密钥不唯一时为无效故障。针对上述执行步骤,选择实验环境如图4所示,其中计算机用来产生CLOC的输入消息M以及分析输出结果;封装有CLOC算法的设备用来处理输入的消息;产生故障的设备用来改变实验执行环境,目的是干扰输入消息的处理过程,从而实现导入故障功能,产生错误的输出结果。针对步骤5,认证过程中,对ΔT的差分分析及确定故障位置的原理与步骤4的过程类似,故障差分比例关系式相同,只是关系式的个数不同。因为T取的是前τ位,若τ小于等于32bit,那么CLOC推不出密钥K。CLOC算法中τ∈{64,72,80,88,96,104,128},显然是可以推出密钥的。图3为CLOC认证加密算法的认证分析图,图中的V表示随机数,在C[m]≠0的情况下,若|C[m]|=n,则执行f1,否则执行f2;在C[m]=0的情况下,直接通过g1函数就可求出T;其中图中的函数的含义为:其中,利用上述分析方法,本发明在Intel(R)Core(TM)i3-2350MCPU2.30GHz4GB内存的计算机上,在Eclipse开发工具下采用Java语言编程来模拟故障导入和消息处理过程,重复执行3000次,实验结果表明上述检测方法准确无误。该方法为评估CLOC认证加密算法的安全性提供了充分的理论依据,而且此方法操作简单,计算结果准确。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1