ANDROID的短信加密

為了保護安卓手機用戶的個人隱私,提高短信傳輸?shù)目煽啃约鞍踩?,提出了基于安卓系統(tǒng)的短信加解密方案的設(shè)計方法。

一、ANDROID的短信加密應(yīng)用背景

1、SMS安全

在ETSI TS 03.485中已經(jīng)明確列出了短信息的技術(shù)規(guī)范礴技術(shù)規(guī)范的某些選項,比如安全參數(shù)索引(SPI),加密密鑰標(biāo)識符(KIC),和完整性校驗值(RC/ CC/DS);,提供了可用的安全參數(shù)規(guī)格礎(chǔ)冗余檢查(RC),加密校驗碼(C C)或數(shù)字簽名(DS)也可被用于驗證數(shù)據(jù)的完整性。

在實際使用中,手機短信默認(rèn)情況下,不進行加密,當(dāng)短信通過信令信道時,采用循環(huán)冗余校驗,以確保不被損壞。采用傳統(tǒng)加密的的誤差轉(zhuǎn)寄保護功能也包含在內(nèi),但短信中并沒有提供保密性及完整性的加密算法。

由于短信在傳送過程中并沒有預(yù)先加密,所以信息在傳送時有可能被截取和竊聽。再者,在SMSC成功發(fā)送短信給收件人之前,短信是以明文的形式儲存起柬的。而使用者能夠輕易的通過短信系統(tǒng)看到及修改這些短信。很多惡意軟件能夠自動獲取收件箱和發(fā)件箱中的短信,然后通過后臺程序?qū)⑵渖蟼鞯竭h端服務(wù)器,隱私及機密就會因此泄露出去。

2、加解密技術(shù)

在智能手機出現(xiàn)之前,短信加密的實現(xiàn)大多通過硬件,使用雙方都需要購買同一款加密手機才能實現(xiàn)短信加密,無疑加大了成本囂而智能手機出現(xiàn)后,使用雙方只需安裝同一款軟件就能實現(xiàn)短信加密功能。對稱加密算法效率高,算法簡單,系統(tǒng)開銷小,加解密速度快,密鑰較短,適合加密大量數(shù)據(jù)等特點,被廣泛使用。

3、國內(nèi)外的研究情況

目前,多數(shù)人對信息安全并不敏感,僅對通話安全和郵件安全有些了解,對短信安全缺乏足夠的安全意識,很多所謂的短信加密軟件僅僅對收件箱進行加密,需要輸入密碼才能查看短信,而對于短消息在傳送過程中被攔截或運營商可能非法查看的情況沒有采取預(yù)防措施,僅有少量的軟件有相應(yīng)的功能。因此相對于其他安全領(lǐng)域,ANDROID短信安全仍處于起步階段。

二、短信運行機制

SMSManager實現(xiàn)短信發(fā)送以及與SIM卡短信相關(guān)的操作,通過ISiiis接口提供對應(yīng)的實現(xiàn)。ISrns的服務(wù)器端實現(xiàn)是SimSmsln-terfaceManager(在CSM類下,如果是CDMA則使用RuimSmslnteraceManager),SimSmslnterfaceManager中關(guān)于短信發(fā)送的重要部分主要由SMSDispatcher提供支持。SMSDispatcher是短信部分的核心,提供發(fā)送SMS等操作接口,同時也提供接收SMS和返回報告等接口,它同樣被集成到GSMPhone中。

1、發(fā)送SMS消息

1)要在應(yīng)用程序中發(fā)送文本消息,需要在清單文件中添加權(quán)限

2)在布局文件中設(shè)置兩個可編輯文本框EditText用于輸入收件人電話號碼,一個用于編輯短信內(nèi)容,和一個按鈕Button,用予發(fā)送短信,此外還可以用Toast類提示短信是否發(fā)送成功,如圖3所示。

1

3)調(diào)用StringCryptor類,將短信加密,EncryptedMessage;StringCryptor.encrypt( new String(passWord).SmsMessage),將加密過的短信通過SmsManager類發(fā)送,smsManage r.sendTextMessage(mobile Number, null, EncryptedMessage,nuU,null);

2、接收SMS消息

1)讀取收件箱中的短信需要在清單文件中添加讀短信的權(quán)限,接收短信的類是SmsReceiver。

2)讀取短信息,需要查詢收件箱的短信,在布局文件中設(shè)置一個按鈕Button,讀取收件箱中的短信和一個列表ListView顯示收件箱內(nèi)容。.點擊想要解密的短信,用Toast類顯示短信明文,如圖4所示。

1

