CN1313898C - 利用条件分支原理保护软件免受不希望的使用的方法和*** - Google Patents
利用条件分支原理保护软件免受不希望的使用的方法和*** Download PDFInfo
- Publication number
- CN1313898C CN1313898C CNB028146735A CN02814673A CN1313898C CN 1313898 C CN1313898 C CN 1313898C CN B028146735 A CNB028146735 A CN B028146735A CN 02814673 A CN02814673 A CN 02814673A CN 1313898 C CN1313898 C CN 1313898C
- Authority
- CN
- China
- Prior art keywords
- protected software
- unit
- execution
- software
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 296
- 238000012545 processing Methods 0.000 claims abstract description 63
- 230000006870 function Effects 0.000 claims description 401
- 230000008569 process Effects 0.000 claims description 134
- 238000012986 modification Methods 0.000 claims description 63
- 230000004048 modification Effects 0.000 claims description 62
- 238000001514 detection method Methods 0.000 claims description 48
- 238000012544 monitoring process Methods 0.000 claims description 23
- 238000011084 recovery Methods 0.000 claims description 23
- 230000001960 triggered effect Effects 0.000 claims description 23
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000007689 inspection Methods 0.000 claims description 4
- 230000008571 general function Effects 0.000 claims description 2
- 238000005194 fractionation Methods 0.000 claims 1
- 230000000875 corresponding effect Effects 0.000 description 93
- 230000005540 biological transmission Effects 0.000 description 38
- 230000001681 protective effect Effects 0.000 description 10
- 238000000354 decomposition reaction Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000008034 disappearance Effects 0.000 description 5
- 230000002349 favourable effect Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 101100293693 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) STO1 gene Proteins 0.000 description 3
- 101150050497 cbc1 gene Proteins 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000005314 correlation function Methods 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Storage Device Security (AREA)
- Circuits Of Receivers In General (AREA)
Abstract
本发明涉及一种用于由一个单元保护易受攻击软件免受其未授权使用的方法,所述软件在一个数据处理***中运行。该方法通过以下步骤创建一个受保护的软件:在易受攻击软件源中选择至少一个条件跳转;修改该易受攻击软件源,以便在一个单元中执行的第二部分至少执行至少一个选择条件跳转的功能,并且向该数据处理***提供允许在选择点处跟踪该执行的信息。
Description
本发明整体涉及数据处理***的技术领域,更确切地是针对保护在所述数据处理***上运行的软件免受未授权使用的装置。
本发明的主题尤其针对使用一个处理和存储单元保护软件免受未授权使用的装置,这样一个处理和存储单元通常由在USB端口上的芯片卡或者实体钥匙实现。
在上面技术领域中,主要的问题涉及由没有为许可权利付费的用户对软件的未授权使用。这种软件的非法使用导致对编软件者、软件经销商和/或任何在产品中集成这种软件的人员的显而易见的损失。为了避免这样的非法拷贝,已经提出了在技术条件下的各种解决方案来保护软件。
因此一种保护解决方案是已知的,其使用硬件保护***,诸如命名为保护钥匙或者“软件狗”的物理部件。这样一个保护钥匙应当保证软件仅仅在该钥匙存在时执行。但是,必须承认这种解决方案是不起作用的,因为它带来容易绕过的不合适之处。一个有恶意倾向的人员或者黑客能够,借助于诸如反汇编程序的专门工具,删除保护钥匙的控制指令。然后可以使对应于软件修改版本的非法拷贝能够执行而没有保护。此外,这种解决方案不能推广到所有软件,这是因为很难连接两个以上的保护钥匙到同一个***。
本发明的主题确切地说在于找到解决上述问题的方案,通过提出一种保护软件免受未授权使用的方法解决上述问题,该方法使用一种专门的处理和存储单元,这是因为这样一个单元的存在是软件完全起作用所必需的。
为了实现这样一个目标,本发明的主题涉及使用包含至少处理模块和存储模块的至少一个空白单元、保护易受攻击的软件免受它的未经授权使用的方法,所述易受攻击的软件由一个源(source)产生并且在一个数据处理***上运行。依据本发明的方法包含:
→在保护阶段期间:
·通过以下方式创建一个受保护的软件:
-在易受攻击软件的源中选择至少一个条件分支,
-选择包含至少一个选择条件分支的易受攻击软件源中的至少一部分,
-从易受攻击软件源中产生受保护软件的源,这是通过修改易受攻击软件的源的至少一个选择部分以获得受保护软件源的至少一个修改部分来完成,这个修改使得在受保护软件的执行期间:
而且第二执行部分至少执行至少一个选择条件分支的功能,并且设置一条允许第一执行部分在选定地点继续它的执行的信息,供数据处理***使用,
-以及产生:
受保护软件的第一目标部分,这是从受保护软件的源中产生的,而且所述第一目标部分使得在受保护软件的执行期间,显示在数据处理***中执行而且它的至少一部分考虑到至少一个选择条件分支在该单元中执行的第一执行部分,
以及受保护软件的第二目标部分,所述第二目标部分使得,在上载到空白单元之后以及在受保护软件的执行期间,显示借助于其执行每个选择的条件分支的第二执行部分,
·以及为了获得该单元而上载第二目标部分到空白单元,
→以及在期间受保护软件被执行的使用阶段期间:
·在存在该单元以及每当第一执行部分中的一部分利用它时,执行在该单元中的一个条件分支的功能,以便所述部分被正确地执行,以及因此,受保护软件完全起作用,
·以及在没有该单元而且尽管有第一执行部分中的一部分请求执行在该单元中的一个条件分支的功能时,不能正确地满足所述请求,以致至少所述部分不被正确地执行,而且因此,受保护软件没有完全起作用。
依据一个变体的实施例,依据本发明的方法包含,在保护阶段期间,通过以下方式修改受保护的软件:
-在受保护软件的源中选择至少一系列选择条件分支,
-修改受保护软件源中的至少一个选择部分这个修改使得在受保护软件的执行期间,借助于第二执行部分,在该单元中执行条件分支的至少一个选择系列的总体功能,
-以及产生:
依据一个优选实施例,依据本发明的方法包含:
→在保护阶段期间:
·通过以下方式修改受保护的软件:
-在受保护软件的源中选择:
至少一个算法处理过程,其在受保护软件的执行期间,使用至少一个操作数,而且能够确定,至少部分地确定,选择条件分支的结果,
包含至少一个选择算法处理过程的至少一个部分,
-修改受保护软件源的至少一个选择部分,这个修改使得:
借助于第二执行部分至少执行至少一个选择算法处理过程的功能,
◇设置至少一个操作数,供该单元使用
◇在该单元中执行、在至少所述操作数上的算法处理过程的功能,
◇以及可能地,由该单元设置至少一个结果,供数据处理***使用,
对于至少一个选择的算法处理过程,步骤命令是这样定义以便在受保护软件的执行期间,每个步骤命令由第一执行部分执行以及在该单元中触发一个步骤借助于第二执行部分的执行,
-以及产生:
受保护软件的第一目标部分,所述第一目标部分使得依据受保护软件的执行期间,依据选择顺序执行步骤命令,
以及该受保护软件的第二目标部分,所述第二目标部分使得,在上载到单元之后以及在受保护软件的执行期间,显示第二执行部分,借助于其执行由第一执行部分触发的步骤。
→以及在使用阶段期间:
·在存在该单元以及每当包含在第一执行部分一部分中的一个步骤命令利用它时,在该单元中执行相应的功能,以便所述部分被正确地执行,以及因此,受保护软件完全起作用,
·以及在没有单元的情况下,尽管有第一执行部分一部分对触发在该单元中执行一个步骤的请求,也不能正确地满足所述请求,以致至少所述部分没有被正确地执行,而且因此,受保护软件没有完全地起作用。
依据一个优选实施例,依据本发明的方法包含:
→在保护阶段期间:
·通过以下步骤修改受保护的软件:
-选择在至少一个选择算法处理过程中使用的至少一个变量,其在受保护软件的执行期间,部分地定义受保护软件的状态,
-修改受保护软件源中的至少一个选择部分,这个修改使得在受保护软件的执行期间,至少一个选择变量或者选择变量的至少一个拷贝驻留在该单元中,
-以及产生:
以及该受保护软件的第二目标部分,所述第二目标部分使得,在上载到单元之后以及在受保护软件的执行期间,显示第二执行部分,借助于该部分至少一个选择变量,或者选择变量的至少一个拷贝也驻留在该单元中,
→以及在使用阶段期间:
·在存在该单元以及每当第一执行部分中的一部分中利用它时,使用驻留在该单元中的一个变量或者变量的一个拷贝,以便所述部分被正确地执行,以及因此,受保护软件完全起作用,
·以及在没有该单元的情况下,尽管有第一执行部分中的一部分对使用驻留在该单元中的一个变量或者变量一个拷贝的请求,也不能正确地满足所述请求,以致至少所述部分没有被正确地执行,而且因此,受保护软件没有完全地起作用。
依据另一个优选实施例,依据本发明的方法包含:
→在保护阶段期间:
·定义:
-一组基本函数,其中的基本函数容易在该单元中执行,
-以及一组用于所述组基本函数的基本命令,所述基本命令容易在数据处理***中执行而且容易触发这些基本函数在该单元中的执行,
·构造允许该单元执行所述组中的基本函数的利用模块(exploitation means),所述基本函数的执行由基本命令在数据处理***中的执行所触发,
·以及通过以下方式修改受保护的软件:
-在受保护软件的源中选择至少一个步骤,其在受保护软件的执行期间执行算法处理过程中的功能,
-修改受保护软件的源中的至少一个选择部分,这个修改使得:
至少一个选择步骤被拆分以便在该受保护软件的执行期间,所述步骤借助于第二执行部分、使用基本函数执行,
对于至少一个选择步骤,基本命令被集成到受保护软件的源中,以便在受保护软件的执行期间,每个基本命令由第一执行部分执行以及在该单元中触发,基本函数的执行借助于第二执行部分,
以及在允许受保护软件执行的序列集合当中选择一个基本命令序列,
-以及产生:
→以及在使用阶段期间:
·在存在该单元以及每当包含在第一执行部分一部分中的一个基本命令利用它时,在该单元中执行相应的基本函数,以便所述部分被正确地执行,以及因此,受保护软件完全起作用,
·以及在没有该单元的情况下,尽管有第一执行部分一部分对触发在该单元中执行一个基本函数的请求,也不能正确地满足所述请求,以致至少所述部分没有被正确地执行,而且因此,受保护软件不完全地起作用。
依据另一个优选实施例,依据本发明的方法包含:
→在保护阶段期间:
·定义:
-至少一个软件执行特征,其易于至少部分地在该单元中被监控,
-为至少一个软件执行特征定义要遵循的至少一个准则,
-检测模块,在该单元中实现而且能够检测到至少一个软件执行特征没有由至少一个相关准则遵守,
-以及强制模块(coercion means),其在该单元中实现而且能够当至少一个准则没有被遵循时,通知该数据处理***和/或修改软件的执行,
·构造允许单元也实现检测模块和强制模块的利用模块,
·以及通过以下方式修改受保护的软件:
-在易于监控的软件执行特征当中选择至少一个软件执行特征来监控,
-为至少一个选择的软件执行特征选择要遵循的至少一个准则,
-在受保护软件的源中选择基本函数,将为该基本函数监控至少一个选择的软件执行特征,
-修改受保护软件源的至少一个选择部分,这个修改使得在受保护软件的执行期间,借助于第二执行部分监控至少一个选择执行特征,而且一个准则没有被遵循的事实导致通知数据处理***和/或对受保护软件执行的修改,
-以及产生包含还实现了检测模块和强制模块的利用模块的受保护软件的第二目标部分,所述第二目标部分使得,在上载到该单元之后以及在受保护软件的执行期间,至少一个软件执行特征被监控以及一个准则没有被遵循的事实导致通知该数据处理***和/或对受保护软件执行的修改,
→以及在使用阶段期间:
·在存在该单元时:
-只要对应于受保护软件所有修改部分中的所有监控的执行特征的所有准则被遵循,就允许受保护软件的所述部分标称(nominally)运行以及因此允许受保护软件标称运行,
-以及如果对应于受保护软件一部分中的一个监控的执行特征的、至少一个准则没有被遵循的话,将其通知给数据处理***和/或修改受保护软件中这部分的功能,以便受保护软件的该功能被修改。
依据一个变体实施例,依据本发明的方法包含:
→在保护阶段期间:
·定义:
-作为易于监控的软件执行特征,一个软件功能使用度量的变量,
-作为要遵循的准则,至少一个和每个度量变量相关的阈值,
-以及允许更新至少一个度量的变量的实现模块(actualization means),
·构造允许该单元此外实现实现模块的利用模块,
·以及通过以下方式修改受保护的软件:
-选择作为要监控软件执行特征,至少一个软件功能使用的度量的至少一个变量,
-选择:
用于量化所述功能使用的至少一个度量的变量,
以及至少一种取决于所述功能的使用更新一个选择的度量的变量的方法,
-以及修改受保护软件的源的至少一个选择部分,这个修改使得在受保护软件的执行期间,取决于所述功能的使用、以及被考虑的至少一个阈值,借助于第二执行部分实现该度量的变量,
→以及在使用阶段期间,在存在该单元、以及在其中对应于至少一个使用极限的至少一个阈值被检测到的情况中,向数据处理***通知它和/或修改该受保护软件该部分的功能,以便修改该受保护软件的功能。
依据一个变体实施例,依据本发明的方法包含:
→在保护阶段期间:
·定义:
-若干个相关的阈值,用于至少一个度量的变量,
-以及对应于所述阈值中的每一个的不同的强制模块,
·以及通过以下方式修改受保护的软件:
-在受保护软件的源中选择至少一个选择的度量的变量,其中这些度量变量必须和对应于该功能使用不同极限的几个阈值相关,
-选择至少两个和选择的度量的变量相关的阈值,
-以及修改受保护软件源的至少一个选择部分,这个修改使得在受保护软件的执行期间,借助于第二执行部分不同地考虑各个阈值的跨越,
→以及在使用阶段期间:
·在存在该单元时:
-在其中第一阈值跨越被检测到的情况中,命令受保护的软件不再使用相应的功能,
-以及在其中第二阈值的跨越被检测到的情况中,使相应功能和/或受保护软件的至少一个部分无效。
依据一个变体实施例,依据本发明的方法包含:
→在保护阶段期间:
·定义再装模块,该模块允许利用至少一个附加的使用相信由一个度量的变量监控的至少一个软件功能,
·构造还允许该单元实现再装模块的利用模块,
·以及通过以下方式修改受保护的软件:
-在受保护软件的源中,选择至少一个选择的度量的变量,其允许限制功能的使用以及必须能够用至少一个附加的使用而被相信,
-以及修改至少一个选择部分,这个修改使得在一个称作再装的阶段期间,对应于一个选择的度量的变量的至少一个功能的至少一个附加的使用能够被相信。
→以及在再装的阶段期间:
·重新实现至少一个选择的度量的变量和/或至少一个相关的阈值,以便允许该功能的至少一个附加的使用。
依据一个变体实施例,依据本发明的方法包含:
→在保护阶段期间:
·定义:
-一个软件使用的简要表(profile),作为易于监控的软件执行特征,
-以及至少一个软件执行特征,作为要遵循的准则,
·以及通过以下方式修改受保护的软件:
-选择至少一个软件使用简要表作为要监控的软件执行特征,
-选择至少一个执行特征,其中至少一个选择的使用简要表必须遵守它们,
-以及修改受保护软件源中的至少一个选择部分,这个修改使得在受保护软件的执行期间,第二执行部分遵循所有选择的执行特征,
→以及在使用阶段期间,在存在该单元、以及在其中检测到至少一个执行特征没有被遵循的情况中,向数据处理***通知它和/或修改该受保护软件该部分的功能,以便修改该受保护软件的功能。
依据一个变体实施例,依据本发明的方法包含:
→在保护阶段期间:
·定义:
-一个指令集,该指令集的指令易于在该单元中执行,
-一组用于所述指令集的指令命令,所述指令命令易于在该数据处理***中执行以及易于触发该指令在该单元中的执行,
-指令的链接,作为使用简要表,
-一个用于该指令执行的期望链接,作为执行特征,
-允许检测该指令的链接没有对应于期望链接的模块,作为检测模块,
-以及允许在当该指令的链接没有对应于期望链接时向数据处理***通知和/或修改该受保护软件中的部分的功能的模块,作为强制模块,
·构造还允许该单元执行该指令集中的指令的利用模块,所述指令的执行由指令命令在该数据处理***中的执行触发,
·以及通过以下方式修改受保护的软件:
-通过以下步骤修改受保护软件源中的至少一个选择部分:
把基本函数转换变成指令,
指定这样的链,其必须由至少一些指令在它们在该单元中执行的期间遵守,
→以及在使用阶段期间,在存在该单元、以及在其中检测到在该单元中执行的指令的链接没有对应于期望链接的情况中,向数据处理***通知它和/或修改该受保护软件中该部分的功能,以便修改该受保护软件的功能。
依据一个变体实施例,依据本发明的方法包含:
→在保护阶段期间:
·定义:
-一个这样的指令集作为指令集,其中的至少某些指令利用寄存器并且使用至少一个操作数(operand)用于返回结果,
-为至少一些利用寄存器工作的指令:
以及定义用于该指令执行的期望链的部分,而且该部分包含对应于下列部分的位字段:
◇该指令的标识字段,
◇以及为该指令的每个操作数定义:
*一个标记字段,
*以及操作数的一个期望标识字段,
-为每个属于该利用模块并且由指令集使用的寄存器,一个产生标识字段,其中自动地存储已经在所述寄存器中返回了它的结果的最近指令的标识,
-这样的模块作为检测模块,该模块允许在指令的执行期间,当标记字段使用操作数时,为每个操作数检查对应于由所述操作数使用的寄存器的产生的标识字段和所述操作数来源的期望标识字段的等同性,
-以及允许在如果检查了的等同性中的至少一个是假时修改指令结果的模块,作为强制模块。
依据另一个优选实施例,依据本发明的方法包含:
→在保护阶段期间:
·定义:
-一个基本命令或者一个指令命令,作为触发命令,
-一个基本函数或者指令,作为相关的功能,
-至少一个用于触发命令的变元(argument),作为一个次序(order),其至少部分地对应于由数据处理***传输到该单元的信息,以便触发相应相关功能的执行,
-一种重命名这些次序的方法,其允许重命名这些次序以便获得具有重命名次序的触发命令,
-以及恢复模块,其被设计成在使用阶段期间在该单元中使用,而且允许由重命名次序恢复相关功能来执行,
·构造允许该单元此外还实现恢复模块的利用模块,
·以及通过以下方式修改受保护的软件:
-在受保护软件的源中选择触发命令,
-通过重命名选择的触发命令的次序来修改受保护软件源中的至少一个选择部分,以便隐藏相应相关函数的身份,
-以及产生:
以及受保护软件的第二目标部分,其包含还实现了恢复模块的利用模块,所述第二目标部分使得,在上载到该单元之后以及在受保护软件的执行期间,借助于第二执行部分恢复其的执行由第一执行部分触发的相关函数的身份,而且该相关的函数借助于第二执行部分执行,
→以及在使用阶段期间:
·在存在该单元以及每当包含在第一执行部分一部分中的一个具有重命名次序的触发命令利用它时,在该单元中恢复相应相关助能的身份以及执行它,以便所述部分被正确地执行,以及因此,受保护软件完全起作用,
·以及在没有该单元的情况下,尽管有第一执行部分中的一部分对触发在该单元中一个相关函数执行的请求,也不能正确地满足所述请求,以致至少所述部分没有被正确地执行,而且因此,受保护软件没有完全地起作用。
依据一个变体实施例,依据本发明的方法包含:
→在保护阶段期间:
·为至少一个相关函数定义一系列在算法上等效、但是由重命名次序不同的触发命令触发的相关函数,
·以及通过以下方式修改受保护的软件:
-在受保护软件的源中选择至少一个具有重命名次序的触发命令,
-以及通过至少用重命名次序替换一个选择的触发命令的重命名次序,来用另一个重命名的次序修改该受保护软件源中的至少一个选择部分,以触发同一系列中的一个相关函数。
依据一个变体实施例,依据本发明的方法包含:
→在保护阶段期间,通过以下步骤为至少一个相关函数定义一系列算法上等效的相关函数:
-把一个噪声字段连接到定义要在该单元中执行的相关函数中的功能部分的信息,
-或者使用该指令的标识字段以及操作数的期望标识字段。
依据一个变体实施例,依据本发明的方法包含:
→在保护阶段期间:
·定义:
-一种加密次序的加密方法,作为重命名次序的方法,
-以及作为恢复模块的模块,其实现了一种解密方法来解密重命名次序以及因此恢复要在该单元中执行的相关函数的身份。
因此,依据本发明这个方法能够保护一个软件的使用,这是通过使用一个处理和存储单元来实现的,该单元呈现出包含被执行软件的一部分的特征。从而在没有该处理和存储单元时试图运行的该软件的任何导出版本都强制在执行期间重新创建出包含在该处理和存储单元中的软件的该部分,否则该软件的所述导出版本将不会完全起作用。
从以下参考附图进行的说明中描述各种其他的特征,这些附图示出本发明主题的实施例和实现方案,作为非限制的示例。
图10和11是功能框图,示出分别没有受保护和由依据本发明的方法保护的软件的各个表示。
图20到22作为示例说明了实现了依据本发明的方法的一个装置的各个实施例。
图30和31是功能框图,清楚地示出依据本发明的方法的通用原理。
图40到43是框图,说明了依据本发明的保护方法,其实现了通过变量进行保护的原理。
图50到54是框图,说明了依据本发明的保护方法,其实现了通过临时分解进行保护的原理。
图60到64是框图,说明了依据本发明的保护方法,其实现了通过基本函数进行保护的原理。
图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、等等)分发的文件的形式,
·或者一个动态表示2ve,对应于易受攻击软件2v在一个任何已知类型的数据处理***3上的执行,该数据处理***3传统上包含至少一个处理器4。
图11说明了受保护软件2p在它的生命周期期间显现的各个表示。受保护的软件2p因此能够以以下的任何表示显现:
·源表示2ps,包含第一源部分用于数据处理***3以及第二源部分用于单元6,所述源部分中的一部分通常能够包含在普通文件中,
·目标表示2po,包含第一目标部分2pos用于数据处理***3以及第二目标部分2pou用于单元6,
·分发2pd,包含:
-包含第一目标部分2pos的第一分发部分2pds,所述第一分发部分2pds用于数据处理***3,而且其通常能够具有诸如CDROM的物理分发介质形式,或者经由网络(GSM、Internet、等等)分发的文件的形式,,
-以及第二分发部分2pdu,其具有形式:
·或者对应于受保护软件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以及芯片卡作为单元6,芯片卡7的接口8通常称作读卡器。计算机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不完全起作用。
依据本发明,保护处理过程的目的在于实现称作《条件分支》的保护原理,将相对于图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说明了本发明实现的一个示例,其中被选择对单元6远程处理的条件分支对应于条件分支BC。在这个示例中,在受保护软件2p的第一执行部分2pes在数据处理***3中执行期间以及在存在单元6时,显现:
·在时刻t1处,条件分支命令CBC1的执行,其触发在单元6中,远程处理的条件分支bc借助于第二执行部分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在选择的地点处继续它的执行。
依据本发明的另一个有利特征,保护处理过程的目的在于实现一个称作“临时分解”的保护原理,将相对于图50到54进行它的描述。
为了实现由临时分解进行保护的原理,在易受攻击的软件2vs的源中选择至少一个算法处理过程,其使用至少一个操作数并且返回至少一个结果。也选择包含至少一个选择的算法处理过程的易受攻击软件2vs源中的至少一部分。
然后修改易受攻击软件2vs源中的至少一个选择部分,以便获得受保护软件2ps的源。这个修改使得其中:
·在受保护软件2p的执行期间,在数据处理***3中执行的第一执行部分2pes的至少一个部分考虑到至少一个选择算法处理过程的功能在单元6中执行,
·在受保护软件2p的执行期间,在单元6中执行的第二执行部分2peu至少执行至少一个选择的算法处理过程的功能,
·在受保护软件2p的执行期间,每个选择的算法处理过程被分为几个不同的步骤,即:
-步骤1:设置操作数(多个),供单元6使用,
-步骤2:使用所述操作数(多个)在单元6中执行选择的算法处理过程的功能,
-以及步骤3:可能地,由单元6设置选择的算法处理过程的结果,供数据处理***3使用,
·定义步骤命令以触发这些步骤的执行,
·以及在允许受保护软件2p执行的序列集合当中选择一个步骤命令序列。
在数据处理***3中执行的受保护软件2p中的第一执行部分2pes执行这些步骤命令,它们触发在单元6中借助于第二执行部分2peu的、每一个先前定义的步骤的执行。
图50说明了一个易受攻击软件2v的执行的一个示例。在这个示例中,在易受攻击软件2v的执行期间,在数据处理***3中在某个时刻处,显示对应于向变量Z分配由函数F表示并且使用操作数X和Y的算法处理过程结果的Z←F(X,Y)的计算。
图51说明了本发明实现的一个示例,对于其在图50中选择的算法处理过程在单元6中被远程处理。在这个示例中,在受保护软件2p的第一执行部分2pes在数据处理***3中执行期间以及在存在单元6时,显示:
·在时刻t1处,步骤1,即步骤命令CE1的执行,该命令的执行触发数据X和Y从数据处理***3到位于单元6的存储模块15中、分别为x和y的存储区域的传输,所述步骤命令CE1由OUT(x,X),OUT(y,Y)表示,
·在时刻t2处,步骤2,即步骤命令CE2的执行,其在单元6中借助于第二执行部分2peu触发函数f的执行,所述函数f在算法上相当于函数F而且所述步骤命令CE2由TRIG(f)表示。更确切地说,步骤命令CE2的执行导致函数f的执行,其使用存储区域x和y中的内容并且返回它的结果的到单元6中的存储区域z,
·以及在时刻t3处,步骤3,即步骤命令CE3的执行,其触发包含在单元6中的存储区域z中的函数f的结果的到数据处理***3的传输,以便把它分配给变量Z,所述步骤命令CE3由IN(z)表示。
在说明的示例中,步骤1到3被连续地执行。应当观察能够实施两个改进:
·第一改进涉及其中几个算法处理过程在单元6中被远程处理而且至少一个算法处理过程的结果由另一个算法处理过程使用的情况。在这种情况下,能够可能地除去某些传输步骤。
·第二改进的目的在于在允许受保护软件2p执行的序列集合当中选择一个相关的步骤命令序列。在这方面,更可取的是选择这样的一个步骤命令序列,其通过在步骤之间***在数据处理***3中执行的部分代码以及包含或者不包含用于确定其他数据的步骤命令来临时地分解这些步骤的执行。图52和53说明了这样一个实施例的原理。
图52显示了一个易受攻击软件2v的执行的一个示例。在这个示例中,在易受攻击软件2v的执行期间,在数据处理***3中显示两个导致Z和Z’的确定的算法处理过程的执行,以便Z←F(X,Y)以及Z’←F’(X’,Y’)。
图53说明了依据本发明的方法实现的一个示例,对于该示例,在图52中选择的算法处理过程在单元6中被远程处理。依据这样一个示例,在受保护软件2p的第一执行部分2pes在数据处理***3中的执行期间,以及在存在单元6时,如上面所述的那样,显示对应于Z的确定的、步骤命令CE1、CE2、CE3的执行以及对应于Z’的确定的、步骤命令CE’1、CE’2、CE’3的执行如说明的那样,步骤命令CE1到CE3没有被连续地执行因为***了步骤命令CE’1到CE’3,以及其他的代码部分。在该示例中,因此执行以下序列CE1、部分***的代码、CE2、部分***的代码、CE’1、部分***的代码、CE’2、部分***的代码、CE’3、部分***的代码、CE3。
应当注意到:在受保护软件2p的执行期间,在存在单元6时,每当包含在受保护软件2p的第一执行部分2pes的一部分中的步骤命令使用它时,相应的步骤在单元6中执行。因此,在存在单元6时,显现出所述部分被正确地执行,以及因此,受保护的软件2p完全地起作用。
图54说明了当单元6缺失时,试图执行受保护软件2p的一个示例。在这个示例中,在受保护软件2p的第一执行部分2pes在数据处理***3中执行期间:
·在时刻t1处,考虑到单元6的缺失,步骤命令OUT(x,X)、OUT(y,Y)的执行不能触发数据X和Y到相应的存储区域x和y的传输。
·在时刻t2处,考虑到单元6的不存在,步骤命令TRIG(f)的执行不能触发函数f的执行,
·以及在时刻t3处,考虑到单元6的不存在,步骤命令IN(z)的执行不能触发函数z结果的传输。
因此在不存在单元6时,显示出第一执行部分2pes中的一部分对触发一个步骤在单元6中的执行的至少一个请求不能正确地完成,所以至少所述部分没有正确地执行,而且因此,受保护的软件2p没有完全地起作用。
依据本发明的另一个有利特征,保护处理过程的目的在于实现一个称作“变量”的保护原理,将相对于图40到43对它进行描述。
对于由变量进行保护的原理的实现,在易受攻击软件2vs的源中选择至少一个变量,其在该易受攻击软件2v的执行期间,部分地定义它的状态。按照软件的状态,必须理解在一个给定时刻,该信息块组为所述软件的完整执行所必须,以致于这样一个选择的变量的不存在会损害所述软件的完整执行。也选择包含至少一个选择的变量的易受攻击软件2vs源中的至少一部分。
然后修改易受攻击软件2vs源中的至少一个选择部分,以便获得受保护软件2ps的源。这个修改使得在受保护软件2p的执行期间,在数据处理***3中执行的第一执行部分2pes的至少一个部分考虑到至少一个选择的变量或者选择变量的至少一个拷贝驻留在单元6中。
图40说明了一个易受攻击软件2v的执行的一个示例。在这个示例中,在易受攻击软件2v在数据处理***3中执行期间,出现:
·在时刻t1处,给变量V1分配数据X,这由V1←X表示,
·在时刻t2处,向变量Y分配变量V1的值,这由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,所述传输命令3由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改变它,所述传输命令3由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)。
依据本发明的另一个有利特征,保护处理过程的目的在于实现一个称作“基本函数”的保护原理,将相对于图60到64对它进行描述。
为了实现通过基本函数的保护原理,定义:
·一组基本函数,其中的基本函数易于借助于第二执行部分2peu、在单元6中执行,而且可能在数据处理***3和单元6之间传输数据,
·以及一组用于所述组基本函数基本命令,所述基本命令容易在数据处理***3中执行而且触发相应基本函数在单元6中的执行。
为了实现通过基本函数保护的原理,还构造了这样的利用模块,其允许把一个空白单元60转换成为一个能够执行基本函数的单元6,所述基本函数的执行由在数据处理***3中、基本命令的执行而触发。
为了实现由基本函数进行保护的原理,还在易受攻击的软件2vs的源中选择至少一个算法处理过程,其使用至少一个操作数并且返回至少一个结果。还选择包含至少一个选择的算法处理过程的易受攻击软件2vs源中的至少一部分。
然后修改易受攻击软件2vs源中的至少一个选择部分,以便获得受保护软件2ps的源。这个修改使得其中:
·在受保护软件2p的执行期间,在数据处理***3中执行的第一执行部分2pes的至少一个部分考虑到至少一个选择的算法处理过程的功能在单元6中执行,
·在受保护软件2p的执行期间,在单元6中执行的第二执行部分2peu至少执行至少一个选择的算法处理过程的功能,
·拆分每个选择的算法处理过程,以便在受保护软件2p的执行期间,每个选择的算法处理过程,借助于第二执行部分2peu,使用基本函数执行。更可取地是,每个选择的算法处理过程被分为基本函数fen(n从1变化到N),即:
-允许把一个或者几个操作数设置在单元6的配置处的、可能的一个或者几个基本函数,
-基本函数,其中一些使用这些操作数(多个)而且同时,使用所述操作数(多个)执行选择的算法处理过程的功能,
-以及可能地一个或者几个基本函数,它们允许由单元6设置选择的算法处理过程的结果,供数据处理***3使用,
·以及在允许受保护软件2p执行的序列集合当中选择一个基本命令序列。
在数据处理***3中执行的受保护软件2p中的第一执行部分2pes执行基本命令CFEn(n从1变化到N),它们借助于第二执行部分2peu,触发在单元6中每一个先前定义的基本函数fen的执行。
图60说明了一个易受攻击软件2v的执行的一个示例。在这个示例中,在易受攻击软件2v在数据处理***3中的执行期间,在某个时刻处,显示对应于向变量Z分配由函数F表示并且使用操作数X和Y的算法处理过程结果的Z←F(X,Y)的计算。
图61说明了本发明实现方案的一个示例,对于该示例,在图60中选择的算法处理过程在单元6中被远程处理。在这个示例中,在受保护软件2p的第一执行部分2pes在数据处理***3中执行期间以及在存在单元6时:
·在时刻t1、t2处,显现基本命令CFE1、CFE2的执行,它们触发在单元6中,相应基本函数fe1、fe2借助于第二执行部分2peu的执行,这些基本函数提供了数据X,Y从数据处理***3到位于单元6的存储模块15中的各个存储区域x、y的传输,所述基本命令CFE1、CFE2分别由OUT(x,X),OUT(y,Y)表示,
·在时间t3到tN-1处,显现基本命令CFE3到CFEN-1的执行,它们触发在单元6中,相应基本函数fe3到feN-1借助于第二执行部分2peu的执行,所述基本命令CFE3到CFEN-1分别由TRIG(fe3)到TRIG(feN-1)表示。一系列基本函数fe3到feN-1的执行组合起来在算法上相当于函数F。更确切地说,所述基本命令的执行导致单元6中基本函数fe3到feN-1的执行,它们使用存储区域x,y的内容并且返回结果到单元6的存储区域z,
·以及在时刻tN处,显现基本命令CFEN的执行,其触发在单元6中,基本函数feN借助于第二执行部分2peu的执行,该基本函数提供了包含在单元6的存储区域z中的算法处理过程的结果到数据处理***3的传输,以便把它分配给变量Z,所述基本命令CFEN由IN(z)表示。
在说明的示例中,基本命令1到N被连续地执行。应当看到能够实施两个改进:
·第一改进涉及其中几个算法处理过程在单元6中被远程处理而且至少一个算法处理过程的结果由另一个算法处理过程使用的情况。在这种情况下,某些用于传输的基本命令能够可能地被除去。
·第二改进的目的在于在允许受保护软件2p执行的序列集合当中选择一个相关的基本命令序列。在这方面,更可取的是选择这样的一个基本命令序列,其通过在基本函数之间***在数据处理***3中执行的部分代码以及包含或者不包含用于确定其他数据的基本命令来临时地分解这些基本函数的执行。图62和63说明了这样一个实施例的原理。
图62显示了一个易受攻击软件2v的执行的一个示例。在这个示例中,在易受攻击软件2v在数据处理***3中的执行期间,显现导致Z和Z’的确定的两个算法处理过程的执行,以便Z←F(X,Y)以及Z’←F’(X’,Y’)。
图63说明了依据本发明的方法实现的一个示例,对于该示例,在图62中选择的算法处理过程在单元6中被远程处理。依据这样一个示例,在受保护软件2p的第一执行部分2pes在数据处理***3中的执行期间,以及在存在单元6时,如上面所述的那样,显现对应于Z的确定的、基本命令CFE1到CFEN的执行以及对应于Z’的确定的、步骤命令CFE’1到CFE’M的执行。如说明的那样,基本命令CFE1到CFEN没有被连续地执行,因为***了基本命令CFE’1到CFE’M,以及其他的代码部分。在这个示例中,因此执行以下序列:CFE1、部分***的代码、CFE’1、CFE2、部分***的代码、CFE’2、CFE’3、部分***的代码、CFE’4、CFE3、CFE4、...、CFEN、CFE’M。
应当看到:在受保护软件2p的执行期间,在存在单元6时,每当包含在受保护软件2p的第一执行部分2pes的一部分中的一个基本命令使用它时,相应的基本函数在单元6中执行。因此,在存在单元6时,显现出所述部分被正确地执行,以及因此,受保护的软件2p完全地起作用。
图64说明了当单元6不存在时,试图执行受保护软件2p的一个示例。在这个示例中,受保护软件2p的第一执行部分2pes在数据处理***3中执行期间,在每个时刻,由于不存在单元6,一个基本命令的执行不能触发相应基本函数的执行。分配给变量Z的值因此不能被正确地确定。
因此,在不存在单元6时,显示出受保护软件2p的第一执行部分2pes的一部分触发基本函数在单元6中的执行的至少一个请求不能被正确地完成,以致至少所述部分没有正确地执行,而且因此,受保护软件2p没有完全起作用。
依据本发明的另一个有利特征,保护处理过程的目的在于实现一个称作“检测以及强制(coercion)”的保护原理,将相对于图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中这部分的功能,以便修改受保护软件的该功能。
自然地,在不存在单元6时,受保护软件2p的第一执行部分2pes的一部分使用单元6的至少一个请求不能被正确地完成,以致至少所述部分没有正确地执行,而且因此,受保护软件2p没有完全起作用。
为了实现通过检测和强制进行保护的原理更可取地是使用两个类型的软件执行特征。
第一类型的软件执行特征对应于软件执行的度量的变量,且第二个类型对应于软件使用的简要表(profile)。所述两种类型的特征能够独立地使用或者组合使用。
为了实现使用软件执行的度量的变量作为执行特征、通过检测和强制进行保护的原理,定义:
·在存储模块15中,可以存储至少一个度量的变量,其用于量化软件中的至少一个功能的使用,
·在检测模块17中,可以监控和每个度量的变量相关的至少一个阈值,
·以及实现模块,其允许取决于和每个度量的变量相关的功能的使用,更新该度量的变量。
还构造了利用模块,其除了实现检测模块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的功能。
在存在单元6时,在由这个原理进行保护的受保护软件2p的执行期间:
·只要受保护软件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中执行的指令命令。
在在存在单元6时、由这个原理保护受保护软件2p的执行期间:
·只要在单元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执行优选实施例。
依据本发明的另一个有利特征,保护处理过程的目的在于实现一个称作“重命名”的保护原理,将相对于图80到85对它进行描述。
为了实现通过重命名进行保护的原理,定义:
·一组相关函数,其中的相关函数易于借助于第二执行部分2peu在单元6中执行,而且可能地在数据处理***3和单元6之间传输数据,所述相关函数组能够是有限或者无限的,
·一组用于所述相关函数的触发命令,所述触发命令易于在数据处理***3中执行以及易于触发相应的相关函数在单元6中的执行,
·为每个触发的命令,定义一个次序,其至少部分地对应于由第一执行部分2pes传输到第二执行部分2peu的信息,以便触发相应相关函数的执行,所述次序具有触发命令的至少一个变元的形式,
·一种重命名被设计为在易受攻击软件2v的修改期间使用的命令的方法,这样的一种方法能够重命名这些次序以便获得具有重命名次序的触发命令,这些重命名次序能够隐藏相应相关函数身份,
·以及恢复模块20,其被设计成在使用阶段期间在该单元6中使用,而且能够由重命名次序恢复初始次序,以便恢复要执行的相关函数。
为了实现通过重命名进行保护的原理,还构造了这样的利用模块,其能够把一个空白单元60转换成为一个至少实现了恢复模块17的单元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中的执行触发将已经由具有未重命名次序的触发命令触发的相关函数的执行,但是对受保护软件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(R(fd3))到TRIG(R(fdN-1))表示;
·以及在时间tN处,显示具有重命名次序CDCRN的触发命令的执行,其向单元6传输重命名次序R(z),在单元6中触发命令,即存储区域z的标识借助于恢复模块20的恢复,然后借助于第二执行部分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中执行的相关函数的功能部分的信息,为至少一个相关函数定义一系列算法上等效的相关函数。
依据通过重命名进行保护原理的变体的第二优选实施例,通过使用标识字段为至少一个相关函数定义一系列算法上等效的相关函数。
依据通过重命名进行保护原理的一个最佳变体实施例,把一种能够加密次序以把它们转换成为重命名次序的加密方法定义为重命名次序的方法。记住次序的重命名在保护阶段P期间执行。对于这个最佳变体,恢复模块20是这样一个模块,其实现了一种能够解密重命名次序并且因此恢复要在单元6中执行的相关函数的标识的解密方法。所述恢复模块在单元6中实现并且能够具有软件或者硬件的特性。在使用阶段U期间每当具有重命名次序的触发命令在数据处理***3中执行,并以在单元6中触发相关函数的执行为目的时,所述恢复模块20是被要求的。
在先前相对于图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、...、S1i组成,将在每个段中执行各种不同的任务或者作业。
这个在前保护子阶段P1的第一段被称作“定义级S11”。在这个定义级S11期间:
·选择:
-单元6的类型。作为一个说明性示例,能够选择芯片读卡器8和与该读卡器相关联的芯片卡7作为单元6,
-以及被设计为在使用阶段U期间分别在数据处理***3和单元6中实现并且能够提供在数据处理***3和单元6之间的数据传输的传输模块12、13,
·以及在其中依据本发明的保护处理过程实现通过基本函数进行保护的原理的情况中,还定义:
-一组基本函数,其中的基本函数易于在单元6中执行,
-以及一组用于所述组基本函数的基本命令,所述基本命令易于在数据处理***3中执行而且触发基本函数在单元6中的执行,
·以及在其中依据本发明的保护处理过程实现通过检测和强制进行保护的原理的情况中,还定义:
-至少一个软件执行特征,其易于至少部分地在单元6中监控,
-为至少一个软件执行特征定义要遵循的至少一个准则,
-检测模块17,在单元6中实现而且能够检测至少一个软件执行特征没有遵循至少一个相关准则,
-以及强制模块18,其在该单元6中实现而且能够在当至少一个准则没有被遵循时,通知数据处理***3和/或修改软件的执行,
·以及在其中依据本发明的保护处理过程实现使用软件执行的一个度量的变量(a variable of measurement)作为特征、通过检测和强制进行保护的原理的情况中,还定义:
-一个软件的功能使用的度量的变量,作为易于监控的软件执行特征,
-至少一个和每个度量的变量相关的阈值,作为要遵循的准则,
-以及能够更新至少一个度量的变量的实现模块,
·以及在其中依据本发明的保护处理过程还实现了使用软件执行的一个度量的变量作为特征、通过检测和强制进行保护的原理的一个第一最佳变体实施例的情况中,还:
-为至少一个度量的变量,定义几个相关的阈值,
-以及定义对应于所述阈值中的每一个的不同强制模块,
·以及在其中依据本发明的保护处理过程实现了使用软件执行的度量变量作为特征、通过检测和强制进行保护原理的第二最佳变体实施例的情况中,还定义了这样的再装模块,其能够将至少一个附加的使用加到由一个度量的变量监控的至少一个软件功能中,
·以及在其中依据本发明的保护方法实现通过检测和强制进行保护的原理、且其中使用软件使用的简要表作为特征的情况中,还定义:
-软件使用的简要表(profile),作为易于监控的软件执行特征,
-以及至少一个软件执行特征,作为要遵循的准则,
·以及在其中依据本发明的保护处理过程实现使用对执行链接的监控作为要遵循的执行特征、通过检测和强制进行保护的原理的情况中,还定义:
-一个指令集,它的指令易于在单元6中执行,
-一组用于所述指令集的指令命令,所述指令命令易于在该数据处理***3中执行以及易于触发该指令在单元6中的执行,
-指令的链接,作为使用的简要表,
-一个用于该指令执行的期望链接,作为执行特征,
-允许检测该指令的链接没有对应于期望链接的模块,作为检测模块17,
-以及能够在当该指令的链接没有对应于期望链接时向数据处理***3通知和/或修改该受保护软件2p中的部分的功能的模块,作为强制模块18,
·以及在其中依据本发明的保护处理过程实现了使用对执行链的监控作为要遵循的执行特征、通过检测和强制进行保护的原理的一个最佳变体实施例的情况中,还定义了:
-一个这样的指令集作为指令集,其中的至少某些指令利用寄存器工作并且为了返回结果的目的而使用至少一个操作数,
-为至少一些利用寄存器工作的指令,定义:
◇指令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期间执行基本函数组中的基本函数,
·以及当还实现了通过检测和强制进行保护的原理时,构造:
-利用模块,其允许单元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中远程处理的基本函数的算法处理过程(多个),
-以及当还实现了通过检测和强制进行保护的原理时,要监控的执行特征(多个),以及可能地,易于被分为在单元6中远程处理的指令的算法处理过程(多个),
-以及当还实现了通过重命名进行保护的原理时,易于被分为在单元6中远程处理的相关函数而且用于它的触发命令的次序能够被重命名的算法处理过程(多个),
·以及,可能地,帮助产生受保护的软件或者自动化软件的保护。
这些不同的工具能够独立地执行或者组合起来执行,而且每个工具能够具有不同的形式,诸如例如预处理器、汇编器、编译器、等等。
在前保护子阶段P1后面继之以一个后续保护子阶段P2,其取决于要保护的易受攻击软件2v。这个后续保护子阶段P2同样由几个段组成。第一段被称作“创建级S21”,其对应于通过条件分支进行保护的原理的实现。在这个创建级S21期间,使用在定义级S11期间构造的选择。借助于所述选择以及可能地、在工具构造级S14期间构造的工具,通过以下方式创建受保护的软件2p:
·在易受攻击软件源2vs中选择至少一个条件分支,
·选择包含至少一个选择条件分支的易受攻击软件源2vs中的至少一部分,
·通过从易受攻击软件源2vs中产生受保护软件的源2ps,这是通过修改易受攻击软件源2vs的至少一个选择部分以获得受保护软件源2ps的至少一个修改部分来完成的,这个修改使得在受保护软件2p的执行期间:
-第一执行部分2pes在数据处理***3中执行而且第二执行部分2peu在一个在信息上载之后、从空白单元60中获得的单元6中执行,
-以及第二执行部分2peu至少执行至少一个选择的条件分支的功能,并且在数据处理***3的配置处放置一份允许第一执行部分2pes在选定地点继续它的执行的信息,
·以及产生:
-从受保护软件的源2ps中产生受保护软件2p的第一个目标部分2pos,所述第一目标部分2pos使得在受保护软件2p的执行期间,显现在数据处理***3中执行而且它的至少一部分考虑到至少一个选择条件分支在单元6中执行的第一执行部分2pes,
-以及受保护软件2p的第二目标部分2pou,所述第二目标部分2pou使得,在上载到空白单元60之后以及在受保护软件2p的执行期间,显现借助于其执行每个选择的条件分支的第二执行部分2peu。
自然地,依据本发明、通过条件分支进行保护的原理能够在一个新软件的开发期间直接应用而不需要一个易受攻击软件2v的先前实现。以这种方式,直接获得受保护的软件2p。
为了实现通过条件分支进行保护原理中的一个优选实施例,通过以下方式修改受保护的软件2p:
·在受保护软件的源2ps中选择至少一系列选择的条件分支,
·修改受保护软件源2ps中的至少一个选择部分,这个修改使得在受保护软件2p的执行期间,借助于第二执行部分2peu,在该单元6中执行条件分支的至少一个选择系列的整体功能,
·以及产生:
-受保护软件2p的第一目标部分2pos,所述第一目标部分2pos使得在受保护软件2p的执行期间,在单元6中执行条件分支至少一个选择系列的功能,
-以及该受保护软件2p的第二目标部分2pou,所述第二目标部分2pou使得,在上载到单元6之后以及在受保护软件2p的执行期间,显现第二执行部分2peu,借助于该部分2peu执行条件分支至少一个选择系列的整体功能。
在后续保护子阶段P2期间,以及当除了通过条件分支进行保护的原理之外应用至少另一个保护原理时,进行一个“修改级S22”。在这个修改级S22期间,使用在定义阶段S11期间涉及的定义。使用所述定义以及可能地,在工具构造级S14期间构造的工具,修改受保护的软件2p以允许实现依据在这之前定义的一个布置进行保护的原理。
当实现了通过临时分解进行保护的原理时,通过以下方式修改受保护的软件2p:
·在受保护软件的源2ps中选择:
-至少一个算法处理过程,其在受保护软件2p的执行期间,使用至少一个操作数,而且能够确定,至少部分地确定,一个选择条件分支的结果,
-包含至少一个选择算法处理过程的至少一个部分,
·修改受保护软件源2ps中的至少一个选择部分,这个修改使得:
-借助于第二执行部分2peu至少执行至少一个选择算法处理过程的功能,
-至少一个选择算法处理过程被拆分,以致在该受保护软件2p的执行期间,借助于第二执行部分2peu显现几个不同的步骤,即:
以及可能地,由单元6设置至少一个结果,供数据处理***3使用,
-对于至少一个选择的算法处理过程,步骤命令是这样定义以便在受保护软件2p的执行期间,每个步骤命令由第一执行部分2pes执行而且在单元6中触发,一个步骤借助于第二执行部分2peu的执行,
-以及在允许受保护软件2p执行的序列集合当中选择一个步骤命令序列,
·以及产生:
-受保护软件2p的第一目标部分2pos,所述第一目标部分2pos使得在受保护软件2p的执行期间,依据选择的序列执行步骤命令,
-以及受保护软件2p的第二目标部分2pou,所述第二目标部分2pou使得,在上载到单元6之后以及在受保护软件2p的执行期间,显示第二执行部分2peu,借助于其执行由第一执行部分2pes触发的步骤。
当实现了通过变量进行保护的原理时,通过以下方式修改受保护的软件2p:
·选择在至少一个选择算法处理过程中使用的至少一个变最,其在受保护软件2p的执行期间,部分地定义了受保护软件2p的状态,
·修改受保护软件源2ps中的至少一个选择部分,这个修改使得在受保护软件2p的执行期间,至少一个选择变量或者选择变量的至少一个拷贝驻留在单元6中,
·以及产生:
-受保护软件2p的第一目标部分2pos,所述第一目标部分2pos使得在受保护软件2p的执行期间,第一执行部分2pes的至少一个部分还考虑到至少一个变量或者变量的至少一个拷贝驻留在单元6中,
-以及该受保护软件2p的第二目标部分2pou。所述第二目标部分2pou使得,在上载到单元6之后以及在受保护软件2p的执行期间,显示第二执行部分,借助于该部分至少一个选择变量,或者选择变量的至少一个拷贝也驻留在该单元6中。
当实现了通过基本函数进行保护的原理时,通过以下方式修改受保护的软件2p:
·在受保护软件源2ps中选择至少一个步骤,其在受保护软件2p的执行期间执行算法处理过程中的功能,
·修改受保护软件源2ps中的至少一个选择部分,这个修改使得:
-至少一个选择步骤被拆分以便在该受保护软件2p的执行期间,所述步骤借助于第二执行部分2peu、使用基本函数执行,
-对于至少一个选择的步骤,基本命令被集成到受保护软件的源2ps中,以便在受保护软件2p的执行期间,每个基本命令由第一执行部分2pes执行以及在单元6中触发基本函数借助于第二执行部分2peu的执行,
-以及在允许受保护软件2p执行的序列集合当中选择一个基本命令序列,
·以及产生:
-受保护软件2p的第一目标部分2pos,所述第一目标部分2pos使得在受保护软件2p的执行期间,依据选择的序列执行基本命令,
-以及还包含利用模块的受保护软件2p的第二目标部分2pou,所述第二目标部分2pou使得,在上载到单元6之后以及在受保护软件2p的执行期间,显示第二执行部分2peu,借助于其执行由第一执行部分2pes触发的基本函数。
当实现了通过检测以及强制进行保护的原理时,通过以下方式修改受保护的软件2p:
·在易于监控的软件执行特征当中选择要监控的至少一个软件执行特征,
·为至少一个选择的软件执行特征选择要遵循的至少一个准则,
·在受保护软件的源2ps中选择基本函数,将为该基本函数监控至少一个选择的软件执行特征,
·修改受保护软件源2ps的至少一个选择部分,这个修改使得在受保护软件2p的执行期间,借助于第二执行部分2peu监控至少一个选择执行特征,而且一个准则没有被遵循的事实导致通知数据处理***3和/或对受保护软件2p执行的修改,
·以及产生包含还实现了检测模块17和强制模块18的利用模块的受保护软件2p的第二目标部分2pou,所述第二目标部分2pou使得,在上载到单元6之后以及在受保护软件2p的执行期间,监控至少一个软件执行特征以及一个准则没有被遵循的事实导致通知数据处理***3和/或对受保护软件2p执行的修改。
为了实现使用软件执行的度量变量作为特征、通过检测和强制进行保护的原理,通过以下方式修改受保护的软件2p:
·选择至少一个软件功能使用的至少一个度量的变量,作为要监控的软件执行特征,
·选择:
-受保护软件2p的至少一个功能,其的使用易于使用一个度量变量进行监控,
-用于量化所述功能使用的至少一个度量的变量,
-至少一个阈值,其与对应于所述功能使用的限制的一个选择的度量的变量相关,
-以及至少一种取决于所述功能的使用更新一个选择的度量的变量的方法,
·以及修改受保护软件源2ps的至少一个选择部分,这个修改使得在受保护软件2p的执行期间,取决于所述功能的使用、借助于第二执行部分2peu实现该度量变量,以及考虑至少一个阈值跨越。
为了实现使用一个度量的变量作为特征、通过检测和强制进行保护的原理的第一最佳变体实施例,通过以下方式修改受保护的软件2p:
·在受保护软件的源2ps中选择至少一个选择的度量的变量,其中这些度量的变量必须和对应于该功能使用的不同限制的几个阈值相关,
·选择至少两个和选择的度量的变量相关的阈值,
·以及修改受保护软件源2ps的至少一个选择部分,这个修改使得在受保护软件2p的执行期间,借助于第二执行部分2peu不同地考虑各个阈值的跨越。
为了实现使用一个度量的变量作为特征、通过检测和强制进行保护的原理的第二最佳变体实施例,通过以下方式修改受保护的软件2p:
·在受保护软件的源2ps中,选择至少一个选择的度量的变量,其能够限制一个功能的使用以及必须能够用至少一个附加的使用而被相信,
·以及修改至少一个选择部分,这个修改使得在一个称作再装的阶段期间,对应于一个选择的度量的变量的至少一个功能的至少一个附加使用能够被相信。
为了实现使用软件使用的简要表作为特征、通过检测和强制进行保护的原理,通过以下方式修改受保护软件2p:
·选择至少一个软件使用的简要表作为要监控的软件执行特征,
·选择至少一个执行特征,其中至少一个选择的使用简要表必须遵守所述特征,
·以及修改受保护软件源2ps中的至少一个选择部分,这个修改使得在受保护软件2p的执行期间,第二执行部分2peu遵循所有选择的执行特征,
为了实现使用对用于执行链接的监控作为要遵循的执行特征、通过检测和强制进行保护的原理,通过以下方式修改受保护的软件2p:
·通过以下步骤修改受保护软件源2ps中的至少一个选择部分:
-把基本函数转换变成指令,
-指定这样的链接,其必须由至少一些指令在它们在单元6中执行的期间遵守,
-以及把基本命令转换成对应于使用的指令的指令命令,
当实现了通过重命名进行保护的原理时,通过以下方式修改受保护的软件2p:
·在受保护软件的源2ps中选择触发命令,
·通过重命名选择的触发命令的次序来修改受保护软件源2ps中的至少一个选择部分,以便隐藏相应相关函数的身份,
·以及产生:
-受保护软件2p的第一目标部分2pos,所述第一目标部分2pos使得在受保护软件2p的执行期间,执行具有重命名次序的触发命令,
-以及受保护软件2p的第二目标部分2pou,其包含还实现了恢复模块20的利用模块,所述第二目标部分2pou使得,在上载到单元6之后以及在受保护软件2p的执行期间,借助于第二执行部分2peu恢复其的执行由第一执行部分2pes触发的相关函数的身份,而且该相关的函数借助于第二执行部分2peu执行。
为了实现通过重命名进行保护原理的一个变体,通过以下方式修改受保护的软件2p:
·在受保护软件的源2ps中选择至少一个具有重命名次序的触发命令,
·以及通过至少用另一个重命名次序替换一个具有重命名次序的选择触发命令中的重命名次序,来修改受保护软件源2ps中的至少一个选择部分,其中另一个重命名次序触发同一系列中的相关函数。
自然地,依据本发明的保护原理能够在一个新软件的开发期间直接应用而不需要中间受保护软件部分的先前执行。以这种方式,创建级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的所述部分仅仅在所述处理和存储单元的联合使用期间是可访问的。
Claims (45)
1.一种保护易受攻击的软件(2v)免受其未被授权使用的方法,使用至少包含存储模块(15)和处理模块(16)的至少一个空白单元(60),所述易受攻击软件(2v)在一个数据处理***(3)上运行,所述保护方法包括:
→在保护阶段(P)期间:
·通过以下步骤创建一个受保护的软件(2p):
-在易受攻击软件的源(2vs)中选择至少一个条件分支,
-选择易受攻击软件的源(2vs)中的至少一部分,其中包含至少一个选择条件分支,
-由易受攻击软件源(2vs)产生受保护软件的源(2ps),通过修改易受攻击软件的源(2vs)中的至少一个选择部分,以获得受保护软件的源(2ps)的至少一个修改部分,这个修改使得在受保护软件(2p)的执行期间:
在数据处理***(3)中执行第一执行部分(2pes),在单元(6)中执行第二执行部分(2peu),单元(6)是在信息上载后、由空白单元(60)而获得的,
-以及产生:
受保护软件(2p)的第一目标部分(2pos),其由受保护软件的源(2ps)产生,所述第一目标部分(2pos)使得在受保护软件(2p)的执行期间,显现在数据处理***(3)中执行的第一执行部分(2pes),其至少一部分考虑到至少一个选择的条件分支在单元(6)中执行,
以及受保护软件(2p)的第二目标部分(2pou),所述第二目标部分(2pou)使得在上载到空白单元(60)后以及在受保护软件(2p)的执行期间,显现第二执行部分(2peu),借助于第二执行部分(2peu)执行每个选择的条件分支,
·以及上载第二目标部分(2pou)到空白单元(60),以便获得单元(6),
→以及在执行受保护的软件(2p)的使用阶段(U)期间,以如下方式执行受保护的软件(2p):
·在存在单元(6)以及每当第一执行部分(2pes)中的一部分利用它时,在单元(6)中执行一个条件分支的功能,以便所述部分被正确地执行,以及因此,受保护软件(2p)完全起作用,
·以及,在不存在单元(6)和尽管由第一执行部分(2pes)中的一部分请求在单元(6)中执行一个条件分支的功能时,不能正确地满足所述请求,使得至少所述部分不被正确地执行,而且因此,受保护软件(2p)不完全起作用。
2.如权利要求1所示的方法,包含,在保护阶段(P)期间,通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择至少一系列选择的条件分支,
-修改受保护软件的源(2ps)中的至少一个选择部分,这个修改使得在受保护软件(2p)的执行期间,借助于第二执行部分(2peu),在该单元(6)中执行条件分支的至少一个选择系列的总体功能,
-以及产生:
受保护软件(2p)的第一目标部分(2pos),所述第一目标部分(2pos)使得在受保护软件(2p)的执行期间,在单元(6)中执行条件分支的至少一个选择系列的功能,
以及该受保护软件(2p)的第二目标部分(2pou),所述第二目标部分(2pou)使得在上载到单元(6)后以及在受保护软件(2p)的执行期间,显现第二执行部分(2peu),借助于该第二执行部分执行条件分支的至少一个选择系列的整体功能。
3.如权利要求1所述的方法,包含:
→在该保护阶段(P)期间:
·通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择:
至少一个算法处理,在受保护软件(2p)的执行期间,所述处理使用至少一个操作数,而且能够至少部分地确定一个选择条件分支的结果,
包含至少一个选择算法处理的至少一部分,
-修改受保护软件的源(2ps)中的至少一个选择部分,这个修改使得:
借助于第二执行部分(2peu)至少执行至少一个选择算法处理的功能,
◇设置至少一个操作数,供单元(6)使用,
◇在单元(6)中执行对至少所述操作数的算法处理的功能,
◇以及可能地,由单元(6)设置至少一个结果,供数据处理***(3)使用,
对于至少一个选择的算法处理,定义步骤命令,使得在受保护软件(2p)的执行期间,每个步骤命令由第一执行部分(2pes)执行,而且借助于第二执行部分(2peu)在单元(6)中触发步骤的执行,
-以及产生:
以及受保护软件(2p)的第二目标部分(2pou),所述第二目标部分(2pou)使得在上载到单元(6)之后以及在受保护软件(2p)的执行期间,显现第二执行部分(2peu),借助于该第二执行部分执行由第一执行部分(2pes)触发的步骤,
→以及在该使用阶段(U)期间:
·在存在单元(6)以及每当包含在第一执行部分(2pes)的一部分中的一个步骤命令利用它时,在单元(6)中执行相应的步骤,以便所述部分被正确地执行,以及因此,受保护软件(2p)完全起作用,
·以及在没有单元(6)的情况下,尽管由第一执行部分(2pes)中的一部分请求在单元(6)中触发步骤的执行,也不能正确地满足所述请求,使得至少所述部分没有被正确地执行,而且因此,受保护软件(2p)不完全起作用。
4.如权利要求2所述的方法,包含:
→在该保护阶段(P)期间:
·通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择:
-修改受保护软件的源(2ps)中的至少一个选择部分,这个修改使得:
至少一个选择的算法处理过程被拆分,使得在该受保护软件(2p)的执行期间,借助于第二执行部分(2peu)显现若干个不同的步骤,即:
◇设置至少一个操作数,供单元(6)使用,
◇在单元(6)中执行对至少所述操作数的算法处理的功能,
◇以及可能地,由单元(6)设置至少一个结果,供数据处理***(3)使用,
以及在允许受保护软件(2p)执行的序列集合当中选择一个序列的步骤命令,
-以及产生:
受保护软件(2p)的第一目标部分(2pos),所述第一目标部分(2pos)使得在受保护软件(2p)的执行期间,依据选择的序列执行所述步骤命令,
以及受保护软件(2p)的第二目标部分(2pou),所述第二目标部分(2pou)使得在上载到单元(6)之后以及在受保护软件(2p)的执行期间,显现第二执行部分(2peu),借助于该第二执行部分执行由第一执行部分(2pes)触发的步骤,
→以及在该使用阶段(U)期间:
·在存在单元(6)以及每当包含在第一执行部分(2pes)的一部分中的一个步骤命令利用它时,在单元(6)中执行相应的步骤,以便所述部分被正确地执行,以及因此,受保护软件(2p)完全起作用,
·以及在没有单元(6)的情况下,尽管由第一执行部分(2pes)中的一部分请求在单元(6)中触发步骤的执行,也不能正确地满足所述请求,使得至少所述部分没有被正确地执行,而且因此,受保护软件(2p)不完全起作用。
5.如权利要求3或4所述的方法,包含:
→在保护阶段(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)没有完全地起作用。
6.如权利要求3所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-一组基本函数,其中的基本函数易于在单元(6)中执行,
-以及用于所述基本函数组的一组基本命令,所述基本命令易于在数据处理***(3)中执行,并触发基本函数在单元(6)中的执行,
·构造允许单元(6)执行所述组中的基本函数的利用模块,所述基本函数的执行由基本命令在数据处理***(3)中的执行所触发,
·以及通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择至少一个步骤,其在受保护软件(2p)的执行期间执行算法处理的功能,
-修改受保护软件的源(2ps)中的至少一个选择部分,这个修改使得:
至少一个选择步骤被拆分,以便在该受保护软件(2p)的执行期间,所述步骤借助于第二执行部分(2peu)、使用基本函数执行,
对于至少一个选择的步骤,基本命令被集成到受保护软件的源(2ps)中,以便在受保护软件(2p)的执行期间,每个基本命令由第一执行部分(2pes)执行以及在单元(6)中触发基本函数借助于第二执行部分(2peu)的执行,
以及在允许受保护软件(2p)执行的序列集合当中选择一个基本命令序列,
-以及产生:
以及还包含利用模块的受保护软件(2p)的第二目标部分(2pou),所述第二目标部分(2pou)使得在上载到单元(6)之后以及在受保护软件(2p)的执行期间,显现第二执行部分(2peu),借助于第二执行部分执行由第一执行部分(2pes)触发的基本函数,
→以及在该使用阶段步骤(U)期间:
·在存在单元(6)以及每当包含在第一执行部分(2pes)一部分中的一个基本命令利用它时,在单元(6)中执行相应的基本函数,以便所述部分被正确地执行,以及因此,受保护软件(2p)完全起作用,
·以及在没有单元(6)的情况下,尽管由第一执行部分(2pes)中的一部分请求触发在单元(6)中执行一个基本函数,也不能正确地满足所述请求,使得至少所述部分没有被正确地执行,而且因此,受保护软件(2p)没有完全地起作用。
7.如权利要求4所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-一组基本函数,其中的基本函数易于在单元(6)中执行,
-以及用于所述基本函数组的一组基本命令,所述基本命令易于在数据处理***(3)中执行,并触发基本函数在单元(6)中的执行,
·构造允许单元(6)执行所述组中的基本函数的利用模块,所述基本函数的执行由基本命令在数据处理***(3)中的执行所触发,
·以及通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择至少一个步骤,其在受保护软件(2p)的执行期间执行算法处理的功能,
-修改受保护软件的源(2ps)中的至少一个选择部分,这个修改使得:
至少一个选择步骤被拆分,以便在该受保护软件(2p)的执行期间,所述步骤借助于第二执行部分(2peu)、使用基本函数执行,
对于至少一个选择的步骤,基本命令被集成到受保护软件的源(2ps)中,以便在受保护软件(2p)的执行期间,每个基本命令由第一执行部分(2pes)执行以及在单元(6)中触发基本函数借助于第二执行部分(2peu)的执行,
-以及产生:
以及还包含利用模块的受保护软件(2p)的第二目标部分(2pou),所述第二目标部分(2pou)使得在上载到单元(6)之后以及在受保护软件(2p)的执行期间,显现第二执行部分(2peu),借助于第二执行部分执行由第一执行部分(2pes)触发的基本函数,
→以及在该使用阶段步骤(U)期间:
·在存在单元(6)以及每当包含在第一执行部分(2pes)一部分中的一个基本命令利用它时,在单元(6)中执行相应的基本函数,以便所述部分被正确地执行,以及因此,受保护软件(2p)完全起作用,
以及在没有单元(6)的情况下,尽管由第一执行部分(2pes)中的一部分请求触发在单元(6)中执行一个基本函数,也不能正确地满足所述请求,使得至少所述部分没有被正确地执行,而且因此,受保护软件(2p)没有完全地起作用。
8.如权利要求6或7所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-至少一个软件执行特征,其易于至少部分地在单元(6)中被监控,
-需遵循的至少一个准则,用于至少一个软件执行特征,
-检测模块(17),在单元(6)中实现而且能够检测至少一个软件执行特征没有遵循至少一个相关准则,
-以及强制模块(18),其在该单元(6)中实现而且能够在当至少一个准则没有被遵循时,通知数据处理***(3)和/或修改软件的执行。
·构造利用模块,其允许单元(6)还实现检测模块(17)和强制模块(18),
·以及通过以下步骤修改受保护的软件(2p):
-在易于监控的软件执行特征当中选择要监控的至少一个软件执行特征,
-为至少一个选择的软件执行特征选择要遵循的至少一个准则,
-在受保护软件的源(2ps)中选择若干个基本函数,监控至少一个选择的软件执行特征用于所述基本函数,
-修改受保护软件的源(2ps)的至少一个选择部分,这个修改使得在受保护软件(2p)的执行期间,借助于第二执行部分(2peu)监控至少一个选择的执行特征,而且没有遵循准则的事实导致通知数据处理***(3)和/或受保护软件(2p)的执行的修改,
-以及产生包含利用模块的受保护软件(2p)的第二目标部分(2pou),该利用模块还实现了检测模块(17)和强制模块(18),所述第二目标部分(2pou)使得在上载到单元(6)之后以及在受保护软件(2p)的执行期间,监控至少一个软件执行特征,以及没有遵循准则的事实导致通知数据处理***(3)和/或对受保护软件(2p)的执行的修改,
→以及在使用阶段(U)期间:
·在存在单元(6)时:
-只要对应于受保护软件(2p)所有修改部分中的所有被监控的执行特征的所有准则被遵循,就允许受保护软件(2p)的所述部分标称运行,以及因此允许受保护软件(2p)标称运行,
-以及如果对应于受保护软件(2p)一部分的一个监控的执行特征的至少一个准则没有被遵循的话,向数据处理***(3)通知它和/或修改受保护软件(2p)中这部分的功能,以便修改受保护软件(2p)的功能。
9.如权利要求8所述的方法,为了限制受保护软件(2p)的使用,包含:
→在保护阶段(P)期间:
·定义:
-度量软件功能的使用的变量,作为易于监控的软件执行特征,
-至少一个和每个度量的变量相关的阈值,作为要遵循的准则,
-以及能够更新至少一个度量的变量的实现模块,
·构造允许该单元(6)也实现该实现模块的利用模块,
·以及通过以下步骤修改受保护的软件(2p):
-选择度量一个软件至少一个功能的使用的至少一个变量,作为要监控的软件执行特征,
-选择:
受保护软件(2p)的至少一个功能,其使用易于使用度量的变量进行监控,
用于量化所述功能的使用的至少一个度量的变量,
以及取决于所述功能的使用、更新一个选择的度量的变量的至少一种方法,
-以及修改受保护软件的源(2ps)的至少一个选择部分,这个修改使得在受保护软件(2p)的执行期间,取决于所述功能的使用、借助于第二执行部分(2peu)实现该度量的变量,以及考虑至少一个阈值跨越。
→以及在使用阶段(U)期间,在存在单元(6)、以及在其中对应于使用的至少一个限制的至少一个阈值跨越被检测到的情况中,将它通知给数据处理***(3)和/或修改该受保护软件(2p)该部分的功能,以便修改该受保护软件(2p)的功能。
10.如权利要求9所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-若干个相关的阈值,用于至少一个度量的变量,
-以及对应于所述阈值中的每一个的不同强制模块,
·以及通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择至少一个选择的度量的变量,其中这些度量的变量必须和对应于该功能使用的不同限制的若干个阈值相关,
-选择与选择的度量的变量相关的至少两个阈值,
-以及修改受保护软件的源(2ps)的至少一个选择部分,这个修改使得在受保护软件(2p)的执行期间,借助于第二执行部分(2peu)不同地考虑各个阈值的跨越,
→以及在使用阶段(U)期间:
·在存在单元(6)时:
-在其中第一阈值的跨越被检测到的情况中,命令受保护的软件(2p)不再使用相应的功能,
-以及在其中第二阈值的跨越被检测到的情况中,使相应功能和/或受保护软件(2p)的至少一部分无效。
11.如权利要求9所述的方法,包含:
→在保护阶段(P)期间:
·定义再装模块,其能够利用至少一个附加的使用相信由一个度量的变量监控的至少一个软件功能,
·构造也允许该单元(6)实现再装模块的利用模块,
·以及通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中,选择至少一个选择的度量的变量,其能够限制一个功能的使用以及必须能够利用至少一个附加的使用相信该功能,
-以及修改至少一个选择部分,这个修改使得在一个称作再装的阶段期间,对应于一个选择的度量的变量的至少一个功能的至少一个附加使用能够被相信,
→以及在再装阶段期间:
·重新实现至少一个选择的度量的变量和/或至少一个相关的阈值,以便允许该功能的至少一个附加的使用。
12.如权利要求8所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-一个软件使用的简要表,作为易于监控的软件执行特征,
-以及至少一个软件执行特征,作为要遵循的准则,
·以及通过以下步骤修改受保护的软件(2p):
-选择至少一个软件使用的简要表作为要监控的软件执行特征,
-选择至少一个选择的使用简要表必须要遵守的至少一个执行特征,
-以及修改受保护软件的源(2ps)中的至少一个选择部分,这个修改使得在受保护软件(2p)的执行期间,第二执行部分(2peu)遵循所有选择的执行特征,
→以及在使用阶段(U)期间,在存在该单元(6)、以及在检测到至少一个执行特征没有被遵循的情况中,将其通知给数据处理***(3)和/或修改该受保护软件(2p)的部分的功能,以便修改受保护软件(2p)的功能。
13.如权利要求12所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-一个指令集,它的指令易于在单元(6)中执行,
-一组用于所述指令集的指令命令,所述指令命令易于在该数据处理***(3)中执行以及易于触发所述指令在单元(6)中的执行,
-指令的链接,作为使用的简要表,
-一个用于所述指令执行的期望链接,作为执行特征,
-用于检测所述指令的链接没有对应于期望链接的模块,作为检测模块(17),
-以及用于在当所述指令的链接没有对应于期望链接时,通知数据处理***(3)和/或修改该受保护软件(2p)的部分的功能的模块,作为强制模块(18),
·构造也允许单元(6)执行该指令集中的指令的利用模块,所述指令的执行由指令命令在该数据处理***(3)中的执行触发,
·以及通过以下步骤修改受保护的软件(2p):
-通过以下步骤修改受保护软件的源(2ps)中的至少一个选择部分:
指定在至少一部分所述指令在单元(6)中执行期间必须遵守的链接,
→以及在使用阶段(U)期间,在存在单元(6)、以及在检测到在单元(6)中执行的指令的链接没有对应于期望链接的情况中,将其通知给数据处理***(3)和/或修改该受保护软件(2p)中的部分的功能,以便修改该受保护软件(2p)的功能。
14.如权利要求13所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-一个指令集作为指令集,其中的至少部分指令利用寄存器,并且使用至少一个操作数以便返回结果,
-为至少一部分利用寄存器的指令,定义:
定义该指令的功能的部分(PF),
以及定义用于所述指令执行的期望链接的部分,而且该部分包含对应于下列部分的位字段:
指令(CII)的标识字段,
◇标记字段(CDk),
◇以及操作数的一个期望标识字段(CIPk),
-对于每个属于该利用模块并且由指令集使用的寄存器,定义一个产生的标识字段(CIGV),其中自动地存储已经在所述寄存器中返回它的结果的最后指令的标识,
-定义这样的模块作为检测模块(17),该模块允许在一个指令的执行期间,当标记字段(CDk)使用操作数时,为每个操作数检查对应于由所述操作数使用的寄存器的产生标识字段(CIGV)和所述操作数来源的期望标识字段(CIPk)的等同性,
-以及定义这样的模块作为强制模块(18),该模块能够在如果检查的至少一个等同性是错误时修改指令的结果。
15.如权利要求6所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-一个指令集,它的指令易于在单元(6)中执行,
-一组用于所述指令集的指令命令,所述指令命令易于在该数据处理***(3)中执行以及易于触发所述指令在单元(6)中的执行,
-所述指令的链接易于在单元(6)中至少部分地被监控,
-在软件执行期间必须遵守期望链接,
-检测模块(17),实现在单元(6)中并用以检测所述指令的链接没有遵守期望,
-强制模块(18),实现在单元(6)中并用以在当所述指令的链接没有对应于期望链接时,通知数据处理***(3)和/或修改软件的执行,
·构造利用模块,其也允许单元(6)执行该指令集中的指令,并实现检测模块(17)和强制模块(18),
·以及通过以下步骤修改受保护的软件(2p):
-通过以下步骤修改受保护软件的源(2ps)中的至少一个选择部分:
把基本函数转换变成指令,
在受保护软件的源(2ps)中选择其链接将被监控的指令,
以及把基本命令转换成对应于使用的指令的指令命令,
-这个修改使得在受保护的软件(2p)执行期间,借助于第二执行部分(2peu)监控指令的链接,未遵守期望连接的事实导致该数据处理***(3)被通知和/或修改受保护的软件(2p)的执行,
-产生受保护的软件(2p)的第二目标部分(2pou),该第二目标部分(2pou)包括也允许单元(6)执行该指令集中的指令、并实现检测模块(17)和强制模块(18)的利用模块,所述第二目标部分(2pou)使得在上载到单元(6)之后、以及在受保护软件(2p)的执行期间,监控指令的链接,未遵守期望连接的事实导致该数据处理***(3)被通知和/或修改受保护的软件(2p)的执行,
→以及在使用阶段(U)期间,
·在存在单元(6)的情况下:
-只要指令的链接对应于受保护软件(2p)的所有修改部分中的期望链接,就允许受保护软件(2p)的所述部分标称运行,以及因此允许受保护软件(2p)标称运行,
-以及如果在受保护软件(2p)的一部分中检测到在单元(6)中执行的指令的链接不对应于该期望链接,则将其通知数据处理***(3)和/或修改受保护软件(2p)中这部分的功能,以便修改受保护软件(2p)的功能。
16.如权利要求7所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-一个指令集,它的指令易于在单元(6)中执行,
-一组用于所述指令集的指令命令,所述指令命令易于在该数据处理***(3)中执行以及易于触发所述指令在单元(6)中的执行,
-所述指令的链接易于在单元(6)中至少部分地被监控,
-在软件执行期间必须遵守期望链接,
-检测模块(17),实现在单元(6)中并用以检测所述指令的链接没有遵守期望,
-强制模块(18),实现在单元(6)中并用以在当所述指令的链接没有对应于期望链接时,通知数据处理***(3)和/或修改软件的执行,
·构造利用模块,其也允许单元(6)执行该指令集中的指令,并实现检测模块(17)和强制模块(18),
·以及通过以下步骤修改受保护的软件(2p):
-通过以下步骤修改受保护软件的源(2ps)中的至少一个选择部分:
在受保护软件的源(2ps)中选择其链接将被监控的指令,
以及把基本命令转换成对应于使用的指令的指令命令,
-这个修改使得在受保护的软件(2p)执行期间,借助于第二执行部分(2peu)监控指令的链接,未遵守期望连接的事实导致该数据处理***(3)被通知和/或修改受保护的软件(2p)的执行,
-产生受保护的软件(2p)的第二目标部分(2pou),该第二目标部分(2pou)包括也允许单元(6)执行该指令集中的指令、并实现检测模块(17)和强制模块(18)的利用模块,所述第二目标部分(2pou)使得在上载到单元(6)之后、以及在受保护软件(2p)的执行期间,监控指令的链接,未遵守期望连接的事实导致该数据处理***(3)被通知和/或修改受保护的软件(2p)的执行,
→以及在使用阶段(U)期间,
·在存在单元(6)的情况下:
-只要指令的链接对应于受保护软件(2p)的所有修改部分中的期望链接,就允许受保护软件(2p)的所述部分标称运行,以及因此允许受保护软件(2p)标称运行,
-以及如果在受保护软件(2p)的一部分中检测到在单元(6)中执行的指令的链接不对应于该期望链接,则将其通知数据处理***(3)和/或修改受保护软件(2p)中这部分的功能,以便修改受保护软件(2p)的功能。
17.如权利要求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)没有完全地起作用。
18.如权利要求17所述的方法,包含:
→在保护阶段(P)期间:
·为至少一个相关函数定义在算法上等效、但是由重命名次序不同的触发命令触发的一系列相关函数,
·以及通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择至少一个具有重命名次序的触发命令,
-以及通过至少用另一个重命名的次序替换一个具有重命名次序的选择触发命令中的重命名次序,来修改受保护软件的源(2ps)中的至少一个选择部分,其中另一个重命名的次序触发同一系列中的相关函数。
19.如权利要求18所述的方法,包含:
→在保护阶段(P)期间,通过以下步骤为至少一个相关函数定义一系列算法上等效的相关函数:
-把一个噪声字段连接到定义相关函数中的功能部分的信息,以在单元(6)中执行,
-或者使用指令的标识字段(CII)以及操作数的期望标识字段(CIPk)。
20.如权利要求17、18或者19所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-加密所述次序的加密方法,作为重命名次序的方法,
-以及作为恢复模块(20)的模块,其实现了一种解密方法来解密重命名的次序以及因此恢复相关函数的身份,以在单元(6)中执行。
21.如权利要求7所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-基本命令,作为触发命令,
-基本函数,作为相关函数,
-至少一个用于触发命令的变元,作为次序,该次序至少部分地对应于由数据处理***(3)传输到单元(6)、以便触发相应的相关函数的执行的信息,
-重命名所述次序的方法,其允许重命名所述次序以便获得具有重命名次序的触发命令,
-以及恢复模块(20),其被设计成在使用阶段(U)期间在单元(6)中使用,而且允许由重命名的次序恢复要执行的相关函数,
·构造使该单元(6)也实现该恢复模块的利用模块,
·以及通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择触发命令,
-通过重命名选择的触发命令的次序,修改受保护软件源(2ps)中的至少一个选择部分,以便隐藏相应相关函数的身份,
-以及产生:
以及受保护软件(2p)的第二目标部分(2pou),其包含还实现了恢复模块(20)的利用模块,所述第二目标部分(2pou)使得在上载到单元(6)之后、以及在受保护软件(2p)的执行期间,借助于第二执行部分(2peu)恢复其执行由第一执行部分(2pes)触发的相关函数的身份,而且所述相关函数借助于第二执行部分(2peu)被执行;
→以及在使用阶段(U)期间:
·在存在单元(6)以及每当包含在第一执行部分(2pes)的一部分中的具有重命名次序的触发命令利用它时,在单元(6)中恢复相应相关函数的身份并且执行它,以便所述部分被正确地执行,以及因此,受保护软件(2p)完全起作用,
-以及在没有单元(6)的情况下,尽管由第一执行部分(2pes)中的一部分请求触发在单元(6)中执行一个相关函数,也不能正确地满足所述请求,使得至少所述部分没有被正确地执行,而且因此,受保护软件(2p)没有完全地起作用。
22.如权利要求21所述的方法,包含:
→在保护阶段(P)期间:
·为至少一个相关函数定义在算法上等效、但是由重命名次序不同的触发命令触发的一系列相关函数,
·以及通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择至少一个具有重命名次序的触发命令,
-以及通过至少用另一个重命名的次序替换一个具有重命名次序的选择触发命令中的重命名次序,来修改受保护软件的源(2ps)中的至少一个选择部分,其中另一个重命名的次序触发同一系列中的相关函数。
23.如权利要求22所述的方法,包含:
→在保护阶段(P)期间,通过以下步骤为至少一个相关函数定义一系列算法上等效的相关函数:
-把一个噪声字段连接到定义相关函数中的功能部分的信息,以在单元(6)中执行,
-或者使用指令的标识字段(CII)以及操作数的期望标识字段(CIPk)。
24.如权利要求21、22或者23所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-加密所述次序的加密方法,作为重命名次序的方法,
-以及作为恢复模块(20)的模块,其实现了一种解密方法来解密重命名的次序以及因此恢复相关函数的身份,以在单元(6)中执行。
25.如权利要求15所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-基本命令,作为触发命令,
-基本函数,作为相关函数,
-至少一个用于触发命令的变元,作为次序,该次序至少部分地对应于由数据处理***(3)传输到单元(6)、以便触发相应的相关函数的执行的信息,
-重命名所述次序的方法,其允许重命名所述次序以便获得具有重命名次序的触发命令,
-以及恢复模块(20),其被设计成在使用阶段(U)期间在单元(6)中使用,而且允许由重命名的次序恢复要执行的相关函数,
·构造使该单元(6)也实现该恢复模块的利用模块,
·以及通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择触发命令,
-通过重命名选择的触发命令的次序,修改受保护软件源(2ps)中的至少一个选择部分,以便隐藏相应相关函数的身份,
-以及产生:
受保护软件(2p)的第一目标部分(2pos),所述第一目标部分(2pos)使得在受保护软件(2p)的执行期间,执行具有重命名次序的触发命令,
以及受保护软件(2p)的第二目标部分(2pou),其包含还实现了恢复模块(20)的利用模块,所述第二目标部分(2pou)使得在上载到单元(6)之后、以及在受保护软件(2p)的执行期间,借助于第二执行部分(2peu)恢复其执行由第一执行部分(2pes)0触发的相关函数的身份,而且所述相关函数借助于第二执行部分(2peu)被执行;
→以及在使用阶段(U)期间:
·在存在单元(6)以及每当包含在第一执行部分(2pes)的一部分中的具有重命名次序的触发命令利用它时,在单元(6)中恢复相应相关函数的身份并且执行它,以便所述部分被正确地执行,以及因此,受保护软件(2p)完全起作用,
-以及在没有单元(6)的情况下,尽管由第一执行部分(2pes)中的一部分请求触发在单元(6)中执行一个相关函数,也不能正确地满足所述请求,使得至少所述部分没有被正确地执行,而且因此,受保护软件(2p)没有完全地起作用。
26.如权利要求25所述的方法,包含:
→在保护阶段(P)期间:
·为至少一个相关函数定义在算法上等效、但是由重命名次序不同的触发命令触发的一系列相关函数,
·以及通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择至少一个具有重命名次序的触发命令,
-以及通过至少用另一个重命名的次序替换一个具有重命名次序的选择触发命令中的重命名次序,来修改受保护软件的源(2ps)中的至少一个选择部分,其中另一个重命名的次序触发同一系列中的相关函数。
27.如权利要求26所述的方法,包含:
→在保护阶段(P)期间,通过以下步骤为至少一个相关函数定义一系列算法上等效的相关函数:
-把一个噪声字段连接到定义相关函数中的功能部分的信息,以在单元(6)中执行,
-或者使用指令的标识字段(CII)以及操作数的期望标识字段(CIPk)。
28.如权利要求25、26或者27所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-加密所述次序的加密方法,作为重命名次序的方法,
-以及作为恢复模块(20)的模块,其实现了一种解密方法来解密重命名的次序以及因此恢复相关函数的身份,以在单元(6)中执行。
29.如权利要求16所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-基本命令,作为触发命令,
-基本函数,作为相关函数,
-至少一个用于触发命令的变元,作为次序,该次序至少部分地对应于由数据处理***(3)传输到单元(6)、以便触发相应的相关函数的执行的信息,
-重命名所述次序的方法,其允许重命名所述次序以便获得具有重命名次序的触发命令,
-以及恢复模块(20),其被设计成在使用阶段(U)期间在单元(6)中使用,而且允许由重命名的次序恢复要执行的相关函数,
·构造使该单元(6)也实现该恢复模块的利用模块,
·以及通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择触发命令,
-通过重命名选择的触发命令的次序,修改受保护软件源(2ps)中的至少一个选择部分,以便隐藏相应相关函数的身份,
-以及产生:
以及受保护软件(2p)的第二目标部分(2pou),其包含还实现了恢复模块(20)的利用模块,所述第二目标部分(2pou)使得在上载到单元(6)之后、以及在受保护软件(2p)的执行期间,借助于第二执行部分(2peu)恢复其执行由第一执行部分(2pes)触发的相关函数的身份,而且所述相关函数借助于第二执行部分(2peu)被执行;
→以及在使用阶段(U)期间:
·在存在单元(6)以及每当包含在第一执行部分(2pes)的一部分中的具有重命名次序的触发命令利用它时,在单元(6)中恢复相应相关函数的身份并且执行它,以便所述部分被正确地执行,以及因此,受保护软件(2p)完全起作用,
-以及在没有单元(6)的情况下,尽管由第一执行部分(2pes)中的一部分请求触发在单元(6)中执行一个相关函数,也不能正确地满足所述请求,使得至少所述部分没有被正确地执行,而且因此,受保护软件(2p)没有完全地起作用。
30.如权利要求29所述的方法,包含:
→在保护阶段(P)期间:
·为至少一个相关函数定义在算法上等效、但是由重命名次序不同的触发命令触发的一系列相关函数,
·以及通过以下步骤修改受保护的软件(2p):
-在受保护软件的源(2ps)中选择至少一个具有重命名次序的触发命令,
-以及通过至少用另一个重命名的次序替换一个具有重命名次序的选择触发命令中的重命名次序,来修改受保护软件的源(2ps)中的至少一个选择部分,其中另一个重命名的次序触发同一系列中的相关函数。
31.如权利要求30所述的方法,包含:
→在保护阶段(P)期间,通过以下步骤为至少一个相关函数定义一系列算法上等效的相关函数:
-把一个噪声字段连接到定义相关函数中的功能部分的信息,以在单元(6)中执行,
-或者使用指令的标识字段(CII)以及操作数的期望标识字段(CIPk)。
32.如权利要求29、30或者31所述的方法,包含:
→在保护阶段(P)期间:
·定义:
-加密所述次序的加密方法,作为重命名次序的方法,
-以及作为恢复模块(20)的模块,其实现了一种解密方法来解密重命名的次序以及因此恢复相关函数的身份,以在单元(6)中执行。
33.如权利要求1、2、3、4、6、7、15、16、17、18、19、21、22、23、25、26、27、29、30或31中任何一项所述的方法,包含把保护阶段(P)拆分成为与要保护的软件无关的在前保护子阶段(P1)和与要保护的软件相关的后续保护子阶段(P2)。
34.如权利要求33所述的方法,包含,在在前保护子阶段(P1)期间,使得***一个定义级(S11),在其期间执行所有的定义。
35.如权利要求34所述的方法,包含,在定义阶段(S11)之后,使得***一个构造级(S12),在其期间构造利用模块。
36.如权利要求35所述的方法,包含,在构造级(S12)之后,使得***一个预定制级(S13),其包含向空白单元(60)上载利用模块的至少一部分,以便获得一个被预定制的单元(66)。
37.如权利要求34所述的方法,包含,在在前保护子阶段(P1)期间,使得***一个工具构造级(S14),在其期间构造能够帮助产生受保护软件或者使软件保护自动化的工具。
38.如权利要求36所述的方法,包含把后续保护子阶段(P2)拆分成为:
·创建级(S21),在其期间由易受攻击的软件(2v)创建受保护软件(2p),
·可能地,一个修改级(S22),在其期间修改受保护软件(2p),
·以及定制段(S23),在其期间:
-可能包含利用模块的受保护软件(2p)的第二目标部分(2pou)被上载到至少一个空白单元(60),以便获得至少一个单元(6),
-或者,可能包含利用模块的受保护软件(2p)的第二目标部分(2pou)被上载到至少一个被预定制的单元(66),以便获得至少一个单元(6),
39.如权利要求38所述的方法,包含,在创建级(S21)期间以及可能地在修改级(S22)期间,使用至少一个工具,所述工具帮助产生受保护的软件或者使软件保护自动化。
40、一种保护易受攻击的软件(2v)免受其未被授权使用的***,使用至少包含存储模块(15)和处理模块(16)的至少一个空白单元(60),所述易受攻击软件(2v)在一个数据处理***(3)上运行,所述保护***包括:
→在保护阶段(P)期间创建受保护的软件(2p)的单元,包括:
-在易受攻击软件的源(2vs)中选择至少一个条件分支的装置,
-选择包含至少一个选择条件分支的易受攻击软件的源(2vs)中的至少一部分的装置,
-由易受攻击软件源(2vs)产生受保护软件的源(2ps),通过修改易受攻击软件的源(2vs)中的至少一个选择部分,以获得受保护软件的源(2ps)的至少一个修改部分的装置,这个修改使得在受保护软件(2p)的执行期间:
在数据处理***(3)中执行第一执行部分(2pes),在单元(6)中执行第二执行部分(2peu),单元(6)是在信息上载后、由空白单元(60)而获得的,
-以及产生受保护软件(2p)的第一目标部分(2pos)和第二目标部分(2pou)的装置,其中:
受保护软件(2p)的第一目标部分(2pos)由受保护软件的源(2ps)产生,所述第一目标部分(2pos)使得在受保护软件(2p)的执行期间,显现在数据处理***(3)中执行的第一执行部分(2pes),其至少一部分考虑到至少一个选择的条件分支在单元(6)中执行,
所述第二目标部分(2pou)使得在上载到空白单元(60)后以及在受保护软件(2p)的执行期间,显现第二执行部分(2peu),借助于第二执行部分(2peu)执行每个选择的条件分支,
·以及上载第二目标部分(2pou)到空白单元(60),以便获得单元(6)的装置,
→以及在执行受保护的软件(2p)的使用阶段(U)期间执行受保护的软件(2p)的装置,其中:
·在存在单元(6)以及每当第一执行部分(2pes)中的一部分利用它时,执行单元(6)中的条件分支的功能,以便所述部分被正确地执行,以及因此,受保护软件(2p)完全起作用,
·以及,在不存在单元(6)和尽管由第一执行部分(2pes)中的一部分请求在单元(6)中执行一个条件分支的功能时,不能正确地满足所述请求,使得至少所述部分不被正确地执行,而且因此,受保护软件(2p)不完全起作用。
41.如权利要求40所述的***,还包含程序开发单元,其在构造级(S12)期间被使用,以考虑在定义级(S11)期间***的定义,执行用于单元(6)的利用模块的构造。
42.如权利要求40所述的***,还包含预定制单元(30),该预定制单元(30)用于上载利用模块的至少一部分到至少一个空白单元(60),以便获得至少一个被预定制的单元(66)。
43.如权利要求40所述的***,还包含程序开发单元,用于在工具构造级(S14)期间执行工具的构造,所述工具帮助产生受保护的软件或者使软件保护自动化。
44.如权利要求40所述的***,还包含用于创建或者修改受保护的软件(2p)的程序开发单元。
45.如权利要求40所述的***,还包含定制单元(45),该定制单元上载第二目标部分(2pou)到空白至少一个单元(60),以便获得至少一个单元(6);或者,上载第二目标部分(2pou)的一部分到至少一个被预定制的单元(66),以便获得至少一个单元(6)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0110245A FR2828302B1 (fr) | 2001-07-31 | 2001-07-31 | Procede pour proteger un logiciel a l'aide d'un principe dit de "branchement conditionnel" contre son utilisation non autorisee |
FR01/10245 | 2001-07-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1541351A CN1541351A (zh) | 2004-10-27 |
CN1313898C true CN1313898C (zh) | 2007-05-02 |
Family
ID=8866120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028146735A Expired - Fee Related CN1313898C (zh) | 2001-07-31 | 2002-07-04 | 利用条件分支原理保护软件免受不希望的使用的方法和*** |
Country Status (19)
Country | Link |
---|---|
EP (1) | EP1412705A2 (zh) |
JP (1) | JP3949103B2 (zh) |
KR (1) | KR20040032859A (zh) |
CN (1) | CN1313898C (zh) |
BR (1) | BR0211370A (zh) |
CA (1) | CA2454095A1 (zh) |
FR (1) | FR2828302B1 (zh) |
HK (1) | HK1072110A1 (zh) |
HR (1) | HRP20040046A2 (zh) |
HU (1) | HUP0400221A2 (zh) |
IL (1) | IL159952A0 (zh) |
MA (1) | MA26124A1 (zh) |
MX (1) | MXPA04000593A (zh) |
NO (1) | NO20040228L (zh) |
PL (1) | PL367485A1 (zh) |
TN (1) | TNSN04010A1 (zh) |
WO (1) | WO2003012374A2 (zh) |
YU (1) | YU5904A (zh) |
ZA (1) | ZA200400351B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101217668B1 (ko) * | 2011-05-12 | 2013-01-02 | 주식회사 안랩 | 악성 프로그램 후킹 방지 장치 및 방법 |
KR101444929B1 (ko) * | 2012-12-04 | 2014-09-26 | 주식회사 안랩 | 비정상 경로 호출 감지 장치 및 비정상 경로 호출 감지 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754646A (en) * | 1995-07-19 | 1998-05-19 | Cable Television Laboratories, Inc. | Method for protecting publicly distributed software |
WO1999066387A1 (fr) * | 1998-06-12 | 1999-12-23 | Gemplus | Procede de controle de l'execution d'un produit logiciel |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2634917A1 (fr) * | 1988-08-01 | 1990-02-02 | Pionchon Philippe | Procede et dispositif de protection d'un logiciel, en particulier contre les copies non autorisees |
WO1999001815A1 (en) * | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Obfuscation techniques for enhancing software security |
-
2001
- 2001-07-31 FR FR0110245A patent/FR2828302B1/fr not_active Expired - Lifetime
-
2002
- 2002-07-04 CN CNB028146735A patent/CN1313898C/zh not_active Expired - Fee Related
- 2002-07-04 EP EP02762527A patent/EP1412705A2/fr not_active Withdrawn
- 2002-07-04 MX MXPA04000593A patent/MXPA04000593A/es unknown
- 2002-07-04 PL PL02367485A patent/PL367485A1/xx not_active Application Discontinuation
- 2002-07-04 KR KR10-2004-7000807A patent/KR20040032859A/ko not_active Application Discontinuation
- 2002-07-04 WO PCT/FR2002/002342 patent/WO2003012374A2/fr active Application Filing
- 2002-07-04 JP JP2003517522A patent/JP3949103B2/ja not_active Expired - Fee Related
- 2002-07-04 CA CA002454095A patent/CA2454095A1/fr not_active Abandoned
- 2002-07-04 BR BR0211370-8A patent/BR0211370A/pt not_active IP Right Cessation
- 2002-07-04 HU HU0400221A patent/HUP0400221A2/hu unknown
- 2002-07-04 IL IL15995202A patent/IL159952A0/xx unknown
- 2002-07-04 YU YU5904A patent/YU5904A/sh unknown
-
2004
- 2004-01-16 ZA ZA2004/00351A patent/ZA200400351B/en unknown
- 2004-01-19 TN TNP2004000010A patent/TNSN04010A1/fr unknown
- 2004-01-19 NO NO20040228A patent/NO20040228L/no not_active Application Discontinuation
- 2004-01-19 HR HR20040046A patent/HRP20040046A2/hr not_active Application Discontinuation
- 2004-01-19 MA MA27490A patent/MA26124A1/fr unknown
-
2005
- 2005-04-26 HK HK05103547A patent/HK1072110A1/xx not_active IP Right Cessation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754646A (en) * | 1995-07-19 | 1998-05-19 | Cable Television Laboratories, Inc. | Method for protecting publicly distributed software |
WO1999066387A1 (fr) * | 1998-06-12 | 1999-12-23 | Gemplus | Procede de controle de l'execution d'un produit logiciel |
Also Published As
Publication number | Publication date |
---|---|
WO2003012374A3 (fr) | 2003-12-24 |
JP2004537794A (ja) | 2004-12-16 |
TNSN04010A1 (fr) | 2006-06-01 |
YU5904A (sh) | 2006-08-17 |
MXPA04000593A (es) | 2005-02-17 |
HUP0400221A2 (en) | 2004-08-30 |
KR20040032859A (ko) | 2004-04-17 |
JP3949103B2 (ja) | 2007-07-25 |
NO20040228L (no) | 2004-03-30 |
MA26124A1 (fr) | 2004-04-01 |
CA2454095A1 (fr) | 2003-02-13 |
FR2828302A1 (fr) | 2003-02-07 |
ZA200400351B (en) | 2005-03-30 |
CN1541351A (zh) | 2004-10-27 |
PL367485A1 (en) | 2005-02-21 |
FR2828302B1 (fr) | 2010-09-03 |
WO2003012374A2 (fr) | 2003-02-13 |
BR0211370A (pt) | 2004-09-21 |
EP1412705A2 (fr) | 2004-04-28 |
HK1072110A1 (en) | 2005-08-12 |
IL159952A0 (en) | 2004-06-20 |
HRP20040046A2 (en) | 2004-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1253882C (zh) | 记录/重放装置 | |
CN1482568A (zh) | 用于防止记录介质非授权使用的*** | |
CN1977531A (zh) | 程序生成装置、程序测试装置、程序执行装置及信息处理*** | |
CN1875345A (zh) | 在编译过程中表示和检查程序组件的一致性的可扩展类型*** | |
CN1157020C (zh) | 提高了安全性的密码处理装置 | |
CN1754173A (zh) | 软件管理***、记录介质和信息处理装置 | |
CN1296811C (zh) | 信息处理装置及其控制方法和控制装置 | |
CN1577324A (zh) | 文档管理方法和程序、记录介质和文档管理装置 | |
CN1940952A (zh) | 用于管理内容数据的***和装置 | |
CN1073540A (zh) | 管理类方法名 | |
CN1608361A (zh) | 数字作品保护***、密钥管理设备和用户设备 | |
CN101047495A (zh) | 用于传送数据的方法和*** | |
CN1282071C (zh) | 数据处理装置、数据处理方法和程序 | |
CN1313917C (zh) | 数据处理装置以及数据处理方法 | |
CN1273902C (zh) | 调试***,微处理器,以及调试器 | |
CN101040306A (zh) | 伪随机数生成装置 | |
CN1155884C (zh) | 通过大范围的同值关系的解析来消除传输命令的优化装置 | |
CN101030138A (zh) | 应用构架 | |
CN1692321A (zh) | 口令恢复*** | |
CN1577291A (zh) | 程序调试装置、程序调试方法及程序 | |
CN1822016A (zh) | 基于对称密钥加密保存和检索数据 | |
CN1826615A (zh) | 电子化服务指南显示程序、记录了程序的记录介质、电子化服务指南显示控制方法、电子化服务指南显示控制装置、程序传送方法、程序传送装置、程序接收方法、及程序接收装置 | |
CN1806235A (zh) | 程序、计算机和数据处理方法 | |
CN1313898C (zh) | 利用条件分支原理保护软件免受不希望的使用的方法和*** | |
CN1288524C (zh) | 使用“重命名”原理保护软件防止未授权使用的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1072110 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070502 Termination date: 20090804 |