面向Android机顶盒的家庭网关系统设计
2014-09-18刘锦锋,崔晓佳,王伟
1 智能家庭网关
数字家庭产业是工业和信息化部“十二五”期间重点发展的产业,《中国下一代广播电视网(NGB)自主创新战略研究报告》中也提出了发展双向数字电视、多媒体终端、智慧家庭网络和家庭物联网、智能化家庭设备具有重要战略意义。高清数字机顶盒(STB)作为家庭核心设备,升级成为智能家庭网关[1]对数据流进行管理是趋势使然。
智能家庭网关作为连接家庭物联网和外部网络的枢纽,在支持家庭信息管理业务的同时也支持数字电视业务,这就要求了家庭网关要具备相当的数据处理能力和网络互连能力。现阶段广电运营商的高清双向机顶盒处理芯片大多采用ARM Crotex架构,硬件上对无线、有线网络的支持已是标配,而操作系统上开放性不强、应用业务种类不多,可以借助安卓平台开放性强、应用业务多样化的特点进行改进。本文主要围绕Android平台上搭建家庭物联网网关系统、家庭网络中安全性问题这两个方向进行研究实现。
2 家庭网关系统结构
2.1 家庭网关功能模型
家庭网络是安装在私人场所的通信系统,对于家庭网关系统具有以下需求:1)灵活、便于扩展,能与现行网络系统兼容;2)操作方便,用户界面交互友好;3)可靠、易维护,具有稳健性;4)保证与外部网络连接内容安全性;5)具有标准的通信协议[2]。
家庭内部网络的组成主要是多媒体设备、智能家电、传感器,在系统体系中,机顶盒作为网关的控制中心,同时担任控制子网关和多媒体子网关的作用,提供外部网络与家庭网络互联的接口服务,实现家庭网关与家庭网络接入设备的通信与数据交换。如图1所示,家庭网关功能归纳为5个方面。
1)以太网接入功能:实现家庭网络接入以太网,符合TCP/IP协议。
图1 家庭网关的功能模型
2)物联网接入功能:实现网关接入家庭物联网,支持ZigBee网络以及ZigBee协议。
3)数据传输功能:主要实现物联网终端设备与以太网进行数据包交换传送,同时支持业务的扩展。
4)核心功能:主要包含远程管理功能、本地管理功能、安全服务功能。
(1)远程管理功能:实现用户对家庭网关的远程登录,对家庭网络终端设备进行管理与控制。家庭网关应具备服务器的功能,为家庭网络中的各种服务提供平台,远程用户可以在外部网络通过浏览器访问家庭网关进行操作。
(2)本地管理功能:实现本地登录管理与控制,同时具备系统管理维护功能。本地用户则可以使用遥控器简单操作机顶盒查看家庭信息并决策控制。
(3)安全功能:防止非法接入对家庭网络信息的窃取,具备用户认证功能。
5)业务功能:实现具体业务的处理,如数字电视信号转换、音视频编解码、网络电话VoIP信号转换、多媒体格式转换等功能。
2.2 面向广电运营商的Android系统
三网融合的促进下,广电网络运营商需要向通用开放性发展以便支持多种应用业务,机顶盒的智能化正是发展的趋势。Android系统开放性强,与互联网结合能力强,具有友好的人机交互界面和丰富的应用,可以灵活扩展来适应不同业务的要求。Android系统框架相似于标准中间件,可以使用JDK、NDK工具进行JAVA、C、C++语言开发,这使得面向电视屏幕的应用开发更为便捷且具有良好的平台移植性[3]。
Android系统是基于Linux核心,对于广电原有Linux操作系统大多数的外接设备和通用接口不存在驱动上的障碍,软件上将广电数字电视(DVB)系统如高清电视(HDTV)、电子节目菜单(EPG)、准视频点播(NVOD)和用户认证CA子系统移植到Android系统是可行的。Android机顶盒支持DVB业务的同时,将Web服务器子系统移植到Android系统上,并在应用框架中加入对ZigBee网络的支持,使Android机顶盒升级为家庭网关,实现家庭网络与以太网连接,以便适应开发性平台下多业务发展的趋势。
如图2所示,Android家庭网关系统主要分为系统空间和用户空间,系统空间主要为Linux内核驱动层,用户空间主要为本地运行时库、应用程序框架和应用程序层。
图2 Android家庭网关软件架构
最底层为Linux驱动层,属于内核空间,为上层提供驱动的支持;第二层为本地方法框架层,为上层提供系统运行时支撑库,网关的本地方法库都集中在这层;第三层属于Android应用框架层,对用户界面和系统资源管理提供一般抽象,网关管理器完成ZigBee协议与TCP/IP协议数据包的转换;第四层是应用层,调用应用程序框架的接口实现界面设计。
3 家庭网关的设计
3.1 协议转换模型
家庭物联网网关系统协议模型上主要处理Zig⁃Bee协议与TCP/IP协议的转换(见图3),主要包括3个方面:
1)无线通信协议:家庭物联网由ZigBee无线传感器网络组成,网络通信采用了载波监听多点接入/冲突避免(CSMA/CA)接入方式,保证了ZigBee数据包传输的可靠性。MAC与PHY由IEEE802.15.4工作小组制定,网络层(NWK)与应用支持层(APS)则由ZigBee联盟制定[4],开发只需针对应用层、ZigBee设备对象(ZDO)、ZigBee应用对象(ZAO),再根据具体需求对ZigBee协调器、路由器、终端节点进行设计。
图3 网关系统协议模型
2)以太网协议:主要负责网关入网功能,以太网物理层和链路层采用IEEE802.3 PHY和IEEE802.3 MAC标准,网络层的以太网数据帧与IP接口传输采用IEEE802.3 LLC标准,传输层则采用面向连接的可靠TCP协议。
3)网关应用层:负责数据封包拆包转换,远程用户需要操作浏览器发送请求,通过Internet发送到服务器,在服务器内部解析请求信息中包含的节点信息,加上请求操作的类型信息,组装成数据帧格式向ZigBee协调器发送。协调器收到数据报文之后,对报文数据进行解析得到命令与地址,根据地址表找到终端节点,从而根据命令类型操作终端节点。
3.2 网关系统详细设计
在家庭网关系统通过串口连接协调器进行通信,进一步的数据转换则达到协议转换的目的,机顶盒和协调器采用“主机—从机”方式,主机发送请求后监听从机回馈消息。
如图4所示,网关系统管理器(Gateway System Manager)由网关应用接口(Interface)、消息缓冲区(Message Queue)、串口服务进程(Uart Server)组成。
图4 网关系统管理器设计
网关应用接口处于系统框架层,主要负责对上层请求命令进行解析,封装成消息通过管道传给串口服务进程,并监听消息缓冲区的回馈消息,返回请求的结果。
消息缓冲区主要由消息队列、信号量以及管道构成,其中管道完成进程间的请求应答机制,消息队列采用“生产者—消费者”模型设计,串口服务进程作为生产者将回馈消息分发到消息队列,客户端管道则作为消费者读取消息队列的消息。
串口服务进程负责与ZigBee协调器通信,将消息内容转换成ZigBee模块识别的数据帧格式,数据帧为“帧头+消息+校验字”的格式。写操作向协调器发送数据帧,再由监听子线程读取协调器回馈的数据帧,校验数据帧后转换成消息再分发到消息缓冲区。
网关应用管理器为上层应用中的本地管理和远程管理提供两种方式的接口:远程管理属于浏览器/服务器(B/S)架构,管理器为网页服务器提供C语言接口;本地家庭信息系统则由Android应用开发,管理器使用JNI(Java Native Interface)标准向上层应用提供Java语言接口。
4 家庭网关的安全性设计
4.1 网关服务器设计
家庭网络通过网关服务器来接入以太网,考虑到服务器安全性和稳定性,网关服务器采用Embedthis公司为嵌入式实时操作系统(RTOS)量身定制的Goahead服务器。Goahead运行时所需内存小,支持安全套接字SSLv3协议、HTTP/1.1协议、AJAX技术,是一款安全、可靠、扩展性强的服务器,服务器以守护进程的形式运行在系统后台。
Goahead服务器支持SSL功能,需在编译的时候加入密码学安全程序包OpenSSL,完成sslOpen,sslClose,sslUpgrade,sslRead,sslWrite,sslSetCertFile,sslSetKey⁃File等基本接口。
远程监控的动态网页主要是使用AJAX技术,浏览器通过Javascript发送请求(XMLHttpRequest),服务器解析请求后使用CGI调用网关管理接口向ZigBee模块发送消息,获得回馈消息后再向浏览器推送内容(Response),最终在浏览器与服务器之间建立异步数据传输。
4.2 安全套接字协议
安全套接层(Secure Socket Layer,SSL)协议介于传输层和应用层之间,家庭网关采用SSL协议来保证消息的保密性、完整性、不可抵赖以及真实性。SSL协议提供数据加密、数字签名、数字证书等安全服务。SSL协议的数据加密算法用于消息保密性,确保明文消息不会被第三方窃取;数字签名用于消息完整性,确保消息在传输过程中不会被篡改;数字证书用于身份认证,确保通信的双方具有真实性和不可抵赖性[5]。
SSL协议的应用主要为双方握手建立安全信道和数据流在安全信道上传输,关键的安全措施体现在SSL握手协议上,服务器和客户端握手过程主要完成:1)协商出用于安全信道加密的对称密钥;2)通过数字证书签名来验证通信双方的身份。
SSL双向认证握手流程主要分为4个阶段:
1)建立安全能力:首先是客户端向服务器发送Client Hello消息,包含了客户端所支持的安全能力:SSL版本(Version)、密码套件(Cipher suite)、压缩算法(Compression method)、会话号(Session id);服务器选择适合的安全能力,向客户端发送Server Hello消息来告知客户端,同时双方通过消息交换一个初始的随机数用于会话主密钥。2)验证服务器与密钥交换:服务器向客户端发送数字证书与公钥用于验证,同时向客户端发送验证请求,并结束Hello消息阶段。3)验证客户端与密钥交换:客户端向服务器发送自己的数字证书用于验证,同时发送证书认证确认消息,里面包含客户端的数字签名,保证不可抵赖性。4)完成:客户端和服务器改变加密规范(Change Cipher Specs),生成客户端和服务器使用的对称密钥,完成握手。握手协议工作过程如图5所示。
图5 双向认证SSL握手流程
浏览器使用目前流行的火狐浏览器(FireFox),在设置中将SSLv3.0与TLS1.0选项开启,并在安全设备选项中开启美国联邦信息处理标准(FIPS),完成配置之后在网页地址栏中输入https://服务器IP:端口号即可使用SSL协议进行安全访问。
4.3 用户管理系统
用户管理系统包括用户口令认证和权限管理,用于保证家庭网关不被非法登录窃取信息。用户管理文件以XML文件形式保存在文件系统上,包含了用户信息和权限信息:用户属性记录包括用户名(User name)、散列密码(Password)、所属用户组(Roles);群组属性记录包括组名(Roles)、权限(Abilities)。
新用户注册流程:1)家庭网关识别插入CA智能卡,在本地应用中以预置的管理员登陆用户管理系统;2)添加新用户,填写新注册用户名、密码口令,根据不同权限选择所在用户组;3)管理文件中不保存明文密码来防止破解,而是以“用户名:智能卡号:密码”形式计算MD5散列值再保存。
远程用户网页登录:1)用户名和密码以表单形式发送POST请求;2)服务器使用通用网关接口(CGI)程序解析表单请求;3)服务器根据“用户名:智能卡号:密码”计算得出MD5散列值,与用户管理文件中散列密码进行比较,一致则登录成功,推送监控信息页面。
本地用户登录:1)在Android应用上,使用文本输入框(EditText)控件输入用户名和密码;2)以同样的规则计算MD5散列值,与管理文件中散列密码记录对比,一致则允许登录监控系统。
5 小结
Android系统框架运行于Linux内核之上,作用类似于标准中间件,为广电运营商统一软硬件平台提供了无限可能。本文提出的家庭网关解决方案适用于Android高清机顶盒,在支持DVB业务的基础上,解决家庭网络接入以太网的关键问题。网关系统中异步数据通道可以有效解决多端登录冲突问题,SSL安全协议使用通信双方协商的加密算法和密钥,可以根据需要定义不同的安全级别,用户认证登录则结合CA智能卡进行散列验证,安全性高于静态密码。机顶盒作为电视屏幕内容的载体,连接互联网后的内容管控措施是必要的,如何在内容管控和平台开发性上寻求一个平衡点,这也是解决安全性问题之后需要面对的问题。
:
[1]赵志峰,张卫.面向NGB的数字家庭服务平台[J].电视技术,2012,36(16):25-28.
[2]章坚武,颜欢,包建荣.智能家庭网关设计及其物联网应用[J].计算机工程,2011(18):246-248.
[3]高志寅,高志平.双模智能机顶盒的关键技术研究[J].电视技术,2012,36(22):27-28.
[4]QIU P,HEO U,CHOI J.The web-sensor gateway architecture for ZigBee[C]//Proc.Consumer Electronics 2009,ISCE'09.[S.l.]:IEEE Press,2009:661-664.
[5]LIM N,MAJUMDAR S,SRIVASTAVA V.Engineering SSL-based systems for enhancing system performance[C]//Proc.the Second Joint WOSP/SIPEW International Conference on Perfor⁃mance Engineering.[S.l.]:ACM Press,2011:469-474.