安卓應(yīng)用程序的安全驗(yàn)證方法及裝置制造方法
【專利摘要】本發(fā)明涉及一種安卓應(yīng)用程序的安全驗(yàn)證方法及裝置。安卓應(yīng)用程序的安全驗(yàn)證方法包括:步驟一,從簽名后的安卓應(yīng)用程序安裝文件中提取出公鑰保存到服務(wù)接入端,將該從簽名后的APK文件中取出的公鑰記為第一公鑰;步驟二,在已簽名安卓應(yīng)用程序初始化時(shí),服務(wù)接入端獲取該已簽名安卓應(yīng)用程序的公鑰,將該已簽名安卓應(yīng)用程序的公鑰記為第二公鑰;步驟三,服務(wù)接入端將第二公鑰與第一公鑰進(jìn)行比較,根據(jù)比較結(jié)果判斷已簽名安卓應(yīng)用程序是否安全。本發(fā)明安卓應(yīng)用程序的安全驗(yàn)證方法及裝置,有效的阻止了不法分子通過(guò)仿造APK身份去惡意攻擊平臺(tái)的行為,有效防止被惡意篡改過(guò)的android應(yīng)用程序帶來(lái)的安全風(fēng)險(xiǎn),增強(qiáng)了平臺(tái)的安全性。
【專利說(shuō)明】安卓應(yīng)用程序的安全驗(yàn)證方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息【技術(shù)領(lǐng)域】,尤其涉及一種安卓應(yīng)用程序的安全驗(yàn)證方法及裝置。
【背景技術(shù)】
[0002]Android(譯為“安卓”)是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,例如智能手機(jī)和平板電腦。以下將Android操作系統(tǒng)稱為安卓操作系統(tǒng)。APK(安卓應(yīng)用程序安裝文件)是指Android操作系統(tǒng)的應(yīng)用程序安裝文件。Crack意為“破解”,具體是指反編譯APK文件進(jìn)行匯編級(jí)的代碼分析,并修改或插入自己的代碼,重新簽名打包為APK文件,以達(dá)到改變程序原有行為的目的。也就是說(shuō),要Crack —個(gè)APK文件,主要流程有三步:反編譯、代碼分析、重新打包簽名。
[0003]APK文件被破解會(huì)給用戶帶來(lái)極大的安全隱患。例如,在安裝了安卓操作系統(tǒng)的手機(jī)上,各個(gè)運(yùn)營(yíng)商的“掌上營(yíng)業(yè)廳”應(yīng)用吸引了數(shù)以百萬(wàn)計(jì)的用戶下載,網(wǎng)友使用這些應(yīng)用免除了在營(yíng)業(yè)廳排隊(duì)的麻煩。但是,手機(jī)應(yīng)用被大量破解后重新打包,植入多種惡意廣告插件,部分惡意廣告插件還會(huì)竊取手機(jī)號(hào)、通訊錄等敏感信息。當(dāng)安裝了安卓操作系統(tǒng)的手機(jī)用戶下載安裝篡改過(guò)的“掌上營(yíng)業(yè)廳”等熱門安卓軟件時(shí),手機(jī)號(hào)、地理位置信息、通訊錄均可能被收集。這些敏感信息被不法分子轉(zhuǎn)賣后,用戶會(huì)收到大量垃圾短信、騷擾電話,以及各種精準(zhǔn)推送的廣告信息。篡改過(guò)的手機(jī)應(yīng)用軟件后臺(tái)還可自動(dòng)聯(lián)網(wǎng)下載廣告數(shù)據(jù),產(chǎn)生較大的流量消耗,最終會(huì)讓用戶損失手機(jī)話費(fèi)。
[0004]可見(jiàn),如何驗(yàn)證android手機(jī)應(yīng)用是否被篡改,以防止被惡意篡改過(guò)的android手機(jī)應(yīng)用程序帶來(lái)的安全風(fēng)險(xiǎn),是目前android手機(jī)應(yīng)用亟待解決的一個(gè)重要問(wèn)題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種安卓應(yīng)用程序的安全驗(yàn)證方法及裝置,有效防止被惡意篡改過(guò)的android應(yīng)用程序帶來(lái)的安全風(fēng)險(xiǎn),增強(qiáng)安全性。
[0006]為解決上述技術(shù)問(wèn)題,本發(fā)明提出了一種安卓應(yīng)用程序的安全驗(yàn)證方法,包括:
[0007]步驟一,從簽名后的安卓應(yīng)用程序安裝文件即APK文件中提取出公鑰保存到服務(wù)接入端,將該從簽名后的APK文件中取出的公鑰記為第一公鑰,所述服務(wù)接入端是指安卓應(yīng)用程序的下載端,所述公鑰包含在簽名后的APK文件中,其中,為所述APK文件簽名的簽名文件由開(kāi)發(fā)者生成;
[0008]步驟二,在已簽名安卓應(yīng)用程序初始化時(shí),所述服務(wù)接入端獲取該已簽名安卓應(yīng)用程序的公鑰,將該已簽名安卓應(yīng)用程序的公鑰記為第二公鑰,所述已簽名安卓應(yīng)用程序是指用所述簽名文件簽名后的安卓應(yīng)用程序;
[0009]步驟三,服務(wù)接入端將所述第二公鑰與所述第一公鑰進(jìn)行比較,根據(jù)比較結(jié)果判斷所述已簽名安卓應(yīng)用程序是否安全。
[0010]進(jìn)一步地,上述安卓應(yīng)用程序的安全驗(yàn)證方法還可具有以下特點(diǎn),所述步驟三包括:若所述比較結(jié)果為所述第二公鑰與所述第一公鑰一致,則判定所述已簽名安卓應(yīng)用程序安全,若所述比較結(jié)果為所述第二公鑰與所述第一公鑰不一致,則判定所述已簽名安卓應(yīng)用程序不安全。
[0011]進(jìn)一步地,上述安卓應(yīng)用程序的安全驗(yàn)證方法還可具有以下特點(diǎn),所述步驟三之后還包括步驟四,若判斷結(jié)果為所述已簽名安卓應(yīng)用程序安全,則所述服務(wù)接入端向所述已簽名安卓應(yīng)用程序返回相關(guān)數(shù)據(jù)。
[0012]為解決上述技術(shù)問(wèn)題,本發(fā)明還提出了一種安卓應(yīng)用程序的安全驗(yàn)證裝置,包括順次相連的保存模塊、獲取模塊和驗(yàn)證模塊,其中:
[0013]保存模塊,用于從簽名后的安卓應(yīng)用程序安裝文件即APK文件中提取出公鑰保存到服務(wù)接入端,將該從簽名后的APK文件中取出的公鑰記為第一公鑰,所述服務(wù)接入端是指安卓應(yīng)用程序的下載端,所述公鑰包含在簽名后的APK文件中,其中,為所述APK文件簽名的簽名文件由開(kāi)發(fā)者生成;
[0014]獲取模塊,用于在已簽名安卓應(yīng)用程序初始化時(shí),所述服務(wù)接入端獲取該已簽名安卓應(yīng)用程序的公鑰,將該已簽名安卓應(yīng)用程序的公鑰記為第二公鑰,所述已簽名安卓應(yīng)用程序是指用所述簽名文件簽名后的安卓應(yīng)用程序;
[0015]驗(yàn)證模塊,用于服務(wù)接入端將所述第二公鑰與所述第一公鑰進(jìn)行比較,根據(jù)比較結(jié)果判斷所述已簽名安卓應(yīng)用程序是否安全。
[0016]進(jìn)一步地,上述安卓應(yīng)用程序的安全驗(yàn)證裝置還可具有以下特點(diǎn),所述驗(yàn)證模塊包括:
[0017]第一判定單元,用于在所述比較結(jié)果為所述第二公鑰與所述第一公鑰一致時(shí),判定所述已簽名安卓應(yīng)用程序安全;
[0018]第二判定單元,用于在所述比較結(jié)果為所述第二公鑰與所述第一公鑰不一致時(shí),判定所述已簽名安卓應(yīng)用程序不安全。
[0019]進(jìn)一步地,上述安卓應(yīng)用程序的安全驗(yàn)證裝置還可具有以下特點(diǎn),還包括返回模塊,所述返回模塊與所述驗(yàn)證模塊相連,用于在所述驗(yàn)證模塊的判斷結(jié)果為所述已簽名安卓應(yīng)用程序安全時(shí),向所述已簽名安卓應(yīng)用程序返回相關(guān)數(shù)據(jù)。
[0020]本發(fā)明安卓應(yīng)用程序的安全驗(yàn)證方法及裝置利用反編譯后的APK需要重新打包,而重新打包后的APK簽名必定會(huì)與官方簽名不同這一機(jī)制對(duì)APK進(jìn)行身份驗(yàn)證,通過(guò)在線簽名比對(duì)進(jìn)行身份校驗(yàn),有效的阻止了不法分子通過(guò)仿造APK身份去惡意攻擊平臺(tái)的行為,有效防止被惡意篡改過(guò)的android應(yīng)用程序帶來(lái)的安全風(fēng)險(xiǎn),增強(qiáng)了平臺(tái)的安全性。
【專利附圖】
【附圖說(shuō)明】
[0021]圖1為本發(fā)明實(shí)施例中安卓應(yīng)用程序的安全驗(yàn)證方法的流程圖;
[0022]圖2為本發(fā)明實(shí)施例中安卓應(yīng)用程序的安全驗(yàn)證方法的應(yīng)用示例圖;
[0023]圖3為本發(fā)明實(shí)施例中安卓應(yīng)用程序的安全驗(yàn)證裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0024]以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0025]圖1為本發(fā)明實(shí)施例中安卓應(yīng)用程序的安全驗(yàn)證方法的流程圖。如圖1所示,本實(shí)施例中,安卓應(yīng)用程序的安全驗(yàn)證方法的流程可以包括如下步驟:
[0026]步驟S101,從簽名后的安卓應(yīng)用程序安裝文件即APK文件中提取出公鑰保存到服務(wù)接入端,將該從簽名后的APK文件中取出的公鑰記為第一公鑰,所述服務(wù)接入端是指安卓應(yīng)用程序的下載端,公鑰包含在簽名后的APK文件中,其中,為APK文件簽名的簽名文件由開(kāi)發(fā)者生成;
[0027]這里,簽名文件是指安卓應(yīng)用程序簽名文件。
[0028]步驟S102,在已簽名安卓應(yīng)用程序初始化時(shí),服務(wù)接入端獲取該已簽名安卓應(yīng)用程序的公鑰,將該已簽名安卓應(yīng)用程序的公鑰記為第二公鑰,所述已簽名安卓應(yīng)用程序是指用所述簽名文件簽名后的安卓應(yīng)用程序;
[0029]步驟S103,服務(wù)接入端將第二公鑰與第一公鑰進(jìn)行比較,根據(jù)比較結(jié)果判斷已簽名安卓應(yīng)用程序是否安全。
[0030]具體地,步驟S103中根據(jù)比較結(jié)果判斷已簽名安卓應(yīng)用程序是否安全可以包括:若比較結(jié)果為第二公鑰與所述第一公鑰一致,則判定已簽名安卓應(yīng)用程序安全,也即該已簽名安卓應(yīng)用程序合法,若比較結(jié)果為第二公鑰與第一公鑰不一致,則判定已簽名安卓應(yīng)用程序不安全,也即該已簽名安卓應(yīng)用程序非法。
[0031]在本發(fā)明其他實(shí)施例中,步驟S103之后還可以包括如下步驟:若判斷結(jié)果為已簽名安卓應(yīng)用程序安全,則服務(wù)接入端向已簽名安卓應(yīng)用程序返回相關(guān)數(shù)據(jù)。
[0032]圖2為本發(fā)明實(shí)施例中安卓應(yīng)用程序的安全驗(yàn)證方法的應(yīng)用示例圖。如圖2所示,本實(shí)施例中,安卓應(yīng)用程序的安全驗(yàn)證方法包括如下步驟:
[0033]步驟S201、應(yīng)用開(kāi)發(fā)者生成keystore文件;
[0034]keystore文件即android應(yīng)用程序簽名文件(也即上述的安卓應(yīng)用程序簽名文件)。
[0035]步驟S202、從用keystore文件簽名的APK文件中提取公鑰提交到服務(wù)接入端;
[0036]步驟S203、用生成的keystore文件為android應(yīng)用程序簽名;
[0037]步驟S204、已簽名的android應(yīng)用程序初始化;
[0038]步驟S205、android應(yīng)用程序初始化成功;
[0039]步驟S206、能力調(diào)用,SDK (Software Development Kit,軟件開(kāi)發(fā)工具包)獲得已簽名android應(yīng)用程序的公鑰;
[0040]步驟S207、驗(yàn)證公鑰是否一致;
[0041]即驗(yàn)證從keystore文件中提取并提交到服務(wù)接入端中保存的公鑰與從已簽名android應(yīng)用程序中獲得的公鑰是否一致,若一致則說(shuō)明已簽名android應(yīng)用程序安全,否則說(shuō)明已簽名android應(yīng)用程序不安全。
[0042]步驟S208、若一致則能力調(diào)用返回?cái)?shù)據(jù)。這里,返回的數(shù)據(jù)是指能力調(diào)用的相關(guān)數(shù)據(jù)。
[0043]本發(fā)明安卓應(yīng)用程序的安全驗(yàn)證方法為廣大的Android開(kāi)發(fā)者提供了一種驗(yàn)證應(yīng)用是否被篡改的方案。由于不同的開(kāi)發(fā)者簽名文件是唯一的,所以不同的開(kāi)發(fā)者打包后的APK的簽名也不會(huì)相同。本發(fā)明安卓應(yīng)用程序的安全驗(yàn)證方法利用反編譯后的APK需要重新打包,而重新打包后的APK簽名必定會(huì)與官方簽名不同這一機(jī)制對(duì)APK進(jìn)行身份驗(yàn)證,通過(guò)在線簽名比對(duì)進(jìn)行身份校驗(yàn),有效的阻止了不法分子通過(guò)仿造APK身份去惡意攻擊平臺(tái)的行為,有效防止被惡意篡改過(guò)的android應(yīng)用程序帶來(lái)的安全風(fēng)險(xiǎn),增強(qiáng)了平臺(tái)的安全性。
[0044]本發(fā)明還提出了一種安卓應(yīng)用程序的安全驗(yàn)證裝置,用以執(zhí)行上述的安卓應(yīng)用程序的安全驗(yàn)證方法。
[0045]圖3為本發(fā)明實(shí)施例中安卓應(yīng)用程序的安全驗(yàn)證裝置的結(jié)構(gòu)框圖。如圖3所示,本實(shí)施例中,安卓應(yīng)用程序的安全驗(yàn)證裝置包括順次相連的保存模塊310、獲取模塊320和驗(yàn)證模塊330。其中,保存模塊310用于從簽名后的安卓應(yīng)用程序安裝文件即APK文件中提取出公鑰保存到服務(wù)接入端,將該從簽名后的APK文件中取出的公鑰記為第一公鑰,所述服務(wù)接入端是指安卓應(yīng)用程序的下載端,其中,公鑰包含在簽名后的APK文件中,其中,為APK文件簽名的簽名文件由開(kāi)發(fā)者生成。這里,簽名文件是指安卓應(yīng)用程序簽名文件。獲取模塊320用于在已簽名安卓應(yīng)用程序初始化時(shí),所述服務(wù)接入端獲取該已簽名安卓應(yīng)用程序的公鑰,將該已簽名安卓應(yīng)用程序的公鑰記為第二公鑰,其中,已簽名安卓應(yīng)用程序是指用上述簽名文件簽名后的安卓應(yīng)用程序。驗(yàn)證模塊330用于服務(wù)接入端將所述第二公鑰與所述第一公鑰進(jìn)行比較,根據(jù)比較結(jié)果判斷所述已簽名安卓應(yīng)用程序是否安全。
[0046]在本發(fā)明實(shí)施例中,驗(yàn)證模塊330還可以進(jìn)一步包括第一判定單元和第二判定單元。其中,第一判定單元用于在所述比較結(jié)果為所述第二公鑰與所述第一公鑰一致時(shí),判定所述已簽名安卓應(yīng)用程序安全。第二判定單元用于在所述比較結(jié)果為所述第二公鑰與所述第一公鑰不一致時(shí),判定所述已簽名安卓應(yīng)用程序不安全。
[0047]在本發(fā)明實(shí)施例中,安卓應(yīng)用程序的安全驗(yàn)證裝置還可以進(jìn)一步包括返回模塊。該返回模塊與驗(yàn)證模塊330相連,用于在驗(yàn)證模塊330的判斷結(jié)果為已簽名安卓應(yīng)用程序安全時(shí),向已簽名安卓應(yīng)用程序返回相關(guān)數(shù)據(jù)。
[0048]這里,相關(guān)數(shù)據(jù)是指能力調(diào)用的相關(guān)數(shù)據(jù)。
[0049]本發(fā)明安卓應(yīng)用程序的安全驗(yàn)證裝置利用反編譯后的APK需要重新打包,而重新打包后的APK簽名必定會(huì)與官方簽名不同這一機(jī)制對(duì)APK進(jìn)行身份驗(yàn)證,通過(guò)在線簽名比對(duì)進(jìn)行身份校驗(yàn),有效的阻止了不法分子通過(guò)仿造APK身份去惡意攻擊平臺(tái)的行為,有效防止被惡意篡改過(guò)的android應(yīng)用程序帶來(lái)的安全風(fēng)險(xiǎn),增強(qiáng)了平臺(tái)的安全性。
[0050]以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種安卓應(yīng)用程序的安全驗(yàn)證方法,其特征在于,包括: 步驟一,從簽名后的安卓應(yīng)用程序安裝文件即APK文件中提取出公鑰保存到服務(wù)接入端,將該從簽名后的APK文件中取出的公鑰記為第一公鑰,所述服務(wù)接入端是指安卓應(yīng)用程序的下載端,所述公鑰包含在簽名后的APK文件中,其中,為所述APK文件簽名的簽名文件由開(kāi)發(fā)者生成; 步驟二,在已簽名安卓應(yīng)用程序初始化時(shí),所述服務(wù)接入端獲取該已簽名安卓應(yīng)用程序的公鑰,將該已簽名安卓應(yīng)用程序的公鑰記為第二公鑰,所述已簽名安卓應(yīng)用程序是指用所述簽名文件簽名后的安卓應(yīng)用程序; 步驟三,服務(wù)接入端將所述第二公鑰與所述第一公鑰進(jìn)行比較,根據(jù)比較結(jié)果判斷所述已簽名安卓應(yīng)用程序是否安全。
2.根據(jù)權(quán)利要求1所述的安卓應(yīng)用程序的安全驗(yàn)證方法,其特征在于,所述步驟三包括:若所述比較結(jié)果為所述第二公鑰與所述第一公鑰一致,則判定所述已簽名安卓應(yīng)用程序安全,若所述比較結(jié)果為所述第二公鑰與所述第一公鑰不一致,則判定所述已簽名安卓應(yīng)用程序不安全。
3.根據(jù)權(quán)利要求1所述的安卓應(yīng)用程序的安全驗(yàn)證方法,其特征在于,所述步驟三之后還包括步驟四,若判斷結(jié)果為所述已簽名安卓應(yīng)用程序安全,則所述服務(wù)接入端向所述已簽名安卓應(yīng)用程序返回相關(guān)數(shù)據(jù)。
4.一種安卓應(yīng)用程序的安全驗(yàn)證裝置,其特征在于,包括順次相連的保存模塊、獲取模塊和驗(yàn)證模塊,其中: 保存模塊,用于從簽名后的安卓應(yīng)用程序安裝文件即APK文件中提取出公鑰保存到服務(wù)接入端,將該從簽名后的APK文件中取出的公鑰記為第一公鑰,所述服務(wù)接入端是指安卓應(yīng)用程序的下載端,所述公鑰包含在簽名后的APK文件中,其中,為所述APK文件簽名的簽名文件由開(kāi)發(fā)者生成; 獲取模塊,用于在已簽名安卓應(yīng)用程序初始化時(shí),所述服務(wù)接入端獲取該已簽名安卓應(yīng)用程序的公鑰,將該已簽名安卓應(yīng)用程序的公鑰記為第二公鑰,所述已簽名安卓應(yīng)用程序是指用所述簽名文件簽名后的安卓應(yīng)用程序; 驗(yàn)證模塊,用于服務(wù)接入端將所述第二公鑰與所述第一公鑰進(jìn)行比較,根據(jù)比較結(jié)果判斷所述已簽名安卓應(yīng)用程序是否安全。
5.根據(jù)權(quán)利要求4所述的安卓應(yīng)用程序的安全驗(yàn)證裝置,其特征在于,所述驗(yàn)證模塊包括: 第一判定單元,用于在所述比較結(jié)果為所述第二公鑰與所述第一公鑰一致時(shí),判定所述已簽名安卓應(yīng)用程序安全; 第二判定單元,用于在所述比較結(jié)果為所述第二公鑰與所述第一公鑰不一致時(shí),判定所述已簽名安卓應(yīng)用程序不安全。
6.根據(jù)權(quán)利要求4所述的安卓應(yīng)用程序的安全驗(yàn)證裝置,其特征在于,還包括返回模塊,所述返回模塊與所述驗(yàn)證模塊相連,用于在所述驗(yàn)證模塊的判斷結(jié)果為所述已簽名安卓應(yīng)用程序安全時(shí),向所述已簽名安卓應(yīng)用程序返回相關(guān)數(shù)據(jù)。
【文檔編號(hào)】G06F9/44GK104049973SQ201410291357
【公開(kāi)日】2014年9月17日 申請(qǐng)日期:2014年6月25日 優(yōu)先權(quán)日:2014年6月25日
【發(fā)明者】李首坤, 呂麟, 毛蔚 申請(qǐng)人:北京思特奇信息技術(shù)股份有限公司