2012年1月中旬,美國國家安全局(National Security Agency,NSA)正式發布第一版Android操作系統安全強化套件(Security Enhanced Android,SE Android),并隨之釋出一些相關源代碼;此舉被許多人譽為是Android裝置安全性向上提升的重要一大步。 事實上,美國國家安全局近來所發布的代碼叢輯(Code Base),對Wind River這類Android專家而言是再孰悉也不過的事物,因為Wind River多年來均持續為類型廣泛的各式Android裝置設計并導入復雜的軟件安全層(Security Layer)。只不過,現在這些有助強化安全性的開發成果,在媒體描繪下似乎已被媲美為可解決所有安全疑慮的全方位解決方案,我認為如此看待這些成果稍顯粗略,而且也過度簡化了Android安全性相關議題的復雜程度。 簡單來說,這套SE Android代碼叢輯并非萬靈丹,即使將其編譯并重新安裝至您的Nexus S裝置,也無法確保您的裝置就百分之百地“安全”。Wind River支持Android裝置至今已將近五年時間。這段期間的經驗累積,加上在移動Linux裝置領域身為技術先驅超過十年所沉淀的心得,讓Wind River得以歸納出以下四項最為關鍵的Android安全性議題要點: (一)Android的安全性議題就好比一塊高難度的拼圖,是由許多困難的零碎片段構成,必須費心組裝才能開發出真正安全的Android裝置。 (二)安全性其實是一個以使用案例(Use Case)為基礎所推演出的概念。舉例來說,一部軍用移動通訊終端裝置對安全性的定義及軟硬件需求,就完全不同于運行于車載信息娛樂應用(In-Vehicle Infotainment,IVI)系統上的Android軟件堆疊(Software Stack) 。 (三)安全機制的建置,并非“一次性(Fire-and-Forget)”的做法。務必費心建立一套可長可久的系統,不但要足以抵擋新型態的攻擊,還要可以現地升級至最新的Android版本(必要的話,最好還能針對特定安全防護面向持續更新),同時又能繼續維持或進一步強化其先前的安全層級設定。 (四)最后,光是宣稱一套軟件的建置與導入是“安全的”仍有所不足,必須要有一套測試框架(Framework)以及全自動測試腳本,可以讓待測裝置(DUT,Device Under Test)接受耐壓測試,或是對其模擬各類攻擊并提供可供量測的證明要點(Proof Points),以確保這些類型的攻擊不會影響我們賦予目標裝置的主要使用案例。這套測試框架必須具備擴充能力,可以快速針對已安裝最新版本Android平臺的裝置進行驗證;此外也必須具備足夠彈性,以便納入最新攻擊的腳本。 接下來,我們再深入些探討這四大要點。 根據我們的分析,Wind River已經可以區隔出十幾項領域各異的Android安全性議題,其中包括了使用者身分辨識及驗證、橫跨多重存儲位置(Memory Locations)的用戶數據保護、如何分別過濾接收及傳送之數據、執行事件紀錄(Event Recording)以利遠端稽核(Remote Audit)進行、各類密碼技術(Cryptography)的選用及導入、可信賴路徑(Trusted Paths)、數據保護之版權管理(Rights Management)技術、虛擬化技術以及空(間)域/時(間)域(Spatial/Temporal Domain)區隔、可信賴開機(Trusted Boot)、惡意軟件(Malware)防制、固件(Firmware)更新保護、應用程序安裝管理等等,族繁不及備載。 這邊有個例子,或許能讓您對上述內容有更鮮明的理解。最近因探親之便,我剛好有機會參觀一艘舊式蘇聯潛.艇,這艘潛.艇內建數百個控制閥門,加以熟練操作便可順利管控艇上各式系統。要順利操控這艘船,很明顯得具備兩方面的專業,首先是對各控制閥門功能的明確掌握,另外則是該如何善加管控這些閥門的知識。 掌控Android系統就好比操控這艘潛水.艇,必須了解在什么時點下需要開啟哪個“閥門”,以及需要將它開啟到何種程度。此外,對應用處理器(Application Processor)技術(例如ARM架構或英特爾IA架構)的選用,也將對使用方式有所影響,Wind River Hypervisor這類嵌入式虛擬化技術就是一例。 由于Wind River多年來已針對廣泛類型的各式裝置設計并導入Android安全機制,故可充份滿足上述第二要點之需求。Wind River服務過的裝置包羅萬象,從客制化開發的企業用平板電腦(Tablet)、多媒體話機(Media Phone)、智能手機、通用型平板電腦、車載資訊娛樂應用(IVI)系統,乃至于公共安全應用或是醫療用途的裝置。 有趣的是,縱觀所有已發布的Android計劃,當中有一項共通之處,那就是若要真正確保Android安全性無虞,面對不同類型的裝置便得采取幾乎完全不同的方法才有效果,并無可供一體適用的單一作法。換言之,在導入安全技術的過程中,不同裝置的使用案例具有不同程度的影響力,也因此必須對Android做出不同的客制化調整,甚至連軟件驗證的概念也會因而各異。 對此,若您希望有個具體范例可供了解,不妨參考McAfee和Wind River共同完成的一份技術白皮書,其中針對車載信息娛樂應用列出了一系列安全考量要點。總之,關鍵在于必須了解各類裝置的使用案例,并將其與Android安全性相關的專業知識緊密結合。 至于固件管理,在移動應用領域可說是再尋常也不過的概念。以OMA-DM(Open Mobile Alliance Device Management)為例,這項標準不但行之有年,更已被應用至全球億萬臺移動終端裝置中。對Android裝置來說,現階段浮現的挑戰主要來自于智能手機世界之外;因為在除移動應用外的其他應用領域中,這類以營運商為出發點的裝置、使用者、服務、以及策略管理(Policy Management)的相關基礎建設,可說幾乎一概欠缺。 為滿足此項需求,我們開發出一整套Android解決方案加速開發軟件“Wind River Solution Accelerators for Android”,可提供固件管理功能,使Android裝置得以持續升級至最新版本Android安全性軟件。另一方面,眾多Wind River伙伴廠商也已開發出多款以提升安全性為主軸的策略管理解決方案,可用以因應特定使用案例。 最后,請務必借助專業的測試方案來確認Android安全機制是否已順利導入目標裝置。當然,某些測試內容是可以手動完成的,但是若能善用業界領先的自動化測試工具,例如Wind River針對Android的自動化軟件測試框架(Framework for Automated Software Testing,FAST)解決方案,即可大幅提升測試效率并取得更具意義的測試結果。 尤其當Android待測裝置(DUT)需要被置于超載的環境下測試時,善用工具的助益將更為顯著:例如您可能因為疲勞測試(Soak Test)的需要,而正在執行一個加速的每日測試情境,此時您還可以同步執行一連串預設的攻擊腳本,以模擬待測裝置的反應,而如此龐大的測試負載量,就需要好的工具來助您一臂之力。 所以,若要真正確保Android裝置安全無虞,事實上并沒有任何一體通用或一成不變的單一作法。新推出的Android操作系統安全強化套件(SE Android)可被視為一個新的元件,能協助我們開發出實用且合乎市場需要的軟件解決方案,以進一步提升Android軟件疊層的安全性。 由于各類技術選擇五花八門,各類裝置衍生出的使用案例也包羅萬象,選擇實在過多之下,借助專家的智慧通常仍是必要之舉。如果您對于開發安全的Android裝置有任何疑問或顧慮,請不吝求助專業團隊,向外尋求資源通常是解決問題的最佳途徑! 作者:Chris Buerger,Wind River |