通信方法、通信装置、电子设备及计算机存储介质与流程

未命名 10-08 阅读:96 评论:0


1.本公开涉及通信技术领域,尤其涉及数据加密技术领域。具体地,涉及一种通信方法、通信装置、电子设备、计算机存储介质以及程序产品。


背景技术:

2.随着计算机技术的不断发展,对通信过程的安全需求也越来越高。例如,在适配多种加密通信协议的情况下完成通信操作。


技术实现要素:

3.本公开提供了一种通信方法、通信装置、电子设备、计算机存储介质、计算机程序产品。
4.根据本公开的一方面,提供了一种通信方法,包括:响应于已创建与客户端的通信线路,将代理引擎配置为虚拟代理引擎;响应于经由通信线路接收到来自客户端的客户端握手数据,基于客户端握手数据,确定加密通信协议的版本信息,其中,客户端握手数据为用于加密通信的数据;将虚拟代理引擎更新为与版本信息相匹配的目标代理引擎;基于客户端握手数据,利用目标代理引擎,生成服务端握手数据;以及将服务端握手数据发送至客户端。
5.根据本公开的另一方面,提供了一种通信装置,包括:配置模块,用于响应于已创建与客户端的通信线路,将代理引擎配置为虚拟代理引擎;版本信息确定模块,用于响应于经由通信线路接收到来自客户端的客户端握手数据,基于客户端握手数据,确定加密通信协议的版本信息,其中,客户端握手数据为用于加密通信的数据;引擎更新模块,用于将虚拟代理引擎更新为与版本信息相匹配的目标代理引擎;第一生成模块,用于基于客户端握手数据,利用目标代理引擎,生成服务端握手数据;以及第一发送模块,用于将服务端握手数据发送至客户端。
6.根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如本公开的方法。
7.根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行如本公开的方法。
8.根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现如本公开的方法。
9.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
10.附图用于更好地理解本方案,不构成对本公开的限定。其中:
11.图1示意性示出了根据本公开实施例的可以应用通信方法及装置的示例性系统架构;
12.图2示意性示出了根据本公开实施例的通信方法的流程图;
13.图3示意性示出了根据本公开实施例的加密通信连接的信令图;
14.图4示意性示出了根据本公开实施例的生成服务端握手数据的流程图;
15.图5示意性示出了根据本公开另一实施例的生成服务端握手数据的流程图;
16.图6示意性示出了根据本公开实施例的通信装置的框图;以及
17.图7示意性示出了根据本公开实施例的适于实现通信方法的电子设备的框图。
具体实施方式
18.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
19.针对两个或两个以上终端之间的通信操作,可以利用多种加密通信协议实现通信。通过加密通信协议进行加密通信,能够解决很多网络安全问题。例如,数据保密,所有信息都加密传输,使得第三方无法嗅探;数据完整性检查,通过mac(message authentication code)校验机制,一旦被篡改,通信双方会立刻发现;身份认证,通信双方都可以配备证书,防止身份被冒充。
20.根据本公开的实施例,加密通信协议可以包括以下至少其中之一:安全套接层(secure sockets layer,ssl)协议、ssl协议升级后的安全传输层(transport layer security,tls)协议、利用国密算法加强ssl协议后的国密ssl协议等。ssl协议和tls协议可以理解为标准ssl协议。
21.国密算法包括了对称加密算法、椭圆曲线非对称加密算法、杂凑算法等。国密ssl协议在传输层安全协议的基础上做了升级和安全加强。国密ssl采用了双证书机制,服务端密钥为非对称密码算法的密钥对,包括签名密钥对和加密密钥对。签名密钥对由vpn(virtual private network,虚拟专用网络)自身密码模块产生,加密密钥对通过ca(certificate authority,认证中心)向kmc(key management center,密钥管理中心)申请,用于握手过程中服务端身份鉴别和预主密钥的协商。
22.虽然,国密ssl协议参考了标准ssl协议,但是,在两个或两个以上终端之间进行握手时,国密ssl协议的加密算法与标准ssl协议的加密算法不同。国密ssl在证书管理方面也由单证书升级为双证书。因此标准ssl与国密ssl不能无缝替换。
23.在物联网场景中,大量设备需要通过加密方式连接到服务端,有些设备支持标准ssl协议的通信,有些设备支持国密ssl协议或其他加密通信协议的通信。针对通过多个服务端口适配多个加密通信协议的方案,发明人发现,由于物联网中存在种类复杂、来源广泛、数量庞大的客户端,利用多个服务端口适配多个加密通信协议会导致适配操作复杂易错、端口配置成本高、人工维护成本高的技术问题。
24.为了至少部分地解决上述技术问题,本公开提出了一种通信方法,包括:响应于已创建与客户端的通信线路,将代理引擎配置为虚拟代理引擎;响应于经由通信线路接收到
来自客户端的客户端握手数据,基于客户端握手数据,确定加密通信协议的版本信息,其中,客户端握手数据为用于加密通信的数据;将虚拟代理引擎更新为与版本信息相匹配的目标代理引擎;基于客户端握手数据,利用目标代理引擎,生成服务端握手数据;以及将服务端握手数据发送至客户端。
25.在本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
26.在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
27.图1示意性示出了根据本公开实施例的可以应用通信方法及装置的示例性系统架构。
28.需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。例如,在另一实施例中,可以应用通信方法及装置的示例性系统架构可以包括客户端,但客户端可以无需与服务端进行交互,即可实现本公开实施例提供的通信方法及装置。
29.如图1所示,根据该实施例的系统架构100可以包括客户端101、102、103,网络104和服务端105。网络104用以在客户端101、102、103和服务端105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线和/或无线通信链路等等。
30.用户可以使用客户端101、102、103通过网络104与服务端105交互,以接收或发送消息等。客户端101、102、103上可以安装有各种通讯客户端应用,例如知识阅读类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端和/或社交平台软件等(仅为示例)。
31.客户端101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
32.服务端105可以是提供各种服务的服务器,例如对用户利用客户端101、102、103所浏览的内容提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等加密数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)进行加密,将加密后的处理结果反馈给客户端。
33.本公开实施例所提供的通信方法一般也可以由服务端105执行。相应地,本公开实施例所提供的通信装置一般可以设置于服务端105中。本公开实施例所提供的通信方法也可以由不同于服务端105且能够与客户端101、102、103和/或服务端105通信的服务端或服务端集群执行。相应地,本公开实施例所提供的通信装置也可以设置于不同于服务端105且能够与客户端101、102、103和/或服务端105通信的服务端或服务端集群中。
34.例如,已经在客户端101、102、103与服务端105之间创建通信线路。服务端105响应于已创建与客户端的通信线路,将代理引擎配置为虚拟代理引擎。客户端101、102、103向服务端105经由通信线路发送客户端握手数据,以进行ssl握手连接。服务端105响应于已接收到客户端握手数据,基于客户端握手数据,确定加密通信协议的版本信息。将虚拟代理引擎更新为与版本信息相匹配的目标代理引擎。基于客户端握手数据,利用目标代理引擎,生成服务端握手数据。服务端105将服务端握手数据发送至客户端101、102、103。完成与客户端
101、102、103之间的加密通信连接。
35.应该理解,图1中的客户端、网络和服务端的数目仅仅是示意性的。根据实现需要,可以具有任意数目的客户端、网络和服务端。
36.应注意,以下方法中各个操作的序号仅作为该操作的表示以便描述,而不应被看作表示该各个操作的执行顺序。除非明确指出,否则该方法不需要完全按照所示顺序来执行。
37.图2示意性示出了根据本公开实施例的通信方法的流程图。
38.如图2所示,该方法包括操作s210~s250。
39.在操作s210,响应于已创建与客户端的通信线路,将代理引擎配置为虚拟代理引擎。
40.在操作s220,响应于经由通信线路接收到来自客户端的客户端握手数据,基于客户端握手数据,确定加密通信协议的版本信息。
41.在操作s230,将虚拟代理引擎更新为与版本信息相匹配的目标代理引擎。
42.在操作s240,基于客户端握手数据,利用目标代理引擎,生成服务端握手数据。
43.在操作s250,将服务端握手数据发送至客户端。
44.根据本公开的实施例,用于通信的终端可以为客户端或服务端。例如,多个客户端与同一个服务端进行通信;或者,多个客户端与多个服务端之间进行通信;再或者,多个客户端之间进行通信、多个服务端之间进行通信。
45.根据本公开的实施例,在客户端与服务端进行通信之前,客户端与服务端之间会建立通信线路。例如,客户端和服务端通过三次握手建立通信线路,通信线路包括基于传输控制协议(transmission control protocol,tcp)建立的tcp连接。
46.根据本公开的实施例,客户端和服务端可以通过以下步骤建立通信线路。客户端向服务端发送套接字(socket)连接请求,服务端接收上述socket连接请求,经过处理后向客户端发送确认建立连接的报文。客户端在接收到由服务端发送的确认建立连接的报文之后,再次向服务端发送确认报文,同时,客户端向上层应用返回已建立通信线路的通知。由此,服务端与客户端之间实现通信线路的创建。
47.根据本公开的实施例,代理引擎,也称为引擎(engine)。服务端通过代理引擎,能够访问第三方提供的硬件加密设备或软件加密库,用于对通信过程的数据进行加密或者解密。
48.根据本公开的实施例,虚拟代理引擎可以理解为非实体的、虚拟化的代理引擎。目标代理引擎可以理解为具有软件或硬件设备的、能够向第三方进行访问的代理引擎。
49.例如,针对服务端实际安装或配置的代理引擎a,代理引擎a可以作为目标代理引擎,以便执行与加密通信协议的版本信息相匹配的加密操作。为了实现本公开的实施例,还可以虚拟化地设置一个代理引擎b,并将代理引擎b作为虚拟代理引擎。其中,代理引擎b仅以名字的形式存在,服务端中没有安装或配置代理引擎b。
50.根据本公开的实施例,高性能网络通信框架,例如netty应用程序,能够提供异步的、事件驱动的网络应用程序框架和工具。当客户端与服务端建立套接字连接后,装载于服务端的高性能网络通信框架会与客户端之间进行加密通信的连接。例如,在确定已创建与客户端的通信线路,高性能网络通信框架加载ssl证书、加载代理引擎。
51.根据本公开的实施例,响应于已创建与客户端的通信线路,服务端可以将代理引擎配置为虚拟代理引擎。具体地,可以将与代理引擎相关的参数配置为虚拟代理引擎。例如,将代理引擎中执行对象dengine的目标参数项配置为与虚拟代理引擎相关的参数值或标识。
52.根据本公开的实施例,客户端握手数据为用于加密通信的数据。具体地,客户端握手数据包括与客户端相关的、用于通信的数据,例如client hello数据包。客户端握手数据可以包括客户端支持的加密通信协议例如安全通信协议的版本信息,如国密ssl协议的版本信息或者标准ssl协议的版本信息。
53.根据本公开的实施例,客户端握手数据还可以包括与加密相关的、用于通信的数据,例如,客户端支持的密码套件序列、随机数等信息。
54.根据本公开的实施例,响应于已创建与客户端的通信线路,高性能网络通信框架可以通过调用初始化类,例如channel initializer类,中的初始化方法,例如initial channel方法,执行初始化操作。初始化操作可以包括:将代理引擎配置为虚拟代理引擎。当前的代理引擎为虚拟代理引擎,无法实现实际功能,例如无法实现对数据的加密操作以及生成服务端握手数据。
55.根据本公开的实施例,在确定初始化操作已完成的情况下,可以利用数据处理类,例如distinguish ssl handler类中的数据处理方法,基于客户端握手数据,确定加密通信协议的版本信息。
56.根据本公开的实施例,在确定加密通信协议的版本信息的情况下,可以通过将虚拟代理引擎更新为与上述版本信息相匹配的目标代理引擎,使得服务端能够基于目标代理引擎实现数据加密操作,例如基于客户端握手数据,生成服务端握手数据。
57.根据本公开的实施例,服务端可以包括不同版本的多个加密通信协议、以及与多个版本信息一一对应的多个代理引擎。在基于客户端握手数据确定加密通信协议的版本信息的情况下,可以从多个代理引擎中确定与上述版本信息相匹配的目标代理引擎,使得当前的代理引擎被配置为实际的目标代理引擎,以便在适配上述加密通信协议的情况下,实现客户端与服务端的通信。例如,在加密通信协议为国密ssl协议的情况下,将国密ssl代理引擎作为目标代理引擎。在加密通信协议为标准ssl协议的情况下,将标准ssl代理引擎作为目标代理引擎。
58.根据本公开的实施例,在确定目标代理引擎之后,服务端可以基于客户端握手数据,利用目标代理引擎,生成服务端握手数据。将服务端握手数据发送至客户端,以便通知客户端握手成功。
59.根据本公开的实施例,响应于已创建与客户端的通信线路,将代理引擎配置为虚拟代理引擎,能够完成高性能网络通信框架的初始化工作。根据客户端握手数据确定加密通信协议的版本信息,并基于版本信息将虚拟代理引擎更新为目标代理引擎,进行将初始化操作中的加载与版本信息相匹配的目标代理引擎的操作延迟到已接收到客户端握手数据,对程序代码的改动小的同时,无需引入代理、转发机制或中间设备,能够实现自适应适配多种加密通信协议,不会造成任何的性能损失或者网络延迟。此外,由于本公开的实施例中加密通信协议的版本信息是根据客户端握手数据确定的,不依赖于其他数据,提高了通信方法的适用范围。
60.在实现上述发明构思的过程中,发明人发现能够通过协议转发器或代理节点接收来自客户端的客户端握手数据,基于客户端握手数据确定加密通信协议的协议类型。由协议转发器或代理节点将客户端握手数据转发至对应的服务端,由此适配不同类型的多个加密通信协议。具体地,代理节点能够通过提取http header字段中的值以及cipher suite字段的值来确定加密通信协议的版本信息,进而将客户端握手数据转发至与版本信息对应的服务端进行数据加密操作。
61.与通过协议转发器或代理节点进行通信的方式相比,本公开实施例提供的通信方法,无需额外架设协议转发器或者代理节点,也无需配置多组服务端,由此降低了系统的复杂度以及降低了开发、运维成本。此外,本公开实施例提供的通信方法,因避免使用代理节点或者转发器,避免形成系统瓶颈进而避免了网络延迟。此外,本公开实施例是基于客户端握手数据,确定版本协议,不局限于网站类场景,提高了客户端的应用范围。
62.图3示意性示出了根据本公开实施例的通信方法的信令图。
63.如图3所示,该方法包括操作s310~s360。
64.在操作s310,服务端响应于已创建与客户端的通信线路,将代理引擎配置为虚拟代理引擎。
65.在操作s320,经由通信线路,服务端接收来自客户端的客户端握手数据。
66.在操作s330,服务端基于客户端握手数据,确定加密通信协议的版本信息。
67.在操作s340,服务端将虚拟代理引擎更新为与版本信息相匹配的目标代理引擎。
68.在操作s350,服务端基于客户端握手数据,利用目标代理引擎,生成服务端握手数据。
69.在操作s360,服务端发送服务端握手数据至客户端。
70.根据本公开的实施例,通过配置虚拟代理引擎,实现仍沿用开源ssl握手机制进行初始化操作,仅需调整目标代理引擎的加载时机,推迟到在基于客户端握手数据,确定版本信息的情况下,加载目标代理引擎。由此在不影响ssl握手操作的时序的情况下,避免对目标代理引擎的执行逻辑做任何改动。
71.根据本公开的实施例,针对如图2所示的操作s220,基于客户端握手数据,确定加密通信协议的版本信息,包括:对客户端握手数据进行解码,得到第一解码数据。从第一解码数据中确定预定字段的字段内容。基于字段内容,确定版本信息。
72.根据本公开的实施例,客户端可以以数据包的形式向服务端发送客户端握手数据。
73.根据本公开的实施例,在对客户端握手数据进行解码的过程中,可以将客户端握手数据全部解码为第一解码数据。或者,还可以对客户端握手数据进行部分解码,得到第一解码数据。例如,可以通过数据处理类中的解码方法,例如decode方法,对客户端握手数据进行解码,得到第一解码数据。该解码操作可以为部分解码,对客户端握手数据的预定字段进行解码,用于基于预定字段的字段内容,确定版本信息。
74.根据本公开的实施例,多个加密通信协议具有相同或相似的编写标准,由此,根据相同或相似的编写标准,能够在预定字段或预定位置编写与加密通信协议相关的版本信息。
75.根据本公开的实施例,在解码得到第一解码数据的情况下,根据加密通信协议的
通用编写标准,可以从第一解码数据中的预定字段中读取字段内容,并基于字段内容,确定版本信息。利用基于预定字段的字段内容,确定版本信息的方式,操作简单且解码程序的代码改写少,易于实现。
76.根据本公开的实施例,字段内容包括第一字段内容和第二字段内容。基于字段内容,确定版本信息,包括:基于第一字段内容,确定数据类型识别结果。在确定数据类型识别结果用于表征客户端握手数据为握手数据类型的情况下,基于第二字段内容,确定版本信息。
77.根据本公开的实施例,在确定数据类型识别结果表征客户端握手数据不是握手数据类型的情况下,无需确定版本信息,可以按照服务端的预定执行逻辑执行后续操作。例如,报错。
78.根据本公开的实施例,由于先基于第一字段内容确定数据类型识别结果,在确定数据类型识别结果用于表征客户端握手数据为握手数据类型的情况下,再基于第二字段内容确定版本信息,因此,通过上述两层匹配操作能够提高识别准确度和匹配效率。
79.作为一个具体实施例,客户端握手数据包括多个字节,对客户端握手数据进行解码,得到第一解码数据可以包括:对客户端握手数据中前6个字节进行解码,得到第一解码数据。
80.根据本公开的实施例,第一字段内容可以包括客户端握手数据中第1个字节和第6个字节各自的字段内容,第二字段内容可以包括客户端握手数据中第2个字节和第3个字节各自的字段内容。
81.根据本公开的实施例,第1个字节的字段内容用于表征包类型(content type),第2个字节的字段内容和第3个字节的字段内容用于表征版本信息,第4个字节和第5个字节的字段内容用于表征后续数据片段的长度,第6个字节的字段内容用于表征握手数据类型。
82.例如,对于客户端握手数据,例如client hello数据包,解析得到的第1个字节的字段内容为0x16,表示握手消息,解析得到的第6个字节的字段内容为0x01,表征客户端client hello数据类型,由此,根据第1个字节和第6个字节的字段内容,可以确定数据类型识别结果表征客户端握手数据为握手数据类型。
83.根据本公开的实施例,针对国密ssl协议,客户端握手数据的格式如下:16 01 01 01 3e 01...,“16”、“01”、“01”、“01”、“3e”、“01”分别表示前6个字节。解码得到的字段内容可以在“16”、“01”、“01”、“01”、“3e”、“01”之前加上“0x”,也可以不加。
84.根据本公开的实施例,在确定数据类型识别结果用于表征客户端握手数据为握手数据类型的情况下,基于第二字段内容,确定版本信息包括:基于第2个字节和第3个字节的字段内容,从版本列表中确定与第二字段内容相匹配的版本信息。
85.根据本公开的实施例,版本列表可以是预先存储在服务端的列表。版本列表中包括第2个字节和第3个字节各自的字段内容与多个加密通信协议以及版本信息的映射关系。
86.作为一个具体实施例,加密通信协议可以包括标准ssl协议和国密ssl协议。加密通信信息的版本信息包括标准ssl协议或国密ssl协议,以及标准ssl协议或国密ssl协议的版本标识、版本名称等。
87.例如,版本列表的具体信息可以参见如下表1。
88.第2字节的字段内容第3字节的字段内容加密通信协议(版本)
0x010x01国密v1.1(gmssl 1.1)0x030x01标准tls 1.0(tls 1.0)0x030x02标准tls 1.1(tls 1.1)0x030x03标准tls 1.2(tls 1.2)0x030x04标准tls 1.3(tls 1.3)
89.表1
90.根据本公开的实施例,由于以客户端握手数据的前6个字节作为判断依据,无需改动或者读取非客户端握手数据及后续加密数据传输过程的数据,在保证准确地判别加密通信协议的版本信息的同时,还能保证握手过程及后续数据加密传输的性能。
91.根据本公开的实施例,在加密通信协议包括不同类型的两个版本的情况下,可以执行如下图4所示的生成服务端握手数据的方法。
92.图4示意性示出了根据本公开实施例的生成服务端握手数据的流程图。
93.如图4所示,该方法包括操作s410~s450、s461~s471以及s462~s472。
94.在操作s410,创建服务端与客户端之间的通信线路。
95.在操作s420,服务端将代理引擎配置为虚拟代理引擎。
96.在操作s430,经由通信线路服务端接收来自客户端的客户端握手数据。
97.在操作s440,基于客户端握手数据,确定加密通信协议的版本信息。
98.在操作s450,确定版本信息是否为第一预定版本信息。在版本信息为第一预定版本信息的情况下,执行操作s461和s462。在版本信息不为第一预定版本信息的情况下,执行操作s471和s472。
99.在操作s461,将虚拟代理引擎更新为与第一版本信息相匹配的目标代理引擎。
100.在操作s462,利用与第一版本信息相匹配的目标代理引擎,生成服务端握手数据。
101.在操作s471,将虚拟代理引擎更新为与第二版本信息相匹配的目标代理引擎。
102.在操作s472,利用与第一版本信息相匹配的目标代理引擎,生成服务端握手数据。
103.根据本公开的实施例,第一版本信息可以指标准ssl协议的版本信息。第二版本信息可以指国密ssl协议的版本信息。通过上述操作,能够与实际场景相结合,在利用开源的加密通信程序的情况下,在服务端只需部署一个程序,监控一个端口,在改动较少的代码或者执行逻辑的情况下,即可实现与不同类型的加密通信协议进行适配。
104.根据本公开的实施例,在执行如图2所示的操作s210后,通信方法还可以包括操作:响应于已配置虚拟代理引擎,生成引擎标识。
105.根据本公开的实施例,引擎标识用于表征代理引擎是否为虚拟的。响应于已创建与客户端的通信线路,将代理引擎配置为虚拟代理引擎。响应于已配置虚拟代理引擎,生成用于表征代理引擎为虚拟的引擎标识。例如,表征代理引擎为虚拟的引擎标识可以为“null”。
106.根据本公开的实施例,通过生成引擎标识,可以确定当前的代理引擎是否为虚拟的代理引擎,由此,可以避免重复更新代理引擎导致配置错误。
107.根据本公开的实施例,在执行如图2所示的操作s230后,通信方法还可以包括操作:响应于已将虚拟代理引擎更新为目标代理引擎,更新引擎标识。
108.根据本公开的实施例,响应于已创建与客户端的通信线路,将代理引擎配置为虚
拟代理引擎,此时,生成的引擎标识表征代理引擎为虚拟的代理引擎,服务端的高性能网络通信框架无法调用实际的代理引擎进行数据加密操作。由此,响应于已将虚拟代理引擎更新为目标代理引擎,可以将表征虚拟的引擎标识更新为表征非虚拟的引擎标识。
109.例如,响应于已创建与客户端的通信线路,生成的引擎标识为“null”。响应于已将虚拟代理引擎更新为目标代理引擎,可以将引擎标识由“null”更新为“1”,其中,“1”表示非虚拟的代理引擎,例如可以表征目标代理引擎。表征代理引擎为非虚拟的引擎标识不局限于“1”,还可以为0、1、2等多个值,只要与表征代理引擎为虚拟的引擎表示不同即可。
110.根据本公开的实施例,通过响应于已将虚拟代理引擎更新为目标代理引擎,实时更新引擎标识,能够基于引擎标识及时确定当前的代理引擎是否更新,提高操作准确性。
111.根据本公开的实施例,在执行如图2所示的操作s250后,通信方法还可以包括操作:响应于接收到客户端握手数据,确定引擎标识。在确定引擎标识用于表征代理引擎为目标代理引擎的情况下,基于客户端握手数据,利用目标代理引擎,生成服务端握手数据。
112.根据本公开的实施例,在操作s210~操作s250之后,客户端还可以继续向服务端发送客户端握手数据,以便完成后续握手操作。由于在操作s210~操作s250已经完成了代理引擎配置为虚拟代理引擎,以及虚拟代理引擎更新为目标代理引擎的操作,因此,引擎标识表征代理引擎为目标代理引擎。在引擎标识用于表征代理引擎为目标代理引擎的情况下,基于客户端握手数据,可以直接利用目标代理引擎生成服务端握手数据,无需重复更新目标代理引擎。
113.根据本公开的实施例,在确定引擎标识用于表征代理引擎不是目标代理引擎的情况下,表明握手失败或本次握手为首次连接,可以执行操作s220和操作s230,以便基于客户端握手数据,确定加密通信协议的版本信息,并更新引擎标识,以便将虚拟代理引擎更新为与版本信息相匹配的目标代理引擎。
114.根据本公开的实施例,可通过引擎标识确定已加载目标代理引擎,避免重复更新,提高处理效率。
115.图5示意性示出了根据本公开另一实施例的生成服务端握手数据的流程图。
116.如图5所示,该方法包括操作s5 1 0~s560。
117.在操作s510,经由通信线路接收来自客户端的客户端握手数据。
118.在操作s520,确定引擎标识是否表征代理引擎为虚拟的。在确定引擎标识表征代理引擎为虚拟的情况下,执行操作s530~s560。在确定引擎标识表征代理引擎为非虚拟的情况下,执行操作s560。
119.在操作s530,基于客户端握手数据,确定加密通信协议的版本信息。
120.在操作s540,将虚拟代理引擎更新为与版本信息相匹配的目标代理引擎。
121.在操作s550,更新引擎标识。
122.在操作s560,利用目标代理引擎,生成服务端握手数据。
123.根据本公开的实施例,在服务端与客户端之间建立加密通信协议的连接,例如ssl连接。需要多次接收来自客户端的客户端握手数据。可以在第一次接收来自客户端发送的客户端握手数据之前,创建通信线路之后,将代理引擎配置为虚拟代理引擎。在服务端第二次接收来自客户端发送的客户端握手数据的情况下,直接利用目标代理引擎,基于服务端第二次接收到的客户端握手数据,生成服务端握手数据。
124.根据本公开的实施例,针对如图2所示的操作s240,基于客户端握手数据,利用目标代理引擎,生成服务端握手数据,可以包括:利用目标代理引擎,对客户端握手数据进行解码,得到第二解码数据。从第二解码数据中确定客户端加密协议数据。利用目标代理引擎,获取与客户端加密协议数据相匹配的服务端加密协议数据。基于服务端加密协议数据,生成服务端握手数据。
125.根据本公开的实施例,在将虚拟代理引擎更新为目标代理引擎的情况下,可以利用目标代理引擎进行后续的证书验证等操作。由此,可以利用目标代理引擎对客户端握手数据进行解码,得到第二解码数据。第二解码数据可以包括第一解码数据和客户端加密协议数据。第一解码数据用于确定加密通信协议的版本信息,客户端加密协议数据用于进行后续的握手操作。
126.根据本公开的实施例,客户端加密协议数据可以包括客户端支持的密码套件列表、随机数等。可以基于预定加密字段内容,从第二解码数据中确定客户端加密协议数据。在从第二解码数据中确定客户端加密协议数据的情况下,目标代理引擎可以从第三方提供的硬件加密设备或软件加密库中获取与客户端加密协议数据相匹配的服务端加密协议数据。服务端利用目标代理引擎基于服务端加密协议数据,生成服务端握手数据。可以通过多次接收来自客户端的客户端握手数据和多次向客户端发送服务端握手数据,完成服务端与客户端之间的加密通信连接,例如ssl握手连接。
127.根据本公开的其他实施例,通信方法还可以包括操作:加载与版本信息相匹配的协议证书。协议证书可以是一种数字证书,配置在服务端。可以通过协议证书进行数据加密和身份认证。
128.根据本公开的实施例,在确定已加载与版本信息相匹配的协议证书的情况下,利用目标代理引擎,基于服务端加密协议数据和数字版的协议证书,生成服务端握手数据。由此确定客户端与服务端之间建立了加密通信连接。
129.根据本公开的实施例,利用本公开实施例提供的通信方法,能够自适应地与加载有不同加密通信协议的多个客户端建立加密通信连接,扩大应用范围,提高适用性。
130.根据本公开的实施例,在客户端与服务端之间建立了加密通信连接例如ssl握手连接的情况下,通信方法还可以包括操作:响应于接收到客户端通信数据,利用目标代理引擎,基于客户端通信数据,生成服务端通信数据。将服务端通信数据发送至客户端。
131.根据本公开的实施例,客户端通信数据可以指已进行加密的通信报文。客户端通信数据可以是利用与通信加密协议的版本信息相匹配的加密算法加密后的数据。可以利用目标代理引擎,对客户端通信数据进行解码,得到通信解码数据。基于通信解码数据,生成用于反馈客户端的未加密数据。目标代理引擎获取与版本协议相匹配的加密算法,对用于反馈客户端的未加密数据进行加密,生成服务端通信数据。服务端将服务端通信数据发送至客户端。完成加密数据的通信。
132.根据本公开的实施例,利用目标代理引擎处理来自客户端的经过加密的客户端通信数据,并发送客户端经过加密的服务端通信数据,实现在服务端与客户端之间进行加密的数据传输,提高数据传输的安全性。
133.图7示意性示出了根据本公开实施例的通信装置的框图。
134.如图7所示,通信装置700包括:配置模块710、版本信息确定模块720、引擎更新模
块730、第一生成模块740以及第一发送模块750。
135.配置模块710,用于响应于已创建与客户端的通信线路,将代理引擎配置为虚拟代理引擎。
136.版本信息确定模块720,用于响应于经由通信线路接收到来自客户端的客户端握手数据,基于客户端握手数据,确定加密通信协议的版本信息。客户端握手数据为用于加密通信的数据。
137.引擎更新模块730,用于将虚拟代理引擎更新为与版本信息相匹配的目标代理引擎。
138.第一生成模块740,用于基于客户端握手数据,利用目标代理引擎,生成服务端握手数据。
139.第一发送模块750,用于将服务端握手数据发送至客户端。
140.根据本公开的实施例,版本信息确定模块包括:第一解码子模块、字段确定子模块以及版本确定子模块。
141.第一解码子模块,用于对客户端握手数据进行解码,得到第一解码数据。
142.字段确定子模块,用于从第一解码数据中确定预定字段的字段内容。
143.版本确定子模块,用于基于字段内容,确定版本信息。
144.根据本公开的实施例,字段内容包括第一字段内容和第二字段内容。
145.根据本公开的实施例,版本确定子模块包括:识别单元以及版本确定单元。
146.识别单元,用于基于第一字段内容,确定数据类型识别结果。
147.版本确定单元,用于在确定数据类型识别结果用于表征客户端握手数据为握手数据类型的情况下,基于第二字段内容,确定版本信息。
148.根据本公开的实施例,通信装置还包括:第二生成模块。
149.第二生成模块,用于响应于已配置虚拟代理引擎,生成引擎标识。引擎标识用于表征代理引擎是否为虚拟的。
150.根据本公开的实施例,通信装置还包括:标识更新模块。
151.标识更新模块,用于响应于已将虚拟代理引擎更新为目标代理引擎,更新引擎标识。
152.根据本公开的实施例,通信装置还包括:引擎标识确定模块以及第三生成模块。
153.引擎标识确定模块,用于响应于接收到客户端握手数据,确定引擎标识。
154.第三生成模块,用于在确定引擎标识用于表征代理引擎为目标代理引擎的情况下,基于客户端握手数据,利用目标代理引擎,生成服务端握手数据。
155.根据本公开的实施例,第一生成模块包括:第二解码子模块、客户端加密协议确定子模块、服务端加密协议确定子模块以及生成子模块。
156.第二解码子模块,用于利用目标代理引擎,对客户端握手数据进行解码,得到第二解码数据。
157.客户端加密协议确定子模块,用于从第二解码数据中确定客户端加密协议数据。
158.服务端加密协议确定子模块,用于利用目标代理引擎,获取与客户端加密协议数据相匹配的服务端加密协议数据。
159.生成子模块,用于基于服务端加密协议数据,生成服务端握手数据。
160.根据本公开的实施例,通信装置还包括:加载模块。
161.加载模块,用于加载与版本信息相匹配的协议证书。
162.根据本公开的实施例,通信装置还包括:第四生成模块以及第二发送模块。
163.第四生成模块,用于响应于接收到客户端通信数据,利用目标代理引擎,基于客户端通信数据,生成服务端通信数据。
164.第二发送模块,用于将服务端通信数据发送至客户端。
165.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
166.根据本公开的实施例,一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如本公开实施例的方法。
167.根据本公开的实施例,一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行如本公开实施例的方法。
168.根据本公开的实施例,一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现如本公开实施例的方法。
169.图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
170.如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(rom)702中的计算机程序或者从存储单元708加载到随机访问存储器(ram)703中的计算机程序,来执行各种适当的动作和处理。在ram 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、rom 702以及ram 703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。
171.设备700中的多个部件连接至i/o接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
172.计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如通信方法。例如,在一些实施例中,通信方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由rom 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到ram 703并由计算单元701执行时,可以执行上文描述的通信方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被
配置为执行通信方法。
173.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
174.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
175.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
176.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
177.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
178.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以是分布式系统的服务器,或者是结合了区块链的服务器。
179.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
180.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

技术特征:
1.一种通信方法,包括:响应于已创建与客户端的通信线路,将代理引擎配置为虚拟代理引擎;响应于经由所述通信线路接收到来自所述客户端的客户端握手数据,基于所述客户端握手数据,确定加密通信协议的版本信息,其中,所述客户端握手数据为用于加密通信的数据;将所述虚拟代理引擎更新为与所述版本信息相匹配的目标代理引擎;基于所述客户端握手数据,利用所述目标代理引擎,生成服务端握手数据;以及将所述服务端握手数据发送至所述客户端。2.根据权利要求1所述的方法,其中,所述基于所述客户端握手数据,确定加密通信协议的版本信息,包括:对所述客户端握手数据进行解码,得到第一解码数据;从所述第一解码数据中确定预定字段的字段内容;以及基于所述字段内容,确定所述版本信息。3.根据权利要求2所述的方法,其中,所述字段内容包括第一字段内容和第二字段内容,所述基于所述字段内容,确定所述版本信息,包括:基于所述第一字段内容,确定所述数据类型识别结果;以及在确定所述数据类型识别结果用于表征所述客户端握手数据为握手数据类型的情况下,基于所述第二字段内容,确定所述版本信息。4.根据权利要求1至3中任一项所述的方法,还包括:响应于已配置所述虚拟代理引擎,生成引擎标识,其中,所述引擎标识用于表征代理引擎是否为虚拟的。5.根据权利要求4所述的方法,还包括:响应于已将所述虚拟代理引擎更新为所述目标代理引擎,更新所述引擎标识。6.根据权利要求4或5所述的方法,还包括:响应于接收到所述客户端握手数据,确定所述引擎标识;以及在确定所述引擎标识用于表征所述代理引擎为所述目标代理引擎的情况下,基于所述客户端握手数据,利用所述目标代理引擎,生成所述服务端握手数据。7.根据权利要求1至6中任一项所述的方法,其中,所述基于所述客户端握手数据,利用所述目标代理引擎,生成服务端握手数据,包括:利用所述目标代理引擎,对所述客户端握手数据进行解码,得到第二解码数据;从所述第二解码数据中确定客户端加密协议数据;利用所述目标代理引擎,获取与所述客户端加密协议数据相匹配的服务端加密协议数据;以及基于所述服务端加密协议数据,生成所述服务端握手数据。8.根据权利要求1至7中任一项所述的方法,还包括:响应于接收到客户端通信数据,利用所述目标代理引擎,基于所述客户端通信数据,生成服务端通信数据;以及将所述服务端通信数据发送至所述客户端。
9.一种通信装置,包括:配置模块,用于响应于已创建与客户端的通信线路,将代理引擎配置为虚拟代理引擎;版本信息确定模块,用于响应于经由所述通信线路接收到来自所述客户端的客户端握手数据,基于所述客户端握手数据,确定加密通信协议的版本信息,其中,所述客户端握手数据为用于加密通信的数据;引擎更新模块,用于将所述虚拟代理引擎更新为与所述版本信息相匹配的目标代理引擎;第一生成模块,用于基于所述客户端握手数据,利用所述目标代理引擎,生成服务端握手数据;以及第一发送模块,用于将所述服务端握手数据发送至所述客户端。10.根据权利要求9所述的装置,其中,所述版本信息确定模块包括:第一解码子模块,用于对所述客户端握手数据进行解码,得到第一解码数据;字段确定子模块,用于从所述第一解码数据中确定预定字段的字段内容;以及版本确定子模块,用于基于所述字段内容,确定所述版本信息。11.根据权利要求10所述的装置,其中,所述字段内容包括第一字段内容和第二字段内容,所述版本确定子模块包括:识别单元,用于基于所述第一字段内容,确定所述数据类型识别结果;以及版本确定单元,用于在确定所述数据类型识别结果用于表征所述客户端握手数据为握手数据类型的情况下,基于所述第二字段内容,确定所述版本信息。12.根据权利要求9至11中任一项所述的装置,还包括:第二生成模块,用于响应于已配置所述虚拟代理引擎,生成引擎标识,其中,所述引擎标识用于表征代理引擎是否为虚拟的。13.根据权利要求12所述的装置,还包括:标识更新模块,用于响应于已将所述虚拟代理引擎更新为所述目标代理引擎,更新所述引擎标识。14.根据权利要求12或13所述的装置,还包括:引擎标识确定模块,用于响应于接收到所述客户端握手数据,确定所述引擎标识;以及第三生成模块,用于在确定所述引擎标识用于表征所述代理引擎为所述目标代理引擎的情况下,基于所述客户端握手数据,利用所述目标代理引擎,生成所述服务端握手数据。15.根据权利要求9至14中任一项所述的装置,其中,所述第一生成模块包括:第二解码子模块,用于利用所述目标代理引擎,对所述客户端握手数据进行解码,得到第二解码数据;客户端加密协议确定子模块,用于从所述第二解码数据中确定客户端加密协议数据;服务端加密协议确定子模块,用于利用所述目标代理引擎,获取与所述客户端加密协议数据相匹配的服务端加密协议数据;以及生成子模块,用于基于所述服务端加密协议数据,生成所述服务端握手数据。16.根据权利要求9至15中任一项所述的装置,还包括:第四生成模块,用于响应于接收到客户端通信数据,利用所述目标代理引擎,基于所述
客户端通信数据,生成服务端通信数据;以及第二发送模块,用于将所述服务端通信数据发送至所述客户端。17.一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至8中任一项所述的方法。18.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1至8中任一项所述的方法。19.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1至8中任一项所述的方法。

技术总结
本公开提供了一种通信方法、通信装置、电子设备及计算机存储介质,涉及通信技术领域,尤其涉及数据加密技术领域。具体实现方案为:响应于已创建与客户端的通信线路,将代理引擎配置为虚拟代理引擎;响应于经由通信线路接收到来自客户端的客户端握手数据,基于客户端握手数据,确定加密通信协议的版本信息,客户端握手数据为用于加密通信的数据;将虚拟代理引擎更新为与版本信息相匹配的目标代理引擎;基于客户端握手数据,利用目标代理引擎,生成服务端握手数据;以及将服务端握手数据发送至客户端。户端。户端。


技术研发人员:李先懿 戴宣
受保护的技术使用者:北京百度网讯科技有限公司
技术研发日:2023.06.28
技术公布日:2023/10/6
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