CN111353157A - 限制不受信任软件对加密密钥的使用 - Google Patents

限制不受信任软件对加密密钥的使用 Download PDF

Info

Publication number
CN111353157A
CN111353157A CN201911141511.4A CN201911141511A CN111353157A CN 111353157 A CN111353157 A CN 111353157A CN 201911141511 A CN201911141511 A CN 201911141511A CN 111353157 A CN111353157 A CN 111353157A
Authority
CN
China
Prior art keywords
key
memory
address
processor
physical
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
CN201911141511.4A
Other languages
English (en)
Inventor
I.乌齐尔
A.阿哈龙
D.卡斯皮
B.柴金
J.多韦克
G.格宗
B.E.孔特利
F.X.麦克金
G.奈格
C.V.罗扎斯
R.L.萨希塔
V.尚布霍格
A.扎尔茨曼
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 CN111353157A publication Critical patent/CN111353157A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/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/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Abstract

处理器包含处理器核。核的寄存器要存储:用于密钥标识符(ID)的物理存储器地址的多个地址位的位范围和用来识别在密钥标识符的非受限密钥ID与受限密钥ID之间的边界的第一密钥ID。存储器控制器将执行以下操作:经由对寄存器中位范围和第一密钥ID的访问,确定在物理存储器地址内受限密钥ID的密钥ID范围;访问处理器核的第一逻辑处理器在不受信任域模式中执行的处理器状态;从第一逻辑处理器接收存储器事务,所述存储器事物包含与第二密钥ID关联的地址;以及响应于第二密钥ID在受限密钥ID的密钥ID范围内的确定而生成故障。

Description

限制不受信任软件对加密密钥的使用
技术领域
本公开涉及在计算机系统的存储器中存储的数据的保护,并且更特别地,限制不受信任软件对加密密钥的使用。
背景技术
现代计算系统采用盘加密来保护在硬驱动器盘或其它数据存储装置上静态存储的数据。然而,攻击者能够使用多种技术来从存储器取回数据,所述多种技术包含总线扫描、存储器扫描等。存储器可本身包含用于盘加密的密钥,因而显露在盘驱动器上加密的数据。因此,各种技术已被采用以保护驻留在存储器的至少一些区域中的敏感数据。这样做已变得具挑战性,特别是在其中可在相同服务器上同时支持(来自不同实体的)多个客户工作负载的云或服务器环境中。
附图说明
图1A和1B是根据各种实现的,用于限制不受信任软件对加密密钥的使用的计算装置的系统框图。
图2A是根据一实现的,图示在受限与非受限密钥ID之间划定的密码密钥标识符(ID)的框图。
图2B是根据各种实现的,包含分配到密钥ID的地址位的一部分的物理存储器地址的框图。
图3是根据各种实现的图1的计算装置的密码引擎的一部分的框图。
图4是根据一实现的,与使用分页进行的线性地址到物理存储器地址的转译关联的页表的框图。
图5A是根据一实现的,图示宾客虚拟地址到宾客物理地址和宾客物理地址到主机物理地址的转译的框图。
图5B是根据一实现的,图示使用扩展页表(EPT)将宾客物理地址转译到主机物理地址的框图。
图6是根据各种实现的,用于限制不受信任软件对与存储器事务内的地址关联的密钥ID的使用的方法的流程图。
图7A是根据一个实现的,图示有序流水线和寄存器重命名阶段、乱序发布/执行流水线的框图。
图7B是根据本公开的一实现的,图示用于可实现对多密钥密码引擎的硬件支持的处理器或集成电路的微架构的框图。
图8图示根据本公开的一实现的,用于实现对多密钥密码引擎的硬件支持的处理器或集成电路的微架构的框图。
图9是根据一个实现的计算机系统的框图。
图10是根据另一实现的计算机系统的框图。
图11是根据一个实现的片上系统(system-on-a-chip)的框图。
图12图示用于计算系统的框图的另一实现。
图13图示用于计算系统的框图的另一实现。
具体实施方式
在计算领域的当前趋势是通过利用由云服务器提供商(CSP)提供的托管服务,将数据和企业工作负载放置在云中。由于数据和企业工作负载在云中的托管,CSP的客户(例如,租户)正在为其工作负载请求更好的安全性和违规解决方案。具体而言,客户寻求能够实现在租户的软件的可信计算基础(TCB)外CSP提供的软件的操作的解决方案。系统的TCB指的是具有影响对系统的总体操作的信任的能力的硬件、固件和/或软件组件的集合。相应地,例如,虚拟机监视器(VMM或管理程序)建立和控制执行租户软件的虚拟机(VM)。租户因此想要VMM的组件在租户的TCB外操作。如果VMM作为软件在虚拟化的服务器的硬件的顶部上被执行,则VMM被认为是不受信任软件。
为促进在基于CSP的系统中的数据安全性,各种技术已被采用以保护驻留在例如CSP服务器的存储器的区域中的敏感数据。一些系统处理器提供用于加密、完整性和重播保护的密码机制。存储器加密保护存储器驻留数据的机密性。例如,全存储器加密(TME)可将正在从处理器核移动到存储器的数据加密,并且可将在返回处理器核途中的加密数据解密。另外,CSP服务器可支持多个加密密钥的使用,例如针对服务器所服务的能够是几十或成千上万个域的每个安全域为不同密钥。相应地,TME引擎可适于作为多密钥TME(或MK-TME)引擎,安全地管理多个加密密钥的使用。
域可以指工作负载,诸如客户端机(例如,虚拟机)、操作系统、应用或服务器支持的可与不同租户关联的其它类型的工作负载。例如,安全域可以是连同在操作系统的顶部上执行的其它环3应用一起的诸如操作系统的租户工作负载,或是连同其它环3应用一起的其本身是单独的域的在VMM的顶部上执行的VM。支持多个密钥的使用的益处是在不同租户域之间提供密码隔离,例如,一个安全域不能访问加密的数据(如果该加密的数据属于通过不同加密密钥保护的不同安全域的话)。这些益处扩展到CSP的能力以在相同服务器上或在相同服务器集群内支持数量增长的租户工作负载以适应对基于云的资源的增长需求。
在与虚拟化服务器的MK-TME引擎相接口的存储器系统中,诸如VMM的存储器管理器可分配不同加密密钥到不同安全域。问题是VMM对所有加密密钥具有完全访问权,并且因此能够读取在服务器上的任何安全域的存储器。相应地,对至少一些加密密钥的访问将受到限制。受限的密钥可由它们被分配到的安全域使用,并且不可由其它不受信的软件(诸如存储器管理器或VMM)使用,即使后者最先分配了那些密钥。
在各种实现中,服务器(或其它计算装置)的处理器可包含具有诸如模型特定的寄存器(MSR)之类的硬件寄存器的处理器核。在服务器启动时,基本输入-输出系统(BIOS)固件可在硬件寄存器中存储具体信息以供随后处理器核在限制对受限加密密钥的访问中使用。此信息可包含被用于密钥标识符(ID)的物理存储器地址(例如,主机物理地址)的多个地址位的位范围。这些密钥ID可与域特定加密密钥关联和识别域特定加密密钥。在一个实现中,识别密钥ID的地址位是物理存储器地址的高地址位。由BIOS存储到硬件寄存器中的具体信息可进一步包含识别在密钥标识符的非受限密钥ID与受限密钥ID之间的边界的密钥ID的第一密钥标识符(ID)。此外,在一个实现中,可存储形成受限密钥ID的第二边界的另外密钥ID。
在这些实现中,处理器(或处理器的存储器控制器)可经由对硬件寄存器的访问进一步确定在物理存储器地址内受限密钥ID的密钥ID范围。处理器也可访问包含处理器核的第一逻辑处理器在不受信任域模式中执行的处理器状态,其中,逻辑处理器可与正在处理器核上运行的具体硬件线程关联。在本实现中,此硬件线程可以是VMM(或管理程序)的执行。处理器可进一步接收来自第一逻辑处理器的、包含与第二密钥ID关联的地址的存储器事务。处理器可访问地址,并且以各种方式确定第二密钥ID,这将被更详细地描述。处理器随后可确定第二密钥ID在受限密钥ID的密钥ID范围内,并且生成与由第一逻辑处理器对第二密钥ID的访问的类型有关的故障。处理器核也可阻止由第一逻辑处理器对与第二密钥ID从中被取回的物理存储器地址关联的存储器位置的访问。
在各种实现中,访问的类型可以是经由存储器事务中的物理存储器地址的直接物理映射的访问,并且因此可从物理存储器地址直接读取第二密钥ID。在其它实现中,访问是经由分页将存储器事务内的线性地址转译成物理存储器地址,并且由此获得对第二密钥ID的访问。在其它实现中,访问是将宾客虚拟地址(GVA)转译成宾客物理地址(GPA)(例如,通过宾客页表的行走),以及将宾客物理地址转译成主机物理地址(HPA),其是第二密钥ID被附加到的物理存储器地址。为实现对这些不同访问的不同响应和跟踪,如将更详细讨论的,处理器核可触发不同故障。
本文中描述的这些特征和其它特征包含许多益处,特别地,从使用不同受限加密密钥的安全域的TCB移除VMM(或管理程序)。这为在VMM下运行的租户虚拟机(VM)提供了甚至对VMM本身保持机密性的方式。
图1A和1B是根据各种实现,用于限制不受信任软件对加密密钥的使用的计算装置100的系统框图。在一个实现中,计算装置100可包含如本文中所图示和讨论地那样耦合的处理器101、辅存储装置115、通信电路117和存储器140和/或其它存储器装置。处理器101可进一步包括一个或多个处理器核102、密码引擎110、存储器控制器120(例如,存储器管理单元)及末级高速缓存(LLC)114。处理器101可被体现为(一个或多个)单核或多核处理器、数字信号处理器、微控制器或其它处理器或处理/控制电路。
如图1B中所图示的,每个处理器核102可包含高速缓存112、硬件虚拟化支持电路116和硬件寄存器130。处理器核102可执行指令以运行多个硬件线程,所述多个硬件线程也称为逻辑处理器,包含第一逻辑处理器104A、第二逻辑处理器104B等等,直至第N个逻辑处理器104n。在一个实现中,第一逻辑处理器104A是虚拟机监视器(VMM)或管理程序。多个虚拟机(VM)150可由VMM执行和控制。另外,如所讨论的,VMM可指派与对应加密密钥关联的密钥ID到在计算装置100上操作的各种安全域(例如,VMM、VM)。
进一步参照图1B,硬件寄存器130可包含例如多个模型特定的寄存器132(或MSR)和控制寄存器134(例如,CR1、CR2、CR3等)。存储器140可进一步包含如将参照图4和5A-5B更详细描述的用于分页的页表142和用于由VMM进行的地址转译的宾客页表144和扩展页表(EPT)146。
在一个实现中,计算装置100是服务于域(例如,诸如客户端机、操作系统、应用之类的不同工作负载或被支持的其它类型的工作负载)的服务器。在实现中,存储器控制器120可包含(或被耦合到)将被更详细讨论的具有密钥数据结构105的密码引擎110(诸如MK-TME引擎)。
在各种实现中,密码引擎110可被体现为微控制器、微处理器、功能块、逻辑或能执行本文中描述的功能的其它电路或电路的集合。密码引擎110可使用域特定的加密密钥来加密和/或解密从存储器读取或写入存储器的域数据,并且因此可与存储器控制器120结合工作,或者被集成在存储器控制器120内。密码引擎110可缓存内部密钥数据结构105,密码引擎110可使用内部密钥数据结构105来识别要保护的域访问。密钥数据结构105可以是能在密码引擎110的硬件内被索引和存储的表或其它数据结构。在一个实现中,硬件是高速缓存、寄存器的集合或其它闪速存储器。
相应地,密钥数据结构105可由密码引擎110的硬件或由可信软件控制和/或编程,例如通过使用处理器101的密码引擎编程支持电路来控制和/或编程。密钥数据结构105可适应存储用于域的密钥和域信息。加密密钥和/或密钥数据结构105的其它秘密信息可能不可用于不受信任软件。在一些实现中,密码引擎110可连同存储器控制器120和处理器核102一起被并入计算装置100的片上系统(SoC)中。
图2A是根据一实现、图示在受限与非受限密钥ID之间划定的密码密钥标识符(ID)的框图。这些密钥ID可被存储在与它们对应的加密密钥有关的密钥数据结构105中。在一些实现中,计算装置100的架构支持受限和非受限密钥ID二者。
如果有总数为K个的可用加密密钥ID,则KR是受限密钥的数量,并且KNR是非受限密钥的数量,其中K=KNR+KR。在受限与非受限密钥ID之间的边界可由BIOS或其它特许软件定义为任何密钥ID。如果受限密钥ID的密钥ID范围被嵌入在非受限密钥ID的密钥ID范围内,则BIOS可进一步定义第二密钥ID为第二边界。因此,第一边界可定义下限,并且第二边界可定义受限密钥ID范围的上限。在定义边界(或多个边界)后,密码引擎110可被告知该定义(通过MSR写或宏指令),并且此定义可在密码引擎110的重置前是固定的。这样,处理器核可确定当密钥ID的值位于密钥ID的范围中KNR与K-1之间时该值是受限的。
图2B是根据各种实现的、包含分配到密钥ID的地址位的一部分的n位物理存储器地址200的框图。地址位的此部分可涵盖M个位,其可以是至少Log2K。图2B中的虚线图示了支持的最大物理地址宽度。相应地,使用物理存储器地址的至少一些高位地址位来为密钥ID进行编码可以是有利的。然而,在其它实现中,用于密钥ID的M个位可被定位在物理存储器地址内的别处(包含超出最大物理地址宽度)。
使用MK-TME的操作可被启用且由BIOS在计算系统100启动时通过使用在MSR 132内的TME_ACTIVATE MSR进行配置。为启用MKTME,TME_ACTIVATE MSR中的TME启用RWL位可被设置,并且位35:32将具有非零值(其将指定为MK-TME配置的密钥ID位的数量)。这些MK_TME_KEYID_BITS是分配到MK-TME使用的密钥ID位的数量。类似于枚举,这是编码的值。写入大于MK_TME_MAX_KEYID_BITS的值可导致一般性保护故障(#GP)。将非零值写入此字段也可导致一般性保护故障(如果EAX的位1(TME使能)也未被设置成“1”的话),因为TME要被使能以使用MK-TME。TME_ACTIVATE MSR也可被用来锁定其它TME有关的MSR(例如,EXCLUD_MASK、EXCLUDE_BASE),以便在它们被锁定后到MSR的任何写入将被忽略。在计算系统100被重置时,该锁定可被重置。
在实现中,当计算系统100被启动时,BIOS可在TME_ACTIVATE MSR中存储特定信息以供后续处理器101(例如,密码引擎110和/或存储器控制器120)在限制对受限加密密钥和密钥ID的访问中使用。此信息可包含用于密钥ID的物理存储器地址(例如,主机物理地址)的多个地址位的位范围。由BIOS存储到TME_ACTIVATE MSR中的特定信息可进一步包含识别在密钥标识符的非受限密钥ID与受限密钥ID之间的边界的密钥ID的第一密钥标识符(ID)。此外,在一个实现中,另外的密钥ID可被存储在TME_ACTIVATE MSR中,其形成第二边界,在该第二边界处受限密钥ID被嵌入用于非受限密钥ID的地址位的范围内。
继续参照图1A和1B,第一逻辑处理器104A可执行虚拟机监视器(VMM),其可向存储器140发布存储器事务。存储器事务可包含与第二密钥ID关联的地址(例如,存储器地址)。密码引擎110(或代表密码引擎110的处理器核102)可访问例如被存储在控制寄存器134的CR3寄存器中的第一逻辑处理器的处理器状态。密码引擎110可确定该状态指示第一逻辑处理器在不受信任域模式中执行。密码引擎110可进一步确定第二密钥ID在受限密钥ID的密钥ID范围内,并且生成与由第一逻辑处理器对第二密钥ID的访问的类型有关的故障。
计算装置100可被体现为能执行本文中描述的功能的任何类型的计算或计算机装置,包含但不限于计算机、台式计算机、工作站、服务器、膝上型计算机、笔记本计算机、平板计算机、移动计算装置、可穿戴计算装置、网络设备、web设备、分布式计算系统、基于处理器的系统和/或消费电子装置。计算装置100可包含其它或另外的组件,诸如在其它实现中通常在台式计算机中发现的那些组件(例如,各种输入/输出装置)。另外,在一些实现中,一个或多个说明性组件可被并入另一组件中,或者以其它方式形成另一组件的一部分。例如,在一些实现中,存储器140或其部分可被并入处理器核中。
硬件虚拟化支持电路116(图1B)可支持由计算装置100对操作系统、应用和其它软件的虚拟化执行。硬件虚拟化支持电路116可通过提供以下两种执行模式而包含虚拟机扩展(VMX)支持:VMX-根模式和VMX非根模式。VMX-根模式允许执行软件对计算装置100及其硬件资源具有广泛的控制。相反,管理程序、VMM或主机操作系统(OS)可在VMX-根模式中执行。VMX非根模式在仍实行处理器核的普通环/特权系统的同时限制对某些硬件指令的访问。(例如,VM 150的)一个或多个宾客OS可在VMX非根模式中执行。那些宾客OS可在环零中执行,类似于在无虚拟化的情况下被执行。硬件虚拟化支持电路116也可支持扩展页表(EPT),其可被体现为硬件辅助的二级页地址转译。硬件虚拟化支持电路116可被体现为例如Intel® VT-x技术。
存储器140可被体现为能执行本文中描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器140可存储在计算装置100的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动程序。存储器控制器120可被耦合到存储器140以向存储器进行存储和从存储器获取,其在一些情况下可取决于针对高速缓存112的未命中。
辅助存储装置115可被体现为配置用于数据的短期或长期存储的任何类型的一个或多个装置,诸如,例如存储器装置和电路、存储器卡、硬盘驱动器、固态驱动器或其它数据存储装置。在一些实现中,辅助存储装置115可被用来存储一个或多个安全飞地的内容。在被辅助存储装置115存储时,安全飞地的内容可被加密以防止未经授权的访问。
计算装置100的通信电路117可被体现为能实现通过网络在计算装置100与其它远程装置之间的通信的任何通信电路、装置或其集合。通信电路117可被配置成使用任何一个或多个通信技术(例如,有线或无线通信)及关联协议(例如,以太网、Bluetooth®、Wi-Fi®、WiMAX等)来实现此类通信。
图3是根据各种实现的图1的计算装置100的密码引擎110的一部分的框图。密码引擎110可包含比较器303、第一与门305、第二与门307和第三与门309。在实现中,此硬件可为处理器核102的每个逻辑处理器被重复,或者可使用单组硬件跨逻辑处理器交错功能性。为便于解释,假设第一逻辑处理器104A(例如,VMM)已向存储器140发布包含地址的存储器事务。密码引擎110可与存储器控制器120一起工作以确定存储器事务是否包含对受限密钥ID的访问。
密码引擎110可经由对TME_ACTIVATE MSR的访问,确定物理存储器地址内受限密钥ID的密钥ID范围和确定识别在可用密钥标识符的非受限密钥ID与受限密钥ID之间的边界的至少第一密钥ID。密码引擎110可从此信息确定带有物理存储器地址的受限密钥ID的密钥ID范围,其是到比较器303中的一个输入。密码引擎110可进一步接收来自存储器事务中地址的所请求的密钥ID的身份,其可以是到比较器303中的另一输入。比较器303可比较这些值以确定与存储器事务关联的所请求的密钥ID是否在受限密钥ID的密钥ID范围内,并且输出结果。
在实现中,从比较器303的输出可作为输入被馈送到第一与门305。第一逻辑处理器104A在不受信任域模式中执行的指示可从控制寄存器(例如,CR3)被接收,作为到第一与门305的另一输入。这两个输入的组合产生可由处理器核102辨识并根据具体故障被处理的故障的输出。存储器控制器120可进一步阻止由第一逻辑处理器对与第二密钥ID关联的地址的存储器位置(在存储器140中)的访问。
在实现中,故障可以根据由第一逻辑处理器104A对受限密钥ID的访问的类型而改变。第一类型可以是其中存储器事务的地址是物理存储器地址,并且访问因此是在对第二密钥ID的直接物理映射的访问的尝试。也就是说,第二密钥ID可被直接附加到物理存储器地址。在此情况下,密码引擎110可生成用于访问的中止页语义。相应地,存储器控制器120可忽略从逻辑处理器到存储器位置的其它写事务;并且响应于到存储器位置的其它读事务,全部返回一值(1)。
在第二类型的访问中,在存储器事务中的地址可以是通过分页映射到物理存储器地址的线性地址,这将参照图4被更详细地讨论。在此情况下,密码引擎110可从存储器控制器120接收第二密钥ID和物理存储器地址(及因此第二密钥ID)是从分页获得的指示。第二与门307可将此指示接收为输入,并且可将第一与门305的输出接收为另一输入。在一个实现中,在这两个输入被断定为真时,所得到的故障可以是与在分页期间在页表内设置预留位的尝试关联的预留密钥页故障。
在第三类型的访问中,在存储器事务中的地址可以是宾客虚拟地址(GVA)。GVA可被映射到宾客物理地址(GPA),其又被映射到主机物理地址(HPA),该地址是本公开涉及的物理存储器地址。VMM(例如,第一逻辑处理器104A)可通过宾客页表144的行走而将GVA转译成GPA,并且通过扩展页表(EPT)146的行走将GPA转译成HPA,这将参照图5A-5B更详细地被讨论。
进一步参照第三类型的访问,VMM可通过刚讨论的转译来提取物理存储器地址和第二密钥ID。VMM可进一步向密码引擎110发送第二密钥ID和物理存储器地址是通过EPT146获得的指示。第三与门309可接收此指示和从第一与门305的输出。在一个实现中,在这两个输入被断定为真时,所得的故障可以是与为将来功能性预留的EPT分页结构条目的配置关联的预留密钥EPT配置错误故障。
在备选实现中预想了另外或不同的故障,但通过使用中止页语义、预留密钥页故障和用于从这三个类型的访问生成的故障的预留密钥EPT配置错误,处理器核102已经被配备成检测和适当地处理此类故障。换而言之,参照图3讨论的密码引擎的硬件可例示生成本文中讨论的处理器微架构中现有故障的新方式。
图4是根据一实现,与使用分页进行的线性地址405到物理存储器地址的转译关联的页表400的框图。分页支持虚拟存储器环境,其中通过少量的物理存储器(RAM和ROM)和一些盘存储装置来仿真大的线性地址空间。在使用分页时,每个段被分成多个页(例如,每个大小为4千字节),所述多个页被存储在存储器140中或在例如辅助存储装置115的盘上。操作系统和/或存储器控制器120能维持页目录和用来跟踪页的页表集合。在程序(或任务)尝试访问在线性地址空间中的地址位置时,存储器控制器120可使用页目录和页表来将线性地址转译成物理地址,并且随后在该存储器位置上执行所请求的操作(读或写)。
如果在被访问的页当前不在物理存储器中,则处理器中断程序的执行(通过生成页故障异常)。存储器控制器120随后可将页从盘读取到物理存储器中,并且继续执行程序。
继续参照图4,线性地址405可被分区成页目录(PDE)位、页表位和偏移。PDE位可充当到经由在CR3控制寄存器中的位之一定位的页目录表(PDT)中的指针。PDE位指向的PDT表内的地址随后可充当指针以定位存储器中正确的页表。页表位指向被定位的页表内的页表条目(PTE)。该PTE随后可充当到存储器中正确的4-Kbte页的地址的指针,其中偏移指向物理存储器地址。
图5A是根据一实现的、图示宾客虚拟地址(GVA)到宾客物理地址(GPA)和GPA到主机物理地址(HPA)或物理存储器地址的转译的框图500。在一个实现中,为代表虚拟机来仿真指令,VMM可需要将指令使用的线性地址(例如,GVA)转译成物理存储器地址,使得VMM能够访问在该物理地址的数据。如所讨论的,VMM也可如本公开内所讨论的那样在保护措施未到位的情况下获得对附加密钥ID的访问。
为执行该转译,VMM可需要先确定分页和分段,其包含检查虚拟机(VM)150的分段状态。VMM也可在指令调用时确定VM 150的分页模式,这包含检查由VM设定的页表和检查由VM 150编程的MSR及控制寄存器134。在分页和分段模式的发现后,VMM可生成用于逻辑地址的GVA,并且检测任何分段故障。
假设未检测到分段故障,VMM可将GVA转译成GPA,并且将GPA转译成HPA,这包含在软件中执行页表行走。为在软件中执行这些转译,VMM可将原来由VM 150设定的多个分页结构条目和EPT结构条目加载到通用寄存器或存储器中。一旦这些分页和EPT结构条目被加载,VMM便可通过对诸如页未命中处理机(PMH)之类的转译电路进行建模来执行转译。
更具体地,参照图5A,VMM可从宾客页表144加载多个宾客页表条目144A和从EPT146加载由VM 150已建立的多个扩展页表条目146A。VMM随后可通过行走穿过(例如,有序搜索)宾客页表条目144A以从GVA生成GPA来执行转译。VMM随后可使用GPA来行走(例如,有序搜索)EPT 146以生成与GPA关联的HPA。EPT 146的使用是能够被用来支持物理存储器的虚拟化的特征。当EPT在使用中时,通常将被作为物理地址处理(并且用来访问存储器)的某些地址转而被作为宾客物理地址处理。宾客物理地址通过遍历EPT分页结构的集合以产生被用来访问物理存储器的物理地址而被转译。
图5B是根据一个实现的、图示VMM可如何行走扩展页表条目144A来将GPA转译成HPA的框图550。例如,宾客物理地址(GPA)可被分解成一系列的偏移,每个偏移在EPT条目146A的层次结构的表结构内进行搜索。在此示例中,从中导出EPT条目的EPT包含条目的四级层次表,其包含第4级页映射表、页目录指针表、页目录条目表和页表条目表。(在其它实施例中,层次结构的不同级数可在EPT内存在,并且因此公开的实施例将不受EPT的具体实现限制。)在EPT层次结构的某个级的每个搜索的结果可被添加到用于下一表的偏移以定位在EPT层次结构中下一级表的下一结果。第四(页表条目)表的结果可与页偏移组合以定位在物理存储器中的4 Kb页(举例来说),其是主机物理地址。
图6是根据各种实现的、用于限制不受信任软件对与存储器事务内的地址关联的密钥ID的使用的方法600的流程图。相应地,方法600可由处理逻辑执行,所述处理逻辑可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、固件或其组合。在一个实现中,方法600由图1的处理器101执行,例如由密码引擎110和/或存储器控制器120执行。在另一实现中,方法600由参照图7A-13描述的任何处理器执行。
进一步参照图6,方法600可以以处理逻辑在处理器核102的硬件寄存器中存储被用于密钥标识符(ID)的物理存储器地址的多个地址位的位范围而开始(610)。密钥ID与域特定加密密钥关联。方法600可通过处理逻辑在硬件寄存器中存储用来识别在密钥标识符的非受限密钥ID与受限密钥ID之间的边界的密钥ID的第一密钥标识符(ID)而继续(620)。方法600可通过处理逻辑经由对位范围和第一密钥ID的访问,确定在物理存储器地址内受限密钥ID的密钥ID范围来继续(630)。方法600可通过处理逻辑访问处理器状态而继续(640),所述处理器状态例如是处理器核的第一逻辑处理器正在不受信任域模式中执行的指示。方法600可通过处理逻辑截接来自第一逻辑处理器的、包含与第二密钥ID关联的地址的存储器事务而继续(650)。方法600可通过处理逻辑确定第二密钥ID在受限密钥ID的密钥ID范围内而继续(660)。方法600可通过处理逻辑生成与由第一逻辑处理器对第二密钥ID的访问的类型有关的故障而继续(670)。
图7A是根据一实现的、图示用于处理器700的微架构的框图,该微架构实现用于限制不受信任软件对加密密钥的使用的硬件支持。具体地说,处理器700描绘了根据本公开的至少一个实现的、要被包括在处理器中的有序架构核和寄存器重命名逻辑、乱序发布/执行逻辑。
处理器700包含耦合到执行引擎单元750的前端单元730,并且执行引擎单元750和前端单元730二者均耦合到存储器单元770。处理器700可包含精简指令集计算(RISC)核、复杂指令集计算(CISC)核、极长指令字(VLIW)核或混合或备选核类型。在仍有的另一选项中,处理器700可包含专用核,诸如例如网络或通信核、压缩引擎、图形核等。在一个实现中,处理器700可以是多核处理器,或者可以是多处理器系统的部分。
前端单元730包含耦合到指令高速缓存单元734的分支预测单元732,该指令高速缓存单元734被耦合到指令转译后备缓冲器(TLB)736,该指令转译后备缓冲器736被耦合到指令获取单元738,该指令获取单元738被耦合到解码单元740。解码单元740(也称为解码器)可解码指令,并且生成从原始指令解码出的、或以其它方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其它指令或其它控制信号作为输出。解码器740可使用各种不同机制来实现。适合机制的示例包含但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元734进一步被耦合到存储器单元770。解码单元740被耦合到执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包含耦合到引退单元754和一个或多个调度器单元756的集合的重命名/分配器单元752。(一个或多个)调度器单元756表示任何数量的不同调度器电路,其包含预留站(RS)、中央指令窗等。(一个或多个)调度器单元756被耦合到(一个或多个)物理寄存器集单元758。(一个或多个)物理寄存器集单元758的每个表示一个或多个物理寄存器集,这些集的不同集存储一个或多个不同数据类型(诸如标量整数、标量浮点、打包的整数、打包的浮点、向量整数、向量浮点等)、状态(例如,作为要执行的下一指令的地址的指令指针)等。(一个或多个)物理寄存器集单元758被引退单元754重叠以图示可实现寄存器重命名和乱序执行所采用的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器集;使用(一个或多个)将来文件、(一个或多个)历史缓冲器和(一个或多个)引退寄存器集;使用寄存器图和寄存器的池;等等)。
一般地,架构寄存器可从处理器外部或者从程序员的角度而言是可见的。寄存器未被限于任何已知具体类型的电路。各种不同类型的寄存器只要其能如本文中所述那样存储和提供数据,它们便是适合的。适合的寄存器的示例包含但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元754和(一个或多个)物理寄存器集单元758被耦合到(一个或多个)执行集群760。(一个或多个)执行集群760包含一个或多个执行单元762的集合和一个或多个存储器访问单元764的集合。执行单元762可执行各种操作(例如,移位、加法、减法、乘法),并且在各种类型的数据(例如,标量浮点、打包的整数、打包的浮点、向量整数、向量浮点)上操作。
尽管一些实现可包含专用于特定功能或功能的集合的多个执行单元,但其它实现可仅包含一个执行单元或全部执行所有功能的多个执行单元。(一个或多个)调度器单元756、(一个或多个)物理寄存器集单元758和(一个或多个)执行集群760被示为可能是复数个,因为某些实现为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包的整数/打包的浮点/向量整数/向量浮点流水线和/或存储器访问流水线,每个流水线具有其自己的调度器单元、(一个或多个)物理寄存器集单元和/或执行集群 - 并且在单独的存储器访问流水线的情况中,实现了在其中仅此流水线的执行集群具有(一个或多个)存储器访问单元764的某些实现)。还应理解的是,在使用单独流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元764的集合被耦合到存储器单元770,仅举几个示例,其可包含数据预获取器780、数据TLB单元772,数据高速缓存单元(DCU)774和2级(L2)高速缓存单元776。在一些实现中,DCU 774也被称为一级数据缓存(L1高速缓存)。DCU 774可处理多个未解决的高速缓存未命中,并且继续服务于进入的存储和负载。它也支持维护高速缓存一致性。数据TLB单元772是用来通过映射虚拟和物理地址空间而改进虚拟地址转译速度的高速缓存。在一个示范实现中,存储器访问单元764可包含加载单元、存储地址单元和存储数据单元,每个单元被耦合到存储器单元770中的数据TLB单元772。L2高速缓存单元776可被耦合到一个或多个其它级别的高速缓存,并且最终耦合到主存储器。
在一个实现中,数据预获取器780通过自动预测程序将消耗哪个数据而推测性地加载/预获取到DCU 774的数据。预获取可指在数据实际上被处理器需求前将在存储器层次结构(例如,更低级别高速缓存或存储器)的一个存储器位置(例如,方位)中存储的数据转移到更靠近(例如,产生更低访问时延)处理器的更高级别存储器位置。更具体地说,预获取可指在处理器发布对在返回的特定数据的需求前从更低级别高速缓存/存储器之一到数据高速缓存和/或预获取缓冲器的数据的提前取回。
处理器700可支持一个或多个指令集(例如,x86指令集(带有在更新版本已添加的一些扩展)、英国赫特福德郡的Imagination Technologies of Kings Langley的MIPS指令集、加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集(带有诸如NEON的可选另外扩展)。
应理解的是,核可支持多线程处理(执行操作或线程的两个或更多并行集合),并可以采用多种方式来这样做,所述多种方式包含时间分段的多线程处理、同时多线程处理(其中,单个物理核为该物理核正进行同时多线程处理的线程中的每个提供逻辑核),或其组合(例如,诸如在Intel®超线程技术中的时间分段的获取和解码以及其后的同时多线程)。
尽管寄存器重命名在乱序执行的上下文中被描述,但应理解的是,寄存器重命名可被用在有序架构中。尽管处理器的图示的实现也包含单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但备选实现可具有诸如例如1级(L1)内部高速缓存的用于指令和数据二者的单个内部高速缓存或多个级别的内部高速缓存。在一些实现中,系统可包含内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。备选的是,所有高速缓存可在核和/或处理器的外部。
图7B是根据本公开的一些实现的、图示由图7A的处理器实现的有序流水线和寄存器重命名阶段、乱序发布/执行流水线的框图。图7B中的实线框图示了有序流水线701,而虚线框图示了寄存器重命名、乱序发布/执行流水线703。在图7B中,流水线701和703包含获取阶段702、长度解码阶段704、解码阶段706、分配阶段708、重命名阶段710、调度(也称为分派或发布)阶段712、寄存器读取/存储器读取阶段714、执行阶段716、写回/存储器写阶段718、异常处理阶段720和提交阶段722。在一些实现中,阶段702-724的排序可与所图示的不同,并且未被限于图7B中示出的特定排序。
图8图示了根据本公开的实现的处理器800的微架构的框图,所述处理器800包含实现用于限制不受信任软件对加密密钥的使用的硬件支持的集成电路或处理器的逻辑电路。在一些实现中,根据一个实现的指令能够被实现以对具有大小为字节、字、双字、四字等以及诸如单和双精度整数和浮点数据类型之类的数据类型的数据元素进行操作。在一个实现中,有序前端801是处理器800的一部分,该部分获取要执行的指令,并且准备它们以供在处理器流水线中稍后被使用。页添加和内容复制的实现能够在处理器800中被实现。
前端801可包含若干单元。在一个实现中,指令预获取器826从存储器获取指令,并且将它们馈送到指令解码器828,指令解码器828进而解码或解释所述指令。例如,在一个实现中,解码器将收到的指令解码成机器能够执行的称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其它实现中,解码器将指令解析成可由微架构用来执行根据一个实现的操作的操作码和对应数据和控制字段。在一个实现中,踪迹高速缓存830取用解码的uop并且将它们组装成uop队列834中的程序有序序列或踪迹以供执行。踪迹高速缓存830遇到复杂指令时,微代码ROM(或RAM)832提供完成操作所需的uop。
一些指令被转换成单个微-op,而其它指令需要几个微-op来完成全部操作。在一个实现中,如果需要超过4个微-op来完成指令,则指令解码器828访问微代码ROM 832以执行指令。对于一个实现,能够将指令解码成少量的微op以进行在指令解码器828的处理。在另一实现中,如果需要多个微-op来完成操作,则能够在微代码ROM 832内存储指令。踪迹高速缓存830指的是入口点可编程逻辑阵列(PLA),其用来确定正确的微指令指针,以便从微代码ROM 832读取微代码序列以完成根据一个实现的一个或多个指令。在微代码ROM 832为指令完成微-op排序后,机器的前端801恢复从踪迹高速缓存830获取微-op。
乱序执行引擎803是指令准备好以供执行的地方。乱序执行逻辑具有多个缓冲器,以在指令沿流水线向下并且被调度用于执行时,平滑处理和重新排序指令的流以优化性能。分配器逻辑分配每个uop为了执行而需要的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器集中的条目上。在指令调度器(存储器调度器、快速调度器802、慢速/普通浮点调度器804和简单浮点调度器806)前,分配器也为两个uop队列(一个用于存储器操作,一个用于非存储器操作)之一中的每个uop分配条目。Uop调度器802、804、806基于它们相关的输入寄存器操作数源的准备度以及uop完成其操作需要的执行资源的可用性,来确定uop何时准备好执行。一个实现的快速调度器802能够在每半个主时钟周期上进行调度,而其它调度器只能够每个主处理器时钟周期调度一次。调度器对分派端口进行裁决,以调度uop以供执行。
寄存器集808、810位于调度器802、804、806与执行块811中的执行单元812、814、816、818、820、822、824之间。有分别用于执行整数和浮点运算的单独寄存器集808、810。一个实现的每个寄存器集808、810也包含旁路网络,其能够将还尚未被写入寄存器集中的刚完成的结果旁路或转发到新的相关uop。整数寄存器集808和浮点寄存器集810也能相互传递数据。对于一个实现,整数寄存器集208被拆分成两个单独的寄存器集,一个寄存器集用于数据的低阶32位,第二寄存器集用于数据的高阶32位。一个实现的浮点寄存器集810具有128位宽条目,因为浮点指令通常具有宽度从64到128位的操作数。
执行块811含有指令实际上在其中被执行的执行单元812、814、816、818、820、822、824。此部分包含存储微指令需要执行的整数和浮点数据操作数值的寄存器集808、810。一个实现的处理器800由以下多个执行单元组成:地址生成单元(AGU)812、AGU 814、快速ALU816、快速ALU 818、慢速ALU 820、浮点ALU 812、浮点移动单元814。对于一个实现,浮点执行块812、814执行浮点、MMX、SIMD和SSE或其它操作。一个实现的浮点ALU 812包含64位乘64位浮点除法器以执行除法、平方根和余数微-op。对于本公开的实现,可通过浮点硬件来处理涉及浮点值的指令。
在一个实现中,ALU操作转到高速ALU执行单元816、818。一个实现的快速ALU 816、818能够通过半个时钟周期的有效时延来执行快速操作。对于一个实现,最复杂的整数操作转到慢速ALU 820,因为慢速ALU 820包含用于长时延类型操作的整数执行硬件,诸如乘法器、位移、旗标逻辑和分支处理。存储器加载/存储操作由AGU 822、824执行。对于一个实现,整数ALU 816、818、820在对64位数据操作数执行整数操作的上下文中被描述。在备选实现中,ALU 816、818、820能够被实现以支持包含16、32、128、256等的多种数据位。类似地,能够实现浮点单元822、824以支持具有各种宽度的位的操作数的范围。对于一个实现,浮点单元822、824能够结合SIMD和多媒体指令,对128位宽打包的数据操作数进行操作。
在一个实现中,uop调度器802、804、806在父加载已完成执行前分派相关操作。由于可推测性地在处理器800中调度和执行uop,因此,处理器800也包含处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则流水线中能够存在飞行中(in flight)相关操作,其为调度器留下了暂时不正确的数据。重放机制跟踪和重新执行使用不正确数据的指令。仅需要重放相关操作,并且允许完成独立操作。处理器的一个实现的调度器和重放机制也被设计成捕捉用于文本字符串比较运算的指令序列。
术语“寄存器”可指的是可被用作识别操作数的指令的部分的板载处理器存储位置。换而言之,寄存器可以是从处理器的外部可使用的那些寄存器(从程序员的角度而言)。然而,一实现的寄存器不应在含义上被限于具体类型的电路。相反,一实现的寄存器能存储和提供数据,并且执行本文中描述的功能。本文中描述的寄存器能够由处理器内的电路使用任何数量的不同技术实现,诸如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实现中,整数寄存器存储32位整数数据。一个实现的寄存器集也含有用于打包的数据的8个多媒体SIMD寄存器。
对于本文中的讨论,寄存器被理解为是设计成保持打包的数据的数据寄存器,诸如来自加利福尼亚州Santa Clara的Intel Corporation的以MMX技术实现的微处理器中的64位宽MMX™寄存器(在一些实例中也被称为“mm”寄存器)。在整数和浮点形式二者中可用的这些MMX寄存器能够与伴随SIMD和SSE指令的打包的数据元素一起操作。类似地,与SSE2、SSE3、SSE4或更高版本(一般称为“SSEx”)技术有关的128位宽XMM寄存器也能够被用来保持此类打包的数据操作数。在一个实现中,在存储打包的数据和整数数据中,寄存器无需区分这两种数据类型。在一个实现中,整数和浮点被包含在相同寄存器集或不同寄存器集中。此外,在一个实现中,浮点和整数数据可被存储在不同寄存器或相同寄存器中。
实现可在许多不同系统类型中被实现。现在参照图9,示出的是根据一实现,可实现用于限制不受信任软件对加密密钥的使用的硬件支持的多处理器系统900的框图。如图9中所示,多处理器系统900是点对点互连系统,并且包含经由点对点互连950耦合的第一处理器970和第二处理器980。如图9中所示出的,处理器970和980中的每个可以是多核处理器,包含第一和第二处理器核(即,处理器核974a和974b与处理器核984a和984b),但潜在地在处理器中可存在更多的核。尽管采用两个处理器970、980来示出,但要理解的是,本公开的范围不被如此限制。在其它实现中,在给定处理器中可存在一个或多个另外的处理器。
处理器970和980被示为分别包含集成存储器控制器单元972和982。处理器970也包含作为其总线控制器单元的一部分的点对点(P-P)接口976和978;类似地,第二处理器980包含P-P接口986和988。处理器970、980可经由使用P-P接口电路978、988的点对点(P-P)接口950交换信息。如图9中所示出的,IMC 972和982将处理器耦合到相应存储器,即存储器932和存储器934,这些存储器可以是在本地附连到相应处理器的主存储器的部分。
处理器970、980可使用点对点接口电路976、994、986、998,经由各个P-P接口952、954与芯片集990交换信息。芯片集990也可经由高性能图形接口992与高性能图形电路938交换信息。
芯片集990可经由接口996被耦合到第一总线916。在一个实现中,第一总线916可以是外设组件互连(PCI)总线,或诸如PCI Express总线或互连总线之类的总线,但本公开的范围不被如此限制。
如图9中所示出的,各种I/O装置914可连同总线桥918被耦合到第一总线916,总线桥918将第一总线916耦合到第二总线920。在一个实施例中,第二总线920可以是低引脚计数(LPC)总线。在一个实施例中,各种装置可被耦合到第二总线920,其例如包含键盘和/或鼠标922、通信装置927和诸如可包含指令/代码和数据930的盘驱动器或其它海量存储装置之类的存储单元928。此外,音频I/O 924可被耦合到第二总线920。注意,其它架构是可能的。例如,系统可实现多点分支总线或其它此类架构,而不是图9的点对点架构。
现在参照图10,示出的是根据本公开的一实现,可实现用于限制不受信任软件对加密密钥的使用的硬件支持的第三系统1000的框图。图9和10中相似的元件使用相似的参考标号,并且已从图9省略了图10的某些方面以避免混淆图9的其它方面。
图10图示了处理器1070、1080。在一个实施例中,处理器970、980可实现如上所述的混合核。处理器1070、1080可分别包含集成存储器和I/O控制逻辑(“CL”)1072和1082,并且分别经由在点对点(P-P)接口1078与1088之间的点对点互连1050彼此进行相互通信。处理器1070、1080各自经由通过如所示出的相应P-P接口1076到1094和1086到1098的点对点互连1052和1054与芯片集1090进行通信。对于至少一个实现,CL 1072、1082可包含诸如本文中所述的集成存储器控制器单元。另外,CL 1072、1092也可包含I/O控制逻辑。图10图示了存储器1032、1034被耦合到CL 1072、1092,以及I/O装置1014也被耦合到控制逻辑1072、1092。遗留I/O装置1015经由接口1096被耦合到芯片集1090。
图11是可包含核1102A...1102N中的一个或多个的示范片上系统(SoC)1100,所述核1102A...1102N可实现用于限制不受信任软件对加密密钥的使用的硬件支持。本领域中熟知的用于以下各项的其它系统设计和配置也是适合的:膝上型计算机、桌上型计算机、手持式PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式装置及各种其它电子装置。一般地,能并入如本文中公开的处理器和/或其它执行逻辑的大量系统或电子装置一般是适合的。
在图11的示范SoC 1100内,虚线框是在更先进的SoC上的特征。(一个或多个)互连单元1103可被耦合到:应用处理器1117,其包含分别含有一个或多个高速缓存单元1104A...1104N的一个或多个核1102A-N的集合以及(一个或多个)共享高速缓存单元1106;系统代理器单元1110;(一个或多个)总线控制器单元1116;(一个或多个)集成存储器控制器单元1114;一个或多个媒体处理器1120的集合,其可包含集成图形逻辑1108、用于提供静态和/或视频摄像机功能性的图像处理器1124、用于提供硬件音频加速的音频处理器1126及用于提供视频编码/解码加速的视频处理器1128;静态随机存取存储器(SRAM)单元1130;直接存储器存取(DMA)单元1132;及用于耦合到一个或多个外部显示器的显示单元1140。
接下来转到图12,描绘的是根据本公开的一实现,可实现用于限制不受信任软件对加密密钥的使用的硬件支持的片上系统(SoC)设计的实现。作为说明性示例,SOC 1200被包含在用户设备(UE)中。在一个实现中,UE指的是由最终用户用来进行通信的任何装置,诸如手持式电话、智能电话、平板计算机、超薄笔记本、带有宽带适配器的笔记本或任何其它类似的通信装置。UE可连接到基站或节点,其能够在性质上对应于GSM网络中的移动台(MS)。页添加和内容复制的实现能够在SoC 1200中被实现。
在这里,SoC 1200包含2个核 - 1206和1207。类似于上面的讨论,核1206和1207可符合指令集架构,诸如具有Intel® Architecture Core™的处理器、Advanced MicroDevices, Inc.(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户以及他们的受许可方或采用者。核1206和1207被耦合到与总线接口单元1209和L2高速缓存1210关联的高速缓存控制1208,以与系统1200的其它部分进行通信。互连1211包括片上互连,诸如IOSF、AMBA或上面讨论的其它互连,其能够实现描述的公开的一个或多个方面。
在一个实现中,SDRAM控制器1240可经由高速缓存1210连接到互连1211。互连1211提供到其它组件的通信信道,其它组件诸如是用来与SIM卡相接口的订户身份模块(SIM)1230、保持引导代码以便由核1206和1207执行以初始化和引导SOC 1200的引导ROM 1235、与外部存储器(例如,DRAM 1260)相接口的SDRAM控制器1240、与非易失性存储器(例如,闪存1265)相接口的闪存控制器1245、与外设相接口的外设控制1250(例如,串行外设接口)、显示和接收输入(例如,触摸使能的输入)的视频编解码器1220和视频接口1225、执行图形有关计算的GPU 1215等。任何这些接口可并入本文中描述的实现的方面。
另外,系统图示了用于通信的外设,诸如功率控制模块1255、Bluetooth®模块1270、3G调制解调器1275、GPS 1280和Wi-Fi® 1285。注意如上所陈述的,UE包含用于通信的无线电。因此,这些外设通信模块可未被全部包含。然而,在UE中,应包含用于外部通信的某种形式的无线电。
图13图示了采用计算系统1300的示例形式的机器的图形表示,在计算系统1300内有根据本文中讨论的方法中的任何一种或多种,用于促使机器实现用于限制不受信任软件对加密密钥的使用的硬件支持的指令集。在备选实现中,机器可被连接(例如,联网)到在LAN、内联网、外联网或因特网中的其它机器。机器可在客户端-服务器网络环境中的服务器或客户端装置的容量中操作,或者作为对等(或分布式)网络环境中的对等机器操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥或能够执行规定要由该机器采取的动作的指令集(有序或无序)的任何机器。进一步地,尽管只图示了单个机器,但术语“机器”也应被视为包含单独或联合执行指令集(或多个指令集)以执行本文中讨论的任何一种或多种方法的机器任何集合。页添加和内容复制的实现能够在计算系统1300中被实现。
计算系统1300包含处理装置1302、主存储器1304(例如,闪速存储器、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1306(例如,闪速存储器、静态随机存取存储器(SRAM)等)和数据存储装置1316,其经由总线1308彼此进行通信。
处理装置1302表示一个或多个通用处理装置,诸如微处理器、中央处理单元或诸如此类。更特别地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、极长指令字(VLIW)微处理器或实现其它指令集的处理器或实现指令集的组合的处理器。处理装置1302也可以是一个或多个专用处理装置,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或诸如此类。在一个实现中,处理装置1302可包含一个或多个处理器核。处理装置1302被配置成执行处理逻辑1326以便执行本文中讨论的操作。
在一个实现中,处理装置1302能够是包含公开的LLC缓存架构的处理器或集成电路的部分。备选地,计算系统1300能够包含如本文中所述的其它组件。应理解的是,核可支持多线程处理(执行操作或线程的两个或更多并行集合),并可以多种方式来这样做,所述多种方式包括时间分段的多线程处理、同时多线程处理(其中,单个物理核为该物理核正进行同时多线程处理的线程的每个提供逻辑核),或其组合(例如,诸如在Intel®超线程技术中的时间分段的获取和解码以及其后的同时多线程处理)。
计算系统1300可进一步包括可通信地耦合到网络1319的网络接口装置1318。计算系统1300也可包含视频显示装置1310(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置1312(例如,键盘)、光标控制装置1314(例如,鼠标)、信号生成装置1320(例如,扬声器)或其它外设装置。此外,计算系统1300可包含图形处理单元1322、视频处理单元1328和音频处理单元1332。在另一实现中,计算系统1300可包含芯片集(未图示),其指的是被设计成与处理装置1302一起工作的一组集成电路或芯片并且控制处理装置1302与外部装置之间的通信。例如,芯片集可以是在母板上的芯片的集合,其链接处理装置1302到诸如主存储器1304和图形控制器的极高速装置,以及链接处理装置1302到诸如USB、PCI或ISA总线之类的外设的更低速度外设总线。
数据存储装置1316可包含计算机可读存储介质1324,在所述计算机可读存储介质1324上存储了实施本文中描述的功能的方法中的任何一种或多种方法的软件1326。软件1326也可作为指令1326完全或至少部分驻留在主存储器1304内和/或在其由计算系统1300执行期间作为处理逻辑完全或至少部分驻留在处理装置1302内;主存储器1304和处理装置1302也构成计算机可读存储介质。
计算机可读存储介质1324也可被用来存储利用处理装置1302的指令1326和/或含有调用上述应用的方法的软件库。尽管计算机可读存储介质1324在一示例实现中被示为是单个介质,但术语“计算机可读存储介质”应被视为包含存储一个或多个指令集的单个介质或多个介质(例如,集中或分布式数据库和/或关联高速缓存和服务器)。术语“计算机可读存储介质”也应被视为包含能存储、编码或携带指令集以供机器执行并且促使机器执行本公开的实现的方法中的任何一种或多种方法的任何介质。术语“计算机可读存储介质”应相应地被视为包含但不限于固态存储器和光及磁性介质。
以下示例涉及其它实现。
示例1是一种处理器,包括:1)包括2)硬件寄存器的处理器核,所述硬件寄存器用来存储:a)用于密钥标识符(ID)的物理存储器地址的多个地址位的位范围;以及b)用来识别在所述密钥标识符的非受限密钥ID与受限密钥ID之间的边界的所述密钥标识符的第一密钥标识符(ID);以及3)耦合到所述处理器核的存储器控制器,所述存储器控制器要执行以下操作:a)经由对所述硬件寄存器中所述位范围和所述第一密钥ID的访问,确定在所述物理存储器地址内所述受限密钥ID的密钥ID范围;b)访问包括所述处理器核的第一逻辑处理器在不受信任域模式中执行的指示的处理器状态;c)从所述第一逻辑处理器接收存储器事务,所述存储器事务包括与第二密钥ID关联的地址;以及d)响应于所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内的确定而生成故障。
在示例2中,如示例1所述的处理器,其中所述故障与由所述第一逻辑处理器对所述第二密钥ID的访问的类型有关。
在示例3中,如示例1所述的处理器,其中所述存储器事务包含所述第二密钥ID被附加到的物理存储器地址,并且其中所述存储器控制器将进一步执行以下操作:a)确定所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内;以及b)阻止由所述第一逻辑处理器对与所述物理存储器地址关联的存储器位置的访问。
在示例4中,如示例3所述的处理器,其中响应于所述故障的生成,所述存储器控制器将进一步执行以下操作:a)忽略从所述第一逻辑处理器到所述存储器位置的其它写事务;以及b)响应于对所述存储器位置的其它读事务,全部返回一值。
在示例5中,如示例1所述的处理器,其中所述存储器事务包含线性地址,并且其中所述存储器控制器将进一步执行以下操作:a)经由分页将所述线性地址转译成物理存储器地址;b)从所述物理存储器地址提取所述第二密钥ID;以及c)阻止由所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
在示例6中,如示例5所述的处理器,其中所述故障包括与在所述分页期间在页表内设置预留位的尝试关联的预留密钥页故障。
在示例7中,如示例1所述的处理器,其中所述存储器事务包含宾客虚拟地址,并且其中所述第一逻辑处理器将进一步执行以下操作:a0经由宾客页表的行走,将所述宾客虚拟地址转译成宾客物理地址;b)经由扩展页表(EPT)的行走,将所述宾客物理地址转译成物理存储器地址;以及c)从所述物理存储器地址提取所述第二密钥ID;以及d)其中所述存储器控制器将进一步阻止由所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
在示例8中,如示例7所述的处理器,其中所述故障包括与为将来功能性预留的EPT分页结构条目的配置关联的预留密钥EPT配置错误故障。
在示例9中,如示例1所述的处理器,其中所述第一逻辑处理器执行虚拟机监视器(VMM),并且其中所述VMM发布所述存储器事务。
各种实现可具有上述结构特征的不同组合。例如,上述处理器和方法的所有可选特征也可相对于本文中描述的系统被实现,并且示例中的细节可在一个或多个实现中的任何地方被使用。
示例10是一种系统,包括:1)存储器装置;2)硬件寄存器,所述硬件寄存器用来存储:a)用于密钥标识符(ID)的所述存储器装置的物理存储器地址的多个地址位的位范围,所述标识符与域特定的加密密钥关联;以及b)用来识别在所述密钥标识符的非受限密钥ID与受限密钥ID之间的边界的所述密钥标识符的第一密钥标识符(ID);以及3)耦合到所述存储器装置的处理器,所述处理器包括密码引擎、所述硬件寄存器和4)存储器控制器,其中所述密码引擎将执行以下操作:a)经由对所述硬件寄存器中所述位范围和所述第一密钥ID的访问,确定在所述物理存储器地址内所述受限密钥ID的密钥ID范围;b)接收包括第一逻辑处理器在不受信任域模式中执行的指示的处理器状态;c)响应于来自所述第一逻辑处理器的存储器事务,从所述存储器控制器接收与所述存储器事务的地址关联的第二密钥ID;以及d)响应于所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内的确定而生成故障。
在示例11中,如示例10所述的系统,其中所述状态是从所述处理器的控制寄存器接收的,并且其中所述密码引擎进一步包括:1)比较器,用来比较所述第二密钥ID的值和所述受限密钥ID的所述密钥ID范围;以及2)带有来自所述比较器的第一输入和来自所述控制寄存器的第二输入的第一与门。
在示例12中,如示例11所述的系统,其中所述存储器事务包含与所述第二密钥ID被附加到的存储器位置关联的物理存储器地址,并且其中响应于从所述第一与门输出的所述故障,所述密码引擎将进一步促使所述存储器控制器执行以下操作:a)忽略从所述第一逻辑处理器到所述存储器位置的其它写事务;以及b)响应于对所述存储器位置的其它读事务,全部返回一值。
在示例13中,如示例11所述的系统,其中所述存储器事务包含映射到所述第二密钥ID被附加到的物理存储器地址的线性地址,并且其中所述密码引擎进一步包括第二与门,所述第二与门包括:1)来自所述第一与门的输入和来自所述存储器控制器的所述物理存储器地址是从分页确定的指示;以及2)包括与在分页期间在页表内设置预留位的尝试关联的预留密钥页故障的输出。
在示例14中,如示例13所述的系统,其中所述硬件寄存器是模型特定的寄存器,并且其中所述密码引擎将进一步引导所述存储器控制器阻止所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
在示例15中,如示例11所述的系统,其中所述存储器事务包含映射到所述第二密钥ID被附加到的物理存储器地址的宾客虚拟地址,并且其中所述密码引擎进一步包括第二与门,所述第二与门包括:1)来自所述第一与门的输入和来自虚拟机监视器(VMM)的所述物理存储器地址是从扩展页表(EPT)的行走确定的指示;以及2)包括与为将来功能性预留的EPT分页结构条目的配置关联的预留密钥EPT配置错误故障的输出。
在示例16中,如示例15所述的系统,其中所述密码引擎将进一步引导所述存储器控制器阻止所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
各种实现可具有上述结构特征的不同组合。例如,上述处理器和方法的所有可选特征也可相对于本文中描述的系统被实现,并且示例中的细节可在一个或多个实现中的任何地方被使用。
示例17是一种方法,包括:1)从处理器的硬件寄存器取回用于密钥标识符(ID)的物理存储器地址的多个地址位的位范围;2)从所述硬件寄存器取回所述密钥标识符的第一密钥标识符(ID),所述第一密钥标识符(ID)用来识别在所述密钥标识符的非受限密钥ID与受限密钥ID之间的边界;3)由所述处理器的存储器控制器基于所述位范围和所述第一密钥ID,确定在所述物理存储器地址内所述受限密钥ID的密钥ID范围;4)由所述处理器访问包括第一逻辑处理器在不受信任域模式中执行的指示的处理器状态;5)由所述存储器控制器截接来自所述第一逻辑处理器的存储器事务,所述存储器事务包括与第二密钥ID关联的地址;以及6)由所述处理器响应于所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内的确定而生成故障。
在示例18中,如示例17所述的方法,其中所述存储器事务包含所述第二密钥ID被附加到的物理存储器地址,所述方法进一步包括:1)确定所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内;以及2)阻止由所述第一逻辑处理器对与所述物理存储器地址关联的存储器位置的访问。
在示例19中,如示例18所述的方法,进一步包括响应于生成所述故障:1)忽略从所述第一逻辑处理器到所述存储器位置的其它写事务;以及2)响应于对所述存储器位置的其它读事务,全部返回一值。
在示例20中,如示例17所述的方法,其中所述存储器事务包含线性地址,所述方法进一步包括: 1)经由分页将所述线性地址转译成物理存储器地址;2)从所述物理存储器地址提取所述第二密钥ID;以及3)阻止由所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
在示例21中,如示例20所述的方法,其中所述故障包括与在所述分页期间在页表内设置预留位的尝试关联的预留密钥页故障。
在示例22中,如示例17所述的方法,其中所述存储器事务包含宾客虚拟地址,所述方法进一步包括:1)经由行走宾客页表,将所述宾客虚拟地址转译成宾客物理地址;2)经由行走扩展页表(EPT),将所述宾客物理地址转译成物理存储器地址;3)提取附加到所述物理存储器地址的所述第二密钥ID;以及4)阻止由所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
在示例23中,如示例22所述的方法,其中所述故障包括与为将来功能性预留的EPT分页结构条目的配置关联的预留密钥EPT配置错误故障。
各种实现可具有上述结构特征的不同组合。例如,上述处理器和方法的所有可选特征也可相对于本文中描述的系统被实现,并且示例中的细节可在一个或多个实现中的任何地方被使用。
示例24是一种存储指令的非暂态计算机可读介质,所述指令在由具有耦合到系统存储器的核的处理器执行时,促使该处理器执行多个逻辑操作,包括:1)从处理器的硬件寄存器取回用于密钥标识符(ID)的物理存储器地址的多个地址位的位范围;2)从所述硬件寄存器取回所述密钥标识符的第一密钥标识符(ID),所述第一密钥标识符(ID)用来识别在所述密钥标识符的非受限密钥ID与受限密钥ID之间的边界;3)由所述处理器的存储器控制器基于所述位范围和所述第一密钥ID,确定在所述物理存储器地址内所述受限密钥ID的密钥ID范围;4)由所述处理器访问包括第一逻辑处理器在不受信任域模式中执行的指示的处理器状态;5)由所述存储器控制器截接来自所述第一逻辑处理器的存储器事务,所述存储器事务包括与第二密钥ID关联的地址;以及6)由所述处理器响应于所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内的确定而生成故障。
在示例25中,如示例24所述的非暂态计算机可读介质,其中所述存储器事务包含所述第二密钥ID被附加到的物理存储器地址,所述操作进一步包括:1)确定所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内;以及2)阻止由所述第一逻辑处理器对与所述物理存储器地址关联的存储器位置的访问。
在示例26中,如示例25所述的非暂态计算机可读介质,其中所述操作进一步包括响应于生成所述故障:1)忽略从所述第一逻辑处理器到所述存储器位置的其它写事务;以及2)响应于对所述存储器位置的其它读事务,全部返回一值。
在示例27中,如示例24所述的非暂态计算机可读介质,其中所述存储器事务包含线性地址,其中所述操作进一步包括: 1)经由分页将所述线性地址转译成物理存储器地址;2)从所述物理存储器地址提取所述第二密钥ID;以及3)阻止由所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
在示例28中,如示例27所述的非暂态计算机可读介质,其中所述故障包括与在所述分页期间在页表内设置预留位的尝试关联的预留密钥页故障。
在示例29中,如示例24所述的非暂态计算机可读介质,其中所述存储器事务包含宾客虚拟地址,其中所述操作进一步包括:1)经由行走宾客页表,将所述宾客虚拟地址转译成宾客物理地址;2)经由行走扩展页表(EPT),将所述宾客物理地址转译成物理存储器地址;3)提取附加到所述物理存储器地址的所述第二密钥ID;以及4)阻止由所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
在示例30中,如示例29所述的非暂态计算机可读介质,其中所述故障包括与为将来功能性预留的EPT分页结构条目的配置关联的预留密钥EPT配置错误故障。
各种实现可具有上述结构特征的不同组合。例如,上述处理器和方法的所有可选特征也可相对于本文中描述的系统被实现,并且示例中的细节可在一个或多个实现中的任何地方被使用。
示例31是一种系统,包括:1)用于从处理器的硬件寄存器取回用于密钥标识符(ID)的物理存储器地址的多个地址位的位范围的部件;2)用于从所述硬件寄存器取回所述密钥标识符的第一密钥标识符(ID)的部件,所述第一密钥标识符(ID)用来识别在所述密钥标识符的非受限密钥ID与受限密钥ID之间的边界;3)用来基于所述位范围和所述第一密钥ID,确定在所述物理存储器地址内所述受限密钥ID的密钥ID范围的部件;4)用来访问包括第一逻辑处理器在不受信任域模式中执行的指示的处理器状态的部件;5)用来截接来自所述第一逻辑处理器的存储器事务的部件,所述存储器事务包括与第二密钥ID关联的地址;以及6)用来由所述处理器响应于所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内的确定而生成故障的部件。
在示例32中,如示例31所述的系统,其中所述存储器事务包含所述第二密钥ID被附加到的物理存储器地址,进一步包括:1)用于确定所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内的部件;以及2)用来阻止由所述第一逻辑处理器对与所述物理存储器地址关联的存储器位置的访问的部件。
在示例33中,如示例32所述的系统,进一步包括响应于生成所述故障:1)用来忽略从所述第一逻辑处理器到所述存储器位置的其它写事务的部件;以及2)用来响应于对所述存储器位置的其它读事务,全部返回一值的部件。
在示例34中,如示例31所述的系统,其中所述存储器事务包含线性地址,所述系统进一步包括:1)用来经由分页将所述线性地址转译成物理存储器地址的部件;2)用来从所述物理存储器地址提取所述第二密钥ID的部件;以及3)用来阻止由所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问的部件。
在示例35中,如示例34所述的系统,其中所述故障包括与在所述分页期间在页表内设置预留位的尝试关联的预留密钥页故障。
在示例36中,如示例31所述的系统,其中所述存储器事务包含宾客虚拟地址,所述系统进一步包括:1)用来经由行走宾客页表,将所述宾客虚拟地址转译成宾客物理地址的部件;2)用来经由行走扩展页表(EPT),将所述宾客物理地址转译成物理存储器地址的部件;3)用来提取附加到所述物理存储器地址的所述第二密钥ID的部件;以及4)用来阻止由所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问的部件。
在示例37中,如示例36所述的系统,其中所述故障包括与为将来功能性预留的EPT分页结构条目的配置关联的预留密钥EPT配置错误故障。
尽管相对于有限数量的实现描述了本公开,但本领域技术人员将领会由此产生的许多修改和变化。随附的权利要求旨在涵盖如落在本公开的真正精神和范围内的所有此类修改和变化。
在本文中的描述中,众多特定细节被阐述,诸如特定类型的处理器和系统配置、特定硬件结构、特定架构的和微架构的细节、特定寄存器配置、特定指令类型、特定系统组件、特定度量/高度、特定处理器流水线阶段和操作等等的示例,以便提供对本公开的透彻理解。然而,对于本领域技术人员来说将显而易见的是,这些特定细节无需被采用来实践本公开。在其它实例中,公知的组件或方法,诸如特定和备选的处理器架构、用于描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、以代码形式的算法的特定表达、特定掉电(power down)和门控技术/逻辑以及计算机系统的其它特定操作细节,已没有被详细地描述,以免不必要地使本公开难以理解。
实现参照了确定在特定集成电路中(诸如在计算平台或微处理器中)在基于扇区的高速缓存的高速缓存行中数据的有效性来描述。实现也可适用于其它类型的集成电路和可编程逻辑装置。例如,公开的实现未被限制于桌面型计算机系统或诸如 Intel®Ultrabooks™计算机的便携式计算机。并且也可在诸如手持装置、平板、其它薄的笔记本、片上系统(SoC)装置及嵌入式应用之类的其它装置中被使用。手持式装置的一些示例包含蜂窝电话、因特网协议装置、数字摄像机、个人数字助理(PDA)及手持式PC。嵌入式应用通常包含微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或能够执行下面教导的功能和操作的任何其它系统。描述了系统能够是任何种类的计算机或嵌入式系统。公开的实现可被特别用于低端装置,像可穿戴装置(例如,手表)、电子植入物、传感和控制基础设施装置、控制器、监管控制和数据采集(SCADA)系统或诸如此类。另外,本文中所述设备、方法和系统不限于物理计算装置,而是也可涉及用于能量节约和效率的软件优化。正如在下面的描述中将变得容易显而易见的那样,本文中描述的方法、设备和系统的实现(无论是关于硬件、固件、软件还是它们的组合)对于与性能考虑相平衡的“绿色技术”未来是至关重要的。
虽然本文中的实现参照处理器来描述,但其它实现适用于其它类型的集成电路和逻辑装置。本公开内容的实现的类似技术和教导能够被应用于能够从更高流水线吞吐量和改进性能中受益的其它类型的电路或半导体装置。本公开的实现的教导可适用于执行数据操纵的任何处理器或机器。然而,本公开未被限于执行512位、256位、128位、64位、32位或16位数据运算的处理器或机器,并且能够被应用于其中执行数据的操纵或管理的任何处理器和机器。另外,本文中的描述提供示例,并且附图显示各种示例以便于说明。然而,这些示例不应以限制的意义来解释,因为它们只是旨在提供本公开的实现的示例,而不是提供本公开的实现的所有可能实现的详尽列表。
虽然上面的示例描述在执行单元和逻辑电路的上下文中的指令处理和分发,但本公开的其它实现能够通过在机器可读有形介质上存储的数据或指令来完成,所述数据或指令在由机器执行时,促使机器执行与本公开的至少一个实现一致的功能。在一个实现中,与本公开的实现关联的功能体现在机器可执行指令中。指令能够被用来促使编程有指令的通用或专用处理器执行本公开的步骤。本公开的实现可被提供为计算机程序产品或软件,所述计算机程序产品或软件可包含机器或计算机可读介质,在所述机器或计算机可读介质上存储有可被用来对计算机(或其它电子装置)进行编程以执行根据本公开的实现的一个或多个操作的指令。备选的是,本公开的实现的操作可由包含用于执行操作的固定功能逻辑的特定硬件组件执行,或者由编程的计算机组件和固定功能硬件组件的任何组合执行。
用来对逻辑进行编程以执行本公开的实现的指令能够被存储在系统中的存储器内,诸如DRAM、高速缓存、闪速存储器或其它存储装置。此外,指令能够经由网络或借助于其它计算机可读介质来分发。因此,机器可读介质可包括用于以由机器(例如,计算机)可读形式存储或传送信息的任何机构,但不限于软盘、光盘、紧凑盘、只读存储器(CD-ROM)、以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或在信息经由电、光、声或其它传播信号形式(例如,载波、红外信号、数字信号等)在因特网上传输中使用的有形机器可读存储装置。相应地,计算机可读介质包含适合用于以机器(例如计算机)可读的形式存储或传送电子指令或信息的任何类型的有形机器可读介质。
设计可经历从创建到模拟再到制造的各种阶段。表示设计的数据可以多种方式表示设计。首先,由于在模拟中是有用的,可使用硬件描述语言或另一功能描述语言来表示硬件。另外,可在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,在某一阶段,大多数设计可达到表示在硬件模型中的各种装置的物理布局的数据级。在其中使用传统半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于产生集成电路的掩膜的不同掩膜层上存在或不存在各种特征的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁或光存储装置(诸如盘)可以是机器可读介质,其用来存储经由被调制或以其它方式生成以传送信息的光波或电波而传送的此类信息。在传送指示或携带代码或设计的电载波时,就执行电信号的复制,缓冲或重新传输而言,制作了新副本。因此,通信提供商或网络提供商可在有形机器可读介质上至少暂时存储诸如编码到载波中的信息的制品,体现本公开的实现的技术。
如在本文中使用的模块指硬件、软件和/或固件的任何组合。作为示例,模块包含诸如微控制器的与存储适于由微控制器执行的代码的非暂态媒体关联的硬件。因此,在一个实现中,对模块的引用指被特别配置成辨识和/或执行要保留在非暂态介质上的代码的硬件。此外,在另一实现中,模块的使用指的是包含代码的非暂态介质,所述代码特别地适于由微控制器执行以执行预确定的操作。而且如能够推断的,在还有的另一实现中,术语模块(在此示例中)可指的是微控制器和非暂态介质的组合。通常,图示为分开的模块边界通常发生变化,并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实现中,术语逻辑的使用包含硬件,诸如晶体管、寄存器或其它硬件,诸如可编程逻辑装置。
在一个实现中,措辞“配置成”的使用指布置、装配、制造、提供销售(offering tosell)、引入和/或设计设备、硬件、逻辑或元件以执行指定或确定的任务。在此示例中,如果设备或其元件被设计、耦合和/或互连以执行指定的任务,则不在进行操作的该设备或其元件仍被“配置成”执行所述指定的任务。作为纯说明性示例,逻辑门可在操作期间提供0或1。但被“配置成”向时钟提供使能信号的逻辑门不包含可提供1或0的每一个潜在逻辑门。反而,逻辑门是以某一方式耦合的逻辑门,使得在操作期间1或0输出用来启用时钟。再次注意,用语“配置成”的使用不要求操作,而是专注于设备、硬件和/或元件的潜在状态上,其中在潜在状态中,设备、硬件和/或元件设计成在设备、硬件和/或元件在进行操作时执行具体任务。
此外,在一个实现中,措辞“以”、“能够”和/或“可操作以”的使用指的是以某种方式设计某一设备、逻辑、硬件和/或元件,以使得能够以指定的方式来使用该设备、逻辑、硬件和/或元件。注意,如上所述,在一个实现中,“以”,“能够”或“可操作以”的使用指的是设备、逻辑、硬件和/或元件的潜在状态,其中设备、逻辑、硬件和/或元件未在进行操作,但以这样一种方式被设计成能够实现以指定方式使用设备。
在本文中使用时,值包含数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑级别、逻辑值或逻辑值的使用也指代1和0,这简单地表示二进制逻辑状态。例如,1指高逻辑级别,并且0指低逻辑级别。在一个实现中,诸如晶体管或闪存单元的存储单元可以能够保持单个逻辑值或多个逻辑值。然而,在计算机系统中值的其它表示已被使用。例如,十进制数字十也可被表示为二进制值1010和十六进制字母A。因此,值包含能够被保持在计算机系统中的信息的任何表示。
另外,状态可由值或值的部分表示。作为示例,诸如逻辑一的第一值可表示默认或初始状态,而诸如逻辑零的第二值可表示非默认状态。另外,在一个实现中,术语重置和设置分别指的是默认和更新的值或状态。例如,默认值潜在地包含高逻辑值,即重置,而更新的值潜在地包含低逻辑值,即设置。注意,值的任何组合可用于表示任何数量的状态。
上面所阐述的方法、硬件、软件、固件或代码集的实现可经由在机器可访问、机器可读、计算机可访问或计算机可读介质上存储的由处理元件可执行的指令或代码来实现。非暂态机器可访问/可读介质包含采用以诸如计算机或电子系统的机器可读的形式提供(即,存储和/或传送)信息的任何机构。例如,非暂态机器可访问介质包含随机存取存储器(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 (25)

1.一种处理器,包括:
包括硬件寄存器的处理器核,所述硬件寄存器用来存储:
用于密钥标识符(ID)的物理存储器地址的多个地址位的位范围;以及
用来识别在所述密钥标识符的非受限密钥ID与受限密钥ID之间的边界的所述密钥标识符的第一密钥标识符(ID);以及
耦合到所述处理器核的存储器控制器,所述存储器控制器要执行以下操作:
经由对所述硬件寄存器中所述位范围和所述第一密钥ID的访问,确定在所述物理存储器地址内所述受限密钥ID的密钥ID范围;
访问包括所述处理器核的第一逻辑处理器在不受信任域模式中执行的指示的处理器状态;
从所述第一逻辑处理器接收存储器事务,所述存储器事务包括与第二密钥ID关联的地址;以及
响应于所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内的确定而生成故障。
2.如权利要求1所述的处理器,其中所述故障与由所述第一逻辑处理器对所述第二密钥ID的访问的类型有关。
3. 如权利要求1所述的处理器,其中所述存储器事务包含所述第二密钥ID被附加到的物理存储器地址,并且其中所述存储器控制器将进一步执行以下操作:
确定所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内;以及
阻止由所述第一逻辑处理器对与所述物理存储器地址关联的存储器位置的访问。
4. 如权利要求3所述的处理器,其中响应于所述故障的生成,所述存储器控制器将进一步执行以下操作:
忽略从所述第一逻辑处理器到所述存储器位置的其它写事务;以及
响应于对所述存储器位置的其它读事务,全部返回一值。
5.如权利要求1所述的处理器,其中所述存储器事务包含线性地址,并且其中所述存储器控制器将进一步执行以下操作:
经由分页将所述线性地址转译成物理存储器地址;
从所述物理存储器地址提取所述第二密钥ID;以及
阻止由所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
6.如权利要求5所述的处理器,其中所述故障包括与在所述分页期间在页表内设置预留位的尝试关联的预留密钥页故障。
7.如权利要求1所述的处理器,其中所述存储器事务包含宾客虚拟地址,并且其中所述第一逻辑处理器将进一步执行以下操作:
经由宾客页表的行走,将所述宾客虚拟地址转译成宾客物理地址;
经由扩展页表(EPT)的行走,将所述宾客物理地址转译成物理存储器地址;以及
从所述物理存储器地址提取所述第二密钥ID;以及
其中所述存储器控制器将进一步阻止由所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
8.如权利要求7所述的处理器,其中所述故障包括与为将来功能性预留的EPT分页结构条目的配置关联的预留密钥EPT配置错误故障。
9.如权利要求1所述的处理器,其中所述第一逻辑处理器执行虚拟机监视器(VMM),并且其中所述VMM发布所述存储器事务。
10.一种系统,包括:
存储器装置;
硬件寄存器,所述硬件寄存器用来存储:
用于密钥标识符(ID)的所述存储器装置的物理存储器地址的多个地址位的位范围,所述标识符与域特定的加密密钥关联;以及
用来识别在所述密钥标识符的非受限密钥ID与受限密钥ID之间的边界的所述密钥标识符的第一密钥标识符(ID);以及
耦合到所述存储器装置的处理器,所述处理器包括密码引擎、所述硬件寄存器和存储器控制器,其中所述密码引擎将执行以下操作:
经由对所述硬件寄存器中所述位范围和所述第一密钥ID的访问,确定在所述物理存储器地址内所述受限密钥ID的密钥ID范围;
接收包括第一逻辑处理器在不受信任域模式中执行的指示的处理器状态;
响应于来自所述第一逻辑处理器的存储器事务,从所述存储器控制器接收与所述存储器事务的地址关联的第二密钥ID;以及
响应于所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内的确定而生成故障。
11. 如权利要求10所述的系统,其中所述状态是从所述处理器的控制寄存器接收的,并且其中所述密码引擎进一步包括:
比较器,用来比较所述第二密钥ID的值和所述受限密钥ID的所述密钥ID范围;以及
带有来自所述比较器的第一输入和来自所述控制寄存器的第二输入的第一与门。
12. 如权利要求11所述的系统,其中所述存储器事务包含与所述第二密钥ID被附加到的存储器位置关联的物理存储器地址,并且其中响应于从所述第一与门输出的所述故障,所述密码引擎将进一步促使所述存储器控制器执行以下操作:
忽略从所述第一逻辑处理器到所述存储器位置的其它写事务;以及
响应于对所述存储器位置的其它读事务,全部返回一值。
13. 如权利要求11所述的系统,其中所述存储器事务包含映射到所述第二密钥ID被附加到的物理存储器地址的线性地址,并且其中所述密码引擎进一步包括第二与门,所述第二与门包括:
来自所述第一与门的输入和来自所述存储器控制器的所述物理存储器地址是从分页确定的指示;以及
包括与在分页期间在页表内设置预留位的尝试关联的预留密钥页故障的输出。
14.如权利要求13所述的系统,其中所述硬件寄存器是模型特定的寄存器,并且其中所述密码引擎将进一步引导所述存储器控制器阻止所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
15. 如权利要求11所述的系统,其中所述存储器事务包含映射到所述第二密钥ID被附加到的物理存储器地址的宾客虚拟地址,并且其中所述密码引擎进一步包括第二与门,所述第二与门包括:
来自所述第一与门的输入和来自虚拟机监视器(VMM)的所述物理存储器地址是从扩展页表(EPT)的行走确定的指示;以及
包括与为将来功能性预留的EPT分页结构条目的配置关联的预留密钥EPT配置错误故障的输出。
16.如权利要求15所述的系统,其中所述密码引擎将进一步引导所述存储器控制器阻止所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
17.一种方法,包括:
从处理器的硬件寄存器取回用于密钥标识符(ID)的物理存储器地址的多个地址位的位范围;
从所述硬件寄存器取回所述密钥标识符的第一密钥标识符(ID),所述第一密钥标识符(ID)用来识别在所述密钥标识符的非受限密钥ID与受限密钥ID之间的边界;
由所述处理器的存储器控制器基于所述位范围和所述第一密钥ID,确定在所述物理存储器地址内所述受限密钥ID的密钥ID范围;
由所述处理器访问包括第一逻辑处理器在不受信任域模式中执行的指示的处理器状态;
由所述存储器控制器截接来自所述第一逻辑处理器的存储器事务,所述存储器事务包括与第二密钥ID关联的地址;以及
由所述处理器响应于所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内的确定而生成故障。
18. 如权利要求17所述的方法,其中所述存储器事务包含所述第二密钥ID被附加到的物理存储器地址,所述方法进一步包括:
确定所述第二密钥ID在所述受限密钥ID的所述密钥ID范围内;以及
阻止由所述第一逻辑处理器对与所述物理存储器地址关联的存储器位置的访问。
19. 如权利要求18所述的方法,进一步包括响应于生成所述故障:
忽略从所述第一逻辑处理器到所述存储器位置的其它写事务;以及
响应于对所述存储器位置的其它读事务,全部返回一值。
20.如权利要求17所述的方法,其中所述存储器事务包含线性地址,所述方法进一步包括:
经由分页将所述线性地址转译成物理存储器地址;
从所述物理存储器地址提取所述第二密钥ID;以及
阻止由所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
21.如权利要求20所述的方法,其中所述故障包括与在所述分页期间在页表内设置预留位的尝试关联的预留密钥页故障。
22.如权利要求17所述的方法,其中所述存储器事务包含宾客虚拟地址,所述方法进一步包括:
经由行走宾客页表,将所述宾客虚拟地址转译成宾客物理地址;
经由行走扩展页表(EPT),将所述宾客物理地址转译成物理存储器地址;
提取附加到所述物理存储器地址的所述第二密钥ID;以及
阻止由所述第一逻辑处理器对所述物理存储器地址的存储器位置的访问。
23.如权利要求22所述的方法,其中所述故障包括与为将来功能性预留的EPT分页结构条目的配置关联的预留密钥EPT配置错误故障。
24.一种机器可读介质,其包含代码,所述代码在被执行时促使机器执行如权利要求17至23中任一项所述的方法。
25.一种设备,包括用于执行如权利要求17至23中任一项所述的方法的部件。
CN201911141511.4A 2018-12-20 2019-11-20 限制不受信任软件对加密密钥的使用 Pending CN111353157A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/228,002 US11139967B2 (en) 2018-12-20 2018-12-20 Restricting usage of encryption keys by untrusted software
US16/228002 2018-12-20

Publications (1)

Publication Number Publication Date
CN111353157A true CN111353157A (zh) 2020-06-30

Family

ID=68618011

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911141511.4A Pending CN111353157A (zh) 2018-12-20 2019-11-20 限制不受信任软件对加密密钥的使用

Country Status (4)

Country Link
US (2) US11139967B2 (zh)
EP (1) EP3671474A1 (zh)
CN (1) CN111353157A (zh)
DE (1) DE202019005669U1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023217255A1 (zh) * 2022-05-12 2023-11-16 华为技术有限公司 数据处理方法、装置、处理器及计算机系统

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11438315B1 (en) * 2021-06-15 2022-09-06 Lawrence Liu Methods, systems, apparatuses, and devices for providing durable forward confidentiality during communications between devices
GB2616643A (en) * 2022-03-16 2023-09-20 Advanced Risc Mach Ltd Read-as-X property for page of memory address space

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003051819A (ja) 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
US20040255145A1 (en) * 2003-05-06 2004-12-16 Jerry Chow Memory protection systems and methods for writable memory
US8972746B2 (en) * 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
WO2014138626A1 (en) * 2013-03-08 2014-09-12 Robert Bosch Gmbh Systems and methods for maintaining integrity and secrecy in untrusted computing platforms
US10296757B2 (en) * 2016-07-29 2019-05-21 Sap Se Appended key ID for key identification during data encryption
US10810321B2 (en) * 2016-08-11 2020-10-20 Intel Corporation Secure public cloud
US10536441B2 (en) 2016-08-23 2020-01-14 Texas Instruments Incorporated Thread ownership of keys for hardware-accelerated cryptography

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023217255A1 (zh) * 2022-05-12 2023-11-16 华为技术有限公司 数据处理方法、装置、处理器及计算机系统

Also Published As

Publication number Publication date
DE202019005669U1 (de) 2021-06-10
EP3671474A1 (en) 2020-06-24
US20210399882A1 (en) 2021-12-23
US20200204356A1 (en) 2020-06-25
US11139967B2 (en) 2021-10-05

Similar Documents

Publication Publication Date Title
US20180067866A1 (en) Translate on virtual machine entry
US11392507B2 (en) Supporting secure memory intent
US11030120B2 (en) Host-convertible secure enclaves in memory that leverage multi-key total memory encryption with integrity
US9971702B1 (en) Nested exception handling
US11157303B2 (en) Detecting bus locking conditions and avoiding bus locks
US11886906B2 (en) Dynamical switching between EPT and shadow page tables for runtime processor verification
US11422811B2 (en) Restartable cache write-back and invalidation
US10394595B2 (en) Method to manage guest address space trusted by virtual machine monitor
US20190095345A1 (en) Evicting clean secure pages without encryption
US20210399882A1 (en) Restricting usage of encryption keys by untrusted software
US20190095357A1 (en) Hardware support for static mode of protected memory management on flexibly-convertible enclave platform
US20200201787A1 (en) Scalable multi-key total memory encryption engine
US20210397721A1 (en) Secure encryption key management in trust domains
US20190102324A1 (en) Cache behavior for secure memory repartitioning systems
US10540291B2 (en) Tracking and managing translation lookaside buffers
US10452423B2 (en) Method and apparatus for light-weight virtualization contexts
US10324862B2 (en) Supporting oversubscription of guest enclave memory pages

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