CN102932343A - 一种下载数字证书的方法和装置 - Google Patents

一种下载数字证书的方法和装置 Download PDF

Info

Publication number
CN102932343A
CN102932343A CN2012104171838A CN201210417183A CN102932343A CN 102932343 A CN102932343 A CN 102932343A CN 2012104171838 A CN2012104171838 A CN 2012104171838A CN 201210417183 A CN201210417183 A CN 201210417183A CN 102932343 A CN102932343 A CN 102932343A
Authority
CN
China
Prior art keywords
key
data
usb key
application bag
obtains
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
CN2012104171838A
Other languages
English (en)
Other versions
CN102932343B (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 CN201210417183.8A priority Critical patent/CN102932343B/zh
Publication of CN102932343A publication Critical patent/CN102932343A/zh
Application granted granted Critical
Publication of CN102932343B publication Critical patent/CN102932343B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开一种下载数字证书的方法和装置,该方法包括:USB Key判断将要生成的密钥对应的标志位是否置位,是则返回密钥已经存在的信息,否则生成密钥,将密钥所对应的标志位置位,使用指定密钥的私钥对第一数据包进行数字签名,并生成第一申请包,将指定密钥所对应的标志位复位,将第一申请包返回给主机,将证书数据存入相应位置,并记录位置和密钥标识,使用指定密钥的私钥对第一数据包进行数字签名,并生成第一申请包,使用内置证书的私钥对第二数据包进行数字签名,并生成第二申请包,使用当前数字证书的私钥对第三数据包进行数字签名,并生成第三申请包,将指定密钥所对应的标志位复位,将第三申请包返回给主机。

Description

一种下载数字证书的方法和装置
技术领域
本发明涉及信息安全领域,尤其涉及一种下载数字证书的方法和装置。
背景技术
数字证书就是互联网通讯中用来标志和证明网络通信双方身份的数字信息文件,包含公开密钥拥有者信息以及公开密钥的文件。它由一个权威机构-----CA(Certificate Authority,证书授权)中心发行,人们可以在网上用它来识别对方的身份。以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性。
现有技术中,申请下发和更新UEB key的数字证书的申请包由主机来组织完成,在这个过程中,他人可以通过主机来修改申请包中的数据,导致CA不能对真正的USB key下发数字证书,使USB key数字证书的下发过程存在安全隐患。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种下载数字证书的方法和装置,提高了下载数字证书的安全性。
一种下载数字证书的方法,包括:
步骤S1:USB Key等待接收主机发送的命令;
步骤S2:所述USB Key判断所述命令类型,若是生成密钥的命令则执行步骤S3,若是生成第一申请包的命令则执行步骤S6,若是存储数字证书命令则执行步骤S9,若是生成第三申请包的命令则执行步骤S10,若是其他命令则执行步骤S15,若是非法命令则执行步骤S16;
步骤S3:所述USB Key判断将要生成的密钥对应的标志位是否置位,是则返回密钥已经存在的信息给所述主机,执行步骤S1,否则执行步骤S4;
步骤S4:所述USB Key生成密钥;
步骤S5:所述USB Key将所述生成的密钥所对应的标志位置位,返回步骤S1;
步骤S6:所述USB Key判断指定密钥所对应的标志位是否置位,是则执行步骤S7,否则返回错误信息,执行步骤S1;
步骤S7:所述USB Key使用所述指定密钥的私钥对由所述指定密钥的公钥、生成所述指定密钥的算法标识、第一申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包,将所述指定密钥所对应的标志位复位;
步骤S8:所述USB key将所述第一申请包返回给所述主机,返回步骤S1;
步骤S9:所述USB Key将证书数据存入相应位置,并记录所述位置和密钥标识,返回步骤S1;
步骤S10:所述USB Key判断指定密钥所对应的标志位是否为置位,是则执行步骤S11,否则返回错误信息,执行步骤S1;
步骤S11:所述USB Key使用所述指定密钥的私钥对由所述指定密钥的公钥、生成指定密钥的算法标识、第三申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包;
步骤S12:所述USB Key使用内置证书的私钥对由所述内置证书和所述第一申请包组成的第二数据包进行数字签名,并生成第二申请包;
步骤S13:所述USB Key使用当前数字证书的私钥对由所述第二申请包和当前数字证书组成的第三数据包进行数字签名,并生成第三申请包,将所述指定密钥所对应的标志位复位;
步骤S14:所述USB key将所述第三申请包返回给所述主机,返回步骤S1;
步骤S15:所述USB key执行相应命令,将执行结果返回给所述主机,返回步骤S1;
步骤S16:所述USB key返回错误信息给所述主机,返回步骤S1。
所述步骤S7中,所述生成指定密钥的算法标识预先存储在USB Key中,所述第一申请包属性字符串预先设置在所述USB Key中;所述版本由所述主机指定,通过所述生成第一申请包的命令发送给所述USB Key;所述标识信息存储在所述生成第一申请包命令中,由所述主机发送给所述USB Key。
所述步骤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按照所述预设格式对所述第三数据和所述第四数据进行封装,得到所述第一申请包,将所述指定密钥所对应的标志位复位。
所述步骤S11中,所述生成指定密钥的算法标识预先存储在USB Key中,所述第三申请包属性字符串预先设置在所述USB Key中;所述版本由所述主机指定,通过所述生成第三申请包的命令发送给所述USB Key;所述标识信息的获取方式可以是:所述主机将所述标识信息存储在所述生成第三申请包命令中,发送给所述USB Key或所述USB Key根据存储的当前数字证书的位置检索到当前数字证书,从当前数字证书中解析出所述标识信息。
所述步骤S11包括:
步骤S11-1:所述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中所述生成指定密钥的算法标识、所述申请包属性字符串、所述版本和所述标识信息进行封装,得到第二数据;按照所述预设格式对所述第一数据和所述第二数据进行封装,得到第三数据;按照所述预设格式对第一数字签名进行封装,得到第四数据;按照所述预设格式对所述第三数据和所述第四数据进行封装,得到所述第一申请包;
所述第一摘要单元,用于根据摘要算法对所述第三数据进行计算,得到第一摘要;
所述第一签名单元,用于使用所述指定密钥的私钥对所述第一摘要进行数字签名,得到所述第一数字签名。
所述第一生成模块还包括查找单元和解析单元;
所述查找单元,用于根据存储的当前数字证书的位置和所述密钥标识查找当前数字证书;
所述解析单元,用于从所述找到的当前数字证书中解析出所述标识信息。
所述第二生成模块包括第二封装单元、第二摘要单元和第二签名单元;
所述第二封装单元,用于按照所述预设格式对所述内置证书进行封装,得到第五数据;按照所述预设格式对第二数字签名进行封装,得到第六数据;按照所述预设格式对所述第一申请包、所述第五数据和所述第六数据进行封装,得到所述第二申请包;
所述第二摘要单元,用于根据所述摘要算法对所述第一申请包进行计算,得到第二摘要;
所述第二签名单元,用于使用所述内置证书的私钥对所述第二摘要进行数字签名,得到所述第二数字签名。
所述第三生成模块包括第三封装单元、第三摘要单元和第三签名单元;
所述第三封装单元,用于按照所述预设格式对当前数字证书进行封装,得到第七数据;按照所述预设格式对第三数字签名进行封装,得到第八数据;按照所述预设格式对所述第二申请包、所述第七数据和所述第八数据进行封装,得到所述第三申请包;
所述第三摘要单元,用于根据所述摘要算法对所述第二申请包进行计算,得到第三摘要;
所述第三签名单元,用于使用当前数字证书的私钥对所述第三摘要进行数字签名,得到所述第三数字签名。
所述装置还包括查找模块,用于根据所述主机发送的命令在所述USBkey内部的预置算法集合中查找对应的摘要算法。
本发明与现有技术相比,具有以下优点:
申请和更新USB key数字证书用到的申请包均由USB key组织完成,提高数字证书下发的安全性。
附图说明
图1是本发明实施例1提供的一种下载数字证书的方法流程图;
图2是本发明实施例2提供的一种下载数字证书的方法流程图;
图3是本发明实施例3提供的一种下载数字证书的装置的方框示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明的实施例1提供一种下载数字证书的方法,如图1所示,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的,第三申请包中的内容只有版本是由主机发送给USBkey的,其余的内容如算法、指定密钥、内置证书、当前数字证书,都是在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 1A A4//N;
例如,本实施例中,得到的第一数据为:
03 81 8D 00 //公钥
30 81 89 //N和E(大序)
02 81 81 00 D6 F8 7B 45 4F 8F 66 15 1A A4  //N
66 F4 27 42 88 5F 42 3F 09 19 73 09 76 3B 0804
40 03 FA 5C A7 9A DE 21 DB 7A 2F CA 51 D7 BF38
37 C4 AA C4 83 1E F0 0F 8B DC 57 A7 F2 FA C286
AA 81 9D 83 84 7B 19 93 47 ED 6C FD 82 24 41D6
58 B1 B0 7A 8C E4 7A 31 BC E9 44 86 7C CD 26BA
5C D5 56 B9 53 CB 75 82 59 AB EB 68 63 02 4771
9D 95 8E EF DF 57 F1 D3 A0 54 53 7A 59 5D C585
13 BE FF 64 A5 7D
02 03 01 00 01 //E
步骤210:USB key按照预设格式对USB key中生成指定密钥的算法标识、PKCS#10申请包属性字符串、版本和标识信息进行封装,得到第二数据;
本实施例中,该步骤中的生成指定密钥的算法标识预先存储在USB Key中;
本实施例中,该步骤中的PKCS#10申请包属性字符串预先设置在USBKey;
本实施例中,该步骤中的版本由主机指定,通过生成PKCS#10申请包的命令发送给USB Key;
本实施例中,该步骤中的标识信息存储在生成PKCS#10申请包命令的数据域中,由主机发送给USB Key;
例如,本实施例中,得到的第二数据为:
30 81 C6 //请求信息,begin
02 01 00 //版本
30 1D 31 1B 30 19 06 03 55 04 03 13 12 36 3130 31 32 30 31 3958 31 32 33 34 35 36 37 38 39 //"CN =,c = ...,o= ..."
30 81 9F
30 0D 06 09 2A 86 48 86 F7 0D 01 01 01 05 00//公钥算法标识,RSA
A0 00 //属性(空) //end
步骤211:USB key按照预设格式对第一数据和第二数据进行封装,得到第三数据;
例如,本实施例中,得到的第三数据为:
30 81 C6 //请求信息,begin
02 01 00 //版本
30 1D 31 1B 30 19 06 03 55 04 03 13 12 36 3130 31 32 30 31 39 58 31 32 33 34 35 36 37 3839 //"CN =,c = ...,o = ..."
30 81 9F
30 0D 06 09 2A 86 48 86 F7 0D 01 01 01 05 00//公钥算法标识,RSA
03 81 8D 00 //公钥
30 81 89 //N和E(大序)
02 81 81 00 D6 F8 7B 45 4F 8F 66 15 1A A4  //N
66 F4 27 42 88 5F 42 3F 09 19 73 09 76 3B 0804
40 03 FA 5C A7 9A DE 21 DB 7A 2F CA 51 D7 BF38
37 C4 AA C4 83 1E F0 0F 8B DC 57 A7 F2 FA C286
AA 81 9D 83 84 7B 19 93 47 ED 6C FD 82 24 41D6
58 B1 B0 7A 8C E4 7A 31 BC E9 44 86 7C CD 26BA
5C D5 56 B9 53 CB 75 82 59 AB EB 68 63 02 4771
9D 95 8E EF DF 57 F1 D3 A0 54 53 7A 59 5D C585
13 BE FF 64 A5 7D
02 03 01 00 01 //E
A0 00 //属性(空) //end
步骤212:USB key根据摘要算法对第三数据进行计算,得到第一摘要;
本实施例中,摘要算法为HASH算法,包括MD5、SHA-1等;优选地,本实施例中的摘要算法为SHA-1;本实施例中,摘要算法可以是USB Key中内置的固定算法,也可以根据主机发送的命令在USB key内部的预置算法集合中查找对应的算法;
步骤213:USB key使用指定密钥的私钥对第一摘要进行数字签名,得到第一数字签名,并按照预设格式对第一数字签名进行封装,得到第四数据;
例如,本实施例中,得到的第四数据为:
30 0D //签名算法,begin
06 09 2A 86 48 86 F7 0D 01 01 05 05 00 //RSAwithSHA1 //数字签名算法end
03 81 81 00 //(签名值,私钥对请求信息摘要(按照算法要求填充padding)的签名)begin
14 E1 62 68 9E 94 35 2C C0 10 0C D6 28 83 4F65
E1 C9 D4 34 37 84 C3 37 41 61 F2 3B 5C 87 3F65
5A 37 75 F9 8C 43 CC 9C 70 7A B5 41 8D 9E 8C29
07 26 35 FE 32 E3 DF C5 26 7E 26 9D 89 77 AA16
1D 0D CE 9C 88 73 10 AC B3 B2 B1 EC A2 C6 240D
B6 77 5F D6 1F 8A DC 19 B4 28 80 B2 4F 46 4464
33 EB 48 F7 6A 65 3F F3 E6 40 F7 19 15 BE ABDF
DD BF A1 AB 65 9B 3E 03 E4 63 7C 18 A1 DD C9EB  //end
步骤214:USB key按照预设格式对第三数据和第四数据进行封装,得到PKCS#10申请包,将指定密钥所对应的标志位清0;
具体地,USB key按照以下格式编码形成PKCS#10申请包:
30 82 01 5C
30 81 C6 //请求信息,begin
02 01 00 //版本
30 1D 31 1B 30 19 06 03 55 04 03 13 12 36 3130 31 32 30 31 39 58 31 32 33 34 35 36 37 3839 //"CN =,c = ...,o = ..."
30 81 9F
30 0D 06 09 2A 86 48 86 F7 0D 01 01 01 05 00//公钥算法标识,RSA
03 81 8D 00 //公钥
30 81 89 //N和E(大序)
02 81 81 00 D6 F8 7B 45 4F 8F 66 15 1A A4  //N
66 F4 27 42 88 5F 42 3F 09 19 73 09 76 3B 0804
40 03 FA 5C A7 9A DE 21 DB 7A 2F CA 51 D7 BF38
37 C4 AA C4 83 1E F0 0F 8B DC 57 A7 F2 FA C286
AA 81 9D 83 84 7B 19 93 47 ED 6C FD 82 24 41D6
58 B1 B0 7A 8C E4 7A 31 BC E9 44 86 7C CD 26BA
5C D5 56 B9 53 CB 75 82 59 AB EB 68 63 02 4771
9D 95 8E EF DF 57 F1 D3 A0 54 53 7A 59 5D C585
13 BE FF 64 A5 7D
02 03 01 00 01 //E
A0 00 //属性(空) //end
30 0D //签名算法,begin
06 09 2A 86 48 86 F7 0D 01 01 05 05 00 //RSAwithSHA1 //数字签名算法end
03 81 81 00 //(签名值,私钥对请求信息摘要(按照算法要求填充padding)的签名)begin
14 E1 62 68 9E 94 35 2C C0 10 0C D6 28 83 4F65
E1 C9 D4 34 37 84 C3 37 41 61 F2 3B 5C 87 3F65
5A 37 75 F9 8C 43 CC 9C 70 7A B5 41 8D 9E 8C29
07 26 35 FE 32 E3 DF C5 26 7E 26 9D 89 77 AA16
1D 0D CE 9C 88 73 10 AC B3 B2 B1 EC A2 C6 240D
B6 77 5F D6 1F 8A DC 19 B4 28 80 B2 4F 46 4464
33 EB 48 F7 6A 65 3F F3 E6 40 F7 19 15 BE ABDF
DD BF A1 AB 65 9B 3E 03 E4 63 7C 18 A1 DD C9EB  //end
步骤215:USB key将PKCS#10申请包返回给主机,返回步骤201;
步骤216:USB Key根据存储数字证书命令中保存证书数据的偏移,将证书数据存入相应位置,并记录该位置和密钥标识,返回步骤201;
步骤217:USB Key判断指定密钥所对应的标志位是否为1,是则执行步骤219,否则执行步骤218;
具体地,USB Key根据生成PKCS#7申请包的命令中的密钥ID和密钥类型查找指定密钥和指定密钥所对应的标志位;
本实施例中,主机发送的生成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-1等;优选地,本实施例中的摘要算法为SHA-1;本实施例中,摘要算法可以是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 2A 86 48 86 F7 0D01 07 01 (data)//数据类型
       A0 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 3030
30 34 31 30 30 31 30 31 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 30 32 37 35 53 4E 30 30 3030
31 30 BD BB D2 D7 C3 FB B3 C6 A3 BA 53 56 3030
30 30 31 35 B8 F6 C8 CB D0 C5 CF A2 CE AC BBA4
20 09 0A 53 4E 30 31 30 30 30 36 D0 D5 C3 FBA3
BA 53 56 30 31 30 30 30 36 CD F5 BA A3 B2 A853
4E 30 32 30 30 30 38 BF CD BB A7 BA C5 A3 BA53
56 30 32 30 30 31 36 31 36 31 32 35 30 37 3430
32 38 36 38 37 35 38 53 4E 30 33 30 30 31 30BD
BB D2 D7 CA B1 BC E4 A3 BA 53 56 30 33 30 3031
39 32 30 31 32 2D 30 33 2D 33 30 20 31 30 3A34
39 3A 34 37 44 4E 30 30 30 30 31 31 41 63 7469
6F 6E 4E 61 6D 65 3A 44 56 30 30 30 30 31 3941
64 6D 43 75 73 74 42 61 73 65 49 6E 66 6F 7241
63 74 44 4E 30 31 30 30 30 37 6E 43 6E 4E 616D
65 44 56 30 31 30 30 30 36 CD F5 BA A3 B2 A844
4E 30 32 30 30 31 34 63 75 73 74 6F 6D 65 726E
75 6D 62 65 72 44 56 30 32 30 30 31 36 31 3631
32 35 30 37 34 30 32 38 36 38 37 35 38   (原文)//原文结束
步骤225:USB key按照预设格式对内置证书进行封装,得到第五数据;
本实施例中,内置证书在生产过程中预置在USB key内部;
例如,本实施例中,得到的第五数据如下:
    A0 82 02 7F //证书集开始
               30 82 02 7B //具体证书开始
                 30 82 01 E4
                    A0 03 02 01 02(证书版本)
                    02 0A 7B 97 CA10 27 5A 05 A8 07 1A (issuerAndSerialNumber)
                   30 0D
                      06 09 2A 8648 86 F7 0D 01 01 05 05 00 (null) (sha1withRSAEncryption)
                    30 1C (主题)
          31 0C 30 0A 06 03 55 04 03 1303 41 42 43 (abc)
                    31 0C 30 0A 0603 55 04 0A (organizationName)13 03 (可打印字符串)4142 43 (abc)
                    30 1E (you xiaoqi)
                    17 0D (utc time)31 32 30 33 32 37 30 37 30 32 35 37 5A
                     17 0D (utc time)31 33 30 34 30 38 30 34 35 39 31 34 5A
                    30 4A (ban fa zhe)
                    31 1E 30 1C 0603 55 04 03 13 15 31 32 30 30 38 34 36 35 3535 38 2E 30 30 30 30 2E 30 30
    32 37 31 1A 30 18 06 03 55 04 0B 13 1150 65 72 73 6F 6E 61 6C 20 43 75 73 74 6F 6D65 72
                    31 0C 30 0A 0603 55 04 0A 13 03 41 42 43
              30 81 9F (证书公钥)
                 30 0D
                    06 09
                     2A 86 48 86 F70D 01 01 01 (rsaEncryption )
                       05 00
                 03 81 8D (bit string下面的00表示没有补位)
    00 30 81 89
                        02 81 8100 D0 25 89 74 43 47 4B C6 E7 14 64 6C BE 47
                        D2 70 42FA 92 33 A2 22 F2 0A B6 4B AD 64 83 EF
A1 89 D5 32 59 AE 31 34 B0 57 E8 AF 03 BE FA8A
8D D9 06 3A 0F 09 0F D6 61 93 E0 54 A0 68 CE3A
FB 02 FF E6 DC 21 38 FF 66 CF 63 9E F1 A3 3813
D9 DB 5B 2E 33 FF BF 0A 72 D3 C0 98 27 F4 1D9D
68 55 95 9F E3 0D BE 8A D4 84 81 A6 59 50 5CB7
14 53 4E 9A 6E 19 CE 43 8C 91 6D A7 FA 61 7E52
BA 1F 02 03 01 00 01 (n和e)
A3 81 95 //证书的扩展项
   30 81 92
                    30 1F
                          06 03
                            551D 23 (authorityKeyIdentifier)
                          04 18
                             3016
80 14 25 9A C6 0C FD E7 87 73 1104 83 6F 32 68 36 B1 C1 81 0C CC
                        30 0C 0603
55 1D 13 (basicConstraints)
                           04 05
30 03 01 01 00
                        30 42 0603
   55 1D 1F (cRLDistributionPoints )
                        04 3B
 30 39
                          30 37
                            A035
A0 33
A4 31
30 2F
31 11
30 0F
06 03 55 04 03 (cn)
13 08
63 72 6C 31 38 39 38 30
                           31 0C30 0A
06 03 55 04 0B (ou)
                           13 0363 72 6C
                        31 0C
                          30 0A06 03 55 04 0A (o)
                           13 0341 42 43
30 1D 06 03 55 1D 0E(subjectKeyIdentifier )
 04 16 04 14 3D 58 90 5E 72
E8 61 BA 54 EB 69 90 CA 78 59 F2 05 64 0B E9上面是证书信息
//
30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 00//USB Key给证书的签名算法
03 81 81 00  //证书中的签名值
F1 B9 EC 3A E1 F9 73 48 FC F3 39 56 A7 C8
16 D3 EB 6F 77 42 D3 37 C3 20 AB EB 5B 89 92AC
B2 CA 34 F7 7B 32 2F 4A EE ED B6 28 E6 09 78DB
27 61 2E 5B 54 29 E6 36 80 77 06 94 DE 4E 1EEF
2D 7C 66 46 E5 D8 CA 51 7E 0E 1F D2 51 53 6421
0B 83 91 5B 8D 8A 01 8E 24 29 7E 61 9A 69 B2E1
DE 68 CD 4A 2E E9 0F D9 8F 05 0F 97 B5 4E 4135
CF B6 67 19 B6 BC 54 DB E6 F5 82 1E A6 2E D0A9
9F B7                 //证书结束
步骤226:USB key根据摘要算法对PKCS#10申请包进行计算,得到第二摘要;
本实施例中,摘要算法为HASH算法,包括MD5、SHA-1等;优选地,本实施例中的摘要算法为SHA-1;
步骤227:USB key使用内置证书的私钥对第二摘要进行数字签名,得到第二数字签名,并按照预设格式对第二数字签名进行封装,得到第六数据;
例如,本实施例中,得到的第六数据如下:
31 81 D3 // 签名集合开始
  30 81 D0 //集合中的第一项
     02 01 01 //
       30 2A  (颁发者和序列号是内置证书的颁发者和序列号)
        30 1C //颁发者
        31 0C 30 0A 06 03 55 04 03 13 0341 42 43
31 0C 30 0A 06 03 55 04 0A 13 03 41 42 43
        02 0A 7B 97 CA 10 27 5A 05 A8 071A //序列号
       30 0D 06 09 2A 86 48 86 F7 0D 01 0105 05 00 //摘要算法标识
       30 0D 06 09 2A 86 48 86 F7 0D 01 0101 05 00 // rsa公钥算法
04 81 80 //数据原文的签名结果
A4 9C E5 CD 89 FE E6 CD 4A B3 16 E6 86 87 CF2C
5E E7 90 0A 60 C3 4E 73 2F 97 B5 04 26 A3 11D6
71 29 1C CC 0F 9A E1 99 CE 48 BA 33 BC D5 86A5
6D 69 E4 78 5D 58 EC 4F 85 91 98 8C AF B3 A8FC
8F 26 78 78 AE 62 CA 09 51 A2 4D 87 13 9A A313
E8 31 B4 9C A7 41 88 1E 84 62 D3 E2 88 B5 9427
95 FC 55 4B 85 56 40 DA C2 AF 33 03 00 42 5050
A9 AF 9A 90 57 4D 7C A0 B6 A7 99 BE A1 27 5A48
步骤228:USB key按照预设格式对PKCS#10申请包、第五数据和第六数据进行封装,得到第一PKCS#7申请包;
例如,本实施例中,得到的第一PKCS#7申请包如下:
30 82 04 E4 (sequence 4e4 byte)
    06 09   (objectid 9 byte) //数据包类型
       2A 86 48 86 F7 0D 01 07 02  (p7 signdata)//签名包
    A0 82 04 D5 (OPTIONAL 4d5 byte) (Context Specific 上下文相关) //随后就是签名包的全部内容
      30 82 04 D1 (sequence 4d1 byte)
           02 01 01 (INTEGER  version 1 byte) //PK7版本
           31 0F (set f byte)  //请求者期望对方支持的算法,不同算法会发生改变
              30 0D (sequence d byte)
              06 09 2A 86 48 86 F7 0D01 01 05 (sha1withRSAEncryption) 05 00(Null) \\hash算法
           30 82 01 60 (sequence 160 byte)
              06 09 2A 86 48 86 F7 0D01 07 01 (data)//数据类型
       A0 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 3030
30 34 31 30 30 31 30 31 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 30 32 37 35 53 4E 30 30 3030
31 30 BD BB D2 D7 C3 FB B3 C6 A3 BA 53 56 3030
30 30 31 35 B8 F6 C8 CB D0 C5 CF A2 CE AC BBA4
20 09 0A 53 4E 30 31 30 30 30 36 D0 D5 C3 FBA3
BA 53 56 30 31 30 30 30 36 CD F5 BA A3 B2 A853
4E 30 32 30 30 30 38 BF CD BB A7 BA C5 A3 BA53
56 30 32 30 30 31 36 31 36 31 32 35 30 37 3430
32 38 36 38 37 35 38 53 4E 30 33 30 30 31 30BD
BB D2 D7 CA B1 BC E4 A3 BA 53 56 30 33 30 3031
39 32 30 31 32 2D 30 33 2D 33 30 20 31 30 3A34
39 3A 34 37 44 4E 30 30 30 30 31 31 41 63 7469
6F 6E 4E 61 6D 65 3A 44 56 30 30 30 30 31 3941
64 6D 43 75 73 74 42 61 73 65 49 6E 66 6F 7241
63 74 44 4E 30 31 30 30 30 37 6E 43 6E 4E 616D
65 44 56 30 31 30 30 30 36 CD F5 BA A3 B2 A844
4E 30 32 30 30 31 34 63 75 73 74 6F 6D 65 726E
75 6D 62 65 72 44 56 30 32 30 30 31 36 31 3631
32 35 30 37 34 30 32 38 36 38 37 35 38   (原文)//原文结束
    A0 82 02 7F //证书集开始
               30 82 02 7B //具体证书开始
                 30 82 01 E4
                    A0 03 02 01 02(证书版本)
                    02 0A 7B 97 CA10 27 5A 05 A8 07 1A (issuerAndSerialNumber)
                   30 0D
                      06 09 2A 8648 86 F7 0D 01 01 05 05 00 (null) (sha1withRSAEncryption)
                    30 1C (主题)
          31 0C 30 0A 06 03 55 04 03 1303 41 42 43 (abc)
                    31 0C 30 0A 0603 55 04 0A (organizationName)13 03 (可打印字符串)4142 43 (abc)
                    30 1E (you xiaoqi)
                    17 0D (utc time)31 32 30 33 32 37 30 37 30 32 35 37 5A
                     17 0D (utc time)31 33 30 34 30 38 30 34 35 39 31 34 5A
                    30 4A (ban fa zhe)
                    31 1E 30 1C 0603 55 04 03 13 15 31 32 30 30 38 34 36 35 3535 38 2E 30 30 30 30 2E 30 30
    32 37 31 1A 30 18 06 03 55 04 0B 13 1150 65 72 73 6F 6E 61 6C 20 43 75 73 74 6F 6D65 72
                    31 0C 30 0A 0603 55 04 0A 13 03 41 42 43
              30 81 9F (证书公钥)
                 30 0D
                    06 09
                     2A 86 48 86 F70D 01 01 01 (rsaEncryption )
                       05 00
                 03 81 8D (bit string下面的00表示没有补位)
    00 30 81 89
                        02 81 8100 D0 25 89 74 43 47 4B C6 E7 14 64 6C BE 47
                        D2 70 42FA 92 33 A2 22 F2 0A B6 4B AD 64 83 EF
A1 89 D5 32 59 AE 31 34 B0 57 E8 AF 03 BE FA8A
8D D9 06 3A 0F 09 0F D6 61 93 E0 54 A0 68 CE3A
FB 02 FF E6 DC 21 38 FF 66 CF 63 9E F1 A3 3813
D9 DB 5B 2E 33 FF BF 0A 72 D3 C0 98 27 F4 1D9D
68 55 95 9F E3 0D BE 8A D4 84 81 A6 59 50 5CB7
14 53 4E 9A 6E 19 CE 43 8C 91 6D A7 FA 61 7E52
BA 1F 02 03 01 00 01 (n和e)
A3 81 95 //证书的扩展项
   30 81 92
                    30 1F
                          06 03
                            551D 23 (authorityKeyIdentifier)
                          04 18
                             3016
80 14 25 9A C6 0C FD E7 87 73 11 04 83 6F32 68 36 B1 C1 81 0C CC
                        30 0C 0603
55 1D 13 (basicConstraints)
                           04 05
30 03 01 01 00
                        30 42 0603
   55 1D 1F (cRLDistributionPoints )
                        04 3B
 30 39
                          30 37
                            A035
A0 33
A4 31
30 2F
31 11
30 0F
06 03 55 04 03 (cn)
13 08
63 72 6C 31 38 39 38 30
                           31 0C30 0A
06 03 55 04 0B (ou)
                           13 0363 72 6C
                        31 0C
                          30 0A06 03 55 04 0A (o)
                           13 0341 42 43
30 1D 06 03 55 1D 0E(subjectKeyIdentifier )
 04 16 04 14 3D 58 90 5E 72
E8 61 BA 54 EB 69 90 CA 78 59 F2 05 64 0B E9上面是证书信息
//
30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 00//USB Key给证书的签名算法
03 81 81 00  //证书中的签名值
F1 B9 EC 3A E1 F9 73 48 FC F3 39 56 A7 C8
16 D3 EB 6F 77 42 D3 37 C3 20 AB EB 5B 89 92AC
B2 CA 34 F7 7B 32 2F 4A EE ED B6 28 E6 09 78DB
27 61 2E 5B 54 29 E6 36 80 77 06 94 DE 4E 1EEF
2D 7C 66 46 E5 D8 CA 51 7E 0E 1F D2 51 53 6421
0B 83 91 5B 8D 8A 01 8E 24 29 7E 61 9A 69 B2E1
DE 68 CD 4A 2E E9 0F D9 8F 05 0F 97 B5 4E 4135
CF B6 67 19 B6 BC 54 DB E6 F5 82 1E A6 2E D0A9
9F B7                 //证书结束
31 81 D3 // 签名集合开始
  30 81 D0 //集合中的第一项
     02 01 01 //
       30 2A  (颁发者和序列号是内置证书的颁发者和序列号)
        30 1C //颁发者
        31 0C 30 0A 06 03 55 04 03 13 0341 42 43
31 0C 30 0A 06 03 55 04 0A 13 03 41 42 43
        02 0A 7B 97 CA 10 27 5A 05 A8 071A //序列号
       30 0D 06 09 2A 86 48 86 F7 0D 01 0105 05 00 //摘要算法标识
       30 0D 06 09 2A 86 48 86 F7 0D 01 0101 05 00 // rsa公钥算法
04 81 80 //数据原文的签名结果
A4 9C E5 CD 89 FE E6 CD 4A B3 16 E6 86 87 CF2C
5E E7 90 0A 60 C3 4E 73 2F 97 B5 04 26 A3 11D6
71 29 1C CC 0F 9A E1 99 CE 48 BA 33 BC D5 86A5
6D 69 E4 78 5D 58 EC 4F 85 91 98 8C AF B3 A8FC
8F 26 78 78 AE 62 CA 09 51 A2 4D 87 13 9A A313
E8 31 B4 9C A7 41 88 1E 84 62 D3 E2 88 B5 9427
95 FC 55 4B 85 56 40 DA C2 AF 33 03 00 42 5050
A9 AF 9A 90 57 4D 7C A0 B6 A7 99 BE A1 27 5A48
步骤229:USB key按照预设格式对当前数字证书进行封装,得到第七数据;
本实施例中,第七数据的格式与步骤225中第五数据的格式相同,在此不再赘述;
步骤230:USB key根据摘要算法对第一PKCS#7申请包进行计算,得到第三摘要;
步骤231:USB key使用当前数字证书的私钥对第三摘要进行数字签名,得到第三数字签名,并按照预设格式对第三数字签名进行封装,得到第八数据;
本实施例中,第八数据的格式与步骤227中第六数据的格式相同,在此不再赘述;
步骤232:USB key按照预设格式对第一PKCS#7申请包、第七数据和第八数据进行封装,得到第二PKCS#7申请包,将指定密钥所对应的标志位清0;
本实施例中,第二PKCS#7申请包的格式与步骤228中第一PKCS#7申请包的格式相同,在此不再赘述;
步骤233:USB key将第二PKCS#7申请包返回给主机,执行步骤201;
步骤234:USB key执行相应命令,将执行结果返回给主机,返回步骤201;
步骤235:USB key返回错误信息给主机,返回步骤201;
本实施例中, PKCS#10申请包和PKCS#7申请包中的内容只有版本和标识信息是由主机发送给USB key的,其余的内容如算法、指定密钥、第一签名、内置证书、第二签名、当前数字证书和第三签名,都是在USB key内部生成、查找或计算得到的,提高了数字证书下发的安全性。
实施例3
本发明的实施例3提供一种下载数字证书的装置,如图3所示,包括:接收模块301、第一判断模块302、第二判断模块303、密钥生成模块304、置位模块305、第三判断模块306、第一生成模块307、第二生成模块308、第三生成模块309、复位模块310、执行模块311、发送模块312和存储证书模块313;
接收模块301,用于接收主机发送的命令;
第一判断模块302,用于判断命令类型;
第二判断模块303,用于判断将要生成的密钥对应的标志位是否置位;
密钥生成模块304,用于生成密钥;
置位模块305,用于将生成的密钥所对应的标志位置位;
第三判断模块306,用于判断指定密钥所对应的标志位是否置位;
第一生成模块307,用于使用指定密钥的私钥对由指定密钥的公钥、生成指定密钥的算法标识、申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包;
第二生成模块308,用于使用内置证书的私钥对由所述内置证书和第一申请包组成的第二数据包进行数字签名,并生成第二申请包;
第三生成模块309,使用当前数字证书的私钥对由第二申请包和当前数字证书组成的第三数据包进行数字签名,并生成第三申请包;
复位模块310,用于将指定密钥所对应的标志位复位;
执行模块311,用于执行除生成密钥的命令、生成第一申请包命令、存储数字证书命令和生成第三申请包命令之外的其他命令;
发送模块312,用于将第一申请包、第三申请包、执行结果、密钥已经存在的信息和返回错误信息返回给主机;
存储证书模块313,用于根据存储数字证书命令中保存证书数据的偏移,将证书数据存入相应位置,并记录该位置和密钥标识。
第一生成模块307包括:第一封装单元3071、第一摘要单元3072和第一签名单元3073;
第一封装单元3071,用于按照预设格式对指定密钥的公钥进行封装,得到第一数据;按照预设格式对USB key中生成指定密钥的算法标识、申请包属性字符串、版本和标识信息进行封装,得到第二数据;按照预设格式对第一数据和第二数据进行封装,得到第三数据;按照预设格式对第一数字签名进行封装,得到第四数据;按照预设格式对第三数据和第四数据进行封装,得到第一申请包;
第一摘要单元3072,用于根据摘要算法对第三数据进行计算,得到第一摘要;
第一签名单元3073,用于使用指定密钥的私钥对第一摘要进行数字签名,得到第一数字签名。
第一生成模块307还包括查找单元3074和解析单元3075;
查找单元3074,用于根据存储的当前数字证书的位置和密钥标识查找当前数字证书;
解析单元3075,用于从找到的当前数字证书中解析出标识信息。
第二生成模块308包括第二封装单元3081、第二摘要单元3082和第二签名单元3083;
第二封装单元3081,用于按照预设格式对内置证书进行封装,得到第五数据;按照预设格式对第二数字签名进行封装,得到第六数据;按照预设格式对第一申请包、第五数据和第六数据进行封装,得到第二申请包;
第二摘要单元3082,用于根据摘要算法对第一申请包进行计算,得到第二摘要;
第二签名单元3083,用于使用内置证书的私钥对第二摘要进行数字签名,得到第二数字签名。
第三生成模块309包括第三封装单元3091、第三摘要单元3092和第三签名单元3093;
第三封装单元3091,用于按照预设格式对当前数字证书进行封装,得到第七数据;按照预设格式对第三数字签名进行封装,得到第八数据;按照预设格式对第二申请包、第七数据和第八数据进行封装,得到第三申请包;
第三摘要单元3092,用于根据摘要算法对第二申请包进行计算,得到第三摘要;
第三签名单元3093,用于使用当前数字证书的私钥对第三摘要进行数字签名,得到第三数字签名。
装置还包括查找模块,用于根据主机发送的命令在USB key内部的预置算法集合中查找对应的摘要算法。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (15)

1.一种下载数字证书的方法,其特征在于,所述方法包括:
步骤S1:USB Key等待接收主机发送的命令;
步骤S2:所述USB Key判断所述命令类型,若是生成密钥的命令则执行步骤S3,若是生成第一申请包的命令则执行步骤S6,若是存储数字证书命令则执行步骤S9,若是生成第三申请包的命令则执行步骤S10,若是其他命令则执行步骤S15,若是非法命令则执行步骤S16;
步骤S3:所述USB Key判断将要生成的密钥对应的标志位是否置位,是则返回密钥已经存在的信息给所述主机,执行步骤S1,否则执行步骤S4;
步骤S4:所述USB Key生成密钥;
步骤S5:所述USB Key将所述生成的密钥所对应的标志位置位,返回步骤S1;
步骤S6:所述USB Key判断指定密钥所对应的标志位是否置位,是则执行步骤S7,否则返回错误信息,执行步骤S1;
步骤S7:所述USB Key使用所述指定密钥的私钥对由所述指定密钥的公钥、生成所述指定密钥的算法标识、第一申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包,将所述指定密钥所对应的标志位复位;
步骤S8:所述USB key将所述第一申请包返回给所述主机,返回步骤S1;
步骤S9:所述USB Key将证书数据存入相应位置,并记录所述位置和密钥标识,返回步骤S1;
步骤S10:所述USB Key判断指定密钥所对应的标志位是否为置位,是则执行步骤S11,否则返回错误信息,执行步骤S1;
步骤S11:所述USB Key使用所述指定密钥的私钥对由所述指定密钥的公钥、生成指定密钥的算法标识、第三申请包属性字符串、版本和标识信息组成的第一数据包进行数字签名,并生成第一申请包;
步骤S12:所述USB Key使用内置证书的私钥对由所述内置证书和所述第一申请包组成的第二数据包进行数字签名,并生成第二申请包;
步骤S13:所述USB Key使用当前数字证书的私钥对由所述第二申请包和当前数字证书组成的第三数据包进行数字签名,并生成第三申请包,将所述指定密钥所对应的标志位复位;
步骤S14:所述USB key将所述第三申请包返回给所述主机,返回步骤S1;
步骤S15:所述USB key执行相应命令,将执行结果返回给所述主机,返回步骤S1;
步骤S16:所述USB key返回错误信息给所述主机,返回步骤S1。
2.根据权利要求1所述的方法,其特征在于,所述步骤S7中,所述生成指定密钥的算法标识预先存储在USB Key中,所述第一申请包属性字符串预先设置在所述USB Key中;所述版本由所述主机指定,通过所述生成第一申请包的命令发送给所述USB Key;所述标识信息存储在所述生成第一申请包命令中,由所述主机发送给所述USB Key。
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.根据权利要求1所述的方法,其特征在于,所述步骤S11中,所述生成指定密钥的算法标识预先存储在USB Key中,所述第三申请包属性字符串预先设置在所述USB Key中;所述版本由所述主机指定,通过所述生成第三申请包的命令发送给所述USB Key;所述标识信息的获取方式可以是:所述主机将所述标识信息存储在所述生成第三申请包命令中,发送给所述USB Key或所述USB Key根据存储的当前数字证书的位置检索到当前数字证书,从当前数字证书中解析出所述标识信息。
5.根据权利要求4所述的方法,其特征在于,所述步骤S11包括:
步骤S11-1:所述USB key按照预设格式对所述指定密钥的公钥进行封装,得到第一数据;
步骤S11-2:所述USB key按照所述预设格式对所述USB key中所述生成指定密钥的算法标识、所述第三申请包属性字符串、所述版本和所述标识信息进行封装,得到第二数据;
步骤S11-3:所述USB key按照所述预设格式对所述第一数据和所述第二数据进行封装,得到第三数据;
步骤S11-4:所述USB key根据摘要算法对所述第三数据进行计算,得到第一摘要;
步骤S11-5:所述USB key使用所述指定密钥的私钥对所述第一摘要进行数字签名,得到第一数字签名,并按照所述预设格式对所述第一数字签名进行封装,得到第四数据;
步骤S11-6:所述USB key按照所述预设格式对所述第三数据和所述第四数据进行封装,得到所述第一申请包。
6.根据权利要求5所述的方法,其特征在于,所述步骤S12包括:
步骤S12-1:所述USB key按照所述预设格式对所述内置证书进行封装,得到第五数据;
步骤S12-2:所述USB key根据所述摘要算法对所述第一申请包进行计算,得到第二摘要;
步骤S12-3:所述USB key使用所述内置证书的私钥对所述第二摘要进行数字签名,得到第二数字签名,并按照所述预设格式对所述第二数字签名进行封装,得到第六数据;
步骤S12-4:所述USB key按照所述预设格式对所述第一申请包、所述第五数据和所述第六数据进行封装,得到所述第二申请包。
7.根据权利要求1或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内部的预置算法集合中查找对应的摘要算法。
CN201210417183.8A 2012-10-26 2012-10-26 一种下载数字证书的方法和装置 Expired - Fee Related CN102932343B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210417183.8A CN102932343B (zh) 2012-10-26 2012-10-26 一种下载数字证书的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210417183.8A CN102932343B (zh) 2012-10-26 2012-10-26 一种下载数字证书的方法和装置

Publications (2)

Publication Number Publication Date
CN102932343A true CN102932343A (zh) 2013-02-13
CN102932343B CN102932343B (zh) 2015-01-14

Family

ID=47647045

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210417183.8A Expired - Fee Related CN102932343B (zh) 2012-10-26 2012-10-26 一种下载数字证书的方法和装置

Country Status (1)

Country Link
CN (1) CN102932343B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103338185A (zh) * 2013-05-31 2013-10-02 飞天诚信科技股份有限公司 一种文件共享的方法及系统
CN103795549A (zh) * 2014-02-28 2014-05-14 成都卫士通信息产业股份有限公司 通信内容加密解密方法以及基于cs模式的加密管理方法
CN105141420A (zh) * 2015-07-29 2015-12-09 飞天诚信科技股份有限公司 一种安全导入、签发证书的方法、设备及服务器
CN107612697A (zh) * 2017-10-20 2018-01-19 阿里巴巴集团控股有限公司 数字证书申请方法和装置
CN107743067A (zh) * 2017-11-30 2018-02-27 美的智慧家居科技有限公司 数字证书的颁发方法、系统、终端以及存储介质
CN109257341A (zh) * 2018-09-04 2019-01-22 广州矩阵信息科技有限公司 一种区块链地址的管理方法和设备
CN112016928A (zh) * 2019-05-31 2020-12-01 华控清交信息科技(北京)有限公司 一种支付方法、装置和用于支付的装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101350718A (zh) * 2008-09-05 2009-01-21 清华大学 一种基于用户识别模块的播放内容权限范围的保护方法
CN101977193A (zh) * 2010-10-28 2011-02-16 北京飞天诚信科技有限公司 安全下载证书的方法及系统
US20120159158A1 (en) * 2008-05-30 2012-06-21 Hitachi, Ltd. Validation server, validation method, and program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120159158A1 (en) * 2008-05-30 2012-06-21 Hitachi, Ltd. Validation server, validation method, and program
CN101350718A (zh) * 2008-09-05 2009-01-21 清华大学 一种基于用户识别模块的播放内容权限范围的保护方法
CN101977193A (zh) * 2010-10-28 2011-02-16 北京飞天诚信科技有限公司 安全下载证书的方法及系统

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103338185B (zh) * 2013-05-31 2016-02-24 飞天诚信科技股份有限公司 一种文件共享的方法及系统
CN103338185A (zh) * 2013-05-31 2013-10-02 飞天诚信科技股份有限公司 一种文件共享的方法及系统
CN103795549A (zh) * 2014-02-28 2014-05-14 成都卫士通信息产业股份有限公司 通信内容加密解密方法以及基于cs模式的加密管理方法
CN105141420B (zh) * 2015-07-29 2018-09-25 飞天诚信科技股份有限公司 一种安全导入、签发证书的方法、设备及服务器
CN105141420A (zh) * 2015-07-29 2015-12-09 飞天诚信科技股份有限公司 一种安全导入、签发证书的方法、设备及服务器
CN107612697A (zh) * 2017-10-20 2018-01-19 阿里巴巴集团控股有限公司 数字证书申请方法和装置
CN107612697B (zh) * 2017-10-20 2020-04-14 阿里巴巴集团控股有限公司 数字证书申请方法和装置
US11106775B2 (en) 2017-10-20 2021-08-31 Advanced New Technologies Co., Ltd. Digital certificate application
US11106776B2 (en) 2017-10-20 2021-08-31 Advanced New Technologies Co., Ltd. Digital certificate application
CN107743067A (zh) * 2017-11-30 2018-02-27 美的智慧家居科技有限公司 数字证书的颁发方法、系统、终端以及存储介质
CN109257341A (zh) * 2018-09-04 2019-01-22 广州矩阵信息科技有限公司 一种区块链地址的管理方法和设备
CN109257341B (zh) * 2018-09-04 2021-04-06 广州矩阵信息科技有限公司 一种区块链地址的管理方法和设备
CN112016928A (zh) * 2019-05-31 2020-12-01 华控清交信息科技(北京)有限公司 一种支付方法、装置和用于支付的装置
CN112016928B (zh) * 2019-05-31 2024-01-16 华控清交信息科技(北京)有限公司 一种支付方法、装置和用于支付的装置

Also Published As

Publication number Publication date
CN102932343B (zh) 2015-01-14

Similar Documents

Publication Publication Date Title
CN102932343B (zh) 一种下载数字证书的方法和装置
KR102597224B1 (ko) 통신 시스템에서 프로파일 설치 방법 및 장치
CN103797831B (zh) 执行链路建立和认证的系统和方法
US9307488B2 (en) Wireless device registration, such as automatic registration of a Wi-Fi enabled device
TW439381B (en) Method of implementing connection security in a wireless network
CN107888381B (zh) 一种密钥导入的实现方法、装置及系统
CN107005569A (zh) 端对端服务层认证
US20100257370A1 (en) Apparatus And Method for Supporting Content Exchange Between Different DRM Domains
CN109041052A (zh) 一种基于标识算法的安全通信方法及系统
JP2018512822A (ja) 無線通信システムで端末のプロファイルを管理する方法及び装置
CN107483184B (zh) 电池管理方法、设备、电池、物品及系统
CN104660603A (zh) IPSec VPN中扩展使用量子密钥的方法及系统
WO2013178136A1 (zh) 无线保真鉴权方法、系统及终端
CN105516139A (zh) 一种网络数据的传输方法、装置及系统
KR101529115B1 (ko) 하이브리드 네트워크를 위한 프로토콜-특정 키들
CN108989325A (zh) 加密通信方法、装置及系统
CN104486759A (zh) 一种无障碍接入无线网络的方法
CN106507346B (zh) 入网密码同步方法、入网设备及无线访问接入点
CN103916840B (zh) 一种移动设备和外接设备进行绑定和校验的方法
CN102761420A (zh) 一种安全认证方法
WO2009101848A1 (ja) 処理分散システム、認証サーバ、分散サーバ及び処理分散方法
CN102857393A (zh) 一种基于报文模拟的非公开密码算法ssl vpn设备性能测试方法
CN108199834B (zh) 一种智能密钥设备工作的方法及装置
CN104038931B (zh) 基于lte网络的配用电通信系统及其通信方法
CN103428697A (zh) 基于capwap协议的网络接入方法、装置和系统

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150114