延迟数据访问的制作方法

文档序号:19231101发布日期:2019-11-27 17:42阅读:264来源:国知局
延迟数据访问的制作方法

相关申请的交叉引用

本申请要求2013年2月12日提交的美国专利申请号13/765,239的优先权,所述专利的内容以引用的方式整体并入本文。本申请出于所有目的以引用的方式结合以下专利申请的全部公开内容:与本申请同时提交的标题为“automatickeyrotation”的共同待决的美国专利申请号13/764,944;与本申请同时提交的标题为“datasecurityservice”的共同待决的美国专利申请号13/764,963;与本申请同时提交的标题为“datasecuritywithasecuritymodule”的共同待决的美国专利申请号13/765,020;与本申请同时提交的标题为“policyenforcementwithassociateddata”的共同待决的美国专利申请号13/764,995;与本申请同时提交的标题为“federatedkeymanagement”的共同待决的美国专利申请号13/765,209;与本申请同时提交的标题为“datasecurityservice”的共同待决的美国专利申请号13/764,963;以及与本申请同时提交的标题为“securemanagementofinformationusingasecuritymodule”的共同待决的美国专利申请号13/765,283。

附图简述

将参照附图描述根据本公开的各个实施方案,在附图中:

图1示出表示根据各个实施方案的本公开的各个方面的说明性图;

图2示出可实现本公开的各个方面的环境的说明性实例;

图3示出根据至少一个实施方案的可实现本公开的各个方面的环境的说明性实例以及环境的各个组件之间的示例性信息流动;

图4示出根据至少一个实施方案的用于储存密文的说明性过程的示例性步骤;

图5示出根据至少一个实施方案的可实现本公开的各个方面的环境的说明性实例以及环境的各个组件之间的示例性信息流动;

图6示出根据至少一个实施方案的用于响应检索数据的请求的说明性过程的示例性步骤;

图7示出根据至少一个实施方案的可实现本公开的各个方面的环境的说明性实例以及环境的各个组件之间的示例性信息流动;

图8示出根据至少一个实施方案的用于响应储存数据的请求的说明性过程的示例性步骤;

图9示出根据至少一个实施方案的可实现本公开的各个方面的环境的说明性实例以及环境的各个组件之间的示例性信息流动;

图10示出根据至少一个实施方案的用于响应检索数据的请求的说明性过程的示例性步骤;

图11示出可实现本公开的各个方面的环境的说明性实例;

图12示出根据至少一个实施方案的可实现本公开的各个方面的环境的说明性实例以及环境的各个组件之间的示例性信息流动;

图13示出根据至少一个实施方案的用于响应检索数据的请求的说明性过程的示例性步骤;

图14示出根据至少一个实施方案的用于响应对数据进行解密的请求的说明性过程的示例性步骤;

图15示出根据至少一个实施方案的用于获取已解密数据的说明性过程的示例性步骤;

图16示出根据至少一个实施方案的示例性密码服务系统的图解表示;

图17示出根据至少一个实施方案的用于配置策略的说明性过程的示例性步骤;

图18示出根据至少一个实施方案的用于在强制实施策略的同时执行密码操作的说明性过程的示例性步骤;

图19示出根据至少一个实施方案的用于对数据进行加密的过程的说明性实例;

图20示出根据至少一个实施方案的使用安全模块对数据进行加密的说明性实例;

图21示出根据至少一个实施方案的使用安全模块加密用于对数据进行加密的密钥的说明性实例;

图22示出根据至少一个实施方案的用于使用关联数据强制实施策略的过程的说明性实例;

图23示出根据至少一个实施方案的用于使用关联数据和安全模块强制实施策略的过程的说明性实例;

图24示出根据至少一个实施方案的策略的状态图的说明性实例;

图25示出根据至少一个实施方案的策略的另一个状态图的说明性实例;

图26示出根据至少一个实施方案的用于自动地轮换密钥的过程的说明性实例;

图27示出根据至少一个实施方案的用于自动地轮换密钥的过程的说明性实例;

图28示出根据至少一个实施方案的可用于跟踪密钥使用的数据库的表示的说明性实例;

图29示出可实现各个实施方案的环境的说明性实例;

图30示出根据至少一个实施方案的可与密钥关联的信息的图解表示;

图31示出根据至少一个实施方案的可关于请求被包括的密钥访问注释的图解表示;

图32示出根据至少一个实施方案的用于处理请求的过程的说明性实例;

图33示出根据至少一个实施方案的用于处理请求的过程的说明性实例;并且

图34示出可实现各个实施方案的环境。

详述

在以下描述中,将描述各个实施方案。出于解释的目的,将阐述具体的配置和细节,以便提供实施方案的透彻理解。然而,对本领域的技术人员将是显而易见的是,没有具体细节的情况下也可以实行实施方案。此外,为了不使所描述的实施方案变得模糊,可能会省略或简化众所周知的特征。

本文描述并提议的技术允许增强包括分布式计算资源的环境中的数据安全性。在一个实例中,分布式计算环境包括可由适当的计算资源实现的一个或多个数据服务系统。数据服务系统可允许执行与数据有关的各种操作。作为一个说明性实例,分布式计算环境包括一个或多个数据储存服务系统。可向数据储存服务系统传输执行数据储存操作的电子请求。示例性操作是使用数据储存服务系统储存数据的操作和使用数据储存服务系统检索由数据储存服务系统储存的数据的操作。数据服务系统、包括数据储存服务系统还可执行操纵数据的操作。例如,在一些实施方案中,数据储存服务系统能够对数据进行加密。

本公开的各个实施方案包括分布式计算环境,所述分布式计算环境包括使用适当的计算资源实现的密码服务系统。密码服务系统可由分布式系统实现,所述分布式系统接收并响应于执行密码操作、如明文的加密和密文的解密的电子请求。在一些实施方案中,密码服务系统管理密钥。响应于执行密码操作的请求,密码服务系统可执行使用所管理密钥进行的密码操作。例如,响应于所接收请求,密码服务系统可选择适当的密钥来执行密码操作,执行密码操作,并提供密码操作的一个或多个结果。在替代配置中,密码服务系统可产生包络密钥(例如,用于加密特定数据项的会话密钥)并将包络密钥返回至调用服务系统的密码操作的系统。系统随后可使用包络密钥执行密码操作。

在一些实施方案中,密码服务系统为计算资源服务提供者的多个租户管理密钥。计算资源的租户可以是作为计算资源提供者的客户操作的实体(例如,组织或个人)。客户可以远程地并编程地配置并操作物理上由计算资源提供者托管的资源。当客户向密码服务系统提供执行密码操作的请求时(或当实体向密码服务系统提交请求时),密码服务系统可选择由密码服务系统为客户管理的密钥来执行密码操作。由密码服务系统管理的密钥可得到安全管理,使得其他用户和/或数据服务系统不能访问他人密钥。实体(例如,用户、客户、服务系统)缺少对另一个实体的密钥的访问权可意味着所述实体不具有获取他人密钥的授权方式和/或所述实体不具有引起管理他人密钥的系统在所述实体的指导下使用密钥的授权方式。例如,密码服务系统可管理密钥,使得对于一个客户来说,其他客户既无法访问所述客户的密钥也不能引起密码服务系统使用所述客户的密钥来执行密码操作。作为另一个实例,密码服务系统可管理密钥,使得其他服务系统(如数据储存服务系统)不能引起密码服务系统使用一些或所有密钥来执行密码操作。对密钥的未授权访问可通过适当的安全措施来阻止,使得例如未授权访问是困难或不可能的。困难可能是由于计算上的不切实际性和/或由于需要未授权事件(例如,非法的、侵权的和/或以其他方式不被允许的,如授权证书的泄露)发生以便获得访问。根据各个实施方案的系统可被配置来确保对获得对密钥的访问权的计算上的不切实际性进行客观测量。此类测量可例如根据具有限定单位计算能力(例如,一定操作数/单位时间)的计算机破解经授权访问密钥所需的已加密信息将花费的平均时间的量来测量。

如上所述,密码服务系统可接收来自各种实体(如计算资源提供者的客户)的请求。密码服务系统还可接收来自计算资源提供者内部的实体的请求。例如,在一些实施方案中,由计算资源提供者实现的数据服务系统可向密码服务系统传输请求,以引起密码服务系统执行密码操作。作为一个实例,客户可向数据储存服务系统传输储存数据对象的请求。请求可指示在储存时数据对象应被加密。数据储存服务系统可向密码服务系统传达执行密码操作的请求。密码操作可以是例如对由数据储存服务系统用来加密数据对象的密钥进行加密。密码操作可以是对数据对象本身进行加密。密码操作可以是生成数据储存服务系统可用来加密数据对象的包络密钥。

根据各个实施方案的系统实施各种安全措施以提供增强的数据安全性。例如,在各个实施方案中,密码服务系统可利用它所管理的密钥的方式受到限制。例如,在一些实施方案中,密码服务系统被配置来仅在适当的授权之后使用对应于客户的密钥。如果使用客户的密钥的请求据称源自客户(即,来自代表客户操作的计算装置),则密码服务系统可被配置来要求请求是使用客户所拥有的适当证书电子地(数字地)被签名。如果使用客户的密钥的请求源自另一个数据服务系统,则密码服务系统可被配置来要求数据服务系统提供客户已经向数据服务系统做出已签名请求的证明。例如,在一些实施方案中,数据服务系统被配置来获取并提供用作已认证客户请求的证明的令牌。其他安全措施也可内置于包括密码服务系统的电子环境的配置中。例如,在一些实施方案中,密码服务系统被配置来根据语境限制密钥使用。作为一个说明性实例,针对来自客户或来自代表客户起作用的数据服务系统的请求,密码服务系统可被配置来使用密钥进行加密。然而,针对来自客户(而不是来自另一个数据服务系统)的请求,密码服务系统可被配置来仅使用密钥进行解密。以此方式,如果数据服务系统泄露,则数据服务系统将不能引起密码服务系统对数据进行解密。

各种安全措施可内置于密码服务系统和/或它的电子环境中。一些安全措施可根据策略来管理,在一些实施方案中所述策略是可配置的。作为一个实例,密码服务系统可利用使得用户能够配置关于密钥的策略的应用程序编程接口(api)。关于密钥的策略可以是以下信息:当由密码服务系统处理时,所述信息确定密钥在一定情况下是否可使用。策略可例如限制能够直接使用密钥的用户和/或系统的标识码,限制密钥可使用时的时间,限制密钥可用来对其执行密码操作的数据,并提供其他限制。策略可提供显式限制(例如,谁不可使用密钥)和/或可提供显式授权(例如,谁可使用密钥)。此外,策略可复杂地构成以便大体上提供密钥可以和不可以使用时的条件。当接收到使用密钥执行密码操作的请求时,关于密钥的任何策略可被访问并处理,以确定请求是否可根据策略完成。

本公开的各个实施方案涉及强制实施与密钥关联的策略,其中密钥可由密码服务系统管理。密码服务系统的用户(如托管密码服务系统的计算资源提供者的客户)可指定将要由密码服务系统强制实施的关于密钥的策略。策略可编码与以下各项有关的限制条件和/或特权:谁可指导密码服务系统使用密钥、密钥可用来执行什么操作、密钥可在什么情况下使用和/或其他密钥使用。

在实施方案中,与密文关联的数据用于强制实施策略。与密文关联的数据可以是通过使用加密法(cipher)(如高级加密标准(aes)的模式)获取的数据。例如,密码算法的输入可包括将要加密的明文以及关联数据。密码算法可使用密钥对明文进行加密并提供认证输出,如使得能够确定关联数据是否已经被改动的消息认证码(mac)。认证输出可至少部分地基于关联数据和明文来确定。

策略强制实施可至少部分地基于关联数据。例如,一些策略可能要求关联数据在已解密密文(即,明文)被提供之前具有特定值。认证输出(例如,mac)可用于确保关联数据尚未被改动,并且因此,确保策略的强制实施得以正确地执行。关联数据可以是任何合适的数据,并且数据本身可由策略显式地或隐式地指定。例如,策略可指定:已解密密文(明文)可仅在由以下用户提交对密文进行解密的请求时被提供,所述用户具有编码在用于对密文解密的关联数据中的用户标识符。以此方式,如果另一个用户请求对密文进行解密(在不冒充具有用户标识符的用户的情况下),由于与策略冲突,请求将不能完成。作为另一个实例,策略可规定:已解密密文可仅在密文是利用指定信息标记时被提供。作为又一个实例,策略可规定:已解密密文可在利用等于明文的散列、密文的散列或其他指定值的关联数据标记时被提供。一般地,本公开的实施方案允许在揭示密码算法的输出之前围绕密码算法的输入或输出进行丰富策略强制实施。在一些实施方案中,关联数据本身可代表策略。

本公开的各个实施方案还允许围绕密钥使用的策略。例如,在一些实施方案中,密钥自动地轮换,以阻止密钥被使用的时间足以实现可揭示密钥的成功密码攻击。为了阻止密钥被使用的时间足以导致潜在的安全漏洞,密码服务系统或利用密钥的其他系统可跟踪利用密钥执行的操作。当由密钥标识符(keyid)标识的密钥用于阈值次数的操作时,密钥可被停用(例如,不可用于将来的加密操作,但可用于将来的解密操作)并替换为将由keyid标识的新密钥。以此方式,及时地产生新密钥。此外,本公开的各个实施方案以对一定实体透明的方式来执行这样的密钥轮换。作为一个实例,计算资源提供者的客户或其他实体可向密码服务系统提交使用由keyid标识的密钥执行操作的请求。密码服务系统可独立于来自实体的执行密钥轮换的任何请求执行密钥轮换。从客户或其他实体的角度,请求仍然可使用指定keyid提交而无需进行由于密钥已经被停用并替换为新密钥而必须的任何重编程或其他重新配置。

在一些实施方案中,同时支持密码服务或其他服务的多个系统可访问密钥并且用于完成执行密码操作的请求。例如,密码服务系统可利用安全模块群集,安全模块群集中的至少一些安全模块冗余地储存一个或多个密钥。服务系统可向安全模块分配操作并维持其自己的计数器。当安全模块使用它的分配时(例如,使用密钥执行所分配次数的操作),服务系统可检查密钥是否仍然可用或密钥是否应被停用。应注意,安全模块(或其他计算机系统)可被配置来使用密钥执行多种类型的操作,如加密、解密、电子签名生成等。在一些实施方案中,不是所有类型的操作都引起安全模块使用操作的分配的一部分。例如,解密操作可能不导致使用所分配的操作,而加密操作可能导致使用所分配的操作。一般地,在各个实施方案中,导致生成新信息(例如,密文和/或电子签名)的密码操作可导致使用所分配的操作,而不导致生成新信息的密码操作可能不导致使用所分配的操作。此外,不同类型的操作可导致执行不同次数的密码操作。作为一个实例,明文的加密可至少部分地基于明文的大小而在所要求密码操作的量方面有所改变。分组加密法的使用可例如引起针对生成的每个密文分组使用所分配的密码操作。

如果适用于密钥的操作的总次数仍然可用,那么服务系统可向安全模块分配另外的操作。如果密钥应被停用(例如,因为计数器这样指示),那么服务系统可引起冗余地储存密钥的安全模块停用密钥并将密钥替换为新密钥,其中新密钥可由一个安全模块生成或以其他方式获取并且安全地被传递至剩余的安全模块。在一些实施方案中,替代地,其他安全模块用完它们在旧密钥下所分配的操作。在不提供关于安全模块已经使用一个或多个密钥执行多少操作的信息的情况下,如果安全模块发生故障、变得不可操作、有意地脱机(例如,以便维护)和/或以其他方式变得不可用于执行密码操作,那么服务系统将不可用性看作其分配的用尽。例如,如果安全模块针对密钥集中的每个密钥被分配一百万个操作,并且安全模块变得不可操作,那么服务系统可如同安全模块针对密钥集中的每个执行一百万个操作那样进行操作。例如,服务系统可向所述安全模块或其他安全模块分配另外的操作、从而相应地调整计数器,和/或如果对应计数器指示替换是必须的,则可引起密钥中的一个或多个被停用并替换。

本公开的实施方案还允许通过注释和/或联合密钥管理技术来增强数据安全性。在一些实施方案中,向服务系统(如密码服务系统或其他数据服务系统)提交的请求可包括含有使得能够强制实施策略的信息的注释(也称为密钥访问注释)或以其他方式与注释关联。在实施方案中,在可完成对应请求之前,密钥访问注释必须满足一个或多个条件。在一些实施方案中,一个或多个条件包括注释使用与keyid关联的密钥电子地被签名的条件,其中keyid标识可用于完成请求的不同密钥。有效电子签名的存在既可指示注释中的信息没有被修改,也可证明拥有用于生成电子签名的密钥。

在一些实施方案中,密钥访问注释可包括可用于完成请求的密钥的持有者的标识符。密钥的持有者可以是托管接收请求的系统的实体或可以是另一个系统,如第三方的系统。接收请求的系统可检测标识符的存在,并且视情况根据标识符,自己处理请求或将请求传输至所标识密钥持有者以进行处理。接收请求的实体和/或密钥持有者可验证电子签名以便强制实施策略,如在上文和本文在别处所述。例如,如果电子签名无效,请求的接收者可不将请求传递给注释中所标识的密钥持有者。类似地,如果密钥持有者确定电子签名是无效的,密钥持有者可拒绝请求。接收请求的实体和密钥持有者可以验证相同的电子签名,或在一些实施方案中,请求包括至少两个签名,一个对应于请求的接收者并且一个对应于密钥持有者。每个签名可使用对应于旨在验证签名的实体的密钥生成。

本公开的实施方案允许通过完成某些类型的请求之前的强迫延迟来增强数据安全性。例如,在一些实施方案中,某些数据的解密要求在响应于对应请求而提供明文之前有延迟。在延迟期间,可以采取各种行动以通知相关各方待决的对信息进行解密的请求。以此方式,相关各方(例如,组织的合规官员或经授权允许明文被提供的其他人)有机会在提供明文之前取消请求。在各个实施方案中,易于取消请求。例如,取消请求的要求可能没有完成请求的要求那么严格。以此方式,未授权数据泄漏可易于检测到和/或阻止。

图1是展示本公开的各个实施方案的说明性图100。在实施方案中,密码服务系统执行密码操作,密码操作可包括根据一个或多个密码算法应用一个或多个计算。如图1所示,密码服务系统使得用户或服务系统能够从密文生成明文。在示例性配置中,密码服务系统可用于对密钥进行加密/解密,并且这些密钥可用于对数据、如储存在数据储存服务系统中的数据进行加密/解密。例如,密码服务系统接收从在密钥下加密的密文生成明文的请求。密码服务系统确定请求者是授权实体;使用主密钥对密钥进行解密并且将现已解密的密钥返回至服务系统,所述服务系统可使用已解密密钥从密文生成明文。在另一种配置中,密码服务系统接收密文并且将所接收密文处理成明文,所述明文作为服务由密码服务系统提供。在这个实例中,密文可作为从授权实体到密码服务系统的电子请求的部分来提供给密码服务系统,授权实体可以是操作密码服务系统的计算资源提供者的客户和/或可以是计算资源提供者的另一个服务系统。图1所示的密码服务系统可利用一个或多个强加密算法对数据进行加密。此类强加密算法可包括例如高级加密标准(aes)、blowfish、数据加密标准(des)、三重des、serpent或twofish,并且根据所选择的具体实现方式,可以是不对称的或对称的密钥体系。一般地,密码服务系统可利用任何加密和/或解密算法(加密法)或利用由密码服务系统管理的数据的算法的组合。

如下文将更详细论述,密码服务系统可以各种方式来实现。在实施方案中,密码服务系统由根据下文的描述配置的计算机系统来实现。计算机系统自身可包括一个或多个计算机系统。例如,根据各个实施方案,密码服务系统可实现为共同地被配置来执行密码操作的计算机系统的网络。或换言之,计算机系统可以是分布式系统。在实施方案中,密文是已经使用密码算法加密的信息。在图1的实例中,密文是呈已加密形式的明文。明文可以是任何信息,并且当名称不包括文字文本时,明文和密文可以是以任何合适形式编码的信息,并且不必包括文本信息,但它可包括文本信息。例如,如图1所示,明文和密文包括比特序列。明文和密文也可以其他方式并且一般以加密和解密可由计算机系统执行的任何方式来表示。

图2示出可实现如图1所示的密码服务系统的环境200的说明性实例。在200的环境中,各种组件一起操作,以便提供安全数据相关的服务。在这个具体实例中,环境200包括密码服务系统、认证服务系统、数据服务前端以及数据服务后端储存系统。在一个实施方案中,在环境200中,密码服务系统被配置来执行密码操作,如通过接收来自数据服务前端的明文并提供密文作为回报,或向服务系统提供包络密钥、使得服务系统可使用包络密钥来执行加密操作。密码服务系统可执行如下文描述的另外的功能,如安全存储用于执行密码操作的密钥,密码操作如将明文转换成密文和将密文解密成明文。密码服务系统还可执行策略强制实施所包括的操作,如强制实施与其中储存的密钥关联的策略。以下提供可由密码服务系统强制实施的示例性策略。在实施方案中,数据服务前端是被配置来接收并响应在网络上从各个用户传输的请求的系统。请求可以是执行与储存或将要储存在数据服务后端储存系统中的数据有关的操作的请求。在环境200中,认证服务系统、密码服务系统、数据服务前端以及数据服务后端储存系统可以是计算资源提供者的系统,所述计算资源提供者利用系统向由图2所示的用户代表的客户提供服务。图2所示的网络可以是任何合适的网络或网络组合,包括下文论述的那些。

在实施方案中,认证服务系统是被配置来执行对用户进行认证所包括的操作的计算机系统。例如,数据服务前端可向认证服务系统提供来自用户的信息,以接收指示用户请求是否可信的信息作为回报。确定用户请求是否可信可以任何合适的方式来执行,并且执行认证的方式在各个实施方案之间可能有所不同。例如,在一些实施方案中,用户对传输至数据服务前端的消息进行电子签名。电子签名可使用进行认证的实体(例如,用户)和认证服务系统都可获得的秘密信息(例如,与用户关联的密钥对的私人密钥)生成。可向认证服务系统提供请求和请求的签名,认证服务系统可使用秘密信息计算用于与所接收签名进行比较的参考签名,以便确定请求是否可信。如果请求可信,那么认证服务系统可以提供以下信息,数据服务前端可以使用所述信息向其他服务系统(如密码服务系统)证明请求是可信的,从而使得其他服务系统能够相应地操作。例如,认证服务系统可提供另一个服务系统可分析以验证请求可信性的令牌。电子签名和/或令牌可具有以各种方式来限制的有效性。例如,电子签名和/或令牌可在一定时间量内是有效的。在一个实例中,电子签名和/或令牌至少部分地基于将时间戳看作输入的函数(例如,基于散列的消息认证码)生成,时间戳包括在用于验证的电子签名和/或令牌内。检验所提交电子签名/或令牌的实体可以检查所接收时间戳是足够当前的(例如,在从当前时间开始的预先确定的时间量内)并使用所接收时间戳生成参考签名/令牌。如果用于生成所提交电子签名/令牌的时间戳不是足够当前的和/或所提交签名/令牌和参考签名/令牌不匹配,那么认证可能失败。以此方式,如果电子签名泄露,它将仅在短时间内有效,从而限制由泄露造成的潜在危害。应注意,验证可信性的其他方式也被视为是在本公开的范围内。

在实施方案中,数据服务后端储存系统是根据通过数据服务前端接收的请求储存数据的计算机系统。如下文更详细论述,数据服务后端储存系统可以已加密形式储存数据。数据服务后端储存系统中的数据也可以非加密形式储存。在一些实施方案中,由数据服务前端实现的api允许请求指定是否应加密将要存储在数据服务后端储存系统中的数据。根据各个实施方案,加密并储存在数据服务后端储存系统中的数据可以各种方式来加密。例如,在各个实施方案中,数据是使用密码服务系统可访问但环境200的一些或所有其他系统不可访问的密钥来加密。数据可由密码服务系统编码以便储存在数据服务后端储存系统中,和/或在一些实施方案中,数据可由另一系统、如用户系统或数据服务前端的系统使用由密码服务系统解密的密钥来加密。以下提供环境200可操作以对数据进行加密的各种方式的实例。

环境200(和本文描述的其他环境)的众多变体被视为是在本公开的范围内。例如,环境200可包括可与密码服务系统和/或认证服务系统通信的另外服务系统。例如,环境200可包括可以不同方式储存数据的另外数据储存服务系统(各自可包括前端系统和后端系统)。例如,一个数据储存服务系统可提供有效数据访问,其中数据储存服务系统以同步方式执行数据储存服务(例如,检索数据的请求可接收带有所检索数据的同步响应)。另一个数据储存服务系统可提供存档数据储存服务系统。这种存档数据储存服务系统可利用异步请求处理。例如,检索数据的请求可不接收包括所检索数据的同步响应。相反地,一旦存档数据储存服务系统准备好提供所检索数据,存档数据储存服务系统就可要求提交获取所检索数据的第二请求。如另一个实例,环境200可包括计量服务系统,所述计量服务系统接收来自密码服务系统(和/或其他服务系统)的信息并且使用所述信息产生会计记录。会计记录可用于针对密码服务系统(和/或其他服务系统)的使用给客户开账单。此外,来自密码服务系统的信息可提供如何会产生费用的指示。例如,在一些情况下,可向客户提供针对密码服务系统的使用的账单。在其他情况下,针对密码服务系统的使用的费用可卷入其他服务系统(如作为其操作的一部分,利用密码服务系统的数据服务系统)的使用费用中。使用可以各种方式来计量并开账,如每操作、每时间段和/或以其他方式。其他数据服务系统也可包括在环境200(或本文描述的其他环境)中。

另外,图2描述用户与数据服务前端交互。应理解,用户可通过图中未示出的用户装置(例如,计算机)与数据服务前端交互。此外,图2(和图中的其他地方)描述的用户也可代表非人类实体。例如,在计算机系统上执行的自动化过程可与如本文所述的数据服务前端交互。作为一个说明性实例,由图2中的用户代表的实体可以是服务器,作为服务器的操作的一部分,服务器使用数据服务前端向/从数据服务后端存储系统存储和/或检索数据。作为又一个实例,由图2中的用户代表的实体可以是作为计算资源提供者的服务系统提供的实体,所述计算资源提供者操作图2中的一个或多个服务系统。例如,图2中的用户可代表由计算资源提供者提供的程序执行服务系统的虚拟或其他计算机系统。其他变体,包括下文描述的其他环境的变体,也被视为是在本公开的范围内。

例如,图3示出可实现本公开的各个实施方案的环境300的说明性实例。与图2一样,图3中的环境包括认证服务系统、数据服务前端系统(数据服务前端)、密码服务系统和数据服务后端储存系统。认证服务系统、数据服务前端、密码服务系统和数据服务后端储存系统可如上文结合图2描述那样被配置。例如,用户可通过合适的通信网络访问数据服务前端,尽管这样的网络未在图中示出。在图3所示的示例性环境300中,提供表示信息流动的箭头。在这个实例中,用户向数据服务前端传输put请求。put请求可以是将指定数据存储在数据服务后端储存系统中的请求。响应于put请求,数据服务前端可以确定put请求是否可信,也就是用户是否已经以所请求操作可根据由系统实施的认证策略来执行的方式提交请求。

在图3中,示出如何可做出此类认证决定的说明性实例。在这个具体实例中,数据服务前端向认证服务系统提交认证请求。认证服务系统可使用认证请求来确定来自用户的put请求是否可信。如果请求可信,则认证服务系统可向数据服务前端提供认证证明。认证证明可以是可由另一个服务系统(如密码服务系统)使用以独立地确定接收到可信请求的电子令牌或其他信息。在一个说明性实例中,put请求与put请求的签名一起被传输。put请求及其签名通过认证服务系统来提供,如果可信,认证服务系统独立地计算签名应该是什么。如果由认证服务系统生成的签名匹配由用户提供的签名,则认证服务系统可确定put请求可信并且作为响应可提供认证证明。确定put请求是否可信还可包括与策略的强制实施有关的一个或多个操作。例如,如果签名有效但策略以其他方式指示不应完成put请求(例如,请求在由策略所不允许的时间期间提交),则认证服务系统可提供指示请求不可信的信息。(然而,应注意,这样的策略强制实施可由环境300的其他组件执行。)认证服务系统可生成签名,如通过使用由认证服务系统和用户共享的密钥。如上所述,认证证明可以是另一个服务系统(如密码服务系统)可根据其独立地验证请求可信的信息。例如,使用图3所示的密码服务系统的实例,认证证明可至少部分地基于由认证服务系统和密码服务系统两者共享的密钥(如其他服务系统不可访问的密钥)生成。

如图3所示,在接收到来自认证服务系统的认证证明之后,数据服务前端向密码服务系统提供明文和认证证明。可根据到密码服务系统的api调用或其他电子请求(例如,加密api调用)提供明文和认证证明。密码服务系统可分析认证证明以确定是否对明文进行加密。

应注意,可向密码服务系统提供另外信息。例如,将要用于对明文进行加密的密钥的标识符可作为来自数据服务前端(其又可能已经接收来自用户的标识符)的api调用的输入参数被提供。然而,应注意,标识符可不被传输至密码服务系统。例如,在各个实施方案中,可以其他方式确定使用哪个密钥来加密明文。例如,从数据服务前端传输至密码服务系统的信息可包括与用户关联的信息,如用户和/或与用户关联的组织的标识符,如用户已经代表其提交put请求的客户的标识符。此类信息可由密码服务系统用于确定将要使用的默认密钥。换句话说,密钥可由可用于确定密钥的信息隐式地指定。一般地,将要使用的密钥的确定可以任何合适的方式来执行。此外,在一些实施方案中,密码服务系统可生成或选择密钥,并且提供后来将要使用的所生成或选择密钥的标识符。另一个示例性api参数可以是为其执行加密操作的客户账户的主密钥的标识符。

如图3所示,如果认证证明对于密码服务系统加密明文来说是足够的,则密码服务系统可执行一个或多个密码操作。在实施方案中,一个或多个密码操作可包括生成将要用于对明文进行加密的包络密钥的操作。包络密钥可以是随机生成的对称密钥或密钥对的私人密钥。在生成包络密钥之后,密码服务系统可利用api调用中指定的主密钥对包络密钥进行加密,并使得已加密包络密钥持久地被储存(例如,通过将已加密密钥存储在储存服务系统或一些其他持久性储存装置中)或丢弃。另外,密码服务系统可向数据服务前端发送包络密钥的明文版本以及已加密包络密钥。数据服务系统随后可使用包络密钥的明文版本对明文(即,与加密请求关联的数据)进行加密,并且使得包络密钥被储存在与用于对包络密钥进行加密的主密钥的标识符关联的持久性储存装置中。此外,数据服务系统可丢弃包络密钥的明文版本。因此,在实施方案中,在数据服务系统丢弃包络密钥的明文版本之后,数据服务系统将不再能够对密文进行解密。

在替代实施方案中,密码操作可包括对明文进行加密。例如,密码服务系统对明文进行加密并向数据服务前端储存系统提供密文。数据服务前端随后可向数据服务后端储存系统提供密文以便根据其操作进行持久性储存。还可将其他信息从数据服务前端传输至数据服务后端存储系统。例如,用于对明文进行加密以生成密文的密钥的标识符可与密文一起提供以便由数据服务后端储存系统储存。还可提供其他信息(如标识用户和/或用户的组织的元数据)。

与本文描述的所有环境一样,众多变体被视为是在本公开的范围内。例如,环境300的各种组件之间的信息流动可不同于所示的那样。例如,通过中间组件从一个组件流动至另一个组件的信息(例如,从认证服务系统到密码服务系统的数据和/或从密码服务系统到数据服务后端储存系统的数据)可直接和/或通过环境300的其他中间组件(未必包括在图中)被提供至其目的地。作为另一个实例,put请求(和下文的get请求)为说明目的而提供。然而,可使用用于执行所描述操作的任何合适的请求。

图4示出根据实施方案的过程400的说明性实例,过程400可用于将数据存储在数据存储服务系统中。过程400可由例如图3所示的数据服务前端执行。过程400(或本文描述的任何其他过程,或变体和/或其组合)的一些或全部可在配置有可执行指令的一个或多个计算机系统的控制下实行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)、由硬件或其组合来实施。代码可以例如包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读储存介质上。计算机可读储存介质可以是非暂时性的。

如图4中所示,过程400包括接收402put请求。put请求可在网络上电子地接收并且可包括与请求关联的信息,如认证所需要的信息,如put请求的电子签名。响应于已经接收put请求,过程400可包括提交404认证请求。例如,执行过程400的系统可向分开的认证服务系统提交(例如,通过适当配置的api调用)认证请求,如上文结合图3所描述。类似地,执行其自己的认证的数据服务前端可向由数据服务前端实现的认证模块提交认证请求。一般地,认证请求可根据各个实施方案以任何合适的方式来提交。

在提交认证请求之后,认证请求被提交404到的实体接收406认证响应。例如,参照图3,认证服务系统可向数据服务前端提供包括用于由其他服务系统使用的认证的证明的响应。还可传输其他信息,如认证是否成功的指示。可做出408请求是否可信的确定。请求的可信性可取决于由实体、如由认证服务系统或共同执行此类检查的实体的组合所检查的一个或多个因素。可信性可能例如要求请求提供必需的有效证书(例如,由检查实体所共享的秘密密钥生成的电子签名)和/或要求策略允许完成请求。从提交404认证请求并接收认证响应的系统的角度,可信性可取决于所接收认证响应。因此,在实施方案中,请求是否可信的确定408可至少部分地基于所接收认证响应来执行。例如,如果认证不可信,则认证响应这样指示并且可相应地做出确定408。类似地,响应可隐式地指示认证请求可信,如通过不包括请求可信情况下将包括的信息。如果确定408put请求不可信,那么可拒绝410put请求。拒绝put请求可以任何合适的方式执行并且可取决于过程400被执行的各个实施方案。例如,拒绝410put请求可包括向提交put请求的用户传输消息。消息可指示请求被拒绝。拒绝请求还可包括提供关于请求为什么被拒绝的信息,如电子签名不正确、或可用于确定如何解决导致put请求的任何问题的其他原因不可信或未经授权。

在实施方案中,如果确定408put请求可信或已授权,那么过程400包括执行412导致明文被解密的一个或多个密码操作。例如,可向密码服务系统提交请求(例如,适当配置的api调用),以提供将要用于执行一个或多个密码操作的密钥。向密码服务系统提供的请求可与put请求可信的证明一起被提供,使得密码服务系统可独立地确定是否执行密码操作(例如,对明文进行加密并且提供密文或生成可用于对明文进行加密的包络密钥)。然而,在各个实施方案中,可不向密码服务系统提供认证证明,并且例如,密码服务系统可根据它所接收的请求进行操作。例如,如果密码服务系统接收来自数据服务前端的请求,密码服务系统可依赖于数据服务前端已经独立地验证请求的认证的事实。在这个实施方案和其他实施方案中,数据服务前端可利用密码服务系统对自身进行认证,以便提供另外的安全层。密码服务系统可生成或以其他方式获取密钥,加密所获取密钥或以其他方式获取已加密密钥(例如,从存储器),并响应请求而提供所获取密钥和已加密的所获取密钥。所获取密钥可使用到密码服务系统的请求中所标识的密钥来加密。所获取密钥可用于对明文进行加密,并且在对明文进行加密之后,可丢弃所获取密钥(例如,不可撤销地从存储器移除)。在替代实施方案中,执行过程400的系统可生成或以其他方式获取用于执行一个或多个密码操作的密钥,向密码服务系统提供将要加密的所获取密钥。

在一些实施方案中,执行一个或多个密码操作可导致生成密文。由于一个或多个密码操作而生成的密文可被储存414以用于在后来时间可能进行的检索。如上所述,密文的储存可包括储存使得能够在后来时间对密文进行解密的另外信息。例如,密文可与用于将明文加密成密文的密钥的标识符一起被储存,使得具有所述标识符的密钥之后可用于对密文进行解密以获取明文。密文的储存也可以任何合适的方式来执行。例如,密文的储存可由数据服务后端储存系统执行,如上所述。

图5相应地示出环境500的说明性实例以及示出如何可获取明文的信息流动。在这个实例中,环境500包括认证服务系统、密码服务系统、数据服务前端和数据服务后端储存系统。认证服务系统、密码服务系统、数据服务前端和数据服务后端储存系统可以是如上所述的系统。如图5所示,数据服务前端被配置来接收来自用户的get请求并作为响应提供明文。为了做到这一点,数据服务前端还可被配置来向认证服务系统提交认证请求,如果适当的话,认证服务系统自身可被配置来向数据服务前端提供认证证明。数据服务前端还可被配置来向密码服务系统发送请求,以引起密码服务系统执行与对数据进行解密有关的一个或多个密码操作。在使用包络密钥的实施方案中,数据服务系统可向密码服务系统提交包括或指定已加密包络密钥(或已加密包络密钥的标识符)认证证明的请求(例如,api调用),并且向密码服务系统提交用于对包络密钥进行加密的主密钥的标识符。密码服务系统可确定认证证明对于允许操作是否足够,并且如果认证证明足够,则对包络密钥进行解密。已解密包络密钥可被发送回到数据服务系统,数据服务系统可使用密钥来解密已加密明文。数据服务系统随后可丢弃已解密明文密钥。

在替代实施方案中,数据服务前端可被配置来向密码服务系统提供所接收认证证明与密文,以便密码服务系统进行解密。密码服务系统相应地可被配置来确定认证证明对于允许对密文进行解密是否足够,并且如果认证证明足够,则使用适当的密钥(其可由数据服务前端向密码服务系统标识出)对密文进行解密,并向数据服务前端提供已解密密文(明文)。为了向密码服务系统提供密文,数据服务前端可被配置来从数据服务后端储存系统获取(例如,通过适当配置的api调用)密文。

图6示出根据各个实施方案的可用于获取明文的过程600的说明性实例。过程600可例如由上文结合图5示出的数据服务前端系统(数据服务前端)执行,尽管过程600及其变体可由任何合适的系统来执行。在实施方案中,过程600包括接收602来自用户的get请求(或其他适当的请求)。接收get请求可如上文结合其他类型的请求所描述来执行。在接收到602get请求之后,可如上所述向认证服务系统或以任何方式提交604认证请求。相应地可接收认证响应。至少部分地基于所接收认证响应,可做出608get请求是否可信的确定。如果确定608get请求不可信,则过程600可包括拒绝610请求,如上文所述,拒绝610请求可根据各个实施方案以各种方式来执行。

如果确定608get请求可信,则过程600可包括从储存装置检索密文。从储存装置检索612密文可以任何合适的方式来执行。例如,参照上文结合图5论述的环境500,数据服务前端可向数据服务后端储存系统提交获得密文的请求并且作为响应可接收密文。一般地,密文可以任何合适的方式从储存装置获取。在接收到密文之后,过程600可包括执行614与对密文进行解密有关的一个或多个操作。例如,在实施方案中,数据储存服务系统可向密码服务系统发送请求以执行与对密文进行解密有关的一个或多个密码操作614。在一种示例性配置中,数据服务系统可向密码服务系统发送包括已加密包络密钥(或已加密包络密钥的标识符)认证证明的api调用,并且向密码服务系统发送用于对包络密钥进行加密的主密钥的标识符。密码服务系统可确定认证证明对于允许操作是否足够,并且如果认证证明足够,则对包络密钥进行解密。已解密包络密钥可被发送回到数据服务系统,数据服务系统可使用密钥来解密已加密明文。

在另一种配置中,可向密码服务系统、如上文结合图5描述的密码服务系统提供密文。还可向密码服务系统提供其他信息,如可由密码服务系统使用以确定是否对密文进行解密的认证证明。另外,在一些实施方案中,可向密码服务系统提供将要由密码服务系统使用来对密文进行解密的密钥的标识符。然而,在其他实施方案中,可隐式地向密码服务系统指示出密钥。例如,密码服务系统可使用与向密码服务系统指示出的客户关联的默认密钥。一般地,可使用密码服务系统可确定使用哪个密钥来对密文进行解密的任何方式。

如图6所示,在对密文进行解密之后,过程600可包括提供616对get请求的响应。提供对get请求的响应可根据各个实施方案以各种方式来执行。例如,提供对get请求的响应可包括提供明文。在其他实施方案中,明文可以是随后响应于get请求而提供的用于对其他已加密信息进行解密的密钥。一般地,取决于明文在本公开的具体实施方案中的作用,提供对get请求的响应可以各种方式来执行。

如上所述,本公开的各个实施方案允许由数据储存服务系统以各种方式储存数据。图7示出根据这个实施方案的具有指示信息流动的箭头的环境700的说明性实例。如图7所示,环境700包括认证服务系统、密码服务系统、数据服务前端和数据服务后端储存系统,如上所述。在这个具体实例中,数据服务前端是被配置来接收来自各种用户的put请求的计算机系统。put请求可包括或指定将要由数据服务后端储存系统储存的数据对象。put请求还可指定将要用于对数据对象进行加密的密钥的密钥标识符。数据服务前端还可被配置来与认证服务系统进行交互,如上所述,以便向密码服务系统提供认证证明,密码服务系统可操作来接收密钥和密钥标识符并且作为响应提供由密钥标识符标识的密钥所加密的密钥。数据服务前端随后可引起在数据服务后端储存系统中进行储存。可储存的数据可包括由密钥加密的数据对象。可储存的数据还可包括由密钥标识符标识的密钥所加密的密钥。如本文在别处所论述,已加密数据对象和已加密密钥可储存在不同服务系统中。

如图7所示,数据服务前端被配置来向数据服务后端储存系统提供已加密信息以便储存。在这个实例中,数据服务前端被配置来提供在密钥下加密的数据对象以及在具有keyid的另一个密钥下加密的所述密钥。应注意,出于说明目的,使用波形括号记号来指明加密。具体地说,波形括号内的信息是在下标中所指定的密钥下加密的信息。例如,{dataobject}key表示数据“dataobject”在密钥“key”下被加密。应注意,使用这个波形括号记号,密钥标识符也可出现在下标中。当密钥标识符出现在下标中时,波形括号内的信息在由密钥标识符标识的密钥下被加密。例如,{dataobject}keyid表示数据对象“dataobject”在由密钥标识符“keyid”标识的密钥下被加密。类似地,{key}keyid表示密钥“key”在由密钥标识符“keyid”标识的密钥下被加密。换句话说,本公开在下标中利用密钥和密钥标识符两者,并且从上下文应明白下标的意义。密文可包括可用于确定关联解密密钥的标识码的另外元数据。

图8示出过程800的说明性实例,过程800可被执行以将数据对象存储在数据储存系统、如上文结合图7描述的数据服务后台储存系统中。过程800可由任何合适的系统来执行,如由上文结合图7描述的数据服务前端系统。在实施方案中,过程800包括接收802数据对象的put请求。接收数据对象的put请求可以任何合适的方式来执行,如上所述。应注意,可接收与请求相关的数据对象或可从另一个服务系统接收数据对象。例如,请求可包括数据对象的标识符,可使用标识符从另一个服务系统获取数据对象。与上文描述的其他过程一样,在实施方案中,过程800包括提交804认证请求和接收806认证响应。所接收806的认证响应可用于确定808put请求是否是可信请求。如果确定808put请求不可信,则过程800可包括拒绝810请求,如上所述。如果确定808put请求可信,则过程800可包括获取812密钥标识符(keyid),如用于对包络密钥进行加密的主密钥的keyid。获取812keyid可以任何合适的方式来执行,并且获取keyid的方式可根据各个实施方案而改变。例如,如图7所示,put请求可指定keyid。作为另一个实例,用户的或以其他方式与用户关联的标识码可用于获取标识符或默认密钥。作为另一个实例,密文可提供关联密钥id的指示。作为又一个实例,一个或多个策略确定可用于确定获取哪个密钥标识符。

在实施方案中,过程800还包括生成814密钥,如包络密钥。生成密钥可由例如密码服务系统或向密码服务系统请求加密操作的服务系统(例如,数据储存服务系统)以任何合适的方式来执行。例如,密钥可使用密钥衍生函数生成,密钥衍生函数使用密钥衍生函数的适当输入。示例性密钥衍生函数包括ieeestd13632000中所限定的kdf1、ansix9.42中所限定的密钥衍生函数以及基于hmac的密钥衍生函数,如rfc5869中所规定的基于hmac的提取和扩展密钥衍生函数(hkdf)。作为另一个实例,密钥可由如由美国国家标准技术研究院特别公开(nistsp)800-90a所规定的随机或伪随机数发生器、硬件熵源或确定性随机位发生器生成。应注意,虽然图8示出过程800包括生成814密钥,但密钥可以其他方式获取,如通过从储存装置检索。换句话说,密钥可以是已经预先生成的。

继续图8所示的过程800,在实施方案中,过程800包括使用816所生成密钥对数据对象进行加密。例如,在密码服务系统生成密钥的实施方案中,密码服务系统可向数据服务系统提供密钥、keyid以及密钥的已加密副本。例如,参照图7,数据服务前端可接收来自密码服务系统的包络密钥和用于对包络密钥进行加密的主密钥的keyid与任何其他相关信息、如认证证明。加密密钥的明文副本随后可用于对数据对象进行加密。可丢弃加密密钥的明文副本并且随后可存储已加密数据对象以及已加密密钥818。例如,参照图7,数据服务前端可向数据服务后端储存系统传输已加密数据对象和已加密密钥以便储存。在服务系统生成密钥的配置中,服务系统可向密码服务系统提供密钥和keyid。例如,数据服务前端可向密码服务系统发送包络密钥和用于对包络密钥进行加密的主密钥的keyid与任何其他相关信息、如认证证明。加密密钥的明文副本随后可用于对数据对象进行加密。服务系统可丢弃加密密钥的明文副本,并且随后可被储存已加密数据对象以及已加密密钥。例如,参照图7,数据服务前端可向数据服务后端储存系统传输已加密数据对象和已加密密钥以便储存。

已加密数据对象和已加密包络密钥可被存储而密钥的明文版本不被储存,也就是说,明文密钥可能是数据服务后端储存系统和一个或多个其他系统不可访问的。可以任何合适的方式使得数据对象在其下被加密的密钥(例如,主密钥)不可访问。在一些实施方案中,这通过将密钥储存在仅密码服务系统可访问的存储器中来实现。在一些其他实施方案中,这可通过将主密钥储存在硬件或其他安全模块中或以其他方式在硬件或其他安全模块的保护下储存主密钥来实现。在一些实施方案中,可允许重写储存明文包络密钥的存储器位置(例如,数据服务系统的存储器),或可有意地重写储存密钥的存储器位置,以使密钥是数据服务前端不可访问的。作为另一个实例,明文包络密钥可被维持在最终停止储存密钥的易失性存储器中。以此方式,包络密钥仅在使用由keyid标识的密钥解密的情况下可访问,或在其他情况下以未经授权的方式获取,如通过在不具有由keyid标识的密钥的情况下破解密钥,而这在计算上可能是不切实际的。换句话说,经授权访问数据对象在其下被加密的密钥需要由keyid标识的密钥。因此,如果图7的数据服务后端储存系统泄露,这样的泄露将不提供对未加密数据对象的访问,因为对数据对象进行解密将需要访问密钥,而密钥仅可通过使用由keyid标识的密钥进行解密或通过在计算上不可行的其他方式来获取。

如上所述,本公开的各个实施方案允许用户以安全方式储存数据对象并检索它们。图9相应地示出可用于从储存装置获取数据对象的环境900的说明性实例。如图9中所示,环境900包括认证服务系统、密码服务系统、数据服务前端和数据服务后端储存系统。认证服务系统、密码服务系统、数据服务前端和数据服务后端储存系统可以是如上所述的计算机系统。如图9所示,数据服务前端系统被配置来接收数据对象请求并作为响应提供数据对象。如图9所示,在这个实施方案中,为了提供数据对象作为响应,数据储存前端系统被配置来与认证服务系统、密码服务系统和数据服务后端储存系统交互。例如,在各个实施方案中,数据服务前端系统被配置来向认证服务提交认证请求并响应于请求接收认证证明。作为另一个实例,数据服务前端被配置来向密码服务系统提供由keyid标识的密钥所加密的密钥以及认证证明,密码服务系统可操作来至少部分地基于认证证明确定是否提供密钥,并且如果确定提供密钥,则随后向数据服务前端提供密钥。数据服务前端还可被配置来向密码服务系统提供其他信息、如keyid。但在一些实施方案中,可隐式地向密码服务系统指示出keyid,如通过与向密码服务系统提供的其他信息关联。还应注意,在一些实施方案中,与向数据服务前端提交请求一起,用户向数据服务前端提供keyid。此外,如图9所示,在实施方案中,数据服务前端被配置来向数据服务后端储存系统请求数据对象,并且作为响应接收由密钥加密的数据对象以及由keyid标识的密钥所加密的密钥。在一些实施方案中,密码服务系统可以可操作来拒绝执行不是使用与指定keyid关联的密钥生成的密文的解密。

在实施方案中,数据服务前端被配置来使用从密码服务系统接收的密钥来对数据对象进行解密并向用户提供已解密数据对象。图10相应地示出根据各个实施方案的可用于提供已解密对象的过程1000的说明性实例。过程1000可由任何合适的系统来执行,如结合图9描述的数据服务前端系统。在实施方案中,过程1000包括接收1002数据对象的get请求。接收数据对象的get请求可以任何合适的方式来执行,如上文结合其他类型的请求所描述。例如,数据对象的get请求可包括用于对请求进行认证的信息和/或其他信息。在实施方案中,与本文描述的其他过程一样,过程1000相应地包括向认证系统提交1004认证请求和接收1006认证响应。提交认证请求和接收认证响应可如上所述以任何合适的方式来执行。认证响应可用于确定1008get请求是否可信。在实施方案中,如果确定1008get请求不可信,则过程1000包括拒绝1010请求。然而,在实施方案中,如果确定1008get请求可信,则过程1000包括从储存装置检索1012已加密数据对象和已加密密钥。例如上文结合图9所示,数据服务前端系统可从数据服务后端储存系统获取已加密数据对象和已加密密钥。

在实施方案中,过程1000包括向密码服务系统提供1014已加密包络密钥。向密码服务系统提供1014已加密包络密钥可以任何合适的方式来执行,并且可与其他信息、如使得密码服务系统能够确定是否对已加密密钥进行解密的认证证明一起提供。另外,向密码服务系统提供1014已加密包络密钥可包括:提供授权对已加密包络密钥进行解密所需要的密钥的标识符,以使得密码服务系统能够从在由密码服务系统管理的多个密钥之中选择由标识符标识的密钥。然而,如上所述,密钥可隐式地被标识。因此,密码服务系统可选择适当的密钥并对已加密密钥进行解密。在实施方案中,过程1000相应地包括从密码服务系统接收1016已加密包络密钥。例如,如果密码服务系统确定认证证明有效和/或对已加密数据对象进行解密根据任何适用的策略是可允许的,则密码服务系统可向试图对数据对象进行解密的系统提供已解密密钥。数据对象随后可使用已解密包络密钥来解密1018。随后可向请求者、如提交get请求的用户或其他系统提供1020已解密数据对象。

在许多情况下,希望用户(即,一般是利用密码服务系统的装置)与密码服务系统直接交互。图11相应地示出允许用户直接访问密码服务系统的环境1100的说明性实例。环境1100中包括认证服务系统、数据服务前端和数据服务后端储存系统。认证服务系统、数据服务前端和数据服务后端储存系统可以是如上所述。例如,数据服务前端可被配置来如图11中所示在合适的网络上接收并响应来自用户的请求。作为在网络上响应来自用户的请求的一部分,数据服务前端还可被配置来与认证服务系统交互,以便确定用户请求是否可信和/或是否强制实施关于请求的策略。作为完成用户请求的一部分,数据服务前端还可被配置来与数据服务后端储存系统交互。用户请求可包括例如将数据存储在后端储存系统中的put请求以及从数据服务后端储存系统检索数据的get请求。如上所述,根据各个实施方案也可以使用其他请求,如删除储存在数据服务后端储存系统中的数据的请求、更新储存在数据服务后端储存系统中的数据的请求等。

在图11的特定实例中,在环境1100中,密码服务系统包括密码服务前端和数据服务后端。与数据服务前端一样,密码服务前端被配置来在网络上接收并响应来自用户的请求。密码服务前端还被配置来与认证服务系统交互以确定用户请求是否可信。确定用户请求是否可信可如上文所述以简单方式来执行。应注意,虽然密码服务前端和数据服务前端与同一认证服务系统交互,但密码服务前端和数据服务前端可与不同的认证服务系统交互。此外,密码服务前端可被配置来在响应用户请求时强制实施策略。

在实施方案中,密码服务前端被配置来与密码服务后端交互。根据从密码服务前端接收的指令,密码服务后端被配置来执行密码操作。密码操作包括加密、解密和散列计算等。环境1100可例如由用户使用来使得明文由密码服务系统进行加密,使得已加密数据可储存在数据服务后端储存系统中。以下提供这样使用环境1100的实例。另外,下文还提供示例性密码服务系统的示例性细节。

数据可如上所述以任何合适的方式储存在数据服务后端储存系统中。例如,在环境1100中可使用上文描述的用于将已加密数据存储在后端储存系统中的技术。例如,虽然未示出,但数据服务前端可与密码服务前端通信,以引起密码服务后端随后对可储存在数据服务后端储存系统中的数据进行加密。已加密数据可以是数据对象和/或用于对数据对象进行加密的已加密密钥。在环境1100中,数据也可以其他方式放置到数据服务后端储存系统中。例如,用户可提供将由密码服务系统加密的明文并作为响应接收密文。用户随后可与数据服务前端交互或可向数据服务前端提交请求,以请求将密文储存在数据服务后端储存系统中。在这个实例中,数据服务前端可以任何方式来储存密文。例如,数据服务前端和后端储存系统可被配置成与数据是否被加密无关。

另外,与本文示出的所有环境一样,另外的前端系统可在逻辑上位于用户与数据服务前端、与密码服务前端、可能地与其他前端系统之间,以便协调系统之间的动作。例如,在一些实施方案中,用户可与前端系统交互,前端系统自身与密码服务前端和数据服务前端交互,使得从用户的角度操作更简单。例如,用户可请求加密并储存数据对象,并且前端系统通过与密码服务前端和数据服务前端的适当交互来响应请求。然而,从用户的角度,这可通过单个请求来执行。其他变体也在本公开的范围内。

图12示出可用于实现本公开的各个实施方案的环境1200的说明性实例。在图12中,环境1200被配置来使得用户能够将密文存储在数据服务后端储存系统中。如图12所示,环境1200相应地包括数据服务前端、数据服务后端储存系统、认证服务系统、密码服务前端和密码服务后端。数据服务后端储存系统、数据服务前端、认证服务系统、密码服务前端和密码服务后端可以是如上文结合图11描述的系统。例如,如图12中所示,数据服务前端被配置来接收并响应用户请求,并且还可被配置来强制实施关于用户请求的策略。作为响应请求的一部分,数据服务前端可被配置来向认证服务系统提交认证请求并作为响应接收认证证明。在成功认证之后,数据服务前端可进一步被配置来与数据服务后端储存系统交互,以从数据服务后端储存系统获取随后可向用户提供的已加密数据对象和可能地未加密数据对象。

如图12所示,密码服务前端也被配置来向认证服务系统提交认证请求并作为响应接收认证证明。认证证明可用于从密码服务后端获取服务。例如,密码服务前端可被配置来向密码服务后端提供密文与认证证明,并且密码服务后端可被配置来对密文进行解密并提供密文作为回报。如图12所示,密文可以是已加密密钥,并且密码服务后端可对已加密密钥进行解密并向密码服务前端提供已解密密钥(也就是明文密钥),密码服务前端进一步被配置来向用户提供明文密钥。用户随后可使用密钥来对从数据服务前端接收的已加密数据对象进行解密,或对储存在用户的域内(例如,在用户操作或控制的数据中心或计算机系统内)的已加密数据对象进行解密。在这个实例中,用户可能已经从数据服务前端获取已加密密钥。例如,用户可能已经向数据服务前端提交获得数据对象和/或用于对数据对象进行加密的密钥的请求。虽然在图11中作为单个请求示出,但可针对数据对象和密钥两者做出单独的请求。如图11所示,数据服务前端可从数据服务后端储存系统获取已加密数据对象和已加密密钥,并向用户提供已加密数据对象和已加密密钥。

应注意,与本文所示的所有环境一样,变体也被视为是在本公开的范围内。例如,图12示出向用户提供在密钥下加密的数据对象和所述密钥,所述密钥由密钥标识符标识的另一个密钥加密。还可使用更高等级的加密。例如,数据对象可在仅用户可访问(和/或环境1200的其他组件不可访问)的密钥下被加密。用于加密数据对象的密钥也可在仅用户可访问的密钥下被加密。在这个实例中,对环境1200的组件(缺少用户)的未授权访问仍然不提供对数据对象的未加密内容的访问,因为经授权解密仍然需要对用户的密钥进行访问。

作为另一个实例,在图12所示的环境1200中,数据服务前端和数据服务后端储存系统不可访问由数据服务后端储存系统储存的明文数据,因为数据服务前端和数据服务后台储存系统不可访问对已加密数据进行解密所需的密钥。然而,在一些实施方案中,可准许访问数据服务前端和/或数据服务后端储存系统。例如,在实施方案中,可允许数据服务前端对密钥进行临时访问,以使得数据服务前端能够获取已加密数据、对已加密数据进行解密、使用已解密数据用于特定目的(例如,索引),并随后删除或以其他方式丢失对已解密数据的访问权。此类动作可通过由数据服务前端和/或密码服务系统强制实施的策略来支配,并且可能需要来自用户的授权。

图13示出过程1300的说明性实例,过程1300可用于获取如来自如上所述的数据服务后端储存系统的已加密数据对象和已加密密钥。过程1300可例如由上文结合图12描述的数据服务前端系统来执行。在实施方案中,过程1300包括接收1302已加密数据对象的get请求。接收get请求可以任何合适的方式来执行,如借助于通过到数据服务前端系统的api调用来接收请求。因为已经接收get请求,过程1300可包括提交1304认证请求和接收1306认证响应。如上所述,提交1304认证请求和接收1306认证响应可如上所述以任何合适的方式来执行。认证响应可用于确定1308get请求是否可信。如果确定1308get请求不可信,则过程1300可包括拒绝1310get请求。如上所述,拒绝1310get请求可如上所述以任何合适的方式来执行。然而,如果确定1308所述get请求可信,则过程1300可包括提供1312已加密数据对象与已加密密钥,当解密时,已加密密钥可用于对已加密数据对象进行解密。应注意,与本文描述的所有过程一样,众多变体也被视为是在本公开的范围内。例如,过程1300可被配置来当get请求可信时,通过提供已加密数据对象但不提供已加密密钥来响应get请求。请求者,也就是提交get请求的用户或系统,可以其他方式获取已加密密钥。例如,在一些实施方案中,用户它们自己可将已加密密钥存储在处于用户的控制下的数据储存系统中。作为另一个实例,一个储存服务系统可储存已加密数据对象,并且另一个服务系统可储存已加密密钥,并且用户可从相应服务系统获取已加密数据对象和已加密密钥。作为另一个实例,另一个服务系统或用户的第三方可用于储存已加密密钥,并且用户应请求可获取已加密密钥。一般地,可使用可提供已加密密钥的任何方式。

如图13所示,过程1300可使得实体已经被提供数据对象和可用于对数据对象进行解密的已加密密钥。在各个实施方案中,为了对数据对象进行解密,必须对已加密密钥进行解密。图14相应地示出过程1400的说明性实例,过程1400可将已解密密钥提供给需要这种已解密密钥以便使用已解密密钥来对已加密数据对象进行解密的实体。过程1400可由任何合适的系统来执行,如由上文结合图12描述的密码服务前端系统。在实施方案中,过程1400包括接收1402使用具有指定keyid的另一个密钥对密钥进行解密的解密请求。虽然结合密钥的解密描述过程1400,但应注意,过程1400一般可适用于数据的解密。解密请求可如上所述以任何合适的方式来接收1402(例如,通过适当配置的api调用)。此外,解密请求可由对执行过程1400的语境适当的任何实体来接收。例如,解密请求可源自用户或源自另一个系统,如上文论述的数据服务前端。解密请求还可包括将要解密的数据(例如,密钥)或其参考内容。keyid也可以任何合适的方式来指定。例如,在一些实施方案中,解密请求包括keyid或keyid的参考内容,也就是,可用于确定keyid的信息。如以上所论述,也可隐式地指定keyid。例如,可通过与可获得的数据、如提交解密请求的请求者的标识码关联来获取keyid。例如,对应于keyid的密钥可以是用于请求者或被代表来提交请求的实体的默认密钥。

在实施方案中,过程1400包括提交1404认证请求和接收1406认证响应。提交1404认证请求和接收1406认证响应可如上所述以任何合适的方式来执行。此外,如上所述,所接收认证响应可用于确定1408get请求是否可信。如果确定1408get请求不可信,则过程1400可包括拒绝1410get请求。如上所述,拒绝1410get请求可如上所述以任何合适的方式来执行。然而,如果确定1408get请求可信,则过程1400可包括访问针对指定keyid和/或请求者的策略信息。策略信息可包括以下信息,所述信息包括关于keyid和/或请求者的一个或多个策略的信息。

在实施方案中,所访问策略信息用于确定1414任何适用策略是否允许对具有指定keyid的密钥进行解密。如果确定1414策略不允许对由keyid指定的密钥进行解密,则过程1400可包括拒绝1410get请求,如上所述。然而,如果确定1414策略允许对具有指定keyid的密钥进行解密,则过程1400可包括使用由keyid标识的密钥对密钥进行解密1416。一旦密钥已经使用具有keyid的密钥来解密,随后就可如通过在网络上进行传输来向提交解密请求的请求者(或,在一些实施方案中,另一个授权的目的地)提供1418已解密密钥。

如上文论述的环境1200所示,用户可以各种方式获取已加密数据对象和用于对数据对象进行解密的密钥。图15示出根据各个实施方案的可用于获取明文的过程1500的说明性实例。过程1500可由任何合适的系统来执行,如由结合图12描述的用户所操作和/或托管的系统。其他合适的系统包括代表用户并且不必根据所提供的实时用户输入但或许根据预先编程的过程进行操作的系统。

在实施方案中,过程1500包括从数据储存服务系统接收1502密文。向数据储存服务系统请求1502密文可如上所述以任何合适的方式来执行。例如,执行过程1500的系统可在上文结合图12示出的环境1200中使用适当配置的api调用和/或通过上文结合图13描述的过程1300来请求1502密文。

过程1500还可包括接收密文和已加密密钥。接收密文和已加密密钥可以任何合适的方式来执行。例如,可响应于从数据储存服务系统获取密文的请求来接收密文和已加密密钥。然而,一般地,密文和已加密密钥可以其他合适的方式来接收1504。例如,从数据储存服务系统接收密文的请求可以是异步请求,并且可依据随后提交的另一个请求来接收1504密文。此外,密文和已加密密钥可作为单个响应提供或可以独立地获取,如通过不同的响应(不同响应可来自相同系统或不同系统)。作为另一个实例,执行过程1500的系统可本地地或以其他方式储存已加密密钥,并且已加密密钥可从本地存储器接收。

在实施方案中,过程1500包括请求使用具有指定keyid的密钥对已加密密钥进行解密。keyid可如上所述以任何合适的方式来指定。此外,应注意,执行过程1500的系统可能够以任何合适的方式指定keyid。例如,与keyid一起提供的已加密密钥和/或信息可指定keyid。作为另一个实例,执行过程1500的系统可本地或远程访问使得能够确定keyid的信息。例如本地或远程数据库可使数据对象与用于对数据对象进行加密的密钥的密钥标识符关联。一般地,可使用可使得系统能够指定keyid的任何方式。此外,在一些实施方案中,无需指定keyid,如当向密码服务系统提供的信息足以确定keyid时。用于对已加密密钥进行解密的请求1506可以如与上文结合图12论述的环境相关的任何合适的方式和/或通过执行上文结合图14描述的过程1400来执行。

在实施方案中,过程1500包括接收1508已解密密钥。接收1508已解密密钥可以任何合适的方式来执行。例如,可响应于用于对已加密密钥进行解密的请求来接收已解密密钥。作为另一个实例,用于对已加密密钥进行解密的请求可以是异步请求,并且可能已经提交用于接收已解密密钥的另一个请求。一般地,已解密密钥可以任何合适的方式来接收。此外,与从一个装置流向另一个装置的所有信息一样,信息的传递可使用安全通道来执行。例如,已解密密钥可由接收已解密密钥的实体再次加密以用于解密。一般地,任何方式的安全通信可用于从一个实体向另一个实体传递信息。

一旦已经接收1508已解密密钥,过程1500就可包括使用1510已解密密钥对密文进行解密1510并且因此获取明文。应注意,与本文描述的所有过程一样,变体被视为是在本公开的范围内。例如,过程1500示出获取密文的请求和用于对已加密密钥进行解密的请求顺序地被执行。然而,与本文关于各种过程描述的许多操作一样,在各个实施方案中无需顺序地执行操作。例如,如果执行过程1500的系统可在请求密文之前访问已加密密钥,或以其他方式能够这样做,则系统可并行地或以与所示方式不同的顺序请求密文并请求对已加密密钥进行解密。其他变体也被视为是在本公开的范围内。

如以上所论述,本公开的各个实施方案涉及提供密码服务。密码服务可由如上所述的密码服务系统来提供。图16相应地示出根据各个实施方案的密码服务系统1600的说明性实例。如图16所示并且如以上所论述,密码服务系统1600在逻辑上包括前端系统和后端系统。前端系统和后端系统两者都可由被配置来执行本文描述的操作的一个或多个计算机系统来实现。例如,如图16中所示,密码服务系统1600的前端系统实现请求api和策略配置api。在实施方案中,请求api是被配置用于请求将要由密码服务系统执行的密码操作和其他操作的api。因此,可通过请求api向前端系统做出请求,以便由密码服务系统执行此类密码操作。

请求api可被配置为具有以下可获得的示例性高级请求:

createkey(keyid)

encrypt(keyid,data,[aad])

decrypt(keyid,ciphertext,[aad])

shred(keyid)

rekey(ciphertext,oldkeyid,newkeyid)。

在实施方案中,createkey(keyid)请求引起密码服务系统创建由请求中所标识的keyid标识的密钥。在接收到请求之后,密码服务系统可生成密钥并使密钥与keyid关联。应知道,keyid可以是但不必是唯一的标识符。例如,keyid可标识密钥族。例如,在一些实施方案中,执行密钥轮换。密钥轮换可包括:将密钥替换为其他密钥,以防止收集到足够允许实际破解所使用加密法的已解密数据。如果在不同于密码服务系统的实体的指导下执行,则使用createkey(keyid)请求可引起密码服务系统创建新密钥以替换由keyid标识的旧密钥。旧密钥可保持由keyid标识,但是可例如仅用于解密(已经使用旧密钥进行加密的数据)而不用于将来的加密。作为另一个实例,在一些实施方案中,密码服务系统的用户提供他们自己的密钥标识符,并且可能的是两个不同客户可能提供相同标识符。在此类情况下,标识符可能不是唯一地标识密钥或甚至唯一地标识密钥族。各种措施可就位以解决此问题。例如,与密码服务系统的用户关联的标识码或其他信息可用于标识适当的密钥或密钥族。在再其他实施方案中,密码服务系统可随机地、顺序地、或使用任何其他方法分配keyid。

应注意,当keyid不是唯一地标识密钥时,各种系统可就位以实现适当的功能。例如,在各个实施方案中,由keyid标识的密钥族是有限的。如果请求使用由keyid标识的密钥进行的解密操作,则另外数据(例如,执行加密时的时间戳)可使得能够确定要使用的适当密钥。在一些实施方案中,密文可包括指示密钥版本的信息。在一些实施方案中,所有可能的密钥被用于提供数据的不同解密过程。由于存在有限次数的密钥,可从所提供的那些解密中选择适当的解密过程。在一些实施方案中,用密钥进行解密以使得密码服务系统能够检测到密文不是至少部分地基于密钥生成(如通过使用已认证加密)的方式来执行。其他变体也被视为是在本公开的范围内。

encrypt(keyid,data,[aad])请求可用于引起密码服务系统使用由keyid标识的密钥对指定数据进行加密。另外的已认证数据(aad)可用于各种目的并且可以是不必加密但经认证的数据,例如通过电子签名、消息认证码、或一般地包括在aad内的加密钥散列值来认证。在一些实施方案中,密文被生成为包括aad的至少一部分。在一些其他实施方案中,aad是在解密期间单独地提供。在一些其他实施方案中,aad是在解密时至少部分地基于请求和或其他元数据生成,使得解密将仅在元数据传递时成功。在一些实施方案中,策略可约束关于特定aad是否可执行密码操作。通过编程逻辑和/或由密码服务系统强制实施的策略,encrypt(keyid,data,[aad])请求的处理可既要求aad包括具体值又要求aad可信(例如,自原始传输以来未被修改)。类似地,decrypt(keyid,ciphertext,[aad])请求可用于引起密码服务系统使用由keyid标识的密钥对指定密文进行解密。decrypt(keyid,ciphertext,[aad])请求中的aad可如上所述来使用。例如,通过编程逻辑和/或由密码服务系统强制实施的策略,decrypt(keyid,ciphertext,[aad])的处理可既要求aad包括具体值又要求aad可信(例如,自原始传输以来未被修改)。

在实施方案中,shred(keyid)可用于引起密码服务系统电子地销毁(shred)由指定keyid标识的密钥或密钥族。电子销毁可包括使密钥不再可访问。例如,使用shred(keyid)请求可引起密码服务系统命令一个或多个硬件装置对由指定keyid标识的一个或多个密钥执行secureerase操作。一般地,由keyid标识的密钥可以任何合适的方式电子地销毁,如通过用其他数据(例如,一系列零或一,或随机字符串)重写编码密钥的数据。如果密钥以在密钥下被加密的方式被存储,则可电子地销毁用于对密钥进行加密的密钥,从而使得丢失对密钥的访问权。在一些实施方案中,销毁操作可使得指示所销毁keyid的解密操作在将来某一确定时刻失败。可使用安全地并且永久地摧毁对密钥的任何可能访问的其他方式。

在实施方案中,rekey(ciphertext,oldkeyid,newkeyid)请求可用于引起密码服务系统在不同密钥下对密文进行加密。当密码服务系统接收rekey(ciphertext,oldkeyid,newkeyid)请求时,它可使用由oldkeyid标识的密钥对指定密文进行解密并随后使用由newkeyid标识的密钥对已解密密文进行加密。如果由newkeyid标识的密钥尚不存在,则密码服务系统可生成要使用的密钥并使所生成密钥与指定newkeyid关联,如结合以上所述的create(keyid)请求所描述。在一些实施方案中,rekey操作可以可操作来使得数据可在密钥服务系统的孤立实体之间传送。在一些实施方案中,策略可能允许对密文执行rekey操作,但可能不允许相同请求者直接对密文进行解密。在一些实施方案中,rekey可能支持将密文的密钥从由第一账户内的第一keyid标识的密钥更新为由第二账户内的keyid标识的密钥。

类似地,前端系统可实现策略配置api,在实施方案中,策略配置api使得用户能够提交用于配置用于执行密码操作和其他策略相关操作的策略的请求。在各个实施方案中,策略可与密钥、密钥组、账户、用户和其他逻辑实体关联。以下提供可通过策略配置api配置的示例性策略。在实施方案中,密码服务策略配置api包括以下请求:

setkeypolicy(keyid,policy)

suspend(keyid,publickey)

reinstate(keyid,privatekey)

在实施方案中,setkeypolicy(keyid,policy)请求可用于引起密码服务系统存储关于由keyid标识的密钥(或密钥族)的策略。策略可以是确定在具体语境中是否可执行所请求密码操作的信息。策略可以陈述性访问控制策略语言来编码,如可扩展访问控制标记语言(xacml)、企业隐私授权语言(epal)、亚马逊网络服务访问策略语言、microsoftsecpol或编码执行密码操作必须满足的一个或多个条件的任何合适的方式。策略可限定可执行什么操作,何时可执行操作,哪些实体可为执行操作做出授权请求,授权特定请求需要哪些信息等。另外,除了或替代以上给出的实例,策略可使用访问控制列表、与用户关联的特权和/或操作位掩码来限定和/或强制实施。以下呈现示例性策略。

在一些实施方案中,密码服务系统可例如使用suspend(keyid,publickey)api调用来支持暂停操作。暂停操作使得密码服务系统的客户能够拒绝密码服务系统的操作者使用或访问密钥。这对关心隐蔽合法命令或其中密码服务系统的操作者可被强迫使用密钥执行一些操作的其他情况的客户可能有用。它也对希望锁定特定数据并使其在线不可访问的客户可能有用。在一些实施方案中,暂停操作可能包括:从客户接收公共密钥并利用所接收公共密钥对由给定keyid指定的密钥进行加密、并销毁由keyid指定的密钥,使得提供者不能访问已暂停密钥,除非例如使用既指定keyid又包括私人密钥的reinstate(keyid,privatekey)api调用提供与公共密钥关联的私人密钥。在一些其他实施方案中,暂停操作可能包括:使用由密码服务系统管理的另一个密钥对与指定keyid关联的密钥进行加密,所述另一个密钥包括但不限于为了立即暂停操作的目的而创建的一个密钥。可向客户提供通过这个操作产生的密文,而不是将密文保留在密码服务系统内。随后可销毁由keyid标识的原始密钥。密码服务系统可以可操作来接收所提供密文并再导入已暂停密钥。在一些实施方案中,密文可以将防止密码服务系统向客户返回已解密版本的方式生成。

如图16所示,密码服务系统1600包括后端系统,在一些实施方案中,后端系统自身包括各种组件。例如,在此实例中,后端系统包括请求处理系统,所述请求处理系统可以是密码服务系统1600被配置来根据通过请求api或策略配置api接收的请求执行操作的子系统。例如,请求处理组件可接收通过请求api和策略配置api接收的请求,确定此类请求是否可信并且因此确定是否可完成,并且可完成请求。完成请求可包括:例如,执行和/或已经执行密码操作。请求处理单元可被配置来与认证接口交互,认证接口使得请求处理单元能够确定请求是否可信。认证接口可被配置来与如上所述的认证系统交互。例如,当由请求处理单元接收到请求时,请求处理单元可利用认证接口与认证服务系统交互,如果适用,认证服务系统可提供可使用以引起执行密码操作的认证证明。

在此说明性实例中,密码服务系统1600的后端系统还包括多个安全模块(密码模块)和策略强制实施模块。尽管安全模块中的一个或多个可为硬件安全模块,但在各个实施方案中,安全模块可为被配置为具有本文所述能力的任何合适的计算机装置。在实施方案中,每个安全模块存储与keyid关联的多个密钥。每个安全模块可被配置来安全地存储密钥,以便不被密码服务系统1600的其他组件和/或其他系统的其他组件访问。在实施方案中,安全模块中的一些或全部遵从至少一种安全标准。例如,在一些实施方案中,安全模块各自被验证为遵从联邦信息处理标准(fips)出版物140-1和/或140-2中所概括的fips,如fips出版物140-2中所概括的一个或多个安全等级。此外,在一些实施方案中,每个安全模块都在密码模块验证程序(cmvp)下被证实。安全模块可实现为硬件安全模块(hsm)或具有hsm的一些或所有能力的另一种安全模块。在一些实施方案中,已验证模块用于引导操作。在一些实施方案中,客户可配置存储在已验证模块中并仅由已验证模块对其进行操作的一些密钥以及由软件对其进行操作的其他密钥。在一些实施方案中,与这些不同选项关联的性能或成本可能不同。

