寻址可信执行环境的制作方法

文档序号:18622097发布日期:2019-09-06 22:35阅读:291来源:国知局
寻址可信执行环境的制作方法

本公开总体上涉及计算设备中的可信和/或被隔离的执行环境,并且更具体地涉及向可信执行环境安全地传送一个或多个秘密或密钥。



背景技术:

密钥管理系统(kms)是秘密的存储设备。秘密通常具有公共id、保护值和用于控制谁可以获得该值的策略。在某些情况下,秘密也可以具有到期日期和其他元数据,等等。在典型的用例中,请求方向kms认证,建立安全信道,通过提供秘密id来请求秘密值,并且期望kms向其返回明文秘密值。通过请求方与kms之间的安全信道保护该值免受未经授权的窃听和篡改。

如本文中使用的可信执行环境(tree)可以包括以下中的任何一个:虚拟安全模式(vsm)信任应用(trustlet)、sgx应用、armtrustzone应用或某种其他类似载体。tree通常具有一些独特的属性。tree通常具有完整的加密堆栈(换言之,可以假定整个频谱中的各种加密原语,从安全随机数生成到使用密钥的散列、加密和签名库的完整菜单)。tree通常还具有少数或有限的i/o设施或与之相关联的少数或有限的i/o设施,通常限于由请求驱动的结构,在该结构中请求由不可信的“外部世界”发起。例如,vsm信任应用可能使用未经认证的远程过程调用(rpc)。tree也可以访问tree外部不可用的密钥材料或数据。这允许tree使用不可信i/o来存储数据,然后将其读回,从而确保防篡改和状态机密性。tree通常还具有可鉴证的代码、配置和密钥材料,或与可鉴证的代码、配置和密钥材料相关联。具体地,可鉴证的密钥材料允许tree从第三方接收加密到它的消息,并且向第三方签名来自tree的消息。

与其他应用一样,使用具有tree的kms可能存在安全限制。因此,可以利用来自具有或在tree中的kms的密钥来改进安全性。



技术实现要素:

本公开的说明性示例包括但不限于方法、系统以及各种设备。在一个方面,目标协议头或请求方与密钥管理系统或存储受保护数据的位置之间的其他中介可以接收来自与tree相关联的潜在的不可信请求方的对受保护数据的请求,并且接收tree的鉴证声明。目标协议头可以获取受保护数据,并且例如在洁净空间供应(例如,来自与请求相关联的请求方标识)的情况下从例如请求或从鉴证声明获得tree的目标密钥。目标协议头可以通过使用目标密钥加密受保护数据来生成定标受保护数据,并且向潜的在不可信请求方提供定标受保护数据,其中解密定标受保护数据需要tree的私有目标密钥。

下面描述系统和方法的其他特征。特征、功能和优点可以在各种示例中独立地实现,或者可以在其他示例中组合,其进一步的细节可以参考以下描述和附图来看出。

附图说明

下文中将参考附图更全面地描述本公开的实施例,在附图中:

图1a、1b和1c描绘了用于在请求方与密钥管理系统之间交换密钥的系统和过程的三个示例。

图2描绘了实现被隔离的区域或可信执行环境(tree)的控制程序监视器的示例图。

图3描绘了用于利用中间目标协议头向可信tree传送受保护数据的示例过程。

图4a和4b描绘了利用中间目标协议头向tree传送受保护数据的另一示例过程。

图5a和5b描绘了利用中间目标协议头向嵌套的tree传送受保护数据的示例过程。

图6示出了可以实现一个或多个所描述的过程的示例系统。

图7描绘了用于向tree安全地传送密钥和/或受保护数据的数据结构的示例。

图8描绘了用于基于外部tree的加密密钥利用中间目标协议头向嵌套的tree传送受保护数据的另一示例过程。

图9描绘了用于基于内部tree的加密密钥利用中间目标协议头向嵌套的tree传送受保护数据的另一示例过程。

图10描绘了本文中描述的技术可以在其中实现的示例通用计算环境。

具体实施方式

本文中描述了用于向计算设备(诸如一个或多个物理或虚拟计算设备)的可信执行环境(tree)安全地传送至少一个密钥(例如,签名密钥或加密密钥)或受保护数据/秘密的系统和技术。在一个方面,可以在密钥请求方与密钥管理系统或拥有受保护数据的实体之间实现中介。中介在本文中可以称为目标协议头。密钥请求方可以与安全执行环境或tree相关联,安全执行环境或tree可以包括vsm信任应用、sgx应用、armtrustzone应用或某种其他类似载体中的一个或多个。tree可以与请求方隔离。请求方可以请求一个或多个秘密从目标协议头传送给tree或在tree内执行的特定信任应用。响应于该请求,目标协议头可以与密钥管理系统或保存秘密的其他实体通信以获得一个或多个秘密以便传送给tree。目标协议头可以专门目标tree处的受保护数据,以便请求方或攻击者无法访问受保护数据。

在一些方面,目标协议头的实现可以取消对请求方与密钥管理系统之间的安全信道的需要。使用本文中描述的tree目标技术的目标协议头还可以使得可以以使得请求方无法访问秘密/数据的方式,将一个或多个秘密或数据发送到tree或嵌套的tree(例如,在安全内核之上运行的信任应用)。在一些情况下,请求方可能是不可信的或潜在的不可信的,使得受保护数据的所有者可能出于各种原因而希望保持受保护数据不被请求方访问。在某些情况下,确定请求方是值得信任的或者确保请求方仍然值得信任可能是困难或麻烦的。假定请求方不受信任,并且将tree与请求方隔离,可以消除其中很多问题。这种隔离可以极大地提高针对不同类型的攻击的安全性,并且可以提供其他益处和优点,如下面将更详细描述的。

图1a示出了用于在请求方与密钥管理系统之间交换密钥的示例系统和过程100a。如图所示,与客户端设备或客户端侧110相关联的请求方或请求设备120可以与密钥管理系统或与服务器或服务器侧105相关联的一些(多个)期望秘密115的持有者通信。请求方120可以从密钥管理系统115请求一个或多个秘密或一个或多个秘密受保护数据,例如,以访问某些受保护数据,执行一个或多个受保护过程,等等。请求方120和密钥管理系统(kms)115可以利用公钥秘钥-私钥密钥安全系统或本领域已知的其他密钥协议来交换期望的秘密/数据。

