于成麗,郭燕慧,鈕心忻
(北京郵電大學(xué) 網(wǎng)絡(luò)與交換技術(shù)國家重點(diǎn)實(shí)驗(yàn)室 信息安全中心,北京 100876)
基于信任鏈傳遞的APK重簽名算法設(shè)計(jì)
于成麗,郭燕慧,鈕心忻
(北京郵電大學(xué) 網(wǎng)絡(luò)與交換技術(shù)國家重點(diǎn)實(shí)驗(yàn)室 信息安全中心,北京 100876)
基于信任鏈傳遞機(jī)制設(shè)計(jì)了一個(gè)Android應(yīng)用安全管理系統(tǒng)上的APK重簽名算法。算法利用官方私鑰對(duì)通過安全檢測的APK中開發(fā)者簽名文件進(jìn)行重簽名以證明其通過官方安全認(rèn)證,保證了被簽名的APK文件信息的安全性、完整性和不可否認(rèn)性。測試結(jié)果表明,對(duì)比重簽名整個(gè)APK文件算法,算法能夠高效加速文件的簽名與驗(yàn)簽進(jìn)度,提升了用戶應(yīng)用安裝體驗(yàn);同時(shí)具備良好的靈活性和可擴(kuò)展性,具有較高的應(yīng)用價(jià)值和推廣價(jià)值。
信任鏈傳遞;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)公司一個(gè)重要的主戰(zhàn)場,以Android系統(tǒng)為首的智能終端用戶量日益大增。由于這些智能電視終端可植入大量各種各樣的APP,這種開源的Android平臺(tái)為開發(fā)者深度定制系統(tǒng)提供很好的機(jī)遇,然而部分被收買的開發(fā)者在定制ROM時(shí)肆意破解篡改發(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)用安全管理平臺(tái)。
近期,文獻(xiàn)[4]先后通過靜態(tài)提取APK權(quán)限、API調(diào)用序列、組件、資源以及APK結(jié)構(gòu)構(gòu)件特征向量,動(dòng)態(tài)修改APK源碼、重新編譯成內(nèi)核鏡像文件并加載模擬器并實(shí)時(shí)監(jiān)控APK軟件安裝包等方法,設(shè)計(jì)了一個(gè)對(duì)APK安裝包動(dòng)靜態(tài)檢測相結(jié)合的惡意APK安全檢測方法。隨后,易等人[5]提出了一套基于Web的Android應(yīng)用安全管理系統(tǒng),該系統(tǒng)允許Android用戶在終端添加對(duì)應(yīng)用證書的合法性檢測來保證APK軟件安裝包的安全。借鑒上述動(dòng)靜態(tài)安全檢測方法和思想,本文搭建了一套健全、可信的APK應(yīng)用安全管理系統(tǒng),其具體結(jié)構(gòu)流程如圖1所示。
從軟件安全的角度考慮,通過對(duì)安全檢測的重簽名APK進(jìn)行驗(yàn)簽,判斷它是否由“官方”安全認(rèn)證并判定它不是被破解、被篡改過的重新簽名打包“盜版軟件”,確保Android用戶安全使用APK軟件安裝包。如圖1所示,由于上述系統(tǒng)上的重簽名驗(yàn)簽?zāi)K被內(nèi)嵌到智能電視終端應(yīng)用安裝器中,提高驗(yàn)簽效率,進(jìn)而提升用戶體驗(yàn)迫在眉睫。鑒于此,本文基于信任鏈傳遞機(jī)制設(shè)計(jì)了一個(gè)An?droid應(yīng)用安全管理系統(tǒng)上高效安全的APK重簽名算法。

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

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

