蘇瑩 蔡芳
摘要摘要:為滿足人們對Android手機私密信息的保護,針對Android系統(tǒng)的特點,闡釋對稱加密算法和非對稱加密算法的基本原理,并著重分析3種常用加密算法的加密過程。針對Android手機隱私泄露問題,提供一套可行的基于AES加密算法的手機隱私保護解決方案。分析用戶需求,總結(jié)用戶對Android加密軟件的需求,進行系統(tǒng)設(shè)計和詳細設(shè)計,實現(xiàn)一款集文件加密和管理于一身的Android軟件,并對軟件進行測試。
關(guān)鍵詞關(guān)鍵詞:加密算法;Android系統(tǒng);加密性能;算法安全;文件加密
DOIDOI:10.11907/rjdk.171086
中圖分類號:TP309.7
文獻標識碼:A文章編號文章編號:16727800(2017)005017103
0引言
智能手機的出現(xiàn)極大改變了人們的生活方式,當人們已經(jīng)習(xí)慣和依賴手機時,也更加注重手機個人信息的安全性。在數(shù)據(jù)信息的安全保障措施中,信息加密技術(shù)是最主要和最基本的方法,信息加密是由加密算法具體實現(xiàn)的,利用密鑰確保信息安全[1]。以Android平臺為代表的智能手機操作系統(tǒng)在當前最為流行,然而Android的開放性也使得其安全性大為降低,以致出現(xiàn)了很多使用Android操作系統(tǒng)的用戶隱私被泄露的現(xiàn)象[2]。鑒于此,對Android平臺下的數(shù)據(jù)安全進行研究迫在眉睫。
本文針對目前幾種較為成熟的加密算法,對算法加密過程、安全性及Android平臺的適用性等進行研究,根據(jù)Android平臺的特點選定一種加密算法設(shè)計出一款功能強大的加密軟件。加密軟件可以對本地的文本文件和圖片進行加密和解密,并實現(xiàn)文件的基本可視化界面操作。
1加密算法特性分析
對于RSA算法,其安全性很大程度上依賴于大素數(shù)分解,但沒有任何理論證明其安全性等同于大數(shù)分解的難度[3]。就目前而言,分解n是最有效的破解方法。當前計算機已經(jīng)能分解多個十進制的大素數(shù),因此n必須足夠大。然而當n過大時會降低加密效率。RSA最大的缺點在于其計算量太大,會耗費大量系統(tǒng)資源。由于計算量太大,RSA算法多用于傳遞密鑰、簽名等少量信息的加密,因而對于文件加密不合適。RSA算法在運算性能不是很強大的Android系統(tǒng)應(yīng)用上,顯然不太合適。
DES算法具有很高的安全性,目前除了用窮舉搜索法對抗DES算法攻擊外,還未發(fā)現(xiàn)更有效的方法[34]。在DES算法中只用到了64位密鑰中的其中56位,第8、16、24、…、64位這8個位沒有參與DES運算,由此可以看出,DES的安全性是基于除第8、16、24、…、64位以外的56位的組合變化才使得256得以保證,因此在實際應(yīng)用中,應(yīng)該避開使用第8、16、24、…、64位作為有效的數(shù)據(jù)位,即使用其它的56位作為有效數(shù)據(jù)位,才能保證DES算法安全可靠地發(fā)揮作用。另外,DES算法中S盒8個選擇函數(shù)矩陣的設(shè)計原理至今未公布,因此嚴格地講,DES算法并不是真正的公開加密算法。如果S盒中存在陷門,那么DES算法就沒有安全性可言了,這顯然不符合本課題對算法的要求。
AES算法是一個分組迭代密碼,分組長度和密鑰長度設(shè)計靈活。與DES算法相比,AES算法支持可變分組長度,分組長度可設(shè)定為32bit的任意倍數(shù),最小為128bit,最大為256bit。另外AES算法遵循寬軌跡策略,因此它可以有效對抗差分密碼分析和線性密碼分析[56]。目前,AES算法被列為是比現(xiàn)今任何其它加密算法都要安全的一種算法,在理論和實際應(yīng)用中,它被認為是“安全的”,因為要破解AES算法,唯一有效的方法就是生成所有密鑰,并精確地測量出加密線程所需的時間。
3種算法的性能對比分析如表1所示。RSA算法在保證安全的前提下計算量太大,不適合Android系統(tǒng);DES算法安全性得不到保證,也不適合本次課題的要求;而AES算法由于其安全性高、運算速度快和資源消耗低的特點非常適合用于Android下的加密設(shè)計。
2功能需求與設(shè)計
2.1功能需求
一款功能齊全的基于Android系統(tǒng)的加密軟件,軟件系統(tǒng)功能主要分為文件加密、文件解密、文件瀏覽、文件操作和設(shè)置密碼五大塊。軟件功能如圖1所示。
(1)文件加密。系統(tǒng)可以對文本文件和圖片進行加密,對文件加密后,在原文件的目錄中創(chuàng)建密文文件,并刪除原文件。對于不支持加密的文件要給予提示,以免誤刪。因此,要求加密算法為安全性和效率較高的AES算法。
(2) 文件解密。文件解密是將密文文件還原成明文,要能夠完全還原成加密前的內(nèi)容,解密后刪除密文文件。
(3)密碼設(shè)置。分為軟件啟動密碼和文件加密密碼。軟件啟動時要求用戶輸入密碼,隨后對文件進行操作。軟件啟動密碼指軟件啟動時的初始密碼,在設(shè)置選項里可以更改軟件啟動密碼。文件加密密碼是用于加密文件的密碼,當用戶選擇對文件解密后要求輸入文件的加密密碼,當密碼驗證通過后再將文件解密。文件的加密密碼也有一個初始值,可以在設(shè)置里更改。
(4)文件瀏覽。文件瀏覽要顯示當前所在路徑,以列表形式顯示存儲卡里的文件和文件夾,列表的每一項都由文件圖標和文件名組成。用戶能上下滑動屏幕以瀏覽文件,當點擊一個目錄時就進入目錄。
(5)文件操作。在文件列表長按某個文件時,彈出功能選擇框,功能選項和目標有:刪除、打開、復(fù)制、粘貼、重命名。
2.2總體設(shè)計
程序首次啟動要求用戶輸入默認的軟件啟動密碼,正確輸入密碼后進入主界面,主界面是手機sd卡根目錄的文件列表展示,用戶可以選擇“手機”、“SD卡”、“日志”和“設(shè)置”選項,或者直接進行SD卡的文件瀏覽。程序流程如圖2所示。
當用戶點擊目錄時直接進入目錄,當點擊文件時則調(diào)用系統(tǒng)的程序來打開文件。當長按某個文件或文件夾時彈出列表選擇框讓用戶選擇操作方式,操作方式有打開、刪除、復(fù)制、粘貼、重命名、加密和解密,選擇操作,程序執(zhí)行各自對應(yīng)的方法,然后關(guān)閉列表選擇框。
在選擇加密操作后,即調(diào)用加密方法,判斷:如果在sd卡根目錄下存在日志文件,則將此密文文件的日志信息寫入日志文件中;如果日志文件不存在,則在sd卡根目錄下創(chuàng)建日志文件,再寫入日志信息。選擇解密文件后,彈出對話框讓用戶輸入密碼,密碼驗證正確后執(zhí)行解密方法。
當用戶選擇查看日志時,出現(xiàn)列表對話框,對話框每一項都是密文的日志信息。對話框每次將日志文件的內(nèi)容按行讀出信息,然后在在每個選項中展示。
當用戶選擇設(shè)置密碼時,出現(xiàn)密碼對話框,對話框包括兩個單選按鈕和一個文本輸入框,單選按鈕是選擇設(shè)置軟件啟動密碼和文件加密密碼,輸入框接收用戶輸入的密碼。
3關(guān)鍵技術(shù)及實現(xiàn)
設(shè)置密碼包括軟件啟動密碼和文件加密密碼,兩個密碼都采用SharedPreferences方式存儲。加密完某個文件時,將文件的絕對路徑名和當前系統(tǒng)時間一并寫入日志文件中,其中日志文件內(nèi)容不能被覆蓋,只允許將新內(nèi)容加入原內(nèi)容之后。當要顯示日志信息時,彈出列表對話框。列表對話框的讀取日志文件,對話框每一項顯示文件的絕對路徑名和被加密時的時間。
被加密的文件不能被讀取或者讀取的是亂碼,文件被解密后要求能被正確讀取,而且沒有亂碼現(xiàn)象或者質(zhì)量損失的情況,文件加密后要求將此日志信息正確寫入日志文件中。在進行文件瀏覽時要求能正確顯示各目錄下的文件名和子目錄名,對文件的各種操作能夠正確執(zhí)行。在顯示日志時能夠正確顯示日志文件的內(nèi)容,沒有亂碼或顯示格式混亂的情況。設(shè)置密碼要求將用戶設(shè)置的密碼成功保存,在密碼不被修改的情況下,密碼不被改變。
由于程序涉及讀文件的操作,要提防用戶操作系統(tǒng)的重要文件或目錄,這就要求在顯示文件時將系統(tǒng)重要文件或目錄過濾掉。
對于加密算法所需密鑰則是用由用戶提供的密碼,程序根據(jù)密碼生成密鑰,密碼保存在SharedPreferred(操作模式為Context.MODE_PRIVATE)中。對文件加密先用FileInputStream獲得明文的輸入流形成字符串,再將字符串加密,密文字符串用輸出流FileInputStream將密文寫入新文件,然后將源文件刪除。解密過程與加密過程相同,只不過加密與解密的方法不同。加密解密所需的密鑰根據(jù)SharedPreferred中的密碼經(jīng)過轉(zhuǎn)換得到。
軟件啟動密碼的實現(xiàn),則可以設(shè)計一個登錄流程,當輸入正確密碼時進入主界面。對文件類型的判斷用getName()獲得文件的名字,根據(jù)文件后綴名設(shè)置不同的圖標,用isFile()判斷文件是標準文件還是目錄,如果是目錄則進入繼續(xù)反復(fù)判斷,直到文件夾沒有子文件夾為止。
文件的瀏覽則用File類的list()方法獲得根目錄下所文件和文件夾的字符串列表,將列表放入中間容器BaseAdapter中,再將BaseAdapter的內(nèi)容顯示在Listview中。
當用戶選擇退出時,程序調(diào)用MainActivity.this.finish()方法退出程序。
4系統(tǒng)測試
4.1系統(tǒng)測試目的及環(huán)境
原始問題的復(fù)雜性和開發(fā)各個階段的多樣性,使得程序開發(fā)在各個階段都可能出現(xiàn)錯誤。為了更好地提高程序的效率和各種平臺的兼容性,需對軟件進行各種測試。在本程序中,對文件的操作較多,對文件的讀寫操作可能出現(xiàn)輸入輸出流錯誤的情況,這樣的錯誤會導(dǎo)致文件損壞,并且,在對文件的讀寫操作上可能出現(xiàn)編碼不一致的問題。在對密碼的保存問題上,應(yīng)測試是否出現(xiàn)其它程序訪問SharedPreferences的情況。
4.2測試結(jié)果
本程序的開發(fā)環(huán)境是Android 4.2,因此選擇在4.2以上版本上測試。測試結(jié)果如圖3所示。
5結(jié)語
在本次加密算法研究與實現(xiàn)過程中,主要完成了如下工作:①研究和總結(jié)了常用加密算法RSA、DES和AES的實現(xiàn)過程,針對這3種算法,從算法安全性、運行速度、資源消耗和密鑰管理等角度分析并選擇適合Android平臺的加密算法;②選擇適合的加密算法后,實現(xiàn)了基于AES算法集文件操作和加密于一身的的加密軟件,在此過程中確定了軟件的設(shè)計目標、需求分析、系統(tǒng)功能模塊設(shè)計和程序流程設(shè)計;③根據(jù)系統(tǒng)流程對各個子功能模塊進行編碼設(shè)計,最后針對軟件功能和當前開發(fā)環(huán)境進行了系統(tǒng)測試。
參考文獻參考文獻:
[1]豐生強.Android軟件安全與逆向分析[M].北京:人民郵電出版社,2013.
[2]蔣紹林,王金雙,張濤.Android 安全研究綜述[J].計算機應(yīng)用與軟件,2012(10):205210.
[3]JONATHAN KATZ,YEHUDA LINDELL.Introduction to modern cryptography[M].London:Chapman and Hall,2007.
[4]吳明航.DES和RSA混合加密算法的研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2013.
[5]姚培娟,張志利.Android智能手機安全問題和防護策略研究[J].現(xiàn)代計算機:專業(yè)版,2015(1):6972.
[6]MODEL JISOO OH,MINWOO PARK,TAIMYOUNG CHUNG.Enhancing security of the android platform via multilevel security[J].Applications and Techniques in Information Security Communications in Computer and Information Science,2014.
責任編輯(責任編輯:孫娟)