摘 要: 隨著智能手機(jī)的日益普及,智能手機(jī)應(yīng)用的安全問題愈來愈多地引起人們的關(guān)注,尤其是在諸如網(wǎng)上交易、網(wǎng)上銀行賬戶管理等敏感應(yīng)用方面。不斷涌現(xiàn)的新病毒與惡意軟件令傳統(tǒng)的殺毒防毒工具難以抵擋。在分析Android平臺的基礎(chǔ)上,指出了Android平臺智能手機(jī)存在的安全問題,提出通過引入虛擬化技術(shù),把敏感應(yīng)用與普通應(yīng)用進(jìn)行隔離的方法,從而滿足用戶對不同應(yīng)用的安全要求。
關(guān)鍵詞: 智能手機(jī); Android平臺; 應(yīng)用安全; 虛擬化方案
中圖分類號: TN911?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2013)24?0035?03
Security issues of Android OS and its countermeasures
LI Fang?she
(Beijing University of Civil Engineering and Architecture, Beijing 100044, China)
Abstract: The security issues existing in smartphone applications are increasingly concerned by the people, especially for sensitive applications such as transaction and financial management over networks. It is difficult for traditional anti virus tools to cope with new arising virus and malware. Based on the analysis of Android platform, a solution that separates the sensitive application from general application by virtualization technology is presented in this paper. The aim is to satisfy the security requirements of different applications of users.
Keywords: smartphone; Android platform; application security; virtualization scheme
0 引 言
近年來,智能手機(jī)的使用迅速普及。很多人把智能手機(jī)作為計(jì)算機(jī)的替代品,原先在PC機(jī)上執(zhí)行的操作也可以在智能手機(jī)上實(shí)現(xiàn)。智能手機(jī)不僅用于通信,還可用于文字處理、訪問互聯(lián)網(wǎng)[1]。隨著網(wǎng)上電子交易越來越流行,網(wǎng)絡(luò)購物、網(wǎng)絡(luò)銀行賬戶管理以及其他類型網(wǎng)上交易不可避免地對智能手機(jī)使用的安全性提出了更高的要求。本文分析了使用較多的Android平臺智能手機(jī)存在的安全問題,并針對存在的問題提出用虛擬化技術(shù)應(yīng)對的方法。
1 Android平臺的安全問題
自2008年在HTC G1中使用Android OS起,Android操作系統(tǒng)已經(jīng)經(jīng)歷了一段較長的發(fā)展歷程。Android OS現(xiàn)已占據(jù)智能手機(jī)一半以上的市場份額。基于云計(jì)算的Android應(yīng)用可直接下載到移動設(shè)備上運(yùn)行,目前已有超過了40多萬個應(yīng)用[4]。
Android操作系統(tǒng)的體系結(jié)構(gòu)主要由Linux內(nèi)核、函數(shù)庫、應(yīng)用框架構(gòu)和應(yīng)用組成[3],如圖1所示。操作系統(tǒng)的內(nèi)核是硬件與軟件棧之間的抽象層,其中包括了內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧和設(shè)備驅(qū)動。內(nèi)核的上一層是函數(shù)庫,包含了一系列處理不同種類數(shù)據(jù)的函數(shù)。其中包括了C系統(tǒng)函數(shù)庫和LibWebCore(面向Web瀏覽器引擎),主要針對音頻、視頻媒體實(shí)體以及圖形處理。Android運(yùn)行庫包括了一組核心Java函數(shù)庫。Android的應(yīng)用采用Java編程語言開發(fā)。應(yīng)用框架層包括了一些設(shè)備管理基本功能的應(yīng)用程序如導(dǎo)航、通話及資源分配。Android應(yīng)用開發(fā)人員可以訪問應(yīng)用框架,使用設(shè)備處理能力構(gòu)建應(yīng)用程序。應(yīng)用層是用戶和設(shè)備的接口。
圖1 Android OS體系結(jié)構(gòu)
伴隨著智能手機(jī)使用的普及,與智能手機(jī)相關(guān)的安全問題也迅猛上升。部署Android平臺的智能手機(jī)已占到了一半以上,Android平臺同時也變成了病毒及惡意軟件開發(fā)者的潛在目標(biāo)[2]。助長惡意軟件滋生的因素有:
(1)多廠家部署。Google依賴于廠家部署、更新Android OS,修補(bǔ)操作系統(tǒng)的漏洞。使用Google的Android OS制造智能手機(jī)的一些著名廠家包括:Samsung,HTC,LG和Motorola等。如同對應(yīng)用軟件打補(bǔ)丁、更新一樣,Android OS也需要定期對其漏洞進(jìn)行修補(bǔ)、更新。Android OS也是通過版本進(jìn)化的,當(dāng)新的、升級的Android OS版本發(fā)布時,各廠家通常在它們的設(shè)備中便使用新版本,而使用老版本的設(shè)備卻沒有給予應(yīng)有的關(guān)注,進(jìn)行相應(yīng)的版本升級,從而在很大程度上導(dǎo)致存在潛在的漏洞。
(2)無應(yīng)用評估。不像蘋果的應(yīng)用商店,Google對Android平臺上的應(yīng)用在發(fā)布之前并沒有進(jìn)行安全風(fēng)險(xiǎn)評估。Android平臺的應(yīng)用可以通過多個渠道獲得,這就使得應(yīng)用存在潛在的安全風(fēng)險(xiǎn)。Google以及生產(chǎn)廠家缺乏對應(yīng)用進(jìn)行風(fēng)險(xiǎn)評估這就為各種安全問題留下了隱患,導(dǎo)致Android應(yīng)用很可能含有惡意軟件,為各種窺探軟件訪問設(shè)備提供了后門。
(3)開放源代碼。Android OS是以開放源代碼形式提供的。這意味著業(yè)內(nèi)所有使用者可以自由定制Android OS以滿足自己的需要。Android基于Linux的內(nèi)核,繼承了Linux內(nèi)核的主要安全功能,如OS級安全,所有應(yīng)用獨(dú)立,進(jìn)程之間安全通信,用戶許可等。但是,它提供的安全功能存在著一些漏洞。例如,所有應(yīng)用都需要用戶許可才能執(zhí)行其相應(yīng)功能,但是這些應(yīng)用并沒有指出為什么需要許可。多數(shù)用戶盲目地允許應(yīng)用所要求的所有許可,沒有考慮這樣做意味著什么。這就使設(shè)備變得愈加脆弱,為黑客操縱設(shè)備提供了后門。盡管開放源代碼比其他平臺具有優(yōu)勢,但是也增加了平臺的脆弱性。
(4)Rooting。Android平臺中有一個Rooting進(jìn)程,用戶通過該進(jìn)程可以獲得設(shè)備的Root特權(quán)(也稱作超級用戶)。不同廠家的Android手機(jī)Rooting進(jìn)程不盡相同。例如Rooting HTC手機(jī)需要關(guān)閉一個設(shè)備安全進(jìn)程。這樣,才可以打開閃存,進(jìn)行寫入。通過專用工具就可以獲取HTC Android手機(jī)的Root。Root允許為用戶提供必要的特權(quán)直接與操作系統(tǒng)打交道。另外,也有其他的應(yīng)用,如“CPU Tuner”,它允許用戶微調(diào)操作系統(tǒng)以改善操作系統(tǒng)的性能。顯然,這些都會使Android設(shè)備對窺探及其他惡意軟件變得更加脆弱了。當(dāng)窺探軟件通過Root許可訪問設(shè)備時,它就可能毫無限制地從設(shè)備竊取所有信息。
2 虛擬化解決方法
開始人們以為智能手機(jī)對病毒和惡意軟件有免疫力,但從2010年起Android系統(tǒng)就頻繁出現(xiàn)故障。調(diào)查顯示針對Android平臺已知的惡意軟件數(shù)量迅速增加。其中大部分已知的惡意軟件來自安裝在移動設(shè)備上的應(yīng)用,另一部分是SMS的木馬病毒[5?6]。于是,防病毒應(yīng)用就應(yīng)運(yùn)而生了。現(xiàn)在隨著移動設(shè)備的增加,傳統(tǒng)的防病毒應(yīng)用也轉(zhuǎn)戰(zhàn)到Android平臺,為智能手機(jī)提供的防病毒工具的功能類似于針對PC機(jī)的防病毒功能。除了提供防護(hù)病毒、惡意軟件和窺探外,還提供手機(jī)數(shù)據(jù)備份,遠(yuǎn)程刪除手機(jī)數(shù)據(jù),查找手機(jī)位置。防病毒在一定程度上保護(hù)了手機(jī),但是到底能在多大程度上起作用仍不明朗。因?yàn)獒槍σ苿悠脚_每天都有新的病毒和惡意軟件出現(xiàn)。
眾所周知,諸如網(wǎng)絡(luò)交易、網(wǎng)絡(luò)銀行賬戶管理等敏感應(yīng)用也需要在操作系統(tǒng)之上運(yùn)行,如果未知和不安全的應(yīng)用與敏感應(yīng)用運(yùn)行在同一OS上就會給敏感應(yīng)用帶來很多安全風(fēng)險(xiǎn)。如果把普通應(yīng)用與敏感應(yīng)用進(jìn)行隔離,使敏感應(yīng)用運(yùn)行在一個具有嚴(yán)格安全策略并能監(jiān)控應(yīng)用的定制操作系統(tǒng)之上,而將普通應(yīng)運(yùn)行在常規(guī)操作系統(tǒng)之上就可阻斷惡意軟件對敏感應(yīng)用的攻擊。很顯然,將虛擬化技術(shù)引入智能手機(jī)就可實(shí)現(xiàn)讓多個操作系統(tǒng)同時在一個設(shè)備上運(yùn)行[7],如圖2所示。
圖2 虛擬化體系結(jié)構(gòu)
智能手機(jī)的應(yīng)用被分成兩個獨(dú)立部分。OS2為常規(guī)手機(jī)操作系統(tǒng),在此當(dāng)中用戶可以不加限制地去做他們想做的,安裝他們想要的應(yīng)用。OS1為一個定制的操作系統(tǒng),按照通用標(biāo)準(zhǔn)進(jìn)行認(rèn)證,并執(zhí)行嚴(yán)格的安全策略。專門用于運(yùn)行安全敏感的應(yīng)用,如網(wǎng)上支付,網(wǎng)上銀行賬戶管理、電子簽名等。只有那些敏感且允許的應(yīng)用才能安裝在這部分。OS1支持認(rèn)證管理,安裝到該部分的應(yīng)用編碼應(yīng)由第三方分析驗(yàn)證。
3 虛擬化實(shí)施方案
一般情況下,移動平臺使用的處理器不支持硬件虛擬化。因此,必須采用超虛擬化方法。虛擬化環(huán)境能使多個客體OS并行運(yùn)行在同一硬件平臺上。它帶來了諸多好處:
(1)整合了多個OS。OpenOS與RTOS可以并行運(yùn)行,不會影響各操作系統(tǒng)所支持的應(yīng)用。客體OS僅需在它們的硬件抽象層略做調(diào)整就能在虛擬化環(huán)境下運(yùn)行。
(2)代碼重用。OS的大部分代碼可以重用而無需修改。OS已有的設(shè)備驅(qū)動程序、協(xié)議棧和系統(tǒng)模塊可以直接重用,已有的應(yīng)用程序也可以不加修改就能在新環(huán)境下運(yùn)行。
(3)設(shè)備分配。設(shè)備可以分配給指定的分區(qū)或者由不同客體OS安全地共享。
(4)提高了安全性。虛擬化方案通過硬件加強(qiáng)內(nèi)存分區(qū)隔離,使OS之間互不干擾,從而提供了強(qiáng)有力的安全保障。此外,還可以添加特定分區(qū),用于執(zhí)行安全應(yīng)用。
(5)增強(qiáng)了可用性。可以透明地監(jiān)控客體OS。如果一個客體OS崩潰了,就按配置重啟該客體OS。一個客體OS的崩潰不會影響其他客體OS的正常運(yùn)行,由于通過軟件觸發(fā)重啟客體OS,跨越了硬件機(jī)制,所以能以更快速度恢復(fù)服務(wù)。因此,整個系統(tǒng)的可靠性提高了。
虛擬化建立在虛擬機(jī)(VMM)基礎(chǔ)之上,虛擬機(jī)提供了內(nèi)存分區(qū)、基本設(shè)備虛擬化以及客體OS的調(diào)度[8?9]。
(6)資源分區(qū)。物理內(nèi)存必須分區(qū),每個內(nèi)存分區(qū)分配給一個指定的客體OS。這樣,每個客體OS就可以使用自己已有的內(nèi)存管理機(jī)制,不會干擾其他客體OS。這種方法允許有MMU的客體OS與無MMU的客體OS并行運(yùn)行在同一硬件平臺上。一個客體OS使用的I/O設(shè)備就只分配該客體OS,已有的驅(qū)動程序可以不加修改地重用。
(7)資源虛擬化。客體OS所需的硬件資源,如CPU,MMU和FPU,經(jīng)虛擬化后在客體OS之間共享。CPU按調(diào)度策略在客體OS間共享,一旦一個客體OS獲得CPU使用權(quán),則該客體OS就使用其既有的策略調(diào)度應(yīng)用和服務(wù)。
(8)OS隔離。內(nèi)存分區(qū)被可靠地彼此隔離,于是一個客體OS就不會讀寫到另一個客體OS的內(nèi)存分區(qū)。客體OS所執(zhí)行的I/O訪問受到相應(yīng)的控制。
(9)虛擬外圍設(shè)備。使用與實(shí)際硬件無關(guān)的虛擬設(shè)備配置客體OS。例如,為二個或二個以上的客體OS配置一個虛擬的以太網(wǎng),這樣客體OS之間就能用TCP/IP進(jìn)行通信。
(10)通信。虛擬化方案為每個客體OS提供了同步機(jī)制,即虛擬交叉中斷機(jī)制,以及OS間通信機(jī)制。虛擬共享外圍設(shè)備通常使用低級通信機(jī)制。在低級通信機(jī)制的頂端設(shè)置適當(dāng)?shù)奶摂M外圍設(shè)備驅(qū)動程序,以此保證通信很好地滿足應(yīng)用的需要。同時隱藏了底層的復(fù)雜性,這使得運(yùn)行在一個客體OS上的應(yīng)用與在另一客體OS上運(yùn)行的應(yīng)用之間進(jìn)行有效的通信。
4 結(jié) 論
本文提出的方法旨在加強(qiáng)移動設(shè)備的安全功能,提出了把敏感應(yīng)用和普通應(yīng)用嚴(yán)格隔離,提升了對敏感應(yīng)用訪問時所需的安全控制。這樣做有許多好處:它能同時滿足用戶隨心所欲的需要以及敏感應(yīng)用的安全需要。用戶可以做他想要的,而不必?fù)?dān)心對其敏感應(yīng)用產(chǎn)生不良影響。另一好處就是,這種方法不需要額外的硬件。因此,這樣的架構(gòu)容易部署。
參考文獻(xiàn)
[1] Apple. Iphone in business security overview [R]. USA: Apple, 2009.
[2] SHABTAI A, FLEDEL Y, KANONOV U, et al. Google Android: a comprehensive security assessment [J]. IEEE Security and Privacy, 2010, 8(2): 35?44.
[3] ENCK W, ONGTANG M, MCDANIEL P. Understanding Android security [J]. IEEE Security Privacy, 2009, 7(1):50?57.
[4] RAMACHANDRAN R, OH T, STACKPOLE W. Android anti?virus analysis [C]// Annual Symposium on Information Assurance Secure Knowledge Management. Albany, NY: IASKM, 2012: 11?17.
[5] MILLER C. Mobile attacks and defense [J]. Security Privacy, IEEE, 2011, 9(4): 68?70.
[6] DEALC G, SILIC M, KROLO J. Emerging security threats for mobile platforms [C]// MIPRO, 2011 Proceedings of the 34th International Convention. [S.l.]: [s.n.], 2011: 1468?1473.
[7] 李芳社.用虛擬化技術(shù)應(yīng)對智能手機(jī)的安全[J].現(xiàn)代電子技術(shù),2013,36(8):95?97.
[8] 陳光.基于虛擬化技術(shù)開發(fā)環(huán)境的研究[J].信息技術(shù),2010(3):13?15.
[9] 田冰超.虛擬化技術(shù)研究與探索[J].武警學(xué)院學(xué)報(bào),2010(7):16?18.