原创 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条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条