CN109558740A - 用于页面粒度、软件控制的多密钥存储器加密的系统、装置和方法 - Google Patents

用于页面粒度、软件控制的多密钥存储器加密的系统、装置和方法 Download PDF

Info

Publication number
CN109558740A
CN109558740A CN201810974077.7A CN201810974077A CN109558740A CN 109558740 A CN109558740 A CN 109558740A CN 201810974077 A CN201810974077 A CN 201810974077A CN 109558740 A CN109558740 A CN 109558740A
Authority
CN
China
Prior art keywords
key
memory
entry
data
encryption
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.)
Pending
Application number
CN201810974077.7A
Other languages
English (en)
Inventor
D·M·德拉姆
S·查伯拉
A·L·圣托尼
G·奈格
B·E·亨特利
H·M·科斯拉维
B·V·帕特尔
R·L·萨希塔
G·盖尔宗
I·乌齐耶尔
I·T·朔伊纳斯
R·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
Publication of CN109558740A publication Critical patent/CN109558740A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

Abstract

在一个实施例中,密码电路适于响应于来自第一代理的具有存储器地址的读取请求而从存储器接收至少包括来自加密部分的数据行,从数据行获得用于第一代理的密钥的密钥标识符,使用密钥标识符获得密钥,使用密钥对数据行的至少加密部分解密,并将数据行的至少加密部分的解密数据发送到第一代理。描述并要求保护其他实施例。

Description

