數(shù)字家庭產(chǎn)業(yè)是工業(yè)和信息化部“十二五”期間重點(diǎn)發(fā)展的產(chǎn)業(yè),《中國下一代廣播電視網(wǎng)(NGB)自主創(chuàng)新戰(zhàn)略研究報告》中也提出了發(fā)展雙向數(shù)字電視、多媒體終端、智慧家庭網(wǎng)絡(luò)和家庭物聯(lián)網(wǎng)、智能化家庭設(shè)備具有重要戰(zhàn)略意義。高清數(shù)字機(jī)頂盒(STB)作為家庭核心設(shè)備,升級成為智能家庭網(wǎng)關(guān)[1]對數(shù)據(jù)流進(jìn)行管理是趨勢使然。
智能家庭網(wǎng)關(guān)作為連接家庭物聯(lián)網(wǎng)和外部網(wǎng)絡(luò)的樞紐,在支持家庭信息管理業(yè)務(wù)的同時也支持?jǐn)?shù)字電視業(yè)務(wù),這就要求了家庭網(wǎng)關(guān)要具備相當(dāng)?shù)臄?shù)據(jù)處理能力和網(wǎng)絡(luò)互連能力。現(xiàn)階段廣電運(yùn)營商的高清雙向機(jī)頂盒處理芯片大多采用ARM Crotex架構(gòu),硬件上對無線、有線網(wǎng)絡(luò)的支持已是標(biāo)配,而操作系統(tǒng)上開放性不強(qiáng)、應(yīng)用業(yè)務(wù)種類不多,可以借助安卓平臺開放性強(qiáng)、應(yīng)用業(yè)務(wù)多樣化的特點(diǎn)進(jìn)行改進(jìn)。本文主要圍繞Android平臺上搭建家庭物聯(lián)網(wǎng)網(wǎng)關(guān)系統(tǒng)、家庭網(wǎng)絡(luò)中安全性問題這兩個方向進(jìn)行研究實(shí)現(xiàn)。
家庭網(wǎng)絡(luò)是安裝在私人場所的通信系統(tǒng),對于家庭網(wǎng)關(guān)系統(tǒng)具有以下需求:1)靈活、便于擴(kuò)展,能與現(xiàn)行網(wǎng)絡(luò)系統(tǒng)兼容;2)操作方便,用戶界面交互友好;3)可靠、易維護(hù),具有穩(wěn)健性;4)保證與外部網(wǎng)絡(luò)連接內(nèi)容安全性;5)具有標(biāo)準(zhǔn)的通信協(xié)議[2]。
家庭內(nèi)部網(wǎng)絡(luò)的組成主要是多媒體設(shè)備、智能家電、傳感器,在系統(tǒng)體系中,機(jī)頂盒作為網(wǎng)關(guān)的控制中心,同時擔(dān)任控制子網(wǎng)關(guān)和多媒體子網(wǎng)關(guān)的作用,提供外部網(wǎng)絡(luò)與家庭網(wǎng)絡(luò)互聯(lián)的接口服務(wù),實(shí)現(xiàn)家庭網(wǎng)關(guān)與家庭網(wǎng)絡(luò)接入設(shè)備的通信與數(shù)據(jù)交換。如圖1所示,家庭網(wǎng)關(guān)功能歸納為5個方面。
1)以太網(wǎng)接入功能:實(shí)現(xiàn)家庭網(wǎng)絡(luò)接入以太網(wǎng),符合TCP/IP協(xié)議。

