保密通信管理的制作方法

文档序号:11335295阅读:299来源:国知局
保密通信管理的制造方法与工艺

相关申请的交叉引用

本申请是2015年2月13日提交的美国临时申请号62/116,357(代理人案号:079900-0925515)的正式案并要求其优先权权益,该申请出于所有目的全文以引用方式并入本文中。



背景技术:

标准密钥协商协议(例如,ssl/tls和ipsec)可以揭示有关所涉及的各方的身份的信息以及密钥协商协议类型或密码套件信息。这些信息可以为攻击者提供智能,并帮助他们跟踪发送者和接收者活动、捕获元数据和逆向工程消息以及根据明显的弱点来设计时间有效的和集中的攻击方法。

本发明的实施方案个别地和共同地解决了这些和其他问题。



技术实现要素:

本发明的实施方案涉及用于保密通信管理的系统和方法。具体地,实施方案提供了一种改进的密钥协商协议,其中密钥和协议数据(例如,密码套件)的规范在请求和响应消息中保持保密,由此减少攻击者的机会并增加攻击成本。

根据一个方面,提供了用于保密密钥识别的方法。例如,在一些实施方案中,服务器计算机可以从客户端计算机接收请求。请求消息可以包括受保护的服务器密钥标识符和加密的请求数据。服务器计算机可以使用服务器标识符加密密钥来解密受保护的服务器密钥标识符以获取服务器密钥标识符。可以确定与服务器密钥标识符相关联的服务器私钥。可以使用服务器私钥对加密的数据进行解密以获取请求数据。

根据另一方面,提供了用于保护协议数据的方法、系统和装置。例如,在一些实施方案中,发送者计算机可以使用一个或多个有效载荷加密密钥来加密有效载荷数据,以生成加密的有效载荷数据。发送者计算机还可以使用一个或多个协议加密密钥加密协议数据以生成加密的协议数据。协议数据可以指示密码套件。发送者计算机可以将包括加密的有效载荷数据和加密的协议数据的消息传输到接收者计算机。

根据另一方面,提供了用于数据保护的方法、系统和装置。例如,在一些实施方案中,发送者计算机可以使用一个或多个有效载荷加密密钥来加密有效载荷数据,以生成加密的有效载荷数据。发送者计算机还可以使用一个或多个协议加密密钥加密协议数据以生成加密的协议数据。协议数据可以指示密码套件。发送者计算机可以将包括加密的有效载荷数据和加密的协议数据的消息传输到接收者计算机。

在一些实施方案中,提供了计算机系统。计算机系统可以被配置成接收包括加密的协议数据和加密的有效载荷数据的消息。可以确定一个或多个协议解密密钥以解密加密的协议数据。可以使用一个或多个协议解密密钥对加密的协议数据进行解密以获取协议数据。可以确定用于解密有效载荷数据的一个或多个有效载荷解密密钥。可以使用协议数据和一个或多个有效载荷解密密钥来解密加密的有效载荷数据以获取有效载荷数据。

附图说明

图1说明了根据本发明的一些实施方案的客户端计算机和服务器计算机之间的通信。

图2说明了根据一些实施方案的用于生成和发送请求消息的示例性过程。

图3说明了根据一些实施方案的用于接收和处理请求消息的示例性过程。

图4说明了根据一些实施方案的用于生成和发送响应消息的示例性过程。

图5说明了根据一些实施方案的用于接收和处理响应消息的示例性过程。

图6说明了根据一些实施方案的由客户端计算机发送到服务器计算机的第一请求消息和由服务器计算机处理第一请求消息的示例。

图7说明了根据一些实施方案的由客户端计算机发送到服务器计算机的后续请求消息和由服务器计算机处理后续请求消息的示例。

图8示出了根据一些实施方案的由服务器计算机发送到客户端计算机的响应消息和响应消息的生成的示例。

图9说明了根据一些实施方案的示例性请求消息和包括受保护的客户端密钥标识符的示例性响应消息。

图10说明了根据一些实施方案的用于加密消息的示例性过程。

图11说明了根据一些实施方案的用于加密消息的另一示例性过程。

图12说明了根据一些实施方案的用于解密消息的示例性过程。

图13说明了根据一些实施方案的用于解密消息的另一示例性过程。

图14说明了根据一些实施方案的用于解密消息的另一示例性过程。

图15说明了根据一些实施方案的用于生成http请求消息的示例性过程。

图16说明了根据一些实施方案的用于处理http请求消息的示例性过程。

图17说明了根据一些实施方案的用于生成http响应消息的示例性过程。

图18说明了根据一些实施方案的用于处理http响应消息的示例性过程。

图19说明了根据一些实施方案的用于加密敏感数据的示例性加密过程。

图20说明了根据一些实施方案的用于解密数据的示例性解密过程。

图21示出了根据一些实施方案的用于处理请求消息以强制执行服务器策略的决策树。

图22是根据一些实施方案的计算机系统的高级框图。

术语

在讨论本发明的一些实施方案之前,对一些术语的描述可能有助于理解本发明的实施方案。

术语“服务器计算机”可以包括功能强大的计算机或计算机集群。例如,服务器计算机可以是大的主机、小型计算机集群或像一个单元一样工作的一组服务器。在一个实例中,服务器计算机可以是耦连至网络服务器的数据库服务器。服务器计算机可以耦连到数据库并且可以包括用于服务于来自一个或多个客户端计算机的请求的任何硬件、软件、其他逻辑、或前述内容的组合。服务器计算机可以包括一个或多个计算装置并且可以使用各种计算结构、排列和编译中的任何一种来服务于来自一个或多个客户端计算机的请求。

术语“公/私钥对”可以包括由实体生成的一对关联加密密钥。公钥可以用于公共功能,诸如加密要发送给实体的消息,或用于对应该由实体做出的数字签名进行验证。另一方面,私钥可以用于私用功能,诸如对接收到的消息解密或应用数字签名。公钥通常会由被称为证书机构(ca)的主体进行授权,证书机构将公钥存储在数据库中并将其分配给请求它的任何其他实体。私钥一般会被保持在安全存储介质中并且通常只有实体知道。然而,本文中描述的密码系统可以以用于恢复丢失的密钥并避免数据丢失的密钥恢复机制为特征。公钥和私钥可以是任何适当格式,包括基于rsa或椭圆曲线密码学(ecc)的格式。

“数字签名”可以指基于公/私钥对应用算法的结果,这种算法允许签名方显示,并且允许验证方验证文件的真实性和完整性。签名方借助于私钥起作用,验证方借助于公钥起作用。这个过程证明发送者的真实性、已签名文档的完整性和所称的不可否认性原则,所述原则不允许否认已经签名的内容。证书或包括签名方的数字签名的其他数据被称为是由签名方“签名的”。

“数字证书”或“证书”可以包括使用数字签名将公钥和/或对应的私钥与和身份相关联的数据进行绑定的电子文档或数据文件。在一些实施方案中,证书可以包括公钥。证书可以包括一个或多个数据字段,例如身份的合法名称、证书的序列号、证书的起始有效期和终止有效期、证书相关许可等。证书可以包含指示证书有效的第一个日期的“起始有效”日期,以及指示证书有效的最后日期的“终止有效”日期。证书还可以包含证书中包括数据字段的数据的散列。除非另外说明,每个证书都由证书机构签名。

“证书机构”(ca)可以包括可操作耦连以向实体发行证书的一个或多个服务器计算机。ca可以使用ca证书证明其身份,ca证书包括ca的公钥。可以用另一个ca的私钥或者可以用同一个ca的私钥对ca证书签名。后者被称为自签名证书。ca还通常维护由ca发布的所有证书的数据库。

在一个典型过程中,证书机构从其身份已知的实体接收未签名的证书。未签名的证书包括公钥、一个或多个数据字段、以及证书中的数据的散列。ca用与ca证书上所包括的公钥相对应的私钥对证书进行签名。ca然后可以将签名的证书存储在数据库中,并将签名的证书发行给实体。

“密码随机数”可以包括任何数字、字符串、位序列、或旨在关联单个通信会话使用的其他数据值。在一些情况下,密码随机数可以是随机或伪随机生成的。通常,密码随机数具有足够的长度以使多次独立生成同一随机数值的可能性并不显著。

“盲化密钥(blindedkey)”,诸如“盲化公钥”可以包括通过与另一数据元素(诸如密码随机数,例如随机数或伪随机数)组合而被模糊化或以其他方式修改了其原始值的密钥。例如,公钥可以乘以随机数从而生成“盲化公钥”。类似地,私钥可以乘以随机数从而生成“盲化私钥”。

“加密密钥”可以包括适合于用密码加密数据的任何数据值或其他信息。“解密密钥”可以包括适合于对已加密的数据进行解密的任何数据值或其他信息。在一些情况下,加密密钥和解密密钥可以相同(即,“对称密钥”)。

“密钥标识符”可以包括任何数据,其可用于识别一个或多个密钥或数字证书。例如,密钥标识符可以识别私钥、公钥或其数字证书、或私钥/公钥对。密钥标识符还可以识别一个或多个加密密钥、签名密钥或任何其他合适的密钥。密钥标识符可以是与数字证书相关联的序列号,其中证书可以使用序列号来检索。密钥标识符还可以包括识别私钥或公钥的随机数或伪随机数或字母数字字符串。在一些实施方案中,密钥标识符和相关联的密钥或证书之间的映射可以存储在支持查找和/或存储操作的表、文件、数据库或任何其他合适的数据存储器中。

“客户端密钥标识符”是识别与客户端计算机相关联的一个或多个密钥的密钥标识符。“服务器密钥标识符”是识别与服务器计算机相关联的一个或多个密钥的密钥标识符。

“受保护的密钥标识符”可以包括密钥标识符和可能的其他数据,其用于以某种方式模糊或以其他方式保护密钥标识符的机密性。在一些实施方案中,受保护的密钥标识符仅指一次性值,其不向窃听者显示任何有用信息(例如,随机值或伪随机值),而是被映射到一个或多个密钥或证书。例如,受保护的客户端密钥标识符可以包括映射到客户端私钥或客户端公钥的一次性随机值。

受保护的密钥标识符还可以包括已经使用加密密钥(也称为“标识符保护密钥”)加密的密钥标识符(具有或不具有附加数据)。例如,受保护的服务器密钥标识符可以包括映射到客户端私钥或客户端公钥的服务器密钥标识符。在一些实施方案中,受保护的密钥标识符还可以包括附加数据,诸如填充和/或随机值。在一些实施方案中,填充可以是恒定数据元素。在受保护的密钥标识符的解密结果中存在恒定数据元素可以指示密钥标识符的有效性或完整性。在一些其他实施方案中,填充可以包括密钥标识符的消息认证码(mac)或者以其他方式基于密钥标识符生成。mac可用于认证密钥标识符和/或包括在受保护的密钥标识符中的其他数据。填充和/或随机值可以用于使受保护的密钥标识符或未加密数据(包括密钥标识符、填充和随机值)的长度达到固定长度,以便模糊密钥标识符并使得窃听者更难以将受保护的密钥标识符与任何其他固定长度的数据区分开。在一些实施方案中,服务器密钥标识符和/或附加数据可以使用标识符加密密钥或一些其他合适的加密密钥来加密,以生成受保护的密钥标识符。

在一些实施方案中,受保护的密钥标识符可被解密或以其他方式处理以揭示基础密钥标识符。然后可以将密钥标识符映射到一个或多个基础密钥和/或证书。在一些其他实施方案中,受保护的密钥标识符不被解密,而是直接用于检索对应的密钥和/或证书。映射可以存储在支持查找和/或存储操作的表、文件、数据库或任何其他合适的数据存储器中。

“标识符加密密钥”或“标识符解密密钥”可以指可操作以加密或解密密钥标识符的任何加密密钥。在一些实施方案中,标识符加密密钥可以与标识符解密密钥相同(例如,对称加密密钥)。例如,可以使用标识符加密密钥来加密密钥标识符(以及可选的其他数据)以导出上述讨论的受保护的密钥标识符。在一些实施方案中,可以使用某个公/私钥对和/或其他合适的数据来确定标识符加密密钥。例如,在一些实施方案中,标识符加密密钥可以是公钥和对应的私钥的点乘法的结果。在这种情况下,不需要独立地管理标识符加密密钥,因为总是可以从现有密钥对中恢复标识符加密密钥。作为另一示例,标识符加密密钥可以是单独维护(例如,存储在客户端计算机或服务器计算机的安全元件中)的加密密钥。

在各种实施方案中,一个或多个标识符加密密钥可以在不同情况下由单个实体(例如,客户端计算机或服务器计算机)使用和/或维护。例如,第一标识符加密密钥可以用于根据第一协议或来自特定发送者的消息来加密/解密消息的密钥标识符。不同的第二标识符加密密钥可以用于根据第二协议或来自另一个发送者的消息来加密/解密消息的密钥标识符。

在一些实施方案中,包含在消息中的信息可以指示要使用哪个标识符加密密钥和/或如何导出标识符加密密钥。例如,消息a中的标头版本可以用于选择第一默认私/公钥对来生成第一标识符加密密钥;而消息b中的不同标头版本可以用于选择第二默认私/公钥对来生成第二不同标识符加密密钥。在一些实施方案中,对默认私/公钥对或标识符加密密钥的选择可以基于消息的发送者的身份、凭证信息或任何其他合适的数据。

“一次性密钥”是指用于仅一次保护单个交易或两个实体(例如,客户端计算机和服务器计算机)之间的其他通信会话(例如,请求消息或响应消息)的密钥。例如,客户端计算机可以使用第一客户端密钥来加密发送到服务器计算机的请求消息。可以由客户端计算机使用第一客户端密钥来解密由服务器计算机发送的与第一请求消息相对应的响应消息。然而,为了加密下一个请求消息,客户端计算机可以使用第二不同的密钥。因此,第一客户端密钥是用于仅保护来自客户端的第一请求消息的一次性客户端密钥。类似地,可以使用一次性服务器密钥来保护来自服务器计算机的单个响应消息。

一次性密钥可以包括为每个新的交易或通信会话重新生成的密钥(也被称为“短暂密钥”)。另选地,可以从相同的基本或静态密钥生成多个一次性密钥,该基本或静态密钥在多个交易或通信会话中保持不变。可以不同地修改多个一次性密钥中的每一个。例如,每个一次性密钥可以使用不同的加密随机数、识别因子或其他盲化因子被盲化,或者以其他方式被不同地模糊化。

一次性密钥通常在交易或通信会话结束时被移除。然而,在一些实施方案中,一次性密钥可以保持较长的时间段。例如,在与服务器计算机的异步通信期间,客户端计算机可以发送请求消息,但是可能在很长一段时间内不接收对应的响应消息,或者可能不按顺序接收对应的响应消息(例如,在接收到对应于稍后传输的请求消息的响应消息之后)。在这种情况下,需要保存与较早请求相关联的一次性密钥并将其用于解密对应的响应消息。基本同时与多台服务器计算机进行通信的客户端计算机也可能需要存储与相应的交易或通信会话相关联的多个一次性私钥,从而解密对应的响应消息。类似地,与多个客户端计算机通信的服务器计算机还需要存储与相应的交易或通信会话相关联的多个一次性密钥。

“一次性密钥对”可以包括私钥和对应的公钥,其中两个密钥中的至少一个为每个新的交易或通信会话改变。密钥对可以是任何合适的格式,例如基于椭圆曲线(ec)的密钥或基于rsa的密钥。在一个示例中,可以为每个新交易重新生成私钥和对应的公钥。因此,一次性密钥对包括短暂私钥和短暂公钥。在另一示例中,一次性密钥对可以包括静态私钥和短暂公钥,静态私钥对于多于一个交易保持相同,但每次不同地模糊化。在又一示例中,一次性密钥对可以包括静态公钥和短暂私钥,所述静态公钥对于多于一个交易保持相同但每次被不同地模糊化。在一些实施方案中,一次性密钥对的私钥和公钥都是静态的,但是对于每个新的通信会话,密钥中的一个或两个都可以被盲化、模糊化或以其他方式不同地修改。

“静态密钥对”可以包括在一段时间内或为给定数量的交易或通信会话维护的公钥(即“静态公钥”)和私钥(即“静态私钥”)。通常但不一定,静态私钥可以被安全地存储在诸如硬件安全模块(hsm)或安全元件(se)中。通常但不一定,静态公钥可以通过使用数字证书绑定到身份。静态密钥对可以是任何适当格式,诸如ecc或rsa。

“共享秘密”可以包括只对安全通信中的被授权方已知的任何数据值或其他信息。共享秘密可以以任何适当方式由任何适当数据生成。例如,可以使用基于diffie-hellman的算法(诸如椭圆曲线diffie-hellman(ecdh)),以由私钥和公钥生成共享秘密。请求共享秘密可以指用于保护请求消息的安全性的共享秘密。响应共享秘密是指用于保护响应消息的安全性的共享秘密。

在某些情况下,可以使用共享秘密来生成一个或多个密钥。例如,可以使用共享秘密来生成用于保护整个请求或响应消息的一个或多个会话密钥或保护密钥(下文将讨论)。作为另一示例,可以使用共享秘密来生成多个密钥,每个密钥用于保护消息的一部分。

“会话密钥”或“保护密钥”可以指用于保护通信会话中的请求或响应消息的至少一部分或任何其他类型数据的密钥(例如,加密密钥或解密密钥)。请求会话密钥是指用于保护请求消息的会话密钥。响应会话密钥是指用于保护响应消息的会话密钥。会话密钥可以基于共享秘密生成。例如,可以基于请求共享秘密来生成请求会话密钥,以及可以基于响应共享秘密生成响应会话密钥。

“协议数据”是指消息中的任何数据,其指示如何加密、解密或以其他方式处理消息的有效载荷数据或任何其他类型的数据。协议数据可以包括密码套件信息、数据描述符信息(例如,数据协议映射信息)或其他合适的数据。密码套件可以指密钥交换算法(例如,ecdhe_rsa)、加密算法、消息认证码、认证算法和/或用于保护客户端计算机和服务器计算机之间的通信的其他算法的命名组合。在一些实施方案中,协议数据还可以包括密钥协商信息,诸如密钥协商算法和用于建立共享秘密和/或生成密钥的参数。在一些实施方案中,协议数据可以不包括密码套件信息。相反,密码套件信息可以被通信方(例如,客户端计算机和服务器计算机)硬编码、固定和/或隐式地协议。

密码套件可以定义信道强度(例如,128位、192位或256位)、密钥导出函数(kdf)(例如,aes-128、aes-394或aes-256)、椭圆曲线密码学(ecc)密钥协商曲线或密钥生成算法(例如,p-256、p-384或p-521)、块密码操作模式(例如,偏移码本模式(ocb)、密钥包裹、cbc-mac计数器模式(ccm)、eax、encrypt-then-mac(etm)或galois/countermode(gcm))、数字签名算法(例如,椭圆曲线数字签名算法(ecdsa)或数字签名算法(dsa))、加密散列函数(例如,sha-256、sha-384或sha-512)、随机数(例如,16字节、24字节或32字节)等。

消息的发送者和接收者可以同意用于它们之间的通信的密码套件。在某些情况下,客户端计算机和服务器计算机可以交换一个或多个消息以协商并同意用于后续通信的密码套件。例如,客户端计算机可以在请求消息中向服务器计算机发送其支持的密码套件的列表。密码套件可以按照客户端计算机的优先级顺序列出。例如,密码套件列表中的第一密码套件可能是客户端计算机最优选的,第二密码套件对客户端计算机可能不如第一密码套件那么优选,等等。请求消息可以不包括任何有效载荷数据。另选地,请求消息可以包括加密的或使用优选密码套件以其他方式编码的有效载荷数据。作为响应,服务器计算机可以从客户端计算机提供的密码套件列表中选择密码套件,并将所选择的密码套件包括在响应消息中。响应消息可以不包括任何有效载荷数据。另选地,响应消息可以包括加密的或使用选择的密码套件以其他方式编码的有效载荷数据。

“有效载荷数据”或“应用数据”是指由消息携带的“货物”或内容,而不仅仅是用于促进消息的传送或处理的消息中的标头、协议数据、元数据或其他类似数据。有效载荷数据的示例可以包括在供应请求中发送的识别数据、来自服务器计算机的供应响应中的凭证数据、交易消息中的应用或交易数据等。在一个典型的实施方案中,有效载荷数据包括优选地保护防止未授权访问的敏感数据。

具体实施方式

本发明的实施方案涉及用于保密通信管理的系统和方法。

实施方案允许通信消息以安全的方式包括对任何一方使用的密钥的不可追溯的引用(例如,受保护的密钥标识符),以确定用于保护(例如,加密或解密)请求或响应消息的密钥。例如,服务器计算机可以在到客户端计算机的响应消息中包括受保护的服务器密钥标识符。受保护的服务器密钥标识符可以包括识别用于加密响应消息的服务器私钥的服务器密钥标识符。客户端计算机可以在后续请求中回传受保护的服务器密钥,使得服务器计算机可以识要别用于解密请求消息的适当的服务器私钥。

类似地,客户端计算机可以在到服务器计算机的请求消息中包括受保护的客户端密钥标识符。受保护的客户端密钥标识符可以识别用于加密请求消息的客户端私钥。服务器计算机可以在响应消息中回传受保护的客户端密钥,使得客户端计算机可以识别要用于解密响应消息的适当的客户端私钥。对于当消息是异步的时候,将响应消息与对应的请求和客户端私钥相匹配的能力是重要的。

实施方案还保护用于与有效载荷数据分开加密/解密有效载荷数据的协议数据。敏感有效载荷数据可以使用一个或多个有效载荷加密密钥进行加密以生成加密的有效载荷数据。包括用于加密有效载荷数据的密码套件的协议数据也可以使用一个或多个协议加密密钥进行加密。协议加密密钥和有效载荷加密密钥可以基于密钥协商建立。可以在消息中发送加密的协议数据和加密的有效载荷数据。

当接收到消息时,可以基于密钥协商来导出协议数据解密密钥和有效载荷解密密钥。可以使用协议解密密钥来解密加密的协议数据以获取协议数据(例如,密码套件)。可以使用协议数据和有效载荷解密密钥来解密加密的有效载荷数据。

在一些情况下,有效载荷数据可以包括多个有效载荷元素,每个有效载荷元素可以使用不同的加密密钥单独地加密。在这种情况下,可以根据需要对加密的有效载荷元素进行解密以改进数据安全性。

i.i.系统

图1说明了根据一些实施方案的客户端计算机101和服务器计算机102之间的通信。客户端计算机101和服务器计算机102都可以是任何合适的计算设备(例如,主机、台式或膝上型计算机、平板计算机、移动设备、可穿戴设备等)。

如图1中所示,客户端计算机101可以向服务器计算机102发送请求消息。请求消息可以是任何合适的形式。例如,在各种实施方案中,请求消息可以是一个或多个tcp/ip分组、http请求消息、或以任何其他合适的格式。通常,请求消息可以包括受保护的服务器密钥标识符,其识别与服务器计算机相关联的公钥或证书。请求消息还可以包括加密的协议数据和加密的有效载荷数据。加密的协议数据可以包括受保护的客户端密钥标识符以允许客户端计算机匹配异步请求和响应。

服务器计算机102可以处理请求消息。服务器计算机102可以从请求消息中的受保护的服务器密钥标识符来确定服务器密钥标识符。可以基于服务器密钥标识符来选择对应的服务器私钥,并将其用于生成一个或多个会话密钥。一些会话密钥可用于解密请求消息中的加密协议数据以获取协议数据。一些其他会话密钥可以用于根据协议数据解密加密的有效载荷数据。

服务器计算机102可以生成响应数据以发送给客户端计算机101。响应可以包括受保护的客户端密钥标识符。响应还可以包括要在后续请求中使用的新的受保护的密钥标识符。此外,响应可以包括加密的协议数据和加密的有效载荷数据。

客户端计算机101可以从响应消息中的受保护的客户端密钥标识符确定客户端密钥标识符,并且选择对应的客户端私钥。可以使用客户端私钥生成一个或多个会话密钥。一些会话密钥可用于解密响应消息中的加密协议数据以获取协议数据。一些其他会话密钥可以用于根据协议数据解密加密的有效载荷数据。

ii.保密密钥识别

图2-图9描述了用于保护客户端和服务器之间的通信中的密钥识别的方法。具体地,根据所描述的方法的实施方案可以允许通信消息以安全的方式包括客户端或服务器使用的密钥的标识符。通信消息中的密钥的规范可以增加每个消息中包括的信息量,从而减少了对认证交易所需消息的总数。例如,实施方案允许在单个请求消息和响应消息对中建立客户端计算机和服务器计算机之间的认证。此外,通过将对由任一方使用的密钥的不可追溯的引用(例如,受保护的密钥标识符)包括在通信消息中来改进通信的安全性,使得只有预期方才可以确定与受保护的密钥标识符相关联的密钥。密钥标识符以此方式保护在消息中,使得即使消息被拦截,与密钥标识符相关联的密钥仍然保密。因此,实施方案改进了通信的安全性而不牺牲效率。

a.请求消息生成方法

图2说明了根据一些实施方案的用于生成和发送请求消息的示例性过程200。通常,过程200可以由客户端计算机(诸如,客户端计算机101)执行,以便向服务器计算机(例如,服务器计算机102)发送消息。过程200中的一些或所有方面(或本文中描述的任何其他过程或其变形和/或组合)可以在配置有可执行指令的一个或多个计算机/控制系统的控制下执行,且可以实施为通过硬件或其组合在一个或多个处理器上共同执行的代码(例如可执行指令、一个或多个计算机程序或一个或多个应用)。代码可以存储在计算机可读存储介质上,例如呈包括可由一个或多个处理器执行的多个指令的计算机程序的形式。计算机可读存储介质可以是非瞬态的。描述操作的顺序不旨在被解读为是限制,任何数目的被描述操作可以以任何顺序和/或并行地组合以执行过程。

在框202处,确定一次性客户端密钥对。一次性客户端密钥可以包括由客户端计算机为每个新请求生成的短暂私钥和短暂公钥。另选地,一次性客户端密钥可以包括静态私有和/或静态公钥,其被盲化、模糊化或以其他方式不同地修改,从而为每个新请求生成不同的盲化密钥。例如,可以对具有一些其他数据元素(例如,随机数、密码随机数、识别因子、交易数据等)的静态客户端公钥执行点乘法,以便为每个请求修改客户端公钥的值。

在一些实施方案中,客户端计算机可以配置成与一个或多个服务器计算机进行通信。因此,客户端计算机可以为一个或多个服务器计算机的一些或全部维护一个或多个一次性客户端密钥对集。一个或多个客户端密钥对集中的每个客户端密钥对对应于发送给给定服务器计算机的特定请求。一次性客户端密钥对可以被确定为与特定服务器计算机的特定请求消息相关联。在一些实施方案中,诸如用于异步通信,客户端计算机可以为给定服务器计算机存储先前发送的请求消息的一定数量的先前生成的客户端密钥对,以便能够解密与先前发送的请求消息对应的无序响应消息。先前生成的客户端密钥对的集合的大小可以由预定的最大数量(例如,10)限制。

在框204处,确定是否存在受保护的服务器密钥标识符。在一个实施方案中,客户端计算机可以存储从一个或多个服务器计算机的先前响应消息中接收到的受保护的服务器密钥标识符。一个或多个服务器计算机中的每一个可以与一个或多个受保护的服务器密钥标识符集相关联,其中的一些或全部可以从相关联的服务器计算机的先前响应消息中接收。每个受保护的服务器密钥标识符可以与特定的服务器公钥和/或私钥相关联。服务器计算机与受保护的服务器密钥标识符之间的映射以及受保护的服务器密钥标识符与对应的服务器公钥和/或证书之间的映射可以被存储在与客户端计算机相关联的表、数据库或任何其他合适的数据存储器中。这样的映射可以用于确定是否存在要向其发送请求消息的给定服务器计算机的任何受保护的服务器标识符(并且因此,服务器公钥或证书)。这种受保护的服务器标识符的存在指示客户端计算机先前已经从服务器计算机接收到响应消息,并且从这些响应消息中提取出受保护的服务器标识符。这种受保护的服务器标识符的缺少可以指示客户端计算机从未从服务器计算机接收到响应消息,或者在预定时间段内没有从服务器计算机接收到响应消息。

如果在框204处确定服务器计算机存在一个或多个受保护的服务器密钥标识符,则在框206处,从一个或多个受保护的服务器密钥标识符检索受保护的服务器密钥标识符。通常,选择与来自服务器计算机的最近发送的响应消息相关联的受保护的服务器密钥标识符。在某些情况下,当无序接收响应消息时,服务器计算机最近发送的响应消息不一定必须是客户端计算机最近收到的响应消息。

在框208处,可以检索与检索到的受保护的服务器密钥标识符相关联的服务器公钥或证书。在一些实施方案中,受保护的服务器密钥标识符和对应的服务器公钥或证书在相同的响应消息中被接收。在一些其他实施方案中,受保护的服务器密钥标识符和对应的服务器公钥或证书在不同的响应消息中被接收。在一些情况下,可以在与用于请求/响应消息的通信信道相同或不同的通信信道(例如,电子邮件、文本)中接收受保护的服务器密钥标识符和/或相关联的服务器公钥或证书。

最近发送的受保护的服务器密钥标识符及其相关联的服务器公钥或证书可以指示由服务器计算机执行的最新密钥更新或密钥轮转。通过将新的服务器公钥或证书以及相关联的新的受保护的服务器密钥标识符包括在响应消息中,服务器计算机通知客户端计算机与服务器计算机的后续通信应该使用新的服务器公钥或证书而不是一个旧的公钥或证书。在一些实施方案中,服务器计算机可以使用新的公钥或证书来加密当前响应消息中的请求数据。因此,客户端计算机可以使用新的公钥或证书来解密当前的响应消息。

如果在框204处确定服务器计算机不存在受保护的服务器密钥标识符,则可以在框210处生成随机密钥标识符(也称为伪密钥标识符)以作为受保护的服务器密钥标识符。随机密钥标识符可能不识别任何现有的服务器公钥或服务器证书。随机密钥标识符可以包括使用任何合适的随机化或伪随机化算法生成的数据。在一些实施方案中,随机密钥标识符可以被格式化,使得对于接收服务器计算机来说密钥标识符是随机的是显而易见的。在一些实施方案中,通过对受保护的密钥标识符的窃听者,随机密钥标识符可能对于随机值是无法区分的。

在[0081]框212处,确定默认或初始服务器公钥或证书。默认的服务器数字密钥或证书可以包括在通信中使用的任何服务器公钥或服务器证书,其中先前没有其他公钥或证书被定义为在客户端计算机和服务器计算机之间使用。默认数字证书可以包括公钥(即,默认公钥)。在某些情况下,在从客户端计算机发送第一请求到服务器计算机期间,可以使用默认数字证书。在一些实施方案中,可以将默认数字证书预加载到客户端计算机上,以及可以将与默认数字证书(即,默认私钥)相关联的私钥加载到服务器计算机上。在一些实施方案中,默认服务器证书或公钥可以在与用于请求/响应消息的通信信道相同或不同的通信信道(例如,电子邮件、文本)中提供给客户端计算机。在一些实施方案中,要使用的默认数字证书可以取决于密钥协商协议(例如,基于协议的版本号)而变化。

在步骤210处生成的随机受保护的服务器密钥标识符可以被包括在要发送到服务器计算机的请求消息中以指示客户端计算机使用了默认或初始服务器公钥并且服务器计算机也应该这样做。

在框214处,使用在框202处确定的一次性客户端私钥和在208处或212处确定的服务器公钥或证书来生成请求共享秘密。请求共享秘密可以用来保护(例如加密和/或解密)请求消息,如下文讨论的。在一些实施方案中,服务器公钥可以从服务器计算机的数字证书确定,其可以先前由客户端设备获取(例如,来自服务器计算机或来自某个其他信道的响应消息)。

可以使用任何合适的方法来生成请求共享秘密。例如,在使用椭圆曲线密码学的实施方案中,可以使用椭圆曲线diffie-hellman协议(ecdh)确定共享秘密。

