溫州市公用事業(yè)投資集團(tuán)有限公司 傅弘弼 金有星 王弋出
移動設(shè)備管理系統(tǒng)中遠(yuǎn)程卸載功能的設(shè)計與實現(xiàn)
溫州市公用事業(yè)投資集團(tuán)有限公司 傅弘弼 金有星 王弋出
本文為解決移動設(shè)備數(shù)據(jù)安全問題,通過對移動設(shè)備Android系統(tǒng)本地靜默卸載技術(shù)和云推送技術(shù)的研究,有效地將兩個技術(shù)相結(jié)合,實現(xiàn)通過互聯(lián)網(wǎng)遠(yuǎn)程卸載Android系統(tǒng)指定APP的功能。此功能模塊分服務(wù)端和客戶端,客戶端作為APP獨(dú)立運(yùn)行于Android系統(tǒng)移動設(shè)備上,服務(wù)端內(nèi)嵌于移動設(shè)備管理系統(tǒng)。從而實現(xiàn)在任何地方任意時間遠(yuǎn)程卸載APP,防止智能移動終端數(shù)據(jù)泄露。
云推送;靜默卸載;Android;數(shù)據(jù)安全
隨著智能移動終端、4G網(wǎng)絡(luò)的普及,通信網(wǎng)絡(luò)質(zhì)量的提高,企業(yè)的信息化應(yīng)用逐步由傳統(tǒng)信息化向移動信息化發(fā)展,移動信息化正在成為企業(yè)信息化有力的補(bǔ)充。移動信息化的發(fā)展,將企業(yè)業(yè)務(wù)由傳統(tǒng)辦公區(qū)擴(kuò)展到智能移動終端和移動通信網(wǎng)絡(luò)所能達(dá)到的任何地方,從而真正實現(xiàn)了anytime and anywhere的辦公模式,大大提高了工作效率,節(jié)約了工作成本。
但是,由于將企業(yè)業(yè)務(wù)系統(tǒng)擴(kuò)展到智能移動終端,隨之而來的是智能終端數(shù)據(jù)泄露的安全問題日益嚴(yán)重[1]。本文以百度云推送為例,介紹了通過設(shè)計Android系統(tǒng)靜默卸載程序,同時結(jié)合云推送技術(shù),實現(xiàn)遠(yuǎn)程卸載Android設(shè)備指定APP的功能,從而解決智能移動終端設(shè)備丟失等情況下遠(yuǎn)程卸載指定APP,防止企業(yè)數(shù)據(jù)泄露的方法[2]。
遠(yuǎn)程卸載模塊分服務(wù)器端和客戶端,服務(wù)器端主要是在管理系統(tǒng)卸載APP功能模塊中集成云推送服務(wù)端。客戶端共有二部分組成:Android靜默卸載程序、云推送模塊。
(1)Android靜默卸載程序[4]。Android系統(tǒng)獲得root權(quán)限后,靜默卸載程序在系統(tǒng)后臺執(zhí)行卸載命令,而無需用戶參與操作、或在系統(tǒng)中彈出提示信息。目前大多數(shù)的Android助手型軟件均采用靜默安裝卸載方式實現(xiàn)程序的一鍵安裝或卸載。本模塊采用靜默卸載方式目的是在推送卸載命令后,Android系統(tǒng)接受到命令能夠自動執(zhí)行命令,而不受外界任何操作的干擾。
(2)百度云推送(Push)是百度云平臺向開發(fā)者提供的消息推送服務(wù)。通過百度云與程序客戶端之間建立穩(wěn)定、可靠的長連接,使開發(fā)者能夠為客戶端程序提供實時推送消息功能[7]。百度云推送服務(wù)支持推送三種類型的消息:通知、透傳消息及富媒體:支持向所有用戶或根據(jù)標(biāo)簽分類向特定用戶群體推送消息,相對與客戶端pull方式,push方式實時性更強(qiáng)[8]。PUSH方式與Pull方式的特點如表1所示:
表1 push和pull方式對比
消息推送服務(wù)是由消息發(fā)送方發(fā)起,消息接收方和發(fā)送方事先建立網(wǎng)絡(luò)連接,然后接收推送消息。在程序開發(fā)中,發(fā)起方稱作推送服務(wù)器(Push Server),接收方稱作客戶端(Client)。相比通過Pull方式來接收消息或通知,Push方式實時性更強(qiáng),同時更節(jié)約網(wǎng)絡(luò)流量。所以,目前大部分對實時性要求高的程序,均采用Push的方式來進(jìn)行消息通知[8]。
推送服務(wù)器可向指定的設(shè)備(Device)或是用戶(User)推送消息,一個用戶對應(yīng)一個UserID,一個User可能擁有多臺設(shè)備,我們向同一個UserID推送消息時,他所有綁定了UserID的設(shè)備都能收到消息[9]。百度云推送是通過客戶端向推送服務(wù)器注冊,并在客戶端的監(jiān)聽端口獲取推送服務(wù)器返回的 ChannelID和UserID,ChannelID對應(yīng)一個終端,在向推送服務(wù)器注冊的過程中,設(shè)備可以發(fā)送IMIE碼或者UUID作為唯一標(biāo)識,在推送服務(wù)器注冊后再將生成的ChannelID和UserID返回給客戶端[9]。設(shè)備注冊完畢后,推送服務(wù)器維護(hù)一個注冊設(shè)備列表,這個列表維護(hù)了UserID和ChannelID以及與設(shè)備對應(yīng)的關(guān)系,當(dāng)需要向指定的設(shè)備或用戶推送消息時,推送服務(wù)器會首先遍歷這個設(shè)備列表,通過這兩個ID來做唯一性判斷并找到需要推送消息的設(shè)備,然后就可以進(jìn)行消息推送了[9],如圖1所示。
圖1 百度云推送注冊機(jī)制
百度云推送服務(wù)支持推送三種類型的消息:通知、透傳消息及富媒體;支持向所有用戶或根據(jù)標(biāo)簽分類向特定用戶群體推送消息;支持多種自定義功能(如自定義內(nèi)容、后續(xù)行為、樣式模板等);提供用戶信息及通知消息統(tǒng)計信息,方便開發(fā)者進(jìn)行后續(xù)開發(fā)及運(yùn)營。
采用百度云推送是為了能將卸載命令實時的推送到Android系統(tǒng)上,只要Android系統(tǒng)聯(lián)網(wǎng)就能接收到推送命令,不需要關(guān)注Android平板所在地,Android平板的聯(lián)網(wǎng)IP等。百度提供了完整的Demo幫助開發(fā)者集成云推送服務(wù),推送服務(wù)SDK通過。jar包和。so文件的方式可以集成到我們自己的工程中,實現(xiàn)推送功能。
遠(yuǎn)程卸載的實現(xiàn)原理為:
(1)靜默卸載程序集成推送SDK,實現(xiàn)與百度云推送服務(wù)器建立連接
(2)移動設(shè)備管理系統(tǒng)作為推送命令客戶端調(diào)用百度云SDK服務(wù)器端,將卸載指令發(fā)送到百度云推送服務(wù)器上。
(3)百度云推送服務(wù)器根據(jù)已注冊的API Key,和推送消息中的USERID和ChannelID 將卸載指令作為消息推送到指定ID的Android設(shè)備上。
(4)Android設(shè)備的SDK接收到推送消息,透傳消息給靜默卸載程序的指定參數(shù)里,實現(xiàn)程序卸載。
卸載命令推送運(yùn)行機(jī)制,如圖2所示:
圖2 卸載命令推送運(yùn)行機(jī)制
3.1 靜默卸載程序的實現(xiàn)
要實現(xiàn)遠(yuǎn)程卸載,首先必須實現(xiàn)本地靜默卸載。通過設(shè)計代碼直接在Android設(shè)備上直接輸入預(yù)推送的消息,以測試是否能夠?qū)崿F(xiàn)本地靜默卸載。如果代碼能夠?qū)崿F(xiàn)本地靜默卸載,則可以進(jìn)一步通過推送消息,讓卸載代碼接收消息實現(xiàn)卸載。靜默卸載的shell 命令格式為: private string cmd_uninstall = "pm uninstall + packageName"。
在Android系統(tǒng)獲得root權(quán)限后,配置以下四步實現(xiàn)靜默卸載:
(1)獲得卸載權(quán)限。
(2)在主程序MainActivity。java中定義卸載命令。
(3)在主程序MainActivity。java中定義卸載命令的執(zhí)行方法。
(4)為方便測試本地卸載效果,在主程序MainActivity。java中定義一個卸載按鈕。
3.2 云推送透傳消息的實現(xiàn)
靜默卸載程序本地測試后,就可以配置云推送。將云推送SDK嵌入的wzgyMDM工程中,實現(xiàn)遠(yuǎn)程信息推送。
要實現(xiàn)信息推送,首先得在百度開發(fā)者平臺注冊一個開發(fā)者賬戶,并建立一個推送消息的工程,生成對應(yīng)的API key和Secret Key。百度云推送通過API key和Secret Key作為唯一識別碼,識別推送的對象
賬戶生成API key和Secret Key后,就可以建立工程并下載云推送的客戶端SDK,SDK的壓縮文件中包含一個例子代碼,一個用戶手冊,和所需的libs和資源等,
SDK下載完成后,根據(jù)SDK包的用戶手冊指導(dǎo),在wzgyMDM工程中集成云推送SDK,具體步驟:
(1)將SDK程序包中l(wèi)ibs下文件pushservice-4.1.0.jar導(dǎo)入到工程中的 libs目錄mips目錄下;將libbdpush_V2_1.so導(dǎo)入到工程中的libs 目錄 armeabi目錄下。如圖3所示:
圖3 libbdpush_V2_1.so導(dǎo)入wzgyMDM工程
(2)SDK程序包中主要有四個類:MyPushMessageReceiver。 java:這個類作用是接收和發(fā)送消息;DemoApplication。java:這個類作用是啟動和停止推送;Utils。java:這個類保存了通用函數(shù)和工具集;MainActivity。java:是wzgymdm的主程序。將這四個類導(dǎo)入到wzgymdm工程src 中com。wzgymdm下。如圖4所示:
圖4 導(dǎo)入到工程內(nèi)的類文件
(3)在AndroidManifest。xml 中添加push service 運(yùn)行需要的權(quán)限。
(4)在AndroidManifest。xml中綁定預(yù)先在百度開發(fā)者中心注冊的apikey。
(5)APPlication 初始化調(diào)用配置:將導(dǎo)入工程的demoapplication的packagename 改為wzgymdm的工程名,并且在AndroidMmanifest。 xml的Application 標(biāo)簽中指定 Android:name 屬性值為該Application。
(6)修改MyPushMessageReceiver。java,使推送消息實現(xiàn)透傳,并調(diào)用卸載代碼。首先將MyPushMessageReceiver。java 包名修改為wzgymdm工程名,然后在透傳消息處理函數(shù)中,加入透傳信息的處理方法。
通過代碼修改和調(diào)整來集成云推送SDK,實現(xiàn)了遠(yuǎn)程靜默卸載??赏ㄟ^百度開發(fā)者平臺測試推送信息,調(diào)試是否實現(xiàn)了遠(yuǎn)程卸載。如圖5和圖6所示:
圖5 百度開發(fā)者平臺云推送調(diào)試界面
圖6 百度開發(fā)者平臺云推送消息推送界面
4.1 遠(yuǎn)程卸載服務(wù)器端實現(xiàn)原理
遠(yuǎn)程卸載服務(wù)器端主要是集成百度云推送SDK服務(wù)端,通過調(diào)用云推送SDK服務(wù)端發(fā)送卸載命令到百度云平臺。目前百度云推送SDK將云推送服務(wù)端的所有操作封裝成一個類 Channel,通過對該類的簡單初始化,即可調(diào)用其內(nèi)部的各種方法,使用云推送服務(wù)。Channel提供的方法和服務(wù)端 API 對應(yīng),是對服務(wù)端 REST API 的封裝。
PHP SDK 壓縮包主要由以下部分組成:
Channel。class。php :PHP_SDK 腳本,包含對外提供的所有接口。
Lib:云推送使用到的一些基礎(chǔ)公用文件。
sample/sample。php -- 展示如何使用 PHP_SDK 的 demo 文件。
SDK接口基本功能:
函數(shù) function __construct 是建立新channel對象的函數(shù),如:
public function __construct ($apiKey, $secretKey, $arr_curlopts = array())
$apiKey:從百度開發(fā)者中心獲得的 API Key。
$secretKey:從百度開發(fā)者中心獲得的 Secret Key。
通過$apiKey, $secretKey與百度云推送服務(wù)器建立一個新的channel對象,$apiKey, $secretKey是必須的值。
推送函數(shù)public function pushMessage,實現(xiàn)信息推送,是主要的執(zhí)行函數(shù)。該函數(shù)根據(jù) push_type值不同,推送給不同的人群。Push_type為1時,推送給指定某人。Push_type為2時,推送給指定一組人。Push_type為3時,推送給所有人。根據(jù)message type的值,決定消息類型。Message type默認(rèn)為0是消息(透傳)類型,Message type為1是通知類型。
4.2 移動設(shè)備管理系統(tǒng)調(diào)用SDK過程
圖7 設(shè)備管理系統(tǒng)調(diào)用SDK過程
服務(wù)端的實現(xiàn)過程是調(diào)用云推送SDK服務(wù)端,將指定的程序包名發(fā)送的百度云推送服務(wù)器上。整個調(diào)用過程如圖7所示。
管理系統(tǒng)執(zhí)行遠(yuǎn)程卸載的過程如下:
(1)在設(shè)備詳細(xì)信息頁面,點擊卸載APP,進(jìn)入該設(shè)備的卸載APP頁面。
(2)卸載APP頁面會顯示設(shè)備與百度云推送綁定的userid和channelid,還有設(shè)備可以卸載的應(yīng)用程序。如圖8所示:
圖8 管理系統(tǒng)卸載APP界面
(3)選擇某一個應(yīng)用程序,點擊卸載。設(shè)備管理系統(tǒng)將以post的方式,將卸載APP頁面代碼中的userid、channelid、message(程序包名),發(fā)送到baidupush。php。Baidupush。php 接收到post的變量,調(diào)用云推送SDK包中的函數(shù)pushMessage_Android ($message),然后發(fā)送到百度云推送服務(wù)器,而云推送服務(wù)器推送message(程序包名),到Android客戶端。
4.3 遠(yuǎn)程卸載功能的執(zhí)行效果
(1)選擇要卸載的APP,點擊卸載按鈕,如圖9所示:
圖9 卸載APP界面
(2)頁面跳轉(zhuǎn)到baidupush。php,管理系統(tǒng)post userid、channelid、message(即程序名)執(zhí)行卸載函數(shù)function pushMessage_ Android ($message),卸載成功系統(tǒng)會返回成功代碼,并彈出提示窗口,如圖10所示。
圖10 卸載成功彈出提示窗口
近幾年,云技術(shù)在各行各業(yè)深入應(yīng)用,云運(yùn)營商也提供了許多方便可行的云解決方案。本文采用了成熟的云推送技術(shù)實現(xiàn)遠(yuǎn)程命令推送,實時性高,穩(wěn)定性強(qiáng),有效的實現(xiàn)了遠(yuǎn)程APP的卸載,從而保證了企業(yè)數(shù)據(jù)安全。
[1]張像,孫秩。淺析移動終端信息安全問題[J]。信息安全與技術(shù),2011(10):61-62.
[2]潘娟。移動互聯(lián)網(wǎng)時代智能終端面臨安全挑戰(zhàn)[J]。世界電信,2013(1):91-95.
[3]Ed Burnette。Android基礎(chǔ)教程(第3版。修訂版)[M]。人民郵電出版社,2011.
[4]百度云推送實踐應(yīng)用開發(fā)教程[EB/OL]。2014.http://www。 docin。com/p-859458655.html
[5]張長學(xué),張偉,董智明。移動推送技術(shù)面面觀[J]。移動通信2015(5): 21-27.
[6]百度。Push服務(wù)SDK用戶手冊[J/OL]。百度開發(fā)者中心,2014.
傅弘弼(1982-),碩士,高級工程師,主要研究方向:計算機(jī)網(wǎng)絡(luò),網(wǎng)絡(luò)安全,云技術(shù)。
圖2 指令Cache未使能仿真圖
圖3 指令Cache命中仿真圖
從仿真結(jié)果可以看出,使用Cache和未使用Cache時,指令在流水線的執(zhí)行階段所占用的時鐘周期數(shù)有著明顯的變化。Cache命中時的執(zhí)行速度是未命中時的數(shù)倍,說明指令Cache在整個DSP系統(tǒng)中起到了關(guān)鍵性的作用。
為了使系統(tǒng)整體性能提高一個檔次,當(dāng)前大多數(shù)計算機(jī)系統(tǒng)都采用多級存儲層次。通用嵌入式系統(tǒng)、臺式機(jī)和服務(wù)器等計算機(jī)系統(tǒng)幾乎都具有由"寄存器-Cache-主存-輔存"構(gòu)成的多級存儲層次。為了解決32位DSP處理器運(yùn)行速度與主存儲器運(yùn)行速度不匹配問題,本文使用verilog編程語言設(shè)計并實現(xiàn)了一款指令Cache,由上述仿真結(jié)果可知,該指令Cache達(dá)到了相應(yīng)的效果。
參考文獻(xiàn)
[1]劉宗林,馬卓,魯建壯,唐濤。一種并行指令Cache的設(shè)計與實現(xiàn)[J]。微電子學(xué)與計算機(jī),2007,12:147-149.
[2]楊曉剛,屈凌翔,張樹丹。 DSP中指令Cache的低功耗設(shè)計[J]。 計算機(jī)工程與應(yīng)用,2011,32:82-86.
[3]謝學(xué)軍,葉以正,王進(jìn)祥,喻明艷。哈佛體系結(jié)構(gòu)的Cache控制器設(shè)計[J]。計算機(jī)工程,2004,22:37-39.
[4]戴梅萼。高性能計算機(jī)系統(tǒng)中Cache的組織方式及性能分析[J]。微電子學(xué)與計算機(jī),2000,05:15-18+58.
[5]武楊。高速緩沖存儲器Cache設(shè)計的關(guān)鍵技術(shù)分析[J]。中國科技信息,2006,07:202-203.
作者簡介:
呂華智 (1991-),男,湖南郴州人,碩士,研究方向:數(shù)字集成電路設(shè)計。
黃嵩人 (1973-),男,江蘇無錫人,博士,高級工程師,主要研究方向:DSP設(shè)計等。