CN109565444B - 用于在公共云环境中保护消费者数据的装置与方法 - Google Patents

用于在公共云环境中保护消费者数据的装置与方法 Download PDF

Info

Publication number
CN109565444B
CN109565444B CN201780049227.7A CN201780049227A CN109565444B CN 109565444 B CN109565444 B CN 109565444B CN 201780049227 A CN201780049227 A CN 201780049227A CN 109565444 B CN109565444 B CN 109565444B
Authority
CN
China
Prior art keywords
domain
key
memory
image
consumer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201780049227.7A
Other languages
English (en)
Other versions
CN109565444A (zh
Inventor
D.M.德拉姆
R.L.萨希塔
B.E.亨特利
N.M.德什潘德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN202210464496.2A priority Critical patent/CN114826582A/zh
Publication of CN109565444A publication Critical patent/CN109565444A/zh
Application granted granted Critical
Publication of CN109565444B publication Critical patent/CN109565444B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Abstract

提供了用于确保安全云环境的方法、系统、计算机可读介质和装置,其中公共云服务提供商可以从其云服务消费者的受信计算基(TCB)中移除其代码。用于确保安全云环境的方法将虚拟机监控器(VMM)、设备、固件和物理敌对者(其中不良管理员/技术员尝试直接访问云主机硬件)保持在消费者的虚拟机(VM)TCB外部。仅仅拥有该安全VM的消费者可以修改VM或访问VM的内容(如由消费者所确定的)。

Description

用于在公共云环境中保护消费者数据的装置与方法
技术领域
实施例涉及公共云的安全性,并且具体地使得公共云服务的消费者能够确保消费者在云中的过程执行以及消费者的私有数据被保护免受其他人、包括公共云服务提供商的访问和修改。
背景技术
术语“云计算”用于描述基于网络的计算(典型地在因特网上)。根据维基百科,“云计算按需向计算机和其它设备提供共享的处理资源和数据。云计算是一种用于使能实现对可配置的计算资源(例如网络、服务器、存储、应用和服务)的共享池的普适、按需访问的模型,所述可配置的计算资源可以在最小管理努力的情况下被迅速地供应和释放。云计算和存储解决方案向用户和企业提供用于在第三方数据中心中存储并且处理其数据的各种能力。云计算依赖于资源共享来实现连贯性和规模经济,类似于网络上的公用设施(比如电网)。”(来源:Wikipedia, https://en.wikipedia.org/wiki/Cloud_computing,于2016年8月11日被访问,引用被省略)。
高容量网络、低成本计算机和存储设备目前的可用性以及广泛采用硬件虚拟化、面向服务的架构、以及自主和效用计算已经导致云计算中的增长。公司可以通过在计算需要增加时从云服务提供商请求附加的资源来按比例放大,然后在需求减小时再次按比例缩小。
云计算提供资源即服务。“云计算提供商根据不同的模型来供应其‘服务’,所述不同的模型中按国家标准和技术局(NIST)的三个标准模型是基础设施即服务(IaaS)、平台即服务(PaaS)、以及软件即服务(SaaS)。这些模型供应增加的抽象;它们因而通常被描绘为堆栈中的层,其中基础设施即堆栈充当底层;平台即服务充当中间层;并且软件即服务充当顶层。这些层可以独立于彼此地被实现。例如,可以在不使用底层PaaS或IaaS层的情况下提供在物理机器(裸金属)上所实现的SaaS;并且相反地,可以在IaaS上运行程序并且直接访问它,而不把它包装为SaaS。”(来源:Wikipedia, https://en.wikipedia.org/wiki/Cloud_computing,于2016年8月11日被访问,引用被省略)。
“NIST对云计算的定义将服务模型定义如下:
软件即服务(SaaS)。被提供给消费者的能力是使用提供商的在云基础设施上运行的应用。自各种客户端设备、通过薄客户端接口、诸如web(网络)浏览器(例如基于web(网络)的电子邮件)或程序接口可访问应用。消费者不管理或控制底层云基础设施,包括网络、服务器、操作系统、存储装置或甚至单独的应用能力,其中可能的例外是:受限的用户特定的应用配置设置。
平台即服务(PaaS)。被提供给消费者的能力是往云基础设施上部署消费者创建或获取的应用,所述应用通过使用提供商所支持的编程语言、库、服务、以及工具来被创建。消费者不管理或控制底层云基础设施,包括网络、服务器、操作系统或存储装置,但是具有对所部署的应用的控制以及可能地具有针对应用托管环境的配置设置。
基础设施即服务(IaaS)。被提供给消费者的能力是供应处理、存储、网络、以及其它基本计算资源,其中消费者能够部署并且运行任意软件,其可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但是具有对操作系统、存储装置和所部署的应用的控制;并且可能地具有对选择联网组件(例如主机防火墙)的受限的控制。(来源:Wikipedia,https://en.wikipedia.org/wiki/Cloud_computing,于2016年8月11日被访问,引用被省略)。
对于云计算的一个使能实现技术是虚拟化。“虚拟化软件将物理计算设备分离成一个或多个‘虚拟’设备,其中的每一个可以被容易地使用以及管理以执行计算任务。硬件虚拟化是将计算机虚拟化为完整的硬件平台、其组件部分的某些逻辑抽象,或者仅仅是对于运行各种操作系统所需的功能性。虚拟化向用户隐藏计算平台的物理特性,代替地呈现另一抽象计算平台”,通常被称为“虚拟机”。(来源:Wikipedia, https://en.wikipedia.org/wiki/Hardware_virtualization,于2016年8月11日被访问,引用被省略)。控制虚拟化的软件被称为“超级监督器”或“虚拟机监控器”。供应并且执行超级监督器/虚拟机监控器来代表消费者创建虚拟机是由公共云服务提供商所提供的服务的示例。
附图说明
图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是一图解,其示出了可以用于实现本发明的实施例的系统。
具体实施方式
在已知的公共云服务环境中,公共云服务提供商的虚拟机监控器控制:代表消费者的虚拟机实例化,对虚拟机的执行以将服务提供给消费者,以及由消费者经由消费者虚拟机对提供商的资源的访问。由于公共云服务提供商所提供的该高级控制,虚拟机内的消费者数据易受能够访问公共云服务提供商的资源的敌对者访问和/或损害。例如,虚拟机内的消费者数据可被受损害的虚拟机监控器、公共云服务提供商的资源的敌对管理员、和/或具有对公共云服务提供商的资源的物理访问的有恶意的人员所访问、公开和/或毁坏。响应于针对消费者私有数据的政府担保,消费者的私有数据可以甚至对于公共云服务提供商是可访问的。
在本文中提供安全公共云环境,其中公共云服务提供商可以从其云服务消费者的受信计算基(TCB)中移除其代码和数据。安全公共云环境将虚拟机监控器(VMM)、设备、固件和物理敌对者(其中不良管理员/技术员尝试直接访问云主机硬件)保持在消费者的虚拟机(VM)TCB外部。
通过使用本文中所述的技术,公共云服务的消费者可以控制在其中处理消费者数据的云环境。消费者可以提供代码来在云服务提供商的服务器上执行,用于建立消费者的安全环境,其在本文中被称为密钥域。消费者可以提供所有代码来在云服务提供商的服务器软件堆栈中执行,包括享有特权的代码,诸如虚拟机监控器(VMM)代码、操作系统代码、应用代码等等。
消费者创建密码安全的代码/数据映像(其在本文中被称为消费者域映像或域映像),其仅能被云服务提供商的服务器硬件、通过使用消费者所提供的经加密的密钥域密钥来译解和执行。消费者可以安全地交换密码型的(多个)密钥域密钥,所述密钥用于创建消费者的安全密码域映像,其排他地利用所述域映像将在其中执行的云服务提供商的服务器硬件。在消费者的密码安全的环境/密钥域外部的云服务提供商软件、管理员和技术员不被提供消费者的经加密的密钥域密钥,并且没有能力查看、扩增或修改消费者域映像的内容(无论域映像在途、在存储期间还是在执行的时候)。
消费者可以密码加密域映像,并且仅仅将经加密的域映像提供到云服务提供商的服务器。此外,消费者可以将域映像密码绑定到域映像将在其中执行的云服务提供商服务器上的特定存储器位置/地址。该密码绑定将确保:在消费者所指定的存储器位置处的消费者安全环境/密钥域内执行域映像。
消费者可以此外使得域映像能够通过所指定的共享存储器区而与云服务提供商软件和/或消费者安全环境/密钥域外部的其它域进行通信。消费者可以此外使得域映像能够通过所指定的共享存储器区而与设备交互、执行输入/输出(I/O)、以及经由交换消息、音频、视频等等而进行通信。
本文中所述的技术还使得公共云服务提供商能够验证消费者的代码,从而在云服务提供商的服务器上提供消费者的安全环境/密钥域。特别地,云服务提供商可以通过硬件来验证:域映像的包括享有特权的代码的消费者所供应的部分是如预期那样。例如,云服务提供商可以验证:消费者供应的虚拟机监控器(VMM)代码,其通常将会由云服务提供商所提供,是云服务提供商所预期的相同VMM代码。该验证可以通过云服务提供商的硬件来被执行,尽管云服务提供商的软件从未被提供有未经加密的域映像或未经加密的密钥域密钥。
此外,云服务提供商服务器可以正确地进入并且开始执行消费者的域映像,其中硬件检查消费者和云服务提供商对以下达成一致:域映像如何被初始地执行以及在进入到密码域映像中时硬件(CPU)的正确状态。云服务提供商硬件可以从一个消费者的域映像安全地切换到另一消费者的域映像。此外,云服务提供商硬件可以从一个消费者的域映像安全地切换到云服务提供商的软件(诸如存储器管理器)。另外,云服务提供商硬件可以通过交换密码完整性检查值或消息认证码,密码地验证域映像的完整性用以检测篡改/修改。云服务提供商还可以通过如下来防止对消费者域映像内容的重放:允许对完整性检查值的写入/配置,但是阻止在硬件外部对完整性检查值的读取。
仅仅是拥有安全环境/密钥域的消费者可以修改域映像或访问域映像的内容。缺少对消费者域映像的控制使得对于公共云服务提供商而言访问消费者的安全环境内的消费者数据在技术上是不可行的,即使面临来自政府的要这样做的法律担保。该功能性使得公共云像在内部锁与钥下所安置的私有云那样安全。
现在参考1,示出了一框图,所述框图示出了典型虚拟机环境100的组件。示出了在云服务提供商的服务器中所提供的虚拟机环境的典型实现方式。在服务器硬件110上运行的是虚拟机监控器(VMM)层120。在所示的典型的虚拟机环境100中,VMM层120是计算机软件或固件,其在云服务提供商的服务器硬件110上创建和运行虚拟机(VM)、诸如VM1 1301、VM21302、以及VM3 1303。VM VM1 1301、VM2 1302、以及VM3 1303中的每一个在图1中被示出为独立的块,其表示全部在共同VMM层120的控制下的不同VM。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的大小,使得其代码基的彻底检查(借助于手动或计算机辅助的软件审计或程序验证)变得可行。”(参见Wikipedia, https://en.wikipedia.org/wiki/Trusted_computing_base,于2016年8月9日被访问)。
在图1的正常虚拟机环境100中,由云服务提供商所提供的VMM 122处于VM VM11301、VM2 1302、以及VM3 1303中每一个的TCB中。将VMM 122包括在TCB中阻止特定的VM、诸如VM1 1301看到、度量或信任控制该特定VM的VMM 122。云服务提供商可以在没有VM VM11301所有者的认知的情况下在任何时候改变VMM 122。此外,在VM之间不存在任何密码分离。如果VMM已经受损,则劣化的VM可以经由受损的VMM——然而所述受损的VMM受第二VM信任——而访问第二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和VM2 2302的虚拟机监控器(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块(存储器位置的集合)进行加密;例如,不同的密钥可以用于对如下IP块进行加密:所述IP块包含来自用于对其它消费者秘密进行加密的密钥的消费者VM映像的代码。为了简化本文中的实施例的描述,本申请描述了属于如通过密钥域密钥被加密的密钥域的每个物理存储器位置的内容,所述密钥域密钥由拥有密钥域的消费者所创建,尽管其它实施例也在本发明的范围内。
如果属于密钥域的物理存储器位置的内容通过使用错误的密钥域密钥被解密,则结果得到的明文将受损。此外,如果存储器是受完整性保护的,并且属于密钥域的物理存储器位置的内容通过使用错误的密钥域密钥被解密,则结果得到的明文将不满足针对属于密钥域的物理存储器位置的完整性准则。虽然本发明的范围不要求属于密钥域的存储器位置受完整性保护,但是存储器完整性保护可以用于增强本文中所述的技术的安全性。
在一个实施例中,通过使用未被使用的物理地址位(或通过高速缓存被传递的其它元数据)来限定密钥域。例如,由于与可以通过使用64位物理存储器地址来被寻址相比很可能将存在被安装在系统中的更少的物理存储器位置,所以未被使用的最高有效地址位可以用于在不同的密钥域之间进行选择。两个不同的密钥域地址可以混叠到相同的物理存储器位置。然而,当来自该物理存储器位置的数据被读取到高速缓存中的时候,高速缓存以全地址解析(例如包括全64位物理存储器地址)独立地持有密钥域地址。在考虑全64位物理存储器地址的未被使用的物理地址位的时候所唯一标识的密钥域地址确定物理存储器位置所属的密钥域。通过标识物理存储器位置所属的密钥域,还标识可以用于对该物理存储器位置的内容进行解密的密钥域密钥。
存储器管理器可以在混叠到相同物理存储器位置的不同地址值之间进行选择;即,存储器管理器可以基于地址混叠来在不同的密钥域之间进行选择。在一个实施例中,通过使用密钥域的所有者(消费者)所创建的密钥域密钥来计算完整性检查值(ICV,诸如密钥散列消息认证码(HMAC))。存储器管理器可以访问完整性检查值表(或其经授权的部分),用以确定是否使用正确的密钥域密钥来访问数据。如果错误的密钥域密钥被用于对数据进行解密,则结果得到的明文将受损,并且将不匹配完整性检查值表中的对应的完整性检查值。
在一个实施例中,当数据被读取到高速缓存行中的时候,数据被压缩以提供用于完整性检查值和/或密钥域标识符/选择符的空间(即未被使用的地址位被嵌入到高速缓存行中)。当向存储器写入的时候,密钥域标识符/选择符也可以被包括在经压缩的数据中。当针对经压缩的数据行而读取存储器的时候,标明密钥域的实际未被使用的地址位与被嵌入在经压缩的数据高速缓存中的密钥域标识符/选择符值进行比较。如果密钥域值匹配,则数据被解压缩并且被转发到高速缓存。压缩是完整性优化,用于避免每当在存储器中访问数据的时候查阅完整性检查值表的需要。此外,将密钥域压缩到高速缓存行中减轻针对以下的需要:一些高速缓存要包括密钥域标识符作为元数据。虽然本发明的一些实施例可以对被写到高速缓存行或存储器的数据进行压缩,但是不要求数据压缩来实现本发明。
如果当标明密钥域的实际未被使用的地址位与被嵌入在经压缩的数据高速缓存中的密钥域标识符/选择符值进行比较的时候密钥域值不匹配,则对当前授权哪个密钥域做出确定。如果用于读取存储器的地址对应于当前密钥域,则数据被清除(即数据位被设置成零),并且执行旧密钥域地址的高速缓存逐出。(尽管两个密钥域地址混叠到相同的物理存储器位置,但是高速缓存以全地址解析独立地持有密钥域地址)。
再次参考图2,VMI 2301和VM2 2302中的每一个被示出为具有其自己的域管理器(VMMlet)2221和2222。在VMI 2301内部示出域管理器VMMlet1 2221,并且在VM2 2302内部示出域管理器VMMlet2 2222,用以表示针对每个相应域管理器(VMMlet)的代码被包括在针对相应VM的代码内。当消费者请求要求虚拟化的服务的时候,实现域管理器(VMMlet)的功能性的代码映像由云服务提供商提供到消费者。由云服务提供商所提供的域管理器(VMMlet)映像被并入到消费者的域(VM)映像中。
拥有VM1 2301的消费者可以度量并且验证域管理器(VMMlet)2221代码,然后将VMMlet1 2221并入到消费者的域(VM1 2301)映像中。通过安排消费者的VM控制消费者VM映像的整个软件堆栈、包括域管理器(VMMlet),消费者可以度量、验证和信任用于对在消费者的VM内运行的域管理器(VMMlet)进行实例化的映像。最终,消费者基于物理地址来创建是存储器定位相关的域发动映像(包括域管理器映像),利用消费者自己的密钥域密钥来对域发动映像进行加密,并且将经加密的域发动映像提供到云服务提供商服务器,所述云服务提供商服务器将发动该域发动映像。
在一个实施例中,消费者在云服务提供商的服务器上的经证明的SGX(Intel®软件防护扩展(Software Guard Extension))飞地(enclave)中创建经加密的域发动映像。在该实施例中,域发动映像利用飞地内的密钥域密钥来被加密,并且经加密的域发动映像(以及任何相关联的ICV值)被写入到飞地外部的存储器。
当云服务提供商从消费者接收经加密的域发动映像(包括域管理器映像)的时候,云服务提供商可以度量、验证并且信任:经消费者加密的域发动映像包含被提供给消费者的相同域管理器映像。在一个实施例中,云服务提供商的服务器硬件提供用于度量经消费者加密的域发动映像的域管理器部分(创建其散列)的机制,所以云服务提供商然后可以证明:被包括在经消费者加密的域发动映像中的域管理器映像与云服务提供商所供应的域管理器映像相同(并且因此受云服务提供商信任)。在一个实施例中,对域管理器映像进行度量的散列函数是定位相关的,使得域管理器映像必须被加载到云服务提供商服务器的存储器的正确存储器位置中以被恰当地解密。例如,即使两个不同的存储器位置的内容相同(例如,全零),也仅有被加载到正确存储器位置中的域管理器映像将产生所预期的定位相关的散列结果。定位相关的散列验证功能的性质提供如下安全性优点:即尝试变更域管理器映像的行为的敌对者不能在存储器中重布置域管理器映像的经加密的部分。
在该协同模型中,由消费者与云服务提供商二者来验证域管理器映像。消费者可以信任由公共云服务提供商所提供的域管理器映像,并且信任:云服务提供商的硬件将实施针对消费者虚拟机(VM)的安全性和机密性。该验证对于VM的安全性是重要的,因为域管理器(VMMlet)具有全vmxroot特权,包括用于执行诸如以下各项之类的命令的能力:虚拟机控制结构(VMCS)保存/还原、通用寄存器(GPR)保存/还原、和/或vmexit/vmresume。此外,中断描述符表(IDT)、高级可编程中断控制器(APIC)指令、和分页数据结构(诸如页面表和/或扩展的页面表(ETP))在密钥域中被加密。在一些实施例中,域管理器映像仅仅包括VM控制结构、诸如VMCS,以及相关联的数据、诸如EPT,其控制消费者的VM的行为,但是不包括用于VMX根操作的代码或数据,其可以驻留在消费者的密钥域外部。
该协同模型通过将度量和验证移动到消费者而使得消费者能够信任由云服务提供商所提供的享有特权的软件。消费者可以确保消费者自己的工作负载在云中的安全性,其由云服务提供商的服务器硬件所保证。云服务提供商然后可以重验证:正确的域管理器映像被使用。该模型大大简化了对于提供真实安全公共云基础的硬件要求。对于虚拟机(VM)的操作系统(OS)部分不需要任何改变。大多数实现复杂度被包含在域管理器(VMMlet)的设计中,域管理器是可以容易地被打补丁、更新、度量和证实的软件。在一个实现方式中,硬件指令用于创建密钥域、在密钥域之间切换,并且验证密钥域的内容,所述验证是通过计算与密钥域相对应的存储器位置的内容的散列值并且比较所述散列值与针对密钥域的有效内容的预期散列值。
再次参考图2,处理器(其被包括在硬件210中)响应于存储器管理器240所发布的命令、通过使用SwitchKD(切换密钥域)指令来在VM 2301和2302及其相应的密钥域KD1 2501和KD2 2502之间切换。从一个密钥域切换到另一个(例如从密钥域KD2 2502到KD1 2501)的结果是:对特定物理存储器混叠的控制被传递到被授权访问当前密钥域KD1 2501的VM(2301)。经由密钥域密钥所访问的不同硬件密钥域防止消费者私有数据跨VM以及甚至通过能够访问外部物理存储器管理器240的敌对者的信息泄露。密钥域标识符/选择符(例如物理地址的部分)使VM存储器区在高速缓存中保持分离。在一个实施例中,代替于切换密钥域指令,VMX根vmlaunch/vmresume指令将把密钥域切换到包含如由vmptrld指令所提供的地址中的密钥域标识符所标识的VMCS的密钥域,所述vmptrld指令将指针加载到来自vmptrld指令中所指定的地址的当前VMCS。vmexit然后将切换回到VMX根密钥域或共享的存储器区。
在一个实施例中,存储器212的一部分212s被共享,并且用于跨密钥域密码边界进行通信。换言之,共享的存储器不被加密并且可以用于在VM之间传送信息,所述VM否则仅能访问属于每个特定VM被授权所针对的密钥域的存储器位置。共享的存储器被示出为具有物理地址,所述物理地址具有被禁用的一位,其在本文中被描述为“k位”。所述k位用于确定当前的密钥域是否用于限制对属于密钥域(诸如密钥域KD1 2501或KD2 2502中之一)的存储器位置的VM访问,或允许跨共享的存储器212s中的密钥域而共享未经加密的信息。所述k位向CPU指示:在物理地址中所指示的密钥域是否应当被设置成共享的密钥域(明文/!k)或被设置成当前活动的密钥域(经加密的)。
已经关于对虚拟机进行管理的域管理器(VMMlet)而描述了以上实施例,尽管本发明不被这样限制。类似的密钥域模型可以用于支持过程或容器;尽管不存在对应的VMM、OS内核(或微内核)用于类似的目的。每个密钥域中的每个过程或容器映像将具有协同的OS内核组件(其在本文中被称为域管理器或OSlet),其通过云服务提供商而被度量。域管理器(OSlet)以与域管理器(VMMlet)类似的方式对存储器管理器命令、中断、调度、资源管理等等进行响应。
现在参考图3,示出的是根据本发明的实施例的云服务环境的框图。如图3中所示,网络300可以用于允许消费者从公共云服务提供商请求服务、包括虚拟化服务。如所见的,网络300可以对应于任何类型的通信网络,并且可以包括经由给定的网络、诸如因特网320而被互连的许多不同类型的计算设备。
云存储装置310可以作为数据中心的部分而被提供,所述数据中心包括各种计算设备、存储设备等等。作为一个示例,云存储装置310可以是包括多个存储组件、诸如盘、光学、或基于半导体的存储装置的存储设备。云存储装置310可以充当例如各种应用的主拷贝的贮存库,所述各种应用包括虚拟机监控器(VMM)应用,其实例化虚拟机以响应于消费者的请求来提供服务。在图1中所示的实施例中,VMM应用的主拷贝以VMM映像312的形式被存储。VMM映像312是包含软件堆栈的软件映像,所述软件堆栈被设计成以虚拟机监控器(VMM)的形式来提供虚拟机平台。
因而,如在图3中进一步所见,在相同的位置处,例如作为相同数据中心的部分,一个或多个公共云服务提供商服务器、诸如公共云提供商服务器3151和3152可以被耦合到云存储装置310。在各种实施例中,公共云服务提供商服务器可以用于服务消费者服务请求,包括虚拟化请求。例如,每个公共云服务提供商服务器可以代表消费者而托管一个或多个虚拟机。在图3中所示的示例中,公共云提供商服务器3151托管两个虚拟机VM1 3401和VM23402。类似地,公共云提供商服务器3152托管两个虚拟机VM1 3403和VM2 3404
如图3中所示,可存在各种消费者设备,例如云服务消费者设备3301和3302。这样的云服务消费者设备可以是给定用户的个人设备,诸如智能电话、平板计算机、台式计算机等等。可替换地,云服务消费者设备可以是用于消费云服务的组织的服务器。另外,可以经由软件来仿真云服务消费者设备。换言之,仿真器或模拟器可以在软件中仿真云提供商的硬件,使得消费者可以在消费者的设备上运行云提供商硬件的仿真器。
云服务消费者设备3301和3302中的每一个提供相应的云服务消费者3311和3312以及相应的VM映像3321和3322。云服务消费者3311和3312可以是例如用于请求云服务的云服务应用的客户端组件。云服务消费者、诸如云服务消费者3311和3312在本文中被称为“消费者”。VM映像3321和3322可以被存储在被耦合到相应的云服务消费者设备3301和3302的存储装置(未被示出)中。这些VM映像由消费者提供到云服务提供商,并且用于创建安全VM、诸如VM1 3401,其运行在云提供商的服务器3151上。
当已经根据本文中所述的技术而在云服务提供商的服务器上建立了安全VM的时候,消费者然后可以使用该VM,利用消费者的秘密密钥,以代表消费者而创建附加的VM。因而,一旦能够在云服务提供商的云中安全地建立一个消费者VM,该VM于是就可以执行图3中的消费者设备的所有操作,包括创建附加的安全VM。
同样地,消费者可以利用多个云服务提供商来建立安全VM,并且这些安全VM可以通过使用消费者的秘密密钥、经由安全通信信道来安全地交互。
图4是一图解,其示出了根据本发明的一个实施例的装置。示出了根据实施例的用于保护公共云环境的装置400。装置400可以包括任何计算设备和/或数据平台,诸如膝上型电脑、个人数字助理(PDA)、媒体内容播放器、成像设备、移动因特网设备(MID)、任何智能设备(诸如无线智能电话、智能平板设备、智能电视)、计算机服务器等等、或其组合。另外,装置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。在一个实施例中,使用被称为可微调块密码(tweakable block cipher)的加密技术。可微调块密码接受被称为微调(tweak)的第二输入,连同将被加密的明文或密文输入。所述微调、连同密钥一起选择通过密码所计算的置换。例如,微调功能可以使用物理存储器地址作为对块密码的微调,用以将未经加密的数据与物理存储器地址相绑定。微调功能445可以包括例如基于XTS(XOR-加密-XOR)/XEX的经微调的码本模式,其利用密文窃取算法、Liskov、Rivest、和Wagner(LRW)算法等等、或其组合。
关于存储器412的完整性,在一个实施例中,使用基于具有完整性的存储器加密的硬件能力,其在美国专利9,213,653 B2“Memory Integrity”中被描述,在下文中被称为具有完整性的总存储器加密引擎或TMEi。在另一实施例中,由存储器加密引擎(MEE)提供具有完整性的存储器加密,如在专利号为8,819,455的美国专利“Parallelized Counter TreeWalk for 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,所述高速缓存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,所述加密器441可以对未经加密的数据进行加密。未经加密的数据可以包括例如明文本数据、明文数据等等、或其组合。明文本数据可以经受以特殊格式(例如超文本传输标记语言(HTML)、富文本格式(RTF)等等)编码,并且由适当的程序(例如文字处理器、文本编辑器等等)读取而无需解密。明文数据可以包括预加密数据,诸如例如将在传输和/或存储之前被加密的明文本数据。另外,明文数据可以包括解密后的数据,诸如例如作为在所接收的和/或检索的数据上的解密的结果的数据。
另外,明文数据可以包括可用任何格式编码的数据,诸如音频/视频数据(例如活动图像专家组(MPEG)数据等等)、图像数据(例如联合图像专家组(JPEG)数据等等)、金融数据(例如自动传递机器(ATM)交易数据等等)等等、或其组合。明文数据可以包括程序数据,诸如例如程序的至少一部分、操作系统(OS)、应用、虚拟机(例如虚拟机监控器(VMM)代码等等)等等、或其组合。明文数据还可以包括例如指令,其包括操作码、操作数等等、或其组合。
未经加密的数据可以包括多个位。所述多个位可以包括以任何代码表示的一个或多个位(例如字节等等),所述任何代码表示诸如二进制代码、八进制代码、十六进制代码、符号代码、十进制代码、字母数字代码、高级编程语言代码等等、或其组合。例如,存储器参考指令可以包括针对操作码的一位、针对地址的一位等等,其中存储器参考指令的位可以用十六进制代码(例如机器语言)、用符号代码(例如汇编语言)等等、或其组合来被表示。另外,所述多个位可以被转化成和/或自二进制代码,其中所述二进制代码可以由核416、418执行,可以在存储器412处被分类,可以取出自存储器412,等等,或其组合。
加密器441可以包括任何类型的密码,用于生成密文数据,诸如例如以任何期望的操作模式的块密码。块密码可以包括固定的块大小,其中块密码可以被重复地实现以对比块大小更大的数据进行加密。例如,块密码可以在操作的传播密码块链接(PCBC)模式中包括高级加密标准(AES)。另外,块密码可以包括可扩展的块大小。
在一个示例中,块密码是Threefish,其可以被实现以获得任何长度的可扩展的块大小(例如256位、512位、1024位等等)。例如,Threefish可以利用微调(例如128位),其可以包括存储器地址和/或位置,以及密钥,所述密钥可以是与块相同的宽度。Threefish可以利用多轮(round)(例如72)来为256位和1024位的块进行加密,利用多轮(例如80)来用于1024位的块,等等。Threefish可以利用功能MIX,其包括加法操作、通过常量的旋转操作、以及异或(XOR)操作。例如在每组MIX功能之后(例如2、4或8,相应地按块大小),字可以被置换。子密钥可以例如每个轮数(例如4)被注入到系统中,其中所述子密钥可以通过密钥的部分、微调、和计数器值来被生成。在结束时可以给予密钥和微调额外的字(例如所有其它字的XOR)。
所图示的存储器加密引擎415还包括解密器442,所述解密器442可以对密文数据进行解密以生成未经加密的数据。解密器442可以包括加密器441的逆。例如,解密器442可以包括AES-PCBC的逆。另外,解密器442可以包括Threefish的逆。例如,可以用相反的次序来应用子密钥,其中每轮包括逆向字置换,继之以逆向MIX功能。因而,当未经加密的数据将被存储在存储器412中(例如写入指令)的时候,未经加密的数据(例如明文数据)可以被实现为对加密器441的输入,以生成未经加密的数据的不可读取的拷贝(例如密文数据),其中解密器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可以例如展开原始物理存储器地址,将所述地址与未经加密的数据取XOR(异或),并且通过加密器441利用密钥来运行结果,来将未经加密的数据绑定到地址。
所图示的存储器加密引擎415可以此外包括解码器447,其用于对未经加密的数据进行解码并且识别一个或多个指令。例如,当大体上整个数据行(例如64字节的高速缓存行)被取出自存储器102并且被解密的时候,没有劣化的未经加密的数据(例如有效明文)可包含操作码。因而,当解码器447对明文数据进行解码的时候,解码器447可以识别指令集、诸如例如x86指令集等等的操作码。
所图示的存储器加密引擎415可以此外包括密钥/微调值选择器448,其用于从多个密钥(例如密钥域)中选择密钥和/或从多个微调(例如微调域)中选择微调,以用于存储器412中的物理位置。例如,所图示的存储器加密引擎415可以包括功能检测器,其用于确定功能(例如程序、中间件、操作系统、固件、虚拟机、VMM、操作系统(OS)内核等等)或功能的一部分(例如程序的部分等等)被首次发动,或被首次给予对存储器412中物理位置的访问。当功能(和/或其部分)被给予访问的时候,密钥/微调值选择器448可以作为响应而选择密钥和/或微调(例如来自密钥域的密钥、来自相同密钥域的不同密钥、来自不同密钥域的不同密钥、来自微调域的微调、来自相同微调域的不同微调、来自不同微调域的不同微调等等)以用于存储器中的物理位置。
密钥/微调值选择器448可以基于如下值来选择密钥:该值根据针对数据行的物理存储器地址的一位、诸如未被使用的地址位来被确定。针对特定物理存储器位置的密钥域可以通过将被选择来确定该值的多个未被使用的地址位来被限定。例如,特定的物理存储器位置一度可属于特定的密钥域,其中未被使用的地址位可以用于限定密钥域(例如,包括16个密钥的密钥域,所述16个密钥用于在其中利用四个未被使用的地址位的单个物理存储器位置)。因而,基于位置映射到的域,物理存储器位置可以在不同时间点使用不同密钥。密钥/微调值选择器448可以例如通过如下来导出密钥:通过使用一秘密主密钥来对值(例如0001、0010等等)进行加密,所述秘密主密钥可受装置400保护(例如在受信的执行环境中)。另外,密钥/微调值选择器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的组件中的一个或多个以执行其对应功能性,所述逻辑449可以驻留在与核416、418、存储器412等等、或其组合相同或不同的位置中。另外,存储器加密引擎415的一个或多个组件可以用计算机程序代码来被实现,诸如软件值选择器,其可以与用逻辑硬件所实现的存储器加密引擎415的一个或多个组件相对接。
由装置400所提供的功能性中的一些可以由处理器高速缓存的存储器/DRAM(动态随机存取存储器)侧上的芯片上系统(SoC)IP块递送,从而使得所述功能性能够被用于在主机处理器(例如中央处理单元/CPU)核上、以及在其它IP块和加速器、诸如通用图形处理单元(GPGPU)和集成图形(例如Intel® Processor Graphics(处理器图形))上运行的软件。
所图示的装置400采用未被使用的物理地址位(和/或通过高速缓存所传递的其它元数据)来操纵密码存储器完整性值指针(例如实现一个或多个访问控制策略),从而使得软件存储器分配例程能够控制指针的指派(例如“分配内存”和“空闲”)。装置400一般可以使用未被使用的地址位作为密钥域。例如,与可实际被64位物理存储器地址所寻址的相比,可存在被安装在系统中的更少外部物理存储器,所以最高有效地址位可以用于在不同的“密钥域”之间选择,因为高速缓存仍可以将以物理存储器地址全解析的这些地址传送到装置400。所图示的装置400可以使用5级分页来用于虚拟存储器,以及64位寻址以允许软件存储器分配器/管理器(例如图2的存储器管理器240)在混叠到相同物理存储器位置的不同地址值之间进行选择。软件存储器分配器/管理器可以控制完整性值表(或其经授权的部分)来确定哪个混叠当前有效,使得软件对无效混叠/地址的使用然后可以在硬件中提出故障,其可以被报告给软件监控器以应对存储器违反。
图5是根据本发明的一个实施例的、由云服务的消费者所执行的方法的流程图。在“从云服务提供商请求服务”框502中,消费者从云服务提供商请求服务。例如,所述请求可以是针对虚拟化服务,或所述请求可以是要执行交易,对此,云服务提供商将建立虚拟机或其它过程来执行交易。
云服务提供商标识能够有密钥域的服务器或服务器群组以服务消费者的请求。在“从云服务提供商接收域管理器映像和存储器定位相关的地址信息”框504中,消费者从云服务提供商接收域管理器映像和存储器定位相关的地址信息,其在本文中还被称为修整(fix-up)变量信息。存储器定位相关的地址信息特别地对服务消费者请求的(多个)服务器的存储器中的物理位置进行标识。该存储器定位相关的地址信息可以包括针对服务消费者请求的(多个)服务器的:存储器中页面的物理地址、针对页面表的物理地址、控制寄存器信息(例如CR3值)、中断描述符表寄存器信息等等。域管理器映像可以包含(多个)页面表结构,所述页面表结构将域管理器映像的线性/虚拟地址映射到如下物理地址:在所述物理地址处,域管理器映像将位于云服务提供商的服务器的存储器中。
控制然后从“从云服务提供商接收域管理器映像和存储器定位相关的地址信息”框504传到“度量域管理器映像”框506,其中消费者度量域管理器映像以确保域管理器映像尚未受损。消费者可以通过使用已知的白名单技术来验证域管理器映像,所述白名单技术诸如计算域管理器映像的散列并且比较所述散列值与针对主域管理器映像(其已知是未劣化的)的主散列值;源代码可以被检查并且被重编译到匹配的映像中;可以验证映像的政府认证;可以确认映像与开放源软件一致,等等。如果映像将不泄漏消费者数据,则认为映像是可信的。例如,如果通过使用消费者的秘密密钥使所有通信安全,并且文件/存储器页面当被保存和/或还原到存储装置或自存储装置被保存和/或还原的时候被加密并且经完整性验证,则可以认为映像是可信的。
从“度量域管理器映像”框506,控制传到“经验证
Figure DEST_PATH_IMAGE002
”判定点508。如果域管理器映像未经验证,则控制传到“错误”框522,其中消费者处置其中云提供商的域管理器映像尚未经验证的情形。在这样的情形中,消费者可以选择不使用该特定公共云服务提供商的服务。
如果在“经验证
Figure DEST_PATH_IMAGE002A
”判定点508处验证了域管理器映像,则控制传到“创建域发动映像”框510。在框510处,消费者创建域发动映像,其将在云服务提供商的服务器上被执行以“发动”密钥域。发动密钥域可以包括例如创建密钥域,使得硬件利用密钥域密钥来对被存储在属于密钥域的存储器位置中的数据进行加密,并且将数据(诸如将被执行以初始地建立密钥域的代码)存储在属于密钥域的存储器位置中。
在一个实施例中,消费者使用由云服务提供商在“从云服务提供商接收域管理器映像和存储器定位相关的地址信息”框404中所提供的存储器定位相关的地址信息,以修改提供商所供应的域管理器映像,作为将被执行以发动密钥域的代码的部分。例如,消费者可以修改域管理器映像的页面表,使得考虑到域管理器映像将位于其中的物理存储器地址而更新(修整)页面表中的物理地址。一旦更新了分页结构,通过执行域管理器映像的代码、数据和程序所使用的所有线性/虚拟地址将映射到云服务提供商的服务器上的正确的对应物理存储器地址。在一个实施例中,消费者通过使用消费者的密钥域密钥来对经修整的域管理器映像进行加密,并且通过使用消费者的密钥域密钥来为经加密修整的域管理器映像创建完整性检查值(ICV)。
在一个实施例中,消费者创建域发动映像,其包括经加密修整的域管理器映像,以用于分布到云服务提供商服务器。消费者还将秘密密钥包括在域发动映像中,以用于通过执行域过程(例如VM、OS等等)所提供的分页、迁移、证明、通信和其它功能。当对域发动映像进行加密的时候,被包含在域发动映像内的对应的页面表结构也被加密。
由于域发动映像通过使用存储器定位相关的“经微调”密码而被加密(以及完整性检查),所以敌对者不能在存储器中四处移动域发动映像的部分。页面表将域发动映像的程序和数据映射到云服务提供商的服务器上的正确物理存储器地址,所以考虑到域发动映像被密码地绑定到正确物理存储器位置,程序行为不能被恶意改变。换言之,如果域发动映像没有被加载到云服务提供商的服务器上的正确物理存储器位置中,则域发动映像不能被正确地解密。此外,完整性检查值可检测对于修改以下各项的任何尝试:域发动映像内容和/或域发动映像被加载到其中的存储器中的位置。
控制从“创建域发动映像”框510传到“验证能够有密钥域的服务器/群组的证书并且获得能够有密钥域的服务器/群组的公钥”框512。
在框512中,消费者验证所标识的云服务提供商服务器/群组的证书,并且获得所标识的能够有密钥域的服务器/群组的公钥。
控制从框512传到“与经验证的能够有密钥域的(多个)服务器交换密钥域密钥”框514。消费者与在框512中所验证的能够有密钥域的(多个)服务器交换密钥域密钥。密钥域密钥交换的一个方面是:密钥域密钥仅仅以经加密的形式而由消费者直接提供到能够有密钥域的服务器的硬件(诸如图4的存储器加密引擎415)。由于能够有密钥域的服务器的软件不接收密钥域密钥,所以能够有密钥域的服务器软件不能在不请求硬件执行解密的情况下解密密钥域的内容。在一个实施例中,消费者使用在框512中所获得的服务器/群组的公钥来加密消费者的密钥域密钥,然后将经加密的密钥域密钥提供到能够有密钥域的服务器的硬件。
在另一实施例中,可以在消费者和服务器硬件之间协商密钥域密钥。可以直接利用硬件(例如微代码、固件、CSME、SMM)来生成密钥域密钥,其中服务器硬件可以提供其唯一(或群组)标识以及公钥/CERT,并且然后Diffie Hellman密钥交换(或RSA)可以完成与消费者的密钥域密钥交换。该实施例要求消费者在线来在域映像被发动的时候执行密钥交换。
该密钥交换使得在经验证的能够有密钥域的服务器上运行的虚拟机能够访问利用消费者的密钥域密钥所加密的域发动映像数据,而不暴露密钥域密钥本身。经加密的消息通过能够有密钥域的服务器上的云服务提供商的软件堆栈来被传递。能够有密钥域的服务器硬件为命令提供密码端点。例如,消费者可以利用服务器的公钥来对它用于密钥域的密钥进行加密,并且将该经加密的密钥域密钥发送到云服务提供商。云服务提供商然后可以在能够有密钥域的服务器硬件上发布指令、诸如“创建密钥域(CreatKD)”指令,用以创建新的密钥域。另外,提供商还可以使用相同的“创建密钥域(CreateKD)”指令来重创建密钥域,例如如果VM已经被挂起并且将被恢复的话。
控制从“与经验证的能够有密钥域的(多个)服务器交换密钥域密钥”框514传到“为交换了密钥域密钥的能够有密钥域的服务器加密包括域管理器映像的发动映像”框516。一旦建立了密钥域密钥(或在之前,因为它是消费者的密钥),消费者就使用密钥域密钥来为消费者与之交换了密钥域密钥的特定服务器加密包括域管理器映像的域发动映像。给定由云服务提供商作为修整变量信息所提供的存储器定位相关的地址信息,消费者对域发动映像进行加密。在一个实施例中,使用被称为可微调块密码的加密技术。可微调块密码接受被称为微调的第二输入,连同将被加密的明文或密文输入。所述微调、连同密钥一起选择通过密码所计算的置换。在对消费者的域发动映像进行加密中,能够有密钥域的服务器的物理存储器地址被用作微调,从而使得结果得到的经加密的发动映像是存储器定位相关的。经加密的发动映像被描述为存储器定位相关的,因为经加密的发动映像在它可以被正确地解密之前必须被加载到云服务提供商的服务器的正确物理存储器地址中。
在一个实施例中,通过使用具有密文窃取(XTS)的基于XEX的经微调的码本模式来加密域发动映像。消费者在存储器定位相关的XTS模式中、通过使用页面地址微调和密钥域密钥来加密域发动映像。域发动映像将被加载于其中的正确物理地址被包括在针对每个经加密的块的XTS微调中。在其它实施例中还可以使用其它可微调的密码,诸如Liskov、Rivest和Wagner(LRW)或计数器模式密码。
消费者还可以通过使用密钥域密钥来为域映像计算完整性检查值(ICV,诸如密钥散列消息认证码(HMAC))。在一个实施例中,完整性检查值还是存储器定位相关的,使得在验证数据的完整性中考虑存储器中对应数据行的地址/存储器位置。在其中消费者知道与消费者的经加密的发动映像相对应的服务器上的ICV表的地址位置的情形中,消费者可以将ICV值包括在经加密的发动映像中。还可以利用密钥域密钥、通过使用微调来对ICV值表进行加密,所述微调指示针对ICV表的正确服务器存储器地址。云服务提供商服务器然后将会在针对ICV表的那些相同服务器存储器地址处把经加密的发动映像的ICV部分加载到ICV表的正确槽隙中。
从“为交换了密钥域密钥的能够有密钥域的服务器加密包括域管理器映像的发动映像”框516,控制传到“利用能够有密钥域的服务器来建立密钥域”框518。在框518中,消费者将创建密钥域的请求发送到能够有密钥域的服务器。该请求可以包括经加密的密钥域密钥,其用作针对将由能够有密钥域的服务器的处理器执行的“创建密钥域(CreatKD)”指令的输入值。将使用的密钥域选择符/标识符是由云服务提供商的存储器管理器所做出的局部判定,因为云服务提供商的存储器管理器需要管理有限的密钥域命名空间。消费者不需要知道密钥域选择符/标识符,并且密钥域选择符/标识符的值可以由云服务提供商改变以避免局部冲突。实际的密钥域密钥为消费者的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。在一个实施例中,能够有密钥域的服务器从消费者接收用于创建密钥域的请求。该请求可以包括经加密的密钥域密钥,其可以用作针对将由能够有密钥域的服务器执行的“创建密钥域(CreatKD)”指令的输入值。CreatKD指令还可以通过如下来初始化新的密钥域:使处理器核静默,冲刷旧密钥域的高速缓存和转化旁视缓冲器(TLB),并且利用用于密钥域的新密钥来初始化存储器加密引擎。利用新密钥域密钥来初始化存储器加密引擎可以包括将密钥域密钥写到可由存储器加密引擎硬件访问的存储器槽隙/寄存器。可替换地,可以经由分离的“初始化密钥域((InitKD)”指令来执行这些初始化功能。
从框610,控制继续进行到“度量域发动映像”框612。云服务提供商验证:在消费者的经加密的域发动映像内存在所预期的域管理器映像。该验证确保:享有特权的代码、诸如VMX根组件和数据结构被包括在消费者的经加密的域发动映像中。
在一个实施例中,存储器管理器使用散列密钥域(HashKD)指令来验证:域发动映像的页面包含提供商的域管理器(VMMlet)映像。“安全散列”函数,诸如由国家标准和技术局(NIST)所定义的安全散列算法3(SHA3)用于为经加密的域发动映像内的提供商域管理器映像计算散列值。安全散列算法通过使用散列函数来变换数据,所述散列函数可以是包括按位的操作、模块化加法以及压缩功能的算法。散列函数然后产生固定大小的字符串,其看起来完全不像原始输入字符串。这些算法被设计成是单向函数,意味着一旦原始输入数据已经被变换成散列值,实际上就不可能将散列值变换回成原始输入数据。
通过根据本地存储器中消费者的经加密的域发动映像来构造域管理器映像,云服务提供商可以验证在消费者的域发动映像内存在域管理器映像。云服务提供商然后可以执行相同的验证功能(即散列函数),HashKD指令在针对所构造的域管理器映像的本地存储器位置的内容上使用所述验证功能。如果本地存储器位置的内容的验证功能(散列)值匹配散列KD指令的结果,则云服务提供商可以确保提供商的域管理器映像被正确地并入作为消费者的经加密的域发动映像的部分。
在一个实施例中,HashKD指令可以为高速缓存行提供散列值,或在另一实施例中,HashKD指令可以一次为多达存储器的一页面提供散列值。
在一个实施例中,HashKD指令仅仅提供散列值,使得不将域发动映像中的消费者秘密透露给云服务提供商。消费者的秘密可以在域发动映像的VMX非根部分中,例如作为在域管理器(VMMlet)上方运行的操作系统的部分。作为HashKD指令的结果仅仅提供散列值使得云服务提供商能够仅仅验证经加密的域发动映像的提供商部分(域管理器映像部分)。与经加密的域发动映像的经消费者修改(包括消费者秘密)的部分相独立地验证提供商的部分防止将消费者的秘密披露给云服务提供商。
从框612,控制继续进行到“经验证
Figure DEST_PATH_IMAGE002AA
”判定点614。如果域发动映像度量没有被验证,则控制继续进行到“错误”框626,其中云服务提供商可以将验证失败报告给消费者。如果映像度量在“经验证
Figure DEST_PATH_IMAGE002AAA
”判定点614处经验证,则控制继续进行到“执行消费者的域发动映像并且验证入口点”框616。
在“执行消费者的域发动映像和验证入口点”框616处,能够有密钥域的服务器的堆栈将在预期的入口点(如经由存储器定位相关的地址(“修整”变量)信息所提供给消费者的)处执行消费者的域发动映像。存储器管理器VM将经消费者加密的域发动映像加载到经加密的存储器页面中(其中k位禁用)。新的密钥域被发起。
在一个实施例中,能够有密钥域的服务器的处理器执行“切换密钥域”(SwitchKD)指令,作为输入而提供目的地密钥域标识符/选择符、入口点地址和控制寄存器信息。另外,在一个实施例中,由消费者(例如通过使用密钥域密钥或其衍生物)所计算的密钥散列消息认证码(HMAC)被用于验证:入口点地址和控制寄存器信息是正确的。
在执行域发动映像之前,能够有密钥域的服务器可以将中断关断。在一个实施例中,在切换密钥域之后执行的第一指令是特殊的类ENDBRANCH指令,其标示了用于密钥域切换的预期入口点。在ENDBRANCHKD指令之后的目的地域管理器(VMMlet)代码验证VMM处于受保护的模式中。目的地域管理器(VMMlet)代码还验证控制寄存器和中断描述符表寄存器等等是正确的。目的地域管理器(VMMlet)代码然后重启用中断并且从所保存的状态中恢复执行。
在一个实施例中,通过使用HMAC功能来实现SwitchKD(切换KD)指令以验证消费者的域发动映像。该实现方式是SwitchKD(切换KD)的优选实施例,因为它是最灵活的。消费者可以使用利用服务器硬件所建立的秘密,例如密钥域密钥或其衍生物,来在用于进入密钥域的预期处理器状态上计算HMAC(例如SHA3 HMAC)(例如验证处理器的用于指令指针的寄存器、堆栈指针、CR0、CR3、CR4、IDTR、GDTR、LDTR、可影响VM安全性的任何MSR等等)。SwitchKD(切换KD)指令的HMAC实现方式可以由消费者的域映像动态地建立,并且多个入口点可通过计算多个HMAC来被支持,对于进入消费者的域映像中的每个唯一有效的入口点有一个。通过使用HMAC来动态地定义新入口点的该灵活性允许服务器利用原始经加密的域发动映像来启动,在固定的初始入口点处执行原始经加密的域发动映像,然后在内部(从密钥域内)将该域发动映像拷贝到新的动态指派的存储器位置(根据提供商的存储器管理策略),以及为新的动态指派的存储器位置所建立的新入口点位置。现在,原始的域发动映像,以及原始域发动映像被密码地绑定到的静态存储器位置,于是可以被云服务提供商释放,仅仅将动态重指派的VM映像留在存储器中、由提供商的存储器管理器软件所动态定义的位置处。以此方式,即使用于不同消费者的多个初始发动映像碰巧在存储器中重叠,它们可以被顺序地加载,转变到动态存储器位置,释放该域发动映像的存储器位置来用于下一个消费者的域发动映像等等,其中每个执行的域映像在创建每个动态映像时、通过使用用于新入口点的消费者密钥域密钥来重计算HMAC。
可替换地,当创建新密钥域(CreateKD(创建KD))的时候,入口点值(指令指针寄存器、堆栈指针寄存器、控制寄存器、中断描述符表寄存器等等)可以由消费者利用能够有密钥域的服务器来建立,并且由云服务提供商来验证。
当能够有密钥域的服务器执行域发动映像的时候,由处理器的控制寄存器(即CR3)来引用页面表,所述控制寄存器指定用于页面表结构的根的物理地址。在切换到密钥域中时,控制寄存器必须被设置成正确的值。在一个实施例中,切换密钥域(SwitchKD)指令包括密钥散列参数,诸如SHA3 HMAC。密钥散列参数用于确保:当执行域发动映像的时候,映像内的正确页面表结构被云服务提供商服务器的处理器使用(并且因而所有的存储器映射是正确的)。密钥散列参数用于确认:当进入域发动映像的时候,云服务提供商的服务器处理器状态是正确的,因为处理器将对照云服务提供商服务器的处理器控制寄存器状态、指令指针、堆栈指针等等来验证密钥散列参数(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)中所提供的代码的部分所建立的密钥域的存储器位置内的数据。
域发动映像由消费者创建,因为它将会出现在云服务提供商服务器的存储器的所指定的存储器位置中。例如,通过使用存储器定位相关的密码来将域发动映像密码地绑定到云服务提供商服务器的存储器的所指定的存储器位置中,消费者可以利用消费者的密钥域密钥来对域发动映像进行加密。一旦经加密的域发动映像被加载到由存储器定位相关的密码所指定的存储器位置中,现有的经加密的域发动映像然后可以自举(bootstrap),从而动态地将附加域映像代码(诸如动态消费者供应的部分714代码)加载到消费者的域映像710中。在一个实施例中,动态消费者供应的部分714对应于消费者域映像的不太享有特权的代码,诸如操作系统、应用等等。
在一个实施例中,消费者的经加密的域发动映像至少包括域管理器(VMMlet)给予特权的代码。在至少一个实施例中,消费者的经加密的域发动映像还包括某种消费者供应的代码。
由于域发动映像由消费者通过使用消费者的密钥域密钥在消费者自己的环境中被加密,所以执行的经加密的静态部分712可以被描述为被使得在密钥域“外部”。由于仅仅消费者知道密钥域密钥,所以云服务提供商不能创建、将代码添加到、或修改消费者的经加密的域发动映像,而不使消费者的经加密的域发动映像劣化。
一旦被包括在消费者的域发动映像中的代码开始代表消费者在密钥域内执行,执行的消费者的域发动映像代码就可以接管并且扩展消费者的域映像710。扩展消费者的域映像710包括例如将新的代码(诸如动态消费者供应的部分714)动态地添加到消费者的域映像710。通过使用由消费者所确定的协议(例如仅仅在验证了新扩展代码段之后可以扩展消费者的域映像710),新代码可以被添加到来自密钥域内的消费者的域映像710,和/或可以对所述消费者的域映像710做出修改。
在消费者的域映像710写入到来自密钥域内的存储器时,来自那些存储器写入操作的数据由存储器加密引擎、利用存储器地址被加密和微调。从密钥域内被执行的读取和写入操作因此是位置相关的,因为它们从密钥域内执行的代码被创建。这样的操作可以被描述为由存储器加密引擎被使得“在密钥域内部”。换言之,在密钥域外部执行的云服务提供商软件不能修改或重布置消费者域映像的该动态创建的部分。
在一个实施例中,已经被动态地扩展的消费者域映像可以被转换成消费者域映像的静态版本。例如,当从消费者域映像被实例化的虚拟机的执行已经被挂起并且将被恢复的时候,从动态到静态消费者域映像的转换可以被执行。在虚拟机被挂起的时候可以捕获动态消费者域映像的拷贝,动态消费者域映像的拷贝可以被冲刷到存储器,并且被绑定到来自存储器的地址的密文可以被保存。消费者可以重计算与存储器地址相关联的任何完整性检查值,并且重创建消费者域映像,从而并入那些完整性检查值。当虚拟机将被恢复的时候,重创建的消费者域映像可以被重发动,作为静态消费者域映像。
如参考图5和6所描述的,由消费者所创建的经加密的域发动映像包括消费者域管理器(VMMlet)映像,其是云服务提供商所供应的域管理器(VMMlet)映像的经修改的版本。提供商供应的域管理器(VMMlet)映像被修改以并入针对云服务提供商的所指定的服务器的存储器定位相关的地址信息。消费者域管理器映像被静态地绑定到所指定的服务器和所指定的服务器的存储器地址,这意味着:消费者域管理器映像必须在所指定的服务器的所指定的存储器地址处被安装和执行以便恰当地运转。
云服务提供商执行消费者的经加密的域发动映像(包含消费者的域管理器(VMMlet)映像),其使得初始静态域管理器映像被安装在所指定的服务器的所指定的静态存储器地址处。初始静态域管理器映像在云服务提供商的服务器上执行,作为消费者域管理器(VMMlet)。通过使得消费者的VM映像的代码被加载到存储器中并且作为消费者域(VM)被执行,消费者域管理器(VMMlet)代表消费者来管理虚拟机。消费者域(VM)通过服务器的存储器加密引擎来在服务器的存储器中的数据上执行操作。由于消费者域(VM)映像的内容动态地改变,所以针对消费者域(VM)映像的存储器占用空间动态地增长和收缩。
图8是一图解,其示出了根据本发明的一个实施例的数据物理地址870。数据物理地址870可以用于确定以上所讨论的密钥或微调。
如上所述,可以通过使用数据物理地址870(或可替换地,通过高速缓存所传递的其它元数据)的未被使用的物理地址位874(也被称为混叠位874)来定义密钥域。例如,由于与可以通过使用64位物理存储器地址来被寻址的相比很可能将存在被安装在系统中的更少的物理存储器,所以未被使用的最高有效地址位874可以用于在不同的“密钥域”之间进行选择。如上所述,术语“密钥域”是指利用共同密钥域密钥被加密的一组存储器位置。数据物理地址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)将用于每个过程的虚拟地址空间映射到用于系统的实际物理地址空间。从物理地址到虚拟地址的映射典型地通过使用页面表来被实现。
术语“地址空间”在本文中被用于意指与给定过程或虚拟机(VM)相对应的存储器中的一组地址,并且“地址空间标识符(ASID)”可以是任何数、代码、或其它记号,其标识ASID与之相关联的一个或多个地址空间。
图9表示其中不存在任何混叠的情况;即,充足的存储器在系统中可用使得密钥域选择符地址位974连同页面地址976和高速缓存行选择符978一起被使用以选择由数据行物理地址975所引用的实际物理存储器位置。此处,每个单独的密钥域将位于物理存储器920的非重叠的范围中。
图9示出了根据本发明的实施例的虚拟地址到物理地址映射。物理存储器920中的物理页面822内的物理地址924可以通过使用虚拟地址900来被寻址。如所示出的,虚拟地址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所示)。OS分页结构960的基本地址可以通过使用控制寄存器、诸如CR3中的指针961来被访问。以这样的方式,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中所示,混叠的物理存储器1010中的混叠的访客物理页面1012内的混叠的访客物理地址1014可以通过使用虚拟地址1000来被寻址。如所示出的,虚拟地址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所示)。OS分页结构1060的基本地址可以通过使用控制寄存器、诸如CR3中的指针1061来被访问。以这样的方式,64位线性地址可以用于实现多层级分页结构来访问物理地址。
图11是一图解,其示出了根据本发明的一个实施例的通过云服务提供商所进行的、用于将域映像提供给消费者的初始步骤。
在图11中所示的示例中,包括硬件1110的云服务提供商服务器的存储器管理器1140将存储器1112中的空间1114分配用于域映像1122,并且向进行请求的消费者通知存储器定位相关的地址(“修整变量”)信息。该存储器定位相关的地址(“修整变量”)信息尤其可以包括存储器中页面的物理地址(诸如构成空间1114的页面的物理地址)、针对页面表的物理地址、控制寄存器信息、中断描述符表寄存器信息等等。作为可替换的实施例,云服务提供商可以创建已经修整的域映像,消费者可以将所述域映像重验证为正确的。特别地,需要被变更的域映像的部分是如图9中所示的页面表中的物理存储器页面地址,页面表条目832。页面表条目932指向物理存储器920中的物理页面922。域映像可以被视为一系列页面(例如各自4K字节),其中每个页面被给予物理页面地址(其在存储器中的位置)。映像验证然后包括检查:在给定包括域映像的页面的内容的情况下,通过页面表的虚拟到物理映射是正确的。
图12是一图解,其示出了根据本发明的一个实施例的在消费者1201和云服务提供商的存储器管理器1240之间的、用于将域管理器映像(诸如图11的VMMlet映像1122)提供给消费者的消息。
响应于消费者针对服务的请求,云服务提供商的服务器的软件(即存储器管理器1240)被配置成将域管理器映像(诸如图11的VMMlet映像1122)提供给消费者。存储器管理器1240还将针对域管理器映像的存储器定位相关的地址信息——在本文中还被称为修整变量信息——发送给消费者。消费者验证域管理器映像是有效的或使用第三方来验证域管理器映像是有效的。
在确定了域管理器(VMMlet)映像是有效的、如参考图11所描述的之后,消费者使用对由云服务提供商提供为修整变量信息的存储器位置进行标识的存储器定位相关的地址信息来修改经验证的域管理器映像,所述经验证的域管理器映像由云服务提供商提供来创建域发动映像,从而发动域管理器(VMMlet)。可替换地,域管理器映像可以由云服务提供商“修整”,使得域管理器映像准备好在所分配的存储器位置中运行。
在一个实施例中,消费者还可以将消费者自己的组件、诸如用于安全通信的消费者的秘密密钥添加到域发动映像。具有用于安全通信的方法允许消费者的基本域发动映像通过使用消费者的秘密密钥来从消费者安全地检索消费者域(VM)映像的其余部分。消费者还可以在域发动映像中包括消费者自己的操作系统、应用等等。
最后,当消费者的域发动映像包括任何消费者供应的组件的时候,消费者加密域发动映像。参考图13进一步描述“修整”域管理器(VMMlet)映像以及创建经加密的域发动映像。
图13是一图解,其示出了根据本发明的一个实施例的在云服务环境的组件之间的、用于对域发动映像进行加密并且建立密钥域的消息。如以上所描述的,消费者1301修改经验证的域管理器映像,所述经验证的域管理器映像由云服务提供商提供以创建针对域管理器(VMMlet)的域发动映像。然后通过使用存储器定位相关的“经微调”的密码和消费者的密钥域密钥来加密域发动映像。
消费者1301还可以通过使用密钥域密钥来为经加密的域发动映像计算完整性检查值(ICV,例如密钥散列消息认证码(HMAC)值)。ICV可以被计算为定位相关的值并且用于验证定位以及针对经加密的域发动映像的相关联的存储器位置的内容。
消费者1301请求云服务提供商存储器管理器1340标识云服务提供商的网络中、提供密钥域管理功能性的服务器。云服务提供商存储器管理器1340获得用于能够有密钥域的服务器的服务器证书(在该示例中,来自具有CPU 1311的服务器)并且将服务器证书提供给消费者1301。消费者1301验证:服务证书由一权威机构签名,所述权威机构证实所标识的服务器提供密钥域管理功能性。
消费者1301利用与能够有密钥域的服务器的证书相对应的云服务提供商的能够有密钥域的服务器的公钥来加密消费者的密钥域密钥。消费者1301将经加密的密钥域密钥、经加密的发动映像、以及(可选地)完整性检查值(ICV)发送到云服务提供商存储器管理器1340,所述云服务提供商存储器管理器1340提供能够有密钥域的服务器的“创建密钥域(CreateKD)”命令。在一个实施例中,云服务提供商存储器管理器1340标识将用于新密钥域的密钥域地址选择符,从而将密钥地址域选择符提供给能够有密钥域的服务器的CPU1311。能够有密钥域的服务器的CPU 1311创建并且初始化密钥域。初始化密钥域可以包括冲刷任何在先密钥域(其由在先密钥域地址选择符所标识)的高速缓存,以及冲刷转化旁视缓冲器,所述转化旁视缓冲器对针对在先密钥域的地址映射进行了高速缓存。作为对于作为“创建密钥域”指令的部分而执行初始化功能的可替换方案,能够有密钥域的服务器的CPU 1311可以执行“初始化密钥域(InitKD)”指令来冲刷高速缓存和转化旁视缓冲器。能够有密钥域的服务器的CPU 1311还可以向存储器加密引擎1315(在图13中被示出为具有完整性的总存储器加密引擎,其被标明为TMEi 1315)提供经加密的密钥域密钥以及对新密钥域进行标识的密钥域地址选择符,尽管可替换的实施例将使用存储器加密引擎(MEE))。
图14是一图解,其示出了根据本发明的一个实施例的、消费者提供针对域管理器(VMMlet)的经加密的发动映像。如以上参考图5、12和13所描述的,消费者通过使用由云服务提供商和密钥域密钥所提供的存储器定位相关的地址信息来加密域发动映像。在一个实施例中,消费者在存储器定位相关的XTS模式中、通过使用页面地址微调和密钥域密钥来加密域发动映像。
在图14中,消费者1410将经修整的VMMlet 1462(其是图10的提供商的原始VMMlet1022的经修改的版本)作为经加密的域(VM)发动映像1460的部分而发送到云服务提供商的存储器管理器1440。云服务提供商的存储器管理器1440将经加密的VM发动映像1460的经修整的VMMlet映像1462加载到已经在共享的存储器1412s内预留(作为图10的空间1014)的先前分配的存储器空间1414中。由于共享的存储器1412是未经加密的存储器页面(其中k位禁用),所以存储器管理器1440需要确保:经加密的VM发动映像被完整加载到物理存储器1412s中并且不保持驻留于高速缓存。可以通过冲刷来自高速缓存的经加密的VM发动映像1460(例如通过使用CLFLUSH指令)、或通过使用不经高速缓存的/通写/非暂时性存储器访问来实现向物理存储器1412s写入经加密的VM发动映像1460。用于写入操作的这些技术确保:消费者的经加密的映像数据被直接写入经过硬件1410的存储器加密引擎并且写入到存储器1412s中(并且不保持驻留于高速缓存)。
图15是一图解,其示出了根据本发明的一个实施例的在云服务环境的组件之间的、用于将消费者1501的经加密的域映像加载到能够有密钥域的服务器的存储器1512中的消息。如以上关于图11所述,云服务提供商的软件、诸如能够有密钥域的服务器的存储器管理器1540将消费者加密的域发动映像加载到存储器1512的未经加密的存储器页面(其中k位禁用)中。云服务提供商的软件(即存储器管理器1540)还将针对经加密的域映像的ICV写入到ICV表中。ICV表可以是受存储器加密引擎(TMEi)引擎1515所管理和保护的存储器1512的受保护的范围。通过不是存储器管理器1540的部分的软件组件向该范围的存储器地址的写入操作可以由存储器加密引擎(TMEi)1515拦截,所述存储器加密引擎(TMEi)1515可以同样地配置存储器1512中的ICV值。
类似地,存储器加密引擎(TMEi)1515可以防止软件从该受保护的存储器范围中读取ICV值,以防止恶意软件重放ICV值。仅仅存储器加密引擎(TMEi)1515可以读取ICV值,一旦它们已经被建立的话。防止软件重放ICV值防止重放动态域映像内容(例如随后被提供到域发动映像的消费者域映像的其余部分)。静态映像内容(例如域发动映像)可以被重放,因为针对静态映像内容的ICV值由消费者提供。
ICV本身提供数据和数据位置(地址)的完整性检查,并且ICV通过使用用于对ICV正检查的数据行进行加密的密钥域密钥或其衍生物来被加密钥。(例如,HMAC使用秘密密钥,如Galois/计数器模式(GCM)和IPHash所做的那样)。
在一个实施例中,所扩散的高速缓存行数据的部分拷贝利用密钥域密钥来被XTS加密,以计算安全ICV。在一个实施例中,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)。该功能性允许提供商挂起、存储以及稍后恢复VM,其重用消费者的域发动映像,而不将附加的ICV、诸如在通过在当前密钥域内执行的应用更新存储器时动态创建的那些ICV暴露给云服务提供商的软件(甚至不是存储器管理器1540)。
图16是一图解,其示出了根据本发明的一个实施例的密钥域的初始化。通过将“初始化密钥域(InitKD)”命令发布到域管理器(VMMlet)1622,能够有密钥域的服务器的存储器管理器1640可以初始化新的密钥域1650。InitKD命令使得能够有密钥域的服务器的CPU1611执行InitKD指令,所述InitKD指令使核静默、冲刷旧密钥域的高速缓存、冲刷包含旧密钥域映射的所有转化旁视缓冲器和地址空间标识符(ASID),并且利用针对密钥域地址选择符的新密钥域密钥来初始化能够有密钥域的服务器的存储器加密引擎(TMEi)。
在一个实施例中,初始化密钥域是由“创建密钥域(CreateKD)”指令所执行的动作之一。下文中对“创建密钥域(CreateKD)”指令的提及可以是指CreateKD指令,其不仅根据服务器的经公钥加密的密钥域密钥来创建密钥域,而且还通过使核静默,冲刷旧密钥域的高速缓存,冲刷包含旧密钥域映射的所有转化旁视缓冲器和地址空间标识符(ASID),并且利用针对密钥域地址选择符的新密钥域密钥来初始化能够有密钥域的服务器的存储器加密引擎(TMEi),来初始化新的域。
图17是根据本发明的一个实施例的在执行“创建密钥域”操作中能够有密钥域的服务器的CPU的操作方法的流程图。在“接收‘创建密钥域’命令与经加密的密钥域密钥”框1710中,能够有密钥域的服务器CPU接收“创建密钥域”命令,与输入参数KD Id、本地密钥域标识符(密钥域地址选择符)、以及经加密的密钥、经加密的密钥域密钥。控制继续进行到“通过使用服务器的私钥来解密经加密的密钥域密钥,并且解密可选的配置策略”框1720,其中通过使用服务器的私钥、对于云服务提供商而言未知/未暴露的秘密密钥来解密经加密的密钥域密钥。可选地,配置策略还可以被解密,这再次通过使用服务器的私钥,或可替换地,策略数据的散列值可以通过使用服务器的私钥来被解密。控制继续进行到“经解密的密钥域密钥和策略有效
Figure DEST_PATH_IMAGE003
”判定点1730。可以被评估的策略数据的示例包括预期服务器已经安装的存储器的量、服务器应当使用的加密算法、套接(socketed)的CPU的该数目、是否允许硬件调试等等。该策略数据由硬件对照着服务器的当前配置来进行比较,以确保:在使用消费者的密钥域密钥之前,服务器的配置按消费者的预期有效。如果经解密的密钥域密钥和配置策略不有效,则控制继续进行到“返回错误”框1740,其中CPU响应于“创建密钥域”命令而返回错误。
在“经解密的密钥域密钥和策略有效
Figure DEST_PATH_IMAGE003A
”判定点1730处,如果经解密的密钥域密钥和配置策略有效,则控制继续进行到“建立新密钥域”框1750。在建立新密钥域中,能够有密钥域的服务器的CPU防止其它CPU使用密钥域标识符,或以其它方式验证其它CPU没有在当前使用密钥域标识符,针对密钥域标识符而冲刷高速缓存,针对密钥域标识符而冲刷所有转化旁视缓冲器地址空间标识符,并且在存储器加密引擎中设置当前密钥域标识符和密钥域密钥。控制然后继续进行到“为新的密钥域标识符指派ASID标签并且恢复”框1760,其中新的地址空间标识符(ASID)标签被指派以用于新的密钥域标识符,并且发布“创建密钥域”命令的过程被恢复。此外,如果先前被静默的话,则所有处理器被重启用。
图18是一图解,其示出了根据本发明的一个实施例的域映像的验证。通过使用散列密钥域(HashKD)指令,能够有密钥域的服务器的存储器管理器1840的验证散列功能1846验证针对密钥域1850的域映像(例如VMMlet 1822)是正确的。域映像中的一些值将是针对机器特定的变量/修整(诸如在页面表中所使用的物理地址)的值。针对这些机器特定的变量的散列值可以由云服务提供商虚拟地重构(替代当前地址值)。当结果得到的HashKD散列值与针对映像的域管理器(VMMlet)提供商/静态部分的散列的预期值匹配的时候,消费者和云服务提供商二者对域发动映像是正确的达成一致。一些其它映像位置可包含消费者的秘密(密钥/代码/数据,例如在域映像的OS部分中)。这些位置可以被散列,但是散列值将不把存储器明文(以及因而秘密)透露给云服务提供商。散列值可以具有最小粒度,诸如不小于高速缓存行或不小于存储器的页面(例如4KB)。
当安全VM首次执行的时候,安全VM可以将HashKD功能性关到其密钥域中,因为HashKD可以在初始化时被使用以通读密钥域,从而向云服务提供商提供如下可视性:即由消费者恰当地供应域管理器(VMMlet)。否则,可不需要HashKD功能性。
图19是一图解,其示出了根据本发明的一个实施例的在云服务环境的组件之间的、用于验证域映像的消息。在第一消息中,云服务提供商软件、诸如能够有密钥域的服务器的存储器管理器1940请求将在其中安装了针对域管理器(VMMlet)的消费者经加密的发动映像的存储器位置上执行的散列密钥与(HashKD)功能。CPU 1911执行散列密钥域(HashKD)指令,从而经由高速缓存1913而向存储器加密引擎(TMEi)1915提供对将被散列的密钥域进行标识的当前地址选择符。存储器加密引擎(TMEi)1915从其中安装了经加密的发动映像的存储器位置读取经加密的数据行,并且存储器加密引擎(TMEi)1915通过使用针对由地址选择符所标识的密钥域的密钥来解密数据行。存储器加密引擎(TMEi)1915将经解密的数据发送到高速缓存1913,从而利用地址和密钥域地址选择符来对经解密的数据加标签。针对能够有密钥域的服务器的CPU 1911创建针对经解密的数据的散列值,将结果得到的散列值存储在CPU 1911的寄存器中或存储器1912的存储器位置中,并且云提供商的软件(即存储器管理器1940)验证:散列值与针对原始被提供给消费者的域映像的预期散列值相匹配。
图20是根据本发明的一个实施例的在执行“散列密钥域”操作中能够有密钥域的服务器的CPU的操作方法的流程图。在“接收散列密钥域命令”框2010处,能够有密钥域的服务器的CPU接收散列密钥域命令,与输入参数:密钥域标识符和物理地址。控制继续进行到“密钥域标识符和地址有效
Figure DEST_PATH_IMAGE002AAAA
”判定点2020,其中能够有密钥域的服务器的CPU确定密钥域标识符和物理地址是否有效。为了做出该确定,能够有密钥域的服务器的CPU可以验证:物理地址指向被填充的存储器位置,并且存在针对物理地址的页面表映射和读取许可。能够有密钥域的服务器的CPU还可以验证:密钥域标识符具有被安装在针对该密钥域标识符的存储器加密引擎(TMEi)中的对应密钥域密钥。如果密钥域标识符和物理地址不有效,则控制继续进行到“返回错误”框2030,其中错误被返回到散列密钥域命令的发布者。如果密钥域标识符和物理地址在“密钥域标识符和地址有效
Figure DEST_PATH_IMAGE002_5A
”判定点2020处有效,则控制继续进行到“在物理地址中设置密钥域标识符,设置k位,在物理地址处读取存储器位置的内容”框2040。物理地址的未被使用的位被设置成密钥域标识符,k位值被设置成1以指示:经加密的数据将读取自物理地址处的存储器位置,并且物理地址处的存储器位置的内容由存储器加密引擎(TMEi)通过使用针对由密钥域标识符所标识的密钥域的密钥域密钥来读取。当读取物理地址处的存储器位置的内容的时候,存储器加密引擎(TMEi)通过使用密钥域密钥来解密内容。存储器加密引擎(TMEi)将物理地址处的存储器位置的经解密的内容放置到高速缓存中,并且能够有密钥域的服务器的CPU通过使高速缓存中的经解密的内容散列化来计算散列值、诸如SHA2/3散列值之类的散列值。控制继续进行到“返回针对存储器内容的散列值”框2050,其中散列值被返回到HashKD命令的发布者。HashKD指令的发布者于是可以确定是否要切换到经验证的密钥域。
图21是一图解,其示出了根据本发明的一个实施例的在密钥域之间的切换。向新密钥域的切换由能够有密钥域的服务器的存储器管理器2140发起,以从一个密钥域切换到另一个。可以例如响应于针对由能够有密钥域的服务器所接收的服务的新消费者请求来发起向新密钥域的切换。已经在先向消费者提供了域管理器映像,存储器管理器2140获得经修整版本的域管理器映像(例如VMMlet 2122),其包含存储器定位相关的地址信息,诸如消费者已经经由未经加密的(k位禁用的)存储器2112所提供的入口点地址2123。存储器管理器2140向硬件2110的CPU发布“切换密钥域(SwitchKD)”命令,其使得域管理器映像(VMMlet)2122在能够有密钥域的服务器的存储器中的入口点地址2123处执行开始,从而建立密钥域2150。
在一个实施例中,在进入新密钥域之前,消费者为预期处理器状态计算HMAC值。针对所预期处理器状态的HMAC值包括针对指令指针的预期值;堆栈指针;控制寄存器(诸如控制寄存器0、3和4);以及特殊描述符表寄存器,诸如GDTR、LDTR、可关于包含域管理器映像的经加密的域发动映像的正确执行的任何MSR、以及IDTR。例如,该HMAC值将确保密钥域内的恰当执行(即中断被关断),或否则确保没有进入新的密钥域,并且没有发生密钥域之间的切换。
新密钥域内的域管理器(VMMlet)的执行可以通过使用“切换密钥域(SwitchKD)”指令来被实现。该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发布“切换KD”命令,以使得能够有密钥域的服务器的CPU 2211切换密钥域。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状态
Figure DEST_PATH_IMAGE002_6A
”判定点2320。在判定点2320处,做出以下确定:被指定为对于SwitchKD(切换KD)指令的参数的当前CPU状态和/或所提出的CPU状态是否匹配所预期的HMAC值。一些CPU状态信息、诸如指令指针是由SwitchKD(切换KD)指令设置为参数的状态。如果HMAC也匹配指令指针参数,于是SwitchKD(切换KD)将相应地在CPU中设置指令指针寄存器,从而在于该指令位置处开始执行的新密钥域中恢复。可替换地,所有CPU状态值可以是对于SwitchKD(切换KD)的参数,意味着SwitchKD(切换KD)将把所有寄存器状态填充到输入参数,如果HMAC与该提出的输入状态匹配的话。在判定点2320处,如果针对处理器状态的所预期的HMAC值不匹配针对被指定为对于SwitchKD(切换KD)指令的参数的当前CPU状态或所提出的CPU状态所计算的HMAC值,则密钥域不被切换并且错误被返回到“返回错误(不切换密钥域)”框2330中的“切换密钥域”命令的发布者。
在“所预期的HMAC值匹配CPU状态
Figure DEST_PATH_IMAGE003AA
”判定点2320处,如果针对处理器状态的所预期的HMAC值匹配针对当前CPU状态所计算的HMAC值,则控制继续进行到“切换到新密钥域”框2340。在“切换到新密钥域”框2340处,CPU流水线被冲刷,并且针对转化旁视缓冲器(TLB)的地址空间标识符(ASID)标签被设置成新密钥域标识符或TLB被冲刷。当前密钥域被设置为密钥域标识符,并且CPU寄存器被设置成匹配CPU状态输入参数值。控制然后继续进行到“分支到在由CPU状态的指令指针所指示的位置处执行指令”框2350。在框2350处,能够有密钥域的服务器的CPU分支到在由CPU状态的指令指针所指示的位置处执行指令,所述CPU状态的指令指针如被提供作为对于SwitchKD(切换KD)指令的输入参数。在完成SwitchKD(切换KD)指令的执行时,域管理器(VMMlet)在新密钥域内操作。
图24是根据本发明的一个实施例的在响应于页面未命中而执行分页结构漫步中能够有密钥域的服务器的CPU的操作方法的流程图。控制开始于“在页面未命中时,处理器漫步分页结构”框2410。在遭遇页面未命中(其中CPU尝试读取或写入的页面没有在转化旁视缓冲器内被找到)时,能够有密钥域的服务器的CPU开始漫步分页结构(诸如参考图9所描述的OS分页结构860或参考图9所描述的OS分页结构960)。例如,能够有密钥域的服务器的CPU可以通过针对对于分页结构的基本地址的指针而读取控制寄存器3(CR3)而开始。控制然后继续进行到“分页结构误配置
Figure DEST_PATH_IMAGE003AAA
”判定点2420,其中CPU确定分页结构是否如预期那样被配置。例如,CPU确定是否已经发生对于操作系统的页面故障,或者已经发生对于域管理器(VMMlet)的VMExit。这些故障仍在与引起故障的域(VM)映像相同的密钥域内。如果分页结构没有如预期那样被配置,则控制继续进行到“硬故障,CPU报告错误”框2430,其中CPU引起硬故障,并且向遭遇页面未命中的过程报告错误。
在“分页结构误配置
Figure DEST_PATH_IMAGE002_7A
”判定点2420处,如果分页结构被恰当地配置,则控制继续进行到“确定被指派给当前密钥域的ASID标签”框2440。确定被指派给当前密钥域的地址空间标识符(ASID)标签,并且控制继续进行到“K位被设置
Figure DEST_PATH_IMAGE002_8A
”判定点2450。如果没有设置ASID标签的K位,则控制继续进行到“在K位关的情况下使用按现状的地址来填充TLB”框2460。在框2460处,能够有密钥域的服务器的CPU使得转化旁视缓冲器(TLB)实际上被物理地址填充。使物理地址按现状使得数据能够被直接读取自未经加密的存储器,而不使用密钥域密钥。
在“K位被设置
Figure DEST_PATH_IMAGE002_9A
”判定点2450处,如果设置了ASID标签的k位,则控制继续进行到“得到当前密钥域并且利用密钥域标识符来取代上部物理地址位”框2470。根据通过“切换密钥域(SwitchKD)”指令所设置的内部处理器状态来确定当前密钥域,所述“切换密钥域(SwitchKD)”指令将当前密钥域设置成新密钥域的密钥域标识符,如参考图23所描述的。利用针对当前密钥域的密钥域标识符/选择符来取代物理地址中的上部位,其中k位(其在一个实施例中是最上部的位)被启用。控制然后继续进行到“利用地址和ASID标签来设置转化旁视缓冲器”框2480,其中利用针对当前密钥域的物理地址(包括密钥域选择符和被启用的k位,或k位=1)和ASID标签来设置转化旁视缓冲器。
图25是一图解,其示出了根据本发明的一个实施例的域管理器(VMMlet)的增长。可能需要域管理器(VMMlet)的增长,例如以包括附加的存储器,用于在已经加载了消费者的域发动映像并且域管理器(VMMlet)正执行之后加载消费者的VM映像的其余部分。一旦具有消费者秘密密钥2523的安全域管理器(VMMlet)2522正运行在密钥域2550中,消费者就可以将消费者的VM映像2532的其余部分安全地传送到域管理器(VMMlet)2522。消费者的VM映像2532的其余部分可以包括例如(多个)操作系统、(多个)应用、脚本、或其它代码。
通过使用被给予云服务提供商的原始经加密的域发动映像的消费者的秘密密钥2523,在消费者和域管理器(VMMlet)2522之间的安全通信信道可以由与消费者的网络的输送层安全性/安全套接层(TLS/SSL)连接来使能。换言之,如果原始经加密的域发动映像具有操作系统和消费者的秘密密钥,所述操作系统具有在域管理器(VMMlet)以上的OpenSSL堆栈,则该OpenSSL软件堆栈可以被执行以从消费者的网络检索消费者的VM映像2532的其余部分。
在域管理器(VMMlet)2522以上运行的操作系统可以支持全容积存储加密,使得操作系统可以在来自k位关(共享)信道的经加密的页面、文件等等中安全地分页,其中存储器管理器2540充当居间者。一旦原始经加密的域发动映像被加载到存储器中并且在执行,域管理器(VMMlet)2522就可以允许其它软件、诸如操作系统通过使用所期望的任何安全方法来在来自消费者的附加信息中分页。
针对消费者的VM映像2532的其余部分的存储器页面的添加可以使得域管理器(VMMlet)2522需要附加分配存储器。在一个实施例中,域管理器(VMMlet)2522可以通过从存储器管理器2540请求更多存储器而增长。存储器管理器2540可以将附加的存储器分配到域管理器(VMMlet)2522,如由“分配存储器”动作2501所示。该附加的存储器使得消费者能够执行只写操作,诸如非暂时性的移动(MOVNT)操作(用于在不首先读取存储器的情况下向存储器写入的非高速缓存的写入组合操作),用以在来自消费者或消费者授权的第三方的域/VM工作负载映像中写入附加的页面。例如,消费者可以经由安全连接向域(VMMlet)2522提供VM映像2532的其余部分,包括(多个)操作系统、(多个)应用、脚本或其它代码。
图26是一图解,其示出了根据本发明的一个实施例的在云服务环境的组件之间的、用于使域管理器(VMMlet)增长的消息。消费者2601将VM映像的其余部分发送到云服务提供商软件,诸如能够有密钥域的服务器的存储器管理器2640。在一个实施例中,VM映像的其余部分经由输送层安全性(TLS)/安全套接层(SSL)通信会话从消费者传送到运行的域管理器(VMMlet),所述通信会话是从使用消费者秘密密钥(诸如图25的密钥2523)的消费者到运行的域映像的TLS堆栈。
如以上参考图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)。通过CPU 2611的这些动作由图26的“SwitchKD(或在另一CPU/线程上运行的KD)”动作来示出。
运行的域管理器(VMMlet)将来自未经加密的存储器的数据(包括VM映像的其余部分)拷贝到作为消费者VM的密钥域的部分的经加密的存储器。如由“读取数据”动作所示,存储器加密引擎(TMEi)2615从未经加密的存储器读取数据。在“针对具有共享的!k KD选择符的地址来读取数据”动作中,运行在CPU 2611上的域管理器(VMMlet)从由密钥域地址选择符所标识的未经加密的存储器位置读取数据,所述密钥域地址选择符与数据一起在未经加密的存储器中被提供。
运行的域管理器(VMMlet)可以处理数据、在软件中解密数据、执行完整性检查等等。例如,运行的域管理器(VMMlet)可以利用在未经加密的存储器中所提供的密钥域地址选择符,来请求存储器加密引擎(TMEi)2615将经加密的数据写入到存储器地址。如在图26的“k位开启的存储器访问具有被设置成KD选择符的地址;在向新存储器地址的首次写入上使用MOVNT指令”动作中所示,CPU 2611将经加密的数据和相关联的完整性检查值写入到在密钥域标识符/选择符中所指定的往存储器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上。VM2730请求附加的存储器,如在VM 2730与存储器管理器2740之间的“请求更多存储器”动作中所示。(实际上,作为在VMMlet顶部上运行的VM 2730的部分的操作系统可能要求更多存储器。操作系统可以使得VMExit退出VM 2730,从而调用主机VMMlet,所述主机VMMlet然后从云提供商的存储器管理器2740请求更多存储器。)在CPU2上运行的域管理器(VMMlet)经由共享的未经加密的存储器(其中k位禁用)、代表消费者的VM 2730来写入请求,如由VM2730与存储器加密引擎(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上的VM 2730从共享的存储器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执行MOVNT指令以将数据写入到VM的密钥域中新分配的存储器,如由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请求”动作中将消息放置在高速缓存2813中以被读取到未经加密的(k位禁用的)存储器2812中。存储器加密引擎(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,密钥域从VM2830密钥域切换到存储器管理器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向存储器2812写入响应数据,包括被分配用于VM 2830的空闲存储器位置的地址。响应于来自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密钥域还原所保存的处理器状态。
在切换到存储器管理器2840密钥域之前在先执行该VM 2830的时候,VM 2830已经请求了附加存储器。在存储器加密引擎(TMEi)2815与存储器2812之间的“读取响应数据”动作中,存储器加密引擎(TMEi)2815读取针对附加存储器请求的响应数据,并且在高速缓存2813中提供响应数据以用于VM 2830。VM 2830在VM 2830与存储器加密引擎(TMEi)2815之间的“更新VM的KD中的页面表”中更新VM 2830密钥域中的页面表以反映新分配的存储器位置。在存储器加密引擎(TMEi)2815与存储器2812之间的“写入经加密的数据和ICV”动作中,存储器加密引擎(TMEi)2815将经加密的数据(经更新的页面表)和完整性检查值写入到存储器2812。
为了确立新分配的存储器的所有权,在VM 2830与存储器加密引擎(TMEi)2815之间的“MOVNT到VM的KD中的新分配的存储器”动作中,VM 2830于是向VM的密钥域中的新分配的存储器执行MOVNT操作(或在写入到存储器位置之前不读取存储器位置的内容的其它写入操作)。MOVNT操作将VM 2830确立为新分配的存储器的所有者。在存储器加密引擎(TMEi)2815与存储器2812之间的“写入经加密的数据和ICV”动作中,存储器加密引擎(TMEi)2815将经加密的数据和ICV写入到存储器2812。作为该写入操作的部分,存储器加密引擎(TMEi)2815为VM 2830密钥域中新分配的存储器计算新的完整性检查值。新的完整性检查值将确保:VM 2830密钥域密钥可以用于解密新分配的存储器的内容。
图29是一图解,其示出了运行的域管理器(VMMlet)2922。在运行域管理器(VMMlet)2922之前,能够有密钥域的服务器的存储器管理器2940在执行针对域管理器(VMMlet)的域发动映像之前验证处理器状态的散列。一旦验证了处理器状态,就执行域发动映像以运行域管理器(VMMlet)。
存储器管理器2940经由未经加密的(k位禁用的)存储器2912来将命令发布到运行的域管理器(VMMlet)2922。类似地,能够有密钥域的服务器的硬件2910经由未经加密的(k位禁用的)存储器2912而将直接存储器访问(DMA)请求发布到运行的域管理器(VMMlet)。响应于接收这些命令或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)加密软件中的页面(包括完整性元数据)(例如通过使用Intel® AES新指令(AESNI)来用于加速AES加密),更新页面表和扩展的页面表,并且通过k位禁用的存储器来发送经加密的页面以用于存储或迁移。
关于输入/输出操作,可以使用直接指派或虚拟化设备模型。用于DMA的k位经指定的未经加密的存储器区和存储器映射的输入/输出(MMIO)没有被加密。虽然直接指派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图示了作为存储器加密引擎的硬件功能来根据物理存储器地址而确定完整行位置和槽隙。未被使用的地址位通过高速缓存被传递,但是它们未被使用,因为它们对应于未经填充的物理存储器。未被使用的位用于编码地址中的密钥域(KD)选择符信息。可以基于数据行的对于存储器定位相关的加密未被使用的地址位和对应的完整性检查值来选择不同的密钥。
根据实施例,物理存储器地址3100可以用于确定以上所讨论的密钥或微调,和/或完整性检查行3112和槽隙3114(3114a-3114h)以用于与数据行3116(3116a-3116h)相关联的完整性值。物理存储器地址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中的每一个的最低有效位所定义的值可以映射到适当的槽隙3114a-3114h,其将适应针对数据行3116a-3116h中每一个的特定完整性值,由箭头的位置所指示。
通常,适当完整性检查行和适当槽隙的选择可以基于函数,诸如(D-Dstart)/8 +Istart,其中从将被访问的数据行的地址D中减去数据存储器区的起始的地址Dstart,其中Istart是完整性值存储器地址空间的起始,并且其中除以8的整数除法可以通过使地址偏移向右按3移位(或选择顶部位减去前3位)来进行。此外,一旦取出了适当的完整性检查行,针对适当槽隙的偏移可以由(D-Dstart)%8来确定,其中模运算可以选择地址的最低有效3位。应当理解到,虽然3位可以用于从完整性检查行上的8个槽隙进行选择,但是完整性检查行可以在大小上不同(例如一半的大小),使得4位可以用于从每完整性检查行的16个槽隙中进行选择,以在完整性值开销上有所节省,诸如此类。
中间位和/或最低有效位还可以被用作对于被存储在享有特权/安全存储器位置中的所指派位置的阵列的索引,以标识映射。还可以存在隐式的映射,其中第一完整性检查行3112的第一槽隙3114a可以自动被选择以用于具有地址0的数据行3116a,第一完整性检查行3112的第二槽隙3114b可以自动被选择以用于具有地址1的数据行3116b,诸如此类。可以使用任何函数、映射和/或指派,使得具有地址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,所述应用处理器3210可以是用于除了用户应用、诸如许多众所周知的社交媒体和多媒体app(应用)之外执行OS和其它系统软件的系统的主CPU。应用处理器3210可以此外被配置成为设备执行各种其它计算操作。
进而,应用处理器3210可以耦合到用户接口/显示器3220,例如触摸屏显示器。另外,应用处理器3210可以耦合到存储器系统,包括非易失性存储器、即闪速存储器3230和系统存储器、即DRAM 3235。在一些实施例中,闪速存储器3230可以包括安全部分3232,其中可以存储和操作密钥、其它秘密和其它敏感信息。这些存储装置中的一个或多个可以存储用于提供本文中所述的安全公共云的信息。如此外所见的,应用处理器3210还耦合到捕获设备3245,诸如一个或多个图像捕获设备,其可以记录视频和/或静止图像。
仍参考图32,通用集成电路卡(UICC)3240包括订户标识模块,所述订户标识模块在一些实施例中包括安全存储装置3242以存储安全标识信息。系统3200可以此外包括安全处理器3250,所述安全处理器3250可以实现受信执行环境(TEE),并且所述安全处理器3250可以耦合到应用处理器3210。此外,应用处理器3210可以实现安全操作模式,诸如对给定指令集架构的Intel®软件防护扩展(SGX),以及用于托管受信执行环境(TEE)的电路。安全处理器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,还可以实现局部无线通信,诸如根据Bluetooth™或IEEE 802.11标准。
现在参考图33,示出的是根据本发明的另一实施例的系统的框图。如图32中所示,多处理器系统3300可以被实现为点对点互连系统,诸如能够有密钥域的服务器系统。系统3300包括经由点对点互连3350所耦合的第一处理器3370与第二处理器3380。如图5中所示,处理器3370和3380中的每一个可以是多核处理器,诸如SoC,包括第一和第二处理器核(即处理器核3374a和3374b,以及处理器核3384a和3384b),尽管潜在地在处理器中可存在多得多的核。另外,处理器3370和3380各自可以包括安全引擎3375和3385以执行如本文中所述的安全公共云操作。
仍参考图33,第一处理器3370此外包括存储器管理器中心(MCH)3372以及点对点(P-P)接口3376和3378。类似地,第二处理器3380包括MCH 3382以及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可以被耦合到第一总线3316,连同总线桥3318,所述总线桥3318将第一总线3316耦合到第二总线3320。各种设备可以耦合到第二总线3320,包括例如键盘/鼠标3322、通信设备3326和数据存储单元3328,诸如非易失性存储装置或其它大容量存储设备。如所见的,数据存储单元3328可以包括代码3330,在一个实施例中包括用于执行本文中所述的安全公共云操作的代码。如此外所见的,数据存储单元3328还包括受信存储装置3329,用以存储将受保护的敏感信息。此外,音频I/O 3324可以耦合到第二总线3320。
实施例可以被使用在如下环境中:在所述环境中,IoT设备可以包括可穿戴设备或其它小形状因数IoT设备,诸如致动器和/或传感器。现在参考图34,示出的是根据另一实施例的模块3400的框图。在一个特定实现方式中,模块3400可以是Intel® Curie™模块,其包括被适配在单个小型模块内的多个组件。模块3400可以被配置成参与本文中所述的安全公共云操作。如所见的,模块3400包括核3410(当然,在其它实施例中,可以存在多于一个核)。这样的核可以是相对低复杂度的有序核,诸如基于Intel Architecture® Quark™设计。在一些实施例中,核3410可以实现受信执行环境。核3410耦合到各种组件、包括传感器中心3420,其可以被配置成与多个传感器3480、诸如一个或多个生物计量、运动环境或其它传感器交互。连同非易失性存储装置3440一起,存在功率递送电路3430。在实施例中,该电路可以包括可再充电的电池和再充电电路,其在一个实施例中可以无线地接收充电功率。可存在一个或多个输入/输出(IO)接口3450,诸如与USB/SPI/I2C/GPIO协议中的一个或多个兼容的一个或多个接口。另外,存在可以是Bluetooth™低能量或其它短程无线收发器的无线收发器3490,以使能实现如本文中所述的无线通信。理解到,在不同的实现方式中,IoT模块可以采取许多其它形式,其与典型的通用CPU或GPU相比具有小的形状因数、低功率需求、有限指令集、相对缓慢的计算吞吐量、或上述中任一个。
以下示例关于另外的实施例。
在示例1中,一种用于在公共云环境中保护消费者数据的装置包括:处理器;耦合到所述处理器的存储器;以及耦合到所述处理器和所述存储器的存储器加密逻辑,其中所述处理器被配置成执行指令以在所述存储器中创建密钥域,其中所述指令包括经加密的密钥域密钥,所述密钥域包括所述存储器的多个存储器位置,执行所述指令对经加密的密钥域密钥进行解密以产生针对所述密钥域的密钥域密钥,并且将所述密钥域密钥提供给所述存储器加密逻辑,并且所述存储器加密逻辑被配置成当从所述密钥域的第一存储器位置读取第一数据的时候通过使用所述密钥域密钥来解密所述第一存储器位置的所述第一数据,并且所述存储器加密逻辑被配置成当向第二存储器位置写入第二数据的时候通过使用所述密钥域密钥来加密所述第二存储器位置的所述第二数据。
在示例2中,所述指令此外包括针对所述密钥域的密钥域标识符,所述处理器被配置成将物理地址的未被使用的位设置成所述密钥域标识符,所述物理地址标识所述密钥域的所述多个存储器位置中的存储器位置,所述处理器被配置成将所述物理地址的一位设置成对将通过使用所述密钥域密钥被读取的物理地址处的存储器位置的经加密的内容进行指示的值,所述存储器加密逻辑被配置成通过使用所述密钥域密钥来从所述物理地址处的存储器位置读取经加密的内容以产生经解密的密钥域内容,并且所述处理器被配置成执行所述经解密的密钥域内容。
在示例3中,所述经解密的密钥域内容包括域映像,所述域映像包括当所述密钥域是当前密钥域时将被执行的代码,并且由所述域映像外部的代码发布用于执行指令以创建密钥域的命令。
在示例4中,示例3的处理器此外被配置成执行第二指令以验证经加密的密钥域内容,而同时维持所述密钥域密钥以及所述经解密的密钥域内容的机密性,其中由所述密钥域映像外部的代码发布用于执行第二指令的命令。
在示例5中,所述第二指令包括针对所述密钥域的密钥域标识符,并且所述处理器被配置成散列化所述经解密的密钥域内容以产生散列结果。
在示例6中,示例5的处理器此外被配置成:执行第三指令以从第一密钥域切换到第二密钥域,其中执行所述第三指令使得所述处理器在属于所述第二密钥域的存储器中的经授权的存储器位置处执行代码,其中所述经授权的存储器位置的内容随后利用针对所述第二密钥域的第二密钥域密钥来被加密或解密。
在示例7中,维持所述密钥域密钥的机密性包括将所述密钥域密钥提供给所述存储器加密逻辑,作为经加密的密钥域密钥,使得在所述处理器上执行的软件不能访问所述密钥域密钥,以及维持所述经解密的密钥域内容的机密性包括将所述经加密的密钥域内容提供给所述存储器加密逻辑,作为经加密的密钥域内容,使得在所述处理器上执行的软件不能访问所述经解密的密钥域内容。
注意到,以上处理器可以通过使用各种手段来被实现。在示例中,处理器包括被并入在用户装备触摸使能的设备中的芯片上系统(SoC)。在另一示例中,一种系统包括显示器和存储器,并且包括以上示例中一个或多个示例的处理器。
在示例8中,一种用于在公共云环境中保护消费者数据的方法包括:响应于消费者针对服务的请求而向所述消费者提供域管理器映像;分配存储器的一部分以用于所述域管理器映像,并且向所述消费者提供针对存储器的该部分的存储器定位相关的地址信息;将所述消费者所提供的经加密的域发动映像加载到存储器的该部分中;向处理器发送命令以创建密钥域,其中所述命令包括经加密的密钥域密钥,所述密钥域包括所述存储器的多个位置,并且所述密钥域的每个存储器位置通过针对所述密钥域的密钥域密钥来被加密;将第二命令发送到所述处理器以密码地验证所述经加密的域发动映像包括所述域管理器映像;以及如果所述处理器验证了所述经加密的域发动映像包括所述域管理器映像则执行通过对所述经加密的域发动映像进行解密所产生的域发动映像。
在示例9中,对所述经加密的域发动映像进行解密以产生域发动映像包括比较所述域发动映像的内容与所述消费者为所述经加密的域发动映像所提供的完整性检查值,并且如果所述域发动映像的内容不匹配所述完整性检查值,则中止所述域发动映像的执行。
在示例10中,示例8的处理器此外响应于所述第二命令而验证所述经加密的域发动映像被加载到其中的存储器部分的入口点地址匹配所述存储器定位相关的地址信息中的所指定的入口点地址。
在示例11中,示例8的方法此外包括:将第三命令发送到所述处理器以从第一密钥域切换到第二密钥域,其中切换到所述第二密钥域使得所述处理器在属于所述第二密钥域的存储器中的经授权的存储器位置处执行代码,其中所述经授权的存储器位置的内容随后利用针对所述第二密钥域的第二密钥域密钥来被加密或解密。
在示例12中,在切换到所述第二密钥域之前,所述处理器确定当前处理器状态是否匹配针对所述第二密钥域的预期处理器状态,并且如果当前处理器状态匹配所述预期处理器状态则切换到所述第二密钥域。
在示例13中,针对所述第二密钥域的预期处理器状态被提供给所述处理器作为由针对所述第二密钥域的预期处理器状态的安全散列函数所计算的散列值,并且所述散列值通过使用所述第二密钥域密钥而被加密钥。
在示例14中,示例8的方法此外包括:从所述消费者接收域映像的其余部分,其中所述经加密的域发动映像包括所述域映像的域管理器部分;通过使用被包括在所述经加密的域发动映像中的秘密密钥来解密或验证所述域映像的其余部分的至少一页面;以及执行所述域映像的其余部分。
在示例15中,示例8的方法此外包括:对所述经加密的密钥域密钥进行解密以产生密钥域密钥;通过使用所述密钥域密钥来执行所述密钥域的对应存储器位置的相应数据的读取/写入操作;以及当执行所述读取/写入操作的时候,确定针对所述密钥域的对应存储器位置的相应数据的完整性检查值。
在示例16中,一种用于在公共云环境中保护消费者数据的装置包括:用于响应于消费者针对服务的请求而向所述消费者提供域管理器映像的构件;用于分配存储器的一部分以用于所述域管理器映像并且向所述消费者提供针对存储器的该部分的存储器定位相关的地址信息的构件;用于将所述消费者所提供的经加密的域发动映像加载到存储器的该部分中的构件;用于向处理器发送命令以创建密钥域的构件,其中所述命令包括经加密的密钥域密钥,所述密钥域包括所述存储器的多个位置,并且所述密钥域的每个存储器位置通过针对所述密钥域的密钥域密钥来被加密;用于将第二命令发送到所述处理器以密码地验证所述经加密的域发动映像包括所述域管理器映像的构件;以及用于如果所述处理器验证了所述经加密的域发动映像包括所述域管理器映像则执行通过对所述经加密的域发动映像进行解密所产生的域发动映像的构件。
在示例17中,对所述经加密的域发动映像进行解密以产生域发动映像包括比较所述域发动映像的内容与所述消费者为所述经加密的域发动映像所提供的完整性检查值,并且如果所述域发动映像的内容不匹配所述完整性检查值,则中止所述域发动映像的执行。
在示例18中,示例16或17的处理器此外响应于第二命令而验证所述经加密的域发动映像被加载到其中的存储器部分的入口点地址匹配所述存储器定位相关的地址信息中的所指定的入口点地址。
在示例19中,权利要求16的装置此外包括:用于将第三命令发送到所述处理器以从第一密钥域切换到第二密钥域的构件,其中切换到所述第二密钥域使得所述处理器在属于所述第二密钥域的存储器中的经授权的存储器位置处执行代码,其中所述经授权的存储器位置的内容随后利用针对所述第二密钥域的第二密钥域密钥来被加密或解密。
在示例20中,在切换到所述第二密钥域之前,所述处理器确定当前处理器状态是否匹配针对所述第二密钥域的预期处理器状态,并且如果当前处理器状态匹配所述预期处理器状态则切换到所述第二密钥域。
在示例21中,针对所述第二密钥域的预期处理器状态被提供给所述处理器作为由针对所述第二密钥域的预期处理器状态的安全散列函数所计算的散列值,并且所述散列值通过使用所述第二密钥域密钥而被加密钥。
在示例22中,示例16的装置此外包括:用于从所述消费者接收域映像的其余部分的构件,其中所述经加密的域发动映像包括所述域映像的域管理器部分;用于通过使用被包括在所述经加密的域发动映像中的秘密密钥来解密或验证所述域映像的其余部分的至少一页面的构件;以及用于执行所述域映像的其余部分的构件。
在示例23中,示例16的装置此外包括:用于对所述经加密的密钥域密钥进行解密以产生密钥域密钥的构件;以及用于通过使用所述密钥域密钥来执行所述密钥域的对应存储器位置的相应数据的读取/写入操作的构件;以及用于当执行所述读取/写入操作的时候确定针对所述密钥域的对应存储器位置的相应数据的完整性检查值的构件。
在示例24中,一种计算机可读介质包括计算机可读指令,其当被执行的时候用于实现如在示例8-15中任一项中所述的方法。
在示例25中,一种装置包括用于执行如在示例8-15中任一项中所述的方法的构件。
在示例26中,一种用于在公共云环境中保护消费者数据的装置包括:处理器;耦合到所述处理器的存储器;以及耦合到所述处理器和所述存储器的存储器加密逻辑,其中所述处理器被配置成执行指令以在所述存储器中创建密钥域,其中所述指令包括经加密的密钥域密钥,所述密钥域包括所述存储器的多个存储器位置,执行指令对所述经加密的密钥域密钥进行解密以产生所述密钥域密钥并且将所述密钥域密钥提供给所述存储器加密逻辑,并且当向对应的存储器位置写入相应数据的时候所述存储器加密逻辑通过使用所述密钥域密钥来加密所述密钥域的对应存储器位置的相应数据。
在示例27中,所述处理器此外被配置成执行第二指令来通过散列化所述多个存储器位置的内容以产生散列结果并且比较所述散列结果与预期的散列结果,来验证所述密钥域,其中当所述散列结果匹配所述预期的散列结果的时候,所述密钥域得以验证。
在示例28中,所述处理器此外被配置成执行第三指令以从第一密钥域切换到第二密钥域,其中所述存储器中的第一存储器位置属于所述第一密钥域和所述第二密钥域二者,当所述第一密钥域是当前密钥域的时候,利用针对所述第一密钥域的第一密钥域密钥来加密或解密所述第一存储器位置的内容,并且当所述第二密钥域是当前密钥域的时候,利用针对所述第二密钥域的第二密钥域密钥来加密或解密所述第一存储器位置的内容。
注意到,以上处理器可以通过使用各种手段来被实现。在示例中,处理器包括被并入在用户装备触摸使能的设备中的芯片上系统(SoC)。在另一示例中,一种系统包括显示器和存储器,并且包括以上示例中一个或多个示例的处理器。
在示例29中,一种用于在公共云环境中保护消费者数据的方法包括:响应于从云服务提供商请求服务而接收域管理器映像和存储器定位相关的地址信息;验证所述域管理器映像;标识和加密密钥域密钥,其中所述密钥域密钥将被用于对被存储在密钥域中的数据进行加密,并且所述密钥域包括能够有密钥域的服务器的存储器的多个存储器位置;使用所述密钥域密钥和所述存储器定位相关的地址信息来加密域发动映像使得所述经加密的域发动映像被密码地绑定到所述密钥域的至少一个存储器位置;将所述经加密的域发动映像和所述经加密的密钥域密钥发送到所述能够有密钥域的服务器,其中所述能够有密钥域的服务器的处理器执行指令以创建所述密钥域。
在示例30中,所述存储器定位相关的地址信息包括所述能够有密钥域的服务器的存储器中的入口点地址;并且所述经加密的域发动映像被密码地绑定以在所述入口点地址处开始执行。
在示例31中,所述经加密的发动映像包括所述域管理器映像;并且所述存储器定位相关的地址信息包括页面表结构,所述页面表结构将通过执行所述域管理器映像所创建的域管理器的虚拟地址映射到所述密钥域的物理存储器位置。
在示例32中,所述存储器定位相关的地址信息包括在所述能够有密钥域的服务器的处理器能够切换到所述密钥域之前存在的预期处理器状态;并且如果所述预期处理器状态匹配所述处理器的当前处理器状态,则所述处理器切换到所述密钥域。
在示例33中,示例4的方法此外包括修改所述域管理器映像以包括针对由消费者域映像的其余部分所提供的功能的秘密密钥,其中所述消费者域映像的第一部分和经修改的域映像被包括在所述经加密的域发动映像中。
在示例34中,对所述密钥域密钥进行加密包括利用所述能够有密钥域的服务器的公钥来对所述密钥域密钥进行加密,并且所述命令包括经加密的密钥域密钥。
在示例35中,执行指令以创建所述密钥域包括通过使用所述能够有密钥域的服务器的私钥来对所述经加密的密钥域密钥进行解密,以及将所述密钥域密钥提供给与所述能够有密钥域的服务器的处理器和存储器相关联的存储器加密引擎,以及当从所述密钥域的第一存储器位置读取第一数据的时候,所述存储器加密引擎通过使用所述密钥域密钥来对被存储在所述第一存储器位置中的所述第一数据进行解密。
在示例36中,当第二数据被写入到所述密钥域的第二存储器位置的时候,所述存储器加密引擎通过使用所述密钥域密钥来加密所述第二数据。
在示例37中,示例29的方法此外包括使用所述密钥域密钥来计算针对所述密钥域的至少一个存储器位置的完整性检查值;以及将所述完整性检查值发送到所述能够有密钥域的服务器。
在示例38中,示例29的方法此外包括经由所述能够有密钥域的服务器的存储器的共享区而将消息发送到在所述密钥域外部执行的域管理器。
在示例39中,一种用于在公共云环境中保护消费者数据的方法包括:响应于消费者针对服务的请求而向所述消费者提供域管理器映像;分配存储器的一部分以用于所述域管理器映像,并且向所述消费者提供针对存储器的该部分的存储器定位相关的地址信息;将所述消费者所提供的经加密的域发动映像加载到存储器的该部分中;执行所述经加密的域发动映像;以及向耦合到所述存储器的处理器发送命令以创建密钥域,其中所述命令包括经加密的密钥域密钥,所述密钥域包括所述存储器的多个位置,并且所述密钥域的每个存储器位置将通过所述密钥域密钥来被加密。
在示例40中,示例39的方法此外包括:向所述处理器发送命令以验证所述经加密的域发动映像包括所述域管理器映像并且针对所述经加密的域发动映像被加载到其中的存储器部分的入口点地址匹配在所述存储器定位相关的地址信息中所指定的指定入口点地址;以及如果所述处理器验证了所述经加密的域发动映像包括所述域管理器映像并且所述入口点地址匹配所指定的入口点地址则执行所述域管理器映像。
在示例41中,示例39的方法此外包括向所述处理器发送命令以从所述密钥域切换到第二密钥域,其中所述处理器执行指令以确定所述处理器的当前处理器状态是否匹配预期处理器状态,并且如果当前处理器状态匹配所述预期处理器状态则切换到所述第二密钥域。
在示例42中,示例39的方法此外包括向所述处理器发送命令以从所述密钥域切换到存储器管理器密钥域,其中所述处理器执行指令以确定所述处理器的当前处理器状态是否匹配预期处理器状态,并且如果当前处理器状态匹配所述预期处理器状态则切换到所述存储器管理器密钥域。
在示例43中,权利要求39的方法此外包括:从所述消费者接收消费者域映像的其余部分,其中所述经加密的域发动映像包括所述消费者域映像的域管理器部分;以及通过使用被包括在所述经加密的域发动映像中的秘密密钥来验证所述消费者域映像的其余部分的至少一页面。
在示例44中,一种用于在公共云环境中保护消费者数据的计算机可读介质,其包括代码,所述代码当被执行的时候使得机器执行以上示例中任一个的方法。
在示例45中,一种用于在公共云环境中保护消费者数据的装置,其包括用于执行以上示例中任一个的方法的构件。
在示例46中,至少一个计算机可读介质包括指令,所述指令如果被处理器执行则使得计算机:响应于从云服务提供商请求服务而接收域管理器映像和存储器定位相关的地址信息;验证所述域管理器映像;标识和加密密钥域密钥,其中所述密钥域密钥将被用于对被存储在密钥域中的数据进行加密,并且所述密钥域包括能够有密钥域的服务器的存储器的多个存储器位置;使用所述密钥域密钥和所述存储器定位相关的地址信息来加密域发动映像使得所述经加密的域发动映像被密码地绑定到所述密钥域的至少一个存储器位置;以及将所述经加密的域发动映像和所述经加密的密钥域密钥发送到所述能够有密钥域的服务器,其中所述能够有密钥域的服务器的处理器执行指令以创建所述密钥域。
在示例47中,所述存储器定位相关的地址信息包括所述能够有密钥域的服务器的存储器中的入口点地址;并且所述经加密的域发动映像被密码地绑定以在所述入口点地址处开始执行。
在示例48中,所述经加密的发动映像包括所述域管理器映像;并且所述存储器定位相关的地址信息包括页面表结构,所述页面表结构将通过执行所述域管理器映像所创建的域管理器的虚拟地址映射到所述密钥域的物理存储器位置。
在示例49中,所述存储器定位相关的地址信息包括在所述能够有密钥域的服务器的处理器能够切换到所述密钥域之前存在的预期处理器状态;并且如果所述预期处理器状态匹配所述处理器的当前处理器状态,则所述处理器切换到所述密钥域。
在示例50中,示例46的指令此外使得计算机:修改所述域管理器映像以包括针对由消费者域映像的其余部分所提供的功能的秘密密钥,其中所述消费者域映像的第一部分和经修改的域映像被包括在所述经加密的域发动映像中。
在示例51中,对所述密钥域密钥进行加密包括利用所述能够有密钥域的服务器的公钥来对所述密钥域密钥进行加密,并且所述命令包括经加密的密钥域密钥。
在示例52中,执行指令以创建所述密钥域包括:通过使用所述能够有密钥域的服务器的私钥来对所述经加密的密钥域密钥进行解密,以及将所述密钥域密钥提供给与所述能够有密钥域的服务器的处理器相关联的存储器加密引擎,以及当从所述密钥域的第一存储器位置读取第一数据的时候,所述存储器加密引擎通过使用所述密钥域密钥来对被存储在所述第一存储器位置中的所述第一数据进行解密。
在示例53中,当第二数据被写入到所述密钥域的第二存储器位置的时候,所述存储器加密引擎通过使用所述密钥域密钥来加密所述第二数据。
在示例54中,示例46的指令此外使得计算机:使用所述密钥域密钥来计算针对所述密钥域的至少一个存储器位置的完整性检查值;以及将所述完整性检查值发送到所述能够有密钥域的服务器。
在示例55中,示例46的指令此外使得计算机经由所述能够有密钥域的服务器的存储器的共享区而将消息发送到在所述密钥域外部执行的域管理器。
在示例56中,至少一个计算机可读介质包括指令,所述指令如果被处理器执行则使得计算机:响应于消费者针对服务的请求而向所述消费者提供域管理器映像;分配存储器的一部分以用于所述域管理器映像,并且向所述消费者提供针对存储器的该部分的存储器定位相关的地址信息;将所述消费者所提供的经加密的域发动映像加载到存储器的该部分中;执行所述经加密的域发动映像;以及向耦合到所述存储器的处理器发送命令以创建密钥域,其中所述命令包括经加密的密钥域密钥,所述密钥域包括所述存储器的多个位置,并且所述密钥域的每个存储器位置将通过所述密钥域密钥来被加密。
在示例57中,所述指令此外使得计算机:向所述处理器发送命令以验证所述经加密的域发动映像包括所述域管理器映像并且针对所述经加密的域发动映像被加载到其中的存储器部分的入口点地址匹配在所述存储器定位相关的地址信息中所指定的指定入口点地址;以及如果所述处理器验证了所述经加密的域发动映像包括所述域管理器映像并且所述入口点地址匹配所指定的入口点地址则执行所述域管理器映像。
在示例58中,所述指令此外使得计算机:向所述处理器发送命令以从所述密钥域切换到第二密钥域,其中所述处理器执行指令以确定所述处理器的当前处理器状态是否匹配预期处理器状态,并且如果当前处理器状态匹配所述预期处理器状态则切换到所述第二密钥域。
在示例59中,所述指令此外使得计算机:向所述处理器发送命令以从所述密钥域切换到存储器管理器密钥域,其中所述处理器执行指令以确定所述处理器的当前处理器状态是否匹配预期处理器状态,并且如果当前处理器状态匹配所述预期处理器状态则切换到所述存储器管理器密钥域。
在示例60中,所述指令此外使得计算机:从所述消费者接收消费者域映像的其余部分,其中所述经加密的域发动映像包括所述消费者域映像的域管理器部分;以及通过使用被包括在所述经加密的域发动映像中的秘密密钥来验证所述消费者域映像的其余部分的至少一页面。
在示例61中,公共云服务的消费者可以控制在其中处理消费者数据的云环境。在另一示例中,消费者可以提供代码来在云服务提供商的服务器上执行,用于建立消费者的安全环境,其在本文中被称为密钥域。在仍另一示例中,消费者可以提供所有代码来在云服务提供商的服务器软件堆栈中执行,包括享有特权的代码,诸如虚拟机监控器(VMM)代码、操作系统代码、应用代码等等。
在一个示例中,消费者创建密码安全的代码/数据映像,其仅能被云服务提供商的服务器硬件、通过使用消费者所提供的经加密的密钥域密钥来译解和执行。在另一示例中,消费者可以安全地交换密码型的(多个)密钥域密钥,所述密钥用于排他地利用域映像将在其中执行的云服务提供商的服务器硬件来创建消费者的安全密码域映像。在仍另一示例中,在消费者的密码安全的环境/密钥域外部的云服务提供商软件、管理员和技术员不被提供消费者的经加密的密钥域密钥,并且没有能力查看、扩增或修改消费者域映像的内容(无论域映像在途、在存储期间还是在执行的时候)。
在另一示例中,消费者可以用密码地加密域映像,并且仅仅将经加密的域映像提供到云服务提供商的服务器。在另一示例中,消费者可以将域映像密码地绑定到域映像将在其中执行的云服务提供商服务器上的特定存储器位置/地址。该密码绑定将确保:在消费者所指定的存储器位置处的消费者安全环境/密钥域内执行域映像。
在一个示例中,消费者可以此外使得域映像能够通过所指定的共享存储器区而与云服务提供商软件和/或消费者安全环境/密钥域外部的其它域进行通信。在另一示例中,消费者可以此外使得域映像能够通过所指定的共享存储器区而与设备交互、执行输入/输出(I/O)、以及经由交换消息、音频、视频等等而进行通信。
在一个示例中,公共云服务提供商能够验证消费者的代码,从而在云服务提供商的服务器上提供消费者的安全环境/密钥域。特别地,云服务提供商可以通过硬件来验证:域映像的包括享有特权的代码的消费者所供应的部分是如预期那样。在另一示例中,云服务提供商可以验证:消费者供应的虚拟机监控器(VMM)代码,其通常将会由云服务提供商所提供,是云服务提供商所预期的相同VMM代码。该验证可以通过云服务提供商的硬件来被执行,尽管云服务提供商的软件从未被提供有未经加密的域映像或未经加密的密钥域密钥。
在另一示例中,云服务提供商服务器可以正确地进入并且开始执行消费者的域映像,其中硬件检查消费者和云服务提供商对以下达成一致:域映像如何被初始地执行以及在进入到密码域映像中时硬件(CPU)的正确状态。在另一示例中,云服务提供商硬件可以从一个消费者的域映像安全地切换到另一消费者的域映像。在另一示例中,云服务提供商硬件可以从一个消费者的域映像安全地切换到云服务提供商的软件(诸如存储器管理器)。在仍另一示例中,云服务提供商硬件可以通过交换密码完整性检查值或消息认证码,来密码地验证域映像的完整性用以检测篡改/修改。在仍另一示例中,云服务提供商可以通过如下来防止对消费者域映像内容的重放:允许对完整性检查值的写入/配置,但是阻止在硬件外部对完整性检查值的读取。
在另一示例中,一种方法包括:提供映像以在远程计算设备的存储器中执行享有特权的代码,其中所述映像被密码地绑定到远程计算设备的第一物理存储器位置,使得享有特权的代码如果被加载到远程计算设备的第二物理存储器位置中则将不执行。
理解到,以上示例的各种组合是可能的。
实施例可以被使用在许多不同类型的系统中。例如,在一个实施例中,通信设备可以被布置成执行本文中所述的各种方法和技术。当然,本发明的范围不限于通信设备,而是代替地其它实施例可以针对其它类型的用于处理指令的装置,或者一个或多个包括指令的机器可读介质,所述指令响应于在计算设备上被执行而使得设备实施本文中所述的方法和技术中的一个或多个。
注意到,术语“电路”和“电路系统”在本文中可互换地被使用。如本文中所使用的,这些术语用于单独地或以任何组合地指代模拟电路、数字电路、硬连线的电路、可编程电路、处理器电路、微存储器管理器电路、硬件逻辑电路、状态机电路和/或任何其它类型的物理硬件组件。实施例可以被使用在许多不同类型的系统中。例如,在一个实施例中,通信设备可以被布置成执行本文中所述的各种方法和技术。当然,本发明的范围不限于通信设备,而是代替地其它实施例可以针对其它类型的用于处理指令的装置,或者一个或多个包括指令的机器可读介质,所述指令响应于在计算设备上被执行而使得设备实施本文中所述的方法和技术中的一个或多个。
实施例可以被实现在代码中并且可以被存储在非暂时性存储介质上,所述非暂时性存储介质已经在其上存储了指令,所述指令可以用于对系统进行编程以执行指令。实施例还可以被实现在数据中并且可以被存储在非暂时性存储介质上,所述非暂时性存储介质如果被至少一个机器使用则使得所述至少一个机器制造至少一个集成电路来执行一个或多个操作。仍另外的实施例可以被实现在包括信息的计算机可读存储介质中,所述信息当被制造到SoC或其它处理器中的时候将配置SoC或其它处理器来执行一个或多个操作。存储介质可以包括但不限于任何类型的盘,包括软盘、光学盘、固态驱动器(SSD)、光盘只读存储器(CD-ROM)、光盘可重写(CD-RW)、以及磁光盘;半导体设备,诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、磁性或光学卡、或适合用于存储电子指令的任何其它类型的介质。
虽然已经关于有限数目的实施例而描述了本发明,但是本领域技术人员将领会到从其中的众多修改和变型。意图的是,所附权利要求覆盖如落在此本发明的真实精神和范围内的所有这样的修改和变型。

Claims (24)

1.一种用于在公共云环境中保护消费者数据的装置,所述装置包括:
处理器;
耦合到所述处理器的存储器;以及
耦合到所述处理器和所述存储器的存储器加密逻辑,其中
所述处理器被配置成执行指令以在所述存储器中创建密钥域,其中所述指令包括经加密的密钥域密钥,所述密钥域包括所述存储器的多个存储器位置,执行所述指令对所述经加密的密钥域密钥进行解密以产生针对所述密钥域的密钥域密钥,并且将所述密钥域密钥提供给所述存储器加密逻辑,并且
所述存储器加密逻辑被配置成当从所述密钥域的第一存储器位置读取第一数据的时候通过使用所述密钥域密钥来解密所述第一存储器位置的所述第一数据,并且所述存储器加密逻辑被配置成当向第二存储器位置写入第二数据的时候通过使用所述密钥域密钥来加密所述第二存储器位置的所述第二数据。
2.根据权利要求1所述的装置,其中
所述指令此外包括针对所述密钥域的密钥域标识符,
所述处理器被配置成将物理地址的未被使用的位设置成所述密钥域标识符,所述物理地址标识所述密钥域的所述多个存储器位置中的存储器位置,
所述处理器被配置成将所述物理地址的一位设置成对将通过使用所述密钥域密钥被读取的物理地址处的存储器位置的经加密的内容进行指示的值,
所述存储器加密逻辑被配置成通过使用所述密钥域密钥来从所述物理地址处的存储器位置读取经加密的内容以产生经解密的密钥域内容,并且
所述处理器被配置成执行所述经解密的密钥域内容。
3.根据权利要求2所述的装置,其中
所述经解密的密钥域内容包括域映像,
所述域映像包括将在所述密钥域是当前密钥域的时候被执行的代码,并且
由所述域映像外部的代码发布用于执行指令以创建密钥域的命令。
4.根据权利要求3所述的装置,其中所述处理器此外被配置成:
执行第二指令以验证经加密的密钥域内容,而同时维持所述密钥域密钥以及所述经解密的密钥域内容的机密性,其中由所述密钥域映像外部的代码发布用于执行第二指令的命令。
5.根据权利要求4所述的装置,其中
所述第二指令包括针对所述密钥域的所述密钥域标识符,
所述处理器被配置成散列化所述经解密的密钥域内容以产生散列结果。
6.根据权利要求5所述的装置,其中所述处理器此外被配置成:
执行第三指令以从第一密钥域切换到第二密钥域,其中执行所述第三指令使得所述处理器执行在属于所述第二密钥域的存储器中的经授权的存储器位置处的代码,其中所述经授权的存储器位置的内容随后利用针对所述第二密钥域的第二密钥域密钥来被加密或解密。
7.根据权利要求4所述的装置,其中维持所述密钥域密钥的机密性包括将所述密钥域密钥提供给所述存储器加密逻辑,作为经加密的密钥域密钥,使得在所述处理器上执行的软件不能访问所述密钥域密钥,以及
维持所述经解密的密钥域内容的机密性包括将所述经加密的密钥域内容提供给所述存储器加密逻辑,作为经加密的密钥域内容,使得在所述处理器上执行的软件不能访问所述经解密的密钥域内容。
8.一种用于在公共云环境中保护消费者数据的方法,所述方法包括:
响应于消费者针对服务的请求而向所述消费者提供域管理器映像;
分配存储器的一部分以用于所述域管理器映像,并且向所述消费者提供针对存储器的该部分的存储器定位相关的地址信息;
将所述消费者所提供的经加密的域发动映像加载到存储器的该部分中;
向处理器发送命令以创建密钥域,其中所述命令包括经加密的密钥域密钥,所述密钥域包括所述存储器的多个位置,并且所述密钥域的每个存储器位置通过针对所述密钥域的密钥域密钥来被加密;
将第二命令发送到所述处理器以密码地验证所述经加密的域发动映像包括所述域管理器映像;以及
如果所述处理器验证了所述经加密的域发动映像包括所述域管理器映像则执行通过对所述经加密的域发动映像进行解密所产生的域发动映像。
9.根据权利要求8所述的方法,其中
对所述经加密的域发动映像进行解密以产生域发动映像包括比较所述域发动映像的内容与所述消费者为所述经加密的域发动映像所提供的完整性检查值,并且如果所述域发动映像的内容不匹配所述完整性检查值,则中止所述域发动映像的执行。
10.根据权利要求8所述的方法,其中
所述处理器此外响应于所述第二命令而验证所述经加密的域发动映像被加载到其中的存储器部分的入口点地址匹配所述存储器定位相关的地址信息中的所指定的入口点地址。
11.根据权利要求8所述的方法,此外包括:
将第三命令发送到所述处理器以从第一密钥域切换到第二密钥域,其中切换到所述第二密钥域使得所述处理器执行在属于所述第二密钥域的存储器中的经授权的存储器位置处的代码,其中所述经授权的存储器位置的内容随后利用针对所述第二密钥域的第二密钥域密钥来被加密或解密。
12.根据权利要求11所述的方法,其中
在切换到所述第二密钥域之前,所述处理器确定当前处理器状态是否匹配针对所述第二密钥域的预期处理器状态,并且如果当前处理器状态匹配所述预期处理器状态则切换到所述第二密钥域。
13.根据权利要求12所述的方法,其中
针对所述第二密钥域的预期处理器状态被提供给所述处理器作为由针对所述第二密钥域的预期处理器状态的安全散列函数所计算的散列值,并且所述散列值通过使用所述第二密钥域密钥而被加密钥。
14.根据权利要求8所述的方法,此外包括:
从所述消费者接收域映像的其余部分,其中所述经加密的域发动映像包括所述域映像的域管理器部分;
通过使用被包括在所述经加密的域发动映像中的秘密密钥来解密或验证所述域映像的其余部分的至少一页面;以及
执行所述域映像的其余部分。
15.根据权利要求8所述的方法,此外包括:
对所述经加密的密钥域密钥进行解密以产生密钥域密钥;以及
通过使用所述密钥域密钥来执行所述密钥域的对应存储器位置的相应数据的读取/写入操作;以及
当执行所述读取/写入操作的时候,确定针对所述密钥域的对应存储器位置的相应数据的完整性检查值。
16.一种用于在公共云环境中保护消费者数据的装置,所述装置包括:
用于响应于消费者针对服务的请求而向所述消费者提供域管理器映像的构件;
用于分配存储器的一部分以用于所述域管理器映像并且向所述消费者提供针对存储器的该部分的存储器定位相关的地址信息的构件;
用于将所述消费者所提供的经加密的域发动映像加载到存储器的该部分中的构件;
用于向处理器发送命令以创建密钥域的构件,其中所述命令包括经加密的密钥域密钥,所述密钥域包括所述存储器的多个位置,并且所述密钥域的每个存储器位置通过针对所述密钥域的密钥域密钥来被加密;
用于将第二命令发送到所述处理器以密码地验证所述经加密的域发动映像包括所述域管理器映像的构件;以及
用于如果所述处理器验证了所述经加密的域发动映像包括所述域管理器映像则执行通过对所述经加密的域发动映像进行解密所产生的域发动映像的构件。
17.根据权利要求16所述的装置,其中
对所述经加密的域发动映像进行解密以产生域发动映像包括比较所述域发动映像的内容与所述消费者为所述经加密的域发动映像所提供的完整性检查值,并且如果所述域发动映像的内容不匹配所述完整性检查值,则中止所述域发动映像的执行。
18.根据权利要求16所述的装置,其中
所述处理器此外响应于所述第二命令而验证所述经加密的域发动映像被加载到其中的存储器部分的入口点地址匹配所述存储器定位相关的地址信息中的所指定的入口点地址。
19.根据权利要求16所述的装置,此外包括:
用于将第三命令发送到所述处理器以从第一密钥域切换到第二密钥域的构件,其中切换到所述第二密钥域使得所述处理器执行在属于所述第二密钥域的存储器中的经授权的存储器位置处的代码,其中所述经授权的存储器位置的内容随后利用针对所述第二密钥域的第二密钥域密钥来被加密或解密。
20.根据权利要求19所述的装置,其中
在切换到所述第二密钥域之前,所述处理器确定当前处理器状态是否匹配针对所述第二密钥域的预期处理器状态,并且如果当前处理器状态匹配所述预期处理器状态则切换到所述第二密钥域。
21.根据权利要求20所述的装置,其中
针对所述第二密钥域的预期处理器状态被提供给所述处理器作为由针对所述第二密钥域的预期处理器状态的安全散列函数所计算的散列值,并且所述散列值通过使用所述第二密钥域密钥而被加密钥。
22.根据权利要求16所述的装置,此外包括:
用于从所述消费者接收域映像的其余部分的构件,其中所述经加密的域发动映像包括所述域映像的域管理器部分;
用于通过使用被包括在所述经加密的域发动映像中的秘密密钥来解密或验证所述域映像的其余部分的至少一页面的构件;以及
用于执行所述域映像的其余部分的构件。
23.根据权利要求16所述的装置,此外包括:
用于对所述经加密的密钥域密钥进行解密以产生密钥域密钥的构件;以及
用于通过使用所述密钥域密钥来执行所述密钥域的对应存储器位置的相应数据的读取/写入操作的构件;以及
用于当执行所述读取/写入操作的时候确定针对所述密钥域的对应存储器位置的相应数据的完整性检查值的构件。
24.一种包括代码的计算机可读介质,所述代码将被执行以使得机器执行权利要求8到15中任一项所述的方法。
CN201780049227.7A 2016-08-11 2017-07-20 用于在公共云环境中保护消费者数据的装置与方法 Active CN109565444B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210464496.2A CN114826582A (zh) 2016-08-11 2017-07-20 用于在公共云环境中保护消费者数据的装置与方法

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662373627P 2016-08-11 2016-08-11
US62/373627 2016-08-11
US15/293,967 US10810321B2 (en) 2016-08-11 2016-10-14 Secure public cloud
US15/293967 2016-10-14
PCT/US2017/043024 WO2018031212A1 (en) 2016-08-11 2017-07-20 Secure public cloud

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210464496.2A Division CN114826582A (zh) 2016-08-11 2017-07-20 用于在公共云环境中保护消费者数据的装置与方法

Publications (2)

Publication Number Publication Date
CN109565444A CN109565444A (zh) 2019-04-02
CN109565444B true CN109565444B (zh) 2022-05-27

Family

ID=61160313

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210464496.2A Pending CN114826582A (zh) 2016-08-11 2017-07-20 用于在公共云环境中保护消费者数据的装置与方法
CN201780049227.7A Active CN109565444B (zh) 2016-08-11 2017-07-20 用于在公共云环境中保护消费者数据的装置与方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202210464496.2A Pending CN114826582A (zh) 2016-08-11 2017-07-20 用于在公共云环境中保护消费者数据的装置与方法

Country Status (4)

Country Link
US (2) US10810321B2 (zh)
CN (2) CN114826582A (zh)
DE (1) DE112017004017T5 (zh)
WO (1) WO2018031212A1 (zh)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10270748B2 (en) 2013-03-22 2019-04-23 Nok Nok Labs, Inc. Advanced authentication techniques and applications
US10152350B2 (en) * 2016-07-01 2018-12-11 Intel Corporation Secure domain manager
US10411905B2 (en) * 2016-07-01 2019-09-10 Intel Corporation Public key infrastructure using blockchains
US10691482B2 (en) 2016-08-11 2020-06-23 Intel Corporation Systems, methods, and apparatus for securing virtual machine control structures
JP6772655B2 (ja) * 2016-08-15 2020-10-21 富士通株式会社 情報処理システムおよび情報処理方法
US10642963B2 (en) * 2016-12-08 2020-05-05 Ati Technologies Ulc Digital rights management for a GPU
US10749689B1 (en) * 2017-06-29 2020-08-18 Salesforce.Com, Inc. Language-agnostic secure application development
US11163910B2 (en) * 2017-06-29 2021-11-02 Salesforce.Com, Inc. Methods and systems for data migration
JP6903529B2 (ja) * 2017-09-11 2021-07-14 株式会社東芝 情報処理装置、情報処理方法およびプログラム
US10721072B2 (en) * 2017-09-29 2020-07-21 Xilinx, Inc. Network interface device and method
US10769272B2 (en) 2017-09-29 2020-09-08 Intel Corporation Technology to protect virtual machines from malicious virtual machine managers
US10553974B2 (en) * 2017-09-29 2020-02-04 Intel Corporation Thermal solution on latch for sodimm connector
US11868995B2 (en) 2017-11-27 2024-01-09 Nok Nok Labs, Inc. Extending a secure key storage for transaction confirmation and cryptocurrency
US11036532B2 (en) * 2017-11-29 2021-06-15 Microsoft Technology Licensing, Llc Fast join and leave virtual network
US11831409B2 (en) 2018-01-12 2023-11-28 Nok Nok Labs, Inc. System and method for binding verifiable claims
US10649911B2 (en) * 2018-03-29 2020-05-12 Intel Corporation Supporting memory paging in virtualized systems using trust domains
US10691813B2 (en) * 2018-03-30 2020-06-23 Intel Corporation Techniques for enclave confidentiality management
CN108768978B (zh) * 2018-05-16 2020-12-11 浙江大学 一种基于sgx的远端存储服务方法及系统
CN110659226A (zh) * 2018-06-28 2020-01-07 晨星半导体股份有限公司 用以存取数据的方法以及相关电路
US11630920B2 (en) * 2018-06-29 2023-04-18 Intel Corporation Memory tagging for side-channel defense, memory safety, and sandboxing
US11520611B2 (en) 2018-08-20 2022-12-06 Intel Corporation Secure public cloud using extended paging and memory integrity
US10678705B2 (en) 2018-09-13 2020-06-09 Qualcomm Incorporated External paging and swapping for dynamic modules
US10795829B2 (en) * 2018-09-28 2020-10-06 Intel Corporation Device, method and system to selectively provide data validation functionality
US10761996B2 (en) 2018-09-28 2020-09-01 Intel Corporation Apparatus and method for secure memory access using trust domains
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
CN109508224B (zh) * 2018-11-15 2022-07-05 中国电子科技网络信息安全有限公司 一种基于kvm虚拟机的用户数据隔离防护系统及方法
WO2020118044A1 (en) * 2018-12-05 2020-06-11 Sidewalk Labs LLC Identity systems, methods, and media for auditing and notifying users concerning verifiable claims
US11139967B2 (en) * 2018-12-20 2021-10-05 Intel Corporation Restricting usage of encryption keys by untrusted software
US11461244B2 (en) * 2018-12-20 2022-10-04 Intel Corporation Co-existence of trust domain architecture with multi-key total memory encryption technology in servers
EP3699801B1 (en) * 2019-02-22 2022-03-30 Visa International Service Association Method and system for creating rapid searchable altered data in a database
US20200280550A1 (en) * 2019-02-28 2020-09-03 Nok Nok Labs, Inc. System and method for endorsing a new authenticator
CN109918125B (zh) * 2019-03-20 2022-06-03 浪潮商用机器有限公司 基于OpenPOWER架构的GPU配置方法及装置
CN109921902B (zh) 2019-03-22 2020-10-23 创新先进技术有限公司 一种密钥管理方法、安全芯片、业务服务器及信息系统
US11792024B2 (en) 2019-03-29 2023-10-17 Nok Nok Labs, Inc. System and method for efficient challenge-response authentication
US11550903B1 (en) * 2019-04-26 2023-01-10 Joseph Alan Epstein System and method for trustworthiness, reputation, provenance, and measurement of software
CN110225372A (zh) * 2019-05-07 2019-09-10 成都三零凯天通信实业有限公司 一种实时流媒体加解密密钥无缝切换方法
WO2020233423A1 (zh) * 2019-05-20 2020-11-26 创新先进技术有限公司 基于交易类型的收据存储方法和节点
US11030120B2 (en) * 2019-06-27 2021-06-08 Intel Corporation Host-convertible secure enclaves in memory that leverage multi-key total memory encryption with integrity
JP6671701B1 (ja) * 2019-07-19 2020-03-25 Eaglys株式会社 演算装置、演算方法、演算プログラム、および演算システム
WO2021080449A1 (en) * 2019-10-23 2021-04-29 "Enkri Holding", Limited Liability Company Method and system for anonymous identification of a user
CN111859412A (zh) * 2020-06-11 2020-10-30 中国科学院信息工程研究所 一种基于cpor模型的云数据位置公开验证方法及系统
CN115868144A (zh) * 2020-06-29 2023-03-28 伊鲁米纳公司 经由安全发现框架的临时云提供商凭据
US20230325519A1 (en) * 2020-09-06 2023-10-12 Blackswan Technologies Inc. Securing computer source code
US20220209933A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Integrity protected access control mechanisms
US20230094125A1 (en) * 2021-09-24 2023-03-30 Nvidia Corporation Implementing trusted executing environments across multiple processor devices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102194063A (zh) * 2010-03-12 2011-09-21 北京路模思科技有限公司 一种基于虚拟机技术安全管理使用密钥证书的方法和系统
CN102694796A (zh) * 2012-05-10 2012-09-26 深圳市深信服电子科技有限公司 加密文件的管理方法、装置及服务器

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738932B2 (en) 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US8286164B2 (en) * 2009-08-07 2012-10-09 International Business Machines Corporation Secure recursive virtualization
US8856504B2 (en) 2010-06-07 2014-10-07 Cisco Technology, Inc. Secure virtual machine bootstrap in untrusted cloud infrastructures
US8850593B2 (en) 2011-05-12 2014-09-30 Hewlett-Packard Development Company, L.P. Data management using a virtual machine-data image
US8843767B2 (en) 2011-07-06 2014-09-23 The Boeing Company Secure memory transaction unit
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
US9116841B2 (en) * 2012-11-28 2015-08-25 Infineon Technologies Ag Methods and systems for securely transferring embedded code and/or data designed for a device to a customer
US9286152B2 (en) 2013-06-14 2016-03-15 Microsoft Technology Licensing, Llc Securely obtaining memory content after device malfunction
WO2014209269A1 (en) 2013-06-24 2014-12-31 Intel Corporation A protected memory view for nested page table access by virtual machine guests
US9563455B2 (en) 2013-10-28 2017-02-07 Intel Corporation Virtualization exceptions
US9213653B2 (en) 2013-12-05 2015-12-15 Intel Corporation Memory integrity
US9864874B1 (en) * 2014-05-21 2018-01-09 Amazon Technologies, Inc. Management of encrypted data storage
US9335943B2 (en) 2014-06-30 2016-05-10 Intel Corporation Method and apparatus for fine grain memory protection
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
US9894061B2 (en) * 2015-10-16 2018-02-13 International Business Machines Corporation Method for booting and dumping a confidential image on a trusted computer system
US9990249B2 (en) 2015-12-24 2018-06-05 Intel Corporation Memory integrity with error detection and correction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102194063A (zh) * 2010-03-12 2011-09-21 北京路模思科技有限公司 一种基于虚拟机技术安全管理使用密钥证书的方法和系统
CN102694796A (zh) * 2012-05-10 2012-09-26 深圳市深信服电子科技有限公司 加密文件的管理方法、装置及服务器

Also Published As

Publication number Publication date
WO2018031212A1 (en) 2018-02-15
DE112017004017T5 (de) 2019-05-02
US20210004483A1 (en) 2021-01-07
US20180046823A1 (en) 2018-02-15
US11783081B2 (en) 2023-10-10
CN109565444A (zh) 2019-04-02
US10810321B2 (en) 2020-10-20
CN114826582A (zh) 2022-07-29

Similar Documents

Publication Publication Date Title
US11783081B2 (en) Secure public cloud
US11163911B2 (en) Secure public cloud with protected guest-verified host control
US11989332B2 (en) Secure public cloud with protected guest-verified host control
US11520611B2 (en) Secure public cloud using extended paging and memory integrity
US10325118B2 (en) Cryptographic cache lines for a trusted execution environment
US10686605B2 (en) Technologies for implementing mutually distrusting domains
EP3671515B1 (en) Method and apparatus for trust domain creation and destruction
US11841806B1 (en) System, apparatus and method for integrity protecting tenant workloads in a multi-tenant computing environment
CN114902225A (zh) 多租户环境中的密码计算
US20230273808A1 (en) Confidential offloading of persistent storage operations in confidential computing environments
WO2022051189A1 (en) Creating, using, and managing protected cryptography keys
aw Ideler Cryptography as a service in a cloud computing environment
KR20190031136A (ko) 신뢰 도메인들을 사용한 가상화된 시스템들에서의 격리 제공

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