另外地和/或另选地,可以使用附加数据来生成请求共享秘密。这样的附加数据可以包括使用识别数据和认证数据计算的识别因子。识别数据可以包括与用户或客户端设备相关联的任何数据或信息。识别数据的示例可以包括与客户端设备相关联的用户的姓名、与客户端设备相关联的组织、与客户端设备相关联的支付信息(诸如主账号(pan)或令牌)、与pan或令牌相关联的到期日期、与客户端设备相关联的证书、客户端设备的imei或序列号等。认证数据可以包括适合于认证用户或客户端设备的任何数据或信息。认证数据的实例可以包括口令或口令短语、秘密密钥(例如,私钥)等。识别因子可以包括从识别数据和/或认证数据确定的任何数据或信息。例如,在一些实施方案中,可以通过对识别数据和认证数据的组合求散列生成识别因子。

在框216处,可选地确定受保护的客户端密钥标识符。受保护的客户端密钥标识符对应于一次性客户端密钥对的私钥、一次性客户端密钥对的公钥或两者。在某些情况下,确定受保护的客户端密钥标识符可以包括生成随机或伪随机数据以作为受保护的客户端密钥标识符。在一些其他情况下,确定受保护的客户端密钥标识符可以包括使用加密密钥加密客户端密钥标识符。客户端密钥标识符或受保护的客户端密钥标识符可以与一次性客户端密钥对的私钥、一次性客户端密钥对的公钥或两者相关联。可以在客户端设备的表、数据库或类似数据存储器中维护映射。

当服务器计算机在请求消息中接收到受保护的客户端标识符时,它可以将受保护的客户端标识符包括在对应的响应消息中,使得客户端计算机知道要使用哪个一次性客户端私钥来解密响应消息(如下面讨论的)。因此,客户端计算机可以使用受保护的客户端标识符来映射请求和响应消息,例如在异步通信期间。在一些实施方案中,框216可以是可选的,并且请求消息可以不包括任何受保护的客户端密钥标识符。

在框218处,使用请求共享秘密来加密请求数据。请求数据可选地包括在框216处确定的受保护的客户端密钥标识符。

在一些实施方案中,可以基于请求共享秘密生成请求会话密钥。请求会话密钥可以用于加密请求数据。请求会话密钥可以使用请求共享秘密和其他合适的补充数据(诸如密钥导出数据,如果有的话)生成。请求会话密钥也可以被称为消息保护密钥,因为它用于保护客户端设备和服务器计算机之间的消息。此类补充数据的示例可以包括服务器计算机标识符和/或截断的一次性客户端公钥。

请求会话密钥可以是任何适当格式(例如,aes、des、blowfish等)、任何适当长度,并且使用任何适当的密钥导出函数(kdf)生成。例如,在一个实施方案中,请求会话密钥可以使用基于口令的密钥导出函数2(pbkdf2)算法生成。在一些实施方案中,其他客户端计算机数据(诸如客户端设备标识符)可以用作到密钥导出函数的附加输入。

在框220处,请求消息被发送到服务器计算机。请求消息包括加密的请求数据和受保护的服务器密钥标识符。受保护的服务器密钥标识符可以是在框206处检索到的真实的受保护的服务器密钥标识符或是在框210处确定的随机密钥标识符。请求消息还可以包括一次性客户端公钥,其可以被盲化或不被盲化。请求消息还可以包括指示如何解密受保护的服务器密钥标识符的信息。例如,请求消息可以包括协议版本号,其可以由接收服务器计算机使用来选择用于解密受保护的服务器标识符的默认服务器密钥。

在一些实施方案中,请求消息还可以包括识别数据、客户端计算机标识符、认证数据以及意图用于服务器计算机的任何其他合适的数据。例如,该请求数据还可以包括客户端配置信息和/或服务的指令。在一些示例中,此类信息可以由不先验地包括用于强认证的构件的客户端设备提供。在一些实施方案中,请求消息在到达服务器计算机之前可以传递通过一个或多个中间方(例如不受信网络)。

b.请求消息处理方法

图3说明了根据一些实施方案的用于接收和处理请求消息的示例性过程300。通常,过程300可以由服务器计算机(例如,服务器计算机102)响应于从客户端计算机(例如,客户端计算机101)接收到请求消息来执行。然而,在各种实施方案中,方法300的一些或全部可以由另一实体执行。

在框302处,接收包括受保护的服务器密钥标识符和加密的请求数据的请求消息。通常,从客户端计算机接收请求消息。此外,应当注意,尽管使用了术语“受保护的服务器密钥标识符”,但是在一些实施方案中,从接收的数据来看数据是否是随机密钥标识符或受保护的密钥标识符不是直接显而易见的。请求消息还可以包括一次性客户端公钥和可选地受保护的客户端密钥标识符。

在框304处,使用标识符加密密钥来解密受保护的服务器密钥标识符以确定服务器密钥标识符。标识符加密密钥可以包括可操作以加密和解密密钥标识符的任何加密密钥。在一些实施方案中,可以使用默认公/私钥对和/或其他合适的数据来确定标识符加密密钥。例如,在一些实施方案中,标识符加密密钥可以是默认公钥和默认私钥的点乘法的结果。在这种情况下,服务器计算机不需要独立地管理标识符加密密钥,因为总是可以从现有密钥对中恢复标识符加密密钥。作为另一示例,标识符加密密钥是由服务器计算机维护的加密密钥(例如,在安全存储器中)。

在一些实施方案中,请求消息可以包括指示如何解密受保护的服务器密钥标识符的信息。例如,请求消息可以包括版本号或其他合适信息,其可由服务器计算机用于从多个默认公/私钥对中选择默认公/私钥对以解密受保护服务器标识符,或以其他方式识别标识符加密密钥。

在框306处,确定服务器密钥标识符是否有效。有效的服务器密钥标识符对应于有效的服务器公钥或证书、有效的服务器私钥或两者。服务器密钥标识符可用于查找由服务器计算机维护的表或数据库中的现有服务器公钥或证书或服务器私钥。如果查找产生了命中,则服务器密钥标识符可以被认为是有效的。否则,服务器密钥标识符可以被确定为是无效的。在一些实施方案中,受保护的服务器密钥标识符的解密除了服务器密钥标识符(诸如填充和/或随机数)之外还产生附加数据。填充可用于验证密钥标识符的真实性和/或完整性。例如,填充可以包括密钥标识符的消息认证码和/或附加数据。另选地,填充可以是常数或已知的数据元素。在受保护的密钥标识符的解密结果中填充数据元素的存在可以指示密钥标识符的有效性或完整性(例如,密钥标识符来自受信源和/或密钥标识符尚未被改变)。在一些其他实施方案中,填充可以包括密钥标识符的消息认证码(mac)或者以其他方式基于密钥标识符生成。

如果在框306处确定服务器密钥标识符是有效的,则在框308处检索与服务器密钥标识符相关联的服务器私钥。在一些实施方案中,服务器密钥标识符用于检索公钥或证书。然后检索与公钥或证书相对应的私钥。例如,如果服务器密钥标识符是序列号,则检索具有序列号的数字证书。在另一示例中,如果密钥标识符是公钥,则确定具有公钥的数字证书。在一些其他实施方案中,服务器密钥标识符被直接用于检索对应的私钥。密钥标识符和对应的公钥、证书和/或私钥之间的映射可以存储在由服务器计算机维护的表或数据库中。在一些实施方案中,可以从服务器计算机上的安全元件或硬件安全模块(hsm)检索私钥。

如果在框306处确定服务器密钥标识符是无效的,则在框310处检索默认服务器私钥。例如,从受保护的服务器密钥标识符的解密获取的服务器密钥标识符可能不对应于任何现有的服务器公钥、证书或私钥。另选地或另外地,服务器密钥标识符的验证可能由于缺少预期的常量填充或者由于密钥标识符的mac的不匹配而失败。在这种情况下,可以检索默认私钥。

在框312处,使用在框308处或框310处检索到的服务器私钥对加密的请求数据进行解密。在一些实施方案中,使用服务器私钥和一次性客户端公钥来确定请求共享秘密。一次性客户端公钥可能已经由请求消息提供。一次性客户端公钥可以被盲化或不盲化或以其他方式模糊化。在一些实施方案中,基于请求共享秘密来确定请求会话密钥。可以使用请求会话密钥对请求消息的加密的请求数据进行解密。请求共享秘密和请求会话密钥的确定可以类似于图2的框214中所描述的。

在框314处,可以从请求数据中可选地获取受保护的客户端密钥标识符。受保护的客户端密钥标识符可以类似于上面在图2中所描述的。在一些实施方案中,请求消息可以不包括受保护的客户端密钥标识符。

在一些实施方案中,服务器计算机可以基于包括在请求消息中的数据来执行进一步的处理。例如,服务器计算可以从请求消息中获取识别数据、客户端计算机标识符、认证数据以及任何其他合适的数据。

服务器计算机可以使用请求数据认证客户端计算机。可以使用客户端计算机标识符验证识别数据。例如,在一些实施方案中,客户端计算机标识符可以用来从设备数据库检索对应的识别数据。然后可以把解密的识别数据与接收的识别数据比较来验证解密的识别数据。在一些实施方案中,识别数据可以包括客户端计算机标识符。

可以检索与客户端计算机标识符和/或识别数据相关联的认证数据。认证数据可以包括适合于认证用户或客户端计算机的任何数据或信息。认证数据的实例可以包括口令或口令短语、秘密密钥(例如,私钥)等。在一些实施方案中,可以从设备数据库检索认证数据。

可以使用不检索的认证数据和识别数据来生成识别因子。识别因子可以包括从识别数据和/或认证数据确定的任何数据或信息。例如,在一些实施方案中,可以通过对识别数据和认证数据的组合求散列生成识别因子。

可以验证一次性客户端公钥以确保一次性客户端公钥与预期值匹配。例如,在一些情况下,可以使用从解密的请求数据提取的一次性公钥以及上面确定的识别因子来生成盲化的一次性公钥。然后将盲化的一次性公钥与作为请求消息的一部分(例如,在请求消息的明文部分中)被接收的一次性公钥进行比较,以确保密钥匹配。如果密钥匹配,则可以认证客户端计算机。否则,认证可能失败。

应当注意,这种认证方法(即验证组合的短暂密钥)提供这样的优点,即不需要以明文甚至以加密形式传输可能是敏感的认证数据。因此,即便服务器私钥稍后受到损害(然而不太可能),明文认证数据也不会被暴露。此外,由于密钥的盲化通常是不可逆的,即便同时具有盲化的客户端公钥和未盲化的客户端公钥(例如短暂公钥)的知识,攻击者也不能导出识别因子,更不用说用来生成识别因子的认证数据。

在一些实施方案中,请求数据可以包括协议数据(例如,密码套件信息、数据映射信息等)和有效载荷数据(例如,凭证数据)。协议数据和有效载荷数据可以根据本文描述的各种实施方案被单独地加密以进一步增强数据安全性。

c.响应消息生成方法

图4说明了根据一些实施方案的用于生成和发送响应消息的示例性过程400。通常,过程400可以在来自客户端计算机(例如,客户端计算机101)的请求消息已被接收和处理(例如,根据过程300)之后由服务器计算机(例如,服务器计算机102)执行。然而,在各种实施方案中,过程400中的一些或全部可以由另一实体执行。

在框402处,确定第二服务器私钥标识符。第二服务器私钥标识符识别第二服务器私钥和第二服务器公钥或证书,其与接收到的请求消息中的受保护的服务器密钥标识符相关联的那些不同。第二公钥/私钥可以是静态密钥或一次性密钥。第二公钥或证书将由客户端计算机在后续通信(诸如将来的请求消息)中使用。通过改变服务器密钥,数据通信的安全性得到改进,并且一个服务器密钥的暴露的潜在影响被最小化。使用本文描述的方法,可以以对窃听者透明的保密方式来执行此类密钥轮转。

在框404处,为第二服务器密钥标识符生成第二受保护的服务器密钥标识符。在一些实施方案中,第二受保护的密钥标识符还可以包括附加数据,诸如填充和/或随机值。填充可以包括服务器计算机已知的常数数据或密钥标识符的消息认证码(mac)。填充和/或随机值可以用于使第二受保护的密钥标识符或未加密数据(包括密钥标识符、填充和随机值)的长度达到到固定长度,以便进一步模糊第二密钥标识符并使得窃听者更难以将第二受保护的密钥标识符与任何其他固定长度的数据区分开。在一些实施方案中,随机数或伪随机数可以不同于先前受保护的服务器密钥标识符的随机数或伪随机数,以进一步模糊密钥标识符。第二服务器密钥标识符和/或附加数据可以使用标识符加密密钥或服务器计算机已知的一些其他合适的加密密钥进行加密。

在一些实施方案中,服务器密钥可以不随着每个响应而改变。相反,服务器密钥可以在一段时间或给定数量的交易中不会更改。当没有密钥更改时,响应消息不包括第二服务器公钥和第二受保护的服务器密钥标识符。相反,响应消息可以包括与先前提供的相同的受保护的服务器密钥标识符,或者根本不包括任何受保护的服务器密钥标识符。

在框406处,使用第二服务器私钥来加密响应数据。在一些实施方案中,可以使用第二服务器私钥和一次性客户端公钥来生成响应共享秘密。一次性客户端公钥可以从请求消息中获取,并且可以被盲化或不被盲化。在一些实施方案中,第二服务器公钥和/或第二服务器私钥可以使用密码随机数(例如,随机数据值或伪随机数据值)和/或识别因子来被盲化。可以使用盲化静态服务器私钥和一次性客户端公钥来生成响应共享秘密。在替代性实施方案中,静态服务器计算机私钥不被盲化。相反,一次性客户端公钥是盲化的。可以使用任何合适的方法(诸如,ecdh)来生成响应共享秘密。

可以使用响应共享秘密、kdf和其他合适的补充数据(诸如密钥导出数据,如果有的话)来确定响应会话密钥。响应会话密钥也可以被称为消息保护密钥,因为它用于保护客户端计算机和服务器计算机之间的消息。此类补充数据的示例可以包括服务器计算机标识符、客户端设备标识符和/或截断的客户端公钥。

可以确定要包括在响应消息中的响应数据。响应数据可以包括第二受保护的服务器密钥标识符。此外,响应数据可以可选地包括其他地方描述的第二服务器公钥或证书和/或协议数据(例如,密码套件信息、数据映射信息)。在一些实施方案中,响应数据可以包括凭证数据,其指为给定的客户端设备(例如,移动设备)或给定的设备组专门提供的任何数据,以使得客户端设备能够执行交易(例如,支付交易)。凭证数据的实例可以包括令牌,pan或其他账户信息,一个或多个密钥(例如,用于生成密码的luk,加密密钥,盲化或未混合的静态公钥等),密钥导出参数(例如,用于导出用于生成密码、共享秘密密钥、加密密钥等的suk),密码导出参数,证书链信息,交易参数以及任何其他合适的数据。响应数据可以使用第二服务器私钥进行加密并包括在响应消息中。

除了加密的响应数据之外,响应消息还可以包括不使用第二服务器私钥加密的信息。这样的信息可以可选地包括从请求消息获取的受保护的客户端密钥标识符、服务器计算机证书链、盲化的或短暂的第二服务器公钥、密码随机数等。服务器计算机证书链可以由客户端计算机验证以验证服务器计算机的身份。盲化的或短暂的第二服务器公钥可以由客户端计算机对包括在加密请求数据中的第二服务器公钥进行验证。

在框408处,将上述讨论地响应消息发送到客户端计算机。响应消息包括加密的响应数据,以及可选地,从请求消息获取的受保护的客户端密钥标识符。然而,在一些实施例中,可以从响应消息中省略受保护的密钥标识符。响应消息在到达客户端计算机之前可以传递通过一个或多个中间方(例如不受信网络)传输。

在一些实施方案中,响应消息可以包括根据本文描述的各种实施方案从加密的有效载荷(例如,凭证数据)单独地加密的协议数据(例如,密码套件信息、数据映射信息等),以进一步增强数据安全性。

d.响应消息处理方法

图5说明了根据一些实施方案的用于接收和处理响应消息的示例性过程500。通常,过程500可以由客户端计算机(例如,客户端计算机101)响应于从服务器计算机(例如,服务器计算机102)接收到响应消息(例如,在过程400中生成的响应消息)来执行。然而,在各种实施方案中,过程500中的一些或全部可以由另一实体执行。

在框502处,接收包括加密的响应数据和受保护的客户端密钥标识符的响应消息。在一些实施方案中,受保护的客户端密钥标识符可以用于确定要处理的消息的序列。例如,如果与较早请求相对应的响应消息尚未处理,则可以推迟步骤502和504,直到较早响应消息已经被接收和处理。然而,在一些实施方案中,可以省略受保护的客户端密钥标识符。

响应消息可以包括一次性服务器公钥。一次性服务器公钥可以对应于用于生成响应消息的服务器私钥。一次性服务器公钥可以是静态服务器公钥的盲化或其他方式模糊化的形式。提供盲化的静态服务器公钥的优点是,静态服务器计算机公钥被模糊化,并且服务器计算机的身份被防止窃听。在静态服务器公钥不被盲化时,可以提供密码随机数作为响应数据的一部分并用来计算密码。例如,可以使用或存储来自服务器的密码随机数(熵)以进行进一步的推导,或者可以将第二密码随机数提供作为导出参数的一部分。

在框504处,使用受保护的客户端密钥标识符来确定客户端私钥。客户端私钥可以是用于加密与接收到的响应消息相对应的请求消息的一次性客户端私钥。在一些其他情况下,受保护的私钥标识符可以包括使用任何合适的随机化或伪随机化算法生成的数据。在一些其他情况下,可以通过使用加密密钥加密客户端密钥标识符来生成受保护的客户端密钥标识符。确定客户端私钥可以包括:使用受保护的客户端密钥标识符,或者使用由客户端计算机维护的表、数据库或类似数据存储器中的客户端密钥标识符来检索相关联的客户端私钥。如果对应的客户端私钥不存在,则可替代地检索默认的客户端私钥。

在框506处,使用客户端私钥对加密的响应数据进行解密以获取响应数据。在一些实施方案中,可以使用客户端私钥(其可以是短暂的、静态的或半静态的)和盲化的服务器公钥来确定响应共享秘密。在一些实施方案中,可以从服务器计算机接收盲化的服务器公钥(例如作为供应响应消息的一部分),或从单独的信道接收。在一些其他实施方案中,客户端计算机可以预加载或以其他方式访问服务器公钥或证书(其可以是静态的)。可以将盲化数据(例如,密码随机数,随机数)作为响应消息的一部分或在单独的信道中提供给客户端设备。在这种情况下,盲化的服务器公钥可以由客户端计算机使用服务器公钥和所提供的盲化数据来导出。在一些实施方案中,密码随机数还可以用来验证服务器计算机证书,如在其他地方讨论的。在一些实施方案中,可以使用任何适当方法(诸如ecdh)从客户端私钥和盲化的服务器公钥生成响应共享秘密。

可以使用响应共享秘密、kdf和其他合适的补充数据(诸如密钥导出数据,如果有的话)来确定响应会话密钥。响应会话密钥也可以被称为消息保护密钥,因为它用于保护用户装置和服务器计算机之间的消息。此类补充数据的示例可以包括服务器计算机标识符、客户端计算机标识符和/或截断的客户端公钥。

响应会话密钥可以是任何适当格式(例如,aes、des、blowfish等)、任何适当长度,并且使用任何适当的密钥导出函数(kdf)生成。例如,在一个实施方案中,响应会话密钥可以使用基于口令的密钥导出函数2(pbkdf2)算法生成。在一些实施方案中,其他用户设备专用数据(诸如用户设备标识符或其他设备指纹信息)可以用作到密钥导出函数的附加输入。

可以使用响应会话密钥来解密响应消息以获取响应数据。响应数据可以包括受保护的服务器标识符、加密的凭证数据、加密随机数、服务器计算机证书链、密钥导出数据、密码套件描述符以及其他地方讨论的任何其他应用数据。

服务器计算机的认证可以由客户端计算机使用包括在响应消息中的数据执行。服务器计算机证书链可以被验证。可以使用任何适当的在线或离线方法验证服务器计算机证书链。例如,对于链中的一个或多个证书中的每一个,可以使用已知的可信公钥(例如,证书机构的公钥或由ca适当授权的实体的公钥)验证证书的数字签名。例如,在一些实施方案中,可以使用诸如椭圆曲线数字签名算法(ecdsa)的数字签名算法来验证证书。在一些实施方案中,可以使用作为供应响应消息的一部分(例如凭证的一部分)提供的密码随机数验证服务器计算机证书。

可以使用服务器计算机证书和密码随机数验证盲化的静态服务器计算机公钥。验证盲化静态服务器计算机公钥可以包括确保盲化静态服务器计算机公钥与预期值匹配。例如,在一些情况下,可以使用在服务器计算机证书上包括的静态服务器计算机公钥和从响应数据提取的密码随机数生成第二盲化静态服务器计算机公钥。第二盲化静态服务器计算机公钥然后可以与接收的盲化静态服务器计算机公钥比较,以确保密钥匹配。可替代地,在一些情况下,可以通过把接收的盲化静态服务器计算机公钥与存储的盲化静态服务器计算机公钥比较来验证前者。如果密钥匹配,则可以认证服务器计算机。否则,认证可能失败。在一些实施方案中,盲化的静态公钥可以以响应消息的明文和密文两者提供,以便能够进行验证并防止篡改。

应当注意,这种认证方法(即验证盲化静态公钥)能够提供这样的优点,即不需要以明码电文传输可能被认为是敏感(因为其可能揭示服务器计算机的身份)的静态服务器计算机公钥。因此,在保护服务器计算机的身份不被捕获响应消息的窃听者获得的同时,可以执行服务器计算机的认证。

响应数据还可以包括凭证数据。凭证数据可以包括从服务器计算机向客户端计算机提供的任何数据,其使得客户端计算机能够进行交易(例如,支付交易)。凭证数据的实例可以包括令牌,pan或其他账户信息,一个或多个密钥(例如,用于生成密码的luk,加密密钥,盲化或未混合的静态公钥等),密钥导出参数(例如,用于导出用于生成密码、共享秘密密钥、加密密钥等的suk),密码导出参数,证书链信息,交易参数以及任何其他合适的数据。

在一些实施方案中,响应数据可以包括协议数据(例如,密码套件信息、数据映射信息等)和应用数据(例如,凭证数据)。可以根据本文描述的各种技术来处理协议数据和有效载荷数据。

在框508处,可以存储从响应数据获取的受保护的服务器密钥标识符。响应数据还可以包括受保护的服务器密钥标识符,诸如在过程400中讨论的第二受保护的服务器密钥标识符。受保护的服务器密钥标识符中包括的服务器密钥标识符通常识别在响应消息中提供的服务器公钥(盲化或不盲化的)。例如,在一些实施方案中,受保护的密钥标识符可以与数据库中的对应的服务器公钥和/或证书以及服务器计算机相关联。因此,与服务器计算机的未来通信可以使用相同的受保护的密钥标识符和/或服务器公钥。例如,如在过程200中所描述的,服务器计算机的后续请求消息可以包括受保护的密钥标识符,以及使用服务器公开密钥进行加密。

e.示例性第一请求消息及其处理

图6说明了根据一些实施方案的由客户端计算机发送到服务器计算机的第一请求消息600和由服务器计算机处理第一请求消息600的示例。特别地,第一请求消息600包括随机密钥标识符,其不表示有效的服务器密钥标识符。无效的服务器密钥标识符指示服务器计算机使用默认服务器私钥来解密加密的请求数据。

如图6中所示,第一请求消息600包括标头版本602、随机密钥标识符604、与客户端计算机相关联的一次性客户端公钥606(例如,短暂或盲化的公钥)和密文608(即加密请求数据)。随机密钥标识符604可以由客户端计算机而不是服务器计算机生成。

在接收到第一请求消息600时,服务器计算机可以使用标头版本602来选择默认密钥对610(也称为初始密钥对)。如前所述,不同的标头版本值可以对应于不同的默认密钥对,每个默认密钥对包括默认公钥和默认私钥。默认密钥对610可以用于导出用于解密随机密钥标识符604的标识符解密密钥612。例如,可以通过使默认密钥对610的默认公钥和默认私钥点相乘来导出标识符解密密钥612。然后,服务器计算机使用解密算法614使用标识符解密密钥612来尝试解密随机密钥标识符604,以确定密钥标识符。然而,与有效密钥标识符的受保护密钥标识符相反,由于随机密钥标识符604表示随机值或伪随机值,解密结果是无效密钥标识符616。解密结果的无效性使得服务器计算机使用默认私钥618来解密密文608(例如,使用解密算法620)。默认私钥618可以是默认密钥对610的一部分。在一些实施方案中,为了不同的用途和目的可能存在多于一个默认密钥对,并且用于解密密文608的默认私钥618可以是与用于导出标识符加密密钥612的默认密钥对610不同的默认密钥对的一部分。在一些实施方案中,一次性公钥606可以与默认私钥618一起使用以解密密文608。在图3中描述了处理第一请求消息600的方法的实施方案。

f.示例性后续请求消息及其处理

图7说明了根据一些实施方案的由客户端计算机发送到服务器计算机的后续请求消息700和由服务器计算机处理后续请求消息的示例。可以在图6中所说明的第一请求消息600之后发送请求消息700。在第一请求消息和后续请求消息之间,客户端计算机可能已经接收到受保护的服务器密钥标识符,其表示有效的服务器密钥标识符(例如,在来自服务器计算机的响应消息中)。因此,与第一请求消息600不同,后续请求消息700包括受保护的服务器密钥标识符704,其可以被解密成有效的服务器密钥标识符(与无效值相反)。有效服务器密钥标识符识别用于解密加密请求数据的指定服务器私钥。

如图7中所示,后续请求消息700包括标头版本702、受保护的密钥标识符704、与客户端计算机相关联的一次性客户端公钥706(例如,短暂或盲化的公钥)和密文708(即加密请求数据)。受保护的密钥标识符704可能已经由服务器计算机而不是客户端计算机生成(并且以响应消息或带外信道被发送到客户端计算机)。

在接收到请求消息700时,服务器计算机可以使用标头版本702来选择默认密钥对710。默认密钥对710可以用于导出用于解密受保护的密钥标识符704的标识符解密密钥712。例如,可以通过使默认密钥对710的默认公钥和默认私钥相乘来导出标识符解密密钥712。然后,服务器计算机使用解密算法714使用标识符解密密钥712来解密受保护的密钥标识符704,以确定密钥标识符716以及可能的附加数据(诸如填充718和随机数据720)。在一些实施方案中,填充718可用于验证密钥标识符。例如,如果填充与已知包括在原始受保护的密钥标识符中的密钥标识符的常数数据元素相同。然后,解密的受保护的密钥标识符中的填充的存在可以指示密钥标识符的真实性和/或完整性。作为另一示例,填充718可以是密钥标识符716的mac,并且可以验证mac。可以包括随机数据720和/或填充以模糊密钥标识符和/或使受保护的密钥标识符、未加密数据(包括密钥标识符、填充和随机值)和/或消息达到固定长度。

一旦被验证,密钥标识符716可以用于选择指定的私钥722,其用于解密密文708(例如使用解密算法724)。在一些实施方案中,一次性客户端公钥706可以与指定的私钥722一起使用以解密密文708。在图3中描述了处理后续请求消息700的方法的实施方案。

g.示例性响应消息及其生成

图8说明了根据一些实施方案的由服务器计算机发送到客户端计算机的响应消息800和响应消息800的生成的示例。具体地,响应消息800包括并保护新密钥标识符的机密性,该新密钥标识符识别用于后续通信的新服务器密钥或密钥(例如,新的静态服务器私/公钥对)。例如,可以在接收到图6的第一请求消息600或图700的后续请求消息700之后由服务器计算机生成响应消息800。

请求消息800可以包括标头版本802,其识别与默认密钥对810相关联的版本号。默认密钥对810可以用于以与图6-图7中描述的类似的方式导出标识符加密密钥812。例如,可以通过使默认密钥对810的默认私钥和默认公钥相乘来导出标识符加密密钥812。标识符加密密钥812可以用于经由加密算法814加密服务器密钥标识符816和其他相关数据(例如,填充数据818和随机数据820)以获取受保护的密钥标识符804。

密钥标识符816识别包括私钥822a和公钥或证书822b的新服务器密钥对。在一些实施方案中,填充可以是恒定数据元素。在受保护的密钥标识符的解密结果中存在恒定数据元素可以指示密钥标识符的有效性或完整性。在一些其他实施方案中,填充数据可以包括密钥标识符816的mac或可用于验证密钥标识符816的真实性和/或完整性的其他认证数据。随机数据820可以确保受保护的密钥标识符总是在变化。在一些实施方案中,填充数据818和/或随机数据820可用于使受保护的密钥标识符804、未加密数据(包括密钥标识符、填充和随机值)或消息的大小达到到固定长度以提供附加的数据安全性。

可以使用新的私钥822a来加密包括受保护的密钥标识符804和新的公钥或证书822b的响应数据以生成密文808。在一些实施方案中,新的受保护的密钥标识符的包括可以避免在多个消息(例如,请求和响应消息)中的受保护的密钥标识符值的重复,这可能导致消息之间的受保护的密钥标识符的可追溯性。即使当包括相同的密钥标识符时,可以改变随机值820以便生成不同的受保护的密钥标识符804。

在某些情况下,请求数据还可以包括需要加密的其他数据,诸如凭证数据。密文808包括在响应消息800中。响应消息800还包括与新公钥或证书822b对应的一次性公钥806。例如,如果公钥822b是静态密钥,则一次性公钥806可以是静态公钥822b的盲化形式。另选地,如果公钥822b是短暂密钥,则一次性公钥806可以与短暂公钥822b相同。

h.具有客户端密钥标识符的示例性请求和响应消息

如上所述,客户端计算机可以以任何顺序提交多个异步请求并接收响应。为了允许来自客户端计算机侧的请求和响应之间的映射,响应消息可以包括受保护的客户端密钥引用(也称为“随机请求标识符”),其是对对应的请求消息和由客户端计算机可操作地用来加密请求和/或解密响应消息的客户端私钥的不可追溯的引用。

对于每个请求/响应对,客户端计算机生成受保护的客户端密钥标识符(随机请求标识符)或不揭示可重用位的任何一个时间值。受保护的客户端密钥标识符被加密并包括在请求消息的密文中

在接收到包括受保护的客户端密钥标识符的请求消息时,服务器计算机解密请求消息以获取受保护的客户端密钥标识符。然后,服务器计算机在响应于请求消息的响应消息中包括受保护的客户端密钥标识符。在一个实施方案中,受保护的客户端密钥标识符可以被包括作为在响应消息的明文部分中第一数据元素。

图9说明了根据一些实施方案的示例性请求消息900和包括受保护的客户端密钥标识符的示例性响应消息920。请求消息900可以由客户端计算机发送到服务器计算机,以及响应消息920可由服务器计算机发送到客户端计算机。

如图9中所示,请求消息900包括在消息的密文918中的受保护的客户端密钥标识符908。例如,客户端密钥标识符908可以用要包括在密文中的请求会话密钥进行加密。在一些实施方案中,将受保护的密钥标识符包括在密文中可以保护客户端密钥标识符的机密性。受保护的客户端密钥标识符908可以由客户端计算机生成或确定,并且其与用于保护请求消息的客户端私钥或客户端密钥对相关联。例如,受保护的客户端密钥标识符908可以与包括一次性客户端私钥和一次性客户端公钥的一次性客户端密钥对(例如,短暂密钥对)相关联。可以使用一次性客户端私钥(例如,结合服务器公钥)来生成请求共享秘密,其用于加密请求数据以获得密文918。可以在请求消息900的明文916中以原样或以模糊化形式提供一次性客户端公钥(在图9中示出为一次性客户端公钥906),使得服务器计算机可以解密使用客户端公钥(例如,结合服务器私钥)的消息。

请求消息900还可以包括本文讨论的其他数据。例如,请求消息900的明文916可以包括类似于上面在图7中讨论的标头版本和受保护的服务器密钥标识符的标头版本902和受保护的服务器密钥标识符904。请求消息900可以另外包括加密的协议数据910(例如,密码套件信息、数据映射信息等)和加密的有效载荷数据912(例如,客户端认证数据)。请求消息900的认证数据919可以包括用于整个请求数据和/或其部分的一个或多个消息认证码(mac)914。

如图9中所示,响应消息920包括在响应消息920的明文936中的受保护的客户端密钥标识符924。受保护的客户端密钥标识符924可能已经由服务器计算机在类似于请求消息900的先前请求消息中被接收。受保护的客户端密钥标识符924的包括允许客户端计算机将响应消息920映射到对应的请求消息(例如,请求消息900),并且选择用于解密响应消息920的适当的客户端私钥。

响应消息920还可以包括本文讨论的其他数据。例如,响应消息920的明文936可以包括类似于上面在图8中讨论的那些标头版本922和一次性服务器公钥926。响应消息920的密文938可以另外包括协议数据928和有效载荷数据932。协议数据928可以包括识别服务器私钥/公钥的受保护的服务器密钥标识符930。服务器私钥用于加密响应数据以获取密文938。受保护的服务器密钥标识符930可以在后续请求消息中被回传到服务器计算机,以使得服务器计算机能够解密请求消息。服务器公钥以原样或以模糊化形式提供(作为一次性服务器公钥926)。有效载荷数据932可以包括提供给客户端计算机的凭证数据、应用程序数据或者意图用于客户端计算机的任何其他合适的数据。响应消息920的认证数据939可以包括用于整个响应数据和/或其部分的一个或多个消息认证码(mac)934。

iii.数据保护方法

实施方案保护用于与有效载荷数据分开加密/解密有效载荷数据的协议数据。敏感有效载荷数据可以使用一个或多个有效载荷加密密钥进行加密以生成加密的有效载荷数据。包括用于加密有效载荷数据的密码套件的协议数据也可以使用一个或多个协议加密密钥进行加密。协议加密密钥和有效载荷加密密钥可以基于密钥协商建立。可以在消息中发送加密的协议数据和加密的有效载荷数据。

当接收到消息时,可以基于密钥协商来导出协议数据解密密钥和有效载荷解密密钥。可以使用协议解密密钥来解密加密的协议数据以获取协议数据(例如,密码套件)。可以使用协议数据和有效载荷解密密钥来解密加密的有效载荷数据。

在一些情况下,有效载荷数据可以包括多个有效载荷元素,每个有效载荷元素可以使用不同的加密密钥单独地加密。在这种情况下,可以根据需要对加密的有效载荷元素进行解密以改进数据安全性。

在各种实施方式中,下面讨论的技术可以与用于提供上文讨论的或彼此独立实施的保密密钥识别的方法组合。

a.消息加密方法

图10说明了根据一些实施方案的用于加密消息的示例性过程1000。过程1000可以由客户端计算机来实施以将请求消息加密到服务器计算机。另选地,过程1000也可以由服务器计算机来实施以将响应消息加密到客户端计算机。

在框1002处,确定消息的密码套件。如本文所讨论的,密码套件定义了用于保护计算机之间的通信的各种算法或参数,诸如操作模式(例如,用于关联数据的认证加密(aead))、密钥大小、密钥交换算法等。

可以由客户端计算机或服务器计算机基于以下各者来确定密码套件:预定参数,诸如硬件/软件配置和能力(例如,操作系统、存储器、cpu);预定偏好(例如用户偏好);等。此外,可以基于客户端计算机和服务器计算机之间的协商来确定密码套件。例如,客户端计算机可以在请求中向服务器计算机发送其支持的密码套件的列表。密码套件可以按照客户端计算机的优先级顺序列出。例如,密码套件列表中的第一密码套件可能是客户端计算机最优选的,第二密码套件对客户端计算机可能不如第一密码套件那么优选,等等。请求消息可以不包括任何有效载荷数据。另选地,请求消息可以包括使用优选密码套件加密的有效载荷数据。作为响应,服务器计算机可以从客户端计算机提供的密码套件(其可以是或可以不是客户端优选的密码套件)列表中选择密码套件,并将所选择的密码套件包括在响应消息中。响应消息可以不包括任何有效载荷数据。另选地,响应消息可以包括加密的或使用选择的密码套件以其他方式编码的有效载荷数据。

在框1004处,确定一个或多个协议加密密钥和一个或多个有效载荷加密密钥。协议加密密钥和有效载荷加密密钥可以基于消息的发送者和接收者之间的一个或多个共享秘密,kdf和/或密钥导出参数来确定。可以使用发送者的一个或多个私钥(例如,客户端私钥或服务器私钥)和接收者的一个或多个公钥(例如,服务器公钥或客户端公钥)来导出共享秘密。可以使用任何合适的密钥协商算法(诸如ecdh)来导出共享秘密。在一个实施方案中,一个私钥可以与不同的公钥组合以导出不同的共享秘密。在另一个实施方案中,不同的私钥可以与一个公钥组合以导出不同的共享秘密。私钥和公钥可以是一次性密钥,诸如短暂密钥或盲化的静态密钥。可以从先前的接收者消息或从带外信道(诸如电子邮件、文本、电话呼叫、邮政邮件或与用于请求/响应消息的当前通信信道不同的任何其他信道)获取接收者公钥。在某些情况下,可以从诸如证书机构的第三方获取接收者公钥。

协议加密密钥和/或有效载荷加密密钥可以除了共享秘密之外或代替共享秘密,基于密码套件生成。例如,密码套件可以指示要生成的密钥的大小和/或密钥生成算法(例如,kdf)。

可以从相同或不同的共享秘密生成协议加密密钥和/或有效载荷加密密钥。在一个示例中,将共享秘密用作到密钥导出函数(kdf)的输入,以生成被分割成多个较短子字符串的长位字符串。然后,可以使用子字符串来生成协议加密密钥和/或有效载荷加密密钥。例如,第一和第二子字符串可以用作协议加密密钥,并且其余的子字符串可以用作有效载荷加密密钥。在另一示例中,可以将不同的共享秘密和相同或不同的kdf一起使用来生成不同的密钥。

协议加密密钥和/或有效载荷加密密钥可以在基本相同的时间或在不同的时间生成。例如,可以基于共享秘密一次性生成所有密钥。在另一示例中,一些密钥可以在其他密钥之前生成。在某些情况下,密钥可以在“按需要”的基础上生成,就在加密操作需要它们之前。

协议加密密钥和/或有效载荷加密密钥可以彼此独立地生成或者基于先前生成的密钥来生成。例如,可以将协议加密密钥用作输入来生成另一个协议加密密钥或有效载荷加密密钥。可以将有效载荷加密密钥用作输入来生成另一有效载荷加密密钥。

在框1006处,使用有效载荷加密密钥加密有效载荷数据以获取加密的有效载荷数据。有效载荷数据的示例可以包括在请求消息中发送的客户端标识或客户端凭证数据、来自服务器计算机的响应消息中提供给客户端计算机的凭证数据、交易授权消息中的应用程序或交易数据等。

在一些实施方案中,有效载荷数据可以作为一个整体使用有效载荷加密密钥和由密码套件指示的加密算法来加密。例如,可以将有效载荷数据、有效载荷加密密钥以及可选地标头(例如,受保护的接收者密钥标识符、一次性发送者公钥)用作到aead函数中的输入,以产生密文(加密的有效载荷数据)和认证标签(消息认证码(mac))。

在一些其他实施方案中,有效载荷数据可以包括多个不止一个部分(也称为“有效载荷数据元素”或“有效载荷元素”)。可以使用其自己的有效载荷加密密钥和/或加密算法来单独加密每个有效载荷元素。由各种有效载荷元素使用的有效载荷加密密钥和/或加密算法可以相同或不同。在一些实施方案中,可以基于在框1002处确定的密码套件来确定有效载荷加密密钥和/或加密算法。

在框1008处,可以使用协议加密密钥来加密包括密码套件的协议数据以获取加密的协议数据。协议数据可以指描述如何加密、解密或以其他方式处理包括在消息中的有效载荷数据的任何信息。协议数据可以包括关于一个或多个密码套件的信息。例如,协议数据可以包括使用或优选地由消息的发送者(例如,客户端计算机或服务器计算机)使用的密码套件。另选地,协议数据可以包括由消息的发送者支持的多个密码套件。

除了密码套件信息之外,协议数据还可以包括附加数据,诸如描述个人数据元素如何被加密的数据安全性描述符数据。描述符数据可以包括数据协议映射信息。例如,对于每个有效载荷元素,数据协议映射信息可以包括用于给定有效载荷元素(诸如数据标签、加密/解密密钥标识符、加密/解密算法标识符等)的详细的元素特定协议信息。在一些实施方案中,元素特定协议信息可以可选地包括与有效载荷元素相关联的消息认证码(例如,作为将aead应用到有效载荷元素的结果)。数据协议映射可以存储在消息发送者可访问的表、列表、文件、数据库或任何其他数据结构或数据存储器中。

协议数据还可以可选地包括受保护的发送者密钥标识符(诸如本文所描述的)以使能异步请求和响应消息的映射。例如,请求消息可以包括受保护的客户端密钥标识符作为其协议数据的一部分。响应消息可以包括受保护的服务器密钥标识符作为其协议数据的一部分。

可以使用在框1004处确定的协议加密密钥来加密协议数据。在一些实施方案中,可以使用单个协议加密密钥(例如,从发送者私钥和一次性接收者公钥或一次性发送者私钥和接收者公钥导出的)来加密协议数据。在一些其他实施方案中,可以使用不同的协议加密密钥和/或加密算法来加密协议数据的不同部分。例如,协议数据的数据协议映射可以使用特定于数据协议映射的一个或多个映射加密密钥和/或加密算法(例如,aead)来加密;而协议数据的密码套件可以使用一个或多个密码套件加密密钥和预定的加密算法(例如,aes)来加密。

在框1010处,包括加密的有效载荷数据和加密的协议数据的消息可以被传输到消息的接收者。例如,消息可以是由客户端计算机传输到服务器计算机的请求消息或由服务器计算机传输到客户端计算机的响应消息。

加密的有效载荷数据和加密的协议数据可以包括在消息的密文部分中。消息可以包括消息的明文部分中的附加信息。例如,消息可以包括在明文中的受保护的接收者密钥标识符(例如,在请求消息中的受保护的服务器密钥标识符或在响应消息中的受保护的客户端密钥标识符)以允许接收者识别用来解密消息的接收者私钥。消息还可以包括一次性发送者公钥(例如,在请求消息中的一次性客户端公钥或在响应消息中的一次性服务器公钥),其可以是短暂密钥或盲化的静态密钥。消息还可以包括指示协议版本的标头版本,所述协议版本可由消息的接收者用来(例如)确定用于解密受保护的接收者密钥标识符的合适的标识符加密/解密密钥。可以使用认证算法(例如,aead)来保护附加信息中一些或所有以及协议数据和有效负载数据的真实性以生成包括在消息中的全局mac。在一个示例中,可以使用与协议加密密钥相同的密钥(例如,密码套件加密密钥或映射加密密钥)来生成全局mac。在一些实施方案中,代替加密的有效载荷元素或除了加密的有效载荷元素之外,可以从有效载荷元素特定的mac来计算全局mac。当在消息或文档中分散有效载荷数据元素(例如,不以连续方式排列)时,这提供了认证消息标头的灵活性。有效载荷元素特定的mac也可以被包括作为数据协议映射的一部分或被包括在消息内的另一合适的位置处。

图11说明了根据一些实施方案的用于加密消息的另一示例性过程1100。过程1100可以由客户端计算机来实施以将请求消息加密到服务器计算机。另选地,过程1100也可以由服务器计算机来实施以将响应消息加密到客户端计算机。

在框1102处,使用一个或多个发送者私钥和一个或多个接收者公钥来确定一个或多个共享秘密。可以使用任何合适的密钥协商算法(诸如ecdh)来导出共享秘密。对于请求消息,可以使用客户端私钥和服务器公钥来确定请求共享秘密。对于响应消息,可以使用服务器私钥和客户端公钥来确定响应共享秘密。私钥和/或公钥可以是一次性密钥(例如,短暂密钥或静态盲化的密钥)。

在框1104处,基于共享秘密、kdf和密钥导出参数(如果有的话)来确定包括协议加密密钥和有效载荷加密密钥的多个会话密钥。在一个实施方案中,可以将共享秘密用作到密钥导出函数中的输入,以导出随后被分割成多个会话密钥的位字符串。在一些其他实施方案中,可以使用不同的共享秘密来生成不同的会话密钥。例如,共享秘密a可以用于生成一个或多个会话密钥,共享秘密b可以用于生成一个或多个其他会话密钥,等等。

在一些实施方案中,密钥导出函数可以另外接受诸如接收者密钥标识符和会话标识符的其他输入。接收者密钥标识符可以识别接收者公/私钥对或接收者证书,并且可能不是受保护的形式。会话标识符可以基于发送者公钥(例如,截断的发送者公钥)来确定。

多个会话密钥可以包括用于加密消息的协议数据的协议加密密钥和用于加密消息的有效载荷数据的有效载荷加密密钥。协议加密密钥可以包括用于加密不同协议数据的多个密钥。例如,协议加密密钥可以包括用于加密密码套件的第一协议加密密钥(例如,密码套件加密密钥)。协议加密密钥可以包括用于加密协议数据的剩余部分的第二协议加密密钥,所述剩余部分为诸如数据协议映射(例如,消息认证码列表、有效载荷加密密钥标识符和/或有效载荷元素的加密算法标识符)、发送者密钥标识符、会话标识符、密码套件列表(例如,用于请求消息)等。在一些实施方案中,如果适用,可以使用多于两个的协议加密密钥。类似地,有效载荷加密密钥可以包括多个加密密钥,每个加密密钥用于加密有效载荷数据的不同部分(或有效载荷元素)。

在框1106处,使用第一协议加密密钥(也称为密码套件加密密钥)来加密密码套件以获取加密的密码套件。可以如图10中的过程1000的框1002所描述的来确定密码套件。从在框1104处确定的多个会话密钥中选择密码套件加密密钥。密码套件加密密钥和/或用于加密密码套件的加密算法通常独立于密码套件本身。例如,密码套件可以指定使用aead加密算法和256位的密钥大小来加密有效载荷数据。密码套件加密密钥可以是不同的密钥大小(例如128位),以及用于加密密码套件的加密算法可以是高级加密标准(aes)。在一些实施方案中,可以将加密的密码套件包括作为消息的明文的一部分。在其他实施方案中,可以将加密的密码套件包括作为消息的密文的一部分。

在框1108处,使用相应的有效载荷加密密钥来加密多个有效载荷元素中的每一个。有效载荷加密密钥可以从在框1104处确定的多个会话密钥中获得。出于各种原因,有效载荷数据可被划分成多个有效载荷元素。例如,如果一个有效载荷加密密钥被泄漏,则将有效载荷数据划分成更小的单独受保护的数据元素可以降低暴露整个有效载荷数据的风险。另选地,每个数据元素可以意图用于不同实体的访问或与不同级别的安全性相关联。因此,利用不同的密钥和/或加密算法保护数据元素可以限制这些方对预期数据元素的访问,而不会不必要地暴露其他数据元素。

密码套件加密密钥可以从上面在框1104处导出的多个会话密钥获得。因此,可以基于在框1102中确定的共享秘密来确定密码套件加密密钥。另选地或另外地,密码套件加密密钥可以基于一个或多个协议加密密钥或其他数据来确定。

与通常独立于密码套件的密码套件加密密钥不同,有效载荷加密密钥和/或算法通常取决于密码套件。例如,密码套件可以指定使用aead加密算法和/或256位的密钥大小来加密有效载荷数据。因此,对于密码套件,有效载荷加密密钥可以具有256位的密钥大小,和/或有效载荷元素可以使用aead加密函数进行加密。

在一些实施方案中,密码套件可以指定调节有效载荷元素的加密的一些但不是全部参数。例如,密码套件可以指定在不指定密钥大小的情况下使用aead算法。另选地,密码套件可以仅指定密钥大小而不指定加密算法。在这样的实施方案中,可以使用元素特定的加密算法和/或有效载荷加密密钥大小来加密有效载荷元素。作为协议数据的一部分,这种元素特定的加密信息可以被包括在元素特定的描述符信息(例如,数据协议映射信息)中。

可以基于各种因素来确定与有效载荷元素的加密相关联的加密算法、密钥大小和/或其他方面,这些因素为诸如有效载荷元素的类型(例如,多媒体对象或文本文件)、有效载荷元素的大小、与有效载荷元素相关联的灵敏度或安全性级别以及有效载荷数据的其他特性。)这些因素还可以包括有效载荷元素的预期接收实体(例如,用户、计算机或过程)的特性,诸如身份、访问控制级别、网络环境(例如,安全或不安全)、硬件能力(例如,网络或计算资源)、软件配置(例如,操作系统或应用)等。

在框1110处,可以使用第二协议加密密钥来加密数据协议映射,以获取加密的数据协议映射。从在框1104处生成的多个会话密钥中选择第二协议加密密钥。在一个实施方案中,第二协议加密密钥不同于用于在框1106处加密密码套件的第一协议加密密钥。第二协议加密密钥可以取决于密码套件。例如,第二协议加密密钥的大小可以由密码套件指定。在一个另选实施方案中,第二协议加密密钥可以与第一协议加密密钥相同,和/或独立于密码套件。

数据协议映射可以包括分别对应于多个有效载荷元素的多个映射条目。每个映射条目可以包括对有效载荷元素的引用(例如,数据标签)、识别用于有效载荷元素的加密/解密密钥的密钥标识符、识别用于有效载荷元素的密码算法(例如,加密/解密算法)(例如,aead)的算法标识符、有效载荷元素的消息认证码(mac)等。可以生成mac作为将加密算法(例如,aead)应用到有效载荷元素的结果。上述映射条目数据中的一些或全部在不同的实施方案中可以是可选的。例如,映射条目可以仅包括用于给定的有效载荷元素的mac,而不包括加密/解密密钥标识符或算法标识符。因此,数据协议映射可以仅包括数据元素mac的列表。作为另一示例,映射条目可以包括加密/解密密钥标识符和/或算法标识符,但是可能不包括mac。例如,当应用到有效载荷元素时,加密算法(例如aes)可以不生成mac。

在一些实施方案中,除了数据协议映射之外或代替数据协议映射,可以使用第二协议加密密钥来加密其他协议数据。例如,其他协议数据可以包括受保护的发送者密钥标识符、会话标识符、密码套件列表、控制位等。在其他实施方案中,可以使用与第一或第二协议加密密钥不同的附加协议加密密钥来加密附加协议数据。在某些情况下,附加协议数据的加密可以取决于密码套件和/或数据协议映射。

在框1112处,传输包括加密的密码套件、加密的数据协议映射和加密的有效载荷元素的消息。例如,消息可以是由客户端计算机传输到服务器计算机的请求消息或由服务器计算机传输到客户端计算机的响应消息。

加密的有效载荷数据和加密的协议数据可以包括在消息的密文部分中。或者,一些加密的协议数据(例如,加密的密码套件)可以被包括在消息的明文部分中。消息可以包括附加数据,诸如受保护的接收者密钥标识符(例如,在请求消息中的受保护的服务器密钥标识符或在响应消息中的受保护的客户端密钥标识符)以允许接收者识别用于解密消息的接收者私钥。消息还可以包括一次性发送者公钥(例如,在请求消息中的一次性客户端公钥或在响应消息中的一次性服务器公钥),其可以是短暂密钥或盲化的静态密钥。消息还可以包括指示协议版本的标头版本,所述协议版本可由消息的接收者用来(例如)确定用于解密受保护的服务器密钥标识符的合适的标识符加密/解密密钥。这些附加信息中的一些或全部的真实性可以被包括在消息的明文部分或密文部分中。包括在消息的明文部分中的数据可以不被加密,但仍然保护了真实性/完整性(例如,通过aead)。因此,消息可以不仅包括用于个人有效载荷元素的mac,还包括覆盖消息中包括的非密文数据的一个或多个全局mac。

在一些实施方案中,敏感密码信息(诸如共享秘密和会话密钥)可以在其不再被需要之后立即被擦除(例如,删除、归零或以其他方式呈现为不可访问)。此类敏感信息的擦除可以在例如使用敏感信息加密消息数据之后发生。在其他实施方案中,此类密码信息中的一些可以在其使用之后的一段时间内被存储(例如,在安全元件中),以允许例如异步消息的处理。

b.消息解密方法

图12说明了根据一些实施方案的用于解密消息的示例性过程1200。过程1200可以由客户端计算机来实施以从服务器计算机解密响应消息。另选地,过程1200也可以由服务器计算机来实施以从客户端计算机解密请求消息。

在框1202处,接收包括加密的协议数据和加密的有效载荷数据的消息。在一些实施方案中,消息可以由上述图10-图11中描述的消息加密方法生成。

在框1204处,确定一个或多个协议解密密钥。协议解密密钥可以与图10-图11中描述的对应的协议加密密钥相同或不同。协议解密密钥可以基于消息的发送者和接收者之间的一个或多个共享秘密,kdf和密钥导出参数(如果有的话)来确定。例如,可以使用接收者的一个或多个私钥(例如,客户端私钥或服务器私钥)和发送者的一个或多个公钥(例如,服务器公钥或客户端公钥)来导出共享秘密。可以使用任何合适的密钥协商算法(诸如ecdh)来导出共享秘密。私钥和公钥可以是一次性密钥,诸如短暂密钥或盲化的静态密钥。

接收者私钥可以由包括在消息本身中的受保护的接收者密钥标识符来识别。在一些实施方案中,消息可以包括指示协议版本的标头版本,所述协议版本可以用于确定用于解密受保护的接收者密钥标识符的标识符解密密钥。

可以从消息本身或从带外信道(诸如电子邮件、文本、电话呼叫、邮政邮件或与用于请求/响应消息的当前通信信道不同的任何其他信道)获取发送者公钥。在某些情况下,可以从诸如证书机构的第三方获取发送者公钥。

可以从相同或不同的共享秘密生成协议解密密钥。在一个示例中,将共享秘密用作到密钥导出函数(kdf)的输入,以生成被分割成各种子字符串的位字符串。然后,可以使用子字符串来生成协议解密密钥。在另一示例中,可以将不同的共享秘密和相同或不同的kdf一起使用来生成不同的协议解密密钥。

协议解密密钥可以在基本相同的时间或在不同的时间生成。例如,可以基于共享秘密一次性生成所有协议解密密钥。在另一示例中,一些密钥可以在其他密钥之前生成。在某些情况下,密钥可以在“按需要”的基础上生成,例如,就在解密操作需要它们之前。

协议解密密钥可以彼此独立地生成或者基于先前生成的密钥来生成。例如,可以将第一协议解密密钥用作输入来生成第二协议解密密钥。作为另一示例,第一协议解密密钥可以用于解密加密的密码套件。密码套件可以指定第二协议加密密钥的密钥大小。

在框1206处,使用协议解密密钥来解密加密的协议数据,以获取协议数据。协议数据通常包括如上所述的密码套件。另外,协议数据还可以包括数据协议映射信息、发送者密钥标识符、发送者会话标识符、发送者密码套件列表等。在一些实施方案中,可以使用一个协议解密密钥来解密整个加密的协议数据。在其他实施方案中,协议数据可以包括各自被个别地加密的多个部分。在此类实施方案中,可以单独地解密每个加密的协议数据部分。

在一些实施方案中,加密的协议数据包括第一加密部分和第二加密部分和/或其他协议数据,所述第一加密部分包括加密的密码套件,并且所述第二加密部分包括数据安全性描述符(也称为数据描述符)信息(例如,包括数据协议映射)。使用第一协议解密密钥(例如,密码套件解密密钥)来解密协议数据的第一加密部分,以获取密码套件。使用第二协议解密密钥来解密协议数据的第二加密部分,以获取剩余的协议数据。解密可以以预定义或任意顺序发生。例如,在一些情况下,可以至少部分地基于第一加密部分(例如,密码套件)的解密结果来确定对第二加密部分的解密(例如,解密算法或密钥大小)。在这些情况下,第二加密部分必须在解密第一加密部分之后进行解密。在一些其他情况下,协议数据的不同部分之间可以不存在任何附属性,并且对协议数据的解密可以以任意顺序发生。

在一些示例中,可以使用协议解密密钥(例如,密码套件解密密钥或映射解密密钥)来提供对消息中的未包括在密文中的附加数据的真实性覆盖。因此,可以验证消息中所包括的全局mac以确保消息数据的真实性和完整性。

在框1208处,确定一个或多个有效载荷解密密钥。有效载荷解密密钥可以与图10-图11中描述的对应的有效载荷加密密钥相同或不同。可以基于消息的发送者和接收者之间的一个或多个共享秘密以与框1204中所描述的方式类似的方式来确定协议解密密钥。在一些实施方案中,相同的共享秘密用于生成协议解密密钥和有效载荷解密密钥两者。另选地,可以使用不同的共享秘密来生成协议解密密钥和有效载荷解密密钥。

可以从相同或不同的共享秘密生成有效载荷解密密钥。在一个示例中,将共享秘密用作到密钥导出函数(kdf)的输入,以生成被分割成各种子字符串的位字符串。然后,可以使用子字符串来生成有效载荷解密密钥。在另一示例中,可以将不同的共享秘密和相同或不同的kdf一起使用来生成不同的有效载荷解密密钥。在一些实施方案中,可以基于与协议解密密钥相同的共享秘密来生成有效载荷解密密钥。例如,可以由kdf使用共享秘密来生成位字符串,然后将所述位字符串分割成与协议解密密钥相对应的子字符串和协议解密密钥。

有效载荷解密密钥可以在基本相同的时间或在不同的时间生成。例如,可以基于共享秘密一次性生成所有有效载荷解密密钥。在另一示例中,一些密钥可以在其他密钥之前生成。在某些情况下,密钥可以在“按需要”的基础上(就在解密操作需要它们之前)生成。在一些实施方案中,可以在与生成协议解密密钥的基本相同的时间或不同的时间生成有效载荷解密密钥。

有效载荷解密密钥可以彼此独立地生成或者基于先前生成的密钥来生成。例如,可以将第一有效载荷解密密钥用作输入来生成第二有效载荷解密密钥。作为另一示例,可以使用第一有效载荷解密密钥来解密数据片段(例如,密钥导出参数),然后将该数据片段用作输入以生成第二有效载荷解密密钥。在一些实施方案中,有效载荷解密密钥的生成可以取决于使用诸如密码套件的协议解密密钥解密的信息。例如,密码套件可以指定有效载荷解密密钥的大小和/或密钥导出函数。

在框1210处,使用协议数据和有效载荷解密密钥对加密的有效载荷数据进行解密。在一些实施方案中,加密的有效载荷数据可以作为一个整体使用由密码套件指示的解密算法和在框1204处确定的协议解密密钥来解密。在一些实施方案中,对有效载荷数据的解密包括验证有效载荷数据的mac。mac可以被包括作为协议数据的一部分。

在一些其他实施方案中,加密的有效载荷数据可以包括多个不止一个的加密的有效载荷元素。每个加密的有效载荷元素可以使用其对应的有效载荷解密密钥和解密算法来个别地解密。如上所述,将有效载荷数据划分成更小的个别地受保护的数据元素可以降低暴露整个有效载荷数据的风险。另外,每个数据元素可以旨在由不同实体进行访问或与不同的安全性级别相关联。因此,利用不同的密钥或算法来保护数据元素可以限制这些各方对预期数据元素的访问,而不会不必要地暴露其他数据元素。

可以至少部分地基于在框1208处确定的协议数据来确定用于解密有效载荷元素的有效载荷解密密钥、解密算法和可选地mac。作为一个示例,密码套件可以指示要使用的密钥大小和/或解密算法。作为另一示例,数据协议映射可以针对每个有效载荷元素指示要用于解密加密的有效载荷元素和/或用于验证解密结果的对应的数据标签、解密密钥、解密算法和/或mac。

解密的有效载荷数据可以由消息的接收者以任何合适的方式处理。例如,消息可以是来自服务器计算机的供应响应消息,且消息的有效载荷数据可以包括被提供给客户端计算机的凭证数据(例如,pan或令牌、有限使用密钥)。随后,客户端计算机可以使用凭证数据来进行交易。作为另一示例,消息可以是从客户端计算机到服务器计算机的请求消息,并且消息的有效载荷数据可以包括客户端计算机的认证或识别数据。可以由服务器计算机使用有效载荷数据来认证客户端计算机和/或生成对应的响应。

在一些实施方案中,解密的有效载荷数据中的一些或全部可以使用不同的加密密钥(例如,共享的或私有的)来重新加密、存储在数据存储器中和/或传输到另一实体。

图13说明了根据一些实施方案的用于解密消息的另一示例性过程1300。过程1300可以由客户端计算机来实施以从服务器计算机解密响应消息。另选地,过程1300也可以由服务器计算机来实施以从客户端计算机解密请求消息。

在框1302处,接收包括加密的密码套件、加密的数据协议映射和加密的有效载荷元素的消息。消息还可以包括其他数据,诸如一次性发送者公钥(例如,短暂或盲化的静态密钥)、受保护的接收者密钥标识符、标头版本等。

在框1304处,基于一个或多个接收者私钥和一个或多个发送者公钥来确定一个或多个共享秘密。在一个实施方案中,一个私钥可以与不同的公钥组合以导出不同的共享秘密。在另一个实施方案中,不同的私钥可以与一个公钥组合以导出不同的共享秘密。在一些实施方案中,接收者私钥可以由包括在消息本身中的受保护的接收者密钥标识符来识别。消息可以包括多于一个受保护的接收者密钥标识符,其中每一者识别不同的接收者私钥。例如,消息可以包括指示协议版本的标头版本,所述协议版本可以用于确定用于解密受保护的接收者密钥标识符的标识符解密密钥。在一些实施方案中,标头版本可以用于从多个默认密钥对中选择一个默认密钥对。所选择的默认密钥对包括默认私钥和默认公钥。可以基于默认私钥和默认公钥的点乘法来导出标识符解密密钥。

发送者公钥可以从消息本身获取。例如,发送者公钥可以存储在消息的明文和/或密文中。如果存储在明文中,则发送者公钥通常被模糊化以提供安全性。在一些情况下,可以从先前的消息或从带外信道(诸如电子邮件、文本、电话呼叫、邮政邮件或与用于请求/响应消息的当前通信信道不同的任何其他信道)来获取发送者公钥。在某些情况下,可以从诸如证书机构的第三方获取发送者公钥。

在框1306处,基于上文确定的一个或多个共享秘密来确定密码套件解密密钥。例如,可以将共享秘密用作到kdf中的输入以生成位字符串,所述位字符串的一部分(例如,前128位)可以用作密码套件解密密钥。密码套件解密密钥是协议解密密钥。字符串的剩余部分可以被分割以生成其他协议解密密钥(例如,映射解密密钥)或有效载荷解密密钥。

在框1308处,使用密码套件解密密钥来解密加密的密码套件以获取密码套件。密码套件解密密钥和/或用于解密密码套件的解密算法通常独立于密码套件本身。例如,密码套件可以指定使用aead加密算法和256位的密钥大小。密码套件解密密钥可以是不同的密钥大小(例如,128位),且用于解密密码套件的解密算法(例如,高级加密标准(aes))可以不同于密码套件指定的密钥大小。在一些实施方案中,可以将加密的密码套件包括作为消息的明文的一部分。在其他实施方案中,可以将加密的密码套件包括作为消息的密文的一部分。

在框1310处,使用在框1304处确定的共享秘密来确定映射解密密钥。映射解密密钥是用于解密附加协议数据(诸如下面的数据协议映射)的协议解密数据。映射解密密钥通常不同于密码套件解密密钥。然而,在某些情况下,映射解密密钥可以与密码套件解密密钥相同。在某些实施方案中,映射解密密钥可以使用与用于确定密码套件解密密钥相同的共享秘密来确定。在其他实施方案中,映射解密密钥可以使用与用于确定密码套件解密密钥不同的共享秘密来确定。可以在与确定密码套件解密密钥的基本相同的时间或不同的时间确定映射解密密钥。

在一些实施方案中,可以至少部分地基于密码套件来确定映射解密密钥。例如,映射解密密钥的大小和/或kdf可以由密码套件指定。因此,选择具有对应大小的位字符串的一部分作为映射解密密钥。位字符串可以是基于共享秘密的kdf的输出字符串。在某些情况下,同一输出字符串的其他部分可用于密码套件解密密钥和/或有效载荷解密密钥。在其他实施方案中,映射解密密钥可以不基于密码套件。

在框1312处,使用密码套件和映射解密密钥对加密的数据协议映射数据进行解密以获取数据协议映射。

在一些实施方案中,用于解密数据协议映射的解密算法可以至少部分地基于密码套件来确定。例如,密码套件可以指定使用aead加密算法和/或256位的密钥大小。因此,有效载荷加密密钥可以具有256位的密钥大小,和/或有效载荷元素可以使用aead加密函数进行加密。

数据协议映射可以包括分别对应于多个有效载荷元素的多个映射条目。每个映射条目可以包括对有效载荷元素的引用(例如,数据标签)、识别用于有效载荷元素的加密/解密密钥的密钥标识符、识别用于有效载荷元素的密码算法(例如,加密/解密算法)(例如,aead)的算法标识符、有效载荷元素的消息认证码(mac)等。可以生成mac作为将加密算法(例如,aead)应用到有效载荷元素的结果。上述映射条目数据中的一些或全部在不同的实施方案中可以是可选的。例如,映射条目可以仅包括用于给定的有效载荷元素的mac,而不包括加密/解密密钥标识符或算法标识符。因此,数据协议映射可以包括mac列表。作为另一示例,映射条目可以包括加密/解密密钥标识符和/或算法标识符,但是可能不包括mac。例如,当应用到有效载荷元素时,加密算法(例如aes)可以不生成mac。

在一些实施方案中,数据协议映射还可以包括附加协议数据,诸如受保护的发送者密钥标识符、会话标识符、密码套件列表、控制位等。在其他实施方案中,附加协议数据可以使用不同的协议加密密钥进行加密。

在框1314处,使用数据协议映射来确定有效载荷解密密钥和解密算法,以用于解密加密的有效载荷元素。

可以基于在框1304处确定的共享秘密来确定一个或多个有效载荷解密密钥。可以使用上述相同的共享秘密和/或用于协议解密密钥(例如,密码套件密钥和/或映射解密密钥)相同的kdf来生成有效载荷解密密钥。在一个实施方案中,由kdf使用共享秘密生成长位字符串。长位字符串被分割成多个较小的子字符串,每个子字符串对应于有效载荷解密密钥。在一些实施方案中,长位字符串还可以用于生成密码套件解密密钥和/或映射解密密钥。

在一些实施方案中,有效载荷解密密钥的生成可以由数据协议映射确定。例如,数据协议映射可以针对每个有效载荷元素指示对应的解密密钥的大小。基于该信息,可以从更长的位字符串(例如,由kdf使用共享秘密生成)中选择位字符串的连续片段,并将这些连续片段用作有效载荷解密密钥,其中每个片段的长度如由数据协议映射所指示对应于对应的有效载荷解密密钥的大小。在一些实施方案中,一次性生成所有的有效载荷解密密钥。在一些其他实施方案中,有效载荷解密密钥可以在“按需要”的基础上生成,例如,就在解密特定的对应的有效载荷元素需要它们之前。

可以至少部分地基于数据协议映射来识别要用于特定有效载荷元素的有效载荷解密密钥和/或解密算法。例如,可以检索(例如,使用数据标签)有效载荷元素的数据协议映射条目。数据协议映射条目可以包括与数据元素相关联的数据标签、识别有效载荷解密密钥的解密密钥标识符、和/或识别用于有效载荷元素的解密算法的解密算法标识符。在一个实施方式中,有效载荷解密密钥存储在列表、阵列或其他合适的数据结构中。解密密钥标识符可以是索引,其指向此类数据结构中的其中存储有对应的有效载荷解密密钥的位置。算法标识符可以通过名称来识别算法。另选地,算法标识符可以包括索引,其指向列表、阵列或其他适当的数据结构中的其中存储有对应的算法名称或用于算法的代码的位置。

在一些另选实施方案中,解密密钥标识符和/或算法标识符可以不被明确地包括在数据协议映射中。例如,可以基于有效载荷元素相对于其他有效载荷元素的位置来隐式地识别有效载荷元素的解密密钥。例如,在有效载荷解密密钥的有序列表中的第一有效载荷解密密钥可以对应于第一有效载荷元素,在有效载荷解密密钥的有序列表中的第二有效载荷解密密钥可以对应于第二有效载荷元素,依此类推。算法标识符也可以这样实施。

数据协议映射可以可选地包括可在加密的有效载荷元素的解密期间被验证的每个有效载荷元素的mac。作为一个示例,可以将加密的有效载荷元素、对应的有效载荷解密密钥和对应的mac提供给对应的解密函数(例如,aead)以获取明文中的有效载荷元素,或者如果mac不匹配加密的有效载荷元素时报错。

在一些实施方案中,除了数据协议映射之外或代替数据协议映射,由密码套件来确定用于有效载荷元素中的一些或全部的有效载荷解密密钥和/或算法。在一个实施方案中,可以使用分层方法,其中搜索数据协议映射以确定用于解密特定有效载荷元素的元素特定解密密钥和/或算法。如果没有找到,则可以使用由密码套件指定的全局解密密钥和/或默认解密算法来解密有效载荷元素。

在一些实施方案中,可以例如在“按需要”的基础上针对包括在消息中的多于一个的加密的有效载荷元素来重复框1314和框1316。协议数据可以包括对预期接收者的识别、可访问性(例如,所需访问权限)以及关于有效载荷元素中的一些或全部的其他上下文信息。在一些实施方案中,有效载荷元素的解密可以取决于另一有效载荷元素的解密。例如,从解密一个加密的有效载荷元素获取的数据可以用于解密另一加密的有效载荷元素。在一些实施方案中,解密的有效载荷元素可以在被存储或传输之前使用不同的密钥(例如,本地加密密钥)来重新加密。

在一些实施方案中,敏感密码信息(诸如共享秘密和会话密钥)可以在其不再被需要之后立即被擦除(例如,删除、归零或以其他方式呈现为不可访问)。此类敏感信息的擦除可以在例如使用敏感信息解密消息数据之后发生。在其他实施方案中,此类密码信息中的一些可以在其使用之后的一段时间内被存储(例如,在安全元件中),以允许例如异步消息的处理。

图14说明了根据一些实施方案的用于解密消息1400的另一示例性过程。消息1400可以是由服务器计算机从客户端计算机接收的请求消息,或由客户端计算机从服务器计算机接收的响应消息。

消息1400可以包括附加的认证数据(aad)1418、密文1420和认证数据1422。aad1418可以包括标头版本1402、一个或多个受保护的接收者密钥标识符1404以及一个或多个一次性发送者公钥1406。标头版本1402可以指示当前消息使用的协议版本。在一些实施方案中,标头版本可以不包括在aad1418中,而是改为保持为明文的形式。协议版本可以指出消息的数据格式。受保护的接收者密钥标识符1404可以是用于请求消息的受保护的服务器密钥标识符和用于响应消息的被保护的客户端密钥标识。每个受保护的接收者密钥标识符可用于标识对应的接收者私钥。一次性发送者公钥1406可以包括用于请求消息的一个或多个一次性客户端公钥或用于响应消息的一个或多个一次性服务器公钥。一次性发送者公钥1406可以是短暂密钥或者盲化的或模糊化的静态密钥。包括在aad中的数据可以不被加密,但可以被模糊化和完整性保护(例如通过全局应用的aead)。例如,一次性发送者公钥1406可以被模糊化。可以以受保护的形式(例如,加密的)来包括受保护的接收者密钥标识符。标头版本1402可以以明文的形式提供,而不是被模糊化或被加密。

密文1420可以包括:加密的有效载荷数据1414;以及加密的协议数据,其包括加密的密码套件1408和其他加密的协议数据1410,所述其他加密的协议数据包括数据安全性描述符1412。数据安全性描述符1412可以包括诸如本文所述的数据协议映射。

认证数据1422可以包括用于整个消息和/或用于消息的各个部分的一个或多个消息加密代码(例如,aeadmac)。例如,认证数据1422可以包括:保护aad1418的全局mac;和/或多个本地mac,每个本地mac覆盖消息的不同部分(诸如有效载荷数据的不同有效载荷元素)。

根据实施方案,一旦接收者(例如,服务器计算机或客户端计算机)接收到消息1400,接收者便可以执行以下示例步骤以对消息进行解密。

在步骤1处,可以确定接收者的默认私钥1424。该确定可以基于标头版本1402。例如,可能存在与不同协议版本相关联的多个默认私钥。标头版本1402可以指示消息的协议版本并由此用于选择对应的默认私钥。

在步骤2处,可以基于默认私钥1424来导出标识符解密密钥1426。例如,可以基于默认私钥1424和与默认私钥1424相关联的默认公钥的点乘法来导出标识符解密密钥1426。标识符解密密钥1426可以用于解密一个或多个受保护的接收者密钥标识符1402以获取一个或多个接收者密钥标识符(未示出)。

在步骤3处,使用一个或多个接收者密钥标识符来检索对应的接收者私钥1428。在其中接收者密钥标识符无效的一些情况下(例如,与任何接收者私钥都不相关联的随机标识符),可以改为使用默认私钥或某个其他合适的私钥。

在步骤4处,基于一个或多个接收者私钥1428和一个或多个一次性发送者公钥1406(例如,使用ecdh)来生成一个或多个共享秘密。

在步骤5处,可以使用共享秘密,以使用kdf和其他密钥导出参数(如果有的话)来导出一个或多个保护密钥1430(也称为会话密钥),诸如sk0、sk1、...skn。保护密钥1430可以包括协议解密密钥和有效载荷解密密钥。在某些情况下,解密密钥1430中的一些或全部可以与用于加密消息中的数据的加密密钥相同。在一些其他情况下,解密密钥可以与加密密钥不同。

在步骤6处,使用第一保护密钥(sk0)来解密加密的密码套件1408,以获取密码套件。用于解密密码套件的第一保护密钥和解密算法可以独立于密码套件。

在步骤7处,使用第二保护密钥(sk1)来解密其他加密的协议数据1410以获取附加协议数据,诸如数据安全性描述(例如,数据协议映射)。可以根据密码套件来执行对加密的协议数据1410的解密。例如,密码套件可以指示要使用的解密算法(例如,aead)。

在步骤8处,使用其他保护密钥(例如,sk3至skn)和协议数据来解密加密的有效载荷数据1414。例如,加密的有效载荷数据可以包括多个独立加密的数据元素。数据协议映射可以用来通过指定要使用的有效载荷解密密钥、解密算法和/或消息验证码来确定如何解密和/或验证每个加密的数据元素。例如,在一个示例中,可以使用第一有效载荷解密密钥(例如,ski)来解密第一加密的有效载荷元素,而可以使用第二有效载荷解密密钥(例如,ski)来解密第二加密的有效载荷元素。在一些情况下,加密的有效载荷元素中的一些或全部可以不被解密,或者可以在不同的时间被解密。

在一些情况下,可以取决于存储在有效载荷元素中的数据的类型来解密有效载荷元素。例如,接收者(例如,服务器计算机或客户端计算机)可以基于要执行的特定操作来决定仅对某些数据进行解密。以此方式,只有需要的数据被解密,并且不需要的数据可以保持加密,从而避免当数据处于明文时的潜在发现,即使仅在短时间内。在一个示例中,可以在数据安全性描述符中指示数据的类型作为协议数据的一部分。

在步骤9处,可以使用保护密钥和/或解密数据来验证认证数据(例如mac)1422。在一些实施方案中,mac的验证可以在数据(mac为其提供保护)的解密期间、之前或之后发生。

c.http消息的数据保护

本文讨论的技术可用于保护在http消息中传输的敏感数据。在一些实施方案中,可以使用本文描述的加密方法来加密敏感有效载荷数据以生成加密的有效载荷数据和加密的协议数据。加密的有效载荷数据和加密的协议数据可以包括在http消息(例如,http请求消息或http响应消息)中并进行传输。相反地,可以使用本文描述的解密方法来解密包含加密的协议数据和加密的有效载荷数据的http消息,以恢复敏感有效载荷数据。在各种实施方案中,敏感有效载荷数据可以包括文件、数据对象、数据流或任何其他形式的数据。

虽然以下讨论中的实施方案利用javascript对象概念(json)和jsonweb加密(jwe)来实施各个方面,但是应当理解,在另选实施方案中可以使用任何其他合适的数据格式和/或消息加密方案。

图15说明了根据一些实施方案的用于生成http请求消息的示例性过程1500。过程1500可以由http请求消息的发送者(诸如客户端计算机)来实施。

如所说明,敏感数据或密钥a1502(例如,pan信息)和敏感数据或密钥b1504(例如,访问令牌散列)可以由加密服务或模块1506加密以生成加密数据,该加密数据包括加密数据a1510及其相关联的认证标签1512(例如,mac)、加密数据b1514及其相关联的认证标签1516(例如,mac)以及可以包括密钥协商信息和/或加密协议信息(例如,密码套件)的标头数据1508。在某些情况下,要加密的数据可能已经被加密。例如,luk可以用本地des密钥进行加密。在这种情况下,在用保护密钥(例如,基于共享秘密)重新加密本地加密的数据以生成加密数据之前,加密服务1506可以首先解密该本地加密的数据(例如,使用本地des密钥)。

加密服务或模块1506优选地在相对安全的环境1505中执行。安全环境可以由硬件、软件或两者的组合来提供。例如,安全环境可以由硬件安全模块(hsm)和/或应用程序编程接口(api)提供。关于图19来讨论示例性加密服务或模块的操作。

可以处理加密服务1506的上述输出以生成根据一个或多个模板(诸如一个或多个http模板1520和/或一个或多个json内容模板1522)格式化的http请求消息1524。在一个实施方案中,可以将加密服务1506的输出、http模板1520、json内容模板1522提供作为到格式化服务或模块1518的输入,所述格式化服务或模块生成正确格式化的http请求消息1524。在一个实施方案中,http请求消息1524可以根据jwe规范进行格式化。

http请求消息1524包括http请求标头1526,所述http请求标头包括标头数据1508。标头数据1508可以被编码或模糊化(例如,使用base64url编码)。示例性标头数据1508可以包括公钥或私钥引用(例如,证书序列号)、一次性公钥、密钥协商参数、有效载荷数据的mac列表和全局mac。

http请求消息1524还包括在http请求标头1526或请求消息的其他适当部分中的加密数据a1510和加密数据b1514。例如,在一个实施方案中,http请求消息1524可以包括在http请求标头或http请求的另一部分中的数据ajwe序列化1530和数据bjwe序列化1532。这些jwe序列化可以是jwejson序列化或jwejson序列化。每个jwe序列化可以包括在名称/值对中表示的标头、密文和认证标签。数据可以在被包括在jwe序列化中之前进行base64url编码。jwe序列化的标头可以包括识别用于加密特定数据的加密算法和加密密钥的协议数据。例如,数据ajwe序列化1530的标头可以包括对用于加密数据a的加密算法(例如,“alg:alg_name”)和加密密钥(例如,“kid:1”,指代加密密钥sk1)的识别。数据bjwe序列化1532的标头可以包括对用于加密数据b的加密算法(例如,“alg:alg_name”)和加密密钥(例如,“kid:2”,指代加密密钥sk2)的识别。数据ajwe序列化1530的密文可以包括加密数据a1510。数据bjwe序列化1532的密文可以包括加密数据b1514。数据ajwe序列化1530的认证标签可以包括认证标签1512。数据bjwe序列化1532的认证标签可以包括认证标签1516。

图16说明了根据一些实施方案的用于处理http请求消息的示例性过程1600。过程1600可以由http请求消息的接收者(诸如服务器计算机)来实施。

如所说明,诸如图15中所描述的http请求消息1524可以由剖析模块1602处理以提取标头数据1508、加密数据a1510和相关联的认证标签1512以及加密数据b1514和相关联的认证标签1516。如果需要,剖析模块可以执行base64url解码。

提取的数据可以被馈送到解密服务或模块1604中以获取原始敏感数据,诸如敏感数据a1502(例如,明文中的pan信息)和敏感数据b1504(例如,明文中的访问令牌散列)。

解密服务或模块1604优选地在相对安全的环境1605中执行。安全环境可以由硬件、软件或两者的组合来提供。例如,安全环境可以由hsm和/或api提供。关于图20来讨论示例性解密服务或模块1604的操作。

图17说明了根据一些实施方案的用于生成http响应消息的示例性过程1700。过程1700可以由http响应消息的发送者(诸如服务器计算机)来实施。过程1700的方面可以类似于用于加密图15中描述的http请求消息的数据的过程1500。

在类似于过程1500中的数据a和数据b的加密的过程中,敏感或密钥数据c1702(例如,有限使用密钥(luk))和敏感数据或密钥d1704(例如,令牌参数)可以由加密服务或模块1706进行加密以生成加密的数据,所述加密的数据包括加密的敏感数据c1710及其相关联的认证标签1712(例如,mac)、加密的敏感数据d1714及其相关联的认证标签1716(例如,mac)以及可以包括密钥协商信息和/或加密信息(例如,密码套件)的标头数据1708。在某些情况下,要加密的数据可能已经被加密。例如,luk可以用本地des密钥进行加密。在这种情况下,在用保护密钥(例如,基于共享秘密)重新加密本地加密的数据以生成加密数据之前,加密服务1706可以首先解密该本地加密的数据(例如,使用本地des密钥)。

加密服务或模块1706优选地在相对安全的环境1705中执行。安全环境可以由硬件、软件或两者的组合来提供。例如,安全环境可以由hsm和/或api提供。关于图19来讨论示例性加密服务或模块的操作。在一些实施方案中,图16中讨论的加密模块1706和解密模块1606可以由相同的模块或不同的模块实施。

可以处理加密服务1706的上述输出以生成根据一个或多个模板(诸如一个或多个http模板1720和/或一个或多个json内容模板1722)格式化的http响应消息1724。如所说明,在一个实施方案中,可以将加密服务1706的输出数据、http模板1720、json内容模板1722提供作为到格式化服务或模块1718的输入,所述格式化服务或模块生成正确格式化的http响应消息1724。在一个实施方案中,http响应消息1724可以根据jwe规范进行格式化。

http响应消息1724包括http响应标头1726,所述http响应标头包括标头数据1708。标头数据1708可以被编码或模糊化(例如,使用base64url编码)。示例性标头数据1708可以包括公钥或私钥引用(例如,证书序列号)、一次性公钥、密钥协商参数、有效载荷数据的mac列表和全局mac。

http响应消息1724还包括在http响应标头1726或响应消息的其他适当部分中的加密数据c1710和加密数据d1714。例如,在一个实施方案中,http响应消息1724可以包括在http响应标头或http响应的另一部分中的数据cwe序列化1730和数据dwe序列化1732。这些jwe序列化可以是jwejson序列化或jwejson序列化。每个jwe序列化可以包括在名称/值对中表示的标头、密文和认证标签。数据可以在被包括在jwe序列化中之前进行base64url编码。jwe序列化的标头可以包括识别用于加密特定数据的加密算法和加密密钥的协议数据。例如,数据cjwe序列化1730的标头可以包括对用于加密数据c的加密算法(例如,“alg:alg_name”)和加密密钥(例如,“kid:1”,指代加密密钥sk1)的识别。数据djwe序列化1732的标头可以包括对用于加密数据d的加密算法(例如,“alg:alg_name”)和加密密钥(例如,“kid:2”,指代加密密钥sk2)的识别。数据cjwe序列化1730的密文可以包括加密数据c1710。数据djwe序列化1732的密文可以包括加密数据d1714。数据cjwe序列化1730的认证标签可以包括认证标签1712。数据djwe序列化1732的认证标签可以包括认证标签1716。

图18说明了根据一些实施方案的用于处理http响应消息的示例性过程1800。过程1800可以由http响应消息的接收者(诸如客户端计算机)来实施。过程1800的方面可以类似于图16中描述的用于解密来自http请求消息的数据的过程1600。

如所说明,诸如图17中所描述的http响应消息1724可以由剖析模块1802处理以提取标头数据1708、加密数据c1710和相关联的认证标签1712以及加密数据d1514和相关联的认证标签1716。

提取的数据可以被馈送到解密服务或模块1804以获取原始敏感数据,诸如敏感数据c1702(例如,明文中的pan信息)和敏感数据d1704(例如,明文中的访问令牌散列)。

解密服务或模块1804优选地在相对安全的环境1805中执行。安全环境可以由硬件、软件或两者的组合来提供。例如,安全环境可以由hsm和/或api提供。关于图20讨论示例性解密服务或模块的操作。

图19说明了根据一些实施方案的用于加密敏感数据的示例性加密过程1900。加密过程1900可以用于加密要包括在请求消息或响应消息中的敏感数据。在一些实施方案中,加密过程1900可以由加密服务或模块(诸如上文在图15和图17中讨论的加密服务或模块)来实施。通常,加密过程1900可以用于生成供存储、运送的加密数据,以用于任何其他合适的目的。

在步骤1处,使用密钥协商协议数据1902来确定一个或多个会话密钥1904(例如,sk0,sk1和sk2)。密钥协商协议数据可以包括公钥、策略等。可以使用任何合适的密钥协商算法,诸如ecdh和/或kdf。

在步骤2处,可以生成一个或多个敏感有效载荷数据元素的密文。可以使用会话密钥(例如,sk1)和任何合适的加密算法(例如,aead)来加密敏感数据x1906以生成加密数据x(例如,数据a密文1908)和相关联的消息认证码(例如,数据xmac1910)。类似地,可以使用会话密钥(例如,sk2)和任何合适的加密算法(例如,aead)来加密敏感数据y1912以生成加密数据y(例如,数据y密文1914)和相关联的消息认证码(例如,数据ymac1916)。在一些示例中,数据x和数据y可以对应于图15-图16中讨论的数据a和数据b,或对应于图17-图18中讨论的数据c和数据d。

要加密的有效载荷数据元素可以以任何合适的格式表示。在一些实施方案中,有效载荷元素可以以包括识别元素的标签、元素的长度和元素的值的tlv数据结构来表示。例如,数据x1906可以包括识别x的标签(例如,“tagx”)、数据x的大小(例如,1024字节)和x的值。

在一个实施方案中,加密的数据元素及其mac可被转换为base64编码,从而以jwe紧凑型序列化格式被包括。序列化的加密数据元素可以包括在http消息中。此类jwe紧凑型序列化加密数据元素的示例包括在图15中的数据ajwe序列化1530和数据bjwe序列化1532以及在图17中的数据cjwe序列化1730和数据djwe序列化1732。

在步骤3处,生成标头数据1940。可以使用会话密钥(例如,sk0)和任何合适的加密算法(例如,aead)来加密明文1936和要加密的文本1938,以生成包括明文协议数据1918、密文(例如,加密的协议数据1932)和全局mac1934的标头数据1940。明文1936可以包括明文协议数据1918。明文协议数据1918可以包括上文讨论的密钥协商协议数据1902,诸如公钥信息(例如,受保护的密钥标识符、一次性公钥)。在应用加密算法之后,明文协议数据1918不被加密,而是经由全局mac进行完整性保护。

要加密的文本1938可以包括受保护的协议数据1920和用于每个加密的有效载荷元素的元素特定的协议数据。受保护的协议数据1920可以包括模糊化或盲化的公钥、策略、密码套件信息等。元素特定协议数据可以包括数据描述符(例如,数据x描述符1922或数据y描述符1926)和给定的有效载荷数据元素的mac(例如,数据xmac1924或数据y描述符1928)。例如,数据x描述符1922可以包括识别数据x的标签(标签x)、加密密钥标识符和数据xmac的长度的组合(例如,级联)。数据y描述符1926可以包括识别数据y的标签(标签y)、加密密钥标识符和数据ymac的长度的组合(例如,级联)。

在一个实施方案中,在步骤3中生成的标头数据1940可以被包括在http消息的标头部分中,诸如由图15中的标头数据1508和图17中的标头数据1708所说明。

图20说明了根据一些实施方案的用于解密数据的示例性过程2000。解密过程2000可以用于解密包括在请求消息或响应消息中的数据。数据可能已经根据诸如图19中所述的加密过程被加密。在一些实施方案中,解密过程2000可以由解密服务或模块(诸如上文在图16和图18中讨论的解密服务或模块)来实施。通常,解密过程2000可以用于解密从存储器检索的、运送中的加密数据,以用于任何其他合适的目的。

在步骤1处,可以使用标头数据2002中的一些或全部来确定一个或多个会话密钥2010(例如,sk0、sk1和sk2)。会话密钥2010可以与在图19中描述的加密过程中确定的会话密钥相同。标头数据2002可以类似于图19中讨论的标头数据1940。例如,标头数据2002可以包括明文协议数据2004、加密的协议数据2006和全局mac2008。在一些实施方案中,仅使用标头数据2002的明文协议数据2004来导出会话密钥2010。明文协议数据2004可以包括用于导出密钥(诸如公钥、策略等)的密钥协商信息。可以使用任何合适的密钥协商算法(例如,ecdh、kdf)来导出会话密钥。

在步骤2处,可以使用会话密钥(例如,sk0)和合适的解密算法(例如,aead)来对标头数据2002中包括的协议数据进行解密和认证。明文协议数据2004可以使用全局mac2008进行认证。可以对加密的协议数据2006进行解密以获取受保护的协议数据2012和元素特定协议数据(例如,数据x描述符2014、数据xmac2016、数据y描述符2018和数据ymac2020)。可以验证解密的数据(例如,使用全局mac2008)。

在步骤3处,可以对加密的有效载荷数据元素进行解密和认证。诸如图15-图18中所描述,可以从接收到的序列化对象(诸如包括在http消息中的jwe紧凑型序列化对象)获取加密的有效载荷数据元素。例如,可以使用合适的解密密钥(例如,sk1)来提供输入到合适的解密算法(例如,aead)中的数据x密文2022和数据xmac2016,以获取原始数据x2014。可以使用数据xmac2016来验证数据x的完整性。例如,可以使用合适的解密密钥(例如,sk2)来提供输入到合适的解密算法(例如,aead)中的数据y密文2026和数据ymac2020,以获取原始数据y2028。可以使用数据ymac2020来验证数据y的完整性。在一些实施方案中,可以基于从步骤2获取的协议数据(例如,密码套件信息、元素特定协议数据)来执行对数据元素的解密。加密的数据元素可以在“按需要”的基础上进行解密和/或认证,以降低不必要地暴露敏感信息的风险。

虽然图19-图20将加密过程1900和解密过程2000描述为两个单独的过程,但是在一些实施方案中,两者都可以由单个模块或计算机实施。在一些其他实施方案中,加密过程1900和解密过程2000可以由不同的模块或计算机实施。

在一些实施方案中,加密过程1900和解密过程2000可用于加密和解密任何合适的数据类型,诸如文档和数据对象。例如,加密过程1900可用于加密特定文档中的敏感数据字段以生成代替敏感数据字段的加密数据字段。还可以生成描述加密的加密的协议数据,并将其与文档一起存储。可以存储或传输加密文档。实体可以通过通信信道(例如,经由http消息)接收加密的文档,或者以其他方式希望从存储器访问加密的文档。为了访问文档中的敏感数据,可以使用解密过程2000来解密加密文档并恢复一个或多个敏感数据字段。

iv.保密策略的强制执行

本文描述的方法可用于实施对服务器或客户端策略更改的保密管理。在各种情况下,此类策略更改可能是期望的或必要的。例如,策略更改可能是必需的,因为服务器或客户端密钥已过期或已被损害、不允许客户端密码套件、不允许客户端ec曲线、协议版本或模式无效、客户端凭证无效或不足、需要新的密码套件、需要新的证书等。使用本文所述的方法,可以以保密和不可追溯的方式来传输实现策略更改所需的信息。例如,没有数据或元数据可以以明文的形式传输。可以提供数据完整性检查(例如,使用aead)。消息可以被安全地填充以保持固定的大小。

图21示出了根据一些实施方案的用于处理请求消息以强制执行服务器策略的决策树2100。服务器计算机可以使用决策树2100来处理来自客户端计算机的请求消息。

如所说明,可以针对服务器策略来检查包括在请求消息中的协议数据。协议数据可以包括服务器密钥引用(例如,密钥标识符)、在请求消息中使用的客户端密码套件、允许的密码套件、客户端支持的协议模式和版本、在请求中使用的客户端协议模式等。可以使用本文讨论的方法来保护(例如,加密和/或完整性保护)协议数据中的一些或全部。

基于服务器策略和请求消息中包括的协议数据,服务器计算机可以采取不同的动作。在某些情况下,响应消息可以建立新的服务器策略,并且客户端请求必须重新发送。此类情况可以包括:当服务器密钥已经过期或被损害时、当不允许密码套件时、当不允许ec曲线时、当客户端协议模式或版本无效时、当客户端凭证无效或不足时等。由响应消息指示的新的服务器策略可以包括一个或多个新的证书或公钥、新的曲线参数、需要的模式或版本、需要的凭证等。

在一些其他情况下,响应消息可以建立新的服务器策略,并且不需要重新发送客户端请求。此类情况可以包括:当推荐新的密码套件时、当推荐新的证书或公钥时等。

在又一些其他情况下(诸如当不推荐更改时),响应可以包括由请求消息请求的任何敏感数据。

v.viii.计算机设备

图22是可以用来实施上文描述的任何实体或部件的计算机系统的高级框图。图22中所示的子系统经由系统总线2275互连。附加的子系统包括打印机2203、键盘2206、固定盘2207和监视器2209,所述监视器联接到显示器适配器2204。联接到i/o控制器2200的外围设备和输入/输出(i/o)设备可以通过本领域已知的任何数量的构件(诸如串行端口)连接到计算机系统。例如,串行端口2205或外部接口2208可以用来将计算机装置连接至广域网(诸如互联网)、鼠标输入设备或扫描仪。经由系统总线2275的互连允许中央处理器2202与每个子系统进行通信,并控制来自系统存储器2201或固定盘2207的指令的执行以及在子系统之间的信息交换。系统存储器2201和/或固定盘可以体现计算机可读介质。

用于包含代码或代码部分的存储介质和计算机可读介质可以包括本领域已知或使用的任何适当介质,其包括存储介质和通信介质,诸如但不限于在用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除式介质(包括ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字通用盘(dvd)或其他光存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备)、数据信号、数据传输或可以用来存储或传输期望信息并且可以由计算机访问的任何其他介质。基于本文中提供的公开和教导,本领域技术人员会认识到实施各实施方案的其他方式和/或方法。

以上描述是示意性的不是限制性的。本领域技术人员在阅读本公开后,会明白本发明的许多变形。因此,本发明的范围可以不参照上文的描述确定,而是可以参照所附权利要求连同其全部范围或等同物确定。

应当理解,如上文描述的本发明可以使用计算机软件以控制逻辑的形式以模块化或集成方式来实施。基于本文中提供的公开和教导,本领域的普通技术人员可以明白并认识到使用硬件及硬件和软件的组合实施本发明的其他方式和/或方法。

本申请中描述的任何软件组件或功能可以实施为使用任何适当计算机语言(比方说例如java,c++或perl),使用例如传统的或面向对象的技术由处理器执行的软件代码。软件代码可以存储作为计算机可读介质上的一系列指令或命令,所述计算机可读介质为诸如随机存取存储器(ram)、只读存储器(rom)、磁介质(诸如硬盘驱动器或软盘)或光介质(诸如cd-rom)。任何这种计算机可读介质都可以驻存在单个计算装置上或驻存在单个计算装置内,并且可存在于在系统或网络内的不同计算装置上或在系统或网络内的不同计算装置上。

在不偏离本发明的范围的情况下,任何实施方案的一个或多个特征可以与任何其他实施方案的一个或多个特征组合。

除非明确指示为相反,否则“一个/种”、“该/所述”的叙述旨在表示“一个或多个”。

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