国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android的社交網(wǎng)絡(luò)安全通信系統(tǒng)研究

2017-03-14 18:48楊新宇
關(guān)鍵詞:Android系統(tǒng)信息安全

楊新宇

摘要:谷歌推出的安卓平臺以其良好的開放性和靈活性贏得廣大消費(fèi)者的歡迎。文章針對安卓手機(jī)的移動(dòng)社交軟件中存在的安全隱患,以保護(hù)用戶個(gè)人通信的隱私,提高短信傳輸?shù)目煽啃约鞍踩詾槟康?,研究了在Android平臺上對字符串進(jìn)行加密和簽名認(rèn)證的方法。設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)加密和簽名認(rèn)證的通信系統(tǒng),該系統(tǒng)用AES加密算法實(shí)現(xiàn)對字符串的加密,用RSA簽名算法實(shí)現(xiàn)對字符串的簽名和驗(yàn)證。具有良好的兼容性和實(shí)用性,在系統(tǒng)中添加了短信發(fā)送功能,更加方便了用戶使用。

關(guān)鍵詞:Android系統(tǒng);AES算法;RSA算法;信息安全

1 引言

云計(jì)算技術(shù)隨著大數(shù)據(jù)時(shí)代的到來不斷發(fā)展,人們通過網(wǎng)絡(luò)方便地進(jìn)行信息交流,隨之而產(chǎn)生的移動(dòng)社交軟件也層出不窮。諸如QQ、微信、微博、短信等早已深入到人們的日常生活之中。人們享受便利與高效通信的同時(shí),伴隨而來的安全問題正時(shí)刻困擾著我們?!袄忡R門”等類似事件也在不斷向我們敲響警鐘,即在雙方利用手機(jī)進(jìn)行通信時(shí),社交軟件公司、互聯(lián)網(wǎng)運(yùn)營商等都有技術(shù)來獲得用戶通信內(nèi)容。就目前來看,主要存在著以下隱患:(1)編輯的字符串以明文形式發(fā)送,在不安全的信道中傳輸,字符串內(nèi)容可能被惡意第三方獲知。(2)接收方無法對字符串的發(fā)送者進(jìn)行身份鑒別,發(fā)送方可以抵賴,單憑賬號和手機(jī)號已經(jīng)缺乏可靠性。(3)接收方對字符串內(nèi)容的完整性不能鑒別,無法獲知該內(nèi)容是否被他人篡改。

因此,在使用移動(dòng)社交軟件時(shí)如何將用戶的隱私控制在用戶自己手中,如何提高用戶信息的安全性顯得至關(guān)重要。為此,本文以安卓手機(jī)為例,結(jié)合安卓手機(jī)短信的運(yùn)行機(jī)制,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)針對社交時(shí)敏感字符串的簽名、加密通信系統(tǒng),用戶可對字符串進(jìn)行簽名驗(yàn)證、加密解密。其特點(diǎn)如下:具有較強(qiáng)的實(shí)用性;具有較好的兼容性;具有一定的安全性;保證了字符串的可信性、不可抵賴性和數(shù)據(jù)完整性;操作簡單方便。

2 系統(tǒng)設(shè)計(jì)

2.1系統(tǒng)模型

整個(gè)系統(tǒng)模型可分為3層,其中安卓平臺作為底層,移動(dòng)社交軟件作為中間層,通信系統(tǒng)作為頂層。圖1是系統(tǒng)的設(shè)計(jì)模型。

安卓平臺作為底層包括了應(yīng)用層、應(yīng)用框架層、系統(tǒng)運(yùn)行庫層和Linux內(nèi)核層,該層提供基本的功能支持,如連接互聯(lián)網(wǎng),獲取SIM信息等。社交軟件層包括了用戶常用的各種社交軟件,在該層點(diǎn)擊“發(fā)送”按鍵后,信息交由底層發(fā)送至信道中,接收方獲得密文后也是在該層顯示出來。通信系統(tǒng)層為字符串提供加密、簽名、簽名加密三種功能(簽名加密是將前兩種功能結(jié)合起來一并使用),具體使用哪種由用戶自己選擇。

