PBOC卡片应用分析(二)

接上一篇,上次基本上卡在了选择ADF之后的操作,选择完ADF之后根据Response的数据,需要做获取处理选项GPO,但是对PDOL这个东西一直搞不明白,GPO指令的数据域是PDOL,PBOC规范上对GPO的指令写的也是很模糊,只说了没有PDOL的发8300,有PDOL项的发PDOL,但是泛泛的浏览PBOC规范,对选择应用之后返回的数据中PDOL的内容也没有细说,折腾了半天才反应过来PDOL的格式,仔细对照规范对PDOL的解析如下。
+-----------+----------+-------------------+----+---------+----+--------------+-----+
| PDOL的Tag | PDOL长度 | 电子现金指示器Tag |    |授权金额 |    交易货币代码 |     |
+-----------+----------+-------------------+----+---------+----+--------------+-----+
|   9F38    |   09     |     9F7A          | 01 |  9F02   | 06 |     5F2A     | 02  |
+-----------+----------+-------------------+----+---------+----+--------------+-----+
下面发送GPO指令,这个PBOC3.0规范上关于GPO的APDU的描述Lc固定值写为0,不知道这一部分是哪个单位的人写的,Lc明显不能写成0啊,开始我还老老实实的写0,仔细想,即使没有PDOL,Data域也要发8300,Lc也得为2的,如果符合了PBOC3.0的规范,那就跟7816规范矛盾了,必须是起草者写错了。下面对GPO命令报文按我自己的修正后的说明一下以防又有人跟我已经糊里糊涂的。
 APDU 取值说明 
 CLA 80 
 INS A8
 P1,P2 00
 Lc PBOC3.0规范上写的是0,实际应该是数据域长度 
 Data  83+PDOL的部分,直接把Tag 9F38之后的部分填充进来即可,如果没有PDOL那么就是83+00
 Le

下面发送GPO指令
7.GPO
APDU:80A800000B 83099F7A019F02065F2A02
SW1SW2:6114

8.GET RESPONSE
APDU:00C0000014
RETURN:80127C0008010100100103011007070018010400
SW1SW2:9000

规范中说GPO的Reaponse数据中应该是一个BER-TLV编码的数据对象,有两种格式一种是标签为‘80’,一种是标签为‘77’,这个明显是标签为‘80’的。数据对标表示了AIP和AFL。AIP列出了交易在处理过程中执行的功能;AFL列出交易需要读出的数据存放的短文件标识符、记录号、记录个数以及脱机数据认证需要的静态签名数据的存放位置。
下面对报文进行解析,在规范上没有看太明白,一边baidu一边看规范进行解析的。
80是Tag,12是长度,7C00是AIP.
7C00按照规范是
 bit  
 bit8=0  规范说1=RFU
 bit7=1 支持SDA 
 bit6=1 支持DDA 
 bit5=1 支持持卡人认证
 bit4=1 执行终端风险管理 
 bit3=1 支持发卡行认证 
 bit2=0 0=RFU 
 bit1=0 不支持CDA 
 第2字节 RFU=0 

后面4字节08010100应该就是AFL了。
08-短文件标示符,01-第一个要读出的记录号,01-最后一个要读出的记录号,00-存放用于脱机数据认证的数据的连续记录个数,字节2指出的是第1条要读的记录号。

下面要根据AFL的指示读取SFI指向的文件,文件号格式是SFI左移3位,右边补100,字节0x80中表示SFI的是bit8~bit4,所以0000 1000中只有0000 1是SFI,按前面的规则处理后文件号格式就是01100就是0x0C,所以构造APDU读一下记录。

9.READ RECORD
APDU:00B2010C00
SW1SW2:6C3C

调整一下Le重新下发APDU

10.READ RECORD
APDU:00B2010C3C
RETURN:703A5 后面跟了58字节数据涉及我自己隐私就不发出来了
SW1SW2:9000

数据等价二磁道数据,包含了持卡人姓名,证件号码,证件类型等信息

继续往后读下一个文件

11.READ RECORD
APDU:00B2011400
SW1SW2:6C44

调整一下Le重新发指令

12.READ RECORD
APDU:00B2011444
RETURN:一堆私人数据
SW1SW2:9000

13.READ RECORD
APDU:00B2021400
SW1SW2:6CBA

