CN117730312A - 用于对tdx-io的基于角色的寄存器保护的装置和方法 - Google Patents
用于对tdx-io的基于角色的寄存器保护的装置和方法 Download PDFInfo
- Publication number
- CN117730312A CN117730312A CN202280047201.XA CN202280047201A CN117730312A CN 117730312 A CN117730312 A CN 117730312A CN 202280047201 A CN202280047201 A CN 202280047201A CN 117730312 A CN117730312 A CN 117730312A
- Authority
- CN
- China
- Prior art keywords
- initiator
- register
- memory
- vmm
- write
- 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
- 238000000034 method Methods 0.000 title claims abstract description 57
- 239000003999 initiator Substances 0.000 claims abstract description 81
- 230000008569 process Effects 0.000 claims abstract description 10
- 230000008878 coupling Effects 0.000 claims abstract description 6
- 238000010168 coupling process Methods 0.000 claims abstract description 6
- 238000005859 coupling reaction Methods 0.000 claims abstract description 6
- 238000012545 processing Methods 0.000 claims description 104
- 239000004744 fabric Substances 0.000 claims description 28
- 239000003795 chemical substances by application Substances 0.000 claims description 19
- 230000015654 memory Effects 0.000 description 206
- 238000003860 storage Methods 0.000 description 31
- 238000013519 translation Methods 0.000 description 29
- 230000014616 translation Effects 0.000 description 29
- 238000013507 mapping Methods 0.000 description 26
- 238000002955 isolation Methods 0.000 description 25
- 238000007726 management method Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 17
- 238000001881 scanning electron acoustic microscopy Methods 0.000 description 17
- 230000000903 blocking effect Effects 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000005259 measurement Methods 0.000 description 9
- 238000013500 data storage Methods 0.000 description 8
- 230000001413 cellular effect Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 239000003826 tablet Substances 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 229920001690 polydopamine Polymers 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- YQYRYHNCVCFNHU-UHFFFAOYSA-N 1-ethyl-4-phenyl-3,6-dihydro-2h-pyridine Chemical compound C1N(CC)CCC(C=2C=CC=CC=2)=C1 YQYRYHNCVCFNHU-UHFFFAOYSA-N 0.000 description 4
- 208000032826 Ring chromosome 3 syndrome Diseases 0.000 description 4
- 241000711981 Sais Species 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000002507 cathodic stripping potentiometry Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 229940119265 sepp Drugs 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 101100189168 Capsicum frutescens PAMT gene Proteins 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- VLCQZHSMCYCDJL-UHFFFAOYSA-N tribenuron methyl Chemical compound COC(=O)C1=CC=CC=C1S(=O)(=O)NC(=O)N(C)C1=NC(C)=NC(OC)=N1 VLCQZHSMCYCDJL-UHFFFAOYSA-N 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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/54—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 adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/567—Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
用于基于角色的寄存器保护的装置和方法。例如,一种装置的一个实施例包括:一个或多个处理器核心,用于执行指令和进程数据,该一个或多个处理器核心执行一个或多个安全性指令以针对虚拟机监视器(VMM)或操作系统(OS)保护虚拟机或可信应用;互连结构,用于将一个或多个处理器核心耦合到设备;以及安全性硬件逻辑,用于确定是否允许针对受保护寄存器的读取或写入事务通过互连结构继续进行,安全性硬件逻辑用于评估与事务的发起者相关联的一个或多个安全性属性以作出该确定。
Description
技术领域
本发明的实施例总体涉及计算机处理器的领域。更具体而言,实施例涉及用于基于角色的寄存器保护的装置和方法。
背景技术
在计算中,虚拟机(virtual machine,VM)是对计算机系统的模拟。VM是基于特定的计算机架构的,并且提供底层物理计算机系统的功能。VM的实现方式可能涉及专门的硬件、固件、软件或组合。虚拟机监视器(Virtual Machine Monitor,VMM)(也称为超级监督者)是一种软件程序,它使得能够创建、管理和治理VM,并且管理物理主机机器之上的虚拟化环境的操作。VMM是虚拟化环境和实现方式背后的主要软件。当被安装在主机机器上时,VMM促进了VM的创建,每个VM具有单独的操作系统(operating system,OS)和应用。VMM通过分配必要的计算、存储器、存储和其他输入/输出(I/O)资源来管理这些VM的后台操作。VMM还提供一种集中式接口,以用于管理安装在单个主机机器上或分散在不同的互连主机上的VM的整体操作、状态和可用性。
为了实现保密的和/或受保护的VM执行,主机的存储器和运行时处理器状态也必须得到保护。只维持指派给VM的存储器的保密性(和完整性)是不够的。还需要的是防止恶意的或者被利用的VMM经由使用扩展页表(extended page table,EPT)对存储器地址空间执行页重映射攻击,以更改VM使用的最终页映射。至今不存在对于此问题的完整解决方案。
附图说明
从接下来结合附图的详细描述中可获得对本发明的更好理解,在附图中:
图1A是图示了根据一个实现方式的利用信任域在虚拟化系统中提供隔离的示例计算系统的框图。
图1B是图示了根据一个实现方式的利用信任域在虚拟化系统中提供隔离的另一示例计算系统的框图。
图2A是根据一个实现方式的信任域架构的示例的框图。
图2B是根据一个实现方式的信任域架构的另一示例的框图。
图3图示了另一示例计算系统。
图4图示了示例物理存储器。
图5图示了访客物理地址(GPA)空间的示例分区。
图6图示了处置共享页和私有页的地址转译的示例逻辑流程。
图7图示了用于构建、执行和拆除可信域的示例逻辑流程。
图8图示了安全扩展页表(SEPT)指令的示例集合。
图9图示了SEPT微指令的示例集合。
图10是根据另一实现方式的计算机系统的框图。
图11是根据一个实现方式的片上系统的框图。
图12图示了计算系统的框图的另一实现方式。
图13图示了计算系统的框图的另一实现方式。
图14图示了第一级和第二级页表和与可信域相关联的各种标识符之间的关系。
图15图示了根表、上下文表和PASID表的示例。
图16图示了示例IO存储器管理单元(MMU)。
图17图示了具有可信指示符的TLP前缀的示例。
图18图示了具有可信位的TLP前缀的示例。
图19图示了上下文条目扩展的示例。
图20图示了进程地址空间ID(PASID)表格条目的一个实施例。
图21图示了PASID跟踪器的示例。
图22A-22E图示了在一个实施例中执行的查找的序列;
图23图示了入队指令的示例;
图24图示了具备TDX-IO能力的主机与具备TEE-IO能力的设备耦合的一个实施例;
图25图示了具有启用位的SAI策略群组和型号特定寄存器的一个实施例;
图26图示了经由对策略群组的更新来限制对受保护寄存器的写入的一个实施例;并且
图27图示了根据一个实施例对受保护寄存器的写入。
具体实施方式
在接下来的描述中,出于说明目的,记载了许多具体细节以便提供对下面描述的本发明的实施例的透彻理解。然而,本领域技术人员将会清楚,在没有这些具体细节中的一些的情况下也可实现本发明的实施例。在其他情况中,以框图形式示出了公知的结构和设备以避免模糊本发明的实施例的底层原理。
如本公开中所设想的,本发明的实施例包括一种被称为可信域扩展(TrustedDomain Extension,TDX)的处理器安全性能力,以通过使用经由存储器控制器引擎的存储器加密和完整性来满足更高的安全性目标。正如在TDX中使用的那样,可信域(TrustedDomain,TD)是受保护的VM。本发明的实施例阻止了来自恶意或被利用的VMM对TD的私有存储器地址空间的页重映射攻击。
实施例包括一种额外的扩展页表(extended page table,EPT)结构,被称为安全扩展页表(Secure Extended Page Table,SEPT),它被处理器用于TD私有页游走。SEPT是每个TD的EPT(即,每个TD有它自己的EPT),它只由可信域资源管理器(Trusted DomainResource Manager,TDRM)经由新添加到处理器的指令集架构(instruction setarchitecture,ISA)的特殊指令来管理。如果不使用这些指令,TDRM则不能更改SEPT,否则处理器将报告完整性失效。在其他实施例中,可以使用处理器范围的寄存器保护来对SEPT的全部或部分进行访问控制。
在典型的VM实现方式中,处理器对于每个虚拟存储器控制结构(virtual memorycontrol structure,VMCS)支持一个EPT指针(EPT pointer,EPTP)。VMCS是存储器中的一种数据结构,它对每个VM存在一次,而VM是由VMM管理的。随着不同VM之间执行情境的每一次变化,为当前VM恢复VMCS,从而定义VM的虚拟处理器的状态。VMM管理由EPTP引用的EPT。在本发明的实施例中,VM可以被TD封装,并且VMCS可以由被称为可信域控制结构(TrustedDomain Control Structure,TDCS)的类似控制结构所替换,该结构管理TD的访客状态。
在本发明的实施例,使用了至少两个新的组件。
页错失处置器(Page Miss Handler,PMH):处理器支持新的根指针,被称为可信域(TD)安全扩展页表指针(Secure Extended Page Table Pointer,SEPTP)(指向当前正被访问的SEPT),并且对于TD私有页访问,由页错失处置器通过TD OS管理的访客页表(pagetable,PT)和SEPT来执行嵌套页游走。对于非私有(即,共享)存储器访问,处理器使用不信任的EPT执行普通页游走。
指令集架构(ISA)管理SEPT:处理器支持一组指令,来安全地允许TDRM在不违反安全性目标的情况下操纵SEPT——即,一旦存储器的页被指派给TD,访客物理地址(guestphysical address,GPA)到主机物理地址(host physical address,HPA)的映射(和GPA属性)就不能被修改。这个ISA要求使用指令进行SEPT管理,来将页添加到TD,将页延迟添加到TD,为指派给TD的页提供存储器交换支持,以及从TD移除页。此外,处理器提供ISA来明确地管理SEPT页。
解决EPT重映射攻击是将超级监督者从可信计算基础(Trusted Computing Base,TCB)中移除以便TDX满足云服务提供商要求的核心要求之一。同时,必须保留TDRM的存储器管理灵活性,以实现可缩放的存储器管理方案(例如,支持碎片化存储器分配、按需指派、页交换,等等)。本发明的实施例也能满足这些非安全性要求。
描述了一种使用信任域(TD)来在虚拟化系统中提供隔离的架构。计算中的当前趋势是通过利用由云服务提供商(cloud service provider,CSP)提供的托管服务来将数据和企业工作负载放置在云中。作为将数据和企业工作负载托管在云中的结果,CSP的客户(本文中称为租户)在为其工作负载请求更好的安全性和隔离方案。具体而言,客户在寻求解决方案来在租户的软件的TCB的外部启用CSP提供软件的操作。系统的TCB指的是有能力影响对系统的整体操作的信任的一组硬件、固件和/或软件组件。
在本公开的实现方式中,提供了TD架构和TD架构的指令集架构(instruction setarchitecture,ISA)扩展(在此称为TD扩展(TDX)),以便为在不受信任的CSP基础设施中执行的客户(租户)软件提供保密性(和完整性)。TD架构可以是片上系统(System-on-Chip,SoC)能力,该TD架构在TD工作负载和CSP软件之间提供了隔离,其中CSP软件例如是CSP的虚拟机管理器(virtual machine manager,VMM)。TD架构的组件可以包括:1)经由MK全存储器加密(MK-Total Memory Encryption,MKTME)引擎进行的存储器加密;2)本文称为信任域资源管理器(trust domain resource manager,TDRM)的资源管理能力(TDRM可以是虚拟机监视器(VMM)的软件扩展);以及3)经由CPU管理的存储器所有权表(Memory OwnershipTable,MOT)和经由CPU访问控制的TD控制结构在处理器中提供的执行状态和存储器隔离能力。TD架构提供了处理器部署TD的能力,这些TD利用MK-TME引擎、MOT和被访问控制的TD控制结构以用于TD工作负载的安全操作。
在一个实现方式中,租户的软件是在被称为TD的架构概念中被执行的。TD(也被称为租户TD)指的是租户工作负载(例如,它可以包括单独的操作系统(operating system,OS)以及运行在OS之上的其他第3环应用,或者运行在VMM之上的虚拟机(VM)以及其他第3环应用)。每个TD独立于系统中的其他TD来进行操作,并且使用平台上的TDRM所指派的(一个或多个)逻辑处理器、存储器和I/O。每个TD在存储器中被加密隔离,使用MK-TME引擎的至少一个专属加密密钥来对与信任域相关联的存储器(保存代码和/或数据)进行加密。
在本公开的实现方式中,TD架构中的TDRM对于TD充当主机并且对于核心和其他平台硬件具有完全控制权。TDRM向TD中的软件指派(一个或多个)逻辑处理器。然而,TDRM不能访问TD在指派的(一个或多个)逻辑处理器上的执行状态。类似地,TDRM向TD指派物理存储器和I/O资源,但无权访问TD的存储器状态,这是由于处理器对每个TD强制实施的分开的加密密钥的使用,以及存储器上的其他完整性/重放控制。在TD中执行的软件以降低的权限进行操作,从而使得TDRM可保持对平台资源的控制。然而,TDRM不能影响在限定的情况下存储器或CPU结构中的TD状态的机密性或完整性。
用于在虚拟化系统中提供隔离的传统系统并没有将CSP软件完全从租户的TCB中提取出来。此外,传统系统可能会使用单独的芯片组子系统来大幅增加TCB,而本公开的实现方式避免了这一点。本公开的实现方式的TD架构通过从TCB中移除CSP软件以明确地减少TCB,从而在客户(租户)工作负载和CSP软件之间提供了隔离。实现方式通过为CSP客户工作负载(租户TD)提供安全隔离而提供了相对于传统系统的技术改进,并且允许了从客户的TCB中移除CSP软件,同时满足CSP的安全性和功能要求。此外,TD架构可扩展到多个TD,这可以支持多个租户工作负载。此外,本文描述的TD架构是通用的,并且可被应用于任何动态随机访问存储器(dynamic random-access memory,DRAM),或者基于存储类存储器(storageclass memory,SCM)的存储器,例如非易失性双列直插式存储器模块(Non-Volatile DualIn-line Memory Module,NV-DIMM)。因此,本公开的实现方式允许了软件利用性能益处,例如SCM的NVDIMM直接访问存储(direct access storage,DAS)模式,而不影响平台安全性要求。
图1A是根据本公开的实现方式的使用TD在虚拟化系统中提供隔离的计算系统100的示意性框图。虚拟化系统100包括支持若干个客户端设备101A-101C的虚拟化服务器110。虚拟化服务器110包括至少一个执行TDRM 180的处理器112(也称为处理设备)。TDRM 180可以包括VMM(也可称为超级监督者),其可以实例化一个或多个TD 190A-190C,这些TD可由客户端设备101A-101C经由网络接口170来访问。例如,客户端设备101A-101C可以包括但不限于桌面型计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(personal digital assistant,PDA)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、互联网电器、或者任何其他类型的计算设备。
TD可以指租户(例如,客户)工作负载。租户工作负载例如可以包括单独的OS以及运行在OS之上的其他第3环应用,或者可以包括运行在VMM之上的VM以及其他第3环(ring-3)应用。在本公开的实现方式中,使用单独的专有密钥来对与TD相关联的存储器(保存代码和数据)进行加密,可以在存储器中对每个TD进行加密隔离。
处理器112可以包括一个或多个核心120(也被称为处理核心120)、范围寄存器130、存储器管理单元(memory management unit,MMU)140、以及(一个或多个)输出端口150。图1B是执行TDRM 180的处理器核心120的详细视图的示意性框图,该TDRM 180与MOT160以及一个或多个信任域控制结构(trust domain control structure,TDCS)124和信任域线程控制结构(trust domain thread control structure,TDTCS)128通信,如图1A中所示。TDTCS和TD-TCS在本文中可被互换使用。处理器112可以用于系统中,该系统包括但不限于桌面型计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、PDA、服务器、工作站、蜂窝电话、移动计算设备、智能电话、互联网电器、或者任何其他类型的计算设备。在另一个实现方式中,处理器112可被用于SoC系统中。
计算系统100代表了基于可从加州圣克拉拉的英特尔公司获得的微处理设备的处理系统,虽然也可以使用其他系统(包括具有其他微处理设备的PC、工程工作站、机顶盒,等等)。在一个实现方式中,样本系统100执行可从华盛顿州雷德蒙市微软公司获得的WINDOWSTM操作系统的一个版本,虽然也可以使用其他操作系统(例如,UNIX和Linux)、嵌入式软件、和/或图形用户接口。因此,本公开的实现方式不限于硬件电路和软件的任何特定组合。
一个或多个处理核心120执行系统的指令。处理核心120包括但不限于预取逻辑以提取指令,解码逻辑以对指令解码,执行逻辑以执行指令,等等。在一个实现方式中,计算系统100包括诸如处理器112之类的组件,以采用包括逻辑的执行单元来执行用于处理数据的算法。
虚拟化服务器110包括主存储器114和次级存储118,以存储程序二进制文件和OS驱动器事件。次级存储118中的数据可以被存储在被称为页的块中,并且每个页可以对应于一组物理存储器地址。虚拟化服务器110可以采用虚拟存储器管理,其中由(一个或多个)核心120运行的应用(例如TD 190A-190C)使用被映射到访客物理存储器地址的虚拟存储器地址,并且访客物理存储器地址被MMU 140映射到主机/系统物理地址。
核心120可以执行MMU 140,以将页从次级存储118加载到主存储器114(其包括易失性存储器和/或非易失性存储器)中,以便由在处理器112上(例如,在核心上)运行的软件更快地访问。当TD 190A-190C之一尝试访问与加载到主存储器114中的页的物理存储器地址相对应的虚拟存储器地址时,MMU 140返回所请求的数据。核心120可以执行TDRM 180的VMM部分,以将访客物理地址转换为主存储器的主机物理地址,并且为允许核心120读取、游走和解释这些映射的协议提供参数。
在一个实现方式中,处理器112实现了TD架构和TD架构的ISA扩展(TDX)。TD架构提供TD工作负载190A-190C之间的隔离以及与在处理器112上执行的CSP软件(例如,TDRM 180和/或CSP VMM(例如,根VMM 180))的隔离。TD架构的组件可以包括:1)经由MK-ME引擎145进行的存储器加密,2)本文称为TDRM 180的资源管理能力,以及3)经由MOT 160和经由受访问控制的TD控制结构(即,TDCS124和TDTCS128)在处理器112中提供的执行状态和存储器隔离能力。TD架构提供了处理器112部署TD 190A-190C的能力,这些TD利用MK-TME引擎145、MOT160和被访问控制的TD控制结构(即,TDCS124和TDTCS128)来实现TD工作负载190A-190C的安全操作。
在本公开的实现方式中,TDRM 180充当主机并且对于核心120和其他平台硬件具有完全控制权。TDRM 180向TD 190A-190C中的软件指派(一个或多个)逻辑处理器。然而,TDRM 180不能访问TD 190A-190C在指派的(一个或多个)逻辑处理器上的执行状态。类似地,TDRM 180向TD 190A-190C指派物理存储器和I/O资源,但无权访问TD 190A的存储器状态,这是由于分开的加密密钥,以及存储器上的其他完整性/重放控制。
关于分开的加密密钥,处理器可以利用MK-TME引擎145来加密(和解密)在执行期间使用的存储器。通过全存储器加密(total memory encryption,TME),在核心120上执行的软件对任何存储器的访问都可以被用加密密钥在存储器中进行加密。MK-TME是对TME的增强,其允许了使用多个加密密钥(支持的密钥数目是取决于实现方式的)。处理器112可以利用MKTME引擎145来使得不同的页被使用不同的MK-TME密钥来加密。MK-TME引擎145可以在本文描述的TD架构中被利用来支持每个TD 190A-190C的一个或多个加密密钥,以帮助实现不同的CSP客户工作负载之间的加密隔离。例如,当MK-TME引擎145被用于TD架构中时,CPU默认实施TD(所有页)将被使用TD特定的密钥进行加密。此外,TD可以进一步选择特定的TD页为明文或者被使用对CSP软件不透明的不同临时密钥来进行加密。
每个TD 190A-190C是一个软件环境,它支持由VMM(例如,使用虚拟机扩展(VMX))、OS和/或应用软件(由OS托管)构成的软件栈。每个TD 190A-190C独立于其他TD 190A-190C来进行操作,并且使用平台上的TDRM 180所指派的(一个或多个)逻辑处理器、存储器和I/O。在TD 190A-190C中执行的软件以降低的权限进行操作,从而使得TDRM 180可保持对平台资源的控制;然而,TDRM不能影响在限定的情况下TD 190A-190C的机密性或完整性。下面参考图1B更详细地描述TD架构和TDX的进一步细节。
本公开的实现方式不限于计算机系统。本公开的替代性实现方式可被用于其他设备中,例如手持设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(personal digital assistant,PDA)、以及手持PC。嵌入式应用可以包括微控制器、数字信号处理设备(digital signal processing device,DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(wide area network,WAN)交换机、或者能够根据至少一个实现方式执行一个或多个指令的任何其他系统。
一个实现方式可以在单处理设备桌面或服务器系统的情境中被描述,但替代性实现方式可以被包括在多处理设备系统中。计算系统100可以是“中枢”系统架构的一个示例。计算系统100包括处理器112来处理数据信号。处理器112作为一个说明性示例包括复杂指令集计算机(complex instruction set computer,CISC)微处理设备、精简指令集计算(reduced instruction set computing,RISC)微处理设备、超长指令字(very longinstruction word,VLIW)微处理设备、实现指令集的组合的处理设备,或者任何其他处理设备,例如数字信号处理设备。处理器112耦合到处理设备总线,该处理设备总线在处理器112和计算系统100中的其他组件之间传输数据信号,其他组件例如是主存储器114和/或次级存储118,其存储指令、数据或者这些的任意组合。计算系统100的其他组件可以包括图形加速器、存储器控制器中枢、I/O控制器中枢、无线收发器、闪速BIOS、网络控制器、音频控制器、串行扩展端口、I/O控制器,等等。这些元件执行其传统功能,这些传统功能是本领域技术人员公知的。
在一个实现方式中,处理器112包括第1级(L1)内部缓存存储器。取决于架构,处理器112可以具有单个内部缓存或者多个级别的内部缓存。其他实现方式包括内部和外部缓存的组合,这取决于特定的实现方式和需求。寄存器堆将不同类型的数据存储在各种寄存器中,包括整数寄存器、浮点寄存器、向量寄存器、联组寄存器、影子寄存器、检查点寄存器、状态寄存器、配置寄存器、以及指令指针寄存器。
应当注意,执行单元可以具有或者不具有浮点单元。在一个实现方式中,处理器112包括微代码(ucode)ROM,以用于存储微代码,该微代码当被执行时,将执行某些宏指令的算法或者应对复杂的场景。这里,微代码有可能是可更新的,以应对处理器112的逻辑错误/修复。
执行单元的替代性实现方式也可以用于微控制器、嵌入式处理设备、图形设备、DSP、以及其他类型的逻辑电路中。系统100包括主存储器114(也可称为存储器114)。主存储器114包括DRAM设备、静态随机访问存储器(static random-access memory,SRAM)设备、闪存设备、或者其他存储器设备。主存储器114存储由数据信号表示的指令和/或数据,这些指令和数据将被处理器112执行。处理器112经由处理设备总线与主存储器114耦合。系统逻辑芯片(例如存储器控制器中枢(memory controller hub,MCH))可以耦合到处理设备总线和主存储器114。MCH可以向主存储器114提供高带宽存储器路径,以用于指令和数据存储以及用于图形指令、数据和纹理(texture)的存储。MCH例如可被用于在处理器112、主存储器114和系统100中的其他组件之间引导数据信号,并且在处理设备总线、存储器114和系统1/0之间桥接数据信号。MCH可以通过存储器接口与存储器114耦合。在一些实现方式中,系统逻辑芯片可以提供图形端口,以用于通过加速图形端口(Accelerated Graphics Port,AGP)互连来耦合到图形控制器。
计算系统100还可以包括I/O控制器中枢(I/O controller hub,ICH)。ICH可以经由本地I/O总线提供与一些I/O设备的直接连接。本地I/O总线是高速I/O总线,以用于将外设连接到存储器114、芯片组和处理器112。一些示例是音频控制器、固件中枢(闪速BIOS)、无线收发器、数据存储、包含用户输入和键盘接口的传统I/O控制器、串行扩展端口(例如通用串行总线(Universal Serial Bus,USB))、以及网络控制器。数据存储设备可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或者其他大容量存储设备。
对于系统的另一种实现方式,由上述的处理设备核心120执行的指令可以与片上系统一起使用。片上系统的一个实现方式包括处理设备和存储器。一个这种系统的存储器是闪存。闪存可以与处理设备和其他系统组件位于同一管芯上。此外,其他逻辑块,例如存储器控制器或图形控制器,也可以位于片上系统上。
参考图1B,根据本公开的一个实现方式,此图描绘了图1A的处理器112的框图。在一个实现方式中,处理器112可以经由单个核心120或者跨越几个核心120执行应用堆栈101。如上所述,处理器112可提供TD架构和TDX,以便为在不信任的云服务提供商(CSP)基础设施中的客户/租户(即,TD 190A)中运行的客户软件提供保密性(和完整性)。TD架构提供经由MOT 160进行的存储器隔离;经由TDCS124和/或TDTCS 128进行的包含CPU密钥管理的CPU状态隔离;以及用于TD 190A软件的CPU测量基础设施。
在一个实现方式中,TD架构提供ISA扩展(被称为TDX),其支持OS和OS管理的应用(虚拟化的和非虚拟化的)的保密操作。启用了TDX的平台(例如包括处理器112的平台)可以充当多个加密情境,这些加密情境被称为TD。为了便于说明,在图1B中描绘了单个TD 190A。每个TD 190A可以运行VMM、VM、OS和/或应用。例如,TD 190A被描绘为托管VM 195A。
在一个实现方式中,TDRM 180可以包括作为VMM功能的一部分(例如,根VMM)。VMM可以指软件、固件或硬件来创建、运行和管理虚拟机(VM),例如VM 195A。应当注意,VMM可以创建、运行和管理一个或多个VM。如所描绘的,VMM 110被包括为处理设备122的一个或多个处理核心120的组件。VMM 110可以创建和运行VM 195A,并且为VM 195A分配一个或多个虚拟处理器(例如,vCPU)。VM 195A在本文中也可被称为访客195A。VMM可以允许VM 195A访问底层计算系统的硬件,例如图1A的计算系统100。VM 195A可以执行访客操作系统(OS)。VMM可以管理访客OS的执行。访客OS的功能可以是控制VM 195A的虚拟处理器对计算系统100的底层硬件和软件资源的访问。应当注意,当有许多VM 195A在处理设备112上操作时,VMM可以管理在许多访客上执行的每个访客OS。在一些实现方式中,可以用TD 190A来实现VMM以管理VM 195A。这个VMM可以被称为租户VMM和/或非根VMM并且在下文进一步详细论述。
TDX还为被称为TDRM 180的TD架构的TD管理层提供编程接口。TDRM可被实现为CSP/根VMM的一部分。TDRM 180管理TD 190A的操作。虽然TDRM 180可以向TD 190A指派和管理资源,例如CPU、存储器和输入/输出(I/O),但TDRM 180被设计为在TD 190A的TCB之外操作。系统的TCB指的是有能力影响对系统的整体操作的信任的一组硬件、固件和/或软件组件。
在一个实现方式中,TD架构进而是一种保护在TD 190A中运行的软件的能力。如上所述,TD架构的组件可以包括:1)经由具有对TME的多密钥扩展的TME引擎(例如,图1A的MK-TME引擎145)进行的存储器加密;2)软件资源管理层(TDRM 180);以及3)TD架构中的执行状态和存储器隔离能力。
图2A是描绘实现TD架构200的示例计算系统的框图。TD架构200支持两种类型的TD。第一种类型的TD是这样的TD,其中租户信任CSP来施行保密性,并且不实现本公开的实现方式的TD架构。这种类型的传统TD被描述为TDl 210。TDl 210是具有CSP VMM管理的TCB202的CSP TD。TD1 210可以包括管理CSP VM 214和/或一个或多个租户VM 216A、216B的CSPVMM 212。在这种情况下,租户VM 216A、216B是由在VM 216A、216B的TCB 202中的CSP VMM212管理的。在本公开的实现方式中,租户VM 216A、216B在这种模型中仍然可以利用经由TME或MK-TME的存储器加密(下文进一步描述)。
另一种类型的TD是这样的TD:其中租户不信任CSP来施行保密性,从而依赖于具有本公开的实现方式的TD架构的CPU。这种类型的TD在两个变体中被示为TD2 220和TD3 230。TD2 220被示为一种虚拟化模式(例如VMX)被在TD2 220中运行的租户VMM(非根)222利用到被管理租户VM 225A、225B。TD3 230不包括利用虚拟化模式的软件,而是直接在TD2 230中运行被启迪的OS235。TD2 220和TD3 230是具有如本公开的实现方式中描述的硬件施行的TCB 204的租户TD。在一个实现方式中,TD2 220或者TD3 230可以与关于图1A和/或1B描述的TD 190A相同。
TDRM 180管理所有三种类型的TD 210、220、230的生命周期,包括资源的分配。然而,TDRM 180对于TD类型TD2 220和TD3 230不在TCB中。TD架构200不对系统上活跃的TD的数目或混合施加任何架构限制。然而,特定实现方式中的软件和某些硬件限制可由于其他约束而限制同时在系统上运行的TD的数目。
图2B是描绘TD架构250的示例以及TD 220和TDRM 280之间的交互的框图。在一个实现方式中,TD 220和TDRM 280与关于图2A描述的其对应物相同。TD架构250可以与图1A和1B的计算设备100和/或图2A的TD架构200所提供的TD架构相同。TD架构250提供管理在系统上活跃的TD的生命周期的层。处理器对TD的支持是由一种被称为TDX操作的处理器操作的形式提供的。有两种TDX操作:资源管理器操作和租户操作。一般而言,TDRM 180在TDX资源管理器操作中运行,而TD,例如TD2 220,在TDX租户操作中运行。资源管理器操作和租户操作之间的转变被称为TDX转变。
有两种类型的TDX转变:TD进入270和TD退出260。从TDX资源管理器操作到TDX租户操作中的转变被称为TD进入270。从TDX租户操作到TDX资源管理器操作的转变被称为TD退出260。
在TDX资源管理器操作中的处理器行为与TDX操作之外的行为类似。主要的区别是,一组TDX操作(TDX指令)是可用的,并且可以被加载到某些控制寄存器中的值是有限的,以限制TDRM 180的模式和能力。
在TDX租户操作中的处理器行为类似地受到限制,以促进隔离。例如,某些事件不是普通操作,而是导致TD退出260到TDRM 180。这些TD退出260不允许TDRM 180修改TD 220的行为或状态。TDRM 180使用平台能力来保留对平台资源的控制。在TD 220中运行的软件可以使用软件可见的信息来确定它在TD 220中运行,并且可以对加载到TD 220中的附加软件施行本地测量策略。然而,验证TD 220的安全性状态是由远程鉴证方执行的,以确保保密性。
TD架构250被设计成最大限度地减少当在TD 220中运行时对依赖虚拟化的软件的兼容性影响,因此,使得在租户操作中运行的VM 225A、225B和在租户操作中运行的租户VMM222之间的大多数交互保持不变。如果在TD 220中不存在VMM 222,则可以修改VM OS,以便与作为根VMM的TDRM 180一起工作。
在一个实现方式中,TDRM 180可以显式地决定导致TD退出260,以例如终止TD 120或者管理存储器资源(例如,产生指派的存储器资源,请求空闲的存储器资源,等等)。TD架构250还为TDRM 180提供了强制TD退出260以进行先占的能力。在TD退出260时,TD架构施行TD 220的执行状态被保存在分配给TD 220的CPU访问控制的存储器中,并且被使用TD 220的唯一加密密钥(下文进一步论述)进行加密,该密钥对于TDRM 180或者其他TD是不可见的,以保护TD状态对TDRM 180或者其他TD的保密性。可以类似地经由存储器上的完整性控制来保护TD执行状态以防欺骗、重映射和/或重放。
TD进入270是TD退出260的互补事件。例如,当TDRM 180安排TD 220在逻辑处理器上运行并且将执行转移到在TD 220中运行的软件时,TD进入270可能发生。在TD进入270期间,TD架构250施行将TDRM 180的执行状态保存在由TDRM拥有的存储器中,该存储器被利用指派来供TDRM 180单独使用的唯一加密密钥进行加密。
TD(例如TD 220)可以由TDRM 180使用TDCREATE(以创建TDCS)、TDTCREATE(以创建TD-TCS)和TDADDPAGE指令来设置,这些指令使得属于TD 220的存储器被使用TD的唯一加密密钥进行加密,该密钥对于TDRM 180或者其他TD是不可见或者不可访问的。在执行属于TD的任何指令之前,所有的TD存储器都被使用TD的唯一密钥进行加密。虽然本文提到了具体的指令名称,但在本公开的实施例中可以利用指令的其他名称,并不限于本文提供的具体名称。
在一个实现方式中,TDRM 180可以在签名验证之后用小的软件映像(类似于IBB或者初始启动块)启动每个TD 220,并且使用平台信任根记录IBB测量结果(用于后续鉴证)。正是在TD 220中执行的IBB软件负责完成TD 220的测量启动,并且向TDRM 180请求额外资源。当在TD 220内运行时,TD 220可以选择对整个TD 220使用单个加密密钥,或者对不同的租户VM 225A、225B(和/或容器或者不同的存储器资源,比如NVRAM)使用额外的加密密钥。因此,当TD 220第一次被设置时,TD 220正在使用CPU生成的专属MK-TME密钥。此后,TD 220可以可选地为在TD 220内操作的每个租户软件管理的上下文(例如,租户VM 225A、225B、容器或者其他存储器类型)设置额外的MK-TME加密密钥。
为了针对CSP(例如,TDRM根VMM 180和租户VMM 222)最大限度地减少对VMM的软件兼容性影响,虚拟化(例如,VMX)操作可以在TD架构250中的TD 220内保持不被修改。类似地,VMM软件的操作,例如扩展页表(EPT)管理,可以保持在租户VMM 222的控制之下(如果有一个在TD 220中活跃并不由TDRM 180管理)。由于TDRM 180为每个TD 220指派物理存储器,所以TD架构250包括MOT(即,关于图1A和1B描述的MOT 160)。处理器112咨询TDRM 180管理的MOT以指派对TD 220的存储器分配。这允许了TDRM 180有作为资源管理存储器的全部能力,而不对驻留在指派的TD存储器中的数据有任何可见性。在一些实现方式中,如上所述,平台(例如,根)VMM和TDRM 180可以在相同的加密密钥域中,从而共享存储器管理和调度器功能(但仍然保持在租户的TCB之外)。
在一个实施例中,图3图示了示例计算系统300。来自TD 1 190A,TD 2 190B,…TDN 190C(其中N是自然数)的一个或多个可信域(TD)可以在计算系统300上被实例化。每个TD包括代码/数据308,这可以包括对一个或多个访客虚拟地址(guest virtual address,GVA)310的引用。为了将GVA转译为可用于访问计算系统的物理存储器的一部分的物理地址,TD可以使用访客页表312。因此,可以使用访客页表312将GVA 310转译为访客物理地址(guest physical address,GPA)166。然后,可以经由EPT 322将GPA 166映射到主机物理地址(host physical address,HPA)161,以访问主机物理存储器332。
图4图示了示例访客物理存储器316。在这个示例中,示出了多个存储器页,其中与TD相关联的每个页通过使用不同的密钥(例如每个TD的唯一私钥)被进行加密保护。例如,与TD 1 190A相关联的页402可以用TD 1的密钥来加密,与TD 2 190B相关联的页404可以用TD 2的密钥来加密,等等依此类推,直到与TD N 190C相关联的页406可以用TD N的密钥来加密。不与TD相关联的页408可以使用已知的存储器加密来保护。
图5图示了访客物理地址(GPA)空间的示例分区。TD架构将访客物理存储器316的访客物理地址空间502分区为两部分——私有地址空间504和共享地址空间506。对映射到私有地址空间504的页的访问可以用TD的私钥来进行加密和完整性保护。对映射到共享地址空间506的页的访问可以用TD 190A和TDRM 180共享的密钥来进行加密和完整性保护。在一个实施例中,GPA的最高有效位被称为“共享”位。在其他实施例中,GPA的另一个预定位可以用于指示出共享与私有状态。
返回到图3,TDRM 180设置了不受信任的EPT 322,其提供GPA 166的转译,其中“共享”位设置为1(即,共享页)。指向这个EPT(EPTP)325的指针(如由TDRM和存储的可信域控制结构(TDCS)124指定的)可以在处理器进入TD模式时由处理器112的页错失处置器(PMH)140编程,并且可以在处理器退出TD模式时被清除。
本发明的实施例引入了一个或多个安全EPT(SEPT)334,这些安全EPT可以由处理器112硬件来构建和管理。每个TD可以具有关联的SEPT。在系统初始化之后,SEPT结构与EPT相同,除了用于SEPT页的存储器被使用TD临时密钥来进行保护以外(即,页被加密和完整性保护)。在一个实施例中,SEPT中的一些SW可用/忽略位被保留在SEPT条目中,以便CPU可以根据需要存储微架构状态信息(例如,锁定、GPA状态,等等)。
指向SEPT 336的指针(称为SEPTP)可以在处理器进入TD模式时由处理器的页错失处置器(PMH)140编程,并且在处理器退出TD模式时被清除。SEPT 334和SEPTP 336可以被存储在主机物理存储器332的受保护区域中,并且可能不可被TD访问或者知道。SEPT 334和SEPTP 336可以只被处理器112的某些组件访问,例如页错失处置器140、SEPT指令338和物理地址转译328。在一个实施例中,SEPT 334可以被存储在主机物理存储器332内的受保护存储器中。在另一个实施例中,TD 190A的SEPT可以被存储在访客物理存储器316的加密页中,这些页是利用TD的私钥来加密的。
图6图示了处置共享页和私有页的地址转译的示例逻辑流程600。这里包括一组逻辑流程,代表了用于执行所公开的架构的新颖方面的示例方法。虽然为了简化说明,本文所示的一个或多个方法学被显示和描述为一系列动作,但本领域的技术人员将会理解并且明白,这些方法学不受动作顺序的限制。一些动作据此可以按与本文所示和描述的顺序不同的顺序发生和/或与其他动作同时发生。例如,本领域技术人员将会理解并且明白,方法或者可被表示为一系列相关的状态或事件,例如表示在状态图中。此外,对于新颖的实现方式,并不是在一种方法中说明的所有动作都是必需的。
逻辑流程可以用软件、固件和/或硬件来实现。在软件和固件实施例中,逻辑流程可以通过存储在至少一个非暂态计算机可读介质或机器可读介质上的计算机可执行指令来实现,所述介质例如是光学、磁性或者半导体存储装置。实施例不限于此情境中。
在框602,PMH 140接收将访客物理地址(GPA)166转译为主机物理地址(HPA)161的请求。在框604,PMH 140检查GPA的“共享”位。当在框606,PMH被请求将“共享”位被设置为0的GPA(即,私有页)转译成HPA时,PMH游走(即,使用已知的页地址转译技术)由SEPTP 336引用的SEPT 334。对于“共享”位被设置为1的GPA(即,共享页),在框608,PMH游走由EPTP 325引用的EPT 322。在其他实施例中,共享位的含义可以被翻转(即,0表示私有页,1表示共享页)。故障处置/报告变化可以包括,如果在使用SEPTP 336时观察到任何EPT违规(对于“共享位”=0的GPA),EPT违规退出资格报告:由于SEPT 336中的EPT违规而发生了TD退出。其他实施例可以阻止TD进一步执行,如果从SEPT 336发生了这样的EPT违规的话。
由于SEPT 336是由处理器构建和管理的,因此,TDRM 180(或者传统的VMM)不能影响使用SEPT 334执行的私有页的GPA到HPA转译。VMM 180在指派页时指定GPA到HPA,但一旦被指派,就不能在TD 190A不知晓的情况下恶意地重映射GPA。
现在转回到图3,物理地址(physical address,PA)跟踪器组件342,也称为物理地址元数据表(Physical Address Metadata Table,PAMT),是由CPU存储在受保护存储器中的每4KB页元数据表,以使得软件永远无法访问它。在一个实施例中,PA跟踪器被用来为每个页保存状态信息,其字段如下:PAMT.TYPE=页类型——例如,常规、自由、TDCS、TDVPS、TDSSA、SEPT、PMDSA等等;PAMT.OWNER=常规的TDID,TDSA的TDVPS;PAMT.EPOCH=用于转译后备缓冲器(translation lookaside buffer,TLB)跟踪;PAMT.LOCK=用于页锁定。
图7图示了用于构建、执行和拆除可信域的示例逻辑流程700。图7中所示的TD生命周期涵盖了TD存储器管理的所有ISA和硬件交互。在框702,可以构建可信域(TD)。在一个实施例中,TD构建存储器指派/测量可以包括以下操作:添加SEPT页和映射(通过使用TDADDSEPT指令),在带有测量的情况下添加页到TD(通过使用TDADDPAGE和TDEXTEND指令),以及在测量之后添加零页到TD(通过使用TDAUGPAGE指令)。
在框704,可以执行可信域。在一个实施例中,TD执行(例如,使用上文描述的指派的存储器触发PMH 140行为)可以包括用于存储器分页的操作(通过使用TDBLOCKPAGE、TDEVICT和TDRELOAD指令),以及用于存储器碎片化/碎片整理的操作(通过使用TDBLOCKPAGE、TDPROMOTE和TDDEMOTE指令)。
在框706,可以拆除可信域。在一个实施例中,TD拆除可以包括用于存储器解除分配的操作(通过使用TDBLOCKPAGE和TDREMOVE指令),以及用于SEPT 134页的存储器回收的操作(通过使用TDREMOVEPAGE指令)。
处理器向TDRM 180提供可用于调用来管理SEPT 334的指令。图8图示了安全扩展页表(SEPT)指令338的示例集合。
TDADDSEPT 802这个指令将GPA166到HPA161映射添加到SEPT 334。这个指令添加了映射来将GPA转译为HPA,但将该映射设置为被阻断访问。只有当使用TDADDPAGE或TDAUGPAGE指令将HPA 161页物理指派给TD 190A时,才可以使得此映射有效。这个指令使用下面描述的创建映射微指令来更新SEPT 334。
TDADDPAGE 804这个指令向TD 190A添加页。TDRM180通过参数指定这个页的初始内容。这个指令首先将初始内容拷贝到该页,以使得这些内容被用TD 190A的私有加密密钥来加密。随后,这个指令还更新并且使得SEPT 334中的相应转译有效,这样TD 190A现在可以访问这些页。这个指令使用下面描述的指派映射和解除阻断映射微指令来更新SEPT334。
TDAUGPAGE 806这个指令与TDADDPAGE类似,但该指令不是将初始内容拷贝到页,而是将页初始化为零。这个指令使用下面描述的指派映射和解除阻断映射微指令来更新SEPT 334。
TDBLOCKPAGE 808这个指令将指定页的SEPT 334映射更新为阻断状态,使得该页不能再从TD 190A访问。这个指令使用下面描述的阻断映射微指令来更新SEPT 334。
TDEVICTPAGE 810这个指令将指定页的SEPT 334映射更新为阻断状态,使得该页不能再从TD 190A访问。这个指令使用下面描述的阻断映射微指令。然后,这个指令生成处理器密钥完整性施行的页元数据,该元数据包括GPA 166、权限和页内容,以使得TDRM可以为另一个TD 190B或VM使用HPA 166。
TDRELOADPAGE 812这个指令首先验证由TDRM 180提供的页元数据的完整性,并且更新指定GPA 166的SEPT 334映射,将经过完整性检查的元数据传递给下面描述的指派映射和解除阻断映射微指令。
TDPROMOTE 814这个指令被TDRM 180用来将4k页TDEVICT/TDRELOAD到连续的2MB的存储器区域中,以“提升”到更大的TLB映射。TDRM必须在其页框编号(page framenumber,PFN)数据库中跟踪哪些HPA 161被指派给TD 190A,190B,…190C。所有实现存储器管理的操作系统/VMM都在PFN数据库中管理物理页的状态。然后,TDRM可以随后经由这个指令来请求SEPT结构的提升/降级,这个指令使用下面描述的提升映射微指令。
TDDEMOTE 816这个指令被TDRM用来将大页碎片化为连续的较小页区域,以降级TLB映射。TDRM必须在其PFN数据库中为TD 190A跟踪哪些HPA 161被碎片化。该指令经由下面描述的降级映射微指令来更新SEPT 334结构。
TDREMOVEPAGE 818这个指令从TD 190A中移除页。该指令只能对先前经由TDADDPAGE添加到TD 190A的页执行。(即,在对于SEPT 334中的HPA 161存在一个或多个有效的映射之前,该页不可被移除)。
TDREMOVEMAPPING 820这个指令从SEPT 334中移除GPA 166的阻断映射,并且在没有更多的传出引用从SEPT页保留时将页转换回TDRM 180所有权。SEPT页334的分页可以由类似的用于EPT 122页的TDMAPPINGEVICT和TDMAPPINGRELO变体来支持,这些变体为SEPT334元数据存储特定的元数据(相对于常规TD页)。在一个实施例中,指令TDWBPAGE、TDLDPAGE(图8中未示出)将SEPT中的GPA标记为“已逐出”,然后捕捉页的状态,并且用分页密钥以及页、GPA和属性的散列值对其进行加密。
图8还图示了在实现上面论述的SEPT指令338时使用的SEPT微指令850的示例集合。
创建映射852接收GPA 166作为输入参数,以经由SEPT 334和一个HPA 161目的地(没有源)来映射以添加SEPT页和插入映射。处理器112验证GPA 166没有设置“共享”位,否则返回错误。处理器112通过SEPT 334对所提供的GPA 166执行页游走(处理器施行HPA 161不是自引用的),确定是否需要新的HPA 161。在页游走期间,如果页游走要求新的页来完成映射,则处理器使用TDRM密钥ID对所提供的HPA进行读取检查,以确保该页是未被指派给任何其他TD 190A,…190C的普通页。或者,处理器可以使用位图(查找的HPA)来执行这个检查。如果该页是普通页,那么处理器使用TD密钥ID来执行一系列MOVDIR64操作,以清除SEPT页目录条目(page directory entry,PDE)/页表条目(page table entry,PTE)页(有效地更新存储器控制器中的完整性检查值并且将该页转换为TD页)。对于非叶扩展页表条目(extended page table entry,EPTE),处理器读取-修改-写入带有经修改的扩展页目录/页表(x)缓存条目(extended page directory/table(x)cache entry,EPxE)的缓存线,以引用添加的HPA 161,为上层EPxE更新引用计数。如果需要更多的页来完全指定映射,则处理器返回错误代码以报告给OS,否则对于叶EPTE,处理器112用经修改的EPxE来读取-修改-写入缓存线,以将GPA 166标记为不存在(从而阻断映射)。
指派映射854接收GPA 166、权限、源页的有效地址和要被指派给TD 190A的最终页的目的地HPA 161作为输入参数。处理器112验证GPA 166没有设置“共享”位。当处理器停滞/需要更多的页时,处理器执行页游走,返回错误(然后TDRM应当使用TDADDSEPT来修复该错误)。如果页游走成功完成,则处理器检查映射是否被标记为不存在(即,阻断状态)。对于目的地HPA 161,处理器使用TDRM密钥ID对提供的HPA进行读取检查,以确保该页是没有被指派给相同或者另一个TD 190A,…190C的普通页。这个检查还防止了对同一TD页的别名。或者,处理器可以使用位图(查找的HPA)来执行这个检查。如果这个检查成功通过,那么处理器将执行一系列的MOVDIR64写入到HPA,以将数据从源页拷贝到目的地页(取决于参数,带有内容或者带有零)。对于最终的EPTE页条目,处理器读取-修改-写入,以用目的地HPA修改EPTE,进行perm,并且将其标记为不存在(即,被阻断);并且更新L2 EPTE上的引用计数。
解除阻断映射856接收GPA 166作为输入参数。处理器验证GPA没有设置“共享”位。当处理器停滞/需要更多的页时,处理器执行页游走,返回错误(然后TDRM 180应当使用TDADDSEPT指令来修复该错误)。如果页游走成功完成,则处理器检查映射是否被标记为不存在(即,阻断状态)。对于最终的EPTE页条目,处理器读取-修改-写入,以修改EPTE,来将其标记为存在(即,解除阻断)。在一个实施例中,指派映射和解除阻断映射微指令可以被结合起来以优化操作。
阻断映射858接收GPA 166作为输入参数。处理器验证GPA没有设置“共享”位。当处理器停滞/需要更多的页时,处理器112执行页游走,返回错误(然后TDRM应当使用TDADDSEPT指令来修复该错误)。如果页游走成功完成,则处理器检查映射是否被标记为存在(即,不是阻断状态)。对于最终的EPTE页条目,处理器读取-修改-写入,以修改EPTE,来将其标记为不存在(即,被阻断)。
提升映射860接收GPA 166和期望的大小作为输入参数。处理器112验证GPA没有设置“共享”位。当处理器停滞/需要更多的页时,处理器执行页游走,返回错误(然后TDRM应当使用TDADDSEPT指令来修复该错误)。如果游走成功完成,则处理器检查映射是否被标记为不存在(即,阻断状态)。处理器经由9个EPxE可用位检查在内级维护的参考计数的PDE(对于较低级别),并且检查页表条目(PTE)页是否被完全填充(即,512个条目),并且所有条目在HPA空间中是连续的并且被标记为阻断。在成功时,处理器返回中间SEPT页334的HPA,以便TDRM可以TDREMOVE这些页,并且解除阻断SEPT中的2MB映射。
降级映射862接收第一HPA、GPA 166和期望的(较小)大小作为输入参数。处理器112验证GPA没有设置“共享”位。当处理器停滞/需要更多的页时,处理器执行页游走,返回错误(然后TDRM应当使用TDADDMAPPING指令来修复该错误)。如果游走成功完成,则处理器检查映射是否被标记为不存在(即,阻断状态)。处理器检查叶EPTE页大小应当大于期望的(较小)大小,并且缓存EPTE的第二HPA和目的地大页的第三HPA。对于第一碎片化GPA(例如,2MB区域的第一个4KB),处理器使用创建映射微指令,传入第一碎片区域的GPA和第一HPA来初始化新的PTE页。一旦成功,对于其余的碎片,处理器就使用指派映射和解除阻断映射微指令(使用与GPA和第三HPA3的偏移量)来更新先前步骤中由创建映射微指令设置的PTE页中的每个碎片所对应的EPTE。处理器更新较高级别EPTE(即,第二HPA2)的参考计数。
清除映射864接收GPA 166作为输入参数。处理器112验证GPA没有设置“共享”位,否则处理器会返回错误。处理器通过SEPT 334对所提供的GPA执行页游走(处理器施行HPA161不是自引用的),确定EPT 334未被设置,如果没有则处理器返回错误。在到达叶EPTE(处理器缓存先前级别条目HPA)时,处理器读取-修改-写入缓存线,以更新叶EPxE,以清除HPA并且将EPTE标记为不存在(从而阻断映射)。处理器更新较高级别引用计数,并且将级别和引用计数返回给OS(以便OS可以递归地重试,来移除所有SEPT页)。
实现方式可以实现在许多不同的系统类型中。现在参考图9,其中示出了根据一个实现方式的微处理设备系统900的框图。如图9中所示,多处理设备系统900是点到点互连系统,并且包括经由点到点互连950耦合的第一处理设备970和第二处理设备980。如图9中所示,处理设备970和980的每一者可以是多核心处理设备,包括第一和第二处理设备核心(未示出),虽然在处理设备中可存在可能多得多的核心。每个处理设备根据本公开的实现方式可以包括混合写入模式逻辑。可以在处理设备970、处理设备980或者这两者中实现使用信任域在虚拟化系统中提供隔离的实现方式。
虽然被示为具有两个处理设备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也可经由高性能图形接口939与高性能图形电路938交换信息。
共享缓存(未示出)可以被包括在任一处理设备中,或者在两个处理设备之外,但经由Pp互连与处理设备连接,从而使得任一个或两个处理设备的本地缓存信息在处理设备被置于低功率模式中的情况下可被存储在该共享缓存中。芯片组990可以经由接口996耦合到第一总线916。在一个实现方式中,第一总线916可以是外围组件互连(PeripheralComponent Interconnect,PCI)总线,或者诸如PCI快速总线或另一种第三代I/O互连总线之类的总线,虽然本公开的范围不限于此。
如图9所示,各种I/O设备914可以耦合到第一总线916,以及将第一总线916耦合到第二总线920的总线桥918。在一个实现方式中,第二总线920可以是低引脚数(low pincount,LPC)总线。各种设备可以耦合到第二总线920,例如包括键盘和/或鼠标922、通信设备927和存储单元928,例如盘驱动器或者其他大容量存储设备,它们在一个实现方式中可以包括指令/代码和数据930。另外,音频I/O 924可以耦合到第二总线920。注意,其他架构是可能的。例如,取代图9的点到点架构,系统可以实现多点分支总线或者其他这种架构。
现在参考图10,其中示出了根据本公开的实现方式的第三系统1000的框图。图10图示了处理设备970、980可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982。对于至少一个实现方式,CL 972、982可以包括例如本文所述的集成存储器控制器单元。此外,CL972、982也可以包括I/O控制逻辑。图9图示了存储器932、934耦合到CL 972、982,并且I/O设备1014也耦合到控制逻辑972、982。传统I/O设备1015耦合到芯片组990。可以在处理设备970、处理设备980或者这两者中实现使用信任域在虚拟化系统中提供隔离的实现方式。
图11是可以包括一个或多个核心1102的示例片上系统(system on achip,SoC)。本领域中已知的用于膝上型计算机、桌面型计算机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理设备、数字信号处理设备(digital signalprocessing device,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其他电子设备的其他系统设计和配置也是适当的。总之,能够包含本文公开的处理设备和/或其他执行逻辑的许多种系统或电子设备一般是适当的。
现在参考图11,其中示出了根据本公开的实现方式的SoC 1100的框图。另外,虚线框是更高级SoC上的特征。在图11中,(一个或多个)互连单元1102耦合到应用处理设备1110,该应用处理设备包括一组一个或多个核心1102A-N和(一个或多个)共享缓存单元1106;系统代理单元1112;(一个或多个)总线控制器单元1116;(一个或多个)集成存储器控制器单元1114;一组一个或多个媒体处理设备1120,其可以包括集成图形逻辑1108、用于提供静止和/或视频相机功能的图像处理设备1124、用于提供硬件音频加速的音频处理设备1126、以及用于提供视频编码/解码加速的视频处理设备1128;静态随机访问存储器(static random access memory,SRAM)单元1130;直接存储器访问(direct memoryaccess,DMA)单元1132;以及显示单元1140,用于耦合到一个或多个外部显示器。可以在SoC1100中实现使用信任域在虚拟化系统中提供隔离的实现方式。
接下来转到图12,描绘了根据本公开的实现方式的SoC设计的实现方式。作为说明性示例,SoC 1200被包括在用户设备(user equipment,UE)中。在一个实现方式中,UE指的是将被最终用户用来通信的任何设备,例如手持电话、智能电话、平板设备、超薄笔记本、具有宽带适配器的笔记本、或者任何其他类似的通信设备。AUE可连接到基站或节点,这在性质上可对应于GSM网络中的移动站(mobile station,MS)。可以在SoC 1200中实现使用信任域在虚拟化系统中提供隔离的实现方式。
这里,SoC 1220包括2个核心1206和1207。与以上论述类似,核心1206和1207可符合指令集架构,例如具有架构CoreTM的处理设备、超微半导体公司(Advanced MicroDevices,Inc.,AMD)处理设备、基于MIPS的处理设备、基于ARM的处理设备设计,或者它们的客户,以及它们的被许可者或使用者。核心1206和1207耦合到与总线接口单元1209和L2缓存1210相关联的缓存控制1208以与系统1200的其他部分通信。互连1211包括片上互连,例如IOSF、AMBA或者上文论述的其他互连,它们可实现所描述的公开内容的一个或多个方面。
互连1211提供通信信道到其他组件,例如提供到订户身份模块(SubscriberIdentity Module,SIM)1230来与SIM卡相对接,提供到启动ROM 1235来保存启动代码供核心1206和1207执行来初始化和启动SoC1200,提供到SDRAM控制器1240来与外部存储器(例如DRAM 1260)相对接,提供到闪存控制器1245来与非易失性存储器(例如,闪存1265)相对接,提供到外设控制1250(例如,串行外围接口)来与外设相对接,提供到视频编解码器1220和视频接口1225来显示和接收输入(例如,触摸启用输入),提供到GPU 1215来执行图形相关计算,等等。这些接口的任何一者可包含本文描述的实现方式的方面。
此外,系统图示了用于通信的外设,例如蓝牙模块1270、3G调制解调器1275、GPS1280、以及Wi-Fi 1285。注意,如上所述,UE包括用于通信的无线电装置。结果,可以不包括所有这些外围通信模块。然而,在UE中,应当包括某种形式的无线电台用于外部通信。
图13图示了采取计算系统1300的示例形式的机器的示意性表示,在该机器内可以执行一组指令以使得该机器执行本文论述的任何一个或多个方法。在替代性实现方式中,机器可连接(例如,联网)到LAN、内联网、外联网或互联网中的其他机器。机器可在客户端-服务器网络环境中作为服务器或者客户端设备来操作,或者在对等(或分布式)网络环境中作为对等机器来操作。机器可以是个人计算机(personal computer,PC)、平板PC、机顶盒(set-top box,STB)、个人数字助理(Personal Digital Assistant,PDA)、蜂窝电话、web器具、服务器、网络路由器、交换机或网桥,或者任何能够执行指定该机器要采取的动作的(顺序的或其他方式的)一组指令的机器。另外,虽然只图示了单个机器,但术语“机器”也应被理解为包括单独或联合执行一组(或多组)指令以执行本文论述的任何一个或多个方法的机器的任何集合。可以在计算系统1300中实现转换页和区段的实现方式。
计算系统1300包括处理设备1302、主存储器1304(例如,只读存储器(read-onlymemory,ROM)、闪存、动态随机访问存储器(dynamic random access memory,DRAM)(例如同步DRAM(synchronous DRAM,SDRAM)或DRAM(RDRAM)等等)、静态存储器1306(例如,闪存、静态随机访问存储器(static random access memory,SRAM)等等)、以及数据存储设备1318,它们经由总线1330与彼此通信。
处理设备1302表示一个或多个通用处理设备,例如微处理设备、中央处理单元,等等。更具体地,处理设备可以是复杂指令集计算(complex instruction set computing,CISC)微处理设备、精简指令集计算机(reduced instruction set computer,RISC)微处理设备、超长指令字(very long instruction word,VLIW)微处理设备,或者实现其他指令集的处理设备,或者实现指令集的组合的处理设备。处理设备1302还可以是一个或多个专用处理设备,例如专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)、数字信号处理设备(digitalsignal processing device,DSP)、网络处理设备,等等。在一个实现方式中,处理设备1302可以包括一个或多个处理设备核心。处理设备1302被配置为执行处理逻辑1326,用于执行本文论述的操作。在一个实现方式中,处理设备1302可以是图1的计算系统100的一部分。或者,计算系统1300可以包括如本文所述的其他组件。应当理解,核心可支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可按各种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心针对该物理核心在同时进行多线程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式提取和解码,然后是同时多线程处理,例如像Hyperthreading技术中那样)。
计算系统1300还可以包括通信地耦合到网络1320的网络接口设备1308。计算系统1300还可以包括视频显示单元1310(例如,液晶显示器(liquid crystal display,LCD)或阴极射线管(cathode ray tube,CRT))、字母数字输入设备1312(例如,键盘)、光标控制设备1314(例如,鼠标)、信号生成设备1316(例如,扬声器)、或者其他外围设备。此外,计算系统1300可以包括图形处理单元1322、视频处理单元1328和音频处理单元1332。在另一实现方式中,计算系统1300可以包括芯片组(未图示),这指的是被设计为与处理设备1302一起工作并且控制处理设备1302和外部设备之间的通信的一组集成电路或芯片。例如,芯片组可以是母板上的一组芯片,这些芯片将处理设备1302链接到超高速设备,例如主存储器1304和图形控制器,以及将处理设备1302链接到外设的较低速外围总线,例如USB、PCI或ISA总线。
数据存储设备1318可以包括计算机可读存储介质1324,其上存储有体现本文描述的功能的任何一个或多个方法的软件1326。软件1326在其被计算系统1300执行期间也可完全或者至少部分作为指令1326存在于主存储器1304内和/或作为处理逻辑1326存在于处理设备1302内;主存储器1304和处理设备1302也构成计算机可读存储介质。
计算机可读存储介质1324也可以用于存储利用处理设备1302的指令1326,例如参考图1所述,和/或包含调用上述应用的方法的软件库。虽然计算机可读存储介质1324在示例实现方式中被示为单个介质,但术语“计算机可读存储介质”应当被理解为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或关联的缓存和服务器)。术语“计算机可读存储介质”也应被理解为包括能够存储、编码或携带一组指令来供机器执行并且使得机器执行实现方式的任何一个或多个方法的任何介质。术语“计算机可读存储介质”应相应地被理解为包括但不限于固态存储器,以及光介质和磁介质。
虽然已针对有限数目的实现方式描述了本公开,但本领域技术人员将会明白从这些实现方式的许多修改和变化。希望所附权利要求覆盖落在本公开的真实精神和范围内的所有这种修改和变化。
在本文的描述中,阐述了许多具体细节,例如特定类型的处理设备和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理设备管线阶段和操作等等的示例,以便提供对本公开的透彻理解。然而,本领域技术人员将会清楚,实现本公开并不需要使用这些具体细节。在其他情况中,没有详细描述公知的组件或方法,例如特定的和替代性的处理设备架构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现方式、用代码对算法的特定表述、特定断电和门控技术/逻辑以及计算机系统的其他特定操作细节,以避免不必要地模糊本公开。
参考在特定的集成电路中,例如在计算平台或微处理设备中,利用信任域在虚拟化系统中提供隔离,来描述了实现方式。实现方式也可适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的实现方式不限于桌面计算机系统或便携计算机,例如UltrabooksTM计算机。并且也可用于其他设备中,例如手持设备、平板设备、其他薄型笔记本、片上系统(SoC)设备、以及嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(personal digital assistant,PDA)、以及手持PC。嵌入式应用通常包括微控制器、数字信号处理设备(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(wide area network,WAN)交换机、或者可执行下面教导的功能和操作的任何其他系统。描述了系统可以是任何种类的计算机或嵌入式系统。公开的实现方式尤其可被用于低端设备,比如可穿戴设备(例如,手表)、电子植入物、感观和控制基础设施设备、控制器、监视控制和数据采集(supervisory control and data acquisition,SCADA)系统,等等。另外,本文描述的装置、方法和系统不限于物理计算设备,而是也可涉及针对能量节约和效率的软件优化。正如在下面的描述中将变得容易清楚的,本文描述的方法、装置和系统的实现方式(无论是就硬件、固件、软件或者其组合而言)对于与性能考虑因素平衡的“绿色技术”未来是至关重要的。
用于使用信任域的安全存储器访问的装置和方法
在一个实施例中,进程地址空间ID(process address space ID,PASID)与信任域(trust domain,TD)相关联,并且用于安全地访问信任域。提供了额外的指令,这些指令跟踪PASID到TD的指派,并且限制TD仅利用指派的PASID生成ENQ*请求。此外,一个实施例通过用于可信设备的地址转译的可信IO存储器管理单元(IO memory management unit,IOMMU)转译表来跟踪设备功能或PASID到TD的指派,并且代表TD执行可信IO转译后备缓冲器(IOtranslation lookaside buffer,IOTLB)和设备TLB无效。
此外,本发明的一个实施例包括高速总线(例如,PCIe)协议扩展,以将设备发源的事务定义为“可信或非可信事务”(例如,利用事务头部位)。其他位可用于表示设备认证后的其他设备能力。
最后,一个实施例包括IOMMU硬件扩展,以将可信IOMMU转译表用于发源自设备的可信事务。特定于TD的密钥ID可与转译后的物理地址相关联,以允许对TD私有存储器进行DMA操作。
在图14中图示了用于可信域的可信IO框架的一个实施例,其中示出了与VM/TD相耦合并且与特定PASID 1401相关联的设备1410。VM/TD使用PASID 1401来访问唯一的第一级页表1420(例如,以执行访客虚拟地址(GVA)到访客物理地址(GPA)的转译)。利用从第一级页表1420取回的地址,VM/TD使用其域ID 1405来访问第二级页表1430(例如,使用上述技术)。
在到虚拟机(VM)的设备指派模型中,TD属于唯一的域,由域ID 1405标识,并且每个TD域ID 1405与第二级页表1430相关联,该第二级页表1430提供GPA到HPA的转译。在一个实施例中,第二级页表1430包括上述的安全EPT页表。每个TD域可被指派1到N个PASID,而给定的PASID只能被指派给一个TD域。TD域可以被指派0到N个设备功能(b/d/f),而直接指派的设备功能只能被指派给一个TD。PASID 1401可与第一级页表1420相关联,并且第一级页表1420可与1到N个PASID相关联。
本文描述的可信IO框架提供了可信鉴证、可信配设、可信MMIO和可信DMA。对于可信鉴证,设备证书被用作设备真实性的证据。一个实施例提供了安全姿态和设备配置的报告。
可信配设可以包括配设秘密(密钥,等等)、建立对MMIO寄存器和对TD私有存储器的访问控制。对于可信MMIO和DMA,实现了保密性、完整性和重放保护技术,以及向/从设备发出可信事务的信令以及访问控制施行。
在一个实施例中,IOMMU使用树状数据结构来施行访问控制。在图15中,树结构包括根表1599,其具有多个根表条目1500-1502,每个根表条目标识一个上下文表1510-1512。上下文表条目可标识多个PASID目录条目1520、1530,这些目录条目进而标识一组PASID表条目1525、1535。
在一个实施例中,IOMMU使用由总线编号、设备编号和功能编号组成的请求者ID(RID)来识别设备。RID是DMA事务的一部分,并且被携带在事务封包的头部中。来自设备的DMA事务可以可选地携带PASID,该PASID识别设备中的唯一IO上下文。如果事务不携带PASID,则IOMMU使用在IOMMU数据结构中配置的默认PASID值。
如前所述,此数据结构的根是根表1599,并且根表的地址由虚拟机监视器(VMM)编程到IOMMU中。在一个实施例中,根表1599由RID中的总线编号索引,并且每个根表条目1500-1502指向一个上下文表1510。上下文表条目1510-1512由RID中的(设备编号+功能编号)索引,并且指向PASID目录表1520、1530。如果设备DMA事务确实携带PASID头部,则上下文表条目被用PASID编号来编程以便使用。PASID目录由PASID编号的高14位索引,并且指向由PASID的低6位索引的PASID表1525、1535。
PASID表条目1525然后指向第一级页表(可选)和第二级页表。如果DMA请求使用的是虚拟地址,那么IOMMU就会使用第一级页表来将虚拟地址转译为访客物理地址,然后使用第二级页表将访客物理地址转译为主机物理地址。
在一个实施例中,为了支持可信IO,不信任VMM来建立这些IOMMU数据结构。为了支持这一安全性目标,IOMMU有两组数据结构。第一组由VMM设置,以对所有设备执行访问控制,而第二组数据结构用于对从指派给信任域的可信设备向TD私有页发出的可信DMA请求执行访问控制。IOMMU通过由VMM建立的数据结构在对非可信设备执行游走时施行这一点。无论是这些数据结构,还是由于游走这些数据结构而获得的最终物理地址,都不能有TD私钥ID。这个第二组数据结构由微代码通过本文描述的新指令来管理。这种模型允许了IOMMU电路和逻辑几乎不变,只是在DMA请求从设备到达时,挑选正确的根表开始转译游走。在图16中示出了一个示例,其示出了IOMMU1601为可信事务访问可信设备上下文1602内的第一根表,并且为非可信事务访问非可信上下文1605的第二根表。在这个特定示例中,可信设备上下文映射到可信设备OS管理的页表1603和微代码管理的安全EPT 1604。
IOMMU 1601需要知道可信根表地址,并且为此,在IOMMU中包括了第二根指针,这里称为TRUSTED_ROOT_PTR,如图16所示,该指针被用第二树状数据结构编程,以托管对于指派给信任域的可信设备的映射。在一个实施例中,这个TRUSTED_ROOT_PTR只是微代码可写的,并且利用发起者安全性属性(security attribute of initiator,SAI)检查来施行。TRUSTED_ROOT_POINTER可以被映射到IOMMU中的新TRUSTED_IOMMU_BAR(可信IOMMU基地址寄存器)指定的MMIO范围,并且由BIOS或VMM配置。然而BIOS或VMM不能写入由该MMIO范围映射的任何寄存器,因为这些寄存器是受SAI保护的。TRUSTED IOMMU_BAR被写入一次,并且一旦被配置后就被锁定。TRUSTED_IOMMU_BAR还包含一组TRUSTED_INVALIDATION_REGISTERS,微代码可将其用于调用IOTLB和IOMMU中间结构缓存,作为从TD取消指派设备的流程的一部分。
从图16中的数据结构图可以看出,对第二可信数据结构的总存储器要求可能非常大。用于托管这个数据结构的存储器的选项包括:(a)在启动时从DRAM窃取存储器,并且使用范围寄存器对其进行保护;(b)让VMM在运行时为该数据结构分配存储器。在一个实施例中使用了选项b),因为它不会因为该数据结构的最大大小而浪费存储器(而选项(a)就需要这样做)。选项(b)还允许VMM灵活地分配存储器,并且在其不被需要时回收此存储器。
然而,使用由VMM分配的存储器意味着需要在运行时保护存储器以免被VMM篡改。在一个实施例中,为了在启动时保护可信上下文结构而不窃取存储器,使用了平台保留密钥ID(“PKID”),它是映射到微代码建立密钥的MK-TME密钥ID,并且不可被VMM使用(即,VMM无法生成在VMM页表引用的HPA中指定PKID的主机页表映射)。PKID取自TD名称空间,并且不被用于任何TD临时密钥。用于可信IOMMU数据结构的存储器从而由与这个PKID相关联的密钥进行加密和完整性保护,并且试图篡改这个存储器(使用其他HKID)的任何VMM尝试都会导致MK-TME引擎中的完整性检查失败,从而导致机器检查异常。
在一个实施例中,可信设备经过认证,并且其与其所连接到的桥接器端口或根端口的链接由可信认证和配设代理加密。已知现有技术用于认证PCIe设备(参见例如,PCI快速设备安全性增强,0.7版,2018年6月)。一个实施例以这个设备认证模型为基础,对PCIe协议进行了以下扩展,以施行可信IO安全性属性。在PCIe事务中使用新的指示符位来指示出请求是可信请求。可以使用以下不同的实施例:
实施例1:PASID TLP前缀中的可信指示符:设备在生成DMA事务时,可使用PASIDTLP前缀中的新的“T-可信”字段1701来指示出它们是到TD私有存储器的可信事务,还是到非TD私有存储器的DMA,如图17所示。T字段值为00表示它是非可信事务并且PASID无效;为01表示非可信事务,并且PASID有效;10表示可信事务,并且PASID无效;并且11表示可信事务,并且PASID有效。
实施例2:扩展事务处理提示TLP前缀中的可信指示符:当可信IO被启用时,TPHTLP前缀的位0被定义为可信位。例如,值0表示非可信事务,并且值1表示可信事务。TLP前缀的一个实施例在图18中图示。
实施例3:对于此实现方式,使用新的TLP前缀来表示这是可信事务。
实施例4:在此实施例中,地址字段的位63被用于表示这是可信事务。
实施例5:对于此本实施例,现有PCIe事务头或TLP前缀之一中的保留位或编码被用作“可信”位。
在一个实施例中,IOMMU 1601使用这个“可信”位来确定是否应当使用VMM建立的根指针或微代码建立的可信根指针为转译进行游走。注意,PCIe封包中的“可信”位状态由被携带来认证来自已认证设备的PCIe封包的链路完整性头部覆盖。因此,如果设备得到认证,并且封包完整性检查通过,就可以对可信位进行评估。这样就防止了可信位欺骗。
本发明的一个实施例对PCIe根端口和桥接器实现了以下要求以施行可信IO:
DEV_REQ_1:当在通过认证和链路加密确保安全的链路上接收到请求时,桥接器或根端口应允许DMA事务在头部中具有“可信”位。如果在无保护链路上接收到设置了“可信”位的请求,则根端口或桥接器应将该事务作为畸形事务丢弃。
DEV_REQ_2:当桥接器在安全链路上接收到设置了“可信”位的事务时,它不得将该事务转发到无保护链路。
DEV_REQ_3:已被置于可信模式中并且在安全链路上接收到设置了“可信”位的事务的桥接器或根端口必须验证头部的请求者ID中的总线编号是该端口的有效总线编号。在端口连接到端点设备的情况下,总线编号和设备编号对于该端口是有效的。注意,由于DEV_REQ_1和DEV_REQ_2,非可信设备无法设置“可信”位。具有伪造的请求者ID的非可信DMA事务不会造成威胁,因为它游走过VMM已建立的表格,而且由于MK-TME加密和完整性检查,它无法到达TD私有存储器。这个DEV_REQ_3迫使可信设备无法进行ID欺骗。
在一个实施例中,当IOMMU 1601游走过这些上下文结构以加快转译请求时,它将来自这些表格的条目缓存到其转译缓存中。IOMMU还将转译缓存在IOTLB中,以使得后续请求可以命中,从而可以被更快地转译。
一个实施例在IOMMU中间结构和IOTLB结构中包括“可信”标签位。来自事务的“可信”位与请求者ID和地址一起用于查找这些结构。因此,“可信”标签位在这些缓存中提供了可信条目与非可信条目之间的隔离。
一个实施例还包括对IOMMU上下文结构条目和PASID表条目的扩展。具体地,此实施例包括上下文结构条目和PASID表条目。
上下文结构条目——当一设备被完全指派给一TD时,指派给此设备的所有PASID必须也是指派给该TD的那些PASID。为了执行这种检查,拥有此设备的TD的ID被记录在上下文结构条目中,如下所示。在图19中图示了示例上下文条目扩展1901。对于VMM建立的数据结构中的上下文结构条目,这些字段仍然被保留,并且不被IOMMU消耗。可信上下文结构条目中的可信域控制结构(TDCS)指针在不为空时指向拥有此设备的TD的TD控制结构。对于这种设备,TD还可指定默认PASID值RID_PASID,以指示出应当被用于不携带PASID TLP前缀的DMA事务的PASID。
PASID表条目——在一个实施例中,PASID表包括两个结构,这两个结构在VMM建立的数据结构中仍然被保留。图20图示了示例PASID条目2001,如该图所示,TDCS指针2002是指向已被指派此PASID的TD的TD控制结构的指针。第二结构,TD MK-TME KID 2003,是指派给此TD的多密钥TME密钥ID,并且由IOMMU用来标记转译后的物理地址,以便这些DMA事务可以访问由TD私钥ID加密的存储器。
在一个实施例中,将设备指派给TD的处理会填写上述的可信数据结构(例如,可信设备上下文1602、页表1603、微代码管理EPT 1604)。在一个实施例中,以下新指令执行TD设备指派:
TDPASIDASSIGN——此指令将PASID分配给TD。该指令验证PASID已经被指派给任何其他TD,并且随后更新PASID跟踪器结构以记录PASID指派。
TDDEVICEBIND——此指令被TD用于指示出其希望获得设备和/或PASID的所有权。此指令不会立即赋予TD所有权,而是由TD用来创建处理器签名的数据结构(例如,设备绑定结构),然后TD可将其提供给VMM以请求指派。让该数据结构由处理器签名迫使VMM无法改变该请求;VMM只能接受请求或拒绝请求。
TDDEVICEASSIGN——此指令被VMM用于执行TD获得设备的所有权的请求。此指令将TDDEVICEBIND指令创建的签名数据结构(例如,设备绑定结构)作为参数之一。然后,此指令构建被IOMMU用于执行访问控制的可信结构。
TDDEVICEUNBIND——当TD希望释放先前指派的设备和/或PASID的所有权时使用此指令。与TDDEVICEBIND类似,此指令生成处理器签名的数据结构(例如,设备解绑结构),该数据结构然后被提供给VMM以请求释放。
TDDEVICEREMOVE——此指令被VMM用于执行TD释放设备所有权的请求。此指令将TDDEVICEUNBIND指令创建的签名数据结构(例如,设备解绑结构)作为参数之一。然后,此指令更新由IOMMU用于执行访问控制的可信结构,以移除此设备和/或PASID相关条目。
TDDEVCTXMEMORYRECLAIM——此指令回收与连接到可信根指针的数据结构相链接的存储器结构。
TDPASIDTRKRMEMORYRECLAIM——此指令被用于回收VMM为PASID跟踪器分配的存储器,如果该结构现在已空闲的话。
TDCONFIGIOMMU——此指令被VMM用于将设备上下文表的根编程到平台中的各种IOMMU中。
下面提供这些指令的具体实现方式的细节。
TDPASIDASSIGN
如前所述,TDPASIDASSIGN指令更新PASID跟踪器结构以向TD指派PASID。这个PASID跟踪器结构是由VMM提供的存储器构建的,但由指令利用平台保留密钥ID(PKID)进行加密。
TDPASIDASSIGN指令的一个实施例包括以下输入和输出参数:
输入参数:
PASID——要指派的PASID
TDCS Ptr——指向TD控制结构页的指针
SPARE_PAGE_PA——备用页的物理地址,可被此指令用于构建跟踪结构
输出参数:
状态——OK——指派成功,FAIL——指派失败
SPARE_PAGE_STATUS——指令是否消耗了提供的备用页
ERROR_CODE——指派失败的原因——以下之一
ALREADY_ASSIGNED——已经指派了PASID
NEED_MORE_MEMORY——需要更多存储器来构建PASID跟踪器
UNSPECIFIED——其他错误
如图22所示,TDPASIDASSIGN指令的一个实施例将PASID跟踪器2100构建为两级数据结构。PASID目录指针2101指向PASID目录21045内的位置,该目录包括识别出PASID表的条目,其中包括目录指针0至目录指针3,是处理器中的控制寄存器并且其重置默认状态为NULL(空)。
输入到该指令的PASID的位19:18用于检查相应的PASID目录指针是否为NULL。如果为NULL,则消耗VMM提供的备用页,并且将其地址记录在相应的控制寄存器中。然后使用PKID将该页初始化为全0,这也确保了VMM无法再篡改此页。为了进行这个初始化,该指令的一个实施例使用MOVDIR64微操作,该微操作进行缓存线宽的存储,而不在相应的缓存线上进行RFO。然后,该指令返回错误代码NEED_MORE_MEMORY。
如果PASID目录指针不是NULL,则指令将使用输入PASID的位18:10读取PASID目录条目。如果该条目不存在,则消耗VMM提供的备用页,并且将其地址记录在相应的PASID目录条目中。然后使用PKID将该页初始化为全0,这也确保了VMM无法再篡改此页。如上所述,该指令可使用MOVDIR64微操作,该微操作进行缓存线宽的存储,而不在相应的缓存线上进行RFO。该指令随后返回错误代码NEED_MORE_MEMORY。
如果PASID目录条目不是NULL,则该指令使用输入PASID的位9:0读取PASID表条目。如果该条目有效,并且条目中记录的TDCS指针不是输入到该指令的TDCS指针,则该指令返回错误ALREADY_ASSIGNED。如果该条目无效,则该指令将该条目标记为有效,并且在该条目中记录TDCS指针,以成功完成指派。指派成功后,该指令返回OK状态。
TDDEVICEBIND
此指令被TD用于指示出其想要获得设备和/或PASID的所有权。
输入参数:
-请求者ID——要拥有的设备的总线/设备/功能编号
-PASID——要拥有的主机PASID
-设备独占——标志,用来指示出TD是想要拥有整个设备功能的所有权,还是只想拥有该设备功能中的PASID上下文的所有权
-Default_PASID——用于不携带PASID的设备事务的PASID。此字段仅在设备独占被设置为1时有效。
-设备TLB启用——是否允许设备侧IOTLB——这被IOMMU用于允许或拒绝来自设备的地址转译服务(address translation service,ATS)请求。
-第一级分页模式——如果TD为DMA事务启用两级(即,嵌套页表),则其指定第一级页表的格式
-第一级页表指针——如果启用嵌套转译,则是第一级页表的访客物理地址
-写入保护启用——是否允许监督DMA请求忽略第一级页表中的写入权限
-监督者请求启用——是否允许监督DMA请求
输出参数:
-状态——OK——绑定成功,FAIL——绑定失败
设备绑定结构—此结构包括输入参数,并且还具有由处理器使用处理器内部密钥在输入参数上生成的MAC。该MAC还覆盖防重放计数器,该计数器用于确保这个设备绑定结构只被使用一次。此结构的子字段是:输入参数、防重放计数器、以及输入参数和防重放计数器上的MAC。
该指令的一个实施例将输入参数写入到设备绑定结构。该指令还原子式地递增TD控制结构中的绑定解绑分配计数器,并且将预递增的值作为防重放计数器写入到设备绑定结构。然后,该指令根据输入参数和绑定解绑分配计数器生成MAC,并且使用处理器内部密钥将其写入到设备绑定结构。
TD控制结构持有两个计数器——绑定解绑分配计数器和绑定解绑消耗计数器。分配计数器是作为防重放计数器被填入到该结构中并且由这个指令递增的。消耗计数器由TDDEVICEASSIGN/TDDEVICEREMOVE指令递增。因此,TDDEVICEASSIGN/TDDEVICEREMOVE所进行的防重放检查是,设备绑定结构中的计数器应当等于绑定解绑消耗计数器。
TDDEVICEASSIGN:
此指令被VMM用来请求处理器将设备指派到TD。这涉及构建出可信根、上下文、PASID目录和PASID表结构。为了构建这些结构,VMM提供存储器作为可被此指令消耗的参数。
输入参数:
设备绑定结构——由TDDEVICEBIND指令创建的签名结构
最大PASID
SPARE_MEMORY_PTR1
SPARE_MEMORY_PTR2
拒绝
作为IOMMU数据结构的构建的一部分需要分配的最大连续结构是PASID目录。这个PASID目录对于每32768个PASID需要4K字节。因此,最大PASID参数被用于确定作为此指令的参数提供的备用存储器的大小。因此,存储器的大小为Floor(Max_PASID/32768)+1页。这在SPARE_MEMORY_PTR2中提供。
所有其他结构都是4K大小,并且SPARE_MEMORY_PTR1是由VMM提供的4K大小结构。
拒绝是一个特殊标志,它被输入到此指令中,指示出来自VMM的一个请求:该请求要求在出错的情况下完成此指令,但要推进防回滚计数器,以便可以处理后续请求。当VMM不同意TD提供的设备绑定结构内容时,就会使用此标志。
输出参数:
状态——OK——绑定成功,FAIL——绑定失败
ERROR_CODE
REJECT_REQUESTED——由于拒绝标志,该指令被请求失败
NEED_MORE_MEMORY_SPARE_MEMORY_PTR1_USED——SPARE_MEMORY_PTR1已被消耗,并且该操作需要更多存储器来构建出结构
NEED_MORE_MEMORY_SPARE_MEMORY_PTR2_USED——SPARE_MEMORY_PTR2已被消耗,并且该操作需要更多存储器来构建出结构
UNSPECIFIED——其他错误
操作:
该指令首先使用CPU内部密钥验证设备绑定结构上的MAC,并且如果无效则生成错误。然后,该指令按照先前所述进行防重放检查,并且如果失败则返回错误。
如果拒绝请求标志被设置为TRUE(真),则指令通过递增绑定解绑消耗计数器并且返回错误代码为REJECT_REQUESTED的失败响应,来推进防重放计数器。
该指令首先验证设备绑定结构中记录的PASID被指派给设备绑定结构中记录的TD。为了进行此验证,指令会查找PASID跟踪器,以验证PASID被指派给此TD。如果PASID跟踪器指针为NULL或者如果PASID未被指派给TD,则该指令返回错误。
此数据结构的可信根指针是CPU中的控制寄存器,其重置值为NULL。
如果可信根指针为NULL,则该指令消耗由SPARE_MEMORY_PTR1提供的4K页。该指令利用此结构的地址对CPU可信根指针进行编程,并且CPU使用MOVDIR64微操作将此页初始化为用PKID加密的全0。然后,该指令以错误代码NEED_MORE_MEMORY_SPARE_PTR1返回。
如果可信根指针不是NULL,则处理器将使用设备绑定结构中的请求者ID的总线编号索引到根表中。如果根表条目无效,则指令消耗SPARE_MEMORY_PTR1并且创建根表条目。此页现在是此设备的上下文表结构。然后,该指令初始化上下文表结构,并且以错误代码NEED_MORE_MEMORY_SPARE_PTR1返回。
如果根表条目有效,则该指令在上下文结构中向前游走,并且使用设备绑定结构请求者ID中的设备+功能编号作为索引来读取上下文表条目。如果上下文表条目无效,则指令消耗SPARE_MEMORY_PTR2并且创建上下文表条目。此页现在是此设备的PASID目录结构。然后,该指令初始化上下文表结构,并且以错误代码NEED_MORE_MEMORY_SPARE_PTR2返回。
如果上下文表条目有效,则该指令在PASID目录结构中向前游走,并且使用设备绑定结构请求者ID中的PASID编号作为索引来读取PASID目录条目。如果PASID目录条目无效,则指令消耗SPARE_MEMORY_PTR1并且创建PASID目录条目。此页现在是PASID表结构。然后,该指令初始化PASID表结构。
既然该指令已验证了所有级别的所有结构都是有效的,那么该指令将再次从根表条目开始游走,并且这次将适当地填写入上下文表条目和PASID表条目。然后该指令返回成功。这确保了整个表的更新是以原子方式完成的。
最后,该指令递增被防重放检查使用的绑定解绑消耗计数器。
对于整个树数据结构为空(例如,可信根指针为NULL)的情况,在图22A-22E中图示了这个构建过程。参考图22A,在首次调用TDDEVICEASSIGN之后,根表2201被分配。该指令以错误返回,称其需要更多存储器。
参考图22B,在第二次调用TDDEVICEASSIGN时,分配上下文表2202(例如,可缩放模式下部上下文表2202)。该指令以错误返回,指出其需要更多存储器。
参考图22C,在第三次调用TDDEVICEASSIGN时,分配可缩放模式PASID目录2203。该指令以错误返回,指出其需要更多存储器。
参考图22D,在第四次调用TDDEVICEASSIGN时,分配可缩放模式PASID表2204。既然所有存储器分配都已完成,该指令为此次指派填写各种表条目,如图22E中所示。然后,这些结构被用于经由第一级页表结构2205和第二级页表结构2206来定位条目。
第二级页表指针(即,指向第二级页表结构2206的指针)是作为EPT为TD创建的指针(详见上文安全EPT描述)。第一级页表指针(即,指向第一级页表结构2205的指针)如上述设备绑定结构中所指定。设备绑定结构未指定的上下文和PASID表条目由TDDEVICEASSIGN指令以安全默认值填充。
TDDEVICEUNBIND
此指令与TDDEVICEBIND指令类似,但编码了TD希望释放设备的意愿。与TDDEVICEBIND指令一样,此指令创建设备解绑结构,该结构具有像设备绑定结构那样的MAC和防重放计数器。设备解绑结构中的一个参数指示出是否要释放PASID指派。当TD不在为任何其他设备上下文使用PASID时,它也可以将PASID标记为已释放。此指令还将绑定解绑分配计数器采样为防重放计数器来包括在设备解绑结构中,并且以原子方式递增它。
在另一种不同的实施例中,TDDEVICEBIND和TDDEVICEUNBIND可使用单个指令来实现,该指令带有输入标志,以指示出要执行的操作。
TDDEVICEREMOVE
此指令使用设备解绑结构作为输入参数,并且释放对TD进行的设备和/或PASID指派。
输入参数:
-设备解绑结构——由TDDEVICEUNBIND指令创建的签名结构
-拒绝—标志,指示出VMM希望以失败响应拒绝该指令,但要推进防重放计数器
输出参数:
-状态——OK——绑定成功,FAIL——绑定失败
-ERROR_CODE
○REJECT_REQUESTED——由于拒绝标志,该指令被请求失败
○UNSPECIFIED——其他错误
操作:
该指令首先检查设备解绑结构中记录的TD ID是否为已终止的TD。如果TD已终止,则指令将不验证设备解绑结构上的MAC,因为这是TD终止后的清理操作。
如果TD未被标记为终止,则该指令首先使用CPU内部密钥验证设备绑定结构上的MAC,并且如果无效则生成错误。然后,该指令按照先前所述进行防重放检查,并且如果失败则返回错误。
如果拒绝请求标志被设置为TRUE,则指令通过递增绑定解绑消耗计数器并且返回错误代码为REJECT_REQUESTED的失败响应,来推进防重放计数器。
然后,该指令使用设备解绑结构中记录的请求者ID和PASID来游走过与可信根指针链接的数据结构。如果遇到任何无效表条目,则该指令失败并且返回错误。如果PASID表条目与要从中移除该设备的TD不相关联,则该指令失败并且返回错误。
如果没有遇到失败,则指令将重游走该结构,并且在其游走过该结构时,其将PASID表条目标记为无效,并且将上下文结构条目标记为无效。
如果设备解绑结构将PASID标记为已释放,则该指令会游走过PASID跟踪器表,并且将PASID跟踪器条目标记为无效,并且清除为该PASID记录的TD ID。
通过TRUSTED_IOMMU_BAR中的TRUSTED_INVALIDATION_REGISTERS,该指令使得其中编程了可信根表的每个IOMMU中的IOMMU TLB以及中间上下文和分页结构缓存无效。
最后,该指令以原子方式递增绑定解绑消耗计数器。
TDDEVCTXMEMORYRECLAIM
此指令用于回收VMM分配的存储器,前提是该结构现在是空闲的,即,使用该结构的所有设备分配都已被移除。
输入参数:
-请求者ID
-PASID
-VMM密钥ID
输出参数:
-FREE_PTR
-FREE_SIZE
-状态——OK,FAIL
操作:
该指令的一个实施例首先使用请求者ID和PASID游走到其所能到达的最后一级。一旦其到达最后一级,它就扫描过该结构中的所有条目,以查看它们是否有效。如果任何条目有效,则该指令返回错误。如果所有条目都是空闲的,那么它就会将该结构与其父级解除链接。然后,该指令使用MOVDIR64微操作,使用由指令参数指定的VMM密钥ID将该结构初始化为0。该指令随后返回成功,并且在FREE_PTR中提供指向此结构的指针。在FREE_SIZE输出参数中提供被释放的结构的大小。
TDPASIDTRKRMEMORYRECLAIM
此指令被用于回收VMM为PASID跟踪器分配的存储器,如果该结构现在已空闲的话。
输入参数:
-PASID
-VMM密钥ID
输出参数:
-FREE_PTR
-状态——OK,FAIL
操作:
该指令的一个实施例首先使用PASID来游走到它在PASID跟踪器中能够到达的最后一级。一旦其到达最后一级,它就扫描过该结构中的所有条目,以查看它们是否有效。如果任何条目有效,则该指令返回错误。如果所有条目都是空闲的,那么它就会将该结构与其父级解除链接。然后,该指令使用MOVDIR64微操作,使用由指令参数指定的VMM密钥ID将该结构初始化为0。该指令随后返回成功,并且在FREE_PTR中提供指向此结构的指针。
TDCONFIGIOMMU
此指令用于利用CPU管理的设备上下文结构的根指针来配置平台中的IOMMU。VMM利用平台中的每个IOMMU的TRUSTED_IOMMU_BAR的地址来调用此指令。
CPU还将其中编程了TRUSTED_ROOT_PTR的所有IOMMU的TRUSTED_IOMMU_BAR记录到微代码私有存储器中。此数据随后被用于在设备上下文被移除时执行IOTLB无效。
输入参数:
-TRUSTED_IOMMU_BAR——包含TRUSTED_ROOT_PTR寄存器的MMIO范围的基地址
输出参数:
-状态——OK,FAIL
操作:
该指令的一个实施例使用微代码SAI在TRUSTED_IOMMU_BAR中写入TRUSTED_ROOT_PTR寄存器。
IOMMU操作的一个实施例:
当IOMMU接收到来自已认证设备的DMA事务时,它按照链路加密会话设置来验证封包,然后它检查头部中的“可信”位。如果可信位被清除,则按照当前的方式使用VMM建立的根指针进行处理。
如果“可信”位被设置,则IOMMU使用请求者ID、PASID和事务中的地址以及可信位来查找其上下文、PASID和IOTLB缓存。如果在IOTLB中有命中,则IOTLB中记录的物理地址和TD KID被发送到网格,以完成DMA事务。
如果存在错失,则IOMMU开始表游走。这个游走是通过可信设备上下文结构使用平台保留密钥ID——PKID完成的。一旦PASID表条目已被游走,IOMMU就有了指向第一级页表、第二级页表和TD密钥ID的指针。使用TD密钥ID来游走第一级和第二级页表。一旦确定了最终转译,IOTLB就被填充以转译后的物理地址以及设置了“可信”位的TD KID。然后将物理地址和TD KID发送到网格,以完成DMA事务。
根端口完成生成:
对于来自设备的非发布请求,比如存储器读取,当从存储器接收到数据时,根端口会向设备生成完成。如果完成是对可信请求的响应,则完成的头部中的可信位被设置以指示出这是可信的完成。
入队指令——ENQCMDU/ENQCMDS:
入队指令ENQCMDUS和ENQCMDS利用具有64字节写入原子性的非发布写入将例如图23所示的64字节命令入队到设备中的设备共享工作队列(Shared Work Queue,SWQ)。此命令的有效载荷携带为其提交工作的PASID 2301。
当从TD调用这些指令时,该指令将游走有效载荷中的PASID被指派到的PASID跟踪器结构。因此,从TD访客调用的入队指令要求PASID的身份映射,即,不执行访客PASID到主机PASID转译。如果在游走PASID跟踪器结构时出现错误,或者PASID没有被指派给TD,那么该指令会导致#GP故障。
用于基于角色的寄存器保护的装置和方法
本文描述的TDX IO扩展(TDX-IO)允许将设备和加速器包括在信任域(TD)中。被纳入TD的信任边界中的这种设备从而可以访问TD保密存储器,并且可对TD提供的数据进行计算。本文描述的TDX-IO的实施例使得TD能够使用具有低延时和高带宽的设备和加速器,同时支持标准IO虚拟化框架,例如单根IO虚拟化(Single-Root IO Virtualization,SR-IOV)。
TDX-IO的实施例基于现有的将设备直接指派到VM的能力,例如SR-IOV和地址转译服务(ATS),来建立TD VM。在TDX-IO中,VMM本身可能不受TD信任,因此一些TD被配置为基于TD使用的底层硬件作出信任决策。虽然不要求VMM被TD信任,但它仍像在非TDX-IO使用模式中一样,继续执行资源分配和系统管理功能,但其执行方式可对结果进行测试,并且如果可接受,则阻止其被改变,而不通知受影响的TD。因此,隐式信任VMM的“传统”虚拟机可以与系统中的TD共存。
在一个实施例中,可指派设备接口(Assignable Device Interface,ADI)是用于TDX-IO中的具备IO虚拟化能力的设备的指派单元。例如,ADI可以是整个设备或设备的逻辑部分(例如,非PF/VF功能、VF、或者VF的一部分)。
安全性模型和相关标准
TDX-IO安全性模型不要求VMM被TD信任。因此,支持硬件辅助I/O虚拟化(例如,SR-IOV)的设备要求安全性扩展,以确保所要求的虚拟化模型不允许或不要求TD信任边界之外的软件进行干预,以执行影响设备中的飞行或静止TD数据的保密性和/或完整性的操作。
作为示例,而非限制,存储在所指派的设备中的信任域数据、代码和执行状态必须受到保护,以防止未包括在TD的可信计算基础(TCB)中的固件、软件和/或硬件实体(例如其他TD和VMM)破坏其保密性。数据、代码和执行状态的完整性也必须针对这些实体得到保护。
TDX-IO架构概述
图24图示了具备TDX-IO能力的主机2460与具备可信执行环境(trustedexecution environment,TEE)-IO能力的设备2450通信的一个实施例。具备TDX-IO能力的主机2460可以是CPU,或者是支持TDX-IO的任何其他类型的处理器,图示为TDX模块2430。在一个实施例中,基线TDX-IO实现方式是在PCI-SIG可指派设备接口安全性协议(AssignableDevice Interface Security Protocol,ADISP)中指定的参考架构上构造的。
主机2460中的TDX模块2430为在主机上运行的TD 2440施行安全性策略和隔离机制。具备TEE-IO能力的设备2450上的设备安全性管理器(device security manager,DSM)2422是设备中的逻辑实体,它可由TDX模块2430准入到TD的TCB中并且在设备2450上施行安全性策略。DSM 2422的角色和要求由PCI-SIG ADISP定义。
通常,物理功能(physical function,PF)2420是ADI 2425的资源管理实体,并且由VMM 2401的PF驱动器2410经由设备接口配置2405进行管理。如图24中使用的模式编码所示,不要求VMM 2401和PF驱动器2410在TD的TCB中。VMM 2401使用PF 2420来配置ADI 2425,以便指派给TD。TDX-IO要求设备2450组织其硬件/软件接口,以使得PF 2420在其被TD使用时不可被用于影响ADI 2425的安全性。当被TDX模块2430请求时,设备2450能够锁定ADI2425的配置,这样,一旦TD已接受并且开始使用ADI,对ADI配置的任何修改就会被检测为恶意动作。设备被要求实现一种安全性架构,该架构保护TD数据的保密性和完整性,以防被PF 2420或指派给其他TD或VM的其他ADI篡改。
当使用暴露的链接时,如与设备2450上的PCIe IDE 2423通信耦合的主机2460上的PCIe IDE 2412所示,支持完整性和数据加密(integrity and data encryption,IDE)。使用选择性IDE流可通过允许中间交换机被排除在TCB之外,来最大限度地减少TCB和攻击面。对于直接连接到根端口的端点上游端口,PCIe事务级封包(transaction levelpacket,TLP)一旦在设备2423处或根端口处被解密和认证,就会变成明文,而主机2460上的TDX模块2430和设备2450上的DSM 2422实现的访问控制机制为TLP内容提供保密性和完整性,以对抗不在TD的TCB中的实体。IDE定义了T位(以下称为“IDE-T位”),其允许TLP的发源者指示出TLP与TD相关联。IDE-T位可被设备2450和IO桥2414(例如,IOMMU)使用来提供对TD指派的存储器和存储器映射的I/O寄存器的访问控制。
简而言之,设备安全性管理器(DSM)2422的一个实施例提供以下功能:
○认证设备身份并且执行测量报告
○在设备2450中配置IDE加密密钥。TDX模块2430使用IDE密钥管理协议向DSM2422提供用于初始配置和后续密钥刷新的密钥。
○锁定ADI 2425配置,报告ADI配置,将ADI 2425与TD 2440附接或脱离。
○实现访问控制和安全性机制,以将TD数据与不在TD的TCB中的实体隔离。
TDX模块2430的一个实施例提供以下功能:
○提供到VMM 2401(或主机OS)的接口,以便向TD指派存储器、CPU和ADI资源2425。
○实现安全性机制和访问控制(例如,IOMMU转译表,等等),以针对不在TD的TCB中的实体保护主机中的TD数据和执行状态的保密性和完整性。
○使用ADISP协议来管理要被TD 2440使用的ADI 2425的安全性状态。
○与DSM 2422一起确定IDE加密密钥并且调度密钥刷新。TDX模块2430将IDE加密密钥编程到主机根端口中,并且与DSM 2422通信,以便在设备2450中配置IDE加密密钥。
基于角色的寄存器保护
TDX-IO架构的一个实施例要求限制某些寄存器只能在平台上选择加入TDX-IO时由TDX模块2430写入。这种寄存器的列表包括但不限于:用于链路加密、完整性和设备加密(integrity and device encryption,IDE)以及流配置的PCIe根端口寄存器;PCIe根端口密钥配置寄存器;以及IOMMU中的寄存器,如果这些寄存器不受保护,就会成为安全性漏洞。
然而,这些寄存器不能被无条件限制为只能由TDX模块2430写入。例如,当选择退出TDX-IO时,这些寄存器必须可以被诸如OS/VMM 2401之类的其他系统组件写入和使用。
本发明的一个实施例通过在结构上定义新的发起者安全属性(securityattribute of initiator,“SAI”)编码来识别由TDX模块2430发源的事务(安全仲裁模式(Secure Arbitration Mode,“SEAM”)SAI),从而满足了这一要求。此外,一个实施例包括核心中的仅可由TDX模块2430写入(例如,经由SEAM)的逻辑处理器范围的模型特定寄存器(model-specific register,MSR),以启用/禁用存储器映射IO(memory-mapped IO,MMIO)和存储器映射配置(memory-mapped configuration,MMCFG)事务的SEAM SAI生成。在一种实现方式中,寄存器被安排到策略群组中,其中每个策略群组与不同类型事务的访问控制权限相关联,包括由TDX模块2430发起的那些。
作为示例而非限制,图25图示了一种实现方式,其中一组寄存器2511-2515与SAI策略群组2510相关联。在一个实施例中,诸如控制寄存器或片上表格之类的数据结构跟踪与每个策略群组相关联的寄存器。在图示的实施例中,控制策略寄存器2511被编程以与特定SAI相关联的SAI标识符值。当特定的SAI值被存储在控制策略寄存器2511中时,断言此SAI的代理2520-2521就有权修改策略群组2510的写入访问控制(write-access-control,WAC)寄存器2512。这样,当选择加入TDX-IO时,TDX模块2430就可以禁止来自OS/VMM 2401的写入访问。写入访问控制策略寄存器2512确定哪些代理2520-2521(基于它们可以生成的SAI)被允许写入该策略群组2460所覆盖的寄存器。
在一个实施例中,过滤逻辑被配置在每个结构端点中,以使得只有当事务作为被加密/完整性保护的事务到达时,SEAM SAI才能伴随事务一起。因此,可以检测并且防止带有SEAM SAI的事务的任何注入。虽然下文将在超级路径互连(Ultra Path Interconnect,UPI)端点的上下文中描述某些实施例,但本发明的基本原理可以在任何处理器互连上实现,包括点到点处理器互连和结构。
在一个实施例中,每个寄存器读取/写入事务与标识事务的发源者的SAI或安全性属性相关联。例如,如上所述,寄存器组2511-2515可以被安排在SAI策略群组2510中,其中每个策略群组具有写入访问控制(WAC)寄存器2512,该WAC寄存器确定哪些SAI被允许写入到该策略群组中的寄存器2511-2515。读取访问控制(read-access-control,RAC)寄存器2513中的值确定哪些SAI被允许从该策略群组中的寄存器读取,并且控制策略寄存器2511中的值确定哪些SAI被允许修改WAC寄存器2512和RAC寄存器2512(从而更改读取/写入访问控制)。
本发明的一个实施例定义了一种新的SAI编码,用于识别出事务是否发源于TDX模块2430中。为了支持SEAM SAI,CPU核心中的SAI生成逻辑被扩展如下:
IF SunPass Funny IO
SAI=HOST_IA_SUNPASS
ELSEIF FUNNY IO
SAI=HOST_IA_UCODE
ELSEIF BIOS_DONE[THREAD_ID]==0
SAI=HOST_IA_BOOT
ELSEIF EN_SEAM_SAI[THREAD_ID]//新的控制位
SAI=HOST_IA_SEAM
ELSEIF IN_SMM_MODE[THREAD_ID]
SAI=HOST_IA_SMM
ELSE
SAI=HOST_IA_POSTBOOT
ENDIF
在上述代码中,SAI编码标识了不同的SAI类型,例如包括主机微代码、启动代码、系统管理模式(system management mode,SMM)、启动后模式、以及SAI SEAM。每个SAI类型可在控制策略寄存器2511或写入访问控制寄存器2512中指定,以指示出SAI策略群组2510内的读取/写入权限。
在一个实施例中,EN_SEAM_SAI控制是由SEAM模式MSR(MSR_ENABLE_SEAM_SAI2550)驱动的每个逻辑处理器控制寄存器中的一个位。此MSR的一个实现方式定义了一个位——位0——该位当被设置(例如,设置为1)时,启用SEAM SAI生成,而当被清除(例如,清除为0)时,禁用SEAM SAI生成。在一个实施例中,此MSR中的所有其他位都被保留。
在一个实施例中,TDX模块2430使用SEAM SAI事务通过封装互连或系统互连来访问寄存器,例如VTBAR寄存器2670(虚拟化技术基地址寄存器)和KEY_CONFIG_BAR寄存器2671(密钥配置基地址寄存器)。这些寄存器可以是处理器的组成部分(在本地套接字中),或者可以位于远程套接字中(例如,位于同一系统上的不同处理器中)。如图25中所示,当它们在远程套接字中时,与事务相关联的SAI将通过互联2560来传达,在一个实施例中,该互联2560是UPI互联。
通常,UPI不支持安全SAI事务,例如SEAM SAI,而是将其降级为“设备非可信”。在一个实施例中,这种降级是有条件的,并且如果事务是在UPI加密的安全隧道上接收的,则允许该降级。因此,当本地套接字处理器需要发送带有SEAM SAI的事务时,它会通过UPI加密安全隧道发送这种事务。
在一个实现方式中,在PCIe根端口和/或IOMMU中使用以下寄存器定义了一种新的策略群组(这里称为SEAM_OS_W):
○用于链路加密、完整性和数据加密(IDE)以及流配置的PCIe根端口寄存器;
○PCIe根端口密钥配置寄存器;以及
○IOMMU中的寄存器,如果这些寄存器不受保护,就会成为安全性漏洞。
在一个实施例中,SEAM_OS_W写入访问控制寄存器2512的默认值允许TDX模块2430和OS/VMM 2401两者写入策略群组中的寄存器。控制策略寄存器2511中指示的SEAM_OS_W策略群组的控制策略包括SEAM SAI本身,从而使得其允许TDX模块2430使用SEAM SAI事务写入此策略群组的写入访问控制寄存器2512以移除OS/VMM 2401的写入权限。
TDX模块2430的一个实施例提供了到OS/VMM 2401的API,以便选择加入/退出TDX-IO。在一种实现方式中,当OS/VMM选择加入TDX-IO时,TDX模块2430对每个SEAM_OS_W策略群组执行以下操作来对寄存器进行写入保护:
1.使用MSR_ENABLE_SEAM_SAI启用SEAM SAI生成;
2.对于每个SEAM_OS_W策略群组,从该策略群组的写入访问控制寄存器2512中清除OS/VMM SAI;
3.使用MSR_ENABLE_SEAM_SAI禁用SEAM SAI生成。
当TDX模块2430需要修改受保护的寄存器以例如设置链路加密密钥时,TDX模块执行以下操作:
1.使用MSR_ENABLE_SEAM_SAI启用SEAM SAI生成;
2.写入受保护的寄存器;
3.使用MSR_ENABLE_SEAM_SAI禁用SEAM SAI生成。
图26图示了通过更新SEAM_OS_W策略群组的写入访问控制(WAC)寄存器2512来限制对受保护寄存器的写入的事务序列的一个实施例。在图26中的特定安排中,TDX模块2430对目标2650(例如PCIe根端口)上的WAC寄存器2653执行更新。在2614,TDX模块2430发起对远程OS/VMM SAI的写入事务。在2616,TDX模块2430可通过更新MSR_ENABLE_SEAM_SAI寄存器来禁用SEAM SAI。
本地网格2620上的归属代理设置网格上的本地变量is_tdx=1,并且生成到本地UPI套接字2630的写入WAC命令。在2632,本地套接字UPI端点2630检查is_tdx=1以及UPI安全隧道已建立。如上所述,在一个实施例中,只有在通过UPI加密安全隧道接收到事务时,才允许通过UPI进行SEAM SAI事务。如果任一条件未满足,则会生成机器检查操作或异常。
如果成功,则本地套接字UPI端点2630将带有指定参数(SAI=SEAM_SAI,is_tdx=1)的写入WAC命令发送到远程套接字UPI端点2640,该端点2640在2642处验证该命令是经由UPI安全隧道接收的SEAM_SAI命令。如果不是,则在2643,将该命令降级为非可信SAI。如果是通过安全隧道接收的,那么在2652,目标IP(例如,目标PCIe根端口)2650确定(例如,在控制策略寄存器中指定的)当前控制策略中是否指示了指定的SAI。如果没有,则中止该事务。如果是,则在2653处更新WAC寄存器。
图27图示了用于写入到受保护寄存器的事务序列的一个实施例。在图27中的特定实施例中,在经由MSR_ENABLE_SEAM_SAI寄存器启用SEAM SAI之后,在2714,TDX模块2430对受保护寄存器执行写入操作(写入<寄存器>)。随后,TDX模块2430可在2616处经由MSR_ENABLE_SEAM_SAI寄存器来禁用SEAM SAI。
在2722,本地网格2620上的归属代理在确认命令发源自TDX模块2430之后,在本地网格上设置is_tdx=1。本地网格2620上的归属代理设置网格上的本地变量is_tdx=1,并且生成到本地UPI套接字2630的写入WAC命令。在2732,本地套接字UPI端点2630检查is_tdx=1以及UPI安全隧道已建立。如前所述,在一些实现方式,只有在通过UPI加密安全隧道接收到事务时,才允许SEAM SAI事务。如果任一条件未满足,则会生成机器检查操作或异常。
如果成功,则本地套接字UPI端点2630将带有指定参数(SAI=SEAM_SAI,is_tdx=1)的写入<寄存器>命令发送到远程套接字UPI端点2640,该端点2640在2742处验证该命令是经由UPI安全隧道接收的SEAM SAI命令。如果不是,则在2643,将该命令降级为非可信SAI。如果是通过安全隧道接收的,那么在2752,目标IP(例如,目标PCIe根端口)2650确定(例如,在控制策略寄存器中指定的)当前控制策略中是否指示了指定的SAI。如果没有,则中止该事务。如果是,则在2753,更新SAI策略群组中的指定寄存器(如<寄存器>所示)。
在前述说明书中,已参考本发明的具体示范性实施例描述了本发明的实施例。然而,很明显,在不脱离如所附权利要求所记载的本发明的更宽精神和范围的情况下,可对其进行各种修改和改变。因此,说明书和附图应当被认为是示例性的,而不是限制性的。
为任何装置描述的组件、特征和细节也可以可选地适用于任何方法,在实施例中,这些方法可以由这样的装置执行和/或利用这样的装置来执行。本文描述的任何处理器可被包括在本文公开的任何系统中。在一些实施例中,计算机系统可以包括互连、与互连耦合的处理器、以及与互连耦合的动态随机访问存储器(dynamic random access memory,DRAM)。或者,取代DRAM,可以使用不需要刷新的其他类型的易失性存储器,或者可以使用闪存。
在说明书和/或权利要求中,可能使用了术语“耦合”和/或“连接”及其衍生词。这些术语并不打算是彼此的同义词。更确切地说,在实施例中,“连接”可用于指示出两个或更多个元素与彼此发生直接的物理和/或电气接触。“耦合”的意思可以是两个或更多个元素与彼此发生直接的物理和/或电气接触。然而,“耦合”也可以指两个或更多个元素没有与彼此发生直接接触,但仍与彼此合作或交互。例如,执行单元可以通过一个或多个居间组件与寄存器和/或解码单元耦合。在附图中,箭头被用来显示连接和耦合。
可能使用了术语“和/或”。如本文所使用的,术语“和/或”指的是一个或另一个或两者(例如,A和/或B指的是A或B或者A和B两者)。
在以上描述中,阐述了许多具体细节以便提供对实施例的透彻理解。然而,没有这些具体细节中的一些也可以实现其他实施例。本发明的范围不是由上面提供的具体示例决定的,而只是由所附权利要求书决定。在其他情况下,以框图形式和/或没有细节地示出了公知的电路、结构、设备和操作,以避免模糊对描述的理解。在认为适当时,标号或标号的末端部分在图中重复出现,以指示对应或类似的元素,这些元素可以可选地具有类似或相同的特性,除非另有规定或者明显可见。
某些操作可由硬件组件执行,或者可体现在机器可执行或电路可执行的指令中,这些指令可用于引起和/或导致用这些指令编程的机器、电路或硬件组件(例如,处理器、处理器的一部分、电路等等)执行这些操作。这些操作也可以可选地由硬件和软件的组合来执行。处理器、机器、电路或硬件可以包括具体或特定的电路或其他逻辑(例如,可能与固件和/或软件相结合的硬件),可操作来执行和/或处理指令并且存储响应于指令的结果。
一些实施例包括包含机器可读介质的制造品(例如,计算机程序产品)。该介质可以包括一种机制,该机制以机器可读的形式提供信息,例如存储信息。机器可读介质可提供或在其上存储指令或指令序列,该指令或指令序列如果被机器执行和/或在被机器执行时,可运作来使得机器执行和/或导致机器执行本文公开的一个或多个操作、方法或技术。
在一些实施例中,机器可读介质可以包括非暂态机器可读存储介质。例如,非暂态机器可读存储介质可以包括软盘、光存储介质、光盘、光数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(read only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除可编程ROM(erasable-and-programmable ROM,EPROM)、电可擦除可编程ROM(electrically-erasable-and-programmable ROM,EEPROM)、随机访问存储器(random access memory,RAM)、静态RAM(static-RAM,SRAM)、动态RAM(dynamic-RAM,DRAM)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂态存储器、非暂态数据存储设备,等等。非暂态机器可读存储介质不包括暂态的传播信号。在一些实施例中,存储介质可以包括包含固态物质的有形介质。
适当机器的示例包括但不限于通用处理器、专用处理器、数字逻辑电路、集成电路,等等。适当机器的其他示例包括计算机系统或其他电子设备,其中包括处理器、数字逻辑电路或集成电路。这种计算机系统或电子设备的示例包括但不限于桌面型计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动互联网设备(Mobile Internet device,MID)、媒体播放器、智能电视、上网电脑、机顶盒、以及视频游戏控制器。
本说明书中各自提及例如“一个实施例”、“一实施例”、“一个或多个实施例”、“一些实施例”,表明在本发明的实践中可以包括特定的特征,但不一定要求必须包括。类似地,在说明书中,有时会将各种特征一起集合在单个实施例、附图或者对其的描述中,以便简化公开内容并且帮助理解各种创造性方面。然而,这种公开方法不应被解释为反映了如下意图:本发明需要比每个权利要求中明确记载的更多的特征。更确切地说,如所附权利要求反映的,创造性方面存在于单个公开实施例的少于全部特征中。因此,特此将“具体实施方式”部分后的权利要求并入到本“具体实施方式”部分中,其中每个权利要求独立作为本发明的一个单独的实施例。
示例
以下是本发明的不同实施例的示例实现方式。
示例1.一种装置,包括:一个或多个处理器核心,用于执行指令和进程数据,所述一个或多个处理器核心执行一个或多个安全性指令以针对虚拟机监视器(VMM)或操作系统(OS)保护虚拟机或可信应用;互连结构,用于将所述一个或多个处理器核心耦合到设备;以及安全性硬件逻辑,用于确定是否允许针对受保护寄存器的读取或写入事务通过所述互连结构继续进行,所述安全性硬件逻辑用于评估与所述事务的发起者相关联的一个或多个安全性属性以作出所述确定。
示例2.根据示例1所述的装置,其中,所述受保护寄存器是策略群组的多个寄存器之一,所述策略群组包括一个或多个控制寄存器以将读取和/或写入权限与一个或多个发起者相关联。
示例3.根据示例2所述的装置,其中,所述一个或多个控制寄存器包括:策略控制寄存器,用于存储发起者标识符(ID)值以标识当前有权限写入到所述策略群组的一个或多个其他控制寄存器的发起者。
示例4.根据示例3所述的装置,其中,所述一个或多个其他控制寄存器包括写入访问控制(WAC)寄存器,所述WAC寄存器用于存储对当前被允许写入到所述策略群组中的寄存器的发起者的指示。
示例5.根据示例1所述的装置,还包括:耦合到所述互连结构并且与所述一个或多个处理器核心相关联的第一结构端点;以及耦合到所述互连结构并且与所述设备相关联的第二端点,其中,所述安全性硬件逻辑是所述第一端点和/或第二端点的组成部分。
示例6.根据示例3所述的装置,其中,所述发起者ID值包括发起者安全性属性(SAI)编码。
示例7.根据示例4所述的装置,其中,所述发起者包括与第一发起者ID相关联的可信域扩展(TDX)模块或者与第二发起者ID相关联的虚拟机监视器(VMM)或操作系统(OS)。
示例8.根据示例7所述的装置,其中,当所述第一发起者ID被存储在所述策略控制寄存器中时,与所述TDX模块相关联的第一代理具有更新所述WAC寄存器的权限,当所述第二发起者ID被存储在所述策略控制寄存器中时,与所述VMM或OS相关联的第二代理具有更新所述WAC寄存器的权限。
示例9.一种方法,包括:在一个或多个处理器核心上执行指令和处理数据,所述一个或多个处理器核心执行一个或多个安全性指令以针对虚拟机监视器(VMM)或操作系统(OS)保护虚拟机或可信应用;由与所述一个或多个处理器核心之一相关联的发起者生成读取或写入事务,该读取或写入事务是针对受保护寄存器、通过互连结构进行的;评估与所述事务的发起者相关联的一个或多个安全性属性;并且基于评估确定是否允许所述读取或写入事务通过所述互连结构继续进行。
示例10.根据示例9所述的方法,其中,所述受保护寄存器是策略群组的多个寄存器之一,所述策略群组包括一个或多个控制寄存器以将读取和/或写入权限与一个或多个发起者相关联。
示例11.根据示例10所述的方法,其中,所述一个或多个控制寄存器包括策略控制寄存器,所述方法包括:将发起者标识符(ID)值存储在所述策略控制寄存器中以标识当前有权限写入到所述策略群组的一个或多个其他控制寄存器的发起者。
示例12.根据示例11所述的方法,其中,所述一个或多个其他控制寄存器包括写入访问控制(WAC)寄存器,所述WAC寄存器用于存储对当前被允许写入到所述策略群组中的寄存器的发起者的指示。
示例13.根据示例9所述的方法,其中,第一结构端点耦合到所述互连结构并且与所述一个或多个处理器核心相关联;并且第二结构端点耦合到所述互连结构并且与所述设备相关联,所述第一端点和/或第二端点执行以下操作:评估所述一个或多个安全性属性,并且确定是否允许所述读取或写入事务。
示例14.根据示例11所述的方法,其中,所述发起者ID值包括发起者安全性属性(SAI)编码。
示例15.根据示例12所述的方法,其中,所述发起者包括:与第一发起者ID相关联的可信域扩展(TDX)模块,或者与第二发起者ID相关联的虚拟机监视器(VMM)或操作系统(OS)。
示例16.根据示例15所述的方法,其中,当所述第一发起者ID被存储在所述策略控制寄存器中时,与所述TDX模块相关联的第一代理具有更新所述WAC寄存器的权限,当所述第二发起者ID被存储在所述策略控制寄存器中时,与所述VMM或OS相关联的第二代理具有更新所述WAC寄存器的权限。
示例17.一种机器可读介质,其上存储有程序代码,所述程序代码当被机器执行时,使得所述机器执行以下操作:在一个或多个处理器核心上执行指令和处理数据,所述一个或多个处理器核心执行一个或多个安全性指令以针对虚拟机监视器(VMM)或操作系统(OS)保护虚拟机或可信应用;由与所述一个或多个处理器核心之一相关联的发起者生成读取或写入事务,该读取或写入事务是针对受保护寄存器、通过互连结构进行的;评估与所述事务的发起者相关联的一个或多个安全性属性;并且基于评估确定是否允许所述读取或写入事务通过所述互连结构继续进行。
示例18.根据示例17所述的机器可读介质,其中,所述受保护寄存器是策略群组的多个寄存器之一,所述策略群组包括一个或多个控制寄存器以将读取和/或写入权限与一个或多个发起者相关联。
示例19.根据示例18所述的机器可读介质,其中,所述一个或多个控制寄存器包括策略控制寄存器,所述机器可读介质包括程序代码,以引起以下附加操作:将发起者标识符(ID)值存储在所述策略控制寄存器中以标识当前有权限写入到所述策略群组的一个或多个其他控制寄存器的发起者。
示例20.根据示例19所述的机器可读介质,其中,所述一个或多个其他控制寄存器包括写入访问控制(WAC)寄存器,所述WAC寄存器用于存储对当前被允许写入到所述策略群组中的寄存器的发起者的指示。
示例21.根据示例17所述的机器可读介质,其中,第一结构端点耦合到所述互连结构并且与所述一个或多个处理器核心相关联;并且第二结构端点耦合到所述互连结构并且与所述设备相关联,所述第一端点和/或第二端点执行以下操作:评估所述一个或多个安全性属性,并且确定是否允许所述读取或写入事务。
示例22.根据示例19所述的机器可读介质,其中,所述发起者ID值包括发起者安全性属性(SAI)编码。
示例23.根据示例20所述的机器可读介质,其中,所述发起者包括:与第一发起者ID相关联的可信域扩展(TDX)模块,或者与第二发起者ID相关联的虚拟机监视器(VMM)或操作系统(OS)。
示例24.根据示例18所述的机器可读介质,其中,当所述第一发起者ID被存储在所述策略控制寄存器中时,与所述TDX模块相关联的第一代理具有更新所述WAC寄存器的权限,当所述第二发起者ID被存储在所述策略控制寄存器中时,与所述VMM或OS相关联的第二代理具有更新所述WAC寄存器的权限。
本发明的实施例可以包括各种步骤,这些步骤已在上文描述。这些步骤可体现在机器可执行指令中,这些机器可执行指令可用于使得通用或专用处理器执行这些步骤。或者,这些步骤可由包含用于执行这些步骤的硬连线逻辑的特定硬件组件执行,或者由编程的计算机组件和定制硬件组件的任意组合执行。
如本文所述,指令可以指被配置为执行某些操作或者具有预定功能的诸如专用集成电路(application specific integrated circuit,ASIC)之类的硬件或者存储在体现在非暂态计算机可读介质中的存储器中的软件指令的特定配置。因此,附图中示出的技术可利用在一个或多个电子设备(例如,终端站、网络元件,等等)上存储和执行的代码和数据来实现。这种电子设备利用计算机机器可读介质来存储并传达(在内部和/或通过网络与其他电子设备)代码和数据,其中计算机机器可读介质例如是非暂态计算机机器可读存储介质(例如,磁盘;光盘;随机访问存储器;只读存储器;闪存设备;相变存储器)和暂态计算机机器可读通信介质(例如,电的、光的、声的或者其他形式的传播信号——例如载波、红外信号、数字信号,等等)。此外,这种电子设备通常包括一组一个或多个处理器,这些处理器耦合到一个或多个其他组件,例如一个或多个存储设备(非暂态机器可读存储介质)、用户输入/输出设备(例如,键盘、触摸屏和/或显示器)、以及网络连接。该组处理器和其他组件的耦合通常是通过一个或多个总线和桥接器(也称为总线控制器)。存储设备和携带网络流量的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子设备的存储设备通常存储代码和/或数据来在该电子设备的该组一个或多个处理器上执行。当然,本发明的实施例的一个或多个部分可利用软件、固件和/或硬件的不同组合来实现。
在此详细描述各处,出于说明目的,记载了许多具体细节以便提供对本发明的透彻理解。然而,本领域技术人员将会清楚,没有这些具体细节中的一些也可实现本发明。在某些情况中,没有详尽地描述公知的结构和功能,以避免模糊本发明的主题。因此,本发明的范围和精神应当按照所附权利要求来判断。
Claims (24)
1.一种装置,包括:
一个或多个处理器核心,用于执行指令和进程数据,所述一个或多个处理器核心执行一个或多个安全性指令以针对虚拟机监视器(VMM)或操作系统(OS)保护虚拟机或可信应用;
互连结构,用于将所述一个或多个处理器核心耦合到设备;以及
安全性硬件逻辑,用于确定是否允许针对受保护寄存器的读取或写入事务通过所述互连结构继续进行,所述安全性硬件逻辑用于评估与所述事务的发起者相关联的一个或多个安全性属性以作出所述确定。
2.根据权利要求1所述的装置,其中,所述受保护寄存器是策略群组的多个寄存器之一,所述策略群组包括一个或多个控制寄存器以将读取和/或写入权限与一个或多个发起者相关联。
3.根据权利要求2所述的装置,其中,所述一个或多个控制寄存器包括:
策略控制寄存器,用于存储发起者标识符(ID)值以标识当前有权限写入到所述策略群组的一个或多个其他控制寄存器的发起者。
4.根据权利要求3所述的装置,其中,所述一个或多个其他控制寄存器包括写入访问控制(WAC)寄存器,所述WAC寄存器用于存储对当前被允许写入到所述策略群组中的寄存器的发起者的指示。
5.根据权利要求1所述的装置,还包括:
第一结构端点,耦合到所述互连结构并且与所述一个或多个处理器核心相关联;以及
第二端点,耦合到所述互连结构并且与所述设备相关联,其中,所述安全性硬件逻辑是所述第一端点和/或第二端点的组成部分。
6.根据权利要求3所述的装置,其中,所述发起者ID值包括发起者安全性属性(SAI)编码。
7.根据权利要求4所述的装置,其中,所述发起者包括:与第一发起者ID相关联的可信域扩展(TDX)模块,或者与第二发起者ID相关联的虚拟机监视器(VMM)或操作系统(OS)。
8.根据权利要求7所述的装置,其中,当所述第一发起者ID被存储在所述策略控制寄存器中时,与所述TDX模块相关联的第一代理具有更新所述WAC寄存器的权限,当所述第二发起者ID被存储在所述策略控制寄存器中时,与所述VMM或OS相关联的第二代理具有更新所述WAC寄存器的权限。
9.一种方法,包括:
在一个或多个处理器核心上执行指令和处理数据,所述一个或多个处理器核心执行一个或多个安全性指令以针对虚拟机监视器(VMM)或操作系统(OS)保护虚拟机或可信应用;
由与所述一个或多个处理器核心之一相关联的发起者生成读取或写入事务,所述读取或写入事务是针对受保护寄存器、通过互连结构进行的;
评估与所述事务的发起者相关联的一个或多个安全性属性;并且
基于评估确定是否允许所述读取或写入事务通过所述互连结构继续进行。
10.根据权利要求9所述的方法,其中,所述受保护寄存器是策略群组的多个寄存器之一,所述策略群组包括一个或多个控制寄存器以将读取和/或写入权限与一个或多个发起者相关联。
11.根据权利要求10所述的方法,其中,所述一个或多个控制寄存器包括策略控制寄存器,所述方法包括:
将发起者标识符(ID)值存储在所述策略控制寄存器中以标识当前有权限写入到所述策略群组的一个或多个其他控制寄存器的发起者。
12.根据权利要求11所述的方法,其中,所述一个或多个其他控制寄存器包括写入访问控制(WAC)寄存器,所述WAC寄存器用于存储对当前被允许写入到所述策略群组中的寄存器的发起者的指示。
13.根据权利要求9所述的方法,其中,第一结构端点耦合到所述互连结构并且与所述一个或多个处理器核心相关联;并且第二结构端点耦合到所述互连结构并且与所述设备相关联,所述第一端点和/或第二端点执行以下操作:评估所述一个或多个安全性属性,并且确定是否允许所述读取或写入事务。
14.根据权利要求11所述的方法,其中,所述发起者ID值包括发起者安全性属性(SAI)编码。
15.根据权利要求12所述的方法,其中,所述发起者包括:与第一发起者ID相关联的可信域扩展(TDX)模块,或者与第二发起者ID相关联的虚拟机监视器(VMM)或操作系统(OS)。
16.根据权利要求15所述的方法,其中,当所述第一发起者ID被存储在所述策略控制寄存器中时,与所述TDX模块相关联的第一代理具有更新所述WAC寄存器的权限,当所述第二发起者ID被存储在所述策略控制寄存器中时,与所述VMM或OS相关联的第二代理具有更新所述WAC寄存器的权限。
17.一种机器可读介质,其上存储有程序代码,所述程序代码当被机器执行时,使得所述机器执行以下操作:
在一个或多个处理器核心上执行指令和处理数据,所述一个或多个处理器核心执行一个或多个安全性指令以针对虚拟机监视器(VMM)或操作系统(OS)保护虚拟机或可信应用;
由与所述一个或多个处理器核心之一相关联的发起者生成读取或写入事务,所述读取或写入事务是针对受保护寄存器、通过互连结构进行的;
评估与所述事务的发起者相关联的一个或多个安全性属性;并且
基于评估确定是否允许所述读取或写入事务通过所述互连结构继续进行。
18.根据权利要求17所述的机器可读介质,其中,所述受保护寄存器是策略群组的多个寄存器之一,所述策略群组包括一个或多个控制寄存器以将读取和/或写入权限与一个或多个发起者相关联。
19.根据权利要求18所述的机器可读介质,其中,所述一个或多个控制寄存器包括策略控制寄存器,所述机器可读介质包括程序代码,以引起以下附加操作:
将发起者标识符(ID)值存储在所述策略控制寄存器中以标识当前有权限写入到所述策略群组的一个或多个其他控制寄存器的发起者。
20.根据权利要求19所述的机器可读介质,其中,所述一个或多个其他控制寄存器包括写入访问控制(WAC)寄存器,所述WAC寄存器用于存储对当前被允许写入到所述策略群组中的寄存器的发起者的指示。
21.根据权利要求17所述的机器可读介质,其中,第一结构端点耦合到所述互连结构并且与所述一个或多个处理器核心相关联;并且第二结构端点耦合到所述互连结构并且与所述设备相关联,所述第一端点和/或第二端点执行以下操作:评估所述一个或多个安全性属性,并且确定是否允许所述读取或写入事务。
22.根据权利要求19所述的机器可读介质,其中,所述发起者ID值包括发起者安全性属性(SAI)编码。
23.根据权利要求20所述的机器可读介质,其中,所述发起者包括:与第一发起者ID相关联的可信域扩展(TDX)模块,或者与第二发起者ID相关联的虚拟机监视器(VMM)或操作系统(OS)。
24.根据权利要求18所述的机器可读介质,其中,当所述第一发起者ID被存储在所述策略控制寄存器中时,与所述TDX模块相关联的第一代理具有更新所述WAC寄存器的权限,当所述第二发起者ID被存储在所述策略控制寄存器中时,与所述VMM或OS相关联的第二代理具有更新所述WAC寄存器的权限。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/485,421 US20230098288A1 (en) | 2021-09-25 | 2021-09-25 | Apparatus and method for role-based register protection for tdx-io |
US17/485,421 | 2021-09-25 | ||
PCT/US2022/041429 WO2023048886A1 (en) | 2021-09-25 | 2022-08-24 | Apparatus and method for role-based register protection for tdx-io |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117730312A true CN117730312A (zh) | 2024-03-19 |
Family
ID=85718451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280047201.XA Pending CN117730312A (zh) | 2021-09-25 | 2022-08-24 | 用于对tdx-io的基于角色的寄存器保护的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230098288A1 (zh) |
CN (1) | CN117730312A (zh) |
TW (1) | TW202314484A (zh) |
WO (1) | WO2023048886A1 (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5914145B2 (ja) * | 2012-05-01 | 2016-05-11 | ルネサスエレクトロニクス株式会社 | メモリ保護回路、処理装置、およびメモリ保護方法 |
US10243746B2 (en) * | 2017-02-27 | 2019-03-26 | Red Hat, Inc. | Systems and methods for providing I/O state protections in a virtualized environment |
US20190004978A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | Security role identifier pools allocation |
US11126453B2 (en) * | 2019-03-07 | 2021-09-21 | Micron Technology, Inc. | Protected regions management of memory |
US11599621B2 (en) * | 2019-03-30 | 2023-03-07 | Intel Corporation | Apparatuses, methods, and systems for verification of input-output memory management unit to device attachment |
US20210141658A1 (en) * | 2020-11-11 | 2021-05-13 | Ravi Sahita | Method and apparatus for trusted devices using trust domain extensions |
-
2021
- 2021-09-25 US US17/485,421 patent/US20230098288A1/en active Pending
-
2022
- 2022-07-11 TW TW111125959A patent/TW202314484A/zh unknown
- 2022-08-24 CN CN202280047201.XA patent/CN117730312A/zh active Pending
- 2022-08-24 WO PCT/US2022/041429 patent/WO2023048886A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
TW202314484A (zh) | 2023-04-01 |
US20230098288A1 (en) | 2023-03-30 |
WO2023048886A1 (en) | 2023-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3629540B1 (en) | Apparatus and method for secure memory access using trust domains | |
US11934843B2 (en) | Secure arbitration mode to build and operate within trust domain extensions | |
EP3657378B1 (en) | Providing isolation in virtualized systems using trust domains | |
EP3671515B1 (en) | Method and apparatus for trust domain creation and destruction | |
US11748146B2 (en) | Scalable virtual machine operation inside trust domains within the trust domain architecture | |
US20220197995A1 (en) | Device, system and method to efficiently update a secure arbitration mode module | |
TW201633203A (zh) | 裝置與安全處理環境之間的介面 | |
US10705976B2 (en) | Scalable processor-assisted guest physical address translation | |
TW202242658A (zh) | 在可信區域中執行共享虛擬記憶體的設備與方法 | |
US20230098288A1 (en) | Apparatus and method for role-based register protection for tdx-io | |
EP4202702A1 (en) | Method and apparatus to set guest physical address mapping attributes for trusted domain | |
US20240061697A1 (en) | Providing trusted devices fine grained access into private memory of trusted execution environment | |
US20240220666A1 (en) | Hardware access control at software domain granularity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |