CN109783188A - 用于安全公共云的密码存储器所有权表 - Google Patents

用于安全公共云的密码存储器所有权表 Download PDF

Info

Publication number
CN109783188A
CN109783188A CN201811176656.3A CN201811176656A CN109783188A CN 109783188 A CN109783188 A CN 109783188A CN 201811176656 A CN201811176656 A CN 201811176656A CN 109783188 A CN109783188 A CN 109783188A
Authority
CN
China
Prior art keywords
workload
visitor
physical address
address
storage
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
CN201811176656.3A
Other languages
English (en)
Other versions
CN109783188B (zh
Inventor
D·M·德拉姆
S·查伯拉
R·L·萨希塔
B·E·亨特利
G·奈格
G·盖尔宗
B·V·帕特尔
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN109783188A publication Critical patent/CN109783188A/zh
Application granted granted Critical
Publication of CN109783188B publication Critical patent/CN109783188B/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/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/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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

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)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

在公共云环境中,使用云服务提供商(CSP)的工作负载管理软件未知的消费者提供的密钥,在CSP的服务器存储器中加密每个消费者/客户的工作负载。加密的消费者/访客工作负载映像在由CSP的工作负载管理软件指定的存储器位置处加载到CSP的服务器存储器中。基于CSP指定的存储器位置,访客工作负载确定应加载存储器映射结构和其他类型的消费者数据的预期硬件物理地址。这些预期的硬件物理地址由存储器所有权表(MOT)中的访客工作负载指定,预期的硬件物理地址用于检查随后的CSP指定的存储器映射是否符合预期。存储器所有权表条目也可以由CSP未知的消费者提供的密钥进行加密。

Description

用于安全公共云的密码存储器所有权表
技术领域
本申请要求于2017年2月28日提交的名称为“Secure Public Cloud withProtected Guest-Verified Host Control”的美国专利申请序列号15/444,771的优先权,该美国申请要求于2016年10月14日提交的题为“Secure Public Cloud”的美国专利申请序列号15/293,967的优先权,该后述美国申请要求于2016年8月11日提交的题为“SecurePublic Cloud”的美国临时专利申请第62/373,627号的优先权,其中每个申请的公开内容均在此通过引入方式并入。
背景技术
在当今的云服务环境中,云服务提供商的主机工作负载管理软件(诸如虚拟化环境中的虚拟机监视器(VMM))具有对访客工作负载(例如访客虚拟机)的完全控制,主机工作负载管理软件代表云服务的消费者进行管理。主机工作负载管理软件可以读取或写入访客存储器,修改执行访客工作负载的软件的控制流程,读取或修改访客寄存器状态,读取或修改访客控制结构,例如寄存器值等。对访客工作负载的执行的这种完全控制提出了以下安全风险:主机工作负载管理软件受损,并且可能修改访客工作负载,使得驻留在访客工作负载内的消费者的秘密和数据被暴露。
附图说明
图1是示出了典型虚拟机环境的框图。
图2是可用于实现实施例的云服务环境的框图。
图3是示出了可用于实现实施例的服务器环境的图。
图4是示出了根据实施例的消费者代理与服务器环境的组件之间的数据流的图。
图5是示出了根据实施例的消费者代理与服务器环境的组件之间的数据流的图。
图6A和图6B是示出了根据实施例的服务器环境的组件之间的数据流的图。
图7是示出了根据实施例的服务器环境的组件之间的数据流的图。
图8是根据实施例执行的方法的流程图。
图9是根据实施例执行的方法的流程图。
图10是示出了根据实施例的存储器所有权表的图。
具体实施方式
在虚拟化云环境中,虚拟机监视器(VMM)用作主机工作负载管理软件,并且访客工作负载被称为“虚拟机”。这里提供的技术是根据VMM和访客VM描述的,尽管这些技术通常适用于其他类型的主机工作负载管理软件,例如操作系统,以及其他类型的访客工作负载,例如应用。
为了充分利用资源,在云中运行的主机工作负载管理软件可以从一个消费者(有时称为访客工作负载的所有者或云服务提供商的服务器环境的租户)拥有的访客工作负载切换执行到另一个消费者拥有的另一个访客工作负载。通过从一个访客工作负载切换到另一个访客工作负载,可以通过主机工作负载管理软件修改与访客工作负载的执行状态有关的数据结构。这些数据结构可以包括用于控制访客工作负载的执行的存储器映射(例如,页表和扩展页表(EPT))和控制结构(例如虚拟机控制结构)。
页表是计算机操作系统中的存储器系统用于存储虚拟/线性地址与物理地址之间的映射的数据结构。访问过程使用虚拟/线性地址,而硬件使用物理地址。每个进程都给人一种印象:使用大量连续的存储器部分来执行进程的工作负载;然而,在物理上,每个进程的存储器可以分散在物理存储器的不同区域上,或者可以已经被移动(分页)到另一个存储设备,通常是到硬盘驱动器。当进程请求访问存储器中的数据时,操作系统将进程提供的虚拟/线性地址映射到存储该数据的实际存储器位置的物理地址。
然而,在虚拟化环境中,访客VM的操作系统不能访问物理硬件地址。因此,访客VM使用访客操作系统自己的页表在访客虚拟/线性地址(VA)和访客物理存储器地址(GPA)之间形成自己的存储器映射。这些存储器映射还可以使用的扩展页表(EPT)技术,其中转换后备缓冲区(TLB)高速缓存可跟踪如访客操作系统所看到的虚拟存储器和物理存储器。EPT的目的是使每个访客虚拟机在访问访客物理地址时认为访客VM本身正在管理存储器硬件。但是,访客物理地址实际上由VMM管理和转换为实际的硬件物理地址。通过这种方式,VMM给VM软件一种错觉,即VM软件正在管理物理系统,而实际上物理系统由另一层软件VMM管理。
TLB通过向每个VM指派地址空间标识符(ASID)来跟踪各个VM。使用地址空间标识符,TLB可以针对每个虚拟机跟踪到物理硬件地址的虚拟机地址空间映射。ASID用于标记TLB,以便在切换到另一个VM时不需要从先前VM的TLB刷新访客VM状态。相反,TLB使用该标记来将不同的VM条目分开,仅使用当前运行的VM的标签,同时仍对非活动VM的状态进行高速缓存。
在虚拟化环境中,虚拟机控制结构(VMCS)是存储器中的数据结构,其迄今已由主机VMM管理。VMCS保持访客VM和主机VMM两者的处理器寄存器状态。VMCS对于每个访客VM的每个逻辑处理器存在一次,而访客VM由主机VMM管理。在多处理器系统中,同时执行访客VM的每个处理器可以具有唯一的VMCS。随着不同VM之间的执行上下文的每次改变,针对当前正在执行的VM恢复相对应的VMCS,定义VM的虚拟处理器的状态。当执行上下文从访客VM切换(VMExits)回到主机VMM时,使用相同的VMCS结构从VMCS的主机状态区域恢复主机保存的处理器状态。
这里给出的公开内容允许主机VMM保留对存储器映射/页表的控制,使得供应主机VMM的云服务提供商控制云服务提供商的资源的使用。相反,虚拟机控制结构(VMCS)的管理被移动到访客VM。虽然主机VMM仍然可以测量和验证访客生成的或访客修改的VMCS,但是主机VMM可以请求访客VM在使用VMCS之前修改如主机可能要求的VMCS。
在本公开中,进一步开发了保护消费者的工作负载和秘密免受受损的云服务提供商的硬件或软件破坏以及保护云服务提供商的硬件和软件免受受损的消费者工作负载破坏的概念。这些概念在上述共同未决的专利申请中引入,包括于2017年2月28日提交的题为“Secure Public Cloud with Protected Guest-Verified Host Control”的美国专利申请序列号15/444,771,其要求于2016年10月14日提交的题为“Secure Public Cloud”的美国专利申请序列号15/293,967的优先权,该申请又要求于2016年8月11日提交的题为“Secure Public Cloud”的美国临时专利申请第62/373,627号的优先权。
在上面引用的专利申请中,保护消费者的工作负载和秘密免受受损的云服务提供商的硬件或软件破坏以及保护云服务提供商的硬件和软件免受受损的消费者工作负载破坏是基于密钥域的概念。密钥域是存储器的密码分离部分,其中对存储在属于密钥域的存储器位置中的数据的访问需要使用相关联的密钥域密钥来解密数据。当硬件将数据写入属于密钥域的存储器位置时,使用密钥域密钥加密数据;当硬件从属于密钥域的存储器位置读取数据时,使用密钥域密钥对数据进行解密。如果使用错误的密钥域密钥对属于密钥域的物理存储器位置的内容解密,则可能破坏所得到的明文和/或可能报告完整性违规。响应完整性违规,错误使用的密钥域密钥可能无效。
使用密钥域,访客VM在即使主机VMM也无法访问的存储器的受保护区域内执行,因为密钥域是用主机VMM未知的消费者提供的(租户提供的)密钥域密钥加密的。在另一实施例中,使用范围寄存器来实现存储器的受保护区域,其中指定的寄存器阻止主机VMM(和其他软件)访问访客VM的存储器的受保护区域。出于本公开的目的,将关于密钥域描述访客VM的存储器的受保护区域,尽管本文描述的技术适用于使用其他技术实现的存储器的受保护区域,以使得主访客VMM不能访问消费者的访客VM。访客VM还可以确保VMM控制的存储器映射不会危及访客VM。
根据本公开,与访客VM的执行状态有关的虚拟化数据结构(例如,VMCS)也位于存储器的受保护区域(密钥域)中。这些虚拟化数据结构使用密钥域密钥加密。主机VMM和不具有其他密钥域的密钥域密钥的其他访客VM无法修改这些控制结构,也无法访问存储器的受保护区域。然而,提供了一些方法,其中硬件使主机VMM能够验证这些控制结构的内容,以确保主机的安全性不会被访客破坏。
云服务提供商的存储器管理器(例如VMM或OS内核)可以使用不同的密钥域来密码地分离属于不同所有者/消费者/租户的数据。例如,在云服务环境中,可以使用不同的密钥域来密码地分离属于云服务(例如银行服务)的不同消费者的数据。在虚拟化环境中,可以使用不同的密钥域来分离属于不同虚拟机的数据。属于每个虚拟机的数据可以包括例如属于每个虚拟机的消费者秘密(例如银行账号、社会保险号等)。属于每个虚拟机的数据还可以包括计算机代码(也称为代码映像或简称映像),其将被执行以保护云服务提供商的环境内的每个相应虚拟机的秘密。
消费者拥有消费者工作负载正在其中执行的密钥域。密钥域密钥由拥有密钥域的消费者创建,并直接安全地提供给云服务提供商的服务器硬件,而无需通过云服务提供商的存储器管理器/VMM/OS内核进行通信。在其他实施例中,消费者可以将由另一个实体(例如云服务提供商的服务器)提供的密钥转换成另一个密钥,该密钥用于加密属于密钥域的存储器位置。在其他实施例中,可以使用不同的密钥来加密属于密钥域的不同IP块(存储器位置集);例如,可以使用不同的密钥来加密包含来自用于加密其他消费者秘密的密钥的消费者VM映像的代码的IP块。为了简化这里的实施例的描述,本申请将属于密钥域的每个物理存储器位置的内容描述为由拥有密钥域的消费者创建的密钥域密钥加密,尽管其他实施例在本发明的范围内。
在一个实施例中,使用未使用的物理地址位来识别密钥域,并且硬件将所识别的密钥域的标识符(这里也称为选择符)附加到未使用的地址位(或通过高速缓存传递的其他元数据)中。例如,因为在可以使用64位物理存储器地址寻址的系统中安装更少的物理存储器位置,所以未使用的最高有效地址位可用于在不同的密钥域之间进行选择。两个不同的密钥域地址可以别名到同一物理存储器位置。然而,当来自该物理存储器位置的数据被读入高速缓存时,高速缓存在完全地址分辨率(例如,包括完整的64位物理存储器地址)下独立地保持密钥域地址。在考虑完整64位物理存储器地址的未使用物理地址位时唯一标识的密钥域地址确定物理存储器位置所属的密钥域。通过识别物理存储器位置所属的密钥域,还识别可用于解密该物理存储器位置的内容的密钥域密钥。其他实施例可以使用基于存储器地址查找的密钥表或密钥标识符。其他实施例可以在高速缓存之前加密处理器处的存储器。存储器加密逻辑可以位于存储器层次结构的任何级别。
在一个实施例中,虚拟机监视器包括具有用于创建、退出和恢复VM执行的能力的特权代码。这些特权可能包括退出或恢复虚拟机执行的能力(VMexit/VMresume和VMLaunch)。
消费者的VM映像作为访客VM运行,访客VM只能访问由VMM映射并授予其许可的存储器。VM使用页表来存储虚拟/线性地址与访客物理地址之间的映射。执行二级地址转换(也称为嵌套分页)以将访客物理地址(GPA)转换为主机物理地址(HPA)。在地址转换的上下文中,访客虚拟/线性地址可以简称为“虚拟地址”,访客物理地址可以简称为“访客地址”,并且主机物理地址可以称为“硬件物理地址”。在一个实施例中,在扩展页表(EPT)中跟踪第二级地址转换。
根据本公开,当VMM保持对EPT的控制时,加密的消费者域映像可以包括特定于消费者的虚拟机的加密的消费者域控制结构。通常由主机VMM提供的虚拟机控制结构(VMCS)现在也包括在由消费者或消费者信任的中介提供给云服务提供商的加密的消费者域映像中。
通过提供设置消费者的VM处理器状态的控制结构,消费者保留对消费者工作负载的控制,而不依赖于主机虚拟机监视器来保护消费者的工作负载和数据。此外,在主机VMM不能访问并且主机VMM不拥有的加密密钥的加密存储器内提供控制结构进一步保护消费者的工作负载和数据免受受损主机VMM的影响。同时,主机VMM仍然可以使用硬件机制(例如,在先前引用的专利申请中描述的哈希密钥域(HashKD)指令)来在主机VMM实例化或运行关联的VM之前评估和验证VM控制结构的内容(以及由消费者提供的其他结构)。
为了使主机VMM能够管理访客VM的执行而无需直接修改访客VM的控制结构,可以使用另一种类型的访客VM或VM中的软件组件,在此称为“访客代理VM”,或者简单地说“代理”。主机VMM启动代理以在访客VM在其中执行的受保护密钥域内进行操作。代理与访客VM一起使用以保护访客VM不被篡改。在一个实施例中,虚拟化环境实现使代理能够访问和修改控制结构的策略,所述控制结构代表主机VMM控制执行流程并且注册其他访客VM的状态。通过修改另一个访客VM的控制结构,代理可以执行如下功能,诸如将消费者供应的映像加载到访客VM以及针对存储器的受保护区域/密钥域内的多个访客VM创建或修改附加VMCS。注意,主机VMM在传统虚拟化环境中提供的VMCS功能在主机VMM请求时代替地由代理实现,使得代理成为在消费者的加密密钥域内操作的主机VMM的中介。硬件可以允许主机VMM在VM运行之前验证(读取但不修改)VMCS(和相关联结构)的内容,以确保结构的内容是正确的并且不会损害主机VMM。
此外,使用代理作为主机VMM和访客VM之间的中介允许代理验证VMM不会错误配置访客VM以损坏机密数据,注入代码或数据,或修改访客VM的执行流程。访客VM可以使用其自己的存储器加密密钥(密钥域密钥)来加密存储器结构。然后,访客VM将得到的密文返回给主机VMM,主机VMM在主机VMM的控制下安装到代表访客VM的主机VMM指定的存储器位置。假设访客VM尚未访问这些存储器位置,VMM可以代表VM安装密文。
代理还可以确保VMM控制的存储器映射/页表与访客VM自己的存储器映射一致。例如,代理可以使用存储器所有权表(MOT),也称为反向映射表(RMT),其提供从访客地址(访客虚拟地址和/或访客物理地址)到预期硬件物理地址的映射。这些映射由访客VM在MOT中捕获,使得可以确保访客VM已经使访客VM的加密存储器不受VMM的重映射攻击。这里,VM可以产生针对MOT的密文条目(用VM的秘密存储器加密密钥/密钥域密钥加密)。VM可以将这些密文条目提供给VMM,并且VMM可以将这些条目安装到MOT表中(其可以作为存储器内数据结构来管理)。
在一个实施例中,在实例化特定访客VM之前,代表主机VMM运行的代理初始化针对特定访客虚拟机的VMCS。主机VMM在实例化特定访客VM(例如,经由VM指针加载(VMPTRLD)指令)时使VMCS加载。在另一个实施例中,消费者可以使用该相同的方法远程创建映像(例如,创建代理VM)。一旦代理被加载到存储器中并且可以运行,代理就可以代表VMM继续创建和修改VMCS和其他控制结构。
主机VMM向消费者提供访客VM的映像将被加载到的存储器位置的至少一个硬件物理地址。该硬件物理地址可以在消费者创建初始加密存储器映像时提供给消费者,或者在实例化访客VM之前提供给消费者VM的代理,或者一旦消费者的访客VM被实例化就提供给消费者的访客VM。在访客VM的VMCS中设置初始指令指针以指向针对访客VM的映像将被加载到的VMM提供的硬件物理地址。使用主机VMM提供的硬件物理地址作为起点,访客VM确定访客VM在执行期间要访问的其他预期硬件物理地址。可以使用这些预期硬件物理地址的值来更新VMCS中的附加字段。
在一个实施例中,当访客VM确定在执行期间要访问的预期硬件物理地址时,访客VM建立从访客VM的页表的访客地址到这些预期硬件物理地址的映射。访客VM的从访客VM页表的访客地址到预期硬件物理地址的映射存储在存储器所有权表(MOT)中。在一个实施例中,访客VM使用用于加密访客VM的密钥域的相同密钥域密钥来加密其存储器所有权表条目。通过使用访客VM的密钥域密钥加密访客VM的MOT条目,只有密钥域密钥的拥有者可以在存储器所有权表中针对该访客VM的加密存储器建立有效映射。
当创建消费者的初始加密消费者映像时,远程消费者加密消费者希望与服务器的公钥一起使用的密钥域密钥,使得仅服务器硬件(或服务器硬件的基础受保护处理器/微代码/固件)可以解密密钥域密钥并在存储器加密引擎中安装密钥域密钥。创建密钥域(CreateKD)指令(在先前引用的专利申请中描述的)用于将消费者的加密密钥域密钥传递给服务器硬件。主机VMM可以确定用于密钥域的相关联的密钥标识符(KeyID)。主机VMM只能访问加密的密钥域密钥,因此无法解密访客VM的受保护密钥域。主机VMM向处理器发出CreateKD命令,提供加密的密钥域密钥及其关联的密钥标识符(KeyID)。响应于接收到CreateKD命令,处理器使用与处理器相关联的私钥来对加密的密钥域密钥进行解密。处理器还对存储器加密引擎进行编程,以使用针对包含密钥域标识符的每个存储器地址的解密的密钥域密钥。
当处理器硬件处理当前正在执行的访客VM的存储器读命令或写命令时,处理器硬件(例如,页面未命中处理程序(PMH))在操作系统页表中查找由当前正在执行的访客VM提供的虚拟/线性地址以获取访客物理地址。处理器在访问VM的页表时使用VM的密钥域密钥来确定由读命令或写命令要访问的虚拟/线性地址的访客物理地址。然后,处理器将使用VMM的密钥域密钥(通过在地址中设置VMM的KeyID或以其他方式指示无密钥)以从由VMM管理的扩展页表来获取访客物理地址(GPA)的主机物理地址(HPA或硬件物理地址)。如果在高速缓存的映射中找不到访客物理地址(GPA),则页面未命中处理程序(PMH)从未加密的存储器(或以其他方式使用VMM的KeyID)加载扩展页表(EPT)。PMH执行EPT的页面遍历以查找从访客虚拟/线性地址到硬件物理地址的映射。
在一个实施例中,通过验证对应于给定访客物理地址的找到的硬件物理地址与访客VM的预期硬件物理地址匹配而PMH EPT遍历结束。使用存储器所有权表(MOT)执行该验证。处理器硬件使用当前正在执行的访客VM的存储器加密密钥(密钥域密钥)来解密存储器所有权表条目以确定预期的硬件物理地址。
作为表的存储器所有权表可以由正被访问的页面的物理地址索引。可以针对任何未高速缓存的(尚未处于TLB的)存储器存取而检查MOT,任何未高速缓存的存储器存取包括绕过分页的直接物理地址的访问。绕过分页的直接物理地址的访问包括访问VMCS中的地址并访问用于加载VMCS的地址,如VM指针加载(VMPTRLD)指令所执行的。通过在存储器所有权表的条目中查找对应于当前正在执行的访客VM的找到的硬件物理地址来执行该验证。在一个实施例中,处理器硬件从加载VMCS时提供的硬件物理地址(例如与VMPTRLD指令一起使用的物理地址)中的最高位确定当前正在执行的访客VM的密钥域标识符(KD_ID)。就访客VM而言,MOT还可以指示VMPTRLD指令中提供的物理地址是否是VMCS(因为只有消费者、访客或其代理创建使用密钥域密钥加密的VMCS)。
如果存储器所有权表条目正确解密并且没有损坏,则将找到的EPT条目的硬件物理地址与存储在用于访客物理地址的存储器所有权表中的预期硬件物理地址进行比较。如果EPT的硬件物理地址与访客VM的预期硬件物理地址匹配,则处理器硬件可以继续存储器读取或写入。在一个实施例中,从虚拟/线性地址到硬件物理地址的映射被保存在转换后备缓冲器和/或高速缓存中。
如果EPT的硬件物理地址与访客VM的预期硬件物理地址不匹配,则可以强制访客VM退出,或者处理器可以中止存储器读取或写入尝试。
这些技术保护消费者的工作负载免于主机VMM的访问或操纵,同时使主机VMM能够保存对平台的完全控制并管理在平台上运行的访客虚拟机。存储器加密技术可保护访客VM工作负载免受物理攻击,并防止主机VMM访问VM(加密)存储器。云服务提供商的软件、管理员以及对云服务提供商的服务器进行物理访问的任何人都不能访问或修改受保护的访客VM。使用本文描述的技术提供的保护有效地提供与消费者在私有云(内部部署)中运行相同工作负载相同级别的机密性和安全性。
现在参考图1,示出了示出典型虚拟机环境100的组件的框图。示出了在云服务提供商的服务器中提供的虚拟机环境的典型实现方式。服务器硬件110包括存储器112和存储器加密引擎114。
在服务器硬件110上运行的是虚拟机监视器(VMM)层120。在所示的典型虚拟机环境100中,VMM层120是在云服务提供商的服务器硬件110上创建和运行虚拟机(VM)的计算机软件或固件,VM例如为VM1 1301、VM2 1302和VM3 1303。VM VM1 1301、VM2 1302和VM3 1303中的每一个在图1中被示为独立块,代表不同的VM全部在公共VMM层120的控制下。VMM层120向VMM控制的VM提供对服务器资源(例如服务器硬件110)的访问。
VMM层120使用诸如VM控制结构(VMCS)124和扩展页表(EPT)126之类的数据结构来控制VM的执行。VMCS是存储器中的数据结构,针对每个VM存在一次,而VMCS则由VMM管理。随着不同VM之间的执行上下文的每次更改,针对当前VM恢复VMCS,定义VM的虚拟处理器的状态。扩展页表(EPT)用于将VM虚拟处理器的存储器从访客使用的访客虚拟机物理地址重新映射到主机管理的物理地址,允许主机指派哪些存储器资源/位置可供访客使用。
VMM层120的软件或固件由云服务提供商提供,并且是针对每个VM的受信计算基础(TCB)的一部分。现代操作系统努力减小TCB的大小,使得对TCB代码库(通过手动或计算机辅助的软件审计或程序验证)的详尽检查变得可行。
在图1的正常虚拟机环境100中,由云服务提供商提供的VMM 122位于VM VM11301、VM2 1302和VM3 1303中的每一个的TCB中。在TCB中包括VMM 122阻止诸如VM1 1301的特定VM查看、测量、或者信任控制该特定VM的VMM 122。云服务提供商可以在没有VM VM11301所有者的知识的情况下随时改变VMM 122。此外,VM之间不存在密码分离。如果VMM已被破坏,则损坏的VM可以经由受到破坏的VMM访问第二VM中的私有数据,该受到破坏的VMM仍被第二VM信任。
为了使消费者能够得到控制消费者的进程/VM的VMM是受信的确保,大多数已知技术使用硬件来测量在云中的远程机器上运行的软件/固件(在这种情况下,VMM 122)和向消费者证明,在云中的远程机器上运行的软件/固件是消费者预期的软件/固件的版本。由于公共云服务提供商的VMM被包括在消费者的TCB中,消费者无法独立评估由公共云服务提供商做出的受信度证明,消费者也不能知道在进行测量之后VMM保持不被损坏。
现在参考图2,示出了根据本发明的实施例的云服务环境的框图。如图2所示,网络200可用于允许消费者从公共云服务提供商请求服务,包括虚拟化服务。如图所示,网络200可以对应于任何类型的通信网络,并且可以包括经由诸如因特网220的给定网络互连的许多不同类型的计算设备。
可以提供云存储210作为包括各种计算设备、存储设备等的数据中心的一部分。作为一个示例,云存储210可以是包括多个存储组件的存储设备,诸如磁盘、光盘或基于半导体的存储。云存储210可以例如充当各种应用的主副本的存储库,所述各种应用包括虚拟机监视器(VMM)应用,其实例化虚拟机以响应于消费者的请求来提供服务。在图2所示的实施例中,VMM应用的主副本以VMM映像212的形式存储。VMM映像212是包含软件栈的软件映像,该软件栈被设计为以虚拟机监视器(VMM)的形式提供虚拟机平台。
因此,如图2中进一步所示,在相同位置,例如,作为相同数据中心的一部分,一个或多个公共云服务提供商服务器(例如,公共云提供商服务器2151和2152)可以耦合到云存储210。在各种实施例中,公共云服务提供者服务器可用于服务消费者服务请求,包括虚拟化请求。例如,每个公共云服务提供商服务器可以代表消费者托管一个或多个虚拟机。在图2所示的示例中,公共云提供商服务器2151托管两个虚拟机VM1 2401和VM22402。类似地,公共云提供商服务器2152托管两个虚拟机VM1 2403和VM22404。在所示的实施例中,公共云提供商服务器2151和2152中的每个还执行VMM映像212的相应VMM实例作为VMM 2221和VMM2222
如图2所示,可以存在各种消费者设备,例如,云服务消费者设备2301和2302。这种云服务消费者设备可以是给定用户的个人设备,诸如智能电话、平板电脑、台式计算机等。可选地,云服务消费者设备可以是用于消费云服务的组织的服务器。此外,云服务消费者设备可以经由软件模拟,或者自身在虚拟机(VM)内运行。换句话说,仿真器或模拟器可以在软件中模拟云提供商的硬件,使得消费者可以在消费者的设备上运行云提供商的硬件的仿真器。
云服务消费者设备2301和2302中的每一个提供相应的云服务消费者2311和2312以及相应的VM映像2321和2322。云服务消费者2311和2312可以是例如用于请求云服务的云服务应用的客户端组件。诸如云服务消费者2311和2312之类的云服务消费者在本文中被称为“消费者”。VM映像2321和2322可以存储在耦合到相应云服务消费者设备2301和2302的存储设备(未示出)中。这些VM映像由消费者提供给云服务提供商提供并用于创建在云提供商的服务器2151上运行的安全VM,例如VM1 2401
当根据本文描述的技术在云服务提供商的服务器上建立安全VM时,消费者然后可以使用该VM利用消费者的秘密密钥来代表消费者创建额外的VM。因此,一旦可以在云服务提供商的云中安全地建立一个消费者VM,该VM就可以执行图2中的消费者设备的所有操作,包括创建额外的安全VM。同样,消费者可以与多个云服务提供商建立安全的VM,并且这些安全的VM可以使用消费者的密钥经由安全通信信道安全地进行交互。
参考图3,呈现了与本公开一致的环境300。环境300包括硬件层310,访客工作负载层(即,虚拟机监视器(VMM)层320)和存储器312。存储器加密引擎314被示为硬件310的一部分。存储器加密引擎314被示为邻近存储器312用于示出存储器加密引擎314用于对存储器312加密和/或解密。存储器加密引擎314被示为邻近存储器所有权表(MOT)380,以示出存储器加密引擎314用于对MOT 380加密和/或解密。在VMM层320内,VMM 322管理虚拟机并维护扩展页表(EPT)326。
硬件层310(包括存储器加密引擎314)和VMM层320共享存储器所有权表(MOT)380。存储器所有权表380用于将访客VM的访客地址映射到实际硬件物理地址(HPA)。在一个实施例中,访客VM可以使用MOT 380来验证针对给定访客物理地址主机VMM正在使用的物理地址(在此称为“工作负载管理器提供的硬件物理地址”)与访客VM的存储器映射一致。
在一些实施例中,加密的访客映像的部分(例如,存储页面)可以密码地绑定到特定的物理存储器地址。该绑定确保加密的存储器映像不能在没有访客/消费者的知识的情况下简单地被复制或移动到替换存储器位置。访客VM可以使用存储器所有权表380来验证用于访问其加密存储器映像的访客物理地址(GPA)被映射到正确的存储器内容。MOT将访客的GPA链接到主机的硬件物理地址(HPA),并且因此访客VM可以确保访客地址引用预期/正确的加密存储器内容。
通过用消费者提供的密钥来加密针对访客工作负载的映射,映射的相应原始访客地址被绑定到映射的相应原始硬件物理地址。另外,通过用消费者提供的密钥来加密由访客工作负载写入的内容,映射的相应原始访客地址被绑定到映射的相应原始硬件物理地址的加密内容。
存储器312被示为包括两个部分,未加密的存储器部分312U,其表示密钥域350外部的存储器(或者可能属于另一个单独的密钥域并因此使用不同的密钥加密),以及加密的存储器部分312E,其表示密钥域350内的存储器。在密钥域350内示出了虚拟机3301和3302。虚拟机3301和3302具有相对应的虚拟机控制结构(VMCS)3241和3242。注意,VMCS 3241和3242都在密钥域350内,并且因此由密钥域350的密钥域密钥加密。
每个消费者针对加密的存储器提供其自己的密钥,并且被指派密钥域ID(KD_ID)(显示为KD1)。使用消费者的密钥域密钥加密的消费者分配的存储器可以包含包括VMCS结构的多个VM。VMM在其被加密时无法存取消费者的存储器,但VMM可以使用加密存储器的区域内的VMCS启动VM。由于VMM仍然可以重新映射执行消费者的存储器,因此存储器所有权表也用于检查主机VMM使用的存储器映射(“工作负载管理器提供的主机物理地址”)是否与消费者的访客VM的预期硬件物理地址匹配并对应于使用消费者密钥加密的存储器映像内容。
在一个实施例中,使用称为可调整块密码的加密技术。可调整块密码接受第二个输入(称为调整),以及要加密的明文或密文输入。调整以及密钥选择由密码计算的排列。在加密消费者映像时,消费者映像被加载到的服务器的硬件物理地址被用作调整,使得所得到的加密消费者映像是依赖于存储器位置的。加密的消费者映像被描述为依赖于存储器位置,因为在加密的消费者映像可以被正确解密之前,必须将加密的消费者映像加载到云服务提供商的服务器的正确的VMM指定的硬件物理地址中。
在一个实施例中,使用利用密文窃取(XTS)的基于XEX的调整的码本模式来加密消费者映像。消费者使用页面地址调整和密钥域密钥以依赖于存储器位置的XTS模式加密消费者映像。消费者映像将被加载的正确物理地址包含在加密的每个块的XTS调整中。其他可调整密码也可以用在其他实施例中,例如Liskov、Rivest和Wagner(LRW)或计数器模式密码。
因为使用依赖于存储器位置的“调整”密码来加密消费者映像,所以对手不能移动存储器中消费者映像的部分。页表将消费者映像的程序和数据映射到云服务提供商的服务器上的正确物理存储器地址,因此,如果消费者映像以密码方式绑定到正确的物理存储器位置,则不能恶意更改程序行为。换句话说,如果消费者映像未被加载到云服务提供商的服务器上的正确物理存储器位置,则无法正确解密消费者映像。此外,完整性检查值(例如,基于存储器内容的SHA2/3安全散列算法的消息认证码(MAC)或散列MAC(HMAC))可用于检测用于修改消费者映像内容和/或加载消费者映像被加载到的存储器中的位置的任何尝试。
由于消费者的映像可以密码地绑定到物理地址位置,因此存储器所有权表(MOT)将访客物理地址(GPA)映射到映像被密码绑定到的预期硬件物理地址(HPA)。该MOT映射使得访客VM能够确保当VM在特定GPA处对存储器进行存取时,访客VM正在对该相同访客物理地址的预期存储器映像内容进行访问。
参考图4,在消费者代理/VM、主机管理软件/虚拟机监视器(VMM)和硬件之间示出了针对访客工作负载/虚拟机(VM)提供存储器的受保护的区域的数据流。在各种实施例中,消费者/代理430可以表示由消费者拥有的远程机器、代表消费者操作的代理、消费者的访客VM、代表消费者创建消费者映像的受信第三方,或者受信的嵌入式系统(例如,由提供的融合安全性和可管理性引擎(CSME))。在动作4.1中,消费者代理/VM 430从云服务提供商请求服务,这导致实例化虚拟机以管理消费者的工作负载。在动作4.2.1中,VMM 422从未加密(共享)存储器412U针对消费者代理/VM 430分配空间(即,页面)412VM。在动作4.2.2中,VMM 422针对消费者代理/VM在存储器所有权表480中分配条目。存储器所有权表480将用于验证消费者代理/VM 430访客物理地址与消费者代理/VM的预期硬件物理地址之间的映射。消费者代理/VM 430的预期硬件物理地址的确定在下面进一步详细描述。
在动作4.3中,VMM 422向消费者代理/VM 430通知在动作4.2.1中针对消费者代理/VM 430分配的存储器位置412VM的硬件物理地址(HPA)。这些硬件物理地址可以包括存储器中页面的硬件物理地址(例如消费者映像被加载到的页面)、页表的硬件物理地址、中断描述符表寄存器信息以及针对对消费者的要求进行服务的服务器的其他硬件物理地址。除了用于构建(XTS加密)VM的存储器映像的页面的物理地址之外,消费者将使用物理地址来填充VMCS结构和MOT条目。如前所述,这些硬件物理地址在本文中称为依赖于存储器位置的地址信息,因为必须将特定类型的数据(例如,页表)加载到服务器上的正确VMM指定的硬件物理地址中以用于消费者代理/VM正常执行。
在动作4.4中,消费者代理/VM 430使用其自己的消费者生成的密钥域密钥来创建加密的消费者映像。在一个实施例中,消费者代理/VM使用由云服务提供商的VMM 422提供的硬件物理地址来对消费者映像加密。
在动作4.5中,消费者可以在加密的消费者映像中包括根据服务器/VMM的规范配置的VMCS结构,用于正确地启动消费者的访客VM。例如,VMCS定义虚拟机的虚拟处理器的状态。如上所述,由云服务提供商提供消费者的VM映像要被加载到的页面的位置作为依赖于存储器位置的地址信息,使得消费者的映像可以被加载到在服务器上的正确的VMM指定的硬件物理地址中,以使消费者代理/VM能够正确执行。VMCS结构可用于更新已加密的消费者映像。
在动作4.6中,还针对与消费者映像相关联的预期硬件物理地址计算存储器所有权表条目。这些存储器所有权表条目与特定VM相关联,并且包括从VM的页表的每个访客物理地址(GPA)到云服务提供商的服务器上的VM的预期硬件物理地址(预期的HPA)的映射。当VM请求取回映射到给定访客物理地址(GPA)的虚拟/线性地址的数据时,从中取回数据的实际VMM指定的(工作负载管理器提供的)硬件物理地址(HPA)可以被验证。可以通过将对应于GPA的预期硬件物理地址(HPA)与要从中取回代码/数据的实际工作负载管理器提供的硬件物理地址(HPA)进行比较来执行该验证。如果预期的HPA与给定GPA的实际HPA不匹配,则请求VM可能会假设VMM已被损坏,中止读取或写入命令,并退出处理。此外,可以撤销密钥域密钥。如果预期的HPA与给定GPA的实际HPA匹配,则请求VM可以执行异常/默认处理程序,并使用请求VM的密钥域密钥加密存储器所有权表条目。
在动作4.7中,消费者通过对对称密钥进行加密,来与云服务提供商的服务器建立存储器加密密钥,所述对称密钥用于用云服务提供商服务器的公钥对消费者映像(即,密钥域密钥)进行加密。然后,服务器硬件将阻止向云服务提供商、云服务提供商的VMM和其他潜在对手损坏密钥域密钥。
在动作4.8中,消费者代理/VM 430将加密的密钥域密钥,包括VMCS和相关联的结构的加密的消费者映像以及加密的存储器所有权表条目提供给VM 422。
在动作4.9中,VMM 422通过向硬件410内的处理器(未示出)发出创建密钥域(CreateKD)命令来针对消费者代理/VM创建密钥域。
在动作4.10中,VMM 422将加密的消费者映像加载到云服务提供商的服务器上的正确存储器位置(在动作4.2.1中分配给消费者代理/VM 430且在动作4.3传送给消费者代理/VM 430的硬件物理地址)。
在动作4.11中,VM 422将由消费者代理/VM 430提供的加密的存储器所有权表条目复制到在动作4.2.2中被分配用于消费者代理/VM 430分配的存储器所有权表480中的条目。结果,存储器所有权表480包含从消费者代理/VM 430使用的访客物理地址到云服务提供商的服务器存储器412U中的预期硬件物理地址的映射。
云服务提供商可以针对新提供的加密的密钥域密钥选择或生成密钥域标识符KD_ID。在执行Create_KD指令时,正在创建密钥域的硬件410内的CPU从存储器中刷新消费者代理/VM 430的任何先前使用的密钥域标识符。CPU还刷新与任何先前使用的密钥域相关联的高速缓存,并使用与新生成的密钥域标识符相关联的密钥域密钥对存储器加密引擎进行编程。
参考图5,云服务提供商可以使用安全飞地作为替代方法来提供用于运行消费者工作负载的存储器的受保护区域。图5示出了消费者代理/VM 530的空间512VM已经在未加密的存储器512U内分配的时间点,如上面参考图4的动作4.2.1所描述的。此外,VMM 522还在存储器所有权表580中分配了条目,如上面参考图4的动作4.2.2所述。
图5示出了用于在云服务提供商的存储器的受保护区域内建立消费者的访客工作负载的实施例。在一个实施例中,消费者将加密的映像提供给在云服务提供商的服务器上运行的飞地。消费者的映像已加密,使得云服务提供商无法读取映像。在一个实施例中,可以通过经由终止于飞地内的安全网络协议(诸如TLS/SSL/IPSec)发送消费者的未加密映像来加密消费者的映像。飞地重新加密本地服务器的映像,以创建将在本地执行的加密存储器映像。
为了针对消费者工作负载提供存储器的受保护区域,在动作5.1中,VMM 522使用硬件510内的处理器514的受信执行环境支持516特征来在共享的未加密存储器512U内建立安全飞地504。在飞地504内,可以测量、验证和/或以其他方式确定执行代码是受信的。另外,飞地504中包括的代码和数据可以被加密或以其他方式被保护免于被飞地504外部执行的代码访问。例如,包括在安全飞地504中的代码和数据可以当被执行时或者当被存储在处理器514的某些受保护的高速缓冲存储器中时由处理器514的硬件保护机制保护。包括在安全飞地504中的代码和数据也可以在存储在共享高速缓存或主存储器中时被加密。受信执行环境支持516可以体现为一组处理器指令扩展,其允许处理器514在存储器中建立一个或多个安全飞地。例如,受信执行环境支持516可以体现为软件保护扩展(SGX)技术。可选的,嵌入式受信执行环境(例如,英特尔的融合安全性和可管理性引擎(CSME))或提供安全操作模式的其他环境(例如,系统管理模式(SMM)/受信执行技术(TXT))可以执行类似的操作以提供初始加密的存储器映像。
在动作5.2中,消费者代理/VM 530从飞地504获得证书并验证证书。在认证飞地504之后,消费者代理/VM 530建立到飞地504的安全通信信道,并经由安全通信信道将消费者映像502提供给飞地504。
在动作5.3中,飞地504从VMM 522获得先前被分配用于消费者代理/VM 530的存储器位置512VM的硬件物理地址(HPA)。存储器位置512VM的这些硬件物理地址将加载有用于消费者映像502的加密代码。
在动作5.4中,飞地504对本地密钥域密钥进行编程,该本地密钥域密钥将用于加密构成消费者代理/VM 530的密钥域的存储器位置/硬件物理地址。在密钥域密钥用于加密与飞地504相同的服务器上的存储器位置的意义上,密钥域密钥对于飞地504是本地的。
在动作5.5中,飞地504向诸如处理器514之类的硬件510内的处理器发出创建密钥域(Create_KD)指令。
在动作5.6中,飞地504针对消费者代理/VM 530创建VMCS。VMCS将被存储在在动作5.3中由VMM 522提供的特定硬件物理地址/存储器位置处。
在动作5.7中,飞地504使用密钥域密钥加密消费者映像502以产生加密的消费者映像502E。如上面参考图4的动作4.4所述,使用可调整的块密码。在加密消费者映像时,消费者映像被加载到其的服务器的硬件物理地址被用作调整,使得所得到的加密消费者映像是依赖于存储器位置的。加密的消费者映像被描述为依赖于存储器位置,因为在加密的消费者映像可以被正确解密之前,必须将加密的消费者映像加载到云服务提供商的服务器的正确的VMM指定的硬件物理地址中。
在动作5.8中,飞地504使用密钥域密钥计算针对加密的消费者映像502E的存储器所有权表条目。这些存储器所有权表条目将来自访客VM的页表的访客物理地址映射到飞地504预期加密消费者映像将被加载到的预期硬件物理地址。这些预期的硬件物理地址基于在动作5.3中VMM 522提供的硬件物理地址。
在动作5.9中,飞地504将加密的消费者映像、加密的存储器所有权表条目和加密的密钥域密钥提供给VMM 522。可选地,在动作5.9中,飞地504可以将加密的消费者映像直接写入由VMM 522指定的正确的存储器位置,而不是将加密的消费者映像提供给VMM 522。
在动作5.10中,VMM 522将加密的消费者映像502E加载到在动作5.3中由来自VMM522的飞地504获得的存储器位置中。
在动作5.11中,VMM 522将加密的消费者映像存储器所有权表条目写入存储器所有权表580中。
参见图6A,示出了用于建立存储器所有权表(MOT)条目的数据流,该条目用于从由访客工作负载/访客VM提供的原始访客地址到原始工作负载管理器提供的硬件物理地址的映射。原始访客地址可以是访客虚拟地址或访客物理地址,这取决于访客工作负载630的性质和工作负载管理器622的性质。在动作6.1中,访客工作负载630将原始访客地址提供给工作负载管理器622。在动作6.2中,不受信工作负载管理器622将原始工作负载管理器提供的硬件物理地址指派给原始访客地址。在动作6.3中,不受信工作负载管理器622将原始工作负载管理器提供的硬件物理地址与原始访客地址存储在页表604中。例如,在不受信工作负载管理器622是VMM的情况下,页表604可以是提供二级地址转换的扩展页表。
在动作6.4中,不受信工作负载管理器622将从访客工作负载/访客VM 630接收的原始访客地址提供给处理器614。在动作6.5中,处理器614在页表604中查找原始访客地址以获得原始工作负载管理器提供的硬件物理地址。在动作6.6中,处理器614针对原始访客地址返回原始工作负载管理器提供的硬件物理地址。在动作6.7.1中,访客工作负载630使用原始工作负载管理器提供的硬件物理地址作为对存储器所有权表680的索引,以存储与原始访客地址相关的条目。访客工作负载630通过在动作6.7.2中将原始工作负载管理器提供的硬件物理地址写入预期HPA字段682并且在动作6.7.3中将原始访客地址写入预期访客地址684来在MOT表680中创建条目。访客工作负载还可以使用VMM未知的访客工作负载的秘密密钥域密钥(存储器加密密钥)来加密该条目。通过使用访客工作负载的密钥域密钥对MOT条目加密,访客工作负载630防止由受损主机工作负载管理器/VMM伪造的MOT条目。
通过将由访客工作负载630指派的原始访客地址值存储在具有由不受信工作负载管理器622提供的原始工作负载管理器提供的硬件物理地址的条目中,存储器所有权表680保留原始指派的值以供将来引用。特别是,原始指派的值将是由原始工作负载管理器提供的硬件物理地址索引的条目的预期HPA和预期访客地址值。可以将HPA和访客地址的预期值与动作6.6中收到的值进行比较,并用于验证在动作6.6中收到的值。
参见图6B,示出了数据流,其在存储器所有权表680中取回所请求的访客地址的条目。在动作6.8中,访客工作负载630向不受信工作负载管理器622提供所请求的访客地址。在动作6.9中,不受信工作负载管理器622将所请求的访客地址传递到处理器614,以便转换为工作负载管理器提供的硬件物理地址。在动作6.10中,使用页表604,处理器614将所请求的访客地址转换为转换后的工作负载管理器提供的硬件物理地址。在动作6.11中,处理器614在存储器所有权表680中搜索与转换后的工作负载管理器提供的硬件物理地址相对应的条目。如果发现存储器所有权表680中的条目对应于转换后的工作负载管理器提供的硬件物理地址,则用于执行访客工作负载630的密钥域密钥/存储器加密密钥用于尝试解密找到的MOT条目。
在动作6.12中,处理器614验证转换后的工作负载管理器提供的硬件物理地址具有访客工作负载630所预期的值。在一个实施例中,如果满足以下条件,则转换后的工作负载管理器提供的硬件物理地址被验证:(i)使用正在运行的访客工作负载的密钥域密钥(存储器加密密钥)正确解密MOT条目,(ii)预期的硬件物理地址682与用作MOT 680的索引的转换后的工作负载管理器提供的硬件物理地址相匹配,以及(iii)所请求的访客地址与相同索引的预期访客地址684匹配。在动作6.13中,处理器614将经验证的转换后的工作负载管理器提供的硬件物理地址提供给访客工作负载630,作为所请求的访客地址的硬件物理地址。如果处理器614未验证转换后的工作负载管理器提供的硬件物理地址,则处理器614可调用中断或错误处理程序以使访客工作负载630退出或执行其他错误处理过程。
现在参考图7,在使用中,公共云提供商可以建立用于保护在公共云提供商服务器715上实例化的访客工作负载的环境700。说明性环境700包括虚拟机监控器(VMM)722和一个或多个虚拟机(VM)730i、存储器管理器760和存储器页面错误检测器770。环境的组件中的一些可以体现为硬件、固件、软件或其组合。这样,在一些实施例中,环境700的组件中的一个或多个可以体现为电子设备的电路系统或集合(例如,存储器管理器电路760、存储器页面错误检测器电路770等)。应当意识到,在这样的实施例中,存储器管理器电路760和/或存储器页面错误检测器电路770中的一个或多个可以形成计算引擎、处理器、I/O子系统、通信子系统和/或公共云提供商服务器715的其它组件中的一个或多个的一部分。另外,在一些实施例中,环境700的说明性组件中的一个或多个可以形成另一组件的一部分和/或说明性组件中的一个或多个可以彼此独立。此外,在一些实施例中,环境700的组件中的一个或多个可以体现为虚拟化硬件组件或模拟架构,其可以由计算引擎或公共云提供商服务器715的其他组件建立和维护。
虚拟机监视器(VMM)722被配置为在公共云提供商服务器715上实例化虚拟机730i。VMM 722将硬件物理地址分配给每个虚拟机730i。VMM722创建扩展页表(EPT),其获取访客物理地址(由VM指派)并将这些访客物理地址映射到硬件(HPA)使用的实际物理地址。在一个实施例中,硬件物理地址被指派为存储器页面(固定大小的存储器块)。
在一个实施例中,每个虚拟机(VM)730i被配置为执行由针对其而对虚拟机进行实例化的消费者提供的消费者映像。每个虚拟机730i建立VM页表702i以存储虚拟机的虚拟/线性地址(VA)与对应于由虚拟机监视器722分配给VM 730i的硬件物理地址的访客物理地址(GPA)之间的转换映射。为此,虚拟机704可以生成VA→GPA映射,其用于将虚拟/线性地址转换为访客物理地址。VMM 722可以使用扩展页表(EPT)以将GPA映射到硬件物理地址(HPA)。
在一个实施例中,为了跟踪具有所指派的访客物理地址范围的VM 730i,VMM 722还可以生成与每个VM 730i相关联的虚拟机标识符(VM_ID),并且在VMM页表704中包括VM_ID→GPA→HPA条目。VM_ID标识符唯一地标识在公共云提供商服务器715上实例化的每个虚拟机730i。还可以使用识别虚拟机730i的其他手段,例如地址空间标识符或密钥域标识符。
如上所述,在一些情况下,虚拟机监视器722可能被损坏并且可能试图恶意地将改变从VM的访客物理地址到主机物理地址的映射。为了确保公共云提供商服务器715没有被恶意损坏,VM 730i可以提供要保存在存储器所有权表706中的条目。存储器所有权表条目7061和7062保留原始GPA→预期的HPA映射,用VM 730i的密钥域密钥进行加密。因此,存储器所有权表706包含指定密钥域密钥→GPA→预期HPA映射条目的加密条目。VM_ID或KD_ID用于选择用于解密MOT条目的密钥域密钥。
存储器管理器760被配置为管理来自虚拟机730i的存储器请求,同时向虚拟机730i的虚拟存储器提供安全性。在使用中,存储器管理器760被配置为从虚拟机730i接收包括虚拟/线性地址的存储器存取请求。响应于存储器存取请求,存储器管理器760使用与请求虚拟机730i相关联的VM页表702i和与虚拟机监视器722相关联的VMM页表(也称为扩展页表(EPT))704执行虚拟/线性地址到公共云提供商服务器715的转换后的硬件物理地址的转换。
为了向虚拟机730i的虚拟存储器提供安全性,存储器管理器760可以被配置为验证访客地址到转换后的硬件物理地址的转换。在一个实施例中,验证基于针对给定访客物理地址的转换后硬件物理地址与针对给定访客物理地址(GPA)的存储在存储器所有权表706中的预期主机物理地址的比较。
存储器页面错误检测器770被配置为检测存储器页面错误,其可以在使用与虚拟机730i或虚拟机监视器722相关联的页表进行地址转换期间发生。例如,当转换后的物理地址(例如,转换后的访客物理地址和/或转换后的硬件物理地址)不存在于相对应的页表中时,存储器页面错误检测器770可以检测到存储器页面错误。例如,当存储器管理器770将虚拟机730i的虚拟/线性地址转换为转换后的访客物理地址时,存储器页面错误检测器770确定转换后的访客物理地址是否存在于与虚拟机730i相关联的VM页表702i中。如果转换后的访客物理地址不存在于VM页表702i中,则存储页面错误检测器770生成存储页面错误。另外,当存储器管理器760将转换后的访客物理地址转换为转换后的硬件物理地址时,存储器页面错误检测器770确定转换后的硬件物理地址是否存在于与虚拟机监视器722相关联的VMM页表704中。如果在VMM页表704中不存在转换后的硬件物理地址,则存储器页面错误检测器770生成存储器页面错误或VMExit以退出访客VM。在一些实施例中,存储页面错误检测器770可以向用户警告公共云提供商服务器715已经被损坏或者可以撤销密钥域密钥,使得VMM不能继续执行VM。
参考图8,流程图示出了根据本发明的一个实施例的可由云服务提供商服务器执行以建立存储器所有权表的方法800。在“初始化虚拟机监视器(VMM)”块810处,在云服务提供商服务器上初始化虚拟机监视器形式的主机工作负载管理器。如上所述,主机工作负载管理器可以对应于非虚拟化环境中的操作系统;本文作为主机工作负载管理器的VMM的描述同样适用于非虚拟化环境中的操作系统或其他工作负载管理器。
图8的VMM可以以访客虚拟机(VM)的形式实例化访客工作负载,以向请求的消费者提供云服务。在“实例化新VM?”决策点814,主机工作负载管理器/VMM确定是否实例化新的访客工作负载/访客VM。例如,当从消费者接收到对云服务的新请求时,可以实例化新的访客工作负载/访客VM。如果不在“实例化新VM?”决策点814处实例化新VM,则控制返回到“实例化新VM?”决策点814,并且VMM继续等待对实例化新访客工作负载/访客VM的需要。如果要在“实例化新VM?”决策点814处实例化新的访客工作负载/访客VM,则控制前进到“VMM将硬件物理地址(HPA)(页面)分配给新VM”块816。
在“VMM将硬件物理地址(HPA)(页面)分配给新VM”块816中,主机工作负载管理器/VMM分配硬件物理地址以用于访客工作负载/访客VM使用,如上面参考图4、图5和图6A所描述的。VMM还可以将虚拟机标识符(VM_ID)指派给访客工作负载/访客VM。
从“VMM将硬件物理地址(HPA)(页面)分配给新VM”块816,控制然后进行到“VMM启动新VM并提供针对分配的HPA(页面)的信息”块822,其中主机工作负载管理器/VMM启动新的访客工作负载/访客VM,并提供针对分配给新访客工作负载/访客VM的HPA(页面)的信息。例如,主机工作负载管理器/VMM可以向访客工作负载/访客VM提供依赖于存储器位置的地址信息。该依赖于存储器位置的地址信息可以包括存储器中的页面的硬件物理地址(诸如消费者映像要加载到其的页面)、中断描述符表寄存器信息以及服务于消费者的请求的服务器的其他硬件物理地址。这些硬件物理地址在此称为依赖于存储器位置的地址信息,因为必须将特定类型的数据(例如,页表)加载到服务器上的正确VMM指定的硬件物理地址中,以使消费者代理/VM正确地执行。VMM还可以将虚拟机标识符VM_ID提供给访客工作负载/访客VM。控制从“VMM启动新VM并提供针对所分配的HPA(页面)的信息”块822进行到“新VM初始化VMCS并确定预期的HPA”块824。
在“新VM初始化VMCS并确定预期的HPA”块824,新的访客工作负载/访客VM初始化确定访客工作负载将如何执行的控制结构。例如,对于访客VM,初始化虚拟机控制结构(VMCS)以指定在访客工作负载/访客VM的执行期间要使用的硬件物理地址。这些硬件物理地址可以包括存储器中页面的硬件物理地址(诸如消费者映像要加载到其的页面),以及访客VM页表的硬件物理地址。根据VMCS中初始化的硬件物理地址,访客VM还可以确定在将来的执行周期期间应包括在VMCS中的预期硬件物理地址值。例如,VMCS包含许多主机物理地址,例如扩展页表根的位置(EPTP或扩展页表指针)。VMCS还可以包含未通过页表转换的数据结构(例如,MSR退出表、VM信息表、页面修改日志等)的硬件物理地址。由于这些VMCS地址未通过页表转换,因此这些VMCS地址配置有正确的硬件物理存储器地址。一些实施例可以允许VMM通过选择性地允许VMM对不会损害安全性或改变VM的行为的所选字段执行VMWrite操作来修改VMCS的所选字段(诸如EPTP或主机状态区域)。从“新VM初始化VMCS并确定预期的HPA”块824,控制进行到“新VM设置具有VA→GPA映射的VM页表”块826。
在“新VM建立具有VA→GPA映射的VM页表”块826,新建立的访客工作负载/VM建立具有虚拟地址(VA)到访客物理地址(GPA)映射的VM页表。VMM使用扩展页表(EPT)将访客物理地址(GPA)映射到主机物理地址(HPA)。在“新VM设置具有VA→GPA映射的VM页表”块826处,访客工作负载/访客VM将虚拟/线性地址指派给访客VM选择的访客物理地址(GPA)。主机VMM使用EPT将访客的GPA转换为主机的HPA。从“新VM设置具有VA→GPA映射的VM页表”块826,然后控制进行到“新VM将MOT条目保存为GPA→预期HPA”块830。
在“新VM将MOT条目保存为GPA→预期HPA”块830,新VM指定GPA和预期HPA之间的映射作为存储器所有权表条目。然后,访客工作负载/访客VM可以使用存储器所有权表条目来确认主机工作负载管理器/VMM稍后提供的地址与最初提供的到加密映像内容的映射是一致的并且没有被损坏。从“新VM将MOT条目保存为GPA→预期HPA”块830,控制然后进行到“新VM利用密钥域密钥加密MOT条目并向VMM提供MOT条目”块832。
在“新VM利用密钥域密钥加密MOT条目并向VMM提供MOT条目”块832,新的访客工作负载/访客VM用密钥域密钥加密存储器所有权表(MOT)条目,所述密钥域密钥用于加密指派给新的访客工作负载/访客VM的存储器。当加密MOT条目时,VM还可以使用MOT表中条目的硬件物理地址作为对加密密码的调整。当硬件物理存储器地址用作调整时,此加密协议与使用XTS存储器加密保持一致,因为MOT表本身也存储在存储器中。通过使用密钥域密钥加密MOT条目,访客工作负载/访客VM确保主机工作负载管理器/VMM不能读取、修改或伪造MOT条目。从“新VM利用密钥域密钥加密MOT条目”块832,控制然后进行到“VMM将加密的MOT条目写入存储器所有权表”块834。
在“VMM将加密的MOT条目写入存储器所有权表”块834,主机工作负载管理器/VMM将访客工作负载/访客VM提供的加密的MOT条目在对应于MOT条目的预期硬件物理地址的位置处写入存储器所有权表。在一个实施例中,还在存储器所有权表中捕获访客工作负载/访客VM标识符(VM_ID)。
参考图9,流程图示出了响应于来自访客工作负载的请求而访问存储器中的数据的方法900。在“接收针对访问访客地址的请求”块902中,处理器从访客工作负载/访客VM接收用于访问访客VM提供的访客地址处的数据的请求。所请求的访客地址可以是访客虚拟/线性地址或访客物理地址,并且处理器将搜索与所请求的访客地址相对应的实际硬件物理地址。术语“工作负载管理器提供的硬件物理地址”在本文中用于指访客地址到实际硬件物理地址的最低级转换。在虚拟化环境中,可以使用由VMM管理的扩展页表来提供访客地址到实际硬件物理地址的最低级别转换。在非虚拟化环境中,可以使用由操作系统管理的页表来提供访客地址到实际硬件物理地址的最低级别转换。
从“接收针对访问访客地址的请求”块902,控制然后进行到“查找映射到请求的访客地址的工作负载管理器提供的HPA”块904。在一个实施例中,HPA由处理器在用于主机工作负载管理器/VMM的页表中找到或由在处理器的页面未命令处理程序中在用于主机工作负载管理器/VMM的扩展页表中找到。在一个实施例中,处理器(页面未命中处理程序/PMH)“遍历”页表以将所请求的访客地址转换为硬件物理地址(HPA),使得可以完成存储器存取(加载/存储/执行)。处理器/PMH在页表/EPT中查找所请求的访客地址,以找到映射到所请求的访客地址的“工作负载管理器提供的硬件物理地址(HPA)”。术语“工作负载管理器提供的硬件物理地址”用于指示硬件物理地址由主机工作负载管理器或VMM提供,并且因此不受访客工作负载/访客VM的信任。如果受损的VMM试图修改访客工作负载/访客VM的控制流,则受损的VMM可以修改提供给访客工作负载/访客VM的硬件物理地址以用于所请求的访客地址。因此,在下一步中验证工作负载管理器提供的硬件物理地址。
在一个实施例中,在找到工作负载管理器提供的硬件物理地址之后,访客工作负载可以将从所请求的访客地址到工作负载管理器提供的HPA的存储器映射存储在存储器所有权表中。此外,为了保留存储器映射以供将来使用,可以将所请求的访客地址存储为工作负载管理器提供的HPA的预期访客地址。存储预期的访客地址使处理器能够将请求的访客地址与请求访问的访客工作负载/访客VM的MOT中的预期访客地址进行比较。从“查找映射到请求的访客地址的工作负载管理器提供的HPA”块904,控制然后进行到“验证工作负载管理器提供的HPA”块906。
在“验证工作负载管理器提供的HPA”块906处,验证针对所请求的访客地址找到的硬件物理地址。在一个实施例中,使用上述存储器所有权表来验证HPA。在“读取用于WM提供的HPA映射的MOT条目和确定解密密钥”块908,对在页表中找到的与转换后的工作负载管理器提供的HPA相对应的加密的MOT条目进行解密。例如,MOT是存储器中的表,并且MOT条目基于正被访问的页面的HPA被索引(例如,页面HPA 0是MOT表中的索引0,或者第一个条目,而页面HPA 1是MOT表中的索引1,第二个条目,等等)。
在一个实施例中,使用存储在HPA的最高物理位中的密钥域标识符(KD_ID)来确定解密密钥;一旦密钥域标识符(KD_ID)已知,就可以识别密钥域密钥并将其提供给存储器加密引擎,该存储器加密引擎可以解密存储在存储器所有权表(MOT)中的数据。存储器加密引擎还可以使用MOT条目的硬件物理地址作为调整。如果MOT条目未加载到正确的工作负载管理器提供的硬件物理地址中,则MOT条目将无法正确解密。这些实施例可能不需要将预期的硬件物理地址冗余地存储在与该HPA相对应的MOT条目中。
从“读取用于WM提供的HPA映射的MOT条目并确定解密密钥”块908,控制然后进行到“WM提供的HPA匹配用于请求的访客地址的MOT预期的HPA以及MOT预期的访客地址匹配请求的访客地址吗?”决策点910。如果转换后的工作负载管理器提供的HPA与MOT条目的预期HPA字段(图10的1004)不匹配和/或所请求的访客地址与MOT条目的预期访客地址字段(图10的1006)不匹配,控制进行到“执行错误处理/VMExit”块912。在“执行错误处理/VMExit”块912,可以执行错误处理并且可以使访客工作负载/访客VM退出。
在“WM提供的HPA匹配用于请求的访客地址的MOT预期的HPA以及MOT预期的访客地址匹配请求的访客地址吗?”决策点910,工作负载管理器提供的HPA和在页表的处理器/PMH遍历中找到的访客地址需要与预期HPA和解密的MOT条目中的预期访客地址匹配。如果工作负载管理器提供的HPA与MOT预期的HPA(图10的1004)匹配并且MOT条目预期的访客地址字段(图10的1006)与在页面遍历期间找到的实际转换后的访客地址匹配,控制进行到“使用解密密钥访问找到的HPA处的数据”块914。
在“使用解密密钥访问工作负载管理器提供的HPA处的数据”块914处,访问访客VM请求的数据。解密密钥是在块908识别的密钥域密钥。
参考图10,示出了存储器所有权表1000的示例。列1002包含行索引并以虚线示出,因为行索引在此仅用于说明目的;行索引不存储为存储器所有权表的一部分。在一个实施例中,例如图6A和图6B中描述的实施例,分配给访客VM的原始工作负载管理器提供的硬件物理地址被用作该表的索引。先前参考图4和5描述了对访客VM的硬件物理地址的分配。虽然该实施例使用由硬件物理地址/HPA索引的存储器所有权表,但是其他实施例可以使用任何形式的可搜索结构,例如列表、树、哈希表、图形等,以找到给定的转换后的硬件物理地址的访客地址。
列1004包含预期的主机物理地址,而列1006包含预期的访客地址。访客工作负载/访客VM使用这些列来在最初创建访客工作负载/访客VM时保留主机工作负载管理器提供的原始映射,如参考图6A和图8所述的。
列1008包含存储在访客地址处的页面的状态;而列1010包含数据值“0000”。列1010可以用作质量保证机制,以确保已经使用正确的密钥来解密MOT条目。如果使用不正确的解密密钥来解密列1010,则所得数据将具有除“0000”之外的值,因为使用错误的密钥将导致MOT条目的字段1004、1006、1008和1010被解密为随机(损坏)值,不太可能是0000的特定值,因此指示错误。
关于列1008,状态字段被示为具有“大”、“活动”、“共享”和“无效”的值。“共享”值指示消费者/访客VM希望页面被共享。当处理器解释这样的“共享”MOT条目时,处理器将在该页面的物理存储器地址中使用VMM的KD_ID(或以其他方式指示无密钥),使得不加密相关联的存储器页面的存储器内容(或将使用VMM和特定访客VM共享的公共密钥进行加密)。VM的存储器页面可以选择性地与VMM共享/暴露给VMM,从而允许访客VM和主机VMM之间的通信。
列1008中的状态字段可以包含“大”值或“巨大”值。普通(基本)页面大小为4KB。处理器支持4MB的大页面和4GB的巨大页面。存储器所有权表指示预期的页面大小,以确保页面大小(根据页表遍历确定)是预期的,因此VMM不能歪曲页面大小。
注意,阴影行使用密钥K1加密和解密,并且对应于一个访客工作负载/访客虚拟机。使用密钥K2对非阴影行进行加密和解密,并且非阴影行对应于另一个访客工作负载/访客虚拟机。整个MOT表可以具有属于任意数量的单独密钥域/VM的任意数量的条目,其中每个MOT条目用相应的密钥域密钥进行加密。
列1012以虚线示出,因为不需要将用于MOT条目的存储器加密密钥/密钥域密钥存储为存储器所有权表的一部分。识别用于MOT条目的密钥域密钥并将其用于加密和解密MOT表1000中的条目。在一个实施例中,密钥域标识符存在于处理器用于访问MOT条目的硬件物理地址的最高物理地址位中,并且密钥域标识符可用于确定用于加密(在存储器写入时)或解密(在存储器读取时)MOT条目的密钥域密钥。
在该示例中,对于图10的存储器所有权表1000,VMM提供扩展页表,其将预期的HPA0、2、4、6中的相应一个映射到访客地址7、5、3、1,而将预期的HPA 1、3、5、7中的相应一个映射到访客地址9、11、13、15。处理器可以使用存储器所有权表1000来确定转换后的工作负载管理器提供的HPA与预期HPA不匹配并且VMM可能会受到损害。例如,如果VMM提供将HPA 1、3、5、7中的相应一个映射到除9、11、13、15之外的访客地址的页表,则处理器还可以使用存储器所有权表1000来确定转换后的工作负载管理器提供的HPA与预期的HPA不匹配,并且VMM可能会受到损害。
在一些实施例中,存储器所有权表可以包含指示物理存储器页面是否包含VMCS的字段。通过这种方式,消费者/VM可以使用MOT条目来识别包含VMCS结构的消费者/VM的加密映像的部分。VMCS字段可用于防止恶意VMM尝试将虚假VMCS注入VM(例如,通过通信信道)并尝试将虚假VMCS加载为VM的授权VMCS。当处理器执行VMPTRLD指令时,处理器可以针对EAX寄存器中针对VMPTRLD指定的物理地址HPA来访问MOT表。例如,假设VMCS的HPA与MOT条目的预期HPA匹配,如果VMPTRLD HPA的MOT条目将VMCS字段设置为真(TRUE)(布尔字段),则处理器将继续加载VMCS。如果VMCS字段为假(FALSE),则处理器将退出并向VMM报告错误。当访问MOT条目时,处理器使用指定为VMPTRLD中使用的地址的一部分的KD_ID,使得存储器加密引擎使用与指定的KD_ID相对应的密钥来解密相对应的MOT条目。
可以包含在MOT条目中的另一个附加字段是访客VM的虚拟/线性地址(VA,图10中未示出)。由于处理器PMH可以使用VA来查找访客物理地址并且访客物理地址用于通过遍历页表来查找工作负载管理器提供的HPA,因此MOT条目可能还要求VA匹配在MOT条目中找到的VA。在VM工作负载将其GPA重新指派给不同的VA之后,VA字段可用于防止重放存储器内容。
类似地,预期的CR3处理器寄存器值(未示出)可以是MOT中的字段。CR3处理器寄存器使处理器能够通过定位当前任务/工作负载的页目录和页表来将虚拟/线性地址转换为硬件物理地址。通常,CR3的高20位成为页目录基址寄存器(PDBR),其存储第一页目录条目的硬件物理地址。在MOT中存储预期的CR3处理器寄存器值使处理器/PMH能够检查实际CR3页目录基址寄存器的值是否与存储在相对应的MOT条目中的预期CR3值匹配。本段和前面的段落中描述的MOT的VA和预期CR3字段也可以包含值“任意(ANY)”的值,指示CR3或VA的任何值都是可接受的。访客工作负载可以使用此方法来防止重放属于先前任务/进程的存储器映射,因为针对新任务/进程创建了新的MOT条目。
如消费者/VM所预期的,其他字段可以验证EPT结构中的许可和/或EPT结构中的存储器类型与MOT条目中的预期许可和存储器类型匹配。访客工作负载要求处理器与访客工作负载预期值进行比较并且验证的任何其他处理器状态/信息可以作为附加字段包括在MOT条目中。
示例
以下实施例涉及其他实施例。
在示例1中,一种用于在公共云服务提供商环境中保护访客工作负载的装置包括:处理器;以及耦合到所述处理器的存储器;其中,所述处理器用于执行不受信工作负载管理器以管理至少一个访客工作负载的执行;不受信工作负载管理器用于(i)针对所述至少一个访客工作负载的访客工作负载分配存储器的区域,以及(ii)将所述存储器的区域的相应存储器位置相关联的相应原始硬件物理地址指派给访客工作负载提供的相应原始访客地址;所述访客工作负载用于存储从分配给访客工作负载的存储器的区域的每个相应原始访客地址到所述访客工作负载的相应原始硬件物理地址的相应映射。响应于从访客工作负载接收用于使用所请求的访客地址访问存储器的请求,处理器还用于:(i)从不受信工作负载管理器获得转换后的工作负载管理器提供的硬件物理地址以对应于请求的访客地址;(ii)确定针对转换后的工作负载管理器提供的硬件物理地址是否存在存储的映射;(iii)响应于找到存储的映射,确定来自存储的映射的存储的预期访客地址是否与所请求的访客地址匹配;(iv)如果来自存储的映射的存储的预期访客地址与请求的访客地址匹配,则使访客工作负载能够访问转换后的工作负载管理器提供的硬件物理地址的内容。
在示例2中,示例1的处理器还用于:确定来自存储的映射的存储的预期硬件物理地址是否与转换后的工作负载管理器提供的硬件物理地址匹配,其中使访客工作负载能够访问转换后的工作负载管理器提供的硬件物理地址的内容包括如果来自存储的映射的存储的预期访客地址与所请求的访客地址匹配并且来自存储的映射的存储的预期硬件物理地址与转换后的工作负载管理器提供的硬件物理地址匹配,则启用所述访客工作负载。
在示例3中,示例1和2的访客工作负载还用于:(i)使由所述访客工作负载写入到所述存储器的区域的每个相应存储器位置的内容用针对访客工作负载的消费者提供的密钥进行加密;以及(ii)使得针对访客工作负载的每个相应映射利用消费者提供的密钥进行加密。
在示例4中,示例1-3的访客工作负载使得针对访客工作负载的映射利用消费者提供的密钥进行加密将映射的相应原始访客地址绑定到所述映射的相应原始硬件物理地址。
在示例5中,示例1-3的访客工作负载使得由访客工作负载写入的内容利用消费者提供的密钥进行加密进一步将映射的相应原始访客地址绑定到映射的相应原始硬件物理地址的加密内容。
在示例6中,示例1-5的访客工作负载还用于将每个相应的映射存储为存储器所有权表中的相应条目。
在示例7中,示例1-6的访客工作负载还用于将从所述访客工作负载的相应原始访客地址到所述访客工作负载的相应原始虚拟地址的虚拟映射存储在所述存储器所有权表中,并且,示例1-6的处理器响应于来自访客工作负载的用于访问存储在相应原始访客地址的数据的请求,还用于:(i)识别与相应原始访客地址相对应的存储器所有权表中的条目;并且(ii)在访问存储在相应原始访客地址的数据之前,验证来自存储器所有权表中的条目的预期原始虚拟地址与相应的原始虚拟地址匹配。
在示例8中,示例1-7的访客工作负载还用于存储所述访客工作负载的预期寄存器值,以使所述处理器能够定位针对访客工作负载的页目录和页表;并且示例1-7的处理器用于在访问针对所述访客工作负载的所述页目录和页表之前验证工作负载管理器提供的寄存器值是否与所述访客工作负载的预期寄存器值匹配。
在示例9中,示例1-8的访客工作负载还用于:(i)存储从原始控制结构硬件物理地址到所述访客工作负载的预期控制结构硬件物理地址的控制结构映射;并且(ii)与控制结构映射一起存储控制结构指示符,其中如果原始控制结构硬件物理地址的内容包含针对访客工作负载的控制结构,则控制结构指示符被设置为TRUE;并且示例1-8的处理器还用于在从工作负载管理器提供的工作负载控制结构硬件物理地址加载针对访客工作负载的控制结构之前验证访客工作负载的工作负载管理器提供的控制结构硬件物理地址与访客工作负载的预期控制结构硬件物理地址匹配,并且所述控制结构指示符为TRUE。
在示例10中,示例1-9的访客工作负载还用于存储特定原始硬件物理地址的预期内容验证值,其中通过对特定原始硬件物理地址的内容求散列来确定预期内容验证值;示例1-9的处理器用于在访问存储在特定原始硬件物理地址处的数据之前验证所述预期内容验证值是否与所述特定原始硬件物理地址的内容的散列匹配。
示例10是一种用于在公共云服务提供商环境中保护访客工作负载的计算机实现的方法,其中该方法由处理器执行,并且该方法包括:执行不受信工作负载管理器以管理至少一个访客工作负载的执行;接收来自至少一个访客工作负载的访客工作负载的用于使用所请求的访客地址访问存储器的请求;从所述不受信工作负载管理器获得转换后的工作负载管理器提供的硬件物理地址以对应于所请求的访客地址;确定针对所述转换后的工作负载管理器提供的硬件物理地址是否存在存储的映射;响应于找到所述存储的映射,确定所述来自存储的映射的存储的预期访客地址是否与所请求的访客地址匹配;以及如果所述来自存储的映射的存储的预期访客地址与所述请求的访客地址匹配,则使访客工作负载能够访问转换后的工作负载管理器提供的硬件物理地址的内容。
在示例12中,如权利要求11所述的计算机实现的方法,还包括:确定来自存储的映射的存储的预期硬件物理地址是否与转换后的工作负载管理器提供的硬件物理地址匹配,其中使访客工作负载能够访问转换后的工作负载管理器提供的硬件物理地址的内容包括如果所述来自存储的映射的存储的预期访客地址与所请求的访客地址匹配并且所述来自存储的映射的存储的预期硬件物理地址与转换后的工作负载管理器提供的硬件物理地址匹配,则启用所述访客工作负载。
在示例13中,示例11-12的计算机实现的方法还包括识别存储器所有权表中的条目,该条目包括从访客工作负载的相应原始访客地址到访客工作负载的相应原始虚拟地址的虚拟映射;在访问存储在相应原始访客地址处的数据之前,验证来自存储器所有权表中的条目的预期原始访客虚拟地址与来自条目的相应原始虚拟地址匹配。
在示例14中,示例11-13的计算机实现的方法还包括:识别所述访客工作负载的存储的预期寄存器值,以定位针对所述访客工作负载的页目录和页表;以及在访客针对工作负载的访问页目录和页表之前,验证工作负载管理器提供的寄存器值与访客工作负载的存储的预期寄存器值匹配。
在示例15中,示例11-14的计算机实现的方法还包括:识别(i)从原始控制结构硬件物理地址到访客工作负载的预期控制结构硬件物理地址的存储的控制结构映射和(ii)与所述控制结构映射相关联的存储的控制结构指示符,其中如果原始控制结构硬件物理地址的内容包含针对访客工作负载的控制结构,则所述控制结构指示符设置为TRUE;以及在从工作负载管理器提供的控制结构硬件物理地址加载所述针对访客工作负载的控制结构之前验证访客工作负载的工作负载管理器提供的控制结构硬件物理地址与访客工作负载的预期控制结构硬件物理地址匹配,并且所述控制结构指示符为TRUE。
在示例16中,示例11-15的计算机实现的方法还包括:识别特定原始硬件物理地址的预期内容验证值;在访问存储在所述特定原始硬件物理地址处的数据之前,验证预期内容验证值与所述特定原始硬件物理地址的内容的散列匹配。
在示例17中,至少一个计算机可读介质包括指令,所述指令当由处理器执行时,使得机器执行如示例11-16所述的方法。
在示例18中,一种用于在公共云服务提供商环境中保护访客工作负载的装置包括:用于执行不受信工作负载管理器以管理至少一个访客工作负载的执行的单元;用于从所述至少一个访客工作负载的访客工作负载接收用于使用所请求的访客地址访问存储器的请求的单元;用于从所述不受信工作负载管理器获得转换后的工作负载管理器提供的硬件物理地址以对应于所请求的访客地址的单元;用于确定针对转换后的工作负载管理器提供的硬件物理地址是否存在存储的映射的单元;用于响应于找到所存储的映射而确定来自存储的映射的存储的预期访客地址是否与所请求的访客地址匹配的单元;以及用于如果所述来自存储的映射的存储的预期访客地址与所请求的访客地址匹配则使所述访客工作负载能够访问转换后的工作负载管理器提供的硬件物理地址的内容的单元。
在示例19中,示例18的装置还包括:用于确定所述来自存储的映射的存储的预期硬件物理地址是否与转换后的工作负载管理器提供的硬件物理地址匹配的单元,其中用于使访客工作负载能够访问所转换后的工作负载管理器提供的硬件物理地址的内容的装置包括用于如果来自存储的映射的存储的预期访客地址与所请求的访客地址匹配并且来自存储的映射的存储的预期硬件物理地址与转换后的工作负载管理器提供的硬件物理地址匹配则启用所述访客工作负载的单元。
在示例20中,示例18-19的装置还包括:用于识别存储器所有权表中的条目的单元,所述条目包括从访客工作负载的相应原始访客地址到所述访客工作负载的相应原始虚拟地址的虚拟映射;以及用于在访问存储在相应原始访客地址处的数据之前验证来自存储器所有权表中的条目的预期原始访客虚拟地址与来自所述条目的相应原始虚拟地址匹配的单元。
在示例21中,示例18-20的装置还包括:用于识别访客工作负载的存储的预期寄存器值以便定位针对所述访客工作负载的页目录和页表的单元;以及用于在访问针对访客工作负载的页目录和页表之前验证工作负载管理器提供的寄存器值是否与访客工作负载的存储的预期寄存器值匹配的单元。
在示例22中,示例18-21的装置还包括:用于识别从原始控制结构硬件物理地址到所述访客工作负载的预期控制结构硬件物理地址的存储的控制结构映射的单元;用于识别与控制结构映射相关联的存储的控制结构指示符的单元,其中如果原始控制结构硬件物理地址的内容包含针对访客工作负载的控制结构,则控制结构指示符被设置为TRUE;以及用于在从工作负载管理器提供的控制结构硬件物理地址加载针对访客工作负载的控制结构之前验证访客工作负载的工作负载管理器提供的控制结构硬件物理地址是否与访客工作负载的预期控制结构硬件物理地址匹配以及所述控制结构指示符为TRUE的单元。
在示例23中,示例18-22的装置还包括:用于识别特定原始硬件物理地址的预期内容验证值的单元;以及用于在访问存储在特定原始硬件物理地址处的数据之前验证所述预期内容验证值与所述特定原始硬件物理地址的内容的散列匹配的单元。
在示例24中,至少一个计算机可读介质包括指令,所述指令当由处理器执行时,使得机器执行如示例11-16所述的方法。
在示例25中,一种用于在公共云服务提供商环境中保护访客工作负载的计算机实现的方法由处理器执行,并且包括:由处理器执行由不受信工作负载管理器管理的多个访客工作负载中的访客工作负载;由访客工作负载从不受信工作负载管理器接收对存储器的区域的分配;由访客工作负载提供存储器的区域的相应存储器位置的相应原始访客地址;由访客工作负载接收指派给相应原始访客地址的相应原始硬件物理地址;由访客工作负载存储从相应的原始访客地址到相应的原始硬件物理地址的相应映射。
在示例26中,示例25的计算机实现的方法还包括:由访客工作负载将由访客工作负载写入存储器的区域的每个相应存储器位置的内容用针对访客工作负载的消费者提供的密钥进行加密;并且通过访客工作负载使访客工作负载的每个相应映射用消费者提供的密钥进行加密。
在示例27中,在示例25-26的计算机实现的方法中,使访客工作负载的映射用消费者提供的密钥进行加密将映射的相应原始访客地址绑定到映射的相应的原始硬件物理地址。
在示例28中,在示例25-27的计算机实现的方法中,使得由访客工作负载写入的内容用消费者提供的密钥进一步加密进一步将映射的相应原始访客地址绑定到映射的相应原始硬件物理地址的已加密内容。
在示例29中,示例25-28的计算机实现的方法还包括由访客工作负载将每个相应的映射存储为存储器所有权表中的相应条目。
在示例30中,示例25-29的计算机实现的方法还包括由访客工作负载将从访客工作负载的相应原始访客地址到访客工作负载的相应原始虚拟地址的虚拟映射存储在存储器所有权表;响应于来自访客工作负载的用于访问存储在相应原始访客地址的数据的请求,由处理器识别存储器所有权表中的对应于相应原始访客地址的条目;并且,在访问存储在相应原始访客地址处的数据之前,由处理器验证来自存储器所有权表中的条目的预期原始虚拟地址与相应的原始虚拟地址匹配。
在示例31中,示例25-30的计算机实现的方法还包括由访客工作负载存储访客工作负载的预期寄存器值,以使处理器能够定位针对访客工作负载的页目录和页表;并且,在访问针对访客工作负载的页目录和页表之前,由处理器验证工作负载管理器提供的寄存器值与访客工作负载的预期寄存器值匹配。
在示例32中,示例25-31的计算机实现的方法还包括由访客工作负载存储从原始控制结构硬件物理地址到访客工作负载的预期控制结构硬件物理地址的控制结构映射;由所述访客工作负载与控制结构映射一起存储控制结构指示符,其中,如果原始控制结构硬件物理地址的内容包含针对访客工作负载的控制结构,则控制结构指示符设置为真(TRUE);并且在从工作负载管理器提供的控制结构硬件物理地址加载针对访客工作负载的控制结构之前由处理器验证访客工作负载的工作负载管理器提供的控制结构硬件物理地址与访客工作负载的预期控制结构硬件物理地址匹配,并且所述控制结构指示符为真(TRUE)。
在示例33中,示例25-32的计算机实现的方法还包括由访客工作负载存储特定原始硬件物理地址的预期内容验证值,其中通过对特定的原始硬件物理地址的内容求散列来确定预期内容验证值;并且,在访问存储在特定原始硬件物理地址处的数据之前,由处理器验证预期内容验证值与特定原始硬件物理地址的内容的散列匹配。
注意,可以使用各种手段来实现示例1-33的处理器。
在示例34中,示例1-33的处理器被实现为虚拟处理器。
在示例35中,示例1-33的处理器包括并入用户设备触摸使能设备中的片上系统(SoC)。
在示例36,示例1-33的处理器中,一种系统包括显示器和存储器,并且包括个上述示例中的一个或多的处理器。
在示例37中,包括数据的计算机可读介质将由至少一个机器用于制造至少一个集成电路以执行上述示例中的任一个的方法。
在实施例38中,一种装置包括用于进行上述示例中任一个的方法的单元。
应理解的是,上述实施例的各种组合是可能的。
注意,术语“电路”和“电路系统”在本文中可互换使用。如这里所使用的,这些术语和术语“逻辑”用于单独或以任何组合指代模拟电路系统、数字电路系统、硬连线电路系统、可编程电路系统、处理器电路系统、微控制器电路系统、硬件逻辑电路系统、状态机电路系统和/或任何其他类型的物理硬件组件。实施例可以用在许多不同类型的系统中。例如,在一个实施例中,通信设备可以被布置为执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,并且相反,其他实施例可以涉及用于处理指令的其他类型的装置,或者包括指令的一个或多个机器可读介质,所述指令响应于在计算设备上执行而使设备执行本文描述的方法和技术中的一种或多种。
实施例可以以代码实现,并且可以存储在其上存储有指令的非暂时性存储介质上,该指令可以用于对系统进行编程以执行指令。实施例还可以以数据实现,并且可以存储在非暂时性存储介质上,如果由至少一个机器使用,则使至少一个机器制造至少一个集成电路以执行一个或多个操作。更进一步的实施例可以在计算机可读存储介质中实现,该计算机可读存储介质包括当制造成SoC或其他处理器时将配置SoC或其他处理器以执行一个或多个操作的信息。存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、固态驱动器(SSD)、光盘只读存储器(CD-ROM)、光盘可重写盘(CD-RW)和磁光盘,诸如只读存储器(ROM)的半导体器件,诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)的随机存取存储器(RAM),可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡或适用于存储电子指令的任何其他类型的介质。
虽然已经关于有限数量的实施例描述了本发明,但是本领域技术人员将从中意识到许多修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围内的所有这些修改和变化。

Claims (23)

1.一种用于在公共云服务提供商环境中保护访客工作负载的装置,所述装置包括:
处理器;以及
耦合到所述处理器的存储器;其中,
所述处理器用于执行不受信工作负载管理器以管理至少一个访客工作负载的执行;
所述不受信工作负载管理器用于(i)针对所述至少一个访客工作负载的访客工作负载分配所述存储器的区域,以及(ii)将与所述存储器的区域的相应存储器位置相关联的相应原始硬件物理地址指派给由所述访客工作负载提供的相应原始访客地址;
所述访客工作负载用于存储从分配给所述访客工作负载的所述存储器的区域的每个相应原始访客地址到所述访客工作负载的相应原始硬件物理地址的相应映射;
响应于从所述访客工作负载接收用于使用请求的访客地址来访问所述存储器的请求,所述处理器还用于:(i)从所述不受信工作负载管理器获得转换后的工作负载管理器提供的硬件物理地址以对应于所述请求的访客地址;(ii)确定针对所述转换后的工作负载管理器提供的硬件物理地址是否存在存储的映射;(iii)响应于找到所述存储的映射,确定来自所述存储的映射的存储的预期访客地址是否与所述请求的访客地址匹配;以及(iv)如果来自所述存储的映射的所述存储的预期访客地址与所述请求的访客地址匹配,则使所述访客工作负载能够访问所述转换后的工作负载管理器提供的硬件物理地址的内容。
2.如权利要求1所述的装置,其中,
所述处理器还用于:
确定来自所述存储的映射的存储的预期硬件物理地址是否与所述转换后的工作负载管理器提供的硬件物理地址匹配,其中,
使所述访客工作负载能够访问所述转换后的工作负载管理器提供的硬件物理地址的内容包括如果来自所述存储的映射的所述存储的预期访客地址与所述请求的访客地址匹配并且来自所述存储的映射的所述存储的预期硬件物理地址与所述转换后的工作负载管理器提供的硬件物理地址匹配,则启用所述访客工作负载。
3.如权利要求1所述的装置,其中,
所述访客工作负载还用于:
(i)使由所述访客工作负载写入所述存储器的区域的每个相应存储器位置的内容被用针对所述访客工作负载的消费者提供的密钥进行加密;以及
(ii)使得针对所述访客工作负载的每个相应映射被用所述消费者提供的密钥进行加密。
4.如权利要求3所述的装置,其中,
使得针对所述访客工作负载的映射被用所述消费者提供的密钥进行加密将所述映射的相应原始访客地址绑定到所述映射的相应原始硬件物理地址。
5.如权利要求3所述的装置,其中,
使得由所述访客工作负载写入的所述内容被用所述消费者提供的密钥进行加密还将所述映射的相应原始访客地址绑定到所述映射的相应原始硬件物理地址的加密内容。
6.如权利要求1所述的装置,其中,
所述访客工作负载还用于将每个相应的映射存储为存储器所有权表中的相应条目。
7.如权利要求6所述的装置,其中,
所述访客工作负载还用于将从所述访客工作负载的相应原始访客地址到所述访客工作负载的相应原始虚拟地址的虚拟映射存储在所述存储器所有权表中;
所述处理器响应于来自所述访客工作负载的用于访问存储在所述相应原始访客地址处的数据的请求,还用于:(i)识别所述存储器所有权表中的与所述相应原始访客地址相对应的条目;以及(ii)在访问存储在所述相应原始访客地址处的数据之前,验证来自所述存储器所有权表中的所述条目的预期原始虚拟地址与所述相应的原始虚拟地址匹配。
8.如权利要求1所述的装置,其中,
所述访客工作负载还用于存储所述访客工作负载的预期寄存器值,以使所述处理器能够定位针对所述访客工作负载的页目录和页表;以及
所述处理器用于在访问针对所述访客工作负载的所述页目录和所述页表之前验证工作负载管理器提供的寄存器值与所述访客工作负载的所述预期寄存器值匹配。
9.如权利要求1所述的装置,其中,
所述访客工作负载还用于:(i)存储从原始控制结构硬件物理地址到所述访客工作负载的预期控制结构硬件物理地址的控制结构映射;以及(ii)与所述控制结构映射一起存储控制结构指示符,其中,如果所述原始控制结构硬件物理地址的内容包含针对所述访客工作负载的控制结构,则所述控制结构指示符被设置为真;以及
所述处理器还用于在从所述访客工作负载的工作负载管理器提供的控制结构硬件物理地址加载针对所述访客工作负载的所述控制结构之前验证所述工作负载管理器提供的控制结构硬件物理地址与所述访客工作负载的所述预期控制结构硬件物理地址匹配,并且所述控制结构指示符为真。
10.如权利要求1所述的装置,其中,
所述访客工作负载还用于存储特定原始硬件物理地址的预期内容验证值,其中,所述预期内容验证值是通过对所述特定原始硬件物理地址的内容进行散列来确定的;
所述处理器用于在访问存储在所述特定原始硬件物理地址处的数据之前验证所述预期内容验证值与所述特定原始硬件物理地址的内容的散列匹配。
11.一种用于在公共云服务提供商环境中保护访客工作负载的计算机实现的方法,其中,所述方法由处理器执行,并且所述方法包括:
执行不受信工作负载管理器以管理至少一个访客工作负载的执行;
接收来自所述至少一个访客工作负载的访客工作负载的用于使用请求的访客地址来访问存储器的请求;
从所述不受信工作负载管理器获得转换后的工作负载管理器提供的硬件物理地址以对应于所述请求的访客地址;
确定针对所述转换后的工作负载管理器提供的硬件物理地址是否存在存储的映射;
响应于找到所述存储的映射,确定来自所述存储的映射的存储的预期访客地址是否与所述请求的访客地址匹配;以及
如果来自所述存储的映射的所述存储的预期访客地址与所述请求的访客地址匹配,则使所述访客工作负载能够访问所述转换后的工作负载管理器提供的硬件物理地址的内容。
12.如权利要求11所述的计算机实现的方法,还包括:
确定来自所述存储的映射的存储的预期硬件物理地址是否与所述转换后的工作负载管理器提供的硬件物理地址匹配,其中,
使所述访客工作负载能够访问所述转换后的工作负载管理器提供的硬件物理地址的内容包括如果来自所述存储的映射的所述存储的预期访客地址与所述请求的访客地址匹配并且来自所述存储的映射的所述存储的预期硬件物理地址与所述转换后的工作负载管理器提供的硬件物理地址匹配,则启用所述访客工作负载。
13.如权利要求11所述的计算机实现的方法,还包括:
识别存储器所有权表中的条目,所述条目包括从所述访客工作负载的相应原始访客地址到所述访客工作负载的相应原始虚拟地址的虚拟映射;
在访问存储在所述相应原始访客地址处的数据之前,验证来自所述存储器所有权表中的所述条目的预期原始访客虚拟地址与来自所述条目的所述相应原始虚拟地址匹配。
14.如权利要求11所述的计算机实现的方法,还包括:
识别所述访客工作负载的存储的预期寄存器值,以定位针对所述访客工作负载的页目录和页表;以及
在访问针对所述访客工作负载的所述页目录和所述页表之前,验证工作负载管理器提供的寄存器值与所述访客工作负载的所述存储的预期寄存器值匹配。
15.如权利要求11所述的计算机实现的方法,还包括:
识别(i)从原始控制结构硬件物理地址到所述访客工作负载的预期控制结构硬件物理地址的存储的控制结构映射和(ii)与所述控制结构映射相关联的存储的控制结构指示符,其中,如果所述原始控制结构硬件物理地址的内容包含针对所述访客工作负载的控制结构,则所述控制结构指示符被设置为真;以及
在从所述访客工作负载的工作负载管理器提供的控制结构硬件物理地址加载针对所述访客工作负载的所述控制结构之前,验证所述工作负载管理器提供的控制结构硬件物理地址与所述访客工作负载的预期控制结构硬件物理地址匹配,并且所述控制结构指示符为真。
16.如权利要求11所述的计算机实现的方法,还包括:
识别特定原始硬件物理地址的预期内容验证值;
在访问存储在所述特定原始硬件物理地址处的数据之前,验证所述预期内容验证值与所述特定原始硬件物理地址的内容的散列匹配。
17.至少一种包括指令的计算机可读介质,所述指令当由处理器执行时,使机器执行如权利要求11-16所述的方法。
18.一种用于在公共云服务提供商环境中保护访客工作负载的计算机实现的装置,所述装置包括:
用于执行不受信工作负载管理器以管理至少一个访客工作负载的执行的单元;
用于从所述至少一个访客工作负载的访客工作负载接收使用请求的访客地址来访问存储器的请求的单元;
用于从所述不受信工作负载管理器获得转换后的工作负载管理器提供的硬件物理地址以对应于所述请求的访客地址的单元;
用于确定针对所述转换后的工作负载管理器提供的硬件物理地址是否存在存储的映射的单元;
用于响应于找到所述存储的映射而确定来自所述存储的映射的存储的预期访客地址是否与所述请求的访客地址匹配的单元;以及
用于如果来自所述存储的映射的所述存储的预期访客地址与所述请求的访客地址匹配则使所述访客工作负载能够访问所述转换后的工作负载管理器提供的硬件物理地址的内容的单元。
19.如权利要求18所述的装置,还包括:
用于确定来自所述存储的映射的存储的预期硬件物理地址是否与所述转换后的工作负载管理器提供的硬件物理地址匹配的单元,其中,
用于使所述访客工作负载能够访问所述转换后的工作负载管理器提供的硬件物理地址的内容的单元包括用于如果来自所述存储的映射的所述存储的预期访客地址与所述请求的访客地址匹配并且来自所述存储的映射的所述存储的预期硬件物理地址与所述转换后的工作负载管理器提供的硬件物理地址匹配则启用所述访客工作负载的单元。
20.如权利要求18所述的装置,还包括:
用于识别存储器所有权表中的条目的单元,所述条目包括从所述访客工作负载的相应原始访客地址到所述访客工作负载的相应原始虚拟地址的虚拟映射;
用于在访问存储在所述相应原始访客地址处的数据之前验证来自所述存储器所有权表中的所述条目的预期原始访客虚拟地址与来自所述条目的所述相应原始虚拟地址匹配的单元。
21.如权利要求18所述的装置,还包括:
用于识别所述访客工作负载的存储的预期寄存器值以定位针对所述访客工作负载的页目录和页表的单元;以及
用于在访问针对所述访客工作负载的所述页目录和所述页表之前验证工作负载管理器提供的寄存器值与所述访客工作负载的所述存储的预期寄存器值匹配的单元。
22.如权利要求18所述的装置,还包括:
用于识别从原始控制结构硬件物理地址到所述访客工作负载的预期控制结构硬件物理地址的存储的控制结构映射的单元;
用于识别与所述控制结构映射相关联的存储的控制结构指示符的单元,其中,如果所述原始控制结构硬件物理地址的内容包含针对所述访客工作负载的控制结构,则所述控制结构指示符被设置为真;以及
用于在从所述访客工作负载的工作负载管理器提供的控制结构硬件物理地址加载针对所述访客工作负载的所述控制结构之前验证所述工作负载管理器提供的控制结构硬件物理地址与所述访客工作负载的所述预期控制结构硬件物理地址匹配以及所述控制结构指示符为真的单元。
23.如权利要求18所述的装置,还包括:
用于识别特定原始硬件物理地址的预期内容验证值的单元;
用于在访问存储在所述特定原始硬件物理地址处的数据之前验证所述预期内容验证值与所述特定原始硬件物理地址的内容的散列匹配的单元。
CN201811176656.3A 2017-11-10 2018-10-10 用于安全公共云的密码存储器所有权表 Active CN109783188B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/808,986 US10671737B2 (en) 2017-11-10 2017-11-10 Cryptographic memory ownership table for secure public cloud
US15/808,986 2017-11-10

Publications (2)

Publication Number Publication Date
CN109783188A true CN109783188A (zh) 2019-05-21
CN109783188B CN109783188B (zh) 2024-04-09

Family

ID=65230509

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811176656.3A Active CN109783188B (zh) 2017-11-10 2018-10-10 用于安全公共云的密码存储器所有权表

Country Status (4)

Country Link
US (3) US10671737B2 (zh)
JP (2) JP7158985B2 (zh)
CN (1) CN109783188B (zh)
DE (1) DE102018123710A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114124883A (zh) * 2021-10-12 2022-03-01 鸬鹚科技(深圳)有限公司 基于云存储地址的数据访问方法、装置、计算机设备及介质
WO2022100693A1 (zh) * 2020-11-12 2022-05-19 华为技术有限公司 一种地址转换关系的配置方法及计算机系统

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11693792B2 (en) * 2018-01-04 2023-07-04 Google Llc Infernal storage in cloud disk to support encrypted hard drive and other stateful features
US10802983B2 (en) * 2018-05-31 2020-10-13 Vmware, Inc. Programmable block storage addressing using embedded virtual machines
US11106441B2 (en) 2018-09-14 2021-08-31 Microsoft Technology Licensing, Llc Secure device-bound edge workload delivery
US11341281B2 (en) * 2018-09-14 2022-05-24 International Business Machines Corporation Providing differential privacy in an untrusted environment
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
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
US11455398B2 (en) * 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11550903B1 (en) * 2019-04-26 2023-01-10 Joseph Alan Epstein System and method for trustworthiness, reputation, provenance, and measurement of software
US11720384B2 (en) * 2020-06-05 2023-08-08 Nxp B.V. Program code protection in a data processing system
US11700125B2 (en) 2020-10-05 2023-07-11 Redcom Laboratories, Inc. zkMFA: zero-knowledge based multi-factor authentication system
US11782744B2 (en) * 2020-10-08 2023-10-10 Nxp B.V. Data processing system and method for accessing data in the data processing system
CN112817780B (zh) * 2021-02-01 2022-03-11 上海交通大学 一种实现安全与高性能进程间通信的方法和系统
US11829495B2 (en) 2021-08-05 2023-11-28 International Business Machines Corporation Confidential data provided to a secure guest via metadata
US11809607B2 (en) 2021-08-05 2023-11-07 International Business Machines Corporation Customization of multi-part metadata of a secure guest

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069413B1 (en) * 2003-01-29 2006-06-27 Vmware, Inc. Method and system for performing virtual to physical address translations in a virtual machine monitor
CN101093448A (zh) * 2006-06-23 2007-12-26 联想(北京)有限公司 一种虚拟机系统及其硬件设备的切换方法
CN102855450A (zh) * 2011-06-28 2013-01-02 上海网技信息技术有限公司 用于对虚拟计算环境进行隔离保护的方法及系统
CN103597451A (zh) * 2011-03-31 2014-02-19 英特尔公司 用于高可用性的存储器镜像和冗余生成
CN103731353A (zh) * 2013-12-26 2014-04-16 华为技术有限公司 虚拟机的物理地址获取方法
CN104137056A (zh) * 2011-10-28 2014-11-05 英特尔公司 在没有vmm介入的情况下对调用vmm配置的服务的指令集支持
KR101541350B1 (ko) * 2014-03-04 2015-08-05 주식회사 윈스 클라우드 서비스 네트워크에서 트래픽 제어를 통한 클라우드 보안 서비스 제공 방법 및 시스템
US20150378930A1 (en) * 2014-06-27 2015-12-31 Ravi L. Sahita Validating virtual address translation
US20170242811A1 (en) * 2016-02-24 2017-08-24 Red Hat Israel, Ltd. Multi-queue device assignment to virtual machine groups

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080065854A1 (en) * 2006-09-07 2008-03-13 Sebastina Schoenberg Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor
JP2009230596A (ja) 2008-03-25 2009-10-08 Hitachi Ltd サーバ装置のユーザデータ保護方法、サーバ装置及びコンピュータプログラム
US8738932B2 (en) 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US8954959B2 (en) * 2010-09-16 2015-02-10 Red Hat Israel, Ltd. Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU
US9703723B2 (en) 2011-08-29 2017-07-11 International Business Machines Corporation Method and apparatus for performing mapping within a data processing system having virtual machines
US8819455B2 (en) 2012-10-05 2014-08-26 Intel Corporation Parallelized counter tree walk for low overhead memory replay protection
US9355032B2 (en) * 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9286152B2 (en) 2013-06-14 2016-03-15 Microsoft Technology Licensing, Llc Securely obtaining memory content after device malfunction
US9563455B2 (en) 2013-10-28 2017-02-07 Intel Corporation Virtualization exceptions
US9213653B2 (en) 2013-12-05 2015-12-15 Intel Corporation Memory integrity
US9335943B2 (en) 2014-06-30 2016-05-10 Intel Corporation Method and apparatus for fine grain memory protection
US9684605B2 (en) * 2015-02-23 2017-06-20 Intel Corporation Translation lookaside buffer for guest physical addresses in a virtual machine
US9772962B2 (en) * 2015-05-28 2017-09-26 Red Hat Israel, Ltd. Memory sharing for direct memory access by a device assigned to a guest operating system
US9904782B2 (en) * 2015-10-27 2018-02-27 Mcafee, Llc Synchronous execution of designated computing events using hardware-assisted virtualization
US10255196B2 (en) * 2015-12-22 2019-04-09 Intel Corporation Method and apparatus for sub-page write protection
US10169244B2 (en) * 2016-07-29 2019-01-01 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10013199B2 (en) * 2016-11-15 2018-07-03 Red Hat Israel, Ltd. Translation bypass by host IOMMU for systems with virtual IOMMU

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069413B1 (en) * 2003-01-29 2006-06-27 Vmware, Inc. Method and system for performing virtual to physical address translations in a virtual machine monitor
CN101093448A (zh) * 2006-06-23 2007-12-26 联想(北京)有限公司 一种虚拟机系统及其硬件设备的切换方法
CN103597451A (zh) * 2011-03-31 2014-02-19 英特尔公司 用于高可用性的存储器镜像和冗余生成
CN102855450A (zh) * 2011-06-28 2013-01-02 上海网技信息技术有限公司 用于对虚拟计算环境进行隔离保护的方法及系统
CN104137056A (zh) * 2011-10-28 2014-11-05 英特尔公司 在没有vmm介入的情况下对调用vmm配置的服务的指令集支持
CN103731353A (zh) * 2013-12-26 2014-04-16 华为技术有限公司 虚拟机的物理地址获取方法
KR101541350B1 (ko) * 2014-03-04 2015-08-05 주식회사 윈스 클라우드 서비스 네트워크에서 트래픽 제어를 통한 클라우드 보안 서비스 제공 방법 및 시스템
US20150378930A1 (en) * 2014-06-27 2015-12-31 Ravi L. Sahita Validating virtual address translation
US20170242811A1 (en) * 2016-02-24 2017-08-24 Red Hat Israel, Ltd. Multi-queue device assignment to virtual machine groups

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
XIAOWEN CHEN等: "Reducing Virtual-to-Physical address translation overhead in Distributed Shared Memory based multi-core Network-on-Chips according to data property", 《COMPUTERS & ELECTRICAL ENGINEERING》, vol. 39, no. 2, pages 596 - 612 *
林昆: "基于Intel VT-d技术的虚拟机安全隔离研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 7, pages 138 - 935 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022100693A1 (zh) * 2020-11-12 2022-05-19 华为技术有限公司 一种地址转换关系的配置方法及计算机系统
CN114124883A (zh) * 2021-10-12 2022-03-01 鸬鹚科技(深圳)有限公司 基于云存储地址的数据访问方法、装置、计算机设备及介质
CN114124883B (zh) * 2021-10-12 2023-09-12 鸬鹚科技(深圳)有限公司 基于云存储地址的数据访问方法、装置、计算机设备及介质

Also Published As

Publication number Publication date
JP7428770B2 (ja) 2024-02-06
JP2019091430A (ja) 2019-06-13
CN109783188B (zh) 2024-04-09
DE102018123710A1 (de) 2019-05-16
US11520906B2 (en) 2022-12-06
US11651085B2 (en) 2023-05-16
US20200293668A1 (en) 2020-09-17
JP2023015049A (ja) 2023-01-31
US10671737B2 (en) 2020-06-02
US20190042764A1 (en) 2019-02-07
US20200349266A1 (en) 2020-11-05
JP7158985B2 (ja) 2022-10-24

Similar Documents

Publication Publication Date Title
CN109783188A (zh) 用于安全公共云的密码存储器所有权表
US9784260B2 (en) System and method for processor-based security
US7073059B2 (en) Secure machine platform that interfaces to operating systems and customized control programs
CN108509250A (zh) 具有受保护的访客机验证主机控制的安全公共云
CN106105146B (zh) 在密码证明资源处保护客户端指定凭证
JP4876053B2 (ja) トラステッド・デバイス集積回路
CN109565444A (zh) 安全公共云
CN107735768A (zh) 安全初始化
US20080229117A1 (en) Apparatus for preventing digital piracy
CN107771323A (zh) 共享页
CN107690628A (zh) 具有所有权表的数据处理装置和方法
CN106462438A (zh) 包含受信执行环境的主机的证明
CN107690621A (zh) 受保护的异常处置
KR20120099472A (ko) 보안 애플리케이션 실행을 제공하는 방법 및 장치
CN107690629A (zh) 地址转换
US10545883B2 (en) Verification bit for one-way encrypted memory
CN106911814A (zh) 大规模数据分布式存储方法
CN107147649A (zh) 基于云存储的数据优化调度方法
CN107135223A (zh) 海量数据管理系统的数据持久化方法
CN115335814A (zh) 使用多个物理地址空间的装置和方法
JP7410161B2 (ja) ページ変更検出によるセキュアなページング
US20230185733A1 (en) Data integrity check for granule protection data
JP2023519322A (ja) 装置及び方法
CN115335813A (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