利用所谓检测和强制原理保护软件免受不需要的使用的方法

文档序号:6424831阅读:325来源:国知局
专利名称:利用所谓检测和强制原理保护软件免受不需要的使用的方法
技术领域
本发明整体涉及数据处理系统技术领域,而且更确切地本发明针对保护在所述数据处理系统上运行的软件免受未授权使用的装置。
本发明的主题尤其针对使用一个处理和存储单元来保护软件免受未授权使用的装置,这样一个处理和存储单元通常由在USB端口上的芯片卡或者实体钥匙实现。
在上面技术领域中,主要的问题涉及由没有为许可权利付费的用户对软件的未授权使用。这种软件的非法使用导致对编软件者、软件经销商和/或任何在产品中集成这种软件的人员的显而易见的损失。为了避免这样的非法拷贝,已经提出了在技术条件下的各种解决方案来保护软件。
因此一种保护解决方案是已知的,其使用硬件保护系统,诸如命名为保护钥匙或者“软件狗”的物理部件。这样一个保护钥匙应当保证软件仅仅在该钥匙存在时执行。但是,必须承认这种解决方案是不起作用的,因为它带来容易绕过的不合适之处。一个有恶意倾向的人员或者黑客能够,借助于诸如反汇编程序的专门工具,删除保护钥匙的控制指令。然后可以使对应于软件修改版本的非法拷贝能够执行而没有保护。此外,这种解决方案不能推广到所有软件,这是因为很难连接两个以上的保护钥匙到同一个系统。
本发明的主题确切地说在于找到解决上述问题的方案,通过提出一种保护软件免受未授权使用的方法解决上述问题,该方法使用一种专门的处理和存储单元,这是因为这样一个单元的存在是软件完全起作用所必需的。
为了实现这样一个目标,本发明的主题涉及使用包含至少处理模块和存储模块的至少一个空白单元、保护易受攻击的软件免受它的未授权使用的方法,所述易受攻击的软件由一个源(source)产生并且在一个数据处理系统上运行。依据本发明的方法包含→在保护阶段期间·定义-至少一个软件执行特征,其易于至少部分地在一个单元中监控,-为至少一个软件执行特征定义要遵循的至少一个准则,-在一个单元中实现的检测模块,其能够检测到至少一个软件执行特征没有遵循至少一个相关准则,-以及强制模块,其在一个单元中实现而且能够当至少一个准则没有被遵循时,通知该数据处理系统和/或修改软件的执行,·构造利用模块,其允许把空白单元转换成为一个能够实现检测模块和强制模块的单元,·通过以下步骤创建一个受保护的软件-在易于监控的软件执行特征当中选择要监控的至少一个软件执行特征,-为至少一个选择的软件执行特征选择要遵循的至少一个准则,-选择至少一个算法处理过程,其在易受攻击软件的执行期间使用至少一个操作数而且能够获得至少一个结果,而且将为其监控至少一个选择的软件执行特征,-以及选择包含至少一个选择的算法处理过程的易受攻击软件源中的至少一部分,-从易受攻击软件的源中通过修改易受攻击软件源的至少一个选择部分以获得受保护软件源的至少一个修改部分来产生受保护软件的源,这个修改使得 在受保护软件的执行期间,第一执行部分在数据处理系统中执行,而且第二执行部分在一个从在信息上载之后的空白单元中获得的单元中执行, 第二执行部分至少执行至少一个选择算法处理过程的功能, 以及在受保护软件的执行期间,借助于第二执行部分监控至少一个选择的执行特征而且一个准则没有被遵循的事实导致对受保护软件执行的修改,-以及产生 从受保护软件的源中产生受保护软件的第一个目标部分,所述第一目标部分使得在受保护软件的执行期间,显现在数据处理系统中执行的第一执行部分而且它的至少一部分考虑到至少一个选择的软件执行特征被监控了, 以及受保护软件的第二目标部分,其包含实现了检测模块和强制模块的利用模块,所述第二目标部分使得,在上载到空白单元之后以及在受保护软件的执行期间,显现第二执行部分,借助于其监控至少一个选择的软件执行特征,以及借助于其会使一个准则没有被遵循的事实导致受保护软件执行的修改,·以及为了获得该单元而上载第二目标部分到空白单元,→以及在期间受保护软件被执行的使用阶段期间·在存在该单元时-以及只要对应于受保护软件所有修改部分中的所有监控的执行特征的所有准则被遵循,就允许受保护软件的所述部分标称运行,以及因此允许受保护软件标称运行,-以及如果对应于受保护软件一部分中的一个监控执行特征的、至少一个准则没有被遵循的话,则向数据处理系统通知它和/或修改受保护软件中这部分的功能,以便修改受保护软件的功能,·以及在没有单元的情况下,尽管有第一执行部分中的一部分对触发一个选择算法处理过程的功能在单元中执行的请求,也不能正确地满足所述请求,以致至少所述部分没有被正确地执行,而且因此,受保护软件没有完全地起作用。
依据一个变体实施例,依据本发明的方法包含→在保护阶段期间·定义-一个软件功能使用的度量的变量,作为易于监控的软件执行特征,-至少一个和每个度量的变量相关的阂值,作为要遵循的准则,-以及能够更新至少一个度量的变量的实现模块,·构造允许该单元还实现实现模块的利用模块,·以及通过以下方式修改受保护的软件-选择软件的至少一个功能的使用的至少一个度量的变量,作为要监控的软件执行特征,-选择 受保护软件的至少一个功能,其使用易于使用一个度量的变量监控, 用于量化所述功能使用的至少一个度量的变量, 和一个选择的度量的变量相关、对应于所述功能使用的限制的至少一个阈值, 以及至少一种取决于所述功能的使用更新一个选择的度量的变量的方法,-以及修改受保护软件源的至少一个选择部分,这个修改使得在受保护软件的执行期间,取决于所述功能的使用、借助于第二执行部分实现该度量的变量,以及考虑至少一个阈值跨越,→以及在使用阶段期间,在存在该单元、以及在其中对应于至少一个使用限制的至少一个阈值跨越被检测到的情况中,向数据处理系统通知它和/或修改该受保护软件这部分的功能,以便修改该受保护软件的功能。
依据一个变体实施例,依据本发明的方法包含→在保护阶段期间·定义-为至少一个度量的变量,定义几个相关的阈值,-以及对应于所述阈值中的每一个的不同强制模块,·以及通过以下方式修改受保护的软件-在受保护软件的源中选择至少一个选择的度量的变量,其中这些度量的变量必须和对应于该功能使用的不同限制的几个阈值相关,-选择至少两个和选择的度量的变量相关的阈值,-以及修改受保护软件源的至少一个选择部分,这个修改使得在受保护软件的执行期间,借助于第二执行部分不同地考虑各个阈值的跨越,→以及在使用阶段期间·在存在该单元时-在其中第一阈值跨越被检测到的情况中,命令受保护的软件不再使用相应的功能,-以及在其中第二阈值的跨越被检测到的情况中,使相应功能和/或受保护软件的至少一个部分无效。
依据一个变体实施例,依据本发明的方法包含→在保护阶段期间·定义这样一个再装模块,其能够用至少一个附加的使用相信由一个度量的变量监控的至少一个软件功能,·构造还允许该单元实现再装模块的利用模块,·以及通过以下方式修改受保护的软件-在受保护软件的源中,选择至少一个选择的度量的变量,其能够限制一个功能的使用而且必须能够用至少一个附加的使用相信,-以及修改至少一个选择部分,这个修改使得在一个称作再装的阶段期间,对应于一个选择的度量的变量的至少一个功能的至少一个附加的使用能够被相信,→以及在再装的阶段期间·重新实现至少一个选择的度量的变量和/或至少一个相关的阈值,以便允许该功能的至少一个附加的使用。
依据一个变体实施例,依据本发明的方法包含→在保护阶段期间·定义-一个软件使用简要表,作为易于监控的软件执行特征,-以及至少一个软件执行特征,作为要遵循的准则,·以及通过以下方式修改受保护的软件-选择至少一个软件使用的简要表作为要监控的软件执行特征,-选择至少一个执行特征,其中至少一个选择的使用简要表必须要遵守它们,-以及修改受保护软件源中的至少一个选择部分,这个修改使得在受保护软件的执行期间,第二执行部分遵循所有选择的执行特征,→以及在使用阶段期间,在存在该单元、以及在其中检测到至少一个执行特征没有被遵循的情况中,向数据处理系统通知它和/或修改该受保护软件这部分的功能,以便修改该受保护软件的功能。
依据一个变体实施例,依据本发明的方法包含→在保护阶段期间·定义-一个指令集,其的指令易于在单元中执行,-一组用于所述指令集的指令命令,所述指令命令易于在该数据处理系统中执行以及易于触发这些指令在单元中的执行,-指令链接,作为使用简要表,-一个用于这些指令执行的期望链接,作为执行特征,-允许检测该指令链接没有对应于期望链接的模块,作为检测模块,-以及允许在当该指令链接没有对应于期望链接时向数据处理系统通知和/或修改该受保护软件中的这部分的功能的模块,作为强制模块,·构造还允许该该单元执行该指令集中的指令的利用模块,所述指令的执行由指令命令在数据处理系统中的执行触发,·以及通过以下方式修改受保护的软件-修改受保护软件源中的至少一个选择部分,这个修改使得 至少一个选择算法处理过程被拆分以便在该受保护软件的执行期间,所述算法的处理过程借助于第二执行部分、使用指令执行, 对于至少一个选择的算法处理过程,指令命令被集成到受保护软件的源中,以便在受保护软件的执行期间,每个指令命令由第一执行部分执行以及在该单元中触发,一个指令借助于第二执行部分的执行, 以及在允许受保护软件执行的序列集合当中选择一个指令命令序列, 以及指定这样的链,其必须由至少一些指令在它们在单元中执行期间遵守,→以及在使用阶段期间,在存在该单元、以及在其中检测到在该单元中执行的指令链接没有对应于期望链接的情况中,向数据处理系统通知它和/或修改该受保护软件中这部分的功能,以便修改该受保护软件的功能。
依据一个变体实施例,依据本发明的方法包含→在保护阶段期间·定义-一个这样的指令集作为指令集,其中的至少某些指令利用寄存器工作并且为了返回结果的目的而使用至少一个操作数,-为至少一些利用寄存器工作的指令,定义 定义该指令功能的一部分, 以及定义一个用于该指令执行的期望链接并且包含对应于下列部分的位字段的部分◇该指令的标识字段,◇以及为该指令的每个操作数定义*一个标记字段,*以及操作数的一个期望标识字段,-为每个属于该利用模块并且由指令集使用的寄存器,定义一个产生的标识字段,其中自动地存储已经在所述寄存器中返回了它的结果的最近指令的标识,-这样的模块作为检测模块,该模块允许在指令的执行期间,当标记字段使用操作数时,为每个操作数检查对应于由所述操作数使用的寄存器的产生的标识字段和所述操作数来源的期望标识字段的等同性,
-以及能够在如果检查了的等同性中的至少一个是错误时修改指令结果的模块,作为强制模块。
依据一个最佳实施例,依据本发明的方法包含→在保护阶段期间·通过以下方式修改受保护的软件-选择在至少一个选择算法处理过程中使用的至少一个变量,其在受保护软件的执行期间,部分地定义受保护软件的状态,-修改受保护软件源中的至少一个选择部分,这个修改使得在受保护软件的执行期间,至少一个选择变量或者选择变量的至少一个拷贝驻留在该单元中,-以及产生 受保护软件的第一目标部分,所述第一目标部分使得在受保护软件的执行期间,第一执行部分的至少一个部分还考虑至少一个变量或者变量的至少一个拷贝驻留在该单元中, 以及该受保护软件的第二目标部分,所述第二目标部分使得,在上载到单元之后以及在受保护软件的执行期间,显现第二执行部分,借助于该部分至少一个选择变量,或者选择变量的至少一个拷贝也驻留在该单元中,→以及在使用阶段期间·在存在该单元以及每当第一执行部分中的一部分中利用它时,使用驻留在该单元中的一个变量或者变量的一个拷贝,以便所述部分被正确地执行,以及因此,受保护软件完全起作用,·以及在不存在该单元的情况下,尽管有第一执行部分中的一部分对使用驻留在该单元中的一个变量或者变量一个拷贝的请求,也不能正确地满足所述请求,以致至少所述部分没有被正确地执行,而且因此,受保护软件没有完全地起作用。
依据另一个最佳实施例,依据本发明的方法包含
→在保护阶段期间·定义-一个指令命令,作为触发命令,-一个指令作为相关函数,-至少一个用于触发命令的变元,作为一个次序,其至少部分地对应于由数据处理系统传输到该单元的信息,以便触发相应相关函数的执行,-一种重命名这些次序的方法,其能够重命名这些次序以便获得具有重命名次序的触发命令,-以及恢复模块,其被设计成在使用阶段期间在该单元中使用,而且能够从重命名次序中恢复要执行的相关函数,·构造允许该单元此外还实现恢复模块的利用模块,·以及通过以下方式修改受保护的软件-在受保护软件的源中选择触发命令,-通过重命名选择的触发命令的次序来修改受保护软件源中的至少一个选择部分,以便隐藏相应相关函数的身份,-以及产生 受保护软件的第一目标部分,所述第一目标部分使得在受保护软件的执行期间,执行具有重命名次序的触发命令, 以及受保护软件的第二目标部分,其包含还实现了恢复模块的利用模块,所述第二目标部分使得,在上载到该单元之后以及在受保护软件的执行期间,借助于第二执行部分恢复其的执行由第一执行部分触发的相关函数的身份,而且该相关函数借助于第二执行部分执行,→以及在使用阶段期间·在存在该单元以及每当包含在第一执行部分一部分中的一个具有重命名次序的触发命令利用它时,在该单元中恢复相应相关函数的身份以及执行它,以便所述部分被正确地执行,以及因此,受保护软件完全起作用,·以及在不存在该单元的情况下,尽管有第一执行部分中的一部分对触发在该单元中执行一个相关函数的请求,也不能正确地满足所述请求,以致至少所述部分没有被正确地执行,而且因此,受保护软件没有完全地起作用。
依据一个变体实施例,依据本发明的方法包含→在保护阶段期间·为至少一个相关函数定义一系列在算法上等效、但是由重命名次序不同的触发命令触发的相关函数,·以及通过以下方式修改受保护的软件-在受保护软件的源中选择至少一个具有重命名次序的触发命令,-以及通过至少用重命名次序替换一个选择的触发命令的重命名次序,来用另一个重命名次序修改该受保护软件源中的至少一个选择部分,以触发同一系列中的一个相关函数。
依据一个变体实施例,依据本发明的方法包含→在保护阶段期间,通过以下步骤为至少一个相关函数定义一系列算法上等效的相关函数-把一个噪声字段连接到定义要在该单元中执行的相关函数中的功能部分的信息,-或者使用该指令的标识字段以及操作数的期望标识字段。
依据一个变体实施例,依据本发明的方法包含→在保护阶段期间·定义-一种加密次序的加密方法,作为重命名次序的方法,-以及作为恢复模块的模块,其实现了一种解密方法来解密重命名次序以及因此恢复要在单元中执行的相关函数的身份。
依据另一个最佳实施例,依据本发明的方法包含→在保护阶段期间·通过以下方式修改受保护的软件-在受保护软件的源中,选择至少一个在至少一个选择的算法处理过程中执行的条件分支,-修改受保护软件源中的至少一个选择部分,这个修改使得在受保护软件的执行期间,借助于第二执行部分,在该单元中执行至少一个选择的条件分支的功能,-以及产生 受保护软件的第一目标部分,所述第一目标部分使得在受保护软件的执行期间,在该单元中执行至少一个选择的条件分支的功能, 以及该受保护软件的第二目标部分,所述第二目标部分使得,在上载到该单元之后以及在受保护软件的执行期间,显现第二执行部分,借助于该部分执行至少一个选择的条件分支的功能,→以及在使用阶段期间·在存在该单元以及每当包含在第一执行部分中的一部分利用它时,在该单元中执行至少一个条件分支的功能,以便所述部分被正确地执行,以及因此,受保护软件完全起作用,·以及在不存在该单元而且尽管有第一执行部分中的一部分请求在该单元中执行一个条件分支的功能时,不能正确地满足所述请求,以致至少所述部分不被正确地执行,而且因此,受保护软件没有完全起作用。
依据一个变体实施例,依据本发明的方法包含,在保护阶段期间,通过以下方式修改受保护的软件-在受保护软件的源中选择至少一系列选择的条件分支,
-修改受保护软件源中的至少一个选择部分,这个修改使得在受保护软件的执行期间,借助于第二执行部分,在该单元中执行条件分支的至少一个选择系列的整体功能,-以及产生 受保护软件的第一目标部分,所述第一目标部分使得在受保护软件的执行期间,在该单元中执行条件分支至少一个选择系列的功能, 以及该受保护软件的第二目标部分,所述第二目标部分使得,在上载到单元之后以及在受保护软件的执行期间,显现第二执行部分,借助于该部分执行至条件分支少一个选择系列的整体功能。
因此,依据本发明的方法通过使用一个呈现出包含要被执行软件一部分的特征的处理和存储单元,允许保护软件的使用。从而试图运行而没有该处理和存储单元的该软件的任何导出版本都强制在执行期间重新创建出包含在该处理和存储单元中的软件的一部分,否则该软件的所述导出版本将不会完全起作用。
从以下参考附图进行的描述中显露出各种其他的特征,这些附图显现本发明主题的实施例和实现方案作为非限制的示例。


