专利名称:用于可信数据的方法、设备和数据结构的制作方法
技术领域:
本发明涉及可信任的数据,其意义在于为担保该数据而准备了至 少一个可信实体。它特别地涉及了包括软件的数据(比如数据结构或可执行指令),并且在实施例中涉及了计算设备上软件的升级或替换。
背景技术:
计算实体之间交互的一个重要考虑是信任一一外来计算实体是 以可靠和可预测的方式行动,还是将(或已经)受到破坏。已经由形成可信计算小组(TCG)的公司开发了包含至少在逻辑上免受破坏的 组件的可信系统——这个团体开发了该领域中的规范,例如在"可信 计算平台——上下文中的TCPA技术",Siani Pearson于^03年编著, Prentice Hall PTR中所讨-论的。可信系统的隐含可信组件能够测量可信 系统并且接着能够将这些测量以完整性度量的形式来提供,以供给希 望与可信系统交互的适当实体。接收实体接着能够根据所测量的完整性度量与已知或期望的值的 一 致性来确定可信系统按照所期望的来操作。完整性度量将通常包括对可信系统使用的软件的测量。这些测量 可以通常相结合地用于指明可信系统的状态或可信状态。在可信计算 小组规范中,教导了用于将数据"密封"到特殊平台状态的机制一一 这就导致将密封数据加密为不可测的"不透明斑点",其包含至少部 分根据平台上的软件的测量而导出的值。该测量包括软件的摘要,因 为摘要值将在对软件的任何修改时改变。如果可信组件测量当前平台 状态并发现它由与不透明斑点中相同的值表示,则可以只恢复该密封 数据。将会理解,软件中的任何改变将引起多个问题,既对于这个特定 过程且更一般的是软件测量被当作为计算机系统状态的表示的情 况一一无论软件的变化有多小,测量的有效形式(比如摘要)将给出 不同的值。在以上"密封"的例子中,这意味着软件的变化——其可
能例如对于改进功能或移除错误和弱点是完全期望的 一 一 具有阻止 了对密封数据进行连续访问的缺点。而这只是一个示例性问题,但 是一 一在新的或替换软件中具有与原始软件中相同的信任是存在一 般性困难的,这种 一般性困难在基于该信任的维护功能中具有伴随的 实践困难。所期望的是找到 一 种方式来更新或改变被信任用来提供信任中 以及软件功能中连续性的软件。发明内容在一个方面,本发明提供一种数据结构,包括数据结构类型的标 识和数据结构类型的两个或以上的实例彼此一样值得信任的证据。
现在将仅仅通过举例的方式并参考附图来描述本发明的优选实施例,所述附图中图l是适用于本发明实施例的示例现有技术计算机平台的图解; 图2指示在适用于本发明实施例的现有技术可信计算机平台的母板上存在的功能元件;图3指示适用于本发明实施例的图2的可信计算机平台的可信设备的功能元件;图4说明将值扩展到适用于本发明实施例的图2的可信计算机平台的平台配置寄存器中的过程;图5说明根据本发明的实施例的记录完整性度量的过程;图6说明根据本发明的实施例的完整性度量的两个信任等效集合以及第二集合的实施例;图7说明根据本发明的实施例的担保新的或替换软件的声明;图8示出根据本发明的实施例的在图5中所示类型的声明的链接列表;图9说明根据本发明的实施例的在图8中所示类型的声明的保密 性增强版本;图10说明根据本发明的实施例的信任等效的两个完整性度量集 合的配置,以及PCR值的合成集合;
图11示意性说明根据本发明实施例的虚拟可信平台从 一 个物理可信平台到另一个物理可信平台的迁移;和图12说明根据本发明实施例的用于将虚拟可信平台从一个物理 可信平台迁移到另 一个物理可信平台的方法。
具体实施方式
在描述本发明的实施例之前,将结合图1到4来描述一种一般适用 于执行本发明的实施例的可信计算平台。对可信计算平台的该说明描 述了其构造和操作的某些基本元素。在本文中,"用户"可以是远程 用户,比如远程计算实体。可信计算平台还在申请人于2000年2月15 曰提交的题目为"可信计算平台"的国际专利申请No. PCT/GB00/00528中描述,其内容合并在此作为参考。技术人员将理 解,本发明对于其操作不依赖于精确按如下所描述的来使用可信计算 平台本发明的实施例是针对这种可信计算平台来描述的,但是技术 人员将理解,本发明的这些方面可以应用于不同类型的计算机平台, 这些计算机平台不需应用可信计算小组的可信计算平台功能的所有 方面。这里所描述的这种可信计算平台是可信设备合并到其中的计算 平台,可信设备的功能是将平台的身份(identity )与可靠测量的数据 绑定,可靠测量的数据提供平台的一个或多个完整性度量。将该身份 和完整性度量与由可信方(TP)提供的期望值进行比较,可信方被准 备用来担保平台的值得信任度。如果存在匹配,则暗示了至少一部分 平台正确地操作,这取决于完整性度量的范围。请求可信设备提供其身份和一个或多个完整性度量来这样做。i可选 地,如果可信设备本身不能验证平台的正确操作,则可信设备将拒绝 提供身份的证据。)用户接收身份的证据和一个或多个身份度量,并 且将它们与认为是真实的值比较。这些适当的值由TP或用户所信任的 另 一个实体来提供。如果由可信设备报告的数据与由TP所提供的数据 相同,则用户相信该平台。这是因为用户相信该实体。该实体相信平 台,因为它先前已经确认了身份,并确定了平台的适当完整性度量。 一旦用户已经证实了平台的可信操作,则他与平台交换其它数 据。对于本地用户,该交换可能是通过与一些在平台上运行的软件应 用进行交互。对于远程用户,该交换可能涉及安全事务。在任一情况 下,交换的数据由可信设备"签名"。那么用户可以对数据正在与行 为受信任的平台进行交换具有更大的置信度。所交换的数据可以是与 一些或所有在计算机平台上运行的软件有关的信息。现有的可信计算 小组的可信计算机平台适于提供平台上软件的摘要——它们可以与 已知软件的已知摘要的公共可用列表相比较。但是,这确实提供了在 可信计算平台上运行的特定软件的标识 一 一 这对于保密场所的可信计算平台的所有者可能是不期望的。如将在下面所述的,本发明的一 些方面可用于改善可信计算平台拥有者的保密位置的方面。可信设备使用密码进程,但是不需要向那些密码进程提供外部接 口 。可信设备应当在逻辑上不受其它实体的影响一一包括其本身也是 平台一部分的平台其它部分。并且,最期望的实施方式是使可信设备了i本上对未授权修改免疫的环境U卩,在:理丄和逻辑上、都得到; 护)。由于防篡改是不可能的,所以最好的近似方案是抗篡改或检测 篡改的可信设备。因此,该可信设备优选地由抗篡改的一个物理组件这些技^包:用于抗篡改的方法(比如丄当封装可信设备)、用于检测篡改的方法(比如在可信设备外壳中检测超出规定电压、x射线或 丢失物理完整性)、以及用于当检测到篡改时消除数据的方法。 可信平台io是在图1的图中说明的。计算机平台io看上去完全是传统的——它关联有键盘14、鼠标16和可视显示单元(VDU) 18的标 准特征,这些特征提供了平台的物理"用户接口"。如图2所示,可信计算平台10的母板20包括(除了其它标准组件) 主处理器21、主存储器22、可信设备24、数据总线26和相应的控制线 27和28、包含平台10的BISO程序的BIOS存储器29和输入/输出(10) 设备23, 10设备23控制母板的组件和键盘14、鼠标16以及VDU18之间 的交互。主存储器22通常是随机访问存储器(RAM)。在操作中,平 台10从硬盘(未示出)将比如Window XPTM的操作系统加载到RAM 中。此外,在操作中,平台10从硬盘(未示出)将可由平台10执行的 进程或应用加载到RAM中。 通常,在个人计算机中,BIOS程序位于专门的保留存储区域,系 统存储器的第一千兆字节的上面64K(地址FO)①①h到FFFFh)中,并 且主处理器被布置为根据工业一般标准来首先查看该存储单元。该平 台和传统平台的显著差异在于,在重置之后,主处理器初始地受可信 设备控制,其接着将控制移交给特定于平台的BIOS程序,该程序转而 按常规初始化所有输入/输出设备。在已经执行了BIOS程序之后,控 制按常规由BIOS程序移交给操作系统程序,比如WindowXP (TM), 操作系统程序通常从硬盘驱动器(未示出)加载到主存储器212中。 主处理器初始地由可信设备控制,因为它需要对将在可信计算平台上 执行的第一测量设置信任。该第一测量的测量代理被称为测量的信任 根(RTM)并通常至少被部分信任,因为其起源被信任。在一个实际 有用的实施方式中,RTM是平台,而主处理器在可信设备的控制下。 如下简要所述的,RTM的 一个作用是在其它测量代理被使用且依赖其 测量之前来测量这些测量代理。RTM是信任链的基础。注意到,RTM 和后续测量代理不需要验证后续的测量代理,而仅仅需要在它们执行 之前测量并记录它们。这被称为"鉴权的引导过程"。有效的测量代 理可以通过将测量代理的摘要与有效测量代理的摘要列表进行比较 来识别。未列出的测量代理将不会被识别,并且由它们以及后续测量 代理作出的测量是不可信的。可信设备24包括多个块,如图3所示。在系统重置之后,可信设 备24执行鉴权引导过程以确保平台10的操作状态以安全的方式被记 录。在鉴权引导过程期间,可信设备24获取计算平台10的完整性度 量。可信设备24还经由加密/解密和签名/验证来执行安全数据传送, 和例如在它和智能卡之间的鉴权。可信设备24还可安全地执行各种安 全控制策略,比如锁定用户接口。在特殊优选的方案中,计算平台的 显示驱动器位于可信设备24中,其结果是本地用户可信任由可信设备 24向该显示器提供的数据显示一一这还在申请人于2000年5月25曰提 交的题目为"用于提供值得信任的用户接口的系统"的国际专利申请 No.PCT/GB00/02005中描述,其内容合并在此作为参考。具体地,本实施例中的可信设备包括控制器30,其被编程用于 控制可信设备24的全部操作,并与可信设备24上的其它功能并与母板 20上的其它设备交互;测量功能31,用于经由直接测量或可替换地间
接地经由要在平台的主处理器上执行的可执行指令而从平台1 o获取 第一完整性度量;密码功能32,用于签名、加密或解密规定的数据; 鉴权功能33,用于鉴权智能卡;和接口电路34,具有用于将可信设备 24相应连接到母板20的数据总线26 、控制线27和地址线28的适当端口 (36、 37和38)。可信设备24中的每个块可以访问(通常经由控制器 30 )可信设备24的适当易失性存储区域4和/或非易失性存储区域3 。此 外,以已知的方式将可信设备24设计为抗篡改。因为性能的原因,可信设备24可被实现为特定用途集成电路 (ASIC)。但是,对于灵活性,可信设备24优选的是适当编程的微控 制器。ASIC和微控制器都在微电子领域中是已知的,并且在这里不作 进一步详细的描述。在可信设备2 4的非易失性存储器3中存储的 一 个数据项是证书 350。证书350至少包含可信设备24的公共密钥351和由可信方(TP) 测量的平台完整性度量的鉴权值352。证书350在被存储到可信设备24 之前由TP使用TP的私有密钥来签名。在之后的通信会话中,平台IO 的用户可通过验证TP在证书上的签名来推出公共密钥属于可信设 备。并且,平台10的用户可通过将所获取的完整性度量与真实的完整 性度量进行比较来验证平台10的完整性。如果存在匹配,则用户可以 相信平台10还没有被破坏。TP—般可用公共密钥的知识能对证书350 进行简单验证。非易失性存储器35还包含身份(ID)标签353。 ID标 签353是传统的ID标签,例如序列号,其在一些上下文中是唯一的。ID 标签353—般用于与可信设备24有关的数据的索引和标记,但是其本 身不足以证明平台10的身份在可信条件下。可信设备24装备有用于可靠测量或获取与其关联的计算平台10 的完整性度量的至少一个方法。在本实施例中,在涉及在BIOS存储器 中生成BIOS指令的摘要的进程中由测量功能31获取存储器第一完整 性度量。该所获取的完整性度量,如果如上述那样被验证,则为平台 IO的潜在用户给出平台IO还没有在硬件、或BIOS程序级被破坏的高级 别置信度。其它已知过程,例如病毒检查,将通常在适当的位置检查 操作系统和应用程序代码没有被破坏。测量功能31已经访问非易失性存储器3,用于存储可信设备24 的散列程序354和私有密钥355,和非易失性存储器4,用于存储所获
取的完整性度量,可信设备具有受限的存储器,但它期望存储与大量完整性度量测量有关的信息。这是通过使用平台配置寄存器(PCR) 8a-8n在可信计算平台中完成的,如可信计算小组所述。可信设备具有 多个固定大小的PCR (与摘要的大小相同) 一一在初始化平台时,它 们被设置为固定初始值。完整性度量接着通过图4中所示的过程被"扩 展"到PCR中。PCR8i值与输入401级联403,输入401是要扩展到PCR 中的完整性度量的值。接着将该级联散列402以形成新160的比特值。 该散列被反馈到PCR以形成其新的值。除了完整性度量扩展到PCR之 外,为了提供所执行测量的清晰历史,测量过程还可记录在传统日志 文件中(其可以简单地位于计算机平台的主存储器中)。但是为了信 任目的,将要被依赖的是PCR值且不是软件日志。清楚地,存在多个不同的方式,其中可以根据所要求信任的范围 来计算初始的完整性度量。BIOS程序的完整性的测量提供了对平台的 基本处理环境的完整性的基础检查。完整性度量应当有这么一种形 式,使得其能够推出引导过程的有效性一一完整性度量的值可以用于 验证是否使用正确的BIOS来引导平台。可选地,BIOS内的各个功能 块可以具有它们自己的摘要值,并且总体BIOS摘要是这些各个摘要的 摘要。这使得一种策略能够声明BIOS操作的哪些部分对于预期的目的 是关键的,并且哪些是无关的(在该情况下各个摘要必须以如此方式 存储使得该策略下操作的有效性被证实)。其它完整性检查可涉及证实各种其它附着到平台的设备、组件或 装置存在且按照正确的工作顺序。在一个例子中,与SCSI控制器关联 的BIOS程序可以被验证以确保与外围设备的通信可以被信任。在另一 个例子中,平台上的其它设备,例如存储设备或协处理器的完整性可 以通过制定固定询问/响应交互来验证,以确保一致性结果。如上所 指,大量的完整性度量可以通过测量由RTM直接或间接测量的代理来 收集,并且这些完整性度量扩展到可信设备24的PCR中。这些完整性 度量的 一些_一许多将与可信平台的软件状态有关。优选地,BIOS引导过程包括验证引导过程本身完整性的机制。这 种机制例如已经从Intel的草案 "Wired for Management baseline specification v 2.0 - BOOT 4在由可信实体提供的证书中的值比较,可信实体的公共密钥对于BIOS 是已知的。如果所计算的值匹配来自证书的所期望值,则接着加载软 件/固件,并且已经使用可信实体的公共密钥来证明证书有效。否则, 调用适当的异常处理例程。可选地,在接收了计算的BIOS摘要后,可 信设备24可以检查证书中BIOS摘要的正确值并且如果计算的摘要不 匹配该正确值,则不把控制传递到BIOS——可调用适当的异常处理例 程。简要地描述可信计算平台制造的工艺和第三方的验证,但是其不 属于本发明的基本意义而在上面所标识的"可信计算平台一_上下文 中的TCPA^支术"中详细讨-论。在第一个实例(其可能处于制造中),为可信平台担保的TP将检 查平台的类型以判断是否为它担保。该TP将签署一 个与可信设备身份 和检查结果有关的证书——这接着被写到可信设备。在平台操作期间的某之后的点,例如当它被接通或复位时,可信 设备24获取并存储平台的完整性度量。当用户希望与平台通信时,他 使用询问/响应例程来询问可信设备24(平台的操作系统或适当的软件 应用可设置为识别该询问并且以适当方式通常经由BIO S类型的调用 将它传递给可信设备24)。可信设备24接收询问并基于测量的一个或 多个完整性度量来创建适当的响应一一这可具有证书和签名。这提供 了充足的信息以允许用户验证。由PCR保存的值可用作为可信平台状态的指示。不同的PCR可以 分配有特定目的(这例如是在可信计算组规范中完成的)。可要求可 信设备为一些或所有的其PCR提供值(实际中是这些值的摘要一一通 过TPA^Quote命令)并签名这些值。如上所述,数据(通常是密钥或 口令)可以针对一些或所有PCR的值的摘要被密封(通过TPM—Seal 命令)到不透明斑点中。这将确保如果平台在PCR所表示的(可信) 状态下,则只使用所密封的数据。对应的TPM一Unseal命令对PCR的当 前值执行相同的摘要。如果新的摘要与不透明斑点中的摘要不相同, 那么用户不能通过TPM—Unseal命令恢复数据。如果导出了PCR值的任 何测量与已经变化的平台上的软件有关,则对应的PCR将具有不同的 值一 一传统可信平台将因此不能恢复密封的数据。现在将参考在有所修改的情况下应用如上所述的可信计算平台 结构的实施例来描述本发明的各方面。提供等效功能和可信属性的新 的或更新软件的方法将被首先描述,连同还描述了用于允许可信计算 平台指明其软件功能并验证其可信状态而不需要显露它所使用的特 定软件的机制。示例方法被描述为用于展示在用在功能上和信任上等效的软件来替换所述软件之前和之后的PCR值可以被示出为等效,并 且使用该方法来解决诸如上面对于软件状态密封数据中所述的问题。注意到,在现有可信计算平台布置中,实体实际上将它们在可信 计算平台中的置信度以与在平台中安装的软件有关的签名声明为基础。发明人已经理解,可信平台可以提供软件要被信任的声明验证证 据,而不是提供实际的软件测量。这具有若干优点。如果可信设备不 再保存软件测量的值,则在物理上可信设备不可能报告软件须'J量的 值。如果验证处理包括两个软件测量的值的信任等效性的证据(并且 声明由可信测量实体做出),则在以规定方式改变软件后,可信设备 将包含可用来(如下在示例布置中所述的)重新能够访问密封纯文本 数据的信息。积极结果得之于根据担保平台中的软件的声明所进行的工作,而 不是平台中的实际软件。如果担保现有软件的一方准备担保替换软件 就像现有软件一样可接受,则为此目的的适当声明的用途可如此被 使用使得平台可以重新能够在安装这种替换软件之后访问密封的纯 文本数据。在实践中,可信平台的拥有者必须选择他期望为他的平台 担保的各方。拥有者可以选择任何方或者他们的集合,只要该一或多 方对于与平台交互的那些人具有可信性。拥有者可以改变各方或他们的集合,只要那些方愿意确认彼此为可信对等体。这使商业公司和非 营利组织都担保相同的可信平台。图5说明了根据本发明的实施例进行测量并将它们记录在 TPM507中的过程中的显著步骤。在步骤5.1,为测量的信任根(RTM) 或测量代理501做出数字对象502的摘要。在步骤5.2, RTM或测量代理 501读取与数字对象502关联的验证声明503。在步骤5.3, RTM或测量 代理501写出描述摘要对象502及其验证声明503的日志5(M。在步骤 5.4,RTM或测量代理501验证所述验证声明503并将任何故障记录在与 PCR506关联的标记505中。在步骤5.5, RTM或测量代理501将验证处 理503的明确指示记录在PCR506中。图6说明完整性度量的两个集合601, 602 (第二个表示与第一个 表示的软件状态信任等效的软件状态),加上第三个集合603,其是 在本发明的该实施例中所使用的第二集合602的版本。完整性度量的 第一集合601由三个完整性度量组成,标记为A、 B和C。完整性度量 的第二集合602也由三个完整性度量组成,标记为A、 B1和C。第一集 合601中的度量A和C与第二集合602中的度量A和C相同。如果由完整 性度量B1表示的软件与完整性度量B表示的软件信任等效,则第二集 合602与第一集合601信任等效。完整性度量的第三集合603说明了完 整性度量A、 B、 Bl、 C,根据本发明的本实施例,它们必须被记录以 便允许由软件A、 Bl、 C生成的平台状态被识别为与由软件A、 B、 C 生成的平台状态信任等效。如果一方想要担保特定的程序,则它产生签名的声明。如果该程 序不是升级或替换,则该方创建新的声明,或者如果该程序是升级或 替换,则在声明列表中创建下一个条目。声明可描述一个或多个程 序。如果声明描述一个以上的程序,则暗示了所有程序被签名方当作为对期望的任务功能相同且同样值得信任。在图7中示出声明的示例形式。声明701具有结构 [programDigestsN, statementID一N, prevStatementDigestN,nextPubKeyN] 和具有辅助结构732 [pubKeyN] (734)和 [signatureValueN] (736)。字段pubKey和声明ID足以明确识别在声明中 暗示的验证处理。下面将描述声明701的元素。o programDigests710是由声明担保的程序摘要。这不需要是单个程 序的摘要一一 它可能由包含由声明担保的 一 个以上程序的摘要 的结构组成。它甚至可能是包含由声明担保的一个以上程序的摘 要的结构摘要。清楚地,在这样的实施方式中,实际摘要还必须 对于平台可用。如下所述,可能对于多个程序的用户存在保密性 优点,称为programDigests 。o statementlD720是一个标签,使得能够识别声明的目的的描述。该 描述可包括程序的描述、程序的预期使用、程序的效果、关于程 序的另一信息、和随机数或其它数。statementID用作为从用相同 密钥签名的任何其它数据中区分声明。
o如果程序不是另一程序的升级或替换,则prevStatementDigest730 是NULL,并且PubKey是应当用于验证signatureValue的密钥。但 是,如果程序是现有程序的升级或替换,则prevStatementDigest 是该先前声明的摘要,并且来自该先前声明的nextPubKey740是应 当用于验证signature Value的密钥。换句话说, 一 个声明中的 nextPubKey是必须在下一声明中使用的PubKey。 可以看出,nextPubKey和它们之间的prevStatement允许有关的声 明形成向后和向前链接的列表——这样的连接由图8说明。使用与 pubKeyO 734.0, nextPubKeyO 740.0, nextPubKeyl740.1, …. nextPubKeyN 740.N对应的私有密钥,借助签名值来向前链接这样的声 明801 、 802和803的列表。借助prevStatementDigestl 730.1 ,..... prevStatementDigestN 730.N来向后4连4妄歹'J表。通过包4舌programDigests 710.0 710.1 710.N的数据借助签名值736.0 736.1 736.N来将列表的每 个成员链接到 一 个或多个程序。在图8所示的一种方法中,声明的列表开始于跟有[statementID一O720.0, programDigestsO 710,0, NULL 730.0, nextPubKeyO 740.0]和 [signatureValueO 736.0]的pubKeyO 734,0,其是用与pubKeyO 734.0对应 的私有密钥签名[statementlD—0 720.0, programDigestsO 710.0, NULL730.1, nextPubKeyO 740.0]的结果。歹l)表以[statementID—1 720.1, programDigestsl 710.1, prevStatementDigestl 730.1, nextPubKeyl 740.1]和[signatureValuel 736,1]继续,其是用与nextPubKeyO 740.0对应 的私有密钥签名[statementID—1 720.1, programDigestsl 710.1, prevStatementDigestl 730.1, nextPubKeyl 740.1]的结果。列表以相同的 方式继续。图8中的箭头说明了 nextPubKeyO 740.0与pubKey 1 734.1相同, nextPubKeyl 740.1与publCeyN 734.N相同,依此类推。发布声明方应当理解,列表中的声明共同具有功能等效性和信任 的普通证据,但是在其它方面,声明可以不同。例如,与statementN 关联的程序不必须得是与statementM关联的程序,因此 programDigestsN不必与programDigestsM相同。这意口未着,在歹'J表的开 始处与声明关联的程序可以与在列表的任何中间点或列表的结束处 的声明关联的程序不同(或相同)。类似地,列表中的PubKeyN可以 或可以不与nextPubKeyN相同。因此,用于马全i正signatureValue0的密钥 可以或可以不与用于验证signatureValueN的密钥相同,无论N是列表 中的中间声明或列表中的最后声明。因此, 一方可以相隔一定距离改 变它的签名密钥(根据推荐的安全措施)或可以将信任交接给具有不 同签名密钥的另一方。在该方法的修改中,PubKey和nextPubKey可以是密钥的摘要或包 含一个或多个密钥的结构的摘要。清楚地,在这样的实施方式中,实 际的公共密钥必须还对于平台可用。在这样的情况下,与该结构中的 任何公共密钥摘要对应的任何私有密钥可以用于签名声明,并且多个 方可以同时担保平台值得信任。应当注意,对于给定的软件类型,需要一致地使用该类型的声明 或根本不使用它们(并相反例如使用传统TCG方法)。如果声明将要 用于 一 种软件类型,则要由平台担保的软件类型的第 一 实例需要具有 声明。如所述的,从传统TCG方法切换到具有声明的升级不是可行的 方法。现在将描述当被要求识别其软件时允许可信平台实现私有保密 性测量的机制。这要求发出声明的一方实际上发出两个声明,如上面 描述的 一 个以及省略了 programDigests字段的类似辅助声明。图9说明 了辅助声明910 , 它由字段pubKey 734, StatementID 720, prevStatementDigest 730, nextPubKey 740, signatureValue 736组成并缺 少programDigests字段710。这些辅助声明而不是先前描述的主声明可 能被返回到从可信设备接收完整性度量的询问器。这些辅助声明能够 防止识别安装在平台中的实际程序。如果主声明中的programDigests 字段仅仅描述了一个程序,则它当然识别该程序由平台使用——因此 如果辅助声明应当在询问响应中使用时,就存在清楚的保密性优点。 即使programDigests字段描述了一些程序,它可被认为显露太多有关 平台的信息,并且如果要求私有性,则辅助声明应当在询问响应中使 用。只有当programDigests字段描述许多程序时,询问响应中的主声 明的使用才与私有性明显无关。用于验证主声明的公共密钥必须还用 于马全证辅助声明,并且相同的statementID应当在两个声明中出现。这 些约束对于提供主声明和辅助声明之间的可验证连接是必须的。自然 地,主声明的签名值不同于辅助声明的签名值。
现在描述与声明关联的新的或替代软件的验证,这将会是验证处 理的记录。该处理的本质是用 一个或多个扩展操作来代替单个扩展操 作(对于平台的一个方面),每个扩展操作描述与平台的这方面有关 的声明。对于要执行和记录的验证,随后要求了可信测量代理执行声明 验证处理,并且可信-验证实体必须'睑证程序、必须^验证声明、且必须 验证声明的列表充分链接。测量实体被信任是因为与实体有关的证明 或由可信测量代理进行的实体测量。为了验证程序,测量实体创建程序的摘要并将该摘要与声明中 (来自字段programDigests )的信息比较。测量实体必须记录该处理是 否成功的指示。
一 个实施方式是在可信设备中记录为真或假的 verifiedProgram标记。如果程序与链接列表关联,则该比较应当只使 用列表中最后的声明来完成。(列表中先前的声明只提供程序演化的历史和程序的证明)。为了创建声明的可验证记录,测量实体必须在可信设备中记录至少声明的签名是否被成功验证。 一个实施方式是在可信设备中记录设 置为真或々支的verifiedStatement才示i己。为了创建声明的验证的可审计记录,测量代理必须记录用于冲丸行验证的技术。 一个实施方式是在可信设备中记录用于验证声明上的签 名的7^共密钥(pubKey或nextPubKey)。如果可4亍,测量代理还-验i正 用于验证声明上的签名的该公共密钥是现存的(未被撤销),但这可 能超过了大多数测量代理的能力。如果还可能确定此,则测量实体总 是在公共密钥不是现存的时将verifiedStatement标记设置为假。如果与公共密钥对应的私有密钥只用于签名单个类型的声明,则 不要求与签名的意图有关的声明。否则,指明签名属于特定声明的信 息必须用公共密钥来记录。 一 个实施方式是在可信设备中记录 StatementID。为了区分单个声明或列表的开始, 一个实施方式是如果声明不是 用另 一 个声明的nextPubKey验证的或者如果声明的 prevStatementDigest不是前 一 个声明的摘要值,则用标记 startStatement==TRUE来对声明的验证力口标签,否贝'J用标记 startStatement二二FALSE来对声明的验证力卩标签。
链接列表的任何成员必须向前和向后^皮-睑证。如果链^妻测试通过,则声明用标记verifiedList 二二TRUE来加标签。否则,声明用标记 verifiedList 二--FALSE来加标签。为了创建被验证声明的列表的完整记录,测量实体必须在可信设 备中记录列表中所有声明的实质特性,并且列表中的所有声明是否通 过了它们的验证测试。优选实施方式是在可信设备中记录列表中的所 有声明,同时在可信设备中单独记录列表中每个声明上的验证测试结 果。按照该方法,在访问声明之后,测量实体可以在可信设备中记录 至少数据结构STATEMENT—VERIFICATION,其至少包含(1)用于 验证声明的公共密钥,(2 ) statementID,如果存在的话。对于每个 PCR,可信设备维护upgradesPermitted标记,该标记在PCR初始化时为 真但是每当平台遇到与该PCR关联的且verifiedProgran^二FALSE,或 verifiedStatement==FALSE,或verifiedList二^FALSE的声明时被复位 为假。如果upgradesPermitted是假,则关联的PCR的信息内容不可靠。 如果upgradesPermitted是假,则可信设备(TPM )必须拒绝执行在校 正该PCR值时预测的安全操作,比如对该PCR的密封数据(例如,创 建TCG的"digestAtCreation,,参数)、开封数据(例如,检查TCG的 "digestAtRelease,,参数)。如果upgradesPermitted是假,则TPM可拒 绝净艮告(例如使用TPM—quote )该PCM值,或可替换地可才艮告 upgradesPermitted的{直以及PCR值。描述一种用于用声明的记录或声明列表的记录来代替传统TCG 完整性度量的算法o 测量实体(在加载程序之前)初始地通过创建程序的摘要而遵循 通常的TCG过程。测量实体接着确定一个或多个声明是否与该程 序关联。o 如果没有声明与程序关联,则测量实体通过利用TPM一Extend将程 序的摘要扩展到可信设备而遵循现有的TCG过程。o 如果声明与程序关联,则测量实体必须将声明解析成单个的声明 和声明链。当单个声明被识别时,适当的标记和 STATEMENT—VERIFICATION必须记录在可信设备中(但注意 到,适当的verifiedList没有被记录并且甚至不需要被计算)。当链的开始或中间链接#皮识别时,适当的STATEMENT—VERIFICATION和标记记录在可信设备中(但注意 到,适当的verifiedProgram没有被记录并且甚至不需要^皮计算)。 当链的结束被识别时,适当的STATEMENT—VERIFICATION结构 和标记记录在可信设备中。在解析声明的同时使用的一些算法 是(a)总是计算verifiedStatement; ( b )如果存在先前和/或随 后的声明则计算verifiedList; ( c )如果(不存在随后声明)或如 果(随后声明具有startStatement==TRUE ) 则计算 verifiedProgram;( d )总是记录STATEMENT—VERIFICATION; (e )每当verifiedProgram==FALSE,或verifiedStatement::FALSE, 或verifiedList==FALSEEIt, 复J立适当的upgradesPermitted才示i己。 上面描述的验证处理捕获了证实升级或替换软件与早先软件信 任等效而所需要的信息。与报告询问时的软件状态关联的保密顾虑因 此可通过使用描述许多程序的声明或通过使用辅助声明而改进。要求 进一步的步骤来解决访问对于早先平台状态以及早先软件密封的不 透明斑点中的数据的问题。如下将所指出的,将可能重新填封这些不 透明斑点到与新软件状态关联的PCR值。这要求多个动作,有效地相 当于从密封了不透明斑点的早先PCR值合法地导出之后的PCR值的证 据。要求四种类型的动作证明可从另一个PCR值导出一个PCR值; 证明一个完整性度量是另一个完整性度量的替换(证明两个完整性度 量被链接);证明由测量的摘要组成的PCR值的等效性;和证明由多 个PCR值构成的复合PCR值的等效性。每个动作建立在先前的动作之 上,并且在下面依次在示例实施例中描述每个动作,提出补充现有可 信计算组系统的新功能。在用第二复合PCR值替换不透明密封斑点中 的第一复合PCR值的示例实施例中描述这些功能的使用,第二复合 PCR值与第 一复合PCR值信任等效。应当注意,在可信计算组技术中,PCR值的集合被描述为 TPM—COMPOSITE—HASH 值。 可 信 计 算 组 将 TPM—COMPOSITE—HASH值定义为TPM—PCR—COMPOSITE结构的摘要,该结构一皮定义为typedef struct tdTPM—PCR—COMPOSITE TPM PCR—SELECTION select;UINT32 valueSize;[size一is(valueSize)] TPM_PCRVALUE pcrValue[];} TPM—PCR—COMPOSITE; 这意味着,TPM—PCR—COMPOSITE结构(实质上)是跟有四个字 节值的、跟有PCR值链接数的TPM—PCR—SELECTION 。 TPM—COMPOSITE—HASH值是在散列算法中串行散列那些结构的结 果。当描述完整性度量和PCR值时,随后在该说明书中使用特定命名 法。大写字母表示完整性度量值并且跟有代字符号"~"的大写字母 表示PCR值,其中大写字母是表示要扩展到PCR中的最近完整性度量 值。因此,PCR状态A 意思是要扩展到PCR中的最近完整性度量具有 值A。用完整性度量值B扩展A 的PCR值的操作被写成X(A ,B),得出 PCR值B 。必须理解,由[字母] 表示的PCR值是多值的。实际的PCR 值取决于PCR的先前历史。贯穿该示例实施例使用的方法用于管理程序以引导可信设备 (TPM)通过一系列步骤,每个步骤创建作为已经验证了可信设备的 断言证据的数据。(存在可替换的方式来通过签名声明的可信设备实 现涉及检查的相同目标,但是所描述的方法被选择为与现有可信计算 组方法相一致。)可信设备可以随后识别出它创建了这种证据。这些 识别方法对于本领域技术人员是已知的,并且在现有的可信计算组技 术中使用。该识别使TPM能够相信当数据被重新加载到TPM时在数据 中宣称的断言。在一个实施方式中,可信设备要求证明两个PCR值集合是信任等 效的新能力。随后的原型可信设备命令集合说明了概念 TPM upgrade—extend(A ,B)产生 一个PCR值可以从另 一个PCR值 导出的证据。该命令产生输出数据[Uextend, A~, B ,B]作为PCR 值B 可以从PCR值A 导出并且最近扩展的完整性度量具有值B的 证据。为了产生该证据,TPM加载具有值A 的临时PCR并使用完 整性度量B来扩展它,产生了PCR值B 。可信设备用串"Uextend" 给输出数据加标签以示出证据的类型。在可信设备已经输出了数 据之后,可丢弃临时PCR。
TPM upgrade—concat([Uextend, A~, B~, B], [Uextend, B~, C ,C])
产生一个PCR值可以从另 一个PCR值导出的证据。它产生输出数 据[Uextend, A~, C ,C]作为PCR值C 可以从PCR值A 产生并且最 近扩展的完整性度量具有值C的证据。为了产生该证据,TPM被 加载了数据结构[Uextend, A~, B~, B]和[Uextend, B ,C ,C]并验 证(1 )它创建这两个结构;(2 ) [Uextend, A ,B~, B]和[Uextend, B ,C~, C]都包含串Uextend; ( 3 ) [Uextend, A~, B~, B]中B的值 与[Uextend, B~, C ,C]中B的值相同。可信设备用串"Uextend" 给输出数据加标签以示出证据的类型。
TPM—upgrade—link(SA, SB)产生一个完整性度量与另 一个完整性 度量信任等效的证据。它产生输出数据[Ulinked, A, B]作为完整性 度量值B与完整性度量值A信任等效的证据。为了产生该证据, TPM被加载了声明SA和SB,其中SA描述完整性度量A ( pubKey-A和statementID-A )并且SB描述完整性度量B ( pubKey-B和 statementID-B ) 。 TPM验证SA向前链接到SB并且SB向后链接到 SA,并产生输出数据[Ulinked, A, B]。串"Ulinked"指明证据的 类型。
TPM—upgrade—forkRoot(Uextend, A ,B~, B)创建从单个完整性度 量序列分叉成两个信任等效序列的证据,并产生输出数据[Ufork, A ,B~, B, B~, B]。串"Ufork"指明证据的类型。Ufork数据结构 的规范表示是[Ufork, A ,B ,B, C~, C],指明两个PCR状态[B ,B] [C~, C]是信任等效的并且从相同的PCR状态A 导出。 TPM—upgrade—forkRoot创建在分叉点处状态的证据,并产生数据 结构[Ufork, A ,B ,B, B~, B],意思是两个等同的PCR状态[B ,B] 和[B ,B]是信任等效的,这是显然的。为了产生该证据,TPM被 加载了数据结构[Uextend, A ,B ,B]。该TPM验证(1 )它创建 了该结构;并且(2)它包含串Uextend。
TPM—upgrade—forkLink([Ufork, A~, B~, B, C ,C], [Ulinked, E, F], [branch])使TPM修改有两个信任等效PCR值[B ,B]和[C ,C]的 集合中的一个[branch] PCR值,但是要求完整性度量F与完整性度 量E信任等效的证据。如果[branch]参数是0且B^二E,则该命令用F 到[F ,F]扩展了第一PCR值[B ,B],但是第二PCR值[C ,C]不 变。因此,该命令产生数据[Ufork, A ,F ,F,C ,C]。如果[branch]参数是1且C二^E,则该命令用F到[F ,F]扩展了第二PCR值[C , C],但是第一PCR值[B-, B]不变。因此,该命令产生数据[Ufork, A~, B ,B, F~, F]。 TPM被力口载了数据结构[Ufork, A ,B ,B, C , C], [Ulinked, E, F], [branch]。该TPM总是验证(1 )它创建了第 一和第二结构;(2)第一结构包含串Ufork; (3)第二结构包含 串Ulinked。如前面那样,输出数据中的串"Ufork"是证据的类 型。TPM—upgrade—forkExtend([Ufork, A~, B~, B, C ,C], [D])使TPM修 改两个信任等效PCR值[B~, B]和[C~, C]的分支。该命令产生输出 数据[Ufork, A~, X(B ,D), D, X(C ,D), D]。 TPM被加载了数据结 构[Ufork, A~, B~, B, C~, C]和完整性度量D。该TPM验证(1 ) 它创建了第一结构;并且(2)第一结构包含串Ufork。如前面那 样,输出数据中的串"Ufork"是证据的类型。 TPM—upgrade一forkPCR([Ufork, A~, B~, B, C ,C], [PCR陽index])创 建PCR值B 和C 对于特定PCR是信任等效的证据。TPM被加载了 数据结构[Ufork, A~, B ,B, C ,C]和[PCR-index]。该TPM验证(1)它创建了第一结构;(2)第一结构包含串Ufork; ( 3 ) A 是具有索引[PCR-index]的PCR的初始化值。该TPM产生输出数据 [uPCR, PCR-index, B~, C ]以示出PCR状态B 和C 对于具有索引 PCR-index的PCR是信任等效的值。输出数据中的串"uPCR"是 证据的类型。TPM upgrade—forkHash([uPCR, PCR-index, A ,B ],[PCR-index, C ],[…],…)创建两个复合PCR摘要[compHash]和[compHash&] 对于在列表[PCR-indexList]中指示的PCR是信任等效的证据 [Uhash, compHash, compHash&, PCR-indexList] 。 TP]V^皮加载了形 式为[uPCR, PCR-index, A~, B ]或[PCR-index, C ]的多个^据结 构。该TPM'验i正(1 )它创建了形式为[uPCR, PCR-index, A~, B~] 的任何数据结构;(2)这样的数据结构包含串uPCR。在该命令 中,形式为[uPCR, PCR-index, A ,B ]的数据结构指明具有索引 PCR-index的PCR必须由复合散列compHash中的PCR值A 和复合 散列compHash&中的PCR值B 来表示。形式为[PCR-index, C ]的 数据结构指明具有索引PCR-index的PCR必须由复合散列&中的PCR值C 来表示。TPM以 PCR-indexList中反映的顺序从输入数据中提取相关的PCR值,并 将它们用于创建复合散列compHash和compHash&。输出数据中的 串Uhash是证据的类型。
TPM—upgrade—seal([sealedBlob], [Uhash, compHash, compHash&, PCR-indexList〗)用复合散歹'J值compHash&替换密封斑点 [sealedBlob]中的复合散列值compHash。 TPM,皮加载了密封斑点 [sealedBlob]和[Uhash, compHash, compHash&, PCR-indexList]。该 TPM验证它创建了这两个结构并且第二结构包含串Uhash。如果复合散列值是compHash , 则该TPM用compHash&来替换 compHash,并且输出修改的密封斑点。 现在纯粹作为 一个例子来描述这些新功能的 一个用途。 图10说明了两个信任等效的完整性度量序列1001、 1002。这两个 序列都是同一完整性度量序列AO B0 CO DO E0的升级。第一序列1001 已经不同于第二序列1002被升级。第一完整性度量序列1001是A0 Bl C0D1E0。第二完整性度量序列1002是A0B0C1 D2E0。字母之后的 数字指明升级的演变完整性度量AO不是升级;完整性度量B1是从 BO的升级;完整性度量C1是从C0的升级;完整性度量D1是从D0的升 级;完整性度量D2是从D1的升级;完整性度量EO不是升级。这些关 系在图1003和1004中说明,其中每个连续列是可信平台不同方面的完 整性度量,并且每列说明了特定完整性度量的演变。根据本发明的该 实施例加载到PCR中的完整性度量的实际序列在图1005和1006中说 明。与第一序列1001等效的完整性度量的实际序列是AO BO Bl CO DO Dl EO 1005。与第二序列10(^等效的完整性度量的实际序列是A0 BO CO CI DO Dl D2 EO 1006。所得的完整性度量序列在图1007和1008中 说明。与第一序列1001等效的PCR值的实际序列是1007 R~ A0~ B0 Bl C0 D0 Dl E0 ,其中R 是该特定PCR的复位状态。与第二序 列1002等效的PCR值的实际序列是1008 R~ A0~ B0~ C0~ Cl~ D0 Dl~ D2~ E0~。要求向TPM证明第一PCR序列1007与第二PCR序列1008 是信任等效的。使用上面功能的一个实施方式是1. TPM—upgrade—extend(R ,AO) =〉 [Uextend, R~, A0~, AO]
2. TPM upgrade—extend(AO ,BO) => [Uextend, R~, B0 ,BO]3. TPM—upgrade—co腦t([Uextend, R~, A0 ,AO], [Uextend, A0~, B0~, BO])^ [Uextend, R~, B0~, BO]4. TPM—upgrade—forkRoot(Uextend, R ,B0~, BO) =〉 [Ufork, R~, B0 ,BO, B0 ,BO]5. TPM upgrade—link(BO, Bl) =〉 [Ulinked, BO, Bl]6. TPM一upgrade一forkLink([Ufork, R ,B0 ,BO, B0 ,B0〗,[Ulinked, BO, Bl], [O]) => [Ufork, R~, Bl ,Bl, B0 ,BO]7. TPM—upgrade—forkExtend([Ufork, R ,Bl ,Bl, B0~, BO], [CO]) 二〉 [Ufork, A ,C0 ,CO, C0 ,CO]8. TPM一upgrade一link(CO, CI) => [Ulinked, CO, CI]9. TPM—upgrade_forkLink([Ufork, R ,C0 ,CO, C0 ,CO], [Ulinked, CO, Cl], => [Ufork, R ,C0 ,CO, Cl ,CI]10. TPM—upgrade一forkExtend([Ufork, R ,C0~, CO, Cl ,CI], [DO]) =〉[Ufork, R ,D0~, DO, D0 ,DO]11. TPM—upgrade—forkExtend([Ufork, R~, D0 ,DO, D0 ,DO], [Dl]) =〉[Ufork, R ,Dl~, Dl, Dl ,Dl]12. TPM—叩grade一link(Dl, D2) => [Ulinked, Dl, D2]13. TPM一upgrade一forkLink([Ufork, R ,Dl ,Dl, Dl~, Dl], [Ulinked, Dl, D2], [l]) =〉 [Ufork, R ,Dl ,Dl, D2 ,D2]14. TPM—upgrade一forkExtend([Ufork, R~, Dl ,Dl, D2~, D2], [EO]) =〉[Ufork, R ,E0 ,E0, E0~, EO]15. TPM—upgrade一forkPCR([Ufork, R ,E0 ,EO, E0~, EO], P)=〉 [uPCR, P, E0 ,E0~]结构[uPCR, P, E0 ,E0 ]可接着与TPM—upgrade—forkHash —起用 于创建信任等效的复合PCR摘要值。这些值可以接着在 TPM一upgrade一seal中用于升级密封斑点中的复合散列值。优选地,生成复合PCR的现有可信计算组方法被改变为将每个后 续PCR值扩展到中间复合PCR值中。那么,不要求 TPM—upgrade—forkHash 。在一个补充方法中,进一步新的可信设备能力创建并签名了包含
由这些新能力产生的数据斑点的内容的凭证。这样的凭证可以连同当前平台状态的证据(比如由TPM—Quote创建的)被提供给第三方, 以作为平台的新状态与前一状态同样值得信任的证据。这样的凭证必 须包括标签,比如digestPairData, compositePairData等等,以指明凭证的意思。应当根据可信计算组中的普通实施,使用TPM的证明身 份之一来签名这样的凭证,以保护保密性。该方法作为整体允许之后的软件状态(如通过关联的PCR值证明 的)与之前的软件状态相关联。因此,尽管软件状态变化也可访问密 封的斑点是可能的,因为新的PCR值可以被示出为可从旧的PCR值 导出并且新的 TPM—COMPOSITE—HASH值可以替换旧的 TPM—COMPOSITE—HASH值。适当的方法是仅仅作为在可信平台上 升级或替换软件的处理中的一个步骤来更新所有这样的"密封斑 点,,。如果平台是这样的,使得它不具有足够的资源来执行声明验证处 理,可信设备可具有执行那些验证处理的能力。因此,新的可信设备 能力可以由测量实体用来验证声明上的签名,验证声明的链接列表 等。可信设备甚至可以作为便笺式存储器来存储验证处理的中间结 果,因此, 一个验证处理的结果可由将来的验证处理使用而不需要存 储在可信设备的外侧。已经在可信计算组技术中使用了类似的技术来 计算摘要并将该摘要扩展到PCR中。迄今,已经假设了信任等效性是互逆的例如由完整性度量AO 表示的软件与由完整性度量Al表示的软件同样值得信任。可能不总 是这样的情况。升级软件的原因可能是校正或提高软件的值得信任 度,例如在该情况下,由完整性度量Al表示的软件可能代替由完整 性度量AO表示的软件而使用,而完整性度量AO表示的软件可能不 能代替由完整性度量Al表示的软件而使用。因此,将额外信息添加 到声明701、指明值得信任度是否是互逆的是必要的。这必须作为要 签名以创建签名值736的数据的一部分而被包括,并且在新的TPM 功能中被反映,使得(当需要时) 一个分支中的完整性度量总是与另 一个分支中的完整性度量相同,或者向后链接到其它分支中的度量。在一个实施方式中 reciprocalFlag字段被插入到声明701中,并且如果前一 (向前链 接)度量是当前(向后链接)度量的可接受替换,则被设置为真,否则为布£。
结构[Ulinked, A, B]被修改为变成[Ulinked, A, B, reciprocalLink] 并且意思是如果reciprocalLink为真,则A可以由B替换而B只能由A替换。
命令TPM—upgrade—link(SA, SB)#J|^改为产生reciprocalLink标记 并且如果[SB的reciprocalFlag为fi],则将reciprocalLink设置为假。
结构[Ufork, A ,B ,B, C ,C]一皮^f奮改为变成[Uforkl, A ,B ,B, C~, C, reciproca10, reciprocall]。 reciproca10和reciproca10都由 TPM—upgrade—forkRoot设置为真。如果在TPM—upgrade—link才喿作 期间曾扩展第一完整性集合[B ,B]并且其reciprocalLink为假, 贝寸reciproca10寻皮i5:置为作支。类^f以;也,》口果在TPM—upgrade—link 操作期间曾扩展第二完整性集合[C ,C]并且其reciprocalLink为则reciprocal 1 一皮i殳置为作I。
如果reciprocalO在输入到TPM—upgrade—forkLink的Uforkl数据 中为假,则在[branch]二4时该命令必须失败。类似地,如果 reciprocall在输入到TPM—upgrade—forkLink的Uforkl数据中为 假,则在[branch]^0时该命令必须失败。
命令TPM—upgrade—forkPCR被修改为检查输入Ufork结构中的标 记reciprocalO和reciprocals如果那些标记指明一个PCR值可以 用于开封用其它PCR值密封的数据,但是反之不亦然,TPM排 序修改的uPCR结构[uPCR, PCR-index, X ,Y ]中的PCR值,使 得对于X 密封的数据可用Y 开封。在实施例中,该发明涉及记录TPM中的声明的链接列表。我们面。完整的链接列表的记录被期望来明确地记录平台:态的完i世系。不幸的是,记录完整列表将增加记录完整性度量所需的时间,并 且增加验证声明所需要的存储,这二者或其一可能是不期望的。因 此,所期望的是从链接列表中移除较旧的声明,并且在限制内将链接 列表减小到单个声明(最近链接的声明)。任意数量的声明(包括仅仅一个声明)可以记录在TPM中,只 要它们是以连续顺序记录的相同链接列表的相邻成员。由为测量的信 任根或测量代理执行的记录处理容易被改编成列表的长度——RTM/MA仅仅穿过该列表,无论其长度如何,如前所述,在TPM中 记录验证处理的结果并在TPM中记录验证处理。仍然要向TPM证明 缩短的链接列表与原始(更长的)链接列表是信任等效的。该证据取 决于缩短列表的开始声明是更长列表的一部分的证据。在一个实施方 式中,这涉及(先前描述的)[Ulinked, Slong, Sstartshort]结构,其中 Sstartshort是缩短列表的开始声明并且Slong是更长列表中Sstartshort 之前的某个声明。该Ulinked结构是声明Slong和Sstartshort是同 一链 接列表中的声明并且Slong出现在Sstartshort之前的列表中的某个位 置的证据。除非声明Slong与声明Sstartshort在链接列表中相邻,则 生成该Ulinked结构要求进一步新的命令(如下所述)来合并两个 Ulinked结构为单个Ulinked结构。给定了证据[Ulinked, Slong, Sstartshort]和任何任意的Ufork结构[Ufork, A ,B ,B, C ,C],由此可 见,另外的合法Ufork结构可以通过扩展具有Slong的B 和扩展具有 Sstartshort的C~,产生数据结构[Ufork, A ,Slong ,Slong, Sstartshort-, Sstartshort]来导出。这要求进一步新的命令(如下所述)。如果Slong 是链接列表的开始且Sstartshort是链接列表的缩短版本的开始,例如 [Ufork, A ,Slong ,Slong, Sstartshort ,Sstartshort]是PCR(其最近记录 的声明是第一列表的开始)对于另一PCR(其最近记录的声明是第一 列表缩短版本的开始)信任等效的证据。可接着和对Ufork结构进行 操作的任何命令一起来使用数据结构[Ufork, A~, Slong ,Slong, Sstartshort ,Sstartshort]。在限制情况下,其中只有来自给定列表的单个声明被记录在TPM 中,由命令TPM_upgrade—forkLink提供的功能变得冗余。先前描述的 新结构被修改为省略了声明值。在这样的情况下,Ufork结构[Ufork, A~, B ,B, C ,C]例如变成[Ufork, A~, B~, C ]。在前面提到,可以要求进一步的新命令来将两个Ulinked结构组 合成单个Ulinked结构。该进 一 步新命令的 一 个例子是 TPM—upgrade—link—concat([Ulinked, A, B], [Ulinked, C, D])。这个命令 产生完整性度量D链接到完整性度量A的证据。该证据采用数据结 构[Ulinked, A, D]的形式。为了产生该证据,TPM被加载了声明 ([Ulinked, A, B]和[Ulinked, C, D]) 。 TPM .验证了这两个Ulinked结 构是由TPM创建的,并且验证了 B==C。接着TPM创建输出结构 [Ulinked, A, D]。在前面提到,可以要求进一步的新命令来扩展具有第 一声明的第 一 PCR值和扩展第二 PCR,第二 PCR与具有链接到第 一声明的第二 声明的第一 PCR信任等效。该进 一 步新命令的例子是 TPM—upgrade—forkLinkl([Ufork, A~, B~, B, C~, C], [Ulinked, E, F], [branch]),其使TPM扩展具有声明E的[branch]PCR值和具有声明F 的另一PCR值。TPM总是验证它在产生任何输出之前创建了 Ufork 和Ulinked结构。如果[branch]参数是0,则该命令扩展具有E到[E~, E] 的PCR值B 和具有F到[F ,F]的PCR值C~。因此该命令产生输出数 据[Ufork, A~, E ,E, F~, F]。如果[branch]参数是1,则该命令扩展具有 F到[F ,F]的PCR值B 和具有E到[E~, E]的PCR值C~。因此该命令 产生输出数据[Ufork, A ,F ,F, E ,E]。我们现在纯粹作为一个例子描述PCR的升级,其中只有链接列表 的单个声明被记录在TPM中。我们假设我们被要求证明完整性度量 序列AO BO与完整性度量序列AOBl是信任等效的。该例子使用省略 了如上提到的声明字段的修改数据结构。 一 个实施方式是1TPM—upgrade—extend(R ,AO) =〉 [Uextend, R ,A0 ]2. TPM—upgrade—forkRoot(Uextend, R ,A0 )=〉[Ufork, R~, A0 ,A0 ]3. TPM—upgrade—link(BO, Bl) =〉 [Ulinked, B0, Bl]4. TPM—upgrade—forkLink([Ufork, R~, A0 ,A0 ],[Ulinked, B0, Bl],
) =〉[Ufork, R ,B0~, Bl ]5. TPM—upgrade—forkPCR([Ufork, R ,B0 ,Bl~], P) =〉 [uPCR, P, B0 ,Bl~]结构[uPCR, P, B0~, Bl ]可接着与TPM—upgrade—forkHash —起用于创建信任等效的复合PCR摘要值。这些值接着在TPM—upgrade—seal中用来升级密封斑点中的复合散列值。本发明的先前实施例将链接列表与仅仅 一 个程序的执行关联。 (尽管与链接列表中多个声明有关的方面记录在TPM中,但每个链接列表只有一个程序实际上在装载TPM的计算机上执行)。本发明 的进一 步实施例涉及链接列表中相邻声明的各段的识别,伴随了在计 算机中对于段中的每个声明执行一个程序。这有益于使相同的实体能 够担保在平台上执行的多个程序,同时保持了信任等效性。优选地,图7中说明的声明结构被修改为包括区别链接列表各段的额外数据,即使一个段只包含一个声明。例如,该数据可以是对于相同段的所有 成员相同但是对于列表中不同相邻段不同的值。该数据使列表能够被 解析成段。当RTM或测量代理穿过链接列表并验证声明并且将结果记录在 TPM中时,RTM或测量代理可识别链接列表的各段。段中的每个声 明可以用于实际上验证单独的程序,并且每个这种程序可由计算机执行。
这允许实体使用相同的链接列表来担保在 一 个平台上执行的多 个连续程序,而不用必须为每个个别的程序创建单独的链接列表。
这还允许实体用与单个程序信任等效的多个程序替换单个程 序。为了这样做,实体提供了包含与替换程序数量相同的相邻链 接声明数量的链接列表段,所述替换程序链接到与原始单个程序 关联的列表。平台中的RTM或测量代理验证段中的每个声明, 验证与段中每个声明对应的每个程序,将验证结果记录在TPM 中,并执行由那些声明验证的程序。先前参照本发明的实施例描 述的技术可接着用于引导TPM通过以下考验,用多个程序引导 的平台信任等效于用原始单个平台引导的平台。如果链接列表的相同段中的多个声明用于担保在平台上执行的 多个程序,则该段中的声明可作为单独的链接列表的分支的枝干,每 个分支链接到段中单独的声明。如上所述,这样的分支可用于支持对 于每个链接列表的段仅执行一个程序,或对于每个链接列表的段执行 多个程序。因此,创建了链接的声明树。在本发明的进一步实施例中,如果程序不再在计算机平台上执 行,则实体可使用验证声明来担保平台的可信状态未改变。该方法允 许信任等效的状态以包括比先前状态更少的程序。在本发明的该实施例中,programDigests 710字段-故允许包含 NULL指示符。RTM或测量代理应当决不会遇到包含NULL指示符的
声明,因为它暗指了没有关联的程序需要被执行、没有验证结果需要被记录在TPM中、并且没有验证值需要被记录在TPM中。当TPM 引导通过证明两个PCR值是信任等效的处理时,使用包含NULL指 示符的声明。如果声明SA中的programDigests 710字段仅仅包含 NULL标记,则命令TPM—upgrade—link(SA, SB)被修改为产生输出数 据[Ulinked, NULL, B],并且如果声明SB中的programDigests 710字 段仅仅包含NULL标记,则修改为产生输出数据[Ulinked, A, NULL]。 命令TPM—upgrade—forkLink([Ufork, A ,B ,B, C~, C], [Ulinked, E, F], [branch])被如此修改使得如果E是NULL,则应当用E更新的分支没 有被改变,并且如果F是NULL,则应当用F更新的分支没有被改变。纯粹是举例,我们描述了引导TPM通过以下考验的一个方式, 所述考验即是在移除程序BO之前的计算机状态与移除程序BO之后的 计算机状态是信任等效的。假设平台引导并生成完整性度量[AO], [B0], [CO], [DO]的第一集合。接着平台重新引导并生成完整性度量[AO], [CO], [DO]的第二集合。该第二集合与[AO],[Bl], [CO], [DO]相同,其中 B1==NULL。目的是要向TPM证明完整性度量[AO], [BO], [CO], [DO] 的第一集合与完整性度量[AO], [NULL],[CO], [DO]的第二集合是信任 等效的。 一个实施方式包括序列1<formula>formula see original document page 33</formula> 剩余的考验如前述那样进行。 本发明的实施例允许三种类型的升级 "substitute",其中 一个程序用 一个信任等效程序来替换 "more",其中一个程序用 一个以上的信任等效程序来替换 "less",其中一个程序被消除但是结果状态仍认是信任等效的 在本发明的进一步实施例中,当允许密封数据的自动复合散列升级时,创建密封数据的实体明确地声明了升级的类型,并且数据结构
记录了示出已经发生的完整性度量升级的类型的指示符。这允许实体 明确地声明可引起密封数据中的复合散列值被自动升级的升级类 型。例如如果数据拥有者愿意接受程序的单个升级但没有增加或移除 程序,或者不期望自动接受任何升级,则这是有益的。密封数据、开封数据并引导TPM通过证明一个复合散列值与另 一个复合散列值是信任等效的处理的处理与前面描述的相同,并有如 下变化 数据结构[Ufork, A~, B ,B, C ,C], [uPCR, PCR画index, A ,B~], [Uhash, compHash, compHash&, PCR-indexList]卑皮改变为包j舌标 记 "substitute" 、"more"和 "less"。
命令TPM—upgrade—forkRoot被改变为将输出Ufork结构中的"substitute" 、"more"和"less" i殳置为作支。
命令TPM—upgrade—forkLink被改变,使得o当该命令用一个信任等效声明替换声明时,它在输出Ufork结构中将substitute设置为真; o当该命令用一个以上的信任等效声明替换声明时,它在输出Ufork结构中设置more二真; o当该命令消除声明时,它在输出Ufork结构中设置less二真。
命令TPM—upgrade—forkPCR被改变为使得它将"substitute"、"more"和"less"标记的状态从输入Ufork结构复制到输出uPCR 结构。
命令TPM—upgrade_forkHash被改变为使得它将输入uPCR结构中 的"substitute" 、 "more"和"less"标记的状态复制到输出Uhash 结构。
通过添力口包含才示记"substitute ,, 、 " more "和"less ,,的新 upgradeOptions字段来修改现有TCG结构TPM—STORED—DATA 和/或TPM—STORED—DATA12。o如果upgradeOptions=〉substitute为假(缺省值),则在程序的1 对1替换对复合散列的变化有贡献时,禁止自动更新 TPM—STORED—DATA—UFLAGS中的复合散列值。o 3口果upgradeOptions=〉more为j叚(在夹省Y直),贝'J在禾呈序的1只于 多替换对复合散列的变化有贡献时,禁止自动更新TPM—STORED—DATA—UFLAGS中的复合散列值。 o如果upgradeOptions=〉less为假(缺省值),则在程序的消除对 复合散列的变化有贡献时,禁止自动更新 TPM—STORED—DATA—UFLAGS中的复合散列值。
现有TCG命令TPM—Seal和TPM—Unseal以及新的命令 TPM—upgrade—seal 被改变为使得它们对修改的 TPM—STORED—DATA结构进行才乘作。o TPM—Seal被改变为包括额外输入参数"substitute" 、 "more" 和"less "。这些额外输入参数的状态被复制到输出 TPM—STORED—DATA结构中具有相同名称的参数。o TPM—Unseal的操作未改变。o TPM—upgrade—seal 一皮改变为^f吏4寻■ ^口果upgradeOptions=〉substitute为々支4旦Uhash=>substitute为 真,则命令失败。■ 3口果upgradeOptions=〉more为4艮^f旦Uhash=>more为真,贝寸命 令失败。■ 3口果upgradeOptions=〉less为j叚^f旦Uhash=〉less (true )为真,则命令失败。在本发明的进一步实施例中,可选择创建密封数据的实体以强迫 该密封数据中复合散列值变化。例如,这允许实体明确地批准由升级 的程序来访问现存的密封数据。正密封和开封的数据的处理要求如下 变化 通过添加包含标准TCG授权值的新upgradeAuth字段来修改现有 的 TCG 结 构 TPM—STOREDDATA 和 / 或 TPM—STORED—DATA 12 。
改变现有TCG命令TPM—Seal和TPM—Unseal使得它们对修改的 TPM—STORED—DATA进行操作。o改变现有TCG命令TPM—Seal为包括额外输入参数upgradeAuth(通常是加密的)。 o TPM—Unseal的才喿作未改变。 使用标准 TCG 授权协议来授权新的TPM 命令 TPMupgrade—SealForce([sealedBlob], compHash), 以证明拥有与sealedBlob中的upgradeAuth相同的值。TPM打开现有的sealedBlob, 用值compHash来替换现有的复合散列值并输出修改的密封斑点。用TCG技术当前不可能进行自动的复合散列升级并且一些数据 拥有者已经在认为它们不能自动升级的情况下使用密封的斑点。T C G 已经声明了无论何时可能都维持反向兼容性的意图。因此不期望的 是,允许使用现有命令和结构来自动升级密封斑点。优选的是,创建 数据结构和命令的新版本以实施为本发明的实施例描述的技术。当数 据拥有者希望允许自动升级时,他们应当使用这些新的结构和命令, 并且当他们不期望允许自动升级时,继续使用这些新的结构和命令。 TCG 还可能期望仅就将来的 TPM 而反对现有的 TPM—STORED—DATA结构以及TPM—Seal和TPM—Unseal命令。因此 被设计为允许自动升级的任何新结构和命令还应当使自动升级能够 被禁用。不信任一些或所有形式自动升级的数据拥有者可能期望使用 显式升级,其固有地要求新的数据结构。因此,任何新的结构和命令 还应当允许显式升级。因此,优选的 现有TPM—STORED—DATA和/或TPM—STORED—DATA 12结构没 有才要如上所述被》务改,但是通过向TPM—STORED—DATA和/或 TPM—STORED—DATA12增力口字l爻upgradeOptions和upgradeAuth 字段来创建新的结构(称为TPM—STORED—DATAJJPGRADE)。
TPM—Seal和TPM—Unseal没有4安如上所述被修改,但是通过向 TPM—Seal和TPM—Unseal增力口 upgradeOptions和upgradeAuth字 段来创建新的命令。该新的命令应当对 TPM—STORED—DATA—UPGRADE结构进4亍才乘作。
命令TPM—upgrade—seal和TPM—upgrade—SealForce([sealedBlob], compHash)应当只对TPM—STORED—DATA—UPGRADE结构进行 操作。现在将描述完整性度量和PCR值的升级的一个例子。这发生在虚 拟平台从一个主机可信平台迁移到另 一个主机可信平台期间。这个例 子假设虚拟平台使用对PCR值密封的数据斑点,所述PCR值表示主 机平台的属性。本发明的实施例允许在这些密封数据斑点中记录的 PCR值不在它们当前能被开封的环境下升级。因此,使用本发明的实 施例的优点在于,虚拟平台可以被定制为在迁移到不同主机平台之前
或之后在不同主机平台上工作。如果客户愿意信任虚拟平台,则客户应当信任管理主机平台的实 体。这是因为管理实体具有将虚拟平台移动到不同主机平台的能力。 所期望的是,管理实体应当采取行动来实例化同样值得信任的主机平 台上的虚拟平台。这是因为流氓主机平台能破坏它所装载的任何虚拟 平台,并且虚拟平台无法保护它自己免于流i民主才几平台或流珉管理实 体的破坏。因此使用虛拟平台的客户会要求不知道主机平台——要么 管理实体实例化同样值得信任的主机平台上的虚拟平台,要么它不实 例化。第三方通过执行完整性询问并检查返回的PCR值、事件日志和证 书来发现平台的信任属性。揭露平台是否是虚拟的信息(以及主机平 台的性质,其可能本身是虚拟的)可以在虚拟平台的PCR中和/或可 以在虚拟平台的^E书中。将与安全服务协定有关的信息放入虚拟平台的PCR栈中对于主 机管理实体存在一个优点。该优点是,它使得在保持所协定的安全等 级的同时平衡计算负载更加容易。虚拟平台的用户可将他们的数据密 封到指明其协定的安全服务等级协定(SSLA)的PCR。 SSLA限制越 少,可支持用户的主机平台的范围就越大,主机实体提供服务并在主 机平台之间交换虛拟平台就更容易。如果虚拟平台的实际SSLA PCR 值匹配密封数据斑点中用户的SLA值,则用户可访问他的数据并消耗 平台资源。否则,用户不能访问并消耗。因此,如果主机管理实体将 客户移动到不满足用户的SSLA的主机,则用户的数据将自动被防止 在不适当的环境中使用。在SSLA中表示的因素包括 虚拟TPM的类别 IP地址 正常运行时间 地理位置 虚拟LAN的存在 虚拟LAN的类型 虚拟平台是否可克隆 平台算法灵活性
将与主机平台有关的信息放入虛拟平台的PCR栈中对于客户存 在一个缺点。这是因为虚拟平台的PCR栈会不同于专用(非虛拟)平 台的PCR栈,因此配置为使用专用平台操作的软件将不能自然地在虛 拟平台上操作。一些设计者可决定将与主机平台有关的信息放到所装载的虚拟 平台的证书中,另外的设计者决定将主机信息放到所装载的虚拟平台 的上的PCR中,而其它设计者可能选择两者。如果设计者将主机信息放在所装载的虚拟平台的上的PCR中,并 且用户创建对那些PCR密封的数据斑点,则所期望的是,升级那些 PCR值,前提是目的地主机平台的属性至少与源主机平台的属性等 效。这可以通过使用前述技术来完成。前述的PCR和完整性度量升级 技术尤其有利,因为他们不要求由密封数据当前描述的环境存在。因 此,虛拟平台可迁移到新的主才几并且当它到达该新的主才几时一皮重新创 建,或反之亦然。该优点对于主机管理实体的 一个影响是,主机管理实体可给使用与虚拟所允;的平台、实^nl有关的:息出i在平台的pcr栈中。5因此,如果用户的密封数据斑点总是包括其值表示与所允许的平台实例 化有关的信息的PCR,则即使当平台是专用平台时,用户也可在所有 平台上使用相同的软件配置,并且当使用虚拟平台时利用优选项。自 然地,该技术还允许客户在不同类型的专用平台上使用他们的密封数据。我们现在纯粹作为例子而描述了虚拟平台VP从一个主机可信平 台Pl迁移到另一个主机可信平台P2。在图11中示意性说明了所示平 台的元件。平台Pl可以是物理或虚拟平台。平台P2可以是物理或虚 拟平台。主机平台包含TPM(在P1上称为TPM-P1并且在P2上称为 TPM-P2)。虚拟平台VP包括主虚拟平台计算环境VPCE和虚拟可信 平台模块(VTPM)。其主机平台的至少一个属性记录在VTPM的PCR 中。该VPCE包括由VTPM保护的数据斑点并且可被密封到取决于主 机平台属性的PCR。主机平台将VPCE和VTPM彼此以及与主机平台 的其它部件相隔离。主机平台包括在另一个隔离的计算环境中运行的 迁移进程MP (在Pl上称为MP-Pl并且在P2上称为MP-P2 )。主机32平台中提供隔离的组件是虚拟化组件(vc)(在Pl上称为VC-P1并且在P2上称为VC-P2)。主机平台的TPM中的PCR值包括表示其 MP和VC状态所需的所有数据。VP初始地在P1上被实例化。当VP需要迁移(当用户请求或作 为来自提供者的维护操作时),迁移进程MP-P1首先挂起VPCE在 Pl上的执行并且接着挂起对应的VTPM。尽管VTPM的挂起可能不 要求任何附加的步骤,但是VTPM的挂起必须确保由VTPM使用的 任何秘密VTPM-秘密从存储器移除并由TPM-P1来保护。如图12所 示,MP-P1接着通过执行如下步骤将VP从P1迁移到P2。1 )检查(1210)目的地平台P2是适当的真实可信平台并获得其证明身份密钥之一。如果MP-P1还不信任P2并且知道其TPM密钥之一,则Pl -使用 与P2的询问-响应协议来确定P2是否是合法可信平台(即,MP-P1 是否信任TPM-P2和P2的构造)。这个询问-响应进程向MP-P1提供 P2是特定类型的真实可信平台的证明以及P2的特定TPM密钥的细节2)升级(1220 )在由VTPM保护的密封斑点中的完整性度量 如果由P2提供的属性等效于在密封到VTPM的个别数据斑点中 的PCR值中记录的主机属性(或是其超集),则MP-P1升级那些个 别的VTPM密封斑点,创建包括PCR值的新密封斑点,该PCR值指 明由P2提供的属性。取决于升级方法,这可以或可以不要求来自与 密封斑点相关联的升级实体的显式授权。3 )将VTP-秘密从Pl迁移(1230 )到P2MP-P1对VTPM-秘密才丸行从TPM-P1到TPM-P2的迁移命令并将 所得数据发送到MP-P2。 MP-P2通过提供所接收的数据给TPM-P2来 结束迁移进程。使用标准TCG技术以确保VTPM-秘密在P2中不可 用,除非P2正在执行MP-P2和VC-P2的所期望版本。4 ) MP-P1发送(1240 )表示VPCE禾口 VTPM的凄史才居到P2 (以及 MP-P2运行VTPM)。通过创建VPCE和VTPM的实例,MP-P2使用该数据来在P2上 创建相同的VP实例。MP-P2接着恢复VTPM执行。在恢复后,VTPM 试图重新加载VTPM-秘密到存储器中。不能这样做指明了 P2上不可
接受的VP环境。如果重新加栽成功,则MP-P2恢复VPCE,该VPCE 现在可使用VTPM并当由VTPM保护的秘密在Pl上时保护它们。最 后在VP上的应用试图开封在由VTPM保护的密封斑点上存储的数 据。失败指明了 P2不适合于揭露特定的密封数据。注意到,步骤2和3能以相反的顺序执行,在该情况下,VTPM 密封的斑点在P2上升级之前迁移到P2。上述的方法显然可以应用并适于任何包含完整性度量或从完整 性度量导出的数据结构的升级。该方法可用于提供一个完整性度量与 另一个完整性度量信任等效、 一个PCR值与另一个PCR值信任等效、 以及一个PCR—COMPOSITE值与另 一个PCR—COMPOSITE值信任等 效的证据。这些方法因此可用于升级取决于完整性度量、PCR值和 PCR—COMPOSITE值的任意数据结构。可以升级的其它数据结构的一 些例子是TCG结构,其取决于PCR—COMPOSITE值,比如TCG密钥 结构 TPM—KEY 、 TPM-KEY12 及其辅助结构。类似于 TPM—upgrade—seal的TPM命令例如可以用于升级TPM-KEY结构中 的PCR_COMPOSITE值。当原始环境不可用时、当从备f分中恢复数 据时、或当在不同系统上复制它时,密钥结构的升级例如可能是所期 望的。尤其,可迁移密钥可用于方便备份和恢复,并用于复制数据(在 不同的平台上或在不同的操作系统上)。当前TCG密钥迁移命令, 比如TPM—CreateMIgrationBlob和TPM—CMK—CreateBlob明确;也忽略 了 PCR一COMPOSITE值。因此TCG可信平台技术可得益于在本发明 的实施例中所描述的方法,从而改变TPM密钥结构中的复合-PCR 值。
权利要求
1. 一种提供计算机平台状态的证据的方法,包括测量计算机平台的状态,其中对状态进行测量包括测量计算机平台中的第一数据结构,以提供第一测量状态;在计算机平台状态的证据中使用第 一测量状态;在计算机平台中用第二数据结构来替换第 一数据结构;测量用第二数据结构替换了第 一数据结构的计算机平台的状态,以提供第二测量状态;验证第二测量状态如第一测量状态一样值得信任;和在计算机平台状态的证据中用第二测量状态来代替第 一 测量状态。
2. 如权利要求l中所述的方法,其中计算机平台包括免受破坏的 可信设备,并且该可信设备执行测量、验证和代替步骤。
3. 如权利要求2中所述的方法,其中可信设备包括一个或多个平 台配置寄存器,通过将当前平台配置寄存器值与测量数据级联、对结 果进行散列并用散列结果替换当前平台配置寄存器值来将测量值放 置在所述平台配置寄存器中,其中从第一数据结构的平台配置寄存器 值导出第 一 测量状态,并且在第 一数据结构已经被第二数据结构替换 之后从平台配置寄存器值导出第二测量状态,并且验证步骤包括确 定第 一数据结构的平台配置寄存器值与在第 一数据结构已经被第二 数据结构替换之后的平台配置寄存器值有关。
4. 如权利要求3中所述的方法,其中第一和第二测量状态均包括 从多个平台配置寄存器导出的值,并且验证步骤包括确定第一测量 状态值与第二测量状态值有关。
5. 如权利要求4中所述的方法,其中所述值是通过级联和散列那 些平台配置寄存器中的值而从多个平台配置寄存器中导出的。
6. 如权利要求3中所述的方法,其中可信设备适于证实一个平台 配置寄存器值序列与另一个平台配置寄存器值序列是信任等效的。
7. 如前面任一权利要求所述的方法,其中证据包括对从测量状 态导出的值密封的数据,使得当计算机平台的测量状态的当前值对应 于所测量的值时只可以访问该数据。
8. 如前面任一权利要求所述的方法,其中第二数据结构是多个 数据结构。
9. 如权利要求1到7中任意一个所述的方法,其中第二数据结构 是空的数据结构。
10. 如前面任一权利要求所述的方法,其中第一和第二数据结构 包括第一软件和第二软件,均被提供用于公共功能目的。
11. 如权利要求ll中所述的方法,其中第二软件比第一软件更可信。
12. 如权利要求10或权利要求11中所述的方法,其中所述第一和 第二测量状态分别包括第一软件和第二软件的摘要或者分别从第一 软件和第二软件的摘要导出,并且其中验证步骤包括确定第二软件 的摘要与第 一软件的摘要有关。
13. 如权利要求12中所述的方法,其中第一软件的摘要和第二软 件的摘要之间的关系由可信软件提供商证明的声明来提供,并且验证 步骤包括验证该声明。
14. 如权利要求1到9中任意一个所述的方法,其中第一和第二数 据结构包括第一密钥和第二密钥,均被提供用于公共目的。
15. 如权利要求14中所述的依赖于权利要求2的方法,其中公共 目的是作为可信设备的证明密钥。
16. —种计算机平台,包含免受破坏并适于测量和担保该计算机 平台上数据结构的可信设备,其中该可信设备适于当计算机平台上的 第 一数据结构已经被第二数据结构替换时确定第二数据结构与第一 数据结构一样值得信任。
17. 如权利要求16中所述的计算机平台,其中可信设备适于根据 包括与第 一 数据结构或第二数据结构有关的测量值的测量值来测量 计算机平台的状态。
18. 如权利要求17中所述的计算机平台,其中可信设备包括一个 或多个平台配置寄存器,通过将当前平台配置寄存器值与测量数据级 联、对结果进行散列并用散列结果替换当前平台配置寄存器值来将测 量值放置在所述平台配置寄存器中,其中可信设备适于确定第 一平台 状态何时与第二平台状态等效,第 一平台状态由包括与第 一数据结构 有关的测量值的测量值所确定的平台配置寄存器值表示,而第二平台 状态由包括与第二数据结构有关的测量值的测量值所确定的平台配 置寄存器值表示。
19. 如权利要求17或权利要求18中所述的计算机平台,其中可信 设备适于提供平台状态的证据。
20. 如权利要求17到19中任意一个所述的计算机平台,其中可信 设备适于对从测量的平台状态导出的值密封数据,使得当平台状态的 当前#_对应于所测量的j直时只可以访问该#:据。
21. 如权利要求16到20中任意一个所述的计算机平台,其中第一 数据结构包括第 一软件并且第二数据结构包括第二软件,并且其中第 一软件和第二软件均被提供用于公共功能目的并在功能上一致。
22. 如权利要求21中所述的计算机平台,其中可信设备根据可信 软件提供商证明的声明并通过验证该声明来确定功能一致性和信 任。
23. —种为所识别软件提供升级或替换的方法,包括为升级或替换而确定指明软件性质的声明和升级或替换如所识 别软件一样值得信任的证据;和 向升级或替换提供声明。
24.如权利要求"中所述的方法,其中所述证据包括来自升级或 替换的可信提供商的证明。
25.如权利要求23或权利要求24中所述的方法,其中所述证据包 括将声明识别为与所识别软件有关的声明链接列表的 一部分,并且验 证链接列表是有效的链接列表。
26. 如权利要求23到25中任意一个所述的方法,还包括提供第二 声明,其中所述声明包含升级或替换软件的一个或多个摘要,或从摘 要导出的数据,而第二声明除了一个或多个摘要之外具有与所述声明 相同的软件性质指示以及升级或替换如所识别软件一样值得信任的 证据。
27. —种数据结构,包括 数据结构类型的标识;该数据结构类型的两个或以上的实例彼此一样值得信任的证据。
28. 如权利要求26所述的数据结构,其中所述证据包括来自升级 或替换的可信提供商的证明。
29. 如权利要求26或权利要求28中所述的数据结构,其中所述证 据包括作为与所识别数据结构类型有关的声明链接列表 一 部分的声 明标识。
30. 如权利要求26到28中任意一个所述的数据结构,其中该数据 结构还包括数据结构类型的实例的一个或多个摘要,或从摘要导出的数据。
31. 如权利要求26到29中任意一个所述的数据结构,其中该数据 结构不包含数据结构类型的实例的摘要,或从摘要导出的数据。
32. —对数据结构,包括如权利要求29中所述的数据结构和如权 利要求30中所述的数据结构,其中每个数据结构具有相同的数据结构 类型的标识;和该数据结构类型的两个或以上的实例彼此一样值得信 任的证据。
33. 如权利要求26到31中任意一个所述的数据结构或数据结构 对,其中数据结构类型是等效功能的软件。
34. 如权利要求26到31中任意一个所述的数据结构或数据结构 对,其中数据结构类型是密钥。
35. —种在包含免受破坏的可信设备的计算平台上提供完整性度量的方法,包括测量至少 一 部分的如权利要求2 6到3 3中任意 一 个所述的数据结构;和在可信设备中记录测量。
36. 如权利要求34中所述的方法,其中可信设备包括一个或多个 平台配置寄存器,通过将当前平台配置寄存器值与测量数据级联、对 结果进行散列并用散列结果替换当前平台配置寄存器值来将测量值 放置在所述平台配置寄存器中,并且其中可信设备适于证实一个平台 配置寄存器值序列与另 一个平台配置寄存器值序列是信任等效的。
37. 如权利要求34或权利要求35中所述的方法,其中所述数据结 构形成数据结构的链接列表的 一 部分,其中测量步骤包括测量用于链 接列表中第 一和最后一个数据结构的至少一部分数据结构。
38. 如权利要求36中所述的方法,还包括提供数据结构部分的链 接列表,并展示了该部分的链接列表与数据结构的完整链接列表是信 任等效的。
39. 如权利要求34到37中任意一个所述的方法,还包括单独地 记录如下验证是否成功,即数据结构是数据结构类型的两个或以上的 实例彼此一样值得信任的有效证据。
40. —种确定计算平台所使用的软件状态的方法,包括 从计算平台请求软件状态的指示;和接收由软件提供商证明的并由计算平台验证的 一个或多个软件 类型的指示。
41. 如权利要求39中所述的方法,其中对于软件类型的指示,通 过接收该软件类型的实例的多个摘要,或摘要的导出物来保留保密性。
42. 如权利要求39中所述的方法,其中对于软件类型的指示,通 过不接收该软件类型的实例的摘要,或接收从中直接导出的其它材料 来保留保密性。
43. —种供计算平台报告软件状态的方法,包括 接收对计算平台的软件状态的指示的请求;和提供由软件提供商证明的并由计算平台验证的软件类型的 一个 或多个指示。
44. 如权利要求42中所述的方法,其中对于软件类型的指示,通 过提供该软件类型的实例的多个摘要,或摘要的导出物来保留保密性。
45. 如权利要求42中所述的方法,其中对于软件类型的指示,通过不提供该软件类型的实例的摘要,或提供从中直接导出的其它材料 来保留保密性。
46. —种将虚拟可信计算平台从第 一可信计算平台迁移到第二可 信计算平台的方法,每个可信计算平台包括免受破坏并适于测量该可 信计算平台的计算环境方面的可信设备,并且其中虚拟可信计算平台 包括虚拟可信设备和虚拟计算环境,虚拟可信设备不受虚拟计算环境 的影响,虚拟可信平台中的信任根源于运行有虚拟可信平台的可信平 台的可信i殳备,该方法包4舌第一可信计算平台上的第一迁移进程确定第二可信计算平台是 可信计算平台;第一迁移进程用第二可信计算平台的属性来更新虚拟可信平台的数据结构;第一迁移进程将虚拟可信平台的秘密从第一可信计算平台迁移到第二可信移动平台;和将虚拟可信平台转换到第二可信计算平台并恢复虚拟可信平台 的操作。
47. 如权利要求45中所述的方法,其中第一可信计算平台和第二 可信计算平台中的至少一个本身是虚拟可信计算平台。
48. 如权利要求45或权利要求46中所述的方法,其中更新虚拟可 信平台的数据结构的过程是根据权利要求34到38中任意一个的方法 来执行的。
49. —种提供计算机平台状态的证据的方法,包括验证在计算机平台上出现的 一 个或多个数据结构并获得验证的 证据;和提供一 个或多个数据结构的验证的所述证据作为计算机平台状 态的证据。
50. 如权利要求48中所述的方法,其中一个或多个数据结构包括 用于在计算机平台上执行的 一个或多个程序。
51. 如权利要求48中所述的方法,其中一个或多个数据结构包括 在计算机平台上保存的 一个或多个密钥。
52. 如权利要求48到50中任意一个所述的方法,其中计算机平台 是包括免受破坏的可信设备的可信计算机平台,并且其中可信设备执 行对数据结构的验证以及证据的获得和提供。
全文摘要
一种数据结构在其中具有以下元素数据结构类型标识;以及数据结构类型的两个或以上的实例彼此一样值得信任的证据。描述了使用这种数据结构的方法和设备。
文档编号G06F21/57GK101147154SQ200680009269
公开日2008年3月19日 申请日期2006年3月22日 优先权日2005年3月22日
发明者D·库尔曼, D·普拉奎恩, G·J·普鲁德勒, W·伯顿 申请人:惠普开发有限公司