抗边通道和重复调用攻击的动态、可变定时操作路径的系统和方法

文档序号:6352085阅读:143来源:国知局
专利名称:抗边通道和重复调用攻击的动态、可变定时操作路径的系统和方法
技术领域
本发明一般地涉及抗未授权分析的软件。更具体地,本发明涉及用于生成软件代码的系统和方法,该软件代码伪装操作路径使得在运行时期间或在尝试逆向工程期间对代码的分析变得更加困难。
背景技术
在计算领域中,软件通常呈现模块化特性而不是整体的。此外,在任意给定的软件块中常常采用许多独立和不同的算法。这些不同的算法以提供软件所需的服务(即功能性)的方式组合。对于一种特定的服务而言常常是这种情况,许多不同的算法可用。一般而言, 在这种情况下的算法为执行一个任务或一组任务的计算步骤序列。算法可具有多种大小。它可以很大,或可以小至一组少量指令。算法可包含较小的算法,较小的算法进而可包含更小的算法。这种层次结构可有任意数量的级别。可以理解,这样的软件可被攻击者以多种方式进行逆向工程或篡改。在许多商业应用中,上述篡改是不利的并且产生密码术来对抗任何这样的攻击。在密码术中,边通道攻击是基于从密码系统的物理实现和相关物理特性获取的信息来对目标软件代码中的底层算法进行的任意攻击。与可包括蛮力或算法本身中的理论弱点的直接侵犯不同,基于系统的物理特性的攻击通常包括的原因有(但不限于)定时信息、功率消耗、电磁泄漏或类似的物理特性。在一些示例中,甚至声音也可提供额外的信息源,其可被利用以破坏密码系统。通常,许多边通道攻击需要相当多的实现了密码术的系统的内部运行的技术知识。与边通道攻击类似,重复调用攻击是另一种技术,其通常基于从密码系统的物理实现和相关物理特性获取的信息来对目标软件代码中的底层算法进行攻击。然而,这样的重复调用攻击依赖于特定的应用在给定一组输入时从一次调用至另一次调用通过相同的执行路径。这种性质能够使攻击者通过重复执行来构建应用映射直至不明确的信息变得更清楚。具体攻击技术的不例包括定时分析、简易功率分析(SPA)或差分功率分析(DPA)。每个这样的示例包括深刻洞察所使用的软件代码以及具有受控输入的实现的重复调用。这些攻击技术对于从可能泄露的执行中的算法信息获取信息是有用的,并因此有利于其本身进行分析推导,可包括例如系统内特定实现的精确位置、或系统所使用的密码算法等项。为了成功地进行边通道或重复调用攻击,期望实现表现为可控的方式。虽然SPA和DPA会在计算功率消耗的差异时进行进一步攻击,但更多先进的攻击技术中的一些也可利用统计数据和纠错码来找出任何的信息泄露。例如,用于公开密钥密码的 Rivest、Shamir 及 Adleman (RSA)算法、Diffie_HelIman (D-H)密钥交换密码协议、数字信号标准(DSS)密码标准、数字加密标准(DES)密码标准、高级加密标准(AES)密码标准和其他加密子系统已经通过多种定时和差分功率技术被攻击。边通道或重复调用攻击的共同宗旨为需要连续重新调用系统来递增地解答问题。在重复操作的过程中,软件的预定执行泄露部分信息,所泄露的信息最终组成更完整的信息。目前存在问题的基础是在重新调用时任何给定的软件实现的可预测性。边通道或重复调用攻击假设软件以可从中提取信息的重复方式运行。此外,还存在依赖于此相同性质的对软件的其他类型的攻击。例如,调试和/或仿真是依赖于可重复性的攻击的普遍形式。在这些情况下,攻击者可例如将断点设定在具体函数上并希望单步调试程序来理解其操作。当攻击者经过感兴趣的点时,他将从开始重新调用程序以期望在第二次调用中到达相同的断点。通常已知阻挠边通道或重复调用攻击的阻止方法常采用例如减少操作中的变量数以力图减少信息泄露的对策。通常,操作中的变量可通过下面的措施来减少a)填充快速数据路径(例如,加/减操作),使得其比慢速数据路径(例如乘/除操作)执行更长,b)向系统增加噪声,c)使代码等时,从而使代码独立于秘密值以不变的时间运行,或d)使用安全的CPU,该CPU与外界物理分隔。
虽然这些措施在具体情况下可有助于减少边通道或重复调用攻击的有效性,但它们没能给出一种可用于通用算法结构的通用方法。因此,希望提供使用更普遍有用的系统和方法来阻止边通道或重复调用攻击。

发明内容
本发明的目的是消除或减少抗边通道或重复调用攻击的上述方法中的至少一个缺点。本发明提供了在软件中实施的系统和方法来提供多种多样的操作路径以使得边通道或重复调用特征例如定时持续和功率消耗从一次调用至下一次调用程序不一致但功能等同。应理解,这样的操作路径为物理属性例如但不限于存储器设计和芯片组布局所固有。这些路径可使用数据流和控制流部分来构造,从而使定时和功率特征避免了可预测性。此外,在不同的粒度级别下构造了计算路径选择以增加来源于系统的定时和功率属性的不可预测性。此外,构造了计算路径选择使得在公式之间存在不明显的依赖性以及存在对在已知的模块化程序构造实践的情况下不具有依赖性的程序中的变量的不明显的依赖性。这种模式还抗攻击者从保护的系统提取信息的能力。在第一方面,本发明提供了伪装计算机软件源代码中的操作路径的方法,该方法包括标识在计算机程序的计算机软件源代码中实施的至少一个计算步骤序列;基于至少一个计算步骤序列内的表达式路径创建替换操作路径;以及生成包括替换操作路径的抗攻击的计算步骤序列。该创建步骤还包括复制与至少一个计算步骤序列相对应的表达式路径以形成多个复制表达式路径,在多个复制表达式路径之间应用随机选择,获取与多个复制表达式路径内的操作等同的替换操作,根据输入定时窗口的限制通过插入一个或多个标识来扩展替换操作,以及将一个或多个标识中每一个的非特殊输入绑定至计算机程序的常量和/或变量以形成一个或多个相关假目标,形成与计算机程序用户建立的标准相对应的输入定时窗口,其中,抗攻击的计算步骤序列包括表达式路径、替换操作、一个或多个标识以及假目标。另一方面,本发明提供了用于伪装计算机软件源代码中的操作路径的系统,该系统包括一组机器可执行代码段,其可被操作为产生使包含在计算机软件源代码中的计算步骤的回路选择随机化的软件代码,机器可执行代码可执行以实现以下步骤标识在计算机程序的计算机软件源代码中实施的至少一个计算步骤序列;基于至少一个计算步骤序列内的表达式路径创建替换操作路径;以及生成包括替换操作路径的抗攻击的计算步骤序列。该创建步骤还包括复制与至少一个计算步骤序列相对应的表达式路径以形成多个复制表达式路径,在多个复制表达式路径之间应用随机选择,获取与多个复制表达式路径内的操作等同的替换操作,根据输入定时窗口的限制通过插入一个或多个标识来扩展替换操作,以及将一个或多个标识中每一个的非特殊输入绑定至计算机程序的常量和/或变量以形成一个或多个相关假目标,形成与计算机程序用户建立的标准相对应的输入定时窗口,其中,抗攻击的计算步骤序列包括表达式路径、替换操作、一个或多个标识以及假目标。 在另一方面,本发明提供了用于伪装计算机软件源代码中的操作路径的设备,该设备包括用于标识在计算机程序的计算机软件源代码中实施的至少一个计算步骤序列的装置;用于基于至少一个计算步骤序列内的表达式路径创建替换操作路径的装置;以及用于生成包括替换操作路径的抗攻击的计算步骤序列的装置。用于创建的装置还包括用于复制与至少一个计算步骤序列相对应的表达式路径以形成多个复制表达式路径的装置;用于在多个复制表达式路径之间应用随机选择的装置;用于获取与多个复制表达式路径内的操作等同的替换操作的装置;用于根据输入定时窗口的限制通过插入一个或多个标识来扩展替换操作的装置;用于将一个或多个标识中每一个的非特殊输入绑定至计算机程序的常量和/或变量以形成一个或多个相关假目标的装置;以及用于形成与计算机程序用户建立的标准相对应的输入定时窗口的装置,其中,抗攻击的计算步骤序列包括多个复制表达式路径、多个复制表达式路径中每一个内的替换操作、一个或多个标识以及假目标。另一方面,本发明提供了计算机可读存储介质,其可存储用于伪装计算机软件源代码中的操作路径的计算机软件代码,可执行的计算机软件代码可执行以实现以下步骤标识在计算机程序的计算机软件源代码中实施的至少一个计算步骤序列;基于至少一个计算步骤序列内的表达式路径创建替换操作路径;以及生成包括替换操作路径的浪攻击的计算步骤序列。计算机软件代码的创建步骤还可进一步执行以实现以下步骤复制与至少一个计算步骤序列相对应的表达式路径以形成多个复制表达式路径,在多个复制表达式路径之间应用随机选择,获取与多个复制表达式路径内的操作等同的替换操作,根据输入定时窗口的限制通过插入一个或多个标识来扩展替换操作,以及将一个或多个标识中每一个的非特殊输入绑定至计算机程序的常量和/或变量以形成一个或多个相关假目标,形成与计算机程序用户建立的标准相对应的输入定时窗口,其中,抗攻击的计算步骤序列包括多个复制表达式路径、多个复制表达式路径中每一个内的替换操作、一个或多个标识以及假目标。通过参照附图阅读下面对本发明的具体实施方式
的描述,对于本领域技术人员而言,本发明的其他方面和特征将变得显而易见。


