CN108476198B - 用于执行计算机程序的方法和*** - Google Patents
用于执行计算机程序的方法和*** Download PDFInfo
- Publication number
- CN108476198B CN108476198B CN201680054703.XA CN201680054703A CN108476198B CN 108476198 B CN108476198 B CN 108476198B CN 201680054703 A CN201680054703 A CN 201680054703A CN 108476198 B CN108476198 B CN 108476198B
- Authority
- CN
- China
- Prior art keywords
- computer
- sending
- operand
- obfuscated
- operations
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000004590 computer program Methods 0.000 title claims abstract description 33
- 238000006243 chemical reaction Methods 0.000 claims description 15
- 230000005540 biological transmission Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 62
- 239000012634 fragment Substances 0.000 description 24
- 238000000638 solvent extraction Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 19
- 230000004044 response Effects 0.000 description 19
- 238000004364 calculation method Methods 0.000 description 14
- 238000013507 mapping Methods 0.000 description 14
- 238000007792 addition Methods 0.000 description 8
- 230000011218 segmentation Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 7
- 239000000654 additive Substances 0.000 description 6
- 230000000996 additive effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 239000013256 coordination polymer Substances 0.000 description 6
- 230000000873 masking effect Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000035772 mutation Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0407—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- 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/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/18—Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供用于在不受信任的计算机上执行私人计算机程序的方法。本发明还提供通过本发明的方法所产生的产品以及被使用来执行本发明的方法的设备。
Description
相关申请的交叉引用
本申请要求2015年7月21日提交的美国申请14/804,713的优先权,其全部内容在此参考并入。
发明领域
本公开的发明涉及计算安全领域。
背景技术
在远程计算机程序执行中的安全性是一场持续的战斗,特别是最近云网络和扩展的企业网络的激增,允许用户无拘无束地接入到计算机的大型网络。在多个计算机上的程序执行的组合能力和速度是有利的,但也可能具有被窥视的风险。任何的或所有的远程计算机都可能处在恶意用户或攻击者的控制下,泄漏珍贵的保密信息。
因此,需要一种在不受信任的一个或多个计算机上执行程序的方法和***,这样,保持所执行的程序和数据的私密性,免受对所述不受信任的计算机具有完全访问能力的攻击者的入侵。本发明针对以上的和其它重要的需求。
发明内容
本发明提供用于执行计算机程序的方法,所述方法包括:将计算机程序划分成一系列运算,所述计算机程序位于被连接到至少一个其它计算机的受信任的计算机上;将所述一系列运算中的每个运算连同伴随指令一起发送到所述至少一个其它计算机,所述伴随指令用来计算相应的运算的结果,并且将所述结果转发到另一个计算机;以及在所述受信任的计算机处,接收所述计算机程序的计算结果。
本发明还提供用于执行计算机程序的***。所述***可包括通信地连接到至少一个其它计算机的至少一个受信任计算机。所述至少一个受信任计算机中的第一受信任计算机具有被存储在其上的计算机指令,所述计算机指令在被执行期间使得所述***进行包括程序执行过程的运算。所述过程可包括:将所述第一受信任的计算机上的计算机程序划分成一系列运算;将所述一系列运算中的每个运算连同伴随指令一起发送到所述至少一个其它计算机,其中所述伴随指令用来计算相应运算的结果,并且将所述结果转发到另一个计算机;以及在所述第一受信任的计算机处,接收所述计算机程序的计算结果。
上述总体说明和以下的具体实施方式仅仅是示例性和说明性的,并不是对由所附权利要求限定的本发明的限制。本领域技术人员在查看如这里提供的本发明的详细说明后将明白本发明的其它方面。
附图说明
结合附图阅读上述发明内容以及以下的具体实施方式,将有助于更好的理解。为了说明本发明,在附图上显示本发明的示例性实施例;然而,本发明不限于所公开的具体的方法、组成和设备。另外,附图并不一定按比例画出。在附图中:
图1示出了用于划分联网的计算机上的程序的本发明的实施例;
图2示出了用于分离的设备驱动器运算的本发明的实施例;
图3示出了用于代码和数据的碎片的、对称密钥加密和解密运算的本发明的实施例;
图4示出了用于混淆碎片的本发明的实施例;
图5示出了用于分割电路门运算的本发明的实施例;
图6示出了用于分割另一个电路门运算的本发明的实施例;
图7示出了用于使用额外的混淆层对电路门运算进行分割的本发明的实施例;
图8示出了用于在计算机网络上分割任意的门运算的电路的本发明的实施例;
图9示出了用于分割带有附加的加密运算的本发明的实施例;
图10示出了典型的设备驱动器运算;
图11示出了关于分离的设备驱动器运算的本发明的实施例;
图12示出了用于分割数学运算的本发明的实施例;
图13示出了用于分割另一个数学运算的本发明的实施例;
图14示出了用于分割转换加密函数的本发明的实施例;
图15示出了用于分割另一个转换加密函数的本发明的实施例;
图16示出了用于分割加密的比较运算的本发明的实施例;
图17示出了用于分割另一个加密的比较运算的本发明的实施例;
图18示出了用于分割数学的混淆转换函数的本发明的实施例;以及
图19示出了用于分割另一个数学的混淆转换函数的本发明的实施例。
具体实施方式
通过结合组成本公开的一部分的附图和例子,参考以下的具体实施方式,可以更容易理解本发明。应当看到,本发明不限于这里描述和/或示出的具体的设备、方法、应用、条件或参数,以及这里使用的术语仅仅为了示例性地描述特定的实施例,而不意在限制所要求保护的发明。另外,正如在说明书及权利要求书中所使用的,单数形式的“一”或“一个”包括多数,以及对特定的数字值的引用至少包括该特定的数值,除非上下文有明确的相反表述。正如在这里使用的,术语“多个”是指多于一个的。当表示一个数值范围时,另一个实施例包括从一个特定的数值和/或到另一个特定的数值。类似地,当通过使用“大约”作为修饰词表示数值是近似时,应当理解,特定的数值会形成另一个实施例。所有的范围都是包括本数的和可组合的(combinative)。
将会看到,文中为了清楚起见在不同的实施例的上下文中描述的本发明的某些特性,也可以在单个实施例中被组合而提供。相反,为了简洁起见在单个实施例的上下文中描述的本发明的各种特性,也可以分开地或以任何子组合(subcombination)形式被提供。而且,对在范围中阐述的数值的引用包括在该范围内的每个数值。
这里公开的方案包括用于在被连接到至少一个其它计算机的受信任的计算机上执行计算机程序的方法和能够执行所述方法的***。所述方法包括:将计算机程序划分成一系列运算;将所述一系列运算中的每个运算发送到所述至少一个其它计算机,每个运算具有伴随指令,所述伴随指令让接收所述运算的各个计算机计算所述运算,然后将该计算的结果转发到另一个计算机;以及在所述受信任的计算机处接收所述计算机程序的计算结果。加密和混淆可被用来为所述方法增加安全性。
受信任的计算机是已知没有被攻击者侵害的计算机,并且可能需要所述至少一个其它计算机提供计算资源或其它资源。在非限制性例子中,所述至少一个其它计算机可以是受信任的或不受信任的,是企业网络的一部分、云的一部分、移动设备,通常是多个计算机的一部分或是被通信地连接到受信任计算机的、但不包括受信任的计算机的、任何其它的计算机或计算机组。关于“云”,所述云可以是受信任的或不受信任的,跨越多个管理域,跨越多个商业上的不同设施,或是技术上熟知的任何组合或其它情境。计算机可以通过有线连接(电的或光的)、无线连接和/或允许计算机通信数据的任何类型的连接被联网在一起。计算机还可以包括虚拟机或虚拟机组。
将所述计算机程序划分成一系列运算和将所述一系列运算中的每个运算连同伴随指令一起发送到所述至少一个计算机可被称为“分割(shredding)”,每个运算被称为“碎片(shred)”。分割过程将程序转换成一系列碎片,其中每个碎片在所述至少一个计算机上执行一部分程序,并且与其它碎片通信,这样,全体碎片执行完整的计算机程序。在一个实施例中,分割过程通过随机选择计算机的方式将所述碎片放置在联网的计算机上,这样,每个计算机执行中它的碎片中指定的部分计算,然后将所述计算的其余部分转发到下一个计算机。每个计算机只知道它从哪里接收碎片,碎片内应该计算什么东西,以及它的碎片的结果转发到什么地方。如果联网的计算机的数目足够大,则可能的攻击者不能同时监视所有的计算机并把所述分割的计算接合在一起。
图1示出了在受信任的计算机和云计算机上通过使用分割过程的实施例而执行的示例性程序。程序100包含四部分:输入、函数“f”、函数“g”和输出。在受信任的计算机上执行的分割器程序分析用于这个程序的二进制可执行性(binary executable),发现所述四个部分,因此产生四个碎片,它们也是二进制可执行形式。输入和输出运算分别在受信任的计算机1(TC1)110和受信任的计算机4(TC4)140上被执行。TC1 110和TC4 140由分割器选择,因为它们被连接到需要的输入和输出设备。函数f和g在计算上是昂贵的,因此分别在云计算机2(CC2)120和云计算机3(CC3)130上执行。CC2 120和CC3 130是由分割器从可用的机器库中随机地选择的。TC1 110接收输入,并且将所述输入赋值给变量x,然后将它转发到CC2 120。CC2 120接收变量x,并计算函数“f(x)”,将所述结果赋值到变量y,然后将它转发到CC3 130。CC3 130接收变量y,并且计算函数“g(x)”,将所述结果赋值到变量z,然后将它转发到TC4 140。TC4 140接收变量z并将它输出。
正如在图1上可看到的,所述一系列运算中的某些运算可能需要来自受信任的计算机的输入和/或输出(I/O)交互。由于缺乏I/O设备或受信任的I/O(为了安全起见,只有受信任的计算机可以看到来自I/O设备的未加密数据),在执行碎片的计算机上,可以实施专门的“分离的(split)”设备驱动器。分离的设备驱动器实际上是两个驱动器,每个计算机上有一个驱动器,其中每个驱动器执行通常的设备驱动器的工作的一半。因为驱动器的两个半个部分都作为用户过程而执行,它们不需要对执行碎片的计算机和所述受信任的计算机两者的操作***进行修改。以下是说明分离的设备驱动器可以如何被实施和被使用的示例性实施例。
在一个实施例中,如果在某个计算机上对于运算或碎片的结果进行计算的期间,所述运算需要来自被连接到第一受信任的计算机的设备的输入,则所述某个计算机可以:在所述某个计算机上的程序驱动器处生成输入请求;将来自程序驱动器的输入请求传递到网络驱动器;将所述输入请求经由网络驱动器发送到所述第一受信任的计算机;在网络驱动器处从所述第一受信任的计算机接收所述设备的响应;以及将所述响应从所述网络驱动器传递到所述程序驱动器,供计算使用。所接收的响应可以被加密以用来增加安全性。
在一个实施例中,如果在某个计算机上对于运算或碎片的结果进行计算的期间,所述运算需要来自被连接到第一受信任的计算机的设备的输入,则所述第一受信任的计算机可以:在所述第一受信任的计算机的网络驱动器处从所述某个计算机接收对所述设备的输入的请求;将所述请求从网络驱动器传递到所述设备的输入驱动器;将所述设备的响应从输入驱动器传递到网络驱动器;并且将所述响应经由网络驱动器发送到所述某个计算机。所述第一受信任的计算机可以在将所述设备的响应从所述输入驱动器传递到所述网络驱动器之前对所述响应加密,以增加安全性。
在一个实施例中,如果在某个计算机上对于运算的结果进行计算期间,所述运算需要从被连接到第一受信任的计算机的设备输出,则所述某个计算机可以:在所述某个计算机上的程序驱动器处生成输出请求;将来自程序驱动器的所述输出请求传递到网络驱动器;将所述输出请求经由网络驱动器发送到所述第一受信任的计算机;在网络驱动器处从所述第一受信任的计算机接收所述设备的状态;以及将所述状态从网络驱动器传递到程序驱动器,供计算使用。所述输出请求可包括加密的数据。
在一个实施例中,如果在某个计算机上对于运算的结果进行计算期间,所述运算需要从被连接到第一受信任的计算机的设备输出,则所述第一受信任的计算机可以:在所述第一受信任的计算机上的网络驱动器处,从所述某个计算机接收用于向所述设备输出的请求;将所述请求从网络驱动器传递到用于所述设备的输出驱动器;将来自所述设备的状态从输出驱动器传递到网络驱动器;以及将所述状态经由网络驱动器发送到所述某个计算机。所述请求可包括加密的数据,并且所述第一受信任的计算机在将所述请求从网络驱动器传递到输出驱动器之前可能需要解密该数据。
在一个实施例中,如果在某个计算机上对于运算的结果进行计算期间,所述运算需要来自被连接到第一受信任的计算机的设备的输入,则收集该输入的方法可包括:在所述某个计算机上的程序驱动器处生成输入请求;将所述输入请求从程序驱动器传递到第一网络驱动器;将所述输入请求经由第一网络驱动器发送到所述第一受信任的计算机;在所述第一受信任的计算机上的第二网络驱动器处从所述某个计算机接收所述输入请求;将所述输入请求从第二网络驱动器传递到用于所述设备的输入驱动器;将来自所述设备的响应从所述输入驱动器传递到第二网络驱动器;将所述响应经由第二网络驱动器发送到所述某个计算机;在第一网络驱动器处,从第一受信任的计算机接收所述设备的响应;以及将所述响应从第一网络驱动器传递到程序驱动器,供计算使用。为了增加安全性,所述方法还可以包括在将所述响应从输入驱动器传递到第二网络驱动器之前加密来自所述设备的响应。因此,从第一受信任的计算机接收的响应可以被加密。
在一个实施例中,如果在某个计算机上对于运算的结果进行计算期间,所述运算需要从被连接到第一受信任的计算机的设备输出,则执行该输出的方法可包括:在所述某个计算机上的程序驱动器处生成输出请求;将来自程序驱动器的所述输出请求传递到第一网络驱动器;将所述输出请求经由第一网络驱动器发送到所述第一受信任的计算机;在所述第一受信任的计算机上的第二网络驱动器处从所述某个计算机接收所述输出请求;将所述输出请求从第二网络驱动器传递到用于所述设备的输出驱动器;将来自所述设备的状态从输出驱动器传递到第二网络驱动器;将所述状态经由第二网络驱动器发送到所述某个计算机;在第一网络驱动器处从所述第一受信任的计算机接收所述状态;以及将所述状态从第一网络驱动器传递到程序驱动器,供计算使用。为了增加安全性,所述输出请求可包括加密的数据,然后该加密的数据需要在将所述输出请求从第二网络驱动器传递到输出驱动器之前被解密。
可以几个层级上使用加密技术从而增加安全性。在所述受信任的计算机与所述至少一个其它计算机之间的所有的网络连接都可以被加密。这样的网络加密可以通过使用例如传输层安全性(transport layer security,TLS)或任何其它适用的加密方案而被实施。
图2示出了分离的设备驱动器的实施方案和运算的高层级实施例,虽然未明确地示出,但它可能涉及到用于网络通信的TLS加密。在云计算机1(CC1)200上的分离的设备驱动器包含两个部分:与程序连接的驱动器以及与网络连接的驱动器。同样地,在受信任的计算机1(TC1)210上的分离的设备驱动器包括两个部分:与网络连接的驱动器(网络接口1212),以及与输入设备连接的驱动器(输入设备驱动器1 214)。CC1 200通过利用分离的设备驱动器体系而执行“x=in()”输入运算。对于所述输入运算,与所述程序连接的驱动器生成输入请求202。该输入请求202被传递到与网络连接的驱动器,以用于加密和传输到TC1210。网络接口1 212接收所述请求,并且把它传递到输入设备驱动器1 214。当从该输入设备(输入设备1 220)接收到响应时,所述响应由输入设备驱动器1 214传递到网络接口1212。网络接口1 212通过使用TLS加密所述响应,并且将响应222传输到CC1 200。在CC1 200上的网络驱动器将TLS解密的响应222转发到程序接口驱动器,程序接口驱动器又将它转发到等待程序。所述程序将接收的输入赋值给变量x,并继续执行。图2上还示出了如何通过在云计算机4(CC4)230与受信任的计算机4(TC4)240之间使用分离的设备驱动器而执行输出。用于输出的分离的设备驱动器的运算类似于输入运算,除了计算机接收的是状态消息252而不是来自设备的输入。
所述一系列运算中的每个运算或每个碎片都可以被加密。每个碎片可以通过使用对称密钥加密方案(诸如先进的加密标准(AES)伽罗瓦计数器模式(GCM))或任何其它适用的方案,而被加密。对称密钥加密使用所述至少一个其它计算机的共享密钥,这样,每个碎片通过使用不同的密钥而被加密。这样的方案允许碎片仅仅在碎片所计划的其它计算机上进行解密,但将程序的其余部分隐藏不让任何其它计算机知道。
所述一系列运算中的每个运算的每个数据值可以被加密。加密数据值可以通过使用诸如AES GCM的对称密钥方案,诸如RSA的公共密钥方案(public-key scheme),或任何其它适用的方案,而被执行。这样的加密在所述受信任的计算机和所述至少一个其它计算机上被执行。如果使用对称密钥方案,则所使用的私钥(secret key)是在数据的发送者与接收者之间的链路的共享的密钥。如果使用公共密钥方案,则所述发送者使用接收者的公共密钥用于加密,而接收者使用它的私钥用于解密。这样的方案使得所述至少一个其它计算机能够解密它所需要的、用于计算的数据,但隐藏所有的其它的数据不让所述至少一个其它计算机知道。
图3示出了在图1的示例性程序中用于代码和数据的碎片的对称密钥加密和解密运算的实施例。图3,像图2一样,没有明确地示出通信数据包的TLS加密和解密。在程序的计算中涉及到的四个计算机,受信任的计算机1(TC1)310、云计算机2(CC2)320、云计算机3(CC3)330和受信任的计算机4(TC4)340,分别具有密钥K1、K2、K3和K4,它们是受信任的计算机0(TC0)300所已知的。分割的程序代码在分割运算期间通过使用共享的密钥K1、K2、K3和K4,在TC0 300上被加密。例如,在TC0 300上的语句“in’=Enc(K1,in)”表示对于in的代码通过使用密钥K1进行加密,生成加密的代码in’。在TC1 310上的对应的解密运算是“in=Dec(K1,in’)”,这个解密产生用于所述“in”运算的代码。因为TC1 310仅仅知道密钥K1,TC1310不能解密所述加密的程序的任何其它部分,试图通过使用密钥K1来解密代码的某些其它部分将不能生成有效的代码。这个加密和解密过程,通过使用发送给碎片用于计算的每个计算机的密钥,对所有的碎片重复进行,每个计算机只被允许访问它意图计算的碎片。在计算机之间的通信链路也具有仅仅由数据的发送者和接收者知道的共享的密钥。在这种情形下,用于通信链路的共享密钥是K12、K23和K34。例如,共享的密钥K12被TC1 310使用来将输入x成密文x’,以及x’通过使用密钥K12在CC2 320上被解密,产生x。这个过程从计算机到计算机地被使用,以确保攻击者不能在网络上拦截未加密的文本。
为了附加的安全性,应当使用混淆(obfuscation),所述混淆包括数据混淆、代码混淆或同时包括二者。混淆可以涉及到修改在每个碎片内的代码和/或数据,以隐藏原先的代码和数据不让在其它计算机处的攻击者得知。代码混淆使用混淆变换来隐藏原先的程序的逻辑,不让完全看到碎片的代码以及在碎片执行期间的指令和数据的攻击者得知该逻辑。数据混淆则变换所述数据,从而使分割的代码在混淆的数据值上执行,以使得攻击者很难恢复未混淆的数据值;蒙蔽(blinding)是数据混淆的一种。
伴随着分割的混淆涉及在将所述一系列运算中的每个运算发送到各个其它的计算机之前混淆每个运算,以及反混淆(unobfuscating)所接收的、计算机程序的计算的结果。混淆的方法取决于分割的层级,并且分割可以在至少四个不同的层级上执行:门级、硬件单元级、指令级、加密方案级以及允许将程序分解为单元的任何其它方案。
图4显示在四个计算机上执行程序“z=a*x+y”的混淆的例子。混淆的目的是隐藏输入a、x和y的数值以及输出z的数值以防止被云计算机2(CC2)410和云计算机3(CC3)420上的攻击者得知。受信任的计算机1(TC1)400引入三个随机数值r、s和t,它们分别被用作混淆输入a、x和y的数值的一次性密码本(one-time pad)。用于混淆的运算依赖于如何使用变量。例如,变量a与x相乘,因此混淆运算用它们的密码本值(pad value)r和s乘以a和x,而变量y是加数,这样,混淆运算加上一次性密码本值t。CC2 410和CC3 420通过使用被混淆的数值a’、x’和y’而执行计算,分别计算b’和c’。CC3 420通过被除以r’和s’而对于b’执行反混淆,并且受信任的计算机4(TC4)430通过减去密问t而对数值c’执行反混淆。这些过程确保攻击者永远不能得到所涉及的变量的实际的数值。
门级分割是最精细的分割层级,并且提供完美的保密性,因为只看到单个其它计算机的攻击者不可能了解该计算或恢复该计算原始的输入或输出。然而,它是最慢的分割层级,并且无法提供在其它计算机上执行I/O运算的能力。在这个层级上,程序被划分成包含AND、OR、NAND、NOR和NOT门的电路,并且所述NOT门可被转换成带有相等的输入的NAND门,以确保每个门运算具有两个操作数。这样,程序的一系列的运算被划分成电路门运算,每个电路门运算具有运算符、第一操作数和第二操作数。
在一个实施例中,门运算电路中的每个门在两个其它计算机上被混淆并被分割。对于每个门运算,该过程涉及到受信任的计算机用第一随机值混淆第一操作数和用第二随机值混淆第二操作数。然后,被混淆的操作数连同用于第一计算机的指令一起被发送到第一计算机,所述指令使第一计算机通过使用被混淆的操作数计算多个运算的多个结果,并且将所述多个结果发送到第二计算机。受信任的计算机向第二计算机发送指令:根据运算符、第一随机值和第二数据值,从所述多个结果中选择一个结果;用第三随机值混淆所述选择的结果;以及将所述选择的结果发送到不同的计算机,其可以是受信任的计算机或另一个计算机。
图5示出了在两个其它计算机上,即在云计算机1(CC1)510和云计算机2(CC2)520上,分割门计算的示例性实施例。在这个例子中,门运算“g=a&b”是要被执行的当前的分割。像图4一样,这个实施例使用一次性密码本,但使用随机值r、s和u。受信任的计算机(TC)500如下生成被混淆的程序以执行“g=a&b”。首先,TC 500选择两个随机比特,分别用来混淆a和b。然后它计算“c=a^r”和“d=b^s”,其中所述“^”运算符表示XOR运算。TC 500然后将c和d发送到CC1 510。CC1 510计算四个临时值:e1=c&d;e2=c&!d;e3=c|!d;和e4=c|d。CC1 510然后将{e1,e2,e3,e4}发送到CC2 520。CC2 520根据r和s的数值执行以下的程序中的一个程序,并且使用随机比特u来混淆结果:如果{r=0,s=0},则f=e1^u;如果{r=0,s=1},则f=e2^u;如果{r=1,s=0},则f=!e3^u;以及如果f{r=1,s=1};则f=!e4^u。CC2520然后将f发送到TC 500。TC 500通过计算“g=f^u”,而反混淆所述结果。
在图5的示例性实施例中,TC 500计算用于混淆所述数据的三个XOR运算,而CC1510和CC2 520执行计算。无论是CC1 510还是CC2 520都不知道输入数据、输出数据或计算,因为CC1 510执行四个通用运算而CC2 520选择正确的运算。虽然似乎AND的计算或计算的结果在CC2 520处被暴露,但细心的查验表明计算结果和数据都是被隐藏的。在CC2 520处的程序仅仅是使{e1,e2,e3,e4}中一个数值通过或拒绝,它是由分割器程序根据只有分割器程序自己知道的r、s和u的随机值而生成的。而且,CC2 520不会知道它正在计算AND还是OR运算,因为如图6所示,在CC1 510处对变量名称的如下置换可以使得CC2 520计算“a ORb”:e4=c&d;e3=c&!d;e2=c|!d;e1=c|d。用于计算“g=a|b”的图6,除了在CC2 620处执行的计算以外,在其它所有方面都与图5相同。
类似地,NAND或NOR运算可以通过在CC2 520处加上额外的NOT运算而被计算。如上所述,单个比特的NOT运算可以使用具有相等输入的NAND运算。使用一个随机比特r以隐藏输入和使用另一个随机比特u以隐藏输出的类似的方法可被用来混淆存储单个比特的随后的电路。因此,任何电路均可以通过在TC 500上引入一次性密码本(包括被使用来隐藏输入和输出的所述比特的所有的随机值)并生成两个碎片以在该一次性密码本下执行所述电路而被混淆。只要这两个碎片不是同时对攻击者可见的,这个方案就是安全的。
如果电路被使用多次,则在图5-6上所示的一次性密码本方法是不安全的,因为:(1)在CC2(520、620)处可看见的数值{e1,e2,e3,e4}在CC1(510、610)处对于输入变量c和d的四种组合具有特定的模式(pattern);以及(2)用于AND运算的数值{e1,e2,e3,e4}的模式与用于OR运算的数值{e1,e2,e3,e4}的模式是不同的。在CC2(520、620)处收集和分析所述四个数值的攻击者可以确定所述运算。为了对抗这一点,可以引入另外的四个随机比特t1、t2、t3和t4来混淆{e1,e2,e3,e4}的数值。图7示出了使用这些新的比特的计算。
图7与图5相同,但使用{t1,t2,t3,t4}用于额外的混淆。在这个例子中,受信任的计算机(TC)700混淆c和d,并且将它们发送到云计算机1(CC1)710,云计算机1(CC1)710以与图5-6中相同的方式计算{e1,e2,e3,e4}。然而,e1现在是与t1进行XOR运算,e2与t2进行XOR运算,e3与t3进行XOR运算以及e4与t4进行XOR运算,从而混淆{e1,e2,e3,e4}的数值。通常,云计算机2(CC2)720或处理第二碎片的计算机,使特定e的数值的通过或者拒绝,这取决于进行计算的所述运算以及随机比特r、s、u、t1、t2、t3和t4的数值,如以下的表格中显示的。
表1:混淆的电路-门运算选择
{r,s} | AND | NAND | OR | NOR |
{r=0,s=0} | f=e<sub>1</sub>^(t<sub>1</sub>^u) | f=!e<sub>1</sub>^(t<sub>1</sub>^u) | f=e<sub>4</sub>^(t<sub>4</sub>^u) | f=!e<sub>4</sub>^(t<sub>4</sub>^u) |
{r=0,s=1} | f=e<sub>2</sub>^(t<sub>2</sub>^u) | f=!e<sub>2</sub>^(t<sub>2</sub>^u) | f=e<sub>3</sub>^(t<sub>3</sub>^u) | f=!e<sub>3</sub>^(t<sub>3</sub>^u) |
{r=1,s=0} | f=!e<sub>3</sub>^(t<sub>3</sub>^u) | f=e<sub>3</sub>^(t<sub>3</sub>^u) | f=!e<sub>2</sub>^(t<sub>2</sub>^u) | f=e<sub>2</sub>^(t<sub>2</sub>^u) |
{r=1,s=1} | f=!e<sub>4</sub>^(t<sub>4</sub>^u) | f=e<sub>4</sub>^(t<sub>4</sub>^u) | f=!e<sub>1</sub>^(t<sub>1</sub>^u) | f=e<sub>1</sub>^(t<sub>1</sub>^u) |
在图7上,CC2 720选择在AND所在列下的一个计算,因为运算是“g=a&b”。然后,CC2 720将f发送到TC 700,其中TC 700对它进行反混淆,得到最后的结果。
对所述四个运算(AND、NAND、OR、NOR)中的每个运算的{e1,e2,e3,e4}的四个数值的分析表明,对于所述四个运算的每个运算,出现完全相同的16个模式(对于{t1,t2,t3,t4}的所述16个数值)。因此,在CC2 720处的攻击者不能使用这些模式来确定所述运算。然而,有某些信息泄漏,因为看到CC2 720处程序的攻击者可以确定r和s的数值是否相等。用于混淆两个输入比特的AND、NAND、OR或NOR运算的这个方案使用包含七个比特(r、s、t1、t2、t3、t4、u)的随机密钥来生成两个碎片。第一碎片总是执行相同的布尔运算,第二碎片选择正确的运算,并且在所述两个碎片之间的中间值的通信被混淆。混淆和计算任何的任意电路的这一过程可以在图8上看到。图8中的每个矩形代表一个计算机。初始输入从计算机800(标记为“发送输入”)被发送到第一计算机810(标记为“计算1”),其中第一碎片计算所述运算,并且将所述运算发送到第二计算机820(标记为“选择1”),其中第二碎片选择正确的运算。所述过程继续进行(例如,在计算机830与840处,分别标记为“计算2”和“选择2”,然后回到计算1 810,或另一个选定的计算机)直至电路的结果被计算出并被发送到计算机850(标记为“接收输出”)为止。
硬件单元级分割比起门级分割提供较少的隐私性,但能以较快的速度执行。这个层级的分割将程序划分成包括执行特定功能的硬件单元运算的电路。示例包括整数加法、整数乘法、整数比较、和浮点乘法,它们是通用计算机上的标准硬件单元。在这种模式中,所述一系列运算是数学运算,每个数学运算具有运算符、第一操作数和第二操作数。在其它计算机处的攻击者可以看见被执行的运算的类型,但猜测不出具体的运算。例如,在其它计算机处的攻击者可以看见整数加法被执行,但不能看见操作数或结果的未加密的数值。最后,像门级分割一样,硬件单元级分割不提供在其它计算机上执行I/O运算的能力。
指令级分割将程序划分成指令,这样,每个碎片执行指令的子集。指令的示例包括x86机器指令和Java虚拟机(JVM)字节代码。像硬件单元级分割一样,这些指令涉及到数学运算。然而,与硬件单元级分割不同的是,指令级分割兼容通过使用上述的分离的设备驱动器而执行I/O运算的程序。
在一个实施例中,所述程序被划分成的所述一系列运算中的每个数学运算在两个计算机上被混淆以及被分割。对于每个数学运算,所述过程涉及到所述受信任的计算机用第一随机值混淆第一操作数以及用第二随机值混淆第二操作数。然后,被混淆的操作数连同指令一起被发送到第一计算机,所述指令指示第一计算机通过使用运算符、第一操作数和第二操作数计算运算的第一结果。第一计算机还从第二计算机接收数值,通过使用运算符、第一结果和所述数值,计算运算的第二结果,并且将所述第二结果发送到不同的计算机,它可以是受信任的计算机或另一个计算机。第二计算机获知被使用来混淆所述运算符和最终结果的所述随机值,并且使用这个知识来计算被发送到第一计算机的所述数值。在涉及到加法运算的某些实施例中,所述接收的数值是第三随机值减去第一随机值与第二随机值的和值后的结果。下面描述的图12示出了一个这样的实施例。在涉及到乘法运算的某些实施例中,所述接收的数值是第三随机值被除以第一随机值与第二随机值的乘积后的结果。下面描述的图13示出了一个这样的实施例。某些实施例可能需要将运算从乘法混淆方案转换到加法混淆方案,反之亦然。下面描述的图18显示从乘法混淆方案转换到加法混淆方案的实施例,以及下面描述的图19显示从加法混淆方案转换到乘法混淆方案的实施例。
混淆所需要的随机值可以通过以下的方法被生成。程序所执行的循环被计数,以使得由在循环i所执行的指令定义的变量被函数“Key(i)”蒙蔽(blind)。函数“Key(i)”生成“不太大也不太小的”随机浮点值,以便限制浮点计算时的舍入误差。所述随机浮点值也是非零值,以防止在计算期间出现被零除的运算。函数“Key”通过使用用于生成随机数‘i’的随机值的快速流密码(诸如Salsa20)而被实施。两个秘密种子(secret seed)被用于所述流密码:一个种子用于生成加法蒙蔽值,另一个不同的种子用于生成乘法蒙蔽值。因为在程序中的每个指令是加法或是乘法,但不会同时是二者,所述执行的结果通过使用所述两个种子中的一个种子而被蒙蔽。如果在一个方案中被蒙蔽的指令的结果在相对的方案的一个运算中被使用,则使用变换运算以改变方案。
在图12-13示出的例子中,TC(1200,1230,1300和1330)和CC3(1220和1320)会知道两个种子,而CC2(1210和1310)不会知道任何种子。在图18-19示出的例子中,TC(1800,1840,1900和1940)和CC3(1820和1920)会知道两个种子,CC2(1810和1910)不会知道任何种子,而CC4(1830和1930)只会知道乘法种子。
在加密方案级被执行的分割通过使用依赖于在数据上执行的运算的、同态加密方案,加密所述一系列运算中的每个运算的每个数据值。加法运算通过使用加法同态加密(AHE)方案(诸如Paillier)被加密,以及乘法运算通过使用乘法同态加密(MHE)方案(诸如El Gamal)被加密。当在一个方案中被加密的数据需要通过使用不兼容的运算进行运算时,可以使用转换加密函数来将AHE数据值转换成MHE数据值,以及将MHE数据值转换成AHE数据值。为了增加安全性,这些转换函数可以被分割,通过将转换加密函数划分成一系列运算以及将所述转换加密函数的每个运算连同伴随指令一起发送到至少一个其它计算机,所述伴随指令用来计算各个运算的结果,并将所述结果转发到另一个计算机。下面描述的图14示出了从Paillier到El Gamal的分割的转换加密函数的实施例,以及下面描述的图15示出了从El Gamal到Paillier的分割的转换加密函数的实施例。有可能比较两个被加密的整数。下面描述的图16示出了使用Paillier加密的、分割的比较函数的实施例,以及下面描述的图17示出了使用El Gamal加密的、分割的比较函数的实施例。
图9示出了通过使用El Gamal和Paillier加密方案来执行“z=a*x+b”的示例性实施例。受信任的计算机1(TC1)900使用El Gamal加密a和x值,并使用Paillier加密b值。函数“EG()”是指用El Gamal加密,而函数“EP()”是指用Paillier加密。云计算机2(CC2)910以MHE加密的数值计算“a*x”的乘法,产生MHE加密的数值y’。CC2 910然后结合云计算机3(CC3)920使用分割的转换函数“GP1()”、“GP2()”和“GP3()”,将El Gamal加密的数值y’转换成Paillier加密的数值y”,并且通过乘以AHE加密的数值进行“b+y”相加。受信任的计算机4(TC4)930然后接收Paillier加密的数值z’,并且通过使用解密Paillier函数“DP()”解密它,得到解。分割的转换函数“GP1()”,“GP2()”,和“GP3()”在下面参照图15更详细地描述。
如前所述,分离的设备驱动器使得碎片中的输入和输出运算能够在其它计算机上执行。作为附加的安全层,最好允许碎片只对来自I/O设备的加密的数据进行运算,这样,只有受信任的计算机可以看见来自I/O设备的未加密的数据。图10示出了在单个计算机上运行的典型的设备驱动器交互的示例性运算;而相反,图11示出了在受信任的计算机与云计算机之间的分离的设备驱动器交互的详细的示例性运算。
图10示出了在单个计算机上进行的典型的设备驱动器交互的示例性运算。图10上显示的示例性应用(应用1000),从键盘(键盘硬件1020)请求输入,并且将该输入输出到控制台或屏幕(控制台硬件1040)。所述过程需要图10上标记的八个步骤。在步骤1,所述应用从计算机核心中的核心键盘设备驱动器(KK)1010请求一个字符。在步骤2,KK 1010从键盘硬件1020请求一个字符。在步骤3,键盘硬件1020接收到输入,并且用一个字符响应KK1010。在步骤4,KK 1010将该字符传递到所述应用以完成输入操作。在步骤5,所述应用开始输出运算,并且将该字符发送到计算机核心中的核心控制台设备驱动器(KC)1030。在步骤6,KC 1030将该字符发送到控制台硬件1040。在步骤7,控制台硬件1040打印该字符,并将状态发送到KC 1030。在步骤8,KC 1030将状态传递到应用1000。在这个阶段,输出操作已完成,并且应用1000知道输出的状态,例如,它是否被打印到控制台屏幕、错误等等。
图11示出了在受信任的计算机(TC)1102与执行与图10相同的功能的云计算机(CC)1104之间的分离的设备驱动器的实施例的运行。执行碎片1100需要来自键盘硬件1160的输入(步骤1-12),然后将该输入输出到控制台硬件1162(步骤13-24)。因为为了安全性CC1104必须从受信任的计算机获取输入并向受信任的计算机输出(这里,受信任的计算机是TC 1102),设备驱动器在CC 1104与TC 1102之间被分割。
图11的输入部分如下。在步骤1,执行碎片1100从在用户模式下的分离的键盘设备驱动器(用户模式键盘设备驱动器(CCUMK)1110)请求一个字符。在步骤2,CCUMK 1110使用核心网络设备驱动器(CCKN)1120来请求该字符。在步骤3,CCKN 1120与在TC上的核心网络设备驱动器(TCKN)1130通信。在步骤4,TCKN 1130从用户模式键盘设备驱动器(TCUMK)1140请求一个字符。在步骤5,TCUMK 1140从核心键盘设备驱动器(TCKK)1150请求一个字符。在步骤6,TCKN 1130从键盘硬件1160请求一个字符。在步骤7,键盘硬件1160接收到输入,并且用一个字符响应TCKK 1150。在步骤8,TCKK 1150将该字符发送到TCUMK 1140。在步骤9,TCUMK 1140加密所接收的字符,并将它发送到TCKN 1130。在步骤10,TCKN 1130将加密的字符发送到CCKN 1120。在步骤11,CCKN 1120将加密的字符发送到CCUMK 1110。在步骤12,CCUMK 1110将加密的字符传递到执行碎片1100,完成输入运算。
图11的输出部分为如下,并假设执行碎片1100已经从步骤1-12的处理过程接收到加密的字符。在步骤13,执行碎片1100开始输出运算,将加密的字符发送到用户模式下的分离的控制台设备驱动器(用户模式控制台设备驱动器(CCUMC)1112)。在步骤14,CCUMC 1112使用CCKN 1120来发送加密的字符。在步骤15,CCKN 1120与TCKN 1130通信。在步骤16,TCKN1130将加密的字符发送到用户模式控制台设备驱动器(TCUMC)1142。在步骤17,TCUMC 1142解密所述字符,并将未加密的字符发送到核心控制台设备驱动器(TCKC)1152。在步骤18,TCKC 1152将未加密的字符发送到控制台硬件1162。在步骤19,控制台硬件1162打印所述字符,并将状态发送到TCKC 1152。在步骤20,TCKC 1152将所述状态发送到TCUMC 1142。在步骤21,TCUMC 1142将所述状态发送到TCKN 1130。在步骤22,TCKN 1130将所述状态发送到CCKN 1120。在步骤23,CCKN 1120将所述状态发送到CCUMC 1112。在步骤24,CCUMC 1112将所述状态发送到执行碎片1100。在这个阶段,输出操作已完成,并且执行碎片1100知道输出的状态,例如,它是否被打印到控制台屏幕、错误等等。
不同于所述分离的驱动器,图10中的应用1000与图11中的执行碎片1100之间的不同点还在于,执行碎片1100是在加密的数据上运算,因此其可以在被攻击者观察到的计算机上执行,此处就是CC 1104。用于加密和解密所述数据的密钥仅仅可在TC 1102上得到,它在TCUMK 1140和TCUMC 1142中使用该密钥。
如前所述,代码混淆可被使用来隐藏原始程序的逻辑,并且可以结合数据混淆一起被使用。数据混淆可以通过使用图12-13而更好地理解,代码混淆可包括但不限于,运算码替换(opcode substitution)、函数合并(function merging)、控制流平坦化(controlflow flattening)和诱饵码(decoy code),包括不透明谓词(opaque predicate)。
图12示出了通过使用数据混淆而计算和值“g=a+b”的实施例。受信任的计算机1(TC1)1200选择两个随机数,r和s,分别混淆a和b。TC1 1200计算“a+r”和“b+s”,并且将结果分别赋值给变量c和d。TC1 1200然后将(c,d)发送到云计算机2(CC2)1210。CC2 1210计算和值“e=c+d”,并且请求由云计算机3(CC3)1220进行蒙蔽。CC3 1220被给予随机值r和s以及第三随机值u的信息,u用于蒙蔽所述最后的结果。CC3 1220计算“u–r–s”的数值,将它赋值到变量h,并将变量h发送到CC2 1210。CC2 1210从CC3 1220接收数值h,计算“e+h”,将该结果赋值到变量f,并且将它发送到受信任的计算机4(TC4)1230。TC4 1230然后通过计算“f–u”反蒙蔽(unblind)所述结果,完成所述运算。因此TC 1200和1230使用三个随机数r、s和u作为用于混淆输入数据(a和b)和输出数据(g)的密钥,而两个云计算机1210和1220计算实际的和值。没有一个云计算机知道输入或输出数据。
图13示出了通过使用数据混淆计算乘积“g=a*b”的实施例。受信任的计算机1(TC1)1300选择两个随机数,r和s,分别混淆a和b。TC1 1300计算“a*r”和“b*s”,并且将结果分别赋值给变量c和d。TC1 1300然后将(c,d)发送到云计算机2(CC2)1310。CC2 1310计算乘积“e=c*d”,并且请求由云计算机3(CC3)1320进行蒙蔽。CC3 1320被给予随机值r和s以及第三随机值u的信息,u被使用来蒙蔽最后的结果。CC3 1320计算“u/(r*s)”的数值,将它赋值到变量h,并将变量h发送到CC2 1310。CC2 1310从CC3 1320接收数值h,计算“e*h”,将结果赋值到变量f,并将它发送到受信任的计算机4(TC4)1330。TC4 1330然后通过计算“f/u”反蒙蔽所述结果,完成运算。这样,TC 1300和1330使用三个随机值r、s和u,作为用于混淆输入数据(a和b)和输出数据(g)的密钥,而所述两个云计算机1310和1320计算实际的乘积。没有一个云计算机知道所述输入或输出数据。
运算码替换包括用随机运算码替换真实运算码,阻遏碎片的静态反汇编(staticdisassembly)。对于被划分成一系列包括运算码的运算的程序,可以创建替换映射表,所述替换映射表将程序运算码映射到运算码的随机置换;所述替换映射表然后被使用来将所述一系列的运算码转换为运算码的随机置换,并且所述替换映射表被发送到远程计算机,以便在由各个其它计算机在进行反混淆时使用。反混淆可以通过在持有替换映射表的远程计算机处,从其它计算机接收对应于替换映射表的一部分的索引号,和从远程计算机向所述其它计算机发送所述替换映射表的一部分,而被执行。可以对称地看到,其它计算机可以:将对应于替换映射表的一部分的索引号发送到所述远程计算机,从所述远程计算机接收所述替换映射表的一部分,以及通过使用所述替换映射表,将运算码的随机置换转换成原始的所述一系列运算码。
在一个实施例中,带有替换映射表的运算码替换可以结合Java程序被使用。Java字节代码具有256个运算码,其中的51个运算码(范围为203-253)没有被定义。替换映射表被引入以将原始的256运算码映射为运算码的随机置换。替换映射表能被生成碎片的计算机以及远程计算机获知,但它不能被通过使用置换的运算码来执行碎片的其它计算机获知。不使用的运算码253被所述混淆的程序作为GET MAP指令使用。GET MAP指令取32比特的索引号作为操作数,所述操作数被执行碎片的所述其它计算机发送到所述远程计算机。所述远程计算机返回256字节的结果,该结果包含要被用于该特定的碎片的替换映射表。GETMAP指令被***在碎片的开始位置,并且在碎片内***用户指定的次数。为了安全起见,应当有大量的GET MAP指令来阻遏使用相同的映射表的大段代码的统计分析。为了性能最佳化,在循环内只应当有少量的GET MAP指令。
函数合并将不相干的函数组合为单个函数。所述不相干的函数每个具有参数并且在该单个函数内保持各自的行为。为了实施这样的方案,所述单个函数取所有的不相干函数的参数加上附加参数,选择执行哪个行为。如果不相干函数的数目较大,则有点相干的函数的组都可被合并,从而每组有一个单独的合并函数。
平展平坦化,也被称为“chenxification”,它将函数转换到无限循环中。为了退出循环,添加了执行等同于原始函数的行为的switch语句。
诱饵码被用来增加攻击者需要分析的代码数量。这可以通过将诱饵码***到计算机程序而完成。诱饵码可包括带有许多微小突变的计算机程序的原始代码。这些微小突变创建不可静态检测的误差,并且微小突变的数目可以是用户指定的。诱饵码可以是不透明谓词方案的一部分。这样的方案通过使目标语句依赖于不透明谓词而阻遏对函数的静态分析,所述不透明谓词是容易建立和执行,但很难分析的谓词。不透明谓词可以利用阵列失真(array aliasing),其中有三种类型的谓词:总是真、总是假和有时真。总是真谓词在“if(如果)”分支中执行原始代码,而在“else(其它)”分支中执行诱饵码。总是假谓词在“if(如果)”分支中执行诱饵码,而在“else(其它)”分支中执行原始代码。有时真谓词在两个分支中执行原先的代码和原先的代码的混淆版本。
如前所述,图14-17示出了使用Paillier和El Gamal加密的实施例。对于图14-17中的实施例,除另有说明外,以下的假设成立。使用公共密钥n对消息m进行Paillier加密被定义为EP(m)=(n+1)m rn mod n2,,其中r是小于公共密钥n的随机非零整数,并且与n互为质数。使用私钥(b,u)对密文c进行Paillier解密被定义为DP(c)=u((cb mod n2-1)/n)modn。使用公共密钥(n,g,q,h)对消息m进行El Gamal加密被定义为EG(m)=(gr mod n,m hrmod n),,其中r是小于n的随机非零整数。使用私钥x对密文(e,c)进行El Gamal解密被定义为DG(e,c)=eq-x c mod n。
图14示出了从Paillier加密到El Gamal加密的分割的转换加密函数的实施例。对密文从Paillier解密并加密成El Gamal被定义为:
PG(c)=
let m=u((cb mod n2-1)/n)mod n
in(gr mod n,m hr mod n)
函数“PG(c)”可以通过使用以下的过程而被分割成“PG1(c)”、“PG2(a,c)”和“PG3(w)”。数值b1与b2被随机地选择,这样,b1与b2的和值等于b(b1+b2=b)。数值u1与u2被随机地选择,这样,u1与u2的乘积等于u mod n(u1*u2=u mod n)。
所述函数被定义为如下:
PG1(c)=cb1mod n2
PG2(a,c)=
let b=u2((a cb2mod n2)-1)/n)mod n
in(gr mod n,b hr mod n)
PG3(w)=u1w mod n
组合所述函数将产生函数“PG_shred(c)”:
PG_shred(c)=
let a=PG1(c)
let(v,w)=PG2(a,c)
let z=PG3(w)
in(v,z)
在图14中,受信任的计算机1(TC1)1400用公共密钥pk加密消息m成为Paillier密文c,然后将它发送到云计算机2(CC2)1410。CC2 1410计算“PG1(c)”,并将结果赋值到a,然后将a和c发送到云计算机3(CC3)1420。CC3 1420计算“PG2(a,c)”,并将结果赋值到(v,w),然后将它发送回CC2 1410。CC2 1410计算“PG3(w)”,并将结果赋值到‘z’,然后将(v,z)发送到受信任的计算机4(TC4)1430。TC4 1430接收现在为El Gamal加密形式的密文(v,z),并且用私钥sk解密它,以揭示消息m。无论CC2 1410还是CC3 1420都不知道所有的随机选择的数值b1、b2、u1和u2。在图14中,公共密钥pk被用于替换n,以及私钥‘sk’被用于替换x。
图15示出了从El Gamal到Paillier的分割的转换加密函数的实施例。从El Gamal解密密文c并加密成Paillier被定义为:
GP(e,c)=
let m=eq-x c mod n
in(n+1)m rn mod n2
函数“GP(e,c)”可以通过以下的过程而被分割成“GP1(e)”、“GP2(f)”和“GP3(v,c)”。数值x1和x2被随机地选择,以使得x1与x2的乘积等于“q–x”(x1*x2=q–x)。所述函数被定义为如下:
GP1(e)=ex1mod n
GP2(f)=
let a=fx2mod n
in(n+1)a mod n2
GP3(v,c)=
let w=vc mod n2
in w rn mod n2
组合所述函数产生函数“GP_shred(e,c)”:
GP_shred(e,c)=
let f=GP1(e)
let v=GP2(f)
in GP3(v,c)
在图15中,受信任的计算机1(TC1)1500用公共密钥pk加密消息m为El Gamal密文(e,c),然后将它发送到云计算机2(CC2)1510。CC2 1510计算“GP1(e)”,并将结果赋值到f,然后将f发送到云计算机3(CC3)1520。CC3 1520计算“GP2(f)”,并将结果赋值到v,然后将它发送回CC2 1510。CC2 1510计算“GP3(v,c)”,并将结果赋值到z,然后将z发送到受信任的计算机4(TC4)1530。TC4 1530现在接收Paillier加密形式的密文z,并且用私钥sk解密它,以便揭示消息m。无论CC2 1510还是CC3 1520都不知道这两个随机选择的数值x1和x2。在图15中,公共密钥pk被用于替换(n,g,q,h),以及私钥sk被用于替换(b,u)。
图16示出了使用Paillier加密的分割的比较函数的实施例。如果两个整数(二者都小于n/2,其中n是公共密钥)在Paillier方案中被加密,则在它们之间的顺序比较被定义为:
CP(c1,c2)=
let c3=invert c2mod n2
let c=c1c3mod n2
let d=u((cb mod n2-1)/n)mod n
in
if d=0then EQ
else if d<n/2then GT
else LT
其中“EQ”是指“c1=c2”,“GT”是指“c1>c2”,以及“LT”是指“c1<c2”。应当指出,c是在c1与c2之间的加密的差值,以及d是在c1与c2之间的解密的差值。函数“CP(c1,c2)”可以通过使用以下的过程而被分割成“CP1(c1,c2)”、“CP2(a,c)”和“CP3(b)”。数值b1与b2被随机地选择,这样,b1与b2的和值等于b(b1+b2=b)。数值u1与u2被随机地选择,这样,u1与u2的乘积等于u mod n(u1*u2=u mod n)。
所述函数被定义如下:
CP1(c1,c2)=
let c3=invert c2mod n2
let c=c1c3mod n2
let a=cb1mod n2
in(a,c)
CP2(a,c)=
let b=u2((a cb2mod n2)-1)/n)mod n
in CP3(b)
CP3(b)=
let d=u1b mod n
in
if d=0then EQ
else if d<n/2then GT
else LT
组合所述函数将产生函数“CP_shred(c1,c2)”:
CP_shred(c1,c2)=
let(a,c)=CP1(c1,c2)
let b=CP2(a,c)
in CP3(b)
在图16中,受信任的计算机1(TC1)1600用公共密钥pk加密消息m1成Paillier密文c1,以及用公共密钥pk加密消息m2成Paillier密文c2。TC1 1600然后将(c1,c2)发送到云计算机2(CC2)1610。CC2 1610计算“CP1(c1,c2)”,并将结果赋值到(a,c),然后将(a,c)发送到云计算机3(CC3)1620。CC3 1620计算“CP2(a,c)”,并将结果赋值到b,然后将它发送到云计算机4(CC4)1630。CC4 1630计算“CP3(b)”,并将结果赋值到z,然后将z发送到CC2 1610。CC21610接收z,以及执行条件语句,以确定“EQ”、“GT”或“LT”,然后它们被用于进一步的计算。没有哪个云计算机知道所有的随机选择的数值b1、b2、u1和u2。在图16中,公共密钥pk被用于替换n。
图17显示通过使用El Gamal加密的分割的比较函数的实施例。如果两个整数(二者都小于n/2,其中n是公共密钥)以El Gamal方案被加密,则在它们之间的顺序比较被规定为如下:
CG((e1,c1),(e2,c2))=
let p1=GP(e1,c1)
let p2=GP(e2,c2)
in CP(p1,p2)
其中“GP()”是在图15上规定的El Gamal到Paillier转换函数,以及“CP()”是在图16上规定的Paillier比较函数。函数“CG((e1,c1),(e2,c2))”可以被分割为如下:
CG_shred((e1,c1),(e2,c2))=
let p1=GP_shred(e1,c1)
let p2=GP_shred(e2,c2)
in CP_shred(p1,p2)
在图17中,受信任的计算机1(TC1)1700用公共密钥pk加密消息m1成El Gamal密文(e1,c1),用公共密钥pk加密消息m2成El Gamal密文(e2,c2)。TC1 1700然后将(e1,c1)和(e2,c2)发送到云计算机2(CC2)1710。CC2 1710计算“GP1(e1)”,并将结果赋值到f1,以及计算“GP1(e2)”,并将结果赋值到f2,然后将f1和f2发送到云计算机3(CC3)1720。CC3 1720计算“GP2(f1)”,并将结果赋值到v1,以及计算“GP2(f2)”,并将结果赋值到v2,然后将v1和v2发送回CC2 1710。CC2 1710计算“GP3(v1,c1)”,并将结果赋值到p1,以及计算“GP3(v2,c2)”,并将结果赋值到p2。CC2 1710计算“CP1(p1,p2)”,并将结果赋值到(a,c),然后将(a,c)发送到云计算机3(CC3)1720。CC3 1720计算“CP2(a,c)”,并将结果赋值到b,然后将它发送到云计算机4(CC4)1730。CC4 1730计算“CP3(b)”,并将结果赋值到z,然后将z发送到CC21710。CC2 1710接收z,并且执行条件语句,以确定“EQ”、“GT”或“LT”,然后它们被用于进一步的计算。没有哪个云计算机知道所有的随机选择的数值。在图17中,公共密钥pk被用于替换(n,g,q,h)。
如前所述,分割和混淆数学运算的某些实施例可能需要将运算从乘法混淆方案转换到加法混淆方案,反之亦然。图18-19示出了这些转换函数的两个示例性实施例。
图18示出了从乘法混淆方案转换到加法混淆方案的实施例。在这个示例性实施例中,所述程序用随机数r执行a的乘法蒙蔽,但需要用随机数s执行a的加法蒙蔽。为了安全性,转换过程被分割。首先,受信任的计算机1(TC1)1800和受信任的计算机5(TC5)1840选择两个随机数r和s,用来蒙蔽a。TC1 1800计算“a*r”,并将结果赋值到变量c,然后将它发送到云计算机2(CC2)1810。CC2 1810向云计算机3(CC3)1820请求乘法到加法蒙蔽。CC3 1820能获知随机值r和s,以及计算“r*s”,并将乘积赋值到变量h,然后将h发送到CC2 1810。CC21810从CC3 1820接收数值h,计算“c+h”,并将结果赋值到变量e,然后将它发送到云计算机4(CC4)1830。CC4 1830然后通过计算“e/r”而反蒙蔽所述乘积,并将结果赋值到变量f,然后将f发送到TC5 1840。最后,TC5 1840接收a的加法蒙蔽值,它等于“a+s”。变量a可以通过从f中减去s而被恢复。
图19示出了从加法混淆方案转换到乘法混淆方案的实施例。所述过程基本上是图18所述的过程的逆过程。应当指出,为了保持随机种子不散布到多于所必需的计算机,箭头沿着与图18的路径的相反的路径。这样,对于任一种转换,只有TC(1800、1840、1900和1940)与CC3(1820和1920)知道两种种子,CC2(1810和1910)将不知道任何种子,以及CC4(1830和1930)将只知道乘法种子。
在图19的示例性实施例中,所述程序用随机数s执行a的加法蒙蔽,但需要用随机数r进行a的乘法蒙蔽。为了安全性,转换过程被分割。首先,受信任的计算机1(TC1)1900和受信任的计算机5(TC5)1940选择两个随机数r和s,用来蒙蔽a。TC5 1940计算“a+s”,并将结果赋值到变量c,然后将它发送到云计算机4(CC4)1930。CC4 1930然后通过计算“c*r”来蒙蔽所述和值,并将结果赋值到变量e,然后将它发送到云计算机2(CC2)1910。CC2 1910向云计算机3(CC3)1920请求加法到乘法蒙蔽。CC3 1920获知随机值r和s,以及计算“r*s”,并将乘积赋值到变量h,然后将h发送到CC2 1910。CC2 1910从CC3 1920接收数值h,计算“e–h”,并将结果赋值到变量f,然后将它发送到TC1 1900。最后,TC1 1900接收a的乘法蒙蔽的数值,它等于“a*r”。变量a可以通过计算“f/r”而被恢复。
如图18-19所示,使用了对从一个蒙蔽方案到另一个蒙蔽方案的转换的分割,这样,控制单个云计算机的攻击者不能计算出未加密的数值。在分割的转换期间,乘法密钥r被暴露给CC4(1830和1930),但在这个计算机处的攻击者只看见a的加法蒙蔽的数值。类似地,虽然在CC2(1810和1910)处的攻击者看见a的乘法蒙蔽的数值,但无法获取到乘法蒙蔽密钥“r”,从而不能计算出a。虽然两个密钥r和s都在CC3(1820和1920)处被暴露,但这个计算机只计算乘积“r*s”,以及在CC3(1820和1920)处的黑客根本不能看到a的加法蒙蔽的或乘法蒙蔽的数值。
以上的方法和过程(方法I)能有效地对抗具有对单个其它计算机的根访问权的攻击者记录和分析所执行的程序、存储器中的数据和硬盘中的文件以观看隐私信息(威胁等级I)。然而,方法I不能有效地对抗可以修改在单个其它计算机上的所述执行的程序、存储器和文件以破坏执行的攻击者(威胁等级II)。考虑到这一点,以上方法可被扩展使得每个碎片在多个其它计算机上被执行(方法II)。来自多个其它计算机的中间数据结果将被检验其一致性,以及如果检测到不一致,则计算被中止。只要攻击者没有获得执行一个特定碎片的所有的其它计算机的控制权,方法II就能够阻遏来自攻击者的威胁等级II的攻击。再者,无论方法I还是方法II都不能有效地对抗控制网络中的所有的其它计算机的攻击者(威胁级别III)。方法II可以被扩展成使得被选择用于执行单个程序的另外的计算机跨越多个管理域或多个商业上不同的设施(方法III)。例如,所述另外的计算机可以从不同的公共云供应商,诸如Google、Amazon和/或Microsoft进行选择。只要攻击者没有获得被选择用于程序的所有的域或设施的控制权,方法III就能够阻遏来自攻击者的威胁等级III的攻击。
由以上的方法和过程所提供的隐私性是由计算和数据的分割造成的。混淆和加密运算将使执行延迟性增加额外开销,但性能恶化的主要来源是计算机之间的网络通信延迟。因此,减小在所涉及的各种计算机之间发送的消息的数目以及消息的大小非常重要。
在本文中阐述或描述的每个专利、专利申请和出版物的公开内容整体地在此并入以供参考。
本领域技术人员将会看到,对于本发明的优选实施例可以做出许多改变和修改,并且这些改变和修改可以在不背离本发明的精神的情况下做出。因此,所附权利要求旨在覆盖落入本发明的真实精神和范围内的所有的这样的等价变例。
Claims (57)
1.一种用于执行计算机程序的方法,其特征在于,所述方法包括:
将可执行计算机程序划分成一系列运算,所述可执行计算机程序位于被连接到至少一个其它计算机的受信任的计算机上;
混淆所述一系列运算中的每个运算;
将所述混淆的运算连同伴随指令一起发送到所述至少一个其它计算机,用来远程执行所述可执行计算机程序,所述伴随指令可操作为:
计算所述混淆的运算中的每一个运算的相应结果;
将混淆的运算的所述相应结果转发到所述至少一个其它计算机中的另一个计算机,所述另一个计算机需要所述相应结果来计算混淆的运算;以及
将从所述至少一个其它计算机中的另一个计算机获得的所述可执行计算机程序的混淆的计算结果转发到所述受信任的计算机;
在所述受信任的计算机处,接收所述可执行计算机程序的混淆的计算结果;以及
反混淆所述可执行计算机程序的接收的混淆的计算结果。
2.根据权利要求1所述的方法,其特征在于,所述一系列运算是电路门运算,每个电路门运算具有运算符、第一操作数和第二操作数。
3.根据权利要求2所述的方法,其特征在于,所述混淆所述一系列运算中的每个运算包括:
用第一随机值混淆所述第一操作数;以及
用第二随机值混淆所述第二操作数。
4.根据权利要求3所述的方法,其特征在于,所述将所述一系列运算中的每个运算连同伴随指令一起发送到所述至少一个其它计算机,包括:
将所述混淆的操作数连同指令一起发送到第一计算机,所述指令包括:
通过使用所述混淆的操作数计算多个运算的多个结果;以及
将所述多个结果发送到第二计算机;
发送指令到所述第二计算机,所述指令包括:
根据所述运算符、所述第一随机值和所述第二随机值,选择所述多个结果中的一个结果;
用第三随机值混淆所述选择的结果;以及
将所述选择的结果发送到不同的计算机。
5.根据权利要求1所述的方法,其特征在于,所述一系列运算是计算机算术运算,每个计算机算术运算具有运算符、第一操作数和第二操作数。
6.根据权利要求5所述的方法,其特征在于,所述在发送之前混淆所述一系列运算中的每个运算包括:
用第一随机值混淆所述第一操作数;以及
用第二随机值混淆所述第二操作数。
7.根据权利要求6所述的方法,其特征在于,所述将所述一系列运算的每个运算连同伴随指令一起发送到所述至少一个其它计算机,包括:
将所述运算符和混淆的操作数连同指令一起发送到第一计算机,所述指令包括:
通过使用所述运算符、所述第一混淆的操作数和所述第二混淆的操作数计算运算的第一结果;
接收来自第二计算机的数值;
通过使用所述运算符、所述第一结果和所述数值计算运算的第二结果;以及
将所述第二结果发送到不同的计算机。
8.根据权利要求6所述的方法,其特征在于,所述第一操作数的所述混淆方案是与所述第二操作数的所述混淆方案不一致的。
9.根据权利要求8所述的方法,其特征在于,转换混淆函数被使用来通过使用第三随机值而将所述第一操作数的混淆方案转换成所述第二操作数的混淆方案。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
将所述转换混淆函数划分成一系列运算;以及
将所述转换混淆函数的每个运算连同伴随指令一起发送到至少一个其它计算机,所述伴随指令用来计算所述各个运算的结果,并且将所述结果转发到另一个计算机。
11.根据权利要求10所述的方法,其特征在于,所述将所述转换混淆函数的每个运算连同伴随指令一起发送到至少一个其它计算机,包括:
如果所述第一操作数被乘法型混淆,则:
将所述混淆的操作数连同指令一起发送到第一计算机,所述指令包括:
接收来自第二计算机的数值;
计算所述第一混淆的操作数与所述数值的和值;以及
将所述和值发送到第三计算机;
发送指令到所述第三计算机,所述指令包括:
计算所述和值与所述第一随机值的商:以及
将所述商发送到不同的计算机;
如果所述第一操作数被加法型混淆,则:
将所述混淆的操作数连同指令一起发送到第三计算机,所述指令包括:
计算所述第一混淆的操作数与所述第三随机值的乘积;以及
将所述乘积发送到第一计算机;
发送指令到所述第一计算机,所述指令包括:
接收来自第二计算机的数值;
计算在所述乘积与所述数值之间的差值;以及
将所述差值发送到不同的计算机。
12.根据权利要求11所述的方法,其特征在于,从所述第二计算机接收的数值是所述第一随机值与所述第三随机值的所述乘积。
13.根据权利要求1所述的方法,其特征在于,所述混淆包括代码混淆、数据混淆,或同时包括上述二者。
14.根据权利要求1所述的方法,其特征在于,所述至少一个其它计算机是云的一部分。
15.根据权利要求14所述的方法,其特征在于,所述云是不受信任的。
16.根据权利要求14所述的方法,其特征在于,所述云横跨多个管理域。
17.根据权利要求14所述的方法,其特征在于,所述云横跨多个商业上不同的设施。
18.根据权利要求1所述的方法,其特征在于,所述至少一个其它计算机是企业网络的一部分。
19.根据权利要求1所述的方法,其特征在于,所述至少一个其它计算机是从多个计算机中随机地选取的。
20.根据权利要求19所述的方法,其特征在于,所述多个计算机中的每个计算机是不受信任的。
21.根据权利要求1所述的方法,其特征在于,所述至少一个其它计算机是不受信任的。
22.根据权利要求1所述的方法,其特征在于,所述至少一个其它计算机不是所述可信任的计算机。
23.根据权利要求1所述的方法,其特征在于,所述受信任计算机包括一个或多个虚拟机。
24.根据权利要求1所述的方法,其特征在于,所述至少一个其它的计算机包括一个或多个虚拟机。
25.根据权利要求1所述的方法,其特征在于,所述另一个计算机包括一个或多个虚拟机。
26.根据权利要求1所述的方法,其特征在于,所述将所述一系列运算中的每个运算连同伴随指令一起发送到所述至少一个其它的计算机包括将每个运算发送到多个计算机,供计算使用。
27.一种用于执行计算机程序的***,其特征在于,所述***包括:
通信地连接到至少一个其它计算机的至少一个受信任计算机,所述至少一个受信任计算机的第一受信任计算机具有被存储在其上的计算机指令,所述计算机指令在被执行期间使得所述***执行以下运算,包括:
将可执行计算机程序划分成一系列运算,所述可执行计算机程序位于所述第一受信任计算机上;
混淆所述一系列运算中的每个运算;
将所述混淆的运算连同伴随指令一起发送到所述至少一个其它计算机,用于远程执行所述可执行计算机程序,所述伴随指令可操作为:
计算所述混淆的运算中的每一个的相应结果;
将混淆的运算的所述相应结果转发到所述至少一个其它计算机中的另一个计算机,所述另一个计算机需要所述相应结果以计算混淆的运算;以及
将从所述至少一个其它计算机中的另一个计算机获得的所述可执行计算机程序的混淆的计算结果转发到所述第一受信任计算机;在所述第一受信任的计算机处,接收所述可执行计算机程序的混淆的计算结果;以及
反混淆所述可执行计算机程序的接收的混淆的计算结果。
28.根据权利要求27所述的***,其特征在于,所述一系列运算是电路门运算,每个电路门运算具有运算符、第一操作数和第二操作数。
29.根据权利要求28所述的***,其特征在于,所述混淆所述一系列运算中的每个运算包括:
用第一随机值混淆所述第一操作数;以及
用第二随机值混淆所述第二操作数。
30.根据权利要求29所述的***,其特征在于,所述将所述一系列运算中的每个运算连同伴随指令一起发送到所述至少一个其它计算机,包括:
将所述混淆的操作数连同指令一起发送到第一计算机,所述指令包括:
通过使用所述混淆的操作数计算多个运算的多个结果;以及
将所述多个结果发送到第二计算机;
发送指令到所述第二计算机,所述指令包括:
根据所述运算符、所述第一随机值和所述第二随机值,选择所述多个结果中的一个结果;
用第三随机值混淆所述选择的结果;以及
将所述选择的结果发送到不同的计算机。
31.根据权利要求27所述的***,其特征在于,所述一系列运算是计算机算术运算,每个计算机算术运算具有运算符、第一操作数和第二操作数。
32.根据权利要求27所述的***,其特征在于,所述一系列运算中的每个运算对应于由硬件单元执行的运算。
33.根据权利要求32所述的***,其特征在于,所述***还包括在所述至少一个其它的计算机上的整数加法器。
34.根据权利要求32所述的***,其特征在于,所述***还包括在所述至少一个其它的计算机上的整数乘法器。
35.根据权利要求32所述的***,其特征在于,所述***还包括在所述至少一个其它的计算机上的整数比较器。
36.根据权利要求32所述的***,其特征在于,所述***还包括在所述至少一个其它的计算机上的浮点乘法器。
37.根据权利要求31所述的***,其特征在于,所述在发送之前混淆所述一系列运算中的每个运算包括:
用第一随机值混淆所述第一操作数;以及
用第二随机值混淆所述第二操作数。
38.根据权利要求37所述的***,其特征在于,所述将所述一系列运算的每个运算连同伴随指令一起发送到至少一个其它计算机,包括:
将所述运算符和混淆的操作数连同指令一起发送到第一计算机,所述指令包括:
通过使用所述运算符、所述第一混淆的操作数和所述第二混淆的操作数计算运算的第一结果;
接收来自第二计算机的数值;
通过使用所述运算符、所述第一结果和所述数值计算运算的第二结果;以及
将所述第二结果发送到不同的计算机。
39.根据权利要求37所述的***,其特征在于,所述第一操作数的所述混淆方案是与所述第二操作数的所述混淆方案不一致的。
40.根据权利要求39所述的***,其特征在于,转换混淆函数被使用来通过使用第三随机值而将所述第一操作数的所述混淆方案转换成所述第二操作数的所述混淆方案。
41.根据权利要求40所述的***,其特征在于,所述至少一个受信任计算机具有被存储在其上的计算机指令,所述计算机指令在被执行期间使得所述***执行的运算还包括:
将所述转换混淆函数划分成一系列运算;以及
将所述转换混淆函数的每个运算连同伴随指令一起发送到至少一个其它计算机,所述伴随指令用来计算所述各个运算的结果,并且将所述结果转发到另一个计算机。
42.根据权利要求41所述的***,其特征在于,所述将所述转换混淆函数的每个运算连同伴随指令一起发送到至少一个其它的计算机包括:
如果所述第一操作数被乘法型混淆,则:
将所述混淆的操作数连同指令一起发送到第一计算机,所述指令包括:
接收来自第二计算机的数值;
计算所述第一混淆的操作数与所述数值的和值;以及
将所述和值发送到第三计算机;
发送指令到所述第三计算机,所述指令包括:
计算所述和值与所述第一随机值的商:以及
将所述商发送到不同的计算机;
如果所述第一操作数被加法型混淆,则:
将所述混淆的操作数连同指令一起发送到第三计算机,所述指令包括:
计算所述第一混淆的操作数与所述第三随机值的乘积;以及
将所述乘积发送到第一计算机;
发送指令到所述第一计算机,所述指令包括:
接收来自第二计算机的数值;
计算在所述乘积与所述数值之间的差值;以及
将所述差值发送到不同的计算机。
43.根据权利要求42所述的***,其特征在于,从所述第二计算机接收的数值是所述第一随机值与所述第三随机值的所述乘积。
44.根据权利要求27所述的***,其特征在于,所述混淆包括代码混淆、数据混淆,或同时包括上述二者。
45.根据权利要求27所述的***,其特征在于,所述至少一个其它计算机是云的一部分。
46.根据权利要求45所述的***,其特征在于,所述云是不受信任的。
47.根据权利要求45所述的***,其特征在于,所述云横跨多个管理域。
48.根据权利要求45所述的***,其特征在于,所述云横跨多个商业上不同的设施。
49.根据权利要求27所述的***,其特征在于,所述至少一个其它计算机是企业网络的一部分。
50.根据权利要求27所述的***,其特征在于,所述至少一个其它计算机是从多个计算机中随机地选取的。
51.根据权利要求50所述的***,其特征在于,所述多个计算机中的每个计算机是不受信任的。
52.根据权利要求27所述的***,其特征在于,所述至少一个其它计算机是不受信任的。
53.根据权利要求27所述的***,其特征在于,所述至少一个其它计算机不是所述可信任的计算机。
54.根据权利要求27所述的***,其特征在于,所述受信任的计算机包括一个或多个虚拟机。
55.根据权利要求27所述的***,其特征在于,所述至少一个其它的计算机包括一个或多个虚拟机。
56.根据权利要求27所述的***,其特征在于,所述另一个计算机包括一个或多个虚拟机。
57.根据权利要求27所述的***,其特征在于,所述将所述一系列运算的每个运算连同伴随指令一起发送到所述至少一个其它的计算机包括将每个运算发送到多个计算机,供计算使用。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/804,713 US10110566B2 (en) | 2015-07-21 | 2015-07-21 | Systems and processes for executing private programs on untrusted computers |
US14/804,713 | 2015-07-21 | ||
PCT/US2016/043117 WO2017015357A1 (en) | 2015-07-21 | 2016-07-20 | Systems and processes for executing private programs on untrusted computers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108476198A CN108476198A (zh) | 2018-08-31 |
CN108476198B true CN108476198B (zh) | 2020-09-22 |
Family
ID=57834671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680054703.XA Active CN108476198B (zh) | 2015-07-21 | 2016-07-20 | 用于执行计算机程序的方法和*** |
Country Status (10)
Country | Link |
---|---|
US (2) | US10110566B2 (zh) |
EP (1) | EP3326345B1 (zh) |
JP (1) | JP6880017B2 (zh) |
KR (1) | KR102315831B1 (zh) |
CN (1) | CN108476198B (zh) |
AU (1) | AU2016297559B2 (zh) |
CA (1) | CA2998323C (zh) |
DK (1) | DK3326345T3 (zh) |
IL (1) | IL257040B (zh) |
WO (1) | WO2017015357A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10348503B2 (en) * | 2016-12-12 | 2019-07-09 | Sap Portals Israel Ltd. | Client side actions validation |
JP7177849B2 (ja) * | 2017-12-18 | 2022-11-24 | ユニバーシティ オブ セントラル フロリダ リサーチ ファウンデーション,インコーポレイテッド | パブリックコンピューターにおいて暗号化データに作用するコードを安全に実行する方法 |
US11232224B2 (en) | 2018-03-15 | 2022-01-25 | Servicenow, Inc. | Database encryption |
CN109446828B (zh) * | 2018-11-07 | 2020-10-13 | 北京邮电大学 | 一种安全多方计算方法及装置 |
US11042634B2 (en) * | 2018-12-21 | 2021-06-22 | Fujitsu Limited | Determining information leakage of computer-readable programs |
WO2020240246A1 (en) * | 2019-05-29 | 2020-12-03 | Commissariat A L 'energie Atomique Et Aux Energies Alternatives | A computer-implemented method for obfuscating a program code |
US11363002B2 (en) | 2019-12-13 | 2022-06-14 | TripleBlind, Inc. | Systems and methods for providing a marketplace where data and algorithms can be chosen and interact via encryption |
US11431688B2 (en) | 2019-12-13 | 2022-08-30 | TripleBlind, Inc. | Systems and methods for providing a modified loss function in federated-split learning |
US11973743B2 (en) | 2019-12-13 | 2024-04-30 | TripleBlind, Inc. | Systems and methods for providing a systemic error in artificial intelligence algorithms |
US11853793B2 (en) | 2020-10-09 | 2023-12-26 | Samsung Electronics Co., Ltd. | Methods and system for on-device AI model parameter run-time protection |
EP4050471A1 (en) * | 2021-02-26 | 2022-08-31 | Zama SAS | Encrypted scalar multiplication |
JPWO2023007633A1 (zh) * | 2021-07-28 | 2023-02-02 | ||
US20240004998A1 (en) * | 2022-07-01 | 2024-01-04 | Nxp B.V. | Method for protecting a machine learning model from a side channel attack |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559458A (zh) * | 2013-10-09 | 2014-02-05 | 广州华迅网络科技有限公司 | 数据散列获取方法及其*** |
CN104243166A (zh) * | 2014-09-05 | 2014-12-24 | 深圳市中兴移动通信有限公司 | 录音加密方法和装置 |
Family Cites Families (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6067620A (en) * | 1996-07-30 | 2000-05-23 | Holden; James M. | Stand alone security device for computer networks |
US6477648B1 (en) * | 1997-03-23 | 2002-11-05 | Novell, Inc. | Trusted workstation in a networked client/server computing system |
US6957341B2 (en) * | 1998-05-14 | 2005-10-18 | Purdue Research Foundation | Method and system for secure computational outsourcing and disguise |
US7430670B1 (en) | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US20010037450A1 (en) * | 2000-03-02 | 2001-11-01 | Metlitski Evgueny A. | System and method for process protection |
US7343619B2 (en) * | 2002-03-16 | 2008-03-11 | Trustedflow Systems, Inc. | Trusted flow and operation control method |
US20050069138A1 (en) * | 2003-09-25 | 2005-03-31 | Sun Microsystems, Inc., A Delaware Corporation | Application program obfuscation |
US8220058B2 (en) * | 2003-09-25 | 2012-07-10 | Oracle America, Inc. | Rendering and encryption engine for application program obfuscation |
US7415618B2 (en) * | 2003-09-25 | 2008-08-19 | Sun Microsystems, Inc. | Permutation of opcode values for application program obfuscation |
US7363620B2 (en) * | 2003-09-25 | 2008-04-22 | Sun Microsystems, Inc. | Non-linear execution of application program instructions for application program obfuscation |
US7353499B2 (en) * | 2003-09-25 | 2008-04-01 | Sun Microsystems, Inc. | Multiple instruction dispatch tables for application program obfuscation |
US9525666B2 (en) * | 2005-01-31 | 2016-12-20 | Unisys Corporation | Methods and systems for managing concurrent unsecured and cryptographically secure communications across unsecured networks |
DE102005021749A1 (de) * | 2005-05-11 | 2006-11-16 | Fachhochschule Dortmund | Verfahren und Vorrichtung zur programmgesteuerten Informationsverarbeitung |
EP2044723A2 (en) * | 2006-07-12 | 2009-04-08 | Koninklijke Philips Electronics N.V. | Verifying authenticity of an execution environment |
US20090249492A1 (en) * | 2006-09-21 | 2009-10-01 | Hans Martin Boesgaard Sorensen | Fabrication of computer executable program files from source code |
US9411976B2 (en) * | 2006-12-01 | 2016-08-09 | Maidsafe Foundation | Communication system and method |
US9124650B2 (en) | 2006-12-13 | 2015-09-01 | Quickplay Media Inc. | Digital rights management in a mobile environment |
US8538012B2 (en) * | 2007-03-14 | 2013-09-17 | Intel Corporation | Performing AES encryption or decryption in multiple modes with a single instruction |
US8312518B1 (en) * | 2007-09-27 | 2012-11-13 | Avaya Inc. | Island of trust in a service-oriented environment |
US8762736B1 (en) * | 2008-04-04 | 2014-06-24 | Massachusetts Institute Of Technology | One-time programs |
US8209744B2 (en) * | 2008-05-16 | 2012-06-26 | Microsoft Corporation | Mobile device assisted secure computer network communication |
US8171306B2 (en) * | 2008-11-05 | 2012-05-01 | Microsoft Corporation | Universal secure token for obfuscation and tamper resistance |
JP5735509B2 (ja) * | 2009-08-04 | 2015-06-17 | カーネギー メロン ユニバーシティ | マルウェアがある状態でユーザが検証可能な信頼性のあるパスを得るための方法および機器 |
US8347398B1 (en) * | 2009-09-23 | 2013-01-01 | Savvystuff Property Trust | Selected text obfuscation and encryption in a local, network and cloud computing environment |
US20110202765A1 (en) * | 2010-02-17 | 2011-08-18 | Microsoft Corporation | Securely move virtual machines between host servers |
US9703586B2 (en) * | 2010-02-17 | 2017-07-11 | Microsoft Technology Licensing, Llc | Distribution control and tracking mechanism of virtual machine appliances |
US8862895B2 (en) * | 2010-04-27 | 2014-10-14 | Fuji Xerox Co., Ltd. | Systems and methods for communication, storage, retrieval, and computation of simple statistics and logical operations on encrypted data |
US8824492B2 (en) * | 2010-05-28 | 2014-09-02 | Drc Computer Corporation | Accelerator system for remote data storage |
US20110296164A1 (en) * | 2010-05-28 | 2011-12-01 | Mcafee, Inc. | System and method for providing secure network services |
EP2606448B1 (en) * | 2010-08-18 | 2016-02-10 | Security First Corp. | Systems and methods for securing virtual machine computing environments |
US8681973B2 (en) * | 2010-09-15 | 2014-03-25 | At&T Intellectual Property I, L.P. | Methods, systems, and computer program products for performing homomorphic encryption and decryption on individual operations |
US8762964B2 (en) | 2010-12-17 | 2014-06-24 | Cisco Technology, Inc. | Optimizing symbol manipulation language-based executable applications for distributed execution |
US8700906B2 (en) * | 2011-01-14 | 2014-04-15 | Microsoft Corporation | Secure computing in multi-tenant data centers |
CA2775427A1 (en) | 2011-04-27 | 2012-10-27 | Perspecsys Inc. | System and method of data interception and conversion in a proxy |
US9077525B2 (en) * | 2011-06-24 | 2015-07-07 | Microsoft Technology Licensing, Llc | User-controlled data encryption with obfuscated policy |
US9203621B2 (en) * | 2011-07-11 | 2015-12-01 | Hewlett-Packard Development Company, L.P. | Policy-based data management |
US20130019092A1 (en) * | 2011-07-14 | 2013-01-17 | Barracuda Inc. | System to Embed Enhanced Security / Privacy Functions Into a User Client |
GB2497070B (en) * | 2011-11-17 | 2015-11-25 | Advanced Risc Mach Ltd | Cryptographic support instructions |
WO2013080204A1 (en) * | 2011-11-28 | 2013-06-06 | Porticor Ltd. | Methods and devices for securing keys for a non-secured, distributed environment with applications to virtualization and cloud-computing security and management |
US9208319B2 (en) * | 2011-12-15 | 2015-12-08 | Microsoft Technology Licensing, Llc | Code base partitioning system |
JP6078555B2 (ja) * | 2012-01-09 | 2017-02-08 | コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. | 鍵駆動の難読化を用いる仮想マシンデバイス及び方法 |
US8615656B2 (en) * | 2012-01-09 | 2013-12-24 | The Mitre Corporation | Secure remote peripheral encryption tunnel |
US9454666B2 (en) * | 2012-03-26 | 2016-09-27 | Irdeto B.V. | Method for protecting data |
EP2645618A1 (en) * | 2012-03-30 | 2013-10-02 | British Telecommunications Public Limited Company | Method and system for network data access |
EP2672672A1 (en) * | 2012-06-07 | 2013-12-11 | Alcatel-Lucent | Secure data processing |
EP2672673B1 (en) * | 2012-06-07 | 2016-05-25 | Alcatel Lucent | Apparatus and method for secure data processing |
US8656482B1 (en) * | 2012-08-20 | 2014-02-18 | Bitdefender IPR Management Ltd. | Secure communication using a trusted virtual machine |
US20140195804A1 (en) * | 2012-10-12 | 2014-07-10 | Safelylocked, Llc | Techniques for secure data exchange |
US9176838B2 (en) * | 2012-10-19 | 2015-11-03 | Intel Corporation | Encrypted data inspection in a network environment |
US9535715B2 (en) * | 2012-12-14 | 2017-01-03 | Microsoft Technology Licensing, Llc | Booting from a trusted network image |
GB2508894A (en) * | 2012-12-14 | 2014-06-18 | Ibm | Preventing a trusted boot device from being booted in a virtual machine |
US8909967B1 (en) * | 2012-12-31 | 2014-12-09 | Emc Corporation | Technique for secure computation |
US9503268B2 (en) * | 2013-01-22 | 2016-11-22 | Amazon Technologies, Inc. | Securing results of privileged computing operations |
US10063380B2 (en) * | 2013-01-22 | 2018-08-28 | Amazon Technologies, Inc. | Secure interface for invoking privileged operations |
US9055038B1 (en) * | 2013-02-04 | 2015-06-09 | Stealth Software Technologies, Inc. | Apparatus, system, and method to garble programs |
US9141823B2 (en) * | 2013-03-15 | 2015-09-22 | Veridicom, Sa De Cv | Abstraction layer for default encryption with orthogonal encryption logic session object; and automated authentication, with a method for online litigation |
US9104862B2 (en) * | 2013-04-01 | 2015-08-11 | Uniquesoft, Llc | Secure computing device using new software versions |
US10275593B2 (en) * | 2013-04-01 | 2019-04-30 | Uniquesoft, Llc | Secure computing device using different central processing resources |
US9361456B2 (en) * | 2013-04-01 | 2016-06-07 | Uniquesoft, Llc | Secure computing device using a library of programs |
US9424421B2 (en) | 2013-05-03 | 2016-08-23 | Visa International Service Association | Security engine for a secure operating environment |
US9558358B2 (en) * | 2013-06-27 | 2017-01-31 | Visa International Service Association | Random number generator in a virtualized environment |
WO2015026336A1 (en) * | 2013-08-21 | 2015-02-26 | Intel Corporation | Processing data privately in the cloud |
US9235692B2 (en) * | 2013-12-13 | 2016-01-12 | International Business Machines Corporation | Secure application debugging |
CN106664206B (zh) * | 2014-06-18 | 2020-05-12 | 维萨国际服务协会 | 用于已认证的通信的高效方法 |
RU2710897C2 (ru) * | 2014-08-29 | 2020-01-14 | Виза Интернэшнл Сервис Ассосиэйшн | Способы безопасного генерирования криптограмм |
US9584517B1 (en) * | 2014-09-03 | 2017-02-28 | Amazon Technologies, Inc. | Transforms within secure execution environments |
US9735968B2 (en) * | 2014-10-20 | 2017-08-15 | Microsoft Technology Licensing, Llc | Trust service for a client device |
CA2970195A1 (en) * | 2014-12-16 | 2016-06-23 | Kyndi, Inc. | Method and apparatus for randomizing computer instruction sets, memory registers and pointers |
US9942034B2 (en) * | 2015-02-13 | 2018-04-10 | Visa International Service Association | Confidential communication management |
US9596263B1 (en) * | 2015-02-23 | 2017-03-14 | Amazon Technolgies, Inc. | Obfuscation and de-obfuscation of identifiers |
US10484168B2 (en) * | 2015-03-02 | 2019-11-19 | Dell Products L.P. | Methods and systems for obfuscating data and computations defined in a secure distributed transaction ledger |
US9712503B1 (en) * | 2015-03-23 | 2017-07-18 | Amazon Technologies, Inc. | Computing instance migration |
US20160294794A1 (en) * | 2015-04-04 | 2016-10-06 | Aleksandar Mancic | Security System For Data Communications Including Key Management And Privacy |
CN107820604B (zh) * | 2015-04-14 | 2021-09-21 | 吉佳维申公司 | 具有联网设备的计算机驱动***的半虚拟化安全威胁防护 |
JP6397590B2 (ja) * | 2015-05-19 | 2018-09-26 | クリプトムーヴ, インコーポレイテッドCryptomove, Inc. | データ隠蔽によるセキュリティ |
US20180089415A1 (en) * | 2015-06-11 | 2018-03-29 | International Business Machines Corporation | User trusted device for detecting a virtualized environment |
US9667606B2 (en) * | 2015-07-01 | 2017-05-30 | Cyphermatrix, Inc. | Systems, methods and computer readable medium to implement secured computational infrastructure for cloud and data center environments |
-
2015
- 2015-07-21 US US14/804,713 patent/US10110566B2/en active Active
-
2016
- 2016-07-20 CA CA2998323A patent/CA2998323C/en active Active
- 2016-07-20 KR KR1020187005125A patent/KR102315831B1/ko active IP Right Grant
- 2016-07-20 AU AU2016297559A patent/AU2016297559B2/en active Active
- 2016-07-20 CN CN201680054703.XA patent/CN108476198B/zh active Active
- 2016-07-20 EP EP16828463.6A patent/EP3326345B1/en active Active
- 2016-07-20 JP JP2018523361A patent/JP6880017B2/ja active Active
- 2016-07-20 DK DK16828463.6T patent/DK3326345T3/da active
- 2016-07-20 WO PCT/US2016/043117 patent/WO2017015357A1/en active Application Filing
-
2018
- 2018-01-21 IL IL257040A patent/IL257040B/en active IP Right Grant
- 2018-09-28 US US16/146,212 patent/US10652216B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559458A (zh) * | 2013-10-09 | 2014-02-05 | 广州华迅网络科技有限公司 | 数据散列获取方法及其*** |
CN104243166A (zh) * | 2014-09-05 | 2014-12-24 | 深圳市中兴移动通信有限公司 | 录音加密方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US10110566B2 (en) | 2018-10-23 |
WO2017015357A1 (en) | 2017-01-26 |
US10652216B2 (en) | 2020-05-12 |
CA2998323A1 (en) | 2017-01-26 |
AU2016297559B2 (en) | 2020-09-03 |
JP2018522291A (ja) | 2018-08-09 |
US20170026342A1 (en) | 2017-01-26 |
US20190044915A1 (en) | 2019-02-07 |
EP3326345A4 (en) | 2019-03-27 |
CN108476198A (zh) | 2018-08-31 |
DK3326345T3 (da) | 2021-10-11 |
IL257040A (en) | 2018-03-29 |
EP3326345B1 (en) | 2021-10-06 |
AU2016297559A1 (en) | 2018-03-15 |
JP6880017B2 (ja) | 2021-06-02 |
CA2998323C (en) | 2022-06-07 |
KR102315831B1 (ko) | 2021-10-22 |
KR20180084732A (ko) | 2018-07-25 |
IL257040B (en) | 2020-02-27 |
EP3326345A1 (en) | 2018-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108476198B (zh) | 用于执行计算机程序的方法和*** | |
US9819657B2 (en) | Protection of memory interface | |
US10484170B2 (en) | Custom encryption function for communications between a client device and a server device | |
KR101143041B1 (ko) | 리볼빙 버퍼들을 이용한 스트림 암호 설계 방법 | |
US9565018B2 (en) | Protecting cryptographic operations using conjugacy class functions | |
US8699702B2 (en) | Securing cryptographic process keys using internal structures | |
US8976960B2 (en) | Methods and apparatus for correlation protected processing of cryptographic operations | |
KR20150090438A (ko) | 화이트박스 암호 장치 및 그 방법 | |
CN114175572A (zh) | 利用拟群运算对加密数据实行相等和小于运算的***和方法 | |
Lambić | Cryptanalyzing a novel pseudorandom number generator based on pseudorandomly enhanced logistic map | |
US10075290B2 (en) | Operator lifting in cryptographic algorithm | |
CN111602367B (zh) | 用于保护在使白盒密码算法安全的对策中使用的熵源的方法 | |
Ullagaddi et al. | Symmetric synchronous stream encryption using images | |
EP3931999A1 (en) | Method secured against side-channel attacks with a new masking scheme protecting linear operations of a cryptographic algorithm | |
EP3391264B1 (en) | Calculating device and method | |
Mazonka et al. | Practical data-in-use protection using binary decision diagrams | |
Czubak et al. | A Note on Keys and Keystreams of Chacha20 for Multi-Key Channels | |
Ramamoorthy et al. | Recursively Seeded Image Encryption Algorithm | |
Fu et al. | A new color image encryption scheme based on chaotic hénon Map and lü System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |