本发明涉及通信,具体而言,涉及一种quic连接建立方法及系统装置、电子设备和存储介质。
背景技术:
1、出于对安全问题的重视,现如今网络边缘接入的流量绝大部分已经都是https流量。不过传统的https请求是基于tcp协议进行传输的,tcp协议存在的一些问题,包括tcp队头阻塞、握手延迟、协议僵化等。因此能够兼顾高可靠和低延迟的quic(quick udpinternet connection)协议逐渐成为新的替代技术。quic协议是基于udp的一种传输协议,能够实现多路复用以及安全性保护,quic协议不仅集成了超文本传输协议(hypertexttransfer protocol,http)2.0、安全传输层协议(transport layer security,tls)、传输控制协议(transmission control protocol,tcp)的优点,还实现了减小接入时延、更便捷的流量拥塞控制、更好的纠错机制等。
2、但quic的握手方式是不对称的,第一次握手时,服务端通常会发送自己的证书链,而客户端则只需要发送几个字节,因此udp+quic协议和tcp+tls协议相比,增加了反射攻击的可能性,而且,现有技术中所使用的加密算法存在安全可控性差的问题。因此,如何在使用quic协议进行通信的情况下,避免对用户的安全信息产生不利影响,是本技术要解决的问题。
技术实现思路
1、为解决上述问题,本发明第一方面提供一种quic连接建立方法,应用于服务端,包括:
2、接收客户端发送的client hello消息,所述client hello消息包括第一国密信息;
3、从所述第一国密信息中选取第二国密信息,并向所述客户端发送server hello消息,所述server hello消息包括第二国密信息;
4、确定国密证书,并通过第二国密信息中的签名算法对所述国密证书进行签名,生成验证信息;
5、向所述客户端发送hand shake消息,所述hand shake消息包含所述国密证书、所述验证信息和finished消息;
6、所述服务端完成与客户端的连接建立过程。
7、在一种实施方式中,所述第一国密信息为所述客户端支持的至少一个国密算法套件。
8、在一种实施方式中,所述从所述第一国密信息中选取第二国密信息,包括:
9、提取所述第一国密信息中的所有国密算法套件,根据预设的筛选策略进行筛选,将筛选出的所述国密算法套件作为所述第二国密信息。
10、在一种实施方式中,所述确定国密证书,包括:
11、若确定所述client hello消息中携带有sni扩展信息,提取所述sni扩展信息中的域名信息,将与所述域名信息对应的国密证书作为所述国密证书,和/或
12、若确定所述client hello消息中未携带所述sni扩展信息,将默认的国密证书作为所述国密证书。
13、在一种实施方式中,所述方法还包括:
14、与所述客户端进行数据交互时,通过所述会话密钥和所述第二国密信息中的sm4算法进行加/解密;
15、所述会话密钥为服务端与客户端的连接建立后生成的。
16、在一种实施方式中,所述会话密钥的生成,包括:
17、所述client hello消息还包括客户端随机数和客户端key-share信息;
18、获取服务端随机数和服务端key-share信息;
19、根据所述客户端key-share信息和所述服务端key-share信息生成预主密钥;
20、根据所述客户端随机数、所述服务端随机数和所述预主密钥生成所述会话密钥。
21、本发明第二方面提供一种quic连接建立方法,应用于客户端,包括:
22、向服务端发送client hello消息,所述client hello消息包括第一国密信息;
23、接收所述服务端发送的server hello消息,所述server hello消息包括从所述第一国密信息中选取的第二国密信息;
24、接收所述服务端发送的hand shake消息,所述hand shake消息包括国密证书和所述服务端通过所述第二国密信息中的签名算法生成的验证信息;
25、通过所述验证信息对所述国密证书进行验证;
26、向服务端发送hand shake消息,所述hand shake消息包含finished消息;
27、所述服务端完成与客户端的连接建立过程。
28、在一种实施方式中,所述方法还包括:
29、与所述服务端进行数据交互时,通过会话密钥和所述第二国密信息中的sm4算法进行加/解密;
30、所述会话密钥为客户端与服务端的连接建立后生成的。
31、在一种实施方式中,所述会话密钥的生成,包括:
32、获取客户端随机数和客户端key-share信息;
33、所述server hello消息还包括服务端随机数和服务端key-share信息;
34、根据所述客户端key-share信息和所述服务端key-share信息生成预主密钥;
35、根据所述客户端随机数、所述服务端随机数和所述预主密钥生成所述会话密钥。
36、在一种实施方式中,所述client hello消息还包括sni扩展信息,所述sni扩展信息包括客户端所请求的域名信息;
37、所述sni扩展信息用于服务端选择与域名信息对应的国密证书。
38、在一种实施方式中,所述方法还包括:
39、所述第一国密信息为所述客户端支持的至少一个国密算法套件。
40、本发明第三方面提供一种quic连接建立系统,其包括:客户端和服务端;
41、所述服务端,用于接收客户端发送的client hello消息,所述client hello消息包括第一国密信息和域名信息;从所述第一国密信息中选取第二国密信息,并向所述客户端发送server hello消息,所述server hello消息包括第二国密信息;根据所述域名信息和所述第二国密信息确定国密证书,并通过第二国密信息中的签名算法对所述国密证书进行签名,生成验证信息;向所述客户端发送hand shake消息,所述hand shake消息包含所述国密证书、所述验证信息和finished消息;所述服务端完成与客户端的连接建立过程;
42、所述客户端,用于向服务端发送client hello消息,所述client hello消息包括第一国密信息;接收所述服务端发送的server hello消息,所述server hello消息包括从所述第一国密信息中选取的第二国密信息;接收所述服务端发送的hand shake消息,所述hand shake消息包括国密证书和所述服务端通过所述第二国密信息中的签名算法生成的验证信息;通过所述验证信息对所述国密证书进行验证;向服务端发送hand shake消息,所述hand shake消息包含finished消息;所述服务端完成与客户端的连接建立过程。
43、本发明第四方面提供一种quic连接建立装置,应用于服务端,包括:
44、第一获取模块,用于接收客户端发送的client hello消息,所述client hello消息包括第一国密信息和域名信息;
45、选取模块,用于从所述第一国密信息中选取第二国密信息,
46、第一发送模块,用于向所述客户端发送server hello消息,所述server hello消息中携带有所述第二国密信息;
47、证书确定模块,用于根据所述域名信息和所述第二国密信息确定国密证书;
48、第一生成模块,用于通过第二国密信息中的签名算法对所述国密证书进行签名,生成验证信息;
49、所述第一发送模块,还用于向所述客户端发送hand shake消息,所述hand shake消息包含所述国密证书、所述验证信息和finished消息;
50、本发明第五方面提供一种quic连接建立装置,应用于客户端,包括:
51、第二发送模块,用于向服务端发送client hello消息,所述client hello消息包括第一国密信息;
52、第二获取模块,用于接收所述服务端发送的server hello消息,所述serverhello消息包括从所述第一国密信息中选取的第二国密信息;接收所述服务端发送的handshake消息,所述hand shake消息包括国密证书和所述服务端通过所述第二国密信息中的签名算法生成的验证信息;
53、验证模块,用于通过所述验证信息对所述国密证书进行验证;
54、第二发送模块,还用于向服务端发送hand shake消息,所述hand shake消息包含finished消息。
55、本发明第六方面提供一种电子设备,包括存储有计算机程序的计算机可读存储介质和处理器,所述计算机程序被所述处理器读取并运行时,实现如前述所述的方法。
56、本发明第七方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器读取并运行时,实现如前述所述的方法。
57、本发明第八方面提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行实现如前述所述的方法。
58、本技术中,无需服务端发送证书链,从而使得quic连接建立过程中客户端和服务端的发送信息趋于对称,大大降低了反射攻击的可能性;本技术在quic连接建立过程中引入国密算法,基于国密算法具有安全、快速和自主可控的优点,从而可以更好的保证用户数据安全;同时通过在服务端增加了对sni扩展字段的支持,使其能够根据不同的域名返回不同的证书,大大提升了为不同域名提供安全加密传输的能力,以及更高效的国密证书的部署能力。