CN1535410A - 通过“变量”原理保护软件防止未授权使用的方法 - Google Patents
通过“变量”原理保护软件防止未授权使用的方法 Download PDFInfo
- Publication number
- CN1535410A CN1535410A CNA028146840A CN02814684A CN1535410A CN 1535410 A CN1535410 A CN 1535410A CN A028146840 A CNA028146840 A CN A028146840A CN 02814684 A CN02814684 A CN 02814684A CN 1535410 A CN1535410 A CN 1535410A
- Authority
- CN
- China
- Prior art keywords
- protected software
- unit
- software
- carry out
- during
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 191
- 238000012545 processing Methods 0.000 claims abstract description 57
- 230000006870 function Effects 0.000 claims description 243
- 230000008569 process Effects 0.000 claims description 67
- 238000001514 detection method Methods 0.000 claims description 42
- 230000004048 modification Effects 0.000 claims description 42
- 238000012986 modification Methods 0.000 claims description 41
- 230000001960 triggered effect Effects 0.000 claims description 11
- 238000011084 recovery Methods 0.000 claims description 10
- 230000001419 dependent effect Effects 0.000 claims description 8
- 230000008901 benefit Effects 0.000 claims description 6
- 230000014509 gene expression Effects 0.000 description 30
- 238000012546 transfer Methods 0.000 description 17
- 238000000354 decomposition reaction Methods 0.000 description 8
- 230000006872 improvement Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 4
- 230000000153 supplemental effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010494 dissociation reaction Methods 0.000 description 1
- 230000005593 dissociations Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000010977 unit operation 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/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Remote Sensing (AREA)
- Radar, Positioning & Navigation (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及用于至少一个单元未授权使用有漏洞的软件的方法,所述有漏洞的软件在数据处理系统上操作。该方法由创建受保护软件:通过在有漏洞的软件的源中选择至少一个变量;通过修改有漏洞的源产生受保护软件的源组成,以便所选定的变量变为驻留在单元中。
Description
本发明总的来说涉及数据处理系统的技术领域,更准确地说针对防止在所述数据处理系统上运行未授权使用的软件的方法。
本发明的主题主要在于使用存储单元或处理和存储单元来防止未授权使用软件的方法,这种单元通常具体化为芯片卡或USB端口中的实体钥匙(material key)。
在上述技术领域中,主要问题涉及由未支付许可费的用户未授权使用软件。软件的这一非法使用导致软件编程员、软件分布人和/或将软件集成为产品的任何人的显而易见的损失。为避免这种非法拷贝,在现有技术中,已经提出了各种方案来保护软件。
因此,保护方案是已知的,其利用硬件保护系统,诸如称为保护钥匙(protection key)或“软件狗(dongle)”的物理部件。这种保护键应当保证仅在存在键的情况下,执行软件。然而,必须承认这一方案是低效的,因为它存在不容易忽略的不便利性。在专用工具诸如反汇编程序的帮助下,恶意的人或黑客能删除保护键的控制指令。然后,变得可以执行相应于能在不保护的情况下运行的软件的修改版本的非法拷贝。此外,这一方案不能概括到所有软件,因为其难以将大于两个的保护键连接到同一系统上。
本发明的主题在于通过提出防止未授权使用软件的方法,特别是使用存储单元或处理和存储单元,因为这一单元对软件完全起作用来说是必须的,从而精确地找出上述问题的解决方案。
为实现这一目的,本发明的主题涉及使用至少包括存储模块(means)的至少一个空白单元,防止未授权使用有漏洞的软件(vulnerable software)的方法,所述有漏洞的软件是由源产生的并在数据处理系统上起作用。根据本发明的该方法包括:
→在保护阶段:
●创建受保护软件:
-通过在有漏洞的软件的源中选择:
至少一个变量,在执行有漏洞的软件期间,其部分定义后者的状态,
-通过由有漏洞的软件的源产生受保护软件的源,通过修改有漏洞的软件的源的至少一个选定部分,这一修改为在执行受保护软件期间,至少一个选定变量或至少一个选定变量的拷贝驻留在空白单元中,从而空白单元变换成一单元,
-以及通过由受保护软件的源产生受保护软件的第一对象部分,所述第一对象部分为在执行受保护软件期间,出现在数据处理系统中执行的第一执行部分,以及第一执行部分的至少一部分考虑到至少变量或至少变量的拷贝驻留在单元中,
→以及在使用阶段期间,在使用阶段期间执行受保护软件:
●在存在单元时,每次第一执行部分的一部分利用(impose)它时,使用驻留在单元中的变量或变量拷贝,以便正确地执行所述部分,因此,受保护软件完全起作用,
●以及在缺少单元时,尽管第一执行部分的一部分请求使用驻留在单元中的变量或变量拷贝,仍然不能正确地履行所述请求,以致不正确地执行至少所述部分,因此,受保护软件不完全起作用。
根据优选实施例,根据本发明的方法包括:
→在保护阶段期间:
●修改受保护软件:
-通过在受保护软件的源中选择:
-通过修改受保护软件的源的至少一个选定部分,这一修改为:
分开至少一个选定的算法处理以便在执行受保护软件期间,通过第二执行部分,出现几个不同的步骤,即:
◇设置至少一个变量供单元使用,
◇在单元中执行有关至少所述变量的算法处理的功能性,
◇及可能地,通过该单元,设置至少一个结果变量供数据处理系统使用,
对至少一个选定的算法处理,定义步骤命令以便在执行受保护软件期间,通过第一执行部分执行每个步骤命令并在单元中触发通过第二执行部分执行步骤,
择步骤命令的顺序,
-以及通过产生:
●以及为获得该单元,将第二对象部分加载到空白单元上,
→以及在使用阶段期间:
●在存在该单元时,以及每次包含在第一执行部分的一部分中的步骤命令利用它时,在该单元中执行相应的步骤,以便正确地执行所述部分,因此,受保护软件完全起作用,
●以及在缺少单元时,尽管第一执行部分的一部分请求触发单元中的执行步骤,不能正确履行所述请求,以致不正确地执行至少所述部分,因此,保护软件不完全起作用。
根据另一优选实施例,根据本发明的方法包括:
→在保护阶段期间:
●定义:
-基本函数集,易于在还包括处理模块的该单元中执行其基本函数,
-以及用于所述基本函数集的基本命令集,易于在数据处理系统中执行所述基本命令并触发在单元中执行基本函数,
●构造允许将空白单元变换成能执行所述基本函数集的单元的利用(exploitation)模块,通过在数据处理系统中执行基本命令触发执行所述基本函数,
●修改受保护软件:
-通过在受保护软件的源中选择:
至少一个算法处理,在执行受保护软件期间,其使用至少一个选定变量,并允许获得至少一个结果变量,
-通过修改受保护软件的源的至少一个选定部分,这一修改为:
在执行受保护软件期间,在数据处理系统中执行第一执行部分以及在该单元中执行第二执行部分,
通过第二执行部分至少执行至少一个选定算法处理的功能性,
以及在允许执行受保护软件的顺序集中选择基本命令的顺序,
-以及通过产生:
受保护软件的第一对象部分,所述第一对象部分为在执行受保护软件期间,根据所选定的顺序,执行基本命令,
以及包含利用模块的受保护软件的第二对象部分,所述第二对象部分为在加载到空白单元后,以及在执行受保护软件期间,出现第二执行部分,通过第二执行部分,执行由第一执行部分触发的基本函数,
●以及为获得该单元,将第二对象部分加载到空白单元上。
→以及在使用阶段期间:
●在存在该单元时,以及每次包含在第一执行部分的一部分中的基本命令利用它时,在该单元中执行相应的基本函数,以便正确地执行所述部分,因此,受保护软件完全起作用,
●以及在缺少该单元时,尽管第一执行部分的一部分请求触发在该单元中执行一基本函数,仍不能正确地履行所述请求,以致不正确地执行至少所述部分,因此,受保护软件不完全起作用。
根据另一优选实施例,根据本发明的方法包括:
→在保护阶段期间:
●定义:
-基本函数集,易于在该单元中执行其基本函数,
-以及用于所述基本函数集的基本命令集,易于在数据处理系统中执行所述基本命令,并触发在该单元中执行基本函数,
●构造允许该单元执行所述基本函数集的利用模块,通过在数据处理系统中执行基本命令触发执行所述基本函数,
●以及修改受保护软件:
-通过在受保护软件的源中选择在执行受保护软件期间,执行算法处理的功能性的至少一个步骤,
-通过修改受保护软件的源的至少一个选定部分,这一修改为:
-以及通过产生:
→以及在使用阶段期间:
●在存在该单元时,以及每次包含在第一执行部分的一部分中的基本命令利用它时,在该单元中执行相应的基本函数,以便正确地执行所述部分,因此,受保护软件完全起作用,
●以及在缺少该单元时,尽管第一执行部分的一部分请求触发在该单元中执行基本函数,仍不能正确地履行所述请求,以致不正确地执行至少所述部分,因此,受保护软件不完全起作用。
根据另一优选实施例,根据本发明的方法包括:
→在保护阶段期间:
●定义:
-至少一个软件执行特性,在该单元中至少部分易于被监视,
-至少一个软件执行特征遵守的至少一个准则,
-在该单元中实现的检测模块并允许检测至少一个软件执行特性未遵守至少一个相关准则,
-以及在该单元中实现的强制(coercion)模块,并允许当未遵守至少一个准则时,通知数据处理系统和/或修改执行的软件,
●构造允许该单元还实现检测模块和强制模块的利用模块,
●以及修改受保护软件:
-通过在易于监视的软件执行特性中选择监视的至少一个软件执行特性,
-通过选择至少一个选择的软件执行特性遵守的至少一个准则,
-通过在受保护软件的源中选择将监视至少一个选定软执行特性的基本函数,
-通过修改受保护软件的源的至少一个选定部分,这一修改为在执行受保护软件期间,通过第二执行部分监视至少一个选定执行特性,以及不遵守准则的事实导致告知数据处理系统和/或修改受保护软件的执行,
-以及通过产生包含利用模块的受保护软件的第二对象部分,还实现检测模块和强制模块,所述第二对象部分为在加载到该单元后,以及在执行受保护软件期间,监视至少一个软件执行特性以及不遵守准则的事实导致告知数据处理系统和/或修改受保护软件的执行,
→以及在使用阶段期间:
●在存在该单元时:
-只要遵守相应于受保护软件的所有修改部分的所有监视的执行特性的所有准则,允许受保护软件的所述部分标称地(nominally)运行,因此,允许受保护软件标称地运行,
-以及如果未遵守相应于监视的受保护软件的一部分的执行特性的至少一个准则,将其告知数据处理系统和/或修改受保护软件的这部分的运行(functioning),以致修改受保护软件的运行。
根据一不同实施例,根据本发明的方法包括:
→在保护阶段期间:
●定义:
-将软件的功能性的使用的度量的变量定义为易于监视的软件执行特性,
-将与每个度量的变量有关的至少一个阈值定义为遵守的准则,
-以及允许更新至少一个度量的变量的实行(actualization)模块,
●构造允许该单元也实现实行模块的利用模块,
●以及修改受保护软件:
-通过将软件的至少一个功能性的使用的度量的至少一个变量选择为监视的软件执行特性,
-通过选择:
用来量化所述功能性的使用的度量的至少一个变量,
与相应于所述功能性的使用的限制的选定的度量的变量有关的至少一个阈值,
-通过修改受保护软件的源的至少一个选定部分,这一修改为在执行受保护软件期间,根据所述功能性的使用,通过第二执行部分,实现度量的变量,以及考虑至少一个阈值越过(crossing),
→以及在使用阶段期间,在存在该单元时,以及在检测到相应于至少一个使用限制的至少一阈值越过情况下,将其告知数据处理系统和/或修改受保护软件的运行,以致修改受保护软件的运行。
根据一不同实施例,根据本发明的方法包括:
→在保护阶段期间:
●定义:
-用于至少一个度量的变量的几个相关阈值,
-以及相应于所述阈值的每一个的不同强制模块,
●以及修改受保护软件:
-通过在受保护软件的源中选择必须与相应于功能性使用的不同限制的几个阈值有关的至少一个选定的度量的变量,
-通过选择与所选定的度量的变量有关的至少两个阈值,
-以及通过修改受保护软件的源的至少一个选定部分,这一修改为在执行受保护软件期间,通过第二执行部分,不同地考虑越过不同阈值,
→以及在使用阶段期间:
●在存在该单元的情况下:
-在检测到越过第一阈值的情况下,命令受保护软件不再使用相应的功能性,
-以及在检测到越过第二阈值的情况下,使相应的功能性和/或受保护软件的至少一部分无效。
根据一不同实施例,根据本发明的方法包括:
→在保护阶段期间:
●定义允许通过至少一个另外的使用,信任由度量的变量监视的至少一个软件功能性的补装(refill)模块,
●构造还允许该单元实现补装模块的利用模块,
●以及修改受保护软件:
-通过在受保护软件的源中选择允许限制功能性的使用并且必须能通过至少一个另外的使用信任的至少一个选定的度量的变量,
-以及通过修改至少一个选定部分,这一修改为在称为补充的阶段期间,能信任相应于所选定的度量的变量的至少一个功能性的至少一个另外的使用,
→以及在补装期间:
●重新实现至少一个选定的度量的变量和/或至少一个相关阈值,以便允许功能性的至少一个另外的使用。
根据一不同实施例,根据本发明的方法包括:
→在保护阶段期间:
●定义:
-将软件使用的简要表(profile)定义为易于监视的软件执行特性,
-以及将至少一个软件执行特征定义为遵守的准则,
●以及修改受保护软件:
-通过将至少一个软件使用的简要表选择为监视的软件执行特性,
-通过选择至少一个选定的使用简要表必须遵守的至少一个执行特征,
-以及通过修改受保护软件的源的至少一个选定部分,这一修改是在执行受保护软件期间,第二执行部分遵守所有选定的执行特征,
→以及在使用阶段期间,在存在该单元时,以及在检测到未遵守至少一个执行特征的情况下,将其告知数据处理系统和/或修改受保护软件的部分的运行,以便修改受保护软件的运行。
根据一不同实施例,根据本发明的方法包括:
→在保护阶段期间:
●定义:
-在该单元中易于执行其指令的指令集,
-用于所述指令集的指令命令集,易于在数据处理系统中执行所述指令命令并在该单元中触发执行指令,
-将指令链接定义为使用简要表,
-将用于执行指令的预期链接定义为执行特征,
-将允许检测指令链接不相应于预期的指令链接的模块定义为检测模块,
-以及将允许当指令链接不相应于预期的指令链接时,通知数据处理系统和/或改变受保护软件的功能的模块定义为强制模块,
●构造还允许该单元执行指令集的指令的利用模块,通过在数据处理系统中执行指令命令来触发执行所述指令,
●以及修改受保护软件:
-通过修改受保护软件的源的至少一个选定部分:
通过指定在该单元中执行它们期间,至少一些指令必须遵守的链接,
以及通过将基本命令变换成相应于所使用的指令的指令命令,
→以及在使用阶段期间,在存在该单元时,在检测到该单元中执行的指令链接不相应于预期的指令链接的情况下,将其告知数据处理系统和/或修改受保护软件的部分的运行,以便修改受保护软件的运行。
根据一不同实施例,根据本发明的方法包括:
→在保护阶段:
●定义:
-将其至少一些指令与寄存器一起工作并为返回一结果,使用至少一个操作数的指令集定义为指令集,
-对与寄存器一起工作的至少一些指令:
定义指令的功能性的部分,
以及定义用于执行指令的预期链接并包括相应于
下述的位字段的部分:
◇指令的标识字段,
◇以及用于指令的每个操作数:
*标志字段,
*以及操作数的预期标识字段,
-对属于利用模块并由指令集使用的每个寄存器,自动将已经返回其结果的最后一个指令的标识存储在所述寄存器中的所生成的标识字段,
-以及将允许在执行指令期间,对每个操作数,当标志字段利用它时,检查相应于由所述操作数以及所述操作数的原始的预期标识字段使用的寄存器的所生成的标识字段的等式(equality)的模块定义为检测模块,
-以及如果所检查的等式的至少一个为假,将允许修改指令结果的模块定义为强制模块。
根据另一优选实施例,根据本发明的方法包括:
→在保护阶段期间:
●定义:
-将基本命令或指令命令定义为触发命令,
-将基本函数或指令定义为相关函数,
-将至少部分相应于由数据处理系统传送到单元的信息的用于触发命令的至少一个变元(argument)定义为一次序(order),以便触发执行相应的相关函数,
-允许重命名次序以便获得具有重命名次序的触发命令的次序重命名方法,
-以及设计成在使用阶段期间,在单元中使用并允许由重命名次序恢复相关函数以便执行的恢复模块,
●构造允许该单元也实现恢复模块的利用模块,
●以及修改受保护软件:
-通过在受保护软件的源中选择触发命令,
-通过重命名所选定的触发命令的次序,修改受保护软件的源的至少一个选定部分,以便隐藏相应的相关函数的身份(identity),
-以及通过产生:
受保护软件的第一对象部分,所述第一对象部分为在执行受保护软件期间,执行具有重命名次序的触发命令,
以及包含利用模块的受保护软件的第二对象部分,还实现恢复模块,所述第二对象部分为在加载到该单元后,以及在执行受保护软件期间,通过第二执行部分,恢复由第一执行部分触发其执行的相关函数的身份,通过第二执行部分执行相关函数,
→以及在使用阶段期间:
●在存在该单元时,以及每次包含在第一执行部分的一部分中的具有重命名次序的触发命令利用它时,在该单元中恢复相应的相关函数的特性并执行它,以便正确地执行所述部分,因此,受保护软件完全起作用,
●以及在缺少该单元时,尽管第一执行部分的一部分请求触发在该单元中执行相关函数,仍不能正确地履行所述请求,以致不正确地执行至少所述部分,因此,受保护软件不完全起作用。
根据一不同实施例,根据本发明的方法包括:
→在保护阶段期间,
●为至少一个相关函数定义算法上等效,但由其重命名次序不同的触发命令触发的一族相关函数,
●以及修改受保护软件:
-通过在受保护软件的源中选择具有重命名次序的至少一个触发命令,
-以及通过至少用另一重命名次序替换具有重命名次序的一个选定触发命令的重命名次序,修改受保护软件的源的至少一个选定部分,触发相同族的相关函数。
根据一不同实施例,根据本发明的方法包括:
→在保护阶段期间,为至少一个相关函数定义一族算法上等效的相关函数:
-通过将噪声字段连接(concatenate)到定义相关函数的功能部分的信息上以便在该单元中执行,
-或通过使用指令的标识字段以及操作数的预期标识字段。
根据一不同实施例,根据本发明的方法包括:
→在保护阶段期间:
●定义:
-将加密次序的加密方法定义为次序的重命名方法,
-以及将实现解密重命名次序,从而恢复相关函数的身份以便在单元中执行的解密方法的模块定义为恢复模块。
根据另一优选实施例,根据本发明的方法包括:
→在保护阶段期间:
●修改受保护软件
-通过在受保护软件的源中选择在至少一个选定的算法处理中执行的至少一个条件分支,
-通过修改受保护软件的源的至少一个选定部分,这一修改为在执行受保护软件期间,在该单元中通过第二执行部分,执行至少一个选定条件分支的功能性,
-以及通过产生:
受保护软件的第一对象部分,所述第一对象部分为在执行受保护软件期间,在单元中执行至少一个选定条件分支的功能性,
以及受保护软件的第二对象部分,所述第二对象部分为在加载到该单元后,以及在执行受保护软件期间,出现第二执行部分,通过第二执行部分,执行至少一个选定的条件分支的功能性,
→以及在使用阶段期间:
●在存在该单元时,以及每次第一执行部分的一部分利用它时,在该单元中执行至少一个条件分支的功能性,以便正确地执行所述部分,因此,受保护软件完全起作用,
●以及在缺少该单元时,尽管第一执行部分的一部分请求在该单元中执行条件分支的功能性,仍不能正确地履行所述请求,以致不正确地执行至少所述部分,因此,受保护软件不完全起作用。
根据一不同实施例,根据本发明的方法包括:在保护阶段期间,修改受保护软件:
-通过在受保护软件的源中选择至少一系列选定的条件分支,
-通过修改受保护软件的源的至少一个选定部分,这一修改为在执行受保护软件期间,在该单元中通过第二执行部分,执行至少一个选定系列的条件分支的全部功能性,
-以及通过产生:
受保护软件的第一对象部分,所述第一对象部分为在执行受保护软件期间,在该单元中执行至少一个选定系列的条件分支的功能性,
以及受保护软件的第二对象部分,所述第二对象部分为在加载到该单元后,以及在执行受保护软件期间,出现第二执行部分,通过第二执行部分,执行至少一个选定系列的条件分支的全部功能性。
因此根据本发明的方法允许通过使用存储单元保护软件使用,存储单元显示出包含正执行的软件的一部分的特性。由此得出尝试没有存储单元运行的软件的任何导出版本迫使在执行期间,重新创建包含在存储单元中的软件部分,或者所述的导出的软件版本将不完全起作用。
从下述参考附图给出的描述出现各种其他特征,附图作为非限制例子,表示本发明的主题的实施例和实现。
图10和11是分别示例说明不受和受根据本发明的方法的保护的软件的各种表示的功能框图。
图20至22举例说明实现根据本发明的方法的模块的各种实施例。
图30至31是清楚地说明根据本发明的方法的一般原理的功能框图。
图40至43是示例说明通过变量实现保护原理的根据本发明的保护方法的图。
图50至54是示例说明通过临时分解(temporal dissociation)实现保护原理的根据本发明的保护方法的图。
图60至64是示例说明通过基本函数(elementary function)实现保护原理的根据本发明的保护方法的图。
图70至74是示例说明通过检测和强制实现保护原理的根据本发明的保护方法的图。
图80至85是示例说明通过重命名实现保护原理的根据本发明的保护方法的图。
图90至92是示例说明通过条件分支实现保护原理的根据本发明的保护方法的图。
图100是示例说明本发明的主题的实现的不同阶段的图。
图110示例说明允许实现根据本发明的保护阶段的结构级的系统的实施例。
图120示例说明用在根据本发明的保护方法中的预先定制单元的实施例。
图130示例说明允许实现产生根据本发明的保护阶段的级(stage)的工具的系统的实施例。
图140示例说明允许实现根据本发明的保护方法的系统的实施例。
图150示例说明用在根据本发明的保护方法中的定制单元的实施例。
在其余的描述中,将使用下述定义:
●数据处理系统3是能执行程序的系统。
●存储单元是能接受由数据处理系统3提供的数据、存储数据和在数据处理系统3的请求下,恢复数据的单元。
●处理和存储单元是能
-接受由数据处理系统3提供的数据,
-将数据返回到数据处理系统3
-至少部分秘密地存储数据以及即使切断该单元,也能保留至少部分所述数据,
-在数据上执行算法处理,部分或全部结果为保密。
●单元6是实现根据本发明的方法的存储单元或处理和存储单元。
●空白单元60是不能实现根据本发明的方法的单元,但其能接收将其转换到单元6中的数据。
●空白单元60能在执行受根据本发明的方法保护的软件期间变为单元6,以及在执行后,再次变换成空白单元60。
●预先定制的单元66是允许在接收补装数据后,已经接收将变换到单元6中的部分数据的空白单元60。
●将信息加载到空白单元60或预先定制的单元66相应于将信息传送到空白单元60或预先定制的单元66,以及存储所传送的信息。传送能包括改变信息格式。
●包含在数据处理系统3中的变量、函数或数据将由大写字母表示,而包含在单元6中的变量、函数或数据将用小写字母表示。
●“受保护软件”是已经受由根据本发明的方法实现的保护原理的至少一个保护的软件。
●“有漏洞的软件”是未受由根据本发明的方法实现的任一保护原理保护的软件。
●在有漏洞的软件和受保护软件间的区别不重要的情况下,使用术语“软件”。
●根据在其生存期中考虑的瞬间,软件具有各种表示:
-源表示,
-对象表示,
-分布(distribution),
-或动态表示。
●软件的源表示理解为在变换后,导致对象表示的表示。源表示能提供从概念抽象级(level)到可直接由数据处理系统或处理和存储单元执行的级的各种级。
●软件的对象表示相应于在传送到分布并加载到数据处理系统或处理和存储单元后,能执行的表示的级。其能是例如二进制代码、解释码等等。
●分布是包含对象表示的物理或虚拟支持,必须使所述分布由用户自由处理以便允许他们来使用软件。
●动态表示相应于来自其分布的软件的执行。
●部分软件相应于软件的一些部分以及例如,对应于一个或几个连续或不连续指令,和/或一个或几个连续或不连续功能块,和/或一个或几个函数,和/或一个或几个子程序,和/或一个或几个模块。部分软件还能相应于所有所述软件。
图10和11分别示例说明总的来说有漏洞的软件2v和受根据本发明的方法保护的受保护软件2p的各种表示。
图10示例说明在其生存期期间出现的有漏洞的软件2v的各种表示。因此,在下述表示的任何一个下,能出现有漏洞的软件2v:
●源表示2vs,
●目的表示2vo,
●分布2vd。所述分布通常能具有物理分布介质的形式,诸如CDROM或通过网络(GSM,Internet等等)分布的文件的形式,
●或相应于在任何已知类型的数据处理系统3,其通常包括至少四个处理器上执行的有漏洞的软件2v的动态表示2ve。
图11示例说明在其生存期期间出现的受保护软件2p的各种表示。因此,在下述表示的任何一个下出现受保护软件2p:
●源表示2ps包括部分用于数据处理系统3的第一源部分,以及或者,包括用于单元6的第二源部分,部分所述源部分通常能包含在公用文件中,
●对象表示2po包括用于数据处理系统3的第一对象部分2pos,以及或者,包括用于单元6的第二对象部分2pou,
●分布2pd,包括:
-第一分布部分2pds,包含第一对象部分2pos,所述第一分布部分2pds用于数据处理系统3并通常能具有物理分布介质的形式诸如CDROM或通过网络(GSM、Internet等等)分布的文件的形式,
-以及第二分布部分2pdu具有形式:
至少一个预先定制的单元66,已被加载第二对象部分2pou的一部分并用通过加载补装数据,用户必须完成定制以便获得单元6,例如,通过从网络上下载,能获得所述补装数据
已经加载第二对象部分2pou的至少一个单元6,
●或动态表示2pe,相应于执行受保护软件2p。所述动态表示2pe包括在数据处理系统3中执行的第一执行部分2pes和在单元6中执行的第二执行部分2peu。
在受保护软件2p的不同表示间的区别不重要的情况下,应当使用措辞受保护软件的第一部分和受保护软件的第二部分。
根据图11的动态表示的本发明的方法的实现使用包括通过链接路5与单元6连接的数据处理系统3的模块1p。数据处理系统3是任何类型并通常包括至少一个处理器4。数据处理系统3能是计算机或例如总的来说,各种机器、设备、固定或移动产品或车辆的部件。能以任何可能的方式实现链接路5,诸如例如串行链接路、USB总线、无线电链接路、光链接路、网络链接路或到数据处理系统3的电路的直接电连接等等。应注意到单元6可能是物理位于与数据处理系统3的处理器相同的集成电路中。在这种情况下,单元6能被视为与数据处理系统3的处理器4有磁的协处理器以及链接路5在集成电路内部。
图20至22以示例和未限制的方式,表示允许实现根据本发明的保护方法的模块1p的各种实施例。
在图20所示的实施例中,保护模块1p包括作为数据处理系统3的计算机以及作为单元6的芯片卡7及通常称为卡阅读器的接口8。通过链接路5将计算机3连接到单元6上。在执行受保护软件2p期间,在计算机3中执行的第一执行部分2pes和在芯片卡7及其接口8中执行的第二执行部分2peu必须是功能性的以便受保护软件2p完全起作用。
在图21中所示的实施例中,保护模块1p总的来说具有产品9,包括适合于由这种产品9假定的功能的各种部件10。保护模块1p一方面包括嵌入产品9中的数据处理系统,另一方面,包括与产品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包括通过链接路5连接到为单元6的一部分的传送模块13的传送模块12,允许在受保护软件2p的第一执行部分2pec和第二执行部分2peu间建立通信。
必须注意到传送模块12、13是软件和/或硬件特性并能提供和可能优化数据处理系统3和单元6间的数据通信。所述传送模块12、13用来允许具有与所使用的链接路5的类型无关地自由处理受保护软件2p。所述传送模块12、13不是本发明的主题的一部分,因为它们对技术人员来说非常公知,因此不更精确地描述。受保护软件2p的第一部分包括命令。在执行受保护软件2p期间,通过第一执行部分2pes执行所述命令允许在第一执行部分2pes和第二执行部分2peu间通信。在其余描述中,用IN、OUT或TRIG表示所述命令。
如图31所示,为允许实现受保护软件2p的第二执行部分2peu,单元6包括保护模块14。在单元6是存储单元的情况下,保护模块14包括存储模块15。在单元6是处理和存储单元的情况下,保护模块14包括存储模块15和处理模块16。
为简化其余描述,在执行受保护软件2p期间,选择考虑存在单元6或缺少单元6。实际上,每次不正确地执行受保护软件2p时,提供不适合于执行受保护软件2p的第二执行部分2peu的保护模块14的单元6也视为缺少。换句话说:
●物理存在并包括适合于执行受保护软件2p的第二执行部分2peu的保护模块14的单元6总被视为存在。
●物理存在但包括不适合于,即不允许正确执行受保护软件2p的第二执行部分2peu的单元6当其正确工作时,被视为存在,以及当其不正确地工作时,视为缺少(missing),
●以及物理缺少的单元6总被视为缺少。
在由芯片卡7及其接口8构成单元6的情况下,传送模块13被分成两部分,一个在接口8上,以及另一个在芯片卡7上。在这一实施例中,缺少芯片卡7被视为等效于缺少单元6。换句话说,缺少芯片卡7和/或其接口8,保护模块14不能存取并且不允许执行受保护软件2p的第二执行部分2peu,到这种程度,受保护软件2p不完全起作用。
根据本发明,保护方法用来实现称为《变量》的保护原理,参考图40至43执行其描述。
为通过变量实现保护原理,在有漏洞的软件2vs的源中选择至少一个变量,在执行有漏洞的软件2v期间,该至少一个变量部分地定义其状态。通过软件的状态,必须理解到在指定时间,需要完全执行所述软件的多条信息集,到这种程度,缺少这一选定变量不利于完全执行所述软件。还选择包含至少一个选定变量的至少一部分有漏洞的软件2vs的源。
然后修改至少一个选定部分的有漏洞的软件2vs的源,以便获得受保护软件2ps的源。这一修改是在执行受保护软件2p期间,在数据处理系统3中执行的第一执行部分2pes的至少一部分考虑到至少一个选定的变量或选定变量的至少一个拷贝驻留在单元6中。为通过变量实现保护原理,单元6至少包括存储模块15。
图40示例说明有漏洞的软件2v的执行的例子。在这一例子中,在数据处理系统3中执行有漏洞的软件2v期间,出现:
●在时刻t1,将数据X分配给变量V1,用V1←X表示,
●在时刻t2,将变量V1的值分配给变量Y,用Y←V1表示,
●以及在时刻t3,将变量V1的值分配给变量Z,用Z←V1表示。
图41示例说明变量驻留在单元6中的本发明的实现的第一形式的例子。在这一例子中,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间,当存在单元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中的本发明的实现的第二形式的例子。在这一例子中,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间,并存在单元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的执行尝试的例子。在这一例子中,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间:
●在时刻t1,考虑到缺少单元6,执行转移命令OUT(v1,x)不能触发将数据X传送到变量v1,
●在时刻t2,考虑到缺少单元6,执行转移命令IN(v1)不能触发将变量v1的值传送到数据处理系统3,
●以及在时刻t3,考虑到缺少单元6,执行转移命令IN(v1)不能触发将变量v1的值传送到数据处理系统3。
因此,很显然,在缺少单元6时,不能正确地履行使用驻留在单元6中的变量或变量拷贝的第一执行部分2pes的一部分的至少一个请求,以致不正确地执行至少所述部分,因此,受保护软件2p不完全起作用。
应注意到,在以前的例子中所示的数据处理系统3和单元6间的数据传送仅使用简单的分配,而技术人员将知道如何将它们与其他操作结合来获得复杂的操作诸如例如OUT(v1,2*X+3)或Z←(5*v1+v2)。
根据本发明的另一有利特性,保护方法用来实现称为“临时分解”的保护原理,将参考图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执行每个先前定义的步骤。为通过临时分解的保护原理,单元6包括存储模块15和处理模块16。
图50示例说明执行有漏洞的软件2v的例子。在这一例子,在执行有漏洞的软件2v期间,在某一时间,在数据处理系统3中出现相应于将用函数F表示且使用操作数X和Y的算法处理的结果分配给Z的Z←F(X,Y)的计算。
图51示例说明在单元6中远程处理(remote)图50中的选择的算法处理的本发明的实现的例子。在这一例子中,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间,并存在单元6时,出现:
●在时刻t1,在步骤1,即,执行触发将数据X和Y从数据处理系统3分别传送到位于单元6的存储模块15中的存储区x和y的步骤命令CE1,所述步骤命令CE1用OUT(x,X),OUT(y,Y)表示,
●在时刻t2,步骤2,即,执行触发单元6中的步骤命令CE2,通过第二执行部分2peu执行函数f,所述函数f为算法上等效于函数F和所述步骤命令CE2,用TRIG(f)表示。更具体地说,执行步骤命令CE2导致执行使用存储区x和y的内容的函数f,并将其结果返回到单元6的存储区z,
●以及在时刻t3,步骤3,即,执行触发将包含在单元6的存储区z中的函数f的结果传送到数据处理系统3以便将其分配给变量Z的步骤命令CE3,所述步骤命令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示例说明在单元6中远程处理图52中选择的两个算法处理的根据本发明的方法的实现的例子。根据这一例子,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间,并存在单元6时,出现如上所述,执行相应于确定Z的步骤命令CE1、CE2、CE3以及相应于确定Z’的步骤命令CE1’、CE2’、CE3’。如图所示,由于插入步骤命令CE1’至CE3’以及其他代码部分,不连续地执行步骤命令CE1至CE3。在例子中,从而执行下述顺序:CE1,部分插入码,CE2,部分插入码、CE1’,部分插入码,CE2’,部分插入码,CE3’,部分插入码,CE3。
应注意到在执行受保护软件2p期间,并存在单元6时,每次包含在受保护软件2p的第一执行部分2pes的一部分中的步骤命令利用它时,在单元6中执行相应的步骤。因此,出现在存在单元6时,正确地执行所述部分,因此,受保护软件2p完全起作用。
图54示例说明当缺少单元6时,受保护软件2p的执行尝试的例子。在这一例子中,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间:
●在时刻t1,考虑到缺少单元6,执行步骤命令OUT(x,X)、OUT(y,Y)不能触发将数据X和Y传送到各个存储区x和Y,
●在时刻t2,考虑到缺少单元6,执行步骤命令TRIG(f)不能触发执行函数f,
●以及在时刻t3,考虑到缺少单元6,执行步骤命令IN(z)不能触发传送函数f的结果。
因此,出现在缺少单元6时,不能正确地履行第一执行部分2pes的部分的至少一个请求触发单元6中执行一步骤,以致不正确地执行至少所述部分,因此,受保护软件2p不完全起作用。
根据本发明的另一有利特性,保护方法用来实现称为“基本函数”的保护原理,参考图60至64执行其描述。
为通过基本函数实现保护原理,定义:
●基本函数集,在单元6中,通过第二执行部分2peu,易执行其基本函数,以及可以在数据处理系统3和单元6间传送数据,
●以及用于所述基本函数集的基本命令集,在数据处理系统3中易于执行所述基本命令并在单元6中触发执行相应的基本函数。
为通过基本函数实现保护原理,还构成允许将包含存储模块15和处理模块16的空白单元60变换成能执行基本函数的单元6的利用装置,所述基本函数的执行由在数据处理系统3中执行基本命令所触发。
为通过基本函数实现保护原理,使用还在有漏洞的软件2vs的源中选择使用至少一个操作数并返回至少一个结果的至少一个算法处理。还选择包含至少一个选定算法处理的有漏洞的软件2vs的源的至少一个部分。
然后修改有漏洞的软件2vs的源的至少一个选定的部分,以便获得受保护软件2ps的源。其中,这种修改以致:
●在执行受保护软件2p期间,考虑到在单元6中执行的至少一个选定算法处理的功能性,在数据处理系统3中执行第一执行部分2pes的至少一个部分,
●在执行受保护软件2p期间,在单元6中执行的第二执行部分2peu至少执行至少一个选定算法处理的功能性,
●分开每个选定算法处理以便在执行受保护软件2p期间,通过第二执行部分2peu,使用基本函数,执行每个选定的算法处理。最好,将每个选定的算法处理分成基本函数fen(其中,n从1到N变化),即:
-允许设置一个或几个操作数的一个或几个基本函数供单元6使用,
-基本函数,一些使用操作数并结合来使用所述操作数执行所选定的算法处理的功能性,
-允许通过单元6,设置所选定的算法处理的结果交由数据处理系统3使用的一个或几个基本函数。
●从允许执行受保护软件2p的顺序集中选择基本命令的顺序。
在数据处理系统3中执行的受保护软件2p的第一执行部分2pes执行在单元6中触发的基本命令CFEn(其中n从1至N),通过第二执行部分2peu执行每个在前定义的基本函数fen。
图60示例说明执行有漏洞的软件2v的例子。在这一例子中,在数据处理系统3中执行有漏洞的软件2v期间,在某些时刻,出现相应于将用函数F表示并使用操作数X和Y的算法处理的结果分配给Z的计算Z←F(X,Y)。
图61示例说明在单元6中远程处理图60中选定的算法处理的本发明的实现的例子。在这一例子中,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间,并存在单元6时,出现:
●在时刻t1,t2,执行在单元6中触发的初始函数CFE1、CFE2,通过第二执行部分2peu,执行提供将数据X,Y从数据处理系统3分别传送到位于单元6的存储模块15中的存储区x,y的相应的基本函数fe1,fe2,所述基本命令CFE1,CFE2分别用OUT(x,X),OUT(y,Y)表示,
●在时刻t3至tN-1,执行在单元6中触发的基本命令CFE3至CFEN-1,通过第二执行部分2peu执行相应的基本函数fe3至feN-1,分别用TRIG(fe3)至TRIG(feN-1)表示所述基本命令CFE3至CFEN-1。结合所执行的基本函数fe3至feN-1序列在算法上等效于函数F。更精确地说,执行所述基本命令导致在单元6中执行使用存储区x,y的内容并将结果返回到单元6的存储区z的基本函数fe3至feN-1,
●以及在时刻tN,执行在单元6中触发的基本命令CFEN,通过第二执行部件2peu执行提供将包含在单元6的存储区z中的算法处理的结果传送到数据处理系统3的基本函数feN,以便将其分配给变量Z,所述基本命令CFEN用IN(z)表示。
在所示的例子中,连续地执行基本命令1至N。应当注意到能引起两个改进:
●第一改进涉及在单元6中远程处理几个算法处理以及至少由另一算法使用一个算法处理的结果。在这种情况下,能去除能用于传送的一些基本命令。
●第二改进针对在允许执行受保护软件2p的顺序集中,选择基本命令的相关顺序。在这一方面,最好通过在它们间插入在数据处理系统3中执行的代码部分和包括或不包括用于确定其他数据的基本命令,选择临时分解基本函数的执行的基本命令顺序。图62和63示例说明这种实施例的原理。
图62表示执行有漏洞的软件2v的例子。在这一例子中,在执行有漏洞的软件2v期间,在数据处理系统3中出现执行导致确定Z和Z’的两个算法处理,以便Z←F(X,Y)和Z’←(X’,Y’)。
图63示例说明根据在单元6中远程处理图62中所选定的两个算法处理的本发明的方法的实现的例子。根据这一例子,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间,并存在单元6时,如上所述,出现执行相应于确定Z的基本命令CFE1至CFEN和执行相应于确定Z’的基本命令CFE1’至CFEM’。如所示,因为插入基本命令CFE1’至CFEM’和其他部分代码,不连续地执行基本命令CFE1至CFEN。在该例子中,从而执行下述顺序,CFE1、部分插入码、CFE1’、CFE2、部分插入码,CFE2’、CFE3’、部分插入码、CFE4’、CFE3、CFE4、...、CFEN、CFE’M。
应注意到,在执行受保护软件2p期间,并存在单元6时,每次包含在受保护软件2p的第一执行部分2pes的部分中的基本命令利用它时,在单元6执行相应的基本函数。因此,出现在存在单元6时,正确地执行所述部分,因此,受保护软件2p完全起作用。
图64示例说明当缺少单元6时,执行受保护软件2p的尝试的例子。在这一例子中,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间,在每个时刻,执行基本命令不能触发执行相应的基本函数,因为缺少单元6,因此正确地确定分配到变量Z的值。
因此,出现在缺少单元6时,不能正确地履行受保护软件2p的部分第一执行部分2pes的一部分触发单元6中的基本函数执行的至少一个请求,以便不正确地执行至少所述部分,因此,受保护软件2p不完全起作用。
根据本发明的另一有利特性,保护方法针对实现称为“检测和强制”的保护原理,将参考图70至74执行其描述。
为通过检测和强制实现保护原理,定义:
●在单元6中至少部分易受监视的至少一个软件执行特性,
●由至少一个软件执行特性遵守的至少一个准则,
●在单元6中实现的检测模块17并允许检测不遵守至少一个相关准则的至少一个软件执行特性,
●以及在单元6中实现的强制模块18并允许当未遵守至少一个准则时,通知数据处理系统3和/或修改软件的执行。
为通过检测和强制实现保护原理,还构成允许将包含存储模块15和处理模块16的空白单元60转换成实现至少检测模块17和强制模块18的单元6的利用模块。
图70示例说明通过检测和强制,实现这一保护原理所需的模块。单元6包括属于处理模块16的检测模块17和强制模块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中,监视与每个度量的变量有关的至少一个阈值的概率,
●以及根据与其有关的每个功能性的使用,允许更新每个度量的变量的实行模块。
除检测模块17和强制模块18外,还构成实现实行模块的利用模块。
在有漏洞的软件2vs的源中,还选择:
●有漏洞的软件2v的至少一个功能性,使用度量的变量,易监视其使用,
●用来量化所述功能性的使用的至少一个度量的变量,
●与相应于所述功能性的使用的限制的度量的变量有关的至少一个阈值,
●以及根据所述功能性的使用,度量的变量的更新的至少一种方法。
然后修改有漏洞的软件2vs的源,以便获得受保护软件2ps的源,这一改变是在执行受保护软件2p期间,第二执行2peu:
●根据所述功能性的使用,实现度量的变量,
●以及考虑至少一个阈值越过。
换句话说,在执行受保护软件2p期间,根据所述功能性的使用,更新度量的变量,以及当越过阈值时,检测模块17通知强制模块18做出适当的决定来通知数据处理系统3和/或修改由处理模块16执行的处理,处理模块16允许修改受保护软件2p的部分的功能,以便修改受保护软件2p的功能。
为通过检测和强制,使用度量的变量作为特性,实现保护原理的第一优选不同实施例,定义:
●用于度量的至少一个变量的几个相关阈值,
●以及相应于每个所述阈值的不同的强制模块。
在有漏洞的软件2vs的源中,还选择:
●用来量化软件的至少一个功能性的使用并且必须是相应于所述功能性的使用的不同限制的相关的几个阈值的度量的至少一个变量,
●以及与度量的变量有关的至少两个阈值。
然后修改有漏洞的软件2vs的源,以便获得受保护软件2ps的源,这一修改可以使在受保护软件2p的执行期间,第二执行部分2peu:
●根据所述功能性的使用,实现度量的变量,
●以及不同地考虑各个阈值的越过。
换句话说,通常,在执行受保护软件2p期间,当越过第一阈值时,单元6通知数据处理系统3命令受保护软件2p不再使用所述功能性。如果受保护软件2p继续使用所述功能性,可能越过第二阈值。在越过第二阈值的情况下,强制模块18能使所选定的功能性无效和/或使受保护的软件2p无效。
为通过使用度量的变量作为特性的检测和强制,实现保护原理的第二优选不同实施例,定义允许通过至少一个另外的使用,信任(credit)由度量的变量监视的至少一个软件功能性的补装模块。
除检测模块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执行触发在单元6中执行属于指令集的指令ii的指令命令CIi。在所述指令集中,至少一些指令的每一个包括定义指令的功能性的部分和允许校验用于执行指令的部分预期链接的部分。在这一例子中,用TRIG(ii)表示指令命令CIi,以及用于执行指令的预期链接为in、in+1和in+2。单元6中执行指令in给出结果a以及执行指令in+1给出结果b。指令in+2用作为操作数,指令in和in+1的结果a和b及其执行给出结果c。
考虑到在单元6中执行的所述指令链接相应于预期的一个,其导致受保护软件2p的正常或标称的功能。
图72示例说明在不遵守预期链接的情况下,将监视这些指令的至少一部分的执行链接用作遵守的执行特征,通过检测和强制,实现保护原理的例子。
根据这一例子,用于执行指令的预期链接仍为in、in+1和in+2。然而,通过用指令in’代替指令in,修改执行链接,以便实际执行的链接为in’、in+1和in+2。执行指令in’给出结果a,即与执行指令in相同的结果。然而,最迟在执行指令in+2期间,检测模块17检测指令in’不相应于生成用作指令in+2的操作的结果a的预期指令。检测模块17将其告知强制模块18,从而修改指令in+2的功能,以便执行指令in+2给出能不同于c的结果c’。当然,如果执行指令in’给出不同于指令in的结果a的结果a’,很显然指令in+2的结果也不同于c。
因为在单元6中执行的指令的执行链接不相应于预期的一个,因此,能获得受保护软件2p的功能的改进。
图73和74示例说明将监视指令的至少一部分的执行链接作用遵守的执行特征,通过检测和强制实现保护原理的优选的不同实施例。根据这一优选的不同实施例,定义指令集,其至少一些指令与寄存器一起工作并为返回结果,使用至少一个操作数。
如图73所示,定义与寄存器一起工作的至少一些指令,定义指令的功能性的部分RF以及定义用于执行指令的预期链接的部分PE。部分PF相应于技术人员已知的操作码。部分PE定义预期链接,包括对应于下述的位字段:
●指令CII的标识字段,
●以及用于指令的每个操作数k,其中k从1至K,以及K个指令操作数:
-标志字段CDk,表示其是否适合于校验操作数K的起始,
-以及操作数的预期标识字段CIPk,表示已经生成操作数k的内容的指令的预期标识。
如图74所示,指令集包括属于处理模块16的V个寄存器,每个寄存器称为Rv,其中v从1至V。对每个寄存器Rv,定义两个字段,即:
●技术人员已知的功能字段CFv,并允许存储指令执行的结果,
●以及所生成的标识字段CIGv,允许存储已经生成功能字段CFv的内容的指令的标识。通过已经生成功能字段CFv的指令CII的标识字段的内容,自动更新所述生成的标识字段CIGv。所述生成标识字段CIGv既不能存取,也不能由任何指令修改,并仅用于检测模块17。
在执行指令期间,对每个操作数k,检测模块17执行下述操作:
●读取标志字段CDk,
●如果标志字段CDk利用它,同时读取相应于由操作数k使用的寄存器的预期标识字段CIPk和所生成的标识字段CIGv,
●检查两个字段CIPk和CIGv的等式,
●以及如果等式为假,检测模块17认为未遵守指令的执行链接。
当检测模块17已经告知它们未遵守指令链接时,强制模块18允许修改指令结果。通过修改当前执行的指令的功能部分PF或其后指令的功能部分RF来执行优选实施例。
根据本发明的另一有利特性,保护方法针对实现称为“重命名”的保护原理,将参考图80至85描述。
为通过重命名实现保护原理,定义:
●一组相关函数(dependent function),通过第二执行部分2peu,易于在单元6中执行其相关函数,并可以在数据处理系统3和单元6间传送数据,所述相关函数集能是有限或无限,
●用于所述相关函数的一组触发命令,所述触发命令易于在数据处理系统3中执行并且在单元6中触发执行相应的相关函数,
●对每个触发命令,次序(order)至少部分相应于由第一执行部分2pes传送到第二执行部分2peu的信息,以便触发执行相应的相关函数,所述顺序具有触发命令的至少一个变元的形式,
●设计成在修改有漏洞的软件2v期间使用的次序的重命名方法,这种方法允许重命名这些次序以便通过重命名次序获得允许取消相应的相关函数的身份的触发命令,
●以及设计成在使用阶段期间用在单元6中的恢复模块20并允许由重命名的次序,恢复初始次序,以便恢复执行相关函数。
为通过重命名实现保护原理,还构造将包含存储模块15和处理模块16的空白单元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的例子。在这一例子中,在数据处理系统3中执行有漏洞的软件2V期间,在某些时刻出现相应于将用函数F和使用操作数X和Y表示的算法处理的结果分配给变量Z的计算Z←F(X,Y)。
图81和82示例说明本发明的实现的例子。
图81示例说明本发明的局部实现。在这一例子中,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间,以及在存在单元6时,出现:
●在时刻t1,t2,执行触发命令CD1、CD2,其触发在单元6中,通过第二执行部分2peu,执行提供将数据X、Y从数据处理系统3分别传送到位于单元6的存储模块15中的存储区x,y的相应相关函数fd1,fd2,所述触发命令CD1、CD2分别用OUT(x,X)和OUT(y,Y)表示,
●在时刻t3至tN-1,执行触发命令CD3至CDN-1,其触发在单元6中,通过第二执行部分2peu,执行相应相关函数fd3至fdN-1,所述触发命令CD3至CDN-1分别用TRIG(fd3)至TRIG(fdN-1)表示。结合执行的相关函数fd3至fdN-1的序列在算法上等效于函数F。更精确地是,执行所述触发命令导致在单元6中执行使用存储区x,y的内容并将结果返回到单元6的存储区z的相关函数fd3至fdN-1,
●以及在时刻tN,执行触发命令CDN,其触发在单元6中,通过第二执行部分2peu,执行提供将包含在单元6的存储区z中的算法处理的结果传送到数据处理系统3,以便将其分配给变量Z的相关函数fdN,所述命令用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示例说明本发明的全部实现。在这一例子中,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间,以及在存在单元6时,出现:
●在时刻t1,t2,通过重命名次序CDCR1、CDCR2,执行触发命令,将重命名次序R(x)、R(y)传送到单元6,在单元6中触发通过恢复模块20恢复重命名次序以便恢复次序,即,存储区x,y的身份,然后,通过第二执行部分2peu执行提供将数据X,Y从数据处理系统3分别传送到位于单元6的存储模块15中的存储区x,y的相应的相关函数fd1,fd2,具有重命名次序CDCR1、CDCR2的所述触发命令分别用OUT(R(x),X),OUT(R(y),Y)表示。
●在时刻t3至tN-1,通过重命名次序CDCR3至CDCRN-1,执行触发命令,将重命名次序R(fd3)至R(fdN-1)传送到单元6,在单元6中触发通过恢复模块20恢复次序,即,fd3至fdN-1,然后,通过第二执行部分2peu,执行相关函数fd3至fdN-1,具有重命名次序CDCR3至CDCRN-1的所述触发命令分别用TRIG(R(fd3))至TRIG(R(fdN-1))表示,
●在时刻tN-1,通过重命名次序CDCRN,执行触发命令,将重命名次序R(z)传送到单元6,在单元6中触发通过恢复模块20恢复次序,即存储区z的特性,然后通过第二执行部分2peu执行提供将包含在单元6的存储区z中的算法处理的结果传送到数据处理系统3的相关函数fdN,以便将其分配给变量Z,具有重命名次序CDCRN的所述触发命令用IN(R(z))表示。
在所示的例子中,连续地执行具有重命名次序1至N的触发命令。应注意到能产生两种改进:
●第一改进涉及单元6远程处理几个算法处理以及至少由另一个算法处理使用一个算法处理的结果的情形。在这种情况下,可以去除具有用于传送的重命名次序的一些触发命令。
●第二改进针对在允许执行受保护软件2p的顺序集中,选择具有重命名次序的触发命令的相关顺序。在这一方面,最好通过在它们间插入在数据处理系统3中执行的代码部分并包括或不包括具有用于确定其他数据的重命名次序的触发命令,选择暂时脱离执行相关函数的具有重命名次序的触发命令的顺序。图83和84示例说明这种实施例的原理。
图83表示执行有漏洞的软件2p的例子。在这一例子中,在执行有漏洞的软件2p期间,出现在数据处理系统3中执行导致确定Z和Z’的两个算法处理,诸如Z←F(X,Y)和Z’←F’(X’,Y’)。
图84示例说明单元6远程处理图83中选定的两个算法处理的根据本发明的方法的实现的例子。根据这一例子,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间并在存在单元6时,如上所述,执行相应于确定Z的具有重命名次序CDCR1至CDCRN的触发命令以及执行相应于确定Z’的具有重命名次序CDCR1’和CDNRM’的触发命令。如图所示,不连续地执行具有重命名次序CDCR1至CDCRN的触发命令,因为插入了具有重命名次序CDCR1’至CDCRM’的触发命令以及其他代码部分。在该例子中,从而执行下述顺序,CDCR1、插入代码部分,CDCR1’、CDCR2、插入代码部分、CDCR2’、CDCR3’、插入代码部分、CDCR4’、CDCR3、CDCR4、...、CDCRN、CDCR’M。
应注意到,在执行受保护软件2p的第一执行部分2pes的一部分期间,在数据处理系统3中执行的具有重命名次序的触发命令,在单元6中触发恢复相应相关函数的特性,及然后它们的执行。因此,在存在单元6时,出现正确地执行所述部分,因此,受保护软件2p完全起作用。
图85示例说明当缺少单元6时,执行受保护软件2p的尝试的例子。在这一例子中,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间,因为缺少单元6,在每个时刻,执行具有重命名次序的触发命令既不能触发恢复次序也不能执行相应的相关函数。因此,不能正确地确定分配给变量Z的值。
因此,出现在缺少单元6时,不能正确地履行受保护软件2p的第一执行部分2pes的一部分触发恢复次序和在单元6中执行相关函数的至少一个请求,以致至少不能正确地执行所述部分,因此,受保护软件2p不完全起作用。
由于通过重命名的这一保护原理,在具有重命名次序的触发命令的受保护软件2p中的检查不能确定必须在单元6中执行的相关函数的特性。应注意到在修改有漏洞的软件2v成受保护软件2p期间,执行次序的重命名。
根据通过重命名的保护原理的一变型,定义用于至少一个相关函数的算法上等效但由具有重命名次序的不同触发命令触发的一族相关函数。根据这一变型,对使用相关函数的至少一个算法处理,将所述算法处理分成多个相关函数,其中它们中的至少一个用同一族的相关函数代替,而不是保持几次出现相同函数。为此,修改具有重命名次序的触发命令以便考虑用同一族的相关函数代替相关函数。换句话说,同一族的两个相关函数具有不同的次序,因此,具有重命名次序的不同触发命令,以及通过检查受保护软件2p来发现所说的相关函数在算法上等效是不可能的。
根据通过重命名的保护原理的一不同的第一优选实施例,通过将噪声字段连接到定义相关函数的功能部分的信息上,为至少一个相关函数定义一族算法上等效的相关函数以便在单元6中执行。
根据通过重命名的保护原理的一不同的第二优选实施例,通过使用标识字段,为至少一个相关函数定义算法上等效的一族相关函数。
根据通过重命名的保护原理的优选一不同实施例,将允许加密次序以便将它们变换成重命名次序的加密方法定义为重命名次序的方法。记住在保护阶段P执行次序的重命名。对这一优选变型,恢复模块20是实现允许解密重命名次序,从而恢复相关函数的身份以便在单元6中执行的解密方法的模块。在单元6中实现所述恢复模块,并能是软件或硬件属性。要求所述恢复模块在使用阶段U期间,为在单元6中触发,每次在数据处理系统3中执行具有重命名次序的触发命令时,执行相关函数。
根据本发明的另一有利特性,保护方法针对实现称为“条件分支“的保护原理,将参考图90至92来描述。
为通过条件分支实现保护原理,在有漏洞的软件2vs的源中选择至少一个条件分支BC。还选择包含至少一个选定的条件分支BC的有漏洞的软件2vs的源的至少一部分。
然后修改有漏洞的软件2vs的源的至少一个选定部分,以便获得受保护软件2ps的源。这一修改是在执行受保护软件2p期间,其中:
●第一执行部分2pes的至少一个部分,其在数据处理系统中执行,考虑到在单元6中执行至少一个选定条件分支BC的功能性,
●以及第二执行部分2peu,其在单元6中执行,至少执行至少一个选定条件分支BC的功能性并将允许第一执行部分2peu在所选定的点继续其执行的一条信息交由数据处理系统3自由处理。
在数据处理系统3中执行的受保护软件2p的第一执行部分2pes执行条件分支命令,其在单元6中触发通过第二执行部分2peu执行其功能性等效于所选定的条件分支BC的功能性的远程处理条件分支bc。为通过条件分支实现保护原理,单元6包括存储模块15和处理模块16。
图90示例说明执行有漏洞的软件2v的例子。在这一例子中,在数据处理系统3中执行有漏洞的软件2v期间,在某些时刻,出现向有漏洞的软件2v表示继续其执行的点,即,三个可能点B1、B2或B3中的一个的条件分支BC。必须理解到条件分支BC采用在点B1、B2或B3继续执行软件的决定。
图91示例说明单元6远程处理的相应于条件分支BC的所选定的条件分支的本发明的实现的例子。在这一例子中,在数据处理系统3中执行受保护软件2p的第一执行部分2pes并存在单元6时,出现:
●在时刻t1,执行条件分支命令CBC1,其触发在单元6中通过第二执行部分2peu执行算法上等效于条件分支BC的远程处理条件分支bc,所述条件分支命令CBC1用TRIG(bc)表示,
●以及在时刻t2,将允许第一执行部分2pes在所选定的点,即点B1、B2或B3继续其执行的信息从单元6传送到数据处理系统3。
应注意到在执行受保护软件2p的第一执行部分2pes的一部分期间,在数据处理系统3中执行的条件分支命令触发在单元6中执行相应的远程处理条件分支。因此,出现在存在单元6时,正确地执行所述部分,因此,受保护软件2p完全起作用。
图92示例说明当缺少单元6时,执行受保护软件2p的尝试的例子。在这一例子中,在数据处理系统3中执行受保护软件2p的第一执行部分2pes期间:
●在时刻t1,考虑到缺少单元6时,执行条件分支命令CBC1不能触发执行远程处理条件分支bc,
●以及在时刻t2,考虑到缺少单元6时,传送允许第一执行部分2pes在所选定的点执行的该段信息。
因此,出现在缺少单元6时,不能正确地履行第一执行部分2pes的一部分触发在单元6中执行远程处理条件分支的至少一个请求,以致不正确地执行至少所述部分,因而受保护软件不完全起作用。
在与图90至92有关的先前描述中,本发明的主题在于在单元6中远程处理条件分支。当然,通过在单元6中远程处理其整体功能性等效于已经远程处理的所有条件分支的功能性的一系列条件分支,执行本发明的优选实施例。执行所述远程处理条件分支序列的全部功能性导致设置允许受保护软件2p的第一执行部分2pes在选定点继续其执行的一段信息由数据处理系统3使用。
在参考图40至92的在前描述中,已经彼此无关地清楚地描述了六个不同的软件保护原理。通过使用通过变量的保护原理,可能结合一个或几个其他的保护原理,实现根据本发明的保护方法。在通过实现至少一个另一保护原理补充通过变量的保护原理的情况下,通过临时分解的保护原理和/或通过基本函数的保护原理,有利地补充通过变量的保护原理。
以及当还实现通过临时分解的保护原理时,依次轮到通过基本函数的保护原理和/或通过条件分支的保护原理补充它。
以及当还实现通过基本函数的保护原理时,依次轮到通过检测和强制的保护原理和/或通过重命名的保护原理和/或通过条件的保护原理补充它。
以及当还实现通过检测和强制的保护原理时,依次轮到通过重命名的保护原理和/或通过条件分支的保护原理补充它。
以及当还实现通过重命名的保护原理时,依次轮到通过条件分支的保护原理补充它。
根据优选的一不同实施例,由通过临时分解的保护原理补充、由通过基本函数的保护原理补充、由通过检测和强制的保护原理补充、由通过重命名的保护原理补充、由通过条件分支的保护原理补充通过变量的保护原理。
在应用保护原理,补充通过变量的保护原理的情况下,考虑到其组合实现,其在前完成的说明必须包括下述改进:
●必须将有漏洞的软件的概念理解而向正描述的保护原理的有漏洞的软件。因此,在已经将保护原理应用到有漏洞的软件的情况下,读者必须将措辞“有漏洞的软件”解释为措辞“受已经应用的保护原理保护的软件”;
●必须将受保护软件的概念理解为由正描述的保护原理保护的软件。因此,在已经应用保护原理的情况下,读者必须将措辞“受保护软件”解释为措辞“新版本的受保护软件”;
●以及为实现正描述的保护原理所做的选择必须考虑为实现已经应用的保护原理所做的选择。
其余的描述允许更好地理解根据本发明的保护方法的实现。如图100更精确地表示,根据本发明的这一保护方法由下述组成:
●首先,保护阶段P,在其期间,修改有漏洞的软件以变成受保护软件2p,
●其次,使用阶段U,在其期间,使用受保护软件2p。在这一阶段U期间:
-在存在单元6时,每次在数据处理系统3中执行的第一执行部分2pes的一部分利用它时,在单元6中执行所利用的功能性,以便正确地执行所述部分,因此,受保护软件2p完全起作用,
-在缺少单元6,尽管第一执行部分2pes的一部分请求在单元6中执行功能性,不能正确地履行所述请求,以致不正确地执行至少所述部分,因而受保护软件2p不完全起作用,
●以及可能的补充阶段R,在其期间,将度量的变量用作特性,信任通过实现检测和强制的保护原理的第二优选变型实施例保护的功能性的至少一个另外的使用。
能将保护阶段P分成两个保护子阶段P1和P2。称为在前保护子阶段P1的第一阶段与保护的有漏洞的软件2v无关地发生。称为其后的保护子阶段P2的第二阶段P2与保护的有漏洞的软件2v有关。应注意到通过两个不同的人或两个不同的方式,能有利地执行在前保护子阶段P1和下一保护子阶段P2。例如,由提供软件保护系统开发的人或公司执行在前保护子阶段P1,而由提供要求保护的软件开发的人或公司执行下一保护子阶段P2。当然,也能由相同人或团队执行在前保护子阶段P1和下一保护子阶段P2是很显然的。
在前保护子阶段P1由用于将执行的不同任务或工作的几个级S11、...、S1i组成。
这一在前保护子阶段P1的第一级称为“定义级S11”,在这一定义级S11:
●选择:
-单元6的类型,,即,具体是存储单元或处理和存储单元。如所示的例子中,芯片卡阅读器8和与阅读器有关的芯片卡7能选择为单元6,
-以及设计成分别在数据处理系统3和单元6中实现的传送模块12、13,在使用阶段U期间,能提供在数据处理系统3和单元6间传送数据,
●以及在根据本发明的保护方法实现通过基本函数的保护原理时,还定义:
-基本函数集,其基本函数易于在单元6中执行,
-以及用于所述基本函数集的基本命令集,所述基本命令易于在数据处理系统3中执行,并在单元6中触发执行基本函数,
●以及在根据本发明的保护方法实现通过检测和强制的保护原理时,还定义:
-至少一个软件执行特性,易于在单元6中被至少部分监视,
-至少一个软件执行特性遵守的至少一个准则,
-在单元6中实现的检测模块17,允许检测至少一个软件执行特性不遵守至少一个相关准则,
-以及在单元6中实现的强制模块18,当不遵守至少至少一个准则时,允许通知数据处理系统3和/或修改执行软件,
●以及在使用软件执行的度量的变量作为特性,根据本发明的保护方法实现通过检测和强制实现保护原理的情况下,还将:
-软件的功能性的使用的度量的变量定义为易监视的软件执行特性,
-将与每个度量的变量有关的至少一个阈值定义为遵守的准则,
-以及定义允许更新至少一个度量的变量的实行模块,
●以及在根据本发明的保护方法还实现使用软件执行的度量的变量作为特性,通过检测和强制的保护原理的第一优选一不同实施例的情况下,还定义:
-用于至少一个度量的变量的几个相关阈值,
-以及相应于每个所述阈值的不同强制模块,
●以及在根据本发明的保护方法还实现使用执行软件的度量的变量作为特性,通过检测和强制的保护原理的第二优选一不同实施例的情况下,还定义允许将至少一个另外的使用增加到由度量的变量监视的至少一个软件功能性上的补装模块,
●以及在根据本发明的保护方法还实现使用软件利用率的简要表作为特性,通过检测和强制实现保护原理的情况下,还将
-软件使用的简要表定义为易受监视的软件执行特性,
-软件执行的至少一个特征定义为将遵守的准则,
●以及在根据本发明的保护方法还实现将执行链接的监视用作将遵守的执行特征,通过检测和强制实现保护原理的情况下,还:
-定义其指令易在单元6中执行的指令集,
-定义用于所述指令集的指令命令集,所述指令命令易在数据处理系统3中执行,以及触发在单元6中执行指令,
-将这些指令链接定义为使用的简要表,
-将用于执行指令的预期链接定义为执行特性,
-将允许检测指令连接不相应于预期一个的指令链接的模块定义为检测模块17,
-以及将当指令链接不相应于预期一个时,允许通知数据处理系统3和/或修改受保护软件2p的部分的功能性(functionality)的模块定义为强制模块18,
●以及在根据本发明的保护方法将所监视的执行链接用作将遵守的执行特征,通过检测和强制实现保护原理的一优选变型实施例时,还:
-将其至少一些指令与寄存器一起工作并为返回结果,使用至少一个操作数的指令集定义为指令集,
-对与寄存器一起工作的至少一些指令:
以及定义用于执行指令并包括位字段的预期
链接的部分,所述位字段相应于:
◇指令CII的标识字段
◇以及用于指令的每个操作数的:
*标志字段CDk,
*以及操作数的预期识别字段CIPk,
-对属于利用模块并由指令集使用的每个寄存器,定义生成的标识字段CIGv,其中将返回其结果的最后一个指令的标识自动存储在所述寄存器中,
-将允许在执行用于每个操作数的指令期间,当标志字段CDk使用它时,检查对应于由所述操作数使用的寄存器的所生成的标识字段CIGv的等式,以及所述操作数的起始的预期标识字段CIPk的模块定义为检测模块17,
-将如果所检查的等式的至少一个为假,允许修改指令结果的模块定义为强制模块。
●以及在根据本发明的保护方法通过重命名实现保护原理时,还将
-基本命令或指令命令定义为触发命令,
-将基本函数或指令下定义为相关函数,
-将用于至少部分相应于由数据处理系统3传送到单元6的信息的触发命令的至少一个变元定义为一次序,以便触发执行相应的相关函数,
-定义允许重命名次序以便获得具有重命名次序的触发命令的重命名次序的方法,
-以及定义设计成在使用阶段U期间,用在单元6中并允许以重命名次序恢复相关函数以执行的恢复模块20,
●以及在根据本发明的保护方法实现通过重命名的保护原理的一不同的情况下,还定义用于至少一个相关函数的算法上等效,但由其重命名次序不同的触发命令触发的一族相关函数,
●以及在根据本发明的保护方法实现通过重命名的保护原理的一不同的优选实施例的一个的情况下,还定义用于至少一个相关函数的算法上等效的一族相关函数:
-通过将噪声字段连接到定义相关函数的功能部分的信息上以便在单元6中执行,
-或通过使用指令CII的标识字段和操作数的预期标识字段CIPk。
●以及在根据本发明的保护方法通过重命名实现保护原理的优选一不同的情况下,还将:
-将加密次序的加密方法定义为次序的重命名方法,
-以及将实现解密重命名次序,从而恢复将在单元6中执行的相关函数的身份的解密方法的模块定义为恢复模块20。
在在前保护子阶段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之后为称为“预先定制级S12”的级。在这一预先定制级S13期间,将至少部分传送模块13和/或利用模块加载到至少一个空白单元60,以便获得至少一个预先定制的单元66。当注意到,只要传送到预先定制单元66,在所述预先定制单元66外,不再直接存取利用模块的一部分。通过适合的预先定制单元,能执行利用模块到空白单元66的转移,其在图120的剩余描述中被描述。就预先定制单元66来说,由芯片卡7及其阅读器8构成,预先定制仅涉及芯片卡7。
在在前保护子阶段P1期间,在定义级S11之后,以及或者,在构造级S12之后,能发生称为“工具生成级S14”的级。在这一工具生成级S14期间,生成允许帮助生成受保护软件或自动化软件保护的工具。这种工具允许:
●在有漏洞的软件2v中帮助选择或自动选择将保护的:
-易于在单元6中摇控的变量,
-易于修改的部分,
-以及当实现通过临时分解的保护原理时,易于分成可在单元6中可远程处理的步骤的算法处理,
-以及当还实现通过基本函数的保护原理时,易于分成在单元6中远程处理的基本函数,
-以及当还实现通过检测和强制的保护原理时,将监视的执行特性和,或者,易于分成在单元6中可远程处理的指令的算法处理,
-以及当还实现通过重命名的保护原理时,易于分成在单元6中远程处理的相关函数并且能重命名用于其的触发命令的次序的算法处理,
-以及当还实现通过条件分支的保护原理时,其功能性易于在单元6中远程处理的条件分支,
●以及或者,为帮助生成受保护软件或自动化软件保护。
独立地或结合执行这些不同的工具以及每个工具具有各种形式,诸如例如预处理器、汇编器、编译器等等。
在在前保护子阶段P1之后为与保护的有漏洞的软件2v有关的下一保护子阶段P2。这一下一保护子阶段P2也由几个级组成。相应于通过变量实现的保护原理的第一级为“创建级S21”。在这一创建级S21期间,使用在定义级S11期间做出的选择。在所述选择以及或者,在工具生成阶段S14期间创建的工具的帮助下,通过下述方式创建受保护软件2p:
●通过在有漏洞的软件2vs的源中选择:
-至少一个变量,在执行有漏洞的软件2v期间,该变量部分定义后者的状态,
-以及包含至少一个选定变量的至少一个部分,
●通过由有漏洞的软件2vs的源产生受保护软件2ps的源,通过修改有漏洞的软件2vs的源的至少一个选定部分,这一修改为在执行受保护软件2p期间,至少一个选定变量或至少一个选定变量的拷贝驻留在变换成单元6的空白单元60中,
●以及通过由受保护软件2ps的源产生受保护软件2p的第一对象部分2pos,所述第一对象部分2pos为在执行受保护软件2p期间,出现在数据处理系统3中执行并且其至少一部分考虑到至少一个变量或至少一个变量的拷贝驻留在单元6中的第一执行部分2pes。
当然,在开发新软件期间,能直接应用根据本发明的通过变量的保护原理,而不要求在前实现有漏洞的软件2v。用这种方式,直接获得受保护软件2p。
在下一保护子阶段P2期间,以及当除通过变量的保护原理外,还应用至少另一保护原理时,发生“修改级S22”。在这一修改级S22期间,使用在定义级S11期间插入的定义。在所述定义以及或者,在工具生成级S14期间构造的工具的帮助下,修改受保护软件2p以便允许根据在前定义的配置的一个,实现保护原理。
当实现通过临时分解的保护原理时,修改受保护软件2p:
●通过在受保护软件2ps的源中选择:
-至少一个算法处理,在执行受保护软件2p期间,其使用至少一个选定变量并允许获得至少一个结果变量,
-以及包含至少一个选定算法处理的至少一个部分,
●通过修改受保护软件2ps的源的至少一个选定部分,这一修改为:
-在执行受保护软件2p期间,在数据处理系统3中执行第一执行部分2pes以及在包括处理模块16的单元6中执行第二执行部分2peu,
-通过第二执行部分2peu,至少执行至少一个选定算法处理的功能性,
-分开至少一个选定算法处理以便在执行受保护软件2p期间,通过第二执行部分2peu,出现几个不同步骤,即:
-对至少一个选定的算法处理,定义步骤命令以便在执行受保护软件2p期间,由第一执行部分2pes执行步骤命令,以及单元6中触发通过第二执行步骤2peu执行一步骤,
-以及在允许执行受保护软件2p的顺序集中,选择步骤命令的顺序,
●以及通过产生:
-受保护软件2p的第一对象部分2pos,所述第一对象部分2pos为在执行受保护软件2p期间,根据所选定的顺序,执行步骤命令,
-以及受保护软件2p的第二对象部分2pou,所述第二对象部分2pou为在加载到空白单元60后,以及在执行受保护软件2p期间,出现执行由第一执行部分2pes触发的步骤的第二执行部分2peu。
当实现通过基本函数的保护原理,而未实现通过临时分解的保护原理时,修改保护软件2p:
●通过在受保护软件2ps的源中选择:
-至少一个算法处理,在执行受保护软件2p期间,其使用至少一个选定变量,并允许获得至少一个结果变量,
-以及包含至少一个选定算法处理的至少一个部分,
●通过修改受保护软件2ps的源的至少一个选定部分,这一修改为:
-在执行受保护软件2p期间,在数据处理系统3中执行第
一执行部分2pes以及在单元6中执行第二执行部分2peu,
-通过第二执行部分2peu,至少执行至少一个选定算法处理的功能性,
-分开至少一个选定的算法处理以便在执行受保护软件2p期间,使用基本函数,通过第二执行部分2peu,执行所述算法处理,
-对至少一个选定的算法处理,将基本命令结合成受保护软件2ps的源,以便在执行受保护软件2p期间,通过第一执行部分2pes执行每个基本命令并在单元6中触发通过第二执行部分2peu执行基本函数,
-在允许执行受保护软件2p的顺序集中选择基本命令的序列,
●以及通过产生:
-受保护软件2p的第一对象部分2pos,所述第一对象部分2pos为在执行受保护软件2p期间,根据所选定的顺序,执行基本命令,
-以及包含利用模块的受保护软件2p的第二对象部分2pou,所述第二对象部分2pou为在加载到空白单元60后,以及在执行受保护软件2p期间,出现执行由第一执行部分2pes触发的基本函数的第二执行部分2peu。
当同时实现通过临时分解和通过基本函数的保护原理,修改受保护软件2p:
●通过在受保护软件2ps的源中选择至少一个步骤,在执行受保护软件2p期间,其执行一算法处理的功能性,
●通过修改受保护软件2ps的源的至少一个选定部分,这一修改为:
-分开至少一个选择步骤以便在执行受保护软件2p期间,使用基本函数,通过第二执行部分2peu,执行所述步骤,
-对至少一个选定步骤,将基本命令集合成受保护软件2ps的源,以便在执行受保护软件2p期间,通过第一执行部分2pes执行每个基本命令,并在单元6中触发通过第二执行部分2peu,执行基本函数,
-以及在允许执行受保护软件2p的顺序集中选择基本命令的顺序,
●以及通过产生:
-受保护软件2p的第一对象部分2pos,所述第一对象部分2pos为在执行受保护软件2p期间,根据所选定的顺序,执行基本命令,
-以及还包含利用模块的受保护软件2p的第二对象部分2pou,所述第二对象部分2pou为在加载到单元6后,以及在执行受保护软件2p期间,出现执行由第一执行部分2pes触发的基本函数的第二执行部分2peu。
当实现通过检测和强制的保护原理时,修改受保护软件2p:
●通过在易监视的软件执行特征中选择监视的至少一个软件执行特征以监视,
●通过选择至少一个选定的软件执行所遵守的特性的至少一个准则,
●通过在受保护软件2ps的源中选择基本函数,将监视用于该基本函数的至少一个选定的软件执行特性,
●通过修改受保护软件2ps的源的至少一个选定部分,这一修改为在执行受保护软件2p期间,通过第二执行部分2peu监视至少一个选定执行特性,以及不遵守准则的事实导致数据处理系统3被告知/或修改受保护软件2p的执行,
●以及通过产生包含利用模块的受保护软件2p的第二对象部分2pou,还实现检测模块17和强制模块18,所述第二对象部分2pou为在加载到单元6后,以及在执行受保护软件2p期间,监视至少一个软件执行特征,以及不遵守准则的事实导致数据处理系统3被告知和/或修改受保护软件2p的执行。
为将软件执行的度量的变量用作为特性,通过检测和强制实现保护原理,修改受保护软件2p:
●通过将软件的至少一个功能性的使用的度量的至少一个变更选择为监视的软件执行特性,
●通过选择:
-使用度量的变量,易于监视其使用的受保护软件2p的至少一个功能性,
-用来量化所述功能性的使用的度量的至少一个变量,
-与对应于所述功能性的使用的限制的所选定的度量的变量有关的至少一个阈值,
-以及根据所述功能性的使用,所选定的度量的变量的更新的至少一种方法,
●以及通过修改受保护软件2ps的源的至少一个选定部分,这一修改为在执行受保护软件2p期间,根据所述功能性的使用,通过第二执行部分2peu实现度量的变量,以及考虑至少一个阈值越过。
为使用度量的变量作为特性,通过检测和强制实现保护原理的第一优选一不同实施例,修改受保护软件:
●通过在受保护软件2ps的源中选择必须与相应于功能性的使用的不同限制的几个阈值有关的至少一个选定的度量的变量,
●通过选择与所选定的度量的变量有关的至少两个阈值,
●以及通过修改受保护软件的源的至少一个选定部分,这一修改是在执行受保护软件2p期间,通过第二执行部分2peu,不同地考虑不同阈值的越过。
为将度量的变量用作特性,通过检测和强制实现保护原理的第二优选一不同实施例,修改受保护软件2p:
●通过在受保护软件2ps的源中选择允许限制功能性的使用以及必须能通过至少一个另外的使用被信任的至少一个选定的度量的变量,
●以及通过修改至少一个选定的部分,这一修改为在称为补装的阶段,能信任相应于所选定的度量的变量的至少一个功能性的至少一个另外的使用。
为将软件使用的简要表用作特性,通过检测和强制实现保护原理,修改受保护软件:
●通过将软件使用的至少一个简要表选择为软件执行特性以监视,
●通过选择至少一个选定的使用的简要表必须遵守的至少一个执行特征,
●以及通过修改受保护软件2ps的源的至少一个选定的部分,这一修改为在执行受保护软件2p期间,第二执行部分2peu遵守所有选定的执行特性。
为将执行链接的监视用作遵守的执行特性,通过检测和强制实现保护原理,修改受保护软件:
●通过修改受保护软件2ps的源的至少一个选定部分:
-通过将基本函数转换成指令,
-通过指定在单元6中执行它们期间,至少一些指令必须遵守的链接,
-以及通过将基本命令转换成相应于所使用的指令的指令命令。
当实现通过重命名的保护原理时,修改受保护软件:
●通过在受保护软件2ps的源中选择触发命令,
●通过重命名所选定的触发命令的次序,修改受保护软件2ps的源的至少一个选定部分,以便取消相应的相关函数的身份,
●以及通过产生:
-受保护软件2p的第一对象部分2pos,所述第一对象部分2pos为在执行受保护软件2p期间,执行具有重命名次序的触发命令,
-以及包含利用模块的受保护软件2p的第二对象部分2pou还实现恢复模块,所述第二对象部分2pou为在加载到单元6后以及在执行受保护软件2p期间,通过第二执行部分2peu,恢复通过第一执行部分2pes触发其执行的相关函数的身份,以及通过第二执行部分2peu,执行相关函数。
为通过重命名实现保护原理的一不同,修改受保护软件2p:
●通过在受保护软件2ps的源中选择具有重命名次序的至少一个触发命令,
●以及通过用另一重命名次序,替换具有重命名次序的一个选定的触发命令的至少一个重命名次序,修改受保护软件2ps的源的至少一个选定部分,触发相同族的相关函数。
当实现通过条件分支的保护原理时,修改受保护软件2p:
●通过在受保护软件2ps的源中选择在至少一个选定的算法处理中执行的至少一个条件分支,
●通过修改受保护软件2ps的源的至少一个选定部分,这一修改为在执行受保护软件2p期间,在单元6中,通过第二执行部分2peu,执行至少一个选定的条件分支的功能性,
●以及通过产生:
-受保护软件2p的第一对象部分2pos,所述第一对象部分pos为在执行受保护软件2p期间,在单元6中执行至少一个选定条件分支的功能性,
-以及受保护软件2p的第二对象部分2pou,所述第二对象部分2pou为在加载到单元6后,以及在执行受保护软件2p期间,出现第二执行部分2peu,通过该第二执行部分2peu,执行至少一个选定条件分支的功能性。
为通过条件分支实现保护原理的优选实施例,修改受保护软件2p:
●通过在受保护软件2ps的源中选择至少一个系列的所选定的条件分支,
●通过修改受保护软件2ps的源的至少一个选定部分,这一修改为在执行受保护软件2p期间,在单元6中,通过第二执行部分2peu,执行条件分支的至少一个选定系列的整体功能性,
●以及通过产生:
-受保护软件2p的第一对象部分2pos,所述第一对象部分2pos为在执行受保护软件2ps期间,在单元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外不能直接存取。通过在图150中的其他描述中描述的适合的定制单元,能执行将定制信息传送到空白单元60或预先定制的单元66。在单元6的情况下,由芯片卡及其阅读器构成,定制仅涉及芯片卡7。
为实现保护阶段P,参考图110、120、130、140和150更精确地描述各种技术模块。
图110示例说明系统25的实施例,系统25允许实现考虑在定义级S11期间插入的定义的构造级S12以及在构造级期间,构造传送模块12、13以及或者,用于单元6的利用模块。这种系统25包括通常具有的计算机形式的程序开发单元或工作站,包括系统单元、屏幕、外围设备诸如键盘-鼠标以及除此之外,包括下述程序:文件编辑器、汇编器、预处理器、编译器、解释器、调试器以及链接路编辑器。
图120示例说明为获得预先定制的单元66,允许至少部分将传送模块13和/或利用模块加载到至少一个空白单元60的预先定制单元30的实施例。所述预先定制单元30包括允许电子地预前定制的读写模块31、空白单元60以便获得已经加载传送模块13和/或利用模块的预先定制的单元66。预先定制单元30还能包括空白单元60的物理定制模块32,空白单元60能具有例如打印机的形式。在用芯片卡7及其阅读器8构成单元6的情况下,预先定制通常仅涉及芯片卡7。
图130示例说明允许执行生成工具的系统35的实施例,这些工具允许帮助生成受保护软件或自动化软件保护。这种系统35包括通常具有计算机形式的程序开发单元或工程站,包括系统单元、屏幕、外围设备诸如键盘-鼠标以及除此之外,还包括下述程序:文件编辑器、汇编器、预处理器、编译器、解释器、调试器以及链接路编辑器。
图140示例说明允许直接创建受保护软件2p或为获得受保护软件2p修改有漏洞的软件2v的系统40的实施例。这种系统40包括通常具有计算机形式的程序开发单元或工作站,包括系统单元、屏幕、外围设备诸如键盘鼠标和除此之外,包括下述程序:文件编辑器、汇编器、预处理器、编译器、解释器、调试器以及链接路编辑器,以及允许帮助生成受保护软件或自动化保护软件的工具。
图150示例说明为获得至少一个单元6,允许将第二对象部分2pou加载到至少一个空白单元60,或为获得至少一个单元6,将第二对象部分2pou的一部分加载到至少一个预先定制的单元66上的定制单元45的实施例。这种定制单元45包括允许电子地定制的读写模块46、至少一个空白单元60或至少一个预先定制的单元66,以便获得至少一个单元6。在完成这一定制时,单元6包括执行受保护软件2p所需的信息。定制单元45还能包括用于至少一个单元的物理定制模块47,至少一个单元6能具有例如打印机的形式。在单元6由芯片卡7及其阅读器8构成的情况下,定制通常仅涉及芯片卡7。
通过下述改进能实现根据本发明的保护方法:
●将其计划成共同使用几个处理和存储单元,在这几个处理和存储单元之间,分成受保护软件29的第二对象部分2pou以便在缺少所述处理和存储单元的至少一个时,它们的共同使用允许执行受保护软件29,防止使用受保护软件2p。
●用相同的方式,在预先定制级S13后,以及在定制级S23期间,将预先定制的单元66变换成单元6所需的第二对象部分2pou的部分能包含在由定制单元45使用的处理和存储单元中以便限制存取第二对象部分2pou的所述部分。当然,能在几个处理和存储单元间划分第二对象部分2pou的所述部分以便仅在共同使用所述处理和存储单元期间,能存取第二对象部分2pou的所述部分。
Claims (37)
1.保护方法,使用包括至少一个存储模块(15)的至少一个空白单元(60),防止未授权使用有漏洞的软件(2v),所述有漏洞的软件(2v)在数据处理系统(3)上运行,所述保护方法包括:
→在保护阶段期间(P)
●创建受保护软件(2p):
-通过在有漏洞的软件(2vs)的源中选择:
以及包含至少一个选定变量的至少一个部分,
-通过从有漏洞的软件(2vs)的源产生受保护软件(2ps)的源,通过修改有漏洞的软件(2vs)的源的至少一个选定部分,这一修改为在执行受保护软件(2p)期间,至少一个选定变量或至少一个选定变量的拷贝驻留在空白单元(60)中,从而空白单元(60)变换成单元(6),
-以及通过由受保护软件(2ps)的源产生受保护软件(2p)的第一对象部分(2pos),所述第一对象部分(2pos)为在执行受保护软件(2p)期间,出现在数据处理系统(3)中执行的第一执行部分(2pes),以及第一执行部分(2pes)的至少一部分考虑到至少一变量或至少一变量的拷贝驻留在单元(6)中,
→以及在使用阶段(U)期间,在使用阶段期间执行受保护软件(2p):
●在存在单元(6)时,每次第一执行部分(2pes)的一部分利用它时,使用驻留在单元(6)中的变量或变量拷贝,以便正确地执行所述部分,因此,受保护软件(2p)完全起作用,
●以及在缺少单元(6)时,尽管第一执行部分(2pes)的一部分请求使用驻留在单元(6)中的变量或变量拷贝,仍然不能正确地履行所述请求,以致不正确地执行至少所述部分,因此,受保护软件(2p)不完全起作用。
2.如权利要求1所述的方法,包括:
→在保护阶段(P)期间:
●修改受保护软件(2p):
-通过在受保护软件(2ps)的源中选择:
至少一个算法处理,在执行受保护软件(2p)期间,其使用至少一个选定变量,并允许获得至少一个结果变量,
以及包含至少一个选定算法处理的至少一个部分,
-通过修改受保护软件(2ps)的源的至少一个选定部分,这一修改为:
在执行受保护软件(2p)期间,在数据处理系统(3)中执行第一执行部分(2pes),以及在还包括处理模块(16)的单元(6)中执行第二执行部分(2peu),
通过第二执行部分(2peu),至少执行至少一个选定算法处理的功能性,
及可能地,通过单元(6),设置至少一个结果变量供数据处理系统(3)使用,
-以及通过产生:
受保护软件(2p)的第一对象部分(2pos),所述第一对象部分(2pos)为在执行受保护软件(2p)期间,根据所选定的顺序,执行步骤命令,
以及受保护软件(2p)的第二对象部分(2pou),所述第二对象部分(2pou)为在加载到空白单元(60)后,以及在执行受保护软件(2p)期间,出现第二执行部分(2peu),通过该第二执行部分(2peu),执行由第一执行部分(2pes)触发的步骤,
●以及为获得单元(6),将第二对象部分(2pou)加载到空白单元(60)上,
→以及在使用阶段(U)期间:
●在存在单元(6)时,以及每次包含在第一执行部分(2pes)的一部分中的步骤命令利用它时,在单元(6)中执行相应的步骤,以便正确地执行所述部分,因此,受保护软件(2p)完全起作用,
●以及在缺少单元(6)时,尽管第一执行部分(2pes)的一部分请求触发一单元(6)中的步骤的执行,不能正确履行所述请求,以致不正确地执行至少所述部分,因此,受保护软件(2p)不完全起作用。
3.如权利要求1所述的方法,包括:
→在保护阶段(P)期间:
●定义:
-基本函数集,易于在还包括处理模块(16)的单元(6)中执行其基本函数,
-以及用于所述基本函数集的基本命令集,易于在数据处理系统(3)中执行所述基本命令并触发在单元(6)中执行基本函数,
●构造允许将空白单元(60)变换成能执行所述基本函数集的单元(6)的利用模块,通过在数据处理系统(3)中执行基本命令触发执行所述基本函数,
●修改受保护软件(2p):
-通过在受保护软件(2ps)的源中选择:
-通过修改受保护软件(2ps)的源的至少一个选定部分,这一修改为:
分开至少一个选定算法处理以便在执行受保护软件(2p)期间,通过第二执行部分(2peu),使用基本函数,执行所述算法处理,
对至少一个选定的算法处理,将基本命令集合成受保护软件(2ps)的源,以便在执行受保护软件(2p)期间,通过第一执行部分(2pes)执行每个基本命令,以及在单元(6)中触发通过第二执行部分(2peu)执行基本函数,
-以及通过产生:
以及包含利用模块的受保护软件(2p)的第二对象部分(2pou),所述第二对象部分(2pou)为在加载到空白单元(60)后,以及在执行受保护软件(2p)期间,出现第二执行部分(2peu),通过第二执行部分(2peu),执行由第一执行部分(2pes)触发的基本函数,
●以及为获得单元(6),将第二对象部分(2pou)加载到空白单元(60)上。
→以及在使用阶段(U)期间:
●在存在单元(6)时,以及每次包含在第一执行部分(2pes)的一部分中的基本命令利用它时,在单元(6)中执行相应的基本函数,以便正确地执行所述部分,因此,受保护软件(2p)完全起作用,
●以及在缺少单元(6)时,尽管第一执行部分(2pes)的一部分请求触发在单元(6)中执行基本函数,仍不能正确地履行所述请求,以致不正确地执行至少所述部分,因此,受保护软件(2p)不完全起作用。
4.如权利要求2所述的方法,包括:
→在保护阶段(P)期间:
●定义:
-基本函数集,易于在单元(6)中执行其基本函数,
-以及用于所述基本函数集的基本命令集,易于在数据处理系统(3)中执行所述基本函数,并触发在单元(6)中执行基本函数,
●构造允许单元(6)执行所述基本函数集的利用模块,通过在数据处理系统(3)中执行基本命令来触发执行所述基本函数,
●以及修改受保护软件(2p):
-通过在受保护软件(2ps)的源中选择在执行受保护软件(2p)期间,执行算法处理的功能性的至少一个步骤,
-通过修改受保护软件(2ps)的源的至少一个选定部分,这一修改为:
分开至少一个选定步骤以便在执行受保护软件(2p)期间,使用基本函数,通过第二执行步骤(2peu),执行所述步骤,
对至少一个选定步骤,将基本命令集合成受保护软件(2ps)的源,以便在执行受保护软件(2p)期间,通过第一执行部分(2pes),执行每个基本命令,并触发在单元(6)中通过第二执行部分(2peu)执行基本函数,
-以及通过产生:
以及还包含利用模块的受保护软件(2p)的第二对象部分(2pou),所述第二对象部分(2pou)为在加载到单元(6)后,以及在执行受保护软件(2p)期间,出现第二执行部分(2peu),通过该第二执行部分(2peu),执行由第一执行部分(2pes)触发的基本函数,
→以及在使用阶段(U)期间:
●在存在单元(6)时,以及每次包含在第一执行部分(2pes)的一部分中的基本命令利用它时,在单元(6)中执行相应的基本函数,以便正确地执行所述部分,因此,受保护软件(2p)完全起作用,
●以及在缺少单元(6)时,尽管第一执行部分(2pes)的一部分请求触发在单元(6)中执行基本函数,仍不能正确地履行所述请求,以致不正确地执行至少所述部分,因此,受保护软件(2p)不完全起作用。
5.如权利要求3或4所述的方法,包括:
→在保护阶段(P)期间:
●定义:
-至少一个软件执行特性,在单元(6)中至少部分易于被监视,
-至少一个软件执行特征遵守的至少一个准则,
-在单元(6)中实现的检测模块(17)并允许检测至少一个软件执行特性未遵守至少一个相关准则,
-以及在单元(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)的运行。
6.如权利要求5所述的方法,为限制受保护软件(2p)的使用,包括:
→在保护阶段(P)期间:
●定义:
-将软件的功能性的使用的度量的变量定义为易于监视的软件执行特性,
-将与每个度量的变量有关的至少一个阈值定义为遵守的准则,
-以及允许更新至少一个度量的变量的实行模块,
●构造允许单元(6)也实现实行模块的利用模块,
●以及修改受保护软件(2p):
-通过将软件的至少一个功能性的使用的度量的至少一个变量选择为监视的软件执行特性,
-通过选择:
使用度量的变量易于监视其使用的受保护软件(2p)的至少一个功能性,
与相应于所述功能性的使用的限制的一选定的度量的变量有关的至少一个阈值,
-通过修改受保护软件(2ps)的源的至少一个选定部分,这一修改为在执行受保护软件(2p)期间,根据所述功能性的使用,通过第二执行部分(2peu),实现度量的变量,以及考虑至少一个阈值越过,
→以及在使用阶段(U)期间,在存在单元(6)时,以及在检测到相应于至少一个使用限制的至少一个阈值越过的情况下,将其告知数据处理系统(3)和/或修改受保护软件(2p)的部分运行,以致修改受保护软件(2p)的运行。
7.如权利要求6所述的方法,包括:
→在保护阶段(P)期间:
●定义:
-用于至少一个度量的变量的几个相关阈值,
-以及相应于所述阈值的每一个的不同的强制模块,
●以及修改受保护软件(2p):
-通过在受保护软件(2ps)的源中选择必须与相应于功能性使用的不同限制的几个阈值有关的至少一个选定的度量的变量,
-通过选择与所选定的度量的变量有关的至少两个阈值,
-以及通过修改受保护软件(2ps)的源的至少一个选定部分,这一修改为在执行受保护软件(2p)期间,通过第二执行部分(2peu),不同地考虑不同阈值的越过,
→以及在使用阶段(U)期间:
●在存在单元(6)的情况下:
-在检测到第一阈值的越过的情况下,命令受保护软件(2p)不再使用相应的功能性,
-以及在检测到第二阈值的越过的情况下,使相应的功能性和/或受保护软件(2p)的至少一部分无效。
8.如权利要求6或7所述的方法,包括:
→在保护阶段(P):
●定义允许通过至少一个另外的使用,信任由一个度量的变量监视的至少一个软件功能性的补装模块,
●构造还允许单元(6)实现补装模块的利用模块,
●以及修改受保护软件(2p):
-通过在受保护软件(2ps)的源中选择允许限制功能性的使用并且必须能通过至少一个另外的使用而被信任的至少一个选定的度量的变量,
-以及通过修改至少一个选定部分,这一修改为在称为补充的阶段期间,能信任相应于所选定的度量的变量的至少一个功能性的至少一个另外的使用,
→以及在补装期间:
●重新实现至少一个选定的度量的变量和/或至少一个相关阈值,以便允许功能性的至少一个另外的使用。
9.如权利要求5所述的方法,包括:
→在保护阶段(P)期间:
●定义:
-将软件使用的简要表定义为易于监视的软件执行特性,
-以及将至少一个软件执行特征定义为遵守的准则,
●以及修改受保护软件(2p):
-通过将至少一个软件使用的简要表选择为监视的软件执行特性,
-通过选择至少一个选定的使用简要表必须遵守的至少一个执行特征,
-以及通过修改受保护软件(2ps)的源的至少一个选定部分,这一修改是在执行受保护软件(2p)期间,第二执行部分(2peu)遵守所有选定的执行特征,
→以及在使用阶段(U)期间,在存在单元(6)时,以及在检测到未遵守至少一个执行特征的情况下,将其告知数据处理系统(3)和/或修改受保护软件(2p)的部分的运行,以便修改受保护软件(2p)的运行。
10.如权利要求9所述的方法,包括:
→在保护阶段(P)期间:
●定义:
-在单元(6)中易于执行其指令的指令集,
-用于所述指令集的指令命令集,易于在数据处理系统(3)中执行所述指令命令并在单元(6)中触发执行指令,
-将指令链接定义为使用简要表,
-将用于执行指令的预期链接定义为执行特征,
-将允许检测指令链接不相应于预期的指令链接的模块定义为检测模块(17),
-以及将允许当指令链接不相应于预期的指令链接时,通知数据处理系统(3)和/或改变受保护软件(2p)的部分的功能的模块定义为强制模块(18),
●构造还允许单元(6)执行指令集的指令的利用模块,通过在数据处理系统(3)中执行指令命令来触发执行所述指令,
●以及修改受保护软件(2p):
-通过修改受保护软件(2ps)的源的至少一个选定部分:
→以及在使用阶段(U)期间,在存在单元(6)时,在检测到单元(6)中执行的指令链接不相应于预期的指令链接的情况下,将其告知数据处理系统(3)和/或修改受保护软件(2p)的部分的运行,以便修改受保护软件(2p)的运行。
11.如权利要求10所述的方法,包括:
→在保护阶段(P):
●定义:
-为返回结果,将其至少一些指令与寄存器一起工作并使用至少一个操作数的指令集定义为指令集,
-对与寄存器一起工作的至少一些指令:
以及用于指令的每个操作数:
*标志字段(CDk),
*以及操作数的预期标识字段(CIPk),
-对属于利用模块并由指令集使用的每个寄存器,自动将已经返回其结果的最后一个指令的标识存储在所述寄存器中的所生成的标识字段(CIGv),
-以及将允许在执行指令期间,对每个操作数,当标志字段(CDk)利用它时,检查相应于由所述操作数使用的寄存器的所生成的标识字段(CIGv)以及所述操作数的原始的预期标识字段(CIPk)的等式的模块定义为检测模块(17),
-以及如果所检查的等式的至少一个为假,将允许修改指令的结果的模块定义为强制模块(18)。
12.如权利要求3、4或10所述的方法,包括:
→在保护阶段(P)期间:
●定义:
-将基本命令或指令命令定义为触发命令,
-将基本函数或指令定义为相关函数,
-将至少部分相应于由数据处理系统(3)传送到单元(6)的信息的用于触发命令的至少一个变元定义为一次序,以便触发执行相应的相关函数,
-允许重命名这些次序以便获得具有重命名次序的触发命令的次序重命名方法,
-以及设计成在使用阶段(U)期间,在单元(6)中使用并允许自重命名次序恢复相关函数以便执行的恢复模块(20),
●构造允许单元(6)也实现恢复模块的利用模块,
●以及修改受保护软件(2p):
-通过在受保护软件(2ps)的源中选择触发命令,
-通过重命名所选定的触发命令的次序,修改受保护软件(2ps)的源的至少一个选定部分,以便取消相应的相关函数的特性,
-以及通过产生:
以及包含还实现恢复模块(20)的利用模块的受保护软件(2p)的第二对象部分(2pou),所述第二对象部分(2pou)为在加载到单元(6)后,以及在执行受保护软件(2p)期间,通过第二执行部分(2peu),恢复由第一执行部分(2pes)触发其执行的相关函数的身份,通过第二执行部分(2peu)执行相关函数,
→以及在使用阶段(U)期间:
●在存在单元(6)时,以及每次包含在第一执行部分(2pes)的一部分中的具有重命名次序的触发命令利用它时,在单元(6)中恢复相应的相关函数的特性并执行它,以便正确地执行所述部分,因此,受保护软件(2p)完全起作用,
●以及在缺少单元(6)时,尽管第一执行部分(2pes)的一部分请求触发在单元(6)中执行相关函数,仍不能正确地履行所述请求,以致不正确地执行至少所述部分,因此,受保护软件(2p)不完全起作用。
13.如权利要求12所述的方法,包括:
→在保护阶段(P)期间,
●为至少一个相关函数定义算法上等效,但由其重命名次序不同的触发命令触发的一族相关函数,
●以及修改受保护软件(2p):
-通过在受保护软件(2ps)的源中选择具有重命名次序的至少一个触发命令,
-以及通过至少用另一重命名次序替换具有重命名次序的一个选定触发命令的重命名次序,修改受保护软件(2ps)的源的至少一个选定部分,触发相同族的相关函数。
14.如权利要求13所述的方法,包括:
→在保护阶段(P)期间,为至少一个相关函数定义一族算法上等效的相关函数:
-通过将噪声字段连接到定义相关函数的功能部分的信息上以便在单元(6)中执行,
-或通过使用指令(CII)的标识字段以及操作数的预期标识字段(CIPk)。
15.如权利要求12、13或14所述的方法,包括:
→在保护阶段(P)期间:
●定义:
-将加密次序的加密方法定义为次序的重命名方法,
-以及将实现解密重命名次序,从而恢复相关函数的身份以便在单元(6)中执行的解密方法的模块定义为恢复模块(20)。
16.如权利要求12至15的一个所述的方法,包括:
→在保护阶段(P)期间:
●修改受保护软件(2p)
-通过在受保护软件(2ps)的源中选择在至少一个选定的算法处理中执行的至少一个条件分支,
-通过修改受保护软件(2ps)的源的至少一个选定部分,这一修改为在执行受保护软件(2p)期间,在单元(6)中通过第二执行部分(2peu),执行至少一个选定条件分支的功能性,
-以及通过产生:
以及受保护软件(2p)的第二对象部分(2pou),所述第二对象部分(2pou)为在加载到单元(6)后,以及在执行受保护软件(2p)期间,出现第二执行部分(2peu),通过第二执行部分(2peu),执行至少一个选定的条件分支的功能性,
→以及在使用阶段(U)期间:
●在存在单元(6)时,以及每次第一执行部分(2pes)的一部分利用它时,在单元(6)中执行至少一个条件分支的功能性,以便正确地执行所述部分,因此,受保护软件(2p)完全起作用,
●以及在缺少单元(6)时,尽管第一执行部分(2pes)的一部分请求在单元(6)中执行条件分支的功能性,仍不能正确地履行所述请求,以致不正确地执行至少所述部分,因此,受保护软件(2p)不完全起作用。
17.如权利要求16所述的方法,包括,在保护阶段(P)期间,修改受保护软件(2p):
-通过在受保护软件(2ps)的源中选择在至少一系列选定的条件分支,
-通过修改受保护软件(2ps)的源的至少一个选定部分,这一修改为在执行受保护软件(2p)期间,在单元(6)中通过第二执行部分(2peu),执行至少一个选定系列的条件分支的全部功能性,
-以及通过产生:
受保护软件(2p)的第一对象部分(2pos),所述第一对象部分(2pos)为在执行受保护软件(2p)期间,在单元(6)中执行至少一个选定系列的条件分支的功能性,
18.如权利要求1至17的一个所述的方法,包括将保护阶段(P)分成与保护的软件无关的在前保护子阶段(P1)与保护的软件有关的下一保护子阶段(P2)。
19.如权利要求18所述的方法,包括,在在前保护子阶段(P1)期间,插入在其期间执行所有定义的定义级(S11)。
20.如权利要求19所述的方法,包括,在定义级(S11)后,插入在其期间构造利用模块的构造级(S12)。
21.如权利要求20所述的方法,包括,在构造级(S12)后,插入预先定制级(S13),包括为获得预先定制单元(66),将至少一部分利用模块加载到空白单元(60)。
22.如权利要求19或20所述的方法,包括,在在前保护子阶段(P1)期间,插入在其期间生成允许帮助生成受保护软件或自动化软件保护的工具的工具生成级(S14)。
23.如权利要求18和21所述的方法,包括,将下一保护子阶段(P2)分成:
●在其期间自有漏洞的软件(2v)创建受保护软件(2p)的创建级(S21),
●或者,在其期间修改受保护软件(2p)的修改级(S22),
●以及可能地,定制级(S23),在其期间:
-为获得至少一个单元(6),将可能包含利用模块的受保护软件(2p)的第二对象部分(2pou)加载到至少一个空白单元(60),
-或者,为获得至少一个单元(6),将可能包含利用模块的受保护软件(2p)的第二对象部分(2pou)的一部分加载到至少一个预先定制的单元(66)。
24.如权利要求22和23所述的方法,包括,在创建级(S21)期间,以及可能在修改级(S22)期间,使用帮助生成受保护软件或自动化软件保护的至少一个工具。
25.用于实现根据权利要求20的方法的系统,其特征在于,包括程序开发单元,考虑到在定义级(S11)期间插入的定义,在构造级(S12)期间使用该程序开发单元以执行构造用于单元(6)的利用模块。
26.用于实现根据权利要求21的方法的系统,其特征在于,包括预先定制单元(30),为获得至少一个预先定制的单元(66),允许将利用模块的至少一部分加载到至少一个空白单元(60)上。
27.用于实现根据权利要求22的方法的系统,其特征在于,包括程序开发单元,用于在工具生成级(S14)期间执行帮助生成受保护软件或自动化软件保护的工具地生成。
28.用于实现根据权利要求23或24的方法的系统,其特征在于,包括用来创建或修改受保护软件(2p)的程序开发系统。
29.用于实现根据权利要求23的方法的系统,其特征在于,包括定制单元(45),允许:
●为获得至少一个单元(6),将第二对象部分(2pou)加载到至少一个空白单元(60)上,
●或者为获得至少一个单元(6),将第二对象部分(2pou)的一部分加载到至少一个预先定制的单元(66)上。
30.预先定制单元(66),其特征在于,其通过根据权利要求26的系统获得。
31.单元(6),允许执行受保护软件(2p)并防止其未授权使用,其特征在于,包含使用根据权利要求29的定制单元(45)加载的受保护软件(2p)的第二对象部分(2pou)。
32.一组单元(6),其特征在于,在几个处理和存储单元间划分使用根据权利要求29的定制单元(45)加载的受保护软件(2p)的第二对象部分(2pos)以便它们的共同使用允许执行受保护软件(2p)。
33.受保护软件(2p)的分布集(2pd),其特征在于,包括:
●包含第一对象部分(2pos)并设计成在数据处理系统(3)中工作的第一分布部分(2pds),
●以及具有下述形式的第二分布部分(2pdu):
-空白单元(60),
-根据权利要求30的预先定制单元(66),能在加载定制信息后变换成单元(6),
-根据权利要求31的单元(6)。
34.如权利要求33的受保护软件(2p)的分布集(2pd),其特征在于,第一分布部分(2pds)具有物理分布介质的形式,例如CDROM,或具有通过网络分布的文件的形式。
35.如权利要求33的受保护软件(2p)的分布集(2pd),其特征在于,具有预先定制单元(66)或单元(6)的空白单元(60)的形式的第二分布部分(2pdu)包括至少一个芯片卡(7)。
36.处理和存储单元,其特征在于,包含将根据权利要求30的预先定制单元(66)变换成权利要求31的单元(6)所需的第二对象部分(2pou)的部分。
37.一组处理和存储单元,其特征在于,共同使用的处理和存储单元包含将权利要求30的预先定制单元(66)变换成权利要求31的单元(6)所需的第二对象部分(2pou)的部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0110250A FR2828305B1 (fr) | 2001-07-31 | 2001-07-31 | Procede pour proteger un logiciel a l'aide d'un principe dit de "variable" contre son utilisation non autorisee |
FR01/10250 | 2001-07-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1535410A true CN1535410A (zh) | 2004-10-06 |
CN1288525C CN1288525C (zh) | 2006-12-06 |
Family
ID=8866125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028146840A Expired - Fee Related CN1288525C (zh) | 2001-07-31 | 2002-07-04 | 通过“变量”原理保护软件防止未授权使用的方法 |
Country Status (29)
Country | Link |
---|---|
EP (1) | EP1412861A2 (zh) |
JP (1) | JP3949107B2 (zh) |
KR (1) | KR100940347B1 (zh) |
CN (1) | CN1288525C (zh) |
AP (1) | AP2004002958A0 (zh) |
AU (1) | AU2002325998B2 (zh) |
BR (1) | BR0211374A (zh) |
CA (1) | CA2454090A1 (zh) |
CO (1) | CO5550508A2 (zh) |
CR (1) | CR7231A (zh) |
EA (1) | EA005465B1 (zh) |
EC (1) | ECSP044951A (zh) |
FR (1) | FR2828305B1 (zh) |
GE (1) | GEP20053647B (zh) |
HK (1) | HK1070155A1 (zh) |
HR (1) | HRP20040049A2 (zh) |
HU (1) | HUP0400228A2 (zh) |
IL (1) | IL159953A0 (zh) |
IS (1) | IS7121A (zh) |
MA (1) | MA26126A1 (zh) |
MX (1) | MXPA04000488A (zh) |
NO (1) | NO20040232L (zh) |
OA (1) | OA12699A (zh) |
PL (1) | PL367366A1 (zh) |
TN (1) | TNSN04012A1 (zh) |
UA (1) | UA77186C2 (zh) |
WO (1) | WO2003012649A2 (zh) |
YU (1) | YU5404A (zh) |
ZA (1) | ZA200400348B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2852415B1 (fr) * | 2003-03-11 | 2005-06-24 | Actikey | Support de type cle, de controle de l'acces a des donnees et/ou a un logiciel et procede correspondant |
CN107194212B (zh) * | 2017-06-21 | 2020-04-17 | 株洲中车时代电气股份有限公司 | 一种显示器源代码中协议内容的保护方法 |
Family Cites Families (4)
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 |
US5754646A (en) * | 1995-07-19 | 1998-05-19 | Cable Television Laboratories, Inc. | Method for protecting publicly distributed software |
WO1999001815A1 (en) * | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Obfuscation techniques for enhancing software security |
DE69819790D1 (de) * | 1998-06-12 | 2003-12-18 | Gemplus Gemenos | Verfahren zur kontrolle der ausführung eines programmproduktes |
-
2001
- 2001-07-31 FR FR0110250A patent/FR2828305B1/fr not_active Expired - Lifetime
-
2002
- 2002-04-07 UA UA2004010469A patent/UA77186C2/uk unknown
- 2002-07-04 OA OA1200400013A patent/OA12699A/en unknown
- 2002-07-04 AU AU2002325998A patent/AU2002325998B2/en not_active Ceased
- 2002-07-04 CN CNB028146840A patent/CN1288525C/zh not_active Expired - Fee Related
- 2002-07-04 HU HU0400228A patent/HUP0400228A2/hu unknown
- 2002-07-04 AP APAP/P/2004/002958A patent/AP2004002958A0/en unknown
- 2002-07-04 BR BR0211374-0A patent/BR0211374A/pt not_active IP Right Cessation
- 2002-07-04 MX MXPA04000488A patent/MXPA04000488A/es unknown
- 2002-07-04 GE GE5431A patent/GEP20053647B/en unknown
- 2002-07-04 EA EA200400057A patent/EA005465B1/ru not_active IP Right Cessation
- 2002-07-04 IL IL15995302A patent/IL159953A0/xx unknown
- 2002-07-04 CA CA002454090A patent/CA2454090A1/fr not_active Abandoned
- 2002-07-04 WO PCT/FR2002/002338 patent/WO2003012649A2/fr active Application Filing
- 2002-07-04 YU YU5404A patent/YU5404A/sh unknown
- 2002-07-04 KR KR1020047000804A patent/KR100940347B1/ko not_active IP Right Cessation
- 2002-07-04 JP JP2003517758A patent/JP3949107B2/ja not_active Expired - Fee Related
- 2002-07-04 EP EP02760378A patent/EP1412861A2/fr not_active Withdrawn
- 2002-07-04 PL PL02367366A patent/PL367366A1/xx not_active Application Discontinuation
-
2004
- 2004-01-16 ZA ZA2004/00348A patent/ZA200400348B/en unknown
- 2004-01-19 HR HR20040049A patent/HRP20040049A2/hr not_active Application Discontinuation
- 2004-01-19 NO NO20040232A patent/NO20040232L/no not_active Application Discontinuation
- 2004-01-19 CR CR7231A patent/CR7231A/es unknown
- 2004-01-19 MA MA27492A patent/MA26126A1/fr unknown
- 2004-01-19 TN TNP2004000012A patent/TNSN04012A1/fr unknown
- 2004-01-20 EC EC2004004951A patent/ECSP044951A/es unknown
- 2004-01-20 IS IS7121A patent/IS7121A/is unknown
- 2004-01-20 CO CO04003765A patent/CO5550508A2/es not_active Application Discontinuation
-
2005
- 2005-03-30 HK HK05102678A patent/HK1070155A1/xx unknown
Also Published As
Publication number | Publication date |
---|---|
OA12699A (en) | 2006-06-23 |
CR7231A (es) | 2005-07-21 |
ZA200400348B (en) | 2005-03-30 |
YU5404A (sh) | 2006-08-17 |
IS7121A (is) | 2004-01-20 |
MA26126A1 (fr) | 2004-04-01 |
NO20040232L (no) | 2004-03-30 |
MXPA04000488A (es) | 2005-03-07 |
TNSN04012A1 (fr) | 2006-06-01 |
UA77186C2 (en) | 2006-11-15 |
FR2828305A1 (fr) | 2003-02-07 |
FR2828305B1 (fr) | 2010-09-03 |
BR0211374A (pt) | 2004-07-20 |
CN1288525C (zh) | 2006-12-06 |
AP2004002958A0 (en) | 2004-03-31 |
EA200400057A1 (ru) | 2004-06-24 |
WO2003012649A2 (fr) | 2003-02-13 |
AU2002325998B2 (en) | 2008-10-30 |
JP2004537806A (ja) | 2004-12-16 |
PL367366A1 (en) | 2005-02-21 |
EP1412861A2 (fr) | 2004-04-28 |
HK1070155A1 (en) | 2005-06-10 |
WO2003012649A3 (fr) | 2003-12-24 |
HRP20040049A2 (en) | 2004-06-30 |
JP3949107B2 (ja) | 2007-07-25 |
IL159953A0 (en) | 2004-06-20 |
EA005465B1 (ru) | 2005-02-24 |
GEP20053647B (en) | 2005-10-25 |
CO5550508A2 (es) | 2005-08-31 |
KR20040027881A (ko) | 2004-04-01 |
ECSP044951A (es) | 2004-04-28 |
CA2454090A1 (fr) | 2003-02-13 |
KR100940347B1 (ko) | 2010-02-04 |
HUP0400228A2 (en) | 2004-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1302408C (zh) | 认证系统、认证装置、终端装置以及认证方法 | |
CN1236581C (zh) | 用于加密数据传送的数据处理方法、装置和系统 | |
CN1157020C (zh) | 提高了安全性的密码处理装置 | |
CN1482568A (zh) | 用于防止记录介质非授权使用的系统 | |
CN1754173A (zh) | 软件管理系统、记录介质和信息处理装置 | |
CN1875345A (zh) | 在编译过程中表示和检查程序组件的一致性的可扩展类型系统 | |
CN1476580A (zh) | 内容使用权管理系统和管理方法 | |
CN1577324A (zh) | 文档管理方法和程序、记录介质和文档管理装置 | |
CN1673965A (zh) | 实时可调度性确定方法和实时系统 | |
CN1950798A (zh) | 可移动介质上的软件安装 | |
CN1647139A (zh) | 数据变换装置和数据变换方法 | |
CN1282071C (zh) | 数据处理装置、数据处理方法和程序 | |
CN101047495A (zh) | 用于传送数据的方法和系统 | |
CN1608361A (zh) | 数字作品保护系统、密钥管理设备和用户设备 | |
CN1273902C (zh) | 调试系统,微处理器,以及调试器 | |
CN1834889A (zh) | 软件认证系统和软件认证程序及软件认证方法 | |
CN1313917C (zh) | 数据处理装置以及数据处理方法 | |
CN101030138A (zh) | 应用构架 | |
CN1692321A (zh) | 口令恢复系统 | |
CN1822016A (zh) | 基于对称密钥加密保存和检索数据 | |
CN1707502A (zh) | 图像处理装置及其控制方法 | |
CN1918844A (zh) | 基于保密共享方案的保密信息管理方案 | |
CN1469229A (zh) | 辅助输入装置 | |
CN1288524C (zh) | 使用“重命名”原理保护软件防止未授权使用的方法 | |
CN1288525C (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: 1070155 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: 20061206 Termination date: 20130704 |