对于普通的用户来说,电子钱包和电子现金下面分别简称EP和EC)是几乎没有区别的, 为什么这么说呢. 因为EP和EC都是为了做小额支付而生的. 我们拿着一张IC卡去超市的POS机上消费,或是坐公交消费,只需轻轻一刷,你不必关心这张卡是基于EP的应用还是基于EC的应用.(因此只要求我们对电子现金略做了解即可)
但是, 如果你是金融电子这个行业里的人,尤其是对于开发人员, 不知道EP和EC的区别真的要补习一下功课了.
EP:electronic Purse,电子钱包
EC:electronic Cash,电子现金
首先,我们从应用的角度来看两者的区别.
EP本身是独立于借贷记的一种应用,无论是应用层的通信协议,还是相关的交易流程,与借贷记应用都有很大的差别. 它的出现是为了满足小额支付的需要, 可以说是PBOC专门为小额支付的推广制定的一个应用.
电子现金的概念出现在PBOC 08年修订版新加上去的规范 <<基于借记贷记应用的小额支付规范>>里,它实现的功能跟电子钱包相差无几,就是最基本的三个功能,圈存,消费,查询余额. 那为什么人民银行后来会增加这样的一个基于借贷记的”山寨”应用呢? 这个我们不得而知. 个人的看法是,国内目前PBOC还处于起步阶段, 这种电子现金的应用,可以作为PBOC的小范围推广应用主要是因为它支持小额度脱机消费),对用户来讲,在一些服务行业实现小额支付的功能,而且因为它本身是基于借贷记的, 未来时机成熟了,可以不用换卡, 直接过渡到全国范围内的借贷记应用.
站在开发者的角度,我们需要剖析EP与EC的区别. 分以下几点:
1 交易流程上的差别. EC因为是基于供借贷记,从读取支付系统目录,到终端风险管理,一直到交易结束,严格来说每一步都必不可少,完全遵守借贷记规范. 而EP本身是独立于借贷记的,或者说它不同于EMV的规范。它在安全管理,风险控制方面并没有EMV那样严格, 因为毕竟是做小额消费的, 本身风险就不大. 也正是出于安全管理方面的差异,EP的交易流程与EC存在一些差异, 具体的差异可以参见<中国金融集成电路IC)卡规范>
2 APDU的差异. EP虽然有一些基本的APDU跟借贷记是复用的,但因为它本身应用上的特殊性,它自己也定义了一套专门的APDU. 比如针对圈存, 有initialize for load初始化圈存), credit for load圈存)等APDU指令. 而EC是基于借贷记的, 兼容其APDU自不必说,另外还加了很少几个电子现金专用的APDU,比如get data查询余额)等.
3 在安全管理方面, EP,EC也是有很大差别的. EC由于是基于借贷记,在安全规范方面也肯定要符合借贷记的标准,自然安全方面的要求要高过EP. 比如,一个基于EC的交易肯定要具备终端风险管理,终端行为分析,卡片行为分析等操作,
而EP就没有这些要求. 下面拿联机圈存安全认证流程举个例子来说明EP和EC在安全管理上的差异:
我要对一张基于EP的IC卡做圈存,首先我向卡片发初始化圈存指令, 卡片会生成一个MAC1, 这个MAC1是卡片用本身的密钥,把一些必要的输入数据比如圈存金额),用3des算法生成的一个报文鉴别码, 这个MAC1随后被送往后台,后台解密这个MAC1,从而验证卡片的合法性. 如果验证成功,后台生成一个MAC2返回给终端机,当终端对IC卡发圈存指令时,要把这个MAC2一起发给IC卡,卡片以同样的原理验证后台的合法性,如果验证成功,才更新卡上的金额, 圈存成功.
再来看看EC是怎么来做圈存的. 终端向卡片发产生应用密文指令,卡片收到该命令,内部基于3des算法产生应用密文ARQC, 这个有点类似于上面的MAC1. 终端联机上送这个ARQC,后台用这个ARQC验证卡片的合法性,如果验证成功,会产一个授权响应密文ARPC, 终端用ARPC给卡片发外部认证命令,这样卡片就可以验证后台的合法性,只有验证成功,终端才会向后台申请圈存脚本, 后台验证通过,发圈存脚本到终端.
从上面可以看出, 在圈存的方式上,双方合法性验证上的原理本质上是基本相同的, 不过EP的圈存指令是由终端机发起的,而EC的圈存指令则是后台验证合法性通过发来的脚本, 终端仅做解析,然后转发到IC卡.
就目前的情况来看,无论是金融机构比如银行), 还是一些非金融的行业机构, 在推广金融IC卡小额支付的应用时,都是优先选择EP, 因为无论是卡片,还是终端POS,圈存机等),开发基于EC的应用,复杂度都是要大过EP的. 举个例子, 基于EC的POS终端要求具有脱机数据认证能力,必须同时具备SDA和DDA, 而这种认证的原理是基于非对称的RSA加密技术, 而EP的POS终端就没有这个限制, 可以用传统的复杂度小一些的des加密技术.