取决于密钥认证的证书发布的制作方法

文档序号:16363650发布日期:2018-12-22 08:18阅读:316来源:国知局
取决于密钥认证的证书发布的制作方法

本申请作为pct国际专利申请于2017年04月19日被提交,并要求2016年08月26日提交的美国专利申请第15/248,463号的优先权,该申请要求2016年04月19日提交的美国临时专利申请第62/324,747号的权益和优先权,它们的公开内容在此通过引用整体并入本文。

背景技术

当今的计算系统越来越多地暴露于安全威胁,这些威胁可能危害被存储在系统上的数据和系统本身的功能。例如,计算设备可能被恶意软件感染,恶意软件支持对被存储在设备上的数据的未授权的访问和/或能够支持设备的功能被未授权方劫持。

可信平台模块(tpm)帮助改善用于计算系统的安全性。tpm是计算机芯片(微控制器),其通常是计算机主板的一部分。tpm提供基于硬件的验证和认证(attestation)。验证是用于证明计算设备是其声称的设备的过程。认证是用于证明计算设备值得信赖并且未被破坏的过程。

通常,tpm表示可以被利用以存储被用来验证平台(例如,计算设备、移动设备、网络设备)的安全资产(诸如安全密钥、证书和口令)的安全处理环境。此外,可以利用tpm来存储有效设备状态(例如,操作系统状态)的测量,其可以被用来查明当前设备状态是否已被破坏从而使得设备可能是不安全的和/或不可信的。

可信平台模块(tpm)可以被用来以这样的方式创建密码的公钥/私钥对,在该方式中私钥永远不会在tpm以外被泄露或使用。这种类型的密钥可以被用来保证某种密码操作在特定计算机的tpm中发生,这是因为使用这样的密钥对的私钥的任何操作必须在该特定tpm内发生。

加密、数字签名和证书

加密通常通过使用私钥/公钥对(被称为“公共密钥密码”或“pki”)来工作。利用一个密钥而被加密的数据仅可以利用来自密钥对的另一密钥而被解密。密钥对中的密钥是类似的。通常,密钥基于素数并且具有足够的长度(例如,位)以使得在没有正确密钥的情况下解密数据非常困难。一个密钥被保密(私钥),并且另一个密钥(公钥)被分发。具有公钥的任何人都可以加密数据,然后只能由对应的私钥的持有者解密。

密钥对也可以被用于数字签名,以证实消息来自于它应该来自于的源。密钥的所有者利用私钥对数据签名。数据的接收者可以将签名与公钥进行比较,并且如果它们匹配,则具有有关消息的发送者的身份的证据。

为了使公钥密码有价值,用户必须被确保与他们通信的其他方是“安全的”—即,他们的身份和密钥是有效且可信的。为了提供这一保证,用户必须具有注册的身份。这些身份以被称为证书的数字格式被存储。证书权威机构(ca)表示用来创建这些数字证书的人员、过程和工具,这些数字证书将用户的名称安全地绑定到他们的公钥。在创建证书时,ca充当信任的代理。只要用户信任ca及它的用于发布和管理证书的业务策略,他们就可以信任由ca发布的证书。ca通过对包括以下信息等的数据集数字地签名来针对用户创建证书:

●按照专有名称格式(distinguishednameformat)的用户的名称;

●用户的公钥;

●证书的有效期(或寿命)(开始日期和结束日期);以及

●具体操作,公钥将针对这些具体操作而被使用(无论是用于加密数据、验证数字签名,还是两者)。

证书上的ca的签名允许对证书的内容的任何篡改被容易地检测到。只要证书上的ca的签名能够被验证,证书就具有完整性。由于证书的完整性可以通过验证ca的签名而被确定,因此证书本质上是安全的,并且能够按照完全公开的方式而被分发(例如,通过可公共访问的目录系统)。

从证书取回公钥的用户可以被确保公钥是有效的。也就是说,用户可以信任证书,并且它的相关联的公钥属于由专有名称指定的实体。用户还相信公钥仍在它的定义的有效期内。此外,用户被确保公钥可以按照针对其而由ca认证的方式被安全地使用。

tpm密钥

通常,tpm具有两种类型的密钥:签注(endorsement)密钥(“ek”)和认证身份密钥(“aik”)。

签注密钥(ek)是受限的加密密钥(包括私钥/公钥对),其通常在制造时被永久嵌入在tpm安全硬件中。ek是tpm的身份的根源。ek的私有部分(ekpriv)在tpm之外永远不可见。因为ek只能被用于加密,所以只能通过使用它来解密已经利用公共ek(ekpub)而被加密的值来间接证明私有ek(ekpriv)的拥有。因此,虽然ek不能被用来产生数字签名,但它能够基于解密操作来提供tpm验证。总之,签注密钥(ekpriv)的私有部分永远不会被释放到tpm之外。签注密钥(ekpub)的公共部分帮助识别真正的tpm。

认证身份密钥(“aik”)是受限的签名rsa密钥(包括私钥/公钥对),其被用来基于tpm的认证能力来提供平台验证。aik允许tpm产生关于平台的运行状态的密码地签名的认证证据(陈述(statement))。这些签名的陈述可以增强当前的可信网络连接(tnc)协议,从而使得它们更能抵御恶意软件的本地攻击以及端点用来歪曲它们的运行状态的企图。

密钥认证

密钥认证或tpm认证是指密码地证明密钥来自(例如,驻留在)特定平台或设备的tpm。具有tpm认证的密钥的用户证书通过由tpm提供的不可导出性、反锤击和密钥的隔离的支持而提供更高的安全保证。例如,利用tpm密钥认证,管理员可以定义用户可以用于访问它们的公司资源的设备集,并且具有强大的保证,即不能使用其他设备来访问它们。这种访问控制范例很强,因为它与硬件绑定的用户身份相连。

ek证书(其也驻留在tpm中)被用来在特定安全属性方面将身份绑定到tpm。

aik的真实世界使用(如健康认证或密钥认证)需要来自正被认证的设备健康或密钥数据的实体的aik信任。这一信任被体现在aik证书中,该证书从aik发布服务的公共服务器被发布。这一证书是aik是受限的签名tpm密钥并且不能被用来对不正确的tpm信息(健康认证或密钥认证声明(claim))签名的证明。aik证书被用来认证tpm内aik的存在。它也被用来认证由aik证实的其他密钥实际上源自该特定tpm。

然而,aik证书发布的当前的实现方式需要从客户端设备向公共aik发布服务器的两次或更多次网络跳跃(hop)或往返。健康证书发布的当前的实现方式需要两次或的更多次到aik发布服务器的往返,加上到健康发布服务器的附加的跳跃或往返。此外,一些私有网络不授予对公共aik证书发布服务器的访问,因此在限制于这些网络的设备上可能无法提供aik证书(以及因此的健康证书)。

关于这些和其他一般考虑,已经做出了本技术的方面。而且,尽管已经讨论了相对具体的问题,但应当理解,所呈现的技术的方面不应当受限于解决在背景技术中被标识的具体问题。



技术实现要素:

本发明提供了取决于密钥认证(诸如,例如,来自计算平台内的可信平台模块的密钥的密钥认证)的证书和其他令牌(诸如,解密密钥、签名密钥、用来登录到其他系统或网站的验证凭证,以及用来支持特定于客户的功能的许可)的流线型(streamlined)发布。更具体地,本公开内容教导了用于获得证书和其他令牌的系统和方法,证书和其他令牌取决于在请求客户端和发布服务器之间的单次往返内的密钥认证。描述了用于将请求的证书(或其他令牌)包装在服务器密钥(诸如,在密钥挑战中服务器将其加密成公共ek的aes密钥)中的各种方法。如果ek和aik密钥两者并非都存在于tpm上,则无法解密加密的证书(或其他令牌)。如果tpm上存在两个密钥,则可以使用从密钥挑战恢复的aes密钥来解密证书(或其他令牌)。

在实施例中,本发明提供了对针对健康证书的客户端的请求的服务器侧验证,而不需要aik证书。客户端向发布健康证书的服务器发送密钥认证声明和健康认证声明。服务器将创建密钥认证挑战,需要由客户端解密该密钥认证挑战以证明ek和aik的驻留,并且同时,服务器还将创建客户端需要的健康认证blob以便向前推进健康认证。服务器将这一数据发送回客户端。如果密钥认证挑战有效,则客户端将能够解密健康认证blob并且将处于与客户端拥有aik证书时相同的状态(除了只需要一次往返到健康服务器并且不需要与公共aik发布服务的任何通信)。

在另一实施例中,本发明提供了利用到aik发布服务器的单次跳跃或往返的、针对aik证书以及这一证书的发布的请求的服务器侧验证。当服务器接收到针对aik证书的请求时,它创建密钥认证挑战,需要客户端解密该密钥认证挑战以证明ek和aik的驻留,并且同时,服务器也将使用被包装在密钥认证挑战中的秘密(secret)(例如,aes密钥或服务器密钥)来加密aik证书。服务器将这一数据发送回客户端。如果密钥认证挑战有效,则客户端将能够解密aik证书,而无需向服务器发送其他证明。

将领会到的是,这些仅是几个示例,并且可以预期其他示例。此外,虽然本公开内容描述了密钥声明和健康声明的认证的示例,但是本公开内容适用于涉及需要被认证的密钥的tpm声明的任何服务器侧验证。此外,虽然本公开内容描述了健康证书和aik证书的发布,但是本公开内容涉及服务器侧向客户端计算机发布任何证书或任何其他令牌,包括例如,解密密钥、签名密钥、用来登录到其他系统或网站的验证凭证以及用来支持特定于客户端的功能的许可。

另外,提供本发明内容是为了介绍将在下文的具体实施方式部分中被进一步描述的一些概念。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征。

附图说明

参考附图描述详细的描述。在附图中,附图标记的(多个)最左边的数字标识该附图标记首次出现的图。说明书和附图中的不同实例中使用相同的附图标记可以指示相似或相同的项目。

图1是根据本发明的一个或多个实施例的可操作以采用本文中所讨论的技术的示例实现方式中的环境的图示。

图2描绘了密钥认证的传统的实现方式。

图3描绘了健康认证的传统的实现方式。

图4描绘了根据本发明的一个或多个实施例的健康认证的示例实现方式。

图5描绘了根据本发明的一个或多个实施例的密钥认证的示例实现方式。

图6是图示根据本发明的一个或多个实施例的用于验证密钥认证声明的方法中的步骤的流程图。

图7是图示根据本发明的一个或多个实施例的用于验证健康认证声明的方法中的步骤的流程图。

图8是图示根据本发明的一个或多个实施例的用于创建密钥挑战的方法中的步骤的流程图。

图9描绘了根据本发明的一个或多个实施例的基于密钥认证和健康认证的健康证书的示例实现方式。

图10是图示根据本发明的一个或多个实施例的用于客户端来评估从服务器接收的密钥挑战(例如,ek挑战)的方法中的步骤的流程图。

具体实施方式

图1是示例实现方式中的环境100的图示,该示例实现方式可操作以采用基于本文中所讨论的密钥认证和健康认证的技术。

环境100包括客户端设备102,客户端设备102可以被体现成任何合适的设备,诸如,作为示例而非限制,智能电话、平板计算机、便携式计算机(例如,膝上型计算机)、台式计算机、可穿戴设备等。以下在图9中示出并描述了客户端设备102的各种不同示例中的一个示例。

客户端设备102包括支持各种活动和任务被执行的各种不同功能。例如,客户端设备102包括操作系统04和应用106。通常,操作系统104表示用于将客户端设备102的各种系统组件(诸如硬件、内核级模块和服务等)抽象化的功能。例如,操作系统104可以将客户端设备102的各种组件抽象化到应用106,以支持组件和应用106之间的交互。

应用106表示支持经由客户端设备102执行各种任务和活动的功能,诸如文字处理、web浏览、电子邮件、社交媒体、企业任务等。应用106可以被本地安装在客户端设备102上以经由本地运行时环境被执行,和/或可以表示到远程功能(诸如,基于云的服务、web应用等)的门户。因此,应用106可以采用各种形式,诸如本地执行的代码、到远程托管的服务的门户等。

客户端设备102还包括可信平台模块(tpm)108,其表示被保护以免受客户端设备102的大多数或所有其他功能的一般访问的客户端设备102的一部分。可以按照各种方式来实施tpm108,这些方式诸如分离的、专用硬件环境(例如,专用芯片)、现有硬件环境的细分部分(例如,中央处理单元(cpu)的子部分)、受保护的固件环境等。在一个或多个实现方式中,tpm108是根据从可信计算组(tcg)可获得的可信平台模块(tpm)规范的模块。本领域技术人员将领会到可以存在其他tpm。实质上,任何受保护的模块都可以出于本申请的目的而充当tpm。

根据各种实现方式,与tpm08的交互由tpm访问模块110代为行使(broker)。通常,tpm访问模块110表示使客户端设备102的不同组件(诸如,操作系统104的组件、应用106等)能够与tpm108交互的功能。例如,tpm访问模块110表示用于tpm108的设备驱动器。tpm访问模块110可以按照各种方式而被实施,这些方式诸如操作系统104的组件、客户端设备102的分离的系统组件(例如,内核级组件)、它们的组合等。

tpm108包括tpm处理器112和tpm存储装置114。根据各种实现方式,tpm处理器112表示可以由tpm108利用以执行各种处理任务的专用硬件处理单元。tpm存储装置114表示用于tpm108的数据存储容量,并且被保护以免受tpm108外部的实体的访问。

被存储在tpm存储装置114上的是安全资产116,其表示可以被用来验证某些实体的身份、各种类型数据的真实性和/或可信状态等的不同类型的安全相关的信息。安全资产116的示例包括安全密钥(例如,密码密钥)、安全证书、加密和解密算法、受保护的数据等。在特定实现方式中,安全资产116包括签注密钥(ek)118(包括私钥(ekpriv)118a和公钥(ekpub)118b)、认证身份密钥(aik)120(包括私钥(aikpriv)120a和公钥(aikpub)120b)以及签注密钥证书(eic)122。如本文中所使用的,术语“aik”和“aik120”可以指代公钥(aikpub)和/或私钥(aikpriv)。如本文中所使用的,术语“ek”和“ek118”)可以指代公钥(ekpub)和/或私钥(ekpriv)。下面讨论关于可以配置和利用安全资产116的方式的细节。

tpm108还包括平台功能124、平台寄存器126和引导计数器128。平台功能124表示用于提供信息的安全存储的各种功能,诸如验证功能、密钥生成功能、加密和解密功能、上下文相关的功能等。根据各种实现方式,tpm访问模块10可以与平台功能124交互以基于本文中描述的密钥认证和健康认证来执行用于健康认证的技术的各个方面。

平台寄存器126表示用于存储客户端设备102的系统状态和上下文信息的存储位置。例如,平台寄存器126可以被用于存储各种系统组件的“测量”,诸如在系统引导时被收集的操作系统104的模块的测量。在至少一些实现方式中,平台寄存器表示tpm108的平台配置寄存器(pcr)。

通常,“测量”指代标识和/或表征各种设备相关的数据(诸如客户端设备102的代码模块、客户端设备102的配置数据等)的方式。如本文中所使用的,术语“代码模块”通常指代可执行代码的部分,诸如应用106、服务、操作系统104的模块、进程、各种二进制文件和/或可执行文件等的部分。测量的示例包括从设备相关的数据、数据签名、设备相关的数据的加密版本和/或设备相关的数据的部分等生成的哈希值。例如,可以通过将安全哈希算法(sha)(例如,sha-1、sha-2等)应用于设备相关的数据来生成测量。

引导计数器128表示用于跟踪客户端设备102何时被引导和重新引导的功能。例如,引导计数器128维持每次客户端设备102被重新引导时都被修改的引导值。通常,可以利用引导计数器128来区分客户端设备102的不同引导状态。

环境100还包括健康服务服务器(“健康服务”)130,其可由客户端设备102经由本地网络132通信地访问。通常,健康服务器130表示客户端设备102可以与之交互以支持执行各种与信任相关的事务(诸如获得用于客户端设备102的健康证书)的资源。健康服务器130可以经由各种类型和/或计算设备的组合而被实施,在下面的图3和图4中描述了它的示例。

本地网络132表示网络,环境100的各种实体可以通过网络通信。本地网络132可以采用各种不同的配置,诸如用于诸如企业实体、政府实体、教育实体等实体的局域网(lan)。在至少一些实现方式中,如由虚线136所示的,防止在客户端设备102和健康服务器130之间通信的数据暴露于本地网络132以外。例如,客户端设备102与健康服务器130之间的通信可以被限制在本地网络132内并且不允许其穿越到本地网络132之外的网络,诸如公共网络140。

健康服务器130可以包括验证资产134,其表示使得健康服务器130能够验证由客户端设备102做出的某些声明的有效性的不同的安全相关的资产。验证资产134的示例包括密码密钥、证书、不同证书权威机构的身份等。

客户端102可以经过公共网络140来访问aik证书发布服务150。aik发布服务可以包括用于发布aik证书的证书权威机构。

