文/武宗品 張嵩 李剛 魏康威 李銘樂(lè)
近年來(lái),移動(dòng)互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展有目共睹,我們可以隨時(shí)隨地的去上網(wǎng)、移動(dòng)支付、生活繳費(fèi)、足不出戶(hù)的網(wǎng)購(gòu)、觀看高清視頻等,享受這些移動(dòng)互聯(lián)網(wǎng)技術(shù)發(fā)展帶來(lái)的便利早已進(jìn)入我們的日常生活之中,移動(dòng)互聯(lián)網(wǎng)技術(shù)的發(fā)展正深刻影響著我們的生活,技術(shù)升級(jí)帶來(lái)的方便與快捷也已遠(yuǎn)遠(yuǎn)超出我們的想象,科學(xué)技術(shù)的飛速發(fā)展進(jìn)步正引領(lǐng)著我們的社會(huì)走向深層次變革之中。
調(diào)查顯示,我國(guó)使用移動(dòng)辦公的人數(shù)在逐年增加,移動(dòng)辦公也逐漸從大中型企業(yè)向中小型企業(yè)過(guò)渡普及,由此帶來(lái)的企業(yè)可視數(shù)據(jù)泄露風(fēng)險(xiǎn)也愈發(fā)明顯,如何防止可視數(shù)據(jù)泄露越來(lái)越受到大多數(shù)企業(yè)的重視,保護(hù)企業(yè)的數(shù)據(jù)安全、使企業(yè)可視數(shù)據(jù)免遭泄露顯得更為重要、也更為緊迫,保護(hù)企業(yè)數(shù)據(jù)安全更應(yīng)該成為我們的常態(tài),更是我們義不容辭、不可推卸的責(zé)任。
本文基于虛擬應(yīng)用技術(shù),針對(duì)智能終端Android系統(tǒng)上的運(yùn)行應(yīng)用程序,實(shí)現(xiàn)了一種無(wú)須第三方應(yīng)用開(kāi)發(fā)者介入的、通用的、可定制化的屏幕水印繪制方式,能夠使第三方應(yīng)用程序界面顯示可定制的屏幕水印信息,有效地提高了可視數(shù)據(jù)通過(guò)截屏、拍照、錄像等方式發(fā)生泄漏的難度。
可視數(shù)據(jù)指的是運(yùn)用計(jì)算機(jī)圖形學(xué)和圖像技術(shù),將存儲(chǔ)在計(jì)算機(jī)或手機(jī)上的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為文本、圖片顯示在屏幕上,以進(jìn)行交互處理;可視數(shù)據(jù)可以將復(fù)雜、無(wú)規(guī)律的數(shù)據(jù)以直觀、容易理解的方式展示在人們面前,以便人們更加高效的獲取有價(jià)值的信息,可視數(shù)據(jù)是我們與數(shù)據(jù)信息交流的一種方式。但是可視數(shù)據(jù)在方便我們使用的同時(shí),也會(huì)帶來(lái)很大的信息安全隱患,對(duì)于企業(yè)用戶(hù)來(lái)說(shuō)困擾他們的最大問(wèn)題就是可視數(shù)據(jù)的泄露。針對(duì)目前市場(chǎng)情況,我們分析了基于Android系統(tǒng)的智能終端可視數(shù)據(jù)防泄露需求,下面介紹下常見(jiàn)的可視數(shù)據(jù)泄露途徑:
(1)截屏拷貝泄露:這種方式主要是通過(guò)使用手機(jī)的截屏功能將可視數(shù)據(jù)保存為圖片,這樣就可以將可視數(shù)據(jù)信息以圖片的形式泄露出去。
(2)手機(jī)拍照泄露:對(duì)具有拍攝功能的手機(jī)未進(jìn)行權(quán)限管控,導(dǎo)致可視數(shù)據(jù)信息被他人拍攝泄露出去。
(3)智能終端即時(shí)通訊:?jiǎn)T工在日常工作中會(huì)大量使用即時(shí)通訊軟件,這樣就會(huì)導(dǎo)致員工行為不可控,員工可能會(huì)通過(guò)即時(shí)通信軟件將存儲(chǔ)在智能終端上的可視數(shù)據(jù)或文檔發(fā)送給其他公司的人,導(dǎo)致企業(yè)數(shù)據(jù)泄露、商業(yè)泄密。
(4)打印數(shù)據(jù)泄露:通過(guò)打印的方式,將企業(yè)敏感信息打印為紙質(zhì)文件,攜帶出去給他人。
(5)U盤(pán)拷貝泄露:通過(guò)便攜式U盤(pán)插入手機(jī)上,將手機(jī)上的敏感數(shù)據(jù)拷貝出去以致數(shù)據(jù)泄露。
針對(duì)日常工作中可能遇到的可視數(shù)據(jù)泄露情形,一方面要從管理方式上考慮如何確保數(shù)據(jù)不泄露,另一方面要提高數(shù)據(jù)泄露的復(fù)雜度、降低數(shù)據(jù)泄露后追蹤的難度。針對(duì)第二點(diǎn),我們需要在泄露出去的數(shù)據(jù)上面繪制特有的水印信息,可有效降低數(shù)據(jù)泄露風(fēng)險(xiǎn),確保數(shù)據(jù)外泄后可以追溯到泄露源頭,防止數(shù)據(jù)泄露后被別有用心的人違法利用,提高數(shù)據(jù)泄露后非法使用的成本,水印可應(yīng)用于查看圖片、打開(kāi)辦公文檔、瀏覽公司內(nèi)部網(wǎng)頁(yè)、使用辦公軟件等場(chǎng)景,保證企業(yè)數(shù)據(jù)安全。
在不修改第三方應(yīng)用的前提下,在Android系統(tǒng)上實(shí)現(xiàn)對(duì)應(yīng)用的水印覆蓋,需要通過(guò)虛擬化技術(shù)。對(duì)現(xiàn)有的虛擬化技術(shù)進(jìn)行了分析和調(diào)研:通過(guò)將LXC工具移植到移動(dòng)ARM平臺(tái),使用LXC工具創(chuàng)建出多個(gè)容器,在每個(gè)容器中運(yùn)行Android系統(tǒng),實(shí)現(xiàn)了一種基于容器的虛擬化解決方案,但是該方案需要修改每個(gè)虛擬Android系統(tǒng)源代碼,不具有通用性和可移植性;通過(guò)修改Linux內(nèi)核的現(xiàn)有命名空間資源隔離機(jī)制,擴(kuò)展Driver命名空間,以支持多個(gè)虛擬化Android系統(tǒng)實(shí)例同時(shí)運(yùn)行在一套硬件設(shè)備上,但是該方案仍然不便于移植,需要修改系統(tǒng)源碼。
本文采用虛擬應(yīng)用技術(shù)是以Android系統(tǒng)framework框架為基礎(chǔ)編寫(xiě)的一套第三方應(yīng)用程序運(yùn)行所需的virtual framework service(虛擬框架服務(wù)),其分為Client代理端和Server服務(wù)端;框架的實(shí)現(xiàn)基礎(chǔ)是Java語(yǔ)言的反射注入和動(dòng)態(tài)代理機(jī)制,在Android系統(tǒng)的framework層進(jìn)行Hook(攔截)系統(tǒng)原生代碼,以此接管應(yīng)用程序的啟動(dòng)、創(chuàng)建、運(yùn)行流程,具有輕量、便于移植、使用方便的特性。
虛擬應(yīng)用技術(shù)在運(yùn)行時(shí)并不是一個(gè)簡(jiǎn)單的單進(jìn)程的庫(kù),其需要在系統(tǒng)調(diào)用到其預(yù)先注冊(cè)在清單文件中的組件之后Hook系統(tǒng),之后代理ClientApp的四大組件,包括組件生命周期管理等。
在Client App運(yùn)行進(jìn)程中我們會(huì)調(diào)用framework API,這些API最終會(huì)通過(guò)Binder進(jìn)程間通信調(diào)用到framework service進(jìn)程所提供的遠(yuǎn)端服務(wù)。在遠(yuǎn)端服務(wù)中比如ActivityManagerService通過(guò)持有Client App進(jìn)程的IBinder Token句柄,通過(guò)token也可以讓framework service進(jìn)程中的遠(yuǎn)端服務(wù)調(diào)用App進(jìn)程中的方法。
在虛擬應(yīng)用環(huán)境下,我們需要在Client App和framework services之間需要增加一層自己實(shí)現(xiàn)的VirtualAppService。VirtualAppService模擬了framework service的部分功能,而這也是虛擬應(yīng)用技術(shù)實(shí)現(xiàn)的關(guān)鍵所在。在虛擬應(yīng)用中運(yùn)行的Client App是未在framework service中注冊(cè)的,虛擬應(yīng)用則是預(yù)先在framework service中注冊(cè),因此framework service不能像管理普通應(yīng)用一樣管理運(yùn)行在虛擬應(yīng)用中的Client App會(huì)話,所以虛擬應(yīng)用需要?jiǎng)?chuàng)建一套VirtualAppService管理虛擬應(yīng)用中的Client App會(huì)話。
我們相當(dāng)于在Android系統(tǒng)上面創(chuàng)建了一個(gè)沙盒,總體設(shè)計(jì)采用分層的設(shè)計(jì)模式,分為業(yè)務(wù)邏輯層、應(yīng)用運(yùn)行層、虛擬應(yīng)用服務(wù)框架層,下面介紹這三層各自的作用。
業(yè)務(wù)邏輯層:主要負(fù)責(zé)配置虛擬應(yīng)用內(nèi)的一些DLP(Data leakage prevention)策略,保護(hù)虛擬應(yīng)用內(nèi)的數(shù)據(jù)免遭泄露。應(yīng)用運(yùn)行層:負(fù)責(zé)在虛擬應(yīng)用內(nèi)運(yùn)行第三方應(yīng)用程序,第三方應(yīng)用程序進(jìn)程的創(chuàng)建啟動(dòng)運(yùn)行以及組件的創(chuàng)建啟動(dòng)都是在該層操作,并且構(gòu)建第三方應(yīng)用程序的虛擬私有空間。虛擬應(yīng)用服務(wù)框架層:負(fù)責(zé)提供在虛擬應(yīng)用內(nèi)運(yùn)行的第三方應(yīng)用程序所需要的各種虛擬服務(wù),在虛擬應(yīng)用內(nèi)提供基礎(chǔ)設(shè)施以便第三方程序的運(yùn)行。
以虛擬應(yīng)用技術(shù)作為底層基礎(chǔ)框架API,公司組織團(tuán)隊(duì)開(kāi)發(fā)出一整套從終端到后臺(tái)管理的安全盒平臺(tái)軟件系統(tǒng),形成一整套移動(dòng)辦公模式解決方案。
3.1.1 用戶(hù)管理
安全盒平臺(tái)可以將客戶(hù)的組織架構(gòu)信息通過(guò)Excel的形式導(dǎo)入,也可以在平臺(tái)上錄入信息。管理員可以對(duì)這些用戶(hù)信息進(jìn)行增刪改查,并對(duì)用戶(hù)的賬號(hào)密碼進(jìn)行重置。
3.1.2 應(yīng)用管理
安全盒內(nèi)使用的應(yīng)用是管理員控制的。管理員可以上傳用戶(hù)可以使用的應(yīng)用,并控制應(yīng)用可以允許哪些用戶(hù)進(jìn)行使用。
3.1.3 可定制化屏幕水印
安全盒平臺(tái)可以根據(jù)用戶(hù)提供的想要顯示的水印信息做定制化處理,以滿足客戶(hù)所要求的應(yīng)用顯示水印信息,在安全盒內(nèi)運(yùn)行的第三方應(yīng)用程序的界面上覆蓋顯示特定水印信息,水印信息可以更新。水印信息定制包括:是否顯示IMEI、是否顯示用戶(hù)名、是否顯示時(shí)間戳、顯示的位置等。
安全盒平臺(tái)軟件是順應(yīng)市場(chǎng)需求,面向政務(wù)部門(mén)等一些對(duì)數(shù)據(jù)安全等級(jí)要求比較高的行業(yè),為用戶(hù)提供一個(gè)安全可靠的智能終端使用環(huán)境,保證用戶(hù)數(shù)據(jù)安全。當(dāng)前,安全盒平臺(tái)已經(jīng)在法院、政府、公安等多個(gè)行業(yè)進(jìn)行部署和使用。
本文分析了可視數(shù)據(jù)防泄露需求以及虛擬技術(shù)的實(shí)現(xiàn)原理,并以此做為底層基礎(chǔ)框架開(kāi)發(fā)出了安全盒平臺(tái)軟件系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)防泄漏功能,解決企業(yè)用戶(hù)在工作中遇到的數(shù)據(jù)安全防護(hù)以及數(shù)據(jù)防泄漏等問(wèn)題。