CN108476133B - 通过部分可信的第三方进行的密钥交换 - Google Patents

通过部分可信的第三方进行的密钥交换 Download PDF

Info

Publication number
CN108476133B
CN108476133B CN201680072238.2A CN201680072238A CN108476133B CN 108476133 B CN108476133 B CN 108476133B CN 201680072238 A CN201680072238 A CN 201680072238A CN 108476133 B CN108476133 B CN 108476133B
Authority
CN
China
Prior art keywords
key
client
message
public key
cryptographic service
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.)
Active
Application number
CN201680072238.2A
Other languages
English (en)
Other versions
CN108476133A (zh
Inventor
M·J·坎帕尼亚
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
Priority to CN202110969835.8A priority Critical patent/CN113890727A/zh
Publication of CN108476133A publication Critical patent/CN108476133A/zh
Application granted granted Critical
Publication of CN108476133B publication Critical patent/CN108476133B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • 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/0442Network 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 asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer
    • 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/083Key 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) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • 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/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority

Abstract

计算环境内的客户端可以建立安全的通信会话。有时候,客户端可以信任密码服务来执行一些密码操作并访问一些密码资源,而同时不信任所述密码服务来执行其他操作并访问其他资源。两个或更多客户端可以利用密码服务来执行某些认证和验证操作以建立安全的通信会话,而同时拒绝所述密码服务访问所述安全的通信会话。

Description

