原创
IC卡安全操作基本命令-修改密码(CHANGE PIN)
2008-10-20 13:32
8178
6
6
分类:
软件与OS
1、命令功能描述
修改密码命令将PIN文件中指定的一条PIN内容替换为新的PIN内容。
修改PIN之前要求验证旧的PIN,而且只能够修改PIN的内容,不包括PIN的属性。由于PIN记录空间的限制,新的PIN长度有一定的限制。
新PIN添加成功以后,需要将原PIN的尝试计数器复位。
2、命令报文格式
命令的APDU内容如下所示:
代码 值
CLA 0x80
INS 0x5E
P1 0x01
P2 PIN ID
Lc DATA域的长度
Data 旧PIN |0xFF| 新PIN
Le 不存在
其中:
* P1指定要修改的ID号,如果P1为0x00表示对PIN文件的第一条记录进行修改,否则根据P1指定的PIN ID进行查找。
* DATA域包含的新旧PIN为PIN的内容,和PIN文件的格式一样,用BCD编码方式,不足字节用0xFF补齐。
3、响应报文数据
响应报文数据域不存在。
4、响应报文状态码
此命令执行成功的状态码为0x9000。
对于异常情况,IC卡可能回送的错误码如下所示:
SW1 SW2 含义
0x63 0xCX 旧密码校验失败,X表示剩余的尝试次数
0x65 0x81 存储区错误
0x67 0x00 Lc错误
0x69 0x81 PIN文件没有找到
0x69 0x82 安全条件不满足
0x69 0x83 PIN记录被锁定
0x69 0x85 命令执行条件不满足
0x6A 0x80 数据域参数不正确
0x6A 0x86 P1、P2不正确
0x6D 0x00 INS错误
0x6E 0x00 CLA错误
5、命令实现的其他要求
修改密码命令在不同的应用中可能有不同的定义,这里给出的是一个通用的实现过程,具体的实现还可以参考相关的应用规范。
6、命令实现设计
修改密码操作的条件检查包括:命令格式的检查、PIN文件的查找、PIN记录的查找、PIN记录的使用条件检查、旧PIN的校验等。
新PIN写入过程中要特别注意的是,如果新PIN内容比旧PIN短的话,需要写入多个0xFF,以覆盖旧PIN多余的内容。
7、命令使用示例
(1)预设环境
假设PIN文件支持多个PIN记录,修改PIN示例对应的为添加命令示例中添加的PIN。
(2)命令报文
修改PIN记录的APDU:
80 5E 01 01 05 12 34 FF 56 78
其中:
* 80 表示CHANGE PIN命令的CLA。
* 5E 表示CHANGE PIN命令的INS。
* 01 表示CHANGE PIN命令的P1。
* 01 表示CHANGE PIN命令的P2,即要修改的PIN的ID。
* 05 表示CHANGE PIN命令的Lc,即数据域的长度。
* 1234 表示要修改的PIN的旧值。
* FF 表示新旧PIN之间的间隔符。
* 5678 表示要修改PIN的新值。
(3)CHANGE PIN响应报文
卡片处理以后,CHANGE PIN没有响应报文。
文章评论(0条评论)
登录后参与讨论