圖1 家庭網(wǎng)關(guān)的功能模型
2)物聯(lián)網(wǎng)接入功能:實(shí)現(xiàn)網(wǎng)關(guān)接入家庭物聯(lián)網(wǎng),支持ZigBee網(wǎng)絡(luò)以及ZigBee協(xié)議。
3)數(shù)據(jù)傳輸功能:主要實(shí)現(xiàn)物聯(lián)網(wǎng)終端設(shè)備與以太網(wǎng)進(jìn)行數(shù)據(jù)包交換傳送,同時支持業(yè)務(wù)的擴(kuò)展。
4)核心功能:主要包含遠(yuǎn)程管理功能、本地管理功能、安全服務(wù)功能。
(1)遠(yuǎn)程管理功能:實(shí)現(xiàn)用戶對家庭網(wǎng)關(guān)的遠(yuǎn)程登錄,對家庭網(wǎng)絡(luò)終端設(shè)備進(jìn)行管理與控制。家庭網(wǎng)關(guān)應(yīng)具備服務(wù)器的功能,為家庭網(wǎng)絡(luò)中的各種服務(wù)提供平臺,遠(yuǎn)程用戶可以在外部網(wǎng)絡(luò)通過瀏覽器訪問家庭網(wǎng)關(guān)進(jìn)行操作。
(2)本地管理功能:實(shí)現(xiàn)本地登錄管理與控制,同時具備系統(tǒng)管理維護(hù)功能。本地用戶則可以使用遙控器簡單操作機(jī)頂盒查看家庭信息并決策控制。
(3)安全功能:防止非法接入對家庭網(wǎng)絡(luò)信息的竊取,具備用戶認(rèn)證功能。
5)業(yè)務(wù)功能:實(shí)現(xiàn)具體業(yè)務(wù)的處理,如數(shù)字電視信號轉(zhuǎn)換、音視頻編解碼、網(wǎng)絡(luò)電話VoIP信號轉(zhuǎn)換、多媒體格式轉(zhuǎn)換等功能。
三網(wǎng)融合的促進(jìn)下,廣電網(wǎng)絡(luò)運(yùn)營商需要向通用開放性發(fā)展以便支持多種應(yīng)用業(yè)務(wù),機(jī)頂盒的智能化正是發(fā)展的趨勢。Android系統(tǒng)開放性強(qiáng),與互聯(lián)網(wǎng)結(jié)合能力強(qiáng),具有友好的人機(jī)交互界面和豐富的應(yīng)用,可以靈活擴(kuò)展來適應(yīng)不同業(yè)務(wù)的要求。Android系統(tǒng)框架相似于標(biāo)準(zhǔn)中間件,可以使用JDK、NDK工具進(jìn)行JAVA、C、C++語言開發(fā),這使得面向電視屏幕的應(yīng)用開發(fā)更為便捷且具有良好的平臺移植性[3]。
Android系統(tǒng)是基于Linux核心,對于廣電原有Linux操作系統(tǒng)大多數(shù)的外接設(shè)備和通用接口不存在驅(qū)動上的障礙,軟件上將廣電數(shù)字電視(DVB)系統(tǒng)如高清電視(HDTV)、電子節(jié)目菜單(EPG)、準(zhǔn)視頻點(diǎn)播(NVOD)和用戶認(rèn)證CA子系統(tǒng)移植到Android系統(tǒng)是可行的。Android機(jī)頂盒支持DVB業(yè)務(wù)的同時,將Web服務(wù)器子系統(tǒng)移植到Android系統(tǒng)上,并在應(yīng)用框架中加入對ZigBee網(wǎng)絡(luò)的支持,使Android機(jī)頂盒升級為家庭網(wǎng)關(guān),實(shí)現(xiàn)家庭網(wǎng)絡(luò)與以太網(wǎng)連接,以便適應(yīng)開發(fā)性平臺下多業(yè)務(wù)發(fā)展的趨勢。
如圖2所示,Android家庭網(wǎng)關(guān)系統(tǒng)主要分為系統(tǒng)空間和用戶空間,系統(tǒng)空間主要為Linux內(nèi)核驅(qū)動層,用戶空間主要為本地運(yùn)行時庫、應(yīng)用程序框架和應(yīng)用程序?qū)印?/p>

圖2 Android家庭網(wǎng)關(guān)軟件架構(gòu)
最底層為Linux驅(qū)動層,屬于內(nèi)核空間,為上層提供驅(qū)動的支持;第二層為本地方法框架層,為上層提供系統(tǒng)運(yùn)行時支撐庫,網(wǎng)關(guān)的本地方法庫都集中在這層;第三層屬于Android應(yīng)用框架層,對用戶界面和系統(tǒng)資源管理提供一般抽象,網(wǎng)關(guān)管理器完成ZigBee協(xié)議與TCP/IP協(xié)議數(shù)據(jù)包的轉(zhuǎn)換;第四層是應(yīng)用層,調(diào)用應(yīng)用程序框架的接口實(shí)現(xiàn)界面設(shè)計(jì)。
家庭物聯(lián)網(wǎng)網(wǎng)關(guān)系統(tǒng)協(xié)議模型上主要處理Zig?Bee協(xié)議與TCP/IP協(xié)議的轉(zhuǎn)換(見圖3),主要包括3個方面:
1)無線通信協(xié)議:家庭物聯(lián)網(wǎng)由ZigBee無線傳感器網(wǎng)絡(luò)組成,網(wǎng)絡(luò)通信采用了載波監(jiān)聽多點(diǎn)接入/沖突避免(CSMA/CA)接入方式,保證了ZigBee數(shù)據(jù)包傳輸?shù)目煽啃浴AC與PHY由IEEE802.15.4工作小組制定,網(wǎng)絡(luò)層(NWK)與應(yīng)用支持層(APS)則由ZigBee聯(lián)盟制定[4],開發(fā)只需針對應(yīng)用層、ZigBee設(shè)備對象(ZDO)、ZigBee應(yīng)用對象(ZAO),再根據(jù)具體需求對ZigBee協(xié)調(diào)器、路由器、終端節(jié)點(diǎn)進(jìn)行設(shè)計(jì)。

圖3 網(wǎng)關(guān)系統(tǒng)協(xié)議模型
2)以太網(wǎng)協(xié)議:主要負(fù)責(zé)網(wǎng)關(guān)入網(wǎng)功能,以太網(wǎng)物理層和鏈路層采用IEEE802.3 PHY和IEEE802.3 MAC標(biāo)準(zhǔn),網(wǎng)絡(luò)層的以太網(wǎng)數(shù)據(jù)幀與IP接口傳輸采用IEEE802.3 LLC標(biāo)準(zhǔn),傳輸層則采用面向連接的可靠TCP協(xié)議。
3)網(wǎng)關(guān)應(yīng)用層:負(fù)責(zé)數(shù)據(jù)封包拆包轉(zhuǎn)換,遠(yuǎn)程用戶需要操作瀏覽器發(fā)送請求,通過Internet發(fā)送到服務(wù)器,在服務(wù)器內(nèi)部解析請求信息中包含的節(jié)點(diǎn)信息,加上請求操作的類型信息,組裝成數(shù)據(jù)幀格式向ZigBee協(xié)調(diào)器發(fā)送。協(xié)調(diào)器收到數(shù)據(jù)報文之后,對報文數(shù)據(jù)進(jìn)行解析得到命令與地址,根據(jù)地址表找到終端節(jié)點(diǎn),從而根據(jù)命令類型操作終端節(jié)點(diǎn)。
在家庭網(wǎng)關(guān)系統(tǒng)通過串口連接協(xié)調(diào)器進(jìn)行通信,進(jìn)一步的數(shù)據(jù)轉(zhuǎn)換則達(dá)到協(xié)議轉(zhuǎn)換的目的,機(jī)頂盒和協(xié)調(diào)器采用“主機(jī)—從機(jī)”方式,主機(jī)發(fā)送請求后監(jiān)聽從機(jī)回饋消息。
如圖4所示,網(wǎng)關(guān)系統(tǒng)管理器(Gateway System Manager)由網(wǎng)關(guān)應(yīng)用接口(Interface)、消息緩沖區(qū)(Message Queue)、串口服務(wù)進(jìn)程(Uart Server)組成。

