转载请注明出处

作者:小马

尽管PBOC基本是中文版的EMV, 但还是需要根据国情做一些适当的差异化处理. 这一点在持卡人认证方面有很明显的体现.EMV支持脱机密文PIN,PBOC不支持. 但PBOC支持身份证件验证,EMV不支持. 身份证件验证是根据国情增加的,谁让咱们国家证多呀.

持卡人认证并不是必备的EMV流程, 终端是否应该执行持卡人认证, 决定因素在两点. 一是AIP表明是否支持, 二是在读数据阶段,卡片是否返回CVM list.

PBOC 支持的CVM如下:

脱机明文PIN验证;
联机PIN验证;
签名;
CVM失败;
无需CVM;
签名与脱机明文PIN验证组合;
身份证件验证。

EMV 支持的CVM如下:

脱机明文PIN验证;
联机PIN验证;
签名;
CVM失败;
无需CVM;
签名与脱机明文PIN验证组合;
脱机密文PIN验证。

持卡人认证在EMV中叫CVM(cardholder verification method), 在一笔交易中,CVM可以有多个, 所以就有了CVM List的概念.

一个CVM包括以下几项内容:

金额X

金额Y

CVM 代码 指出如果这个CVM 失败,是执行下一CVM 还是认为CVM 失败

CVM 类型 (就是上面列出的那些方法)

CVM 条件 表示在什么条件是才用该方法,有以下几个:

0 总是执行
1 如果是现金或返现交易
2 如果不是现金或返现交易
3 如果终端支持此CVM
4 如果交易金额小于金额X
5 如果交易金额大于金额X
6 如果交易金额小于金额Y
7 如果交易金额大于金额Y

说着太抽象,举个例子:

* Tag 8E Cardholder Verification Method (CVM) List
*- Len       0A
*- Value    00 00 00 00 00 00 00 00 04 00

CVM list的tag是8E, 长度是10个字节. 前四个字节是金额X, 再往后四个字节是金额Y,

04 同时表示如果此CVM失败,则持卡人验证失败,而且验证方法为脱机加密PIN.

最后一个字节00表示”总是”,即这个方法是总是要执行的.

当然CVM list的长度并不局限于10个字节, 它的长度准备的应该表示为8+2*n(n为正整数). 终端应该按照顺序读取CVM list,并使用满足条件的第一个方法,如果某个方法不可用,应继续遍历其它方法, 如果所有方法都不可用,则持卡人验证失败.

在所有的持卡人验证方法中, 脱机加密PIN应该是最复杂的一个, 这里详细介绍一下它的原理及流程.

脱机加密PIN,简单来说, 原理如下:

终端从卡片中获取PIN加密公钥证书(可在read data阶段读取),从证书中恢复PIN加密公钥. 当用户输完PIN时, 终端用此公钥加密该PIN,然后能过指令把加密数据传给卡片,卡片收到数据后,先用存在自身的PIN加密私钥解密,然后再验证该PIN的正确性.

详细的步骤如下:

1 终端把用户输入的明文PIN按照一定的格式补位对齐, 然后用get challenge命令从卡片中取一个8字节的随机数.
2 终端自己产生一组长度为N-17的随机数(N为PIN加密公钥的长度), 然后把补位后的PIN,卡片中取的随机数以及终端产生的随机数拼接在一起, 与PIN加密公钥做RSA运算.
3 把上一步运算的结果通过verify命令发给IC卡.
4 卡片用PIN加密私钥解密数据, 首先检查解出来的8字节随机数是否与自己产生的一致,然后卡片检查恢复的数据头字节是否有效, 最后一步是验证PIN是否合法. 只有所有的条件都满足,脱机加密PIN才算成功.

PBOC/EMV之持卡人验证相关推荐

  1. EMV规范(七)——持卡人验证(CVM)一

    此部分笔记是来源EMV Book3中的10.5 Cardholder Verification节,可以结合此篇笔记来阅读. 终于到CVM这章了,持卡人验证是非常非常重要的章节,反正我的leader是这 ...

  2. EMV技术学习和研究(七)持卡人验证

    转载请注明出处 作者:小旭 持卡人认证部分,EMV和PBOC是有区别的,EMV有脱机加密PIN认证,PBOC没有:PBOC有持卡人身份证件验证,但是EMV没有. 持卡人验证主要基于两个数据要素,AIP ...

  3. PBOC/EMV 中SDA和DDA简介

    PBOC/EMV里有两个非常重要的概念: SDA(staticdataauthentication)和DDA(dynamicdataauthentication),分别叫做静态数据认证和动态数据认证. ...

  4. PBOC/EMV之小额支付, 电子钱包和借贷记

    EMV标准共分四册, 分别是book1到book4, 这四册里没有对小额支付和EP/ED的相关说明, 也就是说,PBOC L2的这两个标准在EMV L2里是没有的. 所以,PBOC L2里借贷记部分实 ...

  5. PBOC/EMV之圈存模式的变革

    转载自:http://blog.sohu.com/people/!cG9ueV9tYWdnaWVAc29odS5jb20=/143998056.html 关于圈存的概念可参见我的另一篇文章(电子现金应 ...

  6. PBOC/EMV之文件结构

    开始看PBOC/EMV中IC卡的文件结构时,就被DF, MF, EF,DDF,ADF这些概念弄晕了. 文档里对这几个概念讲解的都不够通俗. 不过这也不奇怪, 这种所谓的标准如果讲的太通俗,那么制定这些 ...

  7. 金融系统中PBOC/EMV的TLV的算法实现(含C++/C#)

    金融系统中PBOC/EMV的TLV的算法实现(含C++/C#) TLV即Tag-Length-Value,常在IC卡与POS终端设备中通过这样的一个应用通信协议进行数据交换.在金融系统以及认证中,PB ...

  8. C#:实现PBOC/EMV的TLV的算法(附完整源码)

    C#:实现PBOC/EMV的TLV的算法 public class TLVEntity{/// <summary>/// 标记/// </summary>public byte ...

  9. EMV规范(八)——持卡人验证(CVM)二

    现在到了TVR和CVM Results部分了.TVR是Terminal Verification Results,也就是终端验证的结果,包括了脱机数据认证,持卡人认证,处理限制等等是否成功.所以只要交 ...

最新文章

  1. xp下发布wcf时遇到的问题_解决方法
  2. 1000 qps java,什么是QPS?
  3. 57. Leetcode 257. 二叉树的所有路径 (二叉树-二叉树路径和)
  4. 二本毕业,努力 5 年,月入 5w 的程序员和他们的公众号
  5. 微信小程序_基础组件学习02
  6. 【iCore1S 双核心板_ARM】例程十七:FSMC实验——读写FPGA
  7. angular2子组件的事件传递(任意组件事件传递)
  8. 飞控所有PID参数都无法消除振荡问题
  9. v-model数据绑定分析
  10. 分析师称iPhone 13将支持卫星通信,但仅限特定市场
  11. 还有必要吗?iPhone 11系列终于要全家族支持双卡双待了
  12. Maven中的自定义settings.xml文件
  13. 统计学常见分布、概念
  14. 教你写Linux设备驱动程序:一个简短的教程
  15. 分类问题中的几个衡量指标
  16. 如何快速制作一个漂亮的生日祝福网站
  17. VMware桥接模式下虚拟机ping主机不通
  18. 超详细!Chrome 浏览器、浏览器插件 下载和安装教程
  19. Black-Scholes 期权定价公式的来龙去脉
  20. RAID的概念和RAID对于SQL性能的影响

热门文章

  1. 微信小程序 -数字滚动动画
  2. 成人大专计算机统考的操作详解,成人大专计算机统考选择题汇总
  3. SQL注入-01-什么是SQL注入?
  4. SQL题库:sqllearning4​—触发器、数据库存储练习
  5. iOS开发- ios学习资源(持续更新)
  6. Java中switch的四种用法
  7. 图解HTTP学习_day11
  8. Cloud Foundry 峰会进入中国 全球专家与你面对面
  9. HTML下拉菜单悬停不消失,悬停后保持下拉菜单打开(CSS)
  10. QT--警告libpng warning: iCCP: known incorrect sRGB profile