消息队列遥测传输MQTT数据传输方法、装置和系统与流程

专利2022-11-26  33


本发明涉及物联网技术领域,尤其涉及一种消息队列遥测传输(messagequeuingtelemetrytransport,mqtt)数据传输方法、装置和系统。



背景技术:

mqtt是一种基于代理(broker)的消息传输协议。其消息的传输采用订阅(subscribe)/发布(publish)的方式,一个消息的发布者(publisher)将待发布的数据发送至一个代理设备(broker),至少一个消息的订阅者(subscriber)从代理设备处获取数据。

mqtt协议在物联网中应用广泛。以往,mqtt协议通常应用在有安全保障的后端网络中。当前,以工业系统为例,诸如可编程逻辑控制器(programmablelogiccontroller,plc)、监视控制和数据采集(supervisorycontrolanddataacquisition,scada)设备等关键设备均连接到工业互联网上,此外工业互联网还可以连接用户的移动终端,交易可能在工业互联网上完成,所有这些改变使得越来越多的敏感数据需要在互联网上传输。因此,物联网的发展对数据传输的私密性和安全性的要求越来越高,需要在设备到设备(devicetodevice,d2d)或机器到机器(machinetomachine,m2m)通信中增加安全性相关的功能。以往的mqtt协议已经不能够满足当前物联网通信中的要求。

一种已知的方案中,基于证书实现mqtt协议的安全性功能。另一种方案中,采用安全传输层(transportlayersecurity,tls)协议实现mqtt协议的安全性功能。两种方案均需要通信双方进行多次握手操作,对目前的mqtt协议做较大改动。



技术实现要素:

有鉴于此,本发明实施例提供一种mqtt数据传输方法、装置和系统,用以提供一种简单的实现mqtt协议安全性功能的方案。该方案无需对现有协议做较大改动,设备实现变化较小。

第一方面,提供一种mqtt数据发送方法,该方法涉及一个mqtt发布设备、一个mqtt代理、一个sdp网关和至少一个mqtt订阅设备,其中该sdp网关连接该至少一个mqtt订阅设备。该方法用于实现mqtt数据安全地发布至mqtt订阅设备。

该方法中,首先,mqtt发布设备向mqtt代理发送一个sdp连接请求,所述sdp连接请求用于请求与sdp网关建立连接。mqtt代理在收到来自mqtt发布设备的上述sdp连接请求后,mqtt代理判断所述sdp连接请求是否被允许,若被允许,则所述mqtt代理指示所述sdp网关等待与所述mqtt发布设备建立连接,并且向所述mqtt发布设备返回所述sdp网关的地址信息。

所述mqtt发布设备在收到所述sdp网关的地址信息后,按照接收的所述sdp网关的地址信息与所述sdp网关建立连接,可选地,该连接为安全连接,比如vpn连接。

所述mqtt发布设备通过建立的与所述sdp网关的连接将所述mqtt发布设备的标识信息发送至所述sdp网关。之后,所述mqtt发布设备将发布的数据发送至所述mqtt代理,其中,在发布的数据的载荷中包括所述mqtt发布设备的所述标识信息。所述mqtt代理将收到的数据发送至所述sdp网关。

所述sdp网关在接收到的所述mqtt发布设备发布的数据的载荷中查找所述mqtt发布设备的所述标识信息;若所述sdp网关找到所述mqtt发布设备的所述标识信息,则将接收到的所述mqtt发布设备发布的数据发送至所述sdp网关所连接的所述至少一个mqtt订阅设备。

其中,通过在mqtt数据发布前,对mqtt发布设备与mqtt订阅设备之间的数据获取关系进行验证,通过一个sdp网关控制数据的发送,可有效保证mqtt数据发布的安全性,且对协议修改较少,实现简单。

第二方面,提供一种设备连接方法,该方法可由第一方面中涉及的mqtt代理执行。该方法中,一个mqtt代理接收来自一个mqtt发布设备的一个sdp连接请求,所述sdp连接请求用于所述mqtt发布设备与一个sdp网关建立连接,其中,所述sdp网关连接至少一个mqtt订阅设备;所述mqtt代理判断所述sdp连接请求是否被允许,若被允许,则所述mqtt代理指示所述sdp网关等待与所述mqtt发布设备建立连接;所述mqtt代理向所述mqtt发布设备返回所述sdp网关的地址信息,用于所述mqtt发布设备按照所述sdp网关的地址信息与所述sdp网关建立连接。

其中,由mqtt代理对mqtt发布设备与mqtt订阅设备之间的数据获取关系进行验证,并控制mqtt发布设备与sdp网关之间的连接,可避免未经过鉴权的mqtt设备之间的数据发送。

可选地,所述mqtt代理判断所述sdp网关是否为预先设置的所述mqtt发布设备被允许连接的sdp网关,若是,则确定所述sdp连接请求被允许,否则,确定所述sdp连接请求被拒绝。

其中,mqtt代理可预先设置mqtt发布设备可连接的sdp网关,这样在收到一个sdp连接请求后,可根据预先设置的对应关系判断该连接请求是否被允许。

可选地,在所述mqtt代理向所述mqtt发布设备返回所述sdp网关的地址信息之后,所述mqtt代理接收所述mqtt发布设备发布的数据,其中,所述mqtt发布设备发布的数据中包括所述mqtt发布设备的标识信息;所述mqtt代理将收到的所述mqtt发布设备发布的数据发送至所述sdp网关。

其中,将sdp网关应用于mqtt数据的发布过程中,在mqtt代理对mqtt发布设备与sdp网关之间的关系进行验证后,由mqtt代理实现mqtt数据的转发。mqtt代理作为sdp控制器和sdp网关一起实现对mqtt发布设备和mqtt订阅设备的双向认证。

第三方面,提供一种设备连接方法,该方法可由第一方面中涉及的mqtt发布设备执行。该方法中,一个mqtt发布设备向一个mqtt代理发送一个sdp连接请求,所述sdp连接请求用于请求与一个sdp网关建立连接,其中,所述sdp网关连接至少一个mqtt订阅设备;所述mqtt发布设备接收来自所述mqtt代理的响应于所述sdp连接请求的所述sdp网关的地址信息;所述mqtt发布设备按照接收的所述sdp网关的地址信息与所述sdp网关建立连接。

其中,由mqtt代理对mqtt发布设备与mqtt订阅设备之间的数据获取关系进行验证,并控制mqtt发布设备与sdp网关之间的连接,可避免未经过鉴权的mqtt设备之间的数据发送。

可选地,所述mqtt发布设备与所述sdp网关建立一个安全连接。这样mqtt发布设备与sdp网关之间的通信就更为安全。

可选地,在所述mqtt发布设备与所述sdp网关建立连接之后,所述mqtt发布设备通过建立的连接将所述mqtt发布设备的标识信息发送至所述sdp网关;所述mqtt发布设备将发布的数据发送至所述mqtt代理,以通过所述mqtt代理发送至所述sdp网关,其中,在发布的数据的载荷中包括所述mqtt发布设备的所述标识信息。

其中,mqtt发布设备通过与sdp网关之间的连接发送自身的标识信息,并在后续发布的数据的载荷中包括该标识信息,这样sdp网关可对收到的数据进行识别,包括该标识信息的则认为是安全的,不包括该标识信息的则认为是不安全的,实现了对即将发布到mqtt订阅设备的数据的验证。若mqtt发布设备与sdp网关之间建立的是安全连接,则mqtt发布设备的标识信息通过安全连接进行发送,可有效避免重要信息被盗取,进一步提高了mqtt数据发布的安全性。

第四方面,提供一种数据发送方法,该方法可由第一方面中涉及的sdp网关执行。该方法中,一个sdp网关接收来自一个mqtt代理的一个指示信息,所述指示信息用于指示所述sdp网关等待与一个mqtt发布设备建立连接,其中,所述sdp网关连接至少一个mqtt订阅设备;所述sdp网关接收来自所述mqtt发布设备的连接建立请求后,与所述mqtt发布设备建立连接;所述sdp网关接收所述mqtt发布设备通过建立的连接发送的所述mqtt发布设备的标识信息;所述sdp网关接收来自所述mqtt代理的所述mqtt发布设备发布的数据;所述sdp网关在接收到的所述mqtt发布设备发布的数据的载荷中查找所述mqtt发布设备的所述标识信息;若所述sdp网关找到所述mqtt发布设备的所述标识信息,则将接收到的所述mqtt发布设备发布的数据发送至所述sdp网关所连接的所述至少一个mqtt订阅设备。

其中,将sdp网关应用于mqtt数据的发布过程中,在mqtt代理对mqtt发布设备与sdp网关之间的关系进行验证后,由mqtt代理实现mqtt数据的转发。mqtt代理作为sdp控制器和sdp网关一起实现对mqtt发布设备和mqtt订阅设备的双向认证。

可选地,所述sdp网关接收来自所述mqtt发布设备的建议一个安全连接的连接请求后,与所述mqtt发布设备建立一个安全连接。

其中,mqtt发布设备的标识信息通过该建立的安全连接进行发送,可有效避免重要信息被盗取,进一步提高了mqtt数据发布的安全性。

第五方面,提供一种mqtt数据发送系统。该系统中的各组成部分可实现前述第一方面所提供的方法。该系统包括:一个mqtt发布设备、一个mqtt代理、一个sdp网关,以及所述sdp网关所连接的至少一个mqtt订阅设备,其中,所述mqtt发布设备,用于向所述mqtt代理发送一个sdp连接请求,所述sdp连接请求用于所述mqtt发布设备与一个sdp网关建立连接;所述mqtt代理,用于判断所述sdp连接请求是否被允许,若被允许,则指示所述sdp网关等待与所述mqtt发布设备建立连接,并向所述mqtt发布设备返回所述sdp网关的地址信息;所述mqtt发布设备,还用于按照接收的所述sdp网关的地址信息向所述sdp网关发送一个连接建立请求;所述sdp网关,用于在收到所述mqtt发布设备发送的连接建立请求后,与所述mqtt发布设备建立连接。

其中,由mqtt代理对mqtt发布设备与mqtt订阅设备之间的数据获取关系进行验证,并控制mqtt发布设备与sdp网关之间的连接,可避免未经过鉴权的mqtt设备之间的数据发送。

第六方面,提供一种mqtt代理,该mqtt代理可包括:一个收发模块,用于接收来自一个mqtt发布设备的一个sdp连接请求,所述sdp连接请求用于所述mqtt发布设备与一个sdp网关建立连接,其中,所述sdp网关连接至少一个mqtt订阅设备;一个处理模块,用于判断所述sdp连接请求是否被允许,若被允许,则通过所述收发模块指示所述sdp网关等待与所述mqtt发布设备建立连接,并通过所述收发模块向所述mqtt发布设备返回所述sdp网关的地址信息,用于所述mqtt发布设备按照所述sdp网关的地址信息与所述sdp网关建立连接。

其中,由mqtt代理对mqtt发布设备与mqtt订阅设备之间的数据获取关系进行验证,并控制mqtt发布设备与sdp网关之间的连接,可避免未经过鉴权的mqtt设备之间的数据发送。

可选地,所述处理模块,具体用于判断所述sdp网关是否为预先设置的所述mqtt发布设备被允许连接的sdp网关,若是,则确定所述sdp连接请求被允许,否则,确定所述sdp连接请求被拒绝。

其中,mqtt代理可预先设置mqtt发布设备可连接的sdp网关,这样在收到一个sdp连接请求后,可根据预先设置的对应关系判断该连接请求是否被允许。

可选地,所述收发模块,还用于在向所述mqtt发布设备返回所述sdp网关的地址信息之后,接收所述mqtt发布设备发布的数据,其中,所述mqtt发布设备发布的数据中包括所述mqtt发布设备的标识信息,以及将收到的所述mqtt发布设备发布的数据发送至所述sdp网关。

其中,将sdp网关应用于mqtt数据的发布过程中,在mqtt代理对mqtt发布设备与sdp网关之间的关系进行验证后,由mqtt代理实现mqtt数据的转发。mqtt代理作为sdp控制器和sdp网关一起实现对mqtt发布设备和mqtt订阅设备的双向认证。

第七方面,提供一种mqtt发布设备,包括:一个收发模块,用于向一个mqtt代理发送一个sdp连接请求,所述sdp连接请求用于请求与一个sdp网关建立连接,其中,所述sdp网关连接至少一个mqtt订阅设备,以及接收来自所述mqtt代理的响应于所述sdp连接请求的所述sdp网关的地址信息;一个处理模块,用于按照所述收发模块接收的所述sdp网关的地址信息控制所述mqtt发布设备与所述sdp网关建立连接。

其中,由mqtt代理对mqtt发布设备与mqtt订阅设备之间的数据获取关系进行验证,并控制mqtt发布设备与sdp网关之间的连接,可避免未经过鉴权的mqtt设备之间的数据发送。

可选地,所述处理模块,具体用于控制所述mqtt发布设备与所述sdp网关建立一个安全连接。这样mqtt发布设备与sdp网关之前的通信就更为安全。

可选地,所述收发模块,还用于在所述处理模块控制所述mqtt发布设备与所述sdp网关建立连接之后,通过建立的连接将所述mqtt发布设备的标识信息发送至所述sdp网关,以及将所述mqtt发布设备发布的数据发送至所述mqtt代理,以通过所述mqtt代理发送至所述sdp网关,其中,在发布的数据的载荷中包括所述mqtt发布设备的所述标识信息。

其中,mqtt发布设备通过与sdp网关之间的连接发送自身的标识信息,并在后续发布的数据的载荷中包括该标识信息,这样sdp网关可对收到的数据进行识别,包括该标识信息的则认为是安全的,不包括该标识信息的则认为是不安全的,实现了对即将发布到mqtt订阅设备的数据的验证。若mqtt发布设备与sdp网关之间建立的是安全连接,则mqtt发布设备的标识信息通过安全连接进行发送,可有效避免重要信息被盗取,进一步提高了mqtt数据发布的安全性。

第八方面,提供一种sdp网关,包括:

一个收发模块,用于接收来自一个mqtt代理的一个指示信息,所述指示信息用于指示所述sdp网关等待与一个mqtt发布设备建立连接,其中,所述sdp网关连接至少一个mqtt订阅设备,以及接收来自所述mqtt发布设备的连接建立请求;一个处理模块,用于在所述收发模块收到来自所述mqtt发布设备的连接建立请求后,与所述mqtt发布设备建立连接;所述收发模块,还用于接收所述mqtt发布设备通过建立的连接发送的所述mqtt发布设备的标识信息;以及接收来自所述mqtt代理的所述mqtt发布设备发布的数据;所述处理模块,还用于在所述收发模块接收到的所述mqtt发布设备发布的数据的载荷中查找所述mqtt发布设备的所述标识信息,以及若找到所述mqtt发布设备的所述标识信息,则将所述收发模块接收到的所述mqtt发布设备发布的数据发送至所述sdp网关所连接的所述至少一个mqtt订阅设备。

其中,将sdp网关应用于mqtt数据的发布过程中,在mqtt代理对mqtt发布设备与sdp网关之间的关系进行验证后,由mqtt代理实现mqtt数据的转发。mqtt代理作为sdp控制器和sdp网关一起实现对mqtt发布设备和mqtt订阅设备的双向认证。

可选地,所述处理模块,具体用于在所述收发模块收到来自所述mqtt发布设备的建议一个安全连接的连接请求后,与所述mqtt发布设备建立一个安全连接。

其中,mqtt发布设备的标识信息通过该建立的安全连接进行发送,可有效避免重要信息被盗取,进一步提高了mqtt数据发布的安全性。

第九方面,提供一种数据发送装置,包括至少一个处理器和至少一个存储器,其中,所述至少一个存储器上存储有机器可读指令,所述至少一个处理器用于调用所述机器可读指令,执行前述的第二方面、第二方面的任一种可能的实现方式、第三方面、第三方面的任一种可能的实现方式、第四方面,或第四方面的任一种可能的实现方式所提供的方法。

第十方面,提供一种机器可读介质,其上存储有机器可读指令,所述机器可读指令在由至少一个处理器调用时,用于执行前述的第二方面、第二方面的任一种可能的实现方式、第三方面、第三方面的任一种可能的实现方式、第四方面,或第四方面的任一种可能的实现方式所提供的方法。

附图说明

图1为本发明实施例所采用的协议分层的结构示意图。

图2为sdp协议原理图。

图3为本发明实施例提供的一种mqtt数据发送系统的结构示意图。

图4为本发明实施例中将sdp协议应用于mqtt数据发送的示意图。

图5为本发明实施例提供的一种mqtt数据发送方法的流程图。

图6为本发明实施例提供的一种mqtt代理的结构示意图。

图7为本发明实施例提供的一种mqtt发布设备的结构示意图。

图8为本发明实施例提供的一种sdp网关的结构示意图。

图9为本发明实施例提供的一种数据发送装置的结构示意图。

附图标记列表:

具体实施方式

如前所述,以往的mqtt协议已经不能够满足当前物联网通信中关于安全性的要求。本发明实施例中,通过在mqtt数据发布前,对mqtt发布设备与mqtt订阅设备之间的数据获取关系进行验证,通过一个sdp网关控制数据的发送,可有效保证mqtt数据发布的安全性,且对协议修改较少,实现简单。

下面,结合附图对本发明实施例进行详细说明。

图1为本发明实施例所采用的协议分层的结构示意图。如图1所示,mqtt数据处理协议栈10包括:

一个外层的sdp协议处理框架101;以及

一个内层的mqtt协议处理框架102。

其中,内层的mqtt协议处理框架102可包括:

1)应用层1021

2)传输层1022

3)网络层1023

可选地,为了更加有效地防止诸如窥探(snooping)、伪造(spoofing)以及中间人攻击(maninthemiddle,mitm)等具有网络安全威胁的行为,本发明实施例中可在内层中的上述各层中的部分或全部增加诸如鉴权、载荷加密等。

比如:对于网络层1023,可使用一个物理加密网络或虚拟专用网络(virtualprivatenetwork,vpn)作为网络通信机制。基于诸如vpn等的安全的网络层的mqtt数据传输可具有私有网络的功能、安全性和管理等优势。

再比如:对于传输层1022,可采用安全传输(transportlayersecurity,tls)协议和/或安全套接层(securesocketslayer,ssl)协议等系列协议实现mqtt协议的安全性功能。其中,ssl协议支持秘钥交换、数据加密、消息完整性保护等多种功能。

又比如:对于应用层1021,可提供客户端标识和用户名、密码等多种加密方式。并且可对载荷部分进行加密处理。

本发明实施例中,在mqtt协议处理框架102之外还增加了sdp协议处理框架101,可提供相对全面的安全性功能。通过采用sdp协议,登录信息可由单一分组鉴权(singlepacketauthorization,spa)进行处理,因此可将数据接收端加以保护,黑客无法发现数据接收端。不论是否采用ssl/tls的传输机制,采用sdp协议处理均能够保证鉴权过程的安全性。可选地,设备状态信息(posture)和标识均可在到达应用层之前得以验证。

工业互联网中的移动终端和传统工业设备,绝大多数不具备足够的运算能力,不足以支持上述的应用层或传输层实现的安全性功能。因此,对于运算能力有限的设备,可考虑仅通过外层的sdp协议处理框架101实现mqtt协议的安全性功能,而无需在内部的mqtt协议的各层再增加安全性功能。而对于有足够运算能力的设备,可既采用外层的sdp协议处理框架101,又对内层的mqtt协议的一层或多层进行安全性处理。

为了使本发明实施例更容易被理解,下面对外层的sdp协议处理框架101中涉及的sdp协议原理加以说明。

一个sdp网络20中可包括:

1)sdp主机

sdp主机实现的功能众多,可包括:设备验证、用户鉴权、将本地白名单中的应用的数据发送至授权的且受保护的远程应用等。sdp主机可包括sdp主机发起端201和sdp主机接受端203。

2)sdp控制器202

sdp控制器202为sdp主机之间的可信任的中间设备,可实时配置sdp主机和sdp网关。

3)sdp网关204

sdp网关204是来自sdp主机的连接的终结点,通常在网络拓扑结构上尽量邻近被保护的应用。

sdp协议的相关流程可包括:

1)一个sdp控制器202在线,并与经过鉴权和授权的服务连接。

2)sdp网关204在线,并与sdp控制器202连接。

3)sdp主机发起端201在线,并与sdp控制器202连接。

4)sdp控制器202确定sdp网关204的列表。

5)sdp控制器202指示sdp网关204接受来自该sdp主机发起端201的通信。

6)sdp控制器202将sdp网关204的列表给sdp主机发起端201。

7)sdp主机发起端201发起向所有授权的sdp网关204发起双向的vpn连接。

本发明实施例中,在mqtt协议处理框架102的外部增加了sdp协议处理,从而实现了mqtt数据发送的安全性功能。在设备实现上,分别在一个mqtt发布设备上增加了sdp主机发起端的处理,在一个mqtt代理上增加了sdp控制器的处理,在一个mqtt订阅设备上增加了sdp主机接受端的处理。并且在mqtt订阅设备侧增加了sdp网关,由sdp控制器实现mqtt订阅设备与mqtt发布设备之间数据传输的安全性验证,由sdp网关控制由mqtt发布设备向mqtt订阅设备的数据发送。下面,结合图3介绍本发明实施例提供的一种mqtt数据发送系统30。

如图3所示,mqtt数据发送系统30包括:

一个mqtt发布设备301,其上实现sdp主机发起端201的功能,向作为sdp控制器202的mqtt代理302发起sdp连接请求。

一个mqtt代理302,其上实现sdp控制器202的功能,对mqtt发布设备301与mqtt订阅设备303之间的数据传输进行安全性验证。

一个sdp网关204,与mqtt发布设备301建立连接,控制由mqtt发布设备301向mqtt订阅设备303的数据发送。

至少一个mqtt订阅设备303,在mqtt订阅设备303侧连接有sdp网关204,从连接的sdp网关204处接收mqtt发布设备301所发布的数据。在具体实现是,可存在不止一个sdp网关204,分别向所连接的至少一个mqtt订阅设备303转发数据。

下面,对mqtt代理302作为sdp控制器202进行mqtt发布设备301与mqtt订阅设备303之间的数据传输安全性验证的原理加以说明。其中,可使用单个分组授权(singlepacketauthorization,spa)机制进行mqtt发布设备301登录信息的传送,以实现对mqtt发布设备301与mqtt订阅设备303之间的数据传输进行安全性验证,黑客难以使用一个假的spa分组通过该spa的验证机制,这是因为每一个spa分组均有一个不同于其他spa分组的随机且一次性的字段。除此之外,也可以使用基于哈希运算的消息鉴权码(keyed-hashmessageauthenticationcode,hmac)签名以实现一个spa分组中的上述一次性字段。除非获取所有相关的sdp加密信息,否则黑客难以伪造一个spa分组,以通过spa的验证机制。

图4中,作为sdp主机接受端203的mqtt订阅设备303向作为sdp控制器202的mqtt代理302订阅由mqtt代理302提供的一个主题(topic)。当作为客户端的mqtt订阅设备303与mqtt代理302建立连接后,可进行主题订阅以及数据传输。在连接存在时,sdp协议机制可保证网络中没有假冒的mqtt的客户端。

在mqtt协议过程中包括如下步骤:

1)连接:作为客户端的mqtt订阅设备303等待与作为服务器的mqtt代理302建立连接。

2)连接断开:作为服务器的mqtt代理302等待作为客户端的mqtt订阅设备303完成数据传输,之后断开tcp/ip连接。

3)订阅:作为服务器的mqtt代理302等待作为客户端的mqtt订阅设备303的订阅操作或退订阅操作。

4)退订阅:作为客户端的mqtt订阅设备303请求作为服务器的mqtt代理302退订阅至少一个主题。

5)发布:mqtt代理302在将mqtt订阅设备303的请求传递至mqtt发布设备301后,立即返回应用线程。

图4中,设备之间的实线表示对mqtt代理302与mqtt订阅设备303之间的数据传输进行安全性验证的spa授权过程,虚线标识mqtt发布设备301通过mqtt代理302向mqtt订阅设备303发布数据(比如某一主题topic)的过程。

下面,结合图5说明本发明实施例中mqtt数据发送方法的过程。如图5所示,该方法可包括如下步骤:

s501:mqtt发布设备301向mqtt代理302发送sdp连接请求。该连接请求中可包括mqtt发布设备301的互联网协议(internetprotocol,ip)地址,以及mqtt发布设备301与连接的sdp网关204的名称。

s502:mqtt代理302判断sdp连接请求是否被允许。若允许,则执行步骤s503。

可选地,mqtt代理302判断所述sdp网关204是否为预先设置的所述mqtt发布设备301被允许连接的sdp网关,若是,则确定该sdp连接请求被允许,否则,确定所述sdp连接请求被拒绝,进而,mqtt代理302拒绝mqtt发布设备301的sdp连接请求。可选地,可向mqtt发布设备301回复拒绝消息;或者丢弃mqtt发布设备301的sdp连接请求,不执行s504及后续步骤。

在mqtt代理302中可预先存储mqtt发布设备301(ip地址)与sdp网关204(名称)之间的数据传输关系,则mqtt代理302在收到了sdp连接请求后,即可依据预先存储的该数据传输关系判断是否允许sdp连接请求。若存在该数据传输关系,则确定sdp连接请求被允许,否则确定该sdp连接请求不被允许。

s503:mqtt代理302指示sdp网关204等待与mqtt发布设备301建立连接。

比如,mqtt代理302将mqtt发布设备301的ip地址待发送至sdp网关204,并可指示在接下来的预设时长内会收到来自该ip地址的连接建立请求。

s504:mqtt代理302向mqtt发布设备301发送sdp网关204的地址信息。

比如:mqtt代理302可将sdp网关204的ip地址发送至mqtt发布设备301。

可选地,在步骤s503和步骤s504之前,可选地,mqtt代理302还可对mqtt发布设备301的用户身份进行验证,验证方式包括但不限于:一次性令牌(onetimetoken)验证、公钥基础设施(publickeyinfrastructure,pki)验证、指纹验证、设备地理位置验证等。

s505:mqtt发布设备301与sdp网关204建立连接。可选地,该建立的连接为安全连接,比如:虚拟专用网络(virtualprivatenetwork,vpn)连接。

s506:mqtt发布设备301将自身的标识信息通过步骤s505中与sdp网关204建立的连接发送至sdp网关204。若步骤s505中建立的是安全连接,则步骤s506中标识信息的传输更为安全可靠。

s507:sdp网关204记录收到的mqtt发布设备301的标识信息。

s508:mqtt发布设备301向mqtt代理302发送发布的数据,数据的载荷中包括mqtt发布设备301的标识信息。

s509:mqtt代理302向sdp网关204发送mqtt发布设备301发布的数据。

s510:sdp网关204在收到的数据的载荷中查找mqtt发布设备301的标识信息。若找到,则执行步骤s511,否则可丢弃接收到的数据。

s511:sdp网关204将mqtt发布设备301发布的数据发送至连接的至少一个mqtt订阅设备303。

可选地,在步骤s501中,mqtt发布设备301可不指定要连接的sdp网关204,在步骤s502中,mqtt代理302可预先存储或在收到mqtt发布设备301的sdp连接请求后从其他设备处获取的该mqtt发布设备301可连接哪些sdp网关204。进而,步骤s503中mqtt代理302可指示该mqtt发布设备301可连接的所有sdp网关204等待该mqtt发布设备301的连接建立请求。而在步骤s504中,mqtt代理302可将该mqtt发布设备301可连接的所有sdp网关204的地址信息返回给该mqtt发布设备301。这样,在步骤s505,该mqtt发布设备301则可按照步骤s504中收到的地址信息与所有可连接的sdp网关204建立连接。并在接下来的步骤中,向该mqtt发布设备301可连接的所有mqtt代理302发送该mqtt发布设备301的标识信息,而mqtt代理302在收到该mqtt发布设备301发布的数据后,将收到的数据发送至该mqtt发布设备301可连接的所有sdp网关204,进而该mqtt发布设备301发布的数据可发送至各个sdp网关204所连接的mqtt订阅设备303。

mqtt协议支持三种级别的服务质量(qualityofservices,qos):0、1和2。qos0采用尽力传输的机制,消息的接收端不会对消息的接收进行确认,也不会存储收到的消息以等待发送端重传。qos1要保证消息至少发送至接收端一次。发送端会存储消息直至收到接收端的确认。qos2是最安全的机制,但数据传输速度最慢,其保证每一套消息都被对方至少接收到一次。需要说明的是,本发明实施例适用于qos1和qos2。

图6为本发明实施例提供的一种mqtt代理302的结构示意图。如图6所示,该mqtt代理302可包括:

一个收发模块3021,用于接收来自一个mqtt发布设备301的一个sdp连接请求,sdp连接请求用于mqtt发布设备301与一个sdp网关204建立连接,其中,sdp网关204连接至少一个mqtt订阅设备303;

