从系统管理模式确定信任级别的系统和方法转让专利

申请号 : CN200980159350.X

文献号 : CN102428471B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M·A·皮旺卡B·D·德塞勒L·B·霍布森

申请人 : 惠普开发有限公司

摘要 :

公开了用于从系统管理模式确定信任级别的系统和方法。一种这样的方法包括:响应于系统管理模式中断(SMI),确定与调用所述SMI的代码相关联的信任级别;以及响应于确定所述信任级别是不可信的,至少部分地基于由调用SMI的代码进行的请求的类型,同意或拒绝所述请求。

权利要求 :

1.一种方法,包括:

响应于系统管理模式中断SMI,确定与调用所述SMI的代码相关联的信任级别;以及响应于确定所述信任级别是不可信的,至少部分地基于由调用所述SMI的所述代码进行的请求的类型,同意或拒绝所述请求,其中,拒绝所述请求通过下面来实现:虚拟化所述请求使得对于与调用所述SMI的所述代码相关联的不可信的信任级别看起来好像所述请求被允许。

2.根据权利要求1所述的方法,还包括:

响应于确定所述信任级别是不可信的,当所述请求是访问密码硬件设备时拒绝所述请求,以及当所述请求不是访问密码硬件时同意所述请求。

3.根据权利要求1所述的方法,还包括:

响应于确定所述信任级别是不可信的,当所述请求与除了密码硬件设备之外的硬件设备有关时同意所述请求。

4.根据权利要求1所述的方法,还包括:

响应于确定所述信任级别是可信的,同意所述请求。

5.根据权利要求1所述的方法,其中,所述请求是访问密码硬件设备。

6.一种计算机系统,包括:

系统管理模式SMM随机存取存储器RAM;

在其上存储有指令的存储器;以及

处理器,其与所述存储器耦合并且被配置为通过以下动作来响应系统管理模式中断SMI:至少部分地基于在所述SMM RAM中存储的信任调用数据,来确定与调用所述SMI的代码相关联的信任级别;以及响应于确定所述信任级别是不可信的,至少部分地基于由调用所述SMI的所述代码进行的请求的类型,阻止由调用所述SMI的所述代码进行的所请求的对密码硬件设备的访问或者同意由调用所述SMI的所述代码进行的所请求的不是对所述密码硬件设备的访问,其中,阻止所请求的对所述密码硬件设备的访问通过下面来实现:虚拟化所述请求使得对于与调用所述SMI的所述代码相关联的不可信的信任级别看起来好像所述请求被允许。

7.根据权利要求6所述的计算机系统,其中,所述密码硬件设备是由可信平台模块TPM实现的。

8.根据权利要求7所述的计算机系统,其中,所述处理器还被配置为通过忽略对所述密码硬件设备的所请求的访问来阻止对所述密码硬件设备的所请求的访问。

9.根据权利要求7所述的计算机系统,其中,所述处理器还被配置为通过以下动作来响应系统管理模式中断SMI:响应于确定所述信任级别是可信的,同意对所述密码硬件设备的所请求的访问。

10.一种计算机系统,包括:

处理器,具有包括系统管理模式SMM和另外的模式的多个模式,所述处理器被配置为:响应于系统管理中断SMI来:

切换到所述系统管理模式;

将指示当发生所述SMI时是可信部件还是不可信部件正在执行的信任调用数据保存到仅在所述系统管理模式中映射的存储器区;以及调用与所述SMM相关联的处理程序,

其中,响应于确定所述信任级别是不可信的,至少部分地基于由调用所述SMI的代码进行的请求的类型,同意或拒绝所述请求,并且其中,拒绝所述请求通过下面来实现:虚拟化所述请求使得对于所述不可信部件看起来好像所述请求被允许。

11.根据权利要求10所述的系统,所述系统还包括SMM随机存取存储器RAM,所述SMM随机存取存储器RAM实现仅在所述系统管理模式中映射的所述存储器区。

12.根据权利要求10所述的系统,所述系统还包括:SMI逻辑,其被配置为生成所述系统管理模式中断SMI。

13.根据权利要求10所述的系统,所述系统还包括:可信平台模块。

说明书 :

从系统管理模式确定信任级别的系统和方法

背景技术

[0001] 目前的个人计算机(PC)系统可以包括支持系统管理模式的处理器。该系统管理模式(SMM)具有各种用途:处理低级别系统事件,例如,存储器或芯片组错误;系统安全功能,例如,在高处理器温度时关机;功率管理操作,例如,打开风扇;未实施的母板硬件的模拟(例如,USB鼠标表现为PS/2鼠标)。SMM的最近的用途是控制对各种安全特性的访问。期望允许可信软件部件通过SMM控制安全特性并且阻止不可信软件部件通过SMM控制安全特性,同时仍然允许不可信软件部件使用SMM用于其他目的。

附图说明

[0002] 通过参考以下附图可以更好地理解本公开内容的多个方面。附图中的部件不一定是按照比例绘制的,而是着重于清楚地示出本公开内容的原理。
[0003] 图1是根据本文公开的一些实施例的包括用于安全地调用系统管理中断的模块的系统的系统架构图。
[0004] 图2示出了SMM地址空间。
[0005] 图3是根据本文公开的一些实施例的包括用于安全地调用系统管理中断的模块的系统的各个部件的框图。
[0006] 图4A-C是示出了在SMM调用的各种示例情形期间,由用于安全地调用系统管理中断的模块的一些实施例执行的动作的序列图。
[0007] 图5是示出了根据一些实施例的图1的信任调用逻辑的操作的流程图。
[0008] 图6是示出了根据本文公开的一些实施例的包括用于安全地调用系统管理中断的模块的另一系统的所选择的部件的框图。

具体实施方式

[0009] 图1是根据本文公开的一些实施例的包括用于从系统管理模式确定信任级别的模块的系统的系统架构图。系统100包括硬件部件和软件部件。如本领域普通技术人员所应当理解的,软件部件在硬件平台上执行;具体而言,软件部件在硬件平台中的处理器(例如,微处理器、网络处理器、微控制器、数字信号处理器、数字信号控制器、专用指令集处理器等)上执行。该可执行代码可以体现在任何计算机可读介质中以用于由处理器使用或结合处理器使用。硬件平台通常还包括除了(直接地或间接地)与软件交互的处理器之外的硬件部件。这些其他硬件部件可以通过各种形式的专用逻辑来实现,例如,可编程逻辑设备(PLD)、可编程门阵列(PGA)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、封装级系统(SiP)等。
[0010] 如图1所见,这些部件可以被视为具有分层布置。底层包括硬件部件,在该示例系统中所述硬件部件包括:处理器110;存储器120;以及诸如存储设备135(例如,硬盘、闪速RAM、闪速ROM或EEPROM)等的I/O设备130和安全设备140。安全设备140(有时被称为可信平台模块或TPM)执行密码功能并且可以用于存储密码密钥、数字证书和密码。
[0011] 在硬件层之上的层中布置有各种软件部件。管理程序150软件部件最靠近硬件,并且是唯一被允许不受监督地访问硬件的软件部件。因此,应用程序160和来宾操作系统170被认为是不可信部件,并且不能直接访问硬件部件100-140。替代地,处理器110的各种架构特性允许管理程序150监视或监督应用程序160和来宾操作系统170的动作,以使得这些不可信部件对某些指令的执行或对某些存储器或I/O位置的访问导致管理程序150被调用并且进行控制。由于处理器110可以在各种特权模式中执行,因此管理程序150的监督特性是可能的。在系统300中,管理程序150在最大特权模式中运行,而应用程序160和来宾操作系统170在更小特权模式中运行。
[0012] 除了至少两种特权相关的模式,处理器110还支持被称为系统管理模式(SMM)的另一模式。对SMM的调用触发相关联的系统管理模式处理程序180的执行。在系统100中,SMM处理程序180的一个角色是控制对安全设备140的访问。信任确定模块190(SMM处理程序180的部分)允许该处理程序确定该处理程序是由可信部件(例如,管理程序150)调用的还是由不可信部件(例如,应用程序160之一或来宾操作系统170)调用的。然后,基于该确定,SMM处理程序180采取适当的动作。
[0013] 在一些实施例中,当作为对安全设备140试图访问的结果,SMM处理程序180被管理程序150调用时,模块190代表管理程序150物理地访问安全设备140。然而,如果作为对安全设备140试图访问的结果,SMM处理程序180被应用程序160或来宾操作系统170调用,则模块190不会物理地访问安全设备140,而是替代地虚拟化该访问,以使得对于应用程序160或来宾操作系统170,看起来好像访问发生了一样。应用程序160或来宾操作系统170可以针对除了访问安全设备140之外的原因来调用SMM,并且在一些实施例中,模块190然后确保SMM处理程序180代表不可信部件执行所请求的动作。
[0014] 下面将结合图3-5讨论关于由信任确定模块190所采取的动作的更多细节。现在将结合图2的框图讨论信任确定模块190确定是可信部件还是不可信部件调用了SMM的机制,其中,图2示出了SMM地址空间200。
[0015] 当在SMM中执行时,处理器110使用专用私有地址空间200,该专用私有地址空间200与上文描述的最大特权或更小特权模式所使用的地址空间不同。因此,如同SMM状态保存区210驻留在该地址空间中,SMM处理程序180也驻留在该地址空间中。可以称为处理器模型特定寄存器(PMSR)的寄存器指向SMM地址空间200中SMM处理程序180的位置。SMM状态保存区210在地址空间200的顶部开始并且向下形成。
[0016] 仅通过被称为系统管理中断(SMI)的特定硬件中断来调用SMM。响应于SMI,处理器110将状态信息保存到SMM状态保存区210并且跳转至SMM处理程序180。SMM状态保存区210包括各种类型的状态信息,例如,寄存器和状态信息。根据本文公开的特性,处理器110还在执行SMM处理程序180之前保存信任调用数据220,并且(处理程序180中的)信任确定模块
190检查信任调用数据220来确定当发生SMI时是可信部件还是不可信部件正在执行。信任调用数据220可以采取各种形式,例如,指定可信或不可信的1比特值,或指定特权级别(例如,0至N,其中低于M的级别是可信的)的多比特值。本领域普通技术人员应当认识到,表示该数据的其他方式也是可能的,并且其他实现方式旨在落入本公开内容的范围内。如上所述,信任确定模块190的一些实施例允许可信代码对安全设备140的访问,但是拒绝或阻止不可信代码的访问。
[0017] 特别地,包括信任调用数据200的状态信息的保存是由处理器110本身而非由软件执行的(即,不是由在处理器110上执行的指令执行的)。本领域普通技术人员应当理解在处理器上执行的指令与处理器中的微代码之间的基本区别。在一些实施例中,处理器110通过微代码实现状态保存。其他实施例在专用逻辑中实现该动作,并且另一些其他实施例通过微代码和专用逻辑的组合来实现该动作。
[0018] 图3是根据本文公开的一些实施例的包括用于从系统管理模式确定信任级别的模块的系统的各种部件的框图。系统300包括处理器110,该处理器110包括用于保存信任调用数据的模块310。处理器110通过总线330访问I/O设备320、安全设备140和存储器120。存储器120包含由处理器110执行的代码的各个部分(例如,应用程序160、来宾OS 170、管理程序150)。SMM RAM 340是映射到上文针对SMM描述的私有地址空间中的存储器。SMM RAM 340还包含可执行代码,尤其是SMM处理程序180。
[0019] SMI逻辑350生成系统管理中断(SMI)360,该系统管理中断被作为输入提供给处理器110。如本领域普通技术人员应当知道的,处理器110响应于接收SMI 360而进入SMM模式(上文所描述的)。SMI逻辑350还包括控制SMI 360的操作的各种寄存器370。在一些实施例中,这些寄存器中的一个或更多直接地充当SMI控制寄存器:代码将其视为SMI控制寄存器并且对该寄存器执行I/O写入以请求SMI。在这些实施例的一些中,寄存器370中的一个或更多充当请求或命令寄存器,使得代码进行要由SMM处理程序180执行的特定类型的请求。这种请求的示例包括禁用、启用、去激活和重置安全设备140的请求。其他示例包括对安全设备140或其他设备的关机和待机请求。因此,与软件中断类似,寄存器370可以被视为请求SMM处理程序180采取特定动作的手段,尽管SMI是硬件而非软件中断。在这些实施例的一些中,SMM处理程序通过对SMI状态寄存器和/或SMMRAM 340的保存状态区进行写入来与调用程序进行通信,并且代码(例如,SMM处理程序180)可以查询该寄存器/存储器位置以发现SMI的原因。
[0020] 在一些实施例中,这些寄存器中的一个或更多间接地充当SMI控制寄存器。在这种情况中,寄存器370被映射到另一I/O设备(例如,键盘控制器寄存器)的位置,使得代码不会将寄存器370视为SMI控制寄存器。然而,在对寄存器370进行一些组合的读取和写入之后,SMI逻辑350可以生成SMI 360,从而寄存器最终可以用作SMI控制寄存器。
[0021] 图4A-C是示出了在SMM调用的各种示例情形期间,由用于从系统管理模式确定信任级别的模块的一些实施例执行的动作的序列图。转到图4A,这些动作可以被分为三种类型:在处于除了SMM之外的模式中的处理器110上执行的代码所执行的动作(列410);处理器110自身所执行的动作(列420);以及在处于SMM中的处理器110上执行的代码所执行的动作(列430)。序列以非SMM代码执行(411)对SMI控制寄存器的I/O写入开始。如前面结合图3所描述的,该I/O写入触发SMI 360。作为响应,处理器110采取动作(421),该动作涉及:将处理器模式切换到SMM;保存包括信任调用数据220的处理器状态;以及调用SMM处理程序。
[0022] SMM处理程序开始执行。在某一点,SMM处理程序检查(431)信任调用数据220。在图4A的示例情形中,该数据指示“调用程序”是可信的。(尽管该调用通过中断而非调用指令发生,但是为了简单,在SMI时正在执行的代码将被称为“调用程序”)。由于该调用程序是可信的,因此SMM处理程序检查SMI逻辑350中的寄存器和/或所保存的状态数据,以确定调用程序已经请求了哪些动作,并且执行(432)所请求的动作。SMM处理程序最后返回,其在一些实施例中使用专用指令。
[0023] 一旦SMM处理程序返回,则处理器110采取动作(422),该动作涉及:切换到先前的(被中断的)处理器模式;恢复处理器状态;以及(例如,经由栈)返回到被中断的执行路径。在非SMM模式中执行的被中断代码继续(412)在调用SMI的指令后面的指令处执行。在该示例的情形中,该下一条指令是SMI状态寄存器的I/O读取,调用程序通过该指令来确定SMM处理程序是否成功地执行了所请求的动作。
[0024] 图4B示出了SMM调用的一种不同情形。序列以非SMM代码执行(413)对SMI控制寄存器的I/O写入开始,该I/O写入触发SMI 360。作为响应,处理器110采取动作(423),该动作涉及:将处理器模式切换到SMM;保存包括信任调用数据220的处理器状态;以及调用SMM处理程序。SMM处理程序开始执行。在某一点,SMM处理程序检查(433)信任调用数据220。在图4B的该示例情形中,该数据指示调用程序是不可信的。在该实施例中,尽管不执行其他的动作,但SMM处理程序确实代表不可信调用程序执行某些请求的动作。因此,SMM处理程序代表不可信调用程序确定(434)所请求的动作是否被允许。在一些实施例中,不允许不可信调用程序对安全设备140的读或写访问,但是允许其他的请求。
[0025] 在图4B的该示例情形中,允许所请求的动作,因此SMM处理程序确保所请求的动作被执行(435)。SMM处理程序还可以通过对SMI状态寄存器和/或SMMRAM的保存状态区进行写入来与调用程序进行通信。在一些实施例中,SMM处理程序通过发出一个或更多指令(例如,I/O指令)来直接地执行所请求的动作。在其他实施例中,SMM处理程序不直接执行所请求的动作,而是采取间接地导致所请求的动作发生的动作,例如,将值保存在SMM状态保存区210中,这会导致处理器110重新开始由调用程序执行的导致SMM处理程序的调用的指令。
[0026] SMM处理程序最后返回,并且一旦SMM处理程序返回,则处理器110采取动作(424),该动作涉及:切换到先前的(被中断的)处理器模式;恢复处理器状态;以及(例如,经由栈)返回到被中断的执行路径。在非SMM模式中执行的被中断代码继续(414)在调用SMI的指令后面的指令处执行。在该示例的情形中,该下一条指令是SMI状态寄存器的I/O读取,调用程序通过该指令来确定SMM处理程序是否成功地执行了所请求的动作。
[0027] 图4C示出了SMM调用的另一情形。序列以非SMM代码执行(415)对SMI控制寄存器的I/O写入开始,该I/O写入触发SMI 360。作为响应,处理器110采取动作(425),该动作涉及:将处理器模式切换到SMM;保存包括信任调用数据220的处理器状态;以及调用SMM处理程序。然后SMM处理程序开始执行。
[0028] 在某一点,SMM处理程序检查(436)信任调用数据220。在图4C的该示例情形中,该数据指示调用程序是不可信的。在该实施例中,SMM处理程序代表不可信调用程序执行某些请求的动作,同时阻止或拒绝其他动作。因此,SMM处理程序代表不可信调用程序确定(437)所请求的动作是否被允许。在图4C的该示例情形中,所请求的动作是对安全设备140(由SMM处理程序管理的设备)的读取或写入,其是不被允许的。因此,SMM处理程序不执行所请求的动作,而是替代地虚拟化(438)该访问,使得对于不可信部件,看起来好像发生了所请求的访问一样。SMM处理程序还可以通过对SMI状态寄存器和/或SMMRAM的保存状态区进行写入来与调用程序进行通信。替代于将不允许的访问虚拟化,其他实施例忽略不允许的访问。
[0029] SMM处理程序最后返回,并且一旦SMM处理程序返回,则处理器110采取动作(426),该动作涉及:切换到先前的(被中断的)处理器模式;恢复处理器状态;以及(例如,经由栈)返回到被中断的执行路径。在非SMM模式中执行的被中断代码继续(416)在调用SMI的指令后面的指令处执行。在该示例的情形中,该下一条指令是SMI状态寄存器的I/O读取。如上所解释的,SMM处理程序虚拟化所请求的动作,因此调用程序如同所请求的动作实际上发生了一样进行。
[0030] 图5是示出了根据一些实施例的信任确定模块190的操作的流程图。处理500在框510处开始,在框510处,检查(存储在SMMRAM中的)信任调用数据220,以确定调用程序是否是可信的。如果调用程序是可信的,则在框520处,执行(如由信任调用数据220和/或SMI逻辑350所指示的)所请求的动作,并且在框530处,将状态信息传输给调用程序(如果合适的话)。然后处理500结束。
[0031] 如果调用程序是不可信的,则框540代表不可信调用程序关于所请求的动作是否是被允许的动作来进行确定。如果该动作是被允许的,则处理如上文所描述的在框520和530处继续,然后处理结束。如果所请求的动作不被允许,则替代地,处理在框550处继续,在框550处,虚拟化所请求的动作,使得对于不可信部件,看起来好像执行了所请求的动作一样。
[0032] 图6是示出了根据本文公开的一些实施例的包括用于从系统管理模式确定信任级别的模块的另一系统的所选择的部件的框图。有时被称为可信计算设备600的计算设备600包括安全处理器110S和安全设备140。有时被称为可信平台模块(TPM)的安全设备140执行密码功能,并且可以用于存储密码密钥、数字证书和密码。
[0033] 安全处理器110S支持多个隔离的执行环境或分区的创建和管理。这些隔离的环境中的每一个均具有由处理器、芯片组和OS内核管理的专用资源(例如,存储器、处理器状态等)。在一些实施例中,这些分区中的至少一个是受保护的分区,其中软件可以隔离地运行,不会被在平台上运行的其他软件观察或损害。
[0034] 在可信计算设备600的一些实施例中,安全处理器110S通过主机总线620与存储器控制中心610通信。存储器控制中心610再通过存储器总线640连接到系统存储器630,并且通过I/O总线660连接到输入/输出(I/O)控制中心650。在一些实施例中,中心610和650被称为“主机桥”,并且特别地,存储器控制中心610可以被称为“北桥”,而I/O控制中心650可以被称为“南桥”。I/O控制中心650通过外围总线670连接到各种外围设备,并且连接到基板(baseboard)管理控制器680。可信计算设备600的一些实施例还包括存储设备135(例如,硬盘、闪速RAM、闪速ROM或EEPROM)。
[0035] 在本公开内容的上下文中,“计算机可读介质”可以是可包含或存储用于由处理器使用或结合处理器使用的程序的任何装置。该计算机可读介质可以与存储设备结合使用,并且可以是(例如但不限于)基于磁、光、电磁或半导体技术的介质。使用半导体技术的计算机可读介质的具体示例包括(但不限于)以下:随机存取存储器(RAM);只读存储器(ROM);可擦除可编程只读存储器(EPROM或闪速存储器)。使用磁技术的具体示例包括(但不限于)计算机磁盘或软磁盘。使用光技术的具体示例包括(但不限于)压缩盘只读存储器(CD-ROM)。
[0036] 本文中的流程图提供了本文中公开的实施例的操作的示例。可替换地,这些图可以被视为描述由模块700执行的方法的示例的动作。这些图中的框表示包括用于实现该处理中的逻辑功能或步骤的一个或更多可执行指令的程序、功能、模块或代码的部分。可替换的实施例也包括在本公开内容的范围内。在这些可替换的实施例中,取决于所涉及的功能,可以不按照所示出或讨论的顺序来执行功能,包括基本上并发的或者相反的顺序。不是所有的实施例都需要全部的步骤。
[0037] 已经为了说明和描述的目的而介绍了上述描述。其不旨在穷举或将本发明限制到所公开的精确形式。根据上述教导,各种修改和变型是可能的。然而,选择和描述所讨论的实施例来说明本发明的原理和其实际应用,从而使本领域普通技术人员能够使用各种实施例的本发明以及具有适合于所设想的特定用途的各种修改的本发明。当根据相当地和在法律上赋予权利要求的宽度来解释时,所有这种修改和变型均落入由所附权利要求确定的本发明的范围内。