CN116941215A - 高可用性密码密钥 - Google Patents

高可用性密码密钥 Download PDF

Info

Publication number
CN116941215A
CN116941215A CN202180092603.7A CN202180092603A CN116941215A CN 116941215 A CN116941215 A CN 116941215A CN 202180092603 A CN202180092603 A CN 202180092603A CN 116941215 A CN116941215 A CN 116941215A
Authority
CN
China
Prior art keywords
key
computing
request
cryptographic
region
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180092603.7A
Other languages
English (en)
Inventor
迪维耶什·A·萨哈
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN116941215A publication Critical patent/CN116941215A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/76Proxy, i.e. using intermediary entity to perform cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Automation & Control Theory (AREA)
  • Storage Device Security (AREA)

Abstract

用于提供经加密密码密钥的系统和方法。系统获得生成数据密钥的请求。系统生成数据密钥和数据结构,该数据结构包括用来自计算区域集的密钥加密的数据密钥。系统响应于请求提供数据结构和数据密钥。数据结构可用于根据计算区域集中的至少一个计算区域可用来获得数据密钥。

Description

高可用性密码密钥
相关申请的交叉引用
本申请要求2020年12月4日提交的名称为“HIGHLY-AVAILABLE CRYPTOGRAPHICKEYS”的美国专利申请号17/112,540的优先权,其公开内容全文以引用的方式并入本文。
背景技术
客户可出于各种目的使用计算资源服务提供商,诸如执行密码操作以保护数据。客户可以利用数据密钥来加密数据,并且继而使用计算资源服务提供商的密码服务使用信封加密技术使用托管密钥来加密数据密钥。在计算资源服务提供商内,可以存在若干计算区域(compute regions),该计算区域支持彼此独立地操作的密码服务实例并且具有特定于相应区域的托管密钥。然而,跨多个地理区域执行密码操作可能具有挑战性,因为密码操作中使用的密码密钥有时可能只能在特定计算区域中使用。
附图说明
将参考附图描述各种技术,在附图中:
图1示出了其中客户端获得经加密数据密钥结构的计算环境的说明性示例;
图2示出了经加密数据密钥结构的计算环境的说明性示例;
图3示出了端点路由服务的计算环境的说明性示例;
图4示出了生成数据密钥请求的示例性图;
图5示出了解密请求的示例性图;
图6示出了解密请求的计算环境的说明性示例;
图7示出了生成高可用性数据密钥的过程的说明性示例;
图8示出了使用经加密密码密钥数据结构来执行密码操作的过程的说明性示例;并且
图9示出了其中可以实现各种实施方案的系统。
具体实施方式
本文描述的技术包括提供可以跨多个区域使用的密码密钥的系统和方法。在各种实施方案中,计算资源服务提供商操作密码服务(其可以称为密钥管理服务或“KMS”),所述密码服务管理密码密钥并代表计算资源服务提供商的客户端使用密码密钥来执行密码操作。客户端可以向计算资源服务提供商提交针对要由计算资源服务提供商执行的操作的各种请求。密码服务可以提供网页服务接口,客户端可以向所述网页服务接口提交请求以执行使用密码密钥的密码操作。
计算资源服务提供商可以在多个计算区域提供密码服务。计算区域可以指由计算资源服务提供商提供的一组资源并且可以对应于地理位置或区域。在实施方案中,密码服务在多个计算区域中实现,使得每个计算区域具有独立于其他实例的密码服务实例(例如,被实现和/或使用单独的硬件,使得影响一个计算区域的故障诸如停电不影响另一个计算区域的密码服务实例的可用性)。计算区域可以包括特定于区域的密码密钥,其可以由计算区域的密码服务实例利用来执行密码操作。例如,由区域的密码服务实例执行的密码操作使用特定于区域的密码密钥,并且由不同区域的不同密码服务实例执行的不同密码操作使用不同的特定于区域的密码密钥。密码服务实例可以响应于来自客户端的请求,为客户端提供可以在多个区域中解密的高可用性经加密数据密钥结构。
在至少一个示例中,通过客户端向密码服务实例提交创建数据密钥的请求来创建高可用性经加密数据密钥结构,所述数据密钥可以由客户端使用来利用信封加密技术来加密各种数据对象。数据密钥也可以称为“数据加密密钥”并且可以指由客户端用来加密数据的合适的密码密钥。响应于创建数据密钥的请求,客户端可以接收包括明文数据密钥和高可用性经加密数据密钥结构(其可以由多个计算区域中的多个密码服务实例解密)两者的响应。客户端可以与主计算区域和多个计算区域中的密码密钥(称为托管密钥)相关联(托管密钥可以由主计算区域和多个计算区域中的密码服务实例代表客户端维护)。“托管密钥”也可以称为“密钥加密密钥”,其用于加密数据加密密钥。创建高可用性经加密数据密钥结构的请求可以包括要支持的计算区域的列表和可以用于确定应如何对使用高可用性经加密数据密钥结构的后续密码请求进行路由(诸如当来自列表的多个计算区域同时可用时)的偏好信息。响应于请求,密码服务实例可以首先生成数据密钥,并且然后使用来自主计算区域以及来自客户端在请求中所指定的多个计算区域中的每个计算区域的托管密钥来加密数据密钥。在一些情况下,密码服务实例:向请求中列出的计算区域中的每一个中的密码服务实例提交包括数据密钥的加密请求;并且响应于请求,获得使用特定于区域的托管密钥加密的经加密数据密钥(例如,经加密数据密钥中的每个经加密数据密钥由特定计算区域的特定密码服务实例使用来自特定计算区域的特定于区域的托管密钥来加密)。在各种情况下,使用第一区域的托管密钥加密的经加密数据密钥无法由第二区域解密,因为第一区域的特定于区域的托管密钥不同于第二区域的特定于区域的托管密钥。密码服务实例可以将经加密数据密钥中的每个经加密数据密钥与对应计算区域的标识符相关联,并生成高可用性经加密数据密钥结构,其包括与对应计算区域和偏好信息相关联的经加密数据密钥。高可用性经加密数据密钥结构可以为不透明数据结构,使得与高可用性经加密数据密钥结构的对应计算区域和偏好信息相关联的经加密数据密钥不可由客户端读取。密码服务实例随后可以响应于请求而向客户端提供高可用性经加密数据密钥结构和数据密钥。
取决于在创建高可用性经加密数据密钥结构期间指定的计算区域中的至少一者可用,客户端可以使用高可用性经加密数据密钥结构来执行密码操作。各种事件可能导致计算区域变得不可用或以其他方式对其他计算机系统不可访问,所述各种事件诸如停电、自然灾害、计划内中断(例如,与数据中心服务器的硬件和/或软件升级有关)等。当客户端提交具有高可用性经加密数据密钥结构的请求(例如,加密或解密请求)时,端点路由服务可以获得所述请求并检查高可用性经加密数据密钥结构。端点路由服务可以分析高可用性经加密数据密钥结构的偏好信息和所指示的计算区域。端点路由服务可以监测所指示的计算区域的状态(例如,确定所指示的计算区域中的哪些计算区域可用和可访问),并至少部分地基于偏好信息来确定所指示的计算区域中要将请求路由到的可用计算区域。例如,偏好信息指示计算区域的次序,其中端点路由服务选择可用计算区域的次序中排序最高的计算区域。端点路由服务可以随后将请求路由到可用计算区域的密码服务实例。在一些示例中,端点路由服务仅将高可用性经加密数据密钥结构的与可用计算区域相对应的部分路由到可用计算区域的密码服务实例,所述部分诸如高可用性经加密数据密钥结构的与可用计算区域相对应的经加密数据密钥(例如,用来自可用计算区域的托管密钥加密的经加密数据密钥)。密码服务实例可以使用特定于可用计算区域的托管密钥来解密经加密数据密钥,并将经解密密钥提供给客户端。
在前面和下面的描述中,描述了各种技术。出于解释的目的,将阐述具体的配置和细节,以便提供对实现这些技术的可能方式的透彻理解。然而,还将显而易见的是,以下描述的技术可以在没有具体细节的情况下以不同的配置来实践。此外,为了避免所描述的技术变得模糊,可能省略或简化众所周知的特征。
如根据本公开本领域技术人员将理解的,某些实施方案可以能够实现某些优点,包括以下中的一些或全部:通过提供生成经加密密码密钥的能力来改进计算系统的功能,所述经加密密码密钥可以跨多个计算区域进行解密;以及通过提供在一个或多个计算区域不可用时解密经加密密码密钥的能力来提高经加密密码密钥的可靠性;以及各种其他优点。
图1示出了其中客户端获得经加密数据密钥结构的计算环境100的说明性示例。计算环境100包括客户端102,所述客户端可以向主计算区域110提交包括区域106数据和偏好108数据的请求104。主计算区域110的密码服务实例可以生成数据密钥114并用托管密钥112来加密数据密钥114以生成经加密数据密钥116。密码服务实例可以使数据密钥114在计算区域(A)118(A)中使用托管密钥(A)120(A)来加密,在计算区域(B)118(B)中使用托管密钥(B)120(B)来加密,以及在各种其他计算区域中加密。密码服务实例可以提供响应122,所述响应包括数据密钥114以及包括经加密数据密钥的经加密数据密钥结构124。客户端102可以获得响应122并在一个或多个密码操作中使用经加密数据密钥结构124。
在实施方案中,密码服务为计算资源的集合,所述计算资源被共同配置为针对计算资源服务提供商的客户端管理和使用密码密钥。由密码服务使用的密码密钥可以具有相关联的标识符,客户端可以在提交请求以执行密码操作(诸如加密、解密和消息签名)和/或其他操作(诸如密钥轮换)时引用所述标识符。密码服务可以安全地维护硬件安全模块中的密码密钥,以避免由未经授权方访问。密码服务可以提供加密密钥,诸如数据密钥(DK),可以使用密码服务内包含的托管密钥(MK)对所述加密密钥进行加密。加密密钥可以为一类密码密钥,其在实施方案中为适合用于密码算法(例如,加密算法、解密算法、数字签名算法)中的密钥,所述密码算法对数据的方面进行密码保护,诸如通过提供对数据的机密性、完整性和/或真实性的可密码验证的保证。
托管密钥可以为由加密服务代表一个或多个客户端维护的密码密钥,并且从不以明文形式从密码服务导出。每个托管密钥可以绑定到特定客户端,并且只能由所述特定客户端或者在指示对托管密钥的使用获得所述客户端授权的情况下(诸如在客户端将使用托管密钥的权限委托给另一计算实体的情况下)使用。托管密钥可以为对称密码密钥或非对称加密密钥——对于非对称密码密钥,托管密钥可以具体地指非对称密钥对的私钥。在一些实施方案中,托管密钥为非对称密码密钥,其中特定托管密钥包括私人部分和公开部分,其中公开部分用于一些密码操作(诸如加密和验证数字签名),并且私人部分用于其他密码操作(诸如解密和生成数字签名);私人部分可以由密码服务维护,并且被设计成永远不以明文形式从密码服务导出。在各种实施方案中,密码密钥称为密钥、密码学密钥、密码操作密钥、密码秘密、密码材料和/或其变型。在一些实施方案中,托管密钥为与计算资源服务提供商的特定客户端相关联的密码密钥并且用于执行各种密码操作诸如加密和解密。数据密钥可以生成并用于加密数据;可以通过托管密钥加密数据密钥,并且可以丢弃或以其他方式删除明文数据密钥。经加密数据可以通过以下方式来解密:首先用托管密钥解密数据密钥,随后使用经解密数据密钥对经加密数据进行解密。
密码服务可以实现在多个计算区域中,诸如主计算区域110、计算区域(A)118(A)和计算区域(B)118(B),其中每个计算区域可以具有独立于其他实例的密码服务的实例。计算区域可以指由计算资源服务提供商提供的一组资源并且可以对应于地理位置或区域。在各种实施方案中,计算区域为由计算资源服务提供商提供的一个或多个硬件和/或软件计算资源的逻辑分组。计算区域可以对应于一个或多个硬件和/或软件计算资源可以位于其中和/或在其中实现的地理位置或区域。在一些示例中,计算区域是指映射到计算区域的物理数据中心的可用性区的集合。客户端可以经由应用程序编程接口(API)请求与密码服务实例通信,所述API请求可以为网页服务API请求。对密码服务实例的API请求可以指示密码服务实例的计算区域。客户端可以通过一个或多个网络(诸如互联网)访问密码服务实例。客户端可以利用经密码保护的通信会话与密码服务实例通信。客户端可以通过一个或多个网页服务接口向密码服务实例提交经适当配置的API请求。如果API请求被充分格式化并且包含足以使接收系统(例如,密码服务实例)完成所述请求的信息(例如,认证信息,诸如数字签名或其他凭证或从凭证生成的信息),则可以认为所述请求经适当配置。一般来说,应当理解,除非明显地与上下文矛盾或从上下文清楚地看出,否则系统之间的数据移动和交互可以以任何合适的方式执行,诸如在单次传输中,通过流式传输(例如,通过经多次传输分段传输数据)或其他方式。
在至少一个实施方案中,密码服务实例用于处理和完成与密码操作相关的网页服务API请求。API请求可以称为请求、API调用、远程过程调用(RPC)和/或其变型。例如,密码服务实例支持以下API中的一者或多者:
创建密钥(密钥ID)
加密(密钥ID、数据、加密配置)
解密(密钥ID、密文数据、加密配置)
生成数据密钥(密钥ID、区域、偏好、配置信息)
在实施方案中,创建密钥(密钥ID)请求使密码服务实例创建由请求中所标识的密钥ID标识的密钥。替代实施方案可以将执行创建密钥(密钥ID)功能的请求的名称指定为创建(密钥ID)、密钥(密钥ID)和/或其变型。对密钥ID参数的输入可以包括一个或多个数据对象,诸如字符串,所述一个或多个数据对象指示或以其他方式标识一个或多个密码密钥。在接收到请求后,密码服务实例可以生成密钥并将密钥与密钥ID相关联。应知道,密钥ID可以为但不必为唯一标识符。例如,密钥ID可以标识密钥族。应注意,当密钥ID未唯一地标识密钥时,各种系统可以就位以实现正确的功能。例如,在各种实施方案中,由密钥ID标识的密钥族是有限的。如果请求使用由密钥ID标识的密钥进行的解密操作,则附加数据(例如,执行加密时的时间戳)可以使得能够确定要使用的正确密钥。在一些实施方案中,密文包括指示密钥版本的信息。在一些实施方案中,所有可能的密钥被用于提供对数据的不同解密。由于存在有限数量的密钥,因此可以从所提供的那些解密选择正确的解密。在一些实施方案中,用密钥进行的解密以使得密码服务实例能够检测到密文不是至少部分地基于密钥而生成(诸如通过使用经认证的加密)的方式来执行。其他变型也应考虑在本公开的范围内。
加密(密钥ID、数据、加密配置)请求可以用于使密码服务实例使用由密钥ID标识的密钥来加密指定数据,所述密钥ID可以指唯一解析为特定托管密钥的标识符。对密钥ID参数的输入可以包括一个或多个数据对象,诸如字符串,所述一个或多个数据对象指示或以其他方式标识一个或多个密码密钥。数据参数可以用于指定要加密的数据。对数据参数的输入可以包括具有要加密的数据的一个或多个数据对象。数据参数可以用于指定要加密的明文。加密配置参数可以用于指定要用于加密数据的加密算法或加密上下文。对加密配置参数的输入可以包括一个或多个数据对象,诸如字符串,所述一个或多个数据对象指示或以其他方式包括要用于加密数据的加密信息。加密配置参数可以用于指定附加经认证数据(AAD),所述AAD可以用于各种目的并且可以为不必经加密但经认证(例如通过电子签名、消息认证码或一般地包括在AAD内的带密钥散列值)的数据。在一些实施方案中,密文被生成为包括AAD的至少一部分。在一些实施方案中,AAD是在解密期间单独地提供的。在一些实施方案中,AAD是在解密时间至少部分地基于请求和/或其他元数据生成的,使得解密将仅在元数据传递时成功。访问控制策略(简称为“策略”)可以约束密码操作是否可以相对于特定AAD执行。通过由密码服务实例执行的编程逻辑和/或策略,加密请求的处理可以既要求AAD包含特定值又要求AAD是真实的(例如,自初始传输以来未经修改)。
在一些实施方案中,加密配置参数用于指定要用于加密数据的加密算法。仅当由密钥ID参数指示的密码密钥为非对称密码密钥时,才能指定加密算法。在一些实施方案中,加密配置参数用于指定加密上下文。加密上下文可以为可以用于加密数据的信息。加密上下文可以指定数据,诸如如上文描述的AAD。仅当由密钥ID参数指示的密码密钥为对称密码密钥时,才能指定加密上下文。在接收到加密请求后,密码服务实例可以使用由加密配置参数指示的加密上下文或加密算法信息,使用由密钥ID参数指示的一个或多个密码密钥来加密由数据参数指定的数据。在一些示例中,密钥ID参数指示作为对称密码密钥的托管密钥,其中使用托管密钥来执行加密。在一些实施方案中,密钥ID参数指示作为非对称密码密钥的托管密钥,其中使用托管密钥的公开部分来执行加密。
解密(密钥ID、密文数据、加密配置)可以用于使密码服务实例使用由密钥ID标识的密钥来解密指定密文,所述密钥ID可以指唯一解析为特定托管密钥的标识符。对密钥ID参数的输入可以包括一个或多个数据对象,诸如字符串,所述一个或多个数据对象指示或以其他方式标识一个或多个密码密钥。密文数据参数可以用于指定要解密的密文。在一些示例中,对密文数据参数的输入包括具有密文的数据对象。对密文参数的输入可以包括经加密数据密钥结构,诸如结合图2描述的那些。加密配置参数可以用于指定要用于解密数据的加密算法或加密上下文。对加密配置参数的输入可以包括一个或多个数据对象,诸如字符串,所述一个或多个数据对象指示或以其他方式包括要用于解密数据的加密信息。加密配置参数可以用于指定如上文所描述的AAD。在一些实施方案中,加密配置参数用于指定要用于解密数据的加密算法。仅当由密钥ID参数指示的密码密钥为非对称密码密钥时,才能指定加密算法。在一些实施方案中,加密配置参数用于指定加密上下文。加密上下文可以为可以用于解密数据的信息。加密上下文可以指定数据,诸如如上文描述的AAD。仅当由密钥ID参数指示的密码密钥为对称密码密钥时,才能指定加密上下文。
密钥ID参数可以用于指定一个或多个计算区域的一个或多个密码服务实例的要用于解密指定密文数据的一个或多个密钥(例如,托管密钥)。可以将解密请求提交给密码服务实例或端点路由服务。在一些示例中,解密请求由密码服务实例获得,其中密码服务实例使用由密钥ID参数指示的一个或多个密钥和由加密配置参数指示的加密信息来解密由密文数据参数指示的密文。在一些示例中,解密请求由端点路由服务获得,并基于包括在经加密数据密钥结构中的偏好信息而路由到适当的密码服务实例。
在接收到指示经加密数据密钥结构的解密请求后,端点路由服务可以分析经加密数据密钥结构以至少部分地基于由经加密数据密钥结构指示的偏好和区域来确定可用计算区域;端点路由服务随后可以将解密请求路由到可用计算区域的密码服务实例,其中密码服务实例可以使用特定于可用计算区域的密码服务实例的由密钥ID参数标识的托管密钥来解密与经加密数据密钥结构的可用计算区域相对应的经加密密钥。密码服务实例可以响应于解密请求而提供经解密密钥。在一些示例中,端点路由服务将解密请求的部分路由到可用计算区域的密码服务实例,所述部分诸如解密请求的用可用计算区域的密码服务实例的托管密钥来加密的经加密数据密钥。在一些示例中,密钥ID参数指示作为对称密码密钥的托管密钥,其中使用托管密钥来执行解密。在一些实施方案中,密钥ID参数指示作为非对称密码密钥的托管密钥,其中使用托管密钥的私人部分来执行解密。
生成数据密钥(密钥ID、区域、偏好、配置信息)请求可以用于使密码服务实例生成经加密数据密钥。密钥ID参数可以用于标识要用于加密所生成的数据密钥的一个或多个密钥(例如,托管密钥)。对密钥ID参数的输入可以包括列表或其他数据对象,其指示一个或多个计算区域中的一个或多个托管密钥。在一些示例中,对密钥ID参数的输入包括一个或多个托管密钥的标识符,所述标识符标识一个或多个托管密钥的计算区域。区域参数可以用于指定一个或多个托管密钥的计算区域列表。对区域参数的输入可以包括数据对象(例如,区域106),其指示一个或多个托管密钥所来自的一个或多个计算区域。偏好参数可以用于指定偏好,所述偏好可以确定要访问一个或多个计算区域中的哪个计算区域以进行密码操作。偏好可以指示计算区域次序或其他逻辑以确定一个或多个计算区域中的计算区域。对偏好参数的输入可以包括指示偏好的数据对象(例如,偏好108)。配置信息参数可以用于指定与生成数据密钥相关联的其他数据。配置信息可以指定加密上下文,诸如上面所描述的。配置信息可以指定要生成的数据密钥的长度和/或大小。对配置信息参数的输入可以包括指示加密上下文、要生成的数据密钥的长度/大小等的一个或多个数据对象。
在一些实施方案中,生成数据密钥请求的密钥ID参数标识存在于一个或多个计算区域中的一个或多个托管密钥。在一些实施方案中,生成数据密钥请求的密钥ID参数包括要创建的一个或多个托管密钥(例如,在提交生成数据密钥请求之前不存在的密钥)的标识符,并且区域参数指示密码服务实例的其中要创建一个或多个托管密钥的计算区域。例如,在接收到生成数据密钥请求后,密码服务实例使由生成数据密钥请求的区域参数标识的计算区域的密码服务实例创建托管密钥,并将所创建的托管密钥与提交生成数据密钥请求的客户端相关联;托管密钥可以通过生成数据密钥请求的密钥ID参数的标识符来标识。
在接收到生成数据密钥请求后,密码服务实例可以生成数据密钥(例如,通过一个或多个密钥导出函数)。密码服务实例可以使用密码服务实例的托管密钥来加密数据密钥,可以在生成数据密钥请求的密钥ID参数中标识所述托管密钥。密码服务实例可以向可以使用托管密钥在生成数据密钥请求的区域参数中标识的计算区域的密码服务实例提交加密数据密钥的请求,可以在生成数据密钥请求的密钥ID参数中标识所述托管密钥。密码服务实例可以获得经加密数据密钥集,其包括由密码服务实例加密的数据密钥以及由计算区域的密码服务实例加密的数据密钥。密码服务实例可以生成经加密数据密钥结构,其至少包括与计算区域和可以在生成数据密钥请求中指示的偏好相关联的经加密数据密钥集。密码服务实例可以响应于生成数据密钥请求而提供数据密钥和经加密数据密钥结构。经加密数据密钥结构可以包括:经加密数据密钥和区域数据结构,其包括与计算区域相关联的经加密数据密钥;以及偏好数据结构,其指示用于选择计算区域的偏好。
生成数据密钥请求可以以上文描述的更少或更多的参数来利用。在一些实施方案中,生成数据密钥请求包括指示要生成的数据密钥是否为高可用性数据密钥的参数。高可用性数据密钥可以称为跨区域数据密钥、多区域数据密钥等。高可用性可以指计算资源跨多个计算区域可用,使得如果一个计算区域变得不可操作或不可用,则可以改为利用其他计算区域。指示要生成的数据密钥将为高可用性数据密钥的生成数据密钥请求(其可以称为生成高可用性数据密钥的请求)可能要求如上文所描述的参数密钥ID、区域、偏好、配置信息。在一些示例中,指示要生成的数据密钥将不为高可用性数据密钥的生成数据密钥请求可能不要求如上文所描述的参数密钥ID、区域、偏好、配置信息中的全部。例如,指示要生成的数据密钥将不为高可用性数据密钥的生成数据密钥请求至少包括密钥ID参数,其中在接收到所述请求后,密码服务实例生成数据密钥并使用由密钥ID指定的密钥来加密所生成的数据密钥,并且返回明文数据密钥和数据密钥的对应密文副本(由密钥ID所标识的密钥加密)。
密码服务实例可以支持更新数据密钥的请求。更新数据密钥的请求可以用于更新经加密数据密钥结构的一个或多个偏好、计算区域等。更新数据密钥的请求可以包括参数,诸如密钥ID参数、经更新的偏好参数、经更新的计算区域参数和经加密数据密钥结构参数。密钥ID参数可以用于标识要用于加密所生成的数据密钥的一个或多个密钥。对密钥ID参数的输入可以包括列表或其他数据对象,其指示一个或多个计算区域中的一个或多个托管密钥。经更新的偏好参数可以用于指示经更新的偏好集,其用于确定一个或多个计算区域中要访问的计算区域以进行密码操作。对经更新的偏好参数的输入包括指示偏好的数据对象。在一些示例中,经更新的偏好集与要更新的经加密数据密钥结构中所指示的偏好相同。经更新的计算区域参数可以用于指示一个或多个托管密钥的计算区域列表。对经更新的计算区域参数的输入可以包括数据对象,其指示一个或多个托管密钥所来自的一个或多个计算区域。在一些示例中,经更新的计算区域参数可以指示与要更新的经加密数据密钥结构中所指示的计算区域相同的计算区域。经加密数据密钥结构参数可以用于输入经加密数据密钥结构。
在接收到更新数据密钥的请求后,密码服务实例可以获得该请求的经加密数据密钥结构,并至少部分地基于该请求的密钥ID参数、经更新的偏好参数和经更新的计算区域参数来更新经加密数据密钥结构的经加密数据密钥和区域以及偏好,以确定包括经更新的经加密数据密钥和区域以及经更新的偏好的经更新的数据结构(例如,经更新的经加密数据密钥结构)以及响应于该请求提供经更新的数据结构。密码服务实例可以通过用由经更新的偏好参数指示的偏好替换经加密数据密钥结构的偏好来更新经加密数据密钥结构的偏好。密码服务实例可以通过将由经更新的偏好参数指示的偏好添加到经加密数据密钥结构的偏好(例如,通过将由经更新的偏好参数指示的偏好与经加密数据密钥结构的现有偏好一起存储)来更新经加密数据密钥结构的偏好。
密码服务实例可以通过将利用由密钥ID参数和经更新的计算区域参数指示的来自计算区域的托管密钥来加密的数据密钥添加到经加密数据密钥结构的经加密数据密钥和区域,来更新经加密数据密钥结构的经加密数据密钥和区域;密码服务实例可以解密经加密数据密钥结构的经加密数据密钥和区域的经加密数据密钥,利用由密钥ID参数和经更新的计算区域参数指示的来自计算区域的托管密钥来加密数据密钥(例如,通过向计算区域的密码服务实例提交加密请求)以获得经更新的经加密数据密钥集,并将经更新的经加密数据密钥集添加到经加密数据密钥结构的经加密数据密钥和区域。
密码服务实例可以通过将经加密数据密钥结构的经加密数据密钥替换为利用由密钥ID参数和经更新的计算区域参数指示的来自计算区域的托管密钥来加密的数据密钥,来更新经加密数据密钥结构的经加密数据密钥和区域;密码服务实例可以解密经加密数据密钥结构的经加密数据密钥和区域的经加密数据密钥,利用由密钥ID参数和经更新的计算区域参数指示的来自计算区域的托管密钥来加密数据密钥(例如,通过向计算区域的密码服务实例提交加密请求)以获得经更新的经加密数据密钥集,并将经加密数据密钥结构的经加密数据密钥和区域的经加密数据密钥替换为经更新的经加密数据密钥集。
客户端102可以指可访问由计算资源服务提供商提供的一个或多个服务的合适的计算装置,诸如计算机、移动装置、服务器等。在实施方案中,客户端(例如,客户端102)是指具有存储可执行指令的存储器的计算机系统,所述可执行指令在由计算机系统的一个或多个处理器执行时,用于通过一个或多个网络与计算资源服务提供商建立客户端-服务器关系。客户端102可以访问和利用由计算资源服务提供商提供的密码服务,所述密码服务可以托管和/或实现在多个计算区域中(例如,在多个计算区域中可以存在多个密码服务实例)。在实施方案中,密码服务实例是指提供或以其他方式实现密码服务的计算资源的集合。密码服务实例可以使用与密码服务实例相关联的计算区域的一个或多个软件和/或硬件计算资源来执行密码操作(例如,加密、解密、密码密钥生成等)。密码服务实例可以实现在各种计算区域中,如下文更详细描述的。
客户端102可以向主计算区域110的密码服务实例提交请求104。请求104可以为如上文描述的生成数据密钥请求。请求104可以为生成高可用性数据密钥的请求。在一些示例中,请求104包括存在于一个或多个计算区域中的托管密钥的标识符。在一些示例中,请求104包括要在一个或多个计算区域中创建的托管密钥的标识符,其中在主计算区域110的密码服务实例接收到请求104后,密码服务实例将请求提交给一个或多个计算区域的密码服务实例以创建托管密钥。
请求104可以包括区域106、偏好108以及其他各种数据。区域106可以为数据对象,诸如可以指示一个或多个计算区域的列表或数组。区域106可以指示一个或多个计算区域,其中客户端已在其中关联了托管密钥。区域106可以指示一个或多个计算区域,其中可以在其中对响应于请求104而获得的经加密数据密钥结构的经加密密钥进行解密。参考图1,区域106可以指示对应于计算区域(A)118(A)的区域(A)、对应于计算区域(B)118(B)的区域(B)以及未在图1中描绘的其他区域。偏好108可以为数据对象,其可以指示可以确定如何选择一个或多个计算区域中的计算区域的一个或多个偏好。偏好可以称为计算区域偏好、区域偏好和/或其变型。偏好108可以指示一个或多个计算区域的次序,其中将按照所指示的次序选择计算区域。
偏好108可以指示用于选择一个或多个计算区域的标准,诸如地理要求、延迟要求或安全要求。地理要求可以基于接近度要求,其中将基于接近度来选择计算区域(例如,首先选择最近的计算区域,首先选择最远的计算区域,等等)。延迟要求可以基于网络延迟要求,其中要基于网络延迟来选择计算区域(例如,首先选择具有最低网络延迟的计算区域,首先选择具有最高网络延迟的计算区域,等等)。安全要求可以基于各种法律和/或安全要求,其中将基于法律和/或安全特性来选择计算区域(例如,首先选择具有特定法律和/或安全特性的计算区域,等等)。
请求104可以包括可以指示关于要创建的数据密钥的配置信息(例如,配置信息参数)的数据。配置信息可以包括指示要用于加密数据密钥的经加密上下文、要生成的数据密钥的长度、要生成的数据密钥的大小等的信息。请求104可以由主计算区域110的密码服务实例获得。密码服务实例可以通过一个或多个接口诸如网页服务接口获得请求104。请求104可以为网页服务API请求。
在实施方案中,计算区域(诸如如图1所示的主计算区域110、计算区域(A)118(A)和计算区域(B)118(B))是指由计算资源服务提供商提供的逻辑和/或物理资源分区,其托管各种服务诸如密码服务并在多个位置(例如,物理和/或地理位置)提供各种资源。计算区域可以称为区域、计算区域(computing region)等。计算资源服务提供商可以在多个计算区域中托管或以其他方式实现密码服务。在实施方案中,密码服务在多个计算区域(诸如主计算区域110、计算区域(A)118(A)和计算区域(B)118(B))中实现,其中每个计算区域具有独立于其他实例的密码服务的实例(例如,被实现和/或使用单独的硬件,使得影响一个计算区域的故障诸如停电不影响另一个计算区域的密码服务实例的可用性)。在实施方案中,计算区域由一个或多个地理区域(例如,“西欧”)中的数据中心的集合标识。计算区域可以是可用的,这可以指计算区域的状态,在所述状态下,计算区域的一种或多种服务是可访问的。计算区域可以是不可用的,这可以指计算区域的状态,在所述状态下,计算区域的一种或多种服务是不可访问的。由于各种事件,诸如断电、网络连接中断等,计算区域可能不可用。
客户端102可以与至少主计算区域110、计算区域(A)118(A)和计算区域(B)118(B)中的托管密钥相关联。在一些实施方案中,客户端102向主计算区域110、计算区域(A)118(A)和计算区域(B)118(B)的密码服务实例提交请求(例如,创建密钥请求),以在主计算区域110、计算区域(A)118(A)以及计算区域(B)118(B)中创建与客户端102相关联的托管密钥(例如,托管密钥112、托管密钥(A)120(A)和托管密钥(B)120(B))。在一些实施方案中,客户端102向密码服务实例提交请求(例如,生成数据密钥请求),所述请求使主计算区域110、计算区域(A)118(A)和计算区域(B)118(B)的密码服务实例在主计算区域110、计算区域(A)118(A)以及计算区域(B)118(B)中创建与客户端102相关联的托管密钥(例如,托管密钥112、托管密钥(A)120(A)和托管密钥(B)120(B))。
客户端102可以与以下各项相关联:主计算区域110的托管密钥112、计算区域(A)118(A)的托管密钥(A)120(A)、计算区域(B)的托管密钥(B)120(B)以及图1中未描述的其他托管密钥。主计算区域110的密码服务实例可以获得请求104并生成数据密钥114。可以基于请求104中指示的信息来生成数据密钥114。数据密钥114可以为可以由密码服务实例通过一个或多个密钥导出函数生成的或者在一些情况下可以由客户端102生成的密码密钥。主计算区域110的密码服务实例可以用托管密钥112来加密数据密钥114以生成经加密数据密钥116。在一些实施方案中,托管密钥112为非对称密码密钥,其中可以用托管密钥112的公开部分来加密数据密钥114。在一些示例中,托管密钥112是响应于请求104而创建的。在一些示例中,托管密钥112是响应于请求诸如创建密钥请求而创建的。
主计算区域110的密码服务实例可以向请求104中标识的计算区域的密码服务实例提交密码请求,以加密数据密钥114。请求可以为如上文描述的加密请求。参考图1,主计算区域110的密码服务实例可以向计算区域(A)118(A)的密码服务实例、计算区域(B)118(B)的密码服务实例以及未在图1中描绘的其他密码服务实例提交请求,以加密数据密钥114。这些请求可以包括数据密钥114。计算区域(A)118(A)的密码服务实例可以获得数据密钥114。在一些实施方案中,计算区域(A)118(A)的密码服务实例从来自包括数据密钥114的主计算区域110的密码服务实例的请求获得数据密钥114。计算区域(A)118(A)的密码服务实例可以使用托管密钥(A)120(A)来加密数据密钥114,并将经加密数据密钥提供给主计算区域110的密码服务实例。在一些实施方案中,托管密钥120(A)为非对称密码密钥,其中可以用托管密钥120(A)的公开部分来加密数据密钥114。在一些示例中,托管密钥(A)120(A)是响应于请求诸如创建密钥请求而创建的。在各种实施方案中,主计算区域110的密码服务实例使计算区域(A)118(A)的密码服务实例创建托管密钥(A)120(A),作为主计算区域110的密码服务实例获得请求104的结果。
计算区域(B)118(B)的密码服务实例可以获得数据密钥114。在一些实施方案中,计算区域(B)118(B)的密码服务实例从来自包括数据密钥114的主计算区域110的密码服务实例的请求获得数据密钥114。计算区域(B)118(B)的密码服务实例可以使用托管密钥(B)120(B)来加密数据密钥114,并将经加密数据密钥提供给主计算区域110的密码服务实例。在一些实施方案中,托管密钥120(B)为非对称密码密钥,其中可以用托管密钥120(B)的公开部分来加密数据密钥114。在一些示例中,托管密钥(B)120(B)是响应于请求诸如创建密钥请求而创建的。在各种实施方案中,主计算区域110的密码服务实例使计算区域(B)118(B)的密码服务实例创建托管密钥(B)120(B),作为主计算区域110的密码服务实例获得请求104的结果。图1中未描绘的计算区域的密码服务实例(可以在区域106中指定)可以获得数据密钥114,利用与计算区域相对应的托管密钥来加密数据密钥114,并将经加密密钥提供给主计算区域110的密码服务实例。
主计算区域110的密码服务实例可以获得经加密数据密钥集,其可以包括利用来自主计算区域110的密码服务实例的托管密钥112加密的数据密钥114以及利用其他计算区域的密码服务实例的托管密钥(例如,计算区域(A)118(A)的托管密钥(A)120(A)、计算区域(B)118(B)的托管密钥(B)120(B)等等)加密的数据密钥114。主计算区域110的密码服务实例可以生成经加密数据密钥结构124,其包括与计算区域(例如,在区域106中标识的计算区域)相关联的经加密数据密钥集以及用于选择计算区域中的计算区域的偏好(例如,偏好108中指定的偏好)。在一些实施方案中,经加密数据密钥结构124包括:经加密数据密钥集,其与加密经加密数据密钥集的密码服务实例的计算区域相关联,其中在请求104的区域106中指示所述计算区域;以及请求104的偏好108中指定的偏好。
主计算区域110的密码服务实例可以生成响应122。在实施方案中,响应122为对请求104的响应。响应122可以为一个或多个数据对象和数据结构的集合,其包括数据密钥114和经加密数据密钥结构124。主计算区域110的密码服务实例可以获得请求104,并且响应于请求104生成响应122,所述响应包括数据密钥114和经加密数据密钥结构124。主计算区域110的密码服务实例可以对客户端102提供响应122。客户端102可以获得包括数据密钥114和经加密数据密钥结构124的响应122。数据密钥114可以用于执行各种密码操作,诸如加密、解密、数字签名等。可以结合各种请求(诸如如上文描述的解密请求)使用经加密数据密钥结构124,以获得数据密钥114。
例如,客户端102提交包括区域106和偏好108的请求104,所述区域指示计算区域(A)和计算区域(B),所述偏好指示计算区域(A)后接计算区域(B)的次序。继续所述示例,主计算区域110的密码服务实例获得请求104,通过如上文描述的一个或多个过程生成数据密钥114和经加密数据密钥结构124,并提供数据密钥114和经加密数据密钥结构124作为对客户端102的响应122。进一步继续所述示例,客户端102通过向端点路由服务提交包括经加密数据密钥结构124的解密请求来解密经加密数据密钥结构124。进一步继续所述示例,计算区域(A)不可用,其中端点路由服务基于由偏好108指示的次序来确定选择计算区域(B)(例如,所述次序指示计算区域(A)后接计算区域(B),并且计算区域(A)不可用,因此选择计算区域(B)),并将经加密数据密钥结构124提供给计算区域(B)的密码服务实例,其中计算区域(B)的密码服务实例使用对应于计算区域(B)的托管密钥对经加密数据密钥结构124的经加密密钥进行解密,并向客户端102提供经解密密钥。关于端点路由服务的进一步信息可以见于图3的描述中。
图2示出了经加密数据密钥结构的计算环境200的说明性示例。经加密数据密钥结构202、偏好210、包括托管密钥(A)216(A)的计算区域(A)214(A)以及包括托管密钥(B)216(B)的计算区域(B)214(B)可以与结合图1描述的那些一致。
经加密数据密钥结构202可以为由密码服务实例响应于请求诸如生成数据密钥请求而生成的数据对象。经加密数据密钥结构202可以为不透明数据结构。经加密数据密钥结构202可以包括一个或多个数据结构,诸如数组、列表、元组等。经加密数据密钥结构202可以包括经加密数据密钥和区域204。经加密数据密钥和区域204可以为包括经加密密码密钥(例如,经加密数据密钥)和相关联计算区域的数据结构。经加密数据密钥和区域204可以包括:与区域(A)206(A)相关联的经加密数据密钥区域(A)208(A),其可以为计算区域(A)214(A)的标识符;与区域(B)206(B)相关联的经加密数据密钥区域(B)208(B),其可以为计算区域(B)214(B)的标识符,并且还可以包括与各种其他计算区域相关联的各种其他经加密数据密钥。经加密数据密钥可以通过绑定集与计算区域相关联,所述绑定集可以为数据结构诸如将经加密数据密钥映射到计算区域的数组(例如,所述绑定集可以指示经加密数据密钥区域(A)208(A)与区域(A)206(A)相关联)。在实施方案中,与计算区域相关联的经加密数据密钥指示经加密数据密钥是通过使用来自计算区域的托管密钥来加密数据密钥而生成的。
区域(A)206(A)和区域(B)206(B)可以为分别对应于计算区域(A)214(A)和计算区域(B)214(B)的标识符。区域(A)206(A)和区域(B)206(B)可以为数据对象,其包括分别指示计算区域(A)214(A)和计算区域(B)214(B)的信息。经加密数据密钥区域(A)208(A)和经加密数据密钥区域(B)208(B)可以为已经分别通过计算区域(A)214(A)的托管密钥(A)216(A)和计算区域(B)214(B)的托管密钥(B)216(B)加密的数据密钥。密码服务实例可以生成数据密钥,使数据密钥由计算区域(A)214(A)的密码服务实例使用托管密钥(A)216(A)加密以获得经加密数据密钥区域(A)208(A),并使数据密钥由计算区域(B)214(B)的密码服务实例使用托管密钥(B)216(B)加密以获得经加密数据密钥区域(B)208(B)。
偏好210可以为经加密数据密钥结构202的数据对象,其可以指示用于选择计算区域的偏好。偏好210可以指示用于选择一个或多个计算区域的标准,诸如地理要求、延迟要求或安全要求。端点路由服务可使用偏好210来确定要访问以执行对经加密数据密钥和区域204的经加密数据密钥的解密的计算区域的密码服务实例。偏好210可以将一个或多个计算区域的次序指示为定序212。在一些示例中,偏好210不包括定序212,而包括指示用于选择一个或多个计算区域的标准的一个或多个数据对象。在一些示例中,除指示用于选择一个或多个计算区域的标准的一个或多个数据对象之外,偏好210还包括定序212。定序212可以为包括计算区域的有序列表的列表或其他数据对象。端点路由服务可使用定序212来确定要访问以执行对经加密数据密钥和区域204的经加密数据密钥的解密的计算区域的密码服务实例。
例如,定序212指示以下次序:对应于计算区域(B)214(B)的区域(B)后接对应于计算区域(A)214(A)的区域(A),以此类推。继续所述示例,端点路由服务获得经加密数据密钥结构202作为来自客户端的解密请求的一部分,并确定计算区域(B)214(B)不可用。进一步继续所述示例,端点路由服务基于定序212确定访问计算区域(A)214(A)的密码服务实例,并使密码服务实例对经加密数据密钥结构202的与计算区域(A)214(A)相对应的经加密数据密钥区域(A)208(A)进行解密(例如,通过解密请求),并将经解密数据密钥提供给客户端。
在实施方案中,计算区域(诸如计算区域(A)214(A)和计算区域(B)214(B),如图2所示)是指由计算资源服务提供商提供的逻辑和/或物理资源分区,其托管各种服务诸如密码服务并在多个位置(例如,物理和/或地理位置)提供各种资源。计算资源服务提供商可以在多个计算区域中托管或以其他方式实现密码服务。在实施方案中,密码服务在多个计算区域(诸如计算区域(A)214(A)和计算区域(B)214(B))中实现,其中每个计算区域具有独立于其他实例的密码服务实例(例如,被实现和/或使用单独的硬件,使得影响一个计算区域的故障诸如停电不影响另一个计算区域的密码服务实例的可用性)。参考图2,计算区域(A)214(A)可以包括密码服务实例,并且计算区域(B)214(B)可以包括不同的密码服务实例。
计算区域(A)214(A)可以包括托管密钥(A)216(A),其可以为由计算区域(A)214(A)的密码服务实例代表客户端创建和维护的密码密钥。计算区域(B)214(B)可以包括托管密钥(B)216(B),其可以为由计算区域(B)214(B)的密码服务实例代表客户端创建和维护的密码密钥。在一些示例中,客户端与托管密钥(A)214(A)、托管密钥(B)216(B)以及未在图2中描绘的来自其他计算区域的其他托管密钥相关联。在一些示例中,托管密钥(A)214(A)和托管密钥(B)216(B)是响应于来自客户端的一个或多个请求(例如,创建密钥请求)而创建的并且与客户端相关联。在一些示例中,托管密钥(A)214(A)和托管密钥(B)216(B)是响应于来自客户端的请求(例如,生成数据密钥请求)而创建的并且与客户端相关联。
例如,客户端向计算区域的密码服务实例提交请求。请求可以为生成数据密钥请求,诸如结合图1所描述的请求。请求可以指示要生成的数据密钥为高可用性数据密钥,并且可以指示计算区域(A)214(A)的托管密钥(A)216(A)以及计算区域(B)214(B)的托管密钥(B)216(B)。请求可以指示偏好210。继续所述示例,密码服务实例生成数据密钥,向计算区域(A)214(A)的密码服务实例提交第一请求以使用托管密钥(A)216(A)来加密数据密钥,向计算区域(B)214(B)的密码服务实例提交第二请求以使用托管密钥(B)216(B)来加密数据密钥,并响应于第一请求和第二请求而获得经加密数据密钥区域(A)208(A)和经加密数据密钥区域(B)208(B),所述经加密数据密钥区域为分别用托管密钥(A)216(A)和托管密钥(B)216(B)加密的数据密钥。进一步继续所述示例,密码服务实例生成经加密数据密钥结构202,其包括与经加密数据密钥区域(A)208(A)相关联的区域(A)206(A)、与经加密数据密钥区域(B)208(B)相关联的区域(B)206(B)以及偏好210,并响应于请求而将经加密数据密钥结构202返回给客户端。
图3示出了端点路由服务的计算环境300的说明性示例。端点路由服务可以称为转发服务、高可用性密码服务端点等。经加密数据密钥结构304、计算区域(A)320(A)、计算区域(B)320(B)和计算区域(C)320(C)可以与结合图1和图2描述的那些一致。
请求302可以为解密请求,诸如结合图1所描述的那些。请求302可以为网页服务API请求。请求302可以为可以指示要执行的密码操作以及与密码操作相关联的数据和其他信息的数据集合。请求302可以由客户端通过一个或多个网络诸如互联网提交。请求302可以包括经加密数据密钥结构304。经加密数据密钥结构304可以为由密码服务实例响应于请求诸如生成数据密钥请求而生成的数据结构。
经加密数据密钥结构304可以包括一个或多个数据结构,诸如数组、列表、元组等。在一些示例中,经加密数据密钥结构304为端点路由服务314可解释的不透明数据结构。端点路由服务314可以执行各种数据解释过程以读取经加密数据密钥结构304的经加密数据密钥和区域306及偏好312,诸如运行可以由生成经加密数据密钥结构304的密码服务实例提供的程序或例程以暴露经加密数据密钥结构304的内部部件,将经加密数据密钥结构304输入到端点路由服务314的可以解释经加密数据密钥结构304的一个或多个程序等等。在一些示例中,端点路由服务314从系统或服务(诸如密码服务实例)获得可执行代码,其对与经加密数据密钥结构304相关联的凭证或其他认证信息进行编码,其中可执行代码在被执行时暴露经加密数据密钥结构304的内部部件;端点路由服务314可以结合经加密数据密钥结构304执行可执行代码以读取经加密数据密钥结构304的经加密数据密钥和区域306及偏好312。端点路由服务314可以实现功能集,其可以分析加密数据密钥结构304以确定加密数据密钥结构304的加密数据密钥和区域306及偏好312。经加密数据密钥结构304可以包括经加密数据密钥和区域306。经加密数据密钥和区域306可以为包括经加密密码密钥和相关联计算区域的数据结构。经加密数据密钥和区域306可以包括:与区域(A)308(A)相关联的经加密数据密钥区域(A)310(A),其可以为计算区域(A)320(A)的标识符;与区域(B)308(B)相关联的经加密数据密钥区域(B)310(B),其可以为计算区域(B)320(B)的标识符,并且还可以包括与各种其他计算区域相关联的各种其他经加密数据密钥。经加密数据密钥可以通过绑定集与计算区域相关联,所述绑定集可以为数据结构诸如数组,其可以为将经加密数据密钥映射到计算区域的经加密数据密钥结构304的一部分(例如,所述绑定集可以指示经加密数据密钥区域(A)310(A)与区域(A)308(A)相关联)。偏好312可以为经加密数据密钥结构304的数据对象,其可以指示用于选择计算区域的偏好。偏好312可以指示用于选择一个或多个计算区域的标准,诸如地理要求、延迟要求或安全要求。偏好312可以指示一个或多个计算区域的次序。
请求302可以传输到端点路由服务314。端点路由服务314可以为在一个或多个计算装置诸如一个或多个计算机服务器上执行的软件应用程序或程序。端点路由服务314可以在一个或多个路由器或其他计算机网络装置上执行。端点路由服务314可以具有相关联标识符,客户端可以使用相关联标识符向端点路由服务314提交请求。端点路由服务314可以通过网络位置、网络地址等来标识。在一些示例中,端点路由服务314通过统一资源定位符(URL)来标识。在实施例中,请求302被寻址至端点路由服务314的URL。端点路由服务314可以包括可用区域316,其可以为端点路由服务314的软件部件或程序。可以根据计算区域可用(例如,计算区域可用使得计算区域的密码服务实例可访问)来满足请求302。
可用区域316可以指示计算区域的可用性。可用区域316可以指示哪些计算区域具有可访问和/或可用的密码服务实例。计算区域可以是可用的,这可以指计算区域的状态,在所述状态下,计算区域的一种或多种服务是可访问的。计算区域可以是不可用的,这可以指计算区域的状态,在所述状态下,计算区域的一种或多种服务是不可访问的。由于各种事件,诸如断电、网络连接中断等,计算区域可能不可用。例如,计算区域(A)320(A)不可用,使得计算区域(A)320(A)的密码服务实例对处理和/或接收请求不可用。可用区域316可以指示计算资源服务提供商的所有计算区域的状态。可用区域316可以指示包括密码服务实例的计算区域的状态。参考图3,可用区域316指示对应于计算区域(1)的区域(1)不可用,而对应于其他计算区域的其他区域可用。
端点路由服务314可以包括请求路由确定318,其可以为端点路由服务314的软件部件或程序。请求路由确定318可以为确定要将请求路由到的计算区域的一个或多个计算资源的集合。请求路由确定318可以包括至少部分地基于偏好312和可用区域316来确定要将请求302路由到的计算区域的一个或多个函数、过程和操作。
在实施方案中,计算区域(诸如如图3所示的计算区域(A)320(A)、计算区域(B)320(B)和计算区域(C)320(C))是指由计算资源服务提供商提供的逻辑和/或物理资源分区,其托管各种服务诸如密码服务并在多个位置(例如,物理和/或地理位置)提供各种资源。在实施方案中,密码服务实现在多个计算区域中,诸如计算区域(A)320(A)、计算区域(B)320(B)和计算区域(C)320(C),其中每个计算区域具有独立于其他实例的密码服务实例。参考图3,计算区域(A)320(A)可以包括第一密码服务实例,计算区域(B)320(B)可以包括第二密码服务实例,并且计算区域(C)320(C)可以包括第三密码服务实例。
参考图3,计算区域(A)320(A)可以不可用,使得计算区域(A)320(A)的密码服务实例不可访问。计算区域(A)320(A)可能因可能影响计算区域(A)320(A)的一个或多个计算资源的操作的断电、自然灾害、网络中断等而不可用。端点路由服务314可以获得请求302。在一些示例中,请求302由客户端提交并且被寻址至端点路由服务314。在实施方案中,请求302为对经加密数据密钥进行解密的请求,并且包括经加密数据密钥结构304。请求路由确定318可以结合可用区域316处理请求302的偏好312以确定要将请求302路由到的计算区域。端点路由服务314可以确定计算区域(B)320(B)为将请求302路由到的适当计算区域,并将请求302传输到计算区域(B)320(B)的密码服务实例。在一些示例中,端点路由服务314将请求302的部分路由到计算区域(B)320(B)的密码服务实例,所述部分诸如请求302的用计算区域(B)320(B)的密码服务实例的托管密钥加密的经加密数据密钥。关于路由请求的进一步信息可以见于图6的描述中。
例如,请求302由客户端提交,其中相比于计算区域(B)320(B)的地理区域,客户端的地理位置更接近计算区域(A)320(A)的地理区域。继续所述示例,偏好312指示地理接近度标准,其中要选择的计算区域将为在地理上最接近客户端的计算区域。进一步继续所述示例,端点路由服务314获得请求302,分析偏好312,确定计算区域(A)320(A)不可用,并确定选择计算区域(B)320(B),其中计算区域(B)320(B)是在地理上距客户端最近的可用计算区域。进一步继续所述示例,端点路由服务314随后将请求302路由到计算区域(B)320(B)的密码服务实例。作为另一示例,偏好312指示计算区域(A)320(A)后接计算区域(B)320(B)的次序,其中端点路由服务314确定计算区域(A)320(A)不可用,并将请求302路由到计算区域(B)320(B)的密码服务实例。
图4示出了生成数据密钥请求的示例性图400。虽然图4示出了可以包括在生成数据密钥请求和/或生成数据密钥请求响应中的特定信息集合,但是变型在本公开的范围内,并且生成数据密钥请求和/或生成数据密钥请求响应可以具有更少或更多的信息组成。另外,并非使用相同API函数进行的所有API调用均可以包括相同的信息组成。针对一个参数的重要信息的类型和/或存在可以取决于另一参数的值。响应的组成的重要信息的类型和/或存在可以取决于另一参数的值和/或触发响应的API请求的参数。生成数据密钥请求402可以对应于诸如结合图1所描述的那些生成数据密钥请求。
生成数据密钥请求402可以用于使密码服务实例生成数据密钥和经加密数据密钥结构。生成数据密钥请求402可以为指示生成数据密钥请求的各方面的数据对象和数据结构的集合。生成数据密钥请求402可以包括组成:密钥ID 404、区域406、偏好408和配置信息412。密钥ID 404可以为数据对象诸如列表或数组,所述数据对象包括一个或多个计算区域的一个或多个托管密钥的标识符。密钥ID 404可以包括一个或多个托管密钥的标识符,其标识一个或多个托管密钥的计算区域(例如,托管密钥的标识符包括另外指示托管密钥的计算区域的信息)。区域406可以为包括一个或多个计算区域的标识符的数据对象诸如列表或数组。区域406可以指定一个或多个密码服务实例的计算区域列表。区域406可以指示一个或多个托管密钥的一个或多个计算区域。
偏好408可以为数据结构,其包括指示用于选择计算区域的偏好的信息。偏好408可以指定偏好,所述偏好可以确定要访问一个或多个计算区域中的哪个计算区域以进行密码操作。偏好408指示确定一个或多个计算区域中的计算区域的计算区域次序或其他逻辑。偏好408可以指示用于选择一个或多个计算区域的标准,诸如地理要求、延迟要求或安全要求。参考图4,偏好408包括定序410,其为包括计算区域的有序列表的列表或其他数据对象。在一些示例中,偏好408不包括定序410,而包括指示用于选择一个或多个计算区域的标准的一个或多个数据对象。在一些示例中,除指示用于选择一个或多个计算区域的标准的一个或多个数据对象之外,偏好408还包括定序410。配置信息412可以为数据结构,所述数据结构包括可以指定与生成数据密钥相关联的其他数据的信息。配置信息412可以指定加密上下文,诸如如上文描述的。配置信息412可以指定要生成的数据密钥的长度和/或大小。配置信息412可以包括指示加密上下文、要生成的数据密钥的长度/大小等的一个或多个数据对象。
在一些实施方案中,密钥ID 404标识存在于一个或多个计算区域中的一个或多个托管密钥。密钥ID 404可以包括密码密钥标识符。在一些实施方案中,密钥ID 404包括要创建的一个或多个托管密钥(例如,在提交生成数据密钥请求402之前不存在的密钥)的标识符,并且区域406参数指示密码服务实例的其中要创建一个或多个托管密钥的计算区域。例如,在接收到生成数据密钥请求402后,密码服务实例使由区域406标识的计算区域的密码服务实例创建托管密钥,并将所创建的托管密钥与提交生成数据密钥请求402的客户端相关联;托管密钥可以通过密钥ID 404的标识符来标识。
生成数据密钥请求402可以与比图4中描绘的更少或更多的部件一起使用。在一些实施方案中,生成数据密钥请求402包括指示要生成的数据密钥是否将为高可用性数据密钥的信息。高可用性数据密钥可以称为跨区域数据密钥、多区域数据密钥等。可以指示要生成的数据密钥将为高可用性数据密钥的生成数据密钥请求402可能要求组成:密钥ID 404、区域406、偏好408和配置信息412。在一些示例中,可指示要生成的数据密钥将不为高可用性数据密钥的生成数据密钥请求402可不要求组成密钥ID 404、区域406、偏好408和配置信息412中的全部。例如,指示要生成的数据密钥将不为高可用性数据密钥的生成数据密钥请求402包括密钥ID 404,其中在接收到所述请求后,密码服务实例可以生成数据密钥并使用由密钥ID404指定的密钥来加密所生成的数据密钥,并且返回明文数据密钥和数据密钥的对应密文副本(由密钥ID 404所标识的密钥加密)。
生成数据密钥请求402可以由一个或多个客户端通过一个或多个网页服务接口提交。可以将生成数据密钥请求402提交给密码服务实例414。可以由客户端422将生成数据密钥请求402提交给密码服务实例414。生成数据密钥请求402可以被寻址至密码服务实例414,诸如经由密码服务实例414的URL、网络位置/地址或其他标识符。客户端422可以为可访问由计算资源服务提供商提供的一个或多个服务的任何合适的计算装置,诸如计算机、移动装置、服务器等。密码服务实例414可以为在计算区域中操作的密码服务的实例。
生成数据密钥请求响应416可以为指示对生成数据密钥请求的响应的各方面的数据对象和数据结构的集合。生成数据密钥请求响应416可以包括数据密钥418和经加密数据密钥结构420。数据密钥418可以为可用于密码操作诸如加密、解密、数字签名等的密码密钥。经加密数据密钥结构420可以为诸如结合图2描述的那些经加密数据密钥结构。
在从客户端422接收到生成数据密钥请求402后,密码服务实例414可以生成数据密钥418。密码服务实例414可以使用密码服务实例414的托管密钥来加密数据密钥418,可以在密钥ID 404中标识所述托管密钥。密码服务实例414可以向可以使用托管密钥在区域406中标识的计算区域的密码服务实例提交加密数据密钥418的请求,可以在密钥ID 404中标识所述托管密钥。密码服务实例414可以获得经加密数据密钥集,其包括由密码服务实例414加密的数据密钥418以及由计算区域的密码服务实例加密的数据密钥418。密码服务实例414可以生成经加密数据密钥结构420,其至少包括经加密数据密钥集,以及偏好408和区域406。密码服务实例414可以响应于生成数据密钥请求402将数据密钥418和经加密数据密钥结构420作为生成数据密钥请求响应416的一部分提供给客户端422。
可以存在结合图4描述的生成数据密钥请求的变型。例如,生成数据密钥无明文请求可以利用上文描述的技术,但不提供数据密钥418作为请求响应的一部分。在一些情况下,不同的API用于生成对称和非对称密钥——例如,生成数据密钥可以用于生成对称密钥,而生成数据密钥对可以用于生成非对称数据密钥对。在对生成数据密钥对请求的响应中,可以以明文形式提供密钥对(例如,非对称密钥对的公钥和私钥两者)以及包括私钥而非公钥的密文的经加密数据密钥结构。生成数据密钥对无明文请求可以与生成数据密钥无明文类似,因为在响应中不以明文格式提供秘密密码材料(例如,私钥)。
图5示出了解密请求的示例性图500。虽然图5示出了可以包括在解密请求和/或解密请求响应中的特定信息集合,但是变型在本公开的范围内,并且解密请求和/或解密请求响应可以具有更少或更多的信息组成。另外,并非使用相同API函数进行的所有API调用均可以包括相同的信息组成。针对一个参数的重要信息的类型和/或存在可以取决于另一参数的值。响应的组成的重要信息的类型和/或存在可以取决于另一参数的值和/或触发响应的API请求的参数。解密请求502可以对应于诸如结合图1所描述的那些解密请求。
解密请求502可以用于使密码服务实例解密经加密数据密钥。解密请求502可以用于获得明文密码密钥(例如,明文数据密钥)。解密请求502可以为指示解密请求的各方面的数据对象和数据结构的集合。解密请求502可以包括组成:密钥ID 504、密文数据506和加密配置508。密钥ID 504可以为数据对象诸如列表、数组或字符串,所述数据对象指示或以其他方式标识一个或多个计算区域的一个或多个托管密钥。密钥ID 504可以包括一个或多个托管密钥的标识符,其标识一个或多个托管密钥的计算区域(例如,托管密钥的标识符包括另外指示托管密钥的计算区域的信息)。密文数据506可以为指示要解密的密文的数据对象或数据结构。密文数据506可以包括具有密文的数据对象。密文数据506可以包括经加密数据密钥结构,诸如经加密数据密钥结构510,所述经加密数据密钥结构可以为诸如结合2所描述的那些经加密数据密钥结构。
加密配置508可以为指示要用于解密数据的加密算法或加密上下文的数据对象或数据结构。加密配置508可以包括一个或多个数据对象,诸如字符串,所述一个或多个数据对象指示或以其他方式包括要用于解密数据的加密信息。加密配置508可以指定如上文所描述的AAD。在一些实施方案中,加密配置508指定要用于解密数据的加密算法。仅当由密钥ID 504指示的密码密钥为非对称密码密钥时,才可指定加密算法。在一些实施方案中,加密配置508指定加密上下文。加密上下文可以为可以用于解密数据的信息。加密上下文可以指定数据,诸如如上文描述的AAD。仅当由密钥ID 504指示的密码密钥为对称密码密钥时,才可指定加密上下文。参考图5,密钥ID 504包括托管密钥的一个或多个标识符,密文数据506包括经加密数据密钥结构510,并且加密配置508包括AAD。
可以将解密请求502提交给密码服务实例或端点路由服务512。在一些示例中,解密请求502由密码服务实例获得,其中密码服务实例使用由密钥ID 504指示的一个或多个密钥和由加密配置508指示的加密信息来解密由密文数据506指示的密文。在一些示例中,解密请求502由端点路由服务512获得并且被路由至适当的密码服务实例。在一些示例中,端点路由服务512将解密请求502的部分路由到可用计算区域的密码服务实例,所述部分诸如解密请求502的用可用计算区域的密码服务实例的托管密钥加密的经加密数据密钥,如关于图6更详细地描述的。端点路由服务512可以为软件应用程序或程序,其确定要将进行密码操作的请求路由到的计算区域的密码服务实例。端点路由服务512可以为诸如结合图3所描述的那些端点路由服务。
解密请求502可以由一个或多个客户端通过一个或多个网页服务接口提交。解密请求502可以提交给端点路由服务512。可以由客户端518将解密请求502提交给端点路由服务512。解密请求502可以被寻址至端点路由服务512,诸如经由端点路由服务512的URL、网络位置/地址或其他标识符。客户端518可以为可访问由计算资源服务提供商提供的一个或多个服务的任何合适的计算装置,诸如计算机、移动装置、服务器等。
解密请求响应514可以为指示对解密请求的响应的各方面的数据对象和数据结构的集合。解密请求响应514可以包括数据密钥516。数据密钥516可以为可用于密码操作诸如加密、解密、数字签名等的密码密钥。经加密数据密钥结构510可以包括已经使用一个或多个计算区域的托管密钥加密的数据密钥516。
在接收到解密请求502后,端点路由服务512可以分析经加密数据密钥结构510以至少部分地基于由经加密数据密钥结构510指示的偏好和区域来确定可用计算区域;端点路由服务512随后可以将解密请求502路由到可用计算区域的密码服务实例,其中密码服务实例可以检查经加密数据密钥结构510以确定与可用计算区域相对应的经加密密钥,并使用特定于可用计算区域的由密钥ID 504标识的托管密钥来解密经加密密钥,以确定数据密钥516。密码服务实例可以响应于解密请求而将数据密钥516提供为对客户端518的解密请求响应514。
图6示出了解密请求的计算环境600的说明性示例。计算环境600包括端点路由服务612,其将解密请求602A的部分作为解密请求602B路由到计算区域(B)616(B)的密码服务实例。解密请求602A可以是诸如结合图5所描述的那些解密请求。
解密请求602A可以用于使密码服务实例解密经加密数据密钥。解密请求602A可以为指示解密请求的各方面的数据对象和数据结构的集合。解密请求602A可以包括组成:密钥ID 604A、密文数据606A和加密配置608。密钥ID 604A可以为数据对象诸如列表、数组或字符串,所述数据对象指示或以其他方式标识一个或多个计算区域的一个或多个托管密钥。密文数据606A可以为指示要解密的密文的数据对象或数据结构。密文数据606A可以包括经加密数据密钥结构610,其可以为诸如结合图2描述的那些经加密数据密钥结构。加密配置608可以为指示要用于解密数据的加密算法或加密上下文的数据对象或数据结构。
解密请求602A可以由一个或多个客户端通过一个或多个网页服务接口提交。解密请求602A可以提交给端点路由服务612。可以由客户端将解密请求602A提交给端点路由服务612。解密请求602A可以被寻址至端点路由服务612,诸如经由端点路由服务612的URL、网络位置/地址或其他标识符。端点路由服务612可以为软件应用程序或程序,其确定要将进行密码操作的请求路由到的计算区域的密码服务实例。端点路由服务612可以为诸如结合图3所描述的那些端点路由服务。
在接收到解密请求602A后,端点路由服务612可以分析经加密数据密钥结构610以至少部分地基于由经加密数据密钥结构610指示的偏好和区域来确定可用计算区域。端点路由服务612可以至少部分地基于由经加密数据密钥结构610指示的偏好和区域来将解密请求602A作为解密请求602B路由到可用计算区域的密码服务实例。例如,经加密数据密钥结构610指示计算区域(A)616(A)、计算区域(B)616(B)和计算区域(C)616(C)以及次序的偏好,其中次序指示计算区域(A)616(A)后接计算区域(B)616(B)后接计算区域(C)616(C)。继续所述示例,端点路由服务612获得解密请求602A并确定计算区域(A)616(A)不可用并且计算区域(B)616(B)可用,并且将解密请求602A作为解密请求602B路由到计算区域(B)616(B)的密码服务实例。进一步继续所述示例,计算区域(B)的密码服务实例使用特定于计算区域(B)的密码服务实例的由密钥ID 604B标识的托管密钥(例如,托管密钥(B)),来解密与经加密数据密钥结构610的计算区域(B)(例如,经加密的数据密钥区域(B)614)相对应的经加密密钥以确定经解密数据密钥;密码服务实例可以向提交解密请求602A的客户端提供数据密钥。
在一些实施方案中,解密请求602B与解密请求602A相同(例如,包括相同的组成)。在一些实施方案中,解密请求602B包括解密请求602A的信息的子集。端点路由服务612可以将解密请求602A的部分作为解密请求602B路由到计算区域的密码服务实例。参考图6,解密请求602B的密钥ID 604B包括托管密钥(B),其可以为解密请求602A的密钥ID 604A中指示的托管密钥的较大列表的一部分。参考图6,解密请求602B的密文数据606B包括经加密数据密钥区域(B)614,其可以为解密请求602A的经加密数据密钥结构610的一部分。
端点路由服务612可以将解密请求的部分路由到与计算区域的密码服务实例相对应的计算区域的密码服务实例(例如,与计算区域的密码服务相对应的托管密钥标识符和/或经加密数据密钥)。例如,端点路由服务612获得解密请求602A,并通过如上文描述的一个或多个过程确定将解密请求602A作为解密请求602B路由到计算区域(B)616(B)的密码服务实例。继续所述示例,端点路由服务612生成解密请求602B,其中密钥ID 604B包括托管密钥(B)的标识符,所述托管密钥为计算区域(B)616(B)的由密码服务实例用来加密数据密钥以生成经加密数据密钥区域(B)614的托管密钥,并且密文数据606B包括经加密数据密钥区域(B)614,所述经加密数据密钥区域为由计算区域(B)616(B)的密码服务实例生成的经加密数据密钥。进一步继续所述示例,计算区域(B)616(B)的密码服务实例获得解密请求602B,并使用由密钥ID 604B标识的托管密钥(B)来解密密文数据606B的经加密数据密钥区域(B)614以确定经解密数据密钥;密码服务实例可以向提交解密请求602A的客户端提供数据密钥。
图7示出了生成高可用性数据密钥的过程700的说明性示例。过程700(或本文描述的任何其他过程,或其变型和/或组合)中的一些或全部可以在被配置有计算机可执行指令的一个或多个计算机系统的控制下执行,并且可以作为共同地在一个或多个处理器上执行的代码(例如,计算机可执行指令、一个或多个计算机程序或一个或多个应用程序)、由硬件、软件或其组合来实现。代码可以以包括可由一个或多个处理器执行的多个计算机可读指令的计算机程序的形式存储在计算机可读储存介质上。计算机可读存储介质可以为非暂时性计算机可读介质。可用于执行过程700的至少一些计算机可读指令不可以仅使用暂时性信号(例如,传播的瞬态电或电磁传输)来存储。非暂时性计算机可读介质不一定在暂时性信号的收发器内包括非暂时性数据存储电路(例如,缓冲器、高速缓存和队列)。在实施方案中,过程700至少部分地在计算机系统诸如本公开中别处描述的那些上执行。过程700可以由贯穿本公开描述的各种合适的密码服务实例,诸如结合图1至图6描述的密码服务实例执行。
执行过程700的至少一部分的系统包括至少获得702生成数据密钥的应用程序编程接口请求的可执行代码,应用程序编程接口(API)请求至少包括计算区域集。在至少一个实施方案中,API请求为生成数据密钥请求,诸如结合图1描述的那些。API请求可以为生成高可用性经加密数据密钥的请求,并且可以通过一个或多个网络获得。请求可以至少包括以下组成:密钥ID、区域、偏好和配置信息。
密钥ID可以为数据对象诸如列表或数组,所述数据对象包括一个或多个计算区域的一个或多个托管密钥的标识符。密钥ID可以包括一个或多个托管密钥的标识符,其标识一个或多个托管密钥的计算区域(例如,托管密钥的标识符包括另外指示托管密钥的计算区域的信息)。区域可以为包括一个或多个计算区域的标识符的数据对象诸如列表或数组。区域可以指定一个或多个密码服务实例的计算区域列表。偏好可以为数据结构,其包括指示用于选择计算区域的偏好的信息。偏好可以指定偏好,其可以确定要访问一个或多个计算区域中的哪个计算区域以进行密码操作。偏好可以指示用于确定一个或多个计算区域中的计算区域的计算区域次序或其他逻辑。配置信息可以为数据结构,其包括可以指定与生成数据密钥相关联的其他数据的信息。配置信息可以包括指示加密上下文、要生成的数据密钥的长度/大小等的一个或多个数据对象。
执行过程700的至少一部分的系统包括至少生成704数据密钥的可执行代码。系统可以通过各种密码函数生成数据密钥。系统可以使用一个或多个密钥导出函数来生成数据密钥。可以至少部分地基于在请求中指示的配置信息来生成数据密钥,所述配置信息可以指示数据密钥的特性,诸如数据密钥的长度、数据密钥的大小、数据密钥的某些限制(例如,要用于生成数据密钥的可用字母数字字符)等。
执行过程700的至少一部分的系统包括向计算区域集至少提交706加密数据密钥的请求的可执行代码。请求可以为加密请求,诸如结合图1描述的那些。请求可以包括数据密钥和计算区域集中的计算区域的要用于加密数据密钥的托管密钥的标识符。系统可以将请求提交给计算区域集中的计算区域的密码服务实例。系统可以生成请求并通过一个或多个网络将请求提交给密码服务实例。密码服务实例可以获得请求并使用请求中标识的托管密钥来加密数据密钥。
执行过程700的至少一部分的系统包括响应于请求而至少获得708经加密数据密钥集的可执行代码,所述经加密数据密钥集使用计算区域集的对应托管密钥来加密。请求可以使计算区域集中的计算区域的密码服务实例使用请求中标识的托管密钥来加密数据密钥。例如,请求中的第一请求使计算区域的密码服务实例使用托管密钥来加密数据密钥,其中数据密钥是从第一请求获得的,并且托管密钥是在第一请求中标识的。系统可以获得对请求中的每个请求的包括经加密数据密钥的响应以获得所述经加密数据密钥集。
执行过程700的至少一部分的系统包括至少生成710数据结构的可执行代码,所述数据结构包括绑定集以及至少所述经加密数据密钥集,所述绑定集将所述经加密数据密钥集中的经加密数据密钥映射到所述计算区域集中的对应计算区域。数据结构可以称为经加密数据密钥结构。数据结构可以为不透明数据结构,使得数据结构的内部组成(例如,经加密数据密钥和区域、偏好)不可由来自步骤702的请求者读取。不透明数据结构中的数据可以是不透明的,使得请求者可能无法解释不透明数据结构。数据结构可以包括经加密数据密钥和区域数据结构及偏好数据结构。数据结构可以是不透明的,使得数据结构的经加密数据密钥和区域数据结构及偏好数据结构不可由来自步骤702的请求者读取,并且请求者可能无法解释不透明数据。如本文所述,不透明数据可以为任何形式的隐藏数据,使得某些方难以或不可能仅在给定不透明数据的情况下确定底层隐藏数据。在一些实施方案中,不透明数据是通过使用加密生成的。不透明数据可以由系统(例如,端点路由服务和/或密码服务实例)解释,而无需执行密码操作(例如,解密)。例如,在各种实施方案中,端点路由服务能够标识要将请求路由到的特定密码服务实例,而不必要求端点路由服务具有解密包括在请求中的经加密数据密钥的能力。数据结构可以包括与计算区域相关联的经加密数据密钥。数据结构可以包括可以在获得的API请求中指示的偏好。所述绑定集可以为数据结构,诸如将经加密数据密钥映射到计算区域的数组(例如,所述绑定集可以指示特定的经加密数据密钥与特定的计算区域相关联)。在一些情况下,绑定集为或包括网络地址、IP地址或与计算区域列表中的对应计算区域相关联的其他信息的列表——例如,可以经由绑定集中的第一绑定接触计算区域列表中的第一计算区域(例如,以确定可用性)。
执行过程700的至少一部分的系统包括至少提供712对应用编程接口请求的响应的可执行代码,所述响应包括数据结构和数据密钥。系统可以通过一个或多个网络向客户端提供响应。响应可以包括数据结构(也称为经加密数据密钥结构)和数据密钥。响应可以包括与数据结构和数据密钥相关联的元数据。客户端可以获得响应,并在一个或多个密码操作(例如,加密、解密、数字签名)中使用数据密钥。客户端可以在执行一个或多个密码操作之后丢弃或以其他方式删除数据密钥,其中数据结构可以可由客户端使用来获取数据密钥。
图8示出了使用经加密密码密钥数据结构来执行密码操作的过程800的说明性示例。过程800(或本文描述的任何其他过程,或其变型和/或组合)中的一些或全部可以在被配置有计算机可执行指令的一个或多个计算机系统的控制下执行,并且可以作为共同地在一个或多个处理器上执行的代码(例如,计算机可执行指令、一个或多个计算机程序或一个或多个应用程序)、由硬件、软件或其组合来实现。代码可以以包括可由一个或多个处理器执行的多个计算机可读指令的计算机程序的形式存储在计算机可读储存介质上。计算机可读存储介质可以为非暂时性计算机可读介质。可用于执行过程800的至少一些计算机可读指令不可以仅使用暂时性信号(例如,传播的瞬态电或电磁传输)来存储。非暂时性计算机可读介质不一定在暂时性信号的收发器内包括非暂时性数据存储电路(例如,缓冲器、高速缓存和队列)。在实施方案中,过程800至少部分地在计算机系统诸如本公开中别处描述的那些上执行。过程800可以由贯穿本公开描述的各种合适的端点路由服务,诸如结合图3描述的端点路由服务执行。经加密密码密钥数据结构可以称为经加密数据密钥结构。
执行过程800的至少一部分的系统包括至少获得802执行密码操作的请求的可执行代码,其中所述请求包括经加密密码密钥数据结构。经加密密码密钥数据结构可以称为数据结构或经加密数据密钥结构。请求可以为执行解密操作的请求,诸如结合图1描述的解密请求。在一些实施方案中,系统为端点路由服务,其中经由端点路由服务的URL或其他标识符向系统提交请求。请求可以由一个或多个客户端通过一个或多个网络诸如互联网提交。
执行过程800的至少一部分的系统包括用于至少部分地基于偏好和所选择的计算区域可用来至少选择804多个计算区域中的计算区域的可执行代码。可以在获得的请求的经加密密码密钥数据结构中指示偏好。偏好可以指示用于选择一个或多个计算区域的标准,诸如地理要求、延迟要求或安全要求。地理要求可以基于接近度要求,其中将基于接近度来选择计算区域(例如,首先选择最近的计算区域,首先选择最远的计算区域,等等)。延迟要求可以基于网络延迟要求,其中要基于网络延迟来选择计算区域(例如,首先选择具有最低网络延迟的计算区域,首先选择具有最高网络延迟的计算区域,等等)。安全要求可以基于各种法律和/或安全要求,其中将基于法律和/或安全特性来选择计算区域(例如,首先选择具有特定法律和/或安全特性的计算区域,等等)。偏好可以指示一个或多个计算区域的次序,其中按照所指示的次序选择计算区域。
系统可以确定多个计算区域的可用性。系统可以包括可以监测多个计算区域中的计算区域的状态的各种软件程序。系统可以访问多个计算区域中的计算区域以确定哪些计算区域可用和/或可访问。系统可以向计算区域提交各种消息,并通过对消息的响应或在没有所述响应的情况下确定哪些计算区域可用(例如,不可用的计算区域无法响应消息或对这些消息的响应是错误响应)。例如,系统对多个计算区域中的每个计算区域进行查验,并且基于对查验的响应或在没有所述响应的情况下,确定哪些计算区域不可用/不可访问(例如,对不可用的计算区域的查验产生错误指示)。在一些情况下,系统高速缓存各种计算区域的连接数据。系统可以根据各种时间间隔连续地对计算区域进行查验,以确定多个计算区域中的计算区域的可用性。在一些示例中,计算区域不可用,使得计算区域的密码服务实例不可访问。计算区域可能因可能影响计算区域的计算资源的各种事件诸如断电、自然灾害、网络中断等而不可用。
系统基于计算区域的可用性来利用偏好来选择计算区域。系统可以包括各种软件程序,其对可以分析可用计算区域并基于偏好选择可用计算区域中的计算区域的各种逻辑、函数和过程进行编码。系统分析可用计算区域并基于偏好来选择计算区域。例如,偏好指示地理接近度标准,其中系统选择地理上最接近提交请求的客户端的计算区域。作为另一示例,偏好指示网络延迟标准,其中系统选择具有最低网络延迟的计算区域。作为另一示例,偏好指示安全或法律要求标准,其中系统选择满足安全或法律要求的计算区域。系统可以确定要访问的所选择的计算区域的密码服务实例。
执行过程800的至少一部分的系统包括至少将经加密密码密钥至少提供806给所选择的计算区域以执行密码操作的可执行代码。系统可以向所选择的计算区域的密码服务实例提供经加密密码密钥。经加密密码密钥可以为使用来自所选择的计算区域的托管密钥来加密的数据密钥。系统可以将经加密密码密钥作为较大数据结构的一部分提供给所选择的计算区域。在一些示例中,系统将经加密密码密钥提供给所选择的计算区域。系统可以将获得的请求路由到所选择的计算区域。在一些示例中,系统将获得的请求的部分路由到所选择的计算区域的密码服务实例。
系统可以将经加密密码密钥以请求的形式提供给所选择的计算区域。请求可以传输到所选择的计算区域的密码服务实例,并且可以为解密请求,诸如结合图1所描述的那些。请求可以包括数据结构,所述数据结构包括经加密密码密钥。请求可以包括经加密密码密钥本身(例如,不是较大数据结构的一部分)。密码服务实例可以获得请求,并解密经加密密码密钥。密码服务实例可以响应于包括经加密密码密钥数据结构的请求而向客户端提供至少部分地基于经加密密码密钥数据结构确定的经解密密钥。
图9示出了用于实现根据实施方案的各方面的示例性系统900的各方面。如将了解,尽管出于解释目的使用基于web的系统,但是可以视情况使用不同系统来实现各种实施方案。在实施方案中,系统包括电子客户端装置902,所述电子客户端装置包括可操作以通过适当网络904发送和/或接收请求、消息或信息并且将信息传送回装置的用户的任何适当装置。此类客户端装置的示例包括个人计算机、手机或其他移动电话、手持式消息传递装置、膝上计算机、平板计算机、机顶盒、个人数据助理、嵌入式计算机系统、电子书阅读器等等。在实施方案中,网络包括任何适当的网络,包括内联网、互联网、蜂窝网络、局域网、卫星网络或任何其他此类网络和/或它们的组合,并且用于此类系统的部件至少部分地取决于选定网络和/或系统的类型。用于经由此类网络进行通信的许多协议和部件是众所周知的,因而本文不再详细论述。在实施方案中,通过网络的通信通过有线和/或无线连接及其组合实现。在实施方案中,网络包括互联网和/或其他可公开寻址的通信网络,因为系统包括用于接收请求并且响应于所述请求而提供内容的web服务器906,然而对于其他网络来说,可使用服务类似目的的替代装置,如对于本领域普通技术人员显而易见的。
在实施方案中,说明性系统包括至少一个应用程序服务器908和数据存储区910,并且应当理解,可以存在可以链接起来或以其他方式配置的若干应用程序服务器、层或其他元件、过程或部件,其可进行交互以执行诸如从适当数据存储区获得数据的任务。在实施方案中,服务器被实现为硬件装置、虚拟计算机系统、在计算机系统上执行的编程模块、和/或配置有硬件和/或软件的其他装置以通过网络接收和响应通信(例如,web服务应用程序编程接口(API)请求)。如本文所使用的,除非另有说明或从上下文中清楚,术语“数据存储区”指代能够存储、访问和检索数据的任何装置或装置组合,所述装置或装置组合可以包括任何标准、分布式、虚拟或集群式系统中的任何组合和任何数目的数据服务器、数据库、数据存储装置和数据存储介质。在实施方案中,数据存储区与块级和/或对象级接口通信。应用程序服务器可包括任何适当硬件、软件和固件,所述硬件、软件和固件视执行客户端装置的一个或多个应用程序的各方面的需要而与数据存储区集成、处置应用程序的部分或全部数据访问和业务逻辑。
在在实施方案中,应用程序服务器与数据存储区合作提供访问控制服务并生成内容,包括但不限于文本、图形、音频、视频和/或由web服务器按以下形式提供给与客户端装置相关联的用户的其他内容:超文本标记语言(“HTML”)、可扩展标记语言(“XML”)、JavaScript、级联样式表(“CSS”)、JavaScript对象表示法(JSON)和/或另一种适当的客户端或其他结构化语言。在实施方案中,传送到客户端装置的内容由客户端装置处理以提供一种或多种形式的内容,包括但不限于用户可以通过听觉、视觉和/或其他感官感受到的形式。在实施方案中,所有请求和响应的处置以及客户端装置902与应用程序服务器908之间的内容传递由web服务器使用以下各项处置:PHP超文本预处理器(“PHP”)、Python、Ruby、Perl、Java、HTML、XML、JSON和/或本示例中另一种合适的服务器端结构化语言。在实施方案中,本文描述为由单个装置执行的操作由形成分布式和/或虚拟系统的多个装置共同执行。
在实施方案中,数据存储区910包括若干单独的数据表、数据库、数据文档、动态数据存储方案和/或用于存储与本公开的特定方面相关的数据的其他数据存储机构和介质。在实施方案中,所示的数据存储区包括用于存储生成数据912和用户信息916的机构,所述生成数据和用户信息用于提供用于生产端的内容。数据存储区还被示出为包括用于存储记录数据914的机构,所述记录数据在实施方案中用于报告、计算资源管理、分析或其他此类目的。在实施方案中,诸如页面图像信息和访问权限信息(例如,访问控制策略或其他许可编码)的其他方面视情况存储在以上列出的任何机构中的数据存储区中或数据存储区910中的附加机构中。
在实施方案中,通过与其相关联的逻辑,数据存储区910可操作以从应用程序服务器908接收指令并响应于所述指令获得、更新或以其他方式处理数据,并且应用程序服务器908响应于所接收到的指令提供静态、动态数据或静态和动态数据的组合。在实施方案中,动态数据(诸如在web日志(博客)、购物应用程序、新闻服务和其他此类应用程序中使用的数据)由如本文所述的服务器端结构化语言生成或由在应用程序服务器上操作或在其控制下操作的内容管理系统(“CMS”)提供。在实施方案中,用户通过由用户操作的装置提交对某类项目的搜索请求。在该示例中,数据存储区访问用户信息以验证用户的身份,访问目录详细信息以获得有关该类型项目的信息,并将信息返回给用户,诸如在结果列表中用户经由用户装置902上的浏览器查看的网页。继续此示例,在浏览器的专用页面或窗口中查看感兴趣的特定项目的信息。然而,应注意,本公开的实施方案不一定限于网页的上下文,而是更普遍地适用于一般处理请求,其中请求不一定是对内容的请求。示例性请求包括管理系统900和/或另一系统托管的计算资源和/或与其进行交互的请求,诸如用于启动、终止、删除、修改、读取和/或以其他方式访问此类计算资源。
装置902可以向计算区域922A中的网页服务器906提交请求918。计算区域922A可以托管或以其他方式实现密码服务实例。请求918可以为如结合图1所描述的生成数据密钥请求。请求918可以为对高可用性数据密钥的请求,并且可以指示区域、偏好、密钥标识符、加密配置信息以及其他信息。网页服务906可以通过各种过程生成经加密数据密钥结构920,诸如结合图1至图8所描述的那些过程。网页服务906可以结合计算区域922B和922C的密码服务实例生成经加密数据密钥结构920。装置902可以获得经加密数据密钥结构920,并在一个或多个密码操作中使用经加密数据密钥结构920。
在实施方案中,每个服务器通常包括提供用于所述服务器的一般管理和操作的可执行程序指令的操作系统,并且包括存储指令的计算机可读存储介质(例如,硬盘、随机存取存储器、只读存储器等),所述指令在由服务器的处理器执行时,使或以其他方式允许服务器执行其预期功能(例如,所述功能是作为根据服务器的一个或多个处理器执行存储在计算机可读存储介质上的指令的结果而实现的)。
在实施方案中,系统900是利用经由通信链路(例如,传输控制协议(TCP)连接和/或传输层安全(TLS)或其他密码保护的通信会话)使用一个或多个计算机网络或直接连接互连的若干计算机系统和部件的分布式和/或虚拟计算系统。然而,本领域的普通技术人员将理解,此类系统可以在具有比图9中所示的更少或更多数量的部件的系统中操作。因此,图9中的系统900的描绘应该被视为本质上是说明性的并且不限制本公开的范围。
各种实施方案可以进一步在广泛范围的操作环境中实现,在一些情况下,所述操作环境可以包括可用于操作多个应用程序中的任一个的一个或多个用户计算机、计算装置或处理装置。在一个实施例中,用户或客户端装置包括多个计算机中的任一个,诸如运行标准操作系统的台式计算机、膝上计算机或平板计算机,以及运行移动软件并能够支持多个联网和消息传递协议的(移动)手机、无线和手持式装置,并且此类系统还包括运行各种可商购得的操作系统和其他已知应用程序中的任一个的多个工作站,用于诸如开发和数据库管理之类的目的。在一个实施例中,这些装置还包括其他电子装置(诸如虚拟终端、瘦客户端、游戏系统和能够经由网络进行通信的其他装置),以及利用操作系统级别虚拟化的虚拟装置(诸如虚拟机、管理程序、软件容器),以及支持能够经由网络进行通信的虚拟化的其他虚拟装置或非虚拟装置。
在一个实施例中,系统利用本领域技术人员可能熟悉的至少一种网络来使用各种可商购得的协议中的任一种支持通信,所述协议如传输控制协议/互联网协议(“TCP/IP”)、用户数据报协议(“UDP”)、在开放系统互连(“OSI”)模型的各层中操作的协议、文件传送协议(“FTP”)、通用即插即用(“UpnP”)、网络文件系统(“NFS”)、公共互联网文件系统(“CIFS”)以及其他协议。在一个实施例中,网络是局域网、广域网、虚拟专用网、互联网、内部网、外联网、公共交换电话网、红外网络、无线网络、卫星网络以及它们的任何组合。在一个实施例中,面向连接的协议用于在网络端点之间进行通信,使得面向连接的协议(有时称为基于连接的协议)能够在有序流中传输数据。在一个实施例中,面向连接的协议可以是可靠的或不可靠的。例如,TCP协议是一种可靠的面向连接的协议。异步传输模式(“ATM”)和帧中继是不可靠的面向连接的协议。面向连接的协议与面向数据包的协议(诸如UDP)形成对比,后者在没有保证的排序的情况下传输数据包。
在一个实施例中,系统利用web服务器,该web服务器运行各种服务器或中间层应用程序中的一个或多个,包括超文本传输协议(“HTTP”)服务器、FTP服务器、公共网关接口(“CGI”)服务器、数据服务器、Java服务器、Apache服务器和业务应用程序服务器。在一个实施例中,一个或多个服务器还能够响应于来自用户装置的请求而执行程序或脚本,如通过执行实施为以任何编程语言(如C、C#或C++)或任何脚本语言(如Ruby、PHP、Perl、Python或TCL)以及其组合写成的一个或多个脚本或程序的一个或多个web应用程序。在一个实施例中,一个或多个服务器还包括数据库服务器,包括但不限于从/>和/>可商购得的那些,以及开源服务器,如MySQL、Postgres、SQLite、MongoDB以及其他任何能够存储、检索和访问结构化或非结构化数据的服务器。在一个实施例中,数据库服务器包括基于表的服务器、基于文档的服务器、非结构化服务器、关系服务器、非关系服务器,或者这些和/或其他数据库服务器的组合。
在一个实施例中,系统包括以上讨论的各种数据存储区以及其他存储器和存储介质,其可驻留在各种位置,如在一个或多个计算机本地(和/或驻留在一个或多个计算机中)的存储介质上,或远离网络上的计算机中的任何或所有计算机。在一个实施例中,信息驻留在本领域技术人员熟悉的存储区域网(“SAN”)中,并且类似地,用于执行属于计算机、服务器或其他网络装置的功能的任何必要的文件视情况本地和/或远程存储。在系统包括计算机化装置的实施例中,每个此类装置可包括经由总线电耦合的硬件元件,这些元件包括例如至少一个中央处理单元(“CPU”或“处理器”)、至少一个输入装置(例如鼠标、键盘、控制器、触摸屏或小键盘)、至少一个输出装置(例如显示装置、打印机或扬声器)、至少一个存储装置诸如磁盘驱动器、光学存储装置、和固态存储装置诸如随机存取存储器(“RAM”)或只读存储器(“ROM”),以及可移除的媒体装置、存储卡、闪存卡等,以及它们的各种组合。
在一个实施例中,此类装置还包括计算机可读存储介质读取器、通信装置(例如,调制解调器、网卡(无线或有线)、红外通信装置等)、以及如上所述的工作存储器,其中计算机可读存储介质读取器连接或被配置来接收计算机可读存储介质,表示远程、本地、固定和/或可移除的存储装置以及用于暂时和/或更永久地含有、存储、传输和检索计算机可读信息的存储介质。在一个实施例中,系统和各种装置通常还包括位于至少一个工作存储器装置内的多个软件应用程序、模块、服务或其他元件,包括操作系统和应用程序,如客户端应用程序或web浏览器。在一个实施例中,使用定制硬件,和/或特定元件在硬件、软件(包括可移植软件,如小程序)或两者中实现。在一个实施例中,采用与如网络输入/输出装置的其他计算装置的连接。
在一个实施例中,用于含有代码或部分代码的存储介质和计算机可读介质包括本领域已知或已使用的任何适当介质,包括存储介质和通信介质,如但不限于以用于存储和/或传输信息(如计算机可读指令、数据结构、程序模块或另一个数据)的任何方法或技术所实现的易失性和非易失性、可移除和不可移除的介质,包括RAM、ROM、电可擦可编程只读存储器(“EEPROM”)、闪存或另一个存储器技术、只读光盘驱动器(“CD-ROM”)、数字通用光盘(DVD)或其他光学存储器、磁盒、磁带、磁盘存储装置或另一个磁性存储装置,或可用于存储所需信息且可由系统装置访问的任何另一个介质。基于本文提供的公开内容和教导,本技术领域普通技术人员将了解实现各种实施方案的其他方式和/或方法。
在贯穿本公开描述的各种实施方案中,计算资源被配置为通过将计算机可读可执行指令加载到存储器中来执行任务(例如,生成数据、处理数据、存储数据、路由消息、传输数据、提交请求、处理请求),所述计算机可读可执行指令作为一个或多个处理器的执行的结果使一个或多个处理器执行指令以执行任务。在至少一个实施方案中,一种计算机系统被配置为通过控制特定命令、请求、任务、作业等的执行的软件应用程序来执行任务。计算机系统可以被配置为通过以下执行编码在软件应用程序中的计算机可读指令:将软件应用程序的可执行代码加载到存储器中并使用计算机系统的一个或多个处理器来运行可执行指令。
因此,说明书和附图被认为是说明性的而不是限制性的意义。然而,将显而易见的是,在不脱离如在权利要求中阐述的主题的更宽泛精神和范围的情况下,可以对其做出各种修改和改变。
其他变型也在本公开的精神内。因此,尽管所公开的技术可进行各种修改和替代性构造,但在附图中示出并在上文中详细描述了其某些示出的实施方案。然而,应理解,并不旨在将由权利要求阐述的主题限制到所公开的一种或多种具体形式,相反,旨在涵盖落在如所附权利要求限定的本公开的精神和范围内的所有修改、替代性构造和等效形式。
在描述所公开的实施方案的上下文中(尤其是在以下权利要求的上下文中),术语“一个”和“一种”以及“所述”以及类似指称对象的使用应解释为涵盖单数和复数两者,除非在本文另外地指示或明显地与上下文矛盾。同样,“或”一词的使用应被解释为表示“和/或”,除非明确或与上下文矛盾。术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(即,意味着“包括但不限于”),除非另有说明。术语“连接的”在未进行修改并且指代物理连接的情况下应解释为部分地或全部地纳入在以下解释内:附接至或结合在一起,即使存在介入物。除非本文另外指明,否则本文中值范围的列举仅仅意图用作个别地表示属于所述范围的各单独值的速记方法,并且犹如本文个别描述地那样将各单独值并入到本说明书中。除非上下文另外指出或与其矛盾,否则术语“集”(例如“项的集”)或“子集”的使用应解释为包括一个或多个成员的非空集合。此外,除非上下文另有说明或矛盾,否则对应集合的术语“子集”不一定表示对应集合的真子集,而是所述子集和对应集合可以相等。除非另有明确说明或从上下文中清楚,否则“基于”一词的使用意为“至少部分地基于”而不限于“仅仅基于”。
连结语,诸如“A,B,和C中的至少一个”或“A,B和C中的至少一个”形式的短语(即带有或不带有序列逗号的相同短语),除非另有特别说明或另外与上下文明显矛盾,应在上下文中理解为通常用来表示某个项、术语等可以是A或B或C,A和B和C的集的任何非空子集,或与上下文没有矛盾或另外排除在外(包含至少一个A,至少一个B或至少一个C)的任何集。例如,在具有三个成员的集的说明性示例中,连结短语“A、B、和C中的至少一个”和“A、B和C中的至少一个”是指以下任意集:{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C},并且如果没有明显矛盾或与上下文矛盾,则具有{A},{B}和/或{C}的任何集合作为子集(例如,具有多个“A”的集)。因此,此类连结语通常不意图暗示某些实施方案要求各自存在A中的至少一个、B中的至少一个和C中的至少一个。类似地,诸如“A,B,或C中的至少一个”和“A、B或C中的至少一个”的短语所指代的与“A,B,和C中的至少一个”和“A、B或C中的至少一个”所指代的相同,都是指代以下任意集合:{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C},除非上下文中明确或清晰地指出不同的含义。另外,除非另有说明或与上下文矛盾,否则术语“多个”指示为复数的状态(例如,“多个项”指示多项)。多个项的数量为至少两个,但如果明确或通过上下文指示,则可以更多。
除非本文中另有指示或另外与上下文明显矛盾,否则本文中所描述的过程的操作都可以按任何合适的顺序进行。在一个实施例中,诸如本文所描述的那些过程(或其变型和/或组合)的过程在配置有可执行指令的一个或多个计算机系统的控制下执行并且被实施为由硬件或其组合共同地在一个或多个处理器上执行来实施的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)。在一个实施例中,代码例如以计算机程序的形式存储在计算机可读存储介质上,所述计算机程序包括可由一个或多个处理器执行的多个指令。在实施方案中,计算机可读存储介质为排除暂时性信号(例如,传播的瞬态电或电磁传输)但包括在暂时性信号的收发器内的非暂时性数据存储电路(例如,缓冲器、高速缓存和队列)的非暂时性计算机可读存储介质。在一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令的一组一个或多个非暂时性计算机可读存储介质上,所述可执行指令在由计算机系统的一个或多个处理器执行时(即,由于被执行)使计算机系统执行本文所述的操作。在实施方案中,非暂时性计算机可读存储介质的集包括多个非暂时性计算机可读存储介质,并且多个非暂时性计算机可读存储介质中的一个或多个单独的非暂时性存储介质不具有所有代码,而所述多个非暂时性计算机可读存储介质共同存储所有代码。在实施方案中,执行可执行指令,使得不同的指令由不同的处理器执行,例如,在实施方案中,非暂时性计算机可读存储介质存储指令,并且主CPU执行某些指令,而图形处理器单元执行其他指令。在另一实施方案中,计算机系统的不同部件具有不同的处理器,并且不同的处理器执行指令的不同子集。
因此,在一个实施例中,计算机系统被配置为实施单独地或共同地执行本文所描述的过程的操作的一个或多个服务,并且这样的计算机系统配置有使得能够执行操作的适用的硬件和/或软件。此外,计算机系统在本公开的实施方案中为单个装置,并且在另一实施方案中为分布式计算机系统,其包括不同地操作的多个装置,使得分布式计算机系统执行本文描述的操作,并且使得单个装置不执行所有操作。
可以鉴于以下条款中的至少一个来描述至少一个实施方案:
1.一种计算机实现的方法,其包括:获得生成数据密钥的应用程序编程接口请求,应用程序编程接口请求指示:计算区域集;以及计算区域偏好集;生成数据密钥;向计算区域集提交请求以加密数据密钥;响应于请求,获得经加密数据密钥集,所述经加密数据密钥集使用计算区域集的对应托管密钥进行加密;生成数据结构,所述数据结构包括:计算区域偏好集;经加密数据密钥集;以及绑定集,其将经加密数据密钥集中的经加密数据密钥映射到计算区域集中的对应计算区域;以及提供对应用程序编程接口请求的至少包括数据结构的响应。
2.根据条款1所述的计算机实现的方法,应用程序编程接口请求为网页服务应用程序编程接口请求,其编码用于以下的参数:计算区域集的托管密钥的密码密钥标识符集;计算区域集;计算区域偏好集;以及用于生成数据密钥的配置信息。
3.根据条款1或2所述的计算机实现的方法,其还包括:获得解密数据密钥的第二应用程序编程接口请求,第二应用程序编程接口请求包括数据结构;检查数据结构以确定经加密数据密钥集中对应于托管密钥的第一经加密数据密钥;使用托管密钥来解密第一经加密数据密钥以确定数据密钥的明文;以及提供对第二应用编程接口请求的包括数据密钥的明文的第二响应。
4.根据条款1至3中任一项所述的计算机实现的方法,其中:应用程序编程接口请求还包括标识对应的托管密钥的密码密钥标识符集;并且对计算区域集的加密数据密钥的请求至少包括密码密钥标识符集。
5.一种系统,其包括:一个或多个处理器;以及存储计算机可执行指令的存储器,该计算机可执行指令可由一个或多个处理器执行以使系统:获得执行密码操作的请求,其中请求包括经加密密码密钥数据结构,并且进一步地其中经加密密码密钥数据结构包括:多个经加密密码密钥;与多个经加密密码密钥相对应的多个计算区域的标识符;以及指示如何确定要使用多个计算区域中的哪个计算区域来执行密码操作的偏好;至少部分地基于偏好和所选择的计算区域可用来选择多个计算区域中的计算区域;以及至少将经加密密码密钥提供给所选择的计算区域以执行密码操作,其中经加密密码密钥来自多个经加密密码密钥并且与所选择的计算区域相关联。
6.根据条款5所述的系统,其中偏好指示多个计算区域中要用于执行密码操作的计算区域的次序。
7.根据条款5或6所述的系统,其中至少将经加密密码密钥提供给所选择的计算区域以执行密码操作的指令还包括指令,该指令作为由一个或多个处理器执行的结果,使系统将经加密密码密钥数据结构提供给所选择的计算区域。
8.根据条款5至7中任一项所述的系统,其中执行密码操作的请求为获得明文密码密钥的请求,进一步地其中多个经加密密码密钥为明文密码密钥的不同密文。
9.根据条款5至8中任一项所述的系统,其中选择多个计算区域中的计算区域的指令包括作为由一个或多个处理器执行的结果,使系统至少通过以下操作来确定多个计算区域中的计算区域的可用性的指令:将多个消息传输到多个计算区域中的计算区域;以及至少部分地基于对多个消息的响应来确定计算区域的可用性。
10.根据条款5至9中任一项所述的系统,其中指令还包括指令,该指令作为由一个或多个处理器执行的结果,使系统:至少部分地基于请求来生成第二请求,其中第二请求包括来自所选择的计算区域的托管密钥的标识符以及经加密密码密钥;以及将第二请求提交给所选择的计算区域的密码服务实例,以使密码服务实例使用来自所选择的计算区域的托管密钥来解密经加密密码密钥。
11.根据条款10所述的系统,其中用来自所选择的计算区域的托管密钥来加密经加密密码密钥。
12.根据条款5至11中任一项所述的系统,其中经加密密码密钥被提供给所选择的计算区域的密码服务实例。
13.一种其上存储可执行指令的非暂时性计算机可读存储介质,该可执行指令作为由计算机系统的一个或多个处理器计算机处理的结果,使计算机系统:提交生成密码密钥的应用程序编程接口请求,应用程序编程接口请求包括:计算区域集;以及偏好集;获得对应用程序编程接口请求的包括密码密钥和数据结构的响应,该数据结构编码:偏好集;经加密数据密钥集;以及绑定集,其将经加密数据密钥集中的经加密数据密钥映射到计算区域集中的对应计算区域;并且其中数据结构可由计算机系统使用以提交可以基于计算区域集中的至少一个计算区域可用而满足的密码请求。
14.根据条款13所述的非暂时性计算机可读存储介质,其中指令还包括指令,该指令作为由一个或多个处理器执行的结果,使计算机系统:提交包括数据结构的第二应用程序编程接口请求;以及从计算区域集中的区域获得对第二应用程序编程接口请求的包括明文数据密钥的第二响应。
15.根据条款13或14所述的非暂时性计算机可读存储介质,其中偏好集包括一个或多个标准,其确定要使用计算区域集中的哪个计算区域来执行密码操作。
16.根据条款15所述的非暂时性计算机可读存储介质,其中一个或多个标准包括以下各项中的至少一者:地理要求;延迟要求;或安全要求。
17.根据条款13至16中任一项所述的非暂时性计算机可读存储介质,其中指令还包括指令,该指令作为由计算机系统的一个或多个处理器执行的结果,使计算机系统:提交更新密码密钥的第二应用程序编程接口请求,第二应用程序编程接口请求包括:经更新的偏好集;经更新的计算区域集;以及数据结构;以及获得对第二应用程序编程接口请求的包括经更新的数据结构的第二响应,经更新的数据结构包括:经更新的偏好集;经更新的经加密数据密钥集;以及经更新的绑定集,该经更新的绑定集将经更新的经加密数据密钥集中的经加密数据密钥映射到经更新的计算区域集中的对应计算区域。
18.根据条款13至17中任一项所述的非暂时性计算机可读存储介质,其中应用程序编程接口请求还包括对密码密钥的长度的指示。
19.根据条款13至18中任一项所述的非暂时性计算机可读存储介质,其中密码请求包括以明文形式从数据结构获得密码密钥的请求。
20.根据条款13至19中任一项所述的非暂时性计算机可读存储介质,其中数据结构为不透明数据结构。
21.一种计算机实现的方法,其包括:提交生成密码密钥的应用程序编程接口请求,应用程序编程接口请求包括:计算区域集;以及偏好集;获得对应用程序编程接口请求的包括密码密钥和数据结构的响应,该数据结构编码:偏好集;经加密数据密钥集;以及绑定集,该绑定集将经加密数据密钥集中的经加密数据密钥映射到计算区域集中的对应计算区域;并且其中数据结构可用于提交可以基于计算区域集中的至少一个计算区域可用而满足的密码请求。
22.根据条款21所述的计算机实现的方法,其还包括:提交包括数据结构的第二应用程序编程接口请求;以及从计算区域集中的区域获得对第二应用程序编程接口请求的包括明文数据密钥的第二响应。
23.根据条款21或22所述的计算机实现的方法,其中偏好集包括一个或多个标准,该一个或多个标准确定要使用计算区域集中的哪个计算区域来执行密码操作。
24.根据条款21至23中任一项所述的计算机实现的方法,其中一个或多个标准包括以下各项中的至少一者:地理要求;延迟要求;或安全要求。
25.根据条款21至24中任一项所述的计算机实现的方法,其还包括:提交更新密码密钥的第二应用程序编程接口请求,第二应用程序编程接口请求包括:经更新的偏好集;经更新的计算区域集;以及数据结构;以及获得对第二应用程序编程接口请求的包括经更新的数据结构的第二响应,经更新的数据结构包括:经更新的偏好集;经更新的经加密数据密钥集;以及经更新的绑定集,该经更新的绑定集将经更新的经加密数据密钥集中的经加密数据密钥映射到经更新的计算区域集中的对应计算区域。
26.根据条款21至25中任一项所述的计算机实现的方法,其中应用程序编程接口请求还包括对密码密钥的长度的指示。
27.根据条款21至26中任一项所述的计算机实现的方法,其中密码请求包括以明文形式从数据结构获得密码密钥的请求。
本文所提供的任何以及所有示例性或例示性语言(例如,“诸如”)的使用仅意图更好地说明各种实施方案,并且除非另外要求保护,否则不会对权利要求的范围施加限制。说明书中的任何语言均不应被解释为指示任何非要求保护的要素对于实践本文公开的发明主题材料都是必需的。
本文描述了本公开的实施方案,包括发明人已知的用于执行本文描述的发明构思的最佳模式。阅读上述描述后,那些实施方案的变型对于本领域普通技术人员可以变得显而易见。发明人希望技术人员视情况采用此类变型,并且发明人意图以不同于如本文所特别描述的方式来实践本公开的实施方案。因此,如适用法律所允许,本公开的范围包括此处所附权利要求中叙述的主题的所有修改和等效物。此外,除非本文中另有指示或另外与上下文明显矛盾,否则本公开的范围涵盖其所有可能变型中的上述要素的任何组合。
本文所引用的所有参考文献(包括出版物、专利申请和专利)据此以引用方式并入,其程度等同于每个参考文献单独地且具体地被表示为以引用方式并入本文并且以其全文在本文得以陈述。

Claims (15)

1.一种系统,其包括:
一个或多个处理器;以及
存储器,所述存储器存储计算机可执行指令,所述计算机可执行指令能够由所述一个或多个处理器执行以使所述系统:
获得执行密码操作的请求,其中所述请求包括经加密密码密钥数据结构,并且进一步地其中所述经加密密码密钥数据结构包括:
多个经加密密码密钥;
与所述多个经加密密码密钥相对应的多个计算区域的标识符;以及
指示如何确定要使用所述多个计算区域中的哪个计算区域来执行密码操作的偏好;
至少部分地基于所述偏好和所选择的计算区域可用来选择所述多个计算区域中的计算区域;以及
至少将经加密密码密钥提供给所选择的计算区域以执行所述密码操作,其中所述经加密密码密钥来自所述多个经加密密码密钥并且与所选择的计算区域相关联。
2.根据权利要求1所述的系统,其中所述偏好指示所述多个计算区域中要用于执行所述密码操作的计算区域的次序。
3.根据权利要求1所述的系统,其中至少将所述经加密密码密钥提供给所选择的计算区域以执行所述密码操作的所述指令还包括指令,所述指令作为由所述一个或多个处理器执行的结果,使所述系统将所述经加密密码密钥数据结构提供给所选择的计算区域。
4.根据权利要求1所述的系统,其中执行所述密码操作的所述请求为获得明文密码密钥的请求,进一步地其中所述多个经加密密码密钥为所述明文密码密钥的不同密文。
5.根据权利要求1所述的系统,其中选择所述多个计算区域中的所述计算区域的所述指令包括指令,所述指令作为由所述一个或多个处理器执行的结果,使所述系统至少通过以下操作来确定所述多个计算区域中的计算区域的可用性:
将多个消息传输到所述多个计算区域中的所述计算区域;以及
至少部分地基于对所述多个消息的响应来确定所述计算区域的所述可用性。
6.根据权利要求1所述的系统,其中所述指令还包括指令,所述指令作为由所述一个或多个处理器执行的结果,使所述系统:
至少部分地基于所述请求生成第二请求,其中所述第二请求包括来自所选择的计算区域的托管密钥的标识符以及所述经加密密码密钥;以及
将所述第二请求提交给所选择的计算区域的密码服务实例,以使所述密码服务实例使用来自所选择的计算区域的所述托管密钥来解密所述经加密密码密钥。
7.根据权利要求6所述的系统,其中用来自所选择的计算区域的所述托管密钥来加密所述经加密密码密钥。
8.根据权利要求1所述的系统,其中所述经加密密码密钥被提供给所选择的计算区域的密码服务实例。
9.一种计算机实现的方法,其包括:
提交生成密码密钥的应用程序编程接口请求,所述应用程序编程接口请求包括:
计算区域集;以及
偏好集;
获得对所述应用程序编程接口请求的包括所述密码密钥和数据结构的响应,所述数据结构编码:
所述偏好集;
经加密数据密钥集;以及
绑定集,所述绑定集将所述经加密数据密钥集中的经加密数据密钥映射到所述计算区域集中的对应计算区域;并且
其中所述数据结构能够用于提交能够基于所述计算区域集中的至少一个计算区域可用而满足的密码请求。
10.根据权利要求9所述的计算机实现的方法,其还包括:
提交包括所述数据结构的第二应用编程接口请求;以及
从所述计算区域集中的区域获得对所述第二应用程序编程接口请求的包括明文数据密钥的第二响应。
11.根据权利要求书9所述的计算机实现的方法,其中所述偏好集包括一个或多个标准,所述一个或多个标准确定要使用所述计算区域集中的哪个计算区域来执行密码操作。
12.根据权利要求11所述的计算机实现的方法,其中所述一个或多个标准包括以下各项中的至少一者:
地理要求;
延迟要求;或
安全要求。
13.根据权利要求9所述的计算机实现的方法,其还包括:
提交更新所述密码密钥的第二应用程序编程接口请求,所述第二应用程序编程接口请求包括:
经更新的偏好集;
经更新的计算区域集;以及
所述数据结构;以及
获得对所述第二应用程序编程接口请求的包括经更新的数据结构的第二响应,所述经更新的数据结构包括:
所述经更新的偏好集;
经更新的经加密数据密钥集;以及
经更新的绑定集,所述经更新的绑定集将所述经更新的经加密数据密钥集中的经加密数据密钥映射到所述经更新的计算区域集中的对应计算区域。
14.根据权利要求9所述的计算机实现的方法,其中所述应用程序编程接口请求还包括对所述密码密钥的长度的指示。
15.根据权利要求9所述的计算机实现的方法,其中所述密码请求包括以明文形式从所述数据结构获得所述密码密钥的请求。
CN202180092603.7A 2020-12-04 2021-12-01 高可用性密码密钥 Pending CN116941215A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/112,540 US20220179972A1 (en) 2020-12-04 2020-12-04 Highly-available cryptographic keys
US17/112,540 2020-12-04
PCT/US2021/061459 WO2022119960A1 (en) 2020-12-04 2021-12-01 Highly-available cryptographic keys

