用于软件模块绑定的系统和方法与流程

文档序号:19429723发布日期:2019-12-17 16:18阅读:457来源:国知局
用于软件模块绑定的系统和方法与流程

相关申请交叉引用

本申请是2017年5月3日申请的第62/500,701号美国临时申请的非临时申请并要求其申请日的权益,所述申请出于所有目的以全文引用的方式并入本文中。



背景技术:

加密密钥常常存储在计算装置上以用于各种任务,例如安全通信、身份验证(例如,通过数字签名)和唯一代码生成。举例来说,移动装置可使用加密密钥(如果其是对称密钥,那么被替代地称为解密密钥)以对用于生成用于移动交易的密码的加密密钥进行解密。恶意软件可将这些密钥作为复制和误用的目标。因此,需要更好地保护例如加密密钥的敏感数据免于被盗和误用的系统。

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



技术实现要素:

本发明的实施例提供一种用于将第一软件模块与第二软件模块绑定的过程。通过交换加密或解密密钥、质询值和应用程序标识符,第一软件模块和第二软件模块可以可靠地且反复地对彼此进行验证并且安全地调用可涉及使用敏感数据的功能性。

在一些实施例中,所述绑定可通过将绑定信息和敏感数据存储在安全硬件中来进行硬件支持。举例来说,第二软件模块可将加密或解密密钥、质询值和其它合适的信息存储在安全元件中。也可通过基于软件的保护,例如混淆、保护和白盒化,来改进绑定和安全性。

为了起初在第一软件模块(例如,应用程序)与第二软件模块(例如,密钥库)之间建立绑定,可在初始化应用程序时执行绑定算法以在软件模块之间交换指示信息、密钥和/或质询值。举例来说,第二软件模块可将质询值提供到第一软件模块。其后,在应用程序的运行时执行期间,可使用基于在应用程序的初始化期间生成的质询值导出的数据密钥对在软件模块之间交换的数据进行加密。另外,可在每一通信期间替换此质询值,使得每一后续通信使用新的质询值且因此使用新的加密密钥。

本发明的一个实施例涉及一种方法。所述方法包括:通过第一软件模块生成质询请求,所述质询请求包括数据元素,所述数据元素包括第一软件模块标识符和时间段;通过第一软件模块使用第一质询元素对质询请求中的数据元素进行加密;通过第一软件模块将质询请求提供到第二软件模块;通过第二软件模块对质询请求中的数据元素进行解密;通过第二软件模块验证数据元素;通过第二软件模块生成第二质询元素;通过第二软件模块对第二质询元素进行加密;通过第二软件模块向第一软件模块提供包括经过加密的第二质询元素的质询响应;通过第一软件模块对经过加密的第二质询元素进行解密;和通过第一软件模块存储第二质询元素。

本发明的另一实施例涉及一种计算装置,其包括处理器、第一软件模块和第二软件模块,所述计算装置配置成执行上文所描述的方法。

关于本发明的实施例的其它细节可见于具体实施方式和附图。

附图说明

图1示出了根据一些实施例的计算装置的框图。

图2展示根据本发明的实施例的示出应用程序与密钥库之间的最初通信的图。

图3a到3c展示根据本发明的实施例的示出应用程序与密钥库之间的第一组装置绑定通信的图。

图4a到4b展示根据本发明的实施例的示出应用程序与密钥库之间的第二组装置绑定通信的图。

图5示出了根据一些实施例的系统的框图。

图6示出了根据一些实施例的便携式计算装置的框图。

具体实施方式

本发明的实施例涉及绑定计算装置中的软件模块。举例来说,第一软件模块可与第二软件模块绑定。此绑定可使得第二软件模块能够安全地标识第一软件模块并且确定第一软件模块是否经过授权来访问某些受限数据(例如,加密或解密密钥)和/或受限过程(例如,密码生成或解密)。

为了减少软件模块接口处的漏洞,每一软件模块可针对彼此进行验证以确保软件模块中的功能正被已知实体或已知软件组件调用,且确保调用程序经过授权以调用被调用的功能。在软件模块之间来回传递的数据也可经过加密以防止数据交换过程中的任何中间人窃听,以确保数据机密性和完整性。

根据一些实施例,在第一软件模块的第一次初始化期间(例如,当软件应用程序被第一次编译并安装在装置上,或第一次执行软件应用程序时),软件模块执行绑定算法以交换标识信息和质询值以便将软件模块彼此绑定。在软件应用程序的后续运行时间期间,软件模块可使用质询值以生成数据加密密钥。软件模块接着可彼此安全地转移数据并且使用质询值密钥和标识信息对彼此进行验证。

交换的质询值和在第一次初始化时执行并在稍后互动期间刷新的绑定算法提供一种用于软件模块在运行时间期间进行相互验证的方式,因为未经授权的应用程序将不知晓质询值、标识信息和其它受保护数据。这可减少试图调用软件中的一个中的功能的恶意应用程序,因为恶意应用程序将不会具有与被调用的软件模块通信所需的正确的质询值或其它信息。质询值的循环还缓解了密钥被破解,因为其允许数据加密密钥随时间推移而改变。本文中所描述的技术还可扩展并且可容易地部署到数百万个装置,因为绑定算法和密钥导出算法可被部署作为写入到软件模块中的代码的部分。

以下描述将集中于第一软件模块是移动应用程序且第二软件模块是密钥库的实例。然而,实施例还适用于任何其它合适类型的软件模块,且所述软件模块可与硬件组件(例如,安全存储器硬件)集成。

在论述本发明的具体实施例之前,可详细地描述一些术语。

“通信装置”可以是包括一个或多个电子组件(例如,集成芯片)的装置,所述一个或多个电子组件可与另一装置通信。举例来说,通信装置可以是计算装置,其包括联接到存储器的至少一个处理器,所述存储器存储用于供处理器执行的指令或代码。“便携式通信装置”可以是可由用户运输和操作的通信装置,且可包括一个或多个电子组件(例如,集成芯片)。便携式通信装置可将远程通信能力提供给网络。便携式通信装置可配置成将数据或通信传输到其它装置且从其它装置接收数据或通信。便携式通信装置可呈诸如以下各者的移动装置的形式:移动电话(例如,智能电话、蜂窝电话等)、平板计算机、便携式媒体播放器、个人数字助理装置(pda)、可穿戴装置(例如,手表、诸如健身跟踪器的健康监测装置等)、电子阅读器装置等,或者呈卡(例如,智能卡)或挂件等形式。便携式通信装置的实例还可包括便携式计算装置(例如,膝上型计算机、上网本、超级本等)。便携式通信装置还可呈车辆(例如,汽车)的形式,或者整合成车辆的一部分(例如,车辆的信息系统)。

“密钥”可指用于加密算法中以将输入数据变换成另一表示的一条信息。加密算法可以是将原始数据变换成替代表示的加密算法,或将加密信息变换回原始数据的解密算法。加密算法的实例可包括三重数据加密标准(tdes)、数据加密标准(des)、高级加密标准(aes)等。密钥可以是任何合适大小或类型。举例来说,不对称密钥可以是2048位rsa密钥,或p-256ecc密钥。

“有限使用密钥”或“luk”可指只可在有限的时间内使用或用于有限数目的交易的密钥,并且在耗尽有限的使用时可需要加以更新或补充。luk可与限制luk的使用的一个或多个受限使用阈值的集相关,其中一旦luk的使用被耗尽或超出一个或多个受限使用阈值的集,便将拒绝使用所述luk进行的进一步交易,即使基础账户仍然信誉良好。一个或多个受限使用阈值的集可包括以下各者中的至少一个:可以使用luk的交易的数目;指示luk有效的持续时间的存活时间;和/或指示对luk有效的一个或多个交易合计的总交易金额的累计交易金额;或其任何组合。

“受限使用阈值”可指限制一条信息的使用的条件。当满足基础条件时,可超出或耗尽受限使用阈值。举例来说,受限使用阈值可包括指示一条信息有效的时间量的存活时间,并且一旦已经经过所述时间量,便超出或耗尽所述受限使用阈值,并且这条信息可变得无效而且不再可被使用。作为另一实例,受限使用阈值可包括一条信息可使用的次数,且一旦这条信息已经用了所述次数,便超出或耗尽受限使用阈值,且这条信息可变得无效而且不再可被使用。

“应用程序”可以是存储在计算机可读介质(例如存储器元件或安全元件)上的计算机代码或其它数据,所述计算机代码或其它数据可由处理器执行以完成任务。

“密钥库”可包括用于密码密钥的容器。密钥库可以是计算装置上的软件模块。在一些实施例中,密钥库可包括或利用安全的数据存储装置和/或安全的处理器,例如受信任执行环境(tee)或安全元件(se)。密钥库可存储密码密钥(和其它敏感信息),使得其无法从安全的数据存储装置和/或安全的处理器去除。举例来说,加密密钥可绑定到安全硬件(例如,tee或se)并且决不暴露在安全硬件外部。密钥库模块可允许密钥用于应用程序的过程,但可不允许密钥导出到应用程序。举例来说,密钥库可代表应用程序实行密码操作和/或接着将加密数据递送到应用程序。另外,密钥库可接收并施行关于可使用密钥的方式及时间以及哪些实体被授权以使用密钥的限制。举例来说,密钥可仅由与某一应用程序标识符相关的应用程序使用。

“质询元素”可包括与质询相关的信息或数据。“质询元素”有时可被称作“质询值”。举例来说,质询元素可包括动态字母数字数据值。在一些实施例中,质询元素可以是随机数、临时值(例如,256位、32字符临时值)、时间戳或任何其它合适的值。质询元素可用于建立和/或检验访问授权、软件模块之间的绑定和/或任何其它合适的查询。

“质询请求”可包括对质询值的请求。质询请求可以是来自第一软件模块的要求第二软件模块提供质询值的消息。质询请求可包括标识第一软件模块的信息,例如应用程序标识符、应用程序装置装置标识符(id)或任何其它合适的信息。

“白盒化(whiteboxing)”可包括在本地软件内提供安全密码层。白盒化可通过重整密码功能,例如组合不对称加密与对称加密,而获得。由于密码功能重整,难以或不可能通过存储器分析或调试移动应用程序软件来确定白盒化密码密钥。

“令牌”可包括一些信息的替代标识符。举例来说,交易令牌可包括交易账户的标识符,所述标识符是账户标识符(诸如,主账号(pan))的替代。举例来说,令牌可包括可用作原始账户标识符的替代的一连串字母数字字符。举例来说,令牌“4900000000000001”可代替pan“4147090000001234”使用。在一些实施例中,令牌可以是“保留格式的”,并且可具有与现有交易处理网络中使用的账户标识符一致的数字格式(例如,iso8583金融交易消息格式)。在一些实施例中,令牌可用于代替pan,以发起、授权、结算或解决交易。在通常提供原始凭证的其它系统中,令牌还可用于表示原始凭证。在一些实施例中,可生成令牌值,使得不可以通过计算方式从令牌值导出原始pan或其它账户标识符的恢复。此外,在一些实施例中,令牌格式可被配置成允许接收令牌的实体将其标识为令牌,并辨识发行令牌的实体。

“真实账户标识符”可包括与账户相关的原始账户标识符。举例来说,真实账户标识符可以是由发行方针对卡账户(例如,信用卡、借记卡等)发行的主账号(pan)。举例来说,在一些实施例中,真实账户标识符可包括十六位数值,例如,“4147090000001234”。真实账户标识符的前六位(例如,“414709”)可表示可标识与真实账户标识符相关的发行方的实际发行方标识符(bin)。

“账户参数”可指代与账户相关的可用来在所述账户上进行交易的信息。账户参数的实例可包括可用来标识用户的账户的信息(例如,真实账户标识符、替代账户标识符、令牌等)、与账户的状态相关的数据或信息、用来生成密码信息的一个或多个密钥、与一个或多个密钥相关的数据或信息等。账户参数可为半静态或动态的。动态账户参数可为具有有限寿命的账户参数,且一旦过期,便不再可用来进行交易,直到所述账户参数被补充、刷新或续订为止。动态账户参数可在账户的使用期限期间被频繁地补充。半静态账户参数可为具有比动态账户参数长的延长寿命的账户参数,且可不像动态账户参数那样被频繁地补充,或者在账户的使用期期间根本不补充。

“发行方”通常可指维护与便携式通信装置相关的用户的账户的商业实体(例如,银行),所述账户例如在安装于便携式通信装置上的移动应用程序中注册的账户。发行方还可将与账户相关的账户参数发给便携式通信装置。发行方可与主机系统相关,所述主机系统代表发行方来执行发行方的一些或全部功能。在一些实施例中,发行方可指软件应用程序的提供商。

“商家”通常可以是参与交易并且可出售商品或服务或提供对商品或服务的访问的实体。

“收单方”通常可以是与特定商家或其它实体有商业关系的商业实体(例如商业银行)。一些实体可执行发行方和收单方功能两者。一些实施例可涵盖此类单个实体发行方-收单方。

“访问装置”可以是用于与商家计算机或交易处理网络通信和用于与交易装置(例如,支付装置)、用户计算机设备和/或用户移动装置交互的任何合适装置。访问装置通常可位于任何合适的位置处,例如位于商家所在位置处。访问装置可呈任何合适的形式。访问装置的一些实例包括pos装置、蜂窝电话、pda、个人计算机(pc)、平板pc、手持式专用读取器、机顶盒、电子收款机(ecr)、自动取款机(atm)、虚拟收款机(vcr)、查询一体机、安全系统、访问系统、网站等。访问装置可使用任何合适的接触或非接触式操作模式,以发送或接收来自便携式通信装置或与便携式通信装置相关的数据。在访问装置可包括pos终端的一些实施例中,可使用任何合适的pos终端并且任何合适的pos终端可包括读取器、处理器和计算机可读介质。读取器可包括任何合适的接触或非接触操作模式。举例来说,示例性读卡器可包括用于与便携式通信装置交互的射频(rf)天线、光学扫描器、条形码读取器或磁条读取器。

“交易处理网络”可包括可处理并路由交易请求消息的网络。示例性交易处理网络可包括用来支持和递送授权服务、异常文件服务、交易评分服务以及清算与结算服务的数据处理子系统、网络和操作。示例性交易处理网络可包括visanettm。例如visanettm的交易处理网络能够处理信用卡交易、借记卡交易以及其它类型的商业交易。具体地说,visanettm可包括处理授权请求的vip系统(visa集成式支付系统),和执行清算与结算服务的baseii系统。

