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

?

SM2/SM3/SM4在Android系統(tǒng)中的研究與實(shí)現(xiàn)

2019-01-21 10:38韓星玥楊中皇
關(guān)鍵詞:數(shù)字簽名加密算法密鑰

鄭 東, 韓星玥, 楊中皇,2

(1.西安郵電大學(xué) 無(wú)線網(wǎng)絡(luò)安全技術(shù)國(guó)家工程實(shí)驗(yàn)室, 陜西 西安 710121;2.高雄師范大學(xué) 軟件工程與管理學(xué)系, 臺(tái)灣 高雄 82444)

移動(dòng)終端智能設(shè)備已從最初的智能手機(jī)領(lǐng)域進(jìn)入教育、醫(yī)療、軍事等重要行業(yè)。智能手機(jī)逐漸取代個(gè)人電腦成為人類生活、工作和學(xué)習(xí)中不可或缺的一部分[1-2]?;贚inux的Android手機(jī)操作系統(tǒng)[3]是目前最熱門的移動(dòng)操作系統(tǒng)之一。Android手機(jī)代碼的開(kāi)源性,導(dǎo)致其逐漸成為大量惡意攻擊者的首選目標(biāo)之一[4]。美國(guó)《消費(fèi)者報(bào)告》2012年度“State of the Net”報(bào)告指出,近40%的美國(guó)手機(jī)用戶沒(méi)有采取適當(dāng)?shù)陌踩胧谫~戶未經(jīng)準(zhǔn)許的情況下,560萬(wàn)人被擅自訪問(wèn)[5]。TrustGo公司分析應(yīng)用報(bào)告顯示,在Google Play上,3.15%的應(yīng)用有可能泄露用戶隱私或者存在惡意行為。而在中國(guó)國(guó)內(nèi)知名的91應(yīng)用市場(chǎng)上,該比例則為19.7%。同時(shí),大量的第三方應(yīng)用市場(chǎng)的存在,對(duì)于Android設(shè)備的安全造成了嚴(yán)重的威脅。

隨著智能手機(jī)的普及,不論是個(gè)人,還是企業(yè)或政府單位都不可避免地用到自帶設(shè)備(bring your own device, BYOD)[6]。但是,現(xiàn)有網(wǎng)絡(luò)安全設(shè)備存在局限性,使得惡意軟件能夠通過(guò)智能手機(jī)轉(zhuǎn)移到PC或服務(wù)器上,可以實(shí)現(xiàn)對(duì)隱私的竊取。高級(jí)加密標(biāo)準(zhǔn)(advanced encryption standard, AES)、橢圓曲線數(shù)字簽名算法(elliptic curve digital Signature algorithm, ECDSA)和安全哈希算法(secure hash algorithm, SHA)等是智能手機(jī)所用的核心密碼算法,但是,這些算法不符合中國(guó)商用密碼規(guī)范,其安全性不適用于所有的智能終端,并且用戶的資料預(yù)設(shè)儲(chǔ)存在國(guó)外,難以保護(hù)中國(guó)消費(fèi)者的隱私。目前,國(guó)家密碼管理局公布了適用于商用和軍用等的密碼算法,同時(shí),SM2橢圓曲線公鑰密碼算法與SM9標(biāo)識(shí)密碼算法[7]也已成為國(guó)際標(biāo)準(zhǔn)。

本文將滿足我國(guó)商用密碼規(guī)范的密碼算法SM2/SM3/SM4算法添加到Android源碼中,以期為Android系統(tǒng)提供更加健全的加密機(jī)制。

1 Android系統(tǒng)架構(gòu)與系統(tǒng)工具

1.1 Android系統(tǒng)架構(gòu)

Android系統(tǒng)[8]架構(gòu)從下到上依次是Linux內(nèi)核層、系統(tǒng)庫(kù)與運(yùn)行時(shí)庫(kù)層、應(yīng)用程序框架層和應(yīng)用程序?qū)?,如圖1所示。這種層次化設(shè)計(jì)既能夠?yàn)橄到y(tǒng)提供安全,還能夠保持操作系統(tǒng)的開(kāi)放性。

圖1 Android系統(tǒng)框架

Linux內(nèi)核層包括系統(tǒng)層安全機(jī)制、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧及一系列的驅(qū)動(dòng)模塊,位于硬件與其他的軟件層之間,提供與硬件交互。與此同時(shí),還可以區(qū)別與阻隔該層與下一層,即使是該層自身產(chǎn)生了一些變化,也不會(huì)對(duì)任何一層產(chǎn)生影響。需要特別注意的是,內(nèi)核層中不包含虛擬性的內(nèi)存文件。

系統(tǒng)庫(kù)與運(yùn)行時(shí)庫(kù)層包含了Android系統(tǒng)的系統(tǒng)庫(kù)、運(yùn)行環(huán)境和應(yīng)用框架層。系統(tǒng)函數(shù)庫(kù)與運(yùn)行時(shí)庫(kù)層是為應(yīng)用程序運(yùn)行提供服務(wù)的一些C/C++庫(kù);核心庫(kù)中既包含了Java核心類庫(kù)的大多數(shù)功能,也包含了利用Java本地調(diào)用(Java native interface,JNI)等方式封裝的C/C++庫(kù),向應(yīng)用框架層提供調(diào)用底層程序庫(kù)的接口,還包含了解釋運(yùn)行Java字節(jié)碼的ART虛擬機(jī)。應(yīng)用軟件架構(gòu)層為應(yīng)用開(kāi)發(fā)者提供了用以訪問(wèn)核心功能的應(yīng)用程序接口(application program interface, API)。

在Android系統(tǒng)中,上層應(yīng)用程序需利用Java語(yǔ)言開(kāi)發(fā)。比如,通信工具、通訊錄等應(yīng)用程序。

1.2 Android系統(tǒng)工具

Android系統(tǒng)工具不僅包括Android調(diào)試橋(android debug bridge, ADB)和logcat等,還包括開(kāi)發(fā)工具Gradle、TraceView和本地開(kāi)發(fā)工具包(native development kits, NDK)等。

1.2.1 Android調(diào)試工具

ADB是一個(gè)可執(zhí)行程序,位于軟件開(kāi)發(fā)工具包(software development kit, SDK)安裝路徑下platform-tools目錄中,可快速建立與模擬器的通信渠道。ABD采用客戶端/服務(wù)器(Client/Server,C/S)模型,框架由ADB Client、ADB Server和ADB Daemon 等3個(gè)重要部分組成。

Logcat是一個(gè)命令行工具,用于得到程序?qū)?yīng)的日志信息。Android日志系統(tǒng)提供了記錄和查看系統(tǒng)調(diào)試信息的功能。日志都是從各種軟件和某些系統(tǒng)的緩沖區(qū)中記錄,緩沖區(qū)可以通過(guò)logcat命令來(lái)查看和使用。

1.2.2 Android開(kāi)發(fā)工具

Gradle是新一代自動(dòng)化編譯工具,也是Android Studio中應(yīng)用程序開(kāi)發(fā)默認(rèn)的自動(dòng)化構(gòu)建工具。它是在Ant、Maven等自動(dòng)化編譯工具基礎(chǔ)上發(fā)展而來(lái),使用了一種基于Groovy的特定領(lǐng)域語(yǔ)言(DSL)來(lái)聲明項(xiàng)目設(shè)置,拋棄了基于XML的各種繁瑣配置,具有Ant和Maven等工具的所有優(yōu)點(diǎn)。Gradle也是一個(gè)基于Java虛擬機(jī)(java virtual machine, JVM)的構(gòu)建工具,支持maven,Ivy倉(cāng)庫(kù),支持傳遞性依賴管理,而不需要遠(yuǎn)程倉(cāng)庫(kù)或者是pom.xml和ivy.xml配置文件。

Groovy和Java語(yǔ)法相似,并且可以達(dá)到二進(jìn)制級(jí)別的兼容,對(duì)于JVM,兩者之間沒(méi)有任何區(qū)別。同時(shí),Groovy還可以使用Java中的各類API,并且兩者可以進(jìn)行混合編程。

Gradle的生命周具體包含Initialization、Configuration和Execuation共3個(gè)階段,如圖2所示。

圖2 Gradle的生命周期

TraceView是Android SDK中內(nèi)置的工具,可以加載trace文件,用圖形的形式展示代碼執(zhí)行時(shí)間、次數(shù)及棧的調(diào)用,便于分析進(jìn)程中各個(gè)線程的執(zhí)行情況。其中Trace文件可以通過(guò)代碼、Android Studio或者Dalvik虛擬機(jī)調(diào)試監(jiān)控服務(wù)(dalvik debug monitor service, DDMS)生成。使用DDMS生成的trace文件,分析算法的執(zhí)行及布局等。

NDK是一個(gè)工具集,可以開(kāi)發(fā)C/C++動(dòng)態(tài)庫(kù),并能自動(dòng)將動(dòng)態(tài)鏈接庫(kù)(.so庫(kù))打包到應(yīng)用程序中。在Ubuntu Linux下,使用NDK工具集成的交叉編譯器編譯openssl源代碼,生成libcrypto.so動(dòng)態(tài)庫(kù);在Windows下,通過(guò)Android Studio中的NDK實(shí)現(xiàn)對(duì)動(dòng)態(tài)庫(kù)打包。

2 密碼算法

2.1 Android加密算法

Android系統(tǒng)基于Java加密體系結(jié)構(gòu)(java cryptography architecture, JCA),并且JCA提供了一個(gè)可擴(kuò)展的加密服務(wù)程序框架和一組API,即加密服務(wù)基于JCA保護(hù)系統(tǒng)安全。支持現(xiàn)有主要密碼原語(yǔ),如分組密碼算法AES;消息摘要算法SHA-1和消息摘要算法(message digest algorithm, MD5);數(shù)字簽名算法ECDSA和RSA算法。

ECDSA[9]是使用橢圓曲線密碼(elliptic curves cryptography, ECC)對(duì)數(shù)字簽名算法(digital signature algorithm, DSA)的模擬。ECDSA于1999年成為美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì)(american national standards institute, ANSI)標(biāo)準(zhǔn),并于2000年成為電氣和電子工程師協(xié)會(huì)(institute of electrical and electronics engineers, IEEE)和美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(national institute of standards and technology,NIST)標(biāo)準(zhǔn)。在1998年被國(guó)際標(biāo)準(zhǔn)化組織(international organization for standardization, ISO)所接受。

2001年,美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所發(fā)布了AES[10]算法,旨在取代DES[11],成為廣泛使用的標(biāo)準(zhǔn)。AES算法明文分組的長(zhǎng)度為128位即16字節(jié),密鑰長(zhǎng)度可以為16字節(jié),24字節(jié)或者32字節(jié)(128位,192位,256位)。AES算法加密過(guò)程涉及到4種操作:字節(jié)替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和輪密鑰加(AddRoundKey)。

SHA算法是美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所發(fā)布的國(guó)家標(biāo)準(zhǔn)FIPS PUB 180,主要適用于數(shù)字簽名標(biāo)準(zhǔn)(digital signature standard, DSS)[12]里面定義的數(shù)字簽名算法DSA。其中規(guī)定了SHA-1、SHA-224、SHA-256、SHA-384和SHA-512共5種單向散列算法。

2.2 SM2/SM3/SM4密碼算法

密碼學(xué)中常用的算法有對(duì)稱算法、非對(duì)稱算法和散列算法。為了提高算法的安全性,中國(guó)國(guó)家密碼管理局制定了一系列密碼標(biāo)準(zhǔn)及其應(yīng)用規(guī)范,如SM1、SM2、SM3、SM4、SM9。其中已公布有SM2、SM3、SM9和SM4。

2.2.1 SM2橢圓曲線公鑰密碼算法

2010年12月,中國(guó)首次公開(kāi)發(fā)布了SM2橢圓曲線公鑰密碼算法[13],2012年成為中國(guó)商用密碼標(biāo)準(zhǔn)(標(biāo)準(zhǔn)號(hào)為GM/T 0003-2012),2016年成為中國(guó)國(guó)家密碼標(biāo)準(zhǔn)(標(biāo)準(zhǔn)號(hào)為GB/T 32918-2016),2017年SM2數(shù)字簽名算法成為ISO/IEC國(guó)際標(biāo)準(zhǔn),是中國(guó)公鑰密碼算法標(biāo)準(zhǔn)。SM2算法的主要內(nèi)容包含數(shù)字簽名算法、密鑰交換協(xié)議和公鑰加密算法等。

2.2.2 SM3密碼雜湊算法

SM3[14-15]雜湊算法是中國(guó)國(guó)家密碼局于2010年12月17日公布的hash算法的商用標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)可以對(duì)長(zhǎng)度為l(l<264)比特的消息m,經(jīng)過(guò)填充、迭代壓縮、生成雜湊值,其雜湊值的輸出為256比特。由于該標(biāo)準(zhǔn)使用了迭代壓縮結(jié)構(gòu),將填充后的原數(shù)據(jù),通過(guò)布爾函數(shù)與置換邏輯處理,在壓縮過(guò)程中充分地進(jìn)行擴(kuò)散和擾亂,所以,SM3密碼雜湊算法具有較高的復(fù)雜性與不可逆性。

2.2.3 SM4分組密碼算法

由中國(guó)國(guó)家密碼管理局于2006年1月6日公布的分組加密算法,是無(wú)線標(biāo)準(zhǔn)中的分組加密算法,2012年改名為SM4[16]。該算法是一個(gè)分組算法,其分組長(zhǎng)度為128比特,密鑰長(zhǎng)度為128比特。加密算法與密鑰擴(kuò)展算法都采用32輪非線性迭代結(jié)構(gòu)。解密算法與加密算法的結(jié)構(gòu)相同,只是輪密鑰的使用順序相反,解密密鑰是加密密鑰的逆序。

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

3.1 系統(tǒng)架構(gòu)與開(kāi)發(fā)

3.1.1 系統(tǒng)架構(gòu)

在Android 8.0源代碼的基礎(chǔ)上,通過(guò)添加SM2/SM3/SM4密碼算法,實(shí)現(xiàn)對(duì)Android所提供加密服務(wù)安全性的改造,提高系統(tǒng)安全性和用戶隱私的完整性。利用Android Studio開(kāi)發(fā)應(yīng)用程序,通過(guò)性能分析工具TraceView,分析具有相同功能的不同函數(shù);同時(shí)利用AOSP平臺(tái),從Android網(wǎng)站上下載Android 8.0源代碼,在源碼中添加密碼算法,通過(guò)編譯源碼生成刷機(jī)的系統(tǒng)鏡像文件。

3.1.2 系統(tǒng)開(kāi)發(fā)

在Linux系統(tǒng)下通過(guò)編譯修改后的Android 8.0源代碼,實(shí)現(xiàn)密碼算法SM2/SM3/SM4在Android系統(tǒng)中的應(yīng)用。

系統(tǒng)APK“FIPS”的功能界面如圖3所示。點(diǎn)擊SM3,在彈出對(duì)話框中輸入“asdfghjkl”,輸出哈希摘要,如圖4所示。SM4加解密的過(guò)程分別如圖5和圖6所示。SM2加解密以及簽名驗(yàn)證的過(guò)程分別如圖7-10所示。

圖3 FIPS功能界面

圖4 SM3哈希

圖5 SM4的加密過(guò)程

圖6 SM4的解密過(guò)程

圖7 SM2加密過(guò)程

圖8 SM2解密過(guò)程

圖9 SM2簽名過(guò)程

圖10 SM2驗(yàn)證過(guò)程

3.2 系統(tǒng)性能測(cè)試及分析

3.2.1 測(cè)試環(huán)境

在Android中,CPU頻率可能會(huì)因功耗的變化而改變,從而影響設(shè)備的性能和測(cè)試結(jié)果的準(zhǔn)確性。為了減少可能存在干擾源的影響,在測(cè)試之前,強(qiáng)制退出設(shè)備中所有非關(guān)鍵運(yùn)行應(yīng)用程序和服務(wù)。同時(shí),斷開(kāi)WIFI和藍(lán)牙服務(wù),以避免在測(cè)試期間可能會(huì)影響設(shè)備的外部干擾。

利用Linux(Ubuntu 16.04 LTS)系統(tǒng),實(shí)現(xiàn)對(duì)Android 8.0源代碼的修改和編譯。其客戶端使用Android 8.0源代碼結(jié)合Android Studio進(jìn)行應(yīng)用程序的開(kāi)發(fā),客戶端開(kāi)發(fā)與測(cè)試環(huán)境如表1所示。移動(dòng)端實(shí)驗(yàn)設(shè)備為Pixel 2,其系統(tǒng)參數(shù)如表2所示,服務(wù)器端的開(kāi)發(fā)環(huán)境如表3所示。

表1 客戶端開(kāi)發(fā)與測(cè)試環(huán)境

表2 Pixel 2系統(tǒng)參數(shù)

表3 AOSP源碼編譯環(huán)境

3.2.2 測(cè)試方法

通過(guò)運(yùn)行應(yīng)用程序測(cè)量算法的速度,測(cè)試過(guò)程可以在代碼中加入簡(jiǎn)單的測(cè)時(shí)語(yǔ)句來(lái)直接顯示出運(yùn)行時(shí)間,循環(huán)1 000次求平均值,代碼如下。

long startTime=System.currentTimeMillis();

long endTime=System.currentTimeMillis();

Role role=new Role();

(public class Role { void role(){

for(int i=0;i<1000;i++){

int sum=0;

sum=sum+i; } )

Log.d(TAG,"(endTime-startTime)");

3.2.3 測(cè)試結(jié)果

將SM2/SM3/SM4密碼算法和Android系統(tǒng)中內(nèi)置密碼算法的進(jìn)行對(duì)比測(cè)試。Java語(yǔ)言實(shí)現(xiàn)的SM2/SM3/SM4密碼算法在Pixel 2上的測(cè)試結(jié)果如圖11所示。

圖11 Java語(yǔ)言實(shí)現(xiàn)的算法效能測(cè)試結(jié)果

為了提高該密碼算法在Android系統(tǒng)中的高效性,采用NDK技術(shù),通過(guò)C語(yǔ)言實(shí)現(xiàn)的SM2/SM3/SM4密碼算法在Pixel 2的測(cè)試結(jié)果如圖12所示。

圖12 C語(yǔ)言實(shí)現(xiàn)的算法效能測(cè)試結(jié)果

對(duì)比圖11和圖12,可以得出C語(yǔ)言實(shí)現(xiàn)的算法速度比Java語(yǔ)言實(shí)現(xiàn)的速度快至少5倍。

因此,在滿足用戶對(duì)算法速度要求的基礎(chǔ)上,Android系統(tǒng)中引入SM2/SM3/SM4密碼算法,實(shí)現(xiàn)其密碼功能,提供良好的用戶體驗(yàn)。其中,SM2公鑰加密算法是基于橢圓曲線算法ECC,使用橢圓曲線點(diǎn)定義密鑰對(duì),即使黑客使用常用暴力破解,也難以進(jìn)行攻擊,從而增強(qiáng)了算法的安全性,更有效地保護(hù)隱私數(shù)據(jù)。

4 結(jié)語(yǔ)

從移動(dòng)手機(jī)安全性出發(fā),對(duì)Android安全機(jī)制進(jìn)行研究和分析,在Android 8.0源碼中添加SM2/SM3/SM4密碼算法,通過(guò)開(kāi)發(fā)應(yīng)用程序?qū)崿F(xiàn)其密碼功能,重新編譯Android 8.0源碼并定制ROM包實(shí)現(xiàn)刷機(jī),使Android系統(tǒng)具備基于SM2/SM3/SM4密碼算法的安全能力。測(cè)試結(jié)果表明,引入中國(guó)國(guó)家密碼算法的Android系統(tǒng)能有效地保護(hù)用戶隱私和數(shù)據(jù)。

猜你喜歡
數(shù)字簽名加密算法密鑰
基于正交拉丁方理論的數(shù)字簽名分組批量驗(yàn)證
幻中邂逅之金色密鑰
幻中邂逅之金色密鑰
基于DES加密算法的改進(jìn)研究
交通運(yùn)輸行業(yè)數(shù)字簽名系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)分析
密碼系統(tǒng)中密鑰的狀態(tài)與保護(hù)*
淺析計(jì)算機(jī)安全防護(hù)中數(shù)字簽名技術(shù)的應(yīng)用
基于整數(shù)矩陣乘法的圖像加密算法
TPM 2.0密鑰遷移協(xié)議研究
混沌參數(shù)調(diào)制下RSA數(shù)據(jù)加密算法研究
佛教| 肥城市| 丰顺县| 凤冈县| 额济纳旗| 贡觉县| 东台市| 东阿县| 余庆县| 白河县| 涞源县| 清远市| 东明县| 秭归县| 仲巴县| 图木舒克市| 平凉市| 大兴区| 疏附县| 万全县| 拉萨市| 廉江市| 南乐县| 开鲁县| 贡山| 龙山县| 永清县| 十堰市| 昭平县| 静海县| 沁水县| 蓬溪县| 萨嘎县| 玛沁县| 鄂托克前旗| 嘉祥县| 枞阳县| 苍南县| 沂南县| 阿巴嘎旗| 藁城市|