宋偉奇 盧志玲
【摘 要】本文介紹安卓平臺(tái)所具備的優(yōu)勢(shì),簡(jiǎn)要說(shuō)明目前常用的加密算法,從軟件系統(tǒng)的框架設(shè)計(jì)、加密模塊設(shè)計(jì)、解密模塊的設(shè)計(jì)、軟件數(shù)據(jù)庫(kù)設(shè)計(jì)、加密軟件工作流程設(shè)計(jì)等方面論述基于安卓系統(tǒng)的手機(jī)信息加密軟件開(kāi)發(fā),為相關(guān)工作提供參考。
【關(guān)鍵詞】安卓系統(tǒng)? 手機(jī)信息? 加密軟件開(kāi)發(fā)
【中圖分類(lèi)號(hào)】G? 【文獻(xiàn)標(biāo)識(shí)碼】A
【文章編號(hào)】0450-9889(2018)12C-0191-02
當(dāng)前基于安卓系統(tǒng)的智能手機(jī)普及率極高,其方便快捷的特點(diǎn)使得更多的人愿意將各類(lèi)信息儲(chǔ)存在手機(jī)當(dāng)中,但將手機(jī)與互聯(lián)網(wǎng)連通后就會(huì)產(chǎn)生信息安全問(wèn)題,這是目前智能手機(jī)行業(yè)最關(guān)注的問(wèn)題之一。社會(huì)對(duì)手機(jī)信息安全問(wèn)題的重視度越來(lái)越高,推動(dòng)了手機(jī)信息技術(shù)加密軟件的研發(fā)進(jìn)程。
一、安卓系統(tǒng)的優(yōu)勢(shì)
安卓系統(tǒng)是由谷歌公司基于Linux平臺(tái)所研發(fā)的開(kāi)放性的手機(jī)操作系統(tǒng),其不僅可以為系統(tǒng)開(kāi)發(fā)提供免費(fèi)的平臺(tái)支持,而且安卓系統(tǒng)本身還集合了谷歌絕大多數(shù)的應(yīng)用功能,例如Reader、Map等,使得其功能涵蓋了日常生活的方方面面。同時(shí)安卓系統(tǒng)的可信度較高,并且在近幾年的開(kāi)發(fā)當(dāng)中成熟度也在不斷提升,加之其選擇將平臺(tái)開(kāi)放,從而使得安卓系統(tǒng)內(nèi)功能軟件的可擴(kuò)展性得到了極大的提升,目前該系統(tǒng)涉及的功能包括移動(dòng)通信、多媒體視頻、汽車(chē)、醫(yī)藥、監(jiān)測(cè)、企業(yè)管理等,大大豐富了當(dāng)前安卓系統(tǒng)智能手機(jī)的功能。
二、安卓系統(tǒng)常用加密算法概述
目前常用的加密算法可以被分為兩大類(lèi):一是對(duì)稱(chēng)加密算法,二是不對(duì)稱(chēng)加密。對(duì)稱(chēng)加密算法指的是對(duì)數(shù)據(jù)進(jìn)行加密的密鑰和解密的密鑰相同,這種加密算法的優(yōu)點(diǎn)在于加密或解密操作時(shí)速率較快,且加密后強(qiáng)度較高,但其缺點(diǎn)在于加密信息的安全性絕對(duì)依賴(lài)于密鑰,比較常見(jiàn)的算法如DES、AES等。非對(duì)稱(chēng)加密算法則指的是加密和解密操作時(shí)的密鑰為完全不同當(dāng)可以匹配的兩個(gè),通常將這兩種密鑰稱(chēng)為公鑰、私鑰,在進(jìn)行加密操作時(shí)所使用的就是公鑰,而開(kāi)展解密操作時(shí)所使用的為私鑰,比較常用的算法包括RSA、DSA等。當(dāng)前安卓系統(tǒng)手機(jī)內(nèi)所使用的密鑰為56位,并且附加了8位的驗(yàn)證碼,在設(shè)計(jì)時(shí)將明文組和密鑰交替組成加密形式,從而提升信息加密的安全性,常見(jiàn)形式為3條連續(xù)56位加密和延長(zhǎng)分組長(zhǎng)度加密。
三、加密軟件技術(shù)的概述
TelephonyManager是一種能夠獲取智能手機(jī)中SIM卡信息的技術(shù),當(dāng)用于并沒(méi)有在SIM卡當(dāng)中存儲(chǔ)號(hào)碼信息時(shí),則對(duì)其進(jìn)行閱讀是通過(guò)IMSI碼。該代碼是國(guó)際移動(dòng)端用戶(hù)的識(shí)別碼,其可以有效地對(duì)移動(dòng)端的各類(lèi)信息進(jìn)行區(qū)分。該代碼的總長(zhǎng)度不超過(guò)15位,均采用0~9這10個(gè)數(shù)字進(jìn)行編寫(xiě),通常情況下在運(yùn)營(yíng)商的數(shù)據(jù)庫(kù)當(dāng)中保存著與手機(jī)號(hào)碼向匹配的IMSI碼的映射,因此安卓系統(tǒng)用戶(hù)可以通過(guò)發(fā)送IMSI碼來(lái)獲得自己手機(jī)的號(hào)碼信息。
SharedPreferences則是一種便攜式的數(shù)據(jù)存儲(chǔ)技術(shù),其可以對(duì)簡(jiǎn)單的配置信息進(jìn)行存儲(chǔ)。例如當(dāng)加密軟件瀏覽根目錄下文件的具體位置時(shí),該存儲(chǔ)技術(shù)只能顯示文件所在的根目錄位置,而不支持對(duì)其加密,修改可通過(guò)Editor技術(shù)來(lái)實(shí)現(xiàn)。但這種存儲(chǔ)技術(shù)的優(yōu)勢(shì)在于不需要重新創(chuàng)建單獨(dú)的數(shù)據(jù)庫(kù)、列表等操作,因此更加快速和簡(jiǎn)單,但該存儲(chǔ)技術(shù)無(wú)法對(duì).int、.float等文件進(jìn)行包含條件的查詢(xún)操作。
Service是安卓系統(tǒng)中的服務(wù)器,其無(wú)法自主開(kāi)啟,但是在退出該程序后其并未完全結(jié)束,而是轉(zhuǎn)為后臺(tái)運(yùn)行方式。此時(shí)加密軟件就可以通過(guò)該系統(tǒng)獲得收集運(yùn)行的定時(shí)更新日志,而不需要每次在打開(kāi)加密軟件時(shí)重新進(jìn)行獲取,提升了加密功能的操作效率。
四、基于安卓系統(tǒng)的手機(jī)信息加密軟件的開(kāi)發(fā)
(一)軟件系統(tǒng)的框架設(shè)計(jì)。當(dāng)前在手機(jī)信息加密軟件系統(tǒng)的框架設(shè)計(jì)中主要分為三個(gè)部分,分別是SD卡瀏覽模塊、加密模塊以及解密模塊。當(dāng)加密軟件在運(yùn)行時(shí)首先就需要SD卡瀏覽模塊發(fā)揮作用,該模塊中的ListView控制元件就能夠?qū)⑹謾C(jī)SD卡內(nèi)的根目錄進(jìn)行顯示,從而使目錄下的所有文件或文件夾都能夠被進(jìn)行瀏覽和分辨。如果此時(shí)加密文件類(lèi)別中文件圖表的右側(cè)顯示了“鎖”型標(biāo)識(shí),則說(shuō)明該文件已經(jīng)處于加密狀態(tài),如此時(shí)電擊該文件則可將其轉(zhuǎn)變?yōu)榻饷苣K處理,并使其從加密模塊目錄下轉(zhuǎn)移到解密模塊目錄當(dāng)中,但依然會(huì)在控制元件模塊下進(jìn)行顯示。
當(dāng)SD卡瀏覽模塊將手機(jī)中各種文件均顯示在控制元件中時(shí),如果其本身作為一個(gè)文件形式,則可以通過(guò)控制元件判斷其是否處于加密狀態(tài),如果是在文件右側(cè)會(huì)顯示有“鎖”的標(biāo)識(shí)。在程序設(shè)計(jì)當(dāng)中則是在文件序列開(kāi)頭寫(xiě)入固定長(zhǎng)度的加密標(biāo)識(shí),例如“E”等,這樣就可以使SD卡瀏覽模塊對(duì)其進(jìn)行分辨,從而保證文件狀態(tài)顯示的正確性。
(二)加密模塊設(shè)計(jì)。加密模塊中的加密算法選擇可以從DES、DESeder或AES當(dāng)中任選一種,在加密時(shí)還需要輸入奇偶排列的密碼,需連續(xù)輸入兩次正確后方可提供加密點(diǎn)擊操作,其中第一次是密碼輸入,第二次為密碼確認(rèn),當(dāng)點(diǎn)擊加密按鈕后就可對(duì)所選擇的文件信息進(jìn)行加密操作。在該功能模塊設(shè)計(jì)時(shí)需要解決兩個(gè)問(wèn)題:一是不同的加密算法當(dāng)中所使用的密鑰長(zhǎng)度也不相同,需要根據(jù)選擇的實(shí)際情況生成不同長(zhǎng)度的密鑰。可先采用switch語(yǔ)句對(duì)用戶(hù)所選擇的加密算法種類(lèi)進(jìn)行判斷,然后再根據(jù)實(shí)際算法種類(lèi)建立長(zhǎng)度不一的數(shù)組,再借助While循環(huán)將用戶(hù)所需要填寫(xiě)的密碼更改為兩次,兩次所需要輸入的數(shù)組必須完全一樣才能夠?qū)崿F(xiàn)操作權(quán)限認(rèn)可,最終利用SecretKeySpec函數(shù)根據(jù)加密算法的種類(lèi)生成相應(yīng)的密鑰。二是當(dāng)加密時(shí)需要根據(jù)某種算法來(lái)進(jìn)行,而解密時(shí)是否需要根據(jù)原加密算法進(jìn)行,這就要求軟件加密功能是應(yīng)添加記錄加密算法的功能。如將加密算法中的三種方式分別用阿拉伯?dāng)?shù)字1~3來(lái)代替,則在加密操作時(shí),需要將相應(yīng)的算法數(shù)字加入到被加密的文件代碼的開(kāi)頭,這是為了使SD卡瀏覽模塊能夠識(shí)別文件是否處于加密狀態(tài)。在生成密鑰后就需要?jiǎng)?chuàng)建一個(gè)新的文件,該文件名的后綴應(yīng)為.lock,然后將密文加入到文件代碼開(kāi)頭,以源文件讀出二進(jìn)制流,使加密后的代碼能夠?qū)懭胛募小T诩用懿僮鬟^(guò)程中則需要以加密算法的名稱(chēng)身長(zhǎng)Cipher文件,并利用密鑰初始化該文件。
(三)解密模塊的設(shè)計(jì)。在手機(jī)界面當(dāng)中點(diǎn)擊已經(jīng)處于加密狀態(tài)的文件,就可以將其轉(zhuǎn)變?yōu)榻饷軤顟B(tài),此時(shí)SD卡瀏覽模塊就會(huì)對(duì)加密文件的開(kāi)頭代碼進(jìn)行讀取,從而獲得其加密算法的種類(lèi),然后由用戶(hù)在解密界面當(dāng)中輸入相應(yīng)的密碼,從而產(chǎn)生密鑰后對(duì)函數(shù)getKey進(jìn)行自定義獲得密鑰,只要用戶(hù)此時(shí)所輸入的密碼與加密時(shí)完全相同,則就可以獲得相同的密鑰對(duì)文件進(jìn)行解密,在解密的過(guò)程中也需要?jiǎng)?chuàng)建Cipher文件,不過(guò)將初始化的過(guò)程轉(zhuǎn)變?yōu)镈ECRYPTMODE,并將解碼后獲得的新文件寫(xiě)入到儲(chǔ)存設(shè)備當(dāng)中。
(四)軟件數(shù)據(jù)庫(kù)設(shè)計(jì)。數(shù)據(jù)庫(kù)是用以存儲(chǔ)加密算法、密鑰以及密碼等信息的,其主要分為兩個(gè)功能模塊,一是對(duì)交互式密碼的存儲(chǔ)模塊,二是對(duì)加密算法選擇種類(lèi)的存儲(chǔ)模塊。其中密碼信息存儲(chǔ)中包括用戶(hù)的ID信息和密碼信息兩種,ID信息可取任何數(shù)據(jù),但絕對(duì)不能為空白,同時(shí)其數(shù)據(jù)標(biāo)當(dāng)中僅且只能包含單一的數(shù)據(jù);用戶(hù)密碼信息則選擇為MD5碼,不可去任意數(shù)值,但也不能為空白。加密算法選擇種類(lèi)存儲(chǔ)信息中包括四項(xiàng)內(nèi)容,分別是定制ID、信息名、保密狀態(tài)以及加密方式,其中加密定制ID與用戶(hù)ID不能完全相同,同樣作為主鍵,其顯示的是文件是否被加密、加密的方式以及加密文件本身的種類(lèi)。
(五)加密軟件工作流程設(shè)計(jì)。在用戶(hù)使用加密軟件時(shí)可運(yùn)行三個(gè)工作模塊,分別是策略定制、文件讀取和文件寫(xiě)入。當(dāng)用戶(hù)在操作策略制定模塊時(shí),應(yīng)先利用SD卡瀏覽功能模塊確定該文件是否能夠被開(kāi)啟加密功能,如果該文件無(wú)法被寫(xiě)入加密密鑰,則該文件不受設(shè)計(jì)軟件系統(tǒng)的保護(hù),該軟件就無(wú)法對(duì)這類(lèi)文件進(jìn)行加密操作。當(dāng)判斷之后表明該文件可以被軟件加密后則進(jìn)入文件讀寫(xiě)工作,并同時(shí)開(kāi)啟軟件內(nèi)的讀寫(xiě)監(jiān)視模塊。如此時(shí)加密模塊屬于自定義加密狀態(tài),則開(kāi)啟加密保護(hù)功能的同時(shí)可以對(duì)該自定義文件進(jìn)行加密操作;如果此時(shí)為關(guān)閉加密狀態(tài),則對(duì)該自定義文件進(jìn)行解密,并將讀寫(xiě)監(jiān)控關(guān)閉。
在閱讀自定義文件時(shí),如果該文件未開(kāi)啟加密保護(hù)功能,則不需要多余的操作,可直接將文件信息傳導(dǎo)至應(yīng)用操作層當(dāng)中,進(jìn)而直接對(duì)其進(jìn)行瀏覽或閱讀;如果該文件已經(jīng)開(kāi)啟了加密功能,則在讀取該文件前需要進(jìn)行解密操作,在解密之后才能夠?qū)⑽募鲗?dǎo)到應(yīng)用操作層。相同的,在進(jìn)行文件寫(xiě)入操作時(shí)如未開(kāi)啟加密保護(hù),則可以直接進(jìn)行寫(xiě)入;如開(kāi)啟則需要在解密后方可寫(xiě)入。
當(dāng)前智能手機(jī)對(duì)于安卓系統(tǒng)下的加密軟件需求量較大,在設(shè)計(jì)時(shí)可借助安卓平臺(tái)的優(yōu)勢(shì),以Java語(yǔ)言為基礎(chǔ),設(shè)計(jì)并實(shí)現(xiàn)可對(duì)文件加密的軟件。其中所包含的功能模塊共分為三種,即SD卡瀏覽模塊、加密模塊、解密模塊,以SD卡瀏覽模塊作為設(shè)計(jì)核心,由其判斷文件是否能夠被加密、是否處于加密狀態(tài)等,然后再通過(guò)加密和解密模塊對(duì)文件實(shí)現(xiàn)操作。
【參考文獻(xiàn)】
[1]劉云龍,呂韜,曾晉,等.基于android手機(jī)的加密QR二維碼識(shí)別系統(tǒng)[J].軟件,2012(4)
[2]張旻,李明,李政,等.基于聲紋的Android手機(jī)訪(fǎng)問(wèn)控制及文件加密系統(tǒng)[J].信息網(wǎng)絡(luò)安全,2013(4)
[3]申晉祥,鮑美英,張琦.Android手機(jī)系統(tǒng)中的短消息加密研究與實(shí)現(xiàn)[J].山西大同大學(xué)學(xué)報(bào)(自然科學(xué)版),2016(3)
[4]袁方.基于Android平臺(tái)的手機(jī)混沌加密系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:杭州電子科技大學(xué),2013
[5]浩明.基于安卓系統(tǒng)的手機(jī)防盜取證系統(tǒng)[J].實(shí)驗(yàn)室研究與探索,2014(9)
[6]馬浩天.關(guān)于Java語(yǔ)言的手機(jī)軟件開(kāi)發(fā)技術(shù)[J].新媒體研究,2015(20)
[7]馮益斌.基于Android系統(tǒng)及混合加密的藍(lán)牙遠(yuǎn)程控制研究[J].現(xiàn)代電子技術(shù),2016(5)
[8]李欣.基于Android智能手機(jī)的彩信加密與傳輸機(jī)制研究[J].移動(dòng)信息,2015(8)
[9]黎妹紅,李論,張大偉,等.基于SDKEY的安卓手機(jī)安全傳輸技術(shù)[J].解放軍理工大學(xué)學(xué)報(bào)自然科學(xué)版,2015(2)
[10]朱江.基于Android平臺(tái)的個(gè)人隱私保護(hù)軟件的設(shè)計(jì)與實(shí)現(xiàn)[D].大連:大連理工大學(xué),2014