IC卡安全操作基本命令.docx
- 文档编号:1741133
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:47
- 大小:34.96KB
IC卡安全操作基本命令.docx
《IC卡安全操作基本命令.docx》由会员分享,可在线阅读,更多相关《IC卡安全操作基本命令.docx(47页珍藏版)》请在冰豆网上搜索。
IC卡安全操作基本命令
一、IC卡安全操作基本命令-写密钥(WRITEKEY)
1、命令功能描述
写密钥命令提供将密钥从卡外转入卡片中指定位置的功能,即包括新的密钥的添加,也包括对原有密钥的修改。
为了保证密钥在传输过程中的安全性,在命令报文中的密钥将以密文的形式存在,用卡内外双方共有的密钥进行加密。
该命令可以提供对称密钥的写操行,也可以提供非对称密钥的写操作。
传输过程中用以加密密钥内容的密钥一般选用对称密钥,可以是相应DF的主控密钥。
为了防止在传输过程中数据错误,命令数据域还带安全报文MAC。
下面主要介绍对称密钥的写操作。
2、命令报文格式
命令的APDU内容如下所示:
代码值
CLA0x84
INS0xD4
P1KEYTYPE
P20x00
LcDATA域长度
Data密钥信息密文+MAC
Le不存在
其中:
*P1指定了要写入的密钥的类型,对于对称密钥给0x00。
*如果写入的是对称密钥的话,分为DES密钥和3DES密钥两种,密钥体的长度分别为8Byte和16Byte。
*DATA域的密钥信息数据为加密以后的数据,加密的密钥为对应DF的主控密钥,加密算法为3DES。
*DATA域密钥信息密文加密前的明文为对称密钥属性和密钥体组成的记录条,编码格式同KEY文件的编码格式。
*为了保证密钥的完整性,在传输过程中命令数据报文带安全报文字节,用对应DF的主控密钥计算。
3、响应报文数据
响应报文数据域不存在。
4、响应报文状态码
此命令执行成功的状态码为0x9000。
对于异常情况,IC卡可能回送的错误码如下所示:
SW1SW2含义
0x650x81存储区错误
0x670x00Lc错误
0x690x81对应的KEY文件没有找到
0x690x82安全条件不满足
0x690x84随机数无效
0x690x85命令执行条件不满足
0x690x87MAC丢失
0x690x88MAC错误
0x6A0x81应用锁定
0x6A0x84文件空间不足
0x6A0x86P1、P2不正确
0x6D0x00INS错误
0x6E0x00CLA错误
5、命令实现的其他要求
对于命令报文数据域的格式可以根据COS内部数据结构实现的不同自定义,但是需要严格保证的是密钥明文的安全性和完整性。
6、命令实现设计
在写密钥的过程中,需要注意如下问题:
*数据域的密钥属性字节中要能够分辨密钥是主控密钥,在一般实现中,DF下的主控密钥都单独存放,在更新过程中要能够区分开。
*数据域的密钥属性字节中包含有密钥的用途、版本、索引等标识,通过这些标识能够分辨出要写入的密钥和原文件中的密钥是否重复,如果重复的话写操作是覆盖操作,否则为添加操作。
*如果是覆盖操作的话,前后密钥的算法类型等信息必须一致;如果是添加操作的话,要检查KEY文件剩余空间是否能够足够。
*在KEY文件的文件描述块中包含了文件写操作的控制标识符,在进行写密钥操作进(除了主控密钥)需要满足其定义的条件。
7、命令使用示例
(1)预设环境
假设已经满足KEY添加条件。
对称KEY文件支持多条KEY记录。
(2)命令报文
写对称密钥记录的APDU:
84D4000013112233445566778899AABBCCDDEEFF01020304
其中:
*84表示WRITEKEY命令的CLA。
*D4表示WRITEKEY命令的INS。
*00表示WRITEKEY命令的P1,即添加的是对称密钥。
*00表示WRITEKEY命令的P2。
*13表示WRITEKEY命令的Lc。
*99AABBCCDDEEFF表示WRITEKEY命令的KEY记录加密结果,假设原文为090A0B0C0D0E0F:
01表示密钥类型;02表示密钥版本;03表示密钥索引号;01表示对应算法为DES算法;05表示使用密钥的安全条件;06表示密钥认证成功之后的安全状态;33表示密钥认证计数器,第一个3表示最大允许尝试次数,第二个3表示当前剩余尝试次数;08090A0B0C0D0E0F表示DES8Byte密钥的原文。
*01020304表示WRITEKEY命令的MAC。
(3)WRITEKEY响应报文
卡片处理以后,WRITEKEY没有响应报文。
二、IC卡安全操作基本命令-密码解锁(PINUNBLOCK)
1、命令功能描述
验证码命令用以解锁个人密码,是PIN维护的一个重要命令。
每一个PIN记录都含有一个尝试次数计数器,在校验PIN的过程中,如果PIN校验失败的话,尝试计数器的值减一,如果连续多次失败的话,尝试计数器的值可能减为0,这时PIN记录被锁定,将无法再进行校验操作,也就是无法使用了。
这时需要对PIN记录进行解锁操作。
解锁操作主要是将PIN记录的尝试计数器复位。
2、命令报文格式
命令的APDU内容如下所示:
代码值
CLA0x84
INS0x24
P1PINID
P20x01
Lc0x04
DataMAC
Le不存在
其中:
*P1指定要解锁PIN的ID号,如果P1为0x00表示对PIN文件的第一条记录进行解锁,否则根据P1指定的PINID进行查找。
*为了进行安全控制,命令数据域带MAC,MAC用对应DF的主控密钥计算。
3、响应报文数据
响应报文数据域不存在。
4、响应报文状态码
此命令执行成功的状态码为0x9000。
对于异常情况,IC卡可能回送的错误码如下所示:
SW1SW2含义
0x650x81存储区错误
0x670x00Lc错误
0x690x81PIN文件没有找到
0x690x82安全条件不满足
0x690x84随机数无效
0x690x85命令执行条件不满足
0x690x87MAC丢失
0x690x88MAC错误
0x6A0x86P1、P2不正确
0x6D0x00INS错误
0x6E0x00CLA错误
5、命令实现的其他要求
根据COS提供的功能不同,该命令的功能可以用应用中定义的重装个人密码(RELOADPIN)命令代替。
6、命令实现设计
在执行该命令前,应用必须先发一条取随机数命令,卡片存在4Byte有效随机数。
7、命令使用示例
(1)预设环境
假设PIN文件支持多个PIN记录,要解锁的PIN示例对应的为添加命令示例中添加的PIN。
(2)命令报文
解锁PIN记录的APDU:
842401010411223344
其中:
*84表示PINUNBLOCK命令的CLA。
*24表示PINUNBLOCK命令的INS。
*01表示PINUNBLOCK命令的P1,即要解锁的PIN的ID。
*01表示PINUNBLOCK命令的P2。
*04表示PINUNBLOCK命令的Lc,即数据域的长度。
*表示PINUNBLOCK命令的MAC。
(3)PINUNBLOCK响应报文
卡片处理以后,PINUNBLOCK没有响应报文。
三、IC卡安全操作基本命令-内部认证(INTERNALAUTHENTICATION)
1、命令功能描述
内部认证命令提供了利用终端设备发来的随机数和自身存储的密钥进行数据认证的功能,也就是终端认证卡片合法性的过程。
2、命令报文格式
命令的APDU内容如下所示:
代码值
CLA0x00
INS0x88
P10x00
P20x00
Lc0x10
Data认证数据
Le0x00
其中:
*DATA域长度为16Byte,前8Byte是外部产生的随机数,也就是验证的中间数据,后8Byte是外部给出的分散向量,用来计算认证过程密钥。
3、响应报文数据
如果命令执行成功以后,响应报文数据域给出来卡片的计算结果供终端认证,长度为8Byte。
4、响应报文状态码
此命令执行成功的状态码为0x9000。
对于异常情况,IC卡可能回送的错误码如下所示:
SW1SW2含义
0x620x81回送数据可能有错
0x640x00标志状态位没有改变
0x670x00Lc错误
0x680x82不支持安全报文
0x690x01命令执行条件不满足
0x690x85不满足密钥使用条件
0x6A0x80数据域参数不正确
0x6A0x86P1、P2不正确
0x6A0x88密钥查找失败
0x6D0x00INS错误
0x6E0x00CLA错误
5、命令实现的其他要求
内部认证命令是终端认证卡片的过程,不同的应用可能会有不同的规定,如果要支持特殊应用的话,需要参考相关的应用需求,明确命令的数据的具体格式和计算方法。
6、命令实现设计
对认证数据的计算包括了如下几个步骤:
*密码的查找。
内部认证需要专门的密钥,是对称密钥,通常为3DES密钥,在当前文件的对称密钥文件中查找,查找条件包括密钥用途、密钥版本和密钥索引等,可以使用单一条件,也可以使用组合条件。
*过程密钥生成。
利用找到的认证密钥对命令数据域中后8Byte分散向量做3DES加密计算,结果为8Byte,即为此次内部认证的过程密钥。
*认证结果计算。
将得到的过程密钥对命令数据域中前8Byte外部终端给出的随机数做DES加密计算,得到8Byte认证结果,返回。
7、命令使用示例
(1)预设环境
除了需要有相应密钥外无其他特殊环境要求。
(2)命令报文
进行内部认证的APDU:
00880000100102030405060708090A0B0C0D0E0F10
其中:
*00表示INTERNALAUTHENTICATION命令的CLA。
*88表示INTERNALAUTHENTICATION命令的INS。
*00表示INTERNALAUTHENTICATION命令的P1。
*00表示INTERNALAUTHENTICATION命令的P2。
*10表示INTERNALAUTHENTICATION命令的Lc,验证数据和分散数据。
*05060708表示INTERNALAUTHENTICATION命令的DATA前半部分,是终端产生的8Byte随机数。
*090A0B0C0D0E0F10表示INTERNALAUTHENTICATION命令的DATA后半部分,是终端产生的过程密钥分散数据。
(3)INTERNALAUTHENTICATION响应报文
卡片处理以后,INTERNALAUTHENTICATION的响应报文为卡片计算得到的8Byte验证数据。
四、IC卡安全操作基本命令-外部认证(EXTERNALAUTHENTICATION)
1、命令功能描述
外部认证命令提供了利用卡片产生随机数,外部利用密钥设备对该数据进行计算完成对终端的数据认证功能,也就是卡片认证终端合法性的过程。
外部认证成功以后,将修改对应的安全状态为内部认证结果的安全状态,并且复位卡片内对应密钥的尝试计数器到初值。
如果验证失败,将对应密钥的尝
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IC 安全 操作 基本 命令