通过重定向系统管理中断和创建虚拟机容器来抵御非可信系统管理代码的系统和方法

文档序号:6414287阅读:309来源:国知局
专利名称:通过重定向系统管理中断和创建虚拟机容器来抵御非可信系统管理代码的系统和方法
技术领域
本发明总地涉及微处理器系统,更具体地说,涉及可以在可信或安全环境中运行的微处理器系统。
背景技术
处理器可以根据系统操作的即时需求而运行在几种处理器操作模式中。通常,处理器可以具有管理员模式、用户模式,有时还具有其他专用模式。管理员模式可以支持操作系统的执行,并且可以使大多数指令得到执行,包括特权指令。在管理员模式中可以对不同的地址空间和外围设备进行访问。而与管理员模式相比,用户模式可能只限于非特权指令,使得用户代码不能干扰系统功能。
经常出现的情况是商业上发行的软件不能与特定的原始设备制造商(OEM)的硬件组完美配合。由于说明书误解或实现错误,可能存在的情形是软件试图按照硬件没有预期或不支持的方式访问硬件。简单的例子可能是软件程序期望把值放入地址x上的寄存器内,然而硬件内的实际寄存器是在地址x+y上。这可能引起系统异常。
为了处理这样的情形,可以设计处理器来支持这样一种操作模式,其为了执行低级修补程序,具有以操作系统透明或准透明的方式或者以特权级独立的方式来运行的能力。为了本申请,这样的模式可以被定义为“子操作系统模式(sub operating system mode)”。一种这样的模式是IntelPentium处理器系列和兼容处理器的系统管理模式(SMM)。(参见IntelPentium4处理器软件开发者手册第14章,卷III,2001版,序号245472,可以从美国加利福尼亚圣克拉拉的英特尔公司获得)。其他子操作系统模式可以存在于MIPS TechnologiesMIPS32TM或MIPS64TM体系结构处理器、IBMPowerPCTM体系结构处理器、SPARC InternationalSPARC体系结构处理器、或许多其他处理器内。子操作系统模式的存在可能具有额外的系统优点,例如支持转换到断电模式。为了处理上述软件和硬件失配,现有的子操作系统模式实现可以没有任何特权限制或地址映射限制。子操作系统模式可以由专用子操作系统模式中断来激活(invoke),有时由系统固件或系统硬件产生。这个专用子操作系统模式中断通常被设计成不可屏蔽的,以便响应进入模式所需的紧急事件。
子操作系统模式通常可以具有下列主要机制。进入模式的唯一途径是依靠专用子操作系统模式中断。在SMM的情况下,专用子操作系统模式中断被称为系统管理中断(SMI)。处理器可以执行在单独的地址空间内的模式代码。例如,当模式是SMM时,所述单独的地址空间允许访问系统管理随机访问存储器(SMRAM),对于其他操作模式而言,该SMRAM不能被访问。当进入所述模式时,处理器把被中断的程序或任务的上下文保存在所述单独地址空间内。例如,在SMM中,上下文被保存在SMRAM内。在该模式内的执行期间,可以禁用正常的中断。最后,依靠恢复指令可以退出该模式,所述恢复指令只有在该模式内执行时才可以被执行。
在本地或远程微型计算机上执行的金融和个人事务在数量上的不断增加已经推动了“可信”或“安全”微处理器环境的建立。这些环境试图要解决的问题是私密丢失(loss ofprivacy)或者数据被破坏或滥用。用户不想公开他们的私人数据。他们也不想在不适当的事务中改变或使用他们的数据。这样的例子包括非故意地泄露医疗记录或者从在线银行或其他存放处电子盗窃资金。类似地,内容提供者设法保护数字内容(例如,音乐、其他音频、视频或其他类型的一般数据)在未经授权的情况下被复制。
对于安全或可信系统的设计者来说,子操作系统模式例如SMM的存在是一种设计挑战。这样的子操作系统模式没有特权限制或地址映射限制的事实与安全或可信系统体系结构不相容。并且通过试图屏蔽上述模式的专用中断,通常也无法避免这种特权限制或地址映射限制的缺少,因为这些中断通常被设计成不可屏蔽的。


在附图中本发明是以实施例的方式,而不是以限定的方式来说明的,附图中相同的附图标号表示类似的元件,其中图1是现有实施方式中系统管理RAM内的系统管理模式代码的存储器映射。
图2是根据一种实施方案,具有可信和非可信区的示例性软件环境图。
图3是根据本发明一种实施方案,适合于支持图2的软件环境的示例性微处理器系统的示意图。
图4是根据本发明一种实施方案,示出运行在虚拟机容器中的系统管理代码的图。
图5是根据本发明一种实施方案,示出系统管理中断重定向的图。
图6是根据本发明另一种实施方案,适合于支持图2的软件环境的示例性微处理器系统的示意图。
图7是根据本发明另一种实施方案,示出系统管理中断重定向的图。
具体实施例方式
下面的说明描述了允许在微处理器系统中的可信或安全环境内执行某种系统管理模式代码的技术。在下面说明中,为了更彻底地理解本发明,阐述了许多具体细节,例如逻辑实现、软件模块分配、加密技术、总线信令技术、以及操作细节。然而,本领域技术人员将能理解,没有上述具体细节也可以实施本发明。此外,为了不混淆本发明,没有详细示出控制结构、门级电路和全部软件指令序列。获悉本文所包含的说明的本领域普通技术人员无需超出常规的试验就能够实现适当的功能性。本发明是以微处理器系统的形式公开的。然而,以其他处理器的形式也可以实现本发明,例如数字信号处理器、小型计算机或大型计算机。
为了在安全或可信环境内允许受限的子操作系统模式代码执行,子操作系统模式中断可以首先被定向到可信代码内的处理程序,所述处理程序控制虚拟机对系统资源的访问。可以通过允许可信代码对处理器内的中断服务寄存器进行读写来实现到处理程序的这种定向,所述寄存器包括服务上述子操作系统模式中断所需要的代码的位置。(中断服务寄存器通常可以定义为在接收到中断时用于确定应当执行的代码的寄存器。)然后,子操作系统模式中断将被重定向到子操作系统模式代码来进行中断服务,所述子操作系统模式代码位于在上述可信代码的安全控制下的另一虚拟机内。可替换地,微处理器的虚拟化体系结构可以是这样的,就是当已经建立了可信代码时,子操作系统模式中断将不再使用正常中断服务寄存器,相反将会引起向与虚拟化体系结构一致的可信代码的转换。
在子操作系统模式是系统管理模式(SMM)的示例性情况下,安全或可信环境内的SMM代码执行可以通过使系统管理中断(SMI)首先被定向到安全虚拟机监控程序(SVMM)内的处理程序而开始。可以通过允许SVMM对处理器内的系统管理基址(SMBASE)寄存器(PSMBASE)进行读写来实现定向到处理程序。然后,SMI将被重定向到位于虚拟机(VM)内的SMM代码,所述虚拟机是在SVMM的安全控制下。可替换地,处理器的虚拟化体系结构可以禁止(disable)PSMBASE寄存器的使用,并且使所有的SMI被直接重定向到SVMM。
在一种实施方案中,SMM代码可以被授权访问除存储器内受保护的页面(pages)之外的所有系统资源、以及维持这一保护的相关系统控制。为了实现这个,在安全操作的初始化之后,SMI可以首先被定向到SVMM内的处理程序。这个处理程序可以为SMM代码建立适当的虚拟机(VM)容器,并且使SMI被重定向到那个代码。通过在VM容器内执行SMM代码,可以防止SMM代码访问各种系统资源,例如SVMM已经认为受到保护的存储器。在一种实施方案中,SMM代码现在可以被写入以符合VM要求。一种这样的符合变化可以是按照平面保护模式或某一其他页面存储器访问模式写入SMM代码。
现在参考图1,图中所示为在一种实施方案中,系统管理随机访问存储器(SMRAM)内的系统管理模式(SMM)代码的存储器映射。在正常的系统初始化期间,系统随机访问存储器(RAM)110的一部分可以被留出,用于由SMM代码独占使用。这个留出部分称为系统管理RAM(SMRAM)。芯片组或处理器内的中断服务寄存器可以指向SMRAM内的具体存储位置,所述中断服务寄存器在一种实施方案中被称为系统管理基址(SMBASE)寄存器。
芯片组SMBASE寄存器的内容CSMBASE可以定义SMRAM的边界。例如,SMRAM可以占据CSMBASE 120和CSMBASE+FFFF(十六进制)132之间的空间。在其他实施方案中,为了支持两个或多个处理器同时执行SMM代码,每个处理器可以具有它自己的专用SMRAM空间。处理器的SMBASE寄存器内容PSMBASE可以定义SMRAM内的代码入口点和状态保存位置。例如,在SMRAM内,标准的代码入口点可以位于CSMBASE+8000(十六进制)124。在系统初始化时,CSMBASE的值可以被写入每个处理器的SMBASE寄存器,从而允许每个处理器在接收到SMI时转向SMM代码入口点。在进入SMM代码之前,在一种实施方案中,处理器可以把状态数据存储在地址PSMBASE+FE00(十六进制)128和SMBASE+FFFF(十六进制)132位置上的SMRAM末端之间的状态保存区内。在其他实施方案中,为了支持两个或多个处理器同时执行SMM代码,每个处理器的SMBASE寄存器可以包含不同的PSMBASE值,允许代码入口点和存储状态数据的位置不同。
状态数据可以包括控制寄存器的值、标志、自动中断重启动字段、输入/输出(I/O)指令重启动字段、以及SMM修订版标识符。SMRAM内的某些位置可以由SMI处理程序进行修改。SMM代码执行一旦完成,当处理器执行恢复(RSM)指令时,可以重新输入原始程序。这个现有的RSM指令只可以在SMM内发出,并且RSM指令恢复以前存储在SMRAM内的状态值。这个现有SMM设计的使用是本领域公知的。
现在参考图2,图中所示为根据本发明一种实施方案的示例性可信或安全软件环境图。在图2的实施方案中,可信或安全软件可以同时被加载,并且可以在单个计算机系统上同时执行。SVMM 250可选择地允许或防止非可信操作系统240(或者,如果多个非可信虚拟机被实现,则为多个操作系统)和非可信应用程序210-230对硬件资源280的直接访问。在这个上下文中,“非可信”并不一定是指操作系统或应用程序正在故意错误运行,而是指交互作用的代码的大小和种类使得可靠地断言软件正在按照预想运行变得不切实际,并且是指没有病毒或其他无关代码正在干扰它的执行。在典型的实施方案中,非可信代码可能是由在当今的个人计算机上常见的操作系统和应用程序组成。
SVMM 250也可选择地允许或防止一个或多个可信或安全核心程序260以及一个或多个可信应用程序270直接访问硬件资源280。可以限制上述可信或安全核心程序260和可信应用程序270的大小和功能性,从而有助于在其上完成信任分析的能力。可信应用程序270可以是在安全环境中可执行的任何软件代码、程序、例程或例程组。因此,可信应用程序270可以是各种应用程序或代码序列,或者可以是相对较小的应用程序,例如Javaapplet程序。
由能改变系统资源保护或特权的操作系统240或核心程序260正常执行的指令或操作可以被SVMM 250陷入(trap),并且被可选择地允许、部分允许或拒绝。作为实施例,在典型的实施方案中,改变在正常情况下将由操作系统240或核心程序260执行的处理器页面表的指令将会被SVMM 250陷入,这将确保所述请求不是在试图改变在它的虚拟机辖域之外的页面特权。察看这个系统的一种方法是操作系统240、核心程序260、以及SVMM 250都是虚拟机,其中操作系统240虚拟机和核心程序260虚拟机都在SVMM 250虚拟机内执行。因此创建了虚拟机层次结构。这时在一种实施方案中,虚拟机可以被定义为任何的多用户共享资源操作系统,所述系统给每个用户以能单独控制所有系统资源的感觉,或者虚拟机也可以被定义为反过来由底层控制程序进行管理的操作系统。
现在参考图3,图中所示为适合于支持图2安全软件环境的微处理器系统300的一种实施方案。CPU A 310、CPU B 314、CPU C 318以及CPU D 322可以配置有附加的微代码或逻辑电路用以支持执行特殊指令。在一种实施方案中,处理器可以是IntelPentium级的微处理器,其中根据本发明的实施方案进行了某些特殊修改。这些特殊指令可以支持在系统总线320上发布专用总线消息,所述总线消息可以使处理器内的SVMM 250操作能够适当同步。类似地,芯片组330可以支持系统总线320上的上述特殊周期。物理处理器的数量可以根据具体实施方案的实现来改变。
在图3的实施方案中,四个处理器CPU A 310、CPU B 314、CPU C 318以及CPU D322图示为四个单独的硬件实体。在其他实施方案中,处理器的数量可以不同。实际上,这些处理器可以用分别在多个物理处理器之一上运行的单独线程来替换。在后者情况下,这些线程拥有许多附加物理处理器的属性。为了用一般的表达方式来讨论使用多个物理处理器和多个在处理器上的线程的任何混合,表达“逻辑处理器”可以用来描述一个物理处理器或在多个物理处理器之一内运行的线程。因此,一个单线程处理器可以认为是一个逻辑处理器,多线程或多核心处理器可以认为是多个逻辑处理器。
在一种实施方案中,对处理器的修改可以包括对寄存器性能的改变以及新的或经过修改的指令。例如,在一种实施方案中,CPU C 318可以包括新指令安全输入(SENTER)324。SENTER 324指令在执行时可以使如上面图2中所示的安全或可信操作开始。SENTER324可以使多个逻辑处理器能够同步进入安全或可信操作。在一种实施方案中,SENTER324也可以在某些情况下允许对CPU C 318的PSMBASE寄存器316进行写入,以支持安全或可信SMM操作。
在一种实施方案中,CPU C 318也可以包括修改的恢复(RSM)326指令。修改的RSM 326可以允许从支持安全或可信操作的SMM中返回。通常,RSM指令可以只从SMM内部执行。修改的RSM 326可以从普通的页面模式内执行。当用激活的VM扩展名调用时,修改的RSM 326指令可以完成被称为VMexit的特殊系统调用,返回到用于SMI的SVMM处理程序。
芯片组330可以服务通过系统总线320从CPU传送的读写请求,然后,可以对物理存储器334执行物理读写操作。通过包含CSMBASE值的芯片组SMBASE寄存器331可以协助存储器334内的SMRAM分配。芯片组330另外可以连接到专用的输入/输出(I/O)通道,例如加速图形接口(AGP)336。芯片组330可以控制从CPU A 310、CPU B 314、CPU C 318、CPU D 322以及另外从I/O设备对物理存储器334内的存储器页面的访问。这样的设备可以包括大容量存储设备,例如固定介质344或可移动介质348。固定介质344或可移动介质348可以是磁盘、磁带、磁碟、磁光驱动器、CD-ROM、DVD-ROM、闪存卡,或许多其他形式的大容量存储设备。经由外围部件互接(PCI)总线346,或者可替换地,经由通用串行总线(USB)342、集成控制器电子设备(IDE)总线(未图示)或小型计算机系统互接(SCSI)总线(未图示),固定介质344或可移动介质348可以连接到芯片组330。
SVMM 364可以允许或拒绝VM对存储器334内特定页面的访问。拒绝VM访问的存储器页面可以称为“锁定”页面,而允许VM访问的存储器页面可以称为“解锁”页面。SVMM 364以及SVMM 364内的模块可以位于锁定存储器页面360内以支持安全SMM操作。在一种实施方案中,上述模块可以包括SVMM SMM处理程序366和虚拟机退出(VMexit)/虚拟机调用(VMcall)处理程序368。在其他实施方案中,SVMM SMM处理程序366和VMexit/VMcall处理程序368的功能可以组合起来或者可以分布在其他模块中。其他存储器页面可以保持解锁,例如解锁存储器页面362。标准操作系统372可以位于解锁存储器页面362内。SMM虚拟机(SMM VM)370也可以位于解锁存储器页面362内。SMM VM 370可以包括软件代码,所述软件代码类似于标准SMM代码但被修改以在虚拟机容器内运行。SMM VM 370内的上述修改可以包括准备以页面模式而不是普通SMM来执行的代码。
在图3的实施方案中,图示为在单个独立的集成电路上来实现芯片组330的存储器控制器和I/O设备控制器功能。在替换性实施方案中,独立的存储器控制器集成电路通常可以实现上述芯片组330的存储器控制器功能。类似地,独立的I/O设备控制器集成电路通常可以实现上述芯片组330的I/O设备控制器功能。在另外的实施方案中,可以在CPU集成电路上的电路内实现芯片组330的存储器控制器功能,允许几个CPU各自能直接访问一定数量的物理存储器。在这样的实施方案中,芯片组330的存储器控制器功能可以被分割在几个CPU集成电路中,或者对于多个处理器,可以包括在单个管芯(die)上。
现在参考图4,图示了根据本发明一种实施方案在虚拟机(VM)容器内运行的系统管理代码(SMM)。在图4的实施方案中,SVMM 450具有两个附加模块以支持安全或可信SMM操作。SVMM SMM处理程序452在SMM VM490内建立SMM代码,以响应SENTER指令的执行。VMexit/VMcall处理程序454处理进入及退出SMM VM 490,这是由于SMM VM 490在它的VM容器内的有意更低的特权级。在某些实施方案中,SVMMSMM处理程序452和VMexit/VMcall处理程序454可以是同一软件模块。
SVMM SMM处理程序452可以执行几项功能。在转换成安全或可信操作期间,在处理器执行SENTER指令之后,SVMM SMM处理程序452在虚拟机容器内加载并启动SMM VM 490代码。在某些实施方案中,SVMM SMM处理程序452然后将把其自身内的入口位置写入系统中每个处理器的修改后的SMBASE寄存器内。这个入口位置允许SMI首先被定向到SVMM SMM处理程序452。对于其他实施方案来说可以不需要调用VMexit/VMcall处理程序454来直接响应系统-管理中断;对于这些实施方案来说,SVMMSMM处理程序452和VMexit/VMcall处理程序454将组合成一个软件模块。SVMM SMM处理程序452也在锁定存储器页面内建立空间,用以存储在进入SMM操作时需要保存的状态数据。上面结合图1论述了状态数据的实施例。把这个状态数据放入锁定存储器页面内,这样防止了状态数据的未授权公开或操纵。
VMexit/VMcall处理程序454可以执行几项功能。VMexit/VMcall处理程序454可以在初始进入之后处理进入及退出SMM VM 490。VMexit/VMcall处理程序454也可以处理在SMM VM 490试图读写锁定存储器页面时产生的例外。VMexit/VMcall处理程序454的若干部分可以根据情况确定这些对锁定存储器页面的读写中的某些是否应该被允许进行。在一种实施方案中,如果VMexit/VMcall处理程序454确定在锁定存储器页面内指定的位置不包含可信数据,则可以允许对锁定存储器页面进行读写。
SMM VM 490包含预想的SMM代码,该代码从SMM模式格式修改为现在以存储器页面访问模式来执行。通常,除了那些用于创建对锁定存储器页面的存储器读写的指令的例外情形之外,SMM VM 490内的SMM代码根据写入来执行。在那些情形中,SMM代码可以调用VMexit/VMcall处理程序454。SMM代码可以显式调用VMexit/VMcall处理程序454,或者通过允许例外来陷入而间接调用VMexit/VMcall处理程序454。在任一情形下,VMexit/VMcall处理程序454都会处理这些情况。
现在参考图5,图示了根据本发明一种实施方案的系统管理中断重定向的图。考虑在安全或可信操作启动之后在硬件480内的SMI产生事件。处理器检查它的SMBASE寄存器。由于SVMM SMM处理程序452在启动之后将一个内部存储器位置写入处理器中修改后的SMBASE寄存器内,处理器开始执行SVMM SMM处理程序452。SVMM SMM处理程序452把状态数据存储在锁定存储器页面内,然后发出对SMM VM 490内的实际SMM代码的虚拟模式进入(VMenter)调用。在另一种实施方案中,SMI可以引发SVMM的VMexit处理程序的调用。
SMM VM 490内的SMM代码执行,直到它试图对锁定存储器页面内的存储器位置进行读写。然后,通过显式调用或者通过导致陷入的例外,可以使VMexit/VMcall 524调用VMexit/VMcall处理程序454。VMexit/VMcall处理程序454执行它认为可允许的那些存储器访问,然后,通过另一VMenter 522返回到SMM VM 490。这个过程可以重复几次直到完成了SMM VM 490内的预想SMM代码。此时,SMM代码经由最后的VMexit/VMcall 524退出到VMexit/VMcall处理程序454。对于某些实施方案来说,通过执行修改后的恢复指令SMM VM代码RSM 526,VMexit/VMcall处理程序454接着将退出到SVMM SMM处理程序452。这使得SVMM SMM处理程序452恢复被存储在锁定存储器页面内(可能被VMexit/VMcall处理程序454修改)的状态数据。对于其他实施方案来说,SVMM SMM处理程序452和VMexit/VMcall处理程序454可以组合起来,并且这些操作可以用软件来实现。一旦恢复了状态数据,处理器继续它的初始操作。
现在参考图6,图示了根据本发明另一种实施方案,适合于支持图2的软件环境的示例性微处理器系统的示意图。CPU A 610、CPU B 614、CPU C 618以及CPU D 622可以用附加的微代码或逻辑电路来配置,以支持特殊指令的执行。在一种实施方案中,对处理器的修改可以包括对寄存器性能的改变以及新的或修改的指令。例如,在一种实施方案中,CPU C 618可以包括新指令“虚拟机监控程序初始化”(VMMINIT)624。VMMINIT 624指令在执行时可以使如上面图2中所示的安全或可信操作开始。在一种实施方案中,VMMINIT 624也可以在某些情况下禁用(disable)CPU C 618的PSMBASE寄存器616的正常操作,以支持安全或可信SMM操作。在这样的实施方案中,CPU C 618然后可以将SMI重定向到VMexit/VMcall处理程序668内按照安全环境规则而预置的代码入口点和状态存储区。
在一种实施方案中,CPU C 618也可以包括修改的恢复(RSM)626指令。修改的RSM 626可以允许从支持安全或可信操作的SMM中返回。通常,RSM指令只可以从SMM内部执行。修改的RSM 626可以从普通页面模式内执行。当用激活的VM扩展名调用时,修改的RSM 626指令可以执行被称为VMexit的特殊系统调用,返回以调用VMexit/VMcall处理程序668。
芯片组630可以服务通过系统总线620从CPU传送的读写请求,然后,可以对物理存储器634执行物理读写操作。利用包含CSMBASE值的芯片组SMBASE寄存器631,可以协助存储器634内的SMRAM分配。
SVMM 664可以允许或拒绝VM对存储器634内特定页面面的访问。拒绝VM访问的存储器页面可以称为“锁定”页面,而允许VM访问的存储器页面可以称为“解锁”页面。SVMM 664以及SVMM 664内的模块可以位于锁定存储器页面660内以支持安全SMM操作。在一种实施方案中,所述模块可以包括VMexit/VMcall处理程序668。在其他实施方案中,VMexit/VMcall处理程序668的功能可以组合起来或者可以分布在其他模块中。其他存储器页面可以保持解锁,例如解锁存储器页面662。标准操作系统672可以位于解锁存储器页面662内。SMM VM 670也可以位于解锁存储器页面662内。SMM VM 670可以包括软件代码,所述软件代码类似于标准SMM代码但被修改以在虚拟机容器内运行。SMM VM 670内的上述修改可以包括准备以页面模式而不是普通SMM来执行的代码。
现在参考图7,图示了根据本发明另一种实施方案的系统管理中断重定向的图。在图7的实施方案中,SVMM 750具有两个附加模块以支持安全或可信SMM操作。在一种实施方案中,VMexit/VMcall处理程序754在SMM VM 790内建立SMM代码,以响应VMMINIT指令的执行,另外还处理进入及退出SMM VM 790,这是由于SMM VM 790在它的VM容器内的有意更低的特权级。
VMexit/VMcall处理程序754可以执行几项功能。在转换成安全或可信操作期间,在处理器执行VMMINIT指令之后,VMexit/VMcall处理程序754在虚拟机容器内加载并启动SMM VM 790代码。VMexit/VMcall处理程序754也在锁定存储器页面内建立空间,用以存储在进入SMM操作时需要被保存的状态数据。
VMexit/VMcall处理程序754可以执行几项功能。VMexit/VMcall处理程序754可以处理进入及退出SMM VM 790。VMexit/VMcall处理程序754也可以处理在SMM VM 790试图读写锁定存储器页面时产生的例外。VMexit/VMcall处理程序754中的若干部分可以根据情况来确定这些对锁定存储器页面的读写中的某些是否应该被允许进行。在一种实施方案中,如果VMexit/VMcall处理程序754确定在锁定存储器页面内指定的位置不包括可信数据,则可以允许对锁定存储器页面进行读写。
SMM VM 790包含预想的SMM代码,该代码从SMM模式格式修改为现在以存储器页面访问模式来执行。通常,除了那些用于创建对锁定存储器页面的存储器读写的指令的例外情形之外,SMM VM 790内的SMM代码根据写入来执行。在那些情形下,SMM代码可以调用VMexit/VMcall处理程序754。SMM代码可以显式调用VMexit/VMcall处理程序754,或者通过允许例外来陷入而间接调用VMexit/VMcall处理程序754。在任一情形下,VMexit/VMcall处理程序754都会处理这些情况。
考虑在安全或可信操作启动之后硬件780内的SMI产生事件。处理器检查它的SMBASE寄存器。由于VMMINIT的执行禁用了对处理器内修改后的SMBASE寄存器进行正常操作,因此处理器从按照安全环境规则预置的代码入口点开始执行VMexit/VMcall处理程序754。VMexit/VMcall处理程序754把状态数据存储在锁定存储器页面内,然后发出对SMM VM 790内的实际SMM代码的VMenter调用722。
SMM VM 790内的SMM代码执行,直到它试图对锁定存储器页面内的存储器位置进行读写。然后,通过显式调用或者通过导致陷入的例外,可以使VMexit/VMcall 724调用VMexit/VMcall处理程序754。VMexit/VMcall处理程序754执行它认为可允许的那些存储器访问,然后,通过另一VMenter 722返回到SMM VM 790。这个过程可以重复几次直到完成了SMM VM 790内的预想SMM代码。此时,SMM代码经由最后的VMexit/VMcall 724退出到VMexit/VMcall处理程序754。对于某些实施方案来说,通过首次执行修改后的恢复指令,VMexit/VMcall处理程序454接着将退出到正常的SVMM 750操作。这使得VMexit/VMcall处理程序754恢复被存储在锁定存储器页面内(可能被VMexit/VMcall处理程序754修改)的状态数据。一旦恢复了状态数据,处理器将继续它的初始操作。
虽然公开的不同实施方案包括两个或多个处理器(逻辑或物理处理器),但应该理解,更具体地描述了这样的多处理器和/或多线程系统以解释增加的复杂性,所述复杂性与确保具有多个逻辑处理器或物理处理器的系统的安全有关。在复杂程度较低的系统中,同样可能有利的实施方案可以只使用一个处理器。在某些情况下,一个物理处理器可以是多线程运行的,从而可以包括多个逻辑处理器。然而,在其他情况下,可以使用单处理器、单线程系统,但仍然利用所公开的安全处理技术。在上述情况下,所述安全处理技术仍然可以减少以未授权方式窃取或操纵数据的可能性。
在前述说明书中,已经参考本发明的示例性实施方案对其进行了描述。然而,显然可以对本发明进行各种修改和变化而不脱离所附权利要求书所提出的本发明更宽的精神和范围。因此把说明书和附图看作示例性的而不是限制性的。
权利要求
1.一种系统,包括处理器,所述处理器以用户模式、管理员模式以及子操作系统模式运行,用以接收子操作系统模式中断;第一代码,所述第一代码包含在第一虚拟机内;以及第一处理程序,所述第一处理程序包含在第二虚拟机中的可信代码内,用以将所述子操作系统模式中断重定向到所述第一代码。
2.如权利要求1所述的系统,其中所述可信代码将中断服务寄存器写入所述处理器内。
3.如权利要求2所述的系统,其中所述中断服务寄存器是系统管理基址寄存器,并且其中所述子操作系统模式中断是系统管理中断。
4.如权利要求1所述的系统,其中所述第一代码以页面模式来执行。
5.如权利要求4所述的系统,其中所述第一代码是系统管理模式代码。
6.如权利要求1所述的系统,在所述可信代码内还包括第二处理程序,用以在试图访问存储器的锁定页面时被调用。
7.如权利要求6所述的系统,其中所述第二处理程序确定是否允许访问所述存储器的所述锁定页面。
8.如权利要求6所述的系统,其中所述第二处理程序通过发出修改的恢复指令而开始从所述第一代码退出。
9.如权利要求8所述的系统,其中所述修改的恢复指令能够以页面模式来执行。
10.如权利要求1所述的系统,其中所述第一处理程序在存储器的锁定页面内建立空间用以存储状态数据。
11.如权利要求1所述的系统,其中所述第一代码位于存储器的解锁页面内。
12.如权利要求1所述的系统,其中所述系统包括单处理器系统。
13.如权利要求1所述的系统,其中所述可信代码将禁用所述处理器内的中断服务寄存器。
14.如权利要求13所述的系统,其中所述中断服务寄存器是系统管理基址寄存器,并且其中所述第一中断是系统管理中断。
15.如权利要求1所述的系统,其中所述可信代码内的所述第一处理程序在试图访问存储器的锁定页面时被调用。
16.如权利要求15所述的系统,其中所述第一处理程序确定是否允许访问所述存储器的所述锁定页面。
17.如权利要求15所述的系统,其中所述第一处理程序通过发出修改的恢复指令而开始从所述第一代码退出。
18.如权利要求1所述的系统,其中所述修改的恢复指令能够以页面模式来执行。
19.一种方法,包括将子操作系统模式中断定向到第二虚拟机内的可信代码中的第一处理程序;将状态存储在存储器中的锁定页面内;以及将第一代码输入第一虚拟机内。
20.如权利要求19所述的方法,还包括从所述第一代码调用所述可信代码中的第二处理程序。
21.如权利要求20所述的方法,其中所述调用是在所述第一代码访问存储器中的所述锁定页面之后。
22.如权利要求19所述的方法,其中所述第一代码是系统管理模式代码。
23.如权利要求19所述的方法,还包括从所述第一代码调用所述可信代码内的第二处理程序。
24.如权利要求23所述的方法,其中所述调用是在所述第一代码访问存储器中的所述锁定页面之后。
25.如权利要求19所述的方法,还包括从页面模式执行修改的恢复指令。
26.如权利要求19所述的方法,还包括确定所述第一代码是否可以访问存储器中的所述锁定页面。
27.如权利要求19所述的方法,其中所述定向包括将所述可信代码内的一个存储器位置写入中断服务寄存器。
28.如权利要求27所述的方法,其中所述中断服务寄存器是系统管理基址寄存器。
29.如权利要求19所述的方法,其中所述子操作系统模式中断是系统管理中断。
30.如权利要求19所述的方法,还包括从所述第一代码调用所述可信代码内的第一处理程序。
31.如权利要求30所述的方法,其中所述调用是在所述第一代码访问存储器中的所述锁定页面之后。
32.一种处理器,包括第一逻辑,用以执行修改的恢复指令;以及中断服务寄存器,所述中断服务寄存器能够在安全输入指令的执行之后被写入。
33.如权利要求32所述的处理器,其中所述修改的恢复指令在第一代码执行后将所述处理器返回到先前的程序执行。
34.如权利要求33所述的处理器,其中所述修改的恢复指令可以从页面模式内被执行。
35.如权利要求33所述的处理器,其中所述第一代码的所述执行发生在子操作系统模式内。
36.如权利要求35所述的处理器,其中所述子操作系统模式是系统管理模式。
37.如权利要求32所述的处理器,其中所述中断服务寄存器是系统管理基址寄存器。
38.一种处理器,包括第一逻辑,用以执行修改的恢复指令;以及中断服务寄存器,所述中断服务寄存器能够在监控程序初始化指令的执行之后被禁用。
39.如权利要求38所述的处理器,其中所述修改的恢复指令在第一代码执行之后将所述处理器返回到先前的程序执行。
40.如权利要求39所述的处理器,其中所述修改的恢复指令可以从页面模式内被执行。
41.如权利要求39所述的处理器,其中所述第一代码的所述执行发生在子操作系统模式内。
42.如权利要求41所述的处理器,其中所述子操作系统模式是系统管理模式。
43.如权利要求38所述的处理器,其中所述中断服务寄存器是系统管理基址寄存器。
全文摘要
描述了用于在微处理器系统内的安全操作期间允许执行系统管理模式(SMM)代码的系统和方法。在一种实施方案中,系统管理中断(SMI)可以首先被定向到安全虚拟机监控程序(SVMM)内的处理程序。然后,SMI可以被重定向到在SVMM的安全控制下的虚拟机(VM)内的SMM代码。这个重定向可以通过允许SVMM读写处理器中的系统管理(SM)基址寄存器来实现。
文档编号G06F1/00GK1675623SQ03818823
公开日2005年9月28日 申请日期2003年5月1日 优先权日2002年6月7日
发明者詹姆斯·萨顿二世, 戴维·格劳罗克, 理查德·尤利格, 戴维·波伊斯纳, 安德鲁·格鲁, 克利福德·霍尔, 劳伦斯·史密斯三世, 吉尔伯特·尼格, 迈克尔·科祖克, 罗伯特·乔治, 布拉德利·伯吉斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1