胡冰松,黃小桑
(中國電信股份有限公司上海研究院中國電信IPTV實驗室 上海200122)
智能機頂盒功能豐富、業(yè)務開發(fā)方便,已經(jīng)成為傳統(tǒng)運營商以及新興OTT(over the top)運營商的首選設備。目前這類設備基本采用Android操作系統(tǒng)。Android智能機頂盒終端軟件系統(tǒng)的開放性在引發(fā)終端變革的同時也帶來了軟件安全隱患,非法刷機、安裝非法應用軟件、更改系統(tǒng)安全相關設置及終端配置等操作,使得業(yè)務安全性受到威脅。因此,智能機頂盒終端設備亟需在安全方面多加考慮,以滿足開放環(huán)境下業(yè)務與終端的安全性。本文就上述問題展開探討,提出了一種適合電信運營的終端軟件安全方案,該方案從芯片層面為智能機頂盒設備提供軟件安全保障,對于提高基于智能機頂盒的業(yè)務運營能力具有重要意義。
智能機頂盒作為用戶側設備,其安全性直接關乎業(yè)務運營與用戶應用安全。由于采用Android智能操作系統(tǒng),如果不對軟件進行有效管理,被非法程序(如木馬等)入侵后,用戶的業(yè)務數(shù)據(jù)(用戶名、密碼、平臺地址身份信息等)面臨高風險,用戶與運營商都可能因此面臨巨額損失。為了保護用戶與運營商,需要從軟件保護、終端認證、應用安裝3個方面保證機頂盒終端安全。對于應用安裝來說,可以對軟件安裝進行控制,只允許安裝來自運營商應用商城的軟件,由運營商對發(fā)布的應用進行審核,以確保安全。但應用安裝的安全性取決于終端系統(tǒng)軟件的安全性,可以通過采用基于芯片的安全機制確保終端系統(tǒng)的安全以及對終端進行合法性驗證,使業(yè)務系統(tǒng)的安全域覆蓋包括平臺與終端的完整范圍。
智能機頂盒的軟件系統(tǒng)包含引導區(qū)、恢復區(qū)、內(nèi)核區(qū)、系統(tǒng)數(shù)據(jù)區(qū)、用戶數(shù)據(jù)區(qū)5個部分,如圖1所示。
其中,引導區(qū)的功能是對系統(tǒng)基本硬件(如存儲器等)進行初始化,使得后續(xù)執(zhí)行的軟件具備基本的運行環(huán)境。引導程序完成系統(tǒng)初始化后,根據(jù)系統(tǒng)的狀態(tài)執(zhí)行恢復區(qū)程序或內(nèi)核程序?;謴统绦虻闹饕饔檬擒浖壘S護。當系統(tǒng)需要升級時,恢復程序被引導程序載入內(nèi)存并執(zhí)行,完成系統(tǒng)升級;當系統(tǒng)需要恢復默認出廠狀態(tài)時,也是由恢復程序根據(jù)操作維護指令完成恢復出廠狀態(tài)。當引導狀態(tài)為正常啟動時,引導程序?qū)?nèi)核載入內(nèi)存,并將控制權交給內(nèi)核,由內(nèi)核完成正常引導,包括加載RAM disk與flash文件系統(tǒng)、啟動Android系統(tǒng)等。系統(tǒng)數(shù)據(jù)區(qū)主要包括Android系統(tǒng)軟件以及Android核心應用;用戶數(shù)據(jù)區(qū)用于存放用戶選裝軟件以及用戶軟件所需的運行數(shù)據(jù)。
一般來說,系統(tǒng)軟件的升級過程由終端用戶下載包含內(nèi)核區(qū)域系統(tǒng)數(shù)據(jù)區(qū)的系統(tǒng)鏡像image,啟動恢復程序?qū)?nèi)核區(qū)與系統(tǒng)數(shù)據(jù)區(qū)進行重新燒寫。
由于Android系統(tǒng)的開放性,會有愛好者針對不同的硬件平臺開發(fā)不同功能的image供用戶選擇升級。但這種情況往往會被不懷好意者利用,使得終端用戶或運營商遭受損失。
另外,終端核心數(shù)據(jù)(如用戶業(yè)務認證信息、平臺數(shù)據(jù)信息)如果存放在flash區(qū)域,則可以通過軟件方便地獲取或修改,這些數(shù)據(jù)的泄露會使運營商面臨終端失控,使合法用戶的業(yè)務被非法使用,業(yè)務安全性無法得到保障。
因此,對于智能機頂盒終端,首先要確保終端軟件系統(tǒng)的安全,杜絕軟件非法升級,并保護終端核心數(shù)據(jù)不被泄露。
從上述系統(tǒng)結構來看,如果要確保系統(tǒng)不被惡意修改,必須具備更底層的安全機制,從根本上保證軟件的合法升級、數(shù)據(jù)被適當使用。CPU是智能終端設備的核心芯片,如果CPU具備安全機制將是終端軟件合法性的有力保障。
另外,從安全學的角度看,軟件與任何其他采用數(shù)字技術的文檔一樣,可以通過數(shù)字簽名驗證簽發(fā)者的合法性。
安全芯片正是從上述兩個基本出發(fā)點解決終端系統(tǒng)的安全性問題。安全芯片通過芯片內(nèi)部的安全模塊驗證外部數(shù)據(jù)(內(nèi)存芯片中的程序)的合法性,只有確認內(nèi)存中的程序合法之后,才會將系統(tǒng)控制權交給外部程序,從而開始智能終端的軟件執(zhí)行過程。
安全芯片的架構如圖2所示。安全芯片除普通SOC芯片具備的各種寄存器、片內(nèi)外設以外,還有一個稱為安全域的特殊部分,該部分由安全算法模塊與片內(nèi)安全數(shù)據(jù)組成。其中,安全算法模塊實現(xiàn)各種加密算法與散列算法,如RSA、AES、SHA、HMAC等,并可以對芯片外部存儲器的數(shù)據(jù)進行簽名驗證,以確認將要啟動的程序是否合法,只有外部存儲器中的程序通過簽名驗證、證明合法后才會被執(zhí)行。
片內(nèi)安全數(shù)據(jù)一般是OTP(一次性寫入)數(shù)據(jù),這些數(shù)據(jù)具有可讀屬性,只有那些可讀屬性為真的數(shù)據(jù)才能被外部存儲器中的程序讀取,而不可讀數(shù)據(jù)只能被安全算法作為參數(shù)使用,外部程序無法讀取這些數(shù)據(jù)本身,只能將需要加/解密的數(shù)據(jù)傳遞給安全域,得到以OTP數(shù)據(jù)作為參數(shù)的加/解密結果。因此,只要確保這些OTP數(shù)據(jù)的唯一性,即可確保每一片芯片的唯一性,通過與業(yè)務平臺的配合實現(xiàn)高等級的終端安全機制。
安全智能機頂盒終端軟件基本架構如圖3所示。
終端軟件系統(tǒng)分為安全域與普通域兩個基本部分。用戶可接觸位于普通域中的代碼與數(shù)據(jù),存儲介質(zhì)是flash與RAM。安全域是用戶以及普通域的代碼不能直接接觸的部分,部分核心數(shù)據(jù)對于普通域是不可見的,安全域位于CPU片內(nèi)。
·CPU利用安全域的片內(nèi)引導程序?qū)ζ胀ㄓ虼a進行基本的合法性驗證,通常采用數(shù)字簽名方法或代碼加密方法實現(xiàn)。
·安全算法引擎提供各類加密與散列算法,供普通域代碼調(diào)用。
·OTP數(shù)據(jù)域存放用戶身份數(shù)據(jù)與加密算法密鑰。
·終端身份認證計算并輸出終端身份認證所需的認證數(shù)據(jù)。
·普通域中的引導程序是終端在啟動過程中CPU執(zhí)行的第一段片外代碼,引導程序可根據(jù)不同的啟動狀態(tài)執(zhí)行系統(tǒng)恢復程序或系統(tǒng)內(nèi)核。
·系統(tǒng)恢復程序可對系統(tǒng)內(nèi)核、系統(tǒng)數(shù)據(jù)區(qū)、應用數(shù)據(jù)區(qū)進行升級、初始化等管理。
·系統(tǒng)內(nèi)核執(zhí)行后將系統(tǒng)引導到終端的正常功能狀態(tài),在該狀態(tài)下用戶可通過終端正常使用業(yè)務功能。
·系統(tǒng)數(shù)據(jù)區(qū)是終端最小的應用軟件與數(shù)據(jù)存放區(qū),終端只能通過軟件升級與恢復對系統(tǒng)數(shù)據(jù)區(qū)進行修改。
·應用數(shù)據(jù)區(qū)是用戶選擇安裝程序與數(shù)據(jù)的存放區(qū)域,終端可在運行時對該區(qū)域進行修改操作。
智能機頂盒通過采用安全芯片并使用特定的系統(tǒng)安全流程,實現(xiàn)終端軟件系統(tǒng)的安全性,并保護業(yè)務系統(tǒng)的核心業(yè)務數(shù)據(jù),從而確保用戶與運營商的信息與設備安全。
中國電信的智能機頂盒安全方案主要包括安全啟動與終端驗證兩部分。安全引導過程如圖4所示。
CPU對終端引導程序的驗證以及后續(xù)引導過程中的驗證過程均采用安全、有效的驗證算法,如基于SHA256+RSA2048的數(shù)字簽名驗證、基于AES128的代碼加密方法。用于驗證的密鑰存放在OTP區(qū)域或以OTP區(qū)域數(shù)據(jù)為密鑰進行加密后存放在flash中。圖4中涉及的簽名驗證均采用全覆蓋簽名驗證方式。
當內(nèi)核被引導后,內(nèi)核需要以文件系統(tǒng)或其他方式加載系統(tǒng)數(shù)據(jù)區(qū)中的數(shù)據(jù)。內(nèi)核在加載系統(tǒng)數(shù)據(jù)區(qū)之前以及系統(tǒng)正常運行之后,都會對系統(tǒng)數(shù)據(jù)區(qū)采用隨機抽樣的片區(qū)數(shù)據(jù)驗證方式進行合法性驗證。
在系統(tǒng)軟件升級時,系統(tǒng)恢復程序?qū)⒁糜谙到y(tǒng)升級或恢復的所有數(shù)據(jù)采用與引導程序相同的合法性驗證方法進行驗證。
從圖4可以看出,智能終端從終端上電開始逐步對終端軟件的各個部分進行合法性驗證,整個過程構成了一個完整的安全鏈,極大地提升了終端軟件的安全性。
在確保終端軟件安全的情況下,為了驗證終端本身的合法性,中國電信的安全終端還引入了如圖5所示的終端身份驗證機制。
圖5中終端管理程序與內(nèi)核驅(qū)動程序均運行在終端軟件系統(tǒng)的普通域,實現(xiàn)平臺的身份認證協(xié)議。在身份認證過程中,終端在內(nèi)核提供安全域訪問的驅(qū)動程序,并提供應用調(diào)用API。內(nèi)核驅(qū)動程序?qū)⒔K端管理程序API的相應請求發(fā)送到CPU安全域,由其返回對應的結果。圖5中的SN為終端序列號,具備唯一性,存放在OTP區(qū)域,外部程序可讀,而其他加密密鑰均不可讀。
通過采用可靠的終端啟動安全鏈,配合終端身份驗證機制,基本阻斷了非法軟件以及非法終端的接入途徑,實現(xiàn)了可信終端。
中國電信智能機頂盒的安全流程除了安全啟動流程外,還引入了基于芯片的終端身份驗證機制,通過終端身份驗證機制實現(xiàn)了對終端合法性的確認,使得業(yè)務的可控安全范圍從業(yè)務平臺擴展到了用戶側,終端成為可信設備,極大地擴展了安全范圍,有力地保證了業(yè)務的安全性。目前該方案已經(jīng)進行了嚴格的實驗室測試,其軟件安全性取決于相關算法安全性以及密鑰管理安全性,是一種較高級別的安全機制。該方案已經(jīng)在中國電信股份有限公司上海分公司進行了試點。
本方案采用高安全級別的芯片安全機制以及OTP數(shù)據(jù)存儲方法,對芯片安全模塊進行了身份驗證擴展,極大地提升了智能機頂盒的安全性,為后續(xù)中國電信智能機頂盒的推廣應用提供了有力保障。