NFC Bank card: 以移动浦发联名挂件卡解析qPBOC应用

原文这里:http://blog.sina.com.cn/s/blog_4df8400a0100xoof.html


qPBOC的规范让人看的有些头晕,做开发的人也不知道究竟这个规范该怎么运用到实际需求中。好在目前有很多qPBOC的项目已经在实施了,可以让我们从中分析一些实际的案例,在此仅以中国移动与上海浦东发展银行联名发行的挂件卡来做一次实际数据的案例分析。

 

一、挂件卡概述

挂件卡大约比普通信用卡尺寸的四分之一略大,内置天线,厚度约2毫米左右。其中包含了非接PBOC借贷记应用和qPBOC应用,不支持磁条数据MSD交易。支持PSEPPSE的选择,通过选择PSE可以得到的目录文件SFI入口,利用读记录可以获得非接PBOC借贷记的AID,而选择PPSE后直接给出了优先选则应用的AID,二者是一致的均为:A0 00 00 03 33 01 01 02。无论通过PSE还是PPSE选择该应用,其返回的FCI均包含Tag9F66的终端交易属性数据请求。根据GPO中给出的9F66数据,卡片会决定走qPBOC还是标准PBOC借贷记流程。

 

二、非接PBOC应用

GPO命令中送入的终端交易属性如果是60 00 00 00(表示支持qPBOC与非接触PBOC借贷记),则卡片直接返回的是标准借贷记的GPO响应。其中AIP = 7C 00(卡片支持SDADDA,持卡人验证,终端风险管理和发卡行认证;不支持CDA以及MSD。另外有AFL08 01 02 00  10 01 04 01 。。。。),可以读出卡片的公钥证书、公钥指数、公钥余数、DDOL等和交易相关的数据。

从卡中可以读出9F149F23这两个来自卡片的终端风险管理参数均配置为0,也就是连续脱机交易上限和下限都是0,说明对于有联机能力的终端,不允许进行脱机交易。

同样9F589F599F549F5C也都为0,说明发卡行已经把卡片配置成不可用作脱机交易了。

卡片的启用日期和失效日期分别为:110906160928

现在读出的9F13数据显示上次联机交易计数器ATC数据为0020

接下来我们可以读一下交易记录数据,共计四条记录:

 

记录1

FF FF FF FF FF FF 00 00 00 02 36 00 FF FF FF FF FF FF FF FF 01 56 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 08

 

记录2

FF FF FF FF FF FF 00 00 00 00 05 00 FF FF FF FF FF FF FF FF 01 56 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 04

 

记录3

11 09 29 13 47 26 00 00 00 10 00 00 00 00 00 00 00 00 01 56 01 56 B9 F1 C3 E6 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 00 03

 

记录4

11 09 29 13 26 58 00 00 00 00 00 00 00 00 00 00 00 00 01 56 01 56 B9 F1 C3 E6 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 99 00 02

 

可以看出卡片是在92913点多开户的,做了两笔柜面联机交易且充值1000元,另外还有两笔分别为5元和236元的脱机消费交易。这里有一点小问题,就是从上次联机交易计数器标签9F13中读出的数据是0020,和记录3中指出的0003不相符。这是因为在测试的时候尝试发送了导致必须联机的GPO所致。

再看看持卡人认证方式CVM列表标签8E的数据结构,8E 0E 00 00 00 00 00 00 00 00 42 03 5E 03 1F 00,第一个入口4203是联机加密PIN验证,且如果此验证失败应用下一个CVM验证,应用条件是如果终端支持;第二个入口5E03是纸上签名,且如果此验证失败应用下一个CVM验证,应用条件是如果终端支持;第三个入口是无需CVM,应用条件为“总是”。

总之,该卡的非接触标准PBOC借贷记应用只允许联机交易,不支持脱机。

 

三、qPBOC应用

如果送入的终端交易属性为20000000,则直接返回脱机qPBOC交易的GPO应答数据。

先看一下脱机交易GPO应答数据:

77 81 D4 82 02 7C 00 94 08 18 01 04 01 20 01 02 00 9F 36 02 00 29 9F 26 08 18 92 2B F2 0A 14 FC F3 9F 10 08 07 02 17 03 90 00 00 01 57 13 62 59 71 00 01 52 11 28 D1 60 92 06 00 00 05 10 00 00 1F 5F 34 01 00 9F 4B 81 80 A1 15 8D 4E 41 71 29 15 81 3F B6 20 BB B9 2B AB 10 20 6F  1B ED 11 29 12 FC F9 AC A7 90 6B 30 C0 6E C1 E9 44 2E 61 04 F9 A5 90 EF 7C F0 59 B1 F5 C9 FB 35 96 F5 E9 E4 A9 68 00 F3 8E 74 B6 E6 5D 63 4A 64 FB C1 44 FB B8 9A 37 D4 27 62 BE 94 22 15 32 7C 56 41 65 78 A3 43 C2 A9 CA D1 3D 7B B5 4F 0B 08 13 16 84 34 80 0A A0 2B 65 79 47 20 DA 2A C7 D0 14 5D 3F 37 EF 15 5A AA 8C CE 4F 99 AF 9F 6C 02 20 00 9F 5D 06 00 00 00 07 58 99

82标签指出的AIP和标准借贷记的一致都是7C00,标签94给出了AFL18 01 04 01 20 01 02 00,同时还包含有以下的数据标签:交易计数器9F36,应用密文9F26,发卡行应用数据9F10,第二磁道等价数据57PAN序列号5F34,签名的动态应用数据9F4B,卡片交易属性9F6C和可用脱机消费余额9F5D

读出卡片附加处理数据标签9F68的值为:91003000,说明:该卡片仅支持小额检查,不支持脱机可用余额的检查,也就是说该卡走的是qPBOC的小额交易流程。

另外通过读取9F779F78两个数据可知,该卡单笔交易金额最多为1000元,充值的上限也是1000元。目前该卡的余额是759元(GPO应答中给出的可用余额是758.99元,那是因为在发送GPO命令的时候送入的授权金额是1分钱),加上之前消费的5元和236元正好等于充值的1000元,而且电子现金重置阈值9F6D的数据是0

如果在GPO命令中送入的终端交易属性为:20800000,则卡片返回联机GPO应答:

77 58 82 02 7C 00 9F 36 02 00 35 57 13 62 59 71 00 01 52 11 28 D1 60 92 06 00 00 05 10 00 00 1F 9F 10 13 07 02 17 03 A0 00 00 01 0A 01 00 00 07 59 00 55 97 C3 52 9F 26 08 68 D5 7B 51 35 53 B6 78 5F 34 01 00 9F 6C 02 20 00 9F 5D 06 00 00 00 07 58 99 5F 20 04 XX XX XX XX

       和脱机qPBOCGPO响应数据相比,此处缺少了949F4B等信息,多了一项5F20(两个汉字的持卡人姓名)。

 

四、其他

(一)   兼容性问题及建议

挂件卡本身尺寸较小,用两款通用读卡器(HID Omnikey5321SCM SDI010)测试小卡的读写距离低于普通卡,并且只有当小卡全部进入读卡器的感应范围后才会正常读写。相比普通大卡而言,只要部分进入到读卡器的感应范围就能够正常读写。所以如果终端设备的感应范围较小的话,会出现寻找小卡困难的问题,对大卡则问题不明显。

建议CUP对于小卡同样制定相应的规范标准,并且加强小卡与机具的兼容性测试,以便于确保将来卡片和终端之间不会出现操作困难(据悉该卡在实际应用中已经出现类似问题,必须要对准某型号终端的某个固定位置才能勉强实现交易)。

(二)   交易流程中的安全风险及提示

安全的问题不仅包括数据保密和防止伪造篡改等方面,还有很重要的一点就是可用性。

       在可用性方面qPBOC存在一定的风险。比如只要给卡片发送格式相符的GPO数据,卡片的交易计数器ATC就会自动加1,而当ATC达到65535之后,卡片则永久锁定应用。所以如果卡片被恶意连续发送GPO命令后,则会被永久锁定应用,造成卡片不可用;另外,卡片在处理qPBOC的脱机交易流程时,当终端读出AFL指定的全部数据后即认为交易完成,所以即便是非授权的终端也可以从卡片上扣钱,当然所扣的钱不能提交给发卡行进行清算。虽然发卡行可以通过后台的策略规避该类风险,避免持卡人的损失,但是这同样会造成卡片一定时期的不可用(比如通过读卡器发送命令直接扣掉该卡的余额759元钱)。

为此特意通过普通读卡器发送命令用该卡做了1分钱的脱机消费交易,读取新增的交易记录可以看出脱机消费成功:FF FF FF FF FF FF 00 00 00 00 00 01 FF FF FF FF FF FF FF FF 01 56 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 37。同时新的余额也变成了758.99元,交易计数器变为0037

其实如果保护好自己的卡片,这些问题是可以避免的。

现实的问题是卡片在合法的终端上进行交易后,因为终端的原因造成终端认证失败从而误判上笔交易不成功,但是这时卡上的钱已经被扣掉了,由此就会引起争议。

所以在目前的规范下要仔细了解发卡行在出现争议交易时的处理条款,可惜的是目前很多发卡行对于该风险了解不多,随着qPBOC卡片发行数量的增加,类似的争议交易会逐渐涌现。目前只能依靠卡片、终端、后台多方协作来仲裁争议交易,没有严格的规范约定。


你可能感兴趣的:(数据结构,c,加密,测试,中国移动,终端)