本发明涉及通信,特别是涉及一种消息按需分配方法和装置。
背景技术:
1、mqtt(message queuing telemetry transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于tcp/ip协议上,由ibm在1999年发布,mqtt最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备和移动应用等方面有较广泛的应用。
2、mqtt使用的发布/订阅消息模式,它提供了一对多的消息分发机制,从而实现与应用程序的解耦,这是一种消息传递模式,消息不是直接从发送器发送到接收器(即点对点),而是由一个mqtt client(即publisher,发布方)发送至mqtt server(或称为mqttbroker),再由mqtt server分发到mqtt client(或称为subscriber)。
3、而在现有的基于mqtt协议的通信中,所有向mqtt broker订阅相应主题的mqttclient都能接收到由mqtt broker分发的其它mqtt client发送到对应主题的mqtt广播消息。
4、但在实际应用中,存在部分mqtt消息仅希望在特定的mqtt client间发送接收,不想被其它mqtt client监听接收到的情况,当前的mqtt机制无法按需分发,即无法选择让部分mqtt client不能接收不想被监听到的mqtt消息。
5、鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
技术实现思路
1、本发明要解决的技术问题是现有技术中的发布订阅模式无法满足消息按需分配的需求。
2、本发明采用如下技术方案:
3、第一方面,本发明提供了一种消息按需分配方法,预先在服务器中存储终端与对称密钥之间的第一映射关系,服务器建立有发布方与订阅方之间的订阅关系,其中,终端在订阅关系中表现为发布方和/或者订阅方;所述方法包括:
4、服务器接收到来自于第一发布方的消息报文时,从所述第一映射关系中找到第一发布方的对称密钥,使用所述第一发布方的对称密钥对所述消息报文进行解密,得到解密报文;
5、从所述订阅关系中找到所述第一发布方所对应的第一订阅方,使用第一订阅方的对称密钥对解密报文进行加密,得到转发报文;
6、将所述转发报文转发给第一订阅方,以便于第一订阅方根据自身的对称密钥对所述转发报文进行解密,得到对应的消息。
7、优选的,所述服务器建立有发布方与订阅方之间的订阅关系,具体包括:
8、服务器接收到来自于发布方的绑定报文时,对所述绑定报文进行解密,得到发布方的对称密钥和订阅方的对称密钥;
9、根据所述发布方的对称密钥,从所述第一映射关系中找到发布方;根据所述订阅方的对称密钥,从所述第一映射关系中找到订阅方;
10、建立发布方与订阅方之间的订阅关系。
11、优选的,在所述建立发布方与订阅方之间的订阅关系后,所述方法还包括:
12、服务器向发布方返回绑定响应报文;其中,所述绑定响应报文中携带有服务器从对应绑定报文中读取得到的对称密钥的个数;
13、以便于发布方根据所述服务器读取得到的对称密钥的个数,选择是否重新向服务器发送绑定报文。
14、优选的,所述绑定报文包括固定报文头、可变报文头和载荷,该固定报文头的第一个字节的高4位为第一预设值,用于标识该报文为绑定报文;
15、所述绑定报文的可变报文头用于记录报文载荷中包含对称密钥的个数;
16、所述绑定报文的载荷包含多个对称密钥,其中第一个对称密钥为发送所述绑定报文的终端自身的对称密钥,其它对称密钥为所述终端的订阅方的对称密钥。
17、优选的,针对于所述绑定报文,还配套设置有用于响应绑定报文的绑定响应报文;
18、所述绑定响应报文包括固定报文头和可变报文头,该固定报文头的高4位为第二预设值,用于标识该报文为绑定响应报文;该固定报文头的最低位用于标识绑定报文接收是否成功;
19、所述绑定响应报文的可变报文头用于记录服务器接收成功的对称密钥个数,以便于发布方进行密钥个数核对。
20、优选的,在所述预先在服务器中存储终端与对称密钥之间的第一映射关系前,所述方法还包括:
21、服务器在接收到终端的连接报文时,生成对应的密钥对,将所述密钥对中的公钥通过连接响应报文发送给所述终端,以便于所述终端向服务器发送使用所述公钥加密的绑定报文;
22、并在服务器中存储终端与所述密钥对中的私钥之间的第二映射关系,以便于服务器在接收到绑定报文,从所述第二映射关系中获取对应的私钥,使用所述私钥对所述绑定报文进行解密。
23、优选的,所述连接报文包括固定报文头,该固定报文头包括多个字节,该固定报文头的第一个字节的低4位为第三预设值;
24、所述连接响应报文包括固定报文头和可变报文头;
25、在所述连接报文的固定报文头的第一个字节的低4位为第三预设值时,将所述连接响应报文的固定报文头的第一个字节的低4位设置为第三预设值,并将所述密钥对中的公钥添加至所述连接响应报文的载荷中,以便于终端在读取得到所述连接响应报文的固定报文头的第一个字节的低4位为第三预设值时,从所述连接响应报文的载荷中获取公钥。
26、优选的,所述消息报文包括固定报文头、可变报文头和载荷,所述服务器接收到来自于第一发布方的消息报文时,从所述第一映射关系中找到第一发布方的对称密钥,使用所述第一发布方的对称密钥对所述消息报文进行解密,得到解密报文,具体包括:
27、所述服务器接收到来自于第一发布方的消息报文时,提取所述消息报文的可变报文头;
28、若提取得到的可变报文头的第三个字节为第四预设值时,从所述第一映射关系中找到第一发布方的对称密钥,使用所述第一发布方的对称密钥对所述消息报文进行解密,得到解密报文。
29、第二方面,本发明还提供了一种消息按需分配方法,在发布方中预先存储终端的对称密钥和订阅方的对称密钥,所述方法包括:
30、发布方向服务器发送绑定报文;
31、接收来自于所述服务器的绑定响应报文,对所述绑定响应报文进行解析,得到服务器从对应绑定报文中读取得到的对称密钥的个数;
32、根据服务器所读取得到的对称密钥的个数,选择是否重新向服务器发送绑定报文,以便于服务器根据所述绑定报文,建立发布方与订阅方之间的订阅关系;
33、发布方使用自身的对称密钥对待发布消息进行加密,生成消息报文,将所述消息报文发送给服务器。
34、第三方面,本发明还提供了一种消息按需分配装置,用于实现第一方面所述的消息按需分配方法,所述装置包括:
35、至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面或第二方面所述的消息按需分配方法。
36、第四方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面或第二方面所述的消息按需分配方法。
37、本发明通过对两个阶段的报文分别使用不同的对称密钥进行加密,从而在兼容了消息分发特性的基础上,确保报文传输的安全性,使其他终端即使通过监听获取到对应的报文,也无法对其进行解密。