打造一款神奇的智能家庭网关,完整系统解决方案
针对数据内容的安全性问题,采用了RC4算法对数据内容进行加密解密。它是一个可变密钥长度、面向字节操作的流密码,其基本思想为:首先初始化一个长度为256的S数组:依次对S[0],S[1],…,S[255]赋0到255的8位数值,输入可变长度密钥,根据密钥内容及长度建立临时数组T。然后根据数组T的内容置换S数组;最后将S数组按一定的方式转化成密钥流q。在发送端,依据密钥流q对原始数据"data"进行异或,即加密。在接收端,输入与发送端一样的密钥,运用和发送端同样的算法生成相同的密钥流对已加密的数据"datam"进行异或,即完成数据解密。
数据包的封装过程如图所示。图3中,层(1)表示UDP数据报。需要给每个终端设定不同的端口号作为源端口号,目标端口号都固定为服务器的端口号,消息长度为数据长度加UDP报头长度,校验和是伪IP头和从UDP头和数据得来的校验之和,数据为加密后的数据。层(2)表示为UDP数据报经过一次封装后转化成IP数据报,其中需要为每个终端分配一个IP地址,协议类型设置为UDP协议,长度为IP报头长度加UDP数据报长度。层(3)表示为IP数据报再经过最后一次封装转化为以太网帧。
图3 连接建立时握手数据包的封装
数据包的解析过程是封装的逆过程,系统接收到以太网数据帧后,首先检验它的校验和,如果校验和出现错误就丢弃该数据包,命令发送方重新发送。否则继续判断数据包的类型,确定是IP数据报后,根据数据报的格式进行进一步检验,最后再经过一次拆包获取UDP数据报的内容来决定下一步的工作,并发送一个确认数据包。
项目的软件整体设计流程如图4所示。其中,发送端应用层数据处理部分是从终端采集的数据按规定的数据格式进行处理后再加密。数据封装部分定义了put_ether(),put_ip(),put_udp()三个函数,功能分别是封装以太网帧、IP数据报和UDP数据报。网络驱动部分需要通过单片机PIC控制Ethernet以太网模块来完成,将以太网帧发送到接收端。接收端接收到以太网帧后,进行数据拆包。数据拆包部分分别定义了get_ether(),get_ip(),get_udp()三个函数,实现了检验和解析以太网帧、IP数据报、UDP数据报的功能。最后再将数据在应用层进行解密,来控制终端。
图4 软件整体设计流程
项目可行性分析
本项目采用当前最新的智能家庭网关技术方案,并对方案适当裁剪,以减小复杂性和成本。如项目的硬件平台采用单片机PIC和Ethernet以太网模块,价格低,功耗小且完全可以满足系统处理需要;软件设计是对UDP协议进行改进,避免使用复杂的TCP协议,数据加密、封装及拆包流程清晰简单,且使用UDP协议增加了信令及数据信息传输的实时性。
项目的创新之处
本项目的创新之处在于对UDP协议进行了改进,使其更适合于传输信令信息。并采用RC4算法对数据进行加密,一定程度保障了数据传输的安全。最后得出了低成本、低功耗、低复杂性、高安全性的控制方案,设计出的家庭网关适合用于普通家庭住宅。具体说来,将UDP包的数据部分进一步划分,定义不同的数据格式、类型以控制不同的终端设备。同时,网关还有自动控制功能,能够自动、及时处理一些不需要人工干预的操作,增加了易用性。
- Atheros为家庭网关提供802.11g方案AR2417(03-21)
- USB闪存盘驱动器与PIC微控制器的接口设计(04-04)
- 连结USB闪存盘与PIC微控制器的简单方案(04-05)
- 赛灵思联袂Apical为大批量HDTV市场提供创新的低功耗增强图像处理解决方案(01-12)
- 不用软件工具能开展设计吗?(02-28)
- Microchip收发器缔造完整 ZigBee 协议平台(01-24)