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

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

一、挂件卡概述

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

二、非接PBOC应用

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

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

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

卡片的启用日期和失效日期分别为:110906和160928。

现在读出的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

可以看出卡片是在9月29日13点多开户的,做了两笔柜面联机交易且充值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给出了AFL:18 01 04 01 20 01 02 00,同时还包含有以下的数据标签:交易计数器9F36,应用密文9F26,发卡行应用数据9F10,第二磁道等价数据57,PAN序列号5F34,签名的动态应用数据9F4B,卡片交易属性9F6C和可用脱机消费余额9F5D。

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

另外通过读取9F77和9F78两个数据可知,该卡单笔交易金额最多为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

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

四、其他

(一)   兼容性问题及建议

挂件卡本身尺寸较小,用两款通用读卡器(HID Omnikey5321和SCM 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卡片发行数量的增加,类似的争议交易会逐渐涌现。目前只能依靠卡片、终端、后台多方协作来仲裁争议交易,没有严格的规范约定。

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

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

    原文这里:http://blog.sina.com.cn/s/blog_4df8400a0100xoof.html qPBOC的规范让人看的有些头晕,做开发的人也不知道究竟这个规范该怎么运用到实际需求 ...

  2. 以移动浦发联名挂件卡解析qPBOC应用

    以移动浦发联名挂件卡解析qPBOC应用 qPBOC的规范让人看的有些头晕,做开发的人也不知道究竟这个规范该怎么运用到实际需求中.好在目前有很多qPBOC的项目已经在实施了,可以让我们从中分析一些实际的 ...

  3. 银行卡号识别Bank Card Rec 主要功能接口说明

    Bank Card Rec 主要功能接口说明: 说明:如果需要其他接口都可以封装出来 主接口 /*调用识别之前先初始化一次*/ int init_all (); /* 调用识别,读取图像版本函数: p ...

  4. k20pro刷鸿蒙,红米K20系列支持NFC功能吗 RedmiK20Pro手机能刷公交卡吗

    对于小米官方最新推出的红米K20系列手机,很多的米粉们都想要入手,不过很多的网友还比较关心红米K20系列手机是否支持NFC功能?毕竟现在NFC应用越来越广泛,那么RedmiK20Pro手机能刷公交卡吗 ...

  5. pcie16x能插1x的卡嘛?_任天堂switch联名TF卡上架国行店,售价过高被吐槽,用途同样迷惑...

    大家好,我是软件帝千影.万万没想到,这个春节假放到现在还没结束,虽然作为一名合格的社畜,已经在家办公两个星期了,但是家里诱惑实在太多,比如很多网友都表示,很容易在工作途中"一不小心" ...

  6. 华为nova7se能云闪付吗_华为Nova支持NFC功能吗 华为Nova能刷公交卡吗【详解】

    有网友就在问,华为Nova支持NFC功能吗?如今大多数主流机型都配备了NFC功能,有了它,不仅可以体验一些移动支付功能,还可以通过手机充值公交卡,甚至支持NFC的手机还可以直接作为公交卡刷卡使用.下面 ...

  7. android nfc读取公交卡信息_苹果将开放NFC功能,未来iPhone可录公交卡 房卡 门禁卡了...

    责任编辑:XC丨插图来自于网络  苹果NFC入口将开放  在今年十月份开始,欧盟就对苹果手机的 NFC 功能进行了 反垄断市场 调查.认为iPhone具有NFC功能,但是苹果的NFC功能仅限自己的 A ...

  8. nfc pm3 模拟加密门禁卡_华为手机NFC的妙用,模拟门禁卡、公交卡、银行卡,电子证件等...

    你关注的才是晋圈 出门带门禁卡.银行卡.身份证--这些东西真的是很麻烦,有没有一种方法可以把它们都装下?有!只要一部手机,出门不带包,各种证件,各种卡通通装进手机. 首先要你的手机支持NFC功能,我们 ...

  9. 小米NFC手机 手环 复制加密IC门禁卡

    思路: 第一步通过破解加密的门禁卡得到dump文件,获取卡号.修改dump文件只保留0扇区0块的内容也就是卡号,通过读卡器写入一张卡空白卡.这时就得到了一张未加密的白卡了.手机NFC可以模拟这张未加密 ...

最新文章

  1. Tomcat init 脚本并添加服务自启动
  2. AlphaZero登上《科学》封面:一个算法“通杀”三大棋,完整论文首次发布
  3. 第九周项目实践2 二叉树遍历的递归算法
  4. 关于ABAP流程处理的一些命令的说明(stop,exit,return,check,reject)
  5. 在页面中隐藏数据库某信息并显示该信息对应的字典编码名称(后台ssh框架,前台extjs)
  6. 平板电脑触摸屏驱动_解答!工业平板电脑的触摸屏如何升级?
  7. image vb6 图片自适应_Python人工智能使用OpenCV进行图片形状的中心检测
  8. 查询Windows api
  9. CRM WebClient UI和Hybris里工作中心跳转的url生成逻辑
  10. Spring Boot 多数据源(读写分离)入门
  11. Python 数据分析三剑客之 Pandas(九):时间序列
  12. springmvc中@RequestMapping的使用
  13. np.unique( )--去除数组中的重复数字,并进行排序之后输出
  14. 拿下宝马中国量产订单的四维图新,如何在自动驾驶地图领域内外兼修?
  15. java oa系统消息推送_第三方系统向泛微OA系统推送消息
  16. es中单机部署状态为Yellow解决办法
  17. Android作业分组与选题
  18. 2016年东莞市程序设计竞赛镇区选拔赛上机试题小学组:seat(找座位)
  19. C语言红楼梦人物分析系统
  20. java 中常用框架、intell idea简单使用、爬虫系统

热门文章

  1. 2012移动开发者大会北京站。前100名免票哈!!
  2. 前端智能化D2C效率提升50%,带你一睹为快
  3. 74160ENT引脚设计法+同步置数法接成60进制加法计数电路
  4. 基于mfc 组态软件_原来WinCC组态这么厉害!小瞧了
  5. 天津高一学业水平测试计算机,2019年1月天津高中学业水平考试标准
  6. 价目表制作报价单制作软件
  7. 存款准备金率的意义,如何获取
  8. 除了ChatGPT,跨境电商必备的五款AI工具
  9. 基于物联网的NodeJs-5天学习入门指引
  10. java评测软件,Cena代码评测软件系列之二:评测Java代码