于成麗,郭燕慧,鈕心忻
(北京郵電大學(xué) 網(wǎng)絡(luò)與交換技術(shù)國家重點(diǎn)實(shí)驗室 信息安全中心,北京 100876)
基于信任鏈傳遞的APK重簽名算法設(shè)計
于成麗,郭燕慧,鈕心忻
(北京郵電大學(xué) 網(wǎng)絡(luò)與交換技術(shù)國家重點(diǎn)實(shí)驗室 信息安全中心,北京 100876)
基于信任鏈傳遞機(jī)制設(shè)計了一個Android應(yīng)用安全管理系統(tǒng)上的APK重簽名算法。算法利用官方私鑰對通過安全檢測的APK中開發(fā)者簽名文件進(jìn)行重簽名以證明其通過官方安全認(rèn)證,保證了被簽名的APK文件信息的安全性、完整性和不可否認(rèn)性。測試結(jié)果表明,對比重簽名整個APK文件算法,算法能夠高效加速文件的簽名與驗簽進(jìn)度,提升了用戶應(yīng)用安裝體驗;同時具備良好的靈活性和可擴(kuò)展性,具有較高的應(yīng)用價值和推廣價值。
信任鏈傳遞;APK重簽名;應(yīng)用安全管理系統(tǒng);SHA1算法;RSA算法
伴隨著3G,4G業(yè)務(wù)的商用,電視、PC、手機(jī)“三屏合一”的推進(jìn),智能電視被稱是繼PC、平板電腦和智能手機(jī)之后的第四屏,吸引了中外眾多企業(yè)的目光。谷歌、蘋果、聯(lián)想、小米、樂視、TCL、愛奇藝等紛紛進(jìn)入智能電視領(lǐng)域,各大第三方應(yīng)用商店也將開始提供Android智能電視應(yīng)用服務(wù),智能電視將成為互聯(lián)網(wǎng)公司一個重要的主戰(zhàn)場,以Android系統(tǒng)為首的智能終端用戶量日益大增。由于這些智能電視終端可植入大量各種各樣的APP,這種開源的Android平臺為開發(fā)者深度定制系統(tǒng)提供很好的機(jī)遇,然而部分被收買的開發(fā)者在定制ROM時肆意破解篡改發(fā)布的APK軟件安裝包,在APK編譯后通過植入大量的木馬病毒來竊取用戶信息,給Android用戶帶來了嚴(yán)重的隱私安全和經(jīng)濟(jì)損失[1-3]。為保護(hù)用戶的隱私安全,減少不必要的經(jīng)濟(jì)損失,官方安全機(jī)構(gòu)聯(lián)合應(yīng)用商城及各大智能電視終端廠商期望建立并維護(hù)一套可監(jiān)管的、健全的、標(biāo)準(zhǔn)化的APK應(yīng)用安全管理平臺。
近期,文獻(xiàn)[4]先后通過靜態(tài)提取APK權(quán)限、API調(diào)用序列、組件、資源以及APK結(jié)構(gòu)構(gòu)件特征向量,動態(tài)修改APK源碼、重新編譯成內(nèi)核鏡像文件并加載模擬器并實(shí)時監(jiān)控APK軟件安裝包等方法,設(shè)計了一個對APK安裝包動靜態(tài)檢測相結(jié)合的惡意APK安全檢測方法。隨后,易等人[5]提出了一套基于Web的Android應(yīng)用安全管理系統(tǒng),該系統(tǒng)允許Android用戶在終端添加對應(yīng)用證書的合法性檢測來保證APK軟件安裝包的安全。借鑒上述動靜態(tài)安全檢測方法和思想,本文搭建了一套健全、可信的APK應(yīng)用安全管理系統(tǒng),其具體結(jié)構(gòu)流程如圖1所示。
從軟件安全的角度考慮,通過對安全檢測的重簽名APK進(jìn)行驗簽,判斷它是否由“官方”安全認(rèn)證并判定它不是被破解、被篡改過的重新簽名打包“盜版軟件”,確保Android用戶安全使用APK軟件安裝包。如圖1所示,由于上述系統(tǒng)上的重簽名驗簽?zāi)K被內(nèi)嵌到智能電視終端應(yīng)用安裝器中,提高驗簽效率,進(jìn)而提升用戶體驗迫在眉睫。鑒于此,本文基于信任鏈傳遞機(jī)制設(shè)計了一個An?droid應(yīng)用安全管理系統(tǒng)上高效安全的APK重簽名算法。

圖1 APK應(yīng)用安全管理系統(tǒng)
APK簽名即Android應(yīng)用簽名,它是Android系統(tǒng)對APK包完整性和發(fā)布機(jī)構(gòu)唯一性的校驗機(jī)制。顯然,An?droid用戶希望安裝被驗簽過的APK來有效地提升自身系統(tǒng)安全。然而,一些開發(fā)者為牟取利益,常常利用自簽名私鑰對篡改APK安裝包、重新簽名、開發(fā)類似的APK,而這些APK能夠盜取用戶隱私信息而獲取利益。因此,在保護(hù)APK的版權(quán)和開發(fā)者利益且不影響APK正常安裝運(yùn)行的前提下,開發(fā)者可以合理利用APK簽名算法等手段來限制開發(fā)惡意的APK。
APK簽名機(jī)制的大致框架[6-7]如下:開發(fā)者在發(fā)布APK前,即要對一個未簽名的Android應(yīng)用程序Un?signedApp.Apk簽名,首先執(zhí)行一個signapk.jar包,然后分別 用 公鑰 testkey.x509.pem和 私 鑰 key.pk8對 Un?signedApp.Apk進(jìn)行數(shù)字簽名,并將公鑰證書信息certifi?cate.pem打包在APK文件中,最后在安裝應(yīng)用時,系統(tǒng)對APK進(jìn)行驗簽并提取APK的公鑰信息,這樣只有通過驗簽的UnsignedApp.Apk才允許被安裝到系統(tǒng)智能終端。
另外,通過分析其他APK簽名機(jī)制發(fā)現(xiàn),簽名安裝好的APK包中會新增加1個含有3個開發(fā)者簽名信息文件MANIFEST.MF,CERT.SF,CERT.RSA的目錄文件“/ META-INF”。然而,通過跟蹤Android系統(tǒng)驗簽源碼發(fā)現(xiàn),驗簽是通過驗證3個簽名信息文件來校驗APK,并沒有對META-INF目錄做自校驗處理,所以如果在ME? TA-INF目錄中添加其他文件并不會影響APK系統(tǒng)驗簽、安裝、運(yùn)行和更新。本文試圖在簽名過程中將重簽名的APK文件獨(dú)立存放到META-INF目錄下,將驗簽?zāi)K內(nèi)嵌在智能終端應(yīng)用安裝器中。對于計算整個APK文件重簽名的技術(shù),它們在簽名和驗簽過程中都產(chǎn)生大量的復(fù)雜運(yùn)算,極大降低了Android用戶體驗,因此,考慮改進(jìn)并開發(fā)一種新型APK重簽名算法。
為了更加高效合理地處理上述問題,本文將沈昌祥院士等人構(gòu)建的信任鏈傳遞與度量模型[8-10]應(yīng)用到本文APK重簽名算法中。在可信計算體系中,信任鏈傳遞與度量模型主要被用來建立可信的操作平臺。如圖2所示,該模型首先需要創(chuàng)立一個可信根(CRTM),然后通過建立一條信任鏈可信計算BIOS代碼的HASH值,不斷將信任傳遞,經(jīng)由操作系統(tǒng)裝載器(OS Loader)到達(dá)可信的操作系統(tǒng)(OS),直到傳遞給可信平臺(AP)進(jìn)而建立可信的智能終端。下文設(shè)計的APK重簽名算法僅對新目錄META-INF下的3個簽名信息文件MANIFEST.MF,CERT.SF,CERT.RSA進(jìn)行重簽名,對其他文件不作任何處理。本文重簽名算法以Android系統(tǒng)原生簽名為信任根,不斷將信任向上傳遞到APK重簽名流程,信任的傳遞通過完整性度量和驗證實(shí)現(xiàn)。

圖2 信任鏈傳遞與度量模型
3.1 簽名過程
本文重簽名算法的簽名具體實(shí)現(xiàn)流程如圖3所示。接下來,本文分兩階段詳細(xì)闡述。

圖3 APK重簽名算法流程
1)APK系統(tǒng)簽名階段
由于Android系統(tǒng)允許用戶使用自簽名的私有證書對應(yīng)用程序簽名,于是在公布的源碼包中為其提供了一個自帶簽名工具signapk.jar源碼signApk.java。因此,APK系統(tǒng)簽名階段主要是在新增加目錄“/META-INF”下依次生成MANIFEST.MF,CERT.SF,CERT.RSA等3個簽名信息文件。
(1)生成MANIFEST.MF文件
通過調(diào)用addDigestsToManifest方法用SHA1數(shù)字簽名算法[11]逐一對APK包中所有未簽名文件計算摘要值,采用Base64對摘要值進(jìn)行編碼,將編碼信息寫入MANI?FEST.MF文件。
(2)生成CERT.SF文件
通過調(diào)用writeSignatureFile方法用SHA1-RSA算法[12]分別對MANIFEST.MF文件和MANIFEST.MF文件中的每個摘要項計算摘要值,將所有摘要計算結(jié)果寫入CERT.SF文件。
(3)生成CERT.RSA文件
通過調(diào)用writeSignatureBlock方法對CERT.SF文件簽名,將簽名結(jié)果和輸入的公鑰證書打包成PKCS7格式寫入CERT.RSA文件。
上述過程以信任鏈傳遞機(jī)制服務(wù)簽名過程串行進(jìn)行的,下一步驟的輸入依賴上一步的輸出,這種串聯(lián)性為驗簽時逐層驗證文件完整性提供了便利。
2)APK重簽名階段
顧名思義,APK重簽名即在APK系統(tǒng)簽名基礎(chǔ)之上對其再一次簽名,其具體流程如下(為保持流程的連貫性,以下序號接上文1)APK系統(tǒng)簽名階段):
(4)調(diào)用CalcalateMetaFileHash()利用SHA1算法對APK系統(tǒng)簽名的3個簽名信息文件MANIFEST.MF,CERT.SF、CERT.RSA重新計算摘要值;
(5)采用Base64手段對上述摘要值再次編碼,調(diào)用signData()利用SHA1-RSA算法對編碼值進(jìn)行簽名,將簽名值寫入sign.sig文件;
(6)提取公鑰信息及官方簽名機(jī)構(gòu)信息寫入到info. txt文件;
(7)將sign.sg和info.txt文件插入到APK中ME?TA-INF目錄。
主要代碼如下:

本算法借助于SHA1,RSA[13]等經(jīng)典數(shù)字簽名算法,不僅保證了被簽名的APK文件信息的安全性、完整性和不可否認(rèn)性,而且加速文件的簽名與驗簽進(jìn)度,提升了用戶安全安裝體驗。
3.2 驗簽過程
類似地,驗簽過程也分兩階段展開。首先,Android系統(tǒng)使用“PackageInstaller”程序進(jìn)行應(yīng)用程序的安裝時,利用安裝器調(diào)用APK重簽名驗簽?zāi)K對驗簽重簽名算法;其次調(diào)用系統(tǒng)驗簽程序?qū)ndroid系統(tǒng)簽名逐一驗簽。其具體流程如下:
1)APK重簽名驗簽階段
(1)檢查APK中是否包含第2.1節(jié)APK重簽名中第(5)步生成的sign.sig文件。若包含繼續(xù)下一步驗證;若不包含,則驗簽過程失敗,即簽名失敗。
(2)調(diào)用CalcalateMetaFileHash()利用SHA1算法分別對APK的META-INF文件中的簽名信息文件MANI?FEST.MF,CERT.SF,CERT.RSA計算摘要值。
(3)調(diào)用signature.verify()對sign.sig文件簽名值和公鑰信息進(jìn)行驗簽確認(rèn)是否一致。
主要代碼如下:

2)APK系統(tǒng)驗簽階段(為保持流程的連貫性,以下步驟接上文1)APK重簽名驗簽階段)
(4)調(diào)用JarUtils.verifySignature()對第2.1節(jié)APK系統(tǒng)簽名第(3)步的簽名驗證,驗證CERT.RSA的簽名是否確實(shí)從CERT.SF而來。
(5)調(diào)用JarVerifier.verify()對第2.1節(jié)APK系統(tǒng)簽名第(2)步的摘要驗證,驗證CERT.SF中的摘要值是否確實(shí)MANIFEST.MF文件計算得到。
(6)調(diào)用VerifierEntry.verify()對第2.1節(jié)APK系統(tǒng)簽名第(1)步的摘要驗證,驗證MANIFEST.MF中的摘要值是否確實(shí)由應(yīng)用程序文件計算得到。
分析可見,上述驗簽過程通過官方公鑰證書利用重簽名信息文件sign.sig對MANIFEST.MF,CERT.SF,CERT. RSA這3個開發(fā)者簽名文件進(jìn)行驗簽,并根據(jù)驗簽結(jié)果對用戶進(jìn)行風(fēng)險提示,用戶自行選擇是否繼續(xù)安裝應(yīng)用。該過程不僅能夠利用APK重簽名保證開發(fā)者自身簽名文件的完整性,而且APK繼續(xù)安裝時還利用開發(fā)者簽名特性進(jìn)一步驗證APK中其他文件所有文件完整性,這是由于APK每一文件一旦被改動將會導(dǎo)致驗簽無法順利通過。
模擬真實(shí)電視用戶裝機(jī)環(huán)境,選取Android智能電視裝機(jī)必備的10款不同APK應(yīng)用(譬如安全工具、文件管理、購物、影音、生活等)為例進(jìn)行測試,如表1所示(這里分別命名本文重簽名算法和對APK所有文件重簽名算法為算法1和算法2)。測試原型系統(tǒng)及實(shí)驗平臺配置中簽名服務(wù)器(Linux虛擬機(jī))為:CPU(3.29 GHz),RAM(4.00 Gbyte),OS(Ubuntu);驗簽移動智能終端:CPU(1.45 Hz),RAM(2.00 Gbyte),OS(Android 4.2)。

表1 Android智能電視中的10款不同APK應(yīng)用測試結(jié)果
測試結(jié)果表明,Android用戶利用本文重簽名算法在安裝Android智能電視中如上10款A(yù)PK應(yīng)用時平均所需等待時間僅為0.3 s,而采用算法2平均所需等待時間將達(dá)到1.68 s,接近是本算法的6倍,本算法極大地降低了Android用戶APK應(yīng)用安裝體驗滿意度。這是由于算法2需要對APK文件中所有文件的進(jìn)行簽名,而本重簽名算法僅需對META-INF目錄下包含開發(fā)者簽名信息的3個文件進(jìn)行簽名即可。
為使測試更具典型性和普遍性,本文進(jìn)一步選擇了55個0.2~306.1 Mbyte之間的APK文件作為測試對象,分別比較算法1和算法2的簽名和驗簽所需時間,如圖4~圖5所示。由于智能終端容量所限,Android用戶更傾向選擇安裝較小APK文件,這里較多地選取了文件大小為0~50 Mbyte之間的APK。測試分析表明,整體上看,無論是在簽名過程還是驗簽過程,本文算法平均所需時間僅僅是算法2的1/5,即本文重簽名算法在一定程度上加速了簽名與驗簽進(jìn)度,進(jìn)一步提升Android用戶APK應(yīng)用安裝體驗滿意度。

圖4 簽名時間與APK文件大小

圖5 驗簽時間與APK文件大小
基于信任鏈傳遞機(jī)制,本文設(shè)計了一個基于Android應(yīng)用安全管理系統(tǒng)上高效安全的APK重簽名算法,詳細(xì)闡述了算法的簽名、驗簽過程和代碼實(shí)現(xiàn)過程。該算法利用官方私鑰對通過安全檢測的APK中META-INF目錄下開發(fā)簽名進(jìn)行重簽名以證明其通過官方安全認(rèn)證,防止合法的APK被非法篡改,保證了被簽名APK文件信息的安全性、完整性和不可否認(rèn)性。測試結(jié)果表明,對比重簽名整個APK文件,本文算法能夠高效加速文件的簽名與驗簽進(jìn)度,提升了用戶安全安裝體驗;此外,它具有高實(shí)用性、靈活性強(qiáng)和可擴(kuò)展性等優(yōu)點(diǎn),具有較高的應(yīng)用價值和推廣價值。
然而,由于Android平臺的開放性,當(dāng)今未經(jīng)官方認(rèn)證APK應(yīng)用,只進(jìn)行風(fēng)險提示,由Android用戶選擇是否繼續(xù)安裝,并不強(qiáng)行禁止用戶安裝。因此,對于那些未經(jīng)官方認(rèn)證的惡意APK安裝檢測問題是后續(xù)要考慮的課題。
[1]閆梅,彭新光.基于Android安全機(jī)制的權(quán)限檢測系統(tǒng)[J].計算機(jī)工程與設(shè)計,2013(3):85-88.
[2] 李靜華,慕德俊,楊鳴坤,等.Android惡意程序行為分析系統(tǒng)設(shè)計[J].北京郵電大學(xué)學(xué)報,2014(S1):104-107.
[3] 史立原,譚金蓉.安卓電視機(jī)芯智能升級的應(yīng)用研究[J].電視技術(shù),2014,38(6):58-61.
[4]胡文君,趙雙,陶敬,等.一種針對Android平臺惡意代碼的檢測方法及系統(tǒng)實(shí)現(xiàn)[J].西安交通大學(xué)學(xué)報,2013(10):37-43.
[5] 易明,葉佳,石瑀.基于Web的Android應(yīng)用安全管理系統(tǒng)[J].計算機(jī)安全,2014(2):26-28.
[6] 孫偉.Android移動終端操作系統(tǒng)的安全分析[J].軟件學(xué)報,2013(4):105-108.
[7]雷靈光,張中文,王躍武,等.Android系統(tǒng)代碼簽名驗證機(jī)制的實(shí)現(xiàn)及安全性分析[J].信息網(wǎng)絡(luò)安全,2012(8):61-63.
[8] 李曉勇,韓臻,沈昌祥.Windows環(huán)境下信任鏈傳遞及其性能分析[J].計算機(jī)研究與發(fā)展,2007(11):1889-1895.
[9] 于培.可信計算信任鏈傳遞機(jī)制的研究與設(shè)計[D].西安:西安電子科技大學(xué),2011.
[10]司麗敏.可信計算平臺信任鏈理論與技術(shù)研究[D].北京:北京工業(yè)大學(xué),2011.
[11] 路而紅,董秀則,李雪梅.現(xiàn)代密碼算法工程[M].北京:清華大學(xué)出版社,2012.
[12] DANGRAD I.A design principle for hash functions[C]//Proc.Crypto LNCS,1989.[S.l.]:IEEE Press,1989:416-427.
[13]RIVESTR,SHAMIR A,ADLEMAN L.A method for obtaining digi?tal signatures and public-key crypto-systems[J].Communications of the ACM,1978(21):120-126.
Design of APK Repeating Signature Algorithm Based on Transfer of Trust Chain
YU Chengli,GUO Yanhui,NIU Xinxin
(Information Security Center,State Key Laboratory of Networking and Switching Technology,Beijing University of Posts and Telecommunications,Beijing 100876,China)
Based on the transfer of trust chain,an effective APK repeating signature algorithm is proposed on the application security management platform in this paper.The proposed algorithm signs the security detection APK file repeated by utilizing the official private key on the basis of the traditional APK signature algorithm,after signature APK file can be through the official safety certification.Thus it can be guaranteed security,integrity and nonrepudiation of the signature APK files.Results of the tests show that the proposed algorithm can speed up the rate of signature and verifier signature efficiently compared with the method of signing the whole APK file,and promote Android users’satisfaction when the APK application program is installed.Moreover,it has good flexibility,extensibility,higher application value and popularization value.
transfer of trust chain;APK repeating signature;application security management system;SHA1 algorithm;RSA algorithm
TP393.08
A
?? 雯
2014-08-08
【本文獻(xiàn)信息】于成麗,郭燕慧,鈕心忻.基于信任鏈傳遞的APK重簽名算法設(shè)計[J].電視技術(shù),2014,38(21).
國家自然科學(xué)基金青年基金項目(61302087);教育部博士點(diǎn)基金項目(20120005110017);國家科技支撐計劃項目(2012ZX03002012;2012BAH06B02);北京郵電大學(xué)青年基金項目(20120005110017)
于成麗(1989—),碩士生,主研智能終端安全保障、移動互聯(lián)網(wǎng)安全檢測、安全加密、密碼學(xué)、數(shù)字水印等;
郭燕慧(1974—),副教授,碩士生導(dǎo)師,主要從事內(nèi)容安全、軟件安全、機(jī)器學(xué)習(xí)、知識發(fā)現(xiàn)等研究;
鈕心忻(1963—),教授,博士生導(dǎo)師,主要從事信息安全、信息隱藏與數(shù)字水印、數(shù)字內(nèi)容及其安全、軟件無線電等研究。