一种基于多证书多用途的数字签名方法和系统的制作方法

文档序号:7817074阅读:377来源:国知局
一种基于多证书多用途的数字签名方法和系统的制作方法
【专利摘要】本发明公开一种基于多证书多用途的数字签名方法和系统,应用于包括上层应用、安全控件、中间件和智能密钥设备的系统中,智能密钥设备中存储有通用证书、专用证书和混用证书中的至少两种数字证书,通过将多张数字证书下载到智能密钥设备中,将通用证书或混用证书注册到浏览器的证书存储区中,并使用专用证书或混用证书进行数字签名,在支持非交互式签名的同时,还能够进行交互式签名,提高了数字签名的安全性和通用性。
【专利说明】一种基于多证书多用途的数字签名方法和系统

【技术领域】
[0001]本发明涉及信息安全领域,特别是涉及一种基于多证书多用途的数字签名方法和系统。

【背景技术】
[0002]随着网络银行的快速发展,智能密钥设备作为身份认证的有效设备,也已被推广应用。智能密钥设备通常使用自身保存的数字证书进行身份认证,数字证书可按照类型分为通用证书、专用证书和混用证书。其中,通用证书仅能用于非交互式签名,支持RSA算法和SM2算法;专用证书仅能用于交互式签名,支持RSA算法和SM2算法;混用证书可用于交互式签名和非交互式签名,支持RSA算法。交互式签名是指在智能密钥设备上对部分待签数据进行显示、并需要由用户进行人工复核的签名方式,而非交互式签名不会对在智能密钥设备上对待签数据进行显示,也不需要由用户进行人工复核。
[0003]发明人在实现本发明的过程中,发现现有技术至少存在以下缺陷:
[0004]对于仅保存有专用证书的智能密钥设备而言,由于专用证书无法进行非交互式签名,该智能密钥设备将无法进行双向SSL(Secure Socket Layer,安全套接层)认证。


【发明内容】

[0005]本发明提供了一种基于多证书多用途的数字签名方法和系统,以解决现有技术中仅保存有专用证书的智能密钥设备无法进行双向SSL认证的缺陷。
[0006]本发明提供了一种基于多证书多用途的数字签名方法,应用于包括上层应用、安全控件、中间件和智能密钥设备的系统中,所述智能密钥设备中存储有通用证书、专用证书和混用证书中的至少两种数字证书,所述中间件将所述智能密钥设备中的通用证书或混用证书注册到浏览器的证书存储区中,并使用注册的证书进行非交互式签名,所述方法还包括以下步骤:
[0007]S1、所述安全控件接收来自所述上层应用的证书标识、哈希名和报文数据;
[0008]S2、所述安全控件判断所述证书标识是否有效,如果是,则执行步骤S3 ;否则,向所述上层应用返回异常信息,结束流程;
[0009]S3、所述安全控件判断与所述证书标识对应的证书是否为专用证书或混用证书,如果是,则获取与所述证书标识对应的密钥标识,并执行步骤S4 ;否则,向所述上层应用返回异常信息;
[0010]S4、所述安全控件向所述中间件发送所述报文数据、所述哈希名和所述密钥标识;
[0011]S5、所述中间件向所述智能密钥设备发送所述报文数据、所述密钥标识以及与所述哈希名对应的哈希标识;
[0012]S6、所述智能密钥设备对所述报文数据中的显示数据进行显示,并在检测到预设按键被触发后,使用与所述密钥标识对应的私钥,按照与所述哈希标识对应的签名机制,对所述报文数据进行签名,得到第一签名结果,将所述第一签名结果发送给所述中间件;
[0013]S7、所述中间件将所述第一签名结果发送给所述安全控件;
[0014]S8、所述安全控件根据所述第一签名结果、所述报文数据以及与所述证书标识对应的证书生成签名数据,将所述签名数据发送给所述上层应用。
[0015]本发明还提供了一种基于多证书多用途的数字签名系统,包括上层应用、安全控件、中间件和智能密钥设备;
[0016]所述安全控件,包括:
[0017]第一接收模块,用于接收来自所述上层应用的证书标识、哈希名和报文数据;接收来自所述中间件的第一签名结果;
[0018]第一判断模块,用于判断所述第一接收模块接收到的所述证书标识是否有效;
[0019]第二判断模块,用于在所述第一判断模块判断出所述证书标识有效时,判断与所述证书标识对应的证书是否为专用证书或混用证书;
[0020]第一获取模块,用于在所述第二判断模块判断出与所述证书标识对应的证书是专用证书或混用证书时,获取与所述证书标识对应的密钥标识;
[0021]第一生成模块,用于根据所述报文数据、与所述证书标识对应的证书和所述第一接收模块接收到的所述第一签名结果生成签名数据;
[0022]第一发送模块,用于向所述中间件发送所述报文数据、所述哈希名和所述第一获取模块获取到的所述密钥标识,将所述第一生成模块生成的所述签名数据发送给所述上层应用;
[0023]在所述第一判断模块判断出所述证书标识无效时,向所述上层应用返回异常信息;在所述第二判断模块判断出与所述证书标识对应的证书不是专用证书或混用证书时,向所述上层应用返回异常信息;
[0024]所述中间件,包括:
[0025]注册模块,用于将所述智能密钥设备中的通用证书或混用证书注册到浏览器的证书存储区中;
[0026]第一签名模块,用于使用所述注册模块注册的证书进行非交互式签名;
[0027]第二接收模块,用于接收来自所述安全控件的所述报文数据、所述哈希名和所述密钥标识;接收来自所述智能密钥设备的第一签名结果;
[0028]第二发送模块,用于向所述智能密钥设备发送所述报文数据、所述密钥标识以及与所述哈希名对应的哈希标识;将所述第二接收模块接收到的所述第一签名结果发送给所述安全控件;
[0029]所述智能密钥设备,包括:
[0030]存储模块,用于存储通用证书、专用证书和混用证书中的至少两种数字证书;
[0031]第三接收模块,用于接收来自所述中间件的所述报文数据、所述密钥标识和所述哈希标识;
[0032]显示模块,用于对所述第三接收模块接收到的所述报文数据中的显示数据进行显示;
[0033]检测模块,用于检测按键;
[0034]第二签名模块,用于在所述检测模块检测到预设按键被触发后,使用与所述密钥标识对应的私钥,按照与所述哈希标识对应的签名机制,对所述报文数据进行签名,得到第一签名结果;
[0035]第三发送模块,用于将所述第二签名模块得到的所述第一签名结果发送给所述中间件;
[0036]所述上层应用,包括:
[0037]第四发送模块,用于向所述安全控件发送证书标识、哈希名和报文数据;
[0038]第四接收模块,用于接收来自所述安全控件的签名数据和异常信息。
[0039]本发明将多张数字证书下载到智能密钥设备中,将通用证书或混用证书注册到浏览器的证书存储区中,并使用专用证书或混用证书进行数字签名,在支持非交互式签名的同时,还能够进行交互式签名,提高了数字签名的安全性和通用性。

【专利附图】

【附图说明】
[0040]图1和2为本发明实施例中的一种基于多证书多用途的证书下载方法流程图;
[0041]图3为本发明实施例中的一种基于多证书多用途的数字签名方法流程图;
[0042]图4为本发明实施例中的一种基于多证书多用途的数字签名系统的结构示意图。

【具体实施方式】
[0043]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0044]本发明实施例提出了一种基于多证书多用途的数字签名方法,应用于包括证书服务器、上层应用、安全控件、中间件和智能密钥设备的系统中,上层应用通过调用安全控件的接口将多张数字证书下载到智能密钥设备中,相应地,中间件将智能密钥设备中的通用证书或混用证书注册到浏览器的证书存储区中,并使用注册的证书进行非交互式签名,如,双向SSL认证;上层应用通过调用安全控件的接口,使用智能密钥设备中的专用证书或混用证书进行数字签名。
[0045]需要说明的是,智能密钥设备中的专用证书仅能被安全控件调用,且不需要被注册到操作系统中。
[0046]如图1和2所示,为本发明实施例中一种基于多证书多用途的证书下载方法流程图,包括以下步骤:
[0047]步骤101,上层应用向安全控件发送证书请求信息。
[0048]具体地,上层应用可以通过调用安全控件的第一接口,将证书请求信息发送给安全控件。
[0049]其中,证书请求信息可以包含一个或多个证书信息单元,每个证书信息单元包括与一张证书对应的证书标识、摘要算法、证书用途、密钥类型和密钥长度,上述证书标识可以为证书DN(Distinguished Name,K别名),也可以是其他标识。
[0050]优选地,本实施例中的证书请求信息包含两个证书信息单元,其中一个证书信息单元与专用证书对应,另一个证书信息单元与通用证书或混用证书对应。
[0051]例如,证书请求信息为:“DN(CN= TEST1) HASH (SHAl) KEYTYPE (RSA1024)CERTTYPE(03) | DN(CN = TEST2)HASH(SM3)KEYTYPE(SM2256)CERTTYPE(01) ”,证书用途的数据字典为:“01”表示专用证书,“02”表示混用证书,“03”表示通用证书。
[0052]上述证书请求信息包含2个证书信息单元,一个证书信息单元与证书标识为“CN=TEST1”的通用证书相对应,该证书支持的密钥类型为“RSA”,密钥长度为“1024”,摘要算法为“SHA1”;另一个证书信息单元与证书标识为“CN = TEST2”的专用证书相对应,该证书支持的密钥类型为“SM2”,密钥长度为“ 256”,摘要算法为“SM3”。
[0053]步骤102,安全控件判断接收到的证书请求信息是否有效,如果是,则执行步骤103 ;否则,向上层应用返回异常信息。
[0054]具体地,安全控件判断证书请求信息中包含的证书信息单元是否都有效,如果是,则确定证书请求信息有效;否则,确定证书请求信息无效。
[0055]其中,安全控件判断证书信息单元是否有效,具体包括以下操作中的一项或多项:
[0056]安全控件判断证书信息单元中的证书标识是否合法、安全控件判断证书信息单元中的摘要算法是否包含在预设算法列表中、安全控件判断证书信息单元中的证书用途是否包含在预设用途列表中,以及,安全控件判断证书信息单元中的密钥类型和密钥长度是否包含在预设密钥列表中。
[0057]其中,预设算法列表中包含一个或多个摘要算法,预设用途列表中包含一个或多个证书用途,预设密钥列表中包含一组或多组密钥属性,密钥属性包括密钥类型和密钥长度。安全控件可以通过判断证书标识是否符合预设结构的方式,来判断证书信息单元中的证书标识是否合法,预设结构可以是以第一预设字符串作为开始。
[0058]例如,预设算法列表为(SM3,MD5,SHAl, SHA256, SHA512),预设用途列表为(01,02,03),预设密钥列表为(RSA1024, RSA2048, SM2256)。证书用途的数据字典为:“01”表示专用证书,“02”表示混用证书,“03”表示通用证书。第一预设字符串为“CN=”。安全控件获取的证书请求信息为:“DN(CN = TEST1)HASH(SHAl)KEYTYPE(RSA1024)CERTTYPE(03)| DN(CN = TEST2)HASH(SM3)KEYTYPE(SM2256)CERTTYPE(01)”。
[0059]相应地,安全控件判断出证书信息单元中的证书标识“CN = TEST I"和“CN =TEST2”均是以第一预设字符串“CN=”作为开始,则确定证书信息单元中的证书标识符合预设结构,即证书信息单元中的证书标识合法;安全控件还判断出证书信息单元中的摘要算法“SHA1”和“SM3”均包含在预设算法列表中,判断出证书信息单元中的证书用途“03”和“01”均包含在预设用途列表中,判断出证书信息单元中的密钥类型和密钥长度,SP“RSA1024”和“SM2256”均包含在预设密钥列表中,进而确定上述证书请求信息有效。
[0060]步骤103,安全控件向中间件发送证书请求信息。
[0061]例如,安全控件证书请求信息“DN(CN = TEST1)HASH(SHAl)KEYTYPE (RSA1024)CERTTYPE(03) | DN(CN = TEST2)HASH(SM3)KEYTYPE(SM2256)CERTTYPE(01) ” 发送给中间件。
[0062]步骤104,中间件根据接收到的证书请求信息生成密钥对,为该密钥对分配密钥标识,并对密钥对中的公钥和私钥进行设置。
[0063]具体地,中间件根据证书请求信息中的密钥类型和密钥长度生成密钥对,为该密钥对分配密钥标识,将证书请求信息中的证书用途添加为上述密钥对中的公钥和私钥的属性。
[0064]例如,证书请求信息为“DN(CN = TEST1)HASH(SHAl)KEYTYPE(RSA1024)CERTTYPE(03) | |DN(CN = TEST2)HASH(SM3)KEYTYPE(SM2256)CERTTYPE(01) ” 时,中间件根据密钥类型和密钥长度“RSA1024”生成RSA密钥对,为该RSA密钥对分配密钥标识“02”,并将证书用途“03”添加为上述RSA密钥对中的公钥和私钥的属性,上述RSA密钥对中的RSA公钥为:
[0065]0x30,0x81,0x89,0x02,0x81,0x81,0x00,0xb8, 0xf7, 0x38,0x84,0x35,Oxcdj 0x3e,0x4a, 0xc3, 0x34,0x2d, Oxbbj 0xe8, 0x8d, 0x26,0x54,0xe4, 0xd9, 0x25,0x43,0x5c, 0x6b,0x02,0x4d, 0x5d, 0x8f, 0x63,OxOej 0xf7, 0x9a, Oxfej 0x10,0x93,OxObj 0x87,0x2e, 0x9c,0x33,0x56,0xa6, 0x5c, 0xd5, 0x3d, 0x04,0x7f, Oxfaj Oxeej 0x9f, 0x84,0x72,0x3e, 0x75,Ox89,0x80,0x5b, 0x32,Oxlbj 0xb5, 0x16,0xa7, 0x4d, Oxelj 0x65,OxOcj 0x50,0x19,0xc9, 0x86,0xc9, 0x37,0x8f, 0x50,0x8b, 0xd7, 0x41,0x70,0x83,0x62,0x66,0x91,0x49,Oxcej Oxlcj 0x85, 0xd3, 0x99,0x4b, 0xf9, Oxabj 0xe4, 0x50,0x6c, 0x36,0xe2, 0x8c, 0xf7, 0x02,0x62,0x6c, 0x4c, OxOfj 0x5c, Oxfcj Oxdaj Oxlcj 0xc7, Oxbbj 0x52,Oxfcj 0x32,Oxcdj 0x87,0x95,0x51,0xc9, Oxeej Oxacj 0xa8, 0x57, 0x11,0x75, Oxfdj 0x21, 0x37, OxOfj Oxalj 0xb9, 0x31, 0x02, Ox03,0x01,0x00,0x01 ;
[0066]此外,中间件根据密钥类型和密钥长度“SM2256”生成SM2密钥对,为该SM2密钥对分配密钥标识“11”,并将证书用途“01”添加为上述SM2密钥对中的公钥和私钥的属性,上述SM2密钥对中的SM2公钥为:
[0067]0x04,Oxabj 0xc8, 0x2c, 0x9c, Oxffj 0x68,OxdOj Oxcdj 0x46,0x8f, 0x09,0x32,Ox86,OxcOj 0x5a, Oxdbj 0x4e, 0x8f, 0x91,0x79,0x26,Oxcdj 0xc4, 0x02,0x7c, 0xe7, OxOaj Oxc6,0x40,0x45,0xc3, 0x94,Oxdbj 0x96,0xc8, 0x4d, 0x78,0x46,0x42,0x03,0x8a, 0xb6, 0x22,Oxddj 0x4b, 0x78,0x8e, Oxddj 0x50,0x30,0xb8, OxaOj 0x17,0x83,0x61,OxdOj 0x40,0x7f,0x68,0xb8, 0x36,0x9f, OxOfj Oxee0
[0068]步骤105,中间件向安全控件发送密钥标识和公钥。
[0069]例如,中间件将密钥标识“02”和对应的RSA公钥,以及密钥标识“11”和对应的SM2公钥发送给安全控件。
[0070]步骤106,安全控件根据接收到的公钥和证书请求信息,生成待签数据。
[0071]具体地,安全控件可以将公钥、证书请求信息中的证书标识、摘要算法、密钥类型和密钥长度封装成待签数据。
[0072]例如,安全控件将RSA公钥、证书标识“CN = TEST1”、摘要算法“SHA1”、密钥类型和密钥长度“RSA1024”封装成的待签数据为:
[0073]0x30,0x81,0xb8, 0x02,0x01,0x00,0x30,OxOfj 0x31,OxOdj 0x30,OxObj 0x06,Ox03,0x55,0x04,0x03,OxOcj 0x04,0x74,0x65,0x73,0x74,0x30,0x81,0x9f, 0x30,OxOdj Oχ06, 0x09,0x2a, 0x86,0x48,0x86,0xf7, OxOdj 0x01,0x01,0x01,0x05,0x00,0x03,0x81,0x8d,0x00,
[0074]0x30,0x81,0x89,0x02,0x81,0x81,0x00,0xb8, 0xf7, 0x38,0x84,0x35,Oxcdj 0x3e,0x4a, 0xc3, 0x34,0x2d, Oxbbj 0xe8, 0x8d, 0x26,0x54,0xe4, 0xd9, 0x25,0x43,0x5c, 0x6b,0x02,0x4d, 0x5d, 0x8f, 0x63,OxOej 0xf7, 0x9a, Oxfej 0x10,0x93,OxObj 0x87,0x2e, 0x9c,0x33,0x56,0xa6, 0x5c, 0xd5, 0x3d, 0x04,0x7f, Oxfaj Oxeej 0x9f, 0x84,0x72,0x3e, 0x75,Ox89,0x80,0x5b, 0x32,Oxlbj 0xb5, 0x16,0xa7, 0x4d, Oxelj 0x65,OxOcj 0x50,0x19,0xc9, 0x86,0xc9, 0x37,0x8f, 0x50,0x8b, 0xd7, 0x41,0x70,0x83,0x62,0x66,0x91,0x49,Oxcej Oxlcj 0x85, 0xd3, 0x99,0x4b, 0xf9, Oxabj 0xe4, 0x50,0x6c, 0x36,0xe2, 0x8c, 0xf7, 0x02,0x62,0x6c, 0x4c, OxOfj 0x5c, Oxfcj Oxdaj Oxlcj 0xc7, Oxbbj 0x52,Oxfcj 0x32,Oxcdj 0x87,0x95,0x51,0xc9, Oxeej Oxacj 0xa8, 0x57, 0x11,0x75, Oxfdj 0x21, 0x37, OxOf,Oxalj 0xb9, 0x31, 0x02, Ox03,0x01,0x00,0x01,OxaOj 0x00 ;
[0075]安全控件将SM2公钥、证书标识“CN = TEST2”、摘要算法“SM3”、密钥类型和密钥长度“SM2256”封装成的待签数据为:
[0076]0xb9, 0x59,0x8e, OxOfj 0xb8, Oxeaj OxeOj 0x67,Oxalj 0x47,Oxlfj 0x85,0x2d, Oxff,Oxbcj 0x73,0xb2, 0x4a, 0xd3, 0x2d, 0xb3, Oxcaj 0x86,0x6f, 0x90,Oxlfj 0x3f, 0x68,0x51, 0x93,0x74,0xf8, 0x30,0x7f, 0x02,0x01,0x00,0x30,Oxldj 0x31,OxOej 0x30,OxOcj 0x06, 0x03,0x55,0x04,0x03,OxOcj 0x05,0x71,0x75,0x62,0x6f, 0x31,0x31,OxObj 0x30,0x09, 0x06,0x03,0x55,0x04,0x06,OxOcj 0x02,0x43,0x4e, 0x30,0x59,0x30,0x13,0x06,0x07, 0x2a, 0x86,0x48,Oxcej 0x3d, 0x02,0x01,0x06,0x08,0x2a, 0x81,Oxlcj Oxcfj 0x55,0xOl, 0x82,0x2d, 0x03,0x42,0x00,
[0077]0x04,Oxabj 0xc8, 0x2c, 0x9c, Oxffj 0x68,OxdOj Oxcdj 0x46,0x8f, 0x09,0x32,0x86,OxcOj 0x5a, Oxdbj 0x4e, 0x8f, 0x91,0x79,0x26,Oxcdj 0xc4, 0x02,0x7c, 0xe7, OxOaj 0xc6,-0x40,0x45,0xc3, 0x94,Oxdbj 0x96,0xc8, 0x4d, 0x78,0x46,0x42,0x03,0x8a, 0xb6, 0x22,Oxdd,0x4b, 0x78,0x8e, Oxddj 0x50,0x30,0xb8, OxaOj 0x17,0x83,0x61,OxdOj 0x40,0x7f, 0x68,0xb8, 0x36,0x9f, OxOfj Oxeej OxaOj OxOO0
[0078]步骤107,安全控件向中间件发送待签数据、密钥标识以及证书请求信息中的摘要算法。
[0079]步骤108,中间件向智能密钥设备发送待签数据、密钥标识以及与摘要算法对应的摘要标识。
[0080]步骤109,智能密钥设备使用与密钥标识对应的私钥,按照与摘要标识对应的签名机制,对待签数据进行签名,得到第二签名结果。
[0081]具体地,智能密钥设备根据接收到的密钥标识检索对应的私钥,根据检索到的私钥以及与摘要标识对应的签名机制,对接收到的待签数据进行签名,得到第二签名结果。
[0082]例如,智能密钥设备根据接收到的密钥标识“02”检索对应的私钥,根据检索到的私钥以及与接收到的摘要标识“01”对应的摘要算法“SHA1”,对接收到的待签数据进行签名,得到的第二签名结果为:
[0083]0x14, 0xb7, OxOa, 0x5e, OxcO, OxbO, OxfI, 0x89, 0x2b, OxOe, 0x0a, Oxbe, 0x3f, 0x4I, 0xd2, 0x2a, 0xc3, 0xb8, 0x57, 0xf3, 0x2d, Oxfd, Oxee, Oxdb, 0x6e, 0x67, 0x4c, 0xc3, Oxaf, 0x56, 0x52, 0x4e, 0x9b, 0x5b, Oxdl, 0x3e, 0xe5, 0x3e, 0xe6, 0x05, 0x07, 0x95, 0x9d, 0x83,0x05, Oxfb, Oxcl, 0x89, 0x81, 0x3b, 0x48, Oxac, 0x61, OxOf, 0x6b, 0x6e, 0xc9, 0x3f, 0x9d, Oxd8, 0x83, 0x20, 0x28, Oxld, 0x97, 0xa8, 0xe8, 0xb2, Oxal, 0x00, Oxf I, 0x73, 0x05, 0x38, Oxbc,Oxba, OxOd, Oxfc, 0xb3, Oxef, 0x85, 0x62, 0x2a, 0x04, 0x20, 0x10, Oxle, 0xa4, 0x40, Oxld, 0xda, 0x05,0x2d, 0xa6, 0x14,0xd6, 0x6f, OxOej 0x50,0x4f, Oxdej 0x8a, Oxalj OxOdj 0x84,Oxl4,0xa4, 0x71,Oxaej 0x9d, OxOcj 0xf8, Oxdbj 0x24,0x4c, 0xf4, 0x2f, 0x36,Oxdcj 0x31,0x35,Oxaf,Oxccj 0x20,0x5a, 0x9e, 0xd7, OxbO ;
[0084]智能密钥设备根据接收到的密钥标识“11”检索对应的私钥,根据检索到的私钥以及与接收到的摘要标识“02”对应的摘要算法“SM3”,对接收到的待签数据进行签名,得到的第二签名结果为:
[0085]0x55,0xb6, 0x57,Oxfaj 0x64,0x71,Oxbej 0x94,0x29,0x2b, Oxdej 0xc5, Oxdlj Ox3b,0x66,0x51,0xb6, 0x32,0xc5, 0x35,Oxeej 0xb5, 0xe6, 0x41,0x4c, 0xf6, 0x9c, 0x58,0x92, 0x96,0xd2, 0x77,Oxabj 0x8e, 0x8b, 0xb4, 0xf3, Oxefj 0x22,Oxlcj 0x9b, 0x86,0x3a, Oxac,0xd8, Oxlbj 0x3c, 0xc9, Oxefj 0x66,0x9b, 0x49,0x7a, 0x9b, 0x60, 0x92,0xf8, 0x07, Oxla,0xc7, Oxlfj 0xc7, 0x8e, 0x60。
[0086]步骤110,智能密钥设备向中间件发送第二签名结果。
[0087]步骤111,中间件向安全控件发送第二签名结果。
[0088]步骤112,安全控件根据待签数据和接收到的第二签名结果生成PKCS#10数据。
[0089]具体地,安全控件可以按照PKCS#10结构,将第二签名结果和待签数据封装成PKCS#10 数据。
[0090]例如,安全控件封装成的PKCS#10数据为:
[0091]0x30,0x82,0x01,0x4e, 0x30,0x81,0xb8, 0x02,0x01,0x00,0x30,OxOfj 0x31,OxOd,0x30,OxObj 0x06,0x03,0x55,0x04,0x03,OxOcj 0x04,0x74,0x65,0x73,0x74,0x30,0x81,-0x9f, 0x30,OxOdj 0x06,0x09,0x2a, 0x86,0x48,0x86,0xf7, OxOdj 0x01,0x01,0x01,0x05,Ox00,0x03,0x81,0x8d, 0x00,0x30,0x81,0x89,0x02,0x81,0x81,0x00,0xb8, 0xf7, 0x38,0x84,0x35,Oxcdj 0x3e, 0x4a, 0xc3, 0x34,0x2d, Oxbbj 0xe8, 0x8d, 0x26,0x54,0xe4, 0xd9, 0x25,0x43, 0x5c, 0x6b, 0x02,0x4d, 0x5d, 0x8f, 0x63,OxOej 0xf7, 0x9a, Oxfej 0x10,0x93,OxObj 0x87,0x2e, 0x9c, 0x33,0x56,0xa6, 0x5c, 0xd5, 0x3d, 0x04,0x7f, Oxfaj Oxeej 0x9f, 0x84,0x72,0x3e, 0x75,0x89,0x80,0x5b, 0x32,Oxlbj 0xb5, 0x16,0xa7, 0x4d, Oxelj 0x65,OxOcj 0x50,Ox19,0xc9, 0x86,0xc9, 0x37,0x8f, 0x50,0x8b, 0xd7, 0x41,0x70,0x83,0x62,0x66,0x91,0x49,Oxcej Oxlcj 0x85,0xd3, 0x99,0x4b, 0xf9, Oxabj 0xe4, 0x50,0x6c, 0x36,0xe2, 0x8c, 0xf7, 0x02, 0x62,0x6c, 0x4c, OxOfj 0x5c, Oxfcj Oxdaj Oxlcj 0xc7, Oxbbj 0x52,Oxfcj 0x32,Oxcdj 0x87,0x95,0x51,0xc9, Oxeej Oxacj 0xa8, 0x57,0x11,0x75,Oxfdj 0x21,0x37,OxOf,Oxalj 0xb9,0x31,0x02,0x03,0x01,0x00,0x01,OxaOj 0x00,0x30,OxOdj 0x06,0x09,0x2a, 0x86,0x48,Ox86,0xf7, OxOdj 0x01,0x01,0x05,0x05,0x00,0x03,0x81,0x81,0x00,
[0092]0x14,0xb7, OxOaj 0x5e, OxcOj OxbOj Oxf 1,0x89,0x2b, OxOej OxOaj Oxbej 0x3f, 0x41,0xd2, 0x2a, 0xc3, 0xb8, 0x57,0xf3, 0x2d, Oxfdj Oxeej Oxdbj 0x6e, 0x67,0x4c, 0xc3, Oxaf,0x56,0x52,0x4e, 0x9b, 0x5b, Oxdlj 0x3e, 0xe5, 0x3e, 0xe6, 0x05,0x07,0x95,0x9d, 0x83,0x05,Oxfbj Oxclj 0x89,0x81,0x3b, 0x48,Oxacj 0x61,OxOfj 0x6b, 0x6e, 0xc9, 0x3f, 0x9d, Oxd8,0x83,0x20,0x28,Oxld, 0x97,0xa8, 0xe8, 0xb2, Oxalj 0x00,Oxf 1,0x73,0x05,0x38,Oxbc,Oxbaj OxOdj Oxfcj 0xb3, Oxefj 0x85,0x62,0x2a, 0x04,0x20,0x10,Oxlej 0xa4, 0x40,Oxld, 0xda, 0x05,0x2d, 0xa6, 0x14,0xd6, 0x6f, OxOej 0x50,0x4f, Oxdej 0x8a, Oxalj OxOdj 0x84,Oxl4,0xa4, 0x71,Oxaej 0x9d, OxOcj 0xf8, Oxdbj 0x24,0x4c, Oxf4,0x2f, 0x36,Oxdcj 0x31,0x35,Oxafj Oxccj 0x20,0x5a, 0x9e, 0xd7, OxbO,
[0093]以及,
[0094]0x30,0x81,0xd7, 0x30,0x7f, 0x02,0x01,0x00,0x30,Oxld, 0x31,OxOej 0x30,OxOc,0x06,0x03,0x55,0x04,0x03,OxOcj 0x05,0x71,0x75,0x62,0x6f, 0x31,0x31,OxObj 0x30,-0x09,0x06,0x03,0x55,0x04,0x06,OxOcj 0x02,0x43,0x4e, 0x30,0x59,0x30,0x13,0x06,Ox07,0x2a, 0x86,0x48,Oxcej 0x3d, 0x02,0x01,0x06,0x08,0x2a, 0x81,Oxlcj Oxcfj 0x55,OxOl,0x82,0x2d, 0x03,0x42,0x00,0x04,Oxabj 0xc8, 0x2c, 0x9c, Oxffj 0x68,OxdOj Oxcdj 0x46,0x8f, 0x09,0x32,0x86,OxcOj 0x5a, Oxdbj 0x4e, 0x8f, 0x91,0x79,0x26,Oxcdj 0xc4, 0x02,0x7c, 0xe7, OxOaj 0xc6, 0x40,0x45,0xc3, 0x94,Oxdbj 0x96,0xc8, 0x4d, 0x78,0x46,0x42,0x03,0x8a, 0xb6, 0x22,Oxddj 0x4b, 0x78,0x8e, Oxddj 0x50,0x30,0xb8, OxaOj 0x17,0x83,0x61,OxdO, 0x40,0x7f, 0x68,0xb8, 0x36,0x9f, OxOfj Oxeej OxaOj 0x00,0x30,OxOaj 0x06,0x08,0x2a,0x81,Oxlcj Oxcfj 0x55,0x01,0x83,0x75,0x03,0x48,0x00,0x30,0x45,0x02,0x20,
[0095]0x55,0xb6, 0x57,Oxfaj 0x64,0x71,Oxbej 0x94,0x29,0x2b, Oxdej 0xc5, Oxdlj 0x3b,0x66,0x51,0xb6, 0x32,0xc5, 0x35,Oxeej 0xb5, 0xe6, 0x41,0x4c, 0xf6, 0x9c, 0x58,0x92,-0x96,0xd2, 0x77,0x02,0x21,0x00,Oxabj 0x8e, 0x8b, 0xb4, 0xf3, Oxefj 0x22,Oxlcj 0x9b, Ox86,0x3a, Oxacj 0xd8, Oxlbj 0x3c, 0xc9, Oxefj 0x66,0x9b, 0x49,0x7a, 0x9b, 0x60,0x92,0xf8,0x07,Oxlaj 0xc7, Oxlfj 0xc7, 0x8e, 0x60。
[0096]步骤113,安全控件向上层应用发送PKCS#10数据。
[0097]步骤114,上层应用对接收到的PKCS#10数据进行保存。
[0098]步骤115,上层应用向安全控件发送第一公钥类型信息。
[0099]具体地,上层应用可以通过调用安全控件的第五接口,将第一公钥类型信息发送给安全控件。
[0100]本实施例中,第一公钥类型信息为“NoCertPubKey”,表示无证书公钥。
[0101]步骤116,安全控件判断智能密钥设备中是否存在与获取到的第一公钥类型信息匹配的公钥,如果是,则执行步骤118 ;否则,执行步骤117。
[0102]具体地,安全控件可以将第一公钥类型信息作为参数,调用中间件的接口,对智能密钥设备中的对象进行枚举,判断智能密钥设备中是否存在与上述第一公钥类型信息关联的对象,如果存在,则确定智能密钥设备中存在与该第一公钥类型信息匹配的公钥;否则,确定智能密钥设备中不存在与该第一公钥类型信息匹配的公钥。
[0103]步骤117,安全控件向上层应用返回空字符串。
[0104]步骤118,安全控件从智能密钥设备中获取与第一公钥类型信息匹配的密钥标识。
[0105]例如,安全控件从智能密钥设备中获取与第一公钥类型信息“NoCertPubKey”匹配的密钥标识为:“02”和“11”
[0106]步骤119,安全控件向上层应用发送密钥标识。
[0107]步骤120,上层应用向安全控件发送包含密钥标识的密文公钥请求信息。
[0108]具体地,上层应用可以通过调用安全控件的第二接口,向安全控件发送密文公钥请求信息。
[0109]其中,密文公钥请求信息包括保护密钥用途、密钥标识和随机数。
[0110]例如,上层应用向安全控件发送的密文公钥请求信息包括保护密钥用途“01”、密钥标识“02”和随机数“MTIZNDU2NZg5MDEyMZQl”,以及保护密钥用途“01 ”、密钥标识“ 11 ”和随机数 “MTIzNDU2Nzg5MDEyMzQl ”。
[0111]步骤121,安全控件判断智能密钥设备中是否存在与接收到的密文公钥请求信息中的密钥标识匹配的公钥,如果是,则执行步骤123 ;否则,执行步骤122。
[0112]具体地,安全控件可以将与智能密钥设备对应的槽位号以及密文公钥请求信息中的密钥标识作为参数,调用中间件的接口,对智能密钥设备中的对象进行枚举,判断智能密钥设备中是否存在于上述密钥标识关联的对象,如果存在,则确定智能密钥设备中存在与该密钥标识匹配的公钥;否则,确定智能密钥设备中不存在与该密钥标识匹配的公钥。
[0113]步骤122,安全控件向上层应用返回空字符串。
[0114]步骤123,安全控件向中间件发送与智能密钥设备对应的槽位号和密文公钥请求信息。
[0115]例如,安全控件向中间件发送槽位号“I”、保护密钥用途“01”、密钥标识“02”和随机数“MTIZNDU2NZg5MDEyMZQl ”,以及槽位号“ I ”、保护密钥用途“01 ”、密钥标识“ 11 ”和随机数 “MTIzNDU2Nzg5MDEyMzQl”。
[0116]步骤124,中间件根据接收到的密文公钥请求信息,生成密文公钥获取指令。
[0117]例如,中间件生成的密文公钥获取指令为:
[0118]0x80, 0x49, 0x00, 0x01, 0x13, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,0x38,0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2B, 0x02 ;
[0119]以及,
[0120]0x80, 0x49, 0x00, 0x01, 0x13, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, OxlB, 0x01。
[0121]步骤125,中间件向与接收得到的槽位号对应的智能密钥设备发送密文公钥获取指令。
[0122]步骤126,智能密钥设备从密文公钥获取指令中获取密钥标识、保护密钥用途和随机数,根据获取到的密钥标识检索对应的公钥,根据获取到的保护密钥用途和随机数生成工作密钥,使用该工作密钥对检索到的公钥进行加密,生成密文公钥。
[0123]例如,智能密钥设备生成的密文公钥为:
[0124]0x77, 0xE5, 0x5A, OxOD, 0x3B, 0x72, 0x72, 0x80, OxBO, 0x7F, OxEF, 0x97, 0x5D, 0x63, 0x7E, 0x69, 0xE5, OxlC, OxFD, OxAC, 0x15, OxBE, OxBA, 0x9B, 0x22, 0x74, 0x2D, 0x85, 0x1A, 0x53, 0x6D, 0x94, 0x30, 0x63, 0x9B, 0xA9, 0x16, OxEF, 0x84, 0x7E, 0x46, 0x53, 0x6F, 0x85,0xF3, 0x9A, OxBF, 0x78, 0xC5, OxDF, 0x49, 0x13, 0x47, OxFC, 0xC3, 0x4B, 0x97, 0x96, 0x11, OxF4, 0xB9, 0x61, 0xC3, 0x4B, 0x7E, 0x5E, 0xB6, 0xF7, 0x3E, 0x4C, 0x04, 0xB3, 0x19, 0x77, 0x67,0xE3, OxBB, 0x54, 0xC3, 0x65, 0x8F, 0x7A, OxDE, 0x6F, 0x6C, 0x5B, 0x20, 0x45, 0xC2, 0x19, 0xFC, 0x91, 0xF8, 0xD5, 0x8A, 0xC3, 0xE9, 0x7D, OxlC, OxAF, 0x2D, 0x9B, 0x41, 0xE4, 0x59, 0x5
A,0x9D, 0xE2, 0x08, 0x8F, 0xA8, 0x6D, OxCA, OxCB, 0xC2, 0x2A, OxEB, 0x24, 0x19, 0x90, 0x43,0x11, 0x12, 0x36, 0x85, 0x8F, OxDF, 0x04, 0x05, 0x3A, OxDB, 0x60, 0xE5, 0x20, 0x89, 0x62, Ox98, OxAC, 0x83, 0x70, 0x80, 0x01, OxlF, 0x25, 0x45, 0x3D, OxEA, 0x17, 0x43, 0x06, 0x6D, 0xE2,0xC5, 0x47, 0xD7, 0x3A, 0x89, OxAA, 0x9E, OxDO, 0x8E, OxAO, 0x13, 0x2F, OxCO, 0xA4, OxCl, 0xFB, OxCF, 0x9B, 0xC5, OxFF, 0x4D, 0x87, 0x41, 0xE9, 0xA2, 0x24, 0x9C ;
[0125]以及,
[0126]0x52,0x8F, 0χΕ3, 0x66,0xF3, OxOBj 0χΕ4, OxECj OxECj 0x62,0χ8Α, 0x4C, OxlEj OxlD,0χΒ4, OxFEj 0x87,OxAIj OxECj OxOBj 0x47,0x23,0x64,0x2D, 0x4D, 0x21,0χΒ7, 0x40,0x84,-OxEEj 0χ2Α, 0χ5Β, OxBDj 0xD7, OxCCj 0x54,0xF9, OxFOj 0x64,0x01,0x82,OxCCj 0x73,0χ3Ε, OxECj 0χ3Α, 0x53,0xF3, 0χ4Ε, 0x96,0x45,0χ8Β, 0χΒ3, 0x05,0x73,0x34,0x95,0x87,0xC8, OxAE,0x6D, 0x73,0xD5, 0x55,0x48,0x70,0xC7, 0x28,0x63,0x28,0x35,0x5B, 0xF7, 0xF5, OxADj 0xlB, 0xC2, 0x82,0x74,0x6A, 0x55,OxOFj 0x40,OxDFj 0x10,0x21,0x15,0x7D, 0xE3, 0xF2, OxADj 0x65,0x65,0x79,0x7F, 0x14,0xA2, OxOFj OxlD0
[0127]步骤127,智能密钥设备向中间件发送密文公钥。
[0128]步骤128,中间件向安全控件发送密文公钥。
[0129]步骤129,安全控件向上层应用发送密文公钥。
[0130]步骤130,上层应用根据接收到的密文公钥判断自身保存的PKCS#10数据是否正确,如果不正确,则结束流程;如果正确,则执行步骤131。
[0131 ] 具体地,上层应用接收到来自安全控件的密文公钥后,对该密文公钥进行保存,并将自身保存的PKCS#10数据中的明文公钥发送给证书服务器,通过证书服务器对该明文公钥进行加密,接收该证书服务器返回的密文公钥,并判断证书服务器返回的密文公钥是否与来自安全控件的密文公钥相同,如果相同,则确定自身保存的PKCS#10数据正确;否则,确定自身保存的PKCS#10数据不正确。
[0132]步骤131,上层应用向证书服务器发送证书生成请求。
[0133]步骤132,证书服务器向上层应用返回证书。
[0134]步骤133,上层应用向安全控件发送证书。
[0135]具体地,上层应用可以通过调用安全控件的第三接口,向安全控件发送证书。
[0136]步骤134,安全控件判断接收到的证书是否正确,如果是,则执行步骤135 ;否则,向上层应用返回异常信息。
[0137]具体地,安全控件可以判断证书是否符合PKCS#7结构,如果符合,则确定证书正确;否则,确定证书错误。
[0138]步骤135,安全控件向中间件发送证书。
[0139]步骤136,中间件对接收到的证书进行安装和设置。
[0140]具体地,中间件可以根据证书中的公钥,对智能密钥设备中的对象进行枚举,从智能密钥设备中获取与证书中的公钥匹配的公钥,将获取到的公钥对应的密钥标识和证书用途添加为上述证书的属性。
[0141]例如,中间件从智能密钥设备中获取与证书中的公钥匹配的公钥后,将该公钥对应的密钥标识“02”和证书用途“03”添加为证书的属性。
[0142]步骤137,中间件判断当前安装的证书是否为通用证书或混用证书,如果是,则执行步骤138;否则,结束流程。
[0143]步骤138,中间将当前安装的通用证书或混用证书注册到浏览器的证书存储区中,并使用注册的证书进行双向SSL认证。
[0144]基于上述证书下载方法,本发明实施例还提供了一种基于多证书多用途的数字签名方法,如图3所示,包括以下步骤:
[0145]步骤201,上层应用向安全控件发送证书标识、哈希名和报文数据。
[0146]具体地,上层应用可以通过调用安全控件的第四接口,向安全控件发送证书标识、哈希名和报文数据。
[0147]例如,上层应用向安全控件发送证书标识“TEST2”、哈希名“SM3”和报文数据。
[0148]步骤202,安全控件判断证书标识是否有效,如果是,则执行步骤203 ;否则,向上层应用返回异常信息。
[0149]具体地,安全控件可以将证书标识作为参数,调用中间件的接口,对智能密钥设备中的证书进行枚举,判断智能密钥设备中是否存在与上述证书标识对应的证书,如果存在,则确定证书标识有效;否则,确定证书标识无效。
[0150]步骤203,安全控件判断与证书标识对应的证书是否为专用证书或混用证书,如果是,则获取与证书标识对应的密钥标识,并执行步骤204 ;否则,向上层应用返回异常信息。
[0151]具体地,安全控件可以获取与证书标识对应的证书用途,根据获取到的证书用途,判断证书标识对应的证书是否为专用证书或混用证书。
[0152]例如,安全控件获取与证书标识“TEST2”对应的证书用途“01”,确定对应的证书为专用证书,并获取与证书标识“TEST2”对应的密钥标识“11”。
[0153]步骤204,安全控件向中间件发送报文数据、哈希名和证书标识对应的密钥标识。
[0154]例如,安全控件向中间件发送报文数据、哈希名“ SM3 ”和密钥标识“ 11 ”。
[0155]步骤205,中间件向智能密钥设备发送报文数据、密钥标识以及与哈希名对应的哈希标识;
[0156]步骤206,智能密钥设备对报文数据中的显示数据进行显示。
[0157]步骤207,智能密钥设备检测到预设按键被触发后,使用与密钥标识对应的私钥,按照与哈希标识对应的签名机制,对报文数据进行签名,得到第一签名结果。
[0158]例如,中间件得到的第一签名结果为:
[0159]0xb5, 0x41,Oxlcj 0xf6, 0x72,0x7e, 0xa4, Oxdfj 0xb7, 0x09,0x50,0x4b, 0x6a, Ox65,OxbOj 0x8f, 0xe5, 0x93,0x69,0x50,0xb8, 0x6e, 0x4f, 0xf7, Oxcdj Oxbfj 0xe2, 0x68,0x24, 0x82,Oxeaj 0x3d, Oxcfj Oxblj Oxblj Oxcbj 0x5b, Oxlcj 0x73,0x43,0x34,0xc3, 0x68,Oxdb,0x76,0xe6, 0x01,0xd8, 0x5d, 0x91,0x46,0x3f, 0x00,0x2c, Oxeaj 0xd3, 0x5d, 0x5e, Oxc5,0x45,0xf3, 0x37,0x77,0x76。
[0160]步骤208,智能密钥设备将第一签名结果发送给中间件。
[0161]步骤209,中间件向安全控件发送第一签名结果。
[0162]步骤210,安全控件根据第一签名结果、报文数据、与证书标识对应的证书生成签名数据。
[0163]具体地,安全控件可以按照PKCS#7结构,对第一签名结果、报文数据、与证书标识对应的证书进行封装,生成签名数据。
[0164]步骤211,安全控件向上层应用发送签名数据。
[0165]步骤212,上层应用对接收到的签名数据进行保存。
[0166]本发明实施例将多张数字证书下载到智能密钥设备中,将通用证书或混用证书注册到浏览器的证书存储区中,并使用专用证书或混用证书进行数字签名,在支持非交互式签名的同时,还能够进行交互式签名,提高了数字签名的安全性和通用性。
[0167]基于上述数字签名方法,本发明实施例还提供了一种基于多证书多用途的数字签名系统,如图4所示,包括上层应用300、安全控件400、中间件500和智能密钥设备600 ;
[0168]其中,安全控件400,包括:
[0169]第一接收模块401,用于接收来自上层应用300的证书标识、哈希名和报文数据;接收来自中间件500的第一签名结果;
[0170]第一判断模块402,用于判断第一接收模块401接收到的证书标识是否有效;
[0171]具体地,上述第一判断模块402,具体用于将证书标识作为参数,调用中间件500的接口,对智能密钥设备600中的证书进行枚举,判断智能密钥设备600中是否存在与证书标识对应的证书,如果存在,则确定证书标识有效;否则,确定证书标识无效。
[0172]第二判断模块403,用于在第一判断模块402判断出证书标识有效时,判断与证书标识对应的证书是否为专用证书或混用证书;
[0173]第一获取模块404,用于在第二判断模块403判断出与证书标识对应的证书是专用证书或混用证书时,获取与证书标识对应的密钥标识;
[0174]第一生成模块405,用于根据报文数据、与证书标识对应的证书和第一接收模块401接收到的第一签名结果生成签名数据;
[0175]第一发送模块406,用于向中间件500发送报文数据、哈希名和第一获取模块404获取到的密钥标识,将第一生成模块405生成的签名数据发送给上层应用300 ;
[0176]在第一判断模块402判断出证书标识无效时,向上层应用300返回异常信息;在第二判断模块403判断出与证书标识对应的证书不是专用证书或混用证书时,向上层应用300返回异常信息;
[0177]中间件500,包括:
[0178]注册模块501,用于将智能密钥设备600中的通用证书或混用证书注册到浏览器的证书存储区中;
[0179]第一签名模块502,用于使用注册模块501注册的证书进行非交互式签名;
[0180]第二接收模块503,用于接收来自安全控件400的报文数据、哈希名和密钥标识;接收来自智能密钥设备600的第一签名结果;
[0181]第二发送模块504,用于向智能密钥设备600发送报文数据、密钥标识以及与哈希名对应的哈希标识;将第二接收模块503接收到的第一签名结果发送给安全控件400 ;
[0182]智能密钥设备600,包括:
[0183]存储模块601,用于存储通用证书、专用证书和混用证书中的至少两种数字证书;
[0184]第三接收模块602,用于接收来自中间件500的报文数据、密钥标识和哈希标识;
[0185]显示模块603,用于对第三接收模块602接收到的报文数据中的显示数据进行显示;
[0186]检测模块604,用于检测按键;
[0187]第二签名模块605,用于在检测模块604检测到预设按键被触发后,使用与密钥标识对应的私钥,按照与哈希标识对应的签名机制,对第三接收模块602接收到的报文数据进行签名,得到第一签名结果;
[0188]第三发送模块606,用于将第二签名模块605得到的第一签名结果发送给中间件500 ;
[0189]上层应用300,包括:
[0190]第四发送模块301,用于向安全控件400发送证书标识、哈希名和报文数据;
[0191]第四接收模块302,用于接收来自安全控件400的签名数据和异常信息。
[0192]进一步地,上述第一接收模块401,还用于接收来自上层应用300的证书;
[0193]相应地,安全控件400,还包括:
[0194]第三判断模块407,用于判断第一接收模块401接收到的证书是否正确;
[0195]上述第一发送模块406,还用于在第三判断模块407判断出证书不正确时,向上层应用300返回异常信息;在第三判断模块407判断出证书正确时,向中间件500发送证书;
[0196]上述第二接收模块503,还用于接收来自安全控件400的证书;
[0197]中间件500,还包括:
[0198]安装模块505,用于对第二接收模块503接收到的证书进行安装和设置;
[0199]具体地,上述安装模块505,具体用于对证书进行安装,根据证书中的公钥,对智能密钥设备600中的对象进行枚举,从智能密钥设备600中获取与证书中的公钥匹配的公钥,将获取到的公钥对应的密钥标识和证书用途添加为证书的属性。
[0200]第四判断模块506,用于判断安装模块505当前安装的证书是否为通用证书或混用证书;
[0201]相应地,上述注册模块501,具体用于在第四判断模块506判断出当前安装的证书为通用证书或混用证书时,将当前安装的通用证书或混用证书注册到浏览器的证书存储区中。
[0202]进一步地,上述第一接收模块401,还用于接收来自上层应用300的第一公钥类型信息;
[0203]相应地,安全控件400,还包括:
[0204]第五判断模块408,用于判断智能密钥设备600中是否存在与第一接收模块401接收到的第一公钥类型信息匹配的公钥;
[0205]具体地,上述第五判断模块408,具体用于将第一公钥类型信息作为参数,调用中间件500的接口,对智能密钥设备600中的对象进行枚举,判断智能密钥设备600中是否存在与第一公钥类型信息关联的对象,如果存在,则确定智能密钥设备600中存在与第一公钥类型信息匹配的公钥;否则,确定智能密钥设备600中不存在与第一公钥类型信息匹配的公钥。
[0206]第二获取模块409,用于在第五判断模块408判断出智能密钥设备600中存在与第一公钥类型信息匹配的公钥时,从智能密钥设备600中获取与第一公钥类型信息匹配的密钥标识;
[0207]上述第一发送模块406,还用于将第二获取模块409获取到的密钥标识发送给上层应用300 ;在第五判断模块408判断出智能密钥设备600中不存在与第一公钥类型信息匹配的公钥时,向上层应用300返回空字符串;
[0208]上述第四接收模块302,还用于接收来自安全控件400的密钥标识;
[0209]上述第四发送模块301,还用于向安全控件400发送包含密钥标识、保护密钥用途和随机数的密文公钥请求信息;
[0210]上述第一接收模块401,还用于接收来自上层应用300的密文公钥请求信息;
[0211]安全控件400,还包括:
[0212]第六判断模块410,用于判断智能密钥设备600中是否存在与第一接收模块401接收到的密文公钥请求信息中的密钥标识匹配的公钥;
[0213]上述第一发送模块406,还用于在第六判断模块410判断出智能密钥设备600中不存在与密文公钥请求信息中的密钥标识匹配的公钥时,向上层应用300返回空字符串;在第六判断模块410判断出智能密钥设备600中存在与密文公钥请求信息中的密钥标识匹配的公钥时,向中间件500发送与智能密钥设备600对应的槽位号和密文公钥请求信息;
[0214]上述第二接收模块503,还用于接收来自安全控件400的槽位号和密文公钥请求信息;
[0215]中间件500,还包括:
[0216]第二生成模块507,用于根据第二接收模块503接收到的密文公钥请求信息生成密文公钥获取指令;
[0217]上述第二发送模块504,还用于将第二生成模块507生成的密文公钥获取指令发送给与槽位号对应的智能密钥设备600 ;
[0218]上述第三接收模块602,还用于接收来自中间件500的密文公钥获取指令;
[0219]智能密钥设备600,还包括:
[0220]第三获取模块607,用于从第三接收模块602接收到的密文公钥获取指令中获取密钥标识、保护密钥用途和随机数;
[0221 ] 检索模块608,用于根据第三获取模块607获取到的密钥标识检索对应的公钥;
[0222]第三生成模块609,用于根据第三获取模块607获取到的保护密钥用途和随机数生成工作密钥,使用工作密钥对检索模块608检索到的公钥进行加密,生成密文公钥;
[0223]上述第三发送模块606,还用于将第三生成模块609生成的密文公钥发送给中间件 500 ;
[0224]上述第二接收模块503,还用于接收来自智能密钥设备600的密文公钥;
[0225]上述第二发送模块504,还用于向安全控件400发送第二接收模块503接收到的密文公钥;
[0226]上述第一接收模块401,还用于接收来自中间件500的密文公钥;
[0227]上述第一发送模块406,还用于向上层应用300发送第一接收模块401接收到的密文公钥;
[0228]上述第四接收模块302,还用于接收来自安全控件400的密文公钥;
[0229]上层应用300,还包括:
[0230]第七判断模块303,还用于根据第四接收模块302接收到的密文公钥判断上层应用300保存的PKCS#10数据是否正确;
[0231]具体地,上述第七判断模块303,具体用于对来自安全控件400的密文公钥进行保存,将PKCS#10数据中的明文公钥发送给证书服务器,通过证书服务器对明文公钥进行加密,接收证书服务器返回的密文公钥,并判断证书服务器返回的密文公钥是否与来自安全控件400的密文公钥相同,如果相同,则确定PKCS#10数据正确;否则,确定PKCS#10数据不正确。
[0232]上述第四发送模块301,还用于在第七判断模块303判断出PKCS#10数据正确时,向证书服务器发送证书生成请求;
[0233]上述第四接收模块302,还用于接收证书服务器返回的证书。
[0234]进一步地,上述第一接收模块401,还用于接收来自上层应用300的证书请求信息;
[0235]相应地,安全控件400,还包括:
[0236]第八判断模块411,用于判断第一接收模块401接收到的证书请求信息是否有效;
[0237]其中,证书请求信息包含一个或多个证书信息单元,每个证书信息单元包括与一张证书对应的证书标识、摘要算法、证书用途、密钥类型和密钥长度。
[0238]优选地,证书请求信息包含两个证书信息单元,其中一个证书信息单元与专用证书对应,另一个证书信息单元与通用证书或混用证书对应。
[0239]相应地,上述第八判断模块411,具体用于判断证书请求信息中包含的证书信息单兀是否都有效,如果是,则确定证书请求彳目息有效;否则,确定证书请求?目息无效。
[0240]具体地,第八判断模块411判断证书信息单元是否有效,具体包括以下操作中的一项或多项:
[0241]第八判断模块411判断证书信息单元中的证书标识是否合法;
[0242]第八判断模块411判断证书信息单元中的摘要算法是否包含在预设算法列表中;
[0243]第八判断模块411判断证书信息单元中的证书用途是否包含在预设用途列表中;
[0244]第八判断模块411判断证书信息单元中的密钥类型和密钥长度是否包含在预设密钥列表中;
[0245]其中,预设算法列表中包含一个或多个摘要算法,预设用途列表中包含一个或多个证书用途,预设密钥列表中包含一组或多组密钥属性,密钥属性包括密钥类型和密钥长度。
[0246]上述第一发送模块406,还用于在第八判断模块411判断出证书请求信息有效时,向中间件500发送证书请求信息;在第八判断模块411判断出证书请求信息无效时,向上层应用300返回异常信息;
[0247]上述第二接收模块503,还用于接收来自安全控件400的证书请求信息;
[0248]中间件500,还包括:
[0249]第四生成模块508,用于根据第二接收模块503接收到的证书请求信息生成密钥对,为密钥对分配密钥标识;
[0250]设置模块509,用于对第四生成模块508生成的密钥对中的公钥和私钥进行设置;
[0251]具体地,上述设置模块509,具体用于将证书请求信息中的证书用途添加为公钥和私钥的属性。
[0252]上述第二发送模块504,还用于向安全控件400发送密钥标识和公钥;
[0253]上述第一接收模块401,还用于接收来自中间件500的密钥标识和公钥;
[0254]安全控件400,还包括:
[0255]第五生成模块412,用于根据第一接收模块401接收到的公钥和证书请求信息,生成待签数据;
[0256]上述第一发送模块406,还用于向中间件500发送第五生成模块412生成的待签数据、密钥标识以及证书请求信息中的摘要算法;
[0257]上述第二接收模块503,还用于接收来自安全控件400的待签数据、密钥标识以及证书请求信息中的摘要算法;
[0258]上述第二发送模块504,还用于向智能密钥设备600发送待签数据、密钥标识以及与摘要算法对应的摘要标识;
[0259]上述第三接收模块602,还用于接收来自中间件500的待签数据、密钥标识以及与摘要算法对应的摘要标识;
[0260]智能密钥设备600,还包括:
[0261]第三签名模块610,用于使用与第三接收模块602接收到的密钥标识对应的私钥,按照与摘要标识对应的签名机制,对待签数据进行签名,得到第二签名结果;
[0262]上述第三发送模块606,还用于将第三签名模块610得到的第二签名结果发送给中间件500 ;
[0263]上述第二接收模块503,还用于接收来自智能密钥设备600的第二签名结果;
[0264]上述第二发送模块504,还用于向安全控件400发送第二签名结果;
[0265]上述第一接收模块401,还用于接收来自中间件500的第二签名结果;
[0266]安全控件400,还包括:
[0267]第六生成模块413,用于根据待签数据和第一接收模块401接收到的第二签名结果生成PKCS#10数据;
[0268]上述第一发送模块406,还用于将第六生成模块413生成的PKCS#10数据发送给上层应用300 ;
[0269]上述第四接收模块302,还用于接收来自安全控件400的PKCS#10数据;
[0270]上层应用300,还包括:
[0271]保存模块304,用于对第四接收模块302接收到的PKCS#10数据进行保存。
[0272]本发明实施例将多张数字证书下载到智能密钥设备中,将通用证书或混用证书注册到浏览器的证书存储区中,并使用专用证书或混用证书进行数字签名,在支持非交互式签名的同时,还能够进行交互式签名,提高了数字签名的安全性和通用性。
[0273]结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或【技术领域】内所公知的任意其它形式的存储介质中。
[0274]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
【权利要求】
1.一种基于多证书多用途的数字签名方法,其特征在于,应用于包括上层应用、安全控件、中间件和智能密钥设备的系统中,所述智能密钥设备中存储有通用证书、专用证书和混用证书中的至少两种数字证书,所述中间件将所述智能密钥设备中的通用证书或混用证书注册到浏览器的证书存储区中,并使用注册的证书进行非交互式签名,所述方法还包括以下步骤: 51、所述安全控件接收来自所述上层应用的证书标识、哈希名和报文数据; 52、所述安全控件判断所述证书标识是否有效,如果是,则执行步骤S3;否则,向所述上层应用返回异常信息,结束流程; 53、所述安全控件判断与所述证书标识对应的证书是否为专用证书或混用证书,如果是,则获取与所述证书标识对应的密钥标识,并执行步骤S4 ;否则,向所述上层应用返回异常信息; 54、所述安全控件向所述中间件发送所述报文数据、所述哈希名和所述密钥标识; 55、所述中间件向所述智能密钥设备发送所述报文数据、所述密钥标识以及与所述哈希名对应的哈希标识; 56、所述智能密钥设备对所述报文数据中的显示数据进行显示,并在检测到预设按键被触发后,使用与所述密钥标识对应的私钥,按照与所述哈希标识对应的签名机制,对所述报文数据进行签名,得到第一签名结果,将所述第一签名结果发送给所述中间件; 57、所述中间件将所述第一签名结果发送给所述安全控件; 58、所述安全控件根据所述第一签名结果、所述报文数据以及与所述证书标识对应的证书生成签名数据,将所述签名数据发送给所述上层应用。
2.如权利要求1所述的方法,其特征在于,所述安全控件判断所述证书标识是否有效,具体为: 所述安全控件将所述证书标识作为参数,调用所述中间件的接口,对所述智能密钥设备中的证书进行枚举,判断所述智能密钥设备中是否存在与所述证书标识对应的证书,如果存在,则确定所述证书标识有效;否则,确定所述证书标识无效。
3.如权利要求1所述的方法,其特征在于,还包括: Al、所述安全控件接收来自所述上层应用的证书; A2、所述安全控件判断所述证书是否正确,如果是,则执行步骤A3 ;否则,向所述上层应用返回异常信息; A3、所述安全控件向所述中间件发送所述证书; A4、所述中间件对所述证书进行安装和设置; A5、所述中间件判断当前安装的证书是否为通用证书或混用证书,如果是,则执行步骤A6;否则,结束流程; A6、所述中间将当前安装的通用证书或混用证书注册到浏览器的证书存储区中,并使用注册的证书进行非交互式签名。
4.如权利要求3所述的方法,其特征在于,所述中间件对所述证书进行设置,具体为: 所述中间件根据所述证书中的公钥,对所述智能密钥设备中的对象进行枚举,从所述智能密钥设备中获取与所述证书中的公钥匹配的公钥,将获取到的公钥对应的密钥标识和证书用途添加为所述证书的属性。
5.如权利要求3所述的方法,其特征在于,所述步骤Al之前,还包括: B1、所述安全控件接收来自所述上层应用的第一公钥类型信息; B2、所述安全控件判断所述智能密钥设备中是否存在与所述第一公钥类型信息匹配的公钥,如果是,则执行步骤B4 ;否则,执行步骤B3 ; B3、所述安全控件向所述上层应用返回空字符串,结束流程; B4、所述安全控件从所述智能密钥设备中获取与所述第一公钥类型信息匹配的密钥标识,将所述密钥标识发送给所述上层应用; B5、所述上层应用向所述安全控件发送包含所述密钥标识、保护密钥用途和随机数的密文公钥请求信息; B6、所述安全控件判断所述智能密钥设备中是否存在与所述密文公钥请求信息中的所述密钥标识匹配的公钥,如果是,则执行步骤121 ;否则,执行步骤B7 ; B7、所述安全控件向所述上层应用返回空字符串,结束流程; B8、所述安全控件向所述中间件发送与所述智能密钥设备对应的槽位号和所述密文公钥请求信息; B9、所述中间件根据所述密文公钥请求信息生成密文公钥获取指令,将所述密文公钥获取指令发送给与所述槽位号对应的智能密钥设备; B10、所述智能密钥设备从所述密文公钥获取指令中获取所述密钥标识、所述保护密钥用途和所述随机数,根据所述密钥标识检索对应的公钥,根据所述保护密钥用途和所述随机数生成工作密钥,使用所述工作密钥对检索到的公钥进行加密,生成密文公钥,将所述密文公钥发送给所述中间件; BH、所述中间件向所述安全控件发送所述密文公钥; B12、所述安全控件向所述上层应用发送所述密文公钥; B13、所述上层应用根据所述密文公钥判断自身保存的PKCS#10数据是否正确,如果不正确,则结束流程;如果正确,则执行步骤B14 ; B14、所述上层应用向证书服务器发送证书生成请求,接收所述证书服务器返回的所述证书,并执行所述步骤Al。
6.如权利要求5所述的方法,其特征在于,所述安全控件判断所述智能密钥设备中是否存在与所述第一公钥类型信息匹配的公钥,具体为: 所述安全控件将所述第一公钥类型信息作为参数,调用中间件的接口,对所述智能密钥设备中的对象进行枚举,判断所述智能密钥设备中是否存在与所述第一公钥类型信息关联的对象,如果存在,则确定所述智能密钥设备中存在与所述第一公钥类型信息匹配的公钥;否则,确定所述智能密钥设备中不存在与所述第一公钥类型信息匹配的公钥。
7.如权利要求5所述的方法,其特征在于,所述上层应用根据所述密文公钥判断自身保存的PKCS#10数据是否正确,具体为: 所述上层应用对来自所述安全控件的密文公钥进行保存,将自身保存的PKCS#10数据中的明文公钥发送给所述证书服务器,通过所述证书服务器对所述明文公钥进行加密,接收所述证书服务器返回的密文公钥,并判断所述证书服务器返回的密文公钥是否与来自所述安全控件的密文公钥相同,如果相同,则确定自身保存的PKCS#10数据正确;否则,确定自身保存的PKCS#10数据不正确。
8.如权利要求5所述的方法,其特征在于,所述步骤BI之前,还包括: Cl、所述安全控件接收来自所述上层应用的证书请求信息; C2、所述安全控件判断所述证书请求信息是否有效,如果是,则执行步骤C3 ;否则,向所述上层应用返回异常信息,结束流程; C3、所述安全控件向所述中间件发送所述证书请求信息; C4、所述中间件根据所述证书请求信息生成密钥对,为所述密钥对分配密钥标识,并对所述密钥对中的公钥和私钥进行设置; C5、所述中间件向所述安全控件发送所述密钥标识和所述公钥; C6、所述安全控件根据所述公钥和所述证书请求信息,生成待签数据; C7、所述安全控件向所述中间件发送所述待签数据、所述密钥标识以及所述证书请求信息中的摘要算法; CS、所述中间件向所述智能密钥设备发送所述待签数据、所述密钥标识以及与所述摘要算法对应的摘要标识; C9、所述智能密钥设备使用与所述密钥标识对应的私钥,按照与所述摘要标识对应的签名机制,对所述待签数据进行签名,得到第二签名结果,将所述第二签名结果发送给所述中间件; C1、所述中间件向所述安全控件发送所述第二签名结果; C11、所述安全控件根据所述待签数据和所述第二签名结果生成PKCS#10数据,将所述PKCS#10数据发送给所述上层应用; C12、所述上层应用对所述PKCS#10数据进行保存。
9.如权利要求8所述的方法,其特征在于,所述证书请求信息包含一个或多个证书信息单元,每个证书信息单元包括与一张证书对应的证书标识、摘要算法、证书用途、密钥类型和密钥长度。
10.如权利要求9所述的方法,其特征在于,所述证书请求信息包含两个证书信息单元,其中一个证书信息单元与专用证书对应,另一个证书信息单元与通用证书或混用证书对应。
11.如权利要求9所述的方法,其特征在于,所述安全控件判断所述证书请求信息是否有效,具体为: 所述安全控件判断所述证书请求信息中包含的证书信息单元是否都有效,如果是,则确定所述证书请求信息有效;否则,确定所述证书请求信息无效。
12.如权利要求11所述的方法,其特征在于,所述安全控件判断证书信息单元是否有效,具体包括以下操作中的一项或多项: 所述安全控件判断所述证书信息单元中的证书标识是否合法; 所述安全控件判断所述证书信息单元中的摘要算法是否包含在预设算法列表中; 所述安全控件判断所述证书信息单元中的证书用途是否包含在预设用途列表中;所述安全控件判断所述证书信息单元中的密钥类型和密钥长度是否包含在预设密钥列表中; 其中,所述预设算法列表中包含一个或多个摘要算法,所述预设用途列表中包含一个或多个证书用途,所述预设密钥列表中包含一组或多组密钥属性,所述密钥属性包括密钥类型和密钥长度。
13.如权利要求8所述的方法,其特征在于,所述中间件对所述密钥对中的公钥和私钥进行设置,具体为: 所述中间件将所述证书请求信息中的证书用途添加为所述公钥和所述私钥的属性。
14.一种基于多证书多用途的数字签名系统,其特征在于,包括上层应用、安全控件、中间件和智能密钥设备; 所述安全控件,包括: 第一接收模块,用于接收来自所述上层应用的证书标识、哈希名和报文数据;接收来自所述中间件的第一签名结果; 第一判断模块,用于判断所述第一接收模块接收到的所述证书标识是否有效; 第二判断模块,用于在所述第一判断模块判断出所述证书标识有效时,判断与所述证书标识对应的证书是否为专用证书或混用证书; 第一获取模块,用于在所述第二判断模块判断出与所述证书标识对应的证书是专用证书或混用证书时,获取与所述证书标识对应的密钥标识; 第一生成模块,用于根据所述报文数据、与所述证书标识对应的证书和所述第一接收模块接收到的所述第一签名结果生成签名数据; 第一发送模块,用于向所述中间件发送所述报文数据、所述哈希名和所述第一获取模块获取到的所述密钥标识,将所述第一生成模块生成的所述签名数据发送给所述上层应用; 在所述第一判断模块判断出所述证书标识无效时,向所述上层应用返回异常信息;在所述第二判断模块判断出与所述证书标识对应的证书不是专用证书或混用证书时,向所述上层应用返回异常信息; 所述中间件,包括: 注册模块,用于将所述智能密钥设备中的通用证书或混用证书注册到浏览器的证书存储区中; 第一签名模块,用于使用所述注册模块注册的证书进行非交互式签名; 第二接收模块,用于接收来自所述安全控件的所述报文数据、所述哈希名和所述密钥标识;接收来自所述智能密钥设备的第一签名结果; 第二发送模块,用于向所述智能密钥设备发送所述报文数据、所述密钥标识以及与所述哈希名对应的哈希标识;将所述第二接收模块接收到的所述第一签名结果发送给所述安全控件; 所述智能密钥设备,包括: 存储模块,用于存储通用证书、专用证书和混用证书中的至少两种数字证书; 第三接收模块,用于接收来自所述中间件的所述报文数据、所述密钥标识和所述哈希标识; 显示模块,用于对所述第三接收模块接收到的所述报文数据中的显示数据进行显示; 检测模块,用于检测按键; 第二签名模块,用于在所述检测模块检测到预设按键被触发后,使用与所述密钥标识对应的私钥,按照与所述哈希标识对应的签名机制,对所述报文数据进行签名,得到第一签名结果; 第三发送模块,用于将所述第二签名模块得到的所述第一签名结果发送给所述中间件; 所述上层应用,包括: 第四发送模块,用于向所述安全控件发送证书标识、哈希名和报文数据; 第四接收模块,用于接收来自所述安全控件的签名数据和异常信息。
15.如权利要求14所述的系统,其特征在于, 所述第一判断模块,具体用于将所述证书标识作为参数,调用所述中间件的接口,对所述智能密钥设备中的证书进行枚举,判断所述智能密钥设备中是否存在与所述证书标识对应的证书,如果存在,则确定所述证书标识有效;否则,确定所述证书标识无效。
16.如权利要求14所述的系统,其特征在于, 所述第一接收模块,还用于接收来自所述上层应用的证书; 所述安全控件,还包括: 第三判断模块,用于判断所述第一接收模块接收到的所述证书是否正确; 所述第一发送模块,还用于在所述第三判断模块判断出所述证书不正确时,向所述上层应用返回异常信息;在所述第三判断模块判断出所述证书正确时,向所述中间件发送所述证书; 所述第二接收模块,还用于接收来自所述安全控件的证书; 所述中间件,还包括: 安装模块,用于对所述第二接收模块接收到的所述证书进行安装和设置; 第四判断模块,用于判断所述安装模块当前安装的证书是否为通用证书或混用证书;所述注册模块,具体用于在所述第四判断模块判断出当前安装的证书为通用证书或混用证书时,将当前安装的通用证书或混用证书注册到浏览器的证书存储区中。
17.如权利要求16所述的系统,其特征在于, 所述安装模块,具体用于对所述证书进行安装,根据所述证书中的公钥,对所述智能密钥设备中的对象进行枚举,从所述智能密钥设备中获取与所述证书中的公钥匹配的公钥,将获取到的公钥对应的密钥标识和证书用途添加为所述证书的属性。
18.如权利要求16所述的系统,其特征在于, 所述第一接收模块,还用于接收来自所述上层应用的第一公钥类型信息; 所述安全控件,还包括: 第五判断模块,用于判断所述智能密钥设备中是否存在与所述第一接收模块接收到的所述第一公钥类型信息匹配的公钥; 第二获取模块,用于在所述第五判断模块判断出所述智能密钥设备中存在与所述第一公钥类型信息匹配的公钥时,从所述智能密钥设备中获取与所述第一公钥类型信息匹配的密钥标识; 所述第一发送模块,还用于将所述第二获取模块获取到的所述密钥标识发送给所述上层应用;在所述第五判断模块判断出所述智能密钥设备中不存在与所述第一公钥类型信息匹配的公钥时,向所述上层应用返回空字符串; 所述第四接收模块,还用于接收来自所述安全控件的所述密钥标识; 所述第四发送模块,还用于向所述安全控件发送包含所述密钥标识、保护密钥用途和随机数的密文公钥请求信息; 所述第一接收模块,还用于接收来自所述上层应用的密文公钥请求信息; 所述安全控件,还包括: 第六判断模块,用于判断所述智能密钥设备中是否存在与所述第一接收模块接收到的所述密文公钥请求信息中的所述密钥标识匹配的公钥; 所述第一发送模块,还用于在所述第六判断模块判断出所述智能密钥设备中不存在与所述密文公钥请求信息中的所述密钥标识匹配的公钥时,向所述上层应用返回空字符串;在所述第六判断模块判断出所述智能密钥设备中存在与所述密文公钥请求信息中的所述密钥标识匹配的公钥时,向所述中间件发送与所述智能密钥设备对应的槽位号和所述密文公钥请求信息; 所述第二接收模块,还用于接收来自所述安全控件的所述槽位号和所述密文公钥请求信息; 所述中间件,还包括: 第二生成模块,用于根据所述第二接收模块接收到的所述密文公钥请求信息生成密文公钥获取指令; 所述第二发送模块,还用于将所述第二生成模块生成的所述密文公钥获取指令发送给与所述槽位号对应的智能密钥设备; 所述第三接收模块,还用于接收来自所述中间件的所述密文公钥获取指令; 所述智能密钥设备,还包括: 第三获取模块,用于从所述第三接收模块接收到的所述密文公钥获取指令中获取所述密钥标识、所述保护密钥用途和所述随机数; 检索模块,用于根据所述第三获取模块获取到的所述密钥标识检索对应的公钥;第三生成模块,用于根据所述第三获取模块获取到的所述保护密钥用途和所述随机数生成工作密钥,使用所述工作密钥对所述检索模块检索到的公钥进行加密,生成密文公钥; 所述第三发送模块,还用于将所述密文公钥发送给所述中间件; 所述第二接收模块,还用于接收来自所述智能密钥设备的所述密文公钥; 所述第二发送模块,还用于向所述安全控件发送所述第二接收模块接收到的所述密文公钥; 所述第一接收模块,还用于接收来自所述中间件的所述密文公钥; 所述第一发送模块,还用于向所述上层应用发送所述第一接收模块接收到的所述密文公钥; 所述第四接收模块,还用于接收来自所述安全控件的所述密文公钥; 所述上层应用,还包括: 第七判断模块,还用于根据所述第四接收模块接收到的所述密文公钥判断所述上层应用保存的PKCS#10数据是否正确; 所述第四发送模块,还用于在所述第七判断模块判断出所述PKCS#10数据正确时,向证书服务器发送证书生成请求; 所述第四接收模块,还用于接收所述证书服务器返回的所述证书。
19.如权利要求18所述的系统,其特征在于, 所述第五判断模块,具体用于将所述第一公钥类型信息作为参数,调用中间件的接口,对所述智能密钥设备中的对象进行枚举,判断所述智能密钥设备中是否存在与所述第一公钥类型信息关联的对象,如果存在,则确定所述智能密钥设备中存在与所述第一公钥类型信息匹配的公钥;否则,确定所述智能密钥设备中不存在与所述第一公钥类型信息匹配的公钥。
20.如权利要求18所述的系统,其特征在于, 所述第七判断模块,具体用于对来自所述安全控件的密文公钥进行保存,将所述PKCS#10数据中的明文公钥发送给所述证书服务器,通过所述证书服务器对所述明文公钥进行加密,接收所述证书服务器返回的密文公钥,并判断所述证书服务器返回的密文公钥是否与来自所述安全控件的密文公钥相同,如果相同,则确定所述PKCS#10数据正确;否贝U,确定所述PKCS#10数据不正确。
21.如权利要求18所述的系统,其特征在于, 所述第一接收模块,还用于接收来自所述上层应用的证书请求信息; 所述安全控件,还包括: 第八判断模块,用于判断所述第一接收模块接收到的所述证书请求信息是否有效;所述第一发送模块,还用于在所述第八判断模块判断出所述证书请求信息有效时,向所述中间件发送所述证书请求信息;在所述第八判断模块判断出所述证书请求信息无效时,向所述上层应用返回异常信息; 所述第二接收模块,还用于接收来自所述安全控件的所述证书请求信息; 所述中间件,还包括: 第四生成模块,用于根据所述第二接收模块接收到的所述证书请求信息生成密钥对,为所述密钥对分配密钥标识; 设置模块,用于对所述第四生成模块生成的所述密钥对中的公钥和私钥进行设置; 所述第二发送模块,还用于向所述安全控件发送所述密钥标识和所述公钥; 所述第一接收模块,还用于接收来自所述中间件的所述密钥标识和所述公钥; 所述安全控件,还包括: 第五生成模块,用于根据所述第一接收模块接收到的所述公钥和所述证书请求信息,生成待签数据; 所述第一发送模块,还用于向所述中间件发送所述待签数据、所述密钥标识以及所述证书请求信息中的摘要算法; 所述第二接收模块,还用于接收来自所述安全控件的所述待签数据、所述密钥标识以及所述证书请求信息中的摘要算法; 所述第二发送模块,还用于向所述智能密钥设备发送所述待签数据、所述密钥标识以及与所述摘要算法对应的摘要标识; 所述第三接收模块,还用于接收来自所述中间件的所述待签数据、所述密钥标识以及与所述摘要算法对应的摘要标识; 所述智能密钥设备,还包括: 第三签名模块,用于使用与所述第三接收模块接收到的所述密钥标识对应的私钥,按照与所述摘要标识对应的签名机制,对所述待签数据进行签名,得到第二签名结果; 所述第三发送模块,还用于将所述第三签名模块得到的所述第二签名结果发送给所述中间件; 所述第二接收模块,还用于接收来自所述智能密钥设备的所述第二签名结果; 所述第二发送模块,还用于向所述安全控件发送所述第二签名结果; 所述第一接收模块,还用于接收来自所述中间件的所述第二签名结果; 所述安全控件,还包括: 第六生成模块,用于根据所述待签数据和所述第一接收模块接收到的所述第二签名结果生成PKCS#10数据; 所述第一发送模块,还用于将所述第六生成模块生成的所述PKCS#10数据发送给所述上层应用; 所述第四接收模块,还用于接收来自所述安全控件的所述PKCS#10数据; 所述上层应用,还包括: 保存模块,用于对所述第四接收模块接收到的所述PKCS#10数据进行保存。
22.如权利要求21所述的系统,其特征在于,所述证书请求信息包含一个或多个证书信息单元,每个证书信息单元包括与一张证书对应的证书标识、摘要算法、证书用途、密钥类型和密钥长度。
23.如权利要求22所述的系统,其特征在于,所述证书请求信息包含两个证书信息单元,其中一个证书信息单元与专用证书对应,另一个证书信息单元与通用证书或混用证书对应。
24.如权利要求22所述的系统,其特征在于, 所述第八判断模块,具体用于判断所述证书请求信息中包含的证书信息单元是否都有效,如果是,则确定所述证书请求信息有效;否则,确定所述证书请求信息无效。
25.如权利要求24所述的系统,其特征在于,所述第八判断模块判断证书信息单元是否有效,具体包括以下操作中的一项或多项: 所述第八判断模块判断所述证书信息单元中的证书标识是否合法; 所述第八判断模块判断所述证书信息单元中的摘要算法是否包含在预设算法列表中; 所述第八判断模块判断所述证书信息单元中的证书用途是否包含在预设用途列表中; 所述第八判断模块判断所述证书信息单元中的密钥类型和密钥长度是否包含在预设密钥列表中; 其中,所述预设算法列表中包含一个或多个摘要算法,所述预设用途列表中包含一个或多个证书用途,所述预设密钥列表中包含一组或多组密钥属性,所述密钥属性包括密钥类型和密钥长度。
26.如权利要求21所述的系统,其特征在于, 所述设置模块,具体用于将所述证书请求信息中的证书用途添加为所述公钥和所述私钥的属性。
【文档编号】H04L9/32GK104301113SQ201410551211
【公开日】2015年1月21日 申请日期:2014年10月17日 优先权日:2014年10月17日
【发明者】陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1