一种下载数字证书的方法和装置的制作方法

文档序号:5351095阅读:127来源:国知局
专利名称:一种下载数字证书的方法和装置的制作方法
技术领域
本发明涉及信息安全领域,尤其涉及一种下载数字证书的方法和装置。
背景技术
数字证书就是互联网通讯中用来标志和证明网络通信双方身份的数字信息文件, 包含公开密钥拥有者信息以及公开密钥的文件。它由一个权威机构——CA(Certificate Authority,证书授权)中心发行,人们可以在网上用它来识别对方的身份。以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性。
现有技术中,申请下发和更新UEB key的数字证书的申请包由主机来组织完成,在这个过程中,他人可以通过主机来修改申请包中的数据,导致CA不能对真正的USB key下发数字证书,使USB key数字证书的下发过程存在安全隐患。发明内容
本发明的目的是为了克服现有技术的不足,提供一种下载数字证书的方法和装置,提高了下载数字证书的安全性。
一种下载数字证书的方法,包括
步骤SI USB Key等待接收主机发送的命令;
步骤S2 :所述USB Key判断所述命令类型,若是生成密钥的命令则执行步骤S3,若是生成第一申请包的命令则执行步骤S6,若是存储数字证书命令则执行步骤S9,若是生成第三申请包的命令则执行步骤S10,若是其他命令则执行步骤S15,若是非法命令则执行步骤 S16 ;
步骤S3 :所述USB Key判断将要生成的密钥对应的标志位是否置位,是则返回密钥已经存在的信息给所述主机,执行步骤SI,否则执行步骤S4 ;
步骤S4 :所述USB Key生成密钥;
步骤S5 :所述USB Key将所述生成的密钥所对应的标志位置位,返回步骤SI ;
步骤S6 :所述USB Key判断指定密钥所对应的标志位是否置位,是则执行步骤S7, 否则返回错误信息,执行步骤Si ;
步骤S7 :所述USB Key使用所述指定密钥的私钥对由所述指定密钥的公钥、生成所述指定密钥的算法标识、第一申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包,将所述指定密钥所对应的标志位复位;
步骤S8 :所述USB key将所述第一申请包返回给所述主机,返回步骤SI ;
步骤S9 :所述USB Key将证书数据存入相应位置,并记录所述位置和密钥标识,返回步骤SI ;
步骤SlO :所述USB Key判断指定密钥所对应的标志位是否为置位,是则执行步骤 S11,否则返回错误信息,执行步骤SI ;
步骤Sll :所述USB Key使用所述指定密钥的私钥对由所述指定密钥的公钥、生成指定密钥的算法标识、第三申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包;
步骤S12:所述USB Key使用内置证书的私钥对由所述内置证书和所述第一申请包组成的第二数据包进行数字签名,并生成第二申请包;
步骤S13 :所述USB Key使用当前数字证书的私钥对由所述第二申请包和当前数字证书组成的第三数据包进行数字签名,并生成第三申请包,将所述指定密钥所对应的标志位复位;
步骤S14:所述USB key将所述第三申请包返回给所述主机,返回步骤SI ;
步骤S15:所述USB key执行相应命令,将执行结果返回给所述主机,返回步骤 Si ;
步骤S16:所述USB key返回错误信息给所述主机,返回步骤SI。
所述步骤S7中,所述生成指定密钥的算法标识预先存储在USB Key中,所述第一申请包属性字符串预先设置在所述USB Key中;所述版本由所述主机指定,通过所述生成第一申请包的命令发送给所述USB Key ;所述标识信息存储在所述生成第一申请包命令中, 由所述主机发送给所述USB Key0
所述步骤S7包括
步骤S7-1 :所述USB key按照预设格式对所述指定密钥的公钥进行封装,得到第一数据;
步骤S7-2 :所述USB key按照所述预设格式对所述USB key中所述生成指定密钥的算法标识、所述第一申请包属性字符串、所述版本和所述标识信息进行封装,得到第二数据;
步骤S7-3 :所述USB key按照所述预设格式对所述第一数据和所述第二数据进行封装,得到第三数据;
步骤S7-4 :所述USB key根据摘要算法对所述第三数据进行计算,得到第一摘要;
步骤S7-5 :所述USB key使用所述指定密钥的私钥对所述第一摘要进行数字签名,得到第一数字签名,并按照所述预设格式对所述第一数字签名进行封装,得到第四数据;
步骤S7-6 :所述USB key按照所述预设格式对所述第三数据和所述第四数据进行封装,得到所述第一申请包,将所述指定密钥所对应的标志位复位。
所述步骤Sll中,所述生成指定密钥的算法标识预先存储在USB Key中,所述第三申请包属性字符串预先设置在所述USB Key中;所述版本由所述主机指定,通过所述生成第三申请包的命令发送给所述USB Key ;所述标识信息的获取方式可以是所述主机将所述标识信息存储在所述生成第三申请包命令中,发送给所述USB Key或所述USB Key根据存储的当前数字证书的位置检索到当前数字证书,从当前数字证书中解析出所述标识信肩、O
所述步骤Sll包括
步骤Sll-I :所述USB key按照预设格式对所述指定密钥的公钥进行封装,得到第一数据;
步骤S11-2 :所述USB key按照所述预设格式对所述USB key中所述生成指定密钥的算法标识、所述第三申请包属性字符串、所述版本和所述标识信息进行封装,得到第二数据;
步骤S11-3 :所述USB key按照所述预设格式对所述第一数据和所述第二数据进行封装,得到第三数据;
步骤S11-4 :所述USB key根据摘要算法对所述第三数据进行计算,得到第一摘要;
步骤S11-5 :所述USB key使用所述指定密钥的私钥对所述第一摘要进行数字签名,得到第一数字签名,并按照所述预设格式对所述第一数字签名进行封装,得到第四数据;
步骤S11-6 :所述USB key按照所述预设格式对所述第三数据和所述第四数据进行封装,得到所述第一申请包。所述步骤S12包括
步骤S12-1 :所述USB key按照所述预设格式对所述内置证书进行封装,得到第五步骤数据;
S12-2 :所述USB key根据所述摘要算法对所述第一申请包进行计算,得到第二摘要;
步骤S12-3 :所述USB key使用所述内置证书的私钥对所述第二摘要进行数字签名,得到第二数字签名,并按照所述预设格式对所述第二数字签名进行封装,得到第六数据;
步骤S12-4 :所述USB key按照所述预设格式对所述第一申请包、所述第五数据和所述第六数据进行封装,得到所述第二申请包。
所述内置证书在生产过程中预置在所述USB key内部。
所述步骤S13包括
步骤S13-1 :所述USB key按照所述预设格式对当前数字证书进行封装,得到第七数据;
步骤S13-2 :所述USB key根据所述摘要算法对所述第二申请包进行计算,得到第三摘要;
步骤S13-3 :所述USB key使用当前数字证书的私钥对所述第三摘要进行数字签名,得到第三数字签名,并按照所述预设格式对所述第三数字签名进行封装,得到第八数据;
步骤S13-4 :所述USB key按照所述预设格式对所述第二申请包、所述第七数据和所述第八数据进行封装,得到所述第三申请包,将所述指定密钥所对应的标志位复位。
所述摘要算法可以是所述USB Key中内置的固定算法,或根据所述主机发送的命令在所述USB key内部的预置算法集合中查找对应的算法。
一种下载数字证书的装置,包括接收模块、第一判断模块、第二判断模块、密钥生成模块、置位模块、第三判断模块、第一生成模块、第二生成模块、第三生成模块、复位模块、 执行模块、发送模块和存储证书模块;
所述接收模块,用于接收主机发送的命令;
所述第一判断模块,用于判断所述命令类型;
所述第二判断模块,用于判断将要生成的密钥对应的标志位是否置位;
所述密钥生成模块,用于生成密钥;
所述置位模块,用于将所述生成的密钥所对应的标志位置位;
所述第三判断模块,用于判断指定密钥所对应的标志位是否置位;
所述第一生成模块,用于使用所述指定密钥的私钥对由所述指定密钥的公钥、生成所述指定密钥的算法标识、申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包;
所述第二生成模块,用于使用内置证书的私钥对由所述内置证书和所述第一申请包组成的第二数据包进行数字签名,并生成第二申请包;
所述第三生成模块,使用当前数字证书的私钥对由所述第二申请包和当前数字证书组成的第三数据包进行数字签名,并生成第三申请包;
所述复位模块,用于将所述指定密钥所对应的标志位复位;
所述执行模块,用于执行除生成密钥的命令、生成第一申请包命令、存储数字证书命令和生成第二申请包命令之外的其他命令;
所述发送模块,用于将所述第一申请包、所述第三申请包、执行结果、所述密钥已经存在的信息和错误信息返回给所述主机;
所述存储证书模块,用于根据存储数字证书命令中保存证书数据的偏移,将所述证书数据存入相应位置,并记录所述位置和密钥标识。
所述第一生成模块包括第一封装单元、第一摘要单元和第一签名单元;
所述第一封装单元,用于按照预设格式对所述指定密钥的公钥进行封装,得到第一数据;按照所述预设格式对所述USB key中所述生成指定密钥的算法标识、所述申请包属性字符串、所述版本和所述标识信息进行封装,得到第二数据;按照所述预设格式对所述第一数据和所述第二数据进行封装,得到第三数据;按照所述预设格式对第一数字签名进行封装,得到第四数据;按照所述预设格式对所述第三数据和所述第四数据进行封装,得到所述第一申请包;
所述第一摘要单元,用于根据摘要算法对所述第三数据进行计算,得到第一摘要;
所述第一签名单元,用于使用所述指定密钥的私钥对所述第一摘要进行数字签名,得到所述第一数字签名。
所述第一生成模块还包括查找单元和解析单元;
所述查找单元,用于根据存储的当前数字证书的位置和所述密钥标识查找当前数字证书;
所述解析单元,用于从所述找到的当前数字证书中解析出所述标识信息。
所述第二生成模块包括第二封装单元、第二摘要单元和第二签名单元;
所述第二封装单元,用于按照所述预设格式对所述内置证书进行封装,得到第五数据;按照所述预设格式对第二数字签名进行封装,得到第六数据;按照所述预设格式对所述第一申请包、所述第五数据和所述第六数据进行封装,得到所述第二申请包;
所述第二摘要单元,用于根据所述摘要算法对所述第一申请包进行计算,得到第9二摘要;
所述第二签名单元,用于使用所述内置证书的私钥对所述第二摘要进行数字签名,得到所述第二数字签名。
所述第三生成模块包括第三封装单元、第三摘要单元和第三签名单元;
所述第三封装单元,用于按照所述预设格式对当前数字证书进行封装,得到第七数据;按照所述预设格式对第三数字签名进行封装,得到第八数据;按照所述预设格式对所述第二申请包、所述第七数据和所述第八数据进行封装,得到所述第三申请包;
所述第三摘要单元,用于根据所述摘要算法对所述第二申请包进行计算,得到第三摘要;
所述第三签名单元,用于使用当前数字证书的私钥对所述第三摘要进行数字签名,得到所述第三数字签名。
所述装置还包括查找模块,用于根据所述主机发送的命令在所述USB key内部的预置算法集合中查找对应的摘要算法。
本发明与现有技术相比,具有以下优点
申请和更新USB key数字证书用到的申请包均由USB key组织完成,提高数字证书下发的安全 性。


图I是本发明实施例I提供的一种下载数字证书的方法流程图2是本发明实施例2提供的一种下载数字证书的方法流程图3是本发明实施例3提供的一种下载数字证书的装置的方框示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例I
本发明的实施例I提供一种下载数字证书的方法,如图I所示,USB key已与主机连接,包括
步骤101 USB Key等待接收主机发送的命令;
步骤102 USB Key判断命令类型,若是生成密钥的命令则执行步骤103,若是生成第一申请包的命令则执行步骤105,若是存储数字证书命令则执行步骤108,若是生成第三申请包的命令则执行步骤109,若是其他命令则执行步骤114,若是非法命令则执行步骤 115 ;
步骤103 USB Key判断所要生成的密钥对应的标志位是否置位,是则返回密钥已经存在的信息,执行步骤101,否则USB Key生成密钥,执行步骤104 ;
步骤104 USB Key将生成的密钥所对应的标志位置位,返回步骤101 ;
步骤105 USB Key判断指定密钥所对应的标志位是否置位,是则执行步骤106,否则返回错误信息,执行步骤101 ;
步骤106 USB Key使用指定密钥的私钥对由指定密钥的公钥、生成指定密钥的算法标识、第一申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包,将指定密钥所对应的标志位复位;
本实施例中,该步骤中的生成指定密钥的算法标识预先存储在USB Key中;
本实施例中,该步骤中的第一申请包属性字符串预先设置在USB Key中;
本实施例中,该步骤中的版本由主机指定,通过生成第一申请包的命令发送给USB Key ;
本实施例中,该步骤中的标识信息存储在生成第一申请包命令的数据域中,由主机发送给USB Key ;
步骤107 USB key将第一申请包返回给主机,返回步骤101 ;
步骤108 USB Key根据存储数字证书命令中保存证书数据的偏移,将证书数据存入相应位置,并记录该位置和密钥标识,返回步骤101 ;
步骤109 USB Key判断指定密钥所对应的标志位是否置位,是则执行步骤110,否则返回错误信息,执行步 骤101 ;
步骤110 USB Key使用指定密钥的私钥对由指定密钥的公钥、生成指定密钥的算法标识、第三申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包;
本实施例中,该步骤中的生成指定密钥的算法标识预先存储在USB Key中;
本实施例中,该步骤中的第三申请包属性字符串预先设置在USB Key中;
本实施例中,该步骤中的版本由主机指定,通过生成第三申请包的命令发送给USB Key ;
本实施例中,该步骤中的获取标识信息的方式可以是主机将标识信息存储在生成第三申请包命令的数据域中,发送给USB Key ;除此之外,优选地,获取标识信息的方式还可以是USB Key根据存储的当前数字证书的位置和密钥标识检索到当前数字证书,从当前数字证书中解析出标识信息;
步骤111:USB Key使用内置证书的私钥对由内置证书和第一申请包组成的第二数据包进行数字签名,并生成第二申请包;
步骤112 USB Key使用当前数字证书的私钥对由第二申请包和当前数字证书组成的第三数据包进行数字签名,并生成第三申请包,将指定密钥所对应的标志位复位;
步骤113 USB key将第三申请包返回给主机,返回步骤101 ;
步骤114 USB key执行相应命令,将执行结果返回给主机,返回步骤101 ;
步骤115 USB key返回错误信息给主机,返回步骤101 ;
本实施例中,第一申请包中的内容只有版本和标识信息是由主机发送给USB key 的,第三申请包中的内容只有版本是由主机发送给USB key的,其余的内容如算法、指定密钥、内置证书、当前数字证书,都是在USB key内部生成或查找得到的,提高了数字证书下发的安全性。
实施例2
本发明的实施例2提供一种下载数字证书的方法,如图2所示,USB key已与主机连接,包括
步骤201 USB Key等待接收主机发送的命令;
步骤202:USB Key判断命令类型,若是生成密钥的命令则执行步骤203,若是生成 PKCS#10申请包的命令则执行步骤207,若是存储数字证书命令则执行步骤216,若是生成 PKCS#7申请包的命令则执行步骤217,若是其他命令则执行步骤234,若是非法命令则执行步骤235 ;
本实施例中,命令包括命令头和数据域,USB Key根据命令头判断命令类型,例如, 生成密钥命令的命令头为0046XX00,生成PKCS#10申请包命令的命令头为004A0000,生成 PKCS#7申请包命令的命令头为004A0100 ;本实施例中,存储数字证书命令包括保存证书数据的偏移,即证书的位置,命令长度,密钥标识和证书数据;
步骤203 USB Key判断所要生成的密钥对应的标志位是否为1,是则执行步骤 204,否则执行步骤205 ;
本实施例中,密钥标志位在出厂时清空;
本实施例中,USB Key根据生成密钥命令的数据域中的密钥ID和密钥类型查找将要生成的密钥对应的标志位;
步骤204 USB Key返回密钥已经存在的信息,执行步骤201 ;
步骤205 USB Key按照预设算法生成密钥;
本实施例中,根据生成密钥命令的命令头中第5、6字节的内容确定预设算法的类型;例如,00表示按照RSA算法生成密钥,01表示按照SM2算法生成密钥;除此之外,USB Key也可以按照其他算法生成密钥;
本实施例中,预设算法为RSA算法;
步骤206 USB Key将生成的密钥所对应的标志位置1,返回步骤201 ;
步骤207 USB Key判断指定密钥所对应的标志位是否为1,是则执行步骤209,否则执行步骤208 ;
具体地,USB Key根据生成PKCS#10申请包的命令中的密钥ID和密钥类型查找指定 钥和指定 钥所对应的标志位;
主机发送的生成PKCS#10申请包的命令包括命令类型、命令内容、命令参数、命令长度、版本、密钥ID、密钥类型、摘要算法名称、标识信息;
步骤208 USB Key返回错误信息,执行步骤201 ;
步骤209 USB key按照预设格式对指定密钥的公钥进行封装,得到第一数据;
本实施例中,预设格式为TLV格式;例如,
02 81 81 00 D6 F8 7B 45 4F 8F 66 15 IA A4 "N;
例如,本实施例中,得到的第一数据为
03818D00//公钥
308189//N和E (大序)
02818100D6F87B454F8F6615IAA4"N
66F42742885F423F09197309763B08 04
4003FA5CA79ADE21DB7A2FCA51D7BF 38
37C4AAC483IEFOOF8BDC57A7F2FAC2 8612
AA 81 9D 83 84 7B 19 93 47 ED 6C FD 82 24 41 D658 BI BO 7A 8C E4 7A 31 BC E9 44 86 7C CD 26 BA5C D5 56 B9 53 CB 75 82 59 AB EB 68 63 02 47 719D 95 8E EF DF 57 Fl D3 AO 54 53 7A 59 5D C5 8513 BE FF 64 A5 7D02 03 01 00 01 //E步骤210:USB key按照预设格式对USB key中生成指定密钥的算法标识、PKCS#10申请包属性字符串、版本和标识信息进行封装,得到第二数据;
本实施例中,该步骤中的生成指定密钥的算法标识预先存储在USB Key中;本实施例中,该步骤中的PKCS#10申请包属性字符串预先设置在USB Key ;本实施例中,该步骤中的版本由主机指定,通过生成PKCS#10申请包的命令发送给 USBKey ;本实施例中,该步骤中的标识信息存储在生成PKCS#10申请包命令的数据域中,由主机发送给USB Key ;例如,本实施例中,得到的第二数据为30 81 C6 //请求信息,begin02 01 00 //版本30 ID 31 IB 30 19 06 03 55 04 03 13 12 36 31 30 31 32 30 31 39 58 3132 3334 35 36 37 38 39 //"CN =,c = · · ·,ο =…"30 81 9F30 OD 06 09 2Α 86 48 86 F7 OD 01 01 01 05 00 //公钥算法标识,RSAAO 00 //属性(空)//end步骤211 USB key按照预设格式对第一数据和第二数据进行封装,得到第三数据;例如,本实施例中,得到的第三数据为30 81 C6 //请求信息,begin02 01 00 //版本30 ID 31 IB 30 19 06 03 55 04 03 13 12 36 31 30 31 32 30 31 39 58 3132 3334 35 36 37 38 39 //"CN =,c = · · ·,ο =…"30 81 9F30 OD 06 09 2Α 86 48 86 F7 OD 01 01 01 05 00 //公钥算法标识,RSA03 81 8D 00 //公钥30 81 89 //N 和 E (大序)02 81 81 00 D6 F8 7Β 45 4F 8F 66 15 IA Α4 "N66 F4 27 42 88 5F 42 3F 09 19 73 09 76 3Β 08 0440 03 FA 5C Α7 9Α DE 21 DB 7Α 2F CA 51 D7 BF 3837 C4 AA C4 83 IE FO OF 8Β DC 57 Α7 F2 FA C2 86AA 81 9D 83 84 7Β 19 93 47 ED 6C FD 82 24 41 D658 BI BO 7Α 8C Ε4 7Α 31 BC Ε9 44 86 7C CD 26 BA
5C D5 56 B9 53 CB 75 82 59 AB EB 68 63 02 47 719D 95 8E EF DF 57 Fl D3 AO 54 53 7A 59 5D C5 8513 BE FF 64 A5 7D02 03 01 00 01 //EAO 00 //属性(空)//end步骤212 USB key根据摘要算法对第三数据进行计算,得到第一摘要;本实施例中,摘要算法为HASH算法,包括MD5、SHA-I等;优选地,本实施例中的摘要算法为SHA-I ;本实施例中,摘要算法可以是USB Key中内置的固定算法,也可以根据主机发送的命令在USB key内部的预置算法集合中查找对应的算法;
步骤213 USB key使用指定密钥的私钥对第一摘要进行数字签名,得到第一数字签名,并按照预设格式对第一数字签名进行封装,得到第四数据;例如,本实施例中,得到的第四数据为30 OD //签名算法,begin06 09 2A 86 48 86 F7 OD 01 01 05 05 00 //RSAwithSHAl //数字签名算法end03 81 81 00 //(签名值,私钥对请求信息摘要(按照算法要求填充padding)的签名)begin14 El 62 68 9E 94 35 2C CO 10 OC D6 28 83 4F 65El C9 D4 34 37 84 C3 37 41 61 F2 3B 5C 87 3F 655A 37 75 F9 8C 43 CC 9C 70 7A B5 41 8D 9E 8C 2907 26 35 FE 32 E3 DF C5 26 7E 26 9D 89 77 AA 16ID OD CE 9C 88 73 10 AC B3 B2 BI EC A2 C6 24 ODB6 77 5F D6 IF 8A DC 19 B4 28 80 B2 4F 46 44 6433 EB 48 F7 6A 65 3F F3 E6 40 F7 19 15 BE AB DFDD BF Al AB 65 9B 3E 03 E4 63 7C 18 Al DD C9 EB //end步骤214 USB key按照预设格式对第三数据和第四数据进行封装,得到PKCS#10申请包,将指定密钥所对应的标志位清O ;具体地,USB key按照以下格式编码形成PKCS#10申请包30 82 01 5C30 81 C6 //请求信息,begin02 01 00 //版本30 ID 31 IB 30 19 06 03 55 04 03 13 12 36 31 30 31 32 30 31 39 58 3132 3334 35 36 37 38 39 //"CN =,c = · · ·,ο =…"30 81 9F30 OD 06 09 2Α 86 48 86 F7 OD 01 01 01 05 00 //公钥算法标识,RSA03 81 8D 00 // 公钥30 81 89 //N 和 E (大序)02 81 81 00 D6 F8 7Β 45 4F 8F 66 15 IA Α4 //N66 F4 27 42 88 5F 42 3F 09 19 73 09 76 3Β 08 04
40 03 FA 5C A7 9A DE 21 DB 7A 2F CA 51 D7 BF 3837 C4 AA C4 83 IE FO OF 8B DC 57 A7 F2 FA C2 86AA 81 9D 83 84 7B 19 93 47 ED 6C FD 82 24 41 D658 BI BO 7A 8C E4 7A 31 BC E9 44 86 7C CD 26 BA5C D5 56 B9 53 CB 75 82 59 AB EB 68 63 02 47 719D 95 8E EF DF 57 Fl D3 AO 54 53 7A 59 5D C5 85 13 BE FF 64 A5 7D02 03 Ol OO Ol //EAO OO //属性(空)//end30 OD //签名算法,begin06 09 2k 86 48 86 F7 OD 01 01 05 05 00 //RSAwithSHAl //数字签名算法end03 81 81 00 //(签名值,私钥对请求信息摘要(按照算法要求填充padding)的签名)begin14 El 62 68 9E 94 35 2C CO 10 OC D6 28 83 4F 65El C9 D4 34 37 84 C3 37 41 61 F2 3B 5C 87 3F 655A 37 75 F9 8C 43 CC 9C 70 7A B5 41 8D 9E 8C 2907 26 35 FE 32 E3 DF C5 26 7E 26 9D 89 77 AA 16ID OD CE 9C 88 73 10 AC B3 B2 BI EC A2 C6 24 ODB6 77 5F D6 IF 8A DC 19 B4 28 80 B2 4F 46 44 6433 EB 48 F7 6A 65 3F F3 E6 40 F7 19 15 BE AB DFDD BF Al AB 65 9B 3E 03 E4 63 7C 18 Al DD C9 EB //end步骤215 USB key将PKCS#10申请包返回给主机,返回步骤201 ;步骤216 USB Key根据存储数字证书命令中保存证书数据的偏移,将证书数据存入相应位置,并记录该位置和密钥标识,返回步骤201 ;步骤217 USB Key判断指定密钥所对应的标志位是否为1,是则执行步骤219,否则执行步骤218 ;具体地,USB Key根据生成PKCS#7申请包的命令中的密钥ID和密钥类型查找指定S钥和指定S钥所对应的标志位;本实施例中,主机发送的生成PKCS#7申请包的命令包括命令类型、命令内容、命令参数、命令长度、版本、密钥ID、密钥类型、摘要算法名称、标识信息;步骤218 USB Key返回错误信息,执行步骤201 ;步骤219 USB key按照预设格式对指定密钥的公钥进行封装,得到第一数据;步骤220 USB key按照预设格式对USB key中生成指定密钥的算法标识、PKCS#7申请包属性字符串、版本和标识信息进行封装,得到第二数据;本实施例中,该步骤中的生成指定密钥的算法标识预先存储在USB Key中;本实施例中,该步骤中的PKCS#7申请包属性字符串预先设置在USB Key ;本实施例中,该步骤中的版本由主机指定,通过生成PKCS#7申请包的命令发送给USB Key ;
优选地,本实施例中,该步骤中的获取标识信息的方式可以是主机将标识信息存储在生成PKCS#7申请包命令的数据域中,发送给USB Key ;除此之外,获取标识信息的方式还可以是,USB Key根据存储的当前数字证书的位置和密钥标识检索到当前数字证书,从当前数字证书中解析出标识信息;步骤221 USB key按照预设格式对第一数据和第二数据进行封装,得到第三数据;步骤222 USB key根据摘要算法对第三数据进行计算,得到第一摘要;本实施例中,摘要算法为HASH算法,包括MD5、SHA-I等;优选地,本实施例中的摘要算法为SHA-I ;本实施例中,摘要算法可以是USB Key中内置的固定算法,也可以根据主机发送的命令在USB key内部的预置算法集合中查找对应的算法;步骤223 USB key使用指定密钥的私钥对第一摘要进行数字签名,得到第一数字签名,并按照预设格式对第一数字签名进行封装,得到第四数据; 步骤224 USB key按照预设格式对第三数据和第四数据进行封装,得到PKCS#10申请包;具体地,本实施例中的PKCS#10申请包的格式与步骤214中PKCS#10申请包的格式相同,在此不再赘述;例如,本实施例中,得到的PKCS#10申请包如下30 82 01 60 (sequence 160 byte)06 09 2k 86 48 86 F7 OD 01 07 01 (data)//数据类型AO 82 01 51 (OPTIONAL 151 byte) //数据原文04 82 01 4D (oct string 14d byte) //8 位组数据格式30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 3030 34 31 30 30 31 30 31 30 30 30 30 30 30 30 3030 30 30 30 30 30 30 30 30 30 30 30 30 30 30 3030 30 30 30 30 30 30 32 37 35 53 4E 30 30 30 3031 30 BD BB D2 D7 C3 FB B3 C6 A3 BA 53 56 30 3030 30 31 35 B8 F6 C8 CB DO C5 CF A2 CE AC BB A420 09 OA 53 4E 30 31 30 30 30 36 DO D5 C3 FB A3BA 53 56 30 31 30 30 30 36 CD F5 BA A3 B2 A8 534E 30 32 30 30 30 38 BF CD BB A7 BA C5 A3 BA 5356 30 32 30 30 31 36 31 36 31 32 35 30 37 34 3032 38 36 38 37 35 38 53 4E 30 33 30 30 31 30 BDBB D2 D7 CA BI BC E4 A3 BA 53 56 30 33 30 30 3139 32 30 31 32 2D 30 33 2D 33 30 20 31 30 3A 3439 3A 34 37 44 4E 30 30 30 30 31 31 41 63 74 696F 6E 4E 61 6D 65 3A 44 56 30 30 30 30 31 39 4164 6D 43 75 73 74 42 61 73 65 49 6E 66 6F 72 4163 74 44 4E 30 31 30 30 30 37 6E 43 6E 4E 61 6D65 44 56 30 31 30 30 30 36 CD F5 BA A3 B2 A8 44
4E 30 32 30 30 31 34 63 75 73 74 6F 6D 65 72 6E75 6D 62 65 72 44 56 30 32 30 30 31 36 31 36 3132 35 30 37 34 30 32 38 36 38 37 35 38 (原文)//原文结束步骤225 USB key按照预设格式对内置证书进行封装,得到第五数据;本实施例中,内置证书在生产过程中预置在USB key内部;例如,本实施例中,得到的第五数据如下AO 82 02 7F //证书集开始30 82 02 7B //具体证书开始
30 82 01 E4AO 03 02 01 02 (证书版本)02 OA 7B 97 CA 10 27 5A 05 A8 07 IA(issuerAndSerialNumber)30 OD06 09 2A 86 48 86 F7 OD 01 01 05 05 00 (null)(shalwithRSAEncryption)30 IC (主题)31 OC 30 OA 06 03 55 04 03 13 03 41 42 43 (abc)31 OC 30 OA 06 03 55 04 OA (organizationName) 1303 (可打印字符串)41 42 43 (abc)30 IE (you xiao qi)17 OD (utc time)31 32 30 33 32 37 30 37 30 32 3537 5A17 OD (utc time)31 33 30 34 30 38 30 34 35 39 3134 5A30 4A (ban fa zhe)31 IE 30 IC 06 03 55 04 03 13 15 31 32 30 30 3834 3635 35 35 38 2E 30 30 30 30 2E 30 3032 37 31 IA 30 18 06 03 55 04 OB 13 11 50 65 72 73 6F 6E 61 6C 2043 7573 74 6F 6D 65 7231 OC 30 OA 06 03 55 04 OA 13 03 41 42 4330 81 9F (证书公钥)30 OD06 092A 86 48 86 F7 OD 01 01 01 (rsaEncryption )05 0003 81 8D (bit string下面的00表不没有补位)00 30 81 8902 81 81 00 DO 25 89 74 43 47 4B C6 E7 14 646C BE4权利要求
1.一种下载数字证书的方法,其特征在于,所述方法包括 步骤SI USB Key等待接收主机发送的命令; 步骤S2 :所述USB Key判断所述命令类型,若是生成密钥的命令则执行步骤S3,若是生成第一申请包的命令则执行步骤S6,若是存储数字证书命令则执行步骤S9,若是生成第三申请包的命令则执行步骤S10,若是其他命令则执行步骤S15,若是非法命令则执行步骤S16 ; 步骤S3 :所述USB Key判断将要生成的密钥对应的标志位是否置位,是则返回密钥已经存在的信息给所述主机,执行步骤SI,否则执行步骤S4 ; 步骤S4 :所述USB Key生成密钥; 步骤S5 :所述USB Key将所述生成的密钥所对应的标志位置位,返回步骤SI ; 步骤S6 :所述USB Key判断指定密钥所对应的标志位是否置位,是则执行步骤S7,否则返回错误信息,执行步骤SI ; 步骤S7 :所述USB Key使用所述指定密钥的私钥对由所述指定密钥的公钥、生成所述指定密钥的算法标识、第一申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包,将所述指定密钥所对应的标志位复位; 步骤S8 :所述USB key将所述第一申请包返回给所述主机,返回步骤SI ; 步骤S9 :所述USB Key将证书数据存入相应位置,并记录所述位置和密钥标识,返回步骤SI ; 步骤SlO :所述USB Key判断指定密钥所对应的标志位是否为置位,是则执行步骤S11,否则返回错误信息,执行步骤SI ; 步骤Sll :所述USB Key使用所述指定密钥的私钥对由所述指定密钥的公钥、生成指定密钥的算法标识、第三申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包; 步骤S12 :所述USB Key使用内置证书的私钥对由所述内置证书和所述第一申请包组成的第二数据包进行数字签名,并生成第二申请包; 步骤S13 :所述USB Key使用当前数字证书的私钥对由所述第二申请包和当前数字证书组成的第三数据包进行数字签名,并生成第三申请包,将所述指定密钥所对应的标志位复位; 步骤S14:所述USB key将所述第三申请包返回给所述主机,返回步骤SI ; 步骤S15 :所述USB key执行相应命令,将执行结果返回给所述主机,返回步骤SI ; 步骤S16 :所述USB key返回错误信息给所述主机,返回步骤SI。
2.根据权利要求I所述的方法,其特征在于,所述步骤S7中,所述生成指定密钥的算法标识预先存储在USB Key中,所述第一申请包属性字符串预先设置在所述USB Key中;所述版本由所述主机指定,通过所述生成第一申请包的命令发送给所述USB Key ;所述标识信息存储在所述生成第一申请包命令中,由所述主机发送给所述USB Key0
3.根据权利要求2所述的方法,其特征在于,所述步骤S7包括 步骤S7-1 :所述USB key按照预设格式对所述指定密钥的公钥进行封装,得到第一数据; 步骤S7-2:所述USB key按照所述预设格式对所述USB key中所述生成指定密钥的算法标识、所述第一申请包属性字符串、所述版本和所述标识信息进行封装,得到第二数据;步骤S7-3 :所述USB key按照所述预设格式对所述第一数据和所述第二数据进行封装,得到第三数据; 步骤S7-4 :所述USB key根据摘要算法对所述第三数据进行计算,得到第一摘要;步骤S7-5 :所述USB key使用所述指定密钥的私钥对所述第一摘要进行数字签名,得到第一数字签名,并按照所述预设格式对所述第一数字签名进行封装,得到第四数据; 步骤S7-6 :所述USB key按照所述预设格式对所述第三数据和所述第四数据进行封装,得到所述第一申请包,将所述指定密钥所对应的标志位复位。
4.根据权利要求I所述的方法,其特征在于,所述步骤Sll中,所述生成指定密钥的算法标识预先存储在USB Key中,所述第三申请包属性字符串预先设置在所述USB Key中;所述版本由所述主机指定,通过所述生成第三申请包的命令发送给所述USB Key ;所述标识信息的获取方式可以是所述主机将所述标识信息存储在所述生成第三申请包命令中,发送给所述USB Key或所述USB Key根据存储的当前数字证书的位置检索到当前数字证书,从当前数字证书中解析出所述标识信息。
5.根据权利要求4所述的方法,其特征在于,所述步骤Sll包括 步骤Sll-I :所述USB key按照预设格式对所述指定密钥的公钥进行封装,得到第一数据; 步骤S11-2 :所述USB key按照所述预设格式对所述USB key中所述生成指定密钥的算法标识、所述第三申请包属性字符串、所述版本和所述标识信息进行封装,得到第二数据;步骤S11-3 :所述USB key按照所述预设格式对所述第一数据和所述第二数据进行封装,得到第三数据; 步骤S11-4:所述USB key根据摘要算法对所述第三数据进行计算,得到第一摘要;步骤S11-5 :所述USB key使用所述指定密钥的私钥对所述第一摘要进行数字签名,得到第一数字签名,并按照所述预设格式对所述第一数字签名进行封装,得到第四数据; 步骤SI 1-6 :所述USB key按照所述预设格式对所述第三数据和所述第四数据进行封装,得到所述第一申请包。
6.根据权利要求5所述的方法,其特征在于,所述步骤S12包括 步骤S12-1 :所述USB key按照所述预设格式对所述内置证书进行封装,得到第五数据; 步骤S12-2 :所述USB key根据所述摘要算法对所述第一申请包进行计算,得到第二摘要; 步骤S12-3 :所述USB key使用所述内置证书的私钥对所述第二摘要进行数字签名,得到第二数字签名,并按照所述预设格式对所述第二数字签名进行封装,得到第六数据; 步骤S12-4 :所述USB key按照所述预设格式对所述第一申请包、所述第五数据和所述第六数据进行封装,得到所述第二申请包。
7.根据权利要求I或6所述的方法,其特征在于,所述内置证书在生产过程中预置在所述USB key内部。
8.根据权利要求6所述的方法,其特征在于,所述步骤S13包括 步骤S13-1 :所述USB key按照所述预设格式对当前数字证书进行封装,得到第七数据; 步骤S13-2 :所述USB key根据所述摘要算法对所述第二申请包进行计算,得到第三摘要; 步骤S13-3 :所述USB key使用当前数字证书的私钥对所述第三摘要进行数字签名,得到第三数字签名,并按照所述预设格式对所述第三数字签名进行封装,得到第八数据; 步骤S13-4 :所述USB key按照所述预设格式对所述第二申请包、所述第七数据和所述第八数据进行封装,得到所述第三申请包,将所述指定密钥所对应的标志位复位。
9.根据权利要求3或5或6或8所述的方法,其特征在于,所述摘要算法可以是所述USB Key中内置的固定算法,或根据所述主机发送的命令在所述USB key内部的预置算法集合中查找对应的算法。
10.一种下载数字证书的装置,其特征在于,所述装置包括接收模块、第一判断模块、第二判断模块、密钥生成模块、置位模块、第三判断模块、第一生成模块、第二生成模块、第三生成模块、复位模块、执行模块、发送模块和存储证书模块; 所述接收模块,用于接收主机发送的命令; 所述第一判断模块,用于判断所述命令类型; 所述第二判断模块,用于判断将要生成的密钥对应的标志位是否置位;· 所述密钥生成模块,用于生成密钥; 所述置位模块,用于将所述生成的密钥所对应的标志位置位; 所述第三判断模块,用于判断指定密钥所对应的标志位是否置位; 所述第一生成模块,用于使用所述指定密钥的私钥对由所述指定密钥的公钥、生成所述指定密钥的算法标识、申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包; 所述第二生成模块,用于使用内置证书的私钥对由所述内置证书和所述第一申请包组成的第二数据包进行数字签名,并生成第二申请包; 所述第三生成模块,使用当前数字证书的私钥对由所述第二申请包和当前数字证书组成的第三数据包进行数字签名,并生成第三申请包; 所述复位模块,用于将所述指定密钥所对应的标志位复位; 所述执行模块,用于执行除生成密钥的命令、生成第一申请包命令、存储数字证书命令和生成第二申请包命令之外的其他命令; 所述发送模块,用于将所述第一申请包、所述第三申请包、执行结果、所述密钥已经存在的信息和错误信息返回给所述主机; 所述存储证书模块,用于根据存储数字证书命令中保存证书数据的偏移,将所述证书数据存入相应位置,并记录所述位置和密钥标识。
11.根据权利要求10所述的装置,其特征在于,所述第一生成模块包括第一封装单元、第一摘要单元和第一签名单元; 所述第一封装单元,用于按照预设格式对所述指定密钥的公钥进行封装,得到第一数据;按照所述预设格式对所述USB key中所述生成指定密钥的算法标识、所述申请包属性字符串、所述版本和所述标识信息进行封装,得到第二数据;按照所述预设格式对所述第一数据和所述第二数据进行封装,得到第三数据;按照所述预设格式对第一数字签名进行封装,得到第四数据;按照所述预设格式对所述第三数据和所述第四数据进行封装,得到所述第一申请包; 所述第一摘要单元,用于根据摘要算法对所述第三数据进行计算,得到第一摘要; 所述第一签名单元,用于使用所述指定密钥的私钥对所述第一摘要进行数字签名,得到所述第一数字签名。
12.根据权利要求11所述的装置,其特征在于,所述第一生成模块还包括查找单元和解析单元; 所述查找单元,用于根据存储的当前数字证书的位置和所述密钥标识查找当前数字证书; 所述解析单元,用于从所述找到的当前数字证书中解析出所述标识信息。
13.根据权利要求11或12所述的装置,其特征在于,所述第二生成模块包括第二封装单元、第二摘要单元和第二签名单元; 所述第二封装单元,用于按照所述预设格式对所述内置证书进行封装,得到第五数据;按照所述预设格式对第二数字签名进行封装,得到第六数据;按照所述预设格式对所述第一申请包、所述第五数据和所述第六数据进行封装,得到所述第二申请包; 所述第二摘要单元,用于根据所述摘要算法对所述第一申请包进行计算,得到第二摘要; 所述第二签名单元,用于使用所述内置证书的私钥对所述第二摘要进行数字签名,得到所述第二数字签名。
14.根据权利要求13所述的装置,其特征在于,所述第三生成模块包括第三封装单元、第三摘要单元和第三签名单元; 所述第三封装单元,用于按照所述预设格式对当前数字证书进行封装,得到第七数据;按照所述预设格式对第三数字签名进行封装,得到第八数据;按照所述预设格式对所述第二申请包、所述第七数据和所述第八数据进行封装,得到所述第三申请包; 所述第三摘要单元,用于根据所述摘要算法对所述第二申请包进行计算,得到第三摘要; 所述第三签名单元,用于使用当前数字证书的私钥对所述第三摘要进行数字签名,得到所述第三数字签名。
15.根据权利要求14所述的装置,其特征在于,所述装置还包括查找模块,用于根据所述主机发送的命令在所述USB key内部的预置算法集合中查找对应的摘要算法。
全文摘要
本发明公开一种下载数字证书的方法和装置,该方法包括USB Key判断将要生成的密钥对应的标志位是否置位,是则返回密钥已经存在的信息,否则生成密钥,将密钥所对应的标志位置位,使用指定密钥的私钥对第一数据包进行数字签名,并生成第一申请包,将指定密钥所对应的标志位复位,将第一申请包返回给主机,将证书数据存入相应位置,并记录位置和密钥标识,使用指定密钥的私钥对第一数据包进行数字签名,并生成第一申请包,使用内置证书的私钥对第二数据包进行数字签名,并生成第二申请包,使用当前数字证书的私钥对第三数据包进行数字签名,并生成第三申请包,将指定密钥所对应的标志位复位,将第三申请包返回给主机。
文档编号H04L29/06GK102932343SQ20121041718
公开日2013年2月13日 申请日期2012年10月26日 优先权日2012年10月26日
发明者陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1