CN102013975A - 一种密钥管理方法及系统 - Google Patents

一种密钥管理方法及系统 Download PDF

Info

Publication number
CN102013975A
CN102013975A CN 201010214161 CN201010214161A CN102013975A CN 102013975 A CN102013975 A CN 102013975A CN 201010214161 CN201010214161 CN 201010214161 CN 201010214161 A CN201010214161 A CN 201010214161A CN 102013975 A CN102013975 A CN 102013975A
Authority
CN
China
Prior art keywords
intelligent key
apdu
key apparatus
key
main frame
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 201010214161
Other languages
English (en)
Other versions
CN102013975B (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Feitian Technologies Co Ltd
Original Assignee
Beijing Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Feitian Technologies Co Ltd filed Critical Beijing Feitian Technologies Co Ltd
Priority to CN2010102141612A priority Critical patent/CN102013975B/zh
Publication of CN102013975A publication Critical patent/CN102013975A/zh
Application granted granted Critical
Publication of CN102013975B publication Critical patent/CN102013975B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种密钥管理方法和系统,属于信息安全领域。该方法包括:当智能密钥装置第一次上电时,生成随机数作为管理密钥,所述管理密钥不可读出,智能密钥装置中预先的装有传输密钥,当接收到写主控密钥的APDU时,使用传输密钥进行解密,并且将主控密钥使用管理密钥进行加密后存储在所述智能密钥装置中,在创建文件系统的过程中将APDU使用主控密钥进行加密,在创建文件系统结束后,将所述智能密钥装置设置为应用状态,当终止智能密钥装置使用时,擦除管理密钥。

Description

一种密钥管理方法及系统
技术领域
本发明涉及信息安全领域,特别涉及一种密钥管理方法和系统。
背景技术
密钥是一种参数,通过密钥和加解密算法,可以实现将明文转换为密文,或将密文转换成明文。从加解密方式进行划分,密钥可以分为对称密钥和非对称密钥,对称密钥加密又叫专用密钥加密,即发送和接收数据的双方必使用相同的密钥对明文进行加密和解密运算。对称密钥加密算法主要包括:DES、3DES、IDEA、FEAL、BLOWFISH等。公开密钥也称为非对称密钥,每个人都有一对唯一对应的密钥:公开密钥(简称公钥)和私人密钥(简称私钥),公钥对外公开,私钥由个人秘密保存;用其中一把密钥加密,就只能用另一把密钥解密。非对称密钥加密算法的典型代表是RSA。
密钥技术广泛的应用于数据通信领域,将需要在公共网络上传输的数据进行加密传送,增加了数据的安全性。密钥技术还可用于身份认证识别领域,使用基于公钥或私钥的密码体制,给每个用户分配唯一的密钥对,将数据使用一个密钥进行签名,另一个密钥验证签名,以判断数据是否可信的,以及数据是否完整和被修改。
通常情况下,由于计算机接入的不安全性,在计算机中保存的密钥容易被攻击者窃取,因此出现了智能密钥装置,智能密钥装置是一种利用硬件进行签名操作的设备,智能密钥装置以USB Key为代表。智能密钥装置内置微型的处理芯片和EEPROM、ROM等存储芯片,以USB接口等与计算机相连接,通过在USB Key内部完成签名操作,再将签名结果返回给计算机,把密钥保存在USBKey内部,以保证密钥的安全,但是随着破解技术的增强,在USB Key内部的密钥也可能被读出,并冒用签名,导致用户密钥的不安全。
综上所述,现有技术的缺点是:密钥生成机制不安全,将密钥明文存储在智能密钥装置中,容易被读出,并冒用签名。
发明内容
为了提高网络数据传输的安全性,本发明实施例提供了一种密钥管理方法和系统。技术方案如下:
一种密钥管理方法,所述方法包括:
智能密钥装置接入主机,卡内操作系统判断所述智能密钥装置为首次上电时,生成第一随机数作为第一密钥;
所述智能密钥装置执行通信初始化操作,等待并接收所述主机下发的APDU(ApplicationProtocolDataUnit,应用协议数据单元);
当接收到所述主机下发的APDU后,判断所述智能密钥装置的生命周期是否终止;
如果所述生命周期没有终止,执行如下操作:
所述卡内操作系统判断所述智能密钥装置的使用状态是否为空卡状态,当为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU;
或,
所述卡内操作系统判断所述智能密钥装置的使用状态是否为初始化状态,当为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU;
或,
所述卡内操作系统判断所述智能密钥装置的使用状态是否为应用状态,当为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU;
如果所述生命周期终止,所述智能密钥装置向所述主机返回所述智能密钥装置的生命周期终止的错误,并继续等待所述主机下发新的APDU。
优选地,所述卡内操作系统判断所述智能密钥装置的使用状态是否为空卡状态,当不为空卡状态时,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置的使用状态是否为初始化状态,当为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU,当不为初始化状态时,所述卡内操作系统判断所述智能密钥装置的使用状态是否为应用状态;
当为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU;
当不为应用状态时,所述智能密钥装置向所述主机返回出错信息,并继续等待所述主机下发新的APDU;
或,
所述卡内操作系统判断所述智能密钥装置的使用状态是否为应用状态,当为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU,当不为应用状态时,所述卡内操作系统判断所述智能密钥装置的使用状态是否为初始化状态;
当为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU;
当不为初始化状态时,所述智能密钥装置向所述主机返回出错信息,并继续等待所述主机下发新的APDU。
优选地,所述卡内操作系统判断所述智能密钥装置的使用状态是否为初始化状态,当不为初始化状态时,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置的使用状态是否为空卡状态,当为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU,当不为空卡状态时,所述卡内操作系统判断所述智能密钥装置的使用状态是否为应用状态;
当为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU;
当不为应用状态时,所述智能密钥装置向所述主机返回出错信息,并继续等待所述主机下发新的APDU;
或,
所述卡内操作系统判断所述智能密钥装置的使用状态是否为应用状态,当为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU,当不为应用状态时,所述卡内操作系统判断所述智能密钥装置的使用状态是否为空卡状态;
当为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU;
当不为空卡状态时,所述智能密钥装置向所述主机返回出错信息,并继续等待所述主机下发新的APDU。
优选地,所述卡内操作系统判断所述智能密钥装置的使用状态是否为应用状态,当不为应用状态时,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置的使用状态是否为空卡状态,当为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU,当不为空卡状态时,所述卡内操作系统判断所述智能密钥装置的使用状态是否为初始化状态;
当为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU;
当不为初始化状态时,所述智能密钥装置向所述主机返回出错信息,并继续等待所述主机下发新的APDU;
或,
所述卡内操作系统判断所述智能密钥装置的使用状态是否为初始化状态,当为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU,当不为初始化状态时,所述卡内操作系统判断所述智能密钥装置的使用状态是否为空卡状态;
当为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU;
当不为空卡状态时,所述智能密钥装置向所述主机返回出错信息,并继续等待所述主机下发新的APDU。
相应地,当所述智能密钥装置的使用状态为空卡状态时,所述智能密钥装置执行写第二密钥的指令前,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置接收的APDU是否为写第二密钥的指令,如果是写第二密钥的指令,所述智能密钥装置使用第三密钥密钥对所述智能密钥装置接收的APDU进行解密,得到明文的写第二密钥的指令的APDU,进行写所述第二密钥的操作,将所述第二密钥使用所述第一密钥加密后,保存在所述智能密钥装置的可写存储区,如果不是写第二密钥的指令,所述智能密钥装置向所述主机返回所述智能密钥装置处于空卡状态的错误,并继续等待所述主机下发新的APDU。
相应地,所述第三密钥为所述智能密钥装置与所述主机预先约定,并预先存储在所述智能密钥装置的ROM(Read-Only Memory,只读存储器)中,当所述智能密钥装置生成所述第一密钥后,所述智能密钥装置将所述第三密钥读出,并使用所述第一密钥加密后保存在所述智能密钥装置的可写存储区中,在所述智能密钥装置使用第三密钥密钥对所述智能密钥装置接收的APDU进行解密前,所述智能密钥装置使用所述第一密钥对所述可写存储区中保存的密文的所述第三密钥进行解密,得到明文的所述第三密钥。
相应地,所述智能密钥装置得到明文的写第二密钥的指令的APDU后,进行写所述第二密钥的操作前,所述方法还包括:
所述智能密钥装置验证第一消息鉴别码是否正确,所述智能密钥装置根据所述第二随机数生成第二消息鉴别码,并使用所述第二消息鉴别码与所述第一消息鉴别码进行比对,如果相同,则所述第一消息鉴别码正确,执行写所述第二密钥的操作,如果不相同,则所述第一消息鉴别码不正确,向所述主机返回第一消息鉴别码错误的消息,其中,所述第一消息鉴别码包含在所述明文的写第二密钥的指令的APDU中。
相应地,所述智能密钥装置接收到所述主机下发的APDU前,所述方法还包括:
所述主机向所述智能密钥装置发送获取第二随机数的请求,所述智能密钥装置生成所述第二随机数,并将所述第二随机数发送给所述主机,所述主机使用所述第二随机数生成第一消息鉴别码。
优选地,当所述智能密钥装置的使用状态为初始化状态时,所述智能密钥装置执行创建文件的指令前,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置接收的APDU是否为创建文件的指令;
如果是创建文件的指令,所述智能密钥装置使用所述第一密钥对所述保存在可写存储区中的密文的所述第二密钥进行解密,得到明文的所述第二密钥,所述智能密钥装置使用所述明文的第二密钥对所述智能密钥装置接收的APDU进行解密,得到明文的创建文件的指令的APDU,执行所述创建文件的操作,并判断是否所述智能密钥装置的文件创建全部完成,如果是,将所述智能密钥装置的使用状态修改为应用状态,等待所述主机下发新的APDU,如果不是,继续等待所述主机下发新的APDU;
如果不是创建文件的指令,所述智能密钥装置向所述主机返回所述智能密钥装置未完成初始化的操作,并继续等待下发新的APDU。
相应地,所述智能密钥装置得到明文的创建文件的指令的APDU后,执行所述创建文件的操作前,所述方法还包括:
所述智能密钥装置验证第三消息鉴别码是否正确,所述智能密钥装置根据所述第三随机数生成第四消息鉴别码,并使用所述第四消息鉴别码与所述第三消息鉴别码进行比对,如果相同,则所述第三消息鉴别码正确,执行所述创建文件的指令,如果不相同,则所述第三消息鉴别码不正确,向所述主机返回所述第三消息鉴别码错误的消息,其中,所述第三消息鉴别码包含在所述明文的创建文件的指令的APDU中。
相应地,所述智能密钥装置接收到所述主机下发的APDU前,所述方法还包括:
所述主机向所述智能密钥装置发送获取第三随机数的请求,所述智能密钥装置生成所述第三随机数,并将所述第三随机数发送给所述主机,所述主机使用所述第三随机数生成第三消息鉴别码。
优选地,所述卡内操作系统判断所述智能密钥装置为首次上电,具体的包括:
所述卡内操作系统判断所述智能密钥装置的可写存储区是否为空白,如果为空白,则所述智能密钥装置为首次上电,如果不是空白,则所述智能密钥装置不是首次上电。
优选地,在所述智能密钥装置第一次上电后,在所述智能密钥装置的可写存储区中写入所述智能密钥装置的使用状态标志位,所述卡内操作系统通过读取所述智能密钥装置的使用状态标志位判断所述智能密钥装置的使用状态是否为空卡状态、初始化状态或应用状态。
优选地,当所述智能密钥装置的生命周期终止时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当连续认证解锁码错误次数超过约定次数时,擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当所述智能密钥装置接收到用户发出的销毁所述智能密钥装置的指令时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态。
一种密钥管理方法,所述方法包括:
智能密钥装置接入主机,卡内操作系统判断所述智能密钥装置为首次上电时,生成第一随机数作为第一密钥;
所述智能密钥装置执行通信初始化操作,等待并接收所述主机下发的APDU;
当接收到所述主机下发的APDU后,所述卡内操作系统判断所述智能密钥装置的生命周期状态和使用状态,并执行如下操作:
当所述智能密钥装置的生命周期终止时,所述智能密钥装置向所述主机返回生命周期终止的错误,继续等待并接收新的APDU;
当所述智能密钥装置的使用状态为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU;
当所述智能密钥装置的使用状态为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU;
当所述智能密钥装置的使用状态为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU。
优选地,当所述智能密钥装置的生命周期未终止时,所述方法还包括:
所述卡内操作系统继续判断所述智能密钥装置的使用状态,并执行如下操作:
当所述智能密钥装置的使用状态为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU;
当所述智能密钥装置的使用状态为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU;
当所述智能密钥装置的使用状态为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU。
优选地,当所述智能密钥装置的使用状态为空卡状态时,所述智能密钥装置执行写第二密钥的指令前,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置接收的APDU是否为写第二密钥的指令,如果是写第二密钥的指令,所述智能密钥装置使用第三密钥密钥对所述智能密钥装置接收的APDU进行解密,得到明文的写第二密钥的指令的APDU,进行写所述第二密钥的操作,将所述第二密钥使用所述第一密钥加密后,保存在所述智能密钥装置的可写存储区,,并继续等待所述主机下发新的APDU,如果不是写第二密钥的指令,所述智能密钥装置向所述主机返回所述智能密钥装置处于空卡状态的错误,并继续等待所述主机下发新的APDU。
相应地,所述第三密钥为所述智能密钥装置与所述主机预先约定,并预先存储在所述智能密钥装置的ROM中,当所述智能密钥装置生成所述第一密钥后,所述智能密钥装置将所述第三密钥读出,并使用所述第一密钥加密后保存在所述智能密钥装置的可写存储区中,所述智能密钥装置使用第三密钥密钥对所述智能密钥装置接收的APDU进行解密前,所述智能密钥装置使用所述第一密钥对所述可写存储区中保存的密文的所述第三密钥进行解密,得到明文的所述第三密钥。
相应地,所述智能密钥装置得到明文的写第二密钥的指令的APDU后,进行写所述第二密钥的操作前,所述方法还包括:
所述智能密钥装置验证第一消息鉴别码是否正确,所述智能密钥装置根据所述第二随机数生成第二消息鉴别码,并使用所述第二消息鉴别码与所述第一消息鉴别码进行比对,如果相同,则所述第一消息鉴别码正确,执行写所述第二密钥的操作,如果不相同,则所述第一消息鉴别码不正确,向所述主机返回第一消息鉴别码错误的消息,其中,所述第一消息鉴别码包含在所述明文的写第二密钥的指令的APDU中。
相应地,所述智能密钥装置接收到所述主机下发的APDU前,所述方法还包括:
所述主机向所述智能密钥装置发送获取第二随机数的请求,所述智能密钥装置生成所述第二随机数,并将所述第二随机数发送给所述主机,所述主机使用所述第二随机数生成第一消息鉴别码。
优选地,当所述智能密钥装置的使用状态为初始化状态时,所述智能密钥装置执行创建文件的指令前,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置接收的APDU是否为创建文件的指令;
如果是创建文件的指令,所述智能密钥装置使用所述第一密钥对所述保存在可写存储区中的密文的所述第二密钥进行解密,得到明文的所述第二密钥,所述智能密钥装置使用所述明文的第二密钥对所述智能密钥装置接收的APDU进行解密,得到明文的创建文件的指令的APDU,执行所述创建文件的操作,并判断是否所述智能密钥装置的文件创建全部完成,如果是,将所述智能密钥装置的使用状态修改为应用状态,等待所述主机下发新的APDU,如果不是,继续等待所述主机下发新的APDU;
如果不是创建文件的指令,所述智能密钥装置向所述主机返回所述智能密钥装置未完成初始化的操作,并继续等待下发新的APDU。
相应地,所述智能密钥装置得到明文的创建文件的指令的APDU后,执行所述创建文件的操作前,所述方法还包括:
所述智能密钥装置验证第三消息鉴别码是否正确,所述智能密钥装置根据所述第三随机数生成第四消息鉴别码,并使用所述第四消息鉴别码与所述第三消息鉴别码进行比对,如果相同,则所述第三消息鉴别码正确,执行所述创建文件的指令,如果不相同,则所述第三消息鉴别码不正确,向所述主机返回所述第三消息鉴别码错误的消息,其中,所述第三消息鉴别码包含在所述明文的创建文件的指令的APDU中。
相应地,所述智能密钥装置接收到所述主机下发的APDU前,所述方法还包括:
所述主机向所述智能密钥装置发送获取第三随机数的请求,所述智能密钥装置生成所述第三随机数,并将所述第三随机数发送给所述主机,所述主机使用所述第三随机数生成第三消息鉴别码。
优选地,当所述智能密钥装置的使用状态为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用前,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置接收的APDU是否为应用类型的APDU指令,如果是应用类型的APDU指令,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,,继续等待并接受新的APDU,如果不是应用类型的APDU指令,所述智能密钥装置向所述主机返回错误,继续等待并接受新的APDU。
优选地,卡内操作系统判断所述智能密钥装置为首次上电,具体的包括:
所述卡内操作系统判断所述智能密钥装置的可写存储区是否为空白,如果为空白,则所述智能密钥装置为首次上电,如果不是空白,则所述智能密钥装置不是首次上电。
优选地,在所述智能密钥装置第一次上电后,在所述智能密钥装置的可写存储区中写入所述智能密钥装置的使用状态标志位,所述卡内操作系统通过读取所述智能密钥装置的使用状态标志位判断所述智能密钥装置的使用状态是否为空卡状态、初始化状态或应用状态。
优选地,所述方法还包括:
当所述智能密钥装置的生命周期终止时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当连续认证解锁码错误次数超过约定次数时,擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当所述智能密钥装置接收到用户发出的销毁所述智能密钥装置的指令时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态。
一种密钥管理方法,所述方法包括:
智能密钥装置接入主机,卡内操作系统判断所述智能密钥装置为首次上电时,生成第一随机数作为第一密钥;
所述智能密钥装置执行通信初始化操作,等待并接收所述主机下发的APDU;
当接收到所述主机下发的APDU后,判断所述智能密钥装置的生命周期是否终止;
如果所述生命周期没有终止,判断所述APDU的类型,并执行如下操作:
当所述APDU为写第二密钥的指令时,判断所述智能密钥装置的使用状态是否为空卡状态,如果是空卡状态,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU,如果不是空卡状态,所述智能密钥装置向所述主机返回所述智能密钥装置不是空卡状态的错误,继续等待并接收新的APDU;
当所述APDU为创建文件的指令时,判断所述智能密钥装置的使用状态是否为初始化状态,如果是初始化状态,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU,如果不是初始化状态,所述智能密钥装置向所述主机返回所述智能密钥装置不是初始化状态的错误,继续等待并接收新的APDU;
当所述APDU为应用类型的指令时,判断所述智能密钥装置的使用状态是否为应用状态,如果是应用状态,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU,如果不是应用状态,所述智能密钥装置向所述主机返回所述智能密钥装置不是应用状态的错误,,继续等待并接收新的APDU;
如果所述生命周期终止,所述智能密钥装置向所述主机返回所述智能密钥装置的生命周期终止的错误,并继续等待所述主机下发新的APDU。
优选地,所述智能密钥装置执行写第二密钥的操作,具体的包括:
所述智能密钥装置使用第三密钥密钥对所述智能密钥装置接收的APDU进行解密,得到明文的写第二密钥的指令的APDU,进行写所述第二密钥的操作,将所述第二密钥使用所述第一密钥加密后,保存在所述智能密钥装置的可写存储区。
相应地,所述第三密钥为所述智能密钥装置与所述主机预先约定,并预先存储在所述智能密钥装置的ROM(Read-Only Memory,只读存储器)中,当所述智能密钥装置生成所述第一密钥后,所述智能密钥装置将所述第三密钥读出,并使用所述第一密钥加密后保存在所述智能密钥装置的可写存储区中,所述智能密钥装置使用第三密钥密钥对所述智能密钥装置接收的APDU进行解密前,所述智能密钥装置使用所述第一密钥对所述可写存储区中保存的密文的所述第三密钥进行解密,得到明文的所述第三密钥。
优选地,所述智能密钥装置得到明文的写第二密钥的指令的APDU后,进行写所述第二密钥的操作前,所述方法还包括:
所述智能密钥装置验证第一消息鉴别码是否正确,所述智能密钥装置根据所述第二随机数生成第二消息鉴别码,并使用所述第二消息鉴别码与所述第一消息鉴别码进行比对,如果相同,则所述第一消息鉴别码正确,执行写所述第二密钥的操作,如果不相同,则所述第一消息鉴别码不正确,向所述主机返回第一消息鉴别码错误的消息,其中,所述第一消息鉴别码包含在所述明文的写第二密钥的指令的APDU中。
相应地,所述智能密钥装置接收到所述主机下发的APDU前,所述方法还包括:
所述主机向所述智能密钥装置发送获取第二随机数的请求,所述智能密钥装置生成所述第二随机数,并将所述第二随机数发送给所述主机,所述主机使用所述第二随机数生成第一消息鉴别码。
优选地,所述智能密钥装置执行创建文件的指令,具体的包括:
所述智能密钥装置使用所述第一密钥对所述保存在可写存储区中的密文的所述第二密钥进行解密,得到明文的所述第二密钥,所述智能密钥装置使用所述明文的第二密钥对所述智能密钥装置接收的APDU进行解密,得到明文的创建文件的指令的APDU,执行创建文件的操作,并判断是否所述智能密钥装置的文件创建全部完成,如果是,将所述智能密钥装置的使用状态修改为应用状态,等待所述主机下发新的APDU,如果不是,继续等待所述主机下发新的APDU。
相应地,其特征在于,所述智能密钥装置得到明文的创建文件的指令的APDU后,执行所述创建文件的操作前,所述方法还包括:
所述智能密钥装置验证第三消息鉴别码是否正确,所述智能密钥装置根据所述第三随机数生成第四消息鉴别码,并使用所述第四消息鉴别码与所述第三消息鉴别码进行比对,如果相同,则所述第三消息鉴别码正确,执行所述创建文件的指令,如果不相同,则所述第三消息鉴别码不正确,向所述主机返回所述第三消息鉴别码错误的消息,其中,所述第三消息鉴别码包含在所述明文的创建文件的指令的APDU中。
相应地,所述智能密钥装置接收到所述主机下发的APDU前,所述方法还包括:
所述主机向所述智能密钥装置发送获取第三随机数的请求,所述智能密钥装置生成所述第三随机数,并将所述第三随机数发送给所述主机,所述主机使用所述第三随机数生成第三消息鉴别码。
优选地,卡内操作系统判断所述智能密钥装置为首次上电,具体的包括:
所述卡内操作系统判断所述智能密钥装置的可写存储区是否为空白,如果为空白,则所述智能密钥装置为首次上电,如果不是空白,则所述智能密钥装置不是首次上电。
优选地,在所述智能密钥装置第一次上电后,在所述智能密钥装置的可写存储区中写入所述智能密钥装置的使用状态标志位,所述卡内操作系统通过读取所述智能密钥装置的使用状态标志位判断所述智能密钥装置的使用状态是否为空卡状态、初始化状态或应用状态。
优选地,所述方法还包括:
当所述智能密钥装置的生命周期终止时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当连续认证解锁码错误次数超过约定次数时,擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当所述智能密钥装置接收到用户发出的销毁所述智能密钥装置的指令时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
一种签名系统,所述系统包括主机和智能密钥装置:
所述主机包括:APDU发送模块、第一接口模块;
所述APDU发送模块,用于向智能密钥装置发送APDU;
所述第一接口模块,用于与智能密钥装置建立连接和进行数据通信;
智能密钥装置包括:上电判断模块、随机数生成模块、APDU接收模块、生命周期判断模块、空卡判断模块、写第二密钥模块、初始化判断模块、文件创建模块、应用判断模块、应用模块、错误处理模块、存储模块;
所述上电判断模块,用于判断智能密钥装置是否为首次上电;
所述随机数生成模块,用于当所述上电判断模块判断智能密钥装置为首次上电时,根据算法生成第一随机数,并将第一随机数作为第一密钥;
所述APDU接收模块,用于在智能密钥装置生成第一密钥后,等待并接收主机下发APDU;
所述生命周期判断模块,用于判断智能密钥装置的生命周期是否终止;
所述空卡判断模块,用于判断智能密钥装置的使用状态是否为空卡状态;
所述写第二密钥模块,用于在所述空卡判断模块判断智能密钥装置的使用状态为空卡状态时,执行写第二密钥的指令,并将智能密钥装置的使用状态修改为初始化状态,完成后通知所述APDU接收模块继续等待主机下发新的APDU;
所述初始化判断模块,用于判断智能密钥装置的使用状态是否为初始化状态;
所述文件创建模块,用于在所述初始化判断模块判断智能密钥装置的使用状态为初始化状态时,执行创建文件的指令,完成后通知所述APDU接收模块继续等待主机下发新的APDU;
所述应用判断模块,用于判断智能密钥装置的使用状态是否为应用状态;
所述应用模块,用于在所述应用判断模块判断智能密钥装置的使用状态为应用状态时,执行所述APDU接收模块接收的APDU的应用,完成后通知所述APDU接收模块继续等待主机下发新的APDU;
所述错误处理模块,用于当所述生命周期判断模块判断智能密钥装置的生命周期终止时,向主机返回智能密钥装置生命周期终止的错误,并使所述APDU接收模块继续等待并接收新的APDU;
所述存储模块,用于存储第一密钥。
优选地,所述上电判断模块用于判断所述智能密钥装置是否为首次上电,具体的包括:
所述上电判断模块判断所述存储模块中是否未存储任何数据,如果是,则所述智能密钥装置为首次上电,如果不是,则所述智能密钥装置不是首次上电。
优选地,所述存储模块还用于在所述智能密钥装置第一次上电后,在所述存储模块中写入所述智能密钥装置的使用状态标志位;
所述空卡判断模块具体地通过读取所述存储模块中的使用状态标志位判断所述智能密钥装置的使用状态是否为空卡状态;
所述初始化判断模块具体地通过读取所述存储模块中的使用状态标志位判断所述智能密钥装置的使用状态是否为初始化状态;
所述应用判断模块具体地通过读取所述存储模块中的使用状态标志位判断所述智能密钥装置的使用状态是否为应用状态。
优选地,所述系统还包括写第二密钥判断模块,所述写第二密钥判断模块用于,在所述写第二密钥模块执行写第二密钥的指令前,判断所述APDU接收模块接收的APDU是否为写第二密钥的指令,如果是写第二密钥的指令,所述写第二密钥模块使用所述第一密钥解密所述存储模块中存储的加密后的第三密钥,得到明文的第三密钥,并使用所述明文的第三密钥对所述写第二密钥指令的APDU进行解密,得到明文的写第二密钥指令的APDU,进行写所述第二密钥的操作,将所述第二密钥使用所述第一密钥加密后,保存在所述存储模块中。
相应地,所述存储模块还用于存储所述加密后的第二密钥和第三密钥,其中所述第三密钥为所述智能密钥装置与所述主机预先约定,并预先存储在所述智能密钥装置的ROM中,当所述智能密钥装置生成所述第一密钥后,所述智能密钥装置将所述第三密钥读出,并使用所述第一密钥加密后保存在所述智能密钥装置的可写存储区中。
相应地,在所述写第二密钥模块得到明文的写第二密钥指令的APDU后,进行写所述第二密钥的操作前,所述写第二密钥模块还用于,判断第一消息鉴别码是否正确,所述写第二密钥模块根据所述第二随机数生成第二消息鉴别码,并使用所述第二消息鉴别码与所述第一消息鉴别码进行比对,如果相同,则所述第一消息鉴别码正确,所述写第二密钥模块执行写所述第二密钥的操作,如果不相同,则所述第一消息鉴别码不正确,通过所述错误处理模块向所述主机返回第一消息鉴别码错误的消息,其中,所述第一消息鉴别码包含在所述明文的写第二密钥的指令的APDU中。
相应地,所述APDU接收模块接收所述写第二密钥指令的APDU前,所述APDU发送模块还用于,向所述随机数生成模块发送获取第二随机数的请求,所述随机数生成模块生成所述第二随机数并发送给所述APDU发送模块,所述APDU发送模块使用所述第二随机数生成所述第一消息鉴别码。
优选地,所述系统还包括创建文件判断模块,所述创建文件判断模块用于,在所述文件创建模块执行创建文件的指令前,判断所述APDU接收模块接收的APDU是否为创建文件的指令,如果是,所述文件创建模块使用所述第一密钥对所述存储模块中存储的加密后的第二密钥进行解密,得到明文的第二密钥,再使用所述明文的第二密钥对所述APDU接收模块接收的APDU进行解密,得到明文的创建文件的指令的APDU,所述文件创建模块执行所述创建文件的操作。
相应地,所述文件创建模块得到明文的创建文件的指令的APDU后,所述文件创建模块执行所述创建文件的操作前,所述文件创建模块还用于,判断第三消息鉴别码是否正确,所述文件创建模块根据所述第三随机数生成第四消息鉴别码,并使用所述第四消息鉴别码与所述第三消息鉴别码进行比对,如果相同,则所述第三消息鉴别码正确,所述文件创建模块执行所述创建文件的指令,如果不相同,则所述第三消息鉴别码不正确,通过所述错误处理模块向所述主机返回所述第三消息鉴别码错误的消息,其中,所述第三消息鉴别码包含在所述明文的创建文件的指令的APDU中。
相应地,所述APDU接收模块接收所述创建文件的指令的APDU前,所述APDU发送模块还用于,向所述随机数生成模块发送获取第三随机数的请求,所述随机数生成模块生成所述第三随机数并发送给所述APDU发送模块,所述APDU发送模块使用所述第三随机数生成所述第三消息鉴别码。
相应地,所述文件创建模块执行创建文件的操作结束后,所述文件创建模块还用于,判断是否所述智能密钥装置的文件创建全部完成,如果是,将所述智能密钥装置的使用状态修改为应用状态,等待所述主机下发新的APDU,如果不是,通知所述APDU接收模块继续等待所述主机下发新的APDU。
优选地,所述系统还包括密钥擦除模块,所述密钥擦除模块用于当所述智能密钥装置的生命周期终止时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当连续认证解锁码错误次数超过约定次数时,擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当所述智能密钥装置接收到用户发出的销毁所述智能密钥装置的指令时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态。
本发明实施例提供的技术方案带来的有益效果是:本实施例所提供的一种密钥管理方法,克服了现有技术中的密钥容易被攻击从智能密钥装置中读出的缺点,即使密钥被读出也为密文,因此增强了USB Key的安全性,并且在智能密钥装置中的用户敏感信息使用主控密钥加密保存,同样增加了安全性,在智能密钥装置销毁时,只需擦除主控密钥就可以使整个智能密钥装置作废,销毁简便。
附图说明
图1为本发明具体实施例一中一种密钥管理方法流程图。
图2为本发明具体实施例一中USB Key生成管理密钥的方法流程图。
图3为本发明具体实施例一中在密钥使用过程中USB Key实现验证PIN码的方法流程图。
图4为本发明具体实施例二中一种密钥管理方法流程图。
图5为本发明具体实施例三中一种密钥管理方法流程图。
图6为本发明具体实施例四中一种密钥管理方法流程图。
图7为本发明具体实施例二中一种密钥管理系统框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
本实施例提供了一种密钥管理方法,在本实施例中,智能密钥装置以USBKey为例进行说明,通过对USB Key从上电到进行应用的过程,对USB Key中的主要密钥和密钥的生成、保存、使用和销毁过程进行说明,参加图1,具体的如下:
步骤101,USB Key接入主机,上电;
步骤102,COS判断USB Key是否为首次上电,如果是,执行步骤103,如果不是,执行步骤104;
在本实施例中,COS(Chip Operating System)为卡内操作系统,存储于上述USB Key中的ROM中;
COS判断USB Key是否为首次上电的方法具体的为:COS判断上述USBKey的数据存储区是否为全0或全F,当USB Key的数据存储区为全0或全F时,说明USB Key的数据存储区为空白,处于未写入数据状态,则USB Key为首次上电;另外,USB Key的数据存储区空白时为全0、全F或为其他情况,可以与芯片生产商约定;
步骤103,USB Key生成管理密钥MKey,执行步骤104;
在本实施例中,参加图2,USB Key生成管理密钥MKey具体的为:
103a,COS获取由USB Key硬件产生的真随机数R1,并将真随机数R1作为熵(或seed);
其中,USB Key硬件产生真随机数为通过噪声生成真随机数,上述噪声包括环境噪声、电流噪声等,具体的为:
1)COS向USB Key硬件发出获取真随机数的指令;
2)USB Key硬件采集噪声样点,并对噪声样点进行去除周期性、连续性、相关性等对随机性有影响的消极特性的操作;
3)USB Key硬件根据消除消极特性的噪声样点生成固定长度的真随机数R1;
4)USB Key硬件将真随机数R1返回给COS;
103b,COS根据真随机数R1生成伪随机数P1;
在本实施例中,COS生成伪随机数P1需要使用参数:3DES算法密钥Key、变量V、熵(seed),COS根据真随机数R1生成伪随机数P1,具体的为:
1)COS调用函数update(),将生成伪随机数需要使用的参数Key、V、熵进行初始化,Key、V、熵设置为0;
在本实施例中,优选地,Key为24字节长度的3DES密钥,V为8字节长度的变量,熵为32字节长度的真随机数;
2)使用Key对V进行3DES算法加密运算,得到一个8字节长度的加密结果A1;
3)将变量V的值增加一个步长得到V1,使用Key对V1进行3DES算法加密运算,得到一个8字节长度的加密结果A2;
在本实施例中,优选地,将变量V的值增加一个步长为将V的值增加1,以下增加一个步长的操作皆相同;
4)将变量V1的值增加1得到V2,使用Key对V2进行3DES算法加密运算,得到一个8字节长度的加密结果A3;
5)将变量V2的值增加1得到V3,使用Key对V3进行3DES算法加密运算,得到一个8字节长度的加密结果A4;
6)将A1、A2、A3、A4连接起来得到一个32字节的值N,并使用N与熵进行异或得到异或结果M,将M的前24个字节作为密钥Key1,后8个字节作为V5;
7)COS调用函数Generate(),使用Key1对V5进行3DES算法加密运算,得到一个8字节长度的结果A5;
8)将A5作为伪随机数P1返回给COS。
在本实施例中,伪随机数P1长度为8个字节,并且伪随机数P1的长度是可控制的,通过取A5的约定长度或对生成伪随机数的参数进行长度控制,而产生不同长度的伪随机数;
103c,将伪随机数P1作为USB Key的管理密钥MKey存储在USB Key的数据存储区;
其中,USB Key的管理密钥MKey不可被USB Key的外部命令读出;
步骤104,USB Key进行通信初始化;
在本实施例中,USB Key进行通信初始化,主要是指将USB Key的Ram中的全局变量等初始化,并向主机发送USB设备描述符,使得主机为上述USB Key设备加载驱动,以使主机和USB Key能够进行通信;
在本实施例中,以USB Key进行说明,智能密钥装置还可以为非接触式智能卡,非接触式智能卡在此步骤中,即为建立无线连接,并进行通信;
步骤105,USB Key等待并接收APDU;
在本实施例中,主机通过下发APDU(ApplicationProtocolDataUnit,应用协议数据单元)控制USB Key进行各种操作;
步骤106,USB Key判断生命周期状态和使用状态,当USB Key的生命周期终止时,执行步骤107,当USB Key的使用状态处于空卡状态时,执行步骤108,当USB Key的使用状态处于初始化状态时,执行步骤111,当USB Key的使用状态处于应用状态时,执行步骤114;
在本实施例中,USB Key中保存有两个预设的标志位,这两个标志位分别表示USB Key的生命周期状态和使用状态,其中,优选地,USB Key的生命周期使用一个字节表示,USB Key读取该字节,并根据该字节判断是否USB Key的生命周期终止,如果终止,USB Key将不能执行任何APDU;
USB Key的使用状态包括空卡状态、初始化状态、应用状态、终止使用状态,将使用状态标识位优选地使用一个字节表示,使用0x00、0x01、0x02、0x03分别表示USB Key的使用状态处于空卡状态、初始化状态、应用状态、终止使用状态,具体地:
当USB Key未写入主控密钥CKey时,将USB Key设定为空卡状态;
当USB Key写入主控密钥成功后,未建立文件完成时,USB Key为初始化状态;
当USB Key建立文件完成后且生命周期未终止时,USB Key为应用状态;
当USB Key的生命周期终止后,USB Key为停止使用状态;
相应地,USB Key通过读取USB Key的使用状态标志位中的数值判断USBKey所处的使用状态;
在本实施例中,需要注意的是,当USB Key的生命周期终止时,USB Key不能执行任何APDU,所以在进行USB Key的生命周期和使用状态判断时,优选地,采取如下办法,先读取USB Key的生命周期标志位,对USB Key的生命周期进行判断,当USB Key的生命周期未结束时,USB Key再读取USB Key的使用状态标志位,判断USB Key的使用状态处于哪一状态;
但是,也可以采取先读取USB Key的使用状态标志位,对USB Key的使用状态进行,然后再读取USB Key的生命周期的标志位,判断USBKey的生命周期是否终止,如果终止,不能执行任何的APDU,如果没有终止,则按照使用状态的判断结果执行操作,但是为了节省资源、简化方法,应采用先判断USBKey的生命周期的方法;
也可以采取将USB Key生命周期的标志位和使用状态标志位统一为一个标志位的方法,将统一后的标志位设置为五种状态;
步骤107,向主机返回生命周期终止的错误状态码,返回步骤105,继续等待并接收新的APDU;
为了表示USB Key的各种错误,可以与USB Key约定错误状态码,在本实施例中,当USB Key的生命周期终止时,使用状态码0x6A81表示该错误;
步骤108,COS判断USB Key接收的APDU是否为写主控密钥CKey的指令的APDU,如果是,执行步骤109,如果不是,执行步骤110;
在本步骤中,以接到的APDU为写主控密钥的指令为例进行说明,写主控密钥CKey的指令的APDU具体的可以为:
84E4000014 6C5E94DCADD39F1D3AD217812B81E7AD  304F5EDC
在上述写主控密钥的APDU中,0x84表示该APDU的数据区为密文,0xE4表示该APDU执行的命令为写主控密钥,0000为参数Parameters1和2,0x14表示其后面APDU的长度,6C5E94DCADD39F1D3AD217812B81E7AD为该APDU的数据区,为主控密钥,并且为密文形式,0x304F5EDC为消息鉴别码MAC1’;
由上可知,判断APDU是否为写主控密钥的指令的APDU的方法为:读取USB Key接收的APDU的第二个字节,如果为E4则为写主控密钥指令;
步骤109,USB Key使用传输密钥TKey将上述写主控密钥CKey的指令的APDU进行解密,得到明文的主控密钥CKey,USB Key执行写入主控密钥CKey的操作,将明文的主控密钥CKey使用管理密钥MKey进行加密,并保存在USBKey的数据存储区,返回步骤105,继续等待并接收新的APDU;
在本实施例中,传输密钥TKey为USB Key与主机预先约定的密钥,并且将传输密钥TKey预先写入USB Key的ROM存储区中,当USB Key第一次上电时,COS将传输密钥TKey从ROM存储区中读出,使用管理密钥MKey加密后存储在USB Key的数据存储区中,主机可通过向USB Key发送APDU修改传输密钥TKey;
在本实施例中,假设传输密钥TKey为0102030405060708,USB Key使用上述传输密钥TKey对上述写主控密钥CKey的指令的APDU进行解密,具体的为对上述写主控密钥CKey的指令的APDU的数据区进行解密,得到明文的主控密钥为:
112233445566778899aabbccddeeff00
由步骤109中,写主控密钥的APDU中包括消息鉴别码MAC1’,在主机向USB Key发送写入主控密钥CKey的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P2,并发送给主机,主机由伪随机数P2、传输密钥TKey等生成一个消息鉴别码(Message Authentication Code,MAC)为MAC1’,上述生成伪随机数P2的算法与步骤103中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得计算得出的伪随机数不同。
相应地,在USB Key对上述接收的写主控密钥CKey的指令的APDU进行解密后,USB Key执行写入主控密钥CKey的操作前,还包括:
USB Key判断消息鉴别码MAC1’是否正确,判断的方法为:USB Key按照于主机生成消息鉴别码MAC1’相同的算法,生成消息鉴别码MAC1,将消息鉴别码MAC1’与MAC1进行比对,如果相同,则认为消息鉴别码MAC1’正确,USB Key执行写入主控密钥CKey的操作,如果不相同,则认为消息鉴别码MAC1’不正确,向主机返回消息鉴别码错误的状态码。
优选地,主机由伪随机数P2、传输密钥TKey等生成消息鉴别码MAC1’的方法具体的为:
将写主控密钥指令的APDU中的标记84、APDU参数Parameters1和2、表示长度部分、明文的主控密钥、伪随机数P2、传输密钥TKey使用CBC(CipherBlock Concatenation,加密块链接模式)模式进行加密运算,得到消息鉴别码MAC1’。
上述描述中的CBC的加密模式具体过程如下:首先,将明文分成固定长度(例如64位)的块(明文块0,明文块1...),然后,将前面一个加密块输出的密文(例如密文块0)与下一个要加密的明文块(例如明文块1)进行XOR(异或)操作计算,将计算结果再用密钥进行加密得到密文。
在USB Key将明文的主控密钥CKey使用管理密钥MKey进行加密并保存在USB Key的数据存储区后,还包括:
USB Key将自身使用状态置为初始化状态,在本实施例中具体的为,将USBKey的使用状态标志位修改为0x01;
步骤110,USB Key向主机返回USB Key为空卡状态的错误状态码,返回步骤105,继续等待并接收新的APDU;
在本实施例中,当USB Key的使用状态为空卡状态时,必须先写入主控密钥才可以进行处理其他APDU的操作,优选地,USB Key向主机返回USB Key为空卡状态的错误状态码为0x6981;
步骤111,判断USB Key接收的APDU是否为创建文件的指令的APDU,如果是,执行步骤112,如果不是,执行步骤113;
步骤112,USB Key执行创建文件的指令,返回步骤105,继续等待并接收新的APDU;
在本实施例中,在对USB Key的文件进行创建时,优选地使用以下文件系统的结构,使文件系统由主文件MF(Master File)、专用文件DF(Dedicated File)、基本文件EF(Element Flie)构成,并且为树结构,主文件MF为根节点,专用文件DF为中间节点,基本文件EF为叶节点,每个专用文件DF都有自己的安全机制,并且单独管理,在对EF文件进行创建时规定EF文件的读写权限,在存放USB Key的密钥时,将其存储在内部基本文件EF中,将读写权限设定为不可由外部读出,当获得合法权限后,可在内部使用USB Key的密钥完成加解密操作;
其中,在EF文件中,包括秘密文件、二进制文件、循环文件等,在本实施例中,创建文件的指令主要包括:创建MF文件的指令、创建秘密文件的指令、安装秘密的指令,下面分别以这三种指令举例进行说明。
1)当USB Key接收的APDU为创建文件的指令的APDU时,并且为创建MF文件的指令的APDU时,所述APDU具体的为:
84 E0 00 00 14 41 28 72 CA 6D 62 CC 6E 0D D5 CB 5C 74 0C 2F 5F 59 E2 3FE55F 4F 502B CC 4F 74 20 BA DB E6 1F B1 EC F6 FC
其中,在本实施例中APDU全部使用16进制表示,84表示该APDU的数据区为密文,E0表示该APDU进行的操作为创建MF,0000为参数Parameters1和2,14表示该字节后APDU的长度,412872CA 6D 62CC 6E 0D D5CB 5C 740C 2F 5F 59E23F E55F 4F 502B CC 4F 7420BA DB E61F为MF文件的参数,包括MF文件的大小、索引等,最后四个字节B1 EC F6 FC为消息鉴别码MAC2’;
因此,COS判断APDU的方法为,读取所述智能密钥装置接收的APDU的第二个字节,如果为E0则为创建MF的指令;
USB Key使用管理密钥MKey将USB Key的数据存储区中保存的主控密钥CKey进行解密,得到明文的主控密钥CKey,并使用主控密钥CKey对上述创建MF文件的指令的APDU进行解密,具体的为对创建MF文件的指令的APDU的数据区进行解密,得到明文的创建MF文件的参数,具体的为:
3F 00 04 11 00 50 C0 C0 10 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00 0080 00 00 00 00 00 00
其中,3F 00 04 11 00 50 C0 C0 10 31 50 41 59 2E 53 59 53 2E 44 44 46 30 3100 00为明文的创建MF文件的参数,80 00 00 00 00 00 00为对创建MF文件的参数进行加密时的补位数据;
USB Key得到明文的创建MF文件的指令的APDU后,根据MF文件的参数,执行创建MF文件的操作,并向主机返回创建MF文件成功的状态码;
在本实施例中,在主机向USB Key发送创建MF文件的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P3,并返回给主机,主机由伪随机数P3、主控密钥CKey等生成消息鉴别码MAC2’,其中,上述生成伪随机数P3的算法与步骤103中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得USB Key计算得出的伪随机数不同;
主机由伪随机数P3、主控密钥CKey生成消息鉴别码MAC2’的方法具体的包括:
将写主控密钥指令的APDU中的标记84、APDU参数Parameters1和2、表示长度部分、明文的创建MF文件的参数和补位、伪随机数P3、主控密钥CKey使用CBC(Cipher Block Concatenation,加密块链接模式)模式进行加密运算,得到消息鉴别码MAC2’。
相应地,在USB Key得到明文的创建MF文件的指令的APDU后,执行创建MF文件的操作前,还包括:
USB Key判断消息鉴别码MAC2’是否正确,如果正确,则USB Key执行创建MF文件的操作,如果不正确,则返回消息鉴别码错误的状态码;
上述USB Key判断消息鉴别码MAC2’是否正确的方法具体的为,USB Key使用管理密钥MKey对USB Key中存储的加密的主控密钥CKey进行解密,得到明文的主控密钥CKey,使用伪随机数P3、主控密钥CKey等利用与主机生成消息鉴别码MAC2’相同的算法生成消息鉴别码MAC2,将消息鉴别码MAC2’与MAC2进行比对,如果相同,则认为消息鉴别码MAC2’正确,如果不相同,则认为消息鉴别码MAC2’不正确。
需要说明的是,MF文件为根文件,只有创建MF文件完成后,才可以创建下一级文件。
2)当USB Key接收的APDU为创建文件的指令的APDU时,并且为创建秘密文件的指令的APDU时,本步骤以创建的秘密文件为存储用户PIN码的秘密文件为例进行说明,所述APDU具体的为:
84 E1 00 01 0C 94 2D 21 7F B7 AF 5B 4C 44 1C 8D 2C
其中,创建秘密文件的指令的APDU中数据区(存放PIN码参数的部分)由主机使用主控密钥CKey加密,84表示该APDU的数据区为密文,E1表示该APDU执行创建秘密文件的操作,0001为创建PIN码文件的参数,0C为在这个字节后APDU的长度,94 2D 21 7F B7 AF 5B 4C为PIN码文件的参数的密文,包括PIN码文件的大小、索引等,441C8D2C为消息鉴别码MAC3’;
因此,COS判断APDU是否为创建秘密文件的方法为,读取APDU的第二个字节,当为E1时,为创建PIN码文件的指令,创建PIN码文件包含在创建秘密文件的指令中,因此该APDU为创建秘密文件的指令;
USB Key使用管理密钥MKey将USB Key中数据存储区中保存的主控密钥CKey进行解密,得到明文的主控密钥CKey,并使用主控密钥CKey对上述创建秘密文件的指令的APDU进行解密,得到明文的创建秘密文件参数具体的为:
7FFF101000000080
其中,7FFF1010000000为创建PIN码文件的参数,80为主机为所述创建PIN码文件的参数进行加密时,采用的补位;
USB Key得到明文的创建秘密文件的指令的APDU后,根据创建秘密文件的参数,创建秘密文件,并向主机返回创建秘密文件成功的状态码;
在本实施例中,在主机向USB Key发送创建秘密文件的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P4,并将伪随机数P4发送给主机,主机由伪随机数P4、主控密钥CKey等生成消息鉴别码MAC3’,其中,上述生成伪随机数P4的算法与步骤103中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得USB Key计算得出的伪随机数不同;
上述主机根据伪随机数P4、主控密钥CKey生成消息鉴别码MAC3’的算法与本步骤112中1)中主机生成消息鉴别码MAC2’的方法相同,这里不再赘述;
相应地,在USB Key得到明文的创建秘密文件的指令的APDU后,创建秘密文件前,还包括:
USB Key判断消息鉴别码MAC3’是否正确,如果正确,则USB Key执行创建秘密文件的操作,如果不正确,则返回消息鉴别码错误的状态码;
上述USB Key判断消息鉴别码MAC3’是否正确的方法具体的为,USB Key使用管理密钥MKey对USB Key中存储的加密的主控密钥CKey进行解密,得到明文的主控密钥CKey,使用伪随机数P4、主控密钥CKey等利用与主机生成消息鉴别码MAC3’相同的算法生成消息鉴别码MAC3,将消息鉴别码MAC3’与MAC3进行比对,如果相同,则认为消息鉴别码MAC3’正确,如果不相同,则认为消息鉴别码MAC3’不正确。
3)当USB Key接收的APDU为创建文件的指令的APDU,并且为安装秘密的指令的APDU时,所述APDU具体的为:
84 F0 00 00 14 EC A3 30 39 9B D0 6F 41 0D D7 B5 21 19 69 0D FB 23B7965A
在上述APDU中,84表示该APDU为密文,F0表示该APDU执行安装PIN码的指令,0000为参数Parameters1和2,14为该字节后APDU的长度,EC A330 39 9B D0 6F 41 0D D7 B5 21 19 69 0D FB为PIN码文件,23B7965A为MAC4’;
其中,在本发明中,秘密为用户的敏感数据,需进行加密保护,包括用户的PIN码、DES密钥、AES密钥等,在2)中以创建PIN码文件为例举例说明了创建秘密文件的方法,相应地,在这里以在上述PIN码文件中安装PIN码为例进行说明,上述APDU即为安装PIN码的指令的APDU;
USB Key使用管理密钥MKey将USBKey中数据存储区中保存的主控密钥CKey进行解密,得到明文的主控密钥CKey,并使用主控密钥CKey对上述安装秘密的指令的APDU进行解密,得到明文的PIN码文件,具体的为:
000000330102030405068000000000
其中,00000033为PIN码的参数,例如33表示PIN码最大可尝试验证次数为3次,剩余可连续验证失败次数为3次,010203040506为明文的PIN码,8000000000为对PIN码文件进行加密时的补位数据;
USB Key得到明文的安装PIN码的指令的APDU后,执行安装秘密的操作,根据PIN码文件的位置,将PIN码使用管理密钥MKey加密后存储在2)中创建的PIN码文件中,并向主机返回安装PIN码成功的状态码;
在本实施例中,在主机向USB Key发送安装秘密的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P5,并发送给主机,主机由伪随机数P5、主控密钥CKey等生成消息鉴别码MAC4’,其中,上述生成伪随机数P5的算法与步骤103中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得USB Key计算得出的伪随机数不同;
上述主机由伪随机数P5、主控密钥CKey等生成消息鉴别码MAC4’的方法与本步骤112中1)中主机生成消息鉴别码MAC2’的方法相同,这里不再赘述;
相应地,在USB Key得到明文的安装PIN码的指令的APDU后,执行安装秘密的操作前,还包括:
USB Key判断消息鉴别码MAC4’是否正确,如果正确,则USB Key执行安装秘密的操作,如果不正确,则返回消息鉴别码错误的状态码;
上述USB Key判断消息鉴别码MAC4’是否正确的方法具体的为,USB Key使用管理密钥MKey对USB Key中存储的加密的主控密钥CKey进行解密,得到明文的主控密钥CKey,使用伪随机数P5、主控密钥CKey等利用与主机生成消息鉴别码MAC4’相同的算法生成消息鉴别码MAC4,将消息鉴别码MAC4’与MAC4进行比对,如果相同,则认为消息鉴别码MAC4’正确,如果不相同,则认为消息鉴别码MAC4’不正确。
在步骤112中,还包括:当USB Key中文件系统建立完成,并将全部秘密安装完成后,将USB Key的使用状态修改为应用状态,并修改USB Key的生命周期,USB Key不可再写入密钥;
上述将USB Key的使用状态修改为应用状态,在本实施例中具体的为,将USB Key的使用状态为修改为0x02;
步骤113,USB Key向主机返回未进行初始化的错误的状态码,返回步骤105,继续等待并接收新的APDU;
步骤114,判断USB Key接收的APDU是否为应用类型的APDU,如果不是,执行步骤115,如果是,执行步骤116;
在本实施例中,USB Key根据自身的使用状态,在不同的使用状态时,只可以执行不同的APDU,当USB Key处于空卡状态时,只能执行写主控密钥的指令,当主控密钥写入USB Key后,将USB Key修改为初始化状态,当USB Key处于初始化状态时,USB Key可以执行创建文件和安装文件的APDU,当全部文件创建完成后,将USB Key的使用状态修改为应用状态,当USB Key处于应用状态后,只可以执行应用类型的APDU,所述应用类型的APDU包括验证PIN码、修改PIN码、签名、验证签名等智能密钥设备提供的应用;
步骤115,USB Key向主机返回错误,返回步骤105,继续等待并接收新的APDU;
步骤116,USB Key执行其接收的APDU中的指令中的应用,并返回步骤105,继续等待并接收新的APDU;
在本实施例中,在USB Key处于应用状态后,用户可使用USB Key进行应用操作,包括生成RSA密钥对,签名、验证签名、修改PIN码等,主机通过向USB Key下发应用APDU命令USB Key完成这些操作,并且在主机向USB Key发送APDU时可以采取将APDU加密和不加密两种方式。下面以USB Key进行签名操作为例进行说明,在USB Key中密钥的使用过程,如下:
当USB Key接收的为Verify PIN指令(即验证PIN码)的APDU时,参见图3,USB Key的操作为:
116a,USB Key使用管理密钥MKey对数据存储区中存储的主控密钥CKey进行解密,得到明文的主控密钥CKey;
116b,USB Key使用主控密钥CKey对验证PIN码的指令的APDU进行解密,得到明文的APDU;
在本实施例中,上述验证PIN码的指令明文的APDU为:
00 20 00 00 06 01 02 03 04 05 06
其中,00表示该APDU为明文,20表示进行验证PIN码的操作,0000为参数Parameters1和2,06表示该字节后APDU的长度,01 02 03 04 05 06表示用户输入的PIN码;
116c,USB Key判断消息鉴别码MAC5’是否正确,如果正确,执行步骤116e,如果不正确,执行步骤116d;
在本实施例中,在主机向USB Key下发验证PIN码的指令的APDU前,还包括:
主机向USB Key发送APDU,请求一个伪随机数P6,USB Key生成伪随机数P6,并发送给主机,主机由伪随机数P6、主控密钥CKey、验证PIN码的指令生成消息鉴别码MAC5’,优选地,使用CBC算法生成消息鉴别码MAC5’,与步骤112中使用方法相同,这里不再赘述;
USB Key判断消息鉴别码MAC5’的方法,具体的为:USB Key使用与主机生成消息鉴别码MAC5’相同的算法,使用伪随机数P6、主控密钥CKey、验证PIN码的指令生成消息鉴别码MAC5并与MAC5’进行比对,如果相同,则MAC5’正确,如果不相同,则MAC5’不正确;
116d,USB Key向主机返回消息鉴别码错误的状态码;
116e,USB Key使用管理密钥MKey将存储于USB Key中的合法PIN码进行解密,得到明文的合法PIN码;
116f,判断上述APDU中的PIN码是否正确,如果是,执行步骤116g,如果不是,执行步骤116h;
上述判断的方法具体的为:将上述验证PIN码指令APDU中的PIN码与USBKey中存储的合法的PIN码进行比对,如果相同,则PIN码正确如果不相同,则PIN码验证不正确;
116g,USB Key向主机返回PIN码正确的状态码;
116h,USB Key向主机返回PIN码错误的状态码,并将PIN码验证计数位减1。
在本实施例中,如步骤112中所述,在安装PIN码文件时,会在USB Key中存储有PIN码验证计数位,优选地为两个字节,高位表示USB Key可接收的连续验证PIN码失败的次数,低位字节表示该USB Key可以验证PIN码的剩余次数,当低字节为0时,USB Key的PIN码锁定,在解锁前不可再进行验证PIN码操作,例如在本实施例中,PIN码验证计数位在验证PIN码操作前初始化时为33,最多可以尝试连续验证PIN码3次,当验证PIN码失败一次后,PIN码验证计数位减1为32,当连续第二次验证PIN码失败后,再减1为31,当PIN码验证计数位为30时,USB Key锁定PIN码,只有解除PIN码锁定状态后,才可以进行验证PIN码的操作;
在本实施例中,还可以包括管理密钥MKey的销毁,具体的包括:
当USB Key的生命周期终止时,擦除USB Key中的管理密钥MKey;
或,
当外部认证连续验证解锁码超过约定的次数时,擦除USB Key中的管理密钥MKey;
或,
用户发出销毁USB Key的命令时,擦除USB Key中的管理密钥MKey。
在管理密钥MKey被擦除后,将USB Key的使用状态的标志位设置为终止使用状态,即将标志位设置为0x03,管理密钥MKey被擦除后,不可能再对USBKey中保存的其他密钥和加密的数据进行解密,USB Key不能再使用,保证了USB Key的安全性;
本实施例所提供的一种密钥管理方法,克服了现有技术中的密钥容易被攻击从智能密钥装置中读出的缺点,即使密钥被读出也为密文,因此增强了USBKey的安全性,并且在智能密钥装置中的用户敏感信息使用主控密钥加密保存,同样增加了安全性,在智能密钥装置销毁时,只需擦除主控密钥就可以使整个智能密钥装置作废,销毁简便。
实施例2
本实施例提供了一种密钥管理方法,在本实施例中,智能密钥装置以USBKey为例进行说明,通过对USB Key从上电到进行应用的过程,对USB Key中的主要密钥和密钥的生成、保存、使用和销毁过程进行说明,区别于实施例1,在本实施例中,USB Key根据接收的APDU,先判断APDU类型,再判断USBKey的使用状态,参加图4,具体如下:
步骤201,USB Key接入主机,上电;
步骤202:COS判断USB Key是否为首次上电,如果是,执行步骤203,如果不是,执行步骤204;
在本实施例中,COS(Chip Operating System)为卡内操作系统,存储于上述USB Key中的ROM中;
COS判断USB Key是否为首次上电的方法具体的为:COS判断上述USBKey的数据存储区是否为全0或全F,当USB Key的数据存储区为全0或全F时,说明USB Key的数据存储区为空白,处于未写入数据状态,则USB Key为首次上电;另外,USB Key的数据存储区空白时为全0、全F或为其他情况,可以与芯片生产商约定;
步骤203,USB Key生成管理密钥MKey,执行步骤204;
在本实施例中,USB Key生成管理密钥MKey的方法与实施例1中步骤103中相同,这里不再赘述;
步骤204,USB Key进行通信初始化;
在本实施例中,USB Key进行通信初始化,主要是指将USB Key的Ram中的全局变量等初始化,并向主机发送USB设备描述符,使得主机为上述USB Key设备加载驱动,以使主机和USB Key能够进行通信;
在本实施例中,以USB Key进行说明,智能密钥装置还可以为非接触式智能卡,非接触式智能卡在此步骤中,即为建立无线连接,并进行通信;
步骤205,USB Key等待并接收APDU;
在本实施例中,主机通过下发APDU(ApplicationProtocolDataUnit,应用协议数据单元)控制USB Key进行各种操作;
步骤206,COS判断USB Key的生命周期是否终止,如果是,执行步骤207,如果不是,执行步骤208;
在本实施例中,USB Key中写有记载有该USB Key生命周期的标志位,COS通过读取该标志位判断该USB Key的生命周期是否终止,判断方法与实施例1步骤106中方法相同,这里不再赘述;
步骤207,向主机返回生命周期终止的错误状态码,返回步骤205,继续等待并接收新的APDU;
为了表示USB Key的各种错误,可以与USB Key约定错误状态码,在本实施例中,当USB Key的生命周期终止时,使用状态码0x6A81表示该错误;
步骤208,COS判断USB Key接收的APDU类型,当为写主控密钥的APDU时,执行步骤209,当为创建文件APDU时,执行步骤212,当为应用类型的APDU时,执行步骤215;
在本实施例中,COS通过读取APDU指令的第二个字节来判断APDU的类型,在USB Key的应用中,COS和主机应协商APDU,根据APDU结构,使用指定的代号代表APDU的指令类型,本实施例在以下步骤中详细说明如何判断APDU类型;
步骤209,COS判断USB Key是否为空卡状态,如果是,执行步骤210,如果不是,执行步骤211;
在本实施例中,USB Key中保存有预设的标志位,用于标识该USB Key的使用状态,其中,USB Key的使用状态包括空卡状态、初始化状态、应用状态、终止使用状态,将使用状态标识位优选地使用一个字节表示,使用0x00、0x01、0x02、0x03分别表示USB Key的使用状态处于空卡状态、初始化状态、应用状态、终止使用状态,具体地:
当USB Key未写入主控密钥CKey时,将USB Key设定为空卡状态;
当USB Key写入主控密钥成功后,未建立文件完成时,USB Key为初始化状态;
当USB Key建立文件完成后且生命周期未终止时,USB Key为应用状态;
当USB Key的生命周期终止后,USB Key为停止使用状态;
相应地,USB Key通过读取USB Key的使用状态标志位中的数值判断USBKey所处的使用状态;
COS判断USB Key是否为空卡状态,具体的为,COS读取USB Key的使用状态标志位,如果为0x00,则为空卡状态,如果不为0x00,则不为空卡状态;
步骤210,USB Key执行写主控密钥的指令,USB Key使用传输密钥TKey将上述写主控密钥CKey的指令的APDU进行解密,得到明文的主控密钥CKey,USB Key执行写入主控密钥CKey的操作,将明文的主控密钥CKey使用管理密钥MKey进行加密,并保存在USB Key的数据存储区,返回步骤205,继续等待并接收新的APDU;
在本实施例中,写主控密钥的APDU具体的可以为:
84 E4000014  6C5E94DCADD39F1D3AD217812B81E7AD  304F5EDC
在上述写入主控密钥的APDU中,0x84表示该APDU的数据区为密文,0xE4表示该APDU执行的命令为写主控密钥,0000为参数Parameters1和2,0x14表示其后面APDU的长度,6C5E94DCADD39F1D3AD217812B81E7AD为该APDU的数据区,为主控密钥,并且为密文形式,0x304F5EDC为消息鉴别码MAC1’;
由上可知,判断APDU是否为写主控密钥的APDU的方法为:读取USB Key接收的APDU的第二个字节,如果为E4则为写主控密钥指令;
在本实施例中,传输密钥TKey为USB Key与主机预先约定的密钥,并且将传输密钥TKey预先写入USB Key的ROM存储区中,当USB Key第一次上电时,COS将传输密钥TKey从ROM存储区中读出,使用管理密钥MKey加密后存储在USB Key的数据存储区中,主机可通过向USB Key发送APDU修改传输密钥TKey;
在本实施例中,假设传输密钥TKey为0102030405060708,USB Key使用上述传输密钥TKey对上述写主控密钥CKey的指令的APDU进行解密,具体的为对得到明文上述写主控密钥CKey的指令的APDU的数据区进行解密,得到明文的主控密钥为:
112233445566778899aabbccddeeff00
其中,写主控密钥的APDU中包括消息鉴别码MAC1’,在主机向USB Key发送写入主控密钥CKey的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P2,并发送给主机,主机由伪随机数P2、传输密钥TKey等生成一个消息鉴别码(Message Authentication Code,MAC)为MAC1’,上述生成伪随机数P2的算法与实施例1中步骤103中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得计算得出的伪随机数不同。
相应地,在USB Key对上述接收的写主控密钥CKey的指令的APDU进行解密后,USB Key执行写入主控密钥CKey的操作前,还包括:
USB Key判断消息鉴别码MAC1’是否正确,判断的方法为:USB Key按照于主机生成消息鉴别码MAC1’相同的算法,生成消息鉴别码MAC1,将消息鉴别码MAC1’与MAC1进行比对,如果相同,则认为消息鉴别码MAC1’正确,USB Key执行写入主控密钥CKey的操作,如果不相同,则认为消息鉴别码MAC1’不正确,向主机返回消息鉴别码错误的状态码。
优选地,主机由伪随机数P2、传输密钥TKey等生成消息鉴别码MAC1’的方法具体的为:
将写主控密钥指令的APDU中的标记84、APDU参数Parameters1和2、表示长度部分、明文的主控密钥、伪随机数P2、传输密钥TKey使用CBC(Cipher Block Concatenation,加密块链接模式)模式进行加密运算,得到消息鉴别码MAC1’。
上述描述中的CBC的加密模式具体过程如下:首先,将明文分成固定长度(例如64位)的块(明文块0,明文块1...),然后,将前面一个加密块输出的密文(例如密文块0)与下一个要加密的明文块(例如明文块1)进行XOR(异或)操作计算,将计算结果再用密钥进行加密得到密文。
在USB Key将明文的主控密钥CKey使用管理密钥MKey进行加密并保存在USB Key的数据存储区后,还包括:
USB Key将自身使用状态置为初始化状态,在本实施例中具体的为,将USBKey的使用状态标志位修改为0x01;
步骤211,USB Key向主机返回USB Key不为空卡的使用状态的错误信息,返回步骤205,继续等待并接收新的APDU;
步骤212,COS判断USB Key的使用状态是否为初始化状态,如果是,执行步骤213,如果不是,执行步骤214;
在本实施例中,同步骤209中的方法,COS判断USB Key的使用状态是否为初始化状态,具体的可以为:
COS读取USB Key的使用状态标志位,如果为0x01,则为初始化状态,如果不为0x01,则不为初始化状态;
步骤213,USB Key执行创建文件的指令,返回步骤205,继续等待并接收新的APDU;
在本实施例中,在对USB Key的文件进行创建时,优选地使用以下文件系统的结构,使文件系统由主文件MF、专用文件DF、基本文件EF构成,并且为树结构,主文件MF为根节点,专用文件DF为中间节点,基本文件EF为叶节点,每个专用文件DF都有自己的安全机制,并且单独管理,在对EF文件进行创建时规定EF文件的读写权限,在存放USB Key的密钥时,将其存储在内部基本文件EF中,将读写权限设定为不可由外部读出,当获得合法权限后,可在内部使用USB Key的密钥完成加解密操作;
其中,在EF文件中,包括秘密文件、二进制文件、循环文件等,在本实施例中,创建文件的指令主要包括:创建MF文件的指令、创建秘密文件的指令、安装秘密的指令,下面分别以这三种指令举例进行说明。
1)当USB Key接收的APDU为创建文件的指令的APDU时,并且为创建MF文件的指令的APDU时,所述APDU具体的为:
84 E0 00 00 14 41 28 72 CA 6D 62 CC 6E 0D D5 CB 5C 740C 2F 5F 59 E2 3FE5 5F 4F 50 2B CC 4F 74 20 BA DB E6 1F B1 EC F6 FC
其中,在本实施例中APDU全部使用16进制表示,84表示该APDU的数据区为密文,E0表示该APDU进行的操作为创建MF,0000为参数Parameters1和2,14表示该字节后APDU的长度,412872CA 6D 62CC 6E 0D D5CB 5C 740C 2F 5F 59E23F E55F 4F 502B CC 4F 7420BA DB E61F为MF文件的参数,包括MF文件的大小、索引等,最后四个字节B1EC F6FC为消息鉴别码MAC2’;
因此,COS判断APDU的方法为,读取所述智能密钥装置接收的APDU的第二个字节,如果为E0则为创建MF的指令;
USB Key使用管理密钥MKey将USB Key中数据存储区中保存的主控密钥CKey进行解密,得到明文的主控密钥CKey,并使用主控密钥CKey对上述创建MF文件的指令的APDU进行解密,具体的为对创建MF文件的指令的APDU的数据区进行解密,得到明文的创建MF文件的参数,具体的为:
3F 00 04 11 00 50 C0 C0 10 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00 0080 00 00 00 00 00 00
其中,3F 00 04 11 00 50 C0 C0 10 31 50 41 59 2E 53 59 53 2E 44 44 46 30 3100 00为明文的创建MF文件的参数,80 00 00 00 00 00 00为对创建MF文件的参数进行加密时的补位数据;
USB Key得到明文的创建MF文件的指令的APDU后,根据MF文件的参数,执行创建MF文件的操作,并向主机返回创建MF文件成功的状态码;
在本实施例中,在主机向USB Key发送创建MF文件的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P3,并返回给主机,主机由伪随机数P3、主控密钥CKey等生成消息鉴别码MAC2’,其中,上述生成伪随机数P3的算法与实施例1中步骤103中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得USB Key计算得出的伪随机数不同;
主机由伪随机数P3、主控密钥CKey生成消息鉴别码MAC2’的方法具体的包括:
将写主控密钥指令的APDU中的标记84、APDU参数Parameters1和2、表示长度部分、明文的创建MF文件的参数和补位、伪随机数P3、主控密钥CKey使用CBC模式进行加密运算,得到消息鉴别码MAC2’。
相应地,在USB Key得到明文的创建MF文件的指令的APDU后,执行创建MF文件的操作前,还包括:
USB Key判断消息鉴别码MAC2’是否正确,如果正确,则USB Key执行创建MF文件的操作,如果不正确,则返回消息鉴别码错误的状态码;
上述USB Key判断消息鉴别码MAC2’是否正确的方法具体的为,USB Key使用管理密钥MKey对USB Key中存储的加密的主控密钥CKey进行解密,得到明文的主控密钥CKey,使用伪随机数P3、主控密钥CKey等利用与主机生成消息鉴别码MAC2’相同的算法生成消息鉴别码MAC2,将消息鉴别码MAC2’与MAC2进行比对,如果相同,则认为消息鉴别码MAC2’正确,如果不相同,则认为消息鉴别码MAC2’不正确。
需要说明的是,MF文件为根文件,只有创建MF文件完成后,才可以创建下一级文件。
2)当USB Key接收的APDU为创建文件的指令的APDU时,并且为创建秘密文件的指令的APDU时,本步骤以创建的秘密文件为存储用户PIN码的秘密文件为例进行说明,所述APDU具体的为:
84 E1 00 01 0C 94 2D 21 7F B7 AF 5B 4C 441C8D2C
其中,创建秘密文件的指令的APDU中数据区(存放PIN码参数的部分)由主机使用主控密钥CKey加密,84表示该APDU的数据区为密文,E1表示该APDU执行创建秘密文件的操作,0001为创建PIN码文件的参数,0C为在这个字节后APDU的长度,94 2D 21 7F B7 AF 5B 4C为PIN码文件的参数的密文,包括PIN码文件的大小、索引等,441C8D2C为消息鉴别码MAC3’;
因此,COS判断APDU是否为创建秘密文件的方法为,读取APDU的第二个字节,当为E1时,为创建PIN码文件的指令,创建PIN码文件包含在创建秘密文件的指令中,因此该APDU为创建秘密文件的指令;
USB Key使用管理密钥MKey将USB Key中数据存储区中保存的主控密钥CKey进行解密,得到明文的主控密钥CKey,并使用主控密钥CKey对上述创建秘密文件的指令的APDU进行解密,得到明文的创建秘密文件参数具体的为:
7FFF101000000080
其中,7FFF1010000000为创建PIN码文件的参数,80为主机为所述创建PIN码文件的参数进行加密时,采用的补位;
USB Key得到明文的创建秘密文件的指令的APDU后,根据创建秘密文件的参数,创建秘密文件,并向主机返回创建秘密文件成功的状态码;
在本实施例中,在主机向USB Key发送创建秘密文件的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P4,并将伪随机数P4发送给主机,主机由伪随机数P4、主控密钥CKey等生成消息鉴别码MAC3’,其中,上述生成伪随机数P4的算法与实施例1中步骤103中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得USB Key计算得出的伪随机数不同;
上述主机根据伪随机数P4、主控密钥CKey生成消息鉴别码MAC3’的算法与本步骤中1)中主机生成消息鉴别码MAC2’的方法相同,这里不再赘述;
相应地,在USB Key得到明文的创建秘密文件的指令的APDU后,创建秘密文件前,还包括:
USB Key判断消息鉴别码MAC3’是否正确,如果正确,则USB Key执行创建秘密文件的操作,如果不正确,则返回消息鉴别码错误的状态码;
上述USB Key判断消息鉴别码MAC3’是否正确的方法具体的为,USB Key使用管理密钥MKey对USB Key中存储的加密的主控密钥CKey进行解密,得到明文的主控密钥CKey,使用伪随机数P4、主控密钥CKey等利用与主机生成消息鉴别码MAC3’相同的算法生成消息鉴别码MAC3,将消息鉴别码MAC3’与MAC3进行比对,如果相同,则认为消息鉴别码MAC3’正确,如果不相同,则认为消息鉴别码MAC3’不正确。
3)当USB Key接收的APDU为创建文件的指令的APDU,并且为安装秘密的指令的APDU时,所述APDU具体的为:
84F0000014EC A3 30 39 9B D0 6F 41 0D D7 B5 21 19 69 0D FB 23B7965A
在上述APDU中,84表示该APDU为密文,F0表示该APDU执行安装PIN码的指令,0000为参数Parameters1和2,14为该字节后APDU的长度,EC A330 39 9B D0 6F 41 0D D7 B5 21 19 69 0D FB为PIN码文件,23B7965A为MAC4’;
其中,在本发明中,秘密为用户的敏感数据,需进行加密保护,包括用户的PIN码、DES密钥、AES密钥等,在2)中以创建PIN码文件为例举例说明了创建秘密文件的方法,相应地,在这里以在上述PIN码文件中安装PIN码为例进行说明,上述APDU即为安装PIN码的APDU;
USB Key使用管理密钥MKey将USB Key中数据存储区中保存的主控密钥CKey进行解密,得到明文的主控密钥CKey,并使用主控密钥CKey对上述安装秘密的指令的APDU进行解密,得到明文的PIN码文件,具体的为:
000000330102030405068000000000
其中,00000033为PIN码的参数,例如33表示PIN码最大可尝试验证次数为3次,剩余可连续验证失败次数为3次,010203040506为明文的PIN码,8000000000为对PIN码文件进行加密时的补位数据;
USB Key得到明文的安装PIN码的指令的APDU后,执行安装秘密的操作,根据PIN码文件的位置,将PIN码使用管理密钥MKey加密后存储在2)中创建的PIN码文件中,并向主机返回安装PIN码成功的状态码;
在本实施例中,在主机向USB Key发送安装秘密的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P5,并发送给主机,主机由伪随机数P5、主控密钥CKey等生成消息鉴别码MAC4’,其中,上述生成伪随机数P5的算法与实施例1中步骤103中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得USB Key计算得出的伪随机数不同;
上述主机由伪随机数P5、主控密钥CKey等生成消息鉴别码MAC4’的方法与本步骤中1)中主机生成消息鉴别码MAC2’的方法相同,这里不再赘述;
相应地,在USB Key得到明文的安装PIN码的指令的APDU后,执行安装秘密的操作前,还包括:
USB Key判断消息鉴别码MAC4’是否正确,如果正确,则USB Key执行安装秘密的操作,如果不正确,则返回消息鉴别码错误的状态码;
上述USB Key判断消息鉴别码MAC4’是否正确的方法具体的为,USB Key使用管理密钥MKey对USB Key中存储的加密的主控密钥CKey进行解密,得到明文的主控密钥CKey,使用伪随机数P5、主控密钥CKey等利用与主机生成消息鉴别码MAC4’相同的算法生成消息鉴别码MAC4,将消息鉴别码MAC4’与MAC4进行比对,如果相同,则认为消息鉴别码MAC4’正确,如果不相同,则认为消息鉴别码MAC4’不正确。
步骤214,USB Key返回USB Key未处于初始化状态的错误码,返回步骤205,继续等待并接收新的APDU;
步骤215,COS判断USB Key是否处于应用状态,如果是,执行步骤216,如果不是,执行步骤217;
在本实施例中,由步骤209可知,COS判断USB Key的使用状态是否为应用状态,具体的可以为:
COS读取USB Key的使用状态标志位,如果为0x02,则为应用状态,如果不为0x02,则不为应用状态;
步骤216,USB Key执行接收的APDU,执行完毕后,返回步骤205,继续等待并接收新的APDU;
其中,USB Key处于应用类型的APDU,包括生成RSA密钥对,签名、验证签名、修改PIN码等,主机通过向USB Key下发应用APDU命令使USB Key完成这些操作,并且在主机向USB Key发送APDU时可以采取将APDU加密和不加密两种方式,其处理方式与实施例1中步骤116中相同,这里不再赘述;
在本实施例中,还可以包括管理密钥MKey的销毁,具体的包括:
当USB Key的生命周期终止时,擦除USB Key中的管理密钥MKey;
或,
当外部认证连续验证解锁码超过约定的次数时,擦除USB Key中的管理密钥MKey;
或,
用户发出销毁USB Key的命令时,擦除USB Key中的管理密钥MKey。
在管理密钥MKey被擦除后,将USB Key的使用状态的标志位设置为终止使用状态,即将标志位设置为0x03,管理密钥MKey被擦除后,不可能再对USBKey中保存的其他密钥和加密的数据进行解密,USB Key不能再使用,保证了USB Key的安全性;
本实施例所提供的一种密钥管理方法,克服了现有技术中的密钥容易被攻击从智能密钥装置中读出的缺点,本发明提供的方法,即使密钥被读出也为英文,因此增强了USB Key的安全性,并且在智能密钥装置中的用户敏感信息使用主控密钥加密保存,同样增加了安全性,在智能密钥装置销毁时,只需擦除主控密钥就可以使整个智能密钥装置作废,销毁简便。
实施例3
本实施例提供了一种密钥管理方法,密钥管理的过程包括多个过程,主要为密钥生成、密钥存储、密钥使用和密钥销毁四个过程,在本发明的实施例中,智能密钥装置均以USB Key为例进行说明,并以USB Key从上电到完成USBKey的应用为例说明在USB Key中各种密钥的管理过程。
参加图5,具体步骤如下:
步骤301,USB Key接入主机,上电;
步骤302,COS判断USB Key是否为首次上电,如果是,执行步骤303,如果不是,执行步骤304;
在本实施例中,COS为卡内操作系统,存储于上述USB Key中的ROM中;
COS判断USB Key是否为首次上电的方法具体的为:COS判断上述USBKey的数据存储区是否为全0或全F,当USB Key的数据存储区为全0或全F时,说明USB Key的数据存储区为空白,处于未写入数据状态,则USB Key为首次上电;另外,USB Key的数据存储区空白时为全0、全F或为其他情况,可以与芯片生产商约定;
步骤303,USB Key生成管理密钥MKey,执行步骤304;
在本实施例中,USB Key生成管理密钥MKey具体的为:
303a,COS获取由USB Key硬件产生的真随机数R1,并将真随机数R1作为熵(或seed);
其中,USB Key硬件产生真随机数为通过噪声生成真随机数,上述噪声包括环境噪声、电流噪声等,具体的为:
1)COS向USB Key硬件发出获取真随机数的指令;
2)USB Key硬件采集噪声样点,并对噪声样点进行去除周期性、连续性、相关性等对随机性有影响的消极特性的操作;
3)USB Key硬件根据消除消极特性的噪声样点生成固定长度的真随机数R1;
4)USB Key硬件将真随机数R1返回给COS;
303b,COS根据真随机数R1生成伪随机数P1;
在本实施例中,COS生成伪随机数P1需要使用参数:3DES算法密钥Key、变量V、熵(seed),COS根据真随机数R1生成伪随机数P1,具体的为:
1)COS调用函数update(),将生成伪随机数需要使用的参数Key、V、熵进行初始化,Key、V、熵设置为0;
在本实施例中,优选地,Key为24字节长度的3DES密钥,V为8字节长度的变量,熵为32字节长度的真随机数;
2)使用Key对V进行3DES算法加密运算,得到一个8字节长度的加密结果A1;
3)将变量V的值增加一个步长得到V1,使用Key对V1进行3DES算法加密运算,得到一个8字节长度的加密结果A2;
在本实施例中,优选地,将变量V的值增加一个步长为将V的值增加1,以下增加一个步长的操作皆相同;
4)将变量V1的值增加1得到V2,使用Key对V2进行3DES算法加密运算,得到一个8字节长度的加密结果A3;
5)将变量V2的值增加1得到V3,使用Key对V3进行3DES算法加密运算,得到一个8字节长度的加密结果A4;
6)将A1、A2、A3、A4连接起来得到一个32字节的值N,并使用N与熵进行异或得到异或结果M,将M的前24个字节作为密钥Key1,后8个字节作为V5;
7)COS调用函数Generate(),使用Key1对V5进行3DES算法加密运算,得到一个8字节长度的结果A5;
8)将A5作为伪随机数P1返回给COS。
在本实施例中,伪随机数P1长度为8个字节,并且伪随机数P1的长度是可控制的,通过取A5的约定长度或对生成伪随机数的参数进行长度控制,而产生不同长度的伪随机数;
303c,将伪随机数P1作为USB Key的管理密钥MKey存储在USB Key的数据存储区;
其中,USB Key的管理密钥MKey不可被USB Key的外部命令读出;
步骤304,USB Key进行通信初始化;
在本实施例中,USB Key进行通信初始化,主要是指将USB Key的Ram中的全局变量等初始化,并向主机发送USB设备描述符,使得主机为上述USB Key设备加载驱动,以使主机和USB Key能够进行通信;
在本实施例中,以USB Key进行说明,智能密钥装置还可以为非接触式智能卡,非接触式智能卡在此步骤中,即为建立无线连接,并进行通信;
步骤305,USB Key等待并接收APDU;
在本实施例中,主机通过下发APDU控制USB Key进行各种操作;
步骤306,COS判断USB Key的生命周期是否终止,如果是,执行步骤307,如果不是,执行步骤308;
在本实施例中,生命周期标识了USB Key的生命周期长度和USB Key是否写入密钥的状态;
步骤307,向主机返回生命周期终止的错误状态码;
为了表示USB Key的各种错误,可以与USB Key约定错误状态码,在本实施例中,当USB Key的生命周期终止时,使用状态码0x6A81表示该错误;
步骤308,COS判断USB Key是否为空卡状态,如果是,执行步骤309,如果不是,执行步骤312;
在本实施例中,在USB Key的数据存储区设置一个字节作为该USB Key的使用状态的标志位,该标志位用以标志该USB Key的使用状态,将USB Key的使用状态分为四种:空卡状态,初始化状态,应用状态,终止使用状态,具体的:
当USB Key未写入主控密钥CKey时,将USB Key设定为空卡状态;
当USB Key写入主控密钥成功后,未建立文件完成时,USB Key为初始化状态;
当USB Key建立文件完成后且生命周期未终止时,USB Key为应用状态;
当USB Key的生命周期终止后,USB Key为停止使用状态;
优选地,使用0x00、0x01、0x02、0x03分别表示USB Key处于空卡状态、初始化状态、应用状态、终止使用状态;
因此,判断USB Key是否为空卡状态,具体的为:判断USB Key记录使用状态的标志位是否为0x00,如果是,则为空卡状态,否则,不为空卡状态;
步骤309,COS判断USB Key接收的APDU是否为写主控密钥CKey的指令的APDU,如果是,执行步骤311,如果不是,执行步骤310;
在本实施例中,写主控密钥CKey的指令的APDU具体的可以为:
84 E4 000014  6C5E94DCADD39F1D3AD217812B81E7AD  304F5EDC
在上述命令USB Key写入主控密钥的APDU中,0x84表示该APDU的数据区为密文,0xE4表示该APDU执行的命令为写主控密钥,0000为参数Parameters1和2,0x14表示其后面APDU  的长度,6C5E94DCADD39F1D3AD217812B81E7AD为该APDU的数据区,为主控密钥,并且为密文形式,0x304F5EDC为消息鉴别码MAC1’;
由上可知,判断APDU是否为写主控密钥的指令的APDU的方法为:读取USB Key接收的APDU的第二个字节,如果为E4则为写主控密钥指令;
步骤310,USB Key向主机返回USB Key为空卡状态的错误状态码,执行步骤305;
在本实施例中,当USB Key的使用状态为空卡状态时,必须先写入主控密钥才可以进行处理其他APDU的操作,优选地,USB Key向主机返回USB Key为空卡状态的错误状态码为0x6981;
步骤311,USB Key使用传输密钥TKey将上述写主控密钥CKey的指令的APDU进行解密,得到明文的主控密钥CKey,USB Key执行写入主控密钥CKey的操作,将明文的主控密钥CKey使用管理密钥MKey进行加密,并保存在USBKey的数据存储区,然后返回到步骤305,继续等待并接收新的APDU;
在本实施例中,传输密钥TKey为USB Key与主机预先约定的密钥,并且将传输密钥TKey预先写入USB Key的ROM存储区中,当USB Key第一次上电时,COS将传输密钥TKey从ROM存储区中读出,使用管理密钥MKey加密后存储在USB Key的数据存储区中,主机可通过向USB Key发送APDU修改传输密钥TKey;
在本实施例中,假设传输密钥TKey为0102030405060708,USB Key使用上述传输密钥TKey对上述写主控密钥CKey的指令的APDU进行解密,具体的为对得到明文上述写主控密钥CKey的指令的APDU的数据区进行解密,得到明文的主控密钥为:
112233445566778899aabbccddeeff00
由步骤309中,写主控密钥的APDU中包括消息鉴别码MAC1’,在主机向USB Key发送写入主控密钥CKey的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P2,并发送给主机,主机由伪随机数P2、传输密钥TKey等生成一个消息鉴别码为MAC1’,上述生成伪随机数P2的算法与步骤303中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得计算得出的伪随机数不同。
相应地,在USB Key对上述接收的写主控密钥CKey的指令的APDU进行解密后,USB Key执行写入主控密钥CKey的操作前,还包括:
USB Key判断消息鉴别码MAC1’是否正确,判断的方法为:USB Key按照于主机生成消息鉴别码MAC1’相同的算法,生成消息鉴别码MAC1,将消息鉴别码MAC1’与MAC1进行比对,如果相同,则认为消息鉴别码MAC1’正确,USB Key执行写入主控密钥CKey的操作,如果不相同,则认为消息鉴别码MAC1’不正确,向主机返回消息鉴别码错误的状态码。
优选地,主机由伪随机数P2、传输密钥TKey等生成消息鉴别码MAC1’的方法具体的为:
将写主控密钥指令的APDU中的标记84、APDU参数Parameters1和2、表示长度部分、明文的主控密钥、伪随机数P2、传输密钥TKey使用CBC(Cipher Block Concatenation,加密块链接模式)模式进行加密运算,得到消息鉴别码MAC1’。
上述描述中的CBC的加密模式具体过程如下:首先,将明文分成固定长度(例如64位)的块(明文块0,明文块1...),然后,将前面一个加密块输出的密文(例如密文块0)与下一个要加密的明文块(例如明文块1)进行XOR(异或)操作计算,将计算结果再用密钥进行加密得到密文。
在USB Key将明文的主控密钥CKey使用管理密钥MKey进行加密并保存在USB Key的数据存储区后,还包括:
USB Key将自身使用状态置为初始化状态,在本实施例中具体的为,将USBKey的使用状态标志位修改为0x01;
步骤312,COS判断USB Key的使用状态是否为初始化状态,如果是,执行步骤313,如果不是,执行步骤316;
在本实施例中,COS判断USB Key的使用状态是否为初始化状态的方法具体的为:COS读取USB Key的使用状态标志位,如果为0x01,则USB Key的使用状态为初始化状态,如果不是,USB Key的使用状态不为初始化状态;
步骤313,判断USB Key接收的APDU是否为创建文件的指令的APDU,如果是,执行步骤315,如果不是,执行步骤314;
步骤314,USB Key向主机返回未进行初始化的错误的状态码,执行步骤305;
步骤315,USB Key执行创建文件的指令,执行结束后返回步骤305,继续等待并接收新的APDU;
在本实施例中,在对USB Key的文件进行创建时,优选地使用以下文件系统的结构,使文件系统由主文件MF、专用文件DF、基本文件EF构成,并且为树结构,主文件MF为根节点,专用文件DF为中间节点,基本文件EF为叶节点,每个专用文件DF都有自己的安全机制,并且单独管理,在对EF文件进行创建时规定EF文件的读写权限,在存放USB Key的密钥时,将其存储在内部基本文件EF中,将读写权限设定为不可由外部读出,当获得合法权限后,可在内部使用USB Key的密钥完成加解密操作;
其中,在EF文件中,包括秘密文件、二进制文件、循环文件等,在本实施例中,创建文件的指令主要包括:创建MF文件的指令、创建秘密文件的指令、安装秘密的指令,下面分别以这三种指令举例进行说明。
1)当USB Key接收的APDU为创建文件的指令的APDU时,并且为创建MF文件的指令的APDU时,所述APDU具体的为:
84E0000014412872CA 6D 62CC 6E 0D D5CB 5C 740C 2F 5F 59E23F E55F 4F 502B CC 4F 7420BA DB E61F B 1EC F6FC
其中,在本实施例中APDU全部使用16进制表示,84表示该APDU的数据区为密文,E0表示该APDU进行的操作为创建MF,0000为参数Parameters1和2,14表示该字节后APDU的长度,412872CA 6D 62CC 6E 0D D5CB 5C 74
0C 2F 5F 59E23F E55F 4F 502B CC 4F 7420BA DB E61F为MF文件的参数,包括MF文件的大小、索引等,最后四个字节B1EC F6FC为消息鉴别码MAC2’;
因此,COS判断APDU的方法为,读取所述智能密钥装置接收的APDU的第二个字节,如果为E0则为创建MF的指令;
USB Key使用管理密钥MKey将USB Key中数据存储区中保存的主控密钥CKey进行解密,得到明文的主控密钥CKey,并使用主控密钥CKey对上述创建MF文件的指令的APDU进行解密,具体的为对创建MF文件的指令的APDU的数据区进行解密,得到明文的创建MF文件的参数,具体的为:
3F 00 04 11 00 50 C0 C0 10 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00 0080 00 00 00 00 00 00
其中,3F 00 04 11 00 50 C0 C0 10 31 50 41 59 2E 53 59 53 2E 44 44 46 30 3100 00为明文的创建MF文件的参数,80 00 00 00 00 00 00为对创建MF文件的参数进行加密时的补位数据;
USB Key得到明文的创建MF文件的指令的APDU后,根据MF文件的参数,执行创建MF文件的操作,并向主机返回创建MF文件成功的状态码;
在本实施例中,在主机向USB Key发送创建MF文件的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P3,并返回给主机,主机由伪随机数P3、主控密钥CKey等生成消息鉴别码MAC2’,其中,上述生成伪随机数P3的算法与步骤303中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得USBKey计算得出的伪随机数不同;
主机由伪随机数P3、主控密钥CKey生成消息鉴别码MAC2’的方法具体的包括:
将写主控密钥指令的APDU中的标记84、APDU参数Parameters1和2、表示长度部分、明文的创建MF文件的参数和补位、伪随机数P3、主控密钥CKey使用CBC(Cipher Block Concatenation,加密块链接模式)模式进行加密运算,得到消息鉴别码MAC2’。
相应地,在USB Key得到明文的创建MF文件的指令的APDU后,执行创建MF文件的操作前,还包括:
USB Key判断消息鉴别码MAC2’是否正确,如果正确,则USB Key执行创建MF文件的操作,如果不正确,则返回消息鉴别码错误的状态码;
上述USB Key判断消息鉴别码MAC2’是否正确的方法具体的为,USB Key使用管理密钥MKey对USB Key中存储的加密的主控密钥CKey进行解密,得到明文的主控密钥CKey,使用伪随机数P3、主控密钥CKey等利用与主机生成消息鉴别码MAC2’相同的算法生成消息鉴别码MAC2,将消息鉴别码MAC2’与MAC2进行比对,如果相同,则认为消息鉴别码MAC2’正确,如果不相同,则认为消息鉴别码MAC2’不正确。
需要说明的是,MF文件为根文件,只有创建MF文件完成后,才可以创建下一级文件。
2)当USB Key接收的APDU为创建文件的指令的APDU时,并且为创建秘密文件的指令的APDU时,本步骤以创建的秘密文件为存储用户PIN码的秘密文件为例进行说明,所述APDU具体的为:
84 E1 00 01 0C 94 2D 21 7F B7 AF 5B 4C 441C8D2C
其中,创建秘密文件的指令的APDU中数据区(存放PIN码参数的部分)由主机使用主控密钥CKey加密,84表示该APDU的数据区为密文,E1表示该APDU执行创建秘密文件的操作,0001为创建PIN码文件的参数,0C为在这个字节后APDU的长度,94 2D 21 7F B7 AF 5B 4C为PIN码文件的参数的密文,包括PIN码文件的大小、索引等,441C8D2C为消息鉴别码MAC3’;
因此,COS判断APDU是否为创建秘密文件的方法为,读取APDU的第二个字节,当为E1时,为创建PIN码文件的指令,创建PIN码文件包含在创建秘密文件的指令中,因此该APDU为创建秘密文件的指令;
USB Key使用管理密钥MKey将USB Key中数据存储区中保存的主控密钥CKey进行解密,得到明文的主控密钥CKey,并使用主控密钥CKey对上述创建秘密文件的指令的APDU进行解密,得到明文的创建秘密文件参数具体的为:
7FFF101000000080
其中,7FFF1010000000为创建PIN码文件的参数,80为主机为所述创建PIN码文件的参数进行加密时,采用的补位;
USB Key得到明文的创建秘密文件的指令的APDU后,根据创建秘密文件的参数,创建秘密文件,并向主机返回创建秘密文件成功的状态码;
在本实施例中,在主机向USB Key发送创建秘密文件的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P4,并将伪随机数P4发送给主机,主机由伪随机数P4、主控密钥CKey等生成消息鉴别码MAC3’,其中,上述生成伪随机数P4的算法与步骤303中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得USB Key计算得出的伪随机数不同;
上述主机根据伪随机数P4、主控密钥CKey生成消息鉴别码MAC3’的算法与本步骤315中1)中主机生成消息鉴别码MAC2’的方法相同,这里不再赘述;
相应地,在USB Key得到明文的创建秘密文件的指令的APDU后,创建秘密文件前,还包括:
USB Key判断消息鉴别码MAC3’是否正确,如果正确,则USB Key执行创建秘密文件的操作,如果不正确,则返回消息鉴别码错误的状态码;
上述USB Key判断消息鉴别码MAC3’是否正确的方法具体的为,USB Key使用管理密钥MKey对USB Key中存储的加密的主控密钥CKey进行解密,得到明文的主控密钥CKey,使用伪随机数P4、主控密钥CKey等利用与主机生成消息鉴别码MAC3’相同的算法生成消息鉴别码MAC3,将消息鉴别码MAC3’与MAC3进行比对,如果相同,则认为消息鉴别码MAC3’正确,如果不相同,则认为消息鉴别码MAC3’不正确。
3)当USB Key接收的APDU为创建文件的指令的APDU,并且为安装秘密的指令的APDU时,所述APDU具体的为:
84 F0 000014EC A3 30 39 9B D0 6F 41 0D D7 B5 21 19 69 0D FB 23B7965A
在上述APDU中,84表示该APDU为密文,F0表示该APDU执行安装PIN码的指令,0000为参数Parameters1和2,14为该字节后APDU的长度,EC A330 39 9B D0 6F 41 0D D7 B5 21 19 69 0D FB为PIN码文件,23B7965A为MAC4’;
其中,在本发明中,秘密为用户的敏感数据,需进行加密保护,包括用户的PIN码、DES密钥、AES密钥等,在2)中以创建PIN码文件为例举例说明了创建秘密文件的方法,相应地,在这里以在上述PIN码文件中安装PIN码为例进行说明,上述APDU即为安装PIN码的指令的APDU;
USB Key使用管理密钥MKey将USB Key中数据存储区中保存的主控密钥CKey进行解密,得到明文的主控密钥CKey,并使用主控密钥CKey对上述安装秘密的指令的APDU进行解密,得到明文的PIN码文件,具体的为:
000000330102030405068000000000
其中,00000033为PIN码的参数,例如33表示PIN码最大可尝试验证次数为3次,剩余可连续验证失败次数为3次,010203040506为明文的PIN码,8000000000为对PIN码文件进行加密时的补位数据;
USB Key得到明文的安装PIN码的指令的APDU后,执行安装秘密的操作,根据PIN码文件的位置,将PIN码使用管理密钥MKey加密后存储在2)中创建的PIN码文件中,并向主机返回安装PIN码成功的状态码;
在本实施例中,在主机向USB Key发送安装秘密的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P5,并发送给主机,主机由伪随机数P5、主控密钥CKey等生成消息鉴别码MAC4’,其中,上述生成伪随机数P5的算法与步骤303中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得USB Key计算得出的伪随机数不同;
上述主机由伪随机数P5、主控密钥CKey等生成消息鉴别码MAC4’的方法与本步骤315中1)中主机生成消息鉴别码MAC2’的方法相同,这里不再赘述;
相应地,在USB Key得到明文的安装PIN码的指令的APDU后,执行安装秘密的操作前,还包括:
USB Key判断消息鉴别码MAC4’是否正确,如果正确,则USB Key执行安装秘密的操作,如果不正确,则返回消息鉴别码错误的状态码;
上述USB Key判断消息鉴别码MAC4’是否正确的方法具体的为,USB Key使用管理密钥MKey对USB Key中存储的加密的主控密钥CKey进行解密,得到明文的主控密钥CKey,使用伪随机数P5、主控密钥CKey等利用与主机生成消息鉴别码MAC4’相同的算法生成消息鉴别码MAC4,将消息鉴别码MAC4’与MAC4进行比对,如果相同,则认为消息鉴别码MAC4’正确,如果不相同,则认为消息鉴别码MAC4’不正确。
在步骤315中,还包括:当USB Key中文件系统建立完成,并将全部秘密安装完成后,将USB Key的使用状态修改为应用状态,并修改USB Key的生命周期,USB Key不可再写入密钥;
上述将USB Key的使用状态修改为应用状态,在本实施例中具体的为,将USB Key的使用状态为修改为0x02;
步骤316,COS判断USB Key的使用状态是否为应用状态,如果是,执行步骤318,如果不是,执行步骤317;
在本实施例中,COS判断USB Key的使用状态是否为应用状态具体的为,当USB Key的使用状态标志位为0x02时,则USB Key的使用状态为为应用状态;
步骤317,USB Key向主机返回未处于应用状态的错误的状态码,执行步骤305;
步骤318,COS判断USB Key接收的APDU是否为应用类型的APDU,如果是,执行步骤319,如果不是,执行步骤320;
其中,应用类型的APDU,包括生成RSA密钥对,签名、验证签名、修改PIN码等指令的APDU,判断方法具体的可以为,依照约定的APDU指令规则,读取APDU指令类型,判断APDU为进行何种操作,例如在本实施例中,约定APDU的第二个字节表示APDU指令指定的操作,读取第二字节如果为20,则为验证PIN码的指令,验证PIN码的指令属于应用类型的APDU,则该APDU为应用类型的APDU,如果第二字节为E0,则为创建MF文件的指令,不属于应用类型的APDU;
步骤319,USB Key执行其接收的APDU指令,返回步骤305,继续等待并接收新的APDU;
在本实施例中,在USB Key处于应用状态后,用户可使用USB Key进行应用操作,包括生成RSA密钥对,签名、验证签名、修改PIN码等,主机通过向USB Key下发应用APDU命令USB Key完成这些操作,并且在主机向USB Key发送APDU时可以采取将APDU加密的方式,和不加密两种方式。下面以USBKey进行签名操作为例进行说明,在USB Key中密钥的使用过程,如下:当USB Key接收的为Verify PIN指令(即验证PIN码)的APDU时,USBKey的操作为:
319a,USB Key使用管理密钥MKey对数据存储区中存储的主控密钥CKey进行解密,得到明文的主控密钥CKey;
319b,USB Key使用主控密钥CKey对验证PIN码的指令的APDU进行解密,得到明文的APDU;
在本实施例中,上述验证PIN码的指令明文的APDU为:
00 20 00 00 06 01 02 03 04 05 06
其中,00表示该APDU为明文,20表示进行验证PIN码的操作,0000为参数Parameters1和2,06表示该字节后APDU的长度,010203040506表示用户输入的PIN码;
319c,USB Key判断消息鉴别码MAC5’是否正确,如果正确,执行步骤319e,如果不正确,执行步骤319d;
在本实施例中,在主机向USB Key下发验证PIN码的指令的APDU前,还包括:
主机向USB Key发送APDU,请求一个伪随机数P6,USB Key生成伪随机数P6,并发送给主机,主机由伪随机数P6、主控密钥CKey、验证PIN码的指令生成消息鉴别码MAC5’,优选地,使用CBC算法生成消息鉴别码MAC5’,与步骤315中使用方法相同,这里不再赘述;
USB Key判断消息鉴别码MAC5’的方法,具体的为:USB Key使用与主机生成消息鉴别码MAC5’相同的算法,使用伪随机数P6、主控密钥CKey、验证PIN码的指令生成消息鉴别码MAC5并与MAC5’进行比对,如果相同,则MAC5’正确,如果不相同,则MAC5’不正确;
319d,USB Key向主机返回消息鉴别码错误的状态码;
319e,USB Key使用管理密钥MKey将存储于USB Key中的合法PIN码进行解密,得到明文的合法PIN码;
319f,判断上述APDU中的PIN码是否正确,如果是,执行步骤319g,如果不是,执行步骤319h;
上述判断的方法具体的为:将上述验证PIN码指令APDU中的PIN码与USBKey中存储的合法的PIN码进行比对,如果相同,则PIN码正确如果不相同,则PIN码验证不正确;
319g,USB Key向主机返回PIN码正确的状态码;
319h,USB Key向主机返回PIN码错误的状态码,并将PIN码验证计数位减1。
在本实施例中,如步骤315中所述,在安装PIN码文件时,会在USB Key中存储有PIN码验证计数位,优选地为两个字节,高位表示USB Key可接收的连续验证PIN码失败的次数,低位字节表示该USB Key可以验证PIN码的剩余次数,当低字节为0时,USB Key的PIN码锁定,在解锁前不可再进行验证PIN码操作,例如在本实施例中,PIN码验证计数位在验证PIN码操作前初始化时为33,最多可以尝试连续验证PIN码3次,当验证PIN码失败一次后,PIN码验证计数位减1为32,当连续第二次验证PIN码失败后,再减1为31,当PIN码验证计数位为30时,USB Key锁定PIN码,只有解除PIN码锁定状态后,才可以进行验证PIN码的操作;
步骤320,向主机返回APDU错误的消息,返回步骤305,继续等待并接收新的APDU。
在本实施例中,还可以包括管理密钥MKey的销毁,具体的包括:
当USB Key的生命周期终止时,擦除USB Key中的管理密钥MKey;
或,
当外部认证连续验证解锁码超过约定的次数时,擦除USB Key中的管理密钥MKey;
或,
用户发出销毁USB Key的命令时,擦除USB Key中的管理密钥MKey。
在管理密钥MKey被擦除后,将USB Key的使用状态的标志位设置为终止使用状态,即将标志位设置为0x03,管理密钥MKey被擦除后,不可能再对USBKey中保存的其他密钥和加密的数据进行解密,USB Key不能再使用,保证了USB Key的安全性;
本实施例中,在USB Key的应用过程中,体现出了智能密钥装置中密钥的生成、保存、使用和销毁的过程,克服了现有技术中的密钥容易被攻击读出,通过对密钥的管理增强了USB Key的安全性。
需要注意的是,在本实施例3中,USB Key接收到APDU后,步骤305之后的判断中,不一定要按照实施例3中的顺序执行,可以对COS判断生命周期是否终止、判断USB Key是否为空卡状态、判断USB Key是否为初始化状态、判断USB Key是否为应用状态,这几个判断的顺序是可调整的,因此在对判断顺序的调整而形成的方法,也应该落入本发明的保护范围,下面以实施例4为例进行说明。
实施例4
本实施例提供了一种密钥管理方法,具体的为对实施例3中步骤305后的顺序进行了调整,以说明实施例3的范围应不仅仅局限于实施例3中步骤所描述的顺序,具体的如下:
步骤401,USB Key接入主机,上电;
步骤402,COS判断USB Key是否为首次上电,如果是,执行步骤403,如果不是,执行步骤404;
在本实施例中,COS为卡内操作系统,存储于上述USB Key中的ROM中;
COS判断USB Key是否为首次上电的方法具体的为:COS判断上述USBKey的数据存储区是否为全0或全F,当USB Key的数据存储区为全0或全F时,说明USB Key的数据存储区为空白,处于未写入数据状态,则USB Key为首次上电;另外,USB Key的数据存储区空白时为全0、全F或为其他情况,可以与芯片生产商约定;
步骤403,USB Key生成管理密钥MKey,执行步骤404;
在本实施例中,USB Key生成管理密钥MKey具体的为:
403a,COS获取由USB Key硬件产生的真随机数R1,并将真随机数R1作为熵(或seed);
其中,USB Key硬件产生真随机数为通过噪声生成真随机数,上述噪声包括环境噪声、电流噪声等,具体的为:
1)COS向USB Key硬件发出获取真随机数的指令;
2)USB Key硬件采集噪声样点,并对噪声样点进行去除周期性、连续性、相关性等对随机性有影响的消极特性的操作;
3)USB Key硬件根据消除消极特性的噪声样点生成固定长度的真随机数R1;
4)USB Key硬件将真随机数R1返回给COS;
403b,COS根据真随机数R1生成伪随机数P1;
在本实施例中,COS生成伪随机数P1需要使用参数:3DES算法密钥Key、变量V、熵(seed),COS根据真随机数R1生成伪随机数P1,具体的为:
1)COS调用函数update(),将生成伪随机数需要使用的参数Key、V、熵进行初始化,Key、V、熵设置为0;
在本实施例中,优选地,Key为24字节长度的3DES密钥,V为8字节长度的变量,熵为32字节长度的真随机数;
2)使用Key对V进行3DES算法加密运算,得到一个8字节长度的加密结果A1;
3)将变量V的值增加一个步长得到V1,使用Key对V1进行3DES算法加密运算,得到一个8字节长度的加密结果A2;
在本实施例中,优选地,将变量V的值增加一个步长为将V的值增加1,以下增加一个步长的操作皆相同;
4)将变量V1的值增加1得到V2,使用Key对V2进行3DES算法加密运算,得到一个8字节长度的加密结果A3;
5)将变量V2的值增加1得到V3,使用Key对V3进行3DES算法加密运算,得到一个8字节长度的加密结果A4;
6)将A1、A2、A3、A4连接起来得到一个32字节的值N,并使用N与熵进行异或得到异或结果M,将M的前24个字节作为密钥Key1,后8个字节作为V5;
7)COS调用函数Generate(),使用Key1对V5进行3DES算法加密运算,得到一个8字节长度的结果A5;
8)将A5作为伪随机数P1返回给COS。
在本实施例中,伪随机数P1长度为8个字节,并且伪随机数P1的长度是可控制的,通过取A5的约定长度或对生成伪随机数的参数进行长度控制,而产生不同长度的伪随机数;
403c,将伪随机数P1作为USB Key的管理密钥MKey存储在USB Key的数据存储区;
其中,USB Key的管理密钥MKey不可被USB Key的外部命令读出;
步骤404,USB Key进行通信初始化;
在本实施例中,USB Key进行通信初始化,主要是指将USB Key的Ram中的全局变量等初始化,并向主机发送USB设备描述符,使得主机为上述USB Key设备加载驱动,以使主机和USB Key能够进行通信;
在本实施例中,以USB Key进行说明,智能密钥装置还可以为非接触式智能卡,非接触式智能卡在此步骤中,即为建立无线连接,并进行通信;
步骤405,USB Key等待并接收APDU;
在本实施例中,主机通过下发APDU控制USB Key进行各种操作;
步骤406,COS判断USB Key的生命周期是否终止,如果是,执行步骤407,如果不是,执行步骤408;
在本实施例中,生命周期标识了USB Key的生命周期长度和USB Key是否写入密钥的状态;
步骤407,向主机返回生命周期终止的错误状态码,返回步骤405,继续等待并接收新的APDU;
为了表示USB Key的各种错误,可以与USB Key约定错误状态码,在本实施例中,当USB Key的生命周期终止时,使用状态码0x6A81表示该错误;
步骤408,COS判断USB Key的使用状态是否为初始化状态,如果是,执行步骤409,如果不是,执行步骤412;
在本实施例中,在USB Key的数据存储区设置一个字节作为该USB Key的使用状态的标志位,该标志位用以标志该USB Key的使用状态,将USB Key的使用状态分为四种:空卡状态,初始化状态,应用状态,终止使用状态,具体的:
当USB Key未写入主控密钥CKey时,将USB Key设定为空卡状态;
当USB Key写入主控密钥成功后,未建立文件完成时,USB Key为初始化状态;
当USB Key建立文件完成后且生命周期未终止时,USB Key为应用状态;
当USB Key的生命周期终止后,USB Key为停止使用状态;
优选地,使用0x00、0x01、0x02、0x03分别表示USB Key处于空卡状态、初始化状态、应用状态、终止使用状态;
因此,判断USB Key是否为初始化状态,具体的为:判断USB Key记录使用状态的标志位是否为0x01,如果是,则为初始化状态,否则,不为初始化状态;
步骤409,判断USB Key接收的APDU是否为创建文件的指令的APDU,如果是,执行步骤411,如果不是,执行步骤410;
步骤410,USB Key向主机返回未进行初始化的错误的状态码,返回步骤405,继续等待并接收新的APDU;
步骤411,USB Key执行创建文件的指令,执行结束后返回步骤405,继续等待并接收新的APDU;
在本实施例中,在对USB Key的文件进行创建时,优选地使用以下文件系统的结构,使文件系统由主文件MF、专用文件DF、基本文件EF构成,并且为树结构,主文件MF为根节点,专用文件DF为中间节点,基本文件EF为叶节点,每个专用文件DF都有自己的安全机制,并且单独管理,在对EF文件进行创建时规定EF文件的读写权限,在存放USB Key的密钥时,将其存储在内部基本文件EF中,将读写权限设定为不可由外部读出,当获得合法权限后,可在内部使用USB Key的密钥完成加解密操作;
其中,在EF文件中,包括秘密文件、二进制文件、循环文件等,在本实施例中,创建文件的指令主要包括:创建MF文件的指令、创建秘密文件的指令、安装秘密的指令,下面分别以这三种指令举例进行说明。
1)当USB Key接收的APDU为创建文件的指令的APDU时,并且为创建MF文件的指令的APDU时,所述APDU具体的为:
84 E0 00 00 14 41 28 72 CA 6D 62 CC 6E 0D D5 CB 5C 74 0C 2F 5F 59 E2 3FE5 5F 4F 50 2B CC 4F 74 20 BA DB E6 1F B1 EC F6 FC
其中,在本实施例中APDU全部使用16进制表示,84表示该APDU的数据区为密文,E0表示该APDU进行的操作为创建MF,0000为参数Parameters1和2,14表示该字节后APDU的长度,41 28 72 CA 6D 62 CC 6E 0D D5 CB 5C 740C 2F 5F 59E23F E5 5F 4F 50 2B CC 4F 74 20 BA DB E6 1F为MF文件的参数,包括MF文件的大小、索引等,最后四个字节B1EC F6FC为消息鉴别码MAC1’;
因此,COS判断APDU是否为创建文件的指令的方法包括,读取所述智能密钥装置接收的APDU的第二个字节,如果为E0则为创建MF的指令;
USB Key使用管理密钥MKey将USB Key中数据存储区中保存的主控密钥CKey进行解密,得到明文的主控密钥CKey,并使用主控密钥CKey对上述创建MF文件的指令的APDU进行解密,具体的为对创建MF文件的指令的APDU的数据区进行解密,得到明文的创建MF文件的参数,具体的为:
3F 00 04 11 00 50 C0 C0 10 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00 0080 00 00 00 00 00 00
其中,3F 00 04 11 00 50 C0 C0 10 31 50 41 59 2E 53 59 53 2E 44 44 46 30 310000为明文的创建MF文件的参数,80000000000000为对创建MF文件的参数进行加密时的补位数据;
USB Key得到明文的创建MF文件的指令的APDU后,根据MF文件的参数,执行创建MF文件的操作,并向主机返回创建MF文件成功的状态码;
在本实施例中,在主机向USB Key发送创建MF文件的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P2,并返回给主机,主机由伪随机数P2、主控密钥CKey等生成消息鉴别码MAC1’,其中,上述生成伪随机数P2的算法与步骤403中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得USB Key计算得出的伪随机数不同;
主机由伪随机数P2、主控密钥CKey生成消息鉴别码MAC1’的方法具体的包括:
将写主控密钥指令的APDU中的标记84、APDU参数Parameters1和2、表示长度部分、明文的创建MF文件的参数和补位、伪随机数P2、主控密钥CKey使用CBC(Cipher Block Concatenation,加密块链接模式)模式进行加密运算,得到消息鉴别码MAC1’;
上述描述中的CBC的加密模式具体过程如下:首先,将明文分成固定长度(例如64位)的块(明文块0,明文块1...),然后,将前面一个加密块输出的密文(例如密文块0)与下一个要加密的明文块(例如明文块1)进行XOR(异或)操作计算,将计算结果再用密钥进行加密得到密文;
相应地,在USB Key得到明文的创建MF文件的指令的APDU后,执行创建MF文件的操作前,还包括:
USB Key判断消息鉴别码MAC1’是否正确,如果正确,则USB Key执行创建MF文件的操作,如果不正确,则返回消息鉴别码错误的状态码;
上述USB Key判断消息鉴别码MAC1’是否正确的方法具体的为,USB Key使用管理密钥MKey对USB Key中存储的加密的主控密钥CKey进行解密,得到明文的主控密钥CKey,使用伪随机数P2、主控密钥CKey等利用与主机生成消息鉴别码MAC1’相同的算法生成消息鉴别码MAC1,将消息鉴别码MAC1’与MAC1进行比对,如果相同,则认为消息鉴别码MAC1’正确,如果不相同,则认为消息鉴别码MAC1’不正确。
需要说明的是,MF文件为根文件,只有创建MF文件完成后,才可以创建下一级文件。
2)当USB Key接收的APDU为创建文件的指令的APDU时,并且为创建秘密文件的指令的APDU时,本步骤以创建的秘密文件为存储用户PIN码的秘密文件为例进行说明,所述APDU具体的为:
84 E1 00 01 0C 94 2D 21 7F B7 AF 5B 4C 441C8D2C
其中,创建秘密文件的指令的APDU中数据区(存放PIN码参数的部分)由主机使用主控密钥CKey加密,84表示该APDU的数据区为密文,E1表示该APDU执行创建秘密文件的操作,0001为创建PIN码文件的参数,0C为在这个字节后APDU的长度,942D 217F B7AF 5B 4C为PIN码文件的参数的密文,包括PIN码文件的大小、索引等,441C8D2C为消息鉴别码MAC2’;
因此,COS判断APDU是否为创建秘密文件的方法为,读取APDU的第二个字节,当为E1时,为创建PIN码文件的指令,创建PIN码文件包含在创建秘密文件的指令中,因此该APDU为创建秘密文件的指令;
USB Key使用管理密钥MKey将USB Key中数据存储区中保存的主控密钥CKey进行解密,得到明文的主控密钥CKey,并使用主控密钥CKey对上述创建秘密文件的指令的APDU进行解密,得到明文的创建秘密文件参数具体的为:
7FFF101000000080
其中,7FFF1010000000为创建PIN码文件的参数,80为主机为所述创建PIN码文件的参数进行加密时,采用的补位;
USB Key得到明文的创建秘密文件的指令的APDU后,根据创建秘密文件的参数,创建秘密文件,并向主机返回创建秘密文件成功的状态码;
在本实施例中,在主机向USB Key发送创建秘密文件的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P3,并将伪随机数P3发送给主机,主机由伪随机数P3、主控密钥CKey等生成消息鉴别码MAC2’,其中,上述生成伪随机数P3的算法与步骤403中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得USB Key计算得出的伪随机数不同;
上述主机根据伪随机数P3、主控密钥CKey生成消息鉴别码MAC2’的算法与本步骤中1)中主机生成消息鉴别码MAC1’的方法相同,这里不再赘述;
相应地,在USB Key得到明文的创建秘密文件的指令的APDU后,创建秘密文件前,还包括:
USB Key判断消息鉴别码MAC2’是否正确,如果正确,则USB Key执行创建秘密文件的操作,如果不正确,则返回消息鉴别码错误的状态码;
上述USB Key判断消息鉴别码MAC2’是否正确的方法具体的为,USB Key使用管理密钥MKey对USB Key中存储的加密的主控密钥CKey进行解密,得到明文的主控密钥CKey,使用伪随机数P3、主控密钥CKey等利用与主机生成消息鉴别码MAC2’相同的算法生成消息鉴别码MAC2,将消息鉴别码MAC2’与MAC2进行比对,如果相同,则认为消息鉴别码MAC2’正确,如果不相同,则认为消息鉴别码MAC2’不正确。
3)当USB Key接收的APDU为创建文件的指令的APDU,并且为安装秘密的指令的APDU时,所述APDU具体的为:
84 F0 000014 EC A3 30 39 9B D0 6F 41 0D D7 B5 21 19 69 0D FB 23B7965A
在上述APDU中,84表示该APDU为密文,F0表示该APDU执行安装PIN码的指令,0000为参数Parameters1和2,14为该字节后APDU的长度,ECA330 39 9B D0 6F 41 0D D7 B5 21 19 69 0D FB为PIN码文件,23B7965A为MAC3’;
其中,在本发明中,秘密为用户的敏感数据,需进行加密保护,包括用户的PIN码、DES密钥、AES密钥等,在2)中以创建PIN码文件为例举例说明了创建秘密文件的方法,相应地,在这里以在上述PIN码文件中安装PIN码为例进行说明,上述APDU即为安装PIN码的指令的APDU;
USB Key使用管理密钥MKey将USB Key中数据存储区中保存的主控密钥CKey进行解密,得到明文的主控密钥CKey,并使用主控密钥CKey对上述安装秘密的指令的APDU进行解密,得到明文的PIN码文件,具体的为:
000000330102030405068000000000
其中,00000033为PIN码的参数,例如33表示PIN码最大可尝试验证次数为3次,剩余可连续验证失败次数为3次,010203040506为明文的PIN码,8000000000为对PIN码文件进行加密时的补位数据;
USB Key得到明文的安装PIN码的指令的APDU后,执行安装秘密的操作,根据PIN码文件的位置,将PIN码使用管理密钥MKey加密后存储在2)中创建的PIN码文件中,并向主机返回安装PIN码成功的状态码;
在本实施例中,在主机向USB Key发送安装秘密的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P4,并发送给主机,主机由伪随机数P4、主控密钥CKey等生成消息鉴别码MAC3’,其中,上述生成伪随机数P4的算法与步骤403中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得USB Key计算得出的伪随机数不同;
上述主机由伪随机数P4、主控密钥CKey等生成消息鉴别码MAC3’的方法与本步骤中1)中主机生成消息鉴别码MAC3’的方法相同,这里不再赘述;
相应地,在USB Key得到明文的安装PIN码的指令的APDU后,执行安装秘密的操作前,还包括:
USB Key判断消息鉴别码MAC3’是否正确,如果正确,则USB Key执行安装秘密的操作,如果不正确,则返回消息鉴别码错误的状态码;
上述USB Key判断消息鉴别码MAC3’是否正确的方法具体的为,USB Key使用管理密钥MKey对USB Key中存储的加密的主控密钥CKey进行解密,得到明文的主控密钥CKey,使用伪随机数P4、主控密钥CKey等利用与主机生成消息鉴别码MAC3’相同的算法生成消息鉴别码MAC3,将消息鉴别码MAC3’与MAC3进行比对,如果相同,则认为消息鉴别码MAC3’正确,如果不相同,则认为消息鉴别码MAC3’不正确。
在步骤中,还包括:当USB Key中文件系统建立完成,并将全部秘密安装完成后,将USB Key的使用状态修改为应用状态,并修改USB Key的生命周期,USB Key不可再写入密钥;
上述将USB Key的使用状态修改为应用状态,在本实施例中具体的为,将USB Key的使用状态为修改为0x02;
步骤412,COS判断USB Key的使用状态是否为应用状态,如果是,执行步骤413,如果不是,执行步骤416;
在本实施例中,COS判断USB Key的使用状态是否为应用状态具体的为,当USB Key的使用状态标志位为0x02时,则USB Key的使用状态为为应用状态;
步骤413,COS判断USB Key接收的APDU是否为应用类型的APDU,如果是,执行步骤414,如果不是,执行步骤415;
其中,应用类型的APDU,包括生成RSA密钥对,签名、验证签名、修改PIN码等指令的APDU,判断方法具体的可以为,依照约定的APDU指令规则,读取APDU指令类型,判断APDU为进行何种操作,例如在本实施例中,约定APDU的第二个字节表示APDU指令指定的操作,读取第二字节如果为20,则为验证PIN码的指令,验证PIN码的指令属于应用类型的APDU,则该APDU为应用类型的APDU,如果第二字节为E0,则为创建MF文件的指令,不属于应用类型的APDU;
步骤414,USB Key执行其接收的APDU中的指令,返回步骤405,继续等待并接收新的APDU;
在本实施例中,在USB Key处于应用状态后,用户可使用USB Key进行应用操作,包括生成RSA密钥对,签名、验证签名、修改PIN码等,主机通过向USB Key下发应用APDU命令使USB Key完成这些操作,并且在主机向USBKey发送APDU时可以采取将APDU加密和不加密两种方式。下面以USB Key进行签名操作为例进行说明,在USB Key中密钥的使用过程,如下:
当USB Key接收的为Verify PIN指令(即验证PIN码)的APDU时,USBKey的操作为:
414a,USB Key使用管理密钥MKey对数据存储区中存储的主控密钥CKey进行解密,得到明文的主控密钥CKey;
414b,USB Key使用主控密钥CKey对验证PIN码的指令的APDU进行解密,得到明文的APDU;
在本实施例中,上述验证PIN码的指令明文的APDU为:
00 20 00 00 06 01 02 03 04 05 06
其中,00表示该APDU为明文,20表示进行验证PIN码的操作,0000为参数Parameters1和2,06表示该字节后APDU的长度,010203040506表示用户输入的PIN码;
414c,USB Key判断消息鉴别码MAC4’是否正确,如果正确,执行步骤414e,如果不正确,执行步骤414d;
在本实施例中,在主机向USB Key下发验证PIN码的指令的APDU前,还包括:
主机向USB Key发送APDU,请求一个伪随机数P6,USB Key生成伪随机数P6,并发送给主机,主机由伪随机数P6、主控密钥CKey、验证PIN码的指令生成消息鉴别码MAC4’,优选地,使用CBC算法生成消息鉴别码MAC4’,与步骤411中使用方法相同,这里不再赘述;
USB Key判断消息鉴别码MAC4’的方法,具体的为:USB Key使用与主机生成消息鉴别码MAC4’相同的算法,使用伪随机数P5、主控密钥CKey、验证PIN码的指令生成消息鉴别码MAC4并与MAC4’进行比对,如果相同,则MAC4’正确,如果不相同,则MAC4’不正确;
414d,USB Key向主机返回消息鉴别码错误的状态码;
414e,USB Key使用管理密钥MKey将存储于USB Key中的合法PIN码进行解密,得到明文的合法PIN码;
414f,判断上述APDU中的PIN码是否正确,如果是,执行步骤414g,如果不是,执行步骤414h;
上述判断的方法具体的为:将上述验证PIN码指令APDU中的PIN码与USBKey中存储的合法的PIN码进行比对,如果相同,则PIN码正确,如果不相同,则PIN码验证不正确;
414g,USB Key向主机返回PIN码正确的状态码;
414h,USB Key向主机返回PIN码错误的状态码,并将PIN码验证计数位减1。
在本实施例中,如步骤411中所述,在安装PIN码文件时,会在USB Key中存储有PIN码验证计数位,优选地为两个字节,高位表示USB Key可接收的连续验证PIN码失败的次数,低位字节表示该USB Key可以验证PIN码的剩余次数,当低字节为0时,USB Key的PIN码锁定,在解锁前不可再进行验证PIN码操作,例如在本实施例中,PIN码验证计数位在验证PIN码操作前初始化时为33,最多可以尝试连续验证PIN码3次,当验证PIN码失败一次后,PIN码验证计数位减1为32,当连续第二次验证PIN码失败后,再减1为31,当PIN码验证计数位为30时,USB Key锁定PIN码,只有解除PIN码锁定状态后,才可以进行验证PIN码的操作;
步骤415,向主机返回APDU错误的消息,返回步骤405,继续等待并接收新的APDU;
步骤416,COS判断USB Key是否为空卡状态,如果是,执行步骤417,如果不是,执行步骤420;
判断USB Key是否为空卡状态,具体的为:判断USB Key记录使用状态的标志位是否为0x00,如果是,则为空卡状态,否则,不为空卡状态;
步骤417,COS判断USB Key接收的APDU是否为写主控密钥CKey的指令的APDU,如果是,执行步骤419,如果不是,执行步骤418;
在本实施例中,写主控密钥CKey的指令的APDU具体的可以为:
84 E4000014 6C5E94DCADD39F1D3AD217812B81E7AD  304F5EDC
在上述命令USB Key写入主控密钥的APDU中,0x84表示该APDU的数据区为密文,0xE4表示该APDU执行的命令为写主控密钥,0000为参数Parameters1和2,0x14表示其后面APDU的长度,6C5E94DCADD39F1D3AD217812B81E7AD为该APDU的数据区,为主控密钥,并且为密文形式,0x304F5EDC为消息鉴别码MAC5’;
由上可知,判断APDU是否为写主控密钥的指令的APDU的方法为:读取USB Key接收的APDU的第二个字节,如果为E4则为写主控密钥指令;
步骤418,USB Key向主机返回USB Key为空卡状态的错误状态码,返回步骤405,继续等待并接收新的APDU;
在本实施例中,当USB Key的使用状态为空卡状态时,必须先写入主控密钥才可以进行处理其他APDU的操作,优选地,USB Key向主机返回USB Key为空卡状态的错误状态码为0x6981;
步骤419,USB Key使用传输密钥TKey将上述写主控密钥CKey的指令的APDU进行解密,得到明文的主控密钥CKey,USB Key执行写入主控密钥CKey的操作,将明文的主控密钥CKey使用管理密钥MKey进行加密,并保存在USBKey的数据存储区,返回步骤405,继续等待并接收新的APDU;
在本实施例中,传输密钥TKey为USB Key与主机预先约定的密钥,并且将传输密钥TKey预先写入USB Key的ROM存储区中,当USB Key第一次上电时,COS将传输密钥TKey从ROM存储区中读出,使用管理密钥MKey加密后存储在USB Key的数据存储区中,主机可通过向USB Key发送APDU修改传输密钥TKey;
在本实施例中,假设传输密钥TKey为01 02 03 04 05 06 07 08,USB Key使用上述传输密钥TKey对上述写主控密钥CKey的指令的APDU进行解密,具体的为对得到明文上述写主控密钥CKey的指令的APDU的数据区进行解密,得到明文的主控密钥为:
112233445566778899aabbccddeeff00
由步骤409中,写主控密钥的APDU中包括消息鉴别码MAC1’,在主机向USB Key发送写入主控密钥CKey的指令的APDU前,还包括:
主机向USB Key发送一个APDU,向USB Key请求获得一个伪随机数,USBKey生成一个伪随机数P6,并发送给主机,主机由伪随机数P6、传输密钥TKey等生成一个消息鉴别码为MAC5’,上述生成伪随机数P6的算法与步骤403中生成伪随机数P1的算法相同,这里不再赘述,但是需注意的是每次生成伪随机数需重新获取真随机数作为熵,以使得计算得出的伪随机数不同。
相应地,在USB Key对上述接收的写主控密钥CKey的指令的APDU进行解密后,USB Key执行写入主控密钥CKey的操作前,还包括:
USB Key判断消息鉴别码MAC5’是否正确,判断的方法为:USB Key按照于主机生成消息鉴别码MAC5’相同的算法,生成消息鉴别码MAC5,将消息鉴别码MAC5’与MAC5进行比对,如果相同,则认为消息鉴别码MAC5’正确,USB Key执行写入主控密钥CKey的操作,如果不相同,则认为消息鉴别码MAC5’不正确,向主机返回消息鉴别码错误的状态码。
优选地,主机由伪随机数P6、传输密钥TKey等生成消息鉴别码MAC5’的方法具体的为:
将写主控密钥指令的APDU中的标记84、APDU参数Parameters1和2、表示长度部分、明文的主控密钥、伪随机数P6、传输密钥TKey使用CBC模式进行加密运算,得到消息鉴别码MAC5’。
在USB Key将明文的主控密钥CKey使用管理密钥MKey进行加密并保存在USB Key的数据存储区后,还包括:
USB Key将自身使用状态置为初始化状态,在本实施例中具体的为,将USBKey的使用状态标志位修改为0x01;
步骤420,向主机返回错误信息,返回步骤405,继续等待并接收新的APDU;
在本实施例中,还可以包括管理密钥MKey的销毁,具体的包括:
当USB Key的生命周期终止时,擦除USB Key中的管理密钥MKey;
或,
当外部认证连续验证解锁码超过约定的次数时,擦除USB Key中的管理密钥MKey;
或,
用户发出销毁USB Key的命令时,擦除USB Key中的管理密钥MKey。
在管理密钥MKey被擦除后,将USB Key的使用状态的标志位设置为终止使用状态,即将标志位设置为0x03,管理密钥MKey被擦除后,不可能再对USBKey中保存的其他密钥和加密的数据进行解密,USB Key不能再使用,保证了USB Key的安全性;
通过实施例4和实施例3的对比,我们可以得出,USB Key在接收到主机下发的APDU后,对USB Key的生命周期和使用状态的判断,是可以调换顺序的,而且并不影响本发明所提出的有益效果,因此,通过对该顺序的调整而形成的方法,都应该属于本发明的保护范围;
需要注意的是,在本发明中,优选地,在USB Key接收到APDU后,先判断USB Key的生命周期,如果生命周期未终止,再进行使用状态的判断,这是优选方案,因为如果在使用状态判断完成后,再进行生命周期的判断,一旦生命周期为终止,USB Key是不能执行任何APDU的,导致使用状态判断成为冗余步骤;
本实施例中,在USB Key的应用过程中,体现出了智能密钥装置中密钥的生成、保存、使用和销毁的过程,克服了现有技术中的密钥容易被攻击读出,通过对密钥的管理增强了USB Key的安全性。
实施例5
本实施例提供了一种密钥管理系统,系统包括主机1和智能密钥装置2:
主机1包括:APDU发送模块101、第一接口模块102;
APDU发送模块101,用于向智能密钥装置发送APDU;
第一接口模块102,用于与智能密钥装置建立连接和进行数据通信;
智能密钥装置2包括:上电判断模块201、随机数生成模块202、APDU接收模块203、生命周期判断模块204、空卡判断模块205、写第二密钥模块206、初始化判断模块207、文件创建模块208、应用判断模块209、应用模块210、错误处理模块211、存储模块212;
上电判断模块201,用于判断智能密钥装置是否为首次上电;
随机数生成模块202,用于当上电判断模块201判断智能密钥装置为首次上电时,根据算法生成第一随机数,并将第一随机数作为第一密钥;
APDU接收模块203,用于在智能密钥装置生成第一密钥后,等待并接收主机下发APDU;
生命周期判断模块204,用于判断智能密钥装置的生命周期是否终止;
空卡判断模块205,用于判断智能密钥装置的使用状态是否为空卡状态;
写第二密钥模块206,用于在空卡判断模块205判断智能密钥装置的使用状态为空卡状态时,执行写第二密钥的指令,并将智能密钥装置的使用状态修改为初始化状态,完成后通知APDU接收模块203继续等待主机下发新的APDU;
初始化判断模块207,用于判断智能密钥装置的使用状态是否为初始化状态;
文件创建模块208,用于在初始化判断模块207判断智能密钥装置的使用状态为初始化状态时,执行创建文件的指令;
应用判断模块209,用于判断智能密钥装置的使用状态是否为应用状态;
应用模块210,用于在应用判断模块209判断智能密钥装置的使用状态为应用状态时,执行APDU接收模块203接收的APDU的应用;
错误处理模块211,用于当生命周期判断模块204判断智能密钥装置的生命周期终止时,向主机返回智能密钥装置生命周期终止的错误,并使APDU接收模块203继续等待并接收新的APDU;
存储模块212,用于存储第一密钥。
在本实施例中,上电判断模块201用于判断智能密钥装置是否为首次上电,具体的包括:
上电判断模块201判断存储模块212中是否未存储任何数据,如果是,则智能密钥装置为首次上电,如果不是,则智能密钥装置不是首次上电;
空卡判断模块205用于判断智能密钥装置的使用状态是否为空卡状态,具体的包括:
在智能密钥装置第一次上电后,在存储模块212中写入智能密钥装置的使用状态标志位,卡内操作系统通过读取存储模块212中的使用状态标志位判断智能密钥装置的使用状态是否为空卡状态;
相应地,初始化判断模块207用于判断智能密钥装置的使用状态是否为初始化状态,具体的包括:
初始化判断模块207通过读取存储模块212中的使用状态标志位判断智能密钥装置的使用状态是否为初始化状态;
相应地,应用判断模块209用于判断智能密钥装置的使用状态是否为应用状态,具体的包括:
应用判断模块209通过读取存储模块212中的使用状态标志位判断智能密钥装置的使用状态是否为应用状态;
在本实施例中,系统还包括写第二密钥判断模块213,写第二密钥判断模块213用于在写第二密钥模块206执行写第二密钥的指令前,判断APDU接收模块203接收的APDU是否为写第二密钥的指令,如果是写第二密钥的指令,写第二密钥模块206执行写第二密钥的操作;
写第二密钥模块206执行写第二密钥的操作具体的包括:
写第二密钥模块206使用第三密钥对APDU接收模块203接收的APDU进行解密,得到明文的写第二密钥的指令的APDU,进行写第二密钥的操作,将第二密钥使用第一密钥加密后,保存在存储模块212中。
存储模块212还用于存储加密后的第二密钥和第三密钥,其中第三密钥为智能密钥装置与主机预先约定,并预先存储在智能密钥装置的ROM中,当智能密钥装置生成第一密钥后,智能密钥装置将第三密钥读出,并使用第一密钥加密后保存在智能密钥装置的可写存储区中。
写第二密钥模块206执行向存储模块212中写第二密钥的操作前,写第二密钥模块206还用于,使用第一密钥解密存储模块212中存储的加密后的第三密钥,得到明文的第三密钥,并使用第三密钥对写第二密钥指令的APDU进行解密,得到明文的写第二密钥指令的APDU。
其中,在写第二密钥模块206得到明文的写第二密钥指令的APDU后,执行写第二密钥指令前,写第二密钥模块206还用于,判断第一消息鉴别码是否正确,如果正确,写第二密钥模块206执行写第二密钥的操作,如果不正确,通过错误处理模块211向主机返回第一消息鉴别码错误的消息,其中,第一消息鉴别码包含在明文的写第二密钥的指令的APDU中。
APDU接收模块203接收写第二密钥指令的APDU前,APDU发送模块101还用于,向随机数生成模块202发送获取第二随机数的请求,随机数生成模块202生成第二随机数并发送给APDU发送模块101,APDU发送模块101使用第二随机数生成第一消息鉴别码。
写第二密钥模块206判断第一消息鉴别码是否正确,具体的包括:
写第二密钥模块206根据第二随机数生成第二消息鉴别码,并使用第二消息鉴别码与第一消息鉴别码进行比对,如果相同,则第一消息鉴别码正确,如果不相同,则第一消息鉴别码不正确。
系统还包括创建文件判断模块214,创建文件判断模块214用于在文件创建模块208执行创建文件的指令前,判断APDU接收模块203接收的APDU是否为创建文件的指令,如果是,执行创建文件的指令。
文件创建模块208执行创建文件的指令前,文件创建模块208还用于,使用第二密钥对APDU接收模块203接收的APDU进行解密,得到明文的创建文件的指令的APDU。
文件创建模块208使用第二密钥对APDU接收模块203接收的APDU进行解密前,文件创建模块208还用于,使用第一密钥对存储模块212中存储的加密后的第二密钥进行解密,得到明文的第二密钥。
文件创建模块208得到明文的创建文件的指令的APDU后,文件创建模块208执行创建文件的指令前,文件创建模块208还用于,判断第三消息鉴别码是否正确,如果正确,文件创建模块208执行创建文件的指令,如果不正确,通过错误处理模块211向主机返回第三消息鉴别码错误的消息,其中,第三消息鉴别码包含在明文的创建文件的指令的APDU中。
APDU接收模块203接收创建文件的指令的APDU前,APDU发送模块101还用于,向随机数生成模块202发送获取第三随机数的请求,随机数生成模块202生成第三随机数并发送给APDU发送模块101,APDU发送模块101使用第三随机数生成第三消息鉴别码。
文件创建模块208判断第三消息鉴别码是否正确,具体的包括:
文件创建模块208根据第三随机数生成第四消息鉴别码,并使用第四消息鉴别码与第三消息鉴别码进行比对,如果相同,则第三消息鉴别码正确,如果不相同,则第三消息鉴别码不正确。
文件创建模块208执行创建文件的操作结束后,文件创建模块208还用于,判断是否智能密钥装置的文件创建全部完成,如果是,将智能密钥装置的使用状态修改为应用状态,等待主机下发新的APDU,如果不是,通知APDU接收模块203继续等待主机下发新的APDU。
在本实施例中,所述系统还包括密钥擦除模块215,密钥擦除模块用于当智能密钥装置的生命周期终止时,智能密钥装置擦除第一密钥,并将智能密钥装置的使用状态修改为终止使用状态;
或,
当连续认证解锁码错误次数超过约定次数时,擦除第一密钥,并将智能密钥装置的使用状态修改为终止使用状态;
或,
当智能密钥装置接收到用户发出的销毁智能密钥装置的指令时,智能密钥装置擦除第一密钥,并将智能密钥装置的使用状态修改为终止使用状态。
以上对本发明所提供的一种密钥管理系方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (50)

1.一种密钥管理方法,其特征在于,所述方法包括:
智能密钥装置接入主机,卡内操作系统判断所述智能密钥装置为首次上电时,生成第一随机数作为第一密钥;
所述智能密钥装置执行通信初始化操作,等待并接收所述主机下发的APDU(ApplicationProtocolDataUnit,应用协议数据单元);
当接收到所述主机下发的APDU后,判断所述智能密钥装置的生命周期是否终止;
如果所述生命周期没有终止,执行如下操作:
所述卡内操作系统判断所述智能密钥装置的使用状态是否为空卡状态,当为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU;
或,
所述卡内操作系统判断所述智能密钥装置的使用状态是否为初始化状态,当为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU;
或,
所述卡内操作系统判断所述智能密钥装置的使用状态是否为应用状态,当为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU;
如果所述生命周期终止,所述智能密钥装置向所述主机返回所述智能密钥装置的生命周期终止的错误,并继续等待所述主机下发新的APDU。
2.如权利要求1所述的方法,其特征在于,所述卡内操作系统判断所述智能密钥装置的使用状态是否为空卡状态,当不为空卡状态时,所述方法还包括: 
所述卡内操作系统判断所述智能密钥装置的使用状态是否为初始化状态,当为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU,当不为初始化状态时,所述卡内操作系统判断所述智能密钥装置的使用状态是否为应用状态;
当为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU;
当不为应用状态时,所述智能密钥装置向所述主机返回出错信息,并继续等待所述主机下发新的APDU;
或,
所述卡内操作系统判断所述智能密钥装置的使用状态是否为应用状态,当为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU,当不为应用状态时,所述卡内操作系统判断所述智能密钥装置的使用状态是否为初始化状态;
当为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU;
当不为初始化状态时,所述智能密钥装置向所述主机返回出错信息,并继续等待所述主机下发新的APDU。
3.如权利要求1所述的方法,其特征在于,所述卡内操作系统判断所述智能密钥装置的使用状态是否为初始化状态,当不为初始化状态时,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置的使用状态是否为空卡状态,当为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU,当不为空卡状态时,所述卡内操作系统判断所述智能密钥装置的使用状态是否为应用状态; 
当为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU;
当不为应用状态时,所述智能密钥装置向所述主机返回出错信息,并继续等待所述主机下发新的APDU;
或,
所述卡内操作系统判断所述智能密钥装置的使用状态是否为应用状态,当为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU,当不为应用状态时,所述卡内操作系统判断所述智能密钥装置的使用状态是否为空卡状态;
当为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU;
当不为空卡状态时,所述智能密钥装置向所述主机返回出错信息,并继续等待所述主机下发新的APDU。
4.如权利要求1所述的方法,其特征在于,所述卡内操作系统判断所述智能密钥装置的使用状态是否为应用状态,当不为应用状态时,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置的使用状态是否为空卡状态,当为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU,当不为空卡状态时,所述卡内操作系统判断所述智能密钥装置的使用状态是否为初始化状态;
当为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU;
当不为初始化状态时,所述智能密钥装置向所述主机返回出错信息,并继续等待所述主机下发新的APDU; 
或,
所述卡内操作系统判断所述智能密钥装置的使用状态是否为初始化状态,当为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU,当不为初始化状态时,所述卡内操作系统判断所述智能密钥装置的使用状态是否为空卡状态;
当为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU;
当不为空卡状态时,所述智能密钥装置向所述主机返回出错信息,并继续等待所述主机下发新的APDU。
5.如权利要求1-4中的任一权利要求所述的方法,其特征在于,当所述智能密钥装置的使用状态为空卡状态时,所述智能密钥装置执行写第二密钥的指令前,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置接收的APDU是否为写第二密钥的指令,如果是写第二密钥的指令,所述智能密钥装置使用第三密钥密钥对所述智能密钥装置接收的APDU进行解密,得到明文的写第二密钥的指令的APDU,进行写所述第二密钥的操作,将所述第二密钥使用所述第一密钥加密后,保存在所述智能密钥装置的可写存储区,如果不是写第二密钥的指令,所述智能密钥装置向所述主机返回所述智能密钥装置处于空卡状态的错误,并继续等待所述主机下发新的APDU。
6.如权利要求5所述的方法,其特征在于,所述第三密钥为所述智能密钥装置与所述主机预先约定,并预先存储在所述智能密钥装置的ROM(Read-Only Memory,只读存储器)中,当所述智能密钥装置生成所述第一密钥后,所述智能密钥装置将所述第三密钥读出,并使用所述第一密钥加密后保存在所述智能 密钥装置的可写存储区中,在所述智能密钥装置使用第三密钥密钥对所述智能密钥装置接收的APDU进行解密前,所述智能密钥装置使用所述第一密钥对所述可写存储区中保存的密文的所述第三密钥进行解密,得到明文的所述第三密钥。
7.如权利要求5所述的方法,其特征在于,所述智能密钥装置得到明文的写第二密钥的指令的APDU后,进行写所述第二密钥的操作前,所述方法还包括:
所述智能密钥装置验证第一消息鉴别码是否正确,所述智能密钥装置根据所述第二随机数生成第二消息鉴别码,并使用所述第二消息鉴别码与所述第一消息鉴别码进行比对,如果相同,则所述第一消息鉴别码正确,执行写所述第二密钥的操作,如果不相同,则所述第一消息鉴别码不正确,向所述主机返回第一消息鉴别码错误的消息,其中,所述第一消息鉴别码包含在所述明文的写第二密钥的指令的APDU中。
8.如权利要求7所述的方法,其特征在于,所述智能密钥装置接收到所述主机下发的APDU前,所述方法还包括:
所述主机向所述智能密钥装置发送获取第二随机数的请求,所述智能密钥装置生成所述第二随机数,并将所述第二随机数发送给所述主机,所述主机使用所述第二随机数生成第一消息鉴别码。
9.如权利要求1-4中的任一权利要求所述的方法,其特征在于,当所述智能密钥装置的使用状态为初始化状态时,所述智能密钥装置执行创建文件的指令前,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置接收的APDU是否为创建文件的指令; 
如果是创建文件的指令,所述智能密钥装置使用所述第一密钥对所述保存在可写存储区中的密文的所述第二密钥进行解密,得到明文的所述第二密钥,所述智能密钥装置使用所述明文的第二密钥对所述智能密钥装置接收的APDU进行解密,得到明文的创建文件的指令的APDU,执行所述创建文件的操作,并判断是否所述智能密钥装置的文件创建全部完成,如果是,将所述智能密钥装置的使用状态修改为应用状态,等待所述主机下发新的APDU,如果不是,继续等待所述主机下发新的APDU;
如果不是创建文件的指令,所述智能密钥装置向所述主机返回所述智能密钥装置未完成初始化的操作,并继续等待下发新的APDU。
10.如权利要求9所述的方法,其特征在于,所述智能密钥装置得到明文的创建文件的指令的APDU后,执行所述创建文件的操作前,所述方法还包括:
所述智能密钥装置验证第三消息鉴别码是否正确,所述智能密钥装置根据所述第三随机数生成第四消息鉴别码,并使用所述第四消息鉴别码与所述第三消息鉴别码进行比对,如果相同,则所述第三消息鉴别码正确,执行所述创建文件的指令,如果不相同,则所述第三消息鉴别码不正确,向所述主机返回所述第三消息鉴别码错误的消息,其中,所述第三消息鉴别码包含在所述明文的创建文件的指令的APDU中。
11.如权利要求10所述的方法,其特征在于,所述智能密钥装置接收到所述主机下发的APDU前,所述方法还包括:
所述主机向所述智能密钥装置发送获取第三随机数的请求,所述智能密钥装置生成所述第三随机数,并将所述第三随机数发送给所述主机,所述主机使用所述第三随机数生成第三消息鉴别码。
12.如权利要求1所述的方法,其特征在于,所述卡内操作系统判断所述智 能密钥装置为首次上电,具体的包括:
所述卡内操作系统判断所述智能密钥装置的可写存储区是否为空白,如果为空白,则所述智能密钥装置为首次上电,如果不是空白,则所述智能密钥装置不是首次上电。
13.如权利要求1-16中的任一权利要求所述的方法,其特征在于,在所述智能密钥装置第一次上电后,在所述智能密钥装置的可写存储区中写入所述智能密钥装置的使用状态标志位,所述卡内操作系统通过读取所述智能密钥装置的使用状态标志位判断所述智能密钥装置的使用状态是否为空卡状态、初始化状态或应用状态。
14.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述智能密钥装置的生命周期终止时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当连续认证解锁码错误次数超过约定次数时,擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当所述智能密钥装置接收到用户发出的销毁所述智能密钥装置的指令时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态。
15.一种密钥管理方法,其特征在于,所述方法包括:
智能密钥装置接入主机,卡内操作系统判断所述智能密钥装置为首次上电时,生成第一随机数作为第一密钥;
所述智能密钥装置执行通信初始化操作,等待并接收所述主机下发的 APDU;
当接收到所述主机下发的APDU后,所述卡内操作系统判断所述智能密钥装置的生命周期状态和使用状态,并执行如下操作:
当所述智能密钥装置的生命周期终止时,所述智能密钥装置向所述主机返回生命周期终止的错误,继续等待并接收新的APDU;
当所述智能密钥装置的使用状态为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU;
当所述智能密钥装置的使用状态为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU;
当所述智能密钥装置的使用状态为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU。
16.如权利要求15所述的方法,其特征在于,当所述智能密钥装置的生命周期未终止时,所述方法还包括:
所述卡内操作系统继续判断所述智能密钥装置的使用状态,并执行如下操作:
当所述智能密钥装置的使用状态为空卡状态时,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU;
当所述智能密钥装置的使用状态为初始化状态时,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU;
当所述智能密钥装置的使用状态为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU。
17.如权利要求15或16所述的方法,其特征在于,当所述智能密钥装置的 使用状态为空卡状态时,所述智能密钥装置执行写第二密钥的指令前,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置接收的APDU是否为写第二密钥的指令,如果是写第二密钥的指令,所述智能密钥装置使用第三密钥密钥对所述智能密钥装置接收的APDU进行解密,得到明文的写第二密钥的指令的APDU,进行写所述第二密钥的操作,将所述第二密钥使用所述第一密钥加密后,保存在所述智能密钥装置的可写存储区,并继续等待所述主机下发新的APDU,如果不是写第二密钥的指令,所述智能密钥装置向所述主机返回所述智能密钥装置处于空卡状态的错误,并继续等待所述主机下发新的APDU。
18.如权利要求17所述的方法,其特征在于,所述第三密钥为所述智能密钥装置与所述主机预先约定,并预先存储在所述智能密钥装置的ROM中,当所述智能密钥装置生成所述第一密钥后,所述智能密钥装置将所述第三密钥读出,并使用所述第一密钥加密后保存在所述智能密钥装置的可写存储区中,所述智能密钥装置使用第三密钥密钥对所述智能密钥装置接收的APDU进行解密前,所述智能密钥装置使用所述第一密钥对所述可写存储区中保存的密文的所述第三密钥进行解密,得到明文的所述第三密钥。
19.如权利要求17所述的方法,其特征在于,所述智能密钥装置得到明文的写第二密钥的指令的APDU后,进行写所述第二密钥的操作前,所述方法还包括:
所述智能密钥装置验证第一消息鉴别码是否正确,所述智能密钥装置根据所述第二随机数生成第二消息鉴别码,并使用所述第二消息鉴别码与所述第一消息鉴别码进行比对,如果相同,则所述第一消息鉴别码正确,执行写所述第二密钥的操作,如果不相同,则所述第一消息鉴别码不正确,向所述主机返回第一消息鉴别码错误的消息,其中,所述第一消息鉴别码包含在所述明文的写 第二密钥的指令的APDU中。
20.如权利要求19所述的方法,其特征在于,所述智能密钥装置接收到所述主机下发的APDU前,所述方法还包括:
所述主机向所述智能密钥装置发送获取第二随机数的请求,所述智能密钥装置生成所述第二随机数,并将所述第二随机数发送给所述主机,所述主机使用所述第二随机数生成第一消息鉴别码。
21.如权利要求15或16所述的方法,其特征在于,当所述智能密钥装置的使用状态为初始化状态时,所述智能密钥装置执行创建文件的指令前,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置接收的APDU是否为创建文件的指令;
如果是创建文件的指令,所述智能密钥装置使用所述第一密钥对所述保存在可写存储区中的密文的所述第二密钥进行解密,得到明文的所述第二密钥,所述智能密钥装置使用所述明文的第二密钥对所述智能密钥装置接收的APDU进行解密,得到明文的创建文件的指令的APDU,执行所述创建文件的操作,并判断是否所述智能密钥装置的文件创建全部完成,如果是,将所述智能密钥装置的使用状态修改为应用状态,等待所述主机下发新的APDU,如果不是,继续等待所述主机下发新的APDU;
如果不是创建文件的指令,所述智能密钥装置向所述主机返回所述智能密钥装置未完成初始化的操作,并继续等待下发新的APDU。
22.如权利要求21所述的方法,其特征在于,所述智能密钥装置得到明文的创建文件的指令的APDU后,执行所述创建文件的操作前,所述方法还包括:
所述智能密钥装置验证第三消息鉴别码是否正确,所述智能密钥装置根据 所述第三随机数生成第四消息鉴别码,并使用所述第四消息鉴别码与所述第三消息鉴别码进行比对,如果相同,则所述第三消息鉴别码正确,执行所述创建文件的指令,如果不相同,则所述第三消息鉴别码不正确,向所述主机返回所述第三消息鉴别码错误的消息,其中,所述第三消息鉴别码包含在所述明文的创建文件的指令的APDU中。
23.如权利要求22所述的方法,其特征在于,所述智能密钥装置接收到所述主机下发的APDU前,所述方法还包括:
所述主机向所述智能密钥装置发送获取第三随机数的请求,所述智能密钥装置生成所述第三随机数,并将所述第三随机数发送给所述主机,所述主机使用所述第三随机数生成第三消息鉴别码。
24.如权利要求15或16所述的方法,其特征在于,当所述智能密钥装置的使用状态为应用状态时,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用前,所述方法还包括:
所述卡内操作系统判断所述智能密钥装置接收的APDU是否为应用类型的APDU指令,如果是应用类型的APDU指令,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待并接受新的APDU,如果不是应用类型的APDU指令,所述智能密钥装置向所述主机返回错误,继续等待并接受新的APDU。
25.如权利要求15或16所述的方法,其特征在于,卡内操作系统判断所述智能密钥装置为首次上电,具体的包括:
所述卡内操作系统判断所述智能密钥装置的可写存储区是否为空白,如果为空白,则所述智能密钥装置为首次上电,如果不是空白,则所述智能密钥装置不是首次上电。 
26.如权利要求15或16所述的方法,其特征在于,在所述智能密钥装置第一次上电后,在所述智能密钥装置的可写存储区中写入所述智能密钥装置的使用状态标志位,所述卡内操作系统通过读取所述智能密钥装置的使用状态标志位判断所述智能密钥装置的使用状态是否为空卡状态、初始化状态或应用状态。
27.如权利要求15或16所述的方法,其特征在于,所述方法还包括:
当所述智能密钥装置的生命周期终止时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当连续认证解锁码错误次数超过约定次数时,擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当所述智能密钥装置接收到用户发出的销毁所述智能密钥装置的指令时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态。
28.一种密钥管理方法,其特征在于,所述方法包括:
智能密钥装置接入主机,卡内操作系统判断所述智能密钥装置为首次上电时,生成第一随机数作为第一密钥;
所述智能密钥装置执行通信初始化操作,等待并接收所述主机下发的APDU;
当接收到所述主机下发的APDU后,判断所述智能密钥装置的生命周期是否终止;
如果所述生命周期没有终止,判断所述APDU的类型,并执行如下操作:
当所述APDU为写第二密钥的指令时,判断所述智能密钥装置的使 用状态是否为空卡状态,如果是空卡状态,所述智能密钥装置执行写第二密钥的指令,并将所述智能密钥装置的使用状态修改为初始化状态,继续等待所述主机下发新的APDU,如果不是空卡状态,所述智能密钥装置向所述主机返回所述智能密钥装置不是空卡状态的错误,继续等待并接收新的APDU;
当所述APDU为创建文件的指令时,判断所述智能密钥装置的使用状态是否为初始化状态,如果是初始化状态,所述智能密钥装置执行创建文件的指令,继续等待所述主机下发新的APDU,如果不是初始化状态,所述智能密钥装置向所述主机返回所述智能密钥装置不是初始化状态的错误,继续等待并接收新的APDU;
当所述APDU为应用类型的指令时,判断所述智能密钥装置的使用状态是否为应用状态,如果是应用状态,所述智能密钥装置执行所述接收到的所述主机下发的APDU的应用,继续等待所述主机下发新的APDU,如果不是应用状态,所述智能密钥装置向所述主机返回所述智能密钥装置不是应用状态的错误,,继续等待并接收新的APDU;
如果所述生命周期终止,所述智能密钥装置向所述主机返回所述智能密钥装置的生命周期终止的错误,并继续等待所述主机下发新的APDU。
29.如权利要求28所述的方法,其特征在于,所述智能密钥装置执行写第二密钥的操作,具体的包括:
所述智能密钥装置使用第三密钥密钥对所述智能密钥装置接收的APDU进行解密,得到明文的写第二密钥的指令的APDU,进行写所述第二密钥的操作,将所述第二密钥使用所述第一密钥加密后,保存在所述智能密钥装置的可写存储区。
30.如权利要求29所述的方法,其特征在于,所述第三密钥为所述智能密钥装置与所述主机预先约定,并预先存储在所述智能密钥装置的ROM (Read-Only Memory,只读存储器)中,当所述智能密钥装置生成所述第一密钥后,所述智能密钥装置将所述第三密钥读出,并使用所述第一密钥加密后保存在所述智能密钥装置的可写存储区中,所述智能密钥装置使用第三密钥密钥对所述智能密钥装置接收的APDU进行解密前,所述智能密钥装置使用所述第一密钥对所述可写存储区中保存的密文的所述第三密钥进行解密,得到明文的所述第三密钥。
31.如权利要求29所述的方法,其特征在于,所述智能密钥装置得到明文的写第二密钥的指令的APDU后,进行写所述第二密钥的操作前,所述方法还包括:
所述智能密钥装置验证第一消息鉴别码是否正确,所述智能密钥装置根据所述第二随机数生成第二消息鉴别码,并使用所述第二消息鉴别码与所述第一消息鉴别码进行比对,如果相同,则所述第一消息鉴别码正确,执行写所述第二密钥的操作,如果不相同,则所述第一消息鉴别码不正确,向所述主机返回第一消息鉴别码错误的消息,其中,所述第一消息鉴别码包含在所述明文的写第二密钥的指令的APDU中。
32.如权利要求31所述的方法,其特征在于,所述智能密钥装置接收到所述主机下发的APDU前,所述方法还包括:
所述主机向所述智能密钥装置发送获取第二随机数的请求,所述智能密钥装置生成所述第二随机数,并将所述第二随机数发送给所述主机,所述主机使用所述第二随机数生成第一消息鉴别码。
33.如权利要求28所述的方法,其特征在于,所述智能密钥装置执行创建文件的指令,具体的包括:
所述智能密钥装置使用所述第一密钥对所述保存在可写存储区中的密文的 所述第二密钥进行解密,得到明文的所述第二密钥,所述智能密钥装置使用所述明文的第二密钥对所述智能密钥装置接收的APDU进行解密,得到明文的创建文件的指令的APDU,执行创建文件的操作,并判断是否所述智能密钥装置的文件创建全部完成,如果是,将所述智能密钥装置的使用状态修改为应用状态,等待所述主机下发新的APDU,如果不是,继续等待所述主机下发新的APDU。
34.如权利要求33所述的方法,其特征在于,所述智能密钥装置得到明文的创建文件的指令的APDU后,执行所述创建文件的操作前,所述方法还包括:
所述智能密钥装置验证第三消息鉴别码是否正确,所述智能密钥装置根据所述第三随机数生成第四消息鉴别码,并使用所述第四消息鉴别码与所述第三消息鉴别码进行比对,如果相同,则所述第三消息鉴别码正确,执行所述创建文件的指令,如果不相同,则所述第三消息鉴别码不正确,向所述主机返回所述第三消息鉴别码错误的消息,其中,所述第三消息鉴别码包含在所述明文的创建文件的指令的APDU中。
35.如权利要求34所述的方法,其特征在于,所述智能密钥装置接收到所述主机下发的APDU前,所述方法还包括:
所述主机向所述智能密钥装置发送获取第三随机数的请求,所述智能密钥装置生成所述第三随机数,并将所述第三随机数发送给所述主机,所述主机使用所述第三随机数生成第三消息鉴别码。
36.如权利要求28所述的方法,其特征在于,卡内操作系统判断所述智能密钥装置为首次上电,具体的包括:
所述卡内操作系统判断所述智能密钥装置的可写存储区是否为空白,如果为空白,则所述智能密钥装置为首次上电,如果不是空白,则所述智能密钥装 置不是首次上电。
37.如权利要求28所述的方法,其特征在于,在所述智能密钥装置第一次上电后,在所述智能密钥装置的可写存储区中写入所述智能密钥装置的使用状态标志位,所述卡内操作系统通过读取所述智能密钥装置的使用状态标志位判断所述智能密钥装置的使用状态是否为空卡状态、初始化状态或应用状态。
38.如权利要求28所述的方法,其特征在于,所述方法还包括:
当所述智能密钥装置的生命周期终止时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当连续认证解锁码错误次数超过约定次数时,擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当所述智能密钥装置接收到用户发出的销毁所述智能密钥装置的指令时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态。
39.一种密钥管理系统,所述系统包括主机和智能密钥装置:
所述主机包括:APDU发送模块、第一接口模块;
所述APDU发送模块,用于向智能密钥装置发送APDU;
所述第一接口模块,用于与智能密钥装置建立连接和进行数据通信;
智能密钥装置包括:上电判断模块、随机数生成模块、APDU接收模块、生命周期判断模块、空卡判断模块、写第二密钥模块、初始化判断模块、文件创建模块、应用判断模块、应用模块、错误处理模块、存储模块;
所述上电判断模块,用于判断智能密钥装置是否为首次上电; 
所述随机数生成模块,用于当所述上电判断模块判断智能密钥装置为首次上电时,根据算法生成第一随机数,并将第一随机数作为第一密钥;
所述APDU接收模块,用于在智能密钥装置生成第一密钥后,等待并接收主机下发APDU;
所述生命周期判断模块,用于判断智能密钥装置的生命周期是否终止;
所述空卡判断模块,用于判断智能密钥装置的使用状态是否为空卡状态;
所述写第二密钥模块,用于在所述空卡判断模块判断智能密钥装置的使用状态为空卡状态时,执行写第二密钥的指令,并将智能密钥装置的使用状态修改为初始化状态,完成后通知所述APDU接收模块继续等待主机下发新的APDU;
所述初始化判断模块,用于判断智能密钥装置的使用状态是否为初始化状态;
所述文件创建模块,用于在所述初始化判断模块判断智能密钥装置的使用状态为初始化状态时,执行创建文件的指令,完成后通知所述APDU接收模块继续等待主机下发新的APDU;
所述应用判断模块,用于判断智能密钥装置的使用状态是否为应用状态;
所述应用模块,用于在所述应用判断模块判断智能密钥装置的使用状态为应用状态时,执行所述APDU接收模块接收的APDU的应用,完成后通知所述APDU接收模块继续等待主机下发新的APDU;
所述错误处理模块,用于当所述生命周期判断模块判断智能密钥装置的生命周期终止时,向主机返回智能密钥装置生命周期终止的错误,并使所述APDU接收模块继续等待并接收新的APDU;
所述存储模块,用于存储第一密钥。
40.如权利要求39所述的系统,其特征在于,所述上电判断模块用于判断所述智能密钥装置是否为首次上电,具体的包括: 
所述上电判断模块判断所述存储模块中是否未存储任何数据,如果是,则所述智能密钥装置为首次上电,如果不是,则所述智能密钥装置不是首次上电。
41.如权利要求39所述的系统,其特征在于,所述存储模块还用于在所述智能密钥装置第一次上电后,在所述存储模块中写入所述智能密钥装置的使用状态标志位;
所述空卡判断模块具体地通过读取所述存储模块中的使用状态标志位判断所述智能密钥装置的使用状态是否为空卡状态;
所述初始化判断模块具体地通过读取所述存储模块中的使用状态标志位判断所述智能密钥装置的使用状态是否为初始化状态;
所述应用判断模块具体地通过读取所述存储模块中的使用状态标志位判断所述智能密钥装置的使用状态是否为应用状态。
42.如权利要求39所述的系统,其特征在于,所述系统还包括写第二密钥判断模块,所述写第二密钥判断模块用于,在所述写第二密钥模块执行写第二密钥的指令前,判断所述APDU接收模块接收的APDU是否为写第二密钥的指令,如果是写第二密钥的指令,所述写第二密钥模块使用所述第一密钥解密所述存储模块中存储的加密后的第三密钥,得到明文的第三密钥,并使用所述明文的第三密钥对所述写第二密钥指令的APDU进行解密,得到明文的写第二密钥指令的APDU,进行写所述第二密钥的操作,将所述第二密钥使用所述第一密钥加密后,保存在所述存储模块中。
43.如权利要求42所述的系统,其特征在于,所述存储模块还用于存储所述加密后的第二密钥和第三密钥,其中所述第三密钥为所述智能密钥装置与所述主机预先约定,并预先存储在所述智能密钥装置的ROM中,当所述智能密钥装置生成所述第一密钥后,所述智能密钥装置将所述第三密钥读出,并使用所 述第一密钥加密后保存在所述智能密钥装置的可写存储区中。
44.如权利要求42所述的系统,其特征在于,在所述写第二密钥模块得到明文的写第二密钥指令的APDU后,进行写所述第二密钥的操作前,所述写第二密钥模块还用于,判断第一消息鉴别码是否正确,所述写第二密钥模块根据所述第二随机数生成第二消息鉴别码,并使用所述第二消息鉴别码与所述第一消息鉴别码进行比对,如果相同,则所述第一消息鉴别码正确,所述写第二密钥模块执行写所述第二密钥的操作,如果不相同,则所述第一消息鉴别码不正确,通过所述错误处理模块向所述主机返回第一消息鉴别码错误的消息,其中,所述第一消息鉴别码包含在所述明文的写第二密钥的指令的APDU中。
45.如权利要求44所述的系统,其特征在于,所述APDU接收模块接收所述写第二密钥指令的APDU前,所述APDU发送模块还用于,向所述随机数生成模块发送获取第二随机数的请求,所述随机数生成模块生成所述第二随机数并发送给所述APDU发送模块,所述APDU发送模块使用所述第二随机数生成所述第一消息鉴别码。
46.如权利要求39所述的系统,其特征在于,所述系统还包括创建文件判断模块,所述创建文件判断模块用于,在所述文件创建模块执行创建文件的指令前,判断所述APDU接收模块接收的APDU是否为创建文件的指令,如果是,所述文件创建模块使用所述第一密钥对所述存储模块中存储的加密后的第二密钥进行解密,得到明文的第二密钥,再使用所述明文的第二密钥对所述APDU接收模块接收的APDU进行解密,得到明文的创建文件的指令的APDU,所述文件创建模块执行所述创建文件的操作。
47.如权利要求46所述的系统,其特征在于,所述文件创建模块得到明文 的创建文件的指令的APDU后,所述文件创建模块执行所述创建文件的操作前,所述文件创建模块还用于,判断第三消息鉴别码是否正确,所述文件创建模块根据所述第三随机数生成第四消息鉴别码,并使用所述第四消息鉴别码与所述第三消息鉴别码进行比对,如果相同,则所述第三消息鉴别码正确,所述文件创建模块执行所述创建文件的指令,如果不相同,则所述第三消息鉴别码不正确,通过所述错误处理模块向所述主机返回所述第三消息鉴别码错误的消息,其中,所述第三消息鉴别码包含在所述明文的创建文件的指令的APDU中。
48.如权利要求47所述的系统,其特征在于,所述APDU接收模块接收所述创建文件的指令的APDU前,所述APDU发送模块还用于,向所述随机数生成模块发送获取第三随机数的请求,所述随机数生成模块生成所述第三随机数并发送给所述APDU发送模块,所述APDU发送模块使用所述第三随机数生成所述第三消息鉴别码。
49.如权利要求46所述的系统,其特征在于,所述文件创建模块执行创建文件的操作结束后,所述文件创建模块还用于,判断是否所述智能密钥装置的文件创建全部完成,如果是,将所述智能密钥装置的使用状态修改为应用状态,等待所述主机下发新的APDU,如果不是,通知所述APDU接收模块继续等待所述主机下发新的APDU。
50.如权利要求39所述的系统,其特征在于,所述系统还包括密钥擦除模块,所述密钥擦除模块用于当所述智能密钥装置的生命周期终止时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态;
或,
当连续认证解锁码错误次数超过约定次数时,擦除所述第一密钥,并将所 述智能密钥装置的使用状态修改为终止使用状态;
或,
当所述智能密钥装置接收到用户发出的销毁所述智能密钥装置的指令时,所述智能密钥装置擦除所述第一密钥,并将所述智能密钥装置的使用状态修改为终止使用状态。 
CN2010102141612A 2010-06-29 2010-06-29 一种密钥管理方法及系统 Active CN102013975B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010102141612A CN102013975B (zh) 2010-06-29 2010-06-29 一种密钥管理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010102141612A CN102013975B (zh) 2010-06-29 2010-06-29 一种密钥管理方法及系统

Publications (2)

Publication Number Publication Date
CN102013975A true CN102013975A (zh) 2011-04-13
CN102013975B CN102013975B (zh) 2012-06-27

Family

ID=43844006

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010102141612A Active CN102013975B (zh) 2010-06-29 2010-06-29 一种密钥管理方法及系统

Country Status (1)

Country Link
CN (1) CN102013975B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104917750A (zh) * 2015-04-16 2015-09-16 中国科学院计算技术研究所 一种面向sdn网络的控制层与数据层通信通道自配置方法及其系统
CN105653965A (zh) * 2016-01-22 2016-06-08 东信和平科技股份有限公司 一种智能卡加密机监控装置及方法
CN105721143A (zh) * 2016-01-30 2016-06-29 飞天诚信科技股份有限公司 一种对智能卡应用进行初始化的方法和装置
CN106169997A (zh) * 2016-07-04 2016-11-30 安徽天达网络科技有限公司 一种系统控制用户登录USB Key的制作方法
CN110473318A (zh) * 2019-06-28 2019-11-19 阿里巴巴集团控股有限公司 解锁方法、实现解锁的设备及计算机可读介质
CN111415441A (zh) * 2020-02-24 2020-07-14 洪心科技(广州)有限公司 密钥数据管理的方法及装置
CN113254911A (zh) * 2021-06-01 2021-08-13 统信软件技术有限公司 一种解锁系统、解锁方法及计算设备
US11295565B2 (en) 2019-06-28 2022-04-05 Advanced New Technologies Co., Ltd. Secure smart unlocking
CN114928756A (zh) * 2022-05-27 2022-08-19 浙江大华技术股份有限公司 视频数据保护、加密、校验方法及系统、设备
CN115120921A (zh) * 2022-08-30 2022-09-30 江苏海舟安防科技有限公司 一种基于消防气瓶的消防监控系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101009556A (zh) * 2007-01-08 2007-08-01 中国信息安全产品测评认证中心 一种智能卡与u盘复合设备及其基于双向认证机制以提高访问安全性的方法
CN101013464A (zh) * 2007-01-24 2007-08-08 北京飞天诚信科技有限公司 一种主机与智能卡信息交互的方法
CN101163014A (zh) * 2007-11-30 2008-04-16 中国电信股份有限公司 一种动态口令身份认证系统和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101009556A (zh) * 2007-01-08 2007-08-01 中国信息安全产品测评认证中心 一种智能卡与u盘复合设备及其基于双向认证机制以提高访问安全性的方法
CN101013464A (zh) * 2007-01-24 2007-08-08 北京飞天诚信科技有限公司 一种主机与智能卡信息交互的方法
CN101163014A (zh) * 2007-11-30 2008-04-16 中国电信股份有限公司 一种动态口令身份认证系统和方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104917750A (zh) * 2015-04-16 2015-09-16 中国科学院计算技术研究所 一种面向sdn网络的控制层与数据层通信通道自配置方法及其系统
CN104917750B (zh) * 2015-04-16 2017-11-21 中国科学院计算技术研究所 一种面向sdn网络的控制层与数据层通信通道自配置方法及其系统
CN105653965A (zh) * 2016-01-22 2016-06-08 东信和平科技股份有限公司 一种智能卡加密机监控装置及方法
CN105653965B (zh) * 2016-01-22 2018-09-11 东信和平科技股份有限公司 一种智能卡加密机监控装置及方法
CN105721143B (zh) * 2016-01-30 2019-05-10 飞天诚信科技股份有限公司 一种对智能卡应用进行初始化的方法和装置
CN105721143A (zh) * 2016-01-30 2016-06-29 飞天诚信科技股份有限公司 一种对智能卡应用进行初始化的方法和装置
CN106169997A (zh) * 2016-07-04 2016-11-30 安徽天达网络科技有限公司 一种系统控制用户登录USB Key的制作方法
CN110473318A (zh) * 2019-06-28 2019-11-19 阿里巴巴集团控股有限公司 解锁方法、实现解锁的设备及计算机可读介质
US11295565B2 (en) 2019-06-28 2022-04-05 Advanced New Technologies Co., Ltd. Secure smart unlocking
CN111415441A (zh) * 2020-02-24 2020-07-14 洪心科技(广州)有限公司 密钥数据管理的方法及装置
CN113254911A (zh) * 2021-06-01 2021-08-13 统信软件技术有限公司 一种解锁系统、解锁方法及计算设备
CN114928756A (zh) * 2022-05-27 2022-08-19 浙江大华技术股份有限公司 视频数据保护、加密、校验方法及系统、设备
CN114928756B (zh) * 2022-05-27 2023-03-17 浙江大华技术股份有限公司 视频数据保护、加密、校验方法及系统、设备
CN115120921A (zh) * 2022-08-30 2022-09-30 江苏海舟安防科技有限公司 一种基于消防气瓶的消防监控系统

Also Published As

Publication number Publication date
CN102013975B (zh) 2012-06-27

Similar Documents

Publication Publication Date Title
CN102013975B (zh) 一种密钥管理方法及系统
CN109495274B (zh) 一种去中心化智能锁电子钥匙分发方法及系统
EP2697931B1 (en) Qkd key management system
CN1964258B (zh) 用于安全装置发现及引入的方法
US10104542B2 (en) Systems and methods for preventing transmitted cryptographic parameters from compromising privacy
US20180144341A1 (en) Encryption system, encryption key wallet and method
US20130145169A1 (en) Efficient authentication for mobile and pervasive computing
JP2008500774A (ja) Qkdのキーバンクシステムおよびその方法
CN111371790B (zh) 基于联盟链的数据加密发送方法、相关方法、装置和系统
KR20110046849A (ko) 센서데이터 보안유지 방법, 시스템 및 기록매체
Sasi et al. A general comparison of symmetric and asymmetric cryptosystems for WSNs and an overview of location based encryption technique for improving security
KR20180119201A (ko) 인증 시스템을 위한 전자 장치
CN110401530A (zh) 一种燃气表的安全通信方法、系统、设备和存储介质
CN103051459B (zh) 安全卡的交易密钥的管理方法和装置
US20020199102A1 (en) Method and apparatus for establishing a shared cryptographic key between energy-limited nodes in a network
Nguyen et al. 802.11 i encryption key distribution using quantum cryptography.
CN110225028B (zh) 一种分布式防伪系统及其方法
Yang A quantum secure direct communication protocol without quantum memories
JP2009065226A (ja) 認証付鍵交換システム、認証付鍵交換方法およびプログラム
KR20180068537A (ko) 고유 일련번호 및 대칭키를 이용한 암복호화 시스템
CN109688584A (zh) 适用于资源受限网络节点的数据安全存储系统及方法
JP5314240B2 (ja) 通信路システム
KR100798921B1 (ko) Mac 보안 서비스망에서의 보안 채널 제어 방법 및 이를구현하는 단말 장치
Zhang et al. A secure data exchange protocol for the internet of things
KR20210056817A (ko) IoT 디바이스 통신시 데이터 보안 및 HMAC 인증 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant