吳一鳴
摘要:Android生態(tài)系統(tǒng)未加限制地應用安裝權限存在巨大安全隱患問題.對此提出修改Android系統(tǒng)源代碼,實現(xiàn)比對apk格式文件包含的公鑰信息、確認文件來源安裝權限的安全提升方案。該方案充分滿足Android生態(tài)系統(tǒng)對惡意代碼防范的信息安全要求。操作系統(tǒng)定制功能更符合業(yè)務需求,可作為深度定制版本的移動智能操作系統(tǒng)。實踐結果達到預期,未經(jīng)認證的應用無法安裝,提升了Android源碼的安全性。
關鍵詞Android系統(tǒng);惡意代碼;源碼安全
DOI:10.11907/rjdk.201018 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP309文獻標識碼:A 文章編號:1672-7800(2020)006-0253-04
0引言
Android生態(tài)系統(tǒng)應用安全隱患主要是惡意代碼,根據(jù)《2019年上半年中國手機安全狀況報告》,360互聯(lián)網(wǎng)安全中心共截獲Android平臺新增惡意程序樣本約92.0萬個,平均每天截獲新增手機惡意程序樣本約0.5萬個,平均每天攔截手機惡意程序攻擊約107.5萬次。雖然危害方式及特點各異,但惡意代碼均需以應用作為媒介在目標終端上運行,由此導致各種形式的網(wǎng)絡安全破壞及非法操作。當前Android生態(tài)系統(tǒng)應用的安全性提升主要是通過權限機制及惡意代碼檢測實現(xiàn)。文獻[2]分析了基于權限的Android應用程序安全性提升;文獻[3]提出一個通用的惡意軟件檢測框架,該框架通過逆向工程從Android應用中提?。ò踩珣?、受感染應用)特征信息并建立關鍵信息特征庫。這兩種方法較適合已知存在安全缺陷的應用,一旦未在應用安裝階段加以限制,則安全隱患會帶人Android終端。
因此,未加限制的應用安裝權限存在巨大安全隱患,通過源碼優(yōu)化的Android系統(tǒng)可有效提升Android終端的網(wǎng)絡安全性,禁止安裝未經(jīng)認證的應用。本文通過研究Android源碼,修改、優(yōu)化相應功能模塊,實現(xiàn)比對apk格式文件包含的公鑰信息,確認文件來源安裝權限,提升Android源碼的安全性。
1 需求分析
Android生態(tài)系統(tǒng)應用惡意代碼的安裝分為兩種方式:①直接方式。因終端安裝權限未受限制,各類非法應用可以隨意安裝;②間接方式。終端被動捆綁靜默安裝惡意代碼應用,比如采用與其它應用打包安裝的方式植入終端。
當用戶下載、安裝并運行包含惡意代碼的應用時,終端便會遭到攻擊。針對上述問題,本文提出一個技術方案,在Android終端禁止未經(jīng)認證的應用安裝,只有通過安全模式認證的應用方能安裝到終端上。該方案杜絕了終端使用者因有意或無意安裝含有惡意代碼的應用,有效提升了Android終端的安全性。
2 技術原理
Android生態(tài)系統(tǒng)應用認證模式采取簽名機制,該機制確保應用apk格式安裝文件的完整性。為實現(xiàn)完整性確認,對apk格式安裝文件要作一個摘要處理,然后采用密碼學理論的非對稱加密,即用私鑰對摘要內(nèi)容進行加密,用公鑰解密。摘要信息經(jīng)此加解密過程如能對應一致,則表明apk格式安裝文件完整無篡改。文件簽字機制可保證apk格式文件在公開發(fā)布之時摘要信息覆蓋的apk格式文件均無法被篡改。
Android生態(tài)系統(tǒng)應用簽名機制如圖1所示。
簽名機制另一個技術優(yōu)勢是可利用公鑰具備的驗證屬性作為確認安裝文件來源的依據(jù)。本文方案技術原理:通過簽名機制認證是否為指定的安裝文件,同時確保文件完整性,決定該apk格式文件是否具有安裝權限。
apk格式安裝文件經(jīng)解壓后,可看到一個META-INFO文件夾。該文件夾實現(xiàn)簽名機制,包含MANIFEST.MF、CERT.RSA和CERT.SF文件,這3個文件定義及功能如下:
(1)MANIFEST.MF:apk格式安裝文件摘要信息。假設apk格式安裝文件中某個文件被篡改,當應用安裝驗證時,篡改后的文件摘要信息與MANIFEST.MF的檢驗信息不同,則無安裝權限。MANIFEST.MF文件的生成方式為遍歷apk格式安裝文件壓縮包含的所有文件,對非文件夾以及非簽名文件逐個采用SHA-1算法和BASE64編碼生成摘要信息,這是Android應用安裝文件簽名驗證過程的第一步。安裝文件壓縮包含的每個文件與MANIFEST.MF摘要文件信息要對應,修改某個壓縮包文件內(nèi)容,必須修改MANFEST.MF文件中對應的摘要值。
(2)CERT.SF:MANIFEST.MF摘要信息的簽名文件。這是應用安裝文件認證過程的第二步,是對第一步得到摘要文件的簽名。對MANIFEST.MF文件本身及文件中的每一條內(nèi)容再次采用SHA-1算法及BASE64編碼后,轉換內(nèi)容寫入CERT.SF文件中。CERT.SF文件記錄的簽名信息保證apk格式安裝文件和MANIFEST.MF摘要文件同時符合完整性要求。
(3)CERT.RSA:保存公鑰、加密算法以及CERT.SF非對稱密文等信息。Android終端在進行驗證時,使用公鑰對不正確的簽名密文進行解密,與CERT.SF文件不一致則不能通過檢驗。假設apk格式安裝文件修改了程序內(nèi)容,新生成的摘要信息能與內(nèi)容對應起來,簽名文件CERT.SF也能與摘要信息文件對應,但是由于篡改者沒有私鑰,因而也不能生成正確的CERT.RSA文件。
META-INFO文件夾各文件關系如圖2所示。
3 功能實現(xiàn)
通過apk格式文件簽名認證提升應用安全性,主要應用于以下3種場景:
(1)第三方認證。這種場景適用于殺毒安全軟件或APP Market之類的軟件下載市場,由可信賴的第三方應用負責指定應用安全問題。第三方收集樣本并置于云端,對比應用安全樣本,聯(lián)網(wǎng)檢查特定應用的安全認證結果。該場景缺點是無法將大量的應用簽名數(shù)據(jù)放在移動設備本地,在無網(wǎng)絡情況下無法實現(xiàn)功能,需要聯(lián)網(wǎng)檢測。
(2)應用自檢測認證。在應用運行時,自身完成簽名認證。授權的簽名信息可以存放在apk格式文件內(nèi),也可存放于云端。該場景缺點是應用一旦被破解自檢測功能便會失效。
(3)Android系統(tǒng)對安裝應用進行簽名機制認證,指定應用安裝權限,該場景涉及Android系統(tǒng)源碼修改。
綜合比較上述3種場景可知場景(3)最優(yōu),因此本文方案的實現(xiàn)技術為修改Android源代碼,通過比對apk格式文件包含的公鑰,確認文件的安裝權限。如果來源在允許安裝權限范圍內(nèi)就進行安裝,反之不予安裝;再由簽名機制確認apk格式安裝文件完整無篡改,并觸發(fā)之后的安裝流程。本文技術方案流程如圖3所示。
功能實現(xiàn)關鍵代碼如下:
(1)在Android源碼中,新增提取第三方應用簽名信息的函數(shù)。
代碼說明:通過傳參"apk安裝文件路徑”至PackageParser類,實例化pp對象;pp對象調用collectCertificates方法后返回應用簽名信息。
代碼說明:以“X.509”靜態(tài)模式將CertificateFactory類實例化為certFactory對象;通過傳送簽名信息至certFactory對象,實例化cert對象;cert對象調用getPublicKey方法后返回應用公鑰信息。這兩個函數(shù)可以提取第三方應用的公鑰。
(2)驗證應用簽名信息公鑰的安裝權限。安裝apk格式文件時調用自定義函數(shù)showUninstallAPKSignatures()和parseSignature(),驗證應用簽名信息公鑰的安裝權限。其中字符串“R.string.install_failed_invalid_signature”是新增的自定義字符串,例如“禁止安裝,簽名不符”。
代碼說明:調用showUninstallAPKSignatures函數(shù)獲取應用簽名信息;調用parseSignature函數(shù)獲取公鑰信息;比對公鑰,確認應用的安裝權限。
4 開發(fā)驗證
開發(fā)驗證環(huán)境如表1所示。
對修改后的Android系統(tǒng)源碼進行編譯,在編譯好的Android系統(tǒng)源碼文件夾下命令行輸入“emulator”,運行Android模擬器,模擬器啟動,系統(tǒng)正常,如圖4所示。
通過命令行adb指令"adb install weixin.apk”,將路徑“~/android-2.3.7r1/out/host/linux-x86/bin/”下“weixin”(微信)應用的安裝文件“weixin.apk”安裝至模擬器。
返回安裝狀態(tài)信息“failed install‘weixin.apk:INSTALL_FAILED_INVALID_SIGNATURES',其中返回信息包含在PackageManager類中定義"INSTALL_FAILED_INVALID_SIGNATURES”的字段,模擬器Android終端禁止未經(jīng)認證的應用app安裝,驗證成功,如圖5所示。
5 結語
本文基于Android系統(tǒng)修改相應源代碼,比對apk格式安裝文件包含的公鑰,確認應用安裝權限,對應用層產(chǎn)生規(guī)則性的根本影響。研究成果充分滿足Android生態(tài)系統(tǒng)對應用惡意代碼防范的信息安全要求。后續(xù)與研究Android系統(tǒng)中安全認證應用的同步機制,確保安全認證應用列表及時更新,有效提升安全防護的實時性。