• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Android 平臺的數(shù)據(jù)傳輸加密方案的研究

      2022-02-14 03:15:26吳素紅
      關(guān)鍵詞:加解密加密算法服務(wù)器端

      吳素紅,劉 洋

      (沈陽工程學(xué)院 信息網(wǎng)絡(luò)中心,遼寧 沈陽 110136)

      隨著移動通信技術(shù)的飛速發(fā)展和移動硬件的不斷優(yōu)化升級,目前移動終端設(shè)備已然成為人們辦公、生活、學(xué)習(xí)的主要工具。據(jù)2020 年上半年統(tǒng)計,基于Android 系統(tǒng)的移動終端市場占有率已近80%,而IOS 系統(tǒng)市場占有率下降至21.6%,An‐droid系統(tǒng)處于無法替代的地位。

      因為Android 系統(tǒng)本身開源,所以有很多手機廠家會深度定制Android 系統(tǒng),從而導(dǎo)致出現(xiàn)一些系統(tǒng)漏洞。此外,安卓市場比較混亂,對app 的審核不嚴(yán)格,這就導(dǎo)致出現(xiàn)一些惡意軟件。Android系統(tǒng)一旦root,惡意app 就可以獲得系統(tǒng)的最高權(quán)限[1]。如何保證Android 系統(tǒng)上的應(yīng)用數(shù)據(jù)安全、傳輸安全成為一個難題。本文分析經(jīng)典的加密算法,并優(yōu)化了AES 算法,為保證密鑰傳輸安全性,引入了RSA 算法,提出了一套基于Android 平臺的數(shù)據(jù)傳輸加密方案。

      1 加密算法分析

      分析傳統(tǒng)的加密算法,就不得不提到對稱加密算法和非對稱加密算法,這2 種算法是按密鑰類型劃分的。在加密算法中,若加密過程和解密過程使用的密鑰是一樣的,則為對稱加密算法;若密鑰不同,則為非對稱加密算法。對稱加密算法的優(yōu)勢是加密速度快、效率高。在數(shù)據(jù)需要頻繁加解密時,使用對稱加密算法更為合適。

      對稱加密算法中比較經(jīng)典的算法包括AES 算法和DES 算法。與DES 算法相比,AES 算法的加密效率高,在安全性方面,AES 算法也更具優(yōu)勢。AES 算法密鑰支持128 位、192 位和256 位多種長度,更為靈活。在AES 算法加解密過程中,生成的密鑰具有更強的不確定性,并且由于AES 算法采用了寬軌跡策略[2],在面對線性密碼分析、差分密碼分析時,具有很好的抵抗性,這在很大程度上都提升了算法的安全性。

      1.1 AES算法分析

      AES 算法的密鑰長度靈活,支持多種長度,密鑰長度為128 bits時,加密輪數(shù)為10輪;密鑰長度為192 bits 時,加密輪數(shù)為12 輪;密鑰長度為256 bits時,加密輪數(shù)為14 輪[3]。當(dāng)密鑰長度為128 位時,數(shù)據(jù)的加解密過程如圖1所示。

      圖1 AES加解密過程

      設(shè)AES 加密函數(shù)為E,則加密公式為C=E(K,P),其中P為明文,K為密鑰,C為密文。加密過程:輸入明文分組和128 位的密鑰,明文分組表示為狀態(tài)矩陣,密鑰表示為字節(jié)方陣,執(zhí)行10 次輪函數(shù)E,最終得到密文。

      AES 算法有重要的4 個步驟:字節(jié)替換(Sub‐Bytes)、行移位(ShiftRows)、列混淆(MixColumns)和輪密鑰加(AddRoundKey)。

      1)字節(jié)替換

      通過查表(S 盒)的方式將狀態(tài)矩陣中的各元素替換為新的元素,將狀態(tài)矩陣中每個字節(jié)的高4 位作為行索引,低4 位作為列索引,取出S 盒中對應(yīng)的元素作為輸出。該步驟提供了AES 算法的非線性變換能力。S 盒在建構(gòu)過程中,結(jié)合可逆的仿射變換矩陣和乘法逆元可以避免一般的代數(shù)攻擊[4]。

      2)行移位

      行移位是將狀態(tài)矩陣進行左循環(huán)移位處理,當(dāng)密鑰長度為128 bits時,狀態(tài)矩陣從0行到3行分別左移0 B、1 B、2 B、3 B。

      3)列混淆

      AES 的基礎(chǔ)域是有限域GF(28),可以把輸入的狀態(tài)矩陣的每一列當(dāng)成是基礎(chǔ)域上的多項式,將其與一個固定多項式C(x)={03}x3+{01}x2+{01}x+{02}相乘,最后模m(x)=x4+1取余[5]。

      列混淆過程表示如下:

      逆列混淆過程表示如下:

      4)輪密鑰加

      將密鑰擴展復(fù)雜化是確保算法安全性的重要一步,輪密鑰加操作就是將輪密鑰與狀態(tài)矩陣按位進行異或操作,之后的每次輪密鑰通過密鑰擴展得到,當(dāng)密鑰長度為128 位時,AES 加密算法共迭代10輪,產(chǎn)生11個子密鑰。

      1.2 AES算法改進

      傳統(tǒng)AES 算法在列混淆操作中,使用循環(huán)矩陣作為擴散函數(shù)。加密過程使用的矩陣為解密過程使用的矩陣為通過計算分析,解密過程會比加密過程更耗時,運算時間的差距會造成解密過程的延時問題[6-7]。

      在有限域GF(28)上,通過構(gòu)造正交矩陣來構(gòu)造最佳擴散矩陣,可以減少計算量,篩選無特征量的正交矩陣會更安全,可以避免黑客利用擴散矩陣的特征變量進行攻擊[8]。在有限域GF(28)中,若4階方陣C=,則正交矩陣有以下性質(zhì):

      1)CCT=I,CTC=I,其中I為單位矩陣。

      2)當(dāng)且僅當(dāng)||C+I=0時,C有特征值,并且該特征值一定等于1。

      通過分析,如果使

      成立,則c0=c2,同時C的逆矩陣等于其本身,則滿足

      可以得出

      進一步計算可得出等式

      根據(jù)以上結(jié)論以及擴散性、性能等設(shè)計準(zhǔn)則,系數(shù)取01、02、03等簡單值,令矩陣

      可使({0 3} ?{0 3})⊕({0 2} ?{0 2})={0 1} 成立。對于這個等式,有

      2 改進的AES 加密算法在Android平臺的應(yīng)用

      隨著智能手機的發(fā)展和普及,現(xiàn)在的智能終端已經(jīng)變成一個功能多樣的移動電腦、音視頻播放器、電子筆記本、數(shù)碼相機、移動存儲器[9],這帶給人們方便的同時,也不得不更多地考慮到信息安全的問題。如何加密保護移動終端的重要信息,避免信息在傳輸過程中被泄露、被竊取、被篡改是當(dāng)前信息安全領(lǐng)域的一個重要課題。

      2.1 加解密過程

      由于前后臺會頻繁進行數(shù)據(jù)交互,所以利用改進的AES 算法加密數(shù)據(jù)串以保證數(shù)據(jù)交互中加解密的速度。在加解密過程中,由于AES 算法的密鑰很有可能會被泄露,所以如何安全地將密鑰傳輸至解密端是一大重點。

      本文采用非對稱加密算法RSA 將改進的AES算法的AES 密鑰進行加密處理。加解密過程如圖2所示。

      圖2 加解密過程

      加密端用AES 密鑰加密原始信息,用RSA 公鑰加密AES 密鑰,將處理后的密鑰和密文組成格式化數(shù)據(jù),傳輸給解密端。

      解密端獲取發(fā)送端傳來的數(shù)據(jù),將其解析出未解密的AES 密鑰和密文數(shù)據(jù),使用RSA 私鑰解密已加密的AES 密鑰以得到AES 密鑰,用AES 密鑰解密出原始信息。

      2.2 RSA密鑰的管理

      由于Android 系統(tǒng)的開源性,在Android 平臺上RSA 密鑰的存儲是著重需要考慮的問題。An‐droid系統(tǒng)存儲方式主要有SharedPreferences存儲、文件存儲和SQlite 數(shù)據(jù)庫存儲。Android 系統(tǒng)被root后,可輕易獲取到/data/data//目錄下的數(shù)據(jù)庫文件和SharedPreferences 文件。若將密鑰直接放在上層代碼中,apk 安裝包被破解后同樣有暴露的風(fēng)險。

      綜上分析,本文將Android 端的RSA 公鑰和私鑰放在native 層,采用C 語言實現(xiàn),經(jīng)過編譯形成so 動態(tài)鏈接庫,并開放相應(yīng)的Java 接口提供給上層應(yīng)用調(diào)用。之所以選擇C 語言,是因為C 代碼的執(zhí)行速度較快,可以保證加解密的速度,同時動態(tài)鏈接庫so被反編譯破解的難度更大。

      除此之外,為避免so 文件被竊取二次打包,采用apk 簽名來驗證so 庫調(diào)用的合法性,當(dāng)apk 簽名與自己的簽名不一致時,調(diào)用so 庫會直接崩潰。為避免多次調(diào)用驗證簽名影響整體加解密速度,將apk簽名驗證邏輯寫在JNI_OnLoad()函數(shù)中,該函數(shù)僅在so庫加載時自動調(diào)用,偽代碼如下:

      3 實現(xiàn)及效果分析

      3.1 實現(xiàn)效果

      Android 端用改進的AES 算法加密原始信息,用RSA 公鑰加密AES 密鑰,將已加密的AES 密鑰和密文數(shù)據(jù)組成JSON 串,傳送到服務(wù)器端。An‐droid端加密過程數(shù)據(jù)如圖3所示。

      圖3 Android端加密過程

      服務(wù)器端獲取Android 端傳來的數(shù)據(jù),拆解JSON 串得到未解密的AES 密鑰和密文數(shù)據(jù),用RSA 私鑰解密得出AES 密鑰,然后解密Android 端傳來的密文數(shù)據(jù),最終得到原始信息。服務(wù)器端解密過程數(shù)據(jù)如圖4所示。

      圖4 服務(wù)器端解密過程

      服務(wù)器端用改進的AES 算法加密數(shù)據(jù),用RSA 公鑰加密AES 密鑰,將處理后的AES 密鑰和密文數(shù)據(jù)組成JSON 串,傳輸給Android 端。服務(wù)器端加密過程數(shù)據(jù)如圖5所示。

      圖5 服務(wù)器端加密過程

      Android 端獲取服務(wù)端傳來的數(shù)據(jù),拆解數(shù)據(jù)后獲取到未解密的AES 密鑰和密文數(shù)據(jù),使用RSA 私鑰解密得出AES 密鑰,然后解密服務(wù)器端傳來的密文數(shù)據(jù)。Android 端解密過程數(shù)據(jù)如圖6所示。

      圖6 Android端解密過程

      3.2 效果分析

      本文對長128 bit的字符串進行了5組測試,分別以AES 算法和改進的AES 算法進行加解密,并記錄相應(yīng)的耗時情況,如表1 所示。通過分析實驗結(jié)果可知,相比于傳統(tǒng)的AES 算法,使用優(yōu)化后的AES 算法,數(shù)據(jù)加解密速度有小幅度提升,加密速度可提高大約21%,解密速度可提高大約26%,并且加解密速度更加均衡,比原算法在運算效率上更具優(yōu)勢。

      表1 算法效率對比 ms

      本文在網(wǎng)絡(luò)傳輸數(shù)據(jù)過程中,改進了AES 算法,保證數(shù)據(jù)的加解密速度,并且引入了RSA 算法,提高了數(shù)據(jù)網(wǎng)絡(luò)傳輸?shù)陌踩浴嶒炛胁捎肁pkCrack 軟件破解apk,僅能破解上層代碼,無法破解so 庫內(nèi)加解密算法的關(guān)鍵代碼和密鑰。此外,通過模擬攻擊者使用Wireshark 抓包程序抓取傳輸數(shù)據(jù),只能獲取到密文,無法得到密鑰解密還原出原始信息。

      4 結(jié)論

      本文針對Android 端的數(shù)據(jù)安全問題,將AES算法進行改進,解決了頻繁交互過程中加解密速度低的問題,同時采用RSA 算法加密AES密鑰,保證了傳輸過程中密鑰的安全。此外,將RSA 密鑰保存至動態(tài)鏈接庫并對其進行簽名認(rèn)證,大大增加了被破解的難度。該方案易于實現(xiàn),適用性強,能夠滿足大多數(shù)Android端數(shù)據(jù)傳輸加密的需求。

      猜你喜歡
      加解密加密算法服務(wù)器端
      淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
      成功(2018年10期)2018-03-26 02:56:14
      電子取證中常見數(shù)據(jù)加解密理論與方法研究
      基于FPGA的LFSR異步加解密系統(tǒng)
      基于小波變換和混沌映射的圖像加密算法
      在Windows中安裝OpenVPN
      Hill加密算法的改進
      網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)募咏饷芟到y(tǒng)研究
      軟件工程(2014年11期)2014-11-15 20:02:46
      對稱加密算法RC5的架構(gòu)設(shè)計與電路實現(xiàn)
      基于Arnold變換和Lorenz混沌系統(tǒng)的彩色圖像加密算法
      基于ANDROID的SMS加密設(shè)計與實現(xiàn)
      昭苏县| 贡嘎县| 瓮安县| 祁门县| 集贤县| 雅安市| 微山县| 苗栗市| 文成县| 开原市| 钦州市| 广宁县| 云林县| 湖州市| 丁青县| 泸定县| 建阳市| 临泉县| 新干县| 南通市| 万州区| 蕲春县| 浠水县| 柳河县| 启东市| 商水县| 永康市| 白朗县| 江津市| 建湖县| 洮南市| 香河县| 汤阴县| 利川市| 绥江县| 黄龙县| 镇安县| 得荣县| 木兰县| 黔西| 石泉县|