CN102341806A - 软件保护 - Google Patents

软件保护 Download PDF

Info

Publication number
CN102341806A
CN102341806A CN2010800100974A CN201080010097A CN102341806A CN 102341806 A CN102341806 A CN 102341806A CN 2010800100974 A CN2010800100974 A CN 2010800100974A CN 201080010097 A CN201080010097 A CN 201080010097A CN 102341806 A CN102341806 A CN 102341806A
Authority
CN
China
Prior art keywords
instruction block
instruction
code
program
free range
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
Application number
CN2010800100974A
Other languages
English (en)
Other versions
CN102341806B (zh
Inventor
胡格斯·德普提斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN102341806A publication Critical patent/CN102341806A/zh
Application granted granted Critical
Publication of CN102341806B publication Critical patent/CN102341806B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

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

Description

软件保护
技术领域
本发明的一方面涉及保护可以由可编程电路执行的程序的方法。例如,可以应用该方法来防止对软件的未授权使用或未授权修改,或者防止对软件的未授权使用以及未授权修改。本发明的其他方面涉及用于保护程序的处理器、包括受保护的程序的数据流、处理受保护的程序的方法、用于处理受保护的程序的处理器以及计算机程序产品。
背景技术
典型地,以描述性的高级编程语言来开发软件程序。这种开发(写软件)提供了源代码版本的软件程序。编译器对该源代码版本进行编译,以使得可以获得机器代码版本的软件程序。典型地,机器代码版本是可以由可编程电路执行的指令序列。典型地,机器代码指令是符合具体语法的比特串的形式,例如,32个比特。
一般地,对机器代码版本而不是源代码版本的软件程序进行商业化并相应地公开,将源代码版本保持机密。例如,可以将机器代码与载入了该机器代码的处理器一起商业化。还可以通过例如存储了该机器代码的存储介质的形式来对机器代码单独进行商业化,或者可以通过可从其下载机器代码的服务器的形式来对机器代码单独进行商业化。
然而,机器代码容易受到所谓的入侵(hack)。例如,为了进行未授权的克隆或者未授权的软件升级,进行欺诈的人可以禁止或者绕开在机器代码中包括的安全功能。入侵典型地涉及修改机器代码,以使得可以使执行机器代码的处理器执行不想要的动作。这些动作可以包括泄露与机器代码及机器代码中包括的任何安全功能有关的信息,修改或者绕开安全功能,以及以其他方式修改处理器行为等。通常将这种对机器代码的故意修改称为“攻击”,攻击可以具有物理或者逻辑的特性。物理攻击的示例是将执行机器代码的处理器暴露在强光或者其他类型的辐射下。逻辑攻击的示例是通过处理器内的可寻址缓冲存储器来插入代码。其他逻辑攻击可以涉及使缓冲器溢出或者使用软件缺陷,或者两者都使用。
以编号WO 2005/052795公布的国际专利申请描述了保护或检验可以在数据处理单元中执行的程序的方法。针对程序中的每个命令产生错误代码或校验码。将校验码加入到每个命令。在数据处理单元中,在执行命令之前,立即执行对校验码的检验。一旦已经确认了命令的真实性,就在数据处理单元中执行该命令。
发明内容
存在着对以相对适中的成本可以获得的改进的软件保护的需要。
依照本发明的一方面,通过以下方式对可编程电路可以执行的程序进行保护。基于程序的至少一部分来提供指令块。产生与指令块具有预定关系的保护性代码。分析指令块,以使得能够标识指令块内的空闲范围,该空闲范围关于指令块的执行是中立的。值范围包括以下至少一种类型:比特范围和值范围。使用已被标识的空闲范围来将保护性代码嵌入到指令块中。
例如,指令可以包括比特串,该比特串对于所述指令块的执行是中立的(neutral)。亦即,有关比特串对执行指令时发生什么没有任何影响。因此,可以将这种比特串指定为空闲范围。比特串可以构建指令字段。单一比特也可以构建空闲范围。作为另一示例,指令可以包括可容纳值范围的字段。对于指令的执行,该值范围的一部分可以是中立的。亦即,有关值没有特定意义。可以将这种值的集合指定为空闲范围。
根据本发明,使用空闲范围来将保护性代码嵌入指令块中,而不是将保护性代码附加到指令块。这使得在数据量上没有实质增加的情况下,或者甚至没有任何增加的情况下,能够保护程序。其消除了对可编程电路中的附加存储器容量的需要,该可编程电路被布置为执行已根据本发明进行保护的机器代码。具有充足容量用于存储给定的常规未保护机器代码程序的给定的程序存储器典型地也具有充足容量来用于存储该程序的受保护版本,该程序的受保护版本是根据本发明获得的。此外,通常不复杂的相对少的修改足以对常规的可编程电路进行适配,允许该电路处理已根据本发明进行保护的机器代码。从而,可以通过相对适中的成本获得软件保护。
本发明的实现有利地包括以下的一个或多个附加特征,在与单独的从属权利要求相对应的单独的段落中对这些附加特征进行描述。
优选地,将熵编码应用于要保护的程序中包括的指令,以使得可以在指令块内创建空闲范围,在该指令块中嵌入了保护性代码。相应地,指令块包括要保护的程序中出现的指令的熵编码的版本。创建空闲范围的熵编码可以提供充足的空间以用于在不增加任何数据量或者仅相对适中地增加数据量的情况下嵌入保护性代码。这有助于成本效率。
此外,可以对指令重新格式化,以创建空闲范围。可以将值指示包括在程序的一部分中可用的空闲范围中,指令块由该程序的该部分组成。值指示对该部分中的指令的相应的给定比特具有相应的给定值进行指示。然后,在分析步骤中,将这些相应的给定比特标识为空闲范围。相应地,可以说,为了获得较大的空闲范围,可以放弃所布置的相对小的空闲。
值指示可以对指令包括每个比特都具有给定值的比特组进行指示。然后,将该比特组标识为空闲范围。
可以将至少一个伪指令(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表示数字签名产生步骤,以及签名嵌入模块SEB表示签名嵌入步骤。
保护代码产生器PCG基本上如下操作。数据存储空间DST1包括软件程序的源代码版本SC。编译器CPL对该源代码版本SC进行编译,以获得软件程序的机器代码版本MC。数据存储空间DST2至少临时地存储该机器代码版本MC。此后,为了简明,将软件程序的源代码版本SC和机器代码版本MC分别称为源代码SC和机器代码MC。
典型地,对机器代码MC而不是源代码SC进行商业化并相应地公开,可以将源代码SC保持机密。例如,可以将机器代码MC与已经载入该机器代码MC的处理器一起进行商业化。还可以通过例如存储有该机器代码MC的存储介质的形式来对机器代码MC单独进行商业化,或者可以通过可从其下载机器代码MC的服务器的形式来对机器代码MC单独进行商业化。
然而,机器代码MC容易受到所谓的入侵。例如,为了进行未授权的克隆或者未授权的软件升级,进行欺诈的人可以禁止或者绕开在机器代码MC中包括的安全功能。入侵典型地涉及修改机器代码MC以使得可以使执行机器代码MC的处理器执行不想要的动作。这些动作可以包括泄露与机器代码MC以及机器代码MC中包括的任何安全功能有关的信息,修改或者绕开安全功能,以及修改处理器行为等。通常将这种对机器代码的故意修改称为“攻击”,攻击可以具有物理或者逻辑的特性。物理攻击的示例是将执行机器代码MC的处理器暴露在强光或者其他类型的辐射下。逻辑攻击的示例是通过处理器内的可寻址缓冲存储器来插入代码。其他逻辑攻击可以涉及使缓冲器溢出或者使用软件缺陷,或者两者都使用。图1中示出的保护代码产生器PCG提供了以有效的方式对抗这种入侵的保护。
指令块编辑器IBC基于机器代码MC的连续部分MC-P提供连续的指令块IB,该连续部分MC-P出现在数据存储空间DST2中。机器代码部分MC-P自身是指令序列。指令块IB可以准确地对应于机器代码部分MC-P。亦即,指令块IB与机器代码部分MC-P可以相同。指令块IB还可以对应于已经添加有一个或多个伪指令(dummy instruction)的机器代码部分MC-P。典型地,伪指令是所谓的“nop”指令,“nop”是针对无操作的助记符号。指令块IB还可以包括这样的指令:指令块IB所基于的机器代码部分MC-P中包括的指令的修改版本。亦即,指令块编辑器IBC可以对形成机器代码MC的一部分的一个或多个指令进行重新格式化。该重新格式化可以涉及熵编码,具体地,涉及指令中所谓的操作码(opcode)的熵编码。此后将对其进行更详细的描述。
指令块IB可以包括固定数目的指令,例如,8个指令。在该情况下,指令块IB的大小优选地与高速缓存存储器的存取单位相对应。典型地,这种存取单位是所谓的高速缓存行(cache line),其可以容纳给定数目的指令,然而,这种存取单位也可以是例如多个高速缓冲行。备选地,指令块IB可以包括可变数目的指令。例如,指令块IB可以包括在有关的软件程序的两个分支之间包括的指令序列。该软件程序在两个分支之间典型地有7至10个指令。
分析器ANL控制指令块编辑器IBC,以确保指令块IB可以容纳给定的最小数量的附加数据。这意味着分析器ANL决定指令块编辑器IBC是否应该将一个或多个伪指令添加到机器代码部分MC-P,以提供指令块IB。总的来说,保持指令块IB中包括的伪指令的数目越多,指令块IB可以容纳的附加数据的数量越大。
然而,增加伪指令必然带来缺陷,并因此应该尽可能地避免。首先,将获得机器代码MC的扩展版本,该机器代码MC的扩展版本在需要执行机器代码(确切地说,机器代码的扩展版本)的处理器中需要更大的存储空间。其次,在增加的伪指令之后的任何跳转指令都应该被修改。跳转地址应该被改动。这是相当麻烦的过程,其必然带来附加的成本,并且可能成为错误的来源。
分析器ANL提供向指令块IB应用的空闲范围指示FI,指令块IB是指令块编辑器IBC所提供的。空闲范围指示FI指示指令块IB内可以容纳附加数据的所谓的空闲范围。例如,空闲范围可以是指令中其相应值对有关指令的执行没有影响的比特的范围。亦即,对于有关的相应比特的相应值,指令的执行是无关紧要的。因此,分析器ANL可以将构建这种“不关心”值的比特标注为空闲范围。在指令中的连续比特构建了“不关心”值的情况下,分析器ANL可以将这些连续的比特共同标注为空闲范围。
例如,空闲范围还可以是值范围,可以将值范围分配给指令中的连续比特的组,然而其对有关指令的执行没有影响。亦即,在来自该范围的值没有具体含义这一方面来说,该值范围是不使用的。从而,对于来自有关值范围的任何具体的值来说,指令的执行是无关紧要的。因此,分析器ANL可以将这种不使用的值的范围标注为空闲范围。例如,假设指令包括6比特字段,针对该6比特字段已经定义了29个不同的值。由于6比特对应于64个不同的值,这意味着有35个值没有得到有效使用。这35个未使用的值构建了可以容纳价值稍多于1比特的信息的空闲范围。此后,将更详细地描述分析器ANL执行的用于标识空闲范围的操作。
散列码产生器HCG将散列函数应用到互补指令块IB+。通过将表示地址AD增加到指令块IB来获得互补指令块IB+,这是由指令块编辑器IBC提供的。表示地址AD表示指令块IB内的指令的地址,应该从该地址执行有关指令。例如,表示地址AD可以是应该从其执行指令块IB中的第一指令的地址,或者仅是该地址的一部分。
指令块编辑器IBC可以将表示地址AD确定为与机器代码MC的开始地址相关的地址。例如,指令块IB的表示地址AD可以与指令块编辑器IBC目前为止基于机器代码MC已提供的所有指令块IB中包括的指令的数目相对应。表示地址AD还可以是这种相关地址的一部分,例如,相关地址的20个最低有效位(LSB)。优选地,表示地址具有这样的粒度(granularity):大到足以防止入侵,同时允许用于在存储器内部移动指令的一定余量。
散列码产生器HCG提供通过向互补指令块IB+应用散列函数而产生的散列码HC。散列码HC包括与互补指令块IB+中包括的比特的数目无关的固定数目的比特,互补指令块IB+中包括的比特的数目可以是固定的或者可变的。例如,假设散列函数是已知使用的“SHA-2”的散列函数(SHA是安全散列算法的首字母缩写)。在这种情况下,散列码HC包括与互补指令块IB+中包括的指令的数目无关的256个比特,互补指令块IB+中包括的指令的数目可以是例如8个或9个。
优选地,散列函数具有加密类型,这意味着散列函数是单向并且无冲突的。单向意味着在计算上找到输入“x”使得H(x)等于散列码HC是不可行的,H表示散列函数。无冲突意味着在计算上找到不同于互补指令块IB+的代码“y”使得H(y)等于散列码HC是不可行的。从而,将H称为弱的无冲突散列函数。强的无冲突散列函数H是这样的函数:对于该函数,在计算上找到任意的两个消息x和y使得H(x)=H(y)是不可行的。因此,可以将散列码HC视为互补指令块IB+的数字指纹。
数字签名产生器DSG将签名算法应用于散列码HC,以基于密钥SK产生数字签名DS。密钥SK是安全地存储在保护代码产生器PCG中的私密的数字代码。在没有密钥SK的情况下,产生数字签名DS在计算上是不可行的。从而,数字签名DS使得可以验证互补指令块IB+的真实性和完整性。亦即,数字签名DS可以保证互补指令块IB+的来源(authorship)并保证其中包括的数据未受到任何修改。优选地,数字信号产生器应用非对称加密方案,这意味着存在公-私钥对。在使用这种方案的情况下,密钥SK是私钥,其具有对应的公钥。公钥允许从数字签名DS产生散列码HC,而不是其他的方式。
签名嵌入模块SEB将数字签名DS嵌入到指令块IB中,数字签名DS从该指令块IB中产生。为此,签名嵌入模块SEB使用分析器ABL提供的空闲范围指示FI,空闲范围指示FI已标识出了指令块IB中存在的空闲范围。如上文所述,分析器ANL对指令块编辑器IBC进行控制,以使得指令块IB可以容纳数字签名DS。亦即,可以说,分析器ABL确保了指令块IB中的空闲范围提供了充足的空间以用于成功嵌入数字签名DS。下文将对其进行更详细的解释。
从而,图1中示出的代码保护器CPR从机器代码MC的连续部分MC-P产生连续的受保护的指令块IBP。受保护的指令块IBP是已经如前所述在其中嵌入了数字签名的指令块IB。将代码保护器CPR产生的连续的受保护的指令块IBP写入数据存储空间DST3中。连续的受保护的指令块IBP共同构建了机器代码MC的受保护版本,亦即受保护的机器代码MCP。
图2A、2B和2C示出了将机器代码MC用于MIPS处理器(MIPS是无互锁流水线级微处理器的首字母缩写,并且是美国的MIPSTechnologies,Inc.的注册商标)的情况下,机器代码MC可以包括的三种不同类型的指令。图2A示出了R类型的指令;图2B示出了I类型的指令;以及图2C示出了J类型的指令。每种类型的指令包括32个比特,由在图2A、2B和2C中水平方向上布置的0到31之间包括的范围中的数字来表示。数字31表示指令的最高有效位;数字0表示最低有效位。
R类型、I类型和J类型的指令每个都包括操作码OP,其范围在比特26至比特31(最高有效位)之间。以及,操作码OP构建了6比特字段。指令的操作码OP包括对有关指令进行标识的6比特值。字节26-31是指令标识比特。
除了操作码OP之外,图2A中示出的R类型指令包括各种字段:范围从比特21至25的RS字段,范围从比特16至20的RT字段,范围从比特11至16的RD字段,范围从比特6至10的SA字段,以及范围从比特0至5的FU字段。R类型指令的操作码OP是000000,这意味着比特31至26每个都等于0。FU字段对功能进行了定义。有29种不同功能。由于FU字段包括6个比特,6个比特对应于64个不同的值,这意味着有35个值没有有效得以使用。相应地,FU字段包括可以容纳稍多于1比特的信息量的空闲范围。以下提供了针对FU字段可以指定的各种功能而能够发现的空闲范围的一些示例。
在FU字段指定RS、RT和RD字段借以构建操作数的“and”功能的情况下,不使用SA字段。因此,在该情况下,SA字段构建了可以容纳5比特信息的空闲范围。
在FU字段指定“break”功能(“break”是中断点(Breakpoint)的助记符号)的情况下,不使用字段RS、RT、RD和SA。因此,在该情况下,上述字段构建了可以容纳20比特信息的空闲范围。
在FU字段指定RS和RT字段借以构建操作数的“div”功能(“div”是划分字(Divide Word)的助记符号)的情况下,不使用RD和SA字段。因此,在该情况下,上述字段构建了可以容纳10比特信息的空闲范围。
除了操作码OP之外,图2B中示出的I类型指令包括各种字段:范围从比特21至25的RS字段,范围从比特16至20的RT字段,范围从比特15至0的IM字段。除了以下值之外,I类型的操作码OP可以具有任意的6比特值:000000、00001*和0100**,*表示任意比特值,其可以是0或者1。以下提供了针对操作码OP可以指定的各种操作而能够发现的空闲范围的一些示例。
在操作码OP指定RS、RT和IM字段借以构建操作数的“andi”操作(“andi”是直接和(And Immediate)的助记符号)时,不存在任何未使用的比特或值。因此,在该情况下,不存在任何空闲范围。
在操作码OP指定RS和IM字段借以构建操作数的“bgez”操作(“bgez”是大于或等于零的分支的助记符号)时,RT字段未使用。因此,在该情况下,RT字段构建了可以容纳5比特信息的空闲范围。
类似地,在操作码OP指定RS和IM字段借以构建操作数的“lui”操作(“lui”是直接向上载入(Load Upper Immediate)的助记符号)时,RT字段未使用。因此,在该情况下,RT字段构建了可以容纳5比特信息的空闲范围。
除了操作码OP之外,图2C中示出的J类型指令包括TG字段。TG字段范围从比特25至0。比特1和0总是等于1,因为J类型指令是字对齐的。因此,J类型指令包括至少一个空闲范围,其可以容纳2比特的信息。
图3示出了指令块编辑器IBC和分析器ANL出于以下两个目的能够执行的一系列步骤S1-S6。首先,提供了指令块IB,在指令块IB中有足够的空间容纳将针对该指令块IB而产生的数字签名DS。第二,与指令块IB一起,提供了空闲范围指示FI,空闲范围指示FI指示了构建上述空间的空闲范围。如上文所指出,可以通过可编程处理器的方式实现指令块编辑器IBC和分析器ANL。从而,可以将图3视为软件程序的流程图表示,亦即,使得可编程处理器能够执行下文参考图3描述的各种操作的指令集。
在步骤S1中,指令块编辑器IBC从数据存储空间DST2中取出机器代码部分MC-P(MC-P→IBC)。典型地,所取出的机器代码部分MC-P在基于其提供最近的指令块的机器代码部分之后。机器代码部分MC-P构建了临时指令块IBTMP的初始版本,该临时指令块IBTMP的初始版本将经历此后描述的步骤S1-S5(MC-P=IBTMP)。
在步骤S2中,分析器ANL确定可以在临时指令块IBTMP中容纳的附加数据的量(
Figure BDA0000088333030000111
)。此后,出于方便考虑,将可以容纳的附加数据的量称为可用空间。分析器ANL可以通过以下方式确定可用空间。分析器ANL可以基于指令的操作码OP或者指令中包括的另一代码来识别指令。针对上文参考图2A、2B和2C描述的每种类型的指令,可以预先确定可用空间,该可用空间可通过比特数的形式表达。然后,在已经识别出指令之后,分析器ANL可以立即确定指令中的可用空间。
例如,分析器ANL可以包括对各自指令的各自空闲范围进行指定的表。可以针对具体的指令集事先产生该表,例如,之前参考图2A、2B和2C描述的MIPS指令集。亦即,通过如前所述对该指令集的空闲范围分析而产生该表。从而,分析器ANL可以使用该表来确定空闲范围针对临时指令块IBTMP中包括的每个指令提供的可用比特数。然后,分析器ANL可以计算已经确定的这些可用比特数的和。该和表示临时指令块IBTMP中的可用空间。
优选地,分析器ANL将临时指令块中IBTMP中的一个或多个指令可能经历的任何重新格式化纳入考虑中。该重新格式化允许增加可用空间,随后将对其进行描述。亦即,通过对机器代码MC中的指令进行重新格式化所获得的已重新格式化的指令典型地包括与机器代码MC中的指令相比更多数目的可用比特。然后,分析器ANL优选地基于该更多数目的可用比特来计算临时指令块中IBTMP中的可用空间。可以预先确定该更多数目的可用比特,因为重新格式化是确定性的操作。
在步骤S3中,分析器ANL检验临时指令块中IBTMP中的可用空间是否至少等于最小量(SP≥MIN?)。在可用空间小于最小量时,分析器ANL随后执行步骤S4。在可用空间大于或等于最小量时,分析器ANL随后执行步骤S5。该最小量与将要产生的数字签名DS中包括的数据量相对应。优选地,数字签名DS中包括的数据量是固定的,可以通过比特数的形式对其进行表达。可以确保这种固定量,因为散列码HC产生器HCG产生包括给定的固定数量的比特的散列码HC。优选地,数字签名产生器DSG不修改该比特数:数字签名DS与散列码HC具有相同的大小。
在步骤S4中,分析器ANL将临时指令块IBTMP中的指令替换为伪指令,例如“nop”指令(ΔIBTMP:+NOP)。优选地,被替换的指令是非伪指令本身的指令,并且在序列的最后。实际上,从步骤S1中已经取出的机器代码MC的一部分删除该最后的非伪指令。这个被删除的指令将形成机器代码MC的后续部分的一部分,其将会在重新执行该一系列的步骤S1-S6以提供后续指令块IB时被取出。亦即,将在后续的指令块IB中表示这个被删除的指令。
相应地,步骤S4通过以伪指令来替换最后的非伪指令,提供了新的临时指令块IBTMP。然后,分析器ANL执行其后的步骤S2和步骤S3,以检验新的临时指令块IBTMP中的可用空间是否足以容纳数字签名DS。如果不足以容纳,重复步骤S4,这意味着以伪指令来替换其他的非伪指令。实际上,每个这种替换都是将伪指令插入到机器代码MC中。分析器ANL跟踪已被插入的伪指令的总数。
在步骤S5中,分析器ANL对临时指令块IBTMP中可能存在的任何跳转指令进行改动(MOD_IJMP∈IBTMP)。一个或多个伪指令的插入需要跳转地址的改动。该改动基于已经插入的伪指令的总数。例如,假设已经提供了连续的指令块IB,并且总共已经插入N个伪指令,N是整数。在这种情况下,存在着等于N的地址偏移,在临时指令块IBTMP中存在的跳转指令中应该考虑到这点。这可以通过将跳转指令中的跳转地址增大N来进行。相应地,步骤S5从而提供了改动后的临时指令块IB* TMP,其考虑到了伪指令的插入。
在步骤S6中,指令块编辑器IBC使改动后的临时指令块IB* TMP经历重新格式化操作,以获得在其中将嵌入数字签名DS的指令块IB
Figure BDA0000088333030000121
亦即,指令块编辑器IBC可以重新格式化一个或多个指令,以创建用于嵌入数字签名DS的附加空间。如之前提到的,重新格式化的指令典型地包括比其原始形式的对应指令更多数目的可用比特。
例如,步骤S6中的重新格式化操作可以涉及操作码的熵编码。将相应的操作码映射到相应的可变长度代码。将机器代码MC中出现相对频繁的指令的操作码映射到相对短的可变长度代码。相反,将机器代码MC中很少出现的指令的操作码映射到相对长的可变长度代码。可以将可变长度代码放置在最初包括该操作码的指令字段中,例如,图2A、2B和2C中示出的6比特字段OP。如果需要,可以将指令字段扩展一个比特或多个比特,以容纳可变长度代码。应该注意到,为了创建附加的空闲范围,除了操作码之外的字段也可以经历熵编码。
典型地,由对操作码和可变长度代码之间的相关性进行定义的具体方案(熵编码方案)来表现熵编码的特征。典型地,不同的方案将在可以创建的附加空间(空闲范围)方面为给定的机器代码提供不同的改善。这是因为,在一个机器代码中相对频繁地出现的给定指令在另一机器指令中可能较不频繁地出现。因此,优选地确定为给定的机器代码提供最佳改善的熵编码方案,并在步骤S6中应用该最优的熵编码方案。在没有预先确定熵编码方案的情况下,需要使用某种方式向将要执行受保护的有关机器代码的处理器传送已经应用的熵编码方案。例如,可以在图1中示出的受保护的机器代码MCP中包括适当的指示。
另一种重新格式化的形式如下:假定特定的指令在机器代码MC中相对频繁地出现。再假定每个指令包括以给定位置处未使用比特的形式出现的类似空闲范围,这是在该比特具有针对每一个指令的相同值的意义上来说的。未使用的比特是无意义的。可以使用这种未使用的比特来标识频繁出现的指令,而不是为此使用整个操作码。在这种情况下,频繁出现的指令的操作码变得可用作空闲范围。可以说,替换前述的操作码,放弃未使用比特而作为空闲范围,这构建了更大的空闲范围。可以将这种替换认为是熵编码。
作为另一个示例,假定机器代码MC包括至少一种类型的、包括具体比特集(该比特集构建了所谓的字段)的指令,以指定值范围中的具体值。有关字段可以包括例如16个比特。假定在有关字段中,8比特值频繁出现。在该字段指定8比特值的情况下,实际上,存在着未使用的8个比特。典型地,这8个未使用的比特将是其值为零的字段的8个最高有效位。假定该有关指令或者与其相关联的指令包括以一个或多个未使用比特的形式表现的空闲范围。可以使用空闲范围中的单个比特来指示该有关字段包括8比特值。相应地,该字段中实际上未使用的8个比特变得可用作空闲范围。
从而,对机器代码指令进行重新格式化可以创建用于数字签名DS嵌入的附加空间。这是有利的,因为这种重新格式化可以去除对包括伪指令(如前所述,这是有缺陷的)的需要。然而,典型地,对机器代码MC进行重新格式化将要求在需要执行机器代码MC的处理器中进行逆重新格式化。可能需要将已重新格式化的指令转变为其原始格式。
将首先针对构建机器代码MC的开始的机器代码部分MC-P执行图3中示出的一系列步骤S1-S6。然后,在分析器ANL的控制之下,将针对机器代码MC的后续部分MC-P重复执行该一系列的步骤S1-S6,使得指令块编辑器IBC提供连续的指令块IB。如参考图1所描述的,针对每个指令块IB产生数字签名DS,并基于空闲范围指示FI将数字签名DS嵌入指令块IB中,空闲范围指示FI由分析器ANL提供。相应地,获得连续的受保护的指令块IBP,其共同构建了受保护的机器代码MC。
图4示出了被布置来执行受保护的机器代码MCP的数据处理系统DPS,该机器代码MCP已经如前参考图1和3所述地产生。数据处理系统DPS包括非易失性存储器ROM、处理器PRC和数据处理路径DHP。非易失性存储器ROM已经加载有受保护的机器代码MCP。可以通过例如集成电路的形式实现数据处理系统DPS。作为另一示例,可以通过包括集成电路的设备的形式实现数据处理系统DPS,在该集成电路上已经实现了非易失性存储器ROM和处理器PRC。
处理器PRC包括两个接口IF1、IF2,一个接口IF1用于非易失性存储器ROM,另一接口IF2用于数据处理路径DHP。处理器PRC还包括安全模块SEM、高速缓存存储器CHM和指令执行电路CPU。数据处理路径DHP可以包括用于临时存储数据的易失性存储器,以及可选地包括一个或多个专用数据处理电路。
基本上,数据处理系统DPS如下操作。数据处理系统DPS向输入数据DI应用至少一个数据处理操作,以获得输出数据DO。输入数据DI和输出数据DO可以具有例如数据流的形式。输入数据DI可以是例如输入信号的数字表示。
处理器PRC可以直接执行数据处理操作,该数据处理操作由受保护的机器代码MCP所定义。备选地,处理器PRC可以控制数据处理路径DHP中的专用数据处理电路所执行的数据处理操作。处理器PRC还可以通过时间复用的方式控制若干数据处理操作。在任何一种情况下,处理器PRC执行受保护的机器代码MCP,这使得处理器PRC执行数据处理操作或者控制操作,或者这些操作的组合。
更详细地,接口IF1从非易失性存储器ROM取回受保护的指令块IBP,该受保护的指令块IBP形成了受保护的机器代码MCP的一部分。接口IF1响应于存储器读取请求MQ,取回受保护的指令块IBP,存储器读取请求MQ由高速缓存存储器CHM所发出。接口IF1将受保护的指令块IBP传递到安全模块SEM。如上文所解释,受保护的指令块IBP包括嵌入其中的数字签名。
安全模块SEM基于受保护的指令块IBP中嵌入的数据签名,检查受保护的指令块IBP的真实性和完整性。在该检查具有负面结果的情况下,安全模块SEM提供告警指示AL。在该情况下,防止处理器PRC对其他指令进行任何执行,亦即,对处理器PRC进行阻断或者重置,或者两者都进行。例如,可以响应于告警指示AL,阻断指令执行电路CPU。作为另一示例,安全模块SEM可以产生中断,该中断应用到能够阻断或者停止处理器PRC的一个或多个实体。
在已经如上文参考图1和3所述应用重新格式化操作以产生受保护的指令块IBP的情况下,安全模块SEM还可以执行逆重新格式化操作。在任何情况下,安全模块SEM提供了重新获得的机器代码部分MC-P*,该重新获得的机器代码部分MC-P*包括可能已经向其增加了一个或多个伪指令的原始机器代码部分MC-P。在没有增加伪指令的情况下,图4中示出的重新获得的机器代码部分MC-P*与图1中示出的向代码保护器CPR输入的机器代码部分MC-P相对应。
高速缓存存储器CHM临时存储重新获得的机器代码部分MC-P*。指令执行电路CPU发出高速缓存读取请求RQ,以从高速缓存存储器CHM获取要执行的机器代码指令MC-I。高速缓存读取请求RQ可以包括指定具体的机器代码指令MC-I的地址。高速缓存存储器CHM可以包括控制器,该控制器将该地址映射到高速缓存存储器CHM中包括有关机器代码指令MC-I的具体存储器单元的地址,或者在高速缓存存储器CHM中不存在所请求的机器代码指令MC-I的情况下发出存储器读取请求MQ。
指令执行电路CPU连续执行从高速缓存存储器CHM中读取的机器代码指令MC-I。机器代码指令MC-I的执行可以涉及经由接口IF2向数据处理路径DHP发出数据读取地址RA或者数据写入地址WA。在数据读取地址RA的情况下,数据处理路径DHP可以提供要处理的输入数据单元IE,其经由接口IF2到达指令执行电路CPU。在数据写入地址WA的情况下,指令执行电路CPU可以提供输出数据单元OE,其经由IF2传递至数据处理路径DHP。
总而言之,高速缓存存储器CHM和指令执行电路CPU以与这些实体在常规数据处理系统中的操作方式实质上相类似的方式而操作。在常规数据处理系统中,可以没有安全模块,而且高速缓存存储器可以直接从非易失性存储器获取普通的、未受保护的机器代码部分,在该非易失性存储器中可以储存图1中示出的机器代码MC。
图5示出来安全模块SEM的细节。安全模块SEM包括以下功能实体:数据分离器SEP、逆重新格式化器IFMT、签名解码器DEC、散列码产生器HCG和比较器CMP。可以通过例如已经加载到可编程处理器中的指令集的方式来实现这些功能实体中的每一个。在这种基于软件的实现中,指令集定义了相关功能实体执行的操作,稍后将对其进行描述。在这方面,可以将图5视为表示一种方法,由此数据分离器SEP表示数据分离步骤,逆重新格式化器IFMT表示逆重新格式化步骤,签名解码器DEC表示签名解码步骤,散列码产生器HCG表示散列码产生步骤,以及比较器CMP表示比较步骤。
图5中示出的安全模块SEM如下操作。假定安全模块SEM接收到已经如上文参考图1和图3所述而产生的受保护的指令块IBP。还假定受保护的指令块IBP没有经过任何修改。数据分离器SEP从应用到安全模块SEM的受保护的指令块IBP中提取并移除数字签名DS。事实上,数据分离器SEP将受保护的指令块IBP分割为两部分:第一部分包括数字签名DS,第二部分包括已经从其剥离了数字签名DS的指令块IB。
逆重新格式化器IFMT向指令块IB应用逆重新格式化操作。逆重新格式化操作把由图3中示出的步骤S6中的格式化操作(该操作由图1中示出的指令块编辑器IBC执行)所引入的修改进行还原。重新格式化的指令返回其原始格式,即,出现在图1中示出的机器代码MC中的有关指令的格式。相应地,逆重新格式化器IFMT提供了获取的机器代码部分MC-P*,该获取的机器代码部分MC-P*包括原始机器代码部分MC-P和可能已经插入的一个或多个伪指令。原则上,不需要移除这些伪指令,因为其不影响处理器PRC所执行的操作。
签名解码器DEC基于从受保护的指令块IBP提取出的数字签名DS和密钥KY产生目标散列码HCT。该密钥KY与图1中示出的已被用于产生数字签名DS的密钥SK具有给定的预定关系。在如上文所述已应用非对称加密方案的情况下,密钥KY可以是公钥。所产生的目标散列码HCT与图1中示出的散列码产生器HCG已产生的散列码HC相对应。这是因为假定数字签名DS没有经过任何修改。
图5中示出的散列码产生器HCG应用与图1中示出的散列码产生器HCG相同的散列函数。散列码产生器HCG向互补指令块IB+应用该散列函数。通过向指令块IB增加表示地址AD来获得互补指令块IB+。表示地址AD是将从其执行有关指令的指令块IB内的指令地址。例如,处理器PRC内的地址计数器可以提供表示地址AD。
散列码产生器HCG通过向互补指令块IB+应用散列函数而提供获取的散列码HCR。如果图5中示出的数据处理系统DPS内的表示地址AD与图1中示出的保护代码产生器PCG内的表示地址AD相同,获取的散列码HCR与图1中示出的散列码产生器HCG已提供的散列码HC相对应。此外,如上文所述,已假定指令块IB未经过任何修改。
比较器CMP将获取的散列码HCR(基于指令块IB和表示地址AD)与目标散列码HCT(基于数字签名DS)相比较。已假定受保护的指令块IBP没有经过任何修改,这意味着数字签名DS、指令块IB或者表示地址AD都没有经过任何修改。结果,获取的散列码HCR将与目标散列码HCT相同。上述散列码HC的这种一致性提供了对指令块IB的真实性和完整性的保证。
相反,如果受保护的指令块IBP已经被修改或者如果已经引起地址错误,则获取的散列码HCR和目标散列码将不会彼此对应。亦即,如果以下单元中的任意一个经过了修改,将存在着不一致性:数字签名DS、指令块IB和表示地址AD。在该情况下,比较器CMP提供上文所述的告警指示AL,这将阻断处理器PRC或者将防止执行其他指令。因为真实性或完整性或者两者均未得以保证,因此暂停处理。
图6示出了可替换图5中示出的数据处理系统DPS中的处理器PRC的备选处理器PRCA。备选处理器PRCA包括类似的实体:两个接口IF1、IF2,一个接口IF1用于非易失性存储器ROM,另一接口IF2用于数据处理路径DHP。备选处理器PRCA还包括安全模块SEM、高速缓存存储器CHM和指令执行电路CPU。在备选处理器PRCA中,将安全模块SEM布置在高速缓存存储器CHM和指令执行电路CPU之间。这是与图5中示出的处理器PRC的主要区别,在图5中示出的处理器PRC中,将安全SEM布置在接口IF1和高速缓存存储器CHM之间。
图6中示出的备选处理器PRCA中的实体以与图5中示出的处理器PRC中的实体实质上相类似的方式操作。高速缓存存储器CHM临时存储从非易失性存储器ROM获取的受保护的指令块IBP。安全模块SEM对受保护的指令块IBP执行真实性检查和完整性检查。在该检查提供了负面结果的情况下,阻断备选处理器PRCA。可以说,安全模块SEM还将受保护的指令块IBP转换为机器代码指令MC-I的序列。在执行机器代码指令MC-I中,为了分别传递输入数据单元IE和输出数据单元OE,指令执行电路CPU可以经由IF2将数据读取和写入地址RA、WA应用到数据处理路径DHP。
总而言之,在图6中示出的备选处理器PRCA中,在高速缓存存储器CHM和指令执行电路CPU之间执行真实性和完整性检查,而在图5中示出的处理器PRC中,在非易失性存储器ROM和高速缓存存储器CHM之间的较早级中执行该检查。两种方案都有优势和缺陷。
图5中示出的方案的优势是方案相对易于实现,可以将其指定为“高速缓存再填充时的检查”。在受保护的指令块IBP具有与高速缓存存储器CHM中的行大小相对应的给定的固定大小的情况下,这是非常符合的。例如,在行大小是8个指令的情况下,受保护的指令块IBP优选地包括8个指令。可以基于常规处理器,通过相对有成本效率的方式来实现图5中示出的处理器PRC,该常规处理器典型地包括高速缓存存储器和指令执行电路。这种实现主要涉及在高速缓存存储器和指令执行电路之间增加安全模块。
图6中示出的方案的优势是该方案潜在地提供更高的保护度,可以将其指定为“刚好在执行之前检查”。入侵者可以成功修改高速缓存存储器CHM中临时存储的一个或多个指令。例如,入侵者可以将处理器PRC暴露在相对强的光或者另一种类型的辐射下以修改程序计数器的计数器值。这将引起不想要的跳转。图6中示出的备选处理器PRCA中的安全模块SEM将检测到这种不想要的跳转。
相反,在图5中示出的“高速缓冲再填充时的检查”方案中,对临时存储在高速缓存存储器CHM中的指令几乎没有提供对抗修改的保护。这是因为,在将指令写入到高速缓存存储器CHM时、而不是在从高速缓存存储器CHM读取指令时执行真实性和完整性检查,以便仅在此之后立即执行。这是图5中示出的“高速缓冲再填充时的检查”的固有缺陷。
图6中示出的“刚好在执行之前检查”方案的缺陷是,该方案的实现可能相对复杂。一般地,将不得不对指令执行电路CPU进行特别改动,以在该方案下操作。亦即,一般地,不可能使用从常规处理器精确拷贝的指令执行电路CPU来实现“刚好在执行之前检查”方案。可能需要改动。
此外,典型地,“刚好在执行之前检查”方案可能要求相对复杂地形成的受保护的指令块IBP。典型地,针对该方案的受保护的指令块IBP应该包括一个接一个连续执行的指令。除了在序列中最后出现的分支指令外,在受保护的指令块IBP中不应该出现分支指令。这种限制可能使受保护代码的产生和受保护代码的执行的实现变得复杂。此外,典型地,受保护的指令块IBP的大小将根据机器代码MC中在何处出现分支指令而发生变化。总而言之,一般要在复杂度和保护度之间进行折衷。
结论性的评述
上文参考附图的详细描述仅是对本发明以及在权利要求中定义的附加特征的示出。可以通过众多不同方式来实现本发明。为了对此进行示出,对一些备选进行简要指出。
可以应用本发明以在涉及软件保护的众多类型的产品或方法中获得优势。例如,可以将本发明应用到通信设备(例如蜂窝电话)中,以保护对属于支付的特征的访问进行管理的软件。作为另一示例,可以将本发明应用到内容呈现设备(例如,所谓的蓝光设备)中,以保护实现数字版权管理的软件。可以将已经根据本发明进行保护的软件存储在任何类型的介质中。图4中示出的非易失性存储器ROM仅是示例。例如,可以将受保护的软件存储在易失性存储器或者可以光记录或可以磁记录的介质中,等等。
存在着根据本发明的众多保护软件的方式。可以仅针对程序的具体部分产生保护性代码,由此仅将该保护性代码嵌入到该部分中。例如,可以仅将图3中示出的一系列步骤S1-S6应用到机器代码MC的具体部分,其被存储到图1中示出的数据存储空间DST2中。
在不修改机器代码指令并且不插入任何伪指令的情况下,将保护性代码直接嵌入到机器代码指令组中是可能的。例如,参考图1,可以将指令块IBC布置为提供作为相应的机器代码部分MC-P的精确拷贝的相应指令块IB。亦即,可以联合地或者单独地去除图3中示出的步骤S4和步骤S5,其中在步骤S4中插入了伪指令,而在步骤S5中对机器代码指令进行了重新格式化。可以在编译期间增加伪指令以确保指令块中具有充足的空闲空间。参考图1,编译器CMP可以增加伪指令,使得指令块编辑器IBC不需要增加任何的伪指令。这种方法的优势是可以避免重新计算地址,这降低了复杂性和出错的风险。
可以采用其他各种措施来确保指令块中有充足的空闲空间用于嵌入保护性代码。例如,在指令的数目方面,指令块可以具有动态定义的大小。在初始指令块中不具有充足的空闲空间的情况下,可以增加指令直到具有充足的空闲空间为止。作为另一示例,可以将保护性代码在大小方面进行改动,以使得该保护性代码可以说适于给定的指令块。例如,在给定的指令块可以容纳32个附加比特的情况下,针对该给定的指令块产生32比特的保护性代码。为此,例如,可以对图1中示出的代码保护器CPR进行修改,使得分析器ANL通过基于可用空闲空间选择适当的散列码函数来控制散列码产生器HCG。
存在着众多产生保护性代码的方式。保护性代码不需要一定具有数字签名的形式,数字签名意味着使用具有公-私密钥对的非对称加密方案。例如,可以通过其他加密技术产生保护性代码,例如,使用对称密钥对而不是私-公密钥对的加密技术。在仅想要对抗介质错误的情况下,保护性代码不需要一定涉及加密。例如,保护性代码可以是散列码。此外,保护性代码不需要一定从包括地址信息的数据集合产生。例如,可以对图1中示出的代码保护器CPR进行修改,使得可以仅从指令块IB产生散列码HC,并因此产生数字签名DS。亦即,不需要考虑表示地址AD。
应该广义地理解术语“高速缓存存储器”。该术语包含了用于存储已经依照本发明进行保护的指令块的任何类型的存储器。应该广义地理解术语“数字签名”。该术语包含了允许检验完整性和真实性的任何类型的代码。
虽然附图中将不同的功能实体示出为不同的块,然而绝不应该排除单一实体执行若干功能或者若干实体执行单一功能的实现。在这方面,附图仅仅是图示性的。例如,参考图1,可以通过单一处理器PRC的形式实现编译器CPL和代码保护器CPR。
存在着通过硬件或软件或者硬件和软件的组合的方式来实现功能实体的众多方式。虽然已经提到了这些功能实体的基于软件的实现,然而绝不应该排除基于硬件的实现。典型地,基于硬件的实现涉及专用电路,每个专用电路具有对该有关专用电路执行的操作进行定义的具体拓扑。在系统(或者系统中包括的功能实体)包括一个或多个专用电路以及一个或多个适当编程的处理器PRC方面,混合实现也是可能的。
存在着众多存储和分发指令块(亦即,软件)的方式,其允许根据本发明来保护软件。例如,可以将软件存储在适当的介质中,例如,光盘或者存储器电路。可以将存储有软件的介质作为单独的产品提供,或者与可以执行软件的另一产品一起提供。这种介质还可以是能够执行软件的产品的一部分。还可以经由通信网络分发软件,通信网络可以是有线的、无线的或者混合型的。例如,可以经由互联网分发软件。通过服务器的方式,可以使软件可被下载。可以经过支付来进行下载。
在参考附图论证该详细描述之前在此进行的评述对本发明进行了示出而不是限制。存在落入所附权利要求范围内的众多备选。权利要求中的任何附图标记不应被解释为对该权利要求的限制。用语“包括”并不排除除了在权利要求中列出的元件或者步骤之外,存在着其他的元件或步骤。在元件和步骤之前的用词“一”或“一个”并不排除存在着多个这样的元件或步骤。相应的从属权利要求定义了相应的附加特征这一起码的事实不排除附加特征的组合,这对应于从属权利要求的组合。

Claims (15)

1.一种保护能够通过可编程电路(DPS)执行的程序(MC)的方法,所述方法包括:
-指令块编辑步骤(IBC),在该步骤中,基于所述程序的至少一部分(MC-P)来提供指令块(IB);
-保护性代码产生步骤(HCG、DSG),在该步骤中,产生与所述指令块具有预定关系的保护性代码(DS);
-分析步骤(ANL),在该步骤中,对所述指令块进行分析,以标识所述指令块内的空闲范围(FI),所述空闲范围关于所述指令块的执行是中立的,所述空闲范围包括以下类型中至少一项:比特范围和值范围;以及
-嵌入步骤(SEB),在该步骤中,使用已被标识的空闲范围来将所述保护性代码嵌入到所述指令块中。
2.根据权利要求1所述的保护程序的方法,其中,所述指令块编辑步骤(IBC)包括:
-重新格式化步骤(S6),在该步骤中,向要保护的程序(MC)中包括的指令应用熵编码,以创建所述指令块(IB)内的空闲范围。
3.根据权利要求1所述的保护程序的方法,其中,所述指令块编辑步骤(IBC)包括:
-重新格式化步骤(S6),在该步骤中,将值指示包括在经过所述指令块编辑步骤的程序的一部分(MC-P)中可用的空闲范围中,所述值指示对所述部分中的指令的相应的给定比特具有相应的给定值进行指示,由此在所述分析步骤(ANL)中将所述相应的给定比特标识为空闲范围。
4.根据权利要求3所述的保护程序的方法,其中,所述值指示对所述指令包括每个比特都具有给定值的比特组进行指示,所述比特组被标识为空闲范围。
5.根据权利要求1所述的保护程序的方法,其中,所述指令块编辑步骤(IBC)包括:
-伪指令插入步骤(S4),在该步骤中,至少一个伪指令被包括在所述指令块(IB)中。
6.根据权利要求1所述的保护程序的方法,所述保护性代码产生步骤(HCG、DSG)包括:
-散列码产生步骤(HCG),在该步骤中,从包括所述指令块(IB)的数据块(IB+)产生散列码(HC);以及
-签名产生步骤(DSG),在该步骤中,从所述散列码(HC)和密钥(SK)产生数字签名(DS)。
7.根据权利要求6所述的保护程序的方法,其中,在所述散列码产生步骤(HCG)中,从其产生散列码(HC)的数据块(IB+)包括表示地址(AD)的数据单元,应该从所述地址(AD)执行所述指令块中的给定指令。
8.根据权利要求1所述的保护程序的方法,所述指令块(IB)在大小上与高速缓存存储器(CHM)的存取单位相对应,所述高速缓存存储器(CHM)与能够执行所述程序的所述可编程电路(DSP)相关联。
9.根据权利要求1所述的保护程序的方法,所述指令块(IB)包括将要连续执行的指令序列。
10.一种用于可编程处理器的计算机程序产品,所述计算机程序产品包括指令块,当把所述指令块载入所述可编程处理器中时,所述指令块使所述可编程处理器能够执行根据权利要求1所述的方法。
11.一种处理器(PCG),用于保护能够通过可编程电路执行的程序(MC),所述处理器包括:
-指令块编辑器(IBC),被布置为基于所述程序的至少一部分(MC-P)来提供指令块(IB);
-保护性代码产生模块(HCG、DSG),被布置为产生与所述指令块具有预定关系的保护性代码(DS);
-分析模块(ANL),被布置为对所述指令块进行分析,以标识所述指令块内的空闲范围(FI),所述空闲范围关于所述指令块的执行是中立的,所述空闲范围包括以下类型中至少一项:比特范围和值范围;以及
-嵌入模块(SEB),被布置为使用已被标识的空闲范围来将所述保护性代码嵌入到所述指令块中。
12.一种包括受保护的程序的数据流,所述受保护的程序已通过执行根据权利要求1所述的方法而获得。
13.一种用于处理保护受保护的程序的方法,所述受保护的程序已通过执行根据权利要求1所述的方法而获得,所述处理方法包括:
-数据分离步骤(SEP),在该步骤中,提取已经被嵌入到所述指令块(IB)中的保护性代码(DS);以及
-检验步骤(CMP),在该步骤中,检验所述保护性代码是否与所述指令块具有预定关系。
14.一种用于可编程处理器的计算机程序产品,所述计算机程序产品包括指令块,当把所述指令块载入所述可编程处理器中时,所述指令块使所述可编程处理器能够执行根据权利要求13所述的方法。
15.一种被布置为处理受保护的程序的处理器(DPS),所述受保护的程序已通过执行根据权利要求1所述的方法而获得,所述处理器包括:
-数据分离器(SEP),被布置为提取已经被嵌入到所述指令块(IB)中的保护性代码(DS);以及
-检验步骤(CMP),被布置为检验所述保护性代码是否与所述指令块具有预定关系。
CN201080010097.4A 2009-03-02 2010-03-01 软件保护 Active CN102341806B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP09290148 2009-03-02
EP09290148.7 2009-03-02
PCT/IB2010/050875 WO2010100598A1 (en) 2009-03-02 2010-03-01 Software protection

Publications (2)

Publication Number Publication Date
CN102341806A true CN102341806A (zh) 2012-02-01
CN102341806B CN102341806B (zh) 2014-09-24

Family

ID=42173313

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080010097.4A Active CN102341806B (zh) 2009-03-02 2010-03-01 软件保护

Country Status (4)

Country Link
US (1) US8812855B2 (zh)
EP (1) EP2404254B1 (zh)
CN (1) CN102341806B (zh)
WO (1) WO2010100598A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109643345A (zh) * 2016-09-27 2019-04-16 英特尔公司 用于确定性代码流完整性保护的技术

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2348452B1 (en) 2009-12-18 2014-07-02 CompuGroup Medical AG A computer implemented method for sending a message to a recipient user, receiving a message by a recipient user, a computer readable storage medium and a computer system
EP2348449A3 (en) 2009-12-18 2013-07-10 CompuGroup Medical AG A computer implemented method for performing cloud computing on data being stored pseudonymously in a database
EP2348447B1 (en) 2009-12-18 2014-07-16 CompuGroup Medical AG A computer implemented method for generating a set of identifiers from a private key, computer implemented method and computing device
US8266435B2 (en) * 2010-01-25 2012-09-11 Compugroup Holding Ag Method for generating an asymmetric cryptographic key pair and its application
EP2365456B1 (en) 2010-03-11 2016-07-20 CompuGroup Medical SE Data structure, method and system for predicting medical conditions
CN102822768A (zh) * 2010-03-23 2012-12-12 索尼公司 通过从处理器性能管理系统掩蔽处理来减少功耗
US8595510B2 (en) * 2011-06-22 2013-11-26 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
WO2014185893A1 (en) * 2013-05-14 2014-11-20 Hewlett-Packard Development Company, L.P. Detection of a security event
US9372695B2 (en) 2013-06-28 2016-06-21 Globalfoundries Inc. Optimization of instruction groups across group boundaries
US9348596B2 (en) 2013-06-28 2016-05-24 International Business Machines Corporation Forming instruction groups based on decode time instruction optimization
EP2913772A1 (de) * 2014-02-28 2015-09-02 Wibu-Systems AG Verfahren und Computersystem zum Schutz eines Computerprogramms gegen Beeinflussung
EP3048776B2 (en) * 2015-01-22 2021-03-17 Nxp B.V. Methods for managing content, computer program products and secure element
EP3214567B1 (en) * 2016-03-01 2020-02-19 Siemens Aktiengesellschaft Secure external update of memory content for a certain system on chip
US10108487B2 (en) * 2016-06-24 2018-10-23 Qualcomm Incorporated Parity for instruction packets
US10452564B2 (en) * 2017-04-25 2019-10-22 Entit Software Llc Format preserving encryption of object code
US20210200873A1 (en) * 2019-12-31 2021-07-01 Renesas Electronics America Inc. Method and system for continuously verifying integrity of secure instructions during runtime

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040162989A1 (en) * 2003-02-19 2004-08-19 Darko Kirovski Enhancing software integrity through installation and verification
US7024663B2 (en) * 2002-07-10 2006-04-04 Micron Technology, Inc. Method and system for generating object code to facilitate predictive memory retrieval
US20060277530A1 (en) * 2005-06-03 2006-12-07 Min Wu Data hiding in compiled program binaries for supplementing computer functionality
CN101350055A (zh) * 2008-09-05 2009-01-21 清华大学 一种在计算机程序中嵌入和提取水印的方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5798047A (en) 1980-12-10 1982-06-18 Nec Corp Data processor
FR2723222B1 (fr) 1994-07-27 1996-09-27 Sextant Avionique Sa Procede et dispositif de securisation du deroulement de sequences lineaires d'ordres executes par unprocesseur
US5956429A (en) * 1997-07-31 1999-09-21 Sony Corporation Image data compression and decompression using both a fixed length code field and a variable length code field to allow partial reconstruction
US7770016B2 (en) 1999-07-29 2010-08-03 Intertrust Technologies Corporation Systems and methods for watermarking software and other media
US7447975B2 (en) 2002-09-12 2008-11-04 Hewlett-Packard Development Company, L.P. Supporting cyclic redundancy checking for PCI-X
US7340588B2 (en) * 2003-11-24 2008-03-04 International Business Machines Corporation Extending the number of instruction bits in processors with fixed length instructions, in a manner compatible with existing code
WO2005052795A1 (en) 2003-11-28 2005-06-09 Koninklijke Philips Electronics N.V. Method and means for securing or verifying respectively a program that can be executed in a data processing unit
US7953980B2 (en) * 2005-06-30 2011-05-31 Intel Corporation Signed manifest for run-time verification of software program identity and integrity
EP1783648A1 (fr) 2005-10-10 2007-05-09 Nagracard S.A. Microprocesseur sécurisé avec vérification des instructions
US8128186B2 (en) * 2007-07-27 2012-03-06 Hewlett-Packard Development Company, L.P. Non-volatile memory data integrity validation
US8650402B2 (en) * 2007-08-17 2014-02-11 Wong Technologies L.L.C. General data hiding framework using parity for minimal switching
US8141162B2 (en) * 2007-10-25 2012-03-20 International Business Machines Corporation Method and system for hiding information in the instruction processing pipeline

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024663B2 (en) * 2002-07-10 2006-04-04 Micron Technology, Inc. Method and system for generating object code to facilitate predictive memory retrieval
US20040162989A1 (en) * 2003-02-19 2004-08-19 Darko Kirovski Enhancing software integrity through installation and verification
US20060277530A1 (en) * 2005-06-03 2006-12-07 Min Wu Data hiding in compiled program binaries for supplementing computer functionality
CN101350055A (zh) * 2008-09-05 2009-01-21 清华大学 一种在计算机程序中嵌入和提取水印的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LARIN S Y 等: "Compiler-driven cached code compression schemes for embedded ILP processors", 《PROCEEDINGS OF THE 32ND. ANNUAL ACM/IEE INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE 》, 16 November 1999 (1999-11-16), pages 83 - 84 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109643345A (zh) * 2016-09-27 2019-04-16 英特尔公司 用于确定性代码流完整性保护的技术
CN109643345B (zh) * 2016-09-27 2023-07-25 英特尔公司 用于确定性代码流完整性保护的技术

Also Published As

Publication number Publication date
CN102341806B (zh) 2014-09-24
WO2010100598A1 (en) 2010-09-10
EP2404254A1 (en) 2012-01-11
EP2404254B1 (en) 2015-11-11
US8812855B2 (en) 2014-08-19
US20110307961A1 (en) 2011-12-15

Similar Documents

Publication Publication Date Title
CN102341806B (zh) 软件保护
KR101712726B1 (ko) 해시 코드를 이용하는 콘텐츠의 무결성 및 유효성 검증 방법 및 시스템
US6829710B1 (en) Technique for producing, through watermarking, highly tamper-resistant executable code and resulting “watermarked” code so formed
US9195476B2 (en) System and method for aggressive self-modification in dynamic function call systems
EP2828745B1 (en) Updating software components
US5559884A (en) Method and system for generating and auditing a signature for a computer program
CN112805694A (zh) 用于改进的实施区块链的智能合约的系统和方法
US20030120938A1 (en) Method of securing software against reverse engineering
US8412953B2 (en) System and method for annotation driven integrity verification
JPWO2006115219A1 (ja) プログラム難読化装置及び難読化方法
US20120144208A1 (en) Indexed table based code encrypting/decrypting device and method thereof
CN105911885A (zh) 用于改善工业控制系统的工业控制器
KR101226854B1 (ko) 보안 모듈, 개인화 방법 및 보안 모듈 식별 방법
KR20140097927A (ko) 소프트웨어의 보안을 높이는 방법
CN103858128B (zh) 提供用于抗攻击的遍及应用的相依性网络的系统和方法
CN105701368A (zh) 通过根据校验和计算目标地址的代码完整性保护
EP1722313A2 (en) Method for creating unique identification for copies of executable code and management thereof
KR101536920B1 (ko) Arm 프로세서 기반의 파일 난독화 방법
JP2006318465A (ja) 実行可能コードのコピーについての固有の識別を生成する方法及びその管理
US20080127078A1 (en) Method and apparatus for preventing modulation of executable program
KR20200017120A (ko) 코스 스프레잉을 이용한 코드 보호 방법 및 시스템
KR20200017121A (ko) 원타임 코드를 이용한 코드 보호 방법 및 시스템
CN117633734A (zh) 代码编译的方法、装置及电子设备
KR20180093529A (ko) 바이트코드와 네이티브코드 간의 상호 의존성에 기반한 어플리케이션 위변조 방지 방법 및 장치
KR101810765B1 (ko) 상수 인코딩을 이용한 정적 워터마킹 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant