[发明专利]软件保护有效
申请号: | 201080010097.4 | 申请日: | 2010-03-01 |
公开(公告)号: | CN102341806A | 公开(公告)日: | 2012-02-01 |
发明(设计)人: | 胡格斯·德普提斯 | 申请(专利权)人: | NXP股份有限公司 |
主分类号: | G06F21/00 | 分类号: | G06F21/00;G06F21/24;G06F9/318 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 王波波 |
地址: | 荷兰艾*** | 国省代码: | 荷兰;NL |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 软件 保护 | ||
技术领域
本发明的一方面涉及保护可以由可编程电路执行的程序的方法。例如,可以应用该方法来防止对软件的未授权使用或未授权修改,或者防止对软件的未授权使用以及未授权修改。本发明的其他方面涉及用于保护程序的处理器、包括受保护的程序的数据流、处理受保护的程序的方法、用于处理受保护的程序的处理器以及计算机程序产品。
背景技术
典型地,以描述性的高级编程语言来开发软件程序。这种开发(写软件)提供了源代码版本的软件程序。编译器对该源代码版本进行编译,以使得可以获得机器代码版本的软件程序。典型地,机器代码版本是可以由可编程电路执行的指令序列。典型地,机器代码指令是符合具体语法的比特串的形式,例如,32个比特。
一般地,对机器代码版本而不是源代码版本的软件程序进行商业化并相应地公开,将源代码版本保持机密。例如,可以将机器代码与载入了该机器代码的处理器一起商业化。还可以通过例如存储了该机器代码的存储介质的形式来对机器代码单独进行商业化,或者可以通过可从其下载机器代码的服务器的形式来对机器代码单独进行商业化。
然而,机器代码容易受到所谓的入侵(hack)。例如,为了进行未授权的克隆或者未授权的软件升级,进行欺诈的人可以禁止或者绕开在机器代码中包括的安全功能。入侵典型地涉及修改机器代码,以使得可以使执行机器代码的处理器执行不想要的动作。这些动作可以包括泄露与机器代码及机器代码中包括的任何安全功能有关的信息,修改或者绕开安全功能,以及以其他方式修改处理器行为等。通常将这种对机器代码的故意修改称为“攻击”,攻击可以具有物理或者逻辑的特性。物理攻击的示例是将执行机器代码的处理器暴露在强光或者其他类型的辐射下。逻辑攻击的示例是通过处理器内的可寻址缓冲存储器来插入代码。其他逻辑攻击可以涉及使缓冲器溢出或者使用软件缺陷,或者两者都使用。
以编号WO 2005/052795公布的国际专利申请描述了保护或检验可以在数据处理单元中执行的程序的方法。针对程序中的每个命令产生错误代码或校验码。将校验码加入到每个命令。在数据处理单元中,在执行命令之前,立即执行对校验码的检验。一旦已经确认了命令的真实性,就在数据处理单元中执行该命令。
发明内容
存在着对以相对适中的成本可以获得的改进的软件保护的需要。
依照本发明的一方面,通过以下方式对可编程电路可以执行的程序进行保护。基于程序的至少一部分来提供指令块。产生与指令块具有预定关系的保护性代码。分析指令块,以使得能够标识指令块内的空闲范围,该空闲范围关于指令块的执行是中立的。值范围包括以下至少一种类型:比特范围和值范围。使用已被标识的空闲范围来将保护性代码嵌入到指令块中。
例如,指令可以包括比特串,该比特串对于所述指令块的执行是中立的(neutral)。亦即,有关比特串对执行指令时发生什么没有任何影响。因此,可以将这种比特串指定为空闲范围。比特串可以构建指令字段。单一比特也可以构建空闲范围。作为另一示例,指令可以包括可容纳值范围的字段。对于指令的执行,该值范围的一部分可以是中立的。亦即,有关值没有特定意义。可以将这种值的集合指定为空闲范围。
根据本发明,使用空闲范围来将保护性代码嵌入指令块中,而不是将保护性代码附加到指令块。这使得在数据量上没有实质增加的情况下,或者甚至没有任何增加的情况下,能够保护程序。其消除了对可编程电路中的附加存储器容量的需要,该可编程电路被布置为执行已根据本发明进行保护的机器代码。具有充足容量用于存储给定的常规未保护机器代码程序的给定的程序存储器典型地也具有充足容量来用于存储该程序的受保护版本,该程序的受保护版本是根据本发明获得的。此外,通常不复杂的相对少的修改足以对常规的可编程电路进行适配,允许该电路处理已根据本发明进行保护的机器代码。从而,可以通过相对适中的成本获得软件保护。
本发明的实现有利地包括以下的一个或多个附加特征,在与单独的从属权利要求相对应的单独的段落中对这些附加特征进行描述。
优选地,将熵编码应用于要保护的程序中包括的指令,以使得可以在指令块内创建空闲范围,在该指令块中嵌入了保护性代码。相应地,指令块包括要保护的程序中出现的指令的熵编码的版本。创建空闲范围的熵编码可以提供充足的空间以用于在不增加任何数据量或者仅相对适中地增加数据量的情况下嵌入保护性代码。这有助于成本效率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于NXP股份有限公司,未经NXP股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201080010097.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:锂离子电池用正极活性物质
- 下一篇:石油天然气钻井用脉冲射流井下流量自增装置