CN107278307A - 软件层的相互认证 - Google Patents

软件层的相互认证 Download PDF

Info

Publication number
CN107278307A
CN107278307A CN201680011859.XA CN201680011859A CN107278307A CN 107278307 A CN107278307 A CN 107278307A CN 201680011859 A CN201680011859 A CN 201680011859A CN 107278307 A CN107278307 A CN 107278307A
Authority
CN
China
Prior art keywords
software layer
random number
software
information
encrypted
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.)
Withdrawn
Application number
CN201680011859.XA
Other languages
English (en)
Inventor
R·曼索
S·巴塔察里亚
R·尤达勒
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 CN107278307A publication Critical patent/CN107278307A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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
    • G06F21/445Program or device authentication by mutual authentication, e.g. between devices or programs
    • 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/602Providing cryptographic facilities or services
    • 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/606Protecting data by securing the transmission between two devices or processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3234Cryptographic 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 involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3271Cryptographic 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 challenge-response
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3271Cryptographic 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 challenge-response
    • H04L9/3273Cryptographic 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 challenge-response for mutual 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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/003Mutual Authentication Bi-Directional Authentication, Dialogue, Handshake
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephone Function (AREA)

Abstract

本发明描述了用于建立应用程序的软件层的相互认证的技术。在所述应用程序的初始化期间,所述软件层执行绑定算法以交换秘密,以便将所述软件层绑定到彼此。在所述软件应用程序的随后运行时期间,所述软件层执行运行时密钥导出算法以将在初始化期间共享的所述秘密与动态时间信息相结合,以便生成数据加密密钥。所述软件层随后可以通过使用动态地生成的所述数据加密密钥对在所述软件层之间交换的数据进行加密和解密来彼此安全地传输数据。

Description

软件层的相互认证
相关申请交叉引用
本申请要求2015年3月12日申请的美国临时申请号62/132,289的优先权权益,该美国临时申请出于所有目的以全文引用的方式并入本文中。背景技术
软件应用程序可以具有彼此通信或交换数据的多个软件部件或软件层(也可以被称为软件库)。例如,在一个层中执行的代码可以呼叫在另一层中实施的函数,或者在一个层中执行的代码可以将参数或数据传递到另一层。由于这种环境的模块化性质,软件层之间的暴露接口处会存在安全漏洞例如,中间人应用程序可以窃听在软件层之间传递的数据以获取敏感信息,或者未经授权的代码可以直接调用在共享软件层中实施的函数并且获取由共享软件层处理的敏感数据。
本发明的实施方案个别地和共同地解决了这些和其他问题。
发明内容
本发明的实施方案提供可以用来相互认证彼此通信的软件层的技术。在一些实施方案中,软件层可以是在计算装置上执行的软件应用程序的一部分。为了在应用程序的第一软件层与第二软件层之间建立相互认证,可以在初始化应用程序时执行绑定算法以在软件层之间交换秘密。之后,在应用程序的运行时执行期间,在软件层之间交换的数据可以使用基于在应用程序的初始化期间生成的共享秘密导出的数据加密密钥进行加密。在一些实施方案中,一种用于在应用程序的第一软件层与第二软件层之间建立相互认证的过程可以涉及使用数据加密密钥,所述数据加密密钥是基于在应用程序的初始化期间由第一软件层生成的第一随机数和由第二软件层生成的第二随机数导出的。
根据一些实施方案,在运行时执行期间,一种由第一软件层执行的用于建立相互认证的过程可以包括:由在计算装置上执行的应用程序的第一软件层来检索在应用程序的初始化期间由第一软件层存储的绑定信息;以及对绑定信息进行解密,以获取在初始化期间由第二软件层生成的第二随机数。所述过程还可以包括:由第一软件层从应用程序的第二软件层接收加密的第一随机数;对加密的第一随机数进行解密,以获取第一随机数。第一软件层随后可以基于第一随机数和第二随机数来导出数据加密密钥,之后使用数据加密密钥对从第一软件层发送到第二软件层的数据进行加密。数据加密密钥还可以用来对从第二软件层接收的数据进行解密。在一些实施方案中,数据加密密钥可以进一步基于动态时间信息导出。
根据一些实施方案,在运行时执行期间,一种由第二软件层执行的用于建立相互认证的过程可以包括:由在计算装置上执行的第二软件层来检索在应用程序的初始化期间由第二软件层存储的绑定信息;以及对绑定信息进行解密,以获取第一随机数。所述过程还可以包括:由第二软件层从第一软件层接收加密的第二随机数;以及对加密的第二随机数进行解密,以获取第二随机数。第二软件层随后可以基于第一随机数和第二随机数来导出数据加密密钥,之后使用数据加密密钥对从第二软件层发送到第一软件层的数据进行加密。数据加密密钥还可以用来对从第一软件层接收的数据进行解密。在一些实施方案中,数据加密密钥可以进一步基于动态时间信息导出。
根据一些实施方案,一种计算装置可以包括:处理器;以及存储器,其耦合到处理器并且存储计算机可读代码,所述计算机可读代码用于实施具有第一软件层和第二软件层的应用程序。计算机可读代码在由处理器执行时可以导致第一软件层和第二软件层执行它们各自的相互认证过程。
附图说明
图1说明根据一些实施方案的计算装置的框图。
图2说明根据一些实施方案的用于软件层的相互认证的过程的流程图。
图3说明根据一些实施方案的用于软件层的相互认证的过程的通信流程图。
图4说明根据一些实施方案的由软件层执行的绑定算法的流程图。
图5说明根据一些实施方案的由软件层执行的密钥导出算法的流程图。
图6说明根据一些实施方案的由另一软件层执行的绑定算法的流程图。
图7说明根据一些实施方案的由另一软件层执行的密钥导出算法的流程图。
图8说明根据一些实施方案的绑定算法的示例实施方式的通信流程图。
图9说明根据一些实施方案的密钥导出算法的示例实施方式的通信流程图。
图10说明根据一些实施方案的系统的框图。
图11说明根据一些实施方案的便携式计算装置的框图。
具体实施方式
本发明的实施方案提供可以用来相互认证彼此通信的软件层的技术。在一些实施方案中,软件层可以是在计算装置上执行的软件应用程序的一部分。为了阻碍软件层接口处的漏洞,每个软件层可以彼此进行认证,以保证软件层中的函数被已知的实体或已知的软件部件呼叫并且呼叫方被授权调用被呼叫函数。在软件层之间来回传递的数据也可以进行加密,以对窃听数据交换的任何中间人保持不透明,以便保证数据机密性和完整性。
根据一些实施方案,在软件层的第一次初始化期间(例如,当软件应用程序被第一次编译并安装在装置上时,或者第一次执行软件应用程序时),软件层执行绑定算法以交换秘密,以便将软件层彼此绑定。在软件应用程序的随后运行时期间,软件层执行运行时密钥导出算法以将在初始化期间共享的秘密与动态时间信息相结合,以便生成数据加密密钥。软件层随后可以通过使用动态地生成的数据加密密钥对在软件层之间交换的数据进行加密和解密来彼此安全地传输数据。
在第一次初始化时执行的共享秘密和绑定算法为软件层提供在运行时期间彼此相互认证的方式,因为未经授权的应用程序将不了解在初始化期间共享的秘密。这可以阻碍流氓应用程序试图调用其中一个软件层中的应用程序,因为流氓应用程序将不能够生成适当的数据加密密钥来与被呼叫的软件层通信。使用数据加密密钥对在软件层之间传输的数据进行加密还阻碍了中间人窃听,因为在软件层之间传输的数据并不是用明码发送的,而是以加密的形式发送的并且只可以由适当的数据加密密钥进行解码。在密钥导出算法中并入动态时间信息还阻碍了密钥破解,因为数据加密密钥是在运行时动态生成的并且随时间推移而改变。本文中所述的技术也可扩展并且可以容易部署到数百万台装置,因为绑定算法和密钥导出算法可以部署作为写入到软件层中的代码的一部分,并且不同于数字证书技术,密钥导出算法的动态性质不需要利用外部实体进行周期性更新。
在讨论本发明的一些实施方案的细节之前,对一些术语的描述可有助于理解各种实施方案。
“通信装置”可以是包括可与另一装置通信的一个或多个电子部件(例如,集成芯片)的装置。例如,通信装置可以是包括耦合到存储器的至少一个处理器的计算装置,所述存储器存储由处理器执行的指令或代码。“便携式通信装置”可以是可由用户运输和操作并且可以包括一个或多个电子部件(例如,集成芯片)的通信装置。便携式通信装置可以将远程通信能力提供给网络。便携式通信装置可以被配置成将数据或通信发射到其他装置和从其他装置接收数据或通信。便携式通信装置可以呈诸如以下各者的移动装置的形式:移动电话(例如,智能电话、蜂窝电话等)、平板电脑、便携式媒体播放器、个人数字助理装置(PDA)、可穿戴装置(例如,手表、诸如健身跟踪器的健康监测装置等)、电子阅读器装置等,或者呈卡(例如,智能卡)或挂件等形式。便携式通信装置的示例还可以包括便携式计算装置(例如,膝上型电脑、上网本、超级本等)。便携式通信装置还可以呈车辆(例如,汽车)的形式,或者集成作为车辆的一部分(例如,车辆的信息系统)。
“服务器计算机”可以包括功能强大的计算机或计算机集群。例如,服务器计算机可以是大的主机、小型计算机集群或像一个单元一样工作的一组服务器。在一个示例中,服务器计算机可以是耦合到网络服务器的数据库服务器。服务器计算机可以耦合到数据库并且可以包括用于服务于来自一个或多个客户端计算机的请求的任何硬件、软件、其他逻辑、或前述内容的组合。服务器计算机可以包括一个或多个计算设备并且可以使用各种计算结构、排列和编译中的任何一种来服务于来自一个或多个客户端计算机的请求。
“发行方”通常可以指代保留与便携式通信装置相关联的用户的账户的商业实体(例如,银行),所述账户为诸如在安装于便携式通信装置上的移动应用程序中注册的账户。发行方还可以将与账户相关联的账户参数发给便携式通信装置。发行方可以与主机系统相关联,所述主机系统代表发行方来执行发行方的一些或全部职能。在一些实施方案中,发行方可以指代软件应用程序的提供方。
“商家”通常可以是参与交易并且能够出售商品或服务或提供对商品或服务的访问的实体。
“收单方”通常可以是与特定商家或其他实体有商业关系的商业实体(例如商业银行)。一些实体能够执行发行方和收单方功能。一些实施方案可以包括这种单实体发行方-收单方。
“访问装置”可以是用于与商家计算机或交易处理网络通信和用于与交易装置(例如,支付装置)、用户计算机设备和/或用户移动装置交互的任何合适装置。访问装置通常可以位于任何适当位置,诸如在商家所在的位置。访问装置可以是任何适当形式。访问装置的一些示例包括POS装置、蜂窝电话、PDA、个人计算机(PC)、平板PC、手持专用阅读器、机顶盒、电子现金出纳机(ECR)、自动柜员机(ATM)、虚拟现金出纳机(VCR)、营业亭、安全系统、访问系统、网站等等。访问装置可以使用任何合适的接触式或非接触式操作模式,以发送或接收来自便携式通信装置或与便携式通信装置相关联的数据。在访问装置可以包括POS终端的一些实施方案中,任何适当的POS终端可以被使用,并且其可以包括阅读器、处理器和计算机可读介质。阅读器可以包括任何适当的接触或非接触操作模式。例如,示例性读卡器可以包括用于与便携式通信装置交互的射频(RF)天线、光学扫描器、条形码阅读器或磁条阅读器。
“授权请求消息”可以是发送来请求授权交易的电子消息。授权请求消息可以发送到交易处理网络和/或交易卡(例如,支付卡)的发行方。根据一些实施方案的授权请求消息可以符合ISO 8583,ISO 8583是用于交换与由用户使用交易装置或交易账户所做的交易相关联的电子交易信息的系统的标准。授权请求消息可以包括可用来识别账户的信息。授权请求消息还可以包括额外数据元素,诸如服务代码、截止日期等中的一个或多个。授权请求消息还可以包括交易信息(诸如与当前交易相关联的任何信息,诸如交易金额、商家标识符、商家位置等),以及可以用来确定是否识别和/或授权交易的任何其他信息。授权请求消息还可以包括其他信息,诸如识别生成授权请求消息的访问装置的信息,关于访问装置的位置的信息等。
“授权响应消息”可以是对授权请求消息的电子消息回复。授权响应消息可以由发行金融机构或交易处理网络生成。授权响应消息可以包括(只作为示例)以下状态指示符中的一个或多个:批准-交易被批准;拒绝-交易不被批准;或呼叫中心-响应未决的更多信息,商家必须呼叫免费授权电话号码。授权响应消息还可以包括授权代码,所述授权代码可以是信用卡发卡银行响应于电子消息中的授权请求消息(直接地或者通过交易处理网络)返回给商家计算机的指示批准交易的代码。代码可以用作授权的证据。如上文所述,在一些实施方案中,交易处理网络可以生成授权响应消息或向商家转发授权响应消息。
“令牌”可以包括某种信息的替代标识符。例如,交易令牌可以包括交易账户的标识符,所述标识符是账户标识符(诸如,主账号(PAN))的替代物。例如,令牌可以包括可以用作原始账户标识符的替代的一连串字母数字字符。例如,可以使用令牌“4900 0000 00000001”以代替PAN“4147 0900 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系统(账户集成支付系统)和执行清算与结算服务的BaseII系统。
现在将描述本发明的一些实施方案的细节。
图1说明根据一些实施方案的计算装置100中的软件操作环境。计算装置100可以是计算机、通信装置、便携式通信装置,所述便携式通信装置呈移动装置的形式,诸如移动电话(例如,智能电话、蜂窝电话等)、平板电脑、便携式媒体播放器、个人数字助理装置(PDA)、可穿戴计算装置(例如,手表)、电子阅读器装置、膝上型电脑、上网本、超级本等,或者呈卡(例如,智能卡)或挂件等形式。在一些实施方案中,计算装置100也可以是车辆(例如,汽车)的一部分。计算装置100可以包括诸如一个或多个处理器的装置硬件104、操作系统114以及在计算装置100上执行的应用程序112。在一些实施方案中,应用程序122可以在虚拟机110内执行。
应用程序112可以包括多个软件层。例如,应用程序122可以包括软件层120和软件层130。软件层120和130可以由相同开发者提供或者由不同实体提供。在一些实施方案中,软件层120和130可以用相同或不同的编程语言编写。例如,软件层120可以用诸如Java的高级编程语言编写,并且可以实施为软件开发工具包(SDK)。软件层130可以是本地层或本地库,并且可以用诸如C或C++的低级编程语言编写。在一些实施方案中,软件层130可以是在虚拟机110中执行的部件之中共享的本地库。软件层120可以与软件层130通信,以经由这两个软件层之间的接口来交换数据并调用在软件层130中实施的函数,反之亦然。在一些实施方案中,软件层120与130之间的接口可以是Java本地接口(JNI)。
还应注意,在一些实施方案中,软件层120和130是一个单一应用程序112的部分。因此,例如,包括软件层120和130的应用程序112最初可以从应用程序商店下载作为单一应用程序包,并且作为单一应用程序安装在通信装置100上。包括软件层120和130的应用程序112可以表示为通信装置100的用户接口上的一个图标,并且包括软件层120和130的应用程序112可以由操作系统114作为一个应用程序处理。
根据一些实施方案,应用程序112可以是使用或处理敏感信息的应用程序。例如,应用程序112可以是用来利用用户的账户凭证进行交易的交易应用程序。由于应用程序112的模块化性质,在没有适当保护的情况下,软件层120与130之间的接口会易受中间人窃听或未经授权地调用软件层中实施的函数的影响。例如,流氓应用程序152(例如,未经授权的代码、恶意软件等)可以观察由软件层正呼叫的函数和软件层之间正传输的参数(由数据路径M指示)。如果函数呼叫和参数是用明码发送的,那么流氓应用程序152有可能从观察的数据中获取敏感信息(诸如,用户的账户凭证)。作为另一示例,如果软件层120和130不需要呼叫方的适当认证,那么流氓应用程序152可以直接调用软件层130中实施的函数,以获取可由软件层130访问的敏感数据(由数据路径N指示)。
图2说明根据一些实施方案的过程200的流程图,所述过程可以用来相互认证软件层(例如,软件层120和130)以阻碍这些漏洞。应理解,本文中所述的技术可以应用于具有多个软件层的任何软件应用程序,并且在一些实施方案中,软件应用程序可以具有两个以上软件层。在框202处,过程200可以在计算装置上执行的软件应用程序的第一次初始化期间生成绑定信息,所述绑定信息将第一软件层绑定到第二软件。在一些实施方案中,在软件应用程序的使用期限期间仅可以执行框202一次(例如,当软件应用程序最初安装在计算装置上时,或者在第一次执行或使用软件应用程序期间)。框202的目的是通过交换并且安全地存储一些秘密数据来将软件层绑定在一起,所述秘密数据稍后可以在运行时期间被用来将软件层认证到彼此。框202理想上是软件应用程序的第一行代码。在框202处建立的绑定允许将软件层之间的随后的函数呼叫信任为由认证方调用。在一些实施方案中,计算装置上的绑定信息的存在可以确定是否需要执行框202。计算装置上的绑定信息的缺少可以表明这是第一次使用软件应用程序,且因此应执行框202。
在框204处,在软件应用程序的运行时期间,过程200可以执行密钥导出算法,以基于从框202生成的绑定信息来导出数据加密密钥。数据加密密钥还可以进一步基于动态时间信息。动态时间信息可以是(例如)从在第一次初始化时执行框202的时间到随后执行框204的时间所经过的时间量。可以在每次在计算装置上开始或使用软件应用程序时执行框204(例如,当计算装置通电时、当用户启动软件应用程序时,或者当用户使用软件应用程序来执行任务时等)。框204可以实现软件层的相互认证,因为只有经授权的软件层才将了解在框202处生成的绑定信息。在框204处导出的数据加密密钥然后可以在软件层之间的随后通信期间使用,以对去往/来自软件层的函数呼叫和数据进行加密,以便实现数据机密性。应注意,在一些实施方案中,由于密钥导出过程中包括动态时间信息,所以每次执行框204时可以生成不同的数据加密密钥,且因此数据加密密钥本质上是动态的并且随着时间推移而改变,因为应用程序用来防止密钥破解。
在框206处,过程200使用在框204处导出的数据加密密钥对在第一软件层与第二软件层之间传输的数据进行加密。接收方软件层可以使用它自己的数据加密密钥对加密的数据进行解密。应注意,在一些实施方案中,软件层之间的通信信道本身并不进行加密。相反,在一些实施方案中,要求机密性的输入数据参数和任何响应数据可以进行加密。可以每次在计算装置上启动软件应用程序时重复框204和206。
在一些实施方案中,可以部署额外的保护,以保护软件层免受流氓应用程序和未经授权的访问。例如,代码混淆技术可以用来遮掩基础代码。运行时保护可以包括确定软件层是否在调试器会话下被呼叫或者软件层是否利用根权限来运行。这些场景的检测可以指示潜在的违反,并且受影响的软件层可以设置成停止与其他软件层通信或者拒绝与其他软件层进行认证。
图3说明根据一些实施方案的用于在第一软件层(例如,软件层-A 120)与第二软件层(例如,软件层-B 130)之间建立相互认证的示例过程的概述的通信流程图。所述过程可以包括在应用程序的第一次初始化期间执行的绑定算法以及在应用程序的运行时期间执行的密钥导出算法。为易于解释,在第一次初始化期间在绑定算法中执行的步骤表示为“I-Xn”,其中X指示软件层,并且n是由所述软件层执行的步骤。在运行时期间在密钥导出算法中执行的步骤表示为“S-Xn”,其中X指示软件层,且n是由所述软件层执行的步骤。在一些实施方案中,软件层-A 120可以是SDK(例如,用Java编写),并且软件层-B可以是本地库(例如,用C或C++编写),反之亦然。在一些实施方案中,两个软件层可以用相同语言编写。
相互认证过程可以由在应用程序启动时首先被执行的软件层(例如,软件层-A120)发起。在一些实施方案中,发起软件层无需为在应用程序启动时首先执行的软件层。如果应用程序执行安全敏感函数,那么安全敏感函数可以在除了发起相互认证过程的软件层之外的软件层(例如,软件层-B 130)中实施。在一些实施方案中,安全敏感函数可以在发起相互认证过程的软件层中实施。
在步骤I-A1处,软件层-A 120开始执行绑定算法并且生成随机数RN1,所述随机数用作第一随机数。例如,RN1可以具有256位的位长度。在步骤IA-2处,软件层-A 120将RN1发送到软件层-B 130。RN1充当由软件层-A 120生成并与软件层-B 130共享的秘密,以将两个软件层绑定。在一些实施方案中,RN1并不由软件层-A 120存储。
在步骤I-B1处,软件层-B 130生成它自己的随机数(RN2),所述随机数用作第二随机数。在一些实施方案中,软件层-B 130可以响应于从软件层-A 120接收RN1而生成RN2。例如,RN2可以具有256位的位长度。RN2充当由软件层-B 130生成并与软件层-A 120共享的秘密,以将两个软件层绑定。在步骤I-B2处,软件层-B 130确定初始化时间信息TM,所述初始化时间信息指示正执行绑定算法的当前时间。在一些实施方案中,初始化时间信息TM可以是时间戳,或者从时间戳导出的数值(例如,通过使用一个或多个合适的计算操作将时间戳与RN1和/或RN2相结合,例如TM=时间戳+(RN1异或RN2))。在步骤I-B3处,软件层-B 130存储来自第一软件层-A 120的RN1和初始化时间信息TM,以作为绑定信息。在步骤I-B4处,软件层-B 130将RN2和初始化时间信息TM发送到软件层-A 120。在一些实施方案中,RN2并不由软件层-B 130存储。
在步骤I-A3处,软件层-A 120存储从软件层-B 130接收的RN2和TM,以作为绑定信息。一旦两个软件层都存储了它们相应的绑定信息,便可以终止绑定算法。软件层-A 120现在具有来自软件层-B 130的RN2和TM,并且软件层-B 130现在具有来自软件层-B 130的RN1。因此,这两个软件层已经交换了共享秘密以将两个软件层彼此绑定。共享秘密可以在运行时期间使用以导出数据加密密钥,以便对在两个软件层之间传输的数据进行加密和解密。通过这种方式,可以实现软件层的相互认证,因为只有经授权的软件层才将了解适当的绑定信息以生成有效的数据加密密钥。
在应用程序的运行时执行期间,在步骤S-A1处,软件层-A 120通过检索RN2和TM来开始密钥导出算法,所述RN2和TM先前在初始化期间由软件层-A 120存储以作为绑定信息。在步骤S-A2处,软件层-A 120确定动态时间信息DTM_A,所述动态时间信息提供从执行绑定算法时(如由TM指示)到正执行密钥导出算法的当前时间所经过的时间的指示。例如,DTM_A可以是当前时间与TM之间的差。这个动态时间信息DTM_A可以与绑定信息相结合,以在随后的步骤中生成数据加密密钥。在步骤S-A3处,软件层-A 120将RN2发送到软件层-B 130。
在步骤S-B1处,软件层-B 130检索RN1和TM,所述RN1和TM先前在初始化期间由软件层-B 130存储作为绑定信息。在步骤S-B2处,软件层-B 130确定动态时间信息DTM_B。例如,DTM_B可以是当前时间与TM之间的差。在步骤S-B3处,软件层-B 130基于第一随机数RN1、从软件层-A 120接收的第二随机数RN2以及动态时间信息DTM_B来导出它的数据加密密钥DEK。DEK由软件层-B 130用来在当前运行时会话中对两个软件层之间传输的随后的数据进行加密和解密。在步骤S-B4处,软件层-B 130将RN1发送到软件层-A 120。
在步骤S-A4处,软件层-A 120基于从软件层-B 130接收的第一随机数RN1、第二随机数RN2以及动态时间信息DTM_A来导出它的数据加密密钥DEK。DEK由软件层-A 120用来在当前运行时会话中对两个软件层之间传输的随后的数据进行加密和解密。
一旦两个软件层已经导出它们相应的数据加密密钥,这些软件层便可以开始将数据传输到彼此。在软件层之间交换的数据可以使用它们相应的数据加密密钥进行加密和解密。两个软件层现在得到相互认证,因为未经授权的软件部件将不能够导出适当的数据加密密钥以对正交换的数据进行加密和解密。
I.第一软件层过程
图4到图5分别说明根据一些实施方案的过程400和过程500的流程图,所述过程可以由在计算装置上执行的第一软件层执行以在第一软件层与第二软件层之间实现相互认证和安全的数据传输。过程400实施绑定算法,所述绑定算法可以由第一软件层执行并且可以作为在第一次初始化期间的过程200中的框202的一部分执行。过程500实施密钥导出算法,所述密钥导出算法可以由第一软件层执行并且可以作为在随后运行时会话期间的过程200中的框204的一部分执行。
参考图4,在框402处,在软件应用程序的第一次初始化期间,第一软件层生成第一随机数并且对第一随机数进行加密。在一些实施方案中,由第一软件层生成的第一随机数可以是随机或伪随机数。第一随机数可以使用从下列项中导出的绑定密钥进行加密:与计算装置相关联的计算装置标识符(例如,国际移动终端设备标识(IMEI)、装置序列号等)、与应用程序的发行方相关联的发行方标识符,或其任何组合。在框404处,将加密的第一随机数发送到第二软件层。此第一随机数充当正与第二软件层共享的来自第一软件层的秘密。
在框406处,第一软件层从第二软件层接收加密的第二随机数和加密的初始化时间信息。第二随机数可以是由第二软件层生成的随机或伪随机数,并且充当由第二软件层共享的秘密。初始化时间信息可以是指示执行绑定算法的当前时间的信息。在框408处,由第一软件层对加密的第二随机数和加密的初始化时间信息进行解密,以获取呈其未加密形式的第二随机数和初始化时间信息。
在框410处,对第二随机数和初始化时间信息进行重新加密,以生成重新加密的第二随机数和重新加密的初始化时间信息。在框412处,第一软件层将重新加密的第二随机数和重新加密的初始化时间信息作为绑定信息存储在(例如)外部文件或硬件安全模块(HSM)中。由第一软件层用来对第二随机数和初始化时间信息进行重新加密的加密密钥可以是与第二软件层所使用的密钥不同的密钥。例如,由第一软件层用来对第二随机数和初始化时间信息进行重新加密的加密密钥可以是通过将第一随机数和与计算装置相关联的一个或多个计算装置标识符相结合而导出的绑定密钥。这允许第二随机数和初始化时间信息以与从第二软件层发送出来的形式不同的形式进行存储。当在随后运行时会话中开始软件应用程序时,可以检索由第一软件层存储的绑定信息并且将其提供给第二软件层,以便将第一软件层认证到第二软件层。绑定信息还可以用在密钥导出算法(诸如,过程500)中以在每个运行时会话中导出数据加密密钥,以便对两个软件层之间传输的数据进行加密。
参考图5,过程500可以由第一软件层在软件应用程序的每个随后运行时会话期间执行,以动态地导出每次会话的数据加密密钥。在框502处,第一软件层检索在应用程序初始化时的上述绑定算法期间由第一软件层存储的绑定信息。例如,绑定信息可以从外部文件或HSM中检索。在框504处,对绑定信息进行解密以获取第二随机数和初始化时间信息。在框506处,基于初始化时间信息来确定动态时间信息。例如,动态时间信息可以指示自从软件应用程序第一次初始化以来所经过的时间。换言之,动态时间信息可以是在过程400的执行与过程500的执行之间所经过的时间量的表示。
在框508处,第一软件层从第二软件层接收加密的第一随机数。在框510处,对加密的第一随机数进行解密,以获取呈未加密形式的第一随机数。在框512处,第一软件层基于第一随机数、第二随机数和动态时间信息来导出数据加密密钥。在一些实施方案中,可以通过以下步骤来导出数据加密密钥:将第一随机数和第二随机数相结合以生成组合随机数、将组合的随机数与动态时间信息连结在一起以及对连结的结果进行散列。例如,可以通过将散列应用于下列项的连结物来导出第一软件层的数据加密密钥:(1)第一随机数和第二随机数的异或结果;和(2)动态时间信息。
在框514处,第一软件层使用所导出的数据加密密钥对从第一软件层发送到第二软件层的数据进行加密,使得运行时期间在第一软件层与第二软件层之间传输的数据被加密。从第二软件层接收的第一随机数(其最初由第一软件层生成并且在初始化期间提供给第二软件层)可以由第一软件层用来认证第二软件层。如果从第二软件层接收的第一随机数不正确,那么部分地基于从第二软件层接收的此第一随机数所导出的数据加密密钥将是不当密钥,并且第一软件层将不能够对来自第二软件层的通信进行适当地解密,并且将不能够对第二软件层作出响应。因此,使用在初始化时生成的绑定信息来导出数据加密密钥的这个机制可以提供软件层的隐式认证。
II.第二软件层过程
图6到图7分别说明根据一些实施方案的过程600和过程700的流程图,所述过程可以由在计算装置上执行的第二软件层执行以在第一软件层与第二软件层之间实现相互认证和安全的数据传输。过程600实施绑定算法,所述绑定算法可以由第二软件层执行并且可以作为在第一次初始化期间的过程200中的框202的一部分执行。过程700实施密钥导出算法,所述密钥导出算法可以由第二软件层执行并且可以作为在随后运行时会话期间的过程200中的框204的一部分执行。
参考图6,在框602处,在软件应用程序的第一次初始化期间,第二软件层从第一软件层接收加密的第一随机数,以在第二软件层处发起绑定算法。第一随机数可以是由第一软件层生成的随机或伪随机数,并且充当由第一软件层共享的秘密。在框604处,对加密的第一随机数进行解密,以获取呈未加密形式的第一随机数。在框606处,对第一随机数进行重新加密,以生成重新加密的第一随机数。在框608处,由第二软件层对初始化时间信息进行加密,以生成第一加密的初始化时间信息。初始化时间信息可以是指示执行绑定算法的当前时间的信息。
在框610处,将重新加密的第一随机数和第一加密的初始化时间信息作为绑定信息存储在(例如)外部文件或HSM中。由第二软件层用来对第一随机数和初始化时间信息进行重新加密的加密密钥可以是与第一软件层所使用的密钥不同的密钥。例如,由第二软件层用来对第一随机数和初始化时间信息进行重新加密的加密密钥可以是从将第二随机数和与计算装置相关联的一个或多个计算装置标识符相结合中导出的绑定密钥。这允许第一随机数和初始化时间信息以与从第一软件层发送出来的形式不同的形式进行存储。当在随后运行时会话中开始软件应用程序时,可以检索由第二软件层存储的此绑定信息并且将其提供给第一软件层,以便将第二软件层认证到第一软件层。绑定信息还可以用在密钥导出算法(诸如,过程700)中以在每个运行时会话中导出数据加密密钥,以便对两个软件层之间传输的数据进行加密。
在框612处,第二软件层生成第二随机数,并且对第二随机数进行加密。在一些实施方案中,由第二软件层生成的第二随机数可以是随机或伪随机数。第二随机数可以使用从下列项中导出的绑定密钥进行加密:与计算装置相关联的计算装置标识符(例如,IMEI、装置序列号等)、与应用程序的发行方相关联的发行方标识符、由第一软件层生成并且自其接收到的第一随机数,或其任何组合。此第二随机数充当正与第一软件层共享的来自第二软件层的秘密。在框614处,对初始化时间信息进行加密,以生成第二加密的初始化时间信息。可以使用与用来对第二随机数进行加密的相同绑定密钥对初始化时间信息进行加密。在框616处,将加密的第二随机数和第二加密的初始化时间信息发送到第一软件层,以便向第一软件层提供由第二软件层生成的绑定信息。
参考图7,过程700可以由第二软件层在软件应用程序的每个随后运行时会话期间执行,以动态地导出每次会话的数据加密密钥。在框702处,第二软件层检索在应用程序的初始化期间由第二软件层存储的绑定信息。绑定信息可以例如从外部文件或HSM中检索。在框704处,对绑定信息进行解密以获取第一随机数和初始化时间信息。在框706处,基于初始化时间信息来确定动态时间信息。例如,动态时间信息可以指示自从软件应用程序第一次初始化以来所经过的时间。换言之,动态时间信息可以是在过程600的执行与过程700的执行之间所经过的时间量的表示。
在框708处,第二软件层从第一软件层接收加密的第二随机数。在框710处,对加密的第二随机数进行解密,以获取呈其未加密形式的第二随机数。在框712处,第二软件层基于第一随机数、第二随机数和动态时间信息来导出数据加密密钥。在一些实施方案中,可以通过以下步骤来导出数据加密密钥:将第一随机数和第二随机数相结合以生成组合随机数、将组合的随机数与动态时间信息连结在一起以及对连结的结果进行散列。例如,可以通过将散列应用于下列项的连结物来导出第二软件层的数据加密密钥:(1)第一随机数和第二随机数的异或结果;和(2)动态时间信息。
在框714处,第二软件层使用所导出的数据加密密钥对从第二软件层发送到第一软件层的数据进行加密,使得运行时期间在第一软件层与第二软件层之间传输的数据被加密。从第一软件层接收的第二随机数(其最初由第二软件层生成并且在初始化期间提供给第一软件层)可以由第二软件层用来认证第一软件层。如果从第一软件层接收的第二随机数不正确,那么部分地基于从第一软件层接收的此第二随机数导出的数据加密密钥将是不当密钥,并且第二软件层将不能够对来自第一软件层的通信进行适当地解密,并且将不能够对第一软件层作出响应。因此,使用在初始化时生成的绑定信息来导出数据加密密钥的这个机制可以提供软件层的隐式认证。
III.绑定算法的示例实施方式
图8说明根据一些实施方案的绑定算法的示例实施方式的通信流程图,所述绑定算法用于在软件应用程序的第一次初始化期间将第一软件层(例如,软件层-A 120)绑定到第二软件层(例如,软件层B-130)。在一些实施方案中,软件层-A 120可以是SDK(例如,用Java编写),并且软件层-B可以是本地库(例如,用C或C++编写),反之亦然。在一些实施方案中,两个软件层可以用相同语言编写。为易于解释,在第一次初始化期间在绑定算法中执行的步骤表示为“I-Xn”,其中X指示软件层,并且n是由所述软件层执行的步骤。在绑定算法中导出并使用各种加密密钥(被称为绑定密钥)。绑定算法中使用的绑定密钥表示为BKn。
在步骤I-A1处,软件层-A 120生成随机数(RN1),所述随机数用作第一随机数。例如,RN1可以具有256位的位长度。在步骤IA-2处,从有关为软件层已知的计算装置和/或软件应用程序的信息中导出第一绑定密钥BK1。例如,可以从将密码函数(Func)应用于装置标识符和发行方标识符(发行方ID)中导出BK1。在计算装置是移动电话的实施方式中,装置标识符可以是与移动电话相关联的国际移动终端设备标识(IMEI)。发行方ID可以是软件应用程序提供方的标识符。在软件应用程序是交易应用程序的实施方式中,发行方ID可以是唯一地识别账户(该账户的凭证被交易应用程序用来进行交易)的所述发行方的非可变标识符。应注意,发行方ID与代码版本标签(或版本ID)不相同,因为版本ID可变并且在软件版本中是变化的。
在步骤I-A3处,软件层-A 120利用BK1对RN1进行加密,从而产生RN1_encBK1。所使用的加密函数可以是AES(高级加密标准)或其他合适的加密算法。在步骤I-A4处,软件层-A120以RN1_encBK1作为参数来呼叫软件层-B 130中的绑定函数,并且将RN1_encBK1传递到软件层-B 130。RN1充当由软件层-A 120生成并与软件层-B 130共享的秘密,以将两个软件层绑定。应注意,RN1_encBK1并没有用明码发送,而是以加密形式发送以防止中间人获取RN1。
在步骤I-B1处,软件层-B 130开始执行绑定函数,并且使用与软件层-A 120所使用的信息相同的信息(例如,IMEI和发行方ID)来导出BK1。在步骤I-B2处,利用BK1对从软件层-A 120接收的RN1_encBK1进行解密,以获取RN1。在步骤I-B3处,软件层-B 130生成它自己的随机数(RN2),所述随机数用作第二随机数。例如,RN2可以具有256位的位长度。在步骤I-B4处,软件层-B 130通过将Func应用于RN2和有关计算装置的信息来导出第二绑定密钥BK2。例如,有关计算装置的信息可以是与计算装置相关联的序列号(Serial#)和IMEI。在I-B5处,使用AES或其他合适的加密算法利用BK2对RN1进行加密,从而产生RN1_encBK2
在步骤I-B6处,软件层-B 130确定初始化时间信息TM,所述初始化时间信息指示正执行绑定算法的当前时间。在步骤I-B7处,软件层-B 130基于有关计算装置和/或软件应用程序的信息以及TM来导出第三绑定密钥BK3。例如,可以从将Func应用于序列号、IMEI、发行方ID以及TM散列中导出BK3。在步骤I-B8处,使用AES或其他合适的加密算法利用BK3对TM进行加密,从而产生TM_encBK3。在步骤I-B9处,软件层-B 130将RN1_encBK2和TM_encBK3作为绑定信息存储在外部文件或HSM中。应注意,RN1和TM两者都以加密的形式存储,以保护绑定信息的实际值。
在步骤I-B10处,软件层-B 130通过将Func应用于RN1和有关计算装置的信息(诸如,与计算装置相关联的序列号)来导出第四绑定密钥BK4。在步骤I-B11处,使用AES或其他合适的加密算法利用BK4对RN2和TM进行加密,从而产生RN2_TM_encBK4。在步骤I-B12处,软件层-B 130将值RN2_TM_encBK4传回到软件层-A 120。RN2充当由软件层-B 130生成并与软件层-A 120共享的秘密,以将两个软件层绑定。应注意,RN2_TM_encBK4并没有用明码发送,而是以加密形式发送,以防止中间人获取RN2和TM。在步骤I-B13处,在软件层-B 130的绑定算法完成时,从存储器中毁掉或删除RN1、RN2和TM的未加密形式。也从存储器中毁掉或删除软件层-B 130所使用的绑定密钥BK1、BK2、BK3和BK4。
在从呼叫软件层-B 130中的绑定函数中接收到RN2_TM_encBK4作为响应数据后,在步骤I-A5处,软件层-A 120使用与软件层-B 130所使用的信息相同的信息来导出BK4。例如,可以从将Func应用于RN1和序列号中导出BK4。在步骤I-A6处,软件层-A 120利用BK4对RN2_TM_encBK4进行解密,以获取呈其未加密形式的RN2和TM。在步骤I-A7处,软件层-A 120基于有关计算装置和/或软件应用程序的信息以及任选的用户输入(例如,PIN或密码)(如果可用的话)来导出第五绑定密钥BK5。例如,可以通过将Func应用于IMEI、序列号和发行方ID并且进一步将Func应用于该结果和用户输入(如果可用的话)来导出BK5。在步骤I-A8处,软件层-A 120使用AES或其他合适的加密算法利用BK5对RN2和TM进行加密,从而产生RN2_TM_encBK5。在步骤I-A9处,软件层-A 120将RN2_TM_encBK5作为绑定信息存储在外部文件或HSM中。应注意,RN2和TM都以加密的形式存储,以保护绑定信息的实际值。在步骤I-A10处,在软件层-A 120的绑定算法完成时,从存储器中毁掉或删除RN1、RN2和TM的未加密形式。也从存储器中毁掉或删除软件层-A 120所使用的绑定密钥BK1、BK4和BK5。
返回参考BK5的生成,在一些实施方案中,如果软件应用程序的用户体验可以容忍在使用软件应用程序时请求输入用户输入(例如,PIN或密码),那么可以将并没有静态地存储在装置上的用户输入并入到算法中,以提高安全保障级别。包括只有经授权的用户才了解的使用输入可以防止未经授权的用户执行软件层。在一些实施方案中,包括用户输入可以从算法中省略,以改善用户体验(以避免要求用户手动输入PIN或密码)。在此类实施方案中,可以在没有用户输入的情况下生成BK5,并且本文中所述的技术仍可以提供足够的安全保障级别,这是因为算法并入了动态时间信息的使用(如下文进一步描述),所述动态时间信息也没有静态地存储在装置上。
IV.密钥导出算法的示例实施方式
图9说明根据一些实施方案的密钥导出算法的示例实施方式的通信流程图,所述密钥导出算法用于在软件应用程序的运行时会话期间由第一软件层(例如,软件层-A 120)和第二软件层(例如,软件层B-130)生成数据加密密钥。可以每次在第一次初始化之后开始或使用软件应用程序时执行图9中的过程。为易于解释,在运行时会话期间在密钥导出算法中执行的步骤表示为“S-Xn”,其中X指示软件层,并且n是由所述软件层执行的步骤。在密钥导出算法中导出并使用各种加密密钥(被称为会话密钥)。密钥导出算法中使用的会话密钥表示为SKn。
在步骤S-A1处,软件层-A 120从外部文件或HSM中检索RN2_TM_encBK5,其由软件层-A 120作为来自第一次初始化的绑定信息进行存储。在步骤S-A2处,软件层-A 120导出相当于BK5的第一会话密钥SK1。例如,可以通过将Func应用于IMEI、序列号和发行方ID并且进一步将Func应用于该结果和用户输入(如果可用的话)来导出SK1。在步骤S-A3处,利用SK1对RN2_TM_encBK5进行解密,以获取RN2和TM。在步骤S-A4处,软件层-A 120确定动态时间信息DTM_A,所述动态时间信息提供从执行绑定算法时(如由TM指示)到正执行密钥导出算法的当前时间所经过的时间的指示。例如,可以通过对当前时间与TM之间的差的绝对值进行散列来计算DTM_A。这个动态时间信息DTM_A可以与绑定信息相结合,以在随后的步骤中生成数据加密密钥。
在步骤S-A5处,软件层-A 120基于有关计算装置和/或软件应用程序的信息以及DTM_A来导出第二会话密钥SK2。例如,可以通过将Func应用于IMEI、发行方ID以及DTM_A来导出SK2。在步骤S-A6处,使用AES或其他合适的加密算法利用SK2对RN2进行加密,从而产生RN2_encSK2。在步骤S-A7处,软件层-A 120利用参数RN2_encSK2和TM散列来调用软件层-B130中的密钥导出函数。
在步骤S-B1处,软件层-B 130开始执行密钥导出函数,并且从外部文件或HSM中检索RN1_encBK2和TM_encBK3,它们先前由软件层-B130作为来自第一次初始化期间的绑定算法的绑定信息进行存储。在步骤S-B2处,软件层-B 130导出相当于BK3的第三会话密钥SK3。例如,可以从将Func应用于序列号、IMEI、发行方ID以及TM散列中导出SK3。TM散列是从软件层-A 120中接收的参数之一。在步骤S-B3处,利用SK3对TM_encBK3进行解密,以获取呈未加密形式的TM。在S-B4处,软件层-B 130确定动态时间信息DTM_B,所述动态时间信息提供从执行绑定算法时(如由TM指示)到正执行密钥导出算法的当前时间所经过的时间的指示。例如,可以通过对当前时间与TM之间的差的绝对值进行散列来计算DTM_B。这个动态时间信息DTM_B可以与绑定信息相结合,以在随后的步骤中生成数据加密密钥。在一些实施方案中,为了确保DTM_A和DTM_B具有相同的值,用于确定动态时间信息的当前时间以分钟来表达(与诸如秒或毫秒的更小时间单位相反)。
在步骤S-B5处,软件层-B 130导出相当于SK2的第四会话密钥SK4。例如,可以通过将Func应用于IMEI、发行方ID以及如由软件层-B 130确定的DTM_B来导出SK4。在步骤S-B6处,使用SK4对如从软件层-A 120接收的RN2_encSK2进行解密,以获取呈其未加密形式的RN2。在步骤S-B7处,软件层-B 130使用未加密的RN2来导出相当于BK2的第五会话密钥SK5。例如,可以通过将Func应用于RN2、与计算装置相关联的序列号和IMEI来导出SK5。在步骤S-B8处,利用SK5对如从软件层-A 120接收的RN1_encBK2进行解密,从而产生呈其未加密形式的RN1。在步骤S-B9处,软件层-B 130通过将散列应用于与DTM_B连结的RN1和RN2的异或结果来导出其数据加密密钥EDK。DEK由软件层-B 130用来在当前运行时会话中对两个软件层之间传输的随后的数据进行加密和解密。在步骤S-B10处,将RN1_encBK2作为响应数据传回到软件层-A 120。在步骤S-B11处,在软件层-B 130的密钥导出算法完成时,从存储器中毁掉或删除RN1、RN2、TM和DTM_B的未加密形式。也从存储器中毁掉或删除软件层-B 130所使用的会话密钥SK3、SK4和SK5。
在从呼叫软件层-B 130中的密钥导出函数中接收RN1_encBK2作为响应数据后,在步骤S-A8处,软件层-A 120导出相当于BK2的SK5。例如,可以从将Func应用于RN2、序列号和IMEI中导出SK5。在步骤S-A9处,利用SK5对RN1_encBK2进行解密,以获取呈其未加密形式的RN1。在步骤S-A10处,软件层-A 120通过将散列应用于与DTM_A连结的RN1和RN2的异或结果来导出数据加密密钥EDK。DEK由软件层-A 120用来在当前运行时会话中对两个软件层之间传输的随后的数据进行加密和解密。如果两个软件层在第一次初始化时被适当地绑定,那么这个DEK应相当于由软件层-B 130导出的DEK。在步骤S-A11处,在软件层-A 120的密钥导出算法完成时,从存储器中毁掉或删除RN1、RN2、TM和DTM_A的未加密形式。也从存储器中毁掉或删除软件层-A 120所使用的会话密钥SK1、SK2和SK5。一旦两个软件层都已经导出它们相应的DEK,便可以利用DEK对软件层之间传输的随后的数据进行加密。
V.密码函数
根据一些实施方案,本文中描述的用来导出各种绑定和会话密钥的密码函数Fun可以是多路径密码函数,其中基于到密码函数的输入数据来选择计算路径。每个路径可以在计算上等效(使用相同的计算操作),但馈入到计算中的操作数可以包括不同的输入数据片段。运行时输入数据位可以用来选择使用计算路径中的哪一者。
例如,密码函数可以包括许多不同的计算路径。计算路径可以基于到密码函数的输入数据的特定位的值进行选择。每个路径在计算上等效,并且可以对与将来自输入数据的选定字节与来自输入数据的另一选定字节相乘的结果连结的输入数据执行(例如)散列(例如,安全散列算法SHA-256)。为乘法所选择的特定字节和连结的次序可以取决于选择哪一条计算路径而改变。使用这样的多路径方法可以使算法增加更大的复杂性,以防止敌手对算法进行逆向工程。
以下列出具有八个计算路径的密码函数的示例。
路径 计算
000 OUT_data=散列(IN_data+(IN_data[3]*IN_data[5]))
001 OUT_data=散列(IN_data+(IN_data[4]*IN_data[6]))
010 OUT_data=散列(IN_data+(IN_data[5]*IN_data[7]))
011 OUT_data=散列(IN_data+(IN_data[6]*IN_data[8]))
100 OUT_data=散列((IN_data[3]*IN_data[5])+IN_data)
101 OUT_data=散列((IN_data[4]*IN_data[6])+IN_data)
110 OUT_data=散列((IN_data[5]*IN_data[7])+IN_data)
111 OUT_data=散列((IN_data[6]*IN_data[8])+IN_data)
在此示例中,可以使用来自输入数据(IN_data)的三个位来确定对将采取八个计算路径中的哪个计算路径的选择。例如,可以将三个最高有效位、三个最低有效位或者处于特定位位置的三个位用作计算路径选择位。通过举例说明,如果输入数据的三个位是‘000’,那么选择第一计算路径,并且密码函数的输出(OUT_data)是输入数据(IN_data)与将输入数据的第三字节(IN_data[3])和输入数据的第五字节(IN_data[5])相乘的结果的连结物(‘+’)的散列。如此示例所说明,每个计算路径的计算操作相同,除了取决于所选择的计算路径而使用不同的操作数(例如,输入数据的变型或片段)或不同的连结次序之外。应理解,其他实施方案中的密码函数可以取决于期望的复杂性而具有任何数目的不同计算路径,并且计算可以包括没有具体描述的其他类型的操作。
VI.示例系统
图10说明根据一些实施方案的示例性系统1000的框图,其中可以使用本文中所述的相互认证技术。系统1000可以是(例如)用于进行基于云的交易的基于云的交易系统。应理解,本文中所述的相互认证技术可以应用于可与或可不与交易处理相关的其他类型的系统。
系统1000包括便携式通信装置1010(例如,移动装置)、基于云的交易平台(CBP)1080以及移动应用程序平台(MAP)1070。CBP 1080可以使用一个或多个计算装置来实施,并且可以与发行方、交易处理器和/或其他合适的实体相关联或者由其操作。CBP 1080实施包括账户管理和账户参数生成与补充在内的功能性的集合,以使得能够经由便携式通信装置1010来进行基于云的交易。
MAP 1070用来有助于CBP 1080与便携式通信装置1010中的移动应用程序1014(例如,交易应用程序)之间的通信。MAP 1070可以使用一个或多个计算装置来实施,并且可以与移动应用程序1014(例如,移动软件应用程序)的服务提供方(诸如发行方、移动钱包提供方、商家和/或其他合适的实体)相关联或者由其操作。在一些实施方案中,MAP 1070可以与和CBP 1080相同的实体相关联或由其操作,或者它们可以分开。MAP 1070用来对移动应用程序1014与CBP 1080之间的请求起媒介作用,并且确保一旦(例如)经由通信网络1082(例如,互联网、移动或蜂窝网络等)建立到便携式通信装置1010的连接性便履行由任一方发起的请求和响应。应理解,在一些实施方案中,CBP 1080、MAP 1070和/或发行方或主处理系统1072的一个或多个功能性可以集成到相同的计算系统或不同的计算系统中。
便携式通信装置1010可以用来进行由CBP 1080和/或MAP 1070促成的基于云的交易(例如,支付交易)。便携式通信装置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进行传输。例如,装置上基于云的交易逻辑可以使用从CBP 1080提供的密码密钥(例如,有限使用密钥),以生成通过非接触式接口发射到访问装置1060的交易密码,以便进行支付交易。交易密码可以发送到交易处理网络1084,以获取支付交易的授权。装置上基于云的交易逻辑也管理在已经提供账户之后提供的初始服务配置文件参数,以确保发起对账户参数补充和其他账户参数管理活动的请求。
为了提供便携式通信装置1010以用于基于云的支付交易,CBP 1080可以用来配置与发行方相关联的账户资产组合(portfolio)并且向便携式通信装置1010提供账户参数,以便在进行基于云的交易时使用。由CBP 1080建立的账户资产组合可以包括诸如风险参数(例如,速度控制)的特性,其管理所提供的装置上的账户参数将何时需要针对每个资产组合中的账户进行刷新的触发因素。为了确保一致的性能和可用性,可以由CBP 1080实施可在服务配置文件中配置的最小参数的集合。为了确保根据账户资产组合的服务配置文件中指定的规则来处理基于云的支付交易,CBP 1080在已经启用的账户的使用期限期间执行各种核心功能。这些功能可以包括提供、活动账户管理、支付的确认、交易处理、生命周期管理以及后付制。
在账户被提供作为基于云的交易账户之前,CBP 1080可以创建资产组合的服务配置文件。提供可以包括获得注册账户、创建账户信息(诸如,备选账户标识符(例如,备选主账号(PAN)),或者充当可以代替实账户标识符(例如,实际PAN)用来进行交易的账户标识符替代物的令牌),并且已经为资产组合建立继承服务配置文件。一旦提供账户,相关服务配置文件细节便与交易处理和装置上基于云的交易逻辑两者共享,以确保可以在交易处理时和在用户使用移动应用程序期间完成决策。
一旦提供账户,便可以由CBP 1080执行活动账户管理。活动账户管理可以从交易处理活动或者从移动应用程序活动发起。在已经提供账户之后,活动账户管理能力生成将部署到便携式通信装置1010的账户参数的初始集合。账户参数可以包括在提供期间生成的账户信息(例如,备选账户标识符或令牌)以及动态信息,以确保账户参数的集合一旦递送到装置便只具有有限的用途或有限的寿命。取决于支持哪种类型的交易,动态信息可以包括有限使用密码密钥或动态数据。例如,动态信息可以包括用于计算密码的有限使用密钥(LUK)以及用于支持旧有的动态卡验证值或基于代码的实施方式的有限使用动态数据。
在交易处理期间,如果由CBP 1080为特定账户保留的服务配置文件参数表明便携式通信装置1010上的账户参数需要替换,那么CBP 1080的活动账户管理能力可以经由MAP1070连接到便携式通信装置1010,以补充账户参数。同样地,如果存储在便携式通信装置1010上的装置上服务配置文件参数表明需要或快需要账户参数补充(即,通过监测账户参数阈值),那么移动应用程序1014可以向CBP 1080请求账户参数补充。
一旦已经提供便携式通信装置1010以进行基于云的交易,便可以经由便携式通信装置1010通过与(例如,商家位置处的)访问装置1060的非接触式阅读器1062交互来进行交易。访问装置1060的部件可以包括销售点(POS)终端1064和/或电子现金出纳机1066。访问装置1060可以耦合到收单方1074(例如,经由未示出的商家计算机)。收单方1074可以经由交易处理网络1084连接到发行方或主处理系统1072。交易处理网络1084可以包括一个或多个服务器计算机。服务器计算机通常是功能强大的计算机或计算机集群。例如,服务器计算机可以是大的主机、小型计算机集群或像一个单元一样工作的一组服务器。在一个示例中,服务器计算机可以是耦合到网络服务器的数据库服务器。交易处理网络1084可以使用任何合适的有线或无线网络(包括互联网)。
交易处理网络1084可以包括数据处理子系统、网络和用来支持和递送授权服务、异常文件服务、交易评分服务以及清算与结算服务的操作。示例性交易处理网络可以包括VisaNetTM。诸如VisaNetTM的交易处理网络能够处理信用卡交易、借记卡交易以及其他类型的商业交易。VisaNetTM具体包括处理授权请求的VIP系统(Visa集成支付系统)和执行清算和结算服务的Base II系统。
每个实体(例如,收单方1074、交易处理网络1084、发行方或主处理系统1072)可以包括一个或多个计算机,以实现通信或执行本文中所述的功能中的一个或多个功能。
为了进行基于云的交易,便携式通信装置1010的用户可以使便携式通信装置1010轻击访问装置1060的非接触式阅读器1062(例如,经由NFC),或在便携式通信装置1010的屏幕上显示可以由访问装置1060的非接触式阅读器1062(例如,光学扫描器或阅读器)扫描的图像(诸如,条形码或QR码)。在一些实施方案中,便携式通信装置1010可以向访问装置1060提供账户标识符(例如,备选账户标识符、令牌等)和额外信息(诸如,有限使用账户参数或从有限使用账户参数中导出的信息)。例如,账户标识符或令牌和/或额外信息(例如,交易密码)可以用由访问装置1060扫描的条形码或QR码进行编码;或者账户标识符或令牌和/或额外信息可以经由NFC发射到访问装置1060。在一些实施方案中,有限使用账户参数可以包括交易密码
访问装置1060或耦合到访问装置1060的商家计算机可以生成包括账户标识符和额外信息(例如,有限使用账户参数或者从有限使用账户参数中导出的信息)在内的授权请求消息,并且将授权请求消息转发到收单方1074。授权请求消息然后被发送到交易处理网络1084。交易处理网络1084然后将授权请求消息转发到与账户(与便携式通信装置1010相关联)的发行方相关联的对应发行方或主处理系统1072。
在发行方或主处理系统1072接收到授权请求消息之后,可以剖析授权请求消息,并且授权请求消息中的信息可以发送到CBP 1080以进行验证。授权响应消息然后被发回到交易处理网络1084,以指示当前交易是否被授权(或未被授权)。交易处理网络1084然后将授权响应消息转发回到收单方1074。在一些实施方案中,即便发行方或主处理系统1072已经授权交易,交易处理网络1084仍可以拒绝交易,例如,取决于欺诈风险分数的值或者取决于有限使用账户参数是否由CBP 1080验证。收单方1074然后将授权响应消息发送到商家计算机和/或访问装置1060。授权响应结果可以由访问装置1060显示,或者可以在物理收条上打印出来。替代性地,如果交易是在线交易,则商家可以提供网页或授权响应消息的其它指示,作为虚拟收条。收条可以包括交易的交易数据。
在一天结束时,可以由交易处理网络1084进行常规的清算与结算过程。清算过程是在收单方和发行方之间交换财务细节的过程,以利于发布到顾客的支付账户,并核对用户的结算位置。
图11说明便携式通信装置1101(例如,实施便携式通信装置1010)的框图,其中可以实施本文中所述的过程的一些实施方案。便携式通信装置1101可以包括耦合到存储器1102的装置硬件1104。装置硬件1104可以包括处理器1105、通信子系统1109、用户接口1106、显示屏1107(其可以是用户接口1106的一部分)以及非接触式接口1108。处理器1105可以被实施为一个或多个集成电路(例如,一个或多个单核或多核微处理器和/或微控制器),并且被用来控制便携式通信装置1101的操作。处理器1105可以响应于存储在存储器1102中的程序代码或计算机可读代码来执行多种程序,并且可以保留多个同时执行的程序或进程。通信子系统1106可以包括一个或多个RF收发器和/或连接器,所述RF收发器和/或连接器可以由便携式通信装置1101用来与其他装置通信和/或与外部网络连接。用户接口1106可以包括输入元件和输出元件的任何组合,以便允许用户与便携式通信装置1101交互并且调用其功能性。在一些实施方案中,显示屏1107可以是用户接口1106的一部分。
非接触式接口1108可以包括一个或多个RF收发器,以便与访问装置的非接触式阅读器交互以进行交易(例如,支付交易、访问交易、信息交换等)。在一些实施方案中,可以由移动OS 1114使用卡模拟API 1116来访问非接触式接口1108,而不需要使用安全元件。在一些实施方案中,显示器1107也可以是非接触式接口1108的一部分,并且被用来(例如)使用QR码、条形码等来执行交易。
存储器1102可以使用任何数量的非易失性存储器(例如,闪速存储器)和易失性存储器(例如,DRAM、SRAM)的任何组合、或任何其他非暂时性存储介质、或其组合介质来实现。存储器1102可以存储移动OS 1114和其中驻留一个或多个移动应用程序的移动应用程序环境1110,包括将由处理器1105执行的交易应用程序1112(例如,移动钱包应用程序、移动银行应用程序、移动支付应用程序、商家应用程序等)。在一些实施方案中,移动OS 1114可以实施一组卡模拟API 1116,其可以由交易应用程序1112调用以便访问非接触式接口1108来与访问装置交互。
根据一些实施方案,交易应用程序1112可以包括多个软件层。例如,交易应用程序1112可以包括第一软件层1120(例如,SDK)和第二软件层1130(例如,NDK)。第一软件层1120可以包括用来实施非安全敏感函数的一组公共API,所述非安全敏感函数为诸如用户接口函数、联网或通信函数以及可以调用第二软件层1130中实施的安全敏感函数的函数。第一软件层1120可以用诸如Java的高级编程语言编写。第二软件层1130可以包括本地库以实施安全敏感函数,诸如令牌请求函数1134、账户参数补充函数1136、密码生成函数1138等。第二软件层1130可以用诸如C或C++的低级编程语言编写。
可以调用令牌请求函数1134以从远程服务器(例如,CBP,或者发行方或主处理系统)请求令牌。令牌可以用作实账户标识符的替代物,以进行交易(例如,通过将令牌发送到访问装置)。使用令牌而不是实账户标识符可以更安全,因为在进行交易时并不发射实账户标识符。令牌请求函数1134可以在(例如)注册时间被调用以请求初始令牌,或者在当前令牌的寿命过期时被调用。
账户参数补充函数1136可以被调用以补充或更新账户参数(诸如,来自远程服务器(例如,CBP,或者发行方或主处理系统)的有限使用密钥)。在交易时,有限使用密钥用来生成交易密码,所述交易密码被提供给访问装置以进行交易。有限使用密钥可以与一组或者一个或多个有限使用阈值相关联(例如,在预定时间段内、针对预定数目的交易和/或针对预定累计交易金额有效),以限制LUK的使用。当LUK的有限使用阈值中的一个或多个已过期或快要过期时,账户参数补充函数1136可以被调用以请求新的LUK。
密码生成函数1138可以在交易时间被调用以生成交易密码,所述交易密码被提供给访问装置以进行交易。可以通过从访问装置接收动态交易数据(例如,交易金额、交易日期、不可预知的数目等)并利用LUK对动态交易数据进行加密来生成交易密码。在一些实施方案中,可以通过改为利用LUK对静态字符串进行加密(例如,如果访问装置不支持将动态数据发射到便携式通信装置)来生成交易密码。
根据一些实施方案,可以使用本文中所述的相互认证技术来保护第二软件层1130中实施的安全敏感函数(例如,令牌请求函数1134、账户参数补充函数1136、密码生成函数1138等)以免受恶意代码和中间人攻击。当第一软件层120调用第二软件层130中的这些函数时,在这些软件层之间传递的数据和参数可以使用数据加密密钥进行加密和解密,所述数据加密密钥是根据本文中所述的相互认证技术在交易应用程序1112的初始化期间从软件层之间共享的绑定信息中导出的。
尽管以上描述可已经描述了用在具有第一软件层和第二软件层的应用程序中的相互认证技术,但应理解,所述技术可以用来保护在应用程序的任何软件层中实施的函数。此外,应用程序并不限于只具有两个软件层,而是可以具有任何数目的软件层(例如,三个或更多个软件层、部分或库)。另外,本文中所述的相互认证技术也可以扩展到非为同一个应用程序的一部分的软件部件。例如,本文中所述的相互认证技术可以用来建立彼此通信的两个软件应用程序或者软件应用程序与操作系统等之间的相互认证。
本文中所述的计算装置、通信装置、计算机、服务器等中的任一者可以使用耦合到存储器的一个或多个处理器来实施,所述存储器存储代码或指令,所述代码或指令在由一个或多个处理器执行时导致装置执行本文中所述的方法和过程中的一个或多个。本文中所述的用于包含代码或代码部分的存储器、存储介质和计算机可读介质可以包括本领域中已知的或使用的任何适当介质,包括存储介质和通信介质,诸如但不限于在用于存储和/或发射信息(诸如,计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质,包括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.根据权利要求4所述的方法,其中使用从与所述计算装置相关联的至少计算装置标识符中导出的绑定密钥对所述第一随机数进行加密。
7.根据权利要求4所述的方法,其中使用从与所述应用程序的发行方相关联的至少发行方标识符中导出的绑定密钥对所述第一随机数进行加密。
8.一种用于使用数据加密密钥在应用程序的第一软件层与第二软件层之间建立相互认证的方法,所述数据加密密钥是基于在所述应用程序的初始化期间由所述第一软件层生成的第一随机数和由所述第二软件层生成的第二随机数而导出的,所述方法包括:
由在计算装置上执行的所述第二软件层来检索在所述应用程序的所述初始化期间由所述第二软件层存储的绑定信息;
由所述第二软件层对所述绑定信息进行解密,以获取所述第一随机数;
由所述第二软件层从所述第一软件层接收加密的第二随机数;
由所述第二软件层对所述加密的第二随机数进行解密,以获取所述第二随机数;
由所述第二软件层基于所述第一随机数和所述第二随机数来导出所述数据加密密钥;以及
由所述第二软件层使用所述数据加密密钥对从所述第二软件层发送到所述第一软件层的数据进行加密。
9.根据权利要求8所述的方法,其还包括:
由所述第二软件层对所述绑定信息进行解密,以获取初始化时间信息;以及
由所述第二软件层基于所述初始化时间信息来确定动态时间信息,其中所述数据加密密钥是进一步基于所述动态时间信息导出的。
10.根据权利要求9所述的方法,其中通过以下步骤来导出所述数据加密密钥:
将所述第一随机数和所述第二随机数进行组合,以生成组合随机数;
将所述组合随机数与所述动态时间信息连结;以及
对所述连结的结果进行散列。
11.根据权利要求8所述的方法,其还包括:
在检索所述绑定信息之前:
从所述第一软件层接收加密的第一随机数;
由所述第二软件层对所述加密的第一随机数进行解密,以获取所述第一随机数;
由所述第二软件层对所述第一随机数进行重新加密,以生成重新加密的第一随机数;
对初始化时间信息进行加密,以生成加密的初始化时间信息;以及
将所述重新加密的第一随机数和所述加密的初始化时间信息存储作为所述绑定信息。
12.根据权利要求8所述的方法,其还包括:
在检索所述绑定信息之前:
由所述第二软件层生成所述第二随机数;
由所述第二软件层对所述第二随机数进行加密;
由所述第二软件层对初始化时间信息进行加密;以及
将所述加密的第二随机数和所述加密的初始化时间信息发送到所述第一软件层。
13.根据权利要求12所述的方法,其中使用从与所述计算装置相关联的至少计算装置标识符中导出的绑定密钥对所述第二随机数和所述初始化时间信息进行加密。
14.根据权利要求12所述的方法,其中使用从由所述第一软件层生成的至少所述第一随机数中导出的绑定密钥对所述第一随机数进行加密。
15.一种计算装置,其包括:
处理器;以及
存储器,其耦合到所述处理器并且存储计算机可读代码,所述计算机可读代码用于实施具有第一软件层和第二软件层的应用程序;
其中所述计算机可读代码在由所述处理器执行时导致所述第一软件层:
从所述第二软件层接收加密的第一随机数;
对所述加密的第一随机数进行解密,以获取所述第一随机数;
检索在所述应用程序的初始化期间由所述第一软件层存储的第一绑定信息;
对所述第一绑定信息进行解密,以获取第二随机数;以及
基于所述第一随机数和所述第二随机数来导出数据加密密钥;
其中所述代码在由所述处理器执行时导致所述第二软件层:
检索在所述应用程序的所述初始化期间由所述第二软件层存储的第二绑定信息;
对所述第二绑定信息进行解密,以获取所述第一随机数;
从所述第一软件层接收加密的第二随机数;
对所述加密的第二随机数进行解密,以获取所述第二随机数;
基于所述第一随机数和所述第二随机数来导出所述数据加密密钥;以及
其中使用所述数据加密密钥对在所述第一软件层与所述第二软件层之间传输的数据进行加密。
16.根据权利要求15所述的计算装置,其中所述数据加密密钥是进一步基于表示自从所述应用程序的所述初始化以来所经过的时间的动态时间信息导出的。
17.根据权利要求16所述的计算装置,其中表示所述应用程序的初始化时间的初始化时间信息由所述第二软件层在所述应用程序的所述初始化期间生成,并且由所述第二软件层提供给所述第一软件层。
18.根据权利要求17所述的计算装置,其中所述初始化时间信息在被提供给所述第一软件层之前进行加密。
19.根据权利要求18所述的计算装置,其中所述初始化时间信息是使用从至少所述第一随机数中导出的绑定密钥进行加密的。
20.根据权利要求18所述的计算装置,其中所述绑定密钥是从与所述计算装置相关联的至少计算装置标识符中导出的。
CN201680011859.XA 2015-03-12 2016-03-11 软件层的相互认证 Withdrawn CN107278307A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562132289P 2015-03-12 2015-03-12
US62/132,289 2015-03-12
PCT/US2016/022125 WO2016145377A1 (en) 2015-03-12 2016-03-11 Mutual authentication of software layers

Publications (1)

Publication Number Publication Date
CN107278307A true CN107278307A (zh) 2017-10-20

Family

ID=56880578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680011859.XA Withdrawn CN107278307A (zh) 2015-03-12 2016-03-11 软件层的相互认证

Country Status (6)

Country Link
US (2) US10503913B2 (zh)
EP (1) EP3269119B1 (zh)
CN (1) CN107278307A (zh)
AU (1) AU2016228544B2 (zh)
RU (1) RU2715032C2 (zh)
WO (1) WO2016145377A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210035083A1 (en) * 2019-08-02 2021-02-04 Mastercard International Incorporated System and method to support payment acceptance capability for merchants

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10970688B2 (en) 2012-03-07 2021-04-06 Early Warning Services, Llc System and method for transferring funds
US20130238488A1 (en) 2012-03-07 2013-09-12 Clearxchange, Llc System and method for transferring funds
US11593800B2 (en) 2012-03-07 2023-02-28 Early Warning Services, Llc System and method for transferring funds
US10395247B2 (en) 2012-03-07 2019-08-27 Early Warning Services, Llc Systems and methods for facilitating a secure transaction at a non-financial institution system
US10395223B2 (en) 2012-03-07 2019-08-27 Early Warning Services, Llc System and method for transferring funds
US11068895B2 (en) * 2015-02-17 2021-07-20 Visa International Service Association Token and cryptogram using transaction specific information
US10748127B2 (en) 2015-03-23 2020-08-18 Early Warning Services, Llc Payment real-time funds availability
US10878387B2 (en) 2015-03-23 2020-12-29 Early Warning Services, Llc Real-time determination of funds availability for checks and ACH items
US10839359B2 (en) 2015-03-23 2020-11-17 Early Warning Services, Llc Payment real-time funds availability
US10769606B2 (en) 2015-03-23 2020-09-08 Early Warning Services, Llc Payment real-time funds availability
US10832246B2 (en) 2015-03-23 2020-11-10 Early Warning Services, Llc Payment real-time funds availability
US11062290B2 (en) 2015-07-21 2021-07-13 Early Warning Services, Llc Secure real-time transactions
US10956888B2 (en) 2015-07-21 2021-03-23 Early Warning Services, Llc Secure real-time transactions
US10963856B2 (en) 2015-07-21 2021-03-30 Early Warning Services, Llc Secure real-time transactions
US11386410B2 (en) 2015-07-21 2022-07-12 Early Warning Services, Llc Secure transactions with offline device
US11151522B2 (en) 2015-07-21 2021-10-19 Early Warning Services, Llc Secure transactions with offline device
US11037122B2 (en) 2015-07-21 2021-06-15 Early Warning Services, Llc Secure real-time transactions
US11037121B2 (en) 2015-07-21 2021-06-15 Early Warning Services, Llc Secure real-time transactions
US11151523B2 (en) 2015-07-21 2021-10-19 Early Warning Services, Llc Secure transactions with offline device
US10970695B2 (en) 2015-07-21 2021-04-06 Early Warning Services, Llc Secure real-time transactions
US11157884B2 (en) 2015-07-21 2021-10-26 Early Warning Services, Llc Secure transactions with offline device
US10438175B2 (en) 2015-07-21 2019-10-08 Early Warning Services, Llc Secure real-time payment transactions
US10861019B2 (en) * 2016-03-18 2020-12-08 Visa International Service Association Location verification during dynamic data transactions
US10776876B1 (en) 2016-04-13 2020-09-15 Wells Fargo Bank, N.A. Virtual wallet insurance
US11144928B2 (en) * 2016-09-19 2021-10-12 Early Warning Services, Llc Authentication and fraud prevention in provisioning a mobile wallet
EP3619636B1 (en) 2017-05-03 2022-06-29 Visa International Service Association System and method for software module binding
EP3602991B1 (en) * 2017-12-13 2022-02-02 Google LLC Mechanism for achieving mutual identity verification via one-way application-device channels
WO2020041473A1 (en) 2018-08-21 2020-02-27 The Regents Of The University Of Michigan Computer system with moving target defenses against vulnerability attacks
US11570155B2 (en) * 2019-07-25 2023-01-31 Everything Blockchain Technology Corp. Enhanced secure encryption and decryption system
US11263310B2 (en) 2019-11-26 2022-03-01 Red Hat, Inc. Using a trusted execution environment for a proof-of-work key wrapping scheme that verifies remote device capabilities
US11520878B2 (en) * 2019-11-26 2022-12-06 Red Hat, Inc. Using a trusted execution environment for a proof-of-work key wrapping scheme that restricts execution based on device capabilities
EP3913509A1 (en) * 2020-05-22 2021-11-24 Thales Dis France Sa Method to secure computer code
WO2023149816A1 (ru) * 2022-02-04 2023-08-10 Публичное Акционерное Общество "Сбербанк России" Способ формирования статичного идентификатора мобильных устройств
US20230291548A1 (en) * 2022-03-08 2023-09-14 Western Digital Technologies, Inc. Authorization requests from a data storage device to multiple manager devices

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5757907A (en) 1994-04-25 1998-05-26 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: method and apparatus for generating a machine-dependent identification
US6615350B1 (en) 1998-03-23 2003-09-02 Novell, Inc. Module authentication and binding library extensions
US6862683B1 (en) 2000-03-24 2005-03-01 Novell, Inc. Method and system for protecting native libraries
US20030035547A1 (en) 2001-03-27 2003-02-20 John Newton Server with multiple encryption libraries
JP2002353963A (ja) * 2001-05-28 2002-12-06 Nec Corp メッセージ配送システム、方法、およびプログラム
US7424615B1 (en) 2001-07-30 2008-09-09 Apple Inc. Mutually authenticated secure key exchange (MASKE)
US7853983B2 (en) 2002-07-29 2010-12-14 Bea Systems, Inc. Communicating data from a data producer to a data receiver
US7162711B2 (en) 2002-12-12 2007-01-09 Sun Microsystems, Inc. Method of automatically virtualizing core native libraries of a virtual machine
US20060288215A1 (en) 2005-06-15 2006-12-21 Shinichi Takemura Methods and apparatuses for utilizing application authorization data
US8848912B2 (en) * 2005-12-19 2014-09-30 Nippon Telegraph And Telephone Corporation Terminal identification method, authentication method, authentication system, server, terminal, wireless base station, program, and recording medium
FR2906952B1 (fr) 2006-10-05 2009-02-27 Inside Contactless Sa Procede d'authentification mutuelle entre une interface de communication et un processeur hote d'un chipset nfc.
CN100488099C (zh) 2007-11-08 2009-05-13 西安西电捷通无线网络通信有限公司 一种双向接入认证方法
KR101012398B1 (ko) * 2008-03-03 2011-02-11 삼성전자주식회사 O/s를 이용하는 유닛 및 이를 이용하는 화상형성장치
US20090293117A1 (en) 2008-05-21 2009-11-26 Mei Yan Authentication for access to software development kit for a peripheral device
US8196213B2 (en) 2008-07-11 2012-06-05 Microsoft Corporation Verification of un-trusted code for consumption on an insecure device
US8533844B2 (en) * 2008-10-21 2013-09-10 Lookout, Inc. System and method for security data collection and analysis
US11107172B2 (en) * 2009-08-31 2021-08-31 Leigh W Budlong Methods for transforming complex zoning codes and regulations to produce usable data
US8745386B2 (en) 2010-06-21 2014-06-03 Microsoft Corporation Single-use authentication methods for accessing encrypted data
US8683462B2 (en) 2010-10-22 2014-03-25 Adobe Systems Incorporated Handling calls to native code in a managed code environment
US8856805B2 (en) 2011-12-29 2014-10-07 Oracle International Corporation Virtual channel for embedded process communication
CN103220259B (zh) * 2012-01-20 2016-06-08 华为技术有限公司 Oauth API的使用、调用方法、设备及系统
DE102012111903B4 (de) * 2012-12-06 2015-11-19 Deutsche Post Ag Verfahren zum Aufbau einer sicheren Verbindung zwischen Clients
US9426183B2 (en) * 2013-07-28 2016-08-23 Acceptto Corporation Authentication policy orchestration for a user device
US9485206B2 (en) * 2013-12-19 2016-11-01 Websafety, Inc. Devices and methods for improving web safety and deterrence of cyberbullying
US9280890B2 (en) * 2014-03-28 2016-03-08 Mivalife Mobile Technology, Inc. Security system access detection

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210035083A1 (en) * 2019-08-02 2021-02-04 Mastercard International Incorporated System and method to support payment acceptance capability for merchants
US11868981B2 (en) * 2019-08-02 2024-01-09 Mastercard International Incorporated System and method to support payment acceptance capability for merchants

Also Published As

Publication number Publication date
WO2016145377A1 (en) 2016-09-15
AU2016228544A1 (en) 2017-07-20
US11068608B2 (en) 2021-07-20
EP3269119B1 (en) 2020-05-06
US10503913B2 (en) 2019-12-10
RU2017134356A3 (zh) 2019-09-11
RU2017134356A (ru) 2019-04-03
AU2016228544B2 (en) 2020-01-16
RU2715032C2 (ru) 2020-02-21
EP3269119A1 (en) 2018-01-17
US20160267280A1 (en) 2016-09-15
US20200050775A1 (en) 2020-02-13
EP3269119A4 (en) 2018-11-14

Similar Documents

Publication Publication Date Title
CN107278307A (zh) 软件层的相互认证
US11783061B2 (en) Embedding cloud-based functionalities in a communication device
US11875344B2 (en) Cloud-based transactions with magnetic secure transmission
CN107925572A (zh) 软件应用程序到通信装置的安全绑定
CN105684346B (zh) 确保移动应用和网关之间空中下载通信安全的方法
KR102221636B1 (ko) 클라우드-기반 트랜잭션 방법 및 시스템
CN107111500A (zh) 应用库的无线储备
CN104603809B (zh) 在移动设备上使用虚拟卡促进交易的系统和方法
JP5055375B2 (ja) 支払データの保護
CN104380652B (zh) 用于nfc使能设备的多发行商安全元件分区架构
CN109643354A (zh) 使用访问装置的加密密钥交换过程
CN107087432A (zh) 远程服务器加密的数据的储备系统和方法
CN106462843A (zh) 用于安全远程支付处理的主小应用程序
CN105701661A (zh) 用于安全配置、传送和验证支付数据的方法、装置和系统
CN104969245A (zh) 用于安全元件交易和资产管理的装置和方法
CN106465112A (zh) 离线认证
CN104463001A (zh) 一种独立生成和保存加密数字货币私钥的方法及承载加密数字货币私钥的装置
CN107210912B (zh) 对应用程序库的授权访问
US8620824B2 (en) Pin protection for portable payment devices
CN107111694A (zh) 软件篡改检测和报告过程
KR20190090699A (ko) 통합 암호화폐 보관 및 보안강화를 위한 월렛 제공 방법 및 장치
US11790372B2 (en) Architectures, systems, and methods for card based transactions

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20171020

WW01 Invention patent application withdrawn after publication