已经描述了本文中描述的技术可以在其中操作的示例环境,现在考虑对利用tpm的签注密钥(ek)的示例tpm密钥认证的讨论,tpm的签注密钥(ek)在制造时被注入到tpm中,并且对于每个tpm是唯一的。对ek的信任基于ek在tpm中的安全和防篡改的存储以及ek的证书链接到tpm制造商的发布ca的事实。“链”意味着ek的证书可以通过使用tpm制造商的发布ca的证书而被密码地验证。

图2图示了通过从位于公共服务器上的aik服务150获得认证身份密钥(aik)证书来进行tpm密钥认证的传统的过程200。在步骤202处,tpm访问模块110将密钥认证指令(密钥指令)传达给tpm108。通常,密钥设置202指示tpm108创建密钥认证声明(密钥声明)。响应于接收密钥指令202,tpm108执行密钥认证过程204以生成用于获得aik证书的密钥声明,该aik证书认证aik密钥118被包含在tpm108内。密钥声明包括公共aik(aikpub)120b和公共ek(ekpub)118b并使用私人aik(aikpriv)120a签名。例如,密钥声明被生成为签名的akpriv(aikpub、ekpub)。当在步骤204处生成密钥声明之后,在步骤206处,tpm108将密钥声明通信给tpm访问模块110。

tpm110将密钥声明发送给具有用于验证的aik证书权威机构的服务器,诸如aik发布服务150。如由虚线136所示的,服务器150在本地网络132(在图1中所示)之外。在步骤210处,服务器150使用来自密钥声明的aik公钥来验证签名(即,aikpriv)。如果密钥声明通过验证,则服务器150在步骤212处创建ek挑战。ek挑战是由来自密钥声明的客户端102的ek(ekpub118b)的公共版本加密的现时(nonce)。在步骤214处和步骤216处,服务器150通过tpm访问模块110将ek挑战发送给tpm108。

在步骤218处,tpm108验证ek挑战中的aik120与用于签名ek挑战的ekpub共同驻留在tpm中。如果是,则在步骤220处,tpm108使用驻留在tpm上的ekpriv118a对现时进行解密。如果tpm108能够解密该现时,则客户端102将在步骤222和步骤224处将解密的现时发送回服务器150(通过tpm访问模块110)以证明它通过了认证检查(即,aik驻留在tpm中)。此时,服务器150将在步骤226处发布用于aik的证书,并在步骤228处将aik证书发送回客户端102。客户端将存储aik证书。如图2中所示,传统的密钥认证过程需要从客户端102到服务器150的两次分离的往返,如曲线箭头230和232所示的。

图3图示了用于健康认证的传统的过程300。在步骤302处,tpm访问模块110将健康认证指令(健康指令)传达给tpm108。健康指令指示tpm108创建健康认证声明(健康声明)。响应于步骤304,tpm108生成包括来自平台寄存器126和引导计数器128的引用(例如,pcr)的健康声明,并使用aikpriv120a对pcr进行签名。然后,在步骤306处,tpm108将健康声明通信给tpm访问模块110。而且,响应于健康指令302,tpm108将aik证书(诸如,使用图2中所示的过程接收的证书,在步骤308处和tcg日志(在步骤310处)发送给tpm访问模块110。tcg日志包括各种模块的测量和/或在客户端设备102上驻留(例如,存储、加载和/或运行)的二进制文件。例如,当请求健康证书时,各种模块和过程的测量被捕获并将被存储成tcg日志的一部分。

接下来,tpm访问模块110在步骤312处生成包括健康声明、日志和aik证书的健康证书请求,并将证书请求发送给健康认证服务器130。该请求可以使用标识健康服务器130的统一资源指示符(uri)来路由。健康服务器130与客户端设备在同一本地网络132中。

健康服务器130接收健康证书请求并执行验证过程314以确认aik证书是由已知且可信的证书权威机构(ca)发布的,并且aik证书是有效的而不是被撤销的。然后它从证书提取aikpub。服务器信任aikpub,因为它来自aik证书。在步骤316处,服务器130通过检查以确保来自aik证书的aik公钥(aikpub)与用于签名健康声明的aikpriv匹配来确定健康声明的有效性。在步骤316处,服务器130还相对于日志检查健康声明中的pcr以确保它们匹配。在该特定示例中,验证过程316确定健康声明是有效的,并且因此健康服务器130在步骤318处生成健康证书,该健康证书认证客户端设备102的健康状态。例如,健康证书标识客户端设备102并且指示客户端设备102当前处于安全状态。然后,在步骤320处,服务器130将健康证书传达给客户端102。

传统的健康认证过程300需要到服务器的三次往返:从客户端102到公共aik服务器150并返回的两次往返(如图2中的箭头230(第一次往返)和箭头232(第二次往返)所示),加上从客户端102到健康认证服务器130并返回的第三次往返(如图3中的箭头234所示)。

图4示出了根据本发明实施例的健康认证过程400。健康认证过程400具有优于图2和图3中所示的传统的过程的若干优点。例如,过程400不要求客户端102向服务器130提供aik证书以接收健康证书。此外,如由箭头434所示的,过程400仅需要到服务器的一次跳跃。更进一步地,过程400不要求客户端102与本地网络132外部的任何服务器或服务通信以接收健康证书。

过程400以查明健康证书要针对客户端设备而被取回开始。例如,客户端设备102从特定应用程序/服务接收认证客户端设备102的健康的请求。备选地或另外地,客户端设备102自动地发起健康证书取回过程,诸如响应于客户端设备102的重新引导。

在步骤402处,tpm108将密钥声明发送给tpm访问模块110。在实施例中,响应于从tpm访问模块110发送给tpm108的密钥指令而创建密钥声明。密钥声明可以包括利用aikpriv120a签名的aikpub120b和ekpub118b。

在步骤404处,tpm108向tpm访问模块110发送健康声明。在实施例中,响应于从tpm访问模块110发送给tpm108的健康指令而创建健康声明。健康声明可以包括利用aikpriv120a签名的pcr。

tpm访问模块110可能已经具有ek证书,但是如果没有,则tpm108在步骤406处将ek证书122发送给tpm访问模块110。在步骤408处,tpm108发送tpm访问模块110和tcg日志。虽然步骤402、404、406和408被示出为以特定的顺序被发送,但是它们可以按照任何的顺序从tpm108被发送给tpm访问模块110。此外,这些步骤可以被分离地执行或被分组成到tpm模块110的一个或多个通信。

tpm访问模块110接收密钥声明、健康声明、日志和ek证书122。tpm访问模块然后创建健康证书请求,其可以包括健康声明、密钥声明、日志和ek证书122,并且在步骤410处,将该请求发送给健康服务服务器130。在至少一些实现方式中,请求、密钥认证声明、ek证书和健康认证声明作为来自客户端设备102的单次通信的一部分被发送给健康服务130。

在步骤411处,服务器从健康证书请求提取ek证书,并验证ek证书是由已知且可信的ca发布的、证书是有效的并且未被撤销。然后它从ek证书提取ekpub。

在步骤412处,服务器130验证密钥声明,如关于图6详细描述的。如果验证步骤412通过,则过程400前进到创建ek挑战的步骤414。

在步骤414处,服务器创建ek挑战,其将关于图8详细描述。通常,该过程包括生成秘密,诸如aes密钥(或服务器密钥)418,使用在步骤411中从ek证书提取的ekpub118a加密该密钥,然后将其与在密钥声明中接收的aikpub密钥一起打包。

在步骤416处,服务器130验证健康声明,如关于图7详细描述的。通常,服务器通过使用来自密钥声明的aikpub来验证pcr引用上的签名是正确的且与tcg日志值一致。此时,aikpub不被信任(因为服务器尚未收到aik证书),但服务器将检查aikpub是否与指定的ekpub存在于同一个tpm上,基于在步骤411中审查的ek证书,已知该指定的ekpub有效。在步骤416处,服务器130还相对于日志检查健康声明中的pcr以确保它们匹配。如果验证过程416确定健康声明有效,则健康服务器130在步骤420处生成健康证书。

如果在步骤411、412或416处未验证或未确定ek证书、密钥认证声明或健康认证声明中的一个或多个,则服务器130拒绝对健康证书的请求,并且因此,不为客户端设备102生成健康证书。在至少一些实现方式中,健康服务130向客户端设备102返回指示请求被拒绝的通知。通知还可以包括其他信息,诸如密钥认证声明和/或健康认证声明中的哪一个被确定为无效,以及为什么(多个)特定声明被确定为无效。

假设验证检查411、412和416通过,则在步骤422处,服务器130通过利用aes密钥加密健康证书并利用包括aik120的ek挑战将其包装来创建健康blob。

在图10中详细地示出了如图4的步骤424-步骤432中所示的客户端对健康blob的处理。继续到步骤424,健康服务器130在步骤424处将健康blob发送给客户端设备102,并且tpm访问模块110解析健康blob以取回加密的aes密钥、aik120和加密的健康证书。在至少一些实现方式中,健康blob表示从健康服务130到客户端设备102的单次集成的通信。

此时,tpm访问模块110不能解密健康证书,因为它不能解密用于加密的健康证书的加密的aes密钥。相应地,在步骤426处,tpm访问模块110向包括加密的aes密钥(即,加密的ekpub(aes密钥))的tpm108发送解密请求。如果tpm108具有与用于加密aes密钥的ekpub匹配的私有ek(ekpriv),则它将能够执行解密过程428以生成解密的aes密钥。如果tpm能够解密aes密钥,则它将在步骤430处将aes密钥发送回访问模块110。在实施例中,解密请求426还可以包括aik120(来自ek挑战)。作为解密过程428的一部分,tpm还可以检查以确保来自挑战的aik与用于加密(例如,ekpub)和/或解密(例如,ekpriv)aes密钥的ek共同驻留在tpm中。如果tpm不能够解密aes密钥,这意味着它未能通过ek挑战,因为tpm不具有它告诉服务器它具有的与健康证书请求相关的ek,或者aik与ek不在同一个tpm中。

当tpm访问模块110接收aes密钥时,它使用aes密钥来解密432加密的健康证书。客户端设备102本地存储健康证书220以用于认证客户端设备102的当前状态的健康。

在至少一些实现方式中,健康证书220是引导状态敏感的。例如,如果客户端设备102在接收健康证书220之后重新引导,则健康证书220可能到期。在这种情况下,可以重新发起场景400以基于客户端设备102的当前引导状态获得新的健康证书。

图5示出了根据本发明实施例的密钥认证过程500。密钥认证过程500具有优于图2中所示的传统的过程的优点,因为它只需要一次跳跃到服务器,如由箭头534所示的。尽管图5示出了对aik发布服务器150作出对aik证书(参见步骤508)的请求以及aik证书的发布,但是方法500通常不限于aik证书或甚至证书。它可以用于请求任何类型的令牌,其中只有在密钥认证成功(例如,客户端能够证明在其tpm中其拥有ek和aik密钥)时才需要确保客户端可以访问/使用令牌,从而确保没有其他系统可以通过劫持请求和/或响应来接触到令牌。可以使用方法500安全地传递给客户端的令牌的示例包括但不限于解密密钥、签名密钥、用于登录到其他系统或网站的验证令牌,以及启用特定客户端机器上的某些特征的许可。

在步骤502处,tpm访问模块110将密钥认证指令(密钥指令)传达给tpm108。通常,密钥指令指示tpm108创建密钥认证声明(密钥声明)。响应于接收密钥指令,tpm108生成密钥声明。密钥声明包括公共aik(aikpub)120b和公共ek(ekpub)118b,并使用私人aik(aikpriv)120a签名。例如,密钥声明被生成为签名的aikpriv(aikpub,ekpub)。当在步骤504处生成密钥声明之后,tpm108在步骤506处将密钥声明传达给tpm访问模块110。响应于密钥指令或在某个较早的时间点,tpm108将ek证书122发送给tpm访问模块110。步骤503和步骤506可以按照任何顺序发生,并且可以被一起或分离地发送。

在步骤508处,tpm110向具有用于验证的aik证书权威机构(例如aik发布服务150)的服务器发送aik证书请求。该请求包括密钥声明和ek证书。

在步骤510处,服务器从aik证书请求提取ek证书,并验证ek证书是由已知且受信任的ca发布的、证书是有效的,并且未被撤销。然后它从ek证书提取ekpub。

在步骤511处,服务器130验证密钥声明,如关于图6详细描述的。如果验证步骤511通过,则过程500前进到步骤512,在那里它发布aik证书。

在步骤514处,服务器创建ek挑战,其关于图8详细描述。通常,该过程包括生成aes密钥516,使用在步骤510中从ek证书提取的ekpub118a加密该密钥,然后将其与在密钥声明中接收的aik一起打包。

在步骤514处,服务器150创建包括aik证书的aikblob,aik证书使用aes密钥加密并被包装在ek挑战中的。在步骤520处,服务器将aikblob发送给tpm访问模块。

在图10中详细示出了如在图5的步骤520-步骤528所示的客户端对健康blob的处理。通常,tpm访问模块110解析aikblob以提取ek挑战并在步骤522处将解密请求(具有加密的aes密钥和aik)发送给tpm108。

在步骤524处,tpm108验证aik与用于签名ek挑战的ekpub共同驻留在tpm中。tpm108还尝试使用驻留在tpm上的ekpriv118a来解密aes密钥。如果aik与ek共同驻留并且tpm108能够使用ekpriv解密aes密钥,则客户端102将在步骤526处将aes密钥发送回tpm访问模块110。然后,tpm访问模块110将能够在步骤528处利用aes密钥解密aik证书。以该方式,客户通过包括到aik服务器150的单次往返(参见箭头534)的过程获得了aik证书。

图6是描述根据本发明的一个或多个实施例的方法的步骤的流程图。例如,方法600描述了用于验证密钥认证声明的有效性的示例过程。在至少一些实现方式中,图6图示了用于执行图4的步骤412和图5的步骤512的方面的方式。在实施例中,过程600由服务器执行,诸如具有aik发布服务的服务器150或具有健康证书服务的服务器130。

过程600开始于步骤602,其验证密钥认证声明的签名。例如,健康服务130验证密钥认证声明签名的aikpriv(aikpub,ekpub)的签名是有效的。它通过检查以确保aikpub与用于签名密钥声明的aikpriv匹配来完成此操作。在一个实施例中,aikpub是从服务器接收的密钥声明提取的。在其他实施方案中,aikpub可以从另一个来源获得。如果aikpub和aikpriv匹配(“是”),则方法600前进到步骤612,其中确定密钥声明是有效的。如果它们不匹配,则方法600不能验证密钥声明并且前进到步骤610。

返回到步骤604,服务器检查以确认它接收的ek证书来自于已知且可信的证书授权机构、它是有效的,并且它未被撤销。如果所有这些都为真(“是”),则方法600前进到步骤612,其中确定密钥声明是有效的。如果这些中的任何一个不为真(“否”),则方法600不能验证密钥声明并前进到步骤610。

尽管以特定顺序示出了步骤602和步骤604,但是出于本发明的目的,它们可以按照任何顺序被执行。

图7是描述根据本发明的一个或多个实施例的方法700中的步骤的流程图。例如,该方法描述了用于验证健康认证声明(例如,健康声明)的有效性的示例过程。在至少一些实现方式中,该过程描述了用于执行上面参考图4描述的过程的步骤416的方面的示例方式。

步骤702解析健康认证声明以标识平台寄存器(pcr)引用和认证日志。如上文所讨论的,平台寄存器引用包括来自客户端设备102的代码的已知安全部分的测量,诸如来自代码模块、二进制文件、可执行文件等。例如,平台寄存器引用表示从tpm108的平台配置寄存器取回的测量。认证日志表示在客户端设备102上加载和/或运行的代码的测量。例如,当发起针对客户端设备102的健康证书的请求时,客户端设备102上加载和/或运行的代码的测量被捕获并被存储为认证日志的一部分。

步骤704验证健康声明的签名,该签名使用私有aik120a(即aikpriv)签名。因此,健康服务130验证平台寄存器引用利用有效的aikpriv签名。它通过检查以确保aikpub与用于签名密钥声明的aikpriv相匹配来完成此操作。如果它们匹配(“是”),则方法700前进到步骤706。如果它们不匹配,则方法600不能验证健康声明并且前进到步骤708。

步骤706查明认证日志是否与平台寄存器引用匹配。例如,健康服务130将认证日志中包括的代码模块的测量与平台寄存器引用中的对应的代码的测量进行比较。例如,健康服务130确定来自于认证日志的针对代码的特定部分的特定测量是否匹配针对来自于平台寄存器126的代码的特定部分的特定测量。在至少一些实现方式中,认证日志和平台寄存器126之间的不匹配可以指示部分代码已被篡改,诸如通过黑客、恶意软件等。这可以指示客户端设备102处于不安全状态,这将导致认证声明失败,从而使得不发布客户端设备102的有效健康证书。如果认证日志与平台寄存器引号不匹配(“否”),则方法700前进到步骤708并查明健康认证声明无效。

如果认证日志与平台寄存器引号匹配(“是”),则方法700在710处查明健康认证声明是有效的,并且用于发布客户端设备102的健康证书的过程可以继续。

尽管以特定顺序示出了步骤704和步骤706,但是出于本发明的目的,它们可以按照任何顺序被执行。

图8是描述根据本发明的一个或多个实施例的方法800中的步骤的流程图。更具体地,图8图示了用于生成ek挑战(如图4中的步骤414和图5中的步骤514所示的)的示例方法。在实施例中,过程800由服务器执行,诸如具有aik发布服务的服务器150或具有健康证书服务的服务器130。

方法800在步骤802处以生成秘密开始。在至少一些实现方式中,秘密表示可以用于数据的加密和解密的对称密码密钥(例如,aes密钥)。

在步骤804处,从签注密钥证书提取公共签注密钥(ekpub)。例如,在一个实施例中,在图4的步骤410,健康服务130从客户端设备102接收的ek证书122提取ekpub120b。在另一个实施例中,aik服务150从它在图5的步骤508从客户端设备接收的ek证书提取ekpub。在备选的实施例中,ekpub可以来自另一个来源,例如密钥声明。

在步骤806处,服务器使用公共ek加密aes密钥以形成加密的ekpub(aes密钥)。

在步骤808处,服务器将加密的aes密钥与来自密钥声明或其他来源的aik(诸如aikpub和/或aikpriv)打包以形成ek挑战。

图10是描述根据本发明的一个或多个实施例的方法的步骤的流程图。例如,方法1000描述了用于接收和响应密钥挑战(诸如参考图4和图5描述的ek挑战)的示例过程。至少在某些实现方式中,图10图示了用于执行图4的步骤424-步骤432以及图5的步骤520-步骤528的方面的方式。在实施例中,过程1000由诸如客户端102的客户端执行。

方法1000开始于步骤1002,其中客户端102接收诸如健康blob或aikblob的blob。在步骤1004处,客户端解析该blob以取回ek挑战和加密的证书。在步骤1006处,客户端提取加密的aes密钥(或其他服务器秘密)和加密的证书。此时,客户端不能够解密加密的证书,因为它需要的密钥被加密在ek挑战中。客户端必须通过ek挑战才能够解密加密的证书。为了通过ek挑战,客户端必须证明从挑战提取的aik与用于加密服务器秘密的ek(例如,aes密钥)共同驻留在同一tpm中(参见步骤1008)。

确定客户端是否能够通过ek挑战发生在两个步骤(1008a和1008b)中,这可以按照任何顺序发生。在步骤1008a处,客户端通过将从ek挑战的提取的aik与驻留在tpm中的aik进行比较来确定从ek挑战的提取的aik是否驻留在客户端的tpm中。如果它们匹配(“是”),则方法移动到步骤1008b。如果它们不匹配(“否”),则客户端未通过ek挑战(步骤1016)。

返回到步骤1008b,客户端尝试使用来自tpm108的ekpriv来解密服务器的秘密。如果解密成功(“是”),则该方法在步骤1010处通过ek挑战并在步骤1012处继续使用解密的服务器秘密来解密加密的证书。另一方面,如果解密不成功(步骤1008b为“否”),则该方法在步骤1016处未通过ek挑战。

图9在900处总体地图示了包括示例计算设备902的示例系统,示例计算设备902表示可以实施本文中描述的各种技术的一个或多个计算系统和/或设备。例如,上面参考图1而被讨论的客户端设备102和/或健康服务130可以被体现为计算设备902。计算设备902可以是例如服务提供商的服务器、与客户端相关联的设备(例如,客户端设备)、片上系统和/或任何其他合适的计算设备或计算系统。

如所图示的示例计算设备902包括处理系统904、一个或多个计算机可读介质906和一个或多个输入/输出(i/o)接口908,它们彼此通信地耦合。虽然未示出,但是计算设备902还可以包括将各种组件彼此耦合的系统总线或其他数据和命令传送系统。系统总线可以包括不同总线结构(诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用各种总线架构中的任何总线架构的处理器或本地总线)中的任何一个或组合。还构想了各种其他示例,诸如控制线和数据线。

处理系统904表示使用硬件来执行一个或多个操作的功能。相应地,处理系统904被图示为包括可以被配置成处理器、功能块等的硬件元件910。这可以包括在硬件中实施成专用集成电路或使用一个或多个半导体而被形成的其他逻辑器件。硬件元件910不受形成它们的材料或其中采用的处理机制的限制。例如,处理器可以包括(多个)半导体和/或晶体管(例如,电子集成电路(ic))。在这样的上下文中,处理器可执行的指令可以是电子可执行的指令。

计算机可读介质906被图示为包括存储器/存储装置912。存储器/存储装置912表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储装置912可以包括易失性介质(诸如随机存取存储器(ram))和/或非易失性介质(诸如只读存储器(rom)、闪存、光盘、磁盘等)。存储器/存储装置912可以包括固定的介质(例如,ram、rom、固定的硬盘驱动等)以及可移除介质(例如,闪存、可移除硬盘驱动、光盘等)。计算机可读介质906可以按照下面被进一步描述的各种其他方式被配置,

(多个)输入/输出接口908表示允许用户向计算设备902录入命令和信息并且还允许信息使用各种输入/输出设备而被呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音识别和/或语音输入)、扫描仪、触摸功能(例如,被配置成检测物理触摸的电容性传感器或其他传感器)、相机(例如,可以采用可见或不可见波长(诸如红外线频率)来检测不涉及作为手势的触摸的运动)等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备902可以按照下面被进一步描述的各种方式被配置以支持用户交互。

