原创 操作卡片文件命令--删除文件(DELETE FILE)

2008-12-7 22:46 4013 6 6 分类: 软件与OS
  1、命令功能描述

    删除文件命令是删除当前文件下指定的文件,包括DF文件和EF文件等。如果删除的是MF文件,等同于删除整个文件系统,这个功能在卡片回收二次发卡时使用比较频繁,类似于PC系统中的硬盘格式化。

    如果删除的是系统EF文件,可能对系统造成一定的影响,例如DF下的DIR文件,如果删除的话很容易破坏整个文件系统;如果删除了PIN文件、对称KEY文件等,可能会造成对整个卡片安全体系的破坏。所以,在实现时可以限制对这些卡片关键文件使用这个功能。

    在链式文件中,如果删除中间文件很容易破坏整个文件系统的完整性,而且会带来大量的实现复杂度,所以删除文件操作为了两种情况。

    * 如果删除的文件在父文件的空间中不和空闲空间相邻的话,删除文件的实质是将文件的状态置为待删除状态,将来对该文件任何的操作都无效,文件处于逻辑被删除状态,但是文件的所有数据空间都还物理存在。

    * 如果删除的文件在父文件的空间中和空闲空间相邻的话,删除文件操作将回收这个文件的物理空间,文件在物理上被彻底删除,这部分空间将和空闲空间相合并,参与下次文件空间的分配。

    删除文件需要一定的安全控制,在DF的文件头中有SC字节表示删除该DF下子文件的安全控制,满足SC字节条件即可进行删除操作。如果是删除MF的话,由于MF没有更高一层的父文件,所以通常在MF主控密钥的控制下进行,所以通常选用带MAC的命令报文格式。

  2、命令报文格式

    命令的APDU内容如下所示:

      代码              值
       CLA                 0x80或者0x84
       INS                 0xE4
       P1                  0x01或者0x02
       P2                  0x00
       Lc                  Data域字节数,0x02或者0x06
       Data                将删除文件的FID或者待删除文件的FID+MAC
       Le                  无

    其中:

    * CLA为0x80表示命令不带MAC,可以用于非MF的DF和EF的删除;CLA为0x84表示命令带MAC,可以用于所有文件的删除。如果被删除文件是DF的话,MAC用被删除文件的主控密钥计算;如果删除文件夹是EF的话,MAC用被删除文件的父文件的主控密钥计算。

    * P1为0x01表示被删除的是DF,DATA域是DF的FID;P1为0x02表示被删除的是EF,DATA域是EF的FID。

    * 如果命令不带MAC的话,DATA数据域只包含FID,长度为2(即Lc=2);如果命令带MAC的话,DATA数据域包含FID和MAC,长度为6(即Lc=6)。

  3、响应报文数据

    响应报文数据为空。

  4、响应报文状态码。

    此命令执行成功的状态码为0x9000。

    对于异常情况,IC卡可能回送的错误码如下所示:

       SW1     SW2      含义
       0x65     0x81        内存错误
       0x67     0x00        Lc错误
       0x69     0x82        安全条件不满足
       0x69     0x85        使用条件不满足
       0x69     0x88        MAC校验失败
       0x6A     0x82        待删除文件没有找到
       0x6A     0x86        P1、P2不正确
       0x6D     0x00        INS错误
       0x6E     0x00        CLA错误

  5、命令实现的其他要求

    删除文件命令在实现中可以根据实际情况选择实现部分或者全部功能,如果卡片应用要求比较简单,不存在应用删除的情况的话,一般可以不实现对普通DF和EF的删除,只要实现对MF的删除操作,支持卡片回收二次利用即可。

  6、命令实现说明

    在这条命令的实际实现过程中还需要注意以下情况。

    * 在空间回收过程中,首先要检查是否需要回收当前文件空间,如果要回收的话,在当前文件的范围内回溯检查该文件物理位置前面的相邻文件是否已经被删除,如果是的话同时也要回收该空间,一直到找到一个未被删除文件或者到达父文件数据区的起始位置。

    * 被删除文件如果是DF的话,还需要修改父文件的DIR文件。DIR文件是变长记录文件,修改的方式同空间回收操作,如果是中间记录的话也只能是逻辑删除该记录,一直到该记录空间和文件空闲空间相连为止。

  7、命令使用示例

   (1)预设环境

    对于CREATE FILE命令创建的文件系统,我们依次删除ADF、MF下的DIR文件和MF文件。

   (2)命令报文

    删除ADF的APDU:

    80 E4 01 00 02 4F 00

    其中:

    * 80 表示DELETE FILE命令的CLA。
    * E4 表示DELETE FILE命令的INS。
    * 01 表示DELETE FILE命令的P1,表示是对DF文件的删除。
    * 00 表示DELETE FILE命令的P2。
    * 02 表示DELETE FILE命令数据域的长度。
    * 4F00 表示要删除的DF的FID。

    删除DIR文件的APDU:

    80 E4 02 00 02 3F 01

    * 80 表示DELETE FILE命令的CLA。
    * E4 表示DELETE FILE命令的INS。
    * 02 表示DELETE FILE命令的P1,表示是对EF文件的删除。
    * 00 表示DELETE FILE命令的P2。
    * 02 表示DELETE FILE命令数据域的长度。
    * 3F01 表示要删除的DIR的FID。

    删除MF的APDU:

    80 E4 01 00 06 3F 00 01 02 03 04

    * 80 表示DELETE FILE命令的CLA。
    * E4 表示DELETE FILE命令的INS。
    * 01 表示DELETE FILE命令的P1,表示是对DF文件的删除。
    * 00 表示DELETE FILE命令的P2。
    * 06 表示DELETE FILE命令数据域的长度。
    * 3F00 表示要删除的MF的FID。
    * 01020304是命令的MAC,用MF的主控密钥和预先产生的随机数计算得到。

   (3)DELETE FILE响应报文

    卡片处理以后,DELETE FILE的响应报文为空。
PARTNER CONTENT

文章评论0条评论)

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