韩国PAYWAVE认证之技术篇

转载请注明出处

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命令中由终端送给卡片,然后卡片会进行行为分析决定交易接下来如何进行。另外,所有的检查都可以设置对应的开关来选择是否支持, 开关的实现方法没有特别要求,能起到开关作用就行。


未完待续....

你可能感兴趣的:(支付,终端,韩国,payment,paywave)