利用初始保护组件来进行设备引导的制作方法

文档序号:6426759阅读:270来源:国知局
专利名称:利用初始保护组件来进行设备引导的制作方法
技术领域
本发明涉及计算机设备引导技术,尤其涉及利用初始保护组件来进行设备引导。
背景技术
计算机已经越来越多地经由诸如因特网之类的网络来互连。尽管这样的连通性允许用户访问各种不同的服务和数据,但是,这样的连通性不是没有其问题。一个这样的问题是,这样的连通性可以允许恶意程序在这些计算机上运行。这些恶意程序可以执行各种不受欢迎的动作,如向其他计算机发动攻击,向其他用户的计算机发送保密数据,阻止用户能够使用他的或她的计算机等等。对于某些类型的恶意程序,一旦恶意程序已经在计算机上运行,用户就很难标识并移除恶意程序或者甚至使用他的或她的计算机。

发明内容
提供本发明内容以便以简化形式介绍将在以下的具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。根据一个或多个方面,引导计算设备的方法包括执行一个或多个固件组件。在执行一个或多个固件组件之后,执行引导加载器组件。标识计算设备的保护组件(例如,防恶意软件程序),在执行引导加载器组件之后,保护组件被作为初始组件来执行。还执行一个或多个引导组件,这些一个或多个引导组件只包括被保护组件批准执行的引导组件。


在各附图中,使用相同的标号来指示相同的特征。图1示出了根据一个或多个实施例的实现利用初始保护组件来进行设备引导的示例设备。图2是示出了根据一个或多个实施例的支持利用初始保护组件来进行设备引导的示例存储器结构的框图。图3是示出了根据一个或多个实施例的用于引导设备的示例过程的流程图。图4是示出了根据一个或多个实施例的用于批准一个或多个组件执行的示例过程的流程图。图5示出了根据一个或多个实施例的可以被配置成实现利用初始保护组件来进行设备引导的示例计算设备。
具体实施例方式
此处讨论了利用初始保护组件来进行设备引导。遵循特定组件顺序来弓I导计算设备。执行固件组件,接下来是操作系统的引导加载器组件,接下来是保护组件(例如,防恶意软件程序)。保护组件评估一个或多个附加的引导组件(如引导关键组件,没有它们,操作系统就不能运行),且只执行被批准执行的弓I导组件。只有在引导组件满足加载策略或弓I 导组件在被批准的引导组件的列表上的情况下,引导组件才被批准执行。此被批准的引导组件的列表可以按防止篡改被批准列表和/或允许对列表的任何篡改被检测到的方式来存储。在引导过程的早期,执行保护组件,从而允许保护组件防止已知的恶意程序在引导过程期间(以及之后)执行。此处引用了公钥密码和数字签名。虽然这样的加密对于本领域的技术人员是已知的,但是,这里仍对它们进行简要概述以帮助读者。在公钥加密中,一个实体(如用户、硬件或软件组件、设备、域等等)具有与它相关联的公/私钥对。可以使公钥公开,但是,该实体对私钥保密。若没有私钥,从计算上来说很难解密使用公钥加密的数据。如此,数据可以由具有公钥的任何实体加密,而只能由具有对应的私钥的实体解密。另外,也可以通过使用数据和私钥来生成该数据的数字签名。若没有私钥,从计算上来说很难创建可以使用公钥验证的签名。具有公钥的任何实体都可以使用公钥,通过对公钥、签名,以及被签名的数据执行合适的数字签名验证算法,来验证数字签名。执行这样的数字签名验证算法允许实体验证数据是由拥有私钥的实体签名的,并且,数据在被签名之后,没有被更改。另外,此处还引用了散列或散列值。虽然散列对于本领域的技术人员是已知的,但是,这里仍对它们进行简要概述以帮助读者。散列或散列值是指通过向输入应用散列函数而获得的值。散列函数可以是密码散列函数,其是生成散列值的散列函数,如果对输入的更改,则该散列值也变化。如此,密码散列函数可以在两个不同的时间为特定输入生成散列, 并如果散列相同,则确定在两个不同的时间之间输入没有变化(如果散列不同,那么,输入已经更改)。此处所讨论的散列通常是使用密码散列函数生成的。图1示出了根据一个或多个实施例的实现利用初始保护组件来进行设备引导的示例设备100。设备100执行允许设备100执行各种操作的各种组件或模块。这些组件或模块包括通常存储在非易失性存储器或存储设备(例如,闪存、只读存储器(ROM)、磁盘、 光盘、通过网络访问的远程设备或存储等等)中的指令和/或数据。这些组件或模块被从非易失性存储器或存储设备加载到一个或多个易失性存储器中(例如,随机存取存储器 (RAM)),由一个或多个处理器从这些易失性存储器中检索并执行它们。当设备100被通电或以其他方式复位时,设备100引导。设备100的引导是指设备100的开始操作,通常加载并执行设备100的操作系统。操作系统包括在设备100上加载并执行的很多组件或模块(并且被示为,例如,图1中的组件112、114、116、122,以及124)。 组件的加载是指将组件复制到易失性存储器(以及可任选地,对其他组件或数据存储执行附加配置)。执行组件是指由设备100的处理器运行(执行)组件的指令。在设备100被引导之后,各种其他程序可以在设备100上运行。此处所讨论的利用初始保护组件来进行设备引导始于在引导过程的早期执行保护组件,从而允许恶意程序被标识并被防止在设备 100上运行。设备100可以是各种不同类型的设备。例如,计算设备100可以是台式计算机、笔记本电脑或膝上型计算机、笔记本型计算机、移动站、娱乐设备、可通信地耦合到显示设备的机顶盒、电视机、蜂窝式或其他无线电话、游戏控制台、车载计算机等等。如此,计算设备 100可以从带有相当大的存储器和处理器资源的完全资源设备(例如,个人计算机、游戏控制台)到具有有限的存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持式游戏控制台)。设备100使用包括平台级别102、内核级别104,以及用户级别106的体系结构。这些不同级别是指设备100的不同的模式或安全性分区,且较低安全级别的组件被防止直接访问更高安全级别的组件。在设备100中,平台级别102是最高的安全级别,内核级别104 是次最高安全级别,而用户级别106是最低安全级别。这些不同级别可以以各种不同的常规方式实现,如使用不同的处理器环。虽然在图1中示出了三个级别,但是,应该注意,可以替换地使用不同数量的安全级别(例如,四个或更多安全级别)。在引导过程中,一个或多个固件组件112是在引导过程中由设备加载和执行的第一组件。固件组件112在平台级别102下执行。固件组件112被存储在设备100的非易失性存储器中。固件组件112可以存储在只读存储器中,或者,替换地被存储在可写入非易失性存储器(如闪存)中。在其中一个或多个固件组件112被存储在可写入非易失性存储器中的各实施例中,通常要进行监护以确保这样的固件组件112没有被篡改(由此没有被恶意程序改变)。例如,可以通过使用各种常规的受信任引导或安全引导技术等等,来验证存储在可写入非易失性存储器中的组件112上的签名,将组件112存储在只有其他固件组件 112才可访问的受保护的存储器中,进行这样的监护。固件组件112启动引导加载器组件114的执行。引导加载器组件114是在内核级别104执行的操作系统组件。引导加载器组件114通常在被执行之前由固件组件112来加载和验证。可以以不同的方式来验证弓I导加载器组件114,如通过验证弓I导加载器组件114 的数字签名(由固件组件112被配置为(例如,被编程为)信任的实体所生成的)。引导加载器组件114将保护组件116标识为引导加载器组件114将要执行的初始组件。如此,保护组件116是在执行引导加载器组件114之后执行的初始或第一组件。引导加载器组件114可以以各种不同的方式来标识保护组件116。 在一个或多个实施例中,保护组件116是经过数字签名的(由引导加载器组件114 被配置为(例如,被编程为)信任的实体)。此数字签名可包括证书(例如,经数字签名的声明或证书),说明保护组件116是特定类的组件,与特定信任级别相关联(例如,多个信任级别中的最高信任级别),是特定类型的组件(例如,防恶意软件组件)等等。引导加载器组件114可以使用此证书来标识保护组件116。例如,引导加载器组件114可以通过标识具有数字签名的组件来标识保护组件116,数字签名带有指示该组件是由一个或多个制造商中的特定制造商制造的特定类型的组件的证书。替换地,引导加载器组件114可以以不同的方式标识保护组件116,如通过标识具有特定散列值的组件,标识存储在受保护的非易失性存储器中的特定位置的组件等等。保护组件116操作以帮助保护设备100免遭恶意程序攻击。保护组件116可以, 例如,保护操作系统内核免遭恶意程序攻击。在一个或多个实施例中,保护组件116是使用各种不同的技术来标识恶意程序的防恶意软件组件或程序(例如,防病毒和/或和防间谍软件组件或程序)。保护组件116标识一个或多个被请求的组件,并确定一个或多个被请求的组件中的每一个是否将要在设备100中执行。被请求的组件是指由另一个组件、模块或设备指示为要执行的组件。然而,这样的被请求的组件不执行,直到被保护组件116批准。在一个或多个实施例中,保护组件116标识一个或多个被请求的引导关键组件,并确定一个或多个被请求的引导关键组件中的每一个是否将作为引导关键组件122来执行。引导关键组件是指为了使操作系统在设备100上引导而所需的组件。某些组件是可选的,且如果不执行,则引导过程仍可以完成,并且操作系统在设备100上运行(虽然由不被执行的组件所提供的功能不可用)。然而,其他组件是引导关键组件,且在没有引导关键组件的情况下,引导过程不能正确地完成,操作系统不能在设备100上运行。在一个或多个实施例中,引导加载器组件114将引导关键组件122加载到设备100 的存储器中,并调用保护组件116批准已加载的引导关键组件122来执行。虽然引导关键组件122被加载到设备100的存储器中,但是,引导关键组件122不被执行,直到被保护组件116批准执行。在被保护组件116批准执行之后,引导加载器组件114可以执行被批准的引导关键组件122。如果已经加载到设备100的存储器的引导关键组件没有被保护组件 116批准,那么,引导加载器组件114从计算设备100的存储器中卸载这样的未经批准的引导关键组件。虽然在此处包括了其中由保护组件116所标识的组件是引导关键组件的讨论,但是可另选地,保护组件116可以标识其他类型的被请求的组件,并确定这样的其他类型的被请求的组件中的每一个是否将在设备100中执行。例如,保护组件116可以确定引导组件(不管引导组件是否是引导关键的)是否将在设备100中执行,其他操作系统组件是否将在设备100中执行,等等。可以以不同的方式标识被请求的一个或多个引导关键组件。在一个或多个实施例中,由保护组件116从存储设备(例如,设备100的磁盘或闪存)或从引导加载器组件114 获取被请求的引导关键组件的列表。此列表可以是具有特定名称的列表,存储在特定文件夹或位置的列表等等。此列表通常由例如操作系统制造商或供应商来提供,且是操作系统制造商或供应商请求作为引导关键组件122来执行的引导关键组件的列表。保护组件116 检索此被请求的引导关键组件的列表,并确定是否作为引导关键组件122来执行列表中的每一个引导关键组件。保护组件116至少部分地基于加载策略118和/或被批准的组件的列表120来确定被请求的引导关键组件是否被批准执行。加载策略118被存储在计算设备100上,并通常由计算设备100从远程设备或服务获取(例如,经由因特网或其他网络来访问)。例如, 如果保护组件116是防恶意软件程序,则可以从防恶意软件程序的制造商或供应商(或另一个受信任的第三方)获取加载策略118。保护组件116(或者可另选地,引导加载器组件 114)验证加载策略118是来自于受信任的实体(例如,由保护组件116被配置为(例如,被编程为)信任的实体进行数字签名)。加载策略118包括可以各种准则中的一个或多个,这些准则被保护组件116用来确定是否批准被请求的组件作为引导关键组件122来执行。保护组件116基于这些准则来评估被请求的组件,并基于该评估,确定是否批准被请求的组件作为引导关键组件122来执行。加载策略118中所包括的准则可包括组件专用准则,如被批准执行的组件的标识符 (例如,散列值)的列表,没有被批准执行的组件的标识符(例如,散列值)的列表等等中的一个或多个。加载策略118中所包括的准则还可以包括要应用的更广泛的准则,如要应用以确定组件是否被批准执行的特定启发式法、其组件被批准执行的制造商或供应商的列表、其组件没有被批准执行的制造商或供应商的列表、为了批准组件而无法存在于该组件中的特定指令或数据,为了批准组件而无法存在于该组件中的特定模式等等中的一个或多个。在一个或多个实施例中,加载策略118包括可以各种准则中的一个或多个,这些准则可被保护组件116用来确定是否批准被请求的组件作为引导关键组件122来执行。分开的加载策略(未示出)包括各种准则中的一个或多个,这些准则可以被保护组件116(或另一个组件)用来类似地确定是否要批准特定组件作为附加操作系统组件1 和/或用户模式组件126来执行。可另选地,加载策略118包括各种准则中的一个或多个,这些准则可以被保护组件116用来确定是否要批准被请求的组件作为引导关键组件122、作为附加操作系统组件124,和/或作为用户模式组件1 来执行。被批准列表120是由保护组件116基于加载策略118已批准执行的组件列表。被批准列表120包括由保护组件116先前评估并批准执行的组件的标识符(例如,散列值) 的列表。被批准列表120还可以包括用于评估和批准被批准列表120中的组件的加载策略 118的指示(例如,版本号、时间戳等等)。被批准列表120还可以任选地包括附加信息,如由保护组件116先前评估但是未被批准执行的组件的标识符(例如,散列值)的列表。被批准列表120以以下防篡改的方式被存储防止被批准列表120被恶意程序篡改,和/或允许对被批准列表120的任何篡改被检测到,如下面比较详细地讨论的。可另选地,被批准列表120可包括被批准的组件本身,而并非组件的标识符。用于评估和批准被批准列表120中的组件的加载策略118的指示被用作记录保持机制。该指示允许设备100的用户或管理员确定在创建被批准列表120时已有的加载策略的特定版本。还可以将此指示提供到远程系统或服务(例如,在从设备100的用户接收到这样做的许可之后),以便允许操作系统制造商或保护组件制造商分析并试图改进操作系统和/或保护组件的性能。可另选地,不需要维护用于评估和批准被批准列表120中的组件的加载策略118的这样的指示,或者也可以与加载策略118分开地维护。被批准列表120允许引导关键组件被保护组件116评估一次,且在被批准之后,维护其批准的记录。在设备100的随后的引导期间,不必基于加载策略118重新评估被批准列表120中标识的引导关键组件。相反地,被批准列表120中标识的引导关键组件可以被保护组件116批准,无需基于加载策略118重新评估。应该注意,加载策略118可以随着时间而变化。在标识新恶意程序或用于标识恶意程序的新准则(例如,由防恶意软件程序制造商或其他第三方)时通常更新加载策略 118,如此,加载策略118可以相对频繁地变化(例如,每天多次)。由设备100的一个组件 (例如,保护组件116或内核级别104中的另一个组件)获取对加载策略118的更改,并替换以前的加载策略118或修改以前的加载策略。保护组件116验证对加载策略118的更改是从受信任的实体获得的(例如,更改由保护组件116被配置为(例如,被编程为)信任的实体进行数字签名)。保护组件116可以以不同的方式来确定已更改的加载策略118和先前的加载策略之间的差别,如在已更改的加载策略118中指定,通过比较两个加载策略,等寸。已更改的加载策略118可以或者可以不影响被批准列表120。在对加载策略118 的更改是被批准执行的组件的标识符列表和/或没有被批准执行的组件的标识符列表的情况下,保护组件116标识哪些组件已经被更改(例如,哪些组件不再被批准执行)。如果已更改的加载策略不包括对在被批准列表120上的组件的更改,那么,被批准列表120保持有效(不受更改的影响),并可以继续被保护组件116用来确定是否批准引导关键组件执行。然而,如果对加载策略118的更改包括被批准列表120中没有维护的启发式法或其他广泛的准则,那么,被批准列表120受更改的影响。因此,删除被批准列表120 (有效地使被批准列表失效),并通过评估被请求的引导关键组件是否满足已更改的加载策略118 来生成新的被批准列表120。例如,假设新接收到的已更改的加载策略118包括来自特定制造商的组件不被批准执行的新准则。如果被批准列表120包括被批准列表120中的组件的制造商的指示,那么,如果被批准列表中的组件的制造商都不是该特定制造商,则被批准列表120仍可以使用。然而,如果被批准列表120不包括被批准列表120中的组件的制造商的指示,那么,通过评估已更改的加载策略118来生成新被批准列表120。对于每一个被请求的引导关键组件,保护组件116确定引导关键组件是否包括在被批准列表120中。此确定可以例如通过生成被请求的引导关键组件的散列值并检查该生成的散列值是否包括在被批准列表120中来进行。如果被请求的引导关键组件包括在被批准列表120中,那么,被请求的引导关键组件被批准作为引导关键组件122来执行。对于未包括在被批准列表120内的每一个被请求的引导关键组件,保护组件116 检查被请求的引导关键组件是否满足加载策略118。如果由保护组件116基于加载策略118 中的准则对被请求的引导关键组件的评估指示被请求的引导关键组件被批准作为引导关键组件122来执行,则被请求的引导关键组件满足加载策略118。保护组件116也可任选地将新批准的引导关键组件的标识符添加到被批准列表120中。引导加载器组件114加载引导关键组件,但是,只有在由保护组件116批准引导关键组件执行之后才启动引导关键组件作为引导关键组件122的执行。如果已被加载的被请求的引导关键组件不包括在被批准列表120中且不满足加载策略118,则被请求的引导关键组件不被批准作为引导关键组件122来执行。引导加载器组件114不执行没有被批准作为引导关键组件122来执行的引导关键组件,并且从计算设备100的存储器中卸载这样的未经批准的引导关键组件。替换地,在将引导关键组件122加载到设备100的存储器之前,引导加载器组件 114可以调用保护组件116。在这样的情况下,保护组件116评估是否要批准被请求的引导关键组件中的每一个,如此处所讨论的,但是,只有在被保护组件116批准加载之后(如此, 也固有地被批准执行)才将引导关键组件122加载到设备100的存储器中。在其他实施例中,引导关键组件122的加载和/或执行可以由保护组件116执行而并非由引导加载器组件114执行。在一个或多个实施例中,保护组件116作出哪些引导关键组件被批准执行的确定,但是,延迟向引导加载器组件114通知被批准的引导关键组件。保护组件116延迟向引导加载器组件114通知被批准的引导关键组件,直到被批准列表120被以这样的方式被存储防止被批准列表120被恶意程序篡改和/或允许对被批准列表120的任何篡改被检测至IJ。通过延迟向引导加载器组件114通知被批准的引导关键组件,保护组件116知道,引导关键组件122的执行也被延迟,如此,防止引导关键组件122(或任何稍后执行的组件)篡改被批准列表120和/或可以检测任何篡改被批准列表120的情况。
在引导关键组件122被执行之后,可以执行一个或多个附加的操作系统组件IM 和/或一个或多个用户模式组件126。可以执行各种不同的操作系统组件IM和/或用户模式组件126。可以响应于对执行组件IM或1 的用户请求,或者响应于来自另一个组件或模块的请求,执行操作系统组件1 和用户模式组件126。还应注意,诸如保护组件116 之类的先前执行的组件可以防止附加的操作系统组件1 和/或用户模式组件1 执行。 例如,如果保护组件116是防恶意软件程序并确定特定附加操作系统组件IM或用户模式组件1 是恶意程序(例如,通过确定组件IM或1 是否满足加载策略118),那么,不执行该组件1 或126。设备100被示为包括引导加载器组件114和保护组件116。可另选地,可以将引导加载器组件114和保护组件116合并到单个引导和保护组件。固件组件112启动此单个引导和保护组件的执行——类似于上文所讨论的启动引导加载器组件114的执行。然而,此单个引导和保护组件批准引导关键组件执行,且还执行被批准执行的引导关键组件,而并非让引导加载器组件114执行保护组件116。如上文所指出的,通过按以下方式来存储来保护被批准列表120免于被窜改防止被批准列表120被恶意程序篡改,和/或允许对被批准列表120的任何篡改被检测到。可以以各种不同的方式防止窜改被批准列表120。图2是示出了根据一个或多个实施例的支持利用初始保护组件来进行设备引导的示例存储器结构200的框图。存储器结构200促进保护被批准列表120免遭窜改。存储器结构200包括存储设备202、存储器204,以及受保护的存储器206。存储设备202可以是诸如闪存、只读存储器(ROM)、磁盘、光盘等等之类的各种不同的非易失性存储器或存储设备。存储器204可以是诸如RAM之类的各种不同的易失性存储器设备。存储设备200包括加载策略212 (可以是图1的加载策略118)、保护组件214 (可以是图1的保护组件)、以及要加载的一个或多个组件216(可以是图1的组件122、124,以及126)。在引导过程中,将加载策略212加载到存储器204中作为加载策略218,并且将保护组件214加载到存储器 204中作为保护组件220,如上文参考图1所讨论的。还可以可任选地将一个或多个要加载的组件216加载到存储器204中。受保护的存储器206是诸如非易失性RAM(NVRAM)之类的可写入非易失性存储器。 只有在特定条件下和/或在特定时间访问受保护的存储器206。在一个或多个实施例中,经由可信平台模块(TPM)来访问受保护的存储器206。可从俄勒R州的Beaverton的Trusted Computing Group (可信计算组)得到关于TPM的附加信息。TPM允许受保护的存储器206 被读取和写入,直到某一时间点或某一特定事件发生,此后,TPM允许受保护的存储器206 被读取,但不被写入。此某一时间点或事件可以是,例如,来自组件的对关闭或锁定受保护的存储器206的请求。因此,保护组件220可以将被批准列表222(可以是图1的被批准列表120)存储在受保护的存储器206中,然后,锁定受保护的存储器206。如此,保护组件220 可以防止恶意程序篡改被批准列表222,因为受保护的存储器206被锁定。受保护的存储器 206不被解除锁定,直至包括存储器结构200的设备再次被引导。下一次设备被引导时,受保护的存储器206被解除锁定,但是,保护组件220在引导过程的初期开始执行,并在恶意程序将能够执行并向受保护的存储器206写入之前再次锁定受保护的存储器206。可另选地,可以将被批准列表的标识符(例如,图1的被批准列表120的标识符)存储在受保护的存储器206中,而并非将被批准列表222存储在受保护的存储器206中。可以生成组件的标识符列表(例如,散列值),并将其存储在存储设备202上。可以由保护组件220生成此列表的散列值,并将其存储在受保护的存储器206中。下一次引导包括存储器结构200的设备时,在引导过程期间,保护组件220从存储设备202中检索该列表,并验证检索到的列表的散列值匹配受保护的存储器206中的散列值(例如,与其相同)。如果检索到的列表的散列值匹配受保护的存储器206中的散列值,那么,保护组件220知道检索到的列表没有被篡改,如此,可以使用检索到的列表来作为被批准列表。然而,如果检索到的列表的散列值不匹配受保护的存储器206中的散列值(例如,与之不相同),那么,保护组件220知道检索到的列表已经被篡改或以其他方式被改变。如此,保护组件220不使用检索到的列表作为被批准列表(例如,删除检索到的列表),而是替代地生成新的被批准列表 (通过评估被请求的引导关键组件是否满足加载策略,如上文所讨论的)。应该注意,会出现新引导关键组件被存储在设备上并作为引导关键组件(例如, 作为图1的引导关键组件12 被批准执行的情形。在这样的情形下,如果被批准列表222 被存储在受保护的存储器206中,那么,保护组件220将新引导关键组件的标识符添加到被批准列表222中。然而,如果组件的标识符的列表的散列值被存储在受保护的存储器206 中而并非被批准列表222中,那么,保护组件220将新引导关键组件的标识符添加到存储在存储设备202上的标识符列表中,基于新的标识符列表,生成新散列值,并将新散列值存储在受保护的存储器206中。可另选地,保护组件220可以存储分开的列表,该分开的列表包括存储设备202上的新引导关键组件的标识符(可仅仅包括新引导关键组件的标识符),基于此分开的列表,生成散列值,并将新生成的散列值存储在受保护的存储器206中。因此, 保护组件220将从存储设备202获取组件的多个标识符列表,并将那些多个列表的散列值与受保护的存储器206中的多个散列值进行比较。图3是示出了根据一个或多个实施例的用于引导设备的示例过程300的流程图。 过程300通过诸如图1的设备100之类的设备来执行,并可以以软件、固件、硬件,或其组合来实现。过程300是用于引导设备的示例过程;此处参考不同的附图给出了对于引导设备的附加讨论。在过程300中,执行一个或多个固件组件(动作30 。固件组件执行引导加载器组件(动作304)。固件组件可以以不同的方式来验证引导加载器组件,如上文所讨论的。然后,引导加载器组件标识保护组件(动作306),并执行已标识的保护组件(动作 308)。可以由引导加载器以各种不同的方式来标识保护组件,如上文所讨论的。保护组件是,例如,防恶意软件程序。保护组件批准一个或更多个引导关键组件来执行(动作310)。可以以不同的方式确定被保护组件批准执行的引导关键组件,诸如基于加载策略和/或被批准列表,如上文所讨论的。执行被保护组件批准执行的一个或多个引导关键组件(动作31 。不执行未被保护组件批准执行的引导关键组件(不管是否已经加载了这样的未经批准的组件)。可以由引导加载器组件和/或保护组件来加载和执行被批准执行的这一个或多个引导关键组件。然后,执行一个或多个附加组件(动作314)。由以前执行的组件,诸如保护组件, 引导关键组件等等,来执行这一个或多个附加组件。
图4是示出了根据一个或多个实施例的用于批准一个或多个组件执行的示例过程400的流程图。过程400通过诸如图1的保护组件116之类的保护组件来执行,并可以以软件、固件、硬件,或其组合来实现。过程400是用于批准一个或多个组件执行的示例过程;此处参考不同的附图给出了对批准一个或多个组件执行的附加讨论。在过程400中,就策略更改是否影响被批准列表作出检查(动作402)。被批准列表是已经由实现过程400的保护组件基于加载策略批准执行的组件列表,如上文所讨论的。 可以对加载策略进行不同的更改,并非所有更改都会影响被批准列表,如上文所讨论的。如果策略更改影响被批准列表,那么,被批准列表不再有效,如此,将其删除(动作404)。在被批准列表被删除之后,或者如果策略更改不影响被批准列表,那么,选择被请求执行的组件(动作406)。可以以不同的方式标识这样的组件,诸如通过使用被请求的引导组件的列表,如上文所讨论的。这些引导组件可以是引导关键组件,或者替换地是其他类型的组件,如上文所讨论的。可以以不同的方式来选择这些组件,诸如根据它们在被请求的引导组件的列表中的顺序,随机地,根据某种其他规则或准则等等。就被批准列表是否可用作出检查(动作408)。出于不同的原因,可能没有被批准列表可用,诸如如果设备先前没有引导,如果被批准列表被删除(例如,由于策略更改或检测到篡改列表)等等。如果有被批准列表可用,那么,获取被批准列表(动作410)。就动作406中所选组件是否位于被批准列表上作出检查(动作412)。如果组件位于被批准列表上,那么,组件被批准执行(动作414)。可以由实现过程400的保护组件来维护被批准执行的临时组件列表,然后,将其提供到引导加载器组件,以便执行被批准的组件,如下面所讨论的。然后,就是否有任何附加组件被请求执行作出检查(动作416)。如上文所讨论的, 对于多个组件,请求执行。如果有附加组件在动作406中还没有被选择,那么,过程400返回到动作406,以选择还尚未被选择的组件中的一个。返回到动作408,如果被批准列表不可用,那么,就组件是否满足加载策略作出检查(动作418)。加载策略可包括各种不同的准则,如上文所讨论的。如果组件满足加载策略,那么,将组件添加到被批准列表中(动作420)。然后,过程400行进至动作414,其中,组件被批准执行。然而,如果组件不满足加载策略,那么,实现过程400的保护组件不批准组件执行 (动作422)。然后,过程400行进至动作416,其中,就是否有任何附加组件被请求执行作出检查。继续执行动作416,在已选择所有被请求的组件之后(例如,已选择被请求的组件的列表中标识的所有组件),保存过程400中对被批准列表作出的任何更改(动作424)。这种保存还可以包括锁定或关闭受保护的存储器,诸如如上文所讨论的经由TPM。然后,向引导加载器组件通知在动作414中被批准执行的组件(动作426),且引导加载器组件可进而执行被实现过程400的保护组件批准执行的组件。在被批准列表被保存之后执行已加载的组件防止在动作426中执行的组件篡改被批准列表。可另选地,如果使用其他技术来防止已加载的组件篡改被批准列表,那么,可以向引导加载器组件通知被批准执行的组件,引导加载器组件可进而执行这样的组件,因为它们被批准(例如,在动作414中)。在其他实施例中,保护组件可以执行被批准执行的组件,而并非引导加载器组件,如上文所讨论的。
如此,可以看出,使用此处所讨论的利用初始保护组件来进行设备引导的技术,引导设备的过程按照从比较受信任的到较少受信任的顺序来执行组件。比较受信任的组件是指比起较少受信任的组件,被设备更加信任为非恶意程序的组件。例如,图1的保护组件 116比图1的引导关键组件122更加受信任,由此,当引导图1的设备100时,在引导关键组件122之前执行。再次参考图1,多个信任级别是由设备100所使用的引导过程中固有的。 例如,固件组件112比引导加载器组件114更受信任,引导加载器组件114比保护组件116 更受信任,保护组件116比引导关键组件122更受信任等等。可以以各种方式来标识与组件相关联的特定信任级别。例如,组件的信任级别可以是在较早执行的组件中固有的(例如,通过固件组件112被配置成标识特定引导加载器组件114)。作为另一个示例,一个或多个组件(例如,组件116、122,以及124)可以由受信任的实体来进行数字签名。用于这些组件的数字签名可包括组件与特定信任级别相关联的证书。另外,在以上的讨论中,讨论了引导加载器组件114执行一个或多个引导关键组件122。引导关键组件122可以是相同信任级别,或者可另选地,不同的信任级别。例如,引导加载器组件114可以执行第一组比较受信任的引导关键组件122,然后,执行第二组较少受信任的引导关键组件122等等。此处所讨论的利用初始保护组件来进行设备引导的技术支持各种不同的使用情况。例如,防恶意软件程序在引导过程的早期开始执行。防恶意软件程序可以检测随后试图运行的恶意程序并防止那些恶意程序运行。此外,即使产生恶意程序逃避了检测并开始执行但是随后被检测(例如,由于已更新的加载策略)的情况,那么,下一次设备被引导时, 将由防恶意软件程序检测该程序,并防止其运行。给定了引导过程中的防恶意软件程序运行的早期阶段,恶意程序没有机会在防恶意软件程序之前开始在计算设备100中运行。图 5示出了根据一个或多个实施例的可以被配置成利用初始保护组件来实现设备引导的示例计算设备500。计算设备500可以是,例如,图1的计算设备100,或可以实现,例如,图2的存储器结构200。计算设备500包括一个或多个处理器或处理单元502,一个或多个计算机可读介质504 (可包括一个或多个存储器和/或存储组件506),一个或多个输入/输出(I/O)设备 508,以及可使各种组件和设备彼此进行通信的总线510。计算机可读介质504和/或一个或多个I/O设备508可以作为计算设备500的一部分被包括,或者可另选地可以耦合到计算设备500。总线510表示若干类型的总线结构中的任何一种总线结构的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用各种不同的总线体系结构中的处理器或局部总线。总线510可包括有线和/或无线总线。存储器/存储组件506表示一个或多个计算机存储介质。组件506可包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等等)。组件506可包括固定介质(例如,RAM、R0M、固定硬盘驱动器等等)以及可移动介质(例如,闪存驱动器、可移动硬盘驱动器、光盘等等)。计算设备500还可任选地包括TPM硬件512,该TPM硬件512可包括(和/或控制对其的访问)NVRAM或其他受保护的存储器514。此处所讨论的技术可以以软件实现,指令由一个或多个处理单元502。可以理解, 不同的指令可以存储在计算设备500的不同的组件中,诸如存储在处理单元502中,存储在处理单元502的各种缓存存储器中,存储在设备500(未示出)的其他缓存存储器中,存储在其他计算机可读介质上等等。另外,可以理解,指令存储在计算设备500中的位置可以随着时间而变化。一个或多个输入/输出设备508可使用户向计算设备500输入命令和信息,以及可使信息被呈现给用户和/或其他组件或设备。输入设备的示例包括键盘、光标控制设备 (例如,鼠标)、麦克风、扫描仪等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡等等。此处可以在软件或程序模块的一般上下文中描述各种技术。一般而言,软件包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。这些模块和技术的实现可以存储在某种形式的计算机可读介质上或通过某种形式的计算机可读介质传输。计算机可读介质可以是可以被计算设备访问的任何可用的介质。作为示例,而不是限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。“计算机存储介质”包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPR0M、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机访问的任何其它介质。“通信介质”通常用诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据。通信介质还包括任何信息传送介质。术语“已调制数据信号”是指其一个或多个特征以这样的方式设置或改变以便在信号中对信息进行编码的信号。作为示例而非限制,通信介质可包括有线介质,如有线网络或直接线连接,以及诸如声学、射频(RF)、红外线及其他无线介质之类的无线介质。上面各项中的任何组合也包括在计算机可读介质的范围内。—般而言,此处所描述的任何功能或技术都可使用软件、固件、硬件(例如,固定逻辑电路)、手动处理或这些实现的组合来实现。如此处所使用的术语“模块”和“组件”一般代表软件、固件、硬件或其组合。在软件实现的情况下,模块或组件表示当在处理器(例如,一个或多个CPU)上执行时执行指定任务的程序代码。程序代码可以存储在一个或多个计算机可读的存储器设备中,可以参考图5发现关于其进一步的描述。此处所描述的利用初始保护组件来进行设备引导的技术的特征是平台无关的,这意味着这些技术可以在具有各种处理器的各种商业计算平台上实现。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
权利要求
1.一种引导计算设备的方法,所述方法包括 执行(30 —个或多个固件组件;在执行所述一个或多个固件组件之后,执行(304)引导加载器组件; 标识(306)所述计算设备的保护组件;在执行所述引导加载器组件之后,作为初始组件来执行(308)所述保护组件;以及执行(31 —个或多个引导组件,其中所述一个或多个引导组件仅包括已被所述保护组件批准执行的引导组件。
2.如权利要求1所述的方法,其特征在于,所述保护组件包括防恶意软件程序。
3.如权利要求所述的方法,其特征在于,所述保护组件是在所述引导加载器组件被执行之后在所述计算设备的内核模式中执行的初始组件。
4.如权利要求1所述的方法,其特征在于,所述一个或多个引导组件包括一个或多个引导关键组件。
5.如权利要求1所述的方法,其特征在于,标识所述保护组件包括将由特定制造商制造的特定类型的组件标识为所述保护组件。
6.如权利要求4所述的方法,其特征在于,所述特定类型的组件包括来自所述特定制造商的防恶意软件程序。
7.如权利要求4所述的方法,其特征在于,所述特定类型的组件和所述特定制造商在所述保护组件的数字签名的证书中被标识,所述数字签名是已由所述引导加载器组件信任的实体对所述保护组件进行数字签名所生成的。
8.如权利要求1所述的方法,其特征在于,还包括所述保护程序基于引导组件是否满足加载策略或被包括在被批准的组件的列表上,来确定所述引导组件是否被批准执行。
9.如权利要求1所述的方法,其特征在于,还包括 分析所述一个或多个引导组件是否满足加载策略;生成满足所述加载策略的被批准的引导组件的列表;以及以允许后继的对所述列表的篡改将被检测的方式来存储所述列表。
10.如权利要求9所述的方法,其特征在于,还包括在下次所述计算设备被引导时,标识所述列表中的每一引导组件被所述保护组件批准执行,而无需重新分析所述列表中的每一引导组件是否满足所述加载策略。
11.如权利要求10所述的方法,其特征在于,还包括 接收对所述加载策略的更改;检查对所述加载策略的所述更改是否影响所述列表; 如果对所述加载策略的所述更改影响所述列表,则删除所述列表;以及如果对所述加载策略的所述更改不影响所述列表,则标识所述列表中的每一引导组件被所述保护组件批准执行,而无需分析所述列表中的每一引导组件是否满足对所述加载策略的所述更改。
12.如权利要求9所述的方法,其特征在于,所述列表包括每一个所述被批准的引导组件的标识符以及在所述列表被生成时所述加载策略的当前版本的标识符。
13.如权利要求9所述的方法,其特征在于,存储所述列表包括 生成所述列表的散列值;将所述列表存储在存储设备上;将所述散列值存储在受保护的存储器中;以及锁定所述受保护的存储器以防止程序被写入到所述受保护的存储器。
14.一种计算设备,包括 处理器(502);以及在其上存储了多个指令的一个或多个计算机可读介质(504),当由所述处理器执行时, 所述指令使所述处理器标识(306)所述计算设备的保护组件;以及当引导所述计算设备时,作为初始内核级别组件,执行(308)所述保护组件,所述保护组件被配置成批准一个或多个引导组件来在所述计算设备上执行。
15.如权利要求14所述的计算设备,其特征在于,所述多个指令包括所述计算设备的引导加载器组件。
全文摘要
本文描述了利用初始保护组件来进行设备引导。引导计算设备包括执行引导加载器组件所遵循的一个或多个固件组件。诸如防恶意软件程序之类的计算设备的保护组件,被标识,并在执行引导加载器组件之后,作为初始组件来执行。还执行一个或多个引导组件,这一个或多个引导组件仅包括被保护组件批准的引导组件。还可以以防篡改的方式维护先前被保护组件批准的引导组件的列表。
文档编号G06F9/445GK102279760SQ20111016835
公开日2011年12月14日 申请日期2011年6月10日 优先权日2010年6月11日
发明者A·F·托马斯, D·J·林斯利, M·F·诺瓦克, R·K·斯皮格, S·A·费尔德, S·汤姆 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1