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