用于页面粒度、软件控制的多密钥存储器加密的系统、装置和 方法
技术领域
实施例涉及多租户计算环境中的存储器加密。
背景技术
在多密钥存储器加密中,系统存储器用一个以上的密钥加密以保护信息并向寻求对存储器存取的不同实体提供隔离。目前,多密钥技术具有可缩放性问题,因为识别用于存储器的给定部分的适当密钥存在复杂性。为此,密钥选择器/标识符用于标识相关密钥。用于传递密钥标识符的一种机制是利用未使用的物理地址位(未使用,因为并非所有系统存储器都被填充)。这种方法具有固有的可缩放性问题,因为它窃取了本来可用于寻址存储器的存储器地址空间。添加额外的地址位或其他元数据会消耗额外的管芯面积,从而增加成本并降低性能。随着更传统的企业工作负载转移到云计算环境,数据保护/加密正成为从云服务提供商(CSP)到硬件和系统供应商的基本要求。但是,支持CSP的每个租户的密钥以帮助实现不同CSP客户之间的密码隔离会带来高成本的复杂性并限制可缩放性。
附图说明
图1是根据本发明的实施例的多租户计算环境的框图。
图2是根据本发明的实施例的存储器的框图。
图3是根据实施例的数据行的加密/压缩的表示。
图4是可以根据实施例使用的压缩数据格式的示例。
图5是根据本发明的实施例的方法的流程图。
图6是根据本发明另一实施例的方法的流程图。
图7是根据各种实施例的多租户计算环境的一部分的框图。
图8是根据本发明的实施例的云服务环境的框图。
图9是可用于实现本发明的实施例的装置的框图。
具体实施方式
在各种实施例中,使用技术来以高速缓存和资源有效的方式高效地将用于对存储在存储器中的数据加密/解密的密钥分配给存储器页面。更具体地,实施例可以使用页面到密钥标识符查找表和加密压缩技术的组合来在被存取的数据内嵌入密钥标识符。以这种方式,密钥查找技术与使用物理存储器地址位直接识别密钥一样高效地发生,而没有使用直接识别技术而减少可寻址地址空间的有害影响。此外,实施例使得存储器存取控制能够由软件执行,极大地简化了用于诸如虚拟机(VM)隔离、存储和云安全之类的用途的处理器架构。
执行针对密钥和/或密钥标识符(KeyID)的表查找可能有性能问题,因为每个给定的存储器请求可能发生两次存储器存取(一次用于获得数据行而另一次用于获得密钥/KeyID映射信息)。在实施例中,压缩使得KeyID能够直接嵌入存储器中的数据行中。大多数数据行(例如,超过95%的高速缓存行)对于小密钥标识符可以是足够可压缩的。此压缩在与密钥/KeyID高速缓存相结合时,转换为超过98%的高速缓存行不执行用于获得密钥映射信息的任何额外的存储器读取。
在实施例中,定义密码表结构,其允许软件(诸如给定虚拟机(或拥有/知道密钥的其他代理))直接将存储器页面分配给密钥。换句话说,例如,多租户计算环境的租户的用户级或访客软件(诸如,给定VM或其他软件实体)本身可以生成用于对由管理器(如虚拟机监视器(VMM)或其他管理器)分配给它的存储器页面加密/解密的密钥。此外,页面到密钥标识符查找表的条目可以由软件本身使用该生成的密钥来加密。继而,软件可以将这些条目提供给适当的硬件以包括在查找表中。以这种方式,诸如多密钥总存储器加密(MKTME)执行电路之类的处理器的存储器执行电路可以支持无限数量的密钥,而不消耗地址位或任何额外的高速缓存资源。相反,MKTME执行电路利用该密码存储器查找表,其中每个条目将密钥分配给存储器页面。此外,存储器(高速缓存行)压缩可以使密钥标识符信息适合存储的数据行,使得在针对这些行的存储器读取上不发生表查找,从而避免在该延迟关键路径上进行低效的表查找。因此,实施例提供无限数量的密钥而不增加高速缓存管芯面积,而不影响可用存储器容量并且不影响性能。
在实施例中,存储在存储器中且由MKTME执行电路进行存取控制的密钥表可以存储加密(包装)密钥。这些是由VM或分配给定存储器部分的其他代理提供的各个密钥,其可以在存储于密钥表中之前用仅硬件平台知道的秘密密钥(例如,从熔丝密钥或物理不可克隆功能(PUF)导出)包装。当MKTME执行电路从该表中取回密钥时,它可以缓存各个密钥,假设它们将被重用于后续的存储器存取,以避免读取操作的存储器延迟。在实施例中,该密钥高速缓存在逻辑上是MKTME执行电路的内部,并且由MKTME执行电路专门存取。一些实施例可以具有足够的片上存储器,使得整个密钥表可以存储在MKTME执行电路内。替代实施例可以从KeyID导出密钥,从而放弃对密钥表的需求。例如,KeyID可以用仅为MKTMW执行电路知道的秘密密钥进行加密,并且得到的密文用作导出的密钥。也可以采用用于密钥导出的其他方法或标准。在实施例中,该密钥表由索引条目和版本中的对应密钥的KeyID索引。如果向表中添加了新密钥或修改了现有密钥条目,则可以刷新高速缓存并清除所有处理器TLB状态。
在典型的虚拟化环境中,主机VMM/管理器(下文中称为“VMM”或“主机VMM”)具有对主机VMM管理的访客VM的完全控制。主机VMM可以读/写访客VM存储器,修改访客VM控制流(单步、倒带、重复、调试),读取/修改访客VM寄存器状态,读取/修改访客VM控制结构,等等。然而,对访客VM的执行的这种完全控制可能造成主机VMM被泄露的安全风险,并且可能修改访客VM,使得驻留在访客VM内的客户的秘密和数据被暴露。
在典型的虚拟化环境中,通过从一个虚拟机到另一个虚拟机的切换,VMM修改与虚拟机的执行状态有关的数据结构。这些数据结构可以包括虚拟机控制结构(VMCS)和存储器映射(例如,页表和扩展页表(EPT))。VMCS是存储器中的数据结构,其对于每个访客VM的每个逻辑处理器存在一次,而访客VM由主机VMM管理。在多处理器系统中,同时执行访客VM的每个处理器可以具有唯一的VMCS。随着不同VM之间的执行上下文的每次更改,VMCS将针对当前正在执行的VM进行恢复,定义VM的虚拟处理器的状态。当执行上下文从访客VM切换(VMExits)回到主机VMM时,使用相同的VMCS结构从VMCS的主机状态区域恢复主机的处理器状态。
用于访客VM的操作系统可以使用其自己的页表在虚拟和访客物理存储器地址(GPA)之间形成其自己的存储器映射。然后,VMM使用扩展页表(EPT)来将GPA映射到由硬件使用来存取物理存储器的实际物理地址(PA)。但是,VMM可以使用这些VMM控制的存储器映射来损坏访客VM。
实施例使得主机VMM能够“盲目地”操作,而不具有存取访客VM内的数据的能力或者直接存取控制访客VM的执行流程的控制结构的能力。访客VM在甚至主机VMM也无法存取的受保护的存储器区域内执行。在一个实施例中,访客VM在其中执行的受保护的存储区域被实现为密钥域,该密钥域用消费者提供的密钥域密钥(下文称为“密钥”)进行加密。
在一些实施例中,虚拟化技术(VT)和可信执行技术(TXT)与VMM不可存取(但最初可由TXT存取)的受保护的存储器范围和/或存储器加密技术结合使用,存储器加密技术例如为的总存储器加密(TME)、具有完整性的TME(TMEi)或存储器加密引擎(MEE)、或如本文所述的另一存储器执行电路。因此,实施例可以从访客虚拟机(VM)/工作负载的可信代码库(TCB)中移除公共云服务提供商的VMM/管理器代码。这些技术保护消费者的工作负载免受主机VMM的存取,同时使主机VMM能够保持对平台的完全控制并管理在平台上运行的访客虚拟机。使用根据实施例的存储器加密技术可以保护访客VM工作负载免受物理攻击并且防止主机VMM存取VM(加密)存储器。云服务提供商的软件、管理员以及对云服务提供商的服务器进行物理存取的任何人都不能对受保护的访客VM存取或修改。
现在参考图1,示出了多租户计算环境100的框图。在服务器硬件110(其可包括诸如一个或多个多核处理器、存储器、存储装置、网络接口电路等的处理资源)上运行的是VMM层120。VMM层120是创建和在服务器硬件110上运行虚拟机(VM)(例如,VM1 1301、VM2 1302和VM3 1303)的计算机软件或固件。VM VM1 1301、VM2 1302和VM3 1303中的每个在图1中被示为独立块,代表不同的VM都在公共VMM层120的控制下。VMM层120向VMM控制的VM提供对服务器资源(例如服务器硬件110)的存取。
VMM层120使用诸如VMCS 122和扩展页表(EPT)1261,2之类的数据结构来控制VM的执行。VMCS 122是存储器中的数据结构,其在由VMM 120管理时对于某些VM存在一次。随着这些VM之间的执行上下文的每次改变,VMCS 122被恢复用于当前VM,定义VM的虚拟处理器的状态。EPT 1261,2用于启动VM的虚拟处理器,具有“不受限制的访客”权限。
VMM层120软件或固件由云服务提供商提供,并且是用于VM 1300的TCB的一部分,VM 1300是信任VM。在TCB中包括VMM层120的至少一部分阻止VM 130查看、测量或信任控制该特定VM的VMM。云服务提供商可以在没有VM拥有者知情的情况下随时改变VMM层120。此外,在这些信任VM之间不存在密码分离。如果VMM已被泄露,则损坏的VM可以经由受到损坏的VMM存取第二VM中的私有数据,该VMM仍被第二VM信任。
在以页面粒度提供对存储器的基于软件的密码隔离的实施例中,VM 1301-3使用不同的密钥域1351、1352与VMM/其他VM密码隔离。对于这些VM,相对应的VMCS 1341-5可以在给定密钥域135内隔离。VMCS 1341-5本身是密钥域,因此关于密钥是否由对应VM拥有的确定可以基于VMCS的地址。由租户提供以保护租户工作量的访客代理1322、1323负责产生用于控制结构和存储器映射的密文。然后可以使用正确解密的VMCS 134来启动给定密钥域内的VM130。以这种方式,不同密钥域135的VM彼此隔离。
如图1中进一步所示,硬件110的处理器(例如,页面未命中处理程序PMH)使用反向映射表(RMT)128来确定主机物理存储器地址(HPA)和访客物理地址存储器(GPA)映射是否被分配给正确拥有的密钥域。将一个物理地址映射到一个访客物理地址的RMT 128中的每个条目都使用密钥域密钥进行加密。以这种方式,拥有密钥域密钥的一方(例如,访客代理)授权存储器映射针对该唯一密钥是正确的,用该密钥加密经验证的条目。RMT 128可以与由存储器执行电路维护的页面到密钥(P2K)映射表组合。在利用和组合P2K和处理器反向映射表(RMT)或存储器所有权表(MOT)或类似结构的实施例中,MKTME执行电路可以仅在处理器首次存取相关联的表条目、MKTME高速缓存并且使用组合的P2K条目之后对存储器页面解密,只要处理器还缓存相关联的条目(例如,在处理器高速缓存或TLB中)。在一些实施例中,处理器可以通过将条目写回存储器使得MKTME执行电路释放其对应的缓存P2K条目而向MKTME执行电路以信号形式发送何时利用RMT条目完成,从而确保处理器和MKTME执行电路同步并且针对存储器页面使用相同的KeyID。
作为示例,安全域135可以是客户工作负载(其可以仅包括操作系统(OS)以及在OS之上运行的其他环3应用,或者在VMM之上运行的VM以及其他环3应用)。每个安全域在存储器中至少使用单独的密钥进行密码隔离,以用于加密与域相关联的代码和数据。在实施例中,VMM可以使用页表来将一个或多个密钥域分配给VM。此分配在多租户计算环境中提供增强的密码隔离,在两个VM之间创建共享的加密存储器空间,和/或支持用于非易失性存储器(例如应用直接存储类存储器(SCM))使用的不同卷加密域。诸如环0软件之类的特权软件可以通过指定密钥标识符来分配这些密钥域。VMM经由控制物理地址空间的页表映射来对这些域进行最终控制。对于裸机OS或VMM本身,页表可用于确定正确的密钥域。对于直接物理映射(例如,虚拟机扩展(VMX)指针,没有CDT的CR3),行为是相同的,并且软件可以选择适当的KeyID。
在实施例中,P2K表(存储器范围)由诸如MKTME执行电路之类的存储器执行电路进行存取控制。与RMT一样,该表中的每个条目使用相对应的密钥域密钥(本文通常为“密钥”)加密,证明密钥的所有者确认物理存储器页面的所有权。MKTME执行电路可以使用该密钥来对属于相关联的存储器页面的高速缓存行加密(在存储器写入时)或解密(在存储器读取时)。具有这样的表减少了对于使用附加地址位来识别密钥的需要,使得更大的地址空间可用。在实施例中,每个P2K条目具有非加密部分,KeyID(位于基于页面地址的索引处)。每个条目还具有包括地址的加密部分,并且在实施例中,还具有完整性检查值(例如固定值)和/或版本号以及可能的其他元数据。
当发生存储器读/写时,MKTME执行电路首先存取P2K表并查找存储器地址的KeyID(以页面粒度)。在一个实施例中,每个KeyID可以与三种模式相关联:使用指定密钥加密(其中该密钥由给定VM或其他代理生成);根本不加密(存储器将是原文);以及使用MKTME执行电路的密钥加密。然后,MKTME执行电路从密钥表中获得密钥,并使用它来解密条目的加密部分。如果入口地址与存储器读/写的存储器地址(页面粒度)匹配,则密钥映射有效,并且MKTME执行电路使用密钥来对存储器/高速缓存行解密/加密。如果从表中读取条目(例如,由于PMH步行验证HPA到GPA映射是正确的),则条目的加密部分同样由MKTME执行电路解密并经由处理器的高速缓冲存储器层次结构返回给请求者,例如,给定VM或其他代理。因此,正确解密的条目将验证HPA到GPA映射。
在P2K表更新/写入上,处理器(或观察对受保护的P2K存储器范围的写入的MKTME执行电路)可以被配置为首先确保(或观察)(所引用的存储器页面的)页面粒度高速缓存刷新在使用新的P2K条目重新分配存储器页面之前完成。这确保了处理器不包含可能由错误的软件实体存取的页面的陈旧原文信息。页面刷新完成后,更新的P2K条目可以安装在存储器中,用于对相关联的存储器页面加密/解密。在实施例中,至少对于重新映射的HPA也可以发生跨核转换后备缓冲器(TLB)击落。如果页面被重新映射到新的KeyID,则在使用压缩用于确保不重用以前的KeyID时还可能需要针对页面清除存储器。
现在参考图2,示出了根据本发明实施例的存储器的框图。更具体地说,图2中所示的存储器200可以是用于给定计算环境(例如,多租户计算环境)的系统存储器。在本文的实施例中,系统200可以使用动态随机存取存储器(DRAM)来实现,所述动态随机存取存储器例如可以在多租户计算环境的一个或多个服务器计算机系统中实现的一组双列直插式存储器模块(DIMM)。
在该环境中利用多密钥加密使得多个虚拟机中的每个(可能每个虚拟机可以与多租户计算环境的不同客户或租户相关联)可以具有一个或多个专用于该虚拟机的密钥,使得虚拟机可以控制对例如VMM或其他管理器分配给它的存储器页面的存取。
参考图2,可以存在各种表以使得能够将这些密钥和对应的密钥标识符与分配给在计算环境内执行的一个或多个VM或其他代理的存储器的不同页面映射。具体地,存储器200可以存储页面到密钥(P2K)表210。P2K表210包括多个条目212,其中代表性的一个在图2中以高级别示出。在实施例中,每个条目212可以由给定VM或其他代理生成,并且可以包括密钥标识符(KID,在此也称为“KeyID”)字段214,以存储由VM自身生成以提供此密钥标识符与相对应密钥之间的关联的KID。注意,在实施例中,VMM可以选择KeyID。另外,每个条目212还包括用于存储地址的地址216部分,该地址对应于存储器内的将使用由KID标识的密钥进行加密的存储器页面。另外,在实施例中,每个条目212还可以包括用于存储元数据的元数据部分218。尽管本发明的范围不限于此,但是在实施例中,该元数据信息可以包括许可信息、共享信息版本信息等。
如所讨论的,给定VM可以生成给定条目212。此外,VM可以用密钥加密条目(即地址部分216和元数据部分218),该密钥由VM自身生成以因此管理其页面。但是请注意,KID字段214保持未加密,使得查找操作可以发生,并且进一步可以使用存储在给定条目212中的KID来存取相对应的密钥以使得能够解密给定条目212。在生成给定条目212之后,VM可以将其传送到存储器执行电路、VMM或其他管理实体,以便存储在P2K表210内。
在实施例中,P2K表210由正被查找的物理页面地址索引。如上所述,存储在每个P2K表条目中的KeyID未加密,以便能够识别要使用的正确密钥。当对其他数据(包括物理页面地址)解密时,在来自条目的解密物理页面地址和用于查找条目的物理页面地址之间进行比较。匹配确认创建该P2K条目的任何人也知道密钥,并为到该标识的正确的相对应物理页面地址加密有效存储器分配。
例如,假设P2K表210被定位为连续物理存储器的阵列,例如从物理地址0开始(无偏移)并且每个表条目是64字节(16字节用于未加密的KeyID以支持64K KeyID,剩余字节用于加密的地址等,并且认识到该示例呈现了大小被设置为高速缓存行宽度的不必要的大的条目大小)。继续此示例,1024个4KB页面覆盖4MB存储器,因此表格大小为1024x 64B(16个4KB页面)。每个表条目都由存取的物理页面地址索引,因此第一页对应于表中的第一个条目,而第二页对第一个条目后的64个字节进行索引,依此类推。由于在4KB页面内有64个64B高速缓存行,因此可以忽略来自物理高速缓存行地址的最低有效6位以确定页面的物理地址(哪个页面),减去16(此P2K表大小以页为单位,偏移)以识别表中正确的P2K条目位置(其缓存行地址)。
在另一实施例中,P2K表210可以实现每4KB页面2个字节。因此,对于4TB平台存储器,P2K表210消耗2GB的连续物理存储器。该实现方式允许平台扩展到4PB(52位)的物理可寻址存储器,同时提供多租户存储器加密。系统软件可以被配置为基于配置寄存器来确定该表的地址和大小。
仍然参考图2,密钥表220也存储在存储器200中。密钥表220包括多个条目222,其中代表性的一个在图2中示出。如图所示,每个条目222包括KID 224和对应的密钥226。在实施例中,处理器硬件可以为密钥表220生成条目222。此外,在实施例中,至少每个条目的密钥部分可以被加密。例如,存储器执行电路可以在将条目222存储在存储器200的密钥表220内之前使用其自己的单个永久密钥来加密这些密钥。作为一个示例,表220中的条目可以由硬件(例如,处理器微码、安全处理器模式、安全处理器或作为硬件可信部分的嵌入式系统)创建。VMM可以执行CreateKD指令,其中输入密钥用硬件的公钥加密(因此VMM不知道密钥),并且VMM选择密钥的KeyID。这样,硬件使用VMM不知道的秘密硬件密钥来对表220加密,以保护该表免受VMM和可以修改外部存储器的物理攻击者的影响。
如本文将进一步描述的,在存储器加密/解密操作期间,可以使用如本文所述的不同方式获得的KID来获得用于加密/解密的给定页面的对应密钥。进一步注意,P2K表210和密钥表220的至少部分可以高速缓存在处理器内,使得可以减少获得该信息的存储器延迟。此外,如本文中在实施例中所描述的,数据行本身可以包括KID,使得针对读取请求的解密操作可以避免存取P2K条目的需要,进一步减少延迟。
进一步参考图2,存储在存储器200中的数据可以使用本文描述的密钥加密,以提供对各个VM数据的保护,使得保护其免受未存取多租户计算环境内的存储器的其他VM(或其他代理)的未授权存取。如图所示,第一虚拟存储器地址空间230可以与第一VM相关联,并且可以包括多个不同的页面。在所示的实施例中,第一数据行232(可以是分配给该第一VM的第一存储器页面)包括KID 234和数据部分236,数据部分236可以是处于压缩和加密状态的第一VM的数据。即,该数据已根据给定的压缩技术被压缩(与压缩技术相关联的元数据可包括在数据部分236内)。此外,该压缩数据已经用对应于KID 234的密钥加密。通过在数据行232本身内提供KID 234,可以实现用于执行读取操作(包括数据行232的相对应解密)的减少的延迟。
在一些情况下,给定实施例可能不提供压缩(或者特定数据行可能不是可压缩的)。这种情况的一个示例在数据行238(其可以是分配给该第一VM的另一存储器页面的数据行)处示出。如图所示,数据行238包括未压缩数据239(可以加密)。由于该数据的不可压缩性,请注意,KID不存储在数据行238内。因此,除了用于获得该数据行的读存取之外,对P2K表210内的条目(或来自一个高速缓存的位置)进行附加的读存取来确定KID,然后实现对相应密钥的存取。
在另一实现方式中,可以将KeyID信息插入到与纠错码(ECC)信息相关联的字段中。如图所示,第二虚拟存储器地址空间240可以与第二VM相关联,并且可以包括多个不同的页面。在所示的实施例中,数据行242(可以是分配给该第二VM的存储器页面)包括KID244、ECC信息245和数据部分246,数据部分246可以是处于未压缩(或在其他情况下压缩)和加密状态的第二VM的数据。通过在数据行242本身内提供KID 244(或者与数据行的ECC信息相关联,在单独存储该ECC信息的情况下),可以实现用于执行读取操作(包括数据行242的相对应解密)的减少的延迟。应理解,虽然在图2的实施例中以这种高级别示出,但是许多变化和替代是可能的。
如上所述,可以使用一种或多种存储器压缩技术来允许密钥标识符适合每条数据行。在这种情况下,响应于读取请求而从存储器返回的数据行已经包括正在读取的行中的密钥标识符。所识别的密钥然后可以被获得并用于对数据行的其余部分解密。尽管本发明的范围不限于此,但是在一个实施例中,加密技术可以实现块密码操作模式,例如具有密文窃取(XTS)技术的基于XEX的微调码本模式,其中物理地址用作微调。虽然XTS模式是可能的,但是其他实施例可以应用另一种基于块密码的密码技术,例如电子码本(ECB)中的高级加密标准或者包括LRW、XEX等的另一种密码模式。
现在参考图3,示出了根据实施例的提供压缩的示例数据行格式。如图3中所示,第一数据行310包括压缩指示符312(设置状态(例如,C))(以指示相对应的数据行被压缩)。此外,如本文通过这种压缩所描述的,可以将KID 314存储在数据行310内。数据行310的其余部分被压缩(和加密)。更具体地,如数据行310所示,可以存在压缩元数据316和压缩数据318。相反,如果给定数据行的数据是非可压缩的,如数据行320所示,则压缩指示器322具有复位状态(例如,NC)以指示数据行320未被压缩,并且因此,未压缩数据324存储在数据行320中。
如果数据行是不可压缩的并且不可压缩数据与压缩指示符冲突,则使用冲突指示符(例如,xD 332),如在数据行330中,引起额外的存储器查找以根据冲突表340来确定替换值。所有其他值表示未压缩。在该实施例中,指示符值可以是一位(例如,1表示压缩,0表示未压缩)。然后,值342指示指示符值332被替换的数据的原始位。也就是说,在行不压缩的情况下,指示符0替换数据行的第一位以指示数据未被压缩,并且指示符替换的原始数据位值被移动到压缩表值342。当指示符值较大时(例如,0xD(4位)),则值342指示数据的原始4位是否是值0xC(在这种情况下值342是0),或者0xD(在这种情况下值342是1),因为替换值应该只有两种可能性。由于在实施例中,每4K字节页面仅有64个64字节高速缓存行,所以压缩表可以与P2K表合并,其中P2K表的每个条目包含对应于该页面的所有64位值(每个P2K表条目64位),以及指定页面的KeyID。换句话说,P2K表条目中有足够的位置来保存相对应页面的64个压缩指示符位。
注意,压缩指示符和KeyID保持在加密/压缩数据区域之外。因此,仅对压缩元数据和压缩后的数据加密。当KeyID和指示符值包括子块(小于密码的块大小的区域)时,可以缠绕块密码以对先前块的一部分进行双重加密。
现在参照图4,示出了可以根据实施例使用的压缩数据格式的示例。如图所示,数据元素410可以包括数据行412,其在16位边界405上具有重复字414(例如,在16位边界上重复的16位序列)。在实施例中,可以级联该重复字以提供用于压缩元数据的空间。
如图所示,数据元素420可以包括压缩指示符422,其具有例如设置值以指示该数据元素包括压缩数据。结果,数据元素420可以存储KID 424、压缩元数据426a和426a(例如,5位单元426a和4位单元426b中的9位压缩数据,其中第一单元指示第一重复字的位置并且第二单元指示从第一重复字到第二重复字的距离,其中第二单元/距离指示符也可以回绕到高速缓存行的开头以识别第二重复字位置。此外,数据元素进一步包括压缩数据428。注意,在这些示例中,当压缩与加密组合时,在加密之前执行压缩,并且继而,在读取操作时解密之后发生解压缩。
最后,如图4中进一步所示,加密数据行430(没有显式压缩指示符)可以包括存储KID 434的未加密部分。继而,数据行430的其余部分可以存储加密数据,包括例如压缩元数据436a、436b、完整性元数据435和压缩数据438。注意,完整性元数据435可以用于验证数据未被损坏。如果表条目没有正确解密(例如,错误的密钥),则该HPA地址对于索引而言将是错误的和/或版本号与当前版本不匹配(与相对应的KeyID表条目版本匹配),从而提供隐式完整性检查。继而,PMH验证映射和许可。
现在参照图5,示出了根据本发明的实施例的方法的流程图。更具体地,图5的方法500是用于对存储在存储器中的加密数据执行读取操作的方法,该存储器具有如本文所述的多密钥架构中的加密。在实施例中,方法500可以由诸如安全计算域的存储器加密引擎之类的存储器执行电路来执行。这样,方法500可以由硬件电路、软件、固件和/或其组合来执行。如图所示,方法500通过从存储器读取数据行开始(框510)。该数据行可以用多个密钥中的给定密钥加密,例如,每个密钥与给定的VM相关联。
注意,在所示实施例中,该读取操作响应于在存储器执行电路中接收的针对存储器的给定存储器地址处的数据的读取请求(例如,在读取请求在处理器的高速缓存层次结构中未命中之后)。这样,该存储器请求与所请求数据所在的存储器内的物理地址一起被接收。
接下来,控制传递到菱形框515以确定该读取请求是否是P2K表本身内的位置(诸如在对表的更新之前的读取)。如果不是,则控制接下来转到菱形框520以确定数据行是否被压缩。在实施例中,可以存取数据行的压缩指示符以确定该行是否被压缩。如果确定该行被压缩,则控制转到框525,其中可以使用对应于该密钥的KID从密钥表获得密钥。注意,当压缩给定数据行时,数据行的未加密(和未压缩)部分可以包括该密钥标识符。因此,对于该读取请求,不发生对P2K表的查找存取,从而减少了该关键读取路径的延迟。请注意,在某些情况下,不是直接存取密钥表,而是可以缓存来自密钥表的给定条目,使得可以更容易地存取它,从而进一步减少延迟。
仍然参考图5,控制接下来转到框530,其中使用该密钥对数据行解密,从而获得未加密数据。此后,在框535,对数据行解压缩。在一个实施例中,可以使用存在于数据行内(存储在解密数据部分中)的压缩元数据来执行该解压缩。
仍然参考图5,控制接下来转到可选的菱形框540,其中确定完整性检查是否正确。作为一个示例,未压缩数据部分可以包括完整性元数据。作为一个这样的示例,该完整性元数据可以对应于安全散列算法(诸如SHA2或SHA3)值,或者对应于对数据计算的MAC(消息认证码),并且可以被检查以确认完整性。如果此处未通过正确检查确认完整性,则控制转到框545,其中可以针对该数据读取以信号形式发送错误。否则,假设正确的完整性检查,控制转到框550,其中解密的数据行被发送到请求者。例如,可以将例如给定VM请求的该数据行发送到处理器的高速缓冲存储器层次结构,以提供给VM在其上执行的一个或多个核。
仍然参考图5,如果相反在菱形框520处确定数据行未被压缩,则KID不存在于该数据行中,因此发生P2K表存取。更具体地,如框560所示,可以执行该P2K表查找以基于存储器页面地址找到P2K表内的匹配条目,即包括所请求的存储器位置的页面地址(如从读取请求本身的存储器地址获得的)。因此,执行该表查找以获得KID。请注意,在某些情况下,可以缓存P2K条目,以避免表存取的延迟。
仍然如图5所示,控制接下来转到框570,其中使用KID查找密钥表本身以获得指示的密钥。在框580,使用所识别的密钥对P2K条目的加密部分(即,作为可能的元数据的页面地址部分)进行解密。利用该信息,控制传递到其中可以执行完整性检查的菱形框585。具体地,可以将该解密的页面地址与存储器请求本身的页面地址进行比较,以确认这些物理地址匹配。如果不是,则控制转到框545,如上所述,以以信号形式发送错误。否则,假设有效的完整性检查控制传递到框590,其中使用该密钥对数据行(在未压缩数据读取操作的情况下)解密以获得解密数据,然后在框550将解密数据发送给请求者。
注意,在读取P2K表本身的情况下(如菱形框515所确定的),控制直接转到框570以进行密钥表查找,并且然后控制如上所述进行。应理解,虽然在图5的实施例中以这种高级别示出,但是许多变化和替代是可能的。
现在参考图6,示出了根据本发明的另一实施例的方法的流程图。更具体地,图6中所示的方法600是用于处理如本文所述的针对加密存储器的写/修改存储器请求的方法。在实施例中,方法600可以由诸如安全计算域的存储器加密引擎之类的存储器执行电路执行。这样,方法600可以由硬件电路、软件、固件和/或其组合来执行。
如图6所示,方法600开始于例如在存储器执行电路中接收来自诸如VM或其他代理之类的给定请求者的写/修改存储器请求(框610)。控制从框610传递到菱形框615以确定该写入是否是P2K表本身内的位置。如果不是,则控制传递到菱形框620以确定是否要压缩所接收的数据行。在一个实施例中,该确定可以基于数据行中是否存在足够的重复以允许压缩。在另一个实施例中,该确定可以基于传入数据行的压缩指示符来进行,例如,其中压缩已经由另一个实体执行。作为一个示例,这可以在写入存储器时发生,其中另一硬件块已经压缩了该行,并且设置指示符以向存储器执行电路指示该行已经被压缩。如果要压缩数据行,则控制转到框625,其中根据给定的压缩技术来压缩数据行。通过这种压缩,在数据行内有额外的空间可用,以便能够存储KID(以未压缩和未加密的形式),以使得能够针对读取操作进行更高效地查找。
仍然参考图6,控制接下来转到框630,其中基于存储器页面地址发生对P2K表的查找以获得KID。在某些情况下,可以缓存此KID而不是此P2K表存取。在任何情况下,控制接下来转到框635,其中使用该KID来查找密钥表以获得密钥。此后在框640处,密钥用于对P2K条目本身解密。控制接下来转到菱形框645以确定完整性检查是否正确。在实施例中,该完整性检查可以是与在P2K条目中存在的页面地址相比的在写入请求中接收的页面地址的比较。如果识别出错误,例如由于不匹配,则控制转到框650,在框650处以信号形式发送该错误。否则,控制转到框655,其中可以用密钥对数据加密。此后,包括该加密数据(以及在压缩数据的情况下可能是KID本身(未加密和未压缩))的数据行被发送到存储器(框660)以进行存储。
仍然参考图6,在写入P2K表本身的情况下,控制从菱形框615传递到框665,其中使用存在于修改的P2K条目(即要写入P2K表的条目)中的KID从密钥表获得密钥。此后,控制转到框670,其中使用获得的密钥对该修改的P2K条目进行解密。在菱形框675处,确定完整性检查是否正确。该完整性检查用于将接收到的存储器写请求的页面地址与存储在修改的P2K条目中的页面地址进行比较。并且如果检测到不匹配,则控制转到框650以以信号形式发送错误。否则,控制转到框680,其中可以发生高速缓存刷新。更具体地,可以从处理器的高速缓存层次结构中刷新与该受影响的P2K条目相对应的存储器页面,以确保当该新条目(具有新密钥)被写入表时不存在完整性问题。请注意,在此页面刷新到存储器期间,可能会阻止对页面的存储器读取。接下来在菱形框685确定页面刷新是否已完成。当它已完成时,控制转到框690,其中该加密的P2K条目被写入存储器中的P2K表。应理解,虽在图6的实施例中以这种高级别示出,许多变化和替代是可能的。
请注意,当更改密钥到KeyID映射时,将刷新所有处理器高速缓存(至少对于KeyID),因此针对先前密钥不存在解密数据。然后可以建立新的KeyID到密钥映射。使用错误密钥的P2K条目不能正确解密,并且在检查完整性时将被检测到(例如,不正确解密的P2K条目将被损坏,地址字段不匹配,保留字段不为零)。当新条目写入P2K表时,它们已使用新密钥加密。如果使用旧(或错误)密钥加密,则它们将无法正确解密,并且完整性检查将失败。
如上面简要讨论的,在各种实施例中,P2K表可以在不同位置实现。作为特定示例,P2K表可以在核、存储器控制器中或在存储器本身上实现。现在参照图7,示出了多租户计算环境的一部分的框图,其示出了根据各种实施例的可能的P2K表实现方式。具体地,计算环境700至少包括处理器710和系统存储器750,处理器710通过给定的存储器互连745耦合到该系统存储器750。在图7的上下文中,假设处理器710是多核处理器或其他这样的SoC。出于说明的目的,所示出的是单核712。当然,给定的实现方式可以包括不止一个这样的核。核712耦合到作为存储器750的主接口和控制器的存储器控制器740。当然,存储器750(在所示实施例中可以实现为多个DIMM 7520-752n)可以由诸如给定DIMM控制器之类的内部存储器控制器755内部控制。
利用这种高级布置,描述了用于P2K表的各种替代位置。当然,在特定实现方式中,可能仅采用这些选项中的单个选项,使得仅存在P2K表的单个实例化。然而,应理解,虽然系统中可能存在P2K表的单个完整实例化,但是该表的条目中的至少部分可以被高速缓存在一个或多个位置中以提供减少的延迟。如上所述,在特定实现方式中,可以高速缓存P2K表的至少一些条目,例如,在处理器710的高速缓冲存储器层次结构718内。
继续参考图7,示出了多租户计算环境700的高级细节。具体地,在虚拟化环境中,VMM 714可以充当主要管理器层以控制对底层硬件(包括核712、存储器控制器740,进而提供对系统存储器750的存取)的访客存取等等。如进一步所示,多个独立密钥域7151、7152可以在VMM 714下执行。在实施例中,每个密钥域715可以与多租户计算环境700的给定租户相关联。当然,虽然只有两个独立的密钥域被示出,但是在特定实现方式中可能存在更多的密钥域。并且如本文所述,应理解,每个密钥域715可以彼此隔离。此外,利用本文描述的多密钥加密技术,由给定密钥域715加密的信息也可以与VMM 714和其他基于云的软件隔离。
如图所示,至少一个虚拟机7161、7162可以与每个密钥域715相关联。在实施例中,这样的虚拟机可以包括或可以与访客代理相关联以执行密钥生成和生成的密钥到分配给给定VM的存储器750的相应页面的映射以提供隔离。
作为第一选项,P2K表720可以适配在处理器710的核侧。如图所示,P2K表720可以包括多个条目722,每个条目可以包括物理地址724和相对应的KeyID 726。本文可能有不同的实现方式。在一个实施例中,存储在P2K表720中的物理地址信息可以使用主机物理地址(HPA)来实现。在不同的实施例中,可以使用访客物理地址(GPA)来实现这些物理地址。在其中P2K表720在处理器的核侧实现的实施例中,TLB和到互连的插槽间可以传送KeyID信息的附加位。此外,PMH可以将这些KeyID添加/附加到物理地址。在这种情况下,PMH可以被配置为基于HPA或GPA而使用这些KeyID。在后一种情况下,HPA查找和KeyID查找可以并行执行。在实施例中,可以存在用于GPA情况的附加上下文寄存器。
作为另一选择,不同的实现方式可以定位与存储器控制器740相关联的P2K表。因此,如图7中进一步所示,在这样的实现方式中,P2K表730可以直接耦合到存储器控制器740。与P2K表720一样,P2K表730可以包括多个条目732,每个条目包括物理地址734和相对应的KeyID 736。注意,在该非核的或者基于存储器控制器的实现方式中,TLB/PMH可以不用更多位扩展。
在其他实施例中,P2K表可以完全在系统存储器内实现。因此,如图7中进一步所示,作为另一选项,P2K表760可以直接耦合到系统存储器750内的存储器控制器755。P2K表760包括多个条目762,每个条目包括物理地址764和对应的KeyID 766。在该实现方式中,注意物理地址可以实现为服务器级物理地址(即SPA),使得可以使用用于多插槽计算环境的适当插槽信息来将密钥标识符分配给页面。在这样的实施例中,该表位置也不会扩展TLB/互连。
现在参考图8,示出了根据本发明的实施例的云服务环境的框图。如图8所示,网络800可用于允许消费者从公共云服务提供商请求服务,所述服务包括虚拟化服务。如图所示,网络800可以对应于任何类型的通信网络,并且可以包括经由诸如因特网820之类的给定网络互连的许多不同类型的计算设备。
可以提供云存储810作为包括各种计算设备、存储设备等的数据中心的一部分。作为一个示例,云存储810可以是包括多个存储组件的存储设备,所述多个存储组件诸如磁盘存储、光学存储或基于半导体的存储。云存储810可以例如充当各种应用的主副本的存储库,所述各种应用包括VMM应用,其实例化虚拟机以响应于消费者的请求来提供服务。在图8所示的实施例中,VMM应用的主副本以VMM映像812的形式存储。VMM映像812是包含软件栈的软件映像,该软件栈被设计为以VMM的形式提供虚拟机平台。
因此,如图8中进一步所见,在相同位置,例如,作为同一数据中心的一部分,一个或多个公共云服务提供商服务器,例如公共云提供商服务器8151和8152可以耦合到云存储810。在各种实施例中,公共云服务提供商服务器可用于服务消费者服务请求,所述消费者服务请求包括虚拟化请求。例如,每个公共云服务提供商服务器可以代表消费者托管一个或多个虚拟机。在图8所示的示例中,公共云提供商服务器8151托管两个虚拟机VM1 8401和VM2 8402。类似地,公共云提供商服务器8152托管两个虚拟机VM1 8403和VM2 8404。公共云提供商服务器815可以维护如本文所描述的P2K表和密钥表。
如图8所示,可以存在各种消费者设备,例如,云服务消费者设备8301和8302。这种云服务消费者设备可以是给定用户的个人设备,诸如智能电话、平板电脑、台式计算机等。可替代地,云服务消费者设备可以是用于消费云服务的组织的服务器。此外,可以经由软件来模拟云服务消费者设备。
云服务消费者设备8301和8302中的每个提供相应的云服务消费者8311和8312以及相应的VM映像8321和8322。云服务消费者8311和8312可以是例如用于请求云服务的云服务应用的客户端组件。VM映像8321和8322可以存储在耦合到相应的云服务消费者设备8301和8302的存储装置(未示出)中。这些VM映像由消费者提供给云服务提供商并用于创建在云提供商的服务器8151上运行的安全VM,例如VM1 8401
当根据本文描述的技术在云服务提供商的服务器上建立安全VM时,消费者然后可以使用该VM连同消费者的秘密密钥一起来代表消费者创建额外的VM。因此,一旦可以在云服务提供商的云中安全地建立一个消费者VM,该VM就可以执行图8中的消费者设备的所有操作,包括创建额外的安全VM。同样,消费者可以与多个云服务提供商建立安全的VM,并且这些安全的VM可以使用消费者的秘密密钥经由安全通信信道安全地进行交互。
图9是示出了根据本发明的一个实施例的装置的图,该装置可以是根据实施例的用于保护公共云环境的装置900。装置900可以包括任何计算设备和/或数据平台,例如膝上型电脑、个人数字助理(PDA)、媒体内容播放器、成像设备、移动互联网设备(MID)、例如无线智能电话、智能平板电脑、智能TV、计算机服务器等的任何智能设备,或其组合。
装置900包括存储器912。存储器912可以在处理器911外部(例如,外部存储器),和/或可以通过例如存储器总线耦合到处理器911。另外,存储器912可以实现为主存储器。存储器912可以包括例如诸如DRAM之类的易失性存储器、非易失性存储器等,或其组合。
可以使用加密和完整性检查来保护存储器912。在一个实施例中,使用称为可微调块密码的加密技术。可微调块密码接受第二个输入,称为微调,以及要加密的原文或密文输入。微调以及密钥选择由密码计算的排列。例如,微调功能可以使用物理存储器地址作为对块密码的微调,以将未加密数据与物理存储器地址绑定。微调功能945可以包括,例如,利用密文窃取的基于XTS(XOR-encrypt-XOR)/XEX的调整码本模式)算法、Liskov、Rivest和Wagner(LRW)算法等,或其组合。
处理器911可以包括任何类型的处理器,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、中央处理单元(CPU)、图形处理单元(GPU)、可视处理单元(VPU)、网络处理器、用于执行代码以实现本文描述的技术的设备等,或其组合。处理器911可以包括一个或多个核,例如核916和核918。核916、918可以包括单线程核,每个核心包括多于一个硬件线程上下文(或“逻辑处理器”)的多线程核心,等等,或其组合。核916、918可以包括指令解码器,其用于识别和/或解码指令(例如,来自指令寄存器),激活适当的电路以执行指令,验证指令流(例如,操作代码等)将计算,等等,或其组合。
处理器911可以包括内部存储装置,例如包括一个或多个级别的处理器高速缓存913,用于存储由处理器911的一个或多个组件使用的数据(例如,指令、操作数、程序数据等)。高速缓存913可以在同一芯片上不加密和/或与处理器911共享相同的管芯。此外,处理器高速缓存可以集成到核916、918中的一个或多个上。处理器911包括高速缓存913。高速缓存913可以包括任何类型的高速缓存,例如指令高速缓存、数据高速缓存、单级高速缓存、多级高速缓存、共享高速缓存、严格包含的高速缓存、独占高速缓存等,或其组合。例如,高速缓存913可以包括中级高速缓存,例如2级(L2)、3级(L3)、4级(L4)或其他级别的高速缓存、最后级别高速缓存(LLC)等等或其组合。核916、918可以检查数据是否位于高速缓存913中以执行一个或多个指令和/或其他数据(例如,程序数据等),其中高速缓存未命中可以导致数据以固定大小的块(例如,高速缓存行)从存储器912传输到高速缓存913。
每个核916、918可以例如经由相应的存储器控制器(诸如存储器控制器917)与相应的存储器耦合,经由共享存储器控制器与共享存储器耦合,经由共享存储器控制器与相应的存储器耦合,等等,或其组合。另外,共享高速缓存可以与共享存储器控制器耦合,多个高速缓存可以与多个相应的存储器控制器耦合,等等,以及它们的组合。例如,存储器控制器917可以在核916、918之间共享,可以与高速缓存913(例如,共享多级高速缓存)耦合,并且可以将核916、918与存储器912(例如,共享DRAM)耦合。存储器控制器917可以与存储器912(例如,外部存储器、DRAM等)耦合。
处理器911还包括存储器加密引擎915。所示存储器加密引擎915包括加密器941,加密器941可以加密未加密数据。未加密数据可以包括例如原文数据、明文数据等,或其组合。
加密器941可以包括任何类型的密码以生成密文数据,例如,在任何期望的操作模式中的块密码。块密码可以包括固定的块大小,其中可以重复实现块密码以加密大于块大小的数据。例如,块密码可以包括传播密码块链(PCBC)操作模式中的高级加密标准(AES)。另外,块密码可以包括可扩展块大小。
在一个示例中,块密码是Threefish,其可以被实现为获得任何长度(例如,256位、512位、1024位等)的可扩展块大小。例如,Threefish可以利用微调(例如,128位),其可以包括存储器地址和/或位置,以及可以与块具有相同宽度的密钥。Threefish可以利用若干轮(例如,72)来加密256位和1024位的块,对于1024位的块的若干轮(例如,80),等等。Threefish可以利用函数MIX,函数MIX包括加法运算、常数的旋转运算和异或(XOR)运算。例如,在每组MIX函数之后(例如,分别按块大小分别为2、4或8),可以对字进行置换。可以将子密钥注入到系统中,例如,每轮数(例如,4),其中子密钥可以由密钥的部分、微调和计数器值生成。密钥和微调可以在末尾给出额外的字(例如,所有其他字的XOR)。
存储器加密引擎915还包括解密器942,解密器942可以对密文数据解密以生成未加密数据。解密器942可以包括加密器941的逆。例如,解密器942可以包括AES-PCBC的逆。另外,解密器942可以包括Threefish的逆。例如,子密钥可以以相反的顺序应用,每一轮包括反向字置换,然后是反向MIX函数。因此,未加密数据(例如,明文数据)可以被实现为对加密器941的输入,以在未加密数据将被存储在存储器912中(例如,写入指令)时生成未加密数据(例如,密文数据)的不可读副本,其中,解密器942可以被实现为在要从存储器912取出密文数据(例如,读取指令)时对密文数据解密并生成未加密数据。
存储器加密引擎915可以读取加密数据行,并且解密器942可以对加密数据行解密,其中解密的数据行识别数据行物理地址,完整性线索引和用于解密的数据行的完整性行槽选择器。比较器(例如,完整性验证器944)可以识别存储的完整性行槽值与解密数据行的数据物理存储器地址的密钥域选择器之间不匹配,并且存储器加密引擎915和/或比较器响应于不匹配标识可以使存储器加密引擎915或其组件刷新高速缓存行,并将不匹配条件报告为错误或故障中的一个或多个。
存储器加密引擎915还可以包括压缩器/解压缩器947,其用于对数据行字节压缩/解压缩,如本文所述。存储器加密引擎915和/或压缩器947可以确定特定高速缓存行的数据行字节是不可压缩的,并且不是试图将例如密钥标识符嵌入具有数据行字节的数据行中,而是可以单独地存储密钥标识符(例如,在诸如另一个高速缓存行和/或存储器位置之类的单独位置中)。
存储器加密引擎915还可以包括密钥/微调值选择器948,其用于针对存储器912中的物理位置从多个密钥(例如,密钥域)中选择密钥和/或从多个微调(例如,微调域)中选择微调。例如,图示的存储器加密引擎915可以包括功能检测器,其用于确定功能(例如,程序、中间件、操作系统、固件、虚拟机、VMM,OS内核等)或者功能的一部分(例如,程序的一部分等)第一次被启动,或者第一次被给予对存储器912中的物理位置进行存取。当给予功能(和/或其部分)存取时,作为响应,密钥/微调值选择器948可以针对存储器中的物理位置的选择密钥和/或微调(例如,来自密钥域的密钥,来自相同密钥域的不同密钥,来自不同密钥域的不同密钥,来自微调域的微调,来自同一微调域的不同微调,来自不同微调域的不同微调等)。
存储器加密引擎915还包括逻辑949,其可以利用处理器911的组件,例如,核916、918、加密器941、解密器942等,以维持(例如,确保、验证、测试等)存储器912的安全性和完整性。尽管未在图9中示出,装置900可以包括与处理器911在芯片上的其他元件。例如,处理器911可以包括与存储器加密引擎915集成的输入输出(IO)控制逻辑。另外,尽管示例示出了单独的组件用于说明目的,但是应当理解,装置900的组件中的一个或多个可以组合,可以驻留在相同和/或不同的物理和/或虚拟位置,等等,或其组合。
因此,实施例可以用在多租户云计算环境中以使用硬件来保护公共云设施。例如,云客户(租户/消费者)可能希望他们的工作负载在公共云基础架构中是安全的。本文描述的技术可以使租户/消费者免受黑客攻击、物理存取、管理员、特权软件和云提供商本身的影响。此外,如本文所讨论的,无限数量的租户/VM/容器的无限数量的密钥域可以在不消耗将扩展高速缓存/管芯面积的额外的物理地址位或缓存的元数据的情况下而供应。另外,利用本文的密码存取控制技术,软件可以直接创建指示哪个存储器页面被分配给哪个密钥域密钥的数据,从而消除了对处理器内的复杂架构存取控制机制的需要。
此外,实施例实现了针对CSP客户工作负载(租户/域)的密码隔离,以实现从客户的TCB移除CSP软件。注意,实施例可以应用于任何DRAM或基于SCM的存储器,类似于NV-DIMM-N。通过这种方式,磁盘加密软件可以在针对SCM的直接存取存储(DAS)模式下与NVDIMM一起使用。因此,软件/应用可以利用针对SCM的NVDIMM DAS模式的性能优势,而不会有损平台安全性要求,同时满足CSP的安全性要求。
以下示例涉及其他实施例。
在示例1中,一种用于对存储器加密的装置,包括:密码电路,其用于对数据加密和解密,所述密码电路用于响应于具有来自第一代理的存储器地址的读取请求而从存储器接收包括至少加密部分的数据行,从数据行获得用于第一代理的密钥的密钥标识符,使用密钥标识符获得密钥,使用密钥对数据行的至少加密部分解密,并将数据行的至少加密部分的解密数据发送到处理器的高速缓存层次结构以用于由所述第一代理存取,其中所述存储器用多个密钥加密,所述密钥是所述多个密钥中的一个。
在示例2中,当数据行未压缩时,所述密码电路至少部分地基于所述存储器地址对P2K表存取,以从所述P2K表的条目中获得所述密钥标识符,所述P2K表包括多个条目,每个条目将存储器页面映射到密钥标识符。
在示例3中,所述密码电路使用所述密钥标识符对密钥表存取以获得所述密钥,所述密钥表包括多个条目,每个条目将密钥标识符映射到密钥,其中每个密钥与虚拟机相关联。
在示例4中,所述虚拟机用于生成所述密钥并提供用于插入到所述P2K表的条目中,所述条目的至少一部分用所述密钥加密。
在示例5中,该装置还包括处理器的存储器执行电路,所述存储器执行电路用于从所述虚拟机接收条目并将所述条目插入到所述P2K表中。
在示例6中,响应于来自所述虚拟机的具有第二存储器地址的第二读取请求,所述存储器执行电路从所述P2K表获得所述条目,用所述密钥对所述条目的至少一部分解密,并将条目的解密部分中存储的存储器地址与第二存储器地址进行比较以验证条目的完整性,并如果存储的存储器地址与第二存储器地址不匹配则以信号形式发送错误。
在示例7中,所述装置包括多租户计算环境,多个虚拟机将在所述多租户计算环境上执行,所述多个虚拟机中的至少一些与所述多租户计算环境的不同客户相关联。
在示例8中,该装置还包括压缩电路,其用于基于存储在数据行中的压缩元数据来对所述数据行的至少一部分解压缩。
在示例9中,该装置包括:处理器,包括:多个核;高速缓冲存储器层次结构;存储器执行电路;以及耦合到所述存储器的存储器控制器,其中所述存储器执行电路包括所述密码电路,并且所述压缩电路与所述高速缓冲存储器层次结构相关联,并将数据行的解压缩部分发送到所述高速缓冲存储器层次结构。
在示例10中,一种用于对存储器加密的方法包括:由虚拟机生成针对由多租户计算环境的管理器分配给所述虚拟机的存储器的页面的密钥,所述多租户计算环境包括至少一个处理器和所述存储器;由所述虚拟机生成存储在所述存储器中的P2K表的条目,该条目包括用于所述密钥的密钥标识符和所述存储器的页面的地址;以及由所述虚拟机至少对所述存储器的页面的地址加密,并向所述管理器发送包括所述密钥标识符和加密的存储器页面的地址的条目,以使管理器将条目存储在P2K表中,其中,所述密钥由所述至少一个处理器的存储器执行电路使用,以对要由所述虚拟机存储在所述存储器的页面中的数据加密和解密。
在示例11中,该方法还包括防止除虚拟机之外的实体对存储在所述存储器的页面中的加密数据的存取。
在示例12中,该方法还包括:响应于来自所述虚拟机的读取请求,在所述存储器执行电路中从所述存储器获得加密数据;基于密钥标识符到所述密钥的映射,在所述存储器执行电路中获得与所述虚拟机相关联的密钥;以及使用所述密钥对所述加密数据进行解密以获得未加密数据并将所述未加密数据发送到所述至少一个处理器的高速缓冲存储器以使所述虚拟机能够对所述未加密数据存取。
在示例13中,该方法还包括使用所述密钥标识符对密钥表的条目存取,所述密钥表具有多个条目,每个条目包括密钥标识符和密钥。
在示例14中,该方法还包括:响应于所述读取请求,从自所述存储器获得的数据行获得所述密钥标识符,所述数据行包括所述密钥标识符和所述加密数据。
在示例16中,一种用于对存储器加密的多租户计算系统包括至少一个处理器,该处理器包括:多个核,多租户计算系统的多个租户的多个代理在所述多个核上执行;耦合到多个核的至少一个高速缓冲存储器;以及存储器执行电路,用于接收用于所述多个代理中的第一代理的数据,用所述第一代理的第一密钥对数据进行加密,并将加密数据发送到存储器以存储在所述存储器中,所述存储器执行电路至少部分地基于与第一密钥相关联的第一密钥标识符获得第一密钥,并从存储在所述存储器中的页面到密钥表中获得第一密钥标识符。该系统还可以包括耦合到所述至少一个处理器的存储器,所述存储器用于存储具有多个条目的页面到密钥表,所述多个条目中的每个条目用于将密钥标识符映射到所述存储器的页面,其中所述多个代理中的至少一些用于生成所述多个条目中的至少一些条目。
在示例17中,所述页面到密钥表的多个条目每个均包括未加密的密钥标识符和加密的所述存储器的页面的地址。
在示例18中,所述存储器还用于存储包括多个条目的密钥表,所述多个条目中的每个用于将密钥标识符映射到密钥,所述密钥由所述多个代理中的一个代理生成。
在示例19中,所述存储器还包括:第一地址空间,用于存储分配给所述第一代理的多个页面,其中,所述第一地址空间的第一页面的第一数据行包括所述第一密钥标识符和加密数据,并且加密数据的数据被进一步压缩。
在示例20中,响应于针对所述第一数据行的读取请求,所述存储器执行电路用于将从所述存储器接收所述第一数据行,使用存储在所述第一数据行中的第一密钥标识符获得所述第一密钥,使用所述第一密钥对所述第一数据行的加密数据解密,并将解密的数据发送到所述至少一个处理器。
在示例21中,响应于针对第二数据行的读取请求,所述存储器执行电路用于从所述存储器接收所述第二数据行,基于所述第二数据行的地址从所述页面到密钥表获得第二密钥标识符,使用所述第二密钥标识符获得第二密钥,使用所述第二密钥对所述第二数据行的加密数据解密,并将解密的数据发送到所述至少一个处理器。
在示例22中,一种装置包括:用于响应于读取请求而从存储器接收加密数据行的单元;用于至少部分地基于读取请求的地址来从P2K表单元获得用于对所述加密数据解密的密钥的密钥标识符的单元;用于使用所述密钥标识符获得所述密钥的单元;用于使用密钥对加密数据行解密并将加密数据行的解密数据发送到请求者的单元,其中所述存储器用与多租户计算环境的多个租户相关联的多个密钥进行加密;以及具有多个条目的P2K表单元,每个条目将所述存储器的一部分映射到密钥标识符,其中所述多个条目中的每个条目由多个租户中的一个租户进行加密。
在示例23中,所述装置包括处理器单元,并且所述P2K表单元与所述处理器单元的一个或多个核相关联,其中所述多个条目每个均包括所述存储器的页面的物理地址和所述密钥标识符,所述物理地址是主机物理地址和访客物理地址中的一个,所述P2K表单元由所述读取请求的页面地址索引。
在示例24中,所述装置包括处理器单元,所述处理器单元还包括存储器控制单元,所述存储器控制单元包括所述P2K表单元,其中所述多个条目每个均包括所述存储器的页面的物理地址和所述密钥标识符,所述P2K表单元由所述读取请求的页面地址索引。
在示例25中,多租户计算环境包括至少一个处理器单元和耦合到至少一个处理器单元的存储器。继而,存储器包括:多个存储器模块,用于存储多个加密的存储器页面;以及包括所述P2K表单元的存储器控制器,其中所述多个条目中的每个条目包括与多个加密存储器页面之一相关联的加密物理地址和密钥标识符。
在其他示例中,计算机可读存储介质包括计算机可读指令,计算机可读指令当被执行时,用于实现如以上示例中任一项所要求保护的方法。
在更进一步的示例中,装置包括用于执行以上示例中任一项所要求保护的方法的单元。
应理解,上述示例的各种组合是可能的。
注意,术语“电路”和“电路系统”在本文中可互换使用。如本文所使用的,这些术语和术语“逻辑”用于单独或以任何组合指代模拟电路、数字电路、硬连线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路和/或任何其他类型的物理硬件组件。实施例可以用在许多不同类型的系统中。例如,在一个实施例中,通信设备可以被布置为执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,相反,其他实施例可以涉及用于处理指令的其他类型的装置,或者包括指令的一个或多个机器可读介质,所述指令响应于在计算设备上执行而使设备执行本文描述的方法和技术中的一种或多种。
实施例可以以代码实现,并且可以存储在其上存储有指令的非暂时性存储介质上,该指令可以用于对系统进行编程以执行指令。实施例还可以以数据实现,并且可以存储在非暂时性存储介质上,如果由至少一个机器使用,则使至少一个机器制造至少一个集成电路以执行一个或多个操作。更进一步的实施例可以在包括信息的计算机可读存储介质中实现,当被制造成SoC或其他处理器时将配置SoC或其他处理器以执行一个或多个操作。存储介质可以包括但不限于任何类型的磁盘,包括软盘、光盘、固态驱动器(SSD)、光盘只读存储器(CD-ROM)、光盘可重写(CD-RW)和磁光盘、诸如只读存储器(ROM)之类的半导体器件、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡或适用于存储电子指令的任何其他类型的介质。
虽然已经关于有限数量的实施例描述了本发明,但是本领域技术人员将从中意识到许多修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围内的所有这些修改和变化。

Claims (25)

1.一种用于对存储器加密的装置,包括:
密码电路,其用于对数据加密和解密,所述密码电路用于响应于来自第一代理的具有存储器地址的读取请求而从存储器接收包括至少加密部分的数据行,从所述数据行获得用于所述第一代理的密钥的密钥标识符,使用所述密钥标识符来获得所述密钥,使用所述密钥来对所述数据行的至少加密部分解密,并且将所述数据行的至少加密部分的解密数据发送到处理器的高速缓存层次结构以用于由所述第一代理存取,其中,所述存储器是用多个密钥加密的,所述密钥是所述多个密钥中的一个。
2.如权利要求1所述的装置,其中,所述密码电路用于当所述数据行未被压缩时,至少部分地基于所述存储器地址来对页面到密钥(P2K)表存取,以从所述P2K表的条目获得所述密钥标识符,所述P2K表包括多个条目,所述多个条目中的每个条目将存储器页面映射到密钥标识符。
3.如权利要求2所述的装置,其中,所述密码电路用于使用所述密钥标识符来对密钥表存取以获得所述密钥,所述密钥表包括多个条目,所述多个条目中的每个条目将密钥标识符映射到密钥,其中,每个密钥与虚拟机相关联。
4.如权利要求3所述的装置,其中,所述虚拟机用于生成所述密钥并且提供用于插入到所述P2K表中的条目,所述条目的至少一部分用所述密钥加密。
5.如权利要求4所述的装置,还包括所述处理器的存储器执行电路,所述存储器执行电路用于从所述虚拟机接收所述条目并且将所述条目插入到所述P2K表中。
6.如权利要求5所述的装置,其中,所述存储器执行电路用于响应于来自所述虚拟机的具有第二存储器地址的第二读取请求,从所述P2K表获得所述条目,用所述密钥对所述条目的所述至少一部分解密,并且将所述条目的解密部分中的存储的存储器地址与所述第二存储器地址进行比较以验证所述条目的完整性,并且如果所述存储的存储器地址与所述第二存储器地址不匹配则以信号形式发送错误。
7.如权利要求1所述的装置,其中,所述装置包括多租户计算环境,多个虚拟机在所述多租户计算环境上执行,所述多个虚拟机中的至少一些与所述多租户计算环境的不同客户相关联。
8.如权利要求1所述的装置,还包括:压缩电路,其用于基于存储在所述数据行中的压缩元数据来对所述数据行的至少一部分解压缩。
9.如权利要求8所述的装置,其中,所述装置包括:
处理器,包括:
多个核;
高速缓冲存储器层次结构;
存储器执行电路;以及
耦合到所述存储器的存储器控制器,其中,所述存储器执行电路包括所述密码电路,并且所述压缩电路与所述高速缓冲存储器层次结构相关联,并且将所述数据行的所述解压缩部分发送到所述高速缓冲存储器层次结构。
10.一种用于对存储器加密的方法,包括:
由虚拟机生成针对由多租户计算环境的管理器分配给所述虚拟机的存储器的页面的密钥,所述多租户计算环境包括至少一个处理器和所述存储器;
由所述虚拟机生成存储在所述存储器中的页面到密钥(P2K)表的条目,所述条目包括用于所述密钥的密钥标识符和所述存储器的页面的地址;以及
由所述虚拟机至少对所述存储器的页面的地址加密,并且将包括所述密钥标识符和加密的所述存储器的页面的地址的条目发送到所述管理器,以使所述管理器将所述条目存储在所述P2K表中,其中,所述密钥由所述至少一个处理器的存储器执行电路使用,以对要由所述虚拟机存储在所述存储器的页面中的数据加密和解密。
11.如权利要求10所述的方法,还包括:防止除所述虚拟机之外的实体对存储在所述存储器的页面中的加密数据的存取。
12.如权利要求10所述的方法,还包括:
响应于来自所述虚拟机的读取请求,在所述存储器执行电路中从所述存储器获得加密数据;
基于密钥标识符到所述密钥的映射,在所述存储器执行电路中获得与所述虚拟机相关联的密钥;以及
使用所述密钥来对所述加密数据解密以获得未加密数据并且将所述未加密数据发送到所述至少一个处理器的高速缓冲存储器以使所述虚拟机能够对所述未加密数据存取。
13.如权利要求12所述的方法,还包括:使用所述密钥标识符来对密钥表的条目存取,所述密钥表具有多个条目,所述多个条目中的每个条目包括密钥标识符和密钥。
14.如权利要求12所述的方法,还包括:响应于所述读取请求,从自所述存储器获得的数据行获得所述密钥标识符,所述数据行包括所述密钥标识符和所述加密数据。
15.一种包括计算机可读指令的计算机可读存储介质,所述计算机可读指令当被执行时,用于实现如权利要求10至14中任一项所述的方法。
16.一种用于对存储器加密的多租户计算系统,包括:
至少一个处理器,包括:
多个核,所述多租户计算系统的多个租户的多个代理在所述多个核上执行;
耦合到所述多个核的至少一个高速缓冲存储器;以及
存储器执行电路,其用于接收用于所述多个代理中的第一代理的数据,用所述第一代理的第一密钥对所述数据进行加密,并且将加密数据发送到存储器以存储在所述存储器中,所述存储器执行电路用于至少部分地基于与所述第一密钥相关联的第一密钥标识符来获得所述第一密钥,并且从存储在所述存储器中的页面到密钥表获得所述第一密钥标识符;以及
耦合到所述至少一个处理器的所述存储器,所述存储器用于存储具有多个条目的所述页面到密钥表,所述多个条目中的每个条目用于将密钥标识符映射到所述存储器的页面,其中,所述多个代理中的至少一些代理用于生成所述多个条目中的至少一些条目。
17.如权利要求16所述的多租户计算系统,其中,所述页面到密钥表的多个条目中的每个条目均包括未加密的密钥标识符和加密的所述存储器的页面的地址。
18.如权利要求16所述的多租户计算系统,其中,所述存储器还用于存储包括多个条目的密钥表,所述多个条目中的每个用于将密钥标识符映射到密钥,所述密钥由所述多个代理中的一个代理生成。
19.如权利要求16所述的多租户计算系统,其中,所述存储器还包括:第一地址空间,其用于存储分配给所述第一代理的多个页面,其中,第一代理地址空间的第一页面的第一数据行包括所述第一密钥标识符和所述加密数据,其中,所述加密数据的数据被进一步压缩。
20.如权利要求19所述的多租户计算系统,其中,响应于针对所述第一数据行的读取请求,所述存储器执行电路用于从所述存储器接收所述第一数据行,使用存储在所述第一数据行中的所述第一密钥标识符来获得所述第一密钥,使用所述第一密钥来对所述第一数据行的加密数据解密,并且将解密的数据发送到所述至少一个处理器。
21.如权利要求19所述的多租户计算系统,其中,响应于针对第二数据行的读取请求,所述存储器执行电路用于从所述存储器接收所述第二数据行,基于所述第二数据行的地址从所述页面到密钥表获得第二密钥标识符,使用所述第二密钥标识符来获得第二密钥,使用所述第二密钥来对所述第二数据行的加密数据解密,并且将解密的数据发送到所述至少一个处理器。
22.一种用于对存储器加密的装置,包括:
用于响应于读取请求而从存储器接收加密数据行的单元;
用于至少部分地基于所述读取请求的地址来从页面到密钥(P2K)表单元获得用于被使用来对所述加密数据行解密的密钥的密钥标识符的单元;
用于使用所述密钥标识符来获得所述密钥的单元;
用于使用所述密钥来对所述加密数据行解密并且将所述加密数据行的解密数据发送到请求者的单元,其中,所述存储器是用与多租户计算环境的多个租户相关联的多个密钥进行加密的;以及
具有多个条目的所述页面到密钥(P2K)表单元,所述多个条目中的每个条目将所述存储器的一部分映射到密钥标识符,其中,所述多个条目中的每个条目由多个租户中的一个租户进行加密。
23.如权利要求22所述的装置,其中,所述装置包括处理器单元,并且所述P2K表单元与所述处理器单元的一个或多个核相关联,其中,所述多个条目中的每个条目均包括所述存储器的页面的物理地址和所述密钥标识符,所述物理地址是主机物理地址和访客物理地址中的一个,所述P2K表单元由所述读取请求的页面地址来索引。
24.如权利要求22所述的装置,其中,所述装置包括处理器单元,所述处理器单元还包括存储器控制单元,所述存储器控制单元包括所述P2K表单元,其中,所述多个条目中的每个条目均包括所述存储器的页面的物理地址和所述密钥标识符,所述P2K表单元由所述读取请求的页面地址来索引。
25.如权利要求22所述的装置,其中,所述多租户计算环境包括:
至少一个处理器单元;以及
耦合到所述至少一个处理器单元的所述存储器,其中,所述存储器包括:
多个存储器模块,其用于存储多个加密的存储器页面;以及
包括所述P2K表单元的存储器控制器,其中,所述多个条目中的每个条目包括与所述多个加密的存储器页面中的一个相关联的加密物理地址和所述密钥标识符。
CN201810974077.7A 2017-09-25 2018-08-24 用于页面粒度、软件控制的多密钥存储器加密的系统、装置和方法 Pending CN109558740A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/714,217 US10657071B2 (en) 2017-09-25 2017-09-25 System, apparatus and method for page granular, software controlled multiple key memory encryption
US15/714,217 2017-09-25

Publications (1)

Publication Number Publication Date
CN109558740A true CN109558740A (zh) 2019-04-02

Family

ID=65638893

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810974077.7A Pending CN109558740A (zh) 2017-09-25 2018-08-24 用于页面粒度、软件控制的多密钥存储器加密的系统、装置和方法

Country Status (3)

Country Link
US (3) US10657071B2 (zh)
CN (1) CN109558740A (zh)
DE (1) DE102018115491A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110430060A (zh) * 2019-07-12 2019-11-08 东南大学 一种基于puf密钥的专用压缩系统
CN111130784A (zh) * 2019-12-25 2020-05-08 成都海光集成电路设计有限公司 一种密钥生成方法、装置、cpu芯片及服务器
WO2020211071A1 (en) * 2019-04-19 2020-10-22 Intel Corporation Process-to-process secure data movement in network functions virtualization infrastructures
CN113449311A (zh) * 2020-03-25 2021-09-28 瑞昱半导体股份有限公司 数据解密系统及数据解密方法
WO2022198551A1 (en) * 2021-03-25 2022-09-29 Intel Corporation Multi-tenancy protection for accelerators

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10776525B2 (en) 2017-09-29 2020-09-15 Intel Corporation Multi-tenant cryptographic memory isolation
US10938559B2 (en) * 2017-12-12 2021-03-02 Advanced Micro Devices, Inc. Security key identifier remapping
US20190215160A1 (en) * 2018-01-09 2019-07-11 Qualcomm Incorporated Managing a set of cryptographic keys in an encrypted system
US11789874B2 (en) 2018-01-09 2023-10-17 Qualcomm Incorporated Method, apparatus, and system for storing memory encryption realm key IDs
US10901917B1 (en) * 2018-01-26 2021-01-26 Amazon Technologies, Inc. Address scrambling for storage class memory
US10725861B2 (en) * 2018-06-28 2020-07-28 Intel Corporation Error correction code memory security
DE112018007780T5 (de) * 2018-06-29 2021-04-01 Intel Corporation Transparente verschlüsselung
US10708247B2 (en) * 2018-09-27 2020-07-07 Intel Corporation Technologies for providing secure utilization of tenant keys
US11029991B2 (en) * 2019-03-08 2021-06-08 International Business Machines Corporation Dispatch of a secure virtual machine
US11250165B2 (en) * 2019-12-20 2022-02-15 Intel Corporation Binding of cryptographic operations to context or speculative execution restrictions
US11403234B2 (en) * 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11288377B1 (en) * 2019-10-03 2022-03-29 Pavel Izhutov Virtual machine-based trusted execution environment
US11263310B2 (en) * 2019-11-26 2022-03-01 Red Hat, Inc. Using a trusted execution environment for a proof-of-work key wrapping scheme that verifies remote device capabilities
US11520878B2 (en) * 2019-11-26 2022-12-06 Red Hat, Inc. Using a trusted execution environment for a proof-of-work key wrapping scheme that restricts execution based on device capabilities
US11436342B2 (en) 2019-12-26 2022-09-06 Intel Corporation TDX islands with self-contained scope enabling TDX KeyID scaling
US20210200880A1 (en) * 2019-12-27 2021-07-01 Intel Corporation Method and apparatus for multi-key total memory encryption based on dynamic key derivation
US11176058B2 (en) * 2020-01-22 2021-11-16 Arm Limited Address decryption for memory storage
US11748271B2 (en) * 2020-04-15 2023-09-05 Micron Technology, Inc. Data security for memory and computing systems
US20220100871A1 (en) * 2020-09-26 2022-03-31 Intel Corporation Scalable multi-key memory encryption
US11442770B2 (en) * 2020-10-13 2022-09-13 BedRock Systems, Inc. Formally verified trusted computing base with active security and policy enforcement
US20220147453A1 (en) * 2020-11-12 2022-05-12 Intel Corporation Sequestered memory for selective storage of metadata corresponding to cached data
US11625337B2 (en) 2020-12-26 2023-04-11 Intel Corporation Encoded pointer based data encryption
US20220207190A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Low overhead memory integrity with error correction capabilities
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11704444B2 (en) * 2021-03-08 2023-07-18 Micron Technology, Inc. Managing encryption keys per logical block on a persistent memory device
US20220327052A1 (en) * 2021-04-12 2022-10-13 Meta Platforms, Inc. Systems and methods for transforming data in-line with reads and writes to coherent host-managed device memory
US20230094171A1 (en) * 2021-09-25 2023-03-30 Intel Corporation Memory assisted incline encryption/decryption
US11556482B1 (en) * 2021-09-30 2023-01-17 International Business Machines Corporation Security for address translation services
US20230244821A1 (en) * 2022-01-28 2023-08-03 Honeywell International Inc. Processor core unique encryption
WO2023235613A1 (en) * 2022-06-03 2023-12-07 Rambus Inc. Memory management with implicit identification of cryptographic keys using error correction data

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6847948B1 (en) * 1999-12-20 2005-01-25 International Business Machines Corporation Method and apparatus for secure distribution of software/data
CN1722046A (zh) * 2004-06-30 2006-01-18 富士通株式会社 安全处理器和用于安全处理器的程序
CN101140778A (zh) * 2006-09-07 2008-03-12 国际商业机器公司 恢复可移动存储介质上残留的加密数据的方法和系统
CN101166089A (zh) * 2006-10-18 2008-04-23 株式会社东芝 秘密信息管理设备与秘密信息管理系统
CN101166086A (zh) * 2006-09-07 2008-04-23 国际商业机器公司 用于检测和处理加密密钥和初始化向量的方法和系统
CN101587479A (zh) * 2008-06-26 2009-11-25 北京人大金仓信息技术股份有限公司 面向数据库管理系统内核的数据加解密系统及其方法
CN101755269A (zh) * 2007-07-20 2010-06-23 Nxp股份有限公司 具有安全虚拟机的设备
US20130191651A1 (en) * 2012-01-23 2013-07-25 International Business Machines Corporation Memory address translation-based data encryption with integrated encryption engine
CN104982005A (zh) * 2013-01-22 2015-10-14 亚马逊技术有限公司 虚拟化环境中的特权加密服务
CN106062768A (zh) * 2014-02-28 2016-10-26 超威半导体公司 处理系统中信息的密码保护
US20170091487A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Cryptographic operations for secure page mapping in a virtual machine environment
CN107004099A (zh) * 2014-11-26 2017-08-01 惠普发展公司,有限责任合伙企业 存储器中攻击预防

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7107459B2 (en) * 2002-01-16 2006-09-12 Sun Microsystems, Inc. Secure CPU and memory management unit with cryptographic extensions
WO2008054456A2 (en) * 2006-02-22 2008-05-08 Luna Innovations Inc. Hardware-facilitated secure software execution environment
US8621241B1 (en) * 2008-04-25 2013-12-31 Netapp, Inc. Storage and recovery of cryptographic key identifiers
US9251239B1 (en) * 2008-05-15 2016-02-02 Salesforce.Com, Inc. System, method and computer program product for applying a public tag to information
US8606997B2 (en) * 2008-12-23 2013-12-10 Oracle America, Inc. Cache hierarchy with bounds on levels accessed
US8751826B2 (en) * 2009-04-01 2014-06-10 Salesforce.Com, Inc. Enhanced system security
EP2731040B1 (en) * 2012-11-08 2017-04-19 CompuGroup Medical SE Computer system for storing and retrieval of encrypted data items, client computer, computer program product and computer-implemented method
US9384227B1 (en) * 2013-06-04 2016-07-05 Amazon Technologies, Inc. Database system providing skew metrics across a key space
CN105493097B (zh) * 2013-09-27 2019-08-27 英特尔公司 用于远程存储的数据的保护方案
US9614666B2 (en) 2014-12-23 2017-04-04 Intel Corporation Encryption interface
US10063661B2 (en) * 2015-01-14 2018-08-28 Oracle International Corporation Multi-tenant cloud-based queuing systems
US9798893B2 (en) * 2015-01-29 2017-10-24 International Business Machines Corporation Secure format-preserving encryption of data fields
US9710667B2 (en) * 2015-04-09 2017-07-18 American Express Travel Related Services Company, Inc. System and method for online key rotation
US9990249B2 (en) 2015-12-24 2018-06-05 Intel Corporation Memory integrity with error detection and correction
US10310774B2 (en) 2015-12-24 2019-06-04 Intel Corporation Techniques for data storage protection and integrity checking
US10050947B2 (en) * 2016-01-28 2018-08-14 Cisco Technology, Inc. Key distribution in a distributed network environment
US10037288B2 (en) * 2016-04-01 2018-07-31 Intel Corporation Memory protection at a thread level for a memory protection key architecture
US10447670B2 (en) * 2016-07-28 2019-10-15 Red Hat Israel, Ltd. Secret keys management in a virtualized data-center
US10296757B2 (en) * 2016-07-29 2019-05-21 Sap Se Appended key ID for key identification during data encryption
US10547442B2 (en) * 2016-08-17 2020-01-28 Open Text Sa Ulc System and method for encryption in a content management environment
US10250572B2 (en) * 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10979223B2 (en) * 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10476913B2 (en) * 2017-09-08 2019-11-12 Salesforce.Com, Inc. Intercepting calls for encryption handling in persistent access multi-key systems
US11687654B2 (en) * 2017-09-15 2023-06-27 Intel Corporation Providing isolation in virtualized systems using trust domains

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6847948B1 (en) * 1999-12-20 2005-01-25 International Business Machines Corporation Method and apparatus for secure distribution of software/data
CN1722046A (zh) * 2004-06-30 2006-01-18 富士通株式会社 安全处理器和用于安全处理器的程序
CN101140778A (zh) * 2006-09-07 2008-03-12 国际商业机器公司 恢复可移动存储介质上残留的加密数据的方法和系统
CN101166086A (zh) * 2006-09-07 2008-04-23 国际商业机器公司 用于检测和处理加密密钥和初始化向量的方法和系统
CN101166089A (zh) * 2006-10-18 2008-04-23 株式会社东芝 秘密信息管理设备与秘密信息管理系统
CN101755269A (zh) * 2007-07-20 2010-06-23 Nxp股份有限公司 具有安全虚拟机的设备
CN101587479A (zh) * 2008-06-26 2009-11-25 北京人大金仓信息技术股份有限公司 面向数据库管理系统内核的数据加解密系统及其方法
US20130191651A1 (en) * 2012-01-23 2013-07-25 International Business Machines Corporation Memory address translation-based data encryption with integrated encryption engine
CN104982005A (zh) * 2013-01-22 2015-10-14 亚马逊技术有限公司 虚拟化环境中的特权加密服务
CN106062768A (zh) * 2014-02-28 2016-10-26 超威半导体公司 处理系统中信息的密码保护
CN107004099A (zh) * 2014-11-26 2017-08-01 惠普发展公司,有限责任合伙企业 存储器中攻击预防
US20170091487A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Cryptographic operations for secure page mapping in a virtual machine environment

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘辉: "智能卡信息存储系统的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 03, pages 135 - 985 *
赵丽娟: "兰州龙芯电子商务系统的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 01, pages 138 - 94 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020211071A1 (en) * 2019-04-19 2020-10-22 Intel Corporation Process-to-process secure data movement in network functions virtualization infrastructures
US11943340B2 (en) 2019-04-19 2024-03-26 Intel Corporation Process-to-process secure data movement in network functions virtualization infrastructures
CN110430060A (zh) * 2019-07-12 2019-11-08 东南大学 一种基于puf密钥的专用压缩系统
CN111130784A (zh) * 2019-12-25 2020-05-08 成都海光集成电路设计有限公司 一种密钥生成方法、装置、cpu芯片及服务器
CN111130784B (zh) * 2019-12-25 2023-08-08 成都海光集成电路设计有限公司 一种密钥生成方法、装置、cpu芯片及服务器
CN113449311A (zh) * 2020-03-25 2021-09-28 瑞昱半导体股份有限公司 数据解密系统及数据解密方法
WO2022198551A1 (en) * 2021-03-25 2022-09-29 Intel Corporation Multi-tenancy protection for accelerators

