首页> 中国专利> 用于跨设备受信应用的安全硬件

用于跨设备受信应用的安全硬件

摘要

本文所描述的各种技术涉及包括安全硬件(例如,TPM、处理平台的安全处理器、包括基于软件的TPM的受保护存储器等)的计算设备。安全硬件包括由安全硬件和服务器计算系统共享的共享秘密。共享秘密由服务器计算系统或附属于服务器计算系统的一方的提供计算系统提供。安全硬件还包括密码引擎,其可以使用共享秘密或从共享秘密生成的密钥执行密码算法。密码引擎可以执行密码引擎执行加密、解密、认证和/或证实。

著录项

  • 公开/公告号CN106104558A

    专利类型发明专利

  • 公开/公告日2016-11-09

    原文格式PDF

  • 申请/专利权人 微软技术许可有限责任公司;

    申请/专利号CN201580012404.5

  • 申请日2015-03-05

  • 分类号G06F21/60;

  • 代理机构北京市金杜律师事务所;

  • 代理人王茂华

  • 地址 美国华盛顿州

  • 入库时间 2023-06-19 00:48:03

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-10

    授权

    授权

  • 2016-12-07

    实质审查的生效 IPC(主分类):G06F21/60 申请日:20150305

    实质审查的生效

  • 2016-11-09

    公开

    公开

说明书

背景技术

人们日益依赖于超过一个计算设备。因此,由单个用户拥有的跨多个计算设备的照片、视频、应用、数据和游戏的自动同步变得更普遍。同时,计算设备越来越多地包含受信计算硬件。例如,受信平台模块(TPM)可以被包含在计算设备中来防止固件回滚并且存储和证实(attest)用户的数据加密密钥。

遗憾的是,这两个趋势可能是不一致的。常规受信计算硬件(诸如传统TPM)未提供对于跨设备功能性的好的支持。故意地,这样的TPM提供单个单独的设备的硬件受信根(root-of-trust)。TPM变成装备有其私用部分绝不离开TPM硬件芯片的加密密钥,这降低了可以危害到那些密钥的可能性。单设备TPM保障与对跨设备共享的需要之间的冲突使受信应用处理多设备场景困难。因此,由于这些TPM阻碍跨多个计算设备的数据的无缝共享,因而当前TPM可能不适合于受信移动应用中的跨设备场景。

而且,传统TPM常常是缓慢并且低效的。对于TPM的最小性能要求尚未被设定为从受信计算组(TCG)可用的TPM规格(例如,版本1.2或版本2.0)的一部分。常规TPM的性能障碍通常将这样的TPM的使用限于不要求快速或频繁的操作的场景。可以通过利用更快的内部部件建造这样的TPM来增强TPM的性能;然而,包括这样的部件增加了TPM的成本。

发明内容

在本文中描述了包括安全硬件的计算设备(例如,TPM、包括至少一个不同的处理器的处理平台的安全处理器、包括基于软件的TPM的受保护存储器等)。安全硬件包括共享秘密。共享秘密由安全硬件和服务器计算系统共享。共享秘密由服务器计算系统或附属于服务器计算系统的一方的提供计算系统提供。安全硬件还包括密码引擎,其可以使用共享秘密或从共享秘密生成的密钥来执行密码算法。密码引擎可以执行密码算法来执行加密、解密、认证和/或证实。

而且,安全硬件可以包括远程访问控制组件,其可以生成用于访问服务器计算系统的远程资源的消息(例如,远程存储、密钥、计算、时钟值等),其中,消息可以是响应于安全硬件接收到命令来生成的。密码引擎可以加密消息以用于向服务器计算系统传输。消息可以通过使用共享秘密或从共享秘密生成的密钥的密码引擎加密以生成加密消息。而且,加密消息可以被配置为引起对服务器计算系统的远程资源的访问权。

以上概要呈现了简化概要以便提供本文所讨论的系统和/或方法的一些方面的基本理解。该概要不是本文所讨论的系统和/或方法的广泛概述。其不旨在标识重要/关键元件或描绘这样的系统和/或方法的范围。其唯一目的是以简化形式将一些概念呈现为稍后呈现的更详细描述的前序。

附图说明

图1图示了实现跨设备受信计算的示例性系统的功能框图。

图2图示了控制跨多个计算设备的硬件受保护状态的共享的示例性系统的功能框图。

图3图示了将数据中心地存储在服务器计算系统的远程存储中并且将该数据本地存储在计算设备上的示例性系统的功能框图。

图4图示了支持跨设备受信应用的示例性系统的功能框图。

图5图示了由图4中所示的示例性系统的TPM支持的示例性控制域。

图6-图7图示了用于响应于由计算设备的调用器组件向图4中所示的示例性系统的TPM发出的命令而交换数据的示例性调用流程图。

图8图示了当从服务器计算系统的远程非易失性存储拉出非易失性条目时的示例性同步协议。

图9图示了当非易失性条目被推送到服务器计算系统的远程非易失性存储时的示例性同步协议。

图10是图示了用于加密由安全硬件生成的消息以用于向服务器计算系统传输的示例性方法的流程图。

图11是图示了用于控制跨多个计算设备的硬件受保护状态的共享的示例性方法的流程图。

图12图示了示例性计算设备。

图13图示了示例性计算系统。

具体实施方式

现在参考附图描述涉及使用安全硬件实现跨设备受信计算的各种技术,其中,安全硬件提供有与服务器计算系统共享的共享秘密,其中,相同附图标记被用于自始至终指代相同元件。在以下描述中,出于解释的目的,阐述很多特定细节以便提供一个或多个方面的透彻理解。然而,可以明显的是,可以在没有这些特定细节的情况下实践(一个或多个)这样的方面。在其他实例中,以框图形式示出众所周知的结构和设备以便促进描述一个或多个方面。而且,应理解到,可以通过多个组件执行被描述为由某些系统组件执行的功能性。类似地,例如,组件可以被配置为执行被描述为由多个组件执行的功能性。

而且,术语“或”旨在意指包括性“或”而不是排他性“或”。即,除非另外指定或从上下文清楚的,短语“X采用A或B”旨在意指自然包括性排列中的任一个。即,“短语X采用A或B”满足以下实例中的任一个:X采用A;X采用B;或X采用A和B二者。另外,除非另外指定或从待涉及单数形式的上下文清楚的,如本申请和随附的权利要求中使用的冠词“一”和“一个”应当一般地被解释为意指“一个或多个”。

如本文所阐述的,计算设备的安全硬件提供有与服务器计算系统共享的共享秘密。共享秘密可以被用于使得受信应用能够克服对常规安全硬件(诸如常规TPM)典型的跨设备限制。共享秘密允许服务器计算系统控制安全硬件的资源的一部分;那些资源基于共享秘密被加密。而且,服务器计算系统保持被限制访问由其他设备本地秘密保护的安全硬件的其他资源。而且,共享秘密使得安全硬件能够访问服务器计算系统的远程资源(例如,远程存储、密钥、计算、时钟值等)。服务器计算系统可以通过将时间周期性地记录到可以由安全硬件读取的远程存储来提供受信、同步并且准确的时间源。相比之下,常规安全硬件缺乏受信时间源。而且,与常规安全硬件的存储相比较,服务器计算系统的远程存储提供针对受信应用的更大数量的远程存储(例如,非易失性存储等)并且允许对远程存储的更频繁的写入。因此,本文所描述的安全硬件和服务器计算系统可以减轻对常规安全硬件典型的资源和性能限制。

现在参考附图,图1图示了实现跨设备受信计算的系统100。系统100包括计算设备102。计算设备102包括至少一个处理器104和计算机可读存储106。处理器104被配置为执行被加载到存储106中的指令。根据示例,存储106可以包括计算设备102的操作系统(OS)、一个或多个应用等;因此,处理器104可以被配置为执行OS、一个或多个应用等。

计算设备102可以基本上任何类型的计算设备。计算设备102的示例包括桌面计算设备、服务器计算设备、移动计算设备(例如,膝上型计算设备、上网本计算设备、移动电话、平板计算设备、可穿戴计算设备、手持式计算设备、便携式游戏设备、个人数字助理等)、游戏控制台、娱乐工具、机顶盒、电视、嵌入式计算设备、网络设备、汽车用计算机等。

计算设备102包括安全硬件108(例如,存储106在安全硬件108的外部)。安全硬件108可以包括至少一个安全处理器110。安全处理器110以免受安全硬件108外部的源的访问或干扰的安全方式操作。例如,安全处理器110可以免受安全硬件108外部的计算设备102的组件或模块的访问或干扰。然而,根据其他示例,应预期到,安全硬件108不需要包括安全处理器;而是,可以采用安全硬件108与(例如,安全硬件、存储106的外部的)外部世界之间的处理器104的基于时间的共享。因此,应预期到,描述包括安全处理器110的安全硬件108的示例可以延伸到其中采用处理器104的基于时间的共享的架构。

安全硬件108还包括安全存储112。安全存储112是安全硬件108的外部的源不可访问的。因此,安全存储112由安全硬件108的仅特定功能或其他组件保护并且可以由其访问或被包括在安全硬件108中。例如,由处理器104执行的OS或应用不能读取、写入或修改安全存储112。安全存储112可以包括安全非易失性(NV)存储和安全易失性存储。

系统100还包括服务器计算系统114。服务器计算系统114可以是或包括一个或多个服务器计算设备。例如,服务器计算系统114可以是或包括一个或多个数据中心,其中,数据中心包括多个服务器计算设备。一个或多个数据中心可以备选地包括服务器计算系统114。而且,服务器计算系统114可以是分布式计算系统。根据示例,服务器计算系统114可以是云。

服务器计算系统114提供用于计算设备102的安全硬件108的各种远程资源。例如,服务器计算系统114可以提供用于计算设备102的安全硬件108的集中式数据存储。服务器计算系统114包括远程存储116。因此,远程存储116是与计算设备102分离的。如本文更详细描述的,计算设备102的安全硬件108可以使得数据写入服务器计算系统114的远程存储116和/或使得数据从服务器计算系统114的远程存储116读取。远程存储116可以包括持久地存储数据值的数据结构。

计算设备102的安全硬件108提供有共享秘密118。安全存储112包括共享秘密118。对安全硬件108进行设计,使得共享秘密118不离开安全硬件108。而且,共享秘密118与服务器计算系统114共享。因此,服务器计算系统114的远程存储116包括共享秘密120,其与共享秘密118匹配(例如,共享秘密118和共享秘密120是相同的)。而且,服务器计算系统114防止共享秘密120离开远程存储116。例如,具有小受信计算基(TCB)的安全管理程序、窄接口或增加的保护云管理员可以被用于保护服务器计算系统114的远程存储116(例如,以监测和消除可以以其他方式危害到共享秘密120等的恶意软件)。共享秘密118和共享秘密120在本文中统称为共享秘密118-120。

由服务器计算系统114或附属于服务器计算系统114的一方的提供计算系统提供由安全硬件108和服务器计算系统114共享的共享秘密118-120。当安全硬件108提供有共享秘密118时,服务器计算系统114可以提供有共享秘密120。安全硬件108可以经由专有接口提供有共享秘密118(例如,专有接口可以仅可用于安全硬件108的制造商)。根据示例,安全硬件108和服务器计算系统114可以提供有安全硬件108的制造期间的共享秘密118-120。而且,应预期到,可以经由安全密钥更新机制对安全硬件108和服务器计算系统114发出新共享秘密(例如,用以执行安全密钥更新的专用硬件、提供计算系统)。通过图示,计算设备102的用户可以采取计算设备102建立授权实体(诸如移动运营商商店)(例如,附属于服务器计算系统114的一方),其中被授权的实体的工作人员具有专用硬件并且可以执行安全密钥更新。

预期了提供安全硬件108的共享秘密118的各种示例。然而,应预期到,以下示例的组合可以被用于提供安全硬件108的共享秘密118。例如,服务器计算系统114或附属于服务器计算系统114的一方的提供计算系统可以通过在第一次将安全硬件108引入不安全环境中之前将安全硬件118插入到安全硬件108中来提供安全硬件108的共享秘密118(例如,共享秘密118在制造期间可以被插入安全硬件108中)。这样的将共享秘密118提供到安全硬件108中可以是一次性操作,例如,其中在提供共享秘密118之后修改安全硬件108使得安全硬件108被禁止在之后重新提供。根据另一示例,可以使用专用硬件将共享秘密118提供(或重新提供)到安全硬件108中;继续该示例,安全硬件108可以包括用于验证试图插入共享秘密118的专用硬件的机构(例如,该机构可以评估是许可还是拒绝将共享秘密118插入安全硬件108中的专用硬件)。

而且,根据示例,共享秘密118-120还可以由不同的计算设备的不同的安全硬件共享(例如,安全硬件108),不同的安全硬件和服务器计算系统114可以共享共享秘密118-120。继续该示例,安全硬件108、不同的计算设备的不同的安全硬件和服务器计算系统114可以由服务器计算系统114或附属于服务器计算系统114的一方的提供计算系统提供共享秘密118-120。

根据示例,共享秘密118-120可以是共享初级(primary)种子。共享初级种子是永久地被存储在安全硬件108和服务器计算系统114中的随机值。然而,应预期到,安全硬件108可以允许共享初级种子(和由共享初级种子保护的秘密)从安全硬件108和服务器计算系统114清除(例如,当用户准备丢弃计算设备102时);因此,此后可以执行安全密钥更新。共享初级种子由安全硬件108和服务器计算系统114被用于生成针对云控制域的对称/非对称密钥和证据。

安全硬件108可以使用共享秘密118来生成对称密钥122和存储根密钥124(例如,非对称存储根密钥)。从共享秘密118导出对称密钥122和存储根密钥124。而且,对称密钥122和存储根密钥124被存储在安全存储112中。同样地,服务器计算系统114可以使用共享秘密120来生成对称密钥126和存储根密钥128。对称密钥126和存储根密钥128被存储在服务器计算系统114的远程存储116中。对称密钥在本文中还被称为云通信密钥(CCK)。而且,基于共享秘密118-120生成的存储根密钥在本文中还被称为云根密钥(CRK)。

用以生成对称密钥122和126的密钥导出发生两次:一次由安全硬件108,并且一次由服务器计算系统114。类似地,用以生成存储根密钥124和128的密钥导出发生两次:一次由安全硬件108,并且一次由服务器计算系统114。密钥导出是确定性的:因此,安全硬件108和服务器计算系统114生成相同的密钥副本(例如,对称密钥122和对称密钥126是相同的,存储根密钥124和存储根密钥128是相同的)。安全硬件108可以使用密钥导出函数(KDF)(例如,SP800-108)和共享秘密118(例如,共享初级种子)来生成对称密钥122和存储根密钥124,并且服务器计算系统114可以使用KDF和共享秘密120(例如,共享初级种子)来生成对称密钥126和存储根密钥128。

安全硬件108还包括密码引擎130,其被配置为执行一组密码算法。密码引擎130可以使用共享秘密118或从共享秘密118生成的密钥(例如,对称密钥122、存储根密钥124、从存储根密钥124生成的密钥等)来执行密码算法。而且,密码引擎130可以执行密码算法来执行加密、解密、认证(authentication)和/或证实。根据示例,安全硬件108的安全存储112可以包括密码引擎130;继续该示例,密码引擎130可以是由安全处理器110可执行的。

安全硬件108还包括远程访问控制组件132,其生成用于访问服务器计算系统114的远程资源(例如,远程存储116、密钥、计算、时钟值等)的消息。远程访问控制组件132可以响应于安全硬件108接收到命令而生成消息。例如,可以访问远程存储116来写入、读取或修改存储在远程存储116中的数据134。例如,安全硬件108的安全存储112可以包括远程访问控制组件132,并且远程访问控制组件132可以是由安全处理器110可执行的。

根据示例,由远程访问控制组件132生成的消息可以包括指定待读取的远程存储116中的数据134的指示符(例如,索引等)。通过另一示例,由远程访问控制组件132生成的消息可以包括待向服务器计算系统114发送以用于存储在远程存储116中的数据(例如,由远程访问控制组件132生成的消息中的数据可以由服务器计算系统114存储为数据134)。

密码引擎130加密由远程访问控制组件132生成的消息以用于向服务器计算系统114传输。密码引擎130可以使用共享秘密118或从共享秘密118生成的密钥将消息加密来生成加密消息。根据示例,密码引擎130可以使用对称密钥122将消息加密来生成加密消息。加密消息被配置为引起对服务器计算系统114的远程资源的访问权。例如,加密消息可以被配置为导致对服务器计算系统114的远程存储116用以读取数据134的、向远程存储116写入数据、修改数据134等的访问权。

加密消息可以由计算设备102向服务器计算系统114发送。服务器计算系统114可以使用共享秘密120或从共享秘密120生成的密钥来解密加密消息。例如,服务器计算系统114可以使用对称密钥126来解密从计算设备102接收的加密消息。

而且,服务器计算系统114可以响应于由安全硬件108生成的加密消息,生成应答消息。服务器计算系统114可以使用共享秘密120或从共享秘密生成的密钥(例如,对称密钥126)将应答消息加密来生成加密应答消息。而且,加密应答消息可以由服务器计算系统114向计算设备102。加密应答消息可以输入到安全硬件108。密码引擎130可以使用共享秘密118或从共享秘密118生成的密钥(例如,对称密钥122)来解密加密应答消息。

根据示例,由密码引擎130输出的加密消息可以被配置为使得服务器计算系统114向服务器计算系统114的远程存储116写入数据。继续该示例,加密消息可以包括来自安全硬件108的安全存储112的数据(例如,该数据可以非持久地保留在安全存储112中);加密消息可以使得数据被写入为服务器计算系统114的远程存储116中的数据134。应预期到,存储在远程存储116中的数据134可以是持久性数据;然而,所要求保护的主题不限于此。