圖3 APK重簽名算法流程
1)APK系統(tǒng)簽名階段
由于Android系統(tǒng)允許用戶使用自簽名的私有證書對(duì)應(yīng)用程序簽名,于是在公布的源碼包中為其提供了一個(gè)自帶簽名工具signapk.jar源碼signApk.java。因此,APK系統(tǒng)簽名階段主要是在新增加目錄“/META-INF”下依次生成MANIFEST.MF,CERT.SF,CERT.RSA等3個(gè)簽名信息文件。
(1)生成MANIFEST.MF文件
通過調(diào)用addDigestsToManifest方法用SHA1數(shù)字簽名算法[11]逐一對(duì)APK包中所有未簽名文件計(jì)算摘要值,采用Base64對(duì)摘要值進(jìn)行編碼,將編碼信息寫入MANI?FEST.MF文件。
(2)生成CERT.SF文件
通過調(diào)用writeSignatureFile方法用SHA1-RSA算法[12]分別對(duì)MANIFEST.MF文件和MANIFEST.MF文件中的每個(gè)摘要項(xiàng)計(jì)算摘要值,將所有摘要計(jì)算結(jié)果寫入CERT.SF文件。
(3)生成CERT.RSA文件
通過調(diào)用writeSignatureBlock方法對(duì)CERT.SF文件簽名,將簽名結(jié)果和輸入的公鑰證書打包成PKCS7格式寫入CERT.RSA文件。
上述過程以信任鏈傳遞機(jī)制服務(wù)簽名過程串行進(jìn)行的,下一步驟的輸入依賴上一步的輸出,這種串聯(lián)性為驗(yàn)簽時(shí)逐層驗(yàn)證文件完整性提供了便利。
2)APK重簽名階段
顧名思義,APK重簽名即在APK系統(tǒng)簽名基礎(chǔ)之上對(duì)其再一次簽名,其具體流程如下(為保持流程的連貫性,以下序號(hào)接上文1)APK系統(tǒng)簽名階段):
(4)調(diào)用CalcalateMetaFileHash()利用SHA1算法對(duì)APK系統(tǒng)簽名的3個(gè)簽名信息文件MANIFEST.MF,CERT.SF、CERT.RSA重新計(jì)算摘要值;
(5)采用Base64手段對(duì)上述摘要值再次編碼,調(diào)用signData()利用SHA1-RSA算法對(duì)編碼值進(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)性,而且加速文件的簽名與驗(yàn)簽進(jìn)度,提升了用戶安全安裝體驗(yàn)。
3.2 驗(yàn)簽過程
類似地,驗(yàn)簽過程也分兩階段展開。首先,Android系統(tǒng)使用“PackageInstaller”程序進(jìn)行應(yīng)用程序的安裝時(shí),利用安裝器調(diào)用APK重簽名驗(yàn)簽?zāi)K對(duì)驗(yàn)簽重簽名算法;其次調(diào)用系統(tǒng)驗(yàn)簽程序?qū)ndroid系統(tǒng)簽名逐一驗(yàn)簽。其具體流程如下:
1)APK重簽名驗(yàn)簽階段
(1)檢查APK中是否包含第2.1節(jié)APK重簽名中第(5)步生成的sign.sig文件。若包含繼續(xù)下一步驗(yàn)證;若不包含,則驗(yàn)簽過程失敗,即簽名失敗。
(2)調(diào)用CalcalateMetaFileHash()利用SHA1算法分別對(duì)APK的META-INF文件中的簽名信息文件MANI?FEST.MF,CERT.SF,CERT.RSA計(jì)算摘要值。
(3)調(diào)用signature.verify()對(duì)sign.sig文件簽名值和公鑰信息進(jìn)行驗(yàn)簽確認(rèn)是否一致。
主要代碼如下:

2)APK系統(tǒng)驗(yàn)簽階段(為保持流程的連貫性,以下步驟接上文1)APK重簽名驗(yàn)簽階段)
(4)調(diào)用JarUtils.verifySignature()對(duì)第2.1節(jié)APK系統(tǒng)簽名第(3)步的簽名驗(yàn)證,驗(yàn)證CERT.RSA的簽名是否確實(shí)從CERT.SF而來。
(5)調(diào)用JarVerifier.verify()對(duì)第2.1節(jié)APK系統(tǒng)簽名第(2)步的摘要驗(yàn)證,驗(yàn)證CERT.SF中的摘要值是否確實(shí)MANIFEST.MF文件計(jì)算得到。
(6)調(diào)用VerifierEntry.verify()對(duì)第2.1節(jié)APK系統(tǒng)簽名第(1)步的摘要驗(yàn)證,驗(yàn)證MANIFEST.MF中的摘要值是否確實(shí)由應(yīng)用程序文件計(jì)算得到。
分析可見,上述驗(yàn)簽過程通過官方公鑰證書利用重簽名信息文件sign.sig對(duì)MANIFEST.MF,CERT.SF,CERT. RSA這3個(gè)開發(fā)者簽名文件進(jìn)行驗(yàn)簽,并根據(jù)驗(yàn)簽結(jié)果對(duì)用戶進(jìn)行風(fēng)險(xiǎn)提示,用戶自行選擇是否繼續(xù)安裝應(yīng)用。該過程不僅能夠利用APK重簽名保證開發(fā)者自身簽名文件的完整性,而且APK繼續(xù)安裝時(shí)還利用開發(fā)者簽名特性進(jìn)一步驗(yàn)證APK中其他文件所有文件完整性,這是由于APK每一文件一旦被改動(dòng)將會(huì)導(dǎo)致驗(yàn)簽無法順利通過。
模擬真實(shí)電視用戶裝機(jī)環(huán)境,選取Android智能電視裝機(jī)必備的10款不同APK應(yīng)用(譬如安全工具、文件管理、購物、影音、生活等)為例進(jìn)行測試,如表1所示(這里分別命名本文重簽名算法和對(duì)APK所有文件重簽名算法為算法1和算法2)。測試原型系統(tǒng)及實(shí)驗(yàn)平臺(tái)配置中簽名服務(wù)器(Linux虛擬機(jī))為:CPU(3.29 GHz),RAM(4.00 Gbyte),OS(Ubuntu);驗(yàn)簽移動(dòng)智能終端: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)用時(shí)平均所需等待時(shí)間僅為0.3 s,而采用算法2平均所需等待時(shí)間將達(dá)到1.68 s,接近是本算法的6倍,本算法極大地降低了Android用戶APK應(yīng)用安裝體驗(yàn)滿意度。這是由于算法2需要對(duì)APK文件中所有文件的進(jìn)行簽名,而本重簽名算法僅需對(duì)META-INF目錄下包含開發(fā)者簽名信息的3個(gè)文件進(jìn)行簽名即可。
為使測試更具典型性和普遍性,本文進(jìn)一步選擇了55個(gè)0.2~306.1 Mbyte之間的APK文件作為測試對(duì)象,分別比較算法1和算法2的簽名和驗(yàn)簽所需時(shí)間,如圖4~圖5所示。由于智能終端容量所限,Android用戶更傾向選擇安裝較小APK文件,這里較多地選取了文件大小為0~50 Mbyte之間的APK。測試分析表明,整體上看,無論是在簽名過程還是驗(yàn)簽過程,本文算法平均所需時(shí)間僅僅是算法2的1/5,即本文重簽名算法在一定程度上加速了簽名與驗(yàn)簽進(jìn)度,進(jìn)一步提升Android用戶APK應(yīng)用安裝體驗(yàn)滿意度。

圖4 簽名時(shí)間與APK文件大小

