CN101751243A - 用于指令级软件加密的方法和设备 - Google Patents
用于指令级软件加密的方法和设备 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000002950 deficient Effects 0.000 description 3
- ZINJLDJMHCUBIP-UHFFFAOYSA-N ethametsulfuron-methyl Chemical compound CCOC1=NC(NC)=NC(NC(=O)NS(=O)(=O)C=2C(=CC=CC=2)C(=O)OC)=N1 ZINJLDJMHCUBIP-UHFFFAOYSA-N 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2107—File encryption
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L2924/00—Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
- H01L2924/30—Technical effects
- H01L2924/301—Electrical effects
- H01L2924/30107—Inductance
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进行加密得到:
类似地,使用从指令I7的链式操作对指令I14进行加密得到:
如果I7和I13不同(这是通常情况),则{I14}具有两个可能值。为了得到{I14}的相同加密值,使用随机数补偿器C13和C7。等式变为:
为了确保两个等式产生相同的结果,右侧必须相同,即:
可以将其简化为
这意味着,如果则获得相同的加密结果。
有利地,将随机数补偿器存储在具有二进制代码的随机纠正表(RCT)中,优选地在其首部中进行加密。
优选地,就在代码执行之前执行代码的解密。处理器420能够使用流密码202以秘密密钥作为输入来生成正确的伪随机数,以对每一条指令进行解密。在具有随机数补偿器的情况下,从指令I7对指令I14进行解密得到:
从指令I13得到:
因此两个等式产生相同的解密结果: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}都相同,则确保 出于简明的原因,在图3中未示出用于对指令进行加密的随机数Ri。
然后,在前述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中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP08305946A EP2196937A1 (en) | 2008-12-15 | 2008-12-15 | Methods and devices for instruction level software encryption |
EP08305946.9 | 2008-12-15 |
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102959556B (zh) * | 2010-07-22 | 2015-12-16 | 纳格拉影像股份有限公司 | 用于确保软件完整性的处理器实现的方法 |
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)
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)
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 |
ATE294414T1 (de) * | 2000-05-22 | 2005-05-15 | 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 | 暗号化方法、復号化方法、暗号化装置、復号化装置 |
-
2008
- 2008-12-15 EP EP08305946A patent/EP2196937A1/en not_active Withdrawn
-
2009
- 2009-11-16 JP JP2009261037A patent/JP5184489B2/ja not_active Expired - Fee Related
- 2009-11-17 AT AT09176197T patent/ATE520091T1/de not_active IP Right Cessation
- 2009-11-17 EP EP09176197A patent/EP2196938B1/en not_active Not-in-force
- 2009-11-20 TW TW098139417A patent/TWI478050B/zh not_active IP Right Cessation
- 2009-12-01 CN CN200910252802.0A patent/CN101751243B/zh not_active Expired - Fee Related
- 2009-12-10 US US12/653,224 patent/US8341426B2/en not_active Expired - Fee Related
- 2009-12-11 KR KR1020090123199A patent/KR101632658B1/ko active IP Right Grant
Patent Citations (3)
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)
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 |
---|---|
JP5184489B2 (ja) | 2013-04-17 |
US20100153745A1 (en) | 2010-06-17 |
US8341426B2 (en) | 2012-12-25 |
TWI478050B (zh) | 2015-03-21 |
KR20100069588A (ko) | 2010-06-24 |
ATE520091T1 (de) | 2011-08-15 |
EP2196938A1 (en) | 2010-06-16 |
CN101751243B (zh) | 2015-02-18 |
JP2010140473A (ja) | 2010-06-24 |
TW201023031A (en) | 2010-06-16 |
KR101632658B1 (ko) | 2016-06-22 |
EP2196937A1 (en) | 2010-06-16 |
EP2196938B1 (en) | 2011-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101751243B (zh) | 用于指令级软件加密的方法和设备 | |
US9152805B2 (en) | Security device | |
CN104202145B (zh) | 针对sm4密码算法轮函数输出的选择明文或密文侧信道能量分析攻击的方法 | |
JP6880017B2 (ja) | 信頼できないコンピュータ上でプライベートプログラムを実行するためのシステム及びプロセス | |
EP3192207B1 (en) | Apparatus and method for data encryption | |
CN103248650B (zh) | 一种文件下载方法及系统 | |
CN102195776A (zh) | 用于安全通信系统中处理信息的方法和系统 | |
US20150195089A1 (en) | Data scramble device, security device, security system, and data scramble method | |
CN104660590B (zh) | 一种文件加密安全云存储方案 | |
KR20150142623A (ko) | 안전하게 메시지를 교환하기 위한 방법, 이 방법을 구현하기위한 장치 및 시스템 | |
KR20130093557A (ko) | 적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행을 위한 시스템, 장치, 및 방법 | |
CN102833077A (zh) | 金融ic及金融社保ic卡远程发卡数据传输加解密方法 | |
US20100124328A1 (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) | 버냄 사이퍼 암호 알고리즘을 이용한 암복호화 서비스 제공 방법 및 시스템 |
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 |