CN107851151A - 保护虚拟机的状态信息 - Google Patents

保护虚拟机的状态信息 Download PDF

Info

Publication number
CN107851151A
CN107851151A CN201680043168.8A CN201680043168A CN107851151A CN 107851151 A CN107851151 A CN 107851151A CN 201680043168 A CN201680043168 A CN 201680043168A CN 107851151 A CN107851151 A CN 107851151A
Authority
CN
China
Prior art keywords
register
processor
content
management program
data structure
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
Application number
CN201680043168.8A
Other languages
English (en)
Other versions
CN107851151B (zh
Inventor
戴维·卡普兰
利恩德尔·范多姆
乔舒亚·谢夫曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Priority claimed from PCT/US2016/038694 external-priority patent/WO2016209915A1/en
Publication of CN107851151A publication Critical patent/CN107851151A/zh
Application granted granted Critical
Publication of CN107851151B publication Critical patent/CN107851151B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

处理系统[100]包括处理器[102],所述处理器实施寄存器[115、116]以界定在所述处理器上运行的虚拟机(VM)[200]的状态。所述处理器检测所述VM的退出状况[605]。所述处理系统还包括存储器元件[103],以用于响应于所述处理器检测到退出状况而将所述寄存器的内容存储在第一数据结构[120]中,所述第一数据结构与所述VM的管理程序[202]隔离。所述VM要将所述寄存器的子集的内容选择性地暴露[625]给所述管理程序。

Description

保护虚拟机的状态信息
背景
公开领域
本公开一般涉及处理系统,且尤其涉及处理系统中的信息安全。
相关技术的描述
单个处理器的硬件可以用来实施模拟单独和独立处理器的一个或多个虚拟机(VM)。例如,处理单元、存储器和处理器中的其他硬件可以一起用于实施多个VM,其中每个VM充当可以在其被加载到处理单元中时执行完整的操作系统的完整系统平台。处理器实施管理程序以在VM之间划分硬件,例如通过将存储器的各部分分配给不同的VM、加载VM以在处理单元上运行或者处理VM退出进程。管理程序隔离不同的VM,以保护VM的安全性和完整性。例如,常规的管理程序通过为每个VM界定单独的存储器页表或其他逻辑实体来将不同的VM彼此隔离。然而,与不同VM相关联的数据对于管理程序保持可见,且因此管理程序可能成为安全漏洞。因此,在例如VM所有者不相信或不能相信管理程序和云环境的公共云模型的某些环境中,允许VM数据对管理程序可见而不受限制的信任模型是不期望的。例如,不道德的用户可能能够识别管理程序中的缺陷或错误,所述缺陷或错误允许用户修改和控制处理系统上的管理程序或其他VM的操作,这可能暴露针对其他VM存储的私人数据。
附图简述
通过参考附图,本公开可以被更好地理解,并且其许多特征和优点对于本领域技术人员变得明显。在不同的图中使用相同的参考符号来指示相似或相同的项目。
图1示出了根据一些实施方案的提供与VM相关联的状态信息的隔离的处理系统。
图2示出了根据一些实施方案的处理系统针对VM提供信息的密码隔离的示例性操作。
图3是根据一些实施方案的虚拟机通信块(VMCB)的框图。
图4示出了根据一些实施方案的处理系统针对VM提供信息的密码隔离并且选择性地暴露状态信息的一部分的示例性操作。
图5示出了根据一些实施方案的处理系统解密VM的信息的示例性操作。
图6是根据一些实施方案的用于终止处理器上VM的执行的方法的图。
图7是根据一些实施方案的用于启动处理器上VM的执行的方法的图。
图8是根据一些实施方案的用于响应于自动退出状况而终止处理器上VM的执行的方法的图。
图9是根据一些实施方案的用于基于退出进程的类型来处理VM的退出进程的方法的流程图。
详述
用于在处理系统中实施虚拟机(VM)的软件和由VM生成的数据(可以统称为VM信息)可以通过在处理系统的存储器访问路径中采用硬件加密模块以密码地隔离安全的VM信息来进行保护。硬件加密模块将由VM写入到存储器的数据加密,或者将由VM从存储器读取的数据解密。因此,在没有正确的加密/解密密钥的情况下,由VM存储在存储器中的数据不可被有意义地访问,这对于管理程序是不可用的。然而,在没有本文描述的额外安全措施的情况下,界定运行VM时处理器的状态的寄存器值对于管理程序保持可见。因此,管理程序可能易受到状态信息的渗漏或控制流攻击,这会修改状态信息以引起意外的行为。只需从管理程序隐藏寄存器值(例如,通过将寄存器值加密)将极大地限制VM的功能或使VM不可操作,这是因为一些状态寄存器的内容必须可用于管理程序以实施由VM启动的某些类型的操作。
通过将界定VM的状态的状态寄存器的内容与管理程序隔离并且将相关联的状态寄存器中的一个或多个的内容选择性地暴露给管理程序来改进VM的安全性。在一些实施方案中,硬件加密模块在状态寄存器的内容被写入到数据结构(在本文中被称为“虚拟机控制块”或“VMCB”)时将所述内容加密,并且在从数据结构读取状态寄存器的内容时将所述内容解密。然后,VM可以选择性地将状态寄存器的内容暴露在另一个数据结构(本文中被称为“客体管理程序通信块”或“GHCB”)中,使得解密的值对于管理程序是可见的。例如,VM可能会触发导致世界切换的退出状况。如本文所使用的,术语“退出状况”指示导致港口将控制返还给管理程序的任何事件。如本文所使用的,术语“世界切换”是指从另一个VM或管理程序的执行和启动执行中移除VM或管理程序。在VM退出之前,处理器向由VM实施的异常处理程序发出异常。异常处理程序确定应对管理程序可见的状态信息的一部分,且VM将这部分暴露给GHCB。然后,VM启动退出进程,并且VM的状态寄存器的内容被加密并写回到VMCB,以响应于VM启动退出状况。处理器加载管理程序,所述管理程序使用GHCB中状态信息的可见部分来完成VM的退出进程。
管理程序可以启动另一个世界切换来将VM加载到处理器中。VM的状态寄存器的内容在世界切换期间由处理器硬件解密并写入到处理器中的状态寄存器。管理程序可能已经在完成退出进程的同时修改了存储在GHCB中的状态信息的内容,并且因此可以基于修改来更新VM的状态寄存器的内容。例如,硬件加密模块可以将存储在VMCB中的状态寄存器的内容解密,并且异常处理程序可以基于存储在GHCB中的信息来更新值。在一些实施方案中,可以计算存储在VMCB中的加密状态信息的校验和,并且使用所述校验和来验证VMCB中的状态信息,然后将状态信息返回给处理器。
图1示出了根据一些实施方案的提供与VM相关联的状态信息的隔离的处理系统100。处理系统100包括处理器102和存储器103。处理系统100可以被并入在例如服务器、个人计算机、平板电脑、机顶盒、游戏系统及类似物的各种电子设备中的任一个中。处理器102操作以执行指令集(例如,计算机程序),所述指令集操纵处理器102的电路以实施界定的任务。存储器103通过存储由处理器102使用的数据来促进这些任务的执行,并且可以进一步存储用于由处理器102访问的指令集。存储器103可以是随机存取存储器(RAM)、非易失性存储器,例如快闪存储器或硬盘驱动器(HDD)及类似物,或其组合。
在执行指令集的过程中,处理器102生成存储器访问请求,包括在存储器103处存储数据的写入请求以及从存储器103检索数据的读取请求。每个存储器访问请求包括指示存储器103处由存储器访问请求所针对的位置的存储器地址。响应于读取请求,存储器103检索存储在与读取请求的存储器地址对应的位置处的信息(数据或指令),并将所述信息提供给处理器102。响应于写入请求,存储器103将请求的写入信息存储在对应于写入请求的存储器地址的位置处。
处理器102包括安全模块104。尽管在所示实施方案中安全模块104实施在处理器102中,但是安全模块的一些实施方案可以驻留在处理器102的外部并且经由总线连接到处理器102。安全模块104可以被实施为通用处理器核心、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、处理器核心的操作模式或被设计和配置为执行处理系统100的安全操作的其他模块,安全操作包括要在处理器102处执行的实体的注册(例如,VM、管理程序、计算机程序及类似物),用于要执行的实体的安全密钥的生成和识别、用于安全操作的处理系统100的认证等。在一些实施方案中,安全模块104可以在其被允许执行其操作之前经历安全注册过程,并且可以使其操作仅限于安全操作,使得所述安全模块不能执行使其容易被不正当利用的操作。如本文进一步描述的,安全模块104的一些实施方案通过生成安全密钥、识别被注册以在处理系统100处执行的实体以及实现这种密码隔离的其他操作来支持处理系统100处的信息的密码隔离。
为了促进指令的执行,处理器102包括例如处理器核心105、106的一个或多个处理器核心,例如高速缓存107、108、109的一个或多个高速缓存,北桥110和安全模式寄存器111。处理器核心105、106是个别地或同时执行指令的处理单元。在一些实施方案中,处理器核心105、106中的每一个包括个别指令流水线,所述个别指令流水线提取指令、将所提取的指令解码为对应的操作并且使用处理系统100的资源来执行包括存储器访问请求的操作。处理器核心105、106中的每一个被配置为将每一存储器访问请求识别为以下两种类型中的一种:安全存储器访问请求,其指示对应于存储器访问请求的信息被指定用于密码保护;或者非安全存储器访问请求,其指示对应于存储器访问请求的信息未被指定用于密码保护。
高速缓存107、108、109是存储在存储器103处存储的信息子集的存储器部件,由此使处理器核心105、106更快地访问相应的信息子集。应理解,尽管为了清楚起见,高速缓存109被示出为单个高速缓存,但是在一些实施方案中,高速缓存109可以表示多个高速缓存,包括驻留在处理器102的存储器层级的不同级别处的不同高速缓存。高速缓存109接收存储器访问请求并识别其存储阵列(图1中未示出)是否存储了存储器访问请求所针对的信息。如果是,则高速缓存109指示高速缓存命中并且在存储阵列处满足存储器访问请求。如果高速缓存109不存储目标信息,则其指示高速缓存未命中并将存储器访问请求提供给北桥110。
北桥110是存储器控制器,其提供用于处理器102与存储器103通信的接口。在一些实施方案中,北桥110可以执行其他功能,例如与输入/输出控制器(例如,南桥,未示出)介接,并提供不同处理器核心(例如,处理器核心105、106和其他处理器核心(未示出),例如图形处理单元)之间的接口。在其作为存储器控制器的能力下,北桥110从高速缓存109接收存储器访问请求,并控制向存储器103提供这些请求。另外,北桥110从存储器103接收对存储器访问请求的响应并且控制向高速缓存109提供响应。在一些实施方案中,北桥110可以从处理系统100的输入/输出设备(未示出)接收存储器访问请求(例如,直接存储器访问请求),并且控制向存储器103提供所述请求。
处理器核心105、106各自包括对应的一组一个或多个对应的寄存器,所述对应的寄存器存储用于界定对应的处理器核心的状态的值。寄存器115表示用于处理器核心105的这组寄存器,而寄存器116表示用于处理器核心106的这组寄存器。处理器102的一些实施方案被配置为在管理程序的控制下执行多个VM(同时地或独立地)。管理程序和每个VM由对应于寄存器115、116的一组值来界定,所述一组值界定处理器核心105、106的状态。因此,寄存器115、116中的值表示当处理器102或处理器核心105、106正在执行管理程序或者一个或多个VM时管理程序的状态或者一个或多个VM的状态。寄存器115、116中的值可以用于指示由管理程序或VM执行的程序的指令指针、用于管理程序或VM的退出代码、浮点数据、浮点标签或状态信息、浮点控制信息、x87寄存器状态、XMM寄存器状态、YMM寄存器状态、包括指示其他寄存器是否包括有效信息的位的位图、先前基于寄存器115、116中的值计算的校验和的位置及类似物。
存储在寄存器115、116中的值可以依据当前在处理器102上执行的一个或多个实体而在存储器103和寄存器115、116之间移动。例如,“世界切换”可用于退出或暂停处理器102上的第一VM的执行,并将第二VM(或管理程序)加载到处理器102上以供执行。存储在寄存器115、116中以界定第一VM的状态的值从寄存器115、116移动到存储器103,并且界定第二VM的状态的状态寄存器值从存储器103移动到对应的寄存器115、116中。依据第一VM或第二VM的状态,可将值移入或移出寄存器115、116的不同子集,如本文所讨论。
在至少一个实施方案中,处理系统100采用信任模型,其中每个VM不信任或不能信任管理程序或任何其他VM。因此,与不同VM相关联的信息可以通过将信息存储在存储器103的安全区域120中而彼此隔离并且与管理程序隔离,使得管理程序和其他VM不能访问所述信息。隔离的信息可以包括在执行与VM相关联的指令期间写入到存储器103或从存储器103读取的信息。隔离的信息还包括表示VM状态的寄存器内容。因此,每个VM的寄存器的内容可以被存储在数据结构121中,所述数据结构在本文中被称为虚拟机控制块(VMCB)121。例如,如果检测到处理器102上运行的VM的退出状况,则寄存器115、116中的值被存储在VMCB 121中,使得这些值与管理程序和其他VM隔离。管理程序可能需要寄存器115、116的内容的子集,例如,以完成响应于检测到退出状况而启动的VM退出进程。因此,VM可以通过将这些值存储在另一个数据结构122(本文中被称为客体管理程序通信块(GHCB)122)中来将寄存器的子集的内容选择性地暴露给管理程序(或其他VM)。
在一些实施方案中,可以通过将信息存储在管理程序或其他VM在物理上不可访问的存储器位置处来将信息与管理程序和其他VM隔离。也可以通过使用管理程序或其他VM未知的一个或多个安全密钥来加密存储在数据结构121中的数据,来将与VM相关联的信息与管理程序和其他VM隔离。例如,在将寄存器的内容存储在数据结构121中之前,可以使用硬件加密模块将寄存器115、116的内容加密,由此使得存储在数据结构121中的信息对于管理程序或其他VM不可访问。数据结构121的位置的加密或隐藏可以一起或单独地使用以将信息与管理程序和其他VM隔离。
为了提供信息的密码隔离,北桥110包括硬件实施的加密模块125,其操作以根据指定的密码标准并且基于密钥126将信息加密和解密。在一些实施方案中,加密模块125采用高级加密标准(AES)加密和解密,但是在其他实施方案中,加密模块125可以采用其他加密/解密技术。加密模块125的一些实施方案可以使用硬编码逻辑(例如,作为固定的、预定的一组导线、迹线、晶体管和其他元件)、例如FPGA的可编程逻辑或硬编码逻辑和可编程逻辑的组合来实施。
响应于接收到写入请求,北桥110识别所述请求是安全存储器访问请求还是非安全存储器访问请求。如果写入请求是非安全存储器访问请求,则北桥110绕过加密模块125,并向存储器103提供写入请求,而不加密要写入的信息。如果写入请求是安全存储器访问请求,则北桥110识别指派给生成了存储器访问请求的实体(例如程序、VM、软件服务及类似物)的密钥126中的一个。加密模块125采用选定的密钥来加密要写入的信息,并将写入请求与加密的信息一起提供给存储器103以供存储。在一些实施方案中,加密模块125使用选定的密钥和存储器访问请求的物理地址两者来加密和解密对应的信息,由此防止块移动攻击。在一些实施方案中,加密模块125基于处理器102处的控制位(未示出)的状态来识别是否使用物理地址进行加密和解密。控制位状态可以由安全模块104设定。
响应于接收到读取请求,北桥110将所述请求提供给存储器103,并随后接收响应于所述请求的信息。如果北桥110将读取请求识别为非安全存储器访问请求,则其绕过加密模块125,并将读取的信息提供给高速缓存108而不加密。如果北桥110将读取请求识别为安全存储器访问请求,则其识别指派给生成了读取访问请求的实体的密钥126中的一个,并且加密模块125解密读取的信息。北桥110将解密的读取信息提供给高速缓存108以供存储。在一些情况下,北桥110可以绕过向高速缓存108提供信息,并将解密的读取信息直接提供给生成了对应的读取访问请求的处理器核心。
加密模块125也用于加密和解密存储在寄存器115、116中的值。响应于检测到在处理器102中执行的VM的退出状况,北桥110识别指派给VM的密钥126中的一个。加密模块125采用选定的密钥来加密存储在寄存器115、116中的值,并且然后将加密的值提供给存储器103以用于存储在数据结构121中。响应于检测到将VM加载到处理器102上以供执行的请求,北桥110识别指派给VM的密钥126中的一个。北桥110提供对存储在数据结构121中的加密状态信息的请求,并响应于提供请求而接收加密状态信息。加密模块125采用选定的密钥将加密的状态信息解密,且然后北桥110使用解密的状态信息来填充对应的寄存器115、116,使得处理器核心105、106的状态表示VM的状态。
通过将未加密的值存储在数据结构122中,可以暴露寄存器115、116中的值(例如,暴露给管理程序或其他VM)。例如,响应于检测到在处理器102上执行的VM的退出状况,处理器102可以发出异常。可以基于退出状况的类型来发出异常。例如,异常可能不针对自动退出来发出,而可能针对非自动退出而发出。自动退出是不要求VM知道退出且VM不会实例化VM异常处理程序的退出状况。自动退出可能包括预期不会修改界定处理器上VM的状态信息的事件。非自动退出是需要通知VM退出状况已经发生的退出状况。VM中的异常处理程序可以检测到异常,并且作为响应,确定将要被暴露的寄存器115、116中的值的子集。例如,值的子集可以对应于管理程序完成VM的退出进程所需的状态信息。因此,北桥110可以将对应于寄存器115、116中的值的子集的未加密值提供给数据结构122,由此使得所述值的子集对于管理程序或其他VM可访问。
在一些实施方案中,安全模式寄存器111被用来控制加密模块125的操作。安全模式寄存器111包括用于可以在处理器102上执行的每个VM的保护模式开启字段130、保护模式活动字段135和增强的保护模式字段140。在一些实施方案中,可以在处理器核心105、106中实施不同的安全模式寄存器111。响应于保护模式开启字段130处于相关联VM的指定状态(例如,否定状态),北桥110针对相关联VM的所有存储器访问请求(包括对数据结构121的安全存储器访问请求或存储器访问请求)绕过加密模块125。这允许处理系统100以针对在处理器102处执行的所有程序绕过加密和解密的模式进行操作。响应于保护模式开启字段130处于不同的指定状态(例如,断言状态),北桥110识别保护模式活动字段135的状态。北桥110响应于保护模式活动字段135处于指定状态(例如,否定状态)而针对与VM相关联的所接收的存储器访问请求(包括对数据结构121的安全存储器访问请求或存储器访问请求)绕过加密模块125,并且响应于保护模式活动字段135处于不同的状态(例如,断言状态)而仅针对非安全存储器访问请求绕过加密模块125。增强的保护模式字段140可用于控制是否响应于特定类型的退出状况(例如非自动退出)而发出异常。
图2示出了根据一些实施方案的处理系统100针对VM提供信息的密码隔离的示例性操作。在所描绘的示例中,处理器102将同时执行VM 200和VM 201。另外,处理器102执行管理程序202以提供VM 200、201与处理系统100的硬件之间的接口。在其执行过程中,VM200、201将从存储器103访问(存储和检索)安全信息,如本文所讨论的。在VM 200、201处的退出状况导致对应的寄存器205、206中的状态信息被存储在对应的安全存储器位置中,例如可以对应于图1所示的数据结构121、122的数据结构210、211。加密模块125确保存储在数据结构210、211中的VM 200、201的状态信息被密码地隔离,使得它们只能被它们相应的VM访问。存储在数据结构210、211中的加密信息与其他VM或管理程序202隔离并且不可被其他VM或管理程序202访问。寄存器205、206中的状态信息可以通过将未加密的信息存储在数据结构212中而被选择性地暴露。在一些实施方案中,不同的数据结构212可以与不同的VM相关联。
在操作中,在被允许在处理器102处执行之前,VM 200、201中的每一个均向安全模块104注册。在一些实施方案中,VM被注册如下:VM所有者例如使用安全的握手协议来与安全模块104建立安全通信信道(在图2未示出)。为VM生成指定“VMID”的识别值和指定“VMKEY”的安全密钥。所述生成可以在安全模块104处完成或者在单独的安全设备处完成并且经由安全通信信道传送到安全模块104。安全模块104确保VMKEY和VMID值中的每一个对于对应的VM是唯一的。VM所有者加密(或请求安全模块140加密)对应的VM的图像,并将其提供给管理程序202,所述管理程序将加密的图像作为安全数据存储在存储器103处。
随后,处理器102接收执行VM的请求。响应于所述请求,处理器102向安全模块104通知所请求的VM的VMID。安全模块104基于VMID从安全密钥126识别所请求的VM的安全密钥,并将所述安全密钥提供给加密模块125。在图2所示的示例中,处理器102已经接收到执行VM 200、201两者的请求,VM 200、201可以在下文中被称为VM-A200和VM-B201。安全模块104向加密模块125提供用于VM-A 200的密钥220和用于VM-B 201的密钥221。北桥110从对应的数据结构210、211请求用于VM 200、201的状态信息,且然后使用对应的密钥220、221解密所接收的信息。解密的状态信息被存储在对应的寄存器205、206中以界定VM 200、201的状态。
在其执行过程中,VM 200、201生成存储器访问请求并将它们提供给北桥110,北桥110基于与请求的存储器地址一起被包括的一个或多个位来识别存储器访问请求是否是安全的存储器访问请求。如果不是,则北桥110绕过加密模块125,并且满足存储器访问请求而不加密或解密。如果存储器访问请求是安全存储器访问请求,则北桥110基于与存储器访问请求一起提供的存储器地址或其他信息来识别VM 200、201中的哪一个生成了存储器访问请求。加密模块125选择对应于生成了存储器访问请求的VM的密钥220、221中的一个,并使用选定密钥对存储器访问信息(读取数据或写入数据)执行加密(在写入请求的情况下)或解密(在读取请求的情况下)。加密模块125也可以对写入请求执行解密并且对读取请求执行加密。
VM 200、201中的一个或多个可以生成退出状况以启动终止在处理器处执行对应VM的进程。这个进程可以被称为VM的退出进程。响应于检测到退出状况,北桥110访问存储在一个或多个对应寄存器205、206中的状态信息,并且将状态信息提供给加密模块125以基于一个或多个对应的密钥220、221进行加密。然后,北桥110将加密的信息写入到存储器103中的一个或多个对应的数据结构210、211。处理器102确定退出状况是自动退出还是非自动退出,并且如果退出状况是非自动退出,则处理器102响应于检测到退出状况而发出异常。异常处理程序通过确定是否将寄存器205、206中的一个或多个中的值暴露给管理程序202或其他VM 200、201来响应于异常。如果是,则北桥110绕过加密模块125,并将寄存器205、206的子集的未加密内容写入到存储器103中的数据结构212。
如上所述,数据的密码保护发生在北桥110处,并且用于密码保护的密钥是未知的,并且不可被VM 200、201和管理程序202访问。这确保了一个VM无法访问另一个VM的安全信息。例如,在退出时,界定VM 200的状态信息被存储在数据结构210中。由于状态信息与VM200相关联,因此加密模块125使用指派给VM 200的密钥220而不是使用指派给VM 201的密钥221来加密状态信息。因此,管理程序202和VM 201都将不能够有意义地或正确地解译或解密经加密的状态信息,因为管理程序202和VM 201都不能访问正确的密钥。因此,存储在数据结构210中的状态信息被密码地隔离而不能被VM 201和管理程序202访问。
在一些实施方案中,处理系统100周期性地改变密钥220、221以增强安全性。例如,每当VM被完全关闭(未暂停)时,安全模块104都可以为VM生成新密钥,以确保VM在被重启时具有新密钥。对于在旧密钥下存储在存储器103中的VM安全信息,安全模块104可以指示北桥110使用旧密钥将这些信息解密,并使用新密钥将信息重新加密,使得当VM被重启时安全信息是可访问的。
安全模块104可以响应于VM进入暂停状态而生成用于VM的新密钥。VM(例如,客体操作系统)的一部分维护识别存储器103的存储VM的加密数据的存储器页的数据结构。响应于VM进入暂停状态,安全模块104指示北桥110使用旧密钥解密所识别的存储器页,并使用新密钥重新加密存储器页,由此确保当VM退出暂停状态时VM可以访问其安全信息。
图3是根据一些实施方案的作为虚拟机通信块(VMCB)的一个示例实施的数据结构300的框图。数据结构300可以用来实施图1所示的数据结构121或图2所示的数据结构210、211的一些实施方案。数据结构300包括用于存储控制状态信息301的字段和用于存储可以在例如图1所示的处理器102的处理器上执行的VM的保存状态信息302的字段。数据结构300中的信息因此可以从例如图1所示的寄存器115、116的一个或多个寄存器存储在数据结构300中,并且可以从数据结构300写入到一个或多个寄存器。
控制状态信息301的一些实施方案在数据结构300中未加密,使得它们可以被与VM相关联的管理程序以及其他VM访问。控制状态信息301可以包括包含指示向管理程序发信号的事件的信息、指示中断是否针对客体未决的信息及类似物。管理程序使用控制状态信息301来执行操作,例如将VM加载到处理器中以及执行退出进程以终止处理器上VM的执行。例如,控制状态信息301包括机器特定寄存器(MSR)的值,所述值指示用于将保存状态信息302的子集暴露给管理程序的第二数据结构305(例如GHCB)的位置,如本文所讨论的。VM的一些实施方案可以读取或写入指示第二数据结构305的位置的MSR的值。
保存状态信息302包括界定在处理器上执行时的VM的状态的寄存器的加密内容。保存状态信息302包括指令指针,所述指令指针指示要由VM执行的指令的位置或由VM最近执行的指令的位置。保存状态信息302的一些实施方案包括用于管理程序或VM的退出代码、包括指示其他寄存器是否包括有效信息的位的位图、通用寄存器状态信息、浮点寄存器状态信息(包括浮点标记或状态信息或浮点控制信息)、x87寄存器状态信息、XMM寄存器状态信息和YMM寄存器信息。保存状态信息302的一些实施方案还可以包括在将信息从寄存器移动到数据结构300之前,基于存储在寄存器中的值先前计算的校验和310的位置的指针。例如,校验和310可以被存储在图1所示的存储器103中的存储器位置中。校验和310的值用于确认写回到寄存器中的信息与先前从寄存器保存的信息相同。
在一些实施方案中,VM的状态可以由保存状态信息302中的寄存器内容的子集来界定。因此,当VM退出处理器时,只有保存状态信息302的子集可以被加密并存储在数据结构201中。当在处理器上启动VM的执行时,相同的子集可以被解密并写入到处理器中的寄存器。保存状态信息302的子集由位316、317、318的对应阵列315指示。例如,位316可被设定为值“1”以指示浮点寄存器状态用于界定VM的状态,位317可被设定为值“1”以指示x87寄存器状态用于界定VM的状态,并且位318可以被设定为值“0”,以指示XMM寄存器状态不用于界定VM的状态。阵列315可以被实施为机器特定寄存器(MSR)。
图4示出了根据一些实施方案的处理系统100针对VM提供信息的密码隔离并且选择性地暴露信息的一部分的示例性操作。最初,VM正在处理系统100上执行。处理系统100检测到指示VM将终止在处理系统上执行的退出状况。响应于检测到退出状况,加密模块125加密寄存器115的内容并将加密值存储在第一数据结构121中。处理系统100还可以确定退出状况是指示自动退出还是非自动退出。如果退出状况是非自动退出,则处理系统100发出可由VM异常处理程序400处理的异常。VM异常处理程序400确定要被暴露给例如管理程序的寄存器115的内容的子集。例如,VM异常处理程序400可以暴露寄存器115的子集的内容,管理程序将使用所述内容来完成VM的退出进程。然后,VM异常处理程序400将值的子集复制到第二数据结构122。VM异常处理程序400绕过加密模块125,使得存储在第二数据结构122中的值的子集的副本不被加密并因此暴露给其他实体。
图5示出了根据一些实施方案的处理系统100解密用于VM的信息的示例性操作。处理系统100接收启动在例如图1所示的处理器102的处理器上执行VM的命令。响应于接收到命令,加密模块125传输对存储在第一数据结构121中的信息的请求、接收所请求的加密信息且然后解密从第一数据结构121接收的加密信息。解密的信息被存储在对应的寄存器115中。例如管理程序的实体可能在处理系统100接收到命令之前已经修改了存储在第二数据结构122中的信息,并且因此可能需要修改寄存器115的内容的子集以反映由管理程序做出的改变。例如,管理程序可以修改存储在第二数据结构122中的信息的内容,以完成VM的先前退出进程,因此VM可能不知道对第二数据结构122中的值做出的改变。在非自动退出的情况下,VM异常处理程序500传输对存储在第二数据结构122中的信息的请求、接收所请求的信息并确定是否已经修改了任何信息。如果是,则VM异常处理程序500可以修改寄存器115中的对应值。
图6是根据一些实施方案的用于响应于非自动退出状况而终止在处理器上执行VM的方法600的图。方法600(本文中也被称为非自动退出进程)在例如图2所示的VM 200、201的VM、例如图1所示的处理器102的处理器(CPU-HW)和例如图2所示的管理程序202的管理程序中实施。
在框605处,VM触发退出状况,所述退出状况启动用于终止在处理器上执行VM的非自动退出进程。响应于退出状况,VM生成由处理器检测到的信令610,处理器响应于检测到退出状况而生成异常(在框615处)。基于存储在安全模式寄存器(例如图1所示的安全模式寄存器111)中的信息来启用异常的一些实施方案。例如,可以基于存储在图1所示的增强的保护模式字段140中的值来启用异常。异常可能具有错误代码,其对应于由VM触发的退出状况的错误代码。然后,可以将异常信令620提供给VM。
如本文所讨论的,VM的一些实施方案实例化VM异常处理程序以检测和处理异常,例如由处理器生成的异常620。响应于检测到异常620,VM异常处理程序确定是否在完成退出进程之前将界定VM的状态信息的部分暴露给例如管理程序。在框625处,VM异常处理程序暴露状态信息的部分,其可包括处理器中的寄存器(例如图1所示的寄存器115、116或图2所示的寄存器205、206)子集的内容。暴露状态信息的部分包括将状态信息的未加密内容写入到管理程序可访问的数据结构。在一些实施方案中,暴露状态信息包括将与状态信息相关联的错误代码复制到数据结构。在框630处,VM异常处理程序生成退出命令并将退出命令信令635提供给处理器。
在框640处,响应于退出命令信令635,处理器将状态信息保存到受保护的存储器位置。处理器的一些实施方案实施加密模块(例如图1所示的加密模块125)以用于将状态信息加密,然后将加密的状态信息存储在数据结构(例如图1所示的数据结构121或图2所示的数据结构210、211)中。加密模块使用加密模块和VM已知的但是包括管理程序的其他实体未知的一个或多个安全密钥来加密状态信息。处理器的一些实施方案可以保存由位(例如图3所示的阵列315中的位316-318)指示的寄存器的子集的内容。
在框645处,在状态信息已经被保存在受保护的存储器中之后,处理器将管理程序状态信息加载到寄存器中。然后,可以由处理器提供信令650,以基于存储在处理器寄存器中的管理程序状态信息来启动在处理器上执行管理程序。在框655处,管理程序基于状态信息的暴露部分来完成VM的退出进程。完成退出进程可以包括修改状态信息的暴露部分的内容。例如,管理程序可以使用来自模拟输入/输出设备的返回值来修改值。
图7是根据一些实施方案的用于在非自动退出进程之后启动在处理器上执行VM的方法700的图。方法700(本文中也被称为运行进程)在例如图2所示的VM 200、201的VM、如图1所示的处理器102的处理器(CPU-HW)和例如图2所示的管理程序202的管理程序中实施。
在框705处,管理程序发出用于VM的运行命令,并将信令710传输到处理器以启动将VM加载到处理器上以供执行的进程。在框715处,处理器从受保护的存储器加载状态信息。例如,处理器中的执行模块可以从受保护的存储器请求加密的状态信息、接收加密的状态信息并且解密加密的状态信息。处理器的一些实施方案可以在解密状态信息并将状态信息保存到处理器中的寄存器之前基于先前计算的校验和来验证加密的状态信息。例如,处理器可以使用例如图3所示的校验和310的校验和来验证加密的状态信息。然后,解密的状态信息可以被加载到处理器中的寄存器中。信令720指示状态信息已被加载到处理器的寄存器中。
在框725处,响应于信令720,将控制返回给VM异常处理程序。VM异常处理程序确定是否作为图6所示的退出进程的一部分,例如由管理程序修改了任何暴露的状态信息。在框730处,如果检测到任何一个,则VM异常处理程序修改寄存器中对应于被修改的暴露状态信息的值。在框735处,VM异常处理程序将控制返回到VM,然后可以基于存储在处理器的寄存器中的状态信息来执行VM。
图8是根据一些实施方案的用于响应于自动退出状况而终止在处理器上执行VM的方法800的图。方法800(本文中也被称为自动退出进程)在例如图2所示的VM 200、201的VM、例如图1所示的处理器102的处理器(CPU-HW)和例如图2所示的管理程序202的管理程序中实施。
在框805处,VM触发退出状况,所述退出状况启动用于终止在处理器上执行VM的自动退出进程。在框820处,响应于退出状况触发,处理器将状态信息保存到受保护的存储器位置。处理器的一些实施方案实施加密模块(例如图1所示的加密模块125)以用于将状态信息加密,然后将加密的状态信息存储在数据结构(例如图1所示的数据结构121或图2所示的数据结构210、211)中。加密模块使用加密模块和VM已知的但是包括管理程序的其他实体未知的一个或多个安全密钥来加密状态信息。处理器的一些实施方案可以保存由位(例如图3所示的阵列315中的位316-318)指示的寄存器的子集的内容。
在框825处,在状态信息已经被保存在受保护的存储器中之后,处理器将管理程序状态信息加载到寄存器中。然后,可以由处理器提供信令830,以基于存储在处理器寄存器中的管理程序状态信息来启动在处理器上执行管理程序。在框835处,管理程序完成VM的退出进程。
在自动退出进程之后,可以在处理器上启动VM的执行。在框840处,管理程序发出用于VM的运行命令,并将信令845传输到处理器以启动将VM加载到处理器上以供执行的进程。在框850处,处理器从受保护的存储器加载状态信息。例如,处理器中的执行模块可以从受保护的存储器请求加密的状态信息、接收加密的状态信息并且解密加密的状态信息。处理器的一些实施方案可以在解密状态信息并将状态信息保存到处理器中的寄存器之前基于先前计算的校验和来验证加密的状态信息。例如,处理器可以使用例如图3所示的校验和310的校验和来验证加密的状态信息。然后,解密的状态信息可以被加载到处理器中的寄存器中。信令855指示状态信息已经被加载到处理器的寄存器中,并且VM可以开始执行。
图9是根据一些实施方案的用于基于退出进程的类型来处理VM的退出进程的方法900的流程图。方法900可以在图1所示的处理器102的一些实施方案中实施。在框905处,处理器检测由在处理器上执行的VM生成的退出状况。在决策框910处,处理器确定VM的退出进程的类型。退出进程可以是自动退出或非自动退出。自动退出是不要求VM知道退出且VM不会实例化VM异常处理程序的退出状况。自动退出可能包括预期不会修改界定处理器上VM的状态信息的事件。非自动退出是需要通知VM退出状况已经发生的退出状况。响应于非自动退出状况而实例化VM异常处理程序。
如果在决策框910处,处理器检测到自动退出状况,则在框915处,处理器将状态信息保存在受保护的存储器中。例如,处理器中的加密模块可以加密状态信息并将加密的状态信息存储在数据结构中,如本文所讨论的。在框920处,在状态信息已经被保存到受保护的存储器之后,处理器将主机状态信息加载到处理器寄存器中。例如,处理器可以加载界定VM的管理程序的状态信息。在框925处,例如由管理程序完成退出进程。
如果在决策框910处处理器检测到非自动退出状况,则在框930处处理器生成异常。VM响应于非自动退出状况而实例化VM异常处理程序,并且VM异常处理程序确定(在框935处)状态信息的子集以使其他实体(例如管理程序)可见。所述子集可以不包括界定处理器上VM的状态信息、包括一些所述状态信息或全部所述状态信息。在框940处,VM异常处理程序将可见状态信息保存到未受保护的存储器(例如图1所示的数据结构122或图2所示的数据结构212)。在一些实施方案中,可以使用未加密的控制状态信息(例如图3所示的控制状态信息301)将未受保护的存储器的位置指示给例如管理程序的其他实体。在框945处,VM异常处理程序可以生成自动退出状况,使得可以通过将状态信息保存到受保护的存储器来完成退出进程。
在一些实施方案中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器来实施。所述软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。所述软件可以包括指令和某些数据,这些指令和数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂时性计算机可读存储介质可以包括例如磁盘或光盘存储设备、固态存储设备例如快闪存储器、高速缓存、随机存取存储器(RAM)或其他一个或多个非易失性存储器设备及类似物。存储在非暂时性计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码或者被一个或多个处理器解译或以其他方式执行的其他指令格式。
应注意,并非上述一般性描述中的所有活动或元素都是必需的,特定活动或设备的一部分可能不是必需的,并且除了所描述的那些以外,还可以执行一个或多个其他活动,或者还可以包括一个或多个其他元素。更进一步地,列出活动的顺序不一定是它们被执行的顺序。而且,已经参考具体实施方案描述了所述概念。然而,本领域的普通技术人员应理解,在不脱离如随附权利要求书所阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性意义的,并且意在将所有这样的修改包括在本公开的范围内。
上文已经关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,可能导致任何益处、优点或解决方案发生或变得更明显的益处、优点、问题的解决方案以及任何特征都不应被解释为任何或所有权利要求的关键、必需或本质特征。此外,以上公开的特定实施方案仅仅是说明性的,因为所公开的主题可以受益于本文教示的本领域技术人员明白的不同但等效的方式进行修改和实践。除了在随附权利要求书中所描述的之外,不打算对本文示出的构造或设计的细节进行限制。因此,显而易见的是,上面公开的特定实施方案可以被改变或修改,并且所有这样的变化都被认为在所公开的主题的范围内。因此,本文寻求的保护如随附权利要求书中所阐述。

Claims (15)

1.一种方法,其包括:
检测在实施寄存器[115、116]的处理器[102]上运行的虚拟机(VM)[200]的退出状况[605]以界定所述VM的状态;
响应于检测到所述退出状况,将所述寄存器的内容存储在第一数据结构[121]中,所述第一数据结构与所述VM的管理程序[202]隔离;以及
将所述寄存器的子集[305、625]的内容选择性地暴露给所述管理程序。
2.根据权利要求1所述的方法,其中将所述寄存器的所述内容存储在所述第一数据结构中包括:将所述寄存器的所述内容存储在所述管理程序不可访问的存储器位置[120]处。
3.根据权利要求1所述的方法,其中将所述寄存器的所述内容存储在所述第一数据结构中包括:在将所述寄存器的所述内容存储在所述第一数据结构中之前,使用硬件加密模块[125]将所述寄存器的所述内容加密。
4.根据权利要求1所述的方法,其中选择性地暴露所述寄存器的所述子集的所述内容包括:将所述寄存器的所述子集的所述内容存储在所述管理程序可见的第二数据结构[122]中。
5.根据权利要求4所述的方法,其还包括:
响应于检测到所述退出状况,检测由所述处理器发出的异常[615];以及
响应于检测到所述异常,确定要暴露给所述管理程序的所述寄存器的所述内容的所述子集。
6.根据权利要求5所述的方法,其还包括:
基于所述第二数据结构中的暴露给所述管理程序的所述寄存器的所述内容的所述子集来完成所述VM的退出进程[655]。
7.根据权利要求6所述的方法,其中完成所述VM的所述退出进程包括:修改[730]所述第二数据结构中的所述寄存器的所述内容的所述子集中的至少一个。
8.根据权利要求7所述的方法,其还包括:
在完成所述退出进程之后,响应于启动在所述处理器上执行所述VM,从所述第一数据结构加载所述寄存器的所述内容;以及
修改所述寄存器中的至少一个值以对应于所述第二数据结构中的所述寄存器的所述内容的所述子集中的所述经修改的至少一个。
9.根据权利要求8所述的方法,其中从所述第一数据结构加载所述寄存器的所述内容包括:响应于基于所述第一数据结构中的所述寄存器的所述内容所计算的校验和匹配先前存储的校验和,从所述第一数据结构加载所述寄存器的所述内容。
10.一种装置,其包括:
处理器[102],所述处理器实施寄存器[115、116]以界定在所述处理器上运行的虚拟机(VM)[200]的状态,其中所述处理器检测所述VM的退出状况[605],其中所述处理器响应于所述处理器检测到退出状况而将所述寄存器的内容存储在第一数据结构[121]中,所述第一数据结构与所述VM的管理程序[202]隔离,其中所述VM要将所述寄存器的子集的内容选择性地暴露[305]给所述管理程序。
11.根据权利要求10所述的装置,其中所述处理器要将所述寄存器的所述内容存储在所述管理程序不可访问的位置[120]处。
12.根据权利要求10所述的装置,其还包括:
硬件加密模块[125],其用于在将所述寄存器的所述内容存储在所述第一数据结构中之前将所述寄存器的所述内容加密。
13.根据权利要求10所述的装置,其中所述VM将通过将所述寄存器的所述子集的所述内容存储在所述管理程序可见的第二数据结构[122]中来选择性地暴露所述寄存器的所述子集的所述内容。
14.根据权利要求13所述的装置,其中所述VM将执行异常处理程序[400]以检测由所述处理器响应于检测到所述退出状况而发出的异常,并响应于检测到所述异常而确定要暴露给所述管理程序的所述寄存器的所述内容的所述子集。
15.根据权利要求14所述的装置,其中所述管理程序将基于所述第二数据结构中的暴露给所述管理程序的所述寄存器的所述内容的所述子集来完成所述VM的退出进程[655]。
CN201680043168.8A 2014-02-28 2016-06-22 保护虚拟机的状态信息 Active CN107851151B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461946086P 2014-02-28 2014-02-28
US14/748,883 2015-06-24
US14/748,883 US10152602B2 (en) 2014-02-28 2015-06-24 Protecting state information for virtual machines
PCT/US2016/038694 WO2016209915A1 (en) 2015-06-24 2016-06-22 Protecting state information for virtual machines

Publications (2)

Publication Number Publication Date
CN107851151A true CN107851151A (zh) 2018-03-27
CN107851151B CN107851151B (zh) 2020-06-30

Family

ID=54006834

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201580010043.0A Active CN106062768B (zh) 2014-02-28 2015-02-27 处理系统中信息的密码保护
CN201680043168.8A Active CN107851151B (zh) 2014-02-28 2016-06-22 保护虚拟机的状态信息

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201580010043.0A Active CN106062768B (zh) 2014-02-28 2015-02-27 处理系统中信息的密码保护

Country Status (6)

Country Link
US (2) US9792448B2 (zh)
EP (1) EP3111365B1 (zh)
JP (1) JP6450775B2 (zh)
KR (1) KR102456084B1 (zh)
CN (2) CN106062768B (zh)
WO (1) WO2015178987A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949376A (zh) * 2020-08-24 2020-11-17 海光信息技术有限公司 虚拟机系统和用于虚拟机系统的方法
TWI806622B (zh) * 2021-09-14 2023-06-21 美商萬國商業機器公司 儲存安全虛擬機器之診斷狀態

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9239909B2 (en) * 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
US9792448B2 (en) 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
US10095532B2 (en) * 2014-04-28 2018-10-09 Netkine, Inc. Providing excess compute resources with virtualization
US9298647B2 (en) * 2014-08-25 2016-03-29 HGST Netherlands B.V. Method and apparatus to generate zero content over garbage data when encryption parameters are changed
US9875189B2 (en) 2015-06-12 2018-01-23 Intel Corporation Supporting secure memory intent
US9710401B2 (en) 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US10152612B2 (en) * 2015-09-25 2018-12-11 Intel Corporation Cryptographic operations for secure page mapping in a virtual machine environment
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
GB2543520B (en) * 2015-10-20 2019-06-19 Advanced Risc Mach Ltd Memory access instructions
US10102151B2 (en) * 2015-11-06 2018-10-16 International Business Machines Corporation Protecting a memory from unauthorized access
US10146936B1 (en) * 2015-11-12 2018-12-04 EMC IP Holding Company LLC Intrusion detection for storage resources provisioned to containers in multi-tenant environments
CN108496159A (zh) * 2016-01-21 2018-09-04 惠普发展公司,有限责任合伙企业 数据密码引擎
FR3048529B1 (fr) * 2016-03-01 2018-03-23 Ingenico Group Procede de modulation d'acces a une ressource, dispositif et programme correspondant
US20170277903A1 (en) * 2016-03-22 2017-09-28 Qualcomm Incorporated Data Protection Using Virtual Resource Views
US20170277898A1 (en) * 2016-03-25 2017-09-28 Advanced Micro Devices, Inc. Key management for secure memory address spaces
US10348500B2 (en) * 2016-05-05 2019-07-09 Adventium Enterprises, Llc Key material management
US11126565B2 (en) * 2016-06-27 2021-09-21 Hewlett Packard Enterprise Development Lp Encrypted memory access using page table attributes
US10261919B2 (en) * 2016-07-08 2019-04-16 Hewlett Packard Enterprise Development Lp Selective memory encryption
US20180081830A1 (en) * 2016-09-20 2018-03-22 Advanced Micro Devices, Inc. Hardware supervision of page tables
US10459850B2 (en) * 2016-09-20 2019-10-29 Advanced Micro Devices, Inc. System and method for virtualized process isolation including preventing a kernel from accessing user address space
US10740466B1 (en) 2016-09-29 2020-08-11 Amazon Technologies, Inc. Securing interfaces of a compute node
US10176122B2 (en) 2016-10-19 2019-01-08 Advanced Micro Devices, Inc. Direct memory access authorization in a processing system
US20180165224A1 (en) * 2016-12-12 2018-06-14 Ati Technologies Ulc Secure encrypted virtualization
US10417433B2 (en) * 2017-01-24 2019-09-17 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Encryption and decryption of data owned by a guest operating system
US10496425B2 (en) * 2017-02-21 2019-12-03 Red Hat, Inc. Systems and methods for providing processor state protections in a virtualized environment
US10474359B1 (en) 2017-02-28 2019-11-12 Amazon Technologies, Inc. Write minimization for de-allocated memory
US10404674B1 (en) * 2017-02-28 2019-09-03 Amazon Technologies, Inc. Efficient memory management in multi-tenant virtualized environment
US10901627B1 (en) 2017-02-28 2021-01-26 Amazon Technologies, Inc. Tracking persistent memory usage
US10338951B2 (en) 2017-03-01 2019-07-02 Red Hat, Inc. Virtual machine exit support by a virtual machine function
US10509733B2 (en) 2017-03-24 2019-12-17 Red Hat, Inc. Kernel same-page merging for encrypted memory
US10209917B2 (en) 2017-04-20 2019-02-19 Red Hat, Inc. Physical memory migration for secure encrypted virtual machines
US10379764B2 (en) 2017-05-11 2019-08-13 Red Hat, Inc. Virtual machine page movement for encrypted memory
US10771439B2 (en) * 2017-06-28 2020-09-08 Microsoft Technology Licensing, Llc Shielded networks for virtual machines
US11030117B2 (en) * 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators
US11354420B2 (en) * 2017-07-21 2022-06-07 Red Hat, Inc. Re-duplication of de-duplicated encrypted memory
US10657071B2 (en) * 2017-09-25 2020-05-19 Intel Corporation System, apparatus and method for page granular, software controlled multiple key memory encryption
US20190102324A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Cache behavior for secure memory repartitioning systems
US11281495B2 (en) 2017-10-26 2022-03-22 Advanced Micro Devices, Inc. Trusted memory zone
KR20190075363A (ko) * 2017-12-21 2019-07-01 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 모듈
US10893505B2 (en) 2018-01-23 2021-01-12 Statum Systems Inc. Enhanced pager network
US11074997B2 (en) * 2018-01-23 2021-07-27 Statum Systems Inc. Multi-modal encrypted messaging system
US10838773B2 (en) 2018-03-30 2020-11-17 Intel Corporation Techniques for dynamic resource allocation among cryptographic domains
US10871983B2 (en) * 2018-05-31 2020-12-22 Intel Corporation Process-based multi-key total memory encryption
CN110659226A (zh) * 2018-06-28 2020-01-07 晨星半导体股份有限公司 用以存取数据的方法以及相关电路
GB2576005B (en) * 2018-07-31 2020-10-07 Advanced Risc Mach Ltd Handling guard tag loss
US10838915B2 (en) * 2018-09-06 2020-11-17 International Business Machines Corporation Data-centric approach to analysis
US10838722B2 (en) * 2018-12-20 2020-11-17 Intel Corporation Restartable cache write-back and invalidation
US11829517B2 (en) * 2018-12-20 2023-11-28 Intel Corporation Method and apparatus for trust domain creation and destruction
US10956188B2 (en) * 2019-03-08 2021-03-23 International Business Machines Corporation Transparent interpretation of guest instructions in secure virtual machine environment
US11176054B2 (en) * 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11347869B2 (en) 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
EP4004773B1 (en) * 2019-07-29 2023-09-06 Intertrust Technologies Corporation Systems and methods for managing state
US11842227B2 (en) 2019-10-10 2023-12-12 Advanced Micro Devices, Inc. Hypervisor secure event handling at a processor
CN112825041A (zh) * 2019-11-21 2021-05-21 上海海思技术有限公司 一种内存隔离的装置、内存隔离方法和相关设备
US11614956B2 (en) 2019-12-06 2023-03-28 Red Hat, Inc. Multicast live migration for encrypted virtual machines
US11763008B2 (en) 2020-01-15 2023-09-19 International Business Machines Corporation Encrypting data using an encryption path and a bypass path
US11520709B2 (en) * 2020-01-15 2022-12-06 International Business Machines Corporation Memory based encryption using an encryption key based on a physical address
US11567791B2 (en) * 2020-06-26 2023-01-31 Intel Corporation Technology for moving data between virtual machines without copies
US11620377B2 (en) * 2020-08-27 2023-04-04 Ventana Micro Systems Inc. Physically-tagged data cache memory that uses translation context to reduce likelihood that entries allocated during execution under one translation context are accessible during execution under another translation context
US11625479B2 (en) 2020-08-27 2023-04-11 Ventana Micro Systems Inc. Virtually-tagged data cache memory that uses translation context to make entries allocated during execution under one translation context inaccessible during execution under another translation context
US11630723B2 (en) 2021-01-12 2023-04-18 Qualcomm Incorporated Protected data streaming between memories
US11782127B2 (en) 2021-02-05 2023-10-10 Nxp Usa, Inc. Stop criterion for greedy target detection algorithms in radar applications using sparse phased arrays
US11567676B2 (en) 2021-04-30 2023-01-31 Nxp B.V. Inline encryption/decryption for a memory controller
NL2028534B1 (en) * 2021-06-24 2023-01-02 Technolution B V Processor for secure data processing
CN113688407A (zh) * 2021-07-30 2021-11-23 山东云海国创云计算装备产业创新中心有限公司 一种数据管理方法及相关装置
US20230188338A1 (en) * 2021-12-10 2023-06-15 Amazon Technologies, Inc. Limiting use of encryption keys in an integrated circuit device
CN114266082A (zh) * 2021-12-16 2022-04-01 北京奕斯伟计算技术有限公司 防御控制流攻击的装置、方法、处理器、设备及存储介质
US11860797B2 (en) * 2021-12-30 2024-01-02 Advanced Micro Devices, Inc. Peripheral device protocols in confidential compute architectures

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101158924A (zh) * 2007-11-27 2008-04-09 北京大学 一种虚拟机管理器的动态内存映射方法
US20090113110A1 (en) * 2007-10-30 2009-04-30 Vmware, Inc. Providing VMM Access to Guest Virtual Memory
CN101620547A (zh) * 2009-07-03 2010-01-06 中国人民解放军国防科学技术大学 X86计算机虚拟化的物理中断处理方法
US20110010707A1 (en) * 2009-07-07 2011-01-13 Advanced Micro Devices, Inc. Virtual machine device and methods thereof

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5479630A (en) * 1991-04-03 1995-12-26 Silicon Graphics Inc. Hybrid cache having physical-cache and virtual-cache characteristics and method for accessing same
US20030053630A1 (en) 2001-09-20 2003-03-20 International Business Machines Corporation Method and system for key usage control in an embedded security system
US7246245B2 (en) * 2002-01-10 2007-07-17 Broadcom Corporation System on a chip for network storage devices
US7415708B2 (en) 2003-06-26 2008-08-19 Intel Corporation Virtual machine management using processor state information
US7305592B2 (en) 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
US7886293B2 (en) * 2004-07-07 2011-02-08 Intel Corporation Optimizing system behavior in a virtual machine environment
US20060021066A1 (en) 2004-07-26 2006-01-26 Ray Clayton Data encryption system and method
JP4795812B2 (ja) * 2006-02-22 2011-10-19 富士通セミコンダクター株式会社 セキュアプロセッサ
US8014530B2 (en) 2006-03-22 2011-09-06 Intel Corporation Method and apparatus for authenticated, recoverable key distribution with no database secrets
US20080126614A1 (en) * 2006-09-26 2008-05-29 Giap Yong Ooi Input/output (I/O) device virtualization using hardware
US8151262B2 (en) 2007-03-30 2012-04-03 Lenovo (Singapore) Pte. Ltd. System and method for reporting the trusted state of a virtual machine
JP4902460B2 (ja) * 2007-08-08 2012-03-21 キヤノン株式会社 画像処理装置、撮像装置及び画像処理方法
US8249257B2 (en) 2007-09-28 2012-08-21 Intel Corporation Virtual TPM keys rooted in a hardware TPM
JP4782871B2 (ja) * 2007-10-03 2011-09-28 富士通株式会社 デバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置
JP5405799B2 (ja) 2008-10-30 2014-02-05 株式会社日立製作所 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム
US20100175108A1 (en) 2009-01-02 2010-07-08 Andre Protas Method and system for securing virtual machines by restricting access in connection with a vulnerability audit
US8738932B2 (en) 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US8219990B2 (en) 2009-05-28 2012-07-10 Novell, Inc. Techniques for managing virtual machine (VM) states
US8627112B2 (en) 2010-03-30 2014-01-07 Novell, Inc. Secure virtual machine memory
US8856504B2 (en) 2010-06-07 2014-10-07 Cisco Technology, Inc. Secure virtual machine bootstrap in untrusted cloud infrastructures
JP5707760B2 (ja) * 2010-07-20 2015-04-30 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、情報処理プログラム、及びそのプログラムを記録した記録媒体
US20120054740A1 (en) 2010-08-31 2012-03-01 Microsoft Corporation Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
US20120179904A1 (en) * 2011-01-11 2012-07-12 Safenet, Inc. Remote Pre-Boot Authentication
US8375221B1 (en) 2011-07-29 2013-02-12 Microsoft Corporation Firmware-based trusted platform module for arm processor architectures and trustzone security extensions
US8788763B2 (en) 2011-10-13 2014-07-22 International Business Machines Corporation Protecting memory of a virtual guest
WO2013061375A1 (en) * 2011-10-27 2013-05-02 Hitachi, Ltd. Storage system and its management method
WO2013112538A1 (en) 2012-01-23 2013-08-01 Citrix Systems, Inc. Storage encryption
US8996887B2 (en) 2012-02-24 2015-03-31 Google Inc. Log structured volume encryption for virtual machines
US8656482B1 (en) 2012-08-20 2014-02-18 Bitdefender IPR Management Ltd. Secure communication using a trusted virtual machine
CN103020535B (zh) * 2012-12-06 2016-05-04 苏州国芯科技有限公司 一种带比较功能的数据加解密系统
US9514313B2 (en) 2013-03-15 2016-12-06 Netiq Corporation Techniques for secure data extraction in a virtual or cloud environment
US9792448B2 (en) 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
US9652631B2 (en) 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
US10193879B1 (en) 2014-05-07 2019-01-29 Cisco Technology, Inc. Method and system for software application deployment
US20180060077A1 (en) 2016-08-26 2018-03-01 Qualcomm Incorporated Trusted platform module support on reduced instruction set computing architectures

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113110A1 (en) * 2007-10-30 2009-04-30 Vmware, Inc. Providing VMM Access to Guest Virtual Memory
CN101158924A (zh) * 2007-11-27 2008-04-09 北京大学 一种虚拟机管理器的动态内存映射方法
CN101620547A (zh) * 2009-07-03 2010-01-06 中国人民解放军国防科学技术大学 X86计算机虚拟化的物理中断处理方法
US20110010707A1 (en) * 2009-07-07 2011-01-13 Advanced Micro Devices, Inc. Virtual machine device and methods thereof

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YUANFENG WEN 等: "Multi-Processor Architectural Support for Protecting Virtual Machine Privacy in Untrusted Cloud Environment", 《PROCEEDINGS OF THE ACM INTERNATIONAL CONFERENCE ON COMPUTING FRONTIERS,CF’3》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949376A (zh) * 2020-08-24 2020-11-17 海光信息技术有限公司 虚拟机系统和用于虚拟机系统的方法
TWI806622B (zh) * 2021-09-14 2023-06-21 美商萬國商業機器公司 儲存安全虛擬機器之診斷狀態
US12019772B2 (en) 2021-09-14 2024-06-25 International Business Machines Corporation Storing diagnostic state of secure virtual machines

Also Published As

Publication number Publication date
EP3111365A4 (en) 2017-11-01
US20160378522A1 (en) 2016-12-29
KR102456084B1 (ko) 2022-10-18
WO2015178987A3 (en) 2016-01-28
CN106062768A (zh) 2016-10-26
US10152602B2 (en) 2018-12-11
WO2015178987A2 (en) 2015-11-26
EP3111365A2 (en) 2017-01-04
KR20160125987A (ko) 2016-11-01
JP6450775B2 (ja) 2019-01-09
EP3111365B1 (en) 2024-07-24
JP2017517043A (ja) 2017-06-22
CN106062768B (zh) 2020-06-05
US20150248357A1 (en) 2015-09-03
CN107851151B (zh) 2020-06-30
US9792448B2 (en) 2017-10-17

Similar Documents

Publication Publication Date Title
CN107851151A (zh) 保护虚拟机的状态信息
JP6618658B2 (ja) 処理システムにおけるダイレクトメモリアクセス認可
US11520906B2 (en) Cryptographic memory ownership table for secure public cloud
EP3602376B1 (en) Monitoring of memory page transitions between a hypervisor and a virtual machine
KR100668000B1 (ko) 인증된 코드 방법 및 장치
CN103026347B (zh) 多核架构中的虚拟机内存划分
US20150294123A1 (en) System and method for sharing data securely
CN107077428A (zh) 保护应用秘密免受操作系统攻击
CN109766165A (zh) 一种内存访问控制方法、装置、内存控制器及计算机系统
CN107851163A (zh) 用于i/o数据的完整性、防重放和真实性保证的技术
CN103154925A (zh) 多处理器系统中的通信禁用
CN107526974B (zh) 一种信息密码保护装置和方法
CN109587106A (zh) 密码分区的云中的跨域安全性
WO2013182285A1 (en) Secure data processing
CN107533615A (zh) 用于利用安全飞地来强化数据加密的技术
CN113807531B (zh) 利用地址随机化的ai模型转移方法
WO2014178814A2 (en) Non-volatile memory to store resettable data
CN110443078A (zh) 一种基于特权分级的安全存储系统
CN113807532B (zh) 利用层随机化的ai模型转移方法
CN107563226B (zh) 一种存储器控制器、处理器模块及密钥更新方法
EP3314502B1 (en) Protecting state information for virtual machines
CN109325322A (zh) 用于嵌入式平台的软件知识产权保护系统和方法
JP2009253490A (ja) メモリシステムの暗号化方式
Li Understanding and Exploiting Design Flaws of AMD Secure Encrypted Virtualization
CN110334532A (zh) 文件的加密、解密处理方法及加解密系统

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