CN1898623A - 使用动态实体的软件执行保护 - Google Patents
使用动态实体的软件执行保护 Download PDFInfo
- Publication number
- CN1898623A CN1898623A CNA2004800383215A CN200480038321A CN1898623A CN 1898623 A CN1898623 A CN 1898623A CN A2004800383215 A CNA2004800383215 A CN A2004800383215A CN 200480038321 A CN200480038321 A CN 200480038321A CN 1898623 A CN1898623 A CN 1898623A
- Authority
- CN
- China
- Prior art keywords
- key
- computer program
- static resource
- encryption
- entity
- 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.)
- Pending
Links
- 230000003068 static effect Effects 0.000 claims abstract description 176
- 238000004590 computer program Methods 0.000 claims abstract description 145
- 238000000034 method Methods 0.000 claims description 58
- 239000000284 extract Substances 0.000 claims description 16
- 238000000926 separation method Methods 0.000 claims description 3
- 238000000605 extraction Methods 0.000 claims 1
- 238000004891 communication Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- KDLHZDBZIXYQEI-UHFFFAOYSA-N Palladium Chemical compound [Pd] KDLHZDBZIXYQEI-UHFFFAOYSA-N 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000008672 reprogramming Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- QZXCCPZJCKEPSA-UHFFFAOYSA-N chlorfenac Chemical compound OC(=O)CC1=C(Cl)C=CC(Cl)=C1Cl QZXCCPZJCKEPSA-UHFFFAOYSA-N 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 229910052763 palladium Inorganic materials 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- 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/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- 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
-
- 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/109—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client
-
- 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
- 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/2103—Challenge-response
-
- 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/2153—Using hardware token as a secondary aspect
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Remote Sensing (AREA)
- Radar, Positioning & Navigation (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及至少部分计算机程序单元的加密,以保护所述计算机程序单元的执行,所述至少部分计算机程序单元的加密包括提取所述计算机程序单元的至少一个静态资源(步骤102),和使用密钥(314)对所述静态资源进行加密(步骤106);和所述加密静态资源的解密,包括在第一实体中得到使用第一密钥加密的所述静态资源(406),向第二实体提供所述加密的静态资源(步骤208),得到使用第一密钥加密的所述静态资源(406)(步骤218),得到第二密钥(422)(步骤216),使用所述第二密钥对所述加密的静态资源进行解密(步骤222),向第一实体提供所述静态资源(步骤228),和通过所述第一实体从第二实体得到所述静态资源(步骤210)。
Description
本发明通常涉及计算机程序代码的执行保护,尤其涉及通过使用动态实体对静态数据的加密和解密。
强执行保护方法可以利用连接至例如并口或者串口(诸如,PC的打印机端口或者USB(通用串行总线)端口)的所谓硬件加密狗(hardwaredongle),所述硬件加密狗是一种动态实体类型的实例。加密狗典型地是无源元件,但是包含了装载有数个加密/解密密钥的可编程存储器。可以在PC和加密狗之间交换信息。例如可以以下面两种方式使用这种加密狗:
1.用于软件执行的保护,在将被保护的软件周围产生外壳程序(shell program)。在产生外壳程序的过程中,根据来自加密狗的密钥对原软件全部或者部分加密,之后将该加密软件嵌入在外壳程序中。因而所产生的外壳程序是基于来自加密狗的密钥以及用于解密该软件的算法。当外壳程序启动时,从加密狗中检索密钥并提取加密软件,对所述加密软件进行解密,并运行原软件。在加密狗不存在的情况下,或者使用了包含不同密钥的不同加密狗时,解密失败。
2.同样用于软件的执行保护,可以使用进程的入口点取代原程序的入口点。提供逻辑函数,并且该逻辑函数从加密狗中检索密钥。基于检索到的密钥,布置复杂的逻辑以确定所述加密狗是否是正确的加密狗。在加密狗成功识别之后,函数调用使得原软件执行的原程序的入口点。
然而上述方法存在一些不足。
在PC和加密狗之间,不同通信会话的通信内容通常是相同的,这就意味着,通过对所述通信进行线路窃听就可能检索出协议以及密钥,那么随后就可能在不需要原加密狗的情况下以硬件形式或者软件形式模拟该加密狗。
在识别加密狗之后,就调用原程序的入口点,以原样在存储器中提供原程序。经验丰富的用户就能够将该程序写回可执行所述程序的一个便携式工具。
在加密狗校验代码中通常有一个或者数个if指令,能够通过使用反逻辑容易地替代该if指令。
此外,G.Hachez在2003年3月,Belgium,Louvain-La-Neuve,UCL的博士论文题目“适用于对软件水印和智能卡有贡献的电子商务的软件保护的对比研究(A comparative study of software protectiontools suited for E-commerce with contribution to softwarewatermarking and smart cards)”中讨论了在通用和硬件加密狗中的安全工具。
根据该文献,新近的硬件加密狗版本能够插入在USB端口,并且通常嵌入在智能卡的CPU中。这些版本包括能够对于每个质询(challenge)都返回不同值的微控制器。软件将通过质询定期地讯问加密狗,并验证答案的正确性。最先进的加密狗包含具有小量存储器的小微处理器。在这种情况下,软件的某些关键部分在加密狗中执行。
上面讨论的硬件加密狗版本的方法具有以下缺点。首先,存在能够成功移除被保护软件中的加密狗的所有校验的危险。第二,存在加密狗被入侵者模拟的危险。
因此,存在一种对于软件执行保护方法的需要,所述软件保护方法用于使得即使移除了动态实体(诸如软件中的加密狗)的校验之后,软件程序也不能执行。还存在一种对于软件保护方法的需要,所述软件保护方法不包括单个依赖于正确的实体是否存在的if-then指令。
本发明的目标是提供通过使用对所述计算机程序单元的静态资源的加密来对计算机程序单元的执行进行保护。
根据本发明第一方面,该目标可以通过一种对至少部分计算机程序单元进行加密以保护所述计算机程序单元执行的方法来实现,所述方法包括步骤,
提取所述计算机程序单元的至少一个静态资源;和
使用密钥对所述至少一个静态资源进行加密。
根据本发明的第二方面,该目标还可以通过一种对至少部分计算机程序单元加密以保护所述计算机程序单元执行的计算机程序加密装置来实现,所述计算机程序加密装置被设置成:
提取所述计算机程序单元的至少一个静态资源;和
使用密钥对所述至少一个静态资源进行加密。
根据本发明的第三方面,该目标还可以通过一种包括计算机可读介质的计算机程序产品来实现,所述计算机可读介质上具有计算机程序代码工具,以使当所述计算机程序代码工具装载在计算机中时计算机执行:
提取所述计算机程序单元的至少一个静态资源;和
使用密钥对所述至少一个静态资源进行加密。
根据本发明的第四方面,该目标还可以通过计算机程序单元来实现,所述计算机程序单元包括计算机程序代码工具,以使当所述计算机程序代码工具装载在计算机中时计算机执行:
提取所述计算机程序单元的至少一个静态资源;和
使用密钥对所述至少一个静态资源进行加密。
根据本发明的第五方面,该目标还可以通过一种包括有计算机可读介质的计算机程序产品来实现,所述计算机可读介质上具有计算机程序代码工具,所述计算机程序代码工具包括;
使用密钥加密的至少一个静态资源。
根据本发明的第六方面,该目标还可以通过一种包括计算机程序代码工具的计算机程序单元来实现,所述计算机程序代码工具包括:
使用密钥加密的至少一个静态资源。
根据本发明的第七方面,该目标还可以通过一种对至少部分计算机程序单元进行解密以执行所述计算机程序单元的方法来实现,所述方法包括步骤:
在第一实体中得到使用第一密钥加密的至少一个静态资源,
向第二实体提供所述至少一个加密的静态资源,和
通过所述第一实体从第二实体得到所述至少一个静态资源,此处已经通过使用第二密钥对根据第一密钥的加密进行解密。
根据本发明的第八方面,该目标还可以通过一种对至少部分计算机程序单元进行解密以执行所述计算机程序单元的方法来实现,所述方法包括步骤:
从第一实体得到至少一个加密的静态资源,所述至少一个静态资源已经通过使用第一密钥进行加密,
得到第二密钥,
通过使用所述第二密钥对所述至少一个加密的静态资源进行解密,和
向所述第一实体提供所述至少一个静态资源。
根据本发明的第九方面,该目标还可以通过对至少部分计算机程序单元解密以执行所述计算机程序单元的计算机程序解密装置来实现,所述计算机程序解密装置被设置成:
得到使用第一密钥加密的至少一个静态资源,
向第二实体提供所述至少一个加密的静态资源,和
从第二实体得到所述至少一个静态资源,此处已经通过使用第二密钥对根据第一密钥的加密进行解密。
根据本发明的第十方面,该目标还可以通过一种对至少部分计算机程序单元解密以执行所述计算机程序单元的计算机程序解密装置来实现,所述计算机程序解密装置被设置成:
从第一实体得到至少一个加密的静态资源,所述至少一个静态资源已经通过使用第一密钥进行加密,
得到第二密钥,
通过使用第二密钥对所述至少一个加密的静态资源进行解密,和
向第一实体提供所述至少一个静态资源。
根据本发明的第十一方面,该目标还可以通过一种包括计算机可读介质的计算机程序产品来实现,所述计算机可读介质上具有计算机程序代码工具,以使当所述计算机程序代码工具装载在计算机中时计算机执行:
在第一实体中得到使用第一密钥加密的至少一个静态资源,
向第二实体提供所述至少一个加密的静态资源,和
通过所述第一实体从第二实体得到所述至少一个静态资源,此处已经通过使用第二密钥对根据第一密钥的加密进行解密。
根据本发明的第十二方面,该目标还可以通过计算机程序单元来实现,所述计算机程序单元包括计算机程序代码工具,以使当所述计算机程序代码工具装载在计算机中时计算机执行:
在第一实体中得到使用第一密钥加密的至少一个静态资源,
向第二实体提供所述至少一个加密的静态资源,和
通过所述第一实体从第二实体得到所述至少一个静态资源,此处已经通过使用第二密钥对根据第一密钥的加密进行解密。
根据本发明的第十三方面,该目标还可以通过包括计算机可读介质的计算机程序产品来实现,所述计算机可读介质上具有计算机程序代码工具,以使得当所述计算机程序代码工具装载在计算机中时计算机执行:
从第一实体得到至少一个加密的静态资源,所述至少一个静态资源已经通过使用第一密钥进行加密,
在第二实体中得到第二密钥,
通过使用所述第二密钥对所述至少一个加密的静态资源进行解密,和
向第一实体提供所述至少一个静态资源。
根据本发明的第十四方面,该目标还可以通过计算机程序单元来实现,所述计算机程序单元包括计算机程序代码工具,以使得计算机执行:
从第一实体得到至少一个加密的静态资源,所述至少一个静态资源已经通过使用第一密钥进行加密,
在第二实体中得到第二密钥,
通过使用所述第二密钥对所述至少一个加密的静态资源进行解密,和
向第一实体提供所述至少一个静态资源。
本发明背后的总体思想在于,通过使用对所述计算机程序代码内部静态资源的计算机程序单元的加密来保护计算机程序代码的执行。在对所述加密的静态资源解密期间,该思想进一步依赖于两个实体的使用,其中所述两个实体之间的通信至少部分加密。
本发明具有以下优势:
1.通过对于所述计算机程序代码执行来讲是关键的至少一个静态资源进行加密提供了对计算机程序代码的执行保护。
2.解密过程要求第一和第二实体。
3.即使在移除了对于第二实体的需求之后,在第一实体内部,计算机程序代码仍不能执行。
从属权利要求的方向及其优势:
权利要求2针对于在所述计算机程序单元中存储至少一个加密的静态资源。该权利要求的优势在于,计算机程序单元的执行期间所需要的资源能够被加密。
权利要求3,11,18和23针对于公/私钥对的公钥和私钥的使用。其优势在于需要一个密钥用以解密通过另一密钥加密的数据。
权利要求4和12针对的是分别在计算机程序单元和计算机程序代码工具中使用公钥。这些权利要求能够使用对已经使用公钥加密的数据进行解密的安全私钥。
权利要求5针对于得到相对于公钥的私钥,并在与其中提供计算机程序单元的实体分离的实体中存储所述私钥。该权利要求通过使得两个实体分离具有极大地提高了执行安全保护的优势。
权利要求6针对于从计算机程序单元的位置提取至少一个静态资源,并在所述位置存储加密的资源。其优势在于首先不能得到源信息,其次通过加密资源的存储没有影响其它部分或者单元。
权利要求15和20针对于得到第三密钥和通过使用所述第三密钥对至少一个静态资源进行加密/解密。这些权利要求具有这样的优势,即由一个实体将发送至另一实体的静态资源可以使用所述第三密钥进行加密。
权利要求16和24针对于使用第三密钥,所述第三密钥是随机会话密钥。使用对称密钥的优势在于,相同的密钥可以用于加密和解密,这限制了所使用的密钥的数目。
权利要求17、21和22针对于进一步使用用于加密/解密第三密钥和至少一个加密的静态资源的第一密钥。其具有的优势在于,从一个实体发送至另一实体的第三密钥可以被加密,使得通过使用第三密钥能够提高静态数据的加密的安全性。
通过参考下文中描述的实施例,本发明的这些方面和其它方面将是显而易见的。
应当强调的是,说明书中使用术语“包括/包含”用于规定所陈述的特征、整数、步骤或者部件的存在,但是并不排除一个或多个其它特征、整数、步骤、部件或者其组合的附加或者存在。
结合附图通过阅读本发明的优选实施例的描述,将更加清晰地了解本发明,其中:
图1表示根据本发明的优选实施例的加密方法的流程图;
图2A表示根据本发明的优选实施例在具有计算机程序代码的装置中执行的解密方法的流程图;
图2B表示根据本发明的优选实施例的解密方法的流程图;
图3示意性地示出了根据本发明的程序代码的加密;
图4示意性地示出了根据本发明的被保护程序代码的解密;
图5示意性地示出了计算机和加密狗,在对加密数据的解密期间两个实体进行通信。
图6示出了涉及本发明的其上具有计算机程序代码工具的计算机程序产品。
本发明涉及通过对所述计算机程序代码的静态资源进行加密和解密对计算机程序代码执行的保护。
加密和解密使用公共密钥密码术结构,并要求存取被保护的计算机程序代码的源代码。
根据本发明的一个实施例,在对加密信息进行解密的过程中使用了两个不同的实体。图5表示本发明的这两个不同实体的一个实施例。诸如个人计算机52的计算机代表第一实体,而动态加密狗54代表第二实体。将这两个实体设置成在过程的解密步骤中发送/接收信息。
代替加密狗,可以采用安全芯片。该安全芯片可以集成在计算机平台中。
动态加密狗典型地配备有能够运行简单的对称和非对称加密/解密算法的小处理器。两个实体之间(此处为计算机和动态加密狗)的接口可以为USB(通用串行端口)、网络或者其它通信通道。计算机和动态加密狗之间的通信可以基于客户机-服务器模式。
在将被保护的计算机程序代码投放至市场之前,通过使用动态加密狗的公钥提取和加密至少部分静态数据,并在源代码中替代为加密数据。一旦编辑和运行计算机程序代码,在使用计算机程序代码中的数据之前只有与私钥对应的加密狗可以解密数据。
如下所述,可以独立于所述计算机典型地在任何地方执行加密。正如本领域技术人员公知的,信息的加密和解密的彼此关系类似于钥匙和锁的关系。此处,执行加密过程以建立计算机和加密狗之间的通信通道以用于解密所加密的数据。
根据本发明的一个实施例,在已经加载了解密程序代码的计算机内部开始解密过程,并通过通信信道将信息发送至加密狗来继续该解密过程,此处解密过程进一步继续,接着加密狗将信息发送回计算机,在该实体中计算机代码最终能够被执行。
现在将参考图1和图3开始描述本发明,图1表示至少部分计算机程序单元的加密的流程图,图3示意性地示出了计算机程序代码的加密。该加密典型地在不同于上述两个实体的第三实体中执行。
对于加密程序代码,从原程序代码302中提取至少一些静态数据306(步骤102)。因而还生成了所述原程序代码302的剩余部分,即没有了所提取静态数据306的原程序代码302,此处以程序代码304表示。在该实施例中,原程序的静态数据可以为任何类型,例如,字符串、定义、初始变量值、图像、常数、格式相关静态数据或者其它静态资源。
产生已提取的静态数据306、加密/解密密钥对形式(公钥Kpb 314,私钥Kpr 316)的第一和第二密钥(步骤104)。正如本领域技术人员公知的,两个密钥中的任一个都可以用于对数据加密,同样,其任一个都可以用于对数据解密,但是一旦选择了一个密钥,例如用于对数据加密,那么仅另一个可以用于对所述加密数据进行解密。
此处,通过使用公钥Kpb 314作为加密密钥来加密静态数据306(步骤106),以产生使用所述公钥加密的静态数据(Static Data)Kpb 310。为提供上述在第一实体(计算机)和第二实体(加密狗)之间的通信信道,改变程序代码304(步骤108)以得到更改的程序代码308。因此,在数据的解密期间将使用该通信通道,这将在下面描述。
根据本发明的这个实施例,使用所述数据的加密副本在程序代码的特定位置替换步骤102中被提取的每块静态数据。通过在原程序代码中存储加密数据执行所述替换(步骤110),优选(当并不是必须)非加密数据出现在原程序代码中的位置(步骤102)。已经在程序代码中存储了加密静态数据之后,在程序代码中存储公钥Kpb(步骤112),以得到被保护的程序代码312(步骤116)。
在加密狗318中存储与所述公钥Kpb 314相对应的私钥Kpr 306。
这样得到的被保护的程序代码312因而包含多块被加密的静态数据,所述被加密的静态数据有效地阻止了程序代码的执行而没有预先解密所述静态数据。
显而易见的是,仅仅程序代码单元的特定部分,即对于程序的执行至关紧要的部分需要加密。这意味着,为禁止计算机程序代码的整个部分起作用,并非所有的静态数据都需要被加密。
通过解密计算机程序代码块,诸如单独通过毁损单个if-then语句而不能执行计算机程序代码。这同外壳状(shell-like)加密方法相反,在外壳状加密方法中,留下大部分程序代码未加密,而加密阻止所述程序代码执行的外壳。通过毁损单个外壳,使得外壳内的程序能够执行。
在下面,将描述当执行了加密程序代码时,对加密计算机程序代码的解密。
如上所述,在不用存取加密狗的情况下,为了通过未授权方来阻止程序代码的执行,对关键程序代码单元加密就足够了。不具备执行程序代码的密钥部分的能力就没有实现程度代码的功能,至少没有全部实现。
然而当仅仅关键部分加密时,能够执行未加密部分。一旦执行了程序代码,下面描述的方法用于每块程序代码单元。对于每块程序代码单元来讲,启动通信会话,在计算机和加密狗之间的通信信道上进行信息通信。此外,对于每个这样的会话,产生会话密钥,这将在下面更加详细地描述。
下面,参考图2A、2B、4和5对当执行计算机程序代码时解密静态数据做更加详细的描述。
根据本发明的实施例,在计算机中开始被保护计算机程序代码402的运行。在被保护计算机程序代码中,计算机对使用从来自图3中的公钥Kpb 314加密的静态数据(Static Data)Kpb 406进行定位。同样,计算机在被保护的计算机程序代码中检索所存储的公钥Kpb 408。
在已经遇到被加密的静态数据之后,产生随机会话密钥形式的第三密钥Ks 404(步骤202)。
然后将被加密的静态数据406与所产生的随机会话密钥Ks 406结合(步骤204),在此之后通过使用公钥406对被加密的静态数据406和会话密钥Ks404的结合进行加密(步骤206),从而产生被加密静态数据406和所述会话密钥Ks404的加密联合(Static Data(Kpb+Ks))Kpb 410。
在已经生成了该加密联合410之后,将所述加密联合410发送至加密狗54(步骤208)。在图4中,竖直虚线A表示计算机52和加密狗54之间的接口。
通过使用计算机的端口或者使用任何类型的网络上的连接(例如英特网)可将加密狗连接至计算机。
随后,在步骤210中,计算机52从加密狗54=412中检索静态数据(Static Data)Ks 430,所述静态数据(Static Data)Ks 430由来自图3中的公钥kpb 314解密,但是使用随机会话密钥Ks 426加密。然后计算机使用会话密钥Ks 432对加密的静态数据进行解密(步骤212)。
当随机会话密钥为对称密钥时,使用相同的密钥执行加密和解密。这意味着随机会话密钥426、会话密钥432和随机会话密钥Ks404为相同密钥。
一旦解密,就得到静态数据434(步骤214),在程序代码436的执行期间在请求时使用静态数据434。
上面描述了计算机中对加密静态数据进行解密的方法。现在在下面描述在加密狗中对加密静态数据进行解密的方法。
根据本发明的该实施例,在加密静态数据的方法中,加密狗54首先得到图3中的私钥Kpr 316(步骤216)。其次,加密狗接收1)使用公钥加密的静态数据406和2)会话密钥Ks404的加密联合((Static Data)Kpb+Ks)Kpb 410(步骤218),所述加密联合使用公钥Kpb 408进行加密。从加密狗54中,提取所述加密联合((Static Data)Kpb+Ks)Kpb 414和私钥Kpr 416。现在,通过使用私钥416,对加密联合414解密(步骤220),以产生使用公钥Kpb408加密的静态数据(Static Data)Kpb 418和会话密钥Ks420。紧接着该加密,再次通过使用私钥Kpr 422对加密的静态数据418进行解密(步骤222),所述私钥Kpr 422与私钥416所指的密钥相同。在该解密时,得到解密的静态数据424(步骤224)。
从而加密狗已得到解密的静态数据。现在再次对解密的静态数据424进行加密(步骤226),但是在该步骤使用会话密钥426,该密钥从对加密联合的解密中得到(步骤220)。
因此所得到的是从使用图3中的公钥Kpb 314执行的初始加密中解密的静态数据,但是通过使用会话密钥426加密。现在将该加密的静态数据(Static Data)Ks 428)经由图4中由B表示的加密狗-计算机接口从加密狗54发送至计算机52(步骤228)。
根据本发明的一个实施例,该接口B为加密狗-计算机USB接口。然而作为替代该接口可以包含诸如英特网的网络、具有一个或者多个其它计算机的另一网络或者任何类型的通信信道。
图6示出了其上存储有计算机程序代码工具的计算机程序产品62。该计算机程序产品可以为任何类型,例如压缩光盘(CD)、软盘、数字多功能光盘(DVD)、固态存储器或者硬盘。
对于计算机程序代码的执行保护可以用于阻止对任何硬件的未授权存取,通过所述计算机程序代码或者以依赖于所述计算机程序代码的特定方式控制所述硬件。使用适合的动态实体,即适合的加密狗,根据授权存取所述硬件。
本发明可以以多种方式进一步改变,如下所述。
上述给出的实施例的一个可替代方案是利用安全芯片作为第二实体。因此,应当理解的是安全芯片和所述计算机是两个分离的实体,即使其中一个可能位于另一个之内。包括安全芯片的安全平台的一个实例是TCPA/Palladium平台,该平台非常适合于在该可替代实施例中使用。
在本发明的另一实施例中,通过使用另一计算机程序代码的类型的动态实体能够保护计算机程序代码执行。因此,这是其中安全芯片或者加密狗用作对被加密静态资源解密的实施例中的可替代方案。
在没有背离本发明保护范围的情况下,在一个不同的实施例中,对静态数据加密的方法的步骤顺序可能改变,一些步骤甚至可能被删除。例如,改变程序代码的步骤(步骤108)可以在产生公钥和私钥的步骤(步骤104)之前执行。
在本发明的另一实施例中,对静态数据解密的方法包括通过计算机将加密数据发送至加密狗,其中通过使用私钥对该数据进行解密,解密后的数据进一步返回至计算机。在该实施例中,没有使用会话密钥。
在本发明的另一实施例中,对静态数据解密的方法包括通过计算机将加密数据和会话密钥发送至加密狗。加密狗对静态数据解密,并使用会话密钥对静态数据加密并将加密后的静态数据返回至计算机。该实施例并未使用公钥对会话密钥和加密静态数据的联合进行加密。
在本发明的对静态数据解密方法的另一实施例中,通过分别使用公钥对所述会话密钥和加密静态数据进行加密。因此不存在加密的会话密钥和加密静态数据的联合。
在上述实施例的可替代方案中,仅仅通过计算机对会话密钥进行加密,而将已经加密的静态数据照原样发送至加密狗。
在再一实施例中,计算机程序解密装置为包括数个计算机的分布式计算机装置。
在本发明的再一实施例中,在计算机程序单元中的特定位置提取的静态数据存储在相同或者不同计算机程序单元的不同位置。从计算机程序单元中提取未加密的静态数据,并且不再能够在该位置得到未加密的静态数据。
在再一实施例中,在对加密的静态数据的解密期间,根据来自程序代码的命令通过计算机执行会话密钥的生成。
在再一实施例中,在对加密的静态数据的解密期间,在遇到新的加密静态数据块之前通过程序代码执行会话密钥的生成。
在再一实施例中,第一实体为任何类型的计算机,诸如PDA(个人数字助理)、掌上计算机、膝上计算机、个人计算机、游戏计算机、计算机服务器或类似物。
应当注意的是,上述实施例说明了本发明,而不是限制了本发明,在并不背离所附的权利要求书的范围的情况下,本领域的技术人员可以设计出许多可替代的实施例。
在权利要求书中,放置在括号之间的任何附图标记不应理解为是对权利要求的限制。词语“包括”并不排除权利要求中列出的元件和步骤以外的其它元件和步骤的存在。元件之前的词语“一”或者“一个”并不排除多个这种元件存在的可能。本发明可以通过包含数个不同元件的硬件来执行,也可以利用适当编程的计算机来实现。单个处理器或者其它(可编程)单元也可实现权利要求中记载的数个工具的功能。
在装置权利要求中,列举数个工具,数个这些工具可以通过一个或者相同项的硬件来实现。在不同从属权利要求中记载的特定方法并不表示使用这些方法的结合就不具有优越性。
Claims (30)
1.一种对至少部分计算机程序单元进行加密以保护所述计算机程序单元执行的方法,包括步骤:
提取所述计算机程序单元的至少一个静态资源(306)(步骤102),和
使用密钥(314)对所述至少一个静态资源(306)进行加密(步骤106)。
2.根据权利要求1所述的加密方法,进一步包括步骤:
在所述计算机程序单元中存储至少一个加密静态资源(310)(步骤110)。
3.根据权利要求1所述的加密方法,其中密钥(314)为公/私钥对中的公钥。
4.根据权利要求3所述的加密方法,进一步包括步骤:
在计算机程序单元中存储公钥(314)(步骤112)。
5.根据权利要求3所述的加密方法,进一步包括步骤:
得到相应的私钥(316),和
在与其中提供了计算机程序单元的实体分离的实体(318)中存储所述私钥(316)(步骤114)。
6.根据权利要求1所述的加密方法,其中提取步骤(步骤102)包括从程序单元中的特定位置提取至少一个静态资源(306),存储步骤(步骤110)包括在所述位置存储加密的静态资源(310)。
7.一种对至少部分计算机程序单元加密以保护所述计算机程序单元执行的计算机程序加密装置,所述计算机程序加密装置被设置成:
提取所述计算机程序单元(302)的至少一个静态资源(306)(步骤106),和
使用密钥(314)对所述至少一个静态资源(306)进行加密(步骤106)。
8.包括计算机可读介质的计算机程序产品,在计算机可读介质上具有计算机程序代码工具,使得当所述程序代码工具装载在计算机中时计算机执行:
提取所述计算机程序单元(302)的至少一个静态资源(306)(步骤102),和
使用密钥(314)对所述至少一个静态资源(306)进行加密(步骤106)。
9.计算机程序单元,包括计算机程序代码工具,使得当所述计算机程序代码工具装载在计算机中时计算机执行:
提取所述计算机程序单元(302)的至少一个静态资源(306)(步骤102),和
使用密钥(314)对所述至少一个静态资源(306)进行加密(步骤106)。
10.包括计算机可读介质的计算机程序产品,所述计算机可读介质上具有计算机程序代码工具,所述计算机程序代码工具包括:
使用密钥加密的至少一个静态资源(310)。
11.根据权利要求10所述的计算机程序产品,其中所述密钥(314)为公/私钥对的公钥。
12.根据权利要求11所述的计算机程序产品,其中所述计算机程序代码工具进一步包括:
所述公钥(314)。
13.包括计算机程序代码工具的计算机程序单元,所述计算机程序代码工具包括:
使用密钥加密的至少一个静态资源(310)。
14.对至少部分计算机程序单元进行解密以执行所述计算机程序单元(402)的方法,包括步骤:
在第一实体(52)中,得到使用第一密钥(314)加密的至少一个静态资源(406),
向第二实体(54)提供所述至少一个加密的静态资源(406)(步骤208),和
通过所述第一实体(52)从第二实体(54)得到所述至少一个静态资源(430)(步骤210),此处根据第一密钥(314)的加密已经使用第二密钥(422)解密。
15.根据权利要求14所述的解密方法,进一步包括步骤:
得到第三密钥(步骤202),
通过使用第三密钥对所述至少一个加密的静态资源(430)进行解密(步骤212),
其中所述提供步骤(步骤208)包括向第二实体(54)提供第三密钥(404)和所述至少一个加密的静态资源(406,410),通过所述第一实体(52)从第二实体(54)得到所述至少一个静态资源(430)的步骤(步骤210)包括得到使用第三密钥(426)加密的至少一个静态资源(430),以执行计算机程序单元。
16.根据权利要求14所述的解密方法,其中第三密钥(404,432)为随机会话密钥。
17.根据权利要求14所述的解密方法,进一步包括步骤:
得到第一密钥(408),
通过使用所述第一密钥(408)对第三密钥(408)和所述至少一个加密的静态资源(406)进行加密(步骤206),
其中向第二实体(54)提供所述至少一个加密的静态资源(410)的步骤(步骤208)包括提供全部使用第一密钥(408)加密(410)的所述第三密钥(404)和所述至少一个加密的静态资源(406)。
18.根据权利要求14所述的解密方法,其中第一密钥(314,408)以及第二密钥(316)分别为公/私钥对的公钥和私钥。
19.对至少部分计算机程序单元进行解密以执行所述计算机程序单元的方法,包括步骤:
从第一实体(52)得到至少一个加密的静态资源(414)(步骤218),该至少一个静态资源(306)已经通过使用第一密钥(314)进行加密,
得到第二密钥(416)(步骤216),
通过使用所述第二密钥(416)对所述至少一个加密的静态资源(418)进行解密(步骤222),和
向所述第一实体(52)提供所述至少一个静态资源(424)(步骤228)。
20.根据权利要求19所述的解密方法,进一步包括步骤:
从第一实体(52)得到第三密钥(420),
通过使用第三密钥(426)对所述至少一个静态资源(424)进行解密,
其中向所述第一实体(52)提供所述至少一个静态资源(428)的步骤(步骤228)包括提供使用第三密钥(426)加密的所述至少一个静态资源(428)。
21.根据权利要求20所述的解密方法,其中至少一个加密静态资源(406)和第三密钥(404)得到加密,所述加密使用第一密钥(314)执行。
22.根据权利要求21所述的解密方法,进一步包括步骤:
使用第二密钥(416)对加密(414)的至少一个加密静态资源(406)和第三密钥(404)进行解密(步骤220)。
23.根据权利要求19所述的解密方法,其中第一密钥(314)以及第二密钥(416,422)分别为公/私钥对的公钥和私钥。
24.根据权利要求19所述的解密方法,其中第三密钥(420,426)为随机会话密钥。
25.对至少部分计算机程序单元(402)解密以执行所述计算机程序单元的计算机程序解密装置(52),所述计算机程序解密装置被设置成:
得到使用第一密钥(314)加密的至少一个静态资源(406),
向第二实体(54)提供所述至少一个加密的静态资源(406)(步骤208),和
从第二实体(54)得到所述至少一个静态资源(430)(步骤210),此处已经通过使用第二密钥(422)对根据第一密钥(314)的加密进行解密。
26.对至少部分计算机程序单元解密以执行所述计算机程序单元的计算机程序解密装置(54),所述计算机程序解密装置被设置成:
从第一实体(52)得到至少一个加密的静态资源(414)(步骤218),该至少一个静态资源(414)已经通过使用第一密钥(314)进行加密,
得到第二密钥(416)(步骤216),
通过使用第二密钥(422)对所述至少一个加密的静态资源(418)进行解密(步骤222),和
向第一实体(52)提供所述至少一个静态资源(424)(步骤228)。
27.包括计算机可读介质的计算机程序产品,所述计算机可读介质上具有计算机程序代码工具,使得当所述计算机程序代码工具装载在计算机中时计算机执行:
在第一实体(52)中得到使用第一密钥(314)加密的至少一个静态资源(406),
向第二实体(54)提供所述至少一个加密的静态资源(406)(步骤208),和
通过所述第一实体(52)从第二实体(54)得到所述至少一个静态资源(430)(步骤210),此处已经通过使用第二密钥(422)对根据第一密钥(314)的加密进行解密。
28.计算机程序单元,包括计算机程序代码工具,使得当所述计算机程序代码工具装载在计算机中时计算机执行:
在第一实体(52)中得到使用第一密钥(314)加密的至少一个静态资源(406),
向第二实体(54)提供所述至少一个加密的静态资源(406)(步骤208),和
通过所述第一实体(52)从第二实体(54)得到所述至少一个静态资源(430)(步骤210),此处已经通过使用第二密钥(422)对根据第一密钥(314)的加密进行解密。
29.包括计算机可读介质的计算机程序产品,所述计算机可读介质上具有计算机程序代码工具,使得当所述程序代码工具装载在计算机中时计算机执行:
从第一实体(52)得到至少一个加密的静态资源(414)(步骤218),该至少一个静态资源(414)已经通过使用第一密钥(314)进行加密,
在第二实体(54)中得到第二密钥(416)(步骤216),
通过使用第二密钥(422)对所述至少一个加密的静态资源(418)进行解密(步骤222),和
向第一实体(52)提供所述至少一个静态资源(424)(步骤228)。
30.计算机程序单元,包括计算机程序代码工具,以使计算机执行:
从第一实体(52)得到至少一个加密静态资源(414)(步骤218),该至少一个静态资源(414)已经通过使用第一密钥(314)进行加密,
在第二实体(54)中得到第二密钥(416)(步骤216),
通过使用第二密钥(422)对所述至少一个加密的静态资源(418)进行解密(步骤222),和
向第一实体(52)提供所述至少一个静态资源(424)(步骤228)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP03104884 | 2003-12-22 | ||
EP03104884.6 | 2003-12-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1898623A true CN1898623A (zh) | 2007-01-17 |
Family
ID=34717217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004800383215A Pending CN1898623A (zh) | 2003-12-22 | 2004-12-06 | 使用动态实体的软件执行保护 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20070198857A1 (zh) |
EP (1) | EP1700181A1 (zh) |
JP (1) | JP2007515723A (zh) |
KR (1) | KR20060127007A (zh) |
CN (1) | CN1898623A (zh) |
WO (1) | WO2005064433A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103797489A (zh) * | 2011-03-21 | 2014-05-14 | 耶德托公司 | 用于安全地将程序执行绑定到且节点锁定到受信任的签名授权机构的系统和方法 |
CN108011879A (zh) * | 2017-11-30 | 2018-05-08 | 广州酷狗计算机科技有限公司 | 文件加密、解密的方法、装置、设备和存储介质 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8650127B1 (en) * | 2006-01-06 | 2014-02-11 | Apple Inc. | Digital rights management for computer program code |
US20080229115A1 (en) * | 2007-03-16 | 2008-09-18 | Microsoft Corporation | Provision of functionality via obfuscated software |
US9274923B2 (en) * | 2008-03-25 | 2016-03-01 | Wind River Systems, Inc. | System and method for stack crawl testing and caching |
JP5356718B2 (ja) * | 2008-04-22 | 2013-12-04 | 株式会社 エヌティーアイ | 電子鍵システム |
US9177488B2 (en) * | 2008-08-11 | 2015-11-03 | International Business Machines Corporation | Method, system and program product for securing data written to a storage device coupled to a computer system |
KR101224717B1 (ko) * | 2008-12-26 | 2013-01-21 | 에스케이플래닛 주식회사 | 소프트웨어 라이센스 보호 방법과 그를 위한 시스템, 서버,단말기 및 컴퓨터로 읽을 수 있는 기록매체 |
US10944866B2 (en) | 2011-02-15 | 2021-03-09 | David Goren | Systems and methods of transferring user information to different devices |
US8676258B2 (en) * | 2011-02-15 | 2014-03-18 | David Goren | Systems and methods of transferring user information to different devices |
EP2506174B1 (en) | 2011-03-30 | 2019-01-09 | Irdeto B.V. | Enabling a software application to be executed on a hardware device |
EP2629223A1 (en) * | 2012-02-14 | 2013-08-21 | Thomson Licensing | System, devices and methods for collaborative execution of a software application comprising at least one encrypted instruction |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NO302388B1 (no) * | 1995-07-13 | 1998-02-23 | Sigurd Sigbjoernsen | Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse |
JPH10303880A (ja) * | 1997-05-01 | 1998-11-13 | Digital Vision Lab:Kk | サービス提供システム |
KR100748867B1 (ko) * | 1999-09-03 | 2007-08-13 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 기록된 공개 자료로부터 마스터 키의 복구 |
AU2001243365A1 (en) * | 2000-03-02 | 2001-09-12 | Alarity Corporation | System and method for process protection |
US7380120B1 (en) * | 2001-12-12 | 2008-05-27 | Guardian Data Storage, Llc | Secured data format for access control |
US6782477B2 (en) * | 2002-04-16 | 2004-08-24 | Song Computer Entertainment America Inc. | Method and system for using tamperproof hardware to provide copy protection and online security |
-
2004
- 2004-12-06 WO PCT/IB2004/052674 patent/WO2005064433A1/en not_active Application Discontinuation
- 2004-12-06 JP JP2006544631A patent/JP2007515723A/ja active Pending
- 2004-12-06 EP EP04801471A patent/EP1700181A1/en not_active Withdrawn
- 2004-12-06 CN CNA2004800383215A patent/CN1898623A/zh active Pending
- 2004-12-06 KR KR1020067012376A patent/KR20060127007A/ko not_active Application Discontinuation
- 2004-12-06 US US10/596,554 patent/US20070198857A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103797489A (zh) * | 2011-03-21 | 2014-05-14 | 耶德托公司 | 用于安全地将程序执行绑定到且节点锁定到受信任的签名授权机构的系统和方法 |
CN103797489B (zh) * | 2011-03-21 | 2017-12-12 | 爱迪德技术有限公司 | 用于安全地将程序执行绑定到且节点锁定到受信任的签名授权机构的系统和方法 |
CN108011879A (zh) * | 2017-11-30 | 2018-05-08 | 广州酷狗计算机科技有限公司 | 文件加密、解密的方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP1700181A1 (en) | 2006-09-13 |
US20070198857A1 (en) | 2007-08-23 |
WO2005064433A1 (en) | 2005-07-14 |
JP2007515723A (ja) | 2007-06-14 |
KR20060127007A (ko) | 2006-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1280737C (zh) | 移动存储设备与读写识别设备的安全认证方法 | |
CN1122213C (zh) | 给对象签名和签章的方法和设备 | |
CN1276363C (zh) | 借助半导体存储装置实现数据安全存储和算法存储的方法 | |
CN1602600A (zh) | 内容处理装置与内容保护程序 | |
CN101040275A (zh) | 内容加密方法、系统和利用该加密方法通过网络提供内容的方法 | |
CN1716220A (zh) | 多重任务执行系统 | |
CN1961370A (zh) | 基于数字权限管理重放内容的方法和设备及便携式存储器 | |
CN1860471A (zh) | 数字权限管理结构、便携式存储装置以及使用该便携式存储装置的内容管理方法 | |
CN1791111A (zh) | 通过多接口实现安全性的方法和装置 | |
CN1745377A (zh) | 使用隐含中间密钥来认证软件的系统和方法 | |
CN1655495A (zh) | 用于以强配对将安全密钥传送到目标用户的系统和方法 | |
CN1934564A (zh) | 使用证书撤销列表进行数字权限管理的方法和设备 | |
US20130177153A1 (en) | Using file metadata for data obfuscation | |
CN1914849A (zh) | 受信移动平台体系结构 | |
CN1677922A (zh) | 保密可执行编码的系统和方法 | |
CN101034424A (zh) | 一种数据安全存储系统和装置及方法 | |
CN1914603A (zh) | 访问认证方法、访问认证程序、信息处理单元以及记录介质 | |
CN1898624A (zh) | 在使用授权证书时维护私密性 | |
CN1960363A (zh) | 一种利用网络实现信息安全设备远程更新的方法及装置 | |
CN1898623A (zh) | 使用动态实体的软件执行保护 | |
CN1422399A (zh) | 用于安全地存储保密信息的系统和方法,在这种系统中使用的设备与服务器和有关数字内容分布的方法 | |
US20100095132A1 (en) | Protecting secrets in an untrusted recipient | |
CN1725196A (zh) | 一种计算机数据的加密保护及读写控制方法 | |
CN1906622A (zh) | 机密信息处理方法、机密信息处理装置及内容数据再现装置 | |
CN105468940A (zh) | 软件保护方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned | ||
C20 | Patent right or utility model deemed to be abandoned or is abandoned |