带有休眠支持的全局有效的测量的操作系统发动的制作方法

文档序号:6437289阅读:156来源:国知局
专利名称:带有休眠支持的全局有效的测量的操作系统发动的制作方法
带有休眠支持的全局有效的测量的操作系统发动
背景技术
现代的计算设备常常包括向它的主机计算设备提供安全功能性的可信平台模块 (TPM)0 TPM,作为硬件部件,可以提供增强的安全性,其优于那种只是通过由计算设备执行计算机可执行指令才可获得的安全性。更具体地说,传统的TPM的硬件被设计成通过以下方式而保护被存储在TPM内的信息,即仅经由特定通道和特定功能来使能对这样的信息的访问和修改,以及防止对这样的信息的其它访问或修改。因此,即使恶意的实体将得到对 TPM本身的物理访问,被存储在TPM内的信息仍旧保持为受保护的,除非是在应用了真正奇特的和先进的取证术(forensics)的场合下。通常被存储在TPM中的一组信息是被存储在TPM的平台配置寄存器(PCR)中的数值。这些数值打算用来代表计算设备的当前状态,且它们是通过将代表正被实例化的硬件或软件组件的数值扩充(extend)到各种PCR中而被生成的。因此,以计算设备被接通电源时的初始值开始,PCR被用代表被接连地实例化的硬件或软件组件的数值进行扩充,这样使得在给定时间处的PCR的值代表在那个时间的计算设备的状态,正如一直到时间上的那个点,由已被实例化的硬件或软件组件定义且被测量到PCR中的。正如所指示的,TPM的硬件被设计成使得PCR的值只能通过上述的扩充过程才可以改变。因此,PCR的值不能以另外的方式被修改,特定的值也不能被简单地存储在其中。然而,如果自从计算设备上次接通电源以来计算设备的状态仅仅由被实例化的组件来代表, 则这种设计可以工作得最好。但是,为了节省功率,某些计算设备具有进入“睡眠”状态或甚至消耗更少功率的 “休眠”状态的能力。典型地,睡眠状态包括计算设备停止大多数处理操作,以及关断或使其它消耗功率的外围设备,诸如显示设备或硬盘驱动断电。然而,在睡眠状态下,计算设备典型地使用功率来维持易失性存储器的内容,以及维持TPM的当前状态和被存储在其中的任何信息,诸如PCR的值。因此,当从睡眠状态再继续时,由易失性存储器的内容和TPM的PCR 的值两者所反映的计算设备的状态,可以保持为与计算设备进入睡眠状态时比无变化。相比之下,为了尽可能多地节省功率,休眠状态典型地不供给计算设备的易失性存储器的持续功率消耗,由此导致被存储在易失性存储器中的信息的丢失。为了保存易失性存储器的内容,进入休眠状态的计算设备可以首先把易失性存储器的内容保存到非易失性存储媒介。随后,计算设备可以进入典型地是完全关断电源状态的休眠状态,类似于计算设备被完全关闭,除了易失性存储器的内容被保存到非易失性存储媒介以外。随后,为了再继续(resume)操作,计算设备可以着手完成初始引导(boot)序列, 其类似于接通电源或重新启动,只是在初始引导序列中时间上的某点,可以检测被保存到非易失性存储媒介中的易失性存储器的内容并将它们拷贝回易失性存储器,由此使得计算设备能够再继续它的休眠前状态。然而,虽然计算设备可以再继续它的休眠前状态,但至少就已经被实例化且对于其计算机可执行指令和数据可能已被复原(restore)到易失性存储器的硬件和软件而论,TPM的PCR可能不一定包括与休眠前状态相关联的值。具体地,与在从初始电源接通或重新启动序列重新创建计算设备的状态时扩充TPM的PCR的方式相比,
4将被保存的内容拷贝回易失性存储器典型地并不以相同的方式来扩充TPM的PCR。因此, PCR的值可能不再与计算设备的状态相关连。

发明内容
在一个实施例中,在进入休眠状态之前,平台配置寄存器(PCR)的当前值可以诸如通过用对于可信执行环境——诸如可信平台模块(TPM)——独特的密钥签署(sign)而被引述(quote),并且PCR的值连同引述一起可被追加到事件日志,该事件日志典型地被保持到易失性存储器。当易失性存储器的内容被保存在非易失性存储媒介时一一正如典型地由计算设备在进入休眠状态之前而执行的,具有PCR的当前值及其引述的事件日志可以是被保存到非易失性存储媒介的信息的一部分。在另一个实施例中,只能被递增但不能被复位的单调计数器,诸如典型地可以由可信执行环境维护的,可以被用作为“引导计数器”,以及可以在每次计算设备被“引导”时递增。单调计数器的当前值可以连同PCR的值及其引述一起在计算设备进入休眠状态之前而被追加到事件日志。在再一个实施例中,在随后从休眠状态再继续时,现有的事件日志可以与作为休眠过程的一部分已被保存到非易失性存储媒介的事件日志连结(concatenate)。可被保持在易失性存储器中并以传统的方式被追加的所得到的事件日志,不仅可以包括自从最近从休眠状态再继续以来的项目,而且也包括休眠之前的项目,其包括休眠之前的PCR的值、它的引述和休眠之前的单调计数器的值。在又一个实施例中,包括有来自计算设备的多代(multiple generation)或化身 (incarnation)的事件——诸如来自计算设备的休眠之前的事件和从休眠再继续之后的事件——的事件日志可以参照以下而进行评估,即参照当前的PCR值、在事件日志中被保存和被引述的先前的PCR值,以及参照在单调计数器的当前值与在事件日志中单调计数器的被保存值之间的递增的连续性(incremental continuity)。本概要被提供来以简化的形式介绍概念的选择,这些概念还将在下面的详细说明中进行描述。本概要既不打算标识所要求保护的主题的访问控制特征或必要特征,也不打算被使用来限制所要求保护的主题的范围。从参照附图进行的以下的详细说明,将明白附加的特征和优点。


当结合附图来考虑时,以下的详细说明可以得到最好地理解,其中 图1是包括TPM的示范性计算设备的图2是在接通电源后计算设备的示范性操作的框图3是在休眠之前计算设备的示范性操作的框图4是在从休眠再继续后计算设备的示范性操作的框图5是在从休眠再继续后计算设备的另一个示范性操作的框图6是事件日志的示范性检查的框图7是能够休眠的计算设备的示范性操作的流程图;以及
图8是事件日志的示范性检查的流程图。
具体实施例方式以下的说明涉及到在包括可信执行环境的计算设备的休眠之前,将可信执行环境的至少某些平台配置寄存器(PCR)的值,连同正被用作为引导计数器的、可信执行环境的单调计数器的值一起记录到事件日志中。之后刚一再继续,这个信息所被输入到的先前的事件日志——其作为休眠映像(hibernation image)的一部分被保存——便可以与当前的事件日志连结,由此提供用来安全地记录至少自从最近的电源接通或重新启动以来的计算设备的历史的机制。这里描述的机制聚焦于,但不限于,实际的计算设备进入低功率“休眠”模式或状态。实际上,下面的教导同样可应用于仿真实际计算设备的操作的虚拟计算设备,以及不仅可以跨越(across)休眠与再继续的循环来应用,而且可以跨越其中计算设备的状态被复原而不用重新创建的任何循环来应用,包括例如分发状态到另外的无状态的终端计算设备和其它类似的环境。结果,所参考的具体的示范性环境被利用来使得说明更具体,但并不意味着将列举的实施例限制于所参考的具体的示范性环境。另外,这里描述的机制常常是参照可信平台模块(TPM)描述的,因为这样的模块在本领域是公知的,且它包括可以被下面描述的机制利用的属性。然而,正如本领域技术人员将认识到的,TPM在传统上必须遵循针对这样的模块的可信计算组(TCG)的标准和要求,且因而包括对于这里描述的机制无用或最多正交的(orthogonal)特征和功能性。因此,虽然为了描述清晰起见,参考了 TPM,但这里描述的机制同样地可应用于可以安全地提供必要功能性的任何“可信执行环境”,所述必要功能性诸如是安全的单调计数器,只能以按照由计算设备实例化的组件定义的方式被修改的一个或多个平台配置寄存器,以及参照一个或多个安全地维护的和获得的密码密钥来签署或引述信息的能力。当在这里使用时,术语“可信执行环境”是指包括遵循TCG标准的实际的TPM,以及其它可以安全地提供必要功能性的硬件或软件模块,诸如以上列举的和下面更详细地描述的那些。虽然不是必需的,但下面的描述将是在由计算设备执行的、诸如程序模块那样的计算机可执行指令的一般上下文中。更具体地说,描述将参照由一个或多个计算设备或外围设备执行的动作和操作的符号表示,除非另外地指出。照这样,便应理解,这样的动作和操作一一有时被称为是计算机执行的一一包括由代表采用结构化形式的数据的电信号的处理单元进行的操控。这个操控变换数据,或把数据保持在存储器中的单元处,它以本领域技术人员很好理解的方式重新配置或另外地改变计算设备或外围设备的操作。在其中保持数据的数据结构是具有由数据格式定义的特定属性的物理单元。通常,程序模块包括执行特定任务或实施特定的抽象数据类型的例行程序、程序、 对象、组件、数据结构等等。而且,本领域技术人员将会意识到,计算设备不一定限于传统的个人计算机,而是包括其它的计算构造,包括手持设备、多处理器系统、基于微处理器的或可编程的消费者电子设备、网络PC、小型计算机、大型计算机等等。同样地,计算设备不一定限于独立的计算设备,因为所述机制也可以在通过通信网络被链接的分布式计算环境下被实践。在分布式计算环境下,程序模块可以安置在本地和远程存储器存储设备中。参照图1,图示了示范性计算设备100,其部分地包括在下面描述的方法中被进一步提到的硬件单元。示范性计算设备100可包括,但不限于一个或多个中央处理单元(CPU) 120、系统存储器130、可信平台模块(TPM) 150和系统总线121,该系统总线121把包括系统存储器在内的各种系统部件耦合到处理单元120。系统总线121可以是几种类型的总线结构的任何一种,包括存储器总线或存储器控制器、外围总线和使用各种各样总线体系结构中的任何总线体系结构的本地总线。取决于特定的物理实现,CPU 120、系统存储器 130和TPM 150中的一个或多个可以在物理上被共同安置在诸如单个芯片上。在这样的情形下,系统总线121中的某些或全部可能只不过是在单个芯片结构内的硅通道,且在图1上它的例示可能只不过是为了说明目的的标记上的方便。正如前面指示的,这里描述的机制同样可应用于任何可信执行环境,以及硬件 TPM,诸如图1所示的TPM 150,仅仅是这样的可信执行环境的一个例子。因此,下面描述的 TPM 150的利用,不是打算将所描述的机制具体地限于遵循TCG技术规范的硬件TPM,而是打算图解说明在可以很一般地扩展到任何的可信执行环境的特定上下文内描述的机制。因此,严格来说是为了易于说明,将参考图1所示的TPM 150。TPM 150可包括TPM特定的密钥151,用于加密和解密提供给它的信息。传统上,TPM 150包括初始的一组不可改变的公共和私有加密密钥,它们可以被利用来以已知的和已建立的方式得到可自由使用的公共和私有加密密钥。例如,TPM 150可包括背书密钥(Endorsement Key,ΕΚ)、一个或多个身份证明密钥(Attestation Identity Key,AIK)和可被利用来不同地签署、引述和加密与解密信息的其它类似的密码密钥的公共和私有部分。另外,TPM 150可包括平台配置寄存器(PCR) 155,它可以安全地存储与计算设备100的状态独特地相关联的值或其它数据。这样的值在传统上由CPU 120经由系统总线121提供给TPM 150。在一些实施例中,只有由CPU 120 执行的特定代码才被许可发送数据到TPM 150,TPM 150将修改被存储在PCR 155中的值。 TPM 150还可包括至少一个单调计数器,诸如单调计数器156。由单调计数器156存储的值可以递增,但不能递减或被赋予特定值,因为这样的动作会被TPM 150阻止。在一个实施例中,一旦单调计数器156的值超过某个阈值,它就可以翻转回初始值,并且可以再从那里递
+曰O除了上述的单元以外,计算设备100典型地还包括计算机可读介质,其可包括可以由计算设备100访问的任何可得到的介质。作为例子,而不是限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储信息一诸如计算机可读指令、数据结构、程序模块或其它数据一的任何方法或技术实施的介质。计算机存储介质包括,但不限于RAM、ROM、EEPR0M、闪速存储器或其它存储器技术、CD-ROM、数字多功能盘 (DVD)、或其它光盘存储装置、盒式磁带、磁带、磁盘存储装置或其它磁存储设备、或可被使用来存储想要的信息并可以由计算设备100访问的任何其它媒介。通信介质典型地将计算机可读指令、数据结构、程序模块或其它数据具体化为诸如载波或其它输送机制的经调制的数据信号,且通信介质包括任何信息传递介质。作为例子,而不是限制,通信介质包括有线介质和无线介质,有线介质诸如是有线网络或直接连线的连接,而无线介质诸如是声学的、RF、红外和其它无线介质。以上的任何组合也应当被包括在计算机可读介质的范围内。当使用通信介质时,计算设备100可以经由与一个或多个远程计算机的逻辑连接来在联网的环境下操作。图1所示的逻辑连接是到网络180的通用网络连接171,网络180 可以是局域网(LAN)、广域网(WAN)或其它网络。计算设备100通过网络接口或适配器170 被连接到通用网络连接171,网络接口或适配器170进而又被连接到系统总线121。在联网
7的环境下,相对于计算设备100或它的多个部分或外围设备描绘的程序模块可被存储在通过通用网络连接171与计算设备100通信地耦合的一个或多个其它计算设备的存储器中。 将会意识到,所显示的网络连接是示范性的,也可以使用在计算设备之间建立通信链路的其它手段。在计算机存储介质中间,系统存储器130包括采用易失性和/或非易失性存储器的形式的计算机存储介质,包括只读存储器(ROM) 131和随机存取存储器(RAM) 132。基本输入/输出系统133 (BIOS),尤其包含用于引导计算设备100的代码,典型地被存储在ROM 131。RAM 132典型地包含可以由处理单元120立即访问的和/或当前正对其进行操作的数据和/或程序模块。作为例子,而不是限制,图1图示正驻留在RAM 132中的操作系统134、 其它程序模块135和程序数据136。RAM 132还可包括可以与TPM 150的操作有关的数据, 诸如事件日志190。在一个实施例中,事件日志190可包括自从加电以来或自从计算设备上次重新启动以来由计算设备100装载或执行的所有模块的独特的标识;相同的模块,其装载或执行可以导致当前被TPM 150保持在一个或多个PCR 155中的值。例如,事件日志 190可以是可信计算组(TCG)事件日志。计算设备100还可包括其它可拆卸/非可拆卸、易失性/非易失性计算机存储介质。仅仅作为例子,图1图示硬盘驱动141,它从非可拆卸、非易失性磁或固态介质读出或写入。可供示范性计算设备使用的其它可拆卸/非可拆卸、易失性/非易失性计算机存储介质包括,但不限于基于固态的存储设备、盒式磁带、闪速存储卡、数字多功能盘、数字录像带、 固态RAM、固态ROM等等。硬盘驱动141典型地通过非可拆卸存储器接口,诸如接口 140,被连接到系统总线121。以上讨论的和在图1中图示的驱动及其相关联的计算机存储介质提供计算机可读指令、数据结构、程序模块和用于计算设备100的其它数据的存储。在图1上,例如,硬盘驱动141被图示为存储操作系统144、其它程序模块145和程序数据146。应当指出,这些组件可以是与操作系统134、其它程序模块135和程序数据136相同的或不同的。操作系统 144、其它程序模块145和程序数据146至此被给予不同的标号,以便说明至少它们是不同的拷贝。在一个实施例中,计算设备100的“状态”可以由诸如以上描述的那些硬件部件和自从计算设备100被接通电源或重新启动以来被实例化或另外地被激活的、也诸如以上描述的那些计算机可执行指令的组件来定义。从安全性的观点看,在加电之前和在任何硬件的初始化或任何计算机可执行指令的执行之前的时间,计算设备100的状态可被看作为 “安全”状态。因此,从安全性的观点看,计算设备100的任何之后的状态是否安全,可以经由检查从加电或重新启动后重新加电的时刻以来对计算设备100所做出的改变而被确定。 因此,正如本领域技术人员知道的,事件日志190的一个功能是提供所有的相关硬件部件和自从加电以来已经在计算设备100上被实例化的计算机可执行指令的组件的记录。如果在事件日志190上列出的每个单元据信是安全的,则计算设备100的当前状态可以同样地被认为是安全的,因为计算设备可被认为是没有偏离它的初始安全状态。相反,且更具体地说,如果在事件日志190中列出的任何一个单元被认为有安全性担忧,那么计算设备100的状态可被确定为不再是安全的,结果,计算设备100可被阻止执行某些安全敏感的操作,诸如举例而言,加入安全网络或访问受保护的数据。
然而,正如本领域技术人员也知道的,被保留在RAM 132中的事件日志190可以被访问和修改,结果,不能保证它们是所有的相关硬件部件和自从加电以来已经在计算设备100上被实例化的计算机可执行指令的组件的准确表示。为了使事件日志190免于受这样的篡改,TPM 150的PCR 155被利用来保留与在事件日志190中的项目相关联的值,这样使得如果PCR 155的值不对应于事件日志190中的项目,则可以作出确定事件日志190可能已被篡改,而不再代表相关的硬件部件和自从加电以来已经在计算设备100上被实例化的计算机可执行指令的组件的准确列表。具体地,且正如本领域技术人员知道的,在事件日志190中的每个项目可以对应于特定的硬件部件或可被测量的计算机可执行指令的组件, 所述测量诸如是通过计算相关的计算机可执行指令的散列或另外地导出代表那个组件的独特的数值来进行的。因为每个组件被实例化,所以这个独特的数值可以经由已知的数学运算而被扩充到PCR 155的一个或多个中,所述数学运算接收一个或多个PCR 155的先前值和正被扩充到它们中的独特的数值作为输入,并由此导出被存储回一个或多个PCR 155 中的随后的数值。因此,PCR 155的当前值应当是通过如下方式而可得到的,S卩用与事件日志190中的每个项目相关联的独特的数值、以在事件日志190中那些项目的次序来执行这样的扩充操作。如果从事件日志190中的项目获得的值不匹配于被保持在PCR 155中的那些值,则可以得出上述的事件日志190不再是准确的结论。转到图2,图上显示的系统200图示按照以上的说明的示范性操作系列,它也提供用于以下说明的基础。正如可以从系统200看出的,电源接通事件210可以施加到计算设备 100上,由此使得计算设备100开始各种硬件部件的初始化,或另外地实例化,并且也开始执行计算机可执行的指令,诸如被存储在计算设备100的硬盘驱动141上的操作系统144。 例如,如图2的系统200所显示的,被存储在硬盘驱动141上的操作系统144可以被引导,或另外地被实例化,正如由引导动作230所例示的。正如本领域技术人员将会了解的,操作系统144实例化的过程可以导致创建操作系统134,作为把信息存储在RAM 132的执行过程。 因此,引导动作230在图2上被图示为把来自被存储在硬盘驱动141上的操作系统144的信息以操作系统134的形式转移到RAM 132,操作系统134以灰色图示,以表明在引导动作 230开始时,操作系统134还没有全部存在于RAM 132内。当计算设备100的每个组件被实例化时,适当的项目可被加到事件日志190。因此,如图2的系统200中所示的逻辑动作232例示的,用于操作系统144的实例化的项目,诸如示范性OS装入程序项目292和示范性操作系统项目四3,可被加到事件日志190。在一个实施例中,取决于事件日志190是按“第一个在顶部(first-on-top)”的次序还是按“第一个在底部(first-on-bottom)”的次序被组织,这样的项目292和293可被加在针对先于操作系统144而被实例化的硬件的项目(诸如硬件项目四1)之前或之后。正如本领域技术人员将会认识到的,在事件日志190中的典型项目可包括更多的细节,以及可以被更细致地描绘。然而,在事件日志190中显示项目291、292和四3,纯粹是为了说明的目的。除了记录动作232以外,操作系统144的实例化可以导致一个或多个扩充操作,诸如扩充动作231,它可以用对应于事件日志190中的项目292和四3的操作系统144的组件的某些或全部的测量值来扩充PCR 155中的一个或多个。如此,计算设备100可以着手完成它的引导序列,以及任选地,可以实例化另外的计算机可执行指令,诸如包括程序模块 145的那些指令,包括将适当的项目记录在事件日志190中和用适当的测量值扩充PCR 155中的一个或多个。在一个实施例中,可信平台模块150的单调计数器156可被用作为“引导计数器”, 这样使得在每次计算设备100被引导时——包括举例而言,诸如在图2的系统200中所图示的被接通电源,被重新启动,或从休眠状态再继续,它可以被递增,如由递增动作220指示的。当在这里使用时,术语“接通电源”是指在机械关断电源状态——诸如在高级配置与电源接口(ACPI)规范中被定义为“G3”状态的状态——中的时间延长期后给计算设备加电。相反,当在这里使用时,术语“重新启动”是指给计算设备加电作为经过电源关断状态的自动循环的一部分,诸如可以通过选择在许多操作系统中共有的“重新启动”任选项而被发起。当在这里使用时,术语“再继续”是指在计算设备已经进入休眠状态——诸如由ACPI 规范的“S4”状态所定义的状态——后加电。回到图2,单调计数器156的值256可以是大于先前值的增量,在图上用变量“X”代表,以便虑及计算设备100的所图示的引导。另外, 虽然在图2上的图示显示递增步长为一,但可以利用其它的递增值。转到图3,图上显示的系统300图示处在已经被引导和被利用后的状态的计算设备。因此,在图3所示的图解说明的例子中,事件日志190可包括作为对先前描述的那些的补充的另外的项目,包括例如涉及一个或多个程序模块或计算机可执行指令的其它组件的项目394。如图3的系统300中所示的,休眠指令310可被提供给计算设备100,这可以使得计算设备将RAM 132的内容,或至少它的某部分,存储在诸如硬盘驱动141的易失性存储媒介上,以作为休眠镜像,诸如休眠镜像360。这样的动作由在图3上的存储动作350代表。在一个实施例中,在创建休眠镜像360之前,一个或多个附加项目可被记录在事件日志190中。具体地,如由引述动作320所示的,TPM特定的密钥151中的一个或多个可以以本领域技术人员熟知的方式被利用来引述PCR 155中一个或多个的当前值。例如,AIK 可被利用来签署PCR 155中的一个或多个的值。这样的过程可以证明被引述的一个或多个PCR 155的值事实上在它们被引述时是在计算设备100上存在的。随后,如由记录动作321所例示的,PCR 155的这个引述可被追加到事件日志190, 如由项目395所例示的。另外,项目395还可包括PCR 155本身的值,如由记录动作330所例示的,这样,引述提供证明作为项目395的一部分的PCR 155的值没有被篡改,或者另外地被修改。在一个实施例中,项目395还可包括单调计数器156的当前值256,如由记录动作340所例示的。正如本领域技术人员将会认识到的,虽然PCR 155的值、PCR 155的值的引述和单调计数器156的值256在图3上被显示为被记录在事件日志190中以作为单个项目395,但这样的图解说明仅仅是个例子,且为了说明的清晰性而被简化。在其它实施例中, 那些信息条的一个或多个可以一个个地或经由多个项目而被记录在事件日志190中。记录动作321、330和340可以在由存储动作350创建休眠映像360之前发生。结果,当事件日志190在诸如硬盘驱动141那样的非易失性存储媒介上被保存在休眠映像360 中时,项目395可以是事件日志190的一部分。正如本领域技术人员已知的,一旦休眠映像 360已被保存以及计算设备100已执行其它相关的以休眠为中心的功能,计算设备100就可以进行休眠,并且RAM 132的内容可能丢失,因为计算设备100实质上可以进入电源关断状态。虽然记录动作321、330和340被显示为是在计算设备100的休眠的上下文内发生的,但它们不需要在时间上邻近这样的休眠事件发生。例如,在一个实施例中,记录动作321、330和340可以在计算设备100操作期间的任何时间被执行,包括例如在计算设备100已完成引导不久以后执行。转到图4,图上显示的系统400图示包括休眠映像360的、正从休眠状态再继续的计算设备100。初始地,例如可以通过按压电源按钮或其它类似的用户动作而对计算设备 100施加再继续动作410。随后,计算设备100可以进行类似于以上参照图2的系统200描述的那样的引导序列。因此,如图4的系统400中所显示的,操作系统144可以被引导,正如由引导动作430所例示的,以生成内存(in-memory)中的操作系统134,以及操作系统的相关组件可被记录在事件日志190中,正如由记录动作432所例示的,以及它们的测量可被扩充到PCR 155中的一个或多个,正如由扩充动作431所例示的。另外,正如以前也描述的, 单调计数器156可以递增,正如由图4的系统400中的递增动作420所显示的。单调计数器156的所得到的值456可以比单调计数器156的先前值256大出单个递增单位。然而典型地,一旦OS装入程序、或操作系统134的其它相关组件检测到休眠映像 360的存在,计算设备100的传统的引导可被挂起,以及休眠映像360可被复原到RAM 132。 因此,正如在图4的系统400中显示的,在休眠映像360被复原到RAM 132之前,事件日志 190可能只包括用于实例化的硬件的项目,诸如项目496,和用于OS装入程序或操作系统 134的其它相关组件的项目,诸如项目497。转到图5,图上显示的系统500图示休眠映像360到RAM 132的一个示范性复原。 正如复原动作550所例示的,将休眠映像360复原到RAM 132可以使得在计算设备100休眠之前先前存储在RAM 132上的操作系统134、程序模块135和程序数据136返回到RAM 132。 正如本领域技术人员将会认识到的,RAM 132的内容的复原可以使计算设备100能重新开始在休眠之前它正执行的操作。然而,正如本领域技术人员将会认识到的,复原动作550不会影响PCR 155。因此,PCR 155的值可以反映例如直接在复原休眠映像360之前的计算设备100的状态,与计算设备的实际状态相反,它更类似于在图3的系统300中显示的状态。然而,作为复原操作550的一部分,事件日志190可被修改,以便包括在事件日志 190被保存在休眠映像360中时在事件日志190中的信息和现在被复原到RAM 132中的信息,诸如项目291、292、293、394和395,以及还包括自从计算设备100最近接通电源而从休眠状态再继续以来被加到事件日志190中的信息,诸如项目496和497。这样,事件日志190可包括足够的信息来准确地评估计算设备100的安全状态。具体地,以前被实例化且影响在休眠(其现在被复原)之前的计算设备100的状态的组件可以诸如经由项目291、292、293和394在事件日志190中被表示。另外,当前被实例化并且其可以影响计算设备的当前状态的组件可以同样地诸如经由项目496和497在事件日志190 中被表示。事件日志190的当前项目可以参照一个或多个PCR 155的当前值以本领域技术人员熟知的方式被证实,而事件日志190的先前项目可以参照被存储在事件日志190中的一个或多个PCR 155的先前值(诸如项目395的一部分)被证实。一个或多个PCR 155的那个先前值的引述可被利用来保证被存储在事件日志190中的值没有被修改。另外,在单调计数器156的当前值456与单调计数器156的一个或多个先前值 256——诸如可以是项目395的一部分的那些值——之间的比较可以揭示计算设备是否在中间被引导而没有适当的信息被记录到事件日志190中。例如,如果作为项目395的一部分的单调计数器156的先前值256对于单调计数器156的当前值456是递增连续的,则可
11以作出确定计算设备在导致休眠的计算设备的状态的先前引导与导致再继续的那个状态的当前引导之间没有被另外地弓I导。转到图6,图上显示的系统600图示上述机制的一个示范性利用。在图6的系统 600中,个人计算设备610可以是已经经历与以上参照示范性计算设备100详细描述的那些步骤类似的步骤序列的计算设备。这样,个人计算设备610可包括事件日志190、PCR 155 和单调计数器156。另外,网关计算设备620可以同样地共享参照示范性计算设备100 — 一诸如参照图1一一描述的通用硬件和软件。在一个实施例中,个人计算设备610和网关计算设备620可以经由网络180而通信地耦合,以及个人计算设备610可以试图获得对由网关计算设备620保护的某些数据或资源的访问。在这样的实施例中,如果网关计算设备620可以确定个人计算设备610不是恶意的,则网关计算设备620可以准许个人计算设备610正在请求的访问。为此,个人计算设备610可以以本领域技术人员熟知的方式,使得它的事件日志190和它的PCR 155与单调计数器156的值对于网关计算设备620是可得到的,正如由图6的系统600中显示的通信630和640所例示的。网关计算设备620然后可以分析事件日志190以确定个人计算设备610是否已经实例化可能是恶意的或者另外地在给定网关计算设备620正强制服从的访问条件下不可接受的任何组件。除了分析事件日志190以外,网关计算设备620可以进一步验证它的判决所基于的信息,即,在事件日志190中的项目是准确的,且没有被修改或者另外地被篡改。为此,网关计算设备620可以如由动作650所例示地验证PCR 155的值等同于在自从最近的引导以来在事件日志190中列出的组件的测量——诸如项目496和497——被扩充到PCR 155 的情况下将获得的值。对于在最近的引导之前在事件日志190中的项目,网关计算设备 620可以如由动作670所例示地验证PCR 155的先前值(如被包含在项目395中的)等同于在最近的引导之前发生的、事件日志中列出的组件的测量——诸如项目291、292、293和 394——被扩充到PCR 155的情况下将获得的值。另外,虽然没有具体地显示,但网关计算设备620可以通过参考也作为项目395的一部分的、或另外地被包含在事件日志190中的那些值的引述而验证在项目395中的PCR的先前值没有被修改或另外地被篡改。而且,为了保证个人计算设备610在被记录于事件日志190中的引导之间没有被另外地引导,网关计算设备620可以如由动作660所例示地验证在被存储于事件日志190中——诸如在项目395中——的单调计数器156的值与单调计数器156的当前值之间有递增的连续性。如果所有的这样的检验被验证,则网关计算设备620可以进行对事件日志190的分析,并验证其中的被列举的每个组件是被批准的,或另外地验证至少其中被列举的每个组件不被认为是恶意的。正如由动作680指示的,在一个实施例中,事件日志190的项目的这样的检查可以形成由网关计算设备620有关以下内容的判决的基础,即是否准许个人计算设备610访问它正在请求的无论什么数据或资源。虽然以上的说明仅仅聚焦于诸如在单个休眠与再继续的循环中计算设备的两 “代”,这里在休眠之前的计算设备的操作可被看作为一“代”,而在从休眠再继续之后的计算设备的操作可被看作为随后的另一“代”,但以上的说明并不限于此。相反,单调计数器 156的使用可以使上述的机制能跨越计算设备的多“代”来实施。正如这里使用的,术语“代” 是指以电源接通事件开始且以电源关断事件结束的计算设备的操作,电源接通事件包括跟随在其间计算设备被完全关断电源的时期之后的电源接通事件、作为重新启动的一部分发生的电源接通事件和使得计算设备从休眠状态再继续的电源接通事件;而电源关断事件包括当计算设备被关断时的电源关断事件、作为重新启动的一部分的电源关断事件和使得计算设备进入休眠状态的电源关断事件。如上所述,当计算设备100被休眠时,或另外地被安置到将用信号通知当前“代” 的结束的挂起状态中时,诸如举例而言,当虚拟计算设备被缩减到用于克隆的盘映像时,一个或多个项目可被记录在事件日志190中。所述一个或多个项目可包括PCR 155的一个或多个的当前值、那些PCR值的引述和被用作为引导计数器的单调计数器156的当前值。在计算设备100的多代可被记录在事件日志190的实施例中,这些代可以用单调计数器156 的值来描述。更具体地,对于不同于当前代的每一代,在事件日志190中可以有单调计数器 156的先前值的对应项目。对于当前代,单调计数器156的对应值可以是在TPM 150中被单调计数器156保持的单调计数器156的那个值。在一个实施例中,进入事件日志190中、包括单调计数器156的当时的当前值的项目可以不一定是在电源关断事件之前在事件日志190中的最后的项目。因此,在这样的实施例中,可以参考事件日志190中更传统的项目,诸如硬件项目291和496,以便确定计算设备100的一代的开始和结束。可以对应于那个代的单调计数器156的值可以是如在标记计算设备100的那个特定代的开始与结束的项目之间出现的项目中(诸如在项目395中)所指示的值。另外,对于包括跨越计算设备100的这样的多代的项目的事件日志(诸如事件日志190)的分析可以以与先前描述的相同的方式进行。具体地,分析事件日志190的计算设备,诸如网关计算设备620,可以验证被记录在事件日志190中的单调计数器156的值是连续的,这表明没有未被记录在事件日志中的计算设备的代。在事件日志上的每个项目然后可以通过参考在与正被验证的项目相同计算设备代内被记录在事件日志190中的PCR 155的值,而被验证为没有被篡改。另外,那些PCR值本身可以通过参考与它们一起被记录的引述而被验证。一旦这样的验证被执行,事件日志190的项目,包括跨越计算设备100的多代伸展的项目,如果适当的话,就可以被分析以确定是否存在涉及被认为是恶意的、不安全的、或不适当的组件的任何项目,所述组件例如包括没有被更新到更加新的、改进的版本的组件。转到图7,图上显示的流程图700图示可以由计算设备执行的示范性步骤序列,其生成跨越计算设备的多代,诸如跨越多个休眠与再继续循环的事件日志。初始地,如图7的流程图700所显示的,在步骤710,被包括作为从休眠再继续的一部分,计算设备可被接通电源。随后,可信执行环境的单调计数器尽早在可行的情况下递增。在图7的示范性流程图 700上,单调计数器的这样的递增在步骤715发生,虽然它同样可以在稍后的时间点执行, 而并不背离这里的描述。在一个实施例中,单调计数器的递增,诸如在步骤715的递增,可以由作为操作系统的一部分的计算机可执行指令执行。在这样的实施例中,单调计数器的递增可能直到在操作系统的至少相关组件已经被实例化之后才能被执行,诸如在步骤735。 然而,在另一个实施例中,单调计数器的递增可以由作为计算设备100的BIOS的一部分、或甚至作为可信执行环境本身的一部分的计算机可执行指令来执行。在这样的实施例中,单调计数器的递增,可以早得多地被执行,诸如在步骤715,如图7的流程图700所显示的。
除了单调计数器的递增以外,在步骤710接通电源之后,计算设备的硬件方面可被实例化,且被记录在事件日志中,以及它们的测量可被利用来扩充可信执行环境的一个或多个PCR,如在步骤720显示的。同样地,在步骤725,OS装入程序或操作系统的其它适当的组件可以被实例化,被记录在事件日志中,以及可信执行环境的一个或多个PCR可以用它们的测量被扩充。在步骤730,可以诸如由OS装入程序或操作系统的其它适当的组件对于是否存在休眠映像作出确定。如果不存在休眠映像,则处理可以进到步骤735,在该点,操作系统的其它组件可被实例化,以便完成操作系统的引导,让那些组件被记录在事件日志中,以及它们的测量被利用来扩充可信执行环境的一个或多个PCR。这样的传统的记录可信执行环境 PCR的扩充可以在步骤745对于计算设备的其它方面进行。在时间上的某个点,正如由在步骤750的判决所图示的,计算设备可被休眠。如果计算设备被休眠,或计算设备的当前代被另外地结束,使得在事件日志中对应于这样的代的信息应当被保存以用于将来的评估,于是处理可进行到步骤755,在该点,PCR的当前值可被保存在事件日志中,正如在步骤715 被递增的单调计数器的当前值可以的那样。附加地,也作为步骤755的一部分,PCR的当前值可以诸如通过用一个或多个可信执行环境特定的密钥来签署而被引述。所得到的引述可以同样地被保存在事件日志中。正如在单调计数器的递增的情形中,在一个实施例中,步骤755的实行可以由操作系统的一个或多个组件执行,而在其它实施例中,步骤755的实行可以由BIOS或甚至由可信执行环境本身执行。如果步骤755的实行由操作系统的组件执行,那么正如本领域技术人员将认识到的,在步骤755后面可以有附加的步骤,因为计算设备100的其它方面可能需要在操作系统的组件已经停止操作后为休眠作准备。然而,如果步骤755的实行由BIOS 或可信执行环境执行,则它可以例如在操作系统已经为休眠作准备后且直接在步骤760保存休眠映像之前发生。回到步骤730,如果在步骤730确定确实存在休眠映像,诸如休眠映像已经由以前的步骤760的实行创建,则处理可以进行到步骤740,在该点,休眠映像可被装载,以及被保存作为休眠映像的一部分的事件日志可以与在步骤710当接通电源后创建的事件日志相组合。随后的处理然后着手来将实例化的组件记录在事件日志中,以及用那些组件的测量扩充一个或多个PCR。转到图8,图上显示的流程图800图示可以在根据由计算设备得到的事件日志确定那个计算设备的安全状态时所执行的示范性步骤序列。一开始,在步骤810,可以执行对于计算设备的安全状态的评估所必需的请求或其它动作。随后,在步骤820,可以接收在步骤810进行请求的计算设备的可信执行环境的事件日志、PCR中一个或多个的值和单调计数器的值。一旦在步骤820得到相关的信息组,就可以在步骤830到870执行一系列检验。 虽然在图8的示范性流程图800上这些检验以特定的次序被图示,但这样的次序仅仅打算是说明性的,而不是表明某个检验必须在任何其它特定的检验之前被执行,因为,正如可以从图8的示范性流程图800看出的,任何一个检验的失败都会在步骤890导致在步骤810接收的请求的拒绝或失败,以及相反地,每个检验的成功都会导致在步骤880准许在步骤810 接收的请求。可被执行的其中一个检验,诸如在步骤830执行的检验,可包括确定事件日志的当前部分——诸如来自正被评估的计算设备的当前代的那些事件日志项目——是否匹配于当前的PCR值。正如本领域技术人员将会知道的,这样的检验可以通过以下方式被执行 以与其被扩充到一个或多个PCR中的相同方式来扩充其项目被验证的组件的测量,然后验证所得到的值匹配于实际的PCR的值。可被执行的另一个检验,诸如在步骤840执行的检验,可以验证贯穿日志是否有单调计数器的递增的连续性。正如以前指明的,单调计数器不一定被递增为1的递增值。在这样的实施例中,在步骤840进行的检验可以验证被记录在事件日志中的单调计数器的值,与诸如在步骤820接收的单调计数器的当前值,是否彼此相差等于单个递增值的量。如果在单调计数器的被记录值之间,或者在单调计数器的上次记录的值与单调计数器的当前值之间有大于单个递增值的差值,则这样的差异可以表明计算设备在与其间发现这种差异的单调计数器的两个值相关联的那些代之间至少被引导过一次,且这样,则在事件日志中的项目不再包括计算设备的连续历史。在一个实施例中,在验证计算设备的先前代的日志项目匹配于与那些代相关联的被记录的PCR值之前,可以进行初步检验,以便验证所记录的PCR值没有被篡改,或另外地被修改。因此,在步骤850,可以作出关于所记录的PCR值是否匹配于也被输入到事件日志中的那些值的引述的确定。如果这样的检验失败,则可能没有任何理由去验证计算设备的先前代的日志项目匹配于与那些代相关联的所记录的PCR值,因为所记录的PCR值本身不能被验证。然而,如果在步骤850,被记录的PCR值参照于也被记录的那些值的引述被验证, 则处理可以进行到步骤860,在那里,可以确定计算设备的先前代的日志项目是否匹配于与那些代相关联的所记录的PCR值。如在步骤830进行的检验的情形下,这样的确定可以通过以下方式被执行以与其会被扩充到一个或多个PCR的相同方式扩充被验证的那些先前代的项目的组件的测量,然后验证所得到的值匹配于相关联的所记录的PCR值的那个值。作为最后的检验,一旦在事件日志中的所有项目都可以诸如经由上述的检验而被验证为真实的,且没有被篡改或另外地被修改,则日志项目本身就可以被评估,这样在步骤 870,确定它们是否指示计算设备的安全状态可能已被损害。因此,例如,可以检查日志项目以便识别任何潜在的恶意的组件,或者代表更老的不太安全的版本的、或代表只不过被认为构成安全风险或另外地不可接受的组件的任何组件。如果所有的这样的检验都通过,则在步骤880,在步骤810接收的请求可被准许。相反,如果任一项检验失败,则在步骤890, 所述请求可被拒绝,或者可以以其它方式失败。正如可以看出的,已经给出了用于跨越计算设备多代的安全地记录事件的机制。 鉴于这里描述的主题的许多可能的变例,我们把可能属于以下权利要求及其等同物的范围内的所有这样的实施例作为我们的发明来要求保护。
权利要求
1.一种用于跨越计算设备(100)的多代将项目记录到日志文件(190)中的方法,该方法包括以下步骤响应于计算设备(100)已开始新的一代而递增可信的执行环境(150)的单调计数器 (156);在计算设备(100)结束当前代之前生成可信的执行环境(150)的至少一个平台配置寄存器(PCR) (155)的值的引述;以及在计算设备(100)结束当前代之前将所述的引述、所述至少一个PCR (155)的值和单调计数器(156)的当前值插入到事件日志(190)中。
2.权利要求1的方法,其中结束当前代包括进入休眠状态。
3.权利要求1的方法,还包括以下步骤将当前的事件日志与来自计算设备的先前代的在先的事件日志连结。
4.权利要求1的方法,其中事件日志包括来自计算设备的至少一个先前代的项目,所述项目包括与计算设备的该至少一个先前代相关联的单调计数器的先前值。
5.一种或多种计算机可读介质,其包括用于执行权利要求1的步骤的计算机可执行的指令。
6.一种用于评估计算设备(100)的日志文件(190)的方法,所述日志文件(190)包括来自计算设备(100)的当前代和计算设备的至少一个先前代的项目,该方法包括以下步骤获得计算设备(100)的日志文件(190)、计算设备(100)的可信执行环境(150)的一个或多个平台配置寄存器(PCR) (155)的当前值、以及计算设备(100)的可信执行环境 (150)的单调计数器(156)的当前值;验证在单调计数器(156)的当前值与被记录在日志文件(190)中的单调计数器(156) 的至少一个先前值之间的递增连续性;参照计算设备(100)的可信执行环境(150)的一个或多个PCR (155)的当前值,来验证日志文件(190)中对应于计算设备(100)的当前代的项目;参照被记录在日志文件(190)中且对应于计算设备(100)的至少一个先前代的、计算设备(100)的可信执行环境(150)的一个或多个PCR( 155)的先前值,来验证日志文件(190) 中对应于计算设备(100)的至少一个先前代的项目;以及参照也被记录在日志文件(190)中的那些先前值的至少一个引述,来验证被记录在日志文件(190)中的、计算设备(100)的可信执行环境(150)的一个或多个PCR (155)的先前值。
7.权利要求6的方法,还包括以下步骤如果被记录在日志文件中的跨越计算设备的当前代与计算设备的至少一个先前代的所有组件都是能接受的,则准许计算设备的请求。
8.权利要求6的方法,还包括以下步骤验证在被记录于日志文件中的单调计数器的所有先前值之间的递增连续性,其中日志文件包括来自计算设备的多个先前代的项目。
9.一种或多种计算机可读介质,其包括用于执行权利要求6的步骤的计算机可执行的指令。
10.一种系统,包括客户机计算设备,其请求访问来自网关计算设备的资源,该客户机计算设备包括第一计算机可读媒介,该第一计算机可读媒介具有计算机可执行的指令,该指令用于将客户机计算设备的日志文件(190)、客户机计算设备的可信执行环境(150)的一个或多个平台配置寄存器(PCR) (155)的当前值和客户机计算设备的可信执行环境(150)的单调计数器 (156)的当前值传送到网关计算设备;以及网关计算设备,其包括第二计算机可读介质,该第二计算机可读介质具有用于执行以下步骤的计算机可执行的指令验证在从客户机计算设备接收的单调计数器(156)的当前值与从客户机计算设备接收的、被记录在日志文件(190)中的单调计数器(156)的至少一个先前值之间的递增连续性;参照从客户机计算设备接收的、客户机计算设备的可信执行环境(150)的一个或多个PCR (155)的当前值,来验证日志文件(190)中对应于计算设备的当前代的项目;参照被记录在日志文件(190)中的、且对应于客户机计算设备的至少一个先前代的、客户机计算设备的可信执行环境(150)的一个或多个PCR (155)的先前值,来验证日志文件(190)中对应于客户机计算设备的至少一个先前代的项目;以及参照也被记录在日志文件(190)中的那些先前值的至少一个引述,来验证被记录在日志文件(190)中的、 客户机计算设备的可信执行环境(150)的一个或多个PCR (155)的先前值。
全文摘要
本发明涉及带有休眠支持的全局有效的测量的操作系统发动。事件日志不仅包括与自从计算设备的最近电源接通以来被实例化的组件相关联的项目,而且也包括在那个电源接通之前被实例化的组件的项目,诸如被实例化的、且代表在现在已经再继续的休眠之前的计算设备的状态的组件。在休眠后,可信平台模块(可信执行环境)的平台配置寄存器(PCR)的当前值,以及那些当前值的引述,和可信执行环境的单调计数器的当前值被记录。单调计数器在每次电源接通时被递增,以便跟踪计算设备的接连的代和提防插入的、没有被记录的代。对事件日志的随后分析参照日志中与那些代相关联的PCR值,来验证先前代的项目。
文档编号G06F21/00GK102509046SQ20111034119
公开日2012年6月20日 申请日期2011年11月2日 优先权日2010年11月2日
发明者D.J.林斯利, M.F.诺瓦克, M.奈斯特伦, N.伊德, R.K.斯皮格, S.D.安德森, S.托姆 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1