本發(fā)明涉及一種安卓程序啟動(dòng)校驗(yàn)方法和裝置,屬于手機(jī)軟件安全領(lǐng)域。
背景技術(shù):
作為安卓系統(tǒng)的安裝程序APK文件包,主要由包括存放應(yīng)用程序資源的Assets,應(yīng)用引用的庫(kù)文件Lib、簽名文件Meta-inf、資源文件Res、配置文件AndroidManifest.xml、程序編譯后的代碼Classes.dex和編譯后的二進(jìn)制資源文件Resources.arsc。
在對(duì)APK文件包進(jìn)行校驗(yàn)過(guò)程中,現(xiàn)有技術(shù)中所采用的方式是基于APK文件包中的簽名文件Meta-inf進(jìn)行校驗(yàn),此種校驗(yàn)方式由于是利用簽名文件對(duì)APK文件包進(jìn)行整體校驗(yàn),對(duì)于APK文件包被非法篡改,但是簽名文件未改變的情況,仍然能夠校驗(yàn)通過(guò),導(dǎo)致校驗(yàn)的安全性降低。Android的流行使其已成為眾多惡意軟件的攻擊目標(biāo),Android的木馬、Rootkit和應(yīng)用層特權(quán)提升攻擊等3安全威脅更是不斷出現(xiàn),而其中APK正是大部分漏洞的攻擊入口,APK的安全性至關(guān)重要,而現(xiàn)有的大部分主要安全防護(hù)方法主要即面對(duì)APK的保護(hù),而對(duì)通過(guò)驗(yàn)證的安卓程序本身沒(méi)有進(jìn)行更多的防護(hù),因此出現(xiàn)了通過(guò)一些不法連接或者其他木馬程序?qū)е略菊5陌沧砍绦虮诲e(cuò)誤修改并對(duì)使用被修改的程序的用戶造成危害。
本發(fā)明正是解決安卓程序安全問(wèn)題的缺陷,在每次安卓程序重新啟動(dòng)時(shí)進(jìn)行一次安全檢查,保證安卓程序的安全性。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問(wèn)題,本發(fā)明通過(guò)提供一種安卓程序啟動(dòng)校驗(yàn)方法和裝置。
本發(fā)明采用的技術(shù)方案一方面為一種安卓程序啟動(dòng)校驗(yàn)方法,包括以下步驟:S1、安裝APK文件包并生成應(yīng)用程序;S2、設(shè)置用于檢校所述應(yīng)用程序的檢校單元,該檢校單元還用于管理針對(duì)所述應(yīng)用程序的訪問(wèn)權(quán)限;S3、檢測(cè)應(yīng)用程序的啟動(dòng)信號(hào),啟動(dòng)檢校單元并對(duì)應(yīng)用程序進(jìn)行檢校,檢校通過(guò)則啟動(dòng)應(yīng)用程序。
優(yōu)選地,所述步驟S1還包括基于簽名信息進(jìn)行APK文件包的完整性驗(yàn)證,安裝APK文件包并生成應(yīng)用程序。
優(yōu)選地,所述步驟S1還包括獲取遠(yuǎn)程服務(wù)器的公鑰證書(shū),所述公鑰證書(shū)用于結(jié)合APK文件包的私鑰,驗(yàn)證APK的安全性。
優(yōu)選地,所述檢校單元基于簽名信息進(jìn)行應(yīng)用程序的文件的完整性驗(yàn)證。
優(yōu)選地,所述檢校單元還包括基于哈希比較驗(yàn)證動(dòng)態(tài)庫(kù)。
優(yōu)選地,所述檢校單元還包括提取APK文件包的OAT文件的哈希值并與應(yīng)用程序的dex文件進(jìn)行哈希比較。
本發(fā)明采用的技術(shù)方案另一方面為一種安卓程序啟動(dòng)校驗(yàn)裝置,該裝置包括:安裝模塊,用于安裝APK文件包并生成應(yīng)用程序;檢測(cè)模塊,用于設(shè)置用于檢校所述應(yīng)用程序的檢校單元,該檢校單元還用于管理針對(duì)所述應(yīng)用程序的訪問(wèn)權(quán)限;啟動(dòng)模塊,用于檢測(cè)應(yīng)用程序的啟動(dòng)信號(hào),啟動(dòng)檢校單元并對(duì)應(yīng)用程序進(jìn)行檢校,檢校通過(guò)則啟動(dòng)應(yīng)用程序。
本發(fā)明的有益效果為在APK安裝之后,對(duì)安裝完成的安卓程序進(jìn)行再次的驗(yàn)證,通過(guò)程序完整性的驗(yàn)證,使得安裝完成之后程序的安全性得到提升,避免因?yàn)槟抉R或者不良連接等因素造成的安卓程序的修改導(dǎo)致的用戶的損失,提高用戶的安全性。
附圖說(shuō)明
圖1所示為基于本發(fā)明實(shí)施例的一種安卓程序啟動(dòng)校驗(yàn)方法的示意圖;
圖2所示為基于本發(fā)明實(shí)施例的一種安卓程序啟動(dòng)校驗(yàn)裝置的示意圖;
圖3所示為基于本發(fā)明實(shí)施例的一種安卓程序啟動(dòng)校驗(yàn)流程示意圖。
具體實(shí)施方式
以下結(jié)合實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明。
基于發(fā)明的實(shí)施例,如圖1所示一種安卓程序啟動(dòng)校驗(yàn)方法,包括以下步驟:S1、安裝APK文件包并生成應(yīng)用程序;S2、設(shè)置用于檢校所述應(yīng)用程序的檢校單元,該檢校單元還用于管理針對(duì)所述應(yīng)用程序的訪問(wèn)權(quán)限;S3、檢測(cè)應(yīng)用程序的啟動(dòng)信號(hào),啟動(dòng)檢校單元并對(duì)應(yīng)用程序進(jìn)行檢校,檢校通過(guò)則啟動(dòng)應(yīng)用程序。
第一步,在智能設(shè)備上安裝APK文件,第二步,設(shè)置一個(gè)用于連接應(yīng)用程序啟動(dòng)操作與應(yīng)用程序的檢校單元,本方案的中技術(shù)體現(xiàn)為,例如,用戶手動(dòng)點(diǎn)擊手機(jī)屏幕上已經(jīng)安裝完成的應(yīng)用程序的圖標(biāo),正常程序是應(yīng)用程序立即啟動(dòng),而基于本方案,首先被啟動(dòng)的是檢校單元,檢校單元對(duì)應(yīng)用程序進(jìn)行完整性等方面的檢校,檢校通過(guò)之后,檢校單元啟動(dòng)應(yīng)用程序(即判斷是否有訪問(wèn)的權(quán)限,通過(guò)則可以訪問(wèn),不通過(guò)則取消訪問(wèn));所述應(yīng)用程序的啟動(dòng)信號(hào)即觸摸屏幕引起的要求應(yīng)用程序啟動(dòng)的啟動(dòng)信號(hào),同樣,也能通過(guò)遠(yuǎn)程啟動(dòng)或者其他程序引起的聯(lián)動(dòng)啟動(dòng)(均歸類(lèi)為啟動(dòng)信號(hào))。
所述步驟S1還包括基于簽名信息進(jìn)行APK文件包的完整性驗(yàn)證,安裝APK文件包并生成應(yīng)用程序。
Android對(duì)每一個(gè)Apk文件都會(huì)進(jìn)行簽名,在Apk文件安裝時(shí),系統(tǒng)會(huì)對(duì)其簽名信息進(jìn)行比對(duì),判斷程序的完整性,從而決定該Apk文件是否可以安裝,在一定程度上達(dá)到安全的目的,而簽名信息相關(guān)的文件包括:MANIFEST.MF:這是摘要文件,程序遍歷Apk包中的所有文件(entry),對(duì)非文件夾非簽名文件的文件,逐個(gè)用SHA1生成摘要信息,再用Base64進(jìn)行編碼,如果你改變了apk包中的文件,那么在apk安裝校驗(yàn)時(shí),改變后的文件摘要信息與MANIFEST.MF的檢驗(yàn)信息不同,于是程序就不能成功安裝;CERT.SF:這是對(duì)摘要的簽名文件,對(duì)前一步生成的MANIFEST.MF,使用SHA1-RSA算法,用開(kāi)發(fā)者的私鑰進(jìn)行簽名,在安裝時(shí)只能使用公鑰才能解密它,解密之后,將它與未加密的摘要信息(即,MANIFEST.MF文件)進(jìn)行對(duì)比,如果相符,則表明內(nèi)容沒(méi)有被異常修改;CERT.RSA文件中保存了公鑰、所采用的加密算法等信息,系統(tǒng)對(duì)簽名文件進(jìn)行解密,所需要的公鑰就是從這個(gè)文件里取出來(lái)的,這三個(gè)文件在apk META-INFO文件夾,結(jié)論:META-INFO里面的文件環(huán)環(huán)相扣,從而保證Android程序的安全性。
所述步驟S1還包括獲取遠(yuǎn)程服務(wù)器的公鑰證書(shū),所述公鑰證書(shū)用于結(jié)合APK文件包的私鑰,驗(yàn)證APK的安全性。
一般公鑰的存放是APK的文件里面,在解壓安裝的時(shí)候提取并應(yīng)用于驗(yàn)證,本方案通過(guò)遠(yuǎn)程服務(wù)下載的方式,將提高公鑰的安全性,而公鑰的存放的遠(yuǎn)程服務(wù)器可以是提供APK的程序設(shè)計(jì)所在的公司,也可以是例如百度手機(jī)助手等可以信賴的軟件提供網(wǎng)站(公鑰為APK公司提供);
在APK安裝的時(shí)候,先通過(guò)公鑰私鑰之間的驗(yàn)證,驗(yàn)證完整之后,正式進(jìn)行APK的啟動(dòng)和安裝。
所述檢校單元基于簽名信息進(jìn)行應(yīng)用程序的文件的完整性驗(yàn)證。
采用上述的簽名信息的方式,為現(xiàn)有技術(shù)中較為成熟的技術(shù),有利于降低方案的開(kāi)發(fā)成本,也可以通過(guò)其他的例如文件完全校對(duì)等形式進(jìn)行檢校。
所述檢校單元還包括基于哈希比較驗(yàn)證動(dòng)態(tài)庫(kù)。
已經(jīng)完成驗(yàn)證的APK文件包,判讀是否進(jìn)行動(dòng)態(tài)庫(kù)的調(diào)用,如果有則計(jì)算SO庫(kù)的hash值,與應(yīng)用程序里面的data/app-lib下面的動(dòng)態(tài)庫(kù)進(jìn)行哈希比較。
所述檢校單元還包括提取APK文件包的OAT文件的哈希值并與應(yīng)用程序的dex文件進(jìn)行哈希比較。
提取APK文件包的OAT文件的哈希值與應(yīng)用程序的data/dalvik-cache的dex文件進(jìn)行哈希比較。
本基于發(fā)明的實(shí)施例,如圖2所示一種安卓程序啟動(dòng)校驗(yàn)裝置,該裝置包括:安裝模塊,用于安裝APK文件包并生成應(yīng)用程序;檢測(cè)模塊,用于設(shè)置用于檢校所述應(yīng)用程序的檢校單元,該檢校單元還用于管理針對(duì)所述應(yīng)用程序的訪問(wèn)權(quán)限;啟動(dòng)模塊,用于檢測(cè)應(yīng)用程序的啟動(dòng)信號(hào),啟動(dòng)檢校單元并對(duì)應(yīng)用程序進(jìn)行檢校,檢校通過(guò)則啟動(dòng)應(yīng)用程序。
本基于發(fā)明的實(shí)施例,如圖3所示一種安卓程序啟動(dòng)校驗(yàn)流程示意圖,第一步,啟動(dòng)應(yīng)用程序;第二步,應(yīng)用程序包完整性檢查(包括1.驗(yàn)證應(yīng)用程序中的每個(gè)文件的算法(數(shù)據(jù)摘要+Base64編碼)和MANIFEST.MF文件中的對(duì)應(yīng)屬性塊內(nèi)容是否配對(duì);2.驗(yàn)證CERT.SF文件的簽名信息和CERT.RSA中的內(nèi)容是否一致;3.MANIFEST.MF整個(gè)文件簽名在CERT.SF文件中頭屬性中的值是否匹配以及驗(yàn)證MANIFEST.MF文件中的各個(gè)屬性塊的簽名在CERT.SF文件中是否匹配;4.驗(yàn)證應(yīng)用程序簽名證書(shū)跟導(dǎo)入證書(shū)是否是同個(gè)證書(shū),防止調(diào)包);第三步,動(dòng)態(tài)庫(kù)校驗(yàn);第四步,DEX文件校驗(yàn);第五步,校驗(yàn)完成,正常啟動(dòng)。
以上所述,只是本發(fā)明的較佳實(shí)施例而已,本發(fā)明并不局限于上述實(shí)施方式,只要其以相同的手段達(dá)到本發(fā)明的技術(shù)效果,都應(yīng)屬于本發(fā)明的保護(hù)范圍。在本發(fā)明的保護(hù)范圍內(nèi)其技術(shù)方案和/或?qū)嵤┓绞娇梢杂懈鞣N不同的修改和變化。