CN103026347A - 多核架构中的虚拟机内存划分 - Google Patents
多核架构中的虚拟机内存划分 Download PDFInfo
- Publication number
- CN103026347A CN103026347A CN2011800370060A CN201180037006A CN103026347A CN 103026347 A CN103026347 A CN 103026347A CN 2011800370060 A CN2011800370060 A CN 2011800370060A CN 201180037006 A CN201180037006 A CN 201180037006A CN 103026347 A CN103026347 A CN 103026347A
- Authority
- CN
- China
- Prior art keywords
- key
- memory
- buffer memory
- random number
- memory address
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 273
- 238000012545 processing Methods 0.000 claims abstract description 55
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000003860 storage Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 241001269238 Data Species 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 239000000463 material Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006854 communication Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Radar, Positioning & Navigation (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
描述用于内存划分的技术,所述内存划分用于在多核处理架构上的虚拟机(VM)的可信执行。内存划分可以通过在给定VM的控制下在执行所述VM的处理核的信任边界内使用密钥加密层3(L3)缓存线来实现。另外,本文描述的实施例提供一种用于存储和处理与对L3缓存线执行的每次加密/解密操作相关联的加密相关元数据的有效方法。
Description
技术领域
本公开中呈现的实施例通常涉及用于提供用于虚拟化服务器的计算基础设施的技术,并且更具体来说,涉及用于基础设施即服务(laaS)云环境中的可信虚拟机执行的方法和装置。
背景技术
服务器虚拟化技术允许多个虚拟机同时在单个物理计算系统中运行。当前,数据中心环境用来创建这些物理计算系统(通常称为服务器)的大型群集,其中每个服务器运行多个虚拟机(VM)。这种方法已经导致可以提供大量计算能力的数据中心。若干供应商当前允许用户提供虚拟机实例以便在数据中心的运营商所提供的虚拟化服务器上运行。以各种形式,这种通用计算模型已经被称为“云计算”或“基础设施即服务”(laaS),因为用户在抽象硬件平台上简单地运行其虚拟机实例,而无需拥有或管理所述硬件平台。如果不是数百或数千虚拟机实例来响应对于计算资源需求的改变,这种方法允许给定用户迅速地扩增几十倍。
同时,云计算和laaS供应商所面对的显著障碍在于需要用户信任云供应商和管理在服务器上运行的多个VM的管理程序(或虚拟机管理器(VMM))的实施。当前,这是通过对云供应商在有关安全的适当地方进行的操作过程的检查和理解来完成。这产生了信任感,但是仍不存在强有力的机制来保证在同一个中央处理单元(CPU)套接字服务器中执行的VM之间的有效分离。
属于不同企业的VM被布置在同一个服务器中的事实可能导致侧面攻击和安全问题。例如,当属于不同企业的VM在同一CPU的不同核中执行时,他们通过L3缓存(或者通过绕过管理程序设定的内存保护)共享对内存的访问。本领域技术人员知道,这可能导致信息从一个VM泄露到另一个VM。也就是说,来自一个企业的恶意VM可能试图获得对为了另一个企业运行的VM的内存的访问。
另一个问题在于管理程序本身。即使管理程序被设计成执行不同VM之间的分离,但是数据仍可能由于管理程序错误或由于针对管理程序本身的明确攻击而从一个VM泄露到另一个VM。另外,恶意管理员(其是云供应商人员的一部分)可能会发出另一组攻击。
附图说明
因此,以可以详细理解本公开的上述特征的方式,可以参照实施例对以上概述的本公开进行更为具体的描述,其中一些实施例在附图中示出。然而,应注意的是,附图仅示出本公开的典型实施例,并且因此不应被认为限制本发明的范围,因为本公开可以允许其他同等有效的实施例。
图1A至图1B是示出了根据本公开的某些实施例的用于基础设施即服务(laaS)云环境中的可信执行的不同安全模型的方框图。
图2是示出了根据本公开的某些实施例的被配置成提供用于laaS环境中的多个VM的可信执行的虚拟化服务器的部件的方框图。
图3是示出了根据本公开的某些实施例的被配置成提供用于laaS环境中的可信虚拟机执行的处理器架构的示例的方框图。
图4进一步示出了根据本公开的某些实施例的图3中第一次示出的CPU架构的各方面。
图5示出了根据本公开的某些实施例的一种用于安全地启动VM实例的方法。
图6示出了根据本公开的某些实施例的一种用于加密L3缓存线的方法。
图7示出了根据本公开的某些实施例的一种用于解密L3缓存线的方法。
具体实施方式
概述
本文描述的一个实施例包括一种方法。所述方法可以通常包括识别内存地址,获得随机数(nonce),并且使用至少第一密钥、所述随机数和识别出的内存地址来产生密钥流。所述方法还可以包括使用所产生的密钥流来对在从第一缓存写入到第二缓存中时与内存地址相对应的数据进行加密。第一缓存在中央处理单元(CPU)上的多个处理核中一个核的本地。并且第二缓存由所述多个处理核共享。所述方法还可以包括将随机数写入到第二缓存中。
本文描述的另一个实施例提供一种计算系统,所述计算系统包括内存和具有多个处理核的CPU。每个核自身可以具有第一缓存,并且CPU还可以包括第二缓存,其中所述第二缓存可以由所述多个处理核中的每一个访问。每个处理核可以包括将各自的处理核耦合到第二缓存上的加密/解密块。所述加密/解密块通常可以被配置成执行包括以下步骤的操作:识别内存地址,获得随机数,使用至少第一密钥、所述随机数和识别出的内存地址来产生密钥流,以及使用所产生的密钥流来对在从第一缓存写入到第二缓存中时与内存地址相对应的数据进行加密。CPU可以进一步包括配置成将随机数写入到第二缓存中的内存控制器。
本文描述的又一个实施例包括一种方法。这种方法通常可以包括试图执行读取操作以读取与进入多个第一缓存之一的内存地址相关联的数据。所述第一缓存各自在中央处理单元(CPU)上的多个处理核中一个核的本地。
另外,所述读取操作试图从由所述多个处理核共享的第二缓存读取与第一内存地址相关联的数据。在确定了与所述内存地址相关联的数据在第二缓存中之后,可以通过获得随机数、使用至少第一密钥、所述随机数和所述内存地址来产生密钥流来执行读取操作。所述读取操作还可以包括使用所产生的密钥流来对在从第二缓存读取到所述第一缓存中时与内存地址相关联的数据进行解密。
示例实施例的描述
本文描述的实施例提供用于内存划分的技术,内存划分允许在多核处理架构上的虚拟机(VM)的可信执行。内存划分可以通过在给定VM的控制下在执行所述VM的处理核的信任边界内使用密钥加密层3(L3)缓存线来实现。另外,本文描述的实施例提供一种用于存储和处理与对L3缓存线执行的每次加密/解密操作相关联的加密相关元数据的有效方法。
如以下更详细描述,物理多核CPU可以包括硬件信任锚部件。所述信任锚可以被配置成管理用以在多核CPU的一个核上执行VM或管理程序时加密/解密指令和数据的密钥。在一个实施例中,所述信任锚可以使用安全通信过程来接收与加密的VM启动映像相关联的密钥。一旦由所述信任锚接收到并存储,则所述密钥可以用以解密VM启动映像并将其载入到虚拟化服务器上的内存中。所述信任锚还可以产生(或获得)会话密钥,所述会话密钥用以当在多核CPU的处理核之一上执行VM时加密/解密写入到L3缓存中和从L3缓存中读取的数据。
在一个实施例中,所述信任锚可以使用高级加密标准(AES)计数器模式(AES-CTR)来加密/解密写入到L3缓存中和从L3缓存中读取的数据。使用AES-CTR可以提供足以加密/解密在一个核上的L2缓存与多核架构内的多个处理核之间共享的L3缓存之间移动的数据的加密速度。当然,可以使用具有足够性能特点的其他流密码。更大体而言,可以在计数器模式中使用任何带密钥的伪随机函数;AES是通常使用的伪随机函数,我们具体使用AES来描述实施例。使用AES-CTR,实际加密可以通过在将明文在写入到L3缓存中时以通过使用与给定VM的执行上下文相关联的密钥加密计数器的递增值所产生的密钥流(即,以会话密钥)对明文进行异或来执行。在一个实施例中,用以产生用于加密/解密L3缓存线的密钥流的计数器通过将与具体读取/写入操作相关联的内存地址与随机数值相连结而构成。
在写入操作的情况下,所述随机数值可以是每次执行写入操作时递增的计数器值,或仅仅是从随机噪音源得出的值。用于给定写入操作的随机数值也与加密数据一起存储在L3缓存中。另外,如果发生缓存刷新(cache flush),则随机数值与加密数据一起被写入到内存中。对于读取操作来说,所述随机数值被用来(与内存地址一起)重建密钥流。实际的解密可以通过在将加密数据从L3缓存读取并且写入到处理器核上的L2缓存中时以密钥流对加密数据进行异或来执行。在一个实施例中,CPU上的内存控制器被配置成管理写入到L3缓存和内存中并且从L3缓存和内存读取的随机数的写入。
当出现异常时(例如,计时器中断、硬件访问等),所述信任锚换出与运行VM实例相关联的会话密钥并且为新的执行上下文选择适当密钥。在一个实施例中,CPU可以被配置成用信号向所述信任锚通知关于被排程来执行的下一个VM实例(或管理程序)的执行上下文。例如,由VT-x技术和AMD-V技术提供的虚拟化扩展。另外,用于切换密钥并且初始化所述信任锚中所包括的加密引擎的过程可能要求比上下文切换本身要求更少的时钟周期。
呈现以下描述来使得本领域的一般技术人员能够制造和使用所提议的技术。具体实施例和应用的描述仅被作为示例提供,并且各种修改对于本领域技术人员将是显而易见的。本文描述的一般原理在不脱离本公开的范围的情况下可以适用于其他实施例和应用。因此,本公开不限于所示的实施例,而是应符合与本文描述的原理和特征一致的最广范围。为了清晰的目的,不对与所提出的概念的相关技术领域中已知的技术材料相关的特征进行详细描述。
图1A至图1B是示出了根据本公开的某些实施例的用于基础设施即服务(laaS)云环境中的可信VM执行的不同模型的方框图。如图1A中所示,堆栈模型105可以用来提供用于执行一个或多个虚拟机125的可信环境。具体来说,硬件锚芯片(例如,可信平台模块(TPM)110)或等效物可以用来执行以下任务:安全密钥存储、签名征收/验证以及密钥的安全输出等。TPM110形成堆栈模型105中的信任的第一环节。一旦TPM110对其进行确认,安全BIOS115可以依次确认管理程序120是未被修改。这样做使信任链从TPM110延伸到安全BIOS115,并且随后,延伸到管理程序120。一旦被启动,管理程序120就遵循相同的程序来初启虚拟机125。也就是说,一旦被安全BIOS115确认,管理程序120则用作可信操作程序来确认和启动虚拟机实例125。此后,每个虚拟机125上的操作系统130对启动应用程序135进行相同的操作。更简单地说,TPM110确认BIOS115,BIOS115确认管理程序120,管理程序120又确认在管理程序120上启动的每个VM125。因此,堆栈模型105依靠信任其前趋的链中的每个元素。
在堆栈模型105中,上层依靠下层以获得信任。如果在所述链上存在任何中断,则系统是不安全的。另外,所述链上的下层可以仍对上层可以执行的内容具有可见性。另外,即使管理程序确认并启动了给定虚拟机125,其也不会限制可信OS130和可信应用程序135执行的动作。因此,堆栈模型105不会阻止以其他方式被确认的应用程序135(或VM125)访问属于由管理程序120执行的另一个VM的数据,例如,存储在L3缓存中的数据。
图1B示出了根据本公开中呈现的一个实施例的可替代信任模型。如图所示,信任模型150提供一种星形模型,其中信任锚165位于中间而不是位于底部。这样做允许信任锚165直接确认虚拟化服务器上的BIOS175和管理程序170。然而进一步说,这样也允许信任锚165确认传递到管理程序170以供执行的每个VM映像(例如,VM1155和VM2160)以及确认用于应用程序108载入VM155、160并在其上执行的代码。也就是说,与堆栈模型105不同,星形模型150提供被配置成提供信任锚165的信任锚165。为了防止执行上下文之间的未经授权的访问,星形模型150从完整性保护(在堆栈模型中)转变成关于虚拟化服务器中的每个相关操作程序的机密性。这样做可以用来为VM155、160提供安全计算环境。例如,与堆栈模型105不同,星形模型150防止具有较高特权的操作程序(例如,管理程序170)访问其他操作程序(例如,VM155、160)的数据,以及防止一个VM访问属于另一个VM的数据,即使这些VM同时在多核处理器上的不同核中执行并且共享L3缓存和内存。以下论述的图2至图4提供在具有多核CPU的虚拟化服务器上实施图1B中所示的星形模型150的示例架构。
图2是示出了根据本公开的某些实施例的被配置成提供用于laaS环境中的多个VM的可信执行的虚拟化服务器200的部件的方框图。虚拟化服务器200通常可以包括由一个或多个互连250连接的硬件计算部件的集合。说明性地,虚拟化服务器200包括网络接口卡(NIC)251、内存252、CPU253以及存储设备254(例如,本地附接的磁盘驱动器、固态设备(SSD)或与诸如SAN的远程存储设备的连接)。
虚拟化服务器200允许多个虚拟机(VM)2301-3同时在服务器200上执行,从而共享虚拟化服务器200上存在的计算硬件。然而,虚拟机2301- 3通常不直接知道虚拟化服务器200上的计算硬件。相反,管理程序240可以被配置成为每个虚拟机2301-3提供虚拟化硬件元件。请注意,虽然虚拟硬件分配对于在每个虚拟机2301-3上运行的OS和应用程序136呈现出不同,但是他们在虚拟化层下被共享。也就是说,虚拟资源提供关于下层物理资源的抽象概念,并且下层物理资源在虚拟机2301-3之间共享。
说明性地,内存252包括管理三个虚拟机实例(VM)2301-3的管理程序240。每个VM2301-3提供具有虚拟CPU、内存、存储设备和网络接口的虚拟化计算平台。操作系统在每个VM2301-3上被启动,并且用以载入和执行应用程序2321-3。在一个实施例中,管理程序240可以被实施为在虚拟化服务器200的计算硬件上直接运行的软件层。在这种情况下,管理程序240可以被配置成拦截由在VM230上运行的OS作出的一些(或所有)操作系统调用。
更大体而言,管理程序240在系统硬件上运行并且允许虚拟化服务器200作为VM2301-3的主机。在一个实施例中,信任锚258可以用来确认管理程序240。也就是说,管理程序240(即,管理程序240在存储盘上的映像)可以由加密密钥来签名,并且信任锚258可以被配置成获得在载入管理程序240之前验证管理程序240未被修改所需要的密钥。例如,给定laaS供应商(或管理程序厂商)可以使用私人/公共密钥对的私人密钥来对管理程序代码进行签名。在一些情况下,公共密钥也可以通过认证授权来签名(并且被提供作为PKI认证的一部分)。接下来,信任锚258可以从PKI认证获得公共密钥,并且确认与管理程序240相关联的数字签名。
一旦被确认,管理程序240可以启动并执行VM2301-3。另外,每个VM230也可以是被签名和/或加密的对象。例如,企业可以将使用VM映像加密密钥加密的VM映像传送到虚拟化服务器200。在一个实施例中,信任锚258向企业进行自身鉴别,以在虚拟化服务器230上执行给定VM230之前,获得与该VM230相关联的VM映像加密密钥。所述VM映像加密密钥可以用来解密提交给虚拟化服务器200的加密VM映像。
另外,信任锚258可以产生(或获得)关于每个给定VM230的内存会话密钥,并且在VM在一个执行核256上执行的同时,将所述内存会话密钥用以加密/解密从缓存255读取和写入到缓存255的信息。在一个实施例中,信任锚258可以作为载入给定VM实例的一部分而产生内存会话密钥。信任锚258可以被配置成在CPU253上的执行核256之一的执行上下文改变的任何时候交换内存会话密钥,例如,不同VM2301-3之间的上下文切换或VM2301-3与管理程序240自身之间的上下文切换。
缓存255提供由CPU253上的执行核256访问的高速内存。虽然内存252可以跨虚拟机230被分段,但是缓存255通常由不同的VM2301-3共享。例如,如图所示,CPU253可以包括一个或多个执行核256。当在不同的执行核256上执行不同的VM2301-3时,VM2301-3可以共享对缓存255的访问。在一个实施例中,信任锚258可以为每个VM230使用不同的内存会话密钥,以加密/解密到缓存255的每次读取/写入。这样做防止在一个执行核256上执行的VM230访问属于在不同的执行核256上执行的另一个VM230的缓存255中的数据。另外,这样做还防止了管理程序240访问属于给定VM2301-3的缓存255中的数据,不管管理程序240是否具有通常较高的特权等级。
图3是示出了根据本公开的某些实施例的被配置成提供用于laaS环境中的可信虚拟机执行的处理器架构的示例的方框图。如图所示,CPU300包括两个不同的处理核305,310。并且,每个CPU核305包括层1(L1)指令和数据缓存和L2缓存。CPU300还包括信任锚315,并且处理核305、310各自具有相关联的密钥产生部件3201-2和加密/解密块3251-2。说明性地,将处理核305、310连接到共享的L3缓存330的缓存线各自包括加密/解密块3251-2中的一个。L3缓存330连接到内存控制器335,内存控制器335又连接到内存340。
尽管CPU300说明具有两个处理核305、310的一个示例实施例,但是本领域的一般技术人员将认识到,本文描述的实施例可以容易地适用于具有多个处理核的CPU。在这种情况下,每个额外的CPU核将包括到信任锚315的连接以及密钥产生部件320和与加密/解密块连接的共享L3缓存330。
在一个实施例中,信任锚315可以被配置成管理处理核305、310上的多租户执行上下文(即,多个虚拟机映像的执行)以及管理与外部世界的通信。例如,信任锚315可以被配置成提供安全启动程序,所述安全启动程序用于载入和启动VM实例,以提供VM实例之间的安全上下文切换,以便基于执行上下文来交换内存会话密钥,并且在VM执行期间提供安全密钥存储。另外,在制造时,可以对嵌入有CPU300的信任锚315提供公共/私人密钥对和由认证授权(CA)颁发的认证,所述CA将信任锚身份绑定到公共密钥。可以包括CPU模型和制造商名称作为该认证的属性。在一个实施例中,信任锚315可以使用公共/私人密钥对来证明虚拟化服务器具有配置有信任锚的多核CPU,并且因此,可以在以其他方式不可信的云环境中启动并执行VM映像。
此外,信任锚315可以在发生上下文切换的任何时候从处理核305、310接收指示。这种指示可以提供对于输入执行上下文的标识符。如上所述,某些多核处理器提供扩展的指令集,这允许从CPU上的处理核输出执行上下文。例如,由VT-x技术和VMX指令集提供的虚拟化扩展提供用以用信号通知处理核上的执行上下文的改变的指令(例如,VMEXIT和VMRESUME指令)。
响应于来自核305、310之一的指示执行上下文的改变的信号,信任锚315可以配置与用于新执行上下文的处理核305、310相关联的加密/解密块3251-2和密钥产生部件3101-2。当发生上下文切换时,信任锚换出与处理核305、310上的当前执行上下文相关联的密钥,并且将其替代为与输入执行上下文相关联的密钥。如所已知,多核处理器上在VM实例之间(或在VM实例与管理程序之间)的上下文切换需要在CPU核上的寄存器(例如,状态寄存器、IR寄存器、通用寄存器、计数寄存器)重新存储(或初始化)以用于输入执行上下文。在一个实施例中,信任锚315可以被配置成交换适当的加密密钥并且使用比执行上下文切换本身(当前,过程通常需要约20至30个时钟周期)所需要更少的时钟周期来初始化加密/解密块3251-2。这样做允许信任锚提供用于输入VM实例(或管理程序)的安全执行上下文,而不会带来任何附加等待时间。
一旦被初始化,加密/解密块325在数据在处理核305、310与L3缓存255之间的缓存线上移动时对数据进行加密/解密。在一个实施例中,加密/解密块3251-2提供基于硬件的流密码实施。如所已知,流密码是对称密钥密码,其中将明文与密钥流相组合以加密小单元的数据(例如,每次单个位元或字节)。在具体的实施例中,加密/解密块可以被配置成使用AES-CTR(高级加密标准-计数器模式)作为流密码。使用流密码允许数据在处理核305、310与L3缓存330之间移动时对其进行加密/解密,而不需要额外的时钟周期。相反,一旦被初始化,加密/解密块3251-2可以使用密钥流将移动到特定核305、310/从特定核305、310移动的每个位元进行异或。因此,信任锚所提供的功能性定位在与每个处理核305、310相邻,并且确保由VM共享的任何元件在不同的核(在这种情况下,L3缓存330和内存340)上运行。在一个实施例中,密钥产生部件3201-2可以被配置成使用VM密钥、内存地址和随机数来产生由加密/解密块3251-2使用的密钥流。
内存控制器335可以被配置成在内存340与L3缓存之间移动数据。例如,内存控制器335可以选择将数据从L3缓存330刷新到内存340。在一个实施例中,当这样做时,内存控制器335还将用以在数据被写入到L3缓存330中时对数据进行加密的随机数值写入到内存340中。类似地,内存控制器335可以在从内存340读取加密数据时检索适当的随机数值。
图4进一步示出了根据本公开的某些实施例的图3中第一次示出的处理器架构的各方面。图4尤其示出图3的处理器架构,所述处理器架构用以执行到L3缓存433的安全写入操作401并且用以执行从L3缓存433的安全读取操作402。
如图所示,写入操作401在明文数据4051从处理核本地的L2缓存移动到由多个处理核共享的L3缓存433时对所述明文数据4051进行加密。说明性地,加密/解密块4101包括密钥4151、AES引擎4201、内存地址4251和随机数4301。密钥4151通过信任锚来提供给加密/解密块4101。如上所述,密钥4151与在多核CPU(例如,图3中所示的处理器架构)的处理核之一上执行的VM(或管理程序)相对应。内存地址4251与从L2缓存写入到共享的L3缓存433的明文4051的内存地址相对应。随机数4301提供用于给定写入操作的一次值。通常,随机数4301可以是对共享的L3缓存433的每次写入(和读取)递增的计数器值。然而,可替代地,随机数4301可以从随机或伪随机噪音源产生。
在一个实施例中,AES引擎420提供AES-CTR流密码的硬件实施,并且被配置成从密钥材料(即,从密钥4151、内存地址4251和随机数4301)产生密钥流。所得的密钥流在明文4051从处理核上的L2缓存被推送到共享的L3缓存433中时与明文4051进行异或,产生密文4351。除了将所得的加密数据写入到L3缓存433中之外,加密/解密块4101中的随机数值也被写入到L3缓存433中(图4中所示为随机数4401)。更大体而言,加密/解密块可以将任何带密钥的伪随机函数应用到计数器,以便产生与明文4051异或的密钥流。
在一个实施例中,加密/解密块4101可以包括与L3缓存433分离的缓存线,从而允许随机数4301与明文4051平行地存储在L3缓存433中(作为随机数4401),明文4051是使用密钥流来加密并且作为密文4351存储在L3缓存433中。可替代地,随机数3401可以使用用以写入密文4351的相同缓存线来写入到缓存433中。
读取操作402类似于写入操作401,但是方向相反。为了从L3缓存433读取加密数据4352,内存地址4252和随机数4402被读取到加密/解密块4102中。另外,密钥4152是与在多核处理器的处理核上执行的VM(或管理程序)相关联的会话密钥,并且在所述处理核上的上下文切换之间保持不变。内存地址4252与被拉入到L2缓存中的数据的内存地址相对应,并且随机数4302是用以在数据被写入到L3缓存433中时对所述数据进行加密的随机数值。也就是说,由写入操作401用来产生用以加密明文4051的密钥流的相同密钥材料被用来重新产生相同的密钥流以解密来自L3缓存433的加密数据4352。因此,在一个实施例中,使用AES-CTR来从用于读取操作402的密钥材料产生密钥流。当然,可以使用其他带密钥的伪随机函数。所得密钥流随后被与来自L3缓存433的加密数据4352进行异或,并且被作为明文4052写入在L2缓存中。
图5示出了根据本公开的某些实施例的一种用于安全地启动VM实例的方法500。如图所示,方法500在步骤505开始,在步骤505中,管理程序接收虚拟机的启动映像以便启动虚拟化服务器并在其上执行。例如,在一个实施例中,用户可以将VM启动映像连同对在其上执行VM实例的虚拟化硬件系统的一组要求(例如,处理器速度、内存要求等)一起传送到云供应商。VM启动映像可以使用由用户产生的VM映像加密密钥来加密。在一个实施例中,每4kb数据块被独立地加密,以使得数据块可以在虚拟化服务器上的内存的内外被解密并标记页码,而无需解密整个映像。
在步骤510,管理程序视图启动VM启动映像。在步骤515,管理程序确定VM启动映像是否被加密。如果是,那么管理程序触发信任锚与提交VM启动映像以进行执行的用户(或相关联的密钥服务)之间的协商,以获得用以加密VM启动映像的VM映像加密密钥。一旦获得,则信任锚用所述密钥来配置磁盘控制块(步骤520)。VM映像加密密钥用来在从存储设备取得加密VM启动映像并将其存储在内存中时解密其内存页面(或者加密从内存刷新到存储设备的页面)。信任锚将与所述VM映像相关联的VM映像加密密钥存储在安全密钥存储设备中。在步骤525,信任锚也产生内存会话密钥,所述内存会话密钥用以在每个处理核上的L3缓存与内存之间和L3缓存与L2缓存之间的缓存线中配置加密/解密块。一旦CPU上的加密/解密块被配置,则从存储设备取得VM映像并将其启动。管理程序随后启动VM映像并对其进行排程以用于执行(步骤530)。
在步骤535,管理程序在处理核之一上执行VM映像。由于加密VM映像的一部分是从存储设备取得的,磁盘控制块使用VM映像加密密钥来对其进行解密(步骤540)。内存会话密钥随后用来在这些元素被写入到L3缓存中时对其进行重新加密。当需要用于给定内存地址的数据时,处理核的L2缓存与共享的L3缓存之间的缓存线中的内存会话密钥被用来解密从L3缓存读取(和写入到L3缓存)的数据。因此,L3缓存中(在多个处理核之间共享)的数据保持加密,直到被取到L2缓存(在处理核本地)中。
如果VM启动映像未被加密(步骤515),则信任锚可以仍产生内存会话密钥,以便在处理核上执行的同时,加密/解密由VM对L3缓存做出的所有写入/读取(步骤525)。在任一种情况下,管理程序可以开始排程VM以在多处理器CPU的处理核之一上执行(步骤530)。此外,当管理程序开始上下文切换时,信任锚用适当的VM映像加密密钥和用于输入VM的内存会话密钥来配置CPU上的加密/解密块。
图6描绘了根据本公开的某些实施例的一种用于加密L3缓存线的方法600。方法600进一步说明了图4的写入操作401。如图所示,方法在步骤605开始,在步骤605中,识别L2缓存中写入到L3缓存中的数据的内存地址(例如,内存地址4251)。在步骤610,L2缓存与L3缓存之间的缓存线上的加密/解密块获得用于写入操作的随机数值(例如,随机数4301)。在一个实施例中,所述随机数值是由信任锚提供的64位整数值。例如,信任锚可以仅对每次写入操作存储和递增64位值。64位随机数值可能足够大以确保随机数值在核的寿命内决不可再。
在步骤615,加密/解密块产生密钥流。所述密钥流可以使用识别出的内存地址、随机数值和与将数据从其L2内存写入到共享的L3内存的处理核的当前执行上下文相关联的会话密钥来产生。通常,所述密钥流是通过用会话密钥(例如,密钥4151)连续加密计数器的递增值(即,内存地址和随机数)来产生。例如,如上所述,给定L2/L3缓存线上的加密/解密块可以提供AES-CTR模式流密码的硬件实施。全AES实施可以维持由内存读取和写入产生的400-500Gbps的吞吐量。然而,在产生用以加密/解密64字节缓存线的密钥流的前128位时,使用AES-CTR带来少量的等待时间。这意味着在开始写入到L3缓存中之前需要大约10个时钟周期来执行AES-128所要求的10个AES循环。因此,产生L2缓存刷新或移出的每个内存写入操作将带来产生密钥流的前128位所需要的约10个时钟周期的额外等待时间。
在步骤620,一旦密钥流的前128位可用,则加密/解密块在数据被写入到L3缓存中时使用密钥流对其进行加密。例如,当64字节的L2缓存项被写入到L3缓存中时,明文L2缓存线(即,明文4051)与由在用会话密钥加密计数器过程中AES块所产生的密钥流进行异或。所得密文(即,密文4351)被存储在L3缓存中。
在步骤625,随机数值被写入到L3缓存中(即,随机数4401)。也就是说,用于加密给定写入操作的随机数值连同加密64字节内存值一起被存储在L3缓存中。请注意,将64位随机数存储在L3缓存中将存储每64字节数据所需要的空间增加了12.5%。在步骤630,如果L3缓存中的加密64字节数据被刷新到内存中,则相关联的随机数值也被写入到内存中。请注意,这可能导致内存写入等待时间的少量增加。例如,假定内存控制器在每个写入周期将64位写入到DRAM中(对于当前内存控制器较常见),则需要八个写入周期来将64字节加密数据(并且通常是8位检查和)存储在DRAM中的相应内存地址上。存储64位随机数值需要额外的写入周期。此外,就内存、大小来说,存储用于每个L3缓存线的随机数对于每个64字节的内存来说增加了64位的开销,也就意味着有12.5%的增加。
图7描绘了根据本公开的某些实施例的一种用于解密L3缓存线的方法700。方法700进一步说明了图4的读取操作402。如图所示,方法700在步骤705开始,在步骤705中,识别读取到L2缓存中的数据的内存地址(即,内存地址4252)。例如,在L2缓存中可能发生缓存缺失,从而导致试图从L3缓存读取所请求的地址。在步骤710,如果所请求的地址尚不在L3缓存中,则在步骤715,发生L3缓存故障。在这种情况下,内存控制器从所识别出的内存地址取得加密数据,以及取得用以加密存储在所述内存地址上的数据的随机数。
一旦加密数据在L3缓存中,则加密/解密块产生与来自L3缓存的数据进行异或的密钥流(步骤720)。具体来说,加密/解密块读取随机数值(即,随机数4302)和在步骤705识别出的内存地址705(即,内存地址4252)。所述随机数与在步骤705识别出的物理内存地址相连结,并且与会话密钥一起被送入到缓存线上的加密/解密块上。所述加密/解密块上的AES引擎随后可以通过用信任锚所提供的VM(或管理程序)的会话密钥(例如,密钥4152)来连续加密计数器的递增值(即,内存地址和随机数)来重新产生密钥流。在步骤725,所得密钥流再次与加密L3缓存线进行异或,以产生存储在L2缓存中的64字节明文数据(例如,明文4052)。
在发生L2缓存缺失和L3缓存命中的情况下,L3缓存线立即可用,因此重新产生密钥流的前128位对于从L3缓存的内存读取增加了十个时钟周期的等待时间。然而,在发生L2和L3缓存都缺失的情况下,可以优化内存读取,以使得首先从内存取得随机数。随后L3缓存可以从内存读取64字节加密数据,同时计算出密钥流的前128位。在这种情况下,不会带来额外的等待时间。
总而言之,本文描述的实施例提供用于在多核处理架构上的虚拟机(VM)的可信执行的内存划分的技术。内存划分可以通过在给定VM的控制下在执行所述VM的处理核的信任边界内使用密钥加密层3(L3)缓存线来实现。另外,本文描述的实施例提供一种用于存储和处理与对L3缓存线执行的每次加密/解密操作相关联的加密有关元数据的有效方法。
有利地,将多核CPU配置有信任锚并且将处理核与共享的L3缓存之间的每个缓存线配置有加密/解密块允许使用在虚拟化服务器上运行的每个VM(和管理程序)特有的会话密钥来加密每个内存读取/写入操作。这样做使得能够进行VM实例的可信执行,即使是在非可信云环境中和非可信管理程序上。
虽然上述内容是针对本公开的实施例,但是在不脱离本公开的基本范围的情况下,可以设计出本公开的其他和进一步的实施例,并且本公开的范围由以下权利要求确定。
Claims (16)
1.一种方法,包括:
识别内存地址;
获得随机数
使用至少第一密钥、所述随机数和所识别出的内存地址来产生密钥流;
使用所产生的密钥流来对在从第一缓存写入到第二缓存中时与内存地址相对应的数据进行加密,其中所述第一缓存在中央处理单元(CPU)上的多个处理核中的一个核的本地,并且其中所述第二缓存由所述多个处理核共享;以及
将所述随机数写入到所述第二缓存中。
2.如权利要求1所述的方法,进一步包括:
将与所述内存地址相对应的所述数据刷新到内存中;以及
将所述随机数写入到所述内存中。
3.如权利要求1所述的方法,其中使用至少第一密钥、所述随机数和所识别出的内存地址来产生密钥流包括:
将所述内存地址与所述随机数相连结以产生计数器;以及
连续递增所述计数器并且将带密钥的伪随机函数应用到所述计数器,从而产生伪随机输出。
4.如权利要求3所述的方法,其中使用所产生的密钥流来对在从第一缓存写入到第二缓存中时与内存地址相对应的数据进行加密包括:将与所述内存地址相对应的所述数据的每一位与所述密钥流的连续位进行异或。
5.如权利要求1所述的方法,其中所述随机数是由信任锚存储的64位值,并且其中所述信任锚对于将与所述内存地址相对应的数据写入到所述第二缓存中的每次操作递增所述随机数。
6.如权利要求1所述的方法,其中所述随机数是由信任锚对于将与所述内存地址相对应的数据写入到所述第二缓存中的每次操作产生的固定位大小的随机或伪随机数。
7.如权利要求1所述的方法,其中信任锚管理所述第一密钥和至少第二密钥,其中所述第一密钥和所述第二密钥各自提供与在所述CPU的所述多个处理核上执行的相应虚拟机相关联的会话密钥。
8.如权利要求1所述的方法,进一步包括:
从所述第二缓存读取与所述内存地址相对应的所述随机数;
使用所述第一密钥、所述随机数以及所识别出的内存地址来重新产生所述密钥流;以及
使用所产生的密钥流来在与所述内存地址相对应的数据正被从所述第二缓存读取并且写入到所述第一缓存中时对其进行解密。
9.一种计算系统,包括,
内存;以及
CPU,具有:
多个处理核,每个核至少具有第一缓存;
第二缓存,其中所述第二缓存可由所述多个处理核中的每一个访问;
对于所述多个处理核中的每一个,将各自的处理核耦合到所述第二缓存的加密/解密块,其中每个加密/解密块被配置成执行包括以下步骤的操作:
识别内存地址,
获得随机数,
使用至少第一密钥、所述随机数和所识别出的内存地址来产生密钥流,以及
使用所产生的密钥流来对在从所述第一缓存写入到所述第二缓存中时与所述内存地址相对应的数据进行加密;以及
内存控制器,其中内存控制器被配置成将所述随机数写入到所述第二缓存中。
10.如权利要求9所述的计算系统,其中所述内存控制器进一步被配置成:
将与所述内存地址相对应的数据刷新到内存中;以及
将所述随机数写入到所述内存中。
11.如权利要求9所述的计算系统,其中使用至少第一密钥、所述随机数和所识别出的内存地址来产生密钥流包括:
将所述内存地址与所述随机数相连结以产生计数器;以及
连续递增所述计数器并且将带密钥的伪随机函数应用到所述计数器,从而产生伪随机输出。
12.如权利要求11所述的计算系统,其中使用所产生的密钥流来对在从所述第一缓存写入到所述第二缓存中时与所述内存地址相对应的数据进行加密包括:将与所述内存地址相对应的数据的每一位与所述密钥流的连续位进行异或。
13.如权利要求9所述的计算系统,进一步包括信任锚,其中所述随机数是由所述信任锚存储的64位值,并且其中所述信任锚对于将与所述内存地址相对应的数据写入到所述第二缓存中的每次操作递增所述随机数。
14.如权利要求9所述的计算系统,进一步包括信任锚,其中所述随机数是由所述信任锚对于将与所述内存地址相对应的数据写入到所述第二缓存中的每次操作产生的固定位大小的随机或伪随机数。
15.如权利要求9所述的计算系统,进一步包括信任锚,其中所述信任锚管理所述第一密钥和至少第二密钥,其中所述第一密钥和所述第二密钥各自提供与在所述CPU的所述多个处理核上执行的相应虚拟机相关联的会话密钥。
16.如权利要求9所述的计算系统,所述操作进一步包括:
从所述第二缓存读取与所述内存地址相对应的随机数;
使用所述第一密钥、所述随机数以及所识别出的内存地址来重新产生所述密钥流;以及
使用所产生的密钥流来在与所述内存地址相对应的数据正被从所述第二缓存读取并且写入到所述第一缓存中时对其进行解密。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/789,207 | 2010-05-27 | ||
US12/789,207 US8990582B2 (en) | 2010-05-27 | 2010-05-27 | Virtual machine memory compartmentalization in multi-core architectures |
PCT/US2011/037804 WO2011149986A1 (en) | 2010-05-27 | 2011-05-24 | Virtual machine memory compartmentalization in multi-core architectures |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103026347A true CN103026347A (zh) | 2013-04-03 |
CN103026347B CN103026347B (zh) | 2016-08-03 |
Family
ID=44491699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180037006.0A Active CN103026347B (zh) | 2010-05-27 | 2011-05-24 | 多核架构中的虚拟机内存划分 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8990582B2 (zh) |
EP (1) | EP2577474B1 (zh) |
CN (1) | CN103026347B (zh) |
WO (1) | WO2011149986A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104025508A (zh) * | 2011-12-30 | 2014-09-03 | 思科技术公司 | 用于在网络环境中发现多点端点的系统和方法 |
CN104461928A (zh) * | 2013-09-16 | 2015-03-25 | 华为技术有限公司 | 划分高速缓存的方法及装置 |
CN105122203A (zh) * | 2013-04-16 | 2015-12-02 | 高通股份有限公司 | 存储设备辅助式内联加密和解密 |
CN107038128A (zh) * | 2016-02-03 | 2017-08-11 | 华为技术有限公司 | 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置 |
CN107533514A (zh) * | 2015-09-30 | 2018-01-02 | 慧与发展有限责任合伙企业 | 存储器内容的基于密码的初始化 |
CN113342278A (zh) * | 2021-06-22 | 2021-09-03 | 海光信息技术股份有限公司 | 处理器及其保持缓存数据一致性的方法 |
CN115544587A (zh) * | 2022-12-02 | 2022-12-30 | 奉加微电子(昆山)有限公司 | 加密方法、解密方法、芯片和计算机可读存储介质 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8495356B2 (en) * | 2010-12-31 | 2013-07-23 | International Business Machines Corporation | System for securing virtual machine disks on a remote shared storage subsystem |
US8799997B2 (en) * | 2011-04-18 | 2014-08-05 | Bank Of America Corporation | Secure network cloud architecture |
US20130061293A1 (en) * | 2011-09-02 | 2013-03-07 | Wenbo Mao | Method and apparatus for securing the full lifecycle of a virtual machine |
US9164924B2 (en) * | 2011-09-13 | 2015-10-20 | Facebook, Inc. | Software cryptoprocessor |
US9342704B2 (en) * | 2011-12-28 | 2016-05-17 | Intel Corporation | Allocating memory access control policies |
US8924720B2 (en) | 2012-09-27 | 2014-12-30 | Intel Corporation | Method and system to securely migrate and provision virtual machine images and content |
CN103036675A (zh) * | 2012-12-14 | 2013-04-10 | 中国地质大学(武汉) | 基于动态密钥的数据通信方法、发送端和接收端 |
JP5591969B1 (ja) * | 2013-03-27 | 2014-09-17 | 株式会社東芝 | マルチコアプロセッサおよび制御方法 |
US9280490B2 (en) | 2013-04-17 | 2016-03-08 | Laurence H. Cooke | Secure computing |
CN104346572B (zh) * | 2013-07-25 | 2017-11-14 | 中国科学院信息工程研究所 | 一种通用的外置式智能终端安全运行环境构建方法 |
US9477603B2 (en) | 2013-09-05 | 2016-10-25 | Facebook, Inc. | System and method for partitioning of memory units into non-conflicting sets |
US9983894B2 (en) | 2013-09-25 | 2018-05-29 | Facebook, Inc. | Method and system for providing secure system execution on hardware supporting secure application execution |
WO2015047285A1 (en) * | 2013-09-27 | 2015-04-02 | Intel Corporation | Protection scheme for remotely-stored data |
US10049048B1 (en) | 2013-10-01 | 2018-08-14 | Facebook, Inc. | Method and system for using processor enclaves and cache partitioning to assist a software cryptoprocessor |
US9747450B2 (en) | 2014-02-10 | 2017-08-29 | Facebook, Inc. | Attestation using a combined measurement and its constituent measurements |
US9734092B2 (en) | 2014-03-19 | 2017-08-15 | Facebook, Inc. | Secure support for I/O in software cryptoprocessor |
WO2015157842A1 (en) * | 2014-04-16 | 2015-10-22 | Elliptic Technologies Inc. | Secured memory system and method therefor |
US10019603B2 (en) | 2014-04-16 | 2018-07-10 | Synopsys, Inc. | Secured memory system and method therefor |
US9614666B2 (en) | 2014-12-23 | 2017-04-04 | Intel Corporation | Encryption interface |
US9798678B2 (en) * | 2015-04-02 | 2017-10-24 | International Business Machines Corporation | Protecting storage from unauthorized access |
US9715462B2 (en) * | 2015-04-02 | 2017-07-25 | International Business Machines Corporation | Protecting contents of storage |
US10108557B2 (en) * | 2015-06-25 | 2018-10-23 | Intel Corporation | Technologies for memory confidentiality, integrity, and replay protection |
US9767318B1 (en) * | 2015-08-28 | 2017-09-19 | Frank Dropps | Secure controller systems and associated methods thereof |
US10069626B2 (en) | 2016-02-23 | 2018-09-04 | Red Hat, Inc. | Multiple encryption keys for a virtual machine |
US10585809B2 (en) * | 2016-04-01 | 2020-03-10 | Intel Corporation | Convolutional memory integrity |
CN106775942B (zh) * | 2016-12-09 | 2020-06-16 | 中国科学院软件研究所 | 一种云应用导向的固态盘缓存管理系统及方法 |
US10528746B2 (en) * | 2016-12-27 | 2020-01-07 | Intel Corporation | System, apparatus and method for trusted channel creation using execute-only code |
US10496425B2 (en) | 2017-02-21 | 2019-12-03 | Red Hat, Inc. | Systems and methods for providing processor state protections in a virtualized environment |
KR102411884B1 (ko) * | 2017-09-28 | 2022-06-22 | 삼성전자주식회사 | 전자 장치 및 그의 제어 방법 |
US20190215160A1 (en) * | 2018-01-09 | 2019-07-11 | Qualcomm Incorporated | Managing a set of cryptographic keys in an encrypted system |
US11216592B2 (en) * | 2018-08-02 | 2022-01-04 | Qualcomm Incorporated | Dynamic cryptographic key expansion |
US11210246B2 (en) * | 2018-08-24 | 2021-12-28 | Advanced Micro Devices, Inc. | Probe interrupt delivery |
WO2020118583A1 (zh) * | 2018-12-12 | 2020-06-18 | 深圳市汇顶科技股份有限公司 | 数据处理方法、电路、终端设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050021986A1 (en) * | 2003-06-25 | 2005-01-27 | Graunke Gary L. | Apparatus and method for memory encryption with reduced decryption latency |
US20080066074A1 (en) * | 2006-09-12 | 2008-03-13 | Mark Richard Nutter | System and Method for Securely Saving a Program Context to a Shared Memory |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5444781A (en) * | 1993-08-23 | 1995-08-22 | Apple Computer Inc. | Method and apparatus for decryption using cache storage |
US6101255A (en) * | 1997-04-30 | 2000-08-08 | Motorola, Inc. | Programmable cryptographic processing system and method |
US6983374B2 (en) * | 2000-02-14 | 2006-01-03 | Kabushiki Kaisha Toshiba | Tamper resistant microprocessor |
US6895506B1 (en) * | 2000-05-16 | 2005-05-17 | Loay Abu-Husein | Secure storage and execution of processor control programs by encryption and a program loader/decryption mechanism |
JP2002353960A (ja) * | 2001-05-30 | 2002-12-06 | Fujitsu Ltd | コード実行装置およびコード配布方法 |
JP2003051819A (ja) * | 2001-08-08 | 2003-02-21 | Toshiba Corp | マイクロプロセッサ |
US7272832B2 (en) * | 2001-10-25 | 2007-09-18 | Hewlett-Packard Development Company, L.P. | Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform |
FR2838894A1 (fr) * | 2002-04-19 | 2003-10-24 | St Microelectronics Sa | Chiffrement du contenu d'une memoire externe a un processeur |
JP3880933B2 (ja) * | 2003-01-21 | 2007-02-14 | 株式会社東芝 | 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法 |
JP4263976B2 (ja) * | 2003-09-24 | 2009-05-13 | 株式会社東芝 | オンチップマルチコア型耐タンパプロセッサ |
FR2861234A1 (fr) * | 2003-10-17 | 2005-04-22 | St Microelectronics Sa | Chiffrement de donnees dans un appareil electronique a plusieurs processeurs symetriques |
DE102004014435A1 (de) * | 2004-03-24 | 2005-11-17 | Siemens Ag | Anordnung mit einem integrierten Schaltkreis |
EP1870814B1 (en) * | 2006-06-19 | 2014-08-13 | Texas Instruments France | Method and apparatus for secure demand paging for processor devices |
JP4447977B2 (ja) * | 2004-06-30 | 2010-04-07 | 富士通マイクロエレクトロニクス株式会社 | セキュアプロセッサ、およびセキュアプロセッサ用プログラム。 |
EP1635545B1 (en) * | 2004-09-14 | 2013-04-10 | Sony Ericsson Mobile Communications AB | Method and system for transferring of digital rights protected content using USB or memory cards |
US20060195704A1 (en) * | 2005-01-27 | 2006-08-31 | Hewlett-Packard Development Company, L.P. | Disk array encryption element |
US7734827B2 (en) * | 2005-09-27 | 2010-06-08 | Sony Computer Entertainment, Inc. | Operation of cell processors |
US8001374B2 (en) * | 2005-12-16 | 2011-08-16 | Lsi Corporation | Memory encryption for digital video |
US8209548B2 (en) | 2006-02-06 | 2012-06-26 | International Business Machines Corporation | Secure caching technique for shared distributed caches |
US7565492B2 (en) * | 2006-08-31 | 2009-07-21 | Intel Corporation | Method and apparatus for preventing software side channel attacks |
US20080115217A1 (en) * | 2006-10-31 | 2008-05-15 | Hewlett-Packard Development Company, L.P. | Method and apparatus for protection of a computer system from malicious code attacks |
US20080155273A1 (en) * | 2006-12-21 | 2008-06-26 | Texas Instruments, Inc. | Automatic Bus Encryption And Decryption |
US8423789B1 (en) * | 2007-05-22 | 2013-04-16 | Marvell International Ltd. | Key generation techniques |
IL187046A0 (en) * | 2007-10-30 | 2008-02-09 | Sandisk Il Ltd | Memory randomization for protection against side channel attacks |
US8726042B2 (en) * | 2008-02-29 | 2014-05-13 | Microsoft Corporation | Tamper resistant memory protection |
US9317708B2 (en) * | 2008-08-14 | 2016-04-19 | Teleputers, Llc | Hardware trust anchors in SP-enabled processors |
US8738932B2 (en) * | 2009-01-16 | 2014-05-27 | Teleputers, Llc | System and method for processor-based security |
US8819446B2 (en) * | 2009-06-26 | 2014-08-26 | International Business Machines Corporation | Support for secure objects in a computer system |
-
2010
- 2010-05-27 US US12/789,207 patent/US8990582B2/en active Active
-
2011
- 2011-05-24 EP EP11726539.7A patent/EP2577474B1/en active Active
- 2011-05-24 CN CN201180037006.0A patent/CN103026347B/zh active Active
- 2011-05-24 WO PCT/US2011/037804 patent/WO2011149986A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050021986A1 (en) * | 2003-06-25 | 2005-01-27 | Graunke Gary L. | Apparatus and method for memory encryption with reduced decryption latency |
CN1836220A (zh) * | 2003-06-25 | 2006-09-20 | 英特尔公司 | 具有降低的解密延迟的存储器加密的装置和方法 |
US20080066074A1 (en) * | 2006-09-12 | 2008-03-13 | Mark Richard Nutter | System and Method for Securely Saving a Program Context to a Shared Memory |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104025508A (zh) * | 2011-12-30 | 2014-09-03 | 思科技术公司 | 用于在网络环境中发现多点端点的系统和方法 |
CN104025508B (zh) * | 2011-12-30 | 2018-01-05 | 思科技术公司 | 用于在网络环境中发现多点端点的方法、设备及装置 |
CN105122203A (zh) * | 2013-04-16 | 2015-12-02 | 高通股份有限公司 | 存储设备辅助式内联加密和解密 |
CN104461928A (zh) * | 2013-09-16 | 2015-03-25 | 华为技术有限公司 | 划分高速缓存的方法及装置 |
CN107533514A (zh) * | 2015-09-30 | 2018-01-02 | 慧与发展有限责任合伙企业 | 存储器内容的基于密码的初始化 |
US10671546B2 (en) | 2015-09-30 | 2020-06-02 | Hewlett Packard Enterprise Development Lp | Cryptographic-based initialization of memory content |
CN107038128A (zh) * | 2016-02-03 | 2017-08-11 | 华为技术有限公司 | 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置 |
CN107038128B (zh) * | 2016-02-03 | 2020-07-28 | 华为技术有限公司 | 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置 |
US11321452B2 (en) | 2016-02-03 | 2022-05-03 | Huawei Technologies Co., Ltd. | Execution environment virtualization method and apparatus and virtual execution environment access method and apparatus |
CN113342278A (zh) * | 2021-06-22 | 2021-09-03 | 海光信息技术股份有限公司 | 处理器及其保持缓存数据一致性的方法 |
CN115544587A (zh) * | 2022-12-02 | 2022-12-30 | 奉加微电子(昆山)有限公司 | 加密方法、解密方法、芯片和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20110293097A1 (en) | 2011-12-01 |
CN103026347B (zh) | 2016-08-03 |
EP2577474B1 (en) | 2019-07-10 |
US8990582B2 (en) | 2015-03-24 |
WO2011149986A1 (en) | 2011-12-01 |
EP2577474A1 (en) | 2013-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103026347B (zh) | 多核架构中的虚拟机内存划分 | |
CN103069428B (zh) | 不可信云基础设施中的安全虚拟机引导 | |
US10171432B2 (en) | Systems to implement security in computer systems | |
CN103038746A (zh) | 用于基础设施即服务云环境中的可信执行的方法和装置 | |
US9734355B2 (en) | System and method for an efficient authentication and key exchange protocol | |
JP4940460B2 (ja) | 処理システム、方法およびデバイス | |
CN108509250A (zh) | 具有受保护的访客机验证主机控制的安全公共云 | |
US10372628B2 (en) | Cross-domain security in cryptographically partitioned cloud | |
US20190087354A1 (en) | System, Apparatus And Method For Integrity Protecting Tenant Workloads In A Multi-Tenant Computing Environment | |
CN106462438A (zh) | 包含受信执行环境的主机的证明 | |
CN103534976A (zh) | 数据安全的保护方法、服务器、主机及系统 | |
CN104104692A (zh) | 一种虚拟机加密方法、解密方法及加解密控制系统 | |
CN105678173B (zh) | 基于硬件事务内存的vTPM安全保护方法 | |
CN102609643A (zh) | 一种对虚拟机作动态密码学保护与所需的密钥管理方法 | |
JP2011048661A (ja) | 仮想サーバ暗号化システム | |
CN104335548A (zh) | 安全数据处理 | |
CN113886862B (zh) | 一种可信计算系统及基于可信计算系统的资源处理方法 | |
Yu et al. | Enhancing security of Hadoop in a public cloud | |
CN117389974A (zh) | 一种基于超融合系统的文件安全共享方法 | |
CN115994389A (zh) | 一种基于risc-v架构的硬件内存加密系统及其应用 | |
DE102023201819A1 (de) | Vertrauliches auslagern von dauerspeicheroperationen in vertraulichen rechenumgebungen | |
CN113468610A (zh) | 去中心化可信访问控制框架及其运行方法 | |
CN103119553A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |