[发明专利]用于指令级软件加密的方法和设备有效
| 申请号: | 200910252802.0 | 申请日: | 2009-12-01 |
| 公开(公告)号: | CN101751243A | 公开(公告)日: | 2010-06-23 |
| 发明(设计)人: | 斯蒂芬·昂奴;穆罕默德·卡若米;安东尼·蒙西弗罗特 | 申请(专利权)人: | 汤姆森许可贸易公司 |
| 主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F9/38;G06F21/22 |
| 代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 王波波 |
| 地址: | 法国布洛涅*** | 国省代码: | 法国;FR |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 用于 指令 软件加密 方法 设备 | ||
技术领域
本发明一般地涉及软件,更具体地,涉及软件的加密及其解密以 及在处理器中的执行。
背景技术
本节意在向读者介绍可能与以下描述和/或要求保护的本发明的 各方面相关的领域的各个方面。相信这种讨论有助于向读者提供背景 信息,以便于更好地理解本发明的各个方面。相应地,应注意,应根 据这一点来阅读这些陈述,而不应将其接纳为现有技术。
长期以来,在本领域中,例如在US5386469以及US6345359中, 已知通过加密来保护软件代码并且仅当要执行指令时才逐条指令地对 指令进行解密。这些系统的缺陷是黑客可以相对容易地修改指令以查 看会发生什么。
为了克服该缺陷,US 2005/108507提出对代码的基本块进行加扰 并且通过生成签名来确保完整性。该解决方案的缺陷在于,在不关心 完整性的被破解的系统上,依然有可能在尝试破解该系统时替换指令。
因此可以理解,需要一种克服现有技术的这些缺点中的至少一些 缺点的软件加密解决方案。本发明提供了这种方案。
发明内容
在第一方面,本发明的目的是提供一种对编译的计算机代码指令 的集合进行加密以获得编译的计算机代码指令的加密集合的方法,所 述加密集合预期在执行期间逐条指令地进行解密。所述编译的计算机 代码指令的集合包括多个分支指令以及标记指令,其中,所述编译的 计算机代码指令的集合的执行可以从多个分支指令中的每一个直接继 续至标记指令。使用链式加密函数对标记指令进行加密,使得加密的 标记指令至少依赖于标记指令的值和所述多个分支指令中所选的一个 分支指令的值;以及将所述多个分支指令中除了所选的一个分支指令 之外的至少一个分支指令中的每一个与补偿器值相关联,所述补偿器 值要用于调整对加密的标记指令的解密,使得不管紧接在标记指令之 前执行所述多个分支指令中的哪一个,在执行期间都产生相同的结果。
在第一优选实施例中,对标记指令的加密还依赖于与标记指令相 关联的伪随机数。
在第二优选实施例中,所述伪随机数是作为代码密钥和所述伪随 机数的生成所针对的指令的偏移的函数来生成的。
在第三优选实施例中,所述标记指令的值和所述多个分支指令中 所选的一个分支指令的值分别是相应的操作码(opcode)部分的值。
在第四优选实施例中,加密是通过对所述标记指令的值与所述多 个分支指令中所选的一个分支指令的值进行异或(XOR)来执行的。
在第二方面,本发明的目的是提供一种对使用链式加密函数加密 的编译的计算机代码指令的集合进行解密的方法。在所述编译的计算 机代码指令的执行期间,获得针对所执行的函数的补偿器值和后续加 密的函数,在所述编译的计算机代码指令的执行期间,所述后续加密 的函数跟随在所执行的函数之后;获得针对所述后续加密的函数的伪 随机数;以及使用与所述链式加密函数相对应的解密函数来对后续加 密的指令进行解密,所述解密函数至少根据所述后续加密的指令、所 执行的函数、所述伪随机数和所述补偿器值来生成后续函数。
在第一优选实施例中,所述伪随机数是作为代码密钥和所述后续 加密的函数的偏移的函数来生成的。
在第二优选实施例中,加密的函数包括加密的操作码和未加密的 参数(如果存在),并且只有所执行的函数和所述后续加密的函数的操 作码部分用于解密。
在第三优选实施例中,解密是通过对所述后续加密的指令的值、 所执行的函数、所述伪随机数和所述补偿器值进行异或来执行的。
在第三方面,本发明的目的是提供一种用于对编译的计算机代码 指令的集合进行加密以获得编译的计算机代码指令的加密集合的设 备,所述加密集合预期在执行期间逐条指令地进行解密。编译的计算 机代码指令的集合包括多个分支指令以及标记指令,其中编译的计算 机代码指令的集合的执行可以从多个分支指令中的每一个直接继续至 标记指令。所述设备包括适于执行以下步骤的处理器:使用链式加密 函数对标记指令进行加密,使得加密的标记指令至少依赖于标记指令 的值和所述多个分支指令中所选的一个分支指令的值;以及将所述多 个分支指令中除了所选的一个分支指令之外的至少一个分支指令中的 每一个与补偿器值相关联,所述补偿器值要用于调整对加密的标记指 令的解密,使得不管紧接在标记指令之前执行所述多个分支指令中的 哪一个,在执行期间都产生相同的结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汤姆森许可贸易公司,未经汤姆森许可贸易公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910252802.0/2.html,转载请声明来源钻瓜专利网。





