屈军锁, 石浩南, 马玉环
(西安邮电大学 通信与信息工程学院, 陕西 西安 710121)
嵌入式技术和网络信息技术的飞速发展使得物联网的应用领域更加广泛,网络化的远程控制已成为未来物联网控制系统的主要发展方向之一[1]。当联网设备出现问题时,对设备进行远程监测与配置,及时修正参数设置,可避免重大损失。
基于2G/3G通讯或基于485通讯的远程控制检测系统[2],将检测数据与上位机进行通讯时,需要定制专属的通讯协议和通讯方式,建设专用的通讯线路与其相对应的通讯硬件,不仅移动性差、接线复杂,而且不能随时随地对监测设备或者仪器进行监测和控制,对于复杂的现场环境也不适合布置以太网接插件和集线器等物理传输介质[3]。以2G/3G模块为核心的无线通讯模块传输数据还需要向运营商支付一定的费用,整个远程控制系统在使用过程中存在一定的维护成本。除此之外,现有的嵌入式Web系统设计大多需要建立在UCOS-II或Linux等操作系统中,该类系统内核较大,对已有的硬件设备升级改造要求较高[4]。
为了降低嵌入式Web服务器设计的硬件要求,增加设备工作效率的同时降低设备参数配置的复杂度,本文设计一种轻量级操作系统的嵌入式Web服务器。基于腾讯开源的轻量级物联网实时操作系统TencentOS tiny对服务器任务进行调度,采用内置LwIP协议栈的ESP8266作为通讯的中央处理芯片,并且内部加入椭圆曲线加密算法(elliptic curve cryptography,ECC)[5]对关键数据进行加密,以保障数据传输的安全性和可靠性。
TencentOS tiny操作系统主要由一个轻量级的实时操作系统 (real time operation system, RTOS)内核和多个物联网组件构成。RTOS内核组件可裁剪可配置,可快速移植到多种主流微控制单元 (microcontroller unit, MCU)及模组芯片上。物联网组件内部集成主流物联网协议栈MQTT、LoRa/WAN和NB-IoT等[6],方便各种物联网设备快速接入物联网云平台,可支撑智慧城市、智能水表、智能家居、智能穿戴和车联网等多种行业应用。TencentOS tiny操作系统的结构框架如图1所示。
TencentOS tiny的内核非常小巧,最少占用资源随机存储器 (random access memory, RAM)0.6 kB,只读存储器 (read only memory, ROM)1.8 kB,最低休眠功耗电流仅有2 mA,而且源码使用C语言编写,非常简单易懂。该系统可大幅降低物联网应用开发成本,提升开发效率,同时支持一键上云,对接云端海量资源。
图1 TencentOS tiny的结构框架
基于TencentOS tiny操作系统的Web服务器系统的主要目标是把传感器采集到的数据通过消息队列遥测传输(message queuing telemetry transport,MQTT)协议[7]上传到物联网云平台,然后通过Web服务器对硬件设备等进行参数配置,同时配置不同的物联网云平台环境,对相关的传感器设备进行远程控制。加入ECC加密算法对关键数据在传输过程前进行加密,进一步提高嵌入式系统的安全性。服务器系统总设计框架如图2所示。
图2 服务器系统总设计框架
主控MCU选用基于 ARM(advanced RISC machine)架构的中央处理芯片STM32F103ZET6;传感器部分选用温度湿度模块DHT11、可燃气体检测模块MQ-5和声光警报蜂鸣器等;无线终端部分选取ESP8266提供网关通讯服务。
ESP8266是低功耗的WiFi芯片,集成了完整的TCP/IP协议栈和微控制单元,内置LwIP协议栈[8],作为通讯的中央处理芯片,配置相关网络通讯函数,就能够把串口数据转换成符合TCP/UDP 通信协议的IP数据包在网络上传输[9]。终端不仅作为Web Server供用户终端部分使用,而且要能与监测部分通过串口进行全双工双向通信。无线终端部分在成功连接WiFi后,实时监听指定端口响应外部服务器的请求,解析数据完成本地存储,同时还需调用串口程序接收数据及其他处理程序。
用户终端部分可以为任意一台安装有Web浏览器的PC或者智能手机。最终,不仅可以在局域网内访问温度湿度采集操作平台,还可以在广域网内通过指定IP地址访问不同的物联网云平台,如OneNet或uNET。Web服务器整个过程可以在本地液晶显示器(liquid crystal display,LCD)模块显示,查看方便。
系统硬件连接如图3所示。
图3 硬件连接
采用B/S架构[10]设计嵌入式Web服务器。客户端发送超文本传输协议(hypertext transfer protocol, HTTP)[11]请求给服务器,产生HTTP响应,服务器根据对应的请求访问资源,将结果回应给客户端[12]。使用Get请求,在统一资源定位符(uniform resource locator,URL)[13]中添加想要获取的资源。客户端的浏览器把HTTP的请求报头和数据发送给服务器,服务器响应200 OK的状态码后将数据返回客户端,表示HTTP请求已经被正常处理。
嵌入式设备在接收到客户端浏览器的HTTP请求时,ESP8266通过串口2产生对应的HTTP响应,将保存在STM32 中Flash的超文本标记语言(hypertext markup language,HTML)网页发送给浏览器端,通过HTTP协议将网页与Web服务器建立连接,由此网页实现对Web服务器的远程控制和访问。服务器端响应接入流程如图4所示。
图4 服务器端响应接入流程
ECC椭圆加密算法[14]是基于椭圆曲线的公钥加密算法,使用较短的密钥可达到较高的安全保证。
将椭圆曲线定义在有限域F(p)上,F(p)中有p个元素0,1,2,…,p-2,p-1,p为质数,且x,y∈[0,p-1]。若选择小于p的两个非负整数a和b满足约束条件[15]
4a3+27b2≠0,
(1)
则带参数a和b的椭圆曲线Ep(a,b)被定义为(x,y)的解集,可表示为[15]
y2=x3+ax+b。
(2)
数据加密的过程就是在椭圆曲线Ep(a,b)上选取一点作为基点G,n是G的阶,在[1,n-1]之间随机选定整数k为私钥,根据K=kG[15]计算得到公钥K。发送端将Ep(a,b)、基点G和私钥k发送给接收端,接收端将关键数据表示为Ep(a,b)上一点域元素M,并随机产生随机数r,计算对应密文C1=M+rK,C2=rG[15],并将C1和C2传输给发送端,发送端再根据C1-kC2对密文解密,由此得到明文数据M。ECC加密算法保证数据无法被窃取的关键在于,公钥在网络中可相互交换传输,私钥则自己保留,不在网络上传输[16]。
根据上述加密过程对Web服务器中的关键数据进行加密。在数据发送前,采用ECC椭圆加密算法对温度和湿度等关键数据进行第一次加密,然后再依靠MQTT或HTTP等相关协议以及通讯规范,进行第二次加密。不同于其他Web服务器的加密方式,ECC算法的加入有效地保证了数据传输过程中的安全性。
在TencentOS tiny系统中建立采集信息、远端控制、显示、信息上传、加密和Web配置等6个任务,系统根据不同的优先级对任务进行调度,调度示意图如图5所示。
图5 系统调度示意图
将服务器端和浏览器端进行连接,通过嵌入式Web服务器配置上传平台的地址接口,修改内部参数,把采集到的温度和湿度等信息上传至不同的物联网云平台环境中,验证Web服务器对设备的远程参数配置功能;通过HTTP请求访问嵌入在STM32中的Web页面,对声光报警器进行远程控制,验证Web服务器远端控制功能;在无线侧数据通信中,均采用ECC对MQTT和HTTP协议中的温度和湿度等关键数据进行加密,验证关键数据的加密功能。
通过AT指令将ESP8266配置为客户端模式,进行WiFi的账号密码连接,连上网络后启动多连接并开启server创建端口号,ESP8266网络配置过程如图6所示。
图6 ESP8266网络配置过程
联网完成后,路由器分配给ESP8266的IP地址为192.168.43.217,通过浏览器对其访问,得到HTTP的Get请求,请求数据为HTML格式。当ESP8266收到请求后,就会获取在Flash中保存的HTML网页数据,把带着应答报文的HTML网页数据发送给浏览器。嵌入式Web服务器的登录界面如图7所示,网关信息设置界面如图8所示。输入服务器IP、服务器端口和设备ID等物联网平台配置参数信息,将温度和湿度信息上传至该物联网平台进行远程参数配置,验证结果如图9所示。
图7 Web服务器登录页面
图8 配置物联网平台参数
图9 温湿度上传物联网平台
由图9可以看出,当前温度为20 ℃,动态曲线表示当前湿度变化,在OneNet物联网云平台可以查看到实时变化的温度和湿度信息,说明数据成功上传物联网云平台,验证了Web服务器远程参数配置的功能。
在设备参数设置界面的参数1中输入特殊字段“001”,如图10 所示。Web服务器收到该字段信息后就会开启声光报警器,由此验证了Web服务器远端控制功能。
图10 远程控制声光报警器
选用a=3,b=2和p=79的椭圆曲线E79(3,2)对温度和湿度信息进行数据加密验证,E79(3,2)椭圆图像如图11所示。
图11 E79(3,2)的椭圆图像
根据该椭圆图像计算对应点的阶数n,每次加密都会随机选取一个基点G,通过基点G生成私钥和公钥等相关参数,对温度和湿度的明文数据进行本地加密,数据加密过程如图12所示。
图12 数据加密
将得到的加密数据在PC端进行解密,如图13所示,解密后得到温度为30 ℃,湿度为17,从而验证了Web服务器数据加密的功能。
图13 数据解密
轻量级嵌入式Web服务器由TencentOS tiny操作系统进行整体调度,以达到实时响应实时处理,处理的状态结果在本地LCD上显示,如图14所示。
图14 本地LCD状态显示
轻量级嵌入式Web服务器基于TencentOS tiny操作系统对Web服务器各个任务进行调度。采用内置LwIP协议栈的ESP8266作为通讯的中央处理芯片,对硬件和软件进行设计,并在STM32的Flash内部加入椭圆曲线加密算法对关键数据进行加密。验证结果表明,该服务器通过Web网页配置后可以将采集的温度和湿度信息远程传送到OneNet物联网云平台,并且可以远程控制声光报警器,有效地减小了设备参数配置的复杂度,降低了嵌入式Web服务器设计的硬件要求,ECC加密算法保证了关键数据在传输过程中的安全性。