CN110771089A - 提供前向保密性的安全通信 - Google Patents

提供前向保密性的安全通信 Download PDF

Info

Publication number
CN110771089A
CN110771089A CN201880041699.2A CN201880041699A CN110771089A CN 110771089 A CN110771089 A CN 110771089A CN 201880041699 A CN201880041699 A CN 201880041699A CN 110771089 A CN110771089 A CN 110771089A
Authority
CN
China
Prior art keywords
computer
public key
server
client
signature
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
CN201880041699.2A
Other languages
English (en)
Inventor
E·勒圣
P·莫哈塞尔
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.)
Visa International Service Association
Original Assignee
Visa International Service Association
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 Visa International Service Association filed Critical Visa International Service Association
Publication of CN110771089A publication Critical patent/CN110771089A/zh
Pending legal-status Critical Current

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/3247Cryptographic 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 digital signatures
    • 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
    • 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/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • 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/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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • 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/3247Cryptographic 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 digital signatures
    • H04L9/3257Cryptographic 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 digital signatures using blind signatures
    • 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
    • H04L9/3265Cryptographic 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 using certificate chains, trees or paths; Hierarchical trust model
    • 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
    • H04L9/3268Cryptographic 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 using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
    • 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/3271Cryptographic 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 using challenge-response
    • H04L9/3273Cryptographic 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 using challenge-response for mutual authentication

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明的实施方案可以使用来自第一计算机的单个不可追踪的请求消息和来自第二计算机的单个不可追踪的响应消息来建立安全通信。不可追踪性可以通过使用盲化因子来提供。所述请求消息和响应消息还可以包含提供不可否认性的签名。另外,对所述请求消息和所述响应消息的加密不是基于用于对所述签名进行验证的静态密钥对。这样,可以保持完美的前向保密性。

Description

