CN107454958B - 使用多个嵌套页表隔离客户机代码和数据 - Google Patents

使用多个嵌套页表隔离客户机代码和数据 Download PDF

Info

Publication number
CN107454958B
CN107454958B CN201680020184.5A CN201680020184A CN107454958B CN 107454958 B CN107454958 B CN 107454958B CN 201680020184 A CN201680020184 A CN 201680020184A CN 107454958 B CN107454958 B CN 107454958B
Authority
CN
China
Prior art keywords
page table
code
host
client
physical 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.)
Active
Application number
CN201680020184.5A
Other languages
English (en)
Other versions
CN107454958A (zh
Inventor
J·S·小马特森
R·阿加瓦尔
A·N·卡塔利亚
徐威
F·J·雅各布斯
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.)
Weirui LLC
Original Assignee
VMware LLC
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 VMware LLC filed Critical VMware LLC
Priority claimed from PCT/US2016/026164 external-priority patent/WO2016164424A1/en
Publication of CN107454958A publication Critical patent/CN107454958A/zh
Application granted granted Critical
Publication of CN107454958B publication Critical patent/CN107454958B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/1009Address translation using page tables, e.g. page table structures
    • 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • 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/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/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation

Landscapes

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

Abstract

一种管理程序,提供具有多个保护域以及用于控制所述保护域之间的过渡的机制的客户机操作系统,所述保护域包括根保护域和一个或更多个安全保护域。通过安全嵌套页表被映射到主机物理存储器的安全保护域的客户机物理存储器区域存储安全客户机代码和数据以及用于安全客户机代码的客户机页表。当执行安全客户机代码时,存储在所述安全保护域区域中的所述客户机页表用于客户机虚拟地址到客户机物理地址的转换,所述安全嵌套页表用于客户机物理地址到主机物理地址的转换。

Description

使用多个嵌套页表隔离客户机代码和数据
发明人:J·S·小马特森,R·阿加瓦尔,A·N·卡塔利亚,徐威,F·J·雅各布斯
相关申请的交叉引用
本申请要求2015年4月9日提交的、1861/CHE/2015号印度非临时专利申请以及2015年7月14日提交的、14/798,483号美国非临时专利申请的权益,其两者的全部内容通过引用并入本文。
背景技术
虚拟机(VM)系统为客户机操作系统(OS)提供虚拟执行平台,其包括被配置成仿真相应的物理硬件子系统的虚拟硬件子系统。被配置成执行客户机OS的虚拟执行平台的实例通常被称为虚拟机(VM)。在典型的VM系统中,任意数量的VM可以在单个物理主机(或更简单地,“主机”)上执行。每个VM可以相对于其他VM独立地操作,并且可以例如经由仿真网络接口与其他VM通信。主机,凭借在其中运行的虚拟化软件(例如,管理程序),应配置有足够的计算资源和存储器资源来支持虚拟机。
在物理机中,VM中实施安全措施来防范恶意活动,例如破坏存储器或访问特权信息。在VM中作为客户机驱动程序实施的VM内省工具可以被用来实时检查VM的内容,以及如申请号为13/430,868的美国申请和申请号为14/550,881的美国申请所述(它们均通过引用并入本文)的,监控VM内的事件,以及选择性地将系统事件报告给各种服务设备,例如配置有防病毒和防恶意软件扫描软件的安全服务设备。
因此,客户机内省驱动程序是VM安全框架中的关键组件,并且其需要被庇护以免遭受内核级攻击或恶意程序,例如根工具箱(root kit)。可能的根工具箱攻击向量包括尝试卸载驱动程序或阻止所述驱动程序加载、篡改驱动程序代码或磁盘上或存储器中的数据以及篡改驱动程序的通信信道。
附图说明
图1是根据实施例的、实现多个保护域的虚拟化主机服务器系统的框图。
图2是根据实施例的、描述到不同保护域的存储器映射的示意图。
图3描述了根据实施例的、用于在安全客户机代码和数据被加载到存储器中时创建安全保护域的方法步骤的流程图。
图4A和4B描述了根据实施例的、用于进入和退出安全保护域的方法步骤的流程图。
图5A和5B描述了根据实施例的、用于处理来自安全保护域内的中断以及在中断返回之后在安全保护域中恢复执行的方法步骤的流程图。
图6描述了根据实施例的、用于从安全保护域访问根保护域中的数据的方法步骤的流程图。
图7描述了根据实施例的、用于通过通信信道传输来自和去往安全保护域的数据的方法步骤的流程图。
详细说明
根据一个或更多个实施例,管理程序为客户机操作系统提供多个保护域,包括根保护域(root protection domain)和一个或更多个安全保护域,以及用于控制保护域之间的过渡(transition)的机制。通过安全嵌套页表映射到主机物理存储器的安全保护域的客户机物理存储器区域存储安全客户机代码(例如,客户机内省驱动程序代码)和数据以及用于安全客户机代码的客户机页表。当执行安全客户机代码时,存储在安全保护域区域中的客户机页表用于客户机虚拟地址到客户机物理地址的转换,并且安全嵌套页表用于客户机物理地址到主机物理地址的转换。
在本文描述的实施例中,采用页表来使能对不同保护域的存储器区域的访问以及设置用于访问它们的限制。在替代实施例中,可以采用除页表之外的构造,只要它们提供地址空间之间的映射,并且允许对访问不同位置处的存储器的方式设置限制。
图1是根据实施例的、虚拟化主机服务器系统的框图,其实现用于安全客户机代码和数据(如客户内省驱动程序代码和数据)的安全保护域。在图1中,虚拟化主机服务器系统被描述为主机100。主机100构建在包括一个或更多个计算机系统的底层硬件计算平台上,所述一个或更多个计算机系统中的每一个可以是台式计算机、笔记本计算机、平板计算机,如智能电话的移动设备、服务器级计算机系统或任何其他合适的硬件计算平台,包括基于众所周知的ARM或x86架构平台的不同变体的系统。主机100配置成执行虚拟化软件114,其为一个或更多个客户机虚拟机(VM)120提供执行支持。为了说明的目的,服务设备170在图1中描述,并且可以被实现为提供诸如防病毒和反恶意软件扫描、防数据丢失和文件完整性的服务。
每个VM 120配置成执行客户机操作系统(OS)132,其可以是诸如Microsoft操作系统或操作系统的商业操作系统。每个VM 120进一步被配置为支持客户机应用(app)113和下文进一步详细描述的客户机内省(GI)驱动程序139,其监视VM内的事件,并且选择性地将系统事件报告给服务设备170。
虚拟化软件114配置成管理和操作主机100。虚拟化软件114为VM 120和服务设备170提供执行环境。每个VM 120和服务设备170作为独立环境中的应用执行,并且虚拟化软件114提供可用作这些独立环境之间的桥接的更享有特权的环境。虚拟化软件114可以被实现为包括具有用于管理主机服务器系统100内的相关硬件子系统的硬件驱动程序的内核。在一个实施例中,虚拟化软件114包括配置成向VM 120提供系统服务的主机操作系统。在其他实施例中,虚拟化软件114包括配置成向VM 120提供某些系统服务的管理程序。硬件子系统可以包括但不限于:包括一个或更多个处理单元(例如,CPU)和系统存储器(在本文中称为“主机物理存储器”,其在图2中为202)的计算资源、大容量存储、网络接口、输入/输出接口、显示控制器和电源管理功能。
如图所示,虚拟化软件114包括虚拟机监视器(VMM)149,其在虚拟化软件114的特权环境中操作,并为其各自的VM提供诸如仿真物理设备(例如,虚拟CPU和虚拟系统存储器)之类的虚拟系统支持。在替代实施例中,可以存在用于多个VM的一个VMM,或者可以存在多个VMM,每个VM一个VMM。在本文描述的实施例中,当GI驱动程序139被加载到相应的VM中时,将通知VMM 149。当接收到通知时,VMM 149执行签名验证以验证GI驱动程序139(特别是当被加载到存储器中时GI驱动程序139的数据和代码)的真实性。下面结合图3描述被实行的签名验证的细节。所述签名验证的目的是为了确保GI驱动程序139的可执行代码和数据与其被创建时相同,并且它们没有被恶意程序以任何方式修改。
虚拟化软件114还包括在虚拟化软件114的特权环境中操作的多路转接器159。多路转接器159与至少一个GI驱动程序139和至少一个服务设备170交换数据消息。在一个实施例中,多路转接器159通过称为VMCI(虚拟机通信接口,其实现为与插座应用接口共享存储器通信机制)125的通信接口与GI驱动程序139进行通信。当多路转接器159接收到数据消息时,相关联的目的地地址被匹配到转发表中的条目,以确定数据消息的目的地GI驱动程序139或服务设备170。应当认识到,在替代实施例中可以使用其他类型的通信接口。
每个服务设备170包括软件服务应用174和访问库172。给定的服务设备170可以作为在虚拟化软件114的控制下的应用执行,并且可以作为具有配置成执行服务应用174的客户机OS的虚拟机来实现。在一些实施例中,实现安全服务的服务应用174可以作为在虚拟化软件114的控制下的应用来执行,并且在被称为“安全虚拟机”的单个虚拟机中实现。访问库172配置成经由多路转接器159与至少一个GI驱动程序139进行通信。在一个实施例中,访问库172例如通过TCP/IP将到多路转接器159的不同的插座连接打开,以与每个不同的GI驱动程序139进行通信。在替代实施例中,可以实现不同的消息传递技术。例如,可以实现共享存储器消息传递系统用于瘦代理器139和访问库172之间的通信。在某些实施例中,服务设备170M配置成在经由数据网络耦合到主机服务器系统100的远程主机服务器系统上执行。在这样的实施例中,服务设备170M建立如TCP/IP连接的数据连接至主机服务器系统100内的一个或更多个VM 120,并且与其他服务设备170基本相同地操作。类似地,在主机服务器系统100内执行的服务设备170l可以连接到在远程主机服务器系统内操作的VM并向其提供服务。
访问库172向服务应用174呈现应用编程接口(API)(未示出)。所述API包括用于与至少一个GI驱动程序139通信的服务调用。可能报告的事件包括文件系统事件、进程事件、存储器事件、注册表事件和用户事件。示例性文件系统事件包括打开文件、关闭文件、写入文件以及修改文件。示例性的进程安排事件包括映射文件用于执行、启动进程和停止进程。某些类型的事件(如注册表事件)可能依赖于客户机操作系统132的特定版本。所述API可以指定某些事件不被报告。例如,服务应用174可以请求不报告任何事件,或仅报告特定事件。
以这种方式,访问库172和GI驱动程序139协同工作以向服务应用174提供对相关客户机OS 132的系统资源的访问。在一些实施例中,GI驱动程序139和服务应用174共享用于加密/解密在GI驱动程序139和服务应用174之间通过多路转接器159和访问库172传送的数据包的安全密钥。在这样的实施例中,通信的安全性受到安全密钥的机密性的限制。因此,安全密钥存储在客户机物理存储器的安全保护域区域中,其是被映射以由诸如GI驱动程序139的安全代码访问的客户机物理存储器的区域。GI驱动程序139检索所述安全密钥以加密要发送到多路转接器159的数据,并解密从多路转接器159接收的数据。
用于描述图1中的虚拟化组件的各种术语、层和分类可以在不脱离其功能或本发明的精神或范围的情况下被不同地引用。可以使用的虚拟化软件114的一个示例是包括作为VMware的产品的组件的管理程序,所述产品可从加利福尼亚州帕罗奥多(PaloAlto)的VMware公司商购。
图2是在实施例中采用的隔离安全保护域与根保护域的存储器映射的示意图。在图2中,显示了多个存储器映射,但它们可以分为两种类型。第一种类型,标记为gV→gP的映射,是从客户机虚拟存储器空间到客户机物理存储器空间的映射。所述gV→gP映射由客户机OS 132管理,并在客户机页表(gPT)中被编码。如在物理计算机系统中,所述客户机页表由所述实施例中的每个进程提供。第二种类型,标记为gP→hP的映射,是从所述客户机物理存储器空间到主机物理存储器空间的映射。所述gP→hP映射由虚拟化软件114,特别是VMM149管理,并且被编码在嵌套页表(NPT)(也被称为“扩展页表”)中。通常,对每个VM提供一组嵌套页表。然而,在实施例中,提供两组。它们在本文中被称为安全嵌套页表(NPT)221和根嵌套页表(NPT)222。安全NPT 221将客户机物理存储器地址映射到主机物理存储器202的安全保护域区域230。根NPT 222将客户机物理存储器地址映射到主机物理存储器202的根保护域区域240。主机物理存储器202中的另一区域250被保留以供虚拟化软件114使用以使得虚拟化软件114能够实行诸如存储器映射功能的系统功能。安全NPT 221和根NPT 222存储在该区域250中。主机物理存储器202的剩余区域可以是空闲的或用于映射在主机100中运行的其他VM或进程所需的主机物理存储器。应当认识到,描述安全保护域区域230、根保护域区域240和系统区域250的框仅用于说明的目的,同时它们可以具有任何大小,并且不需要在主机物理存储器空间中是连续的。
在实施例中,GI驱动程序139的可执行代码和数据被存储在安全保护域区域230中,并且在图2中被标识且在下文中分别被标识为GI代码231和GI数据232。存储在安全保护域区域230中的其他项目包括:GI驱动程序(gPT 233)的客户机页表,在将GI代码231加载到存储器中时执行的初始化代码234,当进入或退出安全保护域时调用的蹦床(trampoline)代码235,辅助函数代码236,假设辅助函数可访问客户机页表,则其在在安全保护域中执行期间被调用以从根保护域区域240检索数据而不退出安全保护域,以及用于在通过VMCI125通信期间对数据进行加密/解密的安全密钥237。
图2所示的概念图示出了简化的实施例,其中用于VM 120的一个虚拟CPU正在安全保护域或根保护域中执行。然而,在所述实施例中,多个虚拟CPU支持VM 120的执行,并且当一个或更多个其他虚拟CPU正在根保护域中执行时,一个或更多个虚拟CPU可能在安全保护域中执行。
图3描述了根据实施例的、当安全客户机代码和数据加载到存储器中时用于初始化安全保护域的方法步骤的流程图。这些步骤在VMM 149通过超级调用被通知GI驱动程序139已被加载到VM 120的客户机物理存储器中时由VMM 149执行。所述超级调用包括识别GI驱动程序139的可执行代码和数据区域的客户机虚拟地址的参数。在步骤310中,在接收到该通知时,VMM 149将存储GI驱动程序139的代码和数据的存储器位置的页表条目标记为只读,从而使得在其他虚拟CPU上运行的其他客户机线程不能修改GI驱动程序139的可执行代码和数据区域的存储器状态。然后,在步骤312中,VMM 149通过多路转接器159向服务设备170发出请求,以通过将GI驱动程序139的可执行代码和数据区域与已知有效签名进行比较来验证GI驱动程序139的可执行代码和数据区域。任何技术上可行的方法都可以用于验证,只要所述验证在客户机外部进行协调(orchestrate),因为流氓代理可能会尝试在客户机中禁用任何此类验证。在一个实施例中,使用GI驱动程序139的创建者的公开密钥对GI驱动程序139的可执行代码和数据区域的散列有效版本进行解密,并与GI驱动程序139的可执行代码和数据区域的存储器内图像进行比较。如果在步骤314中的验证不成功,则VMM 149在步骤316中返回错误,并且初始化过程终止,而GI驱动程序139未被成功加载。
另一方面,如果在步骤314中的验证成功,则在步骤318中,从提供客户机物理存储器到主机物理存储器的完整映射的原始NPT创建安全NPT 221和根NPT 222。特别地,对应于GI驱动程序139的可执行代码和数据区域的客户机物理存储器地址的映射被移动到安全的NPT 221中,同时其他映射被移动到根NPT 222中。此外,在步骤320中,安全客户机页表由原始客户机页表创建,并被存储于安全保护域区域230中。特别地,原始客户机页表条目被移动到图2中示出为gPT 233的安全客户机页表,所述原始客户机页表条目指向由安全NPT221映射到安全保护域区域230的客户机物理存储器页面。应当认识到,创建安全客户机页表并将它们存储在安全保护域区域230中可防止流氓代理改变客户机虚拟存储器地址指向客户机物理存储器地址的映射,所述客户机物理存储器地址被映射到安全NPT 221中。
可选地,在步骤322中,初始化代码可以被移动到安全保护域区域230中。这允许在步骤324后客户机执行保留在安全保护域中,其中VMM 149将存储GI驱动程序139的代码的存储器位置的页表条目标记为可执行,同时将存储GI驱动程序139的数据的存储器位置的页表条目标记为可读/写。在初始化期间进行的任何客户机OS API调用以与下面结合图5A所述的处理中断相同的方式进行处理。另外,来自客户机OS API调用的返回以与如下面结合图5B所述的处理中断返回相同的方式被处理。此外,在步骤310和324中,代替改变存储GI驱动程序139的代码和数据的存储器位置的访问限制,VMM 149可以在步骤310中暂停所管理的所有虚拟CPU,并在步骤324中释放它们。
应当认识到,存储在安全保护域区域230中的所有数据都不被映射到根保护域中,并且只对在诸如GI驱动程序139的安全保护域中执行的代码可访问。因此,机密信息可以存储在安全保护域区域230中,即使客户机OS 132被破坏,也不会有暴露的风险。这种机密信息的一个示例是用于加密和解密通过VMCI 125传送的数据的安全密钥。
图4A和4B描述了根据实施例的、用于进入和退出安全保护域的方法步骤的流程图。当客户机OS 132调用存储在安全保护域区域230中但被映射从根保护域可执行(但不可写入)的蹦床代码235、并且使蹦床代码235采用作为参数传递的条目号码执行超级跳跃(hyperjump)跳入到安全保护域(即,进入安全保护域)时,由VMM 149执行图4A的步骤。当GI驱动程序139调用蹦床代码235并使蹦床代码235执行超级跳跃跳出安全保护域(即,退出安全保护域)时,由VMM 149执行图4B的步骤。
图4A的方法在步骤410开始,其中VMM 149确定是否存在来自安全线程堆栈池的可用安全线程堆栈。如果不存在,则VMM 149返回忙碌状态至蹦床代码235,并且周期性地重复步骤410,直到安全线程堆栈变得可用。如果存在可用的安全线程堆栈或当安全线程堆栈变得可用时,VMM 149在步骤414中选择安全线程堆栈。然后,在步骤416中,VMM 149从根保护域中的指令指针获得返回地址,并将返回地址保存在临时寄存器中。在步骤418中,VMM 149改变指向客户机页表(当前指向存储在根保护域区域240中的gPT 241)的指针(GPT)以及NPT指针,其为指向嵌套页表(当前指向根NPT 222)的指针,使得客户机页表指针GPT指向存储在安全保护域区域230中的gPT 233,并且NPT指针指向安全NPT 221。在页表指针被更改之后,在步骤419中,VMM 149将所述堆栈切换到所选择的安全线程堆栈,并将临时寄存器中的返回地址推送(push)到所选择的堆栈上。然后,在步骤420中,VMM 149将指令指针设置到安全保护域的入口点,并且在步骤422中恢复(resume)客户机执行,从而执行控制被传送到安全保护域调度器。所述安全保护域调度器执行条目号码的验证,并且如果条目号码通过验证,则允许在安全保护域中执行GI驱动程序139。条目号码的验证包括检查条目号码对应于定义的服务。在一个实施例中,定义的服务范围从0到n,并且所述验证包括检查在0和n之间的条目号码。可以通过跳转表、二进制决策树或将控制流程从调度例程传送到与指定服务相关联的代码的其他机制来完成调度。
当GI驱动程序139调用蹦床代码235并使蹦床代码235执行超级跳跃跳出安全保护域时,执行图4B的步骤。在步骤450中,VMM 149从堆栈中弹出(pop)返回地址并将所述返回地址保存在临时寄存器中。然后,在步骤452中,VMM 149改变客户机页表指针GPT和NPT指针,使得客户机页表指针指向gPT 241,NPT指针指向根NPT 222。在所述页表指针被改变之后,VMM 149在步骤454中将堆栈切换至根保护域中的线程堆栈,在步骤456中将当前安全线程堆栈返回到安全线程堆栈池。在步骤458中,VMM将指令指针设置到存储在临时寄存器中的返回地址,并在根保护域中恢复客户机执行。
图5A和5B描绘了根据实施例的、用于处理来自安全保护域内的中断并且在中断返回之后在安全保护域中恢复执行的方法步骤的流程图。如本文所使用的,“中断”包括异常、可屏蔽外部中断、不可屏蔽中断、指令断点、数据断点、单步骤以及中断正常执行流程的任何类似概念。当在GI驱动程序139的执行期间检测到中断时,由VMM 149执行图5A的步骤。当从中断处理中返回时,由VMM149执行图5B的步骤。
在步骤508中,VMM 149将当前指令指针推送到堆栈,使其可以在处理中断之后从该点恢复。在步骤510中,VMM 149将GI驱动程序139正在其中执行的虚拟CPU的寄存器的内容保存到主机物理存储器中,例如,系统区域250中。然后,在步骤512中,VMM149擦除包括堆栈指针在内的寄存器的内容,使得当在根保护域中处理中断时,如果客户机OS已经被盗用,寄存器可能包含的机密信息将不会被流氓代理可用于读取。在步骤516中,VMM 149改变客户机页表指针和NPT指针,使得客户机页表指针指向gPT 241,NPT指针指向根NPT 222。在步骤517中,VMM 149获得根保护域线程堆栈以用作当前堆栈。然后,VMM 149在步骤518中设置中断上下文帧(interrupt context frame),从而中断返回(IRET)引起蹦床代码235被调用和执行超级跳跃以恢复GI驱动程序139的执行,并且当在步骤520中恢复客户机执行时将中断递送给客户机中断处理程序。
在根保护域的客户机中处理中断之后,中断返回被处理。根据在步骤518中设置的中断上下文帧,中断返回使蹦床代码235被调用并且执行超级跳跃以恢复GI驱动程序139的执行。在步骤540中,VMM 149改变客户机页表指针和NPT指针,使得客户机页表指针指向gPT233并且NPT指针指向安全NPT 221。在步骤542中,VMM 149在安全域中获得指向先前选择的安全线程堆栈的堆栈指针,并切换到该堆栈以用作当前堆栈。VMM 149在步骤557中重建(restore)虚拟CPU的寄存器的内容。然后,在步骤560中,在虚拟CPU中从所述堆栈中弹出的指令指针恢复GI驱动程序139的执行。
图6描述了根据实施例的、用于从安全保护域访问根保护域中的数据的方法步骤的流程图。在该实施例中,为了许可在安全保护域中调用的辅助函数(即,当NPT指针指向安全NPT 221时),安全NPT 221被修改为包括到根保护域区域240的映射。然而,这些映射被映射为不可执行的,使得在安全保护域区域230中的代码和数据被映射并因此可见时,不执行非安全代码。此外,gPT 233被修改为包括到添加到安全NPT 221的条目的客户机虚拟到客户机物理的映射。
在步骤610中,辅助函数解析函数调用以获得要检索的数据的虚拟地址。然后,在步骤612和614中,寻访(walk)修改的gPT 233和修改的安全NPT 221以获得要检索的数据的主机物理存储器页面。如果这一主机物理存储器页面如从成功的页面寻访(步骤616)中确定的而存在,所述辅助函数从该主机物理存储器地址检索数据(步骤620)。如果页面寻访不成功,则返回错误;或如果可用,则执行纠正动作(步骤618)。
图7描述了根据实施例的、用于通过通信信道传输来自和去往安全保护域的数据的方法步骤的流程图。图7的方法步骤描绘了GI驱动程序139实行的在将数据通过VMCI 125提供给多路转接器159之前加密数据、以及在将从多路转接器159通过VMCI 125接收的数据提供给客户机OS 132之前解密数据的步骤。
在步骤710中,GI驱动程序139从任一客户机OS 132或通过VMCI 125从多路转接器159获取要处理的数据。然后,在步骤712中,GI驱动程序139从安全保护域区域230检索安全密钥237。利用安全密钥237,GI驱动程序139加密从客户机OS 132获得的数据,以通过VMCI125以加密形式将数据提供给多路转接器159,或者解密通过VMCI 125从多路转接器159接收到的数据,以将所述数据以未加密的形式发送到客户机OS 132。在步骤716中,GI驱动器通过VMCI 125将加密数据提供给多路转接器159或将解密的数据提供给客户机OS 132。
如上所述的某些实施例涉及在主计算机顶部上的硬件抽象层。所述硬件抽象层允许多个上下文或虚拟计算实例共享硬件资源。在一个实施例中,这些虚拟计算实例彼此隔离,每一实例至少具有在其中运行的用户应用。因此,所述硬件抽象层提供虚拟计算实例之间的资源隔离和分配的优点。在前述实施例中,虚拟机被用作虚拟计算实例的示例,管理程序作为硬件抽象层的示例。如上所述,每个虚拟机包括在其中运行至少一个应用的客户机操作系统。应当注意的是,这些实施例也可以应用于虚拟计算实例的其他示例,诸如不包括客户机操作系统的容器,在此称为“无OS容器”(参见,例如www.docker.com)。无OS容器实现操作系统级虚拟化,其中在主计算机上的操作系统的内核顶部提供抽象层。所述抽象层支持多个无OS容器,其中每个都包含应用及其依赖项。每个无OS容器作为主机操作系统上的用户空间中的隔离进程运行,并与其他容器共享内核。无OS容器依靠内核的功能来利用资源隔离(CPU、存储器、块I/O、网络等)和单独的命名空间,并完全隔离应用的操作环境视角。通过使用无OS容器,资源可以被隔离,服务受限,并且进程被预分配为具有私有视角的操作系统,其具有自身的进程ID空间、文件系统结构和网络接口。多个容器可以共享相同的内核,但是每个容器可以被限制为仅使用受限的资源量,例如CPU、存储器和I/O。
本文描述的各种实施例可以采用各种计算机实现的包含计算机系统中存储的数据的操作。例如,这些操作可能需要物理量的物理操纵—虽然不是必须的,这些量通常可以采取电或磁信号的形式,其中它们或它们的表示能够被存储、传送、组合、比较或其他操作。进一步,这些操作通常以诸如产生、识别、确定或比较的术语来表示。本文描述的形成本发明的一个或更多个实施例的一部分的任何操作可以是有用的机器操作。此外,本发明的一个或更多个实施例还涉及用于执行这些操作的装置或设备。所述装置可被特别构造以用于特定要求的目的,或者它可以是由存储在计算机中的计算机程序选择性地激活或配置的通用计算机。特别地,各种通用机器可以与根据本文的教导编写的计算机程序一起使用,或者可以更方便地构造更专用的装置来执行所需的操作。
本文描述的各种实施例可以用包括手持设备、微处理器系统、基于微处理器或可编程消费电子设备、小型计算机、大型计算机等的其他计算机系统配置来实践。
本发明的一个或更多个实施例可以被实现为一个或更多个计算机程序,或者具体化在一个或更多个计算机可读介质中的一个或更多个计算机程序模块。术语计算机可读介质是指可以存储其后可以输入到计算机系统的数据的任何数据存储设备—计算机可读介质可以基于任何现有或随后开发的用于以使能由计算机读取的方式具体化计算机程序的技术。计算机可读介质的示例包括硬盘驱动器、网络附接存储器(NAS)、只读存储器、随机存取存储器(例如闪速存储设备)、CD(压缩光盘)-CD-ROM、CD-R或CD-RW、DVD(数字通用盘)、磁带以及其他光学和非光学数据存储设备。计算机可读介质还可以分布在网络耦合的计算机系统上,使得计算机可读代码以分布式方式被存储和执行。
尽管为了清楚理解,已经对本发明的一个或更多个实施例进行了一些细节的描述,但是显而易见的是,在权利要求的范围内可以做出某些改变和修改。因此,所述实施例被认为是说明性的而不是限制性的,并且权利要求的范围不限于本文给出的细节,而是可以在权利要求的范围和等价物中进行修改。在权利要求中,除非在权利要求书中明确说明,否则元件和/或步骤不意味着任何特定的操作顺序。
根据各种实施例的虚拟化系统可以被实现为托管实施例、非托管实施例或者作为倾向于模糊两者之间的区别的实施例都是可预期的。此外,各种虚拟化操作可以全部或部分地在硬件中实施。例如,硬件实现方式可以采用查找表来修改存储访问请求以保护非磁盘数据。
无论虚拟化程度如何,都可以进行许多变化、修改、添加和改进。因此,所述虚拟化软件可以包括执行虚拟化功能的主机、控制台或客户机操作系统的组件。可以为本文所述的作为单个实例的组件、操作或结构提供多个实例。最后,各种组件、操作和数据存储之间的边界在一定程度上是任意的,并且在具体的说明性配置的环境中对特定的操作做出了说明。其他功能的配置被预期并且可落在本发明的范围内。通常,在示例性配置中作为单独组件呈现的结构和功能可以被实现为组合结构或组件。类似地,作为单个组件呈现的结构和功能可以被实现为单独的组件。这些和其他的变化、修改、添加和改进均落在所附权利要求的范围内。

Claims (20)

1.一种隔离要在客户机中执行的安全客户机代码的方法,所述客户机通过虚拟化软件配置在主机中,所述方法包括:
创建第一页表,所述第一页表用于客户机物理地址到主机物理地址的转换,所述第一页表提供到所述安全客户机代码已被加载至的主机物理存储器的第一保护区域的映射;
创建第二页表,所述第二页表用于客户机物理地址到主机物理地址的转换,所述第二页表提供到所述主机物理存储器的第二保护区域的映射;
将第三页表存储在所述第一保护区域中,所述第三页表用于客户机虚拟地址到客户机物理地址的转换;
将第四页表存储在所述第二保护区域中,所述第四页表用于客户机虚拟地址到客户机物理地址的转换;以及
当执行从加载在所述第二保护区域中的非安全客户机代码被切换至所述安全客户机代码时,将第一指针值从指向所述第四页表的一个改变为指向所述第三页表的一个,以使所述第三页表被访问以用于客户机虚拟地址到客户机物理地址的转换,以及将第二指针值从指向所述第二页表的一个改变为指向所述第一页表的一个,以使所述第一页表被访问以用于客户机物理地址到主机物理地址的转换。
2.如权利要求1所述的方法,其中所述第一页表包括到蹦床代码的映射,当在所述非安全客户机代码被执行的同时调用所述蹦床代码时,所述蹦床代码使得所述执行从所述非安全客户机代码切换到所述安全客户机代码,所述第二页表还包括到所述蹦床代码的映射。
3.如权利要求2所述的方法,其中到包括在所述第二页表中的所述蹦床代码的映射具有控制位,所述控制位禁止向所述蹦床代码已被加载至的所述主机物理存储器位置写入。
4.如权利要求2所述的方法,进一步包括:
在执行所述安全客户机代码的同时检测中断;
保存客户机寄存器的内容并且然后清除所述客户机寄存器的所述内容;
切换至用于客户机虚拟地址到客户机物理地址的转换的所述第四页表,以及切换至用于客户机物理地址到主机物理地址的转换的所述第二页表;
递送所述中断至所述客户机中的中断处理器;以及
在所述中断处理器完成执行后,调用所述蹦床代码以促使所述执行切换回所述安全客户机代码。
5.如权利要求1所述的方法,其中所述第一页表还包括到所述第二保护区域的不可执行的映射。
6.如权利要求5所述的方法,其中所述第一页表包括到辅助函数的映射,并且所述辅助函数在所述安全客户机代码的执行期间被调用以访问所述第二保护区域的所述主机物理存储器位置。
7.如权利要求1所述的方法,其中,所述第一页表进一步包括到机密数据的映射。
8.如权利要求7所述的方法,其中,所述机密数据用作密钥以用于对在所述安全客户机代码和所述虚拟化软件中的模块之间传输的数据进行加密和解密。
9.如权利要求1的方法,进一步包括:
一旦被通知所述安全客户机代码已被加载至所述主机物理存储器,则对所述安全客户机代码执行签名验证。
10.一种非暂时性计算机可读介质,包括要在包括一个或更多个处理器和主机物理存储器的主机中执行的指令,以实行隔离要在客户机中执行的安全客户机代码的方法,所述客户机通过虚拟化软件配置在所述主机中,所述方法包括:
创建第一页表,所述第一页表用于客户机物理地址到主机物理地址的转换,所述第一页表提供到所述安全客户机代码已被加载至的主机物理存储器的第一保护区域的映射;
创建第二页表,所述第二页表用于客户机物理地址到主机物理地址的转换,所述第二页表提供到所述主机物理存储器的第二保护区域的映射,所述第二保护区域与所述主机物理存储器的所述第一保护区域不同;
将第三页表存储在所述第一保护区域中,所述第三页表用于客户机虚拟地址到客户机物理地址的转换;
将第四页表存储在所述第二保护区域中,所述第四页表用于客户机虚拟地址到客户机物理地址的转换;以及
当执行从加载在所述第二保护区域中的非安全客户机代码被切换至所述安全客户机代码时,将第一指针值从指向所述第四页表的一个改变为指向所述第三页表的一个,以使所述第三页表被访问以用于客户机虚拟地址到客户机物理地址的转换,以及将第二指针值从指向所述第二页表的一个改变为指向所述第一页表的一个,以使所述第一页表被访问以用于客户机物理地址到主机物理地址的转换。
11.如权利要求10所述的非暂时性计算机可读介质,其中所述第一页表包括到蹦床代码的映射,当在执行所述非安全客户机代码的同时调用所述蹦床代码时,所述蹦床代码使得所述执行从所述非安全客户机代码切换到所述安全客户机代码,所述第二页表还包括到所述蹦床代码的映射。
12.如权利要求11所述的非暂时性计算机可读介质,其中到包括在所述第二页表中的所述蹦床代码的映射具有控制位,所述控制位禁止向所述蹦床代码已被加载至的所述主机物理存储器位置写入。
13.如权利要求11所述的非暂时性计算机可读介质,其中,所述方法进一步包括:
在执行所述安全客户机代码的同时检测中断;
保存客户机寄存器的内容以及然后清除所述客户机寄存器的所述内容;
切换至用于客户机虚拟地址到客户机物理地址的转换的所述第四页表,以及切换至用于客户机物理地址到主机物理地址的转换的所述第二页表;
递送所述中断至所述客户机中的中断处理器;以及
在所述中断处理器完成执行后,调用所述蹦床代码以促使所述执行切换回所述安全客户机代码。
14.如权利要求10所述的非暂时性计算机可读介质,其中,所述第一页表还包括到所述第二保护区域的不可执行的映射。
15.如权利要求14所述的非暂时性计算机可读介质,其中,所述第一页表包括到辅助函数的映射,以及所述辅助函数在所述安全客户机代码的执行期间被调用以访问所述第二保护区域的所述主机物理存储器位置。
16.如权利要求10所述的非暂时性计算机可读介质,其中,所述第一页表进一步包括到机密数据的映射。
17.如权利要求16所述的非暂时性计算机可读介质,其中,所述机密数据用作密钥以用于对在所述安全客户机代码和所述虚拟化软件中的模块之间传输的数据进行加密和解密。
18.如权利要求10所述的非暂时性计算机可读介质,其中,所述方法进一步包括:一旦被通知所述安全客户机代码已被加载至所述主机物理存储器,则对所述安全客户机代码执行签名验证。
19.一种主机,包括一个或更多个处理器和主机物理存储器,并具有安装在其中的虚拟化软件,以实行隔离要在客户机中执行的安全客户机代码的方法,所客户机通过所述虚拟化软件配置,所述方法包括:
创建第一页表,所述第一页表用于客户机物理地址到主机物理地址的转换,所述第一页表提供到所述安全客户机代码已被加载至的主机物理存储器的第一保护区域的映射;
创建第二页表,所述第二页表用于客户机物理地址到主机物理地址的转换,所述第二页表提供到所述主机物理存储器的第二保护区域的映射,所述第二保护区域与所述主机物理存储器的所述第一保护区域不同;
将第三页表存储在所述第一保护区域中,所述第三页表用于客户机虚拟地址到客户机物理地址的转换;
将第四页表存储在所述第二保护区域中,所述第四页表用于客户机虚拟地址到客户机物理地址的转换;以及
当执行从加载在所述第二保护区域中的非安全客户机代码被切换至所述安全客户机代码时,将第一指针值从指向所述第四页表的一个改变为指向所述第三页表的一个,以使所述第三页表被访问以用于客户机虚拟地址到客户机物理地址的转换,以及将第二指针值从指向所述第二页表的一个改变为指向所述第一页表的一个,以使所述第一页表被访问以用于客户机物理地址到主机物理地址的转换。
20.如权利要求19所述的主机,其中所述方法进一步包括:
一旦被通知所述安全客户机代码已被加载至所述主机物理存储器,则对所述安全客户机代码执行签名验证。
CN201680020184.5A 2015-04-09 2016-04-06 使用多个嵌套页表隔离客户机代码和数据 Active CN107454958B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
IN1861CH2015 2015-04-09
IN1861/CHE/2015 2015-04-09
US14/798,483 2015-07-14
US14/798,483 US9870324B2 (en) 2015-04-09 2015-07-14 Isolating guest code and data using multiple nested page tables
PCT/US2016/026164 WO2016164424A1 (en) 2015-04-09 2016-04-06 Isolating guest code and data using multiple nested page tables

Publications (2)

Publication Number Publication Date
CN107454958A CN107454958A (zh) 2017-12-08
CN107454958B true CN107454958B (zh) 2019-08-23

Family

ID=57111091

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680020184.5A Active CN107454958B (zh) 2015-04-09 2016-04-06 使用多个嵌套页表隔离客户机代码和数据

Country Status (3)

Country Link
US (1) US9870324B2 (zh)
EP (1) EP3281146B1 (zh)
CN (1) CN107454958B (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10447728B1 (en) * 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US10057069B2 (en) * 2016-02-29 2018-08-21 Red Hat Israel, Ltd. Securing code loading by a guest in a virtual environment
US10176007B2 (en) * 2016-08-30 2019-01-08 Red Hat Israel, Ltd. Guest code emulation by virtual machine function
US10025691B1 (en) * 2016-09-09 2018-07-17 Fireeye, Inc. Verification of complex software code using a modularized architecture
US10666443B2 (en) * 2016-10-18 2020-05-26 Red Hat, Inc. Continued verification and monitoring of application code in containerized execution environment
CN107526974B (zh) * 2017-08-03 2020-08-11 海光信息技术有限公司 一种信息密码保护装置和方法
CN107563226B (zh) * 2017-08-04 2020-05-12 海光信息技术有限公司 一种存储器控制器、处理器模块及密钥更新方法
KR102411920B1 (ko) 2017-11-08 2022-06-22 삼성전자주식회사 전자 장치 및 그 제어 방법
US10719352B2 (en) 2018-01-22 2020-07-21 International Business Machines Corporation System and method for in-process namespace switching
EP3764239B1 (en) 2018-07-11 2024-09-11 Huawei Technologies Co., Ltd. Method and device for enhancing isolation between user space and kernel space
US11496436B2 (en) 2018-07-24 2022-11-08 Vmware, Inc. Migration of virtual machine located on its own network
US10853126B2 (en) * 2018-07-26 2020-12-01 Vmware, Inc. Reprogramming network infrastructure in response to VM mobility
US10983926B2 (en) * 2018-08-29 2021-04-20 Red Hat, Inc. Efficient userspace driver isolation for virtual machines
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11182507B2 (en) * 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
CN109359487B (zh) * 2018-10-09 2022-02-18 湖北文理学院 一种基于硬件隔离的可扩展安全影子存储及标签管理方法
US10929169B2 (en) 2019-01-24 2021-02-23 Vmware, Inc. Reprogramming network infrastructure in response to VM mobility
US11487906B2 (en) 2019-03-08 2022-11-01 International Business Machines Corporation Storage sharing between a secure domain and a non-secure entity
US11455398B2 (en) * 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11531627B2 (en) 2019-03-08 2022-12-20 International Business Machines Corporation Secure storage isolation
US11640361B2 (en) 2019-03-08 2023-05-02 International Business Machines Corporation Sharing secure memory across multiple security domains
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
CN110348204B (zh) * 2019-06-17 2023-05-16 海光信息技术股份有限公司 一种代码保护系统、认证方法、装置、芯片及电子设备
US11099878B2 (en) 2019-06-28 2021-08-24 Intel Corporation Scalable virtual machine operation inside trust domains within the trust domain architecture
US20220318040A1 (en) * 2021-03-31 2022-10-06 Ati Technologies Ulc System and method for providing page migration
US20230025126A1 (en) * 2021-07-23 2023-01-26 Vmware, Inc. Virtualization layer assisted upgrading of in-guest agents
CN114201269B (zh) * 2022-02-18 2022-08-26 阿里云计算有限公司 内存换页方法、系统及存储介质
CN116737322B (zh) * 2023-08-10 2023-10-31 麒麟软件有限公司 虚拟机同时支持PCIe虚拟设备和物理设备的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103620614A (zh) * 2011-07-01 2014-03-05 英特尔公司 已中断事件的安全处置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8555081B2 (en) * 2007-10-30 2013-10-08 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US8006043B2 (en) 2008-10-06 2011-08-23 Vmware, Inc. System and method for maintaining memory page sharing in a virtual environment
US9087200B2 (en) 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
US20120110348A1 (en) * 2010-11-01 2012-05-03 International Business Machines Corporation Secure Page Tables in Multiprocessor Environments
US9152570B2 (en) * 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
US9189214B2 (en) * 2013-10-30 2015-11-17 International Business Machines Corporation Code stack management
US9454497B2 (en) * 2014-08-15 2016-09-27 Intel Corporation Technologies for secure inter-virtual-machine shared memory communication
GB2532415A (en) * 2014-11-11 2016-05-25 Ibm Processing a guest event in a hypervisor-controlled system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103620614A (zh) * 2011-07-01 2014-03-05 英特尔公司 已中断事件的安全处置

Also Published As

Publication number Publication date
CN107454958A (zh) 2017-12-08
EP3281146A1 (en) 2018-02-14
EP3281146B1 (en) 2020-01-15
US9870324B2 (en) 2018-01-16
US20160299851A1 (en) 2016-10-13

Similar Documents

Publication Publication Date Title
CN107454958B (zh) 使用多个嵌套页表隔离客户机代码和数据
CN107077428B (zh) 保护应用秘密的方法、电子系统和计算机存储介质
US9690947B2 (en) Processing a guest event in a hypervisor-controlled system
US9934407B2 (en) Apparatus for and method of preventing unsecured data access
US8694781B1 (en) Techniques for providing hardware security module operability
US20160132349A1 (en) Processing a guest event in a hypervisor-controlled system
US20020194389A1 (en) Secure machine platform that interfaces to operating systems and customized control programs
US11204881B2 (en) Computer system software/firmware and a processor unit with a security module
US9779032B2 (en) Protecting storage from unauthorized access
US11755753B2 (en) Mechanism to enable secure memory sharing between enclaves and I/O adapters
CN102163266A (zh) 在主机服务器之间安全地移动虚拟机
WO2016164424A1 (en) Isolating guest code and data using multiple nested page tables
CN110874468A (zh) 应用程序安全保护方法以及相关设备
CN109325322B (zh) 用于嵌入式平台的软件知识产权保护系统和方法
US9772954B2 (en) Protecting contents of storage
WO2019133298A1 (en) Managed securitized containers and container communications
EP3732820A1 (en) Managed securitized containers and container communications
Weiß System Architectures to Improve Trust, Integrity and Resilience of Embedded Systems

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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: California, USA

Patentee after: Weirui LLC

Country or region after: U.S.A.

Address before: California, USA

Patentee before: VMWARE, Inc.

Country or region before: U.S.A.