图10和11是功能框图,分别说明了没有受保护和由依据本发明的方法保护的软件的各个表示。
图20到22作为示例说明了实现依据本发明的方法的一个装置的各个实施例。
图30和31是功能框图,它们使依据本发明的方法的通用原理明确。
图40到43示出依据本发明的保护处理过程实现通过变量进行保护的原理的示意图。
图70到74示出依据本发明的保护处理过程实现通过检测和强制进行保护的原理的示意图。
图80到85示出依据本发明的保护处理过程实现通过标准重命名进行保护的原理的示意图。
图90到92示出依据本发明的保护处理过程实现通过条件分支进行保护的原理的示意图。
图100示出实现本发明主题的不同阶段的示意图。
图110说明了一个系统的一个实施例,该系统允许依据本发明实现保护阶段中的构造级。
图120说明了在依据本发明的保护处理过程中使用的预定制单元的一个实施例。
图130说明了一个系统的一个实施例,该系统允许依据本发明实现保护阶段中的工具构造级。
图140说明了一个系统中的一个实施例,其允许依据本发明实现保护处理过程。
图150说明了在依据本发明的保护处理过程中使用的定制单元的一个实施例。
在本说明书的其余部分中,将使用以下的定义·数据处理系统3是一个能够执行程序的系统。
·处理和存储单元是这样一个单元,其能够-接收由数据处理系统3提供的数据,-返回数据到数据处理系统3,-至少部分保密地存储数据以及即使该单元被断电时也保持所述数据的至少一部分,-以及在所述数据上执行算法处理过程,部分或者全部结果是保密的。
·单元6是一个实现依据本发明的方法的处理和存储单元。
·空白单元60是一个没有实现依据本发明的方法、但是能够接收把它转换成为单元6的数据的单元。
·被预定制单元66是这样一个空白单元60,其已经接收了部分数据,以允许它在接收补充的数据之后,被转换成为单元6。
·上载信息到空白单元60或者预定制单元66对应于传输信息到空白单元60或者被预定制单元66,以及对应于所述传输的信息的存储。该传输可能能够包含信息格式的改变。
·包含在数据处理系统3中的变量、函数或者数据将由大写字母指示,而包含在单元6中的变量、函数或者数据将由小写字母指示。
·“受保护的软件”是一个已经由依据本发明的方法实现的至少一个保护原理保护的软件。
·“易受攻击的软件”是一个没有由依据本发明的方法实现的任何保护原理保护的软件。
·在其中在易受攻击的软件和受保护的软件之间的区别不是重要的情况中,使用术语“软件”。
·取决于在软件生命周期中考虑的时刻,软件具有各个表示-源表示,-目标表示,-分发,-或者动态表示。
·一个软件的源表示被理解为这样一个表示,其在转换之后,产生一个目标表示。源表示能够提供从原理的摘要级别到可由数据处理系统或者处理和存储单元直接执行的级别的不同级别。
·一个软件的目标表示对应于这样一个表示级别,其在传输到一个分发以及上载到数据处理系统或者处理和存储单元之后,能够被执行。它能够是,例如,二进制代码、解释代码,等等。
·分发是包含目标表示的物理或者虚拟载体,所述分发必须被设置在用户的配置处以允许它们使用该软件。
·动态表示对应于软件从它的分发中的执行。
·一个软件的一部分对应于该软件某些部分而且能够,例如,对应于一条或者几条连续或者不连续的指令、和/或一个或者几个连续或者不连续的功能块、和/或一个或者几个函数、和/或一个或者几个子程序、和/或一个或者几个模块。一个软件的一部分还能够对应于所述软件的全部。
图10和11说明了分别为一般而言易受攻击软件2v和根据本发明的方法进行保护的受保护软件2p的各个表示。
图10说明了在它的生命周期期间显现的、易受攻击软件2v的各个表示。该易受攻击的软件2v因此能够以以下的任何表示显现·源表示2vs,·目标表示2vo,·分发2vd。所述分发能够通常具有诸如CDROM的物理分发介质的形式或者经由网络(GSM、Internet、等等)分发的文件的形式,·或者一个对应于易受攻击软件2v在一个任何已知类型的数据处理系统3上的执行的动态表示2ve,该数据处理系统3传统上包含至少一个处理器4。
图11说明了在它的生命周期期间显现的受保护软件2p的各个表示。受保护的软件2p因此能够以以下的任何表示显现·一个源表示2ps,包含第一源部分用于数据处理系统3以及第二源部分用于单元6,所述源部分中的一部分通常能够包含在普通文件中,·目标表示2po,包含用于数据处理系统3的第一目标部分2pos以及用于单元6的第二目标部分2pou,
·分发2pd,包含-包含第一目标部分2pos的第一分发部分2pds,所述第一分发部分2pds用于数据处理系统3而且其通常能够具有诸如CDROM的物理分发介质形式,或者经由网络(GSM、Internet、等等)分发的文件的形式,-以及第二分发部分2pdu,其具有形式 至少一个被预定制的单元66,其中第二目标部分2pou的一部分已经上载到该单元中,而且用户必须通过上载补充的数据以便获得单元6来为其完成定制,所述补充数据,例如通过经由网络下载获得, 或者至少一个单元6,其中第二目标部分2pou已经上载到该单元中,·或者对应于受保护软件2p的执行的动态表示2pe。所述动态表示2pe包含在数据处理系统3中执行的第一执行部分2pes和在单元6中执行的第二执行部分2peu。
在其中在受保护软件2p的不同表示之间的区别不是重要的情况中,应当使用表示受保护软件的第一部分和受保护软件的第二部分。
依据图11中的动态表示,依据本发明的方法的实现方案利用装置1p,其包含一个由链路5链接到单元6的数据处理系统3。数据处理系统3为任何类型而且,传统上包含至少一个处理器4。数据处理系统3能够是计算机或者是,例如在一般含义中各个机器、设备、固定或者移动产品、或者车辆中的部件。链路5能够以任何可能的方式实现,诸如例如串行链接、USB总线、无线电链路、光链路、网络链路或者到数据处理系统3电路的直接电连接、等等。应当看到单元6可以物理上可能位于和数据处理系统3中的处理器4相同的集成电路内部。在这种情况下,单元6可被认为是相对于数据处理系统3中的处理器4的协处理器而且链路5位于集成电路的内部。
图20到22以说明性且非限制的方式,显现了装置1p的各个实施例,该装置允许依据本发明的保护处理过程的实现。
在图20说明的实施例中,保护模块1p包含,一台计算机作为数据处理系统3,以及芯片卡,和通常称作读卡器的芯片卡7的接口8作为单元6。计算机3通过链接5链接到单元6。在受保护软件2p的执行期间,在计算机3中执行的第一执行部分2pes和在芯片卡7和它的接口8中执行的第二执行部分2peu必须都起作用以便受保护软件2p完全起作用。
在图21说明的实施例中,保护模块1p在一般含义上装备了产品9,产品9包含适合于由这样一个产品9设定的功能(多个)的各个部件10。保护模块1p,在一方面,包含嵌入在产品9中的数据处理系统3,以及在另一方面,包含与产品9相关联的单元6。为了产品9完全起作用,受保护软件2p必须完全起作用。因此,在受保护软件2p的执行期间,在数据处理系统3中执行的第一执行部分2pes和在单元6中执行的第二执行部分2peu必须都起作用。所述受保护软件2p因此间接地,允许防止产品9或者它的一个功能的未被授权使用。例如,产品9能够是装置、系统、机器、玩具、一个家庭用具、电话、等等。
在图22说明的实施例中,保护模块1p包含若干台计算机,以及通信网络的一部分。数据处理系统3是由网络类型的链接5链接到由第二台计算机构成的单元6的第一台计算机。对于本发明的实现来说,第二计算机6被用作用于受保护软件2p的许可服务器。在受保护软件2p的执行期间,在第一计算机3中执行的第一执行部分2pes和在第二计算机6中执行的第二执行部分2peu必须都起作用,以便使受保护的软件2p完全起作用。
图30更清楚地描述依据本发明的保护处理过程。应当看到易受攻击的软件2v被认为是完全在数据处理系统3中执行。在另一方面,在受保护软件2p的实现的情况中,数据处理系统3包含传输12,其由链接5链接到属于单元6的传输工具13,其能够在受保护软件2p的第一执行部分2pes和第二执行部分2peu之间建立通信。
必须考虑到传输模块12、13具有软件和/或硬件特性而且能够提供以及(可能地)优化在数据处理系统3和单元6之间的数据通信。所述传输模块12、13适合于能够具有供其使用的一个受保护软件2p,其更可取地是,与使用的链接5的类型无关。所述传输模块12、13不是本发明主题的一部分而且因为它们为本技术领域的人所熟知而不进行更精确的描述。受保护软件2p的第一部分包含若干命令。在受保护软件2p的执行期间,由第一执行部分2pes进行的所述命令的执行允许在第一执行部分2pes和第二执行部分2peu之间的通信。在描述的剩余部分中,所述命令由IN、OUT或者TRIG表示。
如图31中所示,为了允许实现受保护软件2p的第二执行部分2peu,单元6包含保护模块14。保护模块14包含存储模块15和处理模块16。
在本说明书其余部分中为了简化起见,选择考虑,在受保护软件2p的执行期间、单元6的存在或者单元6的不存在。实际上,每当受保护软件2p的执行不正确时,提供不适于受保护软件2p中的第二执行部分2peu的执行的保护模块14的单元6也被认为是缺失的。换句话说·一个物理上存在并且包含适于受保护软件2p中的第二执行部分2peu的执行的保护模块14的单元6,总是被认为是存在的,·一个物理上存在但是包含不适于、即不允许受保护软件2p中的第二执行部分2peu的正确实现的保护模块14的单元6,当它正确运行时被认为是存在的,而且当它没有正确运行时被认为是缺失的,
·以及一个物理上缺失的单元6总是被认为是缺失的。
在其中单元6由芯片卡7和它的接口8构成的情况中,传输模块13分为两个部分,一部分在接口8上而且另一部分在芯片卡7上。在这个实施例中,芯片卡7的不存在被认为是相当于单元6的不存在。换句话说说,在没有芯片卡7和/或它的接口8的情况下,保护模块14不可访问而且不允许受保护软件2p第二执行部分2peu的执行,以致受保护软件2p不完全起作用。
依据本发明,保护方法的目的在于实现一个称作《检测以及强制》的保护原理,将相对于图70到74对它进行描述。
为了实现通过检测以及强制进行保护的原理,定义·至少一个软件执行特征,其易于至少部分地在该单元6中被监控,·为至少一个软件执行特征定义要遵循的至少一个准则,·检测模块17,在单元6中实现而且能够检测至少一个软件执行特征没有遵循至少一个相关准则,·以及强制模块18,其在该单元6中实现而且能够在当至少一个准则没有被遵循时,通知数据处理系统3和/或修改软件的执行。
为了实现通过检测以及强制进行保护的原理,还构造了这样的利用模块,其允许把一个空白单元60转换成为一个至少实现了检测模块17和强制模块18的单元6。
图70说明了为实现通过检测和强制进行保护的这个原理所必需的装置。单元6包含检测模块17和属于处理模块16的强制模块18。检测模块17向强制模块18通知有一个准则没有被遵循。
更确切地说,检测模块17使用来自传输模块13和/或来自存储模块15和/或来自处理模块16的信息,以便监控一个或者几个软件执行特征。为每个软件执行特征设置至少要遵循一个准则。
在其中检测到至少一个软件执行特征没有遵循至少一个准则的情况中,检测模块17向强制模块18通知它。所述强制模块18适合于以适当方式修改单元6的状态。
为了实现通过检测以及强制进行保护的原理,还选择·在易于监控的软件执行特征当中选择至少一个软件执行特征来监控,·为至少一个选择的软件执行特征选择要遵循的至少一个准则,·在受易受攻击软件2vs的源中选择至少一个算法处理过程,将为该算法处理过程监控至少一个软件执行特征,·以及在易受攻击软件的源2vs中选择包含至少一个选择的算法处理过程的至少一部分。
然后修改易受攻击软件源2vs中的至少一个选择部分,以便获得受保护软件的源2ps。这个修改使得在受保护软件2p的执行期间,其中·在数据处理系统3中执行的第一执行部分2pes的至少一个部分考虑至少一个选择软件执行特征至少部分地在单元6中被监控,·以及在单元6中执行的第二执行部分2peu,至少部分地监控一个选择的软件执行特征。
在受保护软件2p的执行期间,在存在单元6时,由通过检测和强制进行保护的这个原理保护·只要对应于受保护软件2p所有修改部分中的所有监控的执行特征的所有准则被遵循,就允许受保护软件2p的所述修改部分标称运行,以便允许所述受保护软件2p标称运行,·以及如果对应于受保护软件2p一部分中的一个监控的执行特征的、至少一个准则没有被遵循,向数据处理系统3通知它和/或修改受保护软件2p中这部分的功能,以便修改受保护软件2p的功能。
自然地,在不存在单元6时,受保护软件2p的第一执行部分2pes的一部分对使用单元6的至少一个请求不能被正确地完成,以致至少所述部分没有正确地执行,而且因此,受保护软件2p没有完全起作用。
为了实现通过检测和强制进行保护的原理,更可取地是使用两个类型的软件执行特征。
第一类型的软件执行特征对应于软件执行的度量的变量,且第二个类型对应于软件使用的简要表。所述两种类型的特征能够独立地使用或者组合使用。
为了实现使用软件执行的度量的变量作为执行特征、通过检测和强制进行保护的原理,定义·在存储模块15中,存储至少一个用于量化软件中的至少一个功能的使用的度量的变量的可能性,·在检测模块17中,监控和每个度量的变量相关的至少一个阈值的可能性,·以及实现模块(actualization means),其允许取决于和每个度量的变量相关的功能的使用,更新该度量的变量。
还构造了利用模块(exploitation means),其除了实现检测模块17和强制模块18之外,还实现了该实现模块。还在易受攻击软件2vs的源中选择·受易受攻击软件2v的至少一个功能,其的使用易于使用一个度量的变量来监控,·用于量化所述功能使用的至少一个度量的变量,·至少一个和该度量的变量相关、对应于所述功能使用限制的阈值,·以及取决于所述功能的使用的、至少一种更新一个度量的变量的方法。
然后修改易受攻击软件的源2vs,以便获得受保护软件的源2ps,这个修改使得,在受保护软件2p的执行期间,第二执行2peu·取决于所述功能的使用实现该度量的变量,·以及考虑至少一个阈值跨越。
换句话说,在受保护软件2p的执行期间,取决于所述功能的使用更新该度量的变量,而且当阈值跨越时,检测模块17向强制模块18通知它,该强制模块18做出一个适应的决定来通知数据处理系统3和/或修改由处理模块16执行的处理过程,处理模块16允许修改受保护软件2p这部分的功能,以便修改受保护软件2p的功能。
为了实现使用度量的变量作为特征、通过检测和强制进行保护的原理第一最佳变体实施例,定义·为至少一个度量的变量,定义几个相关的阈值,·以及对应于所述阈值中的每一个的不同强制模块,还在易受攻击软件的源2vs中选择·用于量化软件的至少一个功能的使用而且必须和几个对应于所述功能使用的不同限制的阈值相关联的至少一个度量的变量,·以及至少两个和该度量的变量相关的阈值。
然后修改易受攻击软件的源2vs,以便获得受保护软件的源2ps,这个修改使得,在受保护软件2p的执行期间,第二执行部分2peu·取决于所述功能的使用实现该度量的变量,·以及,不同地考虑各个阈值的跨越。
换句话说,传统上,在受保护软件2p的执行期间,当第一个阂值被跨越时,单元6通知数据处理系统3,以命令受保护的软件2p不再使用所述功能。如果受保护的软件2p使用所述功能执行,第二阈值将可能被跨越。在其中第二阈值被跨越的情况中,强制模块18能够使选择的功能无效和/或使受保护的软件2p无效。
为了实现使用度量的变量作为特征、通过检测和强制进行保护的原理的第二最佳变体实施例,定义能够用至少一个附加的使用相信由一个度量的变量监控的至少一个软件功能的再装模块。
还构造了除了实现检测模块17、强制模块18和实现模块之外还实现了再装模块的利用模块。
还在易受攻击软件的源2vs中选择,用于限制软件至少一个功能的使用而且必须能够用至少一个附加的使用相信的至少一个度量的变量。
然后修改易受攻击软件的源2vs,以便获得受保护软件的源2ps,这个修改使得,在一个称作再装的阶段期间,能够相信对应于一个选择的度量的变量的至少一个功能的至少一个附加使用。
在再装的阶段期间,执行至少一个选择的度量的变量和/或至少一个相关阈值的重新实现,以便允许相应功能的至少一个附加使用。换句话说,有可能在再装的阶段期间,相信受保护软件2p至少一个功能的附加使用。
为了实现使用软件使用的简要表作为特征、通过检测和强制进行保护的原理,为所述使用的简要表定义了作为要遵循的准则的至少一个软件执行特征。
还在易受攻击软件的源2vs中选择·至少一个要监控的使用的简要表,·以及至少一个选择的使用的简要表必须要遵守的至少一个执行特征。
然后修改易受攻击软件的源2vs,以便获得受保护软件的源2ps,这个修改使得,在受保护软件2p的执行期间,第二执行部分2peu遵循所有选择的执行特征。换句话说,单元6本身监控第二执行部分2peu执行的方式而且能够在其中至少一个执行特征没有被遵循的情况中,通知数据处理系统3和/或修改受保护软件2p的功能。
在受保护软件2p的执行期间,在存在单元6时,由这个原理进行保护·只要受保护软件2p所有修改部分中的所有执行特征被遵循,受保护软件2p的所述修改部分标称运行,以便允许所述受保护软件2p标称运行,·以及如果受保护软件2p一部分中的至少一个执行特征没有被遵循,向数据处理系统3通知它和/或修改受保护软件2p中这部分的功能,以便修改受保护软件2p的功能。
可以考虑不同执行特征的监控,如同例如,监控包含一个标记的指令的存在或者监控用于该指令至少一部分的执行链接。
为了实现使用对用于这些指令至少一部分的执行链接的监控作为要遵循的执行特征、通过检测和强制进行保护的原理,定义·一个指令集,它的指令易于在单元6中执行,·用于所述指令集的一组指令命令,所述指令命令易于在数据处理系统3中执行。所述指令命令中的每一个在数据处理系统3中的执行触发相应指令在单元6中的执行,·允许检测该指令链接没有对应于期望链接的检测模块17,·以及当该指令链接没有对应于期望链接时,能够通知数据处理系统3和/或修改软件的执行的强制模块18。
还构造了这样的利用模块,其允许单元6还执行该指令集中的指令,所述指令的执行由指令命令在数据处理系统3中的执行触发。
还在易受攻击软件的源2vs中选择至少一个算法处理过程,其必须在单元6中被远程处理而且将为其监控这些指令至少一部分的链接。
然后修改易受攻击软件的源2vs,以便获得易受攻击软件的源2ps,这个修改使得在受保护的软件2p的执行期间·第二执行部分2peu至少执行选择算法处理过程的功能,·选择的算法处理过程被分为指令,·指定这样的链,其必须由至少一些指令在它们在单元6中执行的期间遵守,·以及保护软件2p的第一执行部分2pes执行触发这些指令在单元6中执行的指令命令。
在由这个原理保护的受保护软件2p在存在单元6时的执行期间·只要在单元6中执行的受保护软件2p的所有修改部分中的指令链接对应于期望链接,就允许受保护软件2p的所述修改部分标称运行,以便允许所述受保护软件2p标称运行,·而且如果在单元6中执行的受保护软件2p一部分中的指令链接没有对应于期望链接,则向数据处理系统3通知它和/或修改保护软件2p这部分的功能,以便修改受保护软件2p的功能。
图71说明了在其中期望的链被遵循的情况中,使用对这些指令至少一部分的执行链的监控作为要遵循的执行特征、通过检测和强制进行保护的原理实现的一个示例。
在数据处理系统3中执行的受保护软件2p的第一执行部分2pes执行指令命令CIi,其触发属于这个指令集的指令ii在单元6中的执行。在所述指令集中,这些指令中的至少一些每个都包含定义这些指令功能的一部分和能够验证用于这些指令执行的期望链接的一部分。在这个示例中,指令命令CIi用TRIG(ii)表示而且用于指令执行的期望链接是in、in+1和in+2。指令in在单元6中的执行给出结果a而且指令in+1的执行给出结果b。指令in+2使用指令in和in+1的结果的a和b作为操作数而且它的执行给出结果c。
考虑到在单元6中执行的所述指令链接对应于期望链接,它产生受保护软件2p的正常或者指定功能。
图72说明了在其中期望的链没有被遵循的情况中,使用对这些指令至少一部分的执行链的监控作为要遵循的执行特征、通过检测和强制进行保护的原理实现的一个示例。
依据这个示例,用于指令执行的期望链接仍然是in、in+1和in+2。然而,通过用指令i’n替换指令in来修改该执行链以致实际上执行的链是i’n、in+1和in+2。指令i’n的执行给出结果a,即和指令in的执行相同的结果。然而,在最后在指令in+2的执行期间,检测模块17检测到指令i’n没有对应于期望的指令,以产生用作指令in+2操作数的结果。检测模块17向强制模块18通知它,强制模块18因此修改指令in+2的功能,以便指令in+2的执行给出能够不同于c的结果c’。自然地,如果指令i’n的执行给与一个不同于指令in的结果的a的结果a’的话,显然指令in+2的结果也能够不同于c。
因为在单元6中执行的指令的执行链没有对应于期望链接,因此能够获得受保护软件2p的功能的一个修改。
图73和74说明了使用对指令至少一部分的执行链的监控作为要遵循的执行特征、通过检测和强制进行保护的原理的一个最佳变体实施例。依据这个最佳变体,定义了一个这样的指令集,其中的至少某些指令利用寄存器并且为了返回结果而使用至少一个操作数。
如在图73中所示,为至少一些用寄存器运行的指令定义一个部分PF,其定义了指令的功能,以及一个部分PE,其定义了用于指令执行的期望的链。部分PF对应于由本技术领域的人员所知的操作码。定义期望链接的部分PE包含若干个位字段,它们对应于·指令CII的标识字段,·以及为指令中的每个操作数k,k从1到K变化,以及该指令中K个数量的操作数
-标记字段CDk,指示它是否适于验证操作数k的来源,-以及操作数的期望标识字段CIPk,指示已经产生了操作数k内容的指令的期望身份。
如在图74中说明的那样,指令集包含属于处理模块16的V个寄存器,每个寄存器都被叫做Rv,v从1到V变化。为每个寄存器Rv定义两个字段,即·功能字段CFv,其由本技术领域人员所知,并且能够存储指令的执行结果,·以及一个产生的标识字段CIGv,其能够存储已经产生了功能字段CFv的内容的指令标识。所述产生的标识字段CIGv自动地用已经产生了功能字段CFv的指令CII的标识字段的内容更新。所述产生的标识字段CIGv既不由任何指令访问,又不可由它们修改,而且仅仅用于检测模块17。
在指令的执行期间,检测模块17为每个操作数k执行以下操作-读取标记字段CDk,-如果标记字段CDk使用了它,则读取期望的标识字段CIPk和对应于由操作数k使用的寄存器的、产生的标识字段CIGv,-检查两个字段CIPk和CIGv的等同性,-而且如果等同性是错误的,则检测模块17认为指令的执行链没有被遵循。
强制模块18能够在当检测模块17已经向它们通知指令链接没有被遵循时,修改指令的结果。通过修改当前执行指令的功能部分PF或者后继指令的功能部分PF来执行最佳实施例。
依据本发明的另一个有利特征,保护处理过程的目的在于实现一个称作“变量”的保护原理,将相对于图40到43对它进行一个描述。
对于由变量进行保护的原理的实现方案,在易受攻击软件的源2vs中选择至少一个变量,其在该易受攻击软件2v的执行期间,部分地定义它的状态。按照软件的状态,必须理解在一个给定时刻,该由若干条信息构成的组为所述软件的完整执行所必须,以致于这样一个选择的变量的不存在会损害所述软件的完整执行。还选择包含至少一个选择的变量的易受攻击软件源中2vs的至少一部分。
然后修改易受攻击软件源2vs中的至少一个选择部分,以便获得受保护软件的源2ps。这个修改使得在受保护软件2p的执行期间,在数据处理系统3中执行的第一执行部分2pes的至少一个部分考虑到至少一个选择的变量或者选择变量的至少一个拷贝驻留在单元6中。
图40说明了一个易受攻击软件2v的执行的一个示例。在这个示例中,在易受攻击的软件2v在数据处理系统3中执行期间,显现·在时刻t1处,向变量V1分配数据X,这由V1←X表示,·在时刻t2处,显现变量V1的值向变量Y的分配,这由Y←V1表示,·以及在时刻t3处,向变量Z分配变量V1的值,这由Z←V1表示。
图41说明了本发明实现方案的第一形式的一个示例,对于本发明,变量驻留在单元6中。在这个示例中,在受保护软件2p的第一执行部分2pes在数据处理系统3中执行期间以及在存在单元6时,显现·在时间t1处,传输命令的执行,其触发数据X从数据处理系统3到位于单元6的存储模块15中的变量v1的传输,所述传输命令由OUT(v1,X)表示,而且最终对应于数据X向变量v1的分配,·在时间t2处,传输命令的执行,其触发驻留在单元6中的变量v1的值向数据处理系统3的传输,以便把它分配给变量Y,所述传输命令由IN(v1)表示,而且最终对应于变量v1的值向变量Y的分配,
·以及在时刻t3处,传输命令的执行,其触发驻留在单元6中的变量v1的值到数据处理系统3的传输,以便把它分配给变量Z,所述传输命令由IN(v1)表示而且最终对应于变量v1的值向变量Z的分配。
应当看到,在受保护软件2p的执行期间,至少一个变量驻留在单元6中。因此,当受保护软件2p的第一执行部分2pes的一部分使用它时,以及在存在单元6时,驻留在单元6中的所述变量的值被传输到数据处理系统3,以由受保护软件2p的第一执行部分2pes使用,以致于所述部分被正确地执行,而且因此,受保护的软件2p完全地起作用。
图42说明了本发明实现方案的第二形式的一个示例,对于本发明,变量的一个拷贝驻留在单元6中。在这个示例中,在受保护软件2p的第一执行部分2pes在数据处理系统3中执行期间,以及在存在单元6时,显现·在时间t1处,数据X向位于数据处理系统3中的变量V1的分配,以及传输命令的执行,该命令触发数据X从数据处理系统3到位于单元6的存储模块15中的变量v1的传输,所述传输命令由OUT(v1,X)表示,·在时刻t2处,显现变量V1的值向变量Y的分配,·以及在时刻t3处,显现传输命令的执行,其触发驻留在单元6中的变量v1的值到数据处理系统3的传输,以便向变量Z改变它,所述传输命令由IN(v1)表示。
应当看到,在受保护软件2p的执行期间,一个变量的至少一个拷贝驻留在单元6中。因此,当受保护软件2p的第一执行部分2pes的一部分使用它时,以及在存在单元6时,驻留在单元6中的所述变量拷贝的值被传输到数据处理系统3,以由受保护软件2p的第一执行部分2pes使用,以致所述部分被正确地执行,而且因此,受保护的软件2p完全地起作用。
图43说明了当单元6不存在时,试图执行受保护软件2p的一个示例。在这个示例中,在受保护软件2p的第一执行部分2pes在数据处理系统3中执行期间·在时间t1处,考虑到单元6的不存在,传输命令OUT(v1,X)的执行不能触发数据X到变量v1的传输,·在时间t2处,考虑到单元6的不存在,传输命令IN(v1)的执行不能触发变量v1的值到数据处理系统3的传输,·以及在时间t3处,考虑到单元6的不存在,传输命令IN(v1)的执行不能触发变量v1的值到数据处理系统3的传输。
因此在不存在单元6时,显现出第一执行部分2pes中的一部分对使用驻留在单元6中的一个变量或者一个变量拷贝的至少一个请求不能正确地完成,所以至少所述部分没有正确地执行,而且因此,受保护的软件2p没有完全地起作用。
应当看到在先前示例中说明的、在数据处理系统3和单元6之间的数据传输仅仅使用了简单的分配,但是本领域的技术人员将了解如何把它们和其他操作组合以获得复杂的操作,诸如例如OUT(v1,2*X+3)或者Z←(5*v1+v2)。
依据本发明的另一个有利特征,保护处理过程的目的在于实现一个称作“重命名”的保护原理,将参照图80到85对它进行描述。
为了实现通过重命名进行保护的原理,定义·一组相关函数,其中的相关函数易于借助于第二执行部分2peu在单元6中执行,而且可能地在数据处理系统3和单元6之间传输数据,所述相关函数组能够是有限或者无限的,·一组用于所述相关函数的触发命令,所述触发命令易于在数据处理系统3中执行以及易于触发相应的相关函数在单元6中的执行,
·为每个触发命令(triggering command),定义一个次序(order),其至少部分地对应于由第一执行部分2pes传输到第二执行部分2peu的信息,以便触发相应相关函数的执行,所述次序具有触发命令的至少一个变元的形式,·一种重命名被设计为在易受攻击软件2v的修改期间使用的次序的方法,这样一种方法能够重命名这些次序以便获得具有重命名的次序的触发命令,这些重命名的次序能够隐藏相应相关函数的身份,·以及恢复模块20,其被设计成在使用阶段期间在该单元6中使用,而且能够从重命名的次序中恢复初始次序,以便恢复要执行的相关函数。
为了实现通过重命名进行保护的原理,还构造了这样的利用模块,其能够把一个空白单元60转换成为一个至少实现了恢复模块20的单元6。
为了实现由重命名进行保护的原理,还在易受攻击软件的源2vs中选择·使用至少一个操作数并且返回至少一个结果的至少一个算法处理过程,·以及包含至少一个选择的算法处理过程的、易受攻击软件2vs源中的至少一部分。
然后修改易受攻击软件的源2vs,以便获得受保护软件的源2ps。这个修改使得,其中·在受保护软件2p的执行期间,在数据处理系统3中执行的第一执行部分2pes的至少一个部分考虑到至少一个选择的算法处理过程的功能在单元6中执行,·在受保护软件2p的执行期间,在单元6中执行的第二执行部分2peu至少执行至少一个选择的算法处理过程的功能,
·拆分每个选择的算法处理过程以便在受保护软件2p的执行期间,每个选择的算法处理过程,借助于第二执行部分2peu,使用相关函数执行。更可取地是,每个选择的算法处理过程被分为相关函数fdn(n从1变化到N),即-可能的一个或者几个相关函数,允许设置一个或者几个操作数供单元6的使用,-相关函数,其中的一些使用这些操作数(多个)而且使用所述操作数(多个)一起执行选择的算法处理过程的功能,-以及可能地,一个或者几个相关函数,能够由单元6设置选择的算法处理过程的结果供数据处理系统3使用,·在受保护软件2p的执行期间,第二执行部分2peu执行相关函数fdn,·在受保护软件2p的执行期间,相关函数由具有重命名次序的触发命令触发,·以及在允许受保护软件2p执行的序列集合当中选择一个触发命令序列。
在数据处理系统3中执行的受保护软件2p中的第一执行部分2pes执行具有重命名次序的触发命令,它们传输重命名次序到单元6,并且借助于恢复模块20在单元6中触发命令的恢复,然后借助于第二执行部分2peu执行每一个先前定义的相关函数fdn。
换句话说,通过重命名进行保护的原理通过重命名触发命令的次序执行,以便获得在数据处理系统3中执行、具有重命名次序的触发命令,在单元6中触发将已经由具有未重命名次序的触发命令触发的相关函数的执行,但是不用进行能够确定执行的相关函数身份的、对受保护软件2p的检查。
图80说明了一个易受攻击软件2v的执行的一个示例。在这个示例中,在易受攻击软件2v在数据处理系统3中的执行期间,在某个时刻处,显现对应于向变量Z分配由函数F表示并且使用操作数X和Y的算法处理过程结果的Z←F(X,Y)的计算。
图81和82说明了本发明实现方案的一个示例。
图81说明了本发明的部分实现方案。在这个示例中,在受保护软件2p的第一执行部分2pes在数据处理系统3中执行期间以及在存在单元6时,显现·在时刻t1、t2处,触发命令CD1、CD2的执行,它们触发在单元6中,相应相关函数fd1、fd2借助于第二执行部分2peu的执行,这些相关函数提供了数据X,Y从数据处理系统3到位于单元6的存储模块15中的各个存储区域x、y的传输,所述触发命令CD1、CD2分别由OUT(x,X),OUT(y,Y)表示,·在时间t3到tN-1处,触发命令CD3到CDN-1的执行,它们触发在单元6中,相应基本函数fd3到fdN-1借助于第二执行部分2peu的执行,所述触发命令CD3到CDN-1分别由TRIG(fd3)到TRIG(fdN-1)表示。一起执行的一系列相关函数fd3到fdN-1在算法上相当于函数F。更确切地说,所述触发命令的执行导致单元6中相关函数fd3到fdN-1的执行,它们使用存储区域x,y的内容并且在单元6的存储区域z中返回结果,·以及在时刻tN处,显现触发命令CDN的执行,其触发在单元6中,相关函数fdN借助于第二执行部分2peu的执行,该相关函数提供了包含在单元6的存储区域z中的、算法处理过程的结果到数据处理系统3的传输,以便把它分配给变量Z,所述命令由IN(z)表示。
在这个示例中,为了完全实现本发明,选择触发命令OUT的第一个变元和触发命令TRIG和IN的变元作为次序。以这种方式选择的次序使用次序重命名的方法进行重命名。用这样的方式,触发命令CD1到CDN的次序,即x、y、fd3、fdN-1、z被重命名以便分别获得R(x)、R(y)、R(fd3)...、R(fdN-1)、R(z)。
图82说明了本发明的完整实现方案。在这个示例中,在受保护软件2p的第一执行部分2pes在数据处理系统3中执行期间,以及在存在单元6时,显现·在时间t1、t2处,具有重命名次序的触发命令CDCR1、CDCR2的执行,它们把重命名次序R(x)、R(y)以及数据X、Y传输到单元6,在单元6中触发重命名次序借助恢复模块20的恢复以恢复次序,即存储区域x、y的标识,然后借助于第二执行部分2peu,执行相应的相关函数fd1、fd2,这些函数提供数据X、Y从数据处理系统3到位于单元6的存储模块15中的各个存储区域x、y的传输,所述具有重命名次序CDCR1、CDCR2的触发命令分别由OUT(R(x)、X)、OUT(R(y)、Y)表示,·在时刻t3到tN-1处,具有重命名次序的触发命令CDCR3到CDCRN-1的执行,它们把重命名次序R(fd3)到R(fdN-1)传输到单元6,在单元6中触发命令,即fd3到fdN-1借助于恢复模块20的恢复,然后借助于第二执行部分2peu执行相关函数fd3到fdN-1,所述具有重命名次序的触发命令CDCR3到CDCRN-1分别由TRIG((fd3))到TRIG(R(fdN-1))表示,·以及在时间tN处,显现具有重命名次序的触发命令CDCRN的执行,其向单元6传输重命名次序R(z)(其在单元6中借助于恢复模块20的触发次序的恢复),即存储区域z的标识,然后借助于第二执行部分2peu执行相关函数fdN,其提供了包含在单元6的存储区域z中的算法处理过程结果到数据处理系统3的传输,以便把它分配给变量Z,所述具有重命名次序的触发命令CDCRN由IN(R(z))表示。
在说明的示例中,具有重命名次序1到N的触发命令被连续地执行。应当看到能够实施两个改进·第一个改进涉及其中几个算法处理过程在单元6中被远程处理而且至少一个算法处理过程的结果由另一个算法处理过程使用的情况。在这种情况下,某些用于传输、具有重命名次序的触发命令可能能够被除去。
·第二改进的目的在于在允许受保护软件2p执行的序列集合当中选择一个具有重命名次序的触发命令的相关序列。在这方面,更可取的是选择这样的一个具有重命名次序的触发命令序列,其通过在相关函数之间插入在数据处理系统3中执行的部分代码以及包含或者不包含用于确定其他数据的、具有重命名次序的触发命令来临时地离解这些相关函数的执行。图83和84说明了这样一个实施例的原理。
图83显现了一个易受攻击软件2v的执行的一个示例。在这个示例中,在易受攻击软件2v在数据处理系统3中执行期间,显现两个导致Z和Z‘的确定的算法处理过程的执行,诸如Z←F(X,Y)以及Z’←F’(X’,Y’)。
图84说明了依据本发明的方法实现的一个示例,对于本发明,在图83中选择的算法处理过程在单元6中被远程处理。依据这样一个示例,在受保护软件2p的第一执行部分2pes在数据处理系统3中的执行期间,以及在存在单元6时,如上面所述的那样,显现对应于Z的确定的、具有重命名次序的触发命令CDCR1到CDCRN的执行,以及对应于Z’的确定的、具有重命名次序的触发命令CDCR’1到CDCR’M的执行。如说明的那样,具有重命名次序的触发命令CDCR1到CDCRN没有被连续地执行,这是因为具有重命名次序的触发命令CDCR’1到CDCR’M以及其他部分代码被插入了。在这个示例中,因此执行以下序列CDCR1、部分插入的代码、CDCR’1、CDCR2、部分插入的代码、CDCR’2、CDCR’3、部分插入的代码、CDCR’4、CDCR3、CDCR4、...、CDCRN、CDCR’M。
应当看到在受保护软件2p的第一执行部分2pes的一部分执行期间,具有重命名次序的触发命令在数据处理系统3中执行,触发在单元6中相应相关函数的标识的恢复以及然后它们的执行。因此,在存在单元6时,显现出所述部分被正确地执行,以及因此,受保护的软件2p完全地起作用。
图85说明了当单元6不存在时,试图执行受保护软件2p的一个示例。在这个示例中,在受保护软件2p的第一执行部分2pes在数据处理系统3中执行期间,在每个时刻处,由于不存在单元6,一个具有重命名次序的触发命令的执行即不能触发命令的恢复也不能触发相应相关函数的执行。分配给变量Z的值因此不能被正确地确定。
因此,在不存在单元6时,显现出受保护软件2p的第一执行部分2pes的一部分对在单元6中触发一个次序的恢复以及执行相关函数的至少一个请求不能被正确地完成,以致至少所述部分没有被正确地执行,而且因此,受保护软件2p没有完全起作用。
由于由重命名进行保护的这个原理,在受保护软件2p中对具有重命名次序的触发命令的检查不能确定必须在单元6中执行的相关函数的标识。应当看到次序的重命名在易受攻击的软件2v到受保护软件2p的修改期间执行。
依据通过重命名进行保护的原理的一个变体,为至少一个相关函数定义一系列相关函数,它们在算法上等效但是由不同的具有重命名次序的触发命令触发。依据这个变体,对于至少一个使用相关函数的算法处理过程,所述算法处理过程被分为几个相关函数,它们中的至少一个用同一系列的相关函数替换而不是保持相同相关函数的几次出现。为此,修改具有重命名次序的触发命令以考虑用同属于一个系列的相关函数替换相关函数。换句话说,同属于一个系列的两个相关函数具有不同的次序而且因此具有不同的、具有重命名次序的触发命令,而且不可能通过检查受保护的软件2p,来发现在算法上等效的相关函数的调用。
依据通过重命名进行保护原理变体的第一最佳实施例,通过把一个噪声字段连接到定义要在单元6中执行的相关函数的功能部分的信息,为至少一个相关函数定义一系列算法上等效的相关函数。
依据通过重命名进行保护原理变体的第二最佳实施例,通过使用标识字段为至少一个相关函数定义一系列算法上等效的相关函数。
依据通过重命名进行保护原理的一个最佳变体实施例,把一种能够加密次序(order)以把它们转换成为重命名次序的加密方法定义为重命名次序的方法。记住次序的重命名在保护阶段P期间执行。对于这个最佳变体,恢复模块20是这样一个装置,其实现了一种能够解密重命名次序并且因此恢复要在单元6中执行的相关函数的身份的解密方法。所述恢复模块在单元6中实现并且能够具有软件或者硬件的特性。在使用阶段U期间每当具有重命名次序的触发命令在数据处理系统3中执行,并以在单元6中触发相关函数的执行为目的时,所述恢复模块20是需要的。
依据本发明的另一个有利特征,保护处理过程的目的在于实现一个称作“条件分支”的保护原理,将相对于图90到92对它进行描述。
为了实现由条件分支进行保护的原理,在易受攻击软件的源2vs中选择至少一个条件分支BC。还选择包含至少一个选择的条件分支BC的易受攻击软件源2vs中的至少一部分。
然后修改易受攻击软件源2vs中的至少一个选择部分,以便获得受保护软件的源2ps。这个修改使得,在受保护软件2p的执行期间,其中·在数据处理系统3中执行的第一执行部分2pes的至少一个部分考虑在单元6中执行的至少一个选择条件分支BC的功能,·以及在单元6中执行的第二执行部分2peu至少执行至少一个选择条件分支BC的功能,并且设置一条允许第一执行部分2pes在选择点处继续它的执行的信息,供数据处理系统3使用。
在数据处理系统3中执行的受保护软件2p中的第一执行部分2pes执行条件分支命令,触发在单元6中、远程处理的条件分支借助于第二执行部分2peu的执行,该远程处理的条件分支的功能相当于选择的条件分支BC的功能。
图90说明了一个易受攻击软件2v的执行的一个示例。在这个示例中,,在易受攻击软件2v在数据处理系统3中执行期间,在某个时间时刻处显现了一个向易受攻击的软件2v指示继续它的执行的地点的条件分支BC,这些地点即,三个可能的地点B1、B2、或者B3中的一个。必须理解条件分支BC进行在地点B1、B2或者B3处继续软件执行的决断。
图91说明了本发明实现的一个示例,对于本发明,对应于条件分支BC,为其选择对单元6远程处理的条件分支。在这个示例中,在受保护软件2p的第一执行部分2pes在数据处理系统3中执行期间以及在存在单元6时,显现·在时刻t1处,条件分支命令CBC1的执行,其触发在单元6中远程处理条件分支借助于第二执行部分2peu的执行,该条件分支在算法上相当于条件分支BC,所述条件分支命令CBC1由TRIG(bc)表示,·以及在时刻t2处,从单元6到数据处理系统3的信息传输,该信息允许第一执行部分2pes在选择的地点处继续它的执行,这个地点即地点B1、B2或者B3。
应当看到在受保护软件2p的第一执行部分2pes的一部分执行期间,在数据处理系统3中执行的条件分支命令触发对应的远程处理条件分支在单元6中的执行。因此,在存在单元6时,显现出所述部分被正确地执行,以及因此,受保护的软件2p完全地起作用。
图92说明了当单元6不存在时,试图执行受保护软件2p的一个示例。在这个示例中,在受保护软件2p的第一执行部分2pes在数据处理系统3中执行期间·在时刻t1处,考虑到单元6的不存在,条件分支命令CBC1的执行不能触发远程处理的条件分支bc的执行,·以及在时间t2处,考虑到单元6的不存在,允许第一执行部分2pes在选择的地点处继续执行的这个信息的传输失败了。
因此在不存在单元6时,显现出第一执行部分2pes中的一部分对触发在单元6中执行远程处理的条件分支的至少一个请求不能正确地完成,所以至少所述部分没有正确地执行,而且因此,受保护的软件2p没有完全地起作用。
在先前相对于图90到92的描述中,本发明的主题目的在于在单元6中远程处理一个条件分支。自然地,本发明的一个最佳实施例能够通过在单元6远程处理的一系列条件分支来执行,这些条件分支的整体功能相当于所有已经被远程处理的条件分支的功能。所述远程处理的条件分支系列的整体功能的执行导致设置一条信息供数据处理系统3使用,该信息允许受保护软件2p的第一执行部分2pes在选择的地点处继续它的执行。
在先前相对于图40到92进行的描述中,已经明确地构造了一般而言彼此无关的四种不同的软件保护原理。依据本发明的保护处理过程,通过使用通过检测和强制进行保护的原理实现,可能和一个或者几个其他的保护原理相结合。在其中通过检测和强制进行保护的原理由至少另一个保护原理的实现补充的情况中,通过检测和强制进行保护的原理有利地由通过变量进行保护的原理和/或通过重命名进行保护的原理和/或通过条件分支进行保护的原理补充。
而且当还实现了通过重命名进行保护的原理时,它能够接着由通过条件分支进行保护的原理补充。
依据最佳变体实施例,通过检测和强制进行保护的原理由通过变量进行保护的原理以及通过重命名进行保护的原理补充,通过重命名进行保护的原理由通过条件分支进行保护的原理补充。
在其中为了补充通过检测以及强制进行保护的原理而应用一种保护原理的情况中,考虑到它的组合实现,它的先前执行描述必须包含以下修改·易受攻击软件的概念必须被理解为易受被描述的保护原理攻击的软件。因此,在其中一种保护原理早已经应用到易受攻击软件的情况中,表示“易受攻击软件”必须由读者解释为表示“由早已应用的保护原理(多个)保护的软件”;·受保护软件的概念必须被理解为由被描述的保护原理保护的软件。因此,在其中一种保护原理早已经应用的情况中,表示“受保护的软件”必须由读者解释为表示“受保护软件的新版本”;·而且为被描述的保护原理实现构造的选择(多个)必须考虑为早已应用的保护原理(多个)的实现构造的选择(多个)。
剩下的描述允许具有对依据本发明的保护处理过程的实现的一个更好理解。这个依据本发明的保护处理过程,更确切地说如图100所示,由下面部分组成·首先,是保护阶段P,在该步骤期间易受攻击的软件2v被修改以变为受保护的软件2p,·然后,是使用阶段U,在该步骤期间使用受保护的软件2p。在这个使用阶段U期间-在存在单元6以及每当在数据处理系统3中执行的第一执行部分2pes的一部分利用它时,在单元6中执行一个利用的功能,以便所述部分被正确地执行,以及因此,受保护软件2p完全起作用,-以及在没有单元6而且尽管有第一执行部分2pes中的一部分对在单元6中执行一个条件分支的请求时,所述请求不能被正确地满足,以致至少所述部分不被正确地执行,而且因此,受保护软件2p没有完全起作用。
·以及可能的再装的阶段R,在该步骤期间相信这样一个功能的至少一个附加使用,该功能由使用一个度量的变量作为特征、通过检测和强制进行保护原理的第二最佳变体实施例的实现保护。
保护阶段P能够被分为两个保护子阶段P1和P2。第一个,称作在前保护子阶段P1,其独立于要保护的易受攻击软件2v而进行。第二个是,称作后续保护子阶段P2,其和要保护的易受攻击软件2v相关。应当看到在前保护子阶段P1和后续保护子阶段P2能够有利地由两个不同的人员或者两个不同的团队的执行。例如,在前保护子阶段P1能够由提供软件保护系统开发的人员或者公司执行,而后续保护子阶段P2能够由提供要保护软件开发的人员或者公司执行。自然地,显然在前保护子阶段P1和后续保护子阶段P2还能够由同一个人员或者团队执行。
在前保护子阶段P1由几个段S11、...、S11组成,将在每个段中执行各个不同的任务或者作业。
这个在前保护子阶段P1的第一阶段被称作“定义级S11”。在这个定义级S11期间·选择-单元6的类型。作为一个说明性示例,能够选择芯片读卡器8和和该读卡器相关联的芯片卡7作为单元6,-以及被设计为在使用阶段U期间分别在数据处理系统3和单元6中实现,并且能够提供在数据处理系统3和单元6之间的数据传输的传输模块12、13,·定义-至少一个软件执行特征,其易于至少部分地在单元6中监控,
-为至少一个软件执行特征定义要遵循的至少一个准则,-检测模块17,在单元6中实现而且能够检测至少一个软件执行特征没有遵循至少一个相关准则,-以及强制模块18,其在一个单元6中实现而且能够当至少一个准则没有被遵循时,通知该数据处理系统3和/或修改软件的执行,·以及在其中依据本发明的保护处理过程实现使用软件执行的度量的变量作为特征、通过检测和强制进行保护的原理的情况中,还定义-一个软件功能使用的度量的变量,作为易于监控的软件执行特征,-至少一个和每个度量的变量相关的阈值,作为要遵循的准则,-以及能够更新至少一个度量的变量的实现模块,·以及在其中依据本发明的保护处理过程还实现了使用软件执行的一个度量的变量作为特征、通过检测和强制进行保护的原理的一个第一最佳变体实施例的情况中,还定义-为至少一个度量的变量,定义几个相关的阈值,-以及对应于所述阈值中的每一个的不同强制模块,·以及在其中依据本发明的保护处理过程实现了使用软件执行的度量的变量作为特征、通过检测和强制进行保护原理的第二最佳变体实施例的情况中,还定义了这样的再装模块,其能够添加至少一个附加的使用到由一个度量的变量监控的至少一个软件功能中,·以及在其中依据本发明的保护处理过程实现使用软件使用的简要表作为特征、通过检测和强制进行保护的原理的情况中,还定义
-一个软件使用的简要表,作为易于监控的软件执行特征,-以及至少一个软件执行特征,作为要遵循的准则,·以及在其中依据本发明的保护处理过程实现使用对执行链接的监控作为要遵循的执行特征、通过检测和强制进行保护的原理的情况中,还定义-一个指令集,它的指令易于在单元6中执行,-一组用于所述指令集的指令命令,所述指令命令易于在该数据处理系统3中执行以及易于触发该指令在单元6中的执行,-指令链接,作为使用的简要表,-一个用于这些指令执行的期望链接,作为执行特征,-能够检测该指令链接没有对应于期望链接的模块,作为检测模块17,-以及能够在当该指令链接没有对应于期望链接时通知数据处理系统3和/或修改该受保护软件2p中的部分的功能的模块,作为强制模块18,·以及在其中依据本发明的保护处理过程实现了使用对执行链的监控作为要遵循的执行特征、通过检测和强制进行保护的原理的一个最佳变体实施例的情况中,还定义了-一个这样的指令集作为指令集,其中的至少某些指令利用寄存器工作并且为了返回结果的目的而使用至少一个操作数,-为至少一些利用寄存器工作的指令,定义 定义该指令功能的一个部分PF, 以及定义一个用于该指令执行的期望链接并且包含对应于下列部分的位字段的部分◇指令CII的标识字段,◇以及为该指令的每个操作数定义*一个标记字段CDk,
*以及操作数的一个期望标识字段CIPk,-为每个属于该利用模块并且由指令集使用的寄存器,定义一个产生的标识字段CIGV,其中自动地存储已经在所述寄存器中返回它的结果的最近指令的标识,-定义这样的模块作为检测模块17,该模块允许在一个指令的执行期间,当标记字段CDk使用操作数时,为每个操作数检查对应于由所述操作数使用的寄存器的产生标识字段CIGv和所述操作数来源的期望标识字段CIPk的等同性,-以及定义这样的模块作为强制模块18,该模块能够在如果检查了的至少一个等同性是错误时修改指令的结果。
·以及在其中依据本发明的保护处理过程实现通过重命名进行保护的原理的情况中,还定义-一个指令命令,作为触发命令,-一个指令作为相关函数,-至少一个用于触发命令的变元,作为一个次序,该次序至少部分地对应于由数据处理系统3传输到单元6、以便触发相应相关功能的执行的信息,-一种重命名这些次序的方法,其能够重命名这些次序以便获得具有重命名次序的触发命令,-以及恢复模块20,其被设计成在使用阶段U期间在单元6中使用,而且允许从重命名次序中恢复要执行的相关功能,·以及在其中依据本发明的保护处理过程实现通过重命名进行保护原理的一个变体的情况中,还为至少一个相关函数定义一系列的相关函数,它们在算法上是等效的,但是由重命名次序不同的触发命令所触发。
·以及在其中依据本发明的保护处理过程实现了通过重命名进行保护原理变体的一个最佳实施例的情况中,还通过以下方式为至少一个相关函数定义一系列算法上等效的相关函数-通过把一个噪声字段连接到定义要在单元6中执行的相关函数中的功能部分的信息,-或者通过使用该指令的标识字段CII以及操作数的期望标识字段CIPk。
·以及在其中依据本发明的保护处理过程实现了通过重命名进行保护的原理的一个最佳变体的情况中,还定义-一种加密次序的加密方法,作为重命名次序的方法,-以及作为恢复模块20的模块,其实现了一种解密方法来解密重命名次序以及因此恢复要在单元6中执行的相关函数的身份。
在在前保护子阶段P1期间,定义级S11后面继之以一个称作“构造级S12”的阶段。在这样的一个阶段S12期间,构造输送工具12、13以及可能地、对应于定义级S11中的定义的利用模块。
在这个构造级S12期间,因此执行·输送工具12、13的构造,这些装置在使用阶段U期间,能够在数据处理系统3和单元6之间传输数据,·构造-利用模块,其允许单元6在使用阶段U期间,还实现检测模块17和强制模块18,-以及可能地利用模块,其允许单元6在使用阶段U期间还实现该实现模块,-以及可能地,利用模块,其允许单元6在使用阶段U期间还实现替换装置,-以及可能地,利用模块,其还允许单元6在使用阶段U期间执行指令集中的指令,·以及当还实现了通过重命名进行保护的原理时,利用模块的构造还允许单元6在使用阶段U期间还实现恢复模块。
利用模块的构造传统上通过一个程序开发单元执行,而且还考虑了在定义级S11中涉及的定义。这样一个单元在图110的剩余描述中进行了描述。
在在前保护子阶段P1期间,构造级S12后面继之以一个称作“预定制级S13”的阶段。在这个预定制级S13期间,以获得至少一个预定制单元66为目的,输送工具13和/或利用模块的至少一部分被上载到至少一个空白单元60中。应当看到部分利用模块,一旦被传输到预定制单元66中之后,不再可由所述预定制单元66外部直接访问。利用模块到空白单元60的传输能够通过一个修改的预定制单元执行,该单元将在图120的剩余描述中进行描述。在预定制单元66由芯片卡7和它的读卡器8构成的情况中,预定制仅仅涉及芯片卡7。
在在前保护子阶段P1期间,在定义级S11之后以及,可能地在构造级S12之后,能够进行一个称作“工具构造级S14”的阶段。在这个工具构造级S14期间,构造能够帮助产生保护软件或者自动化软件保护的工具。这样的工具能够·在要保护的易受攻击软件2v中帮助选择或者自动地选择-要监控的执行特征(多个),以及可能地,易于分为可在单元6中远程处理的指令的算法处理过程(多个),-易于修改的部分(多个),-以及当还实现了通过变量进行保护的原理时,易于远程处理在单元6中的变量(多个),-以及当还实现了通过重命名进行保护的原理时,易于被分为在单元6中远程处理的相关函数以及用于它的触发命令中的次序能够被重命名的算法处理过程(多个),-以及当还实现了通过条件分支进行保护的原理时,条件分支(多个),它们的功能易于在单元6中被远程处理,·以及,可能地,帮助产生受保护的软件或者自动化软件的保护。
这些不同的工具能够独立地执行或者组合起来执行,而且每个工具能够具有不同的形式,诸如例如预处理器、汇编器、编译器、等等。
在前保护子阶段P1后面继之以一个后续保护子阶段P2,其取决于要保护的易受攻击软件2v。这个后续保护子阶段P2同样由几个阶段组成。第一阶段被称作“创建级S21”,其对应于通过检测以及强制进行保护的原理的实现。在这个创建级S21期间,使用在定义级S11期间构造的选择。借助于所述选择以及可能地、在工具构造级S14期间构造的工具,通过以下方式创建受保护的软件2p·在易于监控的软件执行特征当中选择要监控的至少一个软件执行特征,·为至少一个选择的软件执行特征选择要遵循的至少一个准则,·选择至少一个算法处理过程,其在易受攻击软件2v的执行期间使用至少一个操作数而且能够获得至少一个结果,而且将为其监控至少一个选择的软件执行特征,·以及选择包含至少一个选择的算法处理过程的易受攻击软件源2vs中的至少一部分,·从易受攻击软件的源2vs中通过修改易受攻击软件源2vs的至少一个选择部分以获得受保护软件源2ps的至少一个修改部分来产生受保护软件的源2ps,这个修改使得-在受保护软件2p的执行期间,第一执行部分2pes在数据处理系统3中执行,而且第二执行部分2peu在一个从在信息上载之后的空白单元60中获得的单元6中执行,-第二执行部分2peu至少执行至少一个选择算法处理过程的功能,
-以及在受保护软件2p的执行期间,借助于第二执行部分2peu监控至少一个选择的执行特征而且一个准则没有被遵循的事实导致对受保护软件2p的执行的修改,·以及产生-从受保护软件的源2ps中产生受保护软件2p的第一个目标部分2pos,所述第一目标部分2pos使得在受保护软件2p的执行期间,显现在数据处理系统3中执行而且它的至少一部分考虑到至少一个选择软件执行特征被监控的第一执行部分2pes,-以及受保护软件2p的第二目标部分2pou。其包含实现了检测模块17和强制模块18的利用模块,所述第二目标部分2pou使得,在上载到空白单元之后以及在受保护软件2p的执行期间,显现第二执行部分2peu,借助于其监控至少一个选择的软件执行特征2p。以及借助于其会使一个准则没有被遵循的事实导致对受保护软件2p执行的修改。
自然地,依据本发明、通过检测以及强制进行保护的原理能够在一个新软件的开发期间直接应用而不需要一个易受攻击软件2v的先前实现。以这种方式,直接获得受保护的软件2p。
为了实现使用软件执行的度量的变量作为特征、通过检测和强制进行保护的原理,通过以下方式修改受保护的软件2p·选择一个软件至少一个功能的使用度量的至少一个变量,作为要监控的软件执行特征,·选择-受保护软件2p的至少一个功能,其的使用易于使用一个度量的变量进行监控,-用于量化所述功能使用的至少一个度量的变量,-与一个选择的度量的变量相关、对应于所述功能使用的限制的至少一个阈值,
-以及至少一种取决于所述功能的使用更新一个选择的度量的变量的方法,·以及修改受保护软件源2ps的至少一个选择部分,这个修改使得在受保护软件2p的执行期间,取决于所述功能的使用、借助于第二执行部分2peu实现该度量的变量,以及考虑至少一个阈值跨越。
为了实现使用一个度量的变量作为特征、通过检测和强制进行保护的原理的第一最佳变体实施例,通过以下方式修改受保护的软件2p·在受保护软件的源2ps中选择至少一个选择的度量的变量,其中这些度量的变量必须和对应于该功能使用的不同限制的几个阈值相关,·选择至少两个和选择的度量的变量相关的阈值,·以及修改受保护软件源2ps的至少一个选择部分,这个修改使得在受保护软件2p的执行期间,借助于第二执行部分2peu不同地考虑各个阈值的跨越。
为了实现使用一个度量的变量作为特征、通过检测和强制进行保护的原理的第二最佳变体实施例,通过以下方式修改受保护的软件2p·在受保护软件的源2ps中,选择至少一个选择的度量的变量,其能够限制一个功能的使用以及必须能够用至少一个附加的使用而被相信,·以及修改至少一个选择部分,这个修改使得在一个称作再装的阶段期间,对应于一个选择度量的变量的至少一个功能的至少一个附加使用能够被相信。
为了实现使用软件使用简要表作为特征、通过检测和强制进行保护的原理,通过以下方式修改受保护的软件2p
·选择至少一个软件使用的简要表作为要监控的软件执行特征,·选择至少一个执行特征,其中至少一个选择的使用简要表必须要遵守它们,·以及修改受保护软件源2ps中的至少一个选择部分,这个修改使得在受保护软件2p的执行期间,第二执行部分2peu遵循所有选择的执行特征,为了实现使用对用于执行链的监控作为要遵循的执行特征、通过检测和强制进行保护的原理,通过以下方式修改受保护的软件2p·修改受保护软件源2ps中的至少一个选择部分,这个修改使得-至少一个选择算法处理过程被拆分以便在该受保护软件的执行期间,所述算法的处理过程借助于第二执行部分2peu、使用指令执行,-对于至少一个选择的算法处理过程,指令命令被集成到受保护软件的源2ps中,以便在受保护软件2p的执行期间,每个指令命令由第一执行部分执行2pes以及在该单元6中触发,一个指令借助于第二执行部分2peu的执行,-以及在允许受保护软件2p执行的序列集合当中选择一个指令命令序列,-以及指定这样的链接,其必须由至少一些指令在它们在单元中执行期间遵守,在后续保护子阶段P2期间,以及当除了通过检测以及强制进行保护的原理之外应用至少另一个保护原理时,进行“修改级S22”。在这个修改级S22期间,使用在定义级S11期间涉及的定义。使用所述定义以及可能地,在工具构造级S14期间构造的工具,修改受保护的软件2p以允许实现依据在这之前定义的一个布置进行保护的原理。
当实现了通过变量进行保护的原理时,通过以下方式修改受保护的软件2p·选择在至少一个选择算法处理过程中使用的至少一个变量,其在受保护软件2p的执行期间,部分地定义了受保护软件2p的状态,·修改受保护软件源2ps中的至少一个选择部分,这个修改使得在受保护软件2p的执行期间,至少一个选择变量或者选择变量的至少一个拷贝驻留在单元6中,·以及产生-受保护软件2p的第一目标部分2pos,所述第一目标部分2pos使得在受保护软件2p的执行期间,第一执行部分2pes的至少一个部分还考虑到至少一个变量或者变量的至少一个拷贝驻留在单元6中,-以及该受保护软件2p的第二目标部分2pou。所述第二目标部分2pou使得,在上载到单元6之后以及在受保护软件2p的执行期间,显现第二执行部分,借助于该部分至少一个选择变量,或者选择变量的至少一个拷贝也驻留在该单元6中。
当实现了通过重命名进行保护的原理时,通过以下方式修改受保护的软件2p·在受保护软件的源2ps中选择触发命令,·通过重命名选择的触发命令的次序来修改受保护软件源2ps中的至少一个选择部分,以便隐藏相应相关函数的身份,·以及产生-受保护软件2p的第一目标部分2pos,所述第一目标部分2pos使得在受保护软件2p的执行期间,执行具有重命名次序的触发命令,
-以及受保护软件2p的第二目标部分2pou,其包含还实现了恢复模块20的利用模块,所述第二目标部分2pou使得,在上载到单元6之后以及在受保护软件2p的执行期间,借助于第二执行部分2peu恢复其的执行由第一执行部分2pes触发的相关函数的身份,而且该相关的函数借助于第二执行部分2peu执行。
为了实现通过重命名进行保护原理的一个变体,通过以下方式修改受保护的软件2p·在受保护软件的源2ps中选择至少一个具有重命名次序的触发命令,·以及通过至少用另一个重命名次序替换一个具有重命名次序的选择触发命令中的重命名次序,来修改受保护软件源2ps中的至少一个选择部分,其中另一个重命名次序触发同一系列中的相关函数。
当实现了通过条件分支进行保护的原理时,通过以下方式修改受保护的软件2p·在受保护软件的源2ps中,选择至少一个在至少一个选择的算法处理过程中执行的条件分支,·修改受保护软件源2ps中的至少一个选择部分,这个修改使得在受保护软件2p的执行期间,借助于第二执行部分2peu,在该单元6中执行条件分支的至少一个选择条件分支的功能,·以及产生-受保护软件2p的第一目标部分2pos,所述第一目标部分2pos使得在受保护软件2p的执行期间,在单元6中执行至少一个选择的条件分支的功能,-以及该受保护软件2p的第二目标部分2pou,所述第二目标部分2pou使得,在上载到单元6之后以及在受保护软件2p的执行期间,显现第二执行部分2peu,借助于该部分执行至少一个选择条件分支的功能。
为了实现通过条件分支进行保护原理中的一个最佳实施例,通过以下方式修改受保护的软件2p·在受保护软件的源2ps中选择至少一系列选择的条件分支,·修改受保护软件源2ps中的至少一个选择部分,这个修改使得在受保护软件2p的执行期间,借助于第二执行部分2peu,在该单元6中执行条件分支的至少一个选择系列的整体功能,·以及产生-受保护软件2p的第一目标部分2pos,所述第一目标部分2pos使得在受保护软件2p的执行期间,在单元6中执行条件分支至少一个选择系列的功能,-以及该受保护软件2p的第二目标部分2pou,所述第二目标部分2pou使得在上载到单元6之后、以及在受保护软件2p的执行期间,显现第二执行部分2peu,借助于该部分2peu执行条件分支至少一个选择系列的整体功能。
自然地,依据本发明的保护原理能够在一个新软件的开发期间直接应用而不需要中间受保护软件部分的先前执行。以这种方式,创建级S21和修改级S22能够一起执行以便直接获得受保护的软件2p。
在后续保护子阶段P2期间,在受保护软件2p的创建级S21之后,以及可能地在修改级S22之后,进行一个称作“定制段S23”的阶段。在这个定制段S23期间,以获得至少一个单元6为目的,包含利用模块的第二目标部分2pou被上载到至少一个空白单元60,或者以获得至少一个单元6为目的,可能包含利用模块的第二目标部分2pou的一部分被上载到至少一个预定制单元66。这个定制信息的上载能够使至少一个单元6可操作。应当看到部分所述信息,一旦被传输到单元6之后,就不可从所述单元6外部直接访问。定制信息到空白单元60或者预定制单元66的传输能够通过一个修改的定制单元执行,该单元将在图150的剩余描述中进行描述。在预定制单元6由芯片卡7和它的读卡器8构成的情况中,定制仅仅涉及芯片卡7。
为了保护阶段P的实现,参照图110、120、130、140和150更确切地描述了不同的技术装置。
图110说明了系统25的一个实施例,该系统能够实现这样的构造级S12,其考虑了在定义级S11期间涉及的定义,以及在该阶段期间构造了传输模块12、13,以及可能地,用于单元6的利用模块。这样一个系统25包含一个程序开发单元或者工作站,其传统上具有计算机的形式,其中该计算机包含一个系统单元、屏幕、诸如键盘-鼠标的外设,以及尤其包含以下的程序文件编辑器、汇编器、预处理器、编译器、解释器、调试器以及链接编辑器。
图120说明了一个预定制单元30的一个实施例,该预定制单元能够以获得一个预定制单元66为目的,至少部分地向至少一个空白单元60上载传输工具13和/或利用模块。所述预定制单元30包含读写装置31,其能够电子地预定制一个空白单元60,以便获得一个已经向其上载了传输工具13和/或利用模块的被预定制单元66。预定制单元30还能够包含空白单元60中的物理定制模块32,其能够例如具有打印机的形式。在其中单元6由芯片卡7和它的读卡器8构成的情况中,预定制通常仅仅涉及芯片卡7。
图130说明了系统35的一个实施例,其能够执行构造能够帮助产生受保护的软件或者自动化软件保护的工具。这样一个系统35包含一个程序开发单元或者工作站,其传统上具有计算机的形式,其中该计算机包含一个系统单元、屏幕、诸如键盘-鼠标的外设,以及尤其包含以下的程序文件编辑器、汇编器、预处理器、编译器、解释程序、调试器以及链接编辑器。
图140说明了系统40的一个实施例,该系统能够直接创建一个受保护的软件2p,或者以获得一个受保护的软件2p为目的修改一个易受攻击的软件2v。这样一个系统40包含一个程序开发单元或者工作站,其传统上具有计算机的形式,其中该计算机包含一个系统单元、屏幕、诸如键盘-鼠标的外设,以及尤其包含以下的程序文件编辑器、汇编器、预处理器、编译器、解释程序、调试器以及链接编辑器,以及能够帮助产生受保护的软件或者使软件保护自动化的工具。
图150说明了定制单元45的一个实施例,该定制单元能够以获得至少一个单元6为目的上载第二目标部分2pou到至少一个空白单元60,或者以获得至少一个单元6为目的上载第二目标部分2pou的一部分到至少一个被预定制单元66。所述定制单元45包含读和写装置46,其能够电子地定制至少一个空白单元60或者至少一个被预定制单元66,以便获得至少一个单元6。在这个定制结束时,单元6包含为受保护软件2p的执行所必需的信息。定制单元45还能够包含用于至少一个单元6的物理定制模块47,其能够例如具有打印机的形式。在其中单元6由芯片卡7和它的读卡器8构成的情况中,定制通常仅仅涉及芯片卡7。
依据本发明的保护方法能够用以下改进实现·能够设计共同使用几个处理和存储单元,在它们之间划分出受保护软件2p的第二目标部分2pou,以便它们的联合使用能够执行受保护的软件2p,所述处理和存储单元的至少一个的不存在,阻止了受保护软件2p的使用。
·以同样的方法,在预定制级S13之后以及在定制段S23期间,为把被预定制单元66转换成为单元6所必需的第二目标部分2pou中的一部分能够被包含在由定制单元45使用的处理和存储单元中,以便限制对第二对象部分2pou中所述部分的访问。自然地,第二目标部分2pou中的所述部分能够在几个处理和存储单元之间划分出来,以便第二目标部分2pou的所述部分仅仅在所述处理和存储单元的联合使用期间是可访问的。
权利要求
1.一种保护易受攻击的软件(2v)免受其未被授权使用的方法,使用至少包含存储模块(15)和处理模块(16)的至少一个空白单元(60),所述易受攻击软件(2v)在一个数据处理系统(3)上运行,所述保护方法包括→在保护阶段(P)期间·定义-至少一个软件执行特征,其易于至少部分地在单元(6)中被监控,-要遵循的至少一个准则,用于至少一个软件执行特征,-检测模块(17),在单元(6)中实现而且能够检测至少一个软件执行特征没有遵循至少一个相关准则,-以及强制模块(18),其在单元(6)中实现而且能够在至少一个准则没有被遵循时,通知数据处理系统(3)和/或修改软件的执行,·构造利用模块,其能够把空白单元(60)转换成为一个能够实现检测模块(17)和强制模块(18)的单元(6),·通过以下步骤创建一个受保护的软件(2p)-在易于监控的软件执行特征当中选择要监控的至少一个软件执行特征,-选择要遵循的至少一个准则,用于至少一个选择的软件执行特征,-选择至少一个算法处理过程,其在易受攻击软件(2v)的执行期间使用至少一个操作数而且能够获得至少一个结果,而且将为其监控至少一个选择的软件执行特征,-以及选择易受攻击软件的源(2vs)中的至少一部分,其中包含至少一个选择的算法处理过程,-由易受攻击软件的源(2vs)产生受保护软件的源(2ps),通过修改易受攻击软件的源(2vs)的至少一个选择部分以获得受保护软件的源(2ps)的至少一个修改部分,这个修改使得 在受保护软件(2p)的执行期间,第一执行部分(2pes)在数据处理系统(3)中执行,而且第二执行部分(2peu)在由信息上载之后的空白单元(60)中获得的单元(6)中执行, 第二执行部分(2peu)至少执行至少一个选择算法处理过程的功能, 以及在受保护软件(2p)的执行期间,借助于第二执行部分(2peu)监控至少一个选择的执行特征,而且一个准则没有被遵循的事实导致对受保护软件(2p)的执行的修改,-以及产生 受保护软件(2p)的第一目标部分(2pos),第一目标部分(2pos)是根据受保护软件的源(2ps)产生的,所述第一目标部分(2pos)使得在受保护软件(2p)的执行期间,显现在数据处理系统(3)中执行的第一执行部分(2pes),而且其至少一部分考虑到至少一个选择的软件执行特征被监控, 以及受保护软件(2p)的第二目标部分(2pou),其包含实现检测模块(17)和强制模块(18)的利用模块,所述第二目标部分(2pou)使得在上载到空白单元(60)之后、以及在受保护软件(2p)的执行期间,显现第二执行部分(2peu),借助于第二执行部分(2peu)监控至少一个选择的软件执行特征,以及借助于第二执行部分(2peu)会使一个准则没有被遵循的事实导致对受保护软件(2p)的执行的修改,·以及上载第二目标部分(2pou)到空白单元(60),以获得单元(6),→以及在以如下方式执行受保护的软件(2p)的使用阶段(U)期间·在存在单元(6)时-以及只要对应于受保护软件(2p)所有修改部分的所有被监控的执行特征的所有准则被遵循,就允许受保护软件(2p)的所述部分标称运行,以及因此允许受保护软件(2p)标称运行,-以及如果对应于受保护软件(2p)的一部分的被监控的执行特征的至少一个准则没有被遵循,将其通知数据处理系统(3)和/或修改受保护软件(2p)的该部分的运行,以便修改受保护软件(2p)的运行,·以及在没有单元(6)的情况下,尽管由第一执行部分(2pes)的一部分请求触发一个选择算法处理过程的功能在单元(6)中的执行,也不能正确地满足所述请求,使得至少所述部分不被正确地执行,而且因此,受保护软件(2p)不完全地起作用。
2.如权利要求1所述的方法,为限制受保护软件(2p)的使用,包含→在保护阶段(P)期间·定义-一个软件功能使用的度量的变量,作为易于监控的软件执行特征,-至少一个和每个度量的变量相关的阈值,作为要遵循的准则,-以及实现模块,其能够更新至少一个度量的变量,·构造利用模块,其允许该单元(6)也实现该实现模块,·以及通过以下步骤修改受保护的软件(2p)-选择一个软件至少一个功能的使用的至少一个度量的变量,作为要监控的软件执行特征,-选择 受保护软件(2p)的至少一个功能,其使用易于使用一个度量的变量进行监控, 至少一个度量的变量,用于量化所述功能的使用, 至少一个阈值,其与所述功能使用的限制对应的一个选择的度量的变量相关联, 以及至少一种取决于所述功能的使用更新一个选择的度量的变量的方法,-以及修改受保护软件的源(2ps)的至少一个选择部分,这个修改使得在受保护软件(2p)的执行期间,取决于所述功能的使用、借助于第二执行部分(2peu)实现该度量的变量,以及考虑至少一个阈值跨越。→以及在使用阶段(U)期间,在存在单元(6)、以及在对应于至少一个使用限制的至少一个阈值跨越被检测到的情况中,将其通知数据处理系统(3)和/或修改该受保护软件(2p)的该部分的运行,以便修改该受保护软件(2p)的运行。
3.如权利要求2所述的方法,包含→在保护阶段(P)期间·定义-定义若干个相关的阈值,用于至少一个度量的变量,-以及不同的强制模块,其对应于所述阈值中的每一个,·以及通过以下步骤修改受保护的软件(2p)-在受保护软件的源(2ps)中选择至少一个选择的度量的变量,其中这些度量的变量必须和对应于该功能使用的不同限制的若干个阈值相关,-选择与选择的度量的变量相关的至少两个阈值,-以及修改受保护软件的源(2ps)的至少一个选择部分,这个修改使得在受保护软件(2p)的执行期间,借助于第二执行部分(2peu)不同地考虑各个阈值的跨越,→以及在使用阶段(U)期间·在存在单元(6)时-在其中第一阈值的跨越被检测到的情况中,命令受保护的软件(2p)不再使用相应的功能,-以及在其中第二阈值的跨越被检测到的情况中,使相应功能和/或受保护软件(2p)的至少一部分无效。
4.如权利要求2或者3所述的方法,包含→在保护阶段(P)期间·定义再装模块,其能够用至少一个附加的使用相信由一个度量的变量监控的至少一个软件功能,·构造还允许该单元(6)实现再装模块的利用模块,·以及通过以下步骤修改受保护的软件(2p)-在受保护软件的源(2ps)中,选择至少一个选择的度量的变量,其能够限制一个功能的使用以及必须能够用至少一个附加的使用而被相信,-以及修改至少一个选择部分,这个修改使得在一个称作再装的阶段期间,与一个选择的度量的变量对应的至少一个功能的至少一个附加的使用能够被相信,→以及在再装的阶段期间·重新实现至少一个选择的度量的变量和/或至少一个相关的阈值,以便允许该功能的至少一个附加使用。
5.如权利要求1所述的方法,包含→在保护阶段(P)期间·定义-一个软件使用的简要表,作为易于监控的软件执行特征,-以及至少一个软件执行的特征,作为要遵循的准则,·以及通过以下步骤修改受保护的软件(2p)-选择至少一个软件使用的简要表,作为要监控的软件执行特征,-选择至少一个执行特征,其中至少一个选择的使用简要表必须要遵守该至少一个执行特征,-以及修改受保护软件的源(2ps)中的至少一个选择部分,这个修改使得在受保护软件(2p)的执行期间,第二执行部分(2peu)遵循所有选择的执行特征,→以及在使用阶段(U)期间,在存在该单元(6)、以及在其中检测到至少一个执行特征没有被遵循的情况中,将其通知数据处理系统(3)和/或修改该受保护软件(2p)该部分的运行,以便修改受保护软件(2p)的运行。
6.如权利要求5所述的方法,包含→在保护阶段(P)期间·定义-一个指令集,它的指令易于在单元(6)中执行,-一组用于所述指令集的指令命令,所述指令命令易于在该数据处理系统(3)中执行以及触发所述指令在单元(6)中的执行,-指令的链接,作为使用的简要表,-一个用于这些指令执行的期望链接,作为执行特征,-允许检测该指令链接不对应于期望链接的模块,作为检测模块(17),-以及在当该指令链接没有对应于期望链接时、允许向数据处理系统(3)通知和/或修改该受保护软件(2p)中的部分的功能的模块,作为强制模块(18),·构造还允许单元(6)执行该指令集中的指令的利用模块,所述指令的执行由指令命令在该数据处理系统(3)中的执行触发,·以及通过以下步骤修改受保护的软件(2p)-修改受保护软件的源(2ps)中的至少一个选择部分,这个修改使得 至少一个选择算法处理过程被拆分,以便在该受保护软件(2p)的执行期间,所述算法的处理过程借助于第二执行部分(2peu)、使用指令来执行, 对于至少一个选择的算法处理过程,指令命令被集成到受保护软件的源(2ps)中,以便在受保护软件(2p)的执行期间,每个指令命令由第一执行部分(2pes)执行以及在单元(6中)触发指令借助于第二执行部分(2peu)的执行, 以及在允许受保护软件(2p)执行的序列集合当中选择一个指令命令序列, 以及指定这样的链接,其必须由至少一些指令在它们在单元(6)中执行期间遵守,→以及在使用阶段(U)期间,在存在单元(6)、以及在其中检测到在单元(6)中执行的指令的链接没有对应于期望链接的情况中,将其通知数据处理系统(3)和/或修改该受保护软件(2p)中该部分的运行,以便修改该受保护软件(2p)的运行。
7.如权利要求6所述的方法,包含→在保护阶段(P)期间·定义-一个这样的指令集作为指令集,其中的至少某些指令利用寄存器工作,并且使用至少一个操作数,以便返回结果,-为至少一些利用寄存器工作的指令,定义 定义指令的功能的部分(PF), 以及定义一个用于指令的执行的期望链接的部分,并且该部分包含若干个位字段,所述位字段对应于◇指令(CII)的标识字段,◇以及为该指令的每个操作数定义*标记字段(CDk),*以及操作数的一个期望标识字段(CIPk),-为属于该利用模块并且由该指令集使用的每个寄存器,定义一个产生的标识字段(CIGv),其中自动地存储已经在所述寄存器中返回它的结果的最后指令的标识,-定义这样的模块作为检测模块(17),该模块允许在指令的执行期间,当标记字段(CDk)使用操作数时,为每个操作数检查对应于由所述操作数使用的寄存器的产生标识字段(CIGv)和所述操作数来源的期望标识字段(CIPk)的等同性,-以及定义这样的模块作为强制模块(18),该模块能够在如果至少一个检查的等同性是错误时修改指令的结果。
8.如权利要求1到7中的一个所述的方法,包含→在保护阶段(P)期间·通过以下步骤修改受保护的软件(2p)-选择在至少一个选择算法处理过程中使用的至少一个变量,其在受保护软件(2p)的执行期间,部分地定义了受保护软件(2p)的状态,-修改受保护软件的源(2ps)中的至少一个选择部分,这个修改使得在受保护软件(2p)的执行期间,至少一个选择变量或者选择变量的至少一个拷贝驻留在单元(6)中,-以及产生 受保护软件(2p)的第一目标部分(2pos),所述第一目标部分(2pos)使得在受保护软件(2p)的执行期间,第一执行部分(2pes)的至少一个部分还考虑到至少一个变量或者变量的至少一个拷贝驻留在单元(6)中, 以及该受保护软件(2p)的第二目标部分(2pou),所述第二目标部分(2pou)使得在上载到单元(6)之后、以及在受保护软件(2p)的执行期间,显现第二执行部分(2peu),借助于该部分,至少一个选择变量或者选择变量的至少一个拷贝也驻留在该单元(6)中,→以及在使用阶段(U)期间·在存在单元(6)以及每当第一执行部分(2pes)中的一部分利用它时,使用在单元(6)中驻留的一个变量或者一个变量的拷贝,以便所述部分被正确地执行,以及因此,受保护软件(2p)完全起作用,·以及在没有单元(6)的情况下,尽管由第一执行部分(2pes)中的一部分请求使用驻留在单元(6)中的一个变量或者一个变量的拷贝,也不能正确地满足所述请求,以致至少所述部分没有被正确地执行,而且因此,受保护软件(2p)没有完全地起作用。
9.如权利要求6所述的方法,包含→在保护阶段(P)期间·定义-一个指令命令,作为触发命令,-一个指令作为相关函数,-至少一个用于触发命令的变元,作为一个次序,该变元至少部分地对应于由数据处理系统(3)传输到单元(6)、以便触发相应的相关函数的执行的信息,-一种重命名这些次序的方法,其能够重命名这些次序以便获得具有重命名次序的触发命令,-以及恢复模块(20),其被设计成在使用阶段(U)期间在单元(6)中使用,而且允许由重命名次序恢复要执行的相关函数,·构造允许该单元(6)也实现恢复模块的利用模块,·以及通过以下步骤修改受保护的软件(2p)-在受保护软件的源(2ps)中选择触发命令,-通过重命名选择的触发命令的次序来修改受保护软件的源(2ps)中的至少一个选择部分,以便隐藏相应的相关函数的身份,-以及产生 受保护软件(2p)的第一目标部分(2pos),所述第一目标部分(2pos)使得在受保护软件(2p)的执行期间,执行具有重命名次序的触发命令, 以及受保护软件(2p)的第二目标部分(2pou),其包含还实现了恢复模块(20)的利用模块,所述第二目标部分(2pou)使得在上载到单元(6)之后、以及在受保护软件(2p)的执行期间,借助于第二执行部分(2peu)恢复其的执行由第一执行部分(2pes)触发的相关函数的身份,而且所述相关函数借助于第二执行部分(2peu)被执行,→以及在使用阶段(U)期间·在存在单元(6)以及每当包含在第一执行部分(2pes)一部分中的一个具有重命名次序的触发命令利用它时,在单元(6)中恢复相应的相关函数的身份并且执行它,以便所述部分被正确地执行,以及因此,受保护软件(2p)完全起作用,·以及在没有单元(6)的情况下,尽管由第一执行部分(2pes)中的一部分请求触发在单元(6)中执行一个相关函数,也不能正确地满足所述请求,以致至少所述部分没有被正确地执行,而且因此,受保护软件(2p)没有完全地起作用。
10.如权利要求9所述的方法,包含→在保护阶段(P)期间·为至少一个相关函数定义一系列相关函数,这些相关函数在算法上等效、但是由重命名次序不同的触发命令触发,·以及通过以下步骤修改受保护的软件(2p)-在受保护软件的源(2ps)中选择至少一个具有重命名次序的触发命令,-以及通过至少用另一个重命名次序替换一个具有重命名次序的选择触发命令的重命名次序,来修改受保护软件的源(2ps)中的至少一个选择部分,其中另一个重命名次序触发同一系列中的相关函数。
11.如权利要求10所述的方法,包含→在保护阶段期(P)间,通过以下步骤为至少一个相关函数定义一系列算法上等效的相关函数-通过把一个噪声字段连接到定义要在单元(6)中执行的相关函数中的功能部分的信息,-或者使用指令的标识字段(CII)以及操作数的期望标识字段(CIPk)。
12.如权利要求9、10或者11所述的方法,包含→在保护阶段(P)期间·定义-一种加密次序的加密方法,作为重命名次序的方法,-以及作为恢复模块(20)的模块,其实现了一种解密方法来解密重命名次序以及因此恢复要在单元(6)中执行的相关函数的身份。
13.如权利要求1到12中的一个所述的方法,包含→在保护阶段(P)期间·通过以下步骤修改受保护的软件(2p)-在受保护软件的源(2ps)中,选择在至少一个选择的算法处理过程中执行的至少一个条件分支,-修改受保护软件的源(2ps)中的至少一个选择部分,这个修改使得在受保护软件(2p)的执行期间,借助于第二执行部分(2peu),在该单元(6)中执行至少一个选择的条件分支的功能,-以及产生 受保护软件(2p)的第一目标部分(2pos),所述第一目标部分(2pos)使得在受保护软件(2p)的执行期间,在单元(6)中执行至少一个选择条件分支的功能, 以及该受保护软件(2p)的第二目标部分(2pou),所述第二目标部分(2pou)使得在上载到单元(6)之后、以及在受保护软件(2p)的执行期间,显现第二执行部分(2peu),借助于该部分执行至少一个选择的条件分支的功能,→以及在使用阶段(U)期间·在存在单元(6)以及每当第一执行部分(2pes)中的一个部分利用它时,在单元(6)中执行至少一个条件分支的功能,以便所述部分被正确地执行,以及因此,受保护软件(2p)完全起作用,·以及在不存在单元(6)而且尽管由第一执行部分(2pes)中的一部分请求在单元(6)中执行条件分支的功能时,不能正确地满足所述请求,以致至少所述部分不被正确地执行,而且因此,受保护软件(2p)没有完全起作用。
14.如权利要求13所示的处理过程,包含,在保护阶段(P)期间,通过以下方式修改受保护的软件(2p)-在受保护软件的源(2ps)中选择至少一系列选择的条件分支,-修改受保护软件的源(2ps)中的至少一个选择部分,这个修改使得在受保护软件(2p)的执行期间,借助于第二执行部分(2peu),在该单元(6)中执行条件分支的至少一个选择系列的整体功能,-以及产生 受保护软件(2p)的第一目标部分(2pos),所述第一目标部分(2pos)使得在受保护软件(2p)的执行期间,在单元(6)中执行条件分支至少一个选择系列的功能, 以及该受保护软件(2p)的第二目标部分(2pou),所述第二目标部分(2pou)使得在上载到单元(6)之后、以及在受保护软件(2p)的执行期间,显现第二执行部分(2peu),借助于该部分执行条件分支的至少一个选择系列的整体功能。
15.如权利要求1到14中的一个所述的方法,包含把保护阶段(P)拆分成为独立于要保护的软件的在前保护子阶段(P1)和与要保护的软件相关的后续保护子阶段(P2)。
16.如权利要求15所述的方法,包含,在在前保护子阶段(P1)期间,插入一个定义级(S11),在其期间执行所有的定义。
17.如权利要求16所述的方法,包含,在定义级(S11)之后,插入一个构造级(S12),在其期间构造利用模块。
18.如权利要求17所述的方法,包含,在构造级(S12)之后插入一个预定制级(S13),其包含向空白单元(60)上载利用模块的至少一部分,以获得一个预定制单元(66)。
19.如权利要求16或者17所述的方法,包含,在在前保护子阶段(P1)期间,插入一个工具构造级(S14),在其期间构造能够帮助产生受保护的软件或者使软件保护自动化的工具。
20.如权利要求15和18所述的方法,包含把后续保护子阶段(P2)拆分成为·创建级(S21),在其期间由易受攻击的软件(2v)创建受保护的软件(2p),·可能地,一个修改级(S22),在其期间修改受保护的软件(2p),·以及定制段(S23),在其期间-包含利用模块的受保护软件(2p)的第二目标部分(2pou)被上载到至少一个空白单元(60),以获得至少一个单元(6),-或者把可能包含利用模块的受保护软件(2p)的第二目标部分(2pou)上载到至少一个预定制单元(66),以获得至少一个单元(6)。
21.如权利要求19和20所述的方法,包含,在创建级(S21)期间以及可能地在修改级(S22)期间,使用至少一个工具,其帮助产生受保护的软件或者使软件保护自动化。
22.一种用于实现根据权利要求17的方法的系统,其特征在于它包含一个程序开发单元,其在构造级(S12)期间被使用,以考虑在定义级(S11)期间插入的定义,执行用于单元(6)的利用模块的构造。
23.一种用于实现根据权利要求18的方法的系统,其特征在于它包含一个预定制单元(30),用于上载利用模块的至少一部分到至少一个空白单元(60),以获得至少一个被预定制单元(66)。
24.一种用于实现根据权利要求19的方法的系统,其特征在于它包含一个程序开发单元,用于在工具构造级(S14)期间执行工具的构造,所述工具帮助产生受保护的软件或者使软件保护自动化。
25.一种用于实现根据权利要求20或者21的方法的系统,其特征在于它包含一个用于创建或者修改受保护的软件(2p)的程序开发单元。
26.一种用于实现根据权利要求20的方法的系统,其特征在于它包含一个定制单元(45),其能够·上载第二目标部分(2pou)到至少一个空白单元(60),以获得至少一个单元(6),·或者,上载第二目标部分(2pou)的一部分到至少一个被预定制的单元(66),以获得至少一个单元(6)。
27.一种被预定制单元(66),其特征在于它由根据权利要求23的系统获得。
28.一种单元(6),能够执行一个受保护的软件(2p)并且阻止它的未授权使用,其特征在于它包含受保护软件(2p)的第二目标部分(2pou),第二目标部分(2pou)是使用根据权利要求26的定制单元(45)上载的。
29.一种由若干个单元(6)组合的装置,其特征在于受保护软件(2p)的第二目标部分(2pou)在若干个个处理和存储单元之间被划分出来,以便它们的联合使用能够执行受保护的软件(2p),第二目标部分(2pou)是使用根据权利要求26的定制单元(45)上载的。
30.一种受保护软件(2p)的分发组(2pd),其特征在于它包含·第一分发部分(2pds),包含第一目标部分(2pos)并被设计成在数据处理系统(3)中运行,·以及第二分发部分(2pdu),其具有以下形式-空白单元(60),-根据权利要求27的被预定制单元(66),其能够在定制信息的上载之后,转换成为单元(6),-或者,根据权利要求28的单元(6)。
31.如权利要求30所述受保护软件(2p)的分发组(2pd),其特征在于第一分发部分(2pds)具有物理分发介质、例如CDROM的形式,或者通过网络分发的文件的形式。
32.如权利要求30所述受保护软件(2p)的分发组(2pd),其特征在于具有空白单元(60)的形式、被预定制单元(66)的形式或者单元(6)的形式的第二分发部分(2pdu)包含至少一个芯片卡(7)。
33.一种处理和存储单元,其特征在于它包含把根据权利要求27的被预定制单元(66)转换成为根据权利要求28的单元(6)所必需的第二目标部分(2pou)中的部分。
34.一种由若干个处理和存储单元组合的装置,其特征在于被共同使用的所述处理和存储单元包含把根据权利要求27的被预定制单元(66)转换成为根据权利要求28的单元(6)所必需的第二目标部分(2pou)中的部分。
全文摘要
本发明涉及一种用于由一个单元保护易受攻击的软件免受其未授权使用的方法,其中所述易受攻击软件在一个数据处理系统中运行。该方法包含定义软件的至少一个执行特征,其能够至少部分地在该单元中被监控;至少一个要遵循的准则,用于至少一个软件执行特征;检测模块,其将在一个单元中被实现而且能够检测至少一个软件执行特征是否没有遵循至少一个相关准则;以及强制模块,其将在一单元中实现,用于当至少一个准则没有被遵循时通知数据处理系统和/或修改软件的执行。
文档编号G06F21/12GK1620640SQ02814670
公开日2005年5月25日 申请日期2002年7月4日 优先权日2001年7月31日
发明者让-克里斯托夫·屈埃诺, 吉勒·斯格罗 申请人:瓦利迪公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1