CN107925572A - 软件应用程序到通信装置的安全绑定 - Google Patents

软件应用程序到通信装置的安全绑定 Download PDF

Info

Publication number
CN107925572A
CN107925572A CN201680049444.1A CN201680049444A CN107925572A CN 107925572 A CN107925572 A CN 107925572A CN 201680049444 A CN201680049444 A CN 201680049444A CN 107925572 A CN107925572 A CN 107925572A
Authority
CN
China
Prior art keywords
application program
server
apparatus identifier
dynamic apparatus
communicator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201680049444.1A
Other languages
English (en)
Other versions
CN107925572B (zh
Inventor
G·普拉卡什
S·艾斯
R·曼索
A·盖达姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Visa International Service Association
Original Assignee
Visa International Service Association
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Visa International Service Association filed Critical Visa International Service Association
Publication of CN107925572A publication Critical patent/CN107925572A/zh
Application granted granted Critical
Publication of CN107925572B publication Critical patent/CN107925572B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Abstract

用于将软件应用程序安全地绑定到通信装置的技术可以包括:将与计算装置相关联的装置标识符的集合发送到服务器;接收基于所述装置标识符的集合生成的服务器生成的动态装置标识符;以及在所述应用程序的初始化期间存储所述服务器生成的动态装置标识符。在所述应用程序的运行时执行期间,所述应用程序可以接收执行应用程序特定的任务的请求。响应于接收到所述请求,所述应用程序可以:生成运行时动态装置标识符;确定所述运行时动态装置标识符是否匹配所述服务器生成的动态装置标识符;当所述运行时动态装置标识符匹配所述服务器生成的动态装置标识符时,执行所述应用程序特定的任务;以及当所述运行时动态装置标识符不匹配所述服务器生成的动态装置标识符时,阻止执行所述应用程序特定的任务。

Description

软件应用程序到通信装置的安全绑定
背景技术
软件应用程序可以具有彼此通信或交换数据的多个软件部件或软件层(也可以被称为软件库)。例如,在一个层中执行的代码可以调用在另一层中实现的功能,或者在一个层中执行的代码可以将参数传递到另一层。由于这种软件应用程序的模块化性质,可能存在安全漏洞,其中黑客可以从最初安装应用程序的合法装置提取软件层,将软件层集成到恶意应用程序中,并随后在另一装置上运行恶意应用程序。
本发明的实施方案分别以及一起解决了这些和其他问题。
发明内容
本发明的实施方案提供用于将软件应用程序安全地绑定到通信装置以防止应用程序的一个或多个软件层被提取并用在未授权装置上的技术。例如,应用程序可以划分为软件开发工具包(SDK)和本地开发工具包(NDK)。在一些实施方案中,安全敏感功能可以在NDK中实现,并且本文描述的技术可以防止从授权装置提取NDK并将其用在未授权装置上。
在一些实施方案中,一种用于安全地绑定应用程序的方法可以包括:将与计算装置相关联的装置标识符的集合发送到服务器;接收基于装置标识符的集合生成的服务器生成的动态装置标识符;以及在应用程序的初始化期间存储服务器生成的动态装置标识符。在应用程序的运行时执行期间,应用程序可以接收执行应用程序特定的任务的请求。响应于接收到请求,应用程序可以:生成运行时动态装置标识符;确定运行时动态装置标识符是否匹配服务器生成的动态装置标识符;当运行时动态装置标识符匹配服务器生成的动态装置标识符时,执行应用程序特定的任务;以及当运行时动态装置标识符不匹配服务器生成的动态装置标识符时,阻止执行应用程序特定的任务。
在一些实施方案中,一种通信装置可以包括处理器和耦合到处理器的存储器。存储器可以存储指令,所述指令在由处理器执行时致使通信装置执行操作以用于将应用程序安全地绑定到通信装置。在通信装置上的应用程序的初始化期间,应用程序可以将与计算装置相关联的装置标识符的集合发送到服务器,接收由服务器基于装置标识符的集合生成的服务器生成的动态装置标识符,并且存储服务器生成的动态装置标识符。在应用程序的运行时执行期间,应用程序可以接收执行应用程序特定的任务的请求。响应于接收请求,应用程序可以:生成运行时动态装置标识符,确定运行时动态装置标识符是否匹配服务器生成的动态装置标识符;当运行时动态装置标识符匹配服务器生成的动态装置标识符时,执行应用程序特定的任务;以及当运行时动态装置标识符不匹配服务器生成的动态装置标识符时,阻止执行应用程序特定的任务。
附图说明
图1示出根据一些实施方案的通信装置的实例的框图。
图2示出根据一些实施方案的用于将软件应用程序绑定到通信装置的过程的流程图。
图3示出根据一些实施方案的初始化过程通信流程图。
图4示出根据一些实施方案的运行时过程通信流程图。
图5示出根据一些实施方案的系统的实例的框图。
图6示出根据一些实施方案的便携式通信装置的实例的框图。
图7示出根据一些实施方案的应用程序过程通信流程图。
图8示出根据一些实施方案的应用程序可以执行的过程的流程图。
图9示出根据一些实施方案的应用程序可以使用的各种密钥。
具体实施方式
本发明的实施方案提供用以将软件应用程序安全地绑定到装置以防止从装置提取的软件库被用在未授权装置上的技术。在软件应用程序的第一次初始化期间(例如,当软件应用程序第一次被编译并安装在装置上时,或者第一次激活软件应用程序时),软件应用程序可以执行绑定算法,以从与软件应用程序相关联的应用程序服务器中获得动态装置标识符。动态装置标识符可以由服务器基于与装置相关联的装置标识符的集合生成。服务器生成的动态装置标识符可以存储为软件应用程序的一部分。在软件应用程序的运行时执行期间,软件应用程序可以生成运行时动态装置标识符,并且验证运行时动态装置标识符是否匹配来自初始化的服务器生成的动态装置标识符。如果两个动态装置标识符匹配,则当前执行软件应用程序的装置很可能是最初安装软件应用程序的同一装置,并且允许继续执行软件应用程序。如果运行时动态装置不匹配在初始化期间存储的服务器生成的动态装置标识符,则当前执行软件应用程序的装置可以是与最初安装软件应用程序的装置不同的装置。例如,如果已安装软件应用程序的原始装置被黑客攻击,而且执行的软件库是从原始装置提取的并且在未授权装置上运行,则可能发生这种情况。在第一次初始化期间获得的服务器生成的动态装置标识符为软件应用程序提供认证在运行时期间执行软件应用程序的装置的方式,因为未授权装置在运行时不具有适当的装置标识符来生成匹配的动态装置标识符。
在讨论本发明的一些实施方案的细节之前,对一些术语的描述可有助于理解各种实施方案。
“通信装置”可以是包括可与另一装置通信的一个或多个电子部件(例如,集成芯片)的装置。例如,通信装置可以是包括耦合到存储器的至少一个处理器的计算装置,所述存储器存储由处理器执行的指令或代码。“便携式通信装置”可以是可以由用户运输和操作的通信装置。便携式通信装置可以将远程通信能力提供给网络。便携式通信装置可以被配置成将数据或通信传输到其他装置并且从其他装置接收数据或通信。便携式通信装置可以采用移动装置的形式,诸如,移动电话(例如,智能电话、蜂窝电话等)、平板电脑、便携式媒体播放器、个人数字助理装置(PDA)、可穿戴计算装置(例如,手表)、健康监测装置、电子阅读器装置等,或者采用卡(例如,智能卡)或挂件等形式。便携式通信装置的实例还可以包括便携式计算装置(例如,膝上型电脑、上网本、超级本等)。便携式通信装置还可以采用车辆(例如,汽车)的形式,或者整合成车辆的一部分(例如,车辆的信息系统)。
“服务器计算机”可以包括功能强大的计算机或计算机集群。例如,服务器计算机可以是大型主机、小型计算机集群或像单元一样工作的一组服务器。在一个实例中,服务器计算机可以是耦合到网络服务器的数据库服务器。服务器计算机可以耦合到数据库并且可以包括用于服务于来自一个或多个客户端计算机的请求的任何硬件、软件、其他逻辑、或前述内容的组合。服务器计算机可以包括一个或多个计算设备并且可以使用各种计算结构、排列和编译中的任何一种来服务于来自一个或多个客户端计算机的请求。
“发行方”通常可以指代维护与便携式通信装置相关联的用户的账户的商业实体(例如,银行),诸如,在安装于便携式通信装置上的移动应用程序中注册的账户。发行方还可以将与账户相关联的账户参数发给便携式通信装置。发行方可以与主机系统相关联,所述主机系统代表发行方来执行发行方的一些或全部功能。
“商家”通常可以是参与交易并且可以出售商品或服务,或提供对商品或服务的访问的实体。
“收单方”通常可以是与特定商家或其他实体有商业关系的商业实体(例如商业银行)。一些实体可以执行发行方和收单方功能。一些实施方案可以包括这样的单个实体发行方-收单方。
“访问装置”可以是用于与商家计算机或交易处理网络通信并且与支付装置、用户计算机设备和/或用户移动装置交互的任何合适装置。访问装置通常可以位于任何合适的位置,诸如在商家的位置。访问装置可以是任何合适的形式。访问装置的一些实例包括POS装置、蜂窝电话、PDA、个人计算机(PC)、平板电脑、手持专用读取器、机顶盒、电子现金出纳机(ECR)、自动取款机(ATM)、虚拟现金出纳机(VCR)、营业亭、安全系统、访问系统、网站等。访问装置可以使用任何合适的接触或非接触操作模式,以发送或接收来自便携式通信装置或与便携式通信装置相关联的数据。在访问装置可以包括POS终端的一些实施方案中,任何适当的POS终端可以被使用,并且其可以包括阅读器、处理器和计算机可读介质。读取器可以包括任何适当的接触或非接触操作模式。例如,示例性读卡器可以包括用于与便携式通信装置交互的射频(RF)天线、光学扫描器、条形码读取器或磁条读取器。
读取[0023]“授权请求消息”可以是发送来请求授权交易的电子消息。授权请求消息可以发送到支付处理网络和/或支付卡的发行方。根据一些实施方案的授权请求消息可以符合ISO 8583,ISO 8583是用于交换与用户使用支付装置或支付账户进行的支付相关联的电子交易信息的系统的标准。授权请求消息可以包括可用来识别账户的信息。授权请求消息还可以包括额外数据元素,诸如服务代码、截止日期等中的一个或多个。授权请求消息还可以包括交易信息(诸如与当前交易相关联的任何信息,诸如交易金额、商家标识符、商家位置等),以及可以用来确定是否识别和/或授权交易的任何其他信息。授权请求消息还可以包括其他信息,诸如识别生成授权请求消息的访问装置的信息,关于访问装置的位置的信息等。
“授权响应消息”可以是对授权请求消息的电子消息回复。授权响应消息可以由发行金融机构或支付处理网络生成。授权响应消息可以包括(只作为实例)以下状态指示符中的一个或多个:批准-交易被批准;拒绝-交易不被批准;或呼叫中心-响应未决的更多信息,商家必须呼叫免费授权电话号码。授权响应消息还可以包括授权代码,所述授权代码可以是信用卡发卡银行响应于电子消息中的授权请求消息(直接地或者通过支付处理网络)返回给商家计算机的指示批准交易的代码。代码可以用作授权的证据。如上所述,在一些实施方案中,支付处理网络可以向商家生成或转发授权响应消息。
术语“认证”及其派生词可以指代可以验证端点(包括但不限于,应用程序、人、装置、过程和系统)的证书以确保端点是它们被宣称的对象的过程。
术语“验证”及其派生词可以指代利用信息来确定基础主题在一组给定的情况下是否有效的过程。验证可以包括任何信息比较以确保某些数据或信息是正确的、有效的、准确的、合法的和/或信誉良好的。
“令牌”可以包括某种信息的替代标识符。例如,支付令牌可以包括支付账户的标识符,它是账户标识符的替代,诸如主账号(PAN)。例如,令牌可以包括可以用作原始账户标识符的替代的一连串字母数字字符。例如,令牌“4900 0000 0000 0001”可以用于代替PAN“4147 0900 00001234”。在一些实施方案中,令牌可以是“保留格式的”,并且可以具有与现有的支付处理网络中使用的账户标识符一致的数字格式(例如,ISO 8583金融交易消息格式)。在一些实施方案中,令牌可以代替PAN使用,以发起、授权、结算或完成支付交易。在通常提供原始证书的其他系统中,令牌还可以用来表示原始证书。在一些实施方案中,可以生成令牌值,使得由令牌值恢复原始PAN或其他账户标识符不可以由计算得到。另外,在一些实施方案中,令牌格式可以被配置成使接收令牌的实体将其标识为令牌,并识别发行令牌的实体。
“实账户标识符”可以包括与支付账户相关联的原始账户标识符。例如,实账户标识符可以是由发行方针对卡账户(例如,信用卡、借记卡等)发行的主账号(PAN)。例如,在一些实施方案中,实账户标识符可以包括十六位数值,诸如,“4147 0900 0000 1234”。实账户标识符的前六位(例如,“414709”)可以表示可以标识与实账户标识符相关联的发行方的实际发行方标识符(BIN)。
“账户参数”可以指代与账户相关的可以用来在该账户上进行交易的信息。账户参数的实例可以包括可以用来识别用户的账户的信息(例如,实账户标识符、备选账户标识符、令牌等)、与账户的状态相关的数据或信息、用来生成密码信息的一个或多个密钥、与一个或多个密钥相关的数据或信息等。账户参数可以是半静态或动态的。动态账户参数可以是具有有限寿命的账户参数,且一旦过期,便不再可以用来进行交易,直到所述账户参数被补充、刷新或更新为止。动态账户参数可以在账户的使用期限期间被频繁地补充。半静态账户参数可以是具有比动态账户参数长的延长寿命的账户参数,并且可以不像动态账户参数那样被频繁地补充,或者在账户的使用期期间根本不补充。
“密钥”可以指代用在密码算法中以将输入数据变换成另一表示的一条信息。密码算法可以是将原始数据变换成备选表示的加密算法,或者是将加密信息变换回到原始数据的解密算法。密码算法的实例可以包括三重数据加密标准(TDES)、数据加密标准(DES)、高级加密标准(AES)等。
“密码”可以指某些信息的加密表示。密码可以由接收方用来确定密码生成器是否具有正确的密钥,例如,通过利用有效密钥对基础信息进行加密,并且将结果与所接收的密码进行比较。
“有限使用阈值”可以指代限制一条信息的使用的条件。当满足基础条件时,可以超出或耗尽有限使用阈值。例如,有限使用阈值可以包括指示一条信息有效的时间量的存活时间,并且一旦已经经过所述时间量,便超出或耗尽所述有限使用阈值,并且这条信息可以变得无效而且不再可以被使用。作为另一实例,有限使用阈值可以包括一条信息可以使用的次数,并且一旦这条信息已经用了所述次数,便超出或耗尽有限使用阈值,并且这条信息可以变得无效而且不再可以被使用。
“交易处理网络”可以包括可以处理并路由交易请求消息的网络。示例性交易处理网络可以包括数据处理子系统、网络和用来支持并递送授权服务、异常文件服务、交易评分服务以及清算与结算服务的操作。示例性交易处理网络可以包括VisaNetTM。诸如VisaNetTM的交易处理网络能够处理信用卡交易、借记卡交易以及其他类型的商业交易。VisaNetTM具体可以包括处理授权请求的VIP系统(账户集成支付系统)和执行清算与结算服务的BaseII系统。
“公/私钥对”可以指代由实体生成的一对关联的加密密钥。公钥可以用于公共功能,诸如加密要发送给实体的消息,或用于对应该由实体做出的数字签名进行验证。另一方面,私钥可以用于私用功能,诸如对接收到的消息解密或应用数字签名。公钥通常会由被称为证书机构(CA)的主体进行授权,证书机构将公钥存储在数据库中并将其分配给请求它的任何其他实体。私钥一般会被保持在安全存储介质中并且通常只有实体知道。然而,本文中描述的密码系统可以以用于恢复丢失的密钥并避免数据丢失的密钥恢复机制为特征。公钥和私钥可以是任何适当格式,包括基于Rivest-Shamir-Adleman(RSA)或椭圆曲线密码学(ECC)的格式。
“数字签名”可以指基于公/私钥对应用算法的结果,这种算法允许签名方显示,并且允许验证方验证文件的真实性和完整性。签名方借助于私钥起作用,验证方借助于公钥起作用。这个过程证明发送者的真实性、已签名文档的完整性和所称的不可否认性原则,所述原则不允许否认已经签名的内容。证书或包括签名方的数字签名的其他数据被称为是由签名方“签名的”。
“证书”或“数字证书”可以包括使用数字签名将公钥与关联身份的数据绑定的电子文件或数据文件。证书可以包括一个或多个数据字段,例如身份的合法名称、证书的序列号、证书的起始有效期和终止有效期、证书相关许可等。证书可以包含指示证书有效的第一个日期的“起始有效”日期,以及指示证书有效的最后日期的“终止有效”日期。证书还可以包含证书中包括数据字段的数据的散列。
“现时数(nonce)”可以指代数字、字符串、位序列或其他数据值。现时数可以是随机或伪随机生成的。现时数可以具有足够长度,使得将不可能多次独立地生成相同的现时值(nonce value)。现时数可以用作种子值以生成密钥或其他类型的认证数据。现时数也可以被称为盐值(salt value)。
“敏感信息”可以指代期望防止未授权使用的信息,或期望保护隐私的信息。例如,敏感信息可以指代机密信息,或者可以指代可以由未授权实体使用来进行欺诈诸如欺诈性交易或身份盗用的信息。敏感信息的实例可以包括商业秘密、公司机密信息、机密法律文件、受政府保护的数据等。敏感信息的实例还可以包括个人信息,诸如,健康数据、社会保险号、联系人信息、位置信息和/或诸如账户标识符、奖励信息、忠诚计划信息等的金融信息。敏感信息还可以包括可以用来对信息进行加密或解密的密码密钥。
现在将描述本发明的一些实施方案的细节。
I.安全的应用程序绑定概述
图1示出根据一些实施方案的通信装置100。通信装置100可以是计算装置,并且在一些实现方式中,可以是诸如移动装置的便携式通信装置。通信装置100可以包括诸如一个或多个处理器的装置硬件104、操作系统114以及在通信装置100上运行的应用程序112。在一些实施方案中,应用程序122可以在诸如虚拟机110的应用程序环境110内执行。
应用程序112可以包括多个软件层或软件库。例如,应用程序122可以包括软件层120和软件层130。软件层120和130可以由相同开发者提供或者由不同实体提供。在一些实施方案中,软件层120和130可以用相同或不同的编程语言编写。例如,软件层120可以用高级编程语言编写,并且可以实现为软件开发工具包(SDK)。软件层130可以是诸如本地开发工具包(NDK)的本地库,并且可以用低级编程语言编写。在一些实施方案中,软件层130可以是可以在应用程序环境110中执行的各种应用程序之间共享的本地库。软件层120可以与软件层130通信,以经由这两个软件层之间的接口来交换数据并调用在软件层130中实现的功能,反之亦然。
在一些实施方案中,操作系统114可以是诸如Android的移动操作系统。软件层120可以用Java编写,并且软件层130可以用C或C++编写。在此类实施方案中,软件层120与130之间的接口可以是Java本地接口(JNI)。在应用程序112的编译期间,Java软件层120源代码可以使用诸如Javac的Java编译器而被编译成Java类文件。允许软件层120调用软件层130中的功能的C或C++代码头可以由诸如Javah的头文件生成器生成。本地C或C++软件层130源代码可以被编译并链接到头文件以形成共享对象(.so)动态库文件。Java类文件和动态库文件可以被打包并压缩到应用程序包文件(例如,Android应用程序包(.apk)文件)中。该应用程序包文件可以从应用程序商店下载到通信装置100上,并且用于将应用程序112安装到通信装置100上。在一些实施方案中,安装应用程序112会将虚拟机实例实例化,诸如应用程序112将从中执行的Dalvik虚拟机实例。
在一些实施方案中,应用程序112可以是使用或处理敏感信息的应用程序。例如,应用程序112可以使用诸如加密密钥的某些敏感数据资产来执行密码操作,或者可以访问或使用诸如个人或金融信息的敏感信息。与敏感信息的处理相关的功能(可以称为安全敏感功能)可以在本地软件层130中实现,而诸如用户接口和外部通信(例如,网络)功能性的基本功能可以在软件层120中实现。由于应用程序112的模块化性质,在没有适当的保护措施的情况下,实现安全敏感功能的本地软件层130可能容易受到寻求包括基础敏感信息的黑客攻击的影响。例如,可以从应用程序包文件或从装置上的软件应用程序112的安装版本中直接提取实现本地软件层130的共享对象(.so)动态库文件。随后可以分解动态库文件以对代码进行反向工程,并且将其整合到恶意应用程序中。整合了受损动态库的恶意应用程序可以安装在未授权装置上,并且可以被执行来访问敏感信息并执行安全敏感功能。
图2示出根据一些实施方案的可以执行来降低软件应用程序被在未授权装置上执行的风险的软件应用程序绑定过程200的流程图。在通信装置上的软件应用程序的第一次初始化期间(例如,当软件应用程序第一次被下载并安装在通信装置上时,或者在第一次激活软件应用程序期间,例如,在软件应用程序预加载在通信装置上的情况下),软件应用程序可以执行绑定算法以将软件应用程序绑定到通信装置。在框202处,软件应用程序可以获得基于与通信装置相关联的装置标识符的集合生成的绑定信息。例如,软件应用程序可以将装置标识符的集合发送到与软件应用程序相关联的服务器,并且服务器可以发回服务器根据装置标识符生成的绑定信息。在框204处,软件应用程序可以存储绑定信息,软件应用程序将在运行时期间使用所述绑定信息来验证执行软件应用程序的装置。
在软件应用程序的运行时执行期间的某一稍后时间,在框206处,软件应用程序可以根据通信装置的那组装置标识符再生成绑定信息。例如,在一些实施方案中,在软件应用程序处接收执行应用程序特定的任务(例如,安全敏感功能)的请求可以触发软件应用程序再生成并验证绑定信息。在框208处,在执行应用程序特定的任务之前,软件应用程序可以将再生成的绑定信息与在初始化期间存储的绑定信息进行比较,以验证再生成的绑定信息匹配存储的绑定信息。如果再生成的绑定信息匹配存储的绑定信息,则最初安装软件应用程序的同一装置可能是当前执行软件应用程序的同一装置,并且可以继续执行应用程序特定的任务。如果再生成的绑定信息不匹配存储的绑定信息,则当前执行软件应用程序的装置可能是未授权装置,并且软件应用程序可以停止执行应用程序特定的任务。
II.初始化过程
图3示出根据一些实施方案的在通信装置上的应用程序312的第一次初始化期间可以在服务器390与软件应用程序312之间执行的初始化过程流300。服务器390可以由应用程序312的应用程序提供方或者为应用程序312提供服务的服务提供方操作。应用程序312可以包括本地开发工具包330(例如,用诸如C或C++的本地编程语言编写的软件层130)和软件开发工具包320(例如,用诸如Java的高级编程语言编写的软件层120)。由应用程序312执行的用于外部通信(例如,与服务器390通信)的功能可以在SDK 320中实现。在一些实施方案中,可以使用诸如传输层安全(TLS)、安全套接层(SSL)等的安全通信协议来执行服务器390与应用程序312之间的通信。安全通信协议可以建立用于对应用程序312与服务器390之间的通信进行加密的会话密钥。应注意,以下讨论的特定密钥可以是单独的并且不同于安全通信协议的会话密钥,以及除了对服务器390与应用程序312之间的通信信道的加密之外,还执行使用以下讨论的特定密钥的任何加密。
在执行初始化过程流300之前,通信装置的用户可以从应用程序商店将应用程序312下载到通信装置上。或者,应用程序312可以由通信装置的制造商或者由诸如移动网络运营商等的通信装置的分销商或销售商预加载到通信装置上。当通信装置的用户在下载应用程序312之后开始安装应用程序312时,或者当用户第一次激活并在通信装置上运行应用程序312时,可以执行初始化过程流300。
在步骤352处,NDK 330可以检索与服务器390相关联的服务器公钥。服务器公钥可以嵌入NDK 330的代码中(例如,嵌入共享对象动态库文件中),并且分配为应用程序312的一部分。服务器公钥是服务器公私钥对的公共部件,并且服务器公钥嵌入应用程序312中以便给应用程序312提供加密密钥,以对由应用程序312发送到服务器390的信息进行加密。服务器私钥维持在服务器390处并且由服务器390使用来对服务器从应用程序312接收的信息进行解密。
在步骤354处,NDK 330可以生成包括装置私钥和装置公钥的装置密钥对。例如,装置密钥对可以是RSA(Rivest-Shamir-Adleman)密钥对。在一些实施方案中,NDK 330可以从服务器390请求现时数(未示出),并且基于现时数生成装置密钥对。在一些实施方案中,可以在不从服务器390请求现时数的情况下由应用程序312生成装置密钥对。装置私钥由应用程序312使用来对由应用程序312发送到服务器390的信息进行数字签名,并且对从服务器390接收的信息进行解密。在步骤356处,将装置公钥发送到服务器390,使得服务器390可以认证被装置私钥签名的信息。装置公钥也由服务器390使用来对在初始化期间发送到应用程序312的信息进行加密。
在步骤358处,SDK 320(或NDK 330)可以包含应用程序312的应用程序签名。例如,可以通过计算应用程序312的应用程序文件(例如,应用程序包文件的散列)上的散列值来获得应用程序签名。应用程序签名还可以包括与应用程序312相关联的元数据,诸如,版本号、来源等。在步骤360处,将应用程序签名从SDK 320发送到服务器390。在一些实施方案中,可以用从步骤352中检索的服务器公钥对应用程序签名进行加密并且以加密形式将其发送到服务器390。应用程序签名也可以被装置私钥签名。
在步骤362处,服务器390接收应用程序签名,并且对照一组白名单应用程序签名来验证应用程序签名。白名单应用程序签名是来自服务器390维持的授权应用程序发布者和开发者的经批准已知良好应用程序签名,并且由服务器390使用来验证应用程序的完整性(例如,应用程序未被黑客攻击或修改)和/或应用程序的来源(例如,应用程序是从授权来源下载的或者源于授权来源)。如果来自应用程序312的应用程序签名未能匹配经批准白名单应用程序签名中的一个,则服务器390可以向应用程序312通知应用程序312是未经授权的应用程序并停止对应用程序312的响应。如果从应用程序312发送的应用程序签名匹配经批准白名单应用程序签名中的一个,则应用程序312的初始化可以继续。
在一些实施方案中,响应于验证来自应用程序312的应用程序签名匹配白名单应用程序签名中的一个,在步骤364处,服务器390可以生成用于导出装置导出密钥(DDK)的现时数(可以被称为DDK导出现时数)。在步骤366处,服务器390可以将DDK导出现时数发送到SDK 320,SDK 320随后将DDK导出现时数转发到NDK 330。在一些实施方案中,服务器390可以在将DDK导出现时数发送到SDK 320之前对DDK导出现时数进行加密。例如,可以使用装置公钥对DDK导出现时数进行加密。在步骤368处,服务器390可以从DDK导出现时数导出装置导出密钥,并且将得到的DDK与应用程序312相关联。例如,可以通过将密钥导出函数应用于DDK导出现时数来生成DDK。在步骤370处,NDK 330根据从服务器390接收的DDK导出现时数来生成它自己的DDK。在一些实施方案中,可以由应用程序312使用包括代码加密和代码混淆技术的白盒密码术来保护DDK导出现时数和/或DDK。
装置导出密钥(DDK)是由服务器390和应用程序312使用来对在它们之间发送的信息进行加密和解密的对称密钥。在一些实施方案中,一旦在两端生成了DDK,就可以利用DDK对在服务器390与应用程序312之间发送的另外信息进行加密,而不是利用装置和服务器公钥。在一些实施方案中,一旦生成了DDK,就可以首先利用DDK对在服务器390与应用程序312之间发送的另外信息进行加密,并且随后使用相应的装置和服务器公钥进一步加密。
此时,在初始化过程流300中,已建立了用于将应用程序312绑定到通信装置的必要密钥,并且现在可以生成将应用程序312绑定到通信装置的绑定信息。在步骤372处,NDK330从通信装置中检索装置标识符的集合。装置标识符的集合可以包括静态装置标识,诸如,通信装置的硬件标识符、通信装置的一个或多个部件的硬件标识符,和/或用于将通信装置绑定到用户的其他静态标识符。例如,装置标识符可以包括以下一个或多个:通信装置的唯一装置标识符、通信装置的电子序列号、通信装置的部件的序列号(例如,订户身份模块(SIM)序列号)、通信装置的媒体访问控制(MAC)地址、国际移动终端设备标识(IMEI)号、国际移动订户标识(IMSI)号、网络服务框架标识符等。在一些实施方案中,装置标识符中的一个或多个可以是不可变的,并且在通信装置的寿命期间不改变。在一些实施方案中,只要通信装置保持与同一用户相关联,装置标识符中的一个或多个就可以是不可变的。
在步骤376处,NDK 330向SDK 320提供装置标识符的集合以发送到服务器390。装置标识符的集合可以包括多个装置标识符。在一些实施方案中,可以使用三至五个装置标识符。在步骤378处,服务器390接收装置标识符的集合,并且基于装置标识符的集合生成动态装置标识符(DDID)。例如,可以通过计算装置标识符的集合上的散列值来生成DDID。在一些实施方案中,可以使用诸如消息摘要变体(例如,MD5、MD4等)或安全散列算法变体(例如,SHA-3、SHA-2、SHA-1等)的散列函数将散列值计算为散列消息认证码(HMAC)。在一些实施方案中,也可以基于装置标识符的集合和由服务器390生成的DDID盐生成DDID。例如,可以将DDID盐与装置标识符的集合进行组合以形成对散列函数的输入,或者可以将DDID盐用作散列函数的密钥。在一些实施方案中,代替使用接收到的装置标识符的集合中的每个装置标识符的全部长度,可以使用每个装置标识符的选定部分。例如,可以使用每个装置标识符的最后一个或两个字节,或者可以使用来自每个装置标识符的不同字节(例如,第一装置标识符的第一字节、第二装置标识符的第二字节等)。
在步骤382处,将由服务器390生成的DDID(可以被称为服务器生成的DDID)发送到应用程序312。在一些实施方案中,服务器生成的DDID利用DDK进行加密,并且以加密形式发送到应用程序312。如果在生成服务器生成的DDID时使用DDID盐,则也将DDID盐发送到应用程序312。DDID盐也可以利用DDK进行加密。DDID和/或DDID盐也可以由服务器390使用服务器私钥进行签名。在步骤384处,SDK 320(或NDK 330)存储服务器生成的DDID。如果在生成服务器生成的DDID时使用DDID盐,则可以由NDK 330存储DDID盐。在一些实施方案中,DDID和DDID盐由应用程序312以其DDK加密形式存储。在一些实施方案中,DDID和/或DDID盐可以存储为应用程序312中的代码的一部分(例如,共享对象(.so)动态库文件的一部分),并且可以由应用程序312使用包括代码加密和代码混淆技术的白盒密码术进行保护。
在一些实施方案中,在服务器生成的DDID已并入到应用程序312中之后,也可以通过应用程序312计算绑定后应用程序摘要(例如,校验和或散列)。由于绑定后应用程序摘要将服务器生成的DDID考虑在内,因此,一个装置上的绑定后应用程序摘要可以不同于另一装置上的绑定后应用程序摘要。绑定后应用程序摘要可以由应用程序312存储,并且可以用作另一验证机制来在应用程序312的运行时执行期间验证通信装置。
III.运行时过程
在执行初始化过程流300之后,现在由DDID将应用程序312绑定到通信装置。在应用程序312的运行时期间,应用程序312使用DDID来验证执行应用程序312的通信装置。应用程序312可以在每次启动或开始应用程序312时和/或每次应用程序312接收执行特定应用程序特定的任务(例如,执行安全敏感函数)的请求时验证DDID。
图4示出根据一些实施方案的在应用程序312在通信装置上执行时的运行时期间可以由软件应用程序312执行的运行时过程流400。在步骤452处,应用程序312接收执行应用程序312被编程来执行的应用程序特定的任务的请求。响应于用户与应用程序312交互(例如,用户轻击通信装置的用户接口以指示应用程序312执行功能),或者响应于系统进程与应用程序312交互(例如,另一应用程序或操作系统与应用程序312交互),SDK320可以接收所述请求。执行应用程序特定的任务的请求可以是例如执行安全敏感功能的请求,诸如,访问或使用敏感信息(例如,个人或金融账户数据)。应注意,在一些实施方案中,应用程序312可以允许在不需要验证DDID的情况下执行一些应用程序特定的任务(例如,诸如在用户接口上显示消息的基本功能),而其他应用程序特定的任务(例如,安全敏感任务)可能需要在继续执行任务之前验证DDID。
在步骤454处,将执行应用程序特定的任务的请求从SDK 320转发到NDK 330。在步骤456处,响应于接收到执行应用程序特定的任务的请求,NDK 330在运行时从执行应用程序312的通信装置中检索用于生成DDID的装置标识符的集合。如果在生成服务器生成的DDID时由服务器生成DDID盐,则检索DDID盐并且必要时利用DDK对其进行解密。在步骤458处,NDK330使用如上所述的服务器先前用于生成服务器生成的DDID的相同算法(例如,HMAC)来生成运行时DDID。
在步骤460处,如果服务器生成的DDID先前由SDK 320存储,则NDK 330从SDK 320中检索服务器生成的DDID。或者,如果服务器生成的DDID先前由NDK 330存储,则NDK 330从NDK 330中检索服务器生成的DDID。在步骤462处,NDK 330将运行时DDID与服务器生成的DDID进行比较,以确定运行时DDID是否匹配服务器生成的DDID。在一些实施方案中,服务器生成的DDID可以以其加密形式存储,并且NDK 330可以使用DDK对运行时DDID进行加密,并且将服务器生成的DDID的加密版本与加密的运行时DDID进行比较。在一些实施方案中,可以使用DDK对服务器生成的DDID进行解密,并且服务器生成的DDID可以与运行时DDID以它们的未加密形式进行比较。
在步骤464处,如果运行时DDID匹配服务器生成的DDID;则确定当前执行应用程序312的通信装置为最初安装应用程序312并执行初始化过程300的同一通信装置,并且NDK330继续执行应用程序特定的任务。在步骤466处,NDK 330将执行应用程序特定的任务的结果提供给SDK 320。如果运行时DDID不匹配服务器生成的DDID;则当前执行应用程序312的通信装置可以是与最初安装应用程序312并执行初始化过程300的装置不同的装置。在这种情况下,NDK 330可以防止执行应用程序特定的任务。在一些实施方案中,NDK 330可以通知SDK 320在通信装置的用户接口上显示错误消息,以指示执行应用程序特定的任务的请求未被授权。
在一些实施方案中,绑定后应用程序摘要可以用作用于应用程序312的运行时验证的另外机制。例如,除了验证DDID之外,当NDK 330接收执行应用程序特定的任务的请求时,NDK 330可以在运行时重新计算应用程序312的绑定后应用程序摘要,并将其与先前存储的绑定后应用程序摘要进行比较以验证应用程序312在初始化之后未被修改。在一些实施方案中,DDID验证和绑定后应用程序摘要验证可以由相同或不同的事件触发。例如,每次启动或开始应用程序312时,可以触发DDID和绑定后应用程序摘要验证两者,而当接收到执行应用程序特定的任务的请求时,仅可以触发DDID验证而不是绑定后应用程序摘要验证。
IV.交易应用程序实例
图5示出根据一些实施方案的可以使用本文描述的安全应用程序绑定技术的示例性系统500的框图。系统500可以是例如用于进行基于云的交易的基于云的交易系统。系统500包括便携式通信装置510(例如,移动装置)、基于云的交易平台(CBP)580和移动应用程序平台(MAP)570。CBP 580可以使用一个或多个计算装置来实现,并且可以与发行方、支付处理器和/或其他合适的实体相关联或者由其操作。CBP 580实现包括账户管理和账户参数生成与补充的一组功能,以使得能够经由便携式通信装置510来进行基于云的交易。MAP570用来促进CBP 580与便携式通信装置510中的移动应用程序514(例如,交易应用程序)之间的通信。MAP 570可以使用一个或多个计算装置来实现,并且可以与移动应用程序514(例如,移动软件应用程序)的服务提供方(诸如,发行方、移动钱包提供方、商家和/或其他合适的实体)相关联或者由其操作。在一些实施方案中,MAP 570可以与和CBP 580相同的实体相关联或由其操作,或者它们可以分开。MAP 570用来对移动应用程序514与CBP 580之间的请求起中间作用,并且确保一旦例如经由通信网络582(例如,互联网、移动或蜂窝网络等)建立到便携式通信装置510的连接,便履行由任一方发起的请求和响应。应理解,在一些实施方案中,CBP 580、MAP 570和/或发行方或主处理系统572的一个或多个功能可以集成到相同的计算机或不同的计算机中。
便携式通信装置510可以用来进行由CBP 580和/或MAP 570促成的基于云的支付交易。便携式通信装置510包括装置硬件532、移动操作系统(OS)522以及应用程序环境512。装置硬件532包括可以将信息非接触地传送或以其他方式呈现给另一装置(诸如,访问装置560的非接触式阅读器562)的非接触式接口534。非接触式接口534的实例可以包括近场通信(NFC)接口,其可以使用射频或者诸如蓝牙、蓝牙低功耗(BLE)、Wi-Fi等其他无线通信协议来发送和接收通信。非接触式接口534的实例还可以包括诸如显示器的光学接口,以呈现诸如快速响应(QR)码、条形码等信息。
便携式通信装置510的应用程序环境512可以包括移动应用程序514,诸如由服务提供方提供的交易应用程序。例如,如果移动应用程序514的服务提供方是发行方,则实现交易应用程序的移动应用程序514可以是移动银行应用程序或移动支付应用程序。如果服务提供方是移动钱包提供方,诸如,支持多个发行方的移动网络运营商或第三方钱包提供方,则实现交易应用程序的移动应用程序514可以是移动钱包应用程序。至于商家,移动应用程序514可以是消费者可以从中进行电子商务或销售点交易的商家自己的交易应用程序,或者是支持多个商家的移动钱包应用程序。
在一些实施方案中,移动应用程序514可以包括集成到移动应用程序514中以支持基于云的交易的装置上基于云的交易逻辑。装置上基于云的交易逻辑执行功能以促进基于云的交易,诸如,以便获取被提供用于支付交易的账户参数并将其递送到移动操作系统522,以便通过非接触式接口534进行传输。例如,装置上基于云的交易逻辑可以使用从CBP580提供的密码密钥(例如,有限使用密钥),以生成通过非接触式接口传输到访问装置560的交易密码,以便进行支付交易。交易密码可以发送到交易处理网络584,以获得支付交易的授权。装置上基于云的交易逻辑也管理在已经开通账户之后提供的初始服务配置文件参数,以确保发起对账户参数补充和其他账户参数管理活动的请求。
为了开通便携式通信装置510以用于基于云的支付交易,CBP580可以用来配置与发行方相关联的账户资产组合(portfolio)并且向便携式通信装置510提供账户参数,以便在进行基于云的交易时使用。由CBP 580建立的账户资产组合可以包括诸如风险参数(例如,速度控制)的特性,其管理所开通的装置上的账户参数何时将需要针对每个资产组合中的账户进行刷新的触发因素。为了确保一致的性能和可用性,可以由CBP 580实现可在服务配置文件中配置的最小参数的集合。为了确保根据账户资产组合的服务配置文件中指定的规则来处理基于云的支付交易,CBP 580在已经启用的账户的使用期限期间执行各种核心功能。这些功能可以包括开通、活动账户管理、支付的确认、交易处理、生命周期管理以及后付制。
在账户被开通作为基于云的支付账户之前,CBP 580可以创建资产组合的服务配置文件。开通可以包括获得注册账户、创建账户信息(诸如,备选主账号(PAN)或者充当PAN替代的令牌),并且已经为资产组合建立继承服务配置文件。一旦开通账户,相关服务配置文件细节就与交易处理和装置上基于云的支付逻辑两者共享,以便确保可以在交易处理时和在消费者使用移动应用程序期间完成决策。
一旦开通账户,就可以由CBP 580执行活动账户管理。活动账户管理可以从交易处理活动或者从移动应用程序活动发起。在已经开通账户之后,活动账户管理能力生成将部署到便携式通信装置510的账户参数的始集。账户参数可以包括在开通期间生成的账户信息(例如,备选PAN或令牌)以及动态信息,以确保账户参数的集合一旦递送到装置就仅具有有限的用途。动态信息可以包括有限使用密码密钥或动态数据,取决于支持哪种类型的交易。例如,动态信息可以包括用于计算密码的有限使用密码密钥,以及用于支持旧有的动态卡验证值或基于代码的实现方式的有限使用动态数据。
在交易处理期间,如果由CBP 580为特定账户维持的服务配置文件参数表明便携式通信装置510上的账户参数需要替换,则CBP 580的活动账户管理能力可以经由MAP 570连接到便携式通信装置510,以补充账户参数。同样地,如果存储在便携式通信装置510上的装置上服务配置文件参数表明需要或就快需要账户参数补充(即,通过监测账户参数阈值),则移动应用程序514可以向CBP 580请求账户参数补充。
一旦已经开通便携式通信装置510以进行基于云的支付,就可以经由便携式通信装置510通过与访问装置560(例如,在商家位置处)的非接触式阅读器562交互来进行交易。访问装置560的部件可以包括销售点(POS)终端564和/或电子现金出纳机566。访问装置560可以耦合到收单方574(例如,经由未示出的商家计算机)。收单方574可以经由交易处理网络584连接到发行方或主处理系统572。交易处理网络584可以包括一个或多个服务器计算机。服务器计算机通常是功能强大的计算机或计算机集群。例如,服务器计算机可以是大型主机、小型计算机集群或像单元一样工作的一组服务器。在一个实例中,服务器计算机可以是耦合到网络服务器的数据库服务器。交易处理网络584可以使用任何适当的有线或无线网络,包括互联网。
交易处理网络584可以包括数据处理子系统、网络和用来支持和传送授权服务、异常文件服务、交易评分服务以及清算与结算服务的操作。示例性交易处理网络可以包括VisaNetTM。诸如VisaNetTM的交易处理网络能够处理信用卡交易、借记卡交易以及其他类型的商业交易。VisaNetTM具体包括处理授权请求的VIP系统(Visa集成支付系统)和执行清算与结算服务的Base II系统。
实体中的每一个(例如,收单方1574、交易处理网络584、发行方或主机处理系统572)可以包括一个或多个计算机,以实现通信或者执行本文所述的一个或多个功能。
为了进行基于云的支付交易,便携式通信装置510的用户可以使便携式通信装置510轻击访问装置560的非接触式阅读器562(例如,经由NFC),或在便携式通信装置510的屏幕上显示可以由访问装置560的非接触式阅读器562(例如,光学扫描器或阅读器)扫描的图像(诸如,条形码或QR码)。在一些实施方案中,便携式通信装置510可以向访问装置560提供账户标识符(例如,备选PAN、令牌等)和另外信息,诸如,有限使用账户参数或从有限使用账户参数中导出的信息。例如,账户标识符和/或另外信息(例如,交易密码)可以用由访问装置560扫描的条形码或QR码进行编码,或者账户标识符和/或另外信息可以经由NFC传输到访问装置560。在一些实施方案中,有限使用账户参数可以包括交易密码。
访问装置560或耦合到访问装置560的商家计算机可以生成包括账户标识符和另外信息(例如,有限使用账户参数或者从有限使用账户参数中导出的信息)的授权请求消息,并且将授权请求消息转发到收单方574。授权请求消息随后发送到交易处理网络584。交易处理网络584随后将授权请求消息转发到与账户(与便携式通信装置510相关联)的发行方相关联的对应发行方或主处理系统572。
在发行方或主处理系统572接收到授权请求消息之后,可以剖析授权请求消息,并且授权请求消息中的信息可以发送到CBP 580以进行验证。随后将授权响应消息发送回交易处理网络584以指示当前交易被授权(或未被授权)。交易处理网络184随后将授权响应消息转发回到收单方574。在一些实施方案中,即便发行方或主处理系统572已经授权交易,交易处理网络584仍可以拒绝交易,例如,取决于欺诈风险分数的值或者取决于有限使用账户参数是否被CBP 580验证。收单方574随后将授权响应消息发送到商家计算机和/或访问装置560。授权响应结果可以由访问装置560显示,或者可以在物理收条上打印出来。或者,如果交易是在线交易,则商家可以提供网页或授权响应消息的其他指示,作为虚拟收条。收条可以包括交易的交易数据。
在一天结束时,可以由交易处理网络584进行常规的清算与结算过程。清算过程是在收单方和发行方之间交换财务细节的过程,以利于发布到顾客的支付账户,并核对用户的结算位置。
图6示出便携式通信装置601(例如,实现便携式通信装置510)的框图,其中可以实现本文中所述的过程的一些实施方案。便携式通信装置601可以包括耦合到存储器602的装置硬件604。装置硬件604可以包括处理器605、通信子系统609、用户接口606、显示屏607(其可以是用户接口606的一部分),以及非接触式接口608。处理器605可以被实现为一个或多个集成电路(例如,一个或多个单核或多核微处理器和/或微控制器),并且被用来控制便携式通信装置601的操作。处理器605可以响应于存储在存储器602中的程序代码或计算机可读代码来执行各种程序,并且可以维护多个同时执行的程序或过程。通信子系统606可以包括一个或多个RF收发器和/或连接器,所述RF收发器和/或连接器可以由便携式通信装置601使用以便与其他装置通信和/或与外部网络连接。用户接口606可以包括输入元件和输出元件的任何组合,以便允许用户与便携式通信装置601交互并且调用其功能。在一些实施方案中,显示屏607可以是用户接口606的一部分。
非接触式接口608可以包括一个或多个RF收发器,以便与访问装置的非接触式阅读器交互以进行交易(例如,支付交易、访问交易、信息交换等)。在一些实施方案中,可以由移动OS 614使用卡模拟API 616来访问非接触式接口608,而不需要使用安全元件。在一些实施方案中,显示器607也可以是非接触式接口608的一部分,并且例如用于使用QR码、条形码等来执行交易。
存储器602可以使用任何数量的非易失性存储器(例如,快闪存储器)和易失性存储器(例如,DRAM、SRAM)的任何组合或者任何其他非暂时性存储介质或其组合介质来实现。存储器602可以存储移动OS 614和其中驻留一个或多个移动应用程序的移动应用程序环境610,所述移动应用程序包括将由处理器605执行的交易应用程序612(例如,移动钱包应用程序、移动银行应用程序、移动支付应用程序、商家应用程序等)。在一些实施方案中,移动OS 614可以实现一组卡模拟API 616,其可以由交易应用程序612调用以便访问非接触式接口608来与访问装置交互。
根据一些实施方案,交易应用程序612可以包括多个软件层。例如,交易应用程序612可以包括软件层620(例如,SDK)和软件层630(例如,NDK)。软件层620可以包括用来实现诸如用户接口功能的非安全敏感功能的一组公共API,以及可以调用在软件层630中实现的安全敏感功能的功能。软件层620可以用诸如Java的高级编程语言编写。软件层630可以包括本地库以实现安全敏感功能,诸如令牌请求634、账户参数补充636、密码生成638等。软件层630可以用诸如C或C++的低级编程语言编写。
根据一些实施方案,可以使用本文描述的安全绑定技术来将交易应用程序612绑定到便携式通信装置601。用于生成用作绑定信息的动态装置标识符(DDID)的初始化过程类似于上文参考图3描述的初始化过程流300,并因此不需要重复其详细描述。在一些实施方案中,可以利用基于云的交易平台(CBP)或与并入有基于云的交易平台功能的实体(例如,发行方、交易处理器等)相关联的计算机来执行用于绑定交易应用程序612的初始化过程。例如,服务器生成的DDID可以由CBP生成。
图7示出根据一些实施方案的可以由交易应用程序612执行的过程流700。在使用交易应用程序612进行交易之前,便携式通信装置的用户可以提供关于交易应用程序620的账户信息,以注册支付账户(例如,银行或信用卡账户)。在步骤702处,SDK 620可以将账户信息提供到CBP 580,以注册用于基于云的交易服务的账户。
在步骤704处,CBP 580可以利用账户的发行方来验证账户信息(如果发行方是与CBP 580不同的实体的话),并且生成包括用于提供给交易应用程序612的密码密钥的账户参数。密码密钥被交易应用程序612用作密码密钥,以在与便携式通信装置进行的交易期间生成交易密码。在一些实施方案中,在密钥密码只可以在有限的时间内使用或用于有限数量的交易的意义上,密码密钥可以是有限使用密钥(LUK),并且在耗尽有限的使用时可需要加以更新或补充。LUK可以与限制LUK的使用的一个或多个有限使用阈值的集合相关联,其中一旦LUK的使用被耗尽或超出一个或多个有限使用阈值的集合,便将拒绝使用所述LUK进行的进一步交易,即使基础账户仍然信誉良好。将实施的一个或多个有限使用阈值的集合可以例如由账户的发行方或由提供基于云的交易服务的CBP 580确定。一个或多个有限使用阈值的集合可以包括以下各项中的至少一个:指示LUK有效的持续时间的存活时间;其中LUK有效的预定数量的交易;和/或指示其中LUK有效的一个或多个交易合计的总交易金额的累计交易金额;或其任何组合。在一些实施方案中,提供给交易应用程序612的账户参数还可以包括可用作账户标识符的替代的令牌。
在步骤706处,CBP 580利用DDK对包括密码密钥和/或令牌的账户参数进行加密,并且将包括密码密钥和/或令牌的加密账户参数发送到应用程序612。在步骤710处,SDK620(或NDK 330)存储包括密码密钥和/或令牌的加密账户参数。此时,已提供交易应用程序612,并且用户可以开始使用便携式通信装置和交易应用程序612来进行交易。
在交易应用程序612的运行时执行期间,在步骤712处,交易应用程序612可以接收生成交易密码以进行交易的请求。响应于用户使用便携式通信装置发起交易,SDK 620可以接收请求。例如,用户可以接近访问装置来晃动便携式通信装置以发起交易,或者可以接合用户接口元件(例如,按下由便携式通信装置的用户接口上的交易应用程序612显示的“支付”按钮)以发起交易。交易应用程序612可以从访问装置获得生成交易密码必需的另外信息,诸如,动态交易数据(例如,交易金额等)。
在步骤714处,将生成交易密码的请求从SDK 620转发到NDK630。在步骤716处,响应于接收到生成交易密码的请求,NDK 660从当前执行交易应用程序612的便携式通信装置检索用于生成DDID的装置标识符的集合。如果DDID盐由CBP 580使用来生成服务器生成的DDID,则检索DDID盐并且必要时利用DDK对其进行解密。在步骤718处,NDK 630使用如上所述的用于生成服务器生成的DDID的相同算法(例如,HMAC)来生成运行时DDID。
在步骤720处,如果服务器生成的DDID先前由SDK 620存储,则NDK 630从SDK 620中检索服务器生成的DDID。或者,如果服务器生成的DDID先前由NDK 630存储,则NDK 630从NDK 630中检索服务器生成的DDID。在步骤722处,NDK 630将运行时DDID与服务器生成的DDID进行比较,以确定运行时DDID是否匹配服务器生成的DDID。在一些实施方案中,服务器生成的DDID可以以其加密形式存储,并且NDK 330可以使用DDK对运行时DDID进行加密,并且将服务器生成的DDID的加密版本与加密的运行时DDID进行比较。在一些实施方案中,可以使用DDK对服务器生成的DDID进行解密,并且服务器生成的DDID可以与运行时DDID以它们的未加密形式进行比较。
如果运行时DDID不匹配服务器生成的DDID;则当前执行交易应用程序612的便携式通信装置可以是与最初安装交易应用程序612并执行初始化过程300的装置不同的装置。在这种情况下,NDK 630可能停止交易密码的生成,并且阻止正在进行的交易继续下去。在一些实施方案中,NDK 630可以通知SDK 620在便携式通信装置的用户接口上显示错误消息,以指示交易密码请求未被授权。
如果运行时DDID匹配服务器生成的DDID,则确定当前执行交易应用程序612的便携式通信装置为最初安装交易应用程序612的同一便携式通信装置,并且NDK 630继续执行交易密码生成。在步骤724处,如果必要的话,NDK 630从SDK 620中检索用于生成交易密码的密码密钥(例如,LUK)。在步骤726处,NDK 630使用密码密钥生成交易密码。在一些实施方案中,可以通过使用密码密钥来生成交易密码,以便对诸如账户标识符或令牌的账户与交易信息、从接受装置获得的交易信息(例如,交易金额)和/或诸如应用程序交易对应价值等的其他信息进行加密。在步骤728处,NDK630将交易密码提供给SDK 620。SDK 620随后可以将生成的交易密码传递到访问装置以进行交易。
在一些实施方案中,如上所述的绑定后应用程序摘要可以用作用于交易应用程序612的运行时验证的另外机制。例如,除了验证DDID之外,当NDK 630接收生成交易密码的请求时,NDK 630可以在运行时重新计算交易应用程序612的绑定后应用程序摘要,并将其与先前存储的绑定后应用程序摘要进行比较,以验证交易应用程序612在初始化之后未被修改。在一些实施方案中,DDID验证和绑定后应用程序摘要验证可以由相同或不同的事件触发。例如,每次启动或开始交易应用程序612时,可以触发DDID和绑定后应用程序摘要验证两者,而当接收到生成交易密码的请求时,仅可以触发DDID验证而不是绑定后应用程序摘要验证。当交易应用程序612接收到从CBP 580获得令牌和/或从CBP 580补充账户参数(例如,更新LUK)的请求时,也可以执行对DDID和/或绑定后应用程序摘要的验证。在一些实施方案中,每当交易应用程序612与CBP 580通信时和/或每当交易应用程序与访问装置通信时,也可以执行对DDID和/或绑定后应用程序摘要的验证。
V.示例性方法和密钥
图8示出根据一些实施方案的用于将软件应用程序绑定到通信装置的方法的流程图800。框802至806可以由应用程序在通信装置上的应用程序的第一次初始化期间执行。框808至816可以由应用程序在应用程序的运行时执行期间执行。
在框802处,应用程序检索装置标识符的集合,将与通信装置相关联的装置标识符的集合发送到服务器。可以使用嵌入到应用程序的应用程序代码中的服务器公钥对装置标识符的集合进行加密。在框804处,应用程序接收基于装置标识符的集合生成的服务器生成的动态装置标识符。服务器生成的动态装置标识符可以包括在装置标识符的集合的至少一部分上计算的散列值以及由服务器生成的盐值。除了接收服务器生成的动态装置标识符之外,应用程序还可以接收盐值,服务器使用所述盐值来生成服务器生成的动态装置标识符,以使得应用程序能够在应用程序的运行时执行期间生成其自己的运行时动态装置标识符。在框806处,应用程序存储服务器生成的动态装置标识符,所述标识符充当将应用程序绑定到通信装置的绑定信息。
随后,在应用程序的运行时执行期间,在框808处,应用程序可以接收执行应用程序特定的任务的请求。在一些实施方案中,执行应用程序特定的任务的请求可以是执行安全敏感任务的请求,诸如,生成密码的请求。例如,在其中应用程序是交易应用程序的一些实施方案中,请求可以是生成交易密码的请求,所述交易密码传输到访问装置以获得对交易的授权。在框810处,响应于接收到执行应用程序特定的任务的请求,应用程序生成运行时动态装置标识符。在框812处,应用程序确定运行时动态装置标识符是否匹配服务器生成的动态装置标识符。在框814处,如果运行时动态装置标识符匹配服务器生成的动态装置标识符,则应用程序执行所请求的应用程序特定的任务。在框816处,如果运行时动态装置标识符不匹配服务器生成的动态装置标识符,则阻止执行应用程序特定的任务。
在一些实施方案中,可以在存储和/或运送期间通过利用装置导出密钥对动态装置标识符进行加密来保护动态装置标识符。装置导出密钥可以是用于对操作进行加密和解密的对称密钥。在应用程序的初始化期间,服务器可以生成用于导出装置导出密钥的现时值。应用程序可以从服务器接收现时值,并且应用程序可以基于现时值来导出装置导出密钥。服务器也可以从现时值中单独地生成装置导出密钥。由应用程序从服务器接收的服务器生成的动态装置标识符随后可以由服务器使用装置导出密钥进行加密,并且在需要时由应用程序使用装置导出密钥进行解密。在一些实施方案中,也可以在存储和/或运送期间通过利用装置导出密钥对密码密钥进行加密来保护密码密钥(例如,由服务器提供),应用程序将所述密码密钥用作加密密钥来生成通信装置的密码。
图9示出根据一些实施方案的描述在通信装置上执行的应用程序可以用来执行本文描述的过程的各种密钥的表格。密钥可以存储在例如通信装置的密钥链(例如,专用密钥存储区域)中,并且可以包括服务器公钥902、装置私钥904、装置导出密钥906以及密码密钥908。在一些实施方案中,密钥链可以由NDK或SDK维护。在一些实施方案中,单独密钥中的一个或多个可以由SDK存储,而其他密钥可以由NDK存储,反之亦然。
服务器公钥902是服务器公私钥对的一部分,并且可以作为NDK代码的一部分嵌入在NDK中。因此,服务器公钥902可以作为下载或预加载到通信装置上的应用程序包文件的一部分提供到通信装置。服务器公钥902由应用程序使用来对从应用程序发送到服务器的信息进行加密。
装置私钥904是装置公私钥对的一部分,并且可以由NDK在应用程序的初始化过程期间生成。在一些实施方案中,装置公私密钥对可以是RSA密钥对,并且可以基于为服务器接收的现时数生成。装置私钥904由应用程序使用来对从应用程序发送到服务器的信息执行数字签名。装置私钥904还可以由应用程序使用来对从服务器接收的已由服务器使用装置密钥对的装置公钥部件加密的信息进行解密。
装置导出密钥906是基于由服务器提供的现时数生成的对称密钥。装置导出密钥906可以由应用程序侧的NDK生成,并且还可以由服务器侧的服务器单独地生成。装置导出密钥906由应用程序使用来对从服务器接收的已经由服务器使用服务器的装置导出密钥加密的信息进行解密。装置导出密钥906还可以由应用程序使用来对应用程序发送到服务器的信息进行加密。在一些实施方案中,一旦已生成了装置导出密钥906,便可以利用装置导出密钥对在服务器与应用程序之间传输的信息进行加密,而不是服务器和装置公钥。尽管如此,在此类情况下,服务器和装置密钥仍然可以用来对在服务器与应用程序之间传输的信息进行数字签名和认证。在一些实施方案中,一旦已生成了装置导出密钥906,除了利用服务器和装置公钥进行加密之外,还可以用装置导出密钥来对在服务器与应用程序之间传输的信息进行加密。
密码密钥908是由服务器提供到应用程序上的加密密钥。密码密钥908由应用程序用来为通信装置生成密码。在一些实施方案中,密码密钥908可以由应用程序使用来生成交易密码,所述交易密码传输到访问装置以与通信装置进行交易。例如,交易密码可以从通信装置传输到访问装置,并且访问装置可以生成包括交易密码的授权请求消息,并且将授权请求消息转发给发行方以获得交易的授权。在一些实施方案中,密码密钥908可以是仅在有限时间、有限交易数量和/或有限交易金额内有效的有限使用密钥。当超过或即将超过有限使用密钥的有限使用阈值时,应用程序和/或服务器可以发起对有限使用密钥的补充(例如,向应用程序提供新的有限使用密钥),使得可以与通信装置进行另外交易。
本文中所述的计算装置、通信装置、计算机、服务器等中的任一者可以使用耦合到存储器的一个或多个处理器来实现,所述存储器存储代码或指令,所述代码或指令在由一个或多个处理器执行时导致装置执行本文中所述的方法和过程中的一个或多个。本文中所述的用于包含代码或代码部分的存储器、存储介质和计算机可读介质可以包括本领域中已知或使用的任何适当介质,包括存储介质和通信介质,诸如但不限于,在用于存储和/或传输信息(诸如,计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质,包括RAM、ROM、EEPROM、快闪存储器或其他存储器技术、CD-ROM、数字通用光盘(DVD)或其他光存储设备、磁带盒、磁带、磁盘存储或其他磁存储装置、数据信号、数据传输或可以用来存储或传输期望信息并且可以由计算机访问的任何其他介质。基于本文中提供的公开和教导,本领域技术人员将了解实现各实施方案的其他方式和/或方法。
以上描述是示意性的不是限制性的。本领域的技术人员在阅读了本公开后,会明白本发明的许多变化。因此,本发明的范围可以不参照上文的描述确定,而是可以参照所附权利要求连同其全部范围或等同物确定。
本文中所述的方法和过程本质上是示例性的,并且根据一些实施方案的方法和过程可以按与本文所述的次序不同的次序执行一个或多个步骤、包括没有具体描述的一个或多个额外步骤、省略一个或多个步骤、将一个或多个步骤组合成单个步骤、将一个或多个步骤分割成多个步骤,和/或其任何组合。
应当理解,如上文描述的本发明可以使用计算机软件以控制逻辑的形式以模块化或集成方式来实施。基于本文中提供的公开和教导,本领域普通技术人员可以了解并认识到用于使用硬件以及硬件和软件的组合来实施本发明的其他方式和/或方法。
本申请中描述的任何软件部件或功能可以实现为由处理器使用例如常规的或面向对象的技术并使用任何合适的计算机语言(诸如例如,Java、C++或Perl)执行的软件代码。软件代码可以存储为计算机可读介质(诸如,随机存取存储器(RAM)、只读存储器(ROM)、磁介质(诸如硬盘或软盘)或光介质(诸如CD-ROM))上的一系列指令或命令。任何这样的计算机可读介质可以驻留在单个计算设备上或内部,并且可以存在于系统或网络内的不同计算设备上或内部。
在不偏离本发明的范围的情况下,任何实施方案的一个或多个特征可以与任何其他实施方案的一个或多个特征组合。
除非明确指示有相反的意思,否则“一个”、“一种”或“该/所述”的叙述旨在表示“一个/种或多个/种”。

Claims (20)

1.一种通信装置,其包括:
处理器;以及
存储器,其耦合到所述处理器,所述存储器存储指令,所述指令在由所述处理器执行时致使所述通信装置执行操作,所述操作包括:
在所述通信装置上的应用程序的初始化期间:
将与计算装置相关联的装置标识符的集合发送到服务器;
接收由所述服务器基于所述装置标识符的集合生成的服务器生成的动态装置标识符;以及
存储所述服务器生成的动态装置标识符;以及
在所述应用程序的运行时执行期间:
由所述应用程序接收执行应用程序特定的任务的请求;
响应于接收到所述请求:
由所述应用程序生成运行时动态装置标识符;
确定所述运行时动态装置标识符是否匹配所述服务器生成的动态装置标识符;
当所述运行时动态装置标识符匹配所述服务器生成的动态装置标识符时,执行所述应用程序特定的任务;以及
当所述运行时动态装置标识符不匹配所述服务器生成的动态装置标识符时,阻止执行所述应用程序特定的任务。
2.根据权利要求1所述的通信装置,其中所述操作还包括:
在所述应用程序的所述初始化期间:
从所述服务器接收现时值;以及
基于所述现时值来导出装置导出密钥。
3.根据权利要求2所述的通信装置,其中来自所述服务器的所述服务器生成的动态装置标识符由所述服务器使用所述装置导出密钥进行加密。
4.根据权利要求2所述的通信装置,其中所述操作还包括:
由所述应用程序从所述服务器接收由所述服务器使用所述装置导出密钥加密的密码密钥,并且
其中所述密码密钥由所述应用程序用来为所述通信装置生成密码。
5.根据权利要求1所述的通信装置,其中所述服务器生成的动态装置标识符是在所述装置标识符的集合的至少一部分上计算的散列值以及盐值。
6.根据权利要求5所述的通信装置,其中所述操作还包括:
在所述应用程序的所述初始化期间:
由所述应用程序接收所述盐值,所述服务器使用所述盐值以生成所述服务器生成的动态装置标识符。
7.根据权利要求1所述的通信装置,其中发送到所述服务器的所述装置标识符的集合由所述应用程序使用嵌入所述应用程序中的服务器公钥进行加密。
8.根据权利要求1所述的通信装置,其中所述应用程序划分为用第一编程语言编写的第一软件层和用第二编程语言编写的第二软件层。
9.根据权利要求8所述的通信装置,其中所述服务器生成的动态装置标识符存储在所述应用程序的所述第一软件层中,并且所述运行时动态装置标识符由所述第二软件层生成。
10.根据权利要求1所述的通信装置,其中所述应用程序是交易应用程序,并且执行所述应用程序特定的任务的所述请求是生成用于授权与所述通信装置进行的交易的交易密码的请求。
11.一种方法,其包括:
在通信装置上的应用程序的初始化期间:
由所述应用程序将与计算装置相关联的装置标识符的集合发送到服务器;
由所述应用程序从所述服务器接收基于所述装置标识符的集合生成的服务器生成的动态装置标识符;以及
由所述应用程序存储所述服务器生成的动态装置标识符;
在所述应用程序的运行时执行期间:
由所述应用程序接收执行应用程序特定的任务的请求;
响应于接收到所述请求:
由所述应用程序生成运行时动态装置标识符;
确定所述运行时动态装置标识符是否匹配所述服务器生成的动态装置标识符;
当所述运行时动态装置标识符匹配所述服务器生成的动态装置标识符时,执行所述应用程序特定的任务;以及
当所述运行时动态装置标识符不匹配所述服务器生成的动态装置标识符时,阻止执行所述应用程序特定的任务。
12.根据权利要求11所述的方法,其还包括:
在所述应用程序的所述初始化期间:
由所述应用程序从所述服务器接收现时值;以及
由所述应用程序基于所述现时值来导出装置导出密钥。
13.根据权利要求12所述的方法,其中从所述服务器接收的所述服务器生成的动态装置标识符由所述服务器使用所述装置导出密钥进行加密。
14.根据权利要求12所述的方法,其还包括:
由所述应用程序从所述服务器接收由所述服务器使用所述装置导出密钥加密的密码密钥,其中所述密码密钥由所述应用程序用来为所述通信装置生成密码。
15.根据权利要求11所述的方法,其中所述服务器生成的动态装置标识符是在所述装置标识符的集合的至少一部分上计算的散列值以及盐值。
16.根据权利要求15所述的方法,其还包括:
在所述应用程序的所述初始化期间:
由所述应用程序接收所述盐值,所述服务器使用所述盐值以生成所述服务器生成的动态装置标识符。
17.根据权利要求11所述的方法,其中发送到所述服务器的所述装置标识符的集合由所述应用程序使用嵌入所述应用程序中的服务器公钥进行加密。
18.根据权利要求11所述的方法,其中所述应用程序划分为用第一编程语言编写的第一软件层和用第二编程语言编写的第二软件层。
19.根据权利要求18所述的方法,其中所述服务器生成的动态装置标识符存储在所述应用程序的所述第一软件层中,并且所述运行时动态装置标识符由所述第二软件层生成。
20.根据权利要求11所述的方法,其中所述应用程序是交易应用程序,并且执行所述应用程序特定的任务的所述请求是生成用于授权与所述通信装置进行的交易的交易密码的请求。
CN201680049444.1A 2015-08-31 2016-08-25 软件应用程序到通信装置的安全绑定 Active CN107925572B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/841,202 2015-08-31
US14/841,202 US10178164B2 (en) 2015-08-31 2015-08-31 Secure binding of software application to communication device
PCT/US2016/048572 WO2017040173A1 (en) 2015-08-31 2016-08-25 Secure binding of software application to a communication device

Publications (2)

Publication Number Publication Date
CN107925572A true CN107925572A (zh) 2018-04-17
CN107925572B CN107925572B (zh) 2021-04-30

Family

ID=58096308

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680049444.1A Active CN107925572B (zh) 2015-08-31 2016-08-25 软件应用程序到通信装置的安全绑定

Country Status (7)

Country Link
US (2) US10178164B2 (zh)
EP (1) EP3345337B1 (zh)
CN (1) CN107925572B (zh)
AU (1) AU2016317561A1 (zh)
BR (1) BR112018002027A2 (zh)
CA (1) CA2991317A1 (zh)
WO (1) WO2017040173A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113326308A (zh) * 2021-06-16 2021-08-31 黑龙江八一农垦大学 财务数据智能整合方法和装置、以及处理器
TWI773198B (zh) * 2021-03-17 2022-08-01 統一超商股份有限公司 身分驗證系統

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10949841B2 (en) 2015-05-07 2021-03-16 Visa International Service Association Provisioning of access credentials using device codes
US10084782B2 (en) * 2015-09-21 2018-09-25 Early Warning Services, Llc Authenticator centralization and protection
EP3179690A1 (en) * 2015-12-11 2017-06-14 Gemalto Sa Mobile device having trusted execution environment
DE102015225651A1 (de) * 2015-12-17 2017-06-22 Robert Bosch Gmbh Verfahren und Vorrichtung zum Übertragen einer Software
EP3185194A1 (en) * 2015-12-24 2017-06-28 Gemalto Sa Method and system for enhancing the security of a transaction
US11424931B2 (en) * 2016-01-27 2022-08-23 Blackberry Limited Trusted execution environment
US10599409B2 (en) 2016-02-02 2020-03-24 Blackberry Limited Application lifecycle operation queueing
KR102408649B1 (ko) * 2016-02-19 2022-06-15 삼성전자주식회사 환경 설정 방법 및 장치
KR101865879B1 (ko) * 2016-04-27 2018-06-12 주식회사 하렉스인포텍 선승인에 의한 금융거래 제공 시스템 및 그 방법
WO2017217808A1 (ko) * 2016-06-16 2017-12-21 주식회사 하렉스인포텍 모바일 인증방법 및 그 시스템
US10491400B2 (en) * 2016-08-23 2019-11-26 Solarflare Communications, Inc. System and apparatus for providing network security
EP4086796A1 (en) 2017-05-03 2022-11-09 Visa International Service Association System and method for software module binding
EP3665861A4 (en) * 2017-08-11 2020-12-02 Secure Open Systems, Inc. HASH BASED DATA VERIFICATION SYSTEM
US11251964B2 (en) 2017-08-11 2022-02-15 Secure Open Systems, Inc. Hash contract generation and verification system
US20190102573A1 (en) * 2017-09-29 2019-04-04 Theater Ears, LLC Theater ears android app sensitive data management
US11003757B1 (en) 2017-10-17 2021-05-11 Atlassian Pty Ltd. Application authenticity verification in digital distribution systems
CN109035636A (zh) * 2018-06-04 2018-12-18 阿里巴巴集团控股有限公司 一种收款设备、一种收款方法及装置
CN108989298B (zh) * 2018-06-30 2021-04-27 平安科技(深圳)有限公司 一种设备安全监控方法、装置及计算机可读存储介质
US11206130B2 (en) * 2018-07-31 2021-12-21 Nxp B.V. Customizing cryptographic keys between multiple hosts
US11106441B2 (en) 2018-09-14 2021-08-31 Microsoft Technology Licensing, Llc Secure device-bound edge workload delivery
US10873459B2 (en) * 2018-09-24 2020-12-22 Nxp B.V. Password authentication using white-box cryptography
CN113508380A (zh) * 2019-01-25 2021-10-15 华为技术有限公司 用于终端实体认证的方法
CN109802886B (zh) * 2019-01-28 2021-10-19 奥克斯空调股份有限公司 一种绑定第三方公众号的方法、装置、空调器及存储介质
US11343672B2 (en) 2019-02-20 2022-05-24 Coretigo Ltd. Secure communication encryption and decryption mechanism in a wireless communication system
WO2021025989A1 (en) * 2019-08-02 2021-02-11 Mastercard International Incorporated System and method to support payment acceptance capability for merchants
CN110610360B (zh) * 2019-09-09 2022-03-18 飞天诚信科技股份有限公司 一种硬件钱包绑定授权的方法及装置
US11675920B2 (en) * 2019-12-03 2023-06-13 Sonicwall Inc. Call location based access control of query to database
CN111176505B (zh) * 2019-12-20 2021-04-13 上海淇玥信息技术有限公司 基于第三方任务联动的页面展示方法、装置和电子设备
US11663344B2 (en) * 2021-05-27 2023-05-30 Dell Products L.P. System and method for binding applications to a root of trust
WO2024040226A1 (en) * 2022-08-19 2024-02-22 Authentic Indication, Inc. Secure computing platform

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040059938A1 (en) * 1998-04-29 2004-03-25 Microsoft Corporation Hardware ID to prevent software piracy
US20080319779A1 (en) * 2007-06-25 2008-12-25 Microsoft Corporation Activation system architecture
US20130340048A1 (en) * 2012-06-18 2013-12-19 Infosys Limited Mobile application management framework
CN104065616A (zh) * 2013-03-20 2014-09-24 中国移动通信集团公司 单点登录方法和系统
US20150074765A1 (en) * 2013-09-06 2015-03-12 Oracle International Corporation Registration and configuration of point-of-service devices

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2022207B1 (fr) * 2006-05-31 2018-10-10 Orange Procédé cryptographique à chiffrement et révocation intégrés, système, dispositif et programmes pour la mise en oeuvre du procédé
KR20090038711A (ko) * 2007-10-16 2009-04-21 주식회사 케이티 불법 소프트웨어 실행 방지를 위한 모바일 단말 장치 및 그방법
EP2540057A2 (en) * 2010-02-26 2013-01-02 General instrument Corporation Dynamic cryptographic subscriber-device identity binding for subscriber mobility
US8978113B2 (en) 2010-12-23 2015-03-10 Qualcomm Incorporated Allocation of identifiers for application discovery
US8800058B2 (en) 2011-07-27 2014-08-05 Microsoft Corporation Licensing verification for application use
US10586260B2 (en) * 2012-07-19 2020-03-10 Apple Inc. Securing in-app purchases
US9143383B2 (en) 2012-11-01 2015-09-22 Miiicasa Taiwan Inc. Method and system for managing device identification
US20140157368A1 (en) * 2012-12-05 2014-06-05 Srujal SHAH Software authentication
US9686277B2 (en) 2013-02-21 2017-06-20 Inmobi Pte. Ltd. Unique identification for an information handling system
US9143492B2 (en) * 2013-03-15 2015-09-22 Fortinet, Inc. Soft token system
US9525705B2 (en) * 2013-11-15 2016-12-20 Oracle International Corporation System and method for managing tokens authorizing on-device operations
US10601818B2 (en) * 2015-04-13 2020-03-24 Visa International Service Association Enhanced authentication based on secondary device interactions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040059938A1 (en) * 1998-04-29 2004-03-25 Microsoft Corporation Hardware ID to prevent software piracy
US20080319779A1 (en) * 2007-06-25 2008-12-25 Microsoft Corporation Activation system architecture
US20130340048A1 (en) * 2012-06-18 2013-12-19 Infosys Limited Mobile application management framework
CN104065616A (zh) * 2013-03-20 2014-09-24 中国移动通信集团公司 单点登录方法和系统
US20150074765A1 (en) * 2013-09-06 2015-03-12 Oracle International Corporation Registration and configuration of point-of-service devices

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI773198B (zh) * 2021-03-17 2022-08-01 統一超商股份有限公司 身分驗證系統
CN113326308A (zh) * 2021-06-16 2021-08-31 黑龙江八一农垦大学 财务数据智能整合方法和装置、以及处理器
CN113326308B (zh) * 2021-06-16 2023-04-07 黑龙江八一农垦大学 财务数据智能整合方法和装置、以及处理器

Also Published As

Publication number Publication date
CA2991317A1 (en) 2017-03-09
BR112018002027A2 (pt) 2018-09-18
CN107925572B (zh) 2021-04-30
EP3345337B1 (en) 2020-04-29
US10178164B2 (en) 2019-01-08
US20170063975A1 (en) 2017-03-02
US20190089774A1 (en) 2019-03-21
WO2017040173A1 (en) 2017-03-09
AU2016317561A1 (en) 2018-01-18
EP3345337A1 (en) 2018-07-11
EP3345337A4 (en) 2019-01-23
US10785287B2 (en) 2020-09-22

Similar Documents

Publication Publication Date Title
US11875344B2 (en) Cloud-based transactions with magnetic secure transmission
CN107925572A (zh) 软件应用程序到通信装置的安全绑定
US11783061B2 (en) Embedding cloud-based functionalities in a communication device
US10909522B2 (en) Cloud-based transactions methods and systems
CN105684346B (zh) 确保移动应用和网关之间空中下载通信安全的方法
CN107278307A (zh) 软件层的相互认证
US20220019995A1 (en) Limited-use keys and cryptograms
CN107111500A (zh) 应用库的无线储备
CN107210912B (zh) 对应用程序库的授权访问
US11880832B2 (en) Method and system for enhancing the security of a transaction

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant