999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SM4國密算法在Android內核的匯編語言快速實現

2021-05-10 11:19:36常曉陽楊中皇
西安郵電大學學報 2021年6期
關鍵詞:設備系統

鄭 東,常曉陽,楊中皇

(1.西安郵電大學 網絡空間安全學院,陜西 西安 710121;2.西安郵電大學 通信與信息工程學院,陜西 西安 710121)

Android手機操作系統因其操作快捷、應用眾多等優點,目前市場占有率已達到72.21%[1]。根據Android系統的開源性特點,通過修改Android開源項目(Android Open Source Project,AOSP),可實現個性化定制。但是,也正是由于Android開源性的這一特點,使得Android終端上存儲的用戶隱私數據面臨著巨大的安全風險。

隨著使用移動設備用戶的增加,數據安全作為信息安全的重要組成部分,已成為關系到國家安全的重要因素[2]。市場上的移動智能設備中所采用的核心密碼算法均來自美國的高級加密標準(Advanced Encryption Standard,AES)、RSA加密算法和安全散列算法(Secure Hash Algorithm,SHA)等,這些算法不符合中國的商用密碼規范,且隨著硬件處理速度和解密手段的不斷提高,安全性也面臨嚴重挑戰[3]。同時,移動智能設備用戶的資料預設儲存在國外,存在數據安全和隱私泄露風險,難以保護中國消費者的隱私[4]。國家密碼管理局也公布了國產密碼算法,應用較為廣泛的有SM2橢圓曲線公鑰密碼算法、SM3密碼雜湊算法和SM4分組密碼算法等3種國家商用密碼算法[5]。

目前,國密算法基于Android系統的研究成果眾多,主要有:對移動設備的遠程管理系統,通過管理移動設備功能與權限,防止惡意者竊取重要數據,提高移動設備的安全性[6];對Android文件的完整性檢測,利用SM3密碼雜湊算法計算文件的哈希值,并比較同一個文件不同時刻的哈希值,以此判斷文件的完整性[7];對Android惡意軟件的檢測,使用SM3密碼雜湊算法對Android應用程序包(Android Application Package,APK)進行完整性計算,得到其Hash值,并與服務器中正確的Hash值進行比較,若兩個Hash值不一致,則說明此APK程序已被篡改,可以卸載[8]。但是,上述國密算法大多是通過Java和C語言在Android內核實現,執行效率有待于提高。

為了有效地保護Android移動終端設備上用戶隱私數據安全,通過使用執行效率更高的匯編語言,完成SM4分組密碼算法在Android系統的匯編語言嵌入設計,以期提高Android系統的加密效能。

1 Android系統架構與加密算法

1.1 Android系統架構

Android系統采用分層的架構[9],由下到上依次是Linux內核層、系統運行庫層、應用程序框架層和應用程序層。最底層的Linux內核層是存在于硬件與軟件之間的抽象層,為Android設備的各種硬件提供底層驅動。系統運行庫層也稱作“C庫層”,此層為系統提供正常運轉的各個基礎庫都是用C/C++編寫,是連接Linux內核層和應用程序框架層的重要橋梁。應用程序框架層被稱為“Java庫層”,也是因為此層中各個組件均由Java語言編寫而成。這一層主要是為應用程序層提供各個應用接口供研究使用。最上層的應用程序層則是Android系統的用戶應用層,主要包括系統提供的桌面、撥打電話、通訊錄、瀏覽器和日歷等基本應用程序,還有用戶自行安裝的第三方應用程序。Android系統架構如圖1所示。

圖1 Android系統架構

1.2 Android系統加密算法

Android系統的加密機制基于Java加密體系結構(Java Cryptography Architecture,JCA),其可將安全功能集成到Android應用程序中。JCA提供了一個可擴展的加密服務程序框架和一組應用程序接口[10](Application Programming Interface,API),支持數字簽名、消息摘要和加密等主要密碼算法。JCA的設計具有算法獨立性和可擴展性及實施獨立性和互操作性兩個特點。其中,算法獨立性和實施獨立性可以互補使用,即JCA提供算法對應的API接口,可以指定具體的實現。通過定義密碼“引擎”的類型為密碼服務提供接口,主要接口有MessageDigest、Signature、KeyFactory、KeyPairGenerator和Cipher類,分別為Android系統提供消息摘要、數字簽名與驗證、密鑰存儲與管理,以及數據的加解解密等服務[11]。

2 SM4分組密碼算法

2.1 加解密算法

F(X0,X1,X2,X3,Rj)=X0⊕T(X1⊕X2⊕X3⊕Rj)

(1)

其中,T(·)=L[τ(·)],T為非線性函數τ以及線性函數L組合函數,非線性函數τ是由4個并行的S盒構成[15]。

由式(1)可得加密變換的表達式為

Xj+4=F(Xj,Xj+1,Xj+2,Xj+3,Rj)=Xj⊕T(Xj+1⊕Xj+2⊕Xj+3⊕Rj)(Y0,Y1,Y2,Y3)=P(X32,X33,X34,X35)=(X35,X34,X33,X32)

其中,P為反序變換。

(b0,b1,b2,b3)=τ(A)=[S(a0),S(a1),S(a2),S(a3)]

O=L(B)=B⊕(B<<<2)⊕(B<<<10)⊕ (B<<<18)⊕(B<<<24)

2.2 密鑰擴展算法

密鑰擴展算法是對128比特的根密鑰進行一系列變換從而產生輪密鑰的過程。用于密鑰擴展算法的系統參數D=(D0,D1,D2,D3),其取值采用16進制,可表示為

D0=(A3B1BAC6)D1=(56AA3350)D2=(677D9197)D3=(B27022DC)

固定參數C=(C0,C1,……,C31),設Cj,i為Cj的第i字節,即

設加密密鑰M=(M0,M1,M2,M3),長度為128比特,每一輪的輪密鑰由加密密鑰生成。將系統參數D與加密密鑰M異或,得到

(K0,K1,K2,K3)= (D0⊕M0,D1⊕M1,D2⊕M2,D3⊕M3)

則輪密鑰

Rj=Kj+4=Kj⊕T′(Kj+1⊕Kj+2⊕Kj+3⊕Cj)

T′與輪函數中的T基本相同,只需將線性函數L置換成L′,即

L′(B)=B⊕(B<<<13)⊕(B<<<23)

3 系統設計與實現

將SM4國密算法添加至Android 9.0源代碼中,為Android用戶提供隱私加密服務,從而實現系統安全以及保護用戶隱私。首先,對SM4算法進行匯編語言設計與實現。其次,從清華鏡像網站上下載Android 9.0源碼,并獲取Android設備的root權限。最后,通過編譯源碼生成合法動態庫,將其刷入Android手機,使得SM4國密算法的匯編語言在Android系統得以實現。

3.1 SM4算法的匯編語言設計

在匯編程序設計中,代碼量較大,SM4算法進行匯編語言的實現時,需秉持以下4條原則。

1)減少代碼量,將不必要的語句刪除或使用一條指令將兩條及以上的語句進行合并。

2)減少程序中的跳轉指令,將32次for循環中子程序的跳轉指令省去,直接將子程序加入for循環中,這樣就可以減少32次跳轉。

3)將代碼中相同部分的指令段進行合并使用,減少不必要的重復。

4)在算法實現中,減少循環移位函數的使用,將其使用循環移位指令直接實現相關移位操作。

通過以上原則,將代碼進行最大程度地優化,代碼所占States周期越少,說明其優化程度越高,算法加密效率就更加高效。

將SM4算法中的加解密運算和密鑰擴展算法進行模塊化實現,再將各個模塊進行整合,從而實現SM4算法的匯編語言程序。以生成輪密鑰的函數為例,M[*]∧D[*]、for循環和S盒等部分匯編代碼的實現過程如下。

1)M[*]∧D[*]。依次取出固定地址sp+0x90、sp+0x94、sp+0x98和sp+0x9c處的M[0]~M[3]和固定參數D[0]~D[3]的值,將M[*]中的值與D[*]中的值分別進行異或處理操作,再將異或后的值K[*]存儲到sp處的地址。

2)for循環。分別取出存儲在sp地址處的值K[*],將其與固定參數C[*]的值進行異或運算,之后跳轉進入sm4CalciRK子函數進行后續運算,通過一系列運算操作后得到K[j+4]的值,繼續參與循環運算。

3)S盒。將S盒中的數據以十六進制形式存儲在固定地址,在進行運算時,直接在固定地址處進行調用。

3.2 系統實現

借助第三方鏡像網站下載獲得Android 9.0源碼,再對源碼進行編譯。完整的Android源碼大小相對較大,為避免編譯過程中出現中途失敗的情況,硬件設備需具有較大的內存空間和運行速度,以確保編譯成功。編譯時還存在配置環境、插件匹配等問題,在解決各種問題后,最終成功將源碼編譯,生成系統鏡像文件,將其刷入Android設備,對底層系統文件進行加密保護。系統實現如圖2所示。

圖2 系統實現

為了確保SM4國密算法的準確性,設計一款應用程序驗證SM4算法源碼的正確性。首先,在應用程序中驗證Java和C語言代碼,再將成功編譯的SM4密碼算法的匯編語言代碼加入原生程序開發包(Native Development Kit,NDK)中,驗證算法的匯編代碼的正確性。SM4加密/解密成功的驗證結果分別如圖3和圖4所示。

圖3 SM4加密算法驗證結果

圖4 SM4解密算法驗證結果

在NDK中結合JNI (Java Native Interface) 技術編譯出包含SM4國密算法的動態庫“libJNI_SM4.so”,在Ubuntu系統上使用Android調試橋(Android Debug Bridge,ADB)工具在命令行輸入“#adb push libJNI_SM4.so /system/lib64”命令,將.so動態庫放入Android設備系統文件中的/system/lib64目錄下,使.so動態庫嵌入到Android內核,為底層系統提供更加高效的加密服務,最終實現保護用戶個人隱私的目的。將設計的應用程序刷到系統鏡像中,通過在源碼中加入相關源文件,再次重新編譯,輸出文件夾中會生成包含應用程序的新system.img鏡像文件,沒有高級權限的一般用戶不能卸載此應用,只有擁有Root權限的用戶才能對系統文件進行安裝和更改等操作。

4 系統效能測試與分析

4.1 測試環境

在Linux操作系統上對Android 9.0源碼進行修改和編譯。客戶端則使用Android Studio設計用于檢測SM4算法的匯編代碼正確性的應用程序。SM4算法的加密效能主要是在Pixel 2設備上測試,Pixel 2設備為高通驍龍835處理器、4 G內存和128 G的內置存儲。客戶端的開發環境如表1所示。

表1 客戶端開發環境

Android設備的中央處理器頻率會隨著設備的功率消耗不斷發生變化,會對測試結果產生一定消極影響。因此,為了減少外部因素對速率測試的影響,確保測試結果的準確性,在測試加密速率之前,確保Android設備的應用程序如移動數據、藍牙和WiFi等設置處于關閉狀態。

4.2 測試結果

在pixel 2手機中循環加密1 000次后取平均值,其匯編加密速率為34.48 MB/s,即系統每秒加密34.48 MB文件數據。在相同環境下,分別使用Java、C語言和匯編語言實現SM4算法對文件加密速率的對比結果如圖5所示。

圖5 3種語言的加密速率對比結果

由圖5可以看出,Java、C語言和匯編語言實現的SM4算法對文件進行加密的平均速率分別為4.57 MB/s、22.33 MB/s和35.60 MB/s。匯編語言的加密速率均比Java和C語言高,匯編語言比C語言的加密速度至少提高1.5倍左右。因此,SM4算法對系統文件的加密使用匯編語言實現更為有效,能夠最大程度提高對底層系統的加密效率,保障用戶的隱私安全。

5 結語

在SM4密碼算法基于Android內核的匯編語言實現中,首先對SM4密碼算法的匯編語言進行設計,其次將匯編語言實現的SM4密碼算法動態庫嵌入Android 9.0源碼,達到SM4密碼算法在Android內核的高效實現,不僅使Android系統具備保護數據安全的能力,還提高了Android系統的加密效能。測試結果表明,SM4國密算法不僅可以有效保護移動設備隱私數據的安全,其對文件加密的匯編語言實現速率還優于Java和C語言。

猜你喜歡
設備系統
諧響應分析在設備減振中的應用
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
主站蜘蛛池模板: 在线免费观看AV| 国产波多野结衣中文在线播放| 制服丝袜一区二区三区在线| 99尹人香蕉国产免费天天拍| 亚洲天堂网2014| 天天综合网在线| 亚洲热线99精品视频| 爱爱影院18禁免费| 亚洲欧美精品日韩欧美| 毛片免费高清免费| 国产微拍一区| 偷拍久久网| 狼友av永久网站免费观看| 欧美天堂久久| 国产拍在线| 热99精品视频| 婷婷在线网站| 免费A级毛片无码免费视频| 一级毛片免费的| 天天干天天色综合网| 四虎国产永久在线观看| 国内丰满少妇猛烈精品播| 五月六月伊人狠狠丁香网| 国产欧美日韩在线在线不卡视频| 69av免费视频| av大片在线无码免费| 国产成人精品视频一区视频二区| 国产日韩丝袜一二三区| 亚洲第一区欧美国产综合| 亚洲福利一区二区三区| 亚洲AⅤ无码国产精品| 国产成人欧美| 欧美精品影院| 青青青国产精品国产精品美女| 黄色三级网站免费| 这里只有精品在线| 韩日免费小视频| 国产成年无码AⅤ片在线| 欧美成人h精品网站| 一级毛片免费观看久| 992tv国产人成在线观看| a毛片在线免费观看| 亚洲无线视频| 国产91线观看| 精品福利视频网| 中文字幕永久在线看| 一本久道热中字伊人| 欧美精品成人一区二区在线观看| 精品国产一区二区三区在线观看 | 黄色片中文字幕| 成人国产小视频| 亚洲一区二区成人| 日本一区中文字幕最新在线| 9啪在线视频| 在线视频一区二区三区不卡| 自拍偷拍欧美日韩| 日本在线免费网站| 国产高清在线观看91精品| 女同国产精品一区二区| 波多野结衣无码中文字幕在线观看一区二区 | 中文字幕首页系列人妻| 伊人激情综合| 国产极品美女在线播放| 亚洲综合经典在线一区二区| 97精品久久久大香线焦| 亚洲三级网站| 另类重口100页在线播放| 国产无码精品在线播放| 久久中文电影| 国产在线自乱拍播放| 精品久久久久久成人AV| 2020精品极品国产色在线观看 | 91精品专区| 亚洲成人77777| 日韩欧美色综合| 日日拍夜夜操| 婷五月综合| 国产99免费视频| 国产精品欧美激情| 全部毛片免费看| 国产福利免费视频| 成人免费一级片|