本部分介绍用户卡当前最主要的一个使用场景----卡片消费的具体交易过程。高速公路使用的ETC卡支持消费、复合应用消费两种类型:

前者交易方式仅仅单独操作卡片的电子钱包文件,交易结果影响的主要也是电子钱包的余额,高速公路缴费已基本不再采取该类型的消费方式,正在拓展当中的商超交易场景可能采取该类型消费方式;

而后者交易方式除了操作电子钱包之外还会同时操作卡片中的复合消费专用文件,交易结束时,电子钱包的余额、复合消费专用文件的改写同步更新,要么都成功要么都失败,确保数据的一致性与完整性,高速公路缴费基本采用该方式。

1.  消费交易

1.1.交易流程

1.2.流程说明

1.2.1.发出初始化消费命令

终端发出初始化消费(INITIALIZEFOR PURCHASE)命令启动消费交易。

1.2.2.处理初始化消费命令

IC卡收到初始化消费(INITIALIZEFOR PURCHASE )命令后,将进行以下操作:

  • 检查是否支持命令中提供的密钥索引号。如果不支持,则回送状态字“9403”(不支持的密钥索引),但不回送其他数据;

  • 检查电子存折余额或电子钱包余额是否大于或等于交易金额。如果小于交易金额,则回送状态字“9401”(资金不足),但不回送其他数据。终端应采取的相应措施不在本部分的范围内。

在通过以上检查之后,IC卡将产生一个伪随机数并生成过程密钥用于验证MAC1。过程密钥(SESPK)(SESPK=3DES(DPK, CRN || PSN || EDCTSN最右2bytes))是利用DPK并按照《高速公路ETC卡签之我见9-常见算法》中“过程密钥产生”所描述的机制产生的。用于产生该过程密钥的输入数据如下:

SESPK:伪随机数(ICC)||电子存折脱机交易序号或电子钱包脱机交易序号||终端交易序号的最右两个字节

1.2.3.产生 MAC1

使用伪随机数(ICC)和IC卡回送的电子存折脱机交易序号或电子钱包脱机交易序号,终端的安全存取模块(PSAM)将产生一个过程密钥(SESPK)和一个报文鉴别码(MAC1),供IC卡来验证PSAM的合法性。

MAC1的计算机制见《高速公路ETC卡签之我见9-常见算法》中的“MAC计算”。用SESPK对以下数据进行加密产生MAC1(按所列顺序)(MAC1=MAC(SESPK, 00, TV || TT || EDCID || Date || Time)):

  • 交易金额;

  • 交易类型标识;

  • 终端机编号;

  • 交易日期(终端);

  • 交易时间(终端)。

1.2.4.发出消费命令

终端发出消费(DEBIT FORPURCHASE)命令。

1.2.5.验证 MAC1

在收到消费(DEBIT FORPURCHASE)命令后,IC卡将验证MAC1的有效性。如果MAC1有效,交易处理将继续执行。否则将向终端回送错误状态字‘9302’(MAC无效)。终端对错误状态的处理不在本部分范围内。

1.2.6.交易处理

IC卡从电子存折余额或电子钱包余额中扣减消费的金额,并将电子存折或电子钱包脱机交易序号加1。IC卡必须成功地完成以上所有步骤或者一个也不完成。只有余额和序号的更新均成功后,交易明细才可更新。

IC卡产生一个报文鉴别码(MAC2)供PSAM对其进行合法性检查,并通过DEBIT FOR PURCHASE命令的响应报文回送终端。MAC2的计算机制见《高速公路ETC卡签之我见9-常见算法》中的“MAC计算”。用SESPK对以下数据进行加密产生MAC2(MAC2,=MAC(SESPK, 00, TV)):

  • 交易金额。

IC卡按照《高速公路ETC卡签之我见9-常见算法》“MAC计算”中描述的机制用密钥DTK左右8位字节异或运算后的结果产生TAC。TAC将被写入终端交易明细,以便于主机进行交易验证。TAC以明文形式通过消费(DEBIT FOR PURCHASE)命令的响应报文从IC卡传送到终端,下面是用来生成TAC的数据:

  • 交易金额;

  • 交易类型标识;

  • 终端机编号;

  • 终端交易序号;

  • 交易日期(终端);

  • 交易时间(终端)。

TACKey=DTK_L xor DTK_R

TAC=MAC(TACKey, 00, TV ||TT || EDCID ||EDCTSN || Date || Time)

对于电子存折消费交易和电子钱包消费交易,IC卡将用以下数据组成的一个记录更新交易明细。

  • 电子存折脱机交易序号或电子钱包脱机交易序号;

  • 交易金额;

  • 交易类型标识;

  • 终端机编号;

  • 交易日期(终端);

  • 交易时间(终端)。

