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