一種基于二次簽名驗簽技術的應用程序管控方法
【專利摘要】一種基于簽名驗簽技術的安卓終端應用程序管控方法是通過對安卓終端應用程序進行兩次簽名及兩次驗簽實現。應用程序由可信賴的第三方安全檢測機構進行安全檢測,對于通過檢測的應用程序第三方安全檢測機構會進行簽名,然后將簽名后的應用返還開發者。安卓智能終端安裝應用程序時,首先對其進行安全檢測,看是否經第三方安全檢測機構簽名,并對簽名進行驗證。如果沒有第三方檢測機構簽名或者驗簽不通過,則拒絕安裝。本發明所述技術方案的有益效果在于:通過引入第三方檢測簽名及安卓終端的安全管控模塊固化簽名信息,使得安全的應用程序可以通過多種渠道下載安裝到安卓系統中,保證安卓終端安全的同時,提出了一種靈活、高效的應用程序驗證方案。
【專利說明】一種基于二次簽名驗簽技術的應用程序管控方法
【技術領域】
[0001]本發明涉及安卓技術應用程序領域,更具體的是一種基于簽名驗簽技術的安卓終端應用程序管控方法。
【背景技術】
[0002]安卓(Android)是一種基于Linux的自由及開放源代碼的操作系統,主要使用于智能手機、平板電腦及智能電視等智能終端。
[0003]隨著安卓智能終端的普及和發展,智能終端成為病毒、木馬發展的新渠道,各種類型的安卓安裝包(APK,Android Package)應運而生,其中不乏一些惡意的應用程序,例如有的應用程序會通過網絡或其它方式竊取用戶隱私資料;有的應用程序會在無任何提示、用戶不知情的情況下,強制性地定制付費業務或直接利用智能終端支付某種費用;有的應用程序會不經用戶同意下載某個軟件,或者以“新版本”及其它提示誤導用戶下載某個惡意軟件等等。如果智能終端用戶誤安裝了這些應用程序,將會造成極大的危害。
[0004]據美國安全公司F-Secure在2012年發布的惡意程序統計數據顯示,安卓智能終端是79%的移動惡意程序瞄準的目標。為了避免安卓智能終端受到病毒等惡意程序的侵害,智能終端需要對其上安裝的應用程序進行管控。目前國內外安卓智能終端對于應用程序的管控方法主要有兩種:第一種是以谷歌為代表的智能終端廠商將自己的應用商城視為唯一的可靠源,只能從自家應用商城中下載安裝應用程序,通過其它應用程序商城下載安裝應用程序時,都會被提示“未知源”,根據用戶設置對未知源進行處理;第二種是國內的智能電視廠商目前采用的方式,不允許用戶安裝應用程序,嚴格控制USB等其它接口拷貝應用程序安裝。這些管控方法限制非常多,不靈活,而且易被繞過,隨著安卓技術的發展,弊端越來越明顯。
[0005]由于目前安卓終端應用程序管控方法的局限性,無法在保障安全的前提下全方位滿足用戶需求,需要一種新的更靈活、高效、安全的管控方法。
【發明內容】
[0006]本發明就是針對現有技術的不足,提供的一種基于二次簽名驗簽技術的安卓智能終端應用程序管控方法,使用所述的管控方法能保障安卓終端安全的同時全方位滿足用戶需求,具有較高的更靈活性和高效性。
[0007]—種基于二次簽名驗簽技術的安卓終端應用程序管控方法:
安卓應用程序開發者對應用程序進行第一次簽名,簽名后的應用程序包至少包括META-1NF、res> AndroidManifest.xml、classes, dex、resources, arse 五個目錄文件;
所述應用程序由第三方進行安全測評并在第一次簽名的基礎上進行第二次簽名;所述的第二次簽名是針對除META-1NF外的目錄文件進hash,得到hash值H1,利用簽名算法對Hl簽名得到簽名值SI,同時生成密文文件sign, sig,所述密文文件sign, sig記錄了簽名值SI并存放于META-1NF目錄文件中;同時所述的META-1NF目錄文件內存放info, txt和public, pem兩個文件,所述的info, txt文件記錄版權和簽名信息;所述public, pem文件為公鑰證書文件,所述公鑰證書文件記錄了公鑰Pl ;
在安卓終端的安全管控模塊中設置一不可更改的公鑰證書,所述公鑰證書的公鑰為
P2 ;
安卓終端的安全驗證模塊包含兩次驗簽,分別是開發者簽名的驗簽和第三方簽名的驗簽。首先對開發者的簽名進行驗簽,驗簽通過后再對第三方的簽名進行驗簽。
[0008]所述第二次驗簽的步驟為:安卓終端的安全驗證模塊取出META-1NF目錄文件中的第三方二次簽名形成的公鑰證書public, pem和密文sign, sig兩個文件,若公鑰證書public, pem和密文sign, sig兩個文件不存在,則驗簽失敗;若存在,所述安全驗證模塊從密文sign, sig文件中獲得簽名值SI,從公鑰證書public, pem中獲得公鑰P1,同時從公鑰證書public, pem中獲取摘要計算算法,對除META-1NF外的所有文件進行摘要計算并得到hash值Hl,然后用公鑰Pl對SI進行解密得到hash值H2,比較Hl和H2,如果不同則驗簽失敗,如果相同,則從安卓終端的安全管控模塊中獲取預存的公鑰證書,并從中提取公鑰P2,比較Pl和P2,如果不同則驗簽失敗,如果相同則二次驗簽成功。
[0009]進一步的,所述的第二次簽名使用的簽名算法可以為RSA、ECC、SM2,所述的HASH算法支持sha_l、md5。
[0010]進一步的,所述的應用程序可以從應用商城下載,也可以通過USb接口拷貝安卓終端上。
[0011]進一步的,所述的安卓終端的安全管控模塊中集成了對公鑰證書的更新管理單
J Li ο
[0012]本發明所述技術方案的有益效果在于:通過引入第三方檢測簽名及安卓終端的安全管控模塊固化簽名信息,使得安全的應用程序可以通過多種渠道下載安裝到安卓系統中,保證安卓終端安全的同時,提出了一種靈活、高效的應用程序驗證方案。
【具體實施方式】
[0013]一種基于二次簽名驗簽技術的安卓終端應用程序管控方法:安卓應用程序開發者對應用程序進行第一次簽名,簽名后的應用程序由第三方安全檢測機構進行安全檢測并對通過檢測的應用程序進行二次簽名,然后將簽名后的應用返還開發者或上傳到應用商城。
[0014]安卓智能終端安裝應用程序時,安卓智能終端的安全管控模塊驗證應用程序的簽名與安全管控模塊中存儲的第三方簽名驗證信息進行對比,如安全管控模塊中存儲的第三方簽名驗證信息含有應用程序的簽名,則安卓終端自動安裝應用程序,如安全管控模塊中存儲的第三方簽名驗證信息不含有應用程序的簽名,則安卓終端拒絕安裝或提示用戶是否安裝。
[0015]安卓應用程序開發者對應用程序進行第一次簽名,簽名后的安卓應用程序包至少包括 META_INF、res、AndroidManifest.xml、classes, dex、resources, arse 五個目錄文件;其中所述的META-1NF為Jar文件中常用文件,所述的res文件用于存放資源文件的目錄,所述的AndroidManifest.xml為程序全局配置文件,所述的classes, dex為Dalvik字節碼文件,所述的resources, arse文件為編譯后的二進制資源文件。
[0016]需要特別說明的是:安卓應用程序開發者對應用程序進行簽名后,至少會形成META-1NF、res> AndroidManifest.xml、classes, dex、resources, arse 五個目錄文件,根據應用程序實際開發的需要,通常還會形成其他目錄文件。
[0017]所述安卓應用程序由第三方進行安全測評并在第一次簽名的基礎上進行第二次簽名;
所述的第二次簽名針對除META-1NF外目錄文件進hash,得到hash值Hl,利用簽名算法對Hl簽名得到簽名值SI,同時生成密文文件sign, sig,所述密文文件sign, sig記錄了簽名值SI并存放于META-1NF目錄文件中;同時所述的META-1NF目錄文件內存放info, txt和public, pem兩個文件,所述的info, txt文件記錄版權和簽名信息;所述public, pem文件為公鑰證書文件,所述公鑰證書文件記錄了公鑰P1。
[0018]其中本發明所使用的簽名算法支持RSA、ECC、SM2等,HASH算法支持Sha_l、md5。
[0019]現有的安卓終端通常具有安全驗證模塊和安卓應用程序安裝器,在本發明中,將其定義為安全管控模塊。
[0020]在安卓終端中預裝公鑰證書,以保證其安全不受篡改。雖然在二次簽名過程中,在META-1NF目錄下存放了公鑰證書,但這個公鑰證書和密文可以一起被篡改,所以不能使用這個公鑰證書。因此需要在安卓終端系統里建一個公鑰證書安全存儲區,預裝公鑰證書,以保證該公鑰證書不會被非授權篡改。也就是說實現本發明所述的技術方案,需要在安卓終端的安全管控模塊中設置一不可更改的公鑰證書,所述公鑰證書的公鑰為P2 ;
安卓終端的安全驗證模塊包含兩次驗簽,分別是開發者簽名的驗簽和第三方簽名的驗簽。首先對開發者的簽名進行驗簽,驗簽通過后再對第三方的簽名進行驗簽。
[0021]所述第二次驗簽的步驟為:安卓終端的安全驗證模塊取出META-1NF目錄文件中的第三方二次簽名形成的公鑰證書public, pem和密文sign, sig兩個文件,若公鑰證書public, pem和密文sign, sig兩個文件不存在,則驗簽失敗;若存在,所述安全驗證模塊從密文sign, sig文件中獲得簽名值SI,從公鑰證書public, pem中獲得公鑰P1,同時從公鑰證書public, pem中獲取摘要計算算法,對除META-1NF外的所有文件進行摘要計算并得到hash值Hl,然后用公鑰Pl對SI進行解密得到hash值H2,比較Hl和H2,如果不同則驗簽失敗,如果相同,則從安卓終端的安全管控模塊中獲取預存的公鑰證書,并從中提取公鑰P2,比較Pl和P2,如果不同則驗簽失敗,如果相同則二次驗簽成功。
[0022]若二次驗簽成功,則允許安裝。若不成功,彈出提示框,提示該程序沒有經權威機構簽名或驗簽不成功,存在風險。詢問用戶是否繼續安裝。
【權利要求】
1.一種基于二次簽名驗簽技術的安卓終端應用程序管控方法,通過對安卓終端應用程序進行兩次簽名及兩次驗簽實現;其特征在于: 所述兩次簽名為:安卓應用程序開發者對應用程序進行第一次簽名,簽名后的應用程序包至少包括 META-1NF、res、AndroidManifest.xml、classes, dex、resources, arse 五個目錄文件;然后由第三方對所述簽名后的應用程序進行安全檢測和第二次簽名; 所述的兩次驗簽為:安卓終端的安全驗證模塊包含兩次驗簽,分別是開發者簽名的驗簽和第三方簽名的驗簽,首先對開發者的簽名進行驗簽,驗簽通過后再對第三方的簽名進行驗簽; 所述的第二次簽名是針對除META-1NF外的目錄文件進hash,得到hash值H1,利用簽名算法對Hl簽名得到簽名值SI,同時生成密文文件sign, sig,所述密文文件sign, sig記錄了簽名值SI并存放于META-1NF目錄文件中;同時所述的META-1NF目錄文件內存放info, txt和public, pem兩個文件,所述的info, txt文件記錄版權和簽名信息;所述public, pem文件為公鑰證書文件,所述公鑰證書文件記錄了公鑰Pl ; 在安卓終端的安全管控模塊中設置一不可更改的公鑰證書,所述公鑰證書的公鑰為P2 ; 所述第二次驗簽的步驟為:安卓終端的安全驗證模塊取出META-1NF目錄文件中的第三方二次簽名形成的公鑰證書public, pem和密文sign, sig兩個文件,若公鑰證書public,pem和密文sign, sig兩個文件不存在,則驗簽失敗;若存在,所述安全驗證模塊從密文sign, sig文件中獲得簽名值SI,從公鑰證書public, pem中獲得公鑰Pl,同時從公鑰證書public, pem中獲取摘要計算算法,對除META-1NF外的所有文件進行摘要計算并得到hash值Hl,然后用公鑰Pl對SI進行解密得到hash值H2,比較Hl和H2,如果不同則驗簽失敗,如果相同,則從安卓終端的安全管控模塊中獲取預存的公鑰證書,并從中提取公鑰P2,比較Pl和P2,如果不同則驗簽失敗,如果相同則二次驗簽成功。
2.如權利要求1所述的一種基于二次簽名驗簽技術的安卓終端應用程序管控方法,其特征在于:所述的第二次簽名使用的簽名算法可以為RSA、ECC、SM2,所述的HASH算法支持sha_l、md5。
3.如權利要求1所述的一種基于二次簽名驗簽技術的安卓終端應用程序管控方法,其特征在于:所述的應用程序可以從應用商城下載,也可以通過usb接口拷貝安卓終端上。
4.如權利要求1所述的一種基于二次簽名驗簽技術的安卓終端應用程序管控方法,其特征在于:所述的安卓終端的安全管控模塊中集成了對公鑰證書的更新管理單元。
【文檔編號】G06F9/445GK103886260SQ201410152329
【公開日】2014年6月25日 申請日期:2014年4月16日 優先權日:2014年4月16日
【發明者】張妍, 呂紹勇, 唐靜, 王雅哲 申請人:中國科學院信息工程研究所, 中科信息安全共性技術國家工程研究中心有限公司