1、DIR文件
DIR文件在实现上采用变长记录文件的方式实现,每一条记录对应一个DF信息。如下所示,每一条记录体的数据内容可以分解为如下格式:
L AID DFADD
其中:
* L:1Byte,表示AID的长度。
* AID:L Byte,DF的应用标识符。
* DFADDL:2Byte,对应DF文件描述块的起始地址,相对于MF文件描述块的起始地址开始计算。
在此基础上,可以根据具体的情况对数据内容进行扩充,扩充的内容由COS来解释和维护即可。该文件的内容在DF创建时由系统自动添加完成,可以通过读记录命令读取其内容,但是不能修改。
2、PIN文件
PIN文件在实现上可以选择采用变长记录文件的方式实现,每一条记录对应一条PIN的信息,可以支持多条PIN记录。如下所示,为一条PIN记录的数据内容格式:
ID SC STAT MinLen INIC DATA
其中:
* ID:1Byte,表示PIN记录的ID号,有应用定义,但是在一个PIN文件中ID号不能重复,通过ID号可以检索到PIN记录。
* SC:1Byte,使用该PIN的安全控制。
* STAT:1Byte,PIN验证后的安全状态。
* Minlen:1Byte,PIN的最小长度。
* INIC:1Byte,PIN可以尝试校验控制标识符。高半字节表示PIN允许尝试校验的最大次数,一般为3,低半字节表示剩余的允许尝试次数。初始化的低半字节和高半字节相等,如果PIN校验失败的话,低半字节减1,如果PIN校验成功的话,低半字节恢复到和高半字节相等。如果低半字节减少至0以后,PIN不能再进行校验尝试,需要进行PIN解锁操作。
* DATA:若干字节,表示PIN的实际内容。要注意的是,IC卡的PIN通常通过密码键盘输入,一般都0-9的数字,可以用BCD码存储(即用十六进制0-9表示数字的0-9)。为了节约空间,PIN在存储时可以用1Byte的高低半字节分别存储两个数字,例如Pin “1234”可以存储为0x12、0x34,如果PIN的长度不足的话后面用F填充。
需要注意的是,由于采用的是变长记录文件,记录的大小在第一次添加时就已经确定,后续修改的新PIN的长度不能超过旧PIN的长度,否则无法进行存储。为了避免这种情况,在第一次添加PIN的时候,可以在PIN的后面补充若干的“0xFF”字节作为将来扩充空间。
3、对称KEY文件
对称KEY文件在实现上可以选择采用变长记录文件的方式实现,每一条记录对应一条对称KEY的信息,可以支持多条KEY记录。 如下所示,为一条KEY记录的数据内容格式:
Type Version Index Alg SC STAT INIC DATA
其中:
* Type:1Byte,表示密钥的类型或用途。每一个密钥有自己单一的用途,用低5位来定义密钥的类型,高3位定义该密钥的分散级数。
* Version:1Byte,表示密钥的版本。
* Index:1Byte,表示密钥的索引号。
* Alg:1Byte,表示密钥对应的算法,目前可以选择00表示3DES算法,01表示DES算法,其他值暂时保留。
* SC:1Byte,表示密钥的使用条件,具体含义和使用同文件描述块中的SC1和SC2。
* STAT:1Byte,密钥认证成功以后的安全状态,具体含义和使用同文件描述块中的STAT。
* INIC:1Byte,KEY可以尝试校验控制标识符。高半字节表示KEY允许尝试校验的最大次数,一般为3,低半字节表示剩余的允许尝试次数。初始化的低半字节和高半字节相等,如果KEY校验失败的话,低半字节减1,如果KEY校验成功的话,低半字节恢复到和高半字节相等。如果低半字节减少至0以后,KEY不能再进行校验尝试,需要进行KEY解锁操作。
* DATA:若干个字节,记录密钥体的内容,如果是3DES算法的话,密钥长度为16Byte,如果是DES算法的话,密钥长度为8Byte。
如果选择采用定长记录文件存储时,记录的长度要按照可能的最长的KEY的长度计算,如果长度没有达到最大长度,后面用固定字节填充。
Type字节的编码定义如下所示:
TYPE 含义
00 主控密钥
01 PSAM卡维护密钥
02 消费密钥:用户卡中的子密钥DPK,用于金融卡消费/取现交易的安全控制
03 PIN解锁密钥:用户卡中的子密钥DPUK,由卡发行方用于对持卡人个人密码PIN的解锁
04 重装PIN密钥:用户卡中的子密钥DRPK,由卡发行方用于重装持卡人个人密码PIN
05 用户卡应用维护密钥:用户卡中的子密钥DAMK,用于应用的锁定、解锁、卡的锁定以及二进制文件的修改
06 MAC计算密钥
07 DES加密/解密密钥
08 MAC与DES加密/解密密钥
09 保留
0A 圈存密钥:用户卡中的子密钥DLK,用于金融卡圈存交易的安全控制
0B 圈提密钥:用户卡中的子密钥DULK,用于金融卡圈提交易的安全控制
0C TAC密钥:用户卡中的子密钥DTK,在金融卡中用来产生消费、取现和圈存中使用的TAC
0D 修改透支限额密钥:用户卡中的子密钥DUK,用于金融卡修改透支限额交易的安全控制
1E 内部认证密钥:内部认证命令用的默认密钥类
1F 外部认证密钥:外部认证命令用的默认密钥类
4、非对称KEY文件
非对称KEY文件体中一般只保存一个密钥对,包括公钥和私钥两个部分,可以采用透明二进制方式存储,具体的数据模式解释由COS的PKI模块进行。
根据不同的情况,可能只有公钥或者只有私钥存在。
非对称文件体的大小要根据不同的密钥类型和模长来确定。
数据存储可以采用TLV模式,即每一个数据项由3个部分组成:
* T:1Byte,表示该数据项类型。
* L:1Byte或者2Byte,根据T的不同而不同,表示该数据项对应数据的长度。
* V:L Byte,表示的是数据的实际内容。
非对称密钥对中,一个公钥对象和一个私钥对象都可能由若干个数据组成,所以,一个非对称文件体可以包含若干个TLV数据对象。
5、电子钱包文件
电子钱包文件采用透明二进制文件的方式实现,具体的数据格式由COS的金融模块解释,如下为电子钱包文件结构:
Bal DC CC MAX
其中:
* Bal:3Byte,表示钱包余额。
* DC:2Byte,表示脱机交易计数器。
* CC:2Byte,表示联机交易计数器。
* MAX:3Byte,表示钱包内可存入的最大金额。
6、电子存折文件
电子存折采用透明二进制文件的方式实现,具体的数据格式由COS的金融模块解释,如下所示为电子存折文件结构:
Bal DC CC OL MAX
其中:
* Bal:4Byte,表示存折余额。
* DC:2Byte,表示脱机交易计数器。
* CC:2Byte,表示联机交易计数器。
* OL:3Byte,表示存折可透支的限额。
* MAX:4Byte,表示存折内可存入的最大金额。
文章评论(0条评论)
登录后参与讨论