“授权请求消息”可以是发送来请求授权交易的电子消息。授权请求消息可发送到交易处理网络和/或交易卡(例如,支付卡)的发行方。根据一些实施例的授权请求消息可遵守iso8583,iso8583是用于交换与用户使用交易装置或交易账户进行的交易相关的电子交易信息的系统的标准。授权请求消息可包括可用于标识账户的信息。授权请求消息还可包括额外数据元素,例如,服务代码、有效日期等中的一个或多个。授权请求消息还可包括交易信息,例如与当前交易相关的任何信息,例如交易金额、商家标识符、商家位置等,以及可用于确定是否标识和/或授权交易的任何其它信息。授权请求消息还可包括其它信息,例如,标识生成授权请求消息的访问装置的信息、关于访问装置的位置的信息等。

“授权响应消息”可以是对授权请求消息的电子消息应答。授权响应消息可由发行金融结构或交易处理网络生成。授权响应消息可包括例如以下状态指示符中的一个或多个:批准-交易被批准;拒绝-交易不被批准;或呼叫中心-响应未决的更多信息,商家必须呼叫免费授权电话号码。授权响应消息还可包括授权代码,所述授权代码可以是信用卡发卡银行响应于电子消息中的授权请求消息(直接地或者通过交易处理网络)返回给商家计算机的指示批准交易的代码。所述代码可充当授权的证据。如上文所提及,在一些实施例中,交易处理网络可向商家生成或转发授权响应消息。

“服务器计算机”可包括功能强大的计算机或计算机集群。举例来说,服务器计算机可以是大型主机、小型计算机集群或充当单元的一组服务器。在一个实例中,服务器计算机可以是连接到网络服务器的数据库服务器。服务器计算机可连接到数据库,并且可包括用于服务于来自一个或多个客户端计算机的请求的任何硬件、软件、其它逻辑或前述内容的组合。

图1示出根据一些实施例的计算装置100中的软件操作环境。计算装置100可以是计算机、通信装置、便携式通信装置,所述便携式通信装置呈移动装置的形式,例如移动电话(例如,智能电话、蜂窝电话等)、平板计算机、便携式媒体播放器、个人数字助理装置(pda)、可穿戴计算装置(例如,手表)、电子阅读器装置、膝上型计算机、上网本、超级本等,或者呈卡(例如,智能卡)或挂件等形式。在一些实施例中,计算装置100也可以是车辆(例如,汽车)的一部分。计算装置100可包括例如一个或多个处理器的装置硬件104、操作系统114和在计算装置100上执行的应用程序122。在一些实施例中,应用程序122可在虚拟机110内执行。

应用程序122可包括多个软件层。举例来说,应用程序122可包括第一软件层,其以例如java的高级编程语言编写,并且应用程序可实施为软件开发工具包(sdk)。应用程序122还可包括第二软件层,其为本地层或本地库并且可以例如c或c++的低级编程语言来编写。

计算装置100和应用程序122可与来自不同实体的若干标识码相关。举例来说,操作系统114可为计算装置100提供唯一标识符。这可以是os标识符。os标识符的实例是androidtmid。

另外,提供实体的应用程序可为应用程序122(例如,此特定计算装置100上的应用程序的例子)提供唯一标识符。这可以是应用程序装置id。在一些实施例中,单个计算装置100具有由两个不同应用程序提供服务提供的两个不同应用程序,并且每一应用程序与不同应用程序装置id(例如,由相关应用程序提供服务提供)相关。

在一些实施例中,应用程序122软件中的一些或全部可通过软件开发工具包(sdk)提供。另外,sdk可包括基于保护、混淆和密码白盒化保护的层。此安全层可以是白盒层。白盒层可嵌入有敏感信息,例如私用密钥。

计算装置100还可包括密钥库133。密钥库133可以是具有数据安全保护的软件模块。在一些实施例中,密钥库133可以是安全存储器硬件组件(例如,安全元件)上的软件模块。密钥库133可安全地存储一个或多个加密或解密密钥,使得加密或解密密钥无法被复制或去除并且使得仅经过授权的应用程序可访问并利用加密或解密密钥。在一些实施例中,密钥库133可包括用于对数据进行加密或解密的加密模块以及存储加密或解密密钥的密钥数据库,加密或解密密钥中的每一个可基于tee、基于se或基于软件。

应用程序122可与密钥库133通信以交换数据并且调用实施于密钥库133中的功能。举例来说,应用程序122可调用实施于密钥库133中的功能以访问安全密钥以对luk进行解密,所述luk又可用于通过应用程序122创建密码。

根据一些实施例,密钥库133可使用或处理敏感信息。举例来说,如上文所提及,密钥库133可提供并存储用于保护敏感密钥信息的安全密钥(luk)。密钥库133以此安全方式可对用于生成luk的密钥进行解密,并且使得应用程序122能够将其安全地用于密码生成。密钥库133可能易受欺诈性和不当请求影响。举例来说,恶意应用程序152(例如,未经授权的代码、恶意软件等)或其它未经授权的实体可尝试访问受密钥库保护的安全密钥以用于密码算法中。如果密钥库133未能恰当地标识并验证请求实体或应用程序,那么恶意应用程序152有可能通过访问密钥库中的安全密钥而获得敏感信息,或直接调用实施于密钥库133中的功能以获得敏感数据。

为了减少这些漏洞,密钥库133可仅允许经过授权的应用程序利用密钥库133处的密钥和/或功能。举例来说,密钥库133可将某一密钥与经过授权以使用密钥的一个或多个具体应用程序和/或应用程序标识符联系起来。当密钥首次提供到密钥库133时(例如,当包括密钥的应用程序首先安装在计算装置100上时),可指定这些应用程序和应用程序标识符。

此外,本发明的实施例通过绑定软件模块(例如,应用程序122和密钥库133)的过程进一步改进安全性。因此,密钥库133可以可靠地确定应用程序122的身份,且确定应用程序122是否经过授权以访问密钥库133处的密钥或功能。

应理解,虽然应用程序122和密钥库133将被描述为详细实例,但本文中所描述的技术可应用于软件应用模块和安全数据/功能模块的任何组合。举例来说,“应用程序122”的每一例子可更通用地替换为“第一软件模块”,且“密钥库133”的每一例子可更通用地替换为“第二软件模块”。

在绑定应用程序122和密钥库133之前,可进行最初的信息交换。可相对于图2描述根据本发明的实施例的用于在应用程序与密钥库之间交换最初的信息的方法200。

用户可下载应用程序122并将其安装到计算装置100上。当计算装置100处于受信任状态(例如,高于平均受信任状态)时,可进行下载和安装。举例来说,可首先验证计算装置100(例如,osid可被验证为真实的)以通过应用程序服务器计算机实现受信任状态。计算装置100的用户也可在计算装置100处或在应用程序服务器计算机处被验证(例如,通过密码或生物统计技术)。

在步骤s202处,应用程序122可开始向密钥库133注册。这可包括发送以下请求:密钥库133(或计算装置100操作系统)向应用程序122提供唯一标识符(uid)(例如,在密钥库发行的标识符当中是唯一的)。当用户首先安装、首先打开和或在任何其它合适的时间执行应用程序112时,可进行此步骤。

在步骤s204处,密钥库133可将uid提供到应用程序122。密钥库133提供uid,使得应用程序122可在与密钥库133通信时将uid用作标识符。所述uid可与步骤s202中描述的uid相同或不同。在一些实施例中,uid也可充当用于访问密钥库133处的密钥或其它敏感数据的访问凭证。举例来说,密钥库133可存储关于应用程序122的记录(例如,包括访问权限、其它应用程序标识符、质询值、应用程序公用密钥等),且可基于uid标识记录。从应用程序122发送到密钥库133的后续消息中的任一个(例如,在此方法或以下方法中)可包括uid以便标识应用程序122。其它软件模块无法使用或模拟此uid。

在步骤s206处,应用程序122可将密钥库初始化材料(kim)发送到密钥库133。kim可包括来自与应用程序122相关的不对称白盒化密钥(abk)对(公用-私用密钥对)的公用密钥。kim还可包括应用程序装置id(例如,此装置上的应用程序122的例子的由应用程序服务器提供的标识符)、os标识符(例如,此装置的由操作系统提供的标识符)、钱包标识符(例如,钱包账户的用户标识符),和sdk版本信息(例如,sdk版本标识符)。在一些实施例中,kim信息组合起来可唯一地标识应用程序122。因此,kim中的一些或全部可用作应用程序122的软件模块标识符(例如,除了uid之外或而非uid)。

在步骤s208处,密钥库133存储从应用程序122接收的kim信息。所存储的kim可与uid相关。因此,密钥库133可拥有唯一地标识应用程序122的信息,并且可使用此所存储的信息以在未来通信期间验证应用程序122。在步骤s210处,密钥库133可将指示kim被成功地接收并存储的响应发送到应用程序122。

在一些实施例中,应用程序122可在安装期间为其自身请求或提供来自密钥库133的一个或多个安全密码密钥。这些安全密码密钥接着可用于保护敏感资产或对属于应用程序122的密钥进行解密。未向应用程序122显示安全密码密钥。这些密钥库133可创建这些密钥与应用程序122之间的相关性(例如,uid),且可安全地存储并限制密钥使得仅应用程序122(和/或其它所指示应用程序)可使用所述密钥。举例来说,密钥可仅由与正确的uid相关的应用程序使用。

在进行最初的接触并获得uid之后,应用程序122继续与密钥库133建立绑定。可相对于图3a到3c描述根据本发明的实施例的用于将应用程序与密钥库绑定的方法300。

在步骤s320处,应用程序122创建对质询值的请求。质询请求可包括数据元素,其包括应用程序装置id、钱包标识符、sdk版本信息、指示例如生存时间(ttl)值的时间段的值和任何其它合适的信息。获得质询值可帮助绑定,因为质询值可使得应用程序122能够与密钥库133在未来安全地通信并进行自身验证。

在步骤s322处,应用程序122可对质询请求进行数字签名。举例来说,应用程序122可使用abk私用密钥(例如,对应于abk公用密钥的私用密钥)创建用于质询请求的数字签名。

在步骤s324处,应用程序122对质询请求进行加密。举例来说,如果尚未建立绑定,那么可使用x密钥对质询请求进行加密。

x密钥可以是通过将与计算装置100和/或应用程序122相关的标识符进行组合(例如,连结和/或散列)导出的加密密钥。举例来说,x密钥可通过连结osid、应用程序装置id和钱包账户id且接着使用任何合适散列算法(例如,sha256)对数据串进行散列而生成。在一些实施例中,x密钥是对称密钥,且质询请求消息可使用任何合适对称加密算法(例如,aes)进行加密。

在步骤s326处,应用程序122将请求发送到密钥库133以创建(或检查)装置绑定。所述请求包括经过加密的质询请求。应用程序122也可指示是否已经建立绑定。

在步骤s328处,密钥库133对质询请求消息进行解密。举例来说,密钥库133也可导出并使用相同x密钥(例如,使用相同输入信息)以对质询请求进行解密。

在步骤s330处,密钥库133验证数字签名。举例来说,密钥库133可标识与应用程序122相关的abk公用密钥(例如,基于uid,质询请求中所提供的其它标识符),并且密钥库133可使用abk公用密钥连同质询请求消息中的信息(例如,应用程序装置id、钱包账户id、sdk版本信息和ttl到期信息)来验证数字签名的真实性。

验证了数字签名并且进而验证了质询请求合法地来自应用程序122(例如,与所指示uid相关的应用程序122)之后,密钥库133可继续进行绑定过程。为了执行绑定过程,密钥库133将质询值和密钥库公用密钥(用于未来通信)提供到应用程序122。为了完成此操作,密钥库133执行以下步骤s332到s344。

在步骤s332处,密钥库133生成新的质询值。质询值可包括随机值(例如,临时值),或任何其它合适的一次性使用信息。质询值也可与有效时间段(例如,ttl值)相关。

在步骤s334处,密钥库133存储生成的质询值。举例来说,质询值可与应用程序的uid相关并存储在密钥库数据库中。

在步骤s336处,密钥库133生成和/或获得一组加密和/或解密密钥。所述密钥可包括rsa密钥对(例如,与密钥库133相关的私用密钥和公用密钥)。在一些实施例中,密钥可专门用于与应用程序122通信。

在步骤s338处,密钥库133生成证书和用于所述证书的对应的生存时间(ttl)值。所述证书可以是短期证书,如由ttl值所指示。所述证书可使用来自步骤s336的密钥库私用密钥进行数字签名。在一些实施例中,所述证书可包括密钥库公用密钥、到期时间(例如,ttl值)、sdk版本信息、应用程序装置id、钱包账户标识符和任何其它合适的信息。因此,所述证书可用作用于将密钥库的公用密钥提供到应用程序122的工具。

在步骤s340处,密钥库133创建用于质询值的数字签名(例如,使用密钥库私用密钥)。经过签名的质询二进制大型对象可包括数字签名和证书。

在步骤s342处,密钥库133使用abk公用密钥(例如,使用uid从存储装置标识)对质询值进行加密,使得仅应用程序122可对质询值进行解密并获得质询值。在一些实施例中,可使用装置验证(da)对经过加密的质询值进行另一轮加密,使得使用两个不同密钥对质询值进行双重加密。

可通过以机密(例如,专有)方式组合并格式化计算装置100参数来创建da密钥。所述参数可包括应用程序装置id、钱包账户id和sdk版本id。可对所述参数进行组合和散列(例如,使用sha256)。da密钥可以是与对称加密算法(例如,aes-gcm128)一起使用的对称密钥。

可能有利的是在步骤s342处引入并使用da密钥而非x密钥,因为da密钥为所述过程添加了另一层安全性。试图以欺诈手段绑定的恶意应用程序将必须能够创建并使用x密钥和da密钥两者。另外,da密钥可偶尔旋转,每当sdk版本id改变时改变。

在步骤s344处,密钥库133将装置绑定响应消息发送到应用程序122。此响应消息可包括经过加密的质询值、证书、数字签名和任何其它合适的信息。

在步骤s346处,应用程序122对经过加密的质询值进行解密。举例来说,应用程序122可首先使用对称da密钥(例如,以与密钥库133处的da密钥相同的方式创建)进行解密。应用程序122可接着使用abk私用密钥执行额外解密。

在步骤s348处,应用程序122可确定从密钥库接收的证书和公用密钥是否与由sdk存储的证书和公用密钥匹配。如果存在匹配,那么可认为证书和公用密钥有效。因此,应用程序122可通过证书接收密钥库的公用密钥,使得应用程序122可在未来安全地对信息进行加密并将信息发送到密钥库133。

在步骤s350处,应用程序122可使用公共密钥来验证证书的真实性。在步骤s352处,应用程序122检查证书的到期时间并验证尚未到到期时间。

在步骤s354处,应用程序122可使用公共密钥来验证与质询值相关的数字签名,并且进而验证质询值是合法地生成并由密钥库133发送。

在步骤s356处,可通过验证从密钥库133接收的信息来完成应用程序122。绑定过程可被认为是成功的,因为密钥库133拥有应用程序公用密钥,应用程序122拥有密钥库公用密钥,并且应用程序112和密钥库133两者都拥有相同的质询值(例如,使得应用程序和密钥库可在未来的消息交换期间创建相同的对称密钥)。因此,可运用不对称密钥和动态对称密钥对任一方向的通信进行加密,从而实现安全通信和可靠验证。

在步骤s358处,应用程序122可存储密钥库公用密钥(例如,公用密钥指数)。在一些实施例中,在存储之前,可首先对密钥库公用密钥进行加密(例如,使用sdar密钥)。静态安全数据(sdar)密钥可以是用于保护计算装置100上的大部分敏感资产的密钥(例如,受限使用密钥)。

在步骤s360处,应用程序122还存储所接收的质询值。在存储之前,质询值可使用sdar密钥进行白盒化。因此,可安全地存储质询值。

出于除了最初的绑定之外的若干其它目的,发明的实施例允许稍后重复以上方法。举例来说,所述方法可用于移动应用程序平台(map)装置密码初始化、登记pan、提供令牌、补充(例如,过期值)、装置密钥的旋转,和sdk版本的迁移(例如,其涉及sdk数据的迁移)。所述方法也可按需执行,并且可视需要由应用程序提供商调用(例如,在疑似欺诈或装置窜改期间)。

当稍后再次执行方法时,所述质询值可用作新的对称加密密钥(或用于生成新的密钥)。可使用基于质询值的密钥而非x密钥(例如,在步骤s324和s328处)和/或而非da密钥(例如,在步骤s342和s346处)。质询值可被认为是旧质询值,因为将在重复过程期间创建另一质询值。此质询值可在所述过程的每一反复期间被替换。因此,不同对称密钥用于所述过程的每一后续反复。

另外,当第二次(或更多次)执行方法时,在步骤s326处发送的请求可以是检查绑定(例如,而非创建绑定)的请求。所述请求可包括这并非首次发送此请求的指示。并且,在一些实施例中,当第二次(或更多次)执行所述方法时,密钥库133可通过证书为新的密钥库密钥对提供新的密钥库公用密钥。在此状况下,应用程序122可用新的密钥库公用密钥替换旧密钥库公用密钥(例如,替换sdk的白盒化层中的所存储密钥)。

在建立了应用程序122与密钥库133之间的绑定之后,应用程序122现在可能够访问密钥库133以使用一个或多个密钥。举例来说,在一些实施例中,应用程序122可以是支付应用程序。当所述用户使得支付应用程序进行支付(例如,尝试使用nfc进行点击和支付)时,支付应用程序可访问密钥库133以便使用密钥库133处的密钥以对用于生成用于支付的密码的密钥进行解密。

然而,密钥库133可能不会允许任何应用程序请求对其密钥的访问。因此,应用程序122可首先与密钥库133相互作用以检查绑定并且展现应用程序122是经过批准的请求者。

可关于图4a到4b描述根据本发明的实施例的用于检查应用程序与密钥库之间的绑定的方法400。

在步骤s470处,应用程序122可确定是否需要检查应用程序122与密钥库133之间的绑定。举例来说,如果应用程序122最近确认了与密钥库133的绑定(例如,在最后一分钟、5分钟、10分钟、1小时等内),那么应用程序122可不需要再次检查绑定并且可在不完成方法400的情况下继续密码生成和支付。这可在用户在较短时间段内进行多次支付(例如,在时间限制到期之前)的情形下改进效率。

在步骤s472处,应用程序122创建用于新的质询值的请求消息。质询请求可包括数据元素,其包括应用程序装置id、钱包应用程序标识符、sdk版本信息、ttl信息和/或任何其它合适的信息。

在步骤s474处,应用程序122对质询请求进行加密并且将经过加密的质询请求发送到密钥库133。先前的质询值(例如,在前一消息交换期间获得的质询值)可用于对质询请求进行加密。举例来说,可基于先前的质询值生成对称密钥。因此,可运用可仅由应用程序122和密钥库133生成的动态和唯一对称密钥对质询请求进行加密,因为仅应用程序122和密钥库133拥有先前的质询值,且应用程序122和密钥库两者安全地存储质询值(例如,存储在白盒化层、安全硬件等中)。

在步骤s476处,密钥库133可对经过加密的质询请求进行解密。举例来说,密钥库133可使用基于先前的质询值生成的匹配的对称密钥。在一些实施例中,密钥库133可基于uid和/或其它应用程序122标识符标识先前的质询值(例如,以用于解密)。

在一些实施例中,应用程序122可使用密钥库的公用密钥另外(或替代地)对质询请求信息中的一些或全部进行加密。接着,密钥库133可使用密钥库的私用密钥对质询请求进行解密。因此,可使用对称密钥和不对称密钥通过加密来保护质询请求。

在步骤s478处,密钥库133可验证质询值请求消息中的信息。举例来说,密钥库133可验证应用程序装置id、sdkid、钱包账户id和ttl信息。密钥库133可(例如,基于在方法200的步骤s208期间存储的信息)确定这些标识符都相互和/或与uid相关。

在标识了与应用程序122相关的先前的质询值、使用先前的质询值成功地解密消息(例如,指示应用程序112也拥有相同质询值)并成功地验证了质询请求中的应用程序112标识信息之后,密钥库133可认为应用程序122是可信的且与密钥库133绑定。因此,密钥库133可允许应用程序122访问密钥库过程。密钥库133也可提供新的质询值以便维持绑定。

在步骤s480处,密钥库133生成新的质询值,例如随机数。可分发并存储此新的质询值,以准备应用程序122与密钥库133之间的后续通信交互。举例来说,新的质询值可用作加密密钥以用于未来通信。

在步骤s482处,密钥库133对新的质询值进行签名。举例来说,密钥库133可使用密钥库私用密钥创建数字签名。

在步骤s484处,密钥库133对新的质询值进行加密。新的质询值可使用先前的质询值(例如,使用先前的质询值生成或从先前的质询值获得的对称密钥)进行加密。

在步骤s486处,密钥库133可将新的质询值维持在系统存储器中达某一时间而不在数据库中创建新的质询值的存储记录。如果在s493处接收到确认,那么存储可稍后在步骤s494处发生。

在步骤s488处,密钥库133将经过加密的质询值和数字签名发送到应用程序122。

在步骤s490处,应用程序122使用先前的质询值(例如,使用先前的质询值生成或从先前的质询值获得的对称密钥)对经过加密的质询值进行解密。

在步骤s491处,应用程序122验证与新的质询值相关的数字签名。举例来说,应用程序122使用所存储的密钥库公用密钥以验证数字签名的真实性。应用程序122可进而验证新的质询值是由密钥库133合法地提供的真实的质询值。

在步骤s492处,应用程序122使用sdar密钥对新的质询值进行加密。在步骤s493处,应用程序122将消息发送到密钥库133,所述消息指示确认了绑定,并且接收到了新的质询值。

在步骤s494处,密钥库133将新的质询值存储在数据库中。数据库记录可指示新的质询值与具体应用程序相关(例如,通过存储一个或多个应用程序标识符)。

在步骤s495处,密钥库133可将消息返回到应用程序122,所述消息指示确认了绑定并且质询值也在密钥库处更新了。

在步骤s496处,应用程序122存储新的质询值,其使用sdar密钥进行加密。应用程序122可使用此所存储的质询值以用于稍后对后续质询请求进行加密。

如上文所提及,因为确认了应用程序122与密钥库133之间的绑定,所以密钥库133可继续执行用于应用程序122的一个或多个任务,或另外允许应用程序122使用一个或多个密钥。举例来说,密钥库133可对密钥进行解密,所述密钥可在应用程序122请求时用于生成用于支付的密码(例如,使用luk)。在一些实施例中,密钥库133可授权访问已经与相同uid(或其它应用程序122标识符)相关的密钥。在其它实施例中,密钥库133可执行功能或使用由应用程序122请求的密钥(例如,由密钥参考值指示的密钥)。

密钥库133可允许应用程序122在步骤s478之后、在步骤s494之后、在完成过程时或在任何其它合适的时间访问受限功能和数据。在一些实施例中,密钥库133可具有用于对密钥进行解密的密钥,所述密钥可用于与方法400并行地生成密码,但经过解密的密钥可不提供到应用程序122或以其它方式被解除,直到确认了绑定为止。在其它实施例中,应用程序122可等待请求密码生成或启动支付,直到确认绑定之后为止(例如,等到步骤s491或s497之后为止)。

方法400可包括类似于方法300的一些步骤,但也可省略包括在方法300中的一些步骤。举例来说,方法400可省略用于生成并验证密钥库数字证书的步骤。这允许在方法400期间进行较快验证,使得可更快速地完成调用方法400的支付(或其它活动)。

图5示出了根据一些实施例的示范性系统1000的框图,其中可使用本文中所描述的软件模块绑定技术。系统1000可以是例如用于进行基于云的交易的基于云的交易系统。应理解,本文中所描述的软件模块绑定和验证技术可应用于可或可不涉及交易处理的其它类型的系统。

系统1000包括便携式通信装置1010(例如,移动装置)、基于云的交易平台(cbp)1080,和移动应用程序平台(map)1070。cbp1080可使用一个或多个计算装置实施,并且可与发行方、交易处理器和/或其它合适的实体相关或由其操作。cbp1080实施包括账户管理和账户参数生成及补充的一组功能性以使得基于云的交易能够通过便携式通信装置1010进行。

map1070用于有助于便携式通信装置1010中的cbp1080与移动应用程序1014(例如,交易应用程序)之间的通信。map1070可使用一个或多个计算装置实施,并且可与移动应用程序1014(例如,移动软件应用程序)的服务提供商(例如发行方)、移动钱包提供商、商家和/或其它合适的实体相关或由其操作。在一些实施例中,map1070可和与cbp1080相同的实体相关或由其操作,或其可以是单独的。map1070用于对在移动应用程序1014与cbp1080之间的请求起媒介作用,并且确保一旦例如通过通信网络1082(例如,互联网、移动或蜂窝网络等)建立到便携式通信装置1010的连接性便履行由任一方发起的请求和响应。应理解,在一些实施例中,cbp1080、map1070和/或发行方或主机处理系统1072的一个或多个功能性可集成到相同计算系统或不同计算系统中。

便携式通信装置1010可用来进行由cbp1080和/或map1070促成的基于云的交易(例如,支付交易)。便携式通信装置1010包括装置硬件1032、移动操作系统(os)1022以及应用程序环境1012。装置硬件1032包括可将信息非接触地传达或以其它方式呈现给另一装置(诸如,访问装置1060的非接触式读取器1062)的非接触式接口1034。非接触式接口1034的实例可包括近场通信(nfc)接口,其可使用射频或诸如蓝牙、蓝牙低功耗(ble)、wi-fi等其它无线通信协议来发送和接收通信。非接触式接口1034的实例还可包括光接口,诸如用于呈现信息(诸如,快速响应(qr)码、条形码等)的显示器。

便携式通信装置1010的应用程序环境1012可包括移动应用程序1014,诸如由服务提供商(例如,发行方)提供的交易应用程序。举例来说,如果移动应用程序1014的服务提供商是发行方,那么移动应用程序1014可以是移动银行应用程序或移动支付应用程序。如果服务提供商是移动钱包提供商(例如,支持多个发行方的移动网络运营商或第三方钱包提供商),那么移动应用程序1014可以是移动钱包应用程序。至于商家,移动应用程序1014可以是消费者可从中进行电子商务或销售点交易的商家自己的交易应用程序,或者是支持多个商家的移动钱包应用程序。

在一些实施例中,移动应用程序1014可包括集成到移动应用程序1014中以支持基于云的交易的装置上基于云的交易逻辑。装置上基于云的交易逻辑执行功能以有助于基于云的交易,以便获得被提供来用在支付交易中的账户参数并将它们递送到移动操作系统1022,以便通过非接触式接口1034进行传输。举例来说,装置上基于云的交易逻辑可使用从cbp1080提供的密码密钥(例如,受限使用密钥),以生成通过非接触式接口传输到访问装置1060的交易密码,以便进行支付交易。交易密码可发送到交易处理网络1084,以获得支付交易的授权。装置上基于云的交易逻辑也管理在已经开通账户之后提供的初始服务配置文件参数,以确保发起对账户参数补充和其它账户参数管理活动的请求。

为了提供便携式通信装置1010以用于基于云的支付交易,cbp1080可用来配置与发行方相关的账户资产组合(portfolio)并且向便携式通信装置1010提供账户参数,以便在进行基于云的交易时使用。由cbp1080建立的账户资产组合可包括诸如风险参数(例如,速度控制)的特性,其管理所提供的装置上的账户参数将何时需要针对每个资产组合中的账户进行刷新的触发因素。为了确保一致的性能和可用性,可由cbp1080实施可在服务配置文件中配置的一组最小参数。为了确保根据账户资产组合的服务配置文件中指定的规则来处理基于云的支付交易,cbp1080在已经启用的账户的使用期限期间执行各种核心功能。这些功能可包括开通、活动账户管理、支付的验证、交易处理、生命周期管理以及后付制。

在账户被提供作为基于云的交易账户之前,cbp1080可创建资产组合的服务配置文件。开通可包括获得注册账户,创建账户信息(诸如,备选账户标识符(例如,备选主账号(pan)),或者充当可代替真实账户标识符(例如,真实pan)用来进行交易的账户标识符替代物的令牌),并且已经为资产组合建立继承服务配置文件。一旦开通账户,相关服务配置文件细节便与交易处理和装置上基于云的交易逻辑两者共享,以确保可在交易处理时和在用户使用移动应用程序期间完成决策。

一旦开通账户,便可由cbp1080执行活动账户管理。活动账户管理可从交易处理活动或者从移动应用程序活动发起。在已经开通账户之后,活动账户管理能力生成将部署到便携式通信装置1010的账户参数的初始集合。账户参数可包括在开通期间生成的账户信息(例如,备选账户标识符或令牌)以及动态信息,以确保账户参数的集合一旦递送到装置便只具有受限的用途或有限的寿命。取决于支持哪种类型的交易,动态信息可包括受限使用密码密钥或动态数据。举例来说,动态信息可包括用于计算密码的受限使用密钥(luk)以及用于支持旧有的动态卡验证值或基于代码的实施方案的受限使用动态数据。

在交易处理期间,如果由cbp1080为特定账户保留的服务配置文件参数指示便携式通信装置1010上的账户参数需要替换,那么cbp1080的活动账户管理能力可通过map1070连接到便携式通信装置1010,以补充账户参数。同样地,如果存储在便携式通信装置1010上的装置上服务配置文件参数指示需要或快需要账户参数补充(即,通过监测账户参数阈值),那么移动应用程序1014可向cbp1080请求账户参数补充。

便携式通信装置1010的应用程序环境1012可进一步包括安全数据和/或功能模块,例如密钥库1033。密钥库1033可安全地存储并使用加密和/或解密密钥和/或任何其它合适的数据。举例来说,上文所描述的动态信息(例如,luk)可存储在密钥库1033处。当移动应用程序1014需要密码或其它动态数据时,移动应用程序1014可调用密钥库1033以对用于形成luk的密钥进行解密。

在一些实施例中,此示例性密钥库1033可在便携式通信装置1010的另一区域而非应用程序环境1012处存储或执行。举例来说,密钥库1033可以是移动os1022的一部分,由安全存储器硬件(例如,安全元件)执行。

一旦已经提供便携式通信装置1010以进行基于云的交易,便可通过便携式通信装置1010通过与(例如,商家位置处的)访问装置1060的非接触式读取器1062交互来进行交易。访问装置1060的组件可包括销售点(pos)终端1064和/或电子收款机1066。访问装置1060可连接到收单方1074(例如,通过未展示的商家计算机)。收单方1074可通过交易处理网络1084连接到发行方或主机处理系统1072。交易处理网络1084可包括一个或多个服务器计算机。服务器计算机通常是功能强大的计算机或计算机集群。举例来说,服务器计算机可以是大型主机、小型计算机集群或充当单元的一组服务器。在一个实例中,服务器计算机可以是连接到网络服务器的数据库服务器。交易处理网络1084可使用任何合适的有线或无线网络,包括互联网。

交易处理网络1084可包括用来支持和递送授权服务、异常文件服务、交易评分服务以及清算与结算服务的数据处理子系统、网络和操作。示例性交易处理网络可包括visanettm。例如visanettm的交易处理网络能够处理信用卡交易、借记卡交易以及其它类型的商业交易。具体地说,visanettm包括处理授权请求的vip系统(visa集成式支付系统),和执行清算与结算服务的baseii系统。

实体中的每一个(例如,收单方1074、交易处理网络1084、发行方或主机处理系统1072)可包括一个或多个计算机,以实现通信或执行本文中所述的功能中的一个或多个功能。

为了进行基于云的交易,便携式通信装置1010的用户可使便携式通信装置1010点击访问装置1060的非接触式读取器1062(例如,通过nfc),或在便携式通信装置1010的屏幕上显示可由访问装置1060的非接触式读取器1062(例如,光学扫描器或读取器)扫描的图像(诸如,条形码或qr码)。在一些实施例中,便携式通信装置1010可向访问装置1060提供账户标识符(例如,备选账户标识符、令牌等)和额外信息,诸如,受限使用账户参数或从受限使用账户参数中导出的信息。举例来说,账户标识符或令牌和/或额外信息(例如,交易密码)可用由访问装置1060扫描的条形码或qr码进行编码;或者账户标识符或令牌和/或额外信息可通过nfc传输到访问装置1060。在一些实施例中,受限使用账户参数可包括交易密码。

访问装置1060或连接到访问装置1060的商家计算机可生成包括账户标识符和额外信息(例如,受限使用账户参数或者从受限使用账户参数中导出的信息)的授权请求消息,并且将授权请求消息转发到收单方1074。授权请求消息接着被发送到交易处理网络1084。交易处理网络1084接着将授权请求消息转发到与账户的发行方相关的对应发行方或主机处理系统1072,所述账户与便携式通信装置1010相关。

在发行方或主机处理系统1072接收到授权请求消息之后,可剖析授权请求消息,并且授权请求消息中的信息可发送到cbp1080以进行验证。授权响应消息接着被发回到交易处理网络1084,以指示当前交易是否被授权(或未被授权)。交易处理网络1084接着将授权响应消息转发回到收单方1074。在一些实施例中,即便发行方或主机处理系统1072已经授权交易,交易处理网络1084仍可拒绝交易,例如,取决于欺诈风险分数的值或者取决于受限使用账户参数是否由cbp1080验证。收单方1074接着将授权响应消息发送到商家计算机和/或访问装置1060。授权响应结果可由访问装置1060显示,或者可在物理收条上打印出来。或者,如果交易是在线交易,那么商家可提供网页或授权响应消息的其它指示,作为虚拟收条。收条可包括交易的交易数据。

在一天结束时,可由交易处理网络1084进行常规的清算与结算过程。清算过程是在收单方和发行方之间交换财务细节的过程,以利于发布到顾客的支付账户,并核对用户的结算位置。

图6示出了便携式通信装置1101(例如,实施便携式通信装置1010)的框图,其中可实施本文中所描述的过程的一些实施例。便携式通信装置1101可包括连接到存储器1102的装置硬件1104。装置硬件1104可包括处理器1105、通信子系统1109、使用接口1106、显示器1107(其可以是用户接口1106的部分),和非接触式接口1108。处理器1105可实施为一个或多个集成电路(例如,一个或多个单核或多核微处理器和/或微控制器),并且被用来控制便携式通信装置1101的操作。处理器1105可响应于存储在存储器1102中的程序代码或计算机可读代码来执行多种程序,并且可保留多个同时执行的程序或过程。通信子系统1109可包括一个或多个rf收发器和/或连接器,所述rf收发器和/或连接器可由便携式通信装置1101用来与其它装置通信和/或与外部网络连接。用户接口1106可包括输入元件和输出元件的任何组合,以便允许用户与便携式通信装置1101交互并且调用其功能性。在一些实施例中,显示器1107可以是用户接口1106的部分。

非接触式接口1108可包括一个或多个rf收发器,以便与访问装置的非接触式读取器交互以进行交易(例如,支付交易、访问交易、信息交换等)。在一些实施例中,可由移动os1114使用卡模拟api1116来访问非接触式接口1108,而不需要使用安全元件。在一些实施例中,显示器1107也可以是非接触式接口1108的一部分,并且被用来例如使用qr码、条形码等来执行交易。

存储器1102可使用任何数目的非易失性存储器(例如,闪存存储器)和易失性存储器(例如,dram、sram)的任何组合,或任何其它非暂时性存储介质,或其组合介质来实施。存储器1102可存储移动os1114和其中驻留一个或多个移动应用程序的移动应用程序环境1110,包括将由处理器1105执行的交易应用程序1112(例如,移动钱包应用程序、移动银行应用程序、移动支付应用程序、商家应用程序等)。在一些实施例中,移动os1114可实施一组卡模拟api1116,其可由交易应用程序1112调用以便访问非接触式接口1108来与访问装置交互。

根据一些实施例,交易应用程序1112可包括多个软件层。举例来说,交易应用程序1112可包括第一软件层1120(例如,sdk)和第二软件层1130(例如,ndk)。第一软件层1120可包括用来实施非安全敏感功能的一组公共api,所述非安全敏感功能为诸如用户接口功能、联网或通信功能以及可调用第二软件层1130中实施的安全敏感功能的功能。第一软件层1120可用诸如java的高级编程语言编写。第二软件层1130可包括本地库以实施安全敏感功能,诸如令牌请求功能1134、账户参数补充功能1136、密码生成功能1138等。第二软件层1130可用诸如c或c++的低级编程语言编写。

在一些实施例中,应用程序122软件中的一些或全部可通过软件开发工具包(sdk)提供。另外,sdk可包括基于保护、混淆和密码白盒化保护的层。此安全层可称为白盒化层。

可调用令牌请求功能1134以从远程服务器(例如,cbp,或者发行方或主机处理系统)请求令牌。令牌可用作真实账户标识符的替代物,以进行交易,例如,通过将令牌发送到访问装置。使用令牌而非真实账户标识符可更安全,因为在进行交易时并不传输真实账户标识符。令牌请求功能1134可在例如注册时间被调用以请求初始令牌,或者在当前令牌的寿命已到期时被调用。

账户参数补充功能1136可被调用以补充或更新账户参数,诸如,来自远程服务器(例如,cbp,或者发行方或主机处理系统)的受限使用密钥。在交易时,受限使用密钥用来生成交易密码,所述交易密码被提供给访问装置以进行交易。受限使用密钥可与一组或者一个或多个受限使用阈值相关(例如,在预定时间段内、针对预定数目的交易和/或针对预定累计交易金额有效),以限制luk的使用。当luk的受限使用阈值中的一个或多个已过期或快要过期时,账户参数补充功能1136可被调用以请求新的luk。

密码生成功能1138可在交易时间被调用以生成交易密码,所述交易密码被提供给访问装置以进行交易。可通过从访问装置接收动态交易数据(例如,交易金额、交易日期、不可预知的数目等)并利用luk对动态交易数据进行加密来生成交易密码。在一些实施例中,可通过改为利用luk对静态字符串进行加密(例如,如果访问装置不支持将动态数据传输到便携式通信装置)来生成交易密码。

根据一些实施例,密钥库1133可用以居中并且安全地存储加密和/或解密密钥并且限制对敏感功能的访问,使得仅经过授权的应用程序可访问数据和功能性。

在一些实施例中,记忆体1102和/或移动os1114还可包括安全存储器(例如,安全元件)。密钥库1133可包括在此安全存储器而非应用程序环境1110中。

在一些实施例中,可使用本文中所描述的软件模块绑定和验证技术保护由密钥库1133实施的安全性敏感数据和功能以免于恶意代码破坏。当交易应用程序1112(例如,sdk1120)调用密钥库1133中的这些功能时,密钥库1133可通过确定交易应用程序1112与密钥库1133之间存在绑定来验证交易应用程序1112经过授权以使用这些功能。

尽管以上描述可能描述了供应用程序与密钥库之间使用的软件模块绑定和验证技术,但应理解,所述技术可用于保护由任何软件模块、安全数据模块、操作系统等实施的功能。

另外,本发明的一些实施例还可包括用户验证。举例来说,在应用程序122继续进行上文所描述的方法中的任一个之前,应用程序122可首先执行用户验证过程,例如获得并验证密码、pin、生物统计数据等。在其它实施例中,可由密钥库133(例如,使用安全密钥库处理器或存储器)来验证此用户验证信息。

本发明的实施例具有数个优势。举例来说,在本发明的实施例中,可在两个或多于两个软件模块之间建立绑定,使得软件模块可验证彼此并且安全地通信。软件模块可采取移动应用程序、安全数据存储模块和/或任何其它合适的软件元件的形式。

因此,当确定是否准许第一软件模块访问安全数据或功能性时,可由第二软件模块可靠地验证第一软件模块。因此,敏感数据和过程可受保护以免于不当曝光和使用。

实施例可进一步有利地并有安全硬件,使得可在硬件级别保护安全数据,并且绑定是在硬件级别维护访问权限。

实施例可通过若干安全层保护安全信息。举例来说,为了访问密钥库处的加密和/或解密密钥,移动应用程序可能需要拥有与加密和/或解密密钥相关的某一uid(或其它应用程序标识符)。应用程序还可能需要通过应用程序绑定证明其身份。这可涉及拥有用于对发送到密钥库以确认绑定的消息进行加密的有效质询值。这还可涉及拥有用于对包括来自密钥库的新的质询值的消息进行解密的正确私用密钥。因此,为了获得用于获得生成密码的luk的密钥,应用程序可使用至少这三个具体和机密数据元素,以及拥有保密消息传送和密钥导出算法。

实施例通过使用对称密钥和不对称密钥两者有利地创建强大的防欺诈绑定。举例来说,每一软件模块可通过使用其自身的私用密钥创建数字签名来证明其身份。并且,在第一软件模块与第二软件模块之间发送的消息可使用对称密钥进行加密。对称密钥对于每一交互可以是动态的、不断改变的。举例来说,可基于质询值生成对称密钥,并且新的质询值可在每一交互期间由第二软件模块生成并且提供到第一软件模块。因此,以下交互可使用新的质询值。

现将描述可用于实施本文中所描述的实体或组件中的任一个的计算机系统。计算机系统中的子系统通过系统总线互连。额外子系统包括可连接到显示器适配器的打印机、键盘、固定磁盘和监视器。外围装置和输入/输出(i/o)装置可连接到i/o控制器,且可通过本领域已知的任何数量的构件(例如串行端口)连接到计算机系统。举例来说,串行端口或外部接口可用于将计算机设备连接到例如互联网的广域网、鼠标输入装置或扫描仪。通过系统总线的互连允许中央处理器与每个子系统通信,且控制来自系统存储器或固定磁盘的指令的执行以及子系统之间的信息交换。系统存储器和/或固定磁盘可体现计算机可读介质。

如所描述,本发明的服务可涉及实施一个或多个功能、过程、操作或方法步骤。在一些实施例中,由于通过适当编程的计算装置、微处理器、数据处理器等执行指令集或软件代码,可实施功能、过程、操作或方法步骤。指令集或软件代码可存储在由计算装置、微处理器等访问的存储器或其它形式的数据存储元件中。在其它实施例中,功能、过程、操作或方法步骤可由固件或专用处理器、集成电路等实施。

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

虽然已经详细描述了且在附图中展示了某些示例性实施例,但应理解,此类实施例仅仅是对本发明的说明而非限制,且本发明不限于所展示和描述的具体布置和构造,因为本领域的普通技术人员可想到各种其它修改。

如本文中所使用,除非明确指示有相反的意思,否则使用“一(a/an)”或“所述”旨在表示“至少一个”。

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