IC卡标准电子钱包/电子存折应用规范
电子钱包/电子存折应用包含PBOC规范的第1、第2部分。定义了可用于脱机小额支付的金融IC卡复制卡电子钱包和电子存折应用。
其中电子钱包支持的交易种类包括:
脱机功能:消费、余额查询、查询交易明细。联机功能:ft存。
电子存折所支持的交易种类包括:
脱机功能:消费、取现、查询余额、查询交易明细。联机功能:圈存、圈提、修改透支限额。
1.圈存交易。
持卡人将其在银行后台主账户上的资金划转到电子存折或电子钱包中。圈存交易必须在金融终端上联机进行。在用户卡与发卡行进行双向安全认证后,发卡行对后台主账户的金额进行扣除,用户卡对其余额进行增加。
2.消费交易。
在脱机环境下,通过终端中的PSAM卡与用户卡的双向安全认证后,扣除用户卡中的金额的过程。电子钱包无须输入PIN,电子存折必须提交PIN。交易完成后,在卡片内部文件中记录交易明细。结算时将交易信息(包含交易凭证TAC)上送给发卡行,进行账务处理。
3.圈提交易。
通过圈提交易,持卡人可以把电子存折中的部分或全部资金划回到其在银行的后台主账户上。这种交易必须在金融终端上联机进行并要求提交个人识别码(PIN)。只有电子存折应用支持圈提交易。
4.余额查询。
终端可以向卡片发送余额查询指令,卡片将电子钱包/电子存折的可用余额返回给终端,终端将余额显示给持卡人。电子存折需要提交PIN,电子钱包则不需要。
5.明细查询。
持卡人可以通过终端或其他读卡设备读取IC卡中的交易明细记录。此交易一般采用脱机方式处理。交易时需提交PIN。交易明细文件为循环记录文件,且至少应包含10条记录。
文件结构
数据文件中的数据元以记录方式或二进制的方式存储,文件结构及引用方式由文件的用途决定。除目录文件外,数据文件的内容和布局在应用规范中说明,也可由发卡方定义。
1.应用数据文件(ADF)。
应用数据文件是一个只包含其文件控制信息(FCI)中纯数据对象的文件,通过应用选择实现对其逻辑结构的访问。它的树形结构能够将数据文件与应用连接起来。同时应用数据文件之间采用“防火墙”隔离,以防止跨过应用进行非法访问,确保应用之间的独立性。
2.应用基本文件(AEF)。
应用基本文件包含有一个或多个原始基本编码规则,包括电子钱包和电子存折应用的公共应用基本数据文件即21号文件。文件大小为30个字节,其中包括8字节的发卡方标识,1字节应用类型标识,1字节发卡方应用版本,10字节应用序列号,4字节应用启用日期,4字节应用有效日期,2字节发卡方自定义FCI数据。持卡人基本文件即22号文件。文件大小为55个字节,其中包括1字节卡类型标识,1字节本行职工标识,20字节持卡人姓名,32字节持卡人证件号码,1字节持卡人证件类型。ic卡交易明细文件即24号文件。文件大小为23个字节,其中包括2字节ED或EP联机或脱机交易序号,3字节透支限额,4字节交易金额,1字节交易类型标识,6字节终端机编号,4字节交易日期,3字节交易时间。
交易指令
电子钱包/电子存折应用卡片规范定义了以下指令集:
•应用锁定(APPLICATIONBLOCK)。
•应用解锁(APPLICATIONUNBLOCK)。
•卡片锁定(CARDBLOCK)。
•外部认证(EXTERNALAUTHENTICATION)。
•取响应(GETRESPONSE)0•产生随机数(GETCHALLENGE)。
•内部认证(INTERNALAUTHENTICATION)。
•个人识别码修改/解锁(pinchange/unblock)。
•读二进制(READBINARY)。
•读记录(READRECORD。)
•选择(SELECT)。
•修改二进制(UPDATEBINARY)。
•修改记录(UPDATERECORD)0•校验(VERIFY)。
电子钱包/电子存折应用规范定义了以下指令集:
•圈存(CREDITFORLOAD)。
•圈提(DEBITFORUNLOAD)0
•消费/取现(DEBITFORPURCHASE/CASHWITHDRAW)。•修改透支限额(UPDATEOVERDRAWLIMIT)。
•圈存初始化(INITIALIZEFORLOAD)。
•圈提初始化(INITIALIZEFORUNLOAD)。
•消费初始化(INITIALIZEFORPURCHASE)。
•取现初始化(INITIALIZEFORCASHWITHDRAW)。•修改初始化(INITIALIZEFORUPDATE)。
•读余额(GETBALANCE)。
•取交易认证(GETTRANSACTIONPROVE)。
•修改个人识别码(CHANGEPIN)。
•重装个人识别码(RELOADPIN)。
(一)命令格式
命令应用协议数据单元即C-APDU,格式如表2-1所示。
表2-1C-APDU格式
其中,CLA为命令类别,INS为指令字节,P1为指令参数1,P2为指令参数2,Lc为命令数据域中存在的字节数,Data为命令发送的数据,Le为响应数据域中期望的最大数据字节数。
响应应用协议数据单元即R-APDU,格式如表2-2所示。
表2-2R-APDU格式
其中,Data为响应中接收的数据位串,SW1为命令处理状态1,SW2为命令处
理限定。
(二)交易指令
1.APPLICATIONBLOCK(应用锁定)。
APPLICATIONBLOCK命令使当前选择的应用失效,它分为临时锁定和永久
锁定两种。
当APPLICATIONBLOCK命令成功地完成应用临时锁定后,用SELECT命令选择已临时锁定的应用,将回送状态字“6283”即选择文件无效。同时回送FCI,对于T=0卡片,需要用GETRESPONSE指令取回。
当APPLICATIONBLOCK命令成功完成应用永久锁定后,此后执行所有命令,卡片将回送状态字“9303”即应用永久锁定。
2.APPLICATIONUNBLOCK(应用解锁)。
APPLICATIONUNBLOCK命令用于恢复当前应用。当APPLICATIONUNBLOCK命令成功地完成后,由APPLICATIONBLOCK命令产生的对应用命令响应的限制将被取消。
3_CARDBLOCK(卡片锁定)。
CARDBLOCK命令使卡中所有应用永久失效。当CARDBLOCK命令成功地完成后,所有后续的命令都将回送状态字“6A81”即不支持此功能,且不执行任何其他操作。
4.EXTERNALAUTHENTICATION(外部认证)。
EXTERNALAUTHENTICATION命令要求1C卡中的应用验证密码。
5.GETRESPONSE(取响应)。
该指令只用于T=0协议卡片。
当ATOU不能用现有协议传输时,GETRESPONSE命令提供了一种从卡片向接口设备传送APDU(或APDU的一部分)的传输方法。
6.GETCHALLENGE(产生随机数)。
GETCHALLENGE命令请求一个用于安全相关过程(如安全报文)的随机数。该随机数只能用于下一条指令,无论下一条指令是否使用了该随机数,该随机数都将立即失效。
7.INTERNALAUTHENTICATION(内部认证)。
INTERNALAUTHENTICATION命令提供了利用接口设备发来的随机数和自身存储的相关密钥进行数据认证的功能。
8.PINUNBLOCK(个人识别码修改/解锁)。
PINUNBLOCK命令为发卡方提供了解锁个人识别码的功能,HNUNBLOCK命令成功完成后将重置个人识别码尝试计数器的值。
9.READBINARY(读二进制)。
READBINARY命令用于读取二进制文件的内容。
10.READRECORD(读记录)。
READBINARY命令用于读取记录文件的内容。
11.SELECT(选择)。
SELECT命令通过文件名或AID来选择1C卡中的PSE、DDF或ADF,命令执行成功后,PSE、DDF或ADF的路径被设定,从ic卡的响应报文应由回送FCI组成。
12.UPDATERECORD(修改记录)。
UPDATERECORD命令通过给定数据来修改记录文件数据。
13.VERIFY(校验)。
VERIFY命令用于校验命令数据域中的个人识别码的正确性。如PIN文件位于某一应用下,当此应用被锁定时,禁止校验PIN;如PIN文件位于MF下,当应用被锁定后可以执行校验PIN命令。
14.CHANGEPIN(修改个人识别码)。
CHANGEPIN(修改个人识别码)允许持卡人将当前PIN修改为新的PIN,命令成功完成后,PIN尝试计数器复位至PIN尝试次数的上限且原个人识别码置为新的个人识别码。
15.CREDITFORLOAD(圈存)。
通过圈存交易,持卡人可将其在银行相应账户上的资金划人电子存折或电子钱包中。命令报文数据域包括4字节交易日期,3字节交易时间,4字节MAC。
16.DEBITFORPURCHASE/CASHWITHDRAW(消费/取现)。
DEBITFORPURCHASE/CASHWITHDRAW(消费/取现)命令用于消费/取现交易,命令报文数据域包括4字节终端交易序号,4字节交易日期,3字节交易时间,4字节MAC。
17.DEBITFORUNLOAD(圈提)。
DEBITFORUNLOAD(圈提)命令用于圈提交易,命令报文数据域包括4字节交易日期,3字节交易时间,4字节MAC。
18.GETBALANCE(读余额)。
GETBALANCE(查询余额)命令用于读取电子存折或电子钱包余额,实现查询余额交易,读取电子存折余额需验证个人识别码(PIN)。
19.GETTRANSACTIONPROVE(取交易认证)。
GETTRANSACTIONPROVE(取交易认证)命令提供了一种在交易处理过程中拔出并重插卡后卡片的恢复机制,如果卡片正在处理时被突然拔出,终端应提醒持卡人重新插人卡片。之后终端将检查发卡方标识和应用序列号以确认插人的卡片和前面拔出的卡片是否是同一张卡。如果是同一张卡,终端发出GETTRANSACTIONPROVE(取交易认证)命令。假如MAC和TAC返回,终端即完成交易处理。
20.INITIALIZEFORCASHWITHDRAW(取现初始化)。
INITIALIZEFORCASHWITHDRAW(取现初始化)命令用于初始化取现交易,命令报文数据域包括1字节密钥索引号,4字节交易金额,6字节终端机编号。
21.INITIALIZEFORLOAD(圈存初始化)。
INITIALIZEFORLOAD(圈存初始化)命令用于初始化圈存交易,命令报文数据域包括1字节密钥索引号,4字节交易金额,6字节终端机编号。
22.INITIALIZEFORPURCHASE(消费初始化)。
INITIALIZEFORI>URCHASE(消费初始化)命令用于初始化消费交易,命令报文数据域包括1字节密钥索引号,4字节交易金额,6字节终端机编号。
23.INITIALIZEFORUNLOAD(圈提初始化)。
INITIALIZEFORUNLOAD(圈提初始化)命令用于初始化圈提交易,命令报文数据域包括1字节密钥索引号,4字节交易金额,6字节终端机编号。
24.INITIALIZEFORUPDATE(修改初始化)。
INITIALIZEFORUPDATE(修改初始化)命令用于初始化修改透支限额交易,命令报文数据域包括1字节密钥索引号,6字节终端机编号。
25.RELOADPIN(重装个人识别码)。
RELOADPIN(重装个人识别码)命令用于发卡方重新给持卡人产生一个新的PIN,可以与原PIN相同。RELOADPIN(重装个人识别码)只能在拥有或能访问到重装PIN子密钥(DRPK)的发卡方终績上执行在成功执行RELOADPIN(重装个人识别码)命令后,ic卡将PIN尝试计数器复位且1C卡的原PIN必须设置为新的PIN值。命令报文数据域包括2字节到6字节重装的PIN值,4字节MAC。
26_UPDATEOVERDRAWLIMIT(修改透支限额)。
UPDATEOVERDRAWLIMIT(修改透支限额)命令用于修改透支限额交易。
令报文数据域包括3字节新透支限额,4字节交易日期,3字节交易时间,4字节MAC0
(三)应用维护指令
1.卡片锁定。
终端发出卡片锁定(CARDBLOCK)命令来锁定卡片。
命令的成功执行使得ic卡中的所有应用无效。在这种情况下,进行应用选择将会回送状态字“6A81”(功能不被支持)。
2.应用锁定。
终端发出应用锁定(APPLICATIONBLOCK)命令来锁定应用。
此命令的用法由发卡方自行决定。
在本部分所述的应用中,命令的成功执行导致1C卡中的电子存折/电子钱包应用无效。在这种状态下:
——选择此应用时,对SELECT命令ic卡回送状态字“6283”(选择文件无效)和文件控制信息(FCI),在T=0协议时,卡片FCI需用取响应(GETRESPONSE)命令取回。
——在应用被选择后,除以下情况外,ic卡对其他命+只回送状态字“69S5”(使用的条件不满足):
a.当用SELECT命令选择此应用或其他应用时。
b.产生随机数(GETCHALLANGE)命令。
c•应用锁定(APPLICATIONBLOCK)命令。
d•卡片锁定(CARDBOLCK)命令。
e.应用解锁(APPLICATIONUNBLOCK)命令。
如果在命令参数P2中指明永久性锁定此应用,ic卡将设置一个内部标志以表明不允许执行应用解锁(APPLICATIONUNBLOCK)命令。
此命令的执行并不改变电子存折联机交易序号和电子钱包联机交易序号的值。
3.应用解锁。
终端发出应用解锁(APPLICATIONUNBLOCK)命令来对应用解锁。
如果对某应用连续三次解锁失败,则1C卡将永久锁定此应用并回送状态字“9303”(应用永久锁定)。
如果在应用解锁(APPLICATIONUNBLOCK)命令中使用了永久锁定的选项,ic卡将回送状态字“9303”(应用永久锁定)且不再对应用解锁。
应用解锁(APPLICATIONUNBLOCK)命令的成功执行使应用重新恢复成有效状态。在此之后,该应用对所有命令的响应就像应用锁定和应用解锁没有执行过一样。
此命令的执行并不改变电子存折联机交易序号和电子钱包联机交易序号的值。
4.PIN解锁。
终端发出PIN解锁(HNUNBLOCK)命令对PIN解锁。
在命令报文中,P2取“00”值。使用DPUK对PIN数据加密。
如果PIN连续三次解锁失败,则1C卡将永久锁定此应用并回送状态字“9303”(应用永久锁定)。
5.二进制形式修改。
终端发出修改二进制(UPDATEBINARY)指令,如果三次执行此命令均告失败,则ic卡将永久锁定此应用并回送状态字“9303”(应用永久锁定)。
6.更改PIN。
更改PIN功能不需要MAC,它可以在任意支持该命令的终端上执行。
当1C卡接到此命令时,将进行以下操作:
——检查PIN尝试计数器。如果为0,表明PIN已锁定,此命令不能执行。在这种情况下,ic卡回送状态字“6983”(认证方式锁定)。
——如果PIN没有锁定,则命令中的“当前PIN”会和1C卡上存放的PIN比较。
如果二者相同,1C卡将进行以下操作:
a.将1C卡上的PIN改为命令中的新PIN。
b.将PIN尝试计数器置为PIN重试的最大次数。
——如果卡上的PIN和命令中的“当前PIN”并不相同,ic卡将进行以下操作:
a.将PIN尝试计数器减1。
b.回送状态字“63Cx”,这里x是PIN尝试计数器的新值。如达到零,则卡片自动锁定PIN。
7.重装PIN。
终端发出重装个人识别码(RELOADPIN)命令来重装PIN。
当此命令失败三次之后,应用被永久锁定。
交易状态
在应用执行过程中,卡片总是处于以下状态之在一种状态下,只有某些命令能够被执行。标准电子钱包卡片具有的状态如下:
•空闲状态。
•圈存状态。
•消费/取现状态。
•圈提状态。
•修改状态。
应用选择完成后,卡片首先进入空闲状态。当卡片从终端接收到一条命令时,它必须首先检查当前状态是否允许执行该命令。在命令执行成功后,卡片将进人另一个状态(或同一个)。如果命令执行不成功,则卡片进入空闲状态。
说明了命令执行成功后的状态变化。第一行表示命令发出时卡片的当前状态,第一列表示发出的命令,整张表给出的是在当前状态下某个命令执行成功后的状态。
阴影部分表示在卡片处于相应状态时发出此命令是无效的。在这种情况下,卡片不执行该命令,并向终端回送“6901”状态字,同时卡片的状态变为空闲。
表2-3命令执行成功原状态变化
交易密钥'
(一)多应用管理
为了独立地管理一张卡上不同应用间的安全问题,每一个应用应该放在一个单独的ADF中。亦即在应用之间应该设计一道“防火墙”以防止跨过应用进行非法访问。另外,每一个应用也不应该与个人化要求和卡中共存的其他应用规则发生冲突。
(二)密钥的独立性
用于一种特定功能(如扣款)的加密/解密密钥不能被任何其他功能所使用,包括保存在ic卡中的密钥和用来产生、派生、传输这些密钥的密钥。
密钥和个人识别码的存放。
ic卡应该能够保证用于RSA算法的非对称私有密钥或用于DES算法的对称加密密钥在没有授权的情况下,不会被泄露出来。
如果使用个人识别码,则应保证其在ic卡中的安全存放,且在任何情况下都不会被泄露。
(三)安全报文传送
安全报文传送的目的是保证数据的可靠性、完整性和对发送方的认证。数据完整性和对发送方的认证通过使用MAC来实现。数据的可靠性通过对数据域的加密来得到保证。
(四)ED/EP应用的密钥关系
以下描述的所有密钥均为双倍长DEA密钥(128比特长)。为确保密钥的安全,密钥的产生和存放都应由一个专用的安全模块来处理。表2-4、表2-5概述了支持ED和EP应用的主机与ic卡、POS设备之间的密钥关系。
表2-4ic卡中存储的共用于电子存折和电子钱包应用的密钥
表2-5 ic卡中用于电子存折应用的密钥