PBOC30学习.docx
《PBOC30学习.docx》由会员分享,可在线阅读,更多相关《PBOC30学习.docx(57页珍藏版)》请在冰点文库上搜索。
PBOC30学习
PBOC3.0学习
1、标准借贷记联机流程指令分析
2、标准借贷记脱机流程指令分析
3、电子现金余额重置流程指令分析
4、QPBOC脱机消费流程指令分析
目录:
1、PBOC3.0卡片指令集3
1.1、基本指令3
1.1.1、APPLICATIONBLOCK指令3
1.1.2、APPLICATIONUNBLOCK指令4
1.1.3、CARDBLOCK指令4
1.1.4、EXTERNALAUTHENTICATION指令5
1.1.5、GETCHALLENGE指令6
1.1.6、GETRESPONSE指令7
1.1.7、INTERNALAUTHENTICATION指令7
1.1.8、PINCHANGE/UNBLOCK指令8
1.1.9、READRECORD指令10
1.1.10、SELECT指令10
1.1.11、UPDATERECORD指令13
1.1.12、VERIFY指令13
1.1.13、GENERATEAC指令14
1.1.14、GETDATA指令16
1.1.15、GETPROCESSINGOPTION指令17
1.1.16、PUTDATA指令19
1.2、卡片个人化指令19
1.2.1、INITIALIZEUPDATE指令20
1.2.2、PERSONALAUTHENTICATE指令21
1.2.3、STOREDATA指令22
1.3、应用管理指令23
1.3.1、新增应用指令23
1.3.2、删除应用指令24
1.3.3、格式化应用指令(暂不支持)25
1.3.4、PSE目录数据文件追加说明25
1.3.5、PSE/PPSE文件控制信息更新指令26
1.3.6、PSE/PPSE删除应用入口信息27
1.3.7、PSE/PPSE修改应用优先级27
1.4、小额扩展应用专用指令28
1.4.1、READCAPPDATA命令28
1.4.2、UPDATECAPPDATACACHE命令29
1.4.3、APPENDRECORD(新增记录)命令31
1.4.4、GETTRANSPROVE命令32
2、PBOC3.0指令实例说明33
范围33
标准借记贷记联机33
标准借记贷记脱机35
电子现金余额重置35
QPBOC脱机消费36
1、PBOC3.0卡片指令集
本卡片支持《中国金融集成电路(IC)卡第五部分借记贷记应用卡片规范》附录B中列举的所有指令,除此之外,还增加了部分个人化指令和《中国金融集成电路(IC)卡规范第14部分:
非接触式IC卡小额支付扩展应用规范》中的扩展应用专用指令。
1.1、基本指令
1.1.1、APPLICATIONBLOCK指令
功能描述:
此命令是使当前被选择的应用无效的一个发卡行脚本命令。
在成功的APPLICATIONBLOCK命令之后:
——对选择(SELECT)命令,无效的应用应该返回状态字节“选择文件无效”(SW1SW2=“6283”);
——对生成应用密文(GENERATEAC)命令,一个无效的应用应该返回AAC代替AC作为响应。
——发卡行脚本命令中除APPLICATIONUNBLOCK命令可执行外,其他应返回状态字节6985
命令格式:
数据
描述
CLA
84
INS
1E
P1
00
P2
00
LC
04
DATA
4字节MAC值
LE
无
命令报文数据域:
命令报文的数据域中包含了根据JR/T0025.7中描述的安全报文格式编码的MAC数据。
响应报文返回的处理状态码:
SW1SW2
含义
9000
成功
6A81
卡片锁定,不支持此功能
6985
条件不满足
6988
MAC错误
6A86
P1P2参数错误
6E00
CLA指令类别错误
6700
数据域长度错误
1.1.2、APPLICATIONUNBLOCK指令
功能描述:
此命令是一个发卡行脚本命令,用来恢复当前被选择的应用。
当APPLICATIONUNBLOCK命令成功执行后,此前通过应用锁定附加在该应用上的限制被解除。
该命令一般只允许在特殊设备上执行。
命令格式:
数据
描述
CLA
84
INS
18
P1
00
P2
00
LC
04
DATA
MAC码
LE
无
命令报文数据域:
命令报文的数据域中包含了根据JR/T0025.7中描述的安全报文格式编码的MAC数据。
响应报文返回的处理状态码:
SW1SW2
含义
9000
成功
6A81
卡片锁定,不支持此功能
6985
条件不满足
6988
MAC错误
6A86
P1P2参数错误
6E00
CLA指令类别错误
6700
数据域长度错误
1.1.3、CARDBLOCK指令
功能描述:
此命令是一个发卡行脚本命令,用来永久地停止IC卡中所有的应用。
CARDBLOCK命令停止IC卡中所有的应用,包括那些被隐式选中的应用。
当一个CARDBLOCK命令成功后,所有随后的选择命令都将收到状态字节为“功能不支持”(SW1SW2=“6A81”)的反馈,并且不执行任何其它动作。
命令格式:
数据
描述
CLA
84
INS
16
P1
00
P2
00
LC
04
DATA
MAC码
LE
无
命令报文数据域:
命令报文的数据域中包含了根据JR/T0025.7中描述的安全报文格式编码的MAC数据。
响应报文返回的处理状态码:
SW1SW2
含义
9000
成功
6A81
卡片锁定,不支持此功能
6985
条件不满足
6988
MAC错误
6A86
P1P2参数错误
6E00
CLA指令类别错误
6700
数据域长度错误
1.1.4、EXTERNALAUTHENTICATION指令
功能描述:
要求IC卡中的应用认证一个密文。
是卡片对发卡行进行身份认证的一种途径。
一次交易中只执行最多一次外部认证命令。
该命令CLA=0x80时,为个人化建立安全通道时使用。
请参见个人化指令。
命令格式:
数据
描述
CLA
00
INS
82
P1
00
P2
00
LC
0A
DATA
发卡行认证数据
LE
无
命令报文的数据域:
按照JR/T0025的规定,本命令报文的数据域包含标签为'91'的值域,编码如下:
——前8个字节为必选的授权响应密文ARPC;
——附加的1-8个可选字节是专有数据。
在JR/T0025中,发卡行认证数据包括下列两个数据元:
——ARPC(8字节);
——授权响应码(2字节)。
响应报文返回的处理状态码:
SW1SW2
含义
9000
成功
6A81
卡片锁定,不支持此功能
6985
条件不满足
6300
验证失败
6A86
P1P2参数错误
6E00
CLA指令类别错误
6700
数据域长度错误
1.1.5、GETCHALLENGE指令
功能描述:
从卡片中获取一个随机数,支持4字节和8字节两种随机数。
命令格式:
数据
描述
CLA
00
INS
84
P1
00
P2
00
LE
04或08
响应报文:
卡片生成LE指定长度的随机数。
该随机数仅对下一个发出的命令有效。
响应报文返回的处理状态码:
SW1SW2
含义
9000
成功
6A81
卡片锁定,不支持此功能
6A86
P1P2参数错误
6E00
CLA指令类别错误
6700
数据域长度错误
1.1.6、GETRESPONSE指令
功能描述:
从卡片中取出前一条命令执行成功后等待返回的数据。
接触式卡片,应用锁定状态时选择应用,返回的文件控制信息,也是通过该指令获取。
命令格式:
数据
描述
CLA
00
INS
C0
P1
00
P2
00
LE
所取数据的长度
响应报文:
卡片需要取回的LE指定长度数据。
1.1.7、INTERNALAUTHENTICATION指令
功能描述:
该命令引发卡片使用从终端收到的随机数、数据和卡片中储存的
私钥来计算出“签名动态应用数据”的过程
命令格式:
数据
描述
CLA
00
INS
88
P1
00
P2
00
LC
认证数据的长度
DATA
认证数据的内容
LE
加密结果:
LC字节
命令报文的数据域:
命令报文的数据域包括该应用专有的与认证有关的数据。
它是根据JR/T0025.7中定义的动态数据认证数据对象列表(DDOL)规则来编码的。
为了确保内部认证(INTERNALAUTHENTICATE)命令返回数据在256字节限制内,签名的动态应用数据加上可选的TLV格式编码的长度应该限制在JR/T0025.7中定义的范围内。
响应报文的数据域:
响应报文的数据域包括一个BER-TLV编码数据对象。
这个数据对象的编码格式为:
响应报文中的数据对象是一个标签为'80'的基本数据对象。
数据域中包括签名动态应用数据。
签名动态应用数据按照JR/T0025.7中的规则定义。
1.1.8、PINCHANGE/UNBLOCK指令
功能描述:
是一个发卡行脚本命令。
它的目的是让发卡行解锁PIN或同时既改变PIN,也解锁PIN。
当PINCHANGE/UNBLOCK命令成功后,卡片将执行下列功能:
——PIN尝试记数器的值将复位到PIN尝试限制数(最大值);
——如果有请求,脱机PIN值将被设置为新的PIN值。
为了保密,如果本命令包含有PIN数据,则该数据应该加密。
注:
脱机PIN是存储在卡中与应用相关的PIN,它用来验证在验证命令中传来的PIN数据。
命令格式:
数据
描述
CLA
84
INS
24
P1
00
P2
00、01、02
LC
数据字节数
DATA
加密PIN数据成员(如果存在)和MAC数据
当P2为“00”,PIN尝试计数器复位。
当P2为“01”,PIN尝试计数器复位同时PIN修改,PIN修改时使用当前的PIN。
当P2为“02”,PIN尝试计数器复位同时PIN修改,PIN修改是不使用当前的PIN。
命令报文的数据域:
本命令报文的数据域包括PIN加密数据,后面可以加上4到8字节的安全报文MAC数据。
如果P2等于‘00’,参考PIN解锁,PIN尝试计数器被复位到PIN尝试限制数。
命令数据域只包含MAC。
因为PIN修改/解锁命令中不包含新的PIN值,所以PIN不会更新。
P2等于‘01’或‘02’的值的处理步骤见下面描述。
A、使用当前PIN修改PIN值
如果命令中的P2参数等于“01”,命令数据域包括PIN加密数据和MAC,PIN加密数据的产生过程按照下列步骤进行:
步骤1:
发卡行确定用来给数据进行加密的安全报文加密主密钥,并分散生成卡片的安全报文加密子密钥:
ENCUDK-A和ENCUDK-B;
步骤2:
生成过程密钥Ks;
步骤3:
生成8字节PIN数据块D3:
a)生成一个8字节数据块D1;
字节1
字节2
字节3
字节4
字节5
字节6
字节7
字节8
0
0
0
0
0
0
0
0
ENCUDK-A的最右边4个字节
b)生成第2个8字节数据块D2;
字节1
字节2
字节3
字节4
字节5
字节6
字节7
字节8
0
N
P
P
P
P
P/F
P/F
P/F
P/F
P/F
P/F
P/F
P/F
F
F
N:
新PIN的数字个数(16进制)
P:
新PIN值,长度4-12个数字(2-6字节)
c)D1和D2执行异或得到D3。
步骤4:
使用当前PIN生成8字节数据块D4;
字节1
字节2
字节3
字节4
字节5
字节6
字节7
字节8
P
P
P
P
P/0
P/0
P/0
P/0
P/0
P/0
P/0
P/0
0
0
0
0
步骤5:
将数据块D3和D4执行异或得到D;
步骤6:
用Ks对D进行加密,得到PIN加密数据。
B、不使用当前PIN修改PIN值
如果命令中的P2参数等于“02”,命令数据域包括PIN加密数据和MAC,PIN加密数据的产生过程按照下列步骤进行:
步骤1:
发卡行确定用来给数据进行加密的安全报文加密主密钥,并分散生成卡片的安全报文加密子密钥:
ENCUDK-A和ENCUDK-B;
步骤2:
生成过程密钥Ks;
步骤3:
生成8字节PIN数据块D3:
a)生成一个8字节数据块D1;
字节1
字节2
字节3
字节4
字节5
字节6
字节7
字节8
0
0
0
0
0
0
0
0
ENCUDK-A的最右边4个字节
b)生成第2个8字节数据块D2;
字节1
字节2
字节3
字节4
字节5
字节6
字节7
字节8
0
N
P
P
P
P
P/F
P/F
P/F
P/F
P/F
P/F
P/F
P/F
F
F
N:
新PIN的数字个数(16进制);
P:
新PIN值,长度4-12个数字(2-6字节)。
c)D1和D2执行异或得到D。
步骤4:
用Ks对D进行加密,得到PIN加密数据。
1.1.9、READRECORD指令
功能描述:
读记录(READRECORD)命令从一个线性文件中读一条文件记录。
从IC卡返回的响应中将包含这条被读出的记录。
命令格式:
数据
描述
CLA
00
INS
B2
P1
记录号
P2
见下表
LC
无
DATA
无
LE
‘00’
P2:
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
描述
X
X
X
X
X
-
-
-
SFI
-
-
-
-
-
1
0
0
读取P1指定的记录
响应报文数据域:
任何成功的读记录(READRECORD)命令的响应报文的数据域都包含读出的记录值。
对于在1-10范围内的SFI,这个记录是一个BER-TLV结构数据对象。
它按照下表编码。
‘70’
长度
记录模板
对于不在1-10范围内的SFI的读记录命令响应报文,不在JR/T0025的描述范围内。
1.1.10、SELECT指令
功能描述:
通过文件名或AID来选择IC卡中的PSE、DDF或ADF。
成功执行该命令设定PSE、DDF或ADF的路径。
后续命令作用于与用SFI选定的PSE、DDF或ADF相联系的AEF。
从IC卡返回的响应报文包含回送FCI。
命令格式:
数据
描述
CLA
00
INS
A4
P1
见下表
P2
见下表
LC
‘05’-‘10’
DATA
所选择的PSE名、DF名或AID
LE
无
P1:
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
描述
0
0
0
0
0
1
0
0
通过文件名(AID)选择DF,具体方式见P2
P2:
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
描述
0
0
0
0
0
0
0
0
第一个或仅有一个
0
0
0
0
0
0
1
0
下一个
回送的FCI信息格式:
PSE的FCI:
TAG
值
存在方式
6F
FCI模板(包含下面全部)
必选
84
DF名
必选
A5
FCI专用数据(包含下面全部)
必选
88
目录基本文件的SFI
必选
5F2D
首选语言
可选
‘9F11’
发卡行代码表索引
可选
‘BF0C’
发卡行自定义数据(FCI)
可选
DDF的FCI:
TAG
值
存在方式
6F
FCI模板(包含下面全部)
必选
84
DF名
必选
A5
FCI专用数据(包含下面全部)
必选
88
目录基本文件的SFI
必选
‘BF0C’
发卡行自定义数据(FCI)
可选
ADF的FCI:
TAG
值
存在方式
6F
FCI模板(包含下面全部)
必选
84
DF名
必选
A5
FCI专用数据(包含下面全部)
必选
‘50’
应用标签
可选
‘87’
应用优先指示符
可选
‘9F38’
PDOL
可选
‘5F2D’
首选语言
可选
‘9F11’
发卡行代码表索引
可选
‘9F12’
应用优先名称
可选
‘BF0C’
发卡行自定义数据(FCI)
可选
‘9F4D’
日志入口(属于发行自定数据)
可选
PPSE的FCI:
标签
值
长度
出现条件
“6F”
FCI模板
变长
M
“84”
“2PAY.SYS.DDF01”
0E
M
“A5”
FCI专用模板
变长
M
“BF0C”
FCI发卡行自定义数据
变长
M
“61”
目录入口
变长
M
“4F”
DF名(AID)
07-08
M
“50”
应用标签
04-10
O
“87”
应用优先指示器
01
C*
“61”
目录入口
变长
M
“4F”
DF名(AID)
07-08
M
“50”
应用标签
04-10
O
“87”
应用优先指示器
01
C*
“61”
目录入口
变长
M
“4F”
DF名(AID)
07-08
M
“50”
应用标签
04-10
O
“87”
应用优先指示器
01
C*
…
…
…
…
1.1.11、UPDATERECORD指令
功能描述:
用来修改文件中一条记录的内容,修改的内容在命令数据域中。
命令格式:
数据
描述
CLA
04
INS
DC
P1
记录号
P2
见下表
LC
更新记录+MAC的长度
DATA
记录数据和MAC
LE
无
P2:
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
描述
X
X
X
X
X
-
-
-
使用SFI选择EF
-
-
-
-
-
1
0
0
更新P1指定的记录
命令报文的数据域:
数据域中是要修改的新记录内容。
MAC长度为4到8字节。
算法见借记贷记应用卡片规范附录C。
1.1.12、VERIFY指令
功能描述:
卡片将命令报文数据域内的交易PIN数据和与该应用相关的参考PIN数据进行比较验证。
命令格式:
数据
描述
CLA
00
INS
20
P1
00
P2
00/80
LC
08
DATA
PIN值
LE
无
命令报文数据域:
明文脱机PIN(P2=80)数据块按如下格式组织。
C
N
P
P
P
P
P/F
P/F
P/F
P/F
P/F
P/F
P/F
P/F
F
F
其中:
名称
值
C
控制域值为
0010
N
PIN
长度值在
P
PIN
数字值在
P/F
PIN/填充位由
PIN
F
填充位值为
1111
P2=‘00’表示没有使用特别的限定符。
IC卡中处理验证命令的应用应该知道怎样明白无误的找到PIN数据。
1.1.13、GENERATEAC指令
功能描述:
用于传送交易相关数据到IC卡,IC卡计算并且返回一个密文。
生成应用的密文类型如下表:
类型
意义
应用认证密文(AAC)
拒绝交易
授权请求密文(ARQC)
请求联机授权
交易证书(TC)
批准交易
由IC卡返回的密文可能由于IC卡的内部处理过程而与命令报文中要求的密文不一样。
命令格式:
数据
描述
CLA
80
INS
AE
P1
引用控制参数
P2
00
LC
Var.
DATA
交易相关数据
LE
‘00’
GENERATEAC引用控制参数表:
b8
b7
B6
b5
b4
b3
b2
b1
意义
0
0
AAC
0
1
TC
1
0
ARQC
1
1
保留
0
未明确请求复合动态数据认证/应用密文生成
1
请求复合动态数据认证/应用密文生成
x
x
x
x
x
保留
命令报文数据域:
CDOL1/CDOL2数据列表中列出的终端数据对象连接而成。
各数据对象之间没有分隔符(标签和长度)。
它用来生成应用密文。
在发GAC命令之前,终端必须从卡片中读出CDOL列表,并且GAC命令数据域中的终端数据对象的连接顺序必须与他们在CDOL列表中的顺序一致。
响应报文数据域:
响应报文的数据域包含一个BER-TLV编码的数据对象。
这个数据对象需要按照以下两种格式之一编码。
格式1:
响应报文中的数据对象是一个标签为'80'的基本数据对象。
数据域由下表所示的数据对象连接而成,各数据对象之间没有分隔符(标签和长度)。
表GENERATEAC响应报文数据域格式1
值
存在性
密文信息数据
必备
应用交易计数器(ATC)
必备
应用密文(AC)
必备
发卡行应用数据
可选
格式2:
响应报文的数据对象是一个标签为'77'的结构数据对象。
数据域中可以包含多个BER-TLV编码对象,但是应包括密文信息数据、应用交易序号和由IC卡计算出的密文(可以是应用密文或专有密文)。
如果卡片不执行CDA,命令的响应报文数据域中的数据对象按照格式1编码。
如果卡片执行CDA,命令的响应报文数据域中的数据对象按照格式2编码。
表B.9密文信息数据编码
b8
b7
B6
b5
b4
b3
b2
b1