一种基于MQTT的智能家电加密控制系统和方法与流程

文档序号:17321853发布日期:2019-04-05 21:34阅读:250来源:国知局
一种基于MQTT的智能家电加密控制系统和方法与流程

本发明涉及网络通信技术领域,特别涉及一种基于mqtt的智能家电加密控制系统和方法。



背景技术:

消息队列遥测传输(messagequeuingtelemetrytransport,mqtt)是一个开源的轻量级基于代理的发布/订阅的消息传输协议,它可以通过很少的代码和带宽与设备连接,给用户主动推送内容,而不是由用户自己去通过各种方法获取自己想要的内容。mqtt的传输格式非常精小,且无应用消息头,可以保证消息传递的可靠性。该技术目前已经应用于无线传感器等计算和存储资源受限的环境当中。

目前,不管是设备端还是控制端发布消息均是公开发布,并未对发布消息进行加密,导致发布消息有被篡改的可能。



技术实现要素:

本发明实施例提供了一种基于mqtt的智能家电加密控制系统和方法,实现了加密基于mqtt传输的发布消息,保证了发布消息的安全性。

一种基于mqtt的智能家电加密控制系统,包括:设备端、控制端、代理服务器以及云端业务服务器,其中,

所述设备端、所述控制端分别通过mqtt协议与所述代理服务器连接;

所述设备端,用于设置设备发布主题,并订阅用户发布主题,生成密钥,并将所述密钥通过非对称加密算法进行加密,加密后的密钥发送给所述云端业务服务器,利用所述密钥对设备消息进行加密,将携带有所述设备发布主题的加密后的所述设备消息发布到所述代理服务器;

所述云端业务服务器,用于存储所述加密后的密钥;

所述控制端,用于设置用户发布主题,并订阅关注的设备端对应的所述设备发布主题,从所述云端业务服务器获取所述加密后的密钥,并对所述密钥进行解密,利用所述密钥加密控制指令,将携带有所述用户发布主题的加密后的所述控制指令发布到所述代理服务器;

所述代理服务器,用于根据所述设备发布主题,将携带有所述设备发布主题的加密后的所述设备消息发送给对应的所述控制端,根据所述用户发布主题,将携带有所述用户发布主题的加密后的所述控制指令发送给对应的所述设备端。

优选地,

所述设备端,进一步用于预设n×m字符表以及密钥更新时间间隔,从所述n×m字符表的每一行中随机选择k个字符,并将每一行中随机选择出的k个字符输入密钥生成函数,生成一个密钥,在当前密钥存在时长达到所述密钥更新时间间隔时,重新生成一个新的密钥,利用所述新的密钥替换所述当前密钥,并将所述当前密钥存储到预设的密钥回收表中,并对所述新的密钥进行加密,其中,n表征所述字符表的行数,m表征所述字符表的列数;

所述云端业务服务器,进一步用于利用加密后的所述新的密钥替换原来的所述加密后的密钥。

优选地,

所述设备端,用于利用下述加密公式,对所述设备消息进行加密;

加密公式:

c=e(k,p)

其中,c表征加密后的设备消息;e()表征aes加密函数;k表征所述密钥;p表征所述设备消息。

优选地,

所述设备端,用于利用所述密钥对接收到加密后的所述控制指令进行解密,在解密失败后,从所述密钥回收表中调用原来的密钥,重新对加密后的所述控制指令进行解密。

优选地,

所述控制端,用于利用所述密钥对接收到加密后的所述设备信息进行解密,在解密失败后,从所述云端业务服务器中获取所述新的密钥,利用所述新的密钥对加密后的所述设备信息进行解密。

优选地,

所述控制端,进一步用于利用下述解密公式,对加密后的所述设备消息进行解密;

解密公式:

p=d(y,c)

其中,p表征所述设备消息;d()表征aes解密函数;c表征加密后的设备消息;y表征所述控制端从所述云端业务服务器获取到的密钥。

优选地,

所述设备发布主题包括:第一发布标识以及设备端的序列号;

所述用户发布主题包括:第二发布标识以及所述控制端关注的一个设备端的序列号。

一种基于mqtt的智能家电加密控制方法,包括:

设备端、控制端分别通过mqtt协议与代理服务器连接;

在设备端设置设备发布主题,并订阅用户发布主题,生成密钥,并将所述密钥通过非对称加密算法进行加密,加密后的密钥发送给云端业务服务器;

所述云端业务服务器存储所述加密后的密钥;

在所述控制端设置用户发布主题,并订阅关注的设备端对应的所述设备发布主题,从所述云端业务服务器获取所述加密后的密钥,并对所述密钥进行解密;

利用所述密钥加密控制指令,将携带有所述用户发布主题的加密后的所述控制指令发布到所述代理服务器;

所述代理服务器根据所述用户发布主题,将携带有所述用户发布主题的加密后的所述控制指令发送给对应的所述设备端;

所述设备端利用所述密钥对设备消息进行加密,将携带有所述设备发布主题的加密后的所述设备消息发布到所述代理服务器;

所述代理服务器根据所述设备发布主题,将携带有所述设备发布主题的加密后的所述设备消息发送给对应的所述控制端。

优选地,上述基于mqtt的智能家电加密控制方法,进一步包括:

在所述设备端预设n×m字符表以及密钥更新时间间隔;

所述生成密钥,包括:从所述n×m字符表的每一行中随机选择k个字符,并将每一行中随机选择出的k个字符输入密钥生成函数,生成一个密钥,在当前密钥存在时长达到所述密钥更新时间间隔时,重新生成一个新的密钥,利用所述新的密钥替换所述当前密钥,并将所述当前密钥存储到预设的密钥回收表中,其中,n表征所述字符表的行数,m表征所述字符表的列数。

优选地,

所述设备端利用所述密钥对设备消息进行加密,包括:

所述设备端利用下述加密公式,对所述设备消息进行加密;

加密公式:

c=e(k,p)

其中,c表征加密后的设备消息;e()表征aes加密函数;k表征所述密钥;p表征所述设备消息。

优选地,上述基于mqtt的智能家电加密控制方法,进一步包括:所述控制端利用下述解密公式,对加密后的所述设备消息进行解密;

解密公式:

p=d(y,c)

其中,p表征所述设备消息;d()表征aes解密函数;c表征加密后的设备消息;y表征所述控制端从所述云端业务服务器获取到的密钥。

优选地,上述基于mqtt的智能家电加密控制方法,进一步包括:所述设备端利用所述密钥对接收到加密后的所述控制指令进行解密,在解密失败后,从所述密钥回收表中调用原来的密钥,重新对加密后的所述控制指令进行解密;

优选地,上述基于mqtt的智能家电加密控制方法,进一步包括:所述控制端利用所述密钥对接收到加密后的所述设备信息进行解密,在解密失败后,从所述云端业务服务器中获取所述新的密钥,利用所述新的密钥对加密后的所述设备信息进行解密。

本发明实施例提供了一种基于mqtt的智能家电加密控制系统和方法,该基于mqtt的智能家电加密控制系统包括:设备端、控制端、代理服务器以及云端业务服务器,其中,设备端、控制端分别通过mqtt与代理服务器连接;设备端,用于设置设备发布主题,并订阅用户发布主题,生成密钥,并将密钥通过非对称加密算法进行加密,加密后的密钥发送给云端业务服务器,利用密钥对设备消息进行加密,将携带有设备发布主题的加密后的设备消息发布到代理服务器;云端业务服务器,用于存储加密后的密钥;控制端,用于设置用户发布主题,并订阅关注的设备端对应的设备发布主题,从云端业务服务器获取加密后的密钥,并对密钥进行解密,利用密钥加密控制指令,将携带有用户发布主题的加密后的控制指令发布到代理服务器;代理服务器,用于根据设备发布主题,将携带有设备发布主题的加密后的设备消息发送给对应的控制端,根据用户发布主题,将携带有用户发布主题的加密后的控制指令发送给对应的设备端,上述实现了为控制指令和设备消息进行加密,而加密所用的密钥是设备端生成的,只有与设备端有关联的控制端才可对密钥进行解密,从而保证了发布消息即控制指令和设备消息的安全性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的基于mqtt的智能家电加密控制系统的结构示意图;

图2是本发明一个实施例提供的一种基于mqtt的智能家电加密控制方法的流程图;

图3是本发明另一个实施例提供的一种基于mqtt的智能家电加密控制方法的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种基于mqtt的智能家电加密控制系统,该基于mqtt的智能家电加密控制系统可以包括:设备端101、控制端102、代理服务器103以及云端业务服务器104,其中,

设备端101、控制端102分别通过mqtt协议与代理服务器103连接;

设备端101,用于设置设备发布主题,并订阅用户发布主题,生成密钥,并将密钥通过非对称加密算法进行加密,加密后的密钥发送给云端业务服务器104,利用密钥对设备消息进行加密,将携带有设备发布主题的加密后的设备消息发布到代理服务器103;

云端业务服务器104,用于存储加密后的密钥;

控制端102,用于设置用户发布主题,并订阅关注的设备端101对应的设备发布主题,从云端业务服务器104获取加密后的密钥,并对密钥进行解密,利用密钥加密控制指令,将携带有用户发布主题的加密后的控制指令发布到代理服务器103;

代理服务器103,用于根据设备发布主题,将携带有设备发布主题的加密后的设备消息发送给对应的控制端102,根据用户发布主题,将携带有用户发布主题的加密后的控制指令发送给对应的设备端101。

其中,设备端和控制端均可为多个;控制端可关注多个设备端。设备端可为智能空调、智能电视机、智能洗衣机等。控制端一般可为移动客户端或者嵌入移动客户端内的控制工具比如控制公众号。

另外,设备端的设备发布主题可以为设备端的sn号;控制端的用户发布主题可以为控制端关注的设备端的sn号。

值得说明的是,非对称加密算法的公钥和私钥为设备端与关注该设备端的控制端之间通过云端业务服务器协议构建而成。

在图1所示的实施例中,基于mqtt的智能家电加密控制系统包括:设备端、控制端、代理服务器以及云端业务服务器,其中,设备端、控制端分别通过mqtt与代理服务器连接;设备端,用于设置设备发布主题,并订阅用户发布主题,生成密钥,并将密钥通过非对称加密算法进行加密,加密后的密钥发送给云端业务服务器,利用密钥对设备消息进行加密,将携带有设备发布主题的加密后的设备消息发布到代理服务器;云端业务服务器,用于存储加密后的密钥;控制端,用于设置用户发布主题,并订阅关注的设备端对应的设备发布主题,从云端业务服务器获取加密后的密钥,并对密钥进行解密,利用密钥加密控制指令,将携带有用户发布主题的加密后的控制指令发布到代理服务器;代理服务器,用于根据设备发布主题,将携带有设备发布主题的加密后的设备消息发送给对应的控制端,根据用户发布主题,将携带有用户发布主题的加密后的控制指令发送给对应的设备端,上述实现了为控制指令和设备消息进行加密,而加密所用的密钥是设备端生成的,只有与设备端有关联的控制端才可对密钥进行解密,从而保证了发布消息即控制指令和设备消息的安全性。

在本发明另一实施例中,为了进一步保证发布消息的安全性,定期对密钥进行更新。设备端,进一步用于预设n×m字符表以及密钥更新时间间隔,从n×m字符表的每一行中随机选择k个字符,并将每一行中随机选择出的k个字符输入密钥生成函数,生成一个密钥,在当前密钥存在时长达到密钥更新时间间隔时,重新生成一个新的密钥,利用新的密钥替换当前密钥,并将当前密钥存储到预设的密钥回收表中,并对新的密钥进行加密,其中,n表征字符表的行数,m表征字符表的列数;

云端业务服务器,进一步用于利用加密后的新的密钥替换原来的加密后的密钥。

一般来说,上述n不小于16;上述m不小于10,上述k不小于3。

上述更新时间间隔是指两个密钥生成的时间间隔,通过各种测试发现,密钥更新时间间隔选择72h具有较佳的效果。

在本发明另一实施例中,设备端,用于利用下述加密公式,对设备消息进行加密;

加密公式:

c=e(k,p)

其中,c表征加密后的设备消息;e()表征aes加密函数;k表征所述密钥;p表征设备消息。即在本发明实施例中,密钥和设备消息均为aes加密函数的输入参数。

上述设备消息即为设备的运行状态参数如对于智能空调来说,设备消息为温度、风速、湿度等的运行状态参数。

在本发明另一实施例中,在设备端更新密钥,而控制端仍未更新密钥的情况下,为了保证对控制指令的解密,设备端,用于利用密钥对接收到加密后的控制指令进行解密,在解密失败后,从密钥回收表中调用原来的密钥,重新对加密后的控制指令进行解密。

在本发明另一实施例中,在设备端更新密钥,而控制端仍未更新密钥的情况下,为了保证对设备消息的解密,控制端,用于利用密钥对接收到加密后的设备信息进行解密,在解密失败后,从云端业务服务器中获取新的密钥,利用新的密钥对加密后的设备信息进行解密。

在本发明另一实施例中,控制端,进一步用于利用下述解密公式,对加密后的设备消息进行解密;

解密公式:

p=d(y,c)

其中,p表征设备消息;d()表征aes解密函数;c表征加密后的设备消息;y表征控制端从云端业务服务器获取到的密钥。

值得说明的是,控制端也通过上述加密公式对控制指令进行加密,只是输入加密函数中的参数变为控制指令和密钥。

另外,设备端也可通过上述解密公式对控制指令进行解密,只是输入解密函数的参数变为加密后的控制指令和密钥。

在本发明一个实施例中,设备发布主题包括:第一发布标识以及设备端的序列号;

用户发布主题包括:第二发布标识以及控制端关注的一个设备端的序列号。

其中,第一发布标识和第二发布标识可以引导代理服务器更好的识别设备发布主题和用户发布主题。

如图2所示,本发明实施例提供了一种基于mqtt的智能家电加密控制方法,该方法可以包括以下步骤:

步骤201:设备端、控制端分别通过mqtt协议与代理服务器连接;

步骤202:在设备端设置设备发布主题,并订阅用户发布主题,生成密钥,并将密钥通过非对称加密算法进行加密,加密后的密钥发送给云端业务服务器;

步骤203:云端业务服务器存储加密后的密钥;

步骤204:在控制端设置用户发布主题,并订阅关注的设备端对应的设备发布主题,从云端业务服务器获取加密后的密钥,并对密钥进行解密;

步骤205:利用密钥加密控制指令,将携带有用户发布主题的加密后的控制指令发布到代理服务器;

步骤206:代理服务器根据用户发布主题,将携带有用户发布主题的加密后的所述控制指令发送给对应的设备端;

步骤207:设备端利用密钥对设备消息进行加密,将携带有设备发布主题的加密后的设备消息发布到代理服务器;

步骤208:代理服务器根据设备发布主题,将携带有设备发布主题的加密后的设备消息发送给对应的控制端。

在本发明另一实施例中,上述基于mqtt的智能家电加密控制方法,进一步包括:在设备端预设n×m字符表以及密钥更新时间间隔;生成密钥的具体实施方式可包括:从n×m字符表的每一行中随机选择k个字符,并将每一行中随机选择出的k个字符输入密钥生成函数,生成一个密钥,在当前密钥存在时长达到密钥更新时间间隔时,重新生成一个新的密钥,利用新的密钥替换当前密钥,并将当前密钥存储到预设的密钥回收表中,其中,n表征字符表的行数,m表征字符表的列数。一般来说,上述n不小于16;上述m不小于10,上述k不小于3。通过上述过程实现了定时更新密钥,从而进一步保证了发布消息的安全性。更新时间间隔可为72h。

在本发明另一实施例中,设备端利用所述密钥对设备消息进行加密的具体实施方式可包括:设备端利用下述加密公式,对设备消息进行加密;

加密公式:

c=e(k,p)

其中,c表征加密后的设备消息;e()表征aes加密函数;k表征密钥;p表征设备消息。

在本发明另一实施例中,上述基于mqtt的智能家电加密控制方法,进一步包括:控制端利用下述解密公式,对加密后的设备消息进行解密;

解密公式:

p=d(y,c)

其中,p表征所述设备消息;d()表征aes解密函数;c表征加密后的设备消息;y表征所述控制端从所述云端业务服务器获取到的密钥。

在本发明另一实施例中,上述基于mqtt的智能家电加密控制方法,进一步包括:设备端利用密钥对接收到加密后的控制指令进行解密,在解密失败后,从密钥回收表中调用原来的密钥,重新对加密后的控制指令进行解密。其中,密钥回收表是对已过期的密钥进行回收的表格。

在本发明另一实施例中,上述基于mqtt的智能家电加密控制方法,进一步包括:控制端利用所述密钥对接收到加密后的所述设备信息进行解密,在解密失败后,从云端业务服务器中获取所述新的密钥,利用新的密钥对加密后的设备信息进行解密。

如图3所示,本发明实施例提供了一种基于mqtt的智能家电加密控制方法,该方法可以包括以下步骤:

步骤301:设备端、控制端分别通过mqtt协议与代理服务器连接;

步骤302:在设备端预设n×m字符表以及密钥更新时间间隔;

n表征字符表的行数,m表征字符表的列数。一般来说,上述n不小于16;上述m不小于10,上述k不小于3。通过上述过程实现了定时更新密钥,从而进一步保证了发布消息的安全性。更新时间间隔可为72h。

步骤303:从n×m字符表的每一行中随机选择k个字符,并将每一行中随机选择出的k个字符输入密钥生成函数,生成一个密钥,并执行步骤305;在当前密钥存在时长达到密钥更新时间间隔时,执行步骤304;

该密钥生成函数为现有的任意一种随机密钥生成函数。

步骤304:重新生成一个新的密钥,利用新的密钥替换当前密钥,并将当前密钥存储到预设的密钥回收表中;

步骤305:将密钥通过非对称加密算法进行加密,加密后的密钥发送给云端业务服务器;

该步骤中的密钥可为上述步骤203中生成的密钥以及步骤204更新后的新的密钥。

步骤306:云端业务服务器存储加密后的密钥;

步骤307:在设备端设置设备发布主题,并订阅用户发布主题;

该步骤与上述步骤302至步骤306之间并无严格的先后顺序。

步骤308:在控制端设置用户发布主题,并订阅关注的设备端对应的设备发布主题,从云端业务服务器获取加密后的密钥,并对密钥进行解密;

步骤309:利用密钥加密控制指令,将携带有用户发布主题的加密后的控制指令发布到代理服务器;

该利用密钥加密控制指令为,以密钥和控制指令作为输入参数,输入给aes加密函数,生成加密后的控制指令。

步骤310:代理服务器根据用户发布主题,将携带有用户发布主题的加密后的控制指令发送给对应的设备端;

步骤311:设备端对加密后的控制指令进行解密,在解密成功后,执行步骤313;在解密失败后,执行步骤312;

步骤312:从密钥回收表中调用原来的密钥,重新对加密后的控制指令进行解密;

步骤313:设备端执行控制指令,并利用密钥对设备消息进行加密,将携带有设备发布主题的加密后的设备消息发布到代理服务器;

在该步骤中,设备端利用下述加密公式,对设备消息进行加密;

加密公式:

c=e(k,p)

其中,c表征加密后的设备消息;e()表征aes加密函数;k表征密钥;p表征设备消息。

步骤314:代理服务器根据设备发布主题,将携带有设备发布主题的加密后的设备消息发送给对应的控制端;

步骤315:控制端解密加密后的设备消息;

在该步骤中,控制端利用下述解密公式,对加密后的设备消息进行解密;

解密公式:

p=d(y,c)

其中,p表征所述设备消息;d()表征aes解密函数;c表征加密后的设备消息;y表征所述控制端从所述云端业务服务器获取到的密钥。

步骤316:在解密失败后,从云端业务服务器中获取新的密钥,利用新的密钥对加密后的设备信息进行解密。

本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行本发明上述任一实施例提供的方法。

本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行本发明上述任一实施例提供的方法。

综上所述,本发明以上各个实施例至少具有如下有益效果:

1、在本发明实施例中,基于mqtt的智能家电加密控制系统包括:设备端、控制端、代理服务器以及云端业务服务器,其中,设备端、控制端分别通过mqtt与代理服务器连接;设备端,用于设置设备发布主题,并订阅用户发布主题,生成密钥,并将密钥通过非对称加密算法进行加密,加密后的密钥发送给云端业务服务器,利用密钥对设备消息进行加密,将携带有设备发布主题的加密后的设备消息发布到代理服务器;云端业务服务器,用于存储加密后的密钥;控制端,用于设置用户发布主题,并订阅关注的设备端对应的设备发布主题,从云端业务服务器获取加密后的密钥,并对密钥进行解密,利用密钥加密控制指令,将携带有用户发布主题的加密后的控制指令发布到代理服务器;代理服务器,用于根据设备发布主题,将携带有设备发布主题的加密后的设备消息发送给对应的控制端,根据用户发布主题,将携带有用户发布主题的加密后的控制指令发送给对应的设备端,上述实现了为控制指令和设备消息进行加密,而加密所用的密钥是设备端生成的,只有与设备端有关联的控制端才可对密钥进行解密,从而保证了发布消息即控制指令和设备消息的安全性。

2、在本发明实施例中,设备端,进一步用于预设n×m字符表以及密钥更新时间间隔,从n×m字符表的每一行中随机选择k个字符,并将每一行中随机选择出的k个字符输入密钥生成函数,生成一个密钥,在当前密钥存在时长达到密钥更新时间间隔时,重新生成一个新的密钥,利用新的密钥替换当前密钥,并将当前密钥存储到预设的密钥回收表中,并对新的密钥进行加密,其中,n表征字符表的行数,m表征字符表的列数;云端业务服务器,进一步用于利用加密后的新的密钥替换原来的加密后的密钥。实现了定期对密钥进行更新,从而进一步保证发布消息的安全性。

3、在本发明实施例中,设备端,用于利用密钥对接收到加密后的控制指令进行解密,在解密失败后,从密钥回收表中调用原来的密钥,重新对加密后的控制指令进行解密,即在设备端更新密钥,而控制端仍未更新密钥的情况下,保证对控制指令的解密。

4、在本发明实施例中,控制端,用于利用密钥对接收到加密后的设备信息进行解密,在解密失败后,从云端业务服务器中获取新的密钥,利用新的密钥对加密后的设备信息进行解密,在设备端更新密钥,而控制端仍未更新密钥的情况下,保证对设备消息的解密。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1