本發(fā)明涉及一種APP重打包驗(yàn)證方法和裝置,屬于Android系統(tǒng)領(lǐng)域。
背景技術(shù):
因?yàn)锳ndroid的開放性以及google play在國內(nèi)的無法正常工作,Android平臺的惡意應(yīng)用問題一直非常突出。各個應(yīng)用商店和論壇的應(yīng)用管理非?;靵y,其中二次重打包添加廣告甚至添加惡意代碼是國內(nèi)惡意應(yīng)用泛濫的重要原因。另外,對android應(yīng)用的非法調(diào)試往往也需要利用二次重打包技術(shù),防止和檢測應(yīng)用重打包具有非常重要的安全意義。二次重打包技術(shù),往往通過逆向apk代碼,修改或添加代碼邏輯,而后利用惡意者自己生成的密鑰對重新對修改的apk代碼進(jìn)行簽名打包,發(fā)布到apk商店或論壇,危害重大。
現(xiàn)有技術(shù)一般通過第三方的終端監(jiān)測或者專門的檢測中心實(shí)現(xiàn)對重打包應(yīng)用的檢測,適合第三方安全軟件商以及應(yīng)用商店應(yīng)用檢測機(jī)構(gòu)。業(yè)務(wù)運(yùn)營商因?yàn)槿鄙賹K端環(huán)境的把控,使得應(yīng)用本身很難檢測旗下應(yīng)用是否被重打包,重打包應(yīng)用往往對應(yīng)用和業(yè)務(wù)邏輯進(jìn)行調(diào)試,添加廣告外鏈,損害業(yè)務(wù)運(yùn)營商的用戶體驗(yàn)和業(yè)績。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問題,本發(fā)明通過提供一種APP重打包驗(yàn)證方法和裝置。
本發(fā)明采用的技術(shù)方案一方面為一種APP重打包驗(yàn)證方法,包括以下步驟:為APP設(shè)置若干流程標(biāo)記,所述流程標(biāo)記用于激活并輸出檢校信息;驗(yàn)證本地系統(tǒng)是否為定制系統(tǒng),所述定制系統(tǒng)用于支持APP運(yùn)行,接受APP發(fā)出的檢校信息并驗(yàn)證;啟動APP,APP基于流程標(biāo)記激活并輸出檢校信息,所述定制系統(tǒng)接收并驗(yàn)證檢校信息,基于驗(yàn)證結(jié)果修改APP的訪問權(quán)限。
優(yōu)選地,所述流程標(biāo)記基于APP接口調(diào)用記錄激活檢校信息輸出指令,該檢校信息輸出指令用于調(diào)用數(shù)字簽名信息,整合數(shù)字簽名信息和流程標(biāo)記ID,標(biāo)記整合之后的信息為檢校信息。
優(yōu)選地,所述APP輸出系統(tǒng)識別指令至本地系統(tǒng),基于本地系統(tǒng)的系統(tǒng)ID驗(yàn)證本地系統(tǒng)是否為定制系統(tǒng)。
優(yōu)選地,所述定制系統(tǒng)基于流程標(biāo)記ID讀取預(yù)設(shè)的數(shù)字簽名信息以驗(yàn)證檢校信息。
優(yōu)選地,所述定制系統(tǒng)接收并驗(yàn)證檢校信息,如果檢校結(jié)果為不通過則生成驗(yàn)證反饋信息并發(fā)送至APP服務(wù)器的客服單元。
優(yōu)選地,所述定制系統(tǒng)接收并驗(yàn)證檢校信息,如果檢校結(jié)果為不通過則生成圖形化的異常提醒信息并輸出。
本發(fā)明采用的技術(shù)方案另一方面為一種APP重打包驗(yàn)證裝置,該裝置用于執(zhí)行以下步驟:為APP設(shè)置若干流程標(biāo)記,所述流程標(biāo)記用于激活并輸出檢校信息;驗(yàn)證本地系統(tǒng)是否為定制系統(tǒng),所述定制系統(tǒng)用于支持APP運(yùn)行,接受APP發(fā)出的檢校信息并驗(yàn)證;啟動APP,APP基于流程標(biāo)記激活并輸出檢校信息,所述定制系統(tǒng)接收并驗(yàn)證檢校信息,基于驗(yàn)證結(jié)果修改APP的訪問權(quán)限。
本發(fā)明的有益效果為建立一個流程運(yùn)行檢測機(jī)制,通過在APP設(shè)定流程的節(jié)點(diǎn),當(dāng)檢測APP運(yùn)行流程經(jīng)過該流程節(jié)點(diǎn)的時候,發(fā)出對應(yīng)流程的簽名信息到系統(tǒng)進(jìn)行驗(yàn)證,系統(tǒng)基于驗(yàn)證結(jié)果對APP運(yùn)行進(jìn)行控制,在系統(tǒng)層面對APP進(jìn)行驗(yàn)證和控制處理,能夠獨(dú)立驗(yàn)證被修改的APP并增加對APP運(yùn)行的控制能力。
附圖說明
圖1所示為基于本發(fā)明實(shí)施例的一種APP重打包驗(yàn)證方法的步驟的示意圖。
具體實(shí)施方式
以下結(jié)合實(shí)施例對本發(fā)明進(jìn)行說明。
基于發(fā)明的實(shí)施例1,一種APP重打包驗(yàn)證方法,包括以下步驟:為APP設(shè)置若干流程標(biāo)記,所述流程標(biāo)記用于激活并輸出檢校信息;驗(yàn)證本地系統(tǒng)是否為定制系統(tǒng),所述定制系統(tǒng)用于支持APP運(yùn)行,接受APP發(fā)出的檢校信息并驗(yàn)證;啟動APP,APP基于流程標(biāo)記激活并輸出檢校信息,所述定制系統(tǒng)接收并驗(yàn)證檢校信息,基于驗(yàn)證結(jié)果修改APP的訪問權(quán)限。
APP在運(yùn)行的時候,會依據(jù)設(shè)定的流程/步驟逐步的運(yùn)行,通過執(zhí)行不同的指令,調(diào)動不同的資源來完成運(yùn)作;在這些流程中,通過增加若干個節(jié)點(diǎn),當(dāng)APP的流程/步驟到達(dá)這些節(jié)點(diǎn)的時候,則輸出檢校信息(主要基于各種數(shù)字簽名信息,也可以是截至該節(jié)點(diǎn)位置的運(yùn)行記錄,即目前為止進(jìn)行何種操作,例如讀取何種資源,調(diào)用何種接口等記錄)到系統(tǒng),系統(tǒng)根據(jù)預(yù)設(shè)的資料和檢校信息進(jìn)行比對驗(yàn)證;設(shè)置節(jié)點(diǎn)的方式為在APP增加標(biāo)記,該標(biāo)記用于檢測APP是否運(yùn)行到某個節(jié)點(diǎn)(或者作為程序運(yùn)行環(huán)節(jié)的一部分,即某個步驟完成之后,不是直接下一個流程而是激活這個標(biāo)記),當(dāng)該標(biāo)記被觸發(fā)之后,會激活一個讀取程序,讀取APP內(nèi)置的簽名信息等用于驗(yàn)證完整性的檢校信息并輸出到本地的系統(tǒng)(即APP運(yùn)行的平臺),本地系統(tǒng)基于驗(yàn)證結(jié)果決定對APP的支持,如果驗(yàn)證不通過則拒絕APP對本地系統(tǒng)資源的訪問。
所述流程標(biāo)記基于APP接口調(diào)用記錄激活檢校信息輸出指令,該檢校信息輸出指令用于調(diào)用數(shù)字簽名信息,整合數(shù)字簽名信息和流程標(biāo)記ID,標(biāo)記整合之后的信息為檢校信息。
APP在運(yùn)行過程中,一定會進(jìn)行各種接口的調(diào)用,流程標(biāo)記通過檢測接口調(diào)用的情況,確定APP運(yùn)行所處的流程,當(dāng)然確認(rèn)APP運(yùn)行到某個流程的時候,則激活檢校信息輸出指令,該指令會調(diào)用數(shù)字簽名信息,并且整合流程標(biāo)記ID(用于標(biāo)識現(xiàn)在所處的流程,因?yàn)椴煌鞒?,其?jīng)歷和內(nèi)容都不一致,可以針對性的輸出不同的數(shù)字簽名信息,本地系統(tǒng)也能據(jù)此讀取對應(yīng)的用于驗(yàn)證的信息)。
所述APP輸出系統(tǒng)識別指令至本地系統(tǒng),基于本地系統(tǒng)的系統(tǒng)ID驗(yàn)證本地系統(tǒng)是否為定制系統(tǒng)。
APP在運(yùn)行的第一步就是發(fā)送一條系統(tǒng)識別的指令,通過本地系統(tǒng)的ID比較,可以知道APP現(xiàn)在運(yùn)行的系統(tǒng)是否為所需的定制系統(tǒng)(定制系統(tǒng)存儲有驗(yàn)證信息)。
所述定制系統(tǒng)基于流程標(biāo)記ID讀取預(yù)設(shè)的數(shù)字簽名信息以驗(yàn)證檢校信息。
所述定制系統(tǒng)接收并驗(yàn)證檢校信息,如果檢校結(jié)果為不通過則生成驗(yàn)證反饋信息并發(fā)送至APP服務(wù)器的客服單元。
定制系統(tǒng)可以將檢校結(jié)果發(fā)送到APP的服務(wù)器的客服單元(例如支付寶,則發(fā)生到阿里巴巴公司與支付相關(guān)的客服),告知APP的正牌供應(yīng)商,發(fā)現(xiàn)有被重打包的APP,同時將該重打包的APP的相關(guān)的版本,來源,異常位置等信息反饋給APP的正牌供應(yīng)商。
所述定制系統(tǒng)接收并驗(yàn)證檢校信息,如果檢校結(jié)果為不通過則生成圖形化的異常提醒信息并輸出。
定制系統(tǒng)還有通過發(fā)出一個圖形化的信息,例如出現(xiàn)一個提醒框在顯示器上,那么在APP運(yùn)行至某個環(huán)節(jié),會出現(xiàn)一個提醒信息說明正在使用的APP存在風(fēng)險。
基于發(fā)明的實(shí)施例2,一種APP重打包驗(yàn)證裝置,該裝置用于執(zhí)行以下步驟:為APP設(shè)置若干流程標(biāo)記,所述流程標(biāo)記用于激活并輸出檢校信息;驗(yàn)證本地系統(tǒng)是否為定制系統(tǒng),所述定制系統(tǒng)用于支持APP運(yùn)行,接受APP發(fā)出的檢校信息并驗(yàn)證;啟動APP,APP基于流程標(biāo)記激活并輸出檢校信息,所述定制系統(tǒng)接收并驗(yàn)證檢校信息,基于驗(yàn)證結(jié)果修改APP的訪問權(quán)限。
基于發(fā)明的實(shí)施例3,包括簽名服務(wù),APP,應(yīng)用系統(tǒng)和驗(yàn)證模塊四個模塊。其中,簽名服務(wù)是系統(tǒng)可信的后臺服務(wù),提供簽名接口給APP調(diào)用,簽名服務(wù)主要對當(dāng)前調(diào)用該接口的安裝信息(app的開發(fā)者公鑰,APP摘要值,包名),運(yùn)行信息(apk加載資源,apk權(quán)限)等應(yīng)用信息進(jìn)行簽名,簽名密鑰由系統(tǒng)維護(hù),存放在安全芯片或可信執(zhí)行環(huán)境等安全場景下。應(yīng)用系統(tǒng)在主要業(yè)務(wù)邏輯(即APP流程)運(yùn)行前通過調(diào)用驗(yàn)證模塊設(shè)置檢測點(diǎn),驗(yàn)證不通過則表示當(dāng)前應(yīng)用被重打包,可以拒絕APP訪問或告警后臺。APP需要與應(yīng)用系統(tǒng)后臺一致,在執(zhí)行主要業(yè)務(wù)邏輯運(yùn)行前調(diào)用簽名服務(wù)接口以便供驗(yàn)證模塊。APK信息是指APK的開發(fā)者公鑰/證書,摘要值,包名,版本號等應(yīng)用信息,可能有一至若干個,在發(fā)布APP前部署到驗(yàn)證模塊。驗(yàn)證簽名信息,與密鑰/密鑰鏈對應(yīng),包括驗(yàn)證數(shù)字簽名的公鑰(證書)或公鑰鏈(證書鏈)。
第一步,(1)設(shè)置檢測點(diǎn):在主要業(yè)務(wù)邏輯執(zhí)行前設(shè)置若干檢測點(diǎn),檢測點(diǎn)即應(yīng)用系統(tǒng)調(diào)用驗(yàn)證模塊或者由APP調(diào)研簽名服務(wù),檢測點(diǎn)基于業(yè)務(wù)邏輯設(shè)計(例如支付寶包括開啟,輸入金額,確認(rèn)等業(yè)務(wù),根據(jù)重要程度設(shè)置流程點(diǎn))。(2)密鑰和信息供給:簽名服務(wù)模塊與驗(yàn)證模塊通過線下或線上協(xié)商密鑰。密鑰使用符合相關(guān)非對稱算法的密鑰;簽名的密鑰對可以跟app對應(yīng),即不同的app臨時生成不同的公私鑰對,但公鑰必須通過固化在設(shè)備中的設(shè)備密鑰簽名,形成密鑰鏈。系統(tǒng)廠商向業(yè)務(wù)開發(fā)商公開簽名對應(yīng)的公鑰(證書)或設(shè)備公鑰(證書),驗(yàn)證模塊把該公鑰(證書)作為驗(yàn)證簽名信息。驗(yàn)證模塊通過線下方式獲取APK信息和驗(yàn)證簽名信息。
第二步,APP特定業(yè)務(wù)邏輯處調(diào)用簽名服務(wù)接口。簽名信息包括簽名服務(wù)模塊返回的時間戳,相關(guān)的簽名公鑰或證書鏈(存在設(shè)備密鑰時,設(shè)備私鑰對簽名公鑰相關(guān)信息簽名形成證書)以及app開發(fā)者的公鑰和系統(tǒng)層可獲取的應(yīng)用信息。簽名服務(wù)模塊對應(yīng)用的簽名服務(wù)進(jìn)行簽名響應(yīng),簽名內(nèi)容包括對開發(fā)者app的公鑰提取和應(yīng)用信息獲得,時間戳。響應(yīng)給app簽名值,時間戳,開發(fā)者公鑰,應(yīng)用信息,簽名的公鑰或證書鏈。
第三步,APP在特定業(yè)務(wù)邏輯檢查點(diǎn)處提交簽名值和簽名信息進(jìn)行報告,應(yīng)用系統(tǒng)在對應(yīng)的業(yè)務(wù)邏輯檢查點(diǎn)請求驗(yàn)證模塊進(jìn)行驗(yàn)證。
第四步,驗(yàn)證模塊對簽名信息和簽名值進(jìn)行驗(yàn)證。首先,使用驗(yàn)證簽名信息驗(yàn)證簽名公鑰。若簽名信息包含證書鏈,則逐級驗(yàn)證證書鏈的公鑰,直至驗(yàn)證簽名公鑰;否則簽名信息只包含簽名對應(yīng)的公鑰,對把該公鑰與驗(yàn)證簽名信息的公鑰比對。簽名公鑰驗(yàn)證不通過則直接返回給應(yīng)用系統(tǒng)檢驗(yàn)不通過錯誤碼。其次,驗(yàn)證簽名值。使用簽名公鑰對簽名值進(jìn)行驗(yàn)證,比對簽名信息的摘要。不通過則直接返回給應(yīng)用系統(tǒng)檢驗(yàn)不通過錯誤碼。最后,比對簽名信息的時間戳,開發(fā)者公鑰,應(yīng)用信息,當(dāng)時間戳是許可時間且開發(fā)者公鑰/app摘要值與APK相符,則通過驗(yàn)證,返回驗(yàn)證正確碼。否則當(dāng)時間戳不在許可范圍內(nèi),或者開發(fā)者公鑰/app摘要值與APK不相符時,則說明驗(yàn)證不通過,返回錯誤碼,app公鑰,應(yīng)用信息,時間戳,應(yīng)用系統(tǒng)接收驗(yàn)證模塊的返回碼,當(dāng)驗(yàn)證通過,則執(zhí)行后續(xù)業(yè)務(wù)邏輯。否則驗(yàn)證不通過,把a(bǔ)pp公鑰,應(yīng)用信息,時間戳進(jìn)行后臺記錄告警或者拒絕后續(xù)業(yè)務(wù)邏輯運(yùn)行。
以上所述,只是本發(fā)明的較佳實(shí)施例而已,本發(fā)明并不局限于上述實(shí)施方式,只要其以相同的手段達(dá)到本發(fā)明的技術(shù)效果,都應(yīng)屬于本發(fā)明的保護(hù)范圍。在本發(fā)明的保護(hù)范圍內(nèi)其技術(shù)方案和/或?qū)嵤┓绞娇梢杂懈鞣N不同的修改和變化。