2.2系統(tǒng)模塊

本系統(tǒng)主要分為3個(gè)模塊。分別是發(fā)送接收模塊、加密解密模塊、簽名驗(yàn)證模塊。圖2展現(xiàn)了各模塊之間的關(guān)聯(lián)。

其中發(fā)送接收模塊提供了短信的發(fā)送和接收功能。通過該模塊不需要借助于移動(dòng)社交軟件就可以直接進(jìn)行字符數(shù)據(jù)的傳輸,為使用短信通信提供了便利。在發(fā)送前,系統(tǒng)會通過判斷語句對短信字符長度進(jìn)行判斷,如果消息長度超過70個(gè)字符,短信會自動(dòng)分為兩條發(fā)送。當(dāng)然用戶也可以通過復(fù)制粘貼的方式將密文導(dǎo)入安卓手機(jī)自帶的短信發(fā)送軟件中實(shí)現(xiàn)發(fā)送。

加密解密模塊采用對稱加密中的AES算法。在眾多加密方法中,對稱加密具有加密速度快、加密數(shù)據(jù)量大的優(yōu)點(diǎn),適合在字符串長度較長的情況下進(jìn)行加密。而其中的AES算法也是當(dāng)前較為常用的一種加密算法,該加密算法采用分組加密的方式,共有128bit、192bit和256bit三種分組長度,這里采用256bit。在通信前輸入對稱密鑰,編輯字符串,完成加密。復(fù)制粘貼到用戶使用的社交軟件對話框中,點(diǎn)擊發(fā)送便完成了密文的傳輸。接收方在社交軟件對話框中看到密文后,將密文導(dǎo)入系統(tǒng)中,輸入對稱密鑰進(jìn)行解密。

簽名驗(yàn)證模塊采用RSA算法,該算法在數(shù)字簽名中使用較為廣泛。為了保證在計(jì)算上的困難性,密鑰長度至少在1024bit。

3 系統(tǒng)實(shí)現(xiàn)

本系統(tǒng)在安卓系統(tǒng)2.3.3版本上進(jìn)行設(shè)計(jì),該版本在市場上出現(xiàn)較早。

3.1系統(tǒng)流程

1.密鑰分發(fā)。(1)AES密鑰:手工分發(fā)、RSA加密分發(fā)。(2)RSA公鑰:短信發(fā)送、互聯(lián)網(wǎng)發(fā)布。

2.AES加密發(fā)送短信。(1)輸入密碼、短信內(nèi)容和電話號碼。(2)對短信內(nèi)容加密。(3)發(fā)送密文。

3.RSA簽名發(fā)送短信。(1)輸入短信文本。(2)對原文簽名生成消息摘要。(3)輸入AES加密密鑰,對消息摘要和明文加密形成密文。(4)發(fā)送密文。

3.2功能實(shí)現(xiàn)

1.置布局文件。

使用線性布局作為整體的布局框架。首先界面上要有輸入密碼,輸入短信字符串及輸入電話號碼的可編輯文本框,其次一個(gè)加密的按鈕點(diǎn)擊后實(shí)現(xiàn)加密,一個(gè)解密按鈕點(diǎn)擊后實(shí)現(xiàn)解密,一個(gè)發(fā)送按鈕發(fā)送短信,以及一個(gè)返回按鈕結(jié)束程序。整個(gè)布局采用線性布局,里面再嵌套兩個(gè)線性布局。至于簽名驗(yàn)證模塊的布局原理類似,不加以贅述。圖3為加密解密模塊的布局效果圖。

2.發(fā)送功能。

(1)系統(tǒng)具備發(fā)送短信的功能,在AndroidManifest.xml文件中需要添加發(fā)送短信的權(quán)限。

(2)將Android中自帶的telephony.SmsManager類導(dǎo)入。

(3)設(shè)置監(jiān)聽器監(jiān)聽事件btnSend.setOnClickListener(new OnClickListener(),一旦觸發(fā),立即讀取短信字符串和手機(jī)號碼字符串。

(4)發(fā)送短信smsManager.sendTextMessage(mobile, null, msg, null, null),彈出提示框“短信已發(fā)送”。

3.加密解密功能。

(1)調(diào)用加密函數(shù)AESCipher類進(jìn)行加密

dest = AESCipher.encrypt(key, src)

(2)加密函數(shù)

public class AESCipher {public static String encrypt(String key, String src) throws Exception {

byte[] rawKey = getRawKey(key.getBytes());

byte[] result = encrypt(rawKey, src.getBytes());

return toHex(result); }

(3)加密流程

字符數(shù)據(jù)轉(zhuǎn)化為字節(jié)數(shù)據(jù)。

src = etStr.getText().toString().trim()

字節(jié)數(shù)據(jù)轉(zhuǎn)化為十六進(jìn)制字符串

public static String toHex(String txt)

{return toHex(txt.getBytes()); }

圖5、圖6分別為原文加密后的應(yīng)用界面。

(4)解密

解密時(shí)調(diào)用相應(yīng)的解密函數(shù):

dest = AESCipher.decrypt(key, src)

4.簽名驗(yàn)證功能。

(1)密鑰生成

生成公私密鑰對:

KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(RSA)

密鑰位數(shù)為1024位,keyPairGen.initialize(1024)。

動(dòng)態(tài)生成密鑰對,這是當(dāng)前最耗時(shí)的操作,一般要2s以上。

KeyPair keyPair = keyPairGen.generateKeyPair();

PublicKey publicKey = (RSAPublicKey) keyPair.getPublic();

PrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();

byte[] publicKeyData = publicKey.getEncoded();

byte[] privateKeyData = privateKey.getEncoded();

(2)簽名

用戶編輯完字符串后,將私鑰導(dǎo)入相應(yīng)的文本框中,點(diǎn)擊“簽名”按鈕。系統(tǒng)讀取字符串。

String content = txtInput.getText().toString()

RSA簽名函數(shù)對字符串完成簽名。

byte[] dataEncode=cipher.doFinal(content.getBytes());

最后經(jīng)Base64編碼后導(dǎo)入通信雙方的對話框中。

(3)驗(yàn)證

用戶從對話框中獲得簽名,經(jīng)過解碼后,導(dǎo)入發(fā)送方公鑰,點(diǎn)擊“驗(yàn)證”按鈕。主要代碼如下:

byte[] miwen = content.getBytes();

byte[]=android.util.Base64.decode(miwen,Base64.DEFAULT);

byte[] dataDecode = cipher.doFinal(b);

4 結(jié)束語

本文就移動(dòng)社交網(wǎng)絡(luò)中傳遞的字符串加密和簽名方法進(jìn)行了研究和設(shè)計(jì),在使用社交軟件時(shí),通過本系統(tǒng)可對敏感信息進(jìn)行即時(shí)加密和簽名。即使被惡意第三方獲得了密文,也無法立即獲取信息內(nèi)容。接收方在獲得密文后同樣使用復(fù)制、粘貼的方式,將密文導(dǎo)入系統(tǒng)中完成解密、驗(yàn)證。在今后的工作中,可嘗試添加RSA公鑰加密模塊,實(shí)現(xiàn)對AES對稱密鑰的管理,在社交軟件群聊的信息傳遞模式中也可以實(shí)現(xiàn)安全的通信,不再局限于目前點(diǎn)對點(diǎn)的信息傳遞。

猜你喜歡
Android系統(tǒng)信息安全
《信息安全與通信保密》征稿函
信息安全專業(yè)人才培養(yǎng)探索與實(shí)踐
保護(hù)信息安全要滴水不漏
高校信息安全防護(hù)
Android系統(tǒng)上的移動(dòng)互聯(lián)網(wǎng)集成平臺開發(fā)機(jī)制
保護(hù)個(gè)人信息安全刻不容緩
信息安全