PBOC2.0卡的规范

COS主要分为四部分:

一、 SMARTCOS的文件系统

CPU卡是以文件方式来管理SmartCOS支持如下文件系统。

1、文件可分为MF文件、DF文件、EF文件

MF:主控文件,是整个文件系统的根,是唯一的,相当于根目录;

DF:专用文件,相当于子目录,可用于存储某个应用的所有文件,DF下不可再建立DF。一个DF可以是一个应用,也可以多个DF用于同一个应用。

EF:基本文件,用于存储各种应用数据和管理信息。

 

2EF从存储内容上分为两种:

安全基本文件:用于存放密钥,每个目录下只能建立一个安全基本文件,密钥文件不能通过文件选择来选取,密钥内容不可以读出,但在满足条件时可使用和修改。

工作基本文件:用于存放应用的实际数据,个数及大小只受空间限制。在满足条件时可读写。

 

3、基本文件结构

基本文件的结构可分为以下四种:

 

二进制文件:

数据以字节为单位进行读写,每次读写的长度不能超过110字节;可用于存储无序的数据。

 

线性定长记录文件:

每条记录为固定长度,可以通过记录号访问记录,记录范围不超过254

每条记录的长度不超过110字节,密钥文件就是线性定长记录文件,其每条记录长度固定为25外字节。可用于存放有规律定长的数据。

线性变长记录文件:

每条记录的长度可以各不相同,但最大长度不能超过110

字节,可以通过记录号来访问。

 

 

循环定长记录文件结构:

相当于一个环形记录队列,按照先进先出的原则存储,最新写入的记录号为1,上一次写入的记录号为2,以此类推,记录写满后自动覆盖最早的记录。

 

4、文件结构图

MF下可建立EFDF

DF下不可再建立DF,只能建立EF

 

KEY文件:用于控制MF下的文件的创建及读写

数据文件

密钥文件:

用于控制DF下的文件的创建及访问

数据文件(如钱包文件等)

 

 

 

5、文件空间的计算

MF的头文件长度为10个字节+文件名长度(5-16个字节)

DF的头文件长度为10个字节+文件名长度

EF文件所占空间:

定义记录和循环记录文件的空间=文件头空间(10字节)+记录数*记录长度

变长记录结构文件的空间=文件头空间(10个字节)+建立时申请的空间

密钥文件所占空间=文件头空间(10个字节)+密钥个数*25个字节

钱包文件的空间=文件头(10个字节)+文件体(17个字节)

存折文件的空间=文件头(10个字节)+文件体(20个字节)

建立了文件系统,那么怎样才能保证文件的安全,下面讲述安全系统。

 

二、SMARTCOS的安全系统

1 状态机即安全状态:

是指卡在当前所处的一种安全级别,具有(0---F)16种安全状态。复位后自动设为0,当前应用的安全状态在被成功地选择或复位后自动清0。安全状态的改变必须通过密钥的认证来实现。

**只有当前目录下的PIN核对和外部认证才能改变安全状态。

 

2 安全属性即访问权限

访问权限是在建立文件的时候指定的。

它是一个区间的概念,例如,描述一个文件的读权限为XY,则表示当前应用的状态机(安全状态)M必须满足X=M=Y。如读权限设为2F,就表示当前的状态机(安全状态)达到2及以上就可以读这个文件。

 

3 密钥与安全状态的关系

每个密钥在建立的时候都定义了后续状态,即通过密钥认证后能达到的安全状态,在各种密钥中,只有PIN认证和外部认证才能改变当前目录的安全状态。

 

4、安全状态与访问权限的关系

(安全状态)

使用权限--------密钥的使用------------后续状态------------文件读写取限

 

5、安全状态只在当前目录下有效,一旦选择别的应用,状态机自动跳到最低权限0。各个目录之间的安全都是独立的。

 

 

 

四、复位应答

 

符号 字节内容 内容解释

TS 3B 正向约定

T0 6C TB1TC1存在,历史字符为12

TB1 00 无需额外的编程电压