安全模块可被配置来根据请求处理单元所提供的指令来执行密码操作。例如,请求处理单元可向适当的安全模块提供密文和keyid,并向安全模块提供使用与keyid关联的密钥对密文进行解密并且作为响应提供明文的指令。在实施方案中,密码服务系统1600的后端系统安全地存储形成密钥空间的多个密钥。安全模块中的每一个可将所有密钥存储在密钥空间中;然而,变体被认为是在本公开的范围内。例如,安全模块中的每一个可存储密钥空间的子空间。由安全模块存储的密钥空间的子空间可重叠,使得密钥可冗余地存储在整个安全模块中。在一些实施方案中,特定密钥可仅存储在指定地理区域中。在一些实施方案中,某些密钥可仅由具有特定证书或许可等级的操作者访问。在一些实施方案中,某些密钥可存储在由特定第三方提供者操作的模块中并且仅由所述模块使用,特定第三方提供者与数据存储服务系统的提供者有合约。在一些实施方案中,安全模块的构造控制可能要求试图迫使使用密钥而非由客户授权的合法命令涉及正被强迫的另外实体或强迫动作的另外管辖范围。在一些实施方案中,可向客户提供对他们的密文和他们的密钥都存储在其中的管辖范围的独立选择权。在一些实施方案中,存储密钥的安全模块可被配置来向密钥的所有者提供审计信息,并且安全模块可被配置成使得审计信息的生成和提供不受客户抑制。在一些实施方案中,安全模块可被配置来独立验证由客户生成的签名,使得提供者(例如,托管安全模块)不能在由安全模块存储的密钥下执行操作。此外,一些安全模型可存储密钥空间的全部并且一些安全模块可存储密钥空间的子空间。其他变体也被视为是在本公开的范围内。在不同安全模块存储密钥空间的不同子空间的情况下,请求处理单元可被配置为如具有关系表或其他机构,关系表或其他机构用以根据各种请求确定哪个安全模块来命令执行密码操作。

在实施方案中,策略强制实施模块被配置来获取来自请求处理单元的信息,并且至少部分地基于所述信息来确定是否可执行通过api接收的请求。例如,当通过请求api接收执行密码操作的请求时,请求处理单元可与策略强制实施模块交互,以根据任何适用策略、如适用于请求中指定的keyid的策略和/或其他策略、如与请求者关联的策略来确定请求的完成是否被授权。如果策略强制实施模块允许完成请求,请求处理单元可相应地根据完成请求来命令适当的安全模块执行密码操作。

与本文描述的所有附图一样,众多变体被认为是在本公开的范围内。例如,图16示出与安全模块分开的策略强制实施模块。然而,除了或替代被示出为分开的策略强制实施模块,每个安全模块可包括策略强制实施模块。因此,每个安全模块可独立地被配置来强制实施策略。此外,作为另一个实例,每个安全模块可包括所强制实施的策略不同于分开的策略强制实施模块所强制实施的策略的策略强制实施模块。众多其他变体被视为是在本公开的范围内。

如以上所论述,各种策略可由与keyid关联的用户来配置,使得当请求指定结合对应于keyid的密钥执行密码操作时,可强制实施策略。图17提供根据各个实施方案的用于更新策略的过程1700的说明性实例。过程1700可由任何合适的系统来执行,如由如上文结合图16所描述的密码服务系统。在实施方案中,过程1300包括接收1302更新针对keyid的策略的请求。请求可以任何合适的方式来接收1302。例如,作为实例参照图16,请求可通过上述密码服务系统1600的前端系统的策略配置api来接收。请求可以任何合适的方式来接收。

在实施方案中,过程1700包括提交1704认证请求和接收1706认证响应。提交1704认证请求和接收1706认证响应可如上所述以任何合适的方式来执行。同样如上所述,所接收认证响应可用于确定1708更新针对keyid的策略的请求是否可信。如果确定1708所接收的更新针对keyid的策略的请求不可信,则可拒绝1710请求。拒绝1710请求可以任何合适的方式来执行,如上所述。然而,如果确定1708所接收的更新针对keyid的策略的请求可信,则过程1700可包括访问1712适用于请求者的策略信息。策略信息可以是可根据其强制实施适用于请求者的任何策略的信息。例如,在利用由过程1700执行的密码服务的组织中,只有组织的某些用户可被允许更新针对keyid的策略。策略信息可指示哪些用户能够引起密码服务系统更新针对keyid的策略和/或甚至策略根据现有策略是否可更新。例如,在一些实施方案中,密码服务系统可接收强制实施新策略的请求。密码服务系统可检查任何现有策略是否允许将新策略付诸实施。如果密码服务系统确定现有策略不允许强制实施新策略,则可拒绝请求。一般地,策略信息可为可用于强制实施适用于请求者的策略的任何信息。

如图17所示,过程1700包括使用访问策略信息来确定1704策略是否允许执行所请求的更新。如果确定1714策略不允许执行所请求的更新,则过程1700可如上所述包括拒绝1710请求。然而,如果确定1714策略允许执行所请求的更新,则过程1700可包括更新1716针对keyid的策略。更新针对keyid的策略可包括:更新策略信息,和根据keyid或与其关联地存储已更新策略。已更新策略信息可例如通过如上文结合图16所描述的密码服务系统的策略强制实施模块来存储。

策略还可由电子环境中结合密码服务系统操作的其他组件来强制实施。例如上文参照图2所论述,密码服务系统可向数据服务前端提供策略的电子表示,以便数据服务器端强制实施。这在数据服务系统更适合于强制实施策略的情况下可能有用。例如,动作是否为策略所允许可至少部分地基于数据服务前台可访问且密码服务系统不可访问的信息。作为一个实例,策略可取决于由数据服务后端存储系统代表与策略关联的客户所存储的数据。

如上文所论述,密码服务系统可包括允许根据关于具有keyid的密钥的策略来强制实施策略的各种系统。图18相应地示出可用于强制实施策略的过程1800的说明性实例。过程1800可由任何合适的系统执行,如由如上文结合图16描述的密码服务系统。在实施方案中,过程1800包括接收1802使用具有keyid的密钥执行一个或多个密码操作的请求。虽然图18将过程1800示出为结合执行一个或多个密码操作的请求来执行,但应注意,过程1800可适合于与执行不一定是密码操作的操作的任何请求一起使用。以上描述了示例性操作。

可做出1804所接收请求是否可信的确定。确定所接收请求是否可信可如上所述以任何合适的方式来执行。例如,确定1804请求是否可信可如上所述包括提交认证请求和接收认证响应。如果确定1804请求不可信,则过程1800可包括拒绝1806请求。拒绝1806请求可如上所述以任何合适的方式来执行。然而,如果确定1804请求可信,则过程1800可包括访问1808针对keyid和/或请求者的策略信息。访问针对keyid和/或请求的策略信息可以任何合适的方式来执行。例如,访问针对keyid和/或请求者的策略信息可通过访问存储策略信息来执行,所述存储策略信息来自存储此类策略信息的一个或多个存储系统。所访问策略信息可用于确定1810策略是否允许执行一个或多个操作。

如果确定1810策略不允许执行一个或多个策略,则过程1800可包括拒绝1806请求。然而,如果确定策略允许执行一个或多个策略,则过程1800可包括执行1812所请求的一个或多个密码操作。可提供1814执行一个或多个密码操作的一个或多个结果,如向提交所接收1802的执行一个或多个密码操作的请求的请求者提供。在一些实施方案中,至少部分地衍生自所允许的请求和或所拒绝的请求的信息可通过审计子系统来提供。

如所论述的,本公开的实施方案允许灵活的策略配置和强制实施。在一些实施方案中,策略可说明哪些服务系统可在哪些语境中执行哪些操作。例如,关于密钥的策略可允许数据存储服务系统引起密码服务系统执行加密操作但不执行解密操作。关于密钥的策略还可包括关于密文和/或已解密明文的一个或多个条件。例如,策略可要求密文和/或明文在响应于请求而提供操作结果之前产生特定散列值(其可为加密钥散列值)。策略可指定至少部分地基于时间、请求所源自的互联网协议(ip)、将被加密/解密内容的类型、aad和/或其他信息的一个或多个限制条件和/或权限。

众多变体被视为是在本公开的范围内。例如,上文论述的各个实施方案论述与分开的认证服务系统的交互。然而,上文论述的环境的组件可具有它们自己的授权组件,并且确定请求是否可信可以或可以不包括与另一个实体通信。另外,上文所论述的实施方案中的每一个结合由环境实现的特定操作和能力来说明。上文结合不同环境所论述的技术可相结合,并且一般地,根据本公开的环境可允许灵活使用各种技术。仅作为一个实例,密码服务系统可用于根据请求对密钥、和其他内容如无密钥数据对象两者进行加密。作为另一个实例,密码服务系统可被配置来接收并响应来自用户(例如,计算资源提供者的客户)和其他服务系统(例如,数据存储服务系统)两者的请求。在一些实施方案中,密码服务系统和/或关联认证服务系统可被配置用于与移动装置一起用于执行所存储数据的加密。在一些实施方案中,至少一个解锁pin可由密码服务系统验证。在再其他实施方案中,作为操作的一部分,密码服务系统可接收通过硬件鉴证生成的信息。在一些实施方案中,密码服务系统可以可操作来关于内容提供数字版权管理服务。

如上文所论述的,本公开的各个实施方案允许丰富的策略强制实施和可配置性。许多密码系统允许已认证加密操作模式,在所述模式下,可执行密码操作以同时对数据提供机密性、完整性和可信性保证。机密性可通过对明文数据进行加密来提供。可信性可针对可能保持未加密的明文和关联数据两者来提供。通过此类系统,密文或关联数据的变化可引起对密文进行解密失败。

在实施方案中,与明文关联的数据用于强制实施策略。图19相应地示出根据各个实施方案的过程1900的说明性实例,过程1900用于以允许使用关联数据进行策略强制实施的方式对数据进行加密。过程1900可由任何合适的系统、如密码服务系统和/或安全模块来执行。如图所示,过程1900包括获取1902明文。明文可以任何合适的方式来获取。例如,在如上所述的服务提供者环境中,用户(例如,客户)可提供将要加密的数据。作为另一个实例,获取1902可包括生成(将要加密的)密钥和/或获取将要加密的密钥。密钥可如上所述来使用。

如图所示,过程1900包括获取关联数据。相关联数据可为与或将要与明文关联的任何数据。关联数据可以是一个或多个策略至少部分地所基于的任何数据。以下呈现实例。此外,关联数据可以任何合适的方式来编码,例如以可扩展标记语言(xml)、javascript对象表示法(json)、抽象句法表示法/1(asn1)、yaml不标记语言(也被称为另一种标记语言)(yaml)或另一种结构化可扩展数据格式。在实施方案中,过程1900包括至少部分地基于明文和关联数据来生成1906消息认证码(mac)和密文。mac和密文的组合,如aes-gcm加密法的输出,可被称为已认证密文。生成mac和密文可以任何合适的方式来执行,并且mac和密文的生成可取决于使用哪种密码系统。例如,在实施方案中,当在ccm模式或gcm模式下操作时,高级加密标准(aes)支持关联已认证数据(aad),其中ccm表示具有cbc-mac模式的计数器,gcm表示伽罗瓦/计数器模式,并且cbc表示密码分组链接。在ccm或gcm模式下使用aes,可提供明文和关联数据作为输入,以获取具有密文以及明文和关联数据两者的mac的串接对的输出。应注意,虽然出于说明的目的而提供aes-ccm和aes-gcm,但可使用其他已认证加密方案并且可相应地修改本文明确描述的技术。例如,本公开的技术一般适用于支持已认证加密模式的对称分组加密法。另外,根据本公开的各个实施方案,其他加密方案可与mac函数结合。合适的加密方案和mac函数的结合包括但不限于其中加密方案在选择的明文攻击下语义安全并且mac函数在选择的消息攻击下不可伪造的那些组合。此外,尽管本公开的各个实施方案利用产生编码密文和mac两者的单个输出的加密法,但mac和密文可使用不同的加密法来生成。此外,虽然使用mac作为说明性实例时,但是也可使用通常不称为mac的其他值,如一般散列、校验和、签名和/或可用于替换mac的其他值。因此,利用支持关联数据的自动加密模式的加密法包括除了或替代mac使用其他密码原语的加密法。

此外,生成mac和密文可根据多个实施方案以各种方式来执行。例如,在实施方案中,向如上所述的安全模块提供明文。安全模块可被配置来生成mac。在其他实施方案中,电子环境中不同于安全模块的组件生成mac和密文。在此类实施方案中,安全模块可用于对密钥进行解密,当呈明文形式时,密钥用于生成mac和密文。一旦被生成,就可提供1908mac和密文(即,已认证密文)。在一些实施方案中,还提供关联数据。mac和密文可在使用过程1900及其变体的各种实现方式中以各种方式来提供。例如,在一些实施方案中,向如上所述的用户提供mac和密文,或向如上所述的数据服务系统提供mac和密文、以便由数据服务系统进行处理。此外,如上所述,尽管可提供关联数据,但在各个实施方案中,并不提供关联数据和/或通常保持关联数据呈明文形式。例如,如果关联数据可独立获取,则可不提供关联数据。作为说明性实例,如果关联数据是装置的持久标识符(例如,存储装置的标识符),则关联数据可在策略强制实施和/或其他目的需要关联数据时的稍后时间获取。

如上文所论述的,本公开的各个实施方案利用安全模块来提供增强的数据安全性。图20提供根据各个实施方案的过程2000的说明性实例,过程2000可用于以允许进行新颖且丰富的策略强制实施的方式对数据进行加密。过程2000可由任何合适的系统来执行,如密码服务系统和/或安全模块。如图20中示出,过程2000包括获取明文和关联数据。如上所述,可通过单次通信、单独的通信和/或从分离实体接收明文和关联数据。一旦被获取,就向安全模块提供2004明文、关联数据和keyid。安全模块可以是如上所述的。此外,安全模块可选自参与电子环境的多个安全模块,例如如上所述的支持密码服务的环境。keyid可以是如上所述的,并且可在向密码服务系统提交的加密明文的请求中指定或可以其他方式指定。此外,在过程2000的替代实施方案中,可不指定keyid。例如,在一些实施方案中,安全模块可选择keyid和/或可生成稍后被分配keyid的密钥。在此类实施方案中,可修改过程2000以从安全模块提供keyid。

回到所示实施方案,过程2000可包括从安全模块接收2006密文和mac。密文可在由keyid标识的密钥下被加密。mac可以是关于明文和关联数据的组合的mac,使得密文或关联数据的变化将引起mac进行检查失败。如上所述,应注意,变体包括其中mac是至少部分地基于关联数据但独立于明文生成的那些变体。此外,如以上所论述,密文和mac可一起提供(如从使用aes-ccm或aes-gcm加密法的输出)或可分开提供。一旦从安全模块被接收,就向适当的实体提供2008mac和密文,适当的实体如密码服务系统或结合密码服务系统操作的数据服务系统的用户,如上所述。

如上文所论述的,安全模块可以多种方式用来增强对数据的保护。如上文所论述的,在一些实施方案中,安全模块用于对密钥进行加密,所述密钥用于(以其明文形式)对其他数据进行加密。图21相应地示出可在此类情况下使用的过程2100的说明性实例。过程2100可由任何合适的系统来执行,如密码服务系统和/或安全模块。在实施方案中,过程2100如上所述包括获取2102明文和关联数据。如图所示,过程2100包括向安全模块提供2104已加密密钥、关联数据和keyid,所述keyid标识可由安全模块用来对已加密密钥进行解密的密钥。因此,过程2100包括从安全模块获取已解密密钥,安全模块使用由keyid标识的密钥对已加密密钥进行解密。一旦被获取,就可使用密钥对明文进行加密,从而计算2108密文和mac。密文可以是明文的加密版,并且mac可以是关于(即,至少部分地基于)关联数据或关联数据和明文两者,如上所述。一旦被加密,过程2100就可如上所述包括提供2110mac和密文。此外,所述过程还可包括丢失2112对已解密密钥的访问权,这可以任何合适的方式来执行,例如通过secureerase操作,重写存储已解密密钥的存储器,对存储密钥的易失性存储器断电和/或以系统(例如,缺少其安全模块的密码系统)执行过程2100的任何其他方式。尽管被示出为是并行的,但提供关联数据、mac和/或密文与丢失对密钥的访问权可依次执行,执行的顺序在各个实施方案之间可能有所变化。

图22示出根据各个实施方案的过程2200的说明性实例,过程2200可用于使用关联数据强制实施策略。过程2200可由任何合适的系统来执行,如密码服务系统和/或安全模块。在实施方案中,过程2200包括接收2202执行操作的请求。请求可以是向处理请求的服务系统提交的任何请求。在实施方案中,请求是向密码服务系统提交的执行密码操作的请求。响应于接收2202请求,过程2200可包括获取2204密文、mac和预期关联数据。获取2204密文、mac和预期关联数据可以任何合适的方式来执行。例如,在一些实施方案中,可在请求中接收密文、mac和预期关联数据中的一个或多个。密文、mac和预期关联数据中的两个或更多个可在分开的请求中或其他通信中接收和/或从数据存储器、如本地数据存储器访问。例如,在实施方案中,密文和mac作为串接对(可能由aes-gcm或aes-ccm加密法的输出生成)被接收,以作为请求的一部分。预期关联数据还可以是请求的一部分或可以其他方式来标识。例如,请求者的身份可直接或间接用于确定关联数据。作为具体实例,如果请求是结合存储在存储装置中的数据来执行操作,则获取2204关联数据可包括获取数据存储装置的标识符。标识符可被显式地标识(例如,作为请求的一部分)或被隐式地标识(例如,因为其他信息可供用于确定存储在数据存储装置中的数据)。关联数据可以或另外可以至少部分地基于数据存储装置的标识符。如上文所论述的,关联数据在各个实施方案之间可能显著地变化。

在实施方案中,过程2200包括生成2206可用于确定预期关联数据的可信性的参考mac。例如,使用密文、关联数据和适当的密钥(其可在请求中标识或可以其他方式确定)生成2206参考mac。生成mac可以任何合适的方式来执行,如通过使用用于获取密文的同一加密法。可做出2208参考mac和所获取mac是否匹配的确定。例如,在许多密码系统中,当mac相等时它们匹配,尽管可设想到在各个实施方案中可使用其他类型的匹配。在实施方案中,如果确定2208参考mac和所获取mac匹配,则过程2200包括访问2210至少部分地基于关联数据的策略信息。访问2210策略信息可包括访问来自远程或本地数据存储器的一个或多个策略(即,一个或多个策略的电子表示),所述一个或多个策略至少部分地基于与用于生成参考mac和/或执行另一个密码操作的keyid关联的一个或多个策略。

随后可至少部分地基于所访问策略信息做出2212策略是否允许执行所请求操作(例如,策略是否允许完成请求)的确定。确定策略是否允许执行所请求操作可包括确定密文是否是利用由所访问策略信息指定的关联数据标记。此外,尽管未示出,但不是至少部分地基于关联数据的策略信息(例如,基于不同于关联数据的信息的策略)也可用于确定策略是否允许执行操作。如果确定2212策略允许操作,则过程2200可包括执行2214操作。然而,如果确定2212策略不允许操作,和/或如果确定2208参考mac和所获取mac不匹配,则过程2200可包括拒绝2216请求,如上所述。

各种策略可使用上文所述的技术来强制实施。例如,如上所述,可使策略与密钥关联,使得当强制实施时,策略确定可和/或不可利用密钥完成的事情。作为一个实例,策略可规定:数据服务系统可使用仅用于由策略指定的特定类型的操作的密钥(或可替代地,可规定:数据服务系统禁止特定操作)。策略还可指定使用条件:使用时间、ip地址、什么可被加密、什么可被解密等。作为一个说明性实例,一个策略可指定:只有在解密的散列匹配指定值时,才允许提供已解密结果。因此,如果明文的散列与策略不一致,则强制实施策略的密码服务系统或其他服务系统将不提供明文。作为另一个实例,策略可指定:只有在密文是利用与指定值相等或以指定值开始的关联数据标记时,才允许对密文进行解密。作为又一个实例,策略可指定:只有在密文是利用关联数据中所编码的存储装置的标识符标记时,才允许对密文进行解密。

通常,策略可指定至少部分地基于与密文(即,已认证关联数据)关联的数据的值的限制条件和/特权。一些另外策略包括以下策略:指定仅允许对利用请求解密的计算机的标识符标记的密文、利用安装(在操作上连接)至请求解密的计算机的存储卷的标识符标记的密文、和/或利用其他计算资源的标识符标记的密文进行解密。计算资源也可以是由强制实施策略的计算资源提供者托管的计算资源。其他策略被视为是在本公开的范围内,如至少部分地基于向执行密码算法的实体之外的实体揭示(例如,向用户和/或强制实施策略的密码服务系统之外的其他数据服务系统揭示)密码算法的输出之前的密码算法的输入和/或输出的策略。如上所述,策略还可指定何时可修改策略的可至少部分地基于关联数据的条件。

图23示出根据各个实施方案的过程2300的说明性实例,过程2300是上文结合图22所论述的过程2200的变体,其中变体示出安全模块在强制实施策略中的使用。在实施方案中,过程2300包括接收2302对密文进行解密的请求,密文可以是已加密密钥或其他已加密数据。过程2300还包括获取2304密文、mac和预期关联数据,如上文结合图22所描述。如图23所示,在实施方案中,过程2300包括使用2306安全模块来对密文进行解密。使用2306安全模块还可包括从多个安全模块中选择可操作来对密文进行解密、从而产生明文的安全模块。安全模块还可用于2308至少部分地基于明文和预期关联数据生成参考mac。应注意,尽管在图23中示出为两个独立步骤,但使用安全模块对密文进行解密和生成参考mac可在单个步骤中执行(例如,到安全模块的单个请求)。一旦从安全模块获取,过程2300就包括确定2310参考mac和所获取mac是否匹配,如上文结合图22所描述。然而,应注意,在一些实施方案中,过程2300可被修改成使得安全模块被提供参考mac并且确定参考mac和所获取amc是否匹配。在这个变体中,安全模块可提供指示是否存在匹配的响应。

回到图23所示的实施方案,如果确定2310参考mac和所获取mac匹配,则过程2300包括访问2312至少部分地基于关联数据的策略信息,如上文结合图22所描述。此外,如上所述,尽管并未如此示出,但还可访问关于不是至少部分地基于关联数据的策略的另外策略信息。可做出2314策略是否允许操作的确定。如果确定2314策略允许操作,则可提供2316明文。如上文结合图22所述,如果确定2314策略不允许操作和/或如果确定参考mac不匹配所获取mac,则过程可包括拒绝2318请求,如上所述。

尽管本公开的各个实施方案是使用加密法的认证模式的关联数据来示出,但其他实施方案也被视为是在本公开的范围内。例如,本公开的实施方案一般适用于使用可由密文验证的数据来强制实施策略。作为说明性实例,策略的表示可与第一明文结合以生成新明文(例如,包括明文和策略的新明文)。新明文可使用合适的加密法、如aes进行加密,以产生密文。当接收对密文进行解密的请求时,接收请求的系统可对密文进行解密,从新明文提取策略,并且检查策略是否允许提供第一明文。如果策略不允许提供第一明文,则可拒绝请求。替代或除了上文结合加密法的认证模式的关联数据所论述的实施方案,可使用这类实施方案。

本公开的各个实施方案还允许指定审计如何发生的条件的关于密钥的策略。例如,关于密钥的策略可指定密钥的审计等级,其中审计等级是密码服务系统的确定密码服务系统如何审计密钥使用的参数。审计可由任何合适的系统来执行。例如,参照图16,请求处理单元可与可以是密码服务系统的一部分或与密码服务系统分开的审计系统(未示出)通信。当事件与密码操作的执行一起发生时,可向审计系统提供相关信息,所述审计系统记录所述信息。事件可以是执行密码操作的请求和/或指示所请求操作是否被执行的信息。例如,如果用户成功地请求密码服务系统执行解密操作,则密码服务系统可向审计系统提供实现请求的信息和操作被执行的信息。管理访问事件和一般地密码服务系统的任何交互或操作可利用可标识参与事件的实体的相关信息、描述事件的信息、事件的时间戳和/或其他信息来记录。

在实施方案中,审计等级包括高持久性等级和低持久性等级。对于低持久性等级,密钥的审计操作可由密码服务系统尽最大努力地执行。在根据低持久性等级进行审计的情况下,在常规操作中,所有操作均被审计,但在密码服务系统的组件发生故障的情况下,一些审计数据可能丢失。在根据高持久性等级进行审计的情况下,在揭示密码操作的结果之前,获取操作已发生的审计记录已经被持久地递交给存储器的保证。由于所需确认,高持久性审计模式的操作比低持久性审计模式的操作慢。审计记录已经被持久地递交给存储器的保证可包括来自用于存储审计记录的一个或多个其他系统的确认。因此,参照前一段,密码服务系统可延迟向用户提供明文,直到审计系统确认产生明文的解密的记录已经被持久地递交给存储器。持久地递交给存储器可意味着已经根据一个或多个持久性条件存储数据。例如,当数据被写到非易失性存储器和/或数据冗余地存储在多个数据存储装置之中(例如,使用擦除写码方案或其他冗余编码方案)时,数据可被持久地递交给存储器。

在实施方案中,密码服务系统使用低持久性等级和高持久性等级的子等级。例如,在实施方案中,每个等级对应于两个单独状态:不变状态和可变状态。状态是不变还是可变可确定状态之间如何和是否发生转变。例如,使用审计持久性的说明性实例,关于密钥的策略可在低持久性可变与高持久性可变之间改变、从低持久性可变改变成低持久性不变、以及从高持久性可变改变成高持久性不变。然而,密码服务系统可被配置成使得:一旦针对密钥的策略处于低持久性不变或高持久性不变,转变被禁止。因此,一旦针对密钥的策略处于不变状态,策略就不可改变。

图24示出这种系统的状态图的说明性实例,其概括为可启用(强制实施)或中止(未强制实施)的策略。如图24所示,针对密钥的策略可启用或中止。当启用且不变时,策略可改变为启用且不变(不能改变)或中止且可变(能改变)。类似地,当策略中止但可变时,策略可改变为启用但可变或中止且不变。应注意,其他转变也是可获得的,如策略从中止但可变到启用且不变的直接转变。此外,并非所有示出的转变都是可获得的。例如,在一些情况下,密钥可能不具有中止且不变状态。

图25示出概括状态图,其示出系统如何可允许适用于密钥的各种策略之间的转变。在这个实例中,示出三个策略—策略a、策略b和策略c。这些策略中的每一个具有可变状态和不变状态,并且示出了状态和策略之间可允许的转变。例如,不允许转变出不变状态。然而,处于可变状态的策略可改变为处于可变状态的另一个策略。例如,关于密钥的策略可从策略a(可变)改变为策略b(可变)。如策略b所示,可存在适用于多个策略的转变。例如,策略可从策略b改变为策略c或策略a。与图24一样,可包括其他转变和策略,并且并非所有策略可具有所有状态。此外,尽管各种实例将策略示出为具有不变状态和可变状态,但策略可具有多于两种状态,其中每种状态对应于可或不可执行的动作集。例如,半可变状态可允许在可变状态下将可获得的一些但并非所有转变。

如上所述,除审计之外,策略还可用于各种操作。例如,以上关于策略转变的限制条件可应用于密钥可销毁性。例如,策略可指示密钥是否可被销毁(不可撤销地丢失)。策略可具有四种状态:可销毁-可变;可销毁-不变;不可销毁-可变;以及不可销毁-不变。如上所述,当处于不变状态时,策略不可改变。作为另一个实例,关于是否可从安全模块输出密钥的策略也可具有这种四态策略。

策略还可与密钥关联,以防止密钥的使用使得易于受安全攻击。例如,在实施方案中,一个或多个密钥与自动轮换策略关联,自动轮换策略使得密钥在使用一定次数之后被停用(例如,被标记以便不再可用于加密)。这种策略可以是用户(例如,客户)激活和/或为其提供参数的用户可配置的(例如,客户可配置的)策略。策略还可以是适用于更大密钥集(如至少包括由密码服务系统代表其客户管理的所有密钥的集)的全局策略。以此方式,就可以在知道足够的明文和对应密文使得能够确定密钥的情况下,在使用的次数足以实现密码攻击之前停用密钥。

图26示出根据各个实施方案的可用于以适当的间隔轮换密钥的过程2600的说明性实例。过程2600可由任何合适的装置来执行,如上文所论述的安全模块。在实施方案中,过程2600包括接收2602使用由keyid标识的密钥来执行密码操作的请求。请求可以是从密码服务请求处理器接收的请求,如上所述。请求可以是对数据进行加密或解密、或一般地使用由keyid标识的密钥来执行任何密码操作的请求,任何密码操作如生成电子签名、另一个密钥或至少部分地基于密钥的其他信息。在接收到2602请求之后,过程2600包括执行2604所请求操作。执行所请求操作可包括另外操作,如选择密钥的适当版本来执行操作。例如,如果操作是加密,则标记为现用的密钥可用于加密。如果操作是解密,则执行操作可包括选择由keyid标识的密钥的适当版本来解密,在各个实施方案中,密钥的适当版本是最初用于对数据进行加密的密钥。密钥可通过各种方式来选择。例如,在一些实施方案中,密文可包括标识版本、序列号、日期或使得能够选择密钥的其他信息的元数据。在一些实施方案中,每个可能的密钥可被停用、直到数据被恰当地解密,其中恰当解密可通过与密文关联的明文输出的散列或通过关联数据的正确性来确定。

一旦已执行2604密码操作,过程2600就包括更新2606用于由keyid标识的现用密钥的密钥使用计数器。例如,如果密码操作导致密钥的单次使用,则计数器可递增一。类似地,如果密码操作导致密钥的n(n为正整数)次使用,则计数器可递增n。可做出2608计数器是否超过阈值的确定。阈值可为分配给由keyid标识的密钥的版本的使用次数。阈值可由密码服务系统的管理针对密钥的操作的分配的组件来提供。阈值还可以是默认操作次数。在实施方案中,如果确定2608计数器超过阈值,则过程2600包括获取2610新密钥。获取新密钥可以任何合适的方式来执行。例如,如果过程2600由安全模块执行,则获取新密钥可包括生成新密钥或从另一个安全模块获取新密钥,这可由密码服务系统的操作者精心编制。将密钥从一个安全模块传递到另一个安全模块可通过利用提供安全模块和接收安全模块可访问的密钥对密钥进行加密来执行。执行过程2600的安全模块可接收并且解密已加密密钥。也可使用公共密钥的密钥交换技术。

在实施方案中,一旦已经获取新密钥,过程2600就可包括将当前现用的密钥标记2612为停用。将当前现用的密钥标记为停用可以任何合适的方式来执行,如通过改变由安全模块维持的数据库中的适当值。此外,过程2600可包括使新密钥与keyid关联2614并且将新密钥标记为现用,如通过更新由安全模块维持的数据库。尽管并未示出,但过程2600还可包括提供新密钥以供由另一个安全模块使用。如虚线所指示,在新密钥准备好由执行过程2600的安全模块使用之后的某一时刻,过程可包括接收2602执行另一个密码操作的请求,并且过程2600可如上文所论述继续进行。此外,如果确定2608计数器未超过阈值,则过程2600可结束和/或一旦接收2602另一个请求就重复。

图27示出根据各个实施方案的过程2700的说明性实例,过程2700可用于在密码服务系统或其他环境中执行密钥的自动轮换。过程2700可由任何合适的系统来执行,如根据各个实施方案的密码服务系统的追踪密钥使用并且精心编制密钥轮换的组件。如图27所示,过程2700包括将针对密钥的一定次数的密钥操作(例如,针对多个密钥中的每一个的一定次数的操作)分配2702给一个或多个安全模块。作为特定实例,在利用五个安全模块冗余地存储/使用密钥集的环境中,每个安全模块可针对其所管理的每个密钥被分配一百万次操作。操作被分配到的安全模块(或其他计算机系统)可托管在多个数据中心之中的同一数据中心中。例如,在一些实施方案中,计算资源提供者利用多个地理区域中的多个数据中心中的安全模块来实现在地理上分布的密码服务或其他服务。

然而,应注意,可针对一些但并非所有密钥做出分配,并且针对每个密钥的分配可能不相等。分配密钥操作可包括向已经向其分配密钥操作的每个安全模块提供分配通知。通知可指定针对每个密钥已经分配的次数,或者在一些实施方案中,给安全模块的通知可向安全模块指示重新初始化预编程到安全模块中的计数器或将预编程数字添加到计数器。在将密钥操作分配2702给安全模块之后,可更新用于已经针对其分配操作的每个密钥的密钥使用计数器。继续上述具体实例,如果五个安全模块中的每一个都针对由特定keyid标识的密钥被分配一百万次操作,则针对keyid的计数器可递增(向上或向下,取决于计数是向上还是向下执行)五百万。

在已经分配密钥操作之后,安全模块可执行如上所述的密码操作。安全模块可维持它们自己的计数器,所述计数器至少部分地基于已做出的分配。在以上实例中,如果安全模块针对由特定keyid标识的密钥被分配一百万次操作,则安全模块可将计数器设置成一百万(或超过一百万,如果现有计数器具有剩余操作)。在使用密钥执行密码操作之后,安全模块可相应地使其自己的计数器递增。

在某一时刻,可检测2706针对一个或多个keyid的分配耗尽事件。耗尽事件可以是以下任何事件:一个或多个安全模块针对所述任何事件丢失或耗尽其分配。作为一个实例,安全模块可使用其对针对由特定keyid标识的密钥的操作的分配,并且检测耗尽事件可包括从安全模块接收通知:安全模块已经通过执行对应次数的操作而耗尽其针对keyid的分配(或在耗尽其分配的某个预定阈值内或以其他方式被预测很快耗尽其分配)。作为另一个实例,在一些实施方案中,安全模块被配置来在特定事件如发生故障、检测到入侵或其他篡改时,或当操作者需要访问安全模块以便维护时,丢失对存储在其中的密钥(以及与密钥关联的数据,如计数器)的访问权。因此,耗尽事件可包括由于发生故障或检测到篡改/入侵或意向性动作(如暂时停用安全模块以便维护)而丢失(可能地暂时地)安全模块。在这个实例中,安全模块可被视为好似其用尽其分配,即使其未必执行所分配次数的操作。然而,应注意,在特定实施方案中,如在计数器被持久存储并且因此即使丢失对对应密钥的访问权时也可恢复时,所有此类事件可不包括耗尽事件。还应注意,耗尽事件可影响多于一个安全模块。例如,影响数据中心中的多个安全模块的停电可导致影响多个安全模块的耗尽事件。

在检测到耗尽事件之后,可做出2710计数器是否超过针对与耗尽事件关联的任何密钥的阈值的确定。阈值可以是操作的预定次数,所述预定次数至少部分地基于用于执行密码操作的加密法的数学性质。例如,对于使用cbc模式的加密法,操作的次数可或另外可至少部分地基于密钥空间的大小除以以下各项的平方的乘积:(1)以块表达的密文的长度;以及(2)密文的数量。对于使用ctr模式的加密法(如aes-gcm),操作的次数可或另外可至少部分地基于密钥空间的大小除以以下各项的乘积:(1)块中的密文的长度的平方;以及(2)密文的数量。如果确定2710计数器超过针对受耗尽事件影响的任何密钥的阈值,则过程2700可包括:由于操作分配已被耗尽而命令2712一个或多个安全模块(即,与耗尽事件关联的一个或多个安全模块)获取针对其操作的分配已经耗尽的一个或多个新密钥并且用新密钥替换受影响密钥。例如,如果安全模块暂时离线(从而引起耗尽事件)并且因此引起针对keyid(但不必是所有keyid)的计数器超过阈值,则可命令安全模块获取新密钥,如上所述(例如,通过生成新密钥、从数据存储装置访问预先生成的密钥或从另一个安全模块获取新密钥)。然而,应注意,可命令不同于受耗尽事件影响的安全模块的安全模块获取新密钥,如当使一个安全模块离线并且使新安全模块在线时。用新密钥替换受影响密钥(由keyid标识)可包括:将受影响密钥标记为停用、使新密钥与keyid(例如,在数据库中)关联、以及将新密钥标记为现用。用新密钥替换受影响密钥还可包括:重新初始化用于新密钥的计数器(由用新密钥替换受影响密钥的安全模块维持),计数器可以是预编程值或可以是从执行过程2700的系统获取的值。过程2700还可包括将受影响密钥标记2714为停用并且将新密钥标记为现用,如通过相应地更新数据库。应注意,执行过程2700的系统不可访问受影响密钥和/或新密钥,并且因此将受影响密钥标记为停用并且将新密钥标记为现用可包括视情况使密钥的标识符与指示为停用或新的值关联。

在实施方案中,在标记2714之后,如果确定2710受影响密钥都不具有超过阈值的计数器,则过程2700可包括针对仍现用的受影响密钥和/或由于执行过程2700的操作而获取的任何新密钥分配2716另外的密钥操作。在分配另外的密钥操作之后,可更新2704适当的密钥使用计数器,如上所述。

与本文描述的所有过程一样,变体被认为是在本公开的范围内。例如,在一些实施方案中,安全模块不追踪它们对密钥的使用,但密码服务系统的另一个组件或其他服务系统更新用于被提交给任何安全模块的每个请求的密钥的计数器,每个请求为使用密钥执行一个或多个操作。在此类实施方案中,对于多个密钥中的每个密钥,安全模块的组件可追踪使用密钥来执行操作的请求(或追踪所执行的操作,例如,通过请求已成功完成的确认或其他指示),以便相应地更新密钥的计数器。当计数器达到阈值时,维持计数器的系统可使得所有适当的安全模块停用密钥并且用新密钥替换密钥(或执行使得密钥被停用的一些其他操作,如使得具有密钥的安全模块停用密钥、以及使得一个或多个其他安全模块开始使用新密钥)。作为在本公开范围内的变体的另一个实例,在一些实施方案中,当安全模块使用其对密钥操作的分配并且使得计数器超过阈值时,安全模块可被命令获取新密钥,如上所述。其他安全模块可继续使用密钥、直到它们用尽它们的分配。当安全模块用尽其分配时,安全模块可获取已经替换安全模块中的使得计数器超过阈值的密钥的新密钥。换句话说,可允许安全模块在必须获取新密钥之前用尽它们对密钥操作的分配。