圖5 驗(yàn)簽時(shí)間與APK文件大小
基于信任鏈傳遞機(jī)制,本文設(shè)計(jì)了一個(gè)基于Android應(yīng)用安全管理系統(tǒng)上高效安全的APK重簽名算法,詳細(xì)闡述了算法的簽名、驗(yàn)簽過程和代碼實(shí)現(xiàn)過程。該算法利用官方私鑰對(duì)通過安全檢測的APK中META-INF目錄下開發(fā)簽名進(jìn)行重簽名以證明其通過官方安全認(rèn)證,防止合法的APK被非法篡改,保證了被簽名APK文件信息的安全性、完整性和不可否認(rèn)性。測試結(jié)果表明,對(duì)比重簽名整個(gè)APK文件,本文算法能夠高效加速文件的簽名與驗(yàn)簽進(jìn)度,提升了用戶安全安裝體驗(yàn);此外,它具有高實(shí)用性、靈活性強(qiáng)和可擴(kuò)展性等優(yōu)點(diǎn),具有較高的應(yīng)用價(jià)值和推廣價(jià)值。
然而,由于Android平臺(tái)的開放性,當(dāng)今未經(jīng)官方認(rèn)證APK應(yīng)用,只進(jìn)行風(fēng)險(xiǎn)提示,由Android用戶選擇是否繼續(xù)安裝,并不強(qiáng)行禁止用戶安裝。因此,對(duì)于那些未經(jīng)官方認(rèn)證的惡意APK安裝檢測問題是后續(xù)要考慮的課題。
[1]閆梅,彭新光.基于Android安全機(jī)制的權(quán)限檢測系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2013(3):85-88.
[2] 李靜華,慕德俊,楊鳴坤,等.Android惡意程序行為分析系統(tǒng)設(shè)計(jì)[J].北京郵電大學(xué)學(xué)報(bào),2014(S1):104-107.
[3] 史立原,譚金蓉.安卓電視機(jī)芯智能升級(jí)的應(yīng)用研究[J].電視技術(shù),2014,38(6):58-61.
[4]胡文君,趙雙,陶敬,等.一種針對(duì)Android平臺(tái)惡意代碼的檢測方法及系統(tǒng)實(shí)現(xiàn)[J].西安交通大學(xué)學(xué)報(bào),2013(10):37-43.
[5] 易明,葉佳,石瑀.基于Web的Android應(yīng)用安全管理系統(tǒng)[J].計(jì)算機(jī)安全,2014(2):26-28.
[6] 孫偉.Android移動(dòng)終端操作系統(tǒng)的安全分析[J].軟件學(xué)報(bào),2013(4):105-108.
[7]雷靈光,張中文,王躍武,等.Android系統(tǒng)代碼簽名驗(yàn)證機(jī)制的實(shí)現(xiàn)及安全性分析[J].信息網(wǎng)絡(luò)安全,2012(8):61-63.
[8] 李曉勇,韓臻,沈昌祥.Windows環(huán)境下信任鏈傳遞及其性能分析[J].計(jì)算機(jī)研究與發(fā)展,2007(11):1889-1895.
[9] 于培.可信計(jì)算信任鏈傳遞機(jī)制的研究與設(shè)計(jì)[D].西安:西安電子科技大學(xué),2011.
[10]司麗敏.可信計(jì)算平臺(tái)信任鏈理論與技術(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ì)[J].電視技術(shù),2014,38(21).
國家自然科學(xué)基金青年基金項(xiàng)目(61302087);教育部博士點(diǎn)基金項(xiàng)目(20120005110017);國家科技支撐計(jì)劃項(xiàng)目(2012ZX03002012;2012BAH06B02);北京郵電大學(xué)青年基金項(xiàng)目(20120005110017)
于成麗(1989—),碩士生,主研智能終端安全保障、移動(dòng)互聯(lián)網(wǎng)安全檢測、安全加密、密碼學(xué)、數(shù)字水印等;
郭燕慧(1974—),副教授,碩士生導(dǎo)師,主要從事內(nèi)容安全、軟件安全、機(jī)器學(xué)習(xí)、知識(shí)發(fā)現(xiàn)等研究;
鈕心忻(1963—),教授,博士生導(dǎo)師,主要從事信息安全、信息隱藏與數(shù)字水印、數(shù)字內(nèi)容及其安全、軟件無線電等研究。