Publications (1)

Publication Number Publication Date
CN116941215A true CN116941215A (zh) 2023-10-24

Family

ID=79164824

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180092603.7A Pending CN116941215A (zh) 2020-12-04 2021-12-01 高可用性密码密钥

Country Status (5)

Country Link
US (1) US20220179972A1 (zh)
CN (1) CN116941215A (zh)
DE (1) DE112021006319T5 (zh)
GB (1) GB2616567A (zh)
WO (1) WO2022119960A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230078187A1 (en) * 2021-09-12 2023-03-16 Zoom Video Communications, Inc. Distributed Encryption Key Allocation
US20240048361A1 (en) * 2022-08-02 2024-02-08 Capital One Services, Llc Key Management for Cryptography-as-a-service and Data Governance Systems
CN118056376A (zh) * 2022-09-16 2024-05-17 华为技术有限公司 一种密钥管理方法、使用装置及管理装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9547771B2 (en) * 2013-02-12 2017-01-17 Amazon Technologies, Inc. Policy enforcement with associated data
US9419948B2 (en) * 2013-11-15 2016-08-16 Adobe Systems Incorporated Method and apparatus for avoiding license storming during an unplanned regional blackout
US9887836B1 (en) * 2014-09-26 2018-02-06 Amazon Technologies, Inc. Unified management of cryptographic keys using virtual keys and referrals
US9760398B1 (en) * 2015-06-29 2017-09-12 Amazon Technologies, Inc. Automatic placement of virtual machine instances
US10846411B2 (en) * 2015-09-25 2020-11-24 Mongodb, Inc. Distributed database systems and methods with encrypted storage engines
US10042685B1 (en) * 2017-03-17 2018-08-07 Accenture Global Solutions Limited Extensible single point orchestration system for application program interfaces
US11934322B1 (en) * 2018-04-05 2024-03-19 Pure Storage, Inc. Multiple encryption keys on storage drives
JP7109992B2 (ja) * 2018-05-22 2022-08-01 キオクシア株式会社 メモリシステムおよび制御方法
US11044079B2 (en) * 2018-09-25 2021-06-22 Microsoft Technology Licensing, Llc Enhanced key availability for data services

Also Published As

Publication number Publication date
WO2022119960A1 (en) 2022-06-09
US20220179972A1 (en) 2022-06-09
GB2616567A (en) 2023-09-13
DE112021006319T5 (de) 2023-09-28

Similar Documents

Publication Publication Date Title
JP7175550B2 (ja) 鍵を有するリソースロケーター
US11089032B2 (en) Signed envelope encryption
US11502854B2 (en) Transparently scalable virtual hardware security module
US20200167364A1 (en) Stateful database application programming interface
US10122692B2 (en) Handshake offload
US10447674B2 (en) Key exchange through partially trusted third party
JP6389895B2 (ja) 要求によって供給される鍵を用いたデータセキュリティ
JP5799173B2 (ja) サポートシステムにおけるセキュア通信の実行
US20220166631A1 (en) Complete forward access sessions
US10623399B1 (en) Virtual requests
CN109951480B (zh) 用于数据存储的系统、方法和非暂态计算机可读存储介质
US10122689B2 (en) Load balancing with handshake offload
US10979403B1 (en) Cryptographic configuration enforcement
US11777914B1 (en) Virtual cryptographic module with load balancer and cryptographic module fleet
US11159498B1 (en) Information security proxy service
US10572315B1 (en) Application programming interface state management
US10862883B1 (en) Custom authorization of network connected devices using signed credentials
US20220179972A1 (en) Highly-available cryptographic keys
US11811950B1 (en) Dynamic response signing capability in a distributed system
JP2014529272A5 (zh)
US10963593B1 (en) Secure data storage using multiple factors
US10476860B1 (en) Credential translation
US11924176B1 (en) Offboard storage of non-sensitive objects for network-based hardware security modules
US10346366B1 (en) Management of a data processing pipeline
WO2016205238A1 (en) Handshake offload

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination