用于有效部署整体多样化程序实例以抵抗差分攻击的系统和方法技术方案

技术编号:9241298 阅读:131 留言:0更新日期:2013-10-10 05:13
一种用于产生大量多样化程序实例以便阻止差分攻击、串谋以及类似恶意动作的系统和方法。代码部分被示为以实例化和聚合的各种方式来定义。所述系统和方法建立可以被部署的非常大量的程序实例。此外,在实例的最小集合上实现测试以在不招致高测试不利后果的情况下在完全部署的实例集上提供高测试覆盖和高置信度。

【技术实现步骤摘要】
【国外来华专利技术】用于有效部署整体多样化程序实例以抵抗差分攻击的系统和方法
本专利技术一般地涉及可抵抗未授权分析的软件。更特别地,本专利技术涉及用于产生软件代码的系统和方法,该软件代码通过构建不同的程序以抵抗攻击者通过差分攻击、串谋(collusion)和自动利用(exploit)的努力来增加构建时间多样性。
技术介绍
在计算领域中,软件通常展示出模块化特性而不是整体的特性。此外,常常存在在任何一块给定软件内采用的许多单独和不同算法。此类不同算法以这样的的方式进行组合以便提供软件所需的服务(即,功能性)。其常常是对于一个特定服务而言的情况,许多不同算法是可用的。一般而言,此方案中的算法是执行任务或一组任务的计算步骤序列。算法可以具有各种尺寸。其可能非常大,或者其可能小到一组的几个指令。算法可以包含更小算法,该更小算法又可以包含甚至更小的算法。此分级结构可以具有任何数目的层次。很好地理解的是此类软件可以被进行反向工程或被攻击者以其他方式篡改。此类篡改在许多商业应用中是不期望的,并且已产生密码术以对抗任何此类攻击。这在大规模服务器-客户端应用中是特别明显的。在此类应用中,用于部署新特征或修补安全漏洞的目的的客户端软件的频繁更新可能导致要求改进的密码技术的整体新类别的攻击。这是因为用新保护来更新软件可能具有将攻击者直接引导至受保护资产的非预期后果,由此,攻击者只需要与软件的先前版本相比较。此类附加攻击不限于用于资产识别的软件修订的差分攻击,而是还可以包括其本身可能导致秘钥共享方案的各方之间的串谋,或者还可以包括可能识别重要模块的代码提升攻击,所述重要模块诸如是用来生成设备秘钥或可信根的代码。代码提升可能通向流氓系统,其中,某些实际应用与攻击者的代码一起被重新使用。在这种情况下,损坏可能非常快速地传播,因为利用常常被发布在因特网上的各种位置处。在软件的保护中,常常将分层防御呈现为对系统的高进入障碍。然而,针对此类新类别的攻击应用分层保护常常是应用程序的性能和尺寸之间的权衡。减小利用由此权衡暴露的漏洞的机会窗口的现有努力包括从依靠用于构建时间多样性的能力。降低跨多个客户端的差分攻击的风险的一个方式是构成软件的个别不同实例。在另一情况下,可以使用构建时间多样性能力来将软件升级(例如,以支持新特征、增强性能或修补漏洞)以更新软件以及分发对有漏洞模块的新保护。这允许完全软件修订相对于前一修订是多样化的,防止明显的差分攻击。在又一情况下,多样性还可以在通过创建数据多样性能力来能够实现撤回方案中起作用。这对于如果例如客户端不遵守公司政策(例如不付费),则不允许客户端连接到服务器是有用的特征。然而,此类多样性方案由于对越来越迥异的程序的增加的需要而在更大的部署中遭遇规模问题,所述越来越迥异的程序必须全部由构建工具所构造,这在传统上要花费很长时间来执行。用以产生多样化程序的现有构建时间技术因不能以有效的方式并以高置信度水平产生不同实例的大规模部署而遭受影响。置信度水平方面的困难通过已知系统和方法不能测试多样化程序实例的大型集合而表现出来。特别地,如果存在大量实例,则测试所有多样化实例所需的时间可能高得不可行。用于生成关于测试能力的多样化实例的有效方法将从构建时间和确认两个角度改善部署的循环。因此,期望提供一种用以增加构建时间多样性的更普遍有用的系统和方法。
技术实现思路
本专利技术的目的是消除或缓解构建时间多样性的先前方法的至少一个缺点。本专利技术提供了一种以软件体现以产生整体多样化程序实例以抵抗攻击的系统和方法。如所提到的,软件在特性上是模块化的。同样地,可以多次地且以多种变化来编写程序的代码部分(例如,函数定义、基本块、变量定义、函数体、指令集)。关于本专利技术,代码部分变化的每个实例被包括在条件编译命令中。根据此布置,可以通过改变条件编译定义并和重新调用目标编译器来快速地构造代码部分的组合。此外,可以构造完整程序的最小集,保证所有代码部分都被使用。这提供了所有代码部分的合理测试覆盖。此外,这是在不要求在所需测试时间方面不可行的所有代码部分组合的测试的情况下实现的。事实上,本专利技术增加了软件中的所有代码已被覆盖的置信度,同时使测试所有实例的时间最小化。在第一方面,本专利技术提供了一种提供计算机软件源代码中的构建时间多样性的方法,该方法包括:将代码划分成代码部分;识别代码部分的代码部分接口;生成代码部分和代码部分接口的多样化实例;创建测试实例,该测试实例表示代码部分和代码部分接口的所有多样化实例;并且使用代码部分和代码部分接口的多样化实例的变化的组合来形成部署实例,其中,通过确认测试实例的可操作性来保证所有部署实例的可操作性。在另一方面,本专利技术提供了一种用于提供计算机软件源代码中的构建时间多样性的系统,该系统包括:一组机器可执行代码段,其可操作成产生保证计算机软件源代码中的构建时间多样性的软件代码,该机器可执行代码可执行为执行如下步骤:将代码划分成代码部分;识别代码部分的代码部分接口;生成代码部分和代码部分接口的多样化实例;创建测试实例,该测试实例表示代码部分和代码部分接口的所有多样化实例;并且使用代码部分和代码部分接口的多样化实例的变化的组合来形成部署实例,其中,通过确认测试实例的可操作性来保证所有部署实例的可操作性。在又一方面,本专利技术提供了一种用于提供计算机软件源代码中的构建时间多样性的设备,该设备包括:用于将代码划分成代码部分的装置;用于识别代码部分的代码部分接口的装置;用于生成代码部分和代码部分接口的多样化实例的装置;用于创建测试实例的装置,该测试实例表示代码部分和代码部分接口的所有多样化实例;以及用于使用代码部分和代码部分接口的多样化实例的变化的组合来形成部署实例的装置,其中,通过确认测试实例的可操作性来保证所有部署实例的可操作性。在又一方面,本专利技术提供了一种存储计算机软件代码以便提供计算机软件源代码中的构建时间多样性的计算机可读存储介质,该计算机软件代码可执行为执行以下步骤:将代码划分成代码部分;识别代码部分的代码部分接口;生成代码部分和代码部分接口的多样化实例;创建测试实例,该测试实例表示代码部分和代码部分接口的所有多样化实例;并且使用代码部分和代码部分接口的多样化实例的变化的组合来形成部署实例,其中,通过确认测试实例的可操作性来保证所有部署实例的可操作性。在本专利技术的所有方面中,应理解的是为计算机软件源代码提供的构建时间多样性与现有技术机制相比是相当大地改善和增加的构建时间多样性。在结合附图来仔细阅读本专利技术的特定实施例的以下描述时,本专利技术的其他方面和特征将变得对于本领域普通技术人员而言显而易见。附图说明现在将参考附图仅以示例的方式来描述本专利技术的实施例。图1图示出其中可以体现本专利技术的已知计算机系统。图2图示出根据本专利技术的总体过程。图3是示出了根据图2中所图示的本专利技术的用于构建时间多样性的步骤的流程图。图4图示出根据图2中所图示的本专利技术的一个实施例的基于编译单元的物理划分成代码部分。图5图示出根据本专利技术的另一实施例的基于函数定义的物理划分成代码部分。图6图示出根据本专利技术的另一实施例的基于函数调用子图的程序流划分。图7图示出根据本专利技术的另一实施例的基于基本块的程序的程序流划分。图8图示出根据本专利技术的另一实施例的通过数据流将代码划分成一个代码部分的示本文档来自技高网
...
用于有效部署整体多样化程序实例以抵抗差分攻击的系统和方法

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种提供计算机软件源代码中的构建时间多样性的方法,所述方法包括:将所述代码划分成代码部分;至少部分地基于所述代码部分中的一个或多个代码部分的外部依赖来识别所述代码部分的代码部分接口,其中代码部分接口包括代码部分的内部依赖,其允许代码部分与一个或多个其他代码部分兼容;根据所述代码部分生成多样化代码部分实例;根据所述代码部分接口生成接口实例,其中所述接口实例包括代码部分接口的多样化实例和复制代码部分接口中的一个或多个;根据所述多样化代码部分实例和所述接口实例创建测试实例,其中使用覆盖阵列来创建所述测试实例,所述覆盖阵列覆盖所述多样化代码部分实例和所述接口实例中预定尺寸的所有可能实例分组;以及使用所述多样化代码部分实例和所述接口实例的变化组合来生成部署实例,其中部署实例的数目大于测试实例的数目,以及其中通过确认所述测试实例的可操作性来保证所有所述部署实例的可操作性。2.如权利要求1中所要求保护的方法,其中,借助于物理划分来实现所述划分步骤。3.如权利要求2中所要求保护的方法,其中,所述物理划分是基于编译单元且所述代码部分接口包括在所述编译单元外面的所有全局数据和函数依赖。4.如权利要求2中所要求保护的方法,其中,所述物理划分基于函数定义,并且所述代码部分接口包括与所述函数定义中的对应的一个、所有全局变量以及所述函数定义中的所述对应的一个所依赖的所有子函数有关的函数签名。5.如权利要求1中所要求保护的方法,其中,借助于程序流划分来实现所述划分步骤。6.如权利要求5中所要求保护的方法,其中,所述程序流划分基于函数调用子图,其中,所述子图中的每一个形成所述代码部分的实例。7.如权利要求5中所要求保护的方法,其中,所述程序流划分基于所述代码的基本块。8.如权利要求1中所要求保护的方法,其中,借助于数据流划分来实现所述划分步骤。9.如权利要求8中所要求保护的方法,其中,所述数据流划分是基于所述代码的数据编码。10.如权利要求1中所要求保护的方法,其中,所述接口实例包括一个或多个复制代码部分接口。11.如权利要求1中所要求保护的方法,其中,所述接口实例包括代码部分接口的一个或多个多样化实例。12.如权利要求1中所要求保护的方法,其中,生成多样化代码部分实例还包括将多个多样化代码部分实例聚合成实例化代码部分的大型集合。13.如权利要求12中所要求保护的方法,其中,生成多样化代码部分实例还包括基于用户标准从实例化代码部分的大型集合选择多样化代码部分实例。14.一种用于提供计算机软件源代码中的构建时间多样性的系统,所述系统包括:一组机器可执行代码段,其可操作成产生保证所述计算机软件源代码中的构建时间多样性的软件代码,所述机器可执行代码可执行为执行以下步骤:将所述代码划分成代码部分;至少部分地基于所述代码部分中的一个或多个代码部分的外部依赖来识别所述代码部分的代码部分接口,其中代码部分接口包括代码部分的内部依赖,其允许代码部分与一个或多个其他代码部分兼容;根据所述代码部分生成多样化代码部分实例;根据所述代码部分接口生成接口实例,其中所述接口实例包括代码部分接口的多样化实例和复制代码部分接口中的一个或多个;根据所述多样化代码部分实例和所述接口实例创建测试实例,其中使用覆盖阵列来创建所述测试实例,所述覆盖阵列覆盖所述多样化代码部分实例和所述接口实例中预定尺寸的所有可能实例分组;以及使用所述多样化代码部分实例和所述接口实例来生成部署实例,其中部署实例的数目大于测试实例的数目,以及其中通过确认所述测试实例的可操作性来保证所有所述部署实例的可操作性。15.如权利要求14中所要求保护的系统,其中,借助于物理划分来实现所述划分步骤。16.如权利要求15中所要求保护的系统,其中,所述物理划分是基于编译单元且所述代码部分接口包括在所述编译单元外面的所有全局数据和函数依赖。17.如权利要求15中所要求保护的系统,其中,所述物理划分基于函数定义,并且所述代码部分...

【专利技术属性】
技术研发人员:R杜兰C利姆PA埃森
申请(专利权)人:爱迪德加拿大公司
类型:
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1