3)調(diào)用StringCryptor類,將短信解密Decryp tedMessage;SU'ingCryptor.decrypt( new String(SmsReceiver.p assward), EncryptedMes-sage).用Toast類顯示短信明文,Toast.rnakeText( this,Decrypted Message,ToasLLENGTH_SIIORrr ).show0,

3、加解密方法

用Cipher類對短信進行加密,加密后的短信不能直接發(fā)送,需要進行編碼轉(zhuǎn)換‘卸,將字節(jié)碼轉(zhuǎn)換成為Base64形式的編碼,然后才能發(fā)送。

Cipher對象實際完成加密操作,

Cipher cipher=Cipher.getlnstance(C IPHER_AL(;ORITHM);

用密匙初始化Cipher對象,

用密匙初始化Cipher對象,

cipher.init( Cipher,ENCRYPT_MODE, secre tKeySpec);

進行Base64編碼,

String codeString=Base64.encodeToString( encrypted, Base64.DEFAULT)

4、與短信相關(guān)的類

1

三、SMS加密性能分析

將短信加密軟件用AES、DES、3DES三種算法應(yīng)用于ANDROID平臺,并選三種2.2版、2.3.1版、2.3.3版模擬器,評估測試算法的性能指標(biāo)。

1、實驗過程

Android日志系統(tǒng)提供了記錄和查看系統(tǒng)調(diào)試信息的功能,計算加解密過程中所需要的時間,并輸出顯示在LogCat,如圖l所示。

1

DDMS的全稱是Dalvik Debug Monitor Service,即Dalvik調(diào)試監(jiān)控服務(wù),是一個可視化的調(diào)試監(jiān)控工具。它主要是對系統(tǒng)運行后臺日志的監(jiān)控,還可以查看進程分配內(nèi)存情況。如下圖2所示。

1

2、數(shù)據(jù)比較

將三種算法,分別進行加解密測試,記錄加解密時間及內(nèi)存使用情況,取平均值,測試次數(shù)為100次。

1

3、分析

通過對比分析可知:

1)在android 2.2版本中,算法AES、DES、3EDS在加解密過程中,所需時間均隨加解密字符數(shù)的增加而增加,且加密時間長于解密時間。算法AES、3EDS中加密過程比解密過程所占內(nèi)存少。而算法DES則相反。算法AES加解密時間最短,算法3DES加解密時間最長oi三種算法所占內(nèi)存的范圍大致相同。

2)采用同樣的程序應(yīng)用于2.3.1版本,三種算法的加解密時間均明顯高于2.2.版本。在android 2.3.1版本中,算法AES、DES、3EDS的加解密時間同樣隨著加解密字符數(shù)的增加而增加,算法AES加密時間最短,算法3DFS加密時間最長Q:算法DES解密時間最短,AES解密時間最長,所占內(nèi)存比2.2版本明顯增加,達到980Kb左右。

3)可知android 2.3.3版本中,加密所需時間大幅增加,穩(wěn)定在92sm左右,加密時間隨著加密字符增加而增加。三種算法加密時間差異不大,而解密時間卻比較明顯,AES最快,3DES最慢d所占內(nèi)存也有所增加,為995Kb左右。

4)以上分析可知,ANDROID版本之間的差異直接影響不同算法對于程序的性能,3DES性能較差,其次DES,從目前來看,SMS加密應(yīng)首選AES算法。

4、應(yīng)用實現(xiàn)

啟動兩部模擬器,emulator-5554只安裝解密部分,界面如圖3所示,手機號為另外一部模擬器15555215556,點擊發(fā)送短信,將內(nèi)容“大江東去,浪淘盡,千占風(fēng)流人物。故壘西邊,人道是三網(wǎng)周郎赤壁”進行加密后發(fā)送給emulalor-5556,并顯示短信發(fā)送成功口此時接收短信的emulator-5556,查看短信內(nèi)容為加密的信息鼻“Yps9gi8hbIJSr4/jiJ CN RntNJOhXiXHFplzQy990mjU9QziQI'jE+N/eOpb23i/pORkWYnXRghWqzcp3usedpMl)+ixj DWxxVldq61M C,kNd4a13kjaH4Q13Gv12854BeVM umXK380i'I'UCtFXbDJ6cFJ sjg==”,emvla-tor-55156點擊“解密短信”,從短信數(shù)據(jù)庫中調(diào)取短信內(nèi)容,此時仍為密文,點擊加密的信息后,才顯示加密明文信息,如圖4所示。

小知識之sms

sms是一種存儲和轉(zhuǎn)發(fā)服務(wù)。也就是說,短消息并不是直接從發(fā)送人發(fā)送到接收人,而始終通過短信服務(wù)中心進行轉(zhuǎn)發(fā)。如果接收人處于未連接狀態(tài)(可能電話已關(guān)閉),則消息將在接收人再次連接時發(fā)送。