CN112149125A - 使用与高速缓存行有关的存储器所有权位防止信任域访问 - Google Patents
使用与高速缓存行有关的存储器所有权位防止信任域访问 Download PDFInfo
- Publication number
- CN112149125A CN112149125A CN202010217852.1A CN202010217852A CN112149125A CN 112149125 A CN112149125 A CN 112149125A CN 202010217852 A CN202010217852 A CN 202010217852A CN 112149125 A CN112149125 A CN 112149125A
- Authority
- CN
- China
- Prior art keywords
- key
- memory
- cache line
- bit
- processor
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0826—Limited pointers directories; State-only directories without pointers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Abstract
处理器包括处理器核以及耦合到该处理器核的存储器控制器。存储器控制器包括密码引擎,该密码引擎用于:在针对高速缓存行的写入请求中检测存储器中的位置的物理地址内的密钥标识符(ID);确定密钥ID是多个密钥ID中的信任域密钥ID;响应于确定了密钥ID是信任域密钥ID,对高速缓存行的所有权位置位以指示高速缓存行属于信任域;对高速缓存行进行加密以生成经加密的数据;确定与高速缓存行相关联的消息认证码(MAC);并且将所述高速缓存行的经加密的数据、所有权位以及MAC写入存储器。
Description
技术领域
本公开涉及计算机系统,更具体地,涉及使用与高速缓存行有关的存储器所有权位防止信任域访问。
背景技术
现代计算系统采用盘加密来保护静态地存储在硬盘驱动器盘或其他数据存储上的数据。然而,攻击者可以使用各种技术(包括总线扫描、存储器扫描等)从存储器检取数据。存储器本身可以包括用于盘加密的密钥,从而使在盘驱动器上被加密的数据暴露。即使首先对存储在存储器中的数据进行加密,对经加密的数据的访问仍然允许进行各种类型的重放攻击。因此,已经采用了各种技术来保护驻留在存储器的至少一些区域中的敏感数据。这样做已变得具有挑战性,尤其是在云或服务器环境中,其中在同一服务器上可同时支持(来自不同实体的)多个客户工作负载。对不同实体的数据进行充分安全保护的要求也已扩展到针对重放攻击的防护。
附图说明
图1A是图示根据一个实现方式的示例计算系统的框图,该示例计算系统使得信任域(TD)架构与多密钥完全存储器加密(MK-TME)技术能够在虚拟化系统中共存。
图1B是图示根据一个实现方式的使得TD架构与MK-TME技术能够共存的计算系统的处理器的示例处理器核的框图。
图2A是图示根据一个实现方式的划分为TD和MK-TME密钥ID的加密密钥标识符(ID)空间的图。
图2B是图示根据一个实现方式的使用与物理存储器地址级联的地址空间的M个位编码并划分为TDX和MK-TMEi密钥ID的加密密钥ID的图。
图2C是根据一个实现方式的由密钥ID索引并存储密钥ID与加密密钥的关联性的微架构密钥加密表的图示。
图2D是根据一个实现方式的由密钥ID索引并存储密钥ID向各种信任域的分配的微架构密钥所有权表的图示。
图3是根据一个实现方式的用于对TD进行软件攻击的方法的流程图。
图4是图示根据一个实现方式的密码引擎与所有权位进行交互以跟踪高速缓存行的TD所有权的功能流程图。
图5是根据一个实现方式的用于在将高速缓存行写入存储器时写入所有权位的方法的流程图。
图6是根据一个实现方式的用于在读取存储器中的高速缓存行时读取所有权位的方法的流程图。
图7A-7B是根据各种实现方式的用于在高速缓存行读取操作期间使用所有权位和密钥ID污染指示符的方法的流程图。
图8A是图示用于处理器的微架构的框图,在该微架构中可使用本公开的一个实现方式。
图8B是图示根据本公开的至少一个实现方式而实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图9图示根据一个实现方式的用于处理设备的微架构的框图,该处理设备包括使用在高速缓存行上标记的所有权位来提供TD存储器访问校验的逻辑电路。
图10是根据一个实现方式的计算机系统的框图。
图11是根据另一实现方式的计算机系统的框图。
图12是根据一个实现方式的片上系统的框图。
图13图示出计算系统的框图的另一实现方式。
图14图示出计算系统的框图的另一实现方式。
具体实施方式
本公开的各方面针对一种处理器的存储器控制器,其可以用所有权位标记存储在系统存储器中的高速缓存行。可以被包含在与高速缓存行相关联的元数据中的所有权位指示该高速缓存行是否属于信任域(TD)。可以在响应于确定位于写入请求的物理地址内的密钥标识符(ID)属于TD而对高速缓存行写入时对所有权位置位。在执行对高速缓存行的读取时,针对所有权位的值来校验读取请求中的密钥ID的访问类型(例如,是否为TD密钥ID)。如果存在不匹配,则存储器控制器可以响应于读取请求而返回污染位和与固定模式(例如,全零或全一)匹配的无效数据。以此方式,攻击者无法获得存储在高速缓存行中的针对TD的经加密的数据的访问权。尽管本公开的实现方式可以涉及云服务提供商(CSP)的客户,但信任域也可以是任何容器(例如,虚拟机)、操作系统或设备,这些容器、操作系统或设备以与同一平台上可用的另一个容器、操作系统或设备相比增强的安全性来处理。
云服务器计算和虚拟计算环境为各种设备提供远程计算资源和远程数据存储资源。远程计算和数据存储使保护数据免受未经授权的人员和恶意软件的访问尤为重要。保护存储器中数据的一种方式是使用完全存储器加密(Total Memory Encryption,TME)技术,其中可以使用加密密钥对在处理器核上执行的软件的存储器访问进行加密。例如,当处理器进行对存储器的写入请求时,可以在将数据写入存储器的高速缓存行之前通过存储器加密引擎(或其他密码引擎)对数据进行加密。当从存储器读取数据时,数据将以加密形式发送到处理器。一旦数据已到达处理器,存储器加密引擎就可以用加密密钥对该数据进行解密。由于数据以明文形式保留在处理器中,因此TME技术不需要对现有软件、以及现有软件与处理器交互的方式进行修改。
在各种实现方式中,在与多密钥完全存储器加密(MK-TME)技术一同起作用的TD基础结构的上下文中,提供了通过使用基于高速缓存行的所有权位提供的增加的安全性。MK-TME技术是TME技术的扩展,其提供了对多个加密密钥的支持,从而允许进行分区的存储器加密。例如,MK-TME技术为操作系统(或虚拟计算环境中的管理程序,也称为虚拟机监视器(VMM))提供了不同加密密钥的使用来对与不同客户端/应用相关联的物理存储器的页进行加密。这些客户端/应用在本文中通常称为虚拟机(VM),其中一个可以是管理程序,但是客户端/应用在不同的实现方式中可以是另一种类型。TD基础架构指的是允许一些VM(称为TD)在高度安全的环境中执行,在该高度安全的环境中,甚至操作系统(或管理程序)可能也不具有对属于TD的物理存储器页的访问权。多密钥扩展尤其适用于诸如由CSP使用的架构之类的多域架构,因为所支持密钥的数量可以是依赖于实现方式的。在一些实现方式中,MK-TMEi技术包括完整性保护,例如,经由消息认证码(MAC)验证,因此有时被称为MK-TMEi技术。
在TD扩展(TDX)架构中,可以存在与于不同的客户机(例如,VM)、宾客操作系统、主机操作系统、管理程序等对应的多个安全TD。此外,甚至由同一宾客操作系统内的同一客户端运行的不同应用可以被安全地执行。为了在存在多个TD时确保安全计算的可缩放性,每个TD都可以使用对于TD在外部操作的软件不可用的一个或多个私有密钥。在一些实例中,在一个安全域中执行的软件可具有对专用于那个特定域的私钥以及对可由多个域使用的共享密钥的访问权。例如,在安全域内运行的软件可以将私钥用于其安全执行,诸如,读、写或运行操作。另一方面,相同的软件可以使用共享密钥来访问与其他域共享的结构或设备,诸如,打印机、键盘、鼠标、监视器、网络适配器、路由器等
尽管在MK-TME引擎中实现的密码机制被用来为TD数据提供机密性和完整性,但它们不足以针对所有攻击进行保护。更具体地,具有对TD密文数据的访问权的不受信任的软件(例如,CSP软件)可通过推测性和非推测性手段两者损害数据的机密性和/或完整性。这些攻击通常称为重放攻击,诸如,为跟踪失败的登录尝试的计数器提供密文数据,以重置计数器并启用无限制的蛮力尝试来破解密码。在建立重放攻击时,攻击者可生成索引到密文数据的存储器地址的字典,然后使用该字典在稍后将密文存储到特定的存储器位置。因此,本公开的实现方式通过防止任何非TD代理访问密文(或加密的)数据来防止这种攻击,这进而可以防止重放攻击。
在一个实现方式中,处理器包括处理器核和耦合到处理器核的存储器控制器。存储器控制器包括密码引擎(诸如,MK-TME引擎),以在对高速缓存行的写入请求内检测存储器中的位置的物理地址内的密钥ID。密码引擎可以进一步确定密钥ID是多个密钥ID中的信任域密钥ID,并且因此对高速缓存行的所有权位置位以指示高速缓存行属于信任域。密码引擎可以进一步高速缓存行进行加密以生成加密的数据,并确定与高速缓存行相关联的MAC。该密码引擎可进一步向存储器写入加密的数据、所有权位以及高速缓存行的MAC。这可以结束包括更新所有权位的写入。
在另外的或替代的实现方式中,系统包括用于存储高速缓存行和相关联的所有权位的存储器设备、处理器核以及耦合在该存储器设备与处理器核之间的存储器控制器。存储器控制器可以包括密码引擎,以在来自处理器核(或其他系统代理)的对高速缓存行的读取请求内检测存储器中的位置的物理地址内的密钥ID。密码引擎可以进一步确定密钥ID是多个密钥ID中的信任域密钥ID,从存储器设备读取高速缓存行,并且确定存储在存储器设备中的针对高速缓存行的所有权位是否被置位为指示高速缓存行属于信任域。如果所有权位指示高速缓存行属于TD,则存储器控制器可以继续对存储在高速缓存行处的经加密的数据进行解密,通过MAC校验来验证完整性,并且假设完整性校验通过而返回未加密的数据。否则,如果所有权位不指示高速缓存行属于TD,则存储器控制器可以响应于读取请求而返回污染位和与固定模式匹配的无效数据。
在实现方式中,与存储器中的高速缓存行相关的所有权位的使用提供了许多优势。一个优点是防止上述重放攻击,在重放攻击中,攻击者可以使用加密的数据在稍后时间重放以破坏安全机制,包括破解密码或对MAC进行蛮力确定以便通过完整性校验。另一个优点是在公开的系统(例如,虚拟化服务器)引导时避免使用范围寄存器,以便预留专用于由TDX架构独占使用的大量系统存储器。更具体地,基于范围寄存器的解决方案将需要为TDX用途预先预留大部分系统存储器,从而使系统无法用于其他非安全用途,包括用于VMM本身。如此多的系统存储器的不灵活预留使范围寄存器解决方案实现起来不切实际。通过实现取决于客户(例如,CSP租户)工作负载来灵活使用任意量的系统存储器,将所有权位与存储器中的高速缓存行一起使用提供类似的独占以由任何非TD代理访问。
图1A图示示例计算系统100,该示例计算系统100使TDX和MK-TMEi技术能够在支持多个客户端设备102A、102B和102C的虚拟化服务器110上共存。计算系统100可以进一步包括网络接口104以及共享硬件设备160A和160B。虚拟化服务器110可以包括但不限于处理器112、存储器设备130以及一个或多个TD 150A、150B和150C。处理器112可执行虚拟机监视器(VMM)或管理程序140、TD资源管理器(TDRM)142,其进而可运行一个或多个虚拟机(VM)155。在各种实现方式中,处理器112可包括一个或多个处理器核114、一个或多个寄存器116(例如,硬件寄存器)、高速缓存118、所有权位(OB)高速缓存118A,以及存储器控制器120,例如,存储器管理单元。
在一个实现方式中,存储器控制器120进而包括具有一个或多个密钥数据结构121的密码引擎136(诸如,在一个实现方式中的MK-TME引擎),在该密钥数据结构121中存储密钥加密表(KET)122和密钥所有权表(KOT)124,这将参考图2C-2D更详细地讨论。在另一实现方式中,如虚线所示(可选的),密码引擎136位于存储器控制器120外部的非核中,但仍耦合至存储器控制器120。OB高速缓存118A可以是管芯上高速缓存,以供密码引擎136使用以对来自存储器设备130的隔绝范围的所有权位进行高速缓存,如将参考图4所讨论。在各实现方式中,存储器设备130是以下中的任何一者:动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、静态存储器(诸如,静态随机存取存储器SRAM)、闪存、数据存储设备或此类存储器设备的组合。为了简洁起见,存储器设备130也简称为存储器130。
在一个实现方式中,虚拟化服务器110是运行虚拟化架构的CSP主机服务器,其运行MK-TME技术和TDX架构两者以实现客户端/租户应用的高效执行。例如,主机服务器可在TD内执行高度敏感的应用,使得管理程序140不具有对存储器页、分配给TD的加密密钥以及该TD的可信计算基础(TCB)的访问权。同时,虚拟化服务器110可使用MK-TME技术运行要求较少的安全和隔离的应用,其中,管理程序140保留对存储器页以及在这些较不敏感的应用中使用的加密密钥的控制。管理程序140随后可使用不同的MK-TME密钥来将不同的应用彼此隔离,但仍保持在每个应用的TCB中。
每个客户端设备102A、102B、102C可以是远程台式计算机、平板电脑、智能电话、另一个服务器、薄客户端/瘦客户端等。每个客户端设备可以在虚拟化服务器110中在TD150A、150B和150C中的一个或多个以及一个或多个VM 155中执行应用,其中VM在每个相应TD的TCB外部运行。管理程序140可以执行虚拟机环境,其中管理程序利用主机的硬件能力并用于执行一个或多个宾客操作系统,该一个或多个宾客操作系统支持从单独的客户端设备102A、102B和102C运行的客户端应用。在一个实现方式中,单个TD(诸如,TD 150A)可以向单个客户端102A提供安全的执行环境,并支持单个宾客OS。在另一个实现方式中,一个TD可以支持多个租户,每个租户都运行单独的虚拟机并由在TD内部运行的租户虚拟机监视器(租户VMM)来促进。租户VMM(图1中未明确示出)可以与管理程序(主机VMM)140通信以访问存储器130和处理器112。TD 150A-C的执行状态可以由TDRM 142来进一步启用。TDRM 142可以是管理程序140的扩展,也可以作为管理程序140所支持的单独资源。
在实现方式中,TDRM 142和管理程序140充当TD的主机,并控制TD对处理器112和其他系统硬件的访问。处理器112可以具有一个或多个处理器核114、硬件寄存器116和高速缓存118。存储器控制器120可以控制存储器操作,以包括使用密码引擎136来利用适当的加密密钥对被写入存储器的数据进行加密并且对从存储器读取的数据进行解密。处理器112可以具有进入TDX模式的能力,在TDX模式中,将TDX指令加载到处理器112的硬件寄存器116(诸如,控制寄存器或型号专用寄存器)中,以促进存储器与不属于该TD的TCB的任何软件的隔离。TDRM 142可以进入和退出TDX模式。TDRM 142可充当主机,并且具有对处理器和其他平台硬件的控制。TDRM 142可以向TD(例如,TD 150A)中的软件指派(多个)逻辑处理器,但是可以不在所指派的(多个)逻辑处理器上访问TD的执行状态。类似地,TDRM 142可以将物理存储器和I/O资源指派给TD,但是由于多个单独的加密密钥以及对存储器的其他完整性/重放控制而不参与访问/骗取TD的存储器状态。
TD表示可以支持包括VMM、宾客操作系统和由一个或多个宾客OS托管的各种应用软件的软件栈的软件环境。每个TD可独立于其他TD操作,并且使用由TDRM指派的(多个)逻辑处理器、存储器和I/O。在TD中执行的软件能够以降低的特权操作,使得TDRM可保留对平台资源的控制。另一方面,TDRM无法访问与TD相关联的数据,并且无法以某种其他方式影响TD的机密性或完整性。
TDRM 142(或TDRM的管理程序部分)可以执行加密密钥的管理。例如,TDRM可以将不同的密钥指派给不同的TD,在存储器加密引擎上配置密钥,在要将密钥重新指派给不同的TD时要求执行高速缓存转储清除,等等。在本公开的实现方式中,TD架构中的TDRM 142充当用于TD的主机,并且具有对核和其他平台硬件的完全控制。TDRM 142将(多个)逻辑处理器指派给TD中的软件。然而,TDRM 142可能不具有对在所指派的(多个)逻辑处理器上的TD的执行状态的访问权。类似地,TDRM 142将物理存储器和I/O资源指派给TD,但由于使用由处理器针对每个TD实施的单独的加密密钥以及对存储器的其他完整性和重放控制而不参与访问TD的存储器状态。在TD中执行的软件以降低的特权操作,使得TDRM 142可保留对平台资源的控制。然而,可以不允许TDRM 142通过获得对TD的受信任计算基础的访问权来损害TD的机密性或完整性。
为了进一步提高TD中数据的安全性,TDX架构可以采用安全地生成的K个加密密钥。在一个实现方式中,TDRM 142可以使处理器112(例如,使用指令TDCREATE)为每个TD生成短时存储器加密密钥和对应的密钥标识符(ID)。可以通过唯一密钥ID将加密密钥(例如,K个加密密钥)标识到处理器上运行的软件。在一个实现方式中,用于TD的密钥ID可以被附加到与该TD相关联的物理存储器地址。在启动过程中,基本输入/输出系统(BIOS)(或其他启动固件)可在物理存储器地址中为特定数量的密钥ID分配一定范围的位。例如,在一个实现方式中,BIOS可以将一定范围的位存储在硬件寄存器116(诸如,型号专用寄存器MSR)中。在引导之后,计算系统100可以从MSR检取该一定范围的位,并且采用那些位来对物理存储器地址内的密钥ID进行编码。
在各种实现方式中,每个密钥ID可以是具有二进制表示的任何数字。例如,在一个实现方式中,可以使用从0开始并以K-1结束的K个连续数字的范围。在另一实现方式中,用于加密密钥ID的表示的数字范围可以从不同的数字开始。在一些实现方式中,该范围不需要是连续的。加密密钥ID的二进制编码可以包括M个位,其中M可以是整数,从而使得M≥log2K以确保M个位的各种组合的总数2M不小于不同加密密钥的数量K。
存储器130的物理页可以用加密密钥中的一个来加密。如所讨论,指示用于存储器加密的加密密钥的密钥ID可以被添加到存储器(例如,主机服务器的物理存储器)的物理页的物理存储器地址,这将在下文更详细地解释。在将密钥ID附加到物理存储器地址的情况下,除非存储器操作请求包括页的物理存储器地址和用于对存储器的物理页进行加密/解密的加密密钥的正确密钥ID两者,否则由软件请求的存储器操作可能会失败。存储器操作可以是涉及存储器的物理页的“读取”、“写入”或“执行”操作,其可以涉及存储器130中的高速缓存行。
将受限密钥ID与分配给TD以用于私用的物理存储器的物理存储器地址的级联可以防止对此类存储器的未授权或不安全的访问。为了维持受限加密密钥与非受限加密密钥的硬件隔离,处理器112可能需要启用将密钥ID划分为受限TD密钥ID(例如,分配给TDX)和非受限MK-TME密钥ID(例如,分配给管理程序、TDRM、OS或TD的TCB外部的其他软件),并在执行TDX架构期间在存储在处理器内的一个或多个数据结构(诸如例如,微架构表)中维持此划分。在一些实现方式中,引导软件或固件(例如,BIOS)可以设置此类划分并且将该划分的标识存储在处理器112的硬件寄存器116中的一个硬件寄存器中,该硬件寄存器116在计算系统100的引导之后可以是软件可访问的。这允许系统在主机服务器中运行TD架构和MK-TME技术两者,以启用在TD内部运行的高度安全的虚拟机以及受MK-TME机制保护的未修改的VM。
在一个实现方式中,为了维持与软件(诸如,管理程序140)的隔离,将密钥ID划分为受限和非受限可以是静态的。如果在引导后执行期间确定密钥ID的不同划分可能是最优的,则引导后软件(例如,管理程序140)可以请求对密钥ID进行重新划分。例如,如果要求高度安全的执行的应用的数量已增加,则这可能是有利的。在一些实现方式中,这可以通过引导后软件发起与请求修改密钥ID划分的引导固件/软件的握手机制来完成。在握手完成并确定密钥ID空间的新的期望划分之后,TDRM 142可以使用密钥ID保存当前在处理器上运行的TD的执行状态,并执行系统重新引导。这可以提供灵活性,以基于工作负载和计算系统的当前状态在MK-TME和TDX之间定义密钥ID的划分。
管理程序140可以将逻辑处理器、物理存储器、加密密钥ID、I/O设备等指派给TD,但不能访问TD的执行状态和/或存储在指派给TD的物理存储器中的数据。处理器112可以利用密码引擎136来使用受限的加密密钥以促进安全的数据存储和处置。例如,密码引擎136可以在执行“写入”代码时将数据从一个或多个寄存器116或高速缓存118移动到存储器130之前对该数据进行加密。相反,当在“读取”或“执行”命令之后将数据从存储器130移动到处理器112时,密码引擎136可以对数据进行解密。
处理器112的每个处理器核114可以支持与逻辑处理器相对应的一个或多个硬件线程。在一些实现方式中,处理器核114所支持的逻辑处理器可以由TDRM 142指派给TD150A-C。除了客户端虚拟机的基于TDX的实现方式之外,虚拟化服务器110还可以针对一个或多个客户端设备102A-C执行TD外部的一个或多个VM 155。然而,TD的信任计算基础外部的软件(诸如,TDRM 142和管理程序140)可能不具有对分配给TD的物理存储器页和/或TD的执行状态的访问权,在TD外部操作的虚拟机针对由管理程序140进行的访问可能不是安全的。尽管如此,在每个TD的TCB外部操作的虚拟机仍然可以是安全的而免受源自TD或其他虚拟机的软件访问。在一些实现方式中,可通过密码引擎136使用一个或多个非受限加密密钥来对在处理器112与存储器130之间移动的数据进行加密来防止此类访问。术语“非受限”意指密钥对于管理程序140是可访问的。另一方面,在一些实现方式中,未授权的TD和VM可被禁止将此类密钥用于存储器操作。
另外,在至少一些实现方式中,可以共享非受限密钥中的一个或多个。共享密钥可由两个或更多个实体(诸如,在TDX环境外部运行的TD和VM)访问。共享密钥可以用于访问一个或多个共享结构,诸如共享硬件设备160A和160B,其可以是打印机、键盘、鼠标、监视器、网络适配器、路由器等。例如,为了打印图像或文本页,在TD 150A中操作的软件可能需要在将数据传输到共享硬件设备之前使用共享密钥对数据加密并将经加密的数据存储在存储器130中。在一个实现方式中,共享硬件设备160A可以经由网络接口104连接到虚拟化服务器110。在另一实现方式中,共享硬件设备可以在虚拟化服务器110本地,例如由共享硬件设备160B所示。
存储器控制器120用于控制(多个)处理器核114、寄存器116、高速缓存118和存储器130之间的数据交换。在一些实现方式中,KET 122用于存储加密密钥和加密密钥的密钥ID,并且KOT 124用于存储密钥ID向TD的分配。存储器控制器120还可以耦合到在TDX架构外部运行的VM。
图1B是图示根据一个实现方式的使得TD架构与MK-TME技术能够共存的计算系统的处理器的示例处理器核的框图。在图1B所示的实现方式中,每个处理器核114可以包括高速缓存118A、硬件虚拟化支持电路117和硬件寄存器116A。每个处理器核102可以经由多核处理器封装上的互连网络107与对应的高速缓存和归属代理(CHA)109通信,并且与存在于多核处理器封装外部的一个或多个系统代理170进行通信。CHA 109可以以高速缓存行粒度对归属在该存储器中(例如,在其本地)的存储器的高速缓存行的副本进行高速缓存。在不同的实现方式中,互连网络107是外围组件互连(PCITM)总线,诸如,外围组件互连快速(PCIeTM)总线或另一定制总线。系统代理170可以包括盘存储、设备驱动器、I/O设备等。
处理器核114可以执行指令以运行多个硬件线程,硬件线程也称为逻辑处理器,包括第一逻辑处理器119A、第二逻辑处理器119B等,直到第N逻辑处理器119n。在一个实现方式中,第一逻辑处理器119A是虚拟机监视器(VMM)或管理程序。多个虚拟机(VM)155可以由VMM执行和控制。另外,如所讨论的,VMM可以将与对应的加密密钥相关联的密钥ID指派给在计算系统100上操作的各种安全域(例如,VMM、VM)。
进一步参考图1B,硬件寄存器116A可以例如包括多个通用寄存器(未示出,例如EAX、EBX、ECX、EDX等)、型号专用寄存器116B(或MSR)和控制寄存器116C(例如CR1、CR2、CR3等)。在一个实现方式中,计算系统100是服务于多个域(例如,不同工作负载,诸如,客户机、操作系统、应用或所支持的其他类型的工作负载之类)的服务器。
另外参考图1A,并且在各种实现方式中,密码引擎136被具体化为能够执行本文所述功能的微控制器、微处理器、功能块、逻辑或其他电路或电路集合。密码引擎136可以对缓存内部密钥数据结构121进行高速缓存,密码引擎136可以使用内部密钥数据结构121来识别要保护的域访问。密钥数据结构121可以是能够被索引并存储在密码引擎136的硬件内的表或其他数据结构。在一个实现方式中,硬件是高速缓存、寄存器的集合或其他闪存。
在各种实现方式中,密钥数据结构121可以由密码引擎136的硬件或由受信任软件控制和/或编程,例如使用处理器112的密码引擎编程支持电路。密钥数据结构121可以适于存储针对域的密钥和域信息,如将参考图2C-2D更详细地所讨论。密钥数据结构121的加密密钥和/或其他秘密信息可以对不受信任的软件(例如,OS或VMM)不可用。在一些实现方式中,密码引擎136可以与存储器控制器120和处理器核114一起被合并在计算系统100的片上系统(SoC)中
在计算系统100引导时,可以使用硬件寄存器116内的TME激活(TME_ACTIVATE)MSR,由BIOS配置的密码引擎136启用加密密钥和与加密密钥关联的密钥ID。为了启用MK-TME,可以对TME_ACTIVATE MSR中的TME启用RWL位置位,并且可以将位35:32置位为非零值,这些非零值指定为MK-TME配置的密钥ID位的数量。这些MK_TME_KEYID_BITS是分配给MK-TME的密钥ID位的数量。与枚举类似,这是编码值。写入大于最大支持“密钥ID”位的枚举数的值可能会导致通用保护错误(#GP)。如果EAX(TME启用)的位1也未置位为1,则将非零值写入该字段会导致通用保护错误,因为要启用TME以使用MK-TME。TME_ACTIVATE MSR也可以用于锁定其他与TME相关的MSR(例如EXCLUD_MASK、EXCLUDE_BASE),从而使得在寄存器被锁定后对寄存器的任何写入都将被忽略。当计算系统100被重置时,锁定可以被重置。
在一些实现方式中,当计算系统100被引导时,BIOS可以将特定信息存储在TME_ACTIVATE MS中以便稍后在限制对受限加密密钥和密钥ID的访问时由处理器122(例如,存储器控制器120)使用。该信息可以包括用于密钥ID的物理存储器地址(例如,主机物理地址)的多个地址位的值。由BIOS存储到TME_ACTIVATE MSR中的特定信息可以进一步包括划分标识符(例如,划分密钥ID),用于将密钥ID划分为非受限密钥ID和受限密钥ID。此外,在一个实现方式中,物理存储器地址的第二多个受限位可以存储在TME_ACTIVATE MSR中,该TME_ACTIVATE MSR指定从非受限密钥ID中划分受限密钥ID的方式。
图2A图示划分为TDX和MK-TME密钥ID的加密密钥ID空间200,在一个实现方式中,其中单个边界将非受限密钥ID与受限密钥ID分开。在引导时,处理器112可以在寄存器116的MSR内存储用于密钥ID编码的位范围。位范围可以支持K个密钥ID来标识K个加密密钥。处理器112可以进一步在MSR内标识密钥ID空间的空间划分200。在一个实现方式中,K个密钥ID可以被划分为KMR个非受限密钥ID和KTD个受限密钥ID,以使得KMR+KTD=K。在图1A所示的虚拟化实现方式中,非受限密钥ID可以是分配给管理程序140的MK-TME密钥ID(例如,用于分配给共享设备)。可以将受限密钥ID分配给TD基础结构,然后进一步分配给一个或多个TD150A-C
在一个实现方式中,可以将密钥ID映射到范围从0到K-1的整数的连续区间上。非受限密钥ID可以映射到范围从0至KMR-1的较低连续编号组,而受限密钥ID映射到范围从KMR至K-1的较高连续编号组。在图2A中所示的实现方式中,受限密钥ID与非受限密钥ID之间的一个边界被定义,例如驻留在密钥ID=KMR行之下。尽管将密钥ID空间划分为两个连续的范围在一些实例中可以是有利的,但在其他实现方式中,可以定义多个边界,以使非受限密钥ID的多个区域与受限密钥ID的区域间隔开。
图2B是根据各种实现方式的n位的物理存储器地址201的框图,该n位的物理存储器地址201包括地址位的分配给密钥ID的部分。地址位的该部分可以包含M个位,其可以是至少Log2K。图2B中的虚线图示所支持的最大物理地址宽度。因此,使用物理存储器地址的高地址位中的至少一些来对密钥ID进行编码可能是有利的。然而,在其他实现方式中,密钥ID的M个位可以位于物理存储器地址内的其他地方,包括超出最大物理地址宽度。
对于其他划分实现方式,边界的数量甚至可以更大。在一个实现方式中,受限密钥可以与非受限密钥ID一个接一个地间隔开。作为示例,如果仅用于密钥ID编码的M个位中的最低位是受限位,则可能发生这种情况。假设此最低位针对受限密钥ID被置位,并且针对非受限密钥ID被清除,则每个偶数(和第0个)密钥ID均为非受限密钥ID,并且每个奇数密钥ID均为受限密钥ID。在此类实现方式中,受限密钥ID的数量与非受限密钥ID的数量相同。
在MK-TME架构(具有或不具有TDX)中,可以使用加密密钥中的一个加密密钥对每个存储器页进行加密。处理器112可以经由存储器控制器120实施加密密钥使用。存储器控制器120可以包括或耦合到密钥数据结构121,该密钥数据结构121包括图2C-2D中所示的多个表以启用这种实施。例如,存储器控制器可以包括KET 122,其存储加密密钥到密钥ID的映射,如图2C中所示,用于其中K=128个总密钥和KTDX=96个受限密钥的一个实现方式。在一个实现方式中,加密密钥255可以是128位的密钥。可以通过密钥ID 250来索引KET 122。可以如上所述实现密钥ID(以及因此加密密钥)的划分。当存储器操作针对在存储器的物理页的物理存储器地址时,处理器可以从用于密钥ID编码的物理存储器地址的高M位提取密钥ID。然后,处理器可以参考KET 122,以确定将使用哪个加密密钥来对存储器的物理页进行解密和加密。
在一些实现方式中,污染状态位260的附加行被添加到KET 122,其中污染状态位260的每个状态位指示对应的密钥和密钥ID对是否已被污染。在以下情况下可以对污染状态位置位:尽管在存储器读取请求期间存储器所有权位已与访问类型匹配,但存在MAC不匹配。(注意,本文中对“读取请求”的任何引用应解释为还包括“执行请求”作为存储器130的两个访问高速缓存行)。MAC不匹配可以是尝试建立经加密的数据的字典和/或蛮力尝试找到与高速缓存行一起被存储的或与高速缓存行相关联的MAC的匹配的指示。将参考图7A-7B详细讨论为什么可以对KET 122中的污染状态位置位的细节。
在各种实现方式中,一旦密钥已经以这种方式被污染,则密码引擎136响应于使用对应的污染的密钥ID的存储器访问请求(例如,写入、读取、执行)而将完整性故障返回到请求代理。在一个实现方式中,KET 122是用于配置密码引擎136的微架构硬件表。可以通过TDCONFIGKEY指令将KET122划分为TDX密钥和MK-TME密钥。在一些实现方式中,污染状态位通过执行PCONFIG(或类似的处理器配置指令)被清除以对密钥ID重新编程以便与新的密钥一起使用,但旧的“污染的”密钥现在是无效的,并将不被再次使用。以此方式,攻击者就不能够在将来的任何时候使用污染的密钥来访问数据。
存储器控制器120还可包括或耦合至KOT 124(图2D)。KOT 124可以存储密钥ID250向各种TD以及向在每个相应TD的TCB外部运行的软件(诸如,管理程序140)的分配265。在一个实现方式中,KOT可以由密钥ID 250索引。对于每个密钥ID 250,KOT 124可以存储对密钥ID 250当前被指派到的实体的引用。例如,可以将第一非受限密钥ID=0分配给管理程序140,以对在管理程序根操作中使用的物理存储器页进行加密。多个其他非受限密钥ID250可以进一步被分配给管理程序140或由管理程序140使用。管理程序可以进一步将非受限密钥ID 250中的一些分配给其他应用,诸如,在TDX架构外部运行的VM 155。KOT 124还可以存储受限密钥ID向各种被执行的TD:TD1、TD2、TD3等的分配。可以将多于一个的受限密钥ID 250分配给同一TD。受限密钥ID 250中的一些可以不被指派给任何TD,但根据需要可以被预留供以后使用。
在实现方式中,KOT 124是微架构硬件表,用于管理TDX和MK-TME库存,特别用于将密钥ID 250指派给TD 150A-C,撤销密钥ID 250以及在将密钥ID 250重新指派给不同的TD之前控制对高速缓存118的转储清除。KOT 124可以提供针对相同的TDX密钥ID向不同的TD的多个同时指派的硬件保护。
在实现方式中,KET 122和KOT 124被组合成同一密钥数据结构121,因为两者均由密钥ID索引。此外,存储器控制器120和/或密码引擎136可以引用KET 122和KOT 124中的任一者或这两者,以便确定位于存储器操作的物理地址内的密钥ID是否是TD密钥ID。因为KET122和KOT 124是在处理器112的硬件中实现的,所以这些表不能由软件直接访问。这允许处理器112跟踪软件的适当操作并保证TDX安全性目标。
在各种实现方式中,当存储器控制器120检测到针对分配给特定TD的存储器的物理页的存储器操作时,存储器控制器120可在许多情况下产生故障和/或中止过程,这些情况包括但不限于以下情况:1)包括级联到物理存储器地址的非受限ID的存储器操作,而存储器的物理页是分配给TD的私有页。2)包括错误的受限密钥ID的存储器操作,该错误的受限密钥ID级联到物理存储器地址,对于该物理存储器地址,期望不同的受限密钥ID。3)包括级联到物理存储器地址的正确的受限密钥ID的存储器操作,但是该存储器操作由向其分配了受限密钥ID的TD的TCB外部的软件程序发起(例如,由管理程序140或由在不同TD内执行的软件程序发起的存储器操作)。
特别地,在第一种情况下,在TD 150A中执行的受信任软件可能错误地将非受限(共享或非共享)MK-TME请求密钥ID级联到存储器的私有物理页的物理存储器地址,该物理存储器地址使用分配给TD 150A的受限TDX密钥中的一个被加密(或在写入操作的情况下,期望将被加密)。在这种情况下,存储器控制器120可以经由密码引擎136检测到没有请求密钥ID的受限位被置位并且因此检测到请求密钥ID不是受限密钥ID中的一个。
相应地,存储器控制器120可以响应于确定了请求密钥ID的受限位中的至少一个被置位(或在一些实现方式中,被清除,如上文所讨论)而生成错误,例如,非受限密钥页错误。该错误可以用于向发起存储器操作的软件程序通知在受限密钥被期望的情况下已经使用了非受限密钥。在一些实现方式中,存储器控制器120可以进一步检测到存储器操作源自于TD 150A的信任计算基础外部(例如,来自TD 150B-C中的一个、在TD外部操作的VM 155中的一个、管理程序140等的操作)并生成静默中止页语义。在一些实现方式中,这可能意味着静默地忽略写入操作,而读取操作返回具有固定模式(例如,具有全零值或全一值的位)的无效数据。
图3是根据一个实现方式的用于对TD进行软件攻击的方法300的流程图。尽管使用VMM 140为例,但是可以通过在CSP组件或设备或通过CSP组件或设备进行远程通信的组件或设备上执行的处理逻辑来执行攻击。在图3的攻击场景中,存在属于TD的物理地址A处的高速缓存行(305)。仍在调度决策控制下的VMM 140挂起拥有该高速缓存行的TD(310)。VMM140可以进一步创建代码序列以允许其推测性地访问该高速缓存行(315)。由于完整性失败不导致机器校验异常(MCE),因此使用推测性访问进行攻击更容易。因此,如果非推测性地执行攻击,则将花费更多时间进行攻击,并且必须等待MCE清除。
在实现方式中,考虑到高速缓存行是完整性受保护的,由于VMM 140不知道TD所使用的密钥,因此VMM 140对高速缓存行的访问导致完整性失败。完整性失败通过在发送到核114的高速缓存行中断言污染位。该污染位目前是用于指示来自存储器130的不可纠正的纠错码(ECC)错误的手段。伴随着污染了该数据,该数据被返回为固定的位模式,例如,可以全为零值,全为一值,或者每隔一位为零值和一值,还有其他可能性。当在核上消耗了污染数据时,将导致MCE。注意,可以有其他方式将完整性失败往回用信号通知核,并且此处突出的攻击可以适于由该实现方式所选择的特定方法。
在实现方式中,VMM 140可以确定所返回的数据是否具有固定的位模式(320)。如果是,则VMM 140知道该密钥不正确并且改变密钥(325)。对于不同的密钥,VMM 140可以重复对高速缓存行A的访问尝试(315),其中可以执行尝试,直到找到生成与使用地址A处的密文的TD密钥生成的MAC相同的MAC的密钥为止。注意,成功完成此操作可能要求的尝试次数取决于MAC的强度。但是,由于MAC比数据小得多,因此最终将产生冲突,并且由于可以在较短的时间段内完成蛮力猜测,因此量子计算机的能力使执行这种攻击更加可行。此外,较小的MAC增加发现此类冲突的可能性,因此增加这种攻击成功的可能性。
为了使VMM 140不能通过完整性失败被检测到,可以推测性地完成对TD数据的访问,并且VMM可以留下踪迹以检测特定的尝试是否成功。在其中污染和清零的数据返回到核的特定实现方式中,VMM 140可以留下踪迹以指示在没有固定的位模式的情况下加载的数据,这将表明尝试成功。此类踪迹的示例可以是以下情况:其中VMM 140在检测到来自A的没有固定模式的数据时加载特定的存储器位置,然后在非推测性路径中加载相同的位置并测量访问时间以确定位置是否在高速缓存中。使用这些边信道,VMM 140可以确定它何时找到了为使用TD的密钥生成的那个数据生成冲突的MAC的密钥。VMM可以记录该数据和用于生成冲突的MAC的密钥(330)。然后,VMM 140可以恢复TD以允许TD继续执行(335)。
在当前攻击场景中,在稍后时刻,当TD已将新值写入A时,VMM 140使用它找到的冲突的密钥和所记录的数据,并且向A写入(340)。此写入可以还原TD的域中的VMM 140稍早已记录的密文,由此成功地向TD重放旧数据。注意,攻击可针对重放可以导致破坏TD安全性的位置,诸如,重放计数器值的情况,该计数器值跟踪到计算机、设备或应用中的不成功的登录尝试。以此方式,攻击者几乎可以无限次尝试登录,并通过蛮力确定密码。
注意,尽管上述攻击在完整性失败时将数据中的固定位模式用作侧信道来检测完整性失败,但在其他实现方式中可能存在其他侧信道来检测完整性失败,这使得这些攻击在广泛地适用于不同的实现方式。另外,参考图3讨论的攻击也可以由VMM 140非推测性地完成。在这种情况下,VMM可以简单地使用处理器核上的MCE来检测完整性失败,而不必依赖污染位或固定数据模式指示。在其他实现方式中,存在其他已知的攻击,其中VMM 140可以发现刚好知道密文数据或更改为密文数据的明文数据。作为示例,VMM 140可以使用频率分析来构造密文值的字典,以确定在TD中的特定位置处的明文数据。
因此,如果不受信任的软件被允许甚至对需要被保护并且与不受信任的软件(例如,在示例场景中,VMM,但是其他不受信任的基于CSP的软件也呈现风险)隔离的数据进行基于密文的访问,则可以进行多种攻击。存储器所有权位被设计为以各种方式保护所针对的正是这些攻击类型,这些方式可以包括其他或不同类型的完整性校验,这将参考图4-6和图7A-7B更详细地讨论。
图4是图示根据一个实现方式的密码引擎与所有权位进行交互以跟踪高速缓存行的TD所有权的功能流程图400。在各种实现方式中,来自处理器核114的写入或读取请求(包括执行请求)的流包括与存储器130中的高速缓存行通信的CHA 109、存储器控制器120和/或密码引擎136。在实施例中,每个高速缓存行用于存储加密的(例如,密文)数据405和元数据,该元数据包括与本公开相关的消息认证码(MAC)410和纠错码(ECC)位415。
在一个实现方式中,每个高速缓存行中的ECC位415中的一个位被用作所有权位(OB)416,以指示经加密的数据是否属于TD中的任何一个,例如TD 150A、150B、150C或其他TD。在另一可选实现方式中,存储器130包括经隔绝的存储器430的区域,在该经隔绝的存储器430的区域中针对所有高速缓存行的所有权位被存储并且针对它们的对应高速缓存行被索引。由于将这些所有权位存储在经隔绝的存储器430中使用了附加的存储器访问,因此如果被实现,则经隔绝的存储器430中的所有权位可以被高速缓存在OB高速缓存118A(例如,处理器112的管芯上的高速缓存(图1A))中。
对于TDX,如参考图2A-2D所解释的,密钥ID被拆分为TD密钥ID和非TD密钥ID,并且密码引擎136可以使用该知识将传入的访问分类为TD访问或非TD访问。在一些实现方式中,将所有权位与高速缓存行一起使用与其他机制结合以允许在虚拟化服务器110上运行的TD之间的分离,并且TDX架构具有被架构设计为实施该隔离的机制。在引导时,存储器130是非TD存储器。在实现方式中,TDX受信任的组件(例如,TCB中的实体,如存储控制器120的微代码或其他处理逻辑)将非TD存储器转换为TD存储器。在另外的实现方式中,VMM 140可以在任何时刻将存储器130的部分从TD转换为非TD存储器,但是在TD仍正在运行时这样做且使用存储器130导致TD中的完整性失败。
图5是根据一个实现方式的用于在将高速缓存行写入存储器时写入所有权位的方法500的流程图。方法500可以由处理逻辑执行,该处理逻辑可以包括硬件(例如电路、专用逻辑、可编程逻辑、微代码等等)、固件、或其组合。在一个实现方式中,方法500由图1A的处理器112执行,例如由存储器控制器120执行。在另一实现方式中,方法500由参照图8A-图14所描述的处理器中的任一处理器执行。
参考图5,方法500可以开始于:处理逻辑在对高速缓存行的写入请求内检测存储器中的位置的物理地址内的密钥标识符(ID)(505)。方法500可以继续:处理逻辑确定密钥ID是否是多个密钥ID中的信任域(TD)密钥ID(510)。方法500可以继续:处理逻辑响应于密钥ID是TD密钥ID,对高速缓存行的所有权位置位(例如,置位为“1”)以指示高速缓存行属于信任域(515A)。方法500可以继续:处理逻辑响应于密钥ID不是TD密钥ID,不对高速缓存行的所有权位置位(例如,保留该值为“0”)以指示高速缓存行不属于信任域(515B)。方法500可以继续:处理逻辑对高速缓存行进行加密以生成经加密的数据(520)。方法500可以继续:处理逻辑确定与高速缓存行相关联的消息认证码(MAC)(525)。方法500可以继续:处理逻辑将经加密的数据、所有权位和高速缓存行的MAC写入存储器(530)。在不同的实现方式中,所有权位可以与高速缓存行一起被存储(例如,存储在ECC位415中的一个位中)或被存储在存储器430的隔绝范围内。
在实现方式中,密码引擎136可以通过对至少经加密的数据、经加密的物理地址和所有权位的组合应用带密钥的散列算法(例如,SHA-3或任何数量的其他算法)或带密钥的MAC来生成MAC。可选地,在应用带密钥的散列算法之前,也可以将物理地址的明文添加到该其他数据中。密钥可以对向散列算法加密钥的攻击者未知的单独平台或循环移位密码密钥。由于物理地址(无论加密与否)被合并到对其应用了带密钥的散列算法的数据中,因此MAC部分地取决于密钥ID。因为密钥ID还标识它是否是TD,所以在不具有对密钥ID的访问权的情况下更难以验证MAC。更具体地,可以将微调合并到MAC中,该微调包括用域专用微调密钥加密的物理地址,并使MAC依赖于密钥ID,或更具体地,依赖于与密钥ID相关联的密钥。
在一些实现方式中,另外参考图5,方法500可以可选地继续:处理逻辑部分地使用所有权位来计算ECC位的值(535)。方法500可以继续:处理逻辑将ECC位作为高速缓存行的一部分写入存储器中(540)。以这种方式,为了结合将高速缓存行写入存储器来生成ECC计算,密码引擎136进一步将所有权位包括在ECC计算内。
图6是根据一个实现方式的用于在读取存储器中的高速缓存行时读取所有权位的方法600的流程图。方法600的流程可以特别地用于利用具有已经被设置有完整性的密钥ID对存储器进行访问。方法600可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等等)、固件、或其组合。在一个实现方式中,方法600由图1A的处理器112执行,例如由存储器控制器120执行。在另一实现方式中,方法600由参照图8A-图14所描述的处理器中的任一处理器执行。
参考图6,方法600可以开始于:处理逻辑在来自处理器核114的对高速缓存行的读取请求内检测存储器设备130中的位置的物理地址内的密钥标识符(ID)(605)。方法600可以继续:处理逻辑确定密钥ID是否是TD密钥ID(610)。方法600可以继续:处理逻辑响应于密钥ID是TD密钥ID而记录访问类型位(例如,“1”)以指示密钥ID是TD密钥ID(615A)。方法600可以继续:处理逻辑响应于密钥ID不是TD密钥ID而记录访问类型位(例如,“0”)以指示密钥ID不是TD密钥ID(615B)。
另外参考图6,方法600可以继续:处理逻辑从存储器读取高速缓存行(620)。方法600可以继续:处理逻辑确定访问类型位的值是否与所有权位的值匹配(625)。如果不存在匹配,则方法600可以继续:处理逻辑响应于读取请求而返回污染位和与固定模式匹配的无效数据(630),例如,跳过任何完整性验证。以此方式,尝试访问TD数据的、作为非TD代理的攻击者仅获得无效数据,并且不获得TD的敏感的经加密的数据。
如果在框625处存在匹配,则方法600可以继续:处理逻辑验证相对于MAC的完整性(635)。如果MAC未被验证,则方法600可以继续:处理逻辑返回污染位和与固定模式匹配的无效数据(640)。如果MAC被验证,则方法600可以继续:处理逻辑利用对应于密钥ID的加密密钥来对高速缓存行的经加密的数据解密,以生成经解密的数据(645)。方法600可以继续:处理逻辑将经解密的数据返回到请求代理(650)。回到先前描述的攻击场景,不管所使用的完整性算法的强度,图6的方法600都确定性地确保由VMM 140(或不受信任的软件)进行的访问TD存储器的尝试将导致完整性失败,由此击败前述的攻击。
在实现方式中,即使不执行框635处的完整性校验(例如,方法600直接进入框645和650),那么框625处的所有权位和访问类型位的值的不存在匹配仍将导致将具有固定的位模式的无效数据发送到请求方。以此方式,在甚至没有完整性的读取请求流中,如果请求代理不是TD,则该请求代理也无法访问密文数据然而,在一个实现方式中,不返回污染位。
所有权位提供针对恶意VM与恶意VMM串通的确定性保护。硬件负责对存储器130中的所有权位置位。更具体地,存储器控制器120或密码引擎136中的一个可以负责对在系统上运行的任何软件都无法访问的所有权位置位。密码引擎136可以使用传入请求的密钥ID来确定所有权位(图5、6和6),并实现以下规则,即:1)非TD请求(可以来自恶意VM)/VMM)永远无法取得对密文的访问权(返回固定的位模式);并且2)具有完整性的非TD请求在访问TD数据时确定性地导致完整性失败。这与MAC验证结果无关。
上面的规则确保没有向软件的密文泄漏,并且非TD软件不能构造蛮力攻击来伪造MAC。攻击者还可以使用恶意TD来尝试攻击受害者TD。由于TD总是以完整性启动,因此恶意TD不能在不导致完整性失败的情况下读取受害者的TD密文,从而防止攻击者的TD构造字典。类似地,与VMM串通以进行上述重放攻击的TD具有有限的控制,这体现在只能通过重新启动TD来更改与TD相关联的密钥,因此使得蛮力攻击在确定正确密钥所要求的时间内是不切实际的。
在一些实施例中,因为BIOS能够创建地址范围,所以BIOS可创建别名是可能的,例如,其中最高有效的位往回别名到较低的地址位。由于别名,两个TD访问同一存储器位置是可能的,例如BIOS已创建了映射到同一物理存储器两个不同范围的存储器地址。然后,VMM140可将这两个不同范围的存储器地址映射到两个不同的TD,例如,TD 150A和TD 150B。假定TD150A被挂起,并且TD 150B进入并使用密钥ID_B(仅使用不同的别名地址)开始读取存储器范围中的数据。这几乎每次都将导致完整性失败。对于每2N(其中N是MAC中的位数)次访问中的1次,由于存储器中的位置导致MAC校验通过,因此读取访问将在不伴随完整性失败的情况下通过。换句话说,攻击者发现了MAC冲突,因此知道了起作用的密钥,并且稍后可以重放到该相同位置。
尽管这种攻击的几率使攻击的较不强大,因为这种攻击不允许攻击者控制特定位置的重放,但是允许攻击以对某个位置进行重放,这可能会或可能不会引起关注。借助此攻击,攻击者可以启动恶意TD,并使用受害者TD的存储器的范围的别名来通过其别名推测性地读取受害者的存储器。这将可能导致完整性失败,这不是由于使用了属于攻击者TD的错误密钥,而是由于N位的MAC,其中在2N次尝试之后,存在发现MAC冲突的可能性。即使此攻击的有用性可以说比目标攻击要低得多,因为存在攻击者找到冲突对于进行重放是有意义的位置的2N次中一次的概率。尽管如此,采用密钥污染的实现方式(图7A-7B)将防止甚至这种类型的罕见攻击。
图7A-7B是根据各种实现方式的在高速缓存行读取操作期间使用所有权位和密钥ID污染指示符的方法700的流程图。方法700可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等等)、固件、或其组合。在一个实现方式中,方法700由图1A的处理器112执行,例如由存储器控制器120执行。在另一实现方式中,方法700由参照图8A-图14所描述的处理器中的任一处理器执行。利用先前讨论的硬件或软件攻击的类型,处理器112将停止执行怀疑被攻击的TD。当执行被停止时,在一些实现方式中,如果所有权位在TD存储器访问上匹配并且存在完整性失败,则密码引擎136可污染密钥。密钥被污染的结果是在KET 122(图2C)内的污染状态位的断言。
另外参考图7A,方法700可以开始于:处理逻辑在来自处理器核的对高速缓存行的读取请求内检测存储器设备中的位置的物理地址内的密钥标识符(ID)(705)。方法700可以继续:处理逻辑确定密钥ID是否是TD密钥ID(710)。如果否,则根据先前的非TD访问请求来处置读取请求,例如,在通过完整性校验之后,假设存储器访问位指示非TD数据,则返回未加密的数据(715)。如果是,则密钥ID是TD密钥ID,方法700可以继续:处理逻辑从存储器读取高速缓存行的数据(720)。
继续参考图7A,方法700可以继续:处理逻辑确定存储在存储器中的用于高速缓存行的所有权位是否指示高速缓存行属于TD(725)。如果所有权位指示非TD高速缓存行,则方法700可以继续:处理逻辑遵循正常的非TD流程,例如,通过在返回未加密数据之前应用完整性校验(730)。如果所有权位指示高速缓存行属于TD,则方法700可以继续:处理逻辑确定密钥ID是否已经被污染,例如通过校验如参考图2C所讨论的密钥数据结构(例如,KET 122)的污染状态位(735)。如果密钥未被污染,则方法700可以继续:处理逻辑验证完整性并且继续图7B的流程(750)。如果密钥被污染,则方法700可以继续:处理逻辑响应于读取请求而返回污染位和与固定模式匹配的无效数据(745)。以此方式,如果密钥被污染,则恶意VM或VMM(或其他CSP软件或代理)将仅得到无效数据。如果未被污染,则方法700继续到图7B。
另外参考图7B,方法700可以继续:处理逻辑确定是否存在完整性失败,例如通过将所生成的MAC与高速缓存行的MAC进行比较(750)。如果完整性校验通过,则方法700可以继续:处理逻辑返回经解密的数据(755)。如果完整性校验没有通过,则方法700可以继续:处理逻辑响应于读取请求而返回污染位和与固定模式匹配的无效数据(760)。方法700可以继续:处理逻辑确定是否针对处理器启用了密钥污染(765)。如果否,则密钥以及对应的密钥ID未被污染(770)。如果是,则方法可以继续:处理逻辑污染与密钥ID相关联的密钥,例如通过对在图2C所示的KET 122中的污染状态位260置位(775)
如上文所讨论,污染状态位可以通过执行PCONFIG(或类似的处理器配置指令)被清除,以对密钥ID重新编程以便与新的密钥一起使用,而旧的“污染的”密钥现在是无效的,并不会被再次使用。此外,存储在存储器中的使用被污染密钥来加密的任何数据被清除掉。以此方式,攻击者无法在将来的任何时候使用污染的密钥来访问数据。
图8A是图示用于处理器800的微架构的框图,该处理器800实现使用高速缓存行上标记的所有权位来进行TD存储器访问校验。具体而言,处理器800描绘根据本公开的至少一个实现方式的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。
处理器800包括前端单元830,该前端单元830耦合至执行引擎单元850,并且前端单元830和执行引擎单元850两者都耦合至存储器单元870。处理器800可包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,处理器800可包括专用核,诸如例如,网络或通信核、压缩引擎、图形核,等等。在一个实现方式中,处理器800可以是多核处理器或者可以是多处理器系统的部分。
前端单元830包括耦合至指令高速缓存单元834的分支预测单元832,该指令高速缓存单元834耦合至指令转换后备缓冲器(TLB)836,该指令转换后备缓冲器836耦合至指令取出单元838,该指令取出单元838耦合至解码单元840。解码单元840(也称为解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码器840可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元834进一步耦合至存储器单元870。解码单元840耦合至执行引擎单元850中的重命名/分配器单元852。
执行引擎单元850包括重命名/分配器单元852,该重命名/分配器单元852耦合至引退单元854和一个或多个调度器单元的集合856。(多个)调度器单元856表示任何数量的不同调度器电路,包括预留站(RS)、中央指令窗等。(多个)调度器单元856耦合至(多个)物理寄存器集合单元858。(多个)物理寄存器集合单元858中的每一个物理寄存器集合单元表示一个或多个物理寄存器集合,这些物理寄存器集合中不同的物理寄存器集合存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等、状态(例如,作为要执行的下一条指令的地址的指令指针)等。(多个)物理寄存器集合单元858由引退单元854重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器集合;使用(多个)未来文件、(多个)历史缓冲器、以及(多个)引退寄存器集合;使用寄存器映射和寄存器池;等等)。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器只要能够存储并提供如本文中所描述的数据,那么它们就是合适的。合适寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及专用物理寄存器和动态分配的物理寄存器的组合等。引退单元854和(多个)物理寄存器集合单元858耦合至(多个)执行集群860。(多个)执行集群860包括一个或多个执行单元的集合862和一个或多个存储器访问单元的集合864。执行单元862可执行各种操作(例如,移位、加法、减法、乘法)并可对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)进行操作。
尽管一些实现方式可以包括专用于特定功能或功能集的多个执行单元,但是其他实现方式可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元856、(多个)物理寄存器集合单元858、以及(多个)执行集群860被示出为可能是复数个,因为某些实现方式为某些数据/操作类型创建了分开的流水线(例如,各自都具有它们自己的调度器单元、物理寄存器集合单元和/或执行集群的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线——并且在分开的存储器访问流水线的情况下,某些实现方式被实现为其中仅该流水线的执行集群具有(多个)存储器访问单元864)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合864耦合至存储器单元870,该存储器单元870可包括数据预取器880、数据TLB单元872、数据高速缓存单元(DCU)874、以及第二级(L2)高速缓存单元876,仅举数例。在一些实现方式中,DCU 874也被称为第一级数据高速缓存(L1高速缓存)。DCU 874可处置多个未决的高速缓存未命中,并继续服务传入的存储和加载。它还支持维护高速缓存一致性。数据TLB单元872是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实现方式中,存储器访问单元864可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元870中的数据TLB单元872。L2高速缓存单元876可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
在一个实现方式中,数据预取器880通过自动地预测程序将消耗哪些数据来推测性地将数据加载/预取到DCU 874。预取可以指在存储在存储器层级结构(例如,较低级别的高速缓存或存储器)的一个存储器位置(例如,地点)中的数据被处理器实际要求之前,将该数据传送至更靠近(例如,产生更低的访问等待时间)处理器的较高级别的存储器位置。更具体地,预取可以指在处理器发布对正在被返回的特定数据的需求之前,对从较低级别高速缓存/存储器中的一个较低级别高速缓存/存储器到数据高速缓存和/或预取缓冲器的数据的早期检取。
处理器800可支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、英国赫特福德郡金斯兰利的想象技术公司(Imagination Technologies)的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有任选的附加扩展,诸如NEON))。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所图示的实现方式也包括单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代实现方式可具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存、或多个级别的内部高速缓存。在一些实现方式中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图8B是图示根据本公开的一些实现方式的由图8A的处理器800实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图8B中的实线框图示出有序流水线801,而虚线框图示出寄存器重命名、乱序发布/执行流水线803。在图8B中,流水线801和流水线803包括取出级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也被称为分派或发布)级812、寄存器读取/存储器读取级814、执行级816、写回/存储器写入级818、异常处置级822和提交级824。在一些实现方式中,级802-824的排序可以与所图示的不同,并且不限于图8B中所示的特定排序。
图9图示根据本公开的实现方式的用于处理器900的微架构的框图,该处理器900包括实现针对使用高速缓存行上标记的所有权位来进行TD存储器访问校验的硬件支持的处理器或集成电路的逻辑电路。在一些实现方式中,根据一个实现方式的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸如单精度整数、双精度整数、单精度浮点和双精度浮点类型之类的数据类型的数据元素进行操作。在一个实现方式中,有序前端901是处理器900的部分,该部分取出将要被执行的指令,并准备这些指令以便稍后在处理器流水线中使用。可以在处理器900中实现页添加和内容复制的实现方式。
前端901可包括若干单元。在一个实现方式中,指令预取器926从存储器取出指令,并将指令馈送至指令解码器928,指令解码器928进而对指令进行解码或解释。例如,在一个实现方式中,解码器将接收到的指令解码为机器可以执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实现方式中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构用于执行根据一个实现方式的操作。在一个实现方式中,跟踪高速缓存930取得经解码的微操作,并将它们组装为微操作队列934中的按程序排序的序列或踪迹以供执行。当跟踪高速缓存930遇到复杂指令时,微代码ROM(或RAM)932提供完成操作所需的微操作。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实现方式中,如果需要多于四个微操作来完成指令,则指令解码器928访问微代码ROM 932以进行该指令。对于一个实现方式,指令可被解码为少量的微操作以用于在指令解码器928处进行处理。在另一实现方式中,如果需要数个微操作来完成操作,则可将指令存储在微代码ROM 932中。跟踪高速缓存930参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 932读取微代码序列以完成根据一个实现方式的一条或多条指令。在微代码ROM 932完成对于指令的微操作定序之后,机器的前端901恢复从跟踪高速缓存930取出微操作。
乱序执行引擎903是将指令准备好用于执行的地方。乱序执行逻辑具有数个缓冲器,用于将指令流平滑并且重排序,以在指令流沿流水线向下行进并被调度以供执行时优化性能。分配器逻辑分配每一个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将逻辑寄存器重命名为寄存器集合中的条目。在指令调度器(存储器调度器、快速调度器902、慢速/通用浮点调度器904、以及简单浮点调度器906)之前,分配器也将每一个微操作的条目分配在两个微操作队列中的一个微操作队列中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器902、904、906基于对它们的依赖性输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实现方式的快速调度器902可在主时钟周期的每半个周期上进行调度,而其他调度器可仅仅在每一个主处理器时钟周期上调度一次。调度器对分派端口进行仲裁以调度用于执行的微操作。
寄存器组集合908、910位于调度器902、904、906与执行块911中的执行单元912、914、916、918、920、922、924之间。存在分别用于整数操作和浮点操作的单独的寄存器集合908、910。一个实现方式的每一个寄存器集合908、910也包括旁路网络,该旁路网络可以将尚未被写入到寄存器集合中的刚完成的结果旁路或转发至新的依赖性微操作。整数寄存器集合908和浮点寄存器集合910也能够彼此传递数据。对于一个实现方式,整数寄存器集合908被划分为两个单独的寄存器集合:用于数据的低阶的32位的一个寄存器集合、以及用于数据的高阶的32位的第二寄存器集合。一个实现方式的浮点寄存器集合910具有128位宽度的条目,因为浮点指令典型地具有从64位宽度至128位宽度的操作数。
执行块911包括执行单元912、914、916、918、920、922、924,在执行单元912、914、916、918、920、922、924中实际执行指令。该部分包括存储微指令需要执行的整数和浮点数据操作数值的寄存器集合908、910。一个实现方式的处理器900由以下数个执行单元所组成:地址生成单元(AGU)912、AGU914、快速ALU 916、快速ALU 918、慢速ALU 920、浮点ALU912、浮点移动单元914。对于一个实现方式,浮点执行块912、914执行浮点、MMX、SIMD、SSE或其他操作。一个实现方式的浮点ALU 912包括64位除以64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本公开的实现方式,涉及浮点值的指令可利用浮点硬件来处置。
在一个实现方式中,ALU操作去往高速ALU执行单元916、918。一个实现方式的快速ALU 916、918能以半个时钟周期的有效等待时间来执行快速操作。对于一个实现方式,大多数复杂整数操作去往慢速ALU 920,因为慢速ALU920包括用于长等待时间类型的操作的整数执行硬件,诸如,乘法器、移位器、标志逻辑和分支处理。存储器加载/存储操作由AGU922、924执行。对于一个实现方式,整数ALU 916、918、920在对64位数据操作数执行整数操作的上下文中进行描述。在替代实现方式中,ALU 916、918、920可以被实现为支持各种数据位,包括16位、32位、128位、256位等。类似地,浮点单元922、924可以被实现为支持具有各种宽度的位的一系列操作数。对于一个实现方式,浮点单元922、924可以结合SIMD和多媒体指令对128位宽的紧缩数据操作数进行操作。
在一个实现方式中,在父加载已完成执行之前,微操作调度器902、904、906分派依赖性操作。因为微操作在处理器900中被推测地调度和执行,所以处理器900也包括用于处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖性操作。重放机制跟踪使用错误数据的指令并重新执行这些指令。仅依赖性操作需要被重放,并且允许独立的操作完成。处理器的一个实现方式的调度器和重放机制也被设计成用于捕捉用于文本串比较操作的指令序列。
术语“寄存器”可以指被用作指令的部分以标识操作数的板上处理器存储位置。换言之,寄存器可以是从处理器外部(从编程者的角度来看)可用的那些处理器存储位置。然而,实现方式的寄存器在含义上不应当限于特定类型的电路。相反,实现方式的寄存器能够存储并提供数据,并且能够执行本文中所描述的功能。本文中所描述的寄存器可以由处理器中的电路使用任何数量的不同技术来实现,这些不同技术诸如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用物理寄存器和动态分配的物理寄存器的组合等。在一个实现方式中,整数寄存器存储32位的整数数据。一个实现方式的寄存器集合还包含用于紧缩数据的八个多媒体SIMD寄存器。
对于本文中的讨论,寄存器应被理解为设计成保存紧缩数据的数据寄存器,诸如,来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的64位宽的MMXTM寄存器(在一些实例中也称为“mm”寄存器)。这些MMX寄存器(以整数形式和浮点形式两者是可用的)可以与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,也可以使用涉及SSE2、SSE3、SSE4或以外的(统称为“SSEx”)技术的128位宽的XMM寄存器来保存此类紧缩数据操作数。在一个实现方式中,在存储紧缩数据和整数数据时,寄存器不需要在这两种数据类型之间进行区分。在一个实现方式中,整数和浮点可被包含在同一寄存器集合中,或被包含在不同的寄存器集合中。此外,在一个实现方式中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
实现方式能以许多不同的系统类型实现。现在参考图10,所示出的是根据实现方式的多处理器系统1000的框图,该多处理器系统1000可实现针对使用高速缓存行上标记的所有权位来进行TD存储器访问校验的硬件支持。如图10中所示,多处理器系统1000是点对点互连系统,并且包括经由点对点互连1050耦合的第一处理器1070和第二处理器1080。如图10中所示,处理器1070和1080中的每一个处理器可以是多核处理器,包括第一处理核和第二处理器核(即,处理器核1074a和1074b以及处理器核1084a和1084b),但是潜在地,多得多的核可存在于处理器中。虽然以两个处理器1070、1080示出,但是应当理解,本公开的范围不限于此。在其他实现方式中,在给定处理器中可存在一个或多个附加处理器。
处理器1070和1080被示出为分别包括集成存储器控制器单元1072和1082。处理器1070还包括作为其总线控制器单元的部分的点对点(P-P)接口1076和1078;类似地,第二处理器1080包括P-P接口1086和1088。处理器1070、1080可经由使用点对点(P-P)接口电路1078、1088的P-P接口1050来交换信息。如图10中所示,IMC 1072和1082将处理器耦合至相应的存储器,即存储器1032和存储器1034,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1070、1080可经由使用点对点接口电路1076、1094、1086、1098的各个P-P接口1052、1054与芯片组1090交换信息。芯片组1090还可经由高性能图形接口1092来与高性能图形电路1038交换信息。
芯片组1090可以经由接口1096耦合至第一总线1016。在一个实现方式中,第一总线1016可以是外围组件互连(PCI)总线或诸如PCI Express总线或互连总线之类的总线,但是本公开的范围不限于此。
如图10中所示,各种I/O设备1014可连同总线桥1018一起耦合至第一总线1016,该总线桥1018将第一总线1016耦合至第二总线1020。在一个实现方式中,第二总线1020可以是低引脚数(LPC)总线。在一个实现方式中,各种设备可被耦合至第二总线1020,各种设备包括例如,键盘和/或鼠标1022、通信设备1027以及可包括指令/代码和数据1030的存储单元1028(诸如,盘驱动器或其他大容量存储设备)。此外,音频I/O 1024可被耦合至第二总线1020。注意,其他架构是可能的。例如,代替图10的点对点架构,系统可实现多分支总线或其他此类架构。
现在参考图11,所示出的是根据本公开的实现方式的第三系统1100的框图,该第三系统1100可实现针对使用高速缓存行上标记的所有权位来进行TD存储器访问校验的硬件支持。图10和图11中的同样的元件带有同样的附图标记,并且已从图10中省去了图11中的某些方面,以避免使图10的其他方面模糊。
图11图示处理器1170、1180。在一个实现方式中,处理器970、980可实现如上所述的混合核。处理器1170、1180可分别包括集成存储器和I/O控制逻辑(“CL”)1172和1192,并且分别经由点对点(P-P)接口1178和1188之间的点对点互连1150彼此互相通信。如所示,处理器1170、1180各自通过相应P-P接口1176至1194以及1186至1198经由点对点互连1152和1154与芯片组1190通信。对于至少一个实现方式,CL 1172、1182可包括诸如本文中所描述的集成存储器控制器单元。另外,CL 1172、1192还可包括I/O控制逻辑。图11图示存储器1132、1134耦合至CL 1172、1192,并且I/O设备1114也耦合至控制逻辑1172、1192。传统I/O设备1115经由接口1196耦合至芯片组1190。
图12是可实现针对使用高速缓存行上标记的所有权位来进行TD存储器访问校验的硬件支持的示例性片上系统(SoC)1200,该示例性SoC 1200可包括核1202A、…、1202N中的一个或多个核。本领域中已知的对膝上型设备、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
在图12中的示例性SoC 1200内,虚线框是更高级的SoC上的特征。(多个)互连单元1203可耦合至:应用处理器1217,包括一个或多个核的集合1202A-N以及(多个)共享高速缓存单元1206,一个或多个核1204A-N分别包含一个或多个高速缓存单元1204A……1204N;系统代理单元1210;(多个)总线控制器单元1216;(多个)集成存储器控制器单元1214;一个或多个媒体处理器的集合1220,可包括集成图形逻辑1208、用于提供静止和/或视频照相功能的图像处理器1224、用于提供硬件音频加速的音频处理器1226、以及用于提供视频编码/解码加速的视频处理器1228;静态随机存取存储器(SRAM)单元1230;直接存储器访问(DMA)单元1232;以及显示单元1240,用于耦合至一个或多个外部显示器。
接下来转向图13,描绘了根据本公开的实现方式的片上系统(SoC)设计的实现方式,该片上系统设计可实现针对使用高速缓存行上标记的所有权位来进行TD存储器访问校验的硬件支持。作为说明性示例,SoC 1300被包括在用户装备(UE)中。在一个实现方式中,UE是指可由终端用户用于通信的任何设备,诸如,手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本、或任何其他类似的通信设备。UE可连接至基站或节点,该基站或节点本质上可对应于GSM网络中的移动站(MS)。可以在SoC 1300中实现页添加和内容复制的实现方式。
在此,SoC 1300包括2个核——1306和1307。与上文的讨论类似,核1306和1307可符合指令集架构,诸如,具有架构核TM的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采用者。核1306和1307耦合至高速缓存控件1308,该高速缓存控件1308与总线接口单元1309和L2高速缓存1310相关联以与系统1300的其他部分通信。互连1311包括片上互连,诸如,IOSF、AMBA或上文讨论的其他互连,它们可以实现所描述的公开的一个或多个方面。
在一个实现方式中,SDRAM控制器1340可经由高速缓存1310而连接至互连1311。互连1311提供到其他组件的通信信道,其他组件诸如,用于与订户身份模块(SIM)卡对接的SIM 1330、用于保存供核1306和1307执行以初始化和引导SoC 1300的引导代码的引导ROM1335、用于与外部存储器(例如,DRAM 1360)对接的SDRAM控制器1340、用于与非易失性存储器(例如,闪存1365)对接的闪存控制器1345、用于与外围设备对接的外围控件1350(例如,串行外围接口)、用于显示和接收输入(例如,触摸实现的输入)的视频编解码器1320和视频接口1325、用于执行图形相关的计算的GPU 1315等等。这些接口中的任何接口可包含本文中所描述的实现方式的各方面。
另外,系统图示用于通信的外围设备,诸如,功率控制模块1355、模块1370、3G调制解调器1375、GPS 1380以及1385。注意,如上文所述,UE包括用于通信的无线电装置。结果是,这些外围通信模块可以不被全部包括。然而,在UE中,应当包括用于外部通信的某种形式的无线电装置。
图14图示根据本文中所讨论的方法中的任何一种或多种方法的计算系统1400的示例形式的机器的图解表示,该计算系统1400内的一组指令用于使机器实现针对使用高速缓存行上标记的所有权位来进行TD存储器访问校验的硬件支持。在替代实现方式中,可以在LAN、内联网、外联网或因特网中将机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备操作,或者在对等(或分布式)网络环境中作为对等机器操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥接器、或者能够执行指定由该机器执行的动作的一组指令(顺序的或以其他方式)的任何机器。进一步地,虽然仅图示出单个机器,但是,术语“机器”也应当被认为包括单独地或联合地执行一组(或多组)指令以执行本文中所讨论的方法中的任何一种或多种方法的机器的任何集合。可以在计算系统1400中实现页添加和内容复制的实现方式。
计算机系统1400包括处理设备1402、主存储器1404(例如,闪存、动态随机存取存储器(DRAM)(诸如,同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1406(例如,闪存存储器、静态随机存取存储器(SRAM)等)以及数据存储设备1416,它们经由总线1408彼此进行通信。
处理设备1402表示一个或多个通用处理设备,诸如,微处理器、中央处理单元等等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1402也可以是一个或多个专用处理设备,诸如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等等。在一个实现方式中,处理设备1402可包括一个或多个处理器核。处理设备1402被配置成执行用于执行本文中所讨论的操作的处理逻辑1426。
在一个实现方式中,处理设备1402可以是包括所公开的LLC高速缓存架构的处理器或集成电路的部分。替代地,计算系统1400可以包括如本文中所描述的其他组件。应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
计算系统1400可进一步包括可通信地耦合至网络1419的网络接口设备1418。计算系统1400还可包括视频显示设备1410(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1412(例如,键盘)、光标控制设备1414(例如,鼠标)、信号生成设备1420(例如,扬声器),或其他外围设备。此外,计算系统1400可包括图形处理单元1422、视频处理单元1428以及音频处理单元1432。在另一实现方式中,计算系统1400可包括芯片组(未图示出),该芯片组是指被设计成与处理设备1402一起工作并控制处理设备1402与外部设备之间的通信的一组集成电路或芯片。例如,芯片组可以是将处理设备1402链接到非常高速度的设备(诸如,主存储器1404和图形控制器)以及将处理设备1402链接到较低速度的外围设备的外围总线(诸如,USB、PCI或ISA总线)的主板上的一组芯片。
计算系统1400可进一步包括可通信地耦合至网络1419的网络接口设备1418。计算系统1400还可包括视频显示设备1410(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1412(例如,键盘)、光标控制设备1414(例如,鼠标)、信号生成设备1420(例如,扬声器),或其他外围设备。此外,计算系统1400可包括图形处理单元1422、视频处理单元1428以及音频处理单元1432。在另一实现方式中,计算系统1400可包括芯片组(未图示出),该芯片组是指被设计成与处理设备1402一起工作并控制处理设备1402与外部设备之间的通信的一组集成电路或芯片。例如,芯片组可以是将处理设备1402链接到非常高速度的设备(诸如,主存储器1404和图形控制器)以及将处理设备1402链接到较低速度的外围设备的外围总线(诸如,USB、PCI或ISA总线)的主板上的一组芯片。
计算机可读存储介质1424还可用于存储利用处理设备1402的指令1426和/或包含调用以上应用的方法的软件库。尽管计算机可读存储介质1424在示例实现方式中被示出为单个介质,但术语“计算机可读存储介质”应当被视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应当被视为包括能够存储、编码或承载用于由机器执行并且使该机器执行所公开的实现方式的方法中的任何一种或多种方法的一组指令的任何介质。术语“计算机可读存储介质”应当相应地被视为包括但不限于固态存储器以及光和磁介质。
以下示例涉及进一步的实现方式。
示例1是一种处理器,包括:1)处理器核;以及2)存储器控制器,耦合至所述处理器核,所述存储器控制器包括密码引擎,所述密码引擎用于:a)在针对高速缓存行的写入请求内检测存储器中的位置的物理地址中的密钥标识符(ID);b)确定所述密钥ID是多个密钥ID中的信任域密钥ID;c)响应于确定了所述密钥ID是所述信任域密钥ID,对所述高速缓存行的所有权位置位以指示所述高速缓存行属于信任域;d)对所述高速缓存行进行加密以生成经加密的数据;e)确定与所述高速缓存行相关联的消息认证码(MAC);以及f)将所述高速缓存行的所述经加密的数据、所述所有权位以及所述MAC写入所述存储器。
在示例2中,示例1的处理器,其中,所述存储器包括隔绝范围,存储在所述存储器中的与所述高速缓存行相关联的所述所有权位被写入所述隔绝范围,所述处理器进一步包括管芯上高速缓存,用于对针对所述处理器核的所有权位进行高速缓存。
在示例3中,示例1的处理器,其中,为了确定所述MAC,所述密码引擎进一步用于对至少所述经加密的数据、经加密的物理地址和所述所有权位的组合应用带密钥的散列算法。
在示例4中,示例1的处理器,其中,所述所有权位与所述高速缓存行的纠错码(ECC)一起被编码。
在示例5中,示例4的处理器,其中,所述密码引擎进一步用于结合将所述高速缓存行写入到所述存储器来生成ECC计算,其中所述所有权位被包括在所述ECC计算内。
在示例6中,示例1的处理器,其中,响应于对所述高速缓存行的读取请求,所述密码引擎进一步用于:a)确定所述读取请求内的第二密钥ID是否为所述多个密钥ID中的信任域密钥ID;以及b)记录指示所述第二密钥ID是否为信任域密钥ID的访问类型位。
在示例7中,示例6的处理器,其中,所述密码引擎进一步用于:
a)确定所述访问类型位的值与所述所有权位的值匹配;b)验证相对于所述MAC的完整性;以及c)响应于所述读取请求并且响应于MAC不匹配,返回污染位以及与固定模式匹配的无效数据。
在示例8中,示例7的处理器,其中,所述密码引擎进一步用于对所述密码引擎的密钥数据结构中的污染状态位置位,所述污染状态位与所述密钥ID相关联。
在示例9中,示例6的处理器,其中,所述密码引擎进一步用于:a)确定所述访问类型位的值与所述所有权位的值不匹配;以及b)响应于所述读取请求,返回污染位以及与固定模式匹配的无效数据。
各实现方式可具有以上所描述的结构特征的不同组合。例如,也可参照本文中所描述的系统来实现以上所描述的处理器和方法的所有任选特征,并且可在一个或多个实现方式中的任何地方使用示例中的细节。
示例10是一种方法,该方法包括:1)由处理器的存储器控制器在针对高速缓存行的写入请求内检测存储器中的位置的物理地址中的密钥标识符(ID);2)由所述存储器控制器确定所述密钥ID是多个密钥ID中的信任域密钥ID;3)由所述存储器控制器响应于确定了所述密钥ID是所述信任域密钥ID,对所述高速缓存行的所有权位置位以指示所述高速缓存行属于信任域;4)由所述存储器控制器对所述高速缓存行进行加密以生成经加密的数据;5)由所述存储器控制器确定与所述高速缓存行相关联的消息认证码(MAC);以及6)由所述存储器控制器将所述高速缓存行的所述经加密的数据、所述所有权位以及所述MAC写入所述存储器。
在示例11中,示例10的方法,其中,所述存储器包括隔绝范围,存储在所述存储器中的与所述高速缓存行相关联的所述所有权位被写入隔绝范围,所述方法进一步包括:将所述所有权位高速缓存在所述处理器的管芯上高速缓存中。
在示例12中,示例10的方法,其中,确定所述MAC包括:对至少所述经加密的数据、经加密的物理地址和所述所有权位的组合应用带密钥的散列算法。
在示例13中,示例10的方法进一步包括:1)将所述所有权位编码在所述高速缓存行的纠错码(ECC)内;以及2)结合将所述高速缓存行写入到所述存储器来生成ECC计算,所述ECC计算包括所述所有权位。
在示例14中,示例10的方法,其中,响应于对所述高速缓存行的读取请求,所述方法进一步包括:1)确定所述读取请求内的第二密钥ID是否为所述多个密钥ID中的信任域密钥ID;以及2)记录指示所述第二密钥ID是否为信任域密钥ID的访问类型位。
在示例15中,示例14的方法进一步包括:1)确定所述访问类型位的值与所述所有权位的值匹配;2)验证相对于所述MAC的完整性;以及3)响应于所述读取请求并且响应于MAC不匹配,返回污染位以及与固定模式匹配的无效数据。
在示例16中,示例15的方法还包括:对所述存储器控制器的密钥数据结构中的污染状态位置位,所述污染状态位与所述密钥ID相关联。
在示例17中,示例14的方法进一步包括:1)确定所述访问类型位的值与所述所有权位的值不匹配;以及2)响应于所述读取请求,返回污染位以及与固定模式匹配的无效数据。
各实现方式可具有以上所描述的结构特征的不同组合。例如,也可参照本文中所描述的系统来实现以上所描述的处理器和方法的所有任选特征,并且可在一个或多个实现方式中的任何地方使用示例中的细节。
示例18是一种系统,该系统包括:1)存储器设备,用于存储高速缓存行及相关联的所有权位;2)处理器核;以及3)存储器控制器,耦合在所述存储器设备与所述处理器核之间,其中所述存储器控制器包括密码引擎以,所述密码引擎用于:a)在来自所述处理器核的针对高速缓存行的读取请求内检测所述存储器设备中的位置的物理地址内的密钥标识符(ID);b)确定所述密钥ID是多个密钥ID中的信任域密钥ID;c)从所述存储器读取所述高速缓存行;以及d)确定存储在所述存储器设备中的针对所述高速缓存行的所有权位是否被置位以指示所述高速缓存行属于信任域。
在示例19中,示例18的系统,其中,所述密码引擎进一步用于:a)记录指示所述密钥ID是否为所述信任域密钥ID的访问类型位;以及b)确定所述访问类型位的值是否与所述所有权位的值匹配。
在示例20中,示例19的系统,其中,响应于确定了所述访问类型位的值匹配所述所有权位的值,所述密码引擎进一步用于:a)确定密钥数据结构中的与所述密钥ID相关联的污染状态位被置位;以及b)响应于所述读取请求,返回污染位以及与固定模式匹配的无效数据。
在示例21中,示例19的系统,其中,响应于确定了所述访问类型位的值与所述所有权位的值匹配,所述密码引擎进一步用于:a)确定密钥数据结构中与所述密钥ID相关联的污染状态位未被置位;b)验证相对于与所述高速缓存行一起存储的消息认证码(MAC)的完整性;以及c)响应于所述读取请求并且响应于MAC不匹配,返回污染位以及与固定模式匹配的无效数据。
在示例22中,示例21的系统,其中,所述密码引擎进一步用于:a)确定密钥污染被启用;以及b)对密钥数据结构中与所述密钥ID相关联的污染状态位置位,以指示所述密钥ID是无效的。
各实现方式可具有以上所描述的结构特征的不同组合。例如,也可参照本文中所描述的系统来实现以上所描述的处理器和方法的所有任选特征,并且可在一个或多个实现方式中的任何地方使用示例中的细节。
示例23是一种非瞬态计算机可读介质,存储有指令,这些指令当由具有耦合至系统存储器的、具有核的处理器执行时使所述处理器执行多个逻辑操作,这些逻辑操作包括:1)由处理器的存储器控制器在针对高速缓存行的写入请求内检测存储器中的位置的物理地址中的密钥标识符(ID);2)由所述存储器控制器确定所述密钥ID是多个密钥ID中的信任域密钥ID;3)由所述存储器控制器响应于确定了所述密钥ID是所述信任域密钥ID,对所述高速缓存行的所有权位置位以指示所述高速缓存行属于信任域;4)由所述存储器控制器对所述高速缓存行进行加密以生成经加密的数据;5)由所述存储器控制器确定与所述高速缓存行相关联的消息认证码(MAC);以及6)由所述存储器控制器将所述高速缓存行的所述经加密的数据、所述所有权位以及所述MAC写入所述存储器。
在示例24中,示例23的非瞬态计算机可读介质,其中,所述存储器包括隔绝范围,存储在所述存储器中的与所述高速缓存行相关联的所述所有权位被写入所述隔绝范围,所述多个逻辑操作进一步包括:将所述所有权位高速缓存在所述处理器的管芯上高速缓存中。
在示例25中,示例23的非瞬态计算机可读介质,其中,确定所述MAC包括:对至少所述经加密的数据、经加密的物理地址和所述所有权位的组合应用带密钥的散列算法。
在示例26中,示例23的非瞬态计算机可读介质,其中,多个逻辑操作包括:1)将所述所有权位编码在所述高速缓存行的纠错码(ECC)内;以及2)结合将所述高速缓存行写入到所述存储器来生成ECC计算,所述ECC计算包括所述所有权位。
在示例27中,示例23的非瞬态计算机可读介质,其中,响应于针对所述高速缓存行的读取请求,多个逻辑操作进一步包括:1)确定所述读取请求内的第二密钥ID是否为所述多个密钥ID中的信任域密钥ID;以及2)记录指示所述第二密钥ID是否为信任域密钥ID的访问类型位。
在示例28中,示例27的非瞬态计算机可读介质,其中,多个逻辑操作包括:1)确定所述访问类型位的值与所述所有权位的值匹配;2)验证相对于所述MAC的完整性;以及3)响应于所述读取请求并且响应于MAC不匹配,返回污染位以及与固定模式匹配的无效数据。
在示例29中,示例28的非瞬态计算机可读介质,其中多个逻辑操作包括进一步包括:对所述存储器控制器的密钥数据结构中的污染状态位置位,所述污染状态位与所述密钥ID相关联。
在示例30中,示例27的非瞬态计算机可读介质,其中,多个逻辑操作包括进一步包括:1)确定所述访问类型位的值与所述所有权位的值不匹配;以及2)响应于所述读取请求,返回污染位以及与固定模式匹配的无效数据。
各实现方式可具有以上所描述的结构特征的不同组合。例如,也可参照本文中所描述的系统来实现以上所描述的处理器和方法的所有任选特征,并且可在一个或多个实现方式中的任何地方使用示例中的细节。
示例31是一种系统,该系统包括:a)用于在针对高速缓存行的写入请求内检测存储器中的位置的物理地址中的密钥标识符(ID)的装置;b)用于确定所述密钥ID是多个密钥ID中的信任域密钥ID的装置;c)用于响应于确定了所述密钥ID是所述信任域密钥ID而对所述高速缓存行的所有权位置位以指示所述高速缓存行属于信任域的装置的;d)用于对所述高速缓存行进行加密以生成经加密的数据的装置;e)用于确定与所述高速缓存行相关联的消息认证码(MAC)的装置;以及f)用于将所述高速缓存行的所述经加密的数据、所述所有权位以及所述MAC写入所述存储器的装置。
在示例32中,示例31的系统,其中,所述存储器包括隔绝范围,存储在所述存储器中的与所述高速缓存行相关联的所述所有权位被写入所述隔绝范围,所述系统进一步包括用于将所述所有权位高速缓存在所述处理器的管芯上高速缓存中的装置。
在示例33中,示例31的系统,其中,用于确定所述MAC的装置包括:用于对至少所述经加密的数据、经加密的物理地址和所述所有权位的组合应用带密钥的散列算法的装置。
在示例34中,示例31的系统进一步包括:1)用于将所述所有权位编码在所述高速缓存行的纠错码(ECC)内的装置;以及2)用于结合将所述高速缓存行写入到所述存储器来生成ECC计算的装置,所述ECC计算包括所述所有权位。
在示例35中,示例31的系统,其中,响应于对所述高速缓存行的读取请求,所述系统进一步包括:1)用于确定所述读取请求内的第二密钥ID是否为所述多个密钥ID中的信任域密钥ID的装置;以及2)用于记录指示所述第二密钥ID是否为信任域密钥ID的访问类型位的装置。
在示例36中,示例31的系统进一步包括:1)用于确定所述访问类型位的值与所述所有权位的值匹配的装置;2)用于验证相对于所述MAC的完整性的装置;以及3)用于响应于所述读取请求并且响应于MAC不匹配而返回污染位以及与固定模式匹配的无效数据的装置。
在示例37中,示例36所述的系统进一步包括:用于对所述存储器控制器的密钥数据结构中的污染状态位置位的装置,所述污染状态位与所述密钥ID相关联。
在示例38中,示例31的系统进一步包括:1)用于确定所述访问类型位的值与所述所有权位的值不匹配的装置;以及2)用于响应于所述读取请求,返回污染位以及与固定模式匹配的无效数据的装置。
尽管已参考有限数量的实现方式描述了本公开,但是,本领域技术人员将从其中理解众多修改和变型。所附权利要求书旨在将所有此类修改和变型涵盖为落入本公开的真实精神和范围内。
在本文中的描述中,阐明了众多特定细节(诸如,特定类型的处理设备和系统配置的示例、特定的硬件结构、特定的架构和微架构细节、特定的寄存器配置、特定的指令类型、特定的系统组件、特定的测量/高度、特定的处理设备流水线级和操作等)以提供对本公开的透彻理解。然而,对本领域技术人员将显而易见的是,不必采用这些特定细节来实施本公开。在其他实例中,未详细描述公知的组件或方法,以避免不必要地使本公开模糊,公知的组件或方法诸如,特定和替代的处理设备架构、用于所描述算法的特定的逻辑电路/代码、特定的固件代码、特定的互连操作、特定的逻辑配置、特定的制造技术和材料、特定的编译器实现方式、代码中算法的特定表达、特定的掉电和功率门控技术/逻辑以及计算机系统的其他特定的操作细节。
实现方式参照在特定的集成电路中(诸如,计算平台或微处理设备中)提供使用信任域的虚拟化系统中的信任域架构与多密钥完全存储器加密技术的共存来描述。实现方式也可适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的实现方式不限于台式计算机系统或便携式计算机,诸如,超级本TM计算机。并且也可用在其他设备中,其他设备诸如,手持式设备、平板、其他薄笔记本、片上系统(SoC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用典型地包括微控制器、数字信号处理设备(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可执行下文教导的功能与操作的任何其他系统。描述了系统可以是任何种类的计算机或嵌入式系统。所公开的实现方式尤其可以用于低端设备,如可穿戴设备(例如,手表)、电子植入物、传感和控制基础设施设备、控制器、监视控制装置以及数据采集(SCADA)系统等等。另外,本文中所描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于节能和能效的软件优化。如将在以下描述中变得显而易见的,本文中所描述的方法、装置和系统的实现方式(无论是关于硬件、固件、软件还是它们的组合)对于用性能考量来平衡的‘绿色技术’的前景是至关重要的。
虽然参照处理设备描述了本文中的实现方式,但其他实现方式适用于其他类型的集成电路和逻辑器件。本公开的实现方式的类似技术和教导可应用于可受益于更高的流水线吞吐量和改善的性能的其他类型的电路或半导体器件。本公开的实现方式的教导适用于执行数据操纵的任何处理设备或机器。然而,本公开不限于执行512位、256位、128位、64位、32位、或16位数据操作的处理设备或机器,并可应用于在其中执行数据的操纵或管理的任何处理设备和机器。此外,本文中的描述提供了示例,并且附图出于说明性目的示出了各种示例。然而,这些示例不应当以限制性意义来解释,因为它们仅仅旨在提供本公开的实现方式的示例,而并非提供本公开的实现方式的所有可能实现方式的排他性列表。
虽然下述示例在执行单元和逻辑电路的上下文中描述了指令处置和分发,但本公开的其他实现方式也可通过存储在机器可读有形介质上的数据或指令来完成,这些数据和/或指令当由机器执行时使得机器执行与本公开的至少一个实现方式一致的功能。在一个实现方式中,与本公开的实现方式相关联的功能以机器可执行指令来具体化。这些指令可用来使以这些指令编程的通用处理器或专用处理设备执行本公开的步骤。本公开的实现方式也可作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程以执行根据本公开的实现方式的一个或多个操作。替代地,本公开的实现方式的操作可由包含用于执行这些操作的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
用于对逻辑进行编程以执行本公开的实现方式的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存存储器、或其他存储)内。此外,指令可以经由网络或借助于其他计算机可读介质被分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或传输信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)传输信息时使用的有形机器可读存储。因此,计算机可读介质包括适用于存储或传输机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
设计可经历多个阶段,从创建到仿真到制造。表示设计的数据能以数种方式来表示该设计。首先,如在仿真中有用的,可使用硬件描述语言或另一功能性描述语言来表示硬件。另外,可在设计过程的一些阶段可产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到表示硬件模型中各种器件的物理布置的数据的水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或者磁或光存储(诸如,盘)可以是用于存储经由光学或电学波来传输的信息的机器可读介质,这些光学或电学波被调制或以其他方式生成以传输此类信息。当指示或承载代码或设计的电学载波被传输时,在电信号的复制、缓冲或重新传输被执行的程度上,产生了新副本。因此,通信提供商或网络提供商可在有形机器可读介质上至少临时地存储具体化本公开的实现方式的技术的制品(诸如,编码到载波中的信息)。
如本文中所使用的模块是指硬件、软件、和/或固件的任何组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实现方式中,对模块的引用是指硬件,该硬件被专门配置成用于识别和/或执行要被保存在非瞬态介质上的代码。另外,在另一实现方式中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微控制器执行以执行预定操作。并且如可以推断的,在又一实现方式中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被图示为分开的模块的边界常常变化并且潜在地重叠。例如,第一模块和第二模块可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实现方式中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其他硬件。
在一个实现方式中,使用短语“被配置成”指的是布置、组装、制造、许诺销售、进口和/或设计装置、硬件、逻辑或元件以执行所指定或所确定的任务。在该示例中,如果不是正在操作的装置或其元件被设计、耦合、和/或互连以执行所指定的任务,则该不是正在操作的装置或其元件仍然‘被配置成’执行所述所指定的任务。作为纯说明性示例,在操作期间,逻辑门可提供0或1。但‘被配置成’向时钟提供使能信号的逻辑门不包括可提供1或0的每一潜在的逻辑门。相反,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式被耦合的逻辑门。再次注意,使用术语‘被配置成’不要求操作,而是关注于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实现方式中,使用术语“用于”、“能够/能够用于”和/或“可操作用于”指的是按如下方式设计的某个装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。注意,如上文所述,在一个实现方式中,‘用于’、‘能够用于’、或‘能操作用于’的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件不是正在操作,而是以此类方式被设计以便以指定方式启用对装置的使用。
如本文中所使用,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是高逻辑电平,并且0指的是低逻辑电平。在一个实现方式中,诸如晶体管或闪存单元之类的存储单元能够保存单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其他表示。例如,十进制数10还可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。另外,在一个实现方式中,术语重置和置位分别是指默认和经更新的值或状态。例如,默认值潜在地包括高逻辑值(即,被重置),而经更新的值潜在地包括低逻辑值(即,被置位)。注意,可利用值的任何组合来表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实现方式可以经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上的可由处理元件执行的指令或代码来实现。非瞬态机器可访问/可读介质包括提供(即,存储和/或传输)诸如由计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可访问介质包括:随机存取存储器(RAM),诸如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存存储器设备;电存储设备;光存储设备;声存储设备;用于保存从瞬态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,这些瞬态(传播)信号用于与可从其接收信息的非瞬态介质相区别。用于对逻辑进行编程以执行本公开的实现方式的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存存储器、或其他存储)内。此外,指令可以经由网络或借助于其他计算机可读介质被分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或传输信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)传输信息时使用的有形机器可读存储。因此,计算机可读介质包括适用于存储或传输机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书,对“一个实现方式”或“实现方式”的引用意味着结合该实现方式描述的特定特征、结构或特性被包括在本公开的至少一个实现方式中。因此,在贯穿说明书的多个位置出现短语“在一个实现方式中”或“在实现方式中”不一定全部是指同一实现方式。此外,在一个或多个实现方式中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实现方式给出了具体实施方式。然而,将显而易见的是,可对这些实现方式作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。因此,应当认为说明书和附图是说明性的而不是限制性的。此外,实现方式、实施例和/或其他示例性语言的上述使用不一定指的是同一实现方式或同一示例,而是可以指不同和独特的实现方式,也有可能指同一实现方式。
具体实施方式的一些部分在对计算机存储器内的数据位的操作的算法和符号表示方面来呈现。这些算法描述和表示是数据处理领域的技术人员用于向本领域的其他技术人员最有效地传达其工作实质的手段。算法在此一般被理解为导致所需结果的自洽的操作序列。操作是要求对物理量进行物理操纵的那些操作。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操纵的电信号或磁信号的形式。主要出于常见用途的考虑,时不时地将这些信号称为位、值、元素、符号、字符、项、数字等已被证明是方便的。本文中描述的块可以是硬件、软件、固件或其组合。
然而,应当记住,所有这些和类似的术语将与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非明确指明,否则如从上文的讨论中显而易见的那样,可以理解,贯穿说明书,利用诸如“定义”、“接收”、“确定”、“发布”、“链接”、“关联”、“获取”、“认证”、“禁止”、“执行”、“请求”、“通信”等术语的讨论,指的是计算系统或类似的电子计算设备的动作和进程,该计算系统或类似的电子计算设备操纵在该计算系统的寄存器和存储器内表示为物理(例如,电子)量的数据并将其转换成在该计算系统存储器或寄存器或其他此类信息存储、传输或显示设备内类似地表示为物理量的其他数据。
在本文中使用词语“示例”或“示例性”以意指用作示例、实例或说明。本文中被描述为“示例”或“示例性”的任何方面或设计不一定要被解释为相比其他方面或设计是优选或有利的。相反,词语“示例”或“示例性”的使用旨在以具体的方式来呈现概念。如在本申请中所使用,术语“或”旨在表示包含性的“或”,而不是排它性的“或”。也就是说,除非另外指定或从上下文澄清,否则“X包括A或B”旨在意指自然的包含性排列中的任一者。也就是说,如果X包括A;X包括B;或X包括A和B两者,则在前述实例中的任何实例下“X包括A或B”均被满足。另外,如本申请以及所附权利要求中所使用的冠词“一(a/an)”一般应解释为意指“一个或多个”,除非另外指定或从上下文清楚是指单数形式。此外,通篇对术语“实现方式”或“一个实现方式”或“一实现方式”或“一个实现方式”的使用不旨在意指同一个实现方式,除非被描述为如此。此外,如本文中所使用的术语“第一”、“第二”、“第三”、“第四”等旨在用作用于在不同要素之间进行区分的标记,并且可以不一定具有根据它们的数值指定的顺序含义。
Claims (24)
1.一种处理器,包括:
处理器核;以及
存储器控制器,耦合至所述处理器核,所述存储器控制器包括密码引擎,所述密码引擎用于:
在针对高速缓存行的写入请求内检测存储器中的位置的物理地址中的密钥标识符ID;
确定所述密钥ID是多个密钥ID中的信任域密钥ID;
响应于确定了所述密钥ID是所述信任域密钥ID,对所述高速缓存行的所有权位置位以指示所述高速缓存行属于信任域;
对所述高速缓存行进行加密以生成经加密的数据;
确定与所述高速缓存行相关联的消息认证码MAC;以及
将所述高速缓存行的所述经加密的数据、所述所有权位以及所述MAC写入所述存储器。
2.根据权利要求1所述的处理器,其特征在于,所述存储器包括隔绝范围,存储在所述存储器中的与所述高速缓存行相关联的所述所有权位所被写入所述隔绝范围,所述处理器进一步包括管芯上高速缓存,用于对针对所述处理器核的所述所有权位进行高速缓存。
3.根据权利要求1所述的处理器,其特征在于,为了确定所述MAC,所述密码引擎进一步用于对至少所述经加密的数据、经加密的物理地址和所述所有权位的组合应用带密钥的散列算法。
4.根据权利要求1所述的处理器,其特征在于,所述所有权位与所述高速缓存行的纠错码ECC位一起被编码。
5.根据权利要求4所述的处理器,其特征在于,所述密码引擎进一步用于结合将所述高速缓存行写入所述存储器来生成ECC计算,其中所述所有权位被包括在所述ECC计算内。
6.根据权利要求1所述的处理器,其特征在于,响应于对所述高速缓存行的读取请求,所述密码引擎进一步用于:
确定所述读取请求内的第二密钥ID是否是所述多个密钥ID中的信任域密钥ID;以及
记录指示所述第二密钥ID是否是信任域密钥ID的访问类型位。
7.如权利要求6所述的处理器,其特征在于,所述密码引擎进一步用于:
确定所述访问类型位的值与所述所有权位的值匹配;
验证相对于所述MAC的完整性;以及
响应于所述读取请求并且响应于MAC不匹配,返回污染位以及与固定模式匹配的无效数据。
8.根据权利要求7所述的处理器,其特征在于,所述密码引擎进一步用于对所述密码引擎的密钥数据结构中的污染状态位置位,所述污染状态位与所述密钥ID相关联。
9.如权利要求6所述的处理器,其特征在于,所述密码引擎进一步用于:
确定所述访问类型位的值与所述所有权位的值不匹配;以及
响应于所述读取请求,返回污染位以及与固定模式匹配的无效数据。
10.一种方法,包括:
由处理器的存储器控制器在针对高速缓存行的写入请求内检测存储器中的位置的物理地址中的密钥标识符ID;
由所述存储器控制器确定所述密钥ID是多个密钥ID中的信任域密钥ID;
由所述存储器控制器响应于确定了所述密钥ID是所述信任域密钥ID,对所述高速缓存行的所有权位置位以指示所述高速缓存行属于信任域;
由所述存储器控制器对所述高速缓存行进行加密以生成经加密的数据;
由所述存储器控制器确定与所述高速缓存行相关联的消息认证码MAC;以及
由所述存储器控制器将所述高速缓存行的所述经加密的数据、所述所有权位以及所述MAC写入所述存储器。
11.根据权利要求10所述的方法,其特征在于,所述存储器包括隔绝范围,存储在所述存储器中的与所述高速缓存行相关联的所述所有权位被写入所述隔绝范围,所述方法进一步包括:将所述所有权位高速缓存在所述处理器的管芯上高速缓存中。
12.根据权利要求10所述的方法,其特征在于,确定所述MAC包括:对至少所述经加密的数据、经加密的物理地址和所述所有权位的组合应用带密钥的散列算法。
13.如权利要求10所述的方法,还包括:
将所述所有权位编码在所述高速缓存行的纠错码ECC内;以及
结合将所述高速缓存行写入所述存储器来生成ECC计算,所述ECC计算包括所述所有权位。
14.如权利要求10所述的方法,其特征在于,响应于对所述高速缓存行的读取请求,所述方法进一步包括:
确定所述读取请求内的第二密钥ID是否为所述多个密钥ID中的信任域密钥ID;以及
记录指示所述第二密钥ID是否为信任域密钥ID的访问类型位。
15.如权利要求14所述的方法,进一步包括:
确定所述访问类型位的值与所述所有权位的值匹配;
验证相对于所述MAC的完整性;以及
响应于所述读取请求并且响应于MAC不匹配,返回污染位以及与固定模式匹配的无效数据。
16.如权利要求15所述的方法,进一步包括:对所述存储器控制器的密钥数据结构中的污染状态位置位,所述污染状态位与所述密钥ID相关联。
17.如权利要求14所述的方法,进一步包括:
确定所述访问类型位的值与所述所有权位的值不匹配;以及
响应于所述读取请求,返回污染位以及与固定模式匹配的无效数据。
18.一种系统,包括:
存储器设备,用于存储高速缓存行及相关联的所有权位;
处理器核;以及
存储器控制器,耦合在所述存储器设备与所述处理器核之间,其中所述存储器控制器包括密码引擎,所述密码引擎用于:
在来自所述处理器核的针对高速缓存行的读取请求内检测所述存储器设备中的位置的物理地址内的密钥标识符ID;
确定所述密钥ID是多个密钥ID中的信任域密钥ID;
从所述存储器读取所述高速缓存行;以及
确定存储在所述存储器设备中的针对所述高速缓存行的所有权位是否被置位以指示所述高速缓存行属于信任域。
19.如权利要求18所述的系统,其特征在于,所述密码引擎进一步用于:
记录指示所述密钥ID是否为所述信任域密钥ID的访问类型位;以及
确定所述访问类型位的值是否与所述所有权位的值匹配。
20.如权利要求19所述的系统,其特征在于,响应于确定了所述访问类型位的值与所述所有权位的值匹配,所述密码引擎进一步用于:
确定密钥数据结构中的与所述密钥ID相关联的污染状态位被置位;以及
响应于所述读取请求,返回污染位以及与固定模式匹配的无效数据。
21.如权利要求19所述的系统,其特征在于,响应于确定了所述访问类型位的值与所述所有权位的值匹配,所述密码引擎进一步用于:
确定密钥数据结构中的与所述密钥ID相关联的污染状态位未被置位;
验证相对于与所述高速缓存行一起存储的消息认证码MAC的完整性;以及
响应于所述读取请求并且响应于MAC不匹配,返回污染位以及与固定模式匹配的无效数据。
22.如权利要求21所述的系统,其特征在于,所述密码引擎进一步用于:
确定密钥污染被启用;以及
对密钥数据结构中与所述密钥ID相关联的污染状态位置位,以指示所述密钥ID是无效的。
23.至少一种机器可读介质,包括多条指令,所述多条指令响应于在计算设备上执行而使得所述计算设备执行根据权利要求10至17中的任一项所述的方法。
24.一种设备,包括用于执行如权利要求10至17中的任一项所述的方法的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/456,718 | 2019-06-28 | ||
US16/456,718 US11360910B2 (en) | 2019-06-28 | 2019-06-28 | Prevention of trust domain access using memory ownership bits in relation to cache lines |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112149125A true CN112149125A (zh) | 2020-12-29 |
Family
ID=69846274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010217852.1A Pending CN112149125A (zh) | 2019-06-28 | 2020-03-25 | 使用与高速缓存行有关的存储器所有权位防止信任域访问 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11360910B2 (zh) |
EP (1) | EP3757847A1 (zh) |
CN (1) | CN112149125A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2574231B (en) * | 2018-05-31 | 2020-12-30 | Advanced Risc Mach Ltd | An apparatus and method for triggering action performance |
US11656879B2 (en) * | 2020-09-14 | 2023-05-23 | Dell Products L.P. | Automated OS networking configuration system |
CN114238420B (zh) * | 2022-02-24 | 2022-06-14 | 北京仁科互动网络技术有限公司 | 基于多租户架构的元数据使用的方法、装置及电子设备 |
GB2618124A (en) * | 2022-04-28 | 2023-11-01 | Advanced Risc Mach Ltd | Execution environment mismatch |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030061006A1 (en) * | 2001-09-24 | 2003-03-27 | Richards Kevin T. | Evaluating performance data describing a relationship between a provider and a client |
US20050188173A1 (en) * | 2004-02-24 | 2005-08-25 | Robert Hasbun | Physical domain separation |
JP2010079765A (ja) * | 2008-09-29 | 2010-04-08 | Renesas Technology Corp | 情報処理装置 |
US9443111B2 (en) * | 2014-02-28 | 2016-09-13 | Seagate Technology Llc | Device security using an encrypted keystore data structure |
US9749319B2 (en) * | 2015-05-20 | 2017-08-29 | Google Inc. | Address validation using signatures |
US10585809B2 (en) * | 2016-04-01 | 2020-03-10 | Intel Corporation | Convolutional memory integrity |
US10721067B2 (en) | 2016-08-10 | 2020-07-21 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Secure processor for multi-tenant cloud workloads |
CN108667780B (zh) * | 2017-03-31 | 2021-05-14 | 华为技术有限公司 | 一种身份认证的方法、系统及服务器和终端 |
US10684945B2 (en) | 2018-03-29 | 2020-06-16 | Intel Corporation | System, apparatus and method for providing key identifier information in a non-canonical address space |
US10725849B2 (en) | 2018-07-27 | 2020-07-28 | Intel Corporation | Server RAS leveraging multi-key encryption |
-
2019
- 2019-06-28 US US16/456,718 patent/US11360910B2/en active Active
-
2020
- 2020-03-19 EP EP20164111.5A patent/EP3757847A1/en active Pending
- 2020-03-25 CN CN202010217852.1A patent/CN112149125A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11360910B2 (en) | 2022-06-14 |
US20210064547A1 (en) | 2021-03-04 |
EP3757847A1 (en) | 2020-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11461244B2 (en) | Co-existence of trust domain architecture with multi-key total memory encryption technology in servers | |
US11467981B2 (en) | Memory initialization in a protected region | |
US11934843B2 (en) | Secure arbitration mode to build and operate within trust domain extensions | |
EP3671515B1 (en) | Method and apparatus for trust domain creation and destruction | |
EP3757839B1 (en) | Scalable virtual machine operation inside trust domains within the trust domain architecture | |
KR20190031136A (ko) | 신뢰 도메인들을 사용한 가상화된 시스템들에서의 격리 제공 | |
US11243893B2 (en) | Preventing unauthorized access to encrypted memory | |
US11360910B2 (en) | Prevention of trust domain access using memory ownership bits in relation to cache lines | |
US11288206B2 (en) | Supporting memory paging in virtualized systems using trust domains | |
CN114692177A (zh) | 完好性受保护的访问控制机制 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |