CN107210912B - 对应用程序库的授权访问 - Google Patents
对应用程序库的授权访问 Download PDFInfo
- Publication number
- CN107210912B CN107210912B CN201580074653.7A CN201580074653A CN107210912B CN 107210912 B CN107210912 B CN 107210912B CN 201580074653 A CN201580074653 A CN 201580074653A CN 107210912 B CN107210912 B CN 107210912B
- Authority
- CN
- China
- Prior art keywords
- session
- function
- application
- private
- request
- 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.)
- Active
Links
- 230000006870 function Effects 0.000 claims abstract description 234
- 238000013475 authorization Methods 0.000 claims abstract description 62
- 238000009795 derivation Methods 0.000 claims abstract description 24
- 238000004891 communication Methods 0.000 claims description 85
- 238000000034 method Methods 0.000 claims description 52
- 230000004044 response Effects 0.000 claims description 19
- 238000012545 processing Methods 0.000 description 41
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 15
- 230000002708 enhancing effect Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 238000013478 data encryption standard Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 150000003839 salts Chemical class 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
- H04L9/3228—One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/80—Wireless
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Telephonic Communication Services (AREA)
- Telephone Function (AREA)
- Mobile Radio Communication Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
为了防止恶意代码访问在应用程序的私有部分中实现的安全敏感函数,使用在应用程序内同一应用程序的私有部分和公共部分之间建立的安全会话来执行对所述私有部分的访问。所述公共部分和所述私有部分之间可以共享授权密钥。当所述公共部分尝试调用在所述私有部分中实现的函数时,通过以下方式建立安全会话:生成会话ID,在密钥派生函数中组合所述会话ID和所述授权密钥以生成会话密钥,以及使用所述会话密钥加密来自所述公共部分的函数调用。所述私有部分然后可以解密被正确加密的函数调用并调用合适的函数。
Description
相关申请交叉引用
本申请要求于2014年12月29日提交的美国临时申请号62/097,267的优先权,该临时申请的整个内容据此出于所有目的以引用方式并入。
技术领域
本公开涉及用于增强计算装置安全性的技术,尤其涉及用于增强安装在计算装置上的应用程序的安全性的技术。
背景技术
黑客可以利用软件应用程序的一种方式是将恶意代码嵌入应用程序中。如果该应用程序可以访问诸如账户凭证的安全敏感信息,则恶意代码可以调用该应用程序中的函数来获得对敏感信息的访问。然后,恶意代码可以通过将敏感信息发送到未经授权的远程站点来实施中继攻击。
本发明的实施例单独地或共同地解决了这个和其他问题。
发明内容
本发明的实施例提供了用于增强计算装置(例如,便携式通信装置)的安全性,特别地用于增强安装在计算装置上的应用程序的安全性的技术。在一些实施例中,应用程序可以被划分为公共部分和私有部分。私有部分可以是用于实现安全敏感函数(例如,诸如令牌请求、账户参数补充等的函数)的本地库。公共部分可以是一组公共应用程序接口(API),用于实现非安全敏感函数(例如,用户界面相关函数、网络函数等)以及用于调用私有部分的安全敏感函数的函数。为了防止恶意代码访问在应用程序的私有部分中实现的安全敏感函数,使用在应用程序内在公共部分和私有部分之间建立的安全会话来执行对私有部分的访问。公共部分和私有部分之间可以共享授权密钥。当公共部分尝试调用在私有部分中实现的函数时,通过以下方式建立安全会话:生成会话ID,在密钥派生函数中组合会话ID和授权密钥以生成会话密钥,以及使用会话密钥加密来自公共部分的函数调用。私有部分然后可以解密被正确加密的函数调用并调用合适的函数。
在一些实施例中,便携式通信装置可以包括一个或多个处理器,以及耦接到该一个或多个处理器并存储计算机可读代码的存储器,该计算机可读代码当由该一个或多个处理器执行时,实现具有公共部分和私有部分的应用程序。公共部分可以被配置为向私有部分发送开始会话请求,从私有部分接收会话标识符(ID),以及使用会话ID和密钥派生函数来生成会话密钥。公共部分还可以被配置为使用该会话密钥加密函数调用请求的有效负载,其中有效负载表示对在私有部分中实现的函数的函数调用,并且公共部分还可以被配置为将包括加密的有效负载的函数调用请求发送到私有部分。私有部分可以配置为执行正在函数调用请求中被调用的函数。
在一些实施例中,在具有公共部分和私有部分的应用程序中控制访问的过程可以包括由应用程序的公共部分向应用程序的私有部分发送开始会话请求,并且由公共部分从私有部分接收会话标识符(ID)。公共部分可以使用会话ID和密钥派生函数来生成会话密钥,并且使用会话密钥来加密函数调用请求的有效负载,其中有效负载表示对在私有部分中实现的函数的函数调用。公共部分然后可以将包括加密的有效负载的函数调用请求发送到私有部分以调用该函数。
在一些实施例中,在具有公共部分和私有部分的应用程序中控制访问的过程可以包括由应用程序的私有部分从应用程序的公共部分接收开始会话请求;以及响应于开始会话请求由私有部分生成会话ID。私有部分可以将会话ID发送到公共部分,并且使用会话ID和密钥派生函数来生成会话密钥。私有部分可以从公共部分接收包括加密的有效负载的函数调用请求,该有效负载表示对在私有部分中实现的函数的函数调用。私有部分可以使用会话密钥来解密加密的有效负载以取回该函数调用,并且执行该函数调用的函数。
附图说明
图1示出根据一些实施例的通信装置的框图。
图2示出根据一些实施例的用于控制对应用程序中的函数的访问的过程的流程图。
图3示出根据一些实施例的应用程序的概念框图。
图4示出根据一些实施例的系统的框图。
图5示出根据一些实施例的便携式通信装置的框图。
图6示出根据一些实施例的交易应用程序的概念框图。
图7示出根据一些实施例的在具有公共部分和私有部分的应用程序中控制访问的过程的流程图。
图8示出根据一些实施例的在具有公共部分和私有部分的应用程序中控制访问的过程的另一流程图。
具体实施方式
本发明的实施例提供了用于增强计算装置(例如,便携式通信装置)的安全性,特别地用于增强安装在计算装置上的应用程序的安全性的技术。在一些实施例中,应用程序可以被划分为公共部分和私有部分。私有部分可以是用于实现安全敏感函数(例如,诸如令牌请求、账户参数补充等的函数)的本地库。公共部分可以是一组公共应用程序接口(API),用于实现非安全敏感函数(例如,用户界面相关函数、网络函数等)以及用于调用私有部分的安全敏感函数的函数。
根据一些实施例,为了防止恶意代码访问在应用程序的私有部分中实现的安全敏感函数,使用在应用程序内在公共部分和私有部分之间建立的安全会话来执行对私有部分的访问。公共部分和私有部分之间可以共享授权密钥。当公共部分尝试调用在私有部分中实现的函数时,通过以下方式建立安全会话:生成会话ID,在密钥派生函数中组合会话ID和授权密钥以生成会话密钥,以及使用会话密钥加密来自公共部分的函数调用。私有部分然后可以解密被正确加密的函数调用并调用合适的函数。尝试访问私有部分中的函数的恶意代码不太可能具有有效的授权密钥来生成有效的会话密钥以正确地加密函数调用。因此,私有部分将无法识别函数调用,并且会忽略恶意代码的那些访问尝试。
在讨论本发明的一些实施例的细节之前,对一些术语的描述可以有助于理解各个实施例。
“通信装置”可以是包括可以与另一装置通信的一个或多个电子部件(例如,集成芯片)的装置。例如,通信装置可以是包括耦接到存储器的至少一个处理器的计算装置,存储器存储用于由处理器执行的指令或代码。“便携式通信装置”可以是可以由用户搬运和操作的通信装置,并且可以包括一个或多个电子部件(例如,集成芯片)。便携式通信装置可以提供对网络的远程通信能力。便携式通信装置可以被配置为向或从其他装置发送和接收数据或通信。便携式通信装置可以是移动装置的形式,例如移动电话(例如,智能电话、蜂窝电话等)、平板电脑、便携式媒体播放器、个人数字助理装置(PDA)、可穿戴装置(例如,手表、诸如健身追踪器的健康监测装置等)、电子阅读器装置等,或是卡(例如,智能卡)或表链等的形式。便携式通信装置的示例还可以包括便携式计算装置(例如,笔记本电脑、上网本、超级本等)。便携式通信装置也可以是车辆(例如,汽车)的形式,或者被集成为车辆的一部分(例如,车辆的信息系统)。
“服务器计算机”可以包括功能强大的计算机或计算机集群。例如,服务器计算机可以是大的主机、小型计算机集群或像一个单元一样工作的一组服务器。在一个示例中,服务器计算机可以是耦连至网络服务器的数据库服务器。服务器计算机可以耦连到数据库并且可以包括用于服务于来自一个或多个客户端计算机的请求的任何硬件、软件、其他逻辑、或前述内容的组合。服务器计算机可以包括一个或多个计算装置并且可以使用各种计算结构、排列和编译中的任何一种来服务于来自一个或多个客户端计算机的请求。
“发行方”通常可以指维持与便携式通信装置相关联的用户的账户的业务实体(例如银行),所述账户例如为登记在安装在便携式通信装置上的移动应用程序中的账户。发行方还可以向便携式通信装置发出与账户相关联的账户参数。发行方可以与代表发行方执行发行方的一些或全部功能的主机系统相关联。
“商家”通常可以是参与交易并且能够出售商品或服务或提供对商品或服务的访问的实体。
“收单方”通常可以是与特定商家或其他实体有商业关系的商业实体(例如商业银行)。一些实体可执行发行方和收单方功能。一些实施例可以涵盖这种单实体发行方-收单方。
“访问装置”可以是用于与商家计算机或交易处理网络进行通信,以及用于与交易装置(例如,支付装置)、用户计算机设备和/或用户移动装置交互的任何合适的装置。访问装置通常可以位于任何适当的位置,诸如在商家所在的位置。访问装置可以是任何适当的形式。访问装置的一些示例包括POS装置、蜂窝电话、PDA、个人计算机(PC)、平板PC、手持专用阅读器、机顶盒、电子现金出纳机(ECR)、自动柜员机(ATM)、虚拟现金出纳机(VCR)、营业亭、安全系统、访问系统、网站等等。访问装置可以使用任何适当的接触或非接触操作模式以向便携式装置发送或从其接收数据或与便携式装置关联。在访问装置可以包括POS终端的一些实施例中,任何适当的POS终端可以被使用,并且其可以包括阅读器、处理器和计算机可读介质。阅读器可以包括任何适当的接触或非接触操作模式。例如,示例性读卡器可以包括与便携式通信装置交互的射频(RF)天线、光学扫描器、条形码阅读器或磁条阅读器。
“授权请求消息”可以是被发送以请求交易授权的电子消息。授权请求消息可以被发送到交易处理网络和/或交易卡(例如,支付卡)的发行方。根据一些实施例的授权请求消息可以符合ISO 8583,ISO 8583是用于交换与用户使用交易装置或交易账户进行的交易相关联的电子交易信息的系统的标准。授权请求消息可以包括可用于识别账户的信息。授权请求消息还可以包括附加数据元素,例如服务代码、到期日期等中的一个或多个。授权请求消息还可以包括交易信息,诸如与当前交易关联的任何信息,诸如交易金额、商家标识符、商家位置等,以及可以用来确定是否识别和/或授权交易的任何其他信息。授权请求消息还可以包括其他信息,诸如识别生成授权请求消息的访问装置的信息,关于访问装置的位置的信息等。
“授权响应消息”可以是对授权请求消息的电子消息回复。授权响应消息可以由发行金融机构或交易处理网络生成。授权响应消息可以包括(只作为示例)以下状态指示符中的一个或多个:批准-交易被批准;拒绝-交易不被批准;或呼叫中心-响应未决的更多信息,商家必须呼叫免费授权电话号码。授权响应消息还可以包括授权代码,其可以是信用卡发行银行响应于电子消息中的授权请求消息(直接地或者通过交易处理网络)返回商家计算机的指示交易被批准的代码。代码可以用作授权的证据。如上文指出的,在一些实施例中,交易处理网络可以生成或向商家转发授权响应消息。
“令牌”可以包括某一信息的替代标识符。例如,交易令牌可以包括交易账户的标识符,其是账户标识符的替代,诸如主账号(PAN)。例如,令牌可以包括可以用作原始账户标识符的替代的一连串字母数字字符。例如,令牌“4900 0000 0000 0001”可以代替PAN“41470900 0000 1234”使用。在一些实施例中,令牌可以是“保留格式的”,可以有与现有的交易处理网络中使用的账户标识符一致的数字格式(例如,ISO 8583金融交易消息格式)。在一些实施例中,令牌可以代替PAN使用,以发起、授权、结算或完成交易。在通常提供原始证书的其他系统中,令牌还可以用来表示原始证书。在一些实施例中,可以生成令牌值,使得由令牌值恢复原始PAN或其他账户标识符不可以由计算得到。进一步地,在一些实施例中,令牌格式可以被配置成使接收令牌的实体将其识别为令牌,并识别发行令牌的实体。
“真实账户标识符”可以包括与账户相关联的原始账户标识符。例如,真实账户标识符可以是由卡账户(例如,信用卡、借记卡等)的发行者发行的主账号(PAN)。例如,在一些实施例中,真实账户标识符可以包括十六位数值,例如“4147 0900 0000 1234”。真实账户标识符的前六位数字(例如“414709”)可以表示可以识别与真实账户标识符相关联的发行方的真实发行方标识符(BIN)。
“账户参数”可以指与可用于在该账户上进行交易的账户有关的信息。账户参数的示例可以包括可以用于识别用户的账户的信息(例如,真实账户标识符、备用账户标识符、令牌等)、与账户状态有关的数据或信息、用于生成密码信息的一个或多个密钥、与一个或多个密钥相关的数据或信息等。账户参数可以是半静态或动态的。动态账户参数可以是具有有限寿命的账户参数,并且其一旦到期,就不能再用于进行交易,直到账户参数被补充、刷新或更新为止。在账户的生命周期内,可以频繁地补充动态账户参数。半静态账户参数可以是具有比动态账户参数更长的扩展生命周期的账户参数,并且在账户的生命周期内可以比动态账户参数不那么频繁地补充,或者根本不补充。
“密钥”可以指在密码算法中使用的一条信息,以将输入数据转换成另一种表示形式。密码算法可以是将原始数据转换为替代表示形式的加密算法,或将加密信息转换回原始数据的解密算法。密码算法的示例可以包括三重数据加密标准(TDES)、数据加密标准(DES)、高级加密标准(AES)等。
“有限使用密钥”或“LUK”可以指仅可用于有限时间或有限交易次数的密钥,并且在有限使用已经耗尽时可能需要更新或补充。LUK可以与限制使用LUK的一个或多个有限使用阈值的集合相关联,其中一旦LUK的使用已经耗尽或超过了一个或多个有限使用阈值的集合,则使用该LUK进行的进一步交易将被拒绝,即使基础账户仍然处于良好状态。一个或多个有限使用阈值的集合可以包括可以使用LUK的多个交易中的至少一个,指示LUK有效的持续时间的存活时间,和/或表示在LUK有效的一个或多个交易中相加的总交易金额的累计交易金额,或其任何组合。
有限使用阈值可以指限制一条信息的使用的条件。当满足基本条件时,可能会超出或耗尽有限使用阈值。例如,有限使用阈值可以包括指示一条信息有效的时长的存活时间,并且一旦经过了该时长,则超过或耗尽有限使用阈值,并且该条信息可能变得无效并且可能不再被使用。作为另一示例,有限使用阈值可以包括可以使用一条信息的次数,并且一旦该条信息已经被使用了该次数,则超过或耗尽有限使用阈值,并且该条信息可能变得无效并且可能不再被使用。
“交易处理网络”可以包括可以处理和路由交易请求消息的网络。示例性交易处理网络可以包括数据处理子系统、网络和用来支持和传送授权服务、异常文件服务、交易评分服务和清算及结算服务的操作。示例性交易处理网络可以包括VisaNetTM。诸如VisaNetTM的交易处理网络能够处理信用卡交易、借记卡交易和其他类型的商业交易。VisaNetTM具体可以包括处理授权请求的VIP系统(Visa集成支付系统)和执行清算及结算服务的Base II系统。
现在将描述本发明的一些实施例的细节。
图1示出根据一些实施例的通信装置100。通信装置100可以是计算装置,并且在一些实现方式中,可以是诸如移动装置的便携式通信装置。通信装置100可以包括诸如一个或多个处理器的装置硬件104、操作系统114和在通信装置100上运行的应用程序112。在一些实施例中,应用程序112可以在诸如虚拟机的应用程序环境110内执行。
应用程序112可以被划分成多个部分(例如,多个软件层或软件库)。例如,应用程序112可以包括作为第一软件层的公共部分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可能容易受到寻求包括底层敏感信息的黑客攻击的影响。
还应注意,公共部分120和私有部分130是一个应用程序112的部分。因此,例如,包括公共部分120和私有部分130的应用程序112可以作为单个应用程序包首先从应用程序商店下载,并且作为单个应用程序安装在通信装置100上。包括公共部分120和私有部分130的应用程序112可以被表示为通信装置100的用户界面上的一个图标,并且包括公共部分120和私有部分130的应用程序112被操作系统114视为一个应用程序。
图2示出根据一些实施例的用于控制对具有多个层或部分的应用程序中实现的函数的访问的过程200的流程图。例如,过程200可以用于控制对在应用程序的私有部分中实现的安全敏感函数的访问。在方框202,尝试访问在应用程序的目标层(例如,私有部分)中实现的函数的应用程序的调用层(例如,公共部分)可以获得会话标识符(ID)以发起在应用程序的两层之间的会话。会话ID可以由应用程序的目标层、或应用程序的另一层、另一应用程序或另一个实体(例如,操作系统))生成。
在方框204,可以使用会话ID来生成会话密钥。例如,在一些实施例中,会话ID可被加密以产生会话密钥。在一些实施例中,会话ID可以用作密钥派生算法的输入种子(例如,盐值)以生成会话密钥。应用程序的调用层和目标层都可以基于会话ID单独生成会话密钥。会话密钥可以是用于加密和解密数据的对称密钥。
在方框206,当调用层想要调用在应用程序的目标层中实现的函数时,调用层可以使用会话密钥对函数调用进行加密。已经基于相同的会话ID生成会话密钥的目标层可以使用其自身的会话密钥副本来正确地解密该函数调用。然后,目标层可以继续执行被调用的函数。
在一些实施例中,目标层可被配置为忽略除了开始会话请求(请求会话ID)和函数调用请求之外的任何传入请求。因此,在函数调用请求的加密有效负载中接收到对目标层的函数调用。没有使用正确的会话密钥加密的函数调用,或者没有作为函数调用请求的有效负载被接收的函数调用可以被目标层忽略。
图3示出根据一些实施例的移动应用程序312的一些部件的框图。移动应用程序312可以包括公共部分320(例如,软件开发工具包SDK)和私有部分330(例如,本地库NDK)。公共部分320可以用诸如Java的第一编程语言编写,私有部分330可以用诸如C或C++的第二编程语言编写。在编译时,在公共部分320和私有部分330之间生成并共享唯一的加密密钥。唯一的加密密钥可以是例如128位密钥、256位密钥或其他长度的密钥,并且可以是随机或伪随机数。该唯一的加密密钥可以作为授权密钥321嵌入到公共部分320中,并作为授权密钥331嵌入到私有部分330中。
公共部分320可以包括在运行期间由公共部分320用来生成会话密钥323的密钥派生函数(KDF)322。公共部分320还可以包括由公共部分320用来调用在私有部分330中实现的函数的函数调用接口325。
私有部分330可以包括会话ID生成器334,其生成会话ID 304以在公共部分320和私有部分330之间建立会话。私有部分330还可以包括对应于KDF 322的密钥派生函数(KDF)332。私有部分330在运行期间使用KDF 332为私有部分330生成相应的会话密钥333。私有部分330还可以包括函数调用接口335,其为公共部分320调用在私有部分330中实现的函数336。
当公共部分320被初始化或者当私有部分330中实现的函数336由公共部分320需要时,公共部分320可以向私有部分330(例如,向私有部分330的会话ID生成器334)发送开始会话请求302。在一些实施例中,每次应用程序312被启动或开始时,每次应用程序312被选择或被带到用户界面的前台时,和/或每次应用程序312用于启动或执行特定操作时,公共部分320可以发送开始会话请求302。响应于接收到开始会话请求302,会话ID生成器334可以生成会话ID 304。在一些实施例中,会话ID生成器334可以是生成作为会话ID 304的随机数的随机数生成器,生成作为会话ID 304的伪随机数的伪随机数生成器,生成作为会话ID 304的计数值的计数器,或根据特定序列或模式生成会话ID 304的序列或模式生成器。尽管会话ID生成器334被显示为私有部分330的一部分,但是在一些实施例中,会话ID生成器334可以是应用程序312的不同部分的一部分、另一应用程序的一部分或通信装置的另一部件的一部分(例如,操作系统)。
在会话ID生成器334生成了会话ID 304之后,会话ID 304被提供给公共部分320的密钥派生函数(KDF)322和私有部分330的密钥派生函数(KDF)332。私有部分330的KDF 332将会话ID304与授权密钥331组合以生成会话密钥333。例如,KDF 332可以是将会话ID 304和授权密钥331作为操作数来生成会话密钥333的数学运算(例如,相加、乘法等)或逻辑运算(例如,XOR、XNOR等)。作为另一示例,KDF 332可以是以授权密钥331作为输入数据进行计算的散列算法,并且会话ID 304可以用作散列算法的盐值(或反之亦然)以生成会话密钥333。作为另一示例,KDF 332可以是使用授权密钥331作为加密密钥(或反之亦然)加密会话ID 304以生成会话密钥333的加密算法。在一些实施例中,KDF 332可以是一个或多个数学或逻辑运算、散列算法和/或加密算法的组合。例如,KDF 332可以是应用于向会话ID 304和授权密钥331应用逻辑运算的结果的加密算法。
公共部分320的KDF 322采用与私有部分330的KDF 332相同的算法和/或运算。在从会话ID生成器334接收到会话ID 304时,公共部分320使用KDF 322将授权密钥321与会话ID 304组合以派生会话密钥323。在一些实施例中,当私有部分330响应于开始会话请求302时,公共部分320使用的KDF 322可以由私有部分330提供给公共部分320。
在一些实施例中,KDF 322和KDF 332可以是动态的,并且可以从一个会话改变到另一个会话。例如,对于每个新会话,可以通过将动态种子应用于基本密钥派生函数来派生KDF 332作为基本密钥派生函数的变体。动态种子可以是例如对在公共部分320和私有部分330之间建立的先前会话进行计数的会话计数器。在一些实施例中,私有部分330可以包括一组密钥派生函数,并且可以从该组密钥派生函数中选择用于特定会话的KDF 332(例如,通过每当在公共部分320和私有部分330之间建立新的会话时旋转KDF)。公共部分320使用的KDF 322可以以相同的方式获得。在一些实施例中,如果公共部分320包含要从中选择的一组密钥派生函数,则可以由私有部分330基于私有部分330为特定会话所使用的特定KDF332来选择KDF 322。
为了调用在私有部分330中实现的函数,公共部分320将生成的会话密钥323提供给函数调用接口325。函数调用接口325可以使用会话密钥323对正被调用的函数的函数调用及其相关参数进行加密,并且将加密的信息打包为函数调用请求306的有效负载。公共部分320然后将具有加密的有效负载的函数调用请求306发送到私有部分330的函数调用接口335。当私有部分330接收到函数调用请求306时,函数调用接口335解密函数调用请求306的有效负载以取回函数调用及其相关参数。在正确地解密函数调用之后,识别对应的函数336,私有部分330执行函数调用请求306的底层函数336。在一些实施例中,如果函数336涉及将数据或信息从私有部分330返回给公共部分320,则在被发送到公共部分320之前,返回数据或信息可以由会话密钥333加密。公共部分320可以使用会话密钥323解密该加密的返回数据和信息。
在一些实施例中,在预定时间段和/或一定数量的函数调用之后,私有部分330可以终止当前会话,并迫使公共部分320协商新的会话ID并获得用于从公共部分320任何进一步的函数调用的新会话密钥。例如,在公共部分320和私有部分330之间建立的会话可以在生成对应的会话ID之后经过2分钟、5分钟或10分钟等等之后终止,或者在应用程序312已经空闲1分钟、2分钟、5分钟、或者10分钟后终止。作为另一示例,在公共部分320和私有部分330之间建立的会话可以在私有部分从公共部分320接收1、2或5个函数调用请求之后终止。在一些实施例中,预定时间段或函数调用的数量可以由应用程序提供方或用户可配置。
如上所述,仅需要两种类型的通信从应用程序312的公共部分320调用在私有部分330中实现的任何函数,即开始会话请求302和函数调用请求306。因此,在一些实施例中,为了进一步保护私有部分330不被恶意代码访问,私有部分330可被配置为忽略来自公共部分320的既不是开始会话请求也不是函数调用请求的通信或请求。
在一些实施例中,应用程序312可以包括在公共部分320和私有部分330之间接口的本地接口(未示出),例如Java本地接口(JNI)。本文描述的由私有部分330执行的用于建立与公共部分320的会话的一些或全部函数可以在本地接口中实现。
图4示出根据一些实施例的可以使用本文描述的访问控制技术的示例性系统400的框图。系统400可以是例如用于进行基于云的交易的基于云的交易系统。系统400包括便携式通信装置410(例如,移动装置)、基于云的交易平台(CBP)480和移动应用程序平台(MAP)470。CBP 480可以使用一个或多个计算装置来实现,并且可以与发行方、交易处理器和/或其他合适的实体相关联或由发行方、交易处理器和/或其他合适的实体来操作。CBP480实现一系列功能,包括账户管理以及账户参数的生成和补充,以便经由便携式通信装置410进行基于云的交易。
MAP 470用于促进CBP 480与便携式通信装置410中的移动应用程序414(例如,交易应用程序)之间的通信。MAP 470可以使用一个或多个计算装置来实现,并且可以与移动应用程序414(例如,移动软件应用程序)的服务提供方(例如发行方、移动钱包提供方、商家和/或其他合适的实体)相关联或由其操作。在一些实施例中,MAP 470可以与CBP 480相同的实体关联或由其操作,或者它们可以是分开的。MAP 470用于在移动应用程序414和CBP480之间的中介请求,并且确保一旦建立了与便携式通信装置410的连接,例如经由通信网络482(例如,互联网,移动或蜂窝网络等),任何一方发起的请求和响应都得到满足。应当理解,在一些实施例中,CBP 480、MAP 470和/或发行方或主机处理系统472的一个或多个功能可以集成到相同的计算系统或不同的计算系统中。
便携式通信装置410可用于进行由CBP 480和/或MAP 470促成的基于云的交易(例如,支付交易)。便携式通信装置410包括装置硬件432、移动操作系统(OS)422和应用程序环境412。装置硬件432包括非接触式接口434,其可以与另一装置非接触地通信或以其他方式呈现信息,例如访问装置460的非接触式读取器462。非接触式接口434的示例可以包括可以使用无线电频率发送和接收通信的近场通信(NFC)接口,或其他无线通信协议(例如蓝牙、低功耗蓝牙(BLE)、Wi-Fi等)。非接触式接口434的示例还可以包括诸如显示器的光学接口,以呈现例如快速响应(QR)代码、条形码等信息。
便携式通信装置410的应用程序环境412可以包括移动应用程序414,诸如由服务提供方提供的交易应用程序。例如,如果移动应用程序414的服务提供方是发行方,则移动应用程序414可以是移动银行应用程序或移动支付应用程序。如果服务提供方是诸如支持多个发行方的移动网络运营商或第三方钱包提供方的移动钱包提供方,则移动应用程序414可以是移动钱包应用程序。对于商家,移动应用程序414可以是商家自身的交易应用程序(消费者可以从该交易应用程序进行电子商务或销售点交易)或支持多个商家的移动钱包应用程序。
在一些实施例中,移动应用程序414可以包括集成到移动应用程序414中的装置上的基于云的交易逻辑,以支持基于云的交易。装置上的基于云的交易逻辑执行各种功能以促进基于云的交易,例如获取在支付交易中使用的账户参数,并将其传送到移动操作系统422以通过非接触式接口434进行传输。例如,装置上的基于云的交易逻辑可以使用从CBP480配置的密码密钥(例如,有限使用密钥)来生成通过非接触式接口传送到访问装置460以进行支付交易的交易密码。交易密码可以被发送到交易处理网络484以获得对支付交易的授权。装置上的基于云的交易逻辑还管理在已经配置账户之后提供的初始服务配置文件参数,以确保启动对账户参数补充和其他账户参数管理活动的请求。
为了为基于云的支付交易配置便携式通信装置410,可以使用CBP 480来配置与发行方相关联的账户组合,并且向便携式通信装置410提供用于在进行基于云的交易时使用的账户参数。由CBP 480建立的账户组合可以包括诸如风险参数(例如,速度控制)之类的特征,其管理为每个组合中的账户在需要刷新所提供的装置上的账户参数时的触发。为了确保一致的性能和可用性,可以通过CBP 480实现可在服务配置文件中配置的一组最小参数。为了确保根据账户组合的服务配置文件中指定的规则处理基于云的支付交易,CBP 480在已启用账户的生命周期内执行各种核心功能。这些功能可以包括配置、主动账户管理、支付验证、交易处理、生命周期管理和后付款。
在将账户配置为基于云的交易账户之前,CBP 480可以为组合创建服务配置文件。配置可以包括获得注册账户,创建账户信息(例如备用账户标识符(例如备用主账号(PAN)))或作为可以用于代替真实账户标识符(例如,真正的PAN)进行交易的账户标识符替代的令牌,并为组合建立了继承服务配置文件。一旦配置了账户,相关的服务配置文件的详细信息便与交易处理和装置上的基于云的交易逻辑共享,以确保在交易处理时和用户使用移动应用程序期间做出决策。
一旦配置了账户,主动账户管理便可以由CBP 480执行。主动账户管理可以从交易处理活动或移动应用程序活动启动。在配置账户之后,主动账户管理功能生成要部署到便携式通信装置410的初始账户参数集合。账户参数可以包括在配置期间生成的账户信息(例如,备用账户标识符或令牌)以及动态信息,以确保账户参数集合在被传送到装置之后仅具有有限的使用或有限的寿命。取决于正在支持的交易类型,动态信息可包括有限使用的密码密钥或动态数据。例如,动态信息可以包括用于计算密码的有限使用密钥(LUK)以及有限使用动态数据以支持传统动态卡验证值或基于代码的实现。
在交易处理期间,如果由CBP 480维护的用于特定账户的服务配置文件参数指示便携式通信装置410上的账户参数需要被替换,则CBP 480的主动账户管理功能可以经由MAP 470连接到便携式通信装置410以补充账户参数。类似地,如果存储在便携式通信装置410上的装置上服务配置文件参数指示需要或接近需要补充账户参数(即,通过监测账户参数阈值),则移动应用程序414可以向CBP 480请求账户参数补充。
一旦便携式通信装置410被配置用于进行基于云的交易,则可以经由便携式通信装置410通过与访问装置460的非接触式读取器462(例如,在商家位置)交互来进行交易。访问装置460的部件可以包括销售点(POS)终端464和/或电子收款机466。访问装置460可以耦接到收单方474(例如,经由未示出的商家计算机)。收单方474可以经由交易处理网络484连接到发行方或主机处理系统472。交易处理网络484可以包括一个或多个服务器计算机。服务器计算机通常是功能强大的计算机或计算机集群。例如,服务器计算机可以是大的主机、小型计算机集群或像一个单元一样工作的一组服务器。在一个示例中,服务器计算机可以是耦连至网络服务器的数据库服务器。交易处理网络484可以使用任何适当的有线或无线网络,包括互联网。
交易处理网络484可以包括数据处理子系统、网络和用来支持和传送授权服务、异常文件服务、交易评分服务和清算及结算服务的操作。示例性交易处理网络可以包括VisaNetTM。诸如VisaNetTM的交易处理网络能够处理信用卡交易、借记卡交易和其他类型的商业交易。VisaNetTM具体包括处理授权请求的VIP系统(Visa集成支付系统)和执行清算和结算服务的Base II系统。
实体中的每一个(例如,收单方474、交易处理网络484、发行方或主机处理系统472)可以包括一个或多个计算机以实现通信,或者执行本文所述的一个或多个功能。
为了进行基于云的交易,便携式通信装置410的用户可以对着访问装置460的非接触式读取器462(例如,经由NFC)轻触便携式通信装置410,或者在便携式通信装置410的屏幕上显示诸如条形码或QR码之类的图像,其可以由访问装置460的非接触式读取器462(例如,光学扫描器或读取器)扫描。在一些实施例中,便携式通信装置410可以向访问装置460提供账户标识符(例如,备用账户标识符、令牌等)以及附加信息,例如有限使用账户参数或从有限使用账户参数导出的信息。例如,账户标识符或令牌和/或附加信息(例如,交易密码)可以被编码成由访问装置460扫描的条形码或QR码;或者账户标识符或令牌和/或附加信息可以经由NFC被发送到访问装置460。在一些实施例中,有限使用的账户参数可以包括交易密码。
访问装置460或耦接到访问装置460的商家计算机可以生成包括账户标识符和附加信息(例如,有限使用账户参数或从有限使用账户参数导出的信息)的授权请求消息,并且将该授权请求消息转发给收单方474。授权请求消息然后被发送到交易处理网络484。交易处理网络484然后将授权请求消息转发到与关联于便携式通信装置410的账户的发行方相关联的对应的发行方或主机处理系统472。
在发行方或主机处理系统472接收到授权请求消息之后,可以解析授权请求消息,并将授权请求消息中的信息发送到CBP 480进行验证。然后将授权响应消息发送回交易处理网络484以指示当前交易是否被授权(或未被授权)。交易处理网络484然后将授权响应消息转发回收单方474。在一些实施例中,即便发行方或主机处理系统472已经授权交易,交易处理网络484也可以拒绝交易,例如根据欺诈风险分数的值或根据有限使用的账户参数是否由CBP 480验证。收单方474然后将授权响应消息发送到商家计算机和/或访问装置460。授权响应结果可以由访问装置460显示,或者可以在物理收条上打印输出。替代性地,如果交易是在线交易,则商家可以提供网页或授权响应消息的其他指示,作为虚拟收条。收条可以包括交易的交易数据。
在一天结束时,常规的清算和结算处理可以由交易处理网络484进行。清算过程是在收单方和发行方之间交换财务细节的过程,以利于发布到顾客的支付账户,并核对用户的结算位置。
图5示出了便携式通信装置501(例如,实现便携式通信装置备410)的框图,其中可以实现本文描述的过程的一些实施例。便携式通信装置501可以包括耦接到存储器502的装置硬件504。装置硬件504可以包括处理器505、通信子系统509、用户接口506、显示屏幕507(其可以是用户接口506的一部分)和非接触式接口508。处理器505可以被实现为一个或多个集成电路(例如,一个或多个单核或多核微处理器和/或微控制器),并且被用于控制便携式通信装置501的操作。处理器505可以响应于存储在存储器502中的程序代码或计算机可读代码执行多种程序,并且可以维护多个同时执行的程序或进程。通信子系统509可以包括一个或多个RF收发器和/或连接器,其可由便携式通信装置501使用以便与其他装置进行通信和/或与外部网络连接。用户接口506可以包括输入元件和输出元件的任何组合,以便允许用户与便携式通信装置501交互并且调用该便携式通信装置的功能。在一些实施例中,显示屏幕507可以是用户接口506的一部分。
非接触式接口508可以包括一个或多个RF收发器,以便与访问装置的非接触式读取器交互以进行交易(例如,支付交易、接入交易、信息交换等)。在一些实施例中,移动OS514可以使用卡仿真API 516来访问非接触式接口508,而不需要使用安全元件。在一些实施例中,显示屏幕507也可以是非接触式接口508的一部分,并且例如用于使用QR码、条形码等来执行交易。
存储器502可以使用任何数量的非易失性存储器(例如,闪速存储器)和易失性存储器(例如,DRAM、SRAM)的任何组合、或任何其他非暂时性存储介质、或其组合介质来实现。存储器502可以存储移动OS 514和移动应用程序环境510,其中一个或多个移动应用程序驻留,包括要被处理器505执行的交易应用程序512(例如,移动钱包应用程序、移动银行应用程序、移动支付应用程序、商家应用程序等)。在一些实施例中,移动OS 514可以实现一组卡仿真API 516,其可由交易应用程序512调用以便访问非接触式接口508来与访问装置交互。
根据一些实施例,交易应用程序512可以包括多个软件层。例如,交易应用程序512可以包括公共部分520(例如,SDK)和私有部分530(例如,NDK)。公共部分520可以包括一组用于实现非安全敏感函数的公共API集合,例如用户接口函数、网络或通信函数,以及可以调用在私有部分530中实现的安全敏感函数的函数。公共部分520可以用诸如Java的高级编程语言编写。私有部分530可以包括用于实现安全敏感函数的本地库,例如令牌请求函数534,账户参数补充函数536,密码生成函数538等。私有部分530可以用诸如C或C++的低级编程语言编写。
可以调用令牌请求函数534以从远程服务器(例如,CBP或发行方或主机处理系统)请求令牌。令牌可以用作真实账户标识符的替代进行交易,例如通过将令牌发送到访问装置。使用令牌而不是真实账户标识符可以更安全,因为在进行交易时不会传送真实账户标识符。令牌请求函数534可以例如在注册时被调用以请求初始令牌,或者当当前令牌的寿命已过期时。
账户参数补充函数536可以被调用以补充或更新账户参数,例如来自从远程服务器(例如,CBP或发行方或主机处理系统)的有限使用密钥。在交易时,有限使用密钥用于生成提供给访问装置进行交易的交易密码。有限使用密钥可以与一组或一个或多个有限使用的阈值(例如,对于预定时间段、预定次数的交易和/或预定累积交易金额有效)相关联,以限制LUK的使用。当LUK的一个或多个有限使用的阈值已经过期或即将到期时,可以调用账户参数补充函数536来请求新的LUK。
在密码生成函数538可以在交易时被调用以生成提供给访问装置进行交易的交易密码。可以通过从访问装置接收动态交易数据(例如,交易金额、交易日期、不可预知的数字等)以及用LUK加密该动态交易数据来生成交易密码。在一些实施例中,可以通过加密静态字符串来生成交易密码而不使用LUK(例如,如果访问装置不支持将动态数据传输到便携式通信装置)。
根据一些实施例,使用本文描述的访问控制技术可以保护在私有部分530中实现的安全敏感函数免受恶意代码危害。图6示出了根据一些实施例的交易应用程序612(例如,交易应用程序512)的一些部件的框图。包括请求会话ID的请求和生成会话密钥的各种部件的各种功能类似于关于图3所讨论的那些,因此不必重复其详细描述。
在编译时,在公共部分620和私有部分630之间生成并共享唯一的加密密钥。该唯一的加密密钥作为授权密钥621嵌入到公共部分620中,并作为授权密钥631嵌入到私有部分630中。唯一的加密密钥可以例如由交易应用程序612、CBP或发行方或主机处理系统的应用程序提供方生成。
当公共部分620访问私有部分630(例如,为了调用令牌请求函数、账户参数补充函数或密码生成函数)时,公共部分620向会话ID生成器634发送开始会话请求602。例如,每当交易应用程序612被启动或开始时,每当交易应用程序612被选择或被带到用户接口的前台时,每当交易应用程序612被用于调用令牌请求函数或账户参数补充函数时,和/或每当交易应用程序612用于通过调用密码生成功函数行交易时,公共部分620可以发送开始会话请求602。会话ID生成器634生成会话ID 604,并用会话ID 604响应公共部分620。私有部分630使用KDF 632将授权密钥631与生成的会话ID 604组合以得到会话密钥633。在接收到会话ID 604时,公共部分620使用KDF 622将授权密钥621与生成的会话ID 604组合以得到会话密钥623。会话密钥623和633可以是对称密钥。
为了调用在私有部分630中实现的函数,公共部分620使用该会话密钥623加密函数调用及其相关联的参数,并且将加密的信息打包为函数调用请求606的有效负载。例如,如图所示,公共部分620的函数调用接口625可以调用在私有部分630中实现的密码生成函数,以生成交易密码进行交易。公共部分620的函数调用接口625可以将函数调用“GenCrypto”和从访问装置接收到的动态交易数据加密为函数调用的参数以生成加密的有效负载,并将带有加密的有效负载的函数调用请求606发送到私有部分630。
当私有部分630接收到函数调用请求606时,私有部分630的函数调用接口635使用会话密钥633解密函数调用请求606的有效负载以取回函数调用及其相关参数。如果使用有效的会话密钥623正确地加密了函数调用,则函数调用接口625可以将函数调用识别为密码生成函数调用。私有部分630然后向密码生成器636提供函数调用的参数(例如,动态交易数据),密码生成器然后执行密码生成函数,以使用LUK来加密动态交易数据以生成交易密码608。所生成的交易密码608然后被发送回公共部分620,并且公共部分620然后可以向访问装置(例如,经由非接触式接口)提供交易密码608以进行交易。在一些实施例中,交易密码608可以在被发送到公共部分620之前使用会话密钥633由私有部分630加密,并且公共部分620可以在将其提供给访问装置之前使用会话密钥623解密交易密码608。在一些实施例中,公共部分620可以不直接访问令牌,并且可以由公共部分620使用类似技术从私有部分630取回该令牌。所取回的令牌和交易密码可以由公共部分620提供给访问装置以进行交易。私有部分630中实现的其他安全敏感函数(例如,令牌请求函数、账户参数补充函数)可以由公共部分620使用类似的技术来调用。
图7示出根据一些实施例的在具有公共部分和私有部分的应用程序中控制访问的过程700的流程图。过程700可以由应用程序的公共部分执行,以调用在同一应用程序的私有部分中实现的函数。在一些实施例中,公共部分可以以第一编程语言编写,并且私有部分可以以与第一编程语言不同的第二编程语言编写。在方框702,公共部分向同一应用程序内的私有部分发送开始会话请求,以建立与私有部分的会话。例如,每次启动应用程序时,或每次应用程序被用于启动交易时等等,可以发送开始会话请求。在方框704,公共部分从私有部分接收会话ID。在方框706,公共部分使用该会话ID和密钥派生函数来生成会话密钥。例如,公共部分可以使用密钥派生函数将会话ID与授权密钥组合以生成会话密钥。授权密钥可以是公共部分和私有部分之间的共享秘密。在方框708,公共部分加密表示对由公共部分调用的在私有部分中实现的函数的函数调用的有效载荷和任何相关联的参数。在方框710,公共部分将包括加密的有效负载的函数调用请求发送到私有部分以调用该函数。被调用并在私有部分中实现的函数可以是例如令牌请求函数、账户参数补充函数和密码生成函数中的一个。
图8示出根据一些实施例的在具有公共部分和私有部分的应用程序中控制访问的过程800的流程图。过程800可以由应用程序的私有部分执行,以控制对在应用程序的私有部分中实现的函数的访问。在方框802,应用程序的私有部分从同一应用程序的公共部分接收开始会话请求。例如,每次启动应用程序时,或每次应用程序被用于启动交易时等等,可以接收开始会话请求。在方框804,私有部分生成会话ID。在方框806,私有部分将生成的会话ID发送到公共部分。在方框808,私有部分使用该会话ID和密钥派生函数来生成会话密钥。例如,私有部分可以使用密钥派生函数将会话ID与授权密钥组合以生成会话密钥。授权密钥可以是公共部分和私有部分之间的共享秘密。在方框810,私有部分接收包括表示对在私有部分中实现的函数的函数调用的加密有效载荷和任何相关参数的函数调用请求。在方框812,私有部分使用会话密钥解密经加密的有效负载以取回该函数调用。在方框814,私有部分执行函数调用的函数。被执行并在私有部分中实现的函数可以是例如令牌请求函数、账户参数补充函数和密码生成函数中的一个。在一些实施例中,私有部分可以忽略来自公共部分的不是开始会话请求、且不是函数调用请求的任何通信或请求。在一些实施例中,公共部分可以以第一编程语言编写,并且私有部分可以以与第一编程语言不同的第二编程语言编写。
尽管上述描述可能已经描述了在具有私有部分和公共部分的应用程序中使用的访问控制技术,但是应当理解,该技术可以用于保护在应用程序的任何软件层中实现的函数。此外,应用程序不限于仅具有两个软件层并且可以具有任何数量的软件层(例如,三个或更多个软件层、部分或库)。
可以使用耦接到存储代码或指令的存储器的一个或多个处理器来实现本文所述的任何计算装置、通信装置、计算机、服务器等,上述代码或指令其当由一个或多个处理器执行时,使得装置执行本文所述的方法和过程中的一个或多个。用于包含本文所述的代码或代码部分的存储器、存储介质和计算机可读介质可以包括本领域已知或使用的任何适当介质,包括存储介质和通信介质,诸如但不限于在用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实现的易失性和非易失性、可移动和不可移动介质,包括RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储装置、数据信号、数据传输或可以用来存储或传送期望信息并且可以由计算机访问的任何其他介质。基于本文中提供的公开和教导,本领域技术人员会认识到实现各实施例的其他方式和/或方法。
以上描述是示意性的不是限制性的。本领域技术人员在阅读本公开后,会明白各个实施例的许多变形。因此,本发明的范围可以不参照上文的描述确定,而是可以参照所附权利要求连同其全部范围或等同物确定。
本文描述的方法和过程本质上是示例性的,并且根据一些实施例的方法和过程可以以与本文所描述的不同的顺序执行一个或多个步骤,包括一个或多个未特别描述的附加步骤,省略一个或多个步骤,将一个或多个步骤组合成单个步骤,将一个或多个步骤分成多个步骤,和/或其任何组合。
应当理解,如上文描述的一些实施例可以用控制逻辑的形式以模块化或集成方式使用计算机软件来实现。基于本文中提供的公开内容和教导,本领域的普通技术人员可以知道并意识到使用硬件及硬件和软件的组合实现本发明的其他方式和/或方法。
本申请中描述的任何软件组件或功能可以实现为使用任何适当计算机语言(比方说例如Java,C++或Perl),使用例如传统的或面向对象的技术由处理器执行的软件代码。软件代码可以存储为计算机可读介质(诸如随机存取存储器(RAM)、只读存储器(ROM)、磁介质(诸如硬盘或软盘)或光介质(诸如CD-ROM))上的一系列指令或命令。任何这种计算机可读介质还可以驻存在单个运算设备上或驻存在单个运算设备内,并且可以位于系统或网络中的不同运算设备或在系统或网络中的不同运算设备上。
在不偏离本发明的范围下,任何实施例的一个或多个特征可以与任何其他实施例的一个或多个特征组合。
除非明确指示有相反的意思,否则“一个/种”或“该/所述”的叙述旨在表示“一个/种或多个/种”。
Claims (20)
1.一种便携式通信装置,包括:
一个或多个处理器;以及
耦接到所述一个或多个处理器并存储计算机可读代码的存储器,所述计算机可读代码当由所述一个或多个处理器执行时,实现内部具有公共部分和私有部分的应用程序,所述应用程序安装在所述便携式通信装置上;
其中所述公共部分被配置为:
向所述私有部分发送开始会话请求;
从所述私有部分接收会话标识符ID;
使用所述会话ID和密钥派生函数生成会话密钥;
使用所述会话密钥加密函数调用请求的有效负载,所述有效负载表示对在所述私有部分中实现的函数的函数调用;以及
将包括加密的有效负载的所述函数调用请求发送到所述私有部分;并且
所述私有部分被配置为:
执行所述函数调用请求中正被调用的所述函数。
2.根据权利要求1所述的便携式通信装置,其中所述私有部分还被配置为:
响应于从所述公共部分接收到所述开始会话请求而生成所述会话ID。
3.根据权利要求2所述的便携式通信装置,其中所述私有部分还被配置为:
使用所述会话ID和所述密钥派生函数生成所述会话密钥;以及
使用所述会话密钥解密所述加密的有效负载以取回所述函数调用。
4.根据权利要求1所述的便携式通信装置,其中所述会话密钥还基于在所述公共部分和所述私有部分之间共享的授权密钥生成。
5.根据权利要求1所述的便携式通信装置,其中所述公共部分被配置为在每次启动所述应用程序时将所述开始会话请求发送到所述私有部分。
6.根据权利要求1所述的便携式通信装置,其中所述公共部分被配置为在每次所述应用程序被用于启动交易时将所述开始会话请求发送到所述私有部分。
7.根据权利要求1所述的便携式通信装置,其中在所述私有部分中实现的所述函数是令牌请求函数、账户参数补充请求函数或密码生成函数中的一个。
8.根据权利要求1所述的便携式通信装置,其中所述私有部分被配置为忽略来自所述公共部分的不是开始会话请求、且不是函数调用请求的任何请求。
9.根据权利要求1所述的便携式通信装置,其中所述公共部分以第一编程语言编写,并且所述私有部分以与所述第一编程语言不同的第二编程语言编写。
10.一种在内部具有公共部分和私有部分的应用程序中控制访问的方法,所述应用程序安装在便携式通信装置上,所述方法包括:
由所述应用程序的所述公共部分向所述应用程序的所述私有部分发送开始会话请求;
由所述公共部分从所述私有部分接收会话标识符ID;
由所述公共部分使用所述会话ID和密钥派生函数生成会话密钥;
由所述公共部分使用所述会话密钥加密函数调用请求的有效负载,所述有效负载表示对在所述私有部分中实现的函数的函数调用;
由所述公共部分将包括加密的有效负载的所述函数调用请求发送到所述私有部分以调用所述函数。
11.根据权利要求10所述的方法,其中所述会话密钥还基于在所述公共部分和所述私有部分之间共享的授权密钥生成。
12.根据权利要求10所述的方法,其中在每次启动所述应用程序时发送所述开始会话请求。
13.根据权利要求10所述的方法,其中在每次所述应用程序被用于启动交易时发送所述开始会话请求。
14.根据权利要求10所述的方法,其中正被调用且在所述私有部分中实现的所述函数是令牌请求函数、账户参数补充请求函数或密码生成函数中的一个。
15.一种在内部具有公共部分和私有部分的应用程序中控制访问的方法,所述应用程序安装在便携式通信装置上,所述方法包括:
由所述应用程序的所述私有部分从所述应用程序的公共部分接收开始会话请求;
由所述私有部分响应于所述开始会话请求生成会话ID;
由所述私有部分将所述会话ID发送到所述公共部分;
由所述私有部分使用所述会话ID和密钥派生函数生成会话密钥;
由所述私有部分接收包括加密的有效负载的函数调用请求,所述有效负载表示对在所述私有部分中实现的函数的函数调用;
由所述私有部分使用所述会话密钥解密所述加密的有效负载以取回所述函数调用;以及
由所述私有部分执行所述函数调用的所述函数。
16.根据权利要求15所述的方法,其中所述会话密钥还基于在所述公共部分和所述私有部分之间共享的授权密钥生成。
17.根据权利要求15所述的方法,其中在每次启动所述应用程序时接收所述开始会话请求。
18.根据权利要求15所述的方法,其中在每次所述应用程序被用于启动交易时接收所述开始会话请求。
19.根据权利要求15所述的方法,其中正被执行且在所述私有部分中实现的所述函数是令牌请求函数、账户参数补充请求函数或密码生成函数中的一个。
20.根据权利要求15所述的方法,其中所述私有部分忽略来自所述公共部分的不是开始会话请求、且不是函数调用请求的任何请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462097267P | 2014-12-29 | 2014-12-29 | |
US62/097,267 | 2014-12-29 | ||
PCT/IB2015/060038 WO2016108189A1 (en) | 2014-12-29 | 2015-12-29 | Authorizing access to an application library |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107210912A CN107210912A (zh) | 2017-09-26 |
CN107210912B true CN107210912B (zh) | 2021-03-12 |
Family
ID=55135482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580074653.7A Active CN107210912B (zh) | 2014-12-29 | 2015-12-29 | 对应用程序库的授权访问 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10044716B2 (zh) |
EP (1) | EP3241302B1 (zh) |
CN (1) | CN107210912B (zh) |
AU (1) | AU2015373174B2 (zh) |
RU (1) | RU2017127173A (zh) |
SG (1) | SG11201705216YA (zh) |
WO (1) | WO2016108189A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9830149B2 (en) * | 2016-01-14 | 2017-11-28 | International Business Machines Corporation | Automatic extraction of sensitive code fragments to be executed in a sandbox |
US20180097621A1 (en) * | 2016-09-30 | 2018-04-05 | Sony Interactive Entertainment America Llc | Obfuscated secret key derivation for non-secure commercial off-the-shelf (cots) devices |
EP3327596A1 (en) * | 2016-11-23 | 2018-05-30 | F. Hoffmann-La Roche AG | Supplementing measurement results of automated analyzers |
US10693892B2 (en) * | 2017-12-11 | 2020-06-23 | International Business Machines Corporation | Network attack tainting and tracking |
US11102180B2 (en) | 2018-01-31 | 2021-08-24 | The Toronto-Dominion Bank | Real-time authentication and authorization based on dynamically generated cryptographic data |
CN109033763B (zh) * | 2018-08-01 | 2020-09-04 | 浪潮金融信息技术有限公司 | 一种程序加密方法、装置、可读介质及存储控制器 |
US12124544B2 (en) * | 2018-09-10 | 2024-10-22 | Aveva Software, Llc | Secure calling convention system and methods |
CN111611551B (zh) * | 2020-05-06 | 2023-04-18 | 山东正中信息技术股份有限公司 | 一种基于国密算法的动态链接库保护方法及其系统 |
US20230046788A1 (en) * | 2021-08-16 | 2023-02-16 | Capital One Services, Llc | Systems and methods for resetting an authentication counter |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101359352A (zh) * | 2008-09-25 | 2009-02-04 | 中国人民解放军信息工程大学 | 分层协同的混淆后api调用行为发现及其恶意性判定方法 |
CN102063388A (zh) * | 2011-01-10 | 2011-05-18 | 北京深思洛克软件技术股份有限公司 | 一种数据保护方法和装置 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5848145A (en) * | 1996-12-20 | 1998-12-08 | Lucent Technologies Inc. | Automatic learning of network routing using random routes |
US6065120A (en) * | 1997-12-09 | 2000-05-16 | Phone.Com, Inc. | Method and system for self-provisioning a rendezvous to ensure secure access to information in a database from multiple devices |
US6862683B1 (en) | 2000-03-24 | 2005-03-01 | Novell, Inc. | Method and system for protecting native libraries |
US8005965B2 (en) * | 2001-06-30 | 2011-08-23 | International Business Machines Corporation | Method and system for secure server-based session management using single-use HTTP cookies |
US7162711B2 (en) | 2002-12-12 | 2007-01-09 | Sun Microsystems, Inc. | Method of automatically virtualizing core native libraries of a virtual machine |
KR100584316B1 (ko) * | 2003-10-17 | 2006-05-26 | 삼성전자주식회사 | 단말장치와 서버간의 프레전스 정보 데이터 동기화를 위한시스템 및 방법 |
US20060288215A1 (en) | 2005-06-15 | 2006-12-21 | Shinichi Takemura | Methods and apparatuses for utilizing application authorization data |
US7627760B2 (en) | 2005-07-21 | 2009-12-01 | Microsoft Corporation | Extended authenticated key exchange |
CN102122333B (zh) * | 2011-03-21 | 2015-01-07 | 北京书生国际信息技术有限公司 | 一种登录文档库系统的方法 |
GB2442249B (en) * | 2007-02-20 | 2008-09-10 | Cryptomathic As | Authentication device and method |
JP5034921B2 (ja) * | 2007-12-14 | 2012-09-26 | ソニー株式会社 | 情報処理装置、ディスク、および情報処理方法、並びにプログラム |
JP5383797B2 (ja) | 2008-05-29 | 2014-01-08 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | 交換式プリンタコンポーネントの真正性の確認 |
US8196213B2 (en) | 2008-07-11 | 2012-06-05 | Microsoft Corporation | Verification of un-trusted code for consumption on an insecure device |
CN102215121B (zh) * | 2010-04-07 | 2014-10-15 | 苹果公司 | 用于建立和利用备份通信信道的装置和方法 |
US8429624B2 (en) * | 2010-08-17 | 2013-04-23 | Lsi Corporation | Application programming interface (API) router implementation and method |
US8683462B2 (en) | 2010-10-22 | 2014-03-25 | Adobe Systems Incorporated | Handling calls to native code in a managed code environment |
US9231926B2 (en) * | 2011-09-08 | 2016-01-05 | Lexmark International, Inc. | System and method for secured host-slave communication |
CN102394749B (zh) * | 2011-09-26 | 2014-03-05 | 深圳市文鼎创数据科技有限公司 | 数据传输的线路保护方法、系统、信息安全设备及应用设备 |
JP5100884B1 (ja) * | 2011-12-02 | 2012-12-19 | 株式会社東芝 | メモリ装置 |
US20130159195A1 (en) * | 2011-12-16 | 2013-06-20 | Rawllin International Inc. | Authentication of devices |
US8863126B2 (en) | 2011-12-29 | 2014-10-14 | Oracle International Corporation | Java virtual machine embedded in a native mobile application |
JP5784562B2 (ja) * | 2012-09-07 | 2015-09-24 | 株式会社東芝 | 通信装置およびプログラム |
GB2512944A (en) * | 2013-04-12 | 2014-10-15 | Mastercard International Inc | Systems and methods for outputting information on a display of a mobile device |
US9578025B2 (en) * | 2013-10-14 | 2017-02-21 | Zumigo, Inc. | Mobile network-based multi-factor authentication |
US9270449B1 (en) * | 2014-01-17 | 2016-02-23 | Amazon Technologies, Inc. | Secured communication in network environments |
-
2015
- 2015-12-29 SG SG11201705216YA patent/SG11201705216YA/en unknown
- 2015-12-29 WO PCT/IB2015/060038 patent/WO2016108189A1/en active Application Filing
- 2015-12-29 CN CN201580074653.7A patent/CN107210912B/zh active Active
- 2015-12-29 RU RU2017127173A patent/RU2017127173A/ru not_active Application Discontinuation
- 2015-12-29 US US14/982,869 patent/US10044716B2/en active Active
- 2015-12-29 AU AU2015373174A patent/AU2015373174B2/en active Active
- 2015-12-29 EP EP15823821.2A patent/EP3241302B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101359352A (zh) * | 2008-09-25 | 2009-02-04 | 中国人民解放军信息工程大学 | 分层协同的混淆后api调用行为发现及其恶意性判定方法 |
CN102063388A (zh) * | 2011-01-10 | 2011-05-18 | 北京深思洛克软件技术股份有限公司 | 一种数据保护方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
AU2015373174A1 (en) | 2017-07-13 |
EP3241302A1 (en) | 2017-11-08 |
CN107210912A (zh) | 2017-09-26 |
WO2016108189A1 (en) | 2016-07-07 |
RU2017127173A (ru) | 2019-01-31 |
US20160219055A1 (en) | 2016-07-28 |
AU2015373174B2 (en) | 2020-03-05 |
SG11201705216YA (en) | 2017-07-28 |
RU2017127173A3 (zh) | 2019-07-26 |
EP3241302B1 (en) | 2020-11-04 |
US10044716B2 (en) | 2018-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11068608B2 (en) | Mutual authentication of software layers | |
US11240219B2 (en) | Hybrid integration of software development kit with secure execution environment | |
US10635430B2 (en) | Over-the-air provisioning of application library | |
CN107925572B (zh) | 软件应用程序到通信装置的安全绑定 | |
CN107210912B (zh) | 对应用程序库的授权访问 | |
CN110582774B (zh) | 用于软件模块绑定的系统和方法 | |
US11880832B2 (en) | Method and system for enhancing the security of a transaction | |
HK1241586A1 (zh) | 對應用程序庫的授權訪問 | |
HK1240347A1 (zh) | 應用庫的無線儲備 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1241586 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1241586 Country of ref document: HK |