通过部分可信的第三方进行的密钥交换
相关申请的交叉引用
本申请要求2015年于12月11日提交的标题为“KEY EXCHANGE THROUGH PARTIALLYTRUSTED THIRD PARTY”的美国专利申请No.14/967,214(代理人档案号0097749-629US0)的优先权并出于所有目的将其全部公开内容以引用的方式并入,并且出于所有目的将2015年12月11日提交的标题为“SIGNED ENVELOPE ENCRYPTION”的美国专利申请No.14/967,142(代理人档案号0097749-628US0)的全部公开内容以引用的方式并入。
背景技术
在许多环境中,计算资源和相关数据的安全性非常重要。作为实例,可以利用计算装置的网络来向它们的用户提供一组稳健的服务。在网络中,第一计算机、系统或用户可以信任第二计算机、系统或用户—也就是说,计算机、系统或用户可以享有特定的访问权限,诸如创建、读取、更新和/或删除第一计算机、系统或用户的数据的能力。也可以信任第二计算机、系统或用户以存储与第一计算机、系统或用户相关联的数据。作为实例,第一计算机、系统或用户可以信任证书颁发机构存储公钥并签署证明公钥所有权的数字证书。相反,可能有其他计算机、系统或用户不受信任,并且不具有可信计算机、系统或用户的访问权限或特权。此外,可能存在具有与可信计算机、系统或用户相关联的某些访问权限或特权的部分可信的计算机、系统或用户。在具有此类计算资源配置的情况下,确保对资源和数据的访问得到正确管理可能具有挑战性,尤其是当此类配置的大小和复杂性增长时。
现代密码算法提供了高级别的数据安全性。例如,当前的加密方法可以保护数据,使得对数据的未经授权的访问需要不切实际的时间和/或资源量。但是,这种高级别的保护需要付出代价。一般来说,较高级别的保护需要较高的小心程度以及较大的计算资源支出。此外,在一个或多个子组件中—例如在密码服务或证书颁发机构中,较高级别的保护还可能需要较高级别的信任。确保两方或多方之间的以密码方式保护的通信可能是困难的,尤其是在减少计算资源的使用或限制授予网络的各种子组件的信任量可能有利的系统中。
附图简述
将参照附图描述各种技术,在附图中:
图1示出了其中使用部分可信的密码服务建立以密码方式保护的通信会话的环境;
图2示出了其中使用部分可信的密码服务来交换椭圆曲线Diffie-Hellman密钥对的环境;
图3示出了其中使用部分可信的密码服务来交换椭圆曲线Diffie-Hellman密钥对的环境;
图4示出了其中两个客户端建立以密码方式保护的通信会话的环境;
图5示出了根据实施方案的示出第一客户端、第二客户端和密码服务之间的通信的图;
图6示出了根据实施方案的示出第一客户端、第二客户端和密码服务之间的通信的图;
图7示出了根据实施方案的用于建立以密码方式保护的通信会话的说明性过程;
图8示出了其中使用部分可信的客户端来促进以密码方式保护的通信的环境;
图9示出了其中可以传输以密码方式保护的通信的环境;
图10示出了其中可以接收并验证以密码方式保护的通信的环境;
图11示出了示出以密码方式保护的通信的传输的图;
图12示出了示出以密码方式保护的通信的接收和验证的图;
图13示出了用于传输以密码方式保护的通信的说明性过程;
图14示出了用于接收和验证以密码方式保护的通信的说明性过程;以及
图15示出了其中可以实现各种实施方案的环境。
详细描述
本文档所描述的技术涉及使用部分可信的计算机系统来促进以密码方式保护的通信。在一些实例中,第一计算机系统使用部分可信的密码服务来与第二计算机系统通信。部分可信的系统(例如,密码服务)可以是在某些方面可信而在其他方面不可信的计算机系统。例如,可以信任部分可信的密码服务来生成数字签名并验证数字签名的真实性,但不信任该密码服务访问可以用于访问第一计算机系统与第二计算机系统之间的以密码方式保护的通信的数字密钥。在这种系统中,可以至少部分地在第一计算机系统与第二计算机系统之间建立以密码方式保护的通信会话的握手过程中使用部分可信的密码服务,并且该部分可信的密码服务不能访问所建立的以密码方式保护的通信会话。例如,可以至少部分地使用部分安全的密码服务以在客户端计算机与服务器之间建立无法通过密码服务解密的传输层安全(TLS)会话。
在另一个实例中,第一计算机系统向第二计算机系统发送以密码方式保护的通信,该以密码方式保护的通信通过密码数据密钥来加密并且其中第二计算机系统可访问该数据密钥。以密码方式保护的通信中所含有的数据可以受到保护,使得第二计算机系统可以读取数据,但不能以第三方将无法验证的方式修改数据。也就是说,第三方可以检测到由以密码方式保护的通信对数据进行的任何修改。在这种系统中,第一计算机系统可以经由不可信的“中间人”计算机系统向第二计算机系统提供以密码方式保护的通信,并且第二计算机系统可以验证消息是否被“中间人”计算机系统修改。
作为实例,两个计算机系统建立以密码方式保护的通信会话,其中利用部分可信的第三方来在所述两个计算机系统之间建立信任关系,但不信任部分可信的第三方作为以密码方式保护的通信的一方。例如,密码服务可以充当用以在客户端与服务器之间建立TLS会话的部分可信的第三方,但密码服务不能读取客户端与服务器之间的加密通信的内容。继续该实例,可以信任密码服务来生成数字签名并验证据称是真实的数字签名是否确实是真实的。然而,可能不信任密码服务来存储和访问在客户端与服务器之间的以密码方式保护的通信(例如,TLS会话)中使用的密码私钥。可能存在各种原因,密码服务在某些方面可信(例如,数字签名的生成和验证)而在其他方面不可信(例如,私钥的存储)—客户端与服务器之间的通信可能具有特别敏感的性质(例如,重要的商业、政府和/或军事数据),密码服务可能具有不能支持全范围密码服务的硬件配置(例如,密码服务可能不支持对于会话来说是令人满意的长度的密码密钥)等等。
在一个实例中,两个客户端可以使用部分可信的密码服务来执行密钥交换。第一客户端可以生成第一椭圆曲线Diffie-Hellman(ECDH)密钥对dA和QA,并生成含有第一客户端的身份和公钥QA的消息。可以将第一客户端的身份编码为例如用户ID、GUID、机器ID、媒体访问控制地址(MAC地址)等。另外,可以使用诸如动态IP地址的动态标识符来识别第一客户端。第一客户端可以向请求数字签名的密码服务提供含有第一客户端身份和公钥的消息。密码服务随后可以使用与第一客户端相关联的密码密钥对消息进行数字签名,并将数字签名消息提供回给第一客户端。密码服务可以存储有密码密钥,其中密码服务的每个客户端被分配唯一的密码密钥。密码服务可以复制数字签名消息。在接收到数字签名消息后,第一客户端可以向第二客户端提供该数字签名消息。这可以作为握手协议的一部分而发生。第二客户端可以在接收到数字签名消息后,通过将该数字签名消息连同认证请求提供给密码服务来验证数字签名消息的真实性。在一些情况下,可以确定数字签名为不真实的—也就是说,消息和/或签名已被修改。这可能是无意或有意修改消息的结果。无意的修改可能由无线信号丢失、丢包、数据损坏、内存损坏等引起。有意的修改可能由恶意方获得该消息(例如,在传输期间,在路由器处)并修改该消息而引起。如果确定该消息为不真实的,则第二客户端可能会拒绝第一消息,并且握手可能失败。
然而,如果确定之前段落的消息为真实的,则第二客户端可以提取第一客户端的身份并将公钥QA与第一客户端相关联。然后,第二客户端可以生成第二ECDH密钥对dB和QB,并生成含有第二客户端的身份和公钥QB的第二消息。可以按与第一消息类似的方式对该第二消息进行数字签名、传输和验证。在接收到第二消息并验证其真实性后,第一客户端可以将公钥QB与第二客户端相关联。在交换公钥后,第一客户端和第二客户端可以计算共享秘密—第一客户端计算dAQB的椭圆曲线点乘算法,并且第二客户端计算dB QA的椭圆曲线点乘算法。在椭圆曲线Diffie-Hellman密钥交换中,这两个值相等并且可以用作密钥或者用于生成可用于建立诸如TLS会话的以密码方式保护的通信会话的私钥。一旦建立,第一客户端和第二客户端则可以经由以密码方式保护的通信会话进行通信,其中保证密码服务不知道共享秘密,并因此不知道在TLS会话中使用的私钥。这提供了更高的安全保证,因为密码服务不能参与以密码方式保护的通信会话。客户端确保密码服务不能计算共享秘密并且窃听或针对以上述方式生成的以密码方式保护的通信会话执行“中间人”攻击。
在一些环境中,第一计算机系统可以使用信封加密来向第二计算机系统发送数据。在这种系统中,第一计算机系统和第二计算机系统都可以访问密码数据密钥。第一计算机系统可以使用数据密钥来对稍后可以由第二计算机系统使用数据密钥解密的消息加密。然而,在一些环境中,可能需要检测第二计算机系统是否修改了消息,并且进一步,可能需要在不检测的情况下防止第二计算机系统修改消息。在这个实例中,应该注意到,可以信任密码服务来执行与上述实例中不同的操作—在这个实例中,可以信任密码服务来生成密码数据密钥、存储主密钥并使用主密钥执行加密和解密操作。
继续前面段落的实例,第一客户端可以具有将使用密码数据密钥来加密的数据或消息,使得能够访问密码数据密钥的第二计算机系统不能在检测不到修改的情况下修改数据。客户端可以首先请求密码服务生成密码数据密钥。客户端然后可以使用密码数据密钥来对消息加密。客户端然后可以生成ECDH密钥对dA和QA。加密消息的数字证书可以使用dA来生成,并且可使用QA来以密码方式进行验证。客户端然后可以请求密码服务使用主密钥和下列输入来执行认证加密:密码数据密钥,作为将要加密的明文;以及附加认证数据(AAD),其包括ECDH公钥QA。密码服务响应于执行认证加密的请求,按照主密钥使用加密算法生成数据密钥的密文并使用密码散列函数生成消息认证(MAC)标签。然后将数字签名并加密的消息、数据密钥的密文和MAC标签传输给一个或多个接受者。
当接受者接收到数字签名并加密的消息、数据密钥的密文和MAC标签时,接受者可以验证消息是否已由除第一客户端以外的一方修改。接受者可以首先从MAC标签提取AAD,并请求密码服务执行与上述认证加密相对应的解密。解密可以接受以下各项作为输入:密文和AAD。如果AAD与提供的密文输入不匹配,则密码服务可能会返回错误。如果解密操作成功,则可以提供明文输出和与用于对密文输入解密的密码密钥相对应的密钥标识符。如果密钥标识符与加密操作中使用的主密钥不对应,则可以返回错误或消息可能已被修改的其他指示。然而,如果密钥标识符与主密钥匹配,则可以使用公钥QA来验证加密的数据密钥的数字签名。在验证数字签名后,可以使用含有数据密钥的明文输出来对密文消息解密。由于签名验证中使用的公钥的绑定,确保解密的消息已由第一客户端发送。
在以上和以下描述中,描述了各种技术。出于解释的目的,阐述具体的配置和细节,以便提供对实施这些技术的可能方式的透彻理解。然而,将同样明显的是,可以在没有具体细节的情况下以不同的配置实践下文描述的技术。此外,为了避免混淆所描述的技术,可能会省略或简化众所周知的特征。
图1示出了示出其中可以利用本公开的各种技术的背景的图100。在这个具体实例中,图100示出了经由以密码方式保护的通信会话114进行通信的第一客户端“客户端A”102和第二客户端“客户端B”104。可以由客户端104和106使用密码服务106来执行各种密码操作并存储和访问密码密钥。可以向密码服务提供(例如,经由网络发送)消息108以执行认证操作,并且可以向密码服务106提供数字签名110以执行验证操作。密码服务106可能没有足够的信息来访问112以密码方式保护的通信会话114。
在一些实例中,第一客户端102和或第二客户端104可以是各种类型的计算实体。在一些实施方案中,客户端102和104可以是网络(例如,局域网)上的相应计算机系统,但也可以是经由互联网连接的不同网络。客户端102和104中的一个或两个还可以是计算机服务器、虚拟机的实例和/或其他计算实体。
密码服务106可以提供对多个密钥存储器中的密码密钥的访问(例如,通过生成和提供密码密钥或者参考可操作以生成和提供密码密钥的其他系统)以及请求密钥的客户端应当如何使用密码密钥的安全首选项。在一些实施方案中,可以由能够存储密码密钥的硬件安全模块(HSM)来实现密钥存储器。密钥存储器可以是包括在密码服务内、客户端内、远程位置处的组件并且可经由密码服务提供的接口和其任何组合来访问。
在一些实施方案中,可以使用密码服务来经由API、作业、作为逻辑任务和其他类型的例程来对数据加密。例如,支持加密()API的加密服务可以接收以下各项作为输入参数:要加密的数据、用于唯一地识别可用于对数据加密的密码密钥的密钥标识符、描述要加密的数据的标记元数据的加密上下文以及用于附加认证数据(AAD)的任选参数。密码服务可以接收API请求,从密钥标识符获得密码密钥,从符合安全策略、加密上下文和客户端加密能力的多个加密配置中选择加密配置(例如,加密算法和块大小)。可以根据所选择的加密配置,使用至少部分通过使用密钥标识符获得的密码密钥,并根据客户端加密能力来对所提供的数据加密。可以获得加密的数据,使得加密的数据能够利用加密配置和用于对数据加密的密码密钥来解密。可以将这个密钥称为客户端的主密钥。
在一些实施方案中,密码服务可以被配置成检查将由密码服务加密的数据符合特定格式。例如,密码服务可以被编程为检查任何要加密的数据的大小必须小于8千字节(KB),从而导致客户端自己对大于8KB的数据加密。这个约束可以例如至少部分地基于在多客户端环境中改进多个客户端的密码服务的可伸缩性和性能的考虑。在一些实施方案中,密码服务在接收到对超过所需限制的数据加密的请求时可能会返回失败。
在其中要加密的数据大于密码服务所实施的大小限制的实施方案中,或者在其他上下文中,客户端可以向密码服务传输针对数据密钥的应用程序编程接口请求。该请求可以指定由密码服务管理的密码密钥的密钥标识符(被管理的密钥)。密码服务可以生成或以其他方式获得数据密钥并且使用被管理的密钥来对数据密钥加密。加密可以根据诸如上文所描述的加密配置并且通常根据与被管理的密钥相关联的策略。密码服务可以提供对包括数据密钥和加密的数据密钥的请求的响应。客户端然后可以使用数据密钥来对数据加密,删除数据密钥的任何内存中副本,并将加密的数据密钥与加密的数据相关联地存储(例如,与加密的数据一起存储或者存储在将加密的数据密钥与加密的数据相关联的数据库中)。可以通过向密码服务传输对加密的数据密钥进行解密的请求(指定密钥标识符)来对数据进行加密。密码服务可以选择被管理的密钥,对加密的数据密钥进行解密,并且响应于该请求而提供解密的数据密钥,从而使客户端能够使用该数据密钥来对该数据进行解密。
在一些实施方案中,密码服务可以提供附加功能。例如,密码服务可以被配置成例如经由API、作业、作为逻辑任务以及其他类型的例程来认证消息或数据。诸如第一客户端102的客户端可以向密码服务提供待认证的消息108。作为响应,密码服务可以使用密码散列函数来生成消息认证码(MAC)标签,该密码散列函数接受以下各项作为输入:输入消息或数据(例如,图1所示的消息108)和密码密钥。在一些实施方案中,可以将与密码散列函数一起使用的密码密钥绑定到呼叫客户端的身份(即,基于呼叫客户端的身份来选择密码密钥),并且在其他实施方案中,可以由客户端提供密码密钥的密钥标识符。密码散列函数可以生成MAC标签作为输出,并且密码服务可以响应于认证消息或数据的请求而提供MAC标签。应该注意的是,可以使用提供完整性和真实性的其他方法。完整性可以指保证消息或数据不会被恶意地或意外地修改;真实性可能指对消息或数据的作者的保证。例如,密码服务可以通过生成数字签名来认证消息或数据。
在一些实施方案中,密码服务可以例如经由API、作业、作为逻辑任务和其他类型的例程来提供附加功能。例如,密码服务可以被配置成验证MAC标签、数字签名等。诸如第二客户端104的客户端可向密码服务提供待验证的MAC标签110。作为响应,密码服务可以通过将计算出的MAC标签与它从消息和密钥生成的MAC标签进行比较来验证MAC标签的真实性。如果计算出的和所提供的MAC标签匹配,则验证应该指示该消息是真实的。
在各种实施方案中,以密码方式保护的通信114用于以防止其他方访问、读取或修改数据的方式在两方或更多方之间传输数据的目的。以密码方式保护的通信还可以保证据称源自一源的通信实际上来自据称源,并且在一些实施方案中可由接受者以密码方式进行验证。可以参照使用以密码方式保护的通信来例如确保横穿两个或更多个实体之间的网络的数据的完整性和/或在数据横穿网络时确保数据的机密性。
例如,图1中示出的以密码方式保护的通信114可以是加密会话,其中第一客户端102和第二客户端104利用共享秘密来确保经由加密会话进行的通信的机密性。加密会话的实例是诸如在RFC 5246中所描述的传输安全层(TLS)会话,其在此以引用的方式并入。然而,不需要对以密码方式保护的通信加密—例如,在一些实施方案中,以密码方式保护的通信114可以提供完整性保证而不是机密性的保证,使得第三方可以读取以密码方式保护的通信的内容,但将不能修改以密码方式保护的通信而不破坏通信的有效性。在一些实施方案中,可以利用MAC标签、数字签名等来建立以密码方式保护的通信。
在各种实施方案中,以密码方式保护的通信会话用于访问资源的目的。以密码方式保护的通信会话可用于例如将数据从一个实体传送到另一个实体,诸如从一客户端到一服务器或从该客户端到该服务器。以密码方式保护的通信会话可用于确保横穿实体之间的网络的数据的完整性和/或在数据横穿网络时确保数据的机密性。
在一些实施方案中,密码服务可能无法访问112以密码方式保护的通信。访问以密码方式保护的通信可以指能够例如通过在会话中发送和接收消息来参与通信会话的密码服务。在一些实施方案中,密码服务可能无法对经由以密码方式保护的通信中指定的协议加密的数据进行解密(例如,密码服务无法对经由客户端之间的TLS会话发送的数据进行解密)。尽管密码服务在计算环境中能够访问一些密码密钥(例如,客户端主密钥),但它可能无法访问对于访问以密码方式保护的通信来说为必要的其他信息(例如,第一客户端102与第二客户端104之间的共享秘密可以对密码服务保密)。在一些实施方案中,访问112可以指密码服务修改通信的能力。例如,密码服务可以具有读取客户端102与104之间的通信的能力,但是可能例如因为通信含有使用密钥服务无法访问的私钥生成的数字签名而无法修改通信。
图2示出了用于使用部分可信的密码服务206交换ECDH密钥对的说明性环境200。第一客户端202可以具有ECDH密钥对208,该密钥对包括私钥dA和公钥QA。应该注意的是,虽然图2所示的实施方案中示出了ECDH密钥对,但根据本公开还可以利用其他类型的非对称密钥对。在一些实施方案中,客户端202可以在密钥交换过程中生成ECDH密钥对,但在其他实施方案中,可以预先生成密钥对或者可以例如通过诸如图2中未示出的硬件安全模块(HSM)的可信源来向客户端202提供密钥对。图2所示的客户端202和204可以例如类似于上文结合图1所描述的客户端。
在一些实施方案中,可以信任密码服务206来执行认证和验证操作,但可能不充分信任它们来执行其他操作,诸如访问客户端202与204之间的以密码方式保护的通信会话。在一些实施方案中,向密码服务提供对以密码方式保护的通信会话的访问在架构上可能是不健全的。在一些实施方案中,密码服务可能潜在地可由除了客户端202和204之外的各方访问。在一些实施方案中,不向密码服务提供共享秘密可能是有利的—例如,如果大量客户端信任具有共享秘密的密码服务,则密码服务在这种情况下可能变成恶意攻击的可识别目标。
在一些实施方案中,密码服务206可以将一组密码密钥存储在例如图2中未示出的硬件安全模块(HSM)中。密码服务可以具有一组客户端主密钥,其中每个客户端主密钥都与特定客户端相关联并由该特定客户端拥有。作为注册过程的一部分,可以将客户端主密钥与其各自的客户端相关联,其中密码服务例如通过要求注册者输入密码、提供安全令牌或提供注册者的身份的其他证明以防止电子欺骗攻击来与注册者建立信任关系。
密码服务206可以允许呼叫者执行若干密码操作。特定客户端可以呼叫密码服务来执行各种密码操作,并且在一些实施方案中可以允许其他客户端使用其密码密钥来执行密码服务所支持的密码操作中的全部或一些。例如,特定客户端可以使用其客户端主密钥来生成数字签名,以证明特定消息来自该客户端服务。与前面的实例相关,其他客户端可以请求密码服务验证数字证书是否有效。在一些实施方案中,客户端也可以使用密码服务来对数据加密以产生密文输出并对数据解密以产生明文输出(例如,当对数据应用多层加密时,明文输出仍可能为模糊的)。可以使用由密码服务以安全方式存储的客户端主密钥来执行这些操作。
密码服务还可以提供认证加密操作。在一些实施方案中,密码服务可以支持加密(密钥ID、数据、AAD)请求、API或命令。密钥ID可以与特定的客户端相关联,并且可以通过密码服务在内部与特定的客户端主密钥相关联。在一些实施方案中,密钥ID可以是任选的输入或者可以是隐含的(例如,可以使用呼叫者的身份来确定密钥ID)。附加认证数据(AAD)可用于各种目的并且可以是不必加密但例如通过电子签名、消息认证码、或一般地包括在AAD内的带密钥的散列值进行认证的数据。在一些实施方案中,生成包括AAD的至少一部分的密文。在一些其他实施方案中,在解密期间单独地提供AAD。在一些其他实施方案中,在解密时至少部分地基于请求和或其他元数据生成AAD,使得解密将仅在元数据传递时成功。在一些实施方案中,策略可约束是否可关于特定AAD执行密码操作。通过编程逻辑和/或由密码服务实施的策略,加密(密钥ID、数据、AAD)请求的处理可既要求AAD含有具体值又要求AAD真实(例如,自原始传输以来未被修改)。类似地,可以使用解密(密钥ID、密文、AAD、标签)请求来使密码服务使用由密钥ID识别的密钥对指定密文进行解密。可以如上所述使用解密(密钥ID、密文、AAD、标签)请求中的AAD来生成与输入标签相比较的认证标签。例如,通过编程逻辑和/或由密码服务实施的策略,解密(密钥ID、密文、AAD、标签)的处理可既要求AAD含有具体值又要求AAD真实(例如,自原始传输以来未被修改)。在一些实施方案中,在所生成的认证标签与输入标签不匹配的情况下,解密()请求将失败。
在一些实施方案中,加密()API生成与密文相关联的元数据。例如,加密()API可以生成密文并向其附加含有加密操作中所使用的密钥ID的元数据。在这个实施方案中,解密()API可能不需要密钥ID作为输入(即,解密(密文、AAD、标签)请求可以取代解密(密钥ID、密文、AAD、标签)请求或成为解密(密钥ID、密文、AAD、标签)请求的替代物)。在一些实施方案中,密码服务可在加密操作期间在密文和元数据上生成认证标签,并在解密期间验证认证标签以确保使用正确的密码密钥进行解密。
在一些实施方案中,由客户端202生成ECDH密钥对208。ECDH密钥对可以包括私钥dA和公钥QA。但是,可以替代地生成其他类型的非对称密钥对,并且私钥对其他方保密。ECDH密钥对可以例如作为握手协议的一部分而生成,或者可以预先生成(例如,一个或多个ECDH密钥对在一个时间点生成并且被分配以便稍后在形成以密码方式保护的通信会话时使用)。在一些实施方案中,ECDH密钥对可以是临时密码密钥,其仅可用于单个会话并且此后无效。在一些实施方案中,ECDH密钥对可能仅可用于单个消息,并且此后无效(需要第二ECDH密钥对用于第二消息)。
消息210可以由第一客户端202生成并且至少包括发送者的身份和公钥。可以使用该消息以通过证明公钥与发送者相关联以及发送者拥有对应的私钥来将发送者的身份与公钥绑定。关于这一点,绑定可以指密码公钥与能够访问对应密码私钥的客户端或实体之间的关联。绑定可以是隐含的(例如,协议定义了含有公钥和客户端ID的消息或消息格式将密钥绑定到客户端)或者可以在消息中明确陈述。在一些实施方案中,可以对将密码公钥绑定到发送者信息的消息进行数字签名,或者可以经由绑定生成MAC标签。
可以将第一客户端的身份编码为例如用户ID、GUID、机器ID、媒体访问控制地址(MAC地址)等。另外,可以使用诸如动态IP地址的动态标识符来识别第一客户端。作为握手协议的一部分,可以向密码服务提供消息210以建立以密码方式保护的通信会话。可以向密码服务提供消息210连同对消息进行认证的请求。认证可以由密码服务使用与第一客户端202相关联的客户端主密钥来执行。作为请求的一部分,客户端可以向密码服务提供密钥标识符。在一些实施方案中,密码服务可以执行安全性和参数检查,以确保应该做出请求,例如,检查客户端是否具有足够的特权来对数据进行认证,或者更具体地说,按照特定的密钥标识符对数据进行认证。在一些实施方案中,消息还可以含有与在认证操作中所使用的密钥相对应的密钥标识符,与在对应的验证操作中可以使用的密钥相对应的密钥标识符,或者两者。
在一些实施方案中,由密码服务通过使用密码散列函数在消息的内容上生成MAC标签来处理认证请求。可以由密码服务向第一客户端202提供MAC标签212例如以作为响应的一部分。可以同步地或异步地提供MAC标签212。在一些实施方案中,可以使用与第一客户端202相关联的密码私钥来生成数字签名而不是MAC标签。在这个实施方案中,可以使用对应的密码公钥来验证数字签名的真实性。在一些实施方案中,公钥也可以存储在密码服务中,但在其他实施方案中,公钥可以与单独的实体(例如,证书颁发机构(图2中未示出))一起存储。可以向第二客户端204提供MAC标签和含有发送者客户端信息和公钥QA的消息。在一些实施方案中,第一客户端202可以例如经由网络连接将所述数据直接传输到第二客户端204。在其他实施方案中,第一客户端202可以例如通过将所述信息存储在第二客户端204可从其中检索的预定位置中来向第二客户端204间接地传输所述数据。
在一些实施方案中,第二客户端可以接收含有发送者身份信息和公钥QA的消息以及证明所述消息真实性的MAC标签。第二客户端可以向密码服务212提供消息和MAC标签连同验证消息的真实性的请求。在一些实施方案中,第二客户端204还可以提供与在验证操作中将使用的密码密钥相对应的密钥标识符。在一些实施方案中,密码服务206可以确定与MAC标签一起提供的消息是真实的并且提供信息有效的指示214。在一些实施方案中,作为对成功指示的补充或代替,可以提供当验证操作失败或确定消息不真实的失败指示。在确定消息有效时(例如,在接收到信息有效的指示214时),第二客户端204可以获得消息中包括的公钥QA。可以将公钥保存、存档、缓存或存储在短期存储器中。
在替代实施方案中,可以使用加密和解密来执行环境200中示出的密钥交换。例如,第一客户端202可以向密码服务提供具有发送者身份信息和公钥QA的消息210连同对消息210加密的请求。密码服务可以使用客户端主密钥来对消息加密并且将加密消息返回给第一客户端202,然后第一客户端将加密消息提供给第二客户端204。作为解密请求的一部分,第二客户端可以向密码服务提供加密消息,并且密码服务可以对该消息解密,并且作为履行该请求的一部分,提供与用于响应于第二客户端204而对该消息解密的客户端主密钥相对应的密钥标识符。在接收到该响应时,第二客户端204可以检查用于对该消息解密的密钥标识符与第一客户端202相对应。只要第一客户端202不允许访问其他方以使用其客户主密钥进行加密,则第二客户端204可以确保含有在加密消息中的公钥是来自第一客户端并且可用于与第一客户端进行的以密码方式保护的通信。在这个实施方案中,可能不需要第二客户端204处理未认证的公钥,而在根据图2的一些实施方案中,在接收到信息有效的指示214之前,第二客户端204可以访问来自不可用的消息的明文公钥QA,因为公钥尚未得到认证。
在一些实施方案中,除了包括公钥QA之外,加密消息还可以包括第一客户端202在建立以密码方式保护的通信会话之前要求第二客户端204确认的随机数。例如,作为握手协议的一部分,如果公钥没有伴随有随机数,则第一客户端202可以拒绝接受来自第二客户端206的公钥QB(例如,结合图3)。在一些实施方案中,要求回复包括随机数,可以通过防止第一客户端202从第二客户端204接收的消息的重放攻击或新鲜保证来提供额外的安全性。在一些实施方案中,随机数可以包括时间戳。
图3示出了用于使用部分可信的密码服务306来交换ECDH密钥对的说明性环境300。第一客户端302、第二客户端304和密码服务306可以类似于上文根据图1和2描述的那些。ECDH密钥对308可以包括私钥dA和公钥QA,其中私钥dA对环境中的其他组件保密。作为握手协议的一部分,可以由第一客户端302生成ECDH密钥对308。第二客户端304可以具有公钥QA310。另外,第二客户端304可以具有包括私钥dB和公钥QB的第二ECDH密钥对312。可以以与图2所描述的密钥交换类似的方式向第一客户端302提供第二客户端的公钥QB320。可以向密码服务306提供具有第二客户端的身份信息和公钥QB的消息314以作为认证请求的一部分,并且可以使用与第二客户端304相关联的客户主密钥生成MAC标签316,将所述MAC标签提供给第二客户端304并转发给第一客户端302。作为验证请求的一部分,第一客户端可以提供消息和MAC标签以确定消息的真实性,从而确定消息是否实际上由客户端B 304编辑。在指示318该消息是真实的后,客户端A302可以存储公钥QB以用于与客户端B 304建立共享秘密。例如,可以使用共享秘密来在客户端之间建立以密码方式保护的通信会话。也可以使用加密和解密操作代替认证和验证操作以与上文结合图2描述的相同或类似的方式来交换公钥QB
图4示出了其中两个客户端建立以密码方式保护的通信会话的说明性环境400。第一客户端302、第二客户端304和密码服务306可以类似于上文根据图1-3描述的那些。在一些实施方案中,第一客户端402可能已生成包括私钥dA和公钥QA的ECDH密钥对,其中公钥QA也许已根据上文在图2中描述的实施方案而分配给第二客户端404。同样,第二客户端404可能已生成包括私钥dB和公钥QB的第二ECDH密钥对,其中公钥QB也许已根据上文在图2-3中描述的实施方案而分配给第一客户端402。
在一些实施方案中,第一客户端402具有可以至少使用dA和QB生成的共享秘密406并且第二客户端404具有可以至少使用dB和QA生成的共享秘密408。在使用了椭圆曲线Diffie-Hillman密钥协商协议的实施方案中,共享秘密可由双方计算,因为dAQB=dBQA。可以使用共享秘密来建立以密码方式保护的通信会话410。在一些实施方案中,密码服务406可能不能访问这两个私钥dA和dB,并且将不能访问412以密码方式保护的通信会话。在一些实施方案中,对以密码方式保护的通信会话410的访问412可以指能够例如通过在会话中发送和接收消息来参与通信会话的密码服务。在一些实施方案中,密码服务可能无法对经由以密码方式保护的通信中指定的协议加密的数据进行解密(例如,密码服务无法对经由客户端之间的TLS会话发送的数据进行解密)。尽管密码服务可以在计算环境中访问一些密码密钥(例如,客户端主密钥),但它可能无法访问对于访问以密码方式保护的通信来说为必要的其他信息(例如,共享秘密406和408和/或私钥dA和dB)。在一些实施方案中,访问412可以指密码服务修改通信的能力。例如,密码服务可以具有读取客户端402与404之间的通信的能力,但是可能例如因为通信含有使用密钥服务无法访问的私钥生成的数字签名而无法修改通信。
图5示出了根据实施方案的示出第一客户端502、第二客户端504和密码服务506之间的握手协议的图。作为握手协议的一部分,第一客户端可以生成508包括私钥dA和公钥QA的ECDH密钥对。在一些实施方案中,可以在握手开始之前预先生成ECDH密钥对。
在已经生成ECDH密钥对之后,客户端A可以生成510识别发送者和公钥QA的消息。该消息可以根据上文结合图1-3所描述的那些。客户端A然后可以向密码服务提供512待认证的消息。在一些实施方案中,可以通过网络API向密码服务提供消息。密码服务510可以使用密码密钥在消息上生成数字签名或MAC标签。作为认证请求的一部分,客户端A可以向密码服务提供与密码服务使用的用于认证该消息的密码密钥相对应的唯一标识符。在一些实施方案中,可以在消息中提供密钥标识符,但在其他实施方案中,可以将密钥标识符作为单独参数在网络API请求中提供,并且在其他实施方案中,可以基于呼叫者的身份暗示密钥标识符。密码服务可以向客户端A返回包括消息和MAC标签的已认证消息。在一些实施方案中,客户端A可以保留原始消息的副本并且密码服务返回MAC标签。
在一些实施方案中,客户端A可以向客户端B提供514对以密码方式保护的通信会话(包括已认证消息)的请求。该请求可以例如是诸如结合图1-3所描述的那些请求。该请求可以包括含有客户端A的身份信息和公钥QA的消息以及对应的MAC标签。
在一些实施方案中,客户端B可以接收516建立以密码方式保护的通信会话(包括已认证消息)的请求。在一些实施方案中,客户端B从客户端A间接地接收请求—例如,客户端A可以通过将请求转发给客户端B的中间人客户端X(未示出)来发送请求。需注意,在一些实施方案中,中间人可以是另一个计算机系统,但也可以是能够修改消息的其他类型的计算实体,诸如路由器或交换机。因此,在接收到请求后,客户端B可能需要验证请求是否真实,以及内容从客户端A发送时是否没有被修改。在某些情况下,拦截客户端A的消息的恶意方可能试图修改公钥QA例如以包括以密码方式保护的通信会话。
在一些实施方案中,客户端B可以向密码服务506提供518已认证消息,并请求密码服务验证该已认证消息。密码服务506可以从客户端B接收已认证消息连同验证其真实性的指令。作为验证该已认证消息的请求的一部分,也可以提供密钥标识符。在一些实施方案中,获得密码密钥并在消息上生成MAC标签,并且将所生成的MAC标签与接收到的MAC标签进行比较以确定该消息是否真实。在一些实施方案中,密码服务可以接收代替MAC标签而被接收的数字签名,生成数字签名,并将所生成的数字签名与接收到的数字签名进行比较。在验证该消息是真实的之后,客户端B 504可以提取公钥QA,生成520ECDH密钥对dB和QB,并且使用dB和QA计算522共享秘密。
在接收到ECDH公钥QA之后,客户端B 604可以例如以图6所描述的方式与客户端A602交换ECDH公钥QB。环境600可以是与上文结合图5所描述的环境500相同或相似的环境。公钥QB的交换可以是握手协议的一部分,并且可以发生在图5所示的用于建立以密码方式保护的通信会话的流程之后。应该注意的是,可以在其他地方生成密钥,诸如在上文结合图5所描述的流程期间(具体地,参见步骤520)。客户端B可以生成610将发送者身份识别为客户端B和公钥QB的消息,并向密码服务606提供该消息以进行认证,密码服务606可以例如通过在消息上生成MAC标签或数字签名来认证612该消息,并向客户端B 604提供已认证消息。可以根据上文结合图5所描述的对应步骤来执行这些步骤。客户端B可以回复614建立以密码方式保护的通信会话的请求,并且作为回复的一部分,包括已认证消息。客户端A可以接收616回复,并通过使用密码服务以确定该回复中的已认证消息是否有效来执行验证。如果确定请求为有效的,则可以使用公钥QB以例如在椭圆曲线Diffie-Hellman密钥交换中使用dA和QB来计算620共享秘密。
当双方已经计算出共享秘密620和622时,可以使用共享秘密建立以密码方式保护的通信会话。一旦建立,客户端A和客户端B则可以经由以密码方式保护的通信进行通信,其中保证密码服务不知道共享秘密,并且因此不知道以密码方式保护的通信会话中所使用的私钥。这提供了更大的安全保证,因为密码服务不能参与以密码方式保护的通信会话,也没有任何其他方可以拦截含有公钥QA和QB的已认证消息。
图7示出了根据实施方案的用于执行握手的过程700的说明性实例。过程700可由任何合适的系统来执行,诸如根据上文在图1-6中描述的客户端描述的计算机系统。然而,需注意,过程700可以由参与握手过程的任何计算机系统执行。还需注意,握手过程可以是用于建立以密码方式保护的通信会话的任何握手,诸如用于以密码方式保护的通信会话的包括握手协议和记录协议的协议。在实施方案中,执行过程700的系统可以生成702包括第一私钥和第一公钥的第一非对称密钥对。在一些实施方案中,非对称密钥对可以是椭圆曲线密钥对。该系统还可以生成704包括发送者身份信息和第一公钥的第一消息。需注意,可以在阶段702中生成非对称密钥对之前部分地生成第一消息。例如,在一些实施方案中,可以在生成第一非对称密钥对之前部分地生成消息。可以将发送者身份信息编码为例如用户ID、GUID、机器ID、媒体访问控制地址(MAC地址)等。此外,可以使用诸如动态IP地址的动态标识符来识别发送者的身份。
在一些实施方案中,该系统然后可以向密码服务至少提供706含有发送者身份信息和第一公钥的第一消息。在一些实施方案中,系统可以替代地向密码服务分别发送发送者身份信息和第一公钥,并且密码服务在至少接收到发送者身份信息和第一公钥之后在发送者身份信息和第一公钥两者上生成MAC标签或数字签名。
该系统可以在向密码服务提供第一消息之后,从密码服务接收708与第一消息相对应的第一已认证消息,其中第一已认证消息可以由第二客户端验证。已认证消息可以包括原始消息或包括发送者身份信息和公钥的另一消息以及对应的MAC标签。已认证消息必须可由将与其建立以密码方式保护的通信会话的客户端以密码方式进行验证。在一些实施方案中,验证MAC标签可能需要访问可能受密码服务保护的密码密钥。在此类实施方案中,试图验证MAC标签的呼叫者子集可以从密码服务接收指示呼叫者不能访问完成验证请求所需的资源的错误。在其他实施方案中,提供通用错误,使得失败指示不进一步指示执行验证操作所需的密码密钥不可访问。在一些实施方案中,可以对真实消息进行加密使得使用可通过密码服务访问的密码密钥来对发送者身份信息和/或公钥加密,并且可以通过该系统正试图与其建立以密码方式保护的通信会话的客户端对该真实消息进行解密。
然后,该系统可以识别将与之建立以密码方式保护的通信会话的客户端,并向该客户端提供710第一已认证消息。可以直接提供已认证消息(例如,将该消息包括为握手协议或请求的一部分),或间接提供已认证消息(例如,提供可用于定位和检索已认证消息的统一资源标识符(URI))。需注意,在一些实施方案中,请求可以通过一个或多个计算机系统或计算实体,诸如路由器或交换机,其可能具有检查和/或修改已认证消息的内容的能力。然而,将可以检测到消息内容的修改,而没有对MAC标签进行正确的相应修改。
在一些实施方案中,该系统可以从将与其建立以密码方式保护的通信会话的客户端接收712第二已认证消息。在一些实施方案中,第二已认证消息包括含有身份信息和第二公钥的消息以及可用于验证消息是真实的MAC标签。在一些实施方案中,真实消息包括第二公钥的密文和/或第二客户端的身份信息。该系统可以使用密码服务验证714第二已认证消息的真实性。在一些实施方案中,在该消息上生成MAC标签,并将所生成的MAC标签与提供的MAC标签进行比较;在一些实施方案中,可以验证数字签名。在一些实施方案中,已认证消息可以是加密消息,其通过被解密来验证并且验证所使用的密码密钥与第二客户端相关联,使得其他方不能对该消息加密。在验证成功确定消息是真实的情况下,该系统可以至少使用第二公钥和第一私钥生成716或计算共享秘密。在一些实施方案中,第二公钥可以是椭圆曲线公钥Q2,第一私钥可以是椭圆曲线私钥d1,并且共享秘密可以是d1Q2
该系统可以完成握手并且至少使用共享秘密来建立718以密码方式保护的通信会话或以密码方式保护的通信会话。在一些实施方案中,以密码方式保护的通信会话提供机密性保证,例如TLS会话。在其他实施方案中,会话可能不提供机密性保证,但可以提供其他保证,诸如会话中的消息的完整性和真实性。
如本文所使用的,术语“信封加密”是指用于在计算资源受限的环境中改善数据加密和解密的性能的技术。计算资源可以包括CPU资源、内存、资源、带宽等。在信封加密方案中,可能存在可用于执行诸如上文描述的加密()和解密()的密码操作的客户端和密码服务。此外,密码服务可存储客户端可用来执行密码操作的客户主密钥。在一些实施方案中,使用密码服务来执行所有加密和解密操作可能存在缺点。例如,在客户端经由宽带互联网连接(例如,吞吐量为约100Mb/s)连接到密码服务的情况下,大量数据(例如,千兆字节的数据)的加密可能由于经由宽带连接将数据传输到密码服务进行加密所涉及的开销而具有不合需要的不良性能。例如,经由100Mbps宽带连接传输8TB文件将需要超过177小时(>1周)才能完成。因此,在一些系统中,避免经由网络传输整个数据块以进行加密可能是有利的。
可以使用信封加密方案来改善密码操作的性能。为了对大量数据加密,加密服务可以生成对称数据密钥并且按照客户端主密钥对数据密钥加密。加密的数据密钥可以包括指示可以如何对加密的数据密钥进行解密(例如,元数据字段可以包括可用于对加密的数据密钥进行解密的密钥ID)的附加信息(可能以明文形式)。可以向客户端传输明文数据密钥和加密的数据密钥,并且客户端可以使用数据密钥来对数据加密。加密的数据(按照数据密钥加密)和加密的数据密钥(按照客户端主密钥加密)可以一起存储或者关联在一起(例如,存储在数据库记录中)。
为对加密的数据进行解密,客户端(可能是与对数据加密的客户端不同的客户端)可以获得加密的数据密钥并请求密码服务对加密的数据密钥进行解密。作为解密请求的一部分,密码服务可能要求提供密钥ID。如果请求者具有足够的访问特权(例如,通过被对数据加密的客户端授予访问权限)并且使用正确的密码密钥来对加密的数据密钥进行解密,则可以返回明文数据密钥并随后使用明文数据密钥对加密的数据进行解密。
图8示出了示出其中可以利用本公开的各种技术的背景的图800。在这个具体实例中,图800示出了第一客户端“客户端A”802、第二客户端“客户端B”804和第三客户端“客户端C”806。图800还示出了消息808,按照增强的信封加密方案810受保护的消息(下文中为“受保护的消息”)以及欺诈消息814。客户端802、804和806可以是诸如本公开其他地方所描述的那些客户端。在一些实施方案中,客户端可以是计算机系统,但也可以是能够修改消息802的其他类型的计算实体,诸如路由器或交换机。
在一些实施方案中,客户端A802生成消息808或者更一般地说生成数据并且按照增强的信封加密方案保护数据。在一些实施方案中,按照增强的信封加密方案810受保护的消息可以由可以访问用于执行信封加密的数据密钥的其他客户端读取,但不能由这些客户端修改。在一些实施方案中,可以使用密码服务来验证受保护的消息是否已被不适当地修改。在一些实施方案中,客户端A可以修改受保护的消息,并且可以将修改受保护的消息的能力委托给其他方,例如,委托给可以访问用于执行信封加密的数据密钥的客户端子集。因此,在一些实施方案中,能够读取和修改受保护的消息810的各方可以与能够读取受保护的消息810的各方不同—在根据图8的实施方案中,客户端A802能够读取并修改受保护的消息,而客户端A、B和C 802-806能够读取受保护的消息。
在一些实施方案中,受保护的消息810的发送者(例如,TCP包的源地址)是客户端A802,并且该消息的接受者(例如,TCP包的目的地地址)是客户端B 804。在一些实施方案中,受保护的消息810的发送者是客户端A802,接受者是客户端C 806,并且客户端B可以是促进客户端A与客户端C之间的通信的另一计算机系统。在一些实施方案中,受保护的消息810的发送者是客户端A802,接受者是客户端B 804,并且在客户端A和客户端B之间存在布置(例如,诸如在网络协议规范中所描述的技术布置,或诸如合同义务或服务级别协议(SLA)的非技术布置)。
在一些实施方案中,客户端B 804可以试图执行受保护的消息的未认证的修改816。客户端B 804可以获得数据密钥,对受保护的消息810进行解密,修改该消息(例如,将消息从“123…”改变为“789…”,然后使用该数据密钥对修改的消息812进行加密,从而产生欺诈消息814。客户端B 804然后可以向客户端C 806提供欺诈消息814。然而,使用本文公开的技术,客户端C 806可以使用密码服务来验证其接收的消息(即,欺诈消息814)是否被不适当地修改。
图9示出了示出其中可以利用本公开的各种技术的背景的图900。在这个具体实例中,图900示出了可以如何生成和传输受保护的消息。示出了第一客户端902和第二客户端904。第一客户端902可以与上文结合图8所描述的第一客户端802相同或相似。第二客户端802可以与上文结合图8所描述的第二客户端804相同或相似,但在一些实例中,可以与上文结合图8所描述的第三客户端806相同或相似。同样,客户端可以是本公开中其他地方所描述的计算机系统或计算实体。
密码服务906可以是本公开中其他地方所描述的密码服务。在一些实施方案中,密码服务可以至少支持两个操作—(1)生成数据密钥;以及(2)执行数据的认证加密。在一些实施方案中,客户端可以请求(例如,经由网络API请求)密码服务906生成可用于信封加密的数据密钥。密码服务906可以生成数据密钥,使用与呼叫者-客户端相关联的客户端主密钥来对数据密钥进行加密,并且将数据密钥和加密的数据密钥两者返回给呼叫者-客户端(例如,经由网络API响应)。在一些实施方案中,呼叫者-客户端可以使用密码服务来对加密的数据密钥进行解密,并且呼叫者-客户端还可以允许其他方例如使用客户端主密钥上的安全策略来对加密的数据密钥进行解密,该安全策略授予特定的其他方(例如,客户端B904)使用与呼叫者-客户端相关联的客户主密钥来对数据进行解密的能力。例如,在根据图9-10的实施方案中,客户端A 902已经授予客户端B 904对按照与客户端A相关联的客户主密钥加密的数据密钥进行解密的能力。在一些实施方案中,客户端可以请求(例如,经由网络API请求)密码服务906使用与上文描述的加密()API相同或类似的API来对数据进行加密。
在一些实施方案中,第一客户端902可以生成、获得和/或存储消息906、数据密钥908、任选的附加认证数据(AAD)910以及包括私钥dA和公钥QA的ECDH密钥对912。消息906可以是明文消息,与可以是之前已加密的密文消息。数据密钥908可以是由密码服务906生成的密码密钥。在一些实施方案中,第一客户端906可能已经从密码服务获得了明文数据密钥908和按照与第一客户端相关联的客户端主密钥加密的数据密钥两者。在一些实施方案中,第一客户端可能没有任选的AAD 910(例如,任选的AAD可能不被使用、可能不存在或者可能由空值表示)。在一些实施方案中,客户端902生成包括私钥dA和公钥QA的ECDH密钥对912。在一些实施方案中,私钥dA对其他方保密。在一些实施方案中,其他类型的非对称密钥对可以用来代替椭圆曲线密钥对。
消息906可以是任何形式的数据,并且在一些实施方案中,可以由客户端902编辑(即,由客户端902生成),但也可以是从另一个源获得的数据。数据密钥908可以是可以用于例如本公开中先前描述的信封加密方案中的密码密钥。数据密钥可以是对称密钥或非对称密钥。附加认证数据910可以用作认证加密的一部分。在一些实施方案中,认证加密生成基于明文数据输入(例如,明文本身或明文的密文版本)和AAD的认证标签(例如,MAC标签)。可能需要呈现AAD 910以用于对应的认证解密的成功解密。在一些实施方案中,AAD 910在认证加密过程中未加密,并可按未混淆的格式(即,未加密)传输。
受保护的消息924可以包括若干成分,诸如图9中所示的那些成分。在一些实施方案中,受保护的消息924包括数字签名的有效载荷914,该数字签名的有效载荷至少包括加密消息916。加密消息916可以按照数据密钥908进行加密。数字签名的有效载荷914可以是使用ECDH私钥dA在加密消息916上生成的并且可使用ECDH公钥QA验证的数字签名。
在一些实施方案中,受保护的消息还包括ECDH公钥QA。然而,在其他实施方案中,可以将ECDH公钥包括作为受保护的消息的另一成分的一部分(例如,AAD可包括公钥QA)。
在一些实施方案中,受保护的消息还包括认证的有效载荷920,该认证的有效载荷包括(1)按照客户端主密钥922加密的数据密钥的密文;以及(2)在数据密钥上(直接或间接地)生成的认证标签(例如,MAC标签)以及包括任选的AAD 910和ECDH公钥QA的扩增的AAD。在一些实施方案中,可以使用认证加密操作生成认证的有效载荷,诸如在RFC 5084中所描述的那些,RFC 5084在此以引用的方式并入。例如,可以由密码服务906利用以下输入参数执行AES-CCM加密来生成认证的有效载荷920:
AES密钥:客户端主密钥(在图9中未示出),
随机数:(任一独特值),
明文:数据密钥908,以及
任选的附加认证数据:AAD 910和公钥QA
AES-CCM加密生成:(1)数据密钥的密文922;以及(2)在数据密钥和包括AAD 910和ECDH公钥QA的扩增的AAD上的MAC标签920。在一些实施方案中,扩增的AAD可以仅由ECDH公钥组成(例如,AAD 910为空)。可以按与上文描述的相同或相似的方式执行AES-GCM加密。
在一些实施方案中,认证的有效载荷920的结构可以与图9中所示的说明性实例不同。在一个实例中,认证的有效载荷可以包括:包括数据密钥908和ECDH公钥QA两者的密文,以及任选的AAD(其可以是空)。在这个实例中,可以使用客户端A的客户主密钥在密文和AAD上生成认证标签。
在一些实施方案中,认证的有效载荷920的结构可以与图9中所示的说明性实例不同。在一个实例中,认证的有效载荷可以包括:包括数据密钥908的密文以及任选的AAD(其可以是空)。在这个实例中,可以使用客户端A的客户主密钥在密文和AAD上生成认证标签,并且可以使用相同的密钥在ECDH公钥QA上生成第二认证标签。
在一些实施方案中,第一客户端902可以使诸如第二客户端904的其他计算实体可以获得受保护的消息。该系统可以使受保护的消息直接可获得(例如,将消息包括为握手协议或请求的一部分),或间接可获得(例如,提供可用于定位和检索受保护的消息的统一资源标识符(URI))。需注意,在一些实施方案中,消息在可获得时可以通过一个或多个计算机系统或计算实体,诸如路由器或交换机,其可能具有检查和/或修改消息的内容的能力。然而,对消息内容的修改(例如,修改密文消息而不修改数字签名和/或修改密文数据密钥而不修改认证标签)将是可检测的。
图10示出了示出其中可以利用本公开的各种技术的背景的图1000。在这个具体实例中,图1000示出了可以如何接收和验证受保护的消息。示出了第一客户端1002和第二客户端1004。第一客户端1002示出为向第二客户端1004传输受保护的消息1018。应该注意的是,传输客户端、接收客户端和受保护的消息之间的各种关系在本公开的范围内完成—传输客户端可能已生成受保护的消息(例如,图8中的客户端A)或者可以是生成欺诈消息并向接收客户端(例如,图8中的客户端B)提供欺诈消息的实体。在任一种情况下,接收受保护的消息的客户端(即,客户端C 1004)可以验证受保护的消息是否被不适当地修改。结合图10描述的客户端可以是本公开中其他地方描述的计算机系统或计算实体(例如,路由器或交换机)。
密码服务1006可以是本公开其他地方描述的密码服务。在一些实施方案中,密码服务可以支持至少两个操作—(1)获得客户端密钥ID;以及(2)对数据解密。在一些实施方案中,客户端可以请求(例如,经由网络API请求)密码服务1006获得客户端密钥ID并将密钥ID返回到呼叫者客户端。在一些实施方案中,呼叫者客户端提供诸如用户ID、GUID、机器ID、媒体访问控制地址(MAC地址)等身份信息。密码服务可以例如通过将身份信息与客户端密钥ID之间的关联存储在一个或多个数据库表的数据库记录中、数组(例如,二维数组)中、散列图(例如,其中密钥为发送者信息并且值为密钥ID的散列图)中或其他适当的数据结构中来将身份信息映射到客户端密钥ID。客户端密钥ID可以表示为用户名、整数、字母数字字符串、字符数组、GUID或其他此类数据类型。身份信息到密钥ID的映射可以是单射的(即,一对一的)和/或双射的(即,一对一映成的)。在一些实施方案中,客户端可以请求(例如,经由网络API请求)密码服务906使用与上文描述的解密()API相同或类似API来对数据加密。
在一些实施方案中,第一客户端1002向第二客户端1004传输受保护的消息1018。受保护的消息1018可以与结合图9-10描述的受保护的消息相同或类似。在一些实施方案中,受保护的消息包括加密的有效载荷1008,该加密的有效载荷包括密文1010和密文1008上的可由ECDH公钥验证的数字签名。在一些实施方案中,受保护的消息进一步包括ECDH公钥1012。在一些实施方案中,受保护的消息进一步包括认证的有效载荷1014,该认证的有效载荷包括密文1016和密文1016上的认证标签以及包括AAD和ECDH公钥的扩增的AAD。应该注意的是,由客户端C接收的受保护的消息1018的内容可能已被不适当地修改。现在描述的技术允许接收受保护的消息的客户端确定受保护的消息是否被不适当地修改。
在一些实施方案中,接收受保护的消息的客户端(图10中的客户端C 1004使用密码服务来对认证的有效载荷1014解密。作为网络API请求的一部分,客户端可以向密码服务提供密文、扩增的AAD(其包括AAD 1024和ECDH公钥QA 1026两者)以及在密文和扩增的AAD上生成的认证标签。同样,在其中在AAD(而不是公钥QA)上生成认证标签的实施方案中,可以提供AAD代替扩增的AAD。在一些实施方案中,作为API请求的一部分,客户端还可以向密码服务提供密钥ID来进行解密。客户端可以基于各种信息来确定密钥ID。例如,受保护的消息1018可以作为客户端C与身份已知的另一客户端之间的通信会话的一部分来发送。在这个实例中,密钥ID可以与客户端C参与通信会话所面对的一方相关联。作为第二实例,可以使用受保护的消息中的信息(例如,图10中未示出的元数据)来确定密钥ID。作为第三实例,可以将消息作为一个或多个TCP包的一部分而接收并且可以基于发送者身份(例如,TCP报头的源地址)来确定密钥ID。
在一些实施方案中,密码服务对认证消息中所包括的密文1016解密。在一些实施方案中,密文可以包括元数据(例如,附加到密文),该元数据包括用于进行解密的密钥ID。密码服务可以使用密钥ID对密文进行解密,并使用解密的明文以使用明文和所提供的AAD来生成认证标签。如果生成的标签和解密请求中提供的标签不匹配,则解密可能失败。在成功的解密中,密码服务1006可以向客户端返回解密的明文以及在一些实施方案中用于执行解密的客户端主密钥的密钥ID。在一些实施方案中,明文是可用于对加密消息1010解密的数据密钥1022。
在一些实施方案中,作为对解密请求的响应,客户端1004可以从密码服务接收解密的明文1020和密钥ID。客户端可以进一步将接收到的密钥ID与预期的密钥ID进行比较。预期的密钥ID可以是与预期的发送者相关联的密钥ID。客户端可以基于协议或其他信息来确定预期的发送者。如果所接收的密钥ID和预期的密钥ID不匹配,则可能会引发错误,并且可能将受保护的消息作为无效丢弃。然而,如果所接收的密钥ID和预期的密钥ID匹配,则客户端可以在存储器中存储和/或缓存解密的数据密钥1022。
在一些实施方案中,客户端可以接收数字签名的有效载荷1008。在一些实施方案中,可以使用ECDH公钥QA来验证数字签名的有效载荷1008上的数字签名。在实施方案中,将公钥QA包括为扩增的AAD的一部分,对该扩增的AAD进行认证以作为解密操作的一部分。在认证后,可以使用公钥QA来验证数字签名。如果数字签名无效,则受保护的消息可能被作为无效丢弃。然而,如果数字签名有效,则可以使用从认证的有效载荷1018的解密获得的数据密钥1022来对加密的消息1010解密。在完成解密后,客户端1004获得尚未不适当地修改的明文消息1020。
图11示出了示出第一客户端1102生成受保护的消息的图1100。首先,客户端A1102可以生成1108包括私钥dA和公钥QA的ECDH密钥对。可以按本公开其他地方描述的各种方式生成密钥。另外,可以使用其他类型的非对称密钥对来代替椭圆曲线密钥对。客户端A还可以请求1100生成数据密钥。数据密钥可以用于执行信封加密。可以将该请求作为对支持本公开其他地方所描述的功能的密码服务1106的网络API请求来进行。密码服务1106可以接收该请求并生成1112数据密钥并且响应于该请求而向客户端提供数据密钥。在一些实施方案中,可以在ECDH密钥对之前生成数据密钥。
客户端A可以从密码服务接收数据密钥(例如,响应于网络API请求),并用数据密钥对消息加密1114。在对消息加密之后,可以使用ECDH私钥dA来在消息的密文上生成1116数字签名。可使用对应的ECDH公钥QA来验证生成的数字签名的有效性。可以将包括数字签名和密文消息的数字签名的有效载荷包括为受保护的消息的一部分。
在接收数据密钥之后,客户端A可以向密码服务1106发出请求以执行认证加密。该请求可以是网络API请求,并且作为网络请求的一部分,客户端A可以提供数据密钥、附加认证数据(AAD)和ECDH公钥QA。在一些实施方案中,AAD是任选的并且可以被省略。密码服务可以使用与客户端A相关联的客户端主密钥来对数据密钥进行加密1118,并且在数据密钥上(通过使用明文直接地或者通过使用数据密钥的密文间接地)、在AAD(如果未省略的话)上以及在ECDH公钥QA上生成认证标签。包括生成的密文和认证标签的认证的有效载荷可以被包括作为受保护的消息的一部分。
在一些实施方案中,密码服务可以在生成数据密钥之后存储、缓存或存档数据密钥的副本。在这个实施方案中,密码服务还可以存储、缓存或存档使用客户端A的客户主密钥加密的数据密钥。可以在生成数据密钥之后的任何时间(例如,在生成数据密钥之后以及在认证加密请求1118之前)生成加密的数据密钥。在这个实施方案中,客户端A可以省略在加密请求中提供数据密钥,并且加密服务可以对来自存储、缓存或存档的数据密钥进行加密。
在客户端A获得数字签名的有效载荷和认证的有效载荷两者之后,客户端A可以向客户端B 1104提供1120数字签名的有效载荷和认证的有效载荷两者。在一些实施方案中,客户端A生成包括数字签名的有效载荷和认证的有效载荷的受保护的消息,并传输受保护的消息。客户端B可以接收1122数字签名的有效载荷和认证的有效载荷,或者在一些实施方案中,至少由数字签名的有效载荷和认证的有效载荷构建的受保护的消息。
图12示出了示出第一客户端1202向第二客户端1204发送据称受保护的消息的图1200,其中第二客户端可以验证消息是否被不适当地修改。在一些实施方案中,客户端C1204接收到据称是尚未被不适当地修改的受保护的消息的消息。在一些实施方案中,可以由消息的初始作者(例如,创建该消息的一方)提供1208消息,并且在一些情况下,它可以是不相关的第三方(例如,网络内的计算机系统或路由器或交换机)。客户端C可以获得1210据称受保护的消息并从该消息获得数字签名的有效载荷和认证的有效载荷。据称受保护的消息可以与受保护的消息具有相同的格式(例如,如结合图11所描述)—然而在一些实施方案中,客户端C可能未验证数字签名和/或认证标签是有效的。
在一些实施方案中,据称受保护的消息包括认证的有效载荷,该认证的有效载荷包括密文、AAD和ECDH公钥QA。客户端C可以向密码服务1206发出请求(例如,网络API请求)以执行解密操作。作为请求的一部分,客户端C可以提供1212认证的有效载荷的密文、AAD和认证标签。密码服务可以选择1214密码密钥以用于的密文解密。可以例如基于密文所包括的元数据来选择密钥,该密文含有与可用于对密文解密的客户端主密钥相对应的密钥ID。密码密钥和密钥ID可以使用一个或多个数据库表中、数组(例如,二维数组)中、散列图(例如,其中密钥为发送者信息并且值为密钥ID的散列图)中或其他适当的数据结构中的数据库记录相关联。
在一些实施方案中,密码服务对密文进行解密1216。在一些实施方案中,密文可以包括元数据(例如,附加到密文),该元数据包括用于进行解密的密钥ID。密码服务可以使用密钥ID对密文进行解密,并使用解密的明文以使用明文和所提供的AAD来生成认证标签。如果生成的标签和解密请求中提供的标签不匹配,则解密可能失败。在成功的解密中,密码服务可以向客户端返回解密的明文以及在一些实施方案中用于执行解密的客户端主密钥的密钥ID。在一些实施方案中,明文是可用于对加密消息解密的数据密钥。在一些实施方案中,可以将AAD扩增以包括公钥QA(例如,通过将密钥附加到AAD)。
在一些实施方案中,作为对解密请求的响应,客户端C 1204可以从密码服务接收解密的明文和密钥ID。客户端可以进一步验证1218所接收的密钥ID与预期的密钥ID。预期的密钥ID可以是与预期的发送者相关联的密钥ID。客户端可以基于协议或其他信息来确定预期的发送者。如果所接收的密钥ID和预期的密钥ID不匹配,则可能会引发错误,并且可能将据称受保护的消息作为无效丢弃。然而,如果所接收的密钥ID和预期的密钥ID匹配,则客户端可以在存储器中存储和/或缓存解密的数据密钥。
在一些实施方案中,客户端C可以接收数字签名的有效载荷(例如,作为据称受保护的消息的一部分)。在一些实施方案中,可以使用ECDH公钥QA来验证数字签名的有效载荷1008上的数字签名。在实施方案中,将公钥QA包括为扩增的AAD的一部分,对该扩增的AAD进行认证以作为解密操作的一部分。在认证后,可以使用公钥QA来验证1220数字签名。如果数字签名无效,则据称受保护的消息可能被作为无效丢弃。然而,如果数字签名有效,则可以使用从认证的有效载荷的解密获得的数据密钥来对数字签名的有效载荷中所含有的加密消息进行解密1222。在完成解密后,客户端C获得尚未不适当地修改的明文消息。
图13示出了根据实施方案的用于生成在增强的信封加密方案下受到保护的消息的过程1300的说明性实例。过程1300可由任何合适的系统来执行,诸如根据上文在图8-12中描述的客户端描述的计算机系统。在实施方案中,执行过程1300的系统可以生成1302包括私钥和公钥的非对称密钥对。在一些实施方案中,非对称密钥对可以是椭圆曲线密钥对。系统还可以从密码服务获得1304可以用于信封加密的密码数据密钥。数据密钥可以是对称密钥。在一些实施方案中,可以在生成非对称密钥对之前获得数据密钥。
在一些实施方案中,可以使用数据密钥来对消息进行加密1306。在对消息加密之后,可以使用私钥至少在加密消息上生成1308数字签名。在一些实施方案中,可以使用公钥来验证数字签名是真实的。例如,可以根据上文结合图9-10描述的实施方案来执行加密和数字签名生成。在一些实施方案中,数字签名的有效载荷可以包括私钥的密文(在一些实施方案中,包括与用于执行加密的客户端主密钥相关联的元数据)和由非对称私钥生成的数字签名。
在一些实施方案中,可以获得附加认证数据(AAD),并且可以用非对称公钥对AAD进行扩增1310。例如,可以通过向AAD预置或附加非对称公钥来扩增AAD。在一些实施方案中,AAD可以是数据结构,并且可以将非对称公钥插入或复制到数据结构内的数据元素中。在一些实施方案中,AAD可以是任选的和/或空的。
在一些实施方案中,作为执行认证加密的请求的一部分,可以向密码服务提供1312数据密钥和扩增的AAD。在一些实施方案中,AAD可以是任选的,在这种情况下,作为执行认证加密的请求的一部分,可以向密码服务提供数据密钥和非对称公钥(或仅仅数据密钥)。可以根据上文结合图9-10描述的实施方案由密码服务执行认证加密。
在一些实施方案中,(即,其中密码服务成功地执行了数据密钥的认证加密),图13的系统可以从密码服务接收1314数据密钥的密文和可以使用扩增的AAD来验证的认证标签。在一些实施方案中,AAD可以是任选的,在这种情况下,可以使用非对称公钥来验证认证标签。在一些实施方案中,图13的系统可以例如向另一个计算机系统传输或提供1316包括密文消息、数字签名、密文数据密钥、扩增的AAD和认证标签的受保护的消息。该系统可以例如通过将包括数字签名的有效载荷和认证的有效载荷的受保护的消息在一个或多个TCP包中传输到另一个客户端来使受保护的消息可用。
图13中描述的过程1300的变型也是可能的。在一些实施方案中,系统可以将AAD用公钥扩增,向密码服务提供扩增的AAD,并且从密码服务接收可以使用扩增的AAD来验证的密文数据密钥和认证标签。在这个实施方案中,在接收到密文数据密钥之前、同时或之后,还可以从密码服务接收明文数据密钥。在一些实施方案中,系统可以接收密文数据密钥,生成包括密文数据密钥、认证标签、AAD和非对称公钥的认证的有效载荷。在一些实施方案中,在生成认证的有效载荷之后,系统可以获得密码数据密钥,使用数据密钥生成第一消息的密文,并且使用非对称私钥来对第一消息的密文进行数字签名。该系统可以根据上述实施方案,基于第一消息的密文来使包括认证的有效载荷和第一数字有效载荷的第一受保护的消息可用。该系统还可以使用数据密钥生成第二消息的密文,并且使用非对称密钥来对第二消息的密文进行数字签名。该系统然后可以根据上述实施方案,基于第二消息的密文来使包括与第一消息相同的认证的有效载荷和第二数字有效载荷的第二受保护的消息可用。因此,在各种实施方案中,该系统可以使用相同的认证的有效载荷生成多个受保护的消息。
图14示出了用于在实施方案中验证受保护的消息尚未被不适当地修改的过程1400的说明性实例。过程1400可由任何合适的系统来执行,诸如根据上文在图8-12中描述的客户端描述的计算机系统。在实施方案中,执行过程1400的系统可以接收1402包括受保护的消息的受保护的消息,所述受保护的消息包括:第一密文;第一密文上的数字签名;第二密文;扩增的AAD;以及第二密文和扩增的AAD上的认证标签。受保护的消息可能已由另一个计算机系统或另一个计算实体(诸如受保护的消息的传输中涉及的路由器或交换机)不适当地修改。
在一些实施方案中,作为请求(例如,网络API请求)的一部分,该系统可以向密码服务提供1404第二密文、扩增的AAD和认证标签以对第二密文进行解密。例如,可以根据上文结合图9-10描述的实施方案由密码服务执行解密。
作为对请求的响应的一部分,该系统可以至少基于第二密文、扩增的AAD和认证标签来从密码服务接收1406真实性的指示。在一些实施方案中,诸如其中密文、AAD和/或认证标签在传输期间已被修改的实施方案,可能替代地接收失败或无效指示。作为对请求的响应的一部分,该系统还可以接收1408第二密文的明文和密钥ID。明文可以包括密码数据密钥。密钥ID可以对应于由密码服务用来对第二密文解密的客户端主密钥。在一些实施方案中,可以在接收明文和密钥ID之后或同时接收真实性的指示。需注意,明文可能仍然处于混淆格式(例如,在将多层加密应用于数据密钥的情况下)。
在一些实施方案中,系统可以验证1410所接收的密钥ID与预期的密钥标识符相匹配。预期的密钥ID可以是与预期的发送者相关联的密钥ID。客户端可以基于协议或其他信息来确定预期的发送者。如果所接收的密钥ID和预期的密钥ID不匹配,则可能会引发错误,并且可能将受保护的消息作为无效丢弃。该系统可以例如根据上文结合图9-10描述的实施方案来执行这个验证。在一些实施方案中,该系统可以使用数据密钥对第一明文进行解密,并获得尚未被不适当地修改的明文消息。
在一些实施方案中,可以使用非对称公钥来验证1412第一密文上的数字签名。在一些实施方案中,可以在接收1406真实性指示之前和/或在接收解密的数据密钥之前验证数字签名。在第二密文已解密并获得数据密钥之后,该系统可以使用数据密钥对第一密文进行解密并获得明文消息。在一些实施方案中,可以在接收1406真实性指示之前和/或在验证数字签名1412之前对密文进行解密。在此类实施方案中,可以将所获得的明文消息标记为使用不安全,直到成功完成验证步骤为止。
如本文所使用的,术语“私钥”和“公钥”可以分别用于指用作非对称密码(“公钥密码学”)的一部分的私钥和公钥。非对称密码学是指一类密码协议,其中私钥和公钥可以在数学上相联系。在公钥密码学中,不要求各方交换共享秘密。相反,公钥可能会被公布并且可能普遍可用(甚至对于不可信的各方),而私钥不应泄露给不可信的各方。(对应的私钥和公钥的)密钥对可用于执行密码操作。例如,可以使用公钥来对明文消息加密,从而产生密文,并且可以使用对应的私钥来对密文解密,从而产生原始明文消息。作为第二实例,可以使用私钥来生成认证消息的数字签名,并且可以使用对应的公钥来验证数字签名是正确的并且因此验证该消息是真实的。
图15示出用于实现根据各个实施方案的各方面的实例环境1500的各方面。如将了解,尽管出于解释目的使用基于网络的环境,但是在适当时可以使用不同环境来实现各个实施方案。环境包括电子客户端装置1502,该电子客户端装置可包括可操作以经由适当网络1504发送和/或接收请求、消息或信息并且在一些实施方案中将信息传达回装置用户的任何适当装置。此类客户端装置的实例包括个人计算机、手机、手持式消息传递装置、膝上计算机、平板计算机、机顶盒、个人数据助理、嵌入式计算机系统、电子书阅读器等等。网络可包括任何适当网络,包括内联网、互联网、蜂窝网、局域网、卫星网路或任何其他此类网络和/或其组合。此类系统所用的组件可以至少部分地取决于所选网络和/或环境的类型。用于经由此类网络通信的许多协议和组件是众所周知的,并且本文将不再详细论述。经由网络的通信可通过有线或无线连接及其组合来实现。在这个实例中,网络包括互联网和/或其他公共可寻址的通信网络,因为环境包括用于接收请求并且响应于所述请求而提供内容的网络服务器1506,然而对于其他网络来说,可使用用于类似目的的替代装置,如本领域技术人员将显而易见的。
说明性环境包括至少一个应用程序服务器1508和数据存储器1510。应当理解,可以存在可以链接起来或以其他方式来配置的若干应用程序服务器、层或其他元件、过程或组件,所述应用程序服务器、层或其他元件、过程或组件可交互来执行诸如从适当数据存储器获取数据的任务。如本文所使用的,服务器可以以各种方式来实现,诸如硬件装置或虚拟计算机系统。在某些情况下,服务器可能指的是在计算机系统上执行的编程模块。如本文所使用的,除非另外陈述或者在上下文中很清楚,否则术语“数据存储器”指能够存储、访问和检索数据的任何装置或装置组合,所述装置或装置组合可包括在任何标准、分布式、虚拟或集群式环境中的任何组合和任何数目的数据服务器、数据库、数据存储装置和数据存储媒体。应用程序服务器可包括任何适当的硬件、软件和固件,所述硬件、软件和固件视执行客户端装置的一个或多个应用程序的各方面的需要而与数据存储器集成、处置应用程序的数据访问和业务逻辑中的一些或全部。应用程序服务器可以与数据存储器协作地提供访问控制服务,并且能够生成可用于提供给用户的内容,包括但不限于文本、图形、音频、视频和/或其他内容,所述内容可以超文本标记语言(“HTML”)、可扩展标记语言(“XML”)、JavaScript、层叠样式表(“CSS”)、JavaScript对象表示法(JSON)和/或另一种适当的客户端结构化语言的形式由网络服务器向用户提供。传送到客户端装置的内容可以由客户端装置处理以按一种或多种形式提供内容,包括但不限于用户在听觉上、视觉上和/或经由其他感官可感知的形式。所有请求和响应的处置以及客户端装置1502与应用程序服务器1508之间的内容递送可由网络服务器使用PHP来处置:在这个实例中,超文本预处理器(“PHP”)、Python、Ruby、Perl、Java、HTML、XML、JSON和/或另一种适当的服务器端结构化语言。此外,除非从上下文另外清楚地看出,否则本文中描述为由单个装置执行的操作可以由可以形成分布式和/或虚拟系统的多个装置共同执行。
数据存储器1510可包括若干单独的数据表、数据库、数据文档、动态数据存储方案和/或用来存储与本公开的特定方面相关的数据的其他数据存储机构和媒体。举例来说,所示数据存储器可以包括用于存储产生数据1512和用户信息1516的机构,产生数据1512和用户信息1516可用于提供用于产生端的内容。数据存储器还被示出为包括用于存储日志数据1514的机构,所述日志数据1514可用于报告、分析或其他此类目的。应当理解,可能存在可能需要存储在数据存储器中的许多其他方面,诸如页面图像信息和访问权信息,所述方面可在适当时存储在上文所列机构中的任一者中或存储在数据存储器1510中的额外机构中。数据存储器1510可通过与它关联的逻辑来操作,以便从应用程序服务器1508接收指令,并且响应于所述指令而获得、更新或以其他方式处理数据。应用程序服务器1508可响应于所接收的指令而提供静态数据、动态数据或静态数据与动态数据的组合。动态数据(诸如在网络日志(博客)、购物应用程序、新闻服务以及其他此类应用程序中使用的数据)可以如本文中所描述由服务器端结构化语言生成,或者可以由在应用程序服务器上运行或在其控制下运行的内容管理系统(“CMS”)提供。在一个实例中,用户可以通过由用户操作的装置来提交针对某种类型的项目的搜索请求。在这种情况下,数据存储器可能访问用户信息来验证用户的身份,并且可访问目录详细信息以获得有关所述类型的项目的信息。接着可以诸如用用户能够经由用户装置1502上的浏览器查看的网页上列出的结果将信息返回给用户。可在浏览器的专用页面或窗口中查看到感兴趣的特定项目的信息。然而,应该注意的是,本公开的实施方案不一定限于网页的上下文,而是可以更一般地适用于通常处理请求,其中请求不一定是对内容的请求。
每个服务器通常将包括提供用于所述服务器的一般管理和操作的可执行程序指令的操作系统,并且通常将包括存储指令的计算机可读存储媒体(例如,硬盘、随机存取存储器、只读存储器等),所述指令在由服务器的处理器执行时(即,由于被服务器的处理器的执行)而允许服务器执行其期望的功能。
在一个实施方案中,环境是利用经由通信链路、使用一个或多个计算机网络或直接连接而互连的若干计算机系统和组件的分布式和/或虚拟计算环境。然而,本领域技术人员应理解,这种系统可在具有比图15所示的组件更少或更多组件的系统中同样良好地操作。因此,图15中的系统1500的描绘本质上应视为说明性的,并且不限制本公开的范围。
另外,可鉴于以下条款对本公开的各个实施方案进行描述:
1.一种计算机实现的方法,所述方法包括:
在被配置有可执行指令的一个或多个计算机系统的控制下,作为用于建立以密码方式保护的通信会话的握手协议的一部分,获得包括发送者身份信息和第一非对称公钥的第一消息,所述第一非对称公钥和对应的第一非对称私钥由客户端支持以用于经由所述以密码方式保护的通信会话进行通信;
向密码服务提供所述第一消息、密钥标识符和用于生成与所述第一消息相对应的第一认证消息的指令,其中所述第一认证消息可以通过所述客户端向所述密码服务提供所述第一认证消息进行验证来验证;
从所述密码服务接收与所述第一消息相对应的所述第一认证消息;
作为所述握手协议的一部分,向所述客户端提供所述第一认证消息;
从所述客户端接收第二认证消息,所述认证消息至少包括第二发送者身份信息和第二非对称公钥;
使用所述密码服务验证所述第二认证消息的真实性;
从所述密码服务接收所述第二认证消息是真实的指示;
作为所述握手协议的一部分,至少使用所述第二非对称公钥和所述第一非对称私钥生成共享秘密;以及
至少部分利用所述共享秘密与所述客户端建立所述以密码方式保护的通信会话,其中所述共享秘密也可由所述客户端确定。
2.如条款1所述的计算机实现的方法,其中所述第一非对称公钥为椭圆曲线公钥QA,所述对应的私钥为对应的椭圆曲线私钥dA,并且所述第二非对称公钥为椭圆曲线公钥QB,并且其中部分地基于计算dA和QB的椭圆曲线点乘算法而生成所述共享秘密。
3.如条款1或2所述的计算机实现的方法,其中:
所述用于生成与所述第一消息相对应的所述第一认证消息的指令包括向所述密码服务请求至少部分地基于所述第一消息而生成消息认证码(MAC)标签;并且
所述第一认证消息包括所述第一消息和至少部分地基于所述第一消息的所述MAC标签。
4.如条款1至3中任一项所述的计算机实现的方法,其中所述以密码方式保护的通信会话为传输层安全(TLS)会话。
5.一种系统,所述系统包括:
一个或多个处理器;以及
存储器,所述存储器存储可执行指令,所述可执行指令由于被所述一个或多个处理器执行而使所述系统:
从密码服务获得公钥与发送者身份之间的绑定是真实的指示;
作为握手协议的一部分,向客户端提供绑定到所述发送者身份的所述公钥以及所述绑定是真实的所述指示;
从所述客户端接收第二公钥;
至少使用私钥和所述第二公钥生成共享秘密;以及
使用所述共享秘密与所述客户端建立以密码方式保护的通信会话。
6.如条款5所述的系统,其中:
所述第二公钥经由第二绑定而绑定到第二发送者身份和可由所述密码服务以密码方式验证的第二指示;并且
所述指令还使所述系统:
使用所述密码服务验证所述第二绑定是真实的;以及
响应于成功验证所述第二绑定是真实的,生成所述共享秘密。
7.如条款5或6所述的系统,其中非对称密钥对为包括椭圆曲线公钥QA和对应的椭圆曲线私钥dA的椭圆曲线密钥对,并且所述第二公钥为椭圆曲线公钥QB,并且其中部分地基于计算dA和QB的椭圆曲线点乘算法而生成所述共享秘密。
8.如条款6所述的系统,其中:
所述系统通过至少生成包括所述公钥和所述发送者身份的消息来将所述公钥绑定到所述发送者身份;
所述系统通过获得密钥标识符并请求所述密码服务使用与所述密钥标识符相关联的密码密钥在所述消息上生成消息认证码(MAC)标签来获得所述绑定是真实的所述指示;
所述第二指示包括第二MAC标签;并且
所述验证所述第二绑定是真实的包括向所述密码服务提供所述第二MAC标签和所述第二绑定。
9.如条款6所述的系统,其中:
所述系统将所述公钥绑定到所述发送者身份包括生成包括所述公钥和所述发送者身份的消息;
所述系统通过获得密钥标识符并请求所述密码服务使用与所述密钥标识符相关联的密码密钥对所述消息加密来获得所述绑定是真实的所述指示;
所述第二指示包括密文;并且
所述系统还包括用于验证所述第二绑定是真实的指令以:
向所述密码服务提供所述密文以进行解密;
从所述密码服务接收与密文相对应的明文和第二密钥标识符;以及
确定所述第二密钥标识符与所述客户端相关联。
10.如条款9所述的系统,其中:
所述消息还包括随机数;并且
所述系统还包括用于验证所述第二绑定是真实的指令,以确定与所述密文相对应的所述明文包括所述随机数。
11.如条款5至10中任一项所述的系统,其中所述指令还使所述系统在建立所述以密码方式保护的通信会话之后获得数据,使用所述私钥在所述数据上生成数字签名,并且经由所述以密码方式保护的通信会话向所述客户端传输所述数据和所述数字签名。
12.如条款5至11中任一项所述的系统,其中所述以密码方式保护的通信会话为传输层安全(TLS)会话。
13.一种上面存储有可执行指令的非暂时性计算机可读存储媒体,所述指令由于被计算机系统的一个或多个处理器执行而使所述计算机系统至少:
获得包括私钥和公钥的非对称密钥对;
作为握手协议的一部分,向客户端提供所述公钥;
从所述客户端接收经由第二绑定而绑定到第二发送者身份和第二指示的第二公钥,其中所述第二指示可通过密码服务以密码方式验证;
使用所述密码服务验证所述第二绑定是真实的;
响应于确定所述第二绑定是真实的,至少使用所述私钥和所述第二公钥生成共享秘密;以及
与所述客户端建立以密码方式保护的通信会话。
14.如条款13所述的非暂时性计算机可读存储媒体,其中所述可执行指令还使所述计算机系统:
从所述密码服务获得所述公钥与发送者身份之间的绑定是真实的指示;
作为握手协议的一部分,向客户端提供所述绑定是真实的所述指示;并且
其中提供给所述客户端的所述公钥被绑定到所述发送者身份。
15.如条款13或14所述的非暂时性计算机可读存储媒体,其中所述非对称密钥对为包括椭圆曲线公钥QA,和对应的椭圆曲线私钥dA的椭圆曲线密钥对,并且所述第二非对称公钥为椭圆曲线公钥QB
16.如条款14所述的非暂时性计算机可读存储媒体,其中:
所述系统将所述公钥绑定到所述发送者身份包括生成包括所述公钥和所述发送者身份的消息;
所述系统经由获得密钥标识符并请求所述密码服务使用与所述密钥标识符相关联的密码密钥在所述消息上生成消息认证码(MAC)标签的指令来获得所述绑定是真实的所述指示;
所述第二指示包括第二MAC标签;并且
所述系统经由向所述密码服务提供所述第二MAC标签和所述第二绑定的指令来验证所述第二绑定是真实的。
17.如条款14所述的非暂时性计算机可读存储媒体,其中:
将所述公钥绑定到所述发送者身份包括生成包括所述公钥和所述发送者身份的消息;
获得所述绑定是真实的所述指示包括获得密钥标识符并请求所述密码服务使用与所述密钥标识符相关联的密码密钥对所述消息加密;
所述第二指示包括密文;并且
所述验证所述第二绑定是真实的包括:
向所述密码服务提供所述密文以进行解密;
从所述密码服务接收与密文相对应的明文和第二密钥标识符;以及
确定所述第二密钥标识符与所述客户端相关联。
18.如条款17所述的非暂时性计算机可读存储媒体,其中:
所述消息还包括时间戳;并且
所述验证所述第二绑定是真实的还包括确定与所述密文相对应的所述明文包括所述时间戳。
19.如条款14所述的非暂时性计算机可读存储媒体,其中所述加密请求为认证加密请求。
20.如条款13至19中任一项所述的非暂时性计算机可读存储媒体,其中所述以密码方式保护的通信会话为传输层安全(TLS)会话。
21.一种系统,所述系统包括:
第一计算机系统,所述第一计算机系统包括:
第一一个或多个处理器;以及
第一存储器,所述第一存储器存储可执行指令,所述可执行指令由于被所述第一一个或多个处理器执行而使所述第一计算机系统:
通过获得密码数据密钥并使用所述数据密钥至少对消息加密来至少部分地基于所述消息生成第一密文;
生成数字签名的有效载荷,所述数字签名的有效载荷包括所述第一密文和至少使用所述第一密文和私钥生成的数字签名;以及
获得认证的有效载荷,所述认证的有效载荷包括至少部分地基于所述数据密钥的第二密文、与所述私钥相对应的公钥和可使用至少包括所述数据密钥和所述公钥的数据验证的认证标签;以及
第二计算机系统,所述第二计算机系统包括:
第二一个或多个处理器;以及
第二存储器,所述第二存储器存储可执行指令,所述可执行指令由于被所述第二一个或多个处理器执行而使所述第二计算机系统:
接收所述数字签名的有效载荷和所述认证的有效载荷;
至少基于所述第二密文、所述公钥和所述认证标签获得所述数据密钥和密钥标识符;
验证所述密钥标识符与和所述第一计算机系统相关联的预期密钥标识符匹配并且所述数字签名有效;以及
通过使用所述数据密钥对所述第一密文解密来获得所述消息。
22.如条款21所述的系统,其中:
获得所述第二密文还基于附加认证数据;
所生成的认证的有效载荷还包括所述附加认证数据;并且
获得所述数据密钥和所述密钥标识符还基于所述附加认证数据。
23.如条款21或22所述的系统,其中:
生成所述第一密文是基于至少对所述消息和所述公钥加密;并且
所述第二存储器还存储可执行指令,所述可执行指令使所述第二计算机系统至少基于所述第二密文和所述认证标签获得所述公钥。
24.如条款21至23中任一项所述的系统,其中所述私钥为椭圆曲线私钥,并且所述公钥为椭圆曲线公钥。
25.一种计算机实现的方法,所述方法包括:
在被配置有可执行指令的一个或多个计算机系统的控制下,
通过获得密码数据密钥并使用所述数据密钥至少对消息加密来至少部分地基于所述消息生成第一密文;
使用非对称私钥,至少部分地基于所述第一密文生成数字签名;
生成至少包括所述第一密文和所述数字签名的数字签名的有效载荷;
通过至少提供所述密码数据密钥和与所述非对称私钥相对应的非对称公钥来向密码服务请求认证加密,其中至少所述密码数据密钥被指示为待加密;
响应于对所述认证加密的所述请求,接收第二密文和认证标签;
生成至少包括所述第二密文、所述非对称公钥和所述认证标签的认证的有效载荷;以及
使另一计算机系统至少可以获得所述数字签名的有效载荷和所述认证的有效载荷。
26.如条款25所述的计算机实现的方法,其中:
请求所述认证加密还包括提供附加认证数据;并且
所述认证的有效载荷还包括所述附加认证数据。
27.如条款25或26所述的计算机实现的方法,其中所述非对称私钥为椭圆曲线私钥,并且所述非对称公钥为椭圆曲线公钥。
28.如条款25至27中任一项所述的计算机实现的方法,其中网络API请求用于请求所述认证加密。
29.如条款25至28中任一项所述的计算机实现的方法,其中请求所述密码服务执行所述认证加密还包括指示所述非对称公钥待加密。
30.如条款26所述的计算机实现的方法,其中请求所述认证加密还包括提供随机数。
31.如条款30所述的计算机实现的方法,其中所述认证加密为AES-CCM或AES-GCM加密。
32.如条款25至31中任一项所述的计算机实现的方法,其中通过在一个或多个TCP包中传输所述数字签名的有效载荷和所述认证的有效载荷来使至少所述数字签名的有效载荷和所述认证的有效载荷可获得。
33.如条款25至32中任一项所述的计算机实现的方法,其中网络API请求用于从所述密码服务获得所述密码数据密钥。
34.一种上面存储有可执行指令的非暂时性计算机可读存储媒体,所述指令由于被计算机系统的一个或多个处理器执行而使所述计算机系统至少:
接收受保护的消息,所述受保护的消息包括:
数字签名的有效载荷,所述数字签名的有效载荷还包括第一密文和所述第一密文上的数字签名;以及
认证的有效载荷,所述认证的有效载荷还包括第二密文、非对称公钥和认证标签;
通过至少提供所述第二密文、所述非对称公钥和所述认证标签来向密码服务请求所述第二密文的认证解密;
响应于对所述认证解密的所述请求至少接收密码数据密钥和密钥标识符;
验证所述密钥标识符与和预期客户端相关联的预期密钥标识符匹配并且所述数字签名的有效载荷的所述数字签名有效;以及
通过使用所述密码数据密钥对所述数字签名的有效载荷的所述第一密文解密来获得消息。
35.如条款34所述的非暂时性计算机可读存储媒体,其中所述非对称公钥是椭圆曲线公钥。
36.如条款34或35所述的非暂时性计算机可读存储媒体,其中所述受保护的消息还包括所述非对称公钥。
37.如条款34至36中任一项所述的非暂时性计算机可读存储媒体,其中网络API请求用于请求所述认证解密。
38.如条款34至37中任一项所述的非暂时性计算机可读存储媒体,其中所述指令还包括由于被所述一个或多个处理器执行而使所述计算机系统执行以下操作的指令:响应于对所述认证解密的所述请求,至少接收所述密码数据密钥、所述非对称公钥和所述密钥标识符。
39.如条款34至38中任一项所述的非暂时性计算机可读存储媒体,其中所述密码数据密钥为对称密码密钥。
40.如条款34至39中任一项所述的非暂时性计算机可读存储媒体,其中:
在所述数字签名得到验证之后获得所述消息;
在至少接收到所述密码数据密钥和所述密钥标识符之后验证所述数字签名;并且
在验证所述密钥标识符与和预期客户端相关联的所述预期密钥标识符匹配后验证所述数字签名。
41.如条款34至40中任一项所述的非暂时性计算机可读存储媒体,其中接收所述受保护的消息作为一个或多个TCP包的一部分。
各个实施方案可进一步在广泛范围的操作环境中实现,在一些情况下,所述环境可包括可用于操作多个应用程序中的任一者的一个或多个用户计算机、计算装置或处理装置。用户或客户端装置可包括多个计算机中的任一者,诸如运行标准操作系统的台式计算机、膝上计算机或平板计算机,以及运行移动软件并且能够支持多个网络连接协议和消息传递协议的蜂窝装置、无线装置和手持式装置。这种系统还可包括多个工作站,所述工作站运行多种可购得的操作系统和用于诸如开发和数据库管理等目的的其他已知应用程序中的任一者。这些装置还可包括其他电子装置,诸如虚拟终端、薄型客户端、游戏系统和能够经由网络通信的其他装置。这些装置还可包括虚拟装置,诸如虚拟机、管理程序和能够经由网络通信的其他虚拟装置。
本公开的各种实施方案利用本领域技术人员将熟悉的至少一种网络来使用各种各样的可购得的协议中的任一者来支持通信,所述协议如传输控制协议/互联网协议(“TCP/IP”)、用户数据报协议(“UDP”)、在开放系统互连(“OSI”)模型的各个层中运行的协议、文件传送协议(“FTP”)、通用即插即用(“UpnP”)、网络文件系统(“NFS”)、公共互联网文件系统(“CIFS”)以及AppleTalk。网络例如可以是局域网、广域网、虚拟专用网、互联网、内联网、外联网、公共交换电话网络、红外网络、无线网络、卫星网络以及其任何组合。在一些实施方案中,可以使用面向连接的协议来在网络端点之间进行通信。面向连接的协议(有时称为基于连接的协议)能够以有序流传输数据。面向连接的协议可以是可靠的或不可靠的。例如,TCP协议是可靠的面向连接的协议。异步传送模式(“ATM”)和帧中继是不可靠的面向连接的协议。面向连接的协议与面向包的协议如UDP形成对比,UDP在没有保证排序的情况下传输包。
在利用网络服务器的实施方案中,网络服务器可以运行各种各样的服务器或中间层应用程序中的任一种,包括超文本传送协议(“HTTP”)服务器、FTP服务器、公共网关接口(“CGI”)服务器、数据服务器、Java服务器、Apache服务器和业务应用程序服务器。服务器还能够响应来自用户装置的请求,诸如通过执行可以实现为以任何编程语言(诸如
Figure BDA0001689990130000331
C、C#或C++)或任何脚本语言(诸Ruby、PHP、Perl、Python或TCL)以及其组合编写的一个或多个脚本或程序的一个或多个网络应用程序来执行程序或脚本。服务器还可以包括数据库服务器,包括但不限于可从
Figure BDA0001689990130000333
Figure BDA0001689990130000332
购得的服务器以及开源服务器,诸如MySQL、Postgres、SQLite、MongoDB以及能够存储、检索和访问结构化或非结构化数据的任何其他服务器。数据库服务器可以包括基于表格的服务器、基于文档的服务器、非结构化服务器、关系服务器、非关系服务器或这些和/或其他数据库服务器的组合。
环境可包括如上文所论述的各种各样的数据存储器以及其他存储器和存储媒体。这些可驻留在各种各样的位置,诸如在计算机中的一个或多个本地(和/或驻留在计算机中的一个或多个中)的存储媒体上,或跨网络远离计算机中的任一者或全部。在实施方案的特定集合中,信息可驻留在本领域技术人员熟悉的存储区域网(“SAN”)中。类似地,用于执行属于计算机、服务器或其他网络装置的功能的任何必要的文件可在适当时本地或远程地进行存储。在系统包括计算机化装置的情况下,每个这种装置都可以包括可经由总线电耦合的硬件元件,这些元件包括例如至少一个中央处理单元(“CPU”或“处理器”)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏或小键盘)和至少一个输出装置(例如,显示装置、打印机或扬声器)。这种系统还可包括一个或多个存储装置,诸如硬盘驱动器、光学存储装置和诸如随机存取存储器(“RAM”)或只读存储器(“ROM”)的固态存储装置,以及可移动媒体装置、存储卡、闪存卡等。
此类装置还可包括计算机可读存储媒体读取器、通信装置(例如,调制解调器、网卡(无线或有线)、红外通信装置等)和工作存储器,如上文所描述。计算机可读存储媒体读取器可与计算机可读存储媒体连接或被配置成接收计算机可读存储媒体,计算机可读存储媒体表示远程、本地、固定和/或可移动存储装置以及用于暂时和/或更永久地含有、存储、传输和检索计算机可读信息的存储媒体。系统和各种装置通常还将包括位于至少一个工作存储器装置内的多个软件应用程序、模块、服务或其他元件,包括操作系统和应用程序,诸如客户端应用程序或网络浏览器。此外,也可使用定制硬件,和/或特定元件可以在硬件、软件(包括便携式软件,诸如小程序)或两者中实现。此外,可以采用与诸如网络输入/输出装置的其他计算装置的连接。
用于含有代码或代码的一部分的存储媒体和计算机可读媒体可包括本领域已知或使用的任何适当媒体,包括存储媒体和通信媒体,诸如但不限于以用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术所实现的易失性和非易失性、可抽取和不可抽取的媒体,包括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}、{A,C}、{B,C}、{A,B,C}。因此,这样的连接语言通常并不旨在暗示某些实施方案需要各种呈现A中的至少一者、B中的至少一者和C中的至少一者。
除非本文中另外指示或另外与上下文明显矛盾,否则本文中所描述的过程操作可以按任何合适的顺序执行。本文中所描述的过程(或其变型和/或组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)、由硬件或其组合来实现。代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读存储媒体上。计算机可读存储媒体可以是非暂时性的。在一些实施方案中,代码存储在一种或多种非暂时性计算机可读存储媒体的集合上,一种或多种非暂时性计算机可读存储媒体上面存储有可执行指令,所述指令在由计算机系统的一个或多个处理器执行时(即,由于被一个或多个处理器执行)而使计算机系统执行本文描述的操作。非暂时性计算机可读存储媒体的集合可以包括多种非暂时性计算机可读存储媒体,并且多个非暂时性计算机可读存储媒体中的个别非暂时性存储媒体中的一个或多个可以缺少所有代码,而多个非暂时性计算机可读存储媒体共同存储所有代码。此外,在一些实例中,执行可执行指令,使得不同的指令由不同的处理器执行。作为说明性实例,非暂时性计算机可读存储媒体可以存储指令。主CPU可以执行一些指令,并且图形处理器单元可以执行其他指令。通常,计算机系统的不同组件可以具有单独的处理器,并且不同的处理器可以执行指令的不同子集。
因此,在一些实例中,计算机系统被配置为实现单独或共同执行本文描述的过程的操作的一个或多个服务。例如,此类计算机系统可以配置有能够执行操作的适用硬件和/或软件。此外,在一些实例中,实现本公开的各种实施方案的计算机系统可以是单个装置,而在其他实例中,可以是包括以不同方式操作的多个装置的分布式计算机系统,使得分布式计算机系统执行本文描述的操作并且使得单个装置可能无法执行所有操作。
本文所提供的任何以及所有实例或示例性语言(例如,“诸如”)的使用仅旨在更好地说明本发明的实施方案,并且除非另外要求,否则不会对本发明的范围施加限制。本说明书中的语言不应解释为将任何非要求保护的要素指示为实践本发明所必需的。
本文中描述了本公开的实施方案,包括发明人已知用于执行本发明的最佳模式。阅读上述描述后那些实施方案的变型对于本领域技术人员可以变得显而易见。发明人希望技术人员在适当时采用此类变型,并且发明人旨在以不同于如本文所特别描述的方式来实践本公开的实施方案。因此,只要法律允许,本公开的范围包括此处所附权利要求书中叙述的主题的所有修改和等效物。此外,除非本文另外指示或另外明显地与上下文矛盾,否则本公开的范围涵盖其所有可能变型中的上述元素的任何组合。
本文中所引用的所有参考文献,包括公布、专利申请和专利,在此以引用的方式并入,其程度就如同个别地且具体地指出每一参考文献以引用的方式并入且在本文中阐述其全文一样。

Claims (23)

1.一种系统,所述系统包括:
一个或多个计算机处理器;以及
存储器,所述存储器存储可执行指令,所述可执行指令由于被所述一个或多个处理器执行而使所述系统,
由发送者向密码服务提供至少包含发送者身份和第一公钥的消息;
响应于所述消息已被验证,由所述发送者从密码服务获得在第一公钥与发送者身份之间的第一绑定是真实的指示;
作为握手协议的一部分,由所述发送者向客户端提供绑定到所述发送者身份的所述第一公钥以及所述第一绑定是真实的所述指示;
由所述发送者从所述客户端接收第二公钥;
至少使用所述第二公钥和与所述第一公钥相对应的私钥生成共享秘密,其中所述共享秘密对加密服务不可用;以及
使用所述共享秘密与所述客户端建立以密码方式保护的通信会话。
2.如权利要求1所述的系统,其中:
所述第二公钥经由第二绑定而绑定到第二发送者身份和可由所述密码服务以密码方式验证的第二指示;并且
所述指令还使所述系统:
使用所述密码服务验证所述第二绑定是真实的;以及
响应于成功验证所述第二绑定是真实的,生成所述共享秘密。
3.如权利要求2所述的系统,其中:
所述系统通过至少生成包括所述第一公钥和所述发送者身份的消息来将所述第一公钥绑定到所述发送者身份;
所述系统通过获得密钥标识符并请求所述密码服务使用与所述密钥标识符相关联的密码密钥在所述消息上生成消息认证码(MAC)标签来获得所述第一绑定是真实的所述指示;
所述第二指示包括第二MAC标签;并且
所述验证所述第二绑定是真实的包括向所述密码服务提供所述第二MAC标签和所述第二绑定。
4.如权利要求2所述的系统,其中:
所述系统将所述第一公钥绑定到所述发送者身份包括生成包括所述第一公钥和所述发送者身份的消息;
所述系统通过获得密钥标识符并请求所述密码服务使用与所述密钥标识符相关联的密码密钥对所述消息加密来获得所述第一绑定是真实的所述指示;
所述第二指示包括密文;并且
所述系统还包括用于验证所述第二绑定是真实的指令以:
向所述密码服务提供所述密文以进行解密;
从所述密码服务接收与密文相对应的明文和第二密钥标识符;以及
确定所述第二密钥标识符与所述客户端相关联。
5.如权利要求4所述的系统,其中:
所述消息还包括随机数;并且
所述系统还包括用于验证所述第二绑定是真实的指令,以确定与所述密文相对应的所述明文包括所述随机数。
6.如权利要求1所述的系统,其中所述第一公钥和所述私钥形成包括椭圆曲线公钥QA和对应的椭圆曲线私钥dA的椭圆曲线密钥对,并且所述第二公钥为椭圆曲线公钥QB,并且其中所述共享秘密是部分地基于计算dA和QB的椭圆曲线点乘算法而生成的。
7.如权利要求1所述的系统,其中所述指令还使所述系统在建立所述以密码方式保护的通信会话之后获得数据,使用所述私钥在所述数据上生成数字签名,并且经由所述以密码方式保护的通信会话向所述客户端传输所述数据和所述数字签名。
8.如权利要求1所述的系统,其中所述以密码方式保护的通信会话为传输层安全(TLS)会话。
9.如权利要求1所述的系统,其中,
所述密码服务还包括以下限定中的至少一项:
信任所述密码服务来生成数字签名并验证数字签名的真实性,但不信任所述密码服务访问可以用于访问两个计算机系统之间的以密码方式保护的通信的数字密钥;
利用所述密码服务来在两个计算机系统之间建立信任关系,但不信任所述密码服务作为以密码方式保护的通信的一方。
10.一种计算机实现的方法,所述方法包括,
在被配置有可执行指令的一个或多个计算机系统的控制下,
由发送者向密码服务提供至少包含发送者身份和第一公钥的消息;
响应于所述消息已被验证,由所述发送者从密码服务获得第一公钥与发送者身份之间的第一绑定是真实的指示;
作为握手协议的一部分,由所述发送者向客户端提供绑定到所述发送者身份的第一公钥以及第一绑定是真实的所述指示;
由所述发送者从所述客户端接收第二公钥;
至少使用所述第二公钥和与所述第一公钥相对应的私钥生成共享秘密,其中所述共享秘密对加密服务不可用;以及
利用所述共享秘密与所述客户端建立以密码方式保护的通信会话。
11.如权利要求10所述的计算机实现的方法,其中所述第一公钥和所述私钥形成包括椭圆曲线公钥QA和对应的椭圆曲线私钥dA的椭圆曲线密钥对,并且所述第二公钥为椭圆曲线公钥QB,并且其中所述共享秘密是部分地基于计算dA和QB的椭圆曲线点乘算法而生成的。
12.如权利要求10所述的计算机实现的方法,其中:
所述第二公钥经由第二绑定而绑定到第二发送者身份和可由所述密码服务以密码方式验证的第二指示;并且
所述方法还包括:
使用所述密码服务验证所述第二绑定是真实的;以及
响应于成功验证所述第二绑定是真实的,生成所述共享秘密。
13.如权利要求12所述的计算机实现的方法,其中:
所述方法还包括使所述计算机系统通过至少生成包括所述第一公钥和所述发送者身份的消息来至少将所述第一公钥绑定到所述发送者身份;
获得第一绑定是真实的指示包括获得密钥标识符并请求所述密码服务使用与所述密钥标识符相关联的密码密钥在所述消息上生成消息认证码(MAC)标签;
所述第二指示包括第二MAC标签;并且
所述验证所述第二绑定是真实的包括向所述密码服务提供所述第二MAC标签和所述第二绑定。
14.如权利要求10所述的计算机实现的方法,其中,
所述密码服务还包括以下限定中的至少一项:
信任所述密码服务来生成数字签名并验证数字签名的真实性,但不信任所述密码服务访问可以用于访问两个计算机系统之间的以密码方式保护的通信的数字密钥;
利用所述密码服务来在两个计算机系统之间建立信任关系,但不信任所述密码服务作为以密码方式保护的通信的一方。
15.一种上面存储有可执行指令的非暂时性计算机可读存储媒体,所述指令由于被计算机系统的一个或多个处理器执行而使所述计算机系统至少,
由发送者向密码服务提供至少包含发送者身份和第一公钥的消息;
响应于所述消息已被验证,由所述发送者从密码服务获得第一公钥和发送者身份之间的第一绑定是真实的指示;
作为握手协议的一部分,由所述发送者向客户端提供绑定到所述发送者身份的第一公钥以及第一绑定是真实的所述指示;
由所述发送者从所述客户端接收第二公钥;
至少使用所述第二公钥和与所述第一公钥相对应的私钥生成共享秘密,其中所述共享秘密对加密服务不可用;以及
利用所述共享秘密与所述客户端建立以密码方式保护的通信会话。
16.如权利要求15所述的非暂时性计算机可读存储媒体,其中:
所述第二公钥经由第二绑定而绑定到第二发送者身份和可由所述密码服务以密码方式验证的第二指示;并且
所述可执行指令还使所述计算机系统至少:
使用所述密码服务验证所述第二绑定是真实的;以及
响应于成功验证所述第二绑定是真实的,生成所述共享秘密。
17.如权利要求16所述的非暂时性计算机可读存储媒体,其中:
所述可执行指令还使所述计算机系统至少:
通过至少生成包括所述第一公钥和所述发送者身份的消息来将所述第一公钥绑定到所述发送者身份;以及
通过获得密钥标识符并请求所述密码服务使用与所述密钥标识符相关联的密码密钥在所述消息上生成消息认证码(MAC)标签,来获得第一绑定是真实的指示;
所述第二指示包括第二MAC标签;并且
所述验证所述第二绑定是真实的包括向所述密码服务提供所述第二MAC标签和所述第二绑定。
18.如权利要求16所述的非暂时性计算机可读存储媒体,其中:
所述可执行指令还包括使所述计算机系统至少:
将所述第一公钥绑定到所述发送者身份包括生成包括所述第一公钥和所述发送者身份的消息;以及
通过获得密钥标识符并请求所述密码服务使用与所述密钥标识符相关联的密码密钥对所述消息进行加密,来获得第一绑定是真实的指示;
所述第二指示包括密文;并且
用于验证所述第二绑定是真实的可执行指令还使所述计算机系统至少:
向所述密码服务提供所述密文以进行解密;
从所述密码服务接收与密文相对应的明文和第二密钥标识符;以及
确定所述第二密钥标识符与所述客户端相关联。
19.如权利要求18所述的非暂时性计算机可读存储媒体,其中:
所述消息还包括随机数;并且
用于验证所述第二绑定是真实的可执行指令还使所述计算机系统至少确定与所述密文相对应的所述明文包括所述随机数。
20.如权利要求18所述的非暂时性计算机可读存储媒体,其中加密请求为认证加密请求。
21.如权利要求15所述的非暂时性计算机可读存储媒体,其中所述第一公钥和所述私钥形成包括椭圆曲线公钥QA和对应的椭圆曲线私钥dA的椭圆曲线密钥对,并且所述第二公钥为椭圆曲线公钥QB,并且其中所述共享秘密是部分地基于计算dA和QB的椭圆曲线点乘算法而生成的。
22.如权利要求15所述的非暂时性计算机可读存储媒体,其中所述可执行指令还使所述计算机系统至少在建立所述以密码方式保护的通信会话之后获得数据,使用所述私钥在所述数据上生成数字签名,并且经由所述以密码方式保护的通信会话向所述客户端传输所述数据和所述数字签名。
23.如权利要求15所述的非暂时性计算机可读存储媒体,其中,
所述密码服务还包括以下限定中的至少一项:
信任所述密码服务来生成数字签名并验证数字签名的真实性,但不信任所述密码服务访问可以用于访问两个计算机系统之间的以密码方式保护的通信的数字密钥;
利用所述密码服务来在两个计算机系统之间建立信任关系,但不信任所述密码服务作为以密码方式保护的通信的一方。
CN201680072238.2A 2015-12-11 2016-12-06 通过部分可信的第三方进行的密钥交换 Active CN108476133B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110969835.8A CN113890727A (zh) 2015-12-11 2016-12-06 通过部分可信的第三方进行的密钥交换

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/967,214 2015-12-11
US14/967,214 US9705859B2 (en) 2015-12-11 2015-12-11 Key exchange through partially trusted third party
PCT/US2016/065207 WO2017100217A1 (en) 2015-12-11 2016-12-06 Key exchange through partially trusted third party

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202110969835.8A Division CN113890727A (zh) 2015-12-11 2016-12-06 通过部分可信的第三方进行的密钥交换

Publications (2)

Publication Number Publication Date
CN108476133A CN108476133A (zh) 2018-08-31
CN108476133B true CN108476133B (zh) 2021-09-03

Family

ID=57758700

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201680072238.2A Active CN108476133B (zh) 2015-12-11 2016-12-06 通过部分可信的第三方进行的密钥交换
CN202110969835.8A Pending CN113890727A (zh) 2015-12-11 2016-12-06 通过部分可信的第三方进行的密钥交换

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202110969835.8A Pending CN113890727A (zh) 2015-12-11 2016-12-06 通过部分可信的第三方进行的密钥交换

Country Status (7)

Country Link
US (2) US9705859B2 (zh)
EP (1) EP3387781A1 (zh)
JP (2) JP6625211B2 (zh)
CN (2) CN108476133B (zh)
CA (2) CA3169568A1 (zh)
SG (2) SG10201901366WA (zh)
WO (1) WO2017100217A1 (zh)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10205598B2 (en) * 2015-05-03 2019-02-12 Ronald Francis Sulpizio, JR. Temporal key generation and PKI gateway
US10419401B2 (en) 2016-01-08 2019-09-17 Capital One Services, Llc Methods and systems for securing data in the public cloud
US11343071B2 (en) * 2016-02-05 2022-05-24 Micro Focus Llc Extended ciphertexts
US9596079B1 (en) * 2016-04-14 2017-03-14 Wickr Inc. Secure telecommunications
CN106941487B (zh) * 2017-02-24 2021-01-05 创新先进技术有限公司 一种数据发送方法及装置
US10560263B2 (en) * 2017-03-24 2020-02-11 Micron Technology, Inc. Secure memory arrangements
KR20180119201A (ko) * 2017-04-24 2018-11-02 삼성전자주식회사 인증 시스템을 위한 전자 장치
US10644890B1 (en) 2017-06-29 2020-05-05 Salesforce.Com Language-agnostic secure application deployment
US10749689B1 (en) * 2017-06-29 2020-08-18 Salesforce.Com, Inc. Language-agnostic secure application development
US11163910B2 (en) * 2017-06-29 2021-11-02 Salesforce.Com, Inc. Methods and systems for data migration
US11082412B2 (en) 2017-07-12 2021-08-03 Wickr Inc. Sending secure communications using a local ephemeral key pool
US11316666B2 (en) * 2017-07-12 2022-04-26 Amazon Technologies, Inc. Generating ephemeral key pools for sending and receiving secure communications
WO2019096423A1 (en) * 2017-11-20 2019-05-23 Telefonaktiebolaget Lm Ericsson (Publ) Deployment of components of a distributed application to runtime environments
US10693892B2 (en) * 2017-12-11 2020-06-23 International Business Machines Corporation Network attack tainting and tracking
CN110120927B (zh) * 2018-02-05 2022-03-25 华为技术有限公司 私钥生成的方法和设备
US10909250B2 (en) * 2018-05-02 2021-02-02 Amazon Technologies, Inc. Key management and hardware security integration
EP3788765B1 (en) * 2018-05-03 2023-12-20 Nokia Technologies Oy Method and apparatus for network function messaging
US11258772B2 (en) * 2018-06-19 2022-02-22 Cypress Semiconductor Corporation Secured communication from within non-volatile memory device
GB201815396D0 (en) * 2018-09-21 2018-11-07 Nchain Holdings Ltd Computer implemented system and method
EP3857812A4 (en) * 2018-09-24 2021-09-15 Visa International Service Association KEY MANAGEMENT FOR MULTI-STAKEHOLDER CALCULATIONS
CN109450623A (zh) * 2018-10-16 2019-03-08 如般量子科技有限公司 基于非对称密钥池的抗量子计算密钥协商方法
US11190352B2 (en) * 2018-11-27 2021-11-30 Microsoft Technology Licensing, Llc Key pair generation based on environmental factors
WO2020219136A2 (en) * 2019-01-28 2020-10-29 Knectiq Inc. System and method for secure electronic data transfer
US11157371B2 (en) * 2019-01-29 2021-10-26 Sap Se Small database page recovery
AU2019204724C1 (en) * 2019-03-29 2021-12-09 Advanced New Technologies Co., Ltd. Cryptography chip with identity verification
EP3726810B1 (en) * 2019-04-16 2023-12-06 ABB Schweiz AG System and method for interoperable communication of automation system components
US20200403978A1 (en) * 2019-06-19 2020-12-24 Amazon Technologies, Inc. Hybrid key exchanges for double-hulled encryption
CN110572257B (zh) * 2019-07-16 2023-04-14 如般量子科技有限公司 基于身份的数据来源鉴别方法和系统
US20210056053A1 (en) * 2019-08-19 2021-02-25 Cryptography Research, Inc. Application authentication and data encryption without stored pre-shared keys
US11126752B2 (en) * 2019-09-04 2021-09-21 Fresenius Medical Care Holdings, Inc. Authentication of medical device computing systems by using metadata signature
KR20220086580A (ko) 2019-09-24 2022-06-23 매직 랩스, 인크. 분산형 컴퓨터 애플리케이션들을 구축하기 위한 비-보관 툴
FR3101500B1 (fr) * 2019-09-30 2021-11-05 St Microelectronics Sa Procédé de cryptage
US11258580B2 (en) * 2019-10-04 2022-02-22 Red Hat, Inc. Instantaneous key invalidation in response to a detected eavesdropper
CN112787987B (zh) * 2019-11-11 2022-08-30 丁爱民 一种路径加密方法、装置和系统
US11640475B1 (en) * 2019-11-26 2023-05-02 Gobeep, Inc. Systems and processes for providing secure client controlled and managed exchange of data between parties
CN111130778B (zh) * 2019-12-31 2022-03-11 郑州信大捷安信息技术股份有限公司 一种基于硬件的安全恢复加密数据的方法及系统
CN111416706B (zh) * 2020-03-03 2022-12-30 南京如般量子科技有限公司 基于秘密共享的量子保密通信系统及其通信方法
WO2021211314A1 (en) * 2020-04-15 2021-10-21 Google Llc Three-party cryptographic handshake protocol
US11233636B1 (en) * 2020-07-24 2022-01-25 Salesforce.Com, Inc. Authentication using key agreement
KR20220052016A (ko) 2020-10-20 2022-04-27 삼성전자주식회사 스토리지 장치에서의 보안 동작을 위한 키 교환 방법 및 이를 이용한 접근 권한 이관 방법
CN112637177B (zh) * 2020-12-17 2022-09-27 赛尔网络有限公司 数据加密传输方法、装置、设备及介质
JP2024500489A (ja) * 2020-12-24 2024-01-09 ホアウェイ・テクノロジーズ・カンパニー・リミテッド セキュアアクセス方法および装置
US11799643B2 (en) * 2021-01-19 2023-10-24 Bank Of America Corporation Collaborative architecture for secure data sharing
CN115001723A (zh) * 2021-02-20 2022-09-02 南京如般量子科技有限公司 基于树结构和非对称密钥池的群组通信方法及系统
CN112966254B (zh) * 2021-02-27 2022-04-05 郑州信大捷安信息技术股份有限公司 用于主机与可信密码模块的安全通信方法及系统
DE102022104902A1 (de) * 2021-03-03 2022-09-08 Micron Technology, Inc. Online-sicherheitsdienste auf der grundlage von in speichervorrichtungen implementierten sicherheitsmerkmalen
US11968296B2 (en) * 2021-03-09 2024-04-23 Micron Technology, Inc. Utilization of a memory device for per-user encryption
CN113079137B (zh) * 2021-03-22 2022-05-27 华控清交信息科技(北京)有限公司 多方隐私求交方法和隐私数据处理系统
CN112966287B (zh) * 2021-03-30 2022-12-13 中国建设银行股份有限公司 获取用户数据的方法、系统、设备和计算机可读介质
CN113422757B (zh) * 2021-06-04 2023-04-07 广西电网有限责任公司 一种基于加密应用的文档管理系统
CN113992702B (zh) * 2021-09-16 2023-11-03 深圳市证通电子股份有限公司 一种ceph分布式文件系统存储国密加固方法及系统
CN113852632B (zh) * 2021-09-24 2023-10-20 北京明朝万达科技股份有限公司 基于sm9算法的车辆身份认证方法、系统、装置及存储介质
CN113971274B (zh) * 2021-12-02 2022-12-27 国家石油天然气管网集团有限公司 一种身份识别方法及装置
CN114205171A (zh) * 2021-12-21 2022-03-18 安徽安联云服务有限公司 一种物联网paas平台系统
CN114745192A (zh) * 2022-04-24 2022-07-12 深圳市乐凡信息科技有限公司 通讯方法、系统、设备及介质
CN115021994A (zh) * 2022-05-26 2022-09-06 深圳Tcl新技术有限公司 身份认证方法、装置、电子设备及计算机可读存储介质
CN115086015A (zh) * 2022-06-10 2022-09-20 深圳市东进技术股份有限公司 基于OAuth认证的云密码服务平台及密码资源分配方法
CN115001865B (zh) * 2022-07-28 2022-12-02 杭州安司源科技有限公司 通信处理方法及系统、客户端、通信服务端和监管服务端

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6931528B1 (en) * 1997-11-10 2005-08-16 Nokia Networks Oy Secure handshake protocol
CN101150849A (zh) * 2006-09-18 2008-03-26 华为技术有限公司 生成绑定管理密钥的方法、系统、移动节点及通信节点
US8996873B1 (en) * 2014-04-08 2015-03-31 Cloudflare, Inc. Secure session capability using public-key cryptography without access to the private key
CN105141568A (zh) * 2014-05-28 2015-12-09 腾讯科技(深圳)有限公司 安全通信通道建立方法及系统、客户端和服务器

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5271061A (en) 1991-09-17 1993-12-14 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
US5511121A (en) * 1994-02-23 1996-04-23 Bell Communications Research, Inc. Efficient electronic money
EP0693836A1 (en) * 1994-06-10 1996-01-24 Sun Microsystems, Inc. Method and apparatus for a key-management scheme for internet protocols.
US7181014B1 (en) * 1999-09-10 2007-02-20 Cisco Technology, Inc. Processing method for key exchange among broadcast or multicast groups that provides a more efficient substitute for Diffie-Hellman key exchange
US6775772B1 (en) * 1999-10-12 2004-08-10 International Business Machines Corporation Piggy-backed key exchange protocol for providing secure low-overhead browser connections from a client to a server using a trusted third party
US20020087862A1 (en) * 2000-01-07 2002-07-04 Sandeep Jain Trusted intermediary
GB0001026D0 (en) * 2000-01-18 2000-03-08 Hewlett Packard Co Configurable connectivity unit and method and system for configuring such a unit
FI20002255A (fi) * 2000-10-13 2002-04-14 Nokia Corp Menetelmä lukkojen hallintaan ja kontrollointiin
US20030021417A1 (en) * 2000-10-20 2003-01-30 Ognjen Vasic Hidden link dynamic key manager for use in computer systems with database structure for storage of encrypted data and method for storage and retrieval of encrypted data
JP2004532590A (ja) * 2001-06-12 2004-10-21 リサーチ イン モーション リミテッド 証明書の管理および送信のシステムおよび方法
US7146500B2 (en) * 2001-11-14 2006-12-05 Compass Technology Management, Inc. System for obtaining signatures on a single authoritative copy of an electronic record
NO318842B1 (no) 2002-03-18 2005-05-09 Telenor Asa Autentisering og tilgangskontroll
CA2479619C (en) * 2002-03-20 2008-05-20 Research In Motion Limited Certificate information storage system and method
WO2004021638A1 (en) 2002-08-28 2004-03-11 Docomo Communications Laboratories Usa, Inc. Certificate-based encryption and public key infrastructure
US7284127B2 (en) * 2002-10-24 2007-10-16 Telefonktiebolaget Lm Ericsson (Publ) Secure communications
US7444509B2 (en) * 2004-05-27 2008-10-28 International Business Machines Corporation Method and system for certification path processing
US20150012339A1 (en) * 2004-06-01 2015-01-08 Daniel W. Onischuk Computerized voting system
EP1851902A1 (en) * 2005-02-25 2007-11-07 QUALCOMM Incorporated Small public-key based digital signatures for authentication
CN100574325C (zh) * 2006-12-26 2009-12-23 北京大学 一种Web通信加密方法
US8527771B2 (en) * 2007-10-18 2013-09-03 Sony Corporation Wireless video communication
CN101436930A (zh) * 2007-11-16 2009-05-20 华为技术有限公司 一种密钥分发的方法、系统和设备
US20110055585A1 (en) * 2008-07-25 2011-03-03 Kok-Wah Lee Methods and Systems to Create Big Memorizable Secrets and Their Applications in Information Engineering
US20100199095A1 (en) * 2009-01-30 2010-08-05 Texas Instruments Inc. Password-Authenticated Association Based on Public Key Scrambling
JP5452099B2 (ja) 2009-07-01 2014-03-26 株式会社日立製作所 証明書の有効性確認方法、証明書検証サーバ、プログラム及び記憶媒体
EP2442484A1 (en) 2010-10-15 2012-04-18 Certicom Corp. Authenticated encryption for digital signatures with message recovery
US9420458B2 (en) * 2010-12-13 2016-08-16 Volkswagen Ag Method for the use of a mobile appliance using a motor vehicle
KR20130006258A (ko) * 2011-07-08 2013-01-16 주식회사 케이티 동적 키 생성 기반의 내장 sim의 mno 변경방법 및 그를 위한 내장 sim과 기록매체
US8750512B2 (en) * 2011-10-28 2014-06-10 Aruba Networks, Inc. Authenticating an ephemeral Diffie-Hellman using a trusted third party
US9887838B2 (en) * 2011-12-15 2018-02-06 Intel Corporation Method and device for secure communications over a network using a hardware security engine
US8971528B2 (en) 2013-01-29 2015-03-03 Certicom Corp. Modified elliptic curve signature algorithm for message recovery
MY166590A (en) * 2013-06-05 2018-07-17 Mimos Berhad Non-repudiable log entries for file retrievel with semi-trusted server
US9589143B2 (en) * 2014-04-17 2017-03-07 Xerox Corporation Semi-trusted Data-as-a-Service platform
JP2017521934A (ja) * 2014-06-27 2017-08-03 ジェラード リンGerard Lin クライアントとサーバとの間の相互検証の方法
US9787478B2 (en) * 2015-06-10 2017-10-10 Qualcomm Incorporated Service provider certificate management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6931528B1 (en) * 1997-11-10 2005-08-16 Nokia Networks Oy Secure handshake protocol
CN101150849A (zh) * 2006-09-18 2008-03-26 华为技术有限公司 生成绑定管理密钥的方法、系统、移动节点及通信节点
US8996873B1 (en) * 2014-04-08 2015-03-31 Cloudflare, Inc. Secure session capability using public-key cryptography without access to the private key
CN105141568A (zh) * 2014-05-28 2015-12-09 腾讯科技(深圳)有限公司 安全通信通道建立方法及系统、客户端和服务器

Also Published As

Publication number Publication date
CA3005915A1 (en) 2017-06-15
US20170310652A1 (en) 2017-10-26
CA3005915C (en) 2022-10-18
CN108476133A (zh) 2018-08-31
US10447674B2 (en) 2019-10-15
JP2020058042A (ja) 2020-04-09
WO2017100217A1 (en) 2017-06-15
CN113890727A (zh) 2022-01-04
SG11201803388YA (en) 2018-06-28
JP6625211B2 (ja) 2019-12-25
SG10201901366WA (en) 2019-03-28
US20170171174A1 (en) 2017-06-15
EP3387781A1 (en) 2018-10-17
US9705859B2 (en) 2017-07-11
JP7215684B2 (ja) 2023-01-31
JP2019502286A (ja) 2019-01-24
CA3169568A1 (en) 2017-06-15

Similar Documents

Publication Publication Date Title
CN108476133B (zh) 通过部分可信的第三方进行的密钥交换
US11089032B2 (en) Signed envelope encryption
US10454689B1 (en) Digital certificate management
US9912486B1 (en) Countersigned certificates
US10122692B2 (en) Handshake offload
CN110326267B (zh) 具有替代数字证书的网络安全系统、方法及存储介质
EP3611873B1 (en) Data security using request-supplied keys
US10142111B2 (en) Binding digitally signed requests to sessions
US9888037B1 (en) Cipher suite negotiation
US10979403B1 (en) Cryptographic configuration enforcement
US11729002B2 (en) Code signing method and system
US20170331822A1 (en) Enhanced authentication for secure communications
US10693638B1 (en) Protected cryptographic environment
US10122689B2 (en) Load balancing with handshake offload
US11184337B2 (en) System and method for encryption, storage and transmission of digital information
US10298404B1 (en) Certificate echoing for session security
US11190504B1 (en) Certificate-based service authorization
US10963593B1 (en) Secure data storage using multiple factors
US20190296917A1 (en) Dynamic response signing capability in a distributed system
KR101987579B1 (ko) 웹 메일과 otp 및 디피 헬만 키교환을 이용한 보안메일의 송수신 방법 및 시스템
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
GR01 Patent grant
GR01 Patent grant