在操作125处,请求方120可以首先经由本领域的任何已知技术与kms115进行认证并且建立安全通信信道。操作125可以包括利用公钥系统或类似的系统。接下来,在操作130处,利用经由操作125建立的安全信道,请求方120可以向kms115发送对一个或多个秘密/受保护数据的请求。在验证请求之后,在操作135处,kms115可以通过安全通信信道向请求方120传输回秘密或请求数据。作为本领域的标准,可以在135处通过安全信道传输秘密/所请求的数据,而没有安全信道之上的任何附加保护。结果,在操作135处传输的秘密/数据可以被暴露给请求设备120。

图1b示出了用于代表可信执行环境(tree)140、飞地或用于指示与请求方120相关联的隔离执行环境的其他项目来在请求方120与ksm115之间交换一个或多个秘密或受保护数据的示例系统和过程100b。tree140可以与请求方120隔离,使得tree140中包含的代码和/或数据对于请求方120可能不是可访问(例如,可读和/或可写)的。图2示出了可信执行环境的示例200,在可信执行环境中计算设备205可以包括逻辑210(例如,代码)和状态信息220,诸如数据。状态信息220可以存储或位于被隔离的区域215中,诸如,可以放置未经授权的访问。在一些情况下,被隔离的区域215内的数据220不能由除了与被隔离的区域215相关联的逻辑210之外的任何实体直接地读取或写入。被隔离的逻辑210决定它将允许对什么类型或部分的数据220的什么类型的访问。在一个示例中,逻辑210可以允许递增和读取与数据220相关联的值,但是不能以其他方式修改数据220。在另一示例中,逻辑210可以允许使用密钥的加密操作而不允许访问密钥本身的值。在所示的示例中,逻辑或代码210可以在cpm205的一般或可访问区域中;然而,应当理解,在一些情况下,逻辑210也可以位于与状态信息220相同或不同的被隔离的区域内。

返回系统100b,可以在服务器侧105实现目标协议头(tph)150以用作请求方120/tree140与kms115之间的中介。协议头可以指代协议处理程序的软件实现,通常面向本身没有指定特定协议的系统。目标可以是指代执行环境的加密目标。总之,该术语可以指示实现用于获取以tree处的响应为目标的秘密的协议的软件和/或硬件。在一些方面,目标协议头150可以被实现为虚拟或云资源,例如,其可以在不同的硬件、软件上运行和/或与kms115分离。在一些方面,诸如数据中心等实体可以托管和/或提供目标协议头150作为服务。目标协议头150可以执行两个主要功能:1)与kms115通信/从外部实体获得秘密或受保护数据,以及2)目标对请求方120的tree140的响应。作为目标协议头150的使用的结果,请求方120不需要直接向kms115认证。kms115向目标协议头150而不是向请求方120产生其秘密。目标协议头150的功能是目标请求方120的tree140的响应,从而确保请求方120不能获得秘密/受保护数据的明文。相反,目标协议头150可以改为代表请求方120本身向kms115进行认证,但是可以在使用或不使用请求方120的标识的情况下进行。在一些情况下,目标协议头150可能需要确信它将返回给请求方120的tree140的秘密将处于“安全交给”中。在这种情况下,请求方120可以向目标协议头150提供关于tree140的状态的可鉴证信息,该可鉴证的信息可以包括与tree140相关联的可鉴证的密钥材料,可以对其响应进行加密。

在一些情况下,诸如由一个或多个信任应用提供的多个不同过程可以在安全内核内同时操作,其中每个信任应用和安全内核均被认为是tree140(例如,这是嵌套的tree的示例)。在这种情况下,每个不同的信任应用可以与会话id、信任应用类型和/或其他id相关联,其可以用于标识安全内核内的各个信任应用(例如,两者都表示为tree140)。来自目标协议头150的响应可以狭窄地目标请求中标识的tree140内的特定信任应用,如下面将更详细描述的。

在tree140目标的情况下,在请求方120与目标协议头150之间不存在对安全信道的固有需求,因为请求方120本身不受响应的信任。然而,应当理解,可以经由认证操作160添加请求方120与目标协议头150之间的安全信道,例如,以保护对请求本身的访问(请求方想要的秘密),这可能导致不期望的信息公开。在操作160处的认证之后或代替操作160处的认证,在操作155处,请求方120可以代表tree140,向目标协议头150发送对一个或多个秘密或秘密或受保护数据的请求,例如,以传送到tree。在一些方面,该请求可以与tree140相关联或标识tree140。目标协议头150可以确定tree140是否值得信任。在一个方面,请求方120的认证可以依赖于一种类型的洁净空间供应。在另一方面,认证可依赖于证明。

当请求方120设备例如是全新的并且合理地假定为没有恶意软件时,可以使用洁净空间供应。下面将参考图3更详细地描述用于使用洁净空间供应向与请求方相关联的tree传送受保护数据的示例过程。下面将参考图4更详细地描述用于使用鉴证(例如,鉴证服务)向与请求方相关联的tree传送受保护数据的示例过程。

在任一种情况下,一旦tph150已经认证了请求方120,和/或建立了tree140的可信度,tph150就可以在操作165处向kms115认证并且与kms115建立安全通信信道。在一些方面,kms115可以包括或者与保存一个或多个秘密或受保护数据(诸如许可、许可、密码等)的任何实体相关联。在与kms115建立安全通信信道时,tph150可以在操作170处发送对受保护数据的请求。kms115可以在操作175处返回所请求的秘密。在操作180处,tph150可以在tree140处目标(多个)秘密或受保护数据并且发送一个或多个秘密。

在一些方面,在操作180处向tree140传送受保护数据可以利用以下数据结构中的至少一个:加密标识密钥,其可以围绕tree标识或鉴证过程或鉴证日志构建;或者在嵌套的tree示例中(例如,在安全内核之上运行的信任应用),签名标识密钥,其也可以围绕证鉴证过程构建,如下面将更详细描述的。

图1c示出了用于代表可信执行环境(tree)140在请求方120与kms115之间安全地交换一个或多个秘密或受保护数据的另一示例系统和过程100c。系统100c可以是如上所述的系统100b的具体的示例。在系统100c中,目标协议头150可以是主机监护服务(hgs)150a。在系统100c中,hgs150a可以例如从云主机185或可以实例化或以其他方式控制tree140的其他实体接收密钥保护器190。在系统100c中,请求方120可以与例如由云主机185提供的虚拟机相关联。kp190可以包含在于2014年9月9日提交的题为“securetransportofencryptedvirtualmachineswithcontinuousowneraccess”的相关美国专利申请#14/481,399中描述的密钥保护器的一个或多个方面。kp190可以包含tree140可用的一个或多个秘密,诸如传输密钥。kp190实质上可以包装传输密钥,使得只有一组监护者才能访问它,这些监护者被授权访问传输密钥。kp190可以被加密,使得hgs150a为了读取kp190的内容并且获取传输密钥,hgs150a在操作165处向kms115认证和与kms115建立安全通信信道之后,hgs150a在操作170a处可以从kms115请求解密密钥。作为响应,kms115可以在操作175a处向hgs发送解密密钥。然后,hgs150a可以使用解密密钥来解密kp190,并且获取一个或多个秘密(例如,传输密钥),以发送到tree140。然后,在操作180处,hgs150a可以经由将在下面更详细描述的一种或多种寻址技术将秘密或传输密钥发送到tree。在一些方面,可以基于来自kp190的数据来寻址tree140。

应当理解,在一些情况下,hgs150a和kms115可以是一个实体,使得不需要在它们之间建立通信信道,并且不需要认证。

在系统100c中,不需要请求方120与hgs150a之间的认证。只要云或结构主机180是健康的,哪个结构主机与hgs150a通信并不重要,只要它是结构中的服务器之一(这可以经由鉴证来验证)。

图3示出了用于向请求方的tree传送受保护数据的示例过程300,其中假定请求方是可信的(例如,没有恶意软件)。如本文中使用的,框中的虚线或任何图中的操作指示操作是可选的,使得可以被排除。过程300可以利用与tree相关联的加密密钥,诸如由tree或发起tree的请求方的安全内核生成的公钥私钥对(例如,非对称密钥对)的公钥。在其他情况下,加密密钥可以是对称的。如本文中使用的,安全内核可以指代与更高级别的安全性相关联的计算设备的任何部分,如本领域中已知的。

在这种情况下,可以在操作302处启动或初始化tree140,并且可以在操作304处在tree140内部生成一个或多个私钥(例如,私有加密密钥)和对应的公钥。然后,在操作306处,可以向tph150注册对应的公钥并且将对应的公钥与请求方和/或请求设备的标识相关联。在一些情况下,tree140的公钥只需要注册一次,使得在公钥注册之后,过程300可以在操作308处开始。随后,请求方120可以在操作308处经由任何已知的认证技术向tph150认证。然后,tph150可以查找用于向tree140传送响应的公钥,例如,基于tree140的注册公钥,该公钥可以与请求方120的标识相关联。该过程可以被称为“洁净空间”供应,因为它只能在请求方120处于已知良好或可信赖状态时安全地完成。在该示例中,不需要其中请求方120向tph150发送tree健康证书(thc)的基于证书的认证,因为请求方120是值得信任的。在缺乏普遍存在的鉴证服务的情况下,这是验证tph150正在目标正确的tree140的可行选择。

接下来,在操作312处,tph150可以例如从kms115获得用于传送到tree140的受保护数据,如上所述。使用经由操作310访问的tree公钥,然后在操作314处,tph150可以构造用于发送到tree140的消息,包括获得的受保护数据。tph150可以在操作316处将消息发送到请求方120。

在接收到消息时,在操作318处,请求方120可以将其转发到tree140。因为请求方120不能访问tree的私钥,所以请求方120不能解密该消息以访问受保护数据。在操作320处,tree140可以使用其私钥来解密消息并且访问受保护数据。

图4a示出了用于向不可信请求方的tree传送受保护数据的示例过程400。过程400可以利用与tree相关联的加密密钥,诸如由tree或初始化tree的请求方的安全内核生成的公钥私钥对的公钥,诸如在嵌套的tree(本文中可以称为信任应用)的情况下。过程400可以附加地或备选地利用安全内核的签名密钥,其可以被认为是与tree相关联的外部tree,其中信任应用嵌套或在安全内核之上运行,tree可以用于证明由tree生成的密钥对的公钥,如下面更详细地描述的。

根据过程400,在操作402处初始化tree之后,请求方120可以在操作406处从鉴证服务请求鉴证报告或声明。图4b示出了用于从鉴证服务424获得鉴证声明或报告的示例过程。在图4b的示例中,在操作426处,请求方120可以在引导时创建包含tree140(安全内核)的公钥(idk_e)(信任应用)或tree的签名密钥(idk_s)的鉴证日志(tcg日志)。然后,在操作428处,请求方120可以将tcg日志呈现给鉴证服务424。在一些情况下,tph150可以指示或者请求方120可以选择tph150信任的鉴证服务。在操作430处,鉴证服务424可以检查tcg日志并且基于tree140(安全内核)的加密密钥(idk_e)和/或签名密钥(idk_s)发布tree健康证书(thc)。在操作432处,鉴证服务242然后可以向请求方120发送(多个)thc(本文中也称为鉴证声明)。

在操作406获得鉴证声明之后,请求方120可以在操作408处代表tree140向tph150发送鉴证声明和对受保护数据的请求。thc或鉴证声明可以包含请求方120的主题名称(用于在认证期间建立的请求方标识与证书之间创建绑定)、以及响应者(tph150)在制定响应时应当使用的密钥(例如,加密密钥或签名密钥)。

在一些方面,诸如可信平台模块(tpm)的加密密钥(ek)等防篡改标识与请求方120相关联。请求方120的证明可以使用tpmek来执行,如本领域已知的。

在一些方面,无论是带外还是通过可以是thc的一部分的发布策略(ip)对象标识符(oid),经由请求方120,tree可以向tph150通信密钥是加密密钥还是签名密钥。如上所述,在使用哪个密钥之间的选择可能影响用于构造响应的机制的选择。重要的是,tph150不要求拥有支持证书的私钥的证据,这仅仅因为如果给出了错误的证书,请求方120将无法理解响应,因为它无法访问对应的私钥。

图5a和5b示出了用于向不可信请求方的嵌套的tree传送受保护数据的示例过程500。在一些方面,两个或更多个tree可以被嵌套,使得一个tree包含在另一tree中。如本文所述,信任应用是嵌套的tree,其包含在外部tree中。在一个示例中,外部tree可以包括操作系统的可信部分的安全内核,诸如与虚拟信任级别相关联的特定存储器分区,如下面参考图6更详细地描述的。例如,当只有外部tree的加密密钥(在某些情况下可以是实例化信任应用的机器的安全内核)可用时,可以使用过程500。

过程500可以在操作502处开始,其中请求方120利用由请求方120决定的“会话标识符”来启动信任应用,该“会话标识符”可以包括任何类型的标识符,诸如与信任应用将操作的内容或数据相关或标识信任应用将操作的内容或数据,与信任应用的用户相关等(例如,“用于播放'特定的标题'的流内容应用信任应用'”)。在一个示例中,会话id可以是32字节值。该值可以被保留、在信任应用的生存期内是只读的、并且在向信任应用接收目标消息时可供安全内核使用。该值可能丢失(在进程启动时未被指定),在这种情况下,会话id可以被假定为零。

接下来,在操作504处,请求方120可以向tph150认证(如上是可选的,但仅在非常有限的情况下,诸如在请求方之间确实没有差异的情况下)。例如,期望tree(例如,tree的密钥)与请求方的标识之间的绑定的一个示例是诸如电影等内容项的播放受到许可或订户验证的限制(例如,netflix用户想要获得播放电影的许可,但netflix希望确保其是正在接收电影许可的用户(在他们的tree内))。

在操作506,请求方120可以从tph150信任的鉴证服务获得鉴证声明,诸如根据上面参考图4b描述的过程406。接下来,请求方120可以在操作508处向tph150呈现鉴证声明。应当理解,在可能适用于此处的上述洁净空间供应示例中,无需鉴证。

在接收到鉴证声明时,tph150可以在操作510处验证鉴证声明(或者,在上面的洁净空间供应示例的情况下,基于其标识查找请求方的密钥)。在过程500中的此时,请求方120知道使用哪个密钥来寻址外部tree。在一些方面,从鉴证声明或请求获得的密钥是外部tree或安全内核(而不是内部信任者)的加密密钥的指示可以被包括在请求或鉴证声明中,或者以另一种方式或带外传送到tph150,设置为缺省过程等。接下来,在操作511处,tph150可以获得请求中指示的受保护数据,例如从kms115或从持有受保护数据的任何其他实体,诸如持有许可证、密码、许可和/或其他信息的一个或多个服务。

在操作512从,tph150可以确定要目标哪个信任应用类型,例如,基于请求或基于tph150本身(例如,每个tph150可以专门为特定目的或应用而设计,诸如netflix)。在利用kp的示例中,诸如上述的参考1c,可以在kp中编码信任应用类型。在一些其他示例中,可以缺省设置或者硬编码信任应用类型,诸如在利用hgs150a的实现中。在hgs示例中,hgs150a可以始终目标虚拟模式安全过程(vmsp)信任应用,其类型可以是硬编码的(因为kp可以不包含该信息)。

在确定要目标的信任应用类型时,tph150可以在操作514处构造包括要发送到tree的受保护数据的消息。图5b中描绘了操作514的更详细示例。

在一些方面,操作514还可以包括操作536,其中tph150生成两个随机对称密钥:传输密钥tx和包装密钥tw。接下来,在操作538处,tph150可以使用thc中的公钥(其是鉴证声明的一部分)来加密tx(例如,假定thc基于加密密钥,而不是签名密钥)。在一些方面,操作538可以包括使用rsa加密和oaep填充来利用主机的idk加密tx。在一些方面,tph150可以在操作540处验证信任应用的会话id,例如,以验证信任应用是否被授权或具有访问受保护数据的正确许可(例如,为在线服务或内容项付费)。在某些情况下,会话id可以包括信任应用类型;但是,在其他情况下,信任应用类型可以在kp中编码或甚至是硬编码的。然后,在操作542和544处,tph150可以使用tx对tw进行加密,并且可以将信任应用的信任应用类型和会话id连接起来并且用作“认证标签”。注意,认证标签的使用是aes-gcm协议的工件;其他加密协议可以使用具有相同效果的不同方案。认证标签背后的想法是将tw与信任应用类型和会话id绑定在一起,使得它们无法由攻击者在传输中进行解耦。有多种其他方法可以实现这种加密;本文中描述了aes-gcm,因为它本身提供了这种功能,并且因此是有利的。

然后,在操作546处,tph150可以将加密的tx和tw的认证加密发送到请求方120。如图5a所示,在接收到可以经由图5b的操作生成和/或可以包括以与tw类似的方式加密的受保护数据的消息516之后,请求方120可以在操作518处将消息转发到信任应用。由于信任应用不能解密该消息(它正试图到达tw),在操作520处,信任应用可以将消息传输给安全内核。或者,请求方120可以绕过信任应用将响应发送到安全内核,并且安全内核在解密tw时用新信息警告信任应用。

接下来,在操作522处,安全内核可以使用其私有加密密钥对tx进行解密,然后使用tx对tw进行解密,使用认证标签来确保具有正确会话id的正确信任应用类型请求解密消息。如果验证了认证标签,则安全内核可以在操作524处将tw返回给信任应用。然后,信任应用可以使用所接收的tw来解密tw正在加密的任何其他内容,诸如受保护数据,其可以是任何大小的。

在一些方面,安全内核可以实现一个或多个过程,诸如由一个或多个api定义的过程,这些过程用于接收、解密和向正确的信任应用传输目标消息。api可以接收以特定的信任应用为目标的加密消息,并且使用idk的私有部分(安全内核标识加密密钥)解密tx。api可以使用信任应用类型和调用信任应用的会话id的连接作为标记来构造自己的认证标签(出于明显的安全原因,不能使用所提供的认证标签)。然后可以获得信任应用类型和会话id。如果认证成功,则api可以使用tx解密tw。如果解密成功,则api可以将tw返回到信任应用。

在一个示例中,所接收的消息可以包括以下信息:版本号(例如,0);传递密钥加密协议id(例如,rsa2048);传递密钥加密填充id(例如,oaep);包装密钥加密协议id(例如,aes-gcm);传递密钥密文的长度;包装密钥认证标签的长度(忽略);包装密钥密文的长度;以及传递密钥密文、包装密钥认证标签(忽略)和包装密钥密文。应当理解,这只是可以用于构造消息的很多方式中的一种。

在一些方面,上述系统或过程100、300、400或500中的一个或多个过程/系统可以在实现虚拟安全模式(vsm)的资源或虚拟机中实现。在虚拟机的上下文中的vsm和相关概念在于2014年2月21日提交的题为“virtualsecuremodeforvirtualmachines”的美国专利申请#14/186,415中描述。图6示出了包括分成不同虚拟信任级别vtl0610和vtl1615的vsm计算环境的系统或主机操作系统600。系统600可以是系统100a、100b或100c的一个或多个方面的更具体的实现,诸如云主机180,其包括在vsm中操作的计算环境。vtl0610可以包括用户模式620和正常内核模式630,并且vtl1615可以包括用户模式625和安全内核模式635。不同的vtl可以由管理程序提供,例如,在物理计算组件或虚拟计算资源(例如,一个或多个虚拟机)之上运行的管理程序,其经由对某些进程等的存储器访问的限制来交互和定义vtl0610和vtl1615。在所示示例中,vtl1615可以比vtl0610更安全,使得读取和/或写入与vtl1相关联的数据或代码需要更高的访问。vtl0610可以对应于请求方120,而vtl1615可以对应于tree140。下面将系统600描述为利用kp700。然而,应当理解,这仅作为示例给出;系统600可以利用上述鉴证/认证方案而不使用kp来达到类似的效果。

如参考系统600所描述的,主机600的客户端应用650/vtl0610可以对应于请求方120,而vtl1615、更具体地是vtl1615的安全内核635可以对应于tree140。在一些方面,信任应用640可以对应于参考过程500描述的嵌套的信任应用。在一些方面,系统600可以实现上述过程500。在其他实例中,系统600可以实现下面参考图8和9描述的过程800和/或900,其中过程500和800之间的主要区别在于使用kp来初始化信任应用以及使用hgs150a的特定的实现来代替更通用的tph150。

如图所示,一个或多个tree或信任应用640可以驻留在vtl1615的用户模式625中。在一些方面,一个或多个信任应用640可以通过虚拟机安全过程(vmsp)645被访问或与之相关联。客户端操作、应用、程序等650(客户端)可以以vtl0610的用户模式620操作。驻留在vtl1615的用户模式625下的服务器655可以经由rpc660与客户端650通信。如图所示。客户端650可以请求发起信任应用640以经由一个或多个rpc660执行一个或多个安全操作,例如,利用vmsp645。在其他方面,服务器655可以在不从客户端650接收显式请求的情况下初始化(多个)信任应用640。在任一种情况下,服务器655可以发起信任条件640,其中特定信任应用类型标识信任应用的参数,并且会话id标识信任应用640的特定实例。在一些方面,信任应用类型可以是经由包括kp405的数据结构来初始化,诸如上面参考图1c的系统100c所描述的。包括诸如kp700等kp的示例数据结构在图7中示出。

数据结构700可以包括密钥保护器(kp)705,kp705是加密密钥(这里是传输密钥tk)的密码包装,如于2014年9月9日提交的题为“securetransportofencryptedvirtualmachineswithcontinuousowneraccess”的美国专利申请#14/481,399中所描述的。kp705确保仅向授权实体提供对tk710和/或其他受保护数据的访问。作为传送给tree140的密钥的tk710可以用kp705包装,或者在某些情况下用密钥或tw包装。tk710可以被认为是高价值秘密。在一些情况下,tk710可以在kms115处被解密。

数据结构700还可以包括虚拟机数据(vmd)730,vmd730可以包括用于初始化信任应用的数据。vmd730可以使用适当的加密技术来加密,诸如从redmondwash的微软公司可获得的bitlocker。全卷加密密钥(fvek)725可以用于解密vmd730,并且全卷加密密钥(fvek)725可以由虚拟可信平台模块(vtpm)保护,全卷加密密钥(fvek)725的状态(725)可以与kp705一起被加密并且作为元数据的一部分被存储。在一些方面,fvek725可以由卷主密钥(vmk)720加密。vtpm状态725本身使用由kp705包装的密钥加密。在一些方面,vtpm状态725可以由tk710(高价值秘密)加密并且将数据“密封”到pcr值(例如,pcr7),使得如果pcr值处于预期状态,则tpm将允许访问(例如,解密)密钥材料。在这种情况下,tpm保护器是一种数据结构,如果一个或多个pcr处于预期状态,则该数据结构被馈送到tpm中以解密封某些秘密。在其他情况下,也可以使用非tpm保护器。

卷主密钥(vmk)720可以由vtpm状态725解密封。vtpm状态725可以由kp705内的tk710加密。在一些情况下,vmk720可以是bitlocker卷主密钥,并且可以被标记为低价值秘密。

kp700的每个字段或块也可以根据其加密的内容来描述,诸如加密(密钥,数据)速记:

vmd磁盘encrypt(fvek,cleartextdiskdata)

fvek磁盘encrypt(vmk,fvek)

vmk磁盘encrypt(vmk)

vtpm.磁盘encrypt(tk,vtpm)

tk磁盘encrypt(kp,tk)

kpkp与vm相关联,而信任应用实际上永远不会看到它。

kp转到kms,kms对其进行解密并且将tk返回到信

任应用(经由上述目标机制)。tk解密vtpm,vtpm

解密封vmk,以产生fvek。

在一个示例中,kp405,vtpm状态415、vmk420和vmd430可以是存储在磁盘上的数据。vtpm状态415可以在创建vtpm时被初始化,并且可以被确保是唯一的。对于例如所生成的秘密或受保护数据的运行时唯一性,vtpm依赖于安全内核向其提供的rng的安全性。在信任应用使用解密的tk710解密vtpm状态415之后,访问vmd730的其余操作可以与在物理机器与物理tpm之间执行的操作相同或类似。这些操作可以包括vtpm执行vsm的测量,使用vtpm测量来解密封vmk(导致向操作系统加载器提供fvek725),并且操作系统使用fvek725来解密vmd730。

为了启动信任应用,客户端650可以请求和/或接收数据结构700。客户端650可以将kp705或整个数据结构700发送到tph150(或者在一些实现中,发送到hgs150a),tph150可以与kms115通信以解密tk710。然后tph可以利用idk_pub665在与信任应用640相关联的安全内核635处目标tk710,例如经由下面描述的过程800。安全内核635可以在发布时间获得idk_pub和idk_pri。安全内核635可以使用其私有密钥675(例如,idk_pri)来解密并且将tk710返回到服务器655。然后,服务器655可以将tk710传送到信任应用640。在一些情况下,安全内核635可以将tk710直接返回信任应用640。在一些方面,受保护数据可以与tk710一起传送到信任应用640,并且由tk710加密。以这种方式,信任应用640可以使用tk710来解密受保护数据。

图8示出了用于使用tree或信任应用的标识密钥将传输密钥和/或由传输密钥加密的受保护数据目标tree或特定的信任应用的示例过程800。更具体地,过程800示出了经由信任应用的安全内核的加密密钥来目标信任应用的方式。

云结构主机或主机os(例如,主机os600)执行一系列步骤以便接收传输密钥。云结构主机可以首先在操作602处获得tree健康证书(thc),例如围绕与tree或信任应用相关联的安全内核的加密标识密钥(idk_e)构建的,诸如根据上面参考图4b描述的过程。在一个方面,操作602可以包括由主机在引导时创建包含idk_e的公共版本的签证日志(tcg日志),idk_e的私有部分存在于与信任应用相关联的vsm安全内核(sk)中。可以将鉴证日志呈现给鉴证服务(as)。as可以检查鉴证日志并且向主机发布围绕idk_e(例如,非对称密钥的公共部分)构建的thc。在一些方面,类似于idk_e,还可以创建“签名标识密钥”(idk_s)并且idk_s可以具有围绕它构建的单独的thc,如将在下面参考图9更详细地描述的。可以使用idk_e或idk_s构建密钥传送问题的解决方案,如下所述。

当需要加载新的屏蔽vm时,主机在操作804处获得vm的kp,并且启动与tph(例如,tph150)的对话,其目标是向vmsp信任应用中注入由kp加密的tk。

为了交换用于tk的kp,在操作806处,主机可以向诸如tph150等tph呈现kp和“信任应用标识”以及thc。在操作808处,云结构主机也可以启动具有从kp(kpsid)导出的“会话id”的信任应用或tree。在一些方面,所接收的kp将通过在其上创建sha-2散列或利用其他单向函数来形成会话id值的基础。tph可以在操作822处检查thc,并且在操作824处与诸如kms115等kms或拥有的其他实体或者可以访问受保护数据和/或kp的解密密钥的其他实体通信,以解密kp以访问tk。在操作826处,tph可以使用特殊的加密结构来用计算出的kpsid来目标信任应用,例如,如上面参考过程500所描述的。

请求方或客户端650可以从tph接收响应,并且将其转发到具有给定kpsid的信任应用。在操作810处,信任应用或服务器可以要求vsm安全内核解密响应并且将其返回给tk。安全内核检查响应,在操作812处验证它是否目标信任应用类型和信任应用的会话id,并且如果存在匹配,则在操作818处仅返回密钥。这样,如果tph响应在错误的交给中结束,则在密码学上不可能有意义。在接收到密钥时,主机可以在操作820处解密密钥并且将其提供给tree,此时,过程800可以结束。

图9示出了用于使用安全内核的签名密钥将传输密钥和/或由传输密钥加密的受保护数据目标信任应用的另一示例过程900。更具体地,过程900示出了通过由安全内核的签名密钥认证的信任应用的加密密钥来目标信任应用的方式。

过程800示出了如何通过在所有信任应用之间共享的标识加密密钥来在信任应用处间接地目标响应。但是,如果tree具有可鉴证的标识签名密钥,则也可以使用另一种方法。这里,每个信任应用可以生成自己的加密密钥对,并且使用idk_s使安全内核证明该对的公钥部分。注意,这样的证明还必须以密码方式将密钥绑定到信任应用类型和信任应用的会话id:

key_certification=σidk_s(trustlet_encryption_key_pub,

trustlet_type,session_id)

其中σidk_s表示其输入()的串联,后面是在这些输入上使用给定秘钥的签名。

在这种情况下,请求方向tph呈现信任应用的密钥以及thc和密钥证明,并且tph通过将传输密钥加密到信任应用的加密密钥来进行响应,这与操作822和824处的过程800不同。

在一些方面,还可以在密钥证明中使用或指示“安全版本号”(svn)以防止其他类型的攻击以确保tree不是较旧且潜在的易受攻击的版本。在某些情况下,当安全内核被鉴证但内部信任应用不被鉴证时(例如,在已经完成鉴证之后,信任应用按需求加载)时,包括信任应用的svn可以指示tph150拒绝目标较旧的易受攻击的信任应用,即使thc没问题。

过程800和900的两种方法之间的一个区别是谁强制执行信任应用或treeid、会话id和传输密钥之间的绑定:在过程800中,它是安全内核,并且在过程900中,它是tph150。另一主要区别在于如何以加密方式构建响应。在先前的情况下,它目标是安全内核,而安全内核又决定允许哪个信任应用看到它,在这种情况下,响应直接目标信任应用,其中信任应用的密钥由安全内核的密钥证明。

在一些方面,可以实现上述技术以为容器提供完全凭证隔离。基本问题是相同的,因此容器可以从其主机请求凭证。然后,主机可以代表容器从某个kms请求凭证。如果所请求的凭证未加密地返回主机(例如,凭证按需求到达,并且不是容器图像的一部分),则会导致“延迟凭证绑定”。该绑定很有价值但不等于凭证隔离,因此如果主机被泄露,则凭证被公开。

如下所述,上述技术可以在一个或多个计算设备上或一个或多个环境中实现。图10描绘了在其中可以实现本文中描述的一些技术的示例性通用计算环境,例如,其可以包含请求方120、tree140、tph150、主机os600、as424、kms115中的一个或多个。计算系统环境1002仅仅是合适的计算环境的一个示例,并且不旨在对本公开的主题的使用范围或功能教导任何限制。计算环境1002也不应当被解释为具有与示例操作环境1002中示出的任一组件或其组合相关的任何依赖性或要求。在一些实施例中,各种所描绘的计算元件可以包括被配置为实例化本公开的特定的方面的电路。例如,本公开中使用的术语电路可以包括被配置为通过固件或开关来执行的(多个)功能的专用硬件组件。在其他示例实施例中,术语电路可以包括通过包含可操作以执行(多个)功能的逻辑的软件指令来配置的通用处理单元、存储器等。在电路包括硬件和软件的组合的示例实施例中,实施者可以编写包含逻辑的源代码,并且源代码可以编译成可以由通用处理单元处理的机器可读代码。由于本领域技术人员可以理解,现有技术已经发展到硬件、软件或硬件/软件的组合之间几乎没有差异的程度,因此选择硬件与软件来实现特定的功能是一种留给实施者的设计选择。更具体地,本领域技术人员可以理解,软件过程可以转换为等效的硬件结构,并且硬件结构本身可以转换为等效的软件过程。因此,硬件实现与软件实现的选择是设计选择之一,并且留给实现者。

计算机1002(其可以包括移动设备或智能电话、平板电脑、膝上型电脑、台式计算机或联网设备的集合、云计算资源等中的任何一种)通常包括各种计算机可读介质。计算机可读介质可以是能够由计算机1002访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。系统存储器1022包括易失性和/或非易失性存储器形式的计算机存储介质,诸如只读存储器(rom)1023和随机存取存储器(ram)1060。包含有助于在计算机1002内的元件之间传递信息的基本例程(例如在启动期间)的基本输入/输出系统1024(bios)通常存储在rom1023中。ram1060通常包含立即可访问和/或当前正在由处理单元1059操作的数据和/或程序模块。作为示例而非限制,图10示出了操作系统1025、应用程序1026、包括tree目标应用1065的其他程序模块1027、和程序数据1028。

计算机1002还可以包括其他可移动/不可移动的易失性/非易失性计算机存储介质。仅作为示例,图10示出了从不可移动的非易失性磁介质读取或向其写入的硬盘驱动器1038、从可移动的非易失性磁盘1054读取或向其写入的磁盘驱动器1039、以及从诸如cdrom或其他光学介质等可移动的非易失性光盘1053读取或向其写入的光盘驱动器1004。可以在示例操作环境中使用的其他可移动/不可移动的易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字通用盘、数字录像带、固态ram、固态rom等。硬盘驱动器1038通常通过诸如接口1034等不可移动存储器接口连接到系统总线1021,并且磁盘驱动器1039和光盘驱动器1004通常通过诸如接口1035或1036等可移动存储器接口连接到系统总线1021。

上面讨论并且在图10中示出的驱动器及其相关联的计算机存储介质为计算机1002提供计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图10中,硬盘驱动器1038被示出为存储操作系统1058、应用程序1057、其他程序模块1056和程序数据1055。注意,这些组件可以与操作系统1025、应用程序1026、其他程序模块1027和程序数据1028相同或不同。操作系统1058、应用程序1057、其他程序模块1056和程序数据1055在这里被给予不同的数字以说明它们至少是不同的副本。用户可以通过诸如键盘1051以及通常被称为鼠标、轨迹球或触摸板的指示设备1052等输入设备向计算机1002中输入命令和信息。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、视网膜扫描器,等等。这些输入设备以及其他输入设备通常通过耦合到系统总线1021的用户输入接口1036连接到处理单元1059,但是可以通过诸如并行端口、游戏端口或通用串行总线(usb)等其他接口和总线结构连接到处理单元1059。监视器1042或其他类型的显示设备也经由诸如视频接口1032等接口连接到系统总线1021。除了显示器之外,计算机还可以包括可以通过输出外围接口1033连接的其他外围输出设备(诸如扬声器1044和打印机1043)。

计算机1002可以使用到诸如远程计算机1046等一个或多个远程计算机的逻辑连接在联网的环境中操作。远程计算机1046可以是个人计算机、服务器、路由器、网络pc、对等设备或其他公共网络节点,并且尽管图10中仅示出了存储器存储设备1047,远程计算机1046通常包括上面相对于计算机1002所描述的很多或所有元件。图10中所描绘的逻辑连接包括局域网(lan)1045和广域网(wan)1049,但是也可以包括其他网络。这种联网环境在办公室、企业范围的计算机网络、内联网、因特网和云计算资源中很常见。

当在lan联网环境中使用时,计算机1002通过网络接口或适配器1037连接到lan1045。当在wan联网环境中使用时,计算机1002通常包括调制解调器1005或用于通过诸如因特网等wan1049建立通信的其他装置。可以是内置的或外置的调制解调器1005可以经由用户输入接口1036或其他适当的机制连接到系统总线1021。在联网的环境中,相对于计算机1002或其部分描述的程序模块可以存储在远程存储器存储设备中。作为示例而非限制,图10将远程应用程序1048示出为驻留在存储器设备1047上。可以理解,所示出的网络连接是示例的,并且可以使用在计算机之间建立通信链路的其他手段。

在一些方面,其他程序1027可以包括如上的功能的tree目标组件或应用1065。在一些情况下,tree目标应用1065可以执行过程300、400、500、800和/或900的一些或所有操作。

在一个实施例中,一种计算系统包括:

处理器;以及

通信地耦合到处理器的存储器,存储在由处理器执行时使得计算系统执行以下操作的指令:

接收来自与tree相关联的潜在的不可信请求方的对受保护数据的请求,并且接收tree的鉴证声明;

获取受保护数据;

从请求或鉴证声明中的至少一个获得tree的公共目标密钥;

通过使用公共目标密钥加密受保护数据来生成定标受保护数据;以及

向潜在的不可信请求方提供定标受保护数据,其中解密定标受保护数据需要与tree的公共目标密钥相对应的tree的私有目标密钥。

在一个实施例中,鉴证声明将请求方的标识绑定到鉴证声明,并且其中鉴证声明包含tree的公共目标密钥。

在一个实施例中,tree的鉴证声明包括tree健康证书,并且其中指令还包括使得系统执行以下操作的指令:

从鉴证服务获得tree健康证书。

在一个实施例中,用于从请求或鉴证声明中的至少一个获得tree的目标密钥的指令还包括用于进行以下操作的指令:

标识与请求方的安全内核相关联的加密密钥,其中加密密钥还与tree会话id和tree类型相关联。

在一个实施例中,用于从请求或鉴证声明中的至少一个获得tree的目标密钥的指令还包括用于进行以下操作的指令:

标识与请求方的安全内核相关联的签名密钥,其中签名密钥证明tree目标密钥,其中tree目标密钥包括由tree生成的公共目标密钥私有目标密钥对的公共部分。

在一个实施例中,一种用于向与潜在的不可信请求方相关联的可信执行环境(tree)传送受保护数据的方法包括:

由目标协议头接收来自与tree相关联的潜在的不可信请求方的对受保护数据的请求,并且接收tree的鉴证声明;

由目标协议头获取受保护数据;

从请求或鉴证声明中的至少一个获得tree的目标密钥;

通过使用目标密钥加密受保护数据来生成定标受保护数据;以及

向潜在的不可信请求方提供定标受保护数据,其中解密定标受保护数据需要tree的私有目标密钥。

在一个实施例中,鉴证声明将请求方的标识绑定到鉴证声明。

在一个实施例中,鉴证声明包含tree的目标密钥,其中tree的目标密钥包括tree的公共目标密钥。

在一个实施例中,tree的鉴证声明包括tree健康证书。

在一个实施例中,方法还包括:

从鉴证服务获得tree健康证书。

在一个实施例中,tree健康证书与请求方的标识或tree的标识中的至少一个相关联。

在一个实施例中,通过目标协议头获取受保护数据包括从密钥管理系统获得受保护数据。

在一个实施例中,从请求或鉴证声明中的至少一个获得tree的目标密钥还包括:

标识与请求方的安全内核相关联的加密密钥。

在一个实施例中,加密密钥还与tree会话id或tree类型中的至少一个相关联。

在一个实施例中,从请求或鉴证声明中的至少一个获得tree的目标密钥还包括:

标识与请求方的安全内核相关联的签名密钥。

在一个实施例中,签名密钥证明tree目标密钥,其中tree目标密钥包括由tree生成的公共目标密钥私有目标密钥对的公共部分。

在一个实施例中,一种计算机可读存储介质包括用于向与潜在的不可信请求方相关联的可信执行环境(tree)传送受保护数据的指令,介质包括当在联网的计算机系统上执行时使得联网的计算机系统至少进行以下操作的指令:

接收来自与tree相关联的潜在上位不可信请求方的对受保护数据的请求,并且接收tree的鉴证声明;

获取受保护数据;

从请求或鉴证声明中的至少一个获得tree的目标密钥;

通过使用目标密钥加密受保护数据来生成定标受保护数据;以及

向潜在的不可信请求方提供定标受保护数据,其中解密定标受保护数据需要tree的私有目标密钥。

在一个实施例中,鉴证声明将请求方的标识绑定到鉴证声明,并且其中鉴证声明包含tree的公共目标密钥。

在一个实施例中,用于从请求或鉴证声明中的至少一个获得tree的目标密钥的指令还包括用于进行以下操作的指令:

标识与请求方的安全内核相关联的加密密钥,其中加密密钥还与tree会话id和tree类型相关联。

在一个实施例中,用于从请求或鉴证声明中的至少一个获得tree的目标密钥的指令还包括用于进行以下操作的指令:

标识与请求方的安全内核相关联的签名密钥,其中签名密钥证明tree目标密钥,其中tree目标密钥包括由tree生成的公共目标密钥私有目标密钥对的公共部分。

前面部分中描述的每个过程、方法和算法可以在由一个或多个计算机或计算机处理器执行的代码模块中实施,并且完全或部分地通过这样的代码模块来自动化。这些代码模块可以存储在任何类型的非暂态计算机可读介质或计算机存储设备上,诸如硬盘驱动器、固态存储器、光盘等。过程和算法可以部分或全部地在专用电路中实现。所公开的过程和过程步骤的结果可以永久地或以其他方式存储在任何类型的非瞬态计算机存储装置中,诸如例如易失性或非易失性存储装置。上述各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合都旨在落入本公开的范围内。另外,在一些实现中可以省略某些方法或过程框。本文中描述的方法和过程也不限于任何特定的顺序,并且与其相关的块或状态可以以其他适当的顺序执行。例如,所描述的块或状态可以以不同于所公开的具体的顺序的顺序执行,或者多个块或状态可以在单个块或状态中组合。示例块或状态可以以串行、并行或以某种其他方式执行。可以向所公开的示例实施例添加块或状态或从其中移除块或状态。本文中描述的示例系统和组件可以被与所描述的不同地配置被配置。例如,与所公开的示例实施例相比,元件可以被添加、被移除或被重新布置。

还应当理解,各种项目被示出为在使用的同时存储在存储器中或存储在存储设备上,并且这些项目或其部分可以在存储器与其他存储设备之间传送以用于存储器管理和数据完整性的目的。备选地,在其他实施例中,一些或所有软件模块和/或系统可以在另一设备上的存储器中执行,并且经由计算机间通信与所示的计算系统通信。此外,在一些实施例中,系统和/或模块中的一些或全部可以以其他方式实现或提供,诸如至少部分地以固件和/或硬件,包括但不限于一个或多个专用集成电路(asic)、标准集成电路、控制器(例如,通过执行适当的指令,并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)等。一些或所有模块、系统和数据结构也可以存储在要由适当的驱动器或经由适当的连接来读取的计算机可读介质上(例如,作为软件指令或结构化数据),诸如硬盘、存储器、网络或便携式媒体物品。出于本说明书和权利要求的目的,短语“计算机可读存储介质”及其变型不包括波、信号和/或其他瞬态和/或无形通信介质。系统、模块和数据结构还可以作为所生成的数据信号(例如,作为载波或其他模拟或数字传播信号的一部分)在各种计算机可读传输介质上传输,包括基于无线和基于有线/电缆的介质,并且可以采用各种形式(例如,作为单个或多路复用模拟信号的一部分,或者作为多个离散数字分组或帧)。在其他实施例中,这种计算机程序产品也可以采用其他形式。因此,本公开可以用其他计算机系统配置来实践。

除非另有明确说明或者在所使用的上下文中以其他方式理解,否则本文中使用的诸如“可以”、“可”、“可能”、“能”、“例如”等条件语言通常旨在表达某些实施例包括而其他实施例不包括某些特征、元素和/或步骤。因此,这种条件语言通常不旨在暗示一个或多个实施例以任何方式需要特征、元素和/或步骤,也不旨在暗示一个或多个实施例必须包括用于决定(无论是否有作者输入或提示)这些特征、元素和/或步骤是否被包括在任何特定实施例中或将在任何特定实施例中执行的逻辑。术语“包括”、“包含”、“具有”等是同义的并且以开放式方式包含性地使用,并且不排除其他元件、特征、动作、操作等。此外,术语“或”以其包含性意义(而不是以其排他性的意义)使用,因此当使用时,例如,为了连接元件的列表,术语“或”表示列表中的一个、一些或所有元件。

虽然已经描述了某些示例实施例,但是这些实施例仅作为示例呈现,并且不旨在限制本文中公开的发明的范围。因此,前面的描述中的任何内容都不旨在暗示任何特定的特征、特性、步骤、模块或块是必需的或必不可少的。实际上,本文中描述的新颖方法和系统可以以各种其他形式来实施;此外,在不脱离本文中公开的发明的精神的情况下,可以对本文中描述的方法和系统的形式进行各种省略、替换和改变。所附权利要求及其等同物旨在涵盖落入本文中公开的某些发明的范围和精神内的这样的形式或修改。

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