圖4 網(wǎng)關(guān)系統(tǒng)管理器設(shè)計(jì)
網(wǎng)關(guān)應(yīng)用接口處于系統(tǒng)框架層,主要負(fù)責(zé)對上層請求命令進(jìn)行解析,封裝成消息通過管道傳給串口服務(wù)進(jìn)程,并監(jiān)聽消息緩沖區(qū)的回饋消息,返回請求的結(jié)果。
消息緩沖區(qū)主要由消息隊(duì)列、信號量以及管道構(gòu)成,其中管道完成進(jìn)程間的請求應(yīng)答機(jī)制,消息隊(duì)列采用“生產(chǎn)者—消費(fèi)者”模型設(shè)計(jì),串口服務(wù)進(jìn)程作為生產(chǎn)者將回饋消息分發(fā)到消息隊(duì)列,客戶端管道則作為消費(fèi)者讀取消息隊(duì)列的消息。
串口服務(wù)進(jìn)程負(fù)責(zé)與ZigBee協(xié)調(diào)器通信,將消息內(nèi)容轉(zhuǎn)換成ZigBee模塊識別的數(shù)據(jù)幀格式,數(shù)據(jù)幀為“幀頭+消息+校驗(yàn)字”的格式。寫操作向協(xié)調(diào)器發(fā)送數(shù)據(jù)幀,再由監(jiān)聽子線程讀取協(xié)調(diào)器回饋的數(shù)據(jù)幀,校驗(yàn)數(shù)據(jù)幀后轉(zhuǎn)換成消息再分發(fā)到消息緩沖區(qū)。
網(wǎng)關(guān)應(yīng)用管理器為上層應(yīng)用中的本地管理和遠(yuǎn)程管理提供兩種方式的接口:遠(yuǎn)程管理屬于瀏覽器/服務(wù)器(B/S)架構(gòu),管理器為網(wǎng)頁服務(wù)器提供C語言接口;本地家庭信息系統(tǒng)則由Android應(yīng)用開發(fā),管理器使用JNI(Java Native Interface)標(biāo)準(zhǔn)向上層應(yīng)用提供Java語言接口。
家庭網(wǎng)絡(luò)通過網(wǎng)關(guān)服務(wù)器來接入以太網(wǎng),考慮到服務(wù)器安全性和穩(wěn)定性,網(wǎng)關(guān)服務(wù)器采用Embedthis公司為嵌入式實(shí)時操作系統(tǒng)(RTOS)量身定制的Goahead服務(wù)器。Goahead運(yùn)行時所需內(nèi)存小,支持安全套接字SSLv3協(xié)議、HTTP/1.1協(xié)議、AJAX技術(shù),是一款安全、可靠、擴(kuò)展性強(qiáng)的服務(wù)器,服務(wù)器以守護(hù)進(jìn)程的形式運(yùn)行在系統(tǒng)后臺。
Goahead服務(wù)器支持SSL功能,需在編譯的時候加入密碼學(xué)安全程序包OpenSSL,完成sslOpen,sslClose,sslUpgrade,sslRead,sslWrite,sslSetCertFile,sslSetKey?File等基本接口。
遠(yuǎn)程監(jiān)控的動態(tài)網(wǎng)頁主要是使用AJAX技術(shù),瀏覽器通過Javascript發(fā)送請求(XMLHttpRequest),服務(wù)器解析請求后使用CGI調(diào)用網(wǎng)關(guān)管理接口向ZigBee模塊發(fā)送消息,獲得回饋消息后再向?yàn)g覽器推送內(nèi)容(Response),最終在瀏覽器與服務(wù)器之間建立異步數(shù)據(jù)傳輸。
安全套接層(Secure Socket Layer,SSL)協(xié)議介于傳輸層和應(yīng)用層之間,家庭網(wǎng)關(guān)采用SSL協(xié)議來保證消息的保密性、完整性、不可抵賴以及真實(shí)性。SSL協(xié)議提供數(shù)據(jù)加密、數(shù)字簽名、數(shù)字證書等安全服務(wù)。SSL協(xié)議的數(shù)據(jù)加密算法用于消息保密性,確保明文消息不會被第三方竊取;數(shù)字簽名用于消息完整性,確保消息在傳輸過程中不會被篡改;數(shù)字證書用于身份認(rèn)證,確保通信的雙方具有真實(shí)性和不可抵賴性[5]。
SSL協(xié)議的應(yīng)用主要為雙方握手建立安全信道和數(shù)據(jù)流在安全信道上傳輸,關(guān)鍵的安全措施體現(xiàn)在SSL握手協(xié)議上,服務(wù)器和客戶端握手過程主要完成:1)協(xié)商出用于安全信道加密的對稱密鑰;2)通過數(shù)字證書簽名來驗(yàn)證通信雙方的身份。
SSL雙向認(rèn)證握手流程主要分為4個階段:
1)建立安全能力:首先是客戶端向服務(wù)器發(fā)送Client Hello消息,包含了客戶端所支持的安全能力:SSL版本(Version)、密碼套件(Cipher suite)、壓縮算法(Compression method)、會話號(Session id);服務(wù)器選擇適合的安全能力,向客戶端發(fā)送Server Hello消息來告知客戶端,同時雙方通過消息交換一個初始的隨機(jī)數(shù)用于會話主密鑰。2)驗(yàn)證服務(wù)器與密鑰交換:服務(wù)器向客戶端發(fā)送數(shù)字證書與公鑰用于驗(yàn)證,同時向客戶端發(fā)送驗(yàn)證請求,并結(jié)束Hello消息階段。3)驗(yàn)證客戶端與密鑰交換:客戶端向服務(wù)器發(fā)送自己的數(shù)字證書用于驗(yàn)證,同時發(fā)送證書認(rèn)證確認(rèn)消息,里面包含客戶端的數(shù)字簽名,保證不可抵賴性。4)完成:客戶端和服務(wù)器改變加密規(guī)范(Change Cipher Specs),生成客戶端和服務(wù)器使用的對稱密鑰,完成握手。握手協(xié)議工作過程如圖5所示。

圖5 雙向認(rèn)證SSL握手流程
瀏覽器使用目前流行的火狐瀏覽器(FireFox),在設(shè)置中將SSLv3.0與TLS1.0選項(xiàng)開啟,并在安全設(shè)備選項(xiàng)中開啟美國聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS),完成配置之后在網(wǎng)頁地址欄中輸入https://服務(wù)器IP:端口號即可使用SSL協(xié)議進(jìn)行安全訪問。
用戶管理系統(tǒng)包括用戶口令認(rèn)證和權(quán)限管理,用于保證家庭網(wǎng)關(guān)不被非法登錄竊取信息。用戶管理文件以XML文件形式保存在文件系統(tǒng)上,包含了用戶信息和權(quán)限信息:用戶屬性記錄包括用戶名(User name)、散列密碼(Password)、所屬用戶組(Roles);群組屬性記錄包括組名(Roles)、權(quán)限(Abilities)。
新用戶注冊流程:1)家庭網(wǎng)關(guān)識別插入CA智能卡,在本地應(yīng)用中以預(yù)置的管理員登陸用戶管理系統(tǒng);2)添加新用戶,填寫新注冊用戶名、密碼口令,根據(jù)不同權(quán)限選擇所在用戶組;3)管理文件中不保存明文密碼來防止破解,而是以“用戶名:智能卡號:密碼”形式計(jì)算MD5散列值再保存。
遠(yuǎn)程用戶網(wǎng)頁登錄:1)用戶名和密碼以表單形式發(fā)送POST請求;2)服務(wù)器使用通用網(wǎng)關(guān)接口(CGI)程序解析表單請求;3)服務(wù)器根據(jù)“用戶名:智能卡號:密碼”計(jì)算得出MD5散列值,與用戶管理文件中散列密碼進(jìn)行比較,一致則登錄成功,推送監(jiān)控信息頁面。
本地用戶登錄:1)在Android應(yīng)用上,使用文本輸入框(EditText)控件輸入用戶名和密碼;2)以同樣的規(guī)則計(jì)算MD5散列值,與管理文件中散列密碼記錄對比,一致則允許登錄監(jiān)控系統(tǒng)。
Android系統(tǒng)框架運(yùn)行于Linux內(nèi)核之上,作用類似于標(biāo)準(zhǔn)中間件,為廣電運(yùn)營商統(tǒng)一軟硬件平臺提供了無限可能。本文提出的家庭網(wǎng)關(guān)解決方案適用于Android高清機(jī)頂盒,在支持DVB業(yè)務(wù)的基礎(chǔ)上,解決家庭網(wǎng)絡(luò)接入以太網(wǎng)的關(guān)鍵問題。網(wǎng)關(guān)系統(tǒng)中異步數(shù)據(jù)通道可以有效解決多端登錄沖突問題,SSL安全協(xié)議使用通信雙方協(xié)商的加密算法和密鑰,可以根據(jù)需要定義不同的安全級別,用戶認(rèn)證登錄則結(jié)合CA智能卡進(jìn)行散列驗(yàn)證,安全性高于靜態(tài)密碼。機(jī)頂盒作為電視屏幕內(nèi)容的載體,連接互聯(lián)網(wǎng)后的內(nèi)容管控措施是必要的,如何在內(nèi)容管控和平臺開發(fā)性上尋求一個平衡點(diǎn),這也是解決安全性問題之后需要面對的問題。
:
[1]趙志峰,張衛(wèi).面向NGB的數(shù)字家庭服務(wù)平臺[J].電視技術(shù),2012,36(16):25-28.
[2]章堅(jiān)武,顏歡,包建榮.智能家庭網(wǎng)關(guān)設(shè)計(jì)及其物聯(lián)網(wǎng)應(yīng)用[J].計(jì)算機(jī)工程,2011(18):246-248.
[3]高志寅,高志平.雙模智能機(jī)頂盒的關(guān)鍵技術(shù)研究[J].電視技術(shù),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.