软件保护制造技术

技术编号:7131696 阅读:163 留言:0更新日期:2012-04-11 18:40
通过以下方式保护可以由可编程电路执行的程序(MC)。基于程序的至少一部分(MC-P)来提供指令块(IB)。产生与指令块(IB)具有预定关系的保护性代码(DS)。分析(ANL)指令块(IB),以标识指令块内的空闲范围(FI),该空闲范围关于指令块的执行是中立的。值范围包括以下至少一种类型:比特范围和值范围。使用已被标识的空闲范围来将保护性代码(DS)嵌入到指令块(IB)中。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术的一方面涉及保护可以由可编程电路执行的程序的方法。例如,可以应用该方法来防止对软件的未授权使用或未授权修改,或者防止对软件的未授权使用以及未授权修改。本专利技术的其他方面涉及用于保护程序的处理器、包括受保护的程序的数据流、处理受保护的程序的方法、用于处理受保护的程序的处理器以及计算机程序产品。
技术介绍
典型地,以描述性的高级编程语言来开发软件程序。这种开发(写软件)提供了源代码版本的软件程序。编译器对该源代码版本进行编译,以使得可以获得机器代码版本的软件程序。典型地,机器代码版本是可以由可编程电路执行的指令序列。典型地,机器代码指令是符合具体语法的比特串的形式,例如,32个比特。一般地,对机器代码版本而不是源代码版本的软件程序进行商业化并相应地公开,将源代码版本保持机密。例如,可以将机器代码与载入了该机器代码的处理器一起商业化。还可以通过例如存储了该机器代码的存储介质的形式来对机器代码单独进行商业化, 或者可以通过可从其下载机器代码的服务器的形式来对机器代码单独进行商业化。然而,机器代码容易受到所谓的入侵(hack)。例如,为了进行未授权的克隆或者未授权的软件升级,进行欺诈的人可以禁止或者绕开在机器代码中包括的安全功能。入侵典型地涉及修改机器代码,以使得可以使执行机器代码的处理器执行不想要的动作。这些动作可以包括泄露与机器代码及机器代码中包括的任何安全功能有关的信息,修改或者绕开安全功能,以及以其他方式修改处理器行为等。通常将这种对机器代码的故意修改称为“攻击”,攻击可以具有物理或者逻辑的特性。物理攻击的示例是将执行机器代码的处理器暴露在强光或者其他类型的辐射下。逻辑攻击的示例是通过处理器内的可寻址缓冲存储器来插入代码。其他逻辑攻击可以涉及使缓冲器溢出或者使用软件缺陷,或者两者都使用。以编号WO 2005/052795公布的国际专利申请描述了保护或检验可以在数据处理单元中执行的程序的方法。针对程序中的每个命令产生错误代码或校验码。将校验码加入到每个命令。在数据处理单元中,在执行命令之前,立即执行对校验码的检验。一旦已经确认了命令的真实性,就在数据处理单元中执行该命令。
技术实现思路
存在着对以相对适中的成本可以获得的改进的软件保护的需要。依照本专利技术的一方面,通过以下方式对可编程电路可以执行的程序进行保护。基于程序的至少一部分来提供指令块。产生与指令块具有预定关系的保护性代码。分析指令块,以使得能够标识指令块内的空闲范围,该空闲范围关于指令块的执行是中立的。值范围包括以下至少一种类型比特范围和值范围。使用已被标识的空闲范围来将保护性代码嵌入到指令块中。例如,指令可以包括比特串,该比特串对于所述指令块的执行是中立的(neutral) 0亦即,有关比特串对执行指令时发生什么没有任何影响。因此,可以将这种比特串指定为空闲范围。比特串可以构建指令字段。单一比特也可以构建空闲范围。作为另一示例,指令可以包括可容纳值范围的字段。对于指令的执行,该值范围的一部分可以是中立的。亦即,有关值没有特定意义。可以将这种值的集合指定为空闲范围。根据本专利技术,使用空闲范围来将保护性代码嵌入指令块中,而不是将保护性代码附加到指令块。这使得在数据量上没有实质增加的情况下,或者甚至没有任何增加的情况下,能够保护程序。其消除了对可编程电路中的附加存储器容量的需要,该可编程电路被布置为执行已根据本专利技术进行保护的机器代码。具有充足容量用于存储给定的常规未保护机器代码程序的给定的程序存储器典型地也具有充足容量来用于存储该程序的受保护版本, 该程序的受保护版本是根据本专利技术获得的。此外,通常不复杂的相对少的修改足以对常规的可编程电路进行适配,允许该电路处理已根据本专利技术进行保护的机器代码。从而,可以通过相对适中的成本获得软件保护。本专利技术的实现有利地包括以下的一个或多个附加特征,在与单独的从属权利要求相对应的单独的段落中对这些附加特征进行描述。优选地,将熵编码应用于要保护的程序中包括的指令,以使得可以在指令块内创建空闲范围,在该指令块中嵌入了保护性代码。相应地,指令块包括要保护的程序中出现的指令的熵编码的版本。创建空闲范围的熵编码可以提供充足的空间以用于在不增加任何数据量或者仅相对适中地增加数据量的情况下嵌入保护性代码。这有助于成本效率。此外,可以对指令重新格式化,以创建空闲范围。可以将值指示包括在程序的一部分中可用的空闲范围中,指令块由该程序的该部分组成。值指示对该部分中的指令的相应的给定比特具有相应的给定值进行指示。然后,在分析步骤中,将这些相应的给定比特标识为空闲范围。相应地,可以说,为了获得较大的空闲范围,可以放弃所布置的相对小的空闲。值指示可以对指令包括每个比特都具有给定值的比特组进行指示。然后,将该比特组标识为空闲范围。可以将至少一个伪指令(dummy instruction)包括在指令块中。可以说,这使得可以确保指令块中有充足的空间用于嵌入保护性代码。然而,一般优选地对指令重新格式化,以获得充足的空间。可以如下方式产生保护性代码从包括指令块的数据集合产生散列码。从散列码和密钥产生数字签名。所产生的保护性代码可以检验完整性和真实性。从其产生散列码的数据集合优选地包括表示地址的数据单元,应该从该地址执行指令块中的给定指令。这防止入侵者(hacker)移动有效指令,增强了保护。指令块可以在大小上与高速缓存存储器的存取单位相对应,该高速缓存存储器与能够执行程序的可编程电路相关联。指令块可以包括要连续执行的指令序列。这意味着指令块基于程序中的一部分, 程序中的该部分免于在该有关部分结束之前出现的任何跳转(jump)。参考附图的详细描述示出了之前所总结的本专利技术以及附加特征。附图说明图1是示出保护代码产生器的方框图。图2A、2B和2C是示出不同类型的机器代码指令的比特图,可以在保护代码产生器中对机器代码指令进行保护。图3是示出为了形成将被保护的指令块而在保护代码产生器中执行的一系列步骤的流程图。图4是示出布置为执行保护代码产生器已经产生的机器代码的数据处理系统的方框图。图5是示出形成数据处理系统的一部分的安全模块的方框图。图6是示出数据处理系统的备选处理器的方框图。具体实施例方式图1示出了保护代码产生器PCG。保护代码产生器PCG包括编译器CPL、代码保护器CPR和各种数据存储空间DST1、DST2、DST3。编译器CPL和代码保护器CPR可以通过例如适当编程的处理器的方式来各自实现。数据存储空间DST1、DST2、DST3可以形成单个物理存储介质(例如,如硬盘或者固态存储器电路)的一部分。作为另一示例,可以将每一个数据存储空间包括在单独的物理存储介质中。代码保护器CPR包括各种功能模块指令块编辑器IBC、分析器ANL、散列码产生器 HCG、数字签名产生器DSG和签名嵌入模块SEB。可以通过例如已经载入到可编程处理器中的指令集的方式来实现这些功能模块中的每一个。在这种基于软件的实现中,指令集定义了相关功能模块所执行的操作,稍后将对其进行描述。在这方面,可以将图1视为表示一种方法,从而编译器CPL表示编译步骤,指令块编辑器IBC表示指令块编辑步骤,分析器ANL 表示分析步骤,散列码产生器HCG表示散列码产生步骤,数字签名产生器DSG表示数本文档来自技高网
...

【技术保护点】
1.一种保护能够通过可编程电路(DPS)执行的程序(MC)的方法,所述方法包括:-指令块编辑步骤(IBC),在该步骤中,基于所述程序的至少一部分(MC-P)来提供指令块(IB);-保护性代码产生步骤(HCG、DSG),在该步骤中,产生与所述指令块具有预定关系的保护性代码(DS);-分析步骤(ANL),在该步骤中,对所述指令块进行分析,以标识所述指令块内的空闲范围(FI),所述空闲范围关于所述指令块的执行是中立的,所述空闲范围包括以下类型中至少一项:比特范围和值范围;以及-嵌入步骤(SEB),在该步骤中,使用已被标识的空闲范围来将所述保护性代码嵌入到所述指令块中。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:胡格斯·德普提斯
申请(专利权)人:NXP股份有限公司
类型:发明
国别省市:NL

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1