一种不落地导入密钥的方法及装置的制作方法

文档序号:7888585阅读:275来源:国知局
专利名称:一种不落地导入密钥的方法及装置的制作方法
技术领域
本发明涉及信息安全领域,尤其涉及一种不落地导入密钥的方法及装置
背景技术
随着身份认证技术的发展与应用,智能密钥设备得到广泛应用,如在网上银行认证、网上证券交易认证等身份认证过程中,智能密钥设备成为作为用户身份认证的工具,因此,智能密钥设备中存储的智能密钥的安全性密切关系着人们的切身利益。现有技术中,智能密钥设备中的密钥一般都由发行方在特定的安全环境下写入, 这种方式对环境要求较高,不便于智能密钥设备中密钥的管理与更新。

发明内容
本发明的目的是解决目前对智能密钥设备中密钥的管理时对环境要求较高的问题,根据本发明的一方面,本发明实施例提供了一种不落地导入密钥的方法,包括步骤A 接收到上位机发送的导入命令后,判断所述导入命令是否完整,是则执行步骤B,否则结束操作,向上位机返回指示操作失败的响应;步骤B 对所述导入命令进行解析,得到所述导入命令的数据域;步骤C 对所述数据域进行解析,得到指示第二存储位置的地址、会话密钥加密使用的算法标识、会话密钥密文、待导入密钥信息;步骤D 根据所述指示第二存储位置的地址查找对应的第二存储位置和第一存储位置,如找到则执行步骤E,否则向所述上位机返回错误提示信息,结束;所述第二存储位置和第一存储位置相关联;步骤E 调用所述第一存储位置中的签名私钥,使用所述签名私钥对所述会话密钥密文进行解密,如解密成功则得到会话密钥,继续执行步骤F,否则向所述上位机返回错误提示信息,结束;步骤F:使用所述会话密钥对所述待导入密钥信息中的待导入密钥密文进行解密,如解密成功则得到待导入密钥,继续执行步骤G,否则向所述上位机返回错误提示信息, 结束;步骤G 将所述待导入密钥存储到所述第二存储位置中。其中,所述步骤A中判断所述命令是否完整具体包括步骤Al 判断所述导入命令的总长度是否超过第一预定长度,是则执行步骤A2, 否则所述导入命令不完整;步骤A2 从所述导入命令的预定位置提取数据域长度的值;步骤A3 判断所述数据域长度的值是否与所述数据域所占字节数相等,是则所述导入命令完整,否则所述导入命名不完整。进一步地,在步骤A之前还包括在接收到所述上位机发送的第一命令时根据所述第一命令生成签名密钥,查找第一存储位置,如找到则将所述签名密钥存储到所述第一存储位置中,在接收到所述上位机发送的第二命令时将所述签名密钥的签名公钥发送给上位机,如未找到则向所述上位机返回错误提示信息,结束;所述签名密钥包括签名私钥和签名公钥。在所述步骤C之前还包括根据预定格式判断所述待导入密钥的类型,如所述待导入密钥的类型是第一类型,则所述待导入密钥信息包括待导入密钥密文和所述待导入密钥的私钥遵循的格式;如所述待导入密钥的类型是第二类型,则所述待导入密钥信息包括待导入密钥保护结构的版本、待导入密钥的位长度、待导入密钥的公钥明文及私钥密文。进一步地,所述步骤D和步骤E之间包括判断当前的权限状态是否为允许调用签名私钥的状态,是则执行步骤E,否则向所述上位机返回错误提示信息,结束。其中,当所述待导入密钥的类型是第一类型时,所述步骤E包括步骤EO 调用所述第一存储位置中的所述签名密钥;步骤El 判断所述签名密钥的位长与所述会话密钥的密文位长是否相等,是则执行步骤E2,否则向所述上位机返回错误提示信息,结束;步骤E2 使用所述签名私钥对所述会话密钥的密文进行解密,如解密成功则得到会话密钥,继续执行步骤F,否则向所述上位机返回错误提示信息,结束。在所述步骤E和步骤F之间包括判断所述会话密钥的长度是否与所述算法标识对应的算法中定义的密钥长度相同,是则执行步骤F,否则向所述上位机返回错误提示信息,结束。所述步骤F具体包括根据所述算法标识调用相应算法,并用所述会话密钥对所述待导入密钥密文进行解密,如解密成功,则得到待导入密钥,执行步骤G,如解密失败,则向所述上位机返回错误提示信息,结束。进一步地,在所述步骤F和步骤G之间包括判断所述待导入密钥的格式是否符合所述待导入密钥的私钥遵循的格式,是则执行步骤G,否则向所述上位机返回错误提示信息,结束。其中,所述判断所述待导入密钥的格式是否符合所述待导入密钥的私钥遵循的格式,具体包括判断预设位置的值是否与预设值相符,是则执行步骤G,否则向所述上位机返回错误提示信息,结束。在所述判断所述待导入密钥的格式是否符合所述待导入密钥的私钥遵循的格式之前包括判断所述待导入密钥的长度是否大于第二预定长度,是则继续,否则结束。当所述待导入密钥的类型是第二类型时,所述步骤E包括步骤EO 调用所述第一存储位置中的所述签名密钥;步骤El 使用所述签名私钥对所述会话密钥的密文进行解密,如解密成功则得到会话密钥,继续执行步骤F,否则向所述上位机返回错误提示信息,结束。在所述步骤E和步骤F之间包括判断所述会话密钥的长度是否与所述算法标识对应的算法中定义的密钥长度相同,是则执行步骤F,否则向所述上位机返回错误提示信息,结束。
其中,所述步骤F具体包括根据所述算法标识调用相应算法,并用所述会话密钥对所述待导入密钥的私钥密文进行解密,如解密成功则得到待导入密钥的私钥,执行步骤G,如解密失败则向所述上位机返回错误提示信息,结束;所述步骤G为将所述待导入密钥的私钥和所述待导入密钥的公钥存储到所述第
二存储位置中。根据本发明的另一方面,提供了一种不落地导入密钥的装置。包括接收模块,用于接收上位机发送的导入命令;第一判断模块用于判断所述导入命令是否完整;第一解析模块用于在所述导入命令完整时对所述导入命令进行解析,得到所述导入命令的数据域;第二解析模块用于对所述数据域进行解析,得到指示第二存储位置的地址、会话密钥加密使用的算法标识、会话密钥密文、待导入密钥信息;第一查找模块用于根据所述指示第二存储位置的地址查找对应的第二存储位置和第一存储位置;第一解密模块用于调用所述第一存储位置中的签名私钥,使用所述签名私钥对所述会话密钥密文进行解密;第二解密模块用于使用所述第一解密模块解密成功得到的会话密钥对所述待导入密钥信息中的待导入密钥密文进行解密;第一存储模块用于将所述第二解密模块解密成功得到的待导入密钥存储到所述第二存储位置中;发送模块用于向所述上位机返回错误提示信息;在密钥导入成功后向上位机返回指示待导入密钥导入成功的响应。其中,所述第一判断模块包括第一判断单元用于判断所述导入命令的总长度是否超过第一预定长度;提取单元用于从所述导入命令的预定位置提取数据域长度的值;第二判断单元用于判断所述数据域长度的值是否与所述数据域所占字节数相寸。进一步的,还包括生成模块、第二查找模块和第二存储模块,所述接收模块还用于接收所述上位机发送的第一命令和第二命令;所述生成模块用于在所述接收模块接收所述上位机发送的第一命令时,根据所述第一命令生成签名密钥;所述第二查找模块用于查找存储所述签名密钥的第一存储位置;所述第二存储模块用于将所述签名密钥存储到找到的所述第一存储位置中;所述发送模块还用于在接收到所述上位机发送的第二命令时,将所述签名密钥的签名公钥发送给上位机。还包括第一检测模块用于在接收上位机发送的所述导入命令后检测所述待导入密钥的类型;当所述待导入密钥的类型是第一类型时,所述第一解析模块解析得到的所述待导入密钥信息包括待导入密钥的密文和所述待导入密钥的私钥遵循的格式;当所述待导入密钥的类型是第二类型时,所述第一解析模块解析得到的所述待导入密钥信息包括待导入密钥保护结构的版本、待导入密钥的位长度、待导入密钥的公钥明文及私钥密文。进一步地,还包括第二检测模块用于判断当前的权限状态是否为允许调用签名私钥的状态。当所述待导入密钥的类型是第一类型时,所述第一解密模块包括第一调用单元用于调用所述第一存储位置中的所述签名密钥;第三判断单元判断所述签名密钥的位长与所述会话密钥的密文位长是否相等;第一解密单元使用所述签名私钥对所述会话密钥的密文进行解密,如解密成功则得到会话密钥。当所述待导入密钥的类型是第二类型时,所述第一解密模块包括第二调用单元用于调用所述第一存储位置中的所述签名私钥;第二解密单元用于使用所述签名私钥对所述会话密钥的密文进行解密,如解密成功则得到会话密钥。进一步地,还包括第二判断模块用于判断所述会话密钥的长度是否与所述算法标识对应的算法中定义的密钥长度相同。进一步地,还包括第三判断模块用于判断所述待导入密钥的格式是否符合所述待导入密钥的私钥遵循的格式。进一步地,还包括第四判断模块用于判断所述待导入密钥的长度是否大于第二预定长度。所述第二解密模块具体用于根据所述算法标识调用相应算法,并用所述会话密钥对所述待导入密钥的密文进行解密。所述第二解密模块具体用于根据所述算法标识调用相应算法,并用所述会话密钥对所述待导入密钥的私钥密文进行解密,如解密成功则得到待导入密钥的私钥;所述第一存储模块具体用于将所述待导入密钥的私钥和所述待导入密钥的公钥存储到所述第二存储位置中。与现有技术比,本发明提供的密钥导入方式使导入的密钥以密文形式导入智能密钥设备,提高了导入密钥的安全性,且用户可以通过网络实现对智能密钥设备中密钥的管理与更新,极大的提高了智能密钥设备在使用中的方便性。


