CN104639561A - 一种安全获取密钥的方法 - Google Patents

一种安全获取密钥的方法 Download PDF

Info

Publication number
CN104639561A
CN104639561A CN201510089245.0A CN201510089245A CN104639561A CN 104639561 A CN104639561 A CN 104639561A CN 201510089245 A CN201510089245 A CN 201510089245A CN 104639561 A CN104639561 A CN 104639561A
Authority
CN
China
Prior art keywords
key
intelligent cipher
protective
instruction
equipment
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
CN201510089245.0A
Other languages
English (en)
Other versions
CN104639561B (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.)
Feitian Technologies Co Ltd
Original Assignee
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 Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201510089245.0A priority Critical patent/CN104639561B/zh
Publication of CN104639561A publication Critical patent/CN104639561A/zh
Application granted granted Critical
Publication of CN104639561B publication Critical patent/CN104639561B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明提供一种安全获取密钥的方法,属于信息安全领域;具体包括:智能密钥设备通过自身生成的设备随机数和从读取公钥指令中获取到的服务器随机数以及自身内部保存的保护密钥,得到工作密钥,用工作密钥对自身内部保存的公钥加密,得到公钥密文,用工作密钥对自身内部保存的公钥进行加密,得到公钥验证结果,向上位机发送包含设备随机数、公钥密文和公钥验证结果的响应;智能密钥设备还能够根据上位机下发的更新保护密钥指令,更新自身内部保存的保护密钥。智能密钥设备采用上述方式,向上位机发送包含公钥密文的响应,提高了公钥密文在传输过程中的安全性。

Description

一种安全获取密钥的方法
技术领域
本发明涉及信息安全领域,特别涉及一种安全获取密钥的方法。
背景技术
目前,在网银体系中,通常采用智能密钥设备进行电子签名和数字认证,采用智能密钥设备中存储的密钥对重要数据进行签名、加密、解密,保证网银交易过程中的保密性和安全性;
然而,本发明人发现,在现有技术中,智能密钥设备与服务器交互时,一般是将中间件作为媒介,无法保证在进行数字认证时,下载的证书是从智能密钥设备中产生的,无法保证在进行电子签名时,使用的公钥是从智能密钥设备中产生的。
发明内容
为解决现有技术中存在的缺陷,本发明提供一种安全获取密钥的方法,包括:
智能密钥设备上电,进行初始化,等待接收上位机下发的指令;
当所述智能密钥设备接收到更新保护密钥指令时,执行步骤S1;
步骤S1:所述智能密钥设备判断所述更新保护密钥指令是否完整,是则执行步骤S2;否则向所述上位机发送更新保护密钥指令不完整信息;
步骤S2:所述智能密钥设备从所述更新保护密钥指令中获取新的密钥序号、新的时间戳和新的算法类型标识,根据所述新的密钥序号、所述新的时间戳和所述新的算法类型标识判断所述更新保护密钥指令是否合法,是则执行步骤S3;否则向所述上位机发送错误信息;
步骤S3:所述智能密钥设备从所述更新保护密钥指令中获取新的保护密钥密文,用自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法,对所述新的保护密钥密文解密,得到新的保护密钥;
步骤S4:所述智能密钥设备用所述新的保护密钥更新所述自身内部保存的保护密钥,更新所述自身内部保存的密钥序号,用所述新的时间戳更新所述自身内部保存的时间戳,用所述新的算法类型标识更新所述自身内部保存的算法类型标识;
步骤S5:所述智能密钥设备向所述上位机发送更新保护密钥成功信息;
当所述智能密钥接收到读取公钥指令时,执行步骤W1;
步骤W1:所述智能密钥设备生成设备随机数,从所述读取公钥指令中获取服务器随机数,根据所述设备随机数和所述服务器随机数以及自身内部保存的保护密钥得到工作密钥,执行步骤W2;
步骤W2:所述智能密钥设备用所述工作密钥对自身内部保存的公钥加密,得到公钥密文,用所述工作密钥采用预设加密模式对所述公钥加密,得到公钥验证结果;
步骤W3:所述智能密钥设备向所述上位机发送包含所述设备随机数、所述公钥密文和所述公钥验证结果的响应。
所述步骤S1,具体包括:
所述智能密钥设备用自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法,对所述更新保护密钥指令加密,得到加密结果;
所述智能密钥设备从所述加密结果中获取校验码,从所述更新保护密钥指令中获取校验码,判断所述加密结果中的校验码与所述更新保护密钥指令中的校验码是否相同,是则所述更新保护密钥指令完整;否则所述更新保护密钥指令不完整。
所述根据所述新的密钥序号、所述新的时间戳和所述新的算法类型标识判断所述更新保护密钥指令是否合法,具体包括:
所述智能密钥设备获取自身内部保存的密钥序号,判断是否满足:
自身内部保存的密钥序号小于所述新的密钥序号,并且自身内部保存的密钥序号按照预设步长更新的结果与所述新的密钥序号相同,并且
自身内部保存的算法中存在与所述新的算法类型标识匹配的算法,并且
自身内部保存的时间戳不早于所述新的时间戳;
是则所述更新保护密钥指令合法;否则所述更新保护密钥指令不合法。
所述更新所述自身内部保存的密钥序号具体包括:
将所述自身内部保存的密钥序号与预设步长相加的结果作为更新后的自身内部保存的密钥序号;
或者,
用所述新的密钥序号更新所述自身内部保存的密钥序号。
所述步骤S4与步骤S5之间,还包括:
所述智能密钥设备判断是否成功更新所述自身内部保存的保护密钥、所述自身内部保存的密钥序号、所述自身内部保存的算法类型标识和所述自身内部保存的时间戳,是则执行步骤S5;否则向所述上位机发送更新保护密钥失败信息。
所述智能密钥设备根据所述设备随机数和所述服务器随机数以及自身内部保存的保护密钥得到工作密钥,具体包括:
所述智能密钥设备将预设的用途标识、所述设备随机数和所述服务器随机数顺序拼接,将得到的拼接结果作为干扰因子,根据自身内部保存的保护密钥对所述干扰因子进行加密,得到工作密钥。
所述智能密钥设备用所述工作密钥对自身内部保存的公钥加密,得到公钥密文之后,还包括:
所述智能密钥设备从所述读取公钥指令中获取公钥信息,判断所述公钥信息是否合法,是则用所述工作密钥采用预设加密模式对所述公钥加密,得到公钥验证结果,执行本步骤W3;否则所述智能密钥设备向所述上位机发送公钥不合法信息。
本发明的有益效果为,采用本发明提供的方法,允许多次更新保护密钥;智能密钥设备通过自身生成的设备随机数和从读取公钥指令中获取到的服务器随机数以及自身内部保存的保护密钥,得到工作密钥,用工作密钥对自身内部保存的公钥加密,得到公钥密文,用工作密钥对自身内部保存的公钥进行加密,得到公钥验证结果,向上位机发送包含设备随机数、公钥密文和公钥验证结果的响应;智能密钥设备采用上述方式,向上位机发送包含公钥密文的响应,提高了公钥密文在传输过程中的安全性。
附图说明
图1和图2为实施例1提供的一种安全获取密钥的方法流程图;
图3和图4为实施例2提供的另一种安全获取密钥的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步地详细描述。
实施例1
如图1和图2所示,本发明实施例1提供一种安全获取密钥的方法,包括:
步骤101:开始,智能密钥设备上电,进行初始化,将错误计数值置为初始值;
本实施中,优选的,错误计数值的初始值为0;
步骤102:智能密钥设备等待接收上位机下发的指令;
步骤103:当智能密钥设备接收到上位机下发的指令时,判断指令的类型,如果是更新保护密钥指令,则执行步骤104;如果是读取公钥指令,则执行步骤117;如果是其他指令,则智能密钥设备根据指令执行相应操作,并将操作结果返回给上位机,返回步骤102;
本实施例中,智能密钥设备接收上位机下发的指令,对指令的第二至第四字节进行判断,如果是第一数值,则是更新保护密钥指令;如果不是第一数值,则对指令的第二至第三字节进行判断,如果上位机下发的指令的第二至第三字节的取值是第二数值,则是读取公钥指令;否则是其他指令;
其中,第一数值为0XFC1702;第二数值为0X4900;
例如:智能密钥设备接收到上位机下发的指令为:
0X80FC 17 02 3A 30 31 30 31 6F 9B 30 38 BA B6 40 3A 50 7D D1 BB 61 C0E7 D5 15 33 19 02 92 26 35 ED 1A 0A 84 A3 3A D5 4D D9 30 30 30 30 30 30 3030 30 30 30 30 30 31 31 33 32 34 34 64 59 BB,其中,第二至第四字节为0XFC1702,则该指令为更新保护密钥指令;
步骤104:智能密钥设备从更新保护密钥指令中获取新的密钥序号、新的算法类型标识和新的时间戳,根据新的密钥序号、新的算法类型标识和新的时间戳判断更新保护密钥指令是否合法,是则执行步骤106;否则执行步骤105;
本实施例中,智能密钥设备获取更新保护密钥指令的第六至第七字节上的数据,将获取到的数据作为新的密钥序号,智能密钥设备从更新保护密钥指令中新的密钥序号的下一个字节开始,获取长度为2字节的数据,将获取到的数据作为新的算法类型标识,智能密钥设备从更新保护密钥指令中新的算法类型标识的下一个字节开始,获取长度为18字节的数据,将获取到的数据作为新的时间戳;
智能密钥设备判断是否同时满足:更新保护密钥指令中新的密钥序号合法,更新保护密钥指令中新的算法类型标识合法,并且更新保护密钥指令中新的时间戳合法,是则执行步骤106;否则执行步骤105;
具体地,智能密钥设备根据自身内部保存的密钥序号判断新的密钥序号是否合法,如果自身内部保存的密钥序号小于新的密钥序号的取值,并且自身内部保存的密钥序号加1得到的结果的后两字节的取值与新的密钥序号的取值相同,则新的密钥序号合法;优选的,自身内部保存的密钥序号的初始值为0X00。
智能密钥设备根据自身内部保存的算法判断新的算法类型标识是否合法,如果自身内部保存的算法中存在与新的算法类型标识匹配的算法,则新的算法类型标识合法;如果自身内部保存的算法中不存在与新的算法类型标识匹配的算法,则新的算法类型标识不合法;
优选的,智能密钥设备中保存的算法默认为第一算法,其中,第一算法为高级加密标准(Advanced Encryption Standard,AES)算法,即对应的算法类型标识为0X3031;
智能密钥设备根据自身内部保存的时间戳判断新的时间戳是否合法,如果新的时间戳对应的时间早于自身内部保存的时间戳对应的时间,则新的时间戳不合法;否则新的时间戳合法;
例如:智能密钥设备中保存的密钥序号为0X3030,从更新保护密钥指令中获取到的新的密钥序号为0X3031,即新的密钥序号合法;
智能密钥设备从更新保护密钥指令中获取到的新的算法类型标识为0X3031,自身内部保存的算法中存在与新的算法类型标识匹配的算法,即新的算法合法;
智能密钥设备从更新保护密钥指令中获取到的新的时间戳为:0X30 30 3030 30 30 30 30 30 30 30 30 30 31 31 33 32 34,不早于自身内部保存的时间戳对应的时间,新的时间戳合法;
步骤105:智能密钥设备向上位机发送错误信息,返回步骤102;
具体地,如果新的密钥序号不合法,向上位机发送新的密钥序号错误信息,返回步骤102;如果新的算法类型标识不合法,向上位机发送新的算法错误信息,返回步骤102;如果新的时间戳不合法,则向上位机发送新的时间戳错误信息,返回步骤102。
步骤106:智能密钥设备根据错误计数值判断是否需要用户按键操作,是则执行步骤107;否则执行步骤110;
具体地,智能密钥设备判断错误计数值是否达到预设范围,是则需要用户按键操作,执行步骤110;否则不需要用户按键操作,执行步骤107;其中,预设范围为大于等于5;
本步骤中,智能密钥设备获取错误计数值之后,还包括:
智能密钥设备根据错误计数值判断是否达到锁定条件,
如果错误计数值等于锁定值,则达到锁定条件,智能密钥设备将锁定标识置位,向上位机发送智能密钥设备已锁定信息,返回步骤102;
如果错误计数值小于锁定值,则未达到锁定条件,智能密钥设备判断错误计数值是否达到预设范围,如果错误计数值达到预设范围,则执行步骤110;如果错误计数值未达到预设范围,则执行步骤107;其中,锁定值为15。
相应的,在步骤101中,智能密钥设备上电,进行初始化之后,还包括:
智能密钥设备判断锁定标识是否置位,是则向上位机发送智能密钥设备已锁定信息,执行步骤102;否则向上位机发送智能密钥设备未锁定信息,执行步骤102。
本实施例步骤103中,智能密钥设备接收到的上位机下发的指令,还包括:读取智能密钥设备状态指令;
如果是读取智能密钥设备状态指令,则智能密钥设备判断锁定标识是否置位,是则向上位机发送智能密钥设备已锁定信息,返回步骤102;否则向上位机发送智能密钥设备未锁定信息,返回步骤102;
其中,如果上位机下发的指令的第二至第四字节为0XFC2400,则该指令为读取锁定状态指令。
需要说明的是,锁定标识默认为复位,锁定标识被置位后,可以通过柜台对智能密钥设备进行解锁操作,将锁定标识复位。
例如:智能密钥设备获取自身内部保存的错误计数值为4,小于5,即未达到预设范围,不需要用户按键操作。
步骤107:智能密钥设备提示用户按键确认,获取用户按下的按键,执行步骤108;
步骤108:智能密钥设备判断用户按下的按键的类型,如果是确认键,则执行步骤110;如果是取消键,则执行步骤109;
步骤109:智能密钥设备向上位机发送取消更新保护密钥操作信息,返回步骤102;
步骤110:智能密钥设备用自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法对更新保护密钥指令加密,得到加密结果,执行步骤111;
具体地,智能密钥设备获取更新保护密钥指令中的第一预设字节上的数据,将获取到的数据作为数据域长度信息;
从更新保护密钥指令中的数据域长度信息之后的一个字节开始,获取长度与数据域长度信息的取值相同的数据,将获取到的数据作为更新保护密钥指令的数据域;
用第一数据对更新保护密钥指令的数据域进行填充,得到填充后的更新保护密钥指令数据域,用自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法对填充后的更新保护密钥指令的数据域加密,得到加密结果,执行步骤111;
优选的,第一预设字节为第五字节,第一数据为第一个字节为0X80,后续字节为0X00的数据;其中,第一数据的长度需要满足,更新保护密钥指令的数据域长度与第一数据的长度相加之和是8字节的整数倍。
例如:智能密钥设备从更新保护密钥指令中获取到的数据域长度信息为0X3A,从数据域长度信息之后的一个字节开始获取长度为0X3A的数据,获取到的数据为:30 31 30 31 6F 9B 30 38 BA B6 40 3A 50 7D D1 BB 61 C0 E7 D5 1533 19 02 92 26 35 ED 1A 0A 84 A3 3A D5 4D D9 30 30 30 30 30 30 30 30 30 30 3030 30 31 31 33 32 34,将其作为更新保护密钥指令的数据域;
用第一数据填充后的更新保护密钥指令的数据域为:
303130316F9B3038BAB6403A507DD1BB61C0E7D515331902922635ED1 A0A84A33AD54DD930303030303030303030303030313133323480000000000000000000;
智能密钥设备用自身保存的密钥和算法对更新保护密钥指令的数据域加密,得到的加密结果为:
C76637E3BDAC0E15BA3058E3B49EB6E875B20C2B0C247CBB5764805683425E2CC5E66C3CAB2684C4198F07568B251445346459BB2DFE0272F8D6D9CF1DE76010。
步骤111:智能密钥设备从加密结果中获取校验码,从更新保护密钥指令中获取校验码,根据加密结果中的校验码和更新保护密钥指令中的校验码判断更新保护密钥指令是否完整,是则执行步骤113;否则执行步骤112;
本实施例中,智能密钥设备从加密结果中获取最后一包数据的前四个字节长度的数据,将其作为加密结果中的校验码;获取更新保护密钥指令中最后四个字节长度的数据,将其作为更新保护密钥指令中的校验码,判断加密结果中的校验码与更新保护密钥指令中的校验码是否相同,是则更新保护密钥指令完整,执行步骤113;否则更新保护密钥指令不完整,执行步骤112;其中每包数据长度为16字节。
例如:
加密结果中的最后一包数据为:
0X346459BB2DFE0272F8D6D9CF1DE76010;
从加密结果中的最后一包数据中获取到的加密结果中的校验码为:0X346459BB;
从更新保护密钥指令中获取到的更新保护密钥指令中的校验码为:0X346459BB,即加密结果中的校验码与更新保护密钥指令中的校验码相同,更新保护密钥指令完整。
步骤112:智能密钥设备更新错误计数值,向上位机发送更新保护密钥指令不完整信息,返回步骤102;
优选的,智能密钥设备将错误计数值加1的结果作为更新后的错误计数值。
步骤113:智能密钥设备从更新保护密钥指令中获取新的保护密钥密文,用自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法对新的保护密钥密文解密,得到新的保护密钥,用新的保护密钥更新自身内部保存的保护密钥,用新的算法类型标识更新自身内部保存的算法类型标识,用新的时间戳更新自身内部保存的时间戳,用新的密钥序号更新自身内部保存的密钥序号,执行步骤114;
具体地,智能密钥设备从更新保护密钥指令的数据域中获取新的保护密钥密文;
用智能密钥设备自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法对新的保护密钥密文解密,得到新的保护密钥;
用新的保护密钥更新原来的保护密钥,用新的算法类型标识更新自身内部保存的算法类型标识,用新的时间戳更新自身内部保存的时间戳,用新的密钥序号更新自身内部保存的密钥序号;
其中,智能密钥设备从新的算法类型标识的下一个字节开始,获取长度为32字节的数据,将其作为新的保护密钥密文;
本实施例中,用新的密钥序号更新自身内部保存的密钥序号,还可以为:智能密钥设备将自身内部保存的密钥序号与预设步长相加的结果作为更新后的自身内部保存的密钥序号。优选的,预设步长为1。
例如:智能密钥设备自身内部保存的保护密钥为:
0X4E2A0C838372175DEF90A21F02B8DB7FB10BCE3829F80E71BAF1BE99D36A1651;
新的算法类型标识为:0X3031;
用智能密钥设备自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法,对新的保护密钥密文解密,得到新的保护密钥为:
5D3F2D96BFFBF7318E7AEB4B4EA2625DD902305ADD85F4D52449B838CF46D3D4;
智能密钥设备中更新后的保护密钥为:
0X5D3F2D96BFFBF7318E7AEB4B4EA2625DD902305ADD85F4D52449B838CF46D3D4;
更新后的算法类型标识为:0X3031;
更新后的时间戳为0X303030303030303030303030303131333234;
更新后的密钥序号为:0X3031;
步骤114:智能密钥设备判断是否成功更新自身内部保存的保护密钥、自身内部保存的算法类型标识、自身内部保存的时间戳和自身内部保存的密钥序号,是则执行步骤116;否则执行步骤115;
具体地,智能密钥设备更新自身内部保存的保护密钥、自身内部保存的算法类型标识、自身内部保存的时间戳和自身内部保存的密钥序号之后,根据返回的响应码判断是否更新成功,如果返回的响应码为0X9000,则更新成功,执行步骤116;否则更新失败,执行步骤115;
步骤115:智能密钥设备更新错误计数值,向上位机发送更新保护密钥失败信息,返回步骤102;
步骤116:智能密钥设备将错误计数值置为初始值,向上位机发送更新保护密钥成功信息,返回步骤102;
步骤117:智能密钥设备判断读取公钥指令是否合法,是则执行步骤119;否则执行步骤118;
具体地,智能密钥设备判断读取公钥指令的第四字节上的数据是否不为0X00,是则读取公钥指令合法,执行步骤119;否则读取公钥指令不合法,执行步骤118;
例如:智能密钥设备接收到的读取公钥指令为:
0X80 49 00 01 13 30 31 BC 97 AE D3 25 6C A7 7F 03 96 15 3B 86 43 98 2B02;
其中,读取公钥指令的第四字节上的数据是0X01,即读取公钥指令合法。
步骤118:智能密钥设备向上位机发送读取公钥指令不合法信息,返回步骤102;
步骤119:智能密钥设备生成设备随机数,从读取公钥指令中获取服务器随机数,根据设备随机数和服务器随机数以及自身内部保存的保护密钥得到工作密钥,执行步骤120;
优选的,设备随机数的长度为15字节。
本实施例中,智能密钥设备生成长度为15字节的随机数,将其作为设备随机数;
获取读取公钥指令的第一预设字节上的数据,将获取到的数据作为读取公钥指令的数据域长度信息;优选的,第一预设字节为第五字节。
从读取公钥指令中的数据域长度信息的下一个字节开始,获取长度与数据域长度信息的取值相同的数据,将获取到的数据作为读取公钥指令的数据域;
从读取公钥指令的数据域的第二字节开始,获取长度为15字节的数据,将获取到的数据作为服务器随机数;
将预设的用途标识、设备随机数和服务器随机数顺序拼接,将得到的拼接结果作为干扰因子,根据自身内部保存的保护密钥对干扰因子进行加密,得到工作密钥。预设的用途标识的长度为2字节,优选的,预设的用途标识为0X3031。
其中,根据自身内部保存的保护密钥对干扰因子进行加密,得到工作密钥,具体包括:
智能密钥设备对干扰因子判断,如果干扰因子的长度与自身内部保存的保护密钥的长度相同,则采用第一算法和保护密钥对干扰因子进行加密,得到工作密钥;
如果干扰因子的长度与自身内部保存的保护密钥的长度不同,则采用第二算法和保护密钥对干扰因子进行加密,得到工作密钥;
其中,第一算法为AES算法;第二算法为SM4算法;
采用AES算法和保护密钥对干扰因子进行加密,得到工作密钥,具体包括:
将干扰因子按照16字节进行划分,划分成2块,采用AES算法和保护密钥对干扰因子的第一块数据进行电子密码本(Electronic Codebook,ECB)模式加密,得到第一部分加密结果;用AES算法和保护密钥对干扰因子的第二块数据进行ECB模式加密,得到第二部分加密结果;将第一部分加密结果和第二部分加密结果顺序拼接,将拼接后得到结果作为工作密钥。
采用SM4算法和保护密钥对干扰因子进行加密,得到工作密钥,具体包括:
将干扰因子按照16字节进行划分,划分成2块,将干扰因子的第一块数据与第二块数据进行异或运算,得到异或运算结果,采用SM4算法和保护密钥对异或运算结果进行加密,将得到的加密结果作为工作密钥。
例如:智能密钥设备生成的设备随机数为:
0XB1 55 0D 04 D3 E7 9F 0A D5 58 5F 18 5A 1E 4A;
从读取公钥指令中获取到的服务器随机数为:
0XBC 97 AE D3 25 6C A7 7F 03 96 15 3B 86 43 98;
干扰因子为:
0X3031B1550D04D3E79F0AD5585F185A1E4ABC97AED3256CA77F0396153B864398;干扰因子的长度为32字节;
智能密钥设备自身内部保存的保护密钥为:
5D3F2D96BFFBF7318E7AEB4B4EA2625DD902305ADD85F4D52449B838CF46D3D4;其长度为32字节,即干扰因子的长度与保护密钥的长度相同,对应的算法为AES算法;
智能密钥设备采用AES算法和保护密钥对干扰因子加密,得到的工作密钥为:
0XB5003D8C90B02C65ED364A58D1150B940A0676598F7CD15BF394C6D23824E8A0;
步骤120:智能密钥设备从读取公钥指令中获取公钥信息,判断公钥信息是否合法,是则执行步骤122;否则执行步骤121;
具体地,智能密钥设备从读取公钥指令中服务器随机数的下一个字节开始,获取2字节长度的数据,将其作为公钥信息,判断自身内部是否存在相应的公钥信息,是则公钥信息合法,执行步骤122;否则公钥信息不合法,执行步骤121;
例如:智能密钥设备从读取公钥指令中获取到的公钥信息为0X2B02,智能密钥设备中存在相应的RSA密钥对,即公钥信息合法。
步骤121:智能密钥设备向上位机发送公钥不合法信息,返回步骤102;
步骤122:智能密钥设备用工作密钥对自身内部保存的公钥加密,得到公钥密文,用工作密钥采用预设加密模式对自身内部保存的公钥进行加密,得到公钥验证结果;
优选的,预设加密模式为密码分组链接(Cipher-block chaining,CBC)模式;本实施例中,预设加密模式还可以为电子密码本模式。
具体地,智能密钥设备用工作密钥对自身内部保存的公钥加密,得到公钥密文,将自身内部保存的公钥的长度、预设的证书类型和自身内部保存的公钥顺序拼接,得到拼接结果,用第二数据对拼接结果进行填充,得到填充后的拼接结果,用工作密钥采用CBC模式对填充后的拼接结果进行加密,得到加密结果,从加密结果中获取最后一包数据的前四个字节长度的数据,将其作为公钥验证结果。
优选的,第二数据为每个字节为0X10的数据,其中,第二数据的长度需要满足,填充后的拼接结果的长度是8字节的整数倍;
例如:智能密钥设备用工作密钥对自身内部保存的公钥加密,得到的公钥密文为:
0X3A37 52 22 E1 49 94 BE EB E8 F4 B7 AA 30 94 DF D4 BB D9 20 63 B69D 85 78 50 C1 04 59 D7 F3 4E 5B 79 5D A5 D6 BC 2A A1 AE C4 4A 5A B8 461B BB 59 50 9C ED B9 8D B6 6F 41 73 B5 8D 75 06 35 87 8B 23 10 A7 BE 3D 8C0E 0A 3E 38 BE 5D AC 42 DF A2 CB 1E 90 07 A5 CB B1 E9 23 6A 37 24 CA F397 14 F5 62 D8 09 30 8A 02 4F B2 FE AF 1D 58 42 EA 37 71 8D 01 82 66 94 DD27 36 49 C8 A6 68 19 22 3E 97 E0 0D 90 A4 7A 02 18 BD CD 2E A5 FC E4 F3 42A5 EE 85 C4 94 C6 4B BE 53 64 9E 9E 10 45;
将自身内部保存的公钥的长度、预设的证书类型和自身内部保存的公钥顺序拼接,得到拼接结果,用第二数据对拼接结果进行填充,得到的填充后的拼接结果为:
0X008E303230818902818100949ED555DF8D764A035561805A174E191CFC4727B47471B62566C20A868C74C95248FDA388DB00DD0E677D58E825370CB5B1C0E65FA50268911363F817266BD74F60F14FE1B7E174E91CDDB55CB28D2CFF8BDEC083317EDDD7EEB113E11545A4BDF7143DDA8CD97018C5EC209AB1021DA1E8E968572E5173BEB2DDA3B084DCB5020301000110101010101010101010101010101010;
用工作密钥采用CBC模式对填充后的拼接结果进行加密,得到加密结果,从加密结果中获取到的公钥验证结果为:0X5D DD BD A5。
步骤123:智能密钥设备向上位机发送包含设备随机数、公钥密文和公钥验证结果的响应,返回步骤102。
具体地,智能密钥设备组织包含设备随机数、公钥密文和公钥验证结果的响应,并将该响应发送给上位机,然后返回步骤102。
例如:智能密钥设备向上位机返回的包含设备随机数、公钥密文和公钥验证结果的响应为:0XB1 55 0D 04 D3 E7 9F 0A D5 58 5F 18 5A 1E 4A 3A 37 52 22E1 49 94 BE EB E8 F4 B7 AA 30 94 DF D4 BB D9 20 63 B6 9D 85 78 50 C1 04 59D7 F3 4E 5B 79 5D A5 D6 BC 2A A1 AE C4 4A 5A B8 46 1B BB 59 50 9C ED B98D B6 6F 41 73 B5 8D 75 06 35 87 8B 23 10 A7 BE 3D 8C 0E 0A 3E 38 BE 5D AC42 DF A2 CB 1E 90 07 A5 CB B1 E9 23 6A 37 24 CA F3 97 14 F5 62 D8 09 30 8A02 4F B2 FE AF 1D 58 42 EA 37 71 8D 01 82 66 94 DD 27 36 49 C8 A6 68 19 223E 97 E0 0D 90 A4 7A 02 18 BD CD 2E A5 FC E4 F3 42 A5 EE 85 C4 94 C6 4BBE 53 64 9E 9E 10 45 5D DD BD A5 00 90 00。
本实施例中,通过采用判断错误计数值的范围,并在错误计数值未达到预设范围时,增加用户操作的方式,避免了智能密钥设备受到恶意攻击,不断更新保护密钥;通过从读取公钥指令中获取服务器随机数和智能密钥设备自己生成的设备随机数,生成工作密钥,用工作密钥对智能密钥设备保存的公钥加密,得到公钥密文,用工作密钥对公钥加密得到公钥验证结果,将公钥密文MAC结果以及设备随机数组成响应返回给上位机的方式,保证上位机得到的公钥是从智能密钥设备中获取到的。
需要说明的是,本实施例中,还可以将步骤119替换为步骤119’,将步骤120替换为步骤120’,将步骤121替换为步骤121’,
步骤119’:智能密钥设备从读取公钥指令中获取公钥信息,判断公钥信息是否合法,是则执行步骤121’;否则执行步骤120’;
步骤120’:智能密钥设备向上位机发送公钥不合法信息,返回步骤102;
步骤121’:智能密钥设备生成设备随机数,从读取公钥指令中获取服务器随机数,根据设备随机数和服务器随机数以及自身内部保存的保护密钥得到工作密钥,执行步骤122。
实施例2
本发明实施例2提供一种安全获取密钥的方法,如图3和图4所示,包括:
步骤201:开始,智能密钥设备上电,进行初始化,将错误计数值置为初始值;
本实施中,优选的,错误计数值的初始值为0;
步骤202:智能密钥设备等待接收上位机下发的指令;
步骤203:当智能密钥设备接收到上位机下发的指令时,判断指令的类型,如果是更新保护密钥指令,则执行步骤204;如果是读取公钥指令,则执行步骤217;如果是其他指令,则智能密钥设备根据指令执行相应操作,并将操作结果返回给上位机,返回步骤202;
本实施例中,智能密钥设备接收上位机下发的指令,对指令的第二至第四字节进行判断,如果是第一数值,则是更新保护密钥指令;如果不是第一数值,则对指令的第二至第三字节进行判断,如果上位机下发的指令的第二至第三字节的取值是第二数值,则是读取公钥指令;否则是其他指令;
其中,第一数值为0XFC1702;第二数值为前两个字节为0X4900;
例如:智能密钥设备接收到上位机下发的指令为:
0X80 FC 17 02 3A 30 31 30 31 6F 9B 30 38 BA B6 40 3A 50 7D D1 BB 61 C0E7 D5 15 33 19 02 92 26 35 ED 1A 0A 84 A3 3A D5 4D D9 30 30 30 30 30 30 3030 30 30 30 30 30 31 31 33 32 34 34 64 59 BB,其中,第二至第四字节为0XFC1702,则该指令为更新保护密钥指令;
步骤204:智能密钥设备根据错误计数值判断是否需要用户按键操作,是则执行步骤205;否则执行步骤208;
具体地,智能密钥设备判断错误计数值是否达到预设范围,是则需要用户按键操作,执行步骤208;否则不需要用户按键操作,执行步骤205;其中,预设范围为大于等于5;
本步骤中,智能密钥设备获取错误计数值之后,还包括:
智能密钥设备根据错误计数值判断是否达到锁定条件,
如果错误计数值等于锁定值,则达到锁定条件,智能密钥设备将锁定标识置位,向上位机发送智能密钥设备已锁定信息,返回步骤202;
如果错误计数值小于锁定值,则未达到锁定条件,智能密钥设备判断错误计数值是否达到预设范围,如果错误计数值达到预设范围,则执行步骤208;如果错误计数值未达到预设范围,则执行步骤205;其中,锁定值为15。
相应的,在步骤201中,智能密钥设备上电,进行初始化之后,还包括:
智能密钥设备判断锁定标识是否置位,是则向上位机发送智能密钥设备已锁定信息,执行步骤202;否则向上位机发送智能密钥设备未锁定信息,执行步骤202。
本实施例步骤203中,智能密钥设备接收到的上位机下发的指令,还包括:读取智能密钥设备状态指令;
如果是读取智能密钥设备状态指令,则智能密钥设备判断锁定标识是否置位,是则向上位机发送智能密钥设备已锁定信息,返回步骤202;否则向上位机发送智能密钥设备未锁定信息,返回步骤202;
其中,如果上位机下发的指令的第二至第四字节为0XFC2400,则该指令为读取锁定状态指令。
需要说明的是,锁定标识默认为复位,锁定标识被置位后,可以通过柜台对智能密钥设备进行解锁操作,将锁定标识复位。
例如:智能密钥设备获取自身内部保存的错误计数值为4,小于5,即未达到预设范围,不需要用户按键操作。
步骤205:智能密钥设备提示用户按键确认,获取用户按下的按键,执行步骤206;
步骤206:智能密钥设备判断用户按下的按键的类型,如果是确认键,则执行步骤208;如果是取消键,则执行步骤207;
步骤207:智能密钥设备向上位机发送取消更新保护密钥操作信息,返回步骤202;
步骤208:智能密钥设备用自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法对更新保护密钥指令加密,得到加密结果,执行步骤209;
具体地,智能密钥设备获取更新保护密钥指令中的第一预设字节上的数据,将获取到的数据作为数据域长度信息;
从更新保护密钥指令中的数据域长度信息之后的一个字节开始,获取长度与数据域长度信息的取值相同的数据,将获取到的数据作为更新保护密钥指令的数据域;
用第一数据对更新保护密钥指令的数据域进行填充,得到填充后的更新保护密钥指令数据域,用自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法对填充后的更新保护密钥指令的数据域加密,得到加密结果,执行步骤209;
优选的,第一预设字节为第五字节,第一数据为第一个字节为0X80,后续字节为0X00的数据;其中,第一数据的长度需要满足,更新保护密钥指令的数据域长度与第一数据的长度相加之和是8字节的整数倍。
例如:智能密钥设备从更新保护密钥指令中获取到的数据域长度信息为0X3A,从数据域长度信息之后的一个字节开始获取长度为0X3A的数据,获取到的数据为:30 31 30 31 6F 9B 30 38 BA B6 40 3A 50 7D D1 BB 61 C0 E7 D5 1533 19 02 92 26 35 ED 1A 0A 84 A3 3A D5 4D D9 30 30 30 30 30 30 30 30 30 30 3030 30 31 31 33 32 34,将其作为更新保护密钥指令的数据域;
用第一数据填充后的更新保护密钥指令的数据域为:
303130316F9B3038BAB6403A507DD1BB61C0E7D515331902922635ED1A0A84A33AD54DD930303030303030303030303030313133323480000000000000000000;
智能密钥设备用自身保存的密钥和算法对更新保护密钥指令的数据域加密,得到的加密结果为:
C76637E3BDAC0E15BA3058E3B49EB6E875B20C2B0C247CBB5764805683425E2CC5E66C3CAB2684C4198F07568B251445346459BB2DFE0272F8D6D9CF1DE76010。
步骤209:智能密钥设备从加密结果中获取校验码,从更新保护密钥指令中获取校验码,根据加密结果中的校验码和更新保护密钥指令中的校验码判断更新保护密钥指令是否完整,是则执行步骤211;否则执行步骤210;
本实施例中,智能密钥设备从加密结果中获取最后一包数据的前四个字节长度的数据,将其作为加密结果中的校验码;获取更新保护密钥指令中最后四个字节长度的数据,将其作为更新保护密钥指令中的校验码,判断加密结果中的校验码与更新保护密钥指令中的校验码是否相同,是则更新保护密钥指令完整,执行步骤211;否则更新保护密钥指令不完整,执行步骤210;其中每包数据长度为16字节。
例如:
加密结果中的最后一包数据为:
0X346459BB2DFE0272F8D6D9CF1DE76010;
从加密结果中的最后一包数据中获取到的加密结果中的校验码为:0X346459BB;
从更新保护密钥指令中获取到的更新保护密钥指令中的校验码为:0X346459BB,即加密结果中的校验码与更新保护密钥指令中的校验码相同,更新保护密钥指令完整。
步骤210:智能密钥设备更新错误计数值,向上位机发送更新保护密钥指令不完整信息,返回步骤202;
优选的,智能密钥设备将错误计数值加1的结果作为更新后的错误计数值。
步骤211:智能密钥设备从更新保护密钥指令中获取新的密钥序号、新的算法类型标识和新的时间戳,根据新的密钥序号、新的算法类型标识和新的时间戳判断更新保护密钥指令是否合法,是则执行步骤213;否则执行步骤212;
本实施例中,智能密钥设备获取更新保护密钥指令的第六至第七字节上的数据,将获取到的数据作为新的密钥序号,智能密钥设备从更新保护密钥指令中新的密钥序号的下一个字节开始,获取长度为2字节长度的数据,将获取到的数据作为新的算法类型标识,智能密钥设备从更新保护密钥指令中新的算法类型标识的下一个字节开始,获取长度为18字节的数据,将获取到的数据作为新的时间戳;
智能密钥设备判断是否同时满足:更新保护密钥指令中新的密钥序号合法,更新保护密钥指令中新的算法类型标识合法,并且更新保护密钥指令中新的时间戳合法,是则执行步骤213;否则执行步骤212;
具体地,智能密钥设备根据自身内部保存的密钥序号判断新的密钥序号是否合法,如果自身内部保存的密钥序号小于新的密钥序号的取值,并且自身内部保存的密钥序号加1得到的结果的后两字节的取值与新的密钥序号的取值相同,则新的密钥序号合法;优选的,自身内部保存的密钥序号的初始值为0X00。
智能密钥设备根据自身内部保存的算法判断新的算法类型标识是否合法,如果自身内部保存的算法中存在与新的算法类型标识匹配的算法,则新的算法类型标识合法;如果自身内部保存的算法中不存在与新的算法类型标识匹配的算法,则新的算法类型标识不合法;
优选的,智能密钥设备中保存的算法默认为第一算法,其中,第一算法为高级加密标准(Advanced Encryption Standard,AES)算法,即对应的算法类型标识为0X3031;
智能密钥设备根据自身内部保存的时间戳判断新的时间戳是否合法,如果新的时间戳对应的时间早于自身内部保存的时间戳对应的时间,则新的时间戳不合法;否则新的时间戳合法;
例如:智能密钥设备中保存的密钥序号为0X3030,从更新保护密钥指令中获取到的新的密钥序号为0X3031,即新的密钥序号合法;
智能密钥设备从更新保护密钥指令中获取到的新的算法类型标识为0X3031,自身内部保存的算法中存在与新的算法类型标识匹配的算法,即新的算法合法;
智能密钥设备从更新保护密钥指令中获取到的新的时间戳为:0X30 30 3030 30 30 30 30 30 30 30 30 30 31 31 33 32 34,不早于自身内部保存的时间戳对应的时间,新的时间戳合法;
步骤212:智能密钥设备向上位机发送错误信息,更新错误计数值,返回步骤202;
具体地,如果新的密钥序号不合法,向上位机发送新的密钥序号错误信息,更新错误计数值,返回步骤202;如果新的算法类型标识不合法,向上位机发送新的算法错误信息,更新错误计数值,返回步骤202;如果新的时间戳不合法,则向上位机发送新的时间戳错误信息,更新错误计数值,返回步骤202。
步骤213:智能密钥设备从更新保护密钥指令中获取新的保护密钥密文,用自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法对新的保护密钥密文解密,得到新的保护密钥,用新的保护密钥更新自身内部保存的保护密钥,用新的算法类型标识更新自身内部保存的算法类型标识,用新的时间戳更新自身内部保存的时间戳,用新的密钥序号更新自身内部保存的密钥序号,执行步骤214;
具体地,智能密钥设备从更新保护密钥指令的数据域中获取新的保护密钥密文;
用智能密钥设备自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法对新的保护密钥密文解密,得到新的保护密钥;
用新的保护密钥更新原来的保护密钥,用新的算法类型标识更新自身内部保存的算法类型标识,用新的时间戳更新自身内部保存的时间戳,用新的密钥序号更新自身内部保存的密钥序号;
其中,智能密钥设备从新的算法类型标识的下一个字节开始,获取长度为32字节的数据,将其作为新的保护密钥密文;
本实施例中,用新的密钥序号更新自身内部保存的密钥序号,还可以为:智能密钥设备将自身内部保存的密钥序号与预设步长相加的结果作为更新后的自身内部保存的密钥序号。优选的,预设步长为1。
例如:智能密钥设备自身内部保存的保护密钥为:
0X4E2A0C838372175DEF90A21F02B8DB7FB10BCE3829F80E71BAF1BE99D36A1651;
新的算法类型标识为:0X3031;
用智能密钥设备自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法,对新的保护密钥密文解密,得到新的保护密钥为:
5D3F2D96BFFBF7318E7AEB4B4EA2625DD902305ADD85F4D52449B838CF46D3D4;
智能密钥设备中更新后的保护密钥为:
0X5D3F2D96BFFBF7318E7AEB4B4EA2625DD902305ADD85F4D52449B838CF46D3D4;
更新后的算法类型标识为:0X3031;
更新后的时间戳为0X303030303030303030303030303131333234;
更新后的密钥序号为:0X3031;
步骤214:智能密钥设备判断是否成功更新自身内部保存的保护密钥、自身内部保存的算法类型标识、自身内部保存的时间戳和自身内部保存的密钥序号,是则执行步骤216;否则执行步骤215;
具体地,智能密钥设备更新自身内部保存的保护密钥、自身内部保存的算法类型标识、自身内部保存的时间戳和自身内部保存的密钥序号之后,根据返回的响应码判断是否更新成功,如果返回的响应码为0X9000,则更新成功,执行步骤216;否则更新失败,执行步骤215;
步骤215:智能密钥设备更新错误计数值,向上位机发送更新保护密钥失败信息,返回步骤202;
步骤216:智能密钥设备将错误计数值置为初始值,向上位机发送更新保护密钥成功信息,返回步骤202;
步骤217:智能密钥设备判断读取公钥指令是否合法,是则执行步骤219;否则执行步骤218;
具体地,智能密钥设备判断读取公钥指令的第四字节上的数据是否不为0X00,是则读取公钥指令合法,执行步骤219;否则读取公钥指令不合法,执行步骤218;
例如:智能密钥设备接收到的读取公钥指令为:
0X80 49 00 01 13 30 31 BC 97 AE D3 25 6C A7 7F 03 96 15 3B 86 43 98 2B02;
其中,读取公钥指令的第四字节上的数据是0X01,即读取公钥指令合法。
步骤218:智能密钥设备向上位机发送读取公钥指令不合法信息,返回步骤202;
步骤219:智能密钥设备生成设备随机数,从读取公钥指令中获取服务器随机数,根据设备随机数和服务器随机数以及自身内部保存的保护密钥得到工作密钥,执行步骤220;
优选的,设备随机数的长度为15字节。
本实施例中,智能密钥设备生成长度为15字节的随机数,将其作为设备随机数;
获取读取公钥指令的第一预设字节上的数据,将获取到的数据作为读取公钥指令的数据域长度信息;优选的,第一预设字节为第五字节。
从读取公钥指令中的数据域长度信息的下一个字节开始,获取长度与数据域长度信息的取值相同的数据,将获取到的数据作为读取公钥指令的数据域;
从读取公钥指令的数据域的第二字节开始,获取长度为15字节的数据,将获取到的数据作为服务器随机数;
将预设的用途标识、设备随机数和服务器随机数顺序拼接,将得到的拼接结果作为干扰因子,根据自身内部保存的保护密钥对干扰因子进行加密,得到工作密钥。预设的用途标识的长度为2字节,优选的,预设的用途标识为0X3031。
其中,根据自身内部保存的保护密钥对干扰因子进行加密,得到工作密钥,具体包括:
智能密钥设备对干扰因子判断,如果干扰因子的长度与自身内部保存的保护密钥的长度相同,则采用第一算法和保护密钥对干扰因子进行加密,得到工作密钥;
如果干扰因子的长度与自身内部保存的保护密钥的长度不同,则采用第二算法和保护密钥对干扰因子进行加密,得到工作密钥;
其中,第一算法为AES算法;第二算法为SM4算法;
采用AES算法和保护密钥对干扰因子进行加密,得到工作密钥,具体包括:
将干扰因子按照16字节进行划分,划分成2块,采用AES算法和保护密钥对干扰因子的第一块数据进行电子密码本(Electronic Codebook,ECB)模式加密,得到第一部分加密结果;用AES算法和保护密钥对干扰因子的第二块数据进行ECB模式加密,得到第二部分加密结果;将第一部分加密结果和第二部分加密结果顺序拼接,将拼接后得到结果作为工作密钥。
采用SM4算法和保护密钥对干扰因子进行加密,得到工作密钥,具体包括:
将干扰因子按照16字节进行划分,划分成2块,将干扰因子的第一块数据与第二块数据进行异或运算,得到异或运算结果,采用SM4算法和保护密钥对异或运算结果进行加密,将得到的加密结果作为工作密钥。
例如:智能密钥设备生成的设备随机数为:
0XB1 55 0D 04 D3 E7 9F 0A D5 58 5F 18 5A 1E 4A;
从读取公钥指令中获取到的服务器随机数为:
0XBC 97 AE D3 25 6C A7 7F 03 96 15 3B 86 43 98;
干扰因子为:
0X3031B1550D04D3E79F0AD5585F185A1E4ABC97AED3256CA77F0396153B864398;干扰因子的长度为32字节;
智能密钥设备自身内部保存的保护密钥为:
5D3F2D96BFFBF7318E7AEB4B4EA2625DD902305ADD85F4D52449B838CF46D3D4;其长度为32字节,即干扰因子的长度与保护密钥的长度相同,对应的算法为AES算法;
智能密钥设备采用AES算法和保护密钥对干扰因子加密,得到的工作密钥为:
0XB5003D8C90B02C65ED364A58D1150B940A0676598F7CD15BF394C6D23824E8A0;
步骤220:智能密钥设备从读取公钥指令中获取公钥信息,判断公钥信息是否合法,是则执行步骤222;否则执行步骤221;
具体地,智能密钥设备从读取公钥指令中服务器随机数的下一个字节开始,获取2字节长度的数据,将其作为公钥信息,判断自身内部是否存在相应的公钥信息,是则公钥信息合法,执行步骤222;否则公钥信息不合法,执行步骤221;
例如:智能密钥设备从读取公钥指令中获取到的公钥信息为0X2B02,智能密钥设备中存在相应的RSA密钥对,即公钥信息合法。
步骤221:智能密钥设备向上位机发送公钥不合法信息,返回步骤202;
步骤222:智能密钥设备用工作密钥对自身内部保存的公钥加密,得到公钥密文,用工作密钥采用预设加密模式对自身内部保存的公钥进行加密,得到公钥验证结果;
优选的,预设加密模式为密码分组链接(Cipher-block chaining,CBC)模式;本实施例中,预设加密模式还可以为电子密码本模式。
具体地,智能密钥设备用工作密钥对自身内部保存的公钥加密,得到公钥密文,将自身内部保存的公钥的长度、预设的证书类型和自身内部保存的公钥顺序拼接,得到拼接结果,用第二数据对拼接结果进行填充,得到填充后的拼接结果,用工作密钥采用CBC模式对填充后的拼接结果进行加密,得到加密结果,从加密结果中获取最后一包数据的前四个字节长度的数据,将其作为公钥验证结果。
优选的,第二数据为每个字节为0X10的数据,其中,第二数据的长度需要满足,填充后的拼接结果的长度是8字节的整数倍;
例如:智能密钥设备用工作密钥对自身内部保存的公钥加密,得到的公钥密文为:
0X3A37 52 22 E1 49 94 BE EB E8 F4 B7 AA 30 94 DF D4 BB D9 20 63 B69D 85 78 50 C1 04 59 D7 F3 4E 5B 79 5D A5 D6 BC 2A A1 AE C4 4A 5A B8 461B BB 59 50 9C ED B9 8D B6 6F 41 73 B5 8D 75 06 35 87 8B 23 10 A7 BE 3D 8C0E 0A 3E 38 BE 5D AC 42 DF A2 CB 1E 90 07 A5 CB B1 E9 23 6A 37 24 CA F397 14 F5 62 D8 09 30 8A 02 4F B2 FE AF 1D 58 42 EA 37 71 8D 01 82 66 94 DD27 36 49 C8 A6 68 19 22 3E 97 E0 0D 90 A4 7A 02 18 BD CD 2E A5 FC E4 F3 42A5 EE 85 C4 94 C6 4B BE 53 64 9E 9E 10 45;
将自身内部保存的公钥的长度、预设的证书类型和自身内部保存的公钥顺序拼接,得到拼接结果,用第二数据对拼接结果进行填充,得到的填充后的拼接结果为:
0X008E303230818902818100949ED555DF8D764A035561805A174E191CFC4727B47471B62566C20A868C74C95248FDA388DB00DD0E677D58E825370CB5B1C0E65FA50268911363F817266BD74F60F14FE1B7E174E91CDDB55CB28D2CFF8BDEC083317EDDD7EEB113E11545A4BDF7143DDA8CD97018C5EC209AB1021DA1E8E968572E5173BEB2DDA3B084DCB5020301000110101010101010101010101010101010;
用工作密钥采用CBC模式对填充后的拼接结果进行加密,得到加密结果,从加密结果中获取到的公钥验证结果为:0X5D DD BD A5。
步骤223:智能密钥设备向上位机发送包含设备随机数、公钥密文和公钥验证结果的响应,返回步骤202。
具体地,智能密钥设备组织包含设备随机数、公钥密文和公钥验证结果的响应,并将该响应发送给上位机,然后返回步骤202。
例如:智能密钥设备向上位机返回的包含设备随机数、公钥密文和公钥验证结果的响应为:0XB1 55 0D 04 D3 E7 9F 0A D5 58 5F 18 5A 1E 4A 3A 37 52 22E1 49 94 BE EB E8 F4 B7 AA 30 94 DF D4 BB D9 20 63 B6 9D 85 78 50 C1 04 59D7 F3 4E 5B 79 5D A5 D6 BC 2A A1 AE C4 4A 5A B8 46 1B BB 59 50 9C ED B98D B6 6F 41 73 B5 8D 75 06 35 87 8B 23 10 A7 BE 3D 8C 0E 0A 3E 38 BE 5D AC42 DF A2 CB 1E 90 07 A5 CB B1 E9 23 6A 37 24 CA F3 97 14 F5 62 D8 09 30 8A02 4F B2 FE AF 1D 58 42 EA 37 71 8D 01 82 66 94 DD 27 36 49 C8 A6 68 19 223E 97 E0 0D 90 A4 7A 02 18 BD CD 2E A5 FC E4 F3 42 A5 EE 85 C4 94 C6 4BBE 53 64 9E 9E 10 45 5D DD BD A5 00 90 00。
本实施例中,通过采用判断错误计数值的范围,并在错误计数值未达到预设范围时,增加用户操作的方式,避免了智能密钥设备受到恶意攻击,不断更新保护密钥;通过从读取公钥指令中获取服务器随机数和智能密钥设备自己生成的设备随机数,生成工作密钥,用工作密钥对智能密钥设备保存的公钥加密,得到公钥密文,用工作密钥对公钥加密得到公钥验证结果,将公钥密文MAC结果以及设备随机数组成响应返回给上位机的方式,保证上位机得到的公钥是从智能密钥设备中获取到的。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (14)

1.一种安全获取密钥的方法,其特征在于,包括:智能密钥设备上电,进行初始化,等待接收上位机下发的指令;
当所述智能密钥设备接收到更新保护密钥指令时,执行步骤S1;
步骤S1:所述智能密钥设备判断所述更新保护密钥指令是否完整,是则执行步骤S2;否则向所述上位机发送更新保护密钥指令不完整信息;
步骤S2:所述智能密钥设备从所述更新保护密钥指令中获取新的密钥序号、新的时间戳和新的算法类型标识,根据所述新的密钥序号、所述新的时间戳和所述新的算法类型标识判断所述更新保护密钥指令是否合法,是则执行步骤S3;否则向所述上位机发送错误信息;
步骤S3:所述智能密钥设备从所述更新保护密钥指令中获取新的保护密钥密文,用自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法,对所述新的保护密钥密文解密,得到新的保护密钥;
步骤S4:所述智能密钥设备用所述新的保护密钥更新所述自身内部保存的保护密钥,更新所述自身内部保存的密钥序号,用所述新的时间戳更新所述自身内部保存的时间戳,用所述新的算法类型标识更新所述自身内部保存的算法类型标识;
步骤S5:所述智能密钥设备向所述上位机发送更新保护密钥成功信息;
当所述智能密钥接收到读取公钥指令时,执行步骤W1;
步骤W1:所述智能密钥设备生成设备随机数,从所述读取公钥指令中获取服务器随机数,根据所述设备随机数和所述服务器随机数以及自身内部保存的保护密钥得到工作密钥,执行步骤W2;
步骤W2:所述智能密钥设备用所述工作密钥对自身内部保存的公钥加密,得到公钥密文,用所述工作密钥采用预设加密模式对所述公钥加密,得到公钥验证结果;
步骤W3:所述智能密钥设备向所述上位机发送包含所述设备随机数、所述公钥密文和所述公钥验证结果的响应。
2.如权利要求1所述的方法,其特征在于,所述步骤S1,具体包括:
所述智能密钥设备用自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法,对所述更新保护密钥指令加密,得到加密结果;
所述智能密钥设备从所述加密结果中获取校验码,从所述更新保护密钥指令中获取校验码,判断所述加密结果中的校验码与所述更新保护密钥指令中的校验码是否相同,是则所述更新保护密钥指令完整;否则所述更新保护密钥指令不完整。
3.如权利要求2所述的方法,其特征在于,所述智能密钥设备用自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法,对所述更新保护密钥指令加密,得到加密结果,具体包括:
所述智能密钥设备从所述更新保护密钥指令中,获取第一预设字节上的数据,根据所述第一预设字节上的数据从所述更新保护密钥指令中获取更新保护密钥指令的数据域,根据所述第一预设字节上的数据计算得到第一数据,用所述第一数据对所述更新保护密钥指令的数据域进行填充,得到填充后的更新保护密钥指令的数据域,用自身内部保存的保护密钥和自身内部保存的算法类型标识对应的算法对所述填充后的更新保护密钥指令的数据域加密,得到加密结果。
4.如权利要求1所述的方法,其特征在于,所述根据所述新的密钥序号、所述新的时间戳和所述新的算法类型标识判断所述更新保护密钥指令是否合法,具体包括:
所述智能密钥设备获取自身内部保存的密钥序号,判断是否满足:
自身内部保存的密钥序号小于所述新的密钥序号,并且自身内部保存的密钥序号按照预设步长更新的结果与所述新的密钥序号相同,并且
自身内部保存的算法中存在与所述新的算法类型标识匹配的算法,并且
自身内部保存的时间戳不早于所述新的时间戳;
是则所述更新保护密钥指令合法;否则所述更新保护密钥指令不合法。
5.如权利要求1所述的方法,其特征在于,所述更新所述自身内部保存的密钥序号具体包括:
将所述自身内部保存的密钥序号与预设步长相加的结果作为更新后的自身内部保存的密钥序号;
或者,
用所述新的密钥序号更新所述自身内部保存的密钥序号。
6.如权利要求1所述的方法,其特征在于,所述步骤S4与步骤S5之间,还包括:
所述智能密钥设备判断是否成功更新所述自身内部保存的保护密钥、所述自身内部保存的密钥序号、所述自身内部保存的算法类型标识和所述自身内部保存的时间戳,是则执行步骤S5;否则向所述上位机发送更新保护密钥失败信息。
7.如权利要求6所述的方法,其特征在于,所述智能密钥设备上电,进行初始化时,还包括:将错误计数值置为初始值;
所述步骤S1之前,还包括:
步骤S1-1:所述智能密钥设备获取所述错误计数值,根据所述错误计数值判断是否需要用户按键操作,是则执行步骤S1-2:否则执行步骤S1;
步骤S1-2:所述智能密钥设备获取用户按下的按键,并且判断所述按键的类型,如果是确认键,则执行步骤S1;如果是取消键,则所述智能密钥设备向所述上位机发送取消更新保护密钥操作信息;
相应的,所述智能密钥设备向所述上位机发送更新保护密钥指令不完整信息时,还包括:更新所述错误计数值;
所述智能密钥设备向所述上位机发送错误信息时,还包括:更新所述错误计数值;
所述步骤S5,还包括:所述智能密钥设备将所述错误计数值置为初始值;
所述智能密钥设备向所述上位机发送更新保护密钥失败信息时,还包括:所述智能密钥设备更新所述错误计数值。
8.如权利要求7所述的方法,其特征在于,所述步骤S1-1中,所述智能密钥设备获取所述自身内部保存的错误计数值之后,还包括:
所述智能密钥设备根据所述错误计数值判断是否达到锁定条件,是则将自身内部保存的锁定标识置位,向所述上位机发送智能密钥设备已锁定信息;否则所述智能密钥设备根据所述错误计数值判断是否需要用户按键操作,是则执行步骤S1-2:否则执行步骤S1;
所述自身内部保存的锁定标识默认为复位。
9.如权利要求8所述的方法,其特征在于,所述智能密钥设备接收到的上位机下发的指令,还包括:读取智能密钥设备状态指令;
所述智能密钥设备接收到所述读取智能密钥设备状态指令时,所述智能密钥设备判断所述锁定标识是否置位,是则向所述上位机发送智能密钥设备已锁定信息;否则向所述上位机发送智能密钥设备未锁定信息。
10.如权利要求8所述的方法,其特征在于,所述智能密钥设备上电,进行初始化之后,还包括:
所述智能密钥设备判断所述锁定标识是否置位,是则向所述上位机发送智能密钥设备已锁定信息;否则向所述上位机发送智能密钥设备未锁定信息。
11.如权利要求1所述的方法,其特征在于,所述智能密钥设备根据所述设备随机数和所述服务器随机数以及自身内部保存的保护密钥得到工作密钥,具体包括:
所述智能密钥设备将预设的用途标识、所述设备随机数和所述服务器随机数顺序拼接,将得到的拼接结果作为干扰因子,根据自身内部保存的保护密钥对所述干扰因子进行加密,得到工作密钥。
12.如权利要求11所述的方法,其特征在于,所述智能密钥设备根据自身内部保存的保护密钥对所述干扰因子进行加密,得到工作密钥,具体包括:
所述智能密钥设备对所述干扰因子进行判断,如果所述干扰因子的长度与所述保护密钥的长度相同,则采用第一算法和所述自身内部保存的保护密钥对所述干扰因子加密,得到工作密钥;
如果所述干扰因子的长度与所述保护密钥的长度不相同,则采用第二算法和所述自身内部保存的保护密钥对所述干扰因子加密,得到工作密钥。
13.如权利要求1所述的方法,其特征在于,所述智能密钥设备用所述工作密钥对自身内部保存的公钥加密,得到公钥密文之后,还包括:
所述智能密钥设备从所述读取公钥指令中获取公钥信息,判断所述公钥信息是否合法,是则用所述工作密钥采用预设加密模式对所述公钥加密,得到公钥验证结果,执行本步骤W3;否则所述智能密钥设备向所述上位机发送公钥不合法信息。
14.如权利要求1或13所述的方法,其特征在于,所述智能密钥设备用所述工作密钥采用预设加密模式对所述公钥加密,得到公钥验证结果,具体包括:
所述智能密钥设备将自身内部保存的公钥的长度、预设的证书类型和所述公钥顺序拼接,得到拼接结果,用第二数据对所述拼接结果进行填充,得到填充后的拼接结果,用所述工作密钥采用预设加密模式对所述填充后的拼接结果进行加密,得到加密结果,从所述加密结果中获取公钥验证结果。
CN201510089245.0A 2015-02-27 2015-02-27 一种安全获取密钥的方法 Active CN104639561B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510089245.0A CN104639561B (zh) 2015-02-27 2015-02-27 一种安全获取密钥的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510089245.0A CN104639561B (zh) 2015-02-27 2015-02-27 一种安全获取密钥的方法

