虚拟化环境下安全堡垒区域的可信开启的制作方法

文档序号:14959052发布日期:2018-07-18 00:09阅读:287来源:国知局

本申请要求享有于2015年12月24日提交的美国非临时专利申请no.14/998,065的优先权的权益。

概括地说,实施例涉及数据安全。更具体地说,实施例涉及虚拟化环境下安全堡垒区域(secureenclave)的可信开启(trustedlaunch)。



背景技术:

在计算系统中,可信执行环境(tee)可以被实现为在专用可信计算基(tcb)内部运行的安全堡垒区域,其中该安全堡垒区域可以接收敏感信息并且对该敏感信息进行操作。虚拟化计算架构可以包括由虚拟机监控器(vmm,例如,管理程序)管理的一个或多个虚拟机。在基于虚拟化堡垒区域的计算系统中,给定虚拟机(vm)的vmm和操作系统(os)二者可以在特定堡垒区域的可信计算基的外部操作(虽然vmm可以在与安全堡垒区域的tcb不同的tcb中运行)。因此,可能存在恶意软件使用vmm和os组件来创建使得恶意软件能够误传堡垒区域的存储位置、捕获和/或操控被传送到堡垒区域的敏感信息、将错误信息传递到其他安全堡垒区域等等的堡垒区域开启序列的风险。

附图说明

通过阅读随后的说明书和所附的权利要求书以及通过参考随后的附图,对于本领域的熟练技术人员而言,实施例的各种优点将变得显而易见,其中:

图1表示基于虚拟化堡垒区域的计算系统的示例的框图;

图2表示根据实施例操作虚拟机监控器装置的方法示例的流程图;

图3表示根据实施例经由不可信运行时系统开启安全堡垒区域的方法示例的流程图;

图4表示根据实施例经由可信堡垒区域开启安全堡垒区域的方法示例的流程图;

图5表示根据实施例的特权堆栈的示例的框图;

图6表示根据实施例的虚拟机监控器装置的示例的框图;

图7表示根据实施例的处理器示例的框图;以及

图8表示根据实施例的计算系统示例的框图。

具体实施方式

现在转向图1,示出了基于虚拟化堡垒区域的计算系统10。系统10可以是例如服务器、台式计算机、笔记本计算机、平板计算机、可转换平板、智能电话、个人数字助理(pda)、可穿戴设备、移动互联网设备(mid)、媒体播放器等,或其任何组合。在所说明的示例中,虚拟机监控器(vmm)12在可信计算基(tcb)11中运行并且可通信地耦合到一个或多个堡垒区域tcb14(14a-14c)、一个或多个输入输出(io)设备16(例如,诸如生物计量扫描仪的人机接口设备/hid、诸如有机发光二极管/oled显示器的显示器、液晶显示器/lcd、触摸屏)。每一个堡垒区域tcb14一般可以包括使得系统10的至少一部分能够被认为可信的一组运行时组件(例如,处理器、寄存器等)。例如,如果在信任被建立之后引导/开启过程中的任何一个组件发生改变(或更新),则堡垒区域tcb14可以支持秘密的移动或再密封。

每一个堡垒区域tcb14可以通信地耦合到对于vmm12、os和/或开启器可见或可存取的共享缓冲器,并且其中堡垒区域tcb可以包括对于vmm12一般不可见或不可存取的相对小的堡垒区域页高速缓存(epc)。例如,在所说明的示例中,第一堡垒区域tcb14a包括第一共享缓冲器24和第一epc20,第二堡垒区域tcb14b包括第二共享缓冲器25和第二epc21,第三堡垒区域tcb14c包括第三共享缓冲器27和第三堡垒区域epc23,等等。

从而,第一堡垒区域tcb14a的第一共享缓冲器24一般而言对于vmm12和第一堡垒区域实例22a可以是可见的且可存取的。因此,vmm12可以使用第一共享缓冲器24来与第一堡垒区域22a进行通信。更具体而言,vmm12可以使用第一共享缓冲器24作为用于在io设备16和安全堡垒区域实例22之间传输敏感数据的非加密通道。如将更详细讨论的,对第一共享缓冲器24的存取可以通过受vmm12控制且仅对vmm12和第一堡垒区域实例22a可见的扩展页表(ept,未示出)。因此,第一共享缓冲器24可以被认为是在vmm12的tcb11中。

从而,io设备16可以包括生成诸如以指纹数据为例的敏感数据的生物计量扫描仪,并且安全堡垒区域实例22中的一个可以对指纹数据执行各种处理和/或匹配操作。在这样的情况下,显示器18可以输出(例如,在视觉上呈现)处理/匹配操作的结果或者与数据相关联的其他信息。由于经过共享缓冲器24、25、27的数据传输可以是未被加密的,因此所说明的系统10可以经历增强的稳态性能和减少的协议复杂性。在一个示例中,安全堡垒区域实例22是英特尔软件保护扩展(sgx)堡垒区域。此外,vmm12可以经由第一堡垒区域实例22a将敏感数据从io设备16传送到一个或多个另外堡垒区域实例22b-22c,其中第一堡垒区域实例22a用作代理堡垒区域实例。

如将更详细讨论的,vmm12可以验证至少第一堡垒区域实例22a的身份(例如,密码哈希),确定在第一堡垒区域实例22a的epc20中的存储器位置并确认该存储器位置在计算系统10本地。需要特别指出的是,不是在第一堡垒区域实例22a被开启之后验证第一堡垒区域实例22a的身份,而是在第一堡垒区域实例22a被开启之前所说明的vmm12验证第一堡垒区域实例22a的身份。此外,vmm12可以使用不可信运行时系统(urts,例如操作系统/os组件)13或可信堡垒区域开启器15中的一个或多个来以安全的方式开启至少第一堡垒区域实例22a,即使urts13和/或可信堡垒区域开启器15可以在第一堡垒区域实例22a的第一堡垒区域tcb14a的外部操作。因此,所说明的解决方案降低了恶意软件(例如,本地或远程)创建使得恶意软件能够误传第一堡垒区域实例22a的存储位置、捕获和/或操控向第一堡垒区域实例22a传送的敏感信息、向另外堡垒区域实例22b-22c传递错误信息等等的堡垒区域开启序列的风险。

图2示出了操作虚拟机监控器装置的方法26。方法26一般可以被实现在诸如以已经讨论的基于虚拟化堡垒区域的计算系统10(图1)为例的计算系统中。更具体而言,方法26可以被实现在作为在诸如随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、固件、闪存等的机器或计算机可读存储介质中存储的一组逻辑指令的一个或多个模块中,在例如以可编程逻辑阵列(pla)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)为例的可配置逻辑中,在使用例如以专用集成电路(asic)、互补金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术为例的电路技术的固定功能逻辑硬件中,或其任何组合。例如,用于执行在方法26中示出的操作的计算机程序代码可以以一个或多个编程语言的组合来编写,包括诸如java、smalltalk、c++等的面向对象的编程语言和诸如“c”编程语言或类似编程语言的常规过程编程语言。

所说明的处理框28提供了在堡垒区域实例在可信计算基中被开启之前,从堡垒区域实例的可信计算基的外部验证堡垒区域实例的身份(例如,密码哈希)。框30可以确定堡垒区域实例的存储位置,其中所说明的框32确认该存储位置在计算系统本地。在一个示例中,框34经由堡垒区域实例和非加密通道(例如,该堡垒区域实例用作代理)与可信计算基中的一个或多个另外堡垒区域实例进行通信。该方法26可以使用utrs和/或可信堡垒区域开启器来安全地开启堡垒区域实例。

图3示出了经由urts开启安全堡垒区域的方法36。方法36一般可以被实现在诸如以已经讨论的基于虚拟化堡垒区域的计算系统10(图1)为例的计算系统中。更具体而言,方法36可以被实现在作为在诸如ram、rom、prom、固件、闪存等的机器或计算机可读存储介质中存储的一组逻辑指令的一个或多个模块中、在诸如以pla、fpga、cpld为例的可配置逻辑中、在使用诸如以asic、cmos或ttl技术为例的电路技术的固定功能逻辑硬件中、或其任何组合。

在所说明的示例中,在框38处发生系统引导。框38可以包括vmm、vm和/或诸如sgx的基于硬件的安全框架的启动。可以在框40处在vm中启用一个或多个退出控制,其中退出控制可以包括堡垒区域创建(例如,ecreate)vm退出命令、堡垒区域初始化(例如,einit)vm退出命令等等。就在vm中执行潜在的开启指令(例如,ecreate、einit)自动地触发从vm向vmm传输控制(例如,“退出”)而言,退出控制可以被认为是“陷阱”。可以在框42处开启环3vmm代理。在该方面,计算系统可以包括各种特权环,其中应用驻留在相对非特许的“环3”保护级别(例如,没有系统级别特权)、操作系统(os)驻留在“环0”保护级别(例如,具有一些系统级别特权)、以及vmm驻留在环0保护级别之下(例如,具有全系统级别特权)。从堡垒区域实例的角度来看,在框42处开启的代理可以被认为是伴随着堡垒区域实例的不可信应用(例如,sgs堡垒区域可能不信任除了自身之外的任何东西)。

在框44中,环3vmm代理可以调用环0urts以开启堡垒区域实例,其可以被存储在诸如以固体磁盘(ssd)为例的非易失性存储器(nvm)中。在所说明的示例中,urts可以在框46处调用ecreate开启指令,其在框48处触发执行退出控制。在框46期间,urts可以针对正在被开启的堡垒区域实例而分配epc页并组装其他信息。在该方面,ecreate开启指令可能不会固有地接收或生成堡垒区域身份信息(例如,mrenclave)或密封否则将使得vmm能够确定哪一个堡垒区域实例要被开启的权威公共密钥信息(例如,mrsigner)。因此,框46还可以涉及将一个或多个注释(例如,标签)添加到ecreate开启指令,以跟踪特定的ecreate开启指令。在另一示例中,诸如以列表、数据库等等为例的跟踪数据结构可以用于跟踪所有的开启指令。

所说明的框50进行对与执行退出控制相关联的一个或多个参数的分析(例如,将感兴趣的结构拷贝到常规os不能够存取的vmm安全区域,使得其不可改变)并且如果分析确认了堡垒区域实例的身份(例如,密码哈希)则安全地执行ecreate开启指令。框50可以包括从ecreate开启指令移除一个或多个注释。此外,框50可以捕获诸如以在epc中的secs(sgx堡垒区域控制结构)地址、堡垒区域范围等为例的相关信息。vmm可以依赖于安全框架硬件以在完成方法36之后对ecreate指令执行其他检查。可以在框52处做出关于是否已经发生错误(例如,基于ecreate指令的各种退出条件)的确定。在所说明的示例中,如果尚未发生错误,则框54可以向环0urts返回执行,其调用einit指令。

einit指令可以在框56处触发另一退出控制的执行。所说明的框58进行与执行退出控制相关联的一个或多个参数的分析(例如,将感兴趣的结构拷贝到安全区域)并且如果分析确认了堡垒区域实例的身份则安全地执行einit开启指令。来自ecreate开启指令的secs地址的有效地址可以与einit开启指令相关,以获得mrsigner/mrenclave信息。更具体而言,mrenclave信息可以唯一地标识堡垒区域实例并且可以与vmm存储的值进行比较,以验证堡垒区域的身份。框58还可以检查诸如堡垒区域实例是否可调试的其他属性,其中不能够调试堡垒区域实例的能力可以是不合格的基础。如果secs地址不匹配,则einit开启指令可以被允许以未找到与感兴趣的ecreate开启指令的匹配为基础而正常地进行。如果跟踪数据结构(例如,列表、数据库等)正在被用于跟踪所有的开启指令,则框58可以包括搜索跟踪数据结构,以确定einit开启指令是否与感兴趣的ecreate开启指令相对应。

可以在框60处做出关于是否发生错误的确定。如果为否,则由于在框62处vmm知道堡垒区域身份和epc地址范围,所说明的框64将ept保护应用于堡垒区域实例,例如通过将堡垒区域实例“包装”在ept保护的视图(view)中并且在向堡垒区域实例传输敏感数据之前确认本地性。urts执行可以在所说明的框66处恢复。如果ecreate错误或einit错误被检测到,则框68可以生成适当的错误消息,其中可以在框70处进行系统文件的错误和清除的记录。

图4示出了另一方案,在该方案中,方法72经由可信堡垒区域开启器开启安全堡垒区域。一般而言,方法72可以在诸如以已经讨论的基于虚拟化堡垒区域的计算系统10(图1)为例的计算系统中实现。更具体而言,方法72可以被实现在作为在诸如ram、rom、prom、固件、闪存等的机器或计算机可读存储介质中存储的一组逻辑的一个或多个模块中,在诸如以pla、gpga、cpld为例的可配置逻辑中,在使用诸如以asic、cmos或ttl技术为例的电路技术的固定功能逻辑硬件中,等等。

所说明的处理框74进行系统引导,其可以包括vmm、vm和/或诸如sgx的基于硬件的安全框架的启动。可信堡垒区域开启器(例如,vmm可信运行时系统/vtrts)可以在框76处被调用。框76可以包括例如加载sgxutrs和vtrts驱动器并且向vmm保护的域添加vtrts驱动器。环3vmm代理可以在框78处被开启,其中环3vmm代理可以在框80处调用可信堡垒区域开启器以开启堡垒区域实例。可信堡垒区域开启器可以继而在框82处调用utrs以从存储器分配epc页。可信堡垒区域开启器在所说明的框84处直接调用ecreate开启指令。可以在框86处做出关于是否已经发生错误的确定(例如,基于ecreate指令的各种退出条件)。

如果还没有发生ecreate错误,则可信堡垒区域开启器可以在框88处针对每一个分配的epc页调用eadd开启指令。在该方面,一般而言,数据/代码的页可以通过eadd开启指令被加载到堡垒区域存储器空间。例如,每一个eadd加载指令可以将代码/数据的页(例如,4096字节)加载到堡垒区域实例中。框88还可以提供使用eextend开启指令以测量每一个页,尽管一些页可能不被测量。eextend开启指令可以例如将256个字节的数据散列到mrenclave测量中。除非eadd/eextend开启指令被以正确的方式(例如,在对堡垒区域实例签名的工具和vtrts/urts装载器之间的对话)用在堡垒区域实例中的所有数据,否则将不可能获得由einit验证的正确的mrenclave测量。因为vmm可以简单地经由退出控制来观察urts的加载操作,因此已经讨论的方法36(图1)可以不示出eadd(和eextend)开启指令的使用(例如,如果einit加载指令成功,则可以推断urts正确地执行了所有的eadd和eextend加载指令,因为mrenclave测量已经被验证)。

可以在框90处做出关于是否已经发生eadd错误的确定。如果尚未发生eadd错误,则可信堡垒区域开启器在框92处将ept保护应用于被分配到堡垒区域实例的epc页。一般而言,框92可以确保可信堡垒区域开启器暂时是能够修改epc页的唯一实体(例如,尽管sgs指令)。此外,在所说明的框94中,可信堡垒区域开启器调用einit开启指令,其中在框96处做出关于是否已经发生einit错误的确定。

如果尚未发生einit错误,则可信堡垒区域开启器的执行可以在框98处恢复,其中在框100处,可信堡垒区域开启器知道堡垒区域身份和epc地址范围。此外,在框102处,可信堡垒区域开启器可以验证对堡垒区域实例的ept保护。框102可以修改在框92中应用的ept保护,以将堡垒区域实例转换成可以被专门分配给应用的视图。

在验证einit开启指令已经成功之后(可以进行其以执行堡垒区域实例中的代码),可以以特定的方式进行进入到堡垒区域实例中。例如,进入可以涉及使用eenter指令和指向堡垒区域内的特殊页(线程控制结构/tcs页)的指针。可以假定的是,tcs页处于ept视图的控制之下(例如,对于可信堡垒区域开启器可存取)并且尚未被篡改。一旦已经进入堡垒区域实例,安全框架(例如,sgx框架)就可以将执行限制在仅经由eadd开启指令加载到该堡垒区域实例的页(例如,由于通过einit开启指令验证了mrenclave测量,所以精确的页标记是已知的)。恶意软件可能将页从在这样的方案下受到保护的堡垒区域实例移除,但是恶意软件将无法将该页添加回到堡垒区域实例。此外,ept可以用于避免页的移除,但是安全框架可能已经提供机密性/完整性保护。

如果在框86、90或96检测到错误,则所说明的框104生成错误消息。可以在框106处进行系统文件的错误和清除的记录。

图5示出了可以结合已经讨论的方法72(图4)使用的特权栈108。一般而言,环3层112驻留在环0层110之上,环0层110驻留在vmm12之上。环3层112可以包括具有被存储在epc存储器和共享缓冲器24中的堡垒区域实例116的应用114,该应用114可以被存储在非epc存储器中。从谈论中的堡垒区域tcb的角度来看,堡垒区域实例116和共享缓冲器24二者可以被认为是可信资源。所说明的环0层110包括可信堡垒区域开启器15(例如,vtrts)和urts13,其中可信堡垒区域开启器15可以经由urts13调用epc分配和epc自由过程。可信堡垒区域开启器15和urts13各自可以被配置成调用诸如以einit、ecreate、eadd等等为例的开启指令。vmm12可以包括一个或多个可信ept118和一个或多个不可信ept120。可信ept118可以用于创建诸如以堡垒区域实例116、共享缓冲器24和/或可信堡垒区域开启器15为例的可信组件的视图。

现在转向图6,其示出了vmm装置122(122a-122d)。可以实现已经讨论的方法26(图2)、方法36(图3)和/或方法72(图4)的一个或多个方面的vmm装置122可以容易地替代已经讨论的vmm12(图1和5)。在所说明的示例中,在堡垒区域实例在可信计算基中被开启之前,身份管理器122a可以从堡垒区域实例的可信计算基外部验证堡垒区域实例的身份。装置122还可以包括确定堡垒区域实例的存储位置的页高速缓存管理器122b。此外,本地性管理器122c可以确认存储位置在计算系统本地。在一个示例中,堡垒区域实例是经由代理堡垒区域实例和非加密通道与可信计算基中的一个或多个另外堡垒区域实例进行通信的代理堡垒区域实例和数据传输组件122d。

在诸如方法36(图3)的示例中,身份管理器122a可以使能vm中的一个或多个退出控制、经由与vm相关联的urts触发退出控制的执行、进行与退出控制的执行相关联的一个或多个参数的分析、以及如果该分析确认堡垒区域实例的身份则开启堡垒区域实例。在这样的情况下,存储位置可以从urts获得。此外,身份管理器122a可以基于对多个开启指令的一个或多个注释而跟踪与堡垒区域实例相关联的多个开启指令(例如,ecreate和einit)并且从开启指令移除注释。可供替换地,身份管理器122a可以基于跟踪数据结构(例如,列表、数据库)跟踪多个开启指令。

在诸如方法72(图4)的另一示例中,身份管理器122a可以调用可信堡垒区域开启器并且经由该可信堡垒区域开启器开启堡垒区域实例。在这样的情况下,存储位置可以从可信堡垒区域开启器获得。

图7说明了根据一个实施例的处理器核心200。处理器核心200可以是用于任何类型处理器的核心,例如微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器或用于执行代码的其他设备。虽然在图7中仅说明了一个处理器核心200,但是处理元件可以可供替换地包括多于一个在图7中说明的处理器核心200。处理器核心200可以是单线程核心,或针对至少一个实施例,处理器核心200可以是多线程的,因为其可以包括每核心多于一个硬件线程上下文(或“逻辑处理器”)。

图7还说明了耦合到处理器核心200的存储器270。存储器270可以是对于本领域的熟练技术人员已知的或可获得的各种各样的存储器(包括各种层次的存储器等级)中的任何一个。存储器270可以包括由处理器核心200执行的一个或多个代码213指令,其中代码213可以实现已经讨论的方法26(图2)、方法36(图3)和/或方法72(图4)。处理器核心200跟随有由代码213指示的指令的程序序列。每一个指令可以进入前端部分210且由一个或多个解码器220处理。解码器220可以生成微操作作为其输出,例如具有预定义格式的固定宽度微操作,或者可以生成其他指令、微指令、或反映原始代码指令的控制信号。所说明的前端部分210还包括寄存器重命名逻辑225和调度逻辑230,一般而言其向与用于执行的转换指令相对应的操作分配资源并且将该操作排成队列。

处理器核心200被示出包括具有一组执行单元255-1到255-n的执行逻辑250。一些实施例可以包括专用于特定的功能或功能组的多个执行单元。其他实施例可以仅包括一个执行单元或者可以执行特定功能的一个执行单元。所说明的执行逻辑250执行由代码指令所指定的操作。

在完成由代码指令所指定的操作的执行之后,后端逻辑260使代码213的指令回退。在一个实施例中,处理器核心200允许乱序执行但是要求指令的有序回退。回退逻辑265可以采用本领域的熟练技术人员已知的各种形式(例如,重排序缓冲器等)。以此方式,处理器核心200在代码213的执行期间被转换,至少在由解码器生成的输出、由寄存器重命名逻辑225利用的硬件寄存器和表格、以及由执行逻辑250修改的任何寄存器(未示出)方面。

虽然在图7中未说明,但是处理元件可以包括具有处理器核心200的芯片上的其他元件。例如,处理元件可以包括存储器控制逻辑与处理器核心200一起。处理元件可以包括i/o控制逻辑和/或可以包括与存储器控制逻辑集成的i/o控制逻辑。处理元件还可以包括一个或多个高速缓存。

现在参考图8,示出的是根据实施例的计算系统1000实施例的框图。在图8中示出的是包括第一处理元件1070和第二处理元件1080的多处理器系统1000。虽然示出了两个处理元件1070和1080,但是应该理解的是,系统1000的实施例还可以仅包括一个这样的处理元件。

系统1000被说明为点对点互连系统,其中第一处理元件1070和第二处理元件1080经由点对点互连1050耦合。应该理解的是,图8中说明的互连中的任何一个或全部可以被实现为多点分支总线而不是点对点互连。

如在图8中所示出的,处理元件1070和1080中的每一个可以是多核处理器,包括第一处理器核心和第二处理器核心(即,处理器核心1074a和1074b和处理器核心1084a和1084b)。这样的核心1074a、1074b、1084a、1084b可以被配置成按照与上文结合图7讨论的类似方式来执行指令代码。

每一个处理元件1070、1080可以包括至少一个共享高速缓存1896a、1896b。共享高速缓存1896a、1896b可以存储分别由诸如核心1074a、1074b和1084a、1084b的处理器的一个或多个组件利用的数据(例如,指令)。例如,共享高速缓存1896a、1896b可以在本地高速缓存在存储器1032、1034中存储的数据,以由处理器的组件更快速地存取。在一个或多个实施例中,共享高速缓存1896a、1896b可以包括一个或多个中级高速缓存,例如级2(l2)、级3(l3)、级4(l4)、或其它级的高速缓存、末级高速缓存(llc)、和/或其组合。

虽然仅示出了两个处理元件1070、1080,但是要理解的是,实施例的范围不受此限制。在其他实施例中,在给定处理器中可以存在一个或多个另外的处理元件。可供替换地,处理元件1070、1080中的一个或多个可以是与处理器不同的元件,例如加速器或现场可编程门阵列。例如,另外的处理元件可以包括与第一处理器1070相同的另外的处理器、与第一处理器1070、加速器(图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列、或任何其他处理元件异构或不对称的另外的处理器。在一系列的绩效指标(包括架构的、微架构的、热的、功耗特征等)方面,在处理元件1070、1080之间可能存在各种差异。这些差异可以有效地将其自身显现为在处理单元1070、1080之间的非对称和异构。对于至少一个实施例,各种处理元件1070、1080可以驻留在相同的晶片封装中。

第一处理元件1070可以进一步包括存储器控制器逻辑(mc)1072和点对点(p-p)接口1076和1078。类似地,第二处理元件1080可以包括mc1082和p-p接口1086和1088。如在图8中示出的,mc1072和1082将处理器耦合到相应的存储器,即存储器1032和存储器1034,其可以是在本地附接到相应处理器的主存储器的部分。虽然mc1072和1082被说明为被集成到处理元件1070、1080中,但是对于可供替换的实施例,mc逻辑可以是在处理元件1070、1080外部的离散逻辑而不是被集成在其中。

第一处理元件1070和第二处理元件1080可以分别经由p-p互连1076、1086耦合到i/o子系统1090。如在图8中所示出的,i/o子系统1090包括p-p接口1094和1098。此外,i/o子系统1090包括用于将i/o子系统1090与高性能图形引擎1038耦合的接口1092。在一个实施例中,总线1049可以用于将图形引擎1038耦合到i/o子系统1090。可供替换地,点对点互连可以耦合这些组件。

继而,i/o子系统1090可以经由接口1096耦合到第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(pci)总线,或诸如pci快速总线或另一第三代i/o互连总线的总线,但是实施例的范围不受此限制。

如在图8中所示出的,各种i/o设备1014(例如,生物计量扫描仪、扬声器、照相机、传感器),连同可以将第一总线1016耦合到第二总线1020的总线桥1018,可以耦合到第一总线1016。在一个实施例中,第二总线1020可以是低引脚数(lpc)总线。在一个实施例中,各种设备可以耦合到第二总线1020,包括例如,键盘/鼠标1012、通信设备1026、以及诸如磁盘驱动或可以包括代码1030的其他大容量存储设备的数据存储单元1019。所说明的代码1030可以实现已经讨论的方法26(图2)、方法36(图3)和/或方法72(图4),并且可以类似于已经讨论的代码213(图7)。进一步地,音频i/o1024可以耦合到第二总线1020并且电池1010可以向计算系统1000供电。

要注意的是,可以预期其他的实施例。例如,代替图8的点对点架构,系统可以实现多点分支总线或另一这样的通信拓扑。此外,图8的元件可以可供替换地使用比图8中示出的更多或更少的集成芯片进行划分。

另外的注释和示例:

示例1可以包括基于虚拟化堡垒区域的计算系统,包括输入输出设备,用于生成数据;显示器,用于在视觉上呈现与所述数据相关联的信息;可信计算基,耦合到所述显示器和所述输入输出设备;堡垒区域页高速缓存(epc)存储器,耦合到所述可信计算基;以及虚拟机监控器装置,包括用于在堡垒区域实例在所述可信计算基中被开启之前,从所述可信计算基外部验证所述堡垒区域实例的身份的身份管理器,用于确定所述堡垒区域实例在epc存储器中的存储位置的页高速缓存管理器,以及用于确认所述存储位置在所述计算系统本地的本地性管理器。

示例2可以包括示例1的计算系统,进一步包括包含非epc缓冲存储器的非加密通道,其中所述堡垒区域实例是代理堡垒区域实例并且所述虚拟机监控器装置进一步包括用于经由所述代理堡垒区域实例和所述非加密通道向所述可信计算基中的一个或多个另外的堡垒区域实例传送所述数据的数据传输组件。

示例3可以包括示例1的计算系统,其中所述身份管理器用于启用虚拟机中的一个或多个退出控制、经由与所述虚拟机相关联的不可信运行时系统(urts)触发所述一个或多个退出控制的执行、进行对与所述一个或多个退出控制的执行相关联的一个或多个参数的分析、以及如果所述分析确认所述堡垒区域实例的身份则开启所述堡垒区域实例,其中所述存储位置是从所述urts获得的。

示例4可以包括示例3的计算系统,其中所述身份管理器用于基于与所述堡垒区域相关联的多个开启指令的一个或多个注释来跟踪所述多个开启指令并且从所述多个开启指令移除所述一个或多个注释。

示例5可以包括示例3的计算系统,其中所述身份管理器用于基于跟踪数据结构来跟踪与所述堡垒区域实例相关联的多个开启指令。

示例6可以包括示例1或2中任何一个的计算系统,其中所述身份管理器用于调用可信堡垒区域开启器并且经由所述可信堡垒区域开启器开启所述堡垒区域实例,并且其中所述存储位置是从所述可信堡垒区域开启器获得的。

示例7可以包括一种虚拟机监控器装置,包括身份管理器,用于在堡垒区域实例在所述堡垒区域实例的可信计算基中被开启之前,从所述可信计算基外部验证所述堡垒区域实例的身份;页高速缓存管理器,用于确定所述堡垒区域实例的存储位置;以及本地性管理器,用于确认所述存储位置在计算系统本地。

示例8可以包括示例7的装置,其中所述堡垒区域实例是代理堡垒区域实例并且所述装置进一步包括用于经由所述代理堡垒区域实例和非加密通道与所述可信计算基中的一个或多个另外的堡垒区域实例进行通信的数据传输组件。

示例9可以包括示例7的装置,其中所述身份管理器用于启用虚拟机中的一个或多个退出控制、经由与所述虚拟机相关联的不可信运行时系统(urts)触发所述一个或多个退出控制的执行、进行对与所述一个或多个退出控制的执行相关联的一个或多个参数的分析、以及如果所述分析确认所述堡垒区域实例的身份则开启所述堡垒区域实例,其中所述存储位置是从所述urts获得的。

示例10可以包括示例9的装置,其中所述身份管理器用于基于与所述堡垒区域实例相关联的多个开启指令的一个或多个注释来跟踪所述多个开启指令并且从所述多个开启指令移除所述一个或多个注释。

示例11可以包括示例9的装置,其中所述身份管理器用于基于跟踪数据结构来跟踪与所述堡垒区域实例相关联的多个开启指令。

示例12可以包括示例7或8中任何一个所述的装置,其中所述身份管理器用于调用可信堡垒区域开启器并且经由所述可信堡垒区域开启器开启所述堡垒区域实例,并且其中所述存储位置是从所述可信堡垒区域开启器获得的。

示例13可以包括一种操作虚拟机监控器装置的方法,包括在堡垒区域实例在所述堡垒区域实例的可信计算基中被开启之前,从所述可信计算基的外部验证所述堡垒区域实例的身份;确定所述堡垒区域实例的存储位置;以及确认所述存储位置在计算系统本地。

示例14可以包括示例13的方法,其中所述堡垒区域实例是代理堡垒区域实例并且所述方法进一步包括经由所述代理堡垒区域实例和非加密通道与所述可信计算基中的一个或多个另外的堡垒区域实例进行通信。

示例15可以包括示例13的方法,进一步包括启用虚拟机中的一个或多个退出控制、经由与所述虚拟机相关联的不可信运行时系统(urts)触发所述一个或多个退出控制的执行、进行对与所述一个或多个退出控制的执行相关联的一个或多个参数的分析、以及如果所述分析确认所述堡垒区域实例的身份则开启所述堡垒区域实例,其中所述存储位置是从所述urts获得的。

示例16可以包括示例15的方法,进一步包括基于与所述堡垒区域实例相关联的多个开启指令的一个或多个注释来跟踪所述多个开启指令,并且从所述多个开启指令移除所述一个或多个注释。

示例17可以包括示例15的方法,进一步包括基于跟踪数据结构来跟踪与所述堡垒区域实例相关联的多个开启指令。

示例18可以包括示例13或14中的任何一个所述的方法,进一步包括调用可信堡垒区域开启器,并且经由所述可信堡垒区域开启器开启所述堡垒区域实例,其中所述存储位置是从所述可信堡垒区域开启器获得的。

示例19可以包括至少一种计算机可读存储介质,其包括一组指令,所述指令在由计算系统执行时使得所述计算系统:在堡垒区域实例在所述堡垒区域实例的可信计算基中被开启之前从所述可信计算基的外部验证所述堡垒区域实例的身份,确定所述堡垒区域实例的存储位置,以及确认所述存储位置在计算系统本地。

示例20可以包括示例19的至少一种计算机可读存储介质,其中所述堡垒区域实例是代理堡垒区域实例并且所述指令当被执行时使得所述计算系统经由所述代理堡垒区域实例和非加密通道与所述可信计算基中的一个或多个另外的堡垒区域实例进行通信。

示例21可以包括示例19的至少一种计算机可读存储介质,其中所述指令当被执行时使得所述计算系统启用虚拟机中的一个或多个退出控制、经由与所述虚拟机相关联的不可信运行时系统(urts)触发所述一个或多个退出控制的执行、进行对与所述一个或多个退出控制的执行相关联的一个或多个参数的分析、以及如果所述分析确认所述堡垒区域实例的身份则开启所述堡垒区域实例,其中所述存储换位置是从所述urts获得的。

示例22可以包括示例21的至少一种计算机可读存储介质,其中所述指令在被执行时使得所述计算系统基于与所述堡垒区域实例相关联的多个开启指令的一个或多个注释来跟踪所述多个开启指令,并且从所述多个开启指令移除所述一个或多个注释。

示例23可以包括示例21的至少一种计算机可读存储介质,其中所述指令当被执行时使得所述计算系统基于跟踪数据结构来跟踪与所述堡垒区域实例相关联的多个开启指令。

示例24可以包括示例19或20中任何一个的至少一种计算机可读存储介质,其中所述指令当被执行时使得所述计算系统调用可信堡垒区域开启器,并且经由所述可信堡垒区域开启器开启所述堡垒区域实例,其中所述存储位置是从所述可信堡垒区域开启器获得的。

示例25可以包括一种虚拟机监控器装置,包括用于在堡垒区域实例在所述堡垒区域实例的可信计算基中被开启之前,从所述可信计算基的外部验证所述堡垒区域实例的身份的单元,用于确定所述堡垒区域实例的存储位置的单元,以及用于确认所述存储位置在计算系统本地的单元。

示例26可以包括示例25的装置,其中所述堡垒区域实例是代理堡垒区域实例并且所述装置进一步包括用于经由所述代理堡垒区域实例和非加密通道与所述可信计算基中的一个或多个另外的堡垒区域实例进行通信的单元。

示例27可以包括示例25的装置,进一步包括用于进行以下操作的单元:启用虚拟机中的一个或多个退出控制、经由与所述虚拟机相关联的不可信运行时系统(urts)触发所述一个或多个退出控制的执行,对与所述一个或多个退出控制的执行相关联的一个或多个参数进行分析,并且如果所述分析确认所述堡垒区域实例的身份,则开启所述堡垒区域实例,其中所述存储位置是从所述urts获得的。

示例28可以包括示例27的装置,进一步包括用于基于与所述包括区域实例相关联的多个开启指令的一个或多个注释来跟踪所述多个开启指令的单元,以及用于从所述多个开启指令移除所述一个或多个注释的单元。

示例29可以包括示例27的装置,进一步包括用于基于跟踪数据结构来跟踪与所述堡垒区域实例相关联的多个开启指令的单元。

示例30可以包括示例25或26中任何一个所述的装置,进一步包括用于调用可信堡垒区域开启器的单元,以及用于经由所述可信堡垒区域开启器开启所述堡垒区域实例的单元,其中所述存储位置是从所述可信堡垒区域开启器获得的。

从而,本申请中描述的技术可以使得vmm能够在其被开启之前验证堡垒区域的身份(例如,密码哈希)。vmm还可以能够识别堡垒区域占用的epc页,因为vmm控制页添加。这样的方案可以使得vmm能够将这些页精确地包含在ept保护的实体中。还可能存在恶意代理企图拆毁部分堡垒区域的场景。本申请中描述的技术可以通过虚拟化指令避免页卸载。通过验证页加载并且在视图被创建之前避免页卸载,vmm可以将堡垒区域包装在视图(例如,排他的ept)中。因此,vmm可以安全地开启堡垒区域,知道堡垒区域epc范围并确定堡垒区域身份(使用相关联的测量)。

在一些实例中,堡垒区域可以评估vmm的身份(例如,使用可信平台模块/tpm测量或其他证书)。当堡垒区域信任该身份时,堡垒区域还可以知道其关于vmm具有本地性,因为信任使本地性具有可传递的属性。方法36(图3)的示例对于vmm供应商可能更有利,但是可能涉及开启指令的虚拟化。方法72(图4)的示例也可能涉及使用针对可信开启的vmmept保护,但是可以使用公知的技术将这些保护输出到环0中。

实施例适用于与所有类型的半导体集成芯片(“ic”)芯片一起使用。这些ic芯片的示例包括但不限于处理器、控制器、芯片集组件、可编程逻辑阵列(pla)、存储器芯片、网络芯片、片上系统(soc)、ssd/nand控制器asic等。此外,在一些附图中,利用线来表示信号导线。一些可以不同以指示更多的构成信号路径,具有数字标签以指示多个构成信号路径,和/或在一个或多个端部具有箭头以指示主要信息流方向。但是,这不应以限制的方式进行解释。而是,这样添加的细节可以结合一个或多个示例性实施例使用,以便于更容易地理解电路。任何表示的信号线,无论是否具有另外的信息,实际上都可以包括可以在多个方向上行进的一个或多个信号并且可以利用任何适当类型的信号方案来实现,例如,利用差分对实现的数字或模拟线、光纤线、和/或单端线。

已经给出了示例性的尺寸/模型/值/范围,但是实施例不受限于此。由于制造技术(例如,光刻法)随着时间成熟,所以可以预期可以制造较小尺寸的设备。此外,为了说明和讨论的简单,到ic芯片和其他组件的公知的电源/接地连接可以在图中示出或不示出,以不混淆实施例的某些方面。此外,为了避免混淆实施例,并且还鉴于针对实现这样的框图布置的细节高度依赖于要在其中实现实施例的计算系统的事实,即这样的细节应该在本领域的熟练技术人员的范围之内,可以以框图的形式示出布置。在为了描述示例性实施例给出具体细节(例如电路)的情况下,应该明白的是,对本领域的熟练技术人员而言,可以在没有这些具体细节或具有这些具体细节的变化的情况下实施这些实施例。从而,将上述描述视为说明性的而不是限制性的。

可以在本申请中使用术语“耦合”来指代在所讨论的组件之间的任何类型的关系、直接的或间接的,并且可以应用于电气、机械、流体、光学、电磁、电机或其他连接。此外,在本申请中可以仅为了便于讨论而使用术语“第一”、“第二”等,并且除非指示否则并不承载特定的时间或按照时间顺序的重要性。

如在本申请中和在权利要求书中所使用的,通过术语“一个或多个”连接的项目列表可以指代所列出术语的任何组合。例如,短语“a、b或c中的一个或多个”可以指代:a;b;c;a和b;a和c;b和c;或a,b和c。

从前述描述本领域的熟练技术人员将明白的是,可以以各种形式来实现实施例的广泛技术。从而,虽然已经结合其特定示例描述了实施例,但是实施例的真实范围不应局限于此,因为对于熟练的实施者而言,在研究附图、说明书和随后的权利要求书之后其他的修改将变得显而易见。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1