下面将参照附图通过仅示例的方式对本发明的实施方式进行描述。图I示出实施本发明的已知的计算机系统;
图2示出根据本发明的整个过程;图3示出用于图2所示根据本发明的抗攻击算法的构建时创建的步骤的流程图;图4示出图2所示根据本发明的运行时执行的静态和动态视图;图5示出了用于创建在图3所示根据本发明的构建时流程图中所使用的等同和标识栏的步骤的流程图;图6示出根据本发明使用的目标定时窗口内的具体回路的构建时创建示例;图7示出根据本发明可使用的间接跳转路径选择形式的计算路径选择的一种类型;
图8示出根据本发明可使用的函数指针表选择形式的计算路径选择的另一种类型;图9示出根据本发明使用的可变定时路径的运行时选择的示例;图10示出如图9所示的块C表示的从两种不同定时的数据路径中选择的具体实现。
具体实施例方式如上所述,算法一般为执行一个任务或一组任务的计算步骤序列。在本发明中,算法的定义应被理解为还包括算法的实现。因此,算法可以是在计算装置上执行一个任务或一组任务的一组计算机指令或一块高级软件编程。一般而言,本发明提供了用于在源代码级别处理现存算法以产生抗边通道或重复调用攻击的算法实现的方法和系统。本发明所产生的算法实现将包含显性插入可变定时(variably-timed)计算路径,其自然禁止边通道分析。路径的可变定时可被控制至已知定时的窗口(即下级和上级阈值),其提供根据实时约束进行参数化并控制行为的手段。应理解,本发明可在任何给定的计算机系统上实践。在图I中用方框图示出了可执行本发明的计算机系统的简化示例。该计算机系统110包括显示器112、键盘114、计算机116和外部装置118。计算机116可包括一个或多个处理器或微处理器,例如中央处理单元(CPU) 120。CPU 120执行算术计算和控制函数以执行存储于内存储器122、优选地随机存取存储器(RAM)和/或只读存储器(ROM)以及可能的辅助存储器124中的软件。辅助存储器124可例如包括大容量存储器、硬盘驱动器、软盘驱动器、磁带驱动器、光盘驱动器、程序盒式存储器和盒式存储器接口例如视频游戏装置中使用的那些、可移除的存储芯片例如EPROM或PROM等、或本领域已知的类似存储介质。这种辅助存储器124可物理地位于计算机116之内,或如图I所示位于计算机116之外。计算机系统110还可包括允许装载计算机程序或其它指令的其它类似装置。这类装置可例如包括通信接口 126,通信接口 126允许软件和数据在计算机系统110与外部系统之间传送。通信接口 126的示例可包括调制解调器、网络接口如以太网卡、串行或并行通信端口。通过通信接口 126传送的软件和数据为信号形式,其可以是电信号、电磁信号和光信号或能够通过通信接口 126接收的其他信号。当然,可在单个计算机系统110上设置多个接口。至计算机116的输入和从计算机116的输出通过输入/输出(I/O)接口 128进行。该I/o接口 128对显示器112、键盘114、外部装置118和计算机系统110的其他这类组件
进行管理。仅出于方便的目的在这些方面描述本发明。对于本领域技术人员而言清楚的是,本发明可用于其他计算机或控制系统110。这样的系统将包括具有计算机或处理器控制的各种各样的装置,包括电话、移动电话、电视、电视机顶盒、销售点计算机、自动提款机、笔记本电脑、服务器、个人数字助理和汽车。在优选的实施方式中,本发明通过运行在计算机系统110上的中间编译程序实现。在本领域中标准编译器技术是已知的,本文不再详细讨论。提供了必要背景的两篇标准引用文献为 Alfred Aho, Ravi Sethi 和 Jeffrey Ullman 于 1988 年发表的〃CompiIersPrinciples, Techniques, and Tools"(ISBN 0-201-1008-6)以及 Steven Muchnick 于 1997年发表的〃Advanced Compiler Design&Implementation〃(ISBN1-55860-320-4)。 一般而言,软件编译器被分为三个部分,其被描述为前端、中间和后端。前端负责语言依赖分析,而后端处理代码生成的机器依赖部分。可选地,中间部分可执行独立于语言和机器的优化。通常,每个编译器家族仅具有一个中间,用于每种高级语言的前端和用于每种机器级语言的后端。编译器家族中的所有部分一般可与公共的中间语言通信,所以它们是易于互换的。该中间语言一般为暴露控制流和数据流的形式,从而使其易于被操纵。这样的中间形式可被称为流暴露形式。在本发明的优选实施方式中,中间代码可被操纵以形成抗输入软件篡改的期望区域。本发明能够非常容易地应用于静态单赋值(SSA)形式的软件代码。SSA是已知、流行且有效的流暴露形式,软件编译器将其用作用于执行包括标量变量的分析和优化的代码表示。基于SSA的有效算法已被开发以处理常数传播、冗余计算检测、死代码消除、归纳变量消除以及其他需求。当然,本发明的方法可被用于除了 SSA之外的流暴露形式,其中这些形式提供了类似级别的语义信息,如Gnu CC中所提供的。目前,Gnu CC软件可从免费软件基金会免费获得。类似地,本发明的方法可用于高级或低级形式的软件,如果这样的形式通过必要的控制流和数据流信息扩大。在下文的编码技术的描述中这种灵活性会变得清晰。本发明具有这样的优点,即一般适用于任何算法并被封装在构建时预编译工具中。因此,本发明可用于任何软件应用,包括加密密码、散列等。此外,本发明可用于存在边通道攻击威胁的任何软件。此外,根据本发明的系统和方法一般可用于任何算法,从而使其还抗其他类型的攻击。这些攻击可包括依赖于软件的可预测性和可重复性的调试与仿真攻击。例如,调试攻击通常依赖于设定断点和从开始重复调用应用的能力,以期待从一次调用至下一次调用精确地到达相同断点。出于对本发明清楚描述的目的,将在全文中使用用语边通道攻击,虽然很明显本发明也适用于抗重复调用或类似攻击。参照图2,简化图示出了根据本发明创建抗攻击算法的整个过程20。过程20—般被示出为构建时27和运行时25,构建时27包括用于建立关于原始算法21的动态、可变定时操作路径的编译和构建周期,运行时25包括算法21的抗攻击形式24的执行和运行周期。在构建时27期间,原始算法21被提供至预编译工具26,预编译工具26包含了本发明的系统和方法(如下面详细描述的那样)。一般而言,预编译工具26包含构建时选项22,其例如为但不限于定时窗口(timing window)容限;目标性能、大小、和/或安全级别;和/或运行时约束。这样的选项22由本发明使用以产生基于原始算法21的抗攻击算法24。在运行时25期间,随机回路选择通过运行时熵源23提供的随机值而发生。图3示出了关于构建时的本发明的更详细的实施方式。在本文中,所示的构建时流程30示出用于根据本发明创建抗攻击算法的构建时方法。如图所示,该方法开始于分析和解析用户的原始算法以及定时约束。特别地,根据本发明的方法在步骤31中获取原始算法310,然后在步骤32中根据用户的定时约束320处理给定的算法310的定时窗口。应理解,这种定时约束可根据任何给定的用户操作环境而改变。一旦用户的原始算法310以及给定的定时约束320被分析且解析,则在步骤33中复制算法310的表达式路径(expression path)。表达式路径的复制提供了输入以在第二路径中创建必要的相同执行。所复制的路径不包含完全相同的操作,而是包含选项栏中可替换的表达式。在运行时,复制的路径执行与原始路径具有不同操作的相同功能。接下来,在步骤34中设置接口,由此插入回路选择器机制。在运行时回路选择器机制使用可用的熵源。熵源为伪随机数生成器(PRNG)的输入,伪随机数生成器以已知方式·作用以生成用于选择替换回路的随机值。有效的基于软件的PRNG算法是已知的。此外,可信的硬件随机数生成器可被用于产生随机数以及通过安全通道返回的值。在编程领域中PRNG的这些细节是公知常识,本文不再赘述。一旦在步骤34中使用PRNG添加了回路选择器接口,则根据本发明的方法就进入步骤35以用替代的操作取代算法中的操作,同时保持在定时窗口约束中。这可通过使用等同操作栏(palette) 350来实现(将在下面进行描述)。同样地,在步骤36中,算法中的操作通过标识栏360根据定时窗口约束插入标识进行进一步扩展(将在下面进行描述)。接下来,在步骤37中,将假的标识绑定至算法的常量和变量以对攻击者寻求的有意义的信息提供假目标。在步骤38中,根据本发明的方法然后生成在运行时使用的抗攻击算法380。参照图4,示意图40示出了根据本发明给出的运行时的可选视图400、401。在本文中,本发明的静态视图400与本发明的动态视图401形成对比。在静态情况下,回路选择器41选择实施为回路41a、41b至41c的可变的运行时路径,回路41a、41b至41c代表回路I、
2、. . . N,其中N为大于I的整数。如图所示,回路选择器41可结合熵源42提供的随机值从回路I至N中随机选择回路。应理解,回路I至N为一组等同回路。可替换地,根据本发明构建抗攻击算法的运行时结果可如视图401动态地示出。图中示出三次调用,调用I调用与回路3相对应的执行路径41d,而调用2调用与回路I相对应的执行路径41a。同样地,调用3调用与回路j相对应的执行路径41e。以这种方式,显而易见的是,算法的每次调用将有效地运行不同的回路(例如41a至41e)。此外,每次运行时调用所采用的路径有利地为算法的唯一运行时示例。下面将更详细地描述等同操作和标识栏。一般而言,可利用已知技术来构造包括任何给定算法的等同操作。例如,混合布尔运算(MBA)表达式(例如由Zhou等人在"Information Hiding in Software with Mixed Boolean-Arithmetic Transforms",8thInternational Workshop on Information Security Applications (信息安全应用的第8 次国际研讨会)(WISA 2007),pp 61-75,Springer Lecture Notes in Computer Science4867,2008中所公开的那些)为可用于为所有运算和逻辑操作创建多个标识(即公式)的一种技术。这些标识具有执行与相应的目标操作相同的行为的性质。然而,多个标识中的每一个具有不同的相关定时(即执行延迟)。作为该行为的示例,在32位、2’ S-补充上下文中,ADD (即+)操作可使用下列公式等同地实现I. ADDl (x, y) =x+y2. ADD2 (x, y) =x_ y_l3. ADD3 (x, y) =2* (x | y)-(x"y)在上述三个等同公式中ADDl公式是ADD操作的最显而易见的实现。然而,其他两个公式ADD2和ADD3也均基于共同使用的32位、2’s-补充操作精确地提供相同的行为。此夕卜,还应注意,当然也可构造类似的公式用于超过32位的位数大小。尽管上述三个公式的操作行为相同,但预期到定时特征是不同的。ADDl公式包含一个运算操作,而ADD2公式包含三个操作。同样地,ADD3操作包含4个操作,其中之一为乘法,这通常会比其他操作花费 更多的时间。现在,考虑创建标识公式,其中值V简单地加上然后减去一个常量Identity (v, c) =v+c-c上述标识产生了独立于值c的值V。此外,在标识公式的计算期间仅需要将c保持不变。因此,c可以是编程意义中的变量。现在,考虑用上述ADD公式1、2、或3之一取代标识公式中的ADD操作。例如用ADD3,则上述标识变成Identity (v, c) =ADD3 (v, c) - c=2* (V I c) - (v~c) -c现在,结果为V的标识操作,其中V依赖于任何常量或变量c,加上一个附加操作,开销为5个操作。由于MBA操作的使用,对c的依赖性不能根据标准编译器优化实践被常规地优化。这示出了用两个重要性质创建算术表达式的机制1)受用户控制的任意操作大小和定时;2)对常量或程序变量(其在计算表达式期间必须保持不变)的任意依赖性。为了实现根据本发明按需创建这些表达式的目的,所有的原始算术运算和逐位运算均可被访问以构造等同公式。通常,为每个操作构造5至10个公式。使每个公式以操作的数量以及定时特性为特点。最终的结果是,目标算法所需的每个操作具有大量的等同操作栏。由于创建了操作栏,所以如上述ADD示例所示可通过组合等同公式构造大量的标识。每个标识能够与其他程序常量或变量以隐藏其预定计算的方式绑定。也使这些标识以操作定时为特点。等同操作和标识栏并不被限制于上述的构造形式(即MBA),而是可通过大量的数学方法实现。例如,矩阵公式可被用于创建等同操作,产生新的标识。此外,不同阶的有限环操作可被用于创建除了标识之外的其他等同操作。在使用多种机制来创建等同操作的过程中,有无限的机会来创建非常广泛而深入的选项栏。图5示出了关于栏创建的用于构建等同操作和标识栏的通用方法。在本文中,示出栏创建50,其中已知的编程语言510 (例如C语言)可被提取至其组成部分并且替换生成。在步骤51中,从给定的编程语言510中选择所有的数学和逻辑操作。接下来,在步骤52中,通过使用公式的方法(例如MBA表达式或上述其他类似),为步骤51中选择的每个操作构造替换的等同操作。然后,在步骤53中使等同操作以它们的定时属性(即计算的延迟)为特点,在步骤53中还向选项栏520捐献一组等同操作520a。接下来,在步骤54中使用等同操作520a来构造标识公式。根据本发明,通用的标识公式和任何特定的给定标识操作为具有许多输入和一个输出的函数。函数的输入之一被指定为特殊的并且保证计算为输出。函数的其他输入可具有任何值。在操作的有界系统内(例如32位、2’ S-补充运算),函数的输出总是计算特殊的输入。这样类型的标识在上述Zhou等人的题为“Information Hiding in Software withMixed Boolean-Arithmetic Transforms”的公开文献中进行了进一步地描述并可以被很好地理解。然而,虽然Zhou等人描述了使用标识来在程序内隐藏常数/密钥并隐藏水印,但本发明提供了唯一的系统和方法,通过该系统和方法标识被用于在回路计算中创建变化的定时。此外,Zhou等人已经示出了构造的公式独立于某些输入的值。在本发明中,这些输入被用于增加回路计算中的模糊性,使得攻击者在寻找相关信息时被吸引至程序中的多个离散点。本发明还使用标识操作来控制回路的定时并能够将通过回路的延迟如所期望地 尽可能地增加。此外,由于标识的非特殊输入可采用任何值,所以根据本发明的系统和方法将这些非特殊输入绑定至程序变量,作为对寻找正在计算的有意义值的攻击者的假目标。在步骤55中,使标识公式以其相应的定时属性为特点,一组标识公式520b被生成并存储在选项栏520中。选项栏520因此可用于根据本发明的系统和方法中。因此,应理解,尽管先决条件是为任何给定算法生成替换的操作路径,但构建出给定的选项栏为本发明的必需部分。利用选项栏(即操作等同公式和标识公式),任何给定的算法可被构造为具有目标定时特征的路径。以多种方式组合这些表达式提供了创建任何期望的最大大小的操作树的机制。此外,这些公式的一些输入仅需要在给定的公式计算期间保持不变。这意味着这些输入可被绑定至程序中的任何变量以如上所述成为对攻击者的假目标。这些假目标还可从任何计算路径引入,而不管它们是否是完全独立的路径或相同的计算路径。使用这些根据本发明的方法,可因此创建抗逆向工程依赖性的网络。参照图6,示出了具有目标定时窗口的具体回路的构建时创建60的示意图。与定时窗口约束65 —同形成原始回路的原始表达式64被输入至回路构造工具63,回路构造工具63执行自动选择。在本文中,原始回路64包括操作Add (加)、Xor (异或)和Sub (减)。回路构造器63使用选项栏61创建了等同表达式路径62,同时以所请求的定时窗口 65为目标。在本文中,选项栏包含一组替换的Add操作Addl、Add2、Add3、Add4…;一组替换的Sub 操作Subl、Sub2、Sub3、Sub4…;一组替换的 Xor 操作Xorl、Xor2、Xor3、Xor4…;和一组标识dl、Id2、Id3、Id4、Id5、Id6、Id7、Id8…如上所述,这些都已生成。除了等同操作的定时之外,还可选择并插入标识操作,例如示出的I dI、I d2、I d3、I d7、I d8。这些操作允许表达式路径的定时被改变,而且还允许对其他待创建的变量或常量的假目标依赖性。假目标依赖性用虚线示出。标识操作具有一种有趣的性质,即允许其被灵活地逐字放置在表达式路径中的任何点处。因此,回路选择器63可在细粒度下满足目标定时窗口。根据本发明,能够创建任何大小的操作树的能力提供了为任何所需的操作组创建变化定时的多个代码路径的能力。将该能力与在运行时选择不同路径的能力结合可以抗边通道攻击。此外,假如必须通过PRNG和相关的熵源驱动不同的路径使得抗篡改能力增强。关于回路构造器63,应注意,在计算路径之间进行选择可通过多种机制来实现,而不违背本发明的范围。实际上,该回路选择过程可包括但不限于下列方法·控制流条件语句(例如条件分支)·间接跳转表(例如可产生于switch语句)·间接函数调用(例如可产生于将函数指针放置在表中)·软件多路复用器(例如通过乘I或O有效地选择操作)尽管这些机制可以被很好地理解并且构建相关的选择方法所需的构造也是已知的,但本发明以新方式使用这些方法为操作的可变定时路径创建回路选择器。在本发明中,在运行时(即执行时)随机选择计算块,使得攻击者的代码不能容易地预测到软件如何从一次调用进行至另一次。因此,应容易理解,路径的随机选择是本发明的独一无二的方面。
参照图7,示出了通过条件控制流和间接跳转表方法形成的构造70的编译结果。条件控制流语句是在两个路径之间选择的最简单方式,并且可被示为土€(条件){路径 I;}else{路径 2;}然而,条件控制流具有这样的缺点,其在最终程序中变成一组分支指令,这会被攻击者轻易地进行逆向工程。间接跳转表的进一步使用可因此是有利的。间接跳转表可常作为一组switch/case语句的编译器优化而出现switch (条件){case A:路径 I;case B:路径 2;}参照图8,可以看到函数指针选择80,可使用函数指针表来选择路径,由此示出了间接函数调用。使用一些函数的指针(即地址)并将其放置为数组(即表)的元素使得能够在不同路径之间进行选择。这可通过选择数组的不同元素来简单地进行,例如通过a
=&func0 ();a[l]=&funcl ();如图8所示,对a[x]的调用(其中X为O或I)允许funcO或funcl被调用。上述情况(控制流条件语句、间接跳转表和间接函数调用)中的每一种使用选择路径的控制流方法。换言之,程序跳转至待执行的路径位置并且仅所选择的路径被执行。与软件多路复用器情况相比较而言,本发明限定两个(或多个)路径被执行的方法,但在进行计算之后,实际上仅选择一个结果。例如,考虑两个元素表(其中元素用O和I填充)A
=0A[l]=l结果=A[X] * 路径 1+A [y] + 路径 2
如果χ=1且y=0,则选择路径I。如果x=0且y=I,则选择路径2。上述示出的示例可推算至多于两个路径。此外,除了乘法之外还可使用其他操作来实现类似的结果。这是创建回路选择器的表和运算操作的新用途。参照图9,示出可变定时路径90的运行时选择。在本文中,可以看出可如何建立可变定时操作块94、95、96来保证具体定时窗口 93。图9示出操作路径的三个连续块A、B和C。这些块中的每一个在其内部具有替换且等同的实现块A具有3个实现:A1、A2、A3块B具有3个实现B1、B2和B3
块C具有2个实现C1、C2每个实现具有预期的定时(在括号内示出的值)。回路选择器91通过可能的实现选择执行A->B->C的路径。有十八种通过回路的可能路径,完全定时窗口为[15,40]。最快的回路为A2->B1->C1=15,最慢的回路为A3->B2->C2=40。回路的定时窗口可通过限制回路选择器91选择的路径而被进一步约束。例如,受约束的定时窗口 [25,30]意味着回路选择器可选自十个可能的路径(如93内所列)。如该小示例所示,可构造各种各样的可变定时路径,同时为整个回路维持受约束的定时窗口。这实现了回路的动态相异执行的目的,其抗基于软件重新调用的攻击,同时为整个回路维持稳定的性能窗口,这对整个系统的实时约束是重要的。需要熵源92来向包括选择回路路径的运行时决策提供输入。然后,可使用这些熵源来产生已知的PRNG技术。熵源的示例包括但不限于1)日期&时间源;2)进程标识符(PID);3)可用的存储地址;4)系统信息的运行时状态;或5)硬件熵源(例如可信平台模块(TPM))。参照图10,示出从两个不同的定时数据路径中进行选择的过程100。在本文中,示出具有不同定时但执行等同功能的两个表达式路径的实际示例(如函数101和105)。将路径封装为函数仅为一个示例。此外,这可作为直接插入码进行或在基本块中进行。图10还可被看作与图9的块C相对应,使得图9中的函数Cl (5)和C2 (10)分别与函数101和105相对应。通过软件多路复用器103,函数101和105结合以产生如图所示的操作路径102。通过软件多路复用器与随机选择的过程104之一联合来进行回路选择过程。本发明的方法步骤能够以多种格式(例如目标代码或源代码)存储的成组的机器可执行代码来实施。在本文中,出于简化的目的,这样的代码一般作为算法、替换算法、程序代码或计算机程序来进行描述。显然,可执行机器代码可通过外部程序调用或通过本领域中已知的其他技术来与其他程序(实现为子程序)的代码结合。本发明的实施方式可通过计算机处理器或以方法步骤的方式编程的类似装置来执行,或可通过设有用于执行这些步骤的装置的电子系统来执行。类似地,电子存储装置例如计算机软盘、CD-ROM、随机存取存储器(RAM)、只读存储器(ROM)或本领域中已知的类似计算机软件存储介质可被编程为执行这样的方法步骤。此外,表示这些方法步骤的电子信号也可通过通信网络进行传输。对于本领域技术人员而言清楚的是,本发明无需被现有的计算机和计算机系统的范围限制。信用卡、借记卡、银行和智能卡可被编码以将本发明应用于其对应的应用。例如,根据本发明的方式的电子商务系统可被用于停车计时器、贩卖机、付费电话、存货控制或汽车租赁以及使用磁条或电路来存储软件和密码。此外,这样的实现对于本领域技术人员是清楚的,并且不损害本发明。本发明的上述实施方式旨在作为示例。同样明显的是,许多不同类型的软件或软件块可通过本发明从加强的安全性中获益。此外,本领域技术人员 可对特定的实施方式进行改变、修改和更改而不背离本发明的范围,本发明的范围仅由所附的权利要求限定。
权利要求
1.伪装计算机软件源代码中的操作路径的方法,所述方法包括 标识在计算机程序的计算机软件源代码中实施的至少一个计算步骤序列; 基于所述至少一个计算步骤序列内的表达式路径创建替换操作路径;以及 生成包括所述替换操作路径的抗攻击的计算步骤序列。
2.如权利要求I所述的方法,其中,所述创建步骤还包括 复制与所述至少一个计算步骤序列相对应的所述表达式路径以形成多个复制表达式路径; 在所述多个复制表达式路径之间应用随机选择; 获取与所述多个复制表达式路径内的操作等同的替换操作; 根据所述输入定时窗口的限制通过插入一个或多个标识来扩展所述替换操作; 将每一个所述一个或多个标识中的非特殊输入绑定至所述计算机程序的常量和/或变量以形成一个或多个相关的假目标;以及 形成与所述计算机程序的用户建立的标准相对应的输入定时窗口, 其中,所述抗攻击的计算步骤序列包括所述表达式路径、所述替换操作、所述一个或多个标识以及所述假目标。
3.如权利要求2所述的方法,其中,所述至少一个计算步骤序列包括一组计算机指令。
4.如权利要求2所述的方法,其中,所述至少一个计算步骤序列包括在计算装置上执行一个任务的一块高级软件编程。
5.如权利要求2所述的方法,其中,所述至少一个计算步骤序列包括在计算装置上执行一组任务的一块高级软件编程。
6.如权利要求2所述的方法,其中,所述形成步骤包括 获取预定的约束选项,所述预定的约束选项包括选自定时窗口容限、目标性能、目标大小、目标安全级别和运行时约束的所述标准。
7.如权利要求6所述的方法,其中,所述标识步骤包括分析及解析所述至少一个计算步骤序列连同所述预定的约束选项。
8.如权利要求2所述的方法,其中,获取步骤从等同操作栏获得所述替换操作。
9.如权利要求8所述的方法,其中,扩展步骤从标识栏获得所述一个或多个标识。
10.如权利要求9所述的方法,其中,所述等同操作栏和所述标识栏相对于编写所述计算机程序的计算机编程语言是预建立的。
11.如权利要求10所述的方法,其中,所述等同操作栏和所述标识栏共同形成选项栏,所述选项栏通过下列步骤创建 从所述计算机编程语言中选择所有数学和逻辑操作; 构造一组预建立的操作,所述一组预建立的操作等同于所述数学和逻辑操作; 使所述一组预建立的操作以与所述一组预建立的操作相关的定时属性为特点; 相对于所述一组预建立的操作构造一组标识公式;以及 使所述一组标识公式以与所述一组标识公式相关的定时属性为特点。
12.如权利要求2或11所述的方法,其中,在所述抗攻击的计算步骤序列的执行及运行周期,所述多个复制表达式路径、每一个所述多个复制表达式路径中的所述替换操作、所述一个或多个标识以及所述假目标经历回路选择过程。
13.如权利要求12所述的方法,其中,所述回路选择过程通过使用所述替换操作、所述一个或多个标识和所述假目标形成唯一回路路径。
14.如权利要求13所述的方法,其中,所述回路选择过程包括选自控制流条件语句、间接跳转表、间接函数调用以及软件多路复用器中的一个或多个选择机制。
15.如权利要求14所述的方法,其中,所述一个或多个选择机制是随机化的。
16.用于伪装计算机软件源代码中的操作路径的系统,所述系统包括 一组机器可执行代码段,能够被操作为产生使包含在所述计算机软件源代码中的计算步骤的回路选择随机化的软件代码,所述机器可执行代码能够被执行以实现以下步骤 标识在计算机程序的计算机软件源代码中实施的至少一个计算步骤序列; 基于所述至少一个计算步骤序列内的表达式路径创建替换操作路径;以及 生成包括所述替换操作路径的抗攻击的计算步骤序列。
17.如权利要求16所述的系统,其中,所述创建步骤还包括 复制与所述至少一个计算步骤序列相对应的所述表达式路径以形成多个复制表达式路径; 在所述多个复制表达式路径之间应用随机选择; 获取与所述多个复制表达式路径内的操作等同的替换操作; 根据所述输入定时窗口的限制通过插入一个或多个标识来扩展所述替换操作; 将每一个所述一个或多个标识中的非特殊输入绑定至所述计算机程序的常量和/或变量以形成一个或多个相关假目标;以及 形成与所述计算机程序的用户建立的标准相对应的输入定时窗口, 其中,所述抗攻击的计算步骤序列包括所述表达式路径、所述替换操作、所述一个或多个标识以及所述假目标。
18.如权利要求17所述的系统,其中,所述至少一个计算步骤序列包括一组计算机指令。
19.如权利要求17所述的系统,其中,所述至少一个计算步骤序列包括在计算装置上执行一个任务的一块高级软件编程。
20.如权利要求17所述的系统,其中,所述至少一个计算步骤序列包括在计算装置上执行一组任务的一块高级软件编程。
21.如权利要求17所述的系统,其中,所述形成步骤包括 获取预定的约束选项,所述预定的约束选项包括选自定时窗口容限、目标性能、目标大小、目标安全级别和运行时约束的所述标准。
22.如权利要求21所述的系统,其中,所述标识步骤包括分析及解析所述至少一种计算步骤序列连同所述预定的约束选项。
23.如权利要求17所述的系统,其中,获取步骤从等同操作栏获得所述替换操作。
24.如权利要求23所述的系统,其中,扩展步骤从标识栏获得所述一个或多个标识。
25.如权利要求24所述的系统,其中,所述等同操作栏和所述标识栏相对于编写所述计算机程序的计算机编程语言是预建立的。
26.如权利要求25所述的系统,其中,所述等同操作栏和所述标识栏共同形成选项栏,所述选项栏通过下列步骤创建从所述计算机编程语言中选择所有数学和逻辑操作; 构造一组预建立的操作,所述一组预建立的操作等同于所述数学和逻辑操作; 使所述一组预建立的操作以与所述一组预建立的操作相关的定时属性为特点; 相对于所述一组预建立的操作构造一组标识公式;以及 使所述一组标识公式以与所述一组标识公式相关的定时属性为特点。
27.如权利要求17或26所述的系统,其中,在所述抗攻击的计算步骤序列的执行及运行周期,所述多个复制表达式路径、每一个所述多个复制表达式路径中的所述替换操作、所述一个或多个标识以及所述假目标经历回路选择过程。
28.如权利要求27所述的系统,其中,所述回路选择过程通过使用所述替换操作、所述一个或多个标识和所述假目标形成唯一回路路径。
29.如权利要求28所述的方法,其中,所述回路选择过程包括选自控制流条件语句、间接跳转表、间接函数调用以及软件多路复用器中的一个或多个选择机制。
30.如权利要求29所述的方法,其中,所述一个或多个选择机制是随机化的。
31.用于伪装计算机软件源代码中的操作路径的设备,所述设备包括 用于标识在计算机程序的计算机软件源代码中实施的至少一个计算步骤序列的装置; 用于基于所述至少一个计算步骤序列内的表达式路径创建替换操作路径的装置;以及 用于生成包括所述替换操作路径的抗攻击的计算步骤序列的装置。
32.如权利要求31所述的设备,其中,用于创建的装置还包括 用于复制与所述至少一个计算步骤序列相对应的表达式路径以形成多个复制表达式路径的装置; 用于在所述多个复制表达式路径之间应用随机选择的装置; 用于获取与所述多个复制表达式路径内的操作等同的替换操作的装置; 用于根据所述输入定时窗口的限制通过插入一个或多个标识来扩展所述替换操作的装置; 用于将每一个所述一个或多个标识中的非特殊输入绑定至计算机程序的常量和/或变量以形成一个或多个相关假目标的装置;以及 用于形成与所述计算机程序的用户建立的标准相对应的输入定时窗口的装置, 其中,所述抗攻击的计算步骤序列包括所述多个复制表达式路径、每一个所述多个复制表达式路径中的所述替换操作、所述一个或多个标识以及所述假目标。
33.计算机可读存储介质,其存储用于伪装计算机软件源代码中的操作路径的计算机软件代码,所述计算机软件代码能够被执行以实现以下步骤 标识在计算机程序的计算机软件源代码中实施的至少一个计算步骤序列; 基于所述至少一个计算步骤序列内的表达式路径创建替换操作路径;以及 生成包括所述替换操作路径的抗攻击的计算步骤序列。
34.如权利要求33所述的计算机可读存储介质,其中,所述计算机软件代码的所述创建步骤还能够被执行以实现以下步骤 复制与所述至少一个计算步骤序列相对应的所述表达式路径以形成多个复制表达式路径;在所述多个复制表达式路径之间应用随机选择; 获取与所述多个复制表达式路径内的操作等同的替换操作; 根据所述输入定时窗口的限制通过插入一个或多个标识来扩展所述替换操作; 将每一个所述一个或多个标识中的非特殊输入绑定至所述计算机程序的常量和/或变量以形成一个或多个相关假目标;以及 形成与所述计算机程序的用户建立的标准相对应的输入定时窗口, 其中,所述抗攻击的计算步骤序列包括所述多个复制表达式路径、每一个所述多个复制表达式路径中的所述替换操作、所述一个或多个标识以及所述假目标。
全文摘要
用于构造可变定时操作路径以及将这些路径应用于任何算法的系统和方法。具体地,该系统和方法可被用于加密算法作为抗边通道、重复调用攻击、以及基于用于给定软件实现的系统的物理特征任的何类似攻击的手段。该方法具有对任何算法通用的有益性以及具有约束已知定时窗口的性能的能力。
文档编号G06F21/14GK102939608SQ201080065759
公开日2013年2月20日 申请日期2010年3月25日 优先权日2010年3月25日
发明者克利福德·立厄姆, 卡洛斯·纳哈斯 申请人:埃德图加拿大公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1