一个处理模块3022,用于判断sdp连接请求是否被允许,若被允许,则通过收发模块3021指示sdp网关204等待与mqtt发布设备301建立连接,并通过收发模块3021向mqtt发布设备301返回sdp网关204的地址信息,用于mqtt发布设备301按照sdp网关204的地址信息与sdp网关204建立连接。

可选地,处理模块3022,具体用于判断sdp网关204是否为预先设置的mqtt发布设备301被允许连接的sdp网关,若是,则确定sdp连接请求被允许,否则,确定sdp连接请求被拒绝。

可选地,收发模块3022,还用于在向mqtt发布设备301返回sdp网关204的地址信息之后,接收mqtt发布设备301发布的数据,其中,mqtt发布设备301发布的数据中包括mqtt发布设备301的标识信息,以及将收到的mqtt发布设备301发布的数据发送至sdp网关204。

该mqtt代理302的其他可选实现方式可参考前述mqtt数据发送系统中,以及mqtt数据发送方法中的描述,其中,收发模块3022用于实现消息以及数据的收发操作,处理模块3022用于进行判断处理。

图7为本发明实施例提供的一种mqtt发布设备301的结构示意图。如图7所示,该mqtt发布设备301可包括:

一个收发模块3011,用于向一个mqtt代理302发送一个sdp连接请求,sdp连接请求用于请求与一个sdp网关204建立连接,其中,sdp网关204连接至少一个mqtt订阅设备303,以及接收来自mqtt代理302的响应于sdp连接请求的sdp网关204的地址信息;一个处理模块3012,用于按照收发模块3011接收的sdp网关204的地址信息控制mqtt发布设备301与sdp网关204建立连接。

可选地,处理模块3012,具体用于控制mqtt发布设备301与sdp网关204建立一个安全连接。

可选地,收发模块3011,还用于在处理模块3012控制mqtt发布设备301与sdp网关204建立连接之后,通过建立的连接将mqtt发布设备301的标识信息发送至sdp网关204,以及将mqtt发布设备301发布的数据发送至mqtt代理302,以通过mqtt代理302发送至sdp网关204,其中,在发布的数据的载荷中包括mqtt发布设备301的标识信息。

该mqtt发布设备的其他可选实现方式可参考前述mqtt数据发送系统中,以及mqtt数据发送方法中的描述,其中,收发模块3011用于实现消息以及数据的收发操作,处理模块3012用于进行消息处理。

图8为本发明实施例提供的一种sdp网关204的结构示意图。如图8所示,该sdp网关204可包括:一个收发模块2041,用于接收来自一个mqtt代理302的一个指示信息,指示信息用于指示sdp网关204等待与一个mqtt发布设备301建立连接,其中,sdp网关204连接至少一个mqtt订阅设备303,以及接收来自mqtt发布设备301的连接建立请求;一个处理模块2042,用于在收发模块2041收到来自mqtt发布设备301的连接建立请求后,与mqtt发布设备301建立连接;收发模块2041,还用于接收mqtt发布设备301通过建立的连接发送的mqtt发布设备301的标识信息;以及接收来自mqtt代理302的mqtt发布设备301发布的数据;处理模块2042,还用于在收发模块2041接收到的mqtt发布设备301发布的数据的载荷中查找mqtt发布设备301的标识信息,以及若找到mqtt发布设备301的标识信息,则将收发模块2041接收到的mqtt发布设备301发布的数据发送至sdp网关204所连接的至少一个mqtt订阅设备303。

可选地,处理模块2042,具体用于在收发模块2041收到来自mqtt发布设备301的建议一个安全连接的连接请求后,与mqtt发布设备301建立一个安全连接。

该sdp网关的其他可选实现方式可参考前述mqtt数据发送系统中,以及mqtt数据发送方法中的描述,其中,收发模块2041用于实现消息以及数据的收发操作,处理模块2042用于进行消息处理。

图9为本发明实施例提供的一种数据发送装置90的结构示意图。该数据发送装置90可为前述的mqtt代理302、mqtt发布设备301以及sdp网关204中的任一个。该装置90可包括:至少一个处理器901和至少一个存储器902,其中,至少一个存储器902上存储有机器可读指令,至少一个处理器901用于调用机器可读指令,执行前述的方法中mqtt代理302或mqtt发布设备301或sdp网关204中任意一个所执行的操作。图9所示的结构也可以视为是图6~图8任一个设备的硬件实现方式。

此外,本发明实施例还提供一种一种机器可读介质,其上存储有机器可读指令,机器可读指令在由至少一个处理器调用时,用于执行前述方法中mqtt代理302、mqtt发布设备301或sdp网关204中任一个所执行的方法。该机器可读介质可为软盘、硬盘、内存、磁光盘、光盘、磁带和非易失性存储卡。该存储介质也可为远程服务器(比如:应用服务器,该远程服务器可部署在云上)上的存储资源。

综上,本发明实施例中,利用了sdp实现了mqtt数据传输的安全性功能。可选地,可实现双层保护,即通过sdp进行mqtt发布设备301与mqtt订阅设备303之间的数据传输关系的验证,通过ssl/tls,vpn和载荷加密实现mqtt各协议层的安全保护。通过sdp机制实现了mqtt代理302与sdp网关204的双向验证;在sdp连接建立之后,mqtt代理302将自身的标识信息发送至sdp网关204,并且在发布的数据中包括了mqtt代理302的标识信息,从而通过sdp网关204实现对mqtt数据的验证。对设备的改动主要体现在对mqtt代理302和mqtt发布设备301的改动。通过增加sdp网关204,而无需对mqtt发布设备301进行较大改动。而前述的基于证书和采用tls的两种实现mqtt协议的安全性功能的方案,均需要在mqtt发布设备301和大量的mqtt订阅设备303上做改动。

