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选择法。

上述描述比较抽象,拿一个实例和大家分享一下:

  1. Send:20  
  2. 00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44   
  3. 46 30 31 00   
  4.   
  5. Rec:43  
  6. 6F 26 84 0E 31 50 41 59 2E 53 59 53 2E 44 44   
  7. 46 30 31 A5 14 88 01 01 5F 2D 02 7A 68 9F 11 01   
  8. 01 BF 0C 05 9F 4D 02 0B 0A 90 00   
  9.   
  10. Send:5  
  11. 00 B2 01 0C 00   
  12.   
  13. Rec:45  
  14. 70 28 61 26 4F 08 A0 00 00 03 33 01 01 01 50   
  15. 0A 50 42 4F 43 20 44 45 42 49 54 9F 12 0A 50 42   
  16. 4F 43 20 44 45 42 49 54 87 01 01 90 00   
  1. Send:5  
  2. 00 B2 02 0C 00   
  3.   
  4. Rec:3  
  5. 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了。

再拿一个实例来看一下

  1. send:20  
  2. 00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44   
  3. 46 30 31 00   
  4.   
  5. rec:52  
  6. 6F 30 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46   
  7. 30 31 A5 1E BF 0C 1B 61 19 4F 08 A0 00 00 03 33   
  8. 01 01 01 50 0A 50 42 4F 43 20 44 45 42 49 54 87   
  9. 01 01 90 00   
  10. send:14  
  11. 00 A4 04 00 08 A0 00 00 03 33 01 01 01 00   
  12. rec:88  
  13. 6F 54 84 08 A0 00 00 03 33 01 01 01 A5 48 50 0A   
  14. 50 42 4F 43 20 44 45 42 49 54 87 01 01 9F 38 18   
  15. 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A   
  16. 02 9A 03 9C 01 9F 37 04 5F 2D 02 7A 68 9F 11 01   
  17. 01 9F 12 0A 50 42 4F 43 20 44 45 42 49 54 BF 0C   
  18. 05 9F 4D 02 0B 0A 90 00   

AID选择法流程

AID选择法,就是终端将自己所支持的全部AID通过SELECT命令发送给卡片,逐一尝试,看哪条AID是卡片所支持的。

选完AID后续的处理还是目录选择法一样,根据支持AID的情况判断是否需要做持卡人选择应用。

实例一下就看明白了:

  1. send:12  
  2. 00 A4 04 00 06 A0 00 00 00 25 01 00   
  3.   
  4. rec:3  
  5. 6A 82   
  6.   
  7. send:13  
  8. 00 A4 04 00 07 A0 00 00 00 03 10 10 00   
  9.   
  10. rec:3  
  11. 6A 82   
  12.   
  13. send:13  
  14. 00 A4 04 00 07 A0 00 00 00 03 20 10 00   
  15.   
  16. rec:3  
  17. 6A 82   
  18.   
  19. send:13  
  20. 00 A4 04 00 07 A0 00 00 00 04 10 10 00   
  21.   
  22. rec:3  
  23. 6A 82   
  24.   
  25. send:13  
  26. 00 A4 04 00 07 A0 00 00 00 65 10 10 00   
  27.   
  28. rec:3  
  29. 6A 82   
  30.   
  31. send:14  
  32. 00 A4 04 00 08 A0 00 00 03 33 01 01 06 00   
  33.   
  34. rec:3  
  35. 6A 82   
  36.   
  37. send:14  
  38. 00 A4 04 00 08 A0 00 00 03 33 01 01 01 00   
  39.   
  40. rec:74  
  41. 6F 45 84 08 A0 00 00 03 33 01 01 01 A5 39 50   
  42. 0A 50 42 4F 43 20 44 45 42 49 54 87 01 01 9F 38   
  43. 09 9F 7A 01 9F 02 06 5F 2A 02 5F 2D 02 7A 68 9F   
  44. 11 01 01 9F 12 0A 50 42 4F 43 20 44 45 42 49 54   
  45. BF 0C 05 9F 4D 02 0B 0A 90 00   
  46.   
  47. send:14  
  48. 00 A4 04 00 08 A0 00 00 03 33 01 01 02 00   
  49.   
  50. rec:3  
  51. 6A 82   
应用选择后,终端已经获取到PDOL,PDOL将会作为后续进行GPO的重要数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值