在安全处理系统的应用空间中使用瞬时pcr来实现信任的制作方法

文档序号:6594746阅读:862来源:国知局
专利名称:在安全处理系统的应用空间中使用瞬时pcr来实现信任的制作方法
技术领域
本发明涉及信息处理设备,该信息处理设备加载活动模块和跟随在该活动模块之后的模块。
背景技术
诸如非专利文献1和非专利文献2之类的首创文献描述了如何以确信和可信的方式来启动设备。已经详细审阅了这些方法以确保在整个引导过程中保持信任和安全,从而为希望实施能够安全引导的设备的那些设备提供有用的基准。该安全引导过程的关键组件是RIM证书。这是一种签名的结构,其定义了当前的期望平台状态应当是什么,其由一组平台配置寄存器(PCR)的哈希值来表示,这组平台配置寄存器自身包含公知的、公开定义的哈希值。这些PCR用作可以被记录在RIM证书中来定义期望的机器状态的完整性测量值。 另外,如果当前状态被验证,则RIM证书还指定要被扩展的PCR。该扩展过程采用指定的 PCR,并基于与在RIM证书中定义的新的已知值相联系的之前的PCR值来计算新的哈希值。 由TCG定义的典型的安全引导序列从核心组件的初始化和自我验证开始,例如是验证信任根以及测量信任根(RTV+RTM)、MTM自身以及相关联的核心MTM接口组件。接下来,以可信的方式启动支持固件的其他部分的另外组件,以使得在向其传递控制之前每个组件都由已经可信的组件来验证,然后该组件对其自身进行验证以确保它已经自可信组件启动。这种验证=>执行= > 自我验证的序列的效果在于,可以自动地将可信边界从信任根向该系统中的每个组件扩展。最后,操作系统运行,以向客户端应用程序提供访问MTM服务的安全可信的路径。引用列表专利文献PTL 1 美国未经审查的专利申请公开号No. 2006/0212939非专利文献NPL 1 可信计算组(TCG)移动可信模块(MTM)文档,TCG移动参考架构vl. 0, 2007 年6月12日NPL 2 =TCG移动可信模块规范vl. 0,2007年6月12日NPL 3 :TCG TPM 规范 vl. 2,修订本 10
发明内容
技术问题然而,一旦安全引导过程结束向PCR中写入,就会出现问题。不同于上述的安全引导组件,常规的应用程序将会被终止,无论是由于用户交互、程序中的故障,还是由于甚至检测到应用程序篡改。非专利文献3不允许在特定环境下对一些PCR进行复位,但是TCG移动可信模块规范vl. 0修订本1规定由RIM证书控制的PCR不应当是可复位的。在TCG移动参考架构vl. 0修订本1中的信息性评论中,针对该问题提出了三个解决方案不做任何事情,仅在最初运行时扩展,或者重复扩展PCR。不做任何事情不会改善应用程序的安全性或可信度;仅在最初运行时扩展意味着虽然可信边界将被扩展以覆盖应用程序,但是恶意过程能够强制使得位于可信边界内的应用程序终止,然后假冒之前可信的应用程序;最后,重复扩展具有多个RIM证书创建的开销,并且在运行时间根据需要存储和创建RIM证书会为攻击该系统提供另一个矢量。另外,PCR是有限的资源,在非专利文献2的第50页第5. 3. 2 章节中,预留了 13个PCR以在安全引导等期间由设备制造商使用,从而在最坏情况下仅留下3个其他的PCR供应用程序使用,使得即使在多个应用程序彼此没有关系的情况下,在这些应用程序开发者之间协作使用成为关键议题。在专利文献1中,公开了一种通过创建用于管理无界的一组命名PCR的上下文来增加PCR的数目的方法,但是其没有考虑如何处理RIM证书。此外,所公开的将所有的虚拟 PCR都聚拢在单个物理PCR中的方法没有教导如何通过RIM证书来仅测试一些虚拟PCR,这是RIM证书的一个重要方面。此外,它没有教导如何避免这样的问题将虚拟PCR聚拢在单个的物理PCR中将使得与没有意识到虚拟PCR的存在但希望将那个物理PCR用作其他用途的应用程序进行交互。此外,它没有教导如何有效地取消扩展操作,这样当应用程序终止时,通过使用虚拟PCR(其在该应用程序周围扩展)和依赖于该终止的应用程序的所有应用程序而建立的可信边界被动态地收缩来将它们从可信应用程序组中移除。相反地,它仅教导了虚拟PCR可以被复位,从而重建可信边界的唯一方式是不仅终止该从属应用程序,而且终止将该被终止的应用程序作为依附的所有应用程序,然后对所有应用程序进行重新验证和重新执行以从头开始来重新建立可信边界。因此,需要一种即使在一个或多个模块被终止之后仍然能够根据可信边界来生成并动态改变PCR的值的设备。另外,诸如可信计算组(TCG)的可信平台模块(TPM)文档之类的首创文档描述了如何对建立平台和特定客户端进行远程证明。对于MTM而言,平台的证明不是严格必需的, 因为安全引导过程确保了该平台的状态。然而,对于运行在基于MTM的平台上的应用程序而言,证明还没有被解决。因此,还需要一种能够允许服务器证实动态变化的PCR的状态的设备。问题的解决根据本发明第一方面的信息处理设备包括存储单元,用于存储多个模块中的每个模块的期望的平台信息,该期望的平台信息表示在多个模块中的每个模块之前要加载哪个模块;管理单元,用于记录活动信息,该活动信息表示多个模块中的哪个模块是活动模块,其中活动模块是已经被加载并且尚未被终止的模块;加载控制单元,用于在跟随在活动模块之后的一个模块要被加载时(i)使用活动信息来确定多个模块中的哪个模块是活动模块,并且通过累积活动模块的期望的平台信息来生成累积的平台信息;(ii)通过将所述一个模块的期望的平台信息与累积的平台信息进行比较,来验证活动模块已经被成功加载;(iii)当验证成功时加载所述一个模块;以及(iv)控制管理单元以在所述一个模块被加载时更新活动信息以表示该一个模块是活动模块。本发明涉及一种用于通过使用瞬时PCR来实施在环境中运行的客户端的远程证明的方法、系统和计算机程序产品。本发明使用客户端用来在启动时对其自身进行验证的tPCR(瞬时PCR) RIM证书来作为建立tPCR(瞬时PCR)值以用于证明的基础。本发明的有益效果根据这种结构,该信息处理设备管理表明多个模块中的哪个模块是活动模块的信息,并通过累积活动模块的期望的平台信息来生成累积的平台信息。因此,该信息处理设备能够生成与所有活动模块相对应的累积的平台信息。这样, 通过将累积的平台信息与要被加载的第一模块的期望的平台信息进行比较来执行验证,该信息处理设备能够在第一模块被成功加载之前对要被加载的所有模块都进行验证。此外, 通过管理多个模块中的哪个模块是活动模块,即使在一个或多个模块被终止之后,该信息处理设备仍然能够根据当前的可信边界来动态地生成累积的平台信息(对应于PCR的值)。(关于本申请的技术背景的进一步信息)在2008年10月10日提交的日本专利申请No. 2008-264530的公开(包括说明书、 附图和权利要求书)通过引用将其并入本文中。此外,在2008年12月17日提交的日本专利申请No. 2008-321540的公开(包括说明书、附图和权利要求书)也通过引用将其并入本文中。


