从开发的角度对zigbee安全的杂谈
说起zigbee应该很少人听过,这个B名字怪怪的。。。
以前开发不懂开发的思想,前前后后花了很久时间,现在回想起来,突然想从安全的角度来理解数据的传输
废话:伴随科技的快速演进,物联网(The Internet of Things,IoT)概念再次兴起,人们身边的日常用品、终端设备、家用电器等也逐步被赋予了网络连接的能力。然而作为连接上述设备所广泛使用的重要无线互联标准之一,ZigBee技术却于近期召开的2015黑帽大会(BlackHat2015)上被曝出存在严重的安全漏洞,引发了业内的广泛关注。智能产品种类越来越多,运用在智能家居上的技术也越来越成熟,Zigbee是最早应用在智能家居领域的传输技术,其稳定性强、高保密性、低功耗、低成本的优势成为家庭自动化应用首选。现在想从我的一个项目顺便普及一下zigbee。。。下面是项目论文介绍,排版不是很好
这是万恶的分割线
--------------------------------------------------------------------------------------------------------------------------------------------------
基于ZigBee的山体滑坡远程监控系统
-*-这里隐藏些个人信息-*-
摘 要:针对现有山体滑坡预警系统中有线传输、人工播报等弊端,采用MPU6050三轴加速度传感器设计一种低功耗、高精度的山体滑坡远程监控系统。系统通过ZigBee无线传感器网络采集数据,并利用卡尔曼滤波算法修正测量中的误差以提高数据精度。通过物理原型测试,系统运行顺畅,符合设计要求。
关键词:山体滑坡;ZigBee;监控;卡尔曼滤波算法
The mountain landslide remote monitoring system based on ZigBee
Liu Jian, Chen Haoyu, Huang Kai, Hong Wei, Lai Binbin, Wang Huabin, Huang Zhen
(Department of Computer Science, Huizhou University, Huizhou, 516007 Guangdong, China)
Abstract: In order to overcome the issues like wired transmission and manual notification in conventional pre-warning systems for mountain landslide, this paper proposes a low-power and high-accuracy remote monitoring system for mountain landslide. The system was designed with a three-axis acceleration sensor MPU6050 and used a wireless network to collect sensor data and utilizes Kalman filtering algorithm to reduce deviation in the result to produce higher accuracy. After tested with physical prototype, the system ran stably and well met the design requirements.
Key words: Mountain Landslide, ZigBee, Monitoring, Kalman Filtering Algorithm
1 引言
我国是一个地质灾害频繁发生的国家。主要灾害包括洪涝、台风、山体滑坡、干旱等。其中山体滑坡灾害的影响最为严重。[1]近年来,在预防山体滑坡工程方面,主要以山区地质结合滑坡变形特征来获取受监测滑坡体所处的变形阶段[2]来建立评估和预警体系。
文献[3]和文献[4]对山体滑坡产生的原因提出:滑坡形成的过程分3个大阶段:初始变化期,稳定变化期,剧烈变化期。边坡的形变是造成山体滑坡的直接因素。根据系统需要,采用MPU6050三轴加速度传感器采集山体环境信息,以网络的终端路由器节点为簇头构建传感器网络,通过GPRS网关将传感器数据发送给服务器并进行处理,并通过前端显示为控制站用户提供预警判断。
将无线传感器网络(WSN)应用于山体滑坡监测已成为各国研究开发的重点,一些科研院所和公司在这方面进行了大量的工作,做出了丰硕的科研成果和产品。结合ZigBee通信技术,实现对监测区域的远程实时监控,提高山体滑坡预警的准确性,可以及时的发出警报,争取更多的应急时间。[5]
文献[6]认为,采用低功耗的廉价无线传感器,能够提高监测系统部署成本,实现监测系统大范围推广。方案经过滑坡演变的理论分析,得出较精确的滑坡预报时间,以便有关部门能够提前对将要发生的危机情况采取相应的处理措施,能够有效地保护国家和人民的生命财产。
本系统克服了山体监测区无人值守,远距离布线以及数据传输的问题,通过ZigBee无线低功耗多传感器网络建立无线监测系统对山体状态进行实时监测和预警,方便了控制站工作人员远程实时得到高可靠性的监测数据。
2 系统架构
山体滑坡监测系统由无线传感器监测网络、GPRS网关和远程监控中心三部分组成。硬件由ZigBee模块、GPRS模块、MPU6050三轴加速度传感器、电源等组成。实物模型如图1所示,具体系统架构如图2所示。
图1模型实物图
图2系统架构
2.1 ZigBee模块
方案采用TI公司的CC2530芯片。它能够以非常低的材料成本建立强大的网络节点,具有不同的运行模式,使得它适应超低功耗要求的系统。运行模式之间的转换时间进一步确保了其低功耗的特点。具体结构如表1所示。[7]
表1
ZigBee应用层(应用框架、ZDO) |
|
ZigBee应用支持子层 |
|
ZigBee网络层 |
|
IEEE802.15.4 MAC层 |
|
IEEE802.15.4 868/915 PHY层 |
IEEE802.15.4 2.4G PHY层 |
系统终端是一个半功能节点,主要功能是请求加入网络,接收来自主节点的信息数据。节点通电后,会进行硬件和ZigBee协议栈初始化,自动请求加入网络,一旦成功加入网络,终端节点按照其内部定时器控制,按规定时间(设置每隔2秒)向协调器节点发送一次数据,其他时间则处于休眠状态。[8]
2.2 GPRS模块
系统采用华为 GTM900-C 无线模块,模块硬件框图如图3所示,这是一款两频段GSM/GPRS无线模块。它支持标准的AT命令及增强AT命令,实现ZigBee网络向以太网的转换,是高速数据传输等各种应用的理想解决方案。
图3 GPRS模块硬件框图
2.3 MPU6050传感器模块
系统采用的MPU-6050三轴加速度传感器为全球首例整合性6轴运动处理组件,传感器结构如图4所示。它集成了3 轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器。相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的封装空间。
图4 MPU6050传感器
3 系统设计
3.1传感器数据采集设计
无线传感器网络有星型结构,簇结构和网状结构。方案根据监测区域的实际情况布置终端节点组建监测网络采集环境信息。具体数据传输处理流程如图5所示。
图5数据传输流程图
3.2 PC上位机软件设计
PC上位机采用C#开发,上位机接收处理来自服务器传送的数据并在前端显示,为控制站提供了直观化、人性化的界面。
该软件采用边坡倾斜角Angle值作为预警依据,设定山体当前Z轴边坡的倾斜角Angle值为正常状态。文献[2]指出,滑坡学包含滑坡孕育、发展、变形破坏的过程、规律以及其影响因素。需要采集大量的数据建立预警系统。
本实验通过物理原型模拟山体边坡发生断裂的情况,程序设置角度超过正常值范围+2度(通过物理模型多次实验,发现角度超过正常值+2度预警效果最好,所以本系统设置阈值为+2度)为边坡发生断裂的异常情况,加以x轴和y轴的加速度ACCEL值辅助判断,标记记录异常数据,并提示声音预警。具体软件功能流程如图6所示。
图6 PC软件流程图
4 系统的实现
4.1 传感器数据处理
服务器接收处理来自网关的传感器数据,具体数据如图7所示。具体数据格式如下:AT%IPSEND="0100C533FF601B4A000AFFDE0029"//传感器原始数据,数据为28个字节,
根据系统需要,设置前4位为标志位,标志不同传感器发送的数据。并将各个数据的高8位跟低8位结合成一个16进制数,计算边坡倾斜角角度Angle值和加速度ACCEL值。
图7传感器原始数据测试界面
4.2服务器测试
启动服务器,ZigBee协调器通过GPRS模块发送AT指令与服务器进行通信。文献[9]和文献[10]指出:由于环境干扰的同时易导致信号发散或丢失从而对信号产生影响。因此,方案利用卡尔曼滤波算法,定义最大差值,对比前后两次数据来进行滤波处理以提高接收边坡倾斜角Angle值的准确性。处理结果如图8所示。
图8 服务器数据处理结果
4.3上位机测试
打开PC上位机,上位机获取服务器数据,并对获取到的数据进行处理和判断,利用处理出来的Z轴数据画出坐标图,另外显示出相对应的数据,同时将处理出来的X轴和Y轴数据记录在文本框,当抓取到异常数据时,发出警报声并将记录该Z轴异常数据。上位机测试界面如图9所示。
图9上位机显示界面
4.4 WEB软件测试
在浏览器输入远程山体监测系统网址。WEB软件如图10所示。获取山体环境数据,方便了监测人员能够不受环境地点的影响,实时地查看山体状态。
图10 WEB客户端界面
5 结语
本系统实现在恶劣环境中多角度采集环境信息,远距离传输数据,并利用卡尔曼滤波算法修正测量过程中的随机误差。采用PC上位机和WEB客户端实时更新传感器数据并判断异常情况来建立安全预警模型,实现控制站对监控地区的实时远程监测及预警。通过物理原型测试实验,系统符合山体滑坡实时监控需要,具有重要的应用价值。
参考文献:
[1]刘肖忠. 基于图像方式的山体滑坡实时远程监测方法设计[D].南昌航空大学,2013.
[2]邱健壮. GPS监测山体滑坡研究[D].中国农业大学,2005.
[3]王作成. 基于ZigBee的山体滑坡预警系统研究与设计[D].西北师范大学,2013.
[4]朱望纯,庞少东.一种基于Zigbee与GPS山体滑坡监测系统开发[J].计算机测量与控制,2014,09:2779-2780+2788.
[5]洪新,吴珂,王波,卢鹏.基于ZigBee技术的山体滑坡预警系统设计[J].硅谷,2011,01:51+36.
[6]胡颖. 基于无线传感器网络的山体滑坡监测预警系统设计与研究[D].重庆大学,2011.
[7]王波,李文田,梅倩.滑坡监测的无线传感器网络定位系统设计[J].计算机应用,2012,07:1831-1835.
[8]薛艳亮、胡建萍、王江柱,基于分布式编址机制的ZigBee组网技术研究[J].杭州电子科技大学学报,2008,28(2):33-36.
[9] 曹春萍, 罗玲莉. 基于卡尔曼滤波算法的室内无线定位系 统[ J] . 计 算 机 系 统 应 用, 2011, 20 ( 11 ) :76- 79.
[10]焦尚彬,宋丹,张青,唐金伟. 基于ZigBee无线传感器网络的煤矿监测系统[J]. 电子测量与仪器学报,2013,v.27;No.14905:436-442.
项目:
(1)惠州市科技计划项目,项目编号: 2015ZX023
(2)惠州学院自然科学项目,项目编号:hzuxl201417
作者简介:黄震,(1980-),男,硕士,讲师,主要研究领域为无线传感器网络,智能算法
通讯地址: (广东省惠州市演达大道46号惠州学院计算机科学系,邮政编码516007)
联系电话:15916405612
邮箱:195146501@qq.com
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
这是万恶的回归线
zigbee安全机制:
zigbee协议栈支持128bit的AES加密算法,在协议栈中为了避开相同设备的干扰,和防止被其他设备监听。
Z-stack1.4.3加密算法的功能开启方法:
1.将f8wConfig.cfg文件中设置为-DSECURE=1,这句话的意思是SECURE=1,这个变量在协议栈中作为if语句的条件使用,条件为真的语句中就是开启加密算法的函数。所以要使用第一步是要将这个参数设置为1。
2.将ZGlobals.c中的uint8 zgPreConfigKeys = FLASE;修改为uint8 zgPreConfigKeys = TRUE。
3.准备一个key,这个可以在函数nwk_global.c中修改:
如果使用了加密算法后,网络中所有的设备都需要开启这个算法,而且各个设备中的key必须相同。否则后果是很严重的,这会导致你的网络不能正常通讯,因为没有加密的数据或者相同key加密,这些数据网络是不认识的,根本就不会传到网络层。加密算法开启以后,如果你需要修改代码,就必须改变你的key,或者是擦除一次你的flash,否则会出现不可逾期的错误,而且没有规律。通常的做法是擦除flash一次,这样可以保证和整个网络的key相同。除此之外,还加入了一个加密入网白名单机制,通过将入网设备的Mac地址加密后生成key可以在运行时通过串口协议控制节点的入网许可,同时也限制了网内设备的生产厂家必须是经过协调器开发者认证的,否则不可能得到合法的key。
但是通常开发的时候主要是对协议栈功能的使用,普通的开发者甚少对协议栈进行理解开发,或者使用厂商默认的默认链路密钥,这是很危险的。节点与路由的数据交换是通过特定的密钥来自动进行连接。连接方式遵循一种类似一次性密钥那样,能通过特定sniffer找出密钥,节点的烧录通常都是一样的,也就是说,整个zigbee网络也就不安全。
在从溯源的角度来看,仅仅是为了功能的使用,一些终端开发的时候都是很简单的打包,里面包含服务器等相关敏感信息,还有中间蜂窝网络信号传输。so,如果通过某些手段可以拿下远程服务器的权限或者同服器的权限,如果是使用zigbee的一些工控企业,无疑是很大的威胁。
从开发的角度对zigbee安全的杂谈的更多相关文章
- 从一个开发的角度看负载均衡和LVS--FullNat
从一个开发的角度看负载均衡和LVS 在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务 ...
- 站在 Android 开发的角度,聊聊 Airbnb 的 Lottie!!!
一.前言 你有没有遇上一些设计师,对一些酷炫的动画着迷,喜欢根据场景设计出可爱而流畅的动画.但是在实际工作中,哪怕开发人员也觉得这些动画非常的棒,可我们知道,越是定制化的动画,实现起来将会越麻烦和耗时 ...
- 从开发的角度比较 ASP.NET Web 服务与 WCF
Windows Communication Foundation (WCF) 具有一个 ASP.NET 兼容模式选项,用户使用此选项可以对 WCF 应用程序进行编程和配置,使其像 ASP.NET We ...
- 从一个开发的角度看负载均衡和LVS(转)
原文:http://blog.hesey.net/2013/02/introduce-to-load-balance-and-lvs-briefly.html 在大规模互联网应用中,负载均衡设备是必不 ...
- 为Linux重新开发MVC,有图有真相
1.写在前面 就连我们自己开始时也在问自己:我们为什么要开发一套MVC,微软的难道不可用用吗? 一开始的理由很简单.为了更好地跨平台部署;在Linux部署过.NET的人们应该知道, 部署起来是有点繁琐 ...
- HBase设计与开发性能优化(转)
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,这里涉及的不多,这部分可以参考:淘宝Ken Wu同学的博客. 1. 表的设计 1.1 Pr ...
- win使用MSYS2安装Qt开发环境
原文链接 MSYS2 下载地址: pacman的具体用法 有pacman的具体使用方法.我们首先对系统升级 我们首先对系统升级 pacman -Syu 就会检测整个系统可以升级的组件,并自动下载安装, ...
- 程序开发使用docker部署
我们公司自己研发了一套 grand-line 系统,使用 docker 来部署项目. 我是第一批小白鼠,一开始网络差,build 一次要半个小时,连接进入 web shell 也很慢,部署一个微信项目 ...
- Android开发App工程结构搭建
本文算是一篇漫谈,谈一谈关于android开发中工程初始化的时候如何在初期我们就能搭建一个好的架构. 关于android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角 ...
随机推荐
- paddle中新增layer
Implement C++ Class The C++ class of the layer implements the initialization, forward, and backward ...
- time is always a factor, time is always now!!!!
https://www.linkedin.com/pulse/time-always-now-joe-alderman ---------------------------------------- ...
- C++类型的转换
C风格转换是“万能的转换”,但需要程序员把握转换的安全性,编译器无能为力:static_cast最接近于C风格转换,但在无关类指针转换时,编译器会报错,提升了安全性:dynamic_cast要求转换类 ...
- table合并单元格
table合并单元格 新建一张表格.要求表格有四行四列,当中第一行的四列合并,第二行.第三行和第四行的第一列合并 <!DOCTYPE html PUBLIC "-//W3C//DTD ...
- [cocos2d-x]怎样降低cocos2d-x游戏的耗电量?
Cocos2d-x游戏的耗电量一直是个让人头疼的问题,一个简单的三消游戏,玩一会手机就热得发烫,更郁闷的是电池消耗非常快.基本上两个小时就能够把电池耗光. 近期又看到一个帖子.有个老外用cocos2d ...
- struts开发<在eclipse中配置struts. 一>
1.获取struts的jar包 1.1首先在http://struts.apache.org/download.cgi#struts23163这里下载 struts的文件包(选择struts-2.3. ...
- window.onresize 事件笔记
1.浏览器尺寸变化响应事件 : window.onresize = function(){....} 这里须要注意的是,onresize响应事件处理中.获取到的页面尺寸參数是变更后的參数. // ...
- 依据iPhone6设计稿动态计算rem值
rem 单位在做移动端的h5开发的时候是最常常使用的单位. 为解决自适应的问题.我们须要动态的给文档的更节点加入font-size 值.使用mediaquery 能够解决问题,可是每个文件都引用一大串 ...
- 理解OpenStack认证:Keystone PKI
原文链接: https://www.mirantis.com/blog/understanding-openstack-authentication-keystone-pki/ The latest ...
- 浅谈JavaScript的函数表达式(递归)
递归函数,在前面的博客中已经简单的介绍了.递归函数是一个通过函数名称在函数内部调用自身的函数.如下: function fac(num){ if(num<1){ return 1; } else ...