国密证书认证方法、装置及设备与流程

文档序号:16900294发布日期:2019-02-19 17:55阅读:1780来源:国知局
国密证书认证方法、装置及设备与流程

本发明涉及移动网络安全领域,尤其涉及一种国密证书认证方法、装置及设备。



背景技术:

ssl证书认证的方式有两种:国际证书认证和国密证书认证。国际证书认证方式采用国际协议,在ssl连接过程中采用国际算法完成认证。国密证书认证方式采用国密协议,国密协议是使用中国商用密码算法的一套标准,包含sm1、sm2、sm3和sm4四种算法。

现有的ssl证书认证中,苹果和安卓的系统库只能支持国际协议,不支持国密算法。因此不能进行国密证书认证。



技术实现要素:

本发明实施例提供一种国密证书认证方法、装置及设备,用以解决现有技术中存在的不能进行国密证书认证的问题。

第一方面,本发明实施例提供一种国密证书认证方法,用于客户端,包括:

发送ssl连接请求,从而建立单向ssl连接;

通过所述ssl连接发送国密认证请求;

接收基于所述国密认证请求返回的挑战码;

对所述挑战码进行签名;

发送签名信息和国密证书;

接收对所述签名信息和国密证书的验证结果。

作为本发明实施例的一种具体实现方式,所述挑战码:由时间因子和随机数值使用哈希算法加密产生。

作为本发明实施例的一种具体实现方式,所述对所述挑战码进行签名,具体为:

使用私钥对所述挑战码进行加密。

第二方面,本发明实施例提供一种国密证书认证方法,用于服务器端,包括:

收ssl连接请求,从而建立单向ssl连接;

接收通过所述ssl连接发送国密认证请求;

基于所述国密认证请求生成挑战码,并发送所述挑战码;

接收对所述挑战码签名产生的签名信息和国密证书;

对所述签名信息和国密证书进行验证,并发送验证结果。

作为本发明实施例的一种具体实现方式,所述基于所述国密认证请求生成挑战码,并发送所述挑战码,包括:

接收所述国密认证请求;

基于所述国密认证请求生成挑战码;

将所述挑战码保存到本地,并发送所述挑战码。

作为本发明实施例的一种具体实现方式,所述对所述签名信息和国密证书进行验证,并发送验证结果,包括:

获取所述国密证书的公钥;

使用所述公钥对所述签名信息进行解密,从而得到签名信息内的挑战码;

将所述签名信息内的挑战码与保存到本地的挑战码进行比较,从而得到验证结果;

发送所述验证结果。

第三方面,本发明实施例提供一种国密证书认证的方法,包括:

客户端发送ssl连接请求给服务器,从而建立单向ssl连接;

所述客户端通过所述ssl连接发送国密认证请求给所述服务器

所述服务器基于所述国密认证请求生成挑战码,并将所述挑战码发送至所述客户端;

所述客户端接收所述挑战码;

所述客户端对所述挑战码进行签名;

所述客户端发送签名信息和国密证书给服务器;

所述服务器对所述签名信息和国密证书进行验证,并将验证结果发送给客户端;

所述客户端接收所述验证结果。

第四方面,本发明实施例提供一种国密证书认证装置,用于客户端,包括:

连接请求模块:用于发送ssl连接请求,从而建立单向ssl连接;

证书发送模块:用于通过所述ssl连接发送国密认证请求;

挑战码接收模块:用于接收基于所述国密认证请求返回的挑战码;

签名模块:用于对所述挑战码进行签名;

信息发送模块:用于发送签名信息和国密证书;

结果接收模块:用于接收对所述签名信息和国密证书的验证结果。

第五方面,本发明实施例提供一种国密证书认证装置,用于服务器端,包括:

请求接收模块:用于接收ssl连接请求,从而建立单向ssl连接;

认证请求接收模块:用于接收通过所述ssl连接发送国密认证请求;

挑战码生成模块:用于基于所述国密认证请求生成挑战码,并发送所述挑战码;

签名信息接收模块:用于接收对所述挑战码签名产生的签名信息和国密证书;

验证模块:用于对所述签名信息和国密证书进行验证,并发送验证结果。

第六方面,本发明实施例提供电子设备,所述电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现第一方面和第二方面任一所述的方法的步骤。

本发明实施例通过在建立单向ssl连接的基础上,发送国密认证,并对生成的挑战码进行签名,然后对签名信息和国密证书进行验证,采用挑战认证方式完成国密证书的认证。从而解决了不能进行国密证书认证的问题,并取得了积极的技术效果。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明实施例一所述的国密证书认证方法的流程图;

图2为本发明实施例二所述的国密证书认证方法的流程图;

图3为本发明实施例二所述的基于所述国密认证请求生成挑战码,并发送所述挑战码的流程图;

图4为本发明实施例二所述的所述对所述签名信息和国密证书进行验证,并发送验证结果的流程图;

图5为本发明实施例三所述的国密证书认证的方法的原理框图;

图6为本发明实施例四所述的国密证书认证装置的原理框图;

图7为本发明实施例五所述的国密证书认证装置的流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

现有技术中ssl国密握手协议的过程具体如下:

1、客户端发送客户端hello消息给服务器,服务器回应服务器hello消息,否则产生一个致命错误并且断开连接。客户端hello和服务器hello用于和服务器进行基于rsa、ecc或ibc的密码算法协商,以及确定安全传输能力,包括协议版本,会话标识,密码套件等属性,并且产生和交换随机数。

2、在客户端hello和服务器hello消息之后是身份验证和密钥交换过程。包括服务器证书、服务器密钥交换,客户端证书、客户端密钥交换。

3、在服务器发送完helllo消息之后,接着发送自己的证书消息,服务器密钥交换消息。如果服务器需要验证客户端的身份,则向客户端发送证书请求消息。然后发送服务器hello完成消息,表示hello消息阶段已经结束,服务器等待客户端的返回消息。如果服务器发送了一个证书请求消息,客户端必须返回一个证书消息,然后客户端发送密钥交换消息,消息内容取决于客户端hello消息和服务器hello消息协商出的密钥交换算法。如果客户端发送了证书消息,那么客户端也应该发送一个带数字签名的证书验证消息供服务器验证客户端的身份。

4、接着客户端发送密码规格变更消息,然后客户端立即使用刚协商的算法和密钥,加密并发送握手结束消息。服务器则回应密码规格变更消息,使用刚协商的算法和密钥,加密并发送握手结束消息。至此握手过程结束,服务器和客户端可以开始数据安全传输。

具体如表1所示,

表1:ssl国密握手协议的过程表。

实施例一:

本发明第一实施例提供一种国密证书认证方法,用于客户端,如图1所示,包括以下具体步骤:

步骤s101:发送ssl连接请求,从而建立单向ssl连接;

客户端发送ssl连接请求给服务器,从而在客户端和服务器之间建立单向的ssl连接,单向ssl连接指有客户端向服务器单向发送ssl数据。

在一个具体的应用场景中,建立ssl连接是现有技术,调用openssl库中的接口完成的。

步骤s102:通过所述ssl连接发送国密认证请求;

客户端和服务器之间建立单向ssl连接后,客户端通过单向ssl连接发送国密认证请求给服务器。

步骤s103:接收基于所述国密认证请求返回的挑战码;

服务器接收到客户端的国密认证请求后,基于国密认证请求生成一个挑战码,并将挑战码发送回客户端,同时服务器内保存一份挑战码。

作为本发明的一种具体实现方式,挑战码:由时间因子和随机数值使用哈希算法加密产生,哈希算法如md5或sha-1等。随机数值是调用系统底层函数生成的。

步骤s104:对所述挑战码进行签名;

客户端接收到挑战码后,使用客户端的私钥对挑战码进行签名。

步骤s105:发送签名信息和国密证书;

客户端将对挑战码签名后的签名信息和国密证书发送给服务器。

步骤s106:接收对所述签名信息和国密证书的验证结果。

服务器对接收的签名信息和国密证书进行验证,并将验证结果发送给客户端。

作为本发明的一种具体实现方式,服务端使用客户端证书中的公钥对签名信息进行解密,得到签名信息内的挑战码,然后将得到的签名信息内的挑战码与服务器内保存的挑战码进行比较,将验证结果返回给客户端。如两个挑战码一致则验证通过,如不一致,则验证没有通过。

实施例二:

如图2所示,本发明实施例提供一种国密证书认证方法,用于服务器端,包括:

步骤s201:接收ssl连接请求,从而建立单向ssl连接;

步骤s202:接收通过所述ssl连接发送国密认证请求;

步骤s203:基于所述国密认证请求生成挑战码,并发送所述挑战码;

步骤s204:接收对所述挑战码签名产生的签名信息和国密证书;

步骤s205:对所述签名信息和国密证书进行验证,并发送验证结果。

作为本发明的一种具体实现方式,如图3所示,步骤s203:所述基于所述国密认证请求生成挑战码,并发送所述挑战码,包括:

步骤s301:接收所述国密认证请求;

步骤s302:基于所述国密认证请求生成挑战码;

步骤s303:将所述挑战码保存到本地,并发送所述挑战码。

作为本发明的一种具体实现方式,如图4所示,步骤s205:所述对所述签名信息和国密证书进行验证,并发送验证结果,包括:

步骤s401:获取所述国密证书的公钥;

步骤s402:使用所述公钥对所述签名信息进行解密,从而得到签名信息内的挑战码;

步骤s403:将所述签名信息内的挑战码与保存到本地的挑战码进行比较,从而得到验证结果;

步骤s404:发送所述验证结果。

其具体的实施方式在实施例一中已详细说明,在此不再赘述。

实施例三:

如图5所示,本发明实施例提供一种国密证书认证的方法,包括:

客户端发送ssl连接请求给服务器,从而建立单向ssl连接;

所述客户端通过所述ssl连接发送国密认证请求给所述服务器

所述服务器基于所述国密认证请求生成挑战码,并将所述挑战码发送至所述客户端;

所述客户端接收所述挑战码;

所述客户端对所述挑战码进行签名;

所述客户端发送签名信息和国密证书给服务器;

所述服务器对所述签名信息和国密证书进行验证,并将验证结果发送给客户端;

所述客户端接收所述验证结果。

本技术方案主要是将客户端和服务器端结合进行说明,其具体的实施方式在实施例一中已详细说明,在此不再赘述。

实施例四:

如图6所示,第四方面,本发明实施例提供一种国密证书认证装置,用于客户端,包括:

连接请求模块601:用于发送ssl连接请求,从而建立单向ssl连接;

证书发送模块602:用于通过所述ssl连接发送国密认证请求;

挑战码接收模块603:用于接收基于所述国密认证请求返回的挑战码;

签名模块604:用于对所述挑战码进行签名;

信息发送模块605:用于发送签名信息和国密证书;

结果接收模块606:用于接收对所述签名信息和国密证书的验证结果。

作为本发明的一种具体实现方式,所述挑战码:由时间因子和随机数值使用哈希算法加密产生。

作为本发明的一种具体实现方式,所述对所述挑战码进行签名,具体为:使用私钥对所述挑战码进行加密。

实施例五:

如图7所示,第五方面,本发明实施例提供一种国密证书认证装置,用于服务器端,包括:

请求接收模块701:用于接收ssl连接请求,从而建立单向ssl连接;

认证请求接收模块702:用于接收通过所述ssl连接发送国密认证请求;

挑战码生成模块703:用于基于所述国密认证请求生成挑战码,并发送所述挑战码;

签名信息接收模块704:用于接收对所述挑战码签名产生的签名信息和国密证书;

验证模块705:用于对所述签名信息和国密证书进行验证,并发送验证结果。

作为本发明的一种具体实现方式,挑战码生成模块703,还用于:

接收所述国密认证请求;

基于所述国密认证请求生成挑战码;

将所述挑战码保存到本地,并发送所述挑战码。

作为本发明的一种具体实现方式,验证模块705,还用于:

获取所述国密证书的公钥;

使用所述公钥对所述签名信息进行解密,从而得到签名信息内的挑战码;

将所述签名信息内的挑战码与保存到本地的挑战码进行比较,从而得到验证结果;

发送所述验证结果。

本技术方案主要是服务器端中功能模块的表述,其具体的实施方式在实施例一至实施例四中已详细说明,在此不再赘述。

第六方面,本发明实施例提供一种电子设备,所述电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现实施例一或实施例二述的方法步骤。

处理器可以是通用处理器,例如中央处理器(centralprocessingunit,cpu),还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic),或者是被配置成实施本发明实施例的一个或多个集成电路。其中,存储器用于存储所述处理器的可执行指令;存储器,用于存储程序代码,并将该程序代码传输给处理器。存储器可以包括易失性存储器(volatilememory),例如随机存取存储器(randomaccessmemory,ram);也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);还可以包括上述种类的存储器的组合。

本发明实施例还提供一种提供计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现实施例一的方法步骤。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1