1.2.7.验证 MAC2

在收到IC卡(经过终端)传来的MAC2后,PSAM要验证MAC2的有效性。MAC2验证的结果被传送到终端以便采取必要的措施。

1.3.特别说明

  • 上述交易过程以脱机交易(通过PSAM计算交易过程所需数据,如MA1等)为例;从交易过程看,用户卡其实是不关注也不知道交易过程所需的数据(如MAC1)是由什么设备计算出来的,它只校验数据(如MAC1)本身的有效性。所以,MAC1等数据的计算也可以其他设备计算,如加密机等,从而实现在线交易。

  • 卡片交易过程产生的MAC2码,在交易过程就需进行合法性校验,合法性校验通过的方可认为交易已经完成并且合法;否则,认为该笔交易存在异常,业务上一般不得通过。通过此种方式降低伪卡交易带来的风险。

  • 卡片交易过程产生的TAC码,主要是发卡机构用于校验交易流水的合法性,通常在清分结算时验证,卡片交易过程一般不验证合法性。

2.  复合应用消费交易

2.1.交易流程

2.2.流程说明

从交易流程可看出,除了橙色背景的两个步骤外,其他的步骤与要求同复合交易的基本是一致的;将各个步骤中交易类型改为复合应用消费交易即可,数据的组装规则也完全一致,此处不再具体介绍,该章节仅对新增的两个步骤进行详细描述。

2.2.1.发出 UPDATECAPP DATA CACHE命令

终端发出UPDATE CAPP DATACACHE命令。

2.2.2.处理 UPDATECAPP DATA CACHE命令

IC卡在收到UPDATE CAP P DATACACHE命令后,将进行以下操作:

  • 如果命令中存在 SFI 域,检查卡片当前应用下是否存在与命令中 SFI值相同的文件。如果不存在,回送状态字“6A82”(未找到文件),但不回送其它数据。终端应终止此次复合应用消费交易;

  • 根据命令中的复合应用类型标识符,查询复合应用专用文件中是否存在相同标识符的记录。如果不存在,则回送状态字“6A83”(未找到记录),但不回送其它数据。终端应终止此次复合应用消费交易;

  • 检查复合应用专用文件中相应记录中的应用锁定标志字节。如果应用锁定标志为设置,则回送状态字“9407”(复合应用禁止),但不回送其它数据。终端应终止此次复合应用消费交易;

  • 检查命令中的数据域长度是否大于复合应用专用文件中相应记录的长度。如果大于,则回送状态字“6A84”(文件中存储空间不够),但不回送其它数据。终端应终止此次复合应用消费交易。

在通过以上检查后,IC卡应暂存命令中的SFI、记录号、复合应用类型标识符和数据域。复合应用专用文件中相应记录中的数据不得通过此命令更新。

3.  TAC验证

TAC码,即交易认证码(Transaction Authentication Code / Transaction Authorization  Cryptogram),是ETC用户卡在车道交易过程,卡片将交易时间、交易金额等数据项进行加密计算而产生的交易验证码。其设计目的是通过生成和验证基于密钥的TAC,能够保证交易记录产生的合法性,防止人为生成交易记录之类的欺诈行为。

TAC码是卡片在消费/复合消费过程中产生的,由用户卡中的“TAC密钥”对以下数据计算生成:

——交易金额;

——交易类型标识;

——终端机编号;

——终端交易序号;

——交易日期;

——交易时间。

清分结算时,从流水中获取相关数据组装后与用户卡号一起传到加密机计算得到实际的TAC码(使用“TAC密钥”计算得到)。将该TAC码同流水中的TAC码进行比较,若两者相等,认为流水中的交易信息是真实有效的;若两者不相等,则认为流水中的交易信息可能不是卡片实际交易的,存在伪造的嫌疑。

校验TAC码的数据具体组装格式如下:

交易金额4(字节) +

交易类型标识(06/09)1(字节) +

终端机编号6(字节) +

终端交易序号4(字节) +

终端交易日期4(字节)+终端交易时间3(字节)

另外,由于不同省份的“TAC密钥”各不相同,所以各省一般只能校验本省发行的卡片,无法校验外省发行的卡片的TAC码(与在哪里交易无关,省内外消费都是同样的判定)。

高速公路ETC卡签之我见2-卡片消费相关推荐

  1. 高速公路ETC卡签之我见3-卡片圈存

     本部分介绍用户卡圈存交易(通俗说法为卡片充值)的详细交易过程.通过圈存交易,持卡人可将资金划入到卡片的电子钱包中.这种交易要求提交个人识别码(PIN). 1.  圈存交易 1.1.交易流程 1. ...

  2. 高速公路ETC卡签之我见4-卡签结构说明

    本部分简单介绍下高速公路ETC主要设备-用户卡与OBU的文件结构,仅描述其基本结构以及关键的文件的定义说明,旨在让大家对卡签结构有个基本的认识,完整的文件定义请参考<收费公路联网电子不停车收费技 ...

  3. 高速公路ETC卡签之我见1-概述

    1.  密钥 密钥:是在明文转换为密文或将密文转换为明文的算法中输入的参数 根据密码算法所使用的加密密钥和解密密钥是否相同.能否由加密过程推导出解密过程(或者由解密过程推导出加密过程) 可分为对称密钥 ...

  4. 高速公路ETC卡签之我见7-用户卡发行

    原地址:http://blog.csdn.net/Heidlyn/article/details/53668644 本部分主要介绍用户卡的发行过程.从卡厂最终到达用户手上经过了哪些环节,在不同环节分别 ...

  5. 高速公路ETC卡签之我见5-国标密钥体系介绍

     1.  简述 交通部密钥体系主要目的是实现全国高速公路非现金收费的互联互通.整个体系分成两个级别进行管理:国家级密钥管理和省级密钥管理. 国家级密钥管理主要负责管理国家级密钥,分发管理省级密钥母 ...

  6. 高速公路ETC卡签之我见6-省级密钥系统建设

    原地址:http://blog.csdn.net/Heidlyn/article/details/53668581 根据"国标密钥体系"的划分,省级密钥管理的主要内容是负责省级建设 ...

  7. 高速公路ETC卡签之我见8-OBU发行

     本部分主要介绍OBU的发行过程.从厂商最终安装到用户车辆经过了哪些环节,各个环节分别对OBU做了哪些操作. 本文中关于业务环节的划分.操作的先后顺序等并无统一的规范与标准(OBU一发流程除外,该 ...

  8. 高速公路ETC卡签1-概述

    1.  密钥 密钥:是在明文转换为密文或将密文转换为明文的算法中输入的参数 根据密码算法所使用的加密密钥和解密密钥是否相同.能否由加密过程推导出解密过程(或者由解密过程推导出加密过程) 可分为对称密钥 ...

  9. BitPay将支持使用XRP购买礼品卡在连锁零售商和餐厅消费

    据The Daily Hodl消息,区块链支付服务提供商BitPay联合创始人 Tony Gallippi证实,从下周开始,用户将可以使用XRP购买礼品卡.这些礼品卡为加密持有者提供了一种简单的方式, ...

最新文章

  1. myeclipse乱码
  2. C++中的const数据成员
  3. 计算机不会输入函数怎么办,函数不正确_电脑上文件打不开,显示函数不正确怎么解决?...
  4. 回顾一年的工作历程_ppt模板开门红年会颁奖典礼PPT模板,回顾总结过去一年的各项工作...
  5. linux下安装Firefox
  6. JS实现各种页面的刷新
  7. 洛谷OJ P1003 铺地摊
  8. 手机12306买卧铺下铺技巧_手机12306怎么买下铺(微信买火车票指定下铺)
  9. Java实验-输出希腊字母表
  10. 朱晔的互联网架构实践心得S2E7:漫谈平台架构的工作(基础架构、基础服务、基础平台、基础中间件等等)
  11. 害怕字体侵权?可以免费商用的字体库来了!
  12. 如何将单线程爬虫改成多线程
  13. Docker学习十:网络
  14. Webpack的加载器
  15. Python Animation 画动态图形
  16. k3s证书过期的处理 以及 修改k3s证书有效期为10年(或自定义时间)
  17. 父子组件间传值,父传子,子传父
  18. equest.getRequestDispatcher方法的作用是什么
  19. Python-读取并显示图片
  20. 亲测解决谷歌chrome浏览器的“此Flash Player与您的地区不相容,请重新安装Flash”

热门文章

  1. 苹果六现价多少钱_六克拉的Derier多少钱 六克拉钻戒多少钱
  2. 使用webpack5自己搭建react项目脚手架(手把手教,把手伸过来,好软~呸,好手)
  3. Ozone数据探查服务Recon的启用
  4. Excel 数据透视表
  5. Android抽象任务管理框架QTaskManager及其使用方式介绍
  6. 2019 中国AI/ MR十大新闻:梦想照进现实!
  7. 多年后再回头看那海市蜃楼
  8. Nordic新发布nRF21540与RFX2401C和CC2592性能对比
  9. go语言中的type关键字
  10. Failed to introspect Class druid问题