Also Published As

Publication number Publication date
US11775447B2 (en) 2023-10-03
US20200226074A1 (en) 2020-07-16
DE102018115491A1 (de) 2019-03-28
US20190095350A1 (en) 2019-03-28
US20220043757A1 (en) 2022-02-10
US10657071B2 (en) 2020-05-19
US11176059B2 (en) 2021-11-16

Similar Documents

Publication Publication Date Title
CN109558740A (zh) 用于页面粒度、软件控制的多密钥存储器加密的系统、装置和方法
US10684945B2 (en) System, apparatus and method for providing key identifier information in a non-canonical address space
US11010310B2 (en) Convolutional memory integrity
US11651085B2 (en) Cryptographic memory ownership table for secure public cloud
US20210004483A1 (en) Secure Public Cloud
US8200961B2 (en) Securing a flash memory block in a secure device system and method
US11841806B1 (en) System, apparatus and method for integrity protecting tenant workloads in a multi-tenant computing environment
US9734357B2 (en) Process authenticated memory page encryption
JP4876053B2 (ja) トラステッド・デバイス集積回路
US20240069955A1 (en) Technologies for memory replay prevention using compressive encryption
KR101653193B1 (ko) 보안 처리 환경으로부터의 기능의 오프로딩
CN112433817A (zh) 信息配置方法、直接存储访问方法及相关装置
US11216592B2 (en) Dynamic cryptographic key expansion

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