首页> 中国专利> 使用安全堡垒提高云可用性和硅隔离的方法

使用安全堡垒提高云可用性和硅隔离的方法

摘要

利用安全堡垒来提高云可用性和硅隔离的方法和装置。计算平台被配置为托管计算域,在计算域中实现了多个安全堡垒。与创建和部署安全堡垒相结合地生成映射信息,所述映射信息将所述安全堡垒映射到平台/CPU资源,诸如属于所述安全堡垒的知识产权块(IP)。响应于由于错误平台/CPU资源引起的平台错误事件,经由映射信息识别属于错误平台/CPU的安全堡垒,并且将中断指向该/那些安全堡垒。响应于中断,安全堡垒可被配置为下列中的一项或多项:处置错误、将信息传递给另一安全堡垒以及拆除安全堡垒。安全堡垒可以执行在不将整个平台或CPU复位的情况下使错误平台/CPU资源复位的中断服务例程(当适用时)。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-28

    授权

    授权

  • 2017-09-01

    实质审查的生效 IPC(主分类):G06F21/53 申请日:20161122

    实质审查的生效

  • 2017-08-08

    公开

    公开

说明书

背景技术

在过去十年里,所谓的“云托管(cloud-hosted)”服务的使用有了巨大的增长。这些服务的示例包括由微软(Hotmail/Outlook online)、谷歌(gmail)和雅虎(Yahoo mail)提供的电子邮件服务、如Microsoft Office 365和Google Docs的生产力应用以及如Amazon Web Services(AWS)和Elastic Compute Cloud(EC2)和Microsoft Azure的Web服务平台。云托管服务通常利用具有极大量的计算资源的数据中心来实现,所述数据中心实现于各种类型的服务器的机架中,所述服务器例如填充有服务器刀片和/或模块的刀片服务器以及其它类型的服务器配置(例如,1U,2U,和4U服务器)。

对于服务器OEM(原始设备制造商)和CSP(云服务提供商)两者的关键度量是可靠性、可用性和可服务性(RAS)。虽然RAS是由IBM首先使用来定义其主机的规范且最初应用于硬件,但是在当今的数据中心中RAS也应用于软件和网络。

服务器OEM和CSP已经持续地表明,硬件RAS处置需要继续在系统弹性上改善。在当今的虚拟化环境中,多个虚拟机(VM)运行于具有多个核的主机处理器上,使得每个VM托管由一个或多个服务(或者与这些服务相关联的应用/过程)组成的组。在处理器故障而需要复位的情形下,所导致的主机可用性(host availability)的丢失可能应用于数十个服务,代表了显著的成本。具体地,当硅(即,处理器硬件)看到不可校正的错误时,其将发信号通知机器校验,且通常以PCC=1(处理器上下文损坏)来记录错误。这样的错误要求硅被复位,从而硅正确地运作。在当前方法下,这有必要停下(take down)运行于处理器上的任何软件,包括全部的VM以及因此由VM所托管的全部基于软件的服务。

然而,另一方面,硬件进步包括对与弹性有关的各种特征的支持,诸如增强机器校验、固件优先处置错误以及存储器中毒等,从而确保较高层级的可用性(系统可用时间)和可服务性。虽然这些进步是值得注意的,但是OEM和CSP将使得能够以比当今目前可用的更大的方式来利用这些能力。

附图说明

通过参考下面的具体实施方式并结合附图,本发明的前述方面和许多伴随的优点将变得更容易理解,其中相同的附图标记贯穿各附图表示相同的部件,除非另有规定。

图1是示出物理和虚拟存储器中的安全堡垒(secure enclave)的位置以及用于安全堡垒的示范性的一组组件的的示意图;

图2是示出高层级SGX硬件和软件架构的示意图;

图3是示出与堡垒和非堡垒存储器访问有关的操作和逻辑的流程图;

图4a是示出其中实现多个安全堡垒的示范性的计算平台和计算域的示意图;

图4b是示出了根据一个实施例的、支持在不必将整个计算平台复位的情况下从平台错误中恢复的、图4a的计算平台的扩增版本的示意图;

图5是示出根据一个实施例响应于平台错误事件而通过托管有一个或多个安全堡垒的计算平台执行的操作和逻辑的流程图;

图6是示出实现多个安全堡垒的计算平台和计算域的示意图,进一步图示出IP和计算平台上的组件与IP和组件所属于的安全堡垒之间的映射。

具体实施方式

本文描述了利用安全堡垒来提高云可用性和硅隔离的方法和装置的实施例。在下面的说明中,阐述了若干具体的细节来提供对本发明的实施例的全面理解。然而,本领域技术人员将认识到,本发明可以在没有一个或多个具体的细节或者利用其它方法、组件、材料等的情况下来实现。在其它实例中,为避免使本发明的方面模糊,没有详细示出或描述公知的结构、材料或操作。

在本说明书全文提到“一个实施例”或“实施例”意指与该实施例相结合所描述的特定的特征、结构或特性包含在本发明的至少一个实施例中。因此,在本说明书各处出现的措辞“在一个实施例中”或者“在实施例中”不一定都是指同一实施例。此外,特定的特征、结构或特性可以在一个或多个实施例中以任何适合的方式来组合。

为了清晰,本文图中的个体组件还可以由它们在图中的标记来指代,而不是由特定的附图标号来指代。另外,是指特定类型的组件(与特定组件不同)的附图标号可以后跟意指“典型的”的附图标号“(typ)”来示出。将理解的是,这些组件的配置将典型代表可以存在但是为简化和清晰起见而在附图中没有示出的相似组件或者没有用单独的附图标号所标示的其他方面的相似组件。相反,“(typ)”不应解释为意指组件、元件等被典型地用于其公开的功能、实现、目的等。

近期,公司公布了描述Software Guard Extensions(SGX)的文档,SGX是用于存储器访问的一组指令和机制,添加到未来架构处理器中。SGX可以涵盖两个指令扩展集合,称为SGX1和SGX2。SGX1扩展允许应用将受保护的容器实例化,称为“堡垒(enclave)”。

堡垒是应用的地址空间中的受保护区域(参见图1),其即使在特权恶意软件存在的情况下也提供机密性和完整性。来自不驻留于堡垒中的任何软件对堡垒存储器区域的访问被阻止。SGX2扩展允许在堡垒内的对于堡垒资源和线程执行的运行期(runtime)管理的额外的灵活性。

SGX当在服务器环境中使用时是一种旨在确保用户的被托管在云中的应用是安全的以免于审视(inspection)、损坏(corruption)等的技术。问题在于,在RAS(例如,错误)事件中如何借助于与对虚拟化和共享系统资源的OEM和CSP管理相耦合的那些系统资源来使用服务器(how servers are used with virtualization and sharing systemresources coupled with OEM and CSP management of those system resources inRAS(e.g.error)events)。

SGX和RAS要求不一致,因为SGX的使命是通过如有必要则将系统关停(bringdown)从而一直保护客户的堡垒,而CSP/OEM的使命是将可用时间(uptime)最大化。本文所描述的实施例解决了这两个担忧,使得能够在不停下(take down)整个服务器的情况下将已故障的/将要故障的硬件选择性地复位。到目前为止Intel的RAS主题是允许对硬件&硅有理解的CSP/OEM来尝试校正根本问题(underlying problem),以增进系统可用时间。

根据第一方法,扩展被添加到SGX架构中以使运行于安全堡垒中的或者与安全堡垒相关联的软件能够辅助处置RAS事件,诸如不可校正的或致命的错误事件。如下文进一步详述,提供了一种机制用于创建新的RAS层级,其显现出以堡垒的所有者为目标的堡垒层级RAS特征。更特别地,堡垒将有机会以堡垒所有者认为适当的方式来处置错误事件。这可以包括WLOG(不失一般性)、关停堡垒、处置对OEM/CSP平台或OS码的控制、在换手(handoff)前清除安全信息,等等。

为了对实现环境进行更好的理解,现在论述对选定的SGX特征和架构的简要论述。

SGX允许应用的受保护部分不受阻碍地分布。在堡垒被构建之前,堡垒代码和数据被自由地用于检验和分析。受保护部分被加载到堡垒中,在此处测量其代码和数据。一旦应用的代码和数据被加载到堡垒中,其将受保护而免于被任何外部软件访问。应用能够向远程方证实其身份且被安全地提供密钥和证书。应用还可以请求堡垒&平台特定密钥,其能够被该应用用来保护该应用希望存储在堡垒之外的密钥和数据。

图1示出了平台的虚拟地址空间100的存储器布局,包括操作系统(OS)102、堡垒104、应用堆栈106和应用代码108。堡垒104虚拟存储器被映射到物理存储器112的受保护区域110。堡垒104被进一步描绘为包括入口表(entry table)114、堡垒堆(enclave heap)116、堡垒堆栈(enclave stack)118和堡垒代码120。

图2示出了高层级SGX硬件和软件架构。该架构包括暴露的硬件层、特权环境层和应用环境层。平台200上的暴露的硬件包括堡垒页高速缓存(EPC)202以及堡垒页高速缓存映射(EPCM)204。在一个实施例中,EPC 202包含在4K页中的受保护代码和数据,而EPCM 204包含用于每个堡垒页的元数据。包括运行期(runtime)组件的SGX模块206被描绘于特权环境层中,并且包括经由OS中的相应的页表数据结构实现的页表208。应用环境层包括SGC用户运行期实例210和212,以及堡垒214和216。

在高层级,在密码保护平台DRAM中支持SGX和实现EPC的CPU支持BIOS预留存储器范围的能力,该存储器范围被称为处理器预留存储器(PRM)。BIOS通过配置一组范围寄存器(range register)(统称为PRMRR)来分配PRM。

将主存储器作为EPC的存储来使用,对于许多实现方式都是非常期望的。挑战在于,存在可以在DRAM存储器上发动的许多已知的软件和硬件攻击。以加密方式保护DRAM中的EPC内容是防御这些攻击的一种方式。

这是通过存储器加密引擎(MEE)来促进的,存储器加密引擎是一种能够对处理器封装与主存储器(DRAM)之间的选定流量(traffic)进行加密和进行完整性保护的硬件单元。MEE操作于其上的整个存储器区域称为MEE区域。取决于实现方式,PRM由一个或多个MEE区域覆盖。

存储器访问语义学

CPU存储器保护机制通过将从所有外部代理(DMA,图形引擎等)对PRM的访问作为对不存在的存储器的引用来对待,来物理地阻挡这些访问。为了利用MOV和其它与存储器相关的指令来访问堡垒内的页,硬件如图3所描述的进行校验,如下:

逻辑处理器正在“堡垒模式”下执行

页属于逻辑处理器正在执行的堡垒

利用正确的虚拟地址访问的页

如果所访问的页不是堡垒的虚拟地址空间的部分,而是EPC的部分,则访问被作为对不存在的存储器的引用来对待。如果页在堡垒虚拟地址空间之外,则硬件允许堡垒代码访问PRM外的存储器。如果页在堡垒的虚拟地址空间之外且被解析(resolve)成PRM页,则硬件通过发信号通知一个故障来阻止该访问。由不在堡垒模式下的处理器对堡垒页的访问被作为对不存在的存储器的引用来对待。

图3示出了图示说明与堡垒和非堡垒存储器访问有关的操作和逻辑的流程图300。在框302中,接收到线性存储器地址,并且执行传统的页表校验,得出输出物理地址。在决策框304中,就物理地址是否对应于堡垒访问(例如,物理地址对应于为堡垒分配的物理存储器中的区域)做出判定。如果答案为“否”,则访问是非堡垒访问,并且逻辑继续进行到决策框306,在该决策框中就地址是否是堡垒页高速缓存做出判定。因为其不应是(对于非堡垒访问),所以如果答案为“是”,则该逻辑继续进行到框308,在框308中地址由异常结束页(abort page)来取代。如果对决策框306的答案为“否”,则这是常规的存储器访问,这在框310中是允许的。

返回决策框304,如果存储器访问是堡垒访问,则答案为“是”,并且逻辑继续进行到决策框312,在该决策框中就地址是否是堡垒页高速缓存做出判定。如果答案为“是”,则在框314中执行EPCM校验,并且如果校验通过,则如决策框316所描绘的,逻辑继续进行到框310,从而允许存储器访问。如果对决策框312或316的答案为“否”,则逻辑继续进行到信号故障框320,其发信号通知存储器访问故障。

图4a示出了示范性的计算平台400a和计算域402,其中实现了n个堡垒404。计算机平台400包括经由UPI(通用路径互连)互连408耦合的m个处理单元(CPU)406。每个CPU 406与相应的存储器410耦合。CPU-0经由直接媒体接口(DMI)412耦合到包括可管理性引擎(manageability engine)(ME)416和创新引擎(IE)418的平台控制器集线器(PCH)414。还描绘出可选的基板管理控制器(BMC)420与PCI 414耦合。

在一个实施例中,每个CPU 406都包括多个核422。而且,CPU 406可以具有多个存储器信道,被配置为访问存储器410的单独的部分。

在一个实施例中,ME 416被实现为收敛安全和可管理性引擎(CSME)。在一些实施例中,原始设备制造商(OEM)可能想要部署定制功能来扩增由ME 416所提供的设施。这些可通过IE 418来实现,其还称为OEM创新引擎。一般地,IE 418的使用是可选的。ME 416和IE418(如果使用)是用于执行平台可管理性操作的可管理性子系统的部分。

在当前SGX架构的一个实施例下,每个SGX堡垒404具有专用的硬件(例如,专用的CPU、一个或多个专用的处理器核和存储器)。在一个实施例中,m=n,并且存在用于每个堡垒404的专用CPU 406及其相关联的存储器410。可选地,如下文要说明的,每个堡垒将与某些IP(知识产权)块(也通常简称为“IP”)相关联,其中一些IP块可能是专用的,而其中一些IP块可能在两个或更多个堡垒之间共享。

在当前方法下,当平台事件发生时,比如MCERR(机器校验错误),按照设计,全部的堡垒被消灭(wipe out)且系统需要复位来使能正确操作。如果硬件、OS或平台软件判定出某件硬件/软件导致了对它不重要的错误,则该堡垒受保护且将被消灭。即使所遇到的错误是“可恢复”类型的,也同样如此。如果SGX未被使能,则传统的错误处置发生,但是倘若存在其中PCC(处理器上下文损坏)被置位的错误,则复位被要求,这对于大多数错误是成立的。

在本文的新颖的方法的一个实施例下,平台硅被配置为使能对受影响的(而不是对全部的)堡垒进行已定向的MCERR(机器校验)并且将该信息置于寄存器(例如,配置空间寄存器(CSR))内。添加该信息到寄存器中的原因在于,当硅断言了错误时,可管理性子组件将看到由引脚/中断所断言的错误。可管理性子组件然后将参与,并且将需要确定哪个堡垒是受错误影响的。

另外,该方法还包括:

将CPU错误源分类为堡垒特定的或系统范围的。例如,存储器子系统错误可以是堡垒特定的,但是KTI互连子系统错误将是系统范围的。

添加该能力以使得IP被配置有它们所属于的何种堡垒且将MCERR仅发送到消耗该IP的资源的核。

当堡垒接收到中断(同步错误信令)时,它/它们将就对错误进行处置做出决策。这可以包括允许信任的合作者(CSP/OEM,可替代的堡垒,平台固件(FW)、OS等)来处置错误,传递信息或者仅是将堡垒全部一起停止。这将在下面的固件流中更清楚。

图4b示出了在高层级的新架构400b的一个实施例。如图所示,计算平台400b还添加在BMC 420与CPU-0之间发送的错误信号和PECI(平台环境控制接口)信号。例如,CPU-0可能断言由BMC 420能够检测到的如ERR[0],ERR[1],ERR[2],MSMI#,CATERR#等错误。在该示例中,CPU-0中的IP已经被检测为是错误的,这导致经由CPU-0访问的存储器410的部分中的存储器故障或损坏。当堡垒3和5被配置和例示时,错误平台IP/存储器资源的部分被分配给堡垒3和5。相应地,仅与复位错误IP相结合地拆除(tear down)堡垒3和5,而其余堡垒的操作不受影响。

在一个实施例中,当在硅中发生错误时,CPU将断言外部引脚,并且错误将由BMC420、ME 416或IE 418来检测。BMC 420、ME 416或IE 418将要存储将安全堡垒映射到它们的资源的信息,或者对该信息具有访问权。基于特定的错误,BMC/ME/IE将使用资源映射信息来识别受影响的安全堡垒且将识别出受影响的安全堡垒的相应的信息发回CPU。CPU则将中断定向到受影响的堡垒。在一个实施例中,在堡垒设置过程中,堡垒将负责创建用于服务该中断的关键堡垒平台中断处置器。

图5的流程图500示出了根据一个实施例堡垒如何响应于错误事件。流程在开始框502开始,堡垒执行应用。硅错误的发生由决策框504来描绘,其是异步事件,但是为简化和方便而被显示为循环流。响应于硅生成的错误(silicon generated error),对于决策框504的答案为“是”,并且逻辑流到框506,在该框中调用安全堡垒(SE)平台硅处置器。

接着,在框508中,执行安全清除。期望的是SE将具有需要按有序方式弃置的一定量的信息。例如,在一个实施例中,堡垒将对全部密钥清零,并且安全地擦除与堡垒相关联的存储器。

接着,逻辑流到决策框510,在该决策框中就是否允许固件或操作系统处置事件做出判定。如果答案为“是”,则平台层级的中断在框512中被断言,并且在结束框614中执行相关联的中断处置工作。如果对决策框510的答案为“否”,则逻辑继续进行到框516,在该框中允许可选的SE到SE通信以实现冗余(例如,通过把由要拆除的SE所维护的数据传送到不被拆除的另一SE)。然后,SE工作停止,并且允许对应用的拆除,如结束框518中所描绘的。

图6示出了根据一个实施例计算平台400b的进一步的细节。为了简化,且由于图面空间的缺少,图6仅示出了两个CPU 406,它们将被称作CPU-0和CPU-1。一般地,计算平台可以具有1-m个CPU,并且取决于架构每个CPU可以与相应的套接字相关联或者可以被称作套接字。图6所示的计算平台可以称为两套接字平台。

CPU-1示出了根据一个实施例的CPU 406的进一步的细节。将理解的是,CPU-0也具有类似的配置。而且,m个CPU中的每一个都可以具有类似的配置。CPU-1包括8个核C0…C7,每个核与相应的代理A0…A7耦合。代理A0…A7与互连600耦合。还示出了与互连600耦合的是CSR 602、一对IP 604和606以及具有与最后级的高速缓存(LLC)612耦合的存储器加密引擎(MC/MEE)608和610的一对存储器控制器。如进一步详细所示的,每个核422包括层级1(L1)和层级2(L2)高速缓存。一般地,代理A0…A7代表了通常将与处理器核相关联的一个或多个代理,如高速缓存代理。

在一个实施例中,互连600对应于包括每个核422的L1/L2高速缓存、LLC 612和存储器410-0和410-1的相干存储器域中的相干互连。在一个实施例中,IP块604和606中的一个或多个连接到输入/输出(I/O)互连(由于缺少空间的原因没有示出),I/O互连继而经由桥接器等连接到互连600。

如所描绘的,各平台资源分配给相应的堡垒。例如,对于CPU-1:

核C0和C1及其代理分配给堡垒5;

核C2和C3(未示出)及其代理分配给堡垒6;

核C4和C5及其代理分配给堡垒7(未示出);以及

核C6(未示出)和C7及其代理分配给堡垒8。

存在用于堡垒5-8的存储器410-0和410-1的受保护区域,如图所示。(注意,存储器410-0和410-1代表物理存储器而不是虚拟存储器,但是存储器子系统将具有用于在物理存储器与虚拟存储器之间进行映射的页表等(未示出)。)

在一个实施例中,IP 604是PCIe根控制器,并且IP块614、616和磁盘控制器618中的每一个经由PCIe互连与IP 604耦合。IP 614和616中的一个或多个可以表示安装到计算平台400b的主板上或者安装到计算平台400b上的PCIe槽(未单独示出)中的I/O组件。例如,在一个实施例中,IP 614是网络接口控制器,而IP 616是图形芯片或者表示图形卡或图形模块。

图6包括使用各种剖面阴影线图案来描绘共享资源的不同类型以及它们是否能够被个体地复位或者需要CPU或平台复位。例如,对于PCH 414、UPI 408或IP 614所检测到的错误将需要平台复位,这将涉及到拆除(tear down)由计算平台400b所托管的全部堡垒404。相反,IP 616的错误可以作为本地化的IP复位来被处置,这可能不需要拆除任何堡垒(取决于IP 616提供何种类型的功能)。

类似地,在CPU级,给定组件的错误事件可能需要CPU的复位,或者可能涉及到个体组件(或由相关组件组成的组)的复位。例如,如果互连600错误,则可能需要CPU-1的复位,因为互连600与由处理器核422进行的全部存储器访问以及与CPU-1相关联的相干存储器域相关联。类似地,错误的LLC 612可能同样会需要CPU复位,取决于其特定的架构。例如,如果LLC 612实现为共享高速缓存,则可能需要CPU复位。相反,如果LLC 612实现为“切片(sliced)”LLC,则存在这样的条件:在该条件下,仅需要执行对存储器的与错误切片相关联的那些部分的错误处置。另外,取决于特定的高速缓存架构,LLC中的数据可以总是驻留于L1高速缓存或L2高速缓存中的其它地方,使得LLC中的错误可能不需要拆除任何堡垒。

由于CPU上的一些个体组件所引起的错误也可以通过对所述个体组件或由相关组件组成的组进行复位来处置。在这些情形下,仅需要拆除与错误组件相关联的堡垒。在一些情况下,故障的组件可能不产生由堡垒所使用的数据,并且因此不需要拆除任何堡垒。例如,该组件由IP 606来描绘。

在核或代理错误的情况下,可以对错误组件(取决于错误的类型)复位,而不必将其它核和/或代理复位。在该方案下,将需要拆除与错误核或代理相关联的堡垒。例如,假设在核C0中存在错误。因为核C0仅与堡垒5相关联,该堡垒5是唯一需要与复位核C0相结合而拆除的堡垒。

在另一实例中,在CPU中的一些组件内的错误会导致仅拆除与该CPU相关联的一部分堡垒。例如,如果检测到存储器控制器608有不可恢复的错误,则将拆除堡垒5和6,而堡垒7和8将不受影响。

在不使能该SGX的另一方法下,虚拟堡垒或vSE被配置为以在不必将CPU复位也不必拆除整个平台的情况下使得选定组件能够复位(在可适用类型的错误下)的方式来实现适当的错误处置。对于新的RAS层级的错误隔离域,增强了硅微架构。更详细地,下文概述的硅变化将提供额外的RAS,使得在硅组件中的错误将使增强的微架构能够仅复位硅的受影响区域而不影响计算平台的其余部分以及在其上面运行的相关联的应用。

[我们可以删除以下材料或者保留它]

以下包含了来自通过引用方式并入本文的如下文献的摘记:Frank Mckeen等人,Innovative Instructions and Software Model for Isolated Execution,公司,2013年。

堡垒创建和设置

堡垒创建过程将堡垒二进制加载到EPC中并且建立堡垒标识。堡垒创建过程分成多个阶段,包括堡垒控制结构的初始化、EPC页的分配以及将堡垒内容加载到页中、堡垒内容的测量以及最终建立堡垒标识。

这些操作得到以下指令支持:ECREATE EADD,EEXTEND和EINIT。ECREATE开始堡垒创建过程,并且初始化包含关于堡垒的全局信息的SGX堡垒控制结构(SECS)。EADD将EPC页提交给堡垒且在SECS中记录该提交但是不记录内容。堡垒的存储器内容明确地通过EEXTEND来测量。EINIT完成创建过程,这结束了堡垒测量并且建立了堡垒标识。直到执行EINIT,不允许堡垒进入。

堡垒创建过程开始于ECREATE,其将自由EPC页转换成SECS页且将结构初始化。作为ECREATE的部分,系统软件选择使得哪个EPC页作为SECS,并且规定堡垒的多个属性,包括:堡垒能访问的受保护地址的范围,操作模式(32位vs 64位)、堡垒所支持的处理器特征、以及是否允许调试访问。

堡垒进入和退出

保留堡垒的完整性的关键在于控制将执行传入堡垒以及从堡垒传出。进入过程需要清除与堡垒的受保护地址区域重叠的任何高速缓存的变换(cached translation)。这确保了全部受保护的堡垒存储器访问被正确地校验。进入过程必须识别处理器将会在堡垒内的何处传输控制以及使能堡垒执行模式(enclave mode of execution)。退出堡垒必须再次清除对堡垒的受保护地址区域进行引用的任何高速缓存变换,使得没有其它软件能够使用高速缓存的变换来访问堡垒的受保护存储器。

在操作于堡垒模式的同时,可能发生中断、故障或异常。传统地,处理器将指引到系统软件所规定的故障处置器。故障处置器保存寄存器状态且服务该事件。一旦事件已被服务,则系统软件恢复寄存器状态且将控制返回到软件被中断之处。允许系统软件读和/或修改堡垒的寄存器状态,这将系统软件置于堡垒的置信界限内。结果,SGX引入新的例程来保护堡垒的完整性和机密性。

SGX以编程方式提供了EENTER和EEXIT指令来进入和退出堡垒(例如,作为调用/返回序列的部分)。当由于事件而发生堡垒退出时,处理器调用称为异步退出(AEX)的特殊的内部例程,其保存堡垒寄存器状态、清除寄存器,将故障指令地址设定成EENTER所规定的值。ERESUME指令将状态恢复,以允许堡垒恢复执行(resume execution)。

EENTER指令是在程序控制下进入堡垒的方法。为执行EENTER,软件必须供给作为待进入的堡垒的部分的线程控制结构(TCS)的地址。TCS指示堡垒内传输控制的位置以及AEX应当将寄存器状态存储在堡垒内的何处。当逻辑处理器进入堡垒时,TCS被认为是“忙”的,直至逻辑处理器退出堡垒。SGX允许堡垒构建者定义多个TCS结构,从而提供对多线程堡垒的支持。

EENTER还定义了异步退出指针(AEP)参数。AEP是堡垒外部的地址,其用于在AEX后过渡回到堡垒中。AEP是异常处置器将利用IRET返回到的地址。典型地,该位置将包含ERESUME指令。ERESUME将控制传输到从堡垒的已保存状态取回的堡垒地址。

诸如异常和中断等异步事件可能在执行期间发生在堡垒中。这些事件称为堡垒退出事件(EEE)。在EEE时,处理器状态被安全地保存在堡垒内,然后由合成状态取代以防止秘密泄露。安全地保存状态和建立合成状态的过程称为异步堡垒退出(AEX)。

作为EEE的部分,AEP被推送到堆栈上作为故障地址的位置。这是在执行了IRET(中断返回指令)后控制将返回之处。ERESUME可以从该点执行以重新进入堡垒。

在AEX已经完成后,逻辑处理器不再处于堡垒模式,并且退出事件被正常地处理。在AEX已完成后发生的任何新事件被视为已经发生在堡垒外。

在系统软件已经服务了导致逻辑过程退出堡垒的事件后,逻辑处理器可以利用ERESUME再次开始执行。不同于EENTER,ERESUME恢复寄存器且将控制返回到执行被中断的地方。如果退出的原因是异常或故障且没有被解决,则事件将被再次触发。例如,如果堡垒执行了除以0操作,执行ERESUME将导致堡垒试图再次执行故障指令。为了处置发生在堡垒内的异常,软件应当在一个不同的位置进入该堡垒且调用异常处置器,应当使用EENTER指令。异常处置器能够试图解决故障状况,或者简单地返回并且向软件表明堡垒应当被终止。

本文所描述的主题的进一步的方面阐述于下面标号的条款中:

1、一种用于处置在托管有计算域的计算平台中的硬件错误的方法,在所述计算域中实现有多个安全堡垒,所述方法包括:

检测与所述计算平台中的错误硬件相对应的平台错误事件;

识别所述多个安全堡垒中的受所述错误硬件影响的一个或多个安全堡垒;以及

将中断定向到所述多个安全堡垒中的被识别出的所述一个或多个安全堡垒中的每一个。

2、如条款1所述的方法,其中所述错误硬件对应于所述计算平台中的处理器上的错误知识产权块(IP),所述方法还包括:

对于与所述错误IP相关联的至少一个安全堡垒,

响应于接收到已定向到所述安全堡垒的中断,执行错误处置例程或错误处置例程的初始部分两者中的使所述错误IP复位同时不使所述处理器复位的一个。

3、如条款2所述的方法,还包括,对于与所述错误IP相关联的所述至少一个安全堡垒中的每一个:

拆除所述安全堡垒;以及

在所述错误IP已复位后,创建新的安全堡垒。

4、如条款2或3所述的方法,其中响应于第一安全堡垒接收到已定向的中断,通过运行于所述第一安全堡垒中的软件来执行中断服务例程,所述中断服务例程将所述第一安全堡垒中的数据的至少一部分复制到第二安全堡垒。

5、如任一前述条款所述的方法,其中识别所述多个安全堡垒中的受所述错误硬件影响的所述一个或多个安全堡垒包括:

将平台错误源分类为堡垒特定的或系统范围的;

配置映射数据,所述映射数据识别属于所述计算平台上的多个知识产权块(IP)中的每一个知识产权块的所述安全堡垒;

确定所述IP中的一个IP是所述平台错误事件的错误源;以及

利用所述映射数据来识别属于被确定为所述错误源的所述IP的所述安全堡垒。

6、如任一前述条款所述的方法,还包括:

在安全堡垒的设置过程中,创建堡垒平台中断处置器,其中所述堡垒平台中断处置器被配置成进行如下两者中的一者:响应于所述平台错误事件而对定向到所述安全堡垒的中断进行处置,或者发起对定向到所述安全堡垒的中断的处置。

7、如条款6所述的方法,其中由第一安全堡垒对所述堡垒平台中断处置器的执行将所述第一安全堡垒中的数据的至少一部分复制到第二安全堡垒。

8、如任一前述条款所述的方法,其中所述多个安全堡垒是虚拟安全堡垒。

9、如任一前述条款所述的方法,其中所述已定向的中断包括已定向的机器校验。

10、如任一前述条款所述的方法,其中所述计算平台包括一个或多个处理器以及与所述一个或多个处理器中的至少一个处理器通信耦合的一个或多个可管理性组件,所述一个或多个处理器的每个都具有多个知识产权块(IP),并且其中所述错误硬件对应于处理器上的错误IP,所述方法还包括:

存储映射数据,所述映射数据识别属于所述计算平台上的多个知识产权块(IP)中的每一个知识产权块的所述安全堡垒;

断言经由处理器引脚的错误,或者断言由可管理性组件所检测到的中断;以及

采用所述可管理性组件来访问所述映射数据以确定哪些安全堡垒是受所述错误IP影响的。

11、如条款10所述的方法,其中所述可管理性组件包括可管理性引擎、创新引擎和基板管理控制器中的一个。

12、如条款10所述的方法,还包括:

将识别受所述错误IP影响的一个或多个安全堡垒的信息从所述可管理性组件发送到包含所述错误IP的所述处理器,;以及

响应于在所述处理器处接收到所述信息,将中断定向到受所述错误IP影响的所述一个或多个安全堡垒中的每一个。

13、一种处理器,包括:

经由多个互连而被互连的多个知识产权块(IP),所述多个IP包括多个核、多个高速缓存、多个代理、一个或多个存储器控制器,以及一个或多个输入/输出(I/O)组件,所述一个或多个存储器控制器的每个都具有一个或多个存储器信道,

其中所述处理器还包括用于多条指令的微码,所述指令用于当所述处理器被安装在所述计算平台中并且操作于所述计算平台中时实现多个安全堡垒,所述计算平台包括经由所述一个或多个存储器信道与所述一个或多个存储器控制器能够操作地耦合的一个或多个存储器设备,每个安全堡垒操作于所述一个或多个存储器设备中的存储器的受保护部分中并且使得所述多个IP的一部分属于所述安全堡垒,并且其中所述处理器包括嵌入式逻辑,所述嵌入式逻辑被配置为当被安装在所述计算平台中并且操作于所述计算平台中时执行错误恢复操作,所述错误恢复操作包括,

检测错误IP;以及

将中断定向到所述多个安全堡垒中的所述错误IP所属于的一个或多个安全堡垒。

14、如条款13所述的处理器,其中所述处理器还包括寄存器,并且还包括嵌入式逻辑,所述嵌入式逻辑使所述处理器能够:

将包含在IP与所述IP所属于的安全堡垒之间的映射的数据存储在所述寄存器中;以及

基于被检测为错误的IP的标识来确定向所述多个安全堡垒中的哪一个发送已定向的中断。

15、如条款13或14所述的处理器,其中所述处理器包括微码指令,所述微码指令使得所述处理器能够将个体的IP或者由相关IP组成的选定组复位,而不将整个处理器复位。

16、如条款13-15中任一项所述的处理器,其中所述嵌入式逻辑被进一步配置为从所述计算平台中的可管理性组件接收对所述多个安全堡垒中的所述错误IP所属于的一个或多个安全堡垒的识别。

17、如条款13-16中任一项所述的处理器,其中所述多个安全堡垒是虚拟安全堡垒。

18、如条款13-17中任一项所述的处理器,其中所述计算平台包括可管理性组件,当所述可管理性组件被安装在所述计算平台中时所述处理器经由至少一个通信接口与所述可管理性组件通信耦合,并且其中响应于检测到错误IP,所述处理器被配置为:

断言引脚上的错误信号或者断言经由通信接口的中断,以将错误通知所述可管理性组件(assert an error signal on a pin or assert an interrupt via acommunication interface to inform the manageability component of an error);以及

经由通信接口接收由所述可管理性组件返回的信息,所述信息识别要将中断定向到的一个或多个安全堡垒。

19、一种计算平台,包括:

第一处理器,其包括,

经由多个互连而被互连的多个知识产权块(IP),所述多个IP包括多个核、多个高速缓存、多个代理、一个或多个存储器控制器、以及一个或多个输入/输出(I/O)组件,所述一个或多个存储器控制器的每个均具有一个或多个存储器信道;以及

一个或多个第一存储器设备,其经由所述一个或多个存储器信道与所述第一处理器的所述一个或多个存储器控制器能够操作地耦合,

其中所述第一处理器还包括用于多条指令的微码,所述指令用于当所述计算平台操作时实现多个安全堡垒,每个安全堡垒操作于所述一个或多个存储器设备中的存储器的受保护部分中并且使所述多个IP的一部分属于所述安全堡垒,并且其中所述第一处理器包括被配置为执行错误恢复操作的嵌入式逻辑,所述错误恢复操作包括,

检测错误IP;以及

将中断定向到所述多个安全堡垒中的所述错误IP所属于的一个或多个安全堡垒。

20、如条款19所述的计算平台,还包括:

寄存器;以及

可管理性组件,其与所述第一处理器能够操作地耦合;

其中在所述计算平台的操作期间,将每个安全堡垒映射到属于该安全堡垒的所述IP的映射信息被存储在所述寄存器中,并且其中响应于检测到错误IP,

所述第一处理器被配置为,断言经由处理器引脚的错误,或者断言被定向到所述可管理性组件的中断,所断言的错误识别所述错误IP;以及

所述可管理性组件被配置为从所述寄存器取回识别所述IP属于哪个安全堡垒的数据。

21、如条款20所述的计算平台,其中所述第一处理器被进一步配置为:

从所述计算平台中的所述可管理性组件接收对所述多个安全堡垒中的所述错误IP所属于的一个或多个安全堡垒的识别;以及

将中断定向到所识别的所述安全堡垒中的每一个。

22、如条款19-21中任一项所述的计算平台,其中所述第一处理器包括使所述处理器能够将个体的IP或由相关IP组成的选定组复位而不将整个处理器复位的微码指令。

23、如条款22所述的计算平台,其中响应于接收到已定向的中断,安全堡垒执行使所述错误IP复位而不将所述第一处理器复位的中断处置器。

24、如条款19-23中任一项所述的计算平台,还包括:

第二处理器,包括,

经由多个互连而被互连的多个知识产权块(IP),所述多个IP包括多个核、多个高速缓存、多个代理、一个或多个存储器控制器以及一个或多个输入/输出(I/O)组件,所述一个或多个存储器控制器的每个均具有一个或多个存储器信道;

一个或多个第二存储器设备,其经由所述一个或多个存储器信道与所述第二处理器的所述一个或多个存储器控制器能够操作地耦合;以及

处理器到处理器互连,其在通信中将所述第一处理器和所述第二处理器耦合;

其中所述第二处理器还包括用于多条指令的微码,所述指令用于当所述计算平台操作时实现多个安全堡垒,每个安全堡垒操作于所述一个或多个存储器设备中的存储器的受保护部分中并且使所述多个IP的一部分属于所述安全堡垒,以及

其中所述计算平台被进一步配置为,

存储将平台错误源分类为堡垒特定的或系统范围的数据;

检测系统范围的平台错误;以及

将中断定向到每个安全堡垒以使每个堡垒执行中断处置器;以及

在每个安全堡垒完成了其中断处置器的执行之后,将所述计算平台复位。

25、如条款19-24中任一项所述的计算平台,其中所述多个安全堡垒是虚拟安全堡垒。

26、一种其中存储有指令的有形的、非暂态机器可读介质,所述指令被配置为由计算平台中的处理器执行,其中所述处理器包括:经由多个互连而被互连的多个知识产权块(IP),所述多个IP包括多个核、多个高速缓存、多个代理、一个或多个存储器控制器以及一个或多个输入/输出(I/O)组件,所述一个或多个存储器控制器的每个均具有一个或多个存储器信道,所述计算平台还包括经由所述一个或多个存储器信道与所述一个或多个存储器控制器耦合的一个或多个存储器设备,其中所述指令的执行使所述计算平台:

创建多个安全堡垒,每个安全堡垒部署在存储器地址空间的受保护区域内且被配置为阻止不在所述安全堡垒内的用户级软件访问;以

响应于由于错误IP所导致的已定向的中断来实现中断服务例程(ISR),所述ISR使所述处理器的包括错误IP的部分被复位,而不将处理器复位。

27、如条款26所述的有形的、非暂态机器可读介质,其中所述指令的执行进一步使所述计算平台发送已定向的中断到使用具有资源的错误IP的每一个或者一个或多个安全堡垒。

28、如条款27所述的有形的、非暂态机器可读介质,其中响应于接收到已定向的中断,所述安全堡垒执行一个或多个安全清除操作。

29、如条款26所述的有形的、非暂态机器可读介质,其中所述一个或多个安全清除操作包括安全地擦除与所述安全堡垒相关联的存储器。

30、如条款26-29中任一项所述的有形的、非暂态机器可读介质,其中所述指令的执行进一步使所述计算平台:

拆除安全堡垒;以及

在所述错误IP已经复位后,创建新的安全堡垒。

31、如条款30所述的有形的、非暂态机器可读介质,其中所述指令的执行进一步使所述计算平台在将拆除安全堡垒之前对所述安全堡垒执行安全清除操作。

32、如条款30所述的有形的、非暂态机器可读介质,其中所述指令包括中断服务例程,响应于接收到已定向的中断,通过运行于所述第一安全堡垒中的软件执行所述中断服务例程,将所述第一安全堡垒中的数据的至少一部分复制到第二安全堡垒。

33、如条款26-32中任一项所述的有形的、非暂态机器可读介质,其中所述指令的执行进一步使所述计算平台在安全堡垒设置期间创建堡垒平台中断处置器,其中所述堡垒平台中断处置器被配置为响应于所述平台错误事件而进行对定向到所述安全堡垒的中断的处置或将定向到安全堡垒的中断的处置发起这两者中的一者。

34、如条款32所述的有形的、非暂态机器可读介质,其中通过第一安全堡垒执行所述堡垒平台中断处置器,将所述第一安全堡垒中的数据的至少一部分复制到第二安全堡垒。

35、如条款26-32中任一项所述的有形的、非暂态机器可读介质,其中所述多个安全堡垒是虚拟安全堡垒。

虽然参考特定的实现方式描述了一些实施例,根据一些实施例其它实现方式是可能的。另外,在图中所示和/或本文所描述的元件或其它特征的布置和/或次序无需以图示和所描述的特定的方式来布置。根据一些实施例,许多其它布置是可能的。

在图中所示的各系统中,在一些情况下元件可以各自具有相同的附图标号或不同的附图标号来表明所表示的元件可以不同和/或相似。然而,元件可以足够灵活而具有不同的实现方式以及利用本文所示或所描述的一些或全部系统来工作。图中所示的各个元件可以相同或不同。哪一个元件称为第一元件以及哪一个称为第二元件是任意的。

在说明书和权利要求书中,可以使用术语“耦合”和“连接”以及它们的衍生词。应当理解的是,这些术语不意在彼此同义。相反,在特定的实施例中,“连接”可用于表明两个或更多个元件彼此直接物理或电接触。“耦合”可以意指两个或更多个元件直接物理或电接触。然而,“耦合”还可以意指两个或更多个元件彼此不直接接触,但是仍相互配合或交互。

实施例是本发明的实现方式或示例。在说明书中提到“实施例”、“一个实施例”、“一些实施例”或“其它实施例”意思是结合该实施例所描述的特定的特征、结构或特性包含在本发明的至少一些实施例中,而不一定是全部实施例。出现的各种表述“实施例”、“一个实施例”、或“一些实施例”不一定都指同一实施例。

并不是在本文中描述和图示说明的全部的组件、特征、结构或特性等都包含在特定的一个或多个实施例中。比如,如果说明书表明“可以”、“可能”、“能够”或者“会”包括组件、特征、结构或特性,则不要求包括该特定的组件、特征、结构或特性。如果说明书或权利要求书提到“一”或“一个”元件,则不意味着仅存在一个所述元件。如果说明书或权利要求书提到“附加”元件,则不排除存在多于一个的所述附加元件。

算法在此一般地被认为是得到期望结果的动作或操作的独立序列。这些包括物理量的物理操纵。通常,但是不必然地,这些量呈现为能够被存储、传输、组合、比较或以其它方式操纵的电或磁信号的形式。经证实,有时主要是为了共同使用的原因将这些信号称为位、值、元素、符号、字符、项、数字等是方便的。然而,应当理解,全部这些术语和相似术语将与适当的物理量相关联且仅是应用于这些量的方便的标签。

如上文所述,本文的实施例的各个方面可以通过相应的软件和/或固件组件和应用(如嵌入式处理器等执行的软件和/或固件)来促进。因此,本发明的实施例可以用作或支持在某形式的处理器、处理核或嵌入式逻辑上执行的软件程序、软件模块、固件和/或分布式软件、运行于处理器或核上的虚拟机,或者以其它方式实施或实现于计算机可读或机器可读非暂态存储介质上或内。计算机可读或机器可读非暂态存储介质包括用于存储或传输机器(例如,计算机)可读形式的信息的任何机制。例如,计算机可读或机器可读非暂态存储介质包括提供(即,存储和/或传输)计算机或计算机器(例如,计算设备、电子系统等)所能访问的形式的信息的任何机制,诸如可记录/非可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储器设备等)。内容可以是直接可执行的(“对象”或“可执行”形式)、源代码或差别代码(“Δ(delta)”或“补丁”码)。计算机可读或机器可读非暂态存储介质还可以包括能够从其中下载内容的存储设备或数据库。计算机可读或机器可读非暂态存储介质还可以包括在销售或输送时其中存储有内容的设备或产品。因此,输送存储有内容的设备或者提供供经通信介质下载的内容可以理解为提供包括带有本文所述的这些内容的计算机可读或机器可读非暂态存储介质的制品。

本文所描述的上文称为过程、服务器、工具的各个组件可以是用于执行所描述的功能的手段。通过本文所描述的各个组件所执行的操作和功能可以通过运行于处理元件上的软件、经由嵌入式硬件等或者硬件和软件的任意组合来实现。一些组件可以实现为软件模块、硬件模块、专用硬件(例如,专用硬件ASIC、DSP等)、嵌入式控制器、硬接线电路系统、硬件逻辑等。软件内容(例如,数据、指令、配置信息等)可以经由包括计算机可读或机器可读非暂态存储介质的制品来提供,其提供代表可以被执行的指令的内容。该内容可以使得计算机执行本文所描述的各种功能/操作。

如本文所使用的,通过术语“至少一个”所连结的项列表可以意指所列项的任意组合。例如,短语“A、B或C中的至少一个”可以意指A;B;C;A和B;A和C;B和C;或者A,B和C。

本发明的图示实施例的上面的说明,包括在摘要中所描述的,不旨在穷举或者将本发明限制为所公开的确切形式。虽然本发明的具体的实施例和示例在此为了示例的目的而描述,但是各等同修改在本发明的范围内是可能的,这是相关领域技术人员将认识到的。

可以根据上文具体实施方式来对本发明做出这些修改。在下面的权利要求中所使用的术语不应解释为将本发明限制为在说明书和附图中所公开的具体实施例。相反,本发明的范围完全由随附权利要求来确定,权利要求应按照已确立的对权利要求进行解释的原则来进行解释。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号