1.本发明实施例涉及物联网技术领域,尤其涉及一种通信连接方法、装置及系统。
背景技术:
2.随着社会的发展,物联网场景下(如智能家居、智能城市、远程医疗等)连接设备的数量在2020年已超过500亿。消息队列遥测传输协议(message queuing telemetry transport,简称mqtt)是目前最流行的物联网数据交互协议。
3.目前,标准mqtt是工作在传输控制协议/网际协议(transmission control protocol/internet protocol,简称tcp/ip)族上的(以下简称mqtt/tcp),通过tcp为mqtt提供可靠的端到端的连接。基于mqtt/tcp实现数据传输的过程中,首先需要建立客户端与服务器的连接,由于tcp的连接特性,客户端与服务器需要进行三次连接,若在通信过程中需要进行密文传输,还需更多的连接步骤进行客户端与服务器的加密确认,从而使得基于mqtt/tcp通过密文的方式进行数据传输。
4.在基于mqtt/tcp实现数据传输时,三次握手导致建立连接耗时较长,影响用户体验。
技术实现要素:
5.本发明实施例提供了一种通信连接方法、装置及系统,可以优化现有的基于消息队列遥测传输协议时进行通信连接的实现方案。
6.第一方面,本发明实施例提供了一种通信连接方法,包括:
7.接收客户端基于用户数据报协议udp发送的初始连接请求,所述初始连接请求中包括所述客户端的标识信息;
8.基于所述标识信息向所述客户端发送拒绝消息,所述拒绝消息中携带有服务器的配置信息,所述配置信息中包括长期密钥信息;
9.接收所述客户端发送的加密连接请求,所述加密连接请求是所述客户端通过加密信息对所述初始连接请求加密后获得的,所述加密信息是所述客户端解析所述长期密钥信息得到的;
10.针对所述加密连接请求向所述客户端反馈加密回复消息,以与所述客户端建立基于所述用户数据报协议的通信连接。
11.第二方面,本发明实施例提供了一种通信连接装置,包括:
12.连接请求接收模块,用于接收客户端基于用户数据报协议udp发送的初始连接请求,所述初始连接请求中包括所述客户端的标识信息;
13.拒绝消息发送模块,用于基于所述标识信息向所述客户端发送拒绝消息,所述拒绝消息中携带有服务器的配置信息,所述配置信息中包括长期密钥信息;
14.加密连接请求接收模块,用于接收所述客户端发送的加密连接请求,所述加密连接请求是所述客户端通过加密信息对所述初始连接请求加密后获得的,所述加密信息是所
述客户端解析所述长期密钥信息得到的;
15.加密回复消息反馈模块,用于针对所述加密连接请求向所述客户端反馈加密回复消息,以与所述客户端建立基于所述用户数据报协议的通信连接。
16.第三方面,本发明实施例提供了一种通信连接系统,所述系统包括客户端以及用于执行如本发明实施例提供的通信连接方法的服务器。
17.第四方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的通信连接方法。
18.第五方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的通信连接方法。
19.本发明实施例中提供的通信连接方案,首先服务器接收客户端基于用户数据报协议udp发送的初始连接请求,初始连接请求中包括客户端的标识信息;然后再基于标识信息向客户端发送拒绝消息,在拒绝消息中携带有服务器的配置信息,其中配置信息中包括长期密钥信息;再接收客户端发送的加密连接请求,加密连接请求是客户端通过加密信息对初始连接请求加密后获得的,加密信息是客户端解析长期密钥信息得到的;最后服务器针对加密连接请求向客户端反馈加密回复消息,以与客户端建立基于用户数据报协议的通信连接。通过采用上述方案,服务器与客户端交互两次即可建立通信连接,减少了与客户端建立连接的交互次数,进而减少连接时间,能够进行快速连接,从而提升用户体验;且在与客户端建立连接的过程中通过长期密钥信息能够直接使客户端与服务器基于密文进行数据传输,提升了数据安全性,相比于现有技术,无需多余的进行加密确认的请求过程,可以达到高效传输数据以及减少资源占用的技术效果。
附图说明
20.图1a为本发明实施例一提供的一种通信连接方法的流程示意图;
21.图1b为本发明实施例一提供的一种通信连接方法的系统架构图;
22.图2a为本发明实施例二提供的一种通信连接方法的流程示意图;
23.图2b为现有方案提供的一种建立通信连接的时序图;
24.图2c为本发明实施例二提供的一种建立通信连接的时序图;
25.图3为本发明实施例三提供的一种通信连接装置的结构框图;
26.图4为本发明实施例四提供的一种通信连接系统的信令交互示意图;
27.图5为本发明实施例五提供的一种计算机设备的结构框图。
具体实施方式
28.下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
29.在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作
完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
30.实施例一
31.图1a为本发明实施例一提供的一种通信连接方法的流程示意图,该方法可以由通信连接装置执行,其中该装置可由软件和/或硬件实现,一般可集成在服务器等计算机设备中。如图1a所示,该方法包括:
32.s110、接收客户端基于用户数据报协议udp发送的初始连接请求,初始连接请求中包括客户端的标识信息。
33.用户数据报协议(user datagram protocol,简称udp)是osi(open system interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,本发明实施例提供的一种通信连接方法是基于udp协议实现服务器与客户端的通信连接。
34.在基于udp协议实现服务器与客户端的通信连接之后,再基于消息队列遥测传输协议mqtt进行数据传输,mqtt协议是一种基于发布/订阅范式的消息协议。请参照图1b,图1b为本发明实施例一提供的一种通信连接方法的系统架构图。
35.在图1b中,提供了一个带连接的用户数据报协议库(libconnudp),当前libconnudp分别设置在mqtt发布者客户端、mqtt订阅者客户端和mqtt代理服务器,mqtt代理通过libconnudp的服务器端操作来侦听服务器的端口,而mqtt的发布者和mqtt的订阅者通过libconnudp的客户端来发起并建立连接。libconnudp库和mqtt库一样,都工作在应用层,传输层通过udp进行通讯,可将基于udp的mqtt进行数据传输的方式为mqtt/udp。
36.需要说明的是,图1b的系统架构图中分别提供了一个mqtt发布者客户端和一个mqtt订阅者客户端,但本发明实施例并不以图示为限制,系统架构可以为包含有至少一个mqtt发布者客户端和/或至少一个mqtt订阅者客户端,具体mqtt发布者客户端和mqtt订阅者客户端的个数以实际需求为准,在此不作限制。以下实施例进行说明时的客户端可以为mqtt发布者客户端,也可以为mqtt订阅者客户端,在此不进行特指。
37.在与客户端建立通信连接时,首先接收客户端基于udp发送的初始连接请求,示例性的,初始连接请求可以为向服务器发送hello消息。在初始连接请求中携带有客户端的标识信息,当前标识信息可以为:客户端的身份标识(id)信息、网际协议地址(internet protocol address,简称ip)地址信息或者域名信息等,具体标识信息在此不作限制,为当前客户端的唯一标识即可,能够使得服务器明确当前初始连接请求为哪一个客户端发送的。
38.s120、基于标识信息向客户端发送拒绝消息,拒绝消息中携带有服务器的配置信息,配置信息中包括长期密钥信息。
39.由于在服务器中没有保存客户端的相关配置信息,因此,服务器不能同意客户端发送的初始连接请求,基于标识信息向客户端发送拒绝消息。同时,在拒绝消息中携带有服务器的配置信息,以使得客户端能够根据服务器的配置信息重新向服务器申请连接。
40.可选地,上述配置信息中除包括长期密钥信息外,还可以包括服务器id信息、服务器的端口号、密钥协议和初始数据交换等。
41.服务器在配置信息中包含有长期密钥信息的目的为:客户端在接收到长期密钥信息后,可根据长期密钥信息中包含的密钥参数信息计算获得客户端的公钥信,并通过客户
端的公钥和客户端的私钥计算出密钥,使用密钥对接下来要传输的数据进行加密,以使得后续客户端和服务器的数据传输均是通过密文的方式传输,保证数据安全。其中,密钥参数信息可以为使用加密算法计算相关公钥所需的参数。
42.需要说明的是,在客户端接收到长期密钥信息后,会将长期密钥信息进行保存,其中,长期密钥信息的生命周期可以为一天、三天、五天或一周等,具体生命周期时长在此不作限制。这样做的好处在于,在后续客户端与服务器断开连接后进行再次连接时,若当前长期密钥信息的生命周期有效,客户端可继续对长期密钥信息进行解析,使得客户端与服务器直接基于密文的方式进行数据传输,而无需重新生成并发送长期密钥信息的步骤,节省再次连接的时长。
43.上述密钥协议指的是服务器支持的密钥交换算法列表。服务器会告知客户端自己支持的所有算法,客户端在支持列表里挑选自己支持的算法。通常使用的是diffie-hellman算法。
44.上述初始数据交换可以包括:对服务器进行身份认证的证书链(certificate chain)、服务器的配置签名、ip地址和服务器的时间戳等信息。
45.需要说明的是,客户端可通过证书链验证服务器的合法性,若为合法服务器,则进行接下来的连接步骤,若为不合法服务器,则停止连接。
46.s130、接收客户端发送的加密连接请求。
47.在服务器接收客户端发送的加密连接请求之前,客户端会根据服务器的配置信息再次申请与服务器的连接,在进行此次连接时,会将服务器的配置信息写入,以明确连接的为哪一个服务器,且根据写入的服务器的配置信息也保证了在后续连接过程中,能够与服务器连接成功。同时客户端会根据配置信息中的长期密钥信息解析出加密信息,以使用加密信息对初始连接请求进行加密后获得加密连接请求,并向服务器发送当前加密连接请求。
48.需要进行说明的是,在当前步骤向服务器发送加密连接请求时,由于客户端已经解析出加密信息,则可同时对接下来要传输的数据进行加密传输,形成密文数据,使得服务器在接收到客户端发送的加密连接请求时,也同时接收到了密文数据。
49.本发明实施例提供的通信连接的方案,可同时进行客户端与服务器的再次连接和数据加密传输,可以将当前步骤称为加密握手。相比于现有技术,无需进行单独的基于安全传输层协议进行握手的过程,可以减少客户端与服务器的交互步骤,节约建立连接的时间。
50.s140、针对加密连接请求向客户端反馈加密回复消息,以与客户端建立基于用户数据报协议的通信连接。
51.服务器针对加密连接请求向客户端反馈加密回复消息时可以为:在服务器接收到加密连接请求时,可直接向客户端进行加密回复,此时回复的内容可以为同意此次连接,或者为同意后续过程以密文的方式进行数据传输。也可以为:客户端发送的加密连接请求中包含有未被加密的客户端的公钥信息和加密数据,服务器通过使用未被加密的客户端的公钥信息,对当前加密连接请求中的加密数据进行解密,以获得加密数据,在解析到加密数据后,可针对当前加密数据进行加密回复,加密回复的内容可以为针对解析到的加密数据进行针对性的回复。
52.具体服务器向客户端进行加密回复的方式在此不作限制,通过以上步骤,在向客
户端反馈加密回复消息之后,服务器与客户端建立了基于用户数据报协议的通信连接。
53.本发明实施例中提供通信连接方法,首先服务器接收客户端基于用户数据报协议udp发送的初始连接请求,初始连接请求中包括客户端的标识信息;然后再基于标识信息向客户端发送拒绝消息,在拒绝消息中携带有服务器的配置信息,其中配置信息中包括长期密钥信息;再接收客户端发送的加密连接请求,加密连接请求是客户端通过加密信息对初始连接请求加密后获得的,加密信息是客户端解析长期密钥信息得到的;最后服务器针对加密连接请求向客户端反馈加密回复消息,以与客户端建立基于用户数据报协议的通信连接。通过采用上述方案,服务器与客户端交互两次即可建立通信连接,减少了与客户端建立连接的交互次数,进而减少连接时间,能够进行快速连接,从而提升用户体验;且在与客户端建立连接的过程中通过长期密钥信息能够直接使客户端与服务器基于密文进行数据传输,提升了数据安全性,相比于现有技术,无需多余的进行加密确认的请求过程,可以达到高效传输数据以及减少资源占用的技术效果。
54.实施例二
55.本发明实施例在上述实施例的基础上进行了进一步优化,优化了在针对所述加密连接请求向所述客户端反馈加密回复消息之前,还包括:接收所述客户端发送的所述第二公钥信息;使用所述第二公钥信息对所述加密连接请求进行解密处理,以获得所述加密连接请求中携带的加密数据;基于所述加密数据向所述客户端反馈所述加密回复消息。这样设置的好处在于在数据传输过程中通过发布的公钥信息对加密连接请求进行解密处理,使得在传输过程中是基于密文的方式进行传输的,保证了数据传输的安全性。
56.所述步骤还包括:在与所述客户端建立的基于所述用户数据报协议的通信连接断开后,再次接收所述客户端发送的加密连接请求,再次发送的加密连接请求是所述客户端在所述长期密钥信息有效时向所述服务器发送的;针对所述加密连接请求再次向所述客户端反馈所述加密回复消息,以再次与所述客户端建立基于所述用户数据报协议的通信连接。这样设置的好处在于当客户端与服务器断开连接后,若长期密钥信息还在有效期内,则可基于长期密钥信息直接进行加密数据传输,无需进行重新生成长期密钥信息的过程,节省交互步骤,节约连接时长。
57.如图2a所示,图2a为本发明实施例二提供的一种通信连接方法的流程示意图,具体的,该方法包括如下步骤:
58.s210、接收客户端基于用户数据报协议udp发送的初始连接请求,初始连接请求中包括客户端的标识信息。
59.s220、基于标识信息向客户端发送拒绝消息,拒绝消息中携带有服务器的配置信息,配置信息中包括长期密钥信息。
60.s230、接收客户端发送的加密连接请求。
61.加密连接请求是客户端通过加密信息对初始连接请求加密后获得的,加密信息是客户端解析长期密钥信息得到的。
62.长期密钥信息包括:密钥参数信息和第一公钥信息,第一公钥信息是服务器根据第一私钥信息和密钥参数信息计算获得的。
63.其中,密钥参数信息可以为服务器根据diffie-hellman(简称dh)加密算法生成的一个质数p和一个整数g(p和g称为随机数random),且服务器会随机生成一个第一私钥信息
ks_pri,根据质数p和整数g可以计算出服务器的第一公钥信息ks_pub,第一私钥信息ks_pri和第一公钥信息ks_pub组成一个密钥对,第一私钥信息ks_pri为服务器秘密拥有的信息,不能被其余用户获知,第一公钥信息ks_pub可以被发布,能够被其余用户获知,后续可通过公钥信息对私钥信息进行解密,从而获得在数据传输中被加密的具体内容。
64.加密信息包括:密文信息和第二公钥信息,第二公钥信息是客户端根据第二私钥信息和密钥参数信息计算获得的,密文信息是客户端根据第一公钥信息和第二公钥信息计算获得的。
65.其中,密文信息可以理解为在进行数据传输时进行加密的密钥。
66.第二公钥信息的获得过程为,客户端随机生成一个数作为第二私钥信息kc_pri,并根据服务器发过来配置信息中的p和g计算出第二公钥信息kc_pub,再由第二公钥信息kc_pub和服务器发过来的第一公钥信息ks_pub计算出一个密文信息k,客户端将第二公钥信息kc_pub发给服务器,服务器根据第二公钥信息kc_pub、第一私钥信息ks_pri、质数p和整数g等计算出密文信息k。密文信息k不会直接出现在传送数据中,而是由服务器和客户端分别计算出来的,且在数据传输的过程中,使用密文信息对客户端和服务器传输的数据进行加密。
67.s240、接收客户端发送的第二公钥信息。
68.由于公钥信息在传输过程中是不被加密的,因此在接收所述客户端发送的加密连接请求时,可直接接收到客户端发送的未被加密的第二公钥信息。
69.可选地,在接收客户端发送的第二公钥信息时,还可包括有客户端的连接标识信息id,当前客户端的连接标识信息与第二公钥信息均为未被加密的信息。在客户端与服务器基于libconnudp连接时,会随机生成64位唯一的标识信息。这个标识信息允许在客户端与服务器之间漫游,而不受网络变化的影响。
70.由于在现有方案中,物联网设备通常是移动的,但是,网络参数(如ip地址或端口)的任何更改都会中断连接。在这种情况下,必须重新建立连接,或者需要网关来重新路由数据流。但是这些解决方案增加了通信延迟和开销,这在医疗监控等任务关键型应用中可能是不可接受的。
71.而本方案的标识信息在udp报文的头部(非加密部分)中,不受客户端ip地址变化和重新连接的影响。在物联网环境下发生连接迁移时,由于客户端的标识信息是不会发生改变的,因此可直接通过客户端的标识信息进行连接,而无需进行重新连接,方便快捷。
72.s250、使用第二公钥信息对加密连接请求进行解密处理,以获得加密连接请求中携带的加密数据。
73.由于当前加密连接请求是第二公钥信息和第二私钥信息共同计算获得的密文信息进行加密获得的,在服务器接收到客户端发送的加密连接请求时,可使用未被加密的第二公钥信息对加密连接请求进行解密处理,进而获得在加密连接请求中携带的加密数据。
74.需要说明的是,为保证数据传输的保密性和唯一性,在使用未被加密的第二公钥信息对加密连接请求进行解密处理后,可能还存在使用服务器的第一私钥信息对加密连接请求进行进一步解密处理的过程,以保证当前请求就是发送给拥有当前第一私钥信息的服务器的。
75.s260、基于加密数据向客户端反馈加密回复消息。
76.若当前加密数据中包含有需要服务器进行进一步传输的数据,则服务器可基于加密数据向客户端反馈加密回复消息,当前加密回复消息中携带有客户端所需的数据。
77.若当前加密数据中不包含有需要服务器进行进一步传输的数据,则服务器只需向服务器发送接收确认消息,或同意进行数据传输消息。
78.需要说明的是,无论无服务使用哪种方式基于加密数据对客户端反馈加密回复消息,回复的过程均是基于密文的方式进行传输。
79.可选地,加密数据包括:经密文信息加密后的短期密钥信息,短期密钥信息由客户端生成。
80.此处加密数据中包含有经密文信息加密后的短期密钥信息的目的为:由于长期密钥信息的期限较长,在数据传输过程中若一直使用长期密钥信息对数据进行加密,如果攻击者事先记录下了所有数据过程中的数据包,若服务器的私钥泄漏,那就可以解密出传输的数据,存在数据泄漏的风险。因此,为进一步保证数据传输的安全性,在后续数据传输的过程中,客户端会生成一套临时密钥,临时密钥在与客户端进行一次数据传输后就会被销毁,在进行下一次数据传输的过程,会再生成一个短期密钥信息。
81.需要说明的是,生成短期密钥信息的算法与生成长期密钥信息的算法可以相同,均可适用diffie helman算法,但短期密钥信息的期限更短,具体期限时间可以为一分钟、三分钟,或者可根据使用次数定义,为一次或者两次等,具体短期密钥信息的期限定义时长以及定义方式在此不作限制,以实际需求为准。
82.一种可选实施例,基于加密数据向客户端反馈加密回复消息,包括:使用第二公钥信息对加密连接请求进行解密处理,得到加密数据;基于加密数据中的短期密钥信息向客户端反馈加密回复消息。
83.在服务器使用第二公钥信息将加密连接请求进行解密后,加密数据中除包含有相关传输数据,建立连接数据外,还包含有短期密钥信息,服务器可通过短息密钥信息中包含的短期密钥参数信息计算获得服务器的短期公钥信息,和短期私钥信息,并根据短期公钥信息和短期私钥信息计算出短期密文信息,并使用短期密文信息对客户端反馈加密回复消息。其中,使用短息密钥信息进行数据加密的方式与步骤s230通过长期密钥信息发送加密连接请求的过程相同,在此不再赘述。
84.在服务器使用短期密钥信息向客户端反馈加密回复消息后,若客户端再次向服务器发送加密连接请求,则当前连接请求为通过新的短息密钥信息进行加密获得的。
85.s270、与客户端建立基于用户数据报协议的通信连接。
86.一种可选实施例,在实际连接过程中会存在服务器与客户端通信连接断开的情况,在该种情况下需要进行服务器与客户端的再次连接,则本发明实施例提供的通信连接方法包括:
87.a)在与客户端建立的基于用户数据报协议的通信连接断开后,再次接收客户端发送的加密连接请求。
88.再次发送的加密连接请求是客户端在长期密钥信息有效时向服务器发送的。
89.由于客户端将配置信息已保存在在本地,则当长期密钥信息还处于有效期,则可根据长期密钥信息获得连接服务器的密文信息,则可直接根据当前密文信息对需要传输的数据进行加密,以再次发送的加密连接请求,而无需进行发送初始连接请求的过程,节省交
互步骤。
90.若客户端判断当前保存的长期密钥信息已失效,不在有效期,则需进行步骤s210,进行发送初始连接请求的过程。
91.b)针对加密连接请求再次向客户端反馈加密回复消息,以再次与客户端建立基于用户数据报协议的通信连接。
92.服务器通过解析加密连接请求,针对加密数据在此向客户端反馈加密回复消息,以实现与客户端建立基于用户数据报协议的再次通信连接。
93.上述步骤s210-s270可以称为客户端与服务器基于udp的首次连接或首次握手,上述步骤a)和步骤b)称为客户端与服务器基于udp的再次连接或再次握手(后续握手)。在进行步骤s270或上述步骤b)之后,本发明实施例提供的通信连接方法,在进行与客户端建立基于用户数据报协议mott的通信连接。
94.一种可选实施例,在客户端包括数据发布端时,本发明实施例提供的通信连接方法还包括:接收数据发布端基于消息队列遥测传输协议发送的加密连接通知;针对加密连接命令向所述数据发布端发送加密连接确认消息;接收数据发布端发送的目标数据。
95.数据发布端根据已经建立的基于udp进行密文传输的通信连接后,进一步向服务器发送基于mqtt的加密连接通知,当前加密连接通知可以为正式发布目标数据的通知,服务器在接收到当前加密连接通知后,向数据发布端发送确认使用当前方式进行加密传输的确认消息,进一步,数据发布端在接收到加密连接确认消息后,向服务器发布基于mott的目标数据,以进行完成的数据传输过程。
96.另一种可选实施例,在客户端还包括数据订阅端时,本发明实施例提供的通信连接方法还包括:接收数据订阅端发送的数据订阅请求;响应数据订阅请求向数据订阅端发送所述目标数据。
97.当在客户端还包括数据订阅端时,在客户端接收到数据发布端基于消息队列遥测传输协议发送的加密连接通知之后,数据订阅端需要向服务器发送数据订阅请求,以使得服务器明确需要进行数据订阅的过程,服务器在响应数据订阅请求时会将数据发布端发送的目标数据转发至数据订阅端。
98.为体现本技术实施例相比与现有方案的优势,请参照图2b和2c,图2b为现有方案提供的一种建立通信连接的时序图,图2c为本发明实施例二提供的一种建立通信连接的时序图。
99.在现有方案中基于标准tcp/mqtt进行安全传输建立连接的步骤为:
100.i.首先是tcp经典的三次握手,客户端发送同步序列编号(syn),请求与服务器申请连接。
101.ii.服务器向客户端回复同步序列编号和确认包ack,表示收到请求,同意客户端的连接。
102.iii.客户端向服务器发送确认包,表示收到服务器的回复,当前确认包发送完毕后,客户端和服务器进入连接成功状态,完成三次握手。
103.iv.进一步进行安全传输层协议(transport layer security,简称tls)的握手过程。
104.客户端发送初始连接请求(hello),当前请求为以明文的方式发送的,请求中包含
有tls版本信息,加密算法列表,随机数random_c(c表示客户端,s表示服务器)等信息。
105.v.服务器返回hello,返回协商的信息结果,随机数random_s、证书链等信息。
106.vi.客户端验证证书链后,自己计算产生预备主秘钥pre-master secret,并用证书公钥加密,发送给服务器。同时用random_c、random_s、pre-master secret计算得到密文信息k。告诉服务器后续发送都采用密文。结合之前所有通信参数哈希值等信息生成一段握手验证数据,采用密文信息k进行加密,然后发送给服务器用于数据与握手验证。
107.vii.服务器用私钥解密加密的pre-master secret数据,基于之前交换的两个明文随机数random_c、random_s,计算得到密文信息k。用k解密客户端发过来的握手验证数据,验证其正确性。并告诉客户端后续发送都采用密文。将自己的握手验证数据加密,发送给客户端。
108.viii.客户端收到验证数据,解密验证后,发送握手结束。
109.ix.服务器到发送握手结束。
110.x.基于安全传输层协议加密的过程握手完毕后,mqtt订阅者,发布者和mqtt代理可以按照常规步骤进行安全的加密交互了。
111.在本方案中,基于mqtt/udp进行安全传输建立连接的步骤为:
112.首次连接:
113.i.客户端发送初始连接请求(hello)到服务器端
114.ii.服务器端发送拒绝消息,拒绝消息中携带有配置信息,配置信息中包括长期密钥信息(包含dh算法需要的p,g,ks_pub。
115.iii.客户端收到回复后,将配置信息缓存的本地,根据长期密钥信息计算出秘钥密文信息k,给服务器回复完成握手,将客户端公钥kc_pub发给服务器。此条开始,客户端已计算出了密文信息k,除公钥信息外的数据(如:时间戳等)就可以加密发送了。
116.iv.服务器收到公钥kc_pub信息,可以自己计算出密文信息k,就可以将加密信息解密。此步开始,就可以完全进行密文交互了。服务器向客户端进行加密回复。
117.v.现在握手完毕,mqtt订阅者,发布者和mqtt代理可以按照常规步骤进行安全的加密交互了。
118.在客户端与服务器断开后重新连接时:
119.客户端重新连接时,本地已经保存了服务器上次的配置信息(相当于上文i和ii步骤已完成),因此可以从上文连接过程的第iii步开始,这样第一条数据就可以进行加密发送。重新连接时,表明客户端身份的是64位唯一的连接id,而不是ip加端口号,因此网络环境发生了变化时,也不会增加连接的步骤,这样就实现了用户无感知的连接迁移过程。
120.从建立连接到收发一帧的数据包发送情况,可以对比得到基于mqtt/udp通信进行数据传输的方式相比与基于tcp/mqtt通信进行数据传输的方式收发包数减少了近一半。另外,mqtt/udp还支持多路复用和连接迁移,都是在物联网场景下,非常有用的功能。
121.多路复用的优势体现在,libconnudp通过单个连接下打开多个流以实现多路复用。流是一个轻量级抽象,它提供了一个可靠的双向字节流,每个流由唯一的连接标识符标识。奇数标识符用于客户端启动的流,偶数标识符用于服务器启动的流。一个流最多可承载264字节的应用消息。另外,在丢包时,由于udp的特性,不会阻止应用程序处理后续数据包。示例性的,tcp发送4条数据,当服务器第一条数据没有收到时,客户端会重发第一条数据,
这就阻碍了后续三条的发送。而udp不会阻碍后续发送,客户端直接发送四条数据,后面判断到第一条超时后,会对数据进行补发。这样特性就可以避免发送数据过程中,一条阻塞住,后续数据也无法发送(队头阻塞)的情况。也可以实现若干条逻辑上的通路,实现多路复用,互不阻塞。多路复用的特性可以极大的提升某些应用的性能,例如远程升级或者视频推送等。
122.进一步地,为防止接收缓冲区被数据淹没,libconnudp实现了一种流(stream)控机制。此处的流可以称为字节流,表示长长的一串字节,根据应用场景的不同,还可为视频流、音频流以及数据流等。一个缓慢的tcp排出流可以消耗掉整个接收器缓冲区,最终可以导致客户端没法发送任何数据。这个问题libconnudp通过两个层面的流控来解决:连接层面:连接时限制客户端在接收器上的所有流中可使用的缓冲区;在流层面限制每个流的缓冲区。接收器通过在窗口更新帧中,周期性地公布发送、接收和传递数据包在每个流中的绝对偏移,来告知接收数据的能力。
123.还体现出了拥塞机制,libconnudp传输中提供了比tcp更丰富的信息集,如每个数据包(原始或重传)携带一个新的数据包编号。这使发送者能够区分重传ack和原始ack解决tcp的重传模糊问题。ack帧中还包含接收数包和确认包之间的延迟,这有助于计算客户端与服务器的往返时间(rtt)。libconnudp支持两种拥塞控制算法,bbr拥塞控制算法(bottleneck bandwidth and round-trip propagation time)和tcp cubic拥塞控制算法。
124.本发明实施例提供的通信连接方法,利用轻量级的udp来模拟面向连接的tcp协议来实现mqtt,大大减少了数据交互的开销,并实现了多路复用技术和进行后续连接的连接迁移。这样的mqtt/udp比mqtt/tcp能更好的工作在复杂的物联网场景。
125.实施例三
126.图3为本发明实施例三提供的一种通信连接装置结构框图,该装置可由软件和/或硬件实现,一般可集成在服务器等计算机设备中,可通过执行通信连接方法来基于消息队列遥测传输协议时进行的通信连接。如图3所示,该装置包括:连接请求接收模块31、拒绝消息发送模块32、加密连接请求接收模块33和加密回复消息反馈模块34,其中:
127.连接请求接收模块31,用于接收客户端基于用户数据报协议udp发送的初始连接请求,所述初始连接请求中包括所述客户端的标识信息;
128.拒绝消息发送模块32,用于基于所述标识信息向所述客户端发送拒绝消息,所述拒绝消息中携带有服务器的配置信息,所述配置信息中包括长期密钥信息;
129.加密连接请求接收模块33,用于接收所述客户端发送的加密连接请求,所述加密连接请求是所述客户端通过加密信息对所述初始连接请求加密后获得的,所述加密信息是所述客户端解析所述长期密钥信息得到的;
130.加密回复消息反馈模块34,用于针对所述加密连接请求向所述客户端反馈加密回复消息,以与所述客户端建立基于所述用户数据报协议的通信连接。
131.本发明实施例中提供的通信连接装置,首先服务器接收客户端基于用户数据报协议udp发送的初始连接请求,初始连接请求中包括客户端的标识信息;然后再基于标识信息向客户端发送拒绝消息,在拒绝消息中携带有服务器的配置信息,其中配置信息中包括长期密钥信息;再接收客户端发送的加密连接请求,加密连接请求是客户端通过加密信息对
初始连接请求加密后获得的,加密信息是客户端解析长期密钥信息得到的;最后服务器针对加密连接请求向客户端反馈加密回复消息,以与客户端建立基于用户数据报协议的通信连接。通过采用上述方案,服务器与客户端交互两次即可建立通信连接,减少了与客户端建立连接的交互次数,进而减少连接时间,能够进行快速连接,从而提升用户体验;且在与客户端建立连接的过程中通过长期密钥信息能够直接使客户端与服务器基于密文进行数据传输,提升了数据安全性,相比于现有技术,无需多余的进行加密确认的请求过程,可以达到高效传输数据以及减少资源占用的技术效果。
132.可选地,所述长期密钥信息包括:密钥参数信息和第一公钥信息,所述第一公钥信息是所述服务器根据第一私钥信息和所述密钥参数信息计算获得的;
133.所述加密信息包括:密文信息和第二公钥信息,所述第二公钥信息是所述客户端根据第二私钥信息和所述密钥参数信息计算获得的,所述密文信息是所述客户端根据所述第一公钥信息和所述第二公钥信息计算获得的。
134.可选地,所述装置还包括:公钥信息接收模块、解密处理模块
135.公钥信息接收模块,用于接收所述客户端发送的所述第二公钥信息;
136.解密处理模块,用于使用所述第二公钥信息对所述加密连接请求进行解密处理,以获得所述加密连接请求中携带的加密数据;
137.加密回复消息反馈模块34,还用于基于所述加密数据向所述客户端反馈所述加密回复消息。
138.可选地,所述加密数据包括:经所述密文信息加密后的短期密钥信息,所述短期密钥信息由所述客户端生成。
139.可选地,解密处理模块,还用于使用所述第二公钥信息对所述加密连接请求进行解密处理,得到所述加密数据;
140.加密回复消息反馈模块34,还用于基于所述加密数据中的所述短期密钥信息向所述客户端反馈所述加密回复消息。
141.可选地,加密连接请求接收模块33,还用于在与所述客户端建立的基于所述用户数据报协议的通信连接断开后,再次接收所述客户端发送的加密连接请求,再次发送的所述加密连接请求是所述客户端在所述长期密钥信息有效时向所述服务器发送的;
142.加密回复消息反馈模块34,还用于针对所述加密连接请求再次向所述客户端反馈所述加密回复消息,以再次与所述客户端建立基于所述用户数据报协议的通信连接。
143.可选地,所述客户端包括数据发布端,所述装置还包括:连接通知接收模块、连接确认发送模块和目标数据接收模块,其中:
144.连接通知接收模块,用于接收所述数据发布端基于消息队列遥测传输协议发送的加密连接通知;
145.连接确认发送模块,用于针对所述加密连接命令向所述数据发布端发送加密连接确认;
146.目标数据接收模块,用于接收所述数据发布端发送的目标数据。
147.可选地,所述客户端还包括数据订阅端,所述装置还包括:请阅请求接收模块和目标数据发送模块,其中:
148.请阅请求接收模块,用于接收所述数据订阅端发送的数据订阅请求;
149.目标数据发送模块,用于响应所述数据订阅请求向所述数据订阅端发送所述目标数据。
150.本发明实施例提供的通信连接装置,可执行本发明任意实施例所提供的通信连接方法,具备执行该方法相应的功能模块和有益效果。
151.实施例四
152.本发明实施例提供了一种通信连接系统,该系统包括客户端以及用于执行如本发明任一实施例所述的通信连接方法的服务器。请参照图4,图4为本发明实施例四提供的一种通信连接系统的信令交互示意图。本技术实施例在上述实施例的基础上,给出了基于应用控制的服务器和客户端进行交互的优选实例,具体的,该实施例包括以下步骤:
153.s401、在客户端生成基于用户数据报协议udp的初始连接请求,初始连接请求中包括客户端的标识信息。
154.s402、客户端向服务器发送初始连接请求。
155.s403、服务器接收初始连接请求,根据接收初始连接请求中的标识信息生成拒绝消息,拒绝消息中携带有服务器的配置信息,配置信息中包括长期密钥信息,长期密钥信息包括密钥参数信息和第一公钥信息。
156.s404、服务器向客户端发送拒绝消息。
157.s405、客户端接收拒绝消息,解析拒绝消息中配置信息的长期密钥信息获得加密信息。
158.s406、客户端根据加密信息生成密文信息和第二公钥信息。
159.s407、客户端使用密文信息对待传输数据进行加密形成加密数据,加密数据包括加密后的短期密钥信息。
160.s408、客户端将加密数据携带在连接请求中形成加密连接请求。
161.s409、客户端将加密连接请求和第二公钥信息发送至服务器。
162.s410、服务器接收第二公钥信息,使用第二公钥信息对加密连接请求进行解密处理,获得加密连接请求中携带的加密数据。
163.s411、服务器基于加密数据中的短期密钥信息生成加密回复消息。
164.s412、服务器向客户端反馈加密回复消息。
165.s413、客户端基于短期密钥信息使用消息队列遥测传输协议生成加密连接通知。
166.s414、客户端将加密连接通知发送至服务器。
167.s415、服务器接收加密连接通知,针对加密连接命令生成加密连接确认消息。
168.s416、服务器向客户端发送加密连接确认消息。
169.s417、客户端在接收到加密连接确认后,向服务器发送目标数据。
170.s418、服务器接收客户端发送的目标数据。
171.本发明实施例提供的技术方案,在客户端与服务器的连接过程中,减少了与交互过程,进而减少连接时间,能够进行快速连接,从而提升用户体验。且服务器在与客户端建立连接的过程中通过长期密钥信息能够直接使客户端与服务器基于密文进行数据传输,提升了数据安全性,可以达到高效传输数据以及减少资源占用的技术效果。
172.实施例五
173.本发明实施例提供了一种计算机设备,该计算机设备中可集成本发明实施例提供
的通信连接装置。图5为本发明实施例五提供的一种计算机设备的结构框图。计算机设备500可以包括:存储器501,处理器502及存储在存储器501上并可在处理器运行的计算机程序,所述处理器502执行所述计算机程序时实现如本发明实施例所述的通信连接方法。
174.本发明实施例提供的计算机设备,可执行本发明任意实施例所提供的通信连接方法,具备执行该方法相应的功能模块和有益效果。
175.实施例六
176.本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于通信连接方法,该方法包括:
177.接收客户端基于用户数据报协议udp发送的初始连接请求,所述初始连接请求中包括所述客户端的标识信息;
178.基于所述标识信息向所述客户端发送拒绝消息,所述拒绝消息中携带有服务器的配置信息,所述配置信息中包括长期密钥信息;
179.接收所述客户端发送的加密连接请求,所述加密连接请求是所述客户端通过加密信息对所述初始连接请求加密后获得的,所述加密信息是所述客户端解析所述长期密钥信息得到的;
180.针对所述加密连接请求向所述客户端反馈加密回复消息,以与所述客户端建立基于所述用户数据报协议的通信连接。
181.存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如cd-rom、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如dram、ddrram、sram、edoram,兰巴斯(rambus)ram等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
182.当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的通信连接操作,还可以执行本发明任意实施例所提供的通信连接方法中的相关操作。
183.上述实施例中提供的通信连接装置、设备及存储介质可执行本发明任意实施例所提供的通信连接方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的通信连接方法。
184.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
技术特征:
1.一种通信连接方法,其特征在于,所述方法包括:接收客户端基于用户数据报协议udp发送的初始连接请求,所述初始连接请求中包括所述客户端的标识信息;基于所述标识信息向所述客户端发送拒绝消息,所述拒绝消息中携带有服务器的配置信息,所述配置信息中包括长期密钥信息;接收所述客户端发送的加密连接请求,所述加密连接请求是所述客户端通过加密信息对所述初始连接请求加密后获得的,所述加密信息是所述客户端解析所述长期密钥信息得到的;针对所述加密连接请求向所述客户端反馈加密回复消息,以与所述客户端建立基于所述用户数据报协议的通信连接。2.根据权利要求1所述的方法,其特征在于,所述长期密钥信息包括:密钥参数信息和第一公钥信息,所述第一公钥信息是所述服务器根据第一私钥信息和所述密钥参数信息计算获得的;所述加密信息包括:密文信息和第二公钥信息,所述第二公钥信息是所述客户端根据第二私钥信息和所述密钥参数信息计算获得的,所述密文信息是所述客户端根据所述第一公钥信息和所述第二公钥信息计算获得的。3.根据权利要求2所述的方法,其特征在于,在针对所述加密连接请求向所述客户端反馈加密回复消息之前,还包括:接收所述客户端发送的所述第二公钥信息;使用所述第二公钥信息对所述加密连接请求进行解密处理,以获得所述加密连接请求中携带的加密数据;所述针对所述加密连接请求向所述客户端反馈加密回复消息,包括:基于所述加密数据向所述客户端反馈所述加密回复消息。4.根据权利要求3所述的方法,其特征在于,所述加密数据包括经所述密文信息加密后的短期密钥信息,所述短期密钥信息由所述客户端生成。5.根据权利要求4所述的方法,其特征在于,所述基于所述加密数据向所述客户端反馈所述加密回复消息,包括:使用所述第二公钥信息对所述加密连接请求进行解密处理,得到所述加密数据;基于所述加密数据中的所述短期密钥信息向所述客户端反馈所述加密回复消息。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:在与所述客户端建立的基于所述用户数据报协议的通信连接断开后,再次接收所述客户端发送的加密连接请求,再次发送的所述加密连接请求是所述客户端在所述长期密钥信息有效时向所述服务器发送的;针对所述加密连接请求再次向所述客户端反馈所述加密回复消息,以再次与所述客户端建立基于所述用户数据报协议的通信连接。7.根据权利要求1所述的方法,其特征在于,所述客户端包括数据发布端,所述方法还包括:接收所述数据发布端基于消息队列遥测传输协议发送的加密连接通知;针对所述加密连接命令向所述数据发布端发送加密连接确认消息;
接收所述数据发布端发送的目标数据。8.根据权利要求7所述的方法,其特征在于,所述客户端还包括数据订阅端,所述方法还包括:接收所述数据订阅端发送的数据订阅请求;响应所述数据订阅请求向所述数据订阅端发送所述目标数据。9.一种通信连接装置,其特征在于,所述装置包括:连接请求接收模块,用于接收客户端基于用户数据报协议udp发送的初始连接请求,所述初始连接请求中包括所述客户端的标识信息;拒绝消息发送模块,用于基于所述标识信息向所述客户端发送拒绝消息,所述拒绝消息中携带有服务器的配置信息,所述配置信息中包括长期密钥信息;加密连接请求接收模块,用于接收所述客户端发送的加密连接请求,所述加密连接请求是所述客户端通过加密信息对所述初始连接请求加密后获得的,所述加密信息是所述客户端解析所述长期密钥信息得到的;加密回复消息反馈模块,用于针对所述加密连接请求向所述客户端反馈加密回复消息,以与所述客户端建立基于所述用户数据报协议的通信连接。10.一种通信连接系统,其特征在于,所述系统包括客户端以及用于执行如权利要求1-8任一所述的通信连接方法的服务器。
技术总结
本发明实施例公开了一种通信连接方法、装置及系统。该方法包括:接收客户端基于UDP发送的初始连接请求,初始连接请求中包括客户端的标识信息;基于标识信息向客户端发送拒绝消息,拒绝消息中携带有服务器的配置信息,配置信息中包括长期密钥信息;接收客户端发送的加密连接请求;针对加密连接请求向客户端反馈加密回复消息,以与客户端建立基于用户数据报协议的通信连接,通过采用上述方案,减少了与客户端建立连接的交互次数,进而减少连接时间能够进行快速连接,从而提升用户体验;且在与客户端建立连接的过程中通过长期密钥信息能够直接使客户端与服务器基于密文进行数据传输,提升了数据安全性,达到高效传输数据的技术效果。果。果。
技术研发人员:桑学宁 贾化萍 张瑞 徐火亮
受保护的技术使用者:北京煜邦电力技术股份有限公司
技术研发日:2021.11.25
技术公布日:2022/3/8