1.对普通用户而言,电子钱包和电子现金几乎没有区别,EP和EC都是为了小额支付而生的,就我们拿着一张IC卡去超市的POS机上消费,或者做公交,只需要轻轻一刷就可以了,用户不必关心也不想关心卡里面是基于EP的应用还是EC的应用。

2.站在智能卡行业的开发者角度来说,区别如下:

 首先,我们从应用的角度来看两者的区别:

 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加密技术.