CN101751243A - 用于指令级软件加密的方法和设备 - Google Patents

用于指令级软件加密的方法和设备 Download PDF

Info

Publication number
CN101751243A
CN101751243A CN200910252802A CN200910252802A CN101751243A CN 101751243 A CN101751243 A CN 101751243A CN 200910252802 A CN200910252802 A CN 200910252802A CN 200910252802 A CN200910252802 A CN 200910252802A CN 101751243 A CN101751243 A CN 101751243A
Authority
CN
China
Prior art keywords
instruction
encryption
function
value
compiling
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
CN200910252802A
Other languages
English (en)
Other versions
CN101751243B (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.)
Thomson Licensing SAS
Original Assignee
Thomson Licensing SAS
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 Thomson Licensing SAS filed Critical Thomson Licensing SAS
Publication of CN101751243A publication Critical patent/CN101751243A/zh
Application granted granted Critical
Publication of CN101751243B publication Critical patent/CN101751243B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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
    • 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
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/30Technical effects
    • H01L2924/301Electrical effects
    • H01L2924/30107Inductance

Landscapes

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

Abstract

本发明提供一种对要在执行期间逐条指令地进行解密的编译的计算机代码指令进行加密的方法。使用链式处理模式对所述计算机代码指令进行加密,使得加密的指令({Instr.8})依赖于指令(I8)的值、先前指令(I5、I7)的值和伪随机数。由于可能发生可以从多于一个先前指令(I5、I7)到达指令的情况,先前指令(I5、I7)中的至少一个与随机数补偿器相关联,所述随机数补偿器在加密的指令的解密期间使用,使得不管先前指令是哪个指令,对加密的指令的解密都产生相同的结果。本发明还提供了一种加密设备、解密设备和方法、以及存储加密的编译的计算机代码指令的数字支持介质。

Description

用于指令级软件加密的方法和设备
技术领域
本发明一般地涉及软件,更具体地,涉及软件的加密及其解密以及在处理器中的执行。
背景技术
本节意在向读者介绍可能与以下描述和/或要求保护的本发明的各方面相关的领域的各个方面。相信这种讨论有助于向读者提供背景信息,以便于更好地理解本发明的各个方面。相应地,应注意,应根据这一点来阅读这些陈述,而不应将其接纳为现有技术。
长期以来,在本领域中,例如在US5386469以及US6345359中,已知通过加密来保护软件代码并且仅当要执行指令时才逐条指令地对指令进行解密。这些系统的缺陷是黑客可以相对容易地修改指令以查看会发生什么。
为了克服该缺陷,US 2005/108507提出对代码的基本块进行加扰并且通过生成签名来确保完整性。该解决方案的缺陷在于,在不关心完整性的被破解的系统上,依然有可能在尝试破解该系统时替换指令。
因此可以理解,需要一种克服现有技术的这些缺点中的至少一些缺点的软件加密解决方案。本发明提供了这种方案。
发明内容
在第一方面,本发明的目的是提供一种对编译的计算机代码指令的集合进行加密以获得编译的计算机代码指令的加密集合的方法,所述加密集合预期在执行期间逐条指令地进行解密。所述编译的计算机代码指令的集合包括多个分支指令以及标记指令,其中,所述编译的计算机代码指令的集合的执行可以从多个分支指令中的每一个直接继续至标记指令。使用链式加密函数对标记指令进行加密,使得加密的标记指令至少依赖于标记指令的值和所述多个分支指令中所选的一个分支指令的值;以及将所述多个分支指令中除了所选的一个分支指令之外的至少一个分支指令中的每一个与补偿器值相关联,所述补偿器值要用于调整对加密的标记指令的解密,使得不管紧接在标记指令之前执行所述多个分支指令中的哪一个,在执行期间都产生相同的结果。
在第一优选实施例中,对标记指令的加密还依赖于与标记指令相关联的伪随机数。
在第二优选实施例中,所述伪随机数是作为代码密钥和所述伪随机数的生成所针对的指令的偏移的函数来生成的。
在第三优选实施例中,所述标记指令的值和所述多个分支指令中所选的一个分支指令的值分别是相应的操作码(opcode)部分的值。
在第四优选实施例中,加密是通过对所述标记指令的值与所述多个分支指令中所选的一个分支指令的值进行异或(XOR)来执行的。
在第二方面,本发明的目的是提供一种对使用链式加密函数加密的编译的计算机代码指令的集合进行解密的方法。在所述编译的计算机代码指令的执行期间,获得针对所执行的函数的补偿器值和后续加密的函数,在所述编译的计算机代码指令的执行期间,所述后续加密的函数跟随在所执行的函数之后;获得针对所述后续加密的函数的伪随机数;以及使用与所述链式加密函数相对应的解密函数来对后续加密的指令进行解密,所述解密函数至少根据所述后续加密的指令、所执行的函数、所述伪随机数和所述补偿器值来生成后续函数。
在第一优选实施例中,所述伪随机数是作为代码密钥和所述后续加密的函数的偏移的函数来生成的。
在第二优选实施例中,加密的函数包括加密的操作码和未加密的参数(如果存在),并且只有所执行的函数和所述后续加密的函数的操作码部分用于解密。
在第三优选实施例中,解密是通过对所述后续加密的指令的值、所执行的函数、所述伪随机数和所述补偿器值进行异或来执行的。
在第三方面,本发明的目的是提供一种用于对编译的计算机代码指令的集合进行加密以获得编译的计算机代码指令的加密集合的设备,所述加密集合预期在执行期间逐条指令地进行解密。编译的计算机代码指令的集合包括多个分支指令以及标记指令,其中编译的计算机代码指令的集合的执行可以从多个分支指令中的每一个直接继续至标记指令。所述设备包括适于执行以下步骤的处理器:使用链式加密函数对标记指令进行加密,使得加密的标记指令至少依赖于标记指令的值和所述多个分支指令中所选的一个分支指令的值;以及将所述多个分支指令中除了所选的一个分支指令之外的至少一个分支指令中的每一个与补偿器值相关联,所述补偿器值要用于调整对加密的标记指令的解密,使得不管紧接在标记指令之前执行所述多个分支指令中的哪一个,在执行期间都产生相同的结果。
在第四方面,本发明的目的是提供一种用于对使用链式加密函数加密的编译的计算机代码指令的集合进行解密的设备。所述设备包括适于在编译的计算机代码指令的执行期间执行以下步骤的处理器:获得针对所执行的函数的补偿器值;获得后续加密的函数,在所述编译的计算机代码指令的执行期间,所述后续加密的函数跟随在所执行的函数之后;获得针对所述后续加密的函数的伪随机数;以及使用与所述链式加密函数相对应的解密函数来对后续加密的指令进行解密,所述解密函数至少根据所述后续加密的指令、所执行的函数、所述伪随机数和所述补偿器值来生成后续函数。
在第五方面,本发明的目的是提供一种包括计算机代码指令的数字支持介质,当在计算机上执行时,所述计算机代码指令执行根据本发明的第二方面的方法。
附图说明
现在参考附图,通过非限制性示例来描述本发明的优选特征,其中:
图1示出了根据本发明的优选实施例的总体链式处理模式加密方案;
图2更详细地示出了如何根据本发明的优选方法对指令进行加密:
图3示出了使用本发明的优选实施例加密的具有跳转的代码的示例;以及
图4示出了根据本发明的优选实施例的用于代码加密和解密的系统。
具体实施方式
本发明提出通过对编译的软件代码指令进行加密以及随后的解密来保护软件。为了进行描述,高级代码指令包括下列至少其一:
-基本块,即永远按顺序执行的机器级指令的集合。如果基本块包括跳转或者类似指令,则该指令为最后的机器级指令。这是由于通常在执行该代码时才决定下一个机器级指令。
-标记,可以认为是跳转指令的目的地。如果基本块包括标记,则该标记永远作为第一个指令出现。
图1示出了根据本发明的优选实施例的总体链式处理模式加密方案。通常,通过将指令与随机数和先前的指令进行异或来对指令进行加密。在图1中给出的示例中,仅对三条指令进行加密,但是将理解这可以推广到更大(或者更小)的数目。
待加密的指令:Instr 1、Instr 2以及Instr 3出现在左侧的第一列中。第二列包括伪随机数,优选地,这些伪随机数对于每一条指令来说是不同的。伪随机数是由流密码102使用秘密密钥来提供的伪随机流的一部分,所述密钥优选地对每一个编译的代码而言是唯一的。流密码是众所周知的密码原语;RC4和Salsa是两个非限制性示例。可以以以下方式来使用块密码:块密码可以有效地用作流密码,例如计数器模式中的AES(AES-CTR)。
第三列包括先前未加密的指令的值,除了第一个指令不具有先前的指令以外,所以,取而代之地使用初始化向量IV 104。第四列包括产生的加密函数。
可以看到,将第一指令与第一伪随机数以及初始化向量IV进行异或以产生第一加密指令{Instr.1}。然而,通过将第二指令与第二伪随机数和第一指令进行异或来对第二指令进行加密,以产生第二加密指令{Instr.2}。以相同方式对其它指令进行加密,即通过与伪随机数和先前的指令进行异或。
本领域技术人员将理解,图1描述的链式处理模式对于基本块的加密可以良好地工作。然而,超出该范围则无法使用该模式,这是由于可能发生以下情况:可以从多处到达的指令(例如通过跳转)具有多个互不相同的先前指令。通常这仅在一种情况下可以产生可以正确的解密,即从“正确”的先前指令到达后续指令的情况。
然而,本发明使得可以对整个代码进行链式处理。为此,将至少一些(可能是全部)指令与随机数补偿器相关联,随机数补偿器用于对随后的指令进行加密和解密。如下面将描述的,这些随机数补偿器确保不管哪一个指令是先前指令都可以正确地对指令进行解密。为了清楚,应当指出,随机数补偿器通常不是随机的,而是补偿伪随机数的值。
假定例如指令I14具有两个可能的先前指令,I13和I7。每一个先前指令分别与随机数补偿器C13和C7相关联。
在没有随机数补偿器的情况下,使用从指令I13的链式操作对指令I14进行加密得到:
{ I 14 } = I 14 ⊕ R 14 ⊕ I 13 ,
其中
Figure G2009102528020D0000052
表示异或运算并且括号表示加密的指令。
类似地,使用从指令I7的链式操作对指令I14进行加密得到:
{ I 14 } = I 14 ⊕ R 14 ⊕ I 7 ,
如果I7和I13不同(这是通常情况),则{I14}具有两个可能值。为了得到{I14}的相同加密值,使用随机数补偿器C13和C7。等式变为:
{ I 14 } = I 14 ⊕ R 14 ⊕ C 13 ⊕ I 13 , 以及
{ I 14 } = I 14 ⊕ R 14 ⊕ C 7 ⊕ I 7 .
为了确保两个等式产生相同的结果,右侧必须相同,即:
I 14 ⊕ R 14 ⊕ C 13 ⊕ I 13 = I 14 ⊕ R 14 ⊕ C 7 ⊕ I 7 ,
可以将其简化为
C 13 ⊕ I 13 = C 7 ⊕ I 7 .
这意味着,如果则获得相同的加密结果。
有利地,将随机数补偿器存储在具有二进制代码的随机纠正表(RCT)中,优选地在其首部中进行加密。
优选地,就在代码执行之前执行代码的解密。处理器420能够使用流密码202以秘密密钥作为输入来生成正确的伪随机数,以对每一条指令进行解密。在具有随机数补偿器的情况下,从指令I7对指令I14进行解密得到:
{ I 14 } ⊕ R 14 ⊕ C 7 ⊕ I 7 = I 14 ⊕ R 14 ⊕ C 7 ⊕ I 7 ⊕ R 14 ⊕ C 7 ⊕ I 7 = I 14 ,
从指令I13得到:
{ I 14 } ⊕ R 14 ⊕ C 13 ⊕ I 13 = { I 14 } ⊕ R 14 ⊕ C 7 ⊕ I 7 ⊕ I 13 ⊕ I 13 = I 14
因此两个等式产生相同的解密结果:I14
图2更详细地示出了如何根据本发明的优选方法对指令进行加密。在软件代码的编译期间,编译器提供与执行跳转的指令相关的信息。该信息用于对编译的代码进行加密。
如图1所示,通过将指令Instr.2与先前指令Instr.1和伪随机数进行异或来对指令Instr.2进行加密,得到加密的指令{Instr.2}。
然而,图2提供了生成伪随机数的更多细节。由流密码202(如图1所示,优选地是RC4、Salsa或者AES-CTR)生成伪随机数。流密码202使用代码密钥以及指令偏移206作为输入。RCT 204也使用指令偏移206作为输入并且提供随机数补偿器C1。如果Instr.2的加密不需要纠正(如果Instr.2不是标记则属于这种情况),则在RCT 204中优选地没有与指令偏移206相关联的信息。
指令偏移206向流密码202提供信息以确保针对指令每次都生成相同的随机数。本领域技术人员将理解,由于以预定顺序生成代码块,因此在图1中不需要这种指令偏移,而图2允许代码中的跳转;即,第n个待执行的指令不一定必须是代码中的第n个指令。
可以认识到,可以将任意跳转指令的随机数补偿器设置为零,然后按照需要进行迭代,以计算应当纠正的指令的随机数补偿器,从而实现代码的完全链式处理。
图3示出了使用本发明的优选实施例来加密的具有跳转的代码的示例。可以看到,可以从两个不同指令I5、I7到达最终指令I8。为了确保不管先前指令是哪一个,加密指令{Instr.8}都相同,则确保
Figure G2009102528020D0000071
Figure G2009102528020D0000072
出于简明的原因,在图3中未示出用于对指令进行加密的随机数Ri
如果设置了C7,则将C5计算为
Figure G2009102528020D0000073
另一方面,如果设置了C5,则将C7计算为
Figure G2009102528020D0000074
如前所述,通常设置哪个随机数补偿器是并不重要;重要的是能够对从每一个可能的先前指令到达的指令进行解密。
然后,在前述RCT表中存储随机修改器的值。
图4示出了根据本发明的优选实施例的用于代码加密和解密的系统400。系统400包括适于接收和加密编译的二进制代码“Code”的加密设备410。加密设备410适于如前所述对二进制代码进行加扰。加密设备410存储预期用于加扰代码{Code}Kc的处理器420的公共密钥Kpub,并且生成优选地每次都改变的秘密代码密钥Kc(随代码不同而不同)。公共密钥Kpub可以对预期的设备或多个设备而言是唯一的。由流密码使用秘密密钥Kc来生成随机流。为了安全地传输秘密密钥Kc,使用公共密钥Kpub对其进行加密,这产生加密的秘密密钥{Kc}Kpub。{Kc}Kpub具有二进制代码(优选在其首部中)。
可以在一个或者更多处理器(图中未示出;下文中称为“处理器”)或者更大设备的一部分中实现加密设备410,该更大设备还包括适于编译代码的编译器并且还包括至少一个通信单元和一个存储器。加密设备410适于分析编译的代码以找到必需的信息(例如标记)以完成加密。
加密设备410还适于通过相同的信道或者通过分离的信道向处理器420发送加扰的代码{Code}Kc以及加密的秘密密钥{Kc}Kpub。可以理解,加扰代码{Code}Kc(具有或者不具有加密的秘密密钥{Kc}Kpub)可以分布在数字支持介质430上,例如CD-ROM,或者任意合适的数字分布网络(例如因特网、LAN、UMTS)。
处理器420从二进制代码首部中提取加密的秘密密钥{Kc}Kpub。处理器420优选包括适于使用与公共密钥相对应的私有密钥Kpriv来对{Kc}Kpub进行解密的密码处理器421。优选地,在安全(防篡改的)的位置存储私有密钥Kpriv。密码处理器还适于使用秘密密钥Kc对加扰的代码{Code}Kc进行解扰,以获得二进制代码,当对指令进行解扰时,将该二进制代码转发至高速缓存423,并且从高速缓存423将其进一步传送至第二处理器(CPU)424以供执行。处理器420还包括适于存储RCT的存储器(RAM)422。
尽管可以使用普通处理器来实现该系统和方法,应当理解,由于所谓的密码处理器更安全,因此使用密码处理器是有利的。
在前文的描述中,已经提到对指令进行加密。本领域技术人员将理解,指令的长度可以根据与所谓操作码相关联的变量的数目而改变。
根据第一种变型,仅对每一条指令的操作码进行加密,不对变量进行加密。
根据第二种变型,用于加密的伪随机数与最长指令的长度一样长。如果这样,首先对操作码进行解密,以获得与该操作码关联的变量长度相关的知识。然后在第二过程中,对变量进行解密。为了使用第二变型对指令进行链式处理,如果先前指令较长则将先前指令截断至当前指令的长度,但是如果之前的指令较短(或者等长)则不需要截断。
本领域技术人员将理解,如果仅计算随机数补偿器以便不管当前讨论的指令之前执行哪个指令都获得相同的解密值,则可以将用于指令加密的伪随机数与指令本身或者与先前指令相关联。
可以独立地或以任何合适组合来提供说明书以及(在合适时)权利要求和附图中公开的每个特征。被描述为以硬件实现的特征也可以以软件实现,反之亦然。
权利要求中出现的参考标记仅作为示意,不应对权利要求的范围起限制作用。

Claims (12)

1.一种对编译的计算机代码指令的集合进行加密以获得编译的计算机代码指令的加密集合的方法,所述加密集合预期在执行期间逐条指令地进行解密,所述编译的计算机代码指令的集合包括多个分支指令(I5、I7)以及标记指令(I8),其中,所述编译的计算机代码指令的集合的执行能够从所述多个分支指令中的每一个(I5、I7)直接继续至所述标记指令(I8),所述方法包括在设备(410)处执行的以下步骤:
使用链式加密函数对所述标记指令(I8)进行加密,使得加密的标记指令({Instr.8})至少依赖于所述标记指令(I8)的值和所述多个分支指令中所选的一个分支指令的值;以及
将所述多个分支指令中除了所选的一个分支指令之外的至少一个分支指令(I5、I7)中的每一个与补偿器值(C5、C7)相关联,所述补偿器值(C5、C7)要用于调整对所述加密的标记指令({Instr.8})的解密,使得不管紧接在所述标记指令(I8)之前执行所述多个分支指令(I5、I7)中的哪一个,在执行期间都产生相同的结果。
2.根据权利要求1所述的方法,其中,对所述标记指令(I8)的加密还依赖于与所述标记指令(I8)相关联的伪随机数。
3.根据权利要求2所述的方法,还包括以下步骤:作为代码密钥和所述伪随机数的生成所针对的指令的偏移的函数,来生成所述伪随机数。
4.根据权利要求1所述的方法,其中,所述标记指令(I8)的值和所述多个分支指令(I5、I7)中所选的一个分支指令的值分别是相应的操作码部分的值。
5.根据权利要求1所述的方法,其中,所述加密是通过对所述标记指令(I8)的值与所述多个分支指令(I5、I7)中所选的一个分支指令的值进行异或来执行的。
6.一种对使用链式加密函数加密的编译的计算机代码指令的集合进行解密的方法,所述方法包括在所述编译的计算机代码指令的执行期间在设备(420)处执行以下步骤:
获得针对所执行的函数(I5、I7)的补偿器值(C5、C7),
获得后续加密的函数({Instr.8}),在所述编译的计算机代码指令的执行期间,所述后续加密的函数跟随在所执行的函数(I5、I7)之后;
获得针对所述后续加密的函数({Instr.8})的伪随机数;以及
使用与所述链式加密函数相对应的解密函数来对后续加密的指令(I8)进行解密,所述解密函数至少根据所述后续加密的指令({Instr.8})、所执行的函数、所述伪随机数和所述补偿器值来生成后续函数(I8)。
7.根据权利要求6所述的方法,还包括以下步骤:作为代码密钥和所述后续加密的函数({Instr.8})的偏移的函数,来生成所述伪随机数。
8.根据权利要求6所述的方法,其中,加密的函数包括加密的操作码,如果存在未加密的参数,还包括未加密的参数,并且,只有所执行的函数(I5、I7)和所述后续加密的函数({Instr.8})的操作码部分用于解密。
9.根据权利要求6所述的方法,其中,所述解密是通过对所述后续加密的指令({Instr.8})的值、所执行的函数、所述伪随机数以及所述补偿器值(C5、C7)进行异或来执行的。
10.一种用于对编译的计算机代码指令的集合进行加密以获得编译的计算机代码指令的加密集合的设备(410),所述加密集合预期在执行期间逐条指令地进行解密,所述编译的计算机代码指令的集合包括多个分支指令(I5、I7)以及标记指令(I8),其中,所述编译的计算机代码指令的集合的执行能够从多个分支指令中的每一个(I5、I7)直接继续至所述标记指令(I8),所述设备(410)包括适于执行以下步骤的处理器:
使用链式加密函数对所述标记指令(I8)进行加密,使得加密的标记指令({Instr.8})至少依赖于所述标记指令(I8)的值和所述多个分支指令中所选的一个分支指令的值;以及
将所述多个分支指令中除了所选的一个分支指令之外的至少一个分支指令(I5、I7)中的每一个与补偿器值(C5、C7)相关联,所述补偿器值(C5、C7)要用于调整对所述加密的标记指令({Instr.8})的解密,使得不管紧接在所述标记指令(I8)之前执行所述多个分支指令(I5、I7)中的哪一个,在执行期间都产生相同的结果。
11.一种用于对使用链式加密函数加密的编译的计算机代码指令的集合进行解密的设备(420),所述设备(420)包括适于在编译的计算机代码指令的执行期间执行以下步骤的处理器(421):
获得针对所执行的函数(I5、I7)的补偿器值(C5、C7),
获得后续加密的函数({Instr.8}),在所述编译的计算机代码指令的执行期间,所述后续加密的函数跟随在所执行的函数(I5、I7)之后;
获得针对所述后续加密的函数({Instr.8})的伪随机数;以及
使用与所述链式加密函数相对应的解密函数来对后续加密的指令(I8)进行解密,所述解密函数至少根据所述后续加密的指令({Instr.8})、所执行的函数、所述伪随机数和所述补偿器值来生成后续函数(I8)。
12.一种包括计算机代码指令的数字支持介质(430),当在计算机上执行时,所述计算机代码指令执行根据权利要求6至9中任一项所述的方法。
CN200910252802.0A 2008-12-15 2009-12-01 用于指令级软件加密的方法和设备 Expired - Fee Related CN101751243B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP08305946.9 2008-12-15
EP08305946A EP2196937A1 (en) 2008-12-15 2008-12-15 Methods and devices for instruction level software encryption

Publications (2)

Publication Number Publication Date
CN101751243A true CN101751243A (zh) 2010-06-23
CN101751243B CN101751243B (zh) 2015-02-18

Family

ID=40627567

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910252802.0A Expired - Fee Related CN101751243B (zh) 2008-12-15 2009-12-01 用于指令级软件加密的方法和设备

Country Status (7)

Country Link
US (1) US8341426B2 (zh)
EP (2) EP2196937A1 (zh)
JP (1) JP5184489B2 (zh)
KR (1) KR101632658B1 (zh)
CN (1) CN101751243B (zh)
AT (1) ATE520091T1 (zh)
TW (1) TWI478050B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104917610A (zh) * 2015-06-15 2015-09-16 上海交通大学 基于量子真随机数的通信中继服务器安全系统及方法
CN105095698A (zh) * 2014-05-19 2015-11-25 恩智浦有限公司 基于最近执行的程序代码的程序代码模糊处理
CN110999202A (zh) * 2017-08-23 2020-04-10 区块链控股有限公司 用于对数据进行高度安全、高速加密和传输的计算机实现的系统和方法
CN112703500A (zh) * 2018-08-24 2021-04-23 耐瑞唯信有限公司 在低功率模式期间保护存储在IoT装置的存储器中的数据

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5616528B2 (ja) * 2010-07-22 2014-10-29 ナグラビジョン エス アー ソフトウェアの完全性を保証するためのプロセッサにより実施される方法
US8745408B2 (en) * 2011-04-08 2014-06-03 Infineon Technologies Ag Instruction encryption/decryption arrangement and method with iterative encryption/decryption key update
EP2856377B1 (en) 2012-06-01 2017-09-27 Intel Corporation Identification and execution of subsets of a plurality of instructions in a more secure execution environment
US8812873B2 (en) 2012-09-26 2014-08-19 Intel Corporation Secure execution of a computer program using binary translators
US9311493B2 (en) * 2013-07-30 2016-04-12 Battelle Memorial Institute System for processing an encrypted instruction stream in hardware
EP2884692B1 (en) * 2013-12-13 2020-05-20 Nxp B.V. Updating software on a secure element
EP2978159A1 (en) 2014-07-21 2016-01-27 Nxp B.V. Nonce generation for encryption and decryption
DE102015201430A1 (de) * 2015-01-28 2016-07-28 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Intrinsische Authentifizierung von Programcode
FR3047100B1 (fr) * 2016-01-26 2018-03-02 Commissariat A L'energie Atomique Et Aux Energies Alternatives Methode de chiffrement d'un flot d'instructions et execution d'un flot d'instructions ainsi chiffre.
CN109394095B (zh) 2018-10-23 2020-09-15 珠海市一微半导体有限公司 一种机器人运动地毯偏移的控制方法、芯片及清洁机器人
CN109698504A (zh) * 2019-03-08 2019-04-30 张文韬 潮流计算结果分析方法及系统
EP4002165A1 (en) * 2020-11-18 2022-05-25 Thales DIS France SA Code flow protection with error propagation
US11409846B2 (en) 2021-01-14 2022-08-09 Safelishare, Inc. User controlled trusted and isolated computing environments
US20220342655A1 (en) * 2021-04-22 2022-10-27 STMicroelectronics (Grand Ouest) SAS Microcontroller, computer program product, and method for adding an additional function to a computer program

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4562305A (en) * 1982-12-22 1985-12-31 International Business Machines Corporation Software cryptographic apparatus and method
EP0908810A2 (en) * 1997-10-10 1999-04-14 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
US6345359B1 (en) * 1997-11-14 2002-02-05 Raytheon Company In-line decryption for protecting embedded software

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5386469A (en) 1993-08-05 1995-01-31 Zilog, Inc. Firmware encryption for microprocessor/microcomputer
US5675645A (en) * 1995-04-18 1997-10-07 Ricoh Company, Ltd. Method and apparatus for securing executable programs against copying
JPH1055273A (ja) * 1996-06-05 1998-02-24 Matsushita Electric Ind Co Ltd ソフトウェア保護装置
US6333983B1 (en) * 1997-12-16 2001-12-25 International Business Machines Corporation Method and apparatus for performing strong encryption or decryption data using special encryption functions
US6971022B1 (en) * 1999-06-15 2005-11-29 Matsushita Electric Industrial Co., Ltd. Cryptographic apparatus for performing cryptography on a specified area of content data
DE50010164D1 (de) * 2000-05-22 2005-06-02 Infineon Technologies Ag Sicherheits-Datenverarbeitungseinheit sowie dazugehöriges Verfahren
JP4098478B2 (ja) * 2001-01-31 2008-06-11 株式会社東芝 マイクロプロセッサ
JP2004246637A (ja) * 2003-02-14 2004-09-02 Fainaaku Kk 固有情報化プロセッサ、これを備えた処理装置および記憶装置、関連するプログラム実行方法、およびコンピュータプログラム
JP2005050116A (ja) * 2003-07-28 2005-02-24 Matsushita Electric Ind Co Ltd 命令実行装置およびその方法
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
JP4737592B2 (ja) * 2005-02-16 2011-08-03 ルネサスエレクトロニクス株式会社 データ処理装置
US8495367B2 (en) * 2007-02-22 2013-07-23 International Business Machines Corporation Nondestructive interception of secure data in transit
US8538012B2 (en) * 2007-03-14 2013-09-17 Intel Corporation Performing AES encryption or decryption in multiple modes with a single instruction
JP2009169489A (ja) * 2008-01-11 2009-07-30 Oki Electric Ind Co Ltd 暗号化方法、復号化方法、暗号化装置、復号化装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4562305A (en) * 1982-12-22 1985-12-31 International Business Machines Corporation Software cryptographic apparatus and method
EP0908810A2 (en) * 1997-10-10 1999-04-14 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
US6345359B1 (en) * 1997-11-14 2002-02-05 Raytheon Company In-line decryption for protecting embedded software

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095698A (zh) * 2014-05-19 2015-11-25 恩智浦有限公司 基于最近执行的程序代码的程序代码模糊处理
CN105095698B (zh) * 2014-05-19 2018-05-18 恩智浦有限公司 基于最近执行的程序代码的程序代码模糊处理
CN104917610A (zh) * 2015-06-15 2015-09-16 上海交通大学 基于量子真随机数的通信中继服务器安全系统及方法
CN104917610B (zh) * 2015-06-15 2018-03-06 上海交通大学 基于量子真随机数的通信中继服务器安全系统及方法
CN110999202A (zh) * 2017-08-23 2020-04-10 区块链控股有限公司 用于对数据进行高度安全、高速加密和传输的计算机实现的系统和方法
CN112703500A (zh) * 2018-08-24 2021-04-23 耐瑞唯信有限公司 在低功率模式期间保护存储在IoT装置的存储器中的数据

Also Published As

Publication number Publication date
CN101751243B (zh) 2015-02-18
EP2196937A1 (en) 2010-06-16
TWI478050B (zh) 2015-03-21
JP2010140473A (ja) 2010-06-24
US20100153745A1 (en) 2010-06-17
US8341426B2 (en) 2012-12-25
EP2196938A1 (en) 2010-06-16
ATE520091T1 (de) 2011-08-15
JP5184489B2 (ja) 2013-04-17
EP2196938B1 (en) 2011-08-10
KR20100069588A (ko) 2010-06-24
KR101632658B1 (ko) 2016-06-22
TW201023031A (en) 2010-06-16

Similar Documents

Publication Publication Date Title
CN101751243B (zh) 用于指令级软件加密的方法和设备
US9152805B2 (en) Security device
CN104202145B (zh) 针对sm4密码算法轮函数输出的选择明文或密文侧信道能量分析攻击的方法
JP6880017B2 (ja) 信頼できないコンピュータ上でプライベートプログラムを実行するためのシステム及びプロセス
CN103248650B (zh) 一种文件下载方法及系统
CN102195776A (zh) 用于安全通信系统中处理信息的方法和系统
US20150195089A1 (en) Data scramble device, security device, security system, and data scramble method
KR20150142623A (ko) 안전하게 메시지를 교환하기 위한 방법, 이 방법을 구현하기위한 장치 및 시스템
KR20130093557A (ko) 적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행을 위한 시스템, 장치, 및 방법
CN104660590A (zh) 一种文件加密安全云存储方案
CN102833077A (zh) 金融ic及金融社保ic卡远程发卡数据传输加解密方法
US8804953B2 (en) Extensive ciphertext feedback
EP3309995A1 (en) Key exchange method, key exchange system, key distribution device, communication device, and program
CN105184119A (zh) 一种软件的安全保护方法
US7773753B2 (en) Efficient remotely-keyed symmetric cryptography for digital rights management
CN101267295A (zh) 用于安全通信系统中处理信息的方法和系统
CN106027553A (zh) 一种基于动态密码的加密、解密方法
CN103634113A (zh) 一种带用户/设备身份认证的加解密方法及装置
CN109347630A (zh) 一种税控设备密钥分发方法及系统
Czubak et al. A Note on Keys and Keystreams of Chacha20 for Multi-Key Channels
US20230037804A1 (en) Power analysis attack protection
KR101614331B1 (ko) 이동 통신 시스템에서 aes 알고리즘을 이용한 암호화 장치 및 방법
CN105187199A (zh) 一种aes加密中的数据优化方法
KR101616717B1 (ko) 버냄 사이퍼 암호 알고리즘을 이용한 암복호화 서비스 제공 방법 및 시스템
Padhiyar et al. An Improved Symmetric Key Encryption Method Using Randomized Matrix Generation

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150218

Termination date: 20181201