相关申请的交叉引用
本申请是2015年1月27日提交的美国临时申请号62/108,468(代理人案卷号:079900-0929835)的非临时申请,并要求其优先权,该申请出于所有目的以引用方式全文并入。本申请涉及2015年8月31日提交的美国申请14/841,589(代理人案卷号:079900-0945228),该申请出于所有目的以引用方式全文并入。
背景技术:
随着用户装置,诸如实现nfc的移动电话和非接触卡的普及程度持续增加,维持支付和其他交易的安全性一直是一个需要关注的问题。例如,为了执行支付交易,通常需要认证用户装置。用于认证用户装置的一种方法是通过使用由装置生成的密码。密码通常使用从服务器供应的敏感凭证数据生成。如果攻击者获得敏感凭证数据,其可能会伪造密码。因此,凭证数据的安全性对于进行安全交易至关重要。然而,在发送和存储期间提供对凭证数据的充分保护是一个挑战,因为攻击者可能会窃听供应消息或破坏用户装置。
本发明的实施例单独和一起解决了这些和其他问题。
技术实现要素:
各实施例涉及用于安全地供应凭证数据的系统和方法。本文描述的技术可以在供应过程期间和之后提供对敏感凭证数据的端到端保护,以便最小化暴露凭证数据的风险。
根据一些实施例,提供了一种计算机实现的方法。一次性用户或客户端公钥可以由用户装置来确定。用户装置可以向供应服务器计算机发送包括一次性用户公钥的供应请求消息。用户装置可以从供应服务器计算机接收加密的供应响应消息,该加密的供应响应消息包括加密的凭证数据。用户装置可以使用静态服务器公钥来确定响应共享秘密。用户装置可以从响应共享秘密确定响应会话密钥,该响应会话密钥可用于解密加密的供应响应消息。用户装置可以由用户装置使用响应会话密钥解密加密的供应响应消息,以确定加密的凭证数据。可以从响应共享秘密确定存储保护密钥,存储保护密钥不同于响应会话密钥,并且可用于解密加密的凭证数据。存储保护密钥可以使用密钥加密密钥来加密,以生成加密的存储保护密钥。加密的存储保护密钥可以被存储。加密的凭证数据可以被存储。
凭证数据可以包括使用受限密钥(luk)或一次性使用密钥(suk)的密钥导出数据。加密的凭证数据可以存储在远程连接到用户装置的存储服务器中,加密的存储保护密钥可以存储在用户装置中。
响应于生成用于认证授权请求消息的密码的指示,可以检索加密的凭证数据。加密的存储保护密钥可以被检索。加密的存储保护密钥可以使用密钥加密密钥来解密,以获得存储保护密钥。可以使用存储保护密钥对加密的凭证数据进行解密以获得凭证数据。并且可以使用凭证数据生成密码。在一些实施例中,使用存储保护密钥解密该加密的凭证数据包括使用存储保护密钥和用于凭证加密密钥的密钥导出数据来导出凭证加密密钥,密钥导出数据包括用户装置专用的数据,以及使用凭证加密密钥来解密该加密的凭证数据。在一些实施例中,使用从凭证数据导出的密码密钥来生成密码。
用户装置可以使用与一次性用户公钥和静态服务器公钥相对应的用户私钥来生成请求共享秘密。使用请求共享秘密可以加密请求数据以获得加密的请求数据,其中,供应请求消息包括该加密的请求数据。
供应响应消息可以包括盲化的静态服务器公钥,并且可以使用该盲化的静态服务器公钥来确定响应共享秘密。
确定一次性用户公钥可以包括生成包括临时用户私钥和临时用户公钥的临时用户密钥对,其中临时用户公钥被用作一次性用户公钥。可替代地,确定一次性用户公钥可以包括对静态用户公钥进行盲化。
根据一些实施例,提供了一种计算机实现的方法。服务器计算机可以从用户装置接收包括一次性用户公钥的供应请求消息。可以使用静态服务器私钥和一次性用户公钥来生成响应共享秘密。可以识别将要包括于供应响应消息中的凭证数据。可以从响应共享秘密确定响应会话密钥,该响应会话密钥可用于加密供应响应消息。可以从响应共享秘密确定存储保护密钥,存储保护密钥不同于响应会话密钥,并且可用于加密该凭证数据。可以使用存储保护密钥对凭证数据进行加密以生成加密的凭证数据。可以使用响应会话密钥来加密供应响应消息以生成加密的供应响应消息,其中供应响应消息包括加密的凭证数据。服务器计算机可以向用户装置发送加密的供应响应消息。
凭证数据可以包括luk和可用于导出用于生成密码的密码密钥的密码密钥导出数据。
加密该凭证数据可以包括使用存储保护密钥和密钥导出数据来确定凭证加密密钥,其中密钥导出数据是用户装置专有的。供应响应消息可以包括与静态服务器私钥相对应的盲化的静态服务器公钥。
根据一些实施例,提供了一种计算机实现的方法。一次性用户公钥可以由用户装置来确定。可以确定存储保护公钥。供应请求消息可以被发送到供应服务器计算机,包括一次性用户公钥和存储保护公钥。可以从供应服务器计算机接收加密的供应响应消息,加密的供应响应消息包括加密的凭证数据,其中使用存储保护公钥对加密的凭证数据进行加密。可以使用静态服务器公钥确定响应共享秘密。可以从响应共享秘密确定响应会话密钥,该响应会话密钥可用于解密该加密的供应响应消息。可以使用该响应会话密钥对加密的供应响应消息进行解密以确定加密的凭证数据。加密的凭证数据可以被存储。
存储保护公钥和一次性用户公钥可以都对应于相同的用户私钥。可替代地,存储保护公钥和一次性用户公钥对应于不同的用户私钥。
响应于生成用于认证授权请求消息的密码的指示,可以检索加密的凭证数据。可以使用对应于存储保护公钥的存储保护私钥对加密的凭证数据进行解密以获得凭证数据。可以使用凭证数据生成密码。
其他实施例涉及与本文中描述的方法关联的系统、便携式消费者装置和计算机可读介质。
参照下面的详细描述和附图可以获得对本发明的实施例的特性和优点的更好理解。
附图说明
图1示出根据一些实施例的示例性支付系统。
图2示出根据一些实施例的用户装置的实例。
图3示出根据一些实施例的服务器计算机的实例。
图4示出根据一些实施例的安全凭证供应过程的高级框图。
图5示出根据一些实施例的用于从服务器计算机安全地供应凭证数据的示例性过程。
图6示出根据一些实施例的用于从服务器计算机安全地供应凭证数据的另一个示例性过程。
图7示出根据一些实施例的使用凭证数据来进行交易的示例性过程。
图8示出根据一些实施例的使用凭证数据来进行交易的另一个示例性过程。
图9示出根据一些实施例的用于向用户装置安全地供应凭证的示例性过程。
图10示出根据一些实施例的用于向用户装置安全地供应凭证的另一个示例性过程。
图11示出根据实施例用于供应和使用凭证数据的数据流程图。
图12示出根据一些实施例的供应请求消息和对应的供应响应消息的第一实例。
图13示出根据一些实施例的供应请求消息和对应的供应响应消息的第二实例。
图14示出可以用来实现上文描述的任何实体或组件的计算机系统的高级框图。
术语
在讨论本发明的一些实施例之前,对一些术语的描述可能有助于理解本发明的实施例。
术语“服务器计算机”可以包括计算机或计算装置的集群。例如,服务器计算机可以是大的主机、小型计算机集群或像一个单元一样工作的一组服务器。在一个实例中,服务器计算机可以是耦连至网络服务器的数据库服务器。服务器计算机可以耦连到数据库并且可以包括用于服务于来自一个或多个客户端计算机(例如用户装置)的请求的任何硬件、软件、其他逻辑、或前述内容的组合。服务器计算机可以包括一个或多个计算设备并且可以使用各种计算结构、排列和编译中的任何一种来服务于来自一个或多个客户端计算机的请求。
术语“公/私钥对”可以包括由实体生成的一对关联加密密钥。公钥可以用于公共功能,诸如对要发送给实体的消息进行加密,或用于对应该由实体做出的数字签名进行验证。另一方面,私钥可以用于私用功能,诸如对接收到的消息解密或应用数字签名。公钥通常会由被称为证书机构(ca)的主体进行授权,证书机构将公钥存储在数据库中并将其分配给请求它的任何其他实体。私钥一般会被保持在安全存储介质中并且通常只有实体知道。然而,本文中描述的密码系统可以以用于恢复丢失的密钥并避免数据丢失的密钥恢复机制为特征。公钥和私钥可以是任何适当格式,包括基于rsa或椭圆曲线密码学(ecc)的格式。
“数字签名”可以指基于公/私钥对应用算法的结果,这种算法允许签名方显示,并且允许验证方验证文件的真实性和完整性。签名方借助于私钥起作用,验证方借助于公钥起作用。这个过程证明发送者的真实性、已签名文件的完整性和所称的不可否认性原则,所述原则不允许否认已经签名的内容。证书或包括签名方的数字签名的其他数据被称为是由签名方“签名的”。
“证书”或“数字证书”可以包括使用数字签名将公钥与关联身份的数据绑定的电子文件或数据文件。证书可以包括一个或多个数据字段,例如身份的合法名称、证书的序列号、证书的起始有效期和终止有效期、证书相关许可等。证书可以包含指示证书有效的第一个日期的“起始有效”日期,以及指示证书有效的最后日期的“终止有效”日期。证书还可以包含证书中包括数据字段的数据的散列。除非另外说明,每个证书都由证书机构签名。
“证书机构”(ca)可以包括可操作耦连以向实体发行证书的一个或多个服务器计算机。ca可以使用ca证书证明其身份,ca证书包括ca的公钥。可以用另一个ca的私钥或者可以用同一个ca的私钥对ca证书签名。后者被称为自签名证书。ca可以维护由ca发行的所有证书的数据库,并且还可以维护被撤销的证书的列表。
在一个典型过程中,证书机构从其身份已知的实体接收未签名的证书。未签名的证书包括公钥、一个或多个数据字段、以及证书中的数据的散列。ca用与ca证书上所包括的公钥相对应的私钥对证书进行签名。ca然后可以将签名的证书存储在数据库中,并将签名的证书发行给实体。
“密码随机数”可以包括任何数字、字符串、位序列、或旨在关联单个通信会话使用的其他数据值。在一些情况下,密码随机数可以是随机或伪随机生成的。例如,密码随机数可以是随机数。通常,密码随机数具有足够的长度以使多次独立生成同一随机数值的可能性不大。
“盲化密钥(blindedkey)”,诸如“盲化公钥”可以包括通过与另一数据元素(如密码随机数)结合而被模糊化或以其他方式修改了其原始值的密钥。例如,在椭圆曲线密码学中,公钥可以乘以随机数从而生成“盲化公钥”。类似地,私钥可以乘以随机数从而生成“盲化私钥”。
“一次性密钥”是指仅提供一次的密钥。一次性密钥可以包括来自临时密钥对的密钥,如下所述。在一些实施例中,一次性密钥可以包括使用相同的静态密钥(例如,静态公钥)生成但是使用不同的密码随机数、识别因子或其他盲化因子被盲化的盲化密钥。
“临时密钥对”可以包括为单次交易或其他通信会话使用而生成的公钥(即“临时公钥”)和私钥(即“临时私钥”)。临时密钥对可以是任何适当格式,诸如ecc或rsa。通常,一旦交易或通信会话已经结束,就可以删除临时密钥对。
“静态密钥对”可以包括在一段时间内被维护的公钥(即“静态公钥”)和私钥(即“静态私钥”)。通常但不一定,静态私钥可以被安全地存储在诸如硬件安全模块(hsm)或安全元件(se)中。通常但不一定,静态公钥可以通过使用数字证书绑定到身份。静态密钥对可以是任何适当格式,诸如ecc或rsa。
“共享秘密”可以包括只对安全通信中的被授权方已知的任何数据值或其他信息。共享秘密可以以任何适当方式由任何适当数据生成。例如,可以使用基于diffie-hellman的算法,诸如椭圆曲线diffie-hellman(ecdh),以由私钥和公钥生成共享秘密。在一些情况下,共享秘密可以用来生成会话密钥。
术语“识别数据”可以包括与用户或装置关联的任何数据或信息。识别数据的实例可以包括与装置关联的用户的姓名,与装置关联的组织,与装置关联的支付信息,诸如主账号(pan)或令牌,pan或令牌的到期日期,与装置关联的证书,装置的imei或序列号,等等。
术语“认证数据”可以包括适于认证用户或装置的任何数据或信息。认证数据的实例可以包括口令或口令短语,密码密钥(例如,私钥)、证书、与用户关联的生物测定数据(例如,指纹、声音、面部图像、虹膜/视网膜扫描)等等。
“识别因子”可以包括从识别数据和/或认证数据确定的任何数据或信息。通常但不一定,识别因子可以通过对识别数据和认证数据的组合求散列来生成。
“加密密钥”可以包括适用于用密码加密数据的任何数据值或其他信息。“解密密钥”可以包括适用于对已加密的数据进行解密的任何数据值或其他信息。在一些情况下,用于加密数据的同一密钥可以可操作以解密数据。这种密钥可以被称作对称加密密钥。
“会话密钥”可以包括用来加密或解密待被安全传送的数据的任何密钥。在一些情况下,会话密钥可以从发送实体和接收实体都知道的共享秘密生成。例如,会话密钥可以使用密钥导出函数和共享秘密被导出。会话密钥可以用来保护在请求或响应消息中包括的数据。在这些情况下,会话密钥还可以被称作消息保护密钥。
“凭证”或“凭证数据”可以包括从服务器向用户装置(例如移动装置)供应的使得用户装置能够进行交易(例如支付交易)的任何数据。凭证数据的实例可以包括令牌,pan或其他帐户信息,一个或多个密钥(例如,用于生成密码的luk,加密密钥,盲化或未混合的静态公钥等),密钥导出参数(例如,用于导出用于生成密码、共享秘密密钥、加密密钥等的suk),密码导出参数,证书链信息,交易参数以及任何其他合适的数据。
“存储保护密钥”或“凭证保护密钥”可以包括用于保护凭证数据或任何其他敏感数据的加密密钥。例如,存储保护密钥可以直接用于加密或解密凭证数据。存储保护密钥也可以直接用于加密或解密该凭证数据。例如,存储保护密钥可以用于导出随后用于加密或解密该凭证数据的另外加密密钥。在一些实施例中,存储保护密钥可以包括私/公密钥对。公钥可以用于加密凭证数据,而私钥可以用于解密凭证数据。
“使用受限密钥(luk)”可以包括可以被使用有限次数的任何加密密钥或其他数据。luk可以用于任何适当目的。例如,在一些实施例中,luk可以用来生成用于交易的密码。
“一次使用密钥(suk)”是只能够被使用一次的luk。例如,suk可以用来加密和/或解密与单次交易有关的数据。在一些实施例中,suk可以从luk导出。
“密码(cryptogram)”可以包括用来认证诸如装置或用户之类的实体的任何数据元素或其他信息。例如,密码可以包括静态(例如预定的)数据、动态数据或使用加密密钥(例如luk)加密的静态和动态数据的组合。密码可以用在任何适当的上下文中。例如,“注册密码”可以包括被用来确认实体的注册的密码。“交易密码”可以包括被用来认证执行交易的实体的密码。
具体实施方式
各实施例可以提供用于安全地供应敏感凭证数据(例如使用受限密钥(luk))到用户装置上的方法。在一些实施例中,凭证数据可以使用单独的存储保护密钥进行加密,并且仅在交易时被解密以生成交易密码。因此,可以在凭证数据的传送和存储期间提供端到端保护,仅在需要凭证数据时限制凭证数据的暴露,从而降低凭证数据泄密的风险。
例如,在一个实施例中,用户装置可以确定一次性用户公钥,并将包括该一次性用户公钥的供应请求消息发送到供应服务器计算机。供应服务器计算机可以识别将要包括在供应响应消息中的凭证数据(例如luk)。服务器计算机可以使用一次性用户公钥和静态服务器私钥生成响应共享秘密。响应共享秘密可用于确定响应会话密钥和存储保护密钥。存储保护密钥可用于加密凭证数据以生成加密的凭证数据。加密的凭证数据可以包括在供应响应消息中。供应响应消息可以使用响应会话密钥加密并发送到用户装置。
用户装置可以使用静态服务器公钥和对应于用户公钥的用户私钥来导出响应共享秘密。用户装置可以从响应共享秘密确定响应会话密钥,并使用响应会话密钥解密该加密的供应响应消息,以确定加密的凭证数据。用户装置还可以从响应共享秘密中确定存储保护密钥。加密的凭证数据可以在用户装置或外部存储提供方处被原样存储而不被解密。存储保护密钥也可以在存储之前可选地进行加密。
在交易时,可以使用存储保护密钥来检索和解密加密的凭证数据。解密的凭证数据可用于生成可用于进行交易的密码。
因此,可以为敏感凭证数据提供端到端保护。凭证数据在发送期间保持被加密,因此即使攻击者拦截了供应请求消息,他也无法解密凭证数据而不能访问存储保护密钥。此外,凭证数据在静止时保持被加密,使得在存储装置(例如用户装置)被危害的不太可能的情况下,凭证数据被保护免受攻击者危害。由于凭证数据以加密的形式存储,攻击者不能使用凭证数据,除非攻击者也拥有存储保护密钥。此外,一些实施例可以将存储保护密钥和加密的凭证数据存储在不同的位置。例如,存储保护密钥可以存储在安全元件中。这样的实施例可进一步减轻泄密的风险。
此外,一些实施例能够只使用两个消息把加密的凭证数据供应到之前未认证的用户装置上,这两个消息是:来自用户装置的供应请求消息,以及向用户装置的供应响应消息。因此,实施例可以在减少供应用户装置所需的时间和处理的同时提供上述优点。上面的实例仅突出显示了本发明实施例提供的一些优点。
i.系统
实施例用于各种授权系统,例如,支付系统、文件访问系统、建筑物访问系统等等。尽管描述了支付系统的实例,但实施例同样适用于其他授权系统。
a.支付系统
图1示出根据一些实施例的示例性支付系统100。所述系统包括可以操作用户装置101的用户(未示出)。用户可以使用用户装置101与访问装置102通信来执行支付交易。如本文中使用的“用户装置”可以包括桌面计算机、膝上型计算机、移动电话、平板电脑、信用卡、借记卡或任何适当计算装置。如本文中使用的“访问装置”可以包括适于与用户装置通信的任何计算装置,诸如销售点(pos)终端或网络服务器。在一些实施例中,访问装置102可以与用户装置101直接通信。在其他实施例中,访问装置102可以经由接口装置(诸如智能手表、智能眼镜或任何其他适当装置)与用户装置101通信。访问装置102可以连接至商家计算机103,商家计算机103可以连接至收单方计算机104。收单方计算机104可以经由支付处理网络105连接至发行方计算机106。用户装置101可以可选地与存储装置107通信,存储装置107可以可操作地连接至用户装置101。存储装置107可以包括或被包括在任何适当的本地或远程数据存储服务器、系统或由存储提供方提供的服务中。存储提供方可以不是提供装置101-106的相同实体。例如,存储装置107可以是由外部云存储提供方提供的基于云的存储服务的一部分。任何或所有装置101-107可以使用一个或多个计算装置(诸如服务器计算机)实现。
如本文中使用的“发行方(issuer)”通常可以指维护用户的金融账户并通常向用户发行或提供用户装置101,诸如信用或借记卡或移动装置的商业实体(例如银行)。“商家(merchant)”通常是参与交易并且能够出售商品或服务的实体。“收单方(acquirer)”通常是与特定商家或其他实体有商业关系的商业实体(例如商业银行)。一些实体能够执行发行方和收单方功能。一些实施例可以包括这种单实体发行方-收单方。每个实体可以包括一个或多个计算机设备(例如,访问装置102、商家计算机103、收单方计算机104、支付处理网络105和发行方计算机106),以能够实现通信或执行本文中描述的一个或多个功能。
支付处理网络105可以包括数据处理子系统、网络和用来支持和传送证书机构服务、授权服务、异常文件服务、交易评分服务以及清算和结算服务的操作。示例性支付处理网络可以包括visanettm。诸如visanettm的支付处理网络能够处理信用卡交易、借记卡交易和其他类型的商业交易。visanettm具体包括处理授权请求的vip系统(visa集成支付系统)和执行清算和结算服务的baseii系统。
支付处理网络105可以包括一个或多个服务器计算机。服务器计算机通常是功能强大的计算机或计算机集群。例如,服务器计算机可以是大的主机、小型计算机集群或像一个单元一样工作的一组服务器。在一个实例中,服务器计算机可以是耦连至网络服务器的数据库服务器。支付处理网络105可以使用任何适当的有线或无线网络,包括互联网。
在一些支付交易中,用户在商家处使用用户装置101购买商品或服务。用户装置101能够在与商家计算机103关联的商家处与访问装置102交互。例如,用户可以对着访问装置102中的nfc阅读器轻拍用户装置101。可替代地,诸如在在线或电子商务交易中,用户可以通过计算机网络向商家指示支付细节。
用于交易的授权请求消息可以由访问装置102或商家计算机103生成,然后向收单方计算机104转发。在接收授权请求消息之后,收单方计算机104向支付处理网络105发送授权请求消息。支付处理网络105然后向与关联用户或用户装置101的发行方关联的相应发行方计算机106转发授权请求消息。
“授权请求消息”可以是向支付处理网络和/或发行方发送的请求对交易的授权的电子消息。根据一些实施例的授权请求消息可以符合iso8583,iso8583是用于交换与用户使用支付装置或支付账户进行的支付关联的电子交易信息的系统的标准。授权请求消息可以包括可以与支付装置或支付账户关联的发行方账户标识符。授权请求消息还可以包括与“识别信息”对应的附加数据元素,只作为实例包括:服务代码、cvv(卡验证值)、dcvv(动态卡验证值)、到期日期等等。授权请求消息还可以包括“交易信息”,诸如与当前交易关联的任何信息,诸如交易金额、商家标识符、商家位置等,以及可以用来确定是否识别和/或授权交易的任何其他信息。授权请求消息还可以包括其他信息,诸如识别生成授权请求消息的访问装置的信息,关于访问装置的位置的信息等。
在发行方计算机106接收授权请求消息之后,发行方计算机106向支付处理网络105发送回授权响应消息以指示是否授权(或不授权)当前交易。支付处理网络105然后向收单方计算机104转发授权响应消息。在一些实施例中,即便发行方计算机106已经授权交易,支付处理网络105也可以例如根据欺诈风险分数的值拒绝交易。收单方计算机104然后向商家计算机103发送回响应消息。
“授权响应消息”可以是针对由发行方计算机106和/或支付处理网络105生成的授权请求消息的电子消息应答。授权响应消息可以包括(只作为实例)以下状态指示符中的一个或多个:批准-交易被批准;拒绝-交易不被批准;或呼叫中心-响应未决的更多信息,商家必须呼叫免费授权电话号码。授权响应消息还可以包括授权代码,其可以是发行方响应于电子消息中的授权请求消息(直接地或者通过支付处理网络105)返回商家计算机103的指示交易被批准的代码。代码可以用作授权的证据。如上文指出的,在一些实施例中,支付处理网络105可以生成或通常经由收单方计算机104向商家转发授权响应消息。
在商家计算机103接收授权响应消息之后,商家计算机103然后可以为用户提供授权响应消息。响应消息可以由访问装置102显示,或者可以在物理收条上打印输出。可替代地,如果交易是在线交易,则商家可以提供网页或授权响应消息的其他指示,作为虚拟收条。收条可以包括交易的交易数据。
在一天结束时,常规的清算和结算处理可以由支付处理网络105进行。清算过程是在收单方和发行方之间交换财务细节的过程,以利于发布到顾客的支付账户,并核对用户的结算位置。
b.用户装置
图2示出根据一些实施例的用户装置200的实例。例如,用户装置200可以包括或被包括在图1中描述的用户装置101中。用户装置200的实例可以包括移动电话、平板电脑、桌面和膝上型计算机、可穿戴装置(例如,智能手表、健身手环、脚链、戒指、耳环等)或能够接收、存储和传输数据的任何其他计算装置。用户装置200可以被配置成直接或间接地与服务器计算机300通信,以实现本文中描述的方法。用户装置200可以包括通信地耦连至网络接口202的处理器201、存储器203、计算机可读介质210以及可选地包括安全元件204。
处理器201可以包括一个或多个cpu,每个cpu可以包括可操作执行程序组件以用于执行用户和/或系统生成的请求的至少一个处理器核。cpu可以是微处理器,诸如amd的athlon、duron和/或opteron;ibm和/或motorola的powerpc;ibm的以及sony的cell处理器;intel的celeron、itanium、pentium、xeon和/或xscale;和/或类似的(若干)处理器。cpu根据传统的数据处理技术通过传输通过传导导管的信号与存储器交互,以执行存储的信号程序代码。在一些情况下,诸如在分布式或集群计算系统中,处理器201可以包括通过网络耦连的多个cpu。
网络接口202可以被配置成允许计算装置200使用一个或多个通信网络与其他实体(诸如装置101-107、其他计算装置等)通信。网络接口可以接收、通信和/或连接至通信网络。网络接口可以采用例如但不限于以下的连接协议:直连、以太网(粗的、细的、双绞线10/100/1300baset等等)、令牌环网、无线连接(诸如ieee802.11a-x)、和/或其他。直接互连、互联网、局域网(lan)、城域网(man)、安全定制连接、广域网(wan)、无线网络(例如使用诸如但不限于无线应用协议(wap)、i-模式等等的协议)和/或其他。
存储器203可以用来存储数据和代码。存储器203可以在内部或外部耦连至处理器201(例如基于云的数据存储),并且可以包括易失性和/或非易失性存储器的任何组合,诸如ram、dram、rom、闪存或任何其他适当的存储器装置。
安全元件204可以包括能够安全地驻存敏感应用和/或数据的防篡改模块。这些应用和/或数据可以与支付应用、认证/授权、密码密钥管理等等有关。例如,凭证、密码密钥或密钥材料、密码、共享秘密、账户信息等的一些或所有部分可以提供到用户装置200的安全元件204上,以防止未授权的访问。在一些实施例中,安全元件204可以包括或被包括在基于软件的(诸如主机卡模拟或hce)和/或基于硬件的(诸如硬件安全模块或hsm、智能卡或芯片卡)安全模块的任何组合中。
计算机可读介质210可以是存储器的形式(例如,闪存、rom等),并且可以包括可由处理器201执行的用于实现本文中描述的方法的代码。计算机可读介质210可以包括认证模块211、加密模块212和应用模块213。在各个实施例中,这些模块可以被配置成单独地或一起执行图4-5、8、11、12、15和18各自的方法400、1100、1400、1200、1300、1700、11100的一些或全部。
认证模块211可以包括适于向另一计算装置认证计算装置200或在计算装置200处认证另一计算装置的任何程序、软件或其他代码。例如,认证模块211可以被配置成生成并向另一计算装置发送认证请求消息,接收并处理来自其他计算装置的认证响应消息。类似地,认证模块211可以被配置成接收并处理来自另一计算装置的认证请求消息,生成并向其他计算装置发送认证响应消息。
加密模块212可以包括适于执行与加密和/或解密有关的操作的任何程序、软件或其他代码。例如,加密模块可以被配置成诸如使用密钥协商协议(诸如diffie-hellman)生成共享秘密。加密模块212还可以被配置成诸如使用密钥导出函数(kdf)从共享秘密导出会话密钥阿卡存储保护密钥。在一些实施例中,加密模块212可以被配置成存储一个或多个静态密钥,诸如静态用户装置私钥或静态服务器私钥。在一些实施例中,加密模块212可以使用软件(诸如主机卡模拟或hce)和硬件(诸如硬件安全模块或hsm)的任何组合实现。
应用模块213可以包括适于运行一个或多个应用的任何程序、软件或其他代码。例如,应用模块213可以包括可操作执行支付交易的支付应用。在一些实施例中,支付应用可以被配置成允许用户选择要购买的商品和服务,从支付账户的发行方获得安全凭证(例如密码密钥)和/或发起或执行支付交易(例如,使用安全凭证)。
要理解,本文中描述的组件只用于示意目的,不旨在是限制性的。在各个实施例中,可以提供比本文列出的更多或更少的组件。例如,在一个实施例中,用户装置200可以不包括安全元件204。在这样的实施例中,敏感或机密数据(例如密码密钥)可以(例如以加密形式)存储在可操作连接至用户装置200的存储装置107中和/或从其检索。在一些实施例中,用户装置200可以不包括应用模块213。
c.服务器计算机
图3示出根据一些实施例的服务器计算机300的实例。例如,服务器计算机300可以包括或被包括在图1中描述的任何装置102-106中。服务器计算机300的实例可以包括移动电话、平板电脑、桌面和膝上型计算机、主机计算机或适于接收、存储和传输数据的任何其他计算装置。服务器计算机300可以被配置成直接或间接地与用户装置200通信,以实现本文中描述的方法。服务器计算机300可以包括通信地耦连至网络接口302的处理器301、存储器303、计算机可读介质310,以及可选地包括安全元件304。
处理器301、网络接口302、存储器303可以与用户装置200的处理器201、网络接口202和存储器203类似。计算机可读介质310可以是存储器的形式(例如,闪存、rom等),并且可以包括可由处理器301执行的用于实现本文中描述的方法的代码。计算机可读介质310可以包括认证模块311、加密模块312和应用模块313。在各个实施例中,这些模块可以被配置成单独地或一起执行图6-7、9、11、13、15、17和18各自的方法700、1200、1400、1300、1300、1900、11100的一些或全部。
认证模块311可以包括适于向另一计算装置认证计算装置300或在计算装置300处认证另一计算装置的任何程序、软件或其他代码。例如,认证模块311可以被配置成生成并向另一计算装置发送认证请求消息,接收并处理来自其他计算装置的认证响应消息。类似地,认证模块311可以被配置成接收并处理来自另一计算装置的认证请求消息,生成并向其他计算装置发送认证响应消息。
加密模块312可以包括适于执行与加密和/或解密有关的操作的任何程序、软件或其他代码。例如,加密模块可以被配置成诸如使用密钥协商协议(诸如diffie-hellman)生成共享秘密。加密模块312还可以被配置成诸如使用密钥导出函数(kdf)从共享秘密导出会话密钥阿卡存储保护密钥。在一些实施例中,加密模块312可以被配置成存储一个或多个静态密钥,诸如静态用户装置私钥或静态服务器私钥。在一些实施例中,加密模块312可以使用软件(诸如主机卡模拟或hce)和硬件(诸如硬件安全模块或hsm)的任何组合实现。
应用模块313可以包括可操作以为一个或多个计算装置处的支付应用提供服务的支付应用服务。在一些实施例中,支付应用服务可以被配置成允许用户选择要购买的商品和服务。应用模块313还可以包括用于登记或重新登记用户装置和/或与用户装置执行交易的服务。
要理解,本文中描述的组件只用于示意目的,不旨在是限制性的。在各个实施例中,可以提供比本文列出的更多或更少的组件。例如,在一个实施例中,服务器计算机300可以不包括安全元件304和/或应用模块313。
尽管使用了通用术语“服务器计算机”,但在一些实施例中,可以提供不同的服务器计算机以实现本发明的不同特征。例如,供应服务器可以被配置成与用户装置建立(若干)共享秘密,并向用户装置提供凭证,包括令牌、密钥导出参数、更新参数、密码导出参数、交易参数和任何其他适当数据。注册服务器可以被配置成向用户装置提供注册数据,从用户装置接收注册密码,并使用由用户装置提供的注册数据校验注册密码。验证服务器可以被配置成使用基于之前的共享秘密确定的更新共享秘密校验由用户装置提供的交易密码。更新服务器可以被配置成可以在用户和服务器计算机之间建立新的共享秘密。此外,更新服务器可以被配置成提供新参数(例如,新密钥导出参数、新密码导出参数和/或新更新参数),新参数可以被供应到用户装置上以用于生成密码和/或密码密钥。
在各个实施例中,供应服务器、注册服务器和验证服务器可以由分开的服务器计算机或同一服务器计算机实现。例如,验证服务器可以由交易服务器实现,其被配置成与供应服务器和/或注册服务器分开地处理支付请求。供应服务器和注册服务器可以是同一服务器或分开的服务器。注册服务器和更新服务器可以是同一或分开的服务器。在由分开的服务器计算机实现时,供应服务器、注册服务器、更新服务器和/或验证服务器可以相互通信,以便访问解密和/或验证数据(例如,服务器私钥、共享秘密、密钥导出参数、密码导出参数、更新参数、密码、请求数据等)所需的信息。
ii.方法
实施例可以使用上文描述的系统和设备从服务器计算机向用户装置安全地供应敏感数据,诸如凭证。图4-10描述这些方法的一些实例。在一些实施例中,用户装置可以包括图1和2各自的用户装置101或200。服务器计算机可以包括图1和3各自的装置102、103、104、105、106或300。在一些实施例中,服务器计算机可以包括供应服务器计算机。
a.高级框图
图4示出根据一些实施例的安全凭证供应过程400的高级框图。过程400可以用于从敏感提供方406向移动装置402供应诸如凭证数据的敏感数据。移动装置402可以包括图1-2中讨论的用户装置。敏感提供方406可以包括诸如服务器计算机300,商家计算机103、收单方计算机104、支付处理网络计算机105和发行方计算机106等的供应服务器。移动装置402可以可选地与外部存储提供方408进行通信,以存储和/或检索诸如凭证数据的数据。在一些实施例中,下面讨论的移动装置402的一些或所有功能可以由安装在移动装置402上的移动应用程序404来实现。
在步骤1,移动装置402生成用户密钥对以保护在移动装置402和敏感数据提供方406之间传输的数据。密钥对可以是任何合适的格式,例如基于椭圆曲线(ec)的密钥或基于rsa的密钥。优选地,用户密钥对的公钥和/或私钥是一次性密钥。也就是说,用户密钥对的公钥和/或私钥对于每个新供应请求是不同的。在一些实施例中,用户密钥对可以包括临时密钥对,其包括临时公钥和临时私钥。可以为每个新供应请求生成新的和不同的临时密钥对。临时私钥/公钥可以直接用作一次性密钥。替换性地,临时私钥/公钥可以进一步如下所述地被盲化、模糊化或修改,以形成一次性密钥。在一些其他实施例中,不同于临时密钥对,用户密钥对可以包括静态密钥对,该静态密钥对对于所有供应请求保持静态(即不变)或者对于预定时间段或预定数量的供应请求保持半静态。对于每个供应请求,静态或半静态密钥可以被盲化、模糊化或以其他方式修改(例如,使用不同的密码随机数,随机数,装置专用或用户专用的数据,交易数据等),使得所产生的盲化密钥是一次性密钥,尽管基础的基本密钥可以是静态的或半静态的。
在步骤2,移动装置402向敏感数据提供方406发送对凭证数据的请求。敏感数据提供方406通常具有包括静态公钥和静态私钥的静态密钥对。可以使用用户私钥(其可以是静态的或临时的,被盲化的或不被盲化的)和敏感数据提供方的公钥来保护请求消息。例如,用户私钥和提供方公钥可以用于生成请求会话密钥。请求会话密钥可用于加密请求消息的一些或所有部分。请求消息可以包括用户公钥(其可以是静态的或临时的,被盲化的或不被盲化的)。
在步骤3,敏感数据提供方406解密该请求消息。在一些实施例中,敏感数据提供方406可以使用使用与敏感数据提供方公钥对应的敏感数据提供方私钥生成的请求会话密钥和移动装置的用户公钥(其可以在请求消息中提供,并且可以是或不是被盲化的)来解密该请求消息。
在步骤4,敏感数据提供方406用诸如凭据数据的敏感数据来准备响应。如所讨论的,凭证或凭证数据可以包括从敏感数据提供方406向移动装置402供应的使得移动装置402能够执行交易(例如,支付交易)的任何信息。凭证数据的实例可以包括pan,令牌,或其他帐户信息,一个或多个密码密钥(例如,用于生成密码的luk,加密密钥,盲化或未混合的静态公钥等),密钥导出参数(例如,用于导出用于生成密码的suk、共享秘密密钥、存储保护密钥,加密密钥等),密码导出参数,证书链信息,交易参数以及任何其他合适的数据。
为了增强安全性,可以使用与会话密钥不同的存储保护密钥来保护敏感数据。存储保护密钥可以用于直接加密一些或所有敏感数据,或者导出随后用于加密敏感数据的凭证加密密钥。存储保护密钥可以是对称加密密钥。替换性地,存储保护密钥可以是诸如公钥的非对称密钥。在这种情况下,可以使用与公钥对应的私钥来解密敏感数据。
在步骤5,敏感数据提供方406向移动装置402发送响应。响应可以包括加密的敏感数据。可以使用响应会话密钥来保护响应的一些或所有部分,以保护传输中的数据。响应会话密钥可以使用用户公钥和敏感提供方私钥来生成。响应可以包括敏感提供方公钥(其可以是盲目的)以便允许移动装置402解密响应。在一些情况下,当移动装置402能够确定敏感提供方公钥(例如来自证书)时,响应可以不包括敏感提供方公钥。
在步骤6,移动装置402解密响应。例如,移动装置402可以使用敏感提供方公钥和用户私钥来生成响应共享秘密。响应会话密钥可以从响应共享秘密生成并用于解密响应。由存储保护密钥保护的敏感数据可以保持被加密以避免暴露敏感数据。存储保护密钥(m_dek)可以由移动装置402生成,例如使用响应共享秘密。
在步骤7,存储保护密钥存储在移动装置402中。存储保护密钥可以被安全地存储在存储器中。例如,可以使用移动装置的密钥加密密钥(kek)来加密存储保护密钥。替换性地,存储保护密钥可以存储在移动装置的防篡改安全模块中,或者使用白盒密码或任何其他合适的技术来保护。在一些实施例中,存储保护密钥被用作可选密钥导出函数的输入以及移动装置专用的某些导出数据(例如,装置指纹),以导出装置专用的凭证加密密钥。装置专用的凭证加密密钥可以存储在移动装置上,而不是存储保护密钥或除存储保护密钥之外。
与存储保护密钥一样,已经使用存储保护密钥(或从存储保护密钥导出的凭证加密密钥)加密的加密敏感数据也可以存储在移动装置402上。在一些实施例中,加密的敏感数据可以存储在移动装置的安全元件(例如,防篡改安全模块)中。在其他实施例中,加密的敏感数据可以存储在没有安全元件的移动装置上。由于敏感数据在存储时保持被加密,即使存储装置受到威胁,敏感数据的暴露风险也会最小化。
在一些实施例中,存储保护密钥和加密的敏感数据可以存储在相同或不同的存储位置。例如,存储保护密钥(例如,以加密形式)和加密的敏感数据都可以存储在移动装置的非安全元件中(例如,当移动装置不具有安全元件时)。在另一实例中,存储保护密钥(例如,以加密或未加密形式)可以存储在移动装置的安全元件中,而加密的敏感数据可以存储在常规的存储元件中(因为敏感数据已经被加密)。
在步骤8,移动装置402可以可选择地转发将由外部存储提供方408存储的加密的敏感数据。在外部存储提供方处对加密的敏感数据进行存储对于备份目的可能是有用的。例如,加密的敏感数据的副本可以存储在移动装置和另一装置(例如,个人计算机或台式机)两者上。在外部存储提供方处对加密的敏感数据进行存储也可以用于降低在移动装置处暴露加密的敏感数据的风险。例如,外部存储提供方可以提供比移动装置更高级别的数据安全性(例如经由安全硬件和/或软件保护)。加密的敏感数据的副本可以仅存储在外部存储提供方处,而不存储在移动装置处,这被认为是较不安全的。在某些情况下,存储保护密钥和加密的敏感数据可以存储在不同的位置,以便最小化敏感数据的暴露风险。如果没有存储保护密钥,攻击者将无法解密加密的敏感数据,反之亦然。即使同时具有了存储保护密钥和加密的敏感数据,攻击者也可能无法解密该加密的敏感数据。例如,在一些实施例中,存储保护密钥不能用于直接加密该加密的敏感数据。相反,存储保护密钥需要与攻击者不知道的附加信息(例如,装置专有数据)组合以导出用于解密该加密的敏感数据的加密密钥。
外部存储提供方408可以由商家计算机103,收单方计算机104,支付处理网络105,发行方计算机106或任何其他合适的实体(例如,基于云的存储提供方)来操作或与其关联。在一个实例中,外部存储提供方是同样拥有或操作该移动装置的相同实体(例如,用户)或与其相关联。在一些其他实施例中,外部存储提供方408可以包括连接到移动装置的存储设备107(例如,外部硬盘驱动器)。外部存储提供方408可以经由一个或多个网络(例如,有线或无线网络)远程连接到移动装置。替换性地,外部存储提供方408可以本地连接到移动装置而不使用网络。
在步骤9,移动装置402可以可选择地从外部存储提供方408获得加密的敏感数据。例如,移动装置402可以向外部存储提供方408认证(例如,使用用户名和密码),并且外部存储提供方408可以返回加密的敏感数据作为响应。然后,移动装置402可以解密该加密的敏感数据,使得解密的敏感数据(例如凭证数据)可以用于执行交易。例如,可以使用存储保护密钥来解密该加密的敏感数据以获得用于生成密码的密码材料(例如luk)。密码可用于交易的授权/认证请求。替换性地或附加地,移动装置402可以将加密的敏感数据存储在安全的本地存储器(例如,安全元件204)中,或以其他方式保护该加密的敏感数据在移动装置的存储中。例如,解密的敏感数据可以在存储在移动装置之前使用移动装置的秘密加密密钥(代替存储保护密钥或除存储保护密钥之外)被重新加密。
在各种实施例中,在供应时,从敏感数据提供方406到移动装置402,在移动装置402和外部存储提供方408之间的交易期间,以及在在移动装置402和/或外部存储提供方408存储期间,敏感数据保持被加密。因此,提供了对敏感数据的端到端保护,直到在交易时间实际使用敏感数据,将敏感数据限制于仅在需要该敏感数据时才暴露,由此降低了敏感数据泄密的风险。
b.用户装置
图5示出根据一些实施例的用于从服务器计算机安全地供应凭证数据的示例性过程500。在这样的实施例中,凭证数据可以由基于共享秘密确定的存储保护密钥来保护。过程500的各方面可以由用户装置(诸如用户装置101或200)执行。替代性地或者另外,过程500的各方面可以由任何其他适当的实体执行。过程500中的一些或所有方面(或本文中描述的任何其他过程或其变形和/或组合)可以在用可执行指令配置的一个或多个计算机/控制系统的控制下执行,可以实现为通过硬件或其组合在一个或多个处理器上共同执行的代码(例如可执行指令,一个或多个计算机程序或一个或多个应用)。代码可以存储在计算机可读存储介质上,例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式。计算机可读存储介质可以是非瞬态的。描述操作的顺序不旨在被解读为是限制,任何数目的被描述操作可以以任何顺序和/或并行地组合以执行过程。
在方框502,确定一次性用户公钥。一次性用户公钥是与用户装置相关联的公共密钥,也可以称为一次性客户端公钥。一次性用户公钥可以是包括公钥和相应私钥的用户密钥对的一部分。密钥对可以是任何合适的格式,例如基于椭圆曲线(ec)的密钥或基于rsa的密钥。用户密钥对可以包括为每个供应请求生成的临时密钥对。替换性地,用户密钥对可以包括对于所有供应请求保持相同的静态密钥对,或者对于预定时间段或预定数量的供应请求保持静态的半静态密钥对。对于每个供应请求,静态或半静态密钥的值可以被盲化,模糊化或以其他方式不同地修改,从而得到一次性密钥。例如,可以对具有一些其他数据元素(例如,随机数,密码随机数,识别因子,交易数据等)的用户公/私钥执行点乘法,以便为每个供应请求修改用户密钥的值。在一些实施例中,用户密钥对的私钥可以保持静态,同时用户密钥对的公钥随着每个供应请求而变化。在其他情况下,对于每个供应请求可以同时修改用户对的私钥和公钥。
的一些实施例中,使用识别数据和认证数据计算识别因子。识别数据可以包括与用户或用户装置关联的任何数据或信息。识别数据的实例可以包括与用户装置关联的用户的姓名、与用户装置关联的组织、与用户装置关联的支付信息(诸如主账号(pan)或令牌)、与pan或令牌关联的到期日期、与用户装置关联的证书、用户装置的imei或序列号等。认证数据可以包括适于认证用户或用户装置的任何数据或令牌。认证数据的实例可以包括口令或口令短语,秘密密钥(例如,私钥)等。识别因子可以包括从识别数据和/或认证数据确定的任何数据或信息。例如,在一些实施例中,可以通过对识别数据和认证数据的组合求散列生成识别因子。
识别因子可以与用户公钥(其可以是临时的,静态的或半静态的)和用户私钥(其可以是临时的,静态的或半静态的)组合。因此,可以确定组合的或盲化的临时公钥和组合的或盲化的临时私钥。组合的或盲化的密钥可以包括通过与另一数据元素或值组合已经被从其原始值模糊化或以其他方式修改的密钥。在一些实施例中,用户密钥的盲化可以是可选的(例如,当使用临时密钥时)。
可以使用用户私钥(其可以被或不被盲化或与其他数据元素组合)和静态服务器公钥来生成请求共享秘密。请求共享秘密可以用来保护(例如加密和/或解密)供应请求消息,如下文讨论的。静态服务器计算机公钥可以包括由服务器计算机维护的静态公钥,诸如在安全元件中。在一些实施例中,静态服务器公钥可以从服务器计算机的数字证书确定,数字证书之前已经由用户装置获得,并且可以由可信的证书机构签名。
可以使用任何适当方法从用户私钥(其可以是或不是组合或盲化密钥)和静态服务器公钥生成请求共享秘密。例如,在使用椭圆曲线密码学的实施例中,可以使用椭圆曲线diffie-hellman协议(ecdh)确定共享秘密。
请求会话密钥可以使用请求共享秘密和其他合适的补充数据(如密钥导出数据,如果有的话)生成。请求会话密钥也可以被称为消息保护密钥,因为它用于保护用户装置和服务器计算机之间的消息。这种补充数据的实例可以包括服务器计算机标识符和/或截断的临时公钥。
请求会话密钥可以是任何适当格式(例如,aes、des、blowfish等)、任何适当长度,并且使用任何适当的密钥导出函数(kdf)生成。例如,在一个实施例中,请求会话密钥可以使用基于口令的密钥导出函数2(pbkdf2)算法生成。在一些实施例中,其他用户装置数据(诸如用户装置标识符)可以用作密钥导出函数的附加输入。
在方框504,供应请求消息被发送至供应服务器计算机。在一些实施例中,供应请求消息在到达服务器计算机之前,可以通过一个或多个中间机构(例如不可信网络)传输。该请求消息可以包括一次性用户公钥(盲化或不盲化)。请求消息还可以包括识别数据,用户装置标识符,认证数据以及用于服务器计算机的任何其他合适的数据。例如,该请求数据还可以包括客户端配置信息和/或服务的指令。在一些实例中,这些信息可以由不先验地包括用于强认证的手段的用户装置提供。可以使用请求会话密钥来保护(例如,加密)请求数据(包含在请求消息中的数据)中的一些或全部以形成加密的请求消息。图12中示出了示例性的供应请求消息。在一个实例中,识别数据和认证数据被加密并存储在请求消息的密文部分中。一次性用户公钥可以存储在请求消息的明文部分中。在另一实例中,一次性用户公钥也可以被加密并存储在密文部分中。在一些情况下,供应请求消息可以包括用户公钥,且不包括加密的请求数据。
在方框506,从供应服务器计算机接收供应响应消息。供应响应消息可以包括盲化的静态服务器公钥和加密的响应数据。通常,盲化的静态服务器公钥可以是用于生成请求共享秘密的静态服务器公钥的盲化形式。提供盲化的静态服务器公钥的优点是,静态服务器计算机公钥被模糊化,并且服务器计算机的身份被防止窃听。在静态服务器公钥不被盲化时,可以提供密码随机数作为响应数据的一部分并用来计算密码。例如,来自服务器的密码随机数(熵)可以被使用或存储以用于进一步的推导,或者可以提供第二密码随机数,作为导出参数的一部分。在密码(例如,支付交易密码)的计算中使用来自服务器的熵是必不可少的。图12中示出了示例性的供应响应消息。
在方框508,使用静态服务器公钥确定响应共享秘密。响应共享秘密可以已经用于保护(例如,加密和/或解密)响应消息。另外,在一些实施例中,可以使用响应共享秘密来导出用于保护响应中包括的敏感数据(例如凭证数据)的存储保护密钥。响应共享秘密可以使用用户私钥(其可以是临时的,静态的或半静态的)和静态服务器公钥来确定。在一些实施例中,盲化的静态服务器公钥可以从服务器计算机接收例如作为供应响应消息的一部分或从单独的信道接收。在一些其他实施例中,可以将盲化数据(例如,密码随机数,随机数)提供给用户装置(例如,作为供应响应消息的一部分)而不是盲化的静态服务器公钥。在这种情况下,盲化的静态服务器公钥可以由用户装置使用静态服务器公钥和所提供的盲化数据来导出。例如,可以使用可以作为供应响应消息的一部分提供的密码随机数导出盲化密钥。密码随机数可以是随机数伪随机数。密码随机数还可以用来验证服务器计算机证书,如在别处讨论的。
在一些实施例中,可以使用任何适当方法,诸如ecdh,从用户临时私钥和盲化的静态服务器公钥生成响应共享秘密。在其他实施例中,可以在没有盲化密钥的情况下确定响应共享秘密。在这些实施例中,供应响应消息(例如凭证)可以包括可以用来导出密码密钥的永华数据(例如,密码随机数)。
通常,请求共享秘密与响应共享秘密不同。例如,当用于生成请求共享秘密和响应共享秘密时,静态服务器公钥可以被不同地盲化。在这些实施例中,请求共享秘密可以基本上与请求共享秘密相同。
在方框510,请求会话密钥使用响应共享秘密和其他合适的补充数据(如密钥导出数据,如果有的话)确定。响应会话密钥也可以被称为消息保护密钥,因为它用于保护用户装置和服务器计算机之间的消息。这种补充数据的实例可以包括服务器计算机标识符,用户装置标识符和/或截断的用户公钥。可以使用任何适当的kdf生成第二会话密钥。
响应会话密钥可以是任何适当格式(例如,aes、des、blowfish等)、任何适当长度,并且使用任何适当的密钥导出函数(kdf)生成。例如,在一个实施例中,响应会话密钥可以使用基于口令的密钥导出函数2(pbkdf2)算法生成。在一些实施例中,其他用户装置专用数据(诸如用户装置标识符或其他装置指纹信息)可以用作密钥导出函数的附加输入。
在方框512,使用响应会话密钥来解密供应响应消息以获得响应数据。响应数据可以包括加密人凭证数据,密电池盖随机数,服务器计算机证书链,密钥导出数据,密码套件描述符和任何其他数据。响应数据的一些或全部可以已经使用响应会话密钥进行加密。
服务器计算机的认证可以由用户装置执行。服务器计算机证书链可以被验证。可以使用任何适当的在线或离线方法验证服务器计算机证书链。例如,对于链中的一个或多个证书中的每一个,可以使用已知的可信公钥(例如,证书机构的公钥或由ca适当授权的实体的公钥)验证证书的数字签名。例如,在一些实施例中,可以使用诸如椭圆曲线数字签名算法(ecdsa)的数字签名算法来验证证书。在一些实施例中,可以使用作为供应响应消息的一部分(例如凭证的一部分)提供的密码随机数验证服务器计算机证书。
可以使用服务器计算机证书和密码随机数验证盲化的静态服务器计算机公钥。验证盲化静态服务器计算机公钥可以包括确保盲化静态服务器计算机公钥与预期值匹配。例如,在一些情况下,可以使用在服务器计算机证书上包括的静态服务器计算机公钥和从响应数据提取的密码随机数生成第二盲化静态服务器计算机公钥。第二盲化静态服务器计算机公钥然后可以与接收的盲化静态服务器计算机公钥比较,以确保密钥匹配。可替代地,在一些情况下,可以通过把接收的盲化静态服务器计算机公钥与存储的盲化静态服务器计算机公钥比较来验证前者。如果密钥匹配,则可以认证服务器计算机。否则,认证可能失败。在一些实施例中,盲化的静态公钥可以以响应消息的明文和密文两者提供,以便能够进行验证并防止篡改。
应当注意,这种认证方法(即验证盲化静态公钥)能够提供这样的优点,即不需要以明码电文传输可能被认为是敏感(因为其可能揭示服务器计算机的身份)的静态服务器计算机公钥。因此,能够执行服务器计算机的认证,同时保护服务器计算机的身份不被捕获供应请求消息的偷听者获得。
响应数据还可以包括加密的凭证数据,其可以在不被解密的情况下保持被加密,直到凭证数据实际上需要执行交易。凭证数据可以包括从服务器向用户装置(例如移动装置)供应的使得用户装置能够进行交易(例如支付交易)的任何数据。凭证数据的实例可以包括令牌,pan或其他帐户信息,一个或多个密钥(例如,用于生成密码的luk,加密密钥,盲化或未混合的静态公钥等),密钥导出参数(例如,用于导出用于生成密码、共享秘密密钥、加密密钥等的suk),密码导出参数,证书链信息,交易参数以及任何其他合适的数据。
凭证数据可以包括密钥导出参数,该密钥导出参数可以或可以不包括使用受限密钥(luk)。密钥导出参数(其可以或可以不包括luk)可以用来生成用于执行交易的一个或多个密码。例如,luk可以用来直接导出密码,或用来导出密码密钥,密码密钥然后用来生成密码。
凭证数据或凭证可以包括密码导出参数,密码导出参数可以用来导出密码。凭证数据还可以包括可以由用户装置使用的以基于之前的共享秘密生成更新的共享秘密的更新参数。在一些实施例中,密钥导出参数可以基本上与更新参数相同。在一些其他的实施例中,密钥导出参数可以与更新参数不同。密钥导出参数和/或更新参数可以是每个用户装置或每组用户装置唯一的,以便防止大规模离线攻击。
密钥导出参数、密码导出参数和/或更新参数可以包括luk、给定交易使用哪些交易参数的说明、用于执行导出的代码(或使用哪个导出程序的标识符)和/或与这些参数有关的其他信息。在一些实施例中,密钥导出参数、密码导出参数和/或更新参数可以包括“假(dummy)的”或无效的参数以用于模糊化目的。代码可以是个性化的导出方法代码,原因是其对于装置或装置组是唯一的,并且可以被随机地分配。代码可以由服务器或其他销售方签名,使得用户装置能够认证代码。在一些实施例中,代码在被签名前被模糊化,因此使攻击者难以理解、绕过和/或反向工程得到该代码。
在方框514,使用响应共享秘密来确定存储保护密钥。存储保护密钥可用于解密加密的凭据数据。例如,存储保护密钥可以已经由服务器计算机使用来直接加密凭证数据以生成加密的凭证数据。作为另一实例,存储保护密钥可以已经与用户装置或用户专用的数据(例如,装置指纹信息或用户标识信息)结合使用,以导出用于加密凭证数据的凭证加密密钥。
可以使用各种方法来生成存储保护密钥。在一个实施例中,响应共享秘密可以用于导出随机或伪随机比特串。根据预定的算法,比特串可被分成两部分。比特串的第一部分可以用作或用于生成响应会话密钥;而比特串的第二部分可以用作或用于生成存储保护密钥。
在另一个实施例中,响应共享秘密可以与不同的密钥导出函数或密钥生成算法一起使用以分别生成响应会话密钥和存储保护密钥。
在一些替换性实施例中,存储保护密钥可能根本不从响应共享秘密生成。如结合图13所讨论的,不同于共享秘密密钥,存储保护密钥可以是用户装置的公钥,并且对应于存储私钥。存储私钥可以与方框502中讨论的用户私钥相同或不同,该密钥用作一次性用户公钥,并且为了生成共享秘密(例如,请求共享秘密和响应共享秘密)的目的提供给服务器计算机(例如,在供应请求消息中)。
存储保护公钥可以被提供给服务器计算机(例如,在供应请求消息中)用于保护凭证数据。服务器计算机可以利用存储保护密钥对凭证数据进行加密,并将加密的凭证数据提供给用户装置。在这样的实施例中,用户装置可以存储加密的凭证数据,直到需要该凭证数据执行交易(例如,生成交易密码)。在交易时间,用户装置可以使用与存储保护公钥对应的存储保护私钥对加密的凭证数据进行解密。存储保护私钥可以由用户装置(例如,经由加密,白盒密码或安全硬件模块)来保护。
在方框516,存储保护密钥可以可选地使用密钥加密密钥(kek)进行加密。kek可以包括用户装置的任何合适的加密密钥。在某些情况下,kek可以是静态的或随着时间的推移而变化。例如,存储保护密钥可以用旋转的kek周期性地重新加密以增强安全性。在一些实施例中,不同于使用加密密钥进行加密或除此之外,可以使用任何其他合适的方法来保护存储保护密钥,包括安全防篡改硬件模块(例如,智能芯片),白盒密码等。在存储保护密钥是公钥的实施例中,对应的存储保护私钥(可用于解密加密的凭证数据)可以被加密或以其他方式受保护(例如,使用安全硬件模块或白盒加密)。
在方框518,存储加密的凭证数据。加密的凭证数据可以存储在用户装置上,例如在安全或不安全的模块中。替换性地或另外地,加密的凭证数据可以存储在远程或本地数据存储器中,例如由图4中讨论的外部存储提供方提供的。在一些情况下,例如,一个或多个外部存储器可以存储加密的凭证数据的一个或多个副本以提供冗余。然而,加密的凭证数据在没有通过加密或其他合适的数据保护方法来保护的存储保护密钥的情况下不能被解密,由此降低了凭证数据泄密的风险。
在方框520,存储加密的保护密钥。加密的保护密钥可以存储在用户装置上,例如在安全或不安全的模块中。替换性地或另外地,加密的保护密钥可以存储在远程或本地数据存储器中,例如由图4中讨论的外部存储提供方提供的。在存储保护密钥是用户公钥的实施例中,对应的存储保护私钥(可用于解密加密的凭证数据)可以被加密或以其他方式受保护(例如,使用安全硬件模块或白盒加密)。在一些实施例中,加密的保护密钥和加密的凭证数据可以存储在不同的位置,以减少两者泄密的风险。例如,加密的保护密钥可以存储在用户装置处,并且加密的凭证数据可以存储在远程连接到用户装置的外部存储提供方处;或相反亦然。
图6示出根据一些实施例的用于从服务器计算机安全地供应凭证数据的另一示例性过程600。在这样的实施例中,凭证数据可以由由用户装置提供的存储保护公钥来保护。过程600的各方面可以由用户装置(诸如用户装置101或200)执行。替代性地或者另外,过程600的各方面可以由任何其他适当的实体执行。
在方框602,确定一次性用户公钥。该一次性用户公钥可以类似于在上面讨论的图5的方框502处生成的一次性用户公钥。
在方框604,确定存储保护公钥。存储保护公钥可以是由用户装置生成和/或维护的公/私存储保护密钥对的公钥。存储保护私钥可用于解密加密的敏感数据(例如凭证数据)。存储保护密钥对可以是与用于生成共享秘密(例如,请求共享秘密和响应共享秘密)的方块602中所使用的用户公/私钥对不同的密钥对。可替代地,存储保护密钥对和用户密钥对可以共享相同的私钥。例如,可以使用相同的用户私钥来生成两个公钥,用于保护凭证数据的存储保护公钥和用于保护传输中的消息的在方框602中讨论的用户公钥。
在方框606,供应请求消息被发送至供应服务器计算机。该请求消息可以包括一次性用户公钥(盲化或不盲化)和存储保护公钥。请求消息还可以包括在图5中所述的其他数据,例如识别数据,用户装置标识符,认证数据以及用于服务器计算机的任何其他合适的数据。在一些实施例中,请求共享秘密和请求会话密钥可以以与图5中所描述的类似的方式来确定。请求会话密钥可用于保护供应请求消息。图13中示出了示例性的供应请求消息。
在方框608,从供应服务器计算机接收供应响应消息。供应响应消息可以包括已经使用在上面的方框606中发送的存储保护公钥来加密的凭证数据。供应响应消息还可以包括盲化的静态服务器公钥和其他加密的响应数据,例如在图5的方框506中所描述的。图13中示出了示例性的供应响应消息。
在方框610,使用静态服务器公钥确定响应共享秘密。响应共享秘密可以以与图5的方框508中所描述的类似的方式来确定。
在方框612,请求会话密钥使用响应共享秘密和其他合适的补充数据(如密钥导出数据,如果有的话)确定。响应会话密钥可以以与图5的方框510中所描述的类似的方式来确定。
在方框614,使用响应会话密钥来解密供应响应消息以获得响应数据。供应响应消息可以以与图5的方框512中所描述的类似的方式被解密。响应数据可以包括加密的凭证数据。加密的凭证数据可以已经使用在上面的方框606中提供的存储保护公钥被加密。另外的认证步骤可以由用户装置基于响应数据如图5中所描述的来执行。
在方框616,以与图5的方框518中所描述的类似的方式来存储加密的凭证数据。
用于解密加密的凭证数据和/或存储保护公钥的存储保护私钥可以以与图5的方框518和520中所描述的类似的方式来存储。例如,存储保护私钥/公钥可以在存储之前使用密钥加密密钥被进一步加密。存储保护私钥/公钥可以存储在安全模块(例如,智能芯片卡)中。存储保护私钥/公钥可以本地存储在用户装置上或存储在远程存储提供方处。在一些实施例中,存储保护密钥/公钥和加密的凭证数据可以存储在不同的位置,以减少凭证数据泄密的风险。
图7示出根据一些实施例的使用凭证数据来进行交易的示例性过程700。在一些实施例中,过程700可以由用户装置使用以利用使用图5中所描述的供应过程500获得的加密凭证数据。过程700的各方面可以由用户装置(诸如用户装置101或200)执行。替代性地或者另外,过程700的各方面可以由任何其他适当的实体执行。
在方框702,检索加密的凭证数据。可以从接收到供应响应消息的用户装置或可操作地连接到用户装置的外部存储器检索加密的凭证数据,例如上文所讨论的。例如,可以从诸如智能芯片卡的安全模块检索加密的凭证数据。可以响应于需要凭证数据执行交易的指示来检索加密的凭证数据。例如,该指示可以指示要生成认证或授权请求消息。具体地,该指示可以指示用于认证授权请求消息的密码需要使用凭证数据来生成。可以从在用户装置上运行的移动应用(例如,支付应用)接收指示将要启动支付交易的指示。可以从与移动应用程序交互(例如,经由触摸屏,键盘,小键盘,鼠标,语音,手势或其他合适的用户输入方法)的用户接收指示。可以从与用户装置通信的商家计算机或其他交易处理实体(例如,收单方计算机,支付处理网络计算机,发行方计算机等)接收该指示。
在方框704,检索存储保护密钥。可以从接收到供应响应消息的用户装置或可操作地连接到用户装置的外部存储器检索存储保护密钥,例如上文所讨论的。例如,可以从诸如智能芯片卡的安全模块检索存储保护密钥。如果存储保护密钥在存储之前被加密(例如,使用kek),则存储保护密钥可以被解密。
在方框706,使用存储保护密钥对加密的凭证数据进行解密以获得凭证数据。在一些实施例中,当使用存储保护密钥来加密凭证数据时,可以使用存储保护密钥来直接解密加密的凭证数据。在一些其他实施例中,存储保护密钥可以用于使用用户装置专有的一些数据(例如,诸如装置标识符,硬件或软件设置等的装置指纹信息)来导出数据加密密钥(或凭证加密密钥)然后可以使用数据加密密钥来解密加密的凭据数据。
在方框708,凭证数据被用于执行交易。例如,凭证数据可以包括luk或用于导出suk的导出参数。可以使用luk或suk来利用更新的共享秘密和密钥导出参数来生成密码密钥。密钥导出参数可以包括在来自服务器计算机的之前的响应消息(例如供应响应消息或认证响应消息)中指示的密钥导出数据和/或密钥导出算法。例如,luk阿卡suk和/或更新的共享秘密可以作为输入连同特定的密钥导出数据提供到密钥导出函数中,以产生密码密钥。作为另一实例,luk或suk可以被用作密码密钥。在这些实施例中,密码密钥可以是只对单次交易有效的一次性使用密钥。在其他实施例中,密码密钥可以被重复使用超过一次交易。
在一些实施例中,还基于作为供应响应的一部分发送的密码导出参数使用交易数据生成交易密码。在一些实施例中,交易密码还可以包括使用密码密钥加密的交易数据(例如交易金额、交易日期等)和用户/账户细节(例如支付令牌、账户到期日期等)。
所生成的密码可以用来执行交易(或其他安全通信)。通常,交易密码认证交易。例如,在一些实施例中,用户装置可以向访问装置或商家计算机提供支付令牌或pan以及交易密码,访问装置或商家计算机然后可以生成针对交易的授权或认证请求消息。授权或认证请求消息可以包括交易密码。交易密码可以由接收授权或认证请求消息的实体(例如支付处理网络计算机105、发行方计算机106、校验服务器)验证,以便确定是否批准或拒绝交易。
在一些实施例中,在使用凭证数据执行交易之后,凭证数据可以用适当的加密密钥重新加密,该加密密钥可以是或可以不是存储保护密钥。例如,凭证数据可以用用户装置的秘密或私钥加密。可以通过更新加密密钥(例如,周期性地)来进一步改善数据安全性,并因此利用更新的加密密钥重新加密凭证数据。
图8示出根据一些实施例的使用凭证数据来进行交易的另一示例性过程800。在一些实施例中,过程800可以由用户装置使用以利用使用图6中所描述的供应过程600获得的加密凭证数据。过程800的各方面可以由用户装置(诸如用户装置101或200)执行。替代性地或者另外,过程800的各方面可以由任何其他适当的实体执行。
在方框802,检索加密的凭证数据。加密的凭证数据可以以与图7的方框702中所描述的类似的方式被检索。
在方框804,检索存储保护私钥。存储保护私钥可以对应于用于加密凭证数据的存储保护公钥。在一些实施例中,可以首先检索存储保护公钥,并用于检索对应的存储保护私钥。在一些情况下,存储保护私钥可以在存储期间被加密(例如,使用kek),因此在用于解密加密的凭证数据之前需要被解密。可以从用户装置或外部存储提供方处检索存储保护私钥。
在方框806,使用存储保护私钥对加密的凭证数据进行解密以获得凭证数据。在一些实施例中,当使用存储保护公钥来直接加密凭证数据时,可以使用存储保护私钥来直接解密加密的凭证数据。在一些其他实施例中,存储保护公钥可以已经用于使用用户装置专有的一些数据(例如,诸如装置标识符,硬件或软件设置等的装置指纹信息)来导出数据加密密钥(或凭证加密密钥)数据加密密钥然后被用于加密凭证数据。在这样的实施例中,存储保护私钥可以用于结合用户/装置专有数据来导出数据解密密钥,然后将数据解密密钥用于解密加密的凭证数据。
在方框808,凭证数据用于以与图7的方框708中所描述的类似方式执行交易。
c.服务器计算机
图9示出根据一些实施例的用于向用户装置安全地供应凭证数据的示例性过程900。在这样的实施例中,凭证数据可以由基于共享秘密确定的存储保护密钥来保护。过程900的各方面可以由服务器计算机(诸如服务器装置或计算机102、103、104、105、106或300)执行。例如,过程900可以由供应服务器执行。替代性地或附加地,过程900的各方面可以由任何其他适当的实体执行。
通常,在方法900之前,服务器计算机维护静态服务器密钥对。静态服务器密钥对可以包括公钥(即“静态服务器公钥”)和私钥(即“静态服务器私钥”)。服务器计算机还可以包括“服务器计算机证书”,服务器计算机证书包括静态服务器公钥。服务器计算机证书可以由证书机构(诸如支付处理网络105或发行方计算机106)签名。
在方框902,从用户装置接收供应响应消息。供应请求消息包括一次性用户公钥,例如在图5的方框502中所讨论的。图12中示出了示例性的供应请求消息。在一个实施例中,可以由用户装置使用具有盲化数据(例如识别因子)的临时公钥或静态或半静态公钥来生成一次性用户公钥。在另一实例中,一次性公钥可以仅仅是临时公钥,而不使用盲化数据。在一些情况下,供应请求消息可以包括一次性用户公钥,而不包括加密的请求数据。在这样的实施方式中,本领域技术人员会理解可以不需要下文的某些步骤。
为了解密加密的请求数据,可以使用上面接收的一次性用户公钥和静态服务器私钥来生成请求共享秘密。可以使用任何合适的方法(例如ecdh)来生成请求共享秘密。
请求会话密钥可以使用请求共享秘密和补充数据(如密钥导出数据,如果需要的话)生成。通常,这里可以使用用于在用户装置处生成请求会话密钥的相同补充数据。
可以使用请求会话密钥对加密的请求数据进行解密以获得请求数据。请求数据包括识别数据,用户装置标识符,认证数据以及用于服务器计算机的任何其他合适的数据。例如,该请求数据还可以包括客户端配置信息和/或服务的指令。在某些情况下,请求数据还包括一次性用户公钥。用户装置标识符可以包括适于识别用户装置的任何数据。识别数据可以包括与用户或用户装置关联的任何数据或信息。识别数据的实例可以包括与用户装置关联的用户的姓名、与用户装置关联的组织、与用户装置关联的支付信息(诸如主账号(pan)或令牌)、与pan或令牌关联的到期日期、与用户装置关联的证书、用户装置的imei或序列号等。
可以使用请求数据来认证或验证用户装置。可以使用用户装置标识符验证识别数据。例如,在一些实施例中,用户装置标识符可以用来从装置数据库检索对应的识别数据。然后可以把解密的识别数据与接收的识别数据比较来验证解密的识别数据。在一些实施例中,识别数据可以包括用户装置标识符。
可以检索与用户装置标识符和/或识别数据相关联的认证数据。认证数据可以包括适于认证用户或用户装置的任何数据或令牌。认证数据的实例可以包括口令或口令短语,秘密密钥(例如,私钥)等。在一些实施例中,可以从装置数据库检索认证数据。
可以使用不检索的认证数据和识别数据来生成识别因子。识别因子可以包括从识别数据和/或认证数据确定的任何数据或信息。例如,在一些实施例中,可以通过对识别数据和认证数据的组合求散列生成识别因子。
可以验证一次性用户公钥,以确保一次性用户公钥与预期值匹配。例如,在一些情况下,可以使用从解密的请求数据提取的一次性公钥以及上面确定的识别因子来生成盲化的一次性公钥。然后将盲化的一次性公钥与作为请求消息的一部分(例如,在请求消息的明文部分中)接收的一次性公钥进行比较,以确保密钥匹配。如果密钥匹配,则用户装置可以被认证。否则,认证可能失败。
应当注意,这种认证方法(即验证组合的临时密钥)提供这样的优点,即不需要以明文甚至以加密形式传输可能是敏感的认证数据。因此,即便静态服务器私钥稍后被泄密(不过不太可能),明文认证数据也不会被暴露。而且,由于密钥的盲化通常是不可逆的,即便同时具有盲化用户公钥和未盲化用户公钥(例如临时公钥)的知识,攻击者也不能导出识别因子,更不用说用来生成识别因子的认证数据。
在方框904,可以使用静态服务器私钥和一次性用户公钥来生成响应共享秘密。在一些实施例中,静态服务器公钥和/或静态服务器私钥可以使用密码随机数(例如,随机数或伪随机数据值)和/或识别因子来被盲化。可以使用盲化静态服务器私钥和一次性用户公钥来生成响应共享秘密。在替代性实施例中,静态服务器计算机私钥不被盲化。相反,一次性用户公钥是盲化的。可以使用任何合适的方法(例如ecdh)来生成响应共享秘密。
在方框906,识别将要包括在临时响应消息中的凭证数据。凭证数据可以包括为给定的用户装置(例如,移动设备)或给定的装置专门供应的任何数据,以使得用户装置能够执行交易(例如,支付交易)。凭证数据的实例可以包括令牌,pan或其他帐户信息,一个或多个密钥(例如,用于生成密码的luk,加密密钥,盲化或未混合的静态公钥等),密钥导出参数(例如,用于导出用于生成密码、共享秘密密钥、加密密钥等的suk),密码导出参数,证书链信息,交易参数以及任何其他合适的数据。
供应响应消息还可以包括诸如服务器计算机证书链,静态服务器公钥,密码随机数等的其他信息。服务器计算机证书链可以由用户装置验证以验证服务器计算机的身份,如图5中所讨论的。静态服务器公钥可以被或可以不被盲化。静态服务器公钥可以被用户装置使用生成响应共享秘密。
在方框908,如果需要,可以使用响应共享秘密和密钥导出数据来确定响应会话密钥。密钥导出数据可以包括用户装置或用户专有的数据(例如,装置标识符,用户标识符等等)。在一个实施例中,响应会话密钥可以以与图5的方框510中所描述的类似的方式来确定。
在方框910,可以从响应共享秘密来确定存储保护密钥。存储保护密钥可以与响应会话密钥不同,并且可用于加密凭证数据。在一个实施例中,存储保护密钥可以以与图5的方框514中所描述的类似的方式来确定。例如,在替代实施例中,存储保护密钥可以是由用户装置提供的公钥(例如,作为图13所示的供应请求消息的一部分),并且不从响应共享秘密生成。
在方框912,可以使用存储保护密钥对凭证数据进行加密以生成加密的凭证数据。在一个实施例中,存储保护密钥可以直接用于加密凭证数据。在另一个实施例中,存储保护密钥可以与专用于用户或用户装置的数据一起使用,向用户或用户装置供应凭证数据以导出凭证加密密钥,然后用于加密凭证数据。在一些实施例中,存储保护和/或凭证数据可以在创建加密凭证数据之后不久被删除。
在方框914,可以使用响应会话密钥来加密供应响应消息的一些或所有数据。例如,可以使用响应会话密钥加密密码随机数、服务器计算机证书链、密钥导出数据、密码套件描述符和其他合适的数据。加密的凭证数据可以使用响应会话密钥被加密或不被加密。图12中示出了示例性的供应响应消息。
在方框916处,加密的供应响应消息被发送到用户装置。供应响应消息在到达用户装置之前可以通过一个或多个中间机构(例如不可信网络)传输。用户装置可以根据图7的过程700来处理加密的供应消息。图12中示出了示例性的供应响应消息。
图10示出根据一些实施例的用于向用户装置安全地供应凭证数据的另一示例性过程1000。在这样的实施例中,凭证数据可以由由用户装置提供的存储保护公钥来保护。过程1000的各方面可以由服务器计算机(诸如服务器装置或计算机102、103、104、105、106或300)执行。例如,过程1000可以由供应服务器执行。替代性地或附加地,过程1000的各方面可以由任何其他适当的实体执行。
通常,在方法1000之前,服务器计算机维护静态服务器密钥对。静态服务器密钥对可以包括公钥(即“静态服务器公钥”)和私钥(即“静态服务器私钥”)。服务器计算机还可以包括“服务器计算机证书”,服务器计算机证书包括静态服务器公钥。服务器计算机证书可以由证书机构(诸如支付处理网络105或发行方计算机106)签名。
在方框1002,从用户装置接收供应响应消息。供应请求消息包括一次性用户公钥和存储保护公钥,如图6中所讨论的。图13中示出了示例性的供应请求消息。
如图9中所讨论的,可以生成请求共享秘密和请求会话密钥,并且请求会话密钥可以用于解密供应请求消息以获得请求数据。请求数据可以包括存储保护公钥和一次性用户公钥。可以使用请求数据来认证或验证用户装置。
在方框1004,可以使用静态服务器私钥和一次性用户公钥来生成响应共享秘密,如在图9的方框904中所描述的。
在方框1006,识别将要包括在临时响应消息中的凭证数据,如在图9的方框906中所描述的。
供应响应消息还可以包括诸如服务器计算机证书链,静态服务器公钥,密码随机数等的其他信息。服务器计算机证书链可以由用户装置验证以验证服务器计算机的身份,如图6中所讨论的。静态服务器公钥可以被或可以不被盲化。静态服务器公钥可以被用户装置使用生成响应共享秘密。
在方框1008,如果需要,可以使用响应共享秘密和密钥导出数据来确定响应会话密钥,如在图9的方框908中所描述的。
在方框1010,可以使用在上面的方框1002中接收的存储保护公钥对凭证数据进行加密。在一个实施例中,存储保护公钥可以直接用于加密凭证数据。在另一个实施例中,存储保护公钥可以与专用于用户或用户装置的数据一起使用,向用户或用户装置供应凭证数据以导出凭证加密密钥,然后用于加密凭证数据。
在方框1012,可以使用响应会话密钥来加密供应响应消息的一些或所有数据,如在图9的方框914中所描述的。
在方框1014处,加密的供应响应消息被发送到用户装置,如在图9的方框916中所描述的。图13中示出了示例性的供应响应消息。
d.示例性数据流
图11示出根据实施例用于供应和使用凭证数据的数据流程图1100。如图所示,存储保护密钥(sk_2)可以在供应时间从诸如diffie-hellman的密钥协商协议生成。在一些实施例中,用于生成存储保护密钥的密钥协议可以是与用于生成本文讨论的会话密钥的密钥协议相同的密钥协议。例如,存储保护密钥可以从也用于生成会话密钥的共享秘密导出。在替代性实施例中,可以使用与用于生成会话密钥的密钥协议不同的密钥协议来生成存储保护密钥。存储保护密钥可用于保护诸如凭证数据(例如,luk)的敏感数据,而会话密钥可用于保护传输中的消息。因此,如本文所述,存储保护密钥可以与会话密钥一起使用以提供对敏感数据的端到端保护。
在一些实施例中,存储保护密钥可以具有与使用存储保护密钥保护的敏感数据(例如,luk)大致相同的生命周期(例如,有效起始数据和/或到期时间)。因此,当由服务器计算机生成新的凭证数据(例如,luk)时,也生成新的存储保护密钥以保护凭证数据。在一些实施例中,凭证数据(例如,luk)和/或存储保护密钥可以与生命周期指示符(例如,计数器)相关联,该生命周期指示符指示相关联的凭证数据和/或存储保护密钥何时/是否将到期。在到期时,凭证数据和/或存储保护密钥可以被从用户装置中删除。在一些其他实施例中,存储保护密钥可以具有比敏感数据更长或更短的生命周期。
在首次使用凭证数据之前,存储保护密钥(sk_2)可以使用密钥加密密钥(kek)被加密(例如,根据aes)并存储在安全存储器中。安全存储器可以由用户装置和/或用户装置可访问的外部存储提供方提供。
在供应时,加密的凭证数据(enc_luk)被供应给供应响应消息中的用户装置。随后并且在第一次使用凭证数据之前,凭证数据可以以加密形式(enc_luk)存储在用户装置和/或外部存储器上。可以仅在需要时(例如,在交易时)检索和解密加密的敏感数据,由此使敏感数据的暴露最小化并限制敏感数据的泄露风险。
在交易时,可以检索和解密(aes-1)加密的凭证数据(enc_luk)以获得凭证数据(luk)。在一些实施例中,存储保护密钥(sk_2)被直接用作解密密钥来解密加密的敏感数据。在一些其他实施例中,存储保护密钥(sk_2)可以用于间接地解密加密的凭证数据,如下文所述。
如图11所示,存储保护密钥(sk_2)可以与密钥导出数据(导出数据)一起用作可选的密钥导出函数(kdf)的输入,以导出数据加密密钥(dek)。然后可以使用dek来解密加密的凭据数据(enc_luk)以获得凭证数据(例如,luk)。在一些实施例中,密钥导出数据不在供应响应消息中提供,但是对于用户装置和服务器计算机都是已知的。密钥导出数据可以是唯一的和/或特定于用户装置(例如装置标识符,装置指纹等)的。装置指纹是为了识别装置而收集的关于装置的信息。这样的信息可以包括在任何适当级别的各种硬件和/或软件配置信息,例如浏览器设置,tcp/ip设置,无线设置,操作系统(os)指纹,硬件时钟偏移等。
凭证数据(luk)然后可以用于执行一个或多个交易。例如,凭证数据(luk)可用于生成可用于认证用户装置的交易密码。在一些实施例中,响应消息还可以指示是否使用可选的密钥导出函数(kdf),如何获得用于kdf的导出数据,或关于加密的凭证数据的解密方面的其他指令。
e.示例性供应消息
图12示出根据一些实施例的供应请求消息1202和对应的供应响应消息1210的第一实例。例如,供应请求消息1202可以由用户装置(例如,用户装置101)发送到供应服务器计算机(例如,支付处理网络计算机105,发行方计算机106,服务器计算机300);并且供应响应消息1210可以在供应处理期间从供应服务器计算机发送到用户装置,例如图4-11中所讨论的。
如图12所示,在一些实施例中,供应请求消息1202可以包括三个数据部分:消息的明文部分1204,密文部分1206和消息认证码(mac)1208。明文部分1204可以包括用户装置的一次性公钥(其可以被或不被盲化)。mac可以用于错误检测和/或校正。明文部分1204和密文部分1206的完整性由mac1208保护。可以使用与用于生成密文的密钥相同的密钥或不同的密钥来生成mac1222。可以对请求数据的一些或所有部分进行加密(例如,使用从请求共享秘密导出的请求会话密钥)来产生密文部分1206。被加密的请求数据可以包括识别数据和任何其他合适的数据。
对应于供应请求消息1202的供应响应消息1210也可以包括三个数据部分:明文部分1212,密文部分1214和mac1216。明文部分1212可以包括服务器公钥(其在一些实施例中可以被盲化)和加密的凭证数据1218。服务器公钥可以帮助用户装置导出可用于解密响应消息的响应会话密钥。可以使用与用于加密一些供应响应数据的响应会话密钥(sk_s)不同的单独的存储保护密钥来加密加密的凭证数据1218。加密的凭证数据1218可以包括密文部分1220和mac1222。密文部分1220可以包括加密的凭证数据,例如加密的luk,用于导出suk的加密的密钥导出参数,例如令牌和/或令牌参数的支付凭证等。可以生成mac1222以保护密文部分1220和明文部分1212的完整性。可以使用与用于生成密文的密钥相同的密钥或不同的密钥来生成mac1222。
响应消息1210的密文部分1214可以包括已经使用响应会话密钥加密的其他响应数据,例如密码随机数,服务器计算机证书链,密钥导出数据,密码套件描述符和任何其他合适的响应数据。例如,密文部分1214可以包括指示密钥导出函数(kdf)和/或可用于导出存储保护密钥或凭证加密密钥或任何其他密钥的导出数据的数据。
尽管图12示出了加密凭证数据1218被包括在响应消息1210的明文部分1212中,在一些其他实施例中,加密的凭证数据1218的至少一部分可以被额外加密(例如,使用响应会话密钥)并被存储在响应消息1210的密文部分1214中。
图13示出根据一些实施例的供应请求消息1302和对应的供应响应消息1310的第二实例。例如,供应请求消息1302可以由用户装置(例如,用户装置101)发送到供应服务器计算机(例如,支付处理网络计算机105,发行方计算机106,服务器计算机300);并且供应响应消息1310可以在供应处理期间从供应服务器计算机发送到用户装置,例如图4-11中所讨论的。与图12不同,图12中的请求消息1302包括用于加密响应消息1310中的凭证数据(例如,luk)的存储保护公钥。
如图13所示,在一些实施例中,供应请求消息1302可以包括三个数据部分:消息的明文部分1304,密文部分1306和消息认证码(mac)1308。明文部分1304可以包括用户装置的一次性公钥(其可以被或不被盲化)。一次性公钥可以类似于图12的请求消息1204中描述的。mac可以用于错误检测和/或校正。明文部分1304和密文部分1306的完整性由mac1308保护。可以使用与用于生成密文的密钥相同的密钥或不同的密钥来生成mac1308。可以对请求数据的一些或所有部分进行加密(例如,使用从请求共享秘密导出的请求会话密钥)来产生密文部分1306。
请求消息1302的密文部分1308可以包括可用于加密响应消息1310中的凭证数据(例如,luk)的存储保护公钥1307。存储保护公钥1307可以是由用户装置生成和/或维护的公/私存储保护密钥对的公钥。存储保护私钥可用于解密加密的凭证数据。存储保护密钥对可以是与用于生成共享秘密(例如,请求共享秘密和响应共享秘密)的用户公钥/私钥对不同的密钥对。可替代地,存储保护密钥对和用户密钥对可以共享相同的私钥。例如,相同的用户私钥可以用于生成两个公钥,一个用于保护凭证数据(存储保护公钥),另一个用于保护传输中的消息。
存储保护公钥和/或私钥可以是使用受限的密钥。例如,可以为每个新请求或新交易生成新的存储保护密钥对。在一些其他情况下,可以为预定时间段或为预定数量的请求或交易生成新的存储保护密钥对。在一些实施例中,公/私存储密钥对可以具有与凭证数据(例如,luk)相同的生命周期。在其他实施例中,存储保护公/私密钥对可以具有比凭证数据更短或更长的生命周期。
供应响应消息1310也可以包括三个数据部分:明文部分1312,密文部分1314和mac1316。明文部分1312可以包括服务器公钥(其在一些实施例中可以被盲化)。服务器公钥可以帮助用户装置导出会话密钥来解密响应消息。可以使用响应共享秘密(sk_s)来加密响应数据的部分或全部,以产生密文部分1314。例如,密文部分1314可以包括使用在请求消息1302中提供的存储保护公钥1307加密的加密凭证数据1318。加密的凭证数据1318可以包括密文部分1320和其mac1322。密文部分1320可以包括加密的凭证数据,例如加密的luk,用于导出suk的加密的密钥导出参数,例如令牌和/或令牌参数的支付凭证等。明文部分1312和密文部分1314的完整性由mac1316保护。可以使用与用于生成密文的密钥相同的密钥或不同的密钥来生成mac1316。在一些实施例中,加密的凭证数据可以使用响应会话密钥被进一步加密或不被加密。
响应消息1310的密文部分1314可以包括已经使用响应会话密钥加密的其他响应数据,例如密码随机数,服务器计算机证书链,密钥导出数据,密码套件描述符和任何其他合适的响应数据。
尽管图13示出了加密凭证数据1318被包括在供应响应消息1310的密文部分1314中,在其他实施例中,加密的凭证数据1318的至少一部分可以被包括在供应响应消息1310的明文部分1312中。
iii.交易类型
本文描述的技术可以用于供应用于执行交易的凭证数据。交易可以包括支付交易或非支付交易。例如,用户装置可以与服务器计算机通信,以便访问一个或多个非支付交易中的一个或多个资源。
例如,用户装置和服务器计算机可以在供应过程中向用户装置传送供应凭证(例如luk)。该传送可以以与上面在图4-10中讨论的相似的方式执行。
供应凭证可用于生成用于在后续交易中认证用户装置的密码或其他认证令牌。密码或认证令牌可以由服务器计算机进行验证,服务器计算机可以与供应服务器相同或不同。基于认证结果,对服务器资源的访问可以被提供或拒绝。
在各个实施例中,资源可以包括可由计算装置访问的计算资源。这些计算资源可以包括数据对象、计算装置或其硬件/软件组件(例如cpu、存储器、应用)、服务(例如网络服务)、虚拟计算机系统、数据存储或管理、网络连接和接口等等。例如,资源可以包括一个或多个计算装置(例如桌面计算机、膝上计算机、平板电脑、移动电话)、存储在计算装置中的文件或其他数据、与计算装置关联的存储器或数据存储装置、计算装置上安装的应用、与计算装置关联的外围设备,诸如输入/输出装置(例如键盘、鼠标、麦克风、触摸屏、打印机)、网络接口、由计算装置提供的服务等等。计算资源可以包括在线或基于云的服务或由服务提供方提供的功能。计算资源可以包括一个或多个存储装置、节点、系统或其一部分,诸如分区、卷、扇区等等。计算资源还可以包括数据对象,诸如凭证(例如用户名、口令、密码密钥、数字证书)。在这种情况下,访问这些凭证可能需要主凭证。资源可以包括有形和/或无形资源。有形资源可以包括装置、建筑物和物理对象。无形资源可以包括例如服务和时间。
iv.计算机设备
图14示出可以用来实现上文描述的任何实体或组件的计算机系统的高级框图。图14中所示的子系统经由系统总线1475互连。附加子系统包括打印机1403、键盘1406、固定磁盘1407和监视器1409,监视器1409耦连至显示适配器1404。外围设备和输入/输出(i/o)装置耦连至i/o控制器1400,并且可以通过本领域已知的许多手段中的任何一种(诸如串行端口)连接到计算机系统。例如,串行端口1405或外部接口1408能够用来将计算机设备连接至广域网(诸如互联网)、鼠标输入装置或扫描器。经由系统总线1475的互连使中央处理器1402能够与每个子系统通信,并控制来自系统存储器1401或固定磁盘1407的指令的执行以及信息在子系统之间的交换。系统存储器1401和/或固定磁盘可以体现计算机可读介质。
用于包含代码或代码部分的存储介质和计算机可读介质可以包括本领域已知或使用的任何适当介质,包括存储介质和通信介质,诸如但不限于在用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实现的易失性和非易失性、可移动和不可移动介质,包括ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字通用盘(dvd)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储装置、数据信号、数据传输或可以用来存储或传送期望信息并且可以由计算机访问的任何其他介质。基于本文中提供的公开和教导,本领域技术人员会认识到实现各实施例的其他方式和/或方法。
以上描述是示意性的不是限制性的。本领域技术人员在阅读本公开后,会明白本发明的许多变形。因此,本发明的范围可以不参照上文的描述确定,而是可以参照所附权利要求连同其全部范围或等同物确定。
应当理解,本发明的任何实施例可以使用硬件(例如专用集成电路或现场可编程门阵列)和/或使用计算机软件以控制逻辑的形式借助通用可编程处理器以模块化或集成方式实现。如本文中描述的,处理器包括同一集成芯片上的单核处理器、多核处理器或单个电路板上的或联网的多个处理单元。基于本文中提供的公开和教导,本领域技术人员会知道并意识到使用硬件及硬件和软件的组合实现本发明的实施例的其他方式和/或方法。
本申请中描述的任何软件组件或功能可以实现为使用任何适当计算机语言(比方说例如java、c、c++、c#、objective-c、swift)或脚本语言(诸如perl或python),使用例如传统的或面向对象的技术由处理器执行的软件代码。软件代码可以存储为计算机可读介质上的一系列指令或命令以用于存储和/或传输。适合的非瞬态计算机可读介质可以包括随机存取存储器(ram)、只读存储器(rom)、磁介质(诸如硬盘或软盘)或光介质(诸如光盘(cd)或dvd(数字通用盘))、闪存等等。计算机可读介质可以是这些存储或传输装置的任何组合。
还可以使用载波信号编码和传输这些程序,载波信号适于经由符合各种协议(包括互联网)的有线、光和/或无线网络传输。因此,根据本发明的实施例的计算机可读介质可以使用用这些程序编码的数据信号创建。用程序代码编码的计算机可读介质可以与可兼容装置一起打包或从其他装置单独地提供(例如通过互联网下载)。任何这种计算机可读介质可以驻存在单个计算机产品(例如硬盘、cd或整个计算机系统)之上或之内,并且可以出现在系统或网络内的不同计算机产品之上或之内。计算机系统可以包括监视器、打印机或用于向用户提供本文中提到的任何结果的其他适当显示器。
本文中描述的任何方法可以完全地或部分地用包括可以被配置成执行这些步骤的一个或多个处理器的计算机系统执行。因此,实施例可以涉及被配置成执行本文中描述的任何方法的步骤、可能具有执行相应步骤或相应步骤组的不同组件的计算机系统。尽管呈现为编号步骤,但本文中的方法的步骤可以同时或以不同顺序被执行。另外,这些步骤的一部分可以与来自其他方法的其他步骤的一部分一起使用。同样,一个步骤的全部或部分可以是可选的。另外,任何方法的任何步骤可以用模块、单元、电路或用于执行这些步骤的其他手段来执行。
在不偏离本发明的实施例的精神和范围下,具体实施例的特定细节可以以任何适当方式组合。不过,本发明的其他实施例可以涉及与每个单独的方面有关的特定实施例,或者这些单独的方面的特定组合。
上文对本发明的示例性实施例的描述已经出于图示和描述的目的呈现。不旨在是详尽的,或将本发明局限到描述的精确形式,根据上文的教导许多修改和变形是可能的。
除非明确指示有相反的意思,“一(a)”、“一(an)”或“所述(the)”的叙述旨在表示“一个或多个”。除非明确指示有相反的意思,“或”的使用旨在表示是“包括性的或”,而不是“排他性的或”。
本文中提到的所有专利、专利申请、公开和描述出于所有目的通过引用被全部并入本文中。不承认他们为现有技术。