14.READ RECORD
APDU:00B20214BA
RETURN:一堆私人数据 稍后分析。
SW1SW2:9000
2013年2月,中国人民银行发布了《中国金融集成电路(IC)卡规范(V3.0)》(以下简称PBOC3.0),PBOC3.0是在中国人民银行2005年颁布的《中国金融集成电路(IC)卡规范(2.0)》(以下简称PBOC2.0)基础上,经业内专家多次研讨并不断修订、补充完善而成,此次升级适应了银行卡业务发展的新要求,为金融IC卡进一步扩大应用奠定了基础,对推进金融创新和提升金融服务民生的水平有重要意义。 一、PBOC3.0颁布的背景 1997年12月,中国人民银行在借鉴国际有关标准的基础之上,结合国内金融应用需求,发布了《中国的金融集成电路(IC)卡规范V1.0》,后来业内把此规范称作PBOC1.0。从内容上看,PBOC1.0规范定义了电子钱包/电子存折应用,规定了卡片终端的接口、卡片本身的技术指标、应用相关的交易流程和终端的技术要求等。 为满足金融IC应用发展的需要,中国人民银行于2003年启动PBOC1.0规范修订工作,补充完善电子钱包/存折应用,增加了与EMV2000标准兼容的借记/贷记应用,增补了非接触式IC卡电气协议特性、电子钱包扩展应用、借记/贷记应用个人化指南等内容,并在2005年3月颁布了PBOC2.0规范。 为推动金融IC卡在小额支付和快速支付领域的应用,中国人民银行于2010年5月发布PBOC2.0规范2010版。该规范共13个部分,增加了非接触支付、基于借记贷记的电子现金等内容,以满足小额的快速支付的市场需求。 为适应我国社会安全支付的需要,推动金融IC卡的健康发展,2011年3月15日,中国人民银行发布《中国人民银行关于推进金融IC卡应用工作的意见》,表示“十五”期间将在全国范围内全面推进金融IC卡应用,以促进中国银行卡的产业升级和可持续发展。同时人民银行也提出了IC卡受理环境改造和银行发卡的时间表,这标志着国内金融IC卡迁移开始全面推进,IC卡迁移进入关键时期。经过近三年的努力,PBOC3.0规范应运而生,由人民银行于2013年2月正式颁布实施。 PBOC3.0的主要内容 PBOC3.0共包括14个部分(原PBOC2.0的第1部分:钱包存折卡片、第2部分:钱包存折应用、第9部分:钱包存折扩展已删除),分别为: 第3部分:与应用无关的IC卡与终端接口; 第4部分:借记贷记应用; 第5部分:借记贷记应用卡片; 第6部分:借记贷记应用终端; 第7部分:借记贷记应用安全; 第8部分:与应用无关的非接触式规范; 第10部分:借记贷记应用个人化指南; 第11部分:非接触式IC卡通讯; 第12部分:非接触式IC卡支付; 第13部分:基于借记贷记应用的小额支付; 第14部分:基于借记贷记应用的小额支付扩展应用; 第15部分:电子现金双币支付应用; 第16部分:IC卡互联网终端; 第17部分:借记贷记应用安全增强。 PBOC3.0结合国内外最新技术与安全标准,对金融IC卡的底层标准及安全算法进行了完善,增强了卡片终端的交互适应性,同时引入了移动支付、行业多应用等元素,提高了金融支付的安全性。 三、PBOC3.0和PBOC2.0的异同分析   1、 安全增强   出于对国家金融安全等多种因素的考虑,PBOC3.0在第17部分详细定义与说明了国密算法在金融IC卡中的应用,即PBOC3.0的金融IC卡可以支持SM2/SM3/SMS4(国密算法)与RSA/SHA-1/3DES(国际算法)。这两套算法通过 SM算法支持指示器标签DF69进行切换。   两套算法切换的原则是:终端卡片使用共同支持的算法完成交易;遵循国密算法优先处理的原则。   2、 增加应用   (1) 非接触式IC卡小额支付扩展应用   为适应金融IC卡跨行业多应用需求,推动金融IC卡的一卡多用惠及民生,PBOC3.0在第14部分增加qPBOC扩展应用,分配了扩展应用文件,从而满足了金融IC卡在地铁、公交、高速公路收费、停车收费、铁路(高铁)等领域的多种应用,同时预留了其它银行自定义应用及保留应用。   (2) 电子现金双币应用   随着国际IC卡迁移的推进,我国的金融IC卡进一步兼容国际标准,为港澳台及国外持卡人提供便利,PBOC3.0第15部分增补了双币电子现金和双币qPBOC应用,对双币种交易时的TAG进行了映射,最大限度地方便持卡人在两种币种间的快速转换。   (3) IC卡互联网终端   为推动金融IC卡与网络支付和移动支付的整合发展,PBOC3.0在第16部分中增补了IC卡互联网终端的内容,对IC卡互联网终端的安全体系、应用场景、交易流程等环节进行了详细的定义与阐释。IC卡互联网终端有效地引入了移动支付的新元素,多种应用场景圈存解决了持卡人到银行柜台排队办理业务的苦恼。   3、 原有内容升级   (1) 增加了AID预留和分配   对TAG进行了预留以供将来使用;定义了AID的编码规则、保留规则。   (2) 修订了GAC与GPO命令数据的相关内容。   明确了GAC与GPO命令数据不一致时卡片处理方法;   在终端层面,也明确了若卡片返回标签重复,终端应当终止交易;   卡片联机GPO响应数据中新增了9F63的要求,以适应不断增长的应用需求;   明确了GPO响应应遵循的格式。   (3) 明确了执行发卡行认证与执行发卡行脚本之间的关系。   卡片应当能正常处理应用解锁命令,无论发卡行认证是否执行,若发卡行认证执行但失败,则卡片应拒绝执行发卡行脚本,并推荐以“6985”响应发卡行脚本命令。   (4) 修改9F63产品标识信息。   9F63命名为“产品标识”,用于标识持卡人设备产品的物理形态,用途等。   (5) 增加了第6.5节“个人化数据必须遵循的规则”   在增加规则的同时,也明确了9F10中发卡行自定义数据的要求,这些部分的修订,结合了各商业银行接入银联网络的有关经验,对于商业银行发卡的个人化数据具有指导性意义。   (6) 修订非接触式IC卡通讯的参数   参数的修订目的在于兼容ISO/IEC 14443:2011。   (7) 增加两种交易日志   圈存日志的要求:当卡片中的电子现金余额(9F79)被设置数据(Put Data)命令成功改写时,卡片应当记录一条圈存日志。   增加了qPBOC交易日志要求(发卡行可选)。   (8) 其它终端部分的主要修订内容   终端也不应因持卡人姓名有误而终止交易;   终端在交易时及交易后取得卡片中电子现金余额的方法;   授权金额为0的处理方式:如果授权金额为零,除非终端支付qPBOC扩展应用,具有联机能力的终端应在终端交易属性字节2的第8位表示要求联机应用密文;如果授权金额为零,除非终端支付qPBOC扩展应用,仅支持脱机的终端应终止交易,提示持卡人使用另一种界面(如果存在)。   (9) 其它卡片部分的主要修订内容   修订了卡片连续MAC错的处理方法。当卡片执行了收到一个MAC错的发卡行脚本命令,则不应允许执行后续的发卡行脚本命令;   修订了关于“闪卡”的处理办法;   明确了qPBOC不再设置LOATC。   4、删除不适用部分   删除了电子钱包/电子存折应用及其扩展应用;   删除了借贷记应用中对DDF的描述,删除了终端应用选择时对DDF的支持,同时强制卡片不使用DDF;   删除了非接触支付应用中的MSD应用相关内容。   四、PBOC3.0颁布对产业发展的影响   PBOC3.0的颁布有利于我国银行卡产业应对国际银行卡技术发展的挑战,满足新形势下人民群众对安全、便捷支付方式的需要,促进了我国银行卡产业技术升级,推动了我国金融IC卡应用与行业应用的结合,为加快推进我国金融IC卡应用普及和产业发展提供了指引和发展机遇。   同时,PBOC3.0的颁布进一步完善了金融标准化体系,为提升我国金融服务水平和保障金融业健康发展提供了有力支撑。   五、结束语   PBOC3.0规范的编制与出台,历时近三年,是各有关部委、金融机构、IC卡产业链单位等集体智慧的结晶。为配合PBOC3.0规范的宣贯与实施,银行卡检测中心作为独立的专业化第三方检测机构,及时参与并跟进PBOC规范的编制,目前已经依据PBOC3.0的更新及时升级或新开发了适应PBOC3.0要求的检测工具和测试平台,对全面对外推出PBOC3.0相关的测试项目,满足了IC卡及终端产品依据新规范改造后的测试需求;与此同时,银行卡检测中心面向各商业银行、IC卡相关企业开展了以“PBOC3.0检测标准、技术”为主题的培训研讨班,积极配合了新标准的落地实施。 转自:PBOC3.0和PBOC2.0标准规范异同分析
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值