TC1 02 2个额外的保护时间

T1-TC XX 历史字符

SMARTCOS 历史字符的特定意义:

符号 字节内容 内容解释

T1 XX SMARTCOS 的版本号

T2 XX 卡状态字节

T3 86 明华公司IC卡制造机构标识号

T4 38

T5-TC XX 卡唯一序号

卡状态字节描述如下:

B7 B6 B5 B4 B3 B2 B1 B0 状态

011 XXX XXX 001 XXX XXX XXX XXX 该卡已初始化,并成功该卡未被初始化该卡初始化过程被锁

0 0 0 0 0 0 X X 该卡未个人化

0 0 1 0 X X X X 该卡个人化未结束

0 1 1 0 X X X X 该卡个人化成功

0 0 0 1 X X X X 该卡个人化没有成功,卡被锁

0 1 1 1 X X X X 该卡个人化成功,卡被锁

 

 

卡片状态字节中有关于初始化、个人化的概念,我们从卡片的生命周期来看这两个概念,卡片的生命周期一般包括如下几部分:

 

芯片 芯片生产商

 

掩膜COS 芯片生产商

 

封装成卡片 卡片生产商

 

卡片的初始化(COS启用) 卡片生产商

传输密码保护

卡片的个人化 卡片发行商

 

卡片的使用 卡片的使用者

 

卡片的回收 卡片发行商

 

初始化过程就是激活COS,定义COS版本,经过这个过程COS才可以使用。

个人化过程是指建立文件,写入用户数据等操作。

卡片生产商在进行初始化后交付卡片发行商使用时,有传输密码保护。

 

IC卡必须支持T=0T=1的协议,但不是同时支持这两种协议,而终端则必须同时支持T=0T=1的协议。

T=0通讯协议是异步半双工字符传输协议;

T=1通讯协议是异步半双工块传输协议;

ISO7816-3标准中,具体规定了这两种协议;

IC卡所用的协议在TD1中指定,如果在复位应答信息中没有TD1,则表示用T=0的协议进行通讯。在复位应答后,IC卡和终端之间即用IC卡指定的协议进行通讯。

 

五、 指令解析

在此,我们以一个电子钱包的应用为例,讲解SmartCOS的指令。

1、文件结构:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在人行规范中定义了如下文件结构:

1)电子存折ED/电子钱包EP应用的公共应用基本数据文件

文件结构:

文件标识(SFI 21’(十进制)

文件类型 透明

文件大小 30

文件存取控制 =自由 改写=需要安全信息

字节 数据元 长度

1-8 发卡方标识 8

9 应用类型标识 1

10 应用版本 1

11-20 应用序列号 10

21-24 应用启用日期 4

25-28 应用有效日期 4

29-30 发卡方自定义FCI数据 2

 

 

 

 

2)电子存折ED/电子钱包EP应用的持卡者基本数据文件

 

文件标识(SFI 22’(十进制)

文件类型 透明

文件大小 39

文件存取控制 =自由 改写=需要安全信息

字节 数据元 长度

1 卡类型标识 1

2 本行职工标识 1

3-22 持卡人姓名 20

23-38 持卡人证件号码 16

39 持卡人证件类型 1

 

3)电子存折ED交易明细文件

 

