转载请注明出处
http://blog.csdn.net/pony_maggie/article/details/38854811
作者:小马
之前关于paywave认证写过一篇<<韩国PAYWAVE认证之韩城攻略>>,是非技术类的文章,主要介绍了饮食,实验室附近住宿等情况。后来有读者留言希望能写一篇技术攻略,本人太懒,一直拖到现在才出来。
还是希望看这篇文章的人能有一定的EMV/PBOC的应用基础,因为我会讲到很多二者之间的差异性。因为之前在韩国是做的终端方面的认证,不涉及卡片,所以下面讲到的技术细节都是从终端的角度。
一 什么是paywave
免不了入俗套,还是先讲概念。Paywave是visa推出的一种通过非接通道进行快速支付的解决方案,用来规范智能卡和终端的交易行为,安全等方方面面。
paywave这是visa一家推的,并没有跟其它机构或公司合作,所以算是visa的亲生仔,自然在推广起来是不遗余力的。有人可能疑惑不是有emv(由包括visa在内的三家厂商共同的推的)了吗,为什么visa还要单独再弄个paywave呢?
原因是emv是针对标准借贷记的,本身并没有关于非接触快速支付的规范,所以这一部分其实是空缺的,自然这些大厂商都会抢这个蛋糕(mastercard还有个paypass)。
当然Paywave跟emv本身也不是独立无关的,它的应用测试也是要求非接EMV level1的证书,硬件电气协议的要求是一样的。Paywave在应用业务层的测试叫功能测试(functional testing )
最后还有一个所谓的交叉测试(cross testing), 这个测试大概是模拟一些真实使用场景的测试, 前面两个如果都过了,这个一般问题不大。
二 技术点
功能测试包括MSD和qVSDC,厂商可以选择是否两个同时支持或是只支持qVSDC(只支持MSD就没意思了吧), 在我看来MSD慢慢会被摒弃掉。要了解qVSDC,支付应用部分只要看一本规范就行了, << Visa Contactless Payment Specification>>.
是的,只有一本规范。 不像emv规范有四本,PBOC就更不必说了,十几本(额滴神,居然还有人以能记住第几本讲什么内容而沾沾自喜)。另外,如果你仔细对比一下,会发现PBOC中的qPBOC规范似乎也”参考”了不少qVSDC的内容。
我准备分成几个类别来阐述技术点:
1 关于指令以及流程的精简
qVSDC所用的apdu指令是EMV的子集, 这个可以理解,毕竟它的步骤比较少。就连应用选择中的建立候选列表也只保留PPSE这一种方式,AID选择法不支持。对于卡片,像卡片行为分析,生成应用密文,生成签名等步骤都放在收到GPO指令后一起处理从而简化流程。
2 预处理
要讲预处理,得先讲一个概念,TTQ(终端交易属性,4字节),它的编码如下:
Byte 1 bit 8: 1 = MSD supported bit 7: RFU (0) bit 6: 1 = qVSDC supported bit 5: 1 = EMV contact chip supported bit 4: 1 = Offline-only reader bit 3: 1 = Online PIN supported bit 2: 1 = Signature supported bit 1: 1 = Offline Data Authentication (ODA) for Online Authorizations supported. Note: Readers compliant to this specification set TTQ byte 1 bit 1 to 0b. Byte 2 bit 8: 1 = Online cryptogram required bit 7: 1 = CVM required bit 6: 1 = (Contact Chip) Offline PIN supported bits 5-1: RFU (00000) Byte 3 bit 8: 1 = Issuer Update Processing supported bit 7: 1 = Mobile functionality supported (Consumer Device CVM) bits 6-1: RFU (000000) Byte 4 RFU ('00') |
大部分比特位都是指示终端的能力,是配置好的静态数据,只有byte2的bit8和bit7是可变的, 预处理阶段终端可以获取到交易金额,然后就执行一系列的检查, 主要有以下几种:
2.1单位货币状态检查
如果交易金额是1个单位货币(比如人民币就是1元),就要把byte2的bit8置为1。
2.2 零金额检查
这种情况有点复杂,联机终端和仅脱机终端的处理不一样,比如有联机能力的终端,要支持两个配置,配置1的情况下,零金额要把byte2的bit8置为1。配置2的情况,要置位应用不被允许标志,在后面的流程中会用来判断交易是否继续进行。
2.3 非接交易限额检查(RCTL)
这个限额如果超了,要置位应用不被允许标志,不过visa一般建议这个开关关闭,也就是不检查。
2.4 CVM限额检查
这个如果超了,会把byte2的bit7置为1, 告诉卡片终端请求CVM做进一步的安全检查。
2.5 非接最低限额检查
这个如果超了,要把byte2的bit8置为1。
上述检查做完之后,最终的TTQ会在GPO命令中由终端送给卡片,然后卡片会进行行为分析决定交易接下来如何进行。另外,所有的检查都可以设置对应的开关来选择是否支持, 开关的实现方法没有特别要求,能起到开关作用就行。
未完待续....