0 引言
随着我国经济实力的增长和科学技术的进步,越来越多的智能化、自动化设备走进人们的生活,为人们服务,走进企业工厂,为企业节省人力,提高产能,创造更大的效益。设备虽然智能,但是还是不能完全脱离人的控制,当设备运行出现问题时需要人为的干涉,同时某些设备的运行信息有助于更高效利用这些设备。为此,设计了这套基于单片机采集和WiFi传输的电气设备无线监控系统,用于对这些设备的工作状态进行实时监测,记录设备的开关机状态,可控制继电器使设备断电,以避免造成不必要的损失。该系统能否正确帮助操作人员对设备进行操作和分析,信息传输的安全与可靠起到了至关重要的作用。本文主要介绍了系统设计中数据安全的问题,将从数据传输过程中的安全设计和数据安全措施两方面进行阐述。
1 系统总体设计方案
本监控系统由单片机监控模块、WiFi传输模块、监测网站三部分组成。监控系统的整体结构如图1所示。
该系统以CC2430单片机和WiFi模块为基础[1],以ASP.NET设计监控网站,SQL Server 2005作为服务器数据库,所完成的主要功能是实现设备工作状态的远程监测。单片机监控模块可以检测到设备的运行、关闭等状态,并记录各状态发生改变的时刻。检测到的设备状态信息以及相应的设备编号将通过WiFi模块实时传送到服务器数据库并在监测网站的网页上显示。当服务器停止工作时,单片机将继续存储收集来的信息于Flash存储器中,当服务器恢复工作时自动向单片机存储器调取数据并存储于数据库。本文还设计了符合系统的通信协议,应用了数据加密技术保证数据的准确性和安全性。
2 SQL Server 2005数据库库表
数据库的设计对于整个系统而言起着不可替代的作用,完善的数据库结构可以让整个数据存储脉络清晰,不至于引起不必要的混乱。本系统的数据库表分为三个:用户信息表,节点信息存储表,控制命令表。
2.1 用户信息表
用户信息表是与用户登录相关的表,登录页面与用户信息表相关联。当用户登录时,通过SQL语句、数据库搜索引擎在数据库中搜索与注册用户信息相符的信息,如果信息相符,返回相应的数据,然后再根据权限登录到不同的页面;如果是管理员则登录管理员界面,可以向各节点发送命令。如果没有相应的数据信息,将不能登录。用户信息表包括:用户名、用户密码、用户权限和用户邮箱。用户信息表如表1所示。
2.2 节点信息存储表
节点信息存储表是系统中最关键的一张表,它记录了所有设备的所有开关机信息和状态信息,是为管理员有效管理设备提供重要参考的一张表。系统各个节点一直检测设备的状态,当设备状态发生改变时,将发送信息到服务器,网站接收各个节点传送过来的信息并根据不同的数据类型存储于表中。节点信息存储表字段包括:设备号、事件时间、设备状态。节点信息存储表如表2所示。
2.3 控制命令表
管理员要想控制各个节点需要在监测网站上输入控制命令,而控制命令不能由网站直接发送到节点,首先要将控制命令存储到数据库再由数据发送应用程序至节点。将控制命令保存到数据库同时也是历史信息的保存,对于系统运行的分析将提供一定的信息资源参考。控制命令表字段包括:设备号和控制命令。控制命令表如表3所示。
3 数据安全问题设计
3.1 通信协议的制定
在该系统中信息的安全可靠决定了对设备的控制和使用效率的分析,只有在数据信息正确的基础上才能实现整个系统的功能。所以本文将重点介绍系统设计中的数据安全措施。数据安全不仅是数据库中数据的安全,还要保证节点传送来的数据是准确可靠的[3],因此本文制定了适合本系统的通信协议,分为采集数据格式和命令消息格式,下面将分别对其进行阐述。
3.1.1 采集数据格式
为了能够将终端节点采集到的信息有效准确地传送给服务器,需要定义采集数据格式如表4所示。
开始标志:接收方判断一个消息开始的表示,为了避免引起混乱,必须不同于其他信息,在这里设置为AAFF。
设备号:各节点设备的编号,用来知道是哪个设备采集来的数据。
数据长度:在本设计中,一般情况下要传送的数据信息的长度是固定的。
数据类型:01表示状态改变时间;02表示设备状态。
数据:采集的设备状态和状态发生时的时间。
停止位:数据包结束标识符。
3.1.2 命令信息格式
命令信息格式如表5所示
起始位:设置为AAEE。
设备号:接受节点的编号。如果设备号为EE,则表示该命令需要广播给网络中的所有节点;如果设备号是E1,则表示该命令需要广播至一组的路由节点;如果设备号为E2,则表示该命令需要广播至二组的所有节点;如果是E3,则表示该命令需要广播至三组的路由节点;如果是某个节点的编号,则该命令只针对这个节点。
数据长度:命令帧的数据长度也是固定的。
命令标识符:用来区分各种不同的命令,如表6表示。
结束标识符:AA99
通信模式采取了实时上报和应答相结合的模式。实时上报模式,就是每个节点的状态在发生改变时数据会及时发送到服务器数据库,这样就保证了监测网站可以准确地把握每个节点的当前工作状态,进而可以准确的进行控制。命令-应答模式,是用户根据需要,对节点发出命令,节点收到命令后,根据命令内容作相应的处理。命令-应答模式是一个双向的数据通信系统,其具体步骤如下所示:
(1)用户发送命令给目标节点。
(2)目标节点解读命令,执行命令。如果目标节点收到未定义的命令,则认为是无效的数据包,目标节点会通知用户信息无效;如果目标节点处理命令信息失败,则协调器发送失败的应答信息,用户需要重新发送命令。
(3)完成。
3.2 节点及服务器异常处理
3.2.1 节点异常处理
在网络运行中,节点可能会由于硬件问题或者遭受碰撞攻击等,导致丧失工作能力。用户可以通过预设的命令,在网络中进行广播,节点收到信息后进行回复,当有节点没有回复的时候再进行通信,如果三次都没有回复,则认为该节点出现了故障,需要从网络中移除或维修。
3.2.2 服务器异常处理
理论上,服务器应该是24小时工作,但是很难保证不会有意外情况的发生,如断电、数据库维护等都会使服务器暂时停止工作。由于各节点采用的是实时上报模式,所以服务器停止工作时各节点的数据将不能发送到服务器数据库。如果节点单片机不先将信息进行存储将导致数据的丢失。
在单片机检测模块本文设计采用了16 MB内存的Flash存储器用于对采集的信息进行存储,Flash存储器掉电后不会自动擦除数据,所以能保障数据在故障时的安全。当节点采集到数据时将试图发送到服务器数据库,如果数据发送成功,则服务器方面将把信息存储在网络数据库,同时,单片机将发送成功的数据保存在Flash存储器中;如果数据发送失败,则在数据包加一个标识位1,并将该条信息保存至Flash存储器中。单片机定期遍历Flash存储器中的数据,将标识位为1的信息重新发送,发送成功后取消标识位存储于Flash存储器中,发送失败则等待下次发送。
由于Flash存储器的内存有限,所以不能把所有的数据全部都存储于Flash存储器中,本文设计定期擦除Flash存储器中的已经发送成功的数据,未发送成功的数据将继续保留,直至发送成功。如图2所示。
为了确保没有数据的丢失,从检测网站可以任意调取各个节点任何时间段的信息,管理员可以在网站管理界面输入想要的时间段数据至某一个或几个节点,节点接收到命令后从Flash存储器中调取相应信息发送至服务器。这样直接从Flash存储器调取数据将比从数据库中调取信息更加准确可靠。
3.3 数据加密
本系统中所采用的CC2430硬件支持128 bit的AES加密算法,它包含一个AES协处理器,通过AES协处理器完成数据的加密和解密操作,减轻了内置CPU的负担。在Z—Stack协议栈中,这个加密算法默认是关闭的,使用时需要开启这个功能:首先将f8wConfig配置文件中的DSECURE值设置为1,这是一个总按钮;然后将ZGlobal.c中的zgPreConfigKeys值由FALSE改为TRUE;最后在函数nwk-global.c中设置一个128 bit的密钥。启动数据加密功能,发送数据的节点将明文经过AES-128加密算法加密后,使其变成密文传送出去。接收节点在接收到复杂的密文后,使用相同的秘钥和AES-128解密算法,将其还原为明文,保证了数据在传输过程中的安全。加密流程如图3所示。
4 实验结果
本实验以河北大学物理学院实验设备作为实验对象,对不同实验室的不同设备进行编号,同时进行监测。实验表明该系统能够对多个设备的运行状态进行监测,并且该系统具有良好的稳定性,数据信息可以安全可靠地传输到服务器,同时进行了服务器停止工作实验,当恢复工作时可以将关闭时间的节点信息调出。
5 结论
本文首先介绍了检测系统的总体设计,之后从通信协议的制定、节点和服务器异常的处理、传输数据的加密及存储过程的设计四方面阐述了系统对数据安全方面的设计。通过实验检测,本文的设计可以使系统在数据安全方面得到很大的改善,确实保障了数据的全面与可靠,可以为管理人员提供更有效更可靠的数据作为管理依据。