前述的基于证书实现mqtt协议的安全性功能是在应用层实现的安全性功能,而采用tls协议实现mqtt协议的安全性功能是指在传输层实现的安全性功能。而对于工业互联网中的移动终端和传统工业设备,绝大多数不具备足够的运算能力,不足以支持上述的应用层或传输层实现的安全性功能。而本发明实施例中,利用sdp协议实现mqtt协议的安全性功能。即使应用层数据不加密,设备间的数据传输仍然是安全的。由于sdp协议采用了spa机制,mqtt代理302作为连接的接收端可采用丢弃一切的防火墙机制(将sdp网关204作为防火墙)。因此,mqtt数据发送系统30中的各设备可免受诸如服务拒绝(denial-ofservice,ddos)、端口扫描等安全威胁。

需要说明的是,上述各流程和各系统结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。

以上各实施例中,硬件单元可以通过机械方式或电气方式实现。例如,一个硬件单元可以包括永久性专用的电路或逻辑(如专门的处理器,fpga或asic)来完成相应操作。硬件单元还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。

上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。


技术特征:

1.mqtt数据发送系统(30),其特征在于,包括:一个mqtt发布设备(301)、一个mqtt代理(302)、一个sdp网关(204),以及所述sdp网关(204)所连接的至少一个mqtt订阅设备(303),其中,

所述mqtt发布设备(301),用于向所述mqtt代理(302)发送一个sdp连接请求,所述sdp连接请求用于所述mqtt发布设备(301)与一个sdp网关(204)建立连接;

所述mqtt代理(302),用于判断所述sdp连接请求是否被允许,若被允许,则指示所述sdp网关(204)等待与所述mqtt发布设备(301)建立连接,并向所述mqtt发布设备(301)返回所述sdp网关(204)的地址信息;

所述mqtt发布设备(301),还用于按照接收的所述sdp网关(204)的地址信息向所述sdp网关(204)发送一个连接建立请求;

所述sdp网关(204),用于在收到所述mqtt发布设备(301)发送的连接建立请求后,与所述mqtt发布设备(301)建立连接。

2.一种设备连接方法,其特征在于,包括:

一个mqtt代理(302)接收来自一个mqtt发布设备(301)的一个sdp连接请求,所述sdp连接请求用于所述mqtt发布设备(301)与一个sdp网关(204)建立连接,其中,所述sdp网关(204)连接至少一个mqtt订阅设备(303);

所述mqtt代理(302)判断所述sdp连接请求是否被允许,若被允许,则

所述mqtt代理(302)指示所述sdp网关(204)等待与所述mqtt发布设备(301)建立连接;

所述mqtt代理(302)向所述mqtt发布设备(301)返回所述sdp网关(204)的地址信息,用于所述mqtt发布设备(301)按照所述sdp网关(204)的地址信息与所述sdp网关(204)建立连接。

3.如权利要求2所述的方法,其特征在于,所述mqtt代理(302)判断所述sdp连接请求是否被允许,包括:

所述mqtt代理(302)判断所述sdp网关(204)是否为预先设置的所述mqtt发布设备(301)被允许连接的sdp网关,若是,则确定所述sdp连接请求被允许,否则,确定所述sdp连接请求被拒绝。

4.如权利要求2或3所述的方法,其特征在于,在所述mqtt代理(302)向所述mqtt发布设备(301)返回所述sdp网关(204)的地址信息之后,还包括:

所述mqtt代理(302)接收所述mqtt发布设备(301)发布的数据,其中,所述mqtt发布设备(301)发布的数据中包括所述mqtt发布设备(301)的标识信息;

所述mqtt代理(302)将收到的所述mqtt发布设备(301)发布的数据发送至所述sdp网关(204)。

5.一种设备连接方法,其特征在于,包括:

一个mqtt发布设备(301)向一个mqtt代理(302)发送一个sdp连接请求,所述sdp连接请求用于请求与一个sdp网关(204)建立连接,其中,所述sdp网关(204)连接至少一个mqtt订阅设备(303);

所述mqtt发布设备(301)接收来自所述mqtt代理(302)的响应于所述sdp连接请求的所述sdp网关(204)的地址信息;

所述mqtt发布设备(301)按照接收的所述sdp网关(204)的地址信息与所述sdp网关(204)建立连接。

6.如权利要求5所述的方法,其特征在于,所述mqtt发布设备(301)与所述sdp网关(204)建立连接,包括:

所述mqtt发布设备(301)与所述sdp网关(204)建立一个安全连接。

7.如权利要求5或6所述的方法,其特征在于,在所述mqtt发布设备(301)与所述sdp网关(204)建立连接之后,还包括:

所述mqtt发布设备(301)通过建立的连接将所述mqtt发布设备(301)的标识信息发送至所述sdp网关(204);

所述mqtt发布设备(301)将发布的数据发送至所述mqtt代理(302),以通过所述mqtt代理(302)发送至所述sdp网关(204),其中,在发布的数据的载荷中包括所述mqtt发布设备(301)的所述标识信息。

8.一种数据发送方法,其特征在于,包括:

一个sdp网关(204)接收来自一个mqtt代理(302)的一个指示信息,所述指示信息用于指示所述sdp网关(204)等待与一个mqtt发布设备(301)建立连接,其中,所述sdp网关(204)连接至少一个mqtt订阅设备(303);

所述sdp网关(204)接收来自所述mqtt发布设备(301)的连接建立请求后,与所述mqtt发布设备(301)建立连接;

所述sdp网关(204)接收所述mqtt发布设备(301)通过建立的连接发送的所述mqtt发布设备(301)的标识信息;

所述sdp网关(204)接收来自所述mqtt代理(302)的所述mqtt发布设备(301)发布的数据;

所述sdp网关(204)在接收到的所述mqtt发布设备(301)发布的数据的载荷中查找所述mqtt发布设备(301)的所述标识信息;

若所述sdp网关(204)找到所述mqtt发布设备(301)的所述标识信息,则将接收到的所述mqtt发布设备(301)发布的数据发送至所述sdp网关(204)所连接的所述至少一个mqtt订阅设备(303)。

9.如权利要求8所述的方法,其特征在于,所述sdp网关(204)接收来自所述mqtt发布设备(301)的连接建立请求后,与所述mqtt发布设备(301)建立连接,包括:

所述sdp网关(204)接收来自所述mqtt发布设备(301)的建立一个安全连接的连接请求后,与所述mqtt发布设备(301)建立一个安全连接。

10.一种mqtt代理(302),其特征在于,包括:

一个收发模块(3021),用于接收来自一个mqtt发布设备(301)的一个sdp连接请求,所述sdp连接请求用于所述mqtt发布设备(301)与一个sdp网关(204)建立连接,其中,所述sdp网关(204)连接至少一个mqtt订阅设备(303);

一个处理模块(3022),用于判断所述sdp连接请求是否被允许,若被允许,则通过所述收发模块(3021)指示所述sdp网关(204)等待与所述mqtt发布设备(301)建立连接,并通过所述收发模块(3021)向所述mqtt发布设备(301)返回所述sdp网关(204)的地址信息,用于所述mqtt发布设备(301)按照所述sdp网关(204)的地址信息与所述sdp网关(204)建立连接。

11.如权利要求10所述的mqtt代理(302),其特征在于,所述处理模块(3022),具体用于判断所述sdp网关(204)是否为预先设置的所述mqtt发布设备(301)被允许连接的sdp网关,若是,则确定所述sdp连接请求被允许,否则,确定所述sdp连接请求被拒绝。

12.如权利要求10或11所述的mqtt代理(302),其特征在于,所述收发模块(3022),还用于在向所述mqtt发布设备(301)返回所述sdp网关(204)的地址信息之后,

接收所述mqtt发布设备(301)发布的数据,其中,所述mqtt发布设备(301)发布的数据中包括所述mqtt发布设备(301)的标识信息,以及

将收到的所述mqtt发布设备(301)发布的数据发送至所述sdp网关(204)。

13.一种mqtt发布设备(301),其特征在于,包括:

一个收发模块(3011),用于向一个mqtt代理(302)发送一个sdp连接请求,所述sdp连接请求用于请求与一个sdp网关(204)建立连接,其中,所述sdp网关(204)连接至少一个mqtt订阅设备(303),以及接收来自所述mqtt代理(302)的响应于所述sdp连接请求的所述sdp网关(204)的地址信息;

一个处理模块(3012),用于按照所述收发模块(3011)接收的所述sdp网关(204)的地址信息控制所述mqtt发布设备(301)与所述sdp网关(204)建立连接。

14.如权利要求13所述的mqtt发布设备(301),其特征在于,所述处理模块(3012),具体用于控制所述mqtt发布设备(301)与所述sdp网关(204)建立一个安全连接。

15.如权利要求13或14所述的mqtt发布设备(301),其特征在于,所述收发模块(3011),还用于在所述处理模块(3012)控制所述mqtt发布设备(301)与所述sdp网关(204)建立连接之后,

通过建立的连接将所述mqtt发布设备(301)的标识信息发送至所述sdp网关(204),以及

将所述mqtt发布设备(301)发布的数据发送至所述mqtt代理(302),以通过所述mqtt代理(302)发送至所述sdp网关(204),其中,在发布的数据的载荷中包括所述mqtt发布设备(301)的所述标识信息。

16.一种sdp网关(204),其特征在于,包括:

一个收发模块(2041),用于接收来自一个mqtt代理(302)的一个指示信息,所述指示信息用于指示所述sdp网关(204)等待与一个mqtt发布设备(301)建立连接,其中,所述sdp网关(204)连接至少一个mqtt订阅设备(303),以及接收来自所述mqtt发布设备(301)的连接建立请求;

一个处理模块(2042),用于在所述收发模块(2041)收到来自所述mqtt发布设备(301)的连接建立请求后,与所述mqtt发布设备(301)建立连接;

所述收发模块(2041),还用于接收所述mqtt发布设备(301)通过建立的连接发送的所述mqtt发布设备(301)的标识信息;以及接收来自所述mqtt代理(302)的所述mqtt发布设备(301)发布的数据;

所述处理模块(2042),还用于在所述收发模块(2041)接收到的所述mqtt发布设备(301)发布的数据的载荷中查找所述mqtt发布设备(301)的所述标识信息,以及若找到所述mqtt发布设备(301)的所述标识信息,则将所述收发模块(2041)接收到的所述mqtt发布设备(301)发布的数据发送至所述sdp网关(204)所连接的所述至少一个mqtt订阅设备(303)。

17.如权利要求16所述的sdp网关(204),其特征在于,所述处理模块(2042),具体用于在所述收发模块(2041)收到来自所述mqtt发布设备(301)的建议一个安全连接的连接请求后,与所述mqtt发布设备(301)建立一个安全连接。

18.一种数据发送装置(90),其特征在于,包括至少一个处理器(901)和至少一个存储器(902),其中,所述至少一个存储器上存储有机器可读指令,所述至少一个处理器用于调用所述机器可读指令,执行如权利要求2~9任一项所述的方法。

19.一种机器可读介质,其特征在于,其上存储有机器可读指令,所述机器可读指令在由至少一个处理器调用时,用于执行如权利要求2~9任一项所述的方法。

技术总结
本发明涉及物联网技术领域,尤其涉及一种消息队列遥测传输MQTT数据传输方法、装置和系统,用以提供一种简单的实现MQTT协议安全性功能的方案。通过在MQTT数据发布前,对MQTT发布设备与MQTT订阅设备之间的数据获取关系进行验证,通过一个SDP网关控制数据的发送,可有效保证MQTT数据发布的安全性,且对协议修改较少,实现简单。

技术研发人员:董晓睿
受保护的技术使用者:西门子股份公司
技术研发日:2017.12.28
技术公布日:2020.05.19

转载请注明原文地址: https://bbs.8miu.com/read-267675.html

最新回复(0)