赞
踩
杨武帅 万启元 桑贤伯
摘 要:针对目前日益增多的智能设备提出了兼容性好,稳定性高,易于管理的管理系统的设计方法。在服务器端使用Python和Django框架进行与设备的数据交互及设备管理网站的构架,以手表为例说明整个管理系统的设计。
关键词:Python;物联网;Django;智能设备
中图分类号:TP311 文献标志码:A
Abstract: In view of the increasing number of intelligent equipment, the design method of the management system with good compatibility, high stability and easy management is put forward. At the server side, we use Python and Django framework to interact with device and manage the website of device management. We take watch as an example to illustrate the design of the whole management system.
Keywords:Python;Internet of things;Django;intelligent equipment
1 编程语言与开发框架
1.1 Python介绍
Python是一种广泛使用的高级编程语言,其拥有可读性强、语法简洁和跨平台等特点。支持包括面向对象、命令式、函数式和过程式编程等编程范式。同时Python是社区驱动的开源编程语言。Python程序可读性高,开发周期短,可靠性强,适于网络通信需要。同时Python开发的程序具有很强的可移植性,可以在很多不同发行版本的Linux、Windows、Mac OS X等操作系統间完美移植,使用Python可以很大幅度地增强服务器程序的适应性,使服务器程序能最大限度地在现有的服务器上运行而不需要更换服务器操作系统。
1.2 Django介绍
Django是一个由Python编写的开源Web应用框架,它采用模型(Model),视图(View)和模板(Template)即MVT开发模式,支持众多中间件并有丰富的内建应用。Django使原本复杂的网站后台开发和维护变得更简单,并在执行效率、安全性等方面有很大提升。
1.3 版本选择
基于以上,管理系统使用Python语言和Django框架开发。经过版本比较,最终使用了目前发行的最新稳定版本,即Python3.6.4与Django2.0.1。为了使最终的设备管理终端可以适用于各种平台并便于维护(如:Android、MAC OS X等移动平台或PC平台)管理系统采用B/S模式,即客户使用浏览器通过网页管理智能设备。
在开发时整个系统被划分为设备接口部分、数据库部分,数据处理与加密算法部分、管理网页部分。每个部分分别开发。
2 设备接口部分
2.1 设备接口部分简介
设备接口部分主要提供服务器与智能设备间的数据交互接口。智能设备通过网络访问服务器的设备接口来进行。在手表端手表需要实时上传使用者的运动及健康数据,并且服务器可能会不定时地向手表发送信息,通知手表使用者一些消息,手表管理者也会通过服务器向手表发送命令或者消息。
2.2 实施方案
基于以上所述数据交互模式,只能选用便于随时互相发送可靠数据的TCP长连接。TCP长连接占用服务器资源较大,但是数据发送灵活,可靠性高。在手表的应用中手表的管理者可以随时向手表发送身体状态查询的命令和通知信息,并且当手表使用者身体有恙时手表可以迅速地将身体状况信息发送到服务器,通知手表管理者,快速响应手表使用者的身体状况以便采取相应措施。
2.3 设备接口的安全性
对于设备接口可能遭受的TCP长连接洪水攻击,设备接口的TCP连接有相应的鉴权掉线机制。在每次商定密钥后手表与服务器之间会相互鉴权,手表中的客户与服务器鉴权密码是根据手表的序列号和当前固件自带的健全密钥算法得出。在服务器对手表鉴权前,服务器会发送针对该手表的服务器鉴权密码让手表对服务器鉴权,防止攻击者伪造服务器骗取手表鉴权密码。手表与服务器的鉴权通信是协商密钥并加密后进行的,所以通信中的密钥不会受到中间人攻击。在固件升级时服务器鉴权密码与手表鉴权密码算法均改变,既防止了由于手表固件太过陈旧导致的功能问题,又防止使用同一鉴权密码时间太长导致的安全隐患。
3 数据处理与加密算法部分
3.1 数据处理与加密部分简介
数据处理部分是位于接口部分之后,处理手表发送到服务器的数据或者打包服务器向手表发送的数据。
为了保证手表用户数据安全,防止健康数据位置数据等隐私的泄露,服务器必须采取加密措施。在与手表通信时加密,在与手表管理者通信时加密,在数据库中存储加密。
3.2 数据处理部分实施方案
在数据处理部分中要将数据打包解包发送到设备接口或者存入数据库,要使用便于发送,便于调试,不易出错的打包解包方案,于是选用JSON数据交换方式。JSON是一种轻量级数据交换格式,它语言简洁,层次清晰,实现简单,便于在嵌入式设备中操作。JSON生成的字符串极具可读性,很大程度上方便了调试。手表制作时采用了JSON的数据交换格式,所以在手表与服务器传递数据时,数据处理部分将传递的信息以JSON打包(解包)来进行数据传递。
3.3 加密部分实施方案
在与手表的数据交互中需要采取加密防止中间人攻击等攻击方式导致的使用者信息泄露。在手表这样的嵌入式设备中运行复杂的加密算法无疑是非常耗时的,而添加硬件加密模块会增大手表的体积影响便携性,所以采用了TEA加密算法,TEA算法实现简单,消耗资源少,极其容易通过软件实现。于是在服务器端,与手表通信的数据也采用了TEA加密技术,并确定加密轮数为32轮。存入数据库的密码类数据也是需要加密的,防止拖库带来的用户信息泄露。存入数据库的数据并不需要完整,只需要通过验证即可,因此采用了MD5摘要算法,因为用户名不可更改并与密码一一对应,于是取用户名为盐值添加到密码后面整体进行MD5运算,如图1所示。
3.4 加密密钥的确定
在与手表通信时加密需要约定密钥才能完成。在每次发起长连接时发起交换密钥来约定密钥,每次更换密钥,使通信具有前向安全性。在每次密钥交换时,先进行RSA协商来协商两个素数,再通过DH交换来交换通信密钥。在TCP长连接握手后发送RSA素数协商,每次RSA协商由服务器发起先由服务器发送公钥给手表。服务器等待手表返回加密后的素数,返回并用私钥解密后服务器发起DH密钥协商,服务器将对数明文发送到手表并等待手表返回对数,当手表返回明文对数后服务器经过运算取得密码。
4 数据库部分
Django 默认数据库是SQLite3数据库,于是项目采用SQLite3数据库。
4.1 数据库各项关系
数据库中的用户分为3种:普通用户、网站管理员、超级管理员。
普通用户具有其唯一ID、用戶名、密码、注册时间、邮箱。
每个手表设备具有唯一序列号、持有者。
每个手表会不定时返回心率、血压、坐标。
每个手表会在使用者运动状态改变时返回运动状态改变情况。
管理员具有唯一管理员ID、用户名、密码。
超级管理员只有一位,具有用户名和密码。
具体数据库设计如图2所示。
经验证,该数据库设计满足巴斯范式,在正常使用中不存在插入异常、删除异常和修改异常。
5 管理网页部分
5.1 管理网页部分介绍
管理网页部分是手表使用者的家人查看手表使用者的健康情况,发送消息给手表使用者时使用的,能将数据库中对应手表的数据图形化输出到网页上。网页有登陆、绑定手表,查看已绑定手表返回的各项信息与发送信息到已绑定手表功能。
5.2 网页前端
人性化的图形界面有助于用户更方便地管理手表的信息。在网页前台使用了HTML5和Bootstrap开源前端来组织页面。Bootstrap更强调响应式设计,会根据不同设备的视窗宽度来组织页面,使页面可以同时适用于移动终端与PC终端,减少客户端开发成本,增强易维护性。
5.3 网站后台
网站后台使用Django框架开发,Django框架可以与Python开发的其他部分无缝结合,与其他部分共用数据库,缩减开发时间,降低维护成本。
网站后台承担着管理网站和其他部分之间的交互工作。在网页登陆时后台会根据数据库判断用户名密码是否正确,向用户发送包含SessionID的Cookie使用户可以保持登陆。并根据用户当前所绑定的手表向用户提供该手表返回的使用者信息。
5.4 网站安全性
网站可以查看手表使用者的健康状态、位置等数据,网站需要拥有足够的安全性保证用户的数据不泄露。在登陆时添加图形验证码和IP黑名单机制防止分布式碰撞攻击。在操作数据库的接口加入字符串格式化防止SQL注入攻击。利用Django本身防止XSS注入攻击和防止CSRF跨站攻击的特性防止相应攻击。需要加密的数据也会提交到处理与加密部分减少由于数据泄露造成的二次危害。
结语
本文结合了Python以及Django框架开发了一个B/S结构的物联网设备管理系统。在功能方面完全满足智能手表管理的需求,并能很方便地移植到其他的物联网智能设备上。希望在未来管理系统可以改进并管理多种不同的设备,并能承载更大的压力。
参考文献
[1]王冉阳.基于Django和Python的Web开发[J].电脑编程技巧与维护,2009(2):56-58.
[2]刘志凯.基于Web的Python编程环境研究[D].新疆农业大学,2015.
[3]罗霄,任勇,山秀明.基于Python的混合语言编程及其实现[J].计算机应用与软件,2004(12):17-18,112.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。