图1示出了表示现有技术的框图。图IA示出了表示现有技术的框图。图2示出了表示本发明的实施例的框图。图2A示出了表示本发明的实施例的框图。图3示出了表示期望从其访问PCR的模块的框图。图3A示出了表示平台状态证书树中的关系的框图。图4示出了平台状态证书的结构。图5示出了具有扩展以支持瞬时PCR的RIM证书的结构。图6示出了扩展的PSC树节点的结构。图7示出了组件和PSC映射的结构。图8示出了根据现有技术的示例性平台状态证书。图9示出了根据本发明的一个方面和基于图8的两个示例性平台状态证书。图10示出了在应用程序启动和关闭期间的模块内通信。图11示出了用于扩展PSC的流程图。图12示出了用于扩展PSC的流程图。图13示出了用于扩展PSC的流程图。图14示出了从取消之前到取消之后扩展的PSC树的变换。图15示出了用于取消PSC的扩展的流程图。图16示出了用于取消PSC的扩展的流程图。图17示出了在应用程序的远程证明期间的模块内通信。图18示出了描述要被解决的问题的图示。图19示出了描述tPCR的图示。图20示出了描述信息处理设备的处理的图示。
图21A示出了表示现有技术的框图。图2IB示出了表示现有技术的框图。图22A示出了表示本发明的实施例的框图。图22B示出了表示本发明的实施例的框图。图23A示出了表示期望从其访问PCR的模块的框图。图2 示出了表示平台状态证书树中的关系的框图。图M示出了平台状态证书的结构。图25示出了具有扩展以支持瞬时PCR的RIM证书的结构。图沈示出了扩展的PSC树节点的结构。图27示出了组件和PSC映射的结构。图28示出了根据现有技术的示例性平台状态证书。图四示出了根据本发明的一个实施例和基于图观的两个示例性平台状态证书。图30示出了在应用程序启动和关闭期间的模块内通信。图31示出了用于扩展PSC的流程图。图32示出了用于扩展PSC的流程图。图33示出了用于扩展PSC的流程图。图34示出了从取消之前到取消之后扩展的PSC树的变换。图35示出了用于取消PSC的扩展的流程图。图36示出了用于取消PSC的扩展的流程图。图37A示出了表示用于远程证明的现有技术的框图。图37B示出了表示用于远程证明的现有技术的框图。图38A示出了表示用于远程证明的本发明的另一实施例的框图。图38B示出了表示用于远程证明的本发明的另一实施例的框图。图39示出了在应用程序的远程证明期间的模块内通信。图40示出了引证信息记录的结构。图41示出了在应用程序仅对tPCR进行远程证明期间的模块内通信。
具体实施例方式根据本发明第一方面的信息处理设备(设备1120)包括存储单元(PSC数据库 1112),用于存储多个模块中的每个模块的期望的平台信息(tPCR值),该期望的平台信息表示在多个模块中的每个模块之前要加载哪个模块;管理单元(组件和PSC映射1202),用于记录活动信息,该活动信息表示多个模块中的哪个模块是活动模块,其中活动模块是已经被加载并且尚未被终止的模块;加载控制单元(OS支持1200),用于在跟随在活动模块之后的一个模块要被加载时(i)使用活动信息来确定多个模块中的哪个模块是活动模块, 并且通过累积活动模块的期望的平台信息来生成累积的平台信息(扩展的PSC树1206中的tPCR状态1604(图6)) ; (ii)通过将所述一个模块的期望的平台信息与累积的平台信息进行比较,来验证活动模块已经被成功加载;(iii)当验证成功时加载所述一个模块;以及 (iv)控制管理单元以在所述一个模块被加载时更新活动信息以表示该一个模块是活动模块。
图18示出了描述由根据所述第一方面的信息处理设备解决的问题的图示。图19示出了描述tPCR(瞬时PCR)的图示。图20示出了描述根据所述第一方面的信息处理设备执行的处理的图示。应当指出的是,图18示出了转移图1101A。另外,图19示出了表示由第一方面中的信息处理设备执行的处理的栏目IlOlBa以及表示传统处理的栏目llOIBb。如上所述,根据所述第一方面的信息处理设备包括存储单元(PSC数据库1112)、 管理单元(组件和PSC映射1202)以及加载控制单元(OS支持1200)。通过采用该信息处理设备,能够实施图19和图20中所示的功能。这允许获得解决图18描述的问题的有益效^ ο相反地,与根据所述第一方面的信息处理设备相比,传统的示例不包括上述单元中的部分单元或所有单元。这样,用传统的示例不能实施图19和图20中所示的功能,因此, 就不能获得解决图18中的问题的有益效果。换言之,根据所述第一方面的信息处理设备在上述结构、操作和有益效果方面与传统的示例是不同的。应当指出的是,第一实施例中的设备1120(图1)对应于后面描述的第二和第三实施例中的设备2120(图21A)。另外,设备1120的应用程序1100对应于设备2120的应用程序2100。这样,除了例外的组成元件的情况之外,设备1120的各个组成元件对应于设备 2120的相同组成元件。下文中,将省略对关于组成元件之间的这种对应关系的详细描述。应当指出的是,将省略对公开的已知文档中描述的技术术语的详细描述。这里,公开的已知文档包括上面提到的“2007年6月12日公布的可信计算组(TCG)的移动可信模块(MTM)文档,TCG移动参考架构vl. 0”、“2007年6月12日公布的TCG移动可信模块规范 vl. 0”以及其他文档。根据本发明的第二方面的信息处理设备是所述信息处理设备,其中,所述加载控制单元在一个模块被终止时控制管理单元来更新活动信息以表示所述一个模块不是活动模块。根据这种结构,加载控制单元在第一模块被终止时控制管理单元来更新活动信息以表示被终止的模块不是活动模块。因此,该信息处理设备能够通过使用扩展的平台信息来执行验证,来即使在一个或多个模块被终止之后仍然能够生成对应于与当前加载的模块精确对应的所有活动模块的累积的平台信息。根据本发明第三方面的信息处理设备还包括判断单元(抽象层API1108),用于在跟随在活动模块之后的一个模块要被加载时,计算所述一个模块的摘要值(哈希值),并通过将期望的摘要值与所计算出的摘要值进行比较来判断所述一个模块是否有效;其中所述加载控制单元用于在判断所述一个模块有效并且验证单元执行的验证成功时,加载所述一个模块;以及当在所述活动模块中的一个已经被终止之后剩下至少一个活动模块时并且在跟随在所述至少一个活动模块之后的一个模块要被加载时,控制所述计算单元来跳过对所述至少一个活动模块的摘要值的计算,并控制判断单元来跳过对所述至少一个活动模块的判断。根据这种结构,当在其中一个活动模块已经被终止之后剩下至少一个活动模块时并且在跟随在所述至少一个活动模块之后的一个模块要被加载时,信息处理设备通过再次使用所计算出的摘要值来跳过对活动模块的摘要值的计算以及跳过对活动模块的判断。在现有技术中,PCR的值(对应于与这种结构相对应的累积的平台信息)仅能够被复位或被累积。所以,为了在一个模块终止之后将PCR返回它的之前值,PCR值就必须被复位,然后每个之前被执行的模块重新计算它们的摘要值并在PCR中累积每个摘要值。另一方面,在本发明的这个方面中,信息处理设备管理哪个模块是活动模块,并通过累积对应于活动模块的期望的平台信息来生成累积的平台信息。这样,就能够跳过对活动模块的摘要值的计算并跳过使用计算后的摘要值进行判断。这是因为之前已经完成了活动模块的这些过程,并且此后期望活动模块不被改变。因此,通过采用这种结构,能够加速加载第二模块的处理。根据本发明第四方面的信息处理设备是所述信息处理设备,其中,管理单元通过使用有向非循环图来管理表示活动模块的信息。根据这种结构,管理单元通过使用有向非循环图来管理表示活动模块的信息。通常通过依赖和根据另一模块来加载多个模块,所以有向非循环图适用于表达这种关系。因此,通过采用这种结构,管理单元能够容易地管理一个或多个活动模块。根据本发明第五方面的信息处理设备是所述信息处理设备,其中,加载控制单元在所述一个模块被加载时控制管理单元来生成表示所述一个模块的节点以及所述一个模块的期望的平台信息,并控制管理单元将所生成的节点添加到有向非循环图中,以使得所生成的节点依赖于与所依赖的模块相对应的节点。根据这种结构,信息处理设备在所述一个模块被加载时控制管理单元来生成表示所述一个模块的节点和所述一个模块的期望的平台信息,并控制管理单元将所生成的节点添加到有向非循环图中,以使得所生成的节点依赖于与所依赖的模块相对应的节点。换言之,非循环图将正确地反映哪个模块依赖于另一活动模块。因此,通过采用这种结构,管理单元能够精确地管理活动模块之间的依赖关系。根据本发明第六方面的信息处理设备是所述信息处理设备,其中,加载控制单元在所述一个模块已经被加载并被终止时,控制管理单元来删除表示所述一个模块的节点以及依赖于表示所述一个模块的节点的所有节点。根据这种结构,信息处理设备在所述一个模块已经被加载并被终止时,控制管理单元来删除表示所述一个模块的节点以及依赖于表示所述一个模块的节点的所有节点。换言之,不仅删除与被终止的模块相对应的节点,还删除依赖于该节点的节点。依赖于被终止的模块的节点的节点对应于该被终止的模块的孩子模块,并且当该孩子模块的父模块被终止时,该孩子模块将被终止。因此,通过采用这种结构,管理单元能够精确地管理多个模块中的哪个模块实际上正在被加载。根据本发明第七方面的信息处理设备是所述信息处理设备,其中,加载控制单元通过搜索父节点(表示所述一个模块的节点依赖于该父节点)、并累积从有向非循环图的根到该父节点的范围内的每个节点的期望的平台信息,来生成累积的平台信息。根据这种结构,加载控制单元通过搜索父节点(表示所述一个模块的节点依赖于该父节点)并累积从有向非循环图的根到该父节点的范围内的每个节点的期望的平台信息,来生成累积的平台信息。通过采用这种结构,信息处理设备能够正确地生成累积的平台信息,该累积的平台信息反映在所述一个模块之前哪个活动模块要被引导。这是因为有向非循环图反映活动模块之间的依赖关系。根据本发明第八方面的信息处理设备是所述信息处理设备,其中,加载控制单元在预定时间段之后删除累积的平台信息。根据这种结构,加载控制单元在预定时间段之后删除累积的平台信息。累积的平台信息需要避免被篡改,因为累积的平台信息被用于验证活动模块是否被成功加载。因此, 通过采用这种结构,通过限制平台信息的寿命,很难进行篡改。根据本发明第九方面的信息处理设备是所述信息处理设备,其中,加载控制单元在每次多个模块中的一个模块被成功加载时删除累积的平台信息,并在每次多个模块中的一个模块要被加载时生成累积的平台信息。根据这种结构,加载控制单元在每次多个模块中的一个模块被成功加载时删除累积的平台信息,并在每次多个模块中的一个模块要被加载时生成累积的平台信息。因此,能够避免累积的平台信息被篡改。根据本发明第十方面的信息处理设备是所述信息处理设备,其中,所述多个模块包括第一模块组和第二模块组,第一模块组和第二模块组中的每个模块组都包括一个或多个模块,信息处理设备还包括用于存储第一累积的平台信息的寄存器单元,该第一累积的平台信息表示第一模块组中的哪个模块已经被加载,并且所述存储单元还存储第一期望的平台信息,该第一期望的平台信息表示在加载第二模块组中的模块之前第一模块组中的所有模块都要被加载,并且加载控制单元用于针对第一模块组中的模块,(i)对该模块进行验证,(ii)在验证成功时加载该模块,以及(iii)在该模块被加载时通过将该模块的平台信息累积到第一累积的平台信息中来更新第一累积的平台信息;以及当第二模块组中的模块要被加载时,(i)通过将第一期望的平台信息与存储在寄存器单元中的第一累积的平台信息进行比较来验证第一模块组中的所有模块都已经被成功加载,并且其中,当第二模块组中的跟随在活动模块之后的一个模块要被加载和当第一模块组中的所有模块都被验证已经被成功加载时,加载控制单元用于(i)使用活动信息来确定第二模块组中的哪个模块是活动模块,并通过累积活动模块的期望的平台信息来生成累积的平台信息;(ii)通过将所述一个模块的期望的平台信息与累积的平台信息进行比较来验证活动模块已经被成功加载;(iii)当验证成功时加载所述一个模块;以及(iv)控制管理单元以在所述一个模块被加载时更新活动信息以表示所述一个模块是活动模块。根据这种结构,加载控制单元用于(i)通过将第一期望的平台信息与存储在寄存器单元中的第一累积的平台信息进行比较来验证第一模块组中的所有模块都已经被成功加载;以及(ii)在验证第一模块组中的所有模块都已经被成功加载时,执行针对第二模块组中的模块的生成、验证、加载和控制。通过采用这种结构,信息处理设备能够单独地执行对第一模块组的验证和对第二模块组的验证。因此,如果第二模块组中的某个模块终止,信息处理设备不需要执行对所有模块的验证。此外,如果对第一模块的验证不成功,则不启动对第二模块组的处理。因此,即使在再次执行仅验证第二模块组的的情况下,仍然能够在包括第一模块的模块成功被加载的可信环境下加载第二模块组中的模块。
根据本发明第十一方面的信息处理设备是所述信息处理设备,其中,当第二模块组中的一个模块已经被终止并且第二模块组中的一个模块要被加载时,加载控制单元用于通过将第一期望的平台信息与第一累积的平台信息进行比较来验证第一模块组中的所有模块都已经被成功加载并且没有正在被终止,以及在验证成功时跳过对第一模块组中的模块的验证。根据这种结构,加载控制单元通过将第一期望的平台信息与第一累积的平台信息进行比较来验证第一模块组中的所有模块都已经被成功加载并且没有正在被终止,以及在验证成功时跳过对第一模块组中的模块的验证。因此,信息处理设备能够再次加载第二模块组中的被终止的模块,或者快速地加载第二模块组中的另一模块。根据本发明第十二方面的信息处理设备是所述信息处理设备,其中,第一模块组包括系统层的模块,并且第二模块组包括应用层的模块。根据这种结构,第一模块组包括系统层的模块,并且第二模块组包括应用层的模块。因此,即使在该模块被终止之后,也能够快速地重新启动针对经常被终止的模块 (诸如应用层中的模块)的验证。根据本发明第十三方面的信息处理方法是针对信息处理设备的信息处理方法,其中该信息处理设备包括存储单元,其存储多个模块中的每个模块的期望的平台信息,该期望的平台信息表示在多个模块中的每个模块之前要加载哪个模块;以及管理单元,其记录活动信息,该活动信息表示多个模块中的哪个模块是活动模块,其中活动模块是已经被加载并且尚未被终止的模块;并且该信息处理方法包括加载控制步骤,该加载控制步骤在跟随在活动模块之后的一个模块要被加载时执行下述各项(i)使用活动信息来确定多个模块中的哪个模块是活动模块,并且通过累积活动模块的期望的平台信息来生成累积的平台信息;(ii)通过将所述一个模块的期望的平台信息与累积的平台信息进行比较,来验证活动模块已经被成功加载;(iii)当验证成功时加载所述一个模块;以及(iv)控制管理单元以在所述一个模块被加载时更新活动信息以表示该一个模块是活动模块。根据本发明第十四方面的程序是记录在记录介质上的、针对信息处理设备的程序,其中该信息处理设备包括存储单元,其存储多个模块中的每个模块的期望的平台信息,该期望的平台信息表示在多个模块中的每个模块之前要加载哪个模块;以及管理单元, 其记录活动信息,该活动信息表示多个模块中的哪个模块是活动模块,其中活动模块是已经被加载并且尚未被终止的模块;并且该程序使信息处理设备执行加载控制步骤,该加载控制步骤在跟随在活动模块之后的一个模块要被加载时执行下述各项(i)使用活动信息来确定多个模块中的哪个模块是活动模块,并且通过累积活动模块的期望的平台信息来生成累积的平台信息;(ii)通过将所述一个模块的期望的平台信息与累积的平台信息进行比较,来验证活动模块已经被成功加载;(iii)当验证成功时加载所述一个模块;以及(iv) 控制管理单元以在所述一个模块被加载时更新活动信息以表示该一个模块是活动模块。根据本发明第十五方面的集成电路设备是在信息处理设备中使用的基础电路设备,其中该信息处理设备包括存储单元,用于存储多个模块中的每个模块的期望的平台信息,该期望的平台信息表示在多个模块中的每个模块之前要加载哪个模块;以及管理单元,用于记录活动信息,该活动信息表示多个模块中的哪个模块是活动模块,其中活动模块是已经被加载并且尚未被终止的模块;并且该集成电路设备包括加载控制单元,该加载控制单元被配置成在跟随在活动模块之后的一个模块要被加载时执行下述各项(i)使用活动信息来确定多个模块中的哪个模块是活动模块,并且通过累积活动模块的期望的平台信息来生成累积的平台信息;(ii)通过将所述一个模块的期望的平台信息与累积的平台信息进行比较,来验证活动模块已经被成功加载;(iii)当验证成功时加载所述一个模块;以及 (iv)控制管理单元以在所述一个模块被加载时更新活动信息以表示该一个模块是活动模块。根据本发明第十六方面的信息处理设备是所述信息处理设备,其中该信息处理设备连接到服务器,所述加载控制单元还用于在从所述服务器接收到请求发送累积的平台信息时(i)使用活动信息来确定多个模块中的哪个模块是活动模块,并且通过累积活动模块的期望的平台信息来生成累积的平台信息;(ii)通过将所述一个模块的期望的平台信息与累积的平台信息进行比较,来验证活动模块已经被成功加载;以及(iii)当验证成功时向所述服务器发送累积的平台信息。根据本发明第十七方面的信息处理设备是所述信息处理设备,其中,所述加载控制单元还被配置成(i)生成表示哪条期望的平台信息被用于生成累积的平台信息的信息;(ii)生成用于基于所述信息来验证累积的平台信息的签名信息;以及(iii)发送其上附有所述签名信息的累积的平台信息。根据本发明的第十八方面的信息处理设备是所述信息处理设备,其中,所述加载控制单元在一个模块被终止时控制管理单元来更新活动信息以表示所述一个模块不是活动模块。根据本发明第十九方面的信息处理设备还包括判断单元,用于在跟随在活动模块之后的一个模块要被加载时,计算所述一个模块的摘要值,并通过将期望的摘要值与计算后的摘要值进行比较来判断所述一个模块是否有效,其中所述加载控制单元用于在判断所述一个模块有效并且验证单元执行的验证成功时,加载所述一个模块;以及当在所述活动模块中的一个已经被终止之后剩下至少一个活动模块时并且在跟随在所述至少一个活动模块之后的一个模块要被加载时,控制所述计算单元来跳过对所述至少一个活动模块的摘要值的计算,并控制判断单元来跳过对所述至少一个活动模块的判断。根据本发明第二十方面的信息处理设备是所述信息处理设备,其中,管理单元通过使用有向非循环图来管理表示活动模块的信息。根据本发明第二十一方面的信息处理设备是所述信息处理设备,其中,加载控制单元在所述一个模块被加载时控制管理单元来生成表示所述一个模块的节点以及所述一个模块的期望的平台信息,并控制管理单元将所生成的节点添加到有向非循环图中,以使得所生成的节点依赖于与所依赖的模块相对应的节点。根据本发明第二十二方面的信息处理设备是所述信息处理设备,其中,加载控制单元在所述一个模块已经被加载并被终止时,控制管理单元来删除表示所述一个模块的节点以及依赖于表示所述一个模块的节点的所有节点。根据本发明第二十三方面的信息处理设备是所述信息处理设备,其中,加载控制单元通过搜索表示所述一个模块的节点依赖的父节点、并累积从有向非循环图的根到该父节点的范围内的每个节点的期望的平台信息,来生成累积的平台信息。根据本发明第二十四方面的信息处理设备是所述信息处理设备,其中,加载控制单元在预定时间段之后删除累积的平台信息。根据本发明第二十五方面的信息处理设备是所述信息处理设备,其中,加载控制单元在每次多个模块中的一个模块被成功加载时删除累积的平台信息,并在每次多个模块中的一个模块要被加载时生成累积的平台信息。根据本发明第二十六方面的信息处理设备是所述信息处理设备,其中,所述多个模块包括第一模块组和第二模块组,第一模块组和第二模块组中的每个模块组都包括一个或多个模块,信息处理设备还包括用于存储第一累积的平台信息的寄存器单元,该第一累积的平台信息表示第一模块组中的哪个模块已经被加载,并且所述存储单元还存储第一期望的平台信息,该第一期望的平台信息示出在加载第二模块组中的模块之前第一模块组中的所有模块都要被加载,并且加载控制单元用于针对第一模块组中的模块,(i)对该模块进行验证,(ii)在验证成功时加载该模块,以及(iii)在该模块被加载时通过将该模块的平台信息累积到第一累积的平台信息中来更新第一累积的平台信息;以及当第二模块组中的模块要被加载时,(i)通过将第一期望的平台信息与存储在寄存器单元中的第一累积的平台信息进行比较来验证第一模块组中的所有模块都已经被成功加载,并且其中,当第二模块组中的跟随在活动模块之后的一个模块要被加载并且当第一模块组中的所有模块都被验证已经被成功加载时,加载控制单元用于(i)使用活动信息来确定第二模块组中的哪个模块是活动模块,并通过累积活动模块的期望的平台信息来生成累积的平台信息; (ii)通过将所述一个模块的期望的平台信息与累积的平台信息进行比较来验证活动模块已经被成功加载;(iii)当验证成功时加载所述一个模块;以及(iv)控制管理单元以在所述一个模块被加载时更新活动信息以表示所述一个模块是活动模块。根据本发明第二十七方面的信息处理设备是所述信息处理设备,其中,当第二模块组中的一个模块已经被终止并且第二模块组中的一个模块要被加载时,加载控制单元用于通过将第一期望的平台信息与第一累积的平台信息进行比较来验证第一模块组中的所有模块都已经被成功加载并且没有正在被终止,以及在验证成功时跳过对第一模块组中的模块的验证。根据本发明第二十八方面的信息处理设备是所述信息处理设备,其中,第一模块组包括系统层的模块,并且第二模块组包括应用层的模块。根据本发明第二十九方面的信息处理方法还包括从服务器接收要求发送累积的平台信息的请求的接收步骤;以及当接收单元接收到所述请求时执行下述各项的发送步骤(i)使用活动信息来确定多个模块中的哪个模块是活动模块,并且通过累积活动模块的期望的平台信息来生成累积的平台信息;(ii)通过将所述一个模块的期望的平台信息与累积的平台信息进行比较,来验证活动模块已经被成功加载;以及(iii)当验证成功时向所述服务器发送累积的平台信息。根据本发明第三十方面的程序还使所述信息处理设备执行下述步骤从服务器接收要求发送累积的平台信息的请求的接收步骤;以及当接收单元接收到所述请求时执行下述各项的发送步骤(i)使用活动信息来确定多个模块中的哪个模块是活动模块,并且通过累积活动模块的期望的平台信息来生成累积的平台信息;(ii)通过将所述一个模块的期望的平台信息与累积的平台信息进行比较,来验证活动模块已经被成功加载;以及 (iii)当验证成功时向所述服务器发送累积的平台信息。根据本发明第三十一方面的集成电路设备还包括接收单元,用于从服务器接收要求发送累积的平台信息的请求;以及发送单元,用于当所述接收单元接收到所述请求时执行下述各项(i)使用活动信息来确定多个模块中的哪个模块是活动模块,并且通过累积活动模块的期望的平台信息来生成累积的平台信息;(ii)通过将所述一个模块的期望的平台信息与累积的平台信息进行比较,来验证活动模块已经被成功加载;以及(iii)当验证成功时向所述服务器发送累积的平台信息。需要一种方法来允许通过PCR和RIM证书的方式将可信边界扩展到运行中的应用程序,同时通过允许扩展操作被取消来避免在每次应用程序希望使用PCR时都创建新的证书的问题。还需要一种使用由TCG定义的RIM证书结构的方法,以使得利用已经存在的RIM 证书创建和管理工具。还需要一种将扩展可用PCR的数目但避免出现因两个应用程序非故意地共享同一 PCR而导致的问题的方法。还需要一种在应用程序启动和终止时,能够允许动态、高效和可信地增大和收缩可信边界的方法。本发明通过实施瞬时PCR(tPCR)思想来解决现有技术中的上述局限性,瞬时PCR 思想允许应用程序使用安全地查询tPCR的状态的RIM证书。这些tPCR的寿命可以不长于使用这些tPCR的应用程序的寿命,或者在需要时具有更短的寿命。本发明的tPCR完全与物理PCR分离,从而不知道tPCR的应用程序可以在同一环境中像以前一样进行操作。根据优选实施例,本发明在配备有MTM的设备上实施,但是其它类似的安全解决方案可以替换MTM。所需要的关键组件是安全处理环境(SPE)、前述的PCR、用于对平台状态证书(PSC)进行签名的验证密钥以及用于对PSC中的数据进行验证和处理的方法。现有技术中描述的RIM证书是PSC的实施例。根据本发明的另一优选实施例,在应用程序开始运行时记录与该应用程序相关联的PSC,并在该应用程序终止时,所记录的PSC以及所有所依赖的PSC将它们的扩展操作取消。根据另一优选实施例,当执行扩展操作时,扩展的证书被记录在有向非循环图中, 其中,所述扩展的证书依赖的所有其它先前扩展的证书被设置为孩子。可以通过从扩展操作的有向非循环图中移除扩展操作的记录和所有所依赖的记录来取消该扩展操作。根据另一优选实施例,当请求扩展操作时,基于已经扩展的证书的当前有向非循环图,来动态地评估该证书依赖的证书。(第一实施例)下面描述本发明的优选实施例。该第一实施例涉及用于支持使用瞬时PCR的系统,该瞬时PCR具有限定的寿命以及通过证书方式证明的值。通过提供所描述的另外的操作系统功能性和PSC的可信验证, 具有SPE的设备的开发者能够制作将处理这些tPCR的系统。通过提供描述要被使用的tPCR 的PSC,这类设备上的应用程序的开发者能够制作将以灵活的方式来提供可信执行的应用程序。根据本发明,将应用程序定义为任意类型的组件,包括但不限于独立程序、用于独立程序的插件模块以及用于插件的辅助模块。图1示出了支持安全地引导所述系统的现有技术,诸如在TCG移动参考架构中描述的方式。在标准执行环境中,存在使用抽象层API 1102的应用程序1100。虚线表示上述的标准执行模式(上面)与安全模块(下面)之间的安全模式接口 1106。标准执行模式是大多数计算机系统提供的常规执行环境。安全模式提供了安全执行环境,在所述安全执行环境中,在不能从标准执行环境访问的存储器空间中,仅被许可的软件可以运行。在本发明的优选实施例中,通过用仅安全模式知道的密钥的私有部分对软件进行加密来实施这种许可,但是诸如白名单或证书之类的其它技术也是可以使用的。这种执行环境保持了安全引导模块和安全处理环境1114,以及其他需要的模块。安全模式接口 1106的上面是安全引导可信边界1104 ;该线下面的每个组件都位于可信环境中,如同TCG移动可信模块规范中定义的那样,在具有验证和扩展的安全引导过程期间得到建立。安全模式抽象层API 1108 处理来自常规模式的对服务的请求,并将它们传递给抽象层1110以用于进一步处理。抽象层的一个任务是管理PSC数据库1112。另一个任务是处理对安全引导组件1113提供的服务(包括访问安全处理环境1114)的请求,诸如操纵物理PCR 1116。安全引导组件1113 还要求访问PSC数据库1112。安全处理环境1114可以以硬件或软件实施;在优选实现方式中,它是由可信计算组规范定义的移动可信模块,而在另一优选实现方式中,它是可信平台模块。软件处理环境1113可以以软件或硬件、或者两者的组合来实施。最后,存在次级 RIC(运行时间完整性检查器)监控器1118,它的任务包括当应用程序1100看起来已经被篡改时终止应用程序1100。在优选实现方式中,这通过验证当前应用程序哈希值相对于存储在PSC中的参考哈希值来实现。这种验证会以调度的间隔发生或者在特定事件出现时发生,并且可以存在分级的RIC监控器,其中每一级RIC监控器检查一个或多个孩子RIC监控器的完整性。未示出主RIC,但是主RIC的任务是控制整个系统的验证根,其在所示系统外部执行(例如,在管理程序中执行),其中,它以有规律的间隔来对一个或多个组件执行完整性检查,从而验证这些组件的哈希值相对于存储在PSC中的参考哈希值。该主RIC监控器必须包括的其中一个组件是次级RIC。TCG移动参考架构将这称为PRMVA (主运行时间测量验证代理),其中次级RIC监控器1118对应于SRMVA (次级运行时间测量验证代理)。所有示出的元件都位于设备1120中。可以通过本领域普通技术人员公知的若干技术来实现安全模式,诸如系统处理器中的隔离执行模式、操作系统内核模式、安全协处理器、虚拟机、管理程序、经完整性检查的存储器。在本质上不背离本发明的新颖教导和优点的情况下,每个组件都可由一个或多个所列技术或通过其它技术来进行保护。在现有技术的另一实施例中,安全模式接口 1106位于抽象层1110与安全处理环境1114之间。本领域普通技术人员将看到,抽象层可以被实施,以使得它不需要安全模式对它的执行进行完全保护,仅需要上述RIC监控器提供的完整性保护,其中完整性保护通过软件或硬件方式或两者的组合来提供。图IA示出了在不支持安全模式但具有独立的安全处理环境(例如,在2004年4 月观日公布的TCG规范架构概述修订版1.2中描述的方式)并且没有安全模式接口时现有技术的另一实施例。由于没有安全模式接口,所以仅存在一个抽象层API 1108,并且用可信/安全引导组件1152来替代安全引导组件。次级RIC监控器1118扩展,以覆盖该系统中除了安全处理环境1114之外的所有组件,从而有助于强制实现可信/安全引导可信边界 1150,但在其他方面,各个组件及其角色如图1中描述。图2示出了基于图1的现有技术的本发明。如前面所述,在标准执行环境中,存在使用抽象层API 1102的应用程序1100。虚线指示上述的标准执行模式(上面)与安全模块(下面)之间的安全模式接口 1106。该安全模式接口 1106的上面是安全引导可信边界 1104,通过如之前描述的那样在执行之前对组件进行验证的过程来建立;该线下面的每个组件都位于可信环境中。OS支持1200模块位于标准执行空间中,并且还位于可信边界中。 该模块管理组件和PSC映射1202,以用于维护哪个应用程序已经使用了哪个证书的映射, 以在启动之前进行验证。在安全模式中,存在抽象层API 1108,该抽象层API 1108处理来自常规模式的对服务的请求,并将它们传递给抽象层1110以用于进一步处理。抽象层的一个任务是管理PSC数据库1112,并且另一个任务是实施tPCR支持1204。该支持模块维护扩展的PSC树1206数据,该数据包含所有扩展的但未被取消的PSC的有向非循环图。再一个任务是处理对安全引导组件1113提供的服务(包括访问安全处理环境1114)的请求,诸如操纵物理PCR 1116。安全引导组件1113还要求访问PSC数据库1112。最后,存在次级 RIC(运行时间完整性检查器)监控器1118,它的任务包括当应用程序1100看起来已经被篡改时终止应用程序1100。所有示出的元件都位于设备1120中。通过采用现有技术,在现有技术的优选实施例中,安全模式接口 1106位于抽象层 1110与安全处理环境1114之间。本领域普通技术人员将看到,抽象层可以被实施,以使得它不需要安全模式对它的执行进行完全保护,仅需要上述RIC监控器提供的完整性保护, 并且本发明还可以在完整性保护的环境中实施,其中完整性保护由软件或硬件方式或两者的组合来提供。可通过本领域普通技术人员公知的若干技术来实现安全模式,诸如系统处理器中的隔离执行模式、操作系统内核模式、安全协处理器、虚拟机、管理程序、完整性检查的存储器。在本质上不背离本发明的新颖教导和优点的情况下,每个组件都可以由一个或多个所列技术或通过其它技术来进行保护。另外,本领域普通技术人员将看到,另一实施例是将tPCR支持1204和扩展的PSC 树1206移动到安全处理环境1114中。其它实施例是组合这两个可替换的实施例,从而抽象层1110位于安全模式接口 1106外面,但tPCR支持1204和扩展的PSC树1206位于安全处理环境1114内。图2A示出了在不支持安全模式但具有独立的安全处理环境(例如,在2004年4月 28日公布的TCG规范架构概述修订版本1.2中描述的方式)并且没有安全模式接口时基于图IA的本发明的另一实施例。由于没有安全模式接口,所以仅存在一个抽象层API 1108, 并且用可信/安全引导组件1152来替代安全引导组件。次级RIC监控器1118扩展,以覆盖该系统中除了安全处理环境1114之外的所有组件,从而有助于实施可信/安全引导可信边界1150,但在其他方面,各个组件及其角色如图2中描述。图3示出了根据本发明的两种类型的PCR的使用方式。首先,在常规应用空间中, 示出了应用程序的分级。聚合(Hiashup)I 1300使用来自插件1 1302和插件2 1304的服务。这些插件中的每一个由它们各自的应用程序(即,应用程序1 1306和应用程序2 1308)所拥有。这两个应用程序都使用来自抽象层API 1102的服务。接下来,在安全模式接口 1106的另一侧,存在抽象层API 1108的安全模式的支持。其与抽象层1110进行通信。抽象层的一个任务是实施tPCR支持1204。该支持模块维护扩展的PSC树1206数据,该数据包含所有扩展的但未被取消的PSC的有向非循环图。在其他任务中,另一任务是向安全处理环境1114传递对操纵物理PCR 1116的请求,所述安全处理环境1114可以以硬件或软件实施。现在,物理PCR 1116和瞬时PCR 1204的典型使用方式如下所述。物理PCR读取 (1310)操作总是可用的;安全处理环境1114支持的所有功能总是使用物理PCR,从来不使用瞬时PCR。然而,如上所述,如果tPCR支持组件1204被移动到安全处理环境1114中,则 SPE可以使用tPCR。向物理PCR中写入(1314)如同现有技术教导的那样主要在引导时间执行,但是此外,物理PCR写入可能从应用空间进行(1312)。这取决于系统设计者或实施者决定从应用空间将发生什么样的写入操作。对于瞬时PCR而言,读(1316)和写(1318)通常在应用空间中排它地发生。利用瞬时PCR的本质,每个实施者都具有选择如何使用这些 tPCR的自由度,虽然在所示示例的情况下,聚合1 1300的开发者将需要与插件1 1302和插件2 1304的开发者协作来确保他们都知道每个人期望可用哪些tPCR。图3A示出了扩展的PSC树1206。将在下文描述用于添加和删除节点的方法。所示的有向非循环图描绘了如同图2所示那样进行扩展的、tPCR支持模块1204已经被记录的 PSC0在该图中,图2中所示的模块与证书之间存在1对2的关系如同现有技术教导的那样,为了扩展可信边界以覆盖应用程序1 1306,需要两个证书,即应用程序1启动1350和应用程序1被加载13M。对于应用程序2 1308,需要应用程序2启动1352和应用程序2被加载1356,对于插件11302,需要插件1启动1358和插件1被加载1362,对于插件2 1304, 需要插件2启动1360和插件2被加载1364,以及对于聚合1 1300,需要聚合1启动1366 和聚合1被加载1368。证书之间的箭头指示这些证书之间的依赖关系。这些依赖关系由每个证书当被扩展时期望找到的PCR状态来定义。该树中每个节点的结构在下面的图6中进行定义。如图所示,根据现有技术,每个模块都具有与其相关联的两个证书,一个由其父模块使用来在启动之前对该模块进行验证,一个由该模块自身使用来验证它已经在期望的环境中启动。本领域普通技术人员将看到,每个模块如何使用两个左右的证书将在本发明的范围内。图4示出了平台状态证书1400 (PSC),该结构描绘了由PSC断定的PCR(物理或瞬时)定义的平台的状态和在成功验证平台状态后扩展入PCR(物理或瞬时)中的值。这些结构可以存储在PSC数据库1112中。该结构中的第一字段是PSC名称1402。该名称必须是唯一的,因为它是用于存储和检索PSC数据库1112中的PSC的关键字段,并且在优选实现方式中,它是表示人类可读的名称的字节串。应用程序开发者可以决定要使用的名称,并且平台的制造者可以向应用程序开发者提供名称。本领域普通技术人员将看到,可以使用其它的表述(诸如GUID)来代替,并且存在选择PSC名称的其它方式。接下来,存在表示要验证的PCR状态1404的条目列表。对于要被验证的每个PCR而言,存在一对值,即PCR索引 1406和PCR值1408。接下来,存在要扩展的PCR值;首先是要扩展的PCR索引1410,然后是要扩展的值1412。最后,存在加密签名1414,其表示由安全处理环境1114已知的密钥加密的剩余数据的哈希值。该签名密钥是安全地嵌入安全处理环境1114中的密钥的私有部分或者是由对PSC签名有效的嵌入式密钥直接或间接授权的密钥,并且签名实体可以是平台开发者或应用程序开发者的代理者或者是已经被颁发了有效签名密钥的任意其它实体。根据本发明,通过仅仅查看平台状态证书1400,不能确定该平台状态证书1400是支持物理PCR还是支持瞬时PCR。该平台状态证书使用的上下文确定了要检查哪种类型的 PCR0这样做的一个优点在于,为安全引导创建证书的现有工具能够被重新使用以用于创建在应用空间中使用的证书。在优选的实现方式中,要验证的PCR状态1404的列表对可以用表示要被测试的 PCR索引1406和该组PCR值1408的哈希值的位图来替换;这是针对RIM证书的、由TCG移动可信模块规范定义的表示。可以使用这种表示而不需修改验证瞬时PCR的证书,其代价是需要更复杂的校验码,但优选的实现方式使用图5中所示的用于瞬时PCR的RIM证书1500。 现在将详细描述该结构中的字段与图4中的平台状态证书和其他字段之间的关系。标签1502 等价于 PSC 名称 1402。measurementPCRIndex 1504 和 measurementValue 1506等价于要扩展的PCR索引1410和要扩展的值1412。要验证的tPCR状态1518以及被包含的列表对(PCR索引1514和tPCR值1516)类似于平台状态证书1400中定义的字段。为了将要验证的tPCR状态1518与用于瞬时PCR的 RIM 证书 1500 相关联,有必要使用 extensionDigestSize 1508 和 extensionDigest 1510 字段;extensionDigestSize 1508 的大小是 extensionDigest 1510 的字节数,而 extensionDigest 1510包含要验证的tPCR状态1518结构的哈希值。不需要存储大小指示符,因为在状态1512字段中设置的比特数目表明了该表中的对的数目。本领域普通技术人员还将看到,如果存在tPCR值1516字段的限定顺序,诸如tPCR索引顺序,甚至不需要存储 tPCR索引1514字段。图6示出了扩展的PSC树节点1600,该结构记录单个证书的扩展。该节点结构详细描述了图3A所示的每个节点(项目1350到1368)的内容。扩展的PSC树1206使用现有技术中众所周知的任意技术来实施有向非循环图。例如,增强的C++库包含增强图库,其支持许多种类型的图的创建和处理,包括上面提到的有向非循环图。这样,扩展的PSC树节点 1600就与该图中的每个顶点相关联。扩展的PSC名称1602是已经被扩展的平台状态证书 1400的PSC名称1402。tPCR状态1604是该节点处的当前瞬时PCR状态的缓存,如同根据之前扩展的PSC(作为该节点的上一节点)所计算出的那样。它由列表对即tPCR索引1606 和tPCR值1608组成。本领域普通技术人员将看到,存在针对该数据可替换的表示,诸如用表示使用的tPCR的位图来替换tPCR索引1606字段。图7示出了由OS支持模块1200维护的组件和PSC映射1202。该组件和PSC映射 1202包含将组件映射到PSC的列表1700。该列表的每个条目都包含组件ID 1702和扩展的PSC名称1704(在应用程序启动之前已经被扩展的平台状态证书1400的PSC名称1402 字段)。在本发明的优选实施例中,在基于Windows的平台上,组件ID 1702由两个字段组成,第一个字段是过程ID 1706,该过程ID 1706保存唯一表示该组件所属的过程的标识符,如同由诸如GetCurrentProcessIdO之类的Win 32 API确定的。第二个字段是模块句柄1708。对于可独立执行的组件而言,该字段总是被设置为零。对于被实施为链接库的组件而言,当进入第一参数中的DllMain入口点时,该字段包含用于该库的HM0DULE。该结构的使用在下文进行描述。根据TCG移动参考架构,PCR 0保存描述底层硬件平台的特性的值;PCR 1包含描述信任根的值;PCR 2启动加载事件;PCR 3-6和8_12包含专用的测量;以及PCR 13到PCR 15可由应用程序自由使用。假设希望测试PCR 0、1和2的应用程序编程者如期望的那样指示成功的安全引导,测试PCR 13被设置成零,并且如果所有都是正确的话,则将新的值扩展到PCR 13中。图8示出了根据现有技术的称为“应用程序1启动”的示例性平台状态证书1400。该证书的名字记录在1800中,并且如上所述,要验证的PCR状态1404包含四对要检查的 PCR 索引和 PCR 值,编号为 1802、1804、1806、1808、1810、1812、1814 和 1816。 1802指示PCR 0,1804〈硬件平台〉符号指示表示底层硬件平台的公布值;1806指示PCR 1, 1808<可信根 > 符号指示表示底层可信根的公布值;1810指示PCR 2,1812<启动加载事件 >符号指示表示根据扩展入PCR 2中的加载事件值所计算出的组合哈希值的公布值;1814 指示PCR 13,1816零值指示期望PCR 13将仍然处于其初始状态中。接下来,存在扩展到的 PCR (1818),然后是扩展入该PCR的值(1820)。图8中的根据现有技术的证书的问题包括如果另一个应用程序已经使用了 PCR 13,则要验证的PCR状态1404将不再是正确的;以及如果该应用程序终止,则重新开始在 1818和1820中定义的之前扩展的值将使PCR 13设置成非零状态,从而要验证的PCR状态 1404将不再正确。然而,根据本发明,与图8中的证书相类似的证书由应用程序开发者分成如图9 所示的两个证书,以用于在与应用程序本身相同的时间或在不同的时间处向目标设备部署。进行分割的原因在于,现有的证书验证两组截然不同的PCR:第一组包含安全引导过程的结果,其是公知的不变的结果;而第二组是动态、应用层的状态。在图8中,项目1802和 1804指代描述硬件平台的已知的安全引导PCR 0值,项目1806和1808指代描述可信根的已知的安全引导PCR 1值,而项目1810和1812指代描述启动加载事件的已知的安全引导 PCR 2值。另外,项目1814和1816指代描述期望先决条件的预期的后引导PCR 13值。这样,应用程序的开发者可以通过将已知的安全引导PCR值放入将被用于测试安全处理环境管理的物理PCR(在该示例中,即PCR 0、1和2)的一个证书中,来将图8中的单个证书分成图9中所示的两个证书。第二个证书用于应用空间瞬时PCR,在该示例中即PCR 13。第一证书,S卩“应用程序1启动(安全引导)”1900,测试由安全引导过程建立的物理PCR(PCR 0 1802,PCR 1 1806和PCR 2 1810),以确保安全环境是正确的。然而,要扩展的PCR被设置成-1(1902)以表示没有扩展,并且要扩展的值(1904)的标称值为零;该证书仅用于验证;在应用级,如图3所示阻止向物理PCR写入,因为使用瞬时PCR提供了更多的灵活性并避免了在现有技术中存在的之前提到的问题。第二个证书,即“应用程序1启动 (瞬时)” 1920,测试瞬时PCR 13 1814是零(1816),并将值扩展回同一寄存器1818、1820。 tPCR索引13的选择纯粹是任意的;也可以很容易地使用tPCR 0或者tPCR 99,这不同于现有技术中的情况。图10示出了在启动应用程序时使用图9的两个证书(这两个证书中的一个证书用于测试物理PCR,另一个证书用于瞬时PCR)、然后在终止该应用程序时使用第二个“应用程序01启动(瞬时),,1920证书的时序图,以表明根据本发明的将值扩展到tPCR然后对其取消的事件序列。示出的是六个进行交互的对象11000、11002、11004、11006、11008和11010 ;在当前示例的上下文中,首先,tPCR 1311000表示瞬时PCR 13的状态。如图6中所示,在扩展的PSC树1206中的每个节点处(而不是在特定的存储器位置处)记录tPCR,但是在该示例性示例中为了有助于理解,将tPCR 13 11000表示成看起来是这种位置。接下来,存在tPCR支持11002,其对采用查阅tPCR的PSC以及验证当前的tPCR状态进行处理, 并且如果有效,则记录该证书已经被扩展。SPE 11004是根据现有技术的安全处理环境。在优选实施例中,它是MTM。抽象层11006处理来自常规模式应用程序的请求,并将请求传递给其他模块。OS 11008是操作系统,这里涉及处理启动和终止应用程序以使得瞬时PCR被正确地更新。最后,应用程序11010是执行任意任务(其可以包括请求启动PSC保护的其他应用程序,因为在图10的时序图中描述的过程可以被嵌套)的示例性应用程序,从而例如应用程序执行11042可以包括启动跟随在从11014开始的事件序列之后的另一应用程序。 为了简化该图,已经从图示中移除了错误处理,但是并没有从本发明中移除。首先,在11012,tPCR 13 11000从零值开始。在本发明中,规则是扩展的PSC树 1206的根从全部tPCR都被设置成零的状态开始。本领域技术人员将看到,其他可能的初始值是可能的,例如在安全引导完成之后,用物理PCR的值来对tPCR进行初始化。OS 11008 检测启动应用程序11010的请求,所以在11014,0S 11008首先确定尝试启动的应用程序使用哪些PSC。在优选实施例中,在基于Windows的操作系统中,嵌入可执行程序中的定制组件识别要使用的两个PSC。应用程序通过使用微软的强命名工具来进行签名,以避免篡改。 接下来,在11016和11018,从抽象层11006请求在11014识别的PSC,在该图示中为“应用程序1启动(安全引导)”和“应用程序1启动(瞬时)”。现在,在11020中,通过使用用于验证系统希望启动的应用程序的两个PSC来调用抽象层API AL_VerifyPSCsAndE xtendtPCR, 来执行对这两个PSC ( S卩,如图9中所示的针对物理PCR的PSC和针对瞬时PCR的PSC)的验证。首先,在11022中,用PSC “应用程序1启动(安全引导)”(在该图中用IlOM表示) 来调用SPE API SPE_VerifyPSCState0根据现有技术,这执行了对PSC自身的格式和签名的检查,然后验证PSC中要验证的PCR是否与物理PCR中的当前值相匹配。根据现有技术, 当将PSC传递给平台时,用嵌入安全处理环境1114中的密钥或者可被验证为由所述嵌入的密钥授权的密钥来对该PSC进行签名,并且如果有效,则用由安全处理环境1114生成并安全存储的另一密钥来对该PSC进行重新签名,然后将这些证书存储在PSC数据库1112中。根据本发明的优选实施例,用于检查物理PCR的PSC是可选的,所以11016和 11022可以省略。根据另一优选实施例,如果用于检查物理PCR的PSC与用于所有应用程序的PSC相同,则针对物理PCR的一个PSC可由两个或多个不同的瞬时PCR PSC来使用。接下来,在110 中,用设置给PSC"应用程序1启动(瞬时)”(在该图中用11030 表示)的参数来调用来自SPE的另一API,即SPE_VerifyPSC。根据现有技术,这执行对PSC 自身的格式和签名的检查,而不需验证违反物理寄存器的PCR设置。现在,在110 中,用设置给PSC“应用程序1启动(瞬时)”(在该图中用11030表示)的参数来调用tPCR支持模块11002,即API TPCR_VerifyPSCAndExtend。该API的第一个任务是通过检查要验证的 PCR状态1404对应于扩展的PSC树1206中的已有状态,来验证PSC能够被扩展(11032)。 该操作的细节在下面进行描述。一旦该验证成功完成,就通过向扩展的PSC树中的正确位置添加操作成功的表示,来对该PSC的操作成功进行记录(11034)。该操作的细节在下面进行描述。向该树中添加该PSC的一个结果是,tPCR 13 11000(要被扩展到的寄存器)使它的值被设置成之前值(在这种情况下为零)和从该PCR扩展的值(即0xABCD1234)的结合的哈希值(11030)。这被称为组合哈希值,并且用符号将其写成tPCR13 = SHA-I (tPCR13 concatenated-with OxAB⑶1234),并且该操作在11036中由句法(+)=表示。这样,该环境已经被验证为是处于期望的状态中,并且已经记录了这种成功,从而控制传递回操作系统。根据现有技术,作为在11020中对PSC进行验证之前的进一步安全性测量,计算应用程序的哈希值,并将该哈希值与存储在要扩展的PSC中的基准值进行比较。根据本发明,在 11030中,该值在PSC “应用程序1启动(瞬时)”中被存储为要扩展的值,在优选实施例中由OxAB⑶1234表示。然而,该步骤从图上省略了。在启动应用程序时,OS为该应用程序获得过程ID,并在组件和PSC映射1202中为瞬时寄存器记录该标识符和相应的PSC(11038),即PSC “应用程序1启动(瞬时)”。在优选实施例中,在微软的Windows环境中,该过程通过拦截过程创建过程来实施,如同在The Code Project 网站中由 Andriy Oriekhov ^t “ Intercepting WinAPI calls” 中描述的那样(网址 http://www. codeproject. com/KB/system/InterceptffinAPICalls. aspx)。获得的过程句柄被转换成过程ID 1706并被设置成所述字段,并且模块句柄1708被设置成零。 当组件是动态链接库时,LoadLibrary ()和FreeLibrary ()代码被钩住,并且对DllMain () 的调用被中断,如同 Len HolgateAPI 在 http://www. lenholgate. com/archives/000369. html 的 /*Rambling comments. . . 处的"Why does windows hold the loader lock whilst calling DllMain ?”中描述的那样。通过适当地使用该陷阱,过程ID 1706被设置成当前的过程ID,并且模块句柄1708被设置成DllMain ()的第一自变量。应用程序被启动(11040),并如被编程的那样继续执行(11042),或许甚至启动与PSC相关联的其它应用程序或者扩展查阅tPCR自身的其它PSC。最后,应用程序终止 (11044),或者是因为用户选择关闭该应用程序,或者是因为次级RIC监控器(在该图中未示出)的篡改检测而强制该应用程序关闭。当应用程序终止时,OS获得该应用程序的过程ID,并使用该过程ID和为零的模块句柄来使被用于查找组件和PSC映射1202的组件ID 1702找到(11046)用于启动该应用程序的PSC。这返回PSC “应用程序1被启动(瞬时),,(11030),从而OS用PSC来调用抽象层11006 API AL_Und0PSCExtend来取消(11048)。当所述组件是动态链接库时,如上面所述的那样,FreeLibraryOAPI被钩住,从而在那个例程中,当前的过程ID被查询, 并且从FreeLibrary ()参数获得的模块句柄和这两个数据项被使用,以使得用于查找组件和PSC映射1202的组件ID 1702找到用于启动该库的PSC。如之前一样,在110 中,用设置给PSC “应用程序1启动(瞬时),,(在图该中用11030表示)的参数来调用来自SPE 的另一 API,即SPE_VerifyPSC。根据现有技术,这执行对PSC自身的格式和签名的检查, 而不需验证违反物理寄存器的PCR设置。现在,在11050中,用设置给PSC “应用程序1启动(瞬时),,(在该图中用11030表示)的参数来调用tPCR支持模块11002,即API TPCR_ UndoPSCExtend0该API的第一任务是通过检查来查看是否PSC已经存在于扩展的PSC树 1206中,来验证该PSC已经被扩展(1105 。该操作的细节在下面进行描述。一旦该验证成功完成,这意味着110 中的扩展操作能够被取消。在11034中,这通过从扩展的PSC树中删除表示所述PSC的节点以及依赖于该节点的所有其他节点来实现。该操作的细节在下面进行描述。从该树中删除该PSC的一个结果是tPCR 13 11000(即要被取消的寄存器)有效地使它的状态复位成零(11056)。这样,已经验证该环境处于期望的状态中,并且通过从扩展的PSC树中删除节点(11034),来取消之前的扩展操作,从而控制传递回操作系统,从而该系统现在准备好执行其它的操作。本领域普通技术人员将看到,要执行的其它操作中的一个操作将重新启动被终止的应用程序。由于tPCR 13已经在11056处被复位成00... 00, 即在11012处指示的tPCR的开始值,所以也继续第二轮地重新执行对应用程序的启动PSC 的验证(11030),从而根据本发明,应用程序能够重新启动。图10示出了在启动和终止可执行程序时用于动态扩展和收缩可信边界的时序图,其指出了如何基于使用Windows便携式可执行格式中的模块的优选实施例来执行针对动态链接库的类似任务。对于基于非便携式可执行程序的模块格式(例如,Java Archive 模块或JAR)而言,本领域普通技术人员将看到,或者可以由加载和卸载模块的引擎来使用类似的方法,或者可替换地可以由模块自身对抽象层11006进行明确的调用以扩展和收缩可信边界。根据现有技术,JAR不仅可以包含Java字节的基于代码的模块,而且还可以包含其他的语言模块,其中一个示例是ECMAkript (JavaScript)。这可以通过使用http:// java. sun. com/j2se/l. 3/does/tooldocs/win32/jarsigner. html 网页上白勺来自 Sun 白勺 jarsigner 工具以及使用 http ://java. sun. com/j2se/l. 4. 2/docs/api/java/util/jar/ JarFile. html网页上描述的java. util. jar. JarFile课程验证的签名进行签名。在该情况下,在优选实施例中,图7中所示的模块句柄1708是引用包含所述组件的JAR文件的句柄。图 11 示出了描述 tPCR 支持模块 11002 API TPCR_VerifyPSCAndExtend(11028) 的细节的流程图。该功能从11100开始,将要验证和记录的PSC作为参数被传递进来,并调用用于计算扩展的PSC树中的每个节点的tPCR状态(11102)的子例程,如下面的图12中所示。接下来,在11104,将当前的tPCR状态和解决方案列表变量都初始化为零值。这两个变量的使用在图13中进行描述。接下来,在11106,调用子例程,该子例程验证传递进来的 PSC的tPCR值是否能够从由当前扩展的PSC树描述的状态获得。在11108,测试返回码以查看以下功能在扩展的PSC树中的一个或多个节点处是否发现将tPCR设置成保存在传递进来的PSC中的要验证的状态。如果没有找到该父设置,则在11110,该过程返回表明未能对调用例程进行扩展的错误码。如果找到了父设置,则在11112中,将传递进来的PSC添加到扩展的PSC树中,使它的父节点(predecessor)被设置成由解决方案列表描述的节点,并且在11114中,该过程返回调用例程的成功码。图12示出了描述如何计算图6中扩展的PSC树的每个节点中的tPCR状态1604 的流程图。在11200,在不需要自变量的情况下调用该流程图,并且在11202,通过从根开始执行对扩展的PSC树的预顺序遍历以使得以期望的顺序针对后面的处理而收集树的节点, 来开始处理。在优选实现方式中,使用增强图库函数breadth_first_search()来收集这些节点。接下来,在11206,将通过深度优先遍历记录的每个节点(11204)的当前tPCR状态 1604设置成零值。需要针对证书的特别处理,该特别处理验证被初始化成在安全引导结束时定义的tPCR开始值的tPCR是否为0 (在优选实施例中),从而对于在当前证书内存储的要验证的PCR状态1404中的每对tPCR(11208),检测该值是否是在安全引导结束时定义的 tPCR初始值(在优选实施例中为零)(11210),并且如果它们相等,则在11212,将这对tPCR 索引和值添加到该节点的tPCR状态中,并且该循环针对下一 tPCR继续进行。否则,该循环继续进行而不向节点的tPCR状态进行添加。一旦对每个tPCR都进行了检查,在11214,该功能就移动到针对当前节点的每个父节点的循环。在11216中,如果父节点是扩展的PSC树根节点,则不需要做任何事情,因为之前的循环处理了这种特殊的情况。否则在11218中, 对父节点的tPCR状态1604进行查询并复制。在11220,在复制父节点的状态时执行由父节点的扩展的PSC名称1602引用的PSC定义的扩展操作,并且在11222,将得到的tPCR状态附加到当前节点的tPCR状态上。由于该扩展的PSC树的构建方式,将永远不存在两个父节点为同一 tPCR指定不同值的情况,所以本领域普通技术人员将看到,检查这种情况是不必要的,但是可以出于验证的目的而对其进行执行。如之前指出的那样,这种对tPCR状态的收集针对每个父节点重复进行,然后当结束时,对遍历中的每个节点(11204)进行处理。一旦如此对每个节点进行了处理,在11224,该过程通过返回每个节点的tPCR状态而结束。本领域普通技术人员将看到,存在执行上述算法的其它方式,例如在bfsjisitor 的examinejertexO中执行11204至11222,从而消除了对节点的分开的列表的需求。另外,虽然在每次执行PSC相关的操作时都调用该功能,但是可以对这些值进行缓存以降低需要的重新计算的努力。图13示出了描述一旦针对每个节点计算了 tPCR状态则如何通过查找所有已经存在的扩展的PSC的列表来验证给定PSC的流程图,所述列表将tPCR设置成在给定PSC中定义的状态。注意,该图中描述的例程是递归程序。在11300,该例程的入口点将列表形式的要验证的tPCR状态、当前匹配的tPCR状态、以及根据tPCR状态匹配的被发现是PSC的父节点的来自扩展的PSC树的节点的列表,作为自变量。该解决方法的要点是,每对tPCR索引和值尝试找到将期望的值扩展入当前tPCR并与扩展入其他tPCR中的作为本解决方案的一部分的其他证书相兼容的证书。如果找到了证书,则递归地调用例程,以找到将作为PSC 的一部分的其它tPCR扩展为匹配的状态的其它证书。第一步是检查要匹配的tPCR列表。在11302,如果tPCR列表为空,则该例程已经被成功地递归到列表的结尾,所以在11304,返回FOUND值以表明调用程序的成功。否则,在 11306,将tPCR列表的表头移除,并将该表头作为当前的tPCR来尝试找到父证书。在11308, 将扩展的PSC树中尚未被分配给解决方案列表的每个节点选择为作为父节点的候选节点。 图12的描述指示如何根据现有技术来获得这些节点。首先,在11312中,通过验证两种结构中相匹配的tPCR索引具有同一 tPCR值,来检查该节点的tPCR状态与传递进来的当前匹配的tPCR状态兼容性。如果在11316中,这些值不匹配,则在11308中,该例程移动到扩展的PSC树中的下一节点。如果这些值匹配,则在11314中,通过使用存储在要验证的节点中的扩展的PSC名称1602来检索针对该节点的PSC,并将要扩展的PSC索引1410与在11306 处检索到的针对当前tPCR的索引相比较。如果在11316中,这些索引不匹配,则在11308 中,该例程移动到扩展的PSC树中的下一节点。如果这些索引匹配,则候选父节点就已经找到了,从而在11318中,将该节点被推送到解决方案列表上,并且具有被执行的扩展的该节点的状态与当前的tPCR列表相合并。在11322,用缩短的tPCR列表、当前的tPCR状态以及解决方案列表来递归地调用验证tPCR例程。如果在11324中递归的调用成功,则在113 中返回FOUND值以表明调用程序的成功。如果失败,则在113 中,从解决方案列表中移除当前的节点并取消11320中的状态的合并,从而该过程继续查找该树中的下一节点。如果检查了所有的节点但没有成功的匹配,则在11310中返回N0TF0UND。图14示出了示例性的扩展的PSC树1206在取消之前和取消之后的状态。取消之前的状态11400如图3A描述的那样,即从图3中的模块树构建的得到的状态。现在,如果如图10所示的那样,由于用户交互、程序缺陷或者由于篡改检测而导致插件1终止,则操作系统检测到该终止并确定证书“插件1启动”1358是在启动时经过PSC测试,从而证书的扩展需要被取消。随同“插件1启动” 1358,所有的从属证书(即“插件1被加载” 1362、“聚合1启动” 1366以及“聚合1被加载” 1368)也都必须从扩展的PSC树1206中移除,从而使得扩展的PSC树1206处于取消后的状态11402。图15示出了描述如何取消扩展过程的流程图。在11500,该功能将要取消的目标PSC作为自变量。首先,该功能调用用于计算扩展的PSC树中的每个节点的tPCR状态 (11502)的子例程,如上面的图12所示。接下来,在11504中,在扩展的PSC树中搜索目标 PSC的索引,从而尝试找到目标PSC的PSC名称1402与该树的扩展的PSC名称1602中的每个节点之间的匹配。如果在11506中没有找到匹配的节点,则在11512中,向调用程序返回错误码以表明取消失败。接下来,将目标PSC的要验证的PCR状态1404与找到的节点的 tPCR状态1604进行比较,并且如果在11510中这些状态不相同,则在11512中,向调用程序返回错误码以表明取消失败。如果这些状态相同,则在11514中,调用用于删除找到的节点和所有其依赖的节点的函数,并在11516中,该函数向调用程序返回成功代码。图16示出了描述取消过程如何从扩展的PSC树中移除节点的流程图。在11600 中,该功能将要从所述树中删除的节点作为自变量。首先,在11602中,针对该节点的每个孩子PSC进行循环,并在11604中,递归地调用自身以依次删除它的每个孩子节点。一旦删除了所有的孩子节点,则在11606中删除该节点自身,并在11608中,该功能返回。这样,由之前的扩展操作建立的覆盖终止模块及其所有从属可信模块的可信边界被收缩以将终止模块排除在外,但仍然覆盖不需要被终止的模块并且不损害该设备的应用空间中的信任级别。图17示出了描述在应用程序的远程证明期间的模块内通信的时序图。示出的是六个进行交互的对象11004、11002、11006、11008、11010和11700 ;首先,SPE 11004是根据现有技术的安全处理环境。在优选实施例中,它是MTM。接下来,存在tPCR支持11002,其对采用查阅tPCR的PSC以及验证当前的tPCR状态进行处理,并且如果有效,则记录该证书已经被扩展。抽象层11006处理来自常规模式应用程序的请求,并将请求传递给其他模块。 OS 11008是操作系统,这里涉及处理启动和终止应用程序以使得瞬时PCR被正确地更新。 应用程序11010是执行任意任务(包括在该示例中的证明)的示例性应用程序。最后,服务器11700执行远程证明。首先,在11701中,应用程序11010从抽象层11006请求客户端临时值N。,并在 11702中,返回该随机生成的值,在从服务器11700请求证明11703时应用程序11010使用该值。例如,在允许应用程序11010访问安全服务之前,服务器11700需要确认应用程序 11010正操作在期望的环境中,从而应用程序11010发起证明过程以使得从服务器11700 获得该许可。应用程序11010向服务器11700传递生成的客户端临时值N。,该值能够避免重放攻击和其他攻击。在11704,服务器11700通过发送它的对证明的请求来回复,其中消息包含服务器临时值Ns、随机生成的挑战以及要查询的一组物理PCR。通过使用例如现有技术中描述的直接匿名证明协议在客户端与服务器之间之前建立的AIK来对消息进行签名。注意,在优选实施例中,该消息格式与TCG指定的格式相同。在11706,应用程序11010将该证明请求的处理委托给OS 11008。OS 11008使用如图10描述的过程空间的知识来确定哪个应用程序或动态加载库调用了该功能以及该模块使用哪个RIM证书来执行它自身的验证(11708),以及确定针对应用程序的远程证明已经在之前建立的AIK(11709)。在 11710,检索到的RIM证书连同其他的证明参数一起被传递给抽象层11006,以请求来自那个模块的证明。现在,证明可以开始了 ;首先,在11712,包含服务器临时值、随机挑战以及物理PCR的消息上的要证明的签名,通过使用之前根据现有技术建立的AIK由SPE 11004 进行验证。接下来,在11714,再次使用SPE 11004,这是用于验证应用程序11010的RIM证书的完整性的时间,并且在11716,tPCR支持11002用于执行对设置在所述RIM证书中的 tPCR的验证。假设这些检查都成功执行,则在11718,抽象层11006准备将由SPE Quote使用的哈希值;通过对之前发送给服务器的客户端临时值、在11710处引入的服务器临时值和挑战、以及存储在应用程序11010的RIM证书中的瞬时PCR哈希值的结合来计算该哈希值。在11722,请求SPE 11004以生成签名的哈希值,该签名的哈希值包括在11704中根据从服务器接收到的PCR选择来设置的PCR以及在11718中所计算出的哈希值。在优选实施例中,即在SPEl 1004是MTM的情况下,该功能称为TPM_Quote并如同TCG规范定义的那样执行。然后,通过11722、117对、117沈和117 的顺序将得到的值从SPE 11004传递回服务器11700。在11730,服务器11700验证传递进来的结果等于期望的结果,并且在11732, 通知应用程序11010证明已经被成功完成。在优选实施例中,应用程序11010与服务器11700之间的通信(11703、11704、 11728,11730和1173 通过因特网在无线链路上发生,但是本领域普通技术人员将看到, 使用固定链路或无线电链路的实施例也是可能的。设计针对该通信的协议以使得消息内容不需要被加密,但是本领域普通技术人员将看到,使用加密协议(例如,SSL)的实施例也是可能的。应当指出的是,虽然基于前面提到的实施例描述了本发明,但是本发明明显不局限于这些实施例。下面的情况也包含在本发明中。(1)在前面提到的实施例中,验证是以与MTM规范相类似的方式执行的。然而,本发明可以应用到另一验证系统中,只要该验证系统能够使用以类似于链的形式对组件进行验证的验证方法(即,一个组件对在该一个组件之后启动的另一组件进行验证)来对组件进行验证。例如,将哈希值扩展入MTM中是可以省略的,因为该操作是专门针对TCG规范的。(2)在前面提到的实施例中,通过使用证书(RIM证书)中的哈希值来执行验证。 然而,不使用哈希值的另一验证方法也可以应用到本发明中。传统的校验和以及从所述组件中提取的其他数据(例如,从所述组件中提取的第一预定比特)可以用于执行验证。此外,证书可以用包括完整性检查值的数据组来替代。另外,验证方法不局限于检查从所述组件中提取的值是否与期望的值匹配。例如, 可以检查组件的大小,并且如果该大小大于或小于预定数量,则可以判断要对该组件进行验证。这些验证方法并不像将哈希值与它的期望值进行比较那样严格,但是它们的执行速度较快。(3)前面提到的装置中的每个装置具体地说是包括微处理器、R0M、RAM、硬盘单元、 表示单元、键盘、鼠标等的计算机系统。计算机程序存储在RAM或硬盘单元中。各个装置通过根据计算机程序的微处理器操作来实现它们的功能。这里,通过将指示计算机的指令的多个指令代码进行组合来配置计算机程序(4)可以从单个LSI (大规模集成)系统来配置构成各个装置的部分或所有组成元件。LSI系统是通过在一个芯片上集成组成单元而制造的超多功能LSI,并且具体地说是通过包括微处理器、R0M、RAM等而配置的计算机系统。计算机程序存储在RAM中。LSI系统通过根据计算机程序的微处理器操作来实现它的功能。此外,配置各个装置的组成元件的每个单元都可以被制造为独立的单个芯片或者单芯片,其包括一部分或所有单元。此外,这里使用了 LSI系统,但是由于集成度的不同,也可以使用IC、LSI、超大规模LSI、甚大规模LSI等名称。此外,电路集成的方式并不局限于LSI,采用专用电路或通用处理器的实现方式也是可用的。另外,使用现场可编程门阵列(FPGA)和可重新配置处理器也是可接受的,该 FPGA在LSI已经被制造之后是可编程的,并且在该可重新配置处理器中,LSI中的电路单元的连接和设置是可重新配置的。此外,如果通过半导体技术或者其他派生技术的进步而实现替换LSI的集成电路技术出现了,则那个技术能够自然地用于实现组成元件的集成。可以期望应用生物技术。(5)构成各个装置的部分或所有组成元件可以被配置为IC卡,该IC卡可以附着到各个装置上以及从各个装置上拆卸,或者可以作为单独的模块。该IC卡或模块是由微处理器、ROM、RAM等配置的计算机系统。该IC卡或模块也可以包括在前面提到的超多功能LSI 中。该IC卡或模块通过根据计算机程序的微处理器操作来实现它的功能。该IC卡或模块也可以用于防止篡改。(6)本发明可以是用于使用计算机来实现之前所示方法的计算机程序,并且还可以是包括计算机程序的数字信号。此外,本发明还可以通过在计算机可读记录介质(例如,软碟、硬盘、⑶-ROM、M0、 DVD、DVD-ROM、DVD-RAM、BD (蓝光盘)以及半导体存储器)中存储计算机程序或数字信号来实现。此外,本发明还可以包括记录在这些记录介质中的数字信号。此外,本发明还可以通过经由电信线路、无线或有线通信线路、由因特网表示的网络、数据广播等传输前面提到的计算机程序来实现。本发明还可以是包括微处理器和存储器的计算机系统,其中,该存储器存储前面提到的计算机程序,微处理器根据所述计算机程序进行操作。此外,通过在前面提到的记录介质上进行记录来传递程序或数字信号,或者通过经由前面提到的网络等来传递程序或数字信号,使用另一独立的计算机系统的执行也是可能的。(7)本领域技术人员将容易意识到,在不实质上背离本发明的新颖教导和优点的情况下,对示例性实施例进行多种修改是可能的。因此,前面提到的修改和实施例的任意组合都包括在本发明的范围内。(第二实施例)下面描述本发明的优选实施例。该第二实施例涉及用于支持使用瞬时PCR的系统,该瞬时PCR具有限定的寿命和通过证书的方式确定的值。通过提供所描述的另外的操作系统功能性和PSC的可信验证,具有SPE的设备的开发者能够制作将处理这些tPCR的系统。通过提供PSC (其描述要被使用的tPCR),这类设备上的应用程序的开发者能够制作将以灵活的方式来提供可信执行的应用程序。根据本发明,将应用程序定义为任意类型的组件,包括但不限于独立程序、用于独立程序的插件模块以及用于插件的辅助模块。图21A示出了支持以诸如在TCG移动参考架构中描述的方式来安全地引导所述系统的现有技术。在标准执行环境中,存在使用抽象层API 2102的应用程序2100。虚线表示上述的标准执行模式(上面)与安全模块(下面)之间的安全模式接口 2106。标准执行模式是大多数计算机系统提供的常规执行环境。安全模式提供了安全执行环境,其中,在不能从标准执行环境访问的存储器空间中,仅可以运行被许可的软件。在本发明的优选实施例中,通过用仅安全模式知道的密钥的私有部分对软件进行加密来强制实施这种许可,但是诸如白名单或证书之类的其它技术也是可以使用的。这种执行环境保持了安全引导模块和安全处理环境2114,以及其他需要的模块。安全模式接口 2106的上面是安全引导可信边界2104 ;该线下面的每个组件都位于可信环境中,如同TCG移动可信模块规范中定义的那样,在具有验证和扩展的安全引导过程期间得到建立。安全模式抽象层API 2108处理来自常规模式的对服务的请求,并将它们传递给抽象层2110以用于进一步处理。抽象层的一个任务是管理PSC数据库2112。另一个任务是处理对安全引导组件2113提供的服务(包括访问安全处理环境2114)的请求,诸如操纵物理PCR 2116。安全引导组件2113还要求访问PSC数据库2112。安全处理环境2114可以在硬件或软件中实施;在优选实现方式中,它是由可信计算组规范定义的移动可信模块,而在另一优选实现方式中,它是可信平台模块。 软件处理环境2113可以以软件或硬件、或者两者的组合来实施。最后,存在次级RIC(运行时间完整性检查器)监控器2118,它的任务包括当应用程序2100看起来已经被篡改时终止应用程序2100。在优选实现方式中,这通过验证当前应用程序哈希值相对于存储在PSC 中的参考哈希值来实现。这种验证会以调度的间隔发生或者在特定事件出现时发生,并且可以存在这些RIC监控器的分级,其中每级RIC监控器检查一个或多个孩子RIC监控器的完整性。未示出主RIC,但是主RIC的任务是控制整个系统的验证根,其在所示系统外部执行(例如,在管理程序中执行),其中,它以有规律的间隔来对一个或多个组件执行完整性检查,从而验证这些组件的哈希值与存储在PSC中的参考哈希值。该主RIC监控器必须包括的其中一个组件是次级RIC。TCG移动参考架构将这称为PRMVA (主运行时间测量验证代理),其中次级RIC监控器2118对应于SRMVA (次级运行时间测量验证代理)。所有示出的元件都位于设备2120中。可以通过本领域普通技术人员公知的若干技术来实现安全模式,诸如系统处理器中的隔离执行模式、操作系统内核模式、安全协处理器、虚拟机、管理程序、经完整性检查的存储器。在本质上不背离本发明的新颖教导和优点的情况下,每个组件都可以由一个或多个所列技术或通过其它技术来进行保护。在现有技术的另一实施例中,安全模式接口 2106位于抽象层2110与安全处理环境2114之间。本领域普通技术人员将看到,抽象层可以被实施,以使得它不需要安全模式对它的执行进行完全保护,仅需要上述RIC监控器提供的完整性保护,其中完整性保护以软件或硬件方式或两者的组合来提供。图21B示出了在不支持安全模式但具有独立的安全处理环境(例如,在2004年4月观日公布的TCG规范架构概述修订版本1.2中描述的方式)并且没有安全模式接口时现有技术的另一实施例。由于没有安全模式接口,所以仅存在一个抽象层API 2108,并且用可信/安全引导组件2152来替代安全引导组件。次级RIC监控器2118扩展,以覆盖该系统中除了安全处理环境2114之外的所有组件,从而有助于实施可信/安全引导可信边界 2150,但在其他方面,各个组件及其角色如图21A中描述。图22A基于之前图21B中的现有技术示出了本发明的第二实施例,其中,存在在标准执行环境中使用抽象层API 2102的应用程序2100。虚线表示上述的标准执行模式(上面)与安全模块(下面)之间的安全模式接口 2106。该安全模式接口 2106的上面是安全引导可信边界2104,通过如之前描述的那样在执行之前对组件进行验证的过程来建立;该线下面的每个组件都位于可信环境中。OS支持2200模块位于标准执行空间中,但是位于可信边界中。该模块管理组件和PSC映射2202,以用于维护哪个应用程序已经使用了哪个证书的映射,来在启动之前进行验证。在安全模式中,存在抽象层API 2108,该抽象层API 2108处理来自常规模式的对服务的请求,并将它们传递给抽象层2110以用于进一步处理。 抽象层的一个任务是管理PSC数据库2112,并且另一个任务是实施tPCR支持2204。该支持模块维护扩展的PSC树2206数据,该数据包含所有扩展的但未被取消的PSC的有向非循环图。再一个任务是处理对安全引导组件2113提供的服务(包括访问安全处理环境2114) 的请求,诸如操纵物理PCR 2116。安全引导组件2113还要求访问PSC数据库2112。最后, 存在次级RIC (运行时间完整性检查器)监控器2118,它的任务包括当应用程序2100看起来已经被篡改时终止应用程序2100。所有示出的元件都位于设备2120中。通过采用现有技术,在现有技术的优选实施例中,安全模式接口 2106位于抽象层 2110与安全处理环境2114之间。本领域普通技术人员将看到,抽象层可以被实施,以使得它不需要安全模式对它的执行进行完全保护,仅需要上述RIC监控器提供的完整性保护, 并且本发明还可以在完整性保护的环境中实施,其中完整性保护以软件或硬件方式或两者的组合来提供。可以通过本领域普通技术人员公知的若干技术来实现安全模式,诸如系统处理器中的隔离执行模式、操作系统内核模式、安全协处理器、虚拟机、管理程序、完整性检查后的存储器。在本质上不背离本发明的新颖教导和优点的情况下,每个组件都可以由一个或多个所列技术或通过其它技术来进行保护。另外,本领域普通技术人员将看到,另一实施例是将tPCR支持2204和扩展的PSC 树2206移动到安全处理环境2114中。进一步的实施例是组合这两个可替换的实施例,从而抽象层2110位于安全模式接口 2106外面,但tPCR支持2204和扩展的PSC树2206位于安全处理环境2114内。图22B示出了在不支持安全模式但具有独立的安全处理环境(例如,在2004年4 月洲日公布的TCG规范架构概述修订版本1. 2中描述的方式)并且没有安全模式接口时基于图21B的本发明的第二实施例的另一方面。由于没有安全模式接口,所以仅存在一个抽象层API 2108,并且用可信/安全引导组件2152来替代安全引导组件。次级RIC监控器 2118扩展,以覆盖该系统中除了安全处理环境2114之外的所有组件,从而有助于实施可信 /安全引导可信边界2150,但在其他方面,各个组件及其角色如图22A中描述。图23A示出了根据本发明的两种类型的PCR的使用方式。首先,在常规应用空间中,示出了应用程序的分级。聚合1 2300使用来自插件1 2302和插件2 2304的服务。这些插件各自由它们各自的应用程序,即应用程序1 2306和应用程序2 2308所拥有。这两个应用程序都使用来自抽象层API 2102的服务。接下来,在安全模式接口 2106的另一侧, 存在了抽象层API 2108的安全模式的支持。这与抽象层2110进行通信。抽象层的一个任务是实施tPCR支持2204。该支持模块维护扩展的PSC树2206数据,该数据包含所有扩展的但未被取消的PSC的有向非循环图。在其他任务中,另一任务是向安全处理环境2114传递对操纵物理PCR 2116的请求,其中,安全处理环境2114可以以硬件或软件来实施。现在,物理PCR 2116和瞬时PCR 2204的典型使用方式如下所述。物理PCR读取 (2310)操作总是可用的;安全处理环境2114支持的所有功能总是使用物理PCR,从来不使用瞬时PCR。然而,如上所述,如果tPCR支持组件2204被移动到安全处理环境2114中,则 SPE可以使用tPCR。向物理PCR中写入0314)如同现有技术教导的那样主要在引导时间执行,但是此外,物理PCR写入可能从应用空间进行0312)。这取决于系统设计者或实施者决定从应用空间将发生什么样的写入操作。对于瞬时PCR而言,读0316)和写0318)通常在应用空间中排它地发生。利用瞬时PCR的本质,每个实施者都具有选择如何使用这些 tPCR的自由度,虽然在所示示例的情况下,聚合1 2300的开发者将需要与插件1 2302和插件2 2304的开发者协作来确保他们都知道每个人期望可用哪些tPCR。图2 示出了扩展的PSC树2206。将在下文描述用于添加和删除节点的方法。所示的有向非循环图表示了如同图22A所示那样进行扩展的、tPCR支持模块2204已经记录的PSC。在该图中,图22A中所示的模块与证书之间存在1对2的关系如同现有技术教导的那样,为了扩展可信边界以覆盖应用程序1 2306,需要两个证书,即应用程序1启动2350 和应用程序1被加载23M。对于应用程序2 2308,需要应用程序2启动2352和应用程序 2被加载2356,对于插件1 2302,需要插件1启动2358和插件1被加载2362,对于插件2 2304,需要插件2启动2360和插件2被加载2364,以及对于聚合1 2300,需要聚合1启动 2366和聚合1被加载2368。证书之间的箭头指示这些证书之间的依赖关系。当被扩展时, 这些依赖关系由每个证书期望找到的PCR状态来定义。该树中每个节点的结构在下面的图 26中进行定义。如图所示,根据现有技术,每个模块都具有与其相关联的两个证书,一个由其父模块使用来在启动之前对该模块进行验证,一个由该模块自身使用来验证它已经在期望的环境中启动。本领域普通技术人员将看到,每个模块使用多于或少于两个证书将位于本发明的范围内。图M示出了平台状态证书MOO (PSC),该结构表示了由PSC断定的PCR(物理或瞬时)定义的平台的状态和在成功验证平台状态后扩展入PCR(物理或瞬时)中的值。这些结构可以存储在PSC数据库2112中。该结构中的第一字段是PSC名称M02。该名称必须是唯一的,因为它是用于存储和检索PSC数据库2112中的PSC的关键字段,并且在优选实现方式中,它是表示人类可读的名称的字节串。应用程序开发者可以决定要使用的名称,并且平台的制造者可以向应用程序开发者提供名称。本领域普通技术人员将看到,可以使用其它的表述(诸如GUID)来代替,并且存在选择PSC名称的其它方式。接下来,存在表示要验证的PCR状态M04的条目列表。对于要被验证的每个PCR而言,存在一对值,即PCR索引 2406和PCR值M08。接下来,存在要扩展的PCR值;首先是要扩展的PCR索引2410,然后是要扩展的值M12。最后,存在加密签名2414,其表示由安全处理环境2114已知的密钥加密的剩余数据的哈希值。该签名密钥是安全地嵌入安全处理环境2114中的密钥的私有部分或者是由对PSC签名有效的嵌入式密钥直接或间接授权的密钥,并且签名实体可以是平台开发者或应用程序开发者的代理者或者是已经被颁发了有效签名密钥的任意其它实体。根据本发明,通过仅仅查看平台状态证书M00,不能确定该平台状态证书MOO是支持物理PCR还是支持瞬时PCR。该平台状态证书使用上下文确定了要检查哪种类型的 PCR0这样做的一个优点在于,为安全引导创建证书的现有工具能够被重新使用以用于创建在应用空间中使用的证书。在优选的实现方式中,要验证的PCR状态M04的列表对可以用表示要被测试的 PCR索引M06和该组PCR值M08的哈希值的位图来替换;这是针对RIM证书的、由TCG移动可信模块规范定义的表示。可以使用这种表示而不需修改验证瞬时PCR的证书,其代价是需要更复杂的校验码,但优选的实现方式使用图25中所示的用于瞬时PCR的RIM证书 2500。现在将详细描述该结构中的字段与图M中的平台状态证书和其他字段之间的关系。标签2502 等价于 PSC 名称 2402。measurementPCRIndex 2504 和 measurementValue 2506等价于要扩展的PCR索引MlO和要扩展的值M12。要验证的tPCR状态2518以及被包含的列表对(PCR索引2514和tPCR值2516)类似于平台状态证书MOO中定义的字段。为了将要验证的tPCR状态2518与用于瞬时PCR的 RIM 证书 2500 相关联,有必要使用 extensionDigestSize 2508 和 extensionDigest 邪10 字段;extensionDigestSize 2508 的大小是 extensionDigest 2510 的字节数,而 extensionDigest 2510包含要验证的tPCR状态2518结构的哈希值。不需要存储大小指示符,因为在状态2512字段中设置的比特数目表明了该表中的对的数目。本领域普通技术人员还将看到,如果存在tPCR值2516字段的限定顺序,诸如tPCR索引顺序,甚至不需要存储 tPCR索引2514字段。图沈示出了扩展的PSC树节点2600,该结构记录单个证书的扩展。该节点结构详细描述了图2 所示的每个节点(项目2350到2368)的内容。扩展的PSC树2206使用现有技术中众所周知的任意技术来实施有向非循环图。例如,增强的C++库包含增强图库, 其支持许多种类型的图的创建和处理,包括上面提到的有向非循环图。这样,扩展的PSC树节点沈00就与该图中的每个顶点相关联。扩展的PSC名称沈02是已经被扩展的平台状态证书M00的PSC名称M02。tPCR状态沈04是该节点处的当前瞬时PCR状态的缓存,如同根据之前扩展的PSC(作为该节点的上一节点)所计算出的那样。它由列表对即tPCR索引 2606和tPCR值沈08组成。本领域普通技术人员将看到,存在针对该数据可替换的表示,诸如用表示使用的tPCR的位图来替换tPCR索引沈06字段。图27示出了由OS支持模块2200维护的组件和PSC映射2202。该组件和PSC映射 2202包含将组件映射到PSC的列表2700。该列表的每个条目都包含组件ID 2702和扩展的 PSC名称2704(在应用程序启动之前已经被扩展的平台状态证书M00的PSC名称M02字段)。在本发明的优选实施例中,在基于Windows的平台上,组件ID 2702由两个字段组成, 第一个字段是过程ID 2706,该过程ID 2706保存唯一表示该组件所属的过程的标识符,如同由诸如GetCurrentProcessIdO之类的Win 32API确定的那样。第二个字段是模块句柄 2708。对于可独立执行的程序的组件而言,该字段总是被设置为零。对于被实施为链接库的组件而言,当进入第一参数中的DllMain入口点时,该字段包含用于该库的HM0DULE。该结构的使用在下文进行描述。根据TCG移动参考架构,PCR 0保存描述底层硬件平台的特性的值;PCR 1包含描述信任根的值;PCR 2启动加载事件;PCR 3-6和8_12包含专用的测量;以及PCR 13到PCR 15可由应用程序自由使用。假设希望测试PCR 0、1和2的应用程序编程者如期望的那样指示成功的安全引导,测试PCR 13被设置成零,并且如果所有都是正确的话,则将新的值扩展到PCR 13中。图观示出了根据现有技术的称为“应用程序1启动”的示例性平台状态证书M00。该证书的名字记录在观00中,并且如上所述,要验证的PCR状态M04包含四对要检查的 PCR 索引和 PCR 值,编号为 2802,2804,2806,2808,2810,2812,2814 和 2816。 观02指示PCR 0,2804〈硬件平台〉符号指示表示底层硬件平台的公布值;观06指示PCR 1, 2808<可信根 > 符号指示表示底层可信根的公布值J810指示PCR 2,2812<启动加载事件 >符号指示表示根据扩展入PCR 2中的加载事件值所计算出的组合哈希值的公布值J814 指示PCR 13,观16零值指示期望PCR 13将仍然处于其初始状态中。接下来,存在要扩展的 PCR (观18),然后是扩展入那个PCR中的值0820)。图观中的根据现有技术的证书的问题包括如果另一个应用程序已经使用了 PCR 13,则要验证的PCR状态M04将不再是正确的;以及如果该应用程序终止,则重新开始在 2818和观20中定义的之前扩展的值将使PCR13设置成非零状态,从而要验证的PCR状态 M04将不再正确。然而,根据本发明,与图28中的证书相类似的证书由应用程序开发者分成如图四所示的两个证书,以用于在与应用程序本身相同的时间或在不同的时间处向目标设备部署。进行分割的原因在于,现有的证书验证两组截然不同的PCR 第一组包含安全引导过程的结果,其是公知的不变的结果;而第二组是动态、应用层状态。在图观中,项目观02和 2804指代描述硬件平台的已知的安全引导PCR 0值,项目观06和观08指代描述可信根的已知的安全引导PCR 1值,而项目观10和观12指代描述启动加载事件的已知的安全引导 PCR 2值。另外,项目观14和观16指代描述期望先决条件的预期的后引导PCR 13值。这样,应用程序的开发者可以通过将已知的安全引导PCR值放入将被用于测试安全处理环境管理的物理PCR(在该示例中,即PCR 0、1和2)的一个证书中,来将图28中的单个证书分成图四中所示的两个证书。第二个证书用于应用空间瞬时PCR,在该示例中即PCR 13。第一个证书,即“应用程序1启动(安全引导)”四00,测试由安全引导过程建立的物理PCR(PCR 0 2802,PCR 1沘06和PCR 2沘10),以确保安全环境是正确的。然而,要扩展的PCR被设置成__1(四02)以表示没有扩展,并且要扩展的值O904)的标称值为零; 该证书仅用于验证;在应用级,如图3所示阻止向物理PCR写入,因为使用瞬时PCR提供了更多的灵活性并避免了在现有技术中存在的之前提到的问题。第二个证书,即“应用程序1 启动(瞬时)”四20,测试瞬时PCR 13观14是零(观16),并将值扩展回同一寄存器观18、 观20。tPCR索引13的选择纯粹是任意的;也可以很容易地使用tPCR 0或者tPCR 99,这不同于现有技术中的情况。图30示出了在启动应用程序时使用图四的两个证书(这两个证书中的一个证书用于测试物理PCR,另一个证书用于瞬时PCR)、然后在终止该应用程序时使用第二个“应用程序_1启动(瞬时)”2920证书的时序图,以表明根据本发明的将值扩展到tPCR然后对其进行取消的事件序列。示出的是六个进行交互的对象21000、21002、21004、21006、21008和 21010 ;在当前示例的上下文中,首先,tPCR 13 21000表示瞬时PCR 13的状态。如图沈中所示,在扩展的PSC树2206中的每个节点处(而不是在特定的存储器位置处)来记录tPCR, 但是在该示例性示例中为了有助于理解,将tPCR 13 21000表示成看起来是这种位置。接下来,存在tPCR支持21002,其对采用查阅tPCR的PSC以及验证当前的tPCR状态进行处理,并且如果有效,则记录该证书已经被扩展。SPE 21004是根据现有技术的安全处理环境。 在优选实施例中,它是MTM。抽象层21006处理来自常规模式应用程序的请求,并将请求传递给其他模块。OS 21008是操作系统,这里涉及处理启动和终止应用程序以使得瞬时PCR 被正确地更新。最后,应用程序21010是请求启动PSC保护的其他应用程序的应用程序,因为在图30的时序图中描述的过程可以被嵌套,从而例如应用程序执行21042可以包括启动跟随在从21014开始的事件序列之后的另一应用程序。为了简化该图,已经从图示中移除了错误处理,但是并没有从本发明中移除。首先,在21012,tPCR 13 21000从零值开始。在本发明中,规则是扩展的PSC树 2206的根从全部tPCR都被设置成零的状态开始。本领域技术人员将看到,其他可能的初始值是可能的,例如在安全引导完成之后,用物理PCR的值来对tPCR进行初始化。OS 21008 检测启动应用程序21010的请求,所以在21014中OS 21008首先确定尝试启动的应用程序使用哪些PSC。在优选实施例中,在基于Windows的操作系统中,嵌入可执行程序中的定制组件识别要使用的两个PSC。应用程序通过使用微软的强命名工具来进行签名,以避免篡改。接下来,在21016和21018中,从抽象层21006请求在21014中识别的PSC,在该图示中为“应用程序1启动(安全引导)”和“应用程序1启动(瞬时)”。现在,在21020中, 通过使用用于验证系统希望启动的应用程序的两个PSC来调用抽象层API AL_VerifyPSCs AndExtendtPCR,来执行对这两个PSC(即,如图四中所示的针对物理PCR的PSC和针对瞬时PCR的PSC)的验证。首先,在21022中,用PSC“应用程序1启动(安全引导)”(在该图中用210 表示)来调用SPE API SPE_VerifyPSCState0根据现有技术,这执行了对PSC 自身的格式和签名的检查,然后验证PSC中要验证的PCR是否与物理PCR中的当前值相匹配。根据现有技术,当将PSC传递给平台时,用嵌入安全处理环境2114中的密钥或者可被验证为由所述嵌入的密钥授权的密钥来对该PSC进行签名,并且如果有效,则用由安全处理环境2114生成并安全存储的另一密钥来对该PSC进行重新签名,然后将这些证书存储在 PSC数据库2112中。根据本发明的优选实施例,用于检查物理PCR的PSC是可选的,所以21016和 21022可以省略。根据另一优选实施例,如果用于检查物理PCR的PSC与用于所有应用程序的PSC相同,则针对物理PCR的一个PSC可由两个或多个不同的瞬时PCR PSC来使用。接下来,在210 中,用设置给PSC"应用程序1启动(瞬时)”(在该图中用21030 表示)的参数来调用来自SPE的另一API,即SPE_VerifyPSC。根据现有技术,这执行对PSC 自身的格式和签名的检查,而不需验证违反物理寄存器的PCR设置。现在,在210 中,用设置给PSC“应用程序1启动(瞬时)”(在该图中用21030表示)的参数来调用tPCR支持模块21002,即API TPCR_VerifyPSCAndExtend 该API的第一个任务是通过检查要验证的 PCR状态M04对应于扩展的PSC树2206中的已有状态,来验证PSC能够被扩展Q1032)。 该操作的细节在下面进行描述。一旦该验证成功完成,就通过向扩展的PSC树中的正确位置添加操作成功的表示,来对该PSC的操作成功进行记录Q1034)。该操作的细节在下面进行描述。向该树中添加该PSC的一个结果是,tPCR 13 21000(要被扩展到的寄存器)使它的值被设置成之前值(在这种情况下为零)和从该PCR扩展的值(即0xABCD1234)的结合的哈希值(21030)。这被称为组合哈希值,并且用符号将这写成tPCR13 = SHA-I (tPCR13 concatenated-with OxAB⑶1234),并且该操作在21036中由句法(+)=表示。这样,该环境已经被验证为是处于期望的状态中,并且已经记录了这种成功,从而控制传递回操作系统。根据现有技术,作为在21020中对PSC进行验证之前的进一步安全性测量,计算应用程序的哈希值,并将该哈希值与存储在要扩展的PSC中的基准值进行比较。根据本发明,在 21030中,该值在PSC “应用程序1启动(瞬时)”中被存储为要扩展的值,在优选实施例中由OxAB⑶1234表示。然而,该步骤从图上省略了。在启动应用程序时,OS为该应用程序获得过程ID,并在组件和PSC映射2202中为瞬时寄存器记录该标识符和相应的PSC(21038),即PSC “应用程序1启动(瞬时)”。在优选实施例中,在微软的Windows环境中,该过程通过拦截过程创建过程来实施,如同在The Code Project 网站中由 Andriy Oriekhov ^t “ Intercepting WinAPI calls” 中描述的那样(网址 http://www. codeproject. com/KB/system/InterceptffinAPICalls. aspx)。获得的过程句柄被转换成过程ID 2706并被设置成所述字段,并且模块句柄2708被设置成零。 当组件是动态链接库时,LoadLibrary ()和FreeLibrary ()代码被钩住,并且对DllMain () 的调用被中断,如同 Len HolgateAPI 在 http://www. lenholgate. com/archives/000369. html 的 /*Rambling comments. . . 处的"Why does windows hold the loader lock whilst calling DllMain ?”中描述的那样。通过适当地使用该陷阱,过程ID 2706被设置成当前的过程ID,并且模块句柄2708被设置成DllMain ()的第一自变量。应用程序被启动01040),并如被编程的那样继续执行01042),或许甚至启动与PSC相关联的其它应用程序或者扩展查阅tPCR自身的其它PSC。最后,应用程序终止 (21044),或者是因为用户选择关闭该应用程序,或者是因为次级RIC监控器(在该图中未示出)的篡改检测而强制该应用程序关闭。当应用程序终止时,OS获得该应用程序的过程ID,并使用该过程ID和为零的模块句柄来使被用于查找组件和PSC映射2202的组件ID 2702找到(21046)用于启动该应用程序的PSC。这返回PSC “应用程序1被启动(瞬时),,(21030),从而OS用PSC来调用抽象层21006 API ALJndoPSCExtend来取消Q1048)。当所述组件是动态链接库时,如上面所述的那样,FreeLibrary OAPI被钩住,从而在那个例程中,当前的过程ID被查询,并且从 FreeLibraryO参数获得的模块句柄和这两个数据项被用于使被用于查找组件和PSC映射 2202的组件ID 2702找到用于启动该库的PSC。如之前一样,在210 中,用设置给PSC"应用程序1启动(瞬时),,(在图该中用11030表示)的参数来调用来自SPE的另一 API,即 SPE_VerifyPSC。根据现有技术,这执行对PSC自身的格式和签名的检查,而不需验证违反物理寄存器的PCR设置。现在,在21050中,用设置给PSC"应用程序1启动(瞬时)”(在该图中用21030表示)的参数来调用tPCR支持模块21002,即API TPCR_VerifyPSCAndExtend 该API的第一任务是通过检查来查看是否PSC已经存在于扩展的PSC树2206中,来验证该 PSC已经被扩展01052)。该操作的细节在下面进行描述。一旦该验证成功完成,这意味着 21028中的扩展操作能够被取消。在21034中,这通过从扩展的PSC树中删除表示所述PSC的节点以及依赖于该节点的所有其他节点来实现。该操作的细节在下面进行描述。从该树中删除该PSC的一个结果是tPCR 13 21000(即要被取消的寄存器)有效地使它的状态复位成零(21056)。这样,已经验证该环境处于期望的状态中,并且通过从扩展的PSC树中删除节点(21034),来取消之前的扩展操作,从而控制传递回操作系统,从而该系统现在准备好执行其它的操作。本领域普通技术人员将看到,要执行的其它操作中的一个操作将重新启动被终止的应用程序。由于tPCR 13已经在21056处被复位成00. ..00,即在21012处指示的tPCR的开始值,所以也继续第二轮地重新执行对应用程序的启动PSC的验证Q1030), 从而根据本发明,应用程序能够重新启动。图30示出了在启动和终止可执行程序时用于动态扩展和收缩可信边界的时序图,其指出了如何基于使用以Windows便携式可执行格式的模块的优选实施例来针对动态链接库执行类似任务。对于基于非便携式可执行程序的模块格式(例如,Java Archive模块或JAR)而言,本领域普通技术人员将看到,可以由加载和卸载模块的引擎来使用类似的方法,或者可替换地可以由模块自身对抽象层21006进行明确的调用以扩展和收缩可信边界。根据现有技术,JAR不仅可以包含Java字节的基于代码的模块,而且还可以包含其他语言模块,其中一个示例是ECM/^cript (JavaScript)。这可以通过使用http://java. sun. com/j2se/l. 3/does/tooldocs/win32/jarsigner. html 网页上白勺来自 Sun 白勺 jarsigner X 具以及使用 http://java. sun. com/j2se/l. 4. 2/docs/api/java/util/jar/JarFile. html 网页上描述的java. util. jar. JarFile课程验证的签名进行签名。在该情况下,在优选实施例中,图27中所示的模块句柄2708是引用包含所述组件的JAR文件的句柄。图 31 示出了描述 tPCR 支持模块 21002 API TPCR_VerifyPSCAndExtend(21028) 的细节的流程图。该功能从21100开始,将要验证和记录的PSC作为参数被传递进来,并调用用于计算扩展的PSC树中的每个节点的tPCR状态Q1102)的子例程,如下面的图32中所示。接下来,在21104,将当前的tPCR状态和解决方案列表变量都初始化为零值。这两个变量的使用在图33中进行描述。接下来,在21106,调用子例程,该子例程验证传递进来的 PSC的tPCR值是否能够从由当前扩展的PSC树描述的状态获得。在21108,测试返回码以查看以下功能在扩展的PSC树中的一个或多个节点处是否发现将tPCR设置成保存在传递进来的PSC中的要验证的状态。如果没有找到该父设置,则在21110,该过程返回表明未能对调用例程进行扩展的错误码。如果找到了父设置,则在21112中,将写入的PSC添加到扩展的PSC树中,使它的父节点(predecessor)被设置成由解决方案列表描述的节点,并且在 21114中,该过程返回调用例程的成功码。图32示出了描述如何计算图沈中扩展的PSC树的每个节点中的tPCR状态沈04 的流程图。在21200,在不需要自变量的情况下调用该流程图,并且在21202,通过从根开始执行对扩展的PSC树的预顺序遍历以使得以期望的顺序针对后面的处理而收集树的节点, 来开始处理。在优选实现方式中,使用增强图库函数breadth_first_search()来收集这些节点。接下来,在21206,将通过深度优先遍历记录的每个节点(21204)的tPCR状态沈04 设置成零值。需要针对证书的特别处理,该特别处理验证被初始化成在安全引导结束时定义的tPCR开始值的tPCR是否为0(在优选实施例中),从而对于在当前证书内存储的要验证的PCR状态2404中的每对tPC!U21208),检测该值是否是在安全引导结束时定义的tPCR 初始值(在优选实施例中为零M21210),并且如果它们相等,则在21212,将这对tPCR索引和值添加到该节点的tPCR状态中,并且该循环针对下一 tPCR继续进行。否则,该循环继续进行而不向节点的tPCR状态进行添加。一旦对每个tPCR都进行了检查,在21214,该功能就移动到针对当前节点的每个父节点的循环。在21216中,如果父节点是扩展的PSC树根节点,则不需要做任何事情,因为之前的循环处理了这种特殊的情况。否则在21218中,对父节点的tPCR状态沈04进行查询并复制。在21220,在复制父节点的状态时执行由父节点的扩展的PSC名称沈02引用的PSC定义的扩展操作,并且在21222,将得到的tPCR状态附加到当前节点的tPCR状态上。由于该扩展的PSC树的构建方式,将永远不存在两个父节点为同一 tPCR指定不同值的情况,所以本领域普通技术人员将看到,检查这种情况是不必要的,但是可以出于验证的目的而对其进行执行。如之前指出的那样,这种对tPCR状态的收集针对每个父节点重复进行,然后当结束时,对遍历中的每个节点(21204)进行处理。一旦如此对每个节点进行了处理,在21224,该过程通过返回每个节点的tPCR状态而结束。本领域普通技术人员将看到,存在执行上述算法的其它方式,例如在bfsjisitor 的examinejertexO中执行21204至21222,从而消除了对节点的分开的列表的需求。另外,虽然在每次执行PSC相关的操作时都调用该功能,但是可以对这些值进行缓存以降低需要的重新计算的努力。图33示出了描述一旦针对每个节点计算了 tPCR状态则如何通过查找所有已经存在的扩展的PSC的列表来验证给定PSC的流程图,所述列表将tPCR设置成在给定PSC中定义的状态。注意,该图中描述的例程是递归程序。在21300,该例程的入口点将列表形式的要验证的tPCR状态、当前匹配的tPCR状态、以及根据tPCR状态匹配的被发现是PSC的父节点的来自扩展的PSC树的节点的列表作为自变量。该解决方法的要点是,每对tPCR索引和值尝试找到将期望的值扩展入当前tPCR并与扩展入其他tPCR中的作为本解决方案的一部分的其他证书相兼容的证书。如果找到了证书,则递归地调用例程,以找到将作为PSC的一部分的其它tPCR扩展为匹配的状态的其它证书。第一步是检查要匹配的tPCR列表。如果在21302,这为空,则该例程已经被成功地递归到列表的结尾,所以在21304,返回FOUND值以表明调用程序的成功。否则,在21306,将 tPCR列表的表头(head)移除,并将该表头作为当前的tPCR来尝试找到父证书。在21308, 将扩展的PSC树中尚未被分配给解决方案列表的每个节点选择为作为父节点的候选节点。 图32的描述指示如何根据现有技术来获得这些节点。首先,在21312中,通过验证两种结构中相匹配的tPCR索引具有同一 tPCR值,来检查该节点的tPCR状态与传递进来的当前匹配的tPCR状态兼容性。如果在21316中,这些值不匹配,则在21308中,该例程移动到扩展的PSC树中的下一节点。如果这些值匹配,则在21314中,通过使用存储在要验证的节点中的扩展的PSC名称沈02来检索针对该节点的PSC,并将要扩展的PSC索引MlO与在21306 处检索到的针对当前tPCR的索引相比较。如果在21316中,这些索引不匹配,则在21308 中,该例程移动到扩展的PSC树中的下一节点。如果这些索引匹配,则候选父节点就已经找到了,从而在21318中,将该节点推送到解决方案列表上,并且该节点的状态(具有执行的扩展)与当前的tPCR列表相合并。在21332,用缩短的tPCR列表、当前的tPCR状态以及解决方案列表来递归地调用验证tPCR例程。如果在213M中递归的调用成功,则在213 中返回FOUND值以表明调用程序的成功。如果失败,则在21320中,从解决方案列表中移除当前的节点,并取消213 中的状态的合并,从而该过程继续查找该树中的下一节点。如果检查了所有的节点但没有成功的匹配,则在21310中返回N0TF0UND。图34示出了示例性的扩展的PSC树2206在取消之前和取消之后的状态。取消之前的状态21400如图2 描述的那样,即从图23A中的模块树构建的得到的状态。现在,如果如图30所示的那样,由于用户交互、程序缺陷或者由于篡改检测而导致插件1终止,则操作系统检测到该终止并确定证书“插件1启动” 2358是在启动时经过PSC测试,从而证书的扩展需要被取消。随同“插件1启动” 2358,所有的从属证书(即“插件1被加载” 2362、 “聚合1启动” 2366以及“聚合1被加载” 2368)也都必须从扩展的PSC树2206中移除,从而使得扩展的PSC树2206处于取消后的状态21402。图35示出了描述如何取消扩展过程的流程图。在21500,该功能将要取消的目标PSC作为自变量。首先,该功能调用用于计算扩展的PSC树中的每个节点的tPCR状态 (21502)的子例程,如上面的图32所示。接下来,在21504中,在扩展的PSC树中搜索目标 PSC的索引,从而尝试找到目标PSC的PSC名称M02与该树的扩展的PSC名称沈02中的每个节点之间的匹配。如果在21506中没有找到匹配的节点,则在21512中,向调用程序返回错误码以表明取消失败。接下来,将目标PSC的要验证的PCR状态M04与找到的节点的 tPCR状态沈04进行比较,并且如果在21510中这些状态不相同,则在21512中,向调用程序返回错误码以表明取消失败。如果这些状态相同,则在21514中,调用用于删除找到的节点和它的所有其依赖的节点的函数,并在21516中,该函数向调用程序返回成功代码。图36示出了描述取消过程如何从扩展的PSC树中移除节点的流程图。在21600 中,该功能将要从所述树中删除的节点作为自变量。首先,在21602中,针对该节点的每个孩子PSC进行循环,并在21604中,递归地调用自身以依次删除它的每个孩子节点。一旦删除了所有的孩子节点,则在21606中删除该节点自身,并在21608中,该功能返回。这样,由之前的扩展操作建立的覆盖终止模块及其所有从属可信模块的可信边界被收缩以将终止模块排除在外,但仍然覆盖不需要被终止的模块并且不损害该设备的应用空间中的信任级别。(第三实施例)本发明的第三实施例用于远程证明。根据现有技术,远程证明的过程具有两个截然不同的阶段。首先,或许使用在TPM vl. 2中存在的直接匿名证明协议,来在该设备上的客户端与远程服务器之间建立共享的AIK,即身份证明密钥。下一步是使用该AIK来向特定的设备配置进行证明;图37A和图37B示出了用于远程证明的现有技术。设备2120以及其中的组件如图21A和图21B中所示,其中,AIK 21710存储在安全处理环境2114中。在图37A中,示出了存在对安全地引导系统的支持的现有技术,还存在服务器21700,其包含对本发明有意义的两个组件。还存在控制证明过程的证明器21702,其使用之前已经建立并与设备2120的AIK 21710相关联的AIK证书21704。证明器21702生成证明请求21706, 并将证明请求21706发送给请求证明的应用程序2100。应用程序2100中的证明过程向安全引导组件2113发送证明请求21708,该安全引导组件2113结合安全处理环境2114来实现现有技术中定义的证明。图37B类似地示出了在不支持安全模式但具有独立的安全处理环境2114(例如, 在2004年4月观日中公布的TCG规范架构概述修订版本1.2描述的方式)并且没有安全模式接口时的现有技术。如之前所述,还存在服务器21700,其包含对本发明有意义的两个组件。还存在控制证明过程的证明器21702,其使用之前已经建立并与设备2120的AIK 21710相关联的AIK证书21704。证明器21702生成证明请求21706,并将证明请求21706发送给请求证明的应用程序2100。应用程序2100中的证明过程向可信/安全引导组件2152 发送证明请求21705,该可信/安全引导组件2152结合安全处理环境2114来实现现有技术中定义的证明。图38A示出了基于图37A中的现有技术的、对瞬时PCR进行远程证明的本发明的第三实施例。服务器21700同之前一样,并且如同之前的用于证明的请求21706被指向应用程序2100。然而,根据第三实施例,不是将证明请求21708直接指向安全引导组件2113, 而是使证明请求21800指向系统的所有层,从而来自tPCR支持2204的信息也可以包括在返回给服务器的证明信息中。图38B示出了基于图37B中的现有技术的、对瞬时PCR进行远程证明的本发明的第三实施例。服务器21700同之前一样,并且如同之前的用于证明的请求21706被指向应用程序2100。然而,根据第三实施例,不是将证明请求21708直接指向可信/安全引导组件 2152,而是使证明请求21850指向系统的所有层,从而来自tPCR支持2204的信息也可以包括在返回给服务器的证明信息中。图39示出了描述在应用程序的远程证明期间的模块内通信的时序图。示出的是六个进行交互的对象21004、21002、21006、21008、21010和21900 ;首先,SPE 21004是根据现有技术的安全处理环境。在优选实施例中,它是MTM。接下来,存在tPCR支持21002,其对采用查阅tPCR的PSC以及验证根据给定PSC的tPCR状态进行处理,并且如果有效,则记录该证书已经被扩展。抽象层21006处理来自常规模式应用程序的请求,并将请求传递给其他模块。OS 21008是操作系统,这里涉及处理启动和终止应用程序以使得瞬时PCR被正确地更新。应用程序21010是请求远程证明的应用程序。最后,服务器21900执行远程证明。首先,在21901中,应用程序21010从抽象层21006请求客户端临时值N。,并在 21902中,返回该随机生成的值,在从服务器21900请求证明21903时应用程序21010使用该值。例如,在允许应用程序21010访问安全服务之前,服务器21900需要确认应用程序 21010正操作在期望的环境中,从而应用程序21010发起证明过程以使得从服务器21900获得该许可。应用程序21010向服务器21900传递生成的客户端临时值N。,该值能够避免对应用程序21010与服务器21900之间的通信流的重放攻击和其他攻击。在21904,服务器 21900通过发送它的对证明的请求来回复,其中,消息包含服务器临时值Ns、随机生成的挑战以及要查询的一组物理PCR。通过使用例如现有技术中描述的直接匿名证明协议在客户端与服务器之间之前建立的AIK来对消息进行签名。注意,在优选实施例中,该消息格式与 TCG指定的格式相同。在21906,应用程序21010将该证明请求的处理委托给OS 21008。OS 21008使用如图30描述的过程空间的知识来确定哪个应用程序或动态加载库调用了该功能以及该模块使用哪个PSC来执行它自身的验证O1908),以及确定针对应用程序的远程证明已经在之前建立的AIIU21909)。在21910,检索到的PSC连同其他的证明参数一起被传递给抽象层21006,以请求来自那个模块的证明。现在,证明可以开始了 ;首先,在21912, 包含服务器临时值、随机挑战以及物理PCR的消息上的要证明的签名,通过使用之前根据现有技术建立的AIK由SPE 21004进行验证。接下来,在21914,再次使用SPE 21004,这是用于验证应用程序21010的PSC的完整性的时间,并且在21916,tPCR支持21002用于执行对设置在所述PSC中的tPCR的验证。假设这些检查都成功执行,则在21918,抽象层21006 准备将由SPE_Quote使用的哈希值;通过对之前发送给服务器的客户端临时值、在21910处引入的服务器临时值和挑战以及存储在应用程序21010的PSC中的瞬时PCR哈希值的结合来计算该哈希值。在21922,请求SPE 21004以生成签名的哈希值,该签名的哈希值包括在 21904中根据从服务器接收到的PCR选择来设置的PCR以及在21918中计算并使用建立的 AIK的私有部分签名的哈希值。在该第三实施例中,即在SPE 21004是MTM的情况下,SPE_ Quote是TPM_Quote的别名并如同TCG规范定义的那样进行操作。然后,通过21922、21924、 21926和21928的顺序将得到的签名值从SPE 21004传递回服务器21900。在21930,服务器21900验证传递进来的结果等于期望的结果,并且如果相等,则在21932中,通知应用程序21010证明已经被成功完成。在该第三实施例中,应用程序21010与服务器21900之间的通信(21903、21904、 21928,21930和2193 在通过因特网在无线链路上发生,但是本领域普通技术人员将看到,使用固定链路或无线电链路的实施例也是可能的。设计针对该通信的协议以使得消息内容不需要被加密,但是本领域普通技术人员将看到,使用加密协议(例如,SSL)的实施例也是可能的。可替换地,可以仅需要对tPCR值的远程证明。图40示出了引证信息记录22000 的结构,在该情况下,其用于远程证明。版本字段22002包含版本指示符,其被定义为恒定值1.1.0.0。固定字段2004包含结构类型标识符,其被定义为恒定值“QU0T”。摘要值字段22006包含要被证明的tPCR摘要值。extetnalData字段22008包含外部数据,其被远程证明协议定义为客户端临时值、服务器临时值和挑战值的结合的哈希值。最后,签名字段 22010包含在先字段的加密签名。该签名将通过使用传递到签名生成例程的密钥索引来生成,其被远程证明协议定义为之前建立的AIK。图41示出了在仅使用图40示出的引证信息结构22000的、应用程序对tPCR进行远程证明期间的模块内通信。该通信序列的第一部分与图39中所示的序列相同。如之前一样,抽象层21006使用SPE 21004来验证证明请求的签名Q1912)以及验证瞬时PCR的 PSC的完整性(21914),然后使用tPCR支持来验证实际的tPCR值位于PSC中(21916)。如果之前提到的验证成功,则从此处开始,该序列与图39的序列不同。抽象层21008创建名为Ql的引证信息结构22000(22100),并将版本字段22002和固定字段22004初始化成它们各自的预定义值O2102)。接下来,将摘要字段设置成之前验证的PSC中的字段的摘要 (22106)。通过将要验证的PCR状态M04中的所有PCR Valuen字段M08 —起进行哈希运算来计算该摘要。接下来,将externalData字段22008设置成客户端临时值、服务器临时值和挑战值的结合的哈希值O2106),后两个值在21910中被传递给抽象层。在所有的数据都设置恰当的情况下,抽象层21006调用SPE 21004中的SPE_Sign函数(22108),其中,将引证信息22000的前四个字段作为要加密签名的数据,以及最后的字段(即签名22010)作为保存该签名的位置,从而使用AIK作为签名密钥。SPE_Sign函数Q2108)的行为与现有技术中针对TPMJign API详细描述的一样。在22110,将结果放入签名字段22010并返回给抽象层21006。然后,按照22112、22114和22116的顺序将该完整的引证信息结构22000 从抽象层21006传递回服务器21900。在22118,服务器21900验证传递进来的结果是否等于期望的结果,并且如果相等,则在21932中,通知应用程序21010证明已经被成功完成。应当指出的是,虽然基于前面提到的实施例描述了本发明,但是本发明明显不局限于这些实施例。下面的情况也包含在本发明中。(1)在前面提到的实施例中,验证是以与MTM规范相类似的方式执行的。然而,本发明可以应用到另一验证系统中,只要该验证系统能够使用以类似于链的形式对组件进行验证的验证方法(即,一个组件对在该一个组件之后启动的另一组件进行验证)来对组件进行验证。例如,将哈希值扩展入MTM中是可以省略的,因为该操作是专门针对TCG规范的。(2)在前面提到的实施例中,通过使用证书(RIM证书)中的哈希值来执行验证。 然而,不使用哈希值的另一验证方法也可以应用到本发明中。传统的校验和以及从所述组件中提取的其他数据(例如,从所述组件中提取的第一预定比特)可以用于执行验证。此外,证书可以用包括完整性检查值的数据组来替代。另外,验证方法不局限于检查从所述组件中提取的值是否与期望的值匹配。例如, 可以检查组件的大小,并且如果该大小大于或小于预定数量,则可以判断要对该组件进行验证。这些验证方法并不像将哈希值与它的期望值进行比较那样严格,但是它们的执行速度较快。(3)前面提到的装置中的每个装置具体地说是包括微处理器、R0M、RAM、硬盘单元、 表示单元、键盘、鼠标等的计算机系统。计算机程序存储在RAM或硬盘单元中。各个装置通过根据计算机程序的微处理器操作来实现它们的功能。这里,通过将指示计算机的指令的多个指令代码进行组合来配置计算机程序(4)可以从单个LSI (大规模集成)系统来配置构成各个装置的部分或所有组成元件。LSI系统是通过在一个芯片上集成组成单元而制造的超多功能LSI,并且具体地说是通过包括微处理器、R0M、RAM等而配置的计算机系统。计算机程序存储在RAM中。LSI系统通过根据计算机程序的微处理器操作来实现它的功能。此外,配置各个装置的组成元件的每个单元都可以被制造为独立的单个芯片或者单芯片,其包括一部分或所有单元。此外,这里使用了 LSI系统,但是由于集成度的不同,也可以使用IC、LSI、超大规模LSI、甚大规模LSI等名称。此外,电路集成的方式并不局限于LSI,采用专用电路或通用处理器的实现方式也是可用的。另外,使用现场可编程门阵列(FPGA)和可重新配置处理器也是可接受的,该 FPGA在LSI已经被制造之后是可编程的,并且在该可重新配置处理器中,LSI中的电路单元的连接和设置是可重新配置的。此外,如果通过半导体技术或者其他派生技术的进步而实现的替换LSI的集成电路技术出现了,则那个技术能够自然地用于实现组成元件的集成。可以期望应用生物技术。(5)构成各个装置的部分或所有组成元件可以被配置为IC卡,该IC卡可以附着到各个装置上以及从各个装置上拆卸,或者可以作为单独的模块。该IC卡或模块是由微处理器、ROM、RAM等配置的计算机系统。该IC卡或模块也可以包括在前面提到的超多功能LSI 中。该IC卡或模块通过根据计算机程序的微处理器操作来实现它的功能。该IC卡或模块也可以用于防止篡改。(6)本发明可以是用于使用计算机来实现之前所示方法的计算机程序,并且还可以是包括计算机程序的数字信号。此外,本发明还可以通过在计算机可读记录介质(例如,软碟、硬盘、⑶-ROM、M0、 DVD、DVD-ROM、DVD-RAM、BD (蓝光盘)以及半导体存储器)中存储计算机程序或数字信号来实现。此外,本发明还可以包括记录在这些记录介质中的数字信号。此外,本发明还可以通过经由电信线路、无线或有线通信线路、由因特网表示的网络、数据广播等传输前面提到的计算机程序来实现。本发明还可以是包括微处理器和存储器的计算机系统,其中,该存储器存储前面提到的计算机程序,微处理器根据所述计算机程序进行操作。此外,通过在前面提到的记录介质上进行记录来传递程序或数字信号,或者通过经由前面提到的网络等来传递程序或数字信号,使用另一独立的计算机系统的执行也是可能的。(7)本领域技术人员将容易意识到,在不实质上背离本发明的新颖教导和优点的情况下,对示例性实施例进行多种修改是可能的。因此,前面提到的修改和实施例的任意组合都包括在本发明的范围内。工业实用性根据这种结构,该信息处理设备管理表示多个模块中的哪个模块是活动模块的信息,并通过累积活动模块的期望的平台信息来生成累积的平台信息。因此,该信息处理设备能够生成与所有活动模块相对应的累积的平台信息。这样, 通过将累积的平台信息与要被引导的第一模块的期望的平台信息进行比较来执行验证,该信息处理设备能够在第一模块被成功加载之前对要被加载的所有模块都进行验证。此外, 通过管理多个模块中的哪个模块是活动模块,即使在一个或多个模块被终止之后,该信息处理设备仍然能够根据当前的可信边界来动态地生成累积的平台信息(对应于PCR的值)。参考标号列表
1100应用程序
1102’.1108抽象层API
1104安全引导可信边界
1106安全模式接口
1110抽象层
1112PSC数据库
1113安全引导组件
1114安全处理环境
1116物理PCR
1118次级RIC监控器
1120设备
1200OS支持
1202组件和PSC映射
1204tPCR支持
1206扩展的PSC树
权利要求
1.一种信息处理设备,包括存储单元,用于存储多个模块中的每个模块的期望的平台信息,该期望的平台信息表示在多个模块中的每个模块之前要加载哪个模块;管理单元,用于记录活动信息,该活动信息表示所述多个模块中的哪个模块是活动模块,其中活动模块是已经被加载并且尚未被终止的模块;以及加载控制单元,用于在跟随在所述活动模块之后的一个模块要被加载时(i)使用所述活动信息来确定所述多个模块中的哪个模块是活动模块,并且通过累积所述活动模块的期望的平台信息来生成累积的平台信息;( )通过将所述一个模块的期望的平台信息与所述累积的平台信息进行比较,来验证所述活动模块已经被成功加载;(iii)当所述验证成功时加载所述一个模块;以及(iv)控制所述管理单元以在所述一个模块被加载时更新所述活动信息以表示所述一个模块是活动模块。
2.根据权利要求1所述的信息处理设备,其中,所述加载控制单元在所述一个模块被终止时控制所述管理单元来更新所述活动信息以表示所述一个模块不是活动模块。
3.根据权利要求2所述的信息处理设备,还包括判断单元,用于在跟随在所述活动模块之后的一个模块要被加载时,计算所述一个模块的摘要值,并通过将期望的摘要值与所计算出的摘要值进行比较来判断所述一个模块是否有效,其中,所述加载控制单元用于在判断出所述一个模块有效并且所述验证单元执行的验证成功时,加载所述一个模块;以及当在所述活动模块中的一个已经被终止之后剩下至少一个活动模块、并且跟随在所述至少一个活动模块之后的一个模块要被加载时,控制计算单元来跳过对所述至少一个活动模块的摘要值的计算,并控制所述判断单元来跳过对所述至少一个活动模块的判断。
4.根据权利要求1所述的信息处理设备,其中,所述管理单元通过使用有向非循环图来管理表示所述活动模块的信息。
5.根据权利要求4所述的信息处理设备,其中,所述加载控制单元在所述一个模块被加载时控制所述管理单元来生成表示所述一个模块的节点和针对所述一个模块的期望的平台信息,并控制所述管理单元将所生成的节点添加到所述有向非循环图中,以使得所生成的节点依赖于与所依赖的模块相对应的节点ο
6.根据权利要求5所述的信息处理设备,其中,所述加载控制单元在所述一个模块已经被加载并被终止时,控制所述管理单元来删除表示所述一个模块的节点以及依赖于表示所述一个模块的节点的所有节点。
7.根据权利要求6所述的信息处理设备,其中,所述加载控制单元通过搜索表示所述一个模块的节点所依赖的父节点、并累积从所述有向非循环图的根到该父节点的范围内的每个节点的期望的平台信息,来生成所述累积的平台信息。
8.根据权利要求1所述的信息处理设备,其中,所述加载控制单元在预定时间段之后删除所述累积的平台信息。
9.根据权利要求7所述的信息处理设备,其中,所述加载控制单元在每次所述多个模块中的一个模块被成功加载时删除所述累积的平台信息,并在每次所述多个模块中的一个模块要被加载时生成累积的平台信息。
10.根据权利要求1所述的信息处理设备,其中,所述多个模块包括第一模块组和第二模块组,所述第一模块组和所述第二模块组中的每个模块组都包括一个或多个模块, 所述信息处理设备还包括用于存储第一累积的平台信息的寄存器单元,所述第一累积的平台信息表示所述第一模块组中的哪个模块已经被加载,并且所述存储单元还存储第一期望的平台信息,该第一期望的平台信息表示在加载所述第二模块组中的模块之前所述第一模块组中的所有模块都要被加载,以及所述加载控制单元用于针对所述第一模块组中的模块,(i)对所述模块进行验证,(ii)在所述验证成功时加载所述模块,以及(iii)在所述模块被加载时通过将所述模块的平台信息累积到所述第一累积的平台信息中来更新所述第一累积的平台信息;以及当所述第二模块组中的模块要被加载时,(i)通过将所述第一期望的平台信息与存储在所述寄存器单元中的所述第一累积的平台信息进行比较来验证所述第一模块组中的所有模块都已经被成功加载,以及其中,当所述第二模块组中的跟随在所述活动模块之后的一个模块要被加载、并且所述第一模块组中的所有模块都被验证已经被成功加载时,所述加载控制单元用于(i)使用所述活动信息来确定所述第二模块组中的哪个模块是活动模块,并通过累积所述活动模块的期望的平台信息来生成累积的平台信息;(ii)通过将所述一个模块的期望的平台信息与所述累积的平台信息进行比较,来验证所述活动模块已经被成功加载;(iii)当所述验证成功时加载所述一个模块;以及(iv)控制所述管理单元以在所述一个模块被加载时更新所述活动信息以表示所述一个模块是活动模块。
11.根据权利要求10所述的信息处理设备,其中,当所述第二模块组中的一个模块已经被终止并且所述第二模块组中的一个模块要被加载时,所述加载控制单元用于通过将所述第一期望的平台信息与所述第一累积的平台信息进行比较来验证所述第一模块组中的所有模块都已经被成功加载并且没有正在被终止,以及在所述验证成功时跳过对所述第一模块组中的模块的验证。
12.根据权利要求11所述的信息处理设备,其中,所述第一模块组包括系统层的模块,以及所述第二模块组包括应用层的模块。
13.一种用于信息处理设备的信息处理方法, 其中,所述信息处理设备包括存储单元,其存储多个模块中的每个模块的期望的平台信息,所述期望的平台信息表示在多个模块中的每个模块之前要加载哪个模块;以及管理单元,其记录活动信息,该活动信息表示所述多个模块中的哪个模块是活动模块, 其中所述活动模块是已经被加载并且尚未被终止的模块;以及所述信息处理方法包括加载控制步骤,用于在跟随在所述活动模块之后的一个模块要被加载时执行 (i)使用所述活动信息来确定所述多个模块中的哪个模块是活动模块,并且通过累积所述活动模块的期望的平台信息来生成累积的平台信息;( )通过将所述一个模块的期望的平台信息与所述累积的平台信息进行比较,来验证所述活动模块已经被成功加载;(iii)当所述验证成功时加载所述一个模块;以及(iv)控制所述管理单元以在所述一个模块被加载时更新所述活动信息以表示所述一个模块是活动模块。
14.一种记录在记录介质上的用于信息处理设备的程序, 其中,所述信息处理设备包括存储单元,其存储多个模块中的每个模块的期望的平台信息,所述期望的平台信息表示在多个模块中的每个模块之前要加载哪个模块;以及管理单元,其记录活动信息,该活动信息表示所述多个模块中的哪个模块是活动模块, 其中所述活动模块是已经被加载并且尚未被终止的模块;以及所述程序使所述信息处理设备执行加载控制步骤,用于在跟随在所述活动模块之后的一个模块要被加载时执行 (i)使用所述活动信息来确定所述多个模块中的哪个模块是活动模块,并且通过累积所述活动模块的期望的平台信息来生成累积的平台信息;( )通过将所述一个模块的期望的平台信息与所述累积的平台信息进行比较,来验证所述活动模块已经被成功加载;(iii)当所述验证成功时加载所述一个模块;以及(iv)控制所述管理单元以在所述一个模块被加载时更新所述活动信息以表示所述一个模块是活动模块。
15.一种在信息处理设备中使用的集成电路设备, 其中,所述信息处理设备包括存储单元,用于存储多个模块中的每个模块的期望的平台信息,该期望的平台信息表示在多个模块中的每个模块之前要加载哪个模块;以及管理单元,用于记录信息,该信息表示所述多个模块中的哪个模块是活动模块,其中所述活动模块是已经被加载并且尚未被终止的模块;以及所述集成电路设备包括加载控制单元,用于在跟随在所述活动模块之后的一个模块要被加载时(i)使用所述活动信息来确定所述多个模块中的哪个模块是活动模块,并且通过累积所述活动模块的期望的平台信息来生成累积的平台信息;(ii)通过将所述一个模块的期望的平台信息与所述累积的平台信息进行比较,来验证所述活动模块已经被成功加载;(iii)当所述验证成功时加载所述一个模块;以及(iv)控制所述管理单元以在所述一个模块被加载时更新所述活动信息以表示所述一个模块是活动模块。
16.根据权利要求1所述的信息处理设备, 其中,所述信息处理设备连接到服务器,以及所述加载控制单元还用于在从所述服务器接收到要求发送所述累积的平台信息的请求时(i)使用所述活动信息来确定所述多个模块中的哪个模块是活动模块,并且通过累积所述活动模块的期望的平台信息来生成累积的平台信息;( )通过将所述一个模块的期望的平台信息与所述累积的平台信息进行比较,来验证所述活动模块已经被成功加载;以及(iii)当所述验证成功时,向所述服务器发送所述累积的平台信息。
17.根据权利要求16所述的信息处理设备, 其中,所述加载控制单元还用于(i)生成表示哪条期望的平台信息被用于生成所述累积的平台信息的信息; ( )生成用于基于所述信息来验证所述累积的平台信息的签名信息;以及 (iii)发送其上附有所述签名信息的累积的平台信息。
18.根据权利要求16所述的信息处理设备,其中,所述加载控制单元在所述一个模块被终止时控制所述管理单元来更新所述活动信息以表示所述一个模块不是活动模块。
19.根据权利要求18所述的信息处理设备,还包括判断单元,用于在跟随在所述活动模块之后的一个模块要被加载时,计算所述一个模块的摘要值,并通过将期望的摘要值与所计算出的摘要值进行比较来判断所述一个模块是否有效,其中,所述加载控制单元用于在判断出所述一个模块有效并且所述验证单元执行的验证成功时,加载所述一个模块;以及当在所述活动模块中的一个已经被终止之后剩下至少一个活动模块、并且跟随在所述至少一个活动模块之后的一个模块要被加载时,控制计算单元来跳过对所述至少一个活动模块的摘要值的计算,并控制所述判断单元来跳过对所述至少一个活动模块的判断。
20.根据权利要求16所述的信息处理设备,其中,所述管理单元通过使用有向非循环图来管理表示所述活动模块的信息。
21.根据权利要求20所述的信息处理设备,其中,所述加载控制单元在所述一个模块被加载时控制所述管理单元来生成表示所述一个模块的节点和针对所述一个模块的期望的平台信息,并控制所述管理单元将所生成的节点添加到所述有向非循环图中,以使得所生成的节点依赖于与所依赖的模块相对应的节点。
22.根据权利要求21所述的信息处理设备,其中,所述加载控制单元在所述一个模块已经被加载并被终止时,控制所述管理单元来删除表示所述一个模块的节点以及依赖于表示所述一个模块的节点的所有节点。
23.根据权利要求22所述的信息处理设备,其中,所述加载控制单元通过搜索表示所述一个模块的结点所依赖的父节点、并累积从所述有向非循环图的根到该父节点的范围内的每个节点的期望的平台信息,来生成所述累积的平台信息。
24.根据权利要求16所述的信息处理设备,其中,所述加载控制单元在预定时间段之后删除所述累积的平台信息。
25.根据权利要求23所述的信息处理设备,其中,所述加载控制单元在每次所述多个模块中的一个模块被成功加载时删除所述累积的平台信息,并在每次所述多个模块中的一个模块要被加载时生成累积的平台信息。
26.根据权利要求16所述的信息处理设备,其中,所述多个模块包括第一模块组和第二模块组,所述第一模块组和所述第二模块组中的每个模块组都包括一个或多个模块, 所述信息处理设备还包括用于存储第一累积的平台信息的寄存器单元,所述第一累积的平台信息表示所述第一模块组中的哪个模块已经被加载,并且所述存储单元还存储第一期望的平台信息,该第一期望的平台信息表示在加载所述第二模块组中的模块之前所述第一模块组中的所有模块都要被加载,以及所述加载控制单元用于针对所述第一模块组中的模块,(i)对所述模块进行验证,(ii)在所述验证成功时加载所述模块,以及(iii)在所述模块被加载时通过将所述模块的平台信息累积到所述第一累积的平台信息中来更新所述第一累积的平台信息;以及当所述第二模块组中的模块要被加载时,(i)通过将所述第一期望的平台信息与存储在所述寄存器单元中的所述第一累积的平台信息进行比较来验证所述第一模块组中的所有模块都已经被成功加载,以及其中,当所述第二模块组中的跟随在所述活动模块之后的一个模块要被加载、并且所述第一模块组中的所有模块都被验证已经被成功加载时,所述加载控制单元用于(i)使用所述活动信息来确定所述第二模块组中的哪个模块是活动模块,并通过累积所述活动模块的期望的平台信息来生成累积的平台信息;( )通过将所述一个模块的期望的平台信息与所述累积的平台信息进行比较,来验证所述活动模块已经被成功加载;(iii)当所述验证成功时加载所述一个模块;以及(iv)控制所述管理单元以在所述一个模块被加载时更新所述活动信息以表示所述一个模块是活动模块。
27.根据权利要求沈所述的信息处理设备,其中,当所述第二模块组中的一个模块已经被终止并且所述第二模块组中的一个模块要被加载时,所述加载控制单元用于通过将所述第一期望的平台信息与所述第一累积的平台信息进行比较来验证所述第一模块组中的所有模块都已经被成功加载并且没有正在被终止;以及在所述验证成功时跳过对所述第一模块组中的模块的验证。
28.根据权利要求27所述的信息处理设备,其中,所述第一模块组包括系统层的模块,以及所述第二模块组包括应用层的模块。
29.根据权利要求13所述的信息处理方法,还包括接收步骤,用于从服务器接收要求发送所述累积的平台信息的请求;以及发送步骤,用于当所述接收单元接收到所述请求时执行(i)使用所述活动信息来确定所述多个模块中的哪个模块是活动模块,并且通过累积所述活动模块的期望的平台信息来生成累积的平台信息;( )通过将所述一个模块的期望的平台信息与所述累积的平台信息进行比较,来验证所述活动模块已经被成功加载;以及(iii)当所述验证成功时,向所述服务器发送所述累积的平台信息。
30.根据权利要求14所述的程序,还使所述信息处理设备执行接收步骤,用于从服务器接收要求发送所述累积的平台信息的请求;以及发送步骤,用于当所述接收单元接收到所述请求时执行(i)使用所述活动信息来确定所述多个模块中的哪个模块是活动模块,并且通过累积所述活动模块的期望的平台信息来生成累积的平台信息;( )通过将所述一个模块的期望的平台信息与所述累积的平台信息进行比较,来验证所述活动模块已经被成功加载;以及(iii)当所述验证成功时,向所述服务器发送所述累积的平台信息。
31.根据权利要求15所述的集成电路设备,还包括接收单元,用于从服务器接收要求发送所述累积的平台信息的请求;以及发送单元,用于当所述接收单元接收到所述请求时(i)使用所述活动信息来确定所述多个模块中的哪个模块是活动模块,并且通过累积所述活动模块的期望的平台信息来生成累积的平台信息;( )通过将所述一个模块的期望的平台信息与所述累积的平台信息进行比较,来验证所述活动模块已经被成功加载;以及(iii)当所述验证成功时,向所述服务器发送所述累积的平台信息。
全文摘要
一种用于基于灵活地使用描述需要的系统状态的证书来允许在具有安全处理器和可信计算的设备的应用空间中运行的程序的方法。信息处理设备包括PSC数据库(1112)、组件和PSC映射(1202)以及OS支持(1200)。
文档编号G06F21/00GK102246179SQ20098013549
公开日2011年11月16日 申请日期2009年10月9日 优先权日2008年10月10日
发明者K·A·尼克尔森, 伊藤孝幸, 松岛秀树, 芳贺智之, 高山久 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1