徐亮
(四川大學(xué) 電子信息學(xué)院,四川 成都 610065)
手機(jī)已經(jīng)成為當(dāng)今人們?nèi)粘I钪胁豢苫蛉钡囊徊糠帧F胀ㄊ謾C(jī)很難滿(mǎn)足人們的要求,隨著科技的進(jìn)步和人們生活質(zhì)量的提高,手機(jī)不斷更新?lián)Q代,變得更加智能化,產(chǎn)生了智能手機(jī)。智能手機(jī)在越來(lái)越被大眾所接受的同時(shí),智能手機(jī)也伴生新的安全隱患。目前,手機(jī)上的應(yīng)用因?yàn)槭謾C(jī)的發(fā)展日漸豐富,移動(dòng)互聯(lián)網(wǎng)領(lǐng)域出現(xiàn)越來(lái)越多的信息安全問(wèn)題,甚至已經(jīng)成為新的安全威脅[1]。由此,可以看一下現(xiàn)有智能手機(jī)安全軟件的情況,目前針對(duì)智能手機(jī)的安全軟件大概分兩種,一種是硬安全用以殺毒;另一種軟安全用以惡意通信攔截和隱私保護(hù),還有就是兩者的功能結(jié)合體。手機(jī)的安全問(wèn)題現(xiàn)在成為被社會(huì)各界普遍關(guān)注的熱點(diǎn)。
Google在2007年11月5日公布了Android手機(jī)系統(tǒng)平臺(tái)之后,Android很快進(jìn)入人們的視線(xiàn)。因?yàn)樽鳛橐苿?dòng)設(shè)備綜合平臺(tái)它達(dá)到了真正意義上的開(kāi)放性,擁有移動(dòng)電話(huà)工作所需的全部軟件。基于Android平臺(tái)的可開(kāi)發(fā)性和免費(fèi)等特點(diǎn),既能在Android平臺(tái)上開(kāi)發(fā)第三方軟件,從而促進(jìn)技術(shù)創(chuàng)新;有助于降低開(kāi)發(fā)成本,方便創(chuàng)造特色化產(chǎn)品[2]。這無(wú)疑使之成為智能手機(jī)操作系統(tǒng)的首選。
目前手機(jī)應(yīng)用中還是以電話(huà)通信和短信通信應(yīng)用最為廣泛,而電話(huà)騷擾與短信廣告騷擾日益嚴(yán)重,針對(duì)此現(xiàn)象,人們紛紛采取了應(yīng)用措施,其中,一些手機(jī)平臺(tái)相繼開(kāi)發(fā)出了電話(huà)防火墻和短信防火墻。比如,塞班手機(jī)平臺(tái)的信安易衛(wèi)士,Android手機(jī)平臺(tái)下的SecrityGuarder等。文中針對(duì)上述問(wèn)題,設(shè)計(jì)和實(shí)現(xiàn)了一種基于Android手機(jī)平臺(tái)的通信安防應(yīng)用,基本實(shí)現(xiàn)了攔截騷擾電話(huà)和短信[3]。
Android是一種以Linux為基礎(chǔ)的開(kāi)放源碼操作系統(tǒng),主要使用于便攜設(shè)備。目前尚未有統(tǒng)一中文名稱(chēng),中國(guó)大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由Andy Rubin開(kāi)發(fā),最初主要支持手機(jī)。2005年由Google收購(gòu)注資,并組建開(kāi)放手機(jī)聯(lián)盟開(kāi)發(fā)改良,逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上。
1)開(kāi)放性。
2)掙脫運(yùn)營(yíng)商束縛。
3)豐富的硬件選擇。
4)不受任何限制的開(kāi)發(fā)商。
5)無(wú)縫結(jié)合的Google應(yīng)用。
1)安全和隱私。
2)首先開(kāi)賣(mài)Android手機(jī)的不是最大運(yùn)營(yíng)商。
3)運(yùn)營(yíng)商任能夠影響Android手機(jī)。
4)同類(lèi)機(jī)型用戶(hù)減少。
5)過(guò)分依賴(lài)開(kāi)發(fā)商缺少標(biāo)準(zhǔn)配置。
1.3.1 應(yīng)用程序
Android會(huì)同一系列核心應(yīng)用程序包一起發(fā)布,應(yīng)用程序包包括Email客戶(hù)端、SMS短消息程序、日歷、地圖、瀏覽器、聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用JAVA語(yǔ)言編寫(xiě)的[4]。
1.3.2 應(yīng)用程序框架
開(kāi)發(fā)人員直接調(diào)用的API。該應(yīng)用程序的架構(gòu)設(shè)計(jì)簡(jiǎn)化了組件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過(guò)得遵循框架的安全性限制)[4]。同樣,該應(yīng)用程序重用機(jī)制也使用戶(hù)可以方便的替換程序組件。
1.3.3 程序庫(kù)
Android包含一些C/C++庫(kù),這些庫(kù)是底層的,能被Android系統(tǒng)中應(yīng)用程序框架的組件使用。
1.3.4 Android運(yùn)行庫(kù)
Android包括了一個(gè)核心庫(kù),該核心庫(kù)提供了JAVA編程語(yǔ)言核心庫(kù)的大多數(shù)功能。每個(gè)Android程序都在Dalvik虛擬機(jī)中運(yùn)行,擁有獨(dú)立的實(shí)例。Dalvik是基于寄存器的,可以高效運(yùn)行的虛擬系統(tǒng)。Dalvik虛擬機(jī)執(zhí)行(.dex)的 Dalvik可執(zhí)行文件,該格式文件針對(duì)小內(nèi)存使用做了優(yōu)化。同時(shí)虛擬機(jī)是基于寄存器的,所有的類(lèi)都經(jīng)由JAVA編譯器編譯,然后通過(guò)SDK中的“dx”工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行[4]。Dalvik虛擬機(jī)依賴(lài)于linux內(nèi)核的一些功能,比如線(xiàn)程機(jī)制和底層內(nèi)存管理機(jī)制。
1.3.5 Linux Kernel
Android的核心系統(tǒng)服務(wù)依賴(lài)于Linux 2.6內(nèi)核,如安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型[4]。Linux內(nèi)核也同時(shí)作為硬件和軟件棧之間的抽象層。
2.1.1 白名單
用戶(hù)如果只想接收特定號(hào)碼的短信則點(diǎn)擊白名單選框后,進(jìn)入白名單設(shè)置界面,在白名單里添加號(hào)碼,則除了輸入白名單的號(hào)碼能夠接入本機(jī),其他號(hào)碼用戶(hù)被自動(dòng)默認(rèn)為黑名單被屏蔽,同時(shí)被保存在查看短信歷史記錄里面,手機(jī)不會(huì)觸發(fā)短信接收的反映,在手機(jī)短信箱里也不會(huì)出現(xiàn)該短信。用戶(hù)可以通過(guò)查看短信歷史記錄,對(duì)接入的被屏蔽了的短信進(jìn)行查看。
2.1.2 黑名單
用戶(hù)如果想屏蔽特定號(hào)碼電話(huà)的短信則點(diǎn)擊黑名單選框后,進(jìn)入黑名單設(shè)置界面,在黑名單里添加號(hào)碼,當(dāng)其短信進(jìn)入時(shí)則被屏蔽,同時(shí)被保存在短信歷史記錄里面,手機(jī)不會(huì)觸發(fā)短信接收的反映,在手機(jī)短信箱里也不會(huì)出現(xiàn)該短信。用戶(hù)可以通過(guò)查看攔截歷史記錄,對(duì)接入的被屏蔽了的短信進(jìn)行查看。
2.2.1 白名單
用戶(hù)如果只想接聽(tīng)特定號(hào)碼的電話(huà)則點(diǎn)擊白名單選框后,進(jìn)入白名單設(shè)置界面,在白名單里添加號(hào)碼,則除了輸入白名單的號(hào)碼能夠接入本機(jī),其他號(hào)碼用戶(hù)被自動(dòng)默認(rèn)為黑名單被屏蔽,同時(shí)被保存在攔截歷史記錄里面,同時(shí)被屏蔽的號(hào)碼用戶(hù)聽(tīng)到電話(huà)提示對(duì)方呼叫繁忙的效果,從而無(wú)法接通。用戶(hù)可以通過(guò)查看攔截歷史記錄,對(duì)接入的被屏蔽了的電話(huà)進(jìn)行查看。
2.2.2 黑名單
用戶(hù)如果想屏蔽特定號(hào)碼電話(huà)的接入則點(diǎn)擊黑名單選框后,進(jìn)入黑名單設(shè)置界面,在黑名單里添加號(hào)碼,當(dāng)其接入時(shí)則被屏蔽,同時(shí)被保存在攔截歷史記錄里面,同時(shí)被屏蔽的號(hào)碼用戶(hù)聽(tīng)到電話(huà)提示對(duì)方呼叫繁忙的效果,從而無(wú)法接通。用戶(hù)可以通過(guò)查看攔截歷史記錄,對(duì)接入的被屏蔽了的電話(huà)進(jìn)行查看。
通過(guò)設(shè)置開(kāi)始時(shí)間和停止時(shí)間從而讓?xiě)?yīng)用自動(dòng)在此時(shí)間斷內(nèi)開(kāi)啟,超過(guò)時(shí)間后自動(dòng)關(guān)閉。
如圖1所示為通信攔截系統(tǒng)的功能流程。

圖1 功能流程框圖Fig.1 Structure diagram of the function
由于Android中本身沒(méi)有關(guān)于攔截來(lái)電和過(guò)濾短信的API,因此,在技術(shù)實(shí)現(xiàn)上需要采用了一些非常規(guī)的做法,難度相對(duì)較大。以下將介紹關(guān)于電話(huà)攔截和短信攔截技術(shù)。
主要分為C/C++與Java兩層:
1)C/C++層:Rild,守護(hù)進(jìn)程,電話(huà)底層驅(qū)動(dòng)管理,GSM/GPRS modem,AI命令接口管理[5]。
2)JAVA層:RIL.Java文件進(jìn)行電話(huà)短信服務(wù)線(xiàn)程通過(guò)Socket與Rild進(jìn)程通信;在java的服務(wù)線(xiàn)程池里面有telephy的服務(wù)接口;提供處理電話(huà)的功能接口。
固有短信的收取是通過(guò)底層框架的rild,解析之后,通過(guò)發(fā)送有序的廣播,對(duì)有序的廣播進(jìn)行中斷,通過(guò)設(shè)置廣播獲取的最高級(jí)別的權(quán)限屬性?huà)燧d程序,達(dá)到短信攔截的目的。BroadcastReceiver廣播類(lèi)接收系統(tǒng)發(fā)出的短信廣播,獲取短信內(nèi)容過(guò)濾,使用abortBroadcast()方法中斷廣播避免短信到達(dá)SMS的應(yīng)用。
關(guān)鍵代碼:
Manifest.xml
public class SMSReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
abortBroadcast();}}
基于Android框架的電話(huà)服務(wù),通過(guò)該服務(wù)可以獲取到電話(huà)的大體功能,通過(guò)內(nèi)部源碼,提供的隱藏電話(huà)服務(wù)功能的API()函數(shù),獲取到對(duì)電話(huà)處理的內(nèi)部方法調(diào)用AIDL接口ITelephy.aidl提供了endcall()方法,以此調(diào)用來(lái)攔截電話(huà)[6]。電話(huà)來(lái)電信號(hào)從底層回調(diào)會(huì)發(fā)送一個(gè)無(wú)序的來(lái)電廣播和回調(diào)PhoneStateListener的接口,通過(guò)獲取廣播中的信息或者接口中的信息攔截電話(huà)。
關(guān)鍵代碼:
class MyPhoneStateListener extends PhoneStateListener{
public void onCallStateChanged (int state, String incomingNumber){
switch (state) {
case
TelephonyManager.CALL_STATE_RINGING:
endCall(incomingNumber);
Log.i(“MyPhoneStateListener”, incoming Number);
break;
case
TelephonyManager.CALL_STATE_IDLE:
m_audioManager.setRingerMode (AudioManager.RINGER_MODE_NORMAL);
break;
case
TelephonyManager.CALL_STATE_OFFHOOK:
break;
default:
break;}}}
通信安防系統(tǒng)工作原理流程如圖2所示。

