馬玉琢+郭玉翠
摘要:Android系統(tǒng)作為開(kāi)源的系統(tǒng),受到越來(lái)越多的青睞,同時(shí)其安全性及用戶的隱私也受到了極大的考驗(yàn)。本文提出了一種針對(duì)短信隱私保護(hù)的加密方案。從Android系統(tǒng)的整體架構(gòu)及分層思想出發(fā),通過(guò)對(duì)3DES對(duì)稱(chēng)加密算法及RSA非對(duì)稱(chēng)加密算法的原理進(jìn)行分析與研究,提出了一種新型的針對(duì)Android系統(tǒng)的混合加密算法的短信加密方案,詳細(xì)地介紹了具體的實(shí)現(xiàn)過(guò)程。使用Android模擬器進(jìn)行的收發(fā)仿真實(shí)驗(yàn),證明了短信加密方案的可行性。
關(guān)鍵詞:Android系統(tǒng);3DES算法;RSA算法;短信息;加解密
引言
自從Google2007年推出Android操作系統(tǒng)以來(lái),該系統(tǒng)以開(kāi)源的優(yōu)勢(shì)迅速占領(lǐng)市場(chǎng),但安全性也越來(lái)越受到重視。短信是人們使用較為頻繁的業(yè)務(wù),然而短信的安全性面臨很多威脅,一些不法分子將用戶發(fā)送的短信進(jìn)行攔截,竊聽(tīng)短信,盜取用戶信息進(jìn)行詐騙等活動(dòng)。目前對(duì)于短信的安全問(wèn)題有很多研究,張宇斯提出了基于RSA加密算法的短信加密方案;方傳蔚等人提出了基于3DES的短信加密方案;徐德志等人提出了在“ELGamal”加密體制基礎(chǔ)上針對(duì)GSM短消息系統(tǒng)的公開(kāi)密鑰加密方案等。然而現(xiàn)有的加密方案大多僅限于對(duì)短信內(nèi)容進(jìn)行加密,且對(duì)稱(chēng)加密算法的密鑰保密困難,非對(duì)加密算法加密速度慢。本文選取Android系統(tǒng)的短信加密作為研究方向,將非對(duì)稱(chēng)加密算法和對(duì)稱(chēng)加密算法進(jìn)行結(jié)合,設(shè)計(jì)了基于3DES和RSA混合加密算法的短信加密方案,將短信內(nèi)容和密鑰分別進(jìn)行加密,達(dá)到了雙重加密的效果,綜合發(fā)揮了兩種算法的優(yōu)點(diǎn),又避免了各自的缺點(diǎn)。
1Android的系統(tǒng)架構(gòu)
Android其本質(zhì)就是在Linux系統(tǒng)上增加了Java虛擬機(jī)Dalvik,并在Dalvik虛擬機(jī)上搭建了一個(gè)Java的application framework,所有的應(yīng)用程序都是基于Java的application framework之上。
Android的系統(tǒng)架構(gòu)采用了分層架構(gòu)的思想,從上層到底層共包括四層,分別是應(yīng)用程序?qū)?、?yīng)用框架層、系統(tǒng)庫(kù)、Android運(yùn)行時(shí)和Linux內(nèi)核。
應(yīng)用程序?qū)犹峁┮恍┖诵膽?yīng)用程序包,通常用Java語(yǔ)言編寫(xiě),Java程序及相關(guān)資源經(jīng)過(guò)編譯后,生成一個(gè)APK包。
應(yīng)用程序框架層是從事Android開(kāi)發(fā)的基礎(chǔ),為應(yīng)用程序?qū)拥拈_(kāi)發(fā)者提供了API,它實(shí)際上是一個(gè)應(yīng)用程序的框架,很多核心應(yīng)用程序也是通過(guò)這一層來(lái)實(shí)現(xiàn)其核心功能的。
系統(tǒng)庫(kù)是應(yīng)用程序框架的支撐,是連接應(yīng)用程序框架層與Linux內(nèi)核層的重要紐帶。Android的核心系統(tǒng)服務(wù)如安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)路協(xié)議以及驅(qū)動(dòng)模型都依賴(lài)于Linux內(nèi)核。
本文的短信加密方案是基于Android系統(tǒng)的應(yīng)用程序?qū)舆M(jìn)行設(shè)計(jì)的,調(diào)用了部分應(yīng)用程序框架層的API,采用Java語(yǔ)言進(jìn)行的實(shí)現(xiàn)。
2 3DES和RSA混合加密算法簡(jiǎn)述
2.1 3DES加密算法
3DES加密算法是一種對(duì)稱(chēng)加密算法,加密和解密使用相同的密鑰,使用3條64位的密鑰對(duì)數(shù)據(jù)進(jìn)行三次加密,加密速度快。
具體實(shí)現(xiàn)如下:設(shè)Ek()和Dk()代表DES算法的加密和解密過(guò)程,K代表DES算法使用的密鑰,M代表明文,s代表密表,
3DES加密過(guò)程為:S=Ek3(Dk2(Fk1(M))),
3DES解密過(guò)程為:M=Dkl((EK2(Dk3(s)))。
2.2 RSA加密算法
RSA是一種非對(duì)稱(chēng)加密算法,加密和解密使用不同的密鑰,將兩個(gè)大素?cái)?shù)的乘積公開(kāi)作為加密密鑰,即公鑰,而兩個(gè)大素?cái)?shù)組合成私鑰,將兩個(gè)大素?cái)?shù)相乘十分容易,但對(duì)其乘積進(jìn)行因式分解卻極其困難,任何人都可對(duì)明文進(jìn)行加密,但只有被授權(quán)的用戶,即擁有私鑰的用戶才可對(duì)密文解密,所以RSA方法可以具有很好的加密效果。
2.3 3DES和RSA混合加密算法
3DES對(duì)稱(chēng)加密算法的加密速度快,但由于加解密鑰相同,所以密鑰需要通過(guò)私密信道傳送給對(duì)方,泄露的風(fēng)險(xiǎn)較大。RSA非對(duì)稱(chēng)加密算法強(qiáng)度復(fù)雜、安全性高,但由于RSA算法需要進(jìn)行大整數(shù)的乘冪和求模處理,所以其效率較低,不適合大量數(shù)據(jù)的加密。
本文擬采用3DES和RSA混合加密算法進(jìn)行加解密,即采用對(duì)稱(chēng)的3DES算法加密短信數(shù)據(jù),采用非對(duì)稱(chēng)的RSA算法加密3DES的密鑰。這樣密鑰不需要使用私密信道發(fā)送,又提高了整體的加密速度,發(fā)揮了3DES和RSA加密算法的優(yōu)點(diǎn)又避免了各自的缺點(diǎn),實(shí)現(xiàn)了一種新型的混合加密短信的方案。
具體過(guò)程如下:假設(shè)A是短信發(fā)送方,B是短信接收方,B在本地產(chǎn)生RSA密鑰對(duì),將RSA公鑰通過(guò)WIFI等途徑拷貝給A;A在本地輸入3DES密鑰,使用3DES密鑰對(duì)明文短信進(jìn)行加密,再使用RSA公鑰對(duì)3DES密鑰進(jìn)行加密,并將加密后的密鑰和密文短信一同傳送給B;B用本地的RSA私鑰解密出3DES密鑰,并用3DES密鑰對(duì)接收到的密文短信進(jìn)行解密,得到的數(shù)據(jù)即為A所發(fā)送的明文短信。
流程圖如下:
3短信加密實(shí)現(xiàn)
在Eclipse中建立工程,AndroidManifest.xml中添加短信的讀寫(xiě)權(quán)限。啟動(dòng)兩個(gè)模擬器,系統(tǒng)自動(dòng)給這兩個(gè)模擬器分配號(hào)碼,默認(rèn)前綴為1555521,啟動(dòng)的模擬器是5554和5556。將工程運(yùn)行在兩個(gè)模擬器中,5556為短信發(fā)送方,5554為短信接收方。
3.1短信發(fā)送方
實(shí)現(xiàn)步驟:
(1)輸入電話號(hào)碼,短信內(nèi)容。
(2)輸入自定義的24位3DES密鑰,并對(duì)明文短信運(yùn)用3DES加密算法進(jìn)行加密。
(3)從對(duì)方拷貝的RSA公鑰文件中讀取RSA公鑰,對(duì)3DES密鑰運(yùn)用RSA加密算法進(jìn)行加密。
(4)將密文短信以及加密過(guò)的密鑰一同調(diào)用系統(tǒng)API以短信的形式發(fā)送到接收方。
具體實(shí)現(xiàn)結(jié)果:
(1)輸人手機(jī)號(hào)碼:5554
(2)輸入短信內(nèi)容:happy new year and bestwishes to you.
(3)輸入24位的明文密鑰:ml a2y3u425h6u708 12345678
(4)3DES算法加密后的密文短信:G56pHPqWjRZ6Sb3cTzFDEwfKwZcj+cWFb4dpSJSd9/R4yKGylsd7ow
(5)RSA算法加密后的密鑰結(jié)果:Y42XUo5nkoZJuTes6mMw7SRnz3DYR8i/T1ioMl08wKhtBB ldZVyhLvXq0KfhntUr07LbM3T+azCgypK8HDXl3BEm2bUtUeR890gY3BSOILM9R104C60dhISmC5+bUNnh5bPOi+XBfOtUkur7e2HIl2Jd3hrq0TEXL69mcoTncQ=
(6)運(yùn)行界面:
3.2短信接收方
具體實(shí)現(xiàn)步驟:
(1)監(jiān)聽(tīng)短信,當(dāng)短信數(shù)據(jù)庫(kù)發(fā)生變化時(shí),獲取新接收到的短信。短信收件箱的URL:content://sms/inbox,使用SQL語(yǔ)句查詢數(shù)據(jù)庫(kù)中的信息,查詢Id、address、date、body等字段,即獲取到短信內(nèi)容。
(2)對(duì)短信內(nèi)容進(jìn)行分解,分解成密文短信和密文密鑰。
(3)獲取本地所生成的RSA私鑰,對(duì)密文密鑰運(yùn)用RSA解密算法進(jìn)行解密,得到明文密鑰。
(4)使用明文密鑰運(yùn)用3DES解密算法對(duì)密文短信進(jìn)行解密,得到明文短信并顯示出來(lái)。
(5)運(yùn)行結(jié)果界面:
4結(jié)語(yǔ)
本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于Android系統(tǒng)的3DES和RSA混合加密短信的方案。其中3DES密鑰為用戶手動(dòng)輸入的24位密鑰,實(shí)現(xiàn)了一次一密,提高了短信加密的安全性。將兩種算法進(jìn)行混合,充分的發(fā)揮了3DES對(duì)稱(chēng)加密算法速度快、效率高和RSA非對(duì)稱(chēng)加密算法破解難度大、安全性高的優(yōu)點(diǎn)。并且在Android模擬器上對(duì)短信加密方案進(jìn)行了實(shí)現(xiàn)和驗(yàn)證。