发明内容
为了克服上述缺陷,本发明的目的在于提供一种电子钥匙与计算机之间实现绑定功能的方法,该方法使电子钥匙只能在与其绑定的计算机上使用,增加了电子钥匙内秘密数据的安全性。
为达到上述目的,本发明电子钥匙与计算机之间实现绑定功能的方法,包括步骤:
(1)电子钥匙内产生随机数据并保存,之后将随机数据送入计算机中进行运算,运算结果再传入电子钥匙内;
(2)电子钥匙内对计算机传入的数据进行逆运算,逆运算结果与电子钥匙内保存的随机数据进行比较,若相同,则证明电子钥匙与计算机之间建立了绑定关系,否则,关系不成立。
其中,所述步骤(1)具体为:
(11)电子钥匙内产生随机数据并进行保存,之后将该随机数据送入计算机,计算机利用其内部的私钥对接收的随机数据进行运算,运算结果送入电子钥匙;
所述步骤(2)具体为:
(21)电子钥匙使用其内部的公钥对计算机运算后数据进行逆运算,逆运算结果与电子钥匙内原始保存的随机数据进行比较,若相同,则证明电子钥匙与计算机之间建立了绑定关系,否则,绑定关系不成立。
其中,所述步骤(11)之前包括:
(10)产生公私钥对,将私钥直接存储在计算机中,将公钥直接存储在电子钥匙中。
其中,所述步骤(11)之前包括:
(101)产生公私钥对,提取出公钥将该公钥存储在电子钥匙中;
(102)计算机利用加密密钥对该私钥或公私钥对进行加密,将加密后私钥或公私钥对保存在电子钥匙中;
(103)使用时,电子钥匙将存储其内的加密后的私钥或公私钥对传送至计算机,计算机利用加密密钥对收到的加密后的私钥或公私钥对进行解密,得到私钥。
其中,所述公私钥对是根据计算机的相关硬件的固有信息产生。
其中,所述计算机在利用私钥对随机数据进行运算开始之前,还要对该私钥进行验证,所述对该私钥进行验证具体为:
计算机利用其相关硬件的固有信息再产生一个私钥,与所述要进行随机数据运算的私钥进行匹配,若匹配成功,则证明所述要进行随机数据运算的私钥是合法的,否则,证明绑定关系不成立。
其中,所述加/解密使用的算法包括但不限于RSA、ECC、DH算法。
其中,所述电子钥匙和计算机之间的绑定关系功能维持的有效期限由扩充的IS07816协议中的指令进行控制。
其中,所述电子钥匙的芯片采用基于32位或以上的精简指令及计算机处理器的高安全芯上***芯片。
本发明所述的在电子钥匙与计算机之间实现绑定功能的方法,通过在电子钥匙内写入计算机端产生的公私钥来建立起两者之间的绑定关系,能有效地限制电子钥匙的使用范围(具体讲,限定电子钥匙只能在与其绑定的计算机上使用),从而使电子钥匙的使用安全更容易控制,提高了使用过程中的安全性,为***的客户端用户认证提供更强有力保障。该发明可以广泛应用于安全要求较高的***中,如银行、证券、保险、公安、国防等对数据安全性要求较高的应用***。
具体实施方式
电子钥匙与计算机之间实现绑定功能的方法:
在电子钥匙内增加随机数据产生与保存模块,用于实现生成随机数据并能对随机数据进行保存的功能;
在电子钥匙内增加数据比对模块,用于比较原始产生的随机数据与计算机返回的输入数据是否一致,如果两者一致,则外部程序可以使用电子钥匙内的受绑定保护的秘密数据。
实现计算机与电子钥匙绑定的整个操作流程分为:设定绑定和检测绑定两个阶段;
在设定绑定阶段,设定绑定的方式可以有多种,以下介绍两种优选方式:
方式一、产生一对公私钥对数据,将私钥数据存储在计算机中,将公钥数据存储到电子钥匙中,以实现二者绑定关系的设定;
方式二、为了达到更好的安全保密效果,可以将私钥或公私钥对数据加密为二进制加密数据后写入到电子钥匙中,在计算机需要使用此私钥或公私钥对数据时,电子钥匙再将此私钥或公私钥对数据传递到计算机中,计算机利用加密密钥对此私钥或公私钥对数据进行解密后使用,也可以实现二者绑定关系的设定。
上述的公私钥对数据最好在安全计算环境下产生,就目前的技术来看,可以使用TPM(可信计算机)和BIOS软件来提供安全计算环境。具体实施时,安全计算环境中始终存在一个加密密钥,此加密密钥在安全计算环境中产生,并且永远不出此安全计算环境。
上述的在安全计算环境中产生的公私钥对数据经过此加密密钥加密后再写入电子钥匙中。为了使公私钥对的公钥数据能够在电子钥匙中使用,需要在产生公私钥对数据时预先将公钥数据在安全计算环境中提取出来,再写入电子钥匙。
上述的方式一和方式二中,公私钥对数据的产生是由计算机根据其相关硬件的固有信息产生;比如,计算机的相关硬件的固有信息可以为:CPU、硬盘、主板、网卡等的生产编号信息的任意组合信息。
在检测绑定阶段,相对应上述两种设定绑定的方式,有如下两种检测绑定的方法:
方法一、检测绑定时,电子钥匙产生随机数据并保存,然后送入计算机安全计算环境中,计算机利用其内部存储的私钥对该随机数据进行运算,并将运算结果再传入电子钥匙内,电子钥匙利用预先存储其内的公钥对输入数据进行逆运算,逆运算结果与其内存储的原始随机数据进行比较,如果相同,则证明电子钥匙与计算机之间存在绑定关系,否则,不存在绑定关系,即计算机就不能访问电子钥匙内的加密数据。
方法二、检测绑定时,首先计算机将电子钥匙内保存的私钥或公私钥对二进制加密数据读取出来,并置于安全计算环境中进行解密,得到私钥,然后电子钥匙内产生随机数据并保存,随机数据送入计算机安全计算环境中利用私钥进行运算,运算结果再传入电子钥匙内,电子钥匙内利用预先存储其内的公钥对输入数据进行逆运算,逆运算结果与原始随机数据进行比较,如果相同,则证明电子钥匙与计算机之间存在绑定关系,否则,不存在绑定关系,计算机就不能访问电子钥匙内的加密数据。
为了达到更好的安全效果,上述方法一和方法二中,计算机还可以对要进行随机数据运算的私钥进行验证,即再利用自身的硬件的固有信息按照与绑定关系设定阶段相同的方法产生一个私钥,与要进行随机数据运算的私钥进行匹配,若匹配成功,说明该要进行随机数据运算的私钥是合法的,否则不能进行后续的运算,证明绑定关系不成立。
本发明中所述在电子钥匙与计算机之间实现绑定功能的方法主要适用于如图1所示的电子钥匙芯片,该电子钥匙在通用的电子钥匙芯片结构中加入了数据比对模块,该电子钥匙中的芯片最好是一个基于32位或以上的精简指令及计算机(RISC)处理器的高安全芯上***(SOC)芯片,具备高处理能力、高安全性、低功耗、低成本等特点。
本发明的核心就是针对计算机与电子钥匙的绑定关系,扩充了IS07816的协议,增加了如下几条指令:
(1)电子钥匙内用于产生随机数据并保存该随机数据的指令,具体指令内容见下表1和表2,其中,表2为表1所述指令的回送状态结果;
代码 |
长度(byte) |
值(Hex) |
描述(Hex) |
CLA |
1 |
00 |
命令报文的类别字节(可以根据ISO7816标准进行调整) |
INS |
1 |
86 |
命令的指令字节(可以根据ISO7816标准进行调整) |
P1 |
1 |
00 |
取随机数 |
P2 |
1 |
00 |
- |
Lc |
- |
- |
- |
DATA |
- |
- |
- |
Le |
1 |
08-100 |
要求卡片返回的数据长度 |
表1
表1为随机数产生与保存的指令报文编码与说明;
其可能回送的状态码如下表所示:
SW1 |
SW2 |
意义 |
90 |
00 |
命令成功执行 |
67 |
00 |
长度错误 |
6A |
81 |
不支持此功能(无MF或卡片已锁定) |
表2
表2为随机数产生与保存的命令的回送状态码及意义;
如果上述命令返回状态码为9000,则说明随机数产生成功,并已经保存在电子钥匙内部。
(2)电子钥匙内用于把从计算机接收到的数据进行逆运算后与原始保存的随机数据进行比对的指令,具体内容见下表3;
代码 |
长度(byte) |
值(Hex) |
描述(Hex) |
CLA |
1 |
00 |
命令报文的类别字节(可以根据ISO7816标准进行调整) |
INS |
1 |
86 |
命令的指令字节(可以根据ISO7816标准进行调整) |
P1 |
1 |
XX |
计算机端产生的公钥的文件标识; |
P2 |
1 |
XX |
保存了有效截止日期的二进制文件的文件标识;如果为00则表示不需要进行有效截止日期判断; |
Lc |
1 |
84H |
数据长度;Lc为84H(80H字节密文+4字节当前***日期); |
DATA |
XX |
XX XX |
外部传入的加密数据 |
Le |
- |
- |
|
表3
表3为导入外部数据,内部运算后与原始随机数据进行比对的命令报文编码与功能说明;
其可能的响应报文数据如下:
SW1 |
SW2 |
意义 |
90 |
00 |
命令成功执行 |
69 |
82 |
认证使用条件不满足 |
69 |
83 |
随机数比对认证失败 |
69 |
84 |
没取随机数 |
69 |
85 |
当前日期超过有效截止日期,或者日期格式不对,或者应用已被临时锁定 |
表4
表4为表3的指令返回状态说明;上述命令执行后如果返回9000,则说明计算机与电子钥匙之间存在绑定关系。外部应用程序就可以使用电子钥匙中的秘密数据。
电子钥匙和计算机之间建立起绑定关系就是根据这些指令来建立的。并且,在这些指令中加入了对绑定功能的时间控制,可以控制绑定关系的有效期限。
当外部应用程序需要使用电子钥匙内的受绑定保护的数据时,如果此时电子钥匙还没有通过对与其相连的计算机的认证,则由应用程序发起电子钥匙对计算机的验证。
图2描述了检测计算机与电子钥匙之间实现绑定关系的流程:
当外部应用程序需要使用电子钥匙内的受绑定保护的数据时,如果此时电子钥匙还没有通过对与其相连的计算机的认证,则由应用程序发起电子钥匙对计算机的验证,在图2所示的流程中,电子钥匙通过挑战/应答(challenge/response)的方式来检测当前与其通讯的计算机是否为与之绑定的计算机。
计算机在安全计算环境产生公私钥对数据,为了使公私钥对的公钥能够在电子钥匙中使用,需要预先将公钥数据从安全计算环境中提取出来写入电子钥匙中;
计算机利用加密密钥对其产生的私钥或公私钥对,经过加密后保存到电子钥匙内部,同时也可以保存在计算机的其它存储介质中备用。
①处于计算机安全环境的外部应用程序层向USB电子钥匙请求使用受绑定的秘密资料;
②电子钥匙中的私钥或公私钥二进制加密数据导入到计算机;
③计算机用自身的加密密钥对传入的私钥或公私钥对二进制加密数据进行解密,获得解密后的私钥;
④电子钥匙内的随机数产生模块产生随机数据;
⑤产生的随机数据传输到计算机;
⑥计算机利用其解密后的私钥在安全计算环境下对传入的随机数据进行运算;
⑦运算结果传入到电子钥匙中,电子钥匙利用预先写入其内的公钥数据进行逆运算;
⑧逆运算的结果与原始随机数据进行比较,如果相同则认定电子钥匙与计算机之间的绑定关系存在,否则认定电子钥匙与计算机不匹配,即两者之间不存在绑定关系;
绑定检测通过之后,外部应用程序就可以使用电子钥匙内的秘密数据了。
其中,计算机在安全计算环境产生公私钥对数据,也可以不经加密而分别将私钥存储到计算机,公钥存储在电子钥匙中,以在后续的电子钥匙与计算机之间进行检测绑定时使用,此时,上述方法需要作部分调整:可以略过上述的步骤②和步骤③,步骤⑥中计算机直接利用其存储的的私钥。
为了达到更好的安全效果,上述流程中,在步骤⑥前,还可以对要进行随机数据运算的私钥进行验证,利用自身的硬件的固有信息按照与绑定关系设定阶段相同的方法产生一个私钥,与要进行随机数据运算的私钥进行匹配,若匹配成功,说明该要进行随机数据运算的私钥是合法的,否则不能进行后续的运算,证明绑定关系不成立。
上述电子钥匙与计算机之间实现绑定关系的方法中,加/解密所使用的算法包括但不限于RSA算法、ECC算法、DH算法。
图3为检测电子钥匙与计算机之间实现绑定关系的另一流程图:
具体步骤如下:
第一步,电子钥匙内产生随机数据,并将其保存在电子钥匙内;
第二步,随机数据产生后,随机数据传入到计算机安全计算环境中,计算机使用私钥进行运算,外部应用程序获取计算机的运算结果后再将其传入到电子钥匙中;
第三步,电子钥匙使用其内部的公钥进行逆运算,运算的结果再与原始随机数据进行比较,如果相同则证明电子钥匙与计算机之间存在绑定关系,否则此关系不成立。
本发明提供的电子钥匙与计算机之间实现绑定功能的方法中所使用的公私钥对也可以通过其它方式获得,但最终需要将公钥写入电子钥匙,将私钥写入计算机。
本发明所述的在电子钥匙与计算机之间实现绑定功能的方法,通过在电子钥匙内写入计算机端产生的公私钥来建立起两者之间的绑定关系,有效地限制电子钥匙的使用范围(具体讲,限定电子钥匙只能在与其绑定的计算机上使用),从而使电子钥匙的使用安全更容易控制,提高了使用过程中的安全性,为***的客户端用户认证提供更强有力保障。该发明可以广泛应用于安全要求较高的***中,如银行、证券、保险、公安、国防等对数据安全性要求较高的应用***。