EMV技术学习和研究
今天在工作中碰到一些问题,就找到了这篇文章,个人感觉很好,保存下来,以供随时学习。
转载地址:EMV技术学习和研究
作者:小旭
目的:
应用选择主要目的就是在卡片插入终端的时候,由终端来选择哪些应用是由终端和卡片共同支持的。终端的AID列表是通过AID下载交易从服务端获取,卡片的AID是在做卡片个人化时写入的。
从终端角度来讲,选择方式就是目录选择法和AID列表法。
特别说明(参考了小马哥的分析和解释):
aid选择涉及到MF,DDF,ADF,EF,AEF几个概念,先描述一下这几个文件的概念。
MF、DF、EF三个概念是ISO7816的规范,做卡片的一般会比较熟悉,做终端的只要了解就可以了。
MF其实就是根目录,类似我们的C盘,D盘这些,DF就是目录,比如我们PC的program目录一样,EF就是DF下面的文件,比如PC下面的某个目录下的文件。
ADF、DDF、AEF就是PBOC规范里面的名词了,ADF和DDF其实就是DF的一个映射,AEF就是EF的映射,我们不能直接操作DF和EF,只能操作ADF和DDF以及AEF,就相当于内存管理里面物理地址和虚拟地址一样,程序不能直接使用物理地址,只能使用虚拟地址,而内存管理的单元回去实现虚拟地址到物理地址的映射。
这里还有一个区别点,既然ADF和DDF都是DF的映射,那他们两个有啥区别呢?
DDF还是一个目录,这个目录下面可能有ADF,也可能还是有DDF的。
ADF也是一个目录,但是这个目录已经是aid的目录了,这个目录的名称就是AID了。
再根据ADF名称去选择ADF,ADF下面都是AEF,也就是这个AID多对应的有用数据文件,终端在GPO时候根据返回的AFL,再去读取对应的文件。
目录选择法流程:
目录选择法支持借贷记和电子现金,同时也支持QPBOC,所以分两种情况说明。
一、借贷记和电子现金
1.终端要选择PSE,这个叫做支付环境系统,也是一个DDF。
特别说明,PB0C3.0上已经取消了DDF的概念,但是并不是取消了PSE和PPSE,只是取消了DDF的概念,也就是说取消了DDF下面还存在DDF的情况。
pboc2.0在读取记录的时候有可能读取到的是DDF,这个时候需要通过返回的SFI再去选择DDF后再去读记录,循环执行,直到读取到ADF。
主要是根据tag值为9D还是4F来判断是DFF还是ADF。
pboc3.0取消DDF后,就不用再考虑这个步骤了。
有感兴趣的可以去下面的网址,http://bbs.yktworld.com/dispbbs.asp?boardid=27&Id=4070
选择完PSE之后,PSE目录会返回SFI(tag 88),然后终端根据SFI,再执行READ RECORD命令读取记录,读记录根据SFI循环读取,直到卡片返回6A83为止,这个时候终端已经获取到卡片支持的AID(tag 4F)。每读一次记录,如果返回9000,都会获得一个卡片支持的AID。
读记录以后采用终端的aid和卡片aid比较,如果相同,则这几个应用被选中。
读记录除了返回AID外,还有几个重要参数,比如应用优先级指示器(这个比较重要),应用标签(用于在持卡人选择应用时做显示)等,PBOC文档有比较详细的解释和说明了。
当卡片和终端有多个应用支持时,需要根据应用优先级指示器的bit8来判断是否需要提示持卡人选择应用。
如果在未读到记录之前或者读记录后检查数据非法等情况,均认为是目录选择法失败,这时候就需要改用AID选择法。
上述描述比较抽象,拿一个实例和大家分享一下:
- Send:20
- 00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44
- 46 30 31 00
- Rec:43
- 6F 26 84 0E 31 50 41 59 2E 53 59 53 2E 44 44
- 46 30 31 A5 14 88 01 01 5F 2D 02 7A 68 9F 11 01
- 01 BF 0C 05 9F 4D 02 0B 0A 90 00
- Send:5
- 00 B2 01 0C 00
- Rec:45
- 70 28 61 26 4F 08 A0 00 00 03 33 01 01 01 50
- 0A 50 42 4F 43 20 44 45 42 49 54 9F 12 0A 50 42
- 4F 43 20 44 45 42 49 54 87 01 01 90 00
- Send:5
- 00 B2 02 0C 00
- Rec:3
- 6A 83
二、Qpboc(后续简称Q)
1.终端要选择PPSE,这个叫做支付环境系统,也是一个DDF。
2.Q在选择完PPSE之后已经可以获取到AID(可能是多个)、应用优先级、应用指示器,Q不支持持卡人选择应用,所以如果有多个AID的时候,需要根据应用优先级选择优先级最高的AID,再根据AID选择ADF,就可以获取到PDOL(关键数据)、发行卡代码等数据。
Q和借贷记的区别(仅讨论应用选择部分):
1、Q不支持持卡人选择应用。
2、Q不支持AID列表选择法。
3、Q的流程简化了很多。
借贷记需要根据选择PSE返回的SFI读记录获取AID,再根据AID去选择ADF,再去读数据;Q在选择PPSE之后就可以获取到AID,直接选择ADF了。
再拿一个实例来看一下
- send:20
- 00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44
- 46 30 31 00
- rec:52
- 6F 30 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46
- 30 31 A5 1E BF 0C 1B 61 19 4F 08 A0 00 00 03 33
- 01 01 01 50 0A 50 42 4F 43 20 44 45 42 49 54 87
- 01 01 90 00
- send:14
- 00 A4 04 00 08 A0 00 00 03 33 01 01 01 00
- rec:88
- 6F 54 84 08 A0 00 00 03 33 01 01 01 A5 48 50 0A
- 50 42 4F 43 20 44 45 42 49 54 87 01 01 9F 38 18
- 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A
- 02 9A 03 9C 01 9F 37 04 5F 2D 02 7A 68 9F 11 01
- 01 9F 12 0A 50 42 4F 43 20 44 45 42 49 54 BF 0C
- 05 9F 4D 02 0B 0A 90 00
AID选择法流程
AID选择法,就是终端将自己所支持的全部AID通过SELECT命令发送给卡片,逐一尝试,看哪条AID是卡片所支持的。
选完AID后续的处理还是目录选择法一样,根据支持AID的情况判断是否需要做持卡人选择应用。
实例一下就看明白了:
- send:12
- 00 A4 04 00 06 A0 00 00 00 25 01 00
- rec:3
- 6A 82
- send:13
- 00 A4 04 00 07 A0 00 00 00 03 10 10 00
- rec:3
- 6A 82
- send:13
- 00 A4 04 00 07 A0 00 00 00 03 20 10 00
- rec:3
- 6A 82
- send:13
- 00 A4 04 00 07 A0 00 00 00 04 10 10 00
- rec:3
- 6A 82
- send:13
- 00 A4 04 00 07 A0 00 00 00 65 10 10 00
- rec:3
- 6A 82
- send:14
- 00 A4 04 00 08 A0 00 00 03 33 01 01 06 00
- rec:3
- 6A 82
- send:14
- 00 A4 04 00 08 A0 00 00 03 33 01 01 01 00
- rec:74
- 6F 45 84 08 A0 00 00 03 33 01 01 01 A5 39 50
- 0A 50 42 4F 43 20 44 45 42 49 54 87 01 01 9F 38
- 09 9F 7A 01 9F 02 06 5F 2A 02 5F 2D 02 7A 68 9F
- 11 01 01 9F 12 0A 50 42 4F 43 20 44 45 42 49 54
- BF 0C 05 9F 4D 02 0B 0A 90 00
- send:14
- 00 A4 04 00 08 A0 00 00 03 33 01 01 02 00
- rec:3
- 6A 82
应用选择后,终端已经获取到PDOL,PDOL将会作为后续进行GPO的重要数据。
EMV技术学习和研究相关推荐
- EMV技术学习和研究(一)开篇
在这个行业也3年多了,一直想写写关于EMV和PBOC的内容,但是总觉得自己懂得还不够,对EMV和PBOC的理解还不够深入. 但是后来想想,如果还不开始自己写一点东西的话,可能这个事情也就永远的搁浅了, ...
- EMV技术学习和研究(五)脱机数据认证之DDA
转载请注明出处 作者:小旭 有了前面对SDA的熟悉,接下来再研究DDA就会感觉比较轻松一点了. 用于动态数据认证的数据和SDA部分所描述的一样,也是基于SFI的来组织的. 特别说明一下:之前有一个地方 ...
- EMV技术学习和研究(十一)QPBOC
转载请注明出处 作者:小旭 Q在选择完应用之后,是有一步交易预处理,交易预处理是对交易限额的处理,在交易开始之前首先对交易金额做出计算和判断.有点类似于借贷记交易中终端风险管理中所完成的步骤.关于交易 ...
- EMV技术学习和研究(七)持卡人验证
转载请注明出处 作者:小旭 持卡人认证部分,EMV和PBOC是有区别的,EMV有脱机加密PIN认证,PBOC没有:PBOC有持卡人身份证件验证,但是EMV没有. 持卡人验证主要基于两个数据要素,AIP ...
- EMV技术学习和研究(九)终端行为分析
转载请注明出处 作者:小旭 这一块的内容,我觉得文档上讲的比较清晰,而且举例也很好,所以大部分都是拷贝文档的内容过来,一边看一边分析文档的含义. 这一部分用到2类比较重要的数据,分别是 发卡行行为代码 ...
- EMV技术学习和研究(三)应用初始化读应用数据
转载请注明出处 作者:小旭 借贷记和Qpboc在应用初始化和读应用数据方面的流程还是比较相似. 先看借贷记和电子现金的处理流程 应用选择完成后,终端获取到了PDOL数据(特别说明:这个不是必须的,卡片 ...
- EMV技术学习和研究(十二)交易限额
转载请注明出处 作者:小旭 EMV参数里面有几个限额,但是感觉这几个限额都比较容易混淆和模糊,下面一个一个的来讨论一下. 终端最低限额(9F1B).终端电子现金交易限额(9F7B).非解最低限额(DF ...
- EMV技术学习和研究(二)应用选择
转载请注明出处 作者:小旭 目的: 应用选择主要目的就是在卡片插入终端的时候,由终端来选择哪些应用是由终端和卡片共同支持的.终端的AID列表是通过AID下载交易从服务端获取,卡片的AID是在做卡片个人 ...
- EMV规范学习与研究(三)——应用初始化
应用初始化目的: ①通知卡片新交易开始: ②将交易所需的数据发送给卡片: ③从卡片上返回AIP和AFL: ④决定交易是否被允许执行: 应用初始化步骤:(GPO命令的格式) 设置TVR和TSI中所有位为 ...
最新文章
- 软件测试概述--基础篇
- 云计算技术 — 云计算的未来
- 面试题整理 8 字符串排序扩展题
- Flask实战2问答平台-问答详情完成
- tomcat启动时,报java.io.EOFException
- 开课吧的python的证书_Python在生活中的几个实用场景,简直太厉害了
- React之props批量传递
- 图论 —— 图的连通性
- 实现算法2.11、2.12的程序
- android adb音频采集,android adb
- .Net MVC中SelectList绑定默认值失效的解决办法
- Spring Boot
- dbf转成excel_dbf转excel工具(DbfToExcel) v1.2 免费版
- 金蝶k3单据编码规则_金蝶k3套打格式设置图文教程(凭证与供应链单据)
- excel计算机快捷键大全,Excel使用教程 Excel表格快捷键与功能键大全
- WEB版 音乐播放器
- 蓝桥杯 算法提高 ADV-143 扶老奶奶过街 逻辑推理
- 螃蟹辞职 大数据冲击网络社交 魔兽世界如何前进
- python encoding是什么_python中encoding什么意思
- 宽带和网线有什么区别?