IC卡安全操作基本命令

2020-08-09 18:38

一、IC卡安全操作基本命令-写密钥(WRITE KEY)

1、命令功能描述

写密钥命令提供将密钥从卡外转入卡片中指定位置的功能,即包括新的密钥的添加,也包括对原有密钥的修改。

为了保证密钥在传输过程中的安全性,在命令报文中的密钥将以密文的形式存在,用卡内外双方共有的密钥进行加密。

该命令可以提供对称密钥的写操行,也可以提供非对称密钥的写操作。传输过程中用以加密密钥内容的密钥一般选用对称密钥,可以是相应DF的主控密钥。 为了防止在传输过程中数据错误,命令数据域还带安全报文MAC。 下面主要介绍对称密钥的写操作。 2、命令报文格式

命令的APDU内容如下所示: 代码 值

CLA 0x84 INS 0xD4 P1 KEY TYPE P2 0x00

Lc DATA域长度

Data 密钥信息密文+MAC Le 不存在 其中:

* P1指定了要写入的密钥的类型,对于对称密钥给0x00。

* 如果写入的是对称密钥的话,分为DES密钥和3DES密钥两种,密钥体的长度分别为8Byte和16Byte。

* DATA域的密钥信息数据为加密以后的数据,加密的密钥为对应DF的主控密钥,加密算法为3DES。

* DATA域密钥信息密文加密前的明文为对称密钥属性和密钥体组成的记录条,编码格式同KEY文件的编码格式。

* 为了保证密钥的完整性,在传输过程中命令数据报文带安全报文字节,用对应DF的主控密钥计算。 3、响应报文数据

响应报文数据域不存在。 4、响应报文状态码

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

对于异常情况,IC卡可能回送的错误码如下所示: SW1 SW2 含义 0x65 0x81 存储区错误 0x67 0x00 Lc错误

0x69 0x81 对应的KEY文件没有找到 0x69 0x82 安全条件不满足 0x69 0x84 随机数无效

0x69 0x85 命令执行条件不满足 0x69 0x87 MAC丢失

0x69 0x88 MAC错误 0x6A 0x81 应用锁定 0x6A 0x84 文件空间不足 0x6A 0x86 P1、P2不正确 0x6D 0x00 INS错误 0x6E 0x00 CLA错误 5、命令实现的其他要求

对于命令报文数据域的格式可以根据COS内部数据结构实现的不同自定义,但是需要严格保证的是密钥明文的安全性和完整性。 6、命令实现设计

在写密钥的过程中,需要注意如下问题:

* 数据域的密钥属性字节中要能够分辨密钥是主控密钥,在一般实现中,DF下的主控密钥都单独存放,在更新过程中要能够区分开。

* 数据域的密钥属性字节中包含有密钥的用途、版本、索引等标识,通过这些标识能够分辨出要写入的密钥和原文件中的密钥是否重复,如果重复的话写操作是覆盖操作,否则为添加操作。

* 如果是覆盖操作的话,前后密钥的算法类型等信息必须一致;如果是添加操作的话,要检查KEY文件剩余空间是否能够足够。

* 在KEY文件的文件描述块中包含了文件写操作的控制标识符,在进行写密钥操作进(除了主控密钥)需要满足其定义的条件。 7、命令使用示例 (1)预设环境

假设已经满足KEY添加条件。对称KEY文件支持多条KEY记录。 (2)命令报文

写对称密钥记录的APDU:

84 D4 00 00 13 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 01 02 03 04 其中:

* 84 表示WRITE KEY命令的CLA。 * D4 表示WRITE KEY命令的INS。

* 00 表示WRITE KEY命令的P1,即添加的是对称密钥。 * 00 表示WRITE KEY命令的P2。 * 13 表示WRITE KEY命令的Lc。

* 112233445566778899AABBCCDDEEFF 表示WRITE KEY命令的KEY记录加密结果,假设原文为0102030105063308090A0B0C0D0E0F:01 表示密钥类型;02表示密钥版本;03表示密钥索引号;01表示对应算法为DES算法;05表示使用密钥的安全条件;06表示密钥认证成功之后的安全状态;33表示密钥认证计数器,第一个3表示最大允许尝试次数,第二个3表示当前剩余尝试次数;08090A0B0C0D0E0F表示DES8Byte密钥的原文。 * 01020304 表示WRITE KEY命令的MAC。 (3)WRITE KEY响应报文

卡片处理以后,WRITE KEY没有响应报文。

二、IC卡安全操作基本命令-密码解锁(PIN UNBLOCK)

1、命令功能描述

验证码命令用以解锁个人密码,是PIN维护的一个重要命令。

每一个PIN记录都含有一个尝试次数计数器,在校验PIN的过程中,如果PIN校验失败的话,尝试计数器的值减一,如果连续多次失败的话,尝试计数器的值可能减为0,这时PIN记录被锁定,将无法再进行校验操作,也就是无法使用了。这时需要对PIN记录进行解锁操作。

解锁操作主要是将PIN记录的尝试计数器复位。 2、命令报文格式

命令的APDU内容如下所示: 代码 值

CLA 0x84 INS 0x24 P1 PIN ID P2 0x01 Lc 0x04 Data MAC

Le 不存在 其中:

* P1指定要解锁PIN的ID号,如果P1为0x00表示对PIN文件的第一条记录进行解锁,否则根据P1指定的PIN ID进行查找。

* 为了进行安全控制,命令数据域带MAC,MAC用对应DF的主控密钥计算。 3、响应报文数据

响应报文数据域不存在。 4、响应报文状态码

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

对于异常情况,IC卡可能回送的错误码如下所示: SW1 SW2 含义 0x65 0x81 存储区错误 0x67 0x00 Lc错误

0x69 0x81 PIN文件没有找到 0x69 0x82 安全条件不满足 0x69 0x84 随机数无效

0x69 0x85 命令执行条件不满足 0x69 0x87 MAC丢失 0x69 0x88 MAC错误

0x6A 0x86 P1、P2不正确 0x6D 0x00 INS错误 0x6E 0x00 CLA错误 5、命令实现的其他要求

根据COS提供的功能不同,该命令的功能可以用应用中定义的重装个人密码(RELOAD PIN)命令代替。 6、命令实现设计

在执行该命令前,应用必须先发一条取随机数命令,卡片存在4Byte有效随机数。

7、命令使用示例 (1)预设环境

假设PIN文件支持多个PIN记录,要解锁的PIN示例对应的为添加命令示例中添加的PIN。 (2)命令报文

解锁PIN记录的APDU: 84 24 01 01 04 11 22 33 44 其中:

* 84 表示PIN UNBLOCK命令的CLA。 * 24 表示PIN UNBLOCK命令的INS。

* 01 表示PIN UNBLOCK命令的P1,即要解锁的PIN的ID。 * 01 表示PIN UNBLOCK命令的P2。

* 04 表示PIN UNBLOCK命令的Lc,即数据域的长度。 * 11223344 表示PIN UNBLOCK命令的MAC。 (3)PIN UNBLOCK 响应报文

卡片处理以后,PIN UNBLOCK 没有响应报文。

三、IC卡安全操作基本命令-内部认证(INTERNAL AUTHENTICATION)

1、命令功能描述

内部认证命令提供了利用终端设备发来的随机数和自身存储的密钥进行数据认证的功能,也就是终端认证卡片合法性的过程。 2、命令报文格式

命令的APDU内容如下所示: 代码 值

CLA 0x00 INS 0x88 P1 0x00 P2 0x00 Lc 0x10 Data 认证数据 Le 0x00

其中:

* DATA域长度为16Byte,前8Byte是外部产生的随机数,也就是验证的中间数据,后8Byte是外部给出的分散向量,用来计算认证过程密钥。 3、响应报文数据

如果命令执行成功以后,响应报文数据域给出来卡片的计算结果供终端认证,长度为8Byte。

4、响应报文状态码

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

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

0x62 0x81 回送数据可能有错 0x64 0x00 标志状态位没有改变

0x67 0x00 Lc错误

0x68 0x82 不支持安全报文 0x69 0x01 命令执行条件不满足 0x69 0x85 不满足密钥使用条件 0x6A 0x80 数据域参数不正确 0x6A 0x86 P1、P2不正确 0x6A 0x88 密钥查找失败 0x6D 0x00 INS错误 0x6E 0x00 CLA错误 5、命令实现的其他要求

内部认证命令是终端认证卡片的过程,不同的应用可能会有不同的规定,如果要支持特殊应用的话,需要参考相关的应用需求,明确命令的数据的具体格式和计算方法。 6、命令实现设计

对认证数据的计算包括了如下几个步骤:

* 密码的查找。内部认证需要专门的密钥,是对称密钥,通常为3DES密钥,在当前文件的对称密钥文件中查找,查找条件包括密钥用途、密钥版本和密钥索引等,可以使用单一条件,也可以使用组合条件。

* 过程密钥生成。利用找到的认证密钥对命令数据域中后8Byte分散向量做3DES加密计算,结果为8Byte,即为此次内部认证的过程密钥。 * 认证结果计算。将得到的过程密钥对命令数据域中前8Byte外部终端给出的随机数做DES加密计算,得到8Byte认证结果,返回。 7、命令使用示例 (1)预设环境

除了需要有相应密钥外无其他特殊环境要求。 (2)命令报文

进行内部认证的APDU:

00 88 00 00 10 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10

其中:

* 00 表示INTERNAL AUTHENTICATION命令的CLA。 * 88 表示INTERNAL AUTHENTICATION命令的INS。 * 00 表示INTERNAL AUTHENTICATION命令的P1。 * 00 表示INTERNAL AUTHENTICATION命令的P2。

* 10 表示INTERNAL AUTHENTICATION命令的Lc,验证数据和分散数据。

* 0102030405060708 表示INTERNAL AUTHENTICATION命令的DATA前半部分,是终端产生的8Byte随机数。

* 090A0B0C0D0E0F10 表示INTERNAL AUTHENTICATION命令的DATA后半部分,是终端产生的过程密钥分散数据。

(3)INTERNAL AUTHENTICATION响应报文

卡片处理以后,INTERNAL AUTHENTICATION的响应报文为卡片计算得到的8Byte验证数据。

四、IC卡安全操作基本命令-外部认证(EXTERNAL AUTHENTICATION)


IC卡安全操作基本命令.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:车床尾座套筒课程设计说明书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: