楊 霞,劉維飛,郭文生,廖士鈔,孫海泳
?
基于代理的設備虛擬化技術及其應用
楊 霞,劉維飛,郭文生,廖士鈔,孫海泳
(電子科技大學信息與軟件工程學院 成都 610054)
隨著智能手機逐步成為人們工作和生活不可或缺的隨身設備,其安全性和用戶隱私問題也越來越突出。為解決該問題,提出一種基于Linux容器技術的方法,在同一臺手機設備上建立多個虛擬手機系統(tǒng),使多個相互隔離的Android系統(tǒng)同時運行。為了使多個子系統(tǒng)共享同一臺設備資源,提出了基于代理的設備虛擬化技術,并以手機的Radio設備為例實現(xiàn)了該技術。然后,在一個實現(xiàn)了的原型系統(tǒng)上的測試結(jié)果表明每個虛擬手機系統(tǒng)均可正常使用所有物理設備,說明該方法可有效地實現(xiàn)設備的虛擬化。最后,通過對多系統(tǒng)的數(shù)據(jù)隔離、系統(tǒng)資源開銷的測試驗證了該方法的可行性。由于各虛擬手機系統(tǒng)之間相互隔離、互不影響,因而很好地保護了用戶數(shù)據(jù)的隱私。此外,即使某一個Android子系統(tǒng)出現(xiàn)運行故障或者被惡意攻擊,其他子系統(tǒng)照樣可以正常運行,從而提高了整個系統(tǒng)的安全性。同時,各子系統(tǒng)的應用和功能可以根據(jù)不同的應用場景和需求特別定制,可滿足用戶的個性化需求。
Android操作系統(tǒng); 設備虛擬化技術; Linux容器; 智能手機
隨著Android系統(tǒng)在智能手機、平板等嵌入式設備上的廣泛使用,Android系統(tǒng)所面臨的安全問題和隱私問題也日益嚴峻。采用虛擬化技術在同一硬件平臺上運行多個操作系統(tǒng),將不同安全等級應用隔離運行,可以提高Android系統(tǒng)的安全性并保護用戶隱私。目前,Android系統(tǒng)主要采用加密方法對高安全性應用或者私密數(shù)據(jù)進行保護,并且高安全性或高秘密程度的應用與普通應用程序運行于相同的Android系統(tǒng)中,因此無法滿足用戶對安全性和私密性的需求。
由于Android操作系統(tǒng)基于Linux內(nèi)核,這使容器技術(Linux container, LXC)可以較為方便地部署在Android系統(tǒng)上實現(xiàn)內(nèi)核級的隔離。然而,容器技術對Android平臺的設備虛擬化支持尚不完善,不便于多個容器對同一個硬件設備的復用。為了解決該問題,本文采用LXC技術實現(xiàn)了多個虛擬手機系統(tǒng)在同一個平臺上的隔離運行,同時提出一種基于代理的設備虛擬化技術,有效地解決了多Android平臺上某些物理設備不能復用的問題,由此,每個虛擬手機系統(tǒng)以為自己獨占系統(tǒng)資源。每個虛擬手機的功能可以根據(jù)用戶需要而特殊定制,如可以建立工作和生活兩個虛擬手機,將工作和生活的應用分開執(zhí)行,保護用戶隱私。
目前,為使多個Android系統(tǒng)在同一設備上同時運行,常采用的方法主要有:傳統(tǒng)的虛擬化技術和容器技術。在設備虛擬化方面,根據(jù)采用的虛擬化方法的不同,所采用的設備虛擬化技術也各有差異。
傳統(tǒng)虛擬化技術如XEN和KVM等,通過Hypervisor,使用半虛擬化或者全虛擬化技術為客戶機虛擬出多個獨立的運行平臺,因此隔離性較好。傳統(tǒng)虛擬化方法常采用的設備虛擬化技術大致分為兩類:半虛擬化驅(qū)動,如Xen實現(xiàn)的前后端半虛擬化驅(qū)動模型[1]和KVM的Virtio[2];設備模擬,在支持全虛擬化的平臺上,Xen與KVM均支持利用QEMU為虛擬機模擬設備[3-5]。但是設備模擬方法需要CPU支持虛擬化功能,并且在進行設備I/O操作時,處理器所處的特權等級會發(fā)生多次切換,開銷較大,導致I/O效率較低。隨著嵌入式處理器對虛擬化功能的支持,XEN、KVM均面向ARM處理器推出了解決方案[6-8],使多個操作系統(tǒng)運行于嵌入式平臺成為可能。從隔離性來看,傳統(tǒng)虛擬化隔離度最高、最安全,但是從資源利用率和I/O效率來看,傳統(tǒng)虛擬化技術資源利用率較低,難以運用于嵌入式設備。
容器[9]作為一種輕量級的虛擬化技術,除提供資源隔離外,最大的優(yōu)點是客戶機共享同一個內(nèi)核提供的資源,虛擬化開銷小,資源利用率較高?;谌萜鞯亩郃ndroid系統(tǒng)分為應用級和系統(tǒng)級容器。文獻[10]提出一款基于Android框架層的應用級安全容器Knox,客戶機運行于Android宿主機之上。宿主Android的存在,使客戶機能直接調(diào)用宿主機的設備服務,滿足自身對設備操作的需求,在設備虛擬化方面幾乎沒有開銷。但由于客戶機的安全性和穩(wěn)定性嚴重依賴于宿主Android系統(tǒng)的安全性和穩(wěn)定性,因此即使采取了很多加密手段,Knox的可靠性依然不高。
LBE公司最近推出了平行空間技術[11],基于Android的多用戶環(huán)境實現(xiàn)了虛擬應用系統(tǒng),可以在一個手機上安裝多個應用程序,如微信。該方法在用戶空間對應用程序的數(shù)據(jù)進行隔離,實現(xiàn)更輕量級,但安全性、隔離性比上述各方案更差。
文獻[12]提出了系統(tǒng)級容器技術,在Android系統(tǒng)的Linux內(nèi)核支持下實現(xiàn)多個容器,每個容器中運行一個Android系統(tǒng)。由于多個容器之間僅共享Linux內(nèi)核,因此系統(tǒng)級容器的安全性取決于Linux內(nèi)核,在借助于現(xiàn)有的Linux安全機制的基礎上,系統(tǒng)級容器的安全性將會優(yōu)于Knox。另外,由于客戶機之間僅僅共享內(nèi)核,隔離性也較Knox好,但比傳統(tǒng)虛擬化技術安全性略差。
本文通過系統(tǒng)級容器的方法實現(xiàn)在同一個硬件平臺上的運行多個虛擬手機(VP)。為了使多個虛擬手機獨立使用手機的硬件設備,需要重點解決設備復用問題,雖然文獻[12]已經(jīng)實現(xiàn)了在同一個手機上同時運行多個Android系統(tǒng),但是在設備復用方面還需要進一步的研究。本文基于此工作,提出了一套設備復用機制,使多個虛擬手機復用同一套硬件設備資源,每個虛擬手機中的Android子系統(tǒng)都自以為獨占這些設備和資源。
文獻[12]已經(jīng)提出了采用容器技術的多Android框架,基于Linux內(nèi)核所提供的命名空間Namespace和Cgroups機制,實現(xiàn)了多個Android在同一個Linux內(nèi)核上同時運行的方案,本文基于此框架進一步研究了設備虛擬化技術,以實現(xiàn)多個虛擬手機系統(tǒng)在同一個硬件平臺的運行?;谌萜鞯亩嗵摂M手機系統(tǒng)框架如圖1所示。
圖1 基于容器的多虛擬手機系統(tǒng)框架
該框架分為3層,自底向上分別為硬件層、內(nèi)核層、Android框架層。在內(nèi)核層提供3個重要的功能:
1) 通過利用Linux內(nèi)核的命名空間和Cgroups機制,在Linux內(nèi)核之上創(chuàng)建并運行多個相互隔離、互不影響的運行空間,即容器。并在每個容器中運行一個獨立的不包含Linux內(nèi)核的Android系統(tǒng)。2) 內(nèi)核層的容器API為容器管理功能提供接口,容器管理模塊中的管理工具通過調(diào)用相應的API來對容器進行管理。如容器的創(chuàng)建和銷毀、啟動、停止以及容器的修改等功能。3) 硬件設備的虛擬化,由于Linux內(nèi)核中的命名空間機制并不能完全支持Android系統(tǒng)一些設備,通過在內(nèi)核中添加一個新的Namespace機制來實現(xiàn)對這些內(nèi)核設備的虛擬化,如Framebuffer(幀緩存驅(qū)動)、Binder(Android通信驅(qū)動)等。此外,本文通過在容器內(nèi)部添加設備虛擬化層來實現(xiàn)對閉源設備的復用,如Radio設備。
Android系統(tǒng)架構如圖2所示,從上到下,分別是Android的框架層、系統(tǒng)服務層、硬件抽象層(hardware abstraction layer, HAL)、以及Linux內(nèi)核。Android框架層向應用開發(fā)人員提供應用相關服務和編程接口;系統(tǒng)服務層則向上層提供底層硬件設備相關服務,如多媒體服務、搜索服務、提醒服務等;硬件抽象層則為Android提供了上層服務操作設備的標準接口;Linux內(nèi)核作為Android平臺的基石,提供任務調(diào)度、設備資源管理等服務。
圖2 Android系統(tǒng)框架
硬件抽象層是連接Android系統(tǒng)上層設備操作與Linux內(nèi)核驅(qū)動程序的橋梁[13],為Android平臺定義了一個標準的硬件操作接口,該接口由硬件供應商來實現(xiàn),以閉源動態(tài)庫的形式存在,源碼不公開。Android在啟動時會加載并初始化動態(tài)庫,以便于應用程序通過調(diào)用動態(tài)庫中的方法來操作硬件設備。
在如圖1所示的系統(tǒng)框架中,多個虛擬手機使用同一個Linux內(nèi)核,共享內(nèi)核資源。通過對內(nèi)核驅(qū)動進行虛擬化擴展可以在內(nèi)核驅(qū)動層為每個虛擬手機系統(tǒng)虛擬出一套設備,并且可以避免對虛擬手機中的Android系統(tǒng)進行過多的修改。然而,對于部分將設備功能實現(xiàn)抽取并以閉源動態(tài)庫的形式放置于HAL層的設備,上述的虛擬化技術便不再有效,如電話設備,本文將此類設備稱為閉源設備。
由于HAL層接口的實現(xiàn)由設備供應商提供,并且以閉源動態(tài)庫的形式發(fā)布,因此無法修改其源代碼以實現(xiàn)設備的虛擬化功能擴展。此外,這些動態(tài)庫中可能還保存了設備運行的狀態(tài)信息,如果不做處理,多個虛擬手機中的設備信息將不一致,導致設備運行異常甚至系統(tǒng)崩潰。由于以上原因,只有在HAL接口或者以上層次做設備虛擬化擴展,才能有效地繞過設備供應商的閉源動態(tài)庫,使多個虛擬手機共享這些硬件設備。文獻[12]提出了基于容器的虛擬化技術,實現(xiàn)了開源設備的虛擬化,但無法解決電話、Wifi、傳感器等閉源設備模塊的復用問題。本文通過在HAL層添加設備代理,實現(xiàn)了閉源設備的虛擬化擴展。
基于上述分析,本文提出了一種設備代理的方法,在HAL層實現(xiàn)閉源硬件設備的虛擬化技術,解決了對閉源設備無法虛擬化的難題。在Android HAL層中,每一類硬件設備均有與之對應的HAL子系統(tǒng),Android上層調(diào)用相應的設備子系統(tǒng)接口來操作設備。本文提出的設備代理技術適用于手機平臺的絕大多數(shù)閉源設備,如音頻、傳感器等。本文將以Radio(移動通信設備,包含通話和移動網(wǎng)絡)為例,對設備代理技術進行描述,Radio設備代理框架如圖3所示。
基于代理的設備虛擬化框架主要包含兩大部分:虛擬設備客戶端和虛擬設備服務端。位于每個VP子系統(tǒng)中的虛擬設備客戶端主要作用是獲取應用程序發(fā)給設備的操作請求,然后將其轉(zhuǎn)發(fā)到虛擬設備服務端。虛擬設備服務端位于宿主域,負責為客戶端提供設備虛擬化的支持,包含設備操作請求過濾模塊、設備事件響應過濾模塊,它們和設備供應商提供的閉源動態(tài)庫協(xié)同工作,共同為虛擬設備客戶端的設備操作請求服務。
基于代理的虛擬化設備工作流程如下:
1) VP系統(tǒng)中,應用程序通過系統(tǒng)編程接口發(fā)出對設備操作的服務請求;2) HAL子系統(tǒng)的虛擬設備客戶端獲取該請求,然后將其轉(zhuǎn)發(fā)給位于宿主域的虛擬設備服務端;3) 虛擬設備服務端接受此請求后,結(jié)合當前各VP子系統(tǒng)的虛擬設備狀態(tài),將操作請求分類,并根據(jù)狀態(tài)分別使用設立的設備虛擬操作接口進行處理。
以Radio設備為例,通過上述設備代理流程,可以使多個VP通過各自的SIM卡同時使用Radio設備。
圖3 設備代理的系統(tǒng)框架設計
本文以Radio設備為例,詳細闡述基于代理的設備虛擬化技術的實現(xiàn)過程。按實現(xiàn)位置的不同,Radio設備的HAL接口可分為供應商動態(tài)庫函數(shù)接口和Android Radio服務RILD的函數(shù)接口。虛擬設備客戶端和服務端分別實現(xiàn)這兩部分接口。下面分別對客戶端和服務端的的實現(xiàn)進行詳細地闡述。
Radio虛擬設備客戶端的作用與供應商的Radio動態(tài)庫類似,主要作用是獲取應用程序?qū)υO備的操作請求并進行處理。為此,在客戶端需要實現(xiàn)虛擬設備客戶端的動態(tài)庫函數(shù)接口和設備操作代理函數(shù)。Radio虛擬設備客戶端必須提供與設備供應商提供的Radio閉源動態(tài)庫libril-vendor一致的動態(tài)庫接口供Android調(diào)用,為此需要實現(xiàn)的接口函數(shù)包括模塊初始化函數(shù)RIL_Init和操作Radio設備的虛擬函數(shù)接口,如onRequest、onStateRequest等。獲取應用程序的設備操作并轉(zhuǎn)發(fā)到虛擬設備服務端的代理工作是虛擬設備客戶端的最主要功能。本文通過修改HAL接口函數(shù)的實現(xiàn),將設備操作轉(zhuǎn)發(fā)到虛擬設備服務端。虛擬設備客戶端和虛擬設備服務端必須保證收發(fā)的設備操作和參數(shù)在兩端均是正確有效的。
為了向虛擬設備客戶端提供代理服務,虛擬設備服務端自身必須能夠執(zhí)行對設備的操作。因此,虛擬設備服務端必須實現(xiàn)RILD中的Radio HAL接口,包括操作閉源動態(tài)庫的函數(shù)接口,如初始化閉源動態(tài)庫,以及與動態(tài)庫通信的回調(diào)函數(shù)接口,下文稱作虛擬回調(diào)函數(shù)接口。
此外,虛擬設備服務端還包括以下3個模塊:虛擬設備狀態(tài)組、請求過濾模塊、響應過濾模塊。
4.2.1 虛擬回調(diào)函數(shù)接口的實現(xiàn)
虛擬回調(diào)函數(shù)接口用于接收動態(tài)庫返回的設備操作結(jié)果以及設備遞交的異步事件。Radio虛擬設備服務端必須實現(xiàn)虛擬回調(diào)函數(shù)接口,才能接收來自設備動態(tài)庫的設備操作結(jié)果或者異步事件消息,需要實現(xiàn)的回調(diào)函數(shù)包括結(jié)構體RIL_Env中的所有函數(shù)指針。
4.2.2 虛擬設備狀態(tài)管理模塊的實現(xiàn)
虛擬設備服務端為每一個虛擬設備客戶端維護一個虛擬設備狀態(tài)結(jié)構體,對虛擬設備狀態(tài)跟蹤,這些狀態(tài)與真實硬件設備運行過程中所具有狀態(tài)信息相對應,以Radio設備為例,虛擬設備狀態(tài)結(jié)構體包含的信息如下:
typedef struct {
int radioState;
int screenOnOff;
int dataOnOff;
//...
} RadioStateInfo;
其中,radioState對應Radio的開、關狀態(tài)(即虛擬設備客戶端狀態(tài)),screenOnOff對應手機屏幕的開、關狀態(tài),dataOnOff對應數(shù)據(jù)連接的開、關狀態(tài)等。
4.2.3 請求過濾模塊的實現(xiàn)
請求過濾模塊用于對來自不同虛擬設備客戶端的設備操作請求進行過濾分流。根據(jù)各個虛擬設備客戶端所處狀態(tài)的不同,某個虛擬設備客戶端會被判定為可以操作硬件設備,或者只能操作虛擬設備。對于后者,請求過濾模塊會為其進行設備操作模擬,并返回正確的設備操作響應。
圖4 設備操作請求過濾過程
本文進一步按照設備操作是否影響設備運行狀態(tài),以及是否是對設備運行狀態(tài)進行查詢,將設備操作劃分為3類:影響設備運行狀態(tài)的設備操作、設備運行狀態(tài)查詢類設備操作、以及其他設備操作,其操作過程如圖4所示。
1) 對于影響設備運行狀態(tài)的設備操作,如Radio設備的打開、關閉操作,首先更新虛擬設備的狀態(tài);其次,根據(jù)相關虛擬設備狀態(tài)以及全局設備狀態(tài),決定該設備操作是否需要被執(zhí)行。如對于Radio設備,設備的關閉操作必須在所有虛擬設備均處于關閉狀態(tài)時,才能被執(zhí)行,否則只更新虛擬設備的狀態(tài),并返回設備操作結(jié)果。2) 對于查詢類的設備操作,如查詢Radio運行狀態(tài)的操作,虛擬設備服務端讀取對應虛擬設備的狀態(tài),構造并返回設備操作結(jié)果。3) 對于其他設備操作,虛擬設備服務端先進行重復操作過濾處理,對于剩下的設備操作進行代理執(zhí)行。
4.2.4 響應過濾模塊的實現(xiàn)
本文將異步設備操作結(jié)果和設備遞交的異步事件均稱為動態(tài)庫的響應。響應過濾模塊用于對來自動態(tài)庫的響應進行處理,包括對設備操作結(jié)果和對設備遞交的異步事件進行處理,此外,響應過濾模塊也負責更新虛擬設備狀態(tài)和全局設備狀態(tài)。
對于異步設備操作結(jié)果的處理主要是根據(jù)操作類型,決定是否需要更新虛擬設備狀態(tài)和全局設備狀態(tài)。對全局設備狀態(tài)的更新保證了虛擬設備服務端和物理設備狀態(tài)的一致性;對虛擬設備狀態(tài)的更新則保證了虛擬設備服務端能正確地記錄每個虛擬設備客戶端的狀態(tài)。對異步事件的過濾主要是為虛擬設備過濾狀態(tài)沖突的異步事件,使虛擬設備之間不會互相干擾。如,報告Radio設備處于開啟狀態(tài)的異步事件通知不能發(fā)送給那些虛擬Radio設備處于關閉狀態(tài)的虛擬設備客戶端。
為了驗證本文提出的設備虛擬化技術的可行性,選擇了中興Z7max手機作為實驗硬件平臺,該手機CPU為高通驍龍801,RAM大小2 GB。Android版本5.1,Linux內(nèi)核版本3.4。SIM卡槽1插入移動公司的電話卡,卡槽2插入聯(lián)通公司的電話卡。
在實驗手機平臺上創(chuàng)建兩個容器,分別運行一個VP子系統(tǒng)。位于根域的容器管理服務加載虛擬設備服務端,啟動兩個客戶Android子系統(tǒng),分別稱為VP1和VP2,它們各自加載虛擬設備客戶端。本文的基于代理的設備虛擬化技術適合于手機平臺上所有驅(qū)動程序閉源的設備。此處僅以Radio設備為例對該技術的可行性和有效性進行驗證。
由于中興Z7max手機擁有兩張SIM卡,因此可以在VP1和VP2啟動前,將兩張SIM卡分別分配給不同VP(也可以全都分配到同一個VP)。在VP1和VP2均啟動完畢后,兩個容器的Android系統(tǒng)分別顯示SIM卡1和SIM卡2使能,信號強度顯示正常,兩個容器均可正常撥打/接聽電話、發(fā)送/收取短信,如圖6所示。試驗結(jié)果表明基于代理的設備虛擬化技術可以有效的實現(xiàn)兩個VP對電話設備的復用。
圖6 VP1和VP2中的通訊錄
由于在所用實驗平臺上擁有兩張SIM卡,每個VP中通信錄、通話記錄和信息分開存儲,相互不可見,由此保護了用戶通話信息的隱私。圖6中的VP1和VP2分別使用SIM卡1和SIM卡2時的通訊錄是完全隔離的,包括本地和SIM卡上的;圖7展示了VP1和VP2之間的通話記錄是完全隔開的。
圖7 VP1和VP2中的通話記錄
為了測試性能開銷的最大值,實驗平臺上每個VP中運行完整的相同Android系統(tǒng)鏡像,因此,ROM開銷增幅較小,測試結(jié)果顯示僅增加約30%;但是RAM開銷較大,大約增加90%。在實際應用環(huán)境中,兩個VP中的系統(tǒng)可以根據(jù)應用需求而特殊定制,從而將會大量的減少內(nèi)存開銷。由于切換到后臺的Android系統(tǒng)會處于睡眠狀態(tài),因此CPU和電源的開銷增幅均不大,分別約為2%和6%。
為了提高Android系統(tǒng)的安全性、可定制性,既滿足用戶的多元化需求,同時還可以保護用戶隱私。本文采用Linux的容器技術建立相互獨立的執(zhí)行環(huán)境,在同一個手機平臺上建立多個虛擬的手機子系統(tǒng),每個子系統(tǒng)中單獨運行Android操作系統(tǒng),并共享物理設備資源。
然而,容器技術對Android平臺上的設備虛擬化支持尚不完善,不便于多個容器內(nèi)的系統(tǒng)對同一個硬件設備的復用。為了解決該問題,本文提出一種基于代理的設備虛擬化技術,使多個虛擬手機復用同一套硬件設備資源,每個虛擬手機中的Android子系統(tǒng)都自以為獨占這些設備和資源。并以手機的Radio設備為例詳細闡述了本文技術的設計和實現(xiàn)細節(jié),該方法可以很好地解決閉源設備驅(qū)動的復用問題。
為驗證本文方法的可行性,實現(xiàn)了一個原型系統(tǒng),對設備虛擬化功能和數(shù)據(jù)隔離性進行了驗證。此外,對系統(tǒng)的CPU、內(nèi)存、電量等性能開銷還進行了大量的測試。實驗和測試數(shù)據(jù)符合預期,并且說明本文技術是可行的,有效地實現(xiàn)了閉源設備的復用問題,使多個VP均可以使用同一個硬件設備。
借助于本文描述的Radio的虛擬化,可以實現(xiàn)多個虛擬手機撥打和接聽電話,以及對手機上的多張SIM卡的使用進行策略控制。
本文的研究工作得到了電子科技大學“一校一帶”基金(A03013023001021)的資助,在此表示感謝!
[1] BARHAM P, DRAGOVIC B, FRASER K, et al. Xen and the art of virtualization[J]. ACM SIGOPS Operating Systems Review, 2003, 37(5): 164-177.
[2] RUSSELL R. Virtio: towards a de-facto standard for virtual I/O devices[J]. ACM SIGOPS Operating Systems Review, 2008, 42(5): 95-103.
[3] DONG Y, LI S, MALLICK A, et al. Extending Xen with intel virtualization technology[J]. Intel Technology Journal, 2006, 10(3): 193-203.
[4] KIVITY A, KAMAY Y, LAOR D, et al. KVM: the Linux virtual machine monitor[C]//Proceedings of the Linux symposium. Ottawa: Proc Linux Symposium, 2007, 1: 225-230.
[5] DALL C, NIEH J. KVM/ARM: the design and implementation of the linux ARM hypervisor[J]. ACM SIGARCH Computer Architecture News, 2014, 42(1): 333-348.
[6] HWANG J Y, SUH S B, HEO S K, et al. Xen on ARM: System virtualization using Xen hypervisor for ARM-based secure mobile phones[C]//Consumer Communications and Networking Conference, 2008, CCNC 2008, 5th IEEE. Las Vegas: IEEE, 2008: 257-261.
[7] LEE S M, SUH S B, JEONG B, et al. Fine-grained i/o access control of the mobile devices based on the xen architecture[C]//Proceedings of the 15th Annual International Conference on Mobile Computing and Networking. Beijing: ACM, 2009: 273-284.
[8] VARANASI P, HEISER G. Hardware-supported virtualization on ARM[C]//Proceedings of the Second Asia-Pacific Workshop on Systems. Shanghai: ACM, 2011: 11.
[9] SOLTESZ S, P?TZL H, FIUCZYNSKI M E, et al. Container-based operating system virtualization: a scalable, high-performance alternative to hypervisors[C]//ACM SIGOPS Operating Systems Review. Lisbon: ACM, 2007, 41(3): 275-287.
[10] Enterprise Mobility Solutions Samsung Electronics Co. Ltd. White paper: an overview of samsung KNOX?[EB/OL]. [2013-06-01]. http://www. samsung. com/global/business/business-images/resource/white-paper/2013/06/Samsung_KNOX_whitepaper_June-0.
[11] LBE Tech. Parallel space[EB/OL]. [2016-06-03]. http://parallel-app.com/.
[12] YANG Xia, SUN Chao-qun. Research and implementation of multiple Android systems based on the container technique[J]. Journal of Chinese Computer Systems, 2016, 37(7): 1422-1427.
[13] Google Inc. Hardware abstraction layer[EB/OL]. [2016-06-03]. http://source.android.com/devices/index. html #Hardware-Abstraction-Layer.
編 輯 漆 蓉
Devices Virtualization Technology Based on the Proxy
YANG Xia, LIU Wei-fei, GUO Wen-sheng, LIAO Shi-chao, and SUN Hai-yong
(School of Information and Software Engineering, University of Electronic Science and Technology of China Chengdu 610054)
As the mobile phone plays a more important role in our life, the problem about security and privacy of smart phone become more prominent. To solve this problem, this paper presents an approach to implement more virtual phone (VP), which is based on Linux container technology, running two or more Android systems in a single smart phone device. In order to allow each VP uses devices concurrently, we present a virtualization technology based on device proxy, and realize it on radio device. A prototype system is implemented on Nubia Z7max smartphone and the functionality of virtualization, data isolation etc. are tested. The experiment results show that our approach is useful and feasible. Each VP can simultaneously shares devices, user’s data about devices and applications are isolated between isolated Android systems, and the system cost is kept in allowable range. Due to the VPs are isolated each other, there are three benefits: this approach can protect the user’s privacy effectively, even one VP is corrupted the whole system can still work, and it also can satisfy user’s personalized demand because the VP’s functions can be customized by application scenarios and user’s requirements.
Android OS; device virtualization technology; Linux container; smartphones
TP309
A
10.3969/j.issn.1001-0548.2017.06.016
2016-06-14;
2016-09-12
中央高?;?A03017023701169, ZYGX2015J066)
楊霞(1978-),女,博士,副教授,主要從事嵌入式虛擬化技術、嵌入式安全系統(tǒng)方面的研究.