[发明专利]基于控制流图逻辑结构对比的编译器验证方法无效
申请号: | 201010539885.4 | 申请日: | 2010-11-09 |
公开(公告)号: | CN102012862A | 公开(公告)日: | 2011-04-13 |
发明(设计)人: | 程胜;于鹏珊;付小朋;任永青 | 申请(专利权)人: | 北京神舟航天软件技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/45 |
代理公司: | 北京北新智诚知识产权代理有限公司 11100 | 代理人: | 张卫华 |
地址: | 100094*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 控制 逻辑 结构 对比 编译器 验证 方法 | ||
技术领域
本发明涉及一种基于控制流图逻辑结构对比的编译器验证方法,属于编译器验证技术领域。
背景技术
编译器作为任何软件的产生器,其安全性、可靠性和稳定性起着至关重要的作用。特别是在那些对软件的可靠性要求非常高的特殊环境里面,必须保证编译器编译出来的代码是对程序源代码的正确、真实的反映,保证编译器在编译过程中逻辑上的正确性以及行为上的透明性。
编译器系统可信验证主要包括两方面,一方面是编译器的逻辑正确性,即编译器编译的程序在逻辑上符合程序源代码的描述,与程序源代码的逻辑一致;另外一方面是编译器的安全性和可靠性,指编译器在编译程序过程中不会人为地插入恶意代码,导致目标程序运行不可靠或者达到某些其他恶意的目的。
编译器的验证技术现在主要处于理论验证阶段,大多采用形式化的方法来证明编译器正确性和可信性。如形式化验证工具Coq proof assistant,它在开发过程中形式化验证编译器可信性;可出具证明的编译器(certified compiler),该方法不是从编译器本身入手,而是从保证被编译程序的正确性入手,它需要编译器在编译源程序时候同时生成一个形式化的证明,该证明能保证,对某个源程序S,编译器生成的目标程序T是S的一个正确转化。
编译器安全漏洞是指人为的编译器后门,为了针对其进行排除和验证,一方面需要依赖形式化验证技术保障编译器的逻辑正确性,另一方面需要利用多遍交叉编译、目标文件结构化比较、目标文件反编译逻辑比较等理论和方法完成对安全性和可靠性的验证。由此提出了一种实践性较强的检测编译器安全漏洞的方案,称为“多遍交叉编译”,它是一种全自动的方案,支持多种编程语言,且不需要复杂的数学证明技术。然而,其不足在于,它不仅需要一个额外的开源编译器作为参考,而且它只能证明编译器源代码及其二进制代码是对应的;它不能保证编译器源代码不存在漏洞。如果编译器源代码本身就存在漏洞,它不能检测出漏洞的存在。
综上,这些形式化验证方法虽然在理论上比较完善,然而在实际应用中存在以下几个主要问题:
1.理论性太强,可行性较差:形式化验证方法在实现上难道非常大,基本停留在理论阶段,往往在实际应用中并不可行;
2.验证范围较小:现有的形式化验证技术,一般仅能应用于某个语言子集或者仅能证明编译器某些特性或某个部分的正确性,无法在工程中推广。
3.都没有能够很好地解决编译器对于恶意代码注入的问题。
发明内容
为了解决这些问题,本发明提供了一种全新的方法,可以验证编译器的安全问题。本发明通过提取程序源代码和目标代码的控制流图,然后使用同构图的算法对它们进行对比,如果它们一致的话则证明编译器没有插入逻辑炸弹;如果不一致,则证明编译器可能插入了逻辑炸弹,可以在控制流图不一致的结点位置进行手动检查,从而可能发现编译器的后门。
本发明采用的技术方案如下:
一种基于控制流图逻辑结构对比的编译器验证方法,其特征在于包括以下步骤:
1)构造源代码的控制流图;
2)构造目标代码的控制流图;
3)使用同构图算法对以上两者的控制流图进行比对。
在所述步骤1)中,首先对源代码进行词法分析和语法分析,在分析的过程中,根据源代码中语句的语法结构构造出程序的控制流图。
在所述步骤2)中,根据目标代码中影响控制流图结构的指令,将目标代码划分为块,利用所述指令的语义构造其控制流图。
在所述步骤3)中,从两者的控制流图的起始结点开始,按照广度优先遍历的算法对两者的控制流图同时进行遍历。
本发明具有以下优点:
1.可有效地检测编译器恶意代码问题;
2.采用基于控制流图分析和同构比较算法,准确程度高。
附图说明
图1是循环结构流程示意图;
图2是跳转结构流程示意图;
图3是对两个控制流图同时进行遍历的算法。
具体实施方式
本发明提供了一种基于控制流图逻辑结构对比的编译器验证方法,它通过提取程序源代码和目标代码的控制流图,然后使用同构图的算法对它们进行对比,如果它们一致的话则证明编译器没有插入逻辑炸弹;如果不一致,则证明编译器可能插入了逻辑炸弹,可以在控制流图不一致的结点位置进行手动检查,从而可能发现编译器的后门。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京神舟航天软件技术有限公司,未经北京神舟航天软件技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010539885.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:数据接收/发送终端、装置、方法及机顶盒
- 下一篇:一种卧式挤压铸造机