根据另一示例,由密码引擎130输出的加密消息可以被配置为使得服务器计算系统114从服务器计算系统114的远程存储116读取数据134。继续该示例,密码引擎130可以将加密应答消息解密以输出数据134,其中,加密应答消息响应于加密消息,所述加密消息被配置为使得服务器计算系统114从远程存储116读取数据134(例如,应答消息包括数据134)。而且,安全存储112可以本地存储数据134。

虽然数据134可以持久地存储在远程存储116中,但是安全存储112中的本地高速缓存不是持久的;因此,从服务器计算系统114取回的数据134未持久地被存储在安全存储112中。从服务器计算系统114的远程存储116读取并且被存储在安全存储112中的数据134可以具有指定用于将数据134本地高速缓存在安全硬件108的安全存储112中的最大持续时间的对应的生存时间(TTL);因此,在TTL的到期之后,可以从安全存储112删除这样本地高速缓存的数据134。根据另一示例,可以使用递减计数器而不是TTL来从安全硬件108的安全存储112删除本地高速缓存的数据134。

应预期到,安全硬件108可以已经先前地使得服务器计算系统114向服务器计算系统114的远程存储116写入数据134;此后,安全硬件108可以使得服务器计算系统114读取数据134。根据另一示例,在安全硬件108使得数据134被读取之前,不同的计算设备的不同的安全硬件可以已经使得服务器计算系统114向服务器计算系统114的远程存储116写入数据134。

计算设备102的存储106可以包括调用器组件136,并且调用器组件136可以是由处理器104可执行的。在计算设备102的操作期间,调用器组件136可以向安全硬件108发送依赖于对由安全硬件108存储的数据(例如,持久数据)(例如,被存储在安全存储112中的数据、被存储在远程存储116中的数据)的访问权的命令。而且,调用器组件136可以从安全硬件108接收加密消息并且向服务器计算系统114发送加密消息。调用器组件136还可以从服务器计算系统114接收加密应答消息、向安全硬件108发送加密应答消息并且从安全硬件108接收结果。

调用器组件136可以以各种方式实施,诸如作为计算设备102的OS的一部分、作为与计算设备102的OS分离的应用(或者这样的应用的一部分)等。调用器组件136可以发送依赖于对由安全硬件108存储的数据的访问权的命令,来请求对存储在硬件保护对象中的信息的访问权。例如,被存储在硬件保护对象中的信息可以是密码密钥。调用器组件136可以以各种方式使用硬件保护对象中的信息,诸如以验证访问计算设备102的其他功能性的许可(例如,登录到计算设备102中)、访问(例如,解密)存储在计算设备102的存储106中的加密数据、将计算设备102的用户的标识提供给远程设备或服务(例如,虚拟智能卡)等。根据示例,可以使用存储根密钥124(或者从存储根密钥124导出的密钥)通过密码引擎来解密硬件保护对象。

响应于从调用器组件136接收到命令,如果依赖于命令的数据被保留在安全硬件108的安全存储112中,则安全硬件108可以返回结果。备选地,如果依赖于命令的数据未被保留在安全硬件108的安全存储112中而是相反被保留在服务器计算系统114的远程存储116中,则安全硬件108的远程访问控制组件132可以生成用于访问服务器计算系统114的远程存储116的消息,并且密码引擎130可以将消息加密来生成加密消息。因此,响应于接收到该命令,安全硬件108可以向调用器组件136返回加密消息。调用器组件136向服务器计算系统114加密消息,并且如果由服务器计算系统114接受,则从服务器计算系统114接收加密应答消息。调用器组件136可以将加密应答消息提供给安全硬件108,并且安全硬件108可以将结果返回给调用器组件136。

如上文所指出的,应预期到,可以采用安全硬件108与外部世界(例如,安全硬件、存储106、正常世界(Normal World)外部的)之间的处理器104的基于时间的共享(例如,而不是包括安全处理器110的安全硬件108)。因此,根据示例,调用器组件136可以是在第一组时间段期间由处理器104可执行的。响应于在第一组时间段期间由处理器104执行,调用器组件136可以向安全硬件108发送命令、从安全硬件108接收加密消息、向服务器计算系统114发送加密消息等,如上文所描述的。而且,处理器104可以被禁止在第二组时间段期间执行调用器组件136(或者安全硬件108外部的(一个或多个)其他组件),其中第一组时间段和第二组时间段是非重叠的。继续该示例,远程访问控制组件132和密码引擎130可以是在第二组时间段期间由处理器104可执行的。而且,处理器104可以被禁止在第一组时间段期间执行远程访问控制组件132并且被禁止执行密码引擎130。

共享秘密118-120使得受信应用能够在服务器计算系统114的帮助下克服跨设备限制。而且,安全硬件108可以使用共享秘密118-120来分配远程存储116。远程存储116可以提供与安全硬件108的安全存储112相比较更大数量的存储(例如,NV存储)。远程存储116还可以允许与安全硬件108的安全存储112相比较更频繁的写入(例如,NV写入)。而且,远程存储116使得服务器计算系统114能够通过将时间周期性地记录到远程存储116来提供受信、同步和准确的时间源;因此,远程存储116中的数据134可以是或包括时钟值(例如,由服务器计算系统114或受信时间源设定的),可以使得该安全硬件108被读取并且本地存储在安全硬件108的安全存储112中,如本文所描述的。

根据示例,服务器计算系统114可以管理安全硬件108的硬件受保护状态的部分。例如,服务器计算系统114可以执行控制服务器端撤销的操作。

参考图2,图示了控制跨多个计算设备的硬件受保护状态的共享的系统200。系统200包括服务器计算系统114,其还包括远程存储116。此外,系统200包括计算设备A 202和计算设备B 204(在本文中统称为计算设备202-204)。虽然未示出,但是应预期到,除计算设备202-204之外,系统200可以包括基本上任何数目的计算设备。

计算设备202-204可以各自与计算设备102基本上类似。更特别地,计算设备A 202包括安全硬件A 206,并且计算设备B 204包括安全硬件B 208,其中的每一个可以与安全硬件108基本上类似。安全硬件A 206包括与服务器计算系统114共享的共享秘密A 210,并且安全硬件B 208包括与服务器计算系统114共享的共享秘密B 212。因此,服务器计算系统114的远程存储116包括(与共享秘密A 210相同的)共享秘密A 214和(与共享秘密B 212相同的)共享秘密B 216。

服务器计算系统114还包括密码引擎218。密码引擎218可以与安全硬件108的密码引擎130基本上类似。虽然未示出,安全硬件A 206和安全硬件B 208各自包括与密码引擎130基本上类似的相应的密码引擎。

服务器计算系统114可以对计算设备A 202与计算设备B 204之间的硬件受保护状态进行同步。硬件受保护状态包括(例如,由服务器计算系统114的远程存储116和计算设备202-204的安全存储所存储的)数据。基于在服务器计算系统114与计算设备A 202之间传送的加密消息和在服务器计算系统114与计算设备B 204之间传送的加密消息,硬件受保护状态可以是同步的。基于共享秘密A(例如,使用从共享秘密A导出的对称密钥),(例如,由密码引擎218或安全硬件A 206的密码引擎)加密在服务器计算系统114与计算设备A 202之间传送的加密消息;还基于共享秘密A(例如,使用从共享秘密A导出的对称密钥),(例如,由密码引擎218或安全硬件A 206的密码引擎)解密该加密消息。而且,基于共享秘密B(例如,使用从共享秘密B导出的对称密钥),(例如,由密码引擎218或安全硬件B 208的密码引擎)加密在服务器计算系统114与计算设备B 204之间传送的加密消息;还基于共享秘密B(例如,使用从共享秘密B导出的对称密钥),(例如,由密码引擎218或安全硬件B 208的密码引擎)解密这些加密消息。

根据示例,服务器计算系统114可以执行以下项作为对计算设备A 202与计算设备B 204之间的硬件受保护状态进行同步的一部分。可以将数据220(例如,数据134)存储在服务器计算系统114的远程存储116中。响应于来自计算设备202-204之一的所接收的加密消息,可以已经写入数据220。备选地,服务器计算系统114的控制组件222可以向远程存储116写入数据。密码引擎218可以加密针对安全硬件A 206的第一消息,其中,第一消息包括数据220。第一消息可以基于共享秘密A 214由密码引擎218加密来生成第一加密消息。而且,服务器计算系统114可以向计算设备A 202发送第一加密消息。而且,密码引擎218可以加密针对安全硬件B 208的第二消息,其中,第二消息包括数据220。第二消息可以基于共享秘密B216由密码引擎218加密来生成第二加密消息。服务器计算系统114可以向计算设备B 204发送第二加密消息。

而且,在服务器计算系统114向计算设备发送加密消息(例如,在前述示例中,向计算设备A 202发送第一加密消息或者向计算设备B 204)发送第二加密消息之后,可以修改服务器计算系统114的远程存储116中的数据220。例如,可以响应于来自计算设备202-204之一的所接收的加密消息或者由服务器计算系统114的控制部件222来修改数据220。在下文中,密码引擎218可以加密针对安全硬件A 206的后续消息,其中,后续消息包括所修改的数据220。后续消息可以基于共享秘密A 214由密码引擎218加密来生成后续加密消息。后续加密消息可以由服务器计算系统114向计算设备A 202发送。附加地或者备选地,针对安全硬件B 208的后续消息可以类似地被加密并且向计算设备B 204发送。

服务器计算系统114还可以包括联接(join)组件224,其可以标识特定硬件保护状态将跨其而被同步的计算设备(例如,计算设备202-204)。例如,硬件受保护状态的跨设备同步可以跨由相同用户所有的计算设备。根据另一示例,硬件受保护状态的跨设备同步可以跨由指定用户组所有的计算设备。

根据示例,用相同用户进行注册的计算设备(诸如计算设备202-204)可以使其密钥绑定到用户的凭证。例如,共享密钥可以是跨由相同用户所有的设备来创建的。通过图示,当“bob@xyz.com”调用服务器计算系统114,共享密钥可以自动地提供给Bob的设备中的每一个上的安全硬件。该共享密钥可以引导(bootstrap)本文所描述的各种数据共享场景。

而且,服务器计算系统114可以包括可以更新时钟值的时钟226(例如,数据220可以是或包括时钟值)。时钟226提供实时时钟函数。一旦被初始化,则时钟226可以读取本地时间。而且,时钟226可以使用网络时间协议(NTP)与参考时钟同步。

而且,控制组件222可以使得数据能够由服务器计算系统114控制。例如,控制组件222可以修改引起对内容的访问的撤销的数据220。因此,服务器端撤销可以由系统200支持。相比之下,由于客户端将必须同意运行将允许该撤销的代码,因而使用常规TPM的服务器端撤销最多也将是困难的。

参考图3,图示了将数据(例如,数据134)中心化地存储在服务器计算系统114的远程存储116中并且将该数据本地存储在计算设备102上的系统300。此外,系统300包括计算设备102和服务器计算系统114。计算设备102还包括安全硬件108,其可以包括安全处理器110和安全存储112。安全存储112包括共享秘密118。安全存储112还可以包括对称密钥122和存储根密钥124。

安全存储112还包括本地高速缓存302。例如,本地高速缓存302可以是安全易失性存储(例如,随机存取存储器(RAM))。本地高速缓存302可以保留被存储在远程存储116中的数据(例如,数据134)的副本。而且,本地高速缓存302可以包括待向远程存储116写入的数据。

本地高速缓存302中的数据可以由安全硬件108的认证组件304用于确定是使能还是禁止对硬件保护对象306中的信息的访问。例如,硬件保护对象306可以包括密码密钥。硬件保护对象306可以被存储在计算设备102的存储106中;然而,根据另一示例,应预期到,安全存储112可以附加地或者备选地包括硬件保护对象306。当由认证组件304许可时,密码引擎130可以(例如,使用存储根密钥124)解密由安全硬件108接收的硬件保护对象306。根据示例,可以已经通过服务器计算系统114加密硬件保护对象306;然而,所要求保护的主题不限于此。

为了使得调用器组件136能够访问被包括在硬件保护对象306中的信息(例如,密码密钥),认证组件304可以基于本地高速缓存302中的数据(例如,从服务器计算系统114的远程存储116取回的数据134),验证策略中指定的(一个或多个)条件是否被满足。该策略对应于硬件保护对象306。例如,认证组件304可以验证认证信息、单调计数器值、时钟值、其组合等。当条件由认证组件304被标识为不被满足时,密码引擎130可以被禁止解密硬件保护对象306。备选地,如果认证组件304验证没有条件不被满足,那么可以许可密码引擎130使用存储根密钥124来解密硬件保护对象306。

根据示例,数据结构(被称为NV索引)可以被用于将数据值(例如,数据134)持久地存储到远程存储116(例如,远程NV存储)。当在(例如,由安全硬件108从调用器组件136接收的)命令中引用持久对象时,安全硬件108将对象加载到本地高速缓存302中。当分配新NV索引时,应用指定针对该NV索引的访问控制(只读或读写)、类型和大小。根据示例,可以存在四个可能类型的NV索引:(1)普通,其用于存储数据二进制大对象(blob),(2)计数器,其用于存储安全单调计数器,(3)(多个)位字段,其可以单独地设定,和(4)扩展,其可以通过使用与平台配置寄存器(PCR)类似的扩展操作修改。

远程存储116可以是或包括密钥值存储,其中,密钥值存储的密钥是NV索引。如本文中更详细描述的,计算设备102的OS(例如,调用器组件136)可以辅助安全硬件108与服务器计算系统114之间的通信。根据示例,访问远程存储116的密钥值存储采用的操作可以是异步的。

远程NV条目可以本地高速缓存在本地高速缓存302中。这样做,TTL可以被包括为远程NV条目的一部分。TTL指定持续时间(例如,以秒为单位),并且安全硬件108可以将NV条目高速缓存在本地高速缓存302中。一旦TTL到期,则从本地高速缓存302删除并且从利用新鲜最新副本从远程存储116重新加载NV索引。安全存储112的本地高速缓存302不是持久的——其在每次计算设备102重新启动时完全擦除。还可以添加同步时间戳(ST)来设定到条目最后被本地高速缓存的时间。如果在本地高速缓存302中不存在NV索引的高速缓存的条目,则该时间戳可以是空值。

本地高速缓存的益处是性能和可用性;如果条目可以从本地高速缓存302读取,则远程NV读取操作可以不要求对服务器计算系统114的往返(从而降低延时和网络带宽使用)。甚至当计算设备102与服务器计算系统114断开,只要TTL尚未到期,这使得NV存储条目能够读取。折衷在于,本地高速缓存的条目可能是过时的。对远程存储116中的NV条目的服务器端更新仅在TTL到期之后被本地反映。TTL控制针对每个NV索引条目的性能与过时性之间的折衷。

对于写入而言,可以依赖调用器组件136来传播向本地高速缓存302写入的数据以向远程NV存储写入。响应于由安全硬件108从调用器组件136接收的NV写命令,安全硬件108可以首先基于该命令而更新本地高速缓存302。而且,安全硬件108可以返回错误代码,其指示对NV存储的写回是未决的。调用器组件136可以发起对远程存储116的写入协议。如果调用器组件136未能完成写回,则写入保持易失性,并且不做出关于持久的保证。

由于网络信令和通信由调用器组件136(例如,计算设备102的OS)完成,因而安全硬件108与服务器计算系统114之间的连接性的损耗对于安全硬件108是透明的。如本文更详细描述的,异步命令可以被用于访问远程存储116中的数据134。由于异步命令(例如,两步过程)的性质,因而108在步骤之间维持在存储器内状态(例如,在本地高速缓存302中)。这样的维持状态引入针对资源分配拒绝服务攻击的潜力,其中,恶意OS可以发出使得安全硬件108的本地高速缓存302填满的许多异步命令。附加地或者备选地,攻击者可以发起过时攻击,由此在与服务器计算系统114的通信中引入人工延迟。为了防止前述类型的攻击,安全硬件108可以维持全局路由超时(GRT)值。无论何时异步请求由安全硬件108从调用器组件136接收,安全硬件108开始设定到GRT的计时器。此外,为了释放本地高速缓存302,安全硬件108扫描未完成的异步命令并且丢弃其计时器已经终止的那些异步命令。例如,可以通过安全硬件108的所有者设定GRT的值。根据图示,GRT的默认值可以是5分钟;然而,应预期到,GRT的其他默认值旨在落在至此随附的权利要求的范围内。

而且,时钟值是被存储在远程存储116中的NV条目(具有预分配的NV索引)。仅服务器计算系统114可以更新时钟NV条目。安全硬件108可以通过发出针对时钟NV条目的NV读命令读取时钟值。读取时钟NV索引经受超时,其可以是比GRT更严格的(被称为全局时钟超时(GCT))。从服务器计算系统114读取的时钟NV条目可以被存储在安全存储112的本地高速缓存302中。这样,安全硬件108具有通过将当前计时器滴答计数添加到时钟NV条目的同步时间戳(ST)对当前时间的访问权。

maxClockError≤TTL×漂移+GCT(1)

公式(1)描述了作为TTL、漂移(drift)和GCT的函数的安全硬件108的本地时钟的准确度的上限。在默认情况下,例如,TTL可以被设定到1天,并且全局时钟超时(GCT)设定到1秒;然而,所要求保护的主题不限于此。低GCT改进本地时钟准确度,但是如果设备到服务器计算系统通信具有高延时则可能导致不可用性。上文所指出的默认值对于支持各种移动场景可以是足够准确的。可以支持的示例性移动场景在于,可以许可硬件保护对象306在星期五午夜进行解密(例如,以使得电影能够在那时发布)。设置小于1秒的GCT可以进一步改进准确度,而设置小于1天的TTL可以降低漂移效应。

虽然连接性损耗可以由计算设备102的OS掩蔽,但是计算设备102针对扩展时间段可以是离线的(例如,与服务器计算系统114断开)。在这样的场景下,安全硬件108可能与服务器计算系统114不同步;然而,这样的场景不会引起安全性问题。替代地,当长期断开发生时,安全硬件108的功能性可以随着本地高速缓存302中的条目变得过时而缓慢地退化。当计算设备102与服务器计算系统114重新连接时,可以使安全硬件108的硬件受保护状态重新同步。

安全硬件108的各种架构旨在落在至此随附的权利要求的范围内。下面,描述了几个示例性架构;然而,应理解到,安全硬件108的其他架构落在随附的权利要求的范围内。根据示例性架构,安全硬件108可以是物理TPM芯片。

在另一示例性架构中,安全硬件108可以是或包括计算设备102的受保护存储。继续该示例,受保护存储器可以包括基于软件的TPM(例如,基于软件的TPM包括共享秘密118、TPM软件栈等)。受保护存储器是不能由正常世界的不受信组件读取或修改的计算设备102的存储。正常操作可以既不读取也不写入被包括在受保护存储器内的数据和功能性。例如,计算设备102的OS在正常世界中操作并且不能读取或写入受保护存储器(例如,安全世界(Secure World)),其包括基于软件的TPM。根据图示,硬件(例如,存储器、存储控制器等)可以对存储区域进行分区以仅由安全世界使用。由于OS在正常世界中而非在安全世界中运行,因而OS不能访问被标记为受保护的任何存储器(例如,OS可以向在安全世界中操作的基于软件的TPM发送命令)。

根据又一示例性架构,计算设备102可以包括处理平台。处理平台包括至少一个处理器(例如,处理器104),其被配置为执行计算设备102的OS。处理平台还包括与至少一个处理器通信的至少一个安全处理器(例如,安全处理器110)。因此,安全硬件108包括(一个或多个)安全处理器。(一个或多个)安全处理器具有对共享秘密118的访问权(以及对称密钥122和存储根密钥124,如果被保留在安全存储112中的话)。(一个或多个)安全处理器还可以基于共享秘密118执行各种功能(例如,加密、解密、证实、认证等)。而且,被配置为执行OS的处理平台的至少一个处理器被禁止访问共享秘密118(以及访问对称密钥122和存储根密钥124)。

根据另一示例性架构,安全硬件108可以包括处理器上的安全区域(enclave)。继续该示例,安全区域可以存储共享秘密118并且保护共享秘密118(以及对称密钥122和存储根密钥124,如果被保留的话)免受安全硬件108外部的源的影响。

图4-图9在下文中描述了结合其中安全硬件108是物理TPM芯片的示例性架构的各种示例。应理解到,这些示例可以延伸到安全硬件108的其他架构。

转到图4,图示了支持跨设备受信应用的系统400。此外,系统400包括计算设备102和服务器计算系统114。在图4中描绘的示例中,安全硬件108是物理TPM芯片(在本文中被称为cTPM 402);因此,计算设备102包括cTPM 402。cTPM 402装备有与服务器计算系统114共享的共享秘密(例如,共享秘密118、共享初级种子)。虽然未示出,应预期到,cTPM 402还可以装备有不与服务器计算系统114共享的一个或多个其他秘密(例如,除共享初级种子之外的一个或多个初级种子)。

cTPM 402包括安全处理器110和安全存储(例如,安全存储112)。安全存储包括安全NV存储404和安全易失性存储406(例如,随机存取存储器(RAM)、本地高速缓存302)。安全易失性存储406可以是或包括一组平台配置寄存器(PCR),其被保证为一旦重新启动计算设备102则重置。PCR可以被用于存储在计算设备102上启动的软件(例如,BIOS、固件和OS引导程序)的一部分的指纹。

而且,cTPM 402包括密码引擎130、远程访问控制组件132和计时器408。密码引擎130被配置为执行各种密码算法。密码算法的示例包括SHA-1(安全散列算法-1)、SHA-2、RSA和ECC(椭圆曲线密码学)。例如,从TCG可用的TPM规格的版本1.2阐述了包括SHA-1和RSA的一组密码算法,然而TPM规格的版本2.0阐述了包括SHA-1、SHA-2、RSA和ECC的一组密码算法。因此,密码引擎130可以被配置为执行由TPM规格的特定版本指定的一组密码算法。而且,计时器408提供针对cTPM 402的内部受信计时器。

如图4的示例性架构中所描绘的,服务器计算系统114包括cTPM虚拟机(VM),其在服务器计算系统114的一个或多个物理设备上运行。cTPM VM 410可以包括处理器412和远程存储(例如,远程存储116)。远程存储可以包括远程NV存储414和易失性存储416。根据另一示例,应预期到,远程NV存储414可以与cTPM VM 410分离。cTPM VM 410还可以包括密码引擎218和时钟226。远程NV存储414可以是云存储。每个计算设备(例如,每个cTPM、计算设备A 202和计算设备B 204)可以与不同的cTPM VM相关联。

cTPM 402和cTPM VM 410二者利用附加的cTPM特征实施TPM软件栈。因此,对cTPM做出的(例如,由cTPM VM 410实现的)云操作遵守TPM语义,并且因此,这样的操作的安全性特性不需要重新验证。在设备端(例如,计算设备102),cTPM软件栈在安全硬件中运行(例如,cTPM芯片等),然而服务器计算系统114可以运行cTPM VM 410内的cTPM软件。当在服务器计算系统114中运行时,由于在cTPM VM 410中运行的OS被假定为受信的,因而cTPM资源(例如,远程NV存储414、易失性存储416、密码引擎218、时钟226)不需要被封装在硬件中。相比之下,由计算设备102的处理器104执行的OS是不受信的,并且因此,安全硬件(例如,cTPM芯片)期望能够提供与OS隔离的这些资源。

在图4中阐述的示例中,共享秘密(例如,共享秘密118和共享秘密120)是在cTPM402与服务器计算系统114之间共享的共享初级种子。共享初级种子是永久地被存储在cTPM402和服务器计算系统114中的随机值(希望共享初级种子不离开cTPM 402和服务器计算系统114)。因此,cTPM 402的安全NV存储404可以永久地存储共享初级种子418,并且服务器计算系统114的远程NV存储414可以永久地存储共享初级种子420,其中,共享初级种子418和共享初级种子420匹配。共享初级种子418和420相应地由cTPM 402和cTPM VM 410被用于生成针对云控制域的对称/非对称密钥和证据。此外,共享初级种子418和420相应地由cTPM402和cTPM VM 410被用于生成非对称存储根密钥(例如,CR 422和CR 426)和对称密钥(例如,CCK 424和CCK 428)。

CRK 422和CRK 426的语义可以与针对所有者控制域的存储根密钥(SRK)的语义基本上类似。CRK 422和CRK 426相应地由密码引擎130和密码引擎218被用于加密云控制域内保护的对象(与SRK如何被用于加密所有者控制域内的对象类似)。CCK 424和CCK 428特定于云控制域。密码引擎130和密码引擎218相应地使用CCK 424和CCK 428来保护在cTPM 402与服务器计算系统114之间交换的数据。

图5图示了由cTPM 402支持的示例性控制域。不同的实体可以控制cTPM 402的不同的资源。控制域(例如,层次结构)指代给定实体可以控制的特定资源。根据图5中所示的示例,cTPM 402可以支持四个控制域:平台制造商控制域500、所有者控制域502、隐私管理员控制域504和云控制域506(在本文中统称为控制域500-506)。然而,应预期到,前述控制域中的一个或多个(除云控制域506之外)不需要由cTPM 402支持。而且,应理解到,除控制域500-506之外,(一个或多个)其他控制域可以由cTPM 402支持。

平台制造商可以控制资源508作为平台制造商控制域500的一部分。平台制造商控制域500可以更新cTPM 402的固件。而且,所有者可以控制资源510作为所有者控制域502的一部分。所有者控制域502代表用户和应用保护密钥和数据。隐私管理员可以控制资源512作为隐私管理员控制域504的一部分。隐私管理员控制域504保护隐私敏感数据。例如,隐私管理员可以是企业的IT部门,其中,IT部门是针对企业的计算设备的TPM(例如,cTPM)的隐私管理员。所有者还可以控制资源514作为云控制域506的一部分。与所有者控制域502类似,云控制域506代表用户和应用保护密钥和数据。

控制域500-506中的每一个具有对应的初级种子。初级种子被用于生成针对对应的控制域500-506的对称/非对称密钥和证据。因此,平台制造商控制域500具有初级种子516,所有者控制域502具有初级种子518,隐私管理员控制域504具有初级种子520,并且云控制域506具有共享初级种子418-420。初级种子中的每一个是大的随机值。初级种子516、初级种子518、初级种子520和共享初级种子418被永久地存储在cTPM 402中(例如,在安全NV存储404中)。而且,共享初级种子420被永久地存储在服务器计算系统114中(例如,在远程NV存储414中)。根据示例,在制造时,cTPM 402可以提供有初级种子516、初级种子518、初级种子520和共享初级种子418。

云控制域506提供与所有者控制域502基本上类似的功能性,除了在cTPM 402与服务器计算系统114之间共享共享初级种子418-420之外;替代地,初级种子518在cTPM 402外部不是可用的(例如,服务器计算系统114缺少对初级种子518的访问权)。在cTPM 402与服务器计算系统114之间共享共享初级种子418-420允许cTPM 402和服务器计算系统114二者生成相同云根密钥(例如,CR 422和CRK 426)。与常规TPM相比较,将云根密钥与服务器计算系统114的远程存储(例如,远程NV存储414)组合实现了经由服务器计算系统114的数据的共享、提供对受信实时时钟的访问权并且提供对远程NV存储414的访问权。远程NV存储414提供与通常地由常规TPM所提供的存储的数量相比较针对cTPM 402的更大数量的存储并且实现与常规TPM相比更高的频率写入。

常规TPM提供关于单个计算设备的保证,并且硬件保护未跨设备延伸。例如,所有者控制域502可以提供针对仅单个TPM的隔离机构。当新所有者获得TPM的所有权时,其不能访问所有者控制域502中的先前的所有者的TPM保护的秘密。当相同用户拥有两个不同的TPM时(在两个不同的设备上),每个TPM的所有者控制域保持隔离并且不能联合地提供对用户的密钥和数据的基于软件的保护。因此,跨设备服务不能够单独依赖于常规TPM(缺少云控制域506)以实现跨设备共享的安全数据。

根据示例,一旦开始,则cTPM 402可以检查共享初级种子418是否存在。如果不存在,则cTPM 402可以禁用云控制域506和与该域506相关联的命令。

通过另一示例,如果服务器计算系统114被危害(例如,云控制域506被危害),由平台制造商控制域500、所有者控制域502和隐私管理员控制域504保护的秘密将保持不被危害。例如,所有者控制域502中保护的设备特异性秘密将在这样的情况中保持不被危害。为了从这样的危害恢复,可以利用新共享初级种子418-420对cTPM 402和服务器计算系统114进行密钥更新。

图6和图7图示了用于响应于由调用器组件136向cTPM 402发出的命令而交换数据的示例性调用流程图。图6描绘了其中调用器组件136发出命令(cmd)的示例性场景,该命令不要求对服务器计算系统114的远程NV存储414的访问权。在600处,调用器组件136向cTPM402发送命令。在602处,响应于命令,cTPM 402向调用器组件136发送结果。当命令不要求对远程NV存储414的访问权时,cTPM 402与调用器组件136之间的通信是同步的。因此,当该命令到达cTPM 402时,调用器组件136阻塞,并且cTPM 402直到命令终止才能处理另一命令。

相反,图7描绘了其中调用器组件136发出命令(cmd)的示例性场景,该命令要求cTPM 402访问服务器计算系统114的远程NV存储414。如所描绘的,调用器组件136在700处向cTPM 402发送该命令。cTPM 402不能与服务器计算系统114直接通信。替代地,cTPM 402依赖于调用器组件136(例如,计算设备102的OS)来与服务器计算系统114通信。由于OS是不受信的,因而cTPM 402保护cTPM 402与服务器计算系统114(例如,远程NV存储414)之间交换的数据的完整性和保密性以及防止回滚攻击。OS可以被认为是将信息转发到服务器计算系统114并且从服务器计算系统114转发信息的不安全信道。

