基于参数的密钥推导的制作方法

文档序号:6496653阅读:198来源:国知局
基于参数的密钥推导的制作方法
【专利摘要】本发明公开了用于从认证方与认证者之间共享的秘密证书认证产生密钥的系统和方法。密钥的产生可以涉及利用专业信息,其由于用来产生密钥而使所产生的密钥可用的使用范围小于秘密证书。此外,密钥产生可以涉及函数的多次调用,其中所述函数的调用的至少子集中的每个产生密钥,所述密钥具有小于从所述函数的先前调用产生的密钥的可允许使用范围。所产生的密钥可以用作签名密钥以签名消息。取决于消息和/或提交消息的方式是否遵守密钥使用的限制,可以采取一个或多个行动。
【专利说明】基于参数的密钥推导
[0001]相关申请的交叉参考
[0002]本申请主张以下各专利申请的优先权:2011年9月29日提交,名为“PARAMETERBASED KEY DERIVATION” 的第 13/248,962 号(代理人档案号 90204-813889 (029400PC))美国专利申请;2011 年9 月 29 日提交,名为 “TECHNIQUES FOR CLIENT CONSTRUCTEDSESSIONS”的第13/248,953号(代理人档案号90204-818478 (032300US))美国专利申请;以及 2011 年 9 月 29 日提交,名为 “KEY DERIVATION TECHNIQUES” 的第 13/248,973 号(代理人档案号90204-813890 (029500US))美国专利申请,所述申请的全部公开以引用的方式并入本文。
[0003]背景
[0004]计算环境采用许多形式。作为实例,组织常常利用计算装置网络为其用户提供一组稳定服务。网络常常跨越多个地理边界且常常与其它网络连接。例如,组织可以使用计算资源的内部网络和由其它组织管理的计算资源两者支持其操作。例如,组织的计算机可以与其它组织的计算机通信以在使用另一组织的服务时访问和/或提供数据。在许多情况中,组织使用由其它组织管理的硬件来配置和操作远程网络,从而减少基础设施成本并且获得其它优点。
[0005]虽然已经证明多样的计算环境有用于各种应用,但是这些环境存在许多挑战。例如,配置计算机资源以促成一个组织目标可能不利影响另一组织目标的促成。例如,计算资源安全的有效管理可能常常以有效访问数据和服务为代价。平衡安全和效率的目标可能极具挑战性,这常常需要重大努力和资源。
[0006]附图简述
[0007]图I示出了根据至少一个实施方案的可用于实施本公开的各个方面的计算环境的说明性实例。
[0008]图2示出了根据至少一个实施方案的包括管理多个故障区的计算资源供应商的环境的说明性实例。
[0009]图3示出了根据至少一个实施方案的图2的故障区内部的环境的说明性实例。
[0010]图4示出了根据至少一个实施方案的可用于支持环境(如图3中示出的环境)的计算资源配置的说明性实例。
[0011]图5是根据至少一个实施方案的示出其中参与计算环境的各个元件可被分配不同范围的授权的示例性方式的图。
[0012]图6是根据至少一个实施方案的示出可以在消息签名验证过程中在参与者之间传递信息的示例性方式的图。
[0013]图7是根据实施方案的示出了用于签名消息的过程的说明性实例的流程图;
[0014]图8是根据至少一个实施方案的示出了用于签名验证的过程的说明性实例的流程图;
[0015]图9是根据至少一个实施方案的示出了分配密钥的示例性方式的图;
[0016]图10是根据至少一个实施方案的示出了以提供各种授权范围的方式分配密钥的示例性方式的图;
[0017]图11是根据至少一个实施方案的示出了密钥导出的过程的说明性实例的流程图;
[0018]图12是根据至少一个实施方案的示出了多重限制密钥导出的图;
[0019]图13是根据至少一个实施方案的用于导出签名的函数的说明性实例;
[0020]图14是根据至少一个实施方案的可以如何执行并使用多密钥导出的说明性实例;
[0021]图15是根据至少一个实施方案的示出了其中可以导出密钥的示例性方式的图;
[0022]图16是根据至少一个实施方案的示出了其中可以导出密钥的另一示例性方式的图;
[0023]图17是根据至少一个实施方案的示出了其中可以导出密钥的又一示例性方式的图;
[0024]图18是根据至少一个实施方案的示出了用于启动会话的过程的说明性实例的流程图;
[0025]图19是根据至少一个实施方案的示出了用于产生会话密钥的过程的说明性实例的流程图。
[0026]图20是根据至少一个实施方案的示出了用于在会话期间获得对一个或多个计算资源的访问的过程的说明性实例的流程图;
[0027]图21是根据至少一个实施方案的示出了用于确定是否授予请求访问一个或多个计算资源的过程的说明性实例的流程图;
[0028]图22是根据至少一个实施方案示出了用于委托授权的过程的说明性实例的流程图;
[0029]图23是根据至少一个实施方案的表示多次授权委托的说明性实例的图;
[0030]图24是表示其中可以使用来自多次授权的密钥导出密钥的方式的说明性实例的图。
[0031]详述
[0032]在以下描述中将描述各个实施方案。出于解释的目的,陈述具体配置和细节以提供对实施方案的透彻理解。然而,本领域一般技术人员也将明白,所述实施方案可以在没有具体细节的情况下实践。此外,可省略或简化熟知特征以免模糊所述实施方案。
[0033]本文所述和建议的技术包括根据各个实施方案的用于密钥产生的系统和方法。密钥可用于各种目的,诸如消息签名方案中的认证和参与。在实施方案中,计算资源供应商至少部分基于从服务的用户装置接收的电子请求而将计算服务提供给客户。服务可以是可提供的任何合适的服务,包括(但不限于)访问数据、访问计算资源以执行操作、访问数据存储服务等等。
[0034]为了保证以安全方式提供服务,本公开的各个实施方案利用多种技术以认证请求(也称为“消息”)以保证请求是合法的。在实施方案中,使用哈希消息认证代码(HMAC)算法或其它合适的算法来认证请求,如下文更详细讨论的。
[0035]在实施方案中,认证方(例如,服务的用户或代表用户行动的一方)和认证者(例如,服务供应商或代表供应商行动的一方)两者共享可以称为密钥的秘密证书。认证者可以存储共享的秘密证书以用于多个用户。作为交易的部分,认证方可以使用共享的秘密证书签名请求,从而形成签名。签名可以请求的形式被提供给认证者。认证者可以使用其本身的共享的秘密证书的副本以产生用于所接收的请求的签名,且通过比较所产生的签名是否匹配所接收的签名(例如通过与所接收的签名相同)来确定所述请求是否是使用共享的秘密证书进行签名。如果确定请求是使用共享的秘密证书进行签名,那么请求可以视为真实的,且因此可以确定应满足请求。
[0036]因为以上交互是对称的(B卩,扮演其角色时均利用共同信息),所以认证者持有的共享的秘密证书可用于对认证方认证或代表其行动两者。结果,希望高度安全地保护这些证书。维持高度安全性可能具有负面性能和可用性后果。例如,维持高度安全性可以包括维持集中式系统用于密钥存储。然而,这些集中式系统可能由于用户和/或服务的添加对集中式系统造成更大负担而造成扩展瓶颈。如果这种集中式系统出现故障,那么可能难以或不可能认证请求。因此,集中化提供安全性的优点和服务的扩展和可用性的缺点二者。
[0037]在实施方案中,通过利用由共享秘密证书工件(artifact)导出的签名协议而减少这些系统(和其它系统)的负面影响,所述共享秘密证书工件可以用来证明认证方具有共享秘密证书且因此可能被授权来获得以工件签名的请求中指定的访问。在实施方案中,这些工件是通过配置认证者计算机系统以接受至少部分基于共享证书的导出而不是共享证书本身的值作为签名而获得。共享证书的导出可能使得(如下文更完整描述)导出不允许实际确定共享证书。
[0038]例如,在实施方案中,认证方能够用以下项来对签名进行签名,
[0039]HMAC (M, HMAC (X,credential))
[0040]其中M是消息,且HMAC (X,credential)是从共享秘密证书导出的工件。X的值可以是认证方和认证者双方两者已知的某个值,且可以公用。例如,X可以是以预定方式编码的当前日期,以保证由认证方和认证者始终计算HMAC (X, credential).作为另一实例,X可以是工件可用的服务的识别符。作为另一实例,X可以编码多个语义意义且可以认证方和认证者双方始终计算工件的方式提供。语义意义可以是密钥的使用的限制,包括指示不应使用形成密钥的其它推导的意义。结合本段的先前实例,X可以编码为“20110825/DDS”,其中斜线左边的字符串表示日期且斜线右边的字符串表示用X计算的工件可用的服务名。一般来说,X可以是始终编码用于认证方和认证者两者的任何值或任何值集合。应注意,如下文讨论可使用除了 HMAC函数以外的其它合适函数。
[0041]返回到利用HMAC的实例,在实施方案中,选取X值以提供额外优点。如提及,X可以(但非必需)对应于一个或多个语义意义。在实施方案中,使用诸如时戳、服务名、地区名等等的语义意义以提供其中根据本公开的技术产生的工件对由X导出的密钥的使用提供对应限制的系统。以此方式,即使所产生的密钥泄露可以允许由不希望的多方认证,用来编码密钥的限制仍允许在泄露密钥时最小化不利影响。作为实例,用来导出密钥的时间限制为系统提供了有效方式以核对所提交的签名是否是以在签名提交时有效的密钥签名。作为具体实例,如果当前日期用来导出密钥且认证者系统只接受当前日期提交的签名,那么认证者系统将确定使用以不同日期导出的密钥产生的签名是无效的。类似地,以特定服务的识别符导出的密钥与另一服务一起使用时将是无效的。下文提供了其它实例。
[0042]如提及,本公开的各种技术允许使用多个参数导出密钥。在实施方案中,密钥是通过多重使用HMAC函数由多个参数而导出。例如,可以依据以下项计算密钥:
[0043]Ks=HMAC (...HMAC (HMAC (HMAC (K, P1),P2),P3)...,Pn)
[0044]其中K是共享的秘密证书和Pi是参数。密钥Ks可以用于产生签名,诸如:
[0045]S=HMAC (Ks, M)
[0046]其中M是消息,其可以被规范化。以此方式,密钥是以分层方式而导出,从而允许将密钥的部分导出传递到分布式系统的各个组件。例如,Kpi=HMAC(K,P1)可以被计算并传递到分布式系统的一个或多个组件。接收Kpi的组件可以计算Kp2=HMAC (KP1,P2),其中P2对于每个组件而言可以相同或对于一些或所有组件而言可以不同。由各个组件计算的Kp2的值可以将计算传递到分布式系统中可以计算KP3=HMAC(KP2,P3)的其它组件。每个组件可以缓存其计算的结果和由其它组件计算的可能结果。以此方式,因为可以由分布式系统的其它组件执行所导出密钥的计算,所以可以对存储共享的秘密密钥的数据存储装置提供更高安全性。
[0047]本公开的技术也提供了会话的启动。例如,如所讨论,共享的秘密证书和一个或多个参数可以用来导出密钥。因此,会话参数可以用于产生可以在会话期间使用的证书。证书可以由做出请求的用户或(在一些实施方案中)由证书被传递至且已委托访问一个或多个计算资源的用户来使用。在这些实例中,因为这种访问的受委托者使用从共享的秘密证书导出的密钥但是没有使用共享的秘密证书本身,所以维持高的安全级别且防止由受委托者未来使用而无需更迭共享的秘密证书。如下问更详细讨论,受委托者也可以成为使用本公开的技术的委托者,其中的许多技术在下文更详细描述。
[0048]图1示出了根据各个实施方案的实施本公开的各个方面的示例性环境100的各个方面。如应明白,虽然出于解释目的而使用基于网页的环境,但是也可以酌情使用不同环境以实施各个实施方案。环境包括电子客户端装置102,其可以包括可操作来通过适当的网络104发送并接收请求、消息或信息且将信息传达返回到装置的用户的任何适当的装置。这些客户端装置的实例包括个人计算机、手机、手持通讯装置、膝上型计算机、机顶盒、个人数据助理、电子书阅读器等。网络可包括任何适当的网络,包括内联网、互联网、蜂窝网络、局域网或任何其它这样的网络或其组合。用于这种系统的组件可至少部分取决于所选择的网络和/或环境的类型。用于经由这种网络进行通信的协议和部件是众所周知的且将不会在本文详细讨论。通过网络进行的通信可由有线或无线连接和其组合实现。在这个实例中,虽然当环境包括用于接收请求并响应于请求而服务于内容的网页服务器106时,网络包括互联网,但是对于其它网络而言,如本领域一般技术人员明白,也可使用服务于类似目的的替代装置。
[0049]说明性环境包括至少一个应用服务器108和数据存储110。应明白,可存在多个应用服务器、层或其它元件、程序或组件,其可以被链接或以其它方式配置、可交互以执行诸如从适当的数据存储获得数据的任务。如本文使用,术语“数据存储”是指能够存储、访问和检索数据的任何装置或装置组合,其可以包括以下各项的任何组合和任何数量的以下各项:任何标准、分布式或集群环境中的数据服务器、数据库、数据存储装置和数据存储介质。应用服务器可包括用于按需要与数据存储集成以对客户端装置执行一个或多个应用的各个方面、为应用处置大多数数据访问和业务逻辑的任何适当的硬件和软件。应用服务器与数据存储合作提供访问控制服务且能够产生被传送到用户的内容(诸如文本、图形、音频和/或视频),其可以通过网页服务器以肌11、XII或这个实例中的另一适当的结构化语言的形式而服务于用户。所有请求和响应和客户端装置102与应用服务器108之间的内容的传递的处置可由网页服务器进行处置。应了解,因为可在如本文别处讨论的任何适当的装置或主机上执行本文讨论的结构化代码,所以网页和应用服务器并非必需且只是示例性组件。
[0050]数据存储110可包括用于存储与特定方面有关的数据的多个单独的数据表、数据库或其它数据存储机制和介质。例如,所示出的数据存储包括用于存储生产数据112和用户信息116的机制,其可用来服务于生产方的内容。数据存储也被示为包括用于存储日志数据114的机制,其可用于报告、分析或其它这样的目的。应了解,可存在可能需要存储在数据存储中的许多其它方面,诸如对于页面图像信息和访问正确信息,其可酌情存储在上文列出的机制中的任何一个或数据存储110中的额外机制中。数据存储110可通过与其相关联的逻辑而操作来从应用服务器108接收指令并响应于接收指令而获得、更新或以其它方式处理数据。在一个实例中,用户可能提交对某种类型的项目的搜索请求。在这种情况下,数据存储可能访问用户信息来验证用户的身份,且可访问目录细节信息以获得关于所述类型的项目的信息。然后可以如在用户能够经由用户装置102上的浏览器查看的网页上列出的结果中将所述信息返回到用户。可在浏览器的专用页面和窗口中查看感兴趣的特定项目的信息。
[0051]每个服务器通常将包括为所述服务器的一般管理和操作提供可执行程序指令的操作系统,且通常将包括存储指令的计算机可读存储介质(例如,硬盘、随机存取存储器、只读存储器等),指令当由服务器的处理器执行时允许服务器执行其预期功能。尤其鉴于本文的公开,用于服务器的操作系统和一般功能的合适的实施方式是已知的或可商购,且由本领域一般技术人员来容易地实施。
[0052]在一个实施方案中,环境是利用经由通信链路、使用一个或多个计算机网络或直接连接而互连的多个计算机系统和组件的分布式计算环境。然而,本领域一般技术人员应明白,这种系统同样可在具有比图1中示出的更少或更多数量的组件的系统中充分操作。因此,图1中的系统100的描述在本质上应被视为是说明性的且不限制本公开的范围。
[0053]图2示出了根据至少一个实施方案的包括管理多个故障区204的计算资源供应商202的环境200的说明性实例。在实施方案中,计算资源供应商是代表一个或多个客户206操作计算机硬件的组织。计算资源供应商可以各种方式提供计算资源。例如,在一个实施方案中,计算资源供应商202管理被配置由客户206使用的硬件。计算资源供应商202提供了允许客户206使用硬件以编程方式配置计算资源的界面。例如,计算资源供应商可以维持执行由客户以编程方式控制的虚拟计算机系统的硬件服务器。作为另一实例,计算资源供应商202可以管理各种数据存储以提供远程数据存储解决方案,诸如高耐用性数据存储和块级数据存储。
[0054]在实施方案中,故障区是由一个或多个故障边界分离使得每个故障区容忍另一故障区的故障的计算资源的集合。作为实例,每个故障区204可以是单独的数据中心。因此,如果一个数据中心可能由于断电或其它破坏性事件而停止运行,那么其它数据中心可以继续运行。故障区可以各自位于不同的地理位置且故障区的一些或所有可以由地理政治边界分离。例如,故障区中的两个或多个可以在不同国家。应注意,出于说明目的,本公开提供了其中故障区是数据中心的许多实例。然而,故障区可以多种其它方式来定义。例如,相同数据中心中的单独房间可以根据各个实施方案而被认为是单独的故障区。作为另一实例,相同位置中但由不同的备用发电机支持和/或由不同的网络资源支持的计算资源可以被认为是不同的故障区。作为又一实例,数据中心可以被群集使得数据中心的每个群集可以被认为是故障区。此外,故障区可能出现故障的原因可能有许多,包括与电网操作、公共网络操作、电力的策略主张有关的原因和其它原因。
[0055]在实施方案中,客户206通过网络208 (诸如互联网)与计算资源供应商202通信。客户206可以具有配置在故障区204中的一个或多个中的资源,且可以通过发送电子消息(诸如调用计算资源供应商的网页服务应用程序设计界面(API)的消息)与资源进行通信以便配置并操作资源。客户可以利用多个故障区中的资源以降低影响客户资源的潜在故障的影响。利用计算资源供应商202的资源以操作可公开访问网站的客户可以(例如)维持单独故障区中的网页和其它服务器使得如果一个故障区中服务器出现故障,那么公众仍可以通过访问另一故障区中的服务器来访问网站。
[0056]图3示出了故障区302内部的环境300的说明性实例,所述故障区可以是如图2中示出的计算资源供应商的故障区。在实施方案中,故障区302包括用于代表客户提供各种服务的计算资源。例如,如图3中示出,故障区302包括用来提供可以代表客户便宜且冗余地存储相对大量数据的持久数据存储服务的计算资源。当需要大量数据存储和/或安全性的数据存储但是输入/输出性能不具有高优先级时可以使用这种服务。故障区306也可以包括块数据存储服务306,其向客户提供了块级存储装置、物理装置和/或虚拟装置的使用。客户可以将(例如)块级存储装置附接到也由客户利用的计算机系统。本文还示出了可以为客户提供计算服务的虚拟计算机系统服务308。在实施方案中,虚拟计算机系统服务308通过为客户在由计算资源供应商维护的物理服务器上实施虚拟计算机系统来提供计算服务,但是可能存在变动,诸如其中物理计算机系统被分配给客户以供客户使用。在与虚拟计算机系统有关的实施方案中,客户可以根据其需求而以编程方式管理虚拟计算机系统。例如,如图3中示出,客户可以将虚拟计算机系统服务308的虚拟计算机系统配置为虚拟计算服务供应商的客户的服务器客户。虚拟计算机系统可以(例如)被配置来操作可公开访问的网站。在各个实施方案中,虚拟计算资源供应商的客户和客户的客户两者可以通过凭借网络310 (其可以是上文结合图2描述的网络208)与服务通信来访问在故障区302中操作的各种服务。
[0057]应注意,正如附图中示出且本文描述的所有说明性实施方案,图3中示出的各个实施方案在本质上是说明性的且变动被认为在本公开的范围内。例如,除了示出的服务以外还可以在故障区302中提供不同于示出的所述服务的其它服务,或可以在故障区302中提供不同于示出的所述服务的其它服务来代替示出的服务。如图3中的椭圆形示出,例如,额外服务可以在故障区302中操作。此外,一些服务可以利用其它服务。例如,多个服务(例如,块级数据存储服务306和虚拟计算机系统服务308)可以被一起使用以提供其它服务,诸如关系数据库服务、电子邮件服务和一般来说可使用计算资源供应商的资源提供的任何类型的计算服务。
[0058]如图3中示出,计算资源供应商的服务中每个可以包括单独的验证器312。验证器可以是计算装置、计算装置的集合、应用模块或验证由客户和可能由其它计算机系统做出的各种证明的其它资源。如下文更详细描述,在实施方案中,验证器312中的每个验证根据本文的各个实施方案产生且然后由客户结合访问计算资源的请求而提供的消息签名。密钥和其它相关信息可以被从中央密钥授权传播到验证器以使验证器能够验证信息。应注意,具有验证器的每个服务是特定实施方案的说明性实例,但是其它布置也在本公开的范围内。例如,单个验证器可以支持多个服务,甚至所有服务且甚至可以支持多个故障区。
[0059]图4示出了根据至少一个实施方案的可用来支持环境(诸如图3中示出的环境)的计算资源配置的说明性示例。图4具体示出了其中图3中的故障区是数据中心的具体的实例。因此,返回到图4,数据中心402可以包括多个服务器机架404至406。数据中心402是可以用于本公开的各个实施方案的一个或多个数据中心(诸如图4中示出的数据中心)的实例。服务器机架404与服务器机架406之间的省略号指示数据中心402可以包括任何合适数量的服务器机架,但是为了清楚起见图4中只示出了两个。每个服务器机架404至406可以参与维护服务,诸如到多个服务器计算机408至414和416至422的电力和数据通信。此外,省略号指示服务器机架404至406可以包括任何合适数量的服务器计算机。例如,月艮务器计算机408至422可以包括一个或多个虚拟计算机系统(VCS)服务器和/或一个或多个数据存储服务器。每个服务器408至422可以对应于实施资源专用单元。
[0060]在图4中,每个服务器机架404至406被描绘为包括一个机架交换机424至426。机架交换机424和426可以负责在其各自的服务器计算机组408至414和416至422之间来回交换数字数据的数据包。机架交换机424至426可以通信地链接到数据中心交换结构428,且然后链接到将数据中心402连接到包括互联网的一个或多个其它计算机网络的一组边缘路由器430。交换结构可以包括任何适当的网络组件集合,包括布置在一个或多个交换层中的一个或多个交换机类型的多个互连交换机432至438 (为清楚起见,图4中只示出了四个)和路由器、网关、网桥、集线器、中继器、防火墙、计算机和其合适的组合。在至少一个实施方案中,机架交换机424至426和边缘路由器430被认为是交换结构428的部分。机架交换机424至426、边缘路由器430和交换结构428的组件是图2的网络硬件224的实例。
[0061]如上文提及,本公开的各个实施方案允许由于不同原因而被赋予各个授权等级。图5是示出了根据至少一个实施方案的可以给参与计算环境的各个元件分配不同授权范围的方式的示例性方式的图。在图5中,示出了计算资源供应商502。在实施方案中,计算资源供应商502的授权高于其资源,且如图5中示出,计算资源供应商502能够在资源使用时将所述授权分配在各个参与者之间。应注意,出于使说明和本文的其它说明和描述一致的目的,图5示出了具有授权高于域的计算资源供应商502。然而,本公开的实施方案也可适用于授权域的其它控制者。例如,授权的控制者可以是政府或政府组织、另一组织的子组织或一般来说授权高于某个域的任何实体。
[0062]返回到图5的说明性实例,计算资源供应商502通过允许不同子实体的授权高于不同子域来管理其授权。例如,如附图中示出,计算资源供应商的多个故障区504中的每个被提供计算资源供应商502的域的对应子域。因此,每个故障区的授权可以高于其本身的资源,但不会高于另一故障区的资源(但是,在一些情况下可以共享高于一些子域的授权)。因此,根据实施方案,故障区可以提供对故障区中的计算资源的用户访问,但是没有提供对另一故障区的计算资源的访问。[0063]如上文提及,每个故障区可以包括一个或多个服务506。因此,如图5中示出,每个服务可以负责对应故障区506的域的子域。因此,在实施方案中,服务可提供对可由服务访问的资源的访问,但是没有提供对其它服务的访问。每个服务可以服务于一个或多个客户508,且因此每个客户可以负责对应服务506的授权的子域。因此,在实施方案中,客户可以提供对涉及对应服务的其本身资源的访问,但不会提供对另一客户的服务的访问。作为具体说明性实例,如果服务是虚拟计算资源服务,那么客户可以提供对其本身的虚拟计算机系统的访问(诸如公共访问),但不会在不被允许的情况下提供对其它客户的虚拟计算机系统的访问。
[0064]如提及,如图5中示出的授权的特定分配是出于说明目的,且多种变动被认为在本公开的范围内。如提及,本公开的实施方案可适用于由计算资源供应商管理的域以外的授权的域,且可以根据特定需要和状况确定子域。此外,图5示出了虚拟资源供应商中具有授权的最小子域的客户。然而,本公开的技术可以允许将客户域分成一个或多个子域。
[0065]本公开的各个实施方案涉及消息签名。图6是示出了根据至少一个实施方案的可以在消息签名验证过程中在参与者之间传达信息的示例性方式的图600。在实施方案中,密钥源602将密钥提供给消息提交器604和签名验证器606两者。密钥源可以是被配置来将密钥提供给至少所述消息提交器604和签名验证器606的计算机系统。密钥源也可以使用各种技术(包括本文描述的各个实施方案)产生密钥或可以从另一源获得所产生的密钥。消息提交器604可以是被配置来将消息和签名提交给签名验证器606的计算机系统或结合签名验证器606操作的其它组件。消息提交器604的计算机系统可以是(例如)计算资源供应商的客户的计算机系统。如下文讨论,签名验证器606可以是被配置来接收消息和签名并分析签名以验证消息是真实的计算机系统。简单来说,签名验证器606可以分析所接收的签名和消息以确定签名是否是使用正确的密钥X而产生。应注意,虽然图6示出了与消息提交器604和签名验证器606分离的密钥源602,但是消息提交器或签名验证器中的任何一个也可能是密钥源。例如,计算资源供应商的客户可以提供其本身的密钥。然后客户密钥可以被提供给签名验证器以验证签名。此外,消息提交器604和签名验证器606可以每个从密钥源602接收不同密钥。例如,消息提交器604可以接收密钥且签名验证器606可以接收使用本公开的各个实施方案从由消息提交器604接收的密钥导出的密钥。
[0066]如图6中示出,签名验证器606从消息提交器604接收消息和对应签名。消息可以是(例如)访问计算服务608的电子请求。消息可以(例如)编码对网页服务的仙I调用。如果签名和消息的分析指示消息是真实的,那么签名验证器通知服务(或控制对服务的访问的组件):消息提交器可具有所请求的访问。例如,签名验证器可以将所接收的消息传递给服务以使服务能够满足所述请求。因此,服务可以是可操作以满足请求的计算机系统,诸如上文描述的各种服务。应注意,虽然图6的各个组件和其它组件的各种描述将组件描述为可能被实施为被配置来执行某些行动的计算机系统,但是组件也可以包括被共同地配置来执行行动的多个计算装置,诸如计算装置的网络。
[0067]图7是示出了根据实施方案的用于签名消息的过程700的说明性实例的流程图。过程700 (或本文描述的任何其它过程或其变动和/或组合)中的一些或所有可以在以可执行指令配置的一个或多个计算机系统的控制下而执行且可以被实施为由硬件或其组合在一个或多个处理器上共同地执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)。代码可以(例如)计算机程序(包括可由一个或多个处理器执行的多个指令)的形式存储在计算机可读存储介质上。计算机可读存储介质可以是非瞬时性的。
[0068]在实施方案中,过程700包括获得密钥K (701)。密钥可以任何合适的方式获得。例如,密钥可以由计算机系统执行过程700而产生。密钥可以由执行过程700的计算机系统以电子形式接收。一般来说,可以任何合适的方式执行获得密钥。密钥可以是利用特定签名算法的任何合适的密钥。例如,如果使用基于哈希的消息认证代码(HMAC)方案和安全哈希算法(SHA)-256加密哈希函数,那么密钥可以是字节序列,诸如64或更少字节的序列。也可以使用不同加密哈希函数,诸如SHA-224、SHA-384和SHA-512。
[0069]在实施方案中,所述过程也包括规范化消息M以形成规范化消息M。。规范化消息可以包括以允许验证器验证消息的签名是否有效的格式布置消息中的信息。一般来说,许多信息通信协议转换包括消息的位,同时使消息的语义相同。因此,两个语义相同的消息可以包括不同的位集合,且因此可以产生不同签名。因此,规范化允许保证可验证签名的简单直接方式。然而,应注意,本公开的一些实施方案无需消息规范化。例如,如果所利用的各种协议没有产生包括不同的位集合的语义相同消息,那么规范化并不是必需的且可以省略。一般来说,在其中签名验证能够成功进行而无需操控签名消息的任何情况下均可以省略规范化。
[0070]在实施方案中,通过计算HMAC (K,M。)产生签名,其中HMACO是HMAC函数,诸如上文描述的。HMAC函数具有使其尤其有用于本公开的各个实施方案的多个性质。例如,HMAC函数可由计算机系统有效地执行,从而使计算资源可用于其它任务。此外,HMAC函数具有抗原像性(不可逆)。例如,假设签名S=HMAC(K,M),其中K是密钥且M是消息,基本上不会获得关于密钥K的任何信息。例如,从S可知,由S确定K在计算上不可能或至少不切实际。HMAC函数也具有抗第二原像性。换句话说,假设S=HMAC (K,M)和M,确定不同于M的消息M’使得S=HMAC(K,M’)不可能或至少在计算上不切实际。此外,HMAC函数具有抗伪造性。例如,假设S=HMAC (K,M)的oracle数据库,N次查询oracle数据库(N是正整数)允许产生最多N个签名消息对。换句话说,假设一组签名消息对,确定密钥或确定将产生不在所述组中的消息的正确签名的函数是不可能的或在计算上不切实际。
[0071]虽然HMAC函数尤其有用于各个实施方案,但是也可使用其它函数。例如,可以使用具有HMAC函数的上述性质的任何函数。此外,诸如在其中安全并不是主要问题和/或安全成问题但通过其它机制维持的状况下可使用不一定具有所有(或任何)上述性质的其它函数。应注意,各个实施方案的各种说明示出了 HMAC函数的具体输入,但是也可存在变动。例如,HMAC函数(或其它函数)的输入可以不同。如上文描述,例如,一个输入是密钥。然而,这个输入可以由密钥导出或以其它方式至少部分基于密钥。作为说明性实例,输入可以包括具有信息(诸如签名方案识别符(可能是版本识别符))的密钥,所述信息被添加给密钥作为前缀、后缀或其它。作为另一实例,输入可以是通过使用密钥到信息(可以是另一密钥)的映射而获得的信息。类似地,示为消息的输入可以由消息导出。作为另一实例,变动被认为在本公开的范围内,签名可能不是HMAC函数的输出,但可能是由HMAC函数(或其它合适的函数)的输出导出的一个或多个值。在一些实施方案中,密钥和消息可以按相反次序被传递到函数中。
[0072]返回到图7的描述,一旦通过计算HMAC(K,Mc)产生签名,将签名和消息M提供给接收器(708),其可以是验证签名的计算装置或签名验证过程中涉及的另一计算装置,诸如提供用于传达消息和签名的界面的计算装置。正如本文明确描述的所有实施方案,变动被认为在本公开的范围内。例如,可以将规范化消息Mc提供给接收器来代替消息M或除了消息M以外还将规范化消息Mc提供给接收器。此外,将消息M和签名提供给接收器也可以包括提供其它信息,诸如密钥识别符,其可以在使密钥与密钥识别符相关联的数据存储中用于识别。此外,诸如下文讨论的编码策略的参数的其它信息可以被提供有消息M和签名。
[0073]图8是示出根据至少一个实施方案的签名验证的过程800的说明性实例的流程图。图8中示出的过程800可以由如图2中描述的验证器执行。此外,过程800可以响应于收到签名和消息(诸如响应于另一计算机系统已执行图7的过程700)而被执行。在实施方案中,过程800包括获得密钥K (802),诸如上文描述的。获得密钥K在各个实施方案中也可以包括其它行动。例如,如果过程800是由验证从多个密钥(诸如从计算资源供应商的多个客户)产生的签名的计算机系统使用,那么获得密钥K可以包括从数据存储中的多个密钥选择所述密钥。数据存储可以将各种密钥与提交签名以用于验证的所述密钥关联。例如,计算资源供应商的每个客户可以具有用于参照数据存储并识别适当密钥的密钥识别符(或多个密钥识别符)。密钥识别符可以结合消息和其签名的提交而提交,或可以其它方式而确定,诸如在提交登陆证书时被确定。密钥识别符的接收器(例如,消息验证器)可以参照数据存储以确定对应于所述密钥识别符的密钥是否在数据存储中,且如果否,那么可以产生密钥其自身,诸如通过使用本文描述的技术来从共享的秘密证书直接或间接导出密钥。为实现此,接收器可以访问密钥导出路径,其在实施方案中是编码从接收器已经具有的信息导出密钥(例如,从共享的秘密证书导出的密钥)所必需的信息的信息。这个信息可以被从具有签名的消息的提交器提供到接收器,或可以其它方式提供给接收器。例如,接收器可以被编程来使用其指派地区和当前日期的代码而自动产生密钥。一般来说,可使用获得用于产生签名的密钥(或在一些实施方案中,可用于验证签名的另一密钥)的任何方法。接收器也可能相对于手头的请求或接收器已知的某种其它属性实施关于允许和不允许的密钥导出路径的策略。
[0074]在实施方案中,接收签名S和消息M (804)。可以从提交器(诸如执行图7的过程700的计算装置)以电子形式接收签名S和消息M。根据实施方案,然后规范化消息M以确定M。(806)。在各个实施方案中,消息M的规范化保证签名S可被验证。因此,在实施方案中,过程800包括通过计算HMAC(K,M。)而产生签名S’(808)。在实施方案中,S’等于HMAC (K,M。),但是在各个实施方案中可由HMAC (K,Mc)导出S’。出于说明的目的,过程800的剩余部分将在S’ =HMAC(K1Mc)的假设下描述,但是许多变动是在本公开的范围内。
[0075]因此,在实施方案中,确定S’是否等于所接收的签名S (810)。换句话说,例如确定所接收的签名是否充分,因为其是使用密钥K产生的签名。因此,在实施方案中,如果确定S’与S不相等(810),那么签名未验证(812)。然而,如果S’等于S,那么验证签名(814)。取决于签名是否被验证,可以采取适当行动。例如,如果消息是用于访问计算资源的请求,那么所请求的访问可以(至少暂时)被拒绝。类似地,如果消息是访问计算资源的请求且签名被验证,那么所请求的访问可以被授予。然而应注意,在各个实施方案中将采取的适当行动可取决于接收和验证签名的原因而广泛地变化。
[0076]如上文提及,本公开的各个实施方案应用到许多环境。在许多环境中,具有安全维护的各种方面的集中管理是有用的。例如,图9是示出根据至少一个实施方案的分配密钥的示例性方式的图900。在图9中,中央密钥授权维护包括组织所利用的各种密钥的一个或多个数据存储(统称为“数据存储”)。密钥可以(例如)对应于组织的计算装置的用户。一组用户中的每个用户可以(例如)被指派一个或多个密钥。在实施方案中,至少一些密钥对应于组织的客户(和/或客户的用户)。例如,在实施方案中,组织是计算资源供应商且所述计算资源供应商的每个客户对应于允许客户的用户访问由计算资源供应商维护的计算资源的一个或多个密钥。根据上文关于图7描述的变动的图8的过程800的其它改编也在本公开的范围内。
[0077]如图9中示出,密钥授权902将密钥传播到多个密钥区904。密钥区可以是所接收的密钥有效的组织域。例如,参考图2,每个密钥区904可以对应于故障区,诸如数据中心。密钥区可以(但并非必需)在地理上加以定义。例如,每个密钥区可以对应于国家、地区或其它地理上定义的地区。密钥区也可以其它方式定义。例如,每个密钥区可以对应于由计算资源供应商提供给组织的客户等等的服务。虽然没有这样示出,但是密钥区可以具有子区。例如,密钥区可以对应于国家。在国家内可以具有多个地区,每个对应于密钥区的子区。在这些实施方案中,密钥可以被传播到子区。
[0078]如图9中示出,密钥区904可以将密钥传播到密钥区的一个或多个验证器906。例如,如果密钥区对应于数据中心,那么数据中心的计算装置可以为了由数据中心中的计算资源支持的多个服务的每个而将密钥传播到验证器。以此方式,验证器可用于验证结合各种请求而提交的签名。这使密钥授权自身的计算资源摆脱验证签名,而且尤其在密钥授权902在地理位置上远距进行请求的服务的情况中减少了等待时间和带宽需求。
[0079]密钥传播可以各种方式进行。在实施方案中,密钥在安全通道上分配到各种接收器。在一些实施方案中,密钥授权将相同密钥传播到每个密钥区。此外,一些密钥可以用于多个密钥区。密钥授权902可以将多个密钥区中可用的密钥传播到所述多个密钥区,同时抑制将所述密钥传播到密钥不可使用的密钥区。因此,在计算资源供应商的实例中,密钥授权902可以只将客户的密钥传播到所述客户能够使用所述密钥的所述密钥区,诸如用于维护所述客户的计算资源的数据中心。
[0080]本公开的各个实施方案也以提供许多优点的方式提供密钥传播。图10是示出了根据至少一个实施方案的以提供各种授权范围的方式分配密钥的示例性方式的图1000。正如图10,图1000包括具有密钥K的密钥授权1002,其中诸如根据结合图9的上文描述,密钥授权1002将密钥直接或间接传播到各种密钥区1004和验证器1006。虽然出于说明的目的结合单个密钥K描述图1000且由K导出密钥,但是当密钥授权对许多密钥执行这些行动时本文描述的实施方案适用。
[0081]如图10中示出,密钥K用作从K导出的其它密钥的基础。例如,密钥K1WK导出且传播到第一密钥区(密钥区工)。因此,密钥K1 (或从密钥K1导出的密钥)在第一密钥区中可用,但是在不具有1 (或从密钥K1导出的密钥)的其它密钥区中不可用。类似地,多个其它密钥区中的每个接收从密钥K导出的对应不同密钥。应注意,虽然图10示出从密钥K导出的密钥从密钥授权1002传播到对应密钥区,但是也可存在变动。例如,密钥K可以传播到密钥区,且接收密钥K的每个密钥区可以使用密钥K来导出一个或多个对应密钥。例如,标为“密钥区i”的密钥区1004可以接收密钥K并导出I。一般来说,密钥导出和传播中所涉及的各种任务可以不同于各个实施方案中示出的任务来执行。
[0082]如图10的说明性实例中示出,由密钥区1004接收的密钥用于导出进一步传播的密钥。例如,参考标为“密钥区2”的密钥区1004,从密钥K导出的密钥K2用于导出额外密钥K2’和K2’ ’。密钥K2’和K2’ ’传播到对应验证器1006以由验证器1006用于验证签名。因此,在实施方案中,接收Κ2’的验证器将能够验证使用Κ2’产生的签名,而不接收Κ2’的验证器将不能验证所述签名。通过以图9和图10中图示的方式(或其变动)传播密钥,实现了多个优点。例如,通过将密钥传播到多个位置中的许多验证器,而不是一个或多个集中化的验证器,实现了更少的等待时间。此外,参考图10,通过将导出的密钥传播到其它装置,其它装置然后又导出额外密钥,在多个位置上的多个装置上扩展计算是可能的,从而允许更快的密钥导出并增大容错。
[0083]密钥的导出可以许多方式执行。图11是示出根据至少一个实施方案的密钥导出的过程1100的说明性实例的流程图。在实施方案中,过程100包括诸如以上文描述的方式获得密钥1(1002)。密钥Ki可以是任何合适的密钥,诸如上文描述的。此外,密钥Ki可以(但并非必需)从另一密钥导出,诸如通过执行过程1100或另一过程。在获得密钥Ki之后,从Ki导出新的密钥。在图11的说明性实例中,依据(或至少部分基于)HMAC(KpRf1)计算新的密钥K Kf1,其中Ri+1是识别密钥Ki+1上的一个或多个限制的信息。例如Ri+1可以是编码指示密钥Ki+1在何处可用的信息的位序列。例如,Ri+1可以编码可以使用密钥Ki+1之处的密钥区。限制可以至少部分基于地理、时间、用户身份、服务等等。在下文描述中提供示例性限制。
[0084]此外,如下文更多讨论,可以多次使用过程1100以导出密钥。例如,使用过程1100(或其变动)产生的密钥可以用于使用相同或另一限制来产生另一密钥。使用图中的术语,Ri+1可以(例如)是编码指示密钥Ki+1何处可用的信息的位序列。对于过程的下一迭代,Ki+1将成为密钥I。例如,如果过程1100用于基于地理限制产生密钥,那么所产生的密钥可以用于使用基于日期限制产生密钥。可以多次利用这个过程以使用多重限制来导出密钥。如下文更完整地讨论,通过使用多重限制来导出密钥,一个或多个验证器可实施策略并同时验证签名。作为简短的说明性实例,作为签名验证过程的部分,验证器可以使用限制(诸如当前日期的编码)来确定预期签名。根据实施方案,如果提供在不同日期产生的签名,那么所述签名的验证将失败。一般来说,根据各个实施方案,如果签名的使用不遵守用于导出密钥的限制,那么签名验证可能失败。
[0085]图12是示出了根据至少一个实施方案的使用多重限制导出密钥的说明性实例的图1200。在图12中,使用多重限制导出密钥。在这个实例中,密钥和日期限制用于确定日期密钥(图中为Kdate)。在图中,日期被编码为20110715(对应于2011年7月15日),但是日期可以不同地编码,且一般来说,信息可以不同于图中示出的信息来编码。日期密钥与地区限制一起用于导出地区密钥Kregion。在这个实例中,地区是以地区识别符“USA-zone-l”编码,其可以对应于美国多个地区中的一个。密钥Kregion与服务限制一起用于导出服务密钥Kservice。在这个实例中,服务是虚拟计算机系统服务(其由其首字母缩略词VCS编码)。密钥Kservice与请求识别符一起用于导出签名密钥,S卩,用于签名对服务的请求的密钥。在这个实例中,请求识别符是“vdrequest”,其可以对应于可以提交到VCS服务的特定类型的请求。例如,“vcs_request”可以对应于某个请求以提供、停止或以其它方式修改虚拟计算系统。使用签名密钥来产生可以与请求一起提交的签名。签名可以任何合适方式来产生,诸如上文描述的。
[0086]如图12中示出,请求可以被规范化以形成消息M。,其作为到HMAC函数的输入以产生签名。当然,可以根据各个实施方案利用变动,包括规范化并非必需之处以及使用除了HMAC函数以外的函数之处的变动。此外,图12示出了根据实施方案的导出签名的特定实例。然而,在导出签名时可以使用更多或更少限制,且可以按不同于示出的次序使用限制。此外,虽然图12示出签名的导出,但是所述技术可以应用于导出在所有应用中可能不被认为是签名的其它对象。例如,一般来说图12中(和别处)示出的技术可以用于导出密钥。
[0087]图13是根据至少一个实施方案的用于导出签名的函数1300的说明性实例。如图13中示出,依据以下项计算签名:
[0088]HMAC(HMAC(HMAC(HMAC(HMAC(K, date), region), service), protocol), Me).[0089]在这个实例中,K是密钥,“date”是日期的编码,“region”是地区识别符的编码,“service”是服务识别符的编码,“protocol”对应于特定消息编码协议,且Mc是规范化消息。因此,如图13中示出,通过多次计算相同HMAC函数来计算签名,每次将不同限制输入到HMAC函数。在这个实例中,签名密钥是:
[0090]HMAC(HMAC(HMAC(HMAC(K, date), region), service), protocol)
[0091]其本身是通过多次使用HMAC函数而导出,每次具有不同限制。
[0092]在图13的实例中,各种限制每个定义域且所定义的域的交集定义其中以签名密钥产生的签名将有效的 方式。在这个具体实例中,以图13中示出的签名密钥产生的签名在使用所指定协议指定的日期、指定的地区和指定的服务内将有效。因此,如果使用签名密钥但在不同于由签名密钥的输入指定的日期的日期内签名请求,那么即使对所指定服务和在所指定地区中做出所述请求,对所述请求的签名仍然可能被认为未验证。
[0093]正如本文描述的其它实施方案,变动被认为在本公开的范围内。例如,图13示出了 HMAC函数的重复使用。多个函数可以用于导出签名,且在一些实施方案中,HMAC函数没有用于导出的每一部分。此外,如提及,各个实施方案中也可以使用不同限制和不同数量的限制。
[0094]可以根据各个实施方案以多种方式执行密钥导出。例如,根据一些实施方案,单个计算装置可计算签名密钥。根据其它实施方案,多个计算装置可以共同地计算签名密钥。作为具体说明性实例,参考图13,一个计算机可以计算
[0095]Kregion=HMAC(HMAC(K, date), region)
[0096]且另一计算机可以计算
[0097]签名密钥=HMAC(Kregion, Service).[0098]作为另一实例,单独计算机系统可以执行计算签名密钥中的不同层。参考先前段落中的实例,一个计算机可以计算以下项来代替单个计算机计算Kregion
[0099]Kdate=HMAC(K, date)
[0100]且另一计算机可以计算
[0101]Kregion=HMAC(Kdate, region).[0102]图14是根据至少一个实施方案的可以如何执行并使用多密钥导出的说明性实例。特别地,图14示出了示例性图1500,其示出了一组分布式计算机系统的成员共同地计算签名密钥(或在各个其它实施方案中,其它密钥)。如图14中示出,所述组的每个成员是产生密钥并将所产生的密钥提供给另一计算机系统的密钥供应商计算机系统1402。例如,标记为密钥供应商i的密钥供应商(从另一来源或通过产生密钥本身)获得密钥K,且使用密钥和标记为R1的限制以产生密钥I。密钥供应商i将密钥K1传递给密钥供应商2,其使用K2和另一限制R2以产生另一密钥K2。密钥供应商2将密钥K2传递给密钥供应商3,其使用K3和另一限制R3以产生另一密钥Κ3。取决特定实施方案中的密钥供应商的数量,这个过程可以继续进行直到密钥供应商η将密钥IV1传递给密钥供应商Ν为止,其使用Kim和另一限制Rn以产生另一签名密钥KN。然后将密钥Kn传递给验证者计算机系统1404。也可以通过(诸如)安全密钥交换算法将密钥K或从K导出的任何密钥(在图中一般称为Ki)传递给签名器计算机系统1406。
[0103]在各个实施方案中,例如如果签名器和/或公开可使用限制R1-Rn,那么签名器计算机系统1406也可以自身产生Kn。此外,在各个实施方案中,签名器计算机系统1406可以只执行用于自身导出Kn的过程的部分。例如,对于小于N的某个整数i和限制Ri+1至Rn,签名器可以(可能从适当的密钥供应商计算机系统)获得K”然后签名器可以使用Ki和限制Ri+1至Rn以产生签名密钥KN。其它变动也被认为在本公开的范围内。
[0104]签名器计算机系统1406可以使用密钥Kn以签名将由验证器1404验证的消息。例如,如示出,签名器1406计算签名S=HMAC(KN,Mc),其中Mc是也被发送到验证器的消息M的规范化版本。因为验证器具有&,所以验证器可独立地规范化消息M并计算HMAC(Kn,Mc)以确定计算结果是否匹配所接收的签名S。
[0105]应注意,虽然图14中示出的过程和本文描述的过程的变动被示为涉及HMAC函数的多次使用,但是可以使用多个不同函数来导出密钥。例如,在导出密钥的不同时刻可以使用不同类型的消息认证代码(MAC)函数。例如,一种类型的MAC函数的输出可以被用作到另一类型的MAC函数的输入的基础。一般来说,在密钥导出过程中可以使用其它类型的函数来代替HMAC函数和/或除了 HMAC函数以外还可以使用其它类型的函数,且在各个实施方案中,没有必要多次使用同一类型的函数来导出密钥,但是每当需要函数时可以使用不同函数。
[0106]图15是示出了根据至少一个实施方案的可以使用多个限制导出密钥的示例性方式的图1500。图15中示出的实例是指客户,诸如计算资源供应商的客户。然而,如提及,可以在多种其它情境(context)使用本文描述的技术(包括结合图15描述的技术)。
[0107]如示出,客户密钥Krast是一组客户长期密钥的部分,其中的每个可以是由客户在一段时间内(诸如直到客户更新密钥、被指派新密钥或以其它方式改变密钥为止)使用的密钥。密钥也可以由一个或多个客户无限制地使用。客户密钥Krast用来导出一个或多个地区密钥,诸如以上文示出的方式。例如,如图15中示出,可以通过(诸如)计算HMAC(Kcust, USA-E-1)和 HMAC(Kcust, USA-N-1)产生两个地区密钥,其中 USA-E-1 和 USA-N-1是各自地区的识别符。类似地,地区密钥可以用来导出日期密钥,其的有效性可以受限于用来编码日期密钥的日期。日期密钥中的每个可以用来导出服务密钥,诸如以上文描述的方式。
[0108]在各个实施方案中,以此方式,服务密钥和各自服务只可以在用来编码密钥的日期中和地区内使用。每天可以产生新日期密钥,而地区密钥和客户长期密钥的产生频率可能较低。诸如图15和本公开中的别处示出的多限制密钥导出提供多个优势。例如,如果签名密钥被泄漏(例如,由第三方恶意获得)那么通过以结合图15描述的方式导出密钥,将安全漏洞限于特定地区、特定日期上且与特定服务相结合。其它服务将保持不受影响。可以用可导出密钥的其它方式应用类似优势。
[0109]例如,图16是示出了根据至少一个实施方案的可以导出密钥的另一示例性方式的图1600。图16以与图16的方式类似的方式示出概念。然而,在图16中,客户长期密钥用来导出日期密钥。日期密钥用来导出地区密钥。地区密钥用来导出服务密钥。可以根据本文描述的各个实施方案完成导出。
[0110]图17是示出了根据至少一个实施方案的可以导出密钥的又一示例性方式的图1700。在图17中,客户长期密钥用来导出月份密钥。月份密钥用来导出地区密钥。地区密钥用来导出日期密钥。日期密钥用来定义服务密钥。可以与上文描述一致的方式来导出各种密钥。
[0111]如讨论,本公开的各种技术允许产生会话的新颖方式。会话可以是允许一个或多个行动的集合的时间段,其中会话的终结(或其它终止)造成不允许一个或多个行动的所述集合。图18是示出了根据至少一个实施方案的用于启动会话的过程1800的说明性实例的流程图。过程1800可以由任何合适的计算装置执行或由计算装置的任何合适集合共同地执行。例如,过程1800可以由计算资源供应商的客户的客户端装置执行。作为另一实例,在另一实施方案中,参考图3,故障区的服务之一可以是会话服务且参与提供服务的一个或多个计算装置可以执行过程1800。
[0112]返回到图18,在实施方案中,过程1800包括获得密钥K (1802)。密钥K可以是任何合适的密钥,诸如以上文描述的方式使用其它密钥导出的密钥。例如,密钥K可以被传播到参与执行过程1800的计算装置。在某个时刻(诸如当获得密钥K时,如附图中示出的),在实施方案中,可以接收启动会话的请求(1804)。所述请求可以是电子请求,诸如上文描述的。此外,在实施方案中,使用本公开的各种技术签名并验证所述请求。再者,取决于用来实施过程1800的特定环境,所述请求可以是不同请求。例如,如果过程1800由客户端装置(诸如计算资源供应商的客户的客户装置)执行以产生会话,那么可以由客户端装置的模块接收启动会话的请求。
[0113]在实施方案中,确定会话的会话参数(1806)。会话参数可以是指示对将产生的会话的一个或多个限制的信息。示例性参数包括(但不限于)持续时间、将要产生的会话密钥的可接受用户的识别符、其中产生的会话密钥是可用的一个或多个服务、对可以使用会话密钥执行的行动的限制、上文描述的限制中的任何一个和其它。参数可以根据预定义格式化需求以电子形式编码以保证涉及将产生的会话密钥的计算是一致的。例如,可能需要以格式YYYYMMDD来编码日期。其它参数可以具有其本身的格式化需求。此外,可以各种方式执行确定会话参数。例如,参数可以是会话的默认参数,使得会话密钥只可用于会话启动的请求器允许的行动范围和预定义的时间段(诸如24小时周期)。作为另一实例,参数可以被提供作为所接收请求的部分或以其它方式结合所接收请求而提供。例如,参数可以根据来自请求器的用户输入而产生且根据预定义方案进行编码。
[0114]在实施方案中,一旦确定参数,使用参数来计算会话密钥Ks (1808)。可以多种方式执行计算会话密钥Ks。例如,在一个实施方案中,可以依据(或以其它方式至少部分基于)以下项来计算会话密钥Ks
[0115]HMAC(K, Session_Parameters)
[0116]其中Session_Parameters 是已确定(1806)的参数的编码。Session_Parameters可以用保证计算一致性的预定义方式进行编码。会话密钥Ks也可以其它方式(诸如下文结合图19描述的方式)计算。
[0117]在实施方案中,一旦计算会话密钥Ks (1808),提供会话密钥Ks以供使用。在各个实施方案中可以多种方式执行提供会话密钥。例如,可以将会话密钥提供给请求器的模块以使请求器能够用会话密钥签名消息。也可以通过网络将会话密钥提供给另一装置以使另一装置能够用会话密钥签名消息。例如,也可以将会话密钥提供给启动会话的受委托者。例如,请求器可以用启动会话的请求或以其它方式结合启动会话的请求指定受委托者。可以根据由请求器(即,委托者)提供的信息(诸如电子邮件或其它电子地址)以电子形式提供会话密钥。
[0118]如提及,图19示出了根据实施方案的可用以产生签名的过程1900的说明性实例。可以由一个或多个计算装置(诸如执行上文结合图18描述的过程1800的一个或多个计算装置)执行过程1900。如图19中示出,过程1900包括接收会话参数,诸如上文描述的。在实施方案中,使用已获得的会话参数依据以下项计算中间密钥Ki+1 (1904):
[0119]K^1=HMAC (KilPi),
[0120]其中Ki可以是图18的描述中用于首次计算Ki+1的密钥K,且Pi是会话参数的第i个参数。可以根据预定次序来排序会话参数以保证密钥签名的计算一致性。
[0121]在实施方案中,确定产生会话密钥时是否使用额外参数(1906)。如果在实施方案中存在额外参数,那么将索引i增加I (1908)且再次计算Ki+1 (1904)。然而,如果确定不存在额外参数,那么将Ks设置成Ki+1的值(1910)。`
[0122]图20是示出了根据至少一个实施方案的用于在会话期间获得对一个或多个计算资源访问的过程2000的说明性实例的流程图。应注意,虽然图20呈现了用于获得对一个或多个计算资源访问的过程2000,但是正如本文描述的其它过程,还可以针对其中使用签名过程的任何情况修改过程2000。过程2000可以由请求访问一个或多个计算资源的用户的计算机系统(诸如图1中示出的客户端计算机系统和/或本文别处描述的客户计算机系统)执行。在实施方案中,过程2000包括获得会话密钥Ks。可以任何合适的方式(诸如在电子消息中)获得会话密钥。可以从访问所述一个或多个计算资源的委托者的计算机系统或另一计算机系统(诸如结合执行用于产生Ks的过程的所述一个或多个计算机系统操作的计算机系统)获得会话密钥。
[0123]在实施方案中,产生请求R (2004)。请求R可以是消息,诸如上文描述的。然后在实施方案中规范化请求R (2006),且由规范化消息计算签名(2008),诸如通过依据(或以其它方式至少部分基于)HMAC(Ks,Rc)计算签名。当产生签名之后,提供签名S和请求R(2010)。例如,如上文讨论,可以电子形式将签名S和请求R提供给参与管理请求和验证签名的计算机系统的界面。正如一般的签名和消息,可以用单一通信、单独通信或由多种通信共同地来一起提供签名S和请求R。也可以结合签名S和请求R提供其它信息。例如,可以提供识别信息以使验证器能够选择用于产生签名且用签名来验证所接收签名的适当密钥。识别可以是(例如)应用来产生签名以进行比较的密钥的识别符。在各个实施方案中,也可以酌情提供并使用其它信息。
[0124]图21是示出了根据至少一个实施方案的用于确定是否授予请求访问一个或多个计算资源的过程2100的说明性实例的流程图。如图12中示出,过程2100包括获得签名密钥化(2102).正如本文用来获得签名密钥的其它叙述,可以各种方式(诸如通过从另一来源接收签名密钥、从存储器检索签名密钥、由可用信息计算签名密钥等)获得签名密钥。
[0125]在实施方案中,规范化所接收的请求I?来形成%,诸如以上文描述的方式。应注意,正如本文描述的其它过程,可能存在变动。例如,执行过程2100 (或另一过程)的变动的计算机系统可能只接收规范化消息且可以由另一计算装置执行规范化。返回到图21的描述,依据(或以其它方式至少部分基于)—计算签名3’。比较所计算的签名密钥3’和所接收的签名3 (2110)以确定所述两个签名是否相等。如果所述两个签名被确定不相等,那么确定会话无效(2112)且可以采取适当行动(诸如拒绝请求如果所述两个签名被确定相等,那么会话有效(2114)且可以采取适当行动(诸如授予访问一个或多个计算资源兄
[0126]如提及,本公开的技术可以用来允许委托授权。图22是示出了根据至少一个实施方案的用于委托授权的过程2200的说明性实例的流程图。可以由计算装置(诸如尝试委托访问一个或多个计算资源的用户的计算装置或计算资源供应商的计算装置或任何合适的计算装置)执行过程2200。如附图中示出,过程2200包括获得会话密钥X# (2202).可以任何合适的方式(诸如其中描述获得上述密钥的方式)获得所获得的会话密钥X#。此外,会话密钥可以是已产生作为委托访问一个或多个计算资源的过程的部分的密钥。例如,可以通过执行过程2200或其变动产生会话密钥。
[0127]在实施方案中,确定会话参数(2004).可以任何合适的方式确定会话参数,诸如上文结合图18描述的。使用已确定(2004)的会话参数,可以产生新会话密钥1(3(1+1),诸如上文描述的,包括上文结合图19描述的。一旦产生,可以将新会话密钥提供给受委托者。例如,可以用电子消息将会话密钥发送到受委托者。可以将会话密钥直接或间接提供给受委托者。例如,会话密钥可以被给予委托者,且委托者可以负责将会话密钥提供给一个或多个受委托者。也可以将其它信息提供给受委托者。例如,可以将会话参数提供给受委托者以使受委托者能够给会话参数提供签名,从而使会话参数的接收器(例如,验证器)产生预期签名以验证所提供签名是否有效。例如,接收器可以使用参数以从秘密证书或从秘密证书导出的密钥来产生会话密钥且使用所述会话密钥以产生对应签名消息的规范化版本的签名。一般来说,参数可以任何合适的方式提供给签名的接收器以使接收器能够验证消息签名,且如果接收器独立于受委托者访问参数,那么受委托者不一定需要访问参数。
[0128]例如,图23示出了图2300,其示出了可以如何多次委托特权。委托者2302可以希望授予受委托者2304 —个或多个访问特权。然而,在这个实例中,受委托者2304可以希望将一个或多个特权提供给另一受委托者2306。因此,在这个实例中,受委托者2304可以成为委托者。类似地,受委托者2306可以希望向另一受委托者提供访问,且所述受委托者可以希望将访问授予另一受委托者(以此类推)直到最终授予又一受委托者2308 —个或多个特权为止。
[0129]因此,在这个实例中,初始委托者2302提交对可以是故障区的服务的基于会话的认证服务2310的委托请求,如上文描述的。在实施方案中,诸如上文结合图22描述的,作为响应,基于会话的认证服务产生会话密钥并将会话密钥提供给委托者2302。在实施方案中,委托者2302然后将接收自基于会话的认证服务2310的会话密钥提供给受委托者2304。受委托者2304可以将会话密钥提供给另一受委托者2306。以此方式,受委托者2306将接收由受委托者2304接收的特权范围,受委托者2304接收的特权范围将与提供给受委托者2306的特权范围相同。
[0130]然而,仍如图23中示出,受委托者2304可以提交对基于会话的认证服务2310的委托请求并接收响应于委托请求而由基于会话的认证服务2310产生的不同会话密钥。受委托者2304可以将这个新会话密钥提供给下一个受委托者2306。所述下一个受委托者2306可以将会话密钥提供给又一受委托者,或如上文描述也可以提交对基于会话的认证服务2310的委托请求,基于会话的认证服务2310将然后产生会话密钥并将会话密钥提供给提交委托请求的受委托者2306。如图23中指示,这可以继续且受委托者中的一个或多个可以尝试使用他或她已接收的会话密钥。
[0131]在这个特定实例中,受委托者2308结合请求将会话密钥提供给计算资源2312。如上文,虽然所述请求可以包括会话密钥,但是会话密钥可以独立于所述请求而提供。计算资源2312可以是上文描述的计算资源中的任何一个或一般来说任何计算资源。策略管理服务2314可以包括验证器,诸如上文描述,且当请求计算资源时可以使确认请求。虽然图23中单独示出,但是计算资源2312和策略管理服务2314也可以是单个组件。此外,虽然图23示出了用来产生会话密钥的单个基于会话的认证服务2310,但是各个实施方案也可以使用不同的基于会话的认证服务。
[0132]如上文提及,除了本文提供的说明性实例以外的多种变动被认为在本公开的范围内。图24示出表示根据实施方案的可以使用来自多次授权的密钥导出密钥的方式的说明性实例的图2400。在图23中,客户密钥Keust是来自由计算资源供应商维持的一组客户密钥。正如上文描述的实施方案,虽然图23结合计算资源供应商讨论了说明性实例,但是其它变动也被认为在本公开的范围内。
[0133]在图24中,维持一组授权密钥,其中每个授权密钥对应于不同的授权域。从客户密钥Krast导出的每个授权密钥可以(例如)传播到不同故障区,诸如上文描述的。故障区可以是(例如)不同策略管辖区中的数据中心。然而,应注意,虽然图24示出了每个分开的授权密钥从单个客户密钥Krast导出,但是也可能存在变动。例如,可以独立地导出分开的授权密钥。作为另一实例,可以从公用密钥导出一个或多个分开的授权密钥,可以从另一公用密钥导出一个或多个其它密钥(等)。
[0134]在实施方案中,多次授权能够组合授权以允许访问一个或多个计算资源。例如,如图24中示出,分开的授权密钥的子集合可以用来导出其它密钥。例如,如图23中示出,标记为Authl和Auth2的两个授权密钥用来导出合并的授权密钥。在实施方案中,为了导出合并的授权密钥,计算HMAC(f(Authl,Auth2),R)的值,其中R是某种限制,诸如上文描述的。在这个实例中,f是分开的授权密钥的函数,且可以是二维以上。例如,如图23中示出,在函数f (AuthI, Auth2, Auth3)中使用三个分开的授权密钥Authl、Auth2和Auth3以依据(或以其它方式至少部分基于)HMAC (f (AuthI, Auth2, Auth3),R)计算合并的授权密钥。
[0135]从不同授权构造密钥的多种变动被认为在本公开的范围内。例如,授权可以使用本公开的各个实施方案产生(或已产生)密钥(κ_。)。每个授权Kspe。可以对应于部分密钥种子,其可以是用来产生其Kspe。的限制的可公开使用编码(或以其它方式可用于消息签名器和签名验证器的编码)。例如,部分密钥种子可以是(Kl/20110810/usa-east-l/DDS、K2/20110810/Org_name/jpl/DDS),其中斜线之间的每个字符串是限制。信息的这种编码可以称为密钥路径。作为更一般实例,部分密钥种子可以是X1/./Xn,其中每个Xi (对于I与η之间的i)对应于参数,诸如上文描述的参数。来自可应用授权的部分密钥种子可以被编
码为称为密钥种子的η元组。刚刚上面实例的η元组可以是(speCl、Spec2.....Specn),其
中每一项是对应1(_。的密钥路径。应注意,密钥种子(和/或密钥路径)编码密钥持有人正通过产生签名/密钥而进行授权的精确密钥使用(所有被授权密钥之间的全限制)。此外,由于部分密钥种子可用于消息签名器和签名验证器两者,因为(例如)消息签名器具有指定使用参数产生签名密钥的次序的信息且因此可产生密钥并因此产生消息,所以用来产生密钥和签名的参数的任意排序是可能的。
[0136]然后可以针对可应用授权中的每个(B卩,将产生密钥的授权)获得或计算HMAC(Kspec,key-seed)的值。在各个实施方案中,这个值可以由获得签名密钥以签名消息的客户端而计算或可以由另一装置计算且随后提供给客户端。出于下列讨论目的,可以将这些值中的每个称作部分密钥。在实施方案中,这些部分密钥中的每个的语义是:它们只有在与下面的构造(和下面的构造的某些变动)相结合时才有效且当结合时形成以密钥种子编码的专门化交集。
[0137]为了产生签名密钥以签名消息,值是
[0138]Ks=HMAC (Partialkey1+...+partial_keyn, key-seed)
[0139]其中“ + ”可以指对公式中的该符号周围的部分密钥的某种关联运算。“ + ”符号可以是(例如)对包括部分密钥的位的异或(XOR)运算。“+”符号也可以指某种其它合适的运算或函数。
[0140]为了验证用来签名消息的签名,验证器可以获得每个部分密钥、如上组合部分密钥以形成签名密钥、签名所接收的消息并比较该结果与预期结果以验证签名,诸如上文讨论的。
[0141]本公开的实例实施方案可根据以下条款加以描述:
[0142]条款1.一种用于提供服务的计算机实施方法,其包括:
[0143]在以可执行指令配置的一个或多个计算机系统的控制下,
[0144]从认证方接收电子信息,所述电子信息编码消息、所述消息的签名和对从与所述认证方共享的秘密证书导出的密钥的一个或多个限制的集合,所述签名可通过对所述消息、所述秘密证书和一个或多个限制的所述集合应用基于哈希的消息认证代码函数而确定,而且在只具有基于哈希的消息认证代码函数而没有一个或多个限制的所述集合时无法确定;
[0145]获得至少部分使用一个或多个限制的所述集合的至少子集而产生的密钥;
[0146]通过至少将以下项输入至所述基于哈希的消息认证代码函数中而由所述一个或多个计算机系统计算基于哈希的消息认证代码函数的值:
[0147]至少部分基于所获得的密钥的第一输入;和
[0148]至少部分基于一个或多个限制的所述集合的第二输入;
[0149]由所述一个或多个计算机系统且至少部分基于所计算的值确定所述签名是否有效;和[0150]在确定所述签名有效时提供对一个或多个计算资源的访问。
[0151]条款2.根据条款I所述的计算机实施方法,其中:
[0152]所述消息包括访问所述一个或多个计算资源的请求;
[0153]所述方法还包括确定一个或多个限制的所述集合是否指示应满足所述请求;和
[0154]取决于确定限制指示应满足所述请求而提供对所述一个或多个计算资源的访问。
[0155]条款3.根据条款2所述的计算机实施方法,其中编码一个或多个限制的所述集合的所述信息由文档加以编码且其中确定限制的所述集合是否指示应满足所述请求包括针对接收所述请求的情境评估所述文档。
[0156]条款4.根据条款I所述的计算机实施方法,其中:
[0157]所述消息包括访问所述一个或多个计算资源的计算资源的请求;
[0158]编码一个或多个限制的所述集合的所述信息包括指定所述计算资源的信息;和
[0159]提供对所述一个或多个计算资源的访问包括在计算资源匹配所指定的计算资源时提供对所述计算资源的访问。
[0160]条款5.根据条款I所述的计算机实施方法,其中:
[0161]编码一个或多个限制的所述集合的所述消息对应于所述消息有效的时间段;且
[0162]确定所述签名是否有效的步骤至少部分基于在所述对应时间段期间所述消息是否被提交。
[0163]条款6.根据条款I所述的计算机实施方法,其中:
[0164]编码一个或多个限制的所述集合的所述消息对应于至少部分基于位置的限制;且
[0165]确定所述签名是否有效是至少部分基于所述一个或多个计算机中的至少一个的位置是否匹配对应的位置。
[0166]条款7.—种用于提供服务的计算机实施方法,其包括:
[0167]在以可执行指令配置的一个或多个计算机系统的控制下,
[0168]获得编码以下各项的电子信息:(i)消息;(ii)所述消息的第一签名jP(iii)一个或多个参数的集合,所述第一签名已经至少部分基于(i)所述消息、(ii)秘密证书和
(iii)一个或多个参数的所述集合而产生,而且所述第一签名在只具有所述消息和所述秘密证书而不具有一个或多个参数的所述集合时无法确定;
[0169]至少部分基于所述秘密证书和一个或多个参数的所述集合的至少子集导出第二证书;
[0170]至少部分基于所导出的第二证书产生第二签名;
[0171]确定所述第一签名是否匹配所述第二签名;和
[0172]在所产生的第二签名匹配所述第一签名时提供对一个或多个计算资源的访问。
[0173]条款8.根据条款7所述的计算机实施方法,其中导出所述第二证书包括将所述秘密证书和一个或多个参数的所述集合的所述至少子集输入至函数中。
[0174]条款9.根据条款8所述的计算机实施方法,其中所述函数是对称消息认证函数。
[0175]条款10.根据条款9所述的计算机实施方法,其中所述对称消息认证函数是哈希函数。
[0176]条款11.根据条款9所述的计算机实施方法,其中,作为基于哈希的消息认证代码(HMAC)的部分,执行将所述秘密证书和一个或多个参数的所述至少子集输入至所述函数中。
[0177]条款12.根据条款8所述的计算机实施方法,其中产生所述第二签名包括将所述函数的输出和来自一个或多个参数的所述集合的参数两者输入至所述函数中。
[0178]条款13.根据条款7所述的计算机实施方法,其中编码所述一个或多个参数的所述消息包括编码一个或多个参数的所述集合的电子文档。
[0179]条款14.根据条款8所述的计算机实施方法,其中:
[0180]产生所述第二签名的步骤至少部分基于密钥;
[0181]一个或多个参数的所述集合包括所述密钥的使用上的一个或多个限制;和
[0182]根据所述一个或多个限制执行提供对所述一个或多个计算资源的访问。
[0183]条款15.根据条款14所述的计算机实施方法,其中所述密钥至少部分基于将所述秘密证书输入至函数中的结果。
[0184]条款16.—种具有存储在其上的指令的非瞬时性计算机可读存储介质,所述指令在由计算机系统执行时促使所述计算机系统至少进行以下各项:
[0185]获得从至少秘密证书和用于中间密钥的一个或多个参数中导出的所述中间密钥;
[0186]至少部分基于所获得的中间密钥来应用产生消息的签名的签名产生过程的至少部分,所述签名产生过程被配置成使得所述签名对于具有所述消息、所述秘密证书和所述签名但是缺少所述一个或多个限制的计算装置而言是无法由所述签名产生过程确定的;和
[0187]将所述消息、所述签名和所述一个或多个参数提供给被配置来至少部分基于所述一个或多个参数和所述消息分析所述签名的另一计算机系统以确定所述签名是否有效。
[0188]条款17.根据条款16所述的非瞬时性计算机可读存储介质,其中所述一个或多个参数编码至少部分由所述另一计算机系统实施的所述中间密钥的使用上的一个或多个限制。
[0189]条款18.根据条款16所述的非瞬时性计算机可读存储介质,其中所述一个或多个限制对应于所述中间密钥可使用所在的时间段、所述中间密钥可使用所在的位置和所述中间密钥可用于获得访问的一个或多个服务中的至少一个。
[0190]条款19.根据条款16所述的非瞬时性计算机可读存储介质,其中所述指令在由所述计算机系统执行时使所述计算机系统能够产生所述签名而无需所述计算机系统具有对所述秘密证书的访问。
[0191]条款20.根据条款19所述的非瞬时性计算机可读存储介质,其中在具有一个或多个参数的所述集合的情况下,所述签名可使用所述共享秘密证书或所述中间密钥由所述签名产生过程确定。
[0192]条款21.根据条款19所述的非瞬时性计算机可读存储介质,其中获得所述中间密钥包括执行算法,在所述算法中将哈希函数的至少一个输出和所述参数中的至少一个输入至所述哈希函数中。
[0193]条款22.—种计算机系统,其包括:
[0194]一个或多个处理器;和
[0195]包括指令的存储器,所述指令在由计算机系统的一个或多个处理器执行时促使所述计算机系统至少进行以下各项:[0196]接收一个或多个电子通信,所述一个或多个电子通信共同地编码消息、所述消息的签名和一个或多个参数,所述签名是至少部分基于所述秘密证书和所述一个或多个参数而产生的;
[0197]至少部分基于所述一个或多个参数和中间证书来分析所述消息和所述签名以确定所述签名是否有效,其中,从所述一个或多个参数的至少部分和所述秘密证书,但是在没有所述秘密证书的情况下,导出所述中间证书;和
[0198]取决于确定所述签名是有效的而采取一个或多个行动。
[0199]条款23.根据条款22所述的计算机系统,其中:
[0200]所述存储器和所述一个或多个处理器是第一地理位置中的第一服务器系统的部分;
[0201]所述计算机系统包括第二地理位置中的第二服务器系统,所述第二服务器系统被配置来至少部分基于所述秘密证书产生不同的签名;
[0202]所述第一服务器系统和所述第二服务器系统均缺少所述秘密证书;
[0203]分析所述消息和所述签名包括将所述一个或多个参数的所述至少部分和所述中间证书输入至函数中;和
[0204]所述第一服务器系统和所述第二服务器系统各自缺少信息,从所述信息可使用所述函数从所述消息中产生相同签名。
[0205]条款24.根据条款22所述的计算机系统,其中:
[0206]所述计算机系统对应于服务;且
[0207]所述一个或多个行动包括提供对所述服务的访问。
[0208]条款25.根据条款24所述的计算机系统,其中所述一个或多个参数限制使用所述中间证书用于访问所述服务。
[0209]条款26.根据条款22所述的计算机系统,其中:
[0210]分析所述消息和所述签名包括对所述中间证书应用哈希函数;
[0211]所述一个或多个参数包括所述中间证书的使用上的多个限制;且
[0212]其中所述计算机系统被配置来实施所述限制。
[0213]条款27.根据条款22所述的计算机系统,其中:
[0214]分析所述消息和所述签名包括对从所述秘密证书导出的密钥应用哈希函数;且
[0215]所述指令在由所述计算机系统的所述一个或多个处理器执行时促使所述计算机系统进一步从密钥授权计算机系统接收所导出的密钥。
[0216]条款28.根据条款27所述的计算机系统,其中促使所述计算机系统进一步从所述密钥授权计算机系统接收所导出的密钥的所述指令促使所述计算机系统在接收所述消息之前从所述密钥授权计算机系统接收所导出的密钥。
[0217]条款29.根据条款22所述的计算机系统,其中所述中间证书由不同于所述计算机系统的另一计算机系统确定。
[0218]各个实施方案还可以在各种各样的操作环境中实施,在一些情况中所述操作环境可包括可用于操作任何数量的应用的一个或多个用户计算机、计算装置或处理装置。用户或客户端装置可包括任何数量的通用个人计算机,诸如运行标准操作系统的桌上型或膝上型计算机和运行移动软件且能够支持多种联网和消息传递协议的蜂窝装置、无线装置和手持装置。这种系统也可包括运行任何种类的商购操作系统和其它已知应用的多个工作站以用于诸如研发和数据库管理的目的。这些装置也可包括其它电子装置,诸如虚拟终端、瘦客户端、游戏系统和能够经由网络进行通信的其它装置。
[0219]大部分实施方案利用为本领域一般技术人员所熟悉的用于支持使用任何种类的商购协议(诸如TCP/IP、OS1、FTP、UPnP, NFS、CIFS和AppleTalk)进行通信的至少一个网络。网络可能是(例如)局域网、广域网、虚拟专用网络、互联网、内部网、外部网、公用电话交换网、红外线网络、无线网络和其任何组合。
[0220]在利用网页服务器的实施方案中,网页服务器可运行任何种类的服务器或中间层应用,包括HTTP服务器、FTP服务器、CGI服务器、数据服务器、Java服务器和商用服务器。服务器也可以能够响应于来自用户装置的请求而执行程序或脚本,诸如通过执行一个或多个网页应用,所述网页应用可以被实施为以任何编程语言(诸如Javal1、C、C#或C++)或任何脚本语言(诸如Perl、Python或TCL)和其组合写入的一个或多个脚本或程序。服务器也可以包括数据库服务器,包括(不限于)从Oracle' Microsoft' 3丫匕336@和13^'1<商购的服务器。
[0221]如上文讨论,所述环境可包括各种数据存储和其它存储器和存储介质。这些可驻留在各个位置中,诸如近距计算机中的一个或多个(和/或驻留在计算机中的一个或多个中)或跨网络远距计算机中的任何一个或所有的存储介质上。在特定的实施方案集中,信息可以驻留在本领域一般技术人员所熟悉的存储区域网(“SAN”)中。类似地,可以酌情地本地和/或远程存储用于执行专属于计算机、服务器或其它网络装置的功能的任何必要文件。如果系统包括计算化装置,那么每个这样的装置可包括可以经由总线电耦接的硬件元件,所述元件包括(例如)至少一个中央处理单元(CPU)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏或小键盘)和至少一个输出装置(例如,显示装置、打印机或扬声器)。这样的系统也可以包括一个或多个存储装置,诸如硬盘驱动器、光学存储装置和固态存储装置,诸如随机存取存储器(“RAM”)或只读存储器(“ROM”)和可移除介质装置、存储卡、快闪等。
[0222]这些装置也可包括如上文描述的计算机可读存储介质阅读器、通信装置(例如,调制解调器、网卡(无线或有线)、红外线通信装置等)和工作存储器。计算机可读存储介质阅读器可链接或被配置来接收计算机可读存储介质,其表示远程、本地、固定和/或可移除存储装置和用于瞬时和/或更永久地包括、存储、传输和检索计算机可读信息的存储介质。系统和各种装置通常也将包括多种软件应用、模块、服务或位于至少一个工作存储器装置内的其它元件(包括操作系统和应用程序,诸如客户端应用或网页浏览器)。应明白,替代实施方案可以具有自上文描述的多种变动。例如,也可能使用定制硬件和/或可能在硬件、软件(包括便携式软件、诸如小应用)或两者中实施特定元件。此外,可以采用到其它计算装置的连接,诸如网络输入/输出装置。
[0223]用于包括代码或代码部分的存储介质和计算机可读介质可包括本领域中已知或使用的任何适当的介质,包括存储介质和通信介质,诸如(但不限于)以任何方法或技术实施的用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的易失性和非易失性、可移动和不可移动介质(包括RAM、R0M、EEPR0M、快闪存储器或其它存储器技术、CD-ROM、数字通用光盘(DVD)或其它光学存储、磁带盒、磁带、磁盘存储或其它磁性存储装置或可用来存储所希望的信息并可由系统装置访问的任何其它介质)。基于本文提供的公开和教学,本领域一般技术人员应明白实施各个实施方案的其它方式和/或方法。
[0224]说明书和附图因此被视为具有说明性意义而不是限制性意义。然而,明显的是,可以在不违背如权利要求中陈述的本发明的更广泛精神和范围的情况下作出各种修改和改变。
[0225]其它变动是在本公开的精神内。因此,虽然所公开的技术可具有各种修改和替代结构,但是也在附图中示出了且在上文详细描述了其某些示出的实施方案。然而,应了解,不旨在将本发明限于所公开的一种或多种具体形式,反而本发明旨在涵盖落在如随附权利要求中定义的本发明的精神和范围内的所有修改、替代结构和等效物。
[0226]除非本文另有指示或上下文明显矛盾,否则术语“a (—)”和“an (—个)”和“the(所述)”和描述公开实施方案的上下文(尤其是下列权利要求的上下文)中的类似参考符号的使用均被解释为涵盖单数和复数两者。除非另有提及,否则术语“comprising (包括)”、“having (具有)”、“including (包括)”和“containing (包括)”均被解释为开放式术语(即,意指“包括但不限于”)。即使存在某种干预,术语“connected (已连接)”仍被解释为部分或全部包括在内、附接到或连结在一起。除非本文另有指示,否则本文的值范围的叙述只旨在用作个别参考落在所述范围内的每个单独值的速记方法,且每个单独值如同其在本文被个别叙述一样而合并在说明书中。除非本文另有指示或上下文明显矛盾,否则本文描述的所有方法均以任何合适的次序加以执行。除非另有说明,否则本文提供的任何和所有实例或示例性语言(例如,“诸如”)的使用只旨在更好地阐述本发明的实施方案且没有强加限制本发明的范围。说明书中应没有任何语言被解释为指示实践本发明所必需的任何未说明元件。
[0227]本文描述了本公开的优选实施方案,包括
【发明者】已知用于实行本发明的最佳模式。本领域一般技术人员在阅读前文描述之后可以更加明白所述优选实施方案的变动。
【发明者】希望本领域一般技术人员酌情采用这些变动,且
【发明者】希望以其它方式而不是如本文具体描述般实践本发明。因此,本发明包括随附于本发明的权利要求中叙述且适用法律允许的主题的所有修改和等效物。此外,除非本文另有指示或上下文明显矛盾,否则本发明的所有可能变动中的上述元件的任何组合包括在本发明中。
[0228]本文叙述的所有参考物(包括出版物、专利申请和专利)以引用的方式以与每个参考被个别且具体指示成以引用方式并入且在本文全部陈述的相同程度并入本文。
【权利要求】
1.一种用于提供服务的计算机实施方法,其包括: 在以可执行指令配置的一个或多个计算机系统的控制下, 从认证方接收电子信息,所述电子信息编码消息、所述消息的签名和对从与所述认证方共享的秘密证书导出的密钥的一个或多个限制的集合,所述签名可通过对所述消息、所述秘密证书和一个或多个限制的所述集合应用基于哈希的消息认证代码函数而确定,而且在只具有基于哈希的消息认证代码函数而没有一个或多个限制的所述集合时无法确定; 获得至少部分使用一个或多个限制的所述集合的至少子集而产生的密钥; 通过至少将以下项输入至所述基于哈希的消息认证代码函数中而由所述一个或多个计算机系统计算基于哈希的消息认证代码函数的值: 至少部分基于所获得的密钥的第一输入;和 至少部分基于一个或多个限制的所述集合的第二输入; 由所述一个或多个计算机系统且至少部分基于所计算的值确定所述签名是否有效;和 在确定所述签名有效时提供对一个或多个计算资源的访问。
2.根据权利要求1所述的计算机实施方法,其中: 所述消息包括访问所述一个或多个计算资源的请求; 所述方法还包括确定一个或多个限制的所述集合是否指示应满足所述请求;和 取决于确定限制指示应满足所述请求而提供对所述一个或多个计算资源的访问。
3.根据权利要求2所述的计算机实施方法,其中编码一个或多个限制的所述集合的所述信息由文档加以编码且其中确定限制的所述集合是否指示应满足所述请求包括针对接收所述请求的情境评估所述文档。
4.根据权利要求1所述的计算机实施方法,其中: 所述消息包括访问所述一个或多个计算资源的计算资源的请求; 编码一个或多个限制的所述集合的所述信息包括指定所述计算资源的信息;和提供对所述一个或多个计算资源的访问包括在计算资源匹配所指定的计算资源时提供对所述计算资源的访问。
5.根据权利要求1所述的计算机实施方法,其中: 编码一个或多个限制的所述集合的所述消息对应于所述消息有效的时间段;且确定所述签名是否有效的步骤至少部分基于在所述对应时间段期间所述消息是否被提交。
6.根据权利要求1所述的计算机实施方法,其中: 编码一个或多个限制的所述集合的所述消息对应于至少部分基于位置的限制;且确定所述签名是否有效是至少部分基于所述一个或多个计算机中的至少一个的位置是否匹配所述对应的位置。
7.一种用于提供服务的计算机实施方法,其包括: 在以可执行指令配置的一个或多个计算机系统的控制下, 获得编码以下各项的电子信息:(i )消息;(ii )所述消息的第一签名;和(iii ) 一个或多个参数的集合,所述第一签名已经至少部分基于(i)所述消息、(ii)秘密证书和(iii)一个或多个参数的所述集合而产生,而且所述第一签名在只具有所述消息和所述秘密证书而不具有一个或多个参数的所述集合时无法确定;至少部分基于所述秘密证书和一个或多个参数的所述集合的至少子集导出第二证书; 至少部分基于所导出的第二证书产生第二签名; 确定所述第一签名是否匹配所述第二签名;和 在所产生的第二签名匹配所述第一签名时提供对一个或多个计算资源的访问。
8.根据权利要求7所述的计算机实施方法,其中导出所述第二证书包括将所述秘密证书和一个或多个参数的所述集合的所述至少子集输入至函数中。
9.根据权利要求8所述的计算机实施方法,其中所述函数是对称消息认证函数。
10.根据权利要求9所述的计算机实施方法,其中所述对称消息认证函数是哈希函数。
11.根据权利要求9所述的计算机实施方法,其中,作为基于哈希的消息认证代码(-0的部分,执行将所述秘密证书和所述一个或多个参数的所述至少子集输入至所述函数中。
12.根据权利要求8所述的计算机实施方法,其中产生所述第二签名包括将所述函数的输出和来自一个或多个参数的所述集合的参数两者输入至所述函数中。
13.根据权利要求7所述的计算机实施方法,其中编码所述一个或多个参数的所述消息包括编码一个或多个参数的所述集合的电子文档。
14.根据权利要求8所述的计算机实施方法,其中: 产生所述第二签名的步骤至少部分基于密钥; 一个或多个参数的所述集合包括所述密钥的使用上的一个或多个限制;和 根据所述一个或多个限制执行提供对所述一个或多个计算资源的访问。
15.根据权利要求14所述的计算机实施方法,其中所述密钥至少部分基于将所述秘密证书输入至函数中的结果。
16.—种非瞬时性计算机可读存储介质,所述非瞬时性计算机可读存储介质具有在所述非瞬时性计算机可读存储介质上存储的指令,所述指令在由计算机系统执行时促使所述计算机系统至少进行以下各项: 获得从至少秘密证书和用于中间密钥的一个或多个参数中导出的所述中间密钥; 至少部分基于所获得的中间密钥来应用产生消息的签名的签名产生过程的至少部分,所述签名产生过程被配置成使得所述签名对于具有所述消息、所述秘密证书和所述签名但是缺少所述一个或多个限制的计算装置而言是无法由所述签名产生过程确定的;和 将所述消息、所述签名和所述一个或多个参数提供给被配置来至少部分基于所述一个或多个参数和所述消息分析所述签名的另一计算机系统以确定所述签名是否有效。
17.根据权利要求16所述的非瞬时性计算机可读存储介质,其中所述一个或多个参数编码至少部分由所述另一计算机系统实施的所述中间密钥的使用上的一个或多个限制。
18.根据权利要求16所述的非瞬时性计算机可读存储介质,其中所述一个或多个限制对应于所述中间密钥可使用所在的时间段、所述中间密钥可使用所在的位置,和所述中间密钥可用于获得访问的一个或多个服务中的至少一个。
19.根据权利要求16所述的非瞬时性计算机可读存储介质,其中在由所述计算机系统执行时所述指令使所述计算机系统能够产生所述签名而无需所述计算机系统具有对所述秘密证书的访问。
20.根据权利要求19所述的非瞬时性计算机可读存储介质,其中在具有一个或多个参数的所述集合的情况下,所述签名可使用所述共享秘密证书或所述中间密钥由所述签名产生过程确定。
21.根据权利要求19所述的非瞬时性计算机可读存储介质,其中获得所述中间密钥包括执行算法,在所述算法中将哈希函数的至少一个输出和所述参数中的至少一个输入至所述哈希函数中。
22.—种计算机系统,其包括: 一个或多个处理器;和 包括指令的存储器,所述指令在由计算机系统的一个或多个处理器执行时促使所述计算机系统至少进行以下各项: 接收一个或多个电子通信,所述一个或多个电子通信共同地编码消息、所述消息的签名和一个或多个参数,所述签名是至少部分基于所述秘密证书和所述一个或多个参数而产生的; 至少部分基于所述一个或多个参数和中间证书来分析所述消息和所述签名以确定所述签名是否有效,其中,从所述一个或多个参数的至少部分和所述秘密证书,但在没有所述秘密证书的情况下,导出所述中间证书;和 取决于确定所述签名是有效的而采取一个或多个行动。
23.根据权利要求22所述的计算机系统,其中: 所述存储器和所述一个或多个处理器是第一地理位置中的第一服务器系统的部分;所述计算机系统包括第二地理位置中的第二服务器系统,所述第二服务器系统被配置来至少部分基于所述秘密证书产生不同的签名; 所述第一服务器系统和所述第二服务器系统均缺少所述秘密证书; 分析所述消息和所述签名包括将所述一个或多个参数的所述至少部分和所述中间证书输入至函数中;和 所述第一服务器系统和所述第二服务器系统各自缺少信息,由所述信息可使用所述函数从所述消息中产生相同签名。
24.根据权利要求22所述的计算机系统,其中: 所述计算机系统对应于服务;且 所述一个或多个行动包括提供对所述服务的访问。
25.根据权利要求24所述的计算机系统,其中所述一个或多个参数限制使用所述中间证书用于访问所述服务。
26.根据权利要求22所述的计算机系统,其中: 分析所述消息和所述签名包括对所述中间证书应用哈希函数; 所述一个或多个参数包括所述中间证书的使用上的多个限制;且 其中所述计算机系统被配置来实施所述限制。
27.根据权利要求22所述的计算机系统,其中: 分析所述消息和所述签名包括对从所述秘密证书导出的密钥应用哈希函数;且所述指令在由所述计算机系统的所述一个或多个处理器执行时促使所述计算机系统进一步从密钥授权计算机系统接收所导出的密钥。
28.根据权利要求27所述的计算机系统,其中促使所述计算机系统进一步从所述密钥授权计算机系统接收所导出的密钥的所述指令促使所述计算机系统在接收所述消息之前从所述密钥授权计算机系统接收所导出的密钥。
29.根据权利要求22所述的计算机系统,其中所述中间证书由不同于所述计算机系统的另一计算机 系统确定。
【文档编号】G06F15/16GK103842984SQ201280047625
【公开日】2014年6月4日 申请日期:2012年9月28日 优先权日:2011年9月29日
【发明者】G·B·罗斯, B·J·贝姆, E·D·克拉恩, C·M·伊拉茨, N·R·费奇, E·J·布兰德怀恩, K·R·奥尼尔 申请人:亚马逊技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1