图1为本发明实施例1提供的一种不落地导入密钥的方法流程图;图2为本发明实施例2提供的又一种不落地导入密钥的方法流程图;图3为本发明实施例3提供的再一种不落地导入密钥的方法流程图;图4为本发明实施例4提供的一种不落地导入密钥的装置的方框示意图。
具体实施例方式实施例1参见图1,本发明实施例1提供了一种不落地导入密钥的方法,具体步骤如下
9
步骤101 智能密钥设备接收上位机发送的密钥导入命令,根据预先预定的格式判断待导入密钥类型;优选地,在本实施例中,步骤101之前还可以包括智能密钥设备验证用户身份是否合法的步骤,具体可以为所述智能密钥设备通过上位机或通过自带的显示屏或发声装置,提示用户输入密码,并验证用户输入的密码是否正确,是则继续,否则结束,报错。判断待导入密钥类型的方法为判断所述导入命令的高位端预定长度的数据是否与第一特征串或第二特征串相符,若与所述第一特征串相符,则待导入密钥类型为第一类型,若与所述第二特征串相符,则待导入密钥类型为第二类型。本实施例中第一类型以RSA 密钥为例,第二类型密钥以ECC密钥为例。优选地,在本实施例中,所述导入命令的高位端预定长度的数据即所述导入命令高位端4个字节的数据,所述第一特征串为十六进制数80560000,所述第二特征串为十六进制数80720000,当所述导入命令的高位端预定长度的数据与所述第一特征串、第二特征串均不相符时不在本专利范围内,在此不再赘述,具体地,在本实施例中,以导入第一类型即RSA类型的密钥为例。优选地,在本实施例中,在步骤101前还可以包括以下步骤步骤101-1 智能密钥设备接收上位机发送的签名密钥生成命令;优选地,在本实施例中,所述签名密钥生成命令的数据域中包含第一存储位置的地址信息,即所述第一存储位置所属的应用及容器的ID号。一个应用中可以包含多个容器,每个容器中可以包含多个存储位置。步骤101-2 所述智能密钥设备生成签名密钥,查找第一存储位置,若能找到执行步骤101-3,若找不到则结束操作,向上位机返回指示操作失败的响应;优选地,在本实施例中,所述智能密钥设备根据所述第一存储位置所属的应用ID 号,查找包含所述第一存储位置的应用,然后根据所述容器的ID号,在找到的应用中找到包含所述第一存储位置的容器。当所述第一存储位置所属的应用的ID对应的应用不存在或所述第一存储位置所属的容器的ID对应的容器不存在时,即找不到所述第一存储位置。优选地,在本实施例中,所述签名密钥还可以为在外部终端生成并预置在所述第一存储位置中。步骤101-3 将所述签名密钥存储在所述第一存储位置;所述签名密钥包含签名公钥和签名私钥,所述智能密钥设备生成所述签名密钥的算法预置在所述智能密钥设备中。优选地,在本实施例中,所述签名密钥的类型与待导入密钥的类型一致。步骤101-4 所述智能密钥设备接收所述上位机发送的签名密钥的公钥请求,并将所述签名公钥发送给所述上位机;步骤102 所述智能密钥设备验证所述导入命令是否完整,是则执行步骤103,否则结束操作,向上位机返回指示操作失败的响应;优选地,在本实施例中,验证所述导入命令是否完整具体为步骤102-1 判断所述导入命令的总长度是否超过第一预定长度。如果是,继续; 否则,所述导入命令不完整。所述第一预定长度的字节数为不小于7的整数。优选地,在本实施例中,所述第一预定长度的字节数为7。步骤102-2 从所述导入命令的预定位置提取数据域长度;上述预定位置为所述导入命令的第6和第7字节。进一步地,在本实施例中,还进行如下判断如果第5字节的数据不为预先约定的0,则所述导入命令数据不完整。优选地, 在本实施例中,长度即字节数。所述导入命令的第6和第7字节上的数据的值为后续数据域的字节数。步骤102-3 验证所述导入命令的剩余数据长度是否与所述数据域长度值相符。 如果是,所述导入命令完整。否则,不完整。所述导入命令的剩余数据即第7字节之后的数据,若所述导入命令的剩余数据长度与所述数据域长度值相符,则所述导入命令的剩余数据为所述导入命令的数据域。步骤103 对所述导入命令进行解析,得到所述导入命令的数据域;解析得到所述导入命令的数据域过程为根据所述导入命令的长度域的值,取长度域后的相应字节数上的数据即得到所述导入命令的数据域。优选地,在本实施例中,所述导入命令的数据域即所述导入命令第7字节之后的数据。步骤104 对所述导入命令的数据域进行解析,得到指示所述第二存储位置的地址、会话密钥加密的算法标识、会话密钥密文长度、会话密钥密文、待导入密钥的密钥位长度,待导入密钥的密文及待导入密钥私钥遵循的格式;优选地,在本实施例中,解析过程具体为步骤104-1 由高字节到低字节的顺序,将最高字节作为第1字节,取所述导入命令的数据域中第1至第4字节四个字节上的数据得到所述第二存储位置的地址,取所述数据域的第5至第8字节上的数据得到所述会话密钥加密的算法标识,取第9至第12字节上的数据即得到所述会话密钥长度;优选地,在本实施例中指示所述第二存储位置的地址即所述第二存储位置所属的应用ID及容器ID。其中,取所述数据域的第1至第2字节上数据得到应用ID,取第3至第 4字节上的数据得到容器ID。取所述数据域的第9至第12字节上的数据的值得到会话密钥密文长度即会话密钥密文所占的字节数。步骤104-2 根据所述会话密钥密文长度的值,从所述数据域的第13字节开始,连续取相应字节数上的数据得到会话密钥密文;步骤104-3 取所述数据域中所述会话密钥密文对应的字节之后连续4个字节上的数据得到所述待导入密钥的密钥位长度;步骤104-4 取所述数据域中所述待导入密钥的密钥位长度对应的字节之后连续 4个字节数上的数据,得到待导入密钥密文的长度;步骤104-5 根据所述待导入密钥密文的长度的值,取数据域的后续相应字节数上的数据,即得到所述待导入密钥密文;其余内容为待导入密钥私钥遵循的格式。步骤105 根据指示所述第二存储位置的地址,查找所述第二存储位置及所述第一存储位置,若均能查找到则执行步骤106,否则结束操作,向上位机返回指示操作失败的响应;优选地,在本实施例中,第一存储位置与所述第二存储位置相关联,包含在同一容器中,即所述第一存储位置所属的应用及容器的ID与所述第二存储位置所属的应用及容器ID相同。步骤106 调用所述第一存储位置中存储的签名密钥,验证所述签名密钥的位长与所述会话密钥密文的位长是否相等,是则执行步骤107,否则结束操作,向上位机返回指示操作失败的响应;优选地,在本实施例中,调用所述第一存储位置中的签名密钥还可以替换为调用所述第一存储位置中的签名私钥,在步骤106前还包括所述智能密钥设备判断当前的权限状态是否为允许调用签名私钥的状态,所述权限状态由PIN码验证结果决定,所述PIN码验证步骤为所述智能密钥设备通过所述上位机提示用户输入PIN码,并验证用户输入的PIN 码是否合法,是则将所述权限状态设为可以允许调用签名私钥的状态,否则将所述权限状态设置为不允许调用签名私钥的状态。所述权限状态在所述智能密钥设备与所述上位机断开连接时复原。步骤107 用所述签名私钥对所述会话密钥密文进行解密,若解密成果则得到会话密钥,若解密失败,则结束操作,向上位机返回指示操作失败的响应;优选地,在本实施例中,解密得到会话密钥后还可以包括以下步骤所述智能密钥设备根据所述会话密钥加密算法标识验证解密得到的会话密钥的长度是否为对应的算法所定义的密钥长度,是则继续,否则结束操作,向上位机返回指示操作失败的响应;所述智能密钥设备根据所述会话密钥加密算法标识检查对应算法是否预置于所述智能密钥设备,是则继续,否则结束操作,向上位机返回指示操作失败的响应;步骤108 根据所述会话密钥加密算法标识,调用相应算法,并用所述会话密钥对所述待导入密钥密文进行解密,解密成功得到待导入密钥,继续,若解密失败,则结束操作, 向上位机返回指示操作失败的响应;优选地,在本实施例中,所述会话密钥为对称加解密密钥,不同加密算法标识对应不同的加密算法。步骤109 验证所述待导入密钥的格式是否符合所述预先约定的格式,是则执行步骤110,否则结束操作,向上位机返回指示操作失败的响应;判断所述待导入密钥是否满足预定义格式具体为步骤109-1 判断所述待导入密钥的第一个字节是否为30,是则执行步骤109_2, 否则结束操作,向上位机返回指示操作失败的响应;优选地,步骤109-1之前还包括验证所述待导入密钥的长度是否大于第二预定长度,是则继续,否则结束,具体地在本实施例中验证所述待导入密钥的长度是否大于7个字节。步骤109-2 判断所述待导入密钥的第二个字节是否为0x82,是则执行步骤 110-3,否则结束操作,向上位机返回指示操作失败的响应;步骤109-3 判断所述待导入密钥的第五个字节是否为0x02,是则执行步骤 110-4,否则结束操作,向上位机返回指示操作失败的响应;步骤109-4 判断所述待导入密钥的第六个字节是否为0x01,是则执行步骤 110-5,否则结束操作,向上位机返回指示操作失败的响应;步骤109-5 判断所述待导入密钥的第七个字节是否为0x00,是则执行步骤110,
12否则结束操作,向上位机返回指示操作失败的响应;步骤110 将所述待导入密钥存储在所述第二存储位置中;步骤111 向上位机返回指示待导入密钥导入成功的响应。实施例2参见图2,本发明实施例2提供了一种不落地导入密钥的方法,具体步骤如下步骤201 智能密钥设备接收上位机发送的密钥导入命令,根据预先预定的格式判断待导入密钥类型;判断待导入密钥类型的方法为判断所述导入命令的高位端预定长度的数据是否与第一特征串或第二特征串相符,若与所述第一特征串相符,则待导入密钥类型为第一类型,若与所述第二特征串相符,则待导入密钥类型为第二类型。优选地,在本实施例中,以第一类型为RSA类型密钥,第二类型为ECC类型密钥为例。优选地,在本实施例中,所述导入命令的高位端预定长度的数据即所述导入命令高位端4个字节的数据,所述第一特征串为十六进制数80560000,所述第二特征串为十六进制数80720000,当所述导入命令的高位端预定长度的数据与所述第一特征串、第二特征串均不相符时不在本专利范围内,在此不再赘述,具体地,在本实施例中,以导入ECC类型的密钥为例。步骤202 所述智能密钥设备验证所述导入命令是否完整,是则执行步骤203,否则结束操作,向上位机返回指示操作失败的响应;优选地,在本实施例中,验证所述导入命令是否完整具体为步骤202-1 判断所述导入命令的总长度是否超过第一预定长度。如果是,继续; 否则,所述导入命令不完整。所述第一预定长度的字节数为不小于7的整数。优选地,在本实施例中,所述第一预定长度的字节数为7。步骤202-2 从所述导入命令的预定位置提取数据域长度;上述预定位置为所述导入命令的第6和第7字节。进一步地,在本实施例中,还进行如下判断如果第5字节的数据不为预先约定的0,则所述导入命令数据不完整。优选地, 在本实施例中,长度即字节数。所述导入命令的第6和第7字节上的数据的值为后续数据域的字节数。步骤202-3 验证所述导入命令的剩余数据长度是否与所述数据域长度值相符。 如果是,所述导入命令完整。否则,不完整。所述导入命令的剩余数据即第7字节之后的数据,若所述导入命令的剩余数据长度与所述数据域长度值相符,则所述导入命令的剩余数据为所述导入命令的数据域。验证所述导入命令的长度域的值是否与数据域所占的字节数相等,是则认为合法,否则认为不合法。步骤203 对所述导入命令进行解析,得到所述导入命令的数据域;所述导入命令的数据域即所述导入命令中第七字节之后的数据。步骤204 对所述导入命令的数据域进行解析,得到指示所述第二存储位置的地址、待导入密钥保护结构的版本、会话密钥加密的算法标识、会话密钥密文、待导入密钥的密钥位长度、待导入密钥的公钥明文及私钥密文;
优选地,在本实施例中,指示所述第二存储位置的地址即所述第二存储位置所属的应用ID及容器ID。解析过程具体为步骤204-1 由高字节到低字节的顺序,将最高字节作为第1字节,取所述导入命令的数据域中高位端第1至第4字节上的数据得到所述第二存储位置的地址;其中,第1至第4字节中,取前两个字节数据得到所述第二存储位置所属的应用 ID,取后两个字节数据得到所述第二存储位置所属的容器的ID。步骤204-2 取所述数据域的第5至第8字节4个字节上的数据即得到所述待导入密钥保护结构的版本;步骤204-3 取所述数据域的第9至第12字节4个字节上的数据得到会话密钥加密的算法标识;步骤204-4 取所述数据域的第13至第16字节4个字节上的数据得到所述待导入密钥的密钥位长度;步骤204-5 取所述数据域第17至第20字节4个字节上的数据得到所述待导入密钥的私钥密文的长度,根据所述待导入密钥的私钥密文的长度的值取后续相应字节数上的数据,即得到所述待导入密钥的私钥密文;步骤204-6 所述数据域中所述待导入密钥私钥密文对应的字节之后,连续取位长等于两倍的所述待导入密钥的密钥位长度上的数据,得到所述待导入密钥的公钥;优选地,在本实施例中,所述待导入密钥的密钥位长度以比特为单位,所占比特位数等于两倍的所述待导入密钥密钥位长度。优选地,在本实施例中,所述待导入密钥公钥的前一半内容为所述待导入密钥公钥的X坐标,后一半内容为所述待导入密钥公钥的Y坐标。步骤204-7 取所述数据域的剩余数据得到会话密钥密文。优选地,在本实施例中,所述会话密钥密文的内容格式为高位端前四个字节上的值为Cl的X及Y坐标的位长度,后续相应位长上的数据即Cl的X坐标,Cl的X坐标后相应位长上的数据即Cl的Y坐标,Cl的Y坐标之后连续32个字节上的数据即C3,C3之后的连续4个字节的值为后续C2的长度,根据所述C2的长度相应取后续字节数上的数据即得到C2。步骤205 根据指示所述第二存储位置的地址,查找所述第二存储位置及所述第一存储位置,若均能查找到则执行步骤206,否则执行结束操作,向上位机返回指示操作失败的响应;优选地,在本实施例中,第一存储位置与所述第二存储位置相关联,包含在同一容器中,即所述第一存储位置所属的应用及容器的ID与所述第二存储位置所属的应用及容器ID相同。步骤206 调用所述第一存储位置存储的签名密钥;优选地,所述签名密钥包括签名公钥和签名私钥,在步骤110前还包括所述智能密钥设备判断当前的权限状态是否为允许调用签名私钥的状态,所述权限状态由PIN码验证结果决定,所述PIN码验证步骤为所述智能密钥设备通过所述上位机提示用户输入PIN 码,并验证用户输入的PIN码是否合法,是则将所述权限状态设为可以允许调用签名私钥的状态,否则将所述权限状态设置为不允许调用签名私钥的状态。所述权限状态在所述智能密钥设备与所述上位机断开连接时复原。步骤207 用所述签名密钥的签名私钥对所述会话密钥密文进行解密,解密成功则得到会话密钥,执行步骤208,否则结束操作,向上位机返回指示操作失败的响应;优选地,在本实施例中,解密得到会话密钥后还可以包括以下步骤所述智能密钥设备验证解密得到的会话密钥的长度是否为所述会话密钥加密算法标识对应的算法所定义的密钥长度,是则继续,否则结束操作。步骤208 根据所述会话密钥加密的算法标识,调用相应算法,并用解密得到的会话密钥对所述待导入密钥的私钥密文进行解密,若解密成功则得到所述待导入密钥的私钥,若解密失败,则结束操作,向上位机返回指示操作失败的响应;优选地,在本实施例中,所述会话密钥为对称加解密密钥,不同加密算法标识对应不同的加密算法,所述会话密钥加密的算法标识即上位机用所述会话密钥所述待导入密钥加密得到所述待导入密钥密文时所用的加密算法的标识符。优选地,在本实施例中,被调用的算法预置在所述智能密钥设备中。步骤209 将所述待导入密钥的私钥及公钥存储在所述第二存储位置;步骤210 向上位机返回指示待导入密钥导入成功的响应。实施例3参见图3,本发明实施例3提供了再一种不落地导入密钥的方法,步骤如下步骤301 智能密钥设备接收上位机发送的导入命令;本步骤还包括根据预先约定的格式判断待导入的密钥类型;判断方法具体为如果所述导入命令高位端预定长度的数据与第一特征串相符,则待导入密钥类型为第一类型待导入;如果与第二特征串相符,则待导入密钥类型为第二类型,优选地,本实施例中,以第一类型为RAS类型、第二类型为ECC类型密钥为例;具体地,在本实施例中,所述高位端预定长度为4,所述第一特征串为十六进制串80 56 00 00所述第二特征串为十六进制串80 72 00 00如果与上述特征串均不符,则所述导入命令不是导入密钥命令,其处理方式不在本专利范围之内,在此不再赘述。步骤302 验证所述导入命令是否完整;验证方法具体为步骤302-1 判断所述导入命令的总长度是否超过第一预定长度。如果是,继续; 否则,所述导入命令不完整。所述第一预定长度的字节数为不小于7的整数。优选地,在本实施例中,所述第一预定长度的字节数为7。步骤302-2 从所述导入命令的预定位置提取数据域长度;上述预定位置为所述导入命令的第6和第7字节。进一步地,在本实施例中,还进行如下判断如果第5字节的数据不为预先约定的0,则所述导入命令数据不完整。优选地, 在本实施例中,长度即字节数。
将第6字节的数据作为数据域长度的高字节,第7字节的数据作为数据域长度的低字节,叠加后得到数据长度的值。例如,第6字节为0x12,第7字节为0x34,则所述数据域长度的值为0x1234 (即十进制数4660)步骤302-3 验证所述导入命令的剩余数据长度是否与所述数据域长度值相符。 如果是,所述导入命令完整。否则,不完整。所述导入命令的剩余数据即第七字节之后的数据,以下步骤均以所述导入命令的数据域(即所述导入命令前7个字节之后的部分)为操作对象。步骤303 根据所述数据域确定待导入密钥的存储位置;所述数据域的前4个字节用于确定存储位置。具体地,在本实施例中,所述方法具体为步骤303-1 根据所述数据域的前2个字节检索应用,如果检索到所述应用,继续; 否则,报错;步骤303-2 根据所述数据域的第3和第4字节检索容器,如果检索到所述容器, 继续;否则,报错;步骤303-3 验证所述容器是否能够关联2个可以用于存储与待导入密钥同类型的密钥的存储位置,并且其中第一存储位置已经存有同类型密钥。如果是,将另一个位置即第二存储位置作为所述待导入密钥的存储位置;否则,报错。步骤304 从所述数据域获取算法参数;所述算法参数指的是会话密钥加密待导入密钥所使用的算法参数。优选地,以导入的密钥类型为RSA为例,获取算法参数的具体过程包括步骤304-1 至步骤304-3,步骤304-1 将所述数据域的第5-第8字节数据作为算法标识。根据所述算法标识检索对应的算法。如果检索到对应的算法,继续;否则,报错。例如,所述算法标识为00 00 04 01,对应的算法为DES-ECB。步骤304-2 根据所述数据域的第9-第12字节数据计算会话密钥密文的长度;具体地,在本实施例中,按照网络字节序计算长度。例如,第9-第12字节数据为 00 01 02 03,则所述会话密钥密文的长度值为0x00010203 (即十进制数66051)。步骤304-3 验证所述会话密钥密文的长度值是否与签名密钥相符。在本实施例中,将步骤103-3中第一存储位置存储的同类型密钥作为所述签名密钥。以导入RSA类型的密钥为例,本步骤具体为验证所述会话密钥密文的长度值与所述签名密钥的位长是否相符。如果是,继续; 否则,报错。步骤305 用所述签名密钥对所述会话密钥密文解密,若解密成功得到会话密钥, 若解密失败,报错;仍以RSA类型密钥为例,本步骤具体为以所述数据域的第13字节为所述会话密钥密文的起始位置,用所述签名密钥的签名私钥进行解密,如解密成功得到会话密钥。进一步地,本步骤还包括解密成功后,验证是否存在预定格式的补位数据。如果是,将补位数据去除,将剩余部分作为会话密钥。步骤306 验证解密得到的会话密钥与所述算法参数是否相符,是则继续,否则结
束ο例如,所述算法标识对应DES-ECB,则验证所述会话密钥的长度是否与DES定义的密钥长度相符。如果是,继续;否则,报错。再例如,所述算法标识对应DES-CBC,则验证所述“会话密钥”域的长度是否与 DES-CBC定义的密钥及初始向量的长度相符,并根据预先约定的格式从所述“会话密钥”中提取密钥及初始向量。步骤307 取待导入密钥的参数;所述待导入密钥的参数位于所述数据域的预定位置。例如,在步骤305中被解密的数据长度为1 字节,则所述待导入密钥参数的起始位置在所述数据域的第 141(13+128)字节处。所述待导入密钥参数的长度是预先约定的。具体地,在本实施例中,所述待导入密钥参数的长度是4。以导入RSA类型的密钥为例,所述待导入密钥参数具体为待导入密钥的位长度。 根据网络字节序,利用所述数据域的第141-144字节的值计算所述待导入密钥的位长度。步骤308 计算待导入密钥密文的长度,用所述会话密钥解密待导入密钥密文,若解密成功,则执行步骤309,否则,报错;所述待导入密钥密文的长度位于所述数据域的预定位置。例如,在步骤305中被解密的数据长度为1 字节,则所述待导入密钥密文的长度的起始位置在所述数据域的第 145(13+128+4)字节处。所述待导入密钥密文长度的字节数是预先约定的。具体地,在本实施例中,所述待导入密钥密文长度为4个字节。根据网络字节序,利用所述数据域的第146-149字节的值计算所述待导入密钥密文的长度。用所述会话密钥解密待导入密钥具体为根据步骤304-1中检索到的加密算法, 用所述会话密钥解密所述数据域中所述待导入密钥密文的长度之后的部分,解密数据的长度为所述待导入密钥密文的长度。在解密之前还可包括验证所述数据域中所述待导入密钥密文的长度之后的数据长度是否不低于所述待导入密钥密文的长度。如果不是,报错。步骤309 将解密后的待导入密钥存入所述第二存储位置,结束。本步骤还可包括根据预先约定的格式,利用待导入密钥参数将解密后的待导入密钥数据分解成导入所需的各个部分,再存入所述第二存储位置。优选地,在本实施例中,当步骤301中判断待导入密钥类型为ECC类型密钥时,步骤304-步骤309的具体内容相应替换为步骤304,-步骤309,步骤304’从所述数据域获取算法参数具体为取所述数据域的第9-第12字节数据得到算法标识。根据所述算法标识检索对应的算法。如果检索到对应的算法,继续;否则,报错。步骤305’中取待导入密钥的参数具体为
步骤305’_1 根据所述数据域的第13-第16字节数据计算待导入密钥的位长度;优选地,在本实施例中,取所述数据域的第13-第16字节数据的值得到所述待导入密钥的位长度即待导入密钥的比特位数。步骤305’ -2 根据所述数据域的第17-第20字节数据的值计算待导入密钥的私钥密文长度,根据所述私钥密文长度获取私钥密文;优选地,在本实施例中,所述待导入密钥的私钥密文的起始位置在所述数据域的第21字节处,长度为第17-第20字节数据的值。步骤305’ -3 根据所述待导入的待导入密钥的位长度计算得到所述待导入密钥的公钥;所述待导入密钥的私钥密文对应的字节之后为所述待导入密钥的公钥,所述待导入密钥的公钥的所占的比特位数等于两倍的所述待导入密钥的位长度的值。取所述待导入密钥的公钥所对应的字节之后其余字节数据得到会话密钥密文。进一步地,本步骤还包括,验证所述会话密钥密文的前四个字节数据的值是否等于签名公钥的位长度,如果是,继续,否则报错。步骤306’具体为用所述签名密钥的签名私钥对所述会话密钥密文进行解密,若解密成功得到会话密钥后执行步骤307’,验证所述会话密钥与所述算法参数相符时执行步骤 308,,否则报错;步骤307’ 验证解密得到的会话密钥与所述算法参数是否相符,是则继续,否则结
束ο步骤308’具体为用所述会话密钥对所述待导入密钥密文进行解密,解密后得到所述待导入密钥的私钥;所述待导入密钥密文以所述数据域的第21字节为起始位置,长度等于所述数据域的第17-第20字节数据的值。步骤309’具体为将解密得到的所述待导入密钥的私钥与步骤305’ _2中得到的所述待导入密钥的公钥存储在所述第二存储位置。实施例4参见图4,本发明实施例4提供一种不落地导入密钥的装置,所述装置包括接收模块401,用于接收上位机发送的密钥导入命令,还用于接收所述上位机发送的第一命令和第二命令;第一判断模块402 用于判断所述导入命令是否完整;第一解析模块403:用于在所述导入命令完整时对所述导入命令进行解析,得到所述导入命令的数据域;第二解析模404 用于对所述数据域进行解析,得到指示第二存储位置的地址、 会话密钥加密使用的算法标识、会话密钥密文、待导入密钥信息;第一查找模块405 用于根据所述指示第二存储位置的地址查找对应的第二存储位置和第一存储位置;第一解密模块406:用于调用所述第一存储位置中的签名私钥,使用所述签名私钥对所述会话密钥密文进行解密;第二解密模块407 用于根据算法标识调用相应算法,使用所述第一解密模块解密成功得到的会话密钥对所述待导入密钥信息中的待导入密钥密文进行解密得到待导入密钥;或对导入密钥私钥的密文进行解密得到待导入密钥的私钥;第一存储模块408 用于将待导入密钥存储到所述第二存储位置中;发送模块409 用于向所述上位机返回错误提示信息;还用于在接收到所述上位机发送的第二命令时,将所述签名密钥的签名公钥发送给上位机;在密钥导入成功后向上位机返回指示待导入密钥导入成功的响应;所述第一判断模块402包括第一判断单元4021、提取单元4022和第二判断单元 4023 第一判断单元4021 用于判断所述导入命令的总长度是否超过第一预定长度;提取单元4022 用于从所述导入命令的预定位置提取数据域长度的值;第二判断单元4023 用于判断所述长度域的值是否与所述数据域所占字节数相寸。生成模块410 用于在所述接收模块401接收所述上位机发送的第一命令时,根据所述第一命令生成签名密钥;第二查找模块411 用于查找用于存储所述签名密钥的所述第一存储位置;第二存入模块412 用于将所述签名密钥存储到找到的所述第一存储位置中;第一检测模块413 用于在接收上位机发送的所述导入命令后检测所述待导入密钥的类型;当所述待导入密钥的类型是第一类型时,所述第一解析模块解析得到的所述待导入密钥信息包括待导入密钥的密文和所述待导入密钥的私钥遵循的格式;当所述待导入密钥的类型是第二类型时,所述第一解析模块403解析得到的所述待导入密钥信息包括待导入密钥保护结构的版本、待导入密钥的位长度、待导入密钥的公钥明文及私钥密文。第二检测模块414 用于判断当前的权限状态是否为允许调用签名私钥的状态。所述第一解密模块406包括第一调用单元4061、第三判断单元4062、第一解密单元4063、第二调用单元4064和第二解密单元4065 第一调用单元4061 用于当所述待导入密钥的类型是第一类型时调用所述第一存储位置中的所述签名私钥;第三判断单元4062:当所述待导入密钥的类型是第一类型时,判断所述签名密钥的位长与所述会话密钥的密文位长是否相等;第一解密单元4063:当所述待导入密钥的类型是第一类型时,使用所述签名私钥对所述会话密钥的密文进行解密,如解密成功则得到会话密钥。第二调用单元4064 用于当所述待导入密钥的类型是第二类型时,调用所述第一存储位置中的所述签名私钥;第二解密单元4065 用于当所述待导入密钥的类型是第二类型时,使用所述签名私钥对所述会话密钥的密文进行解密,如解密成功则得到会话密钥。第二判断模块415:当所述待导入密钥的类型是第二类型时,用于判断所述会话密钥的长度是否与所述算法标识对应的算法中定义的密钥长度相同。第三判断模块416:用于当所述待导入密钥的类型是第一类型时,判断所述待导入密钥的格式是否符合所述待导入密钥的私钥遵循的格式。第四判断模块417:用于当所述待导入密钥的类型是第一类型时,判断所述待导入密钥的长度是否大于第二预定长度。
权利要求
1.一种不落地导入密钥的方法,其特征在于,包括步骤A 接收到上位机发送的导入命令后,判断所述导入命令是否完整,是则执行步骤 B,否则结束操作,向上位机返回指示操作失败的响应;步骤B 对所述导入命令进行解析,得到所述导入命令的数据域;步骤C 对所述数据域进行解析,得到指示第二存储位置的地址、会话密钥加密使用的算法标识、会话密钥密文、待导入密钥信息;步骤D 根据所述指示第二存储位置的地址查找对应的第二存储位置和第一存储位置,如找到则执行步骤E,否则向所述上位机返回错误提示信息,结束;所述第二存储位置和第一存储位置相关联;步骤E 调用所述第一存储位置中的签名私钥,使用所述签名私钥对所述会话密钥密文进行解密,如解密成功则得到会话密钥,继续执行步骤F,否则向所述上位机返回错误提示信息,结束;步骤F:使用所述会话密钥对所述待导入密钥信息中的待导入密钥密文进行解密,如解密成功则得到待导入密钥,继续执行步骤G,否则向所述上位机返回错误提示信息,结束;步骤G 将所述待导入密钥存储到所述第二存储位置中。
2.如权利要求1所述的方法,其特征在于,所述步骤A中判断所述命令是否完整具体包括步骤Al 判断所述导入命令的总长度是否超过第一预定长度,是则执行步骤A2,否则所述导入命令不完整;步骤A2 从所述导入命令的预定位置提取数据域长度的值;步骤A3 判断所述数据域长度的值是否与所述数据域所占字节数相等,是则所述导入命令完整,否则所述导入命名不完整。
3.如权利要求2所述的方法,其特征在于,在步骤A之前还包括在接收到所述上位机发送的第一命令时根据所述第一命令生成签名密钥,查找第一存储位置,如找到则将所述签名密钥存储到所述第一存储位置中,在接收到所述上位机发送的第二命令时将所述签名密钥的签名公钥发送给上位机,如未找到则向所述上位机返回错误提示信息,结束;所述签名密钥包括签名私钥和签名公钥。
4.如权利要求3所述的方法,其特征在于,在所述步骤C之前还包括根据预定格式判断所述待导入密钥的类型,如所述待导入密钥的类型是第一类型,则所述待导入密钥信息包括待导入密钥密文和所述待导入密钥的私钥遵循的格式;如所述待导入密钥的类型是第二类型,则所述待导入密钥信息包括待导入密钥保护结构的版本、待导入密钥的位长度、待导入密钥的公钥明文及私钥密文。
5.如权利要求4所述的方法,其特征在于,所述步骤D和步骤E之间包括判断当前的权限状态是否为允许调用签名私钥的状态,是则执行步骤E,否则向所述上位机返回错误提示信息,结束。
6.如权利要求5所述的方法,其特征在于,当所述待导入密钥的类型是第一类型时,所述步骤E包括步骤EO 调用所述第一存储位置中的所述签名密钥;步骤El 判断所述签名密钥的位长与所述会话密钥的密文位长是否相等,是则执行步骤E2,否则向所述上位机返回错误提示信息,结束;步骤E2 使用所述签名私钥对所述会话密钥的密文进行解密,如解密成功则得到会话密钥,继续执行步骤F,否则向所述上位机返回错误提示信息,结束。
7.如权利要求6所述的方法,其特征在于,在所述步骤E和步骤F之间包括判断所述会话密钥的长度是否与所述算法标识对应的算法中定义的密钥长度相同,是则执行步骤F,否则向所述上位机返回错误提示信息,结束。
8.如权利要求6或7所述的方法,其特征在于,所述步骤F具体包括根据所述算法标识调用相应算法,并用所述会话密钥对所述待导入密钥密文进行解密,如解密成功,则得到待导入密钥,执行步骤G,如解密失败,则向所述上位机返回错误提示信息,结束。
9.如权利要求8所述的方法,其特征在于,在所述步骤F和步骤G之间包括判断所述待导入密钥的格式是否符合所述待导入密钥的私钥遵循的格式,是则执行步骤G,否则向所述上位机返回错误提示信息,结束。
10.如权利要求9所述的方法,其特征在于,所述判断所述待导入密钥的格式是否符合所述待导入密钥的私钥遵循的格式,具体包括判断预设位置的值是否与预设值相符,是则执行步骤G,否则向所述上位机返回错误提示信息,结束。
11.如权利要求10所述的方法,其特征在于,在所述判断所述待导入密钥的格式是否符合所述待导入密钥的私钥遵循的格式之前包括判断所述待导入密钥的长度是否大于第二预定长度,是则继续,否则结束。
12.如权利要求5所述的方法,其特征在于,当所述待导入密钥的类型是第二类型时, 所述步骤E包括步骤EO 调用所述第一存储位置中的所述签名密钥;步骤El 使用所述签名密钥的签名私钥对所述会话密钥的密文进行解密,如解密成功则得到会话密钥,继续执行步骤F,否则向所述上位机返回错误提示信息,结束。
13.如权利要求12所述的方法,其特征在于,在所述步骤E和步骤F之间包括判断所述会话密钥的长度是否与所述算法标识对应的算法中定义的密钥长度相同,是则执行步骤F,否则向所述上位机返回错误提示信息,结束。
14.如权利要求12或13所述的方法,其特征在于,所述步骤F具体包括根据所述算法标识调用相应算法,并用所述会话密钥对所述待导入密钥的私钥密文进行解密,如解密成功则得到待导入密钥的私钥,执行步骤G,如解密失败则向所述上位机返回错误提示信息,结束;所述步骤G为将所述待导入密钥的私钥和所述待导入密钥的公钥存储到所述第二存储位置中。
15.一种不落地导入密钥的装置,其特征在于,包括接收模块,用于接收上位机发送的导入命令;第一判断模块用于判断所述导入命令是否完整;第一解析模块用于在所述导入命令完整时对所述导入命令进行解析,得到所述导入命令的数据域;第二解析模块用于对所述数据域进行解析,得到指示第二存储位置的地址、会话密钥加密使用的算法标识、会话密钥密文、待导入密钥信息;第一查找模块用于根据所述指示第二存储位置的地址查找对应的第二存储位置和第一存储位置;第一解密模块用于调用所述第一存储位置中的签名私钥,使用所述签名私钥对所述会话密钥密文进行解密;第二解密模块用于使用所述第一解密模块解密成功得到的会话密钥对所述待导入密钥信息中的待导入密钥密文进行解密;第一存储模块用于将所述第二解密模块解密成功得到的待导入密钥存储到所述第二存储位置中;发送模块用于向所述上位机返回错误提示信息,在密钥导入成功后向上位机返回指示待导入密钥导入成功的响应。
16.如权利要求15所述的装置,其特征在于,所述第一判断模块包括 第一判断单元用于判断所述导入命令的总长度是否超过第一预定长度; 提取单元用于从所述导入命令的预定位置提取数据域长度的值;第二判断单元用于判断所述数据域长度的值是否与所述数据域所占字节数相等。
17.如权利要求16所述的装置,其特征在于,还包括生成模块、第二查找模块和第二存储模块,所述接收模块还用于接收所述上位机发送的第一命令和第二命令; 所述生成模块用于在所述接收模块接收所述上位机发送的第一命令时,根据所述第一命令生成签名密钥;所述第二查找模块用于查找存储所述签名密钥的第一存储位置; 所述第二存储模块用于将所述签名密钥存储到找到的所述第一存储位置中; 所述发送模块还用于在接收到所述上位机发送的第二命令时,将所述签名密钥的签名公钥发送给上位机。
18.如权利要求17所述的装置,其特征在于,还包括第一检测模块用于在接收上位机发送的所述导入命令后检测所述待导入密钥的类型;当所述待导入密钥的类型是第一类型时,所述第一解析模块解析得到的所述待导入密钥信息包括待导入密钥的密文和所述待导入密钥的私钥遵循的格式;当所述待导入密钥的类型是第二类型时,所述第一解析模块解析得到的所述待导入密钥信息包括待导入密钥保护结构的版本、待导入密钥的位长度、待导入密钥的公钥明文及私钥密文。
19.如权利要求18所述的装置,其特征在于,还包括第二检测模块用于判断当前的权限状态是否为允许调用签名私钥的状态。
20.如权利要求19所述的装置,其特征在于,当所述待导入密钥的类型是第一类型时, 所述第一解密模块包括第一调用单元用于调用所述第一存储位置中的所述签名密钥; 第三判断单元判断所述签名密钥的位长与所述会话密钥的密文位长是否相等; 第一解密单元使用所述签名私钥对所述会话密钥的密文进行解密,如解密成功则得到会话密钥。
21.如权利要求19所述的装置,其特征在于,当所述待导入密钥的类型是第二类型时, 所述第一解密模块包括第二调用单元用于调用所述第一存储位置中的所述签名密钥;第二解密单元用于使用所述签名私钥对所述会话密钥的密文进行解密,如解密成功则得到会话密钥。
22.如权利要求20或21所述的装置,其特征在于,还包括第二判断模块用于判断所述会话密钥的长度是否与所述算法标识对应的算法中定义的密钥长度相同。
23.如权利要求20所述的装置,其特征在于,还包括第三判断模块用于判断所述待导入密钥的格式是否符合所述待导入密钥的私钥遵循的格式。
24.如权利要求23所述的装置,其特征在于,还包括第四判断模块用于判断所述待导入密钥的长度是否大于第二预定长度。
25.如权利要求M所述的装置,其特征在于,所述第二解密模块具体用于根据所述算法标识调用相应算法,并用所述会话密钥对所述待导入密钥的密文进行解密。
26.如权利要求22所述的方法,其特征在于,所述第二解密模块具体用于根据所述算法标识调用相应算法,并用所述会话密钥对所述待导入密钥的私钥密文进行解密,如解密成功则得到待导入密钥的私钥;所述第一存储模块具体用于将所述待导入密钥的私钥和所述待导入密钥的公钥存储到所述第二存储位置中。
全文摘要
本发明公开了一种不落地导入密钥的方法及装置,涉及信息安全领域,该方法包括智能密钥设备接收到上位机发送的导入命令,验证所述导入命令合法后,对所述导入命令进行解析得到会话密钥密文、待导入密钥密文及第一存储位置的地址;根据所述第一存储位置的地址找到第一存储位置及第二存储位置,并调用第二存储位置中存储的签名密钥的签名私钥对所述会话密钥密文进行解密得到会话密钥;用得到的会话密钥对所述待导入密钥密文进行解密得到待导入密钥;将所述待导入密钥存储到所述第一存储位置。通过该方法实现了不落地导入密钥,解决了现有技术中管理智能密钥设备中密钥时对环境要求较高的问题。
文档编号H04L9/08GK102571355SQ20121002356
公开日2012年7月11日 申请日期2012年2月2日 优先权日2012年2月2日
发明者于华章, 陆舟 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1