圖2 工作原理流程框圖Fig.2 Structure diagram of the working principle
1)本應(yīng)用開(kāi)發(fā)后的.app應(yīng)用程序。
2)用于運(yùn)行此程序的基于android2.36系統(tǒng)的三星S5830手機(jī)。
3)用于對(duì)測(cè)試手機(jī)進(jìn)行電話(huà)通信和短信發(fā)送的兩部手機(jī),號(hào)碼為 15883673262,18202866062。
4.2.1 白名單測(cè)試
首先打開(kāi)通信安防軟件,點(diǎn)擊打開(kāi)攔截開(kāi)關(guān)。然后進(jìn)入白名單,輸入電話(huà)號(hào)碼15883673262,表示除了此號(hào)外,其他電話(huà)的通話(huà)和短信都會(huì)被攔截。

圖3 打開(kāi)攔截開(kāi)關(guān)圖Fig.3 Diagram of the open switch

圖4 白名單中輸入號(hào)碼圖Fig.4 Diagram of the inputing in the write list
接著用號(hào)碼為18202866062的電話(huà)接入本機(jī),并且發(fā)送內(nèi)容為“你好”的短信,在本機(jī)通信安防軟件里面分別點(diǎn)擊查看來(lái)電歷史和查看短信歷史看到如下圖效果。

圖5 查看攔截歷史圖Fig.5 Diagram of the intercept history

圖6 查看來(lái)電攔截歷史圖Fig.6 Diagram of the phone intercept history

圖7 查看短信攔截歷史Fig.7 Diagram of the SMS intercept history
測(cè)試成功,號(hào)碼為18202866062的電話(huà)對(duì)本機(jī)進(jìn)行的來(lái)電和短信都被成功攔截。
4.2.2 黑名單測(cè)試
在刪除上例中白名單中輸入的15883673262號(hào)碼后,進(jìn)入黑名單中輸入電話(huà)號(hào)碼15883673262,表示此號(hào)碼對(duì)本機(jī)進(jìn)行的通話(huà)和短信都會(huì)被攔截。

圖8 黑名單選框圖Fig.8 Diagram of the black list

圖9 黑名單中輸入號(hào)碼Fig.9 Diagram of the inputing in the black list
接著用號(hào)碼為15883673262的電話(huà)接入本機(jī),并且發(fā)送內(nèi)容為“你好啊”的短信,在本機(jī)通信安防軟件里面分別點(diǎn)擊查看來(lái)電歷史和查看短信歷史看到如圖10、圖11所示效果。

圖10 來(lái)電攔截歷史圖Fig.10 Diagram of the intercept history

圖11 短信攔截歷史圖Fig.11 Diagram of the SMS intercept history
文中詳細(xì)介紹了基于Android平臺(tái)的來(lái)電攔截和短信攔截的實(shí)現(xiàn)原理以及測(cè)試效果,可看出它能較好的實(shí)現(xiàn)來(lái)電攔截和短信攔截的功能。但由于研究時(shí)間有限,設(shè)計(jì)還不盡完善,來(lái)電攔截技術(shù)上還有待改進(jìn)。如來(lái)電攔截,經(jīng)過(guò)多次試驗(yàn),其效果并沒(méi)達(dá)到所期望的那么好,當(dāng)有來(lái)電接入時(shí),如果是在原號(hào)碼前面加上86或者17951的前號(hào)則應(yīng)用程序視為不同的電話(huà)號(hào)碼處理。還有因?yàn)锳ndroid是一個(gè)開(kāi)放的平臺(tái),會(huì)給許多居心不良者提供方面,利用此技術(shù)來(lái)做一些惡意攔截電話(huà)短信的軟件,從而會(huì)給廣大用戶(hù)代碼不必要的麻煩。后面還應(yīng)該需要在節(jié)能方面進(jìn)行改進(jìn),不使用service來(lái)維護(hù)后臺(tái)工作,而使用broadcastRecever來(lái)維護(hù)后臺(tái),可以節(jié)省Android大量的電量。
同時(shí)對(duì)于日新月異發(fā)展的Android技術(shù)[7-8],希望在不久的將來(lái)google公司完善源碼中電話(huà)和短信安全控制,能脫離對(duì)Android通信安防應(yīng)用軟件的需求。
[1]勒巖,姚尚朗.Android入門(mén)開(kāi)發(fā)與實(shí)踐[M].北京:人民郵件出版社,2009.
[2]傅志紅,陳興璐.深入淺出Google Android[M].北京:人民郵件出版社,2009.
[3]韓超,梁泉.Android系統(tǒng)原理及開(kāi)發(fā)要點(diǎn)詳解[M].北京:電子工業(yè)出版社,2009.
[4]孟小華,陳傳凱.Android平臺(tái)手機(jī)來(lái)電及短信防火墻關(guān)鍵技術(shù)研究[EB/OL].(2012).http://wenku.baidu.com/view/040 49e140b4e767f5acfce49.html.
[5]Enck W,Ongtang M,McDaniel P.Understanding Android security[J].IEEE Security&Privacy Magazine,2009,7(1):10-17.
[6]Avik Chaudhuri.Language-Based Security on Android[M].University of Maryland at College Park, ACM,2009.
[7]張光耀,郭永清,陳煬.基于Android系統(tǒng)的H.264視頻壓縮技術(shù)實(shí)現(xiàn)[J].電子科技,2011(9):117-120.ZHANG Guang-yao,GUO Yong-qing,CHEN Yang.Design of H.264 video compressing based on Android system[J].Electronic Science and Technology,2011(9):117-120.
[8]馬建紅,姬莉霞,衛(wèi)權(quán)崗.基于Android平臺(tái)的移動(dòng)個(gè)人助手設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2012(2):24-26.MA jian-hong,JI li-xia,WEI quan-gang.Design and implementation of mobile personal assistant based on Android[J].Modern Electronics Technique,2012(2):24-26.