图28示出用于维持对密钥使用的追踪的数据库的说明性实例表示。数据库可由适当的系统、如执行过程2700的系统维持。在所示数据库中,各栏分别对应于keyid、密钥版本、可用性和计数器。keyid和密钥版本可以是如上所述。可用性栏中的值可指示密钥是停用还是现用(或密钥是否具有另一种状态,如果本公开的各种实现方式支持此类其他状态)。如图28所示,数据库具有用于由keyid标识的密钥的每个版本、包括所有停用版本和现用版本的列。然而,应注意,数据库可能缺少密钥的所有版本。例如,密钥可因各种安全原因而从存储装置永久地移除。移除可依据例如客户请求或策略的强制实施。

如图28所示,所示数据库还包括用于每个现用密钥的计数器。此外,在此特定实例中,数据库包括用于闲置密钥的计数器(例如,示出超过阈值、从而导致获取新密钥的每个密钥的值)。然而,在一些实施方案中,可能不保留用于闲置密钥的计数器值。计数器可由在密钥操作被分配给安全模块时维持数据库的系统更新。一旦计数器列中的值超过阈值,就可将新列添加到数据库,从而容纳新密钥以替换计数器值超过阈值的密钥。

安全模块可出于它们自己的目的而维持类似数据库。例如,安全模块可追踪其自己对密钥的使用,并且当安全模块对密钥的使用耗尽分配给安全模块的次数时,安全模块可通知密码服务系统(或使用安全模块的其他服务系统)的密钥轮换管理组件,所述密钥轮换管理组件可例如执行如上文描述的过程2700的过程,以便如果适用于密钥的密钥操作次数已经耗尽,则将另外的操作重新分配给安全模块或使得安全模块获取新密钥。

用于追踪密钥使用的数据库可不同于图28中所示且上文所描述的数据库。例如,另外信息可包括在数据库中,如与密钥关联的元数据,如生成时间、停用时间、关于密钥被用于的客户的信息和/或在各个实施方案中可能有用的其他信息。此外,虽然出于说明目的提供关系表,但可使用支持各个实施方案的其他存储数据的方式。

用于强制实施策略的信息可由密码服务系统以不同的方式获取。图29示出可实践本公开的各个实施方案的环境2900的说明性实例。环境2900的组件可包括如上文论述的那些组件。例如,如图所示,环境2900包括用户,所述用户通过用户装置与数据服务前端系统(数据服务前端)交互,但被配置来与数据服务前端交互的任何计算机系统可代替用户。此外,如图所示,环境包括可如上所述的数据服务后端存储系统和认证服务系统。另外,环境包括密码服务系统,在图29中,所述密码服务系统被标记为内部密码服务系统,以便与在图中标记为外部密码服务系统的另一个密码服务系统区分。内部和外部密码服务系统中的一个或两个可像如上所述的密码服务一样进行操作。与本文描述的所有环境一样,变体被视为是在本公开的范围内。例如,尽管图29示出用户与数据服务前端通信,但在无数据服务前端的情况下,用户可与的密码服务系统通信,如上所述。

环境2900中还包括消息服务系统,在实施方案中,消息服务系统是计算机系统(例如,计算机或计算机网络),其被配置来响应于来自内部密码服务系统的请求,至少向可由账户表示的一个或多个订户发布消息。如下文更详细论述的,一些请求可触发环境2900中的组件进行操作,以便使用消息服务系统来传输关于请求的消息。例如,一些数据可以在具有关联策略的密钥下被加密的方式来存储,所述关联策略为:对解密请求的响应必须延迟规定时间量。如果提交对数据进行解密的请求,则策略的强制实施可导致延迟响应并且导致由消息服务系统发送通知。以此方式,在延迟期间,监视消息的用户或计算机系统可有机会提交取消解密请求的请求或以其他方式使得解密请求被取消。消息服务系统可使用一种或多种技术来向一个或多个订户传输消息,技术包括但并不限于:电子邮件、短消息服务(sms)、电话、传呼、传真和/或可用于从消息服务系统向另一个实体传输信息的任何合适的技术。

如图29所示,向数据服务前端提交的请求可包括密钥访问注释。例如,如图所示,由用户提交的get请求包括密钥访问注释。密钥访问注释可包括由环境2900的一个或多个组件强制实施策略所必需的信息。密钥访问注释可包括或以其他方式被提供使用密钥生成的电子签名。用于生成签名的密钥可以是用户与环境2900中强制实施策略的组件之间共享的密钥,或在利用公共密钥数字签名方案的一些实施方案中,密钥可以是用户的私人密钥,从而提供可用对应公共密钥验证的签名。环境2900中强制实施策略的组件可使用电子签名来验证密钥访问注释中的信息的可信性,并且可使用密钥访问注释中的信息来确定策略是否允许满足请求。

如图29所示,环境2900中若干组件中的任何组件可接收密钥访问注释并且使用密钥访问注释以便强制实施策略。例如,数据服务前端可向内部密码服务系统传递密钥访问注释连同可如上所述来使用的密文和授权证明。内部密码服务系统可使用密钥访问注释来验证关于由内部密码服务系统管理的密钥的策略。在一些实施方案中,密钥访问注释包括标识另一个服务系统、如外部密码服务的信息。在检测到标识外部密码服务系统的信息之后,内部密码服务系统可向外部密码服务系统提供密钥访问注释,外部密码服务系统可以是多个密码服务系统或其他服务系统中使用密钥访问注释的一个服务系统,尽管此类其他服务系统在图29中未示出。

如上文所论述,根据各个实施方案管理的密钥可与编码密钥的使用的限制条件和/或特权的策略关联。根据各个实施方案,与策略强制实施有关的其他信息也可与此类密钥关联。图30示出密钥3000(例如如上所述的由密钥服务系统管理的密钥)的说明性实例以及可被维持(例如,由密码服务系统)与密钥3000关联的示例性信息。如图所示,可维持编码用于密钥3000的一个或多个策略的策略信息与密钥3000关联,如上所述。在实施方案中,也可维持密钥集与密钥3000关联(例如,通过数据库或其他数据存储系统与密钥3000关联)。关联可以任何合适的方式来维持。例如,关系表或其他机构可直接使密钥3000与密钥集中的密钥相关。作为另一个实例,关系表或其他机构可使密钥3000与集中跟密钥3000关联的密钥的标识符和/或参考相关。

例如,在一些实施方案中,维持来自使用密钥集的一个或多个密钥和来自管理密钥集的一个或多个密钥与密钥3000关联。在实施方案中,密码服务系统被配置成使得在一些实施方案中,使用密钥集中的密钥对完成至少一些请求是必需的。具体地,在一些实施方案中,对于使用由keyid标识的密钥来执行操作的请求来说,可能地除其他方面之外,完成请求可能要求密钥访问注释由对应于使用密钥集中的密钥的密钥(例如,使用密钥集中的任何密钥,或使用密钥集中由密钥访问注释指定或以其他方式与密钥访问注释有关的密钥)电子地(即,数字地)签名。如果这种签名不存在,则可拒绝请求。对应于使用密钥集中的密钥的密钥可以是使用密钥集中的密钥或其参考内容,或可以是对应于使用密钥集中的公共密钥的私人密钥(其中公共密钥和私人密钥用于公共密钥数字签名方案中)。

在实施方案中,管理密钥集中的密钥用于修改与密钥3000关联的密钥集的目的。例如,在一些实施方案中,为了完成修改使用密钥集或管理密钥集(或两者)的请求,可能需要使用对应于管理密钥集中的密钥的密钥的电子签名。修改可包括将密钥添加到密钥集、从密钥集移除密钥、将用密钥集中的密钥替换为另一个密钥、重新使密钥集中的密钥与另一个实体关联和/或其他修改。换句话说,修改使用密钥集和/或管理密钥集需要管理密钥的访问证明。管理密钥还可以类似方式用于其他目的,如用于修改适用于密钥3000的策略和/或其他管理动作。如图30所示,密钥3000还可与操作位掩码关联。信息位掩码可以是编码密钥3000可用于的操作集的信息,但这种信息可通过策略编码。

使用与由安全模块管理的密钥关联的各种密钥集提供众多技术优点。例如,参照图30,如果与密钥3000关联的密钥集中的密钥泄露,则可修改密钥集以便在无需改变密钥3000的情况下针对数据不安全进行保护。作为另一个实例,可使用第三方密钥,使得无单个实体可访问密文和对密文进行解密所需的密钥两者,从而需要实体之间的共谋来访问明文。

图31示出根据实施方案的示例性密钥访问注释3100的说明性表示。在图30中,密钥访问注释3100包括与强制实施策略相关的信息,所述策略与密钥访问注释针对其而被包括的请求有关。在这个实例中,密钥访问注释包括时间戳(timestamp)、和操作描述符(operationdescriptor)、密钥持有者标识符(keyholderid)、keyid和来自使用密钥集或管理密钥集的密钥的标识符,但可包括更少或更多的信息。

在实施方案中,密钥访问注释3100中的信息用于确定是否可完成请求。具体地,在一些实施方案中,密钥访问注释3100中的信息必须满足完成请求的一个或多个条件(除了存在必需的电子签名之外)。例如,在一些实施方案中,时间戳必须指示在接收请求时的某一阈值时间量内的时间。作为另一个实例,密钥访问注释必须在操作计数窗口内,必须授权与特定数据段有关的特定操作,或必须以其他方式满足由已经接收密钥访问注释的实体所强制实施的一个或多个条件。

根据本公开的各个实施方案,keyholderid可实现联合密钥管理。例如,参照图29,keyholderid可以是标识由keyid指定的密钥或以其他方式使得能够标识所述密钥的信息。keyholderid可以是例如统一资源定位符(url)、互联网协议(ip)地址、或使得能够使用keyholderid来向对应实体提供密钥访问注释(例如,通过转发包括注释的请求)的其他信息。在一些实施方案中,keyholderid编码在keyid中,使得请求的接收者可提取keyholderid,并且如果适当的话,向适当的第三方转发请求。例如,环境2900的内部密码服务系统可被配置来检测请求的keyholderid是否指定不同实体,并且在检测到keyholderid指定不同实体之后,向所述不同实体转发请求(或至少部分地基于请求的其他信息),所述不同实体可以是如上所述的外部密码服务系统(例如,不同计算资源提供者的密码服务系统)。不同实体可利用本公开的各个实施方案来确定是否响应请求,并且如果适用,则提供对请求的响应,对请求的响应可通过密码服务系统提供。如果密钥访问注释缺少keyholderid(或keyholderid指定内部密码服务系统),则内部密码服务系统可自己完成请求,假设遵从完成请求的策略和其他先决条件。

图32示出过程3200的说明性实例,过程3200可用于强制实施与结合密钥访问注释提交的请求有关的策略。过程3200可由任何合适的装置来执行,如参与请求处理的密码服务系统的装置(例如,实现用于密码服务系统的前端api的装置)。密码服务系统可以是如上所述的内部或外部密码服务系统。

在实施方案中,过程3200包括接收3202与请求有关的密钥访问注释。密钥访问注释可以是包括在请求内的注释,或可以其他方式来接收。例如,可处理具有密钥访问注释的请求,并且作为处理的一部分,可向执行过程3200的装置(或其变体)提供密钥访问注释。在实施方案中,一旦接收密钥访问注释,过程3200就包括使用3204注释来生成如上所述的参考签名。可做出3206参考签名是否匹配注释的签名的确定。应注意,在替代实施方案中,过程3200包括向安全模块提供具有以下信息的密钥访问注释:使得安全模块能够生成参考签名并且检查参考签名是否匹配密钥访问注释的签名。换句话说,确定密钥访问注释的签名是否有效可通过从安全模块获取这种确定来执行。

如果确定3206参考签名匹配注释的签名,则过程3200可包括访问3208与请求中所指定的keyid关联的任何策略。假设针对keyid存在策略,过程3200包括确定3210所访问策略是否允许完成请求。如果确定3210策略允许完成请求,则过程3200可包括确定3212keyholderid(如上所述)是否标识外部实体。确定3212keyholderid是否标识外部实体可根据各个实施方案以各种方式来执行。例如,密钥访问注释中缺少keyholderid可指示否定确定,而密钥访问注释中存在keyholderid可指示肯定确定。作为另一个实例,keyholderid可以是指示内部实体(例如,内部密码服务系统)或外部实体(例如,外部密码服务系统)的所需值。

如果确定3212keyholderid不标识外部实体,则过程3200可包括完成3214请求,如上所述。然而,如果确定3212keyholderid标识外部实体,则过程3200可包括向所标识外部实体转发3216请求,并且作为响应,接收3216使得能够完成请求的信息。信息可以是例如通过由外部实体对密文进行解密所获取的明文和/或至少部分地基于由外部实体执行的密码操作的信息。尽管并未示出,但另外或替代地还可接收其他信息。例如,如果外部实体独立地确定不允许完成请求(例如,因为由外部实体强制实施的策略不允许完成请求),则可提供指示拒绝的信息。假设接收3216使得能够完成请求的信息,过程可包括完成3214请求,如上所述。例如,可向请求者提供所接收的使得能够完成请求的信息。

除了上文明确描述的那些之外的变体也被视为是在本公开的范围内。例如,针对请求,图32示出验证电子签名和策略并且随后向外部实体转发请求(或至少部分地基于请求的信息)。与本文所示的所有过程一样,操作的顺序可变化。例如,可修改过程3200,使得请求在任何签名和/或策略验证发生之前被转发。除了或替代执行过程3200的系统,外部实体可执行签名和/或策略验证。例如,在一些实施方案中,执行过程3200的操作的系统不执行签名和/或策略验证,而是将此类验证留给外部实体。在其他实施方案中,执行过程3200的操作的系统执行签名和/或策略验证,并且外部实体执行另外的签名和/或策略验证。例如,外部实体替代地可具有在完成请求之前被检查的不同密钥和/或不同策略。

本公开的实施方案还利用提供增强数据安全性的技术。例如,尽管尽了最大努力,但通常会出现与各种系统有关的安全漏洞。为了减轻此类漏洞的影响,本公开的各个实施方案允许以提供时间来检测漏洞并且相应地做出响应的方式进行请求处理。例如,在一些实施方案中,已加密数据的解密和/或对已解密数据访问需要延迟。例如,系统的配置或由系统强制实施的策略可能需要延迟,其中策略根据本文描述的各个实施方案被配置)。此类延迟可能在以下情况下有用:其中不必快速访问已加密数据,如其中调控或其他要求需要特定数据被存档、但数据不必立即可用。

图33示出根据各个实施方案的用于提供这种延迟的过程3300的说明性实例。过程3300可由密码服务系统执行,例如如上所述的内部或外部密码服务系统。在实施方案中,过程3300包括接收3302使用由keyid标识的密钥对密文进行解密的请求。请求可以任何合适的方式来接收。例如,请求可从用户或从数据服务系统接收,如上所述。在实施方案中,访问3304与keyid关联的策略。然而,应注意,在一些实施方案中,策略可自动地被强制实施,并且因此,在一些实现方式中策略不可被访问。参照图33所示的实施方案,过程3300包括确定3306策略是否允许完成请求。确定3306策略是否允许完成请求可以任何合适的方式来执行,如上所述。

如果确定3306所访问策略允许完成请求,则过程3300可包括检测3308一个或多个所访问策略之间的时间延迟策略。然而,如上所述,在一些实施方案中,时间延迟可能是自动的,并且因此检测到这种策略可能不会发生。过程3300可包括启动3310定时器并且执行警报过程。定时器可以是为确定时间量的定时器,在一些实施方案中,确定时间量是可例如被配置为时间延迟策略的一部分的可配置的量。定时器还可被预先确定到用于执行过程3300的系统的系统配置设置中。警报过程可包括执行被配置来引起进行各种警报动作的工作流。警报动作可包括例如:引起通知系统(如上所述)向一个或多个个体或系统传输一个或多个消息。例如,可通知与已加密数据关联的组织的合规官员。作为另一个实例,警报动作可包括引起审计系统执行增强的审计,在增强的审计中,例如收集更多与对系统的各种访问有关的信息。在一些实施方案中,警报动作还可包括发警报信号,其可包括警报的可听和/或可见指示。其他警报动作被视为是在本公开的范围内。

在启动定时器之后,过程3300可包括执行定时器是否已期满的检查3312,直到做出3312定时器实际上已期满的确定。在一些实施方案中,请求可在其完成之前被取消。与对信息进行解密的请求相比,取消请求可能需要较不严格的要求。例如,在一些实施方案中,请求可由可访问系统的任何人容易地取消。作为另一个实例,在一些实施方案中,警报动作可包括传输包括超链接的消息,当被选择时,超链接使得取消请求的请求被取消,而无需由消息接收者认证。也可使用使得请求能够被取消的其他方法。因此,在实施方案中,一旦定时器已期满(或在其他时间,如在定时器期满之前),可做出3314请求是否已被取消的确定。如果确定3314请求已被取消,则过程3300可包括完成3316请求,例如,通过使用由keyid标识的密钥对密文进行解密并且提供所得的明文,或通过引起安全模块对密文进行解密并且提供对应明文,并且随后向请求者传送明文或以其他方式提供对明文的访问。然而,如果确定3314请求未被取消和/或如果确定3306策略不允许完成请求,则过程3300可包括拒绝请求,如上所述。

许多其他变体都在本公开的范围内。例如,在一些实施方案中,密钥与以下策略关联:指定生效日期或以其他方式指示非无限的某一确定的有效性周期。例如,在一些实施方案中,密钥可与以下策略关联:指定在一定时间量之后、在一定日期或以其他方式在满足一个或多个条件时摧毁密钥。作为实例,组织和/或政府故障、法律、政策或规定可指定数据应被保留一定时间量。关于用于对这种数据进行加密的密钥(例如,在加密法中用于对数据进行加密的密钥,或在加密法中用于对数据在其下被加密的另一个密钥进行加密的密钥)的策略可指定在经过所要求时间量时应摧毁密钥(即,使得密钥不可撤回地不可被任何人访问)。密码服务系统或其他系统可检测所要求时间量的流逝并且相应地摧毁密钥。密码服务系统可以多种方式检测所要求时间量的流逝。例如,在一些实施方案中,密码服务系统维持将指示密钥摧毁的时间的信息存储在其中的数据库。由密码服务系统执行的周期性程序可摧毁数据库中被指示为可摧毁的密钥。

还可以其他方式使用策略生效日期。例如,强制实施以用于对数据进行解密的时间延迟可随着时间的流逝而改变。例如,随着在密钥下加密的数据时间的增长,强制实施以用于对数据进行解密的时间延迟可减少。作为另一个实例,当事人仅在指定时间段内具有使用密钥执行密码操作的特权,指定时间段可以是通过密码服务系统的api可继续的。以此方式,个体引起结合密钥执行密码操作的能力可自动期满。

在一些实施方案中,除了或替代对密文进行解密的请求,可出于其他目的做出请求。例如,上文描述的各种技术可适用于各种类型的策略强制实施。例如,结合本公开的各个实施方案利用的策略可利用针对策略的生效时间。策略更新可具有生效时间,生效时间指示当策略更新在强制实施策略的系统中生效时的未来时刻。现有策略可能要求在特定条件下可允许一些或所有策略变化,特定条件之一是策略更新具有生效时间,生效时间是到未来的特定时间量(例如,48小时)。可做出改变策略以允许检索数据的请求,检索数据可包括对数据进行解密。请求可以是例如削弱在可检索数据之前需要满足的条件的请求。请求可指定针策略变化的生效时间。强制实施策略的系统可至少部分地基于生效时间是否遵从现有策略来批准或拒绝请求,所述策略与所述策略所应用于的当事人有关。如果系统批准策略变化,系统可启动定时器(其可至少部分地基于生效时间)并且执行警报过程,如上所述。此外,策略变化可以是在完成请求之前可取消的,如上所述。以此方式,相关方可被提供通知并且有机会阻止对数据的未授权访问。

可鉴于以下条款对本公开的各个实施方案进行描述:

1.一种计算机实现的方法,其包括:

在被配置有可执行指令的一个或多个计算机系统的控制下,

接收到计算资源提供者的服务系统的请求,所述请求为使用由所述请求指定的密钥对密文进行解密,所述请求满足对于完成所述请求足够的一个或多个条件的集;

在所述请求待决期间的某个时刻,向对应所述密钥的客户的一个或多个计算机系统传输关于所述请求的一个或多个通知;

使得能够在所述请求的待决期间中断所述请求;

对所述密文进行解密以获取明文;以及

作为至少预定时间量已经流逝和所述请求未被中断的结果而提供所述明文。

2.如条款1所述的计算机实现的方法,其中所述预定时间可由所述客户配置。

3.如条款1或2所述的计算机实现的方法,其中传输所述一个或多个通知包括向被指定来接收通知的一个或多个个体发送电子消息。

4.如前述条款中任一项所述的计算机实现的方法,其中满足对于中断所述请求足够的一个或多个条件对于完成所述请求是不足够的。

5.如前述条款中任一项所述的计算机实现的方法,其还包括,由于所述请求,执行与所述密文有关的另外审计功能。

6.如前述条款中任一项所述的计算机实现的方法,其中:提供所述明文包括在提供所述明文时强制实施延迟;以及传输所述一个或多个通知,并且强制实施所述延迟作为对应于所述密钥的策略的配置的结果而执行。

7.一种计算机实现的方法,其包括:

在被配置有可执行指令的一个或多个计算机系统的控制下,

接收访问明文的已认证请求,所述已认证请求的完成需要一个或多个密码操作;

处理所述请求,使得要求在提供对应于完成所述请求的对所述请求的响应之前有预编程延迟;以及

在所述延迟之后提供对所述请求的响应。

8.如条款7所述的计算机实现的方法,其中所述一个或多个密码操作包括对密文进行解密。

9.如条款7或8所述的计算机实现的方法,其中所述一个或多个密码操作包括生成电子签名。

10.如条款7至9中任一项所述的计算机实现的方法,其中由于对应于用于对密文进行解密的密钥的策略而要求所述预定延迟。

11.如条款7至10中任一项所述的计算机实现的方法,其还包括向有权中断所述请求的一个或多个实体发送关于所述请求的一个或多个通知。

12.如条款11所述的计算机实现的方法,其还包括使得能够在所述延迟期间中断所述请求。

13.如条款7至12任一项所述的计算机实现的方法,其中除非所述请求被中断,否则所述请求被认证对于引起提供所述响应是足够的。

14.如条款7至13中任一项所述的计算机实现的方法,其还包括由于所述请求而引起增强的审计。

15.一种计算机系统,其包括:

一个或多个处理器;以及

包括指令的存储器,当由所述一个或多个处理器执行时,所述指令引起所述计算机系统:

检测与来自请求者的访问数据的已认证请求有关的触发事件,其中访问所述数据需要执行一个或多个密码操作;并且

由于检测到所述触发事件,使得在所述请求者可访问所述数据之前流逝预编程时间量,在所述时间量的流逝期间,所述请求可由不同于所述请求者的实体中断。

16.如条款15所述的计算机系统,其中:

所述系统还包括消息传递子系统;并且

所述指令进一步引起所述计算机系统使得所述消息传递子系统传输关于所述请求的通知。

17.如条款15或16所述的计算机系统,其中所述触发事件是关于所述一个或多个密码操作所需要的密钥的策略。

18.如条款15至17中任一项所述的计算机系统,其中:

所述计算机系统由计算资源提供者托管;并且

所述请求由所述计算资源提供者从所述计算资源提供者的客户接收。

19.如条款18所述的计算机系统,其中所述预定时间量可由所述客户配置。

20.如条款15至19中任一项所述的计算机系统,其中所述指令进一步引起所述计算机系统执行所述一个或多个密码操作。

21.一种或多种计算机可读介质,其具有共同地存储在其上的指令,当由计算机系统的一个或多个处理器执行时,所述指令引起所述计算机系统:

检测与来自请求者的访问数据的已认证请求有关的触发事件,其中访问所述数据需要执行一个或多个密码操作;并且

由于检测到所述触发事件,引起所述请求在一定时间量内可由不同于所述请求者的实体中断。

22.如条款21所述的一种或多种计算机可读存储介质,其中所述时间量为预定时间量。

23.如条款21或22所述的一种或多种计算机可读存储介质,其中所述指令进一步引起所述计算机系统使得向另一个计算机系统传输关于所述请求的一个或多个通知。

24.如条款21至23中的任一条款所述的一种或多种计算机可读存储介质,其中:

所述一个或多个密码操作使用密钥;并且

所述触发事件是要求所述请求在所述时间量内可取消的针对所述密钥的策略。

25.如条款21至24中任一项所述的一种或多种计算机可读存储介质,其中:

所述请求的有效性要求满足一个或多个条件;并且

在所述一个或多个条件中的至少一个未满足的情况下,取消所述请求是可能的。

26.如条款21至25中任一项所述的一种或多种计算机可读存储介质,其中所述指令进一步引起所述系统通知被指定来接收关于访问所述数据的请求的通知的一个或多个个体。

27.如条款21至26中任一项所述的一种或多种计算机可读存储介质,其中访问所述数据的所述请求是以下请求,所述请求为使用由所述请求指定的密钥对密文进行解密。

28.一种系统,其包括:

一个或多个处理器;以及

包括指令的存储器,当由所述一个或多个处理器执行时,所述指令引起所述系统:

接收请求,所述请求是针对将在由所述请求指示的时间生效的策略;至少部分地基于所述指示的时间,确定所述请求的完成是否遵从当前生效的策略;

在接收到所述请求与所述指示时间之间的某一时间,使得将被接收的另一个请求能够中断所述请求。

29.如条款28所述的系统,其中所述请求是改变访问数据所需满足的一个或多个条件。

30.如条款28或29所述的系统,其中所述策略对应于由密码服务系统管理的密钥并且指示所述密码服务系统执行一个或多个密码操作所需满足的一个或多个条件。

31.如条款28至30中任一项所述的系统,其中所述指令进一步引起所述系统:由于接收所述请求,向各自有权中断所述请求的一个或多个实体传输一个或多个通知。

其他变化也应在本发明的范围内考虑。例如,在一些实施方案中,数据存储系统可具有针对请求处理的固有延迟,所述固有延迟足以提供取消请求的时间和/或另外避免潜在的安全漏洞。例如,档案数据存储系统可使用异步请求处理,其中响应请求的数据可在提交所述请求后的数小时有效。此外,响应请求的数据可在不同时间量后有效,所述时间量可取决于如系统的因素。通过这样的系统,由于所述固有延迟,定时器可为多余的。

图34示出用于实现根据各个实施方案的各方面的示例性环境3400的各方面。如将了解,尽管出于解释目的使用基于网络的环境,但是可视情况使用不同环境来实现各个实施方案。环境包括电子客户端装置3402,电子客户端装置3402可包括可操作来在适当网络3404上发送和接收请求、消息或信息并且将信息传送回装置用户的任何适当装置。此类客户端装置的实例包括个人计算机、手机、手持式消息传递装置、膝上计算机、机顶盒、个人数据助理、电子书阅读器等等。网络可包括任何适当网络,包括内部网、互联网、蜂窝网、局域网或任何其他此类网络或上述网络的组合。此类系统所用的组件可以至少部分地取决于所选网络和/或环境的类型。用于通过此类网络通信的协议和组件是众所周知的,因而本文不再详细论述。网络上的通信可通过有线或无线连接及其组合来实现。在这个实例中,网络包括互联网,因为环境包括用于接收请求并且响应于所述请求而提供内容的网络服务器3406,然而对于其他网络来说,可使用服务类似目的的替代装置,如本领域技术人员所显而易见的。

所示环境包括至少一个应用程序服务器3408和数据存储器3410。应当理解,可以存在可以链接起来或以其他方式来配置的若干应用程序服务器、层或其他元件、过程或组件,所述应用程序服务器、层或其他元件、过程或组件可交互来执行如从适当数据存储器获取数据的任务。如本文所使用的,术语“数据存储器”指代能够存储、访问和检索数据的任何装置或装置组合,所述装置的装置组合可包括任何标准、分布式或集群式环境中的任何组合和任何数目的数据服务器、数据库、数据存储装置和数据存储介质。应用程序服务器可包括任何适当硬件和软件,所述硬件和软件视执行客户端装置的一个或多个应用程序的各方面的需要而与数据存储器集成、处置应用程序的大多数数据访问和业务逻辑。应用程序服务器提供与数据存储器协作的存取控制服务,并且能够生成将要传送到用户的内容、如文本、图片、音频和/或视频,在这个实例中,所述内容可以超文本标记语言(“html”)、可扩展标记语言(“xml”)或另一种适当结构化语言的形式由网络服务器向用户提供。所有请求和响应的处置以及客户端装置3402与应用程序服务器3408之间的内容递送可由网络服务器来处置。应当理解,网络服务器和应用程序服务器不是必要的,且仅仅是示例性组件,因为本文所论述的结构化代码可在如本文其他地方所论述的任何适当装置或主机上执行。

数据存储器3410可包括若干单独的数据表、数据库或其他数据存储机构和介质,用来存储与特定方面相关的数据。举例来说,所示数据存储器包括用于存储生成数据3412和用户信息3416的机构,生成数据3412和用户信息3416可用于提供用于生成端的内容。数据存储器还被示出为包括用于存储日志数据3414的机构,所述日志数据3414可用于报告、分析或其他此类目的。应当理解,可能存在可能需要存储在数据存储器中的许多其他方面,如页面图像信息和访问权信息,所述方面可视情况存储在上文所列机构中的任何机构中或存储在数据存储器3410中的另外机构中。数据存储器3410可通过与它关联的逻辑来操作,以便从应用程序服务器3408接收指令,并且响应于所述指令而获取、更新或以其他方式处理数据。在一个实例中,用户可以针对某种类型的项目提交搜索请求。在此情况下,数据存储器可能访问用户信息来验证用户的身份,并且可访问目录详细信息以获取有关所述类型的项目的信息。接着可将信息如以网页上的结果列表的形式返回给用户,用户能够通过用户装置3402上的浏览器来查看所述网页。可在浏览器的专用页面或窗口中查看到感兴趣的特定项目的信息。

每个服务器通常将包括提供用于所述服务器的一般管理和操作的可执行程序指令的操作系统,并且通常将包括存储指令的计算机可读存储介质(例如,硬盘、随机存取存储器、只读存储器等),当由服务器的处理器执行时,所述指令允许服务器实行其期望的功能。操作系统和服务器一般功能的合适实现方式是已知的或可商购得的,并且本领域的普通技术人员,特别是根据本公开,较易实施这些方式。在一些实施方案中,操作系统可根据一个或多个验证制度如评估保证等级(eal)等级4来配置或在其下被验证。

在一个实施方案中,环境是利用通过通信链路、使用一个或多个计算机网络或直接连接来互连的若干计算机系统和组件的分布式计算环境。然而,本领域普通技术人员应理解,这种系统可在具有比图34所示的组件更少或更多组件的系统中同样顺利地操作。因此,图34中的系统3400的描绘本质上应视为说明性的,并且不限制本公开的范围。

各个实施方案可进一步在广泛范围的操作环境中实现,在一些情况下,所述环境可包括一个或多个用户计算机、计算装置或可用于操作多个应用程序中的任一个的处理装置。用户或客户端装置可包括多个通用个人计算机中的任何一个,如运行标准操作系统的台式计算机或膝上计算机,以及运行移动软件并且能够支持多个网络连接协议和消息传递协议的蜂窝装置、无线装置和手持式装置。这种系统还可包括多个工作站,所述工作站运行各种可商购得的操作系统和用于如开发和数据库管理等目的的其他已知应用程序中的任一个。这些装置还可包括其他电子装置,如虚拟终端、薄型客户端、游戏系统和能够通过网络通信的其他装置。

大多数实施方案利用本领域技术人员可能熟悉的至少一种网络来使用各种各样可商购得的模型和协议中的任一种支持通信,所述模型和协议如传输控制协议/互联网协议(“tcp/ip”)、开放系统互连(“osi”)、文件传送协议(“ftp”)、通用即插即用(“upnp”)、网络文件系统(“nfs”)、公共互联网文件系统(“cifs”)以及appletalk。网络例如可以是例如局域网、广域网、虚拟专用网、互联网、内部网、外联网、公共交换电话网、红外网络、无线网络以及上述网络的任何组合。

在利用网络服务器的实施方案中,网络服务器可以运行各种各样服务器或中间层应用程序中的任一种,包括超文本传输协议(“http”)服务器、ftp服务器、公共网关接口(“cgi”)服务器、数据服务器、java服务器和业务应用程序服务器。服务器还能够响应来自用户装置的请求而执行程序或脚本,如通过执行可以实施为以任何编程语言(如c、c#或c++)或任何脚本语言(如perl、python或tcl)以及其组合写成的一个或多个脚本或程序的一个或多个网络应用程序。服务器还可包括数据库服务器,包括但不限于可商购自的数据库服务器。

环境可包括如上文所论述的各种各样数据存储区以及其他存储器和存储介质。这些可驻留在各种各样位置,如在一个或多个计算机本地(和/或驻留在一个或多个计算机中)的存储介质上,或远离网络上的计算机中的任何或所有计算机。在实施方案的特定集中,信息可驻留在本领域技术人员熟悉的存储区域网(“san”)中。类似地,用于执行属于计算机、服务器或其他网络装置的功能的任何必要的文件可视情况本地或远程存储。在系统包括计算机化装置的情况下,这个这种装置可包括可通过总线电耦合的硬件元件,所述元件包括例如至少一个中央处理单元(“cpu”)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏或小键盘)和至少一个输出装置(例如,显示装置、打印机或扬声器)。这种系统还可包括一个或多个存储装置,如硬盘驱动器、光存储装置和如随机存取存储器(“ram”)或只读存储器(“rom”)的固态存储装置、以及可移动媒体装置、存储卡、闪存卡等。本公开的各个实施方案还可使用定制硬件来实现,所述定制硬件包括但不限于定制密码处理器、智能卡和/或硬件安全模块。

此类装置还可包括计算机可读存储介质读取器、通信装置(例如,调制解调器、网卡(无线或有线)、红外线通信装置等)和工作存储器,如上文所论述。计算机可读存储介质读取器可与计算机可读存储介质连接或被配置来接收计算机可读存储介质,计算机可读存储介质表示远程、本地、固定和/或可移动存储装置以及用于暂时和/或更永久地含有、存储、传输和检索计算机可读信息的存储介质。系统和各种装置通常还将包括位于至少一个工作存储器装置内的多个软件应用程序、模块、服务系统或其他元件,包括操作系统和应用程序,如客户端应用程序或网络浏览器。应当了解,替代实施方案可具有与上述实施方案不同的众多变体。例如,也可使用定制硬件,和/或特定元件可以在硬件、软件(包括可移植软件,如小程序)或两者中实现。此外,可以采用与如网络输入/输出装置的其他计算装置的连接。

用于含有代码或部分代码的存储介质和计算机可读介质可包括本领域已知或已使用的任何适当介质,包括存储介质和通信介质,如但不限于以用于存储和/或传输信息(如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术所实现的易失性和非易失性、可移动和不可移动的介质,包括ram、rom、电可擦可编程只读存储器(“eeprom”)、闪存或其他存储器技术、只读光盘驱动器(“cd-rom”)、数字通用光盘(dvd)或其他光学存储器、磁盒、磁带、磁盘存储装置或其他磁性存储装置,或可用于存储所需信息且可由系统装置访问的任何其他介质。基于本文所提供的公开内容和教义,本技术领域普通技术人员将了解实现各个实施方案的其他方式和/或方法。

因此,应在说明性意义而不是限制性意义上理解本说明书和附图。然而,将显而易见的是:在不脱离如在权利要求书中阐述的本发明的更宽广精神和范围的情况下,可以对其做出各种修改和改变。

其他变体也在本公开的精神内。因此,尽管所公开的技术可容许各种修改和替代构造,但在附图中已示出并且在上文中详细描述所示的其特定实施方案。然而,应当了解,并不旨在将本发明限制于所公开的一种或多种具体形式,相反地,旨在涵盖落在如所附权利要求书限定的本发明的精神和范围内的所有修改、替代构造和等效物。

在描述所公开实施方案的上下文中(尤其是在以下权利要求书的上下文中),术语“一个(a,an)”和“所述”以及类似指称对象的使用应解释为涵盖单数和复数两者,除非在本文另外地指示或明显地与上下文矛盾。术语“包含”、“具有”、“包括”和“含有”应解释为开放式术语(即,意味着“包括但不限于”),除非另外地注解。术语“连接的”应解释为部分地或全部地纳入在以下解释内:附接至或结合在一起,即使存在介入物。除非本文另外指明,否则本文中值范围的列举仅仅意图用作个别地表示属于所述范围的各单独值的速记方法,并且犹如本文个别描述地那样将各单独值并入到本说明书中。可按任何合适的顺序来执行本文所述的所有方法,除非本文另外指明或明显地与上下文矛盾。本文所提供的任何以及所有实例或示例性语言(例如,“如”)的使用仅意图更好地说明本发明的实施方案,并且除非另外要求,否则不会对本发明的范围施加限制。本说明书中的语言不应解释为将任何非要求的要素指示为实践本发明所必需。

本文中描述了本公开的优选实施方案,包括发明人已知用于执行本发明的最佳模式。阅读上述说明后那些优选实施方案的变体对于本领域的普通技术人员可以变得显而易见。发明人希望技术人员视情况采用此类变体,并且发明人意图以不同于如本文所特别描述的方式来实践本发明。因此,只要法律允许,本发明包括此处所附权利要求书中叙述的主题的所有修改和等效物。此外,除非本文另外指示或明显地与上下文矛盾,否则本发明涵盖其所有可能变体中的上述元素的任何组合。

本文所引用的所有参考文献、包括出版物、专利申请和专利据此以引用方式并入,其程度等同于每个参考文献单独地且具体地被表示为以引用方式并入本文并且以其全文在本文得以陈述。

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