您的位置:首页 > 其它

EMV技术学习和研究(二)应用选择

2013-07-05 13:13 211 查看
转载请注明出处

作者:小旭

目的:

应用选择主要目的就是在卡片插入终端的时候,由终端来选择哪些应用是由终端和卡片共同支持的。终端的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的重要数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: