4、安全状态与访问权限的关系 (安全状态)
使用权限--------密钥的使用------------后续状态------------文件读写取限
5、安全状态只在当前目录下有效,一旦选择别的应用,状态机自动跳到最低权限0。各个目录之间的安全都是独立的。
四、复位应答
符号 字节内容 内容解释 TS 3B 正向约定
T0 6C TB1和TC1存在,历史字符为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=0或T=1的协议,但不是同时支持这两种协议,而终端则必须同时支持T=0和T=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 ED或EP联机或脱机交易序号 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命令:80(CLA)E0(INS)01(P1) 00(P2) 0D (Lc信息长度)2F 01(文件标识符)ff(建立文件权限) 00(COS保留) A0 00 00 00 03 86 98 07 01(ADF名称)
建立DF下密钥文件[Create File] APDU命令:80(CLA) E0(INS)02(P1) 00(P2) 07(文件信息长度) 6F 02(密钥文件标识 )05(文件类型) FF(增加新密钥的权限)00(COS保留) 09(记录数) 19(记录长度):
安装个人密码PIN [Write Key] APDU命令:80(CLA) E8(INS) 00(P1) 00(P2) 0A (密钥信息长度)01(密钥标识符)01(密钥版本号) 00(算法标识)0B(密钥类型)0F(使用权限) 01(后续状态)2F(修改权限)33 (错误计数器)12 34(个人密码)
安装外部认证密钥(DEAK)[Write Key] APDU命令:80 (CLA)E8(INS) 00(P1) 00(P2) 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 (CLA)E8(INS) 00(P1) 00(P2) 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 (CLA)E8(INS) 00(P1) 00(P2) 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 )E8(INS) 00(P1) 00(P2) 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 (CLA)E8(INS) 00(P1) 00(P2) 18(密钥信息长度) 01(密钥标识符) 01(密钥版本号) 00(算法标识) 07(密钥类型) 0F(使用权限) 00(后续状态)