提供前向保密性的安全通信
背景技术
本专利申请是2017年6月21日提交的美国申请No.15/629,689的国际申请,出于所有目的将其全部内容结合在此作为参考。
确保数据在计算机之间安全传送仍然是值得关心的问题。例如,攻击者可以拦截通信(例如,通过进行中间人攻击),并基于未加密交换的公钥或其他数据来推断客户端计算机或服务器计算机的身份。被拦截的数据可用于跟踪计算机或用于非法目的。但是,在仍然允许计算机进行认证的同时阻止计算机的身份被跟踪可能会带来问题,因为认证可能取决于计算机标识自己的身份。另外,执行通信的计算机上的加密密钥以后可能会遭到泄漏,从而使攻击者能够解密先前拦截的通信。在确保过去通信的安全性的同时,进行安全、不可追溯和可验证的通信可能会带来挑战。
本发明的实施方案单独地和共同地解决了这些和其他问题。
发明内容
本发明的实施方案涉及用于安全通信的***和方法。本发明的实施方案可以使用来自第一计算机的单个不可追踪的请求消息和来自第二计算机的单个不可追踪的响应消息来建立安全通信。不可追踪性可以通过使用盲化因子来提供。请求消息和响应消息还可以包含提供不可否认性的签名。另外,对请求消息和响应消息的加密不是基于用于对签名进行验证的静态密钥对。这样,可以保持完美的前向保密性。
其他实施方案涉及与本文所述方法相关的***、便携式消费设备和计算机可读介质。
参照以下详细描述和附图,可以获得对本发明的实施方案的本质和优点的更好理解。
附图说明
图1示出了根据一些实施方案的客户端计算机和服务器计算机之间的安全通信的简化消息流图。
图2示出了根据一些实施方案的使用不可追踪的消息来建立安全通信的客户端计算机和服务器计算机的消息流图。
图3示出了根据一些实施方案的客户端计算机使用不可追踪的消息来从服务器计算机安全地获得证书的消息流图。
图4示出了根据一些实施方案的客户端计算机和服务器计算机建立具有完美前向保密性的安全且不可追踪的通信的消息流图。
图5示出了根据一些实施方案的客户端计算机和服务器计算机使用具有客户端和服务器不可否认性的消息来建立具有完美前向保密性的安全且不可追踪的通信的消息流图。
图6示出了根据一些实施方案的客户端计算机和服务器计算机使用加密签名部分和未加密签名部分来提供不可否认性,以建立安全且不可追踪的通信的消息流图。
图7示出了根据一些实施方案的用于请求和建立安全通信的方法的流程图。
图8示出了根据一些实施方案的用于响应建立安全通信的请求的方法的流程图。
图9示出了根据一些实施方案的在计算机实现的方法中建立具有完美前向保密性的安全且不可追踪的通信的步骤表。
图10示出了根据一些实施方案的计算机实现的方法中的步骤表,该方法用于在客户端计算机和服务器计算机之间建立具有完美前向保密性的安全且不可追踪的通信,使得客户端计算机和服务器计算机不能否认它们的消息。
图11示出了根据一些实施方案的,用于执行计算机实现的方法以使用加密的签名部分和未加密的签名部分来建立具有完美前向保密性的安全且不可追踪的通信的步骤表。
在附图中,虚线可用于表示组织结构,表示元素是可选的,或表示数据或信息基本不变地经过某一元素传递。箭头可用于表示两个或多个元素之间的数据或信息流。具有附图标记的圆圈可以表示某些步骤由相邻元素执行。
术语
在讨论本发明的一些实施方案之前,对一些术语的描述可能有助于理解实施方案。
术语“服务器计算机”可能包括计算机或计算设备集群。举例来说,服务器计算机可以是大型主机、小型计算机集群或像单元一样工作的一组服务器。在一个实例中,服务器计算机可以是耦合到网络服务器的数据库服务器。服务器计算机可耦合到数据库,且可包含用于服务来自一个或多个客户端计算机的请求的任何硬件、软件、其他逻辑或前述内容的组合。服务器计算机可包括一个或多个计算设备,且可使用各种计算结构、布置和编译中的任一种来服务来自一个或多个客户端计算机的请求。
术语“公钥/私钥对”可以包括由实体(例如,计算机或电子设备)生成的一对关联密码密钥。公钥可以用于公共功能,诸如加密要发送给实体的消息,或用于对应该由实体做出的数字签名进行验证。另一方面,私钥可以用于私用功能,诸如对接收到的消息解密或应用数字签名。公钥通常会由被称为证书机构(CA)的主体进行授权,证书机构将公钥存储在数据库中并将其分配给请求它的任何其他实体。私钥一般会被保持在安全存储介质中并且通常只有实体知道。然而,本文中描述的密码***可以以用于恢复丢失的密钥并避免数据丢失的密钥恢复机制为特征。公钥和私钥可以是任何适当格式,包括基于RSA或椭圆曲线密码学(ECC)的格式。
“数字签名”可以指基于公/私钥对应用算法的结果,这种算法允许签名方显示,并且允许验证方验证文件的真实性和完整性。签名方借助于私钥起作用,验证方借助于公钥起作用。这个过程证明发送方的真实性、已签名文档的完整性和所称的不可否认性原则,所述原则不允许否认已经签名的内容。证书或包括签名方的数字签名的其他数据被称为是由签名方“签名的”。
“证书”或“数字证书”可以包括使用数字签名将公钥与关联身份的数据绑定的电子文件或数据文件。证书可以包括一个或多个数据字段,例如身份的合法名称、证书的序列号、证书的起始有效期和终止有效期、证书相关许可等。证书可以包含指示证书有效的第一个日期的“起始有效”日期,以及指示证书有效的最后日期的“终止有效”日期。证书还可以包含证书中包括数据字段的数据的散列。除非另外说明,每个证书都由证书机构签名。
“证书机构”(CA)可以包括可操作耦连以向实体发行证书的一个或多个服务器计算机。CA可以使用CA证书证明其身份,CA证书包括CA的公钥。可以用另一个CA的私钥或者可以用同一个CA的私钥对CA证书签名。后者被称为自签名证书。CA可以维护由CA发行的所有证书的数据库,并且还可以维护被撤销的证书的列表。
在一个典型过程中,证书机构从其身份已知的实体接收未签名的证书。未签名的证书包括公钥、一个或多个数据字段、以及证书中的数据的散列。CA用与CA证书上所包括的公钥相对应的私钥对证书进行签名。CA然后可以将签名的证书存储在数据库中,并将签名的证书发行给实体。
“密码随机数”可以包括任何数字、字符串、位序列、或旨在关联单个通信会话使用的其他数据值。在一些情况下,密码随机数可以是随机或伪随机生成的。通常,密码随机数具有足够的长度以使多次独立生成同一随机数值的可能性并不显著。
“盲化密钥(blinded key)”,诸如“盲化公钥”可以包括通过与另一数据元素(如密码随机数)结合而被模糊化或以其他方式修改了其原始值的密钥。例如,在椭圆曲线密码学中,公钥可以乘以随机数从而生成“盲化公钥”。类似地,私钥可以乘以随机数从而生成“盲化私钥”。随机数可以与公钥和私钥具有相同的位长度。
“临时密钥对”可以包括为单次交易或其他通信会话使用而生成的公钥(即“临时公钥”)和私钥(即“临时私钥”)。临时密钥对可以是任何适当格式,诸如ECC或RSA。通常,一旦交易或通信会话已经结束,就可以删除临时密钥对。
“静态密钥对”可以包括在一段时间内被维护的公钥(即“静态公钥”)和私钥(即“静态私钥”)。通常但不一定,静态私钥可以被安全地存储在诸如硬件安全模块(HSM)或安全元件(SE)中。通常但不一定,静态公钥可以通过使用数字证书绑定到身份。静态密钥对可以是任何适当格式,诸如ECC或RSA。
“共享秘密”可以包括只对安全通信中的被授权方已知的任何数据值或其他信息。共享秘密可以以任何适当方式由任何适当数据生成。例如,可以使用基于Diffie-Hellman的算法(诸如椭圆曲线Diffie-Hellman(ECDH)),以由私钥和公钥生成共享秘密。例如,第一计算机可以生成包括第一公钥和第一私钥的第一密钥对。第二计算机可以生成包括第二公钥和第二私钥的第二密钥对。第一计算机可以使用第二计算机的第二公钥和第一计算机的第一私钥来生成共享秘密。第二计算机可以使用第一计算机的第一公钥和第二计算机的第二私钥来生成相同的共享秘密。第一计算机和第二计算机都可以使用共享秘密来生成会话密钥。
术语“识别数据”可以包括与用户或装置关联的任何数据或信息。识别数据的实例可以包括与装置关联的用户的姓名,与装置关联的组织,与装置关联的支付信息,诸如主账号(PAN),装置的到期日期,与装置关联的证书,装置的IMEI或序列号,等等。
术语“认证”一般是指对用户或计算机的身份建立信任的过程。认证可以通过将公钥密码***(例如,加密数据或数字签名)用于认证信息来确认装置的身份而执行的。
术语“认证数据”或“认证信息”可以包括适于认证用户或装置的任何数据或信息。认证数据的实例可以包括口令或口令短语、秘密密钥(例如,私钥)、数字签名、装置存储某些信息的指示等。
“加密密钥”可以包括适于用密码加密数据的任何数据值或其他信息。“解密密钥”可以包括适于对加密数据进行解密的任何数据值或其他信息。在一些情况下,用于加密数据的同一密钥可以可操作以解密数据。这种密钥可以被称作对称加密密钥。
“会话密钥”可以包括用来加密或解密待被安全传送的数据的任何密钥。在一些情况下,会话密钥可以从发送实体和接收实体都知道的共享秘密生成。例如,会话密钥可以使用密钥导出函数和共享秘密来导出。
“不可追踪性”是安全通信的一种特征,它是指通信消息***露有关发送者身份的信息从而无法通过消息追溯到发送者的能力。例如,在某些安全通信中,在Diffie-Hellman密钥交换期间,将第一计算机的静态公钥以明文形式(例如未加密)发送到第二计算机。第一计算机的公钥可能是静态的,因为它对应于存储在其上的,由证书颁发机构签名的证书。这样,可以基于在Diffie-Hellman密钥交换期间发送的未加密公钥,通过拦截其通信来识别和跟踪第一计算机。在另一种情况下,可能不加密地发送签名,并且第三方可能会拦截签名,并尝试使用多个不同的公钥来验证该签名以识别和跟踪该签名的签名者。为了防止跟踪,计算机可以生成在密钥交换期间使用的临时密钥对,然后在建立共享秘密后将其删除。防止跟踪的另一种方法是使用密码随机数(例如,随机生成的数字)来“盲化”公钥。
“不可否认性”是安全通信的一种特征,它是指通信消息的防止消息的发送者否认它们发送该消息的能力。提供“不可否认性”的安全通信协议可能会阻止计算机否认消息是它们使用公钥密码发送的。另外,“不可否认性”提供了对发送者的“认证”,因为接收者可以验证只有发送者可能会发送消息。在一个示例中,加密的消息可以包括使用第一计算机的静态私钥创建的签名。静态私钥可以对应于包括在由证书颁发机构签名的第一计算机的证书中的静态公钥。在此示例中,私钥仅由第一计算机知道,并且由于公钥密码的特征,另一计算机确定该私钥在计算上是不切实际的。因此,如果第一计算机的公钥可以验证签名,则第一计算机不可以否认第一消息,因为没有其他设备可以访问其私钥来创建签名。与签名相反,仅凭对消息的加密可能不会提供该消息的不可否认性,因为可能没有一种可证明的方法来验证哪个设备生成了该消息。
“前向保密性”是安全通信的一种特征,它是指消息的发送者和/或接收者的私钥在以后遭到泄漏时,消息不被解密的能力。“完美前向保密性”是安全通信的一种特征,它是指如果消息的发送者和接收者双方的私钥后来都遭到泄漏,消息不被解密的能力。在一种情况下,私钥可能会由获得对计算机的物理访问权的第三方获得。在另一种情况下,第三计算机可能公花费足够长的时间来破解私钥,这是不切实际的,但并非不可能。但是,即使“发送”和“接收”计算机的静态私钥均被泄漏,也无法解密具有“完美前向保密性”的安全通信。实现“完美前向保密性”的一种方法是不使用静态私钥来对消息进行加密。因此,如果静态私钥遭到泄漏,则不能将其用于对消息进行解密。在一个示例中,可以随机地生成加密密钥对以用于密钥交换,然后不久之后将其删除(例如,归零)。因此,如果第三方以后获得了对计算机的物理访问权,则无法获得私钥。因此,过去发送的通信继续保持其保密性。此外,即使一条消息遭到泄漏,其他消息也不会遭到泄漏,因为没有用于跨不同消息进行加密的单个密钥。
具体实施方式
本文描述了安全通信方法和***。在一个实施方案中,第一计算机和第二计算机可能会通过不安全的网络(例如,因特网)进行通信。为了交换安全通信,第一计算机和第二计算机可以共享用于加密通信的秘密对称密钥。为了防止第三方获得秘密对称密钥,两台计算机可以交换公钥,然后使用它们自己的私钥和从其他设备接收到的公钥分别生成相同的秘密对称密钥。但是,如果静态公钥未经加密通过网络发送,则这可能会使第三方能确定其中一台计算机的身份或最终确定共享对称密钥。
可以使用临时密钥对或盲化的公钥来提供不可追踪性。但是,由于隐藏了发送者的身份以提供不可追踪性,因此,一种后果可能是发送者可能会否认自己发送了消息。为了防止发送者否认它们发送的消息,消息可以包含使用发送者的静态公钥创建的签名。这样,不可追踪的密钥可用于加密,而可追踪的密钥可用于生成签名。另外,新的和不同的公钥可以在每次密钥交换中使用,并在建立共享秘密后立即或不久将其删除。另外,尽管可以使用可追踪的签名,但是它们可以被包括在消息的加密部分中,使得它们不能被用来追踪消息的发送者或接收者。因此,可以建立具有“不可追踪性”、“不可否认性”和“完美前向保密性”的安全通信。下面进一步详细描述用于建立这种通信的方法和***。
I.使用加密密钥来保护通信
Diffie-Hellman密钥交换可以使得第一计算机和第二计算机能够在不安全的网络上建立秘密对称密钥,而无需传输秘密对称密钥本身。Diffie-Hellman密钥交换可以不基于在密钥交换之前的存储在第一或第二计算机处的任何先前信息。例如,基于Diffie-Hellman的算法(诸如,椭圆曲线Diffie-Hellman(ECDH))可以用来从第一计算机的私钥和第二计算机的公钥中生成共享秘密。例如,第一计算机可以生成包括第一公钥和第一私钥的第一密钥对。第二计算机可以生成包括第二公钥和第二私钥的第二密钥对。第一计算机可以将其第一公钥发送给第二计算机,并且第二计算机可以将其第二公钥发送给第一计算机。第一计算机可以使用第二计算机的第二公钥和第一计算机的第一私钥来生成共享秘密。第二计算机可以使用第一计算机的第一公钥和第二计算机的第二私钥来生成相同的共享秘密。第一计算机和第二计算机都可以使用共享秘密来生成会话密钥,以用于加密通信。如此,第一计算机和第二计算机可以在不安全的网络上建立安全通信,而无需使用任何预先安装的信息。
图1示出了根据一些实施方案的客户端计算机140和服务器计算机180之间的安全通信的简化消息流图100。消息流图100可以用在任何第一计算机和任何第二计算机之间。本文使用的客户端/服务器区别仅是示例性的,并且是为了提高可读性。在一些实施方案中,客户端计算机140可以执行被描述为由服务器计算机180执行的操作。在一些实施方案中,服务器计算机180可以执行被描述为由客户端计算机140执行的操作。
参考图1,客户端计算机140可以存储客户端密钥对,所述客户端密钥对包括客户端公钥和与客户端公钥对应的客户端私钥。客户端密钥对可以是静态的。服务器计算机180可以存储服务器密钥对,所述服务器密钥对包括服务器公钥和与服务器公钥对应的服务器私钥。服务器密钥对可以是静态的。客户端计算机140和服务器计算机180可以在不安全的网络160(例如,互联网或无线局域网)上通信。不安全的网络160之所以可能是“不安全的”,因为通信介质本身不是物理上安全的,或者它是“不安全的”,因为通信不直接在两方之间进行,而是通过网络中的其他第三方进行。
客户端计算机140和服务器计算机180可以执行密钥交换,以便在不安全的网络160上建立安全通信。例如,客户端计算机140和服务器计算机180可以执行如上所述的Diffie-Hellman密钥交换,以在客户端计算机140和服务器计算机180之间建立共享秘密。客户端计算机140和服务器计算机180可以各自从共享秘密中导出会话密钥,以用于对彼此之间的通信进行加密和解密。
在101,客户端计算机140可以将请求消息发送到服务器计算机180,以启动安全通信的建立。在一些实施方案中,请求消息可以包括识别数据。客户端计算机140可以使用共享秘密对响应消息的识别数据进行加密,以获取加密识别数据。客户端计算机140可以通过不安全网络160将包括加密的标识数据的请求消息发送到服务器计算机180。
服务器计算机180可以通过不安全网络160从客户端计算机140接收请求消息。服务器计算机180可以使用共享秘密(例如,使用从共享秘密中导出的会话密钥)对请求消息的加密的识别数据进行解密。服务器计算机180也可以基于存储在服务器计算机180处的数据来验证识别数据。然后,服务器计算机180可以使用共享秘密对客户端计算机140的有效载荷数据进行加密,以获取加密的有效载荷数据。在一些实施方案中,服务器计算机180可以生成第二共享秘密以用于加密服务器计算机的有效载荷数据。
在102,服务器计算机180可以将包括加密的有效载荷数据的响应消息发送到客户端计算机140。响应于验证从客户端计算机140接收的识别数据,服务器计算机180可以将响应数据传输到客户端计算机140。客户端计算机140可以接收响应消息,并使用会话密钥对加密的有效载荷数据进行解密,以从服务器计算机180获得有效载荷数据。这样,客户端计算机140和服务器计算机180可以通过执行Diffie-Hellman密钥交换来在不安全的网络160上建立安全的通信。
但是,以上参照图1描述的密钥交换可能涉及第一计算机(例如,客户端计算机140)将其自己的第一公钥发送到第二计算机(例如,服务器计算机180),以及第二计算机将其自己的第二公钥发送到第一计算机。这样,正在窃听的计算机可以拦截消息以基于第一公钥来跟踪第一计算机的身份并基于第二公钥来跟踪第二计算机的身份。此外,窃听计算机可以执行中间人攻击或者模仿第一计算机或第二计算机。下文描述的实施方案中的一些解决了这些问题。
II.安全且不可追踪的通信
如上所述,公钥交换(例如Diffie-Hellman密钥交换)可以包括以明文形式(例如未加密)发送静态公钥。如果没有其他方法可确保两台计算机之间的安全通信,则无法对公钥本身进行加密。但是,第三方计算机可能会拦截通信(例如,因为它们是通过不安全的网络(例如因特网)发送的),并基于它们的静态公钥来识别这两台计算机。这可以使第三方能够追踪计算机。
A.用于建立安全且不可追踪的通信的方法
消息的可追踪性是一个问题,因为它使第三方计算机能够跟踪某些计算机,从而违反了通信的机密性以及计算机及其用户的隐私。为了解决可追踪性问题,客户端计算机可以生成与其静态密钥对不同的临时密钥对,并在密钥交换中使用临时公钥。建立共享秘密后,客户端计算机可以删除此临时密钥对,并在建立后续安全通信通道时生成新的临时密钥对。这样,以明文方式交换临时公钥不会使进行拦截的第三方能够跟踪客户端计算机,因为该特定临时公钥仅由客户端在该单个通信会话中使用。
图2示出了根据一些实施方案的使用不可追踪的消息来建立安全通信的客户端计算机240和服务器计算机280的消息流图200。在图2的消息流之前,客户端计算机240可以存储客户端有效载荷252和服务器计算机280的服务器证书288。客户端计算机240可以例如使用下面参考图3描述的消息流来获得服务器计算机的证书288。
服务器计算机280可以存储服务器静态密钥对286,其中包括服务器静态私钥282和服务器静态公钥284。服务器计算机280还可以存储服务器证书288。服务器证书288可以包括服务器静态公钥284和用于认证服务器计算机288的证书颁发机构的签名。服务器静态私钥282和服务器静态公钥284可以是“静态的”,因为它们不会随时间变化,从而可以使用服务器证书288对服务器计算机288进行认证。服务器计算机280还可以存储服务器有效载荷数据292。服务器有效载荷数据292可以被视为敏感数据,从而就不会未经加密地以明文形式来传输它。
在此消息流中,客户端计算机240可以启动安全通信的建立。在201,客户端计算机240可以生成客户端临时私钥。客户端临时私钥可以随机地生成。
在202,客户端计算机240可以使用客户端临时私钥来确定客户端临时公钥。客户端临时私钥和客户端临时公钥可以形成用于公钥密码的密钥对。
在203,客户端计算机240可以使用客户端临时私钥和服务器静态公钥284(它们可以包含在服务器证书288中)来确定第一共享秘密。客户端计算机240可以基于共享秘密,服务器计算机280的标识符以及通信会话的标识符,使用密钥导出函数来确定第一会话密钥。
在204,客户端计算机240可以使用第一共享秘密(例如,使用第一会话密钥)来对客户端有效载荷252进行加密,以确定客户端加密的数据。客户端有效载荷252可以包括敏感客户端数据和/或来自服务器计算机280的对某些数据或信息的请求。在对客户端有效载荷252进行加密之后,客户端计算机240可以将第一共享秘密和第一会话密钥归零(例如,完全删除以防止任何恢复)。
在205,客户端计算机240可以将包括客户端临时公钥和客户端加密数据在内的“请求消息”发送到服务器计算机280。客户端临时公钥可以以明文形式发送(例如,未加密)。请求消息可以指出,客户端计算机240请求基于客户端盲化公钥,使用共享秘密来建立安全通信。请求消息可能会在不安全的网络上发送。服务器计算机280可以从客户端计算机240接收请求消息。由于客户端临时公钥仅用于此通信会话(客户端临时私钥在214处被归零),因此它不能用于跟踪客户端计算机240。这样,在205发送的请求消息是不可追踪的。
在206,服务器计算机280可以使用服务器静态私钥282和客户端盲化公钥来确定第一共享秘密。由服务器计算机在206处使用服务器静态私钥282和客户端盲化公钥确定的第一共享秘密可以与由客户端计算机240在203处使用客户端临时私钥和服务器静态公钥284所生成的第一共享秘密相同。服务器计算机280还可以基于共享秘密,服务器计算机280的标识符以及通信会话的标识符,使用密钥导出函数来确定由客户端计算机240确定的相同的第一会话密钥。
在207,服务器计算机280可以使用第一共享秘密(例如,使用第一会话密钥)对客户端加密的数据进行解密,以获得客户端有效载荷252。在对客户端有效载荷252进行解密之后,服务器计算机280可以将第一共享秘密和第一会话密钥归零(例如,完全删除以防止任何恢复)。此时,服务器计算机280可以处理客户端有效载荷252,并且生成或识别任何适当的数据或信息以包括在响应于客户端计算机的请求而提供的服务器有效载荷292中。
在208,服务器计算机280可以生成服务器盲化因子。服务器盲化因子可以是随机生成的密码随机数。服务器计算机280可以使用服务器盲化因子来防止第三方跟踪它,如下所述。例如,服务器计算机280可以将服务器盲化因子应用于服务器静态公钥284(例如,使用乘法)以确定服务器盲化公钥。服务器计算机280可以将此服务器盲化因子和此服务器盲化公钥仅用于与客户端计算机240的该特定通信会话中,并且可以为随后的通信会话生成不同的盲化因子。这样,第三方可能无法基于服务器盲化公钥来跟踪服务器计算机280。
在209,服务器计算机280可以使用服务器盲化因子,服务器静态私钥282和客户端临时公钥来确定第二共享秘密。服务器计算机280还可使用密钥导出函数和第二共享秘密来确定第二会话密钥。
在210,服务器计算机280可以使用服务器盲化因子和服务器静态公钥来确定服务器盲化公钥。例如,服务器计算机280可以将服务器盲化因子应用于服务器静态公钥284(例如,使用乘法)以确定服务器盲化公钥。
在211,服务器计算机280可以使用第二共享秘密(例如,使用第二会话密钥)对服务器盲化因子,服务器证书288和服务器有效载荷数据292进行加密,以获得加密的服务器数据。
在212,服务器计算机280可以将包括服务器盲化公钥和服务器加密数据的响应消息发送到客户端计算机240。响应消息可能会在不安全的网络上发送。可以以明文形式(例如未加密)发送服务器盲化公钥。但是,服务器盲化公钥是基于服务器盲化因子的,服务器盲化因子只能在此特定的通信会话中使用。因此,拦截此消息以及服务器计算机280发送的其他消息的第三方可能无法跟踪服务器计算机280。客户端计算机240可以接收响应消息。
在213,客户端计算机240可以使用客户端临时私钥和服务器盲化公钥来确定第二共享秘密。客户端计算机240在213确定的第二共享秘密可以与服务器计算机280在209使用客户端临时公钥,服务器盲化因子和服务器静态私钥284确定的第二共享秘密相同。客户端计算机240还可以使用密钥导出函数和第二共享秘密来确定相同的第二会话密钥(也由服务器计算机280确定)。
在214,在确定第二共享秘密和第二会话密钥之后,客户端计算机240可以将客户端临时私钥归零。即,客户端计算机240可以删除客户端临时私钥,以便以后无法恢复。此外,即使客户端临时私钥在被归零之前的短时间内被泄漏并被第三方获得,第三方也将无法使用客户端临时私钥来解密任何其他通信,因为该客户端临时私钥仅用于解密此特定的响应消息。
在215,客户端计算机240可以使用第二共享秘密(例如,使用第二会话密钥)对加密的服务器数据进行解密,以获取服务器盲化因子,服务器证书288和服务器有效载荷292。
在216,客户端计算机240可以通过使用服务器盲化因子和服务器证书288中包含的服务器静态公钥284重新创建服务器盲化公钥来验证服务器盲化公钥。客户端计算机240可以基于正在被验证的服务器盲化公钥来验证服务器计算机280发送了响应消息。
在217,客户端计算机240和服务器计算机280可以结束通信会话,或者它们可以继续使用第二会话密钥进行安全通信。
图2的消息流使客户端计算机240和服务器计算机280能够使用不可追踪的消息来建立安全的通信,从而确保通信的机密性并保持客户端计算机240,服务器计算机280及其用户的隐私。但是,图2的消息流要求客户端计算机240存储服务器计算机服务器证书288,该证书包括在生成第一共享秘密中使用的服务器静态公钥284。因此,客户端计算机240需要预先获得服务器证书288。
B.使用不可追踪的通信来获取证书的方法
如上所述,消息的可追踪性是一个问题,因为它使第三方计算机能够跟踪某些计算机,从而违反了通信的机密性以及计算机及其用户的隐私。为了解决可追踪性问题,客户端计算机可以生成与其静态密钥对不同的临时密钥对。如以上参考图2所描述的,客户端计算机可以将临时公钥发送到服务器计算机,而不会违反机密性或隐私性。但是,如果客户端计算机尚未存储服务器计算机公钥的副本(例如,来自服务器计算机的证书),则客户端计算机无法使用公钥密码来与服务器计算机建立共享秘密。这种情况是有问题的,因为客户端计算机需要能够验证在响应消息中从服务器计算机收到的证书事实上是该服务器计算机的证书(而不是另一计算机的证书),而服务器计算机由于这里描述的可追踪性问题而不能以明文形式向客户端计算机提供其静态公钥。因此,客户端计算机需要使用安全且不可追踪的消息传递来获取服务器计算机的证书,以维护机密性和隐私性。
图3示出了根据一些实施方案的客户端计算机340使用不可追踪的消息来从服务器计算机380安全地获得证书的消息流图300。在图2的消息流之前,客户端计算机340可以不存储服务器计算机380的服务器证书388。
服务器计算机380可以存储服务器静态密钥对386,其中包括服务器静态私钥382和服务器静态公钥384。服务器计算机380还可以存储服务器证书388。服务器证书288可以包括服务器静态公钥384和用于认证服务器计算机388的证书颁发机构的签名。服务器静态私钥382和服务器静态公钥284可以是“静态的”,因为它们不会随时间变化,从而可以使用服务器证书388对服务器计算机388进行认证。服务器计算机380还可以存储服务器有效载荷数据392。服务器有效载荷数据392可以被视为敏感数据,从而就不会未经加密地以明文形式来传输它。
在此消息流中,客户端计算机340可以启动安全通信的建立。在301,客户端计算机340可以生成客户端临时私钥。客户端临时私钥可以随机地生成。
在302,客户端计算机340可以使用客户端临时私钥来确定客户端临时公钥。客户端临时私钥和客户端临时公钥可以形成用于公钥密码的密钥对。
在303,客户端计算机340可以将包含客户端临时公钥的“请求消息”发送到服务器计算机380。客户端临时公钥可以以明文形式发送(例如,未加密)。请求消息可以指出客户端计算机340请求接收服务器证书388。请求消息可能会在不安全的网络上发送。服务器计算机380可以从客户端计算机340接收请求消息。由于客户端临时公钥仅用于此通信会话(客户端临时私钥在310处被归零),因此它不能用于跟踪客户端计算机340。这样,在303发送的请求消息是不可追踪的。
在304,服务器计算机380可以生成服务器盲化因子。服务器盲化因子可以是随机生成的密码随机数。服务器计算机380可以使用服务器盲化因子来防止第三方跟踪其通信,如下所述。例如,服务器计算机380可以将服务器盲化因子应用于服务器静态公钥384(例如,使用乘法)以确定服务器盲化公钥。服务器计算机380可以将此服务器盲化因子和此服务器盲化公钥仅用于与客户端计算机340的该特定通信会话中,并且可以为随后的通信会话生成不同的盲化因子。这样,第三方可能无法基于服务器盲化公钥来跟踪服务器计算机380。
在305,服务器计算机380可以使用服务器静态私钥382和客户端临时公钥来确定第一共享秘密。服务器计算机380可以基于第一共享秘密,使用密钥导出函数来确定第一会话密钥。服务器计算机380可以使用第一会话密钥来加密服务器证书388和服务器有效载荷392,以传输到客户端计算机340。
在306,服务器计算机380可以使用服务器盲化因子和服务器静态公钥384来确定服务器盲化公钥。例如,服务器计算机380可以将服务器盲化因子应用于服务器静态公钥384(例如,使用乘法)以确定服务器盲化公钥。
在307,服务器计算机380可以使用第一共享秘密(例如,使用第一会话密钥)对服务器盲化因子,服务器证书388和服务器有效载荷数据392进行加密,以获得加密的服务器数据。在加密之后,服务器计算机380可以将第一共享秘密和第一会话密钥归零。
在308,服务器计算机380可以将包括服务器盲化公钥和服务器加密数据的响应消息发送到客户端计算机340。响应消息可能会在不安全的网络上发送。可以以明文形式(例如未加密)发送服务器盲化公钥。但是,服务器盲化公钥是基于服务器盲化因子的,服务器盲化因子只能在此特定的通信会话中使用。因此,拦截此消息以及服务器计算机380发送的其他消息的第三方可能无法跟踪服务器计算机380。客户端计算机340可以接收响应消息。
在309,客户端计算机340可以使用客户端临时私钥和服务器盲化公钥来确定第一共享秘密。客户端计算机340在309确定的第一共享秘密可以与服务器计算机380在305使用客户端临时公钥,服务器盲化因子和服务器静态私钥284确定的第一共享秘密相同。客户端计算机340还可以使用密钥导出函数和第一共享秘密来确定相同的第一会话密钥(也由服务器计算机380确定)。
在310,在确定第一共享秘密和第一会话密钥之后,客户端计算机340可以将客户端临时私钥归零。即,客户端计算机340可以删除客户端临时私钥,以便以后无法恢复。此外,即使客户端临时私钥在被归零之前的短时间内被泄漏并被第三方获得,第三方也将无法使用客户端临时私钥来解密任何其他通信,因为该客户端临时私钥仅用于解密此特定的响应消息。
在311,客户端计算机340可以使用第一共享秘密(例如,使用第一会话密钥)对加密的服务器数据进行解密,以获取服务器盲化因子,服务器证书388和服务器有效载荷392。
在312,客户端计算机340可以通过使用服务器盲化因子和服务器证书388中包含的服务器静态公钥384重新创建服务器盲化公钥来验证服务器盲化公钥。客户端计算机340可以基于正在被验证的服务器盲化公钥来验证服务器计算机380发送了响应消息。
在313,客户端计算机340可以存储服务器证书388,以便可以将服务器静态公钥384用于与服务器计算机380的后续通信的加密,诸如以上参照图2描述的通信。
图2和图3的消息流使客户端计算机和服务器计算机能够使用不可追踪的消息来建立安全的通信,即使客户端计算机以前未存储服务器计算机的公钥也是如此。然而,图2和图3的消息流不允许服务器计算机在不发送附加消息或者在请求和响应消息中包括附加数据的情况下认证客户端计算机。这样,可能会出现否认问题。例如,客户端计算机可能会否认发送了请求消息。因此,消息具有“不可否认性”的特性将是有用的,以便消息不可能由除了存储对应于包括在该消息中的特定公钥的特定私钥的计算机之外的其他计算机发送。来自服务器计算机的消息也是可认证的数据,使得消息不能被否认,这也是有利的。
进一步使此问题复杂化的是,消息需要保持“完美的前向保密性”。也就是说,计算机私钥或一条消息的泄漏不应因此而泄漏之前可能已被拦截的任何消息。此外,消息应该是不可追踪的。此外,通过将用于建立安全通信的消息流限制为仅来自客户端计算机的单个请求消息和来自服务器计算机的单个响应消息,可以减少网络和计算资源的使用。下面进一步详细描述在仅使用来自客户端计算机的单个请求消息和来自服务器计算机的单个响应消息时解决这些问题的方法和***。
III.提供完美的前向保密性和不可否认性的安全且不可追踪的通信
在其他消息流中,可以通过使用盲化因子使以明文形式交换的公钥盲化,从而实现不可追踪性。这样的消息流还可以通过在加密的消息部分中包含盲化因子来实现两台计算机的相互认证,从而使消息的接收者可以通过将以明文形式接收的盲化公钥与通过将盲化因子应用于发送者的证书中包含的静态公钥来确定的匹配的盲化公钥进行比较来对发送计算机进行认证。但是,在这样的消息流中,盲化因子既用于加密也用于认证。因此,如果两个设备的私钥都由第三方获得,则第三方可能会解密任何新消息以及任何先前拦截的消息。例如,第三方可以使用服务器的静态私钥以及客户端的盲化公钥(在请求消息中以明文形式接收到的)来生成共享秘密,该共享秘密可以用于解密客户端的盲化因子(被拦截的请求消息的加密有效载荷中的)。然后,第三方可以使用客户端的静态私钥和客户端的盲化因子(从发送到服务器的请求消息中获得的)来解密从服务器发送的响应消息。这样,如果第三方能够获取客户端和服务器的私钥,则第三方可能能够解密先前拦截的消息。也就是说,此示例消息流中的消息违反了“完美的前向保密性”。
返回到图2,该消息流使客户端计算机和服务器计算机能够使用不可追踪的消息来建立安全的通信,从而确保通信的机密性并保持客户端计算机,服务器计算机及其用户的隐私。但是,仅基于请求和响应,客户端计算机无法对服务器计算机进行认证,并且服务器计算机无法对客户端计算机进行认证。即,客户端计算机和服务器计算机在不在请求或响应或附加通信消息中传递附加数据的情况下,无法相互认证。
仅使用单个请求消息和单个响应消息来建立安全通信是有利的,其中消息具有“不可追踪”,同时提供消息的“不可否认性”并保持“完美的前向保密性”的特性。
A.提供客户端的完美的前向保密性和不可否认性的安全通信
图4示出了根据一些实施方案的客户端计算机440和服务器计算机480建立具有完美的前向保密性的安全且不可追踪的通信的消息流图400。该消息流包括客户端计算机440在406处发送的请求消息,该请求消息不能被客户端计算机440否认。在406处的请求消息和在415处来自服务器计算机480的响应消息是不可追踪的,因为它们包括临时的盲化公钥而不是静态公钥。此外,请求和响应消息还保持完美的前向保密性。下面进一步详细描述请求和响应消息的生成和格式。
在此消息流中,客户端计算机440可以启动安全通信的建立。在消息流之前,客户端计算机440可以存储包括客户端静态私钥442和客户端静态公钥444的客户端静态密钥对446。客户端计算机还可以存储由证书颁发机构签名的客户端证书448,其中包括客户端静态公钥444。客户端计算机440还可以存储服务器证书488。另外,客户端计算机440可以存储客户端有效载荷数据452,其可能是敏感数据。
在401,客户端计算机440可以生成客户端盲化因子。客户端盲化因子可以是随机生成的。
在402,客户端计算机440可以使用客户端盲化因子确定客户端盲化公钥。客户端盲化因子和客户端盲化公钥可以形成椭圆曲线密钥对,从而可以将客户端盲化公钥用于解密使用客户端盲化因子加密的数据,并且可以将客户端盲化公钥用于验证通过使用客户端盲化因子对数据进行签名而生成的签名。这样,客户端盲化因子可以用作私有椭圆曲线密钥。
在403,客户端计算机440可以使用客户端盲化因子和服务器静态公钥484(它们可以包含在服务器证书488中)来确定第一共享秘密。客户端计算机440可以基于第一共享秘密,使用密钥导出函数来确定第一会话密钥。
在404,客户端计算机440可以通过(使用客户端静态私钥442)对客户端有效载荷数据452、客户端盲化公钥和服务器静态公钥484进行签名,来确定客户端签名。客户端计算机440可以使用例如椭圆曲线数字签名算法(ECDSA)来确定客户端签名。客户端签名可以被包括在来自客户端计算机440的请求消息中,以提供客户端计算机440的不可否认性。另外,客户端签名基于客户端盲化因子,该因子仅在该通信会话(例如,单个请求和单个响应消息)中使用。这样,签名仅对该特定请求消息有效。此外,客户端签名还基于服务器静态公钥484。这样,另一计算机也无法声称自己是此特定请求消息的接收者。
在一些实施方案中,客户端签名还可以基于指出请求消息的新鲜度(例如,及时性)的种子。种子也可以包含在加密的客户端数据中,以便请求消息的接收者可以基于种子的值来验证消息不旧。例如,种子可以是受信任的时间或计数器。服务器计算机480可以获取其自己的受信任的时间或计数器值以验证请求消息中的种子。
在405,客户端计算机440可以使用第一共享秘密(例如,使用第一会话密钥)对客户端有效载荷数据452,客户端证书448,客户端签名和客户端盲化公钥进行加密,以确定客户端加密数据。例如,客户端计算机可以使用带有关联数据的认证加密(AEAD)加密过程来执行加密。客户端有效载荷452可以包括敏感客户端数据和/或来自服务器计算机480的对某些数据或信息的请求。在对客户端有效载荷452进行加密之后,客户端计算机440可以将第一共享秘密和第一会话密钥归零(例如,完全删除以防止任何恢复)。
在406,客户端计算机440可以将包括客户端盲化公钥和客户端加密数据在内的“请求消息”发送到服务器计算机480。可以以明文形式(例如未加密)发送客户端盲化公钥。请求消息可以指出,客户端计算机440请求基于客户端盲化公钥,使用共享秘密来建立安全通信。请求消息可能会在不安全的网络上发送。服务器计算机480可以从客户端计算机440接收请求消息。
由于客户端盲化公钥仅用于此通信会话(客户端盲化因子在417处被归零),因此它不能用于跟踪客户端计算机440。这样,在405发送的请求消息是不可追踪的。
另外,在405处发送的请求消息提供了客户端计算机440的不可否认性,因为客户端加密的数据包括使用客户端盲化因子生成的客户端签名。
另外,由于过去或将来,请求消息中不包含可用于解密客户端计算机440发送的其他消息中的任何数据的数据,因此请求消息保持了完美的前向保密性。由于未在加密的客户端数据中提供客户端盲化因子,因此可以保持完美的前向保密性。例如,客户端签名被用于对客户端计算机440的认证,而不是使用盲化因子。但是,客户端签名也不包括可用于解密来自客户端计算机440的消息的信息,即使客户端静态私钥442和服务器静态私钥482被泄漏。
在407,服务器计算机480可以使用服务器静态私钥482和请求消息中包含的客户端盲化公钥来确定第一共享秘密。由服务器计算机在406处使用服务器静态私钥482和客户端盲化公钥确定的第一共享秘密可以与由客户端计算机440在403处使用客户端盲化因子和服务器静态公钥484所生成的第一共享秘密相同。服务器计算机480还可以基于第一共享秘密,使用密钥导出函数来确定由客户端计算机440确定的相同的第一会话密钥。
在408,服务器计算机480可以使用第一共享秘密(例如,使用第一会话密钥)对客户端加密的数据进行解密,以获得客户端有效载荷数据452,客户端证书448,客户端签名以及客户端盲化公钥。例如,服务器计算机可以使用带关联数据的认证加密(AEAD)解密过程来执行解密。在对客户端加密的数据进行解密之后,服务器计算机480可以将第一共享秘密和第一会话密钥归零(例如,完全删除以防止任何恢复)。
在409,服务器计算机480可以使用包含在客户端证书448中的客户端静态公钥444,客户端有效载荷数据452,客户端盲化公钥和服务器静态公钥484,来验证客户端签名。服务器计算机480可以使用例如椭圆曲线数字签名算法(ECDSA)来验证客户端签名。
服务器计算机480还可以验证客户端证书448的证书链。另外,服务器计算机480可以处理客户端有效载荷452,并且生成或识别任何适当的数据或信息以包括在响应于客户端计算机的请求而提供的服务器有效载荷492中。
在410,服务器计算机480可以生成服务器盲化因子。服务器盲化因子可以是随机生成的密码随机数。如本文所述,服务器计算机480可以使用服务器盲化因子来防止第三方跟踪它。例如,服务器计算机480可以将服务器盲化因子应用于服务器静态公钥484(例如,使用乘法)以确定服务器盲化公钥。服务器计算机480可以仅将此服务器盲化因子和此服务器盲化公钥应用在与客户端计算机440的该特定通信会话(例如,在406的请求消息和在415的响应消息)中,并且可以为随后的通信会话生成不同的盲化因子。这样,可能无法基于服务器盲化公钥来跟踪服务器计算机480的身份。
在411,服务器计算机480可以使用服务器盲化因子,服务器静态私钥482和客户端盲化公钥来确定第二共享秘密。在一些实施方案中,服务器计算机480可以存储多个静态密钥对,并且它可以使用不同的静态密钥对来加密响应消息。服务器计算机480还可使用密钥导出函数和第二共享秘密来确定第二会话密钥。
在412,服务器计算机480可以使用服务器盲化因子和服务器静态公钥来确定服务器盲化公钥。例如,服务器计算机480可以将服务器盲化因子应用于服务器静态公钥(例如,使用乘法)以确定服务器盲化公钥。如上所述,用于确定服务器盲化公钥的服务器静态公钥可以是不同静态密钥对的一部分。
在413,服务器计算机480可以使用第二共享秘密(例如,使用第二会话密钥)来加密服务器盲化因子、服务器证书(对应于用于加密的静态密钥对的静态公钥)、服务器有效载荷数据492和服务器盲化公钥,以获得加密的服务器数据。例如,服务器计算机480可以使用带有关联数据的认证加密(AEAD)加密过程来执行加密。
在414,服务器计算机480可以将包括服务器盲化公钥和服务器加密数据的响应消息发送到客户端计算机440。响应消息可能会在不安全的网络上发送。可以以明文形式(例如未加密)发送服务器盲化公钥。但是,服务器盲化公钥是基于服务器盲化因子的,服务器盲化因子只能在此特定的通信会话中使用。因此,拦截此消息以及服务器计算机480发送的其他消息的第三方可能无法跟踪服务器计算机480。客户端计算机440可以接收响应消息。
在416,客户端计算机440可以使用在响应消息中接收到的客户端盲化因子和服务器盲化公钥来确定第二共享秘密。客户端计算机440在416确定的第二共享秘密可以与服务器计算机480在411使用客户端盲化公钥,服务器盲化因子和服务器静态私钥确定的第二共享秘密相同。客户端计算机440还可以使用密钥导出函数和第二共享秘密来确定相同的第二会话密钥(也由服务器计算机480确定)。
在417,在确定第二共享秘密和第二会话密钥之后,客户端计算机440可以将客户端盲化因子归零。即,客户端计算机440可以删除客户端盲化因子,以便以后无法恢复。此外,即使客户端盲化因子在被归零之前的短时间内被泄漏并被第三方获得,第三方也将无法使用客户端盲化因子来解密任何其他通信,因为它仅用于解密此特定的响应消息。此外,即使第三方获得了对客户端计算机的静态私钥和服务器计算机的静态私钥的访问,在没有获得客户端盲化因子的情况下,他们无法解密响应消息,客户端盲化因子在接收到响应消息后会立即归零。因此,保持了完美的前向保密性。
在418,客户端计算机440可以使用第二共享秘密(例如,使用第二会话密钥)对加密的服务器数据进行解密,以获得服务器盲化因子,服务器证书(对应于用于加密的静态密钥对的静态公钥),服务器有效载荷数据492和服务器盲化公钥。客户端计算机440可以例如使用带有关联数据的认证加密(AEAD)解密过程来执行解密。
在419,客户端计算机440可以通过使用响应消息中包含的服务器盲化因子和响应消息中还包括的服务器证书的服务器静态公钥,重新创建服务器盲化公钥来验证服务器盲化公钥。客户端计算机440可以基于正在被验证的服务器盲化公钥来验证服务器计算机480发送了响应消息。客户端计算机440还可以验证响应消息中包括的服务器证书的证书链。
在420,客户端计算机440可以将服务器盲化因子归零,以使其以后无法恢复。这样,即使第三方获得了对客户端计算机440和服务器计算机480的静态私钥的访问,第三方也将无法解密响应消息,因为解密需要服务器盲化因子或客户端盲化因子,而它们都已归零。
在421,客户端计算机440和服务器计算机480可以结束通信会话,或者它们可以继续使用第二会话密钥进行安全通信。
图4的消息流使客户端计算机440和服务器计算机480能够使用不可追踪的消息来建立安全的通信,从而确保通信的机密性并保持客户端计算机440,服务器计算机480及其用户的隐私。另外,客户端计算机480也不能否认请求消息,因为它包括客户端签名。此外,请求消息和响应消息保持了完美的前向保密性,因为它们的加密取决于客户端盲化因子和服务器盲化因子,它们在解密过程不需要它们之后立即被归零。另外,由于仅使用一个请求消息和一个响应消息来实现该解决方案,因此减少了网络和计算资源的使用。
B.提供客户端和服务器的完美前向保密性和不可否认性的安全通信
图5示出了根据一些实施方案的客户端计算机540和服务器计算机580使用具有客户端和服务器不可否认性的消息来建立具有完美前向保密性的安全且不可追踪的通信的消息流图500。该消息流包括在506处由客户端计算机540发送的不能被客户端计算机540否认的请求消息,以及在516处由服务器计算机580发送的不能被服务器计算机580否认的响应消息。在506处的请求消息和在516处的响应消息是不可追踪的,因为它们包括一次性使用的盲化公钥而不是静态公钥。此外,请求和响应消息还保持完美的前向保密性。下面进一步详细描述请求和响应消息的生成和格式。
在此消息流中,客户端计算机540可以启动安全通信的建立。在消息流之前,客户端计算机540可以存储包括客户端静态私钥542和客户端静态公钥544的客户端静态密钥对546。客户端计算机还可以存储由证书颁发机构签名的客户端证书548,其中包括客户端静态公钥544。客户端计算机540还可以存储服务器证书588。另外,客户端计算机540可以存储客户端有效载荷数据552,其可能是敏感数据。图5的消息流图500中的某些步骤可以以与图4的消息流图400中的步骤相似的方式来执行。
在501,客户端计算机540可以生成客户端盲化因子。客户端盲化因子可以是随机生成的。
在502,客户端计算机540可以使用客户端盲化因子确定客户端盲化公钥。客户端盲化因子和客户端盲化公钥可以形成椭圆曲线密钥对,从而可以将客户端盲化公钥用于解密使用客户端盲化因子加密的数据,并且可以将客户端盲化公钥用于验证通过使用客户端盲化因子对数据进行签名而生成的签名。
在503,客户端计算机540可以使用客户端盲化因子和服务器静态公钥584(它们可以包含在服务器证书588中)来确定第一共享秘密。客户端计算机540可以基于第一共享秘密,使用密钥导出函数来确定第一会话密钥。
在504,客户端计算机540可以通过对客户端有效载荷数据552,客户端盲化公钥和服务器静态公钥584进行签名,来确定客户端签名。客户端计算机540可以使用例如椭圆曲线数字签名算法(ECDSA)来确定客户端签名。客户端签名可以被包括在来自客户端计算机540的请求消息中,以提供客户端计算机540的不可否认性。另外,客户端签名基于客户端盲化因子,该因子仅在该通信会话(例如,单个请求和单个响应消息)中使用。这样,签名仅对该特定请求消息有效。此外,客户端签名还基于服务器静态公钥584。这样,另一计算机也无法声称自己是此特定请求消息的接收者。
在一些实施方案中,客户端签名还可以基于指出请求消息的新鲜度(例如,及时性)的种子。种子也可以包含在加密的客户端数据中,以便请求消息的接收者可以基于种子的值来验证消息不旧。例如,种子可以是受信任的时间或计数器。服务器计算机580可以获取其自己的受信任的时间或计数器值以验证请求消息中的种子。
在505,客户端计算机540可以使用第一共享秘密(例如,使用第一会话密钥)对客户端有效载荷数据552,客户端证书548,客户端签名和客户端盲化公钥进行加密,以确定客户端加密数据。例如,客户端计算机可以使用带有关联数据的认证加密(AEAD)加密过程来执行加密。客户端有效载荷552可以包括敏感客户端数据和/或来自服务器计算机580的对某些数据或信息的请求。在对客户端有效载荷552进行加密之后,客户端计算机540可以将第一共享秘密和第一会话密钥归零(例如,完全删除以防止任何恢复)。
在506,客户端计算机540可以将包括客户端盲化公钥和客户端加密数据在内的“请求消息”发送到服务器计算机580。可以以明文形式(例如未加密)发送客户端盲化公钥。请求消息可以指出,客户端计算机540请求基于客户端盲化公钥,使用共享秘密来建立安全通信。请求消息可能会在不安全的网络上发送。服务器计算机580可以从客户端计算机540接收请求消息。由于客户端盲化公钥仅用于此通信会话(客户端盲化因子在517处被归零),因此它不能用于跟踪客户端计算机540。这样,在505发送的请求消息是不可追踪的。另外,在505处发送的请求消息提供了客户端计算机540的不可否认性,因为客户端加密的数据包括使用客户端盲化因子生成的客户端签名。另外,由于过去或将来,请求消息中不包含可用于解密客户端计算机540发送的其他消息中的任何数据的数据,因此请求消息保持了完美的前向保密性。由于未在加密的客户端数据中提供客户端盲化因子,因此可以保持完美的前向保密性。例如,客户端签名被用于对客户端计算机540的认证而不是使用盲化因子。但是,客户端签名也不包括可用于解密来自客户端计算机540的消息的信息,即使客户端静态私钥542和服务器静态私钥582被泄漏。
在507,服务器计算机580可以使用服务器静态私钥582和请求消息中包含的客户端盲化公钥来确定第一共享秘密。由服务器计算机在506处使用服务器静态私钥582和客户端盲化公钥确定的第一共享秘密可以与由客户端计算机540在503处使用客户端盲化因子和服务器静态公钥584所生成的第一共享秘密相同。服务器计算机580还可以基于第一共享秘密,使用密钥导出函数来确定由客户端计算机540确定的相同的第一会话密钥。
在508,服务器计算机580可以使用第一共享秘密(例如,使用第一会话密钥)对客户端加密的数据进行解密,以获得客户端有效载荷数据552,客户端证书548,客户端签名以及客户端盲化公钥。例如,服务器计算机可以使用带关联数据的认证加密(AEAD)解密过程来执行解密。在对客户端加密的数据进行解密之后,服务器计算机580可以将第一共享秘密和第一会话密钥归零(例如,完全删除以防止任何恢复)。
在509,服务器计算机580可以使用包含在客户端证书548中的客户端静态公钥544,客户端有效载荷数据552,客户端盲化公钥和服务器静态公钥584,来验证客户端签名。服务器计算机580可以使用例如椭圆曲线数字签名算法(ECDSA)来验证客户端签名。
服务器计算机580还可以验证客户端证书548的证书链。另外,服务器计算机580可以处理客户端有效载荷552,并且生成或识别任何适当的数据或信息以包括在响应于客户端计算机的请求而提供的服务器有效载荷592中。
在510,服务器计算机580可以生成服务器盲化因子。服务器盲化因子可以是随机生成的密码随机数。如本文所述,服务器计算机580可以使用服务器盲化因子来防止第三方跟踪它。例如,服务器计算机580可以将服务器盲化因子应用于服务器静态公钥584(例如,使用乘法)以确定服务器盲化公钥。服务器计算机580可以仅将此服务器盲化因子和此服务器盲化公钥应用在与客户端计算机540的该特定通信会话(例如,在506的请求消息和在516的响应消息)中,并且可以为随后的通信会话生成不同的盲化因子。这样,可能无法基于服务器盲化公钥来跟踪服务器计算机580的身份。
在511,服务器计算机580可以使用服务器盲化因子,服务器静态私钥582和客户端盲化公钥来确定第二共享秘密。在一些实施方案中,服务器计算机580可以存储多个静态密钥对,并且它可以使用不同的静态密钥对来加密响应消息。服务器计算机580还可使用密钥导出函数和第二共享秘密来确定第二会话密钥。
在512,服务器计算机580可以使用服务器盲化因子和服务器静态公钥来确定服务器盲化公钥。例如,服务器计算机580可以将服务器盲化因子应用于服务器静态公钥(例如,使用乘法)以确定服务器盲化公钥。如上所述,用于确定服务器盲化公钥的服务器静态公钥可以是不同静态密钥对的一部分。
在513,服务器计算机580可以通过对服务器证书,服务器有效载荷数据592,服务器盲化公钥和客户端静态公钥544进行签名,来确定服务器签名。服务器计算机580可以例如使用椭圆曲线数字签名算法(ECDSA)来确定服务器签名。服务器签名可以被包括在来自服务器计算机580的响应消息中,以提供服务器计算机580的不可否认性。另外,服务器签名基于服务器盲化公钥,该公钥仅在该通信会话(例如,单个请求和单个响应消息)中使用。这样,签名仅对该特定请求消息有效。此外,服务器签名基于客户端静态公钥544。这样,另一计算机也无法声称自己是此特定请求消息的接收者。
在514,服务器计算机580可以使用第二共享秘密(例如,使用第二会话密钥)来加密服务器证书(对应于用于加密的静态密钥对的静态公钥)、服务器有效载荷数据492、服务器签名、和服务器盲化公钥,以获得加密的服务器数据。例如,服务器计算机580可以使用带有关联数据的认证加密(AEAD)加密过程来执行加密。
在515,服务器计算机580可以将服务器盲化因子归零,以使其无法恢复。
在516,服务器计算机580可以将包括服务器盲化公钥和服务器加密数据的响应消息发送到客户端计算机540。响应消息可能会在不安全的网络上发送。可以以明文形式(例如未加密)发送服务器盲化公钥。但是,服务器盲化公钥是基于服务器盲化因子的,服务器盲化因子只能在此特定的通信会话中使用。因此,拦截此消息以及服务器计算机580发送的其他消息的第三方可能无法跟踪服务器计算机580。客户端计算机540可以接收响应消息。
在517,客户端计算机540可以使用在响应消息中接收到的客户端盲化因子和服务器盲化公钥来确定第二共享秘密。客户端计算机540在517确定的第二共享秘密可以与服务器计算机580在511使用客户端盲化公钥,服务器盲化因子和服务器静态私钥确定的第二共享秘密相同。客户端计算机540还可以使用密钥导出函数和第二共享秘密来确定相同的第二会话密钥(也由服务器计算机580确定)。
在518,在确定第二共享秘密和第二会话密钥之后,客户端计算机540可以将客户端盲化因子归零。即,客户端计算机540可以删除客户端盲化因子,以便以后无法恢复。此外,即使客户端盲化因子在被归零之前的短时间内被泄漏并被第三方获得,第三方也将无法使用客户端盲化因子来解密任何其他通信,因为它仅用于解密此特定的响应消息。此外,即使第三方获得了对客户端计算机的静态私钥和服务器计算机的静态私钥的访问,在没有获得客户端盲化因子的情况下,他们无法解密响应消息,客户端盲化因子在接收到响应消息后会立即归零。因此,保持了完美的前向保密性。
在519,客户端计算机540可以使用第二共享秘密(例如,使用第二会话密钥)对加密的服务器数据进行解密,以获得服务器盲化因子,服务器证书(对应于用于加密的静态密钥对的静态公钥),服务器有效载荷数据592和服务器盲化公钥。客户端计算机540可以例如使用带有关联数据的认证加密(AEAD)解密过程来执行解密。
在519,客户端计算机540可以使用包括在响应消息的服务器证书中的服务器静态公钥,服务器有效载荷数据592,服务器盲化公钥和服务器静态公钥,来验证服务器。客户端计算机540可以例如使用椭圆曲线数字签名算法(ECDSA)来验证客户端签名。客户端计算机540还可以验证响应消息中包括的服务器证书的证书链。
在520,客户端计算机540和服务器计算机580可以结束通信会话,或者它们可以继续使用第二会话密钥进行安全通信。
图5的消息流使客户端计算机540和服务器计算机580能够使用不可追踪的消息来建立安全的通信,从而确保通信的机密性并保持客户端计算机540,服务器计算机580及其用户的隐私。另外,客户端计算机540也不能否认请求消息,因为它包括客户端签名。服务器计算机580也不能否认响应消息,因为它包括服务器签名。此外,请求消息和响应消息保持了完美的前向保密性,因为它们的加密取决于客户端盲化因子和服务器盲化因子,它们在解密过程不需要它们之后立即被归零。另外,由于仅使用一个请求消息和一个响应消息来实现该解决方案,因此减少了网络和计算资源的使用。
C.使用两部分私有签名来提供客户端和服务器的完美前向保密性和不可否认性的安全通信
图6示出了根据一些实施方案的客户端计算机640和服务器计算机680使用加密的签名部分和未加密的签名部分来建立安全且不可追踪的通信以提供不可否认性的消息流图600。加密签名部分可以包括识别信息,而未加密签名部分不包括识别信息。另外,未加密的签名部分可以基于加密的数据。这样,签名可以基于加密数据,同时是“不可追踪的”。
该消息流包括在607处由客户端计算机640发送的不能被客户端计算机640否认的请求消息,以及在618处由服务器计算机680发送的不能被服务器计算机680否认的响应消息。在607处的请求消息和在618处的响应消息是不可追踪的,因为它们包括一次性使用的盲化公钥而不是静态公钥。此外,请求和响应消息还保持完美的前向保密性。下面进一步详细描述请求和响应消息的生成和格式。
在此消息流中,客户端计算机640可以启动安全通信的建立。在消息流之前,客户端计算机640可以存储包括客户端静态私钥642和客户端静态公钥644的客户端静态密钥对646。客户端计算机还可以存储由证书颁发机构签名的客户端证书648,其中包括客户端静态公钥644。客户端计算机640还可以存储服务器证书688。另外,客户端计算机640可以存储客户端有效载荷数据652,其可能是敏感数据。
在601,客户端计算机640可以生成客户端盲化因子。客户端盲化因子可以是随机生成的。
在602,客户端计算机640可以使用客户端盲化因子确定客户端盲化公钥。客户端盲化因子和客户端盲化公钥可以形成椭圆曲线密钥对,从而可以将客户端盲化公钥用于解密使用客户端盲化因子加密的数据,并且可以将客户端盲化公钥用于验证通过使用客户端盲化因子对数据进行签名而生成的签名。
在603,客户端计算机640可以使用客户端盲化因子和服务器静态公钥684(它们可以包含在服务器证书688中)来确定第一共享秘密。客户端计算机640可以基于第一共享秘密,使用密钥导出函数来确定第一会话密钥。
在604,客户端计算机640可以使用L签名算法来确定客户端L签名和客户端L签名随机值。L签名算法可以是例如ECDSA签名算法或Schnorr签名算法。
在605,客户端计算机640可以使用第一共享秘密(例如,使用第一会话密钥)对客户端L签名,客户端有效载荷数据652,客户端证书648和客户端盲化公钥进行加密,以确定客户端加密数据。例如,客户端计算机可以使用带有关联数据的认证加密(AEAD)加密过程来执行加密。客户端有效载荷652可以包括敏感客户端数据和/或来自服务器计算机680的对某些数据或信息的请求。在对客户端有效载荷652进行加密之后,客户端计算机640可以将第一共享秘密和第一会话密钥归零(例如,完全删除以防止任何恢复)。
在606,客户端计算机640可以基于客户端静态私钥642,客户端L签名随机值和加密的客户端数据,使用R签名算法来确定客户端R签名。这样,L签名是基于未加密的客户端有效载荷数据652,而R签名是基于加密的客户端数据。客户端L签名和客户端R签名一起形成客户端签名。需要L签名和R签名来验证请求消息。客户端L签名和客户端R签名一起提供了来自客户端计算机640的请求消息的不可否认性。另外,客户端R签名基于客户端加密的数据,该数据包括仅在该通信会话(例如,单个请求和单个响应消息)中使用的客户端盲化公钥。这样,客户端签名仅对该特定请求消息有效。
在607,客户端计算机640可以将请求消息发送到服务器计算机680,该请求消息包括客户端盲化公钥,客户端加密的数据和客户端R签名。客户端盲化公钥和客户端R签名可以以明文形式(例如未加密)发送。这样,基于加密的客户端数据的客户端R签名将不加密地发送,而客户端L签名包含在加密的客户端数据中。客户端L签名可以包括客户端签名中可用于识别客户端的部分。因此,客户端签名可以基于加密的客户端数据,同时提供不可追踪性,因为R签名部分基于加密的数据,而L签名部分可以用于标识和跟踪客户端计算机640,包含在加密的客户端数据中。
请求消息还可以指出,客户端计算机640请求基于客户端盲化公钥,使用共享秘密来建立安全通信。请求消息可能会在不安全的网络上发送。服务器计算机680可以从客户端计算机640接收请求消息。由于客户端盲化公钥仅用于此通信会话(客户端盲化因子在620处被归零),因此它不能用于跟踪客户端计算机640。这样,在605发送的请求消息是不可追踪的。另外,在605处发送的请求消息提供了客户端计算机640的不可否认性,因为客户端加密数据包括使用客户端盲化因子生成的客户端签名。另外,由于过去或将来,请求消息中不包含可用于解密客户端计算机640发送的其他消息中的任何数据的数据,因此请求消息保持了完美的前向保密性。由于未在加密的客户端数据中提供客户端盲化因子,因此可以保持完美的前向保密性。例如,客户端签名被用于对客户端计算机640的认证而不是使用盲化因子。但是,客户端签名也不包括可用于解密来自客户端计算机640的消息的信息,即使客户端静态私钥642和服务器静态私钥682被泄漏。
在608,服务器计算机680可以使用服务器静态私钥682和请求消息中包含的客户端盲化公钥来确定第一共享秘密。由服务器计算机在606处使用服务器静态私钥682和客户端盲化公钥确定的第一共享秘密可以与由客户端计算机640在603处使用客户端盲化因子和服务器静态公钥684所确定的第一共享秘密相同。服务器计算机680还可以基于第一共享秘密,使用密钥导出函数来确定由客户端计算机640确定的相同的第一会话密钥。
在609,服务器计算机680可以使用第一共享秘密(例如,使用第一会话密钥)对客户端加密的数据进行解密,以获得客户端L签名,客户端有效载荷数据652和客户端证书648。例如,服务器计算机可以使用带关联数据的认证加密(AEAD)解密过程来执行解密。在对客户端加密的数据进行解密之后,服务器计算机680可以将第一共享秘密和第一会话密钥归零(例如,完全删除以防止任何恢复)。
在610,服务器计算机680可以使用客户端静态公钥644(包括在客户端证书648中)、客户端L签名、客户端R签名和加密的客户端数据来验证包括客户端L签名和客户端R签名两者的客户端签名。
服务器计算机680还可以验证客户端证书648的证书链。另外,服务器计算机680可以处理客户端有效载荷652,并且生成或识别任何适当的数据或信息以包括在响应于客户端计算机的请求而提供的服务器有效载荷692中。
在611,服务器计算机680可以生成服务器盲化因子。服务器盲化因子可以是随机生成的密码随机数。如本文所述,服务器计算机680可以使用服务器盲化因子来防止第三方跟踪它。例如,服务器计算机680可以将服务器盲化因子应用于服务器静态公钥684(例如,使用乘法)以确定服务器盲化公钥。服务器计算机680可以仅将此服务器盲化因子和此服务器盲化公钥应用在与客户端计算机640的该特定通信会话(例如,请求消息和响应消息)中,并且可以为随后的通信会话生成不同的盲化因子。这样,可能无法基于服务器盲化公钥来跟踪服务器计算机680的身份。
在612,服务器计算机680可以使用服务器盲化因子,服务器静态私钥682和客户端盲化公钥来确定第二共享秘密。在一些实施方案中,服务器计算机680可以存储多个静态密钥对,并且它可以使用不同的静态密钥对来加密响应消息。服务器计算机680还可使用密钥导出函数和第二共享秘密来确定第二会话密钥。
在613,服务器计算机680可以使用L签名算法来确定服务器L签名和服务器L签名随机值。L签名算法可以是例如ECDSA签名算法或Schnorr签名算法。
在615,服务器计算机680可以使用第二共享秘密(例如,使用第二会话密钥)对服务器L签名,服务器有效载荷数据692,服务器证书和服务器盲化公钥进行加密,以确定服务器加密数据。例如,服务器计算机680可以使用带有关联数据的认证加密(AEAD)加密过程来执行加密。服务器有效载荷692可以包括敏感服务器数据和/或某些数据或信息,以响应来自客户端计算机640的请求。在加密之后,客户端计算机680可以将第一共享秘密和第一会话密钥归零(例如,完全删除以防止任何恢复)。
在616,服务器计算机640可以基于服务器静态私钥682,服务器L签名随机值和加密的服务器数据,使用R签名算法来确定服务器R签名。这样,服务器L签名是基于未加密的服务器有效载荷数据692,而服务器R签名是基于加密的服务器数据。服务器L签名和服务器R签名一起形成服务器签名。需要服务器L签名和服务器R签名两者来验证来自服务器计算机680的响应消息。服务器L签名和服务器R签名一起提供了来自服务器计算机680的响应消息的不可否认性。此外,服务器R签名基于服务器加密的数据,该数据包括仅在此通信会话(例如,单个请求和单个响应消息)中使用的服务器盲化公钥。这样,服务器签名仅对该特定请求消息有效。
在617,服务器计算机680可以将服务器盲化因子归零,以使其无法恢复。
在618,服务器计算机680可以将包括服务器R签名,服务器盲化公钥和服务器加密数据的响应消息发送到客户端计算机680。响应消息可能会在不安全的网络上发送。可以以明文形式(例如未加密)发送服务器盲化公钥和服务器R签名。但是,服务器盲化公钥是基于服务器盲化因子的,服务器盲化因子只能在此特定的通信会话中使用。另外,服务器R签名不包含标识服务器计算机680的信息。而是,将标识服务器计算机680的任何信息包括在服务器L签名中,该服务器L签名包括在加密的服务器数据中。因此,拦截此消息以及服务器计算机680发送的其他消息的第三方可能无法跟踪服务器计算机680。客户端计算机640可以接收响应消息。
在619,客户端计算机640可以使用在响应消息中接收到的客户端盲化因子和服务器盲化公钥来确定第二共享秘密。客户端计算机640在619确定的第二共享秘密可以与服务器计算机680在612使用客户端盲化公钥,服务器盲化因子和服务器静态私钥确定的第二共享秘密相同。客户端计算机640还可以使用密钥导出函数和第二共享秘密来确定相同的第二会话密钥(也由服务器计算机680确定)。
在620,在确定第二共享秘密和第二会话密钥之后,客户端计算机640可以将客户端盲化因子归零。即,客户端计算机640可以删除客户端盲化因子,以便以后无法恢复。此外,即使客户端盲化因子在被归零之前的短时间内被泄漏并被第三方获得,第三方也将无法使用客户端盲化因子来解密任何其他通信,因为它仅用于解密此特定的响应消息。此外,即使第三方获得了对客户端计算机的静态私钥和服务器计算机的静态私钥的访问,在没有获得客户端盲化因子的情况下,他们无法解密响应消息,客户端盲化因子在接收到响应消息后会立即归零。因此,保持了完美的前向保密性。
在621,客户端计算机540可以使用第二共享秘密(例如,使用第二会话密钥)对加密的服务器数据进行解密,以获得服务器L签名,服务器盲化因子,服务器证书(对应于用于加密的静态密钥对的静态公钥)和服务器有效载荷数据592。客户端计算机640可以例如使用带有关联数据的认证加密(AEAD)解密过程来执行解密。
在622处,客户端计算机640可以使用服务器静态公钥(包含在客户端证书中),服务器L签名,服务器R签名和加密的服务器数据,来验证包括服务器L签名和服务器R签名两者的服务器签名。由于可以使用服务器的静态公钥来验证基于加密服务器数据的服务器签名,因此服务器计算机680无法否认响应消息。
然后,客户端计算机640和服务器计算机680可以结束通信会话,或者它们可以继续使用第二会话密钥进行安全通信。
图6的消息流使客户端计算机640和服务器计算机680能够使用不可追踪的消息来建立安全的通信,从而确保通信的机密性并保持客户端计算机640,服务器计算机680及其用户的隐私。另外,客户端计算机640也不能否认请求消息,因为它包括客户端签名。服务器计算机680也不能否认响应消息,因为它包括服务器签名。另外,客户端签名和服务器签名不仅基于未加密的数据,还基于它们各自的加密数据,从而提高了安全性。此外,客户端和服务器签名不包含可识别的信息,因为L签名部分已加密。因此,组合的L签名和R签名是私有的,且匿名的。此外,请求消息和响应消息保持了完美的前向保密性,因为它们的加密取决于客户端盲化因子和服务器盲化因子,它们在解密过程不需要它们之后立即被归零。另外,由于仅使用一个请求消息和一个响应消息来实现该解决方案,因此减少了网络和计算资源的使用。
VI.安全通信方法
下面参考图7和图8来描述建立安全通信的方法。本文中描述的消息流可以合并这些方法或其一部分。
A.请求和建立安全通信的方法
图7示出了根据一些实施方案的由第一计算机执行的用于请求和建立安全通信的方法的流程图700。该方法例如可以由以上讨论的客户端计算机440,客户端计算机540或客户端计算机640执行。在开始该方法之前,第一计算机可以存储第一计算机的第一静态私钥,第一计算机的对应于第一静态私钥的第一静态公钥,以及第二计算机的第二静态公钥。
在701,第一计算机可以生成第一盲化因子。可以使用伪随机数生成器来生成第一盲化因子。第一盲化因子可用作私有椭圆曲线密钥。
在702,第一计算机可以使用第一盲化因子来确定第一盲化公钥。第一盲化公钥和第一盲化因子可以形成椭圆曲线密钥对。
在703,第一计算机可以通过使用第一静态私钥对第一盲化公钥进行签名,来生成第一计算机签名。第一计算机还可以使用第一静态私钥对第二计算机的敏感客户端数据和认证公钥进行签名。第一计算机可以使用数字签名算法(例如,ECDSA)来生成签名。
在704,第一计算机可以使用第一盲化因子和第二计算机的第二静态公钥来确定第一共享秘密。第一共享秘密可用于加密敏感的客户端数据。第一计算机还可以使用第一共享秘密来确定会话密钥。
在705,第一计算机可以使用第一共享秘密来对第一计算机数据进行加密。第一计算机数据可以包括第一静态公钥和第一计算机签名,以获得加密的第一计算机数据。
在706,第一计算机可以向第二计算机发送第一消息,其中包括第一盲化公钥和加密的第一计算机数据。第二计算机生成第一共享秘密,然后验证第一计算机签名。
使用图7的方法,第一计算机可以向第二计算机发送消息,以便第二计算机可以验证第一计算机的签名,从而确保是第一计算机生成了该消息。
B.响应建立安全通信的请求的方法
图8示出了根据一些实施方案的用于响应建立安全通信的请求的方法的流程图800。该方法例如可以由以上讨论的服务器计算机480,服务器计算机580或服务器计算机680执行。在开始该方法之前,第二计算机可以存储第二计算机的第二静态私钥以及第二计算机的对应于第二静态私钥的第二静态公钥。
在801,第二计算机可以从第一计算机接收第一消息,该消息包括第一计算机的第一盲化公钥和第一计算机的加密的第一计算机数据。第一消息可以由第一计算机使用以上参考图7描述的方法来生成。
在802,第二计算机可以使用第一盲化公钥和第二静态私钥来确定第一共享秘密。第二计算机可以确定由第一计算机确定的相同的第一共享秘密。
在803,第二计算机可以使用第一共享秘密来解密加密的第一计算机数据以获得第一计算机数据,该第一计算机数据包括第一计算机的第一静态公钥和第一计算机签名。第一计算机签名可以由第一计算机使用第一计算机的第一静态私钥对第一盲化公钥进行签名来生成。第一静态私钥可以对应于第一静态公钥。
在804,第二计算机可以使用第一计算机的第一静态公钥和第一盲化公钥来验证第一计算机签名。第二计算机可以使用数字签名算法(例如,ECDSA)来验证第一计算机签名。
在805,第二计算机可以发送第二消息,其中包括第二计算机的第二盲化公钥和加密的第二计算机数据。可以响应于第一消息而提供第二消息的第二计算机数据。
使用图8的方法,第二计算机可以通过验证第一计算机签名来认证第一计算机。
V.安全通信的详细方法
第一计算机和第二计算机可以使用不可追踪的消息建立安全的通信,这些通信可提供如本文所述的不可否认性和完美的前向保密性。这种安全通信可以由执行方法的第一和第二计算机通过实现下面参考图9、10和11描述的一组指令来建立。下表1包括图9、10和11中使用的术语和函数的一些定义。参考图9、10和11描述的所有指令、术语和函数的一部分可以在适当的情况下在这里描述的消息流中实现。参考图9、10和11描述的指令、术语和函数是示例性的,而不是穷尽的。
Figure BDA0002328637780000251
Figure BDA0002328637780000261
表1
A.提供客户端的完美的前向保密性和不可否认性的安全通信的方法
图9示出了根据一些实施方案的用于执行计算机实现的方法的步骤表900,该方法用于在客户端计算机和服务器计算机之间建立具有完美的前向保密性的安全且不可追踪的通信,使得客户端计算机不能否认其消息。客户端计算机可以是例如接口设备(IFD)。服务器计算机可以是例如集成电路芯片(ICC)或移动设备。表900中的所有步骤中的一些步骤可以在本文所述的消息流(例如图4的消息流)中执行。另外,表900中的步骤可以以不同的顺序执行。
在901,客户端计算机可以存储服务器计算机的认证公钥的第n个版本(Q_s_{n})。客户端计算机可能先前已从服务器计算机接收到此特定版本的服务器计算机公钥。客户端计算机还可以存储服务器计算机证书的第n个版本(C_s_{n}),以认证服务器计算机的证书链。客户端计算机还可以存储客户端敏感数据(“SD_c”)。客户端敏感数据可以是在请求消息中发送到服务器计算机的有效载荷的一部分。客户端计算机还可以存储用于标识服务器计算机的服务器标识符(“ID_s”)。客户端计算机还可以存储用于认证客户端计算机的证书链的客户端证书(“C_c”)。客户端计算机还可以存储与对应的客户端认证公钥(“Q_c”)匹配的客户端认证私钥(“d_c”),从而形成椭圆曲线密钥对。可以基于客户端认证私钥(Q_c=[d_c]P),使用公钥算法(“P”)来确定客户端认证公钥(“Q_c”)。客户端计算机还可以存储种子(“seed”)。种子可以是可包含在消息中的信任时间值或计数器值,以指示该消息的新鲜度或及时性。
服务器计算机可以存储服务器认证公钥第n个版本(Q_s_{n})和相应的服务器认证私钥(d_s_{n}),这些密钥构成椭圆曲线密钥对。服务器计算机可以基于服务器认证私钥(Q_s_{n}=[d_s_{n}]P),使用公钥算法(“P”)来确定服务器认证公钥。服务器计算机还可以存储服务器证书的第n个版本(C_s_{n}),以认证服务器计算机的证书链。服务器计算机还可以存储服务器敏感数据(“SD_s”),其包括在发送到客户端计算机的加密有效载荷中。服务器计算机还可以存储下一版本的服务器认证公钥(“Q_s_{n+1}”),服务器认证私钥(“d_s_{n+1}”)和相应证书(“C_s_{n+1}”)。下一版本的服务器认证公钥(“Q_s_{n+1}”)可以是不同的公钥,但是可以使用与服务器认证公钥(“Q_s_{n}”)对应的服务器认证私钥(“d_s_{n}”)进行签名,以便继续证书链。
在902,客户端计算机可以使用伪随机数生成器(“PRNG()#[0..q-1]”)来生成客户端盲化因子(“d_bc”)。
在903,客户端计算机可以使用公钥算法(“P”)和客户端盲化因子(“Q_bc=[d_bc].P””)来确定盲化客户端公钥(“Q_bc”)。
在904,客户端计算机可以确定第一中间共享秘密(“Z_1”)。第一中间共享秘密可以基于椭圆曲线Diffie-Hellman共享结果点的x坐标,该结果基于客户端盲化因子和服务器认证公钥(Z_1=[d_bc].Q_s_{n})。
在905,客户端计算机可以基于盲化客户端公钥的椭圆曲线x坐标,确定此会话的客户端标识符(“sID_c”),(sID_c=x-coord(Q_bc))。客户端标识符(“sID_c”)可以是客户端公共加密密钥的x坐标的截断值。
在906,客户端计算机可以基于第一中间共享秘密(“Z_1”),服务器标识符(“ID_s”)和客户端标识符(“sID_c”),使用密钥导出函数(“KDF”),来确定第一会话密钥(“sk_1_c”),(sk_1_c=KDF(Z_1,ID_s,sID_c))。
在907,客户端计算机可以通过与客户端认证私钥(“d_c”)一起使用数字签名算法(例如,ECDSA),对存储的种子、客户端敏感数据(“SD_c”)、盲化客户端公钥(“Q_bc”)和服务器计算机的认证公钥的第n版本(“Q_s_{n}”)进行签名来确定客户端签名(“sig_c”),(sig_c=sign(d_c,seed|SD_c|Q_bc|Q_s_{n}))。
在908,客户端计算机可以使用第一个会话密钥(“sk_1_c”)来生成加密的客户端数据(“enc_c”)。可以使用具有关联数据的认证加密(AEAD)来执行加密,(enc_c=AEAD(sk_1_c,seed|SD_c|C_c|sig_c|PAD_c,Q_bc)。由客户端计算机加密的数据可以包括种子,客户端敏感数据(“SD_c”),客户端签名(“sig_c”)和客户端加密填充(“PAD_c”)。客户端加密填充(“PAD_c”)可以基于所使用的加密算法,为加密的数据添加适当的长度。加密还可以基于关联数据,该关联数据按原样保留(例如,不是加密),但是为了完整性而对其进行控制。关联的数据可以包括盲化客户端公钥(“Q_bc”)。
在909,客户端计算机可以将第一中间共享秘密(“Z_1”)和第一会话密钥(“sk_1_c”)归零。
在910,客户端计算机可以将请求消息发送到服务器计算机,该请求消息包括盲化客户端公钥(“Q_bc”)和加密客户端数据(“enc_c”)。这样,请求消息是“不可追踪的”,因为既不能使用盲化客户端公钥(“Q_bc”),也不能使用加密的客户端数据(“enc_c”)来识别或跟踪客户端计算机。例如,可用于标识客户端计算机(因为其证书链可用于认证客户端计算机)的客户端认证公钥(“Q_c”),不会以明文形式发送,而是被加密了。仅以明文方式发送基于随机生成的客户端盲化因子(“d_bc”)的盲化客户端公钥(“Q_bc”)。
在911,服务器计算机可以验证盲化客户端公钥(“Q_bc”)属于椭圆曲线域。
在912,服务器计算机可以确定与由客户端计算机确定的相同的第一中间共享秘密(“Z_1”)。服务器计算机可以使用服务器认证私钥的第n个版本(d_s_{n})和盲化客户端公钥来确定第一中间共享秘密(Z_1),(Z_1=[d_s_{n}].Q_bc)。
在913,服务器计算机可以基于盲化客户端公钥的椭圆曲线x坐标,来确定客户端标识符(“sID_c”),(sID_c=x-coord(Q_bc))。客户端标识符(“sID_c”)可以是客户端公共加密密钥的x坐标的截断值。
在914,服务器计算机可以基于第一中间共享秘密(“Z_1”),服务器标识符(“ID_s”)和客户端标识符(“sID_c”),使用密钥导出函数(“KDF”),来确定第一会话密钥(“sk_1_s”),(sk_1_c=KDF(Z_1,ID_s,sID_c))。
在915,服务器计算机可以使用第一会话密钥(“sk_1_c”)和解密算法(AEAD-1)来解密加密的客户端数据(“enc_c”),以确定种子、客户端敏感数据(“SD_c”)、客户端签名(“sig_c”)和客户端加密填充(“PAD_c”),(seed|SD_c|C_c|sig_c|PAD_c=AEAD-1(sk_1_c,enc_c,Q_bc))。
在916,服务器计算机可以验证种子(例如,计数器或时间)以证明客户端盲化因子是新鲜的(例如,自从生成客户端盲化因子以来的时间量不超过某个阈值)。
在917,服务器计算机可以将第一会话密钥(“sk_1_c”)和第一中间共享秘密(“Z_1”)归零。
在918,服务器计算机可以通过从客户端证书(“C_c”)中提取客户端认证公钥(“Q_c”)来确定它,(Q_c=PubK(C_c))。
在919,服务器计算机可以验证客户端证书(“C_c”)的签名,并验证客户端认证公钥(“Q_c”)属于椭圆曲线域。
在920,服务器计算机可以使用数字签名算法(例如,ECDSA),以及种子,客户端敏感数据(“SD_c”),盲化客户端公钥(“Q_bc”)和服务器计算机认证公钥的第n版本(“Q_s_{n}”),使用客户端认证公钥(“Q_c”),来验证客户端签名(“sig_c”),(verify(Q_c,sig_c,seed|SD_c|Q_bc|Q_s_{n}))。客户端签名(“sig_c”)提供了客户端计算机的不可否认性,因为可以使用客户端认证公钥(“Q_c”)对其进行验证,从而确保计算机可以访问客户端认证私钥(“d_c”)(例如,客户端计算机,如果维护了安全性,则仅是客户端计算机)。另外,客户端签名(“sig_c”)是通过对客户端敏感数据(“SD_c”),盲化客户端公钥(“Q_bc”)和服务器计算机认证公钥的第n版(“Q_s_{n}”)进行签名而生成的。因此,客户端签名(“sig_c”)不仅提供了客户端计算机的不可否认性,而且还将此签名限制到与此服务器计算机之间的特定会话。因此,没有其他计算机可以声称是此消息的接收者。
在921,服务器计算机可以使用伪随机数生成器(d_bs=PRNG()#[0..q-1])来生成服务器盲化因子(“d_bs”)。
在922,服务器计算机可以使用服务器盲化因子(“d_bs”)、服务器认证私钥的下一版本(“d_s_{n+1}”)和盲化客户端公钥(“Q_bc”)来确定第二中间共享秘密(“Z”),(Z=[d_bs.d_s_{n+1}]Q_bc)。
在923,服务器计算机可以使用服务器盲化因子(“d_bs”)和服务器计算机认证公钥的下一版本(n+1),即(“Q_s_{n+1}”)(Q_bs=[d_bs].Q_s_{n+1}),来确定盲化服务器公钥(“Q_bs”)。
在924,服务器计算机可以使用盲化服务器公钥(“Q_bs”),来确定此通信会话的服务器标识符(“sID_s”)。服务器标识符(“sID_s”)可以基于盲化服务器公钥(“Q_bs”)的椭圆曲线x坐标(sID_s=x-coord(Q_bs))。
在925,服务器计算机可以使用密钥导出函数,基于第二中间共享秘密(“Z”),该通信会话的服务器标识符(“sID_s”)和该会话的客户端标识符(“sID_c”),来确定第二会话密钥(“sk_s|sk_c”),(sk_s|sk_c=KDF(Z,sID_s,sID_c))。第二会话密钥(“sk_s/sk_c”)可以用于加密在客户端和服务器之间发送的将来消息,以便在每个方向(例如,客户端到服务器和服务器到客户端)上使用不同的加密密钥。
在926,服务器计算机可以使用第二会话密钥(“sk_s”)来生成加密的服务器数据(“enc_s”)。可以使用具有关联数据的认证加密(AEAD)来执行加密,(enc_s=AEAD(sk_s,d_bs|C_s_{n+1}|SD_s|PAD_s,Q_bs))。由服务器计算机加密的数据可以包括服务器盲化因子(“d_bs”)、服务器证书的下一版本(n+1)(“C_s_{n+1}”)(与服务器计算机的认证公钥的下一版本(n+1)(“Q_s_{n+1}”)相关联),服务器敏感数据(“SD_s”)(例如,响应于客户端请求的服务器有效载荷),以及服务器加密填充(“PAD_s”)。服务器加密填充(“PAD_s”)可以基于所使用的加密算法,为加密的数据添加适当的长度。加密还可以基于关联数据,该关联数据按原样保留(例如,不是加密),但是为了完整性而对其进行控制。关联的数据可以包括盲化服务器公钥(“Q_bs”)。
在927,服务器计算机可以将第二会话密钥(“sk_s”),第二中间共享秘密(“Z”)和服务器盲化因子(“d_bs”)归零。通过在917将第一会话密钥(“sk_1_c”)和第一中间共享秘密(“Z_1”)归零,然后在928将第二会话密钥(“sk_s”),第二中间共享秘密(“Z”)和服务器盲化因子(“d_bs”)归零,服务器计算机将保持完美的前向保密性。之所以保持完美的前向保密性,是因为删除了所有可能用于破解响应消息加密的数据(例如sk_s,Z,d_bs,sk_1_c和Z_1)。例如,服务器计算机上剩余的数据,例如静态服务器认证私钥(d_s)和静态服务器认证公钥(Q_s),并未用于加密加密的服务器数据(enc_s)。
在928,服务器计算机可以向客户端计算机发送响应消息,包括盲化服务器公钥(“Q_bs”)和加密的服务器数据(“enc_s”)。这样,响应消息是“不可追踪的”,因为既不能使用盲化服务器公钥(“Q_bs”)也不能使用加密服务器数据(“enc_s”)来识别或跟踪服务器计算机。例如,可用于标识服务器计算机的静态服务器认证公钥(“Q_s”)(因为其证书链可用于认证服务器计算机)不会以明文形式发送,而是被加密。仅以明文方式发送基于随机生成的服务器盲化因子(“d_bs”)的盲化服务器公钥(“Q_bs”)。
在929,客户端计算机可以验证盲化服务器公钥(“Q_bs”)属于椭圆曲线域。
在930,客户端计算机可以使用客户端盲化因子(“d_bc”)和盲化服务器公钥(“Q_bs”),来确定第二中间共享秘密(“Z”),(Z=[d_bc].Q_bs)。
在931,客户端计算机可以使用盲化服务器公钥(“Q_bs”),来确定此通信会话的服务器标识符(“sID_s”)。服务器标识符(“sID_s”)可以基于盲化服务器公钥(“Q_bs”)的椭圆曲线x坐标(sID_s=x-coord(Q_bs))。
在932,客户端计算机可以使用密钥导出函数,基于第二中间共享秘密(“Z”),该通信会话的服务器标识符(“sID_s”)和该会话的客户端标识符(“sID_c”),来确定第二会话密钥(“sk_s|sk_c”),(sk_s|sk_c=KDF(Z,sID_s,sID_c))。
在933,客户端计算机可以将第二中间共享秘密(“Z”)和客户端盲化因子(“d_bc”)归零。
在934,客户端计算机可以使用第一个会话密钥(“sk_s”)和解密算法(AEAD-1),对加密的服务器数据(“enc_s”)进行解密,以确定服务器盲化因子(“d_bs”),服务器证书的下一版本(“C_s_{n+1}”),服务器敏感数据(“SD_s”)和服务器加密填充(“PAD_s”)。盲化服务器公钥(“Q_bs”)可以用作解密算法中的附加数据。
在935,客户端计算机可以通过从服务器证书的下一版本(“C_s_{n+1}”)中提取服务器公钥的下一版本(“Q_s_{n+1}”)来确定它,(Q_s_{n+1}=PubK(C_s_{n+1})。
在936,客户端计算机可以验证服务器证书(“C_s_{n+1}”)的签名,并可以验证服务器公钥(“Q_s_{n+1}”)属于椭圆曲线域。
在937,客户端计算机可以通过使用服务器盲化因子(“d_bs”)和服务器公钥(“Q_s_{n+1}”),确定盲化服务器公钥(“Q_bs”),来验证响应消息中接收到的盲化服务器公钥(“Q_bs”)。本身对盲化服务器公钥(“Q_bs”)的验证可能不会提供不可否认性。如上所述,可以使用签名来提供不可否认性。
在938,客户端计算机可以将服务器盲化因子(“d_bs”)归零。
使用表900中所示的方法,客户端计算机和服务器计算机可以仅使用两条不可追踪的消息建立安全通信,这可以提供客户端计算机的不可否认性并保持完美的前向保密性。
B.提供客户端和服务器的完美前向保密性和不可否认性的安全通信的方法
图10示出了根据一些实施方案的用于执行计算机实现的方法中的步骤表1000,该方法用于在客户端计算机和服务器计算机之间建立具有完美前向保密性的安全且不可追踪的通信,使得客户端计算机和服务器计算机不能否认它们的消息。客户端计算机可以是例如接口设备(IFD)。服务器计算机可以是例如集成电路芯片(ICC)或移动设备。表1000中的所有步骤中的一些步骤可以在本文所述的消息流(例如图5的消息流)中执行。另外,表1000中的步骤可以以不同的顺序执行。
在1001,客户端计算机可以存储服务器计算机的认证公钥的第n个版本(Q_s_{n})。客户端计算机可能先前已从服务器计算机接收到此特定版本的服务器计算机公钥。客户端计算机还可以存储服务器计算机证书的第n个版本(C_s_{n}),以认证服务器计算机的证书链。客户端计算机还可以存储客户端敏感数据(“SD_c”)。客户端敏感数据可以是在请求消息中发送到服务器计算机的有效载荷的一部分。客户端计算机还可以存储用于标识服务器计算机的服务器标识符(“ID_s”)。客户端计算机还可以存储用于认证客户端计算机的证书链的客户端证书(“C_c”)。客户端计算机还可以存储与对应的客户端认证公钥(“Q_c”)匹配的客户端认证私钥(“d_c”),从而形成椭圆曲线密钥对。可以基于客户端认证私钥(Q_c=[d_c]P),使用公钥算法(“P”)来确定客户端认证公钥(“Q_c”)。客户端计算机还可以存储种子(“seed”)。种子可以是可包含在消息中的信任时间值或计数器值,以指示该消息的新鲜度或及时性。
服务器计算机可以存储第n个版本的服务器认证公钥(Q_s_{n})和相应的服务器认证私钥(d_s_{n}),这些密钥构成椭圆曲线密钥对。服务器计算机可以基于服务器认证私钥(Q_s_{n}=[d_s_{n}]P),使用公钥算法(“P”)来确定服务器认证公钥。服务器计算机还可以存储服务器证书的第n个版本(C_s_{n}),以认证服务器计算机的证书链。服务器计算机还可以存储服务器敏感数据(“SD_s”),其包括在发送到客户端计算机的加密有效载荷中。服务器计算机还可以存储下一版本的服务器认证公钥(“Q_s_{n+1}”),服务器认证私钥(“d_s_{n+1}”)和相应证书(“C_s_{n+1}”)。
在1002,客户端计算机可以使用伪随机数生成器(“PRNG()#[0..q-1]”)来生成客户端盲化因子(“d_bc”)。
在1003,客户端计算机可以使用公钥算法(“P”)和客户端盲化因子(“Q_bc=[d_bc].P””)来确定盲化客户端公钥(“Q_bc”)。
在1004,客户端计算机可以确定第一中间共享秘密(“Z_1”)。第一中间共享秘密可以基于椭圆曲线Diffie-Hellman共享结果点的x坐标,该结果基于客户端盲化因子和服务器认证公钥(Z_1=[d_bc].Q_s_{n})。
在1005,客户端计算机可以基于盲化客户端公钥的椭圆曲线x坐标,确定此会话的客户端标识符(“sID_c”)(sID_c=x-coord(Q_bc))。客户端标识符(“sID_c”)可以是客户端公共加密密钥的x坐标的截断值。
在1006,客户端计算机可以基于第一中间共享秘密(“Z_1”),服务器标识符(“ID_s”)和客户端标识符(“sID_c”),使用密钥导出函数(“KDF”),来确定第一会话密钥(“sk_1_c”)(sk_1_c=KDF(Z_1,ID_s,sID_c))。
在1007,客户端计算机可以通过与客户端认证私钥(“d_c”)一起使用数字签名算法(例如,ECDSA),对存储的种子、客户端敏感数据(“SD_c”)、盲化客户端公钥(“Q_bc”)和服务器计算机的认证公钥的第n版本(“Q_s_{n}”)进行签名来确定客户端签名(“sig_c”),(sig_c=sign(d_c,seed|SD_c|Q_bc|Q_s_{n}))。
在1008,客户端计算机可以使用第一个会话密钥(“sk_1_c”)来生成加密的客户端数据(“enc_c”)。可以使用具有关联数据的认证加密(AEAD)来执行加密,(enc_c=AEAD(sk_1_c,seed|SD_c|C_c|sig_c|PAD_c,Q_bc)。由客户端计算机加密的数据可以包括种子,客户端敏感数据(“SD_c”),客户端签名(“sig_c”)和客户端加密填充(“PAD_c”)。客户端加密填充(“PAD_c”)可以基于所使用的加密算法,为加密的数据添加适当的长度。加密还可以基于关联数据,该关联数据按原样保留(例如,不是加密),但是为了完整性而对其进行控制。关联的数据可以包括盲化客户端公钥(“Q_bc”)。
在1009,客户端计算机可以将第一中间共享秘密(“Z_1”)和第一会话密钥(“sk_1_c”)归零。
在1010,客户端计算机可以将请求消息发送到服务器计算机,该请求消息包括盲化客户端公钥(“Q_bc”)和加密客户端数据(“enc_c”)。这样,请求消息是“不可追踪的”,因为既不能使用盲化客户端公钥(“Q_bc”),也不能使用加密的客户端数据(“enc_c”)来识别或跟踪客户端计算机。例如,可用于标识客户端计算机(因为其证书链可用于认证它)的客户端认证公钥(“Q_c”),不会以明文形式发送,而是被加密了。仅以明文方式发送基于随机生成的客户端盲化因子(“d_c”)的盲化客户端公钥(“Q_bc”)。
在1011,服务器计算机可以验证盲化客户端公钥(“Q_bc”)属于椭圆曲线域。
在1012,服务器计算机可以确定与由客户端计算机确定的相同的第一中间共享密钥(“Z_1”)。服务器计算机可以使用服务器认证私钥的第n个版本(d_s_{n})和盲化客户端公钥来确定第一中间共享秘密(Z_1),(Z_1=[d_s_{n}].Q_bc)。
在1013,服务器计算机可以基于盲化客户端公钥的椭圆曲线x坐标,来确定客户端标识符(“sID_c”)(sID_c=x-coord(Q_bc))。客户端标识符(“sID_c”)可以是客户端公共加密密钥的x坐标的截断值。
在1014,服务器计算机可以基于第一中间共享秘密(“Z_1”),服务器标识符(“ID_s”)和客户端标识符(“sID_c”),使用密钥导出函数(“KDF”),来确定第一会话密钥(“sk_1_s”)(sk_1_c=KDF(Z_1,ID_s,sID_c))。
在1015,服务器计算机可以使用第一会话密钥(“sk_1_c”)和解密算法(AEAD-1)来解密加密的客户端数据(“enc_c”),以确定种子、客户端敏感数据(“SD_c”)、客户端签名(“sig_c”)和客户端加密填充(“PAD_c”),(seed|SD_c|C_c|sig_c|PAD_c=AEAD-1(sk_1_c,enc_c,Q_bc))。
在1016,服务器计算机可以验证种子(例如,计数器或时间)以证明客户端盲化因子是新鲜的(例如,自从生成客户端盲化因子以来的时间量不超过某个阈值)。
在1017,服务器计算机可以将第一会话密钥(“sk_1_c”)和第一中间共享秘密(“Z_1”)归零。
在1018,服务器计算机可以通过从客户端证书(“C_c”)中提取客户端认证公钥(“Q_c”)来确定它,(Q_c=PubK(C_c))。
在1019,服务器计算机可以验证客户端证书(“C_c”)的签名,并验证客户端认证公钥(“Q_c”)属于椭圆曲线域。
在1020,服务器计算机可以使用数字签名算法(例如,ECDSA),以及种子,客户端敏感数据(“SD_c”),盲化客户端公钥(“Q_bc”)和服务器计算机认证公钥的第n版本(“Q_s_{n}”),使用客户端认证公钥(“Q_c”),来验证客户端签名(“sig_c”),(verify(Q_c,sig_c,seed|SD_c|Q_bc|Q_s_{n}))。客户端签名(“sig_c”)提供了客户端计算机的不可否认性,因为可以使用客户端认证公钥(“Q_c”)对其进行验证,从而确保计算机可以访问客户端认证私钥(“d_c”)(例如,客户端计算机,如果维护了安全性,则仅是客户端计算机)。另外,客户端签名(“sig_c”)是通过对客户端敏感数据(“SD_c”),盲化客户端公钥(“Q_bc”)和服务器计算机认证公钥的第n版(“Q_s_{n}”)进行签名而生成的。因此,客户端签名(“sig_c”)不仅提供了客户端计算机的不可否认性,而且还将此签名限制到与此服务器计算机之间的特定会话。因此,没有其他计算机可以声称是此消息的接收者。
在1021,服务器计算机可以使用伪随机数生成器(d_bs=PRNG()#[0..q-1])来生成服务器盲化因子(“d_bs”)。
在1022,服务器计算机可以使用服务器盲化因子(“d_bs”)、服务器认证私钥的下一版本(“d_s_{n+1}”)和盲化客户端公钥(“Q_bc”)来确定第二中间共享秘密(“Z”),(Z=[d_bs.d_s_{n+1}]Q_bc)。
在1023,服务器计算机可以使用服务器盲化因子(“d_bs”)和服务器计算机认证公钥的下一版本(n+1),即(“Q_s_{n+1}”)(Q_bs=[d_bs].Q_s_{n+1}),来确定盲化服务器公钥(“Q_bs”)。
在1024,服务器计算机可以使用盲化服务器公钥(“Q_bs”),来确定此通信会话的服务器标识符(“sID_s”)。服务器标识符(“sID_s”)可以基于盲化服务器公钥(“Q_bs”)的椭圆曲线x坐标(sID_s=x-coord(Q_bs))。
在1025,服务器计算机可以使用密钥导出函数,基于第二中间共享秘密(“Z”),该通信会话的服务器标识符(“sID_s”)和该会话的客户端标识符(“sID_c”),来确定第二会话密钥(“sk_s|sk_c”),(sk_s|sk_c=KDF(Z,sID_s,sID_c))。
在1026,客户端计算机可以通过与服务器认证私钥(“d_s”)一起使用数字签名算法(例如,ECDSA),对服务器计算机的证书的下一版本(n+1)(“C_s_{n+1}”)、服务器敏感数据(“SD_s”)(例如,有效负载)、盲化服务器公钥(“Q_bs”)和客户端认证公钥(“Q_c”)进行签名来确定服务器签名(“sig_c”)(sig_s=sign(d_s,C_s_{n+1}|SD_s|Q_bs|Q_c))。
在1027,服务器计算机可以使用第二会话密钥(“sk_s”)来生成加密的服务器数据(“enc_s”)。可以使用具有关联数据的认证加密(AEAD)来执行加密,(enc_s=AEAD(sk_s,d_bs|C_s_{n+1}|SD_s|PAD_s,Q_bs))。由服务器计算机加密的数据可以包括服务器证书的下一版本(n+1)(“C_s_{n+1}”)(与服务器计算机的认证公钥的下一版本(n+1)(“Q_s_{n+1}”)相关联),服务器敏感数据(“SD_s”)(例如,响应于客户端请求的服务器有效载荷),服务器签名(“sig_s”),以及服务器加密填充(“PAD_s”)。服务器加密填充(“PAD_s”)可以基于所使用的加密算法,为加密的数据添加适当的长度。加密还可以基于关联数据,该关联数据按原样保留(例如,不是加密),但是为了完整性而对其进行控制。关联的数据可以包括盲化服务器公钥(“Q_bs”)。
在1028,服务器计算机可以将第二会话密钥(“sk_s”),第二中间共享秘密(“Z”)和服务器盲化因子(“d_bs”)归零。通过在1017将第一会话密钥(“sk_1_c”)和第一中间共享秘密(“Z_1”)归零,然后在1028将第二会话密钥(“sk_s”),第二中间共享秘密(“Z”)和服务器盲化因子(“d_bs”)归零,服务器计算机将保持完美的前向保密性。之所以保持完美的前向保密性,是因为删除了所有可能用于破解响应消息加密的数据(例如sk_s,Z,d_bs,sk_1_c和Z_1)。例如,服务器计算机上剩余的数据,例如静态服务器认证私钥(d_s)和静态服务器认证公钥(Q_s),并未用于加密加密的服务器数据(enc_s)。
在1029,服务器计算机可以向客户端计算机发送响应消息,包括盲化服务器公钥(“Q_bs”)和加密的服务器数据(“enc_s”)。这样,响应消息是“不可追踪的”,因为既不能使用盲化服务器公钥(“Q_bs”)也不能使用加密服务器数据(“enc_s”)来识别或跟踪服务器计算机。例如,可用于标识服务器计算机的静态服务器认证公钥(“Q_s”)(因为其证书链可用于认证服务器计算机)不会以明文形式发送,而是被加密。仅以明文方式发送基于随机生成的服务器盲化因子(“d_bs”)的盲化服务器公钥(“Q_bs”)。
在1030,客户端计算机可以验证盲化服务器公钥(“Q_bs”)属于椭圆曲线域。
在1031,客户端计算机可以使用客户端盲化因子(“d_bc”)和盲化服务器公钥(“Q_bs”),来确定第二中间共享秘密(“Z”),(Z=[d_bc].Q_bs)。
在1032,客户端计算机可以使用盲化服务器公钥(“Q_bs”),来确定此通信会话的服务器标识符(“sID_s”)。服务器标识符(“sID_s”)可以基于盲化服务器公钥(“Q_bs”)的椭圆曲线x坐标(sID_s=x-coord(Q_bs))。
在1033,客户端计算机可以使用密钥导出函数,基于第二中间共享秘密(“Z”),该通信会话的服务器标识符(“sID_s”)和该会话的客户端标识符(“sID_c”),来确定第二会话密钥(“sk_s|sk_c”),(sk_s|sk_c=KDF(Z,sID_s,sID_c))。
在1034,客户端计算机可以将第二中间共享秘密(“Z”)和客户端盲化因子(“d_bc”)归零。
在1035,客户端计算机可以使用第一个会话密钥(“sk_s”)和解密算法(AEAD-1),对加密的服务器数据(“enc_s”)进行解密,以确定服务器证书的下一版本(“C_s_{n+1}”),服务器敏感数据(“SD_s”),服务器签名(“sig_s”),以及服务器加密填充(“PAD_s”)。盲化服务器公钥(“Q_bs”)可以用作解密算法中的附加数据。
在1036,客户端计算机可以通过从服务器证书的下一版本(“C_s_{n+1}”)中提取服务器公钥的下一版本(“Q_s_{n+1}”)来确定它,(Q_s_{n+1}=PubK(C_s_{n+1})。
在1037,客户端计算机可以验证服务器证书(“C_s_{n+1}”)的签名,并可以验证服务器公钥(“Q_s_{n+1}”)属于椭圆曲线域。
在1038,客户端计算机可以使用数字签名算法(例如ECDSA)和服务器证书的下一版本(“C_s_{n+1}”)、服务器敏感数据(“SD_s”)、盲化服务器公钥(“Q_bs”)和客户端公钥(“Q_c”),用服务器认证公钥(“Q_s”)来验证服务器签名(“sig_s”),(verify(Q_s,sig_s,C_s_{n+1}|SD_s|Q_bs|Q_c))。服务器签名(“sig_s”)提供了服务器计算机的不可否认性,因为可以使用服务器认证公钥(“Q_s”)对其进行验证,从而确保计算机可以访问服务器认证私钥(“d_s”)(例如,服务器计算机,如果维护了安全性,则仅是服务器计算机)。另外,服务器签名(“sig_s”)是通过对服务器敏感数据(“SD_s”),盲化服务器公钥(“Q_bs”)和客户端认证公钥(“Q_c”)进行签名而生成的。因此,服务器签名(“sig_s”)不仅提供了服务器计算机的不可否认性,而且还将此签名限制到与此客户端计算机之间的特定会话。因此,没有其他计算机可以声称是此消息的接收者。
使用表1000中所示的方法,客户端计算机和服务器计算机可以仅使用两条不可追踪的消息建立安全通信,这可以在保持完美的前向保密性的同时提供客户端计算机和服务器计算机的不可否认性。
C.用于使用两部分私有签名来提供客户端和服务器的完美前向保密性和不可否认性的安全通信的方法
图11示出了根据一些实施方案的用于执行计算机实现的方法以使用加密的签名部分和未加密的签名部分来建立安全且不可追踪的通信的步骤表1100。客户端计算机可以是例如接口设备(IFD)。服务器计算机可以是例如集成电路芯片(ICC)或移动设备。表1100中的所有步骤中的一些步骤可以在本文所述的消息流(例如图6的消息流)中执行。另外,表1100中的步骤可以以不同的顺序执行。
在1101,客户端计算机可以存储服务器计算机的认证公钥的第n个版本(Q_s_{n})。客户端计算机可能先前已从服务器计算机接收到此特定版本的服务器计算机公钥。客户端计算机还可以存储服务器计算机证书的第n个版本(C_s_{n}),以认证服务器计算机的证书链。客户端计算机还可以存储客户端敏感数据(“SD_c”)。客户端敏感数据可以是在请求消息中发送到服务器计算机的有效载荷的一部分。客户端计算机还可以存储用于标识服务器计算机的服务器标识符(“ID_s”)。客户端计算机还可以存储用于认证客户端计算机的证书链的客户端证书(“C_c”)。客户端计算机还可以存储与对应的客户端认证公钥(“Q_c”)匹配的客户端认证私钥(“d_c”),从而形成椭圆曲线密钥对。可以基于客户端认证私钥(Q_c=[d_c]P),使用公钥算法(“P”)来确定客户端认证公钥(“Q_c”)。客户端计算机还可以存储种子(“seed”)。种子可以是可包含在消息中的信任时间值或计数器值,以指示该消息的新鲜度或及时性。
服务器计算机可以存储第n个版本的服务器认证公钥(Q_s_{n})和相应的服务器认证私钥(d_s_{n}),这些密钥构成椭圆曲线密钥对。服务器计算机可以基于服务器认证私钥(Q_s_{n}=[d_s_{n}]P),使用公钥算法(“P”)来确定服务器认证公钥。服务器计算机还可以存储服务器证书的第n个版本(C_s_{n}),以认证服务器计算机的证书链。服务器计算机还可以存储服务器敏感数据(“SD_s”),其包括在发送到客户端计算机的加密有效载荷中。服务器计算机还可以存储下一版本的服务器认证公钥(“Q_s_{n+1}”),服务器认证私钥(“d_s_{n+1}”)和相应证书(“C_s_{n+1}”)。
在1102,客户端计算机可以使用伪随机数生成器(“PRNG()#[0..q-1]”)来生成客户端盲化因子(“d_bc”)。
在1103,客户端计算机可以使用公钥算法(“P”)和客户端盲化因子(“Q_bc=[d_bc].P””)来确定盲化客户端公钥(“Q_bc”)。
在1104,客户端计算机可以确定第一中间共享秘密(“Z_1”)。第一中间共享秘密可以基于椭圆曲线Diffie-Hellman共享结果点的x坐标,该结果基于客户端盲化因子和服务器认证公钥(Z_1=[d_bc].Q_s_{n})。
在1105,客户端计算机可以基于盲化客户端公钥的椭圆曲线x坐标,确定此会话的客户端标识符(“sID_c”)(sID_c=x-coord(Q_bc))。客户端标识符(“sID_c”)可以是客户端公共加密密钥的x坐标的截断值。
在1106,客户端计算机可以基于第一中间共享秘密(“Z_1”),服务器标识符(“ID_s”)和客户端标识符(“sID_c”),使用密钥导出函数(“KDF”),来确定第一会话密钥(“sk_1_c”)(sk_1_c=KDF(Z_1,ID_s,sID_c))。
客户端计算机可以使用匿名签名算法来确定客户端签名,该匿名签名算法包括L签名算法(“Sign_L()”)和R签名算法(“Sign_R()”)。在1107,客户端计算机可以使用L签名算法(“Sign_L()”)来确定L签名(“sigc_L”)和客户端随机签名值(“rand_c”)。
在1108,客户端计算机可以使用第一个会话密钥(“sk_1_c”)来生成加密的客户端数据(“enc_c”)。可以使用具有关联数据的认证加密(AEAD)来执行加密,(enc_c=AEAD(sk_1_c,seed|SD_c|C_c|sigc_L|PAD_c,Q_bc))。客户端计算机加密的数据可以包括种子,客户端敏感数据(“SD_c”),客户端证书(“C_c”),客户端L签名(“sigc_L”)和客户端加密填充(“PAD_c”)。客户端加密填充(“PAD_c”)可以基于所使用的加密算法,为加密的数据添加适当的长度。加密还可以基于关联数据,该关联数据按原样保留(例如,不是加密),但是为了完整性而对其进行控制。关联的数据可以包括盲化客户端公钥(“Q_bc”)。
在1109,客户端计算机可以使用R签名算法(“Sign_R()”)和客户端认证私钥(“d_c”),客户端随机签名值(“rand_c”)(来自L签名算法)和加密的客户端数据(“enc_c”),来确定客户端R签名(“sigc_R”)。这样,客户端R签名基于加密的客户端数据,而客户端L签名包括在加密的客户端数据中。
在1110,客户端计算机可以将第一中间共享秘密(“Z_1”)和第一会话密钥(“sk_1_c”)归零。
在1111,客户端计算机可以将请求消息发送到服务器计算机,该请求消息包括盲化客户端公钥(“Q_bc”),客户端R签名(“sigc_r”)和加密的客户端数据(“enc_c”)。这样,请求消息是“不可追踪的”,因为既不能使用盲化客户端公钥(“Q_bc”),客户端R签名(“sigc_r”),也不能使用加密的客户端数据(“enc_c”)来识别或跟踪客户端计算机。例如,可用于标识客户端计算机的客户端认证公钥(“Q_c”)和客户端L签名(“sigc_L”)不会以明文形式发送,而是被加密。
在1112,服务器计算机可以验证盲化客户端公钥(“Q_bc”)属于椭圆曲线域。
在1113,服务器计算机可以确定与由客户端计算机确定的相同的第一中间共享秘密(“Z_1”)。服务器计算机可以使用服务器认证私钥的第n个版本(d_s_{n})和盲化客户端公钥来确定第一中间共享秘密(Z_1),(Z_1=[d_s_{n}].Q_bc)。
在1114,服务器计算机可以基于盲化客户端公钥的椭圆曲线x坐标,来确定客户端标识符(“sID_c”)(sID_c=x-coord(Q_bc))。客户端标识符(“sID_c”)可以是客户端公共加密密钥的x坐标的截断值。
在1115,服务器计算机可以基于第一中间共享秘密(“Z_1”),服务器标识符(“ID_s”)和客户端标识符(“sID_c”),使用密钥导出函数(“KDF”),来确定第一会话密钥(“sk_1_c”)(sk_1_c=KDF(Z_1,ID_s,sID_c))。
在1116,服务器计算机可以使用第一会话密钥(“sk_1_c”)和解密算法(AEAD-1)来解密加密的客户端数据(“enc_c”),以确定种子、客户端敏感数据(“SD_c”)、客户端签名(“sig_c”)和客户端加密填充(“PAD_c”),(seed|SD_c|C_c|sig_c|PAD_c=AEAD-1(sk_1_c,enc_c,Q_bc))。
在1117,服务器计算机可以验证种子(例如,计数器或时间)以证明客户端盲化因子是新鲜的(例如,自从生成客户端盲化因子以来的时间量不超过某个阈值)。
在1118,服务器计算机可以将第一会话密钥(“sk_1_c”)和第一中间共享秘密(“Z_1”)归零。
在1119,服务器计算机可以通过从客户端证书(“C_c”)中提取客户端认证公钥(“Q_c”)来确定它,(Q_c=PubK(C_c))。
在1120,服务器计算机可以验证客户端证书(“C_c”)的签名,并验证客户端认证公钥(“Q_c”)属于椭圆曲线域。
在1121,服务器计算机可以使用“私有”数字签名算法,基于加密的客户端数据(“enc_c”),利用客户端认证公钥(“Q_c”),来验证客户端签名,该客户端签名包括具有的客户端签名(“sigc_L”)和客户端签名(“sigc_R”)。“私有”数字签名算法可以是私有的,因为它包括两种不同的算法,其中一种算法基于不包括识别信息的加密数据产生R签名,而另一种算法提供包括可以加密的识别信息的L签名。客户端签名(“sigc_L”和“sigc_R”一起)提供了客户端计算机的不可否认性,因为可以使用客户端认证公钥(“Q_c”)对其进行验证,从而确保计算机可以访问客户端认证私钥(“d_c”)(例如,客户端计算机,如果维护了安全性,则仅是客户端计算机)。另外,通过对加密的客户端数据(“enc_c”)本身进行签名来生成客户端R签名。另外,客户端R签名不包括识别信息。因此,客户端签名不仅提供了客户端计算机的不可否认性,而且在将此签名限制到与此服务器计算机之间的特定会话的同时,也是“不可追踪的”。因此,没有其他计算机可以声称是此消息的接收者。
在1122,服务器计算机可以使用伪随机数生成器(d_bs=PRNG()#[0..q-1])来生成服务器盲化因子(“d_bs”)。
在1123,服务器计算机可以使用服务器盲化因子(“d_bs”)、服务器认证私钥的下一版本(“d_s_{n+1}”)和盲化客户端公钥(“Q_bc”)来确定第二中间共享秘密(“Z”),(Z=[d_bs.d_s_{n+1}]Q_bc)。
在1124,服务器计算机可以使用服务器盲化因子(“d_bs”)和服务器计算机认证公钥的下一版本(n+1),即(“Q_s_{n+1}”)(Q_bs=[d_bs].Q_s_{n+1}),来确定盲化服务器公钥(“Q_bs”)。
在1125,服务器计算机可以使用盲化服务器公钥(“Q_bs”),来确定此通信会话的服务器标识符(“sID_s”)。服务器标识符(“sID_s”)可以基于盲化服务器公钥(“Q_bs”)的椭圆曲线x坐标(sID_s=x-coord(Q_bs))。
在1126,服务器计算机可以使用密钥导出函数,基于第二中间共享秘密(“Z”),该通信会话的服务器标识符(“sID_s”)和该会话的客户端标识符(“sID_c”),来确定第二会话密钥(“sk_s|sk_c”),(sk_s|sk_c=KDF(Z,sID_s,sID_c))。
服务器计算机可以使用匿名签名算法来确定服务器签名,该匿名签名算法包括L签名算法(“Sign_L()”)和R签名算法(“Sign_R()”)。在1127,服务器计算机可以使用L签名算法(“Sign_L()”)来确定L签名(“sigc_L”)和服务器随机签名值(“rand_s”)。
在1128,服务器计算机可以使用第二会话密钥(“sk_s”)来生成加密的服务器数据(“enc_s”)。可以使用具有关联数据的认证加密(AEAD)来执行加密,(enc_s=AEAD(sk_s,C_s_{n+1}|SD_s|sigs_L|PAD_s,Q_bs))。由服务器计算机加密的数据可以包括服务器证书(“C_s_{n+1}”),服务器敏感数据(“SD_s”),服务器L签名(“sigs_L”)和服务器加密填充(“PAD_s”)。服务器加密填充(“PAD_s”)可以基于所使用的加密算法,为加密的数据添加适当的长度。加密还可以基于关联数据,该关联数据按原样保留(例如,不是加密),但是为了完整性而对其进行控制。关联的数据可以包括盲化服务器公钥(“Q_bs”)。
在1129,服务器计算机可以使用R签名算法(“Sign_R()”)和服务器认证私钥(“d_s”)、服务器随机签名值(“rand_s”)(来自L签名算法)和加密的服务器数据(“enc_s”)来确定服务器R签名(“sigs_R”)。这样,服务器R签名基于加密的服务器数据,而服务器L签名包括在加密的服务器数据中。
在1130,服务器计算机可以将第二会话密钥(“sk_s”),第二中间共享秘密(“Z”)和服务器盲化因子(“d_bs”)归零。通过在1017将第一会话密钥(“sk_1_c”)和第一中间共享秘密(“Z_1”)归零,然后在1028将第二会话密钥(“sk_s”),第二中间共享秘密(“Z”)和服务器盲化因子(“d_bs”)归零,服务器计算机将保持完美的前向保密性。之所以保持完美的前向保密性,是因为删除了所有可能用于破解响应消息加密的数据(例如sk_s,Z,d_bs,sk_1_c和Z_1)。例如,服务器计算机上剩余的数据,例如静态服务器认证私钥(d_s)和静态服务器认证公钥(Q_s),并未用于加密加密的服务器数据(enc_s)。
在1131,服务器计算机可以向客户端计算机发送响应消息,包括盲化服务器公钥(“Q_bs”),服务器R签名(“sigc_R”),和加密的服务器数据(“enc_s”)。这样,响应消息是“不可追踪的”,因为既不能使用盲化服务器公钥(“Q_bs”),也不能使用服务器R签名(“sigc_R”),也不能使用加密的服务器数据(“enc_s”)来识别或跟踪服务器计算机。例如,可用于标识服务器计算机的静态服务器认证公钥(“Q_s”)不会以明文形式发送,而是被加密。
在1132,客户端计算机可以验证盲化服务器公钥(“Q_bs”)属于椭圆曲线域。
在1133,客户端计算机可以使用客户端盲化因子(“d_bc”)和盲化服务器公钥(“Q_bs”),来确定第二中间共享秘密(“Z”),(Z=[d_bc].Q_bs)。
在1134,客户端计算机可以使用盲化服务器公钥(“Q_bs”),来确定此通信会话的服务器标识符(“sID_s”)。服务器标识符(“sID_s”)可以基于盲化服务器公钥(“Q_bs”)的椭圆曲线x坐标(sID_s=x-coord(Q_bs))。
在1135,客户端计算机可以使用密钥导出函数,基于第二中间共享秘密(“Z”),该通信会话的服务器标识符(“sID_s”)和该会话的客户端标识符(“sID_c”),来确定第二会话密钥(“sk_s|sk_c”),(sk_s|sk_c=KDF(Z,sID_s,sID_c))。
在1136,客户端计算机可以将第二中间共享秘密(“Z”)和客户端盲化因子(“d_bc”)归零。
在1137,客户端计算机可以使用第一个会话密钥(“sk_s”)和解密算法(AEAD-1),对加密的服务器数据(“enc_s”)进行解密,以确定服务器证书的下一版本(“C_s_{n+1}”),服务器敏感数据(“SD_s”),服务器L签名(“sig_L”),以及服务器加密填充(“PAD_s”)。盲化服务器公钥(“Q_bs”)可以用作解密算法中的附加数据。
在1138,客户端计算机可以通过从服务器证书的下一版本(“C_s_{n+1}”)中提取服务器公钥的下一版本(“Q_s_{n+1}”)来确定它,(Q_s_{n+1}=PubK(C_s_{n+1})。
在1139,客户端计算机可以验证服务器证书(“C_s_{n+1}”)的签名,并可以验证服务器公钥(“Q_s_{n+1}”)属于椭圆曲线域。
在1140,客户端计算机可以使用“私有”数字签名算法,基于加密的服务器数据(“enc_s”),利用服务器认证公钥(“Q_s”),来验证服务器签名,该服务器签名包括服务器L签名(“sigs_L”)和服务器R签名(“sigs_R”)。“私有”数字签名算法可以是私有的,因为它包括两种不同的算法,其中一种算法基于不包括识别信息的加密数据产生R签名,而另一种算法提供包括可以加密的识别信息的L签名。服务器签名(“sigc_L”和“sigc_R”一起)提供了服务器计算机的不可否认性,因为可以使用服务器认证公钥(“Q_s”)对其进行验证,从而确保计算机可以访问服务器认证私钥(“d_s”)(例如,服务器计算机,如果维护了安全性,则仅是服务器计算机)。另外,通过对加密的服务器数据(“enc_s”)本身进行签名来生成服务器R签名。另外,服务器R签名不包括服务器计算机的识别信息。因此,服务器签名不仅提供了服务器计算机的不可否认性,而且在将该签名限制到与此客户端计算机之间的特定会话的同时,也是“不可追踪的”。因此,没有其他计算机可以声称是此消息的接收者。
使用表1100中所示的方法,客户端计算机和服务器计算机可以仅使用两条不可追踪的消息建立安全通信,这可以在保持完美的前向保密性的同时提供客户端计算机和服务器计算机的不可否认性。
以上描述是说明性的而不是限制性的。本发明的许多变化在所属领域的技术人员查阅本公开时可变得显而易见。因此,本发明的范围可以不参照上文的描述确定,而是可以参照所附权利要求连同其全部范围或等同物确定。
应理解,本发明的任何实施方案都可以使用硬件(例如专用集成电路或现场可编程门阵列)和/或使用计算机软件以控制逻辑的形式实施,其中通用可编程处理器是模块化的或集成的。如本文中所使用,处理器包含单核处理器、在同一集成芯片上的多核处理器,或在单个电路板上或网络化的多个处理单元。基于本公开和本文中所提供的教示,本领域的普通技术人员将知道并且了解使用硬件和硬件与软件的组合来实施本发明的实施方案的其他方式和/或方法。
本申请中所描述的任何软件部件或功能可被实施为要使用例如Java、C、C++、C#、Objective-C、Swift的任何合适计算机语言或例如Perl或Python的脚本语言,使用例如常规的或面向对象的技术由处理器执行的软件代码。软件代码可以存储为计算机可读介质上的一系列指令或命令以用于存储和/或传输。适合的非瞬态计算机可读介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、磁介质(诸如硬盘或软盘)或光介质(诸如光盘(CD)或DVD(数字通用盘))、闪存等等。计算机可读介质可以是此类存储或传输设备的任何组合。
用于包含代码或代码部分的存储介质和计算机可读介质可以包括本领域已知或使用的任何适当介质,其包括存储介质和通信介质,诸如但不限于在用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除式介质(包括RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备)、数据信号、数据传输或可以用来存储或传输期望信息并且可以由计算机访问的任何其他介质。基于本文中提供的公开和教导,本领域技术人员将了解实现各实施方案的其他方式和/或方法。
此类程序还可以使用适应于经由包含因特网的符合多种协议的有线、光学和/或无线网络进行传输的载波信号来编码和传输。因此,根据本发明的实施方案的计算机可读介质可以使用以此类程序编码的数据信号来创建。以程序代码编码的计算机可读介质可与兼容设备一起封装或与其他设备分开地提供(例如,经由因特网下载)。任何此类计算机可读介质可以驻留于单个计算机产品(例如,硬盘驱动器、CD或整个计算机***)上或内,且可存在于***或网络内的不同计算机产品上或内。计算机***可以包含用于将本文中所提及的任何结果提供给用户的监视器、打印机或其他合适的显示器。
本文中描述的任何方法可以完全地或部分地用包括可被配置成执行这些步骤的一个或多个处理器的计算机***执行。因此,实施方案可以涉及被配置成执行本文中描述的任何方法的步骤、可能具有执行相应步骤或相应步骤群组的不同组件的计算机***。尽管呈现为编号步骤,但本文中的方法的步骤可以同时或以不同顺序被执行。另外,这些步骤的部分可以与来自其他方法的掐他步骤的部分一起使用。同样,一个步骤的全部或部分可以是可选的。另外,任何方法的任何步骤可以用模块、单元、电路或用于执行这些步骤的其他手段来执行。
在不偏离本发明的实施方案的精神和范围下,具体实施方案的特定细节可以以任何适当方式组合。不过,本发明的其他实施方案可以涉及与每个单独的方面有关的特定实施方案,或者这些单独的方面的特定组合。
上文对本发明的示例性实施方案的描述已经出于图示和描述的目的呈现。不旨在是详尽的,或将本发明局限到描述的精确形式,根据上文的教导许多修改和变形是可能的。
除非明确指示有相反的意思,否则叙述“一个/种”或“该/所述”旨在表示“一个/种或多个/种”。除非明确指示有相反的意思,“或”的使用旨在表示是“包括性的或”,而不是“排他性的或”。术语“第一”、“第二”、“第三”、“第四”、“第五”、“第六”、“第七”、“第八”、“第九”、“第十”等的使用不一定表示不同元素的排序或编号,而是可以简单地用于命名目的以阐明不同的元素。“客户端”计算机和“服务器”计算机的使用不一定表示计算机的预期用途,而仅可以用于命名目的。
本文中提到的所有专利、专利申请、公开和描述出于所有目的通过引用被全部并入本文中。不承认它们是现有技术。

Claims (25)

1.一种用于在第一计算机和第二计算机之间执行通信的计算机实现的方法,所述方法包括:
由所述第一计算机存储所述第一计算机的第一静态私钥、所述第一计算机的对应于所述第一静态私钥的第一静态公钥和所述第二计算机的第二静态公钥;
由所述第一计算机生成第一盲化因子;
由所述第一计算机使用所述第一盲化因子确定第一盲化公钥;
由所述第一计算机通过使用所述第一静态私钥对所述第一盲化公钥进行签名来生成第一计算机签名;
由所述第一计算机使用所述第一盲化因子和所述第二静态公钥来确定第一共享秘密;
由所述第一计算机使用所述第一共享秘密对包括所述第一静态公钥和所述第一计算机签名的第一计算机数据进行加密,以获得加密的第一计算机数据;以及
由所述第一计算机向所述第二计算机发送包括所述第一盲化公钥和所述加密的第一计算机数据的第一消息。
2.如权利要求1所述的方法,其中所述第一盲化因子是使用伪随机数生成器生成的,并且其中所述第一盲化公钥是使用椭圆曲线公钥算法,根据所述第一盲化因子来确定的。
3.如权利要求1所述的方法,其中所述第一计算机数据还包括第一计算机证书,所述第一计算机证书包括第一静态公钥。
4.如权利要求1所述的方法,其还包括:
由所述第一计算机从所述第二计算机接收第二消息,所述第二消息包括所述第二计算机的第二盲化公钥和加密的第二计算机数据;
由所述第一计算机使用所述第一盲化因子和所述第二盲化公钥来确定第二共享秘密;以及
由所述第一计算机使用所述第二共享秘密来对所述加密的第二计算机数据进行解密。
5.如权利要求4所述的方法,其中所述第二计算机使用所述第一盲化公钥和所述第二计算机的对应于所述第二静态公钥的第二静态私钥来确定所述第一共享秘密,使用所述第一共享秘密来对所述加密的第一计算机数据进行解密,使用所述第一静态公钥来验证所述第一计算机签名,并且向所述第一计算机发送包括所述第二计算机的第二盲化公钥和加密的第二计算机数据的第二消息。
6.如权利要求4所述的方法,其中所述加密的第二计算机数据包括第二计算机签名,所述方法还包括:
由所述第一计算机使用所述第二静态公钥来验证所述第二计算机的第二计算机签名。
7.如权利要求4所述的方法,还包括使用所述第二静态公钥和第二计算机盲化因子来验证所述第二盲化公钥,其中所述加密的第二计算机数据包括所述第二计算机盲化因子。
8.一种用于在第一计算机和第二计算机之间执行通信的计算机实现的方法,所述方法包括:
由所述第二计算机存储所述第二计算机的第二静态私钥,以及所述第二计算机的对应于所述第二静态私钥的第二静态公钥;
由所述第二计算机从所述第一计算机接收第一消息,所述第一消息包括所述第一计算机的第一盲化公钥和所述第一计算机的加密的第一计算机数据;
由所述第二计算机使用所述第一盲化公钥和所述第二静态私钥来确定第一共享秘密;
由所述第二计算机使用所述第一共享秘密对所述加密的第一计算机数据进行解密,以获得第一计算机数据,所述第一计算机数据包括所述第一计算机的第一静态公钥和第一计算机签名,其中所述第一计算机签名是由所述第一计算机使用所述第一计算机的第一静态私钥对所述第一盲化公钥进行签名而生成的,所述第一静态私钥对应于所述第一静态公钥;以及
由所述第二计算机使用所述第一计算机的第一静态公钥和所述第一盲化公钥来验证所述第一计算机签名。
9.如权利要求8所述的方法,其还包括:
由所述第二计算机生成第二盲化因子;
由所述第二计算机使用所述第二盲化因子和所述第二静态公钥来确定所述第二计算机的第二盲化公钥;
由所述第二计算机使用所述第一盲化公钥、所述第二盲化因子和所述第二静态私钥来确定第二共享秘密;
由所述第二计算机使用所述第二共享秘密对包括所述第二静态公钥和所述第二盲化因子的第二计算机数据进行加密,以获得加密的第二计算机数据;以及
由所述第二计算机向所述第一计算机发送包括所述第二盲化公钥和所述加密的第二计算机数据的第二消息。
10.如权利要求8所述的方法,其还包括:
由所述第二计算机生成第二盲化因子;
由所述第二计算机使用所述第二盲化因子和所述第二静态公钥来确定所述第二计算机的第二盲化公钥;
由所述第二计算机使用所述第一盲化公钥、所述第二盲化因子和所述第二静态私钥来确定第二共享秘密;
由所述第二计算机通过使用所述第二静态私钥对所述第二盲化公钥进行签名来生成第二计算机签名;
由所述第二计算机使用所述第二共享秘密对包括所述第二静态公钥和所述第二计算机签名的第二计算机数据进行加密,以获得加密的第二计算机数据;以及
由所述第二计算机向所述第一计算机发送包括所述第二盲化公钥和所述加密的第二计算机数据的第二消息。
11.一种用于在第一计算机和第二计算机之间执行通信的计算机实现的方法,所述方法包括:
由所述第一计算机存储所述第一计算机的第一静态私钥、所述第一计算机的对应于所述第一静态私钥的第一静态公钥和所述第二计算机的第二静态公钥;
由所述第一计算机生成第一盲化因子;
由所述第一计算机使用所述第一盲化因子确定第一盲化公钥;
由所述第一计算机使用所述第一盲化因子和所述第二静态公钥来确定第一共享秘密;
由所述第一计算机使用左签名算法生成第一计算机左签名和第一计算机随机签名值;
由所述第一计算机使用所述第一共享秘密对包括所述第一静态公钥和所述第一计算机左签名的第一计算机数据进行加密,以获得加密的第一计算机数据;
由所述第一计算机通过使用右签名算法,用所述第一静态私钥对所述加密的第一计算机数据和所述第一计算机随机签名值进行签名来生成第一计算机右签名;以及
由所述第一计算机向所述第二计算机发送包括所述第一盲化公钥、所述第一计算机右签名以及所述加密的第一计算机数据的第一消息。
12.如权利要求11所述的方法,其中所述第一盲化因子是使用伪随机数生成器生成的;其中所述第一盲化公钥是使用椭圆曲线公钥算法根据所述第一盲化因子来确定的,并且其中所述第一计算机数据还包括第一计算机证书,所述第一计算机证书包括第一静态公钥。
13.如权利要求11所述的方法,其还包括:
由所述第一计算机从所述第二计算机接收第二消息,所述第二消息包括所述第二计算机的第二盲化公钥和加密的第二计算机数据;
由所述第一计算机使用所述第一盲化因子和所述第二盲化公钥来确定第二共享秘密;以及
由所述第一计算机使用所述第二共享秘密来对所述加密的第二计算机数据进行解密。
14.如权利要求13所述的方法,其中所述第二计算机使用所述第一盲化公钥和所述第二计算机的对应于所述第二静态公钥的第二静态私钥来确定所述第一共享秘密,使用所述第一共享秘密来对所述加密的第一计算机数据进行解密,使用所述第一静态公钥来验证所述第一计算机签名,并且向所述第一计算机发送包括所述第二计算机的第二盲化公钥和加密的第二计算机数据的第二消息。
15.如权利要求13所述的方法,其中所述加密的第二计算机数据包括第二计算机签名,所述方法还包括:
由所述第一计算机使用所述第二静态公钥来验证所述第二计算机的第二计算机签名。
16.如权利要求13所述的方法,还包括使用所述第二静态公钥和第二计算机盲化因子来验证所述第二盲化公钥,其中所述加密的第二计算机数据包括所述第二计算机盲化因子。
17.一种用于在第一计算机和第二计算机之间执行通信的计算机实现的方法,所述方法包括:
由所述第二计算机存储所述第二计算机的第二静态私钥,以及所述第二计算机的对应于所述第二静态私钥的第二静态公钥;
由所述第二计算机从所述第一计算机接收包括所述第一计算机的第一盲化公钥、第一计算机右签名和加密的第一计算机数据的第一消息,其中所述第一计算机右签名由所述第一计算机通过使用右签名算法,用所述第一计算机的第一静态私钥,对所述加密的第一计算机数据和第一计算机随机签名值进行签名来生成,其中所述第一计算机随机签名值由所述第一计算机使用左签名算法来生成;
由所述第二计算机使用所述第一盲化公钥和所述第二静态私钥来确定第一共享秘密;
由所述第二计算机使用所述第一共享秘密对所述加密的第一计算机数据进行解密以获得第一计算机数据,所述第一计算机数据包括所述第一计算机的对应于所述第一静态私钥的第一静态公钥和第一计算机左签名,其中所述第一计算机左签名是由所述第一计算机使用所述左签名算法生成的;以及
由所述第二计算机使用所述第一静态公钥和所述加密的第一计算机数据来验证所述第一计算机左签名和所述第一计算机右签名。
18.如权利要求17所述的方法,其中所述第一计算机生成第一盲化因子,使用所述第一盲化因子来确定所述第一盲化公钥,使用所述第一盲化因子和所述第二静态公钥来确定所述第一共享秘密,并且使用所述第一共享秘密对所述第一计算机数据进行加密。
19.如权利要求17所述的方法,其还包括:
由所述第二计算机生成第二盲化因子;
由所述第二计算机使用所述第二盲化因子和所述第二静态公钥来确定所述第二计算机的第二盲化公钥;
由所述第二计算机使用所述第一盲化公钥、所述第二盲化因子和所述第二静态私钥来确定第二共享秘密;
由所述第二计算机使用左签名算法生成第二计算机左签名和第二计算机随机签名值;
由所述第二计算机使用所述第二共享秘密对包括所述第二静态公钥和所述第二计算机左签名的第二计算机数据进行加密,以获得加密的第二计算机数据;
由所述第二计算机通过使用右签名算法,用所述第一静态私钥对所述加密的第二计算机数据和所述第一计算机随机签名值进行签名来生成第二计算机右签名;以及
由所述第二计算机向所述第一计算机发送包括所述第二盲化公钥、所述第二计算机右签名,以及所述加密的第二计算机数据的第二消息。
20.如权利要求19所述的方法,其中所述第一计算机使用所述第二盲化公钥来确定所述第二共享秘密,使用所述第二共享秘密来解密所述加密的第二计算机数据以获得所述第二计算机左签名,并且使用所述第二静态公钥来验证所述第二计算机右签名和所述第二计算机左签名。
21.一种计算机产品,包括存储多个指令的计算机可读介质,所述多个指令用于控制计算机***执行上述方法中任一项的操作。
22.一种***,其包括:
如权利要求21所述的计算机产品;以及
一个或多个处理器,其用于执行存储在所述计算机可读介质上的指令。
23.一种***,包括用于执行上述方法中任一项的构件。
24.一种***,被配置为执行上述方法中的任一项。
25.一种***,包括相应地执行上述方法中任一项的步骤的模块。
CN201880041699.2A 2017-06-21 2018-06-19 提供前向保密性的安全通信 Pending CN110771089A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/629,689 US10313133B2 (en) 2017-06-21 2017-06-21 Secure communications providing forward secrecy
US15/629,689 2017-06-21
PCT/US2018/038339 WO2018236908A1 (en) 2017-06-21 2018-06-19 SECURE COMMUNICATIONS PROVIDING PERSISTENT CONFIDENTIALITY

Publications (1)

Publication Number Publication Date
CN110771089A true CN110771089A (zh) 2020-02-07

Family

ID=64692838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880041699.2A Pending CN110771089A (zh) 2017-06-21 2018-06-19 提供前向保密性的安全通信

Country Status (4)

Country Link
US (2) US10313133B2 (zh)
EP (1) EP3642997B1 (zh)
CN (1) CN110771089A (zh)
WO (1) WO2018236908A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112039848A (zh) * 2020-08-05 2020-12-04 北京链飞未来科技有限公司 一种基于区块链公钥数字签名的Web认证方法、***和装置
CN112753203A (zh) * 2020-10-30 2021-05-04 华为技术有限公司 一种安全通信方法及装置
CN115462110A (zh) * 2020-04-30 2022-12-09 森萨塔科技公司 用于无线传感器网络的安全无线协议

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9258117B1 (en) * 2014-06-26 2016-02-09 Amazon Technologies, Inc. Mutual authentication with symmetric secrets and signatures
EP3651141B1 (en) * 2017-07-05 2021-12-08 Nippon Telegraph and Telephone Corporation Secure computing system, secure computing device, secure computing method, program, and recording medium
US11095662B2 (en) 2017-08-29 2021-08-17 Amazon Technologies, Inc. Federated messaging
US10791196B2 (en) 2017-08-29 2020-09-29 Wickr Inc. Directory lookup for federated messaging with a user from a different secure communication network
US11368442B2 (en) * 2017-08-29 2022-06-21 Amazon Technologies, Inc. Receiving an encrypted communication from a user in a second secure communication network
US11349659B2 (en) * 2017-08-29 2022-05-31 Amazon Technologies, Inc. Transmitting an encrypted communication to a user in a second secure communication network
US11146397B2 (en) * 2017-10-31 2021-10-12 Micro Focus Llc Encoding abelian variety-based ciphertext with metadata
US10693892B2 (en) * 2017-12-11 2020-06-23 International Business Machines Corporation Network attack tainting and tracking
US10887293B2 (en) * 2018-03-20 2021-01-05 International Business Machines Corporation Key identifiers in an obliviousness pseudorandom function (OPRF)-based key management service (KMS)
US10841080B2 (en) 2018-03-20 2020-11-17 International Business Machines Corporation Oblivious pseudorandom function in a key management system
US10887088B2 (en) * 2018-03-20 2021-01-05 International Business Machines Corporation Virtualizing a key hierarchy using a partially-oblivious pseudorandom function (P-OPRF)
US11115206B2 (en) 2018-08-23 2021-09-07 International Business Machines Corporation Assymetric structured key recovering using oblivious pseudorandom function
US10924267B2 (en) 2018-08-24 2021-02-16 International Business Machines Corporation Validating keys derived from an oblivious pseudorandom function
US10666431B1 (en) * 2019-03-11 2020-05-26 Capital One Services, Llc Systems and methods for enhancing web security
US11632235B2 (en) * 2019-04-09 2023-04-18 Samsung Electronics Co., Ltd. Method and apparatus for handling security procedure in mc communication system
US11336462B1 (en) 2019-09-10 2022-05-17 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography optimization
US11206135B2 (en) 2019-11-11 2021-12-21 International Business Machines Corporation Forward secrecy in Transport Layer Security (TLS) using ephemeral keys
DE102020112102B3 (de) * 2020-05-05 2021-05-20 Infineon Technologies Ag Verfahren und Vorrichtungen zur Erzeugung eines symmetrischen Sitzungsschlüssels für die verschlüsselte Kommunikation
US20210367767A1 (en) * 2020-05-21 2021-11-25 Marvell Asia Pte. Ltd. Methods and systems for secure network communication
IL275954A (en) 2020-07-09 2022-02-01 Google Llc Anonymous event confirmation with group signatures
IL275947A (en) * 2020-07-09 2022-02-01 Google Llc Anonymous Event Confirmation
US11258617B1 (en) * 2020-12-04 2022-02-22 Salesforce.Com, Inc. Device identity using key agreement
US20230239138A1 (en) * 2022-01-25 2023-07-27 Everything Blockchain Technology Corp. Enhanced secure cryptographic communication system
US20240048382A1 (en) * 2022-08-03 2024-02-08 1080 Network, Llc Systems, methods, and computing platforms for executing credential-less network-based communication exchanges
US20240113865A1 (en) * 2022-09-23 2024-04-04 Assa Abloy Ab Non-repudiation-free public key authentication protocols
US20240106634A1 (en) * 2022-09-23 2024-03-28 Assa Abloy Ab Privacy-strengthened public key authentication protocols
WO2024114880A1 (en) * 2022-11-28 2024-06-06 Assa Abloy Ab Systems and methods for conducting secure mutual authentication with asymmetric keys

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2228185C (en) * 1997-01-31 2007-11-06 Certicom Corp. Verification protocol
US8284934B2 (en) * 2009-07-21 2012-10-09 Cellco Partnership Systems and methods for shared secret data generation
US8868910B2 (en) * 2012-02-09 2014-10-21 Hewlett-Packard Development Company, L.P. Elliptic curve cryptographic signature
EP4027576B1 (en) * 2014-01-13 2023-11-22 Visa International Service Association Efficient methods for protecting identity in authenticated transmissions
JP6167990B2 (ja) * 2014-05-27 2017-07-26 パナソニックIpマネジメント株式会社 署名検証システム、検証装置、及び署名検証方法
CN106664206B (zh) 2014-06-18 2020-05-12 维萨国际服务协会 用于已认证的通信的高效方法
US9813245B2 (en) * 2014-08-29 2017-11-07 Visa International Service Association Methods for secure cryptogram generation
US9331989B2 (en) * 2014-10-06 2016-05-03 Micron Technology, Inc. Secure shared key sharing systems and methods
US10461933B2 (en) 2015-01-27 2019-10-29 Visa International Service Association Methods for secure credential provisioning
US9942034B2 (en) 2015-02-13 2018-04-10 Visa International Service Association Confidential communication management
RU2018103181A (ru) 2015-06-30 2019-07-31 Виза Интернэшнл Сервис Ассосиэйшн Конфиденциальные аутентификация и обеспечение
RU2018125626A (ru) 2015-12-16 2020-01-16 Виза Интернэшнл Сервис Ассосиэйшн Системы и способы защищенной многосторонней связи с использованием посредника

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115462110A (zh) * 2020-04-30 2022-12-09 森萨塔科技公司 用于无线传感器网络的安全无线协议
CN112039848A (zh) * 2020-08-05 2020-12-04 北京链飞未来科技有限公司 一种基于区块链公钥数字签名的Web认证方法、***和装置
CN112753203A (zh) * 2020-10-30 2021-05-04 华为技术有限公司 一种安全通信方法及装置
CN112753203B (zh) * 2020-10-30 2022-07-12 华为技术有限公司 一种安全通信方法及装置

Also Published As

Publication number Publication date
EP3642997A4 (en) 2020-05-27
US20190245695A1 (en) 2019-08-08
WO2018236908A1 (en) 2018-12-27
RU2020102008A (ru) 2021-07-21
EP3642997A1 (en) 2020-04-29
US11108565B2 (en) 2021-08-31
US10313133B2 (en) 2019-06-04
EP3642997B1 (en) 2022-03-23
RU2020102008A3 (zh) 2021-10-07
US20180375663A1 (en) 2018-12-27

Similar Documents

Publication Publication Date Title
US11108565B2 (en) Secure communications providing forward secrecy
US11323276B2 (en) Mutual authentication of confidential communication
JP7119040B2 (ja) データ伝送方法、装置およびシステム
US10903991B1 (en) Systems and methods for generating signatures
US11985239B2 (en) Forward secrecy in transport layer security (TLS) using ephemeral keys
Yin et al. PKI-based cryptography for secure cloud data storage using ECC
RU2771928C2 (ru) Безопасный обмен данными, обеспечивающий прямую секретность
Surya et al. Single sign on mechanism using attribute based encryption in distributed computer networks
CN117896168A (zh) 安全认证方法和设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200207