一种基于侧信道泄漏的算法还原方法和系统的制作方法

文档序号:9527361阅读:636来源:国知局
一种基于侧信道泄漏的算法还原方法和系统的制作方法
【技术领域】
[0001]本发明涉及算法还原技术领域,尤其涉及一种基于侧信道泄漏的算法还原方法和系统。
【背景技术】
[0002]荷兰人A.Kerckhoffs早在19世纪就指出系统安全性不应依赖于对加密体制或算法的保密,而依赖于对密钥的保密,然而很多实际密码应用中仍采用了对算法保密或运算部件保密的方式来增强安全性。被保密的算法可能是公开的密码算法如AES、3DES等,也可能是开发商自行设计的专有密码算法。基于侧信道泄漏的算法还原技术是联合使用多种侧信道分析手段,识别被保密的公开密码算法,还原专有密码算法的全部细节,包括算法结构、参数信息等。
[0003]在公开密码算法识别技术方面,2008年,Nagireddy的硕士论文中提出,使用时间攻击、代码模式攻击的方法可以有效识别公开的密码算法。实验表明,当加密/解密数据量大于4MB时,OpenSSL 0.9.7a中实现的不同密码算法DES、AES、Blowfish、TDES可被有效区分。
[0004]在专有密码算法参数还原技术方面,2003年,斯洛文尼亚的Roman Novak首先提出了利用侧信道信息进行密码算法还原的方法,在可操控密钥及已知其中一个转换表的条件下还原了 GSM卡使用的另外一个转换表;2004年,Christophe Clavier对侧信道逆向工程给出了一个概念化的描述;2005年,法国的Daudigny等人利用单比特能量差分分析方法成功地还原了 DES使用的置换表及密钥生成方式,进一步地,他们也得出了子密钥的存储位置;2007年,法国的Christophe Clavier对Novak的方法进行了改进,弱化了C0MP128算法还原需要的条件;荷兰的Dennis Vermoen等人对于平均后的波形使用波形匹配技术对一个商用的JAVA卡进行了分析,成功逆向了其上运行的指令字节;2011年,美国的HarakrishnanBhanu等人提出了用能量分析方法分析VPN的技术;Quisquater等人结合神经网络中的se 1 f-organizing maps技术对Vermoen等人的方法进行了改进,使得利用单条波形即可进行指令识别;2013年印密会上,Christophe Clavier等人利用选择明文碰撞能量分析攻击的方法,将侧信道分析与密码分析相结合,提出了逆向还原类AES的算法的思路;同年亚密会上,法国的MatthieuRivain等人提出了对SPN结构密码算法的侧信道逆向还原方法;2013年,混沌通信大会上,有人展示了可以利用侧信道逆向电视机顶盒上的程序;2013年,东南大学的杨明教授和武汉大学的唐明副教授分别对基于侧信道攻击的匿名通信流量识别、分析和追踪技术以及基于侧信道攻击的分组密码逆向分析方法进行了研究。
[0005]直至目前,针对基于侧信道泄漏的算法还原技术主要还存在以下问题:
(1)分析时需要的先验知识较多。目前的方法通常要求在已知算法架构,且算法的大部分细节已知的情况下进行,仅可对少数未知部件进行还原。
[0006](2)缺乏完整的通用操作方法流程。目前的方法一般针对某种具体平台上的具体架构的算法进行分析,不能同时适用于软、硬件实现的密码算法,缺乏通用性。

【发明内容】

[0007]针对现有技术中的算法还原方法存在的上述问题,本发明公开了一种基于侧信道泄漏的算法还原方法和系统。
[0008]本发明公开了一种基于侧信道泄漏的算法还原方法,其具体包括以下的步骤:步骤一、分析算法的实现架构,根据实现架构的不同进行不同的建模,模板包括密码运算原语模板库和侧信道泄露模板库,所述密码运算原语模板库是密码运算原语与运算组件序列的对应关系,所述侧信道泄露模板库中包括所有密码运算组件的侧信道泄露波形;步骤二、获取待还原算法的侧信道泄漏波形,将待还原算法的侧信道泄漏波形与侧信道泄露模板库中的波形进行比对,获取密码算法的运算组件,然后从密码运算原语模板库中查找对应关系得到相应的密码运算原语;步骤三:根据密码算法中密码运算的不同类型,分别获取线性部件和非线性部件密码算法的参数细节。
[0009]更进一步地,当密码运算部件为线性部件且密码运算的输入已知时,密码运算的输入和输出比特只有顺序不同,将密码运算输入从第1个比特开始直到最后一个比特进行编号,第1个比特的比特索引号为1,第2个比特的比特索引号为2,依此类推;将比特索引号i对应的比特值、与密码运算相关的侧信道泄露作为输入,利用相关系数的方法来计算相关性,相关性计算完毕后,按照泄露点的先后顺序排列比特索引号,索引号的顺序即是上述密码运算的参数。
[0010]更进一步地,当密码运算部件为线性部件且密码运算的输入未知时,将前序运算的侧信道泄露波形分成η段,使其分别对应当前密码运算的输入值的第1至η比特,令第i段前序运算侧信道泄露波形的索引号为i,使用前序运算索引号为i的波形代替比特索引号为i的密码运算输入,使用相关系数的方法来计算相关性,相关性计算完毕后,按照泄露点的先后顺序排列前序运算索引号,索引号的顺序即是上述密码运算的参数。
[0011]更进一步地,于当密码运算部件为非线性部件时,首先记录密码算法第一次运算的侧信道泄露及相应的输入值,将第二次运算的输入表示为上一次运算的输出并检测第二次运算的侧信道泄漏,查找密码运算输入输出表,得到对应的输入值,形成方程组;联立方程组与密码运算输出值的汉明重量分类来求解方程组,得到密码运算参数。
[0012]更进一步地,对密码运算的建模使用自组织特征映射方法来实现,自动寻找最优参考矢量集合来对输入模式集合进行分类,同时保持泄露点之间的拓扑结构,其输出函数包含挑选出泄露点以及泄露点之间的关系式。
[0013]更进一步地,泄露点的选取具体为:调整各个样本点处的权重,使得区分度最大,此时权重大于设定域值的样本点选取为泄露点。
[0014]更进一步地,泄露点的选取还可以为:对比各个样本点处的方差,选取方差大的样本点为泄露点,并计算泄露点之间的相互关系。
[0015]更进一步地,上述方法还包括步骤四、进行密码算法的验证,根据步骤三中所得到的密码算法,用一对明/密文对检验所还原出密码算法的正确性。
[0016]本发明还公开了一种基于侧信道泄漏的算法还原系统,其具体包括建模单元、运算组件还原单元以及参数还原单元;所述建模单元用于分析算法的实现架构,根据实现架构的不同进行不同的建模,模板包括密码运算原语模板库和侧信道泄露模板库,所述密码运算原语模板库是密码运算原语与运算组件序列的对应关系,所述侧信道泄露模板库中包括所有密码运算组件的侧信道泄露波形;所述运算组件还原单元用于获取待还原算法的侧信道泄漏波形,将待还原算法的侧信道泄漏波形与侧信道泄露模板库中的波形进行比对,获取密码算法的运算组件,然后从密码运算原语模板库中查找对应关系得到相应的密码运算原语;所述参数还原单元用于根据密码算法中密码运算的不同类型,分别获取线性部件和非线性部件密码算法的参数细节。
[0017]通过采用以上的技术方案,本发明的有益效果为:采用本发明的方法能通用地对不同结构的密码算法进行还原,弥补了以前同类方法只能用于特定结构算法的缺点,该方法操作流程简单,对先验知识要求少,该方法提供了一套基于侧信道泄漏的算法还原技术的实现框架,即使有新的密码算法出现,使用本方法也能进行分析。
【附图说明】
[0018]图1为基于侧信道泄漏的算法还原方法的流程图。
[0019]图2为架构分析与模板构建分析及结果示意图。
[0020]图3为算法结构分析及结果示意图。
[0021]图4为参数信息获取分析及结果示意图。
[0022]图5为算法验证过程的示意图。
【具体实施方式】
[0023]下面结合说明书
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1