文件标识(SFI 24’(十进制)

文件类型 循环

文件存取控制 =PIN保护

改写=不允许

记录大小 23

字节 数据元 长度

1-2 EDEP联机或脱机交易序号 2

3-5 透支限额 3

6-9 交易金额 4

10 交易类型标识 1

11-16 终端机编号 6

17-20 交易日期(终端) 4

21-23 交易时间(终端) 3

 

2、安全设计如下:

1 核对口令后可以进行外部认证;

2 01号外部认证密钥用于控制电子钱包的圈存;

3 02号外部认证密钥用于控制基本文件的修改、密钥的修改;

4 核对口令后可以进行消费。

 

KEY文件安装如下密钥:

KEY类型 标识KID 使用权限 后续状态 KEY作用描述

0B 01 0F 1 个人密码PIN,用于个人密码校验

08 01 11 2 外部认证密钥,用于电子钱包圈存

08 02 1F F 外部认证密钥,用于基本文件的修改、密钥的修改

01 01 22 圈存密钥,用于产生圈存MAC

00 02 01 电子钱包消费密钥,用于产生钱包消费MAC

02 01 03 TAC密钥,用于产生圈存、消费、取现、修改透支限额的TAC

05 01 33 应用维护密钥,用于产生应用锁定、应用解锁、卡片锁定、卡片锁定和读、更新二进制、记录命令的MAC

 

3、指令序列:

1 发卡过程,在卡上建立文件及安装密钥

[Create MF] APDU命令:80(CLA) e0(INS) 00(P1) 00(P2) 18(Lc) ff ff ff ff ff ff ff ff (8字节传输代码) ff (MF下建立文件的安全属性) 01(目录文件的短文件标识符) 31 50 41 59 2e 53 59 53 2e 44 44 46 30 31(创建的文件名称)

 

[Create DF] APDU命令:80CLAE0INS01P1 00P2 0D Lc信息长度)2F 01(文件标识符)ff(建立文件权限) 00COS保留) A0 00 00 00 03 86 98 07 01ADF名称)

 

建立DF下密钥文件[Create File] APDU命令:80CLA E0INS02P1 00P2 07(文件信息长度) 6F 02(密钥文件标识 05(文件类型) FF(增加新密钥的权限)00COS保留) 09(记录数) 19(记录长度):

 

安装个人密码PIN [Write Key] APDU命令:80CLA E8INS 00P1 00P2 0A (密钥信息长度)01(密钥标识符)01(密钥版本号) 00(算法标识)0B(密钥类型)0F(使用权限) 01(后续状态)2F(修改权限)33 (错误计数器)12 34(个人密码)

 