Publications (2)

Publication Number Publication Date
CN104639561A true CN104639561A (zh) 2015-05-20
CN104639561B CN104639561B (zh) 2018-01-05

Family

ID=53217874

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510089245.0A Active CN104639561B (zh) 2015-02-27 2015-02-27 一种安全获取密钥的方法

Country Status (1)

Country Link
CN (1) CN104639561B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105407001A (zh) * 2015-11-27 2016-03-16 飞天诚信科技股份有限公司 一种快速识别通讯参数配置的方法、系统及装置
CN105635114A (zh) * 2015-12-18 2016-06-01 恒宝股份有限公司 一种口令校验方法及系统
CN105825135A (zh) * 2016-03-18 2016-08-03 深圳芯启航科技有限公司 一种加密芯片、加密系统、加密方法及解密方法
CN107154916A (zh) * 2016-03-02 2017-09-12 阿里巴巴集团控股有限公司 一种认证信息获取方法、提供方法及装置
CN108306726A (zh) * 2017-01-13 2018-07-20 杭州海康威视数字技术股份有限公司 一种密钥获得方法及系统
CN108550043A (zh) * 2018-04-16 2018-09-18 北京佳艺徕经贸有限责任公司 商品标识的防伪方法、装置及商品真伪的验证方法、装置
CN109544747A (zh) * 2018-11-20 2019-03-29 北京千丁互联科技有限公司 智能门锁的加密密钥更新方法、系统和计算机存储介质
CN110784613A (zh) * 2018-07-31 2020-02-11 佳能株式会社 通信设备及控制方法
CN111414638A (zh) * 2020-04-23 2020-07-14 飞天诚信科技股份有限公司 一种区分密钥生成方式的实现方法及装置
CN113538752A (zh) * 2021-07-20 2021-10-22 慧管(上海)信息科技有限公司 一种门禁终端设备脱机动态二维码验证方法
CN113715670A (zh) * 2021-09-18 2021-11-30 慧管(上海)信息科技有限公司 一种电瓶车充电桩设备的充电方法
CN116633544A (zh) * 2023-07-21 2023-08-22 杭州海康威视数字技术股份有限公司 硬件密码模组内多核密钥分级存储与同步方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999033221A1 (en) * 1997-12-19 1999-07-01 Koninklijke Philips Electronics N.V. Secure proxy signing device and method for use
CN102571355A (zh) * 2012-02-02 2012-07-11 飞天诚信科技股份有限公司 一种不落地导入密钥的方法及装置
CN102724211A (zh) * 2012-06-29 2012-10-10 飞天诚信科技股份有限公司 一种密钥协商方法
CN102761420A (zh) * 2012-08-08 2012-10-31 飞天诚信科技股份有限公司 一种安全认证方法
CN103036880A (zh) * 2012-12-12 2013-04-10 华为技术有限公司 网络信息传输方法、设备及系统
CN103516702A (zh) * 2012-06-29 2014-01-15 北京新媒传信科技有限公司 一种对称加密方法和系统以及一种中心服务器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999033221A1 (en) * 1997-12-19 1999-07-01 Koninklijke Philips Electronics N.V. Secure proxy signing device and method for use
CN102571355A (zh) * 2012-02-02 2012-07-11 飞天诚信科技股份有限公司 一种不落地导入密钥的方法及装置
CN102724211A (zh) * 2012-06-29 2012-10-10 飞天诚信科技股份有限公司 一种密钥协商方法
CN103516702A (zh) * 2012-06-29 2014-01-15 北京新媒传信科技有限公司 一种对称加密方法和系统以及一种中心服务器
CN102761420A (zh) * 2012-08-08 2012-10-31 飞天诚信科技股份有限公司 一种安全认证方法
CN103036880A (zh) * 2012-12-12 2013-04-10 华为技术有限公司 网络信息传输方法、设备及系统

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105407001B (zh) * 2015-11-27 2018-10-12 飞天诚信科技股份有限公司 一种快速识别通讯参数配置的方法、系统及装置
CN105407001A (zh) * 2015-11-27 2016-03-16 飞天诚信科技股份有限公司 一种快速识别通讯参数配置的方法、系统及装置
CN105635114A (zh) * 2015-12-18 2016-06-01 恒宝股份有限公司 一种口令校验方法及系统
CN105635114B (zh) * 2015-12-18 2019-02-26 恒宝股份有限公司 一种口令校验方法及系统
CN107154916A (zh) * 2016-03-02 2017-09-12 阿里巴巴集团控股有限公司 一种认证信息获取方法、提供方法及装置
CN105825135A (zh) * 2016-03-18 2016-08-03 深圳芯启航科技有限公司 一种加密芯片、加密系统、加密方法及解密方法
CN108306726A (zh) * 2017-01-13 2018-07-20 杭州海康威视数字技术股份有限公司 一种密钥获得方法及系统
CN108306726B (zh) * 2017-01-13 2021-09-17 杭州海康威视数字技术股份有限公司 一种密钥获得方法及系统
CN108550043A (zh) * 2018-04-16 2018-09-18 北京佳艺徕经贸有限责任公司 商品标识的防伪方法、装置及商品真伪的验证方法、装置
CN110784613B (zh) * 2018-07-31 2022-06-07 佳能株式会社 通信设备及控制方法
CN110784613A (zh) * 2018-07-31 2020-02-11 佳能株式会社 通信设备及控制方法
US11405178B2 (en) 2018-07-31 2022-08-02 Canon Kabushiki Kaisha Communication apparatus and control method
CN109544747A (zh) * 2018-11-20 2019-03-29 北京千丁互联科技有限公司 智能门锁的加密密钥更新方法、系统和计算机存储介质
CN111414638A (zh) * 2020-04-23 2020-07-14 飞天诚信科技股份有限公司 一种区分密钥生成方式的实现方法及装置
CN111414638B (zh) * 2020-04-23 2023-03-24 飞天诚信科技股份有限公司 一种区分密钥生成方式的实现方法及装置
CN113538752A (zh) * 2021-07-20 2021-10-22 慧管(上海)信息科技有限公司 一种门禁终端设备脱机动态二维码验证方法
CN113715670A (zh) * 2021-09-18 2021-11-30 慧管(上海)信息科技有限公司 一种电瓶车充电桩设备的充电方法
CN116633544A (zh) * 2023-07-21 2023-08-22 杭州海康威视数字技术股份有限公司 硬件密码模组内多核密钥分级存储与同步方法及装置
CN116633544B (zh) * 2023-07-21 2023-10-10 杭州海康威视数字技术股份有限公司 硬件密码模组内多核密钥分级存储与同步方法及装置

Also Published As

Publication number Publication date
CN104639561B (zh) 2018-01-05

Similar Documents

Publication Publication Date Title
CN104639561A (zh) 一种安全获取密钥的方法
US11615411B2 (en) POS system with white box encryption key sharing
CN105024803B (zh) 白箱实现中的行为指纹
US9253162B2 (en) Intelligent card secure communication method
US8353054B2 (en) Method for protection of a chip card from unauthorized use, chip card and chip card terminal
CN111639348B (zh) 数据库秘钥的管理方法及装置
CN105141420B (zh) 一种安全导入、签发证书的方法、设备及服务器
CN105024992B (zh) 在单个白箱实现中实现使用相关安全性设置
CN108471352A (zh) 基于分布式私钥的处理方法、系统、计算机设备及存储介质
CN103888938A (zh) 一种基于参数的动态生成密钥的pki私钥保护方法
CN104868998A (zh) 一种向电子设备供应加密数据的系统、设备和方法
US10027639B2 (en) IC chip performing access control based on encrypted ID
CN105022937B (zh) 用于将白箱实现紧附到周围程序的接口兼容方法
CN104579680A (zh) 一种安全分发种子的方法
CN105791258A (zh) 一种数据传输方法、终端及开放平台
CN112654037A (zh) 一种基于5g通信技术的工业网络安全加密处理方法
CN104767766A (zh) 一种Web Service接口验证方法、Web Service服务器、客户端
CN113722741A (zh) 数据加密方法及装置、数据解密方法及装置
CN111489462B (zh) 一种个人用蓝牙钥匙系统
US10225240B2 (en) Method to protect a set of sensitive data associated to public data in a secured container
US20170310646A1 (en) Method to detect an ota (over the air) standard message affected by an error
CN111489461B (zh) 一种集团用蓝牙钥匙系统
CN104579644A (zh) 一种密钥生成与恢复方法
JP6720558B2 (ja) 情報処理システムおよび暗号通信方法
KR101810165B1 (ko) 전자 화폐 단말 및 이를 이용하여 전자 화폐를 제공하는 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
OL01 Intention to license declared
OL01 Intention to license declared