确保读卡器设备与远程服务器之间的通信的系统和方法

申请号 CN201480070394.6 申请日 2014-10-24 公开(公告)号 CN105850098A 公开(公告)日 2016-08-10
申请人 金雅拓股份有限公司; 发明人 A.高格特; P.格尔伯格; P.斯马德加;
摘要 本 发明 涉及低成本 读卡器 与远程 服务器 之间的通信的端到端安全性的实现方式。本发明的目的是,在读卡器中不存在安全随机数生成器和熵源的背景下,通过不可信的通信设备(例如智能电话或平板)在读卡器与远程服务器之间建立对一些基本的差分侧信道分析固有地具有抵抗 力 的安全信道,同时提供以下特性:读卡器与服务器之间的相互验证;基于会话密钥的安全信道,使得与过去交易有关的安全信道的密钥无法被重放,或者将来交易的会话密钥无法被读卡器预先计算并且无法稍后被读卡器在合法交易中重用。
权利要求

1.一种确保在连接到移动设备的不安全的读卡器与远程服务器之间通过不安全的网络的交易的方法,其中,在开始交易的确认步骤时:
操作读卡器,以通过移动设备将建立安全通信的请求发送给远程服务器;
操作远程服务器,以递增可预测值;
操作远程服务器,以根据由服务器所生成的随机值和经递增的可预测值,推导会话加密密钥和会话完整性密钥;
操作远程服务器,以通过移动设备将验证请求发送给读卡器,该验证请求包含随机值以及根据会话完整性密钥和随机值的至少一部分计算出的Mac值;
操作读卡器,以递增当前的可预测值,并且根据所接收的随机值和经递增的当前的可预测值,计算会话加密密钥和会话完整性密钥;
操作读卡器,以根据所计算的会话完整性密钥和所接收的随机值来计算Mac值,并且通过比较所计算的Mac值和所接收的Mac值来验证远程服务器;
当远程服务器的验证成功时,操作读卡器,以用其数据库中的经递增的当前的可预测值来更新其当前的可预测值;
操作读卡器,以通过移动设备将验证请求发送给远程服务器,该验证请求包含经更新的当前的可预测值以及根据会话完整性密钥和经更新的当前的可预测值上的至少一部分计算出的Mac值;
操作远程服务器,以根据所计算的会话完整性密钥和所接收的经更新的当前的可预测值来计算Mac值,并且通过比较所计算的Mac值和所接收的Mac值来验证读卡器;
当远程服务器的验证成功时,设立读卡器与远程服务器之间的安全会话信道,其中,会话加密密钥和会话完整性密钥保护在读卡器与远程服务器之间交换的消息的机密性和完整性。
2.根据在前的权利要求所述的方法,其中,
当远程服务器和读卡器的验证成功时,
操作远程服务器,以经由安全会话信道将命令发送给连接到读卡器的智能卡,操作远程服务器,以经由安全信道接收通过读卡器的来自智能卡的命令响应。
3.根据任何在前的权利要求所述的方法,其中,由读卡器通过移动设备发送给远程服务器的建立安全通信的请求包含读卡器的标识符。
4.根据在前的权利要求所述的方法,其中,会话加密密钥和会话完整性密钥根据读取器主密钥、由服务器所生成的随机值、读卡器的标识符以及经递增的可预测值来推导出。
5.根据任何在前的权利要求所述的方法,其中,可预测值由读卡器的计数器生成。
6.根据任何在前的权利要求所述的方法,其中,由服务器递增的可预测值由以下提供:
读卡器,其将其当前的经更新的可预测值添加到发送给远程服务器的建立安全通信的请求;或者
服务器的序号计数器。
7.根据任何在前的权利要求所述的方法,其中,由服务器进行的读卡器的验证包含以下步骤:
操作远程服务器,以检查被包含到读卡器验证请求中的更新的可预测值是否对应于其经递增的可预测值;
如果检验成功,则操作远程服务器,以检验被包含到读卡器验证请求中的MAC值以验证所述读卡器。
8.根据任何在前的权利要求所述的方法,其中,随机值为3字节长。
9.根据任何在前的权利要求所述的方法,其中,当经更新的可预测值达到预先定义的最大可预测值时,读卡器被定或待命,直至定义新的预先定义的最大值为止。
10.根据任何在前的权利要求所述的方法,其中,
当由读卡器进行的服务器的验证失败时,递增读卡器的禁用计数器;
如果禁用计数器值达到预先定义的最大错误,则读卡器使自身停用。
11.根据任何在前的权利要求所述的方法,其中,在建立安全信道之后,当接收到无效的进入消息时,递增读卡器的错误计数器;
如果错误计数器值达到预先定义的最大错误,则读卡器关闭确认步骤交易的会话;
当确认步骤交易会话完成并且错误计数器值小于预先定义的最大错误时,清除错误计数器。
12.根据任何在前的权利要求所述的方法,其中,读卡器的标识符是针对每个读卡器唯一的序列号。
13.根据任何在前的权利要求所述的方法,其中,会话加密密钥和会话完整性密钥包含针对每个交易会话唯一的四个对称密钥:
传送加密密钥TENC,由服务器使用以对给连接到读卡器的智能卡的命令进行加密,传送加密密钥TENC由读卡器使用以对命令进行解密;
传送完整性密钥TMAC,由服务器使用以根据命令来计算MAC值,传送完整性密钥TMAC由读卡器使用以检查所接收的MAC值;
接收加密密钥RENC,由读卡器使用以对命令的响应进行加密,接收加密密钥RENC由服务器使用以对所接收的响应进行解密;
接收完整性密钥RMAC,由读卡器使用以根据命令响应来计算MAC值,接收完整性密钥RMAC由服务器使用以检查所接收的MAC值。
14.一种确保在连接到移动设备的不安全的读卡器与远程服务器之间通过不安全的网络的交易的系统,其中:
操作读卡器,以通过移动设备将建立安全通信的请求发送给远程服务器;
操作读卡器,以根据任何在前的权利要求所述的方法来验证远程服务器;
操作远程服务器,以根据任何在前的权利要求所述的方法来验证读卡器;
当相互验证成功时,根据任何在前的权利要求所述的方法,设立读卡器与远程服务器之间的安全会话信道,其中,会话加密密钥和会话完整性密钥保护在读卡器与远程服务器之间交换的消息的机密性和完整性。
15.根据在前的权利要求所述的系统,其中,当远程服务器与读卡器的验证成功时,操作远程服务器,以将命令经由安全会话信道发送给连接到读卡器的智能卡;
操作远程服务器,以经由安全信道接收通过读卡器的来自智能卡的命令响应。

说明书全文

确保读卡器设备与远程服务器之间的通信的系统和方法

技术领域

[0001] 本发明一般涉及确保读卡器设备与远程服务器之间通过所连接的终端的通信的系统和方法。
[0002] 具体地,本发明涉及针对在连接到终端的卡支付的读取器与远程服务器之间通过不安全的网络的交易支付建立端到端安全信道的系统和方法。

背景技术

