CN101551841B - 用于可信数据的方法、设备和数据结构 - Google Patents

用于可信数据的方法、设备和数据结构 Download PDF

Info

Publication number
CN101551841B
CN101551841B CN 200910137034 CN200910137034A CN101551841B CN 101551841 B CN101551841 B CN 101551841B CN 200910137034 CN200910137034 CN 200910137034 CN 200910137034 A CN200910137034 A CN 200910137034A CN 101551841 B CN101551841 B CN 101551841B
Authority
CN
China
Prior art keywords
platform
credible
tpm
pcr
statement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN 200910137034
Other languages
English (en)
Other versions
CN101551841A (zh
Inventor
G·J·普鲁德勒
D·普拉奎恩
W·伯顿
D·库尔曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GB0510558A external-priority patent/GB0510558D0/en
Priority claimed from GB0512370A external-priority patent/GB0512370D0/en
Priority claimed from GB0516534A external-priority patent/GB0516534D0/en
Priority claimed from GB0521836A external-priority patent/GB0521836D0/en
Priority claimed from GB0522598A external-priority patent/GB0522598D0/en
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN101551841A publication Critical patent/CN101551841A/zh
Application granted granted Critical
Publication of CN101551841B publication Critical patent/CN101551841B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

一种数据结构在其中具有以下元素:数据结构类型标识;以及数据结构类型的两个或以上的实例彼此一样值得信任的证据。描述了使用这种数据结构的方法和设备。

Description

用于可信数据的方法、设备和数据结构
本申请是申请号为200680009269.X、申请日为2006年3月22日、发明名称为“用于可信数据的方法、设备和数据结构”的申请的分案申请。
技术领域
本发明涉及可信任的数据,其意义在于为担保该数据而准备了至少一个可信实体。它特别地涉及了包括软件的数据(比如数据结构或可执行指令),并且在实施例中涉及了计算设备上软件的升级或替换。
背景技术
计算实体之间交互的一个重要考虑是信任——外来计算实体是以可靠和可预测的方式行动,还是将(或已经)受到破坏。已经由形成可信计算小组(TCG)的公司开发了包含至少在逻辑上免受破坏的组件的可信系统——这个团体开发了该领域中的规范,例如在“可信计算平台——上下文中的TCPA技术”,Siani Pearson于2003年编著,Prentice HallPTR中所讨论的。可信系统的隐含可信组件能够测量可信系统并且接着能够将这些测量以完整性度量的形式来提供,以供给希望与可信系统交互的适当实体。接收实体接着能够根据所测量的完整性度量与已知或期望的值的一致性来确定可信系统按照所期望的来操作。
完整性度量将通常包括对可信系统使用的软件的测量。这些测量可以通常相结合地用于指明可信系统的状态或可信状态。在可信计算小组规范中,教导了用于将数据“密封”到特殊平台状态的机制——这就导致将密封数据加密为不可测的“不透明斑点”,其包含至少部分根据平台上的软件的测量而导出的值。该测量包括软件的摘要,因为摘要值将在对软件的任何修改时改变。如果可信组件测量当前平台状态并发现它由与不透明斑点中相同的值表示,则可以只恢复该密封数据。
将会理解,软件中的任何改变将引起多个问题,既对于这个特定过程且更一般的是软件测量被当作为计算机系统状态的表示的情况——无论软件的变化有多小,测量的有效形式(比如摘要)将给出不同的值。在以上“密封”的例子中,这意味着软件的变化——其可能例如对于改进功能或移除错误和弱点是完全期望的——具有阻止了对密封数据进行连续访问的缺点。而这只是一个示例性问题,但是——在新的或替换软件中具有与原始软件中相同的信任是存在一般性困难的,这种一般性困难在基于该信任的维护功能中具有伴随的实践困难。
所期望的是找到一种方式来更新或改变被信任用来提供信任中以及软件功能中连续性的软件。
发明内容
在一个方面,本发明提供一种数据结构,包括数据结构类型的标识和数据结构类型的两个或以上的实例彼此一样值得信任的证据。
附图说明
现在将仅仅通过举例的方式并参考附图来描述本发明的优选实施例,所述附图中:
图1是适用于本发明实施例的示例现有技术计算机平台的图解;
图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)提供的期望值进行比较,可信方被准备用来担保平台的值得信任度。如果存在匹配,则暗示了至少一部分平台正确地操作,这取决于完整性度量的范围。
用户在与平台交换其它数据之前验证平台的正确操作。用户通过请求可信设备提供其身份和一个或多个完整性度量来这样做。(可选地,如果可信设备本身不能验证平台的正确操作,则可信设备将拒绝提供身份的证据。)用户接收身份的证据和一个或多个身份度量,并且将它们与认为是真实的值比较。这些适当的值由TP或用户所信任的另一个实体来提供。如果由可信设备报告的数据与由TP所提供的数据相同,则用户相信该平台。这是因为用户相信该实体。该实体相信平台,因为它先前已经确认了身份,并确定了平台的适当完整性度量。
一旦用户已经证实了平台的可信操作,则他与平台交换其它数据。对于本地用户,该交换可能是通过与一些在平台上运行的软件应用进行交互。对于远程用户,该交换可能涉及安全事务。在任一情况下,交换的数据由可信设备“签名”。那么用户可以对数据正在与行为受信任的平台进行交换具有更大的置信度。所交换的数据可以是与一些或所有在计算机平台上运行的软件有关的信息。现有的可信计算小组的可信计算机平台适于提供平台上软件的摘要——它们可以与已知软件的已知摘要的公共可用列表相比较。但是,这确实提供了在可信计算平台上运行的特定软件的标识——这对于保密场所的可信计算平台的所有者可能是不期望的。如将在下面所述的,本发明的一些方面可用于改善可信计算平台拥有者的保密位置的方面。
可信设备使用密码进程,但是不需要向那些密码进程提供外部接口。可信设备应当在逻辑上不受其它实体的影响——包括其本身也是平台一部分的平台其它部分。并且,最期望的实施方式是使可信设备防篡改,以通过使它们对于其它平台函数不可访问而保护秘密并提供了基本上对未授权修改免疫的环境(即,在物理上和逻辑上都得到保护)。由于防篡改是不可能的,所以最好的近似方案是抗篡改或检测篡改的可信设备。因此,该可信设备优选地由抗篡改的一个物理组件组成。与抗篡改有关的技术对于安全领域的技术人员来说是已知的。这些技术包括用于抗篡改的方法(比如适当封装可信设备)、用于检测篡改的方法(比如在可信设备外壳中检测超出规定电压、X射线或丢失物理完整性)、以及用于当检测到篡改时消除数据的方法。
可信平台10是在图1的图中说明的。计算机平台10看上去完全是传统的——它关联有键盘14、鼠标16和可视显示单元(VDU)18的标准特征,这些特征提供了平台的物理“用户接口”。
如图2所示,可信计算平台10的母板20包括(除了其它标准组件)主处理器21、主存储器22、可信设备24、数据总线26和相应的控制线27和28、包含平台10的BISO程序的BIOS存储器29和输入/输出(IO)设备23,IO设备23控制母板的组件和键盘14、鼠标16以及VDU18之间的交互。主存储器22通常是随机访问存储器(RAM)。在操作中,平台10从硬盘(未示出)将比如Window XPTM的操作系统加载到RAM中。此外,在操作中,平台10从硬盘(未示出)将可由平台10执行的进程或应用加载到RAM中。
通常,在个人计算机中,BIOS程序位于专门的保留存储区域,系统存储器的第一千兆字节的上面64K(地址FФФФh到FFFFh)中,并且主处理器被布置为根据工业一般标准来首先查看该存储单元。该平台和传统平台的显著差异在于,在重置之后,主处理器初始地受可信设备控制,其接着将控制移交给特定于平台的BIOS程序,该程序转而按常规初始化所有输入/输出设备。在已经执行了BIOS程序之后,控制按常规由BIOS程序移交给操作系统程序,比如Window XP(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,用于经由直接测量或可替换地间接地经由要在平台的主处理器上执行的可执行指令而从平台10获取第一完整性度量;密码功能32,用于签名、加密或解密规定的数据;鉴权功能33,用于鉴权智能卡;和接口电路34,具有用于将可信设备24相应连接到母板20的数据总线26、控制线27和地址线28的适当端口(36、37和38)。可信设备24中的每个块可以访问(通常经由控制器30)可信设备24的适当易失性存储区域4和/或非易失性存储区域3。此外,以已知的方式将可信设备24设计为抗篡改。
因为性能的原因,可信设备24可被实现为特定用途集成电路(ASIC)。但是,对于灵活性,可信设备24优选的是适当编程的微控制器。ASIC和微控制器都在微电子领域中是已知的,并且在这里不作进一步详细的描述。
在可信设备24的非易失性存储器3中存储的一个数据项是证书350。证书350至少包含可信设备24的公共密钥351和由可信方(TP)测量的平台完整性度量的鉴权值352。证书350在被存储到可信设备24之前由TP使用TP的私有密钥来签名。在之后的通信会话中,平台10的用户可通过验证TP在证书上的签名来推出公共密钥属于可信设备。并且,平台10的用户可通过将所获取的完整性度量与真实的完整性度量进行比较来验证平台10的完整性。如果存在匹配,则用户可以相信平台10还没有被破坏。TP一般可用公共密钥的知识能对证书350进行简单验证。非易失性存储器35还包含身份(ID)标签353。ID标签353是传统的ID标签,例如序列号,其在一些上下文中是唯一的。ID标签353一般用于与可信设备24有关的数据的索引和标记,但是其本身不足以证明平台10的身份在可信条件下。
可信设备24装备有用于可靠测量或获取与其关联的计算平台10的完整性度量的至少一个方法。在本实施例中,在涉及在BIOS存储器中生成BIOS指令的摘要的进程中由测量功能31获取存储器第一完整性度量。该所获取的完整性度量,如果如上述那样被验证,则为平台10的潜在用户给出平台10还没有在硬件、或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 specificationv 2.0-BOOT Integrity Service”中得知,并且涉及在加载软件或固件之前计算该软件或固件的摘要。这样所计算的摘要与存储在由可信实体提供的证书中的值比较,可信实体的公共密钥对于BIOS是已知的。如果所计算的值匹配来自证书的所期望值,则接着加载软件/固件,并且已经使用可信实体的公共密钥来证明证书有效。否则,调用适当的异常处理例程。可选地,在接收了计算的BIOS摘要后,可信设备24可以检查证书中BIOS摘要的正确值并且如果计算的摘要不匹配该正确值,则不把控制传递到BIOS——可调用适当的异常处理例程。
简要地描述可信计算平台制造的工艺和第三方的验证,但是其不属于本发明的基本意义而在上面所标识的“可信计算平台——上下文中的TCPA技术”中详细讨论。
在第一个实例(其可能处于制造中),为可信平台担保的TP将检查平台的类型以判断是否为它担保。该TP将签署一个与可信设备身份和检查结果有关的证书——这接着被写到可信设备。
在平台操作期间的某之后的点,例如当它被接通或复位时,可信设备24获取并存储平台的完整性度量。当用户希望与平台通信时,他使用询问/响应例程来询问可信设备24(平台的操作系统或适当的软件应用可设置为识别该询问并且以适当方式通常经由BIOS类型的调用将它传递给可信设备24)。可信设备24接收询问并基于测量的一个或多个完整性度量来创建适当的响应——这可具有证书和签名。这提供了充足的信息以允许用户验证。
由PCR保存的值可用作为可信平台状态的指示。不同的PCR可以分配有特定目的(这例如是在可信计算组规范中完成的)。可要求可信设备为一些或所有的其PCR提供值(实际中是这些值的摘要——通过TPM_Quote命令)并签名这些值。如上所述,数据(通常是密钥或口令)可以针对一些或所有PCR的值的摘要被密封(通过TPM_Seal命令)到不透明斑点中。这将确保如果平台在PCR所表示的(可信)状态下,则只使用所密封的数据。对应的TPM_Unseal命令对PCR的当前值执行相同的摘要。如果新的摘要与不透明斑点中的摘要不相同,那么用户不能通过TPM_Unseal命令恢复数据。如果导出了PCR值的任何测量与已经变化的平台上的软件有关,则对应的PCR将具有不同的值——传统可信平台将因此不能恢复密封的数据。
现在将参考在有所修改的情况下应用如上所述的可信计算平台结构的实施例来描述本发明的各方面。提供等效功能和可信属性的新的或更新软件的方法将被首先描述,连同还描述了用于允许可信计算平台指明其软件功能并验证其可信状态而不需要显露它所使用的特定软件的机制。示例方法被描述为用于展示在用在功能上和信任上等效的软件来替换所述软件之前和之后的PCR值可以被示出为等效,并且使用该方法来解决诸如上面对于软件状态密封数据中所述的问题。
注意到,在现有可信计算平台布置中,实体实际上将它们在可信计算平台中的置信度以与在平台中安装的软件有关的签名声明为基础。发明人已经理解,可信平台可以提供软件要被信任的声明验证证据,而不是提供实际的软件测量。这具有若干优点。如果可信设备不再保存软件测量的值,则在物理上可信设备不可能报告软件测量的值。如果验证处理包括两个软件测量的值的信任等效性的证据(并且声明由可信测量实体做出),则在以规定方式改变软件后,可信设备将包含可用来(如下在示例布置中所述的)重新能够访问密封纯文本数据的信息。
积极结果得之于根据担保平台中的软件的声明所进行的工作,而不是平台中的实际软件。如果担保现有软件的一方准备担保替换软件就像现有软件一样可接受,则为此目的的适当声明的用途可如此被使用使得平台可以重新能够在安装这种替换软件之后访问密封的纯文本数据。在实践中,可信平台的拥有者必须选择他期望为他的平台担保的各方。拥有者可以选择任何方或者他们的集合,只要该一或多方对于与平台交互的那些人具有可信性。拥有者可以改变各方或他们的集合,只要那些方愿意确认彼此为可信对等体。这使商业公司和非营利组织都担保相同的可信平台。
图5说明了根据本发明的实施例进行测量并将它们记录在TPM507中的过程中的显著步骤。在步骤5.1,为测量的信任根(RTM)或测量代理501做出数字对象502的摘要。在步骤5.2,RTM或测量代理501读取与数字对象502关联的验证声明503。在步骤5.3,RTM或测量代理501写出描述摘要对象502及其验证声明503的日志504。在步骤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、B1、C,根据本发明的本实施例,它们必须被记录以便允许由软件A、B1、C生成的平台状态被识别为与由软件A、B、C生成的平台状态信任等效。
如果一方想要担保特定的程序,则它产生签名的声明。如果该程序不是升级或替换,则该方创建新的声明,或者如果该程序是升级或替换,则在声明列表中创建下一个条目。声明可描述一个或多个程序。如果声明描述一个以上的程序,则暗示了所有程序被签名方当作为对期望的任务功能相同且同样值得信任。
在图7中示出声明的示例形式。声明701具有结构[programDigestsN,statementID N,prevStatementDigestN,nextPubKeyN]和具有辅助结构732[pubKeyN](734)和[signatureValueN](736)。字段pubKey和声明ID足以明确识别在声明中暗示的验证处理。下面将描述声明701的元素。
o programDigests710是由声明担保的程序摘要。这不需要是单个程序的摘要——它可能由包含由声明担保的一个以上程序的摘要的结构组成。它甚至可能是包含由声明担保的一个以上程序的摘要的结构摘要。清楚地,在这样的实施方式中,实际摘要还必须对于平台可用。如下所述,可能对于多个程序的用户存在保密性优点,称为programDigests。
o statementID720是一个标签,使得能够识别声明的目的的描述。该描述可包括程序的描述、程序的预期使用、程序的效果、关于程序的另一信息、和随机数或其它数。statementID用作为从用相同密钥签名的任何其它数据中区分声明。
o 如果程序不是另一程序的升级或替换,则prevStatementDigest730是NULL,并且PubKey是应当用于验证signatureValue的密钥。但是,如果程序是现有程序的升级或替换,则prevStatementDigest是该先前声明的摘要,并且来自该先前声明的nextPubKey740是应当用于验证signatureValue的密钥。换句话说,一个声明中的nextPubKey是必须在下一声明中使用的PubKey。
可以看出,nextPubKey和它们之间的prevStatement允许有关的声明形成向后和向前链接的列表——这样的连接由图8说明。使用与pubKey0734.0,nextPubKey0 740.0,nextPubKey1 740.1,....nextPubKeyN 740.N对应的私有密钥,借助签名值来向前链接这样的声明801、802和803的列表。借助prevStatementDigest1 730.1,.....prevStatementDigestN 730.N来向后链接列表。通过包括programDigests 710.0 710.1 710.N的数据借助签名值736.0 736.1 736.N来将列表的每个成员链接到一个或多个程序。
在图8所示的一种方法中,声明的列表开始于跟有[statementID 0720.0,programDigests0 710.0,NULL 730.0,nextPubKey0 740.0]和[signatureValue0 736.0]的pubKey0 734.0,其是用与pubKey0 734.0对应的私有密钥签名[statementID_0 720.0,programDigests0 710.0,NULL730.1,nextPubKey0 740.0]的结果。列表以[statementID_1 720.1,programDigests1 710.1,prevStatementDigest1 730.1,nextPubKey1 740.1]和[signatureValue1 736.1]继续,其是用与nextPubKey0 740.0对应的私有密钥签名[statementID_1 720.1,programDigests1 710.1,prevStatementDigest1 730.1,nextPubKey1 740.1]的结果。列表以相同的方式继续。
图8中的箭头说明了nextPubKey0 740.0与pubKey1 734.1相同,nextPubKey1 740.1与pubKeyN 734.N相同,依此类推。
发布声明方应当理解,列表中的声明共同具有功能等效性和信任的普通证据,但是在其它方面,声明可以不同。例如,与statementN关联的程序不必须得是与statementM关联的程序,因此programDigestsN不必与programDigestsM相同。这意味着,在列表的开始处与声明关联的程序可以与在列表的任何中间点或列表的结束处的声明关联的程序不同(或相同)。类似地,列表中的PubKeyN可以或可以不与nextPubKeyN相同。因此,用于验证signatureValue0的密钥可以或可以不与用于验证signatureValueN的密钥相同,无论N是列表中的中间声明或列表中的最后声明。因此,一方可以相隔一定距离改变它的签名密钥(根据推荐的安全措施)或可以将信任交接给具有不同签名密钥的另一方。
在该方法的修改中,PubKey和nextPubKey可以是密钥的摘要或包含一个或多个密钥的结构的摘要。清楚地,在这样的实施方式中,实际的公共密钥必须还对于平台可用。在这样的情况下,与该结构中的任何公共密钥摘要对应的任何私有密钥可以用于签名声明,并且多个方可以同时担保平台值得信任。
应当注意,对于给定的软件类型,需要一致地使用该类型的声明或根本不使用它们(并相反例如使用传统TCG方法)。如果声明将要用于一种软件类型,则要由平台担保的软件类型的第一实例需要具有声明。如所述的,从传统TCG方法切换到具有声明的升级不是可行的方法。
现在将描述当被要求识别其软件时允许可信平台实现私有保密性测量的机制。这要求发出声明的一方实际上发出两个声明,如上面描述的一个以及省略了programDigests字段的类似辅助声明。图9说明了辅助声明910,它由字段pubKey 734,StatementID 720,prevStatementDigest730,nextPubKey 740,signatureValue 736组成并缺少programDigests字段710。这些辅助声明而不是先前描述的主声明可能被返回到从可信设备接收完整性度量的询问器。这些辅助声明能够防止识别安装在平台中的实际程序。如果主声明中的programDigests字段仅仅描述了一个程序,则它当然识别该程序由平台使用——因此如果辅助声明应当在询问响应中使用时,就存在清楚的保密性优点。即使programDigests字段描述了一些程序,它可被认为显露太多有关平台的信息,并且如果要求私有性,则辅助声明应当在询问响应中使用。只有当programDigests字段描述许多程序时,询问响应中的主声明的使用才与私有性明显无关。用于验证主声明的公共密钥必须还用于验证辅助声明,并且相同的statementID应当在两个声明中出现。这些约束对于提供主声明和辅助声明之间的可验证连接是必须的。自然地,主声明的签名值不同于辅助声明的签名值。
现在描述与声明关联的新的或替代软件的验证,这将会是验证处理的记录。该处理的本质是用一个或多个扩展操作来代替单个扩展操作(对于平台的一个方面),每个扩展操作描述与平台的这方面有关的声明。
对于要执行和记录的验证,随后要求了:可信测量代理执行声明验证处理,并且可信验证实体必须验证程序、必须验证声明、且必须验证声明的列表充分链接。测量实体被信任是因为与实体有关的证明或由可信测量代理进行的实体测量。
为了验证程序,测量实体创建程序的摘要并将该摘要与声明中(来自字段programDigests)的信息比较。测量实体必须记录该处理是否成功的指示。一个实施方式是在可信设备中记录为真或假的verifiedProgram标记。如果程序与链接列表关联,则该比较应当只使用列表中最后的声明来完成。(列表中先前的声明只提供程序演化的历史和程序的证明)。
为了创建声明的可验证记录,测量实体必须在可信设备中记录至少声明的签名是否被成功验证。一个实施方式是在可信设备中记录设置为真或假的verifiedStatement标记。
为了创建声明的验证的可审计记录,测量代理必须记录用于执行验证的技术。一个实施方式是在可信设备中记录用于验证声明上的签名的公共密钥(pubKey或nextPubKey)。如果可行,测量代理还验证用于验证声明上的签名的该公共密钥是现存的(未被撤销),但这可能超过了大多数测量代理的能力。如果还可能确定此,则测量实体总是在公共密钥不是现存的时将verifiedStatement标记设置为假。
如果与公共密钥对应的私有密钥只用于签名单个类型的声明,则不要求与签名的意图有关的声明。否则,指明签名属于特定声明的信息必须用公共密钥来记录。一个实施方式是在可信设备中记录StatementID。
为了区分单个声明或列表的开始,一个实施方式是如果声明不是用另一个声明的nextPubKey验证的或者如果声明的prevStatementDigest不是前一个声明的摘要值,则用标记startStatement==TRUE来对声明的验证加标签,否则用标记startStatement==FALSE来对声明的验证加标签。
链接列表的任何成员必须向前和向后被验证。如果链接测试通过,则声明用标记verifiedList==TRUE来加标签。否则,声明用标记verifiedList===FALSE来加标签。
为了创建被验证声明的列表的完整记录,测量实体必须在可信设备中记录列表中所有声明的实质特性,并且列表中的所有声明是否通过了它们的验证测试。优选实施方式是在可信设备中记录列表中的所有声明,同时在可信设备中单独记录列表中每个声明上的验证测试结果。
按照该方法,在访问声明之后,测量实体可以在可信设备中记录至少数据结构STATEMENT_VERIFICATION,其至少包含(1)用于验证声明的公共密钥,(2)statementID,如果存在的话。对于每个PCR,可信设备维护upgradesPermitted标记,该标记在PCR初始化时为真但是每当平台遇到与该PCR关联的且verifiedProgram==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==FALSE时,复位适当的upgradesPermitted标记。
上面描述的验证处理捕获了证实升级或替换软件与早先软件信任等效而所需要的信息。与报告询问时的软件状态关联的保密顾虑因此可通过使用描述许多程序的声明或通过使用辅助声明而改进。要求进一步的步骤来解决访问对于早先平台状态以及早先软件密封的不透明斑点中的数据的问题。如下将所指出的,将可能重新填封这些不透明斑点到与新软件状态关联的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]。TPM被加载了形式为[uPCR,PCR-index,A~,B~]或[PCR-index,C~]的多个数据结构。该TPM验证:(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必须由复合散列compHash和复合散列compHash&中的PCR值C~来表示。TPM以PCR-indexList中反映的顺序从输入数据中提取相关的PCR值,并将它们用于创建复合散列compHash和compHash&。输出数据中的串Uhash是证据的类型。
·TPM_upgrade_seal([sealedBlob],[Uhash,compHash,compHash&,PCR-indexList])用复合散列值compHash&替换密封斑点[sealedBlob]中的复合散列值compHash。TPM被加载了密封斑点[sealedBlob]和[Uhash,compHash,compHash&,PCR-indexList]。该TPM验证它创建了这两个结构并且第二结构包含串Uhash。如果[sealedBlob]使用与PCR-indexList中所列出的相同的PCR并且其复合散列值是compHash,则该TPM用compHash&来替换compHash,并且输出修改的密封斑点。
现在纯粹作为一个例子来描述这些新功能的一个用途。
图10说明了两个信任等效的完整性度量序列1001、1002。这两个序列都是同一完整性度量序列A0 B0 C0 D0 E0的升级。第一序列1001已经不同于第二序列1002被升级。第一完整性度量序列1001是A0 B1 C0 D1E0。第二完整性度量序列1002是A0 B0 C1 D2 E0。字母之后的数字指明升级的演变:完整性度量A0不是升级;完整性度量B1是从B0的升级;完整性度量C1是从C0的升级;完整性度量D1是从D0的升级;完整性度量D2是从D1的升级;完整性度量E0不是升级。这些关系在图1003和1004中说明,其中每个连续列是可信平台不同方面的完整性度量,并且每列说明了特定完整性度量的演变。根据本发明的该实施例加载到PCR中的完整性度量的实际序列在图1005和1006中说明。与第一序列1001等效的完整性度量的实际序列是A0 B0 B1 C0 D0 D1 E0 1005。与第二序列1002等效的完整性度量的实际序列是A0 B0 C0 C1 D0 D1 D2 E0 1006。所得的完整性度量序列在图1007和1008中说明。与第一序列1001等效的PCR值的实际序列是1007R~A0~B0~B1~C0~D0~D1~E0~,其中R~是该特定PCR的复位状态。与第二序列1002等效的PCR值的实际序列是1008R~A0~B0~C0~C1~D0~D1~D2~E0~。要求向TPM证明第一PCR序列1007与第二PCR序列1008是信任等效的。使用上面功能的一个实施方式是:
1.TPM_upgrade_extend(R~,A0)=>[Uextend,R~,A0~,A0]
2.TPM_upgrade_extend(A0~,B0)=>[Uextend,R~,B0~,B0]
3.TPM_upgrade_concat([Uextend,R~,A0~,A0],[Uextend,A0~,B0~,B0])
Figure G2009101370344D00191
[Uextend,R~,B0~,B0]
4.TPM_upgrade_forkRoot(Uextend,R~,B0~,B0)=>[Ufork,R~,B0~,B0,B0~,B0]
5.TPM_upgrade_link(B0,B1)=>[Ulinked,B0,B1]
6.TPM_upgrade_forkLink([Ufork,R~,B0~,B0,B0~,B0],[Ulinked,B0,B1],[0])=>[Ufork,R~,B1~,B1,B0~,B0]
7.TPM_upgrade_forkExtend([Ufork,R~,B1~,B1,B0~,B0],[C0])=>[Ufork,A~,C0~,C0,C0~,C0]
8.TPM_upgrade_link(C0,C1)=>[Ulinked,C0,C1]
9.TPM_upgrade_forkLink([Ufork,R~,C0~,C0,C0~,C0],[Ulinked,C0,C1],[1])=>[Ufork,R~,C0~,C0,C1~,C1]
10.TPM_upgrade_forkExtend([Ufork,R~,C0~,C0,C1~,C1],[D0])=>[Ufork,R~,D0~,D0,D0~,D0]
11.TPM_upgrade_forkExtend([Ufork,R~,D0~,D0,D0~,D0],[D1])=>[Ufork,R~,D1~,D1,D1~,D1]
12.TPM_upgrade_link(D1,D2)=>[Ulinked,D1,D2]
13.TPM_upgrade_forkLink([Ufork,R~,D1~,D1,D1~,D1],[Ulinked,D1,D2],[1])=>[Ufork,R~,D1~,D1,D2~,D2]
14.TPM_upgrade_forkExtend([Ufork,R~,D1~,D1,D2~,D2],[E0])=>[Ufork,R~,E0~,E0,E0~,E0]
15.TPM_upgrade_forkPCR([Ufork,R~,E0~,E0,E0~,E0],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中。
迄今,已经假设了信任等效性是互逆的:例如由完整性度量A0表示的软件与由完整性度量A1表示的软件同样值得信任。可能不总是这样的情况。升级软件的原因可能是校正或提高软件的值得信任度,例如在该情况下,由完整性度量A1表示的软件可能代替由完整性度量A0表示的软件而使用,而完整性度量A0表示的软件可能不能代替由完整性度量A1表示的软件而使用。因此,将额外信息添加到声明701、指明值得信任度是否是互逆的是必要的。这必须作为要签名以创建签名值736的数据的一部分而被包括,并且在新的TPM功能中被反映,使得(当需要时)一个分支中的完整性度量总是与另一个分支中的完整性度量相同,或者向后链接到其它分支中的度量。
在一个实施方式中:
·reciprocalFlag字段被插入到声明701中,并且如果前一(向前链接)度量是当前(向后链接)度量的可接受替换,则被设置为真,否则为假。
·结构[Ulinked,A,B]被修改为变成[Ulinked,A,B,reciprocalLink]并且意思是如果reciprocalLink为真,则A可以由B替换而B只能由A替换。
·命令TPM_upgrade_link(SA,SB)被修改为产生reciprocalLink标记并且如果[SB的reciprocalFlag为假],则将reciprocalLink设置为假。
·结构[Ufork,A~,B~,B,C~,C]被修改为变成[Ufork1,A~,B~,B,C~,C,reciprocal0,reciprocal1]。reciprocal0和reciprocal0都由TPM_upgrade_forkRoot设置为真。如果在TPM_upgrade_link操作期间曾扩展第一完整性集合[B~,B]并且其reciprocalLink为假,则reciprocal0被设置为假。类似地,如果在TPM_upgrade_link操作期间曾扩展第二完整性集合[C~,C]并且其reciprocalLink为假,则reciprocal1被设置为假。
·如果reciprocal0在输入到TPM_upgrade_forkLink的Ufork1数据中为假,则在[branch]==1时该命令必须失败。类似地,如果reciprocal1在输入到TPM_upgrade_forkLink的Ufork1数据中为假,则在[branch]==0时该命令必须失败。
·命令TPM_upgrade_forkPCR被修改为检查输入Ufork结构中的标记reciprocal0和reciprocal1。如果那些标记指明一个PCR值可以用于开封用其它PCR值密封的数据,但是反之不亦然,TPM排序修改的uPCR结构[uPCR,PCR-index,X~,Y~]中的PCR值,使得对于X~密封的数据可用Y~开封。
在实施例中,该发明涉及记录TPM中的声明的链接列表。我们现在描述了与这样的链接列表的长度有关的本发明的实施例的各方面。完整的链接列表的记录被期望来明确地记录平台状态的完整世系。不幸的是,记录完整列表将增加记录完整性度量所需的时间,并且增加验证声明所需要的存储,这二者或其一可能是不期望的。因此,所期望的是从链接列表中移除较旧的声明,并且在限制内将链接列表减小到单个声明(最近链接的声明)。
任意数量的声明(包括仅仅一个声明)可以记录在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_forkLink1([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中。我们假设我们被要求证明完整性度量序列A0 B0与完整性度量序列A0 B1是信任等效的。该例子使用省略了如上提到的声明字段的修改数据结构。一个实施方式是:
1.TPM_upgrade_extend(R~,A0)=>[Uextend,R~,A0~]
2.TPM_upgrade_forkRoot(Uextend,R~,A0~)=>[Ufork,R~,A0~,A0~]
3.TPM_upgrade_link(B0,B1)=>[Ulinked,B0,B1]
4.TPM_upgrade_forkLink([Ufork,R~,A0~,A0~],[Ulinked,B0,B1],[0])=>[Ufork,R~,B0~,B1~]
5.TPM_upgrade_forkPCR([Ufork,R~,B0~,B1~],P)=>[uPCR,P,B0~,B1~]
结构[uPCR,P,B0~,B1~]可接着与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通过以下考验的一个方式,所述考验即是在移除程序B0之前的计算机状态与移除程序B0之后的计算机状态是信任等效的。假设平台引导并生成完整性度量[A0],[B0],[C0],[D0]的第一集合。接着平台重新引导并生成完整性度量[A0],[C0],[D0]的第二集合。该第二集合与[A0],[B1],[C0],[D0]相同,其中B1==NULL。目的是要向TPM证明完整性度量[A0],[B0],[C0],[D0]的第一集合与完整性度量[A0],[NULL],[C0],[D0]的第二集合是信任等效的。一个实施方式包括序列:
1.TPM_upgrade_forkRoot(Uextend,R~,A0~,A0)=>[Ufork,R~,A0~,A0,A0~,A0]
2.TPM_upgrade_link(B0,B1)=>[Ulinked,B0,NULL]
3.TPM_upgrade_forkLink([Ufork,R~,A0~,A0,A0~,A0],[Ulinked,B0,NULL],[0])=>[Ufork,R~,B0~,B0,A0~,A0]
4.TPM_upgrade_forkExtend([Ufork,R~,B0~,B0,A0~,A0],[C0])=>[Ufork,R~,X(B0~,C0),C0,X(A0~,C0),C0]
剩余的考验如前述那样进行。
本发明的实施例允许三种类型的升级:
·“substitute”,其中一个程序用一个信任等效程序来替换
·“more”,其中一个程序用一个以上的信任等效程序来替换
·“less”,其中一个程序被消除但是结果状态仍认是信任等效的
在本发明的进一步实施例中,当允许密封数据的自动复合散列升级时,创建密封数据的实体明确地声明了升级的类型,并且数据结构记录了示出已经发生的完整性度量升级的类型的指示符。这允许实体明确地声明可引起密封数据中的复合散列值被自动升级的升级类型。例如如果数据拥有者愿意接受程序的单个升级但没有增加或移除程序,或者不期望自动接受任何升级,则这是有益的。
密封数据、开封数据并引导TPM通过证明一个复合散列值与另一个复合散列值是信任等效的处理的处理与前面描述的相同,并有如下变化:
·数据结构[Ufork,A~,B~,B,C~,C],[uPCR,PCR-index,A~,B~],[Uhash,compHash,compHash&,PCR-indexList]被改变为包括标记“substitute”、“more”和“less”。
·命令TPM_upgrade_forkRoot被改变为将输出Ufork结构中的“substitute”、“more”和“less”设置为假。
·命令TPM_upgrade_forkLink被改变,使得:
当该命令用一个信任等效声明替换声明时,它在输出Ufork结构中将substitute设置为真;
当该命令用一个以上的信任等效声明替换声明时,它在输出Ufork结构中设置more=真;
当该命令消除声明时,它在输出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。
如果upgradeOptions=>substitute为假(缺省值),则在程序的1对1替换对复合散列的变化有贡献时,禁止自动更新TPM_STORED_DATA_UFLAGS中的复合散列值。
如果upgradeOptions=>more为假(缺省值),则在程序的1对多替换对复合散列的变化有贡献时,禁止自动更新TPM_STORED_DATA_UFLAGS中的复合散列值。
如果upgradeOptions=>less为假(缺省值),则在程序的消除对复合散列的变化有贡献时,禁止自动更新TPM_STORED_DATA_UFLAGS中的复合散列值。
·现有TCG命令TPM_Seal和TPM_Unseal以及新的命令TPM_upgrade_seal被改变为使得它们对修改的TPM_STORED_DATA结构进行操作。
TPM_Seal被改变为包括额外输入参数“substitute”、“more”和“less”。这些额外输入参数的状态被复制到输出TPM_STORED_DATA结构中具有相同名称的参数。
TPM_Unseal的操作未改变。
TPM_upgrade_seal被改变为使得
·如果upgradeOptions=>substitute为假但Uhash=>substitute为真,则命令失败。
·如果upgradeOptions=>more为假但Uhash=>more为真,则命令失败。
·如果upgradeOptions=>less为假但Uhash=>less(true)为真,则命令失败。
在本发明的进一步实施例中,可选择创建密封数据的实体以强迫该密封数据中复合散列值变化。例如,这允许实体明确地批准由升级的程序来访问现存的密封数据。正密封和开封的数据的处理要求如下变化:
·通过添加包含标准TCG授权值的新upgradeAuth字段来修改现有的TCG结构TPM_STORED_DATA和/或TPM_STORED_DATA12。
·改变现有TCG命令TPM_Seal和TPM_Unseal使得它们对修改的TPM_STORED_DATA进行操作。
改变现有TCG命令TPM_Seal为包括额外输入参数upgradeAuth(通常是加密的)。
TPM_Unseal的操作未改变。
使用标准TCG授权协议来授权新的TPM命令TPM_upgrade_SealForce([sealedBlob],compHash),以证明拥有与sealedBlob中的upgradeAuth相同的值。TPM打开现有的sealedBlob,用值compHash来替换现有的复合散列值并输出修改的密封斑点。
用TCG技术当前不可能进行自动的复合散列升级并且一些数据拥有者已经在认为它们不能自动升级的情况下使用密封的斑点。TCG已经声明了无论何时可能都维持反向兼容性的意图。因此不期望的是,允许使用现有命令和结构来自动升级密封斑点。优选的是,创建数据结构和命令的新版本以实施为本发明的实施例描述的技术。当数据拥有者希望允许自动升级时,他们应当使用这些新的结构和命令,并且当他们不期望允许自动升级时,继续使用这些新的结构和命令。TCG还可能期望仅就将来的TPM而反对现有的TPM_STORED_DATA结构以及TPM_Seal和TPM_Unseal命令。因此被设计为允许自动升级的任何新结构和命令还应当使自动升级能够被禁用。不信任一些或所有形式自动升级的数据拥有者可能期望使用显式升级,其固有地要求新的数据结构。因此,任何新的结构和命令还应当允许显式升级。因此,优选的:
·现有TPM_STORED_DATA和/或TPM_STORED_DATA12结构没有按如上所述被修改,但是通过向TPM_STORED_DATA和/或TPM_STORED_DATA12增加字段upgradeOptions和upgradeAuth字段来创建新的结构(称为TPM_STORED_DATA_UPGRADE)。
·TPM_Seal和TPM_Unseal没有按如上所述被修改,但是通过向TPM_Seal和TPM_Unseal增加upgradeOptions和upgradeAuth字段来创建新的命令。该新的命令应当对TPM_STORED_DATA_UPGRADE结构进行操作。
·命令TPM_upgrade_seal和TPM_upgrade_SealForce([sealedBlob],compHash)应当只对TPM_STORED_DATA_UPGRADE结构进行操作。
现在将描述完整性度量和PCR值的升级的一个例子。这发生在虚拟平台从一个主机可信平台迁移到另一个主机可信平台期间。这个例子假设虚拟平台使用对PCR值密封的数据斑点,所述PCR值表示主机平台的属性。本发明的实施例允许在这些密封数据斑点中记录的PCR值不在它们当前能被开封的环境下升级。因此,使用本发明的实施例的优点在于,虚拟平台可以被定制为在迁移到不同主机平台之前或之后在不同主机平台上工作。
如果客户愿意信任虚拟平台,则客户应当信任管理主机平台的实体。这是因为管理实体具有将虚拟平台移动到不同主机平台的能力。所期望的是,管理实体应当采取行动来实例化同样值得信任的主机平台上的虚拟平台。这是因为流氓主机平台能破坏它所装载的任何虚拟平台,并且虚拟平台无法保护它自己免于流氓主机平台或流氓管理实体的破坏。因此使用虚拟平台的客户会要求不知道主机平台——要么管理实体实例化同样值得信任的主机平台上的虚拟平台,要么它不实例化。
第三方通过执行完整性询问并检查返回的PCR值、事件日志和证书来发现平台的信任属性。揭露平台是否是虚拟的信息(以及主机平台的性质,其可能本身是虚拟的)可以在虚拟平台的PCR中和/或可以在虚拟平台的证书中。
将与安全服务协定有关的信息放入虚拟平台的PCR栈中对于主机管理实体存在一个优点。该优点是,它使得在保持所协定的安全等级的同时平衡计算负载更加容易。虚拟平台的用户可将他们的数据密封到指明其协定的安全服务等级协定(SSLA)的PCR。SSLA限制越少,可支持用户的主机平台的范围就越大,主机实体提供服务并在主机平台之间交换虚拟平台就更容易。如果虚拟平台的实际SSLA PCR值匹配密封数据斑点中用户的SLA值,则用户可访问他的数据并消耗平台资源。否则,用户不能访问并消耗。因此,如果主机管理实体将客户移动到不满足用户的SSLA的主机,则用户的数据将自动被防止在不适当的环境中使用。
在SSLA中表示的因素包括:
·虚拟TPM的类别
·IP地址
·正常运行时间
·地理位置
·虚拟LAN的存在
·虚拟LAN的类型
·虚拟平台是否可克隆
·平台算法灵活性
将与主机平台有关的信息放入虚拟平台的PCR栈中对于客户存在一个缺点。这是因为虚拟平台的PCR栈会不同于专用(非虚拟)平台的PCR栈,因此配置为使用专用平台操作的软件将不能自然地在虚拟平台上操作。
一些设计者可决定将与主机平台有关的信息放到所装载的虚拟平台的证书中,另外的设计者决定将主机信息放到所装载的虚拟平台的上的PCR中,而其它设计者可能选择两者。
如果设计者将主机信息放在所装载的虚拟平台的上的PCR中,并且用户创建对那些PCR密封的数据斑点,则所期望的是,升级那些PCR值,前提是目的地主机平台的属性至少与源主机平台的属性等效。这可以通过使用前述技术来完成。前述的PCR和完整性度量升级技术尤其有利,因为他们不要求由密封数据当前描述的环境存在。因此,虚拟平台可迁移到新的主机并且当它到达该新的主机时被重新创建,或反之亦然。
该优点对于主机管理实体的一个影响是,主机管理实体可给使用由主机管理实体提供的虚拟平台的客户提供优选项,前提是它们同意与虚拟所允许的平台实例化有关的信息出现在平台的PCR栈中。因此,如果用户的密封数据斑点总是包括其值表示与所允许的平台实例化有关的信息的PCR,则即使当平台是专用平台时,用户也可在所有平台上使用相同的软件配置,并且当使用虚拟平台时利用优选项。自然地,该技术还允许客户在不同类型的专用平台上使用他们的密封数据。
我们现在纯粹作为例子而描述了虚拟平台VP从一个主机可信平台P1迁移到另一个主机可信平台P2。在图11中示意性说明了所示平台的元件。平台P1可以是物理或虚拟平台。平台P2可以是物理或虚拟平台。主机平台包含TPM(在P1上称为TPM-P1并且在P2上称为TPM-P2)。虚拟平台VP包括主虚拟平台计算环境VPCE和虚拟可信平台模块(VTPM)。其主机平台的至少一个属性记录在VTPM的PCR中。该VPCE包括由VTPM保护的数据斑点并且可被密封到取决于主机平台属性的PCR。主机平台将VPCE和VTPM彼此以及与主机平台的其它部件相隔离。主机平台包括在另一个隔离的计算环境中运行的迁移进程MP(在P1上称为MP-P1并且在P2上称为MP-P2)。主机平台中提供隔离的组件是虚拟化组件(VC)(在P1上称为VC-P1并且在P2上称为VC-P2)。主机平台的TPM中的PCR值包括表示其MP和VC状态所需的所有数据。
VP初始地在P1上被实例化。当VP需要迁移(当用户请求或作为来自提供者的维护操作时),迁移进程MP-P1首先挂起VPCE在P1上的执行并且接着挂起对应的VTPM。尽管VTPM的挂起可能不要求任何附加的步骤,但是VTPM的挂起必须确保由VTPM使用的任何秘密VTPM-秘密从存储器移除并由TPM-P1来保护。如图12所示,MP-P1接着通过执行如下步骤将VP从P1迁移到P2。
1)检查(1210)目的地平台P2是适当的真实可信平台并获得其证明身份密钥之一。
如果MP-P1还不信任P2并且知道其TPM密钥之一,则P1使用与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-秘密从P1迁移(1230)到P2
MP-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保护的秘密在P1上时保护它们。最后在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值。当原始环境不可用时、当从备份中恢复数据时、或当在不同系统上复制它时,密钥结构的升级例如可能是所期望的。尤其,可迁移密钥可用于方便备份和恢复,并用于复制数据(在不同的平台上或在不同的操作系统上)。当前TCG密钥迁移命令,比如TPM_CreateMIgrationBlob和TPM_CMK_CreateBlob明确地忽略了PCR_COMPOSITE值。因此TCG可信平台技术可得益于在本发明的实施例中所描述的方法,从而改变TPM密钥结构中的复合-PCR值。

Claims (2)

1.一种将虚拟可信计算平台从第一可信计算平台迁移到第二可信计算平台的方法,每个可信计算平台包括免受破坏并适于测量该可信计算平台的计算环境方面的可信设备,并且其中虚拟可信计算平台包括虚拟可信设备和虚拟计算环境,虚拟可信设备被保护以免受虚拟计算环境的影响,虚拟可信平台中的信任根源于主控虚拟可信平台的可信平台的可信设备,该方法包括:
第一可信计算平台上的第一迁移进程确定第二可信计算平台是可信计算平台;
第一迁移进程用第二可信计算平台的属性来更新虚拟可信平台的数据结构;
第一迁移进程将虚拟可信平台的秘密从第一可信计算平台迁移到第二可信计算平台;和
将虚拟可信平台转移到第二可信计算平台并恢复虚拟可信平台的操作。
2.如权利要求1中所述的方法,其中第一可信计算平台和第二可信计算平台中的至少一个本身是虚拟可信计算平台。
CN 200910137034 2005-03-22 2006-03-22 用于可信数据的方法、设备和数据结构 Expired - Fee Related CN101551841B (zh)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
GB0505746A GB2424494A (en) 2005-03-22 2005-03-22 Methods, devices and data structures for trusted data
GB0505746.8 2005-03-22
GB0510558A GB0510558D0 (en) 2005-05-25 2005-05-25 Methods, devices and data structures for trusted data
GB0510558.0 2005-05-25
GB0512370A GB0512370D0 (en) 2005-06-17 2005-06-17 Methods, devices and data structures for trusted data
GB0512370.8 2005-06-17
GB0516534A GB0516534D0 (en) 2005-08-12 2005-08-12 Methods, devices and data structures for trusted data
GB0516534.5 2005-08-12
GB0521836.7 2005-10-27
GB0521836A GB0521836D0 (en) 2005-10-27 2005-10-27 Methods, devices and data structures for trusted data
GB0522598.2 2005-11-07
GB0522598A GB0522598D0 (en) 2005-11-07 2005-11-07 Methods, devices and data structures for trusted data

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN200680009269.XA Division CN101147154B (zh) 2005-03-22 2006-03-22 用于可信数据的方法、设备和数据结构

Publications (2)

Publication Number Publication Date
CN101551841A CN101551841A (zh) 2009-10-07
CN101551841B true CN101551841B (zh) 2012-10-03

Family

ID=34531579

Family Applications (2)

Application Number Title Priority Date Filing Date
CN200680009269.XA Expired - Fee Related CN101147154B (zh) 2005-03-22 2006-03-22 用于可信数据的方法、设备和数据结构
CN 200910137034 Expired - Fee Related CN101551841B (zh) 2005-03-22 2006-03-22 用于可信数据的方法、设备和数据结构

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN200680009269.XA Expired - Fee Related CN101147154B (zh) 2005-03-22 2006-03-22 用于可信数据的方法、设备和数据结构

Country Status (2)

Country Link
CN (2) CN101147154B (zh)
GB (1) GB2424494A (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0707150D0 (en) * 2007-04-13 2007-05-23 Hewlett Packard Development Co Dynamic trust management
US8732444B2 (en) 2009-02-18 2014-05-20 Panasonic Corporation Information processing device and information processing method
CN105515776A (zh) * 2010-03-05 2016-04-20 交互数字专利控股公司 给设备提供安全性的方法和装置
GB2482652B (en) 2010-05-21 2016-08-24 Hewlett Packard Development Co Lp Extending integrity measurements in a trusted device using a policy register
US8516551B2 (en) * 2010-07-28 2013-08-20 Intel Corporation Providing a multi-phase lockstep integrity reporting mechanism
US8943334B2 (en) 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
EP3221996B1 (en) * 2014-11-17 2019-07-24 Intel Corporation Symmetric keying and chain of trust
DE102020206526A1 (de) * 2020-05-26 2021-12-02 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Betreiben einer elektronischen Vorrichtung

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1678968A (zh) * 2002-06-28 2005-10-05 英特尔公司 可信计算机平台
CN1723425A (zh) * 2002-10-09 2006-01-18 英特尔公司 在服务器管理协处理器子系统内封装tcpa可信平台模块功能

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0020371D0 (en) * 2000-08-18 2000-10-04 Hewlett Packard Co Apparatus and method for establishing trust
EP1282027A1 (en) * 2001-07-30 2003-02-05 Hewlett-Packard Company Trusted platform evaluation
CN100334555C (zh) * 2002-12-27 2007-08-29 技嘉科技股份有限公司 智能型固化软件的升级控制方法
US7634807B2 (en) * 2003-08-08 2009-12-15 Nokia Corporation System and method to establish and maintain conditional trust by stating signal of distrust

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1678968A (zh) * 2002-06-28 2005-10-05 英特尔公司 可信计算机平台
CN1723425A (zh) * 2002-10-09 2006-01-18 英特尔公司 在服务器管理协处理器子系统内封装tcpa可信平台模块功能

Also Published As

Publication number Publication date
GB0505746D0 (en) 2005-04-27
GB2424494A (en) 2006-09-27
CN101147154B (zh) 2010-12-22
CN101147154A (zh) 2008-03-19
CN101551841A (zh) 2009-10-07

Similar Documents

Publication Publication Date Title
US8539587B2 (en) Methods, devices and data structures for trusted data
CN101551841B (zh) 用于可信数据的方法、设备和数据结构
US10397230B2 (en) Service processor and system with secure booting and monitoring of service processor integrity
CN101523401B (zh) 用户秘密在计算平台上的安全使用
CN103038745B (zh) 扩展完整性测量
US10528740B2 (en) Securely booting a service processor and monitoring service processor integrity
JP4818542B2 (ja) コンピューティングプラットフォームにおけるサービスの実行
EP1980970B1 (en) Dynamic trust management
JP4860856B2 (ja) コンピュータ装置
EP1030237A1 (en) Trusted hardware device in a computer
CN101650764B (zh) 一种可信计算密码平台及其实现方法
US20100115625A1 (en) Policy enforcement in trusted platforms
WO2011030455A1 (ja) セキュア監査システム及びセキュア監査方法
US20050268093A1 (en) Method and apparatus for creating a trusted environment in a computing platform
NL2033097B1 (en) Method for remotely monitoring host based on chip-level privacy-preserving computation (ppc)
US20030028807A1 (en) Network appliances
US20160239662A1 (en) Control system and authentication device
Zhang et al. Security verification of hardware-enabled attestation protocols
Lioy et al. Trusted computing
CN116956267A (zh) 平台证书的基于管理控制器的验证
BR102017004113A2 (pt) método e sistema para garantir a segurança de dados e funções legalmente relevantes em equipamentos eletrônicos
Abendroth et al. Trusted Computing for Collaboration
GB2412822A (en) Privacy preserving interaction between computing entities

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121003