本文可以在软件、硬件元件或程序模块的一般上下文中描述各种技术。通常,这样的模块包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、元件、组件、数据结构等。如本文中使用的术语“模块”、“功能”、“实体”和“组件”通常表示软件、固件或它们的组合。本文中描述的技术的特征是平台独立的,这意味着可以在具有各种处理器的各种商业计算平台上实施这些技术。

描述的模块和技术的实现方式可以被存储在某种形式的计算机可读介质上或跨某种形式的计算机可读介质被传输。计算机可读介质可以包括可以由计算设备902访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。“计算机可读存储介质”可以指代与仅仅信号传输、载波或信号本身相比支持信息的持久存储的介质和/或设备。计算机可读存储介质本身不包括信号。计算机可读存储介质包括诸如以适于诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据的信息的存储的方法或技术而被实施的易失性和非易失性、可除移除和不可移除介质和/或存储设备的硬件。计算机可读存储介质的示例可包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字万用盘(dvd)或其他光学存储装置、硬盘、磁盒、磁带、磁盘存储装置或其他磁存储设备,或适于存储期望的信息并且可由计算机访问的其他存储设备、有形介质或制品。

“计算机可读信号介质”可以指代被配置成诸如经由网络将指令传输给计算设备902的硬件的信号承载介质。信号介质通常可以体现计算机可读指令、数据结构、程序模块或调制的数据信号中的其他数据(诸如载波、数据信号),或其他传输机制。信号介质还包括任何信息递送介质。术语“调制的数据信号”意味着以对信号中的信息编码这样的方式设置或改变它的特性中的一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、射频(rf)、红外和其他无线介质的无线介质。如前所述,硬件元件910和计算机可读介质906表示以硬件形式而被实施的指令、模块、可编程器件逻辑和/或固定器件逻辑,其可以在一些实施例中被采用以实施本文中描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统的组件、专用集成电路(asic)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)以及按照硅或其他硬件设备的其他实现方式。在本上下文中,硬件元件可以作为处理设备操作,处理设备执行由硬件元件和被用于存储用于执行的指令的硬件设备(例如,前面描述的计算机可读存储介质)体现的指令、模块和/或逻辑定义的程序任务。

还可以采用前述的组合来实施本文中描述的各种技术和模块。相应地,软件、硬件或程序模块和其他程序模块可以被实施成在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件910体现的一个或多个指令和/或逻辑。计算设备902可以被配置成实施与软件和/或硬件模块对应的特定指令和/或功能。相应地,可以由计算设备902作为软件可执行的模块的实现方式可以至少部分地按照硬件实现,例如,通过使用处理系统的计算机可读存储介质和/或硬件元件910。指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备902和/或处理系统904)可执行/可操作以实施本文中描述的技术、模块和示例。

如图9中被进一步图示的,当在个人计算机(pc)、电视设备和/或移动设备上运行应用时,示例系统900支持泛(ubiquitous)环境以用于无缝的用户体验。当在利用应用、玩视频游戏、观看视频等的同时从一个设备转换到下一个设备时,针对普通用户体验,服务和应用在所有三种环境中基本类似地运行。

在示例系统900中,多个设备通过中央计算设备互连。中央计算设备可以是在多个设备的本地,或者可以远离多个设备而被定位。在一个实施例中,中央计算设备可以是通过网络、因特网或其他数据通信链路而被连接到多个设备的一个或多个服务器计算机的云。在一个实施例中,这一互连架构支持功能跨多个设备而被递送,以向多个设备的用户提供共同且无缝的体验。多个设备中的每个设备可以具有不同的物理要求和能力,并且中央计算设备使用平台来支持向设备传递体验,该体验既针对设备而被定制而又对所有设备通用。在一个实施例中,创建了一类目标设备并且针对通用类的设备定制了体验。可以通过物理特征、使用的类型或设备的其他共同特性来定义设备的类。在各种实现方式中,计算设备902可以采用各种不同的配置,诸如用于计算机914、移动设备916和电视918使用。这些配置中的每个配置包括可以具有通常不同的构造和能力的设备,并且因此可以根据一个或多个不同的设备类来配置计算设备902。例如,计算设备902可以被实施成包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等的设备的计算机914类。

计算设备902还可以被实施成包括移动设备(诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、可穿戴设备、多屏幕计算机等)的移动设备916类。计算设备902还可以被实施成电视918类的设备,其包括在休闲观看环境中的具有或被连接到通常更大的屏幕的设备。这些设备包括电视、机顶盒、游戏机控制台等。本文中描述的技术可以由计算设备902的这些各种配置支持,并且不限于本文中描述的技术的具体示例。

云920包括和/或表示用于资源924的平台922。平台922将云920的硬件(例如,服务器)和软件资源的底层功能抽象化。资源924可以包括当在远离计算设备902的服务器上执行计算机处理时可以被利用的应用和/或数据。资源924还可以包括通过因特网和/或通过订户网络(诸如蜂窝或wi-fi网络)而被提供的服务。平台922可以将用来将计算设备902与其他计算设备连接的资源和功能抽象化。平台922还可以用于将资源的缩放抽象化以将对应的规模级别提供给遇到的、针对经由平台922而别实施的资源924的需求。相应地,在互连设备实施例中,本文中描述的功能的实现可以被分布在整个系统900中。例如,功能可以部分地在计算设备902上被实施并且经由将云920的功能抽象化的平台922被实施。

这里讨论的是可以被实施以执行本文中讨论的技术的多种方法。可以按照硬件、固件或软件或它们的组合来实施方法的方面。方法被示出为指定由一个或多个设备执行的操作的一组步骤,并且不必限于用于执行各个块的操作的所示的顺序。此外,根据一个或多个实现方式,可以将关于特定方法而被示出的操作与不同方法的操作组合和/或互换。可以经由上面参考环境100而被讨论的各种实体之间的交互来实施方法的方面。

虽然本文参考获得健康证书讨论了实现方式,但是应当领会到的是,技术的方面可以用于各种其他目的,诸如密钥认证。已经基于密钥认证和健康认证讨论了用于健康证书的一些示例场景和过程,现在考虑根据一个或多个实施例的示例系统和设备的讨论。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1