[0003] 众所周知的支付卡被全世界数百万人使用,以便于各种类型的商务交易。在涉及在商人场所处购买产品或服务的典型交易中,在位于商人的商业处所的销售点终端(“POS终端”)处呈递支付卡。POS终端可以是能够存取存储在支付卡上的数据的读卡器或类似的设备,其中,该数据包括标识和验证数据。从支付卡读取的数据提供给商人的交易处理系统,然后提供给让受方,让受方典型地是管理商人账户的行或其他机构。
[0004] 为了保证基于芯片的支付卡的安全性和全球互通性,众所周知的EMV标准定义EMV兼容的支付卡与EMV兼容的POS终端之间的交互。因此,为了接受EMV支付,商人不得不部署EMV兼容的POS终端。对于商人来说,这样的EMV兼容的POS终端硬件、它们的部署以及它们的维护是相当大的成本。
[0005] 如今,技术已经彻底改革了消费者进行购买的方式,并且扩展了零售渠道的范围。实际上,诸如移动电话这样的移动设备在日常生活中起到越来越万能的作用。正在开发许多新的特征和服务,试图将移动电话扩展超出它们的语音和消息传送的传统的功能之外。
[0006] 然而,虽然支付卡对于进行电子商务提供最佳的安全性,但是它们还没有被在线市场采用。主要原因是读卡器的高成本以及对于大多数人们来说的系统复杂性。必须将卡和读取器均提供给包含该市场基础的数百万的潜在的最终用户。
[0007] 为了使支付卡被在线市场采用,已经开发出低成本的读卡器设备。低成本的读卡器设备包含能够连接到移动设备的接口。这种类型的读卡器不具有安全随机数生成器或熵源(entropy source)。而且,该实现方式不可能嵌入抵抗侧信道攻击的高级对策。这种不安全的低成本读卡器没有提供进行电子商务所必要的安全性。
[0008] 使用这种类型的读卡器,显然越来越期望更快速、更便宜、安全且更方便的低成本读卡器来进行安全的交易。
[0009] 需要在商店中、在因特网上以及面对面地进行便宜的、易于管理且便携式的安全信用卡支付。

发明内容

[0010] 提供本发明的下面的概述,以便提供对本发明的一些方面和特征的基本理解。该概述不是本发明的广泛综述,并且因此其不打算具体地标识本发明的关键或至关重要的元素或者描述本发明的范围。其唯一的目的是以简化的形式呈现本发明的一些概念,作为下面呈现的更详细描述的序言。
[0011] 本发明用低成本读卡器来解决上述的交易安全性缺点。本发明涉及一种系统和方法,其用于保护在交易期间在不安全的网络上、在读卡器与远程服务器之间通过移动设备的数据运输。
[0012] 本发明涉及针对在低成本的读卡器与远程服务器之间的通信的端到端安全性的实现方式。本发明的目的是,在读卡器中不存在安全随机数生成器并且不存在熵源的背景下,通过不可信的通信设备(例如智能电话或平板)在读卡器与远程服务器之间建立对一些基本的差分侧信道分析固有地具有抵抗的安全信道,同时提供下面的特性:
[0013] -读卡器与服务器之间的相互验证;
[0014] -基于会话密钥的安全信道,使得与过去交易有关的安全信道的密钥无法被重放,或者将来交易的会话密钥无法被读卡器预先计算并且无法稍后被读卡器在合法交易中重用。
[0015] 本发明不试图减轻诸如简单电磁分析(SEMA)或简单功率分析(SPA)这样的攻击;减轻技术强烈地取决于硬件。
[0016] 代替地,本发明仅打算减轻诸如差分电磁分析(DEMA)、相关电磁分析(CEMA)、差分功率分析(DPA)、相关功率分析(CPA)这样的差分攻击的可能性。
[0017] 关于本发明,密码计算的管理在读卡器内,同时未必涉及服务器。实际上,通过强迫攻击者使用合法的交易,为了充分地获得电磁或功率测量,攻击者将首先增加攻击的时间,然后可以在服务器侧(在一定程度上)检测到攻击者。
[0018] 本发明提供一种使用读卡器以确保通过“诸如电话这样的”移动设备的任何交易(甚至在线交易)安全的便宜且容易的方法。例如当管理银行账号、进行支付或者最终在线投票时,读卡器和远程服务器对两者进行验证。
[0019] 本发明提出一种确保在读卡器与远程服务器之间传递的数据的方法。为此,本发明提出一种对所传递的数据进行加密的方法。此外,本发明提出检验所传递的数据的起源/完整性的方法。
[0020] 本发明的实施例的方面一般涉及定义如何在读卡器与远程服务器之间设立安全信道、其如何运行以及所需的数据和密码算法是什么的方法。本发明定义安全、简单且高效的协议,以确保与连接到移动设备的读卡器的交易。
[0021] 在本发明的各种方法中,在专属化(personalization)/登记阶段期间,能够执行以下步骤:
[0022] -生成读取器密钥RK,并且能够将读取器密钥RK专属化到所述读卡器中,读取器密钥针对每个读卡器是唯一的,其可以被服务器检索;
[0023] -对每个读卡器专属化唯一的序列号SN,该序列号与读取器密钥相关联,到服务器的数据库中;
[0024] -每个读卡器包含计数器,例如设备交易计数器(DTC),该计数器在服务器的每个成功的验证之后递增。
[0025] 本发明关注于对能够发送给读卡器以及从读卡器接收的所有命令/响应的保护,而未必在通信中涉及合法的服务器。
[0026] 本发明提出一种保护可感测的会话设立(Session-Setup)命令的方法,因为其为可以使攻击者能够在密码术计算中强迫使用读取器主密钥而不涉及合法的服务器的唯一命令。使用这个命令,读卡器在输入上具有随机值Server-RND以及包含该值Server-RND的预先定义格式消息的消息验证码(MAC)。作为示例,预先定义的消息可以是:
[0027] 消息=常量值||随机值Server-RND。
[0028] 由读卡器进行的MAC的检验首先需要计算用于MAC检验的会话密钥。
[0029] 本发明一般涉及一种生成加密会话密钥和完整性会话密钥的方法。会话密钥使用秘密的读取器密钥和多样化数据(diversifying data)来计算,多样化的数据包含由合法的服务器(或者攻击者)所选取的随机值Server-RND以及在读卡器(计数器DTC)的控制下的可预测值。根据读卡器的主密钥和序列号SN推导出读取器密钥。
[0030] 由合法的服务器(或者攻击者)所选取的随机值对于向服务器提供当前的安全的信道会话未被预先计算并且合法的读卡器确实在信道的另一端的担保是有用的。该随机值的大小不需要非常大,几位就足够了。随机值Server-RND的大小优选地根据误差管理以及被视为可接受的容忍级别来设置。随机值的大小可以足够小,以便限制将想要使用例如DEMA或DPA来恢复MAC检验会话密钥的攻击者的灵活性的上限。
[0031] DTC的值在读卡器的单独控制下。DTC值在会话密钥推导函数中涉及,并且该值仅在由允许验证服务器的读卡器执行成功的MAC检验之后更新。DTC的唯一性在本发明中是重要的,因为其是会话密钥将针对每个安全信道会话唯一的确保。DTC的大小优选为足够大,以便覆盖产品的完整的生命周期。作为示例,如果交易的最大数必须以232为上限,则4字节的DTC值将是适当的。
[0032] 然后,在涉及服务器的情况下,攻击者在伪造有效的MAC(假设MAC算法在密码学上是安全的)时不会成功,并且多样化算法的消息输入中的攻击者的灵活性仅由随机值Server-RND的大小来确定。
[0033] 必须考虑会话密钥推导函数的规范来设置多样化数据的格式以及随机值Server-RND的大小。本发明的一个主要优点是,对于涉及由服务器/攻击者所选取的随机性以及在读卡器的单独控制下的每个会话的唯一值,使用单步(single-step)密钥推导,而不是使用2个步骤的密钥推导,亦即:1个步骤用于涉及在读卡器的单独控制下的每个会话的唯一值,并且一个另外的步骤用于使用由服务器/攻击者所选取的随机值。
[0034] 在MAC的检验的阶段以及递增DTC的步骤期间,攻击者的目标是MAC检验会话密钥。随机值Server-RND的大小以及预先确定的消息的格式是用于限制攻击者灵活性的手段,亦即消息的大小、常量的大小、随机值Server-RND的局部化。优选地,通过考虑MAC算法的规范来设置由MAC所检验的消息的格式。
[0035] 本发明的这种系统和方法通过提供安全通信信道的有效的手段来提高在读卡器与服务器之间传递的信息的安全性。
[0036] 为了实现那些以及其他优点,并且根据所实施并且广泛描述的本发明的目的,本发明提出一种确保在连接到移动设备的不安全的读卡器与远程服务器之间通过不安全的网络的交易安全的方法,其中,在开始交易的确认步骤时:
[0037] -操作读卡器,以通过移动设备将建立安全通信的请求发送给远程服务器;
[0038] -操作远程服务器,以递增可预测值;
[0039] -操作远程服务器,以根据由服务器所生成的随机值和经递增的可预测值,推导会话加密密钥和会话完整性密钥;
[0040] -操作远程服务器,以通过移动设备将验证请求发送给读卡器,该验证请求包含随机值以及根据会话完整性密钥和随机值的至少一部分计算出的Mac值;
[0041] -操作读卡器,以递增当前的可预测值,并且根据所接收的随机值和经递增的当前的可预测值,计算会话加密密钥和会话完整性密钥;
[0042] -操作读卡器,以根据所计算的会话完整性密钥和所接收的随机值来计算Mac值,并且通过比较所计算的Mac值和所接收的Mac值来验证远程服务器;
[0043] -当远程服务器的验证成功时,操作读卡器,以用其数据库中的经递增的当前的可预测值来更新当前的可预测值;
[0044] -操作读卡器,以通过移动设备将验证请求发送给远程服务器,该验证请求包含经更新的当前的可预测值以及根据会话完整性密钥和经更新的当前的可预测值上的至少一部分计算出的Mac值;
[0045] -操作远程服务器,以根据所计算的会话完整性密钥和所接收的经更新的当前的可预测值来计算Mac值,并且通过比较所计算的Mac值和所接收的Mac值来验证读卡器;
[0046] -当远程服务器的验证成功时,设立读卡器与远程服务器之间的安全会话信道,其中,会话加密密钥和会话完整性密钥保护在读卡器与远程服务器之间交换的消息的机密性和完整性;
[0047] -操作远程服务器,以经由安全会话信道将命令发送给连接到读卡器的智能卡
[0048] -操作远程服务器,以经由安全信道接收通过读卡器的来自智能卡的命令响应。
[0049] 本发明涉及一种确保连接到移动设备的不安全的读卡器与远程服务器之间的交易安全的方法,其中,在开始交易时:
[0050] -根据读取器密钥和多样化数据推导会话加密密钥和会话完整性密钥,所述多样化数据包括由服务器所生成的随机值以及由读卡器所生成的经更新的可预测值;
[0051] -当由读卡器进行的服务器的验证成功时,更新可预测值,
[0052] -当由服务器进行的读卡器的验证成功时,设立读卡器与服务器之间的安全会话信道,其中,会话加密密钥和会话完整性密钥保护在读卡器与服务器之间交换的消息的机密性和完整性;
[0053] -将命令从服务器经由安全会话信道发送给连接到读卡器的智能卡;
[0054] -经由安全信道接收通过读卡器的从智能卡到服务器的命令响应。
[0055] 在其他各种方法中,读取器密钥根据读卡器的主密钥和标识符来推导。读卡器的标识符是针对每个读卡器唯一的序列号。
[0056] 在其他各种方法中,由服务器进行的推导会话密钥包含以下步骤:
[0057] -将建立安全信道的请求从读卡器通过移动设备发送给服务器,其中,所述请求包含当前的经更新的可预测值以及读卡器标识符;
[0058] -递增所接收的可预测值;
[0059] -生成随机值;
[0060] -由服务器根据所存储的读取器主密钥、所接收的读卡器标识符、所生成的随机值以及经递增的所接收的可预测值,推导会话加密密钥和会话完整性密钥。
[0061] 在其他各种方法中,由读卡器进行的服务器的验证步骤包含以下步骤:
[0062] -根据会话完整性密钥以及所生成的随机值的内容的至少一部分来计算MAC签名值;
[0063] -将验证请求从服务器通过移动设备发送给读卡器,其中,所述请求包含所生成的随机值和所计算的MAC值;
[0064] -当读卡器接收到验证请求时,递增最后更新的可预测值;
[0065] -由读卡器根据读取器主密钥、读卡器标识符、所接收的随机值以及经递增的最后更新的可预测值,推导会话加密密钥和会话完整性密钥;
[0066] -如果所接收的MAC值的检验成功,则服务器被读卡器验证。
[0067] 在其他各种方法中,当服务器的验证成功时,用经递增的值来更新当前的可预测值。将经更新的可预测值存储到读卡器的数据库中或读卡器的安全元件中。当经更新的可预测值达到预先定义的最大可预测值时,读卡器被定或待命,直至定义新的预先定义的最大值为止。
[0068] 在其他各种方法中,由服务器进行的读卡器的验证步骤包含以下步骤:
[0069] -根据会话完整性密钥以及经更新的可预测值的至少一部分来计算MAC签名值;
[0070] -将验证请求从读卡器经由移动设备发送给服务器,其中,所述请求包含经更新的可预测值和所计算的MAC值;
[0071] -如果所接收的MAC值的检验成功,则读卡器被服务器验证。
[0072] 在其他各种方法中,当服务器的验证请求发送给读卡器时,服务器的序号计数器顺序地递增。当服务器被读卡器验证时,读卡器的序号计数器顺序地递增。由服务器进行的读卡器的验证请求包含读卡器的当前的序号值。当接收到验证请求时,服务器检查所接收的序号值是否对应于其序号计数器的值。如果检验成功,则检验所接收的MAC值以验证读卡器。
[0073] 在其他各种方法中,当由读卡器进行的服务器的验证失败时,读卡器的禁用计数器递增。如果禁用计数器值达到预先定义的最大错误,则读卡器使自身停用(de-activate)。
[0074] 在其他各种方法中,在读卡器与远程服务器之间的安全信道建立之后,当接收到无效的进入消息时,读卡器的错误计数器递增。如果错误计数器值达到预先定义的最大错误,则读卡器关闭确认步骤交易的会话。当确认步骤交易会话完成并且错误计数器值小于预先定义的最大错误时,清除错误计数器。
[0075] 在其他各种方法中,由服务器进行的读卡器的验证包含以下步骤:
[0076] -操作远程服务器,以检查被包含到读卡器验证请求中的更新的可预测值是否对应于其经递增的可预测值;
[0077] -如果检验成功,则检验被包含到读卡器验证请求中的MAC值,以验证所述读卡器。
[0078] 在其他各种方法中,会话加密密钥和会话完整性密钥包含针对每个交易会话唯一的四个对称密钥:
[0079] -传送加密密钥TENC,由服务器使用以对给连接到读卡器的智能卡的命令进行加密,传送加密密钥TENC由读卡器使用以对命令进行解密;
[0080] -传送完整性密钥TMAC,由服务器使用以根据命令来计算MAC值,传送完整性密钥TMAC由读卡器使用以检查所接收的MAC值;
[0081] -接收加密密钥RENC,由读卡器使用以对命令的响应进行加密,接收加密密钥RENC由服务器使用以对所接收的响应进行解密;
[0082] -接收完整性密钥RMAC,由读卡器使用以根据命令响应来计算MAC值,接收完整性密钥RMAC由服务器使用以检查所接收的MAC值。
[0083] 本发明还涉及一种确认交易处理系统,其包含连接到移动设备的不安全的读卡器以及远程服务器,其中,根据本发明来确保在连接到读卡器的智能卡与远程服务器之间运输的确认交易消息。
[0084] 本发明的方法具有许多技术优点,其中:维持低成本的读卡器、生成会话密钥的简单性以及对所传送的数据的强保护。附图说明
[0085] 使用附图将更好地理解下面的详细描述,附图中:
[0086] 图1例示在确保连接到移动设备的读卡器与远程服务器之间通过不安全的网络的交易安全的处理中所涉及的不同实体;
[0087] 图2是在密钥生成的设立阶段期间的根据本发明的示例性实施例的逻辑流程图
[0088] 图3是在读卡器与远程服务器之间的安全信道的建立期间的根据本发明的示例性实施例的交易流程图。

具体实施方式

[0089] 本发明并不特定于任何具体的硬件或软件实现方式,并且处于在实现方式的具体细节之上的概念级别上。应当理解,可以产生本发明的各种其他实施例和变型,而不背离本发明的精神和范围。提供下面的内容,以帮助理解本发明的具体实施例的实际的实现方式。
[0090] 在不同的图中,相同的元件用相同的标号来指定。为了清楚,在附图中已经示出并且将描述仅对于理解本发明有用的那些元件和步骤。
[0091] 另外,未详述各方之间数据通信的机制以及它们的环境,这里,本发明再次与通常的机制相兼容。
[0092] 而且,在本文中所包含的各个图中示出的连接线打算代表各种元件之间的示例性功能关系和/或物理耦合。应当注意,许多替换或另外的功能关系或者物理连接可以存在于实际的系统中。而且,图1中的各种实体可以使用任何适当的通信协议、经由任何适当的通信介质(包括因特网)进行通信。
[0093] 而且,当动作被说成是由设备执行时,其实际上是由该设备中的微处理器执行的,微处理器由所述设备上的程序存储器中记录的指令代码控制。动作也归属于应用或软件。这意味着,构成应用或软件的指令代码的部分由微处理器执行。
[0094] 遍及说明书对“实施例”或者“另一个实施例”的引用意味着,结合实施例描述的具体特征、结构或特性包括在所公开的主题的至少一个实施例中。因此,短语“在实施例中”或者“在另一个实施例中”在遍及说明书的各种位置的出现未必指相同的实施例。而且,具体的特征、结构或特性可以以任何适当的方式在一个或多个实施例中组合。
[0095] 图1示出在流程图中所涉及的、用于确保与读卡器的移动交易安全的实体。为了讨论的简单,在图1中示出每种实体的仅一个。图1图示在其中实现移动设备和服务器的系统的示例。
[0096] 将使用诸如移动电话这样的移动通信设备来示例本发明的实施例。然而,应当意识到,本发明同样可等同地适用于具有有线和/或无线的无线电通信能力的电子设备。这样的设备的示例可以例如是任何类型的移动电话、膝上型电脑(诸如标准、超便携式、上网本、微型膝上型电脑和平板)、手持式计算机、PDA、游戏设备、移动电话的配件等。然而,为了清楚和简单,在本说明书中概述的实施例仅使用移动电话来示例并且仅涉及移动电话。
[0097] 移动电话10典型地包含处理器、存储器、输入设备、输出设备和适当的通信方案,其全部操作性地耦合到处理器。移动设备10包含显示区域11以及用于在显示区域11中显示的项目之间导航并且输入文本和数字到移动电话中的部件12。优选为触摸感应的显示区域11可以包含一个或多个状态指示区域和/或软件栏。显示区域11以及在其上面显示的项目可以使用导航部件12或者通过使用笔状物体或手指在其上面轻敲而可操作。移动电话10也可以包含用于外部单元的通信接口13。从安全交易的视点来看,作为独立设备的移动电话被分类为是不安全的,并且不适合与其进行安全的交易。因此,移动电话本质上无法用于与其进行安全交易。
[0098] 读卡器设备14包含接口15,以便通过优选地自由传输协议连接到诸如移动电话10这样的另一个设备。接口15可以是在移动通信和计算机行业中使用的典型的通信接口(例如USB连接器、音频连接器等),或者其可以是结合本发明的实施例使用的特殊接口。读卡器设备14可以无线地或者使用其通信接口15直接地连接到移动电话10。读卡器可以被物理地插入到移动电话对应的通信接口13,或者其可以经由移动设备10的通信接口13与读卡器设备14的通信接口15之间的适配器来连接。在实施例的一些变型中,读卡器设备也可以使用电线连接到移动设备10。
[0099] 在另一个实施例中,读卡器14包含能够使用任何适当的通信方案与移动设备10通信的非接触式接口。非接触式接口可以指近场通信(NFC)收发器、非接触式读取器或者无动力的RFID。读卡器14的非接触式接口与移动电话10建立非接触式通信信道,以使用诸如近场通信(NFC)能力这样的短程通信方法来交换数据。这样的NFC技术或类似的短程通信技术的示例包括ISO标准14443、RFID、Bluetooth(TM)以及红外通信方法。
[0100] 在示例中,非接触式通信信道可以指使用需要“轻敲”通信设备的NFC技术交换信息,这意味着非接触式接口被带入到彼此几厘米的范围内。
[0101] 在本文中所例示的实施例中,读卡器14的接口15是连接到移动设备10的接口13的音频连接器,其用于使用音频信号建立通信以交换数据。
[0102] 读卡器设备14可以包含智能卡读取器插槽16,智能卡17可以充分地(完全地)或者部分地(仅一部分)插入到其中。在实施例的变型中,读卡器设备4也可以包含具有读取器缝隙(reader slit)的普通磁条读取器,卡可以滑动通过读取器缝隙以被读取。读卡器14可以被分类为不安全的读卡器设备,其制造起来比安全的读卡器设备更便宜。
[0103] 智能卡17可以包含安全元件18。安全元件18可以被用于主持(host)和存储需要高度安全性的数据和应用。智能卡17由安全元件发行者提供给用户。安全元件发行者可以未必是交易处理的成员或与服务器19相同的实体。智能卡17可以通过自由传输协议连接到读卡器14。典型地,这种自由传输协议可以是ISO-7816 1,3协议。
[0104] 移动电话10通过移动交易应用20与读卡器14交互。移动交易应用是提供在移动电话10内实现的交易能力的应用。例如,在交易期间,移动交易应用20可以通过网络21与服务器19交互,以使得能够使用移动电话进行交易。在实施例中,发行移动交易应用的实体可以是读卡器14的制造者、与服务器19相同的实体或者不是交易处理的成员。服务器19经由移动电话10的移动交易应用20、通过网络21与读卡器14通信。
[0105] 表述“交易”可以被理解为其最广泛的意义。其不能被局限于金融交易,而是也可以覆盖任何因特网交易、通过电信网络等进行的任何交易。术语交易打算广泛地覆盖诸如支付请求、订购请求、股份转让、资金转移、身份证明请求、发布信息的请求这样的各种动作或者这些动作的组合。这样的动作也可以以各种方式开始,例如,支付请求可以发自实体商店的信用卡交易、商务网站上的购买(点击购买)或者诸如文本购买(text-to-buy)或谈话购买(talk-to-buy)系统这样的使用客户的移动电话对商品和服务进行支付的远程支付系统
[0106] 如本文中所使用的那样,“服务器”是计算设备,其可以被配置为以自动的方式通过网络与其他设备交互,以供应内容和网页、对来自其他网络设备的通信发出响应以及响应来自其他网络设备的查询。
[0107] 图2例示在读卡器设备14的专属化阶段30期间的示例性流程图。其中,读卡器设备14、密钥管理系统22与服务器19之间的处理流程使用分配有相应数字的带有标签的箭头来图示。该流程被理解为如由增加的数字所指示的那样地从顶部到底部顺序地执行。然而,应当注意,可以存在并行地而不以指定顺序运行的该协议的多个实例。
[0108] 图2是图示能够根据示例性实施例执行的一组功能30的流程图。这组功能30可以在读卡器14的专属化阶段期间执行。这组功能30在步骤31至36内示出。现在继续这些步骤的描述。
[0109] 在该专属化处理期间,创建读取器主密钥RMK。可以在步骤31由密钥管理系统22生成读取器主密钥RMK。如图2中所例示的密钥管理系统22是在计算机中执行的软件程序。密钥管理系统软件和数据库的逻辑功能可以分布在客户端/服务器网络中的计算机之间或者集中到单个处理器中。功能也可以跨越通过标准的局域网、广域网、专用电话线路或者被用于松散地耦合处理器的其他通信手段来连接的处理器而分布。密钥管理系统22能够由读卡器的制造者服务器、由服务器19或者由任何可信系统来执行。
[0110] 在步骤32,生成读卡器的标识符。在实施例中,标识符能够由密钥管理系统22生成。在另一种实施例中,该标识符能够由读卡器的制造者生成。该标识符可以是读卡器14的序列号SN。优选地,该标识符SN针对每个读卡器是唯一的。
[0111] 在优选的实施例中,密钥管理系统22根据推导算法、主密钥RMK和标识符SN推导出读取器密钥RK。在本文中所使用的推导算法是本领域中技术人员所熟知并且不需要再进行描述。
[0112] 在步骤33,密钥管理系统22将唯一标识符SN和相关联的所推导出的读取器密钥RK加载到读卡器14中。在实施例中,读卡器包含安全元件,标识符SN和读取器密钥被加载到其中。
[0113] 在实施例中,密钥管理系统22将主密钥而不是所推导出的读取器密钥加载到读卡器中。在这种情况下,读卡器根据推导算法、主密钥RMK和相关联的标识符SN来推导读取器密钥RK。所推导出的读取器密钥RK能够存储到读卡器中,供下一次使用。
[0114] 在步骤34,密钥管理系统22与服务器19共享所生成的主密钥RMK以及相关联的唯一标识符SN。当接收到时,服务器19将读卡器14的主密钥RMK以及相关联的唯一标识符SN存储到其其数据库中。
[0115] 如此,密钥管理系统22对读卡器创建静态密钥,进而必须使用静态密钥来创建用于与读卡器14和服务器19通信的会话密钥。
[0116] 本领域普通技术人员将意识到,可以实现在读卡器与服务器19之间的共享密钥和标识符SN的任何适当形式的生成和共享。如何在实体之间生成和共享共享密钥和标识符SN的方法在本发明的范围之外。
[0117] 读卡器设备14包含计数器23。该计数器23可以被称作设备交易计数器DTC。在步骤36,读卡器14通过对计数器23分配值DTC来对其进行初始化。值DTC是整数。在图2中例示的实施例中,经初始化的值DTC是空值。
[0118] 图3例示关于读卡器14的示例性确认交易流程图40。为了确认该交易,可以将读卡器设备14的通信接口15物理地推入到移动电话10的通信接口中,然后,可以将智能卡17插入到读卡器设备14上的卡插槽中或者滑动到磁条读取器中。
[0119] 当开始交易的确认时,在步骤41,移动交易应用20由移动电话10启动。在步骤42,移动交易应用20与读卡器14建立通信会话。当设立读卡器时,在步骤43,将建立安全信道的请求从读卡器14经由移动交易应用发送给服务器19。该建立安全信道的请求可以包含读卡器的计数器20的当前值DTC以及其标识符SN。当前值DTC是被更新到读卡器的数据库中的最后的值DTC。
[0120] 当接收到时,在步骤44,服务器19从其数据库中提取被关联到所接收的标识符SN的主密钥RMK。然后,服务器19根据推导算法、所提取的主密钥RMK以及所接收的标识符SN来推导读取器密钥。
[0121] 在实施例中,密钥管理系统推导读取器密钥。将该所推导出的读取器密钥与其相关联的标识符SN一起发送给服务器以便存储。然后,当在步骤43,服务器接收到标识符SN时,其从其数据库中提取对应的读取器密钥。
[0122] 在另一个实施例中,将所推导出的读取器密钥或主密钥(取决于实施例)存储在安全数据库中。当在步骤43,服务器接收到标识符SN时,其发送请求到该数据库,以获得对应的读取器密钥或主密钥。当接收到时,安全数据库提取与标识符SN相对应的读取器密钥或主密钥。接下来,作为响应,将所提取的读取器密钥或主密钥发送给服务器。
[0123] 在步骤45,服务器19定义被用于计算会话密钥的多样化数据。为此,服务器19递增所接收的计数器23的当前值,并且生成随机值Server-RND或质询(challenge)。所生成的随机值能够对服务器19提供当前的安全信道会话未被预先计算并且合法的读卡器确实在信道的另一端的担保。该随机值的大小不需要非常大,几位就足够了。多样化数据包含经递增的计数器当前值以及所生成的随机值。
[0124] 在实施例中,随机值Server-RND是3字节长。3字节长足以大到对于所生成的会话密钥具有足够的变化性。3字节长很小,以减轻用以检索读取器密钥的对读卡器的差分攻击。
[0125] 在步骤46,服务器19根据所推导出的读取器密钥、多样化数据和推导算法来推导会话加密密钥和会话完整性密钥。
[0126] 在步骤47,服务器19制造(elaborate)包含所生成的随机值和MAC值的验证请求。MAC签名值是在随机值上的至少一部分上进行MAC(消息验证码)运算的结果。MAC运算使用会话完整性密钥和密码校验和算法来产生MAC签名值,MAC签名值随后能够被用于保证数据未被修改
[0127] 在步骤48,服务器19将验证请求通过网络21发送给移动电话10的移动交易应用20。当接收到时,移动交易应用将验证请求转发给读卡器14。
[0128] 在步骤48,当接收到时,读卡器14定义多样化数据。为此,读卡器递增其计数器23的当前值DTC。多样化数据包含计数器23的经递增的值以及所接收的质询或随机值Server-RND。在步骤49,读卡器14根据被存储到其数据库中的所推导出的读取器密钥、所定义的多样化数据以及推导算法来推导会话加密密钥和会话完整性密钥。
[0129] 在步骤50,读卡器根据所接收的随机值和所计算的会话完整性密钥来计算MAC值。将所计算的MAC值与所接收的MAC值相比较,以检查随机值是否被更改。在实施例中,如果MAC值的检验失败,则在步骤51,可以结束处理流程,并且读卡器14可以向移动交易应用和/或服务器19通知MAC值被篡改。另一方面,如果成功地检验MAC值,则服务器19被读卡器14验证为合法的服务器。
[0130] 在步骤52,当服务器19的验证成功时,使用计数器的经递增的值来更新计数器的当前值。将该经更新的当前值存储到读卡器的数据库中。因为计数器的当前值仅在服务器的验证成功时被更新并且对于每个交易是不同的,所以所得到的会话密钥将不同,从而避免重放攻击。
[0131] 在实施例中,当计数器的当前值被更新到数据库中时,读卡器14分析经更新的计数器值是否达到预先定义的最大值DTC_MAX。预先定义的最大值DTC_MAX是被认可的交易的最大数量。该预先定义的最大值能够由读卡器或者读卡器的制造者默认地定义。在实施例中,预先定义的最大值DTC_MAX由用户通过移动电话10的移动交易应用输入。预先定义的最大值DTC_MAX优选为足够大,以覆盖读卡器的完整生命。
[0132] 如果经更新的计数器值等于预先定义的最大值DTC_MAX,则读卡器可以被锁定或待命,直至定义新的预先定义的最大值为止。
[0133] 在步骤53,读卡器14制造包含所存储的计数器23的经更新的值以及MAC值的验证请求。MAC签名值是在计数器23的经更新的值上的至少一部分上进行MAC(消息验证码)运算的结果。MAC运算使用会话完整性密钥和密码校验和算法来产生MAC签名值,MAC签名值随后可以被用于保证数据未被修改。
[0134] 在步骤54,读卡器14将验证请求发送给移动电话10的移动交易应用20。当接收到时,移动交易应用将验证请求通过网络21转发给服务器19。
[0135] 在步骤55,当接收到时,服务器19根据所接收的计数器23的经更新的值以及所计算的会话完整性密钥来计算MAC值。将所计算的MAC值与所接收的MAC值相比较,以检查计数器23的经更新的值是否被更改。在实施例中,如果MAC值的检验失败,则在步骤56,可以结束处理流程,并且服务器19可以向移动交易应用和/或读卡器14通知MAC值被篡改,并且读卡器不是合法的读卡器。另一方面,如果成功地检验MAC值,则读卡器14被服务器19验证为合法的读卡器。
[0136] 在步骤57,当服务器19和读卡器14的验证成功时,在读卡器与服务器19之间建立确认交易的安全会话通信。
[0137] 在图3中所描述的处理流程在读卡器14与服务器19之间建造端到端的安全性。诸如由本发明所定义的会话加密密钥和会话安全性密钥提供安全信道,由此,信息能够通过被认可的读卡器、通过移动电话10经由网络21和被认可的服务器19安全地传送。会话加密密钥和会话完整性密钥被用于保护在读卡器14与服务器19之间交换的消息的机密性和完整性。
[0138] 当在步骤57设立安全信道时,服务器19和读卡器使用移动应用交互作为“通过网关(a pass through gateway)”。可以执行以下步骤来完成确认交易步骤:
[0139] -服务器19使用MAC签名对命令进行加密和签名,该命令通过网络21发送给移动交易应用;
[0140] -移动交易应用获得经加密/签名的命令;
[0141] -移动交易应用将经加密/签名的命令转发给读卡器;
[0142] -读卡器检查签名,对命令进行解密;
[0143] -读卡器将命令发送给智能卡17并且接收响应;
[0144] -读卡器对响应进行加密和签名;
[0145] -读卡器将响应返回给移动交易应用;
[0146] -移动交易应用将经加密/签名的响应发送给服务器。
[0147] 等等……
[0148] 服务器使用安全信道来发送智能卡命令和接收智能卡响应。当完成确认交易处理时,服务器关闭安全信道。
[0149] 在实施例中,读卡器包含禁用计数器。读卡器14通过对禁用计数器分配空值来对其进行初始化。当在图3的步骤50,MAC的检验失败时,读卡器14以一个单位递增禁用计数器值。然后,读卡器分析禁用计数器值是否已经达到预先定义的最大错误,例如“3”。
[0150] 如果禁用计数器值小于预先定义的最大错误,则能够再次重复确认交易流程图40。如果禁用计数器值等于预先定义的最大错误,则读卡器能够通过拒绝执行下一个被请求的处理来禁止进一步进行,同时可能通过移动电话10和/或服务器19向用户发送消息,以便向他们通知其停用。
[0151] 为了重新启用读卡器14,用户必须输入解锁码。该码可以在单独的介质中提供给用户,并且如有必要,用户可以向服务提供者请求该码。
[0152] 在另一个实施例中,读卡器包含错误计数器。读卡器14通过对错误计数器分配空值来对其进行初始化。当在图3的步骤57建立的安全信道上接收到无效的进入消息时,读卡器14以一个单位递增错误计数器值。进入的消息可以是从服务器19所接收的MAC值或者经加密的命令。
[0153] 接下来,读卡器分析错误计数器值是否已经达到预先定义的最大错误,例如“3”。如果错误计数器值等于预先定义的最大错误,则读卡器可以关闭会话,并且将ERR_SESSION_CLOSED通过移动电话10和/或服务器19返回给用户。
[0154] 这些实施例保护读卡器,并且提供在错误管理上的灵活性。
[0155] 在另一个实施例中,读卡器14和服务器19包含序号计数器SCNTR。该序号计数器SNCTR针对每个会话交易由服务器和读卡器顺序地递增。在图3的步骤47,在验证请求的制造期间,服务器19初始化或者顺序地递增其序号计数器SCNTR。并且当在步骤50服务器由读卡器14验证时,读卡器初始化或者顺序地递增其序号计数器SCNTR。
[0156] 该序号值SCNTR被添加到在图3的步骤53由读卡器14发送给服务器19的验证请求。在步骤55,在MAC的检验期间,服务器19检查所接收的序号SCNTR是否是预期的序号,亦即,所接收的SCNTR是否等于其SCNTR计数器的值。如果不是,则消息验证码的检验将失败。由本发明所定义的序号值允许保护读卡器免受重放攻击。实际上,因为MAC的检验在服务器侧失败,所以先前的命令无法被重放。在实施例中,序号值是2字节长。
[0157] 在实施例中,会话加密密钥和会话完整性密钥包含针对每个交易会话唯一的四个对称密钥。这四个对称会话密钥可以是:
[0158] -传送加密密钥TENC,由服务器使用以对命令进行加密,传送加密密钥TENC由读卡器使用以对命令进行解密;
[0159] -传送完整性密钥TMAC,由服务器使用以根据命令来计算MAC值。传送完整性密钥TMAC由读卡器使用以检查所接收的MAC值;
[0160] -接收加密密钥RENC,由读卡器使用以对命令的响应进行加密,接收加密密钥RENC由服务器使用以对所接收的响应进行解密;
[0161] -接收完整性密钥RMAC,由读卡器使用以根据命令响应来计算MAC值,接收完整性密钥RMAC由服务器使用以检查所接收的MAC值。
[0162] 下面例示被用于实现本发明的计算函数的示例。对于这些计算函数,提供以下密码数据和安全性特征:
[0163] -标识符SN:8字节二进制经编码的十进制数;
[0164] -主密钥RMK:使用“密钥仪式(key ceremony)”在HSM中生成的16字节;
[0165] -计数器DTC:4字节,MSB在前;
[0166] -预先定义的最大值DTC_MAX:50000;
[0167] -序号值SCNTR:2字节,MSB在前;
[0168] -读取器密钥:用于TMAC、RMAC、TENC、RENC的16字节3DES密钥。
[0169] 计算读取器密钥:
[0170] Function Compute readerkey{masterkey,identifier SN}
[0171] {(8字节)RKA:=3DES_MAC(masterkey,0x000000|
[0172] 0x0100000000|标识符SN);
[0173] {(8字节)RKB:=3DES_MAC(masterkey,0x000000|
[0174] 0x0200000000|标识符SN);
[0175] 返回RKA|RKB;}
[0176] 计算会话密钥:
[0177] ●Function Compute TENC(readerkey,随机值,DTC)
[0178] {(32字节)r=HMAC_SHA2(readerkey,
[0179] 0x00000001(4字节)|
[0180] 随机值(3字节)|DTC(4字节))
[0181] 返回右边16字节}
[0182] ●Function Compute TMAC(readerkey,随机值,DTC)
[0183] {(32字节)r=HMAC_SHA2(readerkey,
[0184] 0x00000001(4字节)|
[0185] 随机值(3字节)|DTC(4字节))
[0186] 返回左边16字节}
[0187] ●Function Compute RENC(readerkey,随机值,DTC)
[0188] {(32字节)r=HMAC_SHA2(readerkey,
[0189] 0x00000002(4字节)|
[0190] 随机值(3字节)|DTC(4字节))
[0191] 返回右边16字节}
[0192] ●Function Compute RMAC(readerkey,随机值,DTC)
[0193] {(32字节)r=HMAC_SHA2(readerkey,
[0194] 0x00000002(4字节)|
[0195] 随机值(3字节)|DTC(4字节))
[0196] 返回左边16字节}
[0197] 会话密钥TENC、TMAC、RENC和RMAC通过使用另外的数据(例如由外部熵源生成的随机值或者常量值)以及通过使用HMAC-SHA2算法来计算。完整性密钥和加密密钥的计算函数的结果可以不同并且可以表现出会话密钥的足够的变化性和不可预测性以及强迫先前的会话密钥的重新计算和重放的不可能性。取决于实施例,表现出会话密钥的这样的变化性和不可预测性以及强迫先前的会话密钥的重新计算和重放的不可能性。
[0198] 对数据进行加密:
[0199] 加密函数能够处理填充。
[0200] Function EncryptData(iv(8字节),数据,encryption-key)
[0201] {=数据|<0…>|pad-length(1字节)
[0202] 块大小可以是8字节长。
[0203] 返回3DES_CBC_ENC(iv,块,密钥)}
[0204] 对数据进行解密:
[0205] 如果经解密的数据例如由于填充不一致而错误,则解密函数可以返回空。
[0206] Function DecryptData(iv,数据,encryption-key)
[0207] {块=3DES_CBC_DEC(iv,数据,encryption-key)
[0208] 检查填充:最后字节值为1至8,被填充的数据是“00”
[0209] 如果没问题,则移除填充。
[0210] 返回经解密的块。
[0211] 否则,返回空}
[0212] 计算MAC:
[0213] MAC值可以是8字节长
[0214] Function Compute MAC(数据,mac-key)
[0215] {块=HMAC-SHA256(数据,mac-key)
[0216] 返回左边8字节}
[0217] 在实施例中,会话密钥由读卡器的读卡器主机控制器检索。函数EncryptData()、DecryptData()、ComputeMac()在读卡器固件中而不是在安全元件中实现。
[0218] 在另一个实施例中,会话密钥存储在读卡器的安全元件中,并且函数EncryptData()、DecryptData()、ComputeMac()实现在安全元件中。
[0219] 下面例示本发明的实现方式的示例。关于该实现方式,使用上面描述的计算函数。
[0220] 可用的命令/响应的种类
[0221] 语法‘|’意思是数据串联
[0222] COMMAND:CMD-CODE|
[0223] CMD-DATA(如果有,则数据取决于CMD)
[0224] CMD-CODE:={GET标识符SN,//对交易应用可用
[0225] GETSTATUS,//对交易应用可用
[0226] SESSIONETUP,//对服务器可用
[0227] SENDAPDU,//对服务器可用
[0228] READMAGSTRIPE//对服务器可用}
[0229] RESPONSE:RESP-CODE(1字节)|
[0230] RESP-DATA(如果有,则格式取决于RESP-CODE)
[0231] RESP-CODE:={ACK,ERR};
[0232] ERR-DETAIL:={ERR_INVALID_MAC,//所接收的消息验证码无效
[0233] ERR_BLOCKED,//阻止读取器
[0234] ERR_DEC,//经解密的数据无效(填充错误)。
[0235] ERR_SESSION_CLOSED}
[0236] 如果RESP-CODE==ERR,则RESP-DATA:=ERR-DETAIL
[0237] 确认交易流程图:
[0238] 1:交易应用将命令GET标识符SN发送给读卡器
[0239] GET标识符SN|(空)
[0240] 2:读卡器返回
[0241] ACK|SN
[0242] 3:交易应用发送命令GETSTATUS
[0243] GETSTATUS|(空)
[0244] 4:读卡器返回
[0245] ACK|<包括设备交易数DTC的状态数据>
[0246] 5:交易应用将SN和DTC发送给服务器。
[0247] 6:服务器使用SESSIONETUP命令来响应。
[0248] SESSIONETUP需要服务器生成验证消息。该MAC将由读卡器使用以检验服务器是真实的。
[0249] 服务器生成服务器质询(server-challenge)或随机值。
[0250] 服务器计算会话密钥。
[0251] READERKEY:=Compute ReaderKey(MASTERKEY,SN)
[0252] TMAC=Compute TMAC(READERKEY,服务器质询,DTC+1)
[0253] RMAC=Compute RMAC(READERKEY,服务器质询,DTC+1)
[0254] TENC=Compute TENC(READERKEY,服务器质询,DTC+1)
[0255] RENC=Compute RENC(READERKEY,服务器质询,DTC+1)
[0256] 服务器使用初始的矢量计算消息的MAC
[0257] iv:={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
[0258] MAC值:=Compute MAC(iv|服务器质询,TMAC)
[0259] 服务器将序号值设置为{0x00,0x01}
[0260] 服务器将Command=SESSIONETUP|服务器质询|MAC值发送给交易应用。
[0261] 7:交易应用将命令传递给读卡器。
[0262] 8:读卡器处理SESSIONETUP命令。
[0263] 读卡器计算新的会话密钥。
[0264] TMAC:=Compute TMAC(READERKEY,服务器质询,DTC+1)
[0265] TENC:=Compute TENC(READERKEY,服务器质询,DTC+1)
[0266] RMAC:=Compute RMAC(READERKEY,服务器质询,DTC+1)
[0267] RENC:=Compute RENC(READERKEY,服务器质询,DTC+1)
[0268] 读卡器使用初始矢量来计算消息的MAC值
[0269] iv:={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
[0270] MAC值:=Compute MAC(iv|服务器质询,TMAC)
[0271] 读卡器检查所接收的MAC值等于所计算的MAC值。
[0272] 失败时,其返回ERR_INVALID_MAC。
[0273] 否则,读取器检查DTC小于DTC_MAX
[0274] 如果DTC==DTC_MAX
[0275] 则读卡器返回ERR_BLOCKED
[0276] 否则,服务器被验证。
[0277] 读卡器初始化内部计数器
[0278] 序号值={0x00,0x01}
[0279] ERRORCOUNTER:=0
[0280] 读卡器递增DTC。
[0281] DTC:=DTC+1。
[0282] 读卡器生成用于服务器的消息验证码
[0283] Iv={0x00,0x00,0x00,0x00,0x00,0x00}|SNCTR;
[0284] MAC值:=Compute MAC(iv|DTC,RMAC);
[0285] 并且返回ACK|DTC|MAC值。
[0286] 9:交易应用将SESSIONETUP响应传递给服务器。
[0287] 10:服务器检查SESSIONETUP响应。
[0288] 响应=ACK|DTC|MAC值
[0289] 服务器检查所接收的消息验证码
[0290] iv:={0x00,0x00,0x00,0x00,0x00,0x00}|SCNTR={0x00,0x00}
[0291] MAC值=Compute MAC(iv|DTC,RMAC)
[0292] 服务器检查所接收的MAC值是否等于所计算的MAC值。
[0293] 失败时,服务器返回:COMPLETED_ERROR。
[0294] 否则,读卡器被验证。此时,SESSIONETUP完成。已经成功地执行了读卡器/服务器相互验证。服务器能够发送命令SENDAPDU或者READMAGSTRIPE。
[0295] 11:在响应有效的SESSIONETUP或者SENDAPDU时,服务器发送智能卡命令(apdu)。根据安全信道方面的magstripe命令的处理是相同的。
[0296] 服务器对apdu进行加密。
[0297] apdu:={….}
[0298] 初始的矢量iv是:
[0299] iv:={0x00,0x00,0x00,0x00,0x00,0x00}|SCNTR
[0300] encrypted-data:=EncryptData(iv,apdu,TENC);
[0301] 服务器计算消息验证码。
[0302] MAC值:=Compute MAC(iv|encrypted-apdu,TMAC)
[0303] 最后,消息是
[0304] SENDAPDU|序号值|encrypted-data|MAC值。
[0305] 12:交易应用将服务器命令传递给读卡器
[0306] 13:读卡器处理SENDAPDU命令
[0307] Command=SENDAPDU|SCNTR|encrypted-data|MAC值
[0308] 读卡器检查所接收的消息验证码
[0309] Iv:{0x00,0x00,0x00,0x00,0x00,0x00}|SCNTR
[0310] MAC值:=Compute MAC(iv|encrypted-apdu,TMAC);
[0311] 读卡器针对所接收的MAC值检查MAC值。
[0312] 失败时,读取器递增ERRORCOUNTER。
[0313] 如果(ERRORCOUNTER==3),则其关闭会话,并且
[0314] 返回ERR|ERR_SESSIONCLOSED
[0315] 否则,其返回ERR|ERR_INVALID_MAC
[0316] 如果MAC值检验成功,则读卡器对经加密的apdu进行解密
[0317] apdu:=DecryptData(iv,encrypted-apdu,TENC)
[0318] 失败时,读卡器递增ERRORCOUNTER
[0319] 如果ERRORCOUNTER==3,则其关闭会话并且返回
[0320] ERR|ERR_SESSIONCLOSED
[0321] 否则,其返回ERR|ERR_DEC;
[0322] 如果解密成功,则读卡器清除错误计数器。
[0323] ERRORCOUNTER:=0。
[0324] 读卡器将apdu发送给智能卡并且接收响应。
[0325] 读卡器对响应进行加密
[0326] rapdu:={….}
[0327] iv:={0x00,0x00,0x00,0x00,0x00,0x00}|SCNTR
[0328] Encrypted-rapdu:=EncryptData(iv,rapdu,RENC);
[0329] 读卡器生成消息验证码
[0330] MAC值:=Compute MAC(iv|encrypted-rapdu,RMAC)
[0331] 最后,读卡器生成响应
[0332] ACK|encrypted-rapdu|mac。
[0333] 读卡器递增序号SCNTR计数器用于下一个进入的命令。
[0334] SCNTR:=SCNTR+1。
[0335] 14:交易应用将响应发送给服务器
[0336] 15:服务器处理响应。
[0337] response=ACK|encrypted-rapdu|MAC值。
[0338] 服务器检查所接收的消息验证码
[0339] iv:={0x00,0x00,0x00,0x00,0x00,0x00}|SCNTR
[0340] MAC值=Compute MAC(iv|encrypted-rapdu,rxMacKey)
[0341] 如果(所计算的MAC值==所接收的MAC值),则服务器对响应进行解密[0342] rapdu=DecryptData(iv,encrypted-rapdu,RENC)
[0343] 如果(rapdu为空),则
[0344] 服务器返回COMPLETED_ERROR。
[0345] 服务器生成新的命令(见步骤11至15);
[0346] 或者通过发送COMPLETED_OK来完成会话。
[0347] 16:交易应用向用户呈现完成状态。
[0348] 使用本发明,智能卡数据不会以明文传送到移动交易应用,并且它们在传递期间不会以明文从移动设备流通到远程服务器。
[0349] 本发明实现起来简单且容易。执行支付应用与网关之间的相互验证,以保证用户证书的机密性和消息的完整性/起源。
[0350] 由本发明所定义的协议通过以下允许保护读卡器免受差分攻击:
[0351] -在会话设立和所有命令中批准消息验证码;
[0352] -限制被用于在会话设立中计算消息验证码的质询的大小。
[0353] 而且,由本发明所定义的协议通过1)使用MAC特征以及2)通过检验所得到的填充来检验经解密的数据的一致性而自身可靠的。
QQ群二维码
意见反馈