CN108509250B - 具有受保护的访客机验证主机控制的安全公共云 - Google Patents
具有受保护的访客机验证主机控制的安全公共云 Download PDFInfo
- Publication number
- CN108509250B CN108509250B CN201810078039.3A CN201810078039A CN108509250B CN 108509250 B CN108509250 B CN 108509250B CN 201810078039 A CN201810078039 A CN 201810078039A CN 108509250 B CN108509250 B CN 108509250B
- Authority
- CN
- China
- Prior art keywords
- guest
- memory
- key
- domain
- virtual machine
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 1156
- 238000000034 method Methods 0.000 claims description 114
- 230000004044 response Effects 0.000 claims description 91
- 238000003860 storage Methods 0.000 claims description 72
- 230000006870 function Effects 0.000 claims description 61
- 230000008859 change Effects 0.000 claims description 42
- 238000009966 trimming Methods 0.000 claims description 15
- 238000011084 recovery Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 abstract description 20
- 239000003795 chemical substances by application Substances 0.000 description 186
- 238000010586 diagram Methods 0.000 description 56
- 230000009471 action Effects 0.000 description 51
- 230000008569 process Effects 0.000 description 37
- 238000004891 communication Methods 0.000 description 35
- 239000000872 buffer Substances 0.000 description 17
- 238000007726 management method Methods 0.000 description 16
- 230000003068 static effect Effects 0.000 description 16
- 230000001419 dependent effect Effects 0.000 description 15
- 238000013519 translation Methods 0.000 description 15
- 238000012795 verification Methods 0.000 description 15
- 238000004422 calculation algorithm Methods 0.000 description 11
- 230000000977 initiatory effect Effects 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 230000007704 transition Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 238000011010 flushing procedure Methods 0.000 description 8
- 238000005259 measurement Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 230000008439 repair process Effects 0.000 description 8
- 230000001010 compromised effect Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 230000005012 migration Effects 0.000 description 5
- 238000013508 migration Methods 0.000 description 5
- 238000010926 purge Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 101100203322 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SKS1 gene Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000005477 standard model Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/1425—Protection 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 physical, e.g. cell, word, block
- G06F12/1441—Protection 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 physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0822—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2149—Restricted operating environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
在主机虚拟机监视器(VMM)不具有访问访客虚拟机(VM)内数据的能力或者直接访问控制所述访客VM的执行流的控制结构的能力的情况下,所述主机VMM“盲目地”运行。访客VM在甚至所述主机VMM都无法访问的受保护存储器区域(被称为密钥域)内执行。与所述访客VM的执行状态(例如,虚拟机控制结构(VMCS))和存储器映射(例如,扩展页表(EPT))有关的虚拟化数据结构也位于所述受保护存储器区域内并且也是使用所述密钥域密钥来加密的。不拥有其他密钥域的所述密钥域密钥的主机VMM和其他访客VM无法直接修改这些控制结构并且也无法访问所述受保护存储器区域。然而,所述主机VMM可以验证访客VM的控制结构的正确性。
Description
本申请要求于2016年10月14日提交的序列号为15/293,967的美国专利申请的优先权,所述美国专利申请要求于2016年8月11日提交的申请人为大卫达勒姆(DavidDurham)、拉维萨希塔(Ravi Sahita)、巴里亨特利(Barry Huntley)和尼基尔M德什潘德(Nikhil M.Deshpande)的名称为“Secure Public Cloud(安全公共云)”的第62/373,627号美国临时专利申请的优先权,所述申请的公开内容通过引用结合在此。
技术领域
实施例涉及公共云的安全性,并且具体地使得公共云服务的消费者能够确保消费者的在云中执行的进程以及消费者的私有数据被保护免受其他人(包括公共云服务提供商)访问和修改。
背景技术
术语“云计算(cloud computing)”用于描述基于网络的计算(通常在互联网上)。根据***,“云计算根据需要向计算机和其他设备提供共享处理资源和数据。云计算是用于实现对可配置计算资源(例如,网络、服务器、存储设备、应用和服务)的共享池进行的无处不在的按需访问,所述可配置计算资源可以以最小管理努力被快速提供和释放。云计算和存储解决方案向用户和企业提供用于在第三方数据中心中存储和处理其数据的各种能力。云计算依赖于共享资源以便实现相干性和规模经济,类似于网络上的公共设施(像电网)。”(来源:***,https://en.wikipedia.org/wiki/云_计算,2016年8月11日访问,引文省略)。
大容量网络、低成本计算机和存储设备的当前可用性以及对硬件虚拟化、面向服务的架构和自主且实用的计算的广泛采用已经引起云计算的增长。公司可以随着计算需求增大通过从云服务提供商请求附加资源来扩大规模并且然后随着需求减小而再次缩小规模。
云计算将资源作为服务来提供。“云计算提供商根据不同模型来提供其‘服务’,所述模型中的按照国家标准与技术研究所(National Institute of Standards andTechnology,NIST)的三个标准模型是基础设施即服务(Infrastructure as a Service,IaaS)、平台即服务(Platform as a Service,PaaS)以及软件即服务(Software as aService,SaaS)。这些模型提供增强的抽象性;因此它们经常扮演栈中的层,其中,基础设施即栈充当底层;平台即服务充当中间层;并且软件即服务充当顶层。这些层可以彼此独立地实施。例如,可以提供在物理机器(裸金属)上实施的SaaS,而不需要使用下面的PaaS或IaaS层;并且相反地,可以在IaaS上运行程序并且直接对其进行访问,而不需要将其包装为SaaS。”(来源:***,https://en.wikipedia.org/wiki/云_计算,2016年8月11日访问,引文省略)。
“NIST对云计算的定义将服务模型定义如下:
软件即服务(SaaS)。提供给消费者的这种能力是使用在云基础架构上运行的提供商的应用。可以通过如网络浏览器(例如,基于网络的电子邮件)等瘦客户端接口、或程序接口从各种客户端设备访问应用。可能除了有限的特定于用户的应用配置设置之外,消费者并不管理或控制包括网络、服务器、操作***、存储设备、或甚至各个应用能力的底层云基础架构。
平台即服务(PaaS)。提供给消费者的这种能力是向云基础架构上部署消费者创建或获得的应用,这些应用是使用由提供商支持的编程语言、库、服务和工具来创建的。消费者并不管理或控制包括网络、服务器、操作***或存储设备的底层云基础架构,但对部署的应用以及可能应用托管环境的配置设置具有控制权。
基础设施即服务(IaaS)。提供给消费者的这种能力是供应处理、存储设备、网络和其他基本计算资源,其中消费者能够部署并运行可以包括操作***和应用的任意软件。消费者并不管理或控制底层的云基础架构,但是对操作***、存储设备和部署的应用具有控制权,并且对选择联网组件(例如,主机防火墙)可能具有有限的控制权。”(来源:***,https://en.wikipedia.org/wiki/云_计算,2016年8月11日访问,引文省略)。
一种用于云计算的实现技术是虚拟化。“虚拟化软件将物理计算设备分成一个或多个‘虚拟’设备,其中的每一个虚拟设备都可以很容易地使用和管理以便执行计算任务。硬件虚拟化是将计算机虚拟化为完整硬件平台、其元件部分的某些逻辑抽象、或者仅运行各种操作***所需的功能。虚拟化向用户隐藏计算平台的物理特性,替代地呈现另一个抽象计算平台”,通常称为‘虚拟机’。(来源:***,https://en.wikipedia.org/wiki/硬件_虚拟化,2016年8月11日访问,引文省略)。控制虚拟化的软件被称为“管理程序(hypervisor)”或“虚拟机监视器(virtual machine monitor)”。提供并执行管理程序/虚拟机监视器来创建代表消费者的虚拟机是由公共云服务提供商提供的服务的示例。
附图说明
图1是框图,示出了典型虚拟机环境。
图2是框图,示出了根据本发明的一个实施例的虚拟机环境。
图3是根据本发明的一个实施例的云服务环境的框图。
图4是图示,示出了可以用于实施本发明的实施例的装置。
图5是根据本发明的一个实施例的由云服务的消费者执行的方法的流程图。
图6是根据本发明的一个实施例的由云服务提供商执行的方法的流程图。
图7是图示,示出了根据本发明的一个实施例的消费者域镜像的组件。
图8是图示,示出了根据本发明的一个实施例的数据物理地址。
图9是图示,示出了根据本发明的一个实施例的虚拟到物理存储器映射。
图10是图示,示出了根据本发明的一个实施例的另一个虚拟到物理存储器映射。
图11是图示,示出了根据本发明的一个实施例的云服务提供商向消费者提供域镜像的初始步骤。
图12是图示,示出了根据本发明的一个实施例的消费者与云服务提供商之间用于向消费者提供域镜像的消息。
图13是图示,示出了根据本发明的一个实施例的消费者提供经加密域镜像。
图14是图示,示出了根据本发明的一个实施例的云服务环境的组件之间用于对域镜像进行加密并且建立密钥域的消息。
图15是图示,示出了根据本发明的一个实施例的云服务环境的组件之间用于将消费者的经加密域镜像加载到具备密钥域能力的服务器的存储器中的消息。
图16是图示,示出了根据本发明的一个实施例的密钥域的初始化。
图17是根据本发明的一个实施例的在执行创建密钥域操作时对具备密钥域能力的服务器的CPU进行操作的方法。
图18是图示,示出了根据本发明的一个实施例的对域镜像的验证。
图19是图示,示出了根据本发明的一个实施例的云服务环境的组件之间用于验证域镜像的消息。
图20是根据本发明的一个实施例的在执行散列密钥域操作时对具备密钥域能力的服务器的CPU进行操作的方法的流程图。
图21是图示,示出了根据本发明的一个实施例的密钥域之间的切换。
图22是图示,示出了根据本发明的一个实施例的在密钥域内部执行时云服务环境的组件之间的消息。
图23是根据本发明的一个实施例的在执行切换密钥域操作时对具备密钥域能力的服务器的CPU进行操作的方法的流程图。
图24是根据本发明的一个实施例的在响应于页未命中而执行对分页结构的遍历时对具备密钥域能力的服务器的CPU进行操作的方法的流程图。
图25是图示,示出了根据本发明的一个实施例的域镜像的增长。
图26是图示,示出了根据本发明的一个实施例的基于云的环境的组件之间用于增长域管理器(VMMlet)的消息。
图27是图示,示出了根据本发明的一个实施例的云服务提供商环境的组件之间用于使运行域管理器(VMMlet)从存储器管理器处请求更多存储器页的消息。
图28是图示,示出了根据本发明的一个实施例的云服务环境的组件之间示出在单个CPU上调度VM的同时请求附加存储器页的消息。
图29是图示,示出了根据本发明的一个实施例的运行域管理器(VMMlet)。
图30是图示,示出了根据本发明的一个实施例的由域管理器(VMMlet)管理的密钥域以及由另一个域管理器(OSlet)管理的第二密钥域内的多个虚拟机。
图31A是图示,示出了根据本发明的一个实施例从物理存储器地址中确定完整性行位置和时隙。
图31B是图示,示出了存储在数据存储器地址空间中的数据行以及存储在完整性数据地址空间中的完整性值。
图32是图示,示出了可以用于实施本发明的实施例的***。
图33是图示,示出了可以用于实施本发明的实施例的***。
图34是图示,示出了可以用于实施本发明的实施例的***。
图35示出了其中非可信消费者虚拟机在受保护环境中运行的环境,在所述受保护环境中,可以验证由不可信云服务提供商的虚拟机监视器进行的动作。
图36示出了虚拟机监视器(主机VMM)的用于访问在受保护密钥域内运行的访客虚拟机的虚拟机控制结构的数据流。
图37示出了代表虚拟机监视器来起作用的代理对在受保护密钥域内运行的访客虚拟机的虚拟机控制结构进行编辑的过程。
图38示出了用于使访客虚拟机保护其虚拟机控制结构免受被损害虚拟机监视器的修改的中断处理程序驱动程序。
图39示出了图38的中断处理程序驱动程序的操作。
图40示出了在退出虚拟机时保存处理器寄存器状态下的虚拟化异常处理程序/填隙程序的操作。
图41示出了创建密钥域并且将经加密访客代码镜像连同其(多个)经加密控制结构安装在经加密存储器中。
图42示出了用于创建密钥域并且将经加密访客代码镜像连同其(多个)经加密控制结构安装在经加密存储器中的替代性过程。
图43示出了主机VMM验证消费者提供的代理VMCS的过程的一个实施例。
图44是数据流图示,示出了主机VMM请求代理修改针对另一个访客虚拟机的扩展页表的数据流。
图45是流程图,示出了加载访客虚拟机的虚拟机控制结构、验证虚拟机控制结构、启动访客虚拟机、执行访客虚拟机代码镜像并且退出访客虚拟机以便将控制返回至主机虚拟机监视器。
图46示出了更新消费者的访客VM镜像的过程。
图47示出了向消费者的访客VM工作负载添加页的过程。
具体实施方式
在当今已知的虚拟化环境中,主机虚拟机监视器(Virtual Machine Monitor,VMM)/管理程序(其在下文中应被简称为“VMM”或“主机VMM”)对主机VMM管理的访客虚拟机(VM)具有完全控制。主机VMM可以读取/写入访客VM存储器、修改访客VM控制流(单步、倒回、重复、调试)、读取/修改访客VM寄存器状态、读取/修改访客VM控制结构等等。然而,这种对执行访客VM的完全控制造成以下安全风险:主机VMM被损害,并且可能修改访客VM而使得消费者驻留在访客VM内的秘密和数据被暴露。
在典型虚拟化环境中,借助从一个虚拟机切换到另一个虚拟机,关于虚拟机的执行状态的数据结构被VMM修改。这些数据结构可以包括虚拟机控制结构(Virtual MachineControl Structure,VMCS)和存储器映射(例如,页表和扩展页表(EPT))。VMCS是存储器中针对每个访客VM的每个逻辑处理器出现一次的数据结构,而访客VM由主机VMM管理。在多处理器***中,同时执行所述访客VM的每个处理器可以具有唯一VMCS。随着不同VM之间的执行环境的每次改变,还原针对当前执行VM的VMCS,从而限定VM的虚拟处理器的状态。当执行环境从访客VM切换(VMExit)回主机VMM时,使用同一VMCS结构来从VMCS的主机状态区域中还原主机的处理器状态。
访客VM的操作***将使用其自身的页表形成其自身的虚拟物理存储器地址与访客物理存储器地址(GPA)之间的存储器映射。VMM然后使用扩展页表(EPT)将访客物理地址(GPA)映射到由硬件用来访问物理存储器的实际物理地址(PA)。然而,这些VMM控制的存储器映射可以由VMM用来损害访客VM。
本文中呈现的公开内容引入了一种用于操作主机VMM的新模型,在所述新模型中,主机VMM在没有访问访客VM内的数据的能力或者直接访问控制访客VM的执行流的控制结构的能力的情况下“盲目地”运行。访客VM在甚至主机VMM都无法访问的受保护存储器区域内执行。在一个实施例中,受保护存储器区域(访客VM在其中执行)被实施为密钥域,所述密钥域是使用消费者提供的密钥域密钥来加密的。下面参照图1至图30来详细描述密钥域。在另一个实施例中,使用范围寄存器实施受保护存储器区域,其中,指定寄存器阻止主机VMM(和其他软件)访问访客VM的受保护存储器区域。出于本申请的目的,将参照密钥域来描述访客VM的受保护存储器区域,尽管本文中所描述的技术适用于使用使得消费者的访客VM不可由主机VMM访问的其他技术实施的受保护存储器区域。
关于执行状态的虚拟化数据结构(例如,VMCS)以及访客VM的存储器映射也位于受保护存储器区域(密钥域)中。使用密钥域密钥对这些虚拟化数据结构进行加密。不拥有其他密钥域的密钥域密钥的主机VMM和其他访客VM无法直接修改这些控制结构并且也无法访问受保护存储器区域。
为了使主机VMM能够在不直接修改访客VM的控制结构的情况下管理访客VM的执行,引入了另一种类型的访客VM,在本文中被称为“访客代理VM”或简单地“代理”。主机VMM启动代理以便在受保护密钥域(访客VM在其中执行)内操作,从而与访客VM一起工作来保护访客VM免受篡改。在一个实施例中,虚拟化环境实施使代理能够代表主机VMM访问和修改控制其他访客VM的执行流和寄存器状态的控制结构的策略。通过修改其他访客VM的控制结构,代理可以将这种功能执行为将消费者供应的镜像加载到访客VM中并且创建或修改受保护存储器区域(本文中称为密钥域)内的多个访客VM的附加VMCS和EPT。注意,在传统虚拟化环境中由主机VMM提供的功能替代地由代理根据主机VMM的请求来实施,使得代理成为主机VMM的中介
此外,将代理用作主机VMM与访客VM之间的中介允许代理确认VMM没有错误地配置访客VM而泄漏机密数据、注入代码或数据、或者修改访客VM的执行流。另外,本文中所公开的技术实现相互验证,在所述相互验证中,可以向主机VMM保证访客VM无法影响主机VMM状态,同时可以向访客VM保证主机VMM无法访问或影响访客VM状态。
因此,在一个实施例中,还可以将EPT控制结构置于访客VM的不可由主机VMM访问的受保护存储器内。为了防止访客VM通过恶意地修改EPT而破坏主机VMM的安全性,运行中的访客VM应当不能够修改其自身的EPT。可以准许具有另一个VMCS的另一个可信VM修改另一个访客VM的EPT,但是不能够修改其自身的EPT。替代性地,在具有单个访客VM的实施例中,访客VM可以使用其自身的存储器加密密钥(密钥域密钥)来代表主机VMM对存储器结构进行加密。访客VM然后将所产生的密文返回给主机VMM以供在主机VMM的控制下代表访客VM来安装于正确存储器位置中。
使用散列密钥域(HashKD)指令,主机VMM可以验证访客创建的数据结构(如EPT)与主机VMM的期望相匹配,并且不允许访客VM访问主机或其他访客VM的存储器空间。HashKD指令不透露访客VM的存储器内容或秘密,但是产生代表性SHA散列值,所述代表性SHA散列值可以被主机VMM用来在不调用访客VM的情况下验证存储器内容。例如,如果HashKD指令产生与扩展页表(EPT)的期望散列值相匹配的值,则向主机VMM保证存储器由访客VM正确地配置并且可以安全地启动访客VM。
在符合本公开的一种实施方式中,的虚拟化技术(VT)和可信执行技术(TXT)与VMM不能够访问的受保护存储器范围(但是原始地可被TXT访问)或存储器加密技术(如/>的总存储器加密(TME)、具有完整性的TME(TMEi)或存储器加密引擎(MEE))相结合使用。此实施例从访客虚拟机(VM)/工作负载的可信代码基(TCB)中移除公共云服务提供商的虚拟机监视器(VMM)/管理程序代码。这些技术保护消费者的工作负载免受主机VMM访问,但是使得主机VMM能够保持对平台的完全控制并且管理在平台上运行的访客虚拟机。
存储器加密技术保护访客VM工作负载免受物理攻击并且防止主机VMM访问VM的(经加密)存储器。云服务提供商的软件、管理员以及具有对云服务提供商的服务器的物理访问的任何方都不能访问或修改受保护访客VM。
本公开通过保护消费者的数据免受云服务提供商、主机VMM、其他访客VM、管理员或具有物理访问的其他方、政府等访问来防止暴露包含在访客虚拟机内的消费者数据。使用本文中所描述的技术而提供的保护有效地提供与消费者将在私有云中运行同一工作负载所具有的相同机密性和安全性等级。通过使消费者能够验证在云中运行的公共云服务提供商的进程没有损坏消费者的代码和数据,在消费者与公共云服务提供商之间建立相互信任关系。类似地,公共云服务提供商能够验证在云中运行的消费者进程没有损坏公共云服务提供商的代码和数据。
现在参照图1,示出了展示典型虚拟机环境100的组件的框图。示出了在云服务提供商的服务器中提供的虚拟机环境的典型实施方式。在服务器硬件110上运行的是虚拟机监视器(VMM)层120。在所示出的典型虚拟机环境100中,VMM层120是创建并在云服务提供商、服务器硬件110上运行虚拟机(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出现一次的数据结构,而其由VMM管理。随着不同VM之间的执行环境的每次改变,针对当前VM还原VMCS,从而限定VM的虚拟处理器的状态。扩展页表(EPT)用于启动具有如“不受限访客”的特权的VM虚拟处理器。
VMM层120的软件或固件由云服务提供商提供并且是每个VM的可信计算基(TCB)的一部分。根据***,“计算机***的可信计算基(TCB)是所有硬件、固件和/或软件组件的集合,所述硬件、固件和/或软件组件在发生于TCB内部的漏洞或缺陷可能危害整个***的安全性能的意义上对***的安全性是至关重要的。相比而言,计算基***的位于TCB外部的各部分必须不能够以将泄漏任何比授予其的特权更多的特权的方式而行为不当。现代操作***力图减小TCB的大小,从而使得对其代码基的穷尽检查(借助于手动或计算机辅助的软件审计或程序验证)变得可行。”(参见***,https://en.wikipedia.org/wiki/Tmsted_计算_基,2016年8月9日访问)。
在图1的正常虚拟机环境100中,由云服务提供商提供的VMM 122在VM(VM1 1301、VM2 1302和VM3 1303)中的每一个的TCB中。将VMM 122包含在TCB中阻止特定VM(如VM11301)查看、测量或信任控制所述特定VM的VMM 122。在不需要VM(VM1 1301)所有者的知悉的情况下,云服务提供商可以在任何时间改变VMM 122。此外,VM之间不存在密码分离。如果VMM已经受损,则损坏的VM可以经由受损但被第二VM信任的VMM来访问第二VM中的私有数据。
为了使消费者得到控制消费者的进程/VM的VMM是可靠的保证,大多数已知技术使用硬件来测量在云中的远程机上运行的软件/固件(在这种情况下,VMM 122),并且往回向消费者证明在云中的远程机上运行的软件/固件是消费者期望的软件/固件的版本。在公共云服务提供商的VMM被包括在消费者的TCB中的情况下,消费者没有办法独立地访问由公共云服务提供商作出的对可靠性的证明。
图2是根据本发明的一个实施例的虚拟机环境200的框图。在这种环境中,引入了密钥域和域管理器的概念。密钥域是存储器的密码分离部分,在所述密码分离部分中,对存储在属于密钥域的存储器位置中的数据的访问需要使用相关联的密钥域密钥来对数据进行解密。域管理器可以使用密钥域来密码地分离属于不同所有者的数据;在云服务环境中,域管理器可以使用密钥域来密码地分离属于云服务(如银行服务)的不同消费者的数据。
例如,在图2的虚拟化环境200中,密钥域KD1 2501和KD2 2502用于分离属于不同虚拟机VM1 2301和VM2 2302的数据。属于虚拟机VM1 2301和VM2 2302中的每一个的数据可以包括例如属于每个虚拟机VM1 2301和VM2 2302的消费者秘密(如银行账号、社会保险号等)。作为另一个示例,属于虚拟机VM1 2301和VM2 2302中的每一个的数据可以包括将被执行用于保护云服务提供商的环境内的每个对应虚拟机的秘密的计算机代码(也被称为代码镜像或简单地镜像)。
对应域管理器(VMMlet 2221和2222)扮演与代表其对应主机所有者VM1 2301和VM22302的虚拟机监视器(VMM,如图1的VMM 122)类似的角色。域管理器(VMMlet)提供VM内的VMM功能,而不是如图1中所示出的作为完全独立的VMM层。域管理器(VMMlet)是具有创建、退出和恢复对VM的执行的能力的特权代码。这些特权可以被称为“vmxroot”功能,并且包括执行如虚拟机控制结构(VMCS)保存/还原、通用寄存器(GPR)保存/还原和/或vmexit/VMResume等命令的能力。此外,域管理器(VMMlet)控制临界资源(如中断描述符表(IDT)、高级可编程中断控制器(APIC)指令)和分页数据结构(如页表和扩展页表(EPT))。在一些实施例中,域管理器(VMMlet)部分可以仅由控制VM的数据结构(如VMCS)、其相关联的数据结构以及与VM相关联的EPT组成。
域管理器(VMMlet)限制由其主机VM对存储器的相应密码分离部分(被称为密钥域)的访问。属于密钥域的每个物理存储器位置的内容是使用公共密钥域密钥硬件加密的。当硬件向属于密钥域的存储器位置写入数据时,使用密钥域密钥来对数据进行加密。当硬件从属于密钥域的存储器位置读取数据时,使用密钥域密钥来对数据进行解密。
在一个实施例中,密钥域密钥由拥有密钥域的消费者创建并且被安全地直接提供给云服务提供商的服务器硬件。在其他实施例中,消费者可以将由另一个实体(如云服务提供商的服务器)提供的密钥转译为用于对属于密钥域的存储器位置进行加密的另一个密钥。在仍其他实施例中,不同密钥可以用于对属于密钥域的不同IP块(存储器位置集合)进行加密。例如,不同密钥可以用于对包含消费者VM镜像的代码的IP块进行加密,所述代码来自用于对其他消费者秘密进行加密的密钥。尽管其他实施例在本发明的范围内,但是为了简化对本文中的实施例的描述,本申请将属于密钥域的每个物理存储器位置的内容描述为由拥有密钥域的消费者创建的密钥域密钥进行加密。
如果使用错误的密钥域密钥对属于密钥域的物理存储器位置的内容进行解密,则所产生的明文将被损坏。此外,如果存储器受到完整性保护,并且使用错误的密钥域密钥对属于密钥域的物理存储器位置的内容进行解密,则所产生的明文将不满足针对属于密钥域的物理存储器位置的完整性标准。尽管本发明的范围不要求属于密钥域的存储器位置受到完整性保护,但是存储器完整性保护可以用于提高本文中所描述的技术的安全性。
在一个实施例中,使用未使用的物理地址位(或通过高速缓存传送的其他元数据)来定义密钥域。例如,因为将可能存在安装在***中的比可以使用64位物理存储器地址寻址的更少的物理存储器位置,所以可以使用未使用的最高有效地址位来在不同密钥域之间进行选择。两个不同密钥域地址可以别名化为同一物理存储器位置。然而,当来自所述物理存储器位置的数据被读入高速缓存中时,高速缓存将密钥域地址独立地保持为全地址解析(例如,包括全64位物理存储器地址)。在考虑全64位物理存储器地址的未使用的物理地址位时唯一识别的密钥域地址确定物理存储器地址所属的密钥域。通过识别物理存储器位置所属的密钥域,也识别了用于对所述物理存储器位置的内容进行解密的密钥域密钥。
存储器管理器可以在别名化为同一物理存储器位置的不同地址值之间进行选择;即,存储器管理器可以在基于地址别名的不同密钥域之间进行选择。在一个实施例中,使用由密钥域的所有者(消费者)创建的密钥域密钥来计算完整性校验值(ICV,如带密钥散列消息认证码(HMAC))。存储器管理器可以访问完整性校验值表(或其授权部分)来判定是否使用了正确的密钥域密钥对数据进行访问。如果使用了错误的密钥域密钥对数据进行解密,则所产生的明文将被损坏并且将与完整性校验值表中的相应完整性校验值不匹配。
在一个实施例中,当数据被读入高速缓存行中时,数据被压缩以便为完整性校验值和/或密钥域标识符/选择符提供空间(即,未使用地址位嵌入在高速缓存行中)。当向存储器写入时,密钥域标识符/选择符还可以包括在经压缩数据中。当读取针对经压缩数据行的存储器时,将指定密钥域的实际未使用地址位与嵌入在经压缩数据高速缓存中的密钥域标识符/选择符进行比较。如果密钥域值相匹配,则数据被解压缩并转发至高速缓存。压缩是为了避免每次访问存储器中的数据时需要查阅完整性校验值表的完整性优化。此外,将密钥域压缩到高速缓存行中缓解了对一些高速缓存包括作为元数据的密钥域标识符的需要。尽管本发明的一些实施例可以压缩写入到高速缓存行或存储器的数据,但是实施本发明并不需要对数据的压缩。
如果当指定密钥域的实际未使用地址位与嵌入在经压缩数据高速缓存中的密钥域标识符/选择符进行比较时密钥域值不匹配,则确定当前授权哪个密钥域。如果用于读取存储器的地址与当前密钥域相对应,则清除数据(即,将数据位设置为零)并且执行对旧密钥域地址的高速缓存回收。(尽管两个密钥域地址别名化为同一物理存储器位置,但是高速缓存独立地将密钥域地址保持为全地址解析。)
再次参照图2,VM1 2301和VM2 2302中的每一个被示出为具有其自身的域管理器(VMMlet)2221和2222。域管理器VMMlet1 2221被示出为在VM1 2301内部,并且域管理器VMMlet2 2222被示出为在VM2 2302内部,以表示每个对应域管理器(VMMlet)的代码包括在对应VM的代码内。当消费者请求需要虚拟化的服务时,实施域管理器(VMMlet)的功能的代码镜像由云服务提供商提供给消费者。将由云服务提供商提供的域管理器(VMMlet)镜像合并到消费者的域(VM)镜像中。
在将VMMlet1 2221合并到消费者的域(VM1 2301)镜像中之前,拥有VM1 2301的消费者可以测量并验证域管理器(VMMlet)2221代码。通过将消费者的VM置于对消费者的VM镜像(包括域管理器(VMMlet))的整个软件栈的控制下,消费者可以测量、验证和信任用于使在消费者的VM内运行的域管理器(VMMlet)实例化的镜像。最后,消费者基于物理地址创建存储器位置相关的域启动镜像(包括域管理器镜像),使用消费者自身的密钥域密钥对域启动镜像进行加密,并且将经加密域启动镜像提供给将启动所述域启动镜像的云服务提供商服务器。
在一个实施例中,消费者在云服务提供商的服务器上的经证实SGX(软件防护扩展)飞地中创建经加密域启动镜像。在此实施例中,使用飞地内部的密钥域密钥对域启动镜像进行加密,并且将经加密域启动镜像(以及任何相关联的ICV值)写入飞地外部的存储器。
当云服务提供商接收到来自消费者的经加密域启动镜像(包括域管理器镜像)时,云服务提供商可以测量、验证并相信经消费者加密的域启动镜像包含提供给消费者的同一域管理器镜像。在一个实施例中,云服务提供商的服务器硬件提供用于测量经消费者加密的域启动镜像的域管理器部分(创建其散列)的机制,因此云服务提供商然后可以证明包括在经消费者加密的域启动镜像中的域管理器镜像与云服务提供商供应(并且因此被云服务提供商可信)的域管理器镜像相同。在一个实施例中,测量域管理器镜像的散列函数是位置相关的,从而使得域管理器镜像必须加载到待适当解密的云服务提供商服务器的存储器的正确存储器位置中。例如,即使两个不同存储器位置的内容相同(例如,都为零),也只有加载到正确存储器位置中的域管理器镜像将产生期望的位置相关散列结果。位置相关散列验证函数的性质提供以下安全优点:域管理器镜像的经加密部分无法被对手以试图更改域管理器镜像的行为的方式重新安排在存储器中。
在这种协作模型中,由消费者和云服务提供商两者对域管理器镜像进行验证。消费者可以信任由公共云服务提供商提供的域管理器镜像,并且相信云服务供应商的硬件将强制执行针对消费者虚拟机(VM)的安全性和机密性。此验证对VM的安全而言是重要的,因为域管理器(VMMlet)具有完全vmxroot特权,包括执行命令(如虚拟机控制结构(VMCS)保存/还原、通用寄存器(GPR)保存/还原和/或vmexit/VMResume)的能力。此外,中断描述符表(IDT)、高级可编程中断控制器(APIC)指令以及分页数据结构(如页表和/或扩展页表(EPT))在密钥域中进行加密。在一些实施例中,域管理器镜像仅由VM控制结构(如VMCS)和相关联的数据(如控制消费者的VM的行为的EPT)组成,而不是可以驻留在消费者的密钥域外部的用于VMX root操作的代码或数据。
此协作模型使消费者能够通过将测量和验证移动至消费者来信任由云服务提供商提供的特权软件。消费者可以保证云中的消费者自身的工作负载的安全性,由云服务提供商的服务器硬件担保。云服务提供商然后可以重新验证使用了正确的域管理器镜像。此模型大大简化了硬件需求以便提供真实安全公共云基础。不需要对虚拟机(VM)的操作***(OS)部分进行改变。实施方式的大部分复杂性包含在对域管理器(VMMlet)的设计中,所述域管理器是可以很容易被打补丁、更新、测量和证明的软件。在一种实施方式中,硬件指令用于创建密钥域、在密钥域之间切换并且通过计算与密钥域相对应的存储器位置的内容的散列值并将散列值与密钥域的有效内容的期望散列值进行比较来验证密钥域的内容。
再次参照图2,处理器(包括在硬件210中)响应于由存储器管理器240发出的命令而使用SwitchKD(切换密钥域)指令在VMs 2301与2302以及其对应密钥域KD1 2501与KD22502之间切换。从一个密钥域切换到另一个密钥域(例如,从密钥域KD2 2502到KD1 2501)的结果是将对特定物理存储器别名的控制传递至被授权访问当前密钥域KD1 2501的VM(2301)。经由密钥域密钥访问的不同硬件密钥域防止消费者私有数据跨VM的信息泄露以及甚至通过具有对外部物理存储器管理器240的访问权的对手的信息泄露。密钥域标识符/选择符(例如,物理地址的一部分)保持VM存储器区域在高速缓存中分离。在一个实施例中,代替切换密钥域指令,VMX rootvmlaunch/VMResume指令将使密钥域切换到包含如由vmptrld指令提供的地址中的密钥域标识符所识别的VMCS的密钥域,所述vmptrld指令将指针从在vmptrld指令中指定的地址加载到当前VMCS。vmexit然后将切换回至VMX root密钥域或共享存储器区域。
在一个实施例中,存储器212的部分212s被共享并且用于跨密钥域密码边界通信。换言之,共享存储器未被加密并且可以用于在VM之间传送消息,所述VM另外可以仅访问属于每个特定VM被授权所针对的密钥域的存储器位置。共享存储器被示出为具有具备一个被禁用位(本文中描述为“k-位”)的物理地址。所述k-位用于判定当前密钥域是用于限制VM对属于密钥域(如密钥域KD1 2501或KD2 2502之一)的存储器位置的访问还是允许跨共享存储器212s中的多个密钥域来共享未加密信息。k-位向CPU指示在物理地址中所指示的密钥域应当被设置为共享密钥域(明文/!k)还是设置为当前有效密钥域(经加密)。
已经关于管理虚拟机的域管理器(VMMlet)描述了以上实施例,但是本发明并不限于此。类似的密钥域模型可以用于支持进程或容器;尽管不存在相应的VMM,但是OS内核(或微内核)起到类似目的。每个密钥域中的每个进程或容器都将具有由云服务提供商测量的协作OS内核组件(本文中被称为域管理器或OSlet)。域管理器(OSlet)以与域管理器(VMMlet)类似的方式来响应存储器管理器命令、中断、调度、资源管理等。
现在参照图3,示出了根据本发明的实施例的云服务环境的框图。如图3中所示出的,网络300可以用于允许消费者从公共云服务提供商处请求服务(包括虚拟化服务)。如所看到的,网络300可以与任何类型的通信网络相对应并且可以包括经由如互联网320等给定网络而互连的许多不同类型的计算设备。
云存储设备310可以被提供为包括各种计算设备、存储设备等的数据中心的一部分。作为一个示例,云存储设备310可以是包括多个存储部件(如磁盘、光或基于半导体的存储设备)的存储设备。云存储设备310可以例如充当各种应用(包括将虚拟机实例化以便响应于消费者的请求而提供服务的虚拟机监视器(VMM)应用)的主要副本库。在图1中所示出的实施例中,采用VMM镜像312的形式来存储VMM应用的主要副本。VMM镜像312是包含指定用于以虚拟机监视器(VMM)的形式提供虚拟机平台的软件栈的软件镜像。
因此,如在图3中进一步看到的,在同一位置处(例如,作为同一数据中心的一部分),一个或多个公共云服务提供商服务器(如公共云提供商服务器3151和3152)可以耦合至云存储设备310。在各个实施例中,公共云服务提供商服务器可以用于服务于消费者服务请求(包括虚拟化请求)。例如,每个公共云服务提供商服务器可以托管代表消费者的一个或多个虚拟机。在图3中所示出的示例中,公共云提供商服务器3151托管两个虚拟机VM1 3401和VM23402。类似地,公共云提供商服务器3152托管两个虚拟机VM1 3403和VM23404。
如图3中所示出的,可以存在各种消费者设备(例如,云服务消费者设备3301和3302)。这种云服务消费者设备可以是给定用户的个人设备,如智能电话、平板计算机、台式计算机等等。替代性地,云服务消费者设备可以是消费云服务的机构的服务器。另外,云服务消费者设备可以经由软件仿真。换言之,仿真器或模拟器可以在软件中仿真云提供商的硬件,从而使得消费者可以在消费者的设备上运行云提供商的硬件的仿真器。
云服务消费者设备3301和3302中的每一个提供对应云服务消费者3311和3312以及对应VM镜像3321和3322。云服务消费者3311和3312可以是例如云服务应用的用于请求云服务的客户端组件。云服务消费者(如云服务消费者3311和3312)在本文中被称为“消费者”。VM镜像3321和3322能够存储在耦合至对应云服务消费者设备3301和3302的存储设备(未示出)中。这些VM镜像由消费者提供给云服务提供商,并且用于创建在云提供商的服务器3151上运行的安全VM(如VM1 3401)。
当已经根据本文中所描述的技术在云服务提供商的服务器上建立了安全VM时,消费者然后可以使用所述VM连同消费者的秘密密钥来创建代表消费者的附加VM。因此,一旦可以在云服务提供商的云中安全地建立一个消费者VM,所述VM然后就可以执行图3中的消费者设备的所有操作(包括创建附加安全VM)。
同样地,消费者可以建立具有多个云服务提供商的安全VM,并且这些安全VM可以经由安全通信通道使用消费者的秘密密钥安全地交互。
图4是图示,示出了根据本发明的一个实施例的装置。示出了用于保护根据实施例的公共云环境的装置400。装置400可以包括任何计算设备和/或数据平台,如膝上型计算机、个人数字助理(PDA)、媒体内容播放器、成像设备、移动互联网设备(MID)、任何智能设备(如无线智能电话、智能平板、智能TV)、计算机服务器等等,或其组合。另外,装置10可以包括具有计算功能(例如,个人数字助理/PDA、膝上型计算机、智能平板)、通信功能(例如,无线智能电话)、成像功能、媒体播放功能(例如,智能电视/TV)等等或其组合(例如,移动互联网设备/MID)的任何平台。
所展示的装置400包括存储器412。存储器412可以在处理器411的外部(例如,外部存储器),和/或可以通过例如存储器总线耦合到处理器411。另外,存储器412可以实现为主存储器。存储器412可以包括例如易失性存储器、非易失性存储器等等,或者其组合。例如,存储器412可以包括被配置为一个或多个存储器模块(如例如,双列直插式存储器模块(DIMM)、小外廓DIMM(SODIMM)等)的动态随机存取存储器(DRAM)、只读存储器(ROM)(例如,可编程只读存储器(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)等)、相变存储器(PCM)等等,或其组合。
存储器412可以包括存储器单元阵列,所述存储器单元按行和列布置并被分隔为可独立寻址的存储位置。因此,对存储器412的访问可能涉及使用存储位置的地址,如例如:识别包含存储存储器位置的行的行地址、以及识别包含存储存储器位置的列的列地址。另外,装置400内部的设备和/或装置400外部的设备可以完成对存储器412的访问。对存储器412的访问可能涉及例如直接存储器访问(DMA)。
可以使用加密和完整性校验来保护存储器412。在一个实施例中,可以使用被称为可调分块密码的加密技术。可调分块密码接受第二输入(被称为微调(tweak))连同待加密的明文或密文输入。微调连同密钥一起选择由密码计算的排列。例如,微调功能可以使用物理存储器地址作为对分块密码的微调,以便将未加密数据与物理存储器地址进行绑定。微调功能445可以包括例如XTS(XOR-加密-XOR)/基于XEX的具有密文挪用的微调码本模式算法,Liskov、Rivest和Wagner(LRW)算法等等,或其组合。
关于存储器412的完整性,在一个实施例中,使用基于具有完整性的存储器加密的硬件能力,所述硬件能力在美国专利9,213,653B2中被描述为“存储器完整性”,以下被称为具有完整性的总存储器加密引擎或TMEi。在另一个实施例中,具有完整性的存储器加密由存储器加密引擎(MEE)提供,如美国专利号8,819,455“Parallelized Counter Tree Walkfor Low Overhead Memory Replay Protection(用于低开销存储器重放保护的并行计数器攀树)”中所描述的。然而,本发明不限于这些实施方式,因为可以使用经由存储器位置相关(“经微调”)密码提供存储器加密的任何密码机制。此外,任何存储器完整性机制可以用于提高由加密单独提供的安全性,但是本发明的实施方式并不需要存储器完整性机制。
处理器411可以包括任何类型的处理器,如例如,微处理器、嵌入式处理器、数字信号处理器(DSP)、中央处理单元(CPU)、图形处理单元(GPU)、视觉处理单元(VPU)、网络处理器、执行代码以实现本文所描述技术的设备等等,或其组合。处理器411可以包括一个或多个核,如例如核416和核418。核416、418可以包括单线程核、多线程核心(每个核包括多于一个硬件线程上下文(或“逻辑处理器”))等等,或其组合。核416、418可以包括指令解码器,所述指令解码器用于对指令(例如,来自指令寄存器)进行识别和/或解码,用于激活适当的电路来执行指令,用于验证指令流(例如,操作代码等)将进行计算等等,或其组合。
例如,核416、418可以执行一条或多条指令,如读取指令、写入指令、擦除指令、移动指令、算术指令、控制指令等等,或其组合。核416、418例如可以执行一条或多条指令,从而:将数据(例如,程序数据、操作代码、操作数等)在寄存器(未示出)与存储器412之间移动,从存储器412读取数据,将数据写入存储器412,使用数据执行算术运算(例如,加、减、逐位运算、比较等),执行与数据相关联的控制操作(例如,分支等)等等,或其组合。这些指令可以包括任何代码表示,如例如,二进制代码、八进制代码和/或十六进制代码(例如,机器语言)、符号代码(例如,汇编语言)、十进制代码、字母数字代码、高级编程语言代码等等,或其组合。因此,例如,十六进制代码可以用于表示x86指令集的操作代码(例如,操作码),所述操作代码包括用于加法运算的字节值“00”、用于移动运算的字节值“8B”、用于增量/减量运算的字节值“FF”等等。
处理器411可以包括内部存储设备,如例如,包括一级或多级的处理器高速缓存。处理器高速缓存可以不被加密和/或可以与处理器411共享同一管芯、在同一芯片上。另外,处理器高速缓存可以集成到核416、418中的一个或多个核上。所展示的处理器411包括高速缓存413,所述高速缓存能够存储处理器411的一个或多个组件所利用的数据(例如,指令、操作数、程序数据等)。高速缓存413可以包括任何类型的高速缓存,如例如,指令高速缓存、数据高速缓存、单级高速缓存、多级高速缓存、共享高速缓存、严格包容型高速缓存、独占型高速缓存等等,或其组合。例如,高速缓存413可以包括中级高速缓存,如2级(L2)、3级(L3)、4级(L4)、或其他级别的高速缓存、末级高速缓存(LLC)等等,或其组合。核416、418可以检查数据是否位于高速缓存413中,以执行一条或多条指令和/或其他数据(例如,程序数据等),其中,高速缓存未命中可能引起数据以固定大小的块(例如,高速缓存行线)从存储器412转移到高速缓存413。
每个核416、418例如可以经由对应存储器控制器(如存储器控制器417)与对应存储器耦合、经由共享存储器控制器与共享存储器耦合、经由共享存储器控制器与对应存储器耦合等等,或其组合。另外,共享高速缓存可以与共享存储器控制器耦合,多个高速缓存可以与多个对应存储器控制器耦合等等,或其组合。例如,存储器控制器417可以在核416、418当中共享,可以与高速缓存413(例如,共享的多级高速缓存)耦合,并且可以将核416、418与存储器412(例如,共享的DRAM)耦合。存储器控制器417可以与存储器412(例如,外部存储器、DRAM等)耦合。
处理器411还包括存储器加密引擎415。所展示的存储器加密引擎415包括加密器441,所述加密器可以对未加密数据进行加密。未加密数据可以包括例如明码数据、明文数据等等或其组合。可以用专用格式(例如,超文本传输标记语言(HTML)、富文本格式(RTF)等)对明码数据进行编码,并通过适当程序(例如,文字处理器、文本编辑器等)对明码数据进行读取,而无需解密。明文数据可以包括预先加密数据,如例如,在传输和/或存储之前进行加密的明码数据。另外,明文数据可以包括后解密数据,如例如,作为对接收到的和/或检索到的数据进行解密的结果的数据。
另外,明文数据可以包括以任何格式可编码的数据,如音频/视频数据(例如,运动图像专家组(MPEG)数据等)、图像数据(例如,联合图像专家组(JPEG)数据等)、金融数据(例如,自动柜员机(ATM)交易数据等)等等,或其组合。明文数据可以包括程序数据,如例如,程序的至少一部分、操作***(OS)、应用、虚拟机(例如,虚拟机监视器(VMM)代码等)等或其组合。明文数据还可以包括例如指令,所述指令包括操作码、操作数等等,或其组合。
未加密数据可以包括多个位。所述多个位可以包括以任何代码表示(如二进制代码、八进制代码、十六进制代码、符号代码、十进制代码、字母数字代码、高级编程语言代码等等或其组合)的一个或多个位(例如,字节等)。例如,存储器参考指令可以包括用于操作码的位、用于地址的位等等,其中,存储器参考指令的位可以用十六进制代码(例如,机器语言)、符号代码(例如,汇编语言)等等或其组合表示。另外,多个位可以被翻译成二进制代码和/或从二进制代码翻译出,其中,二进制代码可以由核416、418执行,可以在存储器412中被分类,可以从存储器412处取得等等,或其组合。
加密器441可以包括任何类型的密码来生成密文数据,如例如,以任何期望操作模式的分块密码。分块密码可以包括固定的块大小,其中,分块密码可以被重复实施以便对大于所述块大小的数据进行加密。例如,分块密码在填充密码块链接(propagating cipher-block chaining,PCBC)操作模式下可以包括高级加密标准(AES)。另外,分块密码可以包括可扩展的块大小。
在一个示例中,分块密码是Threefish,其可以被实现以获得具有任意长度(例如,256位、512位、1024位等)的可扩展块大小。例如,Threefish可以利用可包括存储器地址和/或位置的微调(例如,128位)、以及可与所述块具有相同宽度的密钥。Threefish可以利用多个轮次(例如,72)来针对256位和1024位块进行加密、多个轮次(例如,80)来针对1024位块等等。Threefish可以利用函数MIX,所述函数MIX包括加法运算、按常量进行的旋转运算、以及异或(XOR)运算。例如,在每组MIX函数(例如,依据块大小分别地2、4或8)之后,可以对字(word)进行置换。例如,可以在每多个轮次(例如,4)时将子密钥注入到***中,其中,子密钥可以由密钥、微调和计数器值的部分来生成。密钥和微调可以在末尾处被给予额外的字(例如,所有其他字的XOR)。
所展示的存储器加密引擎415还包括解密器442,所述解密器可以对密文数据进行解密以生成未加密数据。解密器442可以包括加密器441的逆变(inverse)。例如,解密器442可以包括AES-PCBC的逆变。另外,解密器442可以包括Threefish的逆变。例如,可以以相反的次序应用子密钥,其中,每个轮次包括:相反的字排列,紧跟着逆变MIX函数。因此,未加密数据(例如,明文数据)可以被实施为对加密器441的输入,以在将未加密数据存储于存储器412中时(例如,写入指令)生成未加密数据的不可读副本(例如,密文数据),其中,解密器442可以被实施以对密文数据进行解密,并在将密文数据从存储器412取出(例如,读取指令)时生成未加密数据。
存储器加密引擎415可以包括高速缓存行监测器,所述高速缓存行监测器用于识别与来自多个地址别名的被释放地址别名相对应的高速缓存行并且转储清除所识别的高速缓存行。存储器加密引擎415还可以包括完整性校验值选择符443,所述完整性校验值选择符用于确定应用于未加密和/或经加密数据行(例如,被多个地址别名中的至少一个别名别名化)的完整性校验值。存储器加密引擎415还可以包括存储器初始化器,所述存储器初始化器用于写入到存储器中的位置,而不需要在存储器中的位置处首先读取预先存储的数据。存储器加密引擎415可以包括分配器,所述分配器用于将被转储清除高速缓存行分配给/绑定至数据行物理地址。
存储器加密引擎415可以进一步包括高速缓存行解释器,所述高速缓存行解释器用于针对每条高速缓存行确定如图31A中所展示的数据物理存储器地址,所述数据物理存储器地址包括:数据行字节;数据行物理地址,所述数据行物理地址包括完整性线时隙选择符和完整性行索引;以及密钥域选择符,所述密钥域选择符是由从数据物理存储器地址的未使用地址位形成的。完整性行索引识别存储器中的完整性线地址位置,并且完整性线时隙选择符识别完整性线地址中的完整性线时隙,在所述完整性线地址中,完整性线时隙值被存储并用于判定地址别名是否有效。
存储器加密引擎415可以进一步包括别名管理器,所述别名管理器用于确定识别别名地址的多个高速缓存行的数据行物理地址,其中,别名地址别名化为单个存储器地址。存储器加密引擎415可以包括完整性校验值计算器,所述完整性校验值计算器用于使用有效完整性值来设置高速缓存行的密钥域选择符以便将高速缓存行指定为当前有效地址别名。存储器加密引擎415可以包括数据检索器以及解密器428,所述数据检索器用于从高速缓存行的数据物理存储器地址的数据行物理地址读取经加密数据行,所述解密器用于对经加密数据行进行解密。经解密数据行可以识别经解密数据行的数据行物理地址、完整性行索引和完整性线时隙选择符(例如,如图31A中所展示的)。存储器加密引擎415可以包括时隙值解释器和比较器(例如,完整性验证器444),所述时隙值解释器用于读取存储在完整性线时隙中的完整性线时隙值,所述比较器用于确认完整性线时隙值与经解密数据(例如,数据行)的数据物理存储器地址的密钥域选择符之间的匹配。完整性验证器444可以确定完整性值的明文(例如,存储在完整性校验线中的副本)与数据行的明文(例如,对数据行的一部分副本)之间的不匹配/匹配,这指示完整性值和/或数据行的错误损坏或无效。完整性验证器444可以进一步将数据的散列值与数据的期望散列值进行比较。
存储器加密引擎415和/或别名管理器可以将别名位(例如,完整性线时隙选择符、完整性行索引、密钥域选择符和/或有效完整性值或其一些组合)与数据行字节分离地存储在单独位置(例如,别名位高速缓存行和/或别名位存储器位置)中,存储器加密引擎415、数据检索器和/或别名管理器可以检索所述单独位置并将其与请求(例如,对由相应数据行物理地址识别的数据的请求)进行比较以便确保特定访问控制策略匹配。如果别名位与请求的比较失败(例如,无匹配结果),则存储器加密引擎415和/或别名管理器可以将无匹配状况报告(例如,引起警报)为错误或故障中的一者或多者。
存储器加密引擎415数据检索器(或核416、418)可以从所述多个高速缓存行中的至少一个高速缓存行的数据物理存储器地址的数据行物理地址读取经加密数据行。解密器442可以对经加密数据行进行解密,其中,经解密数据行识别经解密数据行的数据行物理地址、完整性行索引和完整性线时隙选择符。比较器(例如,完整性验证器444)可以识别出所存储的完整性线时隙值与经解密数据行的数据物理存储器地址的密钥域选择符之间的无匹配,并且存储器加密引擎415和/或比较器可以响应于无匹配识别而使存储器加密引擎415或其组件转储清除高速缓存行并且将无匹配状况报告为错误或故障中的一者或多者。
存储器加密引擎415可以进一步包括完整性值嵌入器,所述完整性值嵌入器用于针对每条高速缓存行使数据行字节嵌入有数据物理存储器地址的有效完整性值。存储器加密引擎415还可以包括压缩器,所述压缩器用于压缩嵌入有有效完整性值的数据行字节。加密器441可以对嵌入有有效完整性值的经压缩数据行字节进行加密。存储器加密引擎415可以进一步包括数据行写入器,所述数据行写入器用于将密钥域选择符的有效完整性值、数据行物理地址以及嵌入有有效完整性值的经加密且经压缩数据行字节写入到由数据行物理地址识别的存储器中的位置。
存储器加密引擎415和/或压缩器可以将特定高速缓存行的数据行字节确定为不可压缩,并且可以单独地存储有效完整性值(例如,在单独位置中,如另一个高速缓存行和/或存储器位置),而不是尝试将别名位(例如,完整性线时隙选择符、完整性行索引、密钥域选择符和/或有效完整性值或其一些组合)嵌入到具有数据行字节的数据行中。
本文中所讨论的所展示密文可以在密文将被从存储器412中取出(例如,读取操作)时被解密以便生成未加密数据。所展示的存储器加密引擎415可以进一步包括微调功能445,所述微调功能用于利用物理存储器地址作为对分块密码的微调,以便将未加密数据与物理存储器地址进行绑定。微调功能445可以包括例如XTS(XOR-加密-XOR)/基于XEX的具有密文挪用的微调码本模式算法,Liskov、Rivest和Wagner(LRW)算法等等,或其组合。微调功能445例如可以展开原始物理存储器地址,将所述地址与未加密数据进行异或,并通过加密器441用密钥运行所述结果,从而将未加密数据与所述地址绑定。
所展示的存储器加密引擎415可以进一步包括解码器447,所述解码器用于对未加密数据进行解码并且识别一个或多个指令。例如,当基本整个数据行(例如,64字节高速缓存行)是从存储器102中取得且被解密时,未损坏的未加密数据(例如,有效明文)可以包含操作码。因此,当解码器447对明文数据进行解码时,解码器447可以识别指令集(如例如,x86指令集等)的操作码。
所展示的存储器加密引擎415可以进一步包括密钥/微调值选择符448,所述密钥/微调值选择符用于为存储器412中的物理位置从多个密钥(例如,密钥域)中选择密钥和/或从多个微调(例如,微调域)中选择微调。例如,所展示的存储器加密引擎415可以包括功能检测器,所述功能检测器用于确定功能(例如,程序、中间件、操作***、固件、虚拟机、VMM、操作***(OS)内核等)或功能的一部分(例如,程序的一部分等)被第一次启动或者被第一次允许访问存储器412中的物理位置。当给定功能(和/或其部分)访问权时,密钥/微调值选择符448可以作为响应为存储器中的物理地址选择密钥和/或微调(例如,来自密钥域的密钥、来自相同密钥域的不同密钥、来自不同密钥域的不同密钥、来自微调域的微调、来自相同微调域的不同微调、来自不同微调域的不同微调等)。
密钥/微调值选择符448可以基于从数据行的物理存储器地址的位(如未使用地址位)确定的值来选择密钥。针对特定物理存储器位置的密钥域可以由待选择用于确定值的未使用地址位的数量来定义。例如,特定物理存储器位置可以一次属于一个特定密钥域,其中,未使用地址位可以用于定义密钥域(例如,针对单个物理存储器位置的包括16个密钥的密钥域,在所述密钥域中使用四个未使用地址位)。因此,物理存储器位置可以基于位置映射的域在不同时间点使用不同密钥。密钥/微调值选择符448可以通过例如使用可以被装置400保护(例如,在可信执行环境中)的秘密主密钥来对值(例如,0001、0010等)进行加密从而获得密钥。另外,密钥/微调值选择符448可以通过例如使用作为指向阵列的指针的值来从受保护密钥阵列中检索密钥从而获得密钥。
此外,密钥/微调值选择符448可以通过设置物理存储器地址的将被微调功能445用作微调的位来选择微调。就这一点而言,针对XTS模式的微调将包括物理存储器地址的未使用地址位和已使用地址位。因此,当未使用地址位被密钥/微调值选择符448选择/改变时,将从用于微调的不同地址(即使实际上指同一物理存储器位置)产生不同密文。
所展示的存储器加密引擎415还包括逻辑449,所述逻辑可以利用处理器410的各组件(如例如,核416、418、加密器441、解密器442等)来维持(例如,确保、验证、测试等)存储器412的安全性和完整性。
可以对由组件(例如,内部或外部设备、加速器等)引起的存储器损坏进行检测,因为这些组件访问具有可以属于特定密钥域或别名和微调的地址的存储器。这些设备可以使用用于访问存储器的当前且正确的地址。类似地,并且相反地,当使用不正确或非当前地址时,还可以对损坏这种设备的存储器的软件进行检测。
尽管图4中未展示,但装置400可以包括其他具有处理器411的片上元件。例如,处理器411可以包括与存储器加密引擎415集成的输入输出(IO)控制逻辑。另外,装置400可以包括例如IO模块(有时被称为芯片组的南桥),所述IO模块用作主机设备并可以与例如前/后图像传感器(例如,二维像机、三维像机等)、麦克风、显示器(例如,屏幕)、运动传感器(例如,加速度计、陀螺仪等)、大容量存储设备(例如,硬盘驱动/HDD、光盘、闪存等)、网络接口进行通信,以提供多种通信功能(例如,蜂窝电话、WiFi、WiMax、全球定位***(GPS)、扩频(例如,900MHz)、其他射频(RF)等)。处理器14和IO模块例如可以实现为片上***(SoC)。
另外,虽然出于说明目的示例已经示出了单独的组件,但是应当理解的是,装置400的组件中的一个或多个组件可以相组合、可以驻留在相同和/或不同的物理和/或虚拟位置中等等,或其组合。例如,逻辑449可以包括存储器加密引擎415的组件中的一个或多个组件以执行其对应功能,所述组件可以驻留在与核416、418、存储器412等或其组合相同或不同的位置。另外,存储器加密引擎415的一个或多个组件可以在计算机程序代码中实施(如可以与存储器加密引擎415的在逻辑硬件中实施的一个或多个组件接口连接的软件值选择符)。
由装置400提供的功能中的一些功能可以由处理器高速缓存的存储器/DRAM(动态随机存取存储器)侧上的片上***(SoC)IP块传递,使得功能将用于在主机处理器(例如,中央处理单元/CPU)核上以及其他IP块和加速器(如通用图形处理单元(GPGPU)和集成图形(例如,处理器图形))上运行的软件。
所展示的装置400采用未使用的物理地址位(和/或通过高速缓存传递的其他元数据)来操纵密码存储器完整性值指针(例如,实施一个或多个访问控制策略),使得软件存储器分配例程控制对指针的分配(例如,“分配内存”或“释放内存”)。装置400通常可以使用未使用地址位作为密钥域。例如,安装在***中的外部物理存储器可能比实际可由64位物理存储器地址寻址的外部物理存储器要少,所以最高有效地址位可以用于在不同“密钥域”之间进行选择,同时高速缓存仍然可以以物理存储器地址全解析来将这些地址传送至装置400。所展示的装置400可以使用针对虚拟存储器的5级分页以及64位寻址来允许软件存储器分配器/管理器(例如,图2的存储器管理器240)在别名化为同一物理存储器位置的不同地址值之间进行选择。软件存储器分配器/管理器可以控制完整性值表(或其授权部分)来确定哪个别名当前有效,从而使得由软件使用无效别名/地址可能然后引起硬件中的故障,可以将所述故障报告给软件监视器以便处理存储器违规。
图5是根据本发明的一个实施例的由云服务的消费者执行的方法的流程图。在“从云服务提供商处请求服务”框502中,消费者从云服务提供商处请求服务。例如,请求可以针对虚拟化服务,或者请求可以是执行云服务提供商将建立虚拟机所针对的事务或用于执行所述事务的其他过程。
云服务提供商识别具备密钥域能力的服务器或服务器组以便服务于消费者的请求。在“接收来自云服务提供商的域管理器镜像和存储器位置相关地址信息”框504中,消费者接收来自云服务提供商的域管理器镜像和存储器位置相关地址信息(本文中还被称为修复变量信息)。存储器位置相关地址信息特别识别存储器中的服务于消费者的请求的(多个)服务器的物理位置。此存储器位置相关地址信息可以包括服务于消费者的请求的(多个)服务器的存储器中的页的物理地址、页表的物理地址、控制寄存器信息(例如,CR3值)、中断描述符表寄存器信息等。域管理器镜像可以包含(多个)页表结构,所述页表结构将域管理器镜像的线性/虚拟地址映射到域管理器镜像将被定位在云服务提供商的服务器的存储器中的物理地址。
控制然后从“接收来自云服务提供商的域管理器镜像和存储器位置相关地址信息”框504传递到“测量域管理器镜像”框506,在框506中,消费者测量域管理器镜像以便确保域管理器镜像已经被损坏。消费者可以使用已知白名单技术(如计算域管理器镜像的散列并且将散列值与主域管理器镜像(已知未损坏的)的主散列值进行比较)来验证域管理器镜像;可以检查源代码并将其重新编译到匹配镜像中;可以验证镜像的政府认证;镜像可以被确认为与开源软件一致等等。如果镜像将***漏消费者数据,则镜像被认为是可靠的。例如,如果使用消费者的秘密密钥来保护所有通信,并且文件/存储器页在保存到存储设备和/或从存储设备还原时被加密并进行完整性校验,则镜像可以被认为是可靠的。
控制从“测量域管理器镜像”框506传递至“是否被验证?”决策点508。如果域管理器镜像未被验证,则控制传递至“错误”框522,在所述框中,消费者处理云提供商的域管理器镜像尚未被验证的情况。在这种情况下,消费者可以选择不使用所述特定公共云服务提供商的服务。
如果在“是否被验证?”决策点508处验证了域管理器镜像,则控制传递至“创建域启动镜像”框510。在框510处,消费者创建域启动镜像,这将在云服务提供商的服务器上执行以便“启动”密钥域。启动密钥域可以包括例如创建密钥域以使得硬件使用密钥域密钥对存储在属于密钥域的存储器位置中的数据进行加密并且将数据(如待执行以便初始地建立密钥域的代码)存储在属于密钥域的存储器位置中。
在一个实施例中,消费者使用由云服务提供商在“接收来自云服务提供商的域管理器镜像和存储器位置相关地址信息”框404中提供的存储器位置相关地址信息作为待执行用于启动密钥域的代码的一部分来修改提供商供应的域管理器镜像。例如,在给定域管理器镜像将被定位的物理存储器地址的情况下,消费者可以修改域管理器镜像的页表,从而使得页表中的物理地址被更新(修复)。一旦分页结构被更新,通过执行域管理器镜像的代码、数据和程序而使用的线性/虚拟地址就将使正确相应物理存储器地址映射到云服务提供商的服务器上。在一个实施例中,消费者使用消费者的密钥域密钥来对已修复域管理器镜像进行加密并且使用消费者的密钥域密钥创建经加密的已修复域管理器镜像的完整性校验值(ICV)。
在一个实施例中,消费者创建包括经加密的已修复域管理器镜像的域启动镜像以便分配给云服务提供商的服务器。消费者还包括域启动镜像中用于分页、迁移、证明、通信以及通过执行域进程(例如,VM、OS等)而提供的其他功能的秘密密钥。当域启动镜像被加密时,包含在域启动镜像内的相应页表结构也被加密。
因为使用存储器位置相关“经微调”密码来对域启动镜像进行加密(和完整性校验),所以对手无法移动存储器中周围的域启动镜像的部分。页表将域启动镜像的程序和数据映射到云服务提供商的服务器上的正确物理存储器地址,因此,只要域启动镜像被密码地绑定到正确物理存储器位置,程序行为就无法被恶意地改变。换言之,如果域启动镜像没有加载到云服务提供商的服务器上的正确物理存储器位置中,则域启动镜像无法被正确解密。此外,完整性校验值可以检测对修改域启动镜像内容和/或域启动镜像被加载到其中的存储器中的位置的任何尝试。
控制从“创建域启动镜像”框510传递至“验证具备密钥域能力的服务器/组的证书并且获得具备密钥域能力的服务器/组的公钥”框512。
在框512中,消费者验证被识别的云服务提供商的服务器/组的证书,并且获得被识别的具备密钥域能力的服务器/组的公钥。
控制从框512传递至“与经验证的具备密钥域能力的(多个)服务器交换密钥域密钥”框514。消费者与在框512中验证的具备密钥域能力的(多个)服务器交换密钥域密钥。密钥域密钥的交换的一方面是由消费者仅以经加密形式将密钥域密钥直接提供给具备密钥域能力的服务器的硬件(如图4的存储器加密引擎415)。因为具备密钥域能力的服务器的软件不接收密钥域密钥,所以具备密钥域能力的服务器软件无法在不请求硬件执行解密的情况下对密钥域的内容进行解密。在一个实施例中,在向具备密钥域能力的服务器的硬件提供经加密密钥域密钥之前,消费者使用在框512中获得的服务器/组的公钥对消费者的密钥域密钥进行加密。
在另一个实施例中,可以在消费者与服务器硬件之间协商密钥域密钥。可以直接使用硬件(例如,微代码、固件、CSME、SMM)生成密钥域密钥,其中,服务器硬件可以提供其唯一(或组)身份和公钥/证书,并且然后,迪菲赫尔曼(Diffie Hellman)密钥交换(或RSA)可以完成与消费者的密钥域密钥交换。此实施例要求消费者在线以便在域镜像被启动时执行密钥交换。
此密钥交换使得在经验证的具备密钥域能力的服务器上运行的虚拟机能够在不暴露密钥域密钥自身的情况下访问使用消费者的密钥域密钥加密的域启动镜像数据。经加密消息通过具备密钥域能力的服务器上的云服务提供商的软件栈传递。具备密钥域能力的服务器硬件为命令提供密码端点。例如,消费者可以使用服务器的公钥对密钥域中其所使用的密钥进行加密,并且将此经加密密钥域密钥发送至云服务提供商。云服务提供商然后可以对具备密钥域能力的服务器硬件发出用于创建新密钥域的指令(如创建密钥域(CreateKD)。另外,提供商还可以使用同一创建密钥域(CreateKD)指令来重新创建密钥域,例如,如果VM已经暂停并且将恢复。
控制从“与经验证的具备密钥域能力的(多个)服务器交换密钥域密钥”框514传递至“对包括交换了密钥域密钥的具备密钥域能力的服务器的域管理器镜像的启动镜像进行加密”框516。一旦建立了密钥域密钥(或之前,因为其是消费者的密钥),消费者就使用密钥域密钥来对包括消费者与之交换密钥域密钥的特定服务器的域管理器镜像的域启动镜像进行加密。在给定由云服务提供商提供为修复变量信息的存储器位置相关地址信息的情况下,消费者对域启动镜像进行加密。在一个实施例中,可以使用被称为可调分块密码的加密技术。可调分块密码接受第二输入(被称为微调)连同待加密的明文或密文输入。微调连同密钥选择由密码计算的排列。在对消费者的域启动镜像进行加密时,具备密钥域能力的服务器的物理存储器地址被用作微调,得到所产生的经加密启动镜像存储器位置相关。经加密启动镜像被描述为存储器位置相关,因为经加密启动镜像在其可以被正确解密之前必须加载到云服务提供商的服务器的正确物理存储器地址中。
在一个实施例中,使用基于XEX的具有密文挪用(XTS)的微调码本模式对域启动镜像进行加密。消费者使用页地址微调和密钥域密钥对存储器位置相关XTS模式中的域启动镜像进行加密。域启动镜像将被加载到的正确物理地址包括在每个经加密块的XTS微调中。还可以在其他实施例中使用其他可调密码,如Liskov、Rivest和Wagner(LRW)或内容模式密码。
消费者还可以使用密钥域密钥来计算域镜像的完整性校验值(ICV,如带密钥散列消息认证代码(HMAC))。在一个实施例中,完整性校验值还是存储器位置相关的,从而使得在验证数据的完整性是考虑存储器中的相应数据行的地址/存储器位置。在消费者已知在与消费者的经加密启动镜像相对应的服务器上的ICV表的地址位置的情况下,消费者可以包括经加密启动镜像中的ICV值。还可以使用指示ICV表的正确服务器存储器地址的微调利用密钥域密钥来对ICV值表进行加密。云服务提供商服务器然后在ICV表的那些相同服务器存储器地址处将经加密启动镜像的ICV部分加载到ICV表的正确时隙中。
控制从“对包括交换了密钥域密钥的具备密钥域能力的服务器的域管理器镜像的启动镜像进行加密”框516传递至“利用具有具备密钥域能力的服务器来建立密钥域”框518。在框518中,消费者向具备密钥域能力的服务器发送创建密钥域的请求。此请求可以包括经加密密钥域密钥,所述经加密密钥域密钥充当待由具备密钥域能力的服务器的处理器执行的创建密钥域(CreateKD)指令的输入值。待使用的密钥域选择符/标识符是由云服务提供商的存储器管理器作出的本地决策,因为云服务提供商的存储器管理器需要管理有限的密钥域命名空间。消费者不需要知道密钥域选择符/标识符,并且可以由云服务提供商改变密钥域选择符/标识符的值以避免本地冲突。实际密钥域密钥为消费者的VM镜像提供安全性,而密钥域选择符/标识符告诉云服务提供商服务器的硬件密钥域密钥当前本地存储在哪个时隙/寄存器中。
控制从框518传递至“将经加密域启动镜像发送至具备密钥域能力的(多个)服务器”框520。将经加密域启动镜像发送至云服务提供商,并且具备密钥域能力的服务器上的云服务提供商的软件栈在正确物理存储器地址处将域启动镜像加载到存储器中(即,加载到存储器的k-位关闭(即,未加密)区域中)。
图6是根据本发明的一个实施例的由云服务提供商执行的方法的流程图。控制在“响应于消费者对服务的请求,向消费者提供域管理器镜像”框602处开始。消费者的请求可以特别针对虚拟化服务,或者消费者的请求可以是执行云服务提供商将经由虚拟机或消费者的其他进程执行的事务。
控制从“响应于消费者对服务的请求,向消费者提供域管理器镜像”框602继续进行到“为域管理器镜像分配空间并且向请求消费者提供存储器位置相关地址信息”框604。在此框中,云服务提供商为域管理器镜像分配存储器中的空间,并且向存储器位置相关地址信息的请求消费者通知已分配存储器空间。此存储器位置相关地址信息尤其可以包括存储器中的页的物理地址、页表的物理地址、控制寄存器信息、中断描述符表寄存器信息。存储器位置相关地址信息还可以包括期望的入口点。作为替代性实施例,云服务提供商可以创建消费者可以重新验证为正确的已经修复的域镜像。
如以上参照图5的“从云服务提供商处请求服务”框502提及的,云服务提供商可以识别可以提供密钥域能力的一组服务器。例如,一组服务器中的每个服务器可以使用同一密钥(还被称为组密钥),如直接匿名证实/增强隐私标识符(DAA/EPID)的组公共验证密钥。DAA是一种支持匿名的数字签名算法。不像传统数字签名算法,在所述传统数字签名算法中,每个实体具有唯一公共验证密钥和唯一私有签名密钥,DAA提供与唯一私有签名密钥中的许多(通常数百万)相关联的共同组公共验证密钥。DAA被创建以使得设备可以向外方证明其是哪种类型的设备(并且可选地在设备上运行哪个软件),而不需要提供设备身份,即,证明设备是组的真实成员而不需要透露是哪个成员。EPID通过提供能够在给出由私钥创建的签名的情况下取消所述私钥的附加效用来增强DAA,即使所述私钥本身仍然未知。
控制从框604继续进行到“与消费者交换密钥域密钥”框606,其中,具备密钥域能力的服务器从消费者处获得密钥域密钥。密钥域密钥由消费者提供为经加密的密钥,其中,已经使用具备密钥域能力的服务器的公钥对消费者的密钥域密钥进行加密。在一个实施例中,具备密钥域能力的服务器的存储器管理器使经加密密钥域密钥被写入具备密钥域能力的服务器的时隙/寄存器中,并且存储器加密引擎(如图4的存储器加密引擎415)从时隙/寄存器读取经加密密钥域密钥并使用具备密钥域能力的服务器的私钥对密钥域密钥进行解密。
控制从框606继续进行到“响应于消费者提供域启动镜像,将域启动镜像加载到存储器中的已分配空间中”框608。当消费者向具备密钥域能力的服务器提供VM工作负载时,消费者提供使用消费者的密钥域密钥加密的域启动镜像。具备密钥域能力的服务器将域启动镜像加载到在框604中分配的物理存储器空间中。域启动镜像在物理存储器位置处被安装于云服务提供商的服务器上的物理存储器中,所述物理存储器位置经由存储器位置相关地址信息传送至消费者。可以由云服务提供商(例如,使用物理地址的一部分,如k-位)使得共享的未加密存储器位置可用于初始地将此经加密启动镜像加载到存储器中。
因为多个服务器可以共享同一公钥,所以识别存储器位置相关地址信息可能需要解决这多个服务器之间的存储器冲突。在一个实施例中,可以解决组中的这多个服务器之间的存储器位置冲突,因为服务器的存储器中的位置相关的镜像是可能是短暂的消费者的域启动镜像。也就是说,域启动镜像用于启动消费者的较大域(VM)镜像,所述较大域镜像可以在由云服务提供商选择的存储器中的任何地方被分页。在启动消费者的较大域镜像之后,可以从存储器(已经执行了启动消费者的较大域镜像的功能)中移除经加密镜像的位置相关部分。因此,可以由云服务提供商管理存储器使用情况,这为位置相关启动镜像让出了空间,使用位置相关启动镜像来将域镜像的剩余部分投入到变量存储器中,并且然后释放域启动镜像所占用的空间(例如,为碰巧与那些相同存储器位置重叠的不同密钥域的不同域启动镜像让出空间)。
消费者的域镜像可以在软件控制下在多个阶段被启动。第一阶段是执行域启动镜像,所述域启动镜像由消费者根据存储器位置相关地址信息进行加密。第二阶段是启动消费者的域镜像的剩余部分,所述剩余部分不需要被加载到云服务提供商的服务器上的特定物理存储器位置中。
控制从框608继续进行到“创建并初始化存储器中的密钥域”框610。在一个实施例中,具备密钥域能力的服务器从消费者接收创建密钥域的请求。此请求可以包括经加密密钥域密钥,所述经加密密钥域密钥可以充当待由具备密钥域能力的服务器执行的创建密钥域(CreateKD)指令的输入值。CreateKD指令还可以通过静默处理器核、转储清除高速缓存以及旧密钥域的转换后备缓冲器(TLB)、并且使用密钥域的新密钥初始化存储器加密引擎来初始化新密钥域。使用新密钥域密钥初始化存储器加密引擎可以包括将密钥域密钥写入可由存储器加密引擎硬件访问的存储器时隙/寄存器。替代性地,这些初始化功能可以经由单独初始化密钥域(InitKD)指令执行。
控制从框610继续进行到“测量域启动镜像”框612。云服务提供商验证期望的域管理器镜像存在于消费者的经加密域启动镜像内。此验证确保特权代码(如VMX根组件)和数据结构包括在消费者的经加密域启动镜像中。
在一个实施例中,存储器管理器使用散列密钥域(HashKD)指令来验证域启动镜像的页包含提供商的域管理器(VMMlet)镜像。“安全散列”功能(如由国家标准与技术研究所(NIST)定义的安全散列算法3(SHA3))用于计算经加密域启动镜像内的提供商的域管理器镜像的散列值。安全散列算法使用散列函数转换数据,所述散列函数可以是包括逐位运算、模加法和压缩函数的算法。散列函数然后产生看起来一点也不像原始输入字符串的固定大小的字符串。这些算法被设计成单向函数,意味着一旦已经将原始输入数据转换成散列值,就几乎不可能将散列值转换回原始输入数据。
云服务提供商可以通过从本地存储器中的消费者的经加密域启动镜像构造域管理器镜像来验证域管理器镜像存在于消费者的域启动镜像内。云服务提供商然后可以执行HashKD指令对所构造域管理器镜像的本地存储器位置的内容所使用的同一验证函数(即,散列函数)。如果本地存储器位置的内容的验证函数(散列)值与hash KD指令的结果相匹配,则可以向云服务提供商保证提供商的域管理器镜像被正确地合并为消费者的经加密域启动镜像的一部分。
在一个实施例中,HashKD指令可以为高速缓存行提供散列值,或者在另一个实施例中,HashKD指令可以一次为相当于存储器的页提供散列值。
在一个实施例中,HashKD指令仅提供散列值,从而使得不向云服务提供商透露域启动镜像中的任何消费者秘密。消费者的秘密可以位于域启动镜像的VMX非根部分中,例如,作为在域管理器(VMMlet)之上运行的操作***的一部分。仅提供散列值作为HashKD指令的结果使得云服务提供商仅验证经加密域启动镜像的提供商的部分(域管理器镜像部分)。验证经加密域启动镜像的独立于消费者修改的(包括消费者秘密)部分的提供商的部分防止向云服务提供商披露消费者的秘密。
控制从框612继续进行到“是否被验证?”决策点614。如果域启动镜像测量结果未被验证,则控制继续进行到“错误”框626,在所述框中,云服务提供商可以向消费者报告验证失败。如果在“是否被验证?”决策点614处镜像测量结果被验证,则控制继续进行到“执行消费者的域启动镜像并且验证入口点”框616。
在“执行消费者的域启动镜像并且验证入口点”框616处,具备密钥域能力的服务器的栈将在期望的入口点(如经由存储器位置相关地址(“修复”变量)信息提供给消费者)处执行消费者的域启动镜像。存储器管理器VM将消费者加密的域启动镜像加载到未加密存储器页(k-位禁用)中。发起新密钥域。
在一个实施例中,具备密钥域能力的服务器的处理器执行切换密钥域(SwitchKD)指令,将目的地密钥域标识符/选择符、入口点地址和控制寄存器信息提供为输入。另外,在一个实施例中,由消费者(例如,使用密钥域密钥或其衍生物)计算的带密钥散列消息认证码(HMAC)用于验证入口点地址和控制寄存器信息正确。
在执行域启动镜像之前,具备密钥域能力的服务器可以关闭中断。在一个实施例中,在切换密钥域之后执行的第一指令是表示密钥域切换的期望入口点的特殊ENDBRANCH类指令。目的地域管理器(VMMlet)代码在ENDBRANCHKD指令之后验证VMM在受保护模式下。目的地域管理器(VMMlet)代码还验证控制寄存器和中断描述符表寄存器等正确。目的地域管理器(VMMlet)代码然后再启用中断并且从已保存状态恢复执行。
在一个实施例中,使用用于验证消费者的域启动镜像的HMAC函数来实施SwitchKD指令。此实施方式是SwitchKD的优选实施例,因为这种实施方式最灵活。消费者可以使用采用服务器硬件建立的秘密(例如,密钥域密钥或其衍生物)来在期望的处理器状态下计算HMAC(例如,SHA3HMAC)以供进入密钥域(例如,针对指令指针、栈指针、CR0、CR3、CR4、IDTR、GDTR、LDTR、可能影响VM的安全性的任何MSR等来验证处理器的寄存器)。SwitchKD指令的HMAC实施方式可以由消费者的域镜像动态地建立,并且可以通过计算多个HMAC(进入消费者的域镜像的每个唯一有效入口点一个HMAC)来支持多个入口点。这种使用HMAC动态地定义新入口点的灵活性允许服务器开始于原始的经加密域启动镜像、在固定初始入口点处执行原始的经加密域启动镜像、然后内部地(从密钥域内)将所述域启动镜像复制到新动态分配的存储器位置(根据提供商的存储器管理策略)以及针对新动态分配的存储器位置建立的新入口点位置。现在,原始域启动镜像以及原始域启动镜像密码地绑定到的静态存储器位置,然后可以被云服务提供商释放,在由提供商的存储器管理器软件动态地定义的位置处仅将动态地重新分配的VM镜像留在存储器中。以此方式,即使不同消费者的多个原始启动镜像碰巧在存储器中重叠,这些原始启动镜像也可以被顺序加载、转变到动态存储器位置、为下一个消费者的域启动镜像释放域启动镜像的存储器位置等等,当创建每个动态镜像时,每个执行域镜像针对新入口点使用消费者的密钥域密钥来重新计算HMAC。
替代性地,当创建新密钥域(CreateKD)时,入口点值(指令指针寄存器、栈指针寄存器、控制寄存器、中断描述符表寄存器等)可以由消费者使用具备密钥域能力的服务器建立并且由云服务提供商验证。
当具备密钥域能力的服务器执行域启动镜像时,页表被指定页表结构的根的物理地址的处理器的控制寄存器(即,CR3)引用。控制寄存器必须被设置为切换到密钥域的正确值。在一个实施例中,切换密钥域(SwitchKD)指令包括带密钥的散列参数(如SHA3HMAC)。带密钥的散列参数用于保证当执行域启动镜像时镜像内的正确页表结构在操作上由云服务提供商服务器的处理器使用(并且因此,所有存储器映射是正确的)。带密钥的散列参数用于确认当进入域启动镜像时云服务提供商的服务器处理器状态是正确的,因为处理器将验证针对云服务提供商服务器的处理器控制寄存器状态的带密钥散列参数(HMAC)、指令指针、栈指针等。
控制从“执行消费者的域启动镜像并且验证入口点”框616继续进行到“将消费者的域镜像的剩余部分加载到存储器中”框618。具备密钥域能力的服务器将消费者的域镜像的剩余部分加载到存储器中。消费者的域镜像的剩余部分可以包括例如图25的域镜像2532的剩余部分,包括(多个)操作***、(多个)应用、脚本或其他代码。
控制然后从“将消费者的域镜像的剩余部分加载到存储器中”框618继续进行到“使用包括在域启动镜像中的秘密密钥来验证消费者的域镜像的附加页”框620。运行中的经验证域镜像现在可以使用来自域启动镜像的秘密密钥验证消费者的域镜像的附加页。例如,域启动镜像可以包括用于分页、迁移、证明、通信以及其他功能的秘密密钥。
控制从“使用包括在域启动镜像中的秘密密钥来验证消费者的域镜像的附加页”框620继续进行到“在消费者密钥域内执行安全操作”框624。一旦已经适当地执行了消费者域(VM)镜像并且已经切换了相应密钥域,域管理器就可以完成加载操作***并且从云服务提供商的存储器管理器请求附加资源(存储器页、IO资源等)。停留在密钥域内部的保存和还原存储器操作(涉及例如VM控制结构、控制寄存器等)由存储器加密引擎硬件直接执行并且不暴露给云服务提供商。因为域管理器镜像作为云服务提供商的软件起源,所以一旦经验证,执行域管理器就将服从存储器管理器命令并且与其他域管理器协作。另外,像正常VMM一样,域管理器将保护服务器的硬件和资源免受消费者域的低特权代码(如操作***、应用等)的剩余部分。
图7是图示,示出了根据本发明的一个实施例的消费者域镜像(例如,消费者VM镜像)的组件。消费者域镜像710包括静态提供商供应的域管理器部分712和动态消费者供应的部分714。在一个实施例中,静态提供商供应的域管理器部分712与域管理器(VMMlet)相对应,所述域管理器是实例化并管理消费者虚拟机的特权代码。静态提供商供应的域管理器部分712还可以向云提供商服务的硬件发出用于创建密钥域的命令,从而提供待用于对属于新创建的密钥域的存储器位置进行加密的消费者的经加密密钥域密钥。静态提供商供应的域管理器部分712还可以向云提供商服务的硬件发出用于切换到不同密钥域的命令,从而为控制将切换至的密钥域提供消费者的经加密密钥域密钥。然后可以使得由域管理器(VMMlet)管理的虚拟机在当前有效的密钥域内运行。域管理器(VMMlet)特权代码可以由消费者测量并验证,由此使得消费者能够信任域管理器(VMMlet)特权代码作为其可信计算基的一部分。
为了在云提供商服务器的存储器中建立消费者域镜像710,消费者创建在云提供商服务器的存储器中执行的经加密域启动镜像。域启动镜像可以仅包含进行以下各项所需要的基本代码:(1)使得云服务提供商服务器硬件创建新密钥域或者切换到云服务提供商服务器的存储器内的现有密钥域并且(2)使得一些基线代码在密钥域内运行。例如,域启动镜像可以创建新虚拟机或者使得现有虚拟机访问由(1)中提供的代码的所述部分创建的密钥域的存储器位置内的数据。
域启动镜像由消费者创建,因为其将出现在云服务提供商服务器的存储器的指定存储器位置中。例如,消费者可以使用存储器位置相关密码利用消费者的密钥域密钥对域启动镜像进行加密以便将域启动镜像密码地绑定到云服务提供商服务器的存储器的指定存储器位置中。一旦经加密域启动镜像被加载到由存储器位置相关密码指定的存储器位置中,执行经加密域启动镜像然后就可以动态引导地将附加域镜像代码(如动态消费者供应的部分714代码)加载到消费者的域镜像710中。在一个实施例中,动态消费者供应的部分714与消费者域镜像的低特权代码(如操作***、应用等)相对应。
在一个实施例中,消费者的经加密域启动镜像至少包括域管理器(VMMlet)特权代码。在至少一个实施例中,消费者的经加密域启动镜像还包括一些消费者供应的代码。
因为域启动镜像在消费者自身的环境中由消费者使用消费者的密钥域密钥进行加密,所以执行经加密静态部分712可以被描述为在密钥域“外部”进行。因为只有消费者知道密钥域密钥,所以云服务提供商无法在不中断消费者的经加密域启动镜像的情况下创建、添加代码至或修改消费者的经加密域启动镜像。
一旦包括在消费者的域启动镜像中的代码代表密钥域内的消费者开始执行,执行消费者的域启动镜像代码就可以接管并扩展消费者的域镜像710。扩展消费者的域镜像710包括例如将新代码(如动态消费者供应的部分714)动态地添加到消费者的域镜像710。可以使用由消费者确定的协议将新代码添加到来自密钥域内的消费者的域镜像710和/或可以对所述域镜像进行修改(例如,可以仅在验证了新扩展码段之后扩展消费者的域镜像710)。
在将消费者的域镜像710写入来自密钥域内的存储器时,对来自那些存储器写操作的数据进行加密并且由存储器加密引擎使用存储器地址对其进行微调。因此,从密钥域内执行的读操作和写操作也是位置相关的,因为这些操作是根据在密钥域内执行的代码创建的。这种操作可以被描述为由存储器加密引擎在“密钥域内部”进行。换言之,在密钥域外部执行的云服务提供商软件无法修改或重新安排消费者域镜像的此动态创建的部分。
在一个实施例中,可以将已经被动态地扩展的消费者域镜像转换成消费者域镜像的静态版本。例如,当已经暂停并且将恢复对从消费者域镜像中实例化的虚拟机的执行时,可以执行从动态到静态消费者域镜像的转换。在虚拟机被暂停时可以采集动态消费者域镜像的副本,动态消费者域镜像的副本可以被转储清除至存储器,并且可以保存绑定到来自存储器的地址的密文。消费者可以重新计算与存储器地址相关联的任何完整性校验值并且重新创建消费者域镜像以便合并那些完整性校验值。当恢复虚拟机时,重新创建的消费者域镜像作为静态消费者域镜像可以被重新启动。
如参照图5和图6所描述的,由消费者创建的经加密域启动镜像包括消费者域管理器(VMMlet)镜像,所述消费者域管理器镜像是云服务提供商供应的域管理器(VMMlet)镜像的经修改版本。提供商供应的域管理器(VMMlet)镜像被修改以便结合云服务提供商的指定服务器的存储器位置相关地址信息。消费者域管理器镜像被静态地绑定到指定服务器和指定服务器的存储器地址,这意味着必须在指定服务器的指定存储器地址处安装消费者域管理器镜像并执行以便适当地起作用。
云服务提供商执行消费者的经加密域启动镜像(包含消费者的域管理器(VMMlet)镜像),这使得初始静态域管理器镜像被安装在指定服务器的指定静态存储器地址处。初始静态域管理器镜像作为消费者域管理器(VMMlet)在云服务提供商的服务器上执行。消费者域管理器(VMMlet)通过使消费者的VM镜像的代码被加载到存储器中并且作为消费者域(VM)被执行来管理代表消费者的虚拟机。消费者域(VM)通过服务器的存储器加密引擎执行对服务器的存储器中的数据的操作。消费者域(VM)镜像的存储器占用随着消费者域(VM)镜像动态地改变而动态地增长和收缩。
图8是图示,示出了根据本发明的一个实施例的数据物理地址870。数据物理地址870可以用于确定以上所讨论的密钥或微调。
如以上所描述的,可以使用数据物理地址870(或者替代性地,通过高速缓存传递的其他元数据)的未使用的物理地址位874(也被称为别名位874)来定义密钥域。例如,因为将可能存在安装在***中的比可以使用64位物理存储器地址寻址的更少的物理存储器,所以未使用的最高有效地址位874可以用于在不同“密钥域”之间进行选择。如以上所描述的,术语“密钥域(keydomain)”指使用共同密钥域密钥加密的一组存储器位置。数据物理地址870的未使用的位可以用于确定例如在加密和/或解密物理存储器地址的存储器时要使用哪个秘钥和/或微调。可以基于未使用的地址位/别名位874为同一数据物理地址870选择不同密钥。例如,加密技术XTS(基于XEX的具有密文挪用的微调码本模式)可以针对同一物理存储器位置的微调使用未使用的地址位/别名位874,其中,即使数据相同,不同的地址别名也可能导致不同密文。
数据物理地址的剩余位876用于标识存储器中存储数据的位置的物理存储器地址。尽管两个密钥域地址可以别名化为同一外部存储器位置,但是当来自物理存储器位置的数据被读入高速缓存中时,高速缓存将密钥域地址独立地保持为全地址解析(例如,包括全64位物理存储器地址)。
可以基于未使用地址位来选择不同密钥(例如,XTS可以使用针对同一物理存储器位置的微调的别名位),其中,即使数据相同,不同地址别名也可能导致不同密文。
因为当由于未填充的存储器而存在未使用地址位时未使用地址位874别名化为密钥域的存储器中的同一物理地址,所以密钥域选择符可以被设置为未使用地址位的值。替代性地,如果将共享存储器中的物理地址中的数据,则密钥域选择符可以被设置为零(即,不限于特定密钥域)。
在一个实施例中,“k-位”字段872表示数据物理地址870的一位,在这种情况下,是数据物理地址870的最高位。k-位可以由页表或扩展页表中的域管理器(VMMlet)或虚拟机(VM)设置以便指示是否应当使用相应密钥域密钥对由存储器访问所产生的数据进行加密。当k-位=0时,k-位被认为是禁用的,并且不由密钥域密钥对由存储器访问所产生的数据进行加密(但是有可能的是,可以使用共享密钥对数据进行加密)。当k-位=1时,k-位被认为是启用的,并且可以使用密钥域密钥对存储器访问的结果进行加密。k-位字段872还可以用于指定共享的且不需要密钥域加密的存储器范围。在替代性实施例中,k-位可以是与高速缓存行相关联并且通过高速缓存而不是数据物理地址的组件承载的附加元数据。
在***具有足够的已安装存储器以使得使用数据物理地址870的所有地址位(除了一个k-位872)的情境中,当k-位为真/启用时,密钥域地址消耗总填充存储器(与密钥域的物理地址位相对应)的物理范围。当k-位关闭/禁用时,密钥域选择符位874引用所有存储器范围仅作为明文(或共享),从而使得所有填充的存储器可寻址为共享存储器。
图9是图示,示出了根据本发明的一个实施例的虚拟到物理存储器映射。当今许多计算机***使用虚拟存储器***来管理存储器并将存储器分配给在***内运行的各种进程。虚拟存储器允许在***上运行的每个进程如同其具有对由***提供的地址的全部范围的控制那样运行。操作***(OS)将每个进程的虚拟地址空间映射为***的实际物理地址空间。从物理地址到虚拟地址的映射通常通过使用页表来完成。
术语“地址空间(address space)”在本文中用于指存储器中与给定进程或虚拟机(virtual machine,VM)相对应的一组地址,并且“地址空间标识符(address spaceidentifier,ASID)”可以是数字、代码或标识与ASID相关联的一个或多个地址空间的其他符号。
图9表示不存在别名化的情况;即,足够的存储器在***中可用,从而使得密钥域选择符地址位974与页地址976和高速缓存行选择符978一起用于选择由数据行物理地址975引用的实际物理存储器位置。在此,每个单独密钥域将位于物理存储器920的非重叠范围中。
图9示出了根据本发明的实施例的虚拟地址到物理地址映射。可以使用虚拟地址900对物理存储器920中的物理页822内的物理地址924进行寻址。如所示出的,虚拟地址900包括用于索引多级分页结构960以便访问物理地址924的许多字段,所述物理地址对物理存储器920内的特定物理页922进行寻址。注意,多级分页结构960仅是用于访问物理存储器位置的多级分页结构的一个示例。尽管参照64位虚拟地址描述了多级分页结构960,但是不同页表结构可以用于32位虚拟地址、物理地址扩展(PAE)扩展的模式地址、或其他类型的虚拟地址。
在虚拟地址900中,偏移字段902(如64位地址的位0至位11)用于对物理存储器920的物理页922内的物理地址924(如由指针903示出的)进行寻址。页表条目字段904(名称为“表”,如64位地址的位12至位20)对页表930中的页表条目932(如由指针962c示出的)进行寻址。页目录条目906(名称为“目录”,如64位地址的位21至位29)对页目录640中的页目录条目942(如由指针962b示出的)进行寻址。页目录指针909(名称为“PDP”,如64位地址的位30至位38)对页目录指针表(PDPT)950中的页目录指针条目952(如由指针962a示出的)进行寻址。可以使用控制寄存器(如CR3)中的指针961访问OS分页结构960的基地址。在这种方式下,64位线性地址可以用于实施多级分页结构以便访问物理地址。
图9还示出了与物理存储器920的物理页922的物理地址924相对应的数据物理地址970的组件。“k-位”字段972表示数据物理地址970的一位,在这种情况下,是数据物理地址970的最高位。k-位可以由页表或扩展页表中的域管理器(VMMlet)或虚拟机(VM)设置以便指示是否应当使用相应密钥域密钥对由存储器访问所产生的数据进行加密。当k-位=0时,k-位被认为是禁用的,并且不由密钥域密钥对由存储器访问所产生的数据进行加密(尽管可能的是,可以使用共享密钥对数据进行加密)。当k-位=1时,k-位被认为是启用的,并且可以使用密钥域密钥对存储器访问的结果进行加密。k-位字段772还可以用于指定共享的且不需要密钥域加密的存储器的范围。在替代性实施例中,k-位可以是与高速缓存行相关联并且通过高速缓存而不是数据物理地址的组件承载的附加元数据。
在数据物理地址970中,“未使用地址位:密钥域选择符”字段974可以表示用于在密钥域之间进行区分的一组未使用地址位。如果两个数据物理地址的未使用地址位具有不同值,则它们别名化为存储器中的同一物理地址。“页地址”字段976表示物理存储器920中的物理页922的地址。“高速缓存行选择符”字段978表示由“页地址”字段976引用的页内的高速缓存行。同时,“页地址”字段976和“高速缓存行选择符”字段978构成“数据行物理地址”字段975,所述“数据行物理地址”字段表示物理存储器920中的实际物理位置。“高速缓存行字节”字段979包含高速缓存行中的字节数。
现在参照图10,示出了根据本发明的实施例的另一个虚拟地址到物理地址映射。如图10中所示出的,可以使用虚拟地址1000对经别名化物理存储器1010中的经别名化访客物理页1012内的经别名化访客理地址1014进行寻址。如所示出的,虚拟地址1000包括用于索引多级分页结构1060以便访问经别名化访客物理地址1014的许多字段,所述经别名化访客物理地址对物理存储器位置1020内的特定页1022进行寻址。注意,多级分页结构1060仅是用于访问物理存储器位置的多级分页结构的一个示例。尽管参照64位虚拟地址描述了多级分页结构1060,但是不同页表结构可以用于32位虚拟地址、物理地址扩展(PAE)扩展的模式地址、或其他类型的虚拟地址。
经别名化物理存储器1010还包括经别名化访客物理页1016,所述经别名化访客物理页表示别名化为同一物理存储器位置1022的经别名化访客物理存储器610的第二范围。
在虚拟地址1000中,偏移字段1002(如64位地址的位0至位11)用于对经别名化物理存储器1010的经别名化访客页1012内的经别名化访客物理地址1014(如由指针1003示出的)进行寻址。页表条目字段1004(名称为“表”,如64位地址的位12至位20)对页表1030中的页表条目1032(如由指针1062c示出的)进行寻址。页目录条目1006(名称为“目录”,如64位地址的位21至位29)对页目录640中的页目录条目1042(如由指针1062b示出的)进行寻址。页目录指针1008(名称为“PDP”,如64位地址的位30至位38)对页目录指针表(PDPT)1050中的页目录指针条目1052(如由指针1062a示出的)进行寻址。可以使用控制寄存器(如CR3)中的指针1061访问OS分页结构1060的基地址。在这种方式下,64位线性地址可以用于实施多级分页结构以便访问物理地址。
图11是图示,示出了根据本发明的一个实施例的云服务提供商向消费者提供域镜像的初始步骤。
在图11中所示出的示例中,包括硬件1110的云服务提供商服务器的存储器管理器1140为域镜像1122分配存储器1112中的空间1114,并且向请求消费者通知存储器位置相关地址(“修复变量”)信息。此存储器位置相关地址(“修复变量”)信息尤其可以包括:存储器中的页的物理地址(如构成空间1114的页的物理地址)、页表的物理地址、控制寄存器信息、中断描述符表寄存器信息等。作为替代性实施例,云服务提供商可以创建消费者可以重新验证为正确的已经修复的域镜像。特别地,域镜像的需要更改的部分是如图9中所示出的页表中的物理存储器页地址,页表条目832。页表条目932指向物理存储器920中的物理页922。域镜像可以被看作一系列页(例如,每个页4K字节),其中每个页给定物理页地址(存储器中其位置)。镜像验证然后包括检查在给定包括域镜像的页的内容的情况下通过页表的虚拟到物理映射是正确的。
图12是图示,示出了根据本发明的一个实施例的消费者1201与云服务提供商的存储器管理器1240之间用于向消费者提供域管理器镜像(如图11的VMMlet镜像1122)的消息。
响应于消费者对服务的请求,云服务提供商的服务器(即,存储器管理器1240)的软件被配置用于向消费者提供域管理器镜像(如图11的VMMlet镜像1122)。存储器管理器1240还向消费者发送域管理器镜像的存储器位置相关地址信息(在本文中还被称为修复变量信息)。消费者验证域管理器镜像有效或者使用第三方来验证域管理器镜像有效。
在如参照图11所描述的确定域管理器(VMMlet)镜像有效之后,消费者将识别由云服务提供商提供的存储器位置的存储器位置相关地址信息用作修复变量信息以便修改由云服务提供商提供的经验证的域管理器镜像从而创建用于启动域管理器(VMMlet)的域启动镜像。替代性地,域管理器镜像可以被云服务提供商“修复”,从而使得域管理器镜像准备在已分配存储器位置中运行。
在一个实施例中,消费者还可以将消费者自身的组件(如用于安全通信的消费者的秘密密钥)添加到域启动镜像。具有用于安全通信的方法允许消费者的基本域启动镜像使用消费者的秘密密钥从消费者处安全地检索消费者的域(VM)镜像的剩余部分。消费者还可以包括域启动镜像中消费者自身的操作***、应用等。
最后,当消费者的域启动镜像包括任何消费者供应的组件时,消费者对域启动镜像进行解密。参照图13进一步描述了“修复”域管理器(VMMlet)镜像并且创建经加密域启动镜像。
图13是图示,示出了根据本发明的一个实施例的云服务环境的组件之间用于对域启动镜像进行加密并且建立密钥域的消息。如以上所描述的,消费者1301修改由云服务提供商提供的经验证的域管理器镜像以便创建域管理器(VMMlet)的域启动镜像。然后使用存储器位置相关“微调的”密码和消费者的密钥域密钥对域启动镜像进行加密。
消费者1301还可以使用密钥域密钥来计算经加密域启动镜像的完整性校验值(ICV,例如,带密钥散列消息认证码(HMAC)值)。ICV可以作为位置相关值而被计算并且用于验证位置以及经加密域启动镜像的相关联的存储器位置的内容。
消费者1301请求云服务提供商存储器管理器1340识别云服务提供商的网络中提供密钥域管理功能的服务器。云服务提供商存储器管理器1340(在此示例中,从具有CPU1311的服务器)获得具备密钥域能力的服务器的服务器证书并且将服务器证书提供给消费者1301。消费者1301验证服务器证书由证明所识别的服务器提供了密钥域管理功能的机构进行签名。
消费者1301使用云服务提供商的具备密钥域能力的服务器的与具备密钥域能力的服务器的证书相对应的公钥对消费者的密钥域密钥进行加密。消费者1301将经加密密钥域密钥、经加密启动镜像以及(可选地)完整性校验值(ICV)发送至云服务提供商存储器管理器1340,所述云服务提供商存储器管理器向具备密钥域能力的服务器的CPU 1311提供创建密钥域(CreateKD)命令。在一个实施例中,云服务提供商存储器管理器1340识别密钥域地址选择符以用于新密钥域,从而将密钥地址域选择符提供给具备密钥域能力的服务器的CPU1311。具备密钥域能力的服务器的CPU 1311创建并初始化密钥域。初始化密钥域可以包括转储清除(由之前的密钥域地址选择符所识别的)任何之前的密钥域的高速缓存以及转储清除高速缓存了对之前密钥域的地址映射的转换后备缓冲器。作为执行初始化功能(作为创建密钥域指令的一部分)的替代方案,具备密钥域能力的服务器的CPU 1311可以执行初始化密钥域(InitKD)指令以便转储清除高速缓存和转换后备缓冲器。具备密钥域能力的服务器的CPU1311还可以向存储器加密引擎1315(图13中示出为具有完整性的总存储器加密引擎,指定为TMEi 1315)提供经加密密钥域密钥以及识别新密钥域的密钥域地址选择符,尽管替代性实施例将使用存储器加密引擎(MEE)。
图14是图示,示出了根据本发明的一个实施例的消费者为域管理器(VMMlet)提供经加密启动镜像。如参照图5、图12和图13所描述的,消费者使用由云服务提供商提供的存储器位置相关地址信息和密钥域密钥对域启动镜像进行加密。在一个实施例中,消费者使用页地址微调和密钥域密钥对存储器位置相关XTS模式中的域启动镜像进行加密。
在图14中,消费者1410将经修复VMMlet 1462(图10的提供商的原始VMMlet 1022的经修改版本)作为经加密域(VM)启动镜像1460的一部分发送给云服务提供商的存储器管理器1440。云服务提供商的存储器管理器1440将经加密VM启动镜像1460的经修复VMMlet镜像1462加载到已经在共享存储器1412s内预留(如图10的空间1014)的先前分配的存储器空间1414中。因为共享存储器1412s是未加密存储器页(k-位禁用),所以存储器管理器1440需要确保经加密VM启动镜像被完全加载到物理存储器1412s中并且不保持高速缓存驻留。将经加密VM启动镜像1460写入物理存储器1412s可以通过从高速缓存转储清除经加密VM启动镜像1460(例如,使用CLFLUSH指令)或者使用未高速缓存的/通写/非暂态存储器访问来完成的。针对写入操作的这些技术保证消费者的经加密镜像数据被直接写入经过硬件1410的存储器加密引擎并且写入到存储器1412s中(并且不保持高速缓存驻留)。
图15是图示,示出了根据本发明的一个实施例的云服务环境的组件之间用于将消费者1501的经加密域镜像加载到具备密钥域能力的服务器的存储器1512中的消息。如以上关于图11所描述的,云服务提供商的软件(如具备密钥域能力的服务器的存储器管理器1540)将经消费者加密的域启动镜像加载到存储器1512的未加密存储器页(k-位禁用)中。云服务提供商的软件(即,存储器管理器1540)还将经加密域镜像的ICV写入到ICV表中。ICV表可以是存储器1512的由存储器加密引擎(TMEi)引擎1515管理和保护的受保护范围。由不是存储器管理器1540的一部分的软件组件对存储器地址的此范围的写入操作可以被存储器加密引擎(TMEi)1515拦截,所述存储器加密引擎同样可以配置存储器1512中的ICV值。
类似地,存储器加密引擎(TMEi)1515可以防止软件从这个受保护存储器范围内读取ICV值进而防止由恶意软件对ICV值的重放。一旦ICV值被建立,就只有存储器加密引擎(TMEi)1515可以读取ICV值。防止软件重放ICV值防止对动态域镜像内容(例如,随后提供给域启动镜像的消费者的域镜像的剩余部分)的重放。因为静态镜像内容的ICV值由消费者提供,所以静态镜像内容(例如,域启动镜像)可以被重放。
ICV自身提供对数据的完整性校验以及数据的位置(地址),并且ICV使用用于对ICV校验的数据行进行加密的密钥域密钥或其衍生物来进行加密。(例如,HMAC使用秘密密钥,伽罗瓦/计数器模式(GCM)和IP散列也是这样。)
在一个实施例中,散布的高速缓存行数据的部分副本是使用用于计算安全ICV的密钥域密钥来加密的XTS。在一个实施例中,使用与其用于完整性校验的存储器位置相同的密钥域密钥对ICV表条目进行加密。对ICV使用同一密钥域密钥密码地保护的存储器位置中的ICV和数据两者进行加密保证ICV属于与其保护的数据相同的密钥域。
密钥域的地址选择符也被提供在未加密存储器(k-位禁用)中。当将由消费者使用消费者的密钥域密钥计算的ICV写入ICV表时,地址还指示包含密钥域的ICV的ICV表中的位置。(换言之,对于从消费者的经加密域启动镜像写入到存储器的每个数据,存在写入所述数据行的ICV表的相应完整性校验值)。
没有密钥域用于将消费者的经加密域启动镜像数据写入存储器1512(因为消费者的域启动镜像数据已经由消费者进行加密)。换言之,存储器管理器1540可以将消费者的经加密域启动镜像写入存储器1512中的共享的未加密位置而不需要任何附加加密。(存储器管理器1540将消费者的经加密镜像加载到存储器1512中,从而使得当使用消费者的密钥开启存储器加密时(将k-位设置为1或“启用的”),存储器加密引擎(TMEi)1515将在从存储器1512中读取消费者的镜像时对所述消费者的镜像进行适当解密)。
具备密钥域能力的服务器的CPU 1511从存储器1512中的未加密位置获得密钥域的地址选择符并且将密钥域的地址选择符提供给存储器加密引擎(TMEi)1515。存储器加密引擎(TMEi)1515然后将经加密启动镜像写入具备密钥域能力的服务器的存储器1512。类似地,具备密钥域能力的服务器的CPU 1511获得指示包含密钥域的ICV的ICV表中的位置的地址。CPU 1511向存储器加密引擎(TMEi)1515提供包含密钥域的ICV的ICV表的位置。存储器加密引擎(TMEi)1515然后使用密钥域的ICV更新存储器1512中的ICV表。存储器管理器1540从高速缓存1513转储清除这些值(例如,通过发出用于执行CLFLUSH指令的命令)或者使用未高速缓存/通写/非暂态存储器访问来保证ICV数据被直接写入存储器1512。
更新在具备密钥域能力的服务器的存储器中的密钥域的完整性校验值(ICV)是只写操作,从而使得云服务提供商的软件(存储器管理器1540)无法读取密钥域的ICV。这种只写操作防止对动态镜像数据的重放。只有域启动镜像ICV可以被原位重放(消费者知道位置,因为消费者创建了经加密启动镜像和ICV)。在不将附加ICV(如随着存储器被在当前密钥域内执行的应用更新而被动态创建的那些ICV)暴露给云服务提供商的软件(甚至存储器管理器1540)的情况下,此功能允许提供商暂停、存储并稍后恢复重新使用消费者的域启动镜像的VM。
图16是图示,示出了根据本发明的一个实施例的密钥域的初始化。具备密钥域能力的服务器的存储器管理器1640可以通过向域管理器(VMMlet)1622发出初始化密钥域(InitKD)命令来初始化新密钥域1650。InitKD命令使得具备密钥域能力的服务器的CPU1611执行InitKD指令,所述指令使核静默、转储清除旧密钥域的高速缓存、转储清除包含旧密钥域映射的所有转换后备缓冲器和地址空间标识符(ASID),并且使用密钥域地址选择符的新密钥域密钥来初始化具备密钥域能力的服务器的存储器加密引擎(TMEi)。
在一个实施例中,初始化密钥域是由创建密钥域(CreateKD)指令执行的动作之一。下文中对创建密钥域(CreateKD)指令的参考可以指不仅根据服务器的公钥加密的密钥域密钥创建密钥域而且还通过以下各项来初始化新域的CreateKD指令:使核静默、转储清除旧密钥域的高速缓存、转储清除包含旧密钥域映射的所有转换后备缓冲器和地址空间标识符(ASID),并且使用密钥域地址选择符的新密钥域密钥来初始化具备密钥域能力的服务器的存储器加密引擎(TMEi)。
图17是根据本发明的一个实施例的在执行创建密钥域操作时对具备密钥域能力的服务器的CPU进行操作的方法。在“接收具有经加密密钥域密钥的创建密钥域命令”框1710中,具备密钥域能力的服务器CPU接收具有输入参数KD_Id(本地密钥域标识符(密钥域地址选择符))和经加密_密钥(经加密密钥域密钥)的创建密钥域命令。控制继续进行到“使用服务器的私钥对经加密密钥域密钥进行解密,并且对可选配置策略进行解密”框1720,在所述框中,使用服务器的私钥(对云服务提供商未知/未暴露的秘密密钥)对经加密密钥域密钥进行解密。可选地,还可以再次使用服务器的私钥对配置策略进行解密,或者替代性地,可以使用服务器的私钥对策略数据的散列值进行解密。控制继续进行到“经解密的密钥域密钥和策略是否有效?”决策点1730。可能被评估的策略数据的示例包括服务器期望安装的存储器的量、服务器应当使用的加密算法、被套接的CPU的量、是否允许硬件调试等等。由硬件将此策略数据与服务器的当前配置进行比较以便保证在使用消费者的密钥域密钥之前服务器的配置按照消费者的期望有效。如果经解密的密钥域密钥和配置策略无效,则控制继续进行到“返回错误”框1740,在所述框中,CPU响应于创建密钥域命令而返回错误。
在“经解密的密钥域密钥和策略是否有效?”决策点1730处,如果经解密的密钥域密钥和配置策略有效,则控制继续进行到“建立新密钥域”框1750。在建立新密钥域时,具备密钥域能力的服务器的CPU防止其他CPU使用密钥域标识符,或者以其他方式验证其他CPU当前未使用密钥域标识符、转储清除密钥域标识符的高速缓存、转储清除密钥域标识符的所有转换后备缓冲器地址空间标识符,并且设置存储器加密引擎中的当前密钥域标识符和密钥域密钥。控制然后继续进行到“为新密钥域标识符分配ASID标签并且恢复”框1760,在所述框中,为新密钥域标识符分配新地址空间标识符(ASID)标签并且恢复发出创建密钥域命令的进程。此外,如果之前被静默,则所有处理器被重新启用。
图18是图示,示出了根据本发明的一个实施例的对域镜像的验证。具备密钥域能力的服务器的存储器管理器1840的验证散列函数1846使用散列密钥域(HashKD)指令来验证密钥域1850的域镜像(例如,VMMlet 1822)是正确的。域镜像中的一些值将是机器特定变量/修复(如页表中所使用的物理地址)的值。这些机器特定变量的散列值可以由云服务提供商虚拟地重建(替代当前地址值)。当所产生的HashKD散列值与域管理器(VMMlet)提供商/镜像的静态部分的散列的期望值相匹配时,消费者和云服务提供商均承认域启动镜像是正确的。一些其他镜像位置可以包含消费者的秘密(例如,域镜像的OS部分中的密钥/代码/数据)。可以对这些地址进行散列,但是散列值将不向云服务提供商公开存储器明文(以及因此秘密)。散列值可以具有最小粒度,如不小于高速缓存行或不小于存储器的页(例如,4KB)。
当安全VM首次执行时,由于HashKD可以在初始化时用来通读密钥域,所以安全VM可以关闭其密钥域中的HashKD功能,从而向云服务提供商提供域管理器(VMMlet)被消费者适当地配设的可见性。否则,可能不需要HashKD功能。
图19是图示,示出了根据本发明的一个实施例的云服务环境的组件之间用于验证域镜像的消息。在第一消息中,云服务提供商软件(如具备密钥域能力的服务器的存储器管理器1940)请求待在存储器位置上执行的散列密钥域(HashKD)函数,在所述存储器位置处,安装了域管理器(VMMlet)的消费者的经加密启动镜像。CPU 1911执行散列密钥域(HashKD)指令,从而经由高速缓存1913向存储器加密引擎(TMEi)1915提供标识待散列的密钥域的当前地址选择符。存储器加密引擎(TMEi)1915从安装了经加密启动镜像的存储器位置读取经加密数据行,并且存储器加密引擎(TMEi)1915使用由地址选择符标识的密钥域的密钥来对数据行进行解密。存储器加密引擎(TMEi)1915将经解密数据发送至高速缓存1913,从而使用地址和密钥域地址选择符来对经解密数据进行标记。具备密钥域能力的服务器的CPU1911创建经解密数据的散列值、将所产生的散列值存储在CPU 1911的寄存器中或存储器1912的存储器位置中,并且云提供商的软件(即,存储器管理器1940)验证散列值与最初提供给消费者的针对域镜像的期望散列值相匹配。
图20是根据本发明的一个实施例的在执行散列密钥域操作时对具备密钥域能力的服务器的CPU进行操作的方法的流程图。在“接收散列密钥域命令”框2010处,具备密钥域能力的服务器的CPU接收具有输入参数——密钥域标识符和物理地址的散列密钥域命令。控制继续进行到“密钥域标识符和地址是否有效?”决策点2020,在决策点2020处,具备密钥域能力的服务器的CPU判定密钥域标识符和物理地址是否有效。为了作出这个判定,具备密钥域能力的服务器的CPU可以验证物理地址指向填充的存储器位置、并且存在针对物理地址的页表映射和读取权限。具备密钥域能力的服务器的CPU还可以验证密钥域标识符具有针对所述密钥域标识符的安装在存储器加密引擎(TMEi)中的相应密钥域密钥。如果密钥域标识符和物理地址是无效的,则控制继续进行到“返回错误”框2030,在所述框中,错误被返回给散列密钥域命令的发出方。如果密钥域标识符和物理地址在“密钥域标识符和地址是否有效?”决策点2020处是有效的,则控制继续进行到“设置物理地址中的密钥域标识符、设置k-位、读取物理地址处的存储器位置的内容”框2040。物理地址的未使用的位被设置为密钥域标识符,k-位的值被设置为1以便指示将从物理地址处的存储器位置读取经加密数据,并且由存储器加密引擎(TMEi)使用由密钥域标识符标识的密钥域的密钥域密钥来读取物理地址处的存储器位置的内容。当读取物理地址处的存储器位置的内容时,存储器加密引擎(TMEi)使用密钥域密钥来对内容进行解密。存储器加密引擎(TMEi)将物理地址处的存储器位置的经解密内容置于高速缓冲中,并且具备密钥域能力的服务器的CPU通过对高速缓存中的经解密的内容进行散列来计算散列值,如SHA2/3散列值。控制继续进行到“返回存储器内容的散列值”框2050,在所述框中,散列值被返回给HashKD命令的发出方。HashKD指令的发出方然后可以判定是否切换到经验证密钥域。
图21是图示,示出了根据本发明的一个实施例的密钥域之间的切换。切换到新密钥域由具备密钥域能力的服务器的存储器管理器2140启动以便从一个密钥域切换到另一个密钥域。例如,可以响应于对由具备密钥域能力的服务器接收的服务的新消费者请求而启动切换到新密钥域。先前已向消费者提供了域管理器镜像,存储器管理器2140获得包含消费者经由未加密(k-位禁用)存储器2112已经提供的存储器位置相关地址信息(如入口点地址2123)的域管理器镜像(例如,VMMlet 2122)的已修复版本。存储器管理器2140向硬件2110的CPU发出切换密钥域(SwitchKD)命令,所述CPU使域管理器镜像(VMMlet)2122在具备密钥域能力的服务器的存储器中的入口点地址2123处开始执行,由此建立密钥域2150。
在一个实施例中,消费者计算针对进入新密钥域之前的期望处理器状态的HMAC值。针对期望处理器状态的HMAC值包括针对以下各项的期望值:指令指针;栈指针;控制寄存器(如控制寄存器0、3和4);以及特殊描述符表寄存器,如GDTR、LDTR、可以适于对包含域管理器镜像的经加密域启动镜像的正确执行的任何MSR、以及IDTR。例如,此HMAC值将确保密钥域内的适当执行(即,所述中断被关闭)或者不输入新密钥域并且密钥域之间不发生切换。
可以使用切换密钥域(SwitchKD)指令来完成对新密钥域内的域管理器(VMMlet)的执行。此CPU指令使用密钥域密钥来确定HMAC值以便在进入时对处理器的当前处理器状态进行验证。例如,可以根据与用于计算针对期望处理器状态的HMAC值相同的信息(包括指令指针、栈指针、控制寄存器、以及特殊描述符表寄存器)来计算散列函数。如果期望处理器状态的经计算HMAC值与进入时CPU的当前处理器状态的散列值不匹配,则切换密钥域指令将失败。密钥域选择符将保持不变,并且域管理器(VMMlet)的执行将不切换到新密钥域。
在另一个实施例中,转移到新密钥域中的控制流终止于结束分支密钥域(ENDBRANCHKD)指令。将控制流从另一个密钥域变换到新密钥域中的唯一方式是在入口点处进入新密钥域,在所述入口点处,待执行的下一个指令是结束分支密钥域指令。用于改变密钥域的此要求向消费者保证控制流转移通过期望入口点。
在正确执行切换密钥域(SwitchKD)指令之后,现在在密钥域内测量并正确地运行域管理器(VMMlet)。所有其他功能由软件提供用于加载消费者的域(VM)镜像的剩余部分、执行安全存储、通信、分页(例如,页出,消费者的域(VM)镜像需要通过域管理器(VMMlet))、迁移、输入/输出(I/O)等。
图22是图示,示出了根据本发明的一个实施例的在密钥域内部执行时云服务环境的组件之间的消息。在一个实施例中,消费者计算针对进入新密钥域之前的期望处理器状态的散列消息认证码(HMAC)值。针对期望处理器状态的HMAC值包括针对以下各项的期望值:指令指针;栈指针;控制寄存器(如控制寄存器0、3和4);以及特殊描述符表寄存器,如GDTR、LDTR、任何相关MSR、以及IDTR。例如,此HMAC值将确保处理器状态使得在密钥域内发生对域管理器(VMMlet)的恰当执行(即,中断被关闭)。
在下一个通信中,云服务提供商软件(如具备密钥域能力的服务器上的存储器管理器2240)发出SwitchKD命令以便使具备密钥域能力的服务器的CPU2211切换密钥域。CPU2211设置密钥域选择符并且检查期望处理器状态HMAC值与针对当前CPU状态所计算的HMAC值相匹配。如果HMAC值匹配,则切换密钥域,转储清除指令流水线,针对密钥域标识符改变转换后备缓冲器(TLB)地址空间标识符(ASID)标记,并且域管理器(VMMlet)在新密钥域中执行。当在k-位启用的新密钥域中执行时,使用设置为密钥域选择符值的地址来访问密钥域的存储器位置。当在新密钥域中执行时,存储器加密引擎(TMEi)2215可以读取并写入来自存储器2212的密钥域经加密数据,并且检查和/或更新针对经加密数据的完整性校验值(ICV)。如果ICV值与经加密数据一致,则经加密数据被解密到针对地址和密钥域选择符的高速缓存2213中。
图23是根据本发明的一个实施例的在执行切换密钥域操作时对具备密钥域能力的服务器的CPU进行操作的方法的流程图。在“接收具有密钥域标识符、CPU状态、以及期望HMAC值的输入参数的切换密钥域命令”框2310处,由CPU接收切换密钥域命令。切换密钥域命令的输入参数包括切换到的密钥域标识符、用于切换到新密钥域的期望CPU状态、以及针对处理器状态的期望HMAC值。控制继续进行到“期望HMAC值是否与CPU状态相匹配?”决策点2320。在决策点2320处,判定当前CPU状态和/或指定为用于SwitchKD指令的参数的提出的CPU状态是否与期望HMAC值相匹配。某些CPU状态信息(如指令指针)是由SwitchKD指令设置为参数的状态。如果HMAC还与指令指针参数相匹配,则SwitchKD将相应地将指令指针寄存器设置在CPU中,从而在所述指令位置处开始执行时在新密钥域中的恢复。替代性地,所有CPU状态值可以是用于SwitchKD的参数,这意味着如果HMAC与所述提出的输入状态相匹配,则SwitchKD将所有寄存器状态填入输入参数。在决策点2320处,如果针对处理器状态的期望HMAC值与针对当前CPU状态计算的HMAC值或指定为用于SwitchKD指令的参数的提出的CPU状态不匹配,则在“返回错误(不切换密钥域)”框2330中,不切换密钥域,并且不将错误返回给切换密钥域命令的发出方。
在“期望HMAC值是否与CPU状态相匹配?”决策点2320处,如果针对处理器状态的期望HMAC值与针对当前CPU状态计算的HMAC值相匹配,则控制继续进行到“切换到新密钥域”框2340。在“切换到新密钥域”框2340处,转储清除CPU流水线,并且针对转换后备缓冲器(TLB)的地址空间标识符(ASID)标记被设置为新密钥域标识符或转储清除的TLB。当前密钥域被设置为密钥域标识符,并且CPU寄存器被设置成与CPU状态输入参数值相匹配。控制然后继续进行到“进行分支以便在由CPU状态的指令指针所指示的位置处执行指令”框2350。在框2350处,对具备密钥域能力的服务器的CPU进行分支以便在由如提供为用于SwitchKD指令的输入参数的CPU状态的指令指针多指示的位置处执行指令。在完成SwitchKD指令的执行时,域管理器(VMMlet)在新密钥域内运行。
图24是根据本发明的一个实施例的在响应于页未命中而执行对分页结构的遍历时对具备密钥域能力的服务器的CPU进行操作的方法的流程图。控制在“在发生页未命中时,处理器遍历分页结构”框2410处开始。在遇到页未命中(在转换后备缓冲器内没有发现CPU尝试读取或写入的页)时,具备密钥域能力的服务器的CPU开始遍历分页结构(如参照图9所描述的OS分页结构860或参照图9所描述的OS分页结构960)。例如,具备密钥域能力的服务器的CPU可以通过读取针对指向分页结构的基地址的指针的控制寄存器3(CR3)来开始。控制然后继续进行到“分页结构是否被误配置?”决策点2420,在决策点2420处,CPU判定分页结构是否按照期望被配置。例如,CPU判定操作***的页故障是否已经发生,或者VMExit至域管理器(VMMlet)是否已经发生。由于域(VM)镜像导致故障,所以这些故障仍存在于同一密钥域内。如果分页结构没有按照期望被配置,则控制继续进行到“硬故障,CPU报告错误”框2430,在所述框中,CPU导致硬错误并且报告错误以便处理所述遇到的页未命中。
在“分页结构是否被误配置?”决策点2420处,如果分页结构被适当地配置,则控制继续进行到“确定被分配给当前密钥域的ASID标记”框2440。确定了被分配给当前密钥域的地址空间标识符(ASID)标记,并且控制继续进行到“k-位是否被设置?”决策点2450。如果ASID标记的k-位未被设置,则控制继续进行到“原样地使用地址来填充TLB,k-位关闭”框2460。在框2460处,具备密钥域能力的服务器的CPU使转换后备缓冲器(TLB)原样地填充有物理地址。使物理地址停留在原样使得在不使用密钥域密钥的情况下直接从未加密存储器读取数据。
在“k-位是否被设置?”决策点2450处,如果ASID标记的k-位被设置,则控制继续进行到“获取当前密钥域并且使用密钥域标识符来代替较高物理地址位”框2470。如参照图23所描述的,当前密钥域是根据由切换密钥域(SwitchKD)指令设置的内部处理器状态来确定的,所述切换密钥域指令将当前密钥域设置为新密钥域的密钥域标识符。在k-位(在一个实施例中是最高位的)启用的情况下,使用当前密钥域的密钥域标识符/选择符来代替物理地址中的较高位。控制然后继续进行到“使用地址和ASID标记来设置转换后备缓冲器“框2480,在所述框中,使用物理地址(包括密钥域选择符和k-位启用,或者k-位=1)以及针对当前密钥域的ASID标记来设置转换后备缓冲器。
图25是图示,示出了根据本发明的一个实施例的域管理器(VMMlet)的增长。例如,可能需要增长域管理器(VMMlet)以便包括附加存储器,所述附加存储器用于在消费者的域启动镜像已经被加载并且域管理器(VMMlet)正在执行之后加载消费者的VM镜像的剩余部分。一旦具有消费者秘密密钥2523的安全域管理器(VMMlet)2522在密钥域2550内运行,消费者就可以将消费者的VM镜像2532的剩余部分安全地传送至域管理器(VMMlet)2522。消费者的VM镜像2532的剩余部分可以包括例如(多个)操作***、(多个)应用、脚本或其他代码。
可以使用被给予云服务提供商的原始的经加密域启动镜像的消费者的秘密密钥2523通过至消费者的网络的传输层安全性/安全套接层(TLS/SSL)连接来启用消费者与域管理器(VMMlet)2522之间的安全通信通道。换言之,如果原始的经加密域启动镜像具有在域管理器(VMMlet)上方具有OpenSSL栈的操作***以及消费者的秘密密钥,则所述OpenSSL软件栈可以被执行以从消费者的网络检索消费者的VM镜像2532的剩余部分。
在域管理器(VMMlet)2522上运行的操作***可以支持全容积存储加密,从而使得操作***可以从存储器管理器2540充当中介的k-位关闭(共享的)通道安全地对经加密页、文件等进行分页。一旦原始的经加密域启动镜像被加载到存储器中并且正在执行,域管理器(VMMlet)2522就可以允许其他软件(如操作***)使用期望的任何安全方法来从消费者页入附加信息。
针对消费者的VM镜像2532的剩余部分增加存储器页可能使域管理器(VMMlet)2522需要存储器的附加分配。在一个实施例中,域管理器(VMMlet)2522可以通过从存储器管理器2540请求更多存储器来进行增长。存储器管理器2540可以将附加存储器分配给域管理器(VMMlet)2522,如由“分配存储器”动作2501所示出的。此附加存储器使消费者能够执行只写操作(如非时间移动(MOVNT))操作)(用于在不首先读取存储器的情况下写入存储器的非高速缓存写入组合操作),以写入来自消费者或消费者授权的第三方的域/VM工作负载镜像中的附加页。例如,消费者可以经由至域(VMMlet)2522的安全连接提供VM镜像2532的剩余部分,包括(多个)操作***、(多个)应用、脚本或其他代码。
图26是图示,示出了根据本发明的一个实施例的云服务环境的组件之间用于增长域管理器(VMMlet)的消息。消费者2601向云服务提供商软件(如具备密钥域能力的服务器的存储器管理器2640)发送VM镜像的剩余部分。在一个实施例中,使用用于运行域镜像的TLS栈的消费者的秘密密钥(如图25的密钥2523)经由来自消费者的传输层安全性(TLS)/安全套接层(SSL)通信会话将VM镜像的剩余部分从消费者传送至运行域管理器(VMMlet)。
如以上参照图25所描述的,消费者的秘密密钥作为给予云服务提供商的消费者的经加密域启动镜像的一部分而被包括在内。在由图26表示的时间点中,消费者的VM安全地运行并且自给自足,从而运行消费者提供在VMMlet上的任何软件(类似于在VMM上运行的操作***)。经由存储器管理器2640通过共享的、未加密存储器(即,k-位禁用的存储器2612)将数据分组从消费者2601发送至运行域管理器(VMMlet)。这些数据分组可以包括软件经加密数据流,所述软件经加密数据流可以被在运行域管理器(VMMlet)上的消费者的VM内运行的消费者的软件解密和验证。
云提供商软件可以经由CPU 2611和存储器加密引擎(TMEi)2615通过共享的未加密存储器(即,k-位禁用的存储器2612)代表消费者发送VM镜像的剩余部分的数据。如由两个“写入数据”动作所展示的,VM镜像的剩余部分的数据被示出为从CPU 2611通过存储器加密引擎(TMEi)2615流向存储器2612。当将VM镜像的剩余部分的数据提供给云服务提供商时,云服务提供商软件可以使CPU 2611执行切换密钥域(SwitchKD)指令以切换至消费者的运行域管理器(VMMlet)的密钥域。替代性地,CPU 2611可以向在另一个线程或另一个CPU上运行的消费者的运行域管理器(VMMlet)提供控制。CPU2611进行的这些动作由图26的“SwitchKD(或在另一个CPU/线程上运行的KD)”动作示出。
运行域管理器(VMMlet)将数据(包括VM镜像的剩余部分)从未加密存储器复制到经加密存储器,所述经加密存储器是消费者VM的密钥域的一部分。如由“读取数据”动作所示出的,存储器加密引擎(TMEi)2615从未加密存储器读取数据。在“使用共享!k KD选择符读取针对地址的数据”动作中,在CPU 2611上运行的域管理器(VMMlet)从未加密存储器位置读取数据,所述未加密存储器位置由提供有未加密存储器中的数据的密钥域地址选择符识别。
运行域管理器(VMMlet)可以处理数据:对软件中的数据进行解密、执行完整性校验等。例如,运行域管理器(VMMlet)可以请求存储器加密引擎(TMEi)2615使用在未加密存储器中提供的密钥域地址选择符将经加密数据写入存储器地址。如在图26的“k-位打开存储器访问具有被设置为KD选择符的地址;在首次写入时使用用于新存储器地址的MOVNT指令”动作中,CPU2611将用于在密钥域标识符/选择符中指定的地址的经加密数据和相关联完整性校验值写入存储器2612中(k-位启用,指示在将数据写入存储器2612之前,使用密钥域密钥对数据进行加密)。
将数据写入存储器地址建立存储器位置的“拥有者”。当在密钥域之间进行切换时,存储器位置的拥有者从一个密钥域的拥有者改变为另一个密钥域的拥有者。当密钥域发生改变时,用于对存储在属于密钥域的存储器位置中的数据进行加密的相应密钥域密钥相应地发生改变。
当从属于密钥域的存储器位置读取数据时,使用“当前”密钥域密钥。在切换密钥域指令之后,必须建立新的“当前”密钥域密钥。如上所述,在将数据写入存储器位置时建立“当前”密钥域密钥,从而建立存储器位置的新拥有者。当从存储器位置读取数据时,读取操作将使用“当前”密钥域密钥。如果在新密钥域的拥有者已写入存储器位置之前从存储器位置读取数据,则读取操作将使用当前密钥域密钥,所述当前密钥域密钥未被更改以反映密钥域的新拥有者。读取操作将会失败,因为存储器位置的当前完整性校验值将属于之前的密钥域。完整性校验将会失败,因为阅读器无法读取属于另一个密钥域的数据。
为了缓解此问题,当建立了新密钥域时,新密钥域的拥有者在不尝试首先读取存储器位置的情况下将新数据写入密钥域内的存储器位置。在写入操作时,将计算新密钥域的新完整性校验值(ICV)。因此,新密钥域的拥有者现在将拥有所述存储器内容(并且能够在没有完整性失败的情况下读取并写入所述存储器位置)。
在一个实施例中,MOVNT指令用于执行用于新存储器地址的首次写入操作。存储器加密引擎(TMEi)将经加密数据和ICV写入存储器,从而完成将数据从未加密存储器复制到经加密存储器中的过程,所述经加密存储器是消费者VM的密钥域的一部分。
MOVNT指令是写入组合操作,这意味着MOVNT指令不需要读取操作来获取存储器内容,因为不需要当前内容。MOVNT指令可以绕过高速缓存并直接写入存储器。作为使用MOVNT指令的替代方案,运行域管理器(VMMlet)可以使用未高速缓存写操作来将数据从未加密存储器复制到经加密存储器中,所述经加密存储器是消费者VM的密钥域的一部分。通过在没有首先从所述存储器地址读取数据的情况下写入存储器地址,创建了新完整性校验值(ICV)(通过写入所有权)。
一旦安装了完整消费者域(VM)镜像,域(VM)就将充当正常VM:使用秘密密钥建立与消费者、消费者授权的第三方和其他授权的VM的安全通信。通过使用消费者秘密密钥对文件***中的全容积和/或文件进行加密来实现安全存储。经由IPSec/TLS和消费者秘密密钥实现安全通信。使用消费者的秘密密钥(PKI等)实现证明。通过使用消费者的秘密密钥来对VM镜像页进行加密(并计算那些VM镜像页的完整性校验值)来实现云服务提供商的基础设施中的服务器之间的域(VM)的安全迁移。VM镜像页连同消费者的域管理器(VMMlet)页然后可以被发送至云服务提供商的基础设施中的其他服务器,以将消费者的VM镜像从一个服务器安全地迁移至另一个服务器。
图27是图示,示出了云服务提供商环境的组件之间用于使运行域管理器(VMMlet)从云服务提供商的存储器管理器软件处请求更多存储器页的消息。在此实施例中,多个CPU同时共享存储器2712。云提供商软件(例如,存储器管理器)2740在具备密钥域能力的服务器的第一CPU1上运行。虚拟机2730在具备密钥域能力的服务器的第二CPU2上运行。VM 2730请求附加存储器,如在VM 2730与存储器管理器2740之间的“请求更多存储器”动作中所示出的。(实际上,作为在VMMlet上运行的VM 2730的一部分的操作***可能需要更多存储器。操作***可以导致VMExit退出VM 2730,从而调用主机VMMlet,所述主机VMMlet然后从云提供商的存储器管理器2740请求更多存储器。)在CPU2上运行的域管理器(VMMlet)经由共享的未加密存储器(k-位禁用)代表消费者的VM 2730发送写入请求,如由VM 2730与存储器加密引擎(TMEi)2715之间的“!k请求消息”动作所示出的。存储器加密引擎(TMEi)2715将存储器请求传递给共享存储器2712,而不需要处理请求,因为k-位被禁用。CPU1上的存储器管理器2740读取由CPU2上的VM 2730写入的对附加存储器的请求,如由从存储器2712至CPU1上的存储器管理器2740的虚线所指示的。运行在CPU2上的域镜像(例如,VM 2730)等待响应(如中断(IPI)),如在VM 2730的“等待响应,例如,中断(IPI)”动作中所示出的。当由云服务提供商的存储器管理器软件2740提供自由存储器位置时,CPU1上的存储器管理器2740将响应数据写入共享存储器2712(k-位禁用),如由从CPU1上的存储器管理器2740到共享存储器2712的虚线所示出的。CPU2上的VM2730从共享存储器2712读取响应数据(k-位禁用),如在共享存储器2712与存储器加密引擎(TMEi)2715之间的“写入响应数据”动作中所示出的。存储器加密引擎(TMEi)2715将响应数据传递至CPU2上的VM 2730,如由从TMEi 2715至CPU2上的VM 2730的“!k响应消息”动作所示出的。VM 2730更新VM的密钥域中的页表,如由VM 2730与存储器加密引擎(TMEi)2715之间的“更新VM的密钥域中的页表”动作所示出的。存储器加密引擎(TMEi)2715将经加密数据和完整性校验值写入储存器2712(k-位启用),如由存储器加密引擎(TMEi)2715与共享存储器2712之间的“写入经加密数据和ICV”动作所示出的。托管VM 2730的域管理器(VMMlet)使CPU2执行用于将数据写入VM的密钥域中的新分配存储器的MOVNT指令,如由VM 2730与存储器加密引擎(TMEi)2715之间的“MOVNT至VM的密钥域中的新分配存储器”动作所指示的。作为响应,存储器加密引擎(TMEi)2715将经加密数据和ICV写入新分配的经加密存储器。
图28是图示,示出了云服务环境的组件之间示出在单个CPU上调度VM的同时请求附加存储器页的消息。云服务提供商的存储器管理器2840决定关于哪个VM当前正在执行的调度方案。在云服务提供商的CPU/核上运行的域管理器(VMMlet)接收计时器事件并基于存储器管理器命令队列(k-位禁用共享存储器区域)给其他VM让渡时间。切换密钥域(SwitchKD)操作用于切换至另一个域管理器(VMMlet)。
参照图28,VM 2830在“准备至存储器管理器的消息”动作中准备从存储器管理器2840请求附加存储器的消息并在VM 2830与存储器加密引擎(TMEi)2815之间的“高速缓存中的!k请求”动作中将待读入未加密(k-位禁用)存储器2812的消息放入高速缓存2813中。存储器加密引擎(TMEi)2815在存储器加密引擎(TMEi)2815与存储器2812之间的“写入请求数据”动作中将请求数据写入存储器2812(k-位禁用)。VM 2830在“保存处理器状态”动作中保存处理器状态并在“将状态保存在VM的KD k-位打开中”中将保存的VM处理器状态放入高速缓存2813中。将VM的所保存状态处理器状态写入VM的密钥域经加密(k-位启用)存储器。存储器加密引擎(TMEi)2815在存储器加密引擎(TMEi)2815与存储器2812之间的“写入经加密数据和ICV”动作中将保存的VM处理器状态作为加密数据与ICV一起写入VM的密钥域经加密(k-位启用)储存器2812。保存VM的处理器状态使域管理器(VMMlet)能够在稍后使用保存的处理器状态恢复对VM的执行。在一个实施例中,域管理器(VMMlet)在处理器状态已经被保存后清除寄存器,从而使得在切换至另一个密钥域之后VM的秘密不可用。
为了使存储器管理器2840能够为VM 2830分配附加存储器,将密钥域从VM 2830密钥域切换至存储器管理器2840密钥域。在VM 2830和存储器管理器2840之间的“SwitchKD至提供商”动作中,VM 2830向云服务提供商发送切换密钥域指令。存储器管理器2840在“还原处理器状态”动作中开始对与存储器管理器2840密钥域相关联的存储器状态进行还原。在存储器2812与存储器加密引擎(TMEi)2815之间的“读取经加密数据和ICV”动作中,从存储器2812读取针对存储器管理器2830密钥域的经加密数据和完整性校验值。存储器加密引擎(TMEi)2815对当前密钥域的数据进行解密并将经解密数据发送至高速缓存(假设相应ICV值是正确的)。存储器管理器2840在存储器加密引擎(TMEi)2815与存储器管理器2840之间的“从存储器管理器的KD还原状态”动作中从存储器管理器2840密钥域还原处理器状态。
在存储器2812与存储器加密引擎(TMEi)2815之间的“读取请求数据”动作中,存储器加密引擎(TMEi)2815将来自存储器2812的k-位禁用命令队列的附加存储器请求数据读入到高速缓存2813中。在存储器加密引擎(TMEi)2815与存储器管理器2840之间的“高速缓存中的!k数据请求”动作中,存储器管理器2840读取保存在高速缓存2813中的附加存储器数据请求。
在存储器管理器2840与存储器加密引擎(TMEi)2815之间的“!k提供自由存储器位置”动作中,存储器管理器2840经由未加密(k-位禁用)存储器命令队列发送消息以为存储器加密引擎(TMEi)2815提供自由存储器位置。在存储器加密引擎(TMEi)2815与存储器2812之间的“写入响应数据”动作中,存储器加密引擎(TMEi)2815将响应数据(包括为VM 2830分配的自由存储器位置的地址)写入存储器2812。在已经响应于来自VM 2830的请求完成了对附加存储器的分配的情况下,存储器管理引擎2840在“将状态保存在存储器管理器的KD中”动作中将当前处理器状态保存在控制器的密钥域中。在存储器加密引擎(TMEi)2815与存储器2812之间的“写入经加密数据和ICV”动作中,存储器加密引擎(TMEi)2815将经加密数据(保存的处理器状态)和完整性校验值写入存储器2812中的存储器管理器2840密钥域。存储器管理器2840然后执行切换密钥域(SwitchKD)操作以切换回至VM的密钥域。
响应于切换至VM 2830密钥域,VM 2830在“还原处理器状态”动作中开始还原VM2830保存的处理器状态。存储器加密引擎(TMEi)2815在存储器加密引擎(TMEi)2815与存储器2812之间的“读取经加密数据和ICV”动作中读取VM 2830密钥域的经加密数据(包括处理器状态)和完整性校验值。在存储器加密引擎(TMEi)2815与VM 2830之间的“从VM的KD还原状态”动作中,VM 2830从其VM 2830密钥域还原保存的处理器状态。
在VM 2830切换至存储器管理器2840密钥域之前预先执行时,VM 2830已经请求了附加存储器。在存储器加密引擎(TMEi)2815与存储器2812之间的“读取响应数据”动作中,存储器加密引擎(TMEi)2815读取针对附加存储器的请求的响应数据并将高速缓存2813中的响应数据提供给VM 2830。VM2830在VM 2830与存储器加密引擎(TMEi)2815之间的“更新VM的KD中的页表”动作中更新VM 2830的密钥域中的页表以反映新分配存储器位置。在存储器加密引擎(TMEi)2815与存储器2812之间的“写入经加密数据和ICV”动作中,存储器加密引擎(TMEi)2815将经加密数据(更新后页表)和完整性校验值写入存储器2812。
为了确立新分配存储器的所有权,VM 2830然后在VM 2830与存储器加密引擎(TMEi)2815之间的“MOVNT至VM的KD中的新分配存储器”动作中针对VM的密钥域中的新分配存储器执行MOVNT操作(或在写入存储器位置之前不读取存储器位置的内容的其他写入操作)。MOVNT操作将VM 2830确立为新分配存储器的拥有者。在存储器加密引擎(TMEi)2815与存储器2812之间的“写入经加密数据和ICV”动作中,存储器加密引擎(TMEi)2815将经加密数据和ICV写入存储器2812。作为此写入操作的一部分,存储器加密引擎(TMEi)2815计算VM2830密钥域中的新分配存储器的新完整性校验值。新完整性校验值将确保VM 2830密钥域密钥可以用于对新分配存储器的内容进行解密。
图29是图示,示出了运行域管理器(VMMlet)2922。在运行域管理器(VMMlet)2922之前,具备密钥域能力的服务器的存储器管理器2940在执行域管理器(VMMlet)的域启动镜像之前验证处理器状态的散列。一旦处理器状态被验证,就执行域启动镜像以运行域管理器(VMMlet)。
存储器管理器2940经由未加密(k-位禁用)存储器2912向运行域管理器(VMMlet)2922发出命令。类似地,具备密钥域能力的服务器的硬件2910经由未加密(k-位禁用)存储器2912向运行域管理器(VMMlet)发出直接存储器访问(DMA)请求。响应于接收到这些命令或DMA请求,域管理器(VMMlet)2922与具备密钥域能力的服务器硬件2910交互,以设置和/或访问寄存器值、进程中断、执行VM进入和退出等等。
存储器管理器2940决定关于哪个VM当前正在执行的调度方案。在图29中,当前正在执行的VM是VM2 2930并且相关联的密钥域是密钥域2950。切换密钥域(SwitchKD)操作用于切换至另一个域(VM)。
一旦VM镜像的动态部分(例如,VM镜像的未包括在域启动镜像中的剩余部分)被加载,就可以在VM内本地创建动态入口点。例如,响应于切换密钥域(SwitchKD)指令,可以基于密钥域密钥计算新带密钥散列消息认证码(HMAC)。
将中断和VM退出指令传递给在具备密钥域能力的服务器的CPU/核上运行的当前域管理器(VMMlet)。运行域管理器(VMMlet)判定中断/异步事件是否旨在用于当前运行域管理器(VMMlet)或针对另一个域管理器(VMMlet)。如果中断/异步事件旨在用于另一个域管理器(VMMlet),则域管理器(VMMlet)将调度正确域管理器(VMMlet)或通知存储器管理器。
关于资源管理,通过软件而不是经由硬件分页机制来完成分页。域管理器(VMMlet)在软件中对页(包括完整性元数据)进行加密(例如,使用AES新指令(AESNI)来加速AES加密)、更新页表和扩展页表并通过k-位禁用存储器发送经加密页,以供存储或迁移。
关于输入/输出操作,可以使用直接分配或虚拟化设备模型。用于DMA和存储器映射输入/输出(MMIO)的k-位指定未加密存储器区域是非加密的。虽然直接分配DMA是可能的,但MMIO/PCIe设备空间必须是k-位禁用(未加密)存储器。处理器必须确保只对动态随机访问存储器(DRAM)而不对设备空间允许密钥域事务。
图30是图示,示出了在由域管理器(VMMlet)管理的密钥域以及由另一种类型的域管理器(OSlet)管理的第二密钥域内的多个虚拟机。
因为域管理器(VMMlet)是全功能VMM,所以域管理器(VMMlet)可以托管其密钥域内的多个访客操作***(OS)/VM。VM2 3033和VM3 3034被示出为在域管理器(VMMlet)3022的密钥域KD1 30502内运行,并且进程3031被示出为在OSlet 3060的密钥域KD2 30501内运行。与在域管理器(VMMlet)之间切换的情况一样,存储器管理器3040发出切换密钥域(SwitchKD)命令以在域类型之间切换,即,发出SwitchKD命令以在域管理器(VMMlet)与域管理器(OSlet)之间切换。
希望向消费者保证公共云服务提供商无法访问其工作负载,即使通过政府颁发的授权令来服务也是如此。使用本文中描述的由安全公共云环境提供的特征,云服务提供商、现场管理员或技术人员无法访问安全VM数据,即使VMM本身被重写(因为消费者可以测量其整个TCB)。
已经关于管理虚拟机的域管理器(VMMlet)描述了以上实施例,但是本发明并不限于此。同一模型可以支持容器,尽管不存在相应VMM,但是OS内核是等效物。每个密钥域中的每个容器镜像将具有由提供商测量的协作内核组件(本文中被称为域管理器(OSlet))。域管理器(OSlet)以与域管理器(VMMlet)类似的方式响应存储器管理器命令、中断、调度、资源管理等。
图31A和图31B展示了根据存储器加密引擎的硬件功能从物理存储器地址中确定完整性行位置和时隙。未使用地址位通过高速缓存传递,但未使用的,因为它们对应于未填充物理存储器。未使用的地址位用于对地址中的密钥域(key domain,KD)选择符信息进行编码。可以基于未使用地址位来选择不同的密钥,用于数据行以及相应完整性校验值的存储器位置相关加密。
物理存储器地址3100可以用于根据实施例确定密钥或微调(上文所讨论的),和/或用于与数据行3116(3116a至3116h)相关联的完整性值的完整性校验线3112和时隙3114(3114a至3114h)。物理存储器地址3100可以包括多个地址位,所述多个地址位可以被划分为多个部分。数据物理存储器地址3100的部分可以被标识为数据行字节3102、包括完整性线时隙选择符3110和完整性行索引3108(例如,到完整性校验线3112的偏移)的数据行物理地址3104(数据的存储器中的实际位置)、以及别名化为同一物理存储器的未使用地址位3106(例如,别名位)。未使用地址位3106通过高速缓存传递,但未使用的,因为未填充的外部存储器可以用于数据物理存储器地址3100中经编码的别名信息。相应地,可以基于未使用地址位来选择不同密钥。例如,加密技术XTS(基于XEX的(基于XOR-加密-XOR的)具有密文挪用的微调码本模式)可以使用别名位对同一物理存储器地址进行微调,其中,即使数据相同,不同的地址别名也可能导致不同的密文。
存储器选择符(例如,图4的存储器加密引擎415)可以读取数据行物理地址3104并识别相应的完整性线地址3112以及完整性线时隙(例如,3114a至3114h),以便用于确认数据行字节3102和/或存储在完整性线时隙(例如,3114a至3114h)中的完整性校验值的有效性。别名位3106中的值可以作为用于对数据行字节进行解密的密文存储在完整性线时隙(例如,3114a至3114h)中,和/或与从由别名位3106识别的完整性线时隙(例如,3114a至3114h)中读取的值进行比较,以验证数据行字节。
注意的是,由于例如部署在计算平台中的实际存储器可能远小于最大可能存储器量(针对其提供最大地址空间量),所以并不是存储器的所有位都是可寻址的。例如,不是物理存储器的所有64位(64-位***的)都是可寻址的(例如,被足够的DIMM占用)。因此,否则,物理存储器3100的未使用的位可以用于确定例如在加密和/或解密特定数据行的存储器时要使用哪个密钥和/或微调。
物理存储器地址3100的密钥域和/或微调域可以是任何大小。在所展示的示例中,值选择符可以使用未使用地址位3106来获得同一物理存储器地址3100的密钥和/或微调。例如,软件值选择符可以从由未使用地址位3106的四个最高有效位定义的16个密钥(和/或16个微调)当中进行选择。在一个示例中,将第一位设置为零(0000)或一(0001)可以用于获得密钥微调(例如,如果将位设置为1,则使用1进行加密;如果将位设置为0,则使用0进行加密)或微调(例如,如果将位设置为1,则在地址中使用1进行微调;如果将位设置为0,则在地址中使用0进行微调等等)。因此,可以使用不同密钥和/或微调。在这种情况下,当使用错误的密钥和/或错误的微调来对数据进行解密时,第一完整性校验将失败,和/或当针对不适当解密的数据校验完整性值时,第二完整性校验将失败。
另外,可以从物理存储器地址3100确定并选择完整性校验线和/或时隙。例如,完整性线选择符可以从物理存储器地址3100的完整性行索引部分3108选择完整性校验线,和/或时隙选择符可以从物理存储器地址3100的完整性线时隙选择符部分3110选择时隙。
如图31B中所示出的,数据行能够存储在数据存储器地址空间中并且完整性值(例如,ICV、副本等)能够存储在完整性数据地址空间中。例如,数据存储器地址空间中的数据行从地址0开始,并且完整性数据存储器地址空间中的完整性校验线从地址1000处的数据行开始1000根高速缓存行。
虽然在实施例中可以实施各种策略以在数据行中的每一条数据行与完整性校验线中的每一条完整性校验线(和/或其时隙中的每一个时隙)之间进行映射,但是使用数据行地址可能是用于确定并选择适当完整性校验线和适当时隙的有效途径。例如,可以不需要查找表来确定完整性值的适当完整性校验线和/或时隙。就这一点而言,由数据行3116a至3116h中的每一条数据行的中间位定义的值可以映射到完整性校验线3112,由从由具有地址0到7的数据行3116a至3116h到完整性校验线3112的箭头指示,并且由数据行3116a至3116h中的每一条数据行的最低有效位定义的值可以映射到用于容纳数据行3116a至3116h中的每一条数据行的特定完整性值的适当时隙3114a至3114h,由箭头的位置指示。
通常,对适当完整性校验线和适当时隙的选择可以基于函数(如(D-Dstart)/8+Istart),其中,从待访问的数据行的地址D中减去数据存储器区域的起始的地址D起始,其中,I起始为完整性值存储器地址空间的起始,并且其中,可以通过将地址向右偏移3(或选择最高位减去前3位)来完成被8整除。此外,一旦取得适当完整性校验线,可以通过(D-Dstart)%8来确定适当时隙的偏移,其中,取模运算可以选择地址的3个最低有效位。应当理解的是,虽然3位可以用于从完整性校验线上的8个时隙中选择,但是完整性校验线可能大小不同(例如,大小的一半),从而使得4位可以用于从每条完整性校验线的16个时隙中选择,以便保存完整性值开销等等。
中间位和/或最低有效位还可以用作到存储在特权/安全存储器位置中的已分配位置的阵列的索引,用于识别映射。还可能存在隐式映射,其中,可以为具有地址0的数据行3116a自动选择第一完整性校验线3112的第一时隙3114a,可以为具有地址1的数据行3116b自动选择第一完整性校验线3112的第二时隙3114b等等。可以使用任何函数、映射和/或分配,从而使得具有地址0到7的数据行3116a至3116h可以被映射到完整性数据地址空间中的任何地方、可以被映射到完整性校验线3112内的任何地方等等。
除了存储器加密引擎外,可以在没有附加性能开销的情况下实现安全公共云环境。在一个实施例中,存储器加密引擎被提供为存储器加密引擎(MEE),如美国专利号8,819,455“Parallelized Counter Tree Walk for Low Overhead Memory ReplayProtection(针对低开销存储器重放保护的并行计数器攀树)”中所描述的。在另一个实施例中,提供了具有完整性的存储器加密引擎,如美国专利号9,213,653“Memory Integrity(存储器完整性)”中所描述的。在有具有完整性(TMEi)引擎的总存储器加密的安全公共云环境的一种实施方式中,TMEi引擎的运转开销仅为3%。最后,只有最小硬件改变被用来确保安全公共云环境,利用存储器加密引擎(如TMEi引擎)并将大部分复杂性推向软件(尤其是VMM)。这些特征允许对VMM进行简单验证并将支持安全公共云环境功能的硬件快速推向市场。
图32是图示,示出了根据一个实施例的***。如所看到的,***3200可以是智能电话或其他无线通信器或任何其他IoT设备。基带处理器3205被配置用于对待从***发射或由***接收的通信信号执行各种信号处理。进而,基带处理器3205耦合至应用处理器3210,所述应用处理器可以是所述***的用于执行OS和(除了如许多熟知的社交媒体和多媒体app等用户应用之外)其他***软件的主CPU。应用处理器3210可以进一步被配置用于对设备执行各种其他计算操作。
进而,应用处理器3210可以耦合至用户界面/显示器3220,例如,触摸屏显示器。另外,应用处理器3210可耦合至存储器***,所述存储器***包括非易失性存储器(即闪存3230)和***存储器(即DRAM 3235)。在一些实施例中,闪存3230可以包括***分3232,密钥、其他秘密和其他敏感信息能够存储在并操作于所述***分中。这些存储设备中的一个或多个能够存储用于提供本文中所描述的安全公共云的信息。如进一步看到的,应用处理器3210还耦合至采集设备3245,如可以记录视频和/或静止图像的一个或多个图像采集设备。
仍参照图32,通用集成电路卡(UICC)3240包括订阅者身份模块,所述订阅者身份模块在一些实施例中包括用于存储安全身份信息的安全存储设备3242。***3200可以进一步包括安全处理器3250,所述安全处理器可以实现可信执行环境(TEE),并且其可以耦合至应用处理器3210。此外,应用处理器3210可以对给定的指令集架构和用于托管可信执行环境(TEE)的电路***实现安全操作模式(如软件防护扩展(SGX))。安全处理器3250和/或应用处理器3210可以被配置用于参与支持提供如本文中所描述的安全公共云的操作。包括一个或多个多轴加速度计的多个传感器3225可以耦合至应用处理器3210从而使能输入各种感测到的信息,如运动和其他环境信息。另外,可以使用一个或多个认证设备3295来接收例如用于认证操作的用户生物特征输入。
如进一步展示的,近场通信(NFC)非接触式接口3260被设置为通过NFC天线3265在NFC近场中通信。虽然图4中示出了单独的天线,应理解的是,在一些实施方式中,可以提供一个天线或不同天线集合从而使能各种类型的无线功能。功率管理集成电路(PMIC)3215耦合至应用处理器3210以执行平台级功率管理。为此,PMIC 3215可以向应用处理器3210发出功率管理请求,以如期望的进入某些低功率状态。此外,基于平台约束,PMIC 3215还可以控制***3200的其他组件的功率水平。
为了能够如在一个或多个IoT网络中发射和接收通信,各种电路***可耦合于基带处理器3205与天线3290之间。特别地,可以存在射频(RF)收发器3270和无线局域网(WLAN)收发器3275。通常,RF收发器3270可用于根据如3G或4G无线通信协议(如根据码分多址(CDMA)、全球移动通信***(GSM)、长期演进(LTE)或其他协议)等给定无线通信协议来接收和发射无线数据和呼叫。另外,可以存在GPS传感器3280,其中,位置信息被提供至安全处理器3250,所述安全处理器可以用于某些安全操作中。还可以提供如接收或发射无线电信号的其他无线通信,例如AM/FM及其他信号。另外,经由WLAN收发器3275,还可以实现如根据蓝牙TM或IEEE 802.11标准的本地无线通信。
现在参照图33,示出了根据本发明的另一个实施例的***的框图。如图32中所示出的,多处理器***3300可以被实施为点对点互连***,如由密钥域能力的服务器***。***3300包括经由点对点互连3350耦合的第一处理器3370和第二处理器3380。如图5中所示出的,处理器3370和3380中的每个处理器可以是包括第一和第二处理器核(即,处理器核3374a和3374b以及处理器核3384a和3384b)的多核处理器(如SoC),尽管所述处理器中可能潜在地存在更多的核。另外,处理器3370和3380各自可以包括用于执行如本文中所描述的安全公共云操作的安全引擎3375和3385。
仍然参照图33,第一处理器3370进一步包括存储器管理器中枢(MCH)3372和点对点(P-P)接口3376和3378。类似地,第二处理器3380包括MCH3382和P-P接口3386和3388。如图33中所示出的,MCH 3372和3382将处理器耦合至对应的存储器(即存储器3332和存储器3334),所述存储器可以是本地附接至相应处理器的主存储器(例如,DRAM)的部分。第一处理器3370和第二处理器3380可以分别经由P-P互连3352和3354耦合至芯片组3390。如图33中所示出的,芯片组3390包括P-P接口3394和3398。
此外,芯片组3390包括接口3392,以便通过P-P互连3339将芯片组3390与高性能图形引擎3338耦合。进而,芯片组3390可以经由接口3396耦合至第一总线3316。如图33中所示出的,各个输入/输出(I/O)设备3314可以与总线桥接器3318一起耦合至第一总线3316,所述总线桥接器将第一总线3316耦合至第二总线3320。各种设备可以耦合至第二总线3320,包括例如,键盘/鼠标3322、通信设备3326和数据存储单元3328(如非易失性存储设备或其他大容量存储设备)。如所看到的,数据存储单元3328可以包括代码3330,在一个实施例中,包括设备。如所看到的,数据存储单元3328可以包括代码3330,在一个实施例中,包括用于执行本文中所描述的安全公共云操作。如进一步所看到的,数据存储单元3328还包括用于存储将要保护的敏感信息的可信存储设备3329。进一步地,音频I/O 3324可以耦合至第二总线3320。
实施例可以在IoT设备可以包括可穿戴设备或其他小形状因子IoT设备(如致动器和/或传感器)的环境中使用。现在参照图34,所示出的是根据另一个实施例的模块3400的框图。在一个特定实施方式中,模块3400可以是包括在单个小模块内适配的多个组件的CurieTM模块。模块3400可以被配置用于参与本文中所描述的安全公共云操作。如所看到的,模块3400包括核3410(当然,在其他实施例中可以存在多于一个核)。这种核可以是相对较低复杂度的有序核,如基于Intel/>QuarkTM设计的。在一些实施例中,核3410可以实施可信执行环境。核3410耦合至包括传感器中枢3420的各种组件,所述传感器中枢可以被配置用于与多个传感器3480交互,如一个或多个生物特征、运动环境、或其他传感器。存在与非易失性存储设备3440一起的功率输送电路3430。在实施例中,此电路可以包括可充电电池和再充电电路,在一个实施例中,所述电路可以无线地接收充电功率。可以存在一个或多个输入/输出(IO)接口3450,如可与USB/SPI/I2C/GPIO协议中的一个或多个协议兼容的一个或多个接口。另外,存在无线收发器3490(其可以是BluetoothTM低能量或其他小范围无线收发器)以便使能进行无线通信,如本文所描述的。应理解的是,在不同实施方式中,IoT模块可以采用相比于典型通用CPU或GPU具有小形状因子、低功率需求、有限指令集、相对低的计算吞吐量或以上任何的许多其他形式。
如以上参照图1至图34所描述的,消费者可以向云服务提供商提供经加密的域镜像。在对图1至图34的讨论中,消费者的经加密的域镜像包括将被执行为消费者的工作负载和相关联的数据的代码。上文在消费者虚拟机的背景下描述了消费者的工作负载和相关联的数据,并且由消费者提供的代码的一部分包括管理消费者的虚拟机的VMM的代码的一部分。上文将VMM代码的这部分描述为消费者域管理器镜像或“VMMlet”。
在对图1至图34的讨论中,域管理器(VMMlet)是具有创建、退出和恢复对VM的执行的能力的特权代码。这些特权可以被称为“vmxroot”功能,并且包括执行命令(如虚拟机控制结构(VMCS)保存/还原、通用寄存器(GPR)保存/还原和/或VMexit/VMResume)的能力。此外,域管理器(VMMlet)控制临界资源(如中断描述符表(IDT)、高级可编程中断控制器(APIC)指令)和分页数据结构(如页表和扩展页表(EPT))。因为图1至图34中描述的域管理器镜像具有根特权(VMMlet充当VMM),所以主机VMM能够访问所有存储器(使用其秘钥)。针对主机VMM对消费者的工作负载和数据的访问,没有限制。
与相对于图1至图34所描述的公开相比,本公开未向消费者的镜像提供根特权。相反,消费者的镜像运行为访客VM,所述访客VM只能访问在扩展页表(EPT)中被映射并且被授予许可的存储器。
本申请的以下部分描述了将经加密消费者域镜像减少为不包括域管理器(VMMlet)并且消除云服务提供商信任消费者提供的代码的需要的技术。经加密消费者域镜像可以仅包括特定于消费者的虚拟机的经加密消费者域控制结构。通常将由主机VMM提供的控制结构现在也被包括在由消费者或由消费者信任的中介提供给云服务提供商的经加密消费者域镜像中。
通过提供设置消费者的VM处理器状态的控制结构,消费者在不依赖主机虚拟机监视器的情况下保持对消费者工作负载的控制,以保护消费者的工作负载和数据。此外,在主机VMM无法访问并且主机VMM不具有加密密钥的经加密存储器内提供控制结构进一步保护消费者的工作负载和数据免受损害主机VMM之害。
在一个实施例中,在代理具有对访客VM的控制和/或存储器映射结构的直接访问的情况下,实现了用于云环境的相互保护的软件策略。代理或代理所保护的访客VM可以在给定的时间运行,但两者不能同时运行。主机VMM通过在启动或恢复代理以在云环境中运行之前验证代理的控制结构(VMCS和EPT,使用VMRead和/或HashKD指令)来保护自身。软件策略实施若干主机自我保护规则(如不允许可以编辑自身的VMCS、不允许可以编辑自身EPT的VMCS、不允许在EPT中重叠以及允许代理只有在另一个访客VM处于离线时(不执行)修改另一个访客VM的VMCS。
代理通过验证主机请求来修改其他访客的VMCS或EPT从而保护另一个访客VM。代理通过针对访客保持单独VMCS并针对每个硬件线程保持VMCS状态来保护自身。代理还校验EPT以确保访客EPT不允许对代理的访问并且当数据页应该被加密时(k-位打开)访客EPT通过指定非加密(k-位关闭)存储器而***漏数据。另外,代理将验证访客物理地址(GPA)到物理地址存储器映射、权限位(R/W/X)、存储器类型、分页层以及其他控制结构信息是正确的。
此外,主机VMM和代理可以维护经验证控制结构的单独副本。通过维护经验证控制结构的单独副本,主机VMM和代理可以比较控制结构的内容以确保它们相同(例如,使用散列密钥域(HashKD)指令来比较散列值)。
图35示出了云服务提供商服务器环境3500,所述云服务提供商服务器环境包括由VMM层3520的虚拟机监视器(VMM)3522控制的硬件3510。VMM层3520使用数据结构(如VM控制结构(VMCS)3524)和扩展页表(EPT)3526来控制对虚拟机(VM)的执行。VMCS是存储器中针对每个访客VM的每个逻辑处理器出现一次的数据结构,而访客VM由主机VMM管理。在多处理器***中,同时执行所述访客VM的每个处理器可以具有唯一VMCS。随着不同VM之间的执行环境的每次改变,针对当前VM还原VMCS,从而限定VM的虚拟处理器的状态。扩展页表(EPT)用于将来自访客已知的访客物理地址(GPA)的存储器地址映射到用于寻址物理存储器的物理地址(PA)。
虚拟机3530T是由VMM 3522使用VMCS 3524和EPT 3526管理的虚拟机的典型实施方式的示例,所述VMCS和EPT两者由VMM 3522唯一控制。虚拟机3530T在本文中被称为“可信”虚拟机,因为虽然VM 3530T是由VMM 3522管理并在其控制下,但VM 3530T不存在任何机制来验证VMM 3522尚未被损坏。因此,虚拟机3530T必须信任VMM 3522的动作将不会损坏消费者的工作负载或数据或透露消费者秘密。另外,VMM 3522的代码被认为是消费者VM的可信代码基(TCB)的一部分。
与由VMM 3522使用的VMCS 3524相比,虚拟机VM1 35301、VM2 35303和VM3 35304以及代理虚拟机35302和35305中的每一个包括受保护存储器区域以及在本文中称为“控制结构”的对应数据结构。VM1 35301、VM2 35303以及VM3 35304中的每一个包括受保护存储器区域(密钥域),所述受保护存储器区域包含对应控制结构VMCS/EPT 35401、VMCS/EPT 35403以及VMCS/EPT 34504。类似地,代理虚拟机35302和35305包括其受保护存储器区域内的对应控制结构VMCS/EPT 35402和VMCS/EPT 35405。虽然这些控制结构VMCS/EPT 35401-5被示出为VMCS与EPT的组合,但控制结构可以包括来自EPT的VMCS的单独数据结构。控制结构还可以包括其他扩展控制结构(如虚拟化异常信息页、VM功能的扩展页表指针(EPTP)列表、模型特定寄存器(MSR)位图、输入/输出(I/O)位图、MSR加载和存储页或用于VMCS的任何未来控制结构扩展。
处理器将当前执行访客VM的密钥域标识符/地址选择符附加于在VMCS中指定的这些地址的最上部分。
虽然VMM 3522管理非可信以及代理虚拟机35301-5中的每一个的实例化,但消费者或其可信中介提供待用于控制消费者的虚拟机的执行并且具体地限定每个VM的虚拟处理器的状态的控制结构35401-5。
在被称为密钥域(如KD1 35501和KD2 35502)的密码地受保护存储器区域3512内执行虚拟机VM1 35301、VM2 35303和VM3 35304以及代理虚拟机35302和35305。密钥域密钥用于对每个密钥域中的数据进行加密和解密。
每个非可信访客虚拟机(如非可信VM1 35301)连同相关联的控制结构VMCS/EPT35401托管在密钥域内。这种托管方案密码地保护非可信访客虚拟机以及相关联的控制结构免受损坏的虚拟机监视器的篡改。此外,将每个虚拟机的控制结构放置在与相关联的虚拟机相同的密钥域中使每个虚拟机能够验证虚拟机监视器对于控制结构进行的动作。
密钥域提供受保护环境,在所述受保护环境中,消费者虚拟机可以以消费者的工作负载和数据受到保护的消费者的信心运行。类似地,管理消费者虚拟机的虚拟机监视器可以确保没有消费者虚拟机已损坏云服务提供商的服务器平台硬件或在平台硬件上运行的软件或固件。
消费者虚拟机(如非可信VM1 35301)可以验证由不可信云服务提供商的虚拟机监视器3522相对于控制结构35401而请求的动作。云服务提供商的虚拟机监视器3522仍然控制平台、管理对消费者的虚拟机(如非可信VM1 35301、非可信VM2 35303以及非可信VM335304)的执行并且可以验证消费者的虚拟机尚未损坏虚拟机控制结构。
密钥域KD1 35501以及KD2 35502各自还包括代理访客虚拟机:分别为具有自身控制结构35402的代理35302和具有自身控制结构35405的代理35305。因为虚拟机监视器3522不能读取在密钥域内加密的数据,所以虚拟机监视器3522使用代理访客虚拟机35302和35305代表对应密钥域KD1 35501或KD2 35502内的VMM 3522来起作用。具体地,虚拟机监视器3522使用代理访客虚拟机来操纵受保护虚拟机的控制结构。例如,虚拟机监视器3522可以使用代理35305来操纵密钥域KD2 35502内的非可信VM3 35304的控制结构。虚拟机监视器3522可以在对虚拟机的切换执行、暂停执行后恢复对虚拟机的执行等等的过程中使用消费者的代理来操纵虚拟机的控制结构。
密钥域(如KD1或KD2)将每个消费者的虚拟机彼此密码地分离以及与云服务提供商的虚拟机监视器密码地分离。类似地,可以由云服务提供商的虚拟机监视器验证非可信消费者虚拟机采取的动作。此相互验证在使云服务提供商能够确认消费者虚拟机的活动尚未损坏公共云环境的同时使云服务提供商能够提供消费可以信任消费者虚拟机工作负载和数据收到保护的公共云环境。
在一个实施例中,在***初始化期间建立主机VMM/代理关系。可信代理代码、扩展页表以及初始VMCS被加载到存储器中并且被测量。在一个实施例中,在的可信执行技术(TXT)的启动顺序期间执行对可信代理代码、扩展页表以及VMCS的测量。TXT还可以测量其他状态(如***转移监控器的状态)以防止基于***管理模式(SMM)的访问。还可以采取BIOS和VMM测量。最后,代理使用存储在隐藏寄存器中并且用于识别有效代理授权的VMCS的CPU确立秘密值。一旦将经测量代理加载到受保护存储器区域(密钥域)中,就可以将VMM加载到密钥域之外并且可以正常运行未受保护(可信)的访客VM。
替代性地,当受保护存储器区域是别名化的存储器加密区域时,安全飞地(如由的软件防护扩展(SGX)提供的)可以将已经加密的存储器镜像加载到存储器中。当安全飞地知道存储器加密密钥域密钥时,安全飞地在运行时加载并证明VM镜像。经加密存储器镜像可以包含VMCS、EPT以及代码。
类似地,知道存储器加密密钥并使用本文中所描述的创建密钥域(CreateKD)指令的消费者可以对消费者自身的镜像进行加密,所述消费者自身的镜像可以由云服务提供商的软件加载到别名化为密钥域的明文存储器中。消费者镜像包含使用密钥域密钥加密的VMCS、EPT以及代码镜像,从而使得其不可被云服务提供商访问。云服务提供商的主机VMM然后可以将消费者的VMCS加载(经由VMPTRLD指令)到密钥域中。存储器加密引擎将对来自存储器读取(VMRead)上的消费者的经加密镜像的VMCS结构进行解密。主机VMM可以验证消费者的VMCS的内容,并且然后主机VMM可以调用VMLaunch,所述VMLaunch将启用密钥域密钥并通过存储器加密引擎提取消费者的镜像的剩余部分,从而在其执行时将消费者的镜像解密到高速缓存中。VMLaunch或VMResume指令将启用指定的密钥域密钥(因此适当地解密存储器内容)。
在使用范围寄存器来保护访客VM的受保护存储器区域的实施例中,在受保护存储器区域内运行代理具有不同的行为。只有访客VM的VMLaunch(和/或VMResume)可以停止范围寄存器保护以在有效控制结构(VMCS)驻留在密钥域内时允许访客VM执行。当访客VM退出(经由VMExit)时,在将控制返回到主机VMM之前重新启用范围寄存器保护。主机VMM直接对受保护VMCS的写入作操(VMWrite)是有限的或被拒绝的。作为优化,一些实施例可以允许对VMCS的将不损害访客VM的安全性(例如,将主机VMM的VMWrite独占地限制在VMCS的主机状态区域)的那些区域进行有限的写入操作(VMWrite)。
编辑受保护访客VM的VMCS需要代理的合作。清除操作(VMClear(VMClear))将高速缓存的VMCS返回到访客VM的受保护存储器区域(密钥域)中。然后,主机VMM可以经由VMLaunch(使用代理的VMCS)调用访客VM。代理可以执行对受保护存储器区域(密钥域)内的VMCS的编辑并且还验证主机状态(例如,使用VMCS阴影VMRead/VMWrite或编辑存储器内的VMCS结构)。
当代理已经完成对VMCS的编辑时,代理可以返回(经由VMCall或VMExit)至主机VMM。此时,主机VMM可以再次加载VMCS指针(VMPTRLD)并使用VMRead来验证VMCS的主机状态未被代理恶意篡改(即,验证主机VMM的VMCS是正确的/处于期望状态)。同时,可以拒绝VMCS的访客状态区域的读取操作(VMRead),因为VMCS在密钥域内并且访客VM状态将对主机VMM隐藏。如果VMCS有效,则主机VMM然后可以VMLaunch代理编辑的VMCS并恢复访客VM。
散列密钥域(HashKD)是由主机VMM用于“通读”在维持机密性的同时保护受保护存储器区域的机制。在由范围寄存器保护的实施例中,当源自HashKD指令时,保护访客VM的存储器区域的处理器范围寄存器将不会阻止存储器读取。在作为密钥域保护的实施例中,虽然对存储器进行加密,但处理器将允许HashKD指令访问存储器并对其进行解密(出于生成存储器的内容的SHA2/3散列的目的)。散列密钥域(HashKD)指令可以用于向VMM保证访客形成的机构(如新EPT)与主机VMM的期望相匹配并且将不允许访客访问主机或其他主机。散列不透露存储器内容/秘密(未知值),但如果散列值与主机已经知道/期望的结构相匹配,则可以向主机VMM保证存储器由访客代理正确地配置并且主机VMM可以使用引用经确认的EPT或任何其他控制结构的相应VMCS来启动访客VM。
使用这些技术,代理可以创建受保护存储器区域(密钥域)内的多个访客VM的附加VMCS和附加EPT结构、将消费者镜像加载到这些访客VM中等等。主机VMM然后可以在使用散列密钥域(HashKD)指令来验证其EPT和/或其他控制结构之后使用这些VMCS来启动访客VM。访客VMCS中的每一个可以包含秘密值,所述秘密值在代理与CPU之间被共享(并且在创建密钥域时(创建密钥域(CreateKD)指令被执行时)存储在配置有所述秘密值的隐藏寄存器中))。当VMPTRLD指令被执行时验证此秘密值。只有当代理与CPU之间共享的秘密被发现时,VMCS才被认为是有效的。以此方式,受保护访客VM无法与主机VMM串通以创建其自身的VMCS。恶意VMM也不能将数据发送至正好被格式化为VMCS的受保护VM(例如,经由I/O或通信通道)并且因此破坏访客的安全性。可以将附加字段添加到VMCS中,以允许代理控制主机VMM是否可以恢复访客VM。恢复操作(VMResume)可能受到访客VM的限制,因此,在VMCS可以由主机VMM重新启动之前,需要代理首先被运行并重置VMCS字段。
可以修改退出(VMExit)流程,以首先保存(例如,执行XSAVE指令)所有处理器寄存器状态或可以由代理***访客中断处理程序/“填隙程序”以保证在将控制返回至主机VMM之前所有处理器寄存器状态被保存到受保护存储器中并且被清除。对于不受限访客VM,填隙程序可以在将控制返回至主机VMM(经由VMCall)之前拦截所有中断并保存且清除访客寄存器状态。在一个实施例中,的虚拟异常(#VE)还可以用于拦截所有EPT违规并且将这些EPT异常重定向回访客填隙程序,其中,在经由VMCall将控制转移至VMM之前处理器状态可以被保存到经加密的存储器区域中并且被清除。此技术防止了向主机暴露访客VM的寄存器状态。
最后,还可以建立多个寄存器范围和/或多个密钥域,从而允许多个非可信访客VM彼此隔离。当经由VMPTRLD指令加载控制结构(VMCS)时,VMCS的位置确定在VMLaunch之后哪个范围或密钥域是可访问的。每个密钥域然后负责拥有自身VMCS、EPT和代码/数据的自身安全性。通过在启动由VMCS控制的访客VM之前验证VMCS并验证相关联的EPT来保证主机VMM保护,并且正确地配置其他控制结构(使用HashKD)以限制对主机VMM和其他访客VM的访客VM访问。
由范围寄存器保护的存储器可以仅是返回至主机存储器的别名(例如,别名使用高阶未使用地址位)。此别名位(或位,上文称为“k-位”)由存储器加密引擎用于判定存储器是在写入时将使用秘密密钥加密还是在读取时将被解密。以此方式,主机VMM和其访客VM共享同一物理存储器,但受保护访客VM内容被保护免受主机VMM访问,因为所述访客VM内容在存储器中由存储器加密引擎使用访客VM的秘密密钥域密钥加密。通过主机别名访问存储器(例如,使用高阶物理地址位未置位)禁止存储器加密引擎对经加密内容进行加密。相反,如果由访客VM使用高阶地址位置位访问经加密存储器,则存储器内容首先由存储器加密引擎使用秘密密钥进行解密,从而使用对应于密钥域标识符/地址选择符的地址的高阶位来将明文留在高速缓存中。同时,受保护访客VM可以通过经加密或明文别名访问存储器,从而允许访客VM通过访问主机存储器区域(如由被主机VMM经由HashKD验证的访客VM的EPT控制的)来与主机VMM和其他访客VM通信。替代性地,已知共享密钥域(或主机VMM的密钥域)可以用于主机VMM与访客VM之间的通信。
本文中公开的技术使消费者的工作负载和秘密能够受到保护,而无需暴露用于对消费者的镜像、VMCS、EPT、代码和数据进行加密的消费者的密钥域密钥。密钥域标识符/地址选择符未暴露给主机VMM,密钥域标识符也未出现在控制结构(如扩展页表或虚拟机控制结构)的物理地址中。当VMM进入受保护VM时使用密钥域标识符/地址选择符,其中,当经由VM指针加载(VMPTRLD)指令加载VMCS时,VMM建立VM的密钥标识符。如果VMCS进行适当解密(未损坏或无效和/或VMCS内的秘密值是正确的),则硬件正使用正确密钥域密钥(由密钥域标识符/地址选择符识别的),并且密钥域标识符/地址选择符与当前密钥域相关联。
使用这些技术,可以在存储器中对无限数量的消费者密钥域进行加密。在存储器加密引擎中对密钥进行重新编程,以用于可用的密钥域标识符/地址选择符时隙。例如,当可以暂停VM从而使得其不在任何核上执行时,可以转储清除所述VM的高速缓存内容。然后,可以由VMM调用创建密钥域(CreateKD)指令来建立用于暂停VM的密钥域标识符/地址选择符的不同密钥。以此方式,可以调度暂停VM。
为了概述本文中使用的技术,在受保护存储器区域(密钥域)内对访客虚拟机(或代理)的初始启动或恢复使硬件(例如,页未命中处理程序)将分配给访客虚拟机(或代理)的每个存储器位置的对应物理地址的未使用的位设置为密钥域标识符/地址选择符。密钥域标识符/地址选择符识别受保护存储器区域(密钥域),在所述受保护存储器区域中,通过密钥域密钥对访客虚拟机(或代理)的数据进行加密。除了在访客虚拟机的(或代理的)扩展页表(EPT)指定加密将被关闭的情况下之外,物理地址的未使用的位被设置为密钥域标识符/地址选择符。
当访客虚拟机(或代理)将被初始地启动或恢复时,密钥域标识符/地址选择符由VM指针加载(VMPTRLD)指令中提供的地址的未使用的位指定,所述指令加载将被启动或恢复的访客虚拟机(或代理)的控制结构(VMCS)。响应于VMPTRLD函数调用,CPU硬件通过设置物理地址中的密钥域标识符/地址选择符来读取密钥域内的VMCS。如果VMCS无效或被损坏,则主机VMM将拒绝所请求的VMPTRLD函数调用来加载VMCS。如果VMCS有效,则VMCS将被写入高速缓存以供将被启动的代理或访客VM使用,访客地址空间标识符将被转储清除,并且访客状态被清除,从而使得新VMCS可以针对新启动的VM或代理配置地址空间和访客状态。
退出访客VM(或代理)使硬件(例如,页未命中处理程序)停止使用地址中的密钥域标识符/地址选择符或切换回至主机VMM的密钥域。
代理被加载和测量(例如,通过的可信执行技术(TXT)、软件防护扩展(SGX)或可管理性引擎),或者仅作为已加密的存储器内的镜像而被包括由消费者用于管理消费者的VM。针对密钥域,使用作为微调的正确物理存储器地址对代理进行XTS加密,所述代理作为访客VM运行并管理访客VM的代理保护的控制结构(VMCS和EPT)。消费者可以信任代理提供测量并证明主机VMM的有效性、安全地交换私钥、将消费者的经加密域镜像加载到密钥域中并维持消费者的工作负载和数据的隐私。
在一个实施例中,访客虚拟机(如代理)可以使用填隙程序(如中断描述符表钩)来拦截中断。填隙程序可以是访客操作***中的驱动程序。访客VM可以创建其自身填隙程序(拦截中断/异常的驱动程序或代码)或代理可以创建访客VM代表上的填隙程序。代理还可以具有其自身填隙程序(用于处理中断/异常等的驱动程序或代码)。填隙程序作为不受限访客来运行,处理中断和虚拟化异常,使用VMCall指令使VM退出,使用虚拟化异常处理程序来拦截扩展页表违规,使用VMFunc函数来切换到其他扩展页表中,并保证在经由VMCall指令转移回至主机VMM之前可能持有机密数据的通用寄存器和XMM状态被保存且被清除。填隙程序可以根据环境选择性地向主机暴露一些访客状态。例如,如果虚拟设备驱动程序访问具有描述了将由虚拟设备用于DMA的I/O存储器位置的寄存器值的设备空间,则可以向主机VMM暴露此寄存器数据(而不是被保存和被清除)。
这些特征使“盲目的”主机VMM/管理程序能够仍然控制平台。主机VMM可以例如拒绝启动不具有有效或可验证的控制结构(VMCS/EPT)的访客虚拟机。此外,主机VMM可以设置“VM抢占(preempt)”定时器以抢占对访客虚拟机的执行并将控制返回至主机VMM。
图36示出了虚拟机监视器(主机VMM)的用于访问在受保护密钥域内运行的访客虚拟机的虚拟机控制结构的数据流。因为主机VMM 3622不能访问代理36302驻留的受保护存储器(密钥域KD1 35501),所以主机VMM 3622请求代理VM 36302代表其与非可信VM1 36301的控制结构36401交互。
在动作“VMRead”36.1中,即使VMM 3622不具有经解密的密钥域密钥,也允许主机VMM 3622读取控制结构VMCS/EPT 36401,而不需要请求客户VM 36302代表其读取控制结构VMCS/EPT 36401。处理器微代码可以允许将读取操作执行到高速缓存的VMCS中,从而使得主机VMM可以在进入之前验证VMCS。读取操作不会暴露有关访客VM的机密信息(因为GPR寄存器状态保存在其他地方,所以是主机VMM不能够访问的)。读取操作(VMRead)允许主机VMM验证代理由于主机VMM请求而正确地编辑VMCS。读取操作(VMRead)的替代方案是使用散列密钥域(HashKD)指令来验证(通过匹配散列值)存储器内的VMCS与主机VMM所期望的VMCS相匹配。无论主机VMM是否使用代理来读取控制结构,都允许主机VMM验证但不能修改VMCS/EPT。
在动作“VMWrite”36.2中,不允许VMM 3622直接将数据写入VMCS/EPT 36401。相反,在动作“请求VMWrite”36.3中,VMM 3622向代理36302发送用于写入控制结构VMCS/EPT36401的VMWrite请求。在动作“请求EPT编辑”36.4中,VMM 3622请求代理36302编辑VMCS/EPT36401内的EPT。在“VMWrite”动作36.5中,代理36302执行对VMCS/EPT 36401内的EPT的所请求编辑。在一些实施例中,可以允许主机VMM进行有限的写入操作(VMWrite),例如,通过CPU将主机VMM写入操作限制在对访客VM的行为没有影响的VMCS的那些字段。例如,CPU可以独占地允许主机VMM写入VMCS的主机状态区域。影响访客的安全性的任何写入操作需要代理执行。
图37示出了代表虚拟机监视器来起作用的代理对在受保护密钥域内运行的访客虚拟机的虚拟机控制结构进行编辑的过程。针对每个框示出了两种类型的阴影:线填充图案用于示出在主机VMM的控制下的动作,而点填充图案示出了已经传递到在受保护密钥域内执行的访客VM的控制。
在“VMLaunch VM”框3710处,过程从主机VMM启动访客虚拟机开始。在一个实施例中,为了启动访客虚拟机,VMM首先发出用于执行VM指针加载(VMPTRLD)指令的命令,这提供了指向访客VM的消费者提供的控制结构(如VMCS)的指针,从而设置当前VMCS和密钥域标识符/地址选择符。作为执行VM指针加载指令的结果,CPU高速缓存VMCS。如果VMCS无效或被损坏,则主机VMM将拒绝所请求的VMPTRLD函数调用来加载VMCS。如果控制结构/VMCS在受保护存储器区域(密钥域)内,则密钥域标识符/地址选择符由硬件附加到属于正在启动的访客VM的每个物理地址。一旦建立了当前VMCS,VMM就发出用于执行VMLaunch或VMResume指令(所述指令在本文中替代性地被称为VMEntry或VMEnter指令)的命令。
在进入访客VM时,密钥域就可以说是被“打开”,类似于早前所描述的切换密钥域(SwitchKD)指令。如“VMLaunch”框3710中通过从线填充图案到点填充图案的转变所示出的,当访客VM被启动时,控制从主机VMM转变到密钥域内的访客VM。将VMCS写入高速缓存并且设置访客地址空间标识符,否则清除访客TLB。然后,访客VM执行,直到访客VM已经完成其工作负载。
在“(时间过去)VMExit”框3720处,访客VM结束执行,并且控制返回至主机VMM。如“(时间过去)VMExit”框3720中从点填充图案到线填充图案的转变所示出的,当访客VM结束执行时,控制从密钥域内的访客VM转变回到主机VMM。VMExit通常是由访客VM所做的某些事情(如访问无效的、受保护的或被页出的存储器区域)或由外部事件(如并非访客VM所处理的中断或者抢占计时器的期满)所造成的异步事件。替代性地,访客VM可以发出命令以执行造成一种类型的VMExit的VMCall指令。当访客VM退出时,将密钥域标识符/地址选择符重置到主机VMM的密钥域或重新启用访客VM的受保护存储器范围寄存器并将控制返回到主机VMM。
在退出访客VM时且在将控制返回到“根”/主机VMM之前,微代码对硬件(如页未命中处理程序)进行重新编程以便将主机VMM的或共享密钥域设置在所有物理地址上(指示器(如上述的k-位)被设置用于关闭加密的情况除外)。当将控制返回到主机VMM时,不应再使用访客的密钥域密钥,也不应使用访客VM的密钥域标识符/地址选择符。使用主机VMM的密钥或者关闭加密(k-位关闭)。有效的是,CPU在访客VM的密钥域之外(类似于隐式的切换密钥域)切换至云服务提供商(主机VMM的)密钥域。由于主机VMM“root”在正退出的访客VM之下运行,因此控制返回到主机VMM,从而将密钥域切换回至主机VMM的密钥域或共享的未加密存储器(例如,共享的位指示器(k-位)是关闭的)。
主机VMM执行“VMClear”框3730处的VMClear命令以便将访客VM的状态从高速缓存保存到存储器中。作为VMClear命令的一部分,主机VMM提供指向访客VM在其中执行的密钥域的指针,并且校验密钥域内的有效控制结构(VMCS)或者VMCS已被高速缓存到同一地址。
提供有VMClear指令的指针应与最初用于利用VMPTRLD指令将VMCS加载到高速缓存中的指针相同,其中,密钥域ID已附加到所述指针,所述指针是包括密钥域ID的物理存储器地址。重要的是,VMClear并未将VMCS从一个存储器位置发送到另一个存储器位置或从一个密钥域发送到另一个密钥域,因为这些动作将会是攻击。因此,VMClear指令使用与利用VMPTRLD指令给定的且由处理器高速缓存的指针相同的指针,或者处理器将首先需要验证有效VMCS处于针对指定密钥域标识符/地址选择符而被VMClear的存储器位置中。
如果VMCS是有效的并且指针与所高速缓存的VMCS的存储器地址和密钥域标识符/地址选择符相匹配,则主机VMM使用物理地址中的密钥域标识符/地址选择符将VMCS转储清除到存储器,从而使得访客虚拟机的状态被保存在密钥域的存储器内。VMCS可能不被高速缓存,因为并非所有处理器将明确地高速缓存VMCS;一些处理器将访问来自存储器的VMCS。如果VMCS没有被高速缓存,则主机VMM可以通过使用物理地址中的密钥域标识符/地址选择符读取存储器来执行一致性校验,以便校验无效/损坏的VMCS(例如,当密钥域(在执行CreateKD指令时)被创建时,VMCS内的秘密值与处理器的隐藏寄存器中所确定的值之一不匹配)。
处理器在将VMCS写入存储器之前先通过读取VMCS来校验VMCS是为了确保VMCS是有效的或未被损坏。例如,如果主机VMM指定了错误的密钥域标识符/地址选择符并且因此VMCS会被错误地解密,或者如果主机VMM为VMCS指定了错误的存储器位置,则VMCS将被损坏。如果发现了无效或损坏的VMCS,则主机VMM将接收错误并且处理器将不使用VMCS。
控制从“VMClear”框3730继续进行到“VMPTRLD代理VMCS”框3740。VMPTRLD指令为代理提供VM控制结构(VMCS)的物理地址以便加载到存储器中。如果代理VM控制结构的地址在密钥域内,则物理地址的未使用的位包括密钥域标识符/地址选择符。
如上所述,代理的代码和控制结构(VMCS)作为消费者的经加密域镜像的一部分由消费者提供给主机VMM,并且VMCS的正确存储器位置被提供给主机VMM。主机VMM然后继续进行到“VMEnter代理”框3750。
在确认VM指针加载(VMPTRLD)指令所指代的控制结构(VMCS)有效之后,主机VMM将发出VMEnter命令(所述VMEnter命令可以是VMLaunch命令或VMResume命令)以便执行受保护存储器区域(密钥域)内的代理。处理器将使用地址中的密钥域ID(从而允许代理访问被适当解密的存储器)。在受保护存储器区域由范围寄存器提供的实施例中,VMEnter指令将禁用范围寄存器保护,以便只有在代理的VMCS在受保护存储器区域内并且包含仅CPU和代理已知的秘密值时运行受保护存储器区域内的代理。如“VMEnter代理”框3750中通过从线填充图案到点填充图案的转变所示出的,当代理启动时,控制从主机VMM转变到密钥域内的代理。一旦代理在密钥域内得到控制,主机VMM就对消费者的访客VM内发生的活动“不知情”。
主机VMM可以启动密钥域内的代理以便请求代理代表主机VMM来起作用以控制对在受保护存储器区域(密钥域)内执行的另一个访客VM的执行。为了控制对其他访客VM的执行,主机VMM请求代理编辑其他访客VM的控制结构。根据云服务提供商与消费者之间达成一致的软件约定,来自主机VMM的此请求可以以多种形式作出。例如,请求可以被置于存储器内的结构或命令队列中,或者请求可以包括待从主机VMM的存储器复制到访客的受保护密钥域存储器中的整个VMCS。替代性地,可以在处理器寄存器(例如,GPR)中对主机VMM的请求进行编码。
在“代理读取来自主机的请求”框3760处,代理读取来自主机VMM的用于编辑另一个访客VM的控制结构的请求。如上文所指出的,根据云服务提供商与消费者之间达成一致的软件约定,请求可以以若干形式作出。
代理继续进行到“代理编辑KD内的VMCS”框3770,在所述框中,代理编辑密钥域内的另一个访客VM的控制结构(VMCS)。可以使用VMCS阴影来完成用于读取并写入(使用VMRead指令和VMWrite指令)访客VM的控制结构的此权限。在没有VMCS阴影的情况下,访客VM(如代理)一般无法执行VMRead指令和VMWrite指令,因为VMRead和VMWrite旨在由在VMXRoot模式下运行的主机VMM使用。因为VMCS是存储器内的结构,所以在同一密钥域内执行的访客VM可以代表主机VMM直接编辑VMCS;然而,出于安全原因,至少一个实施例将编辑VMCS的能力限制在代理。
在完成对另一个访客VM的控制结构的编辑之后,代理通过执行VMCall指令来退出,从而将控制返回到主机VMM,如“VMExit”框3780中通过从点填充图案到线填充图案的转变所示出的。返回到主机VMM的VMExit重新启用由经加密的密钥域提供的受保护存储器区域,从而阻止主机VMM对代理的代码/数据、VMCS和扩展页表(EPT)的访问以及对受代理保护的访客VM的代码/数据、VMCS和EPT的访问。
在接收到从代理返回的控制时,在“KD内的经VMPTRLD编辑的VMCS”框3790处,主机VMM首先使用被编辑的VMCS的地址/指针(包括密钥域标识符/地址选择符)来执行VMPTRLD指令。VMPTRLD指令加载密钥域内经编辑的控制结构(VMCS)。只有那时,主机VMM才可以执行VMRead指令以验证代理按照主机VMM的请求对另一个访客VM控制结构进行编辑。虽然密钥域中的数据被加密并且主机VMM不具有经解密的密钥域密钥,但是允许主机VMM使用VMRead指令来读取存储器内的VMCS控制结构的一部分。
在确认已按照请求编辑了访客VM控制结构之后,控制则返回“VMLaunchVM”框3710,在所述框中,主机VMM启动访客VM以便根据如主机VMM所提供的经编辑的控制结构来执行。
在一些实施例中,写入操作(VMWrite)可以从主机VMM限制到受保护VMCS,从而要求主机一直请求代理代表主机对VMCS执行任何编辑。在这种实施例中,如果主机VMM请求对密钥域内的VMCS执行写入操作,则写入操作将会被阻止。在其他实施例中,可以允许主机VMM对特定VMCS字段(如主机状态区域中不影响访客VM的安全性的字段)进行有限的写入操作(VMWrite)。
允许主机VMM执行存储操作(VMPTRST)以便将从VMPTRLD指令指向指定地址的当前(高速缓存的)VMCS指针存储到存储器中,所述存储器必须在访客VM的受保护的或经加密的存储器之外。密钥域并未被指定为VMPTRST操作的物理地址的一部分。
图38示出了用于使访客虚拟机选择性地保护访客VM的处理器寄存器状态(如通用寄存器(GPR))免受被损害的虚拟机监视器的修改的中断处理程序/填隙程序。如果VMExit被触发,则中断处理程序/填隙程序在退出访客VM之前被调用,从而给予访客VM在退出到主机VMM之前有条件地保存和保护其处理器寄存器状态的机会。在所示出的示例中,非可信访客虚拟机VM138301和VM2 38302以及密钥域35501内的代理38303中的每一个具有自身相应的中断处理程序/填隙程序38351、38352以及38353。不是VMExit指令使对应的主机VMM被实例化,而是VMExit指令被重定向到对应的中断处理程序/填隙程序,所述中断处理程序/填隙程序使用软件来向主机VMM 3822隐藏访客VM的处理器状态。中断处理程序/填隙程序的一个示例是美国专利申请公开2015/0121366中所描述的虚拟化异常(#VE)驱动程序。
中断处理程序/填隙程序38351、38352以及38353中的每一个可以执行通用寄存器保存或还原操作。在一个实施例中,每个访客VM作为不受限访客运行、拦截所有中断、使用虚拟化异常处理程序来拦截EPT违规、使用VMFunc来切换扩展页表并保证在经由VMCall指令将执行转移到主机VMM 3822之前通用寄存器和其他寄存器状态被有条件地保存和/或清除。
图39示出了图38的中断处理程序/填隙程序的实施方式。非可信VM13930引起了VMExit状况,从而导致待重定向回访客的中断处理程序/填隙程序3935的虚拟化异常。此重定向被认为是“访客引起的退出“而非VMM引起的退出。在一个实施例中,访客引起的退出造成虚拟化异常,并且中断处理程序/填隙程序3935处理所述虚拟化异常。绕过主机VMM,中断处理程序/填隙程序3935可以包括虚拟化异常处理程序(#VE)代码(未示出)。在虚拟化异常处理程序(#VE)处理虚拟化异常之后,控制返回到中断处理程序/填隙程序3935,所述中断处理程序/填隙程序在进行VMCall将控制返回到主机VMM之前有条件地保存并清理了处理器寄存器值(例如,GPR)。主机VMM然后可以发出用于执行VMResume指令的命令,其将恢复非可信VM1 3930,包括中断处理程序/填隙程序3935。中断处理程序/填隙程序3935使寄存器值被还原并且例如通过使用IRET指令将控制返回到非可信VM1 3930。
在一个实施例中,虚拟化异常处理程序#VE可以拦截EPT违规以及CPUID和其他访客引起的退出状况。虚拟化异常处理程序#VE可以决定在通过发出用于执行VMCALL指令的命令将控制转移回主机VMM之前保存和/或清理哪个GPR/XMM寄存器状态。以此方式,非可信VM1 3930可以决定要暴露给主机VMM的CPU状态的方面。
图40示出了图38和图39的中断处理程序/填隙程序驱动程序的操作期间的数据流。对于保存经加密状态,密钥域4050内的一些数据将是寄存器状态信息。主机VMM特定退出(不需要仿真,如例如,抢占计时器事件)可以自动保存CPU状态。例如,CPU可以将所有寄存器状态信息保存到VE信息区域4033(如4KB页)、然后清除寄存器状态、设置VMCS以在重新进入时还原寄存器状态并且然后退出访客VM 4030。主机VMM 4022将处理VMExit指令和VMResume指令。在接收到命令以执行用于恢复给定VM的VMResume指令时,CPU将校验VMCS、从VE信息区域4033还原访客VM的处理器状态并且恢复访客VM。
图41是图示,示出了根据本发明的一个实施例的云服务环境的组件之间用于对消费者提供的代码镜像进行加密并且建立密钥域的消息。虽然数据流处于云服务提供商的主机VMM和待作为提供代理的访客虚拟机运行的消费者提供的镜像的上下文中,但是针对图41所描述的数据流类似于针对图13的上述数据流。注意,无论消费者提供的镜像是针对代理作为访客虚拟机运行还是针对任何其他消费者工作负载作为访客虚拟机运行,相同数据流均适用。
消费者4101向云服务提供商请求受保护服务,并且作为响应,云服务提供商的软件(如例如,主机VMM 4122)提供访客代理镜像、虚拟机控制结构(VMCS)以及扩展页表(EPT)的存储器位置。鉴于这些存储器位置,消费者4101编辑VMCS和EPT以便用于将云服务提供商的服务器上的访客代理镜像实例化。
在一个实施例中,然后由消费者4101使用存储器位置相关“经微调”密码(例如,XTS)和消费者的密钥域密钥来对访客代理镜像(包括控制结构VMCS和EPT)进行加密。虽然只要使用消费者的密钥域密钥对VMCS和EPT进行加密就可以分别提供所述VMCS和EPT,但是在所示出的实施例中,VMCS和EPT被嵌入到访客代理镜像内。
消费者4101还可以使用密钥域密钥来计算经加密访客代理镜像的完整性校验值(ICV,例如,带密钥散列消息认证码(HMAC)值)。ICV可以作为位置相关值而被计算并用于验证位置以及经加密访客代理镜像的相关联的存储器位置的内容。
消费者4101请求云服务提供商主机VMM 4122识别云服务提供商的网络中提供密钥域管理功能的服务器。云服务提供商主机VMM 4122获得具备密钥域能力的服务器(在此实施例中,从具有CPU 4111的服务器开始)的服务器证书并且将服务器证书提供给消费者4101。根据至少一个实施例,消费者4101验证服务器证书由证明所识别的服务器提供了密钥域管理功能的机构进行签名。
消费者4101利用云服务提供商的与具备密钥域能力的服务器的证书相对应的具备密钥域能力的服务器的公共密钥对消费者的密钥域密钥(以及任何其他消费者秘密数据,如存储在VMCS内的秘密值)进行加密。消费者4101将经加密密钥域密钥、经加密访客代理镜像(包括EPT和VMCS)以及(可选地)完整性校验值(ICV)发送到云服务提供商主机VMM4122,所述云服务提供商主机向具备密钥域能力的服务器的CPU 4111发出创建密钥域(CreateKD)命令。在一个实施例中,云服务提供商主机VMM 4122识别密钥域地址选择符以用于新密钥域,从而将密钥域地址选择符提供给具备密钥域能力的服务器的CPU 4111。具备密钥域能力的服务器的CPU 4111创建并初始化密钥域。初始化密钥域可以包括转储清除(之前的密钥域地址选择符所识别的)任何之前的密钥域的高速缓存以及转储清除高速缓存了对之前密钥域的地址映射的转换后备缓冲器。初始化密钥域还可以包括利用经解密的密钥域密钥对存储器加密引擎进行编程以及对CPU中与唯一地识别消费者的(多个)访客代理VMCS的秘密值相对应的隐藏寄存器进行配置。
作为执行初始化功能(作为创建密钥域指令的一部分)的替代方案,具备密钥域能力的服务器的CPU 4111可以执行初始化密钥域(InitKD)指令以便转储清除高速缓存和转换后备缓冲器。
在CPU 4111上执行的主机VMM 4122还可以直接向存储器4112提供消费者的经加密访客代理镜像(包括EPT和VMCS)和完整性校验值。消费者的访客代理镜像已被加密,从而使得可以绕过存储器加密引擎TMEi 4115将消费者的访客代理镜像直接写入存储器,就像所述消费者的访客代理镜像是明文一样。替代性地,消费者的经加密访客代理镜像可以穿过存储器加密引擎TMEi4115,其中,物理地址的加密位(k-位)被关闭,从而使得存储器加密引擎TMEi4115将消费者的经加密访客代理镜像处理成未加密明文。当稍后使用正确的密钥域密钥从存储器4112读取消费者的访客代理镜像时,存储器加密引擎TMEi4115则将对内容进行解密(当经加密VMCS/控制结构在被读取并且消费者的访客代理镜像在由CPU 4111执行时)。
图42示出了用于创建密钥域的替代性实施例。在这个示例中,安全飞地(如使用的软件防护扩展(SGX)创建的飞地)在云服务提供商的服务器上本地创建访客镜像。消费者4210首先从在云服务提供商的服务器上运行的飞地4290获得证书。消费者4210然后验证飞地证书并经由安全机制(如安全套接层连接)将访客镜像发送到飞地4290。飞地4290从云服务提供商的主机VMM(未示出)获得访客镜像、VCMS以及EPT的存储器位置并对本地密钥域密钥进行编程。飞地4290然后向CPU 4211发出用于执行创建密钥域指令的命令。当创建新密钥域时,本地CPU 4211转储清除之前的密钥域地址选择符的高速缓存并使用地址选择符的密钥域密钥对存储器加密引擎TMEi 4215进行编程。
飞地4290然后创建访客镜像的VMCS和EPT并使用飞地4290之前确定的密钥域密钥来对镜像(包含VMCS和EPT)进行重新加密。在所示出的实施例中,飞地4290还使用密钥域密钥来计算访客镜像的完整性校验值。飞地4290然后向云服务提供商的主机VMM(未示出,但在CPU 4211上执行)提供包括VMCS和EPT的经加密访客镜像。替代性地,任何其他可信执行环境(TEE)(如可管理性引擎(ME)或融合式安全引擎(CSE))可以执行本文中归属于飞地TEE的相同功能。同样地,可信第三方服务器或服务可以代表消费者产生经加密存储器镜像以在云服务提供商的基础实施上进行实例化。
如以上针对图41,在CPU 4211上执行的主机VMM(未示出)还可以直接向存储器4212提供消费者的经加密访客镜像(包括EPT和VMCS)和完整性校验值。消费者的访客镜像已被加密,从而使得可以绕过存储器加密引擎TMEi 4215将消费者的访客镜像直接写入存储器4212,就像所述消费者的访客镜像是明文一样。替代性地,消费者的经加密访客镜像可以穿过存储器加密引擎TMEi 4215,其中,物理地址的加密位(k-位)被关闭,从而使得存储器加密引擎TMEi 4215将消费者的经加密访客镜像处理成未加密明文。当稍后使用正确的密钥域密钥从存储器4212读取消费者的访客镜像时,存储器加密引擎TMEi 4215则将对内容进行解密(当经加密VMCS/控制结构在被读取并且消费者的访客镜像在由CPU 4211执行时)。
图43示出了主机VMM验证消费者提供的代理VMCS的过程的一个实施例。云服务提供商的主机VMM 4322向CPU 4311发出命令以便使用位于消费者的经加密存储器镜像中的消费者提供的代理的控制结构(VMCS)地址和密钥域标识符/地址选择符来执行VM指针加载(VMPTRLD)指令。存储器加密引擎TMEi 4315使用物理地址的经由VMCS的VMPTRLD指令指定为密钥域标识符/地址选择符的所选位(如未使用的最高位)。存储器加密引擎TMEi 4315从存储器4312读取经加密数据行并使用从密钥域标识符/地址选择符确定的密钥域密钥来对数据行进行解密(使用存储器位置相关密码,如XTS,如上所述)。如果VMCS正确解密,则CPU4311高速缓存VMCS,并且云服务提供商的主机VMM 4322执行对VMCS的VMRead以便确保为主机VMM 4322正确地配置VMCS。如果VMCS被正确地配置,则主机VMM 4322向CPU 4311发出用于执行VMLaunch指令的命令以便使用消费者提供的代理VMCS来启动代理。CPU 4311然后作为访客VM来运行代理。
对上文中关于图43所描述的代理控制结构(VMCS/EPT)的验证可以替代性地使用散列密钥域(HashKD)指令来进行。在使用HashKD的实施方式中,CPU将会执行初始地安装VMCS/EPT以确定期望散列值的存储器位置的HashKD指令、根据响应于读取指令而产生的数据创建另一个散列值并验证这两个散列值相匹配,从而验证控制结构(VMCS/EPT)。
一旦代理控制结构(VMCS和EPT)被主机VMM验证,主机VMM就会信任代理。代理然后可以由主机VMM启动并用于通过添加代码或数据来修改消费者的镜像以便修改消费者的访客VM的功能。
尽管图43的描述涉及验证代理VMCS,但是相同数据流适用于待用于启动访客虚拟机的任何消费者提供的访客VMCS。
图44提供了主机VMM请求代理修改另一个访客VM的控制结构(VMCS/EPT)的数据流的示例。虽然所描述的过程使用EPT作为被修改的控制结构的示例,但是同一过程适用于EPT修改和VMCS修改两者以及对访客VM的任何其他控制结构或存储器内容的修改。
当访客VM 4402退出并将控制返回到云服务提供商的主机VMM 4422时,EPT条目可以指示页不存在。作为示例,EPT条目可被设置用于指示存储器页不存在,因为所述页之前被主机VMM页出。如果访客VM试图访问所述非存在页的地址,则相关联的EPT条目将透露页不存在,从而导致VMExit发生。如图44中所示出的,主机VMM的目标是将原始页替换回存储器中并且然后重置退出的EPT条目以便指示页现在存在于指定地址,从而使得主机VMM可以利用回到存储器中的被访问页来恢复对访客VM的执行。
在接收到控制时,CPU(未示出)就将从与其相关联的控制结构(例如,VMCS,未示出)还原主机VMM 4422的主机状态。主机VMM 4422随后可以决定恢复访客VM 4402并将消息发送到代表主机VMM 4422在待恢复的访客VM 4402的密钥域内工作的代理4403。主机VMM4422跟踪哪个访客VM(在此示例中,访客VM 4402)因为主机VMM 4422初始地启动访客VM(包括访客VM 4402)而已退出。主机VMM 4422还跟踪每个访客VM因为主机VMM 4422指定密钥域标识符/地址选择符作为用于为访客VM加载VMCS的VM指针加载(VMPTRLD)指令中所使用的地址的一部分而所属的密钥域。主机VMM 4422还跟踪给定密钥域的代理以及所述给定密钥域中相关联的访客VM。
为了恢复访客VM 4402,主机VMM 4422为代理4403准备消息以便编辑访客VM 4402的EPT并执行清除操作(发出用于执行VMClear指令的命令)以便将访客VM 4402的VMCS从每个处理器VMCS高速缓存(未示出)清除。作为清除操作的一部分,访客VM 4402的VMCS在其回到存储器4412途中还连同密钥域标识符/地址选择符一起被返回到高速缓存4413。密钥域标识符/地址选择符将被用作最终写入VMCS的物理地址的所选位组(如未使用的最高位)的一部分以便向存储器加密引擎指示要使用哪个密钥域密钥。存储器加密引擎TMEi 4415将经加密VMCS连同针对具有完整性的实施例的完整性校验值一起写入存储器4412。
在发出了用于执行VMClear指令的命令之后,主机VMM 4422执行两个操作。在由主机VM 4422执行的第一操作中,主机VMM 4422将未加密(k-位关闭,也被表示为!k)请求置入与代理4403(所述代理可以在高速缓存4413或存储器4412中)共享的存储器位置中,从而指定所请求的针对VM 4402的EPT的编辑。在所示出的示例中,存储器加密引擎TMEi 4415将明文请求写入存储器4412中的存储器位置中。随后,代理4403将从存储器4412检索所请求的针对VM 4402的EPT的编辑。除EPT编辑请求之外,主机VMM 4422可以向代理提供附加信息,所述附加信息包括要被页回到存储器中的经加密页内容。
在由主机VMM 4422所执行的第二操作中,主机VMM 4422发出用于执行VMPTRLD指令的命令,从而提供指向代理4403的VMCS的指针以及密钥域标识符/地址选择符,所述指针确定待用于对代理4403的VMCS进行解密的密钥。代理4403的VMCS由存储器加密引擎TMEi4415从存储器4412读取,所述存储器加密引擎TMEi使用VMPTRLD指令中指定的密钥域标识符/地址选择符对代理4403的VMCS进行解密。主机VMM 4422获得由存储器加密引擎TMEi4415产生的经解密的VMCS。响应于正确地加载代理的VMCS,主机VMM 4422发出用于执行VMLaunch指令的命令,所述VMLaunch指令使用经适当地解密代理VMCS作为控制结构来启动代理4403。运行代理4403代码的CPU从经解密代理VMCS还原相关联的虚拟处理器的访客状态。
在所示出的示例中,代理4403使请求数据从存储器4412读取。在一个实施例中,代理4403校验存储器中的命令队列位置并在那里从主机VMM 4422中找到另一个请求,并且然后,代理4403通过使请求数据从存储器中读取来响应所述命令。请求还可以(例如,经由GPR寄存器状态)传送到主机VMM 4422作为处理器寄存器状态,主机VMM 4422可以使用所述处理器寄存器状态来触发代理4403以便从存储器读取请求。其他实施例可以使用不同的机制来向代理4403传送存在杰出的主机VMM 4422请求。
未加密请求数据由代理4403从高速缓存读取,并且代理4403对主机VMM 4422的请求进行处理以便编辑访客VM 4402的EPT。代理4403将针对VM 4402的EPT编辑经由存储器加密引擎TMEi 4415写入存储器4412,这使得经加密EPT和相关联的完整性校验值被写入存储器4412。替代性地,具有对EPT条目的存储器加密密钥和存储器位置的访问的代理4403可以简单地使用存储器加密密钥对经编辑的EPT结构进行加密并经由共享存储器通道将此密文(经加密的编辑后EPT结构)传送回至主机VMM 4422。
代理4403还可以对由主机VMM 4422提供的待被页回到存储器中的任何经加密页内容进行解密。例如,代理4403可以使用代理4403用于分页的不同秘密密钥对页进行解密,从而将访客物理地址(GPA)用作微调。代理4403还可以验证页内容或使用ICV来验证页内容未被修改,因为所述页内容最后利用同一秘密密钥和微调而被页出和加密。代理4403然后可以将(多个)经解密页写入存储器,假定代理具有对这些存储器位置的访问,或者代理可以使用存储器加密密钥和物理地址微调对页进行重新加密,从而经由共享存储器通道将所产生的密文返回到主机VMM 4422。完成由主机VMM 4422作出的编辑EPT的请求,代理4403就完成了其任务并退出,从而将控制返回到主机VMM 4422。
执行VMExit的CPU从代理4403的VMCS的主机状态区域还原主机VMM 4422状态。主机VMM 4422可选地可以发出用于执行VMClear指令的命令以便清除代理4403的VMCS。作为清除操作的一部分,使用密钥域标识符/地址选择符将代理4403的VCMS写入高速缓存4413。经加密代理VMCS和相关联的完整性校验值被存储器加密引擎4415写入存储器4412。
主机VMM 4422然后可以验证代理4403通过发出用于执行散列密钥域(HashKD)指令的命令而在要修改VM 4402的EPT的存储器位置上或在主机VMM安装了由代理提供的EPT密文的位置上正确地编辑了VM 4402的EPT。存储器加密引擎TMEi 4415使用密钥域标识符/地址选择符作为地址选择符以便读取针对相关联的密钥域的经加密数据。存储器加密引擎TMEi 4415读取经加密数据行,对数据进行解密并将经解密数据发送到地址和密钥域标识符/地址选择符的高速缓存4413。
执行HashKD指令的处理器读取由存储器加密引擎TMEi 4415获得的经解密数据,并且主机VMM 4422验证所读取的存储器位置的内容的散列值与期望的EPT内容的散列值相匹配。此时,主机VMM 4422还可以将被代理4403重新加密的经由共享存储器返回的页的任何密文写入正确的存储器位置(针对代理不具有对存储器的访问以便自己安装页的情况)。如果散列值相匹配,则主机VMM 4422针对VM 4402的VMCS发出用于执行VMPTRLD指令的命令。此时,主机VMM然后可以使用VMRead来重新验证VMCS的内容。主机VMM 4422然后从VM4402的VMCS发出用于启动访客VM 4402的命令。执行VM 4402的代码的处理器从VM 4402的VMCS还原VM 4402的虚拟处理器的状态并使用经修改EPT来执行VM 4402,所述经修改EPT现在指示页是存在的并识别出页所在的存储器地址。
参照图44所描述的存储器事务可以驻留在高速缓存4413中,从而消除对存储器加密引擎(TMEi 4415)读取数据并将数据从高速缓存4413写入存储器4412的需要,并且反之亦然。然而,上述存储器事务被描述成好像针对每个事务的数据从高速缓存4413逐出到存储器4412中。
一些实施例还可以启用页修改日志记录(PML),从而使得主机VMM可以跟踪由访客代理访问的存储器位置。散列密钥域(HashKD)指令的数量可以限制到仅在代理执行的同时实际上被修改的那些存储器位置。这里,PML地址和日志页将会保持在主机VMM的密钥域(或共享存储器/k-位关闭)中,从而使得VMM可以跟踪访客VM的动作。
类似地,一些实施例可以使用子页策略表(SPPT)[如美国专利9,335,943B2中所描述的]以便允许主机VMM另外限制代理可以访问的存储器位置。在这种实施例中,主机VMM将会控制SPPT并且可以给予代理经由其EPT对存储器的访问,其中,代理的VMCS指示附加SPPT被启用。VMCS中的子页保护表指针将会使用主机VMM的密钥域(或共享存储器/k-位关闭)。代理的EPT条目包括主机VMM可以使用主机VMM的SPPT来覆写写入访问的每个条目的SPP位集合。
图45是流程图,示出了对VM指针加载(VMPTRLD)、VMEnter(VMLaunch或VMResume)以及VMExit指令的执行。在框4505处,响应于提供VMCS地址的VMPTRLD指令,来自VMCS地址的密钥域标识符/地址选择符用于访问VMCS。在决策点4510处,通过验证VMCS的内容来对VMCS是否正确地解密作出决策(这可以包括版本号以及代理与处理器之间所共享的并且被存储在代理VMCS内的秘密值,如参照图37在上文中所描述的,“VMEnter代理”框3750)。如果VMCS未正确地解密,则控制继续进行到框4515,在所述框中,错误返回到发出用于执行VMPTRLD指令的命令的主机VMM。如果VMCS正确地解密,则控制继续进行到框4520,在所述框中,可选地高速缓存VMCS。在框4525中,可选的VMRead指令由主机VMM执行以便验证VMCS的内容。
控制从框4520继续进行到框4530,在所述框中,执行VMEnter指令。使用来自VMPTRLD指令中的地址的密钥域标识符/地址选择符使虚拟机被实例化(通常是被启动或恢复)以便访问用于进入虚拟机的VMCS(如果VMCS在框4520处未被高速缓存)。如果VMCS在框4520处已被高速缓存,则框4530可以使用高速缓存的VMCS来使虚拟机实例化。
在决策点4535处,对VMCS是否因为处理器将在试图还原访客的处理器状态时对VMCS执行其他一致性校验而损坏或无效作出决策。如果VMCS是损坏或无效的,则控制继续进行到框4540,在框4540处,将错误返回到主机VMM。如果VMCS并非是损坏或无效的,则控制继续进行到框4545。在框4545处,转储清除CPU流水线。鉴于转储清除了密钥域标识符/地址选择符或TLB,对转换后备缓冲器(TLB)的地址空间标识符标记进行设置。将CPU寄存器设置为VMCS访客状态。另外,如果VMCS中存在其物理地址所指示的虚拟化异常(VE)信息页并且VMCS指示附加访客状态目前被存储在那里,则将从VE信息页还原处理器寄存器的剩余部分。还原处理器寄存器包括将当前密钥域标识符/地址选择符添加到VE信息页地址。扩展页表指针(EPTE)是用作EPT表的基的物理地址。因为EPT表在访客VM的密钥域内,所以此地址应同样包括密钥域标识符/地址选择符,从而使得EPT结构进行适当地解密。
控制从框4545继续进行到框4550,在框4550中,进行用于在访客状态指令指针(IP)处执行的分支。执行继续直到用于退出当前执行虚拟机的退出状况,并且控制继续进行到框4555。与任何VMExit一样,访客处理器状态被存储到当前VMCS。如果存在VE信息页且并非由于VMCall而退出,则可以将访客的处理器寄存器状态的剩余部分保存到VE信息页,并且然后清除这些寄存器。控制从框4555继续进行到框4560。在框4560处,转储清除CPU流水线。针对VMXRoot设置地址空间标识符标记或者转储清除TLB。在主机VMM有自身的密钥域标识符/地址选择符的实施例中,将当前密钥域设置为主机VMM密钥域标识符/地址选择符。在主机VMM处于未加密存储器中的实施例中,将k-位设置为“关闭”并且清除密钥域标识符/地址选择符位。将CPU寄存器设置为高速缓存的VMCS主机状态。控制从框4560继续进行到框4565,在框4565中,进行用于在主机状态指令指针(IP)处执行的分支。
在图45中,EPT保持在主机VMM的控制之下(照常)。为了防止存储器重映射攻击,一些实施例可以添加新表(被称为反向映射表,未示出),所述新表由处理器(页未命中处理程序(PMH))根据页遍历进行访问。在通过页遍历确定地址映射后,针对由所产生的物理地址索引的反向映射表(RMT)中的条目对所产生的物理地址进行校验。条目包括消费者(和/或消费者的代理)所期望的物理地址以及其相关联的访客物理地址(以及权限位和/或k-位)。如果PMH确定访客物理地址(GPA)或权限与完成的页遍历所确定的那些访客物理地址或权限不匹配,则CPU将退出(执行指示错误的VMExit指令)。此RMT条目由处理器/PMH使用属于执行访客VM的密钥域ID进行访问。因此,每个RMT表条目必须是使用消费者的密钥加密的XTS,从而使得仅消费者或消费者的代理可以产生这些RMT条目(在它们适用于消费者的密钥域时)。
现在参照图46,示出了用于更新消费者的访客VM镜像的过程。在已经建立了消费者的初始代码镜像4631之后,所述进程在密钥域4650内作为访客VM 46301开始运行,所述访客VM仅可以访问在由消费者提供的作为经加密访客控制结构的一部分的扩展页表(EPT)中映射并授权许可的存储器。为了使消费者的访客VM 46301能够提供附加功能,附加代码可以被添加至访客VM 46301代码镜像4631。因为访客VM 46301仅访问密钥域4650内的存储器的部分,然而,涉及了云服务提供商的主机VMM 4622和访客代理46302以更新访客VM的代码镜像4631。
如以上所指出的,消费者的经加密的访客代码镜像可以包括用于启动第二访客、访客代理的代码。一旦访客代理46302在消费者的经加密的密钥域4650内作为访客代理虚拟机运行,访客代理46302就可以代表主机VMM 4622执行若干任务。只要任务不损害消费者的访客VM 46301,访客代理46302就按照要求代表主机VMM 4622执行这些任务。主机VMM4622可以验证由代理46302执行的任务已经按照要求执行。因此,主机VMM 4622不需要为代理46302或信任代理46302提供代码镜像。
作为可以由代理46302代表主机VMM 4622执行的任务的示例,代理46302可以在密钥域4650内部创建其他访客虚拟机、从主机VMM 4622请求更多存储器、并且将存储器页从消费者或消费者授权的第三方移动到消费者访客VM46301工作负载。例如,代理46302可以将访客VM代码镜像4604的经消费者加密的剩余部分安全地传送至消费者的访客VM 46301。VM代码镜像4604的经加密剩余部分可以首先经由在消费者与访客代理46302之间建立的安全连接(例如,传输层安全/安全套接层(TLS/SSL)会话)传送。主机VMM 4622将经加密数据包和包含VM代码镜像4604的剩余部分的缓冲器复制到共享存储器4612U以由访客代理46302检索。访客代理46302通过对经加密数据包和缓冲器中包含的数据进行解密来终止TLS/SSL会话。
在密钥域4650内运行,访客代理46302可以访问由消费者所使用的存储器加密密钥域密钥(如图41中消费者使用所述密钥域密钥创建初始访客VM镜像)。使用密钥域密钥,代理46302可以单独地对附加数据/代码/结构进行XTS加密(借助适当的存储器地址微调)。访客代理46302然后可以将所产生的密文提供给主机VMM 4622(例如,经由共享存储器通道4612U,如由从代理46302穿过共享存储器4612U的“写存储器”箭头所示出的)。由于只有主机VMM 4622访问所有存储器(包括未加密共享存储器4612U),所以主机VMM 4622然后可以将所述密文(由于主机VMM 4622不具有密钥域密钥,所以主机VMM 4622无法对其进行解密)安装到适当的存储器位置(它们加密的地址处)中。
例如,为了改变访客代理46302访问的存储器位置,主机VMM 4622可以请求访客代理46302(使用消费者的存储器加密密钥域密钥)生成用于新的EPT数据和地址微调的适当密文(并且如果期望完整性,则计算完整性校验值(ICV))。所以主机VMM 4622然后将代表访客代理46302在正确位置处将密文复制到存储器,因为只有主机VMM 4622具有对所有存储器进行寻址的能力。一旦所更新的代理EPT被正确地安装,访客代理46302然后将拥有对这些新存储器位置的直接访问权。
由于主机VMM 4622可以请求主机代理46302创建用于所选EPT结构的密文以便将所选EPT结构指定为不存在(无权限或无映射),所以遵循类似的过程来限制访客代理46302可以访问的存储器位置。在所有情况下,一旦密文被安装到正确的存储器位置中,主机VMM4622就可以使用上述散列密钥域(HashKD)命令来验证密文的内容。
由于只有访客代理46302具有存储器加密密钥域密钥、并且可以将此授权的经加密数据传递给主机VMM 4622,所以云服务提供商的主机VMM 4622对***、存储器以及其他资源进行控制,而访客代理46302对访客代理46302授权的数据进行控制。
对于具有***管理模式(SMM)或使能的类似特权模式的***,SMM不应访问消费者的密钥或密钥域标识符/地址选择符。类似地,当***管理中断(SMI)在消费者的访客VM的执行期间出现时,访客处理器寄存器状态应该被保存到SMM不能够访问的存储器位置并且被清除。
图47描述了消费者向消费者的访客VM工作负载添加页的另一个过程。在所示出的示例中,消费者的访客VM镜像的剩余部分的数据包被消费者直接发送给主机VMM 4722(经由如以上相对于图46所描述的消费者与访客代理之间的安全通信会话)。作为响应,主机VMM 4722经由存储器加密引擎TMEi 4715将消费者的访客VM镜像的剩余部分的数据写入存储器4712。
主机VMM 4722发出用于启动CPU 4711上的访客代理的命令,并且CPU 4711开始执行由消费者提供的作为用于提供访客代理4703的经加密访客VM代码镜像的一部分的访客代理代码镜像。主机VMM 4722通过存储器4712的共享(加密位(k-位)关闭)部分来发送消费者的访客VM镜像的剩余部分。运行中的代理4703通过请求存储器加密引擎TMEi 4715从具有最高未使用位的地址读取数据来读取来自存储器4712的主机VMM 4722的共享部分(未加密,k-位关闭)的消费者的访客VM镜像的剩余部分的数据,所述最高未使用位被设置成用于共享(k-位关闭)密钥域的密钥域标识符/地址选择符。由于代理4703是用于与消费者的安全通信会话的端点,所以代理4703(例如,使用OpenSSL软件库)将网络数据包解密到共享存储器区域中。运行中的代理4703在具有设置成用于消费者的密钥域的密钥域标识符/地址选择符的最高未使用位的地址处将所产生的经解密数据复制到的经加密存储器(使用消费者的密钥域密钥加密,k-位打开)。在首先写入新存储器地址期间,MOVNT指令可以在没有首先读取待写入的新存储器地址的内容的情况下用于执行写入存储器4712的新存储地址的写合并操作。存储器加密引擎TMEi 4715然后将用于消费者的访客VM镜像的剩余部分的经加密数据连同完整性校验值(ICV)写入存储器4712。
代理4703对数据进行处理(例如,对软件中的数据进行解密、执行完整性校验等等)。消费者形成安全通信会话(例如,使用从使用消费者的加密密钥(密钥域密钥)的消费者到代理镜像的TLS栈的TLS/安全套接层会话),并且数据包经由控制器通过共享存储器(未加密,k-位打开)发送。
以上实施例描述了消费者可以信任其秘密和数据在公共云中如在私有云环境中一样安全的环境。消费者(或消费者的可信中介)可以提供经加密访客虚拟机(VM)镜像,所述经加密访客虚拟机镜像可以被安装在受保护存储器区域(被称为密钥域)中,在所述受保护区域中,使用消费者提供的密钥域密钥来对存储器页进行加密。消费者的经加密访客虚拟机镜像可以由云服务提供商服务器的处理器使用密钥域密钥来进行解密,所述密钥域密钥由消费者提供给主机VMM仅作为经加密密钥域密钥。在主机VMM不暴露于经加密访客虚拟机镜像的加密密钥域密钥或内容以及其中包含的秘密的情况下,消费者的访客VM可以由云服务提供商的软件/主机虚拟机监视器(VMM)验证。可以使用由来自(多个)消费者提供的控制结构内的处理器解密的处理器状态信息来执行消费者的经加密访客虚拟机镜像,所述消费者提供的控制结构还被提供给使用消费者的密钥域密钥来加密的主机VMM。
使用消费者的密钥域密钥来加密的控制结构信息可以包含存储器映射结构(扩展页表(EPT))。
执行消费者的经加密访客虚拟机镜像的处理器可能遇到需要从访客VM退出到主机VMM的情况。当访客的VM退出时,主机处理器自动将当前密钥域切换回主机VMM的密钥域或在主机VMM与由主机VM管理的每个访客虚拟机之间共享的共享密钥域。在访客VM的退出中,消费者提供的访客控制结构指定受保护存储器位置,在所述受保护存储器位置中,主机处理器可以自动存储并清除退出到主机VMM时的处理器寄存器。
在一个实施例中,访客VM代码镜像包含用于拦截中断并将访客VM退出转换为异常的中断处理程序代码,其中,用户VM可以将处理器寄存器信息保存到受保护存储器并且清除或有条件地暴露主机VMM所需的处理器寄存器。当访客VM已经完成用于保存访客VM的存储器状态的准备时,访客VM可以调用主机VMM。
在一个实施例中,消费者提供的经加密访客VM镜像和访客控制结构可以通过发送经加密镜像更新或经加密控制结构更新(增量)来动态地进行更新或修改,所述经加密的镜像更新或所述经加密的控制结构更新由主机VMM安装到主机的存储器中并进行验证。经加密镜像更新可以充当访客VM的经加密代码镜像的替代,或者经加密镜像更新可以是用于修改访客VM的经加密代码镜像的“增量”镜像。
用于经加密访客控制结构的动态更新可以由主机VMM或访客VM发起。例如,主机VMM可以确定访客代码镜像应该被移动至不同的存储器位置。将访客代码镜像移动到不同的存储器位置影响访客控制结构的扩展页表(EPT)。访客VM可以验证对访客控制结构进行的改变并且为主机VMM提供已更新经加密访客控制结构。主机VMM可以将访客提供的已更新经加密访客控制结构复制到适当的存储器位置中。
作为由访客VM发起的经加密访客控制结构的动态更新的示例,访客VM可以从主机VMM请求更多的存储器。响应于此请求,主机VMM可以确定必须修改访客控制结构的扩展页表(EPT)。访客VM可以验证对附加存储器的分配以及对访客控制结构所产生的改变,并且将已更新经加密访客控制结构提供给主机VMM。主机VMM可以将已更新经加密访客控制结构复制到适当的存储器位置中。
可以使用例如用于指示存储器位置是否将被共享的存储器位置的物理地址的位来在受保护访客VM与主机VMM之间建立共享通信通道。在一个实施例中,位可以被关闭以指示存储位置将被共享,并且位可以被打开以指示存储位置将被保护(加密)。
可以通过主机VMM与受保护访客VM之间的共享通信通道来发送对消费者提供的访客控制结构或访客VM镜像进行改变的请求。受保护访客VM可以验证这种请求不损害访客VM的安全性,并且访客VM可以使用密钥域密钥来产生用于所请求改变的密文。访客VM然后可以将实施所请求改变的密文提供给主机VMM。主机VMM可以将访客VM提供的密文安装到存储器中,并且验证所请求改变由访客VM正确地完成(例如,使用散列密钥域(HashKD)指令)。一旦密文被验证,主机VMM然后就可以执行经修改访客VM镜像。
在一个实施例中,消费者提供的经加密访客VM镜像可以包含用于实施第二访客VM(代理)的代码,所述第二访客VM访问消费者提供的访客VM的存储器(密钥域)。此代理由消费者提供以使主机VMM能够请求所述代理代表主机VMM来执行任务。主机VMM可以通过共享通信通道将请求传送给代理。主机VMM可以请求代理代表主机VMM修改第二访客VM(或第三访客VM等等)的存储器的控制结构或内容。代理可以验证用于改变访客VM的存储器的主机VMM请求不损害消费者的安全策略。主机VMM可以验证由代理(例如,经由HashKD指令)对存储器作出正确改变,并且然后执行经修改访客VM。
此外,代理可以在由主机VMM请求之后执行存储器分页操作。例如,代理可以“页出”受保护存储器的页(通常包含4KB数据),从而使用离线存储设备的第二密钥对受保护存储器的内容进行加密。在此页出场景下,代理经由共享存储器通道将经加密页提供给主机VMM。代理还可以根据主机VMM的请求执行“页入”操作,从而经由共享存储器通道使用第二密钥对由主机VMM提供的存储器内容进行解密、对内容进行验证、并且将经解密内容安装到受保护存储器中。
在以上实施例中的每个实施例中,提供给密钥域的密码存储器保护可以可选地包括完整性验证,其中,完整性校验值(ICV)可以用于验证存储器位置的内容。
以下段落涉及进一步的实施例。
在示例1中,一种用于在公共云环境中安全地执行消费者工作负载而不暴露消费者的数据或秘密的装置包括:处理器;以及存储器,耦合至所述处理器;其中,所述处理器用于执行不可信主机虚拟机监视器以便管理由所述处理器对至少一个访客虚拟机的执行;所述不可信主机虚拟机监视器用于接收经加密密钥域密钥、由密钥域密钥加密的经加密访客代码镜像、以及由所述密钥域密钥加密的经加密访客控制结构,所述密钥域密钥是所述不可信主机虚拟机监视器不能够访问的;所述不可信主机虚拟机监视器用于向所述处理器发出用于创建第一密钥域的创建命令,所述第一密钥域包括所述存储器的待由所述密钥域密钥加密的区域,所述不可信主机虚拟机监视器用于进一步验证所述经加密访客控制结构;响应于接收到所述创建命令,所述处理器用于创建所述第一密钥域并且对所述经加密密钥域密钥进行解密以便产生所述密钥域密钥;所述不可信主机虚拟机监视器用于向所述处理器发出用于启动所述第一密钥域内的第一访客虚拟机的启动命令;并且响应于接收到所述启动命令,所述处理器用于:切换到所述第一密钥域,对所述经加密访客控制结构进行解密以便产生包含访客处理器状态信息的访客控制结构,对所述经加密访客代码镜像进行解密以便产生访客代码镜像,并且使用所述访客处理器状态信息来执行所述第一密钥域内的所述访客代码镜像。
示例2包括示例1的装置,其中,所述不可信主机虚拟机监视器用于通过向所述处理器发出用于执行散列密钥域指令和VMRead指令中的至少一者的命令来验证所述经加密访客控制结构。
示例3包括示例1的装置,其中,响应于触发所述第一访客虚拟机的退出条件的事件,所述处理器用于从所述第一密钥域切换到第二密钥域。
示例4包括示例3的装置,其中,所述第二密钥域是未加密的;并且所述第二密钥域是所述存储器的由所述不可信主机虚拟机监视器和受所述不可信主机虚拟机监视器管理的每一个访客虚拟机共享的共享区域。
示例5包括示例3的装置,其中,所述第二密钥域由用于所述不可信主机虚拟机监视器的第二密钥域密钥加密;所述第二密钥域密钥能够由所述不可信主机虚拟机监视器访问,并能够由受所述不可信主机虚拟机监视器管理的每一个访客虚拟机访问;并且所述第二密钥域是所述存储器的由所述不可信主机虚拟机监视器和受所述不可信主机虚拟机监视器管理的每一个访客虚拟机共享的共享区域。
示例6包括示例3的装置,其中,所述访客控制结构指定所述存储器的受保护位置,在所述受保护位置处所述存储器能够存储所述访客处理器状态信息。
示例7包括示例6的装置,其中,响应于触发所述第一访客虚拟机的退出条件的事件,所述处理器用于将所述第一访客虚拟机的所述访客处理器状态信息保存在所述存储器的所述受保护位置中;所述不可信主机虚拟机监视器用于向所述处理器发出用于恢复所述第一访客虚拟机的恢复命令;并且响应于接收到所述恢复命令,所述处理器用于:切换到所述第一密钥域,从所述存储器的所述受保护位置处检索所述第一访客虚拟机的所述访客处理器状态信息,并且使用所述访客处理器状态信息来执行所述第一密钥域内的所述访客代码镜像。
示例8包括示例3的装置,其中,所述访客代码镜像包括用于拦截中断的中断处理程序代码;所述处理器用于将所述第一访客虚拟机的退出条件转换为异常;所述访客代码镜像用于响应于所述中断和所述异常中的至少一个而将处理器寄存器信息保存到所述存储器的所述受保护位置;所述访客代码镜像用于在所述不可信主机虚拟机监视器不需要第一处理器寄存器时清除所述第一处理器寄存器;所述访客代码镜像用于在所述不可信主机虚拟机监视器需要第二处理器寄存器时有条件地暴露所述第二处理器寄存器;所述访客代码镜像用于调用所述不可信主机虚拟机监视器;并且所述第一访客虚拟机用于在所述不可信主机虚拟机监视器被调用时退出。
示例9包括示例3的装置,其中,所述不可信主机虚拟机监视器用于:接收经加密的更新后访客控制结构,将所述经加密的更新后访客控制结构安装在所述存储器中,并且验证所述经加密的更新后访客控制结构;所述处理器用于对所述经加密的更新后访客控制结构进行解密以便产生更新后访客控制结构;响应于验证所述经加密的更新后访客控制结构,所述不可信主机虚拟机监视器用于向所述处理器发出用于使用所述更新后访客控制结构进入所述第一访客虚拟机的进入命令;并且响应于接收到所述进入命令,所述处理器用于使用所述更新后访客控制结构进入所述第一访客虚拟机。
示例10包括示例9的装置,其中,所述不可信主机虚拟机监视器进一步用于接收经加密的更新后访客代码镜像并且将所述经加密的更新后访客代码镜像安装在所述存储器中;所述处理器用于对所述经加密的更新后访客代码镜像更新进行解密以便产生更新后访客代码镜像;并且所述处理器用于通过使用所述更新后访客控制结构执行所述更新后访客代码镜像来进入所述第一访客虚拟机。
示例11包括示例3的装置,其中,所述不可信主机虚拟机监视器用于判定是否需要对所述访客控制结构进行改变;所述第一访客虚拟机用于验证对所述访客控制结构进行的所述改变不损害所述第一访客虚拟机的安全性;所述第一访客虚拟机用于使用所述密钥域密钥来产生结合所述改变的经加密的更新后访客控制结构;并且所述第一访客虚拟机用于经由所述存储器的由所述不可信主机虚拟机监视器和所述第一访客虚拟机共享的共享区域向所述不可信主机虚拟机监视器发送所述经加密的更新后访客控制结构。
示例12包括示例11的装置,其中,所述不可信主机虚拟机监视器用于将所述经加密的更新后访客控制结构安装在所述存储器中;所述不可信主机虚拟机监视器用于验证所述经加密的更新后访客控制结构;所述处理器用于对所述经加密的更新后访客控制结构进行解密以便产生更新后访客控制结构;响应于验证所述经加密的更新后访客控制结构,所述不可信主机虚拟机监视器用于向所述处理器发出用于使用所述更新后访客控制结构进入所述第一访客虚拟机的进入命令;并且响应于接收到所述进入命令,所述处理器用于使用所述更新后访客控制结构进入所述第一访客虚拟机。
示例13包括示例12的装置,其中,响应于从所述第一访客虚拟机接收到的请求,所述不可信虚拟机监视器判定是否需要对所述访客控制结构进行改变。
示例14包括示例13的装置,其中,所述请求进一步包括对所述访客代码镜像进行的第二改变;所述第一访客虚拟机用于验证对所述访客代码镜像进行的所述第二改变不损害所述第一访客虚拟机的安全性;所述第一访客虚拟机用于使用所述密钥域密钥来产生结合所述第二改变的经加密的更新后访客代码镜像;并且所述第一访客虚拟机用于经由所述存储器的所述共享区域向所述不可信主机虚拟机监视器发送所述经加密的更新后访客控制镜像。
示例15包括示例14的装置,其中,所述不可信虚拟机监视器用于接收所述经加密的更新后访客代码镜像;所述处理器用于对所述经加密的更新后访客代码镜像进行解密以便产生更新后访客代码镜像;并且所述处理器用于通过执行所述更新后访客代码镜像来执行所述访客代码镜像。
示例16包括示例15的装置,其中,所述经加密访客代码镜像包括代理代码镜像;所述经加密访客控制结构包括代理控制结构;所述不可信主机虚拟机监视器用于验证所述代理控制结构;所述不可信主机虚拟机监视器用于向所述处理器发出用于启动所述第一密钥域内的第二访客虚拟机的第二启动命令,所述第二访客虚拟机用于提供代理以便代表所述第一密钥域内的所述不可信主机虚拟机监视器来起作用;并且响应于接收到所述第二启动命令,所述处理器用于:切换到所述第一密钥域,对所述经加密访客代码镜像进行解密以便产生所述代理代码镜像,对所述经加密访客控制结构进行解密以便产生包含代理处理器状态信息的所述代理控制结构,并且使用所述代理处理器状态信息来执行所述第一密钥域内的所述代理代码镜像。
示例17包括示例16的装置,其中,所述不可信主机虚拟机监视器用于经由由所述代理和所述不可信主机虚拟机监视器共享的共享存储器区域来向所述代理传送用于修改所述第一访客虚拟机的所述访客控制结构的请求;响应于读取到来自所述共享存储器区域的所述请求,所述代理用于修改所述第一密钥域内的所述第一访客虚拟机的所述访客控制结构以便产生所述第一访客虚拟机的经修改访客控制结构;所述不可信主机虚拟机监视器用于验证所述第一访客虚拟机的所述经修改访客控制结构;在验证所述经修改访客控制结构之后,所述不可信主机虚拟机监视器用于向所述处理器发出用于进入所述第一密钥域内的所述第一访客虚拟机的进入命令;并且响应于接收到所述进入命令,所述处理器用于使用来自所述经修改访客控制结构的第二访客处理器状态信息来执行所述第一密钥域内的所述访客代码镜像。
示例18包括示例16的装置,其中,所述不可信虚拟机监视器用于向所述代理传送用于从经加密存储检索页的请求,其中,所述经加密存储的每一个页由存储密钥加密;所述代理用于使用所述存储密钥进行解密以产生经解密的页;所述代理用于验证所述经解密的页;并且如果验证了所述经解密的页,则所述代理用于将所述经解密的页安装到所述存储器中。
示例19包括示例18的装置,其中,如果所述代理具有对所述存储器中的所述经解密的页将被安装到其中的位置的访问权,则所述代理用于将所述经解密的页复制到所述存储器的所述位置中;并且如果所述代理不具有对所述存储器中的所述经解密的页将被安装到其中的位置的访问权,则所述代理进一步用于将所述密钥域密钥和所述位置的物理地址用作微调来对所述页面重新加密以产生经重新加密的页;并且所述不可信主机虚拟机监视器用于将所述经重新加密的页安装到所述存储器中。
示例20包括示例16的装置,其中,所述不可信主机虚拟机监视器用于向所述代理传送用于将页从经加密存储器移动到存储的请求,其中,所述经加密存储器的每一个页由所述密钥域密钥加密;所述代理用于使用所述密钥域密钥来对所述页解密以产生经解密的页;所述代理用于验证所述经解密的页;并且如果验证了所述经解密的页,所述代理用于利用用于所述存储的存储密钥来对所述经解密的页重新加密以产生存储经加密的页,将所述存储经加密的页移动到所述存储,并且将所述存储经加密的页提供给所述不可信主机虚拟机监视器。
示例21包括示例1的装置,其中,所述不可信虚拟机监视器用于向所述处理器发出用于将所述经加密访客控制结构加载到所述存储器中的加载命令,所述加载命令包括指向所述存储器中的从中加载所述经加密访客控制结构的物理地址的指针以及所述第一密钥域的密钥域标识符;并且响应于接收到所述加载命令,所述处理器用于确定对应于所述密钥域标识符的密钥域密钥,其中,所述处理器用于使用所述密钥域密钥来对所述经加密访客控制结构进行解密。
示例22包括示例1的装置,其中,所述处理器进一步用于确认所述经加密访客控制结构的完整性。
示例23包括一种用于在公共云环境中安全地执行消费者工作负载而不暴露消费者的数据或秘密的处理器,所述处理器用于:执行不可信主机虚拟机监视器以便管理由所述处理器对至少一个访客虚拟机的执行;响应于由所述不可信主机虚拟机监视器发出的创建命令而创建第一密钥域,所述第一密钥域包括存储器的待由密钥域密钥加密的区域,所述密钥域密钥是所述不可信主机虚拟机监视器不能够访问的;对从所述不可信主机虚拟机监视器接收的经加密密钥域密钥进行解密以便产生所述密钥域密钥;响应于由所述不可信主机虚拟机监视器发出的启动命令而启动所述第一密钥域内的第一访客虚拟机,其中,启动所述第一访客虚拟机包括:切换到所述第一密钥域,对从所述不可信主机虚拟机监视器接收的经加密访客控制结构进行解密以便产生包含处理器状态信息的访客控制结构,对从所述不可信主机虚拟机监视器接收的经加密访客代码镜像进行解密以便产生访客代码镜像,并且使用所述处理器处理器状态信息来执行所述第一密钥域内的所述访客代码镜像。
示例24包括示例23的处理器,其中,所述处理器进一步用于:响应于触发所述第一访客虚拟机的退出条件的事件而从所述第一密钥域切换到第二密钥域。
示例25包括示例24的处理器,其中,所述第二密钥域是未加密的;并且所述第二密钥域是所述存储器的由所述不可信主机虚拟机监视器和受所述不可信主机虚拟机监视器管理的每一个访客虚拟机共享的共享区域。
示例26包括示例24的处理器,其中,所述第二密钥域由用于所述不可信主机虚拟机监视器的第二密钥域密钥加密;所述第二密钥域密钥能够由所述不可信主机虚拟机监视器访问,并能够由受所述不可信主机虚拟机监视器管理的每一个访客虚拟机访问;并且所述第二密钥域是所述存储器的由所述不可信主机虚拟机监视器和受所述不可信主机虚拟机监视器管理的每一个访客虚拟机共享的共享区域。
示例27包括示例23的处理器,其中,所述访客控制结构指定所述存储器的受保护位置,在所述受保护位置处所述存储器能够存储所述访客处理器状态信息。
示例28包括示例27的处理器,其中,所述处理器进一步用于:响应于触发所述第一访客虚拟机的退出条件的事件而将所述第一访客虚拟机的所述访客处理器状态信息保存在所述存储器的所述受保护位置中;以及响应于接收到来自所述不可信主机虚拟机监视器的恢复命令,所述处理器进一步用于:切换到所述第一密钥域,从所述存储器的所述受保护位置处检索所述第一访客虚拟机的所述访客处理器状态信息,并且使用所述处理器处理器状态信息来执行所述第一密钥域内的所述访客代码镜像。
示例29包括示例23的处理器,其中,所述处理器进一步用于:将所述第一虚拟机的退出条件转换为异常。
示例30包括示例23的处理器,其中,所述处理器进一步用于:对经加密的更新后访客控制结构进行解密以便产生更新后访客控制结构;并且响应于接收到用于进入所述第一访客虚拟机的进入命令而使用所述更新后访客控制结构进入所述第一访客虚拟机。
示例31包括示例23的处理器,其中,所述处理器进一步用于:对经加密的更新后访客代码镜像更新进行解密以便产生更新后访客代码镜像;并且通过使用所述更新后访客控制结构执行所述更新后访客代码镜像来进入所述第一访客虚拟机。
示例32包括示例23的处理器,其中,所述处理器进一步用于:响应于接收到用于启动所述第一密钥域内的第二访客虚拟机的第二启动命令,所述第二访客虚拟机用于提供代理以便代表所述第一密钥域内的所述不可信主机虚拟机监视器来起作用,所述处理器用于:切换到所述第一密钥域,对所述经加密访客代码镜像进行解密以便产生代理代码镜像,对所述经加密访客控制结构进行解密以便产生包含代理处理器状态信息的代理控制结构,并且使用所述代理处理器状态信息来执行所述第一密钥域内的所述代理代码镜像。
示例33包括示例23的处理器,其中,所述处理器进一步用于:响应于接收到用于使用经修改的访客控制结构来进入所述第一访客虚拟机的进入命令,使用来自所述经修改的访客控制结构的第二访客处理器状态信息来执行所述第一密钥域内的所述访客代码镜像。
示例34包括示例23的处理器,其中,所述处理器进一步用于:针对所述第一密钥域的密钥域标识符确定相应密钥域密钥,其中,所述处理器用于响应于接收到用于将所述经加密访客控制结构加载到所述存储器中的加载命令而使用所述相应密钥域密钥来对所述经加密访客控制结构进行解密,所述加载命令包括指向所述存储器中的从中加载所述经加密访客控制结构的物理地址的指针以及所述第一密钥域的所述密钥域标识符。
注意,上述处理器可被实现各种需求。
示例35包括示例23-34的处理器,进一步包括并入在用户装备允许触摸的设备中的片上***(SoC)。
示例36是一种***,所述***包括显示器、存储器以及如上述示例23-34中的一者或多者的处理器。
示例37包括至少一种计算机可读介质,包括指令,所述指令在由处理器执行时使计算机在公共云环境中安全地执行消费者工作负载而不暴露消费者的数据或秘密,包括使所述计算机接收经加密密钥域密钥、由密钥域密钥加密的经加密访客代码镜像、以及由所述密钥域密钥加密的经加密访客控制结构;向所述处理器发出用于创建第一密钥域的创建命令,所述第一密钥域包括存储器的待由所述密钥域密钥加密的区域;验证所述经加密访客控制结构;以及向所述处理器发出用于启动所述第一密钥域内的第一访客虚拟机的启动命令。
示例38包括示例37的计算机可读介质,其中,所述指令进一步使所述计算机:通过向所述处理器发出用于执行散列密钥域指令和VMRead指令中的至少一者的命令来验证所述经加密访客控制结构。
示例39包括示例37的计算机可读介质,其中,所述指令进一步使所述计算机:向所述处理器发出用于恢复所述第一访客虚拟机的恢复命令。
示例40包括示例37的计算机可读介质,其中,所述指令进一步使所述计算机:拦截中断;响应于所述中断以及当所述第一访客虚拟机引起退出条件时所引发的异常中的至少一个而将处理器寄存器信息保存到所述存储器的受保护位置;如果管理对所述第一访客虚拟机的执行的不可信主机虚拟机监视器不需要第一处理器寄存器,则清除所述第一处理器寄存器;如果所述不可信主机虚拟机监视器需要第二处理器寄存器,则有条件地暴露所述第二处理器寄存器;调用所述不可信主机虚拟机监视器;以及当所述不可信主机虚拟机监视器被调用时,退出所述第一访客虚拟机。
示例41包括示例37的计算机可读介质,其中,所述指令进一步使所述计算机:接收经加密的更新后访客控制结构,将所述经加密的更新后访客控制结构安装在所述存储器中,并且验证所述经加密的更新后访客控制结构;以及响应于验证所述经加密的更新后访客控制结构而向所述处理器发出用于使用更新后访客控制结构来进入所述第一访客虚拟机的进入命令,所述更新后访客控制结构由对所述经加密的更新后访客控制结构进行解密的所述处理器产生。
示例42包括示例41的计算机可读介质,其中,所述指令进一步使所述计算机:接收经加密的更新后访客代码镜像;以及将所述经加密的更新后访客代码镜像安装在所述存储器中。
示例43包括示例37的计算机可读介质,其中,所述指令进一步使所述计算机:判定是否需要对所述访客控制结构进行改变;由所述第一虚拟机验证对所述访客控制结构进行的所述改变不损害所述第一访客虚拟机的安全性;由所述第一虚拟机使用所述密钥域密钥来产生结合所述改变的经加密的更新后访客控制结构;以及由所述第一虚拟机经由所述存储器的由不可信主机虚拟机监视器和所述第一访客虚拟机共享的共享区域向所述不可信主机虚拟机监视器发送所述经加密的更新后访客控制结构。
示例44包括示例43的计算机可读介质,其中,所述指令进一步使所述计算机:将所述经加密的更新后访客控制结构安装在所述存储器中;验证所述经加密的更新后访客控制结构;以及响应于验证所述经加密的更新后访客控制结构而向所述处理器发出用于使用更新后访客控制结构来进入所述第一访客虚拟机的进入命令,所述更新后访客控制结构由对所述经加密的更新后访客控制结构进行解密的所述处理器产生。
示例45包括示例44的计算机可读介质,其中,所述指令进一步使所述计算机:响应于从所述第一访客虚拟机接收到的请求,判定是否需要对所述访客控制结构进行改变。
示例46包括示例45的计算机可读介质,其中,所述指令进一步使所述计算机:由所述第一访客虚拟机验证对被包括在所述请求中的所述访客代码镜像进行的第二改变不损害所述第一访客虚拟机的安全性;由所述第一访客虚拟机用于使用所述密钥域密钥来产生结合所述第二改变的经加密的更新后访客代码镜像;以及由所述第一访客虚拟机经由所述存储器的所述共享区域向所述不可信主机虚拟机监视器发送所述经加密的更新后访客控制镜像。
示例47包括示例46的计算机可读介质,其中,所述指令进一步使所述计算机:接收所述经加密的更新后访客代码镜像;其中,执行所述访客代码镜像包括执行由对所述经加密的更新后访客代码镜像进行解密的所述处理器产生的更新后访客代码镜像。
示例48包括示例37的计算机可读介质,其中,所述指令进一步使所述计算机:验证被包括在所述经加密访客控制结构内的代理控制结构;以及向所述处理器发出用于使用所述代理控制结构来启动所述第一密钥域内的第二访客虚拟机的第二启动命令,所述第二访客虚拟机用于提供代理以便代表所述第一密钥域内的所述不可信主机虚拟机监视器来起作用。
示例49包括示例48的计算机可读介质,其中,所述指令进一步使所述计算机:经由存储器的与所述代理共享的共享区域来向所述代理传送用于修改所述第一访客虚拟机的所述访客控制结构的请求;响应于读取到来自存储器的所述共享区域的所述请求而由所述代理来修改所述第一密钥域内的所述第一访客虚拟机的所述访客控制结构以便产生所述第一访客虚拟机的经修改访客控制结构;验证所述第一访客虚拟机的所述经修改访客控制结构;以及在验证所述经修改访客控制结构之后,向所述处理器发出用于使用所述经修改访客控制结构进入所述第一密钥域内的所述第一访客虚拟机的进入命令。
示例50包括示例48的计算机可读介质,其中,所述指令进一步使所述计算机:向所述代理传送用于从经加密存储检索页的请求,其中,所述经加密存储的每一个页由存储密钥加密;由所述代理使用所述存储密钥进行解密以产生经解密的页;由所述代理验证所述经解密的页;以及如果验证了所述经解密的页,则将所述经解密的页安装到所述存储器中。
示例51包括示例50的计算机可读介质,其中,所述指令进一步使所述计算机:如果所述代理具有对所述存储器中的所述经解密的页将被安装到其中的位置的访问权,则由所述代理将所述经解密的页复制到所述存储器的所述位置中;并且如果所述代理不具有对所述存储器中的所述经解密的页将被安装到其中的位置的访问权,则由所述代理将所述密钥域密钥和所述位置的物理地址用作微调来对所述页面重新加密以产生经重新加密的页;以及由所述不可信主机虚拟机监视器将所述经重新加密的页安装到所述存储器中。
示例52包括示例48的计算机可读介质,其中,所述指令进一步使所述计算机:向所述代理传送用于将页从经加密存储器移动到存储的请求,其中,所述经加密存储器的每一个页由所述密钥域密钥加密;由所述代理使用所述密钥域密钥来对所述页解密以产生经解密的页;由所述代理验证所述经解密的页;并且如果验证了所述经解密的页,由所述代理利用用于所述存储的存储密钥来对所述经解密的页重新加密以产生存储经加密的页,由所述代理将所述存储经加密的页移动到所述存储,并且由所述代理将所述存储经加密的页提供给所述不可信主机虚拟机监视器。
示例53是一种用于在公共云环境中安全地执行消费者工作负载而不暴露消费者的数据或秘密的方法,所述方法包括:接收经加密密钥域密钥、由密钥域密钥加密的经加密访客代码镜像、以及由所述密钥域密钥加密的经加密访客控制结构;向处理器发出用于创建第一密钥域的创建命令,所述第一密钥域包括存储器的待由所述密钥域密钥加密的区域;验证所述经加密访客控制结构;以及向所述处理器发出用于启动所述第一密钥域内的第一访客虚拟机的启动命令,其中,所述启动命令包括指向所述经加密访客控制结构的地址的指针。
示例54包括示例53的方法,其中,验证所述经加密访客控制结构包括:通过向所述处理器发出用于执行散列密钥域指令和VMRead指令中的至少一者的命令来验证所述经加密访客控制结构。
示例55包括示例53的方法,进一步包括:向所述处理器发出用于恢复所述第一访客虚拟机的恢复命令。
示例56包括示例53的方法,进一步包括:拦截中断;响应于所述中断以及当所述第一访客虚拟机引起退出条件时所引发的异常中的至少一个而将处理器寄存器信息保存到所述存储器的受保护位置;如果管理对所述第一访客虚拟机的执行的不可信主机虚拟机监视器不需要第一处理器寄存器,则清除所述第一处理器寄存器;如果所述不可信主机虚拟机监视器需要第二处理器寄存器,则有条件地暴露所述第二处理器寄存器;调用所述不可信主机虚拟机监视器;以及当所述不可信主机虚拟机监视器被调用时,退出所述第一访客虚拟机。
示例57包括示例53的方法,进一步包括:接收经加密的更新后访客控制结构,将所述经加密的更新后访客控制结构安装在所述存储器中,并且验证所述经加密的更新后访客控制结构;以及响应于验证所述经加密的更新后访客控制结构而向所述处理器发出用于使用更新后访客控制结构来进入所述第一访客虚拟机的进入命令,所述更新后访客控制结构由对所述经加密的更新后访客控制结构进行解密的所述处理器产生。
示例58包括示例57的方法,进一步包括:接收经加密的更新后访客代码镜像;以及将所述经加密的更新后访客控制结构安装在所述存储器中。
示例59包括示例53的方法,进一步包括:判定是否需要对所述访客控制结构进行改变;由所述第一虚拟机验证对所述访客控制结构进行的所述改变不损害所述第一访客虚拟机的安全性;由所述第一虚拟机使用所述密钥域密钥来产生结合所述改变的经加密的更新后访客控制结构;以及由所述第一虚拟机经由所述存储器的由不可信主机虚拟机监视器和所述第一访客虚拟机共享的共享区域向所述不可信主机虚拟机监视器发送所述经加密的更新后访客控制结构。
示例60包括示例59的方法,进一步包括:将所述经加密的更新后访客控制结构安装在所述存储器中;验证所述经加密的更新后访客控制结构;以及响应于验证所述经加密的更新后访客控制结构而向所述处理器发出用于使用更新后访客控制结构来进入所述第一访客虚拟机的进入命令,所述更新后访客控制结构由对所述经加密的更新后访客控制结构进行解密的所述处理器产生。
示例61包括示例60的方法,进一步包括:响应于从所述第一访客虚拟机接收到的请求,判定是否需要所述改变。
示例62包括示例61的方法,进一步包括:由所述第一虚拟机验证对被包括在所述请求中的所述访客代码镜像进行的第二改变不损害所述第一访客虚拟机的安全性;由所述第一访客虚拟机使用所述密钥域密钥来产生结合所述第二改变的经加密的更新后访客代码镜像;以及由所述第一访客虚拟机经由所述存储器的所述共享区域向所述不可信主机虚拟机监视器发送所述经加密的更新后访客控制镜像。
示例63包括示例62的方法,进一步包括:接收所述经加密的更新后访客代码镜像,其中,执行所述访客代码镜像包括执行由对所述经加密的更新后访客代码进行的所述处理器产生的更新后访客代码镜像。
示例64包括示例53的方法,进一步包括:验证被包括在所述经加密访客控制结构内的代理控制结构;以及向所述处理器发出用于使用所述代理控制结构来启动所述第一密钥域内的第二访客虚拟机的第二启动命令,所述第二访客虚拟机用于提供代理以便代表所述第一密钥域内的所述不可信主机虚拟机监视器来起作用。
示例65包括示例53的方法,进一步包括:经由存储器的与所述代理共享的共享区域来向所述代理传送用于修改所述第一访客虚拟机的所述访客控制结构的请求;响应于读取到来自存储器的所述共享区域的所述请求而由所述代理来修改所述第一密钥域内的所述第一访客虚拟机的所述访客控制结构以便产生所述第一访客虚拟机的经修改访客控制结构;验证所述第一访客虚拟机的所述经修改访客控制结构;以及在验证所述经修改访客控制结构之后,向所述处理器发出用于使用所述经修改访客控制结构进入所述第一密钥域内的所述第一访客虚拟机的进入命令。
示例66包括示例64的方法,进一步包括:向所述代理传送用于从经加密存储检索页的请求,其中,所述经加密存储的每一个页由存储密钥加密;由所述代理使用所述存储密钥进行解密以产生经解密的页;由所述代理验证所述经解密的页;以及如果验证了所述经解密的页,则将所述经解密的页安装到所述存储器中。
示例67包括示例66的方法,进一步包括:如果所述代理具有对所述存储器中的所述经解密的页将被安装到其中的位置的访问权,则由所述代理将所述经解密的页复制到所述存储器的所述位置中;并且如果所述代理不具有对所述存储器中的所述经解密的页将被安装到其中的位置的访问权,则由所述代理将所述密钥域密钥和所述位置的物理地址用作微调来对所述页面重新加密以产生经重新加密的页;以及由所述不可信主机虚拟机监视器将所述经重新加密的页安装到所述存储器中。
示例68包括示例64的方法,进一步包括:向所述代理传送用于将页从经加密存储器移动到存储的请求,其中,所述经加密存储器的每一个页由所述密钥域密钥加密;由所述代理使用所述密钥域密钥来对所述页解密以产生经解密的页;由所述代理验证所述经解密的页;并且如果验证了所述经解密的页,由所述代理利用用于所述存储的存储密钥来对所述经解密的页重新加密以产生存储经加密的页,由所述代理将所述存储经加密的页移动到所述存储,并且由所述代理将所述存储经加密的页提供给所述不可信主机虚拟机监视器。
在示例69中,一种机器可读介质包括指令,所述指令用于执行上述示例中的任一示例的方法。
在示例70中,一种计算机可读介质包括数据,所述数据将由至少一个机器使用以制造至少一个集成电路来执行上述示例中的任一示例的方法。
在示例72中,一种设备包括用于执行上述示例中的任一示例的方法的装置。
在示例73中,一种用于在公共云环境中安全地执行消费者工作负载而不暴露消费者的数据或秘密的设备包括:用于接收经加密密钥域密钥、由密钥域密钥加密的经加密访客代码镜像、以及由所述密钥域密钥加密的经加密访客控制结构的装置;用于向处理器发出用于创建第一密钥域的创建命令的装置,所述第一密钥域包括存储器的待由所述密钥域密钥加密的区域;用于验证所述经加密访客控制结构的装置;以及用于向所述处理器发出用于启动所述第一密钥域内的第一访客虚拟机的启动命令的装置,其中,所述启动命令包括指向所述经加密访客控制结构的地址的指针。
示例74包括示例73的设备,其中,用于验证所述经加密访客控制结构的装置包括:用于通过向所述处理器发出用于执行散列密钥域指令和VMRead指令中的至少一者的命令来验证所述经加密访客控制结构的装置。
示例75包括示例73的设备,进一步包括:用于向所述处理器发出用于恢复所述第一访客虚拟机的恢复命令的装置。
示例76包括示例73的设备,进一步包括:用于拦截中断的装置;用于响应于所述中断以及当所述第一访客虚拟机引起退出条件时所引发的异常中的至少一个而将处理器寄存器信息保存到所述存储器的受保护位置的装置;如果不可信主机虚拟机监视器不需要第一处理器寄存器则清除所述第一处理器寄存器的装置;用于如果所述不可信主机虚拟机监视器需要第二处理器寄存器则有条件地暴露所述第二处理器寄存器的装置;用于调用所述不可信主机虚拟机监视器的装置;以及用于当所述不可信主机虚拟机监视器被调用时退出所述第一访客虚拟机的装置。
示例77包括示例73的设备,进一步包括:用于接收经加密的更新后访客控制结构将所述经加密的更新后访客控制结构安装在所述存储器中并且验证所述经加密的更新后访客控制结构的装置;以及用于响应于验证所述经加密的更新后访客控制结构而向所述处理器发出用于使用更新后访客控制结构来进入所述第一访客虚拟机的进入命令的装置,所述更新后访客控制结构由对所述经加密的更新后访客控制结构进行解密的所述处理器产生。
示例78包括示例77的设备,进一步包括:用于接收经加密的更新后访客代码镜像的装置;以及用于将所述经加密的更新后访客控制结构安装在所述存储器中的装置。
示例79包括示例73的设备,进一步包括:用于判定是否需要对所述访客控制结构进行改变的装置;用于由所述第一虚拟机验证对所述访客控制结构进行的所述改变不损害所述第一访客虚拟机的安全性的装置;用于由所述第一虚拟机使用所述密钥域密钥来产生结合所述改变的经加密的更新后访客控制结构的装置;以及用于由所述第一虚拟机经由所述存储器的由不可信主机虚拟机监视器和所述第一访客虚拟机共享的共享区域向所述不可信主机虚拟机监视器发送所述经加密的更新后访客控制结构的装置。
示例80包括示例79的设备,进一步包括:用于将所述经加密的更新后访客控制结构安装在所述存储器中的装置;用于验证所述经加密的更新后访客控制结构的装置;以及用于响应于验证所述经加密的更新后访客控制结构而向所述处理器发出用于使用更新后访客控制结构来进入所述第一访客虚拟机的进入命令的装置,所述更新后访客控制结构由对所述经加密的更新后访客控制结构进行解密的所述处理器产生。
示例81包括示例80的设备,进一步包括:用于响应于从所述第一访客虚拟机接收到的请求来判定是否需要所述改变的装置。
示例82包括示例81的设备,进一步包括:用于由所述第一虚拟机验证对被包括在所述请求中的所述访客代码镜像进行的第二改变不损害所述第一访客虚拟机的安全性的装置;用于由所述第一访客虚拟机使用所述密钥域密钥来产生结合所述第二改变的经加密的更新后访客代码镜像的装置;以及用于由所述第一访客虚拟机经由所述存储器的所述共享区域向所述不可信主机虚拟机监视器发送所述经加密的更新后访客控制镜像的装置。
示例83包括示例82的设备,进一步包括:用于接收所述经加密的更新后访客代码镜像的装置,其中,执行所述访客代码镜像包括执行由对所述经加密的更新后访客代码进行的所述处理器产生的更新后访客代码镜像。
示例84包括示例73的设备,进一步包括:用于验证被包括在所述经加密访客控制结构内的代理控制结构的装置;以及用于向所述处理器发出用于使用所述代理控制结构来启动所述第一密钥域内的第二访客虚拟机的第二启动命令的装置,所述第二访客虚拟机用于提供代理以便代表所述第一密钥域内的所述不可信主机虚拟机监视器来起作用。
示例85包括示例84的设备,进一步包括:用于经由存储器的与所述代理共享的共享区域来向所述代理传送用于修改所述第一访客虚拟机的所述访客控制结构的请求的装置;用于响应于读取到来自存储器的所述共享区域的所述请求而由所述代理来修改所述第一密钥域内的所述第一访客虚拟机的所述访客控制结构以便产生所述第一访客虚拟机的经修改访客控制结构的装置;用于验证所述第一访客虚拟机的所述经修改访客控制结构的装置;以及用于在验证所述经修改访客控制结构之后向所述处理器发出用于进入所述第一密钥域内的所述第一访客虚拟机的进入命令的装置。
示例86包括示例84的设备,进一步包括:用于向所述代理传送用于从经加密存储检索页的请求的装置,其中,所述经加密存储的每一个页由存储密钥加密;用于由所述代理使用所述存储密钥进行解密以产生经解密的页的装置;用于由所述代理验证所述经解密的页的装置;以及用于如果验证了所述经解密的页则将所述经解密的页安装到所述存储器中的装置。
示例87包括示例86的设备,进一步包括:用于如果所述代理具有对所述存储器中的所述经解密的页将被安装到其中的位置的访问权则由所述代理将所述经解密的页复制到所述存储器的所述位置中的装置;以及用于如果所述代理不具有对所述存储器中的所述经解密的页将被安装到其中的位置的访问权则由所述代理将所述密钥域密钥和所述位置的物理地址用作微调来对所述页面重新加密以产生经重新加密的页的装置;以及用于则由所述不可信主机虚拟机监视器将所述经重新加密的页安装到所述存储器中的装置。
示例88包括示例84的设备,进一步包括:用于向所述代理传送用于将页从经加密存储器移动到存储的请求的装置,其中,所述经加密存储器的每一个页由所述密钥域密钥加密;用于由所述代理使用所述密钥域密钥来对所述页解密以产生经解密的页的装置;用于由所述代理验证所述经解密的页的装置;以及用于如果验证了所述经解密的页则由所述代理利用用于所述存储的存储密钥来对所述经解密的页重新加密以产生存储经加密的页的装置;用于由所述代理将所述存储经加密的页移动到所述存储的装置;以及用于由所述代理将所述存储经加密的页提供给所述不可信主机虚拟机监视器的装置。
应理解的是,以上示例的各种组合都是可能的。
注意,术语“电路(circuit)”和“电路***(circuitry)”这里可互换地使用。如本文中所使用的,这些术语以及术语“逻辑(logic)”用于单独或以任何组合形式指代模拟电路***、数字电路***、硬接线电路***、可编程电路***、处理器电路***、微控制器电路***、硬件逻辑电路***、状态机电路***和/或任何其他类型的物理硬件组件。实施例可以用于多种不同类型的***中。例如,在一个实施例中,通信装置可以被安排成用于执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信装置,并且相反,其他实施例可以涉及用于处理指令的其他类型的装置,或者包括指令的一种或多种机器可读介质,所述指令响应于在计算装置上被执行而使所述装置执行本文中所描述的方法和技术中的一者或多者。
实施例可以在代码中实现并且可存储在非暂态存储介质上,所述非暂态存储介质具有存储在其上的指令,所述指令可用于对***编程来执行指令。实施例还可以在数据中实现并且可存储在非暂态存储介质上,所述非暂态存储介质如果由至少一台机器执行则使所述至少一台机器制造用于执行一个或多个操作的至少一个集成电路。仍进一步实施例可以在包括信息的计算机可读存储介质中实现,所述计算机可读存储介质当被制造在SoC或其他处理器中时将配置SoC或其他处理器执行一个或多个操作。存储介质可以包括但不限于包括以下各项的任何类型的磁盘:软盘、光盘、固态驱动器(SSD)、致密盘只读存储器(CD-ROM)、可复写致密盘(CD-RW)、和磁光盘;如只读存储器(ROM)等半导体器件、如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)等随机存取存储器(RAM);可擦可编程只读存储器(EPROM);闪存;电可擦可编程只读存储器(EEPROM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。
虽然已经关于有限数量的实施例对本发明进行了描述,但是本领域的技术人员将理解来自其中的许多修改和变体。旨在使得所附权利要求书覆盖如落在本发明的真实精神和范围内的所有这种修改和变体。
Claims (24)
1.一种用于在公共云环境中安全地执行消费者工作负载的装置,所述装置包括:
处理器;以及
存储器,耦合至所述处理器;其中,
所述处理器用于执行不可信主机虚拟机监视器以便管理由所述处理器对至少一个访客虚拟机的执行;
所述不可信主机虚拟机监视器用于接收经加密密钥域密钥、由密钥域密钥加密的经加密访客代码镜像、以及由所述密钥域密钥加密的经加密访客控制结构,所述密钥域密钥是所述不可信主机虚拟机监视器不能够访问的;
所述不可信主机虚拟机监视器用于向所述处理器发出用于创建第一密钥域的创建命令,所述第一密钥域包括所述存储器的待由所述密钥域密钥加密的区域,所述不可信主机虚拟机监视器用于进一步验证所述经加密访客控制结构;
响应于接收到所述创建命令,所述处理器用于创建所述第一密钥域并且对所述经加密密钥域密钥进行解密以便产生所述密钥域密钥;
所述不可信主机虚拟机监视器用于向所述处理器发出用于启动所述第一密钥域内的第一访客虚拟机的启动命令;并且
响应于接收到所述启动命令,所述处理器用于:切换到所述第一密钥域,对所述经加密访客控制结构进行解密以便产生包含访客处理器状态信息的访客控制结构,对所述经加密访客代码镜像进行解密以便产生访客代码镜像,并且使用所述访客处理器状态信息来执行所述第一密钥域内的所述访客代码镜像。
2.如权利要求1所述的装置,其中,
响应于触发所述第一访客虚拟机的退出条件的事件,所述处理器用于从所述第一密钥域切换到第二密钥域。
3.如权利要求1所述的装置,其中,
响应于触发所述第一访客虚拟机的退出条件的事件,所述处理器用于将所述第一访客虚拟机的所述访客处理器状态信息保存在所述存储器的受保护位置中;
所述不可信主机虚拟机监视器用于向所述处理器发出用于恢复所述第一访客虚拟机的恢复命令;并且
响应于接收到所述恢复命令,所述处理器用于:切换到所述第一密钥域,从所述存储器的所述受保护位置处检索所述第一访客虚拟机的所述访客处理器状态信息,并且使用所述访客处理器状态信息来执行所述第一密钥域内的所述访客代码镜像。
4.如权利要求1所述的装置,其中,
所述访客代码镜像包括用于拦截中断的中断处理程序代码;
所述处理器用于将所述第一访客虚拟机的退出条件转换为异常;
所述访客代码镜像用于响应于所述中断和所述异常中的至少一个而将处理器寄存器信息保存到所述存储器的受保护位置;
所述访客代码镜像用于在所述不可信主机虚拟机监视器不需要第一处理器寄存器时清除所述第一处理器寄存器;
所述访客代码镜像用于在所述不可信主机虚拟机监视器需要第二处理器寄存器时有条件地暴露所述第二处理器寄存器;
所述访客代码镜像用于调用所述不可信主机虚拟机监视器;并且
所述第一访客虚拟机用于在所述不可信主机虚拟机监视器被调用时退出。
5.如权利要求1所述的装置,其中,
所述不可信主机虚拟机监视器用于:接收经加密的更新后访客控制结构,将所述经加密的更新后访客控制结构安装在所述存储器中,并且验证所述经加密的更新后访客控制结构;
所述处理器用于对所述经加密的更新后访客控制结构进行解密以便产生更新后访客控制结构;
响应于验证所述经加密的更新后访客控制结构,所述不可信主机虚拟机监视器用于向所述处理器发出用于使用所述更新后访客控制结构进入所述第一访客虚拟机的进入命令;并且
响应于接收到所述进入命令,所述处理器用于使用所述更新后访客控制结构进入所述第一访客虚拟机。
6.如权利要求5所述的装置,其中,
所述不可信主机虚拟机监视器进一步用于接收经加密的更新后访客代码镜像并且将所述经加密的更新后访客代码镜像安装在所述存储器中;
所述处理器用于对所述经加密的更新后访客代码镜像更新进行解密以便产生更新后访客代码镜像;并且
所述处理器用于通过使用所述更新后访客控制结构执行所述更新后访客代码镜像来进入所述第一访客虚拟机。
7.如权利要求1所述的装置,其中,
所述不可信主机虚拟机监视器用于判定是否需要对所述访客控制结构进行改变;
所述第一访客虚拟机用于验证对所述访客控制结构进行的所述改变不损害所述第一访客虚拟机的安全性;
所述第一访客虚拟机用于使用所述密钥域密钥来产生结合所述改变的经加密的更新后访客控制结构;并且
所述第一访客虚拟机用于经由所述存储器的由所述不可信主机虚拟机监视器和所述第一访客虚拟机共享的共享区域向所述不可信主机虚拟机监视器发送所述经加密的更新后访客控制结构。
8.如权利要求7所述的装置,其中,
所述不可信主机虚拟机监视器用于将所述经加密的更新后访客控制结构安装在所述存储器中;
所述不可信主机虚拟机监视器用于验证所述经加密的更新后访客控制结构;
所述处理器用于对所述经加密的更新后访客控制结构进行解密以便产生更新后访客控制结构;
响应于验证所述经加密的更新后访客控制结构,所述不可信主机虚拟机监视器用于向所述处理器发出用于使用所述更新后访客控制结构进入所述第一访客虚拟机的进入命令;并且
响应于接收到所述进入命令,所述处理器用于使用所述更新后访客控制结构进入所述第一访客虚拟机。
9.如权利要求1所述的装置,其中,
所述经加密访客代码镜像包括代理代码镜像;
所述经加密访客控制结构包括代理控制结构;
所述不可信主机虚拟机监视器用于验证所述代理控制结构;
所述不可信主机虚拟机监视器用于向所述处理器发出用于启动所述第一密钥域内的第二访客虚拟机的第二启动命令,所述第二访客虚拟机用于提供代理以便代表所述第一密钥域内的所述不可信主机虚拟机监视器来起作用;并且
响应于接收到所述第二启动命令,所述处理器用于:切换到所述第一密钥域,对所述经加密访客代码镜像进行解密以便产生所述代理代码镜像,对所述经加密访客控制结构进行解密以便产生包含代理处理器状态信息的所述代理控制结构,并且使用所述代理处理器状态信息来执行所述第一密钥域内的所述代理代码镜像。
10.如权利要求9所述的装置,其中,
所述不可信主机虚拟机监视器用于经由由所述代理和所述不可信主机虚拟机监视器共享的共享存储器区域来向所述代理传送用于修改所述第一访客虚拟机的所述访客控制结构的请求;
响应于读取到来自所述共享存储器区域的所述请求,所述代理用于修改所述第一密钥域内的所述第一访客虚拟机的所述访客控制结构以便产生所述第一访客虚拟机的经修改访客控制结构;
所述不可信主机虚拟机监视器用于验证所述第一访客虚拟机的所述经修改访客控制结构;
在验证所述经修改访客控制结构之后,所述不可信主机虚拟机监视器用于向所述处理器发出用于进入所述第一密钥域内的所述第一访客虚拟机的进入命令;并且
响应于接收到所述进入命令,所述处理器用于使用来自所述经修改访客控制结构的第二访客处理器状态信息来执行所述第一密钥域内的所述访客代码镜像。
11.如权利要求1所述的装置,其中,
所述不可信虚拟机监视器用于向所述处理器发出用于将所述经加密访客控制结构加载到所述存储器中的加载命令,所述加载命令包括指向所述存储器中的从中加载所述经加密访客控制结构的物理地址的指针以及所述第一密钥域的密钥域标识符;并且
响应于接收到所述加载命令,所述处理器用于确定所述密钥域标识符的相应密钥域密钥,其中,所述处理器用于使用所述相应密钥域密钥来对所述经加密访客控制结构进行解密。
12.如权利要求1所述的装置,其中,
所述处理器进一步用于确认所述经加密访客控制结构的完整性。
13.一种用于在公共云环境中安全地执行消费者工作负载的方法,所述方法包括:
接收经加密密钥域密钥、由密钥域密钥加密的经加密访客代码镜像、以及由所述密钥域密钥加密的经加密访客控制结构;
向处理器发出用于创建第一密钥域的创建命令,所述第一密钥域包括存储器的待由所述密钥域密钥加密的区域;
验证所述经加密访客控制结构;以及
向所述处理器发出用于启动所述第一密钥域内的第一访客虚拟机的启动命令。
14.如权利要求13所述的方法,进一步包括:
拦截中断;
响应于所述中断以及当所述第一访客虚拟机引起退出条件时所引发的异常中的至少一个而将处理器寄存器信息保存到所述存储器的受保护位置;
如果管理对所述第一访客虚拟机的执行的不可信主机虚拟机监视器不需要第一处理器寄存器,则清除所述第一处理器寄存器;
如果所述不可信主机虚拟机监视器需要第二处理器寄存器,则有条件地暴露所述第二处理器寄存器;
调用所述不可信主机虚拟机监视器;以及
当所述不可信主机虚拟机监视器被调用时,退出所述第一访客虚拟机。
15.如权利要求13所述的方法,进一步包括:
判定是否需要对所述访客控制结构进行改变;
由所述第一访客虚拟机验证对所述访客控制结构进行的所述改变不损害所述第一访客虚拟机的安全性;
由所述第一访客虚拟机使用所述密钥域密钥来产生结合所述改变的经加密的更新后访客控制结构;以及
由所述第一访客虚拟机经由所述存储器的由不可信主机虚拟机监视器和所述第一访客虚拟机共享的共享区域向所述不可信主机虚拟机监视器发送所述经加密的更新后访客控制结构。
16.如权利要求15所述的方法,进一步包括:
将所述经加密的更新后访客控制结构安装在所述存储器中;
验证所述经加密的更新后访客控制结构;以及
响应于验证所述经加密的更新后访客控制结构而向所述处理器发出用于使用更新后访客控制结构来进入所述第一访客虚拟机的进入命令,所述更新后访客控制结构由对所述经加密的更新后访客控制结构进行解密的所述处理器产生。
17.如权利要求14所述的方法,进一步包括:
验证被包括在所述经加密访客控制结构内的代理控制结构;以及
向所述处理器发出用于使用所述代理控制结构来启动所述第一密钥域内的第二访客虚拟机的第二启动命令,所述第二访客虚拟机用于提供代理以便代表所述第一密钥域内的所述不可信主机虚拟机监视器来起作用;
经由存储器的与所述代理共享的共享区域来向所述代理传送用于修改所述第一访客虚拟机的所述访客控制结构的请求;
响应于读取到来自存储器的所述共享区域的所述请求而由所述代理来修改所述第一密钥域内的所述第一访客虚拟机的所述访客控制结构以便产生所述第一访客虚拟机的经修改访客控制结构;
验证所述第一访客虚拟机的所述经修改访客控制结构;以及
在验证所述经修改访客控制结构之后,向所述处理器发出用于使用所述经修改访客控制结构进入所述第一密钥域内的所述第一访客虚拟机的进入命令。
18.如权利要求17所述的方法,进一步包括:向所述代理传送用于从经加密存储检索页的请求,其中,所述经加密存储的每一个页由存储密钥加密;
由所述代理使用所述存储密钥进行解密以产生经解密的页;
由所述代理验证所述经解密的页;以及
如果验证了所述经解密的页,则将所述经解密的页安装到所述存储器中。
19.如权利要求18所述的方法,进一步包括:
如果所述代理具有对所述存储器中的所述经解密的页将被安装到其中的位置的访问权,则由所述代理将所述经解密的页复制到所述存储器的所述位置中;并且
如果所述代理不具有对所述存储器中的所述经解密的页将被安装到其中的位置的访问权,则:
由所述代理将所述密钥域密钥和所述位置的物理地址用作微调来对所述经解密的页重新加密以产生经重新加密的页;以及
由所述不可信主机虚拟机监视器将所述经重新加密的页安装到所述存储器中。
20.如权利要求17所述的方法,进一步包括:
向所述代理传送用于将页从经加密存储器移动到存储的请求,其中,所述经加密存储器的每一个页由所述密钥域密钥加密;
由所述代理使用所述密钥域密钥来对所述页解密以产生经解密的页;
由所述代理验证所述经解密的页;并且
如果验证了所述经解密的页,则:
由所述代理利用用于所述存储的存储密钥来对所述经解密的页重新加密以产生存储经加密的页;
由所述代理将所述存储经加密的页移动到所述存储;并且
由所述代理将所述存储经加密的页提供给所述不可信主机虚拟机监视器。
21.如权利要求13所述的方法,其中
验证所述经加密访客控制结构包括:通过向所述处理器发出用于执行散列密钥域指令和VMRead指令中的至少一者的命令来验证所述经加密访客控制结构。
22.如权利要求13所述的方法,进一步包括:
向所述处理器发出用于恢复所述第一访客虚拟机的恢复命令。
23.至少一种计算机可读介质,包括指令,所述指令当被执行时使机器执行如权利要求13-21中的任一项所述的方法。
24.一种用于在公共云环境中安全地执行消费者工作负载的设备,包括用于执行如权利要求13-21中的任一项所述的方法的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010476273.9A CN111638943B (zh) | 2017-02-28 | 2018-01-26 | 具有受保护的访客机验证主机控制的装置和方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/444,771 US10303899B2 (en) | 2016-08-11 | 2017-02-28 | Secure public cloud with protected guest-verified host control |
US15/444,771 | 2017-02-28 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010476273.9A Division CN111638943B (zh) | 2017-02-28 | 2018-01-26 | 具有受保护的访客机验证主机控制的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108509250A CN108509250A (zh) | 2018-09-07 |
CN108509250B true CN108509250B (zh) | 2023-11-14 |
Family
ID=61131949
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010476273.9A Active CN111638943B (zh) | 2017-02-28 | 2018-01-26 | 具有受保护的访客机验证主机控制的装置和方法 |
CN201810078039.3A Active CN108509250B (zh) | 2017-02-28 | 2018-01-26 | 具有受保护的访客机验证主机控制的安全公共云 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010476273.9A Active CN111638943B (zh) | 2017-02-28 | 2018-01-26 | 具有受保护的访客机验证主机控制的装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (3) | US10303899B2 (zh) |
EP (1) | EP3367287B1 (zh) |
CN (2) | CN111638943B (zh) |
Families Citing this family (126)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9225638B2 (en) | 2013-05-09 | 2015-12-29 | Vmware, Inc. | Method and system for service switching using service tags |
US11296930B2 (en) | 2014-09-30 | 2022-04-05 | Nicira, Inc. | Tunnel-enabled elastic service model |
US9755898B2 (en) | 2014-09-30 | 2017-09-05 | Nicira, Inc. | Elastically managing a service node group |
US9804830B2 (en) | 2014-12-19 | 2017-10-31 | Signalfx, Inc. | Anomaly detection using a data stream processing language for analyzing instrumented software |
US10394692B2 (en) * | 2015-01-29 | 2019-08-27 | Signalfx, Inc. | Real-time processing of data streams received from instrumented software |
US10594743B2 (en) * | 2015-04-03 | 2020-03-17 | Nicira, Inc. | Method, apparatus, and system for implementing a content switch |
US11989332B2 (en) | 2016-08-11 | 2024-05-21 | Intel Corporation | Secure public cloud with protected guest-verified host control |
US10303899B2 (en) * | 2016-08-11 | 2019-05-28 | Intel Corporation | Secure public cloud with protected guest-verified host control |
CN111813459A (zh) * | 2016-11-09 | 2020-10-23 | 华为技术有限公司 | 一种加速器加载方法、***和加速器加载装置 |
CN108073423B (zh) | 2016-11-09 | 2020-01-17 | 华为技术有限公司 | 一种加速器加载方法、***和加速器加载装置 |
US10482034B2 (en) * | 2016-11-29 | 2019-11-19 | Microsoft Technology Licensing, Llc | Remote attestation model for secure memory applications |
US10496425B2 (en) * | 2017-02-21 | 2019-12-03 | Red Hat, Inc. | Systems and methods for providing processor state protections in a virtualized environment |
US10587411B2 (en) | 2017-04-11 | 2020-03-10 | International Business Machines Corporation | Zero-knowledge verifiably attestable transaction containers using secure processors |
US10379764B2 (en) * | 2017-05-11 | 2019-08-13 | Red Hat, Inc. | Virtual machine page movement for encrypted memory |
US10880737B2 (en) * | 2017-06-23 | 2020-12-29 | Motorola Mobility Llc | Method and apparatus for refreshing the security keys of a subset of configured radio bearers |
EP3972309B1 (en) | 2017-06-23 | 2023-08-09 | Motorola Mobility LLC | Method and apparatus for implementing bearer specific changes as part of a connection reconfiguration that impacts the security keys being used |
GB2563886B (en) * | 2017-06-28 | 2019-12-25 | Advanced Risc Mach Ltd | Realm management unit-private memory regions |
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 |
US10534921B2 (en) * | 2017-08-23 | 2020-01-14 | Red Hat, Inc. | Copy and decrypt support for encrypted virtual machines |
US10686605B2 (en) | 2017-09-29 | 2020-06-16 | Intel Corporation | Technologies for implementing mutually distrusting domains |
US10769272B2 (en) | 2017-09-29 | 2020-09-08 | Intel Corporation | Technology to protect virtual machines from malicious virtual machine managers |
US10805181B2 (en) | 2017-10-29 | 2020-10-13 | Nicira, Inc. | Service operation chaining |
US10587412B2 (en) * | 2017-11-07 | 2020-03-10 | International Business Machines Corporation | Virtual machine structure |
US10754960B2 (en) * | 2017-11-17 | 2020-08-25 | Intel Corporation | Support for increased number of concurrent keys within multi-key cryptographic engine |
US11349822B2 (en) * | 2017-11-20 | 2022-05-31 | Fortanix, Inc. | Runtime encryption plugin for a key management system |
KR102545167B1 (ko) * | 2017-11-23 | 2023-06-19 | 삼성전자주식회사 | 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 |
CN109992956A (zh) * | 2017-12-29 | 2019-07-09 | 华为技术有限公司 | 容器的安全策略的处理方法和相关装置 |
US10805192B2 (en) | 2018-03-27 | 2020-10-13 | Nicira, Inc. | Detecting failure of layer 2 service using broadcast messages |
US10838773B2 (en) * | 2018-03-30 | 2020-11-17 | Intel Corporation | Techniques for dynamic resource allocation among cryptographic domains |
US11860996B1 (en) * | 2018-04-06 | 2024-01-02 | Apple Inc. | Security concepts for web frameworks |
US10841291B2 (en) * | 2018-05-31 | 2020-11-17 | Vmware, Inc. | Method for block authentication using embedded virtual machines |
US11303632B1 (en) * | 2018-06-08 | 2022-04-12 | Wells Fargo Bank, N.A. | Two-way authentication system and method |
US11120140B2 (en) * | 2018-06-27 | 2021-09-14 | International Business Machines Corporation | Secure operations on encrypted data |
US11520611B2 (en) * | 2018-08-20 | 2022-12-06 | Intel Corporation | Secure public cloud using extended paging and memory integrity |
US11184173B2 (en) | 2018-08-24 | 2021-11-23 | Powch, LLC | Secure distributed information system |
US10572271B1 (en) | 2018-08-29 | 2020-02-25 | Red Hat, Inc. | Efficient instantiation of encrypted guests |
US11595250B2 (en) | 2018-09-02 | 2023-02-28 | Vmware, Inc. | Service insertion at logical network gateway |
CN113076173A (zh) | 2018-09-17 | 2021-07-06 | 华为技术有限公司 | 云平台的虚拟机管理方法及装置 |
US11954026B1 (en) * | 2018-09-18 | 2024-04-09 | Advanced Micro Devices, Inc. | Paging hierarchies for extended page tables and extended page attributes |
US11030316B2 (en) * | 2018-09-20 | 2021-06-08 | Samsung Electronics Co., Ltd. | System and method for providing security protection for FPGA based solid state drives |
US10789061B2 (en) * | 2018-09-26 | 2020-09-29 | Intel Corporation | Processor based component firmware update method and apparatus |
US10761996B2 (en) * | 2018-09-28 | 2020-09-01 | Intel Corporation | Apparatus and method for secure memory access using trust domains |
US10795829B2 (en) | 2018-09-28 | 2020-10-06 | Intel Corporation | Device, method and system to selectively provide data validation functionality |
US10877897B2 (en) | 2018-11-02 | 2020-12-29 | Intel Corporation | System, apparatus and method for multi-cacheline small object memory tagging |
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 |
US11163701B2 (en) * | 2018-11-15 | 2021-11-02 | Intel Corporation | System, apparatus and method for integrity protecting tenant workloads in a multi-tenant computing environment |
CN109828827B (zh) * | 2018-11-22 | 2023-10-27 | 海光信息技术股份有限公司 | 一种检测方法、装置及相关设备 |
WO2020107025A2 (en) * | 2018-11-24 | 2020-05-28 | Jung Yong Kyu | A security-enabled microprocessor for a security-enabled computing system |
US11237859B2 (en) * | 2018-11-28 | 2022-02-01 | Red Hat Israel, Ltd. | Securing virtual machines in computer systems |
CN109543460B (zh) * | 2018-11-29 | 2021-02-23 | 北京元心科技有限公司 | 基于微内核对数据进行加解密的方法、装置及电子设备 |
CN109634721B (zh) * | 2018-12-17 | 2023-10-10 | 广东浪潮大数据研究有限公司 | 一种虚拟机与主机的启动通信方法及相关装置 |
US11138320B2 (en) * | 2018-12-20 | 2021-10-05 | Intel Corporation | Secure encryption key management in trust domains |
US11829517B2 (en) | 2018-12-20 | 2023-11-28 | Intel Corporation | Method and apparatus for trust domain creation and destruction |
US11099874B2 (en) | 2019-01-28 | 2021-08-24 | Red Hat Israel, Ltd. | Efficient userspace driver isolation by shallow virtual machines |
US11741253B2 (en) * | 2019-01-31 | 2023-08-29 | Hewlett Packard Enterprise Development Lp | Operating system service sanitization of data associated with sensitive information |
CN111552514A (zh) | 2019-02-12 | 2020-08-18 | 阿里巴巴集团控股有限公司 | 一种处理器以及指令执行方法 |
CN109828932B (zh) * | 2019-02-18 | 2020-12-18 | 华夏芯(北京)通用处理器技术有限公司 | 一种地址微调加速*** |
US11354148B2 (en) | 2019-02-22 | 2022-06-07 | Vmware, Inc. | Using service data plane for service control plane messaging |
CN109922056B (zh) | 2019-02-26 | 2021-09-10 | 创新先进技术有限公司 | 数据安全处理方法及其终端、服务器 |
CN109947666B (zh) * | 2019-02-27 | 2023-04-25 | 余炀 | 可信执行环境缓存隔离方法及装置、电子设备和存储介质 |
US11487906B2 (en) | 2019-03-08 | 2022-11-01 | International Business Machines Corporation | Storage sharing between a secure domain and a non-secure entity |
US11640361B2 (en) * | 2019-03-08 | 2023-05-02 | International Business Machines Corporation | Sharing secure memory across multiple security domains |
US11531627B2 (en) * | 2019-03-08 | 2022-12-20 | International Business Machines Corporation | Secure storage isolation |
US10956188B2 (en) | 2019-03-08 | 2021-03-23 | International Business Machines Corporation | Transparent interpretation of guest instructions in secure virtual machine environment |
US11029991B2 (en) * | 2019-03-08 | 2021-06-08 | International Business Machines Corporation | Dispatch of a secure virtual machine |
US11206128B2 (en) * | 2019-03-08 | 2021-12-21 | International Business Machines Corporation | Secure paging with page change detection |
US11347529B2 (en) * | 2019-03-08 | 2022-05-31 | International Business Machines Corporation | Inject interrupts and exceptions into secure virtual machine |
US11308215B2 (en) | 2019-03-08 | 2022-04-19 | International Business Machines Corporation | Secure interface control high-level instruction interception for interruption enablement |
US11354418B2 (en) * | 2019-03-08 | 2022-06-07 | International Business Machines Corporation | Incremental decryption and integrity verification of a secure operating system image |
US11403409B2 (en) | 2019-03-08 | 2022-08-02 | International Business Machines Corporation | Program interruptions for page importing/exporting |
US11347869B2 (en) | 2019-03-08 | 2022-05-31 | International Business Machines Corporation | Secure interface control high-level page management |
CN110069263A (zh) * | 2019-03-14 | 2019-07-30 | 国网山东省电力公司德州供电公司 | 一种基于电力调度管理云平台的解耦合方法 |
CN109921902B (zh) | 2019-03-22 | 2020-10-23 | 创新先进技术有限公司 | 一种密钥管理方法、安全芯片、业务服务器及信息*** |
US10921996B2 (en) * | 2019-03-22 | 2021-02-16 | Micron Technology, Inc. | Data lines updating for data generation |
CN110069921B (zh) * | 2019-04-12 | 2021-01-01 | 中国科学院信息工程研究所 | 一种面向容器平台的可信软件授权验证***及方法 |
EP3871079A4 (en) | 2019-04-15 | 2022-06-22 | Hewlett-Packard Development Company, L.P. | IMAGE TRANSFER |
US11550903B1 (en) * | 2019-04-26 | 2023-01-10 | Joseph Alan Epstein | System and method for trustworthiness, reputation, provenance, and measurement of software |
CN110727611B (zh) * | 2019-09-09 | 2022-01-07 | 无锡江南计算技术研究所 | 一种带状态监测的可配置一致性验证*** |
US20220358220A1 (en) * | 2019-09-27 | 2022-11-10 | Intel Corporation | Using secure enclaves and dynamic measurements |
US11182184B2 (en) | 2019-10-23 | 2021-11-23 | Red Hat, Inc. | Implementing high-performance virtual machines for bare metal simulation |
US11102121B2 (en) * | 2019-10-23 | 2021-08-24 | Cisco Technology, Inc. | Path signatures for data flows |
US11140218B2 (en) | 2019-10-30 | 2021-10-05 | Vmware, Inc. | Distributed service chain across multiple clouds |
US20210141940A1 (en) * | 2019-11-13 | 2021-05-13 | Sensoriant, Inc. | Method and system for enhancing the integrity of computing with shared data and algorithms |
CN112866321B (zh) * | 2019-11-28 | 2024-06-18 | 中兴通讯股份有限公司 | 一种资源调度方法、装置和*** |
US11614956B2 (en) | 2019-12-06 | 2023-03-28 | Red Hat, Inc. | Multicast live migration for encrypted virtual machines |
US11531770B2 (en) * | 2019-12-23 | 2022-12-20 | Intel Corporation | Trusted local memory management in a virtualized GPU |
CN111124616B (zh) * | 2019-12-23 | 2023-08-08 | 海光信息技术股份有限公司 | 一种虚拟机迁移方法、处理器及电子设备 |
US11449601B2 (en) | 2020-01-08 | 2022-09-20 | Red Hat, Inc. | Proof of code compliance and protected integrity using a trusted execution environment |
US11659061B2 (en) | 2020-01-20 | 2023-05-23 | Vmware, Inc. | Method of adjusting service function chains to improve network performance |
CN111314066B (zh) * | 2020-01-23 | 2022-02-11 | 腾讯科技(深圳)有限公司 | 基于区块链的数据转移方法、终端及计算机可读存储介质 |
US11822643B2 (en) * | 2020-02-07 | 2023-11-21 | BicDroid Inc. | Method and system for creating quarantined workspaces through controlled interaction between a host and virtual guests |
CN114902225A (zh) * | 2020-02-13 | 2022-08-12 | 英特尔公司 | 多租户环境中的密码计算 |
CN111343276A (zh) * | 2020-03-03 | 2020-06-26 | 宁夏回族自治区通信产业服务有限公司 | 一种安全生产教育培训***框架 |
US11604671B2 (en) * | 2020-03-19 | 2023-03-14 | Red Hat, Inc. | Secure virtual machine and peripheral device communication |
US11528219B2 (en) | 2020-04-06 | 2022-12-13 | Vmware, Inc. | Using applied-to field to identify connection-tracking records for different interfaces |
US11327783B2 (en) | 2020-04-29 | 2022-05-10 | Red Hat, Inc. | Asynchronous management of unencrypted memory page list of a virtual machine |
CN111666564B (zh) * | 2020-05-14 | 2024-02-02 | 平安科技(深圳)有限公司 | 应用程序安全启动方法、装置、计算机设备和存储介质 |
US11783042B2 (en) * | 2020-06-17 | 2023-10-10 | Qualcomm Incorporated | Access control system and method for isolating mutually distrusting security domains |
US11249839B1 (en) * | 2020-08-14 | 2022-02-15 | Rockwell Automation Technologies, Inc. | Method and apparatus for memory error detection |
CN111949376B (zh) * | 2020-08-24 | 2021-12-17 | 海光信息技术股份有限公司 | 虚拟机***和用于虚拟机***的方法 |
CN112052069B (zh) * | 2020-08-25 | 2024-03-12 | 海光信息技术股份有限公司 | 一种写、读虚拟机标识的方法、装置及相关设备 |
US20210141658A1 (en) * | 2020-11-11 | 2021-05-13 | Ravi Sahita | Method and apparatus for trusted devices using trust domain extensions |
US11847483B2 (en) | 2020-12-03 | 2023-12-19 | International Business Machines Corporation | Secure virtual machine software management |
CN112527457A (zh) * | 2020-12-11 | 2021-03-19 | 成都云铀子网络科技有限公司 | 一种通用Unicorn模拟指令执行的虚拟机实现方法 |
US11734043B2 (en) | 2020-12-15 | 2023-08-22 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
US11611625B2 (en) | 2020-12-15 | 2023-03-21 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
CN112540831B (zh) * | 2020-12-23 | 2022-11-11 | 海光信息技术股份有限公司 | 虚拟可信环境加载、运行方法、数据处理及安全处理装置 |
US11893410B2 (en) | 2021-01-13 | 2024-02-06 | Vmware, Inc. | Secure storage of workload attestation reports in a virtualized and clustered computer system |
US11709700B2 (en) * | 2021-01-13 | 2023-07-25 | Vmware, Inc. | Provisioning identity certificates using hardware-based secure attestation in a virtualized and clustered computer system |
US11474807B1 (en) * | 2021-03-31 | 2022-10-18 | American Megatrends International, Llc | Firmware update method and computer program product for updating firmware |
GB2605774B (en) * | 2021-04-07 | 2023-04-19 | Advanced Risc Mach Ltd | Apparatus and method for handling stashing transactions |
CN113407299B (zh) * | 2021-05-14 | 2023-08-29 | 海光信息技术股份有限公司 | 防止虚拟机恶意回滚的方法、装置及电子设备 |
US20220413883A1 (en) * | 2021-06-25 | 2022-12-29 | Microsoft Technology Licensing, Llc | Secure computing mechanism |
WO2023283872A1 (en) * | 2021-07-15 | 2023-01-19 | Intel Corporation | System management mode runtime resiliency manager |
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 |
US12020059B2 (en) | 2021-08-30 | 2024-06-25 | International Business Machines Corporation | Inaccessible prefix pages during virtual machine execution |
US20230094125A1 (en) * | 2021-09-24 | 2023-03-30 | Nvidia Corporation | Implementing trusted executing environments across multiple processor devices |
CN114579255A (zh) * | 2022-03-07 | 2022-06-03 | 北京金山云网络技术有限公司 | 虚拟机的图像处理方法、装置、***以及电子设备 |
US12010112B2 (en) * | 2022-03-28 | 2024-06-11 | Lenovo Global Technology (United States) Inc. | Remote secured console over a secured connection for inoperable virtual machine |
GB2618126B (en) * | 2022-04-28 | 2024-04-17 | Advanced Risc Mach Ltd | Maintenance operations across subdivided memory domains |
CN116743357B (zh) * | 2022-09-30 | 2024-03-12 | 荣耀终端有限公司 | 密钥存储方法和装置 |
US20240220417A1 (en) * | 2022-12-29 | 2024-07-04 | Advanced Micro Devices, Inc. | Segmented non-contiguous reverse map table |
CN116545781B (zh) * | 2023-07-06 | 2023-11-24 | 广东维信智联科技有限公司 | 一种云访问数据安全管理*** |
CN117389693B (zh) * | 2023-12-12 | 2024-04-05 | 麒麟软件有限公司 | 一种硬件虚拟化***io层安全检测方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101410803A (zh) * | 2006-01-24 | 2009-04-15 | 思杰***有限公司 | 用于提供对计算环境的访问的方法和*** |
CN101587524A (zh) * | 2009-06-23 | 2009-11-25 | 上海北大方正科技电脑***有限公司 | 一种基于虚拟***的数据存储设备加密方法 |
CN102609643A (zh) * | 2012-01-10 | 2012-07-25 | 道里云信息技术(北京)有限公司 | 一种对虚拟机作动态密码学保护与所需的密钥管理方法 |
CN102884535A (zh) * | 2009-12-21 | 2013-01-16 | 英特尔公司 | 受保护装置管理 |
CN103038746A (zh) * | 2010-05-27 | 2013-04-10 | 思科技术公司 | 用于基础设施即服务云环境中的可信执行的方法和装置 |
CN103229450A (zh) * | 2010-08-11 | 2013-07-31 | 安全第一公司 | 用于安全多租户数据存储的***和方法 |
CN103609059A (zh) * | 2010-09-20 | 2014-02-26 | 安全第一公司 | 用于安全数据共享的***和方法 |
CN104067231A (zh) * | 2011-12-07 | 2014-09-24 | 西里克斯***公司 | 使用虚拟交换代理控制网络接口 |
CN104067288A (zh) * | 2012-01-23 | 2014-09-24 | 西里克斯***公司 | 存储加密 |
CN104639516A (zh) * | 2013-11-13 | 2015-05-20 | 华为技术有限公司 | 身份认证方法、设备及*** |
WO2015084144A1 (en) * | 2013-12-04 | 2015-06-11 | Mimos Berhad | A system and method to secure virtual machine images in cloud computing |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8090919B2 (en) * | 2007-12-31 | 2012-01-03 | Intel Corporation | System and method for high performance secure access to a trusted platform module on a hardware virtualization platform |
US8738932B2 (en) | 2009-01-16 | 2014-05-27 | Teleputers, Llc | System and method for processor-based security |
US9804866B2 (en) * | 2009-12-14 | 2017-10-31 | Citrix Systems, Inc. | Methods and systems for securing sensitive information using a hypervisor-trusted client |
US8856504B2 (en) | 2010-06-07 | 2014-10-07 | Cisco Technology, Inc. | Secure virtual machine bootstrap in untrusted cloud infrastructures |
CN103597451B (zh) * | 2011-03-31 | 2017-06-13 | 英特尔公司 | 用于高可用性的存储器镜像和冗余生成 |
US8850593B2 (en) | 2011-05-12 | 2014-09-30 | Hewlett-Packard Development Company, L.P. | Data management using a virtual machine-data image |
CN102307185B (zh) * | 2011-06-27 | 2015-02-25 | 北京大学 | 适用于存储云内的数据隔离方法 |
US8843767B2 (en) | 2011-07-06 | 2014-09-23 | The Boeing Company | Secure memory transaction unit |
JP2013077740A (ja) * | 2011-09-30 | 2013-04-25 | Sony Corp | 固体撮像素子、固体撮像素子の製造方法、及び、電子機器 |
US8938622B2 (en) | 2012-09-21 | 2015-01-20 | Sap Ag | Encryption in the cloud with customer controlled keys |
US8819455B2 (en) | 2012-10-05 | 2014-08-26 | Intel Corporation | Parallelized counter tree walk for low overhead memory replay protection |
US9635013B2 (en) * | 2012-10-12 | 2017-04-25 | Koninklijke Philips N.V. | Secure data handling by a virtual machine |
US9286152B2 (en) | 2013-06-14 | 2016-03-15 | Microsoft Technology Licensing, Llc | Securely obtaining memory content after device malfunction |
US10324863B2 (en) | 2013-06-24 | 2019-06-18 | Intel Corporation | Protected memory view for nested page table access by virtual machine guests |
CN103516728B (zh) * | 2013-10-14 | 2016-08-31 | 武汉大学 | 一种防止云平台虚拟机非法启动的镜像加解密方法 |
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 |
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 |
US9614666B2 (en) | 2014-12-23 | 2017-04-04 | Intel Corporation | Encryption interface |
WO2016106566A1 (zh) * | 2014-12-30 | 2016-07-07 | 华为技术有限公司 | 虚拟化***中加解密的方法、装置和*** |
US9990249B2 (en) | 2015-12-24 | 2018-06-05 | Intel Corporation | Memory integrity with error detection and correction |
US10303899B2 (en) * | 2016-08-11 | 2019-05-28 | Intel Corporation | Secure public cloud with protected guest-verified host control |
-
2017
- 2017-02-28 US US15/444,771 patent/US10303899B2/en active Active
-
2018
- 2018-01-22 EP EP18152856.3A patent/EP3367287B1/en active Active
- 2018-01-26 CN CN202010476273.9A patent/CN111638943B/zh active Active
- 2018-01-26 CN CN201810078039.3A patent/CN108509250B/zh active Active
-
2019
- 2019-03-25 US US16/362,887 patent/US10628612B2/en active Active
-
2020
- 2020-02-18 US US16/792,941 patent/US11163911B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101410803A (zh) * | 2006-01-24 | 2009-04-15 | 思杰***有限公司 | 用于提供对计算环境的访问的方法和*** |
CN101587524A (zh) * | 2009-06-23 | 2009-11-25 | 上海北大方正科技电脑***有限公司 | 一种基于虚拟***的数据存储设备加密方法 |
CN102884535A (zh) * | 2009-12-21 | 2013-01-16 | 英特尔公司 | 受保护装置管理 |
CN103038746A (zh) * | 2010-05-27 | 2013-04-10 | 思科技术公司 | 用于基础设施即服务云环境中的可信执行的方法和装置 |
CN103229450A (zh) * | 2010-08-11 | 2013-07-31 | 安全第一公司 | 用于安全多租户数据存储的***和方法 |
CN103609059A (zh) * | 2010-09-20 | 2014-02-26 | 安全第一公司 | 用于安全数据共享的***和方法 |
CN104067231A (zh) * | 2011-12-07 | 2014-09-24 | 西里克斯***公司 | 使用虚拟交换代理控制网络接口 |
CN102609643A (zh) * | 2012-01-10 | 2012-07-25 | 道里云信息技术(北京)有限公司 | 一种对虚拟机作动态密码学保护与所需的密钥管理方法 |
CN104067288A (zh) * | 2012-01-23 | 2014-09-24 | 西里克斯***公司 | 存储加密 |
CN104639516A (zh) * | 2013-11-13 | 2015-05-20 | 华为技术有限公司 | 身份认证方法、设备及*** |
WO2015084144A1 (en) * | 2013-12-04 | 2015-06-11 | Mimos Berhad | A system and method to secure virtual machine images in cloud computing |
Non-Patent Citations (2)
Title |
---|
"Securing the virtual machine images in cloud computing";Muhammad Kazim等;《SIN 13:Proceedings of the 6th International Conference on Security of Information and Networks》;20131126;425-429 * |
"客户虚拟机磁盘数据安全性的保护方法";刘斐等;《计算机应用与软件》;20150403;1-6 * |
Also Published As
Publication number | Publication date |
---|---|
CN111638943A (zh) | 2020-09-08 |
EP3367287A1 (en) | 2018-08-29 |
EP3367287B1 (en) | 2020-06-03 |
US11163911B2 (en) | 2021-11-02 |
CN111638943B (zh) | 2023-08-15 |
US20190220625A1 (en) | 2019-07-18 |
US20180373895A9 (en) | 2018-12-27 |
US20200257828A1 (en) | 2020-08-13 |
US20180247082A1 (en) | 2018-08-30 |
CN108509250A (zh) | 2018-09-07 |
US10303899B2 (en) | 2019-05-28 |
US10628612B2 (en) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108509250B (zh) | 具有受保护的访客机验证主机控制的安全公共云 | |
US11989332B2 (en) | Secure public cloud with protected guest-verified host control | |
US11783081B2 (en) | Secure public cloud | |
US11520611B2 (en) | Secure public cloud using extended paging and memory integrity | |
US10325118B2 (en) | Cryptographic cache lines for a trusted execution environment | |
CN109783188B (zh) | 用于安全公共云的密码存储器所有权表 | |
US10686605B2 (en) | Technologies for implementing mutually distrusting domains | |
US11841806B1 (en) | System, apparatus and method for integrity protecting tenant workloads in a multi-tenant computing environment | |
KR20190031136A (ko) | 신뢰 도메인들을 사용한 가상화된 시스템들에서의 격리 제공 | |
Wang et al. | SvTPM: SGX-based virtual trusted platform modules for cloud computing | |
Aw Ideler | Cryptography as a service in a cloud computing environment | |
US20230273808A1 (en) | Confidential offloading of persistent storage operations in confidential computing environments |
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 |