數(shù)字家庭產業(yè)是工業(yè)和信息化部“十二五”期間重點發(fā)展的產業(yè),《中國下一代廣播電視網(NGB)自主創(chuàng)新戰(zhàn)略研究報告》中也提出了發(fā)展雙向數(shù)字電視、多媒體終端、智慧家庭網絡和家庭物聯(lián)網、智能化家庭設備具有重要戰(zhàn)略意義。高清數(shù)字機頂盒(STB)作為家庭核心設備,升級成為智能家庭網關[1]對數(shù)據(jù)流進行管理是趨勢使然。
智能家庭網關作為連接家庭物聯(lián)網和外部網絡的樞紐,在支持家庭信息管理業(yè)務的同時也支持數(shù)字電視業(yè)務,這就要求了家庭網關要具備相當?shù)臄?shù)據(jù)處理能力和網絡互連能力。現(xiàn)階段廣電運營商的高清雙向機頂盒處理芯片大多采用ARM Crotex架構,硬件上對無線、有線網絡的支持已是標配,而操作系統(tǒng)上開放性不強、應用業(yè)務種類不多,可以借助安卓平臺開放性強、應用業(yè)務多樣化的特點進行改進。本文主要圍繞Android平臺上搭建家庭物聯(lián)網網關系統(tǒng)、家庭網絡中安全性問題這兩個方向進行研究實現(xiàn)。
家庭網絡是安裝在私人場所的通信系統(tǒng),對于家庭網關系統(tǒng)具有以下需求:1)靈活、便于擴展,能與現(xiàn)行網絡系統(tǒng)兼容;2)操作方便,用戶界面交互友好;3)可靠、易維護,具有穩(wěn)健性;4)保證與外部網絡連接內容安全性;5)具有標準的通信協(xié)議[2]。
家庭內部網絡的組成主要是多媒體設備、智能家電、傳感器,在系統(tǒng)體系中,機頂盒作為網關的控制中心,同時擔任控制子網關和多媒體子網關的作用,提供外部網絡與家庭網絡互聯(lián)的接口服務,實現(xiàn)家庭網關與家庭網絡接入設備的通信與數(shù)據(jù)交換。如圖1所示,家庭網關功能歸納為5個方面。
1)以太網接入功能:實現(xiàn)家庭網絡接入以太網,符合TCP/IP協(xié)議。
圖1 家庭網關的功能模型
2)物聯(lián)網接入功能:實現(xiàn)網關接入家庭物聯(lián)網,支持ZigBee網絡以及ZigBee協(xié)議。
3)數(shù)據(jù)傳輸功能:主要實現(xiàn)物聯(lián)網終端設備與以太網進行數(shù)據(jù)包交換傳送,同時支持業(yè)務的擴展。
4)核心功能:主要包含遠程管理功能、本地管理功能、安全服務功能。
(1)遠程管理功能:實現(xiàn)用戶對家庭網關的遠程登錄,對家庭網絡終端設備進行管理與控制。家庭網關應具備服務器的功能,為家庭網絡中的各種服務提供平臺,遠程用戶可以在外部網絡通過瀏覽器訪問家庭網關進行操作。
(2)本地管理功能:實現(xiàn)本地登錄管理與控制,同時具備系統(tǒng)管理維護功能。本地用戶則可以使用遙控器簡單操作機頂盒查看家庭信息并決策控制。
(3)安全功能:防止非法接入對家庭網絡信息的竊取,具備用戶認證功能。
5)業(yè)務功能:實現(xiàn)具體業(yè)務的處理,如數(shù)字電視信號轉換、音視頻編解碼、網絡電話VoIP信號轉換、多媒體格式轉換等功能。
三網融合的促進下,廣電網絡運營商需要向通用開放性發(fā)展以便支持多種應用業(yè)務,機頂盒的智能化正是發(fā)展的趨勢。Android系統(tǒng)開放性強,與互聯(lián)網結合能力強,具有友好的人機交互界面和豐富的應用,可以靈活擴展來適應不同業(yè)務的要求。Android系統(tǒng)框架相似于標準中間件,可以使用JDK、NDK工具進行JAVA、C、C++語言開發(fā),這使得面向電視屏幕的應用開發(fā)更為便捷且具有良好的平臺移植性[3]。
Android系統(tǒng)是基于Linux核心,對于廣電原有Linux操作系統(tǒng)大多數(shù)的外接設備和通用接口不存在驅動上的障礙,軟件上將廣電數(shù)字電視(DVB)系統(tǒng)如高清電視(HDTV)、電子節(jié)目菜單(EPG)、準視頻點播(NVOD)和用戶認證CA子系統(tǒng)移植到Android系統(tǒng)是可行的。Android機頂盒支持DVB業(yè)務的同時,將Web服務器子系統(tǒng)移植到Android系統(tǒng)上,并在應用框架中加入對ZigBee網絡的支持,使Android機頂盒升級為家庭網關,實現(xiàn)家庭網絡與以太網連接,以便適應開發(fā)性平臺下多業(yè)務發(fā)展的趨勢。
如圖2所示,Android家庭網關系統(tǒng)主要分為系統(tǒng)空間和用戶空間,系統(tǒng)空間主要為Linux內核驅動層,用戶空間主要為本地運行時庫、應用程序框架和應用程序層。
圖2 Android家庭網關軟件架構
最底層為Linux驅動層,屬于內核空間,為上層提供驅動的支持;第二層為本地方法框架層,為上層提供系統(tǒng)運行時支撐庫,網關的本地方法庫都集中在這層;第三層屬于Android應用框架層,對用戶界面和系統(tǒng)資源管理提供一般抽象,網關管理器完成ZigBee協(xié)議與TCP/IP協(xié)議數(shù)據(jù)包的轉換;第四層是應用層,調用應用程序框架的接口實現(xiàn)界面設計。
家庭物聯(lián)網網關系統(tǒng)協(xié)議模型上主要處理Zig?Bee協(xié)議與TCP/IP協(xié)議的轉換(見圖3),主要包括3個方面:
1)無線通信協(xié)議:家庭物聯(lián)網由ZigBee無線傳感器網絡組成,網絡通信采用了載波監(jiān)聽多點接入/沖突避免(CSMA/CA)接入方式,保證了ZigBee數(shù)據(jù)包傳輸?shù)目煽啃浴AC與PHY由IEEE802.15.4工作小組制定,網絡層(NWK)與應用支持層(APS)則由ZigBee聯(lián)盟制定[4],開發(fā)只需針對應用層、ZigBee設備對象(ZDO)、ZigBee應用對象(ZAO),再根據(jù)具體需求對ZigBee協(xié)調器、路由器、終端節(jié)點進行設計。
圖3 網關系統(tǒng)協(xié)議模型
2)以太網協(xié)議:主要負責網關入網功能,以太網物理層和鏈路層采用IEEE802.3 PHY和IEEE802.3 MAC標準,網絡層的以太網數(shù)據(jù)幀與IP接口傳輸采用IEEE802.3 LLC標準,傳輸層則采用面向連接的可靠TCP協(xié)議。
3)網關應用層:負責數(shù)據(jù)封包拆包轉換,遠程用戶需要操作瀏覽器發(fā)送請求,通過Internet發(fā)送到服務器,在服務器內部解析請求信息中包含的節(jié)點信息,加上請求操作的類型信息,組裝成數(shù)據(jù)幀格式向ZigBee協(xié)調器發(fā)送。協(xié)調器收到數(shù)據(jù)報文之后,對報文數(shù)據(jù)進行解析得到命令與地址,根據(jù)地址表找到終端節(jié)點,從而根據(jù)命令類型操作終端節(jié)點。
在家庭網關系統(tǒng)通過串口連接協(xié)調器進行通信,進一步的數(shù)據(jù)轉換則達到協(xié)議轉換的目的,機頂盒和協(xié)調器采用“主機—從機”方式,主機發(fā)送請求后監(jiān)聽從機回饋消息。
如圖4所示,網關系統(tǒng)管理器(Gateway System Manager)由網關應用接口(Interface)、消息緩沖區(qū)(Message Queue)、串口服務進程(Uart Server)組成。
圖4 網關系統(tǒng)管理器設計
網關應用接口處于系統(tǒng)框架層,主要負責對上層請求命令進行解析,封裝成消息通過管道傳給串口服務進程,并監(jiān)聽消息緩沖區(qū)的回饋消息,返回請求的結果。
消息緩沖區(qū)主要由消息隊列、信號量以及管道構成,其中管道完成進程間的請求應答機制,消息隊列采用“生產者—消費者”模型設計,串口服務進程作為生產者將回饋消息分發(fā)到消息隊列,客戶端管道則作為消費者讀取消息隊列的消息。
串口服務進程負責與ZigBee協(xié)調器通信,將消息內容轉換成ZigBee模塊識別的數(shù)據(jù)幀格式,數(shù)據(jù)幀為“幀頭+消息+校驗字”的格式。寫操作向協(xié)調器發(fā)送數(shù)據(jù)幀,再由監(jiān)聽子線程讀取協(xié)調器回饋的數(shù)據(jù)幀,校驗數(shù)據(jù)幀后轉換成消息再分發(fā)到消息緩沖區(qū)。
網關應用管理器為上層應用中的本地管理和遠程管理提供兩種方式的接口:遠程管理屬于瀏覽器/服務器(B/S)架構,管理器為網頁服務器提供C語言接口;本地家庭信息系統(tǒng)則由Android應用開發(fā),管理器使用JNI(Java Native Interface)標準向上層應用提供Java語言接口。
家庭網絡通過網關服務器來接入以太網,考慮到服務器安全性和穩(wěn)定性,網關服務器采用Embedthis公司為嵌入式實時操作系統(tǒng)(RTOS)量身定制的Goahead服務器。Goahead運行時所需內存小,支持安全套接字SSLv3協(xié)議、HTTP/1.1協(xié)議、AJAX技術,是一款安全、可靠、擴展性強的服務器,服務器以守護進程的形式運行在系統(tǒng)后臺。
Goahead服務器支持SSL功能,需在編譯的時候加入密碼學安全程序包OpenSSL,完成sslOpen,sslClose,sslUpgrade,sslRead,sslWrite,sslSetCertFile,sslSetKey?File等基本接口。
遠程監(jiān)控的動態(tài)網頁主要是使用AJAX技術,瀏覽器通過Javascript發(fā)送請求(XMLHttpRequest),服務器解析請求后使用CGI調用網關管理接口向ZigBee模塊發(fā)送消息,獲得回饋消息后再向瀏覽器推送內容(Response),最終在瀏覽器與服務器之間建立異步數(shù)據(jù)傳輸。
安全套接層(Secure Socket Layer,SSL)協(xié)議介于傳輸層和應用層之間,家庭網關采用SSL協(xié)議來保證消息的保密性、完整性、不可抵賴以及真實性。SSL協(xié)議提供數(shù)據(jù)加密、數(shù)字簽名、數(shù)字證書等安全服務。SSL協(xié)議的數(shù)據(jù)加密算法用于消息保密性,確保明文消息不會被第三方竊取;數(shù)字簽名用于消息完整性,確保消息在傳輸過程中不會被篡改;數(shù)字證書用于身份認證,確保通信的雙方具有真實性和不可抵賴性[5]。
SSL協(xié)議的應用主要為雙方握手建立安全信道和數(shù)據(jù)流在安全信道上傳輸,關鍵的安全措施體現(xiàn)在SSL握手協(xié)議上,服務器和客戶端握手過程主要完成:1)協(xié)商出用于安全信道加密的對稱密鑰;2)通過數(shù)字證書簽名來驗證通信雙方的身份。
SSL雙向認證握手流程主要分為4個階段:
1)建立安全能力:首先是客戶端向服務器發(fā)送Client Hello消息,包含了客戶端所支持的安全能力:SSL版本(Version)、密碼套件(Cipher suite)、壓縮算法(Compression method)、會話號(Session id);服務器選擇適合的安全能力,向客戶端發(fā)送Server Hello消息來告知客戶端,同時雙方通過消息交換一個初始的隨機數(shù)用于會話主密鑰。2)驗證服務器與密鑰交換:服務器向客戶端發(fā)送數(shù)字證書與公鑰用于驗證,同時向客戶端發(fā)送驗證請求,并結束Hello消息階段。3)驗證客戶端與密鑰交換:客戶端向服務器發(fā)送自己的數(shù)字證書用于驗證,同時發(fā)送證書認證確認消息,里面包含客戶端的數(shù)字簽名,保證不可抵賴性。4)完成:客戶端和服務器改變加密規(guī)范(Change Cipher Specs),生成客戶端和服務器使用的對稱密鑰,完成握手。握手協(xié)議工作過程如圖5所示。
圖5 雙向認證SSL握手流程
瀏覽器使用目前流行的火狐瀏覽器(FireFox),在設置中將SSLv3.0與TLS1.0選項開啟,并在安全設備選項中開啟美國聯(lián)邦信息處理標準(FIPS),完成配置之后在網頁地址欄中輸入https://服務器IP:端口號即可使用SSL協(xié)議進行安全訪問。
用戶管理系統(tǒng)包括用戶口令認證和權限管理,用于保證家庭網關不被非法登錄竊取信息。用戶管理文件以XML文件形式保存在文件系統(tǒng)上,包含了用戶信息和權限信息:用戶屬性記錄包括用戶名(User name)、散列密碼(Password)、所屬用戶組(Roles);群組屬性記錄包括組名(Roles)、權限(Abilities)。
新用戶注冊流程:1)家庭網關識別插入CA智能卡,在本地應用中以預置的管理員登陸用戶管理系統(tǒng);2)添加新用戶,填寫新注冊用戶名、密碼口令,根據(jù)不同權限選擇所在用戶組;3)管理文件中不保存明文密碼來防止破解,而是以“用戶名:智能卡號:密碼”形式計算MD5散列值再保存。
遠程用戶網頁登錄:1)用戶名和密碼以表單形式發(fā)送POST請求;2)服務器使用通用網關接口(CGI)程序解析表單請求;3)服務器根據(jù)“用戶名:智能卡號:密碼”計算得出MD5散列值,與用戶管理文件中散列密碼進行比較,一致則登錄成功,推送監(jiān)控信息頁面。
本地用戶登錄:1)在Android應用上,使用文本輸入框(EditText)控件輸入用戶名和密碼;2)以同樣的規(guī)則計算MD5散列值,與管理文件中散列密碼記錄對比,一致則允許登錄監(jiān)控系統(tǒng)。
Android系統(tǒng)框架運行于Linux內核之上,作用類似于標準中間件,為廣電運營商統(tǒng)一軟硬件平臺提供了無限可能。本文提出的家庭網關解決方案適用于Android高清機頂盒,在支持DVB業(yè)務的基礎上,解決家庭網絡接入以太網的關鍵問題。網關系統(tǒng)中異步數(shù)據(jù)通道可以有效解決多端登錄沖突問題,SSL安全協(xié)議使用通信雙方協(xié)商的加密算法和密鑰,可以根據(jù)需要定義不同的安全級別,用戶認證登錄則結合CA智能卡進行散列驗證,安全性高于靜態(tài)密碼。機頂盒作為電視屏幕內容的載體,連接互聯(lián)網后的內容管控措施是必要的,如何在內容管控和平臺開發(fā)性上尋求一個平衡點,這也是解決安全性問題之后需要面對的問題。
:
[1]趙志峰,張衛(wèi).面向NGB的數(shù)字家庭服務平臺[J].電視技術,2012,36(16):25-28.
[2]章堅武,顏歡,包建榮.智能家庭網關設計及其物聯(lián)網應用[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.