CN114329426A - 一种客户端认证方法、装置、设备以及存储介质 - Google Patents
一种客户端认证方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN114329426A CN114329426A CN202111629669.3A CN202111629669A CN114329426A CN 114329426 A CN114329426 A CN 114329426A CN 202111629669 A CN202111629669 A CN 202111629669A CN 114329426 A CN114329426 A CN 114329426A
- Authority
- CN
- China
- Prior art keywords
- client
- certificate
- certificate chain
- hash value
- server
- 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.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供一种客户端认证方法、装置、设备以及存储介质,所述客户端认证方法,包括:从客户端发送的客户端Certificate报文中获取客户端多证书链,所述客户端多证书链包括多个客户端证书链,所述客户端证书链包括多个证书;对所述客户端多证书链进行校验,得到校验结果;若所述校验结果为校验通过,则根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,所述加密哈希值是所述客户端通过私钥加密得到的。
Description
技术领域
本申请涉及安全认证技术领域,具体而言,涉及一种客户端认证方法、装置、设备以及存储介质。
背景技术
随着互联网技术的不断发展,数字证书应运而生,为网络安全带来了保障。数字证书是由电子商务认证中心颁发的,用于证明身份,从而保证网络通信的安全。
现有技术中,虽然有了数字证书,但是,客户端证书容易被仿造,导致服务器可能不能很好的识别客户端的身份,导致服务器被黑客入侵。
发明内容
基于此,提出一种客户端认证方法、装置、设备以及存储介质。
第一方面,提供了一种客户端认证方法,包括:
从客户端发送的客户端Certificate报文中获取客户端多证书链,所述客户端多证书链包括多个客户端证书链,所述客户端证书链包括多个证书;
对所述客户端多证书链进行校验,得到校验结果;
若所述校验结果为校验通过,则根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,所述加密哈希值是所述客户端通过私钥加密得到的。
上述客户端认证方法,从客户端发送的客户端Certificate报文中获取到了客户端多证书链,并且,客户端多证书链包括多个客户端证书链,每个客户端证书链包括多个证书,然后服务器对客户端多证书链进行校验,得到校验结果,可见,上述客户端认证方法是对多个客户端证书链进行校验,相较于对证书进行校验,或者,对证书链进行校验的方案,增大了校验力度,黑客很难仿造出如此多的证书,从而保证了客户端不容易被仿造,降低了服务器被黑客入侵的可能性,并且,校验通过时,还根据客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,可以理解的是,由于加密哈希值需要通过客户端的私钥加密得到的,因此,如果通过客户端多证书链对应的证书公钥能够解密加密哈希值,并且,解密后的哈希值和本地计算得到的哈希值一致,才认为客户端确实拥有和证书公钥对应的私钥,才认为认证通过。
在一个实施例中,所述根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,包括:使用所述客户端多证书链对应的证书公钥解密所述加密哈希值,得到解密哈希值;若所述解密哈希值与本地计算得到的哈希值相同,则认证结果为认证通过;若所述解密哈希值与本地计算得到的哈希值不同,则认证结果为认证失败。
上述实施例,说明了具体的认证过程,即首先解密得到解密哈希值,然后将解密哈希值与本地计算得到的哈希值进行比对,若相同,则认证通过。
在一个实施例中,所述对所述客户端多证书链进行校验,得到校验结果,包括:确定所述客户端多证书链中的证书是否在有效期内;确定所述客户端多证书链中的证书是否两两不同;确定所述客户端多证书链包含的客户端证书链的数量是否准确;确定所述客户端多证书链中的客户端证书中的公钥是否全部相同;若所述客户端多证书链中的证书均在有效期内,所述客户端多证书链中的证书两两不同、所述客户端多证书链包含的客户端证书链的数量准确并且所述客户端多证书链中的客户端证书中的公钥全部相同,则校验结果为校验通过。
上述实施例,服务器对客户端多证书链的校验,不仅需要确认证书是否在有效期内,还需要确认是否包含重复的证书,还需要确认证书链的数量是否准确以及客户端证书中的公钥是否全部相同,从而实现了对证书的加强校验,进而实现了对客户端的加强认证。
在一个实施例中,所述对所述客户端多证书链进行校验,得到校验结果,包括:确定所述客户端多证书链中的证书是否在有效期内;确定所述客户端多证书链中的证书是否两两不同;确定所述客户端多证书链包含的客户端证书链的数量是否准确;确定所述客户端多证书链中的客户端证书中的公钥是否全部相同;确定是否能够解密所述客户端多证书链中的证书的签名;确定所述客户端多证书链中的客户端证书中的域名是否全部相同;在所述客户端多证书链中的客户端证书中的域名全部相同时,确定所述客户端多证书链中的客户端证书中的域名与所述客户端在访问服务器时使用的域名是否相同;若所述客户端多证书链中的证书均在有效期内,所述客户端多证书链中的证书两两不同、所述客户端多证书链包含的客户端证书链的数量准确、所述客户端多证书链中的客户端证书中的公钥全部相同、能够解密所述客户端多证书链中的证书的签名、所述客户端多证书链中的客户端证书中的域名全部相同并且所述客户端多证书链中的客户端证书中的域名与所述客户端在访问服务器时使用的域名相同,则校验结果为校验通过。
上述实施例,在有效期、证书是否重复、证书链数量是否准确以及公钥是否全部相同基础上,还对证书的签名、证书的域名进行了校验,进一步的实现了加强校验和加强认证。
在一个实施例中,在所述从客户端发送的证书链报文中获取客户端多证书链之前,还包括:获取客户端发送的ClientHello报文,所述ClientHello报文中包括安全协议的多个版本、第一随机数和多个密码套件;根据客户端发送的ClientHello报文,向客户端发送ServerHello报文,所述ServerHello报文中包括从安全协议的多个版本中选择出来的目标版本、从多个密码套件中选择出来的目标密码套件和第二随机数;向客户端发送服务器Certificate报文、服务器ServerKeyExchange报文、Certificate Request报文和ServerHelloDone报文,所述服务器Certificate报文中包括服务器证书链,所述服务器ServerKeyExchange报文中包括签名方法以及哈希算法,所述签名方法以及哈希算法用于得到所述加密哈希值,所述Certificate Request报文用于指示客户端向服务器发送客户端多证书链,所述ServerHelloDone报文指示服务器消息发送完毕等待客户端发送消息;获取客户端发送的所述客户端Certificate报文;获取客户端发送的客户端ClientKeyExchange报文,所述客户端ClientKeyExchange报文中包括加密预主密钥,所述加密预主密钥是使用服务器的公钥对预主密钥进行加密得到的,所述服务器的公钥是通过所述服务器证书链得到的;获取客户端发送的CertificateVerify报文,所述CertificateVerify报文中包括所述加密哈希值。
上述实施例,说明了如何得到加密哈希值,以及,客户端如何对服务器进行校验,从而保障客户端和服务器之间的安全交互。
在一个实施例中,在所述若所述校验结果为校验通过,则根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果之后,还包括:若认证结果为认证通过,则使用服务器的私钥解密所述加密预主密钥,得到预主密钥;根据所述第一随机数、第二随机数和预主密钥得到主密钥。
上述实施例,服务器在认证通过后,会使用预主密钥得到主密钥,进而得到会话密钥,从而后续服务器和客户端通过会话密钥向对方发送数据,实现安全交互。
第二方面,提供了一种客户端认证装置,包括:
获取模块,用于从客户端发送的客户端Certificate报文中获取客户端多证书链,所述客户端多证书链包括多个客户端证书链,所述客户端证书链包括多个证书;
校验模块,用于对所述客户端多证书链进行校验,得到校验结果;
认证模块,用于若所述校验结果为校验通过,则根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,所述加密哈希值是所述客户端通过私钥加密得到的。
在一个实施例中,所述认证模块,具体用于:使用所述客户端多证书链对应的证书公钥解密所述加密哈希值,得到解密哈希值;若所述解密哈希值与本地计算得到的哈希值相同,则认证结果为认证通过;若所述解密哈希值与本地计算得到的哈希值不同,则认证结果为认证失败。
在一个实施例中,校验模块,具体用于:确定所述客户端多证书链中的证书是否在有效期内;确定所述客户端多证书链中的证书是否两两不同;确定所述客户端多证书链包含的客户端证书链的数量是否准确;确定所述客户端多证书链中的客户端证书中的公钥是否全部相同;若所述客户端多证书链中的证书均在有效期内,所述客户端多证书链中的证书两两不同、所述客户端多证书链包含的客户端证书链的数量准确并且所述客户端多证书链中的客户端证书中的公钥全部相同,则校验结果为校验通过。
在一个实施例中,校验模块,具体用于:确定所述客户端多证书链中的证书是否在有效期内;确定所述客户端多证书链中的证书是否两两不同;确定所述客户端多证书链包含的客户端证书链的数量是否准确;确定所述客户端多证书链中的客户端证书中的公钥是否全部相同;确定是否能够解密所述客户端多证书链中的证书的签名;确定所述客户端多证书链中的客户端证书中的域名是否全部相同;在所述客户端多证书链中的客户端证书中的域名全部相同时,确定所述客户端多证书链中的客户端证书中的域名与所述客户端在访问服务器时使用的域名是否相同;若所述客户端多证书链中的证书均在有效期内,所述客户端多证书链中的证书两两不同、所述客户端多证书链包含的客户端证书链的数量准确、所述客户端多证书链中的客户端证书中的公钥全部相同、能够解密所述客户端多证书链中的证书的签名、所述客户端多证书链中的客户端证书中的域名全部相同并且所述客户端多证书链中的客户端证书中的域名与所述客户端在访问服务器时使用的域名相同,则校验结果为校验通过。
在一个实施例中,客户端认证装置,还包括:报文模块,用于:获取客户端发送的ClientHello报文,所述ClientHello报文中包括安全协议的多个版本、第一随机数和多个密码套件;根据客户端发送的ClientHello报文,向客户端发送ServerHello报文,所述ServerHello报文中包括从安全协议的多个版本中选择出来的目标版本、从多个密码套件中选择出来的目标密码套件和第二随机数;向客户端发送服务器Certificate报文、服务器ServerKeyExchange报文、Certificate Request报文和ServerHelloDone报文,所述服务器Certificate报文中包括服务器证书链,所述服务器ServerKeyExchange报文中包括签名方法以及哈希算法,所述签名方法以及哈希算法用于得到所述加密哈希值,所述CertificateRequest报文用于指示客户端向服务器发送客户端多证书链,所述ServerHelloDone报文指示服务器消息发送完毕等待客户端发送消息;获取客户端发送的所述客户端Certificate报文;获取客户端发送的客户端ClientKeyExchange报文,所述客户端ClientKeyExchange报文中包括加密预主密钥,所述加密预主密钥是使用服务器的公钥对预主密钥进行加密得到的,所述服务器的公钥是通过所述服务器证书链得到的;获取客户端发送的CertificateVerify报文,所述CertificateVerify报文中包括所述加密哈希值。
在一个实施例中,客户端认证装置,还包括:主密钥模块,用于:若认证结果为认证通过,则使用服务器的私钥解密所述加密预主密钥,得到预主密钥;根据所述第一随机数、第二随机数和预主密钥得到主密钥。
第三方面,提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述客户端认证方法的步骤。
第四方面,提供了一种计算机可读存储介质,所述计算机可读取存储介质中存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行如上所述客户端认证方法的步骤。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例中客户端认证方法的实现流程示意图;
图2为本申请实施例提供的客户端和服务器交互的示意图;
图3为本申请实施例中客户端认证装置的组成结构示意图;
图4为本申请实施例中计算机设备的内部结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在一个实施例中,提供了一种客户端认证方法。本发明实施例所述的客户端认证方法的执行主体为能够实现本发明实施例所述的客户端认证方法的计算机设备,该计算机设备可以包括但不限于终端和服务器。其中,终端包括台式终端和移动终端,台式终端包括但不限于台式电脑和车载电脑;移动终端包括但不限于手机、平板、笔记本电脑和智能手表。服务器包括高性能计算机和高性能计算机集群。为了更好的理解,以下均以服务器作为执行主体进行说明。
如图1所示,提供了一种客户端认证方法,包括:
步骤100,从客户端发送的客户端Certificate报文中获取客户端多证书链,所述客户端多证书链包括多个客户端证书链,所述客户端证书链包括多个证书。
客户端多证书链中包括多个客户端证书链,客户端证书链中包括多个证书,该多个证书中包括客户端证书。
客户端多证书链,为客户端持有的多个客户端证书链,其中,多个包括两个和两个以上,其中,客户端证书链,至少包括2个证书,其中,证书,是由电子商务认证中心颁发的,由于每个客户端证书链中至少包括2个证书,因此,客户端多证书链中至少包括4个证书,客户端多证书链中包括的客户端证书的数量和客户端证书链的数量相同,例如,客户端多证书链中包括2个客户端证书链,则客户端证书的数量为2,即客户端请求了2个电子商务认证中心为其颁发证书。电子商务认证中心为客户端颁发证书的过程,包括:客户端生成密钥对,其中,密钥对包括私钥和公钥;客户端将自身的域名、客户端信息和客户端生成的公钥进行组合,得到证书签名请求,例如,客户端信息可以是客户端的纳税人识别号;客户端将证书签名请求发送给电子商务认证中心;电子商务认证中心对证书签名请求中包含的域名、客户端信息和公钥进行校验,校验通过后,电子商务认证中心会通过域名、客户端信息和公钥进行哈希计算,得到一个哈希值,然后使用自身的私钥对该哈希值进行加密,生成的密文就是电子商务认证中心的签名,电子商务认证中心将该签名、客户端的域名、客户端信息和客户端的公钥进行组合,得到证书,将得到的证书返回给客户端。
步骤200,对所述客户端多证书链进行校验,得到校验结果。
例如,客户端多证书链包括2个客户端证书链,每个客户端证书链包括2个证书,服务器对客户端多证书链中的证书是否在有效期内进行校验,具体是,若客户端多证书链中的证书1到4均在有效期内,则校验结果为校验通过,否则,校验结果为校验失败,服务器认为证书过期不可信。
步骤300,若所述校验结果为校验通过,则根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,所述加密哈希值是所述客户端通过私钥加密得到的。
若校验结果为校验通过,则服务器接受客户端多证书链对应的证书公钥,需要注意的是,此处的证书公钥即为证书颁发过程中客户端发送给电子商务认证中心的公钥,在服务器接受客户端多证书链对应的证书公钥之后,服务器会根据客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值进行认证处理,得到最终的认证结果,其中,认证结果包括认证通过和认证失败,若认证结果为认证通过,则服务器认为客户端确实拥有和证书公钥对应的私钥,客户端没有被黑客冒充,客户端是可信的客户端,若认证结果为认证失败,则服务器认为客户端并没有拥有和证书公钥对应的私钥,客户端可能被黑客冒充,客户端是不可信的客户端。
上述客户端认证方法,从客户端发送的客户端Certificate报文中获取到了客户端多证书链,并且,客户端多证书链包括多个客户端证书链,每个客户端证书链包括多个证书,然后服务器对客户端多证书链进行校验,得到校验结果,可见,上述客户端认证方法是对多个客户端证书链进行校验,相较于对证书进行校验,或者,对证书链进行校验的方案,增大了校验力度,黑客很难仿造出如此多的证书,从而保证了客户端不容易被仿造,降低了服务器被黑客入侵的可能性,并且,校验通过时,还根据客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,可以理解的是,由于加密哈希值需要通过客户端的私钥加密得到的,因此,如果通过客户端多证书链对应的证书公钥能够解密加密哈希值,并且,解密后的哈希值和本地计算得到的哈希值一致,才认为客户端确实拥有和证书公钥对应的私钥,才认为认证通过。
在一个实施例中,步骤300所述根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,包括:
步骤300A,使用所述客户端多证书链对应的证书公钥解密所述加密哈希值,得到解密哈希值。
服务器使用客户端的证书公钥解密客户端发送的加密哈希值,如果解密成功,将得到解密哈希值。
步骤300B,若所述解密哈希值与本地计算得到的哈希值相同,则认证结果为认证通过。
服务器将解密哈希值与本地计算得到的哈希值进行比对,若解密哈希值与本地计算得到的哈希值相同,则认证结果为认证通过;若解密哈希值与本地计算得到的哈希值不同,则认证结果为认证失败。
步骤300C,若所述解密哈希值与本地计算得到的哈希值不同,则认证结果为认证失败。
上述实施例,说明了具体的认证过程,即首先解密得到解密哈希值,然后将解密哈希值与本地计算得到的哈希值进行比对,若相同,则认证通过。
在一个实施例中,步骤200所述对所述客户端多证书链进行校验,得到校验结果,包括:
步骤200A,确定所述客户端多证书链中的证书是否在有效期内。
电子商务认证中心在向客户端返回的证书中,还会记录证书的有效期,使得证书只在指定的期限内有效。
服务器对客户端多证书链中的每个证书,均需要确定其是否在有效期内,具体的,若当前时间位于证书的有效期内,则确认该证书是在有效期内,若当前时间在证书的有效期的上限值之后,则确认该证书不在有效期内,例如,证书的有效期为1999年1月1日到2000年1月1日,则2000年1月1日为上限值。
步骤200B,确定所述客户端多证书链中的证书是否两两不同。
确定客户端多证书链中的证书是否两两不同,具体是确定客户端多证书链中的证书是否均是由不同的电子商务认证中心颁发的。例如,客户端多证书链包括2个客户端证书链,每个客户端证书链包括2个证书,若分别是电子商务认证中心1到电子商务认证中心4颁发的,则认为客户端多证书链中的证书两两不同,若证书1和证书3是电子商务认证中心1颁发的,证书2和4均是由电子商务认证中心2颁发的,则认为客户端多证书链中的证书并不是两两不同,客户端多证书链中存在重复的证书。
步骤200C,确定所述客户端多证书链包含的客户端证书链的数量是否准确。
首先预设证书链数量,例如,预设的证书链数量为3,而客户端多证书链包含的客户端证书链的数量为2,则认为客户端多证书链包含的客户端证书链的数量不准确,若客户端多证书链包含的客户端证书链的数量为3,则认为客户端多证书链包含的客户端证书链的数量准确。
步骤200D,确定所述客户端多证书链中的客户端证书中的公钥是否全部相同。
一个客户端只能包含一个公钥(证书公钥)和一个私钥,于是,服务器需要确认客户端多证书链中的客户端证书中的公钥是否全部相同,若全部相同,则服务器认为客户端没有被黑客冒充,否则,服务器认为客户端极大可能被黑客冒充。服务器将客户端多证书链中的客户端证书中的公钥进行比对,以确认客户端多证书链中的客户端证书中的公钥是否全部相同。
步骤200E,若所述客户端多证书链中的证书均在有效期内,所述客户端多证书链中的证书两两不同、所述客户端多证书链包含的客户端证书链的数量准确并且所述客户端多证书链中的客户端证书中的公钥全部相同,则校验结果为校验通过。
上述实施例,服务器对客户端多证书链的校验,不仅需要确认证书是否在有效期内,还需要确认是否包含重复的证书,还需要确认证书链的数量是否准确以及客户端证书中的公钥是否全部相同,从而实现了对证书的加强校验,进而实现了对客户端的加强认证。
在一个实施例中,步骤200所述对所述客户端多证书链进行校验,得到校验结果,包括:
步骤200a,确定所述客户端多证书链中的证书是否在有效期内。
步骤200b,确定所述客户端多证书链中的证书是否两两不同。
步骤200c,确定所述客户端多证书链包含的客户端证书链的数量是否准确。
步骤200d,确定所述客户端多证书链中的客户端证书中的公钥是否全部相同。
步骤200a到步骤200d,与,步骤200A到步骤200D相同,在此不再详述。
步骤200e,确定是否能够解密所述客户端多证书链中的证书的签名。
确定是否能够解密客户端多证书链中的所有证书的签名,例如,客户端多证书链总共包括4个证书,服务器使用电子商务认证中心1的公钥对证书1的签名进行解密,若解密成功,则确定能够解密证书1的签名,服务器使用电子商务认证中心2的公钥对证书2的签名进行解密,若解密成功,则确定能够解密证书2的签名,使用电子商务认证中心3的公钥对证书3的签名进行解密,若解密成功,则确定能够解密证书3的签名,使用电子商务认证中心4的公钥对证书4的签名进行解密,若解密成功,则确定能够解密证书4的签名。
步骤200f,确定所述客户端多证书链中的客户端证书中的域名是否全部相同。
客户端证书中还包括客户端的域名,将各个客户端证书链中的客户端证书的域名进行比对,以确认客户端多证书链中的客户端证书中的域名是否全部相同,若全部相同,则认为客户端多证书链中的所有客户端证书都对应一个客户端,若不相同,则认为客户端多证书链中的所有客户端证书并不对应一个客户端,当前请求认证的客户端可能被黑客冒充。
步骤200g,在所述客户端多证书链中的客户端证书中的域名全部相同时,确定所述客户端多证书链中的客户端证书中的域名与所述客户端在访问服务器时使用的域名是否相同。
在客户端多证书链中的客户端证书中的域名全部相同时,确定客户端多证书链中的客户端证书中的域名与客户端在访问服务器时使用的域名是否相同,以防止黑客冒充,可以理解的是,黑客如果冒充客户端访问服务器,那么其使用的域名肯定和真实的客户端不同,因此,通过域名比对,可以防止黑客冒充,当客户端多证书链中的客户端证书中的域名全部相同,并且,客户端多证书链中的客户端证书中的域名与客户端在访问服务器时使用的域名相同时,认为客户端没有被黑客冒充,否则,认为客户端可能被黑客冒充。
步骤200h,若所述客户端多证书链中的证书均在有效期内,所述客户端多证书链中的证书两两不同、所述客户端多证书链包含的客户端证书链的数量准确、所述客户端多证书链中的客户端证书中的公钥全部相同、能够解密所述客户端多证书链中的证书的签名、所述客户端多证书链中的客户端证书中的域名全部相同并且所述客户端多证书链中的客户端证书中的域名与所述客户端在访问服务器时使用的域名相同,则校验结果为校验通过。
上述实施例,在有效期、证书是否重复、证书链数量是否准确以及公钥是否全部相同基础上,还对证书的签名、证书的域名进行了校验,进一步的实现了加强校验和加强认证。
在一个实施例中,如图2所示,在步骤100所述从客户端发送的客户端Certificate报文中获取客户端多证书链之前,还包括:
步骤400,获取客户端发送的ClientHello报文,所述ClientHello报文中包括安全协议的多个版本、第一随机数和多个密码套件。
安全协议,可以包括但不限于SSL协议和TLS协议,安全协议的多个版本,例如,SSL3、TLS1.0、TLS1.1、TLS1.2和TLS1.3;第一随机数,为客户端发送给服务器的随机数,客户端需要首先生成第一随机数;多个密码套件中的每个密码套件,定义了加密数据算法、身份校验算法、数据MAC算法、密钥交换算法等,多个包括两个和两个以上。
步骤500,根据客户端发送的ClientHello报文,向客户端发送ServerHello报文,所述ServerHello报文中包括从安全协议的多个版本中选择出来的目标版本、从多个密码套件中选择出来的目标密码套件和第二随机数。
例如,目标版本为SSL3,目标密码套件为密码套件3,第二随机数,为服务器生成并发送给客户端的随机数。
步骤600,向客户端发送服务器Certificate报文、服务器ServerKeyExchange报文、Certificate Request报文和ServerHelloDone报文,所述服务器Certificate报文中包括服务器证书链,所述服务器ServerKeyExchange报文中包括签名方法以及哈希算法,所述签名方法以及哈希算法用于得到所述加密哈希值,所述Certificate Request报文用于指示客户端向服务器发送客户端多证书链,所述ServerHelloDone报文指示服务器消息发送完毕等待客户端发送消息。
服务器证书链中包括至少一个证书,即至少包括服务器证书,同样的,服务器证书链中的服务器证书,也是由电子商务认证中心颁发给服务器的,电子商务认证中心为服务器颁发证书的过程可参照电子商务认证中心为客户端颁发证书的过程,在此不再详述,服务器将服务器证书链发送给客户端,以便客户端对服务器证书链进行校验,从而实现双向校验,进而实现服务器和客户端之间的安全交互。例如,客户端在接收到服务器证书链之后,确定服务器证书链中的证书是否在有效期内和/或和/或确定是否能够解密服务器证书链中的证书的签名,在服务器证书链中的证书全部在有效期内时和/或能够解密服务器证书链中的各个证书的签名时,客户端对服务器证书链校验通过,校验通过后,客户端接受服务器证书链中的服务器证书中的公钥。
哈希算法,用于得到哈希值,例如,SHA-1,需要说明的是,服务器和客户端需要采用相同的哈希算法对相同的输入作处理,以便服务器得到步骤300中的“本地计算得到的哈希值”,客户端得到步骤300中的“加密哈希值”在加密前的哈希值,例如,服务器和客户端均以:ClientHello报文、ServerHello报文、服务器Certificate报文、Certificate Request报文、服务器ServerKeyExchange报文、客户端Certificate报文和客户端ClientKeyExchange报文作为SHA-1算法的输入,得到相同的哈希值;签名方法,用于对通过哈希算法得到的哈希值进行加密,得到加密哈希值,加密过程中用到了客户端的私钥,如果客户端是真实的客户端,而不是被黑客冒充的客户端,那么,加密过程中用到的客户端的私钥即为(客户端多证书链对应的)证书公钥对应的私钥。
步骤700,获取客户端发送的所述客户端Certificate报文。
客户端在将客户端Certificate报文发送给服务器之后,服务器便会对客户端多证书链进行校验,得到校验结果。
步骤800,获取客户端发送的客户端ClientKeyExchange报文,所述客户端ClientKeyExchange报文中包括加密预主密钥,所述加密预主密钥是使用服务器的公钥对预主密钥进行加密得到的,所述服务器的公钥是通过所述服务器证书链得到的。
预主密钥,是在客户端生成的,在生成预主密钥后,客户端还需要使用服务器的公钥对生成的预主密钥进行加密,得到加密预主密钥,然后通过客户端ClientKeyExchange报文将加密预主密钥发送至服务器,以便对服务器进行再次校验,可以理解的是,如果服务器没有被黑客冒充,服务器确实持有服务器证书链对应的私钥,那么,服务器便能够利用服务器证书链对应的私钥解密加密预主密钥,若服务器能够解密加密预主密钥,则客户端对服务器的再次校验成功,若服务器不能够解密加密预主密钥,则客户端对服务器的再次校验失败。
步骤900,获取客户端发送的CertificateVerify报文,所述CertificateVerify报文中包括所述加密哈希值。
客户端通过CertificateVerify报文,将加密哈希值发送给服务器,以便服务器通过加密哈希值校验客户端是否持有和证书公钥对应的私钥。
客户端认证方法,还包括:获取客户端发送的Finished报文,向客户端发送Finished报文。其中,Finished报文用于指示握手完成,之后的消息将会被会话密钥加密。
上述实施例,说明了如何得到加密哈希值,以及,客户端如何对服务器进行校验,从而保障客户端和服务器之间的安全交互。
在一个实施例中,在步骤300所述若所述校验结果为校验通过,则根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果之后,还包括:
步骤1000,若认证结果为认证通过,则使用服务器的私钥解密所述加密预主密钥,得到预主密钥。
需要说明的是,由于加密预主密钥是客户端使用服务器证书链的公钥加密的,因此,如果服务器是黑客冒充的服务器,那么,由于黑客并没有持有真正的服务器的私钥,所以,即使黑客获取到了加密预主密钥,也无法解密,由于黑客无法解密加密预主密钥,因此,客户端对服务器的再次校验失败,相反的,如果服务器是真实的服务器,那么,该真实的服务器使用私钥将成功解密加密预主密钥,得到客户端发送给服务器的预主密钥,由于服务器对客户端认证通过,因此,服务器在获取到预主密钥之后,将根据预主密钥生成主密钥。
步骤1100,根据所述第一随机数、第二随机数和预主密钥得到主密钥。
具体的,服务器和客户端均会根据第一随机数、第二随机数和预主密钥得到主密钥,在得到主密钥之后,服务器和客户端还会根据主密钥得到会话密钥,从而,后续客户端和服务器在给对方发送数据时,将使用会话密钥对数据加密,例如,基于会话密钥,使用AES算法对数据加密,保证后续安全发送数据。
上述实施例,服务器在认证通过后,会使用预主密钥得到主密钥,进而得到会话密钥,从而后续服务器和客户端通过会话密钥向对方发送数据,实现安全交互。
在一个实施例中,如图3所示,提供了一种客户端认证装置300,包括:
获取模块301,用于从客户端发送的客户端Certificate报文中获取客户端多证书链,所述客户端多证书链包括多个客户端证书链,所述客户端证书链包括多个证书;
校验模块302,用于对所述客户端多证书链进行校验,得到校验结果;
认证模块303,用于若所述校验结果为校验通过,则根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,所述加密哈希值是所述客户端通过私钥加密得到的。
在一个实施例中,所述认证模块303,具体用于:使用所述客户端多证书链对应的证书公钥解密所述加密哈希值,得到解密哈希值;若所述解密哈希值与本地计算得到的哈希值相同,则认证结果为认证通过;若所述解密哈希值与本地计算得到的哈希值不同,则认证结果为认证失败。
在一个实施例中,校验模块302,具体用于:确定所述客户端多证书链中的证书是否在有效期内;确定所述客户端多证书链中的证书是否两两不同;确定所述客户端多证书链包含的客户端证书链的数量是否准确;确定所述客户端多证书链中的客户端证书中的公钥是否全部相同;若所述客户端多证书链中的证书均在有效期内,所述客户端多证书链中的证书两两不同、所述客户端多证书链包含的客户端证书链的数量准确并且所述客户端多证书链中的客户端证书中的公钥全部相同,则校验结果为校验通过。
在一个实施例中,校验模块302,具体用于:确定所述客户端多证书链中的证书是否在有效期内;确定所述客户端多证书链中的证书是否两两不同;确定所述客户端多证书链包含的客户端证书链的数量是否准确;确定所述客户端多证书链中的客户端证书中的公钥是否全部相同;确定是否能够解密所述客户端多证书链中的证书的签名;确定所述客户端多证书链中的客户端证书中的域名是否全部相同;在所述客户端多证书链中的客户端证书中的域名全部相同时,确定所述客户端多证书链中的客户端证书中的域名与所述客户端在访问服务器时使用的域名是否相同;若所述客户端多证书链中的证书均在有效期内,所述客户端多证书链中的证书两两不同、所述客户端多证书链包含的客户端证书链的数量准确、所述客户端多证书链中的客户端证书中的公钥全部相同、能够解密所述客户端多证书链中的证书的签名、所述客户端多证书链中的客户端证书中的域名全部相同并且所述客户端多证书链中的客户端证书中的域名与所述客户端在访问服务器时使用的域名相同,则校验结果为校验通过。
在一个实施例中,客户端认证装置300,还包括:报文模块,用于:获取客户端发送的ClientHello报文,所述ClientHello报文中包括安全协议的多个版本、第一随机数和多个密码套件;根据客户端发送的ClientHello报文,向客户端发送ServerHello报文,所述ServerHello报文中包括从安全协议的多个版本中选择出来的目标版本、从多个密码套件中选择出来的目标密码套件和第二随机数;向客户端发送服务器Certificate报文、服务器ServerKeyExchange报文、Certificate Request报文和ServerHelloDone报文,所述服务器Certificate报文中包括服务器证书链,所述服务器ServerKeyExchange报文中包括签名方法以及哈希算法,所述签名方法以及哈希算法用于得到所述加密哈希值,所述CertificateRequest报文用于指示客户端向服务器发送客户端多证书链,所述ServerHelloDone报文指示服务器消息发送完毕等待客户端发送消息;获取客户端发送的所述客户端Certificate报文;获取客户端发送的客户端ClientKeyExchange报文,所述客户端ClientKeyExchange报文中包括加密预主密钥,所述加密预主密钥是使用服务器的公钥对预主密钥进行加密得到的,所述服务器的公钥是通过所述服务器证书链得到的;获取客户端发送的CertificateVerify报文,所述CertificateVerify报文中包括所述加密哈希值。
在一个实施例中,客户端认证装置300,还包括:主密钥模块,用于:若认证结果为认证通过,则使用服务器的私钥解密所述加密预主密钥,得到预主密钥;根据所述第一随机数、第二随机数和预主密钥得到主密钥两两不同两两不同两两不同两两不同。
在一个实施例中,如图4所示,提供了一种计算机设备,该计算机设备具体可以是终端或服务器。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口,存储器包括非易失性存储介质和内存储器,该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现客户端认证方法。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行客户端认证方法。本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本申请提供的客户端认证方法可以实现为一种计算机程序的形式,计算机程序可在如图4所示的计算机设备上运行。计算机设备的存储器中可存储组成客户端认证装置的各个程序模板。比如,获取模块301、校验模块302和认证模块303。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
从客户端发送的客户端Certificate报文中获取客户端多证书链,所述客户端多证书链包括多个客户端证书链,所述客户端证书链包括多个证书;
对所述客户端多证书链进行校验,得到校验结果;
若所述校验结果为校验通过,则根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,所述加密哈希值是所述客户端通过私钥加密得到的。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:
从客户端发送的客户端Certificate报文中获取客户端多证书链,所述客户端多证书链包括多个客户端证书链,所述客户端证书链包括多个证书;
对所述客户端多证书链进行校验,得到校验结果;
若所述校验结果为校验通过,则根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,所述加密哈希值是所述客户端通过私钥加密得到的。
需要说明的是,上述客户端认证方法、客户端认证装置、计算机设备及计算机可读存储介质属于一个总的发明构思,客户端认证方法、客户端认证装置、计算机设备及计算机可读存储介质实施例中的内容可相互适用。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种客户端认证方法,其特征在于,包括:
从客户端发送的客户端Certificate报文中获取客户端多证书链,所述客户端多证书链包括多个客户端证书链,所述客户端证书链包括多个证书;
对所述客户端多证书链进行校验,得到校验结果;
若所述校验结果为校验通过,则根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,所述加密哈希值是所述客户端通过私钥加密得到的。
2.根据权利要求1所述的客户端认证方法,其特征在于,所述根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,包括:
使用所述客户端多证书链对应的证书公钥解密所述加密哈希值,得到解密哈希值;
若所述解密哈希值与本地计算得到的哈希值相同,则认证结果为认证通过;
若所述解密哈希值与本地计算得到的哈希值不同,则认证结果为认证失败。
3.根据权利要求1所述的客户端认证方法,其特征在于,所述对所述客户端多证书链进行校验,得到校验结果,包括:
确定所述客户端多证书链中的证书是否在有效期内;
确定所述客户端多证书链中的证书是否两两不同;
确定所述客户端多证书链包含的客户端证书链的数量是否准确;
确定所述客户端多证书链中的客户端证书中的公钥是否全部相同;
若所述客户端多证书链中的证书均在有效期内,所述客户端多证书链中的证书两两不同、所述客户端多证书链包含的客户端证书链的数量准确并且所述客户端多证书链中的客户端证书中的公钥全部相同,则校验结果为校验通过。
4.根据权利要求1所述的客户端认证方法,其特征在于,所述对所述客户端多证书链进行校验,得到校验结果,包括:
确定所述客户端多证书链中的证书是否在有效期内;
确定所述客户端多证书链中的证书是否两两不同;
确定所述客户端多证书链包含的客户端证书链的数量是否准确;
确定所述客户端多证书链中的客户端证书中的公钥是否全部相同;
确定是否能够解密所述客户端多证书链中的证书的签名;
确定所述客户端多证书链中的客户端证书中的域名是否全部相同;
在所述客户端多证书链中的客户端证书中的域名全部相同时,确定所述客户端多证书链中的客户端证书中的域名与所述客户端在访问服务器时使用的域名是否相同;
若所述客户端多证书链中的证书均在有效期内,所述客户端多证书链中的证书两两不同、所述客户端多证书链包含的客户端证书链的数量准确、所述客户端多证书链中的客户端证书中的公钥全部相同、能够解密所述客户端多证书链中的证书的签名、所述客户端多证书链中的客户端证书中的域名全部相同并且所述客户端多证书链中的客户端证书中的域名与所述客户端在访问服务器时使用的域名相同,则校验结果为校验通过。
5.根据权利要求1所述的,其特征在于,在所述从客户端发送的客户端Certificate报文中获取客户端多证书链之前,还包括:
获取客户端发送的ClientHello报文,所述ClientHello报文中包括安全协议的多个版本、第一随机数和多个密码套件;
根据客户端发送的ClientHello报文,向客户端发送ServerHello报文,所述ServerHello报文中包括从安全协议的多个版本中选择出来的目标版本、从多个密码套件中选择出来的目标密码套件和第二随机数;
向客户端发送服务器Certificate报文、服务器ServerKeyExchange报文、CertificateRequest报文和ServerHelloDone报文,所述服务器Certificate报文中包括服务器证书链,所述服务器ServerKeyExchange报文中包括签名方法以及哈希算法,所述签名方法以及哈希算法用于得到所述加密哈希值,所述Certificate Request报文用于指示客户端向服务器发送客户端多证书链,所述ServerHelloDone报文指示服务器消息发送完毕等待客户端发送消息;
获取客户端发送的所述客户端Certificate报文;
获取客户端发送的客户端ClientKeyExchange报文,所述客户端ClientKeyExchange报文中包括加密预主密钥,所述加密预主密钥是使用服务器的公钥对预主密钥进行加密得到的,所述服务器的公钥是通过所述服务器证书链得到的;
获取客户端发送的CertificateVerify报文,所述CertificateVerify报文中包括所述加密哈希值。
6.根据权利要求5所述的客户端认证方法,其特征在于,在所述若所述校验结果为校验通过,则根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果之后,还包括:
若认证结果为认证通过,则使用服务器的私钥解密所述加密预主密钥,得到预主密钥;
根据所述第一随机数、第二随机数和预主密钥得到主密钥。
7.一种客户端认证装置,其特征在于,包括:
获取模块,用于从客户端发送的客户端Certificate报文中获取客户端多证书链,所述客户端多证书链包括多个客户端证书链,所述客户端证书链包括多个证书;
校验模块,用于对所述客户端多证书链进行校验,得到校验结果;
认证模块,用于若所述校验结果为校验通过,则根据所述客户端多证书链对应的证书公钥、客户端发送的加密哈希值和本地计算得到的哈希值,得到认证结果,所述加密哈希值是所述客户端通过私钥加密得到的。
8.根据权利要求7所述的客户端认证装置,其特征在于,所述认证模块,具体用于:使用所述客户端多证书链对应的证书公钥解密所述加密哈希值,得到解密哈希值;若所述解密哈希值与本地计算得到的哈希值相同,则认证结果为认证通过;若所述解密哈希值与本地计算得到的哈希值不同,则认证结果为认证失败。
9.一种计算机设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述客户端认证方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读取存储介质中存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行权利要求1至6任一项所述客户端认证方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111629669.3A CN114329426A (zh) | 2021-12-28 | 2021-12-28 | 一种客户端认证方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111629669.3A CN114329426A (zh) | 2021-12-28 | 2021-12-28 | 一种客户端认证方法、装置、设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114329426A true CN114329426A (zh) | 2022-04-12 |
Family
ID=81015039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111629669.3A Pending CN114329426A (zh) | 2021-12-28 | 2021-12-28 | 一种客户端认证方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114329426A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117176479A (zh) * | 2023-11-02 | 2023-12-05 | 北京安博通科技股份有限公司 | 一种旁路解密国密流量审计的方法、装置及电子设备 |
-
2021
- 2021-12-28 CN CN202111629669.3A patent/CN114329426A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117176479A (zh) * | 2023-11-02 | 2023-12-05 | 北京安博通科技股份有限公司 | 一种旁路解密国密流量审计的方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11128477B2 (en) | Electronic certification system | |
US9992189B2 (en) | Generation and validation of derived credentials | |
US9900163B2 (en) | Facilitating secure online transactions | |
KR100962399B1 (ko) | 익명 공개 키 기반구조 제공 방법 및 이를 이용한 서비스제공 방법 | |
US20090307486A1 (en) | System and method for secured network access utilizing a client .net software component | |
US20100217975A1 (en) | Method and system for secure online transactions with message-level validation | |
US20090240936A1 (en) | System and method for storing client-side certificate credentials | |
CN113630416A (zh) | 机密认证和供应 | |
CN102624740A (zh) | 一种数据交互方法及客户端、服务器 | |
US10257171B2 (en) | Server public key pinning by URL | |
CN111030814A (zh) | 秘钥协商方法及装置 | |
US20230269093A1 (en) | System and method for providing a verified privacy-preserving attestation of web service data properties | |
CN113472790B (zh) | 基于https协议的信息传输方法、客户端及服务器 | |
CN112804217B (zh) | 一种基于区块链技术的存证方法和装置 | |
US11652647B2 (en) | Authentication system and computer readable medium | |
US20120102319A1 (en) | System and Method for Reliably Authenticating an Appliance | |
CN112235301B (zh) | 访问权限的验证方法、装置和电子设备 | |
AU2007300707B2 (en) | System and method for facilitating secure online transactions | |
CN112583588B (zh) | 一种通信方法及装置、可读存储介质 | |
CN114329426A (zh) | 一种客户端认证方法、装置、设备以及存储介质 | |
CN113271207A (zh) | 基于移动电子签名的托管密钥使用方法、系统、计算机设备及存储介质 | |
CN110855442A (zh) | 一种基于pki技术的设备间证书验证方法 | |
CN114358932A (zh) | 认证处理方法及装置 | |
CN114679299A (zh) | 通信协议加密方法、装置、计算机设备和存储介质 | |
CN111182004A (zh) | Ssl握手方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |