基于AES算法的远程水质监控系统设计

2019-09-19 07:33
测控技术 2019年6期
关键词:字节密钥终端

(1.江南大学 轻工过程先进控制教育部重点实验室,江苏 无锡 214122;2.江南大学 物联网工程学院,江苏 无锡 214122)

在人类生产和生活中,水是不可替代的重要资源。然而,在人类活动中排出的大量污水对环境产生了巨大危害,人类面临的水污染形势越来越严重。因此,迫切需要设计一种水质环境监控系统,以便实时了解水质状况,调控水质,减轻水污染带来的危害[1]。另一方面,随着大数据时代的到来,研究人员从大数据中提取有价值信息的应用变得非常丰富,给人们的生活带来了极大便利。然而,随着数据泄露事件的屡屡发生,对信息安全的要求也在不断提高[2]。保护信息安全、防止数据泄露、保证系统的正常运作是当前水质监控系统的一项重点要求。

传统的人工仪表测量操作,存在耗时耗力、监测周期过长以及数据分析复杂等缺点。为解决以上问题,国内已经开展了对水质监测的应用研究。韩玉冰等人提出了一种针对水产养殖的水质监测系统,该系统应用了无线传感器网络,可以对大范围区域进行实时监测,而且布线简单方便[3]。张龙苗等人设计了一种基于Zigbee技术的水质监测系统,该系统能够实时监测医院供水管网的水质,具有通信可靠、应用性强的优点[4]。董浩等人以STM32为处理器,结合嵌入式实时系统与物联网技术,设计了一种微型水质监控系统,用以监测家庭废水的水质,具有很强的实用性[5]。但上述水质监测系统都忽略了信息安全方面,数据完全透明化地在网络中进行传输,存在被窃取记录的风险。故以温度、pH值、溶解氧浓度为监测对象,设计了一套水质监控系统,并增加了AES加解密环节,提高了系统安全性,可以有效降低信息泄露的风险。

1 AES算法简介

AES是由美国国家标准与技术研究所确立的传统对称密码算法[6]。它属于迭代型分组密码算法。其数据分组长度和密钥长度并非唯一,而可以指定为128位、192位、256位,相对应地,需要进行10轮、12轮、14轮迭代加密运算。每轮迭代运算都是由4个变换组成[6]:S盒变换(SubBytes)、行移位变换(ShiftRows)、列混合变换(MixColumns)、轮密钥加变换(AddRoundKey)。

由于所设计的系统中终端节点资源限制,所以节点中运行的密码算法是占用资源较低的128位AES算法(简记为AES-128)。

1.1 AES算法整体实现

在AES-128加密过程中,数据分组长度为128位,需要将明文划分为若干个16字节的明文数据段。以其中一个数据段P为例,16个字节数据记为Px,其中x∈[0,15]。按照从上到下,从左至右的顺序依次排列成4×4的矩阵,并将它复制到状态矩阵State中。在随后的10轮迭代变换中,矩阵State会被不断更新,直到最后一步变换结束,再将状态矩阵复制到密文矩阵C中。取出矩阵C中的内容,就可以得到加密内容。

与加密相比,在解密过程中,除了轮密钥加变换不变之外,对其他三种变换求逆变换即可[7]。

1.2 AES迭代变换介绍

1.2.1 S盒变换

使用一个被称为S盒的表格,对状态矩阵State中的每一个字节进行查表替换操作。在替换某一字节时,先将该字节的高4位作为行值,低4位作为列值,然后带入S盒中查找出对应的元素并替换该字节。而S盒中的元素则结合了有限域GF(28)乘法逆元及可逆的仿射变换矩阵[8]。

1.2.2 行移位变换

行移位变换是将状态矩阵State中的每一行进行固定单位的循环偏移,而偏移的单位是字节。通常的操作步骤是状态矩阵的第1行保持不变,第2行向左循环偏移1个字节,第3行向左循环偏移2个字节,第4行向左循环偏移3个字节[8]。

1.2.3 列混合变换

列混合变换可以对状态矩阵State的各列起到混淆的作用。将状态矩阵State的列视为GF(28)上的多项式s(x),变换公式为

s′(x)=c(x)·s(x)mod(x4+1)

(1)

其中常数多项式c(x)={03}·x3+{01}·x2+{01}·x+{02},多项式系数都是以十六进制的形式表示的[8]。

1.2.4 轮密钥加变换

轮密钥加变换就是将轮密钥与状态矩阵State进行异或操作,而轮密钥则是由密钥K通过密钥扩展算法得到的[8]。

1.3 AES密钥扩展算法介绍

对于AES-128,密钥长度是16个字节,通常将密钥K的每个字节按照从上到下、从左至右的顺序表示成4×4的矩阵,将矩阵的每一列视为一个字,并且依次命名为W[0],W[1],W[2],W[3]。密钥扩展算法可以将4列原始密钥扩展成44列的密钥W[i],其中i∈[0,43]。扩展算法有两种计算方式,具体等式如下:当i的数值不能被4整除时,则第i列密钥由式(2)确定[8]。

W[i]=W[i-4]⊕W[i-1]

(2)

当i是4的倍数时,由式(3)确定第i列密钥。

W[i]=W[i-4]⊕SubBytes(RotBytes(W[i-1]))⊕Rcon[i/4]

(3)

式中,⊕表示异或运算;RotBytes函数是循环移动一个字节;SubBytes则是对每个字节进行S盒替换;Rcon[i/4]为轮常量[8]。

2 系统总体架构设计

整个系统的架构主要包括终端节点、服务器端以及用户端三个部分。终端节点主要将采集的数据进行AES加密,然后通过GPRS无线传输模块传输至云服务器。云服务器通过运行后台程序,将接收到的数据存储到MySQL数据库中,并为用户端提供访问接口。用户可以通过网页浏览器登录访问云服务器,实时监控水质数据。另外,为了扩展控制器件的接入,终端节点还增加了继电器控制功能,方便用户进行远程控制。

3 终端节点件设计

终端节点主要包括电源模块、处理器模块、GPRS无线通信模块、传感器模块、继电器控制模块,其硬件结构如图1所示。主要功能是对水质温度、pH值、溶解氧浓度、电导率、余氯等信息的采集、加密、发送,同时负责接收对继电器的控制指令,并做出匹配的动作。

3.1 处理器最小系统

终端节点采用STM32F103系列的单片机,该单片机具有低功耗、低电压、外围电路简单等优点。同时具

图1 终端节点硬件结构图

有多路ADC、UART等接口,可以满足多种应用需求。在终端节点的正常工作状态下,其工作时钟由外部8 MHz的晶体振荡器提供。

3.2 GPRS无线通信模块

为了将采集到的传感器数据及时可靠地传到监控中心,在终端节点上搭载了SIM800C组成的GPRS模块,实现与服务器端的无缝连接。该模块支持4种频段传输,具有丰富的AT指令集,功能强大,操作简单。该模块采用12 V供电,通信接口为3.3 V TTL电平,与STM32的UART2引脚交叉相连。

3.3 传感器模块

3.3.1 pH值传感器调理电路

本系统采用E-201-C塑料外壳式pH电极测试水质的pH数据。当电极放置在待测液体中时,电极会受待测液体的酸碱度影响而产生不同的DC电压,而处理器可以根据电压值计算得出相应的pH值。鉴于这种微弱信号并不符合处理器自带的ADC输入电压要求。故需要设计信号调理电路对信号进行放大调整,信号调理电路如图2所示[9]。

图2 pH值传感器调理电路

3.3.2 温度传感器调理电路

温度传感器采用了Pt100热敏电阻器,该传感器线性度良好,平均每变化1 ℃,阻值就会变化0.38 Ω。鉴于电阻变化小,为了削减长距离通信环境下线路电阻带来的测量误差,该电路采用不平衡电桥的方式来测量温度,并采用单电源仪表运放AD623放大信号。温度传感器调理电路如图3所示。

图3 温度传感器调理电路

3.3.3 溶解氧和余氯传感器通信电路

本系统选用了DOB-300C数字型溶解氧传感器和DLS-600数字型余氯传感器。这两种传感器都支持RS485通信,并遵循标准的Modbus协议。故需要根据MAX3485芯片设计通信电路,进行逻辑电平与RS485电平的转换,从而实现数据的正常采集。通信电路如图4所示。

图4 溶解氧传感器通信电路

图4中RO是接收端,DI是发送端,两者连接处理器的外设UART1。RE和DE分别为接收和发送的使能端,通过处理器的一个管脚可以控制RS485总线上的数据收发[10]。而在测量时,为保证正常通信,需要将两种传感器的通信线并联接入终端节点的RS485通信端口。

3.3.4 电导率传感器电路

本系统采用DJS-1型铂黑电导电极对水质电导率进行测量,它的电导池常数是1.023,最佳的工作频率是20 kHz左右。为了减少测量时出现的极化效应带来的误差,本系统将交流激励信号加到电极的两端。产生交流激励信号的电路如图5所示。

在测量时,将电极放置到水样中,并将图5中的Vpluse信号接到电导电极上。只需要测出电极间的电压和回路中的电流就可以计算出电导率,而电导率是

图5 交流激励信号的产生电路

由电流值除以相应的电压值得到的。另外还需要将输入和输出的交流信号转换为直流信号,这样才能方便处理器进行ADC采样[9]。

3.4 继电器控制电路

本系统设计了4路继电器控制电路,其中一路如图6所示。K1为继电器开关,Q1为NPN型三极管。当Relay1接口输入低电平时,三极管处于关断状态且继电器不工作。而接入高电平时,经过限流电阻R14分压后,使得三极管处于导通状态。此时,继电器中的磁感应线圈通过电流,产生磁场以拉动开关,使得接口Vout输出12 V电压。

图6 继电器控制电路

4 系统软件设计

4.1 通信数据帧格式设计

在终端节点、服务器和用户端之间传输数据时,数据帧格式的设计非常重要。为识别传输过程中发生数据帧丢失的情况,在帧格式中增加了CRC校验部分。表1描述了终端节点与服务器之间通信的明文数据帧格式,从表1中可以看出,明文数据帧格式包含6个部分,数据单位为字节。

表1 明文数据帧格式

而用户端与服务器之间的数据帧格式与表1中无太大差别,只是将设备号替换成用户名和密码两部分。

4.2 终端节点软件设计

终端节点是基于Keil μVision4集成开发环境,采用C语言编程开发。软件部分主要包括数据采集和数据解析部分。而数据采集部分需要满足触发条件才会采集一次数据并加密上传。触发条件主要有两个,即定时器定时中断和接收到采集指令。

在设备初始化过程中,处理器会读取存储在内部闪存中的采样周期T1,并启动定时器,当采样周期到达时会触发中断,并按照温度传感器,pH传感器和溶解氧传感器的顺序进行采集。随后将以4.1节中的数据帧格式打包所有的采集数据,并进行加密,最终通过GPRS将完整的加密数据发送给服务器。数据采集流程如图7所示。

图7 数据采集流程图

当服务器通过网络向终端节点发送数据时,GPRS接收中断触发,待接收完毕后,进入GPRS数据解析任务,该任务首先对接收的数据包进行解密操作,并进行不同的响应。若接收到的是控制继电器指令,则对相应的管脚置位;若是数据采集等其他有效指令,则进行指令处理。数据解析如图8所示。

图8 GPRS数据解析流程图

4.3 水质监控管理系统Web服务器设计

Web服务器是基于PHP+MySQL编程开发的。用户可以通过网页浏览器访问服务器,登录水质监控管理系统。该管理系统由数据显示模块、节点管理模块、控制模块、报警模块等组成。数据显示模块可以通过折线图或者表格实时显示监测的水质参数信息;节点管理模块可以绑定或者删减用户的终端节点;控制模块可以对指定终端节点上的继电器进行开断操作;而在报警模块中,用户可以设置各类监测数据的报警阈值,当某时刻数据超过阈值时,界面会弹出报警提示。

5 系统实验

对水质监控系统的加密通信过程进行实验测试。选择一组未知的水样,将所有传感器置入水中,终端节点将传感器采集的数据加密后上传至服务器,经过解密后存储在数据库中,用户通过浏览器监控水质参数。系统监控界面如图9所示。测试结果表明,系统能够稳定运行,数据传输性能良好,数据加密和解密处理及时。

图9 系统监控界面图

为了验证系统测量的准确性,以温度测试为例,采用实验室水温计和系统中温度传感器对3种不同温度的水样进行测量对比,测试结果如表2所示,结果表明,温度的相对误差小于4%,系统测量准确性较高。

表2 水温值测量结果

6 结束语

利用AES加密技术设计了一套水质监控系统。采用AES加密技术,将控制指令和采集到的水质参数进行加密传输,可以降低数据泄露和被篡改的风险。同时使用GPRS模块远程通信,用户可以通过网页浏览器实现对水质数据的实时监测和节点的控制。实验表明,该系统可靠性高,实时性好。下一步工作的重点是对终端节点的能耗和水质参数的测量精度做研究改进。

猜你喜欢
字节密钥终端
幻中邂逅之金色密钥
No.8 字节跳动将推出独立出口电商APP
密码系统中密钥的状态与保护*
X美术馆首届三年展:“终端〉_How Do We Begin?”
通信控制服务器(CCS)维护终端的设计与实现
No.10 “字节跳动手机”要来了?
基于MSP430的四旋翼飞行器的S-BUS通信协议的设计与实现
TPM 2.0密钥迁移协议研究
GSM-R手持终端呼叫FAS失败案例分析
一种对称密钥的密钥管理方法及系统