王亞?wèn)|++雷靈光++周健++向繼
摘要:為了確保移動(dòng)終端在企業(yè)中的安全應(yīng)用,企業(yè)移動(dòng)管理系統(tǒng)(簡(jiǎn)稱,EMMS)應(yīng)運(yùn)而生。然而,作為一個(gè)發(fā)展中的技術(shù),EMMS的相關(guān)功能仍在完善中。特別地,在主流的Android4.*系統(tǒng)上,開(kāi)放的MDM設(shè)備管控接口非常有限,不能很好地滿足企業(yè)移動(dòng)設(shè)備的安全管控需求。本文通過(guò)深入分析移動(dòng)終端設(shè)備的管控需求以及Android平臺(tái)的移動(dòng)設(shè)備管控技術(shù)(簡(jiǎn)稱,MDM)、Android系統(tǒng)的Activity管理機(jī)制等,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)較為完備的Android移動(dòng)設(shè)備管理系統(tǒng),實(shí)現(xiàn)了對(duì)相機(jī)、藍(lán)牙、WIFI、惡意應(yīng)用等可能造成敏感數(shù)據(jù)泄露的設(shè)備功能的全面管控。對(duì)系統(tǒng)的性能評(píng)估結(jié)果表明,其在內(nèi)存、CPU、電池等方面的消耗均很小,不會(huì)對(duì)用戶造成影響。
關(guān)鍵詞:移動(dòng)設(shè)備管控;Android;設(shè)備安全;信息安全;數(shù)據(jù)泄露
中圖分類(lèi)號(hào):TP311
文獻(xiàn)標(biāo)識(shí)碼:A
DOI:10.3969/j.issn.1003-6970.2016.02.003
引言
隨著智能終端的成熟與普及,以手機(jī)、平板為代表的個(gè)人智能終端設(shè)備逐漸進(jìn)入企業(yè)領(lǐng)域。據(jù)國(guó)際權(quán)威咨詢公司Gartner預(yù)測(cè),2016年全球?qū)?huì)售出超過(guò)16億部智能移動(dòng)設(shè)備,40%的工作人員將會(huì)使用移動(dòng)辦公,商務(wù)辦公移動(dòng)化進(jìn)程即將進(jìn)入高速發(fā)展階段。
在移動(dòng)辦公為企業(yè)和員工帶來(lái)極大的便利和效益的同時(shí),安全問(wèn)題成為其發(fā)展的最大威脅。安全研究中心Ponemon Institute和安全管理服務(wù)商Lumension發(fā)布的最新數(shù)據(jù)顯示,有75%的IT行業(yè)專(zhuān)業(yè)人士認(rèn)為在2014年,移動(dòng)設(shè)備將會(huì)給企業(yè)安全帶來(lái)重大的安全威脅。新聞爆出的手機(jī)泄密事件也層出不窮:一方面,員工可以“主動(dòng)”通過(guò)移動(dòng)設(shè)備的拍照、錄音、網(wǎng)絡(luò)傳輸?shù)裙δ苡涗洸鞑ッ舾行畔?。另一方面,員工在終端設(shè)備遺失或被盜時(shí)未能及時(shí)清除企業(yè)數(shù)據(jù)導(dǎo)致“被動(dòng)”泄密。比如Trustwave最新發(fā)布的《2014年度風(fēng)險(xiǎn)狀態(tài)報(bào)告》指出在安全泄露事故6個(gè)最有可能的來(lái)源中心懷不滿的員工和粗心大意或不知情的員工分列1、2位。
如何高效、完備地解決潛在的安全問(wèn)題,確保企業(yè)放心地允許員工通過(guò)移動(dòng)設(shè)備進(jìn)行辦公,是移動(dòng)辦公發(fā)展面臨的最大挑戰(zhàn)。為了解決移動(dòng)辦公安全問(wèn)題,企業(yè)移動(dòng)管理系統(tǒng)(簡(jiǎn)稱,EMMS)應(yīng)運(yùn)而生,EMMS為企業(yè)提供集移動(dòng)設(shè)備管理(簡(jiǎn)稱MDM)、移動(dòng)應(yīng)用管理(簡(jiǎn)稱,MAM)、移動(dòng)內(nèi)容管理(簡(jiǎn)稱MCM)于一體的全方位解決方案,目標(biāo)是提供移動(dòng)設(shè)備的全生命周期安全管控、移動(dòng)應(yīng)用的安全下發(fā)及部署、移動(dòng)終端內(nèi)容的安全存儲(chǔ),查閱等全方位的移動(dòng)辦公安全支撐。然而,從目前來(lái)看,EMMS仍然是一個(gè)正在發(fā)展中的產(chǎn)業(yè),相關(guān)的功能和技術(shù)仍然在不斷的探索和完善中。比如,Google從Android 2.2版本開(kāi)始提供MDM管控功能,但是截至到Android 4.4版本,僅能夠支持相機(jī)禁用、企業(yè)數(shù)據(jù)擦除、設(shè)備鎖定等非常有限的管控,而對(duì)于MAM和MCM功能還未提供任何支持。目前市面上也存在數(shù)款MDM產(chǎn)品,其中起步較早的有IBM公司推出的MaasS360,該系統(tǒng)提供了較為完整的MDM管控,但是Maas360的平臺(tái)通用性較差,其中部分功能只適用于特定廠商的特定型號(hào)智能終端,另有部分功能需要Root權(quán)限才能完成。2013年12月,360發(fā)布了國(guó)內(nèi)首個(gè)企業(yè)移動(dòng)終端安全管理解決方案-360天機(jī)[9]。其MDM模塊實(shí)現(xiàn)了一部分管控功能,如應(yīng)用禁用、遠(yuǎn)程擦除、設(shè)備鎖定、地理定位等。但在應(yīng)用禁用的實(shí)現(xiàn)方式上用戶體檢較差,其通過(guò)強(qiáng)制安裝、卸載的方式對(duì)完成對(duì)應(yīng)用的禁用,不能滿足上班禁用、下班開(kāi)放這種需求。難以友好的實(shí)現(xiàn)對(duì)員工自帶設(shè)備(BYOD)的管控。
鑒于商用MDM產(chǎn)品在通用性或功能支持方面的不完善,本文通過(guò)深入分析Android平臺(tái)的移動(dòng)設(shè)備管控技術(shù)以及移動(dòng)終端設(shè)備的管控需求,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)較為完備的Android移動(dòng)設(shè)備管理系統(tǒng),該系統(tǒng)在Android平臺(tái)本身對(duì)MDM支持的基礎(chǔ)上,結(jié)合自主設(shè)計(jì)的MDM守護(hù)程序,實(shí)現(xiàn)了對(duì)相機(jī)、藍(lán)牙、WIFI、惡意應(yīng)用等可能造成敏感數(shù)據(jù)泄露的設(shè)備功能的全面管控。同時(shí),所有的管控功能均在應(yīng)用層實(shí)現(xiàn),用戶可以通過(guò)安裝APP的方式使用該系統(tǒng)功能,確保了較好的平臺(tái)兼容性和用戶友好性。對(duì)系統(tǒng)的性能評(píng)估結(jié)果表明,其在內(nèi)存、CPU、電池等方面的消耗均很小,不會(huì)對(duì)用戶造成影響。
本文余下部分的結(jié)構(gòu)如下:第1節(jié),介紹Android系統(tǒng)MDM的背景;第2節(jié),介紹系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn);第3節(jié),對(duì)系統(tǒng)的性能及有效性進(jìn)行評(píng)估。第4節(jié),總結(jié)本文的工作。
1 背景介紹
Android從2.2版本開(kāi)始提供MDM管控功能,并隨著新版本的發(fā)布,管控功能不斷豐富。比如Android2.2版本僅有十幾個(gè)管控API,Android 4.2版本增加到五十多個(gè),而在最新公布的Android 5.0版本中已經(jīng)有接近100個(gè)管控API可供調(diào)用。由于截止到目前,Android 5.0及以上版本設(shè)備的市場(chǎng)占有率還十分有限,普適性不高,故我們將以Android 4.4及以前版本作為主要研究對(duì)象。
Android 4.4版本提供的MDM管控功能如表1所示,主要包括:設(shè)備管控、密碼策略、功能禁用、高級(jí)查詢四類(lèi),具體的API接口可以參考Android開(kāi)發(fā)官網(wǎng)。
雖然Android在設(shè)備管控方面投入了很大力度,并隨著系統(tǒng)版本的升級(jí)不斷完善,但依舊有一些迫切需要的功能沒(méi)有相應(yīng)接口或是提供了相應(yīng)的接口,但只支持較高版本的系統(tǒng),并不適用于絕大多數(shù)設(shè)備。
我們對(duì)這些迫切需要的功能進(jìn)行了總結(jié)和歸納,將其分為兩類(lèi):1)系統(tǒng)提供了開(kāi)啟/關(guān)閉的功能,但并未提供禁用功能,所以這并不能阻止用戶再次開(kāi)啟或關(guān)閉,如禁用/開(kāi)啟wifi、藍(lán)牙等。2)系統(tǒng)未開(kāi)放此方面的任何API,如應(yīng)用黑白名單。詳情如表2所示:
2 系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)
本節(jié)介紹該系統(tǒng)的架構(gòu)設(shè)計(jì),以及關(guān)鍵功能的實(shí)現(xiàn)。
2.1 系統(tǒng)架構(gòu)設(shè)計(jì)
如圖1所示,移動(dòng)設(shè)備管理系統(tǒng)總體包含兩部分:服務(wù)器端和客戶端。企業(yè)管理員通過(guò)服務(wù)器端制定各種管控策略并下發(fā)至對(duì)應(yīng)的客戶端設(shè)備(比如,禁用部門(mén)A所有員工設(shè)備的相機(jī)功能、藍(lán)牙功能;禁用部門(mén)B所有員工設(shè)備使用聊天軟件)。員工通過(guò)安裝的客戶端程序,接收服務(wù)器端的管控請(qǐng)求,并實(shí)施具體的管控。
服務(wù)器端無(wú)特殊要求,通過(guò)搭建一個(gè)通用的、支持通知下發(fā)功能的Web網(wǎng)站即可實(shí)現(xiàn)。本文重點(diǎn)關(guān)注客戶端的設(shè)計(jì)和實(shí)現(xiàn)。如圖1所示,客戶端主要包含三個(gè)模塊:1)指令策略解析器:用于解析來(lái)自于服務(wù)器端的最新策略,對(duì)策略分類(lèi)并交由API管控模塊以及輪詢管控模塊進(jìn)行后續(xù)處理;2)API管控模塊:主要通過(guò)調(diào)用Android系統(tǒng)提供的API實(shí)現(xiàn)相應(yīng)管控功能;3)輪詢管控模塊:主要用于實(shí)現(xiàn)系統(tǒng)API不支持的管控功能。整個(gè)系統(tǒng)的工作流程為:
(1)企業(yè)管理者從服務(wù)器端向客戶端(移動(dòng)設(shè)備)發(fā)送指令以及策略;
(2)客戶端通過(guò)MDM應(yīng)用中的解析器對(duì)指令和策略進(jìn)行解讀并分別交由系統(tǒng)API或輪詢管控模塊實(shí)施策略;
(3)系統(tǒng)API模塊通過(guò)對(duì)比策略和設(shè)備當(dāng)前狀態(tài)判斷設(shè)備是否合規(guī),如有不合規(guī)項(xiàng),調(diào)用相應(yīng)API接口,將其修正;
(4)輪詢管控模塊通過(guò)每隔一段時(shí)間對(duì)設(shè)備狀態(tài)進(jìn)行輪詢并修正的方式,保證其余策略的正確實(shí)施。
2.2 關(guān)鍵功能實(shí)現(xiàn)
企業(yè)移動(dòng)管理系統(tǒng)的關(guān)鍵在于客戶端管控功能,本節(jié)對(duì)具體的實(shí)現(xiàn)過(guò)程進(jìn)行闡述。實(shí)現(xiàn)平臺(tái)采用當(dāng)前應(yīng)用最為普及的Android 4.*版本(谷歌公布的Android系統(tǒng)各個(gè)版本的市場(chǎng)占有率統(tǒng)計(jì)結(jié)果顯示,截止到2015年4月,Android系統(tǒng)中4.*版本的使用比例達(dá)到83.4%)。客戶端為具有設(shè)備管控功能的Android應(yīng)用程序(.apk文件)。
2.2.1 API管控模塊實(shí)現(xiàn)
通過(guò)Android系統(tǒng)本身提供的MDM管控API,開(kāi)發(fā)者可以方便快速地實(shí)現(xiàn)MDM管控功能,并且具有較好的平臺(tái)兼容性。本系統(tǒng)的API管控模塊通過(guò)調(diào)用Android開(kāi)放的MDM管控接口實(shí)現(xiàn),具體實(shí)現(xiàn)過(guò)程如下:
(1)客戶端應(yīng)用程序首先實(shí)例化一個(gè)設(shè)備管理實(shí)體,在后續(xù)的管控操作中該實(shí)體會(huì)被作為管控的發(fā)起人。通過(guò)注冊(cè)一個(gè)廣播服務(wù)類(lèi)(繼承自DeviceAdminReceiver)組件完成實(shí)例化操作,該組件為實(shí)現(xiàn)設(shè)備管控的基類(lèi),包含一系列特定事件發(fā)生時(shí)觸發(fā)的回調(diào)方法,如設(shè)備管理權(quán)限被激活、更換密碼等。開(kāi)發(fā)者可以重寫(xiě)這些回調(diào)方法來(lái)實(shí)現(xiàn)狀態(tài)改變時(shí)的通知或其它功能。
(2)為設(shè)備管理實(shí)體申請(qǐng)管控權(quán)限,具體步驟如下:
申請(qǐng)管控權(quán)限,即android.permission.BIND_DEVICE_ADMIN;
添加設(shè)備管理權(quán)限被激活時(shí)的事件監(jiān)聽(tīng),即在
聲明需要管控的項(xiàng),圖2為一個(gè)示例,聲明該應(yīng)用程序會(huì)進(jìn)行密碼限制、強(qiáng)制鎖屏、擦除數(shù)據(jù)等管控操作。 android.com/apk/res/android ” > (3)激活該應(yīng)用的設(shè)備管理權(quán)限。開(kāi)發(fā)者選擇在合適的時(shí)刻提示用戶激活該應(yīng)用的設(shè)備管理權(quán)限,該提示會(huì)明確聲明該應(yīng)用的所能管控的功能,如圖3所示。只有在用戶選擇“激活”后,該應(yīng)用才真正具有設(shè)備管理權(quán)限。 (4)實(shí)施管控。該應(yīng)用獲取設(shè)備管理權(quán)限后,開(kāi)發(fā)者可以通過(guò)使用系統(tǒng)提供的策略管理類(lèi)(DevicePoIicyManager)實(shí)施管控。該類(lèi)所具有的管理功能已在表中羅列。圖4所示為初始化DevicePolicyManager對(duì)象,以及基于該對(duì)象進(jìn)行相機(jī)禁用和設(shè)備鎖定的實(shí)例代碼。需要注意的是,在調(diào)用管控API之前,首先應(yīng)查看該應(yīng)用是否具有設(shè)備管理權(quán)限,若無(wú),則無(wú)法完成相應(yīng)的管控操作,此時(shí)需要再次通知用戶激活設(shè)備管理權(quán)限。 DevicepolicyManager manager= (DevicepolicyManager)gerSystemService(DEVICEPOLICYSERVICE); ComponentName madminName-new componentName( getApplicationContext (),MyAdmin.class); //鎖定設(shè)備 if(manager.isAdminActive(mAdminName》 manager.lockNow () ; if (manager.isAdminActive ( mAdminName》 manager.setCameraDisabled(mAdminName,true);
2.2.2 輪詢管控模塊實(shí)現(xiàn)
對(duì)于表中這些不能通過(guò)調(diào)用系統(tǒng)API實(shí)現(xiàn)的管控功能,我們通過(guò)分析Android系統(tǒng)的相關(guān)機(jī)制,設(shè)計(jì)了一個(gè)專(zhuān)門(mén)用于實(shí)現(xiàn)以上功能的MDM守護(hù)程序,該程序能長(zhǎng)時(shí)間駐留后臺(tái),并且不會(huì)造成明顯的性能消耗。其工作流程如圖6所示。MDM守護(hù)程序作為后臺(tái)的監(jiān)控程序,不斷輪洵當(dāng)前策略是否合規(guī),并在檢測(cè)到不合規(guī)項(xiàng)時(shí)及將其修正,輪詢的具體步驟如下:
(l)通過(guò)MDM守護(hù)程序從本地或服務(wù)器端獲取最新策略。
(2)通過(guò)相關(guān)的API接口,查詢wifi、藍(lán)牙、音量等設(shè)置的當(dāng)前狀態(tài)是否符合策略要求,如不滿足,立即做出相應(yīng)調(diào)整。
(3)通過(guò)捕捉前臺(tái)界面組件(Activity)錯(cuò)誤!未找到引用源的方式判斷當(dāng)前正在運(yùn)行的應(yīng)用程序并獲取其包名。首先,MDM守護(hù)程序會(huì)獲取當(dāng)前運(yùn)行棧棧頂Activity。Android系統(tǒng)用棧的形式管理Activity,當(dāng)新的Activity被創(chuàng)建時(shí),會(huì)被放置到棧頂,這個(gè)Activity會(huì)進(jìn)入到運(yùn)行狀態(tài),而前一個(gè)Activity則會(huì)被壓入棧,直到新的Activity退出,否則不會(huì)出現(xiàn)在前臺(tái)。需要注意的是,執(zhí)行此步操作,需要添加獲取棧頂界面組件權(quán)限,即android.permission.GET TASKS。其次,通過(guò)Activity名稱獲取前臺(tái)運(yùn)行的應(yīng)用的包名。
(4)查看包名對(duì)應(yīng)的應(yīng)用是否存在于應(yīng)用黑名單中,如果存在,則彈出“該應(yīng)用已被禁用!”的警告對(duì)話框,如圖5所示,瀏覽器應(yīng)用被禁用。該對(duì)話框會(huì)覆蓋在用戶正在使用的應(yīng)用上方,用戶無(wú)法繼續(xù)查看或使用該黑名單應(yīng)用,當(dāng)用戶點(diǎn)擊對(duì)話框中的“確定”按鈕時(shí),會(huì)自動(dòng)跳轉(zhuǎn)至桌面,從而實(shí)現(xiàn)禁用應(yīng)用功能。
為了避免輪詢?cè)斐商蟮男阅軗p耗,我們引入輪詢頻率調(diào)整機(jī)制。根據(jù)本輪查詢結(jié)果對(duì)輪詢頻率做出相應(yīng)調(diào)整,如果存在違規(guī)現(xiàn)象,則適當(dāng)增加輪詢頻率,反之,則減少輪詢頻率。
通過(guò)上述流程,可以看出守護(hù)進(jìn)程需要被放置在一個(gè)能長(zhǎng)時(shí)間駐留系統(tǒng)的組件中運(yùn)行,Android系統(tǒng)4大組件中的服務(wù)(Service)組件恰好為該守護(hù)程序提供了合適的運(yùn)行環(huán)境。Service是一個(gè)沒(méi)有用戶界面、在后臺(tái)運(yùn)行執(zhí)行耗時(shí)操作的應(yīng)用組件。并且Service組件可以通過(guò)響應(yīng)開(kāi)機(jī)事件完成自啟動(dòng),這為全方位的設(shè)備管控提供了極大便利。我們利用Service的以上特性,將守護(hù)程序放入Service中執(zhí)行并為其添加對(duì)系統(tǒng)開(kāi)機(jī)事件(即android.intent.action.BOOT COMPLETED廣播)的響應(yīng),使其能在開(kāi)機(jī)時(shí)完成自啟動(dòng)工作。
3 性能評(píng)估
本節(jié)將對(duì)該MDM系統(tǒng)有效性和能耗方面進(jìn)行評(píng)估。我們選取了市面上5款主流Android手機(jī),版本號(hào)從4.1到4.4.4不等,并且包含root的手機(jī)和非root的手機(jī),具體如表3所示。
3.1 有效性
我們首先對(duì)MDM系統(tǒng)的有效性進(jìn)行測(cè)試評(píng)估,以驗(yàn)證該方案是否能在不同Android平臺(tái)上正確實(shí)施管控。具體測(cè)試評(píng)估過(guò)程如下:
(l)預(yù)先設(shè)計(jì)一套實(shí)施全面管控的策略并直接寫(xiě)入程序;
(2)將MDM管控系統(tǒng)應(yīng)用安裝在這5部手機(jī)中并分別激活其設(shè)備管理器;
(3)設(shè)置輪詢時(shí)間,并在程序中開(kāi)啟MDM守護(hù)程序;
(4)查看手機(jī)中不符合策略項(xiàng)是否被糾正;
(5)在手機(jī)符合策略的前提下,反復(fù)進(jìn)行違規(guī)操作,查看是否會(huì)修改或彈出違規(guī)提示框。
實(shí)驗(yàn)結(jié)果如表4所示。可以看出,無(wú)論是通過(guò)系統(tǒng)API進(jìn)行管控的功能還是通過(guò)MDM守護(hù)程序進(jìn)行管控的功能,均能正常工作,并且手機(jī)root與否未對(duì)結(jié)果造成影響。
3.2 性能損耗
在各項(xiàng)功能均能有效執(zhí)行的前提下,我們從能耗、CPU/內(nèi)存開(kāi)銷(xiāo)等方面對(duì)系統(tǒng)的性能進(jìn)行評(píng)估。在程序中,我們假定當(dāng)前所有的系統(tǒng)設(shè)置都處于不合規(guī)狀態(tài),并在每次輪詢中將其糾正,以此可以檢測(cè)出系統(tǒng)的最大消耗。在實(shí)驗(yàn)中,我們分別選取了0.5秒、1秒、2秒作為輪詢的時(shí)間間隔。實(shí)驗(yàn)數(shù)據(jù)如錯(cuò)誤!未找到引用源。所示。
電池?fù)p耗方面,通過(guò)表5可以看出,隨著輪詢間隔的縮短,電能的消耗線性增加。在輪詢間隔為2秒時(shí),各個(gè)手機(jī)中MDM應(yīng)用的開(kāi)銷(xiāo)分別相當(dāng)于后臺(tái)運(yùn)行的System進(jìn)程的1.40%、2.34%、3.58%、6.28%、1.02%??梢钥磈H,大部分手機(jī)中該應(yīng)用的電能消耗只占到System進(jìn)程的5%以內(nèi),這不會(huì)對(duì)手機(jī)的使用時(shí)間造成明顯影響。
內(nèi)存使用方面,隨著輪詢間隔的縮短,相應(yīng)的內(nèi)存開(kāi)銷(xiāo)不會(huì)有明顯改變,并且在實(shí)驗(yàn)中該應(yīng)用使用的內(nèi)存均未超過(guò)15MB。目前絕大多數(shù)手機(jī)的內(nèi)存總量在IGB到3GB之間(IGB=1024MB),幾MB到十幾MB的內(nèi)存消耗,并不會(huì)增加手機(jī)負(fù)擔(dān)。
CPU使用方面,MDM應(yīng)用在CPU的使用上最高時(shí)也只有不到1.5%,并且占用率和輪詢頻率保持線性關(guān)系。所以該應(yīng)用也不會(huì)對(duì)CPU增加明顯負(fù)擔(dān)。
綜上所述,根據(jù)實(shí)際的安全要求將輪詢間隔設(shè)定在0.5秒到2秒之間是可行的,一方面,該輪詢間隔不會(huì)對(duì)設(shè)備性能增加明顯負(fù)擔(dān),另一方面滿足安全管控的需求。
4 結(jié)束語(yǔ)
隨著移動(dòng)設(shè)備的普及,移動(dòng)辦公逐漸成為一種趨勢(shì)。本文關(guān)注于移動(dòng)辦公面臨的安全問(wèn)題,設(shè)計(jì)并實(shí)現(xiàn)了一套可靠性高、性能損耗小的Android移動(dòng)設(shè)備管控系統(tǒng),該系統(tǒng)能夠?qū)τ糜谝苿?dòng)辦公的終端設(shè)備實(shí)施有效管控,使得企業(yè)管理員可以放心地允許員工通過(guò)移動(dòng)設(shè)備進(jìn)行辦公。