APP下载

一种无线组网智能家居系统的安全通信方法

2022-08-06王海珍廉佐政谷文成李梦歌

实验室研究与探索 2022年4期
关键词:路由器密钥智能家居

王海珍, 廉佐政, 谷文成, 李梦歌

(齐齐哈尔大学a.计算机与控制工程学院,b.网络信息中心,黑龙江 齐齐哈尔 161006)

0 引 言

基于无线组网方案的智能家居系统,安装、扩展方便,使人们生活更加舒适和智能。大容量、低功耗、低成本是智能家居重要需求[1],Zigbee 技术最多可组成65 000个节点的网络[2],网络中的节点使用2 节干电池可支持一个节点工作6 ~24 个月,Zigbee 技术免协议专利费、芯片价格低[3],能够较好满足无线智能家居的应用场景[4]。消息队列遥测传输协议(Message Queuing Telemetry Transport,MQTT)作为一种低开销[5]、低带宽的即时通信协议[6],可为远程设备提供实时可靠的消息服务[7],为实现智能家居设备的远程控制提供了方便[8]。

伴随通信技术引入系统,智能家居也遭到大量网络威胁[9],用户信息在传输过程中容易被窃取、篡改[10],甚至被攻击。现迫切需要解决数据在传输过程中的安全问题[11]。文献[12]中提出物联网智能家居安全设计的必要性,分析了设计过程中存在的问题,如安全标准不统一、没有专门的安全预警机制等。文献[13]中依据智能家居系统的安全需求,采用SM4 对称密码算法,对传输的数据与接入认证信息进行加密,保证组网内的信息安全传输,但未实现移动端控制。文献[14]中对家居控制用户进行身份认证,并采用标准的AES算法对控制指令进行加密,提高了智能家居系统的安全,但系统的稳定性有待提升。综上所述,现阶段智能家居行业标准还不统一,系统资源有限,对复杂运算的处理能力不足,研究一种无线组网智能家居系统的安全方案,尤其重要。本文提出一种新的智能家居系统的无线组网方案,并研究了系统的安全通信方法。

1 系统安全通信方法

1.1 系统组网方案

系统组网方案如图1 所示,包括内网和外网,内网便于用户在家控制家居设备,外网用于实现远程控制。

图1 系统组网方案

内网包括2 部分,一部分实现家居信息采集、传输,该部分数据量小、传输距离短、节点多,采用ZigBee协议通信方式;另一部分通过WiFi通信。外网采用安全的内网穿透方案ZeroTier[15],并使用MQTT 协议进行远程控制。路由器作为MQTT 服务器,智能手机和控制器作为MQTT客户端,内网1 的控制器作为协调器,它和ZigBee终端节点都称为ZigBee 节点,它们组成ZigBee网络。ZigBee 终端节点数量可以依据采集信息情况确定,通过传感器采集室内的温度、光照等信息,并通过ZigBee 协议发送给控制器,控制器通过WiFi发送给MQTT服务器。智能手机是控制端,可以通过APP 发送控制信息给MQTT 服务器,MQTT 服务器再发送给控制器,控制器依据接收的控制信息,控制家居设备,如开启或关闭窗帘、开/关电灯等。由图1可知,系统的通信主要包括MQTT 客户端和服务器之间的通信,ZigBee网络的通信。

1.2 MQTT客户端和服务器之间的安全通信方法

本节的安全通信方法如下:MQTT 客户端通过用户名和密码登陆服务器,MQTT 服务器启用SSL 安全连接,处于外网的智能手机2 使用内网穿透方案ZeroTier与服务器组建虚拟局域网,实现加密的P2Pd安全通信。

(1)方案设计。设计MQTT客户端和服务器的安全通信方案,如图2 所示。

图2 MQTT客户端与服务器的安全通信方案

(2)平台构建。路由器上刷OpenWrt 系统,安装MQTT服务器mosquitto 软件,设置客户端用户名、密码,配置SSL,实现MQTT 客户端和服务器的安全通信,搭建ZeroTier 网络,安装ZeroTier 客户端软件,实现外网智能手机安全访问内网1 的控制器。主要步骤。

步骤1路由器刷OpenWrt 系统(以wnr2000v4型号的路由器为例)。

刷入与路由器型号对应的固件;

在PC 机上下载路由器型号对应的Uboot 和Openwrt(15.05 版本);

PC机上要搭建TFTP 服务器,将Uboot和Openwrt下载到路由器;

路由器分别刷入Uboot、OpenWrt系统。

步骤2服务器mosquito软件安装及配置。将路由器连到Internet,在PC 机的命令行窗口输入telnet 命令,telnet 到路由器,然后输入命令:opkg install mosquito,安装Mosquitto服务器;

配置MQTT 客户端登陆的用户名和密码,修改mosquitto.conf配置文件内容,不允许匿名用户登录,使用密码文件password_file、访问权限列表文件acl_file。

allow_anonymous false

password_file /etc/mosquito/pwfile

acl_file /etc/mosquittto/aclfile

添加用户名和密码

为MQTT客户端智能手机和控制器分别配置用户名和密码,设它们的用户名、密码都为supass,则配置用户名的命令:

mosquito_passwd-c/etc/mosquito/pwfile supass

按提示输入密码。

添加用户的主题控制权限

在/etc/mosquito/目录下,新建一个文件aclfile,添加命令,指定所有MQTT用户对所有主题都有读、写权限,以便订阅或发布家居系统的信息。

步骤3配置通过ssl通信。安装openssl;

产生证书文件。

①产生CA的公钥和证书文件openssl req-new-x509-days 36500-extensions v3_ca-keyout ca.key-out ca.crt

②为MQTT 服务器产生一个私钥文件server.key,并设置加密方式openssl genrsa-out server.key 2048 openssl genrsa-des3-out server.key 2048

③为MQTT 服务器产生一个签发证书的请求文件“server.csr”openssl req-out server.csr-key server.key-new

④为mosquitto server产生一个证书文件openssl x509-req-in server.csr-CA ca.crt-CAkey ca.key-CAcreateserial-out server.crt-days 36500

⑤重复②~④,为3 个MQTT 客户端生成证书文件。

步骤4搭建ZeroTier网络并测试。

在ZeroTier 官网注册账号;

分别下载OpenWrt 系统、智能手机操作系统对应的ZeroTier客户端软件版本,并进行安装;

使用在ZeroTier 官网注册的账号,登录个人账号工作面板,创建网络ID;

在路由器和智能手机上运行ZeroTier 客户端软件,加入创建好的网络ID;

在工作面板上授权各客户端的连接,分配虚拟局域网IP地址;

网络连通测试。在路由器上ping 智能手机IPv4地址,若建立起了P2P通道,则可以PING通。

(3)实现过程。智能手机和控制器都是MQTT客户端,且智能手机是控制端,它们之间通过路由器实现通信,智能手机和控制器都需要设计MQTT 客户端程序。依据1.2 节通信方案,采用Android Studio,为Android系统的智能手机,设计MQTT 客户端程序,采用Arduino开发环境设计控制器的MQTT 客户端程序[16]。智能手机2 采用ZeroTier 技术分配的虚拟局域网IP 地址,进行网络连通后,从手机APP 发布的MQTT 消息内网穿透后,直接以P2P 方式传到路由器,路由器上MQTT 服务器收到这个消息后,转发给控制器,以便控制内网1 中的ZigBee终端节点。

1.3 ZigBee网络的安全通信方法

依据1.1 节,控制器和ZigBee 终端节点组成以协调器为核心的星型网络,通过改进的Z-Stack 协议栈AES加密算法实现它们之间的安全通信。Z-Stack 协议栈中文件nwk_global.c 定义了默认的初始轮密钥,所有ZigBee节点开启AES加密算法后,可以设置协调器节点向各个节点发送初始轮密钥,它们之间通过AES加密算法通信,提高安全性。但是AES 加密算法的初始轮密钥不具有随机性,容易破解,因此,本节提出AES 初始轮密钥的产生方法,如图3 所示,初始轮密钥由控制器产生,每间隔一定时间,或重启后轮密钥重新设置,由Logistic、PWLCM 混沌映射交叉扩散生成,为了保证密钥的随机性,Logistic 混沌映射、PWLCM混沌映射分别迭代若干次。控制器产生轮密钥后,将其通过MD5 函数生成数字签名,并将轮密钥及其数字签名发送给其它所有Zigbee 节点,ZigBee 节点接收后,进行数字签名验证,验证无误后,便可将轮密钥作为初始轮密钥进行AES加密或解密。其中,初始轮密钥产生的主要步骤如下。

步骤1设置混沌系统的参数。

图3 AES初始轮密钥产生方法

随机产生一个取值范围为(3.569 945 6,4]的数作为Logistic混沌系统的控制参数μ;

随机产生一个取值范围(0,0.5]之间的数作为PWLCM混沌系统的控制参数;

产生两个取值范围为(0,1)之间的随机数,key0、key1,分别作为Logistic 混沌系统、PWLCM 混沌系统迭代的初值。

步骤2混沌系统迭代至混沌状态。

Logistic混沌系统按步骤1 设置的参数分别迭代100 次,消除暂态的影响,处于混沌状态。

步骤3产生AES初始轮密钥。

在前面Logistic 混沌映射迭代基础上,再迭代16次,将这16 次Logistic 映射迭代产生的结果分别保存在PWLCM(i)中,其中i=1,2,…,16;

在前面PWLCM 混沌映射迭代基础,再迭代16次,将这16 次PWLCM映射迭代产生的结果分别保存在Logistic(i)中,其中i=1,2,…,16;

将PWLCM(i)、Logistic(i)转换成整数序列,即乘以108,并对256 取余;

将整数序列y_PWLCM(i)、y_PLogistic(i)分别转换成4 ×4 矩阵p_mat、l_mat,然后将两个矩阵对应元素进行异或,作为AES加密的初始轮密钥。

2 实验结果与分析

2.1 MQTT客户端程序设计

以Android 手机为例说明MQTT 客户端程序的设计。在Windows 环境下构建Android Studio 软件开发环境,即安装Java开发工具包JDK1.8;配置JDK环境变量;安装Java 集成开发环境eclipse;安装Android SDK;为eclipse 安装ADT 插件。在Android Studio 开发环境下设计程序,该程序主要包括登录模块和主界面,实现家居系统中的环境参数信息和非法入侵监测信息的查看,或者向家居系统发送控制指令。登录模块的功能是建立用户和服务器的SSL 连接,如果连接成功,跳转到客户端主界面;否则返回登录失败信息。主界面如图4 所示。

图4 MQTT客户端程序主界面

2.2 改进的AES算法实验结果与分析

采用的实验环境:内存8 GB,处理器i7-6700HQ,CPU2.6 GHz,操作系统Windows 10,仿真软件为Matlab R2014a。使用标准AES 算法默认密钥加密解密运行结果如图5 所示,本文算法产生初始密钥的运行结果如图6 所示。

图5 使用标准AES算法默认密钥加密解密运行结果

图5、6 中命令窗口最后3 行为处理的数据,其中第1 行“温度:20 ℃;光线暗,拉上窗帘”为传输的原始数据,第2 行为加密后的数据,第3 行为解密后的数据。对比2 种算法的运行时间,都在0.63 s 左右,而本文算法加密时间较短,见表1。

表1 算法运行时间对比

3 结 语

针对智能家居面临的数据安全问题,本文提出一种无线组网的智能家居系统,采用WiFi 和ZigBee 无线技术通信,将路由器部署为MQTT服务器,路由器上配置安全方案,实现MQTT 客户端和服务器之间的安全通信,成本低、安全性好。同时基于ZigBee 芯片设计的家居设备节点之间通过ZigBee 技术进行通信,为了保证其安全性,启用Z-Stack 协议栈的AES 加密算法,并基于Logistic混沌系统和PWLCM混沌系统进行交叉扩散,产生AES 初始轮密钥,改善AES 算法的安全性,经过实验分析,相对标准AES算法,改进的加密算法运行时间较短,有可应用性。

猜你喜欢

路由器密钥智能家居
买千兆路由器看接口参数
幻中邂逅之金色密钥
幻中邂逅之金色密钥
维持生命
路由器每天都要关
路由器每天都要关
密码系统中密钥的状态与保护*
基于PLC的智能家居控制系统研究
TPM 2.0密钥迁移协议研究
基于Zigbee的无线通信技术在智能家居中的应用