李 宏,郭江波
(1.中國(guó)電子科技集團(tuán)公司第五十四研究所,河北 石家莊 050081;2.河北科技大學(xué) 信息科學(xué)與工程學(xué)院,河北 石家莊 050018)
近年來(lái),隨著智能手機(jī)的迅猛發(fā)展和普及,智能手機(jī)正改變著人們的生活方式,但隨之而來(lái)的手機(jī)丟失等問題也日益凸顯。發(fā)生手機(jī)丟失情況時(shí),如何能快速、精準(zhǔn)地尋找到丟失的手機(jī)就顯得尤為重要。針對(duì)這種情況,蘋果公司設(shè)計(jì)了一套比較完善的丟失手機(jī)定位解決方案,通過(guò)建立自己的服務(wù)器iCloud記錄并綁定用戶信息和蘋果設(shè)備ID,如果用戶蘋果手機(jī)丟失,則可以通過(guò)在PC端登錄自己的iCloud賬號(hào)實(shí)現(xiàn)定位丟失手機(jī)、鎖屏、播放鈴聲、銷毀iPhone上的用戶信息等功能。Android手機(jī)并沒有開發(fā)類似的功能,但一些安全衛(wèi)士類的軟件,例如“360”和“騰訊”等公司設(shè)計(jì)實(shí)現(xiàn)的基于短信方式尋找丟失手機(jī)的方案[1],通過(guò)設(shè)置安全號(hào)碼,在手機(jī)丟失后安全號(hào)碼向丟失手機(jī)發(fā)送短信指令,而丟失手機(jī)通過(guò)監(jiān)控短信的內(nèi)容,獲得定位、播報(bào)音樂和恢復(fù)出廠設(shè)置等相關(guān)指令。但自從Android5.0版本推出后,引入了多項(xiàng)安全增強(qiáng)措施,越來(lái)越難獲得root權(quán)限,而應(yīng)用軟件監(jiān)控短信內(nèi)容的做法也被Google公司拋棄。至此,傳統(tǒng)的基于短信方式尋找丟失手機(jī)的方案也因新版本的Android采用用戶授予短信發(fā)送權(quán)限的安全模式變得不那么可靠了;還有就是在拾到者或偷盜者更換掉手機(jī)的SIM卡之后,用戶丟失的手機(jī)就接收不到安全號(hào)碼發(fā)送的短信指令,丟失手機(jī)也不能執(zhí)行相應(yīng)的指令功能。而蘋果公司的基于iColud云服務(wù)方式找尋丟失手機(jī)的方式在Android系統(tǒng)上并不適用,首先IOS系統(tǒng)是閉源的,但Android系統(tǒng)是開源的[2],而且各大公司買入Android版權(quán)定制更改Android系統(tǒng)底層的源碼[3],尤其是對(duì)權(quán)限授予的管理各不相同,這就導(dǎo)致蘋果手機(jī)可以設(shè)置用戶首次使用時(shí)激活輸入身份驗(yàn)證信息,而Android系統(tǒng)手機(jī)不能;其次驗(yàn)證用戶的身份信息需要長(zhǎng)期提供驗(yàn)證云服務(wù),投資成本太高,而且也說(shuō)服不了所有Android系統(tǒng)手機(jī)生產(chǎn)廠家按照此規(guī)定去做。
通信協(xié)議的選擇需要考慮數(shù)據(jù)的實(shí)時(shí)、不丟、不重、保序、節(jié)能、流暢和安全這幾個(gè)因素,而長(zhǎng)輪詢的方式是通過(guò)高頻率地從服務(wù)器拉取新消息[4],這不但增加服務(wù)器的壓力,浪費(fèi)用戶的流量,而且消息仍然不夠及時(shí)[5],如果不考慮傳輸時(shí)間,最長(zhǎng)的延遲就是輪詢的間隔,所以使用HTTP輪詢方式不可取。而消息的生產(chǎn)者主動(dòng)推送消息[6],可以解決長(zhǎng)輪詢的缺點(diǎn)。消息推送協(xié)議可以選擇XMPP協(xié)議[7]和MQTT協(xié)議,但XMPP協(xié)議較復(fù)雜、冗余(基于XML)、費(fèi)流量、費(fèi)電、部署硬件成本高,這主要是因?yàn)閄ML有大量的標(biāo)簽冗余信息,網(wǎng)絡(luò)流量的70%都消耗在XMPP協(xié)議層了,這不適合手機(jī)防盜方案,而MQTT協(xié)議簡(jiǎn)潔、小巧、可擴(kuò)展性強(qiáng)、省流量、省電,適合做大量節(jié)點(diǎn)弱和網(wǎng)絡(luò)差的場(chǎng)景,非常適合現(xiàn)在移動(dòng)互聯(lián)網(wǎng)的基礎(chǔ)設(shè)施,是推送服務(wù)的最佳協(xié)議。
針對(duì)傳統(tǒng)的基于短信方式Android手機(jī)防盜的弊端[8],提出了一種基于MQTT協(xié)議的Android手機(jī)防盜設(shè)計(jì)方案[9]。這種設(shè)計(jì)方案與蘋果公司的方案類似,也是先綁定設(shè)備的ID并通過(guò)網(wǎng)絡(luò)傳輸相關(guān)指令執(zhí)行相應(yīng)操作。
MQTT協(xié)議是一個(gè)基于客戶端-服務(wù)器,構(gòu)建于TCP/IP協(xié)議上[10],基于消息發(fā)布/訂閱(publish/subscribe)模式的輕量級(jí)即時(shí)通信協(xié)議[11]。其特點(diǎn)是傳輸代價(jià)較小(協(xié)議頭部只有2 Byte),適用于低帶寬、低耗電量不可靠連接、嵌入式設(shè)備和CPU內(nèi)存緊張的設(shè)備[12],可以以極少的代碼和有限的帶寬為遠(yuǎn)程設(shè)備提供實(shí)時(shí)可靠的消息服務(wù)[13]。MQTT協(xié)議目前在物聯(lián)網(wǎng)、小型化設(shè)備、智能家居以及移動(dòng)設(shè)備等方面得到了較廣泛的應(yīng)用。
MQTT協(xié)議實(shí)現(xiàn)方式如圖1所示。MQTT協(xié)議有3種身份:發(fā)布者(Publisher)、代理(Broker)和訂閱者(Subscriber)。其中,客戶端既可以是消息的發(fā)布者又可以是消息的訂閱者,消息代理是服務(wù)器,而消息發(fā)布者又可以訂閱接收自己發(fā)布的消息。MQTT服務(wù)端被稱為消息代理(Broker),它是消息發(fā)送方和訂閱相同Topic消息的接收方之間的中介,服務(wù)器是用來(lái)處理客戶端網(wǎng)絡(luò)連接請(qǐng)求、訂閱和取消訂閱消息請(qǐng)求、接收客戶端消息體并轉(zhuǎn)發(fā)給訂閱相同Topic的客戶端。
圖1 MQTT協(xié)議實(shí)現(xiàn)方式
本方案的功能主要包括Android手機(jī)定位、鈴聲報(bào)警、鎖定手機(jī)和刪除數(shù)據(jù)這4個(gè)功能。Android手機(jī)定位實(shí)現(xiàn)在用戶丟失手機(jī)時(shí)通過(guò)安全手機(jī)能夠快速準(zhǔn)確地定位;鈴聲報(bào)警實(shí)現(xiàn)使丟失手機(jī)播報(bào)鈴聲,輔助定位功能幫助用戶尋找丟失手機(jī);鎖定手機(jī)實(shí)現(xiàn)對(duì)用戶丟失的手機(jī)鎖屏操作,用以保護(hù)隱私內(nèi)容和財(cái)產(chǎn)安全,一旦鎖定手機(jī),其他人將不能開啟該手機(jī);刪除數(shù)據(jù)實(shí)現(xiàn)對(duì)用戶手機(jī)刪除一切數(shù)據(jù)功能,是為了應(yīng)對(duì)用戶在無(wú)法找到丟失手機(jī)時(shí),為防止隱私信息泄露和財(cái)產(chǎn)損失而執(zhí)行恢復(fù)出廠設(shè)置操作,銷毀用戶使用的一切痕跡。用例示意圖如圖2所示。
圖2 用例示意
系統(tǒng)主要由用戶手機(jī)、消息代理服務(wù)器Apollo和安全手機(jī)3部分組成。用戶手機(jī)在丟失以后通過(guò)網(wǎng)絡(luò)接收手機(jī)定位、鈴聲報(bào)警、鎖定手機(jī)或刪除數(shù)據(jù)的指令,從而執(zhí)行相應(yīng)操作;Apollo的作用是轉(zhuǎn)發(fā)用戶手機(jī)和安全手機(jī)發(fā)送的消息;安全手機(jī)是控制端,通過(guò)用戶的需要向用戶手機(jī)發(fā)送相應(yīng)指令。
本方案的總體框架結(jié)構(gòu)是基于客戶端/服務(wù)器模式,MQTT服務(wù)器采用Apache推出的基于ActiveMQ的消息代理服務(wù)器Apollo,Apollo是一個(gè)更快、更強(qiáng)健、更容易維護(hù)的流文本定向消息協(xié)議(Streaming Text Orientated Message Protocol,STOMP)服務(wù)器;用戶手機(jī)與安全手機(jī)通信采用IBM輕量級(jí)的消息發(fā)布/訂閱(publish/subscribe)的即時(shí)通信協(xié)議MQTT協(xié)議,2個(gè)手機(jī)之間的相互通信都要經(jīng)過(guò)Apollo服務(wù)器作為中轉(zhuǎn),這其中包括安全手機(jī)向用戶手機(jī)發(fā)送的相關(guān)指令和用戶手機(jī)向安全手機(jī)返回的定位信息;SQLite是Android本地的數(shù)據(jù)庫(kù),它用于保存用戶設(shè)置的主題(Topic),只有當(dāng)訂閱主題一致時(shí)用戶才能通過(guò)MQTT協(xié)議接收服務(wù)器轉(zhuǎn)發(fā)的消息?;贛QTT協(xié)議的Android手機(jī)防盜方案總體框架結(jié)構(gòu)圖如圖3所示。
圖3 基于MQTT協(xié)議的Android手機(jī)防盜總體架構(gòu)
基于MQTT協(xié)議的Android手機(jī)防盜方案主要針對(duì)Android手機(jī)在丟失時(shí)如何快速準(zhǔn)確定位尋找到手機(jī)而設(shè)計(jì)的,其主要功能模塊包括手機(jī)定位、鈴聲報(bào)警、鎖定手機(jī)和刪除數(shù)據(jù)這些功能。根據(jù)MQTT協(xié)議v3.1版本要求客戶端ID必須小于23 Byte的要求,用只有15 Byte的手機(jī)國(guó)際移動(dòng)設(shè)備身份碼(International Mobile Equipment Identity,IMEI)這一手機(jī)設(shè)備唯一ID作為與服務(wù)器端連接的clientId。而訂閱的主題(Topic)可以由用戶自己選擇填寫,這樣就能實(shí)現(xiàn)用戶手機(jī)與安全手機(jī)之間互換角色,因?yàn)橛嗛喌闹黝}不一樣,它們收發(fā)的信息也是不一樣的。
用戶手機(jī)與安全手機(jī)之間的通信都需要發(fā)送一個(gè)CONNECT報(bào)文與服務(wù)器Apollo建立連接,然后2部手機(jī)都向服務(wù)器訂閱一個(gè)相同的TopicName,這樣2部手機(jī)就可以實(shí)現(xiàn)消息通信了,用戶手機(jī)可以根據(jù)規(guī)定的指令協(xié)議按照安全手機(jī)發(fā)送的指令實(shí)現(xiàn)相應(yīng)功能。用戶手機(jī)通過(guò)mqttReceiverService類實(shí)現(xiàn)與服務(wù)器進(jìn)行網(wǎng)絡(luò)連接以及訂閱相關(guān)主題等操作,mqttReceiverService類繼承于Service類;安全手機(jī)則通過(guò)mqttSenderIS類實(shí)現(xiàn)網(wǎng)絡(luò)連接與訂閱主題等操作。其主要功能實(shí)現(xiàn)如下。
Android手機(jī)定位功能是在用戶手機(jī)和安全手機(jī)設(shè)置相同的訂閱主題(Topic)的情況下,用戶手機(jī)必須開啟一個(gè)Service來(lái)監(jiān)聽安全手機(jī)發(fā)送相應(yīng)的指令,這個(gè)監(jiān)聽類就是mqttReceiverService類,而安全手機(jī)通過(guò)mqttSenderIS類向用戶手機(jī)發(fā)送“dingwei#”指令,antitheftmqttsenderIS類繼承于IntentService類,用戶手機(jī)接收到定位消息指令后,會(huì)通過(guò)locationService類實(shí)現(xiàn)定位功能,然后通過(guò)locationSenderIS類向安全手機(jī)發(fā)送定位信息,而安全手機(jī)通過(guò)location-ReceiverService類監(jiān)聽用戶手機(jī)發(fā)送的定位信息[14]。通過(guò)百度地圖技術(shù)實(shí)現(xiàn)定位信息展示,用戶手機(jī)通過(guò)定位獲取百度地圖經(jīng)緯度信息,而安全手機(jī)收到此信息以后進(jìn)行逆地址解析,解析出結(jié)構(gòu)化地址(即用戶能看懂的地址信息),并顯示在百度地圖的圖層界面上,手機(jī)定位活動(dòng)圖如圖4所示。此項(xiàng)功能在系統(tǒng)安裝時(shí)需要用戶授予本系統(tǒng)定位權(quán)限,當(dāng)用戶開啟精確定位服務(wù)時(shí),定位信息會(huì)更加精準(zhǔn)。
這項(xiàng)功能是為了輔助用戶能夠更精確地尋找到丟失的手機(jī)。用戶通過(guò)定位獲取手機(jī)位置后,可以通過(guò)鈴聲報(bào)警獲取手機(jī)具體在什么位置。用戶手機(jī)通過(guò)mqttReceiverService類監(jiān)聽相應(yīng)的指令,安全手機(jī)通過(guò)mqttSenderIS類向用戶手機(jī)發(fā)送播放報(bào)警鈴聲指令,即“baojing#”。鈴聲報(bào)警的具體功能是通過(guò)ringAlarm函數(shù)實(shí)現(xiàn)的。此功能需要?jiǎng)討B(tài)獲得音頻管理器AudioManager權(quán)限,以便在用戶設(shè)置靜音或者振動(dòng)模式時(shí)能開啟聲音并調(diào)節(jié)音量大小。
本功能是對(duì)用戶手機(jī)進(jìn)行鎖屏保護(hù),用戶丟失手機(jī)時(shí),為了防止他人偷窺用戶隱私或者竊取用戶財(cái)產(chǎn),需要對(duì)丟失的手機(jī)采取相應(yīng)的保護(hù)措施。安全手機(jī)需要通過(guò)mqttSenderIS類向用戶手機(jī)發(fā)送鎖屏指令并將鎖屏密碼一起發(fā)送給用戶手機(jī);用戶手機(jī)開啟mqttReceiverService服務(wù)監(jiān)聽安全手機(jī)發(fā)送“suoping#”指令并解析指令協(xié)議中包含的鎖屏密碼。
圖4 手機(jī)定位活動(dòng)示意
刪除數(shù)據(jù)功能主要是為了用戶在找不到丟失手機(jī)的情況下,為防止得到者窺探用戶隱私或者竊取財(cái)產(chǎn)等行為[15],不得已采用執(zhí)行數(shù)據(jù)恢復(fù)出廠設(shè)置操作而刪除丟失手機(jī)中的數(shù)據(jù)[16]。安全手機(jī)通過(guò)mqttSenderIS類向用戶手機(jī)發(fā)送刪除指令;用戶手機(jī)首先開啟mqttReceiverService服務(wù)監(jiān)聽安全手機(jī)發(fā)送“shanchu#”指令,然后執(zhí)行“wipedata”操作?;謴?fù)出廠設(shè)置也需要?jiǎng)討B(tài)地獲取系統(tǒng)權(quán)限。
鎖定手機(jī)和刪除數(shù)據(jù)這2項(xiàng)功能都必須激活系統(tǒng)管理員權(quán)限,激活權(quán)限需要一個(gè)繼承Device-AdminReceiver的廣播接收者,該廣播接收者的作用是激活一個(gè)授權(quán)的組件,幫助本系統(tǒng)申請(qǐng)系統(tǒng)管理員權(quán)限。獲取權(quán)限之后,通過(guò)設(shè)備管理類Device-PolicyManager的lockNow函數(shù)和resetPassword函數(shù)實(shí)現(xiàn)密碼鎖屏功能,通過(guò)wipeData函數(shù)實(shí)現(xiàn)數(shù)據(jù)刪除功能。鎖屏和恢復(fù)出廠設(shè)置這2個(gè)功能必須要考慮Android系統(tǒng)版本的問題,因?yàn)镚oogle公司為了Android系統(tǒng)的安全考慮,會(huì)逐漸加大對(duì)申請(qǐng)系統(tǒng)權(quán)限、申請(qǐng)成功以后執(zhí)行業(yè)務(wù)的監(jiān)管。
為了驗(yàn)證方案的可行性和有效性,進(jìn)行了相應(yīng)程序設(shè)計(jì)并搭建了測(cè)試環(huán)境,測(cè)試環(huán)境包括2部Android智能手機(jī)(1部為用戶手機(jī),另一部為安全手機(jī))和1個(gè)MQTT服務(wù)器。系統(tǒng)測(cè)試需要有4G或Wifi網(wǎng)絡(luò)環(huán)境。2部Android智能手機(jī)需要安裝設(shè)計(jì)的手機(jī)防盜App,通過(guò)配置文件設(shè)置來(lái)區(qū)分是運(yùn)行在用戶手機(jī)或安全手機(jī)上。MQTT服務(wù)器端需要安裝Apollo并進(jìn)行相應(yīng)的配置。
下面以鈴聲報(bào)警功能為例進(jìn)行測(cè)試過(guò)程說(shuō)明。
① 2部手機(jī)都開啟網(wǎng)絡(luò)連接功能,獲取clientId(IMEI碼),并連接到MQTT服務(wù)器(Apollo);
② 2部手機(jī)TopicName都設(shè)置為ringOrder;
③ 2部手機(jī)向MQTT服務(wù)器訂閱相同主題;
④ 安全手機(jī)通過(guò)點(diǎn)擊“鈴聲報(bào)警開啟”按鈕向MQTT服務(wù)器發(fā)送鈴聲報(bào)警“baojing#”指令,其界面如圖5所示;
⑤ 用戶手機(jī)從MQTT服務(wù)器接收到鈴聲報(bào)警“jingbao#”指令并開始響鈴報(bào)警,其界面如圖6所示。
圖5 安全手機(jī)端鈴聲 報(bào)警界面
圖6 用戶手機(jī)端鈴聲 報(bào)警界面
測(cè)試表明,該方案實(shí)現(xiàn)了Android手機(jī)定位、鈴聲報(bào)警、鎖定手機(jī)和刪除數(shù)據(jù)等功能,且系統(tǒng)運(yùn)行效果良好,有效地證明了該方案的可行性。
本文提出了一種Android手機(jī)防盜設(shè)計(jì)方案,由于該方案基本調(diào)用的都是Android應(yīng)用層和系統(tǒng)層API的函數(shù),而不用處理底層繁瑣的業(yè)務(wù),這樣大大縮短了開發(fā)周期,降低了開發(fā)難度和開發(fā)成本。經(jīng)測(cè)試該方案實(shí)現(xiàn)了Android手機(jī)定位、鈴聲報(bào)警、鎖定手機(jī)和刪除數(shù)據(jù)功能,運(yùn)行效果良好,為其他基于Android手機(jī)防盜應(yīng)用項(xiàng)目的開發(fā)提供了參考。
[1]汪文斌,楊少輝.基于短信控制的Android手機(jī)安全系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].軟件,2015,36(6):21-25.
[2]郭宏志.Android應(yīng)用開發(fā)詳解[M].北京:電子工業(yè)出版社,2011.
[3]吳亞峰,索依娜.Android核心技術(shù)與實(shí)例詳解[M].北京:電子工業(yè)出版社,2010.
[4]李曄,王勁林.一種面向移動(dòng)終端的內(nèi)容定時(shí)推送平臺(tái)[J].微計(jì)算機(jī)應(yīng)用,2008(10):97-99.
[5]王克鋒.基于Android的信息推送管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[D].大連:大連理工大學(xué),2012.
[6]萬(wàn)爽.基于Android平臺(tái)的即時(shí)位置信息推送系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].成都:西南交通大學(xué),2016.
[7]黃偉敏.基于XMPP協(xié)議的Android即時(shí)通信系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011(8):57-59.
[8]孫其博.移動(dòng)互聯(lián)網(wǎng)安全綜述[J].無(wú)線電通信技術(shù),2016,42(2):1-8.
[9]向東南,申敏,陳政貴.LTE核心網(wǎng)安全缺陷的研究[J].無(wú)線電通信技術(shù),2016,42(1):31-34.
[10] 林滸,張家銘,楊海波.基于MQTT協(xié)議的即時(shí)消息業(yè)務(wù)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(3):219-224.
[11] 于金剛,耿云飛,楊海波,等.基于MQTT協(xié)議的消息引擎服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].小型微型計(jì)算機(jī)系統(tǒng),2016,37(10):2238-2243.
[12] 關(guān)慶余,李鴻彬,于波.MQTT協(xié)議在Android平臺(tái)上的研究與應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014,23(4):197-200.
[13] 楊鵬.基于MQTT協(xié)議的信息推送平臺(tái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2015.
[14] 莫晗飛,王春東,馮超然,等.基于安卓的手機(jī)防盜追蹤與隱私控制系統(tǒng)的研究[J].天津理工大學(xué)學(xué)報(bào),2014,30(3):21-25.
[15] 王靖瑜,徐明昆,王浩宇,等.Android應(yīng)用隱私條例與敏感行為一致性檢測(cè)[J/OL].計(jì)算機(jī)科學(xué)與探索,[2017-11-28].http:∥kns.cnki.net/detail/11.5602.TP.20171128.0857.010.html
[16] 魏晉.基于Android的手機(jī)遺失后數(shù)據(jù)自毀系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].軟件,2017,38(1):34-36.