除了确保安全性之外,当从调用器组件136向cTPM 402发送的命令要求对远程NV存储414的访问权时,采用cTPM 402与服务器计算系统114之间的异步通信。在702处,响应于接收到需要对远程NV存储414的访问权的命令,cTPM 402向调用器组件136返回加密消息(例如,加密二进制大对象)。可以使用CCK 424通过密码引擎130将加密消息加密。在704处,调用器组件136向服务器计算系统114发送加密消息,并且如果由服务器计算系统114接受,则在706处从服务器计算系统114接收加密应答消息(例如,应答中的不同的加密二进制大对象,二进制大对象')。在708处,调用器组件136将加密应答消息提供给cTPM 402,并且在710处,cTPM 402可以向调用器组件136返回结果。在与服务器计算系统114的该异步通信期间,cTPM 402可以保持响应于其他命令。

因此,cTPM 402与服务器计算系统114之间的通信是异步的。替代地,常规TPM是单线程的,并且传统的TPM命令是同步的(与图6中所示的示例类似)。然而,使cTPM 402与服务器计算系统114之间的通信同步将导致不可接受的性能。例如,考虑发出使远程NV存储414中的计数器增量的cTPM命令的调用器组件136。如果对通信进行同步,则该命令将使cTPM402不响应并且堵塞直到增量更新传播到服务器计算系统114并且响应返回到cTPM 402。

现在描述cTPM的示例性设计和实施方式。阐述了关于在服务器计算系统114与计算设备102之间可以如何共享TPM保护的密钥(例如,硬件保护对象306)的描述以及支持NV读取和写入做出的改变。还描述了示例性云/设备同步协议,以及可以添加以实施同步的TPM命令。

现在描述TPM保护的密钥的共享。根据示例,TPM 2.0API促进通过将密钥创建与密钥使用解耦共享TPM保护的密钥。TPM2_Create()、TPM 2.0命令创建对称密钥或非对称密钥对。TPM可以内部地创建密钥并且在将其返回到调用器之前利用其存储密钥加密任何私有(或对称)密钥。为了使用密钥,调用器发出TPM2_Load()命令,其传递公用存储密钥和加密私有(或对称)密钥。TPM解密私有密钥并且将其加载在易失性存储中。TPM可以然后开始使用密钥来加密或者解密。

创建与加载之间的分离是由于TPM芯片上可用的有限的RAM。创建与加载之间的分离还允许调用器在不必将其全部加载到RAM中的情况下创建许多密钥。只要存储根密钥(SR)绝不离开芯片,则用SRK加密新密钥的私有部分保证了密钥的保密性。这一分离使得cTPM 402能够在计算设备102上使用云创建的密钥。因此,设备之间的密钥共享变得不重要。服务器计算系统114可以执行两个cTPM VM之间的密钥共享协议(例如,各自与不同的计算设备相关联的cTPM VM 410和不同的cTPM VM)。这样的密钥共享协议不需要使用公用密钥基础设施(PKI),其也不需要在安全执行模式(SEM)中运行。一旦在两个cTPM VM之间创建共享密钥,则这两个计算设备可以通过发出TPM2_Load()命令将密钥分离地加载在其芯片中。而且,甚至当计算设备102离线时,可以执行密钥创建。因此,用户可以在不必首先确保那些设备在线的情况下创建跨其设备的共享密钥。

现在描述使用cTPM 402访问远程NV存储414。cTPM 402维持对远程NV存储414做出的读取和写入的本地高速缓存(例如,安全易失性存储406中的本地高速缓存302)。读取返回高速缓存条目,并且写入仅更新高速缓存条目。cTPM 402自身不更新远程NV存储414;替代地,调用器组件136将芯片上本地高速缓存与远程NV存储414同步。这使用同步协议完成。

现在描述从远程NV存储414读取。一旦接收到来自调用器组件136的NV读取命令,则从本地高速缓存返回对应的NV条目。如果未找到的话,则cTPM 402返回错误代码。此后,调用器组件136可以通过提取同步操作以更新本地高速缓存来检查远程NV存储414,如下文所描述的。在同步完成之后,调用器组件136重新发出能够从本地高速缓存成功回答的读取TPM命令。下文是用于从本地高速缓存读取远程NV条目的示例性伪代码。

1.NV_Read(NVIndex idx){

2.//对所有本地高速缓存进行垃圾回收

3.for each nvldx in LocalCache

4.if LocalCache[nvIdx].TTL is Expired

5.delete nvldx from LocalCache

6.endif

7.end for each

8.//如果存在的话,则返回NV条目

9.if idx in LocalCache return LocalCache[idx]

10.//在高速缓存中未找到返回

I I.Return ErrorCode.NotFoundlnCache

12.}

在上文伪代码中,第3-6行描绘了垃圾回收,其中从本地高速缓存删除具有到期的TTL的NV条目。在第9行处,如果在本地高速缓存中找到的话,则返回NV条目。如果在本地高速缓存中未找到NV条目,那么在第11行处返回错误。

现在描述对远程NV存储414的写入。NV写入命令首先更新高速缓存并且返回错误代码,其指示对远程NV存储414的写回是未决的。调用器组件136发起对云NV的推送同步操作,如下文所描述的。如果调用器组件136未能完成写回,则写入保持易失性,并且cTPM 402未做出关于其持久性的保证。以下阐述了用于向本地高速缓存写入NV条目的示例性伪代码。

1.NV_Write(NVEntry entry){

2.//对所有本地高速缓存进行垃圾回收

3.for each nvldx in LocalCache

4.if LocalCache[nvIdx].TTL is Expired

5.delete nvldx from LocalCache

6.end if

7.end for each

8.//将条目插入高速缓存中

9.idx=LocalCache.Append(entry)

10.//设定条目的TTL

11.LocalCache[idx].TTL=DefaultTTL

12.}

在前述伪代码中,第3-6行再次描述了垃圾回收。在第9行处,NV条目被插入本地高速缓存中。在第11行处,设定针对NV条目的TTL。

现在阐述同步协议。同步协议用于:(1)利用来自远程NV存储414的条目更新本地高速缓存以用于NV读取;和(2)将经更新的高速缓存条目写回到远程NV存储414以用于NV写入。在计算设备端,调用器组件136使用两个命令(TPM2_Sync_Begin()和TPM2_Sync_End())执行协议。这些命令采取参数,其被称为“方向”,其可以被设定为“拉出”或者“推送”以在读取与写入之间进行区分。消息用CCK(例如,CCK 424、CCK 428),即对称密钥来加密。

为了从远程NV存储414拉出,cTPM 402可以记录其内部计时器408的值(例如,时间戳1(TS1))并且发送包括所要求的NV索引(例如,NV_Idx)和临时值(nonce)的消息。该临时值检查响应的新鲜度并且防止重放攻击。一旦接收,则服务器计算系统114解密消息并且对其完整性进行检查。作为响应,服务器计算系统114发送回临时值连同对应于所请求的NV索引(例如,NV)的值。cTPM 402解密消息、检查其完整性并且验证临时值。如果这些检查是成功的,则cTPM 402执行检查来验证响应的延迟不超过全局读取超时(GRT)值(例如,基于TS2)。如果前述检查通过,则cTPM 402成功地处理读取。图8图示了当从服务器计算系统114的远程NV存储414拉出非易失性条目时的示例性同步协议。描绘了在cTPM 402与服务器计算系统114之间交换的示例性消息以从远程NV存储414读取NV条目。

现在描述对NV存储414的推送。用于写回NV条目的协议能够处理攻击者可以尝试将写操作重新排序的可能性。例如,恶意OS或应用可以保存较旧的写入并且尝试稍后对其进行重新应用,这有效地重写最新值。为了克服这一点,协议依赖于由服务器计算系统114维持的安全单调计数器(ctr)。每个写操作呈现待应用的计数器的当前值;因此,不能重新播放过时的写入。cTPM 402可以使用先前描述的内拉式协议读取安全计数器的当前值。

图9图示了当非易失性条目被推送到服务器计算系统114的远程NV存储414时的示例性同步协议。示出了在cTPM 402与服务器计算系统114之间交换的示例性消息以向远程NV存储414写入远程NV条目。应注意到,由于cTPM 402将最新值本地高速缓存在RAM中,因而不需要对每个写入完成读取安全计数器。当服务器计算系统114通过推送同步协议接收NV条目时,其更新远程NV存储414。这样做,cTPM 402装备有第三命令,被称为TPM2_Sync_Proc()(针对过程)。该命令可以仅由服务器计算系统114发出;服务器计算系统114取得从计算设备102接收的消息并且利用其调用同步过程。服务器计算系统114将消息解密并且应用NV更新。

图10-图11图示了用于使用安全硬件实现跨设备受信计算的示例性方法,其中,安全硬件提供有与服务器计算系统共享的共享秘密。虽然方法被示出并且被描述为按序列执行的一系列动作,但是应理解并且领会到,方法不由序列的顺序限制。例如,一些动作可以以与本文描述了什么不同的顺序发生。另外,动作可以与另一动作并发地发生。而且,在一些实例中,并非可以要求所有动作以实施本文所描述的方法。

而且,本文所描述的行为可以是可以由一个或多个处理器实施和/或存储在计算机可读介质或媒体的计算机可执行指令。计算机可执行指令可以包括例程、子例程、程序、执行线程和/或类似。更进一步地,方法的动作的结果可以被存储在计算机可读介质中、被显示在显示设备上和/或类似。

图10图示了用于加密由安全硬件生成的消息以用于向服务器计算系统传输的方法1000。在1002处,可以基于共享秘密由安全硬件生成对称密钥。共享秘密由安全硬件和服务器计算系统共享。在1004处,可以由安全硬件生成用于访问服务器计算系统的远程资源的消息。可以响应于安全硬件接收到命令而生成消息。在1006处,可以加密消息以用于向服务器计算系统传输。可以使用对称密钥将消息加密来生成加密消息。而且,加密消息可以被配置为引起对服务器计算系统的远程资源的访问权。

现在参考图11,图示了用于控制跨多个计算设备的硬件受保护状态的共享的方法1100。在1102处,可以访问服务器计算的存储中的第一共享秘密。第一共享秘密由服务器计算系统和第一计算设备的第一安全硬件共享。在1104处,可以访问服务器计算系统的存储中的第二共享秘密。第二共享秘密由服务器计算系统和第二计算设备的第二安全硬件共享。在1106处,可以对第一安全硬件与第二安全硬件之间的硬件受保护状态进行同步。硬件受保护状态可以基于在服务器计算系统与第一计算设备之间传送的第一加密消息被同步,其中第一加密消息基于由服务器计算系统和第一安全硬件共享的第一共享秘密被加密。而且,硬件受保护状态可以基于在服务器计算系统与第二计算设备之间传送的第二加密消息被同步,其中第二加密消息基于由服务器计算系统和第二安全硬件共享的第二共享秘密被加密。

现在参考图12,图示了可以根据本文所公开的系统和方法使用的示例性计算设备1200的高级图示。例如,计算设备1200可以是计算设备102、计算设备A 202或者计算设备B204。计算设备1200包括至少一个处理器1202(例如,处理器104),其执行被存储在存储器1204(例如,存储106)中的指令。例如,该指令可以是用于实施如由上文所讨论的一个或多个组件执行所描述的功能性的指令或用于实施上文所描述的方法中的一个或多个的指令。处理器1202可以通过系统总线1206访问存储器1204。除了存储可执行指令之外,存储器1204还可以本地存储所存储的数据、硬件保护对象等。

计算设备1200附加地包括由处理器1202通过系统总线1206可访问的数据储存库1208(例如,存储106)。数据储存库1208可以包括可执行指令、硬件保护对象等。而且,计算设备1200包括安全硬件108。计算设备1200还包括允许外部设备与计算设备1200通信的输入接口1210。例如,输入接口1210可以被用于从外部计算机设备、从用户等接收指令。计算设备1200还包括将计算设备1200与一个或多个外部设备接合的输出接口1212。例如,计算设备1200可以通过输出接口1212显示文本、图像等。

应预期到,经由输入接口1210和输出接口1212与输出设备1200通信的外部设备可以被包括在用户可以与其交互的基本上任何类型的用户界面。用户界面类型的示例包括用户界面、自然用户界面等。例如,图形用户界面可以采用(一个或多个)输入设备(诸如键盘、鼠标、遥控器等)接受来自用户的输入并且在输出设备(诸如显示器)上提供输出。而且,自然用户界面可以使得用户能够以没有由输入设备(诸如键盘、鼠标、遥控器等)强加的约束的方式与计算设备1200交互。而是,自然用户界面可以依赖于语音识别、接触和触笔识别、在屏幕上和在屏幕附近二者的手势识别、空中手势、头和眼跟踪、声音和语音、视觉、接触、手势、机器智能等。

此外,虽然被图示为单个系统,但是应理解到,计算设备1200可以是分布式系统。因此,例如,数个设备可以通过网络连接通信并且可以共同地执行被描述为由计算设备1200执行的任务。

转到图13,图示了可以根据本文所公开的系统和方法使用的示例性计算系统1300的高级图示。例如,计算设备1300可以是或包括服务器计算系统114。附加地或者备选地,服务器计算系统114可以包括计算系统1300。

计算系统1300包括多个服务器计算设备,即,服务器计算设备1302、……、和服务器计算设备1304(统称为服务器计算设备1302-1304)。服务器计算设备1302包括至少一个处理器和计算机可读存储;至少一个处理器执行被存储在存储中的指令。例如,该指令可以是用于实施如由上文所讨论的一个或多个组件执行所描述的功能性的指令或用于实施上文所描述的方法中的一个或多个的指令。与服务器计算设备1302类似,除服务器计算设备1302之外的服务器计算设备1302-1304的至少子集各自相应地包括至少一个处理器和存储。服务器计算设备1302-1304中的一个或多个的存储可以是或包括远程存储116、易失性存储416和/或远程NV存储414。

计算系统1300还包括在服务器计算设备1302-1304之间传输数据的各种网络节点1306。而且,网络节点1302通过网络1308从服务器计算设备1302-1304向(例如,计算设备1300外部的)外部节点传输数据。网络节点1302还通过网络1308从外部节点向服务器计算设备1302-1304传输数据。例如,网络1308可以是因特网、蜂窝网络等。网络节点1306包括交换机、路由器、负载均衡器等。

计算系统1300的结构控制器1310管理服务器计算设备1302-1304的硬件资源(例如,服务器计算设备1302-1304的处理器、存储器、数据存储等)。结构控制器1310还管理网络节点1306。而且,结构控制器1310管理在服务器计算设备1302-1304上实例化的虚拟机的创建、提供、去提供和监督。

现在阐述各种示例。

示例1:一种计算设备,包括:安全硬件,包括:共享秘密,所述共享秘密由安全硬件和服务器计算系统共享,所述共享秘密由以下至少一个提供:服务器计算系统或附属于服务器计算系统的一方的提供计算系统;以及密码引擎,其使用共享秘密或从共享秘密生成的密钥中的至少一个来执行密码算法,密码引擎执行密码算法来执行以下至少一项:加密、解密、认证或证实。

示例2:根据示例1所述的计算设备,安全硬件还包括:远程访问控制组件,其生成用于访问服务器计算系统的远程资源的消息,所述消息响应于安全硬件接收到命令而生成;并且密码引擎加密消息以用于向服务器计算系统传输,密码引擎使用共享秘密或从共享秘密生成的密钥加密消息以生成加密消息,所述加密消息被配置为引起对服务器计算系统的远程资源的访问权。

示例3:根据示例2所述的计算设备,还包括:至少一个处理器;以及安全硬件外部的存储,所述存储包括调用器组件,调用器组件是由至少一个处理器可执行的,调用器组件向安全硬件发送命令、从安全硬件接收加密消息,并且向服务器计算系统发送加密消息;其中,安全硬件包括:至少一个安全处理器,其免受安全硬件外部的源的访问或干扰;以及安全存储,其是安全硬件外部的源不可访问的。

示例4:根据示例2所述的计算设备,还包括:至少一个处理器;和安全硬件外部的存储,所述存储包括调用器组件,其中:调用器组件在第一组时间段期间是由至少一个处理器可执行的;响应于在第一组时间段期间由至少一个处理器执行,调用器组件向安全硬件发送命令、从安全硬件接收加密消息,并且向服务器计算系统发送加密消息;至少一个处理器被禁止在第二组时间段期间执行调用器组件;并且第一组时间段和第二组时间段是非重叠的;并且其中,远程访问控制组件和密码引擎在第二组时间段期间是由至少一个处理器可执行的,并且至少一个处理器在第一组时间段期间被禁止执行远程访问控制组件并且被禁止执行密码引擎。

示例5:根据示例1-4中的任一项所述的计算设备,加密消息被配置为使得服务器计算系统向服务器计算系统的远程存储写入数据。

示例6:根据示例1-5中的任一项所述的计算设备,加密消息被配置为使得服务器计算系统从服务器计算系统的远程存储读取数据。

示例7:根据示例1-6中的任一项所述的计算设备,密码引擎使用共享秘密或从共享秘密生成的密钥中的至少一个解密加密应答消息,加密应答消息响应于加密消息,加密应答消息被解密为输出数据;并且安全硬件还包括:安全存储,安全存储本地存储数据。

示例8:根据示例1-7中的任一项所述的计算设备,其中,不同的计算设备的不同的安全硬件使得服务器计算系统向服务器计算系统的远程存储写入数据。

示例9:根据示例1-8中的任一项所述的计算设备,加密消息被配置为从服务器计算系统取回时钟值。

示例10:根据示例1-9中的任一项所述的计算设备,共享秘密还由不同的计算设备的不同的安全硬件共享;其中,安全硬件、不同的计算设备的不同的安全硬件和服务器计算系统由以下至少一个提供共享秘密:服务器计算系统或附属于服务器计算系统的一方的提供计算系统。

示例11:根据示例1-10中的任一项所述的计算设备,安全硬件还包括:认证组件,其基于从服务器计算系统取回的数据来验证策略中指定的条件是否被满足,策略对应于由安全硬件所接收的硬件保护对象;其中当条件被标识为被满足时,密码引擎使用共享秘密或从共享秘密生成的密钥中的至少一个解密硬件保护对象,并且当条件被标识为不被满足时,密码引擎被禁止解密硬件保护对象。

示例12:根据示例1-11中的任一项所述的计算设备,安全硬件是物理受信平台模块(TPM)芯片。

示例13:根据示例1-11中的任一项所述的计算设备,还包括:处理平台,包括:至少一个处理器,其被配置为执行计算设备的操作系统;以及至少一个安全处理器,其与至少一个处理器通信,其中安全硬件包括至少一个安全处理器,并且至少一个安全处理器具有对共享秘密的访问权;其中至少一个处理器被禁止访问共享秘密。

示例14:根据示例1-11中的任一项所述的计算设备,安全硬件包括:计算设备的受保护存储器,所述受保护存储器包括:基于软件的受信平台模块(TPM),基于软件的TPM包括共享秘密和密码引擎。

示例15:根据示例1-11中的任一项所述的计算设备,安全硬件包括:处理器上的安全区域,安全区域存储共享秘密并且保护共享秘密免受安全硬件外部的源的影响。

示例16:一种用于控制跨多个计算设备的硬件受保护状态的共享的方法,包括:访问服务器计算系统的存储中的第一共享秘密,第一共享秘密由服务器计算系统和第一计算设备的第一安全硬件共享;访问服务器计算系统的存储中的第二共享秘密;第二共享秘密由服务器计算系统和第二计算设备的第二安全硬件共享;并且基于以下项对第一安全硬件与第二安全硬件之间的硬件受保护状态进行同步:第一加密消息,其在服务器计算系统与第一计算设备之间被传送,第一加密消息是基于由服务器计算系统和第一安全硬件共享的第一共享秘密而被加密;以及第二加密消息,其在服务器计算系统与第二计算设备之间被传送,第二加密消息是基于由服务器计算系统和第二安全硬件共享的第二共享秘密而被加密。

示例17:根据示例16所述的方法,还包括:将数据存储在服务器计算系统的存储中;加密针对第一安全硬件的第一消息,第一消息包括数据,第一消息基于第一共享秘密而被加密以生成第一加密消息;向第一计算设备发送第一加密消息;加密针对第二安全硬件的第二消息,第二消息包括数据,第二消息基于第二共享秘密被加密以生成第二加密消息,并且向第二计算设备发送第二加密消息。

示例18:根据示例16-17中的任一项所述的方法,还包括:将数据存储在服务器计算系统的存储中;加密针对第一安全硬件的消息,所述消息包括数据,所述消息基于第一共享秘密被加密以生成加密消息;向第一计算设备发送加密消息;在向第一计算设备发送加密消息之后,修改服务器计算系统的存储中的数据;加密针对第一安全硬件的后续消息,所述后续消息包括所修改的数据,所述后续消息基于第一共享秘密被加密以生成后续加密消息;并且向第一计算设备发送后续加密消息。

示例19:根据示例18所述的方法,其中,数据是时钟值。

示例20:安全硬件,包括:共享秘密,所述共享秘密是由安全硬件和服务器计算系统来共享的;对称密钥,其基于共享秘密由安全硬件生成;远程访问控制组件,其生成用于访问服务器计算系统的远程存储的消息,所述消息响应于安全硬件接收到命令而生成;以及密码引擎,其加密消息以用于向服务器计算系统传输,密码引擎使用对称密钥将消息加密来生成加密消息,加密消息被配置为使得服务器计算系统的远程存储进行以下各项之一:向服务器计算系统的远程存储写入数据;或者从服务器计算系统的远程存储读取数据。

如本文所使用的,术语“组件”和“系统”旨在涵盖计算机可读数据存储,其配置有当由处理器执行时使得某些功能性执行的计算机可执行指令。计算机可执行指令可以包括例程、功能等。还应理解到,组件或系统可以位于单个设备上或跨数个设备分布。

而且,如本文所使用的,术语“示例性”旨在意指“用作一些东西的图示或示例”。

可以以硬件、软件或其任何组合实现本文所描述的各种功能。如果以软件实现,则功能可以被存储在计算机可读介质上或作为一个或多个指令或代码在其上发送。计算机可读介质包括计算机可读存储介质。计算机可读存储介质可以是可以由计算机访问的任何可用的存储介质。以示例而非限制的方式,这样的计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光学存储、磁盘存储或其他磁性存储设备或可以被用于存储以指令或数据结构的形式的期望的程序代码并且可以由计算机访问的任何其他介质。如本文所使用的磁盘和光盘包括压缩光盘(CD)、激光盘、光盘、数字万用盘(DVD)、软盘和蓝光盘(BD),其中,磁盘通常磁性地复制数据并且光盘通常利用激光光学地复制数据。而且,传播信号未被包括在计算机存储介质的范围内。计算机可读介质还包括通信介质,其包括促进将计算机程序从一个地点传送到另一个地点的任何介质。例如,连接可以是通信介质。例如,如果使用同轴电缆、光缆、双绞线、数字用户线(DSL)或诸如红外、无线电和微波的无线技术从网站、服务器或其他远程源发送软件,那么同轴电缆、光缆、双绞线、DSL或诸如红外、无线电和微波之类的无线技术被包括在通信介质的定义中。以上组合还应当被包括在计算机可读介质的范围内。

备选地或者附加地,可以至少部分通过一个或多个硬件逻辑组件执行本文所描述的功能性。例如,并且非限制性地,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统系统(SOC)、复杂可编程逻辑设备(CPLD)等。

上文已经描述什么包括一个或多个实施例的示例。当然,出于描述前述方面的目的,描述以上设备或方法的每个可想到的修改和变更是不可能的,但是本领域的普通技术人员可以认识到,各方面的许多进一步的修改和置换是可能的。因此,所描述的各方面旨在包含落在随附的权利要求的精神和范围内的所有这样的变更、修改和变型。而且,在术语“包括(include)”被使用在要么详细描述要么权利要求中的意义上,这样的术语旨在以如当用作权利要求中的过渡词时“包括(comprising)”被解译时与术语“包括(comprising)”类似的方式是包括性的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号