安装外部认证密钥(DEAK[Write Key] APDU命令:80 CLAE8INS 00P1 00P2 18(密钥信息长度) 01(密钥标识符) 01(密钥版本号) 00(算法标识) 08(密钥类型) 11(使用权限) 02(后续状态) FF(修改权限) 33 (错误计数器)XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX(密钥内容)

 

安装外部认证密钥(DEAK[Write Key] APDU命令:80 CLAE8INS 00P1 00P2 18(密钥信息长度) 02(密钥标识符) 01(密钥版本号) 00(算法标识) 08(密钥类型) 1F(使用权限) 0F(后续状态) FF(修改权限) 33 (错误计数器)XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX(密钥内容)

 

。安装电子钱包EP的消费密钥DPK[Write Key] APDU命令:80 CLAE8INS 00P1 00P2 18(密钥信息长度) 02(密钥标识符) 01(密钥版本号) 00(算法标识) 00(密钥类型) 01(使用权限) 00(后续状态) FF(修改权限) 00 (错误计数器)XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX(密钥内容)

 

安装电子钱包的圈存密钥DLK [Write Key] APDU命令:80 CLA E8INS 00P1 00P2 18(密钥信息长度) 01(密钥标识符) 01(密钥版本号) 00(算法标识) 01(密钥类型) 22(使用权限) 00(后续状态) FF(修改权限) 00 (错误计数器)XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX(密钥内容)

 

。安装消费/取现中用来生成TAC的密钥DTK[Write Key] APDU命令:80 CLAE8INS 00P1 00P2 18(密钥信息长度) 01(密钥标识符) 01(密钥版本号) 00(算法标识) 07(密钥类型) 0F(使用权限) 00(后续状态) FF(修改权限) 00 (错误计数器)XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX(密钥内容)

 

安装应用维护密钥DAMK[Write Key] APDU命令:80 CLAE8INS 00P1 00P2 18(密钥信息长度) 01(密钥标识符) 01(密钥版本号) 00(算法标识) 05(密钥类型) 0F(使用权限) 00(后续状态) FF(修改权限) 00 (错误计数器)XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX(密钥内容)

 

 

建立公共应用基本文件[Create File] APDU命令:80CLA E0INS 02P1 00P2 07Lc信息长度) 00 15 (文件标识符)00 (二进制文件类型)0F(读权限)FF(更新权限)00 1e(文件长度)

 

建立持卡者基本数据文件[Create File] APDU命令:80CLA E0INS 02P1 00P2 07(文件信息长度) 00 16 (文件标识符)00(二进制文件类型)0F(读权限)FF(更新权限) 00 27(文件长度)

 

建立交易明细文件[Create File] APDU命令:80CLA E0INS 02P1 00 P207 (文件信息长度)00 18(文件标识符) 03(循环记录文件类型)1F(读权限)10(更新权限)0a 17(文件长度)

 

写公共应用基本数据文件[Update Binary] APDU命令:00CLAD6INS95P100P21E(信息长度)A0 00 00 00 03 00 00 01(发卡方标识)03(应用类型标识)01(应用版本) 00 00 19 98 08 15 00 00 00 01(应用序列号) 20 00 10 01 (应用启用日期)20 02 12 31(应用有效日期)55 66 (发卡方自定义FCI数据)

 

写卡持有者基本数据文件[Update Binary] APDU命令:00CLA D6INS 96P1 00P2 27(文件信息长度) 00(卡类型标识) 00(本行职工标识) 53 41 4d 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00(持卡人姓名) 31 31 30 31 30 38 37 30 30 33 31 37 31 38 39 00(持卡人证件号码) 00 (持卡人证件类型)

 

建立电子钱包EP文件[Create File] APDU 命令:80CLAE0INS02P100P207Lc00 01(文件标识符)06(文件类型)00(权限100(权限200LEN100LEN2

 

结束建立应用(DF[Create End] APDU命令:80CLA E0INS 01P1 01P2 02 (文件标识符长度)2F 01(文件标识符)

 

结束建立MF [Create End] APDU命令:80CLA E0INS 00P1 01P2 02 (文件标识符长度)3F 00(文件标识符)

 

2 交易过程

在此,我们以圈存过程及消费过程为例:

A 圈存——将金额存入卡中

在圈存前必须先校对个人口令及01号外部认证;

 

选择应用[Select File]APDU命令:00CLAA4INS00P100P202(长度)2F 01(文件标识符)

 

校验PIN[Verify] APDU命令:00CLA 20INS 00P1 00P2 02(长度) 12 34(PIN)

 

外部认证:[

取随机数[Get Challenge] APDU命令:00CLA 84INS 00P1 00P2 08

 

01号外部认证密钥对随机数进行3DES加密;

 

外部认证[External Authentication] APDU命令:00CLA 82INS 00P1 01

P2 08(长度)XX XX XX XX XX XX XX XX (加密后的随机数)

]

 

圈存:[

初始化圈存[Initalize For Load] APDU命令:80CLA 50INS 00P1 02P2 0B(长度) 01(密钥标识符) 00 00 10 00(交易金额) 00 00 00 00 00 01(终

端机编号)

 

如果初始化圈存成功,则应答数据域内容:

说明 长度(字节)

电子存折或电子钱包旧余额 4

电子存折或电子钱包联机交易序号 2

密钥版本号 1

算法标识 1

伪随机数ICC 4

MAC1 4

 

 

用圈存对应答内容(4字节伪随机数ICC+2字节电子存折或电子钱包联机交易序号+80 00)进行3DES加密生成过程密钥;

 

圈存[Credit For Load]APDU命令:80CLA52INS00P100P20BLC

YY YY MM DD (交易日期)HH MM SS (交易时间)XX XX XX XXMAC2

 

MAC2的计算:

初始值:00 00 00 00 00 00 00 00

密钥:上面生成的过程密钥

生成MAC2的数据:00 00 10 004字节交易金额)02(交易类型标识)00 00 00 00 00 016字节终端机编号)YY YY MM DD (交易日期)HH MM SS (交易时间)

 

如果圈存交易成功,电子钱包文件的联机交易序号加1,交易金额加在电子钱包的余额上,并且在交易明细文件中增加一条记录。

 

B、消费过程:

在消费之前先校验PIN

校验PIN[Verify] APDU命令:00CLA 20INS 00P1 00P2 02(长度) 12 34(PIN)

 

初始化消费[Initialize For Purchase] APDU命令:80CLA 50INS 01P1 02P2 0B(长度) 01(消费密钥标识符)00 00 00 01(消费金额)00 00 00 00 00 01(终端机编号)

 

如果初始化消费成功,则应答数据域内容:

说明 长度(字节)

电子存折或电子钱包旧余额 4

电子存折或电子钱包联机交易序号 2

透支限额 3

密钥版本号 1

算法标识 1

伪随机数ICC 4

 

消费[Debit For Purchase]APDU命令:80CLA54INS01P100P20FLC

YY YY YY YY (终端交易序号)YY YY MM DD(终端交易日期)HH MM SS (交易时间)XX XX XX XXMAC1

 

用消费/取现密钥对(4字节伪随机数ICC+2字节电子存折或电子钱包联机交易序号+终端交易序号的最后2个字节))进行3DES加密生成过程密钥;

 

MAC1的计算:

初始值:00 00 00 00 00 00 00 00 008个字节)

密钥:过程密钥

生成MAC码的数据:4字节交易金额+1字节交易类型标识+6字节终端机编号+4字节终端交易日期+3字节终端交易时间

 

如果消费交易成功,电子钱包文件的联机交易序号加1,电子钱包减去交易金额,并且在交易明细文件中增加一条记录。

 

六、其它指令解析

以下指令在使用过程中有较多的疑问,解释如下:

1、密钥的密文安装过程:

3.2版本中对密钥的密文安装会有所不同,它的过程如下:

1)建立密钥文件:

建立密钥文件时,有关的文件信息如下表:

Lc 有关文件信息

07 文件标识符 (2字节) 文件类型 (1字节) 权限1 (1字节) 权限21字节) Len1(1字节) Len2 (1字节)

权限1指明增加新密钥的权限,权限2指明用何种方式安装密钥。权限2设为80h,表示以密文方式安装。

2)使用上一层的应用主控密钥(SmartCOS 3.2中规定:密钥标识为01的外部认证密钥为应用主控密钥)对密钥信息进行加密(密钥信息为:明文密钥信息长度+密钥信息+80 00 00 00 00 00 00),对密钥信息的加密方式按标准的Triple DESSingle DES,如果密钥为16字节,则用Triple DES加密,如果为8字节,则用Single DES加密。

3)生成MAC码,初始值为:4个字节的随机数+00 00 00 00,生成MAC码的数据为:5个命令头+加密后的密钥信息。

4)其它密钥的密文安装都使用应用主控密钥加密安装。

5)密文安装MF下的应用主控密钥时,则使用卡片的传输密钥进行安装。

 

2、采用安全报文写二进制文件

1 在建立二进制文件时,文件类型的第4位为1表示采用安全报文。

2LC为写入的字节数+4

3)安全报文(MAC)的计算:

初始值为:4个字节的随机数+00 00 00 00

密钥为:应用维护密钥

 

代码

CLA 04

INS D6

P1 Xx

P2 Xx

Lc 写入数据长度+4

DATA 写入数据+4字节MAC

 

8PIN Unblock个人密码的解锁

命令报文编码如下:

代码

CLA 84

INS 24

P1 00

P2 01-解锁个人密码

Lc 0C

DATA 加密的个人密码数据元+报文鉴别代码(MAC)数据元,使用PIN解锁密钥。

其中:

加密的个人密码数据元:

PIN解锁密钥对 PIN明文长度+PIN+80 00(补足8的倍数)进行加密生成

MAC的生成:

初始值:4字节随机数+00 00 00 00

密码:PIN解锁密钥

生成MAC码的数据:CLA+INS+P1+P2+LC+加密的PIN8字节)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值