CN104025104A - 具有密钥驱动的混淆的虚拟机设备和方法 - Google Patents
具有密钥驱动的混淆的虚拟机设备和方法 Download PDFInfo
- Publication number
- CN104025104A CN104025104A CN201280066610.0A CN201280066610A CN104025104A CN 104025104 A CN104025104 A CN 104025104A CN 201280066610 A CN201280066610 A CN 201280066610A CN 104025104 A CN104025104 A CN 104025104A
- Authority
- CN
- China
- Prior art keywords
- coding
- instruction
- virtual machine
- data
- code
- 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 description 78
- 238000004590 computer program Methods 0.000 claims description 17
- 230000006870 function Effects 0.000 description 23
- 150000001875 compounds Chemical class 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000036541 health Effects 0.000 description 5
- 230000008707 rearrangement Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 235000021438 curry Nutrition 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000015654 memory Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003449 preventive effect Effects 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一种虚拟机设备100包括:多个操作例程122、124、126,每个例程被配置成执行特定指令;以及选择器110,其被配置成接收编码的指令,该编码的指令通过利用代码编码对明文指令编码而获得,该选择器被配置成选择和激活所述多个操作例程中的相应操作例程,该相应操作例程被配置成执行与编码的指令相应的明文指令,该选择器110包括用于查找编码的指令以便选择相应操作例程的查找构件。
Description
技术领域
本发明涉及一种被配置成执行接收的指令序列的虚拟机设备。
本发明也涉及一种用于执行接收的指令序列的方法。
背景技术
近年来,云计算变成一种受消费者因特网服务启发的新的消费和交付模型。云计算是一种用于IT供应的服务模型,经常基于虚拟化和分布式计算技术并且典型地为按需式的。关于云计算的介绍,参见ENISA, "Cloud computing benefits, risks and recommendations for information security," The European Network and Information Security Agency (ENISA), 2009年11月。
云计算架构的益处包括高度抽象的资源、近乎即时的可扩展性和灵活性、几乎瞬时的供应、共享的资源(例如硬件、数据库、存储器)、通常与“现买现付”计费系统一起的“按需服务”、例如通过Web服务API的编程式管理。利用云计算,公司可以按需立即扩增计算或存储能力,而不必投资新的基础设施。
云计算通过合并三个服务模型,即软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(IaaS)而支持基础设施分层概念。
云基础设施即服务(IaaS)提供了可以通过服务API控制的虚拟机和其他抽象硬件和操作系统。提供给订户的能力是供应其中消费者能够部署和运行任意软件的处理、存储、网络和其他基本计算资源,所述软件可以包括操作系统和应用程序。IaaS在我们将其称为硬件即服务的情况下更易于理解。我们将硬件即服务分类成:(i)计算即服务(CaaS),其提供基于虚拟机的服务器;以及(ii)数据即服务(DaaS),其提供数据存储空间。
云平台即服务(PaaS)允许顾客使用远程部署且可配置的API开发新应用程序。提供的平台包括开发工具、配置管理和部署平台。提供给消费者的能力是将使用提供商支持的编程语言和工具创建的消费者创建或采购的应用程序部署到云基础设施上。PaaS模型典型地高于IaaS一个级别操作。OS环境和应用程序开发框架已经被提供,而PaaS利用应用程序环境操作。
软件即服务(SaaS)是提供给消费者的软件,允许使用运行在云基础设施上的提供商的应用程序。这些应用程序可通过诸如web浏览器之类的瘦客户端接口从各种不同的客户端设备访问。消费者不管理或控制底层的云基础设施,包括网络、服务器、操作系统、存储装置或者甚至各应用程序能力,可能的例外是有限的特定于用户的应用程序配置设置。
云计算的一个特征是虚拟化和在不同应用程序之间共享资源的能力,以便例如最大化机器利用的投资回报。不同于其中每个应用程序运行在它自身的服务器上的非虚拟化环境,虚拟化使得一台主机能够被虚拟化为支持多个独立的操作系统和应用程序。这可以导致例如订户的用于硬件采购和维护成本的成本节省。
虚拟化是其他软件在其上运行的软件和/或硬件的仿真。称为VM的虚拟机是通过虚拟化创建的仿真环境。虚拟机由也称为“超级监督者”的虚拟机监视器(VMM)管理。超级监督者是一个管理主机上的访客OS并且控制访客OS与物理硬件之间的指令流的虚拟化组件。
云计算是一种用于交付诸如网络、服务器、存储装置或者软件应用程序之类的计算资源的新模型。云计算越来越多地被使用。然而,一些处理诸如健康护理之类的敏感数据的市场部门由于隐私和安全问题而犹豫不决。在云中存储敏感数据和/或应用程序引起法律、商业和伦理问题。不仅数据的机密性是个问题,软件的机密性也是个问题。例如,如果利用标准化虚拟机(VM)执行存储在商品公用云中的应用程序,那么数据可能被公开,并且应用程序的执行可能被观察到。
发明内容
云计算的益处经常遭受关于信任、隐私和安全的担忧。在处理非常敏感的健康数据并且其中责任起着非常重要的作用的健康护理领域中,情况尤其如此。对于许多公司和健康护理提供商而言,云上的涉及公开许多患者数据记录的隐私侵犯是严重的。简单地对数据加密并且将加密数据存储在云上产生许多限制,因为密钥必须也存储在云上以便允许处理数据。这产生了潜在地可利用的漏洞。此外,通过移动在云上做数据处理的应用程序,许多公司担心它们的算法和方法被公开,并且它们将失去区别性特征和竞争优势(以“临床决策支持”(CDS)推理算法和知识为例)。给定前述问题,许多公司和公共机构仍然犹豫使用云计算的益处,等待将增强云解决方案的信任、机密性和安全性的解决方案。
一种有利的虚拟机设备包括:多个操作例程,每个例程被配置成执行特定指令;以及选择器,其被配置成接收编码的指令。编码的指令通过利用代码编码对明文指令编码而获得。选择器被配置成选择和激活所述多个操作例程中的相应操作例程。该相应操作例程被配置成执行与编码的指令相应的明文指令。选择器包括用于查找编码的指令以便选择相应操作例程的查找构件。
“明文”指的是“纯文字”,即没有编码或加密的文字。例如,明文代码是未编码/未加密的代码。
典型地,选择器将被配置成接收加密指令序列,该加密指令序列通过利用代码编码对明文指令序列加密而获得。选择器于是被配置成迭代地选择加密指令序列的下一个加密指令并且激活所述多个操作例程中的相应操作例程,该相应操作例程被配置成执行与选择的下一个加密指令相应的明文指令。
在已知虚拟化方法中,云上的虚拟机的数据和执行可被外部敌手和恶意知情者(例如云服务提供商)观察到。计算过程的这种可观察性和信息公开在人们想要确保以下几项的情况下可能有问题:
1. 云上数据(例如上传到云的患者健康数据)的机密性;
2. 私下执行虚拟化程序或操作系统以便确保保护程序中的算法的知识产权;
3. 将数据绑定到某个VM和应用程序,使得只有特定的VM和应用程序才能解密云上存储的数据。
本发明解决了云上运行的虚拟机、应用程序和数据的机密性和不可观察性以及将数据绑定到虚拟机和应用程序的技术实施。
将数据和代码与VM相联系,使得没有或者有限的知识可从输入和代码中观察到。也可以将输出与VM相联系,使得从VM的输出提取的知识也是有限的。
本发明公开使得云用户能够通过保持云上的数据和/或应用程序代码被加密而显著地降低云上的隐私侵犯的风险。加密密钥在云上受保护,隐藏它们并且将它们绑定到虚拟机及在该虚拟机上运行的应用程序。重构应用程序的输入、语义和输出是困难(艰难)的。重构程序的语义通常是一项繁重的任务。对于通过编码和重新编码与应用程序相联系(即无权访问指令的语义)的VM,这可能花费若干年。
本发明和许多优选实施例利用了编码(这样的代码编码、输入编码、输出编码、内部编码等等)。编码是一种将一定范围的整数数字映射到相同范围的双射(也称为双射函数或者一一对应关系)。该范围典型地以0开始并且典型地向上直到2的幂减去1。整数数字可以表示数据或指令。编码的逆被表示为解码。
编码包括例如利用特定的、典型地固定的密钥的加密。例如,编码可以是密码(例如分组密码)的实现方式。优选地,使用用作编码的密码的白盒实现方式。
编码的一个重要性质是,如果编码用表格T构成,那么它们无缝地一起合并成新表格。如果将编码记为O,那么新表格将是(O ° T, T ° O-1)之一。这对于表示为WB的表格网络同样成立,其变成(WB[Ek] ° T, T ° WB[Dk])之一。
有利的是,将编码实现为表格。使用表格的优点在于,如果要执行也表示为表格的后续操作,那么这些表格可以合并成通过一个接一个地应用表格而获得的新表格。
编码也可以表示为用于特定密钥的加密。这多少简化了实现方式。例如,代码编码可以作为利用加密密钥的加密而获得。
查找表构件优选地为查找表。然而,这样的表格可以以各种不同的形式实现;例如,实现为if/then/else语句的长序列,或者实现为具有许多分支的case语句。
在一个实施例中,查找构件将编码的指令作为索引并且产生到正确的相应例程的指针。到相应操作例程的指针可以用来激活相应操作。
在另一实施例中,也产生直接数据以供相应例程使用。
查找构件可以是查找表,例如要查找的依照索引分类的项目列表。在上面的情况下,查找表可以是到依照编码的指令分类的正确的相应例程的指针列表。按照这种方式,该表只需一列。如果一些编码的指令未使用,那么它们可以用假指针(例如全零)表示。
查找构件也可以是具有两个(或更多)列的表格,例如,第一列包含索引(例如编码的指令),第二列包含查找的对象(例如相应指针)。
在一个实施例中,查找表可以通过对被配置成接收明文指令的规则虚拟机设备的查找表重新排序而获得。有趣的是,通过将对编码的指令解码和解析指令相结合以获得正确操作,避免了显式的解密或解码操作。
编码的指令可以通过仅仅对指令编码而获得。这给出了小的查找构件。例如,如果存在256个可能的指令,那么可以将查找构件实现为大小为指针大小的256倍的查找表。
然而,编码的指令也可以通过将明文指令和直接数据一起编码而获得。这将给出更大的查找构件。例如,如果直接数据为一个字节,那么可以将查找构件实现为大小为指针字节大小的256*256倍+1的查找表。
尽管这将使查找构件增大,但是大大地增加了混淆量。表格中的特定行与指令之间将不再存在固定的关系。
直接数据是包含在代码流中的指令要对其起作用的数据,并且包括指令所对应的操作要对其起作用的常数、参数或操作数。
直接数据可以包括例如用于否定操作的单个数据项。直接数据可以包括例如用于加法的多个数据项,例如两个数据项。
举例而言,编码的指令通过将明文指令与直接数据一起编码到分组密码的单个分组中而获得。
应当指出的是,编码的指令也可以通过将直接数据的第一部分与指令一起编码在没有直接数据的第二部分的情况下获得。这将降低表格的大小。第二部分可以利用输入编码进行编码。可以将输入编码再编码成内部编码,但是也可以将其留在指令上,在这种情况下,操作例程可以适于接收利用输入编码而编码的第二部分。特别地,如果直接数据是代码通道(即代码流或代码序列)的部分,那么该后一选项是优选的,因为它避免了解析代码的需求。
可以在利用代码编码与明文指令一起编码之前利用输入编码对直接数据编码。
在一个实施例中,虚拟机设备包括被配置成接收另一数据以供操作例程使用的输入再编码器,该另一数据利用输入编码进行编码,该输入再编码器被配置成利用输入解码对数据解码并且利用内部编码进行编码。例如,输入再编码器可以包含用于查找编码的另一数据并且在表格中找到重新编码的另一数据的查找构件。例如,代码可以表示用于分析医疗数据(比如图片)的专有算法;所述另一数据可以表示医疗数据本身。
输入再编码器可以被配置成接收操作数以供操作例程使用。输入再编码器可以包括被配置成利用输入解密密钥解密的解密器。该解密器可以是白盒解密器。输入再编码的结果典型地存储在虚拟机设备的存储器中。
在一个实施例中,虚拟机设备包括被配置成接收由操作例程产生的数据结果的输出再编码器。该输出再编码器被配置成将利用内部解码而编码的数据结果再编码为利用输出编码而编码的数据结果。
诸如输入再编码器、输出再编码器、内部再编码器等等之类的再编码器可以通过首先施加解码操作,接着施加编码操作而获得。应当指出的是,这两个操作可以合并成单个操作,比如单个查找构件,例如查找表。
输出再编码器可以包括被配置成利用输出加密密钥加密的加密器。该加密器可以是白盒加密器。
数据和算法IP公开的风险通过将编码与VM的(可选的)输入功能、VM的解码器和/或VM的(可选的)输出功能合并而减少。在云上加密数据和应用程序,然而密钥是未知的(在编码与加密相应的情况下)。在例如通过随机双射进行混淆的情况下,攻击者不知道数据项“k”表示什么,因为“k”只是他未知的混淆集合的第k个元素。
在一个实施例中,所述多个操作例程和/或尤其是相应操作例程被配置成接收利用第一编码进行编码的数据并且产生利用第二内部编码进行编码的结果,该编码的结果通过以下方式获得:
- 利用第一解码对编码的数据解码,
- 对解码的编码数据执行与编码的指令相应的明文指令以便获得结果,
- 利用第二内部编码对结果编码。
优选地,将所述解码、执行和编码步骤组合成单个表格或者表格网络。
第一编码可以是内部编码。第二内部编码可以是与第一编码相同的编码。第一编码可以是输入编码。
在一个实施例中,虚拟机设备包括一个或多个再编码指令。例如,它们可以是表格{O-1 k和Ol }、{Ok和O-1 l}或者表格网络{Wb[Ek]和Wb[Dl]}、Wb[El]和Wb[Dk]}的复合。
利用第一编码进行编码的数据是以下任何一个:编码的直接数据,从虚拟机的存储器获得的利用内部编码进行编码的数据,从虚拟机设备的寄存器获得的利用内部编码进行编码的数据,接收的利用输入编码进行编码的数据。
所述相应操作例程可以被实现为查找构件,例如查找表,或者被实现为表格网络。查找构件被配置用于查找编码的数据以便获得所述结果。这样的表格可以通过列出用于每个可能的输入的操作结果而编译。
如果操作是无条件跳转,那么可以无需查找表。应当指出的是,代码和/或数据的编码可以有利地与地址空间的编码结合。这只需地址的编码以及代码的相应重新排序。它具有以下结果:组成操作的代码将分摊在代码上。用于有条件跳转的操作可以包括将条件与其有关的操作数作为输入的查找构件以及指示是否进行跳转的单个输出比特(或者给定输入情况下的目标表格)。
如果所述操作作用于诸如直接数据或者来自存储器/寄存器的数据之类的数据,那么可以通过对于所有这样的数据执行所述操作而产生表格。该表格之前可以有用于移除对于直接数据的编码的解码表。该表格之后可以有编码,比如内部编码。
如果所述操作需要移动或者写数据,那么这样的操作可以像通常那样进行,考虑地址编码(如果其被使用的话)。
明文指令可以与java字节代码相应。也可以使用“java杯”。
本发明的另一方面是一种指令编码器,该指令编码器被配置成利用代码编码对指令编码并且可选地利用输入编码对数据编码。该指令编码器可以是编译器或者优选地链接器的部分,比如后链接步骤的部分。应当指出的是,后链接步骤可以使用至少两个密钥,一个用于直接数据并且一个对指令加密。
例如,指令的直接日期可以用一个或多个输入密钥加密,在这发生之后,通过指令密钥对现在包含加密的直接数据的指令加密。
本发明的另一方面是一种分布式执行系统,其包括指令编码器和虚拟机设备。
本发明的另一方面涉及一种虚拟机方法。该虚拟机方法包括:接收编码的指令,该编码的指令通过利用代码编码对明文指令编码而获得;查找编码的指令以便选择多个操作例程中的相应操作例程,该相应操作例程被配置成执行与编码的指令相应的明文指令;以及激活该相应操作例程。
在一个实施例中,所述方法包括通过利用代码编码对明文指令序列中的每个明文指令编码(例如利用代码加密密钥对明文指令序列中的每个明文指令加密)而获得加密指令序列。
若干云计算使用案例是可能的。例如,将数据移动到云在保持隐私保护的同时减少了硬件。例如,可以将诸如患者数据之类的隐私敏感信息存储在云中。为了避免敏感数据泄漏,数据的整个处理可以在加密域中执行,即通过使用加密指令和数据执行。优选地,对VM的输入和输出数据二者加密。
一种分布式执行系统也可以包括用于接收来自虚拟机设备的结果的接收器。该接收器可以包括用于移除虚拟机设备的输出编码的输出解码器。例如,该接收器可以置于使用虚拟机设备处理医疗数据的医院处。
可以将虚拟机设备嵌入到电子设备,尤其是服务器中。也可以将虚拟机设备嵌入到移动设备(例如移动电话、机顶盒、计算机、平板计算机等等)中。
可以将虚拟机设备嵌入到安全令牌中。安全令牌包括虚拟机设备,并且被配置成接收:用于执行挑战响应协议的代码以及挑战。该代码利用代码编码进行编码,该挑战利用输入编码进行编码。安全令牌因此可以以软件实现并且运行在不受信任的环境中。
依照本发明的方法可以在计算机上实现为计算机实现的方法,或者在专用硬件中实现,或者在这二者的组合中实现。可以将用于依照本发明方法的可执行代码存储在计算机程序产品上。计算机程序产品的示例包括存储器设备、光学存储设备、集成电路、服务器、在线软件等等。优选地,计算机程序产品包括存储在计算机可读介质上的非暂时性程序代码构件,该程序代码构件用于当所述程序产品在计算机上执行时执行依照本发明的方法。
在一个优选的实施例中,计算机程序包括计算机程序代码构件,该计算机程序代码构件适于当所述计算机程序在计算机上运行时执行依照本发明的方法的所有步骤。优选地,该计算机程序包含在计算机可读介质上。
附图说明
通过示例的方式且参照附图进一步详细地解释本发明,在附图中:
图1a为图示出依照本发明的虚拟机的框图,
图1b为示出操作例程的,尤其是操作例程126的可能实现方式的框图,
图2为图示出使用依照本发明的虚拟机的系统的框图,
图3为图示出白盒密码的框图,
图4a、图4b、图4c、图4d和图4e图示出加密代码和/或数据的各种不同的方式,
图5a图示出本发明的一个实施例,
图5b图示出构造用于操作的查找表,
图6为图示出对代码、数据加密和对输出解密的框图,
图7为图示出依照本发明的虚拟机的框图,
图8为图示出依照本发明的方法的流程图。
在所有图中,相似或相应的特征由相同的附图标记指明。
具体实施方式
尽管本发明容许实施例处于许多不同的形式,但是在附图中示出且将在这里详细地描述一个或多个具体实施例,应理解的是,本公开应当被认为例示了本发明的原理且并非意在将本发明限制为所示和所描述的具体实施例。
白盒密码术
本发明可以利用白盒密码术。白盒密码术解决白盒模型中的威胁。白盒攻击模型用来分析运行在不能信任的执行环境中的算法,该环境即其中应用程序受到来自执行平台的攻击的环境。
可以区分捕获敌手对密码系统的攻击能力的三个主要攻击模型。这些模型如下:
- 黑盒模型确保敌手仅仅有权访问密码系统的功能并且它是传统攻击模型。
- 灰盒模型通过泄漏功能允许敌手部署旁通道密码分析技术。
- 白盒模型允许敌手具有密码系统的软件实现方式的总的可见性,以及对于其执行平台的完全控制。白盒模型可以称为最坏情况模型。
白盒的攻击模型因此需要特别的预防措施以应对这些具有的条件。存在用于各种不同算法的白盒实现方式;这些实现方式可以用在本发明中。对于均用于加密和解密的分组密码DES和AES的示例,白盒实现方式是可用的。
现有白盒实现方式的一个缺点在于,它们仅仅适合于一个目的,加密或解密,典型地仅仅适合于一个特定密钥。本发明提供了一种允许在白盒攻击模型中执行任意代码、然而仍然提供安全性的虚拟机。
白盒可以用在本发明中,例如任何一个输入解码。但是,依照本发明的白盒密码和虚拟机是截然不同的。白盒密码不能运行代码。
白盒加密或解密基元典型地实现诸如对称密码之类的密码。优选地,使用分组密码的白盒实现方式。例如,输入再编码器(可能地输入解码、内部编码中的一个或二者)、输出再编码器(可能地内部解码、输出编码中的一个或二者)或者再编码指令中的任何一个可以被实现为或者包括白盒加密或解密。
白盒密码是一种其中秘密密钥被实例化的软件实现方式。目标在于,白盒密码的努力至少与对于底层密码的黑盒(例如强力)攻击一样大。一种理想的解决方案可以是将密码实现为一个大的查找表。然而,这对于实际的分组密码是不可行的。“A White-Box DES Implementation for DRM Applications” by S. Chow, P. Eisen, H. Johnson, and P.C. van Oorschot, 2002 [42,43] published in the book Digital Rights Management of the Lecture Notes in Computer Science 2003中介绍了一种接近这种理想方案的白盒策略。计算,尤其是分组密码可以被实现为查找表网络,被随机化,使得密钥信息散布在整个网络上。可以使得每个构造分组无缝地独立于密钥。使得敌手被迫分析整个网络以便获得秘密密钥信息。表格网络的混淆通过将混淆变换前置和追加到表格中写出的变换而成为可能。按照这种方式,每个单独的表格被随机化,同时取消了所有混淆变换的组合。
图3图示出表格网络。大多数功能可以表示为表格网络。例如,表格网络可以是例如密码的一种白盒实现方式。示出了多个表格中的8个表格。表格通过输入值的表格查找将输入值变换为输出值。示出了用于接收白盒实现方式外部的输入的输入表格310中的三个。示出了输出表格330之一。输出表格330例如通过级联一起形成白盒实现方式的输出。示出了中间表格320中的四个表格,其接收来自所述表格中的另一个的至少一个输入并且其产生用作用于至少一个其他表格的输入的输出。表格310、320和330一起形成网络。密码可以是分组密码;分组密码可以被配置用于加密或解密。分组密码加密用于特定密钥的分组密码,比如AES;这些表格依赖于该特定密钥。
图1a为图示出虚拟机100的框图。虚拟机100接收来自代码通道210的代码、来自输入通道240的输入数据并且产生到输出通道260的输出。在本说明书中,通道被抽象化。虚拟机100典型地以软件实现并且运行在计算机(未示出)上。
从代码通道210,虚拟机100接收也称为指令的操作序列。例如,这些指令可以是字节代码,例如java字节代码,或者8086汇编指令。例如,代码通道210可以是用于从诸如互联网之类的网络或者其上存储了代码文件的文件服务器接收代码的输入。代码可以存储在其中托管了虚拟机100的相同计算机处。典型地,将操作表示为数据项,例如码字。为了易于讨论,我们将操作的精确起源抽象为代码通道210。
虚拟机100包括选择器110。选择器110读取来自从代码通道210接收的操作序列的操作,并且确定用于执行该操作的适当操作例程。选择器110可以被实现为所谓的“case”语句。这样的case语句接收例如表示为数值操作数的操作作为输入,并且跳转到用于执行的适当例程作为输出。可替换地,选择器110可以被实现为测试接收的操作与由操作例程表示的操作之间的相等的比较语句序列。如果比较语句成功,即如果存在相等,那么可以例如通过go-to命令将控制转移到相应操作例程。
在虚拟机100中的所述多个操作例程中,图1a中示出了操作例程122、124和126。举例而言,更详细地绘出了操作例程126。然而,例程122和124与操作例程126类似地被配置。选择器110根据接收自代码通道210的操作数开始执行操作例程。举例而言,假设操作例程126被选择器110选择。应当指出的是,如果使用了地址加密,那么包括例程122、124和126的操作例程的原始地址只是变成其他地址。
在图1的实施例中,假设所有编码都被实现为加密,例如用于特定密钥的对称加密。将编码表示成加密提供了用于选择随机双射的有效方式。在加密用于编码的情况下,我们有时使用术语加密器代替编码器,并且使用解密器代替解码器。然而,不必将编码限制为任何特定的加密,尤其是如果用查找构件实现编码、解码和再编码,那么也可以使用任何随机双射;例如随机双射或者具有特殊性质的双射,例如,该双射的部分可以依赖于虚拟机设备在其上实现的底层硬件的性质。
接收自代码通道210的操作已经例如通过代码加密器414在秘密密钥的控制下用加密密码加密。例如,分组密码可以用来例如在码书模式下对代码加密。
图6图示出这点。在使用VM之前,明文代码例如通过首先创建明文代码(即这里表示为明文代码通道412的明文指令序列)来用代码密钥(即密钥k)加密。操作由代码加密器414加密,得到可以在代码通道210上使用的加密的操作。优选地,对代码加密在编译之后,例如在链接期间进行。为了补偿操作的加密,有趣的是,在VM 100中不显式地需要相应的解码步骤。例如,可以打乱所述多个操作例程,使得响应于加密的操作,选择器110选择正确的操作例程。如果白盒实现方式用于操作例程,那么从加密的操作重构正确的操作将是艰难的。在此之后,可以对case标签重新排序(例如分类)。
优选地,代码加密器414从表示所有可能的操作的值范围加密到相同范围。可替换地,可以使用小范围加密器;例如,如果使用了字节代码,那么可以使用字节大小的分组密码。也可以使用16比特大小的分组密码。例如,代码加密器414可以将表示为固定比特大小的字的明文指令加密为表示为相同比特大小的字的加密指令;典型的比特大小包括4、8、16和32。例如,可以从更长的分组大小到更小的分组大小调适分组密码。例如,诸如DES之类的Feistel密码可以通过将轮函数截断到希望的分组大小的一半而进行调适。例如,AES可以通过将每轮限制为希望数量的字节或字而进行调适。举例而言,可以让代码加密器414使用码书模式。
图6也示出了明文输入通道422和输入加密器424。输入加密器424可以用来在将明文输入发送至虚拟机设备100之前对其加密。图6也示出了可以用来对虚拟机设备100的输出解密的输出解密器464。
图1a进一步示出了存储器132和寄存器文件134。操作例程(例如操作例程126)可以读或写入本地临时或非易失性存储装置。
操作例程(例如操作例程126)可能需要一个或多个操作数以用于它们实现的操作。虚拟机100有权访问输入通道240。再一次地,尤其是在云中,多种可替换方案对于输入通道240是可能的。例如,虚拟机100可以经由利用分布式存储或者计算的其他计算机接收输入。虚拟机100可以接收来自用户等的输入。到虚拟机100的输入可以被加密或者可以不被加密。该输入可以通过输入再编码器140朝着操作例程内部使用的编码而再编码。如果操作例程进一步对典型地临时存储的中间结果起作用,那么存储器132或者寄存器文件134通常无需再编码,因为它们已经存储在操作例程126所使用的编码中。白盒密码术和混淆配对尤其适合于编码、解码和再编码。
操作例程(例如操作例程126)可以为其操作而使用一个或多个操作数。虚拟机100有权访问输入通道240。再一次地,尤其是在云中,多种可替换方案对于输入通道240是可能的。例如,虚拟机100可以经由利用分布式存储或者计算的其他计算机接收输入。虚拟机100可以接收来自用户等的输入。到虚拟机100的输入可以被加密或者可以不被加密。该输入可以通过输入再编码器140朝着操作例程内部使用的编码而再编码。如果外部编码与输入(即操作数)的内部编码相同或者如果未使用输入数据的加密,那么可以省略输入再编码器140。
操作例程也可以产生用于导出的数据,即虚拟机100的输出。将输出发送至输出通道260。输出可以以许多方式从虚拟机100导出。例如,可以将输出结果发送至另一个计算机,例如,例如通过网络从其接收输入的相同计算机。可以将输出写到可能地在不同计算机上的文件,可能地以供进一步用作分布式计算和/或存储的部分的文件。虚拟机100的输出可以被加密或者可以不被加密。如果虚拟机100不使用内部加密,例如仅仅对代码通道210使用加密,或者如果虚拟机100将与用于内部使用的相同加密用于输出,那么可以省略输出再编码器160。输出再编码器160可以用来将数据再编码为外部使用的加密。
代码通道210和输入通道240可以加以组合,例如交错在一起。
虚拟机100可以以各种不同的方式使用白盒密码或者其他编码。
选择器110可以如下实现:
为了准备用于在虚拟机100上执行的应用程序,使用加密函数E和密钥k对代码(即指令序列)加密。加密函数E优选地可以是分组密码。然后,代码变成加密指令序列,即E_k(指令)序列。E_k表示利用密钥k加密。VM的主循环的解码操作可以利用用密钥k实例化的解密函数的白盒实现方式(即WB[D_k])扩展。通过利用WB[]封装函数而将白盒实现方式例如表示为该函数的表格网络。
虚拟机100的主循环可能看起来像这样:
令人惊奇的是,Decode和WB[Dk]的复合可以“混合”成Melted_WB_and_decoder(x) == Decode (WB[Dk] (x))。可以简单地将完成指令的执行的解码case子句重新排序为“混合”的结果。特别地,在指令的实现(即操作例程)在白盒中进行或者以其他方式混淆的情况下,这移除了用于攻击系统的可能的起始点,即WB[Dk]函数。甚至在操作中不使用白盒的情况下,case子句的任意重新排序也可以发生。
仅仅指令的加密不提供输入数据或输出数据的混淆。在一个改进的实施例中:对用于输入通道240的数据加密。为了补偿该加密,对例如作为通过读访问输入通道240的VM中的指令的部分的输入再编码器140配备WB[ Dk’]。
在可以与上面的改进组合的另一个改进中,利用白盒加密WB[ Ek”]到应用程序的输出通道的写进行加密。之后,于是可以例如在安全平台上使用Dk’’获得结果并且对结果解密。
在又一个改进中,隐藏指令的实际操作以免观察到。为了隐藏操作的功能,使用WB加密编码和解码配对,即WB[EK’’’]和WB[DK’’’]。功能通过这样的配对封装。例如,假定(一元)操作的功能为f,那么新功能变成new_f(x) == WB[EK’’’](f(WB[DK’’’](x)))。如果操作是二元的,那么使用二元操作的Curry形式。通过这样做,寄存器和存储器中的所有信息都变成通过WB[EK’’’]加密。应当指出的是,对于算子的大多数功能(指令语义)而言,封装是不可分的。为了简单起见,可以通过白盒将上面的编码仅仅用于一元操作。
后者也对于输入和输出通道具有影响。由于每个操作期望VM数据通过WB[EK’’’]加密,必须对输入通道加密并且在写到输出通道之前解密。
现在,对输入通道的读将是WB[EK’’’]和WB[Dk.’]的复合,并且对输出通道的写将是WB[DK’’’]和WB[Ek”]的复合。再一次地,应当指出的是,在WB意义上,它们优选地不可分地复合。不可分指的是不能进行可以披露混淆通道、寄存器或指令的可能的部分分解。
密钥k’’’对于每个VM是特定的。密钥k、k’、k’’是VM与应用程序之间共享的秘密。
下面,列出用于输入再编码器140、输出再编码器160和操作例程126中加密(编码/再编码)的各个不同的选项
输入再编码器140 | 输出再编码器160 | 操作例程126 | |
无保护 | 恒等式 | 恒等式 | Oper |
只有输入 | WB[D_k’] | 恒等式 | Oper |
只有操作 | WB[E_k’’’] | WB[D_k‘‘‘] | WB[E_k‘‘‘] o Oper o WB[D_k‘‘‘] |
输入和操作 | WB[E_k’‘‘] o WB[D_k’] | WB[D_k‘‘‘] | WB[E_k‘‘‘] o Oper o WB[D_k‘‘‘] |
输入、操作和输出 | WB[E_k’‘‘] o WB[D_k’] | WB[E_k‘‘] o WB[D_k‘‘‘] | WB[E_k‘‘‘] o Oper o WB[D_k‘‘‘] |
应当指出的是,“o”表示函数复合。函数复合从右向左读。右边的函数最先应用,左边的函数最后应用。恒等式表示恒等变换(无变化)。Oper表示操作例程(例如操作例程126)中执行的操作。代码加密也可以与密钥k一起使用。在这种情况下,选择器110将包括WB[D_k]或者被重新排序以便补偿加密。
上面的表格假设仅仅使用单个代码密钥、单个输入密钥和单个内部密钥。可以对此扩展,因为也可以使用再编码指令,以便从一个内部编码移到另一个编码。如果该实现方式使用密钥,那么可以存在超过一个密钥。由于再编码器指令的原因,混淆可以在应用程序与VM之间分摊。
图1b进一步图示出内部操作的加密。中间的预编码器126a被配置用于WB[Dk’’’],操作126b执行实际操作,并且后编码器126c被配置用于WB[Ek’’’]。按照这种方式,那么首先移除利用内部加密密钥k’’’的内部加密,接着执行操作,并且然后再次应用内部加密。然而,如果执行实际操作的框126b使用表格网络实现,那么这些可以与编码器126a和后编码器126c集成在一起。按照这种方式,即使检查代码本身,操作例程126的操作也是完全混淆的。
图7图示出一种虚拟机,其中代码利用密钥k加密,输入利用密钥k’加密,输出利用密钥k’’加密并且内部操作利用密钥k’’’加密。
虚拟机100可以用在全部可以运行VM并且使用通过Ek加密的代码的服务器环境中。通过这样做,应用程序的代码通过使用白盒加密而完全混淆。没有代码以明文出现。该关系可以通过在VM与应用程序之间的秘密共享而加强。
此外,在可以运行VM的服务器环境中,输入通道也可以利用Ek’加密。通过这样做,应用程序的输入通道被混淆。没有输入值以明文出现。该关系可以通过在VM与应用程序之间的秘密共享而加强。
再者,在可以运行VM的服务器环境中,输出通道可以利用Ek”加密。通过这样做,应用程序的输出通道通过使用白盒加密而被混淆。没有计算值以明文出现。该关系可以通过在VM与应用程序之间的秘密共享而加强。
可以将代码密钥k、输入密钥k’或输出密钥k”中的任何一个绑定到设备id。例如,该密钥可能包括该id。这导致只能在具有正确id的设备处实现的VM。
图4a、图4b、图4c、图4d和图4e图示出对指令和数据编码的各种不同的方式。这些编码可以通过例如作为链接器的部分的指令编码器或者后链接步骤执行。
图4a示出了明文指令510以及明文直接日期520。明文指令510利用代码编码550(例如通过代码编码器550)编码以便获得编码的指令515。直接数据利用输入编码570(例如通过输入编码器570)单独地加密以便获得编码的数据525。为了使用这种类型的编码,虚拟机只需用于将编码的指令映射到正确的操作的查找构件,例如指针,以及用于将编码的数据映射到依照内部编码(在不同于外部编码的情况下)而编码的数据的查找构件。因此,只需小的表格。
图4b示出了一种编码类型,其中明文指令510和明文直接数据二者都直接利用代码加密进行编码。这将要求一起对它们解码,从而出现更高的混淆,但是也出现更大的表格。应当指出的是,如果需要更多的直接数据,那么它可以例如通过输入编码单独地编码。用来对编码的指令517解码的查找构件可以分裂为两个表格;第一表格响应于编码的指令获得操作例程,第二表格响应于直接日期获得操作例程。应当指出的是,表格可以给出任何适当的加密(例如利用内部编码进行编码)的直接数据。
图4c示出了第三种编码方式。在这里,所有直接数据都利用输入编码进行编码。接下来,对指令编码,可能地包括直接数据或者不包括。
图4d示出了部分编码。指令510与直接数据520和512汇编在一起。像在图4c中那样,所有直接数据都利用输入编码570进行编码。然而,只有指令510和编码的数据525利用代码编码550编码,以便获得编码的指令516。将编码的指令516与编码的数据526组合。直接数据的部分编码降低了表格的大小。
应当指出的是,部分编码也可以使用4b的系统来进行。这在图4e中图示出。指令510和直接数据520利用代码编码进行编码以便获得编码的指令517。所述另一直接数据521利用输入编码进行编码。
应当指出的是,所有这些编码可以在适当的位置进行。典型地邻近指令放置直接数据。
可以使指令集合适于简化编码方案。例如,可以将指令集合设计成使得所有指令携带正好一个预定大小(比如1字节或者1个字(比如16比特))的直接数据。需要多个操作数的指令(比如加法)可以从寄存器获取剩余操作数。剩余操作数可以通过居于指令之前而置于寄存器中。不需要操作数的指令可以在操作数字段中具有假值。
图5a图示出选择器可以如何工作。首先,选择器接收编码的指令。在该示例中,所有指令都是固定大小的, 比如1字节(其他大小是可能的)。在该示例中,使用4b或4c的方案对编码的指令编码。例如,明文指令可能是具有明文直接数据0x12的0xaa。它们一起(在该示例中)被编码为0x34ab。通过查找构件(在该案例中为查找表710)查找编码的指令。结果,指向正确操作例程和用于该例程的操作数的信息被找到。例如,可能找到0x22b3,其中0x22指向特定表格。(应当指出的是,可以存在从0x22到指针地址的中间查找表。)操作“0x22”由查找表720表示。在查找表710的结果(0x22b3)中,0xb3部分是直接数据的(在该示例中是0x12的)编码的版本。编码可以利用内部编码进行。接下来,在表格720中查找0xb3。在该案例中,操作采取单个操作数,比如否定操作。查找0xb3以便找到结果,在这里为0xca。该结果已经利用内部编码进行了编码。内部编码可以相同,它可以是不同的内部编码。
查找表710是选择器中包括的用于查找编码的指令以便选择相应操作例程的查找构件的一个示例。
可以将结果0xca放入到虚拟机设备的寄存器中或者存储器中以便可能地进一步用在操作例程或输出中。
可以像在这里那样将操作实现为单个表格。即使需要多个操作数,也可以将操作实现为单个表格。在这种情况下,可以在查找之前将所述多个操作数进行级联。可以将操作实现为表格网络。操作也可以包含规则代码。例如,可以将有条件或者无条件的跳转实现为规则代码。应当指出的是,也可以将有条件的移动实现为表格,其中条件是附加的1比特操作数。
图5b示出了可以如何构造表格。在这个案例中,表格用于两个操作数操作。查找表750表示明文操作的查找表,其中简单地以可复现的顺序列出(比如分类)用于所有可能输入的操作的所有结果。查找表730和740表示用于对输入解码的内部解码操作。查找表760表示用于结果的内部编码。730和740和解码和/或760的编码全部可以与相同的内部编码相应,但是这不是需要的。最后,复合所有操作。例如,可以对于所有可能的输入检查这些表格并且列出所有得到的结果。
图8图示出依照本发明的虚拟机方法600。步骤610包括例如通过获得加密指令序列而接收编码的指令。该编码的指令可以通过利用代码编码对明文指令编码而获得。加密指令序列可以通过利用代码加密密钥对明文指令序列中的每个明文指令加密而获得。明文指令可以是例如表示为整数数字的数字数据项。步骤620包括查找编码的指令以便选择多个操作例程中的相应操作例程。该相应操作例程被配置成执行与编码的指令相应的明文指令。步骤630包括激活该相应操作例程。
典型地,指令的编码将在与步骤610、620和630不同的计算机上执行。所述方法优选地为一种计算机实现的方法。
如本领域技术人员将清楚明白的,执行所述方法的许多不同的方式是可能的。例如,可以改变步骤的顺序,或者可以并行地执行一些步骤。而且,在步骤之间可以插入其他方法步骤。插入的步骤可以表示例如本文所描述的方法的改进,或者可以与所述方法无关。例如,可以至少部分地并行执行步骤620和630。而且,给定步骤可以在开始下一个步骤之前未完全完成。
依照本发明的方法可以使用软件执行,该软件包括用于使得处理器系统执行方法600的指令。软件可以仅仅包括由系统的特定子实体采取的那些步骤。软件可以存储在诸如硬盘、软盘、存储器等等之类的适当存储介质上。可以将软件作为信号沿着导线或者无线地或者使用数据网络(例如因特网)发送。可以使得软件可用于下载和/或用于在服务器上远程使用。
应当理解的是,本发明也扩展到适于将本发明付诸实施的计算机程序,尤其是载体上或载体内的计算机程序。该程序可以是源代码、目标代码、介于源代码与目标代码之间的代码的形式,例如部分编译的形式,或者是适用于实现依照本发明的方法的任何其他形式。涉及计算机程序产品的实施例包含与所阐述的方法中的至少一个的每个处理步骤相应的计算机可执行指令。这些指令可以细分成子例程和/或存储到可以静态地或动态地链接的一个或多个文件中。涉及计算机程序产品的另一个实施例包含与所阐述的系统和/或产品中的至少一个的每个构件相应的计算机可执行指令。
应当指出的是,上面提到的实施例说明了而不是限制了本发明,并且本领域技术人员在不脱离所附权利要求书的范围的情况下将能够设计出许多可替换的实施例。在权利要求书中,置于括号之间的任何附图标记都不应当被视为对权利要求的限制。动词“包括”及其变体的使用并没有排除存在除了权利要求中记载的那些之外的元件或步骤。元件之前的冠词“一”或“一个”并没有排除存在多个这样的元件。本发明可以借助于包括若干不同元件的硬件以及借助于经过适当编程的计算机来实现。在列举了若干构件的设备权利要求中,这些构件中的一些可以由同一硬件项来实施。在相互不同的从属权利要求中记载了特定措施这一事实并不意味着这些措施的组合不可以有利地加以使用。
Claims (15)
1. 一种虚拟机设备(100),包括
- 多个操作例程(122,124,126),每个例程被配置成执行特定指令,以及
- 选择器(110),其被配置成接收编码的指令,该编码的指令通过利用代码编码对明文指令编码而获得,
- 选择器被配置成选择和激活所述多个操作例程中的相应操作例程,该相应操作例程被配置成执行与编码的指令相应的明文指令,
- 选择器(110)包括用于查找编码的指令以便选择相应操作例程的查找构件。
2. 如前面的权利要求中任何一项的虚拟机设备,编码的指令通过利用代码编码将明文指令和与明文指令一起使用的直接数据一起编码而获得,查找构件被配置用于查找编码的指令以便获得直接数据,选择器被配置成利用直接数据激活所述相应操作例程。
3. 如前面的权利要求中任何一项的虚拟机设备,编码的指令通过将明文指令与直接数据一起编码到分组密码的单个分组中而获得。
4. 如权利要求2或3的虚拟机设备,其中在利用代码编码与明文指令一起编码之前利用输入编码对直接数据编码。
5. 如前面的权利要求中任何一项的虚拟机设备,包括被配置成接收另一数据以供操作例程使用的输入再编码器(140),该另一数据利用输入编码进行编码,该输入再编码器被配置成利用输入解码对数据解码并且利用内部编码进行编码。
6. 如前面的权利要求中任何一项的虚拟机设备,包括被配置成接收由操作例程产生的数据结果的输出再编码器(160),该输出再编码器被配置成将利用内部解码而编码的数据结果再编码为利用输出编码而编码的数据结果。
7. 如前面的权利要求中任何一项的虚拟机设备,其中所述相应操作例程被配置成接收利用第一编码进行编码的数据并且产生利用第二内部编码进行编码的结果,该编码的结果通过以下方式获得:
- 利用第一解码对编码的数据解码,
- 对解码的编码数据执行与编码的指令相应的明文指令以便获得结果,
- 利用第二内部编码对结果编码。
8. 如权利要求7的虚拟机设备,其中利用第一内部编码进行编码的数据是以下任何一个:编码的直接数据、从虚拟机的存储器获得的利用内部编码进行编码的数据、从虚拟机设备的寄存器获得的利用内部编码进行编码的数据。
9. 如前面的权利要求中任何一项的虚拟机设备,其中所述相应操作例程被实现为查找构件,该查找构件被配置用于查找编码的数据以便获得所述结果。
10. 如前面的权利要求中任何一项的虚拟机设备,其中所述多个操作例程包括再编码操作,该再编码操作与再编码指令相应,该再编码操作被配置成将利用第一编码进行编码的数据再编码为利用第二编码进行编码的数据。
11. 如前面的权利要求中任何一项的虚拟机设备,其中明文指令与java字节代码相应。
12. 一种分布式执行系统,包括
- 指令编码器,其被配置成利用代码编码对指令编码并且可选地利用输入编码对数据编码,以及
- 如前面的权利要求中任何一项的虚拟机设备。
13. 一种虚拟机方法,包括
- 接收编码的指令,该编码的指令通过利用代码编码对明文指令编码而获得,
- 查找编码的指令以便选择多个操作例程中的相应操作例程,该相应操作例程被配置成执行与编码的指令相应的明文指令,以及
- 激活该相应操作例程。
14. 一种计算机程序,包括计算机程序代码构件,该计算机程序代码构件适于当所述计算机程序在计算机上运行时执行权利要求13的所有步骤。
15. 如权利要求14所述的计算机程序,包含在计算机可读介质上。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261584335P | 2012-01-09 | 2012-01-09 | |
US61/584,335 | 2012-01-09 | ||
US61/584335 | 2012-01-09 | ||
PCT/IB2012/057739 WO2013104969A1 (en) | 2012-01-09 | 2012-12-27 | Virtual machine device having key driven obfuscation and method |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104025104A true CN104025104A (zh) | 2014-09-03 |
CN104025104B CN104025104B (zh) | 2018-05-29 |
Family
ID=47790269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280066610.0A Active CN104025104B (zh) | 2012-01-09 | 2012-12-27 | 具有密钥驱动的混淆的虚拟机设备和方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10191754B2 (zh) |
EP (1) | EP2803009B1 (zh) |
JP (1) | JP6078555B2 (zh) |
CN (1) | CN104025104B (zh) |
BR (1) | BR112014016536A8 (zh) |
RU (1) | RU2620712C2 (zh) |
WO (1) | WO2013104969A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114189324A (zh) * | 2021-11-12 | 2022-03-15 | 湖南遥昇通信技术有限公司 | 一种消息安全签名方法、系统、设备及存储介质 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014095772A1 (en) | 2012-12-21 | 2014-06-26 | Koninklijke Philips N.V. | Computing device comprising a table network |
US10176121B2 (en) * | 2013-07-15 | 2019-01-08 | Infineon Technologies Ag | Apparatus and method for memory address encryption |
US10678709B2 (en) | 2013-07-15 | 2020-06-09 | Infineon Technologies Ag | Apparatus and method for memory address encryption |
EP2876593B1 (en) * | 2013-11-21 | 2018-09-26 | Nxp B.V. | Method of generating a structure and corresponding structure |
JP6357091B2 (ja) * | 2014-12-03 | 2018-07-11 | Kddi株式会社 | 情報処理装置、及びコンピュータプログラム |
WO2016102180A1 (en) | 2014-12-22 | 2016-06-30 | Koninklijke Philips N.V. | Hiding of a program execution |
CN107278357B (zh) | 2014-12-24 | 2020-04-07 | 皇家飞利浦有限公司 | 密码系统和方法 |
KR102311340B1 (ko) * | 2015-01-15 | 2021-10-15 | 한국전자통신연구원 | 암호화 장치 및 방법 |
EP3298720B1 (en) | 2015-05-19 | 2019-03-06 | Koninklijke Philips N.V. | Computing with encrypted values |
US10505709B2 (en) * | 2015-06-01 | 2019-12-10 | Nxp B.V. | White-box cryptography interleaved lookup tables |
US10110566B2 (en) * | 2015-07-21 | 2018-10-23 | Baffle, Inc. | Systems and processes for executing private programs on untrusted computers |
US9767318B1 (en) * | 2015-08-28 | 2017-09-19 | Frank Dropps | Secure controller systems and associated methods thereof |
US10102151B2 (en) | 2015-11-06 | 2018-10-16 | International Business Machines Corporation | Protecting a memory from unauthorized access |
DE102017204020A1 (de) * | 2017-03-10 | 2018-09-13 | Siemens Aktiengesellschaft | Verfahren zur rechnergestützten Obfuskation von Programmcode |
WO2019020830A1 (en) | 2017-07-28 | 2019-01-31 | Koninklijke Philips N.V. | EVALUATION OF A MONITORING FUNCTION |
EP3439225A1 (en) * | 2017-08-02 | 2019-02-06 | Gemalto Sa | Method to secure a software code performing accesses to look-up tables |
US10140612B1 (en) | 2017-12-15 | 2018-11-27 | Clover Network, Inc. | POS system with white box encryption key sharing |
FR3079638B1 (fr) * | 2018-03-29 | 2021-04-09 | Airtag | Procede de mise en oeuvre d'une fonction cryptographique pour une cle secrete |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4120398A1 (de) * | 1991-06-20 | 1993-01-07 | Standard Elektrik Lorenz Ag | Datenverarbeitungsanlage |
JPH10301772A (ja) * | 1997-04-30 | 1998-11-13 | Sony Corp | 情報処理装置および情報処理方法、並びに記録媒体 |
JP2000029790A (ja) * | 1998-07-15 | 2000-01-28 | Matsushita Electric Ind Co Ltd | データセキュリティシステム |
US6779114B1 (en) * | 1999-08-19 | 2004-08-17 | Cloakware Corporation | Tamper resistant software-control flow encoding |
US7124170B1 (en) * | 1999-08-20 | 2006-10-17 | Intertrust Technologies Corp. | Secure processing unit systems and methods |
US8220058B2 (en) | 2003-09-25 | 2012-07-10 | Oracle America, Inc. | Rendering and encryption engine for application program obfuscation |
WO2006118086A1 (ja) * | 2005-04-28 | 2006-11-09 | Matsushita Electric Industrial Co., Ltd. | プログラム変換装置、暗号処理装置、暗号処理方法 |
KR20080113277A (ko) * | 2006-04-28 | 2008-12-29 | 파나소닉 주식회사 | 프로그램 난독화시스템, 프로그램 난독화장치 및 프로그램 난독화방법 |
US8584109B2 (en) * | 2006-10-27 | 2013-11-12 | Microsoft Corporation | Virtualization for diversified tamper resistance |
CN102016871B (zh) * | 2008-03-05 | 2017-11-07 | 爱迪德技术有限公司 | 密码系统 |
JP5599728B2 (ja) * | 2008-03-05 | 2014-10-01 | イルデト・コーポレート・ビー・ヴイ | ホワイトボックス実装 |
US8484661B2 (en) * | 2010-03-19 | 2013-07-09 | At&T Mobility Ii Llc | Agnostic execution cluster for an agnostic execution environment |
-
2012
- 2012-12-27 BR BR112014016536A patent/BR112014016536A8/pt not_active Application Discontinuation
- 2012-12-27 EP EP12829161.4A patent/EP2803009B1/en active Active
- 2012-12-27 US US14/366,283 patent/US10191754B2/en active Active
- 2012-12-27 CN CN201280066610.0A patent/CN104025104B/zh active Active
- 2012-12-27 WO PCT/IB2012/057739 patent/WO2013104969A1/en active Application Filing
- 2012-12-27 RU RU2014132881A patent/RU2620712C2/ru active
- 2012-12-27 JP JP2014550776A patent/JP6078555B2/ja active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114189324A (zh) * | 2021-11-12 | 2022-03-15 | 湖南遥昇通信技术有限公司 | 一种消息安全签名方法、系统、设备及存储介质 |
CN114189324B (zh) * | 2021-11-12 | 2024-03-22 | 湖南遥昇通信技术有限公司 | 一种消息安全签名方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104025104B (zh) | 2018-05-29 |
EP2803009B1 (en) | 2019-11-20 |
BR112014016536A8 (pt) | 2017-07-04 |
EP2803009A1 (en) | 2014-11-19 |
WO2013104969A1 (en) | 2013-07-18 |
RU2014132881A (ru) | 2016-02-27 |
RU2620712C2 (ru) | 2017-05-29 |
US20140380311A1 (en) | 2014-12-25 |
JP2015504279A (ja) | 2015-02-05 |
US10191754B2 (en) | 2019-01-29 |
BR112014016536A2 (pt) | 2017-06-13 |
JP6078555B2 (ja) | 2017-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104025104A (zh) | 具有密钥驱动的混淆的虚拟机设备和方法 | |
CN105144189B (zh) | 安全云数据库平台 | |
CN101661544B (zh) | 在主显示器内提供安全显示窗口的方法和设备 | |
CN102890758B (zh) | 一种保护可执行文件的方法及系统 | |
CN106599629B (zh) | 一种安卓应用程序加固方法及装置 | |
CN102484581A (zh) | 使用中间数据更改的具有可配置密钥的白盒密码系统 | |
CN109784007B (zh) | 一种字节码加密的方法、字节码解密的方法及终端 | |
CN107346401A (zh) | 用于安全地执行程序的信息保障系统 | |
CN101751529A (zh) | 用于安全处理处理器的虚拟机中的机密内容的方法和装置 | |
US10452564B2 (en) | Format preserving encryption of object code | |
CN101996155B (zh) | 支持多种指令体系的处理器 | |
CN111656345B (zh) | 启用容器文件中加密的软件模块 | |
CN105721135A (zh) | 在加密实施中的替换盒 | |
US10867017B2 (en) | Apparatus and method of providing security and apparatus and method of executing security for common intermediate language | |
CN110210211A (zh) | 一种数据保护的方法和计算设备 | |
JP2013175179A (ja) | 少なくとも1つの暗号化された命令を備えるソフトウェアアプリケーションの協調実行のためのシステム、デバイスおよび方法 | |
US20210143978A1 (en) | Method to secure a software code performing accesses to look-up tables | |
JP6899308B2 (ja) | 情報処理装置および情報処理装置のデータ処理方法 | |
US20230169186A1 (en) | Method to secure computer code | |
US20210026935A1 (en) | High performance compute ip encryption using unique set of application attributes | |
US20230275745A1 (en) | Device, method and program for secure communication between white boxes | |
CN109840396A (zh) | 提供安全性的设备和方法以及执行安全性以保护共享对象的代码的设备和方法 | |
US20190384894A1 (en) | Intrinsic authentication of program code | |
Gayoso Martínez et al. | Comparing low and medium cost computer-based technologies suitable for cryptographic attacks | |
Deyannis et al. | Andromeda: Enabling secure enclaves for the Android ecosystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |