一種多方授權(quán)的apk簽名方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種多方授權(quán)的APK簽名方法及系統(tǒng),包括不同終端設(shè)備廠商簽名服務(wù)器用各自的工作私鑰對包括原始APK文件的被簽名數(shù)據(jù)進(jìn)行簽名生成不同終端設(shè)備廠商簽名數(shù)據(jù),將廠商工作公鑰證書放入終端設(shè)備廠商簽名數(shù)據(jù)中或預(yù)裝在終端設(shè)備中;收單機(jī)構(gòu)簽名服務(wù)器將不同終端設(shè)備廠商簽名數(shù)據(jù)按照簽名時(shí)間的先后順序采用DER格式組成已簽名APK文件;已簽名APK文件包括原始APK文件和簽名文件頭,簽名文件頭包括用于標(biāo)識文件已經(jīng)過簽名操作和標(biāo)識終端設(shè)備廠商簽名數(shù)據(jù)的個數(shù)及所述簽名數(shù)據(jù)在已簽名APK文件中的具體位置;終端設(shè)備獲取已簽名APK文件并判斷已簽名APK文件中有對應(yīng)的終端設(shè)備廠商簽名數(shù)據(jù)后定位終端設(shè)備廠商簽名數(shù)據(jù)并驗(yàn)證,驗(yàn)證通過后允許安裝及運(yùn)行。
【專利說明】—種多方授權(quán)的APK簽名方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及APK簽名認(rèn)證領(lǐng)域,尤其涉及一種多方授權(quán)的APK簽名方法及系統(tǒng)。【背景技術(shù)】
[0002]銀行卡(BANK Card)作為支付工具越來越普及,通常的銀行卡支付系統(tǒng)包括銷售點(diǎn)終端(Point Of Sale, POS)、POS收單系統(tǒng)(POSP)、密碼鍵盤(PIN PAD)和硬件加密機(jī)(Hardware and Security Module, HSM)。其中POS終端能夠接受銀行卡信息,具有通訊功能,并接受柜員的指令完成金融交易信息和有關(guān)信息交換的設(shè)備;P0S收單系統(tǒng)對POS終端進(jìn)行集中管理,包括參數(shù)下載,密鑰下載,接受、處理或轉(zhuǎn)發(fā)POS終端的交易請求,并向POS終端回送交易結(jié)果信息,是集中管理和交易處理的系統(tǒng);收單系統(tǒng)中的POS上的程序是由收單機(jī)構(gòu)下載和更新。由于Android系統(tǒng)的通用性,收單機(jī)構(gòu)開始采購Android系統(tǒng)的POS終端設(shè)備。Android系統(tǒng)安裝程序包稱為APK, Android Package的縮寫。
[0003]但由于POS終端設(shè)備廠商很多,每個廠商為提高POS終端設(shè)備的安全性,都會對下載后需要在POS中安裝運(yùn)行的程序進(jìn)行簽名驗(yàn)證,只有合法的簽名的程序才允許安裝或運(yùn)行。并且由于廠商實(shí)現(xiàn)機(jī)制不同,造成原本可以下載安裝到不同廠商Android系統(tǒng)POS終端的APK,簽名后的文件格式都不一致,導(dǎo)致收單機(jī)構(gòu)采購不同廠商的Android系統(tǒng)POS終端設(shè)備,需要同時(shí)維護(hù)不同的簽名工具Android系統(tǒng)和和對同一個APK維護(hù)不同版本的已簽名APK文件,給收單機(jī)構(gòu)帶來繁瑣的維護(hù)工作和極大的維護(hù)成本,因此有必要提出一種APK簽名的方案,降低收單機(jī)構(gòu)的對APK簽名的維護(hù)成本。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種方便收單機(jī)構(gòu)統(tǒng)一管理不同廠商的Android系統(tǒng)終端設(shè)備的簽名,縮減維護(hù)成本的一種多方授權(quán)的APK簽名方法及系統(tǒng)。
[0005]為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采用的一個技術(shù)方案是:
[0006]一種多方授權(quán)的APK簽名方法,包括:
[0007]S1:不同終端設(shè)備廠商CA服務(wù)器各自生成廠商根公私鑰對,將廠商根公鑰生成廠商根公鑰證書;不同終端設(shè)備廠商簽名服務(wù)器各自生成廠商工作公私鑰對,將工作公鑰分發(fā)至各自的廠商CA服務(wù)器,廠商CA服務(wù)器使用廠商根私鑰對廠商工作公鑰簽名生成廠商工作公鑰證書;
[0008]S2:不同終端設(shè)備廠商簽名服務(wù)器使用各自的廠商工作私鑰對包括原始APK文件的被簽名數(shù)據(jù)簽名生成不同終端設(shè)備廠商簽名數(shù)據(jù),根據(jù)不同終端設(shè)備廠商的驗(yàn)簽機(jī)制將各自的廠商工作公鑰證書放入各自生成的廠商簽名數(shù)據(jù)中或預(yù)裝在終端設(shè)備中;不同終端設(shè)備廠商將各自的廠商根公鑰證書預(yù)裝在各自的終端設(shè)備中;
[0009]S3:收單機(jī)構(gòu)簽名服務(wù)器將不同終端設(shè)備廠商簽名服務(wù)器生成的不同廠商簽名數(shù)據(jù)按照簽名時(shí)間的先后順序采用DER格式組成已簽名APK文件;其中,所述已簽名APK文件包括原始APK文件和簽名文件頭,所述簽名文件頭包括基礎(chǔ)文件和擴(kuò)展文件,所述基礎(chǔ)文件用于標(biāo)識文件已經(jīng)過簽名操作;所述擴(kuò)展文件用于標(biāo)識不同終端設(shè)備各自的廠商簽名數(shù)據(jù)的個數(shù)及不同終端設(shè)備各自的廠商簽名數(shù)據(jù)在已簽名APK文件中的具體位置;
[0010]S4:終端設(shè)備從所述收單機(jī)構(gòu)簽名服務(wù)器獲取已簽名APK文件,判斷已簽名APK文件中是否有與所述終端設(shè)備對應(yīng)的終端設(shè)備廠商生成的廠商簽名數(shù)據(jù),當(dāng)判定有對應(yīng)的廠商簽名數(shù)據(jù)后,終端設(shè)備通過所述已簽名APK文件的文件頭定位所述廠商簽名數(shù)據(jù);
[0011]S5:終端設(shè)備獲取廠商根公鑰證書后使用廠商根公鑰證書驗(yàn)證廠商簽名數(shù)據(jù)中廠商工作公鑰證書的合法性,驗(yàn)證合法后終端設(shè)備提取廠商工作公鑰證書中的工作公鑰驗(yàn)證簽名數(shù)據(jù),驗(yàn)證通過后允許安裝或運(yùn)行。
[0012]本發(fā)明提供的另一種技術(shù)方案為:
[0013]一種多方授權(quán)的APK簽名系統(tǒng),其特征在于,包括終端設(shè)備廠商服務(wù)器、收單機(jī)構(gòu)服務(wù)器和終端設(shè)備服務(wù)器;
[0014]所述終端設(shè)備廠商服務(wù)器包括第一生成模塊、第二生成模塊和第一簽名模塊;
[0015]所述第一生成模塊,用于不同終端設(shè)備廠商CA服務(wù)器各自生成廠商根公私鑰對,將廠商根公鑰生成廠商根公鑰證書和使用廠商根私鑰對廠商工作公鑰簽名生成廠商工作公鑰證書;
[0016]所述第二生成模塊,用于不同終端設(shè)備廠商簽名服務(wù)器各自生成廠商工作公私鑰對,將工作公鑰分發(fā)至各自的廠商CA服務(wù)器;
[0017]所述第一簽名模塊,用于不同終端設(shè)備廠商簽名服務(wù)器使用各自的廠商工作私鑰對包括原始APK文件的被簽名數(shù)據(jù)簽名生成不同終端設(shè)備廠商簽名數(shù)據(jù),根據(jù)不同終端設(shè)備廠商的驗(yàn)簽機(jī)制將各自的廠商工作公鑰證書放入各自生成的廠商簽名數(shù)據(jù)中或預(yù)裝在終端設(shè)備中;不同終端設(shè)備廠商將各自的廠商根公鑰證書預(yù)裝在各自的終端設(shè)備中;
[0018]所述收單機(jī)構(gòu)服務(wù)器包括第二簽名模塊;
[0019]所述第二簽名模塊,用于收單機(jī)構(gòu)簽名服務(wù)器將不同終端設(shè)備廠商簽名服務(wù)器生成的不同廠商簽名數(shù)據(jù)按照簽名時(shí)間的先后順序采用DER格式組成已簽名APK文件;其中,所述已簽名APK文件包括原始APK文件和簽名文件頭,所述簽名文件頭包括基礎(chǔ)文件和擴(kuò)展文件,所述基礎(chǔ)文件用于標(biāo)識文件已經(jīng)過簽名操作;所述擴(kuò)展文件用于標(biāo)識不同終端設(shè)備各自的廠商簽名數(shù)據(jù)的個數(shù)及不同終端設(shè)備各自的廠商簽名數(shù)據(jù)在已簽名APK文件中的具體位置;
[0020]所述終端設(shè)備服務(wù)器包括第一判斷模塊、定位模塊、第一驗(yàn)證模塊和第二驗(yàn)證模塊;
[0021]所述第一判斷模塊,用于終端設(shè)備從所述收單機(jī)構(gòu)簽名服務(wù)器獲取已簽名APK文件,判斷已簽名APK文件中是否有與所述終端設(shè)備對應(yīng)的終端設(shè)備廠商生成的廠商簽名數(shù)據(jù);
[0022]所述定位模塊,用于終端設(shè)備判定有對應(yīng)的廠商簽名數(shù)據(jù)后通過所述已簽名APK文件的文件頭定位所述廠商簽名數(shù)據(jù);
[0023]所述第一驗(yàn)證模塊,用于終端設(shè)備使用廠商根公鑰證書驗(yàn)證廠商簽名數(shù)據(jù)中廠商工作公鑰證書的合法性;
[0024]所述第二驗(yàn)證模塊,用于終端設(shè)備成功驗(yàn)證廠商工作公鑰證書的合法性后,終端設(shè)備提取廠商工作公鑰證書中的工作公鑰驗(yàn)證簽名數(shù)據(jù),驗(yàn)證通過后允許安裝或運(yùn)行。[0025]本發(fā)明的有益效果在于:本發(fā)明的一種多方授權(quán)的APK簽名方法及系統(tǒng),通過不同終端設(shè)備的簽名服務(wù)器對包括APK文件的被簽名數(shù)據(jù)各自進(jìn)行簽名操作生成各自的簽名數(shù)據(jù)后由收單機(jī)構(gòu)按順序采用DER格式組成已簽名APK文件,已簽名APK文件中包括用于識別已接受過簽名操作的終端設(shè)備和各終端設(shè)備廠商簽名數(shù)據(jù)的個數(shù)及在已簽名APK文件所在位置的文件頭,用于不同終端設(shè)備在獲取已簽名APK文件后提取自身終端設(shè)備需要進(jìn)行驗(yàn)簽的對應(yīng)簽名數(shù)據(jù)進(jìn)行驗(yàn)證合法性,驗(yàn)證通過后方可進(jìn)行APK的安裝或運(yùn)行。
[0026]通過本發(fā)明,實(shí)現(xiàn)了終端設(shè)備在下載所需APK的過程中,只需識別有經(jīng)過自身終端設(shè)備簽名過的已簽名APK文件,并在定位自身終端設(shè)備的簽名數(shù)據(jù)后運(yùn)用自身的驗(yàn)簽機(jī)制進(jìn)行驗(yàn)證合法性,驗(yàn)證通過后便可允許APK安裝或運(yùn)行。本發(fā)明即保證簽名后APK在傳輸過程后的完整性和合法性,又能實(shí)現(xiàn)不同廠商的終端設(shè)備只需維護(hù)自身的簽名驗(yàn)簽機(jī)制,大大縮減了客戶的維護(hù)成本。
【專利附圖】
【附圖說明】
[0027]圖1為本發(fā)明一種多方授權(quán)的APK簽名方法的流程框圖;
[0028]圖2為本發(fā)明一種多方授權(quán)的APK簽名方法中步驟5的具體流程框圖;
[0029]圖3為本發(fā)明一種多方授權(quán)的APK簽名系統(tǒng)的組成框圖;
[0030]圖4為本發(fā)明一種多方授權(quán)的APK簽名系統(tǒng)中收單機(jī)構(gòu)服務(wù)器的組成框圖;
[0031]圖5為本發(fā)明一種多方授權(quán)的APK簽名系統(tǒng)中第一驗(yàn)證模塊的組成框圖;
[0032]圖6為本發(fā)明一種多方授權(quán)的APK簽名系統(tǒng)中第二驗(yàn)證模塊的組成框圖。
[0033]主要組成符號說明:
[0034]終端設(shè)備廠商服務(wù)器I ;收單機(jī)構(gòu)服務(wù)器2 ;終端設(shè)備服務(wù)器3
[0035]第一生成模塊010;第二生成模塊011;第一簽名模塊012 ;
[0036]第二簽名模塊020 ;第一判斷模塊030 ;定位模塊031 ;
[0037]第一驗(yàn)證模塊032;第二驗(yàn)證模塊033;第三簽名模塊021 ;
[0038]寫入模塊022 ;第二判斷模塊023 ;第二判斷單元0321 ;
[0039]第三判斷單元0322;第一運(yùn)算單元0331;第三判斷單元0332。
【具體實(shí)施方式】
[0040]不同廠商的終端設(shè)備對被簽名數(shù)據(jù)各自進(jìn)行簽名操作后生成廠商簽名數(shù)據(jù),之后將廠商簽名數(shù)據(jù)發(fā)給收單機(jī)構(gòu)簽名服務(wù)器,由收單機(jī)構(gòu)簽名服務(wù)器采用DER格式組成已簽名APK文件,廠商的終端設(shè)備安裝或運(yùn)行已簽名APK文件時(shí),定位獲取終端設(shè)備對應(yīng)的廠商簽名數(shù)據(jù)進(jìn)行驗(yàn)簽,驗(yàn)簽通過后安裝或運(yùn)行APK文件,本發(fā)明采用方便擴(kuò)展的DER格式編碼存放不同廠商簽名數(shù)據(jù),終端設(shè)備僅需獲取并驗(yàn)簽自身對應(yīng)的廠商簽名的數(shù)據(jù),實(shí)現(xiàn)針對不同廠商驗(yàn)簽機(jī)制的Android終端設(shè)備,只需維護(hù)一套簽名實(shí)現(xiàn)機(jī)制,減免收單機(jī)構(gòu)需要同時(shí)維護(hù)不同終端設(shè)備廠商不同的簽名驗(yàn)簽機(jī)制的成本。
[0041]為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、構(gòu)造特征、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖詳予說明。
[0042]請參閱圖1為本發(fā)明一種多方授權(quán)的APK簽名方法的流程框圖。
[0043] 本方案所述一種多方授權(quán)的APK簽名方法,包括:[0044]S1:不同終端設(shè)備廠商CA服務(wù)器各自生成廠商根公私鑰對,將廠商根公鑰生成廠商根公鑰證書;不同終端設(shè)備廠商簽名服務(wù)器各自生成廠商工作公私鑰對,將工作公鑰分發(fā)至各自的廠商CA服務(wù)器,廠商CA服務(wù)器使用廠商根私鑰對廠商工作公鑰簽名生成廠商工作公鑰證書;
[0045]S2:不同終端設(shè)備廠商簽名服務(wù)器使用各自的廠商工作私鑰對包括原始APK文件的被簽名數(shù)據(jù)簽名生成不同終端設(shè)備廠商簽名數(shù)據(jù),根據(jù)不同終端設(shè)備廠商的驗(yàn)簽機(jī)制將各自的廠商工作公鑰證書放入各自生成的廠商簽名數(shù)據(jù)中或預(yù)裝在終端設(shè)備中;不同終端設(shè)備廠商將各自的廠商根公鑰證書預(yù)裝在各自的終端設(shè)備中;
[0046]S3:收單機(jī)構(gòu)簽名服務(wù)器將不同終端設(shè)備廠商簽名服務(wù)器生成的不同廠商簽名數(shù)據(jù)按照簽名時(shí)間的先后順序采用DER格式組成已簽名APK文件;其中,所述已簽名APK文件包括原始APK文件和簽名文件頭,所述簽名文件頭包括基礎(chǔ)文件和擴(kuò)展文件,所述基礎(chǔ)文件用于標(biāo)識文件已經(jīng)過簽名操作;所述擴(kuò)展文件用于標(biāo)識不同終端設(shè)備各自的廠商簽名數(shù)據(jù)的個數(shù)及不同終端設(shè)備各自的廠商簽名數(shù)據(jù)在已簽名APK文件中的具體位置;
[0047]S4:終端設(shè)備從所述收單機(jī)構(gòu)簽名服務(wù)器獲取已簽名APK文件,判斷已簽名APK文件中是否有與所述終端設(shè)備對應(yīng)的終端設(shè)備廠商生成的廠商簽名數(shù)據(jù),當(dāng)判定有對應(yīng)的廠商簽名數(shù)據(jù)后,終端設(shè)備通過所述已簽名APK文件的文件頭定位所述廠商簽名數(shù)據(jù);
[0048]S5:終端設(shè)備獲取廠商根公鑰證書后使用廠商根公鑰證書驗(yàn)證廠商簽名數(shù)據(jù)中廠商工作公鑰證書的合法性,驗(yàn)證合法后終端設(shè)備提取廠商工作公鑰證書中的工作公鑰驗(yàn)證簽名數(shù)據(jù),驗(yàn)證通過后允許安裝或運(yùn)行。
[0049]本方案采用DER格式編碼不同廠商的終端設(shè)備進(jìn)行各自簽名操作后的簽名數(shù)據(jù),并按照簽名的時(shí)間順序進(jìn)行排序,采用DER格式進(jìn)行編碼方便進(jìn)行擴(kuò)展,能很好的容納不同終端設(shè)備廠商的廠商簽名數(shù)據(jù),且各自獨(dú)立。本方案所述簽名文件頭標(biāo)識了已簽名APK文件的類型和經(jīng)過不同廠商簽名后數(shù)據(jù)的偏移和偏移的長度,用于在下載到不同廠商的終端設(shè)備后由判斷是否有經(jīng)過自身終端設(shè)備簽名操作過的簽名數(shù)據(jù);簽名文件頭還用于定位簽名數(shù)據(jù)在已簽名APK文件已簽名APK文件中的具體位置,方便不同廠商的終端設(shè)備獲取各自的簽名數(shù)據(jù)進(jìn)行各自的驗(yàn)簽。在進(jìn)行不同廠商的終端設(shè)備各自的簽名操作過程中,不同的廠商會根據(jù)自身的需要,將各自的廠商工作公鑰證書放入各自生成的廠商簽名數(shù)據(jù)中或預(yù)裝在終端設(shè)備中,在后續(xù)終端設(shè)備進(jìn)行驗(yàn)簽時(shí),預(yù)裝在廠商的終端設(shè)備中的廠商工作公鑰無需再驗(yàn)證合法性,直接用于驗(yàn)簽,而存放在終端設(shè)備廠商簽名數(shù)據(jù)中的廠商工作公鑰證書需要用預(yù)裝的廠商根公鑰證書驗(yàn)證其合法性,通過驗(yàn)證后才能繼續(xù)后續(xù)的驗(yàn)證步驟,否則判定簽名數(shù)據(jù)不合法。
[0050]本方案實(shí)現(xiàn)了終端設(shè)備在下載APK文件時(shí),只需在識別到已簽名APK文件中有經(jīng)過自身終端設(shè)備簽名過的簽名數(shù)據(jù)后定位獲取對應(yīng)簽名數(shù)據(jù),運(yùn)用自身的驗(yàn)簽機(jī)制進(jìn)行驗(yàn)證合法性,通過驗(yàn)證后便可運(yùn)行APK安裝或運(yùn)行的方法,通過本方案不僅能快速驗(yàn)證簽名后的APK在經(jīng)過傳輸后的完整性和合法性,又能實(shí)現(xiàn)購買不同廠商終端設(shè)備的客戶不再需要同時(shí)維護(hù)多個不同廠商的終端設(shè)備不同的簽名驗(yàn)簽機(jī)制,大大的縮減客戶的維護(hù)成本。
[0051]實(shí)施方式一:
[0052]在上述方案的基礎(chǔ)上,本實(shí)施方式還包括步驟SI之前包括以下步驟:
[0053]收單機(jī)構(gòu)簽名服務(wù)器將原始APK文件尾填充0x00四字節(jié)補(bǔ)齊,確保原始APK文件尾以O(shè)xOO結(jié)尾后作為被簽名數(shù)據(jù);
[0054]步驟S3還包括:
[0055]S31:收單機(jī)構(gòu)簽名服務(wù)器將被簽名數(shù)據(jù)的標(biāo)識、版本和原始APK文件的長度及校驗(yàn)值與入所述基礎(chǔ)文件中;
[0056]步驟S4中所述“判斷已簽名APK文件中是否有與所述終端設(shè)備對應(yīng)的終端設(shè)備廠商簽名數(shù)據(jù)”具體為:
[0057]根據(jù)已簽名APK文件中簽名文件頭的基礎(chǔ)文件中不同被簽名數(shù)據(jù)的標(biāo)識、版本判斷是否有屬于自身終端設(shè)備的簽名數(shù)據(jù)。
[0058]本實(shí)施方式在實(shí)現(xiàn)不同廠商的終端設(shè)備各自進(jìn)行驗(yàn)簽獲取APK的同時(shí),具體的執(zhí)行步驟還包括在步驟SI之前收單機(jī)構(gòu)的簽名服務(wù)器將原始APK文件進(jìn)行四字節(jié)對其,不足位用0x00填充,并在末尾補(bǔ)4個0x00以確保被原始文件APK的末尾為0x00,方便后續(xù)進(jìn)行編碼。在步驟S2還包括收單機(jī)構(gòu)簽名服務(wù)器將被簽名數(shù)據(jù)的標(biāo)識、版本和原始APK文件的長度及校驗(yàn)值寫入所述基礎(chǔ)文件中,用于步驟S3中下載到不同的終端設(shè)備中時(shí)終端設(shè)備通過基礎(chǔ)文件中的被簽名數(shù)據(jù)的標(biāo)識、版本和校驗(yàn)值進(jìn)行判斷是否經(jīng)過自身終端設(shè)備的簽名操作。
[0059]實(shí)施方式二:
[0060]在上述方案的基礎(chǔ)上,本實(shí)施方式還包括步驟SI中所述“不同終端設(shè)備廠商簽名服務(wù)器使用各自的廠商工作私鑰對包括原始APK文件的被簽名數(shù)據(jù)簽名生成不同終端設(shè)備廠商簽名數(shù)據(jù)”具體包括:
[0061]不同終端設(shè)備廠商簽名服務(wù)器將包括原始APK文件的被簽名數(shù)據(jù)計(jì)算哈希得到哈希值HASHl ;將哈希值HASHl按照一定簽名填充方式進(jìn)行填充后得到被簽名APK文件;將被簽名APK文件使用終端設(shè)備廠商簽名服務(wù)器各自的工作私鑰進(jìn)行簽名操作生成不同終端設(shè)備廠商簽名數(shù)據(jù)。
[0062]本實(shí)施方式實(shí)現(xiàn)不同廠商的終端設(shè)備各自進(jìn)行驗(yàn)簽獲取APK的同時(shí),還包括具體的不同終端設(shè)備廠商簽名服務(wù)器用各自的工作私鑰對包括原始APK文件的被簽名數(shù)據(jù)進(jìn)行簽名生成不同終端設(shè)備廠商簽名數(shù)據(jù)的具體過程,通過對被簽名數(shù)據(jù)進(jìn)行計(jì)算哈希得到哈希值HASHl,并將哈希值HASHl按照PKCS#1_V1.5的簽名填充方式進(jìn)行填充,得到被簽名文件,并將被簽名文件使用私鑰進(jìn)行簽名操作生成終端設(shè)備廠商簽名數(shù)據(jù),加入到采用DER方式編碼的已簽名APK文件中,同時(shí)修改已簽名APK文件的文件頭,將當(dāng)前新增加的廠商終端設(shè)備廠商簽名數(shù)據(jù)的偏移和長度添加進(jìn)文件頭的對應(yīng)擴(kuò)展域中。按照該方式將不同的廠商終端設(shè)備簽名后的簽名數(shù)據(jù)按照DER編碼格式進(jìn)行排放,方便擴(kuò)展數(shù)據(jù)的同時(shí)便于驗(yàn)簽時(shí)獲取不同廠商終端設(shè)備相應(yīng)的簽名數(shù)據(jù)。
[0063]請參閱圖2,為本發(fā)明一種多方授權(quán)的APK簽名方法中步驟5的具體流程框圖。
[0064]實(shí)施方式三:
[0065]在上述方案的基礎(chǔ)上,本實(shí)施方式還包括在步驟S5中具體包括:
[0066]S51:判斷廠商工作公鑰證書是否預(yù)裝在終端設(shè)備中,若是,獲取廠商工作公鑰證書,并進(jìn)入步驟S53 ;若否,通過所述已簽名APK文件的文件頭定位并獲取設(shè)備終端對應(yīng)的廠商簽名數(shù)據(jù);
[0067]S52:獲取廠商簽名數(shù)據(jù)中的廠商工作公鑰證書;終端設(shè)備使用預(yù)裝的廠商根公鑰證書驗(yàn)證廠商簽名數(shù)據(jù)中廠商工作公鑰證書的合法性,驗(yàn)證通過后進(jìn)入步驟S53 ;
[0068]S53:終端設(shè)備提取廠商工作公鑰證書中的工作公鑰驗(yàn)證簽名數(shù)據(jù)并計(jì)算哈希,得到哈希值HASH2 ;判斷哈希值HASHl和哈希值HASH2是否一致,若是,則判定已簽名APK文件合法,允許APK安裝;若否,則判定已簽名APK文件不合法,不允許APK安裝。
[0069]本實(shí)施方式具體的包括在判斷有經(jīng)過自身終端設(shè)備簽名操作后的簽名文件后進(jìn)行獲取合法工作公鑰的步驟,具體的,先判斷設(shè)備終端中是否有預(yù)裝的合法工作公鑰,若有,便直接獲取合法的工作公鑰進(jìn)入定位獲取簽名數(shù)據(jù)步驟進(jìn)行解密簽名數(shù)據(jù);若否,則從獲取的簽名數(shù)據(jù)中提取終端設(shè)備工作公鑰證書,并使用預(yù)裝在終端設(shè)備的廠商根公鑰證書驗(yàn)證終端設(shè)備工作公鑰證書的合法性,驗(yàn)證通過后再利用工作公鑰證書中的公鑰解密簽名數(shù)據(jù)。通過再次對獲取到的簽名數(shù)據(jù)進(jìn)行計(jì)算哈希得到哈希值HASH2,對比簽名數(shù)據(jù)在進(jìn)行傳輸之前的哈希值HASHl判斷簽名數(shù)據(jù)的合法性和完整性,確保簽名文件在傳輸過程中未經(jīng)篡改。
[0070]請參閱圖3為本發(fā)明一種多方授權(quán)的APK簽名系統(tǒng)的組成框圖。
[0071]本發(fā)明采用的另一個技術(shù)方案為:
[0072]—種多方授權(quán)的APK簽名系統(tǒng),包括終端設(shè)備廠商服務(wù)器1、收單機(jī)構(gòu)服務(wù)器2和終端設(shè)備服務(wù)器3 ;
[0073]所述終端設(shè)備廠商服務(wù)器I包括第一生成模塊010、第二生成模塊011和第一簽名模塊012 ;
[0074]所述第一生成模塊010,用于不同終端設(shè)備廠商CA服務(wù)器各自生成廠商根公私鑰對,將廠商根公鑰生成廠商根公鑰證書和使用廠商根私鑰對廠商工作公鑰簽名生成廠商工作公鑰證書;
[0075]所述第二生成模塊011,用于不同終端設(shè)備廠商簽名服務(wù)器各自生成廠商工作公私鑰對,將工作公鑰分發(fā)至各自的廠商CA服務(wù)器;
[0076]所述第一簽名模塊012,用于不同終端設(shè)備廠商簽名服務(wù)器使用各自的廠商工作私鑰對包括原始APK文件的被簽名數(shù)據(jù)簽名生成不同終端設(shè)備廠商簽名數(shù)據(jù),根據(jù)不同終端設(shè)備廠商的驗(yàn)簽機(jī)制將各自的廠商工作公鑰證書放入各自生成的廠商簽名數(shù)據(jù)中或預(yù)裝在終端設(shè)備中;不同終端設(shè)備廠商將各自的廠商根公鑰證書預(yù)裝在各自的終端設(shè)備中;
[0077]所述收單機(jī)構(gòu)服務(wù)器2包括第二簽名模塊020 ;
[0078]所述第二簽名模塊020,用于收單機(jī)構(gòu)簽名服務(wù)器將不同終端設(shè)備廠商簽名服務(wù)器生成的不同廠商簽名數(shù)據(jù)按照簽名時(shí)間的先后順序采用DER格式組成已簽名APK文件;其中,所述已簽名APK文件包括原始APK文件和簽名文件頭,所述簽名文件頭包括基礎(chǔ)文件和擴(kuò)展文件,所述基礎(chǔ)文件用于標(biāo)識文件已經(jīng)過簽名操作;所述擴(kuò)展文件用于標(biāo)識不同終端設(shè)備各自的廠商簽名數(shù)據(jù)的個數(shù)及不同終端設(shè)備各自的廠商簽名數(shù)據(jù)在已簽名APK文件中的具體位置;
[0079]所述終端設(shè)備服務(wù)器3包括第一判斷模塊030、定位模塊031、第一驗(yàn)證模塊032和第二驗(yàn)證模塊033 ;
[0080]所述第一判斷模塊030,用于終端設(shè)備從所述收單機(jī)構(gòu)簽名服務(wù)器獲取已簽名APK文件,判斷已簽名APK文件中是否有與所述終端設(shè)備對應(yīng)的終端設(shè)備廠商生成的廠商簽名數(shù)據(jù);[0081]所述定位模塊031,用于終端設(shè)備判定有對應(yīng)的廠商簽名數(shù)據(jù)后通過所述已簽名APK文件的文件頭定位所述廠商簽名數(shù)據(jù);
[0082]所述第一驗(yàn)證模塊032,用于終端設(shè)備使用廠商根公鑰證書驗(yàn)證廠商簽名數(shù)據(jù)中廠商工作公鑰證書的合法性;
[0083]所述第二驗(yàn)證模塊033,用于終端設(shè)備成功驗(yàn)證廠商工作公鑰證書的合法性后,終端設(shè)備提取廠商工作公鑰證書中的工作公鑰驗(yàn)證簽名數(shù)據(jù),驗(yàn)證通過后允許安裝或運(yùn)行。
[0084]請參閱圖4,為本發(fā)明一種多方授權(quán)的APK簽名系統(tǒng)中收單機(jī)構(gòu)服務(wù)器2的組成框圖。
[0085]實(shí)施方式四:
[0086]在上述方案的基礎(chǔ)上,本實(shí)施方式所述收單機(jī)構(gòu)還包括第三簽名模塊021、寫入模塊022和第二判斷模塊023 ;
[0087]所述第三簽名模塊021,用于收單機(jī)構(gòu)簽名服務(wù)器將原始APK文件尾填充0x00四字節(jié)補(bǔ)齊,確保原始APK文件尾以0x00結(jié)尾后作為被簽名數(shù)據(jù);
[0088]所述寫入模塊022,用于收單機(jī)構(gòu)簽名服務(wù)器將被簽名數(shù)據(jù)的標(biāo)識、版本和原始APK文件的長度及校驗(yàn)值寫入所述基礎(chǔ)文件中;
[0089]所述第二判斷模塊023,用于收單機(jī)構(gòu)簽名服務(wù)器判斷是否還有不同的終端設(shè)備廠商需要進(jìn)行簽名操作,若是,則不同終端設(shè)備廠商調(diào)用各自的廠商簽名服務(wù)器進(jìn)行簽名操作,修改所述簽名文件頭;若否,則結(jié)束。
[0090]本實(shí)施方式中所述修改所述簽名文件頭具體包括修改文件頭中基礎(chǔ)文件中的文件體長度、擴(kuò)展文件中加入新的終端設(shè)備廠商簽名操作后的簽名數(shù)據(jù)內(nèi)容。
[0091]實(shí)施方式五:
[0092]在上述方案的基礎(chǔ)上,本實(shí)施方式所述第一簽名模塊012包括簽名單元;
[0093]所述簽名單元,用于不同終端設(shè)備廠商簽名服務(wù)器將包括原始APK文件的被簽名數(shù)據(jù)計(jì)算哈希得到哈希值HASHl ;將哈希值HASHl按照一定簽名填充方式進(jìn)行填充后得到被簽名APK文件;將被簽名APK文件使用終端設(shè)備廠商簽名服務(wù)器各自的工作私鑰進(jìn)行簽名操作生成不同終端設(shè)備廠商簽名數(shù)據(jù)。
[0094]請參閱圖5-圖6,分別為本發(fā)明一種多方授權(quán)的APK簽名系統(tǒng)中第一驗(yàn)證模塊032的組成框圖和本發(fā)明一種多方授權(quán)的APK簽名系統(tǒng)中第二驗(yàn)證模塊033的組成框圖。
[0095]實(shí)施方式六:
[0096]在上述方案的基礎(chǔ)上,本實(shí)施方式所述第一驗(yàn)證模塊032包括第二判斷單元0321和第三驗(yàn)證單元;所述第二驗(yàn)證模塊033包括第一運(yùn)算單元0331和第三判斷單元03320322 ;
[0097]所述第二判斷單元0321,用于判斷廠商工作公鑰證書是否預(yù)裝在終端設(shè)備中,若是,獲取廠商工作公鑰證書;若否,通過所述已簽名APK文件的文件頭定位并獲取設(shè)備終端對應(yīng)的廠商簽名數(shù)據(jù);
[0098]所述第三驗(yàn)證單元,用于終端設(shè)備獲取廠商簽名數(shù)據(jù)中的廠商工作公鑰證書;終端設(shè)備使用預(yù)裝的廠商根公鑰證書驗(yàn)證廠商簽名數(shù)據(jù)中廠商工作公鑰證書的合法性;
[0099]所述第一運(yùn)算單元0331,用于終端設(shè)備提取廠商工作公鑰證書中的工作公鑰驗(yàn)證簽名數(shù)據(jù)并計(jì)算哈希,得到哈希值HASH2 ;[0100]所述第三判斷單元03320322,用于終端設(shè)備判斷哈希值HASHl和哈希值HASH2是否一致,若是,則判定已簽名APK文件合法,允許APK安裝;若否,則判定已簽名APK文件不合法,不允許APK安裝。
[0101]本發(fā)明提供的一種多方授權(quán)的APK簽名方法及其系統(tǒng),采用方便擴(kuò)展的DER編碼不同終端設(shè)備廠商經(jīng)過各自簽名操作后生成的廠商簽名數(shù)據(jù),不同終端設(shè)備在下載所需APK的過程中,只需識別有經(jīng)過自身終端設(shè)備簽名過的簽名文件,并在定位自身終端設(shè)備的簽名數(shù)據(jù)后運(yùn)用自身的驗(yàn)簽機(jī)制進(jìn)行驗(yàn)證合法性,驗(yàn)證通過后便可允許APK安裝或運(yùn)行。本發(fā)明即確保簽名后的APK經(jīng)過傳輸后的完整性合法性,又省去了以往需費(fèi)時(shí)同時(shí)驗(yàn)簽多家廠商終端設(shè)備的疊加簽名后的簽名數(shù)據(jù),進(jìn)一步的,大大縮減了客戶的維護(hù)成本,客戶只需維護(hù)廠商終端設(shè)備自身的簽名驗(yàn)簽機(jī)制。
[0102]以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的【技術(shù)領(lǐng)域】,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種多方授權(quán)的APK簽名方法,其特征在于,包括: 51:不同終端設(shè)備廠商CA服務(wù)器各自生成廠商根公私鑰對,將廠商根公鑰生成廠商根公鑰證書;不同終端設(shè)備廠商簽名服務(wù)器各自生成廠商工作公私鑰對,將工作公鑰分發(fā)至各自的廠商CA服務(wù)器,廠商CA服務(wù)器使用廠商根私鑰對廠商工作公鑰簽名生成廠商工作公鑰證書; 52:不同終端設(shè)備廠商簽名服務(wù)器使用各自的廠商工作私鑰對包括原始APK文件的被簽名數(shù)據(jù)簽名生成不同終端設(shè)備廠商簽名數(shù)據(jù),根據(jù)不同終端設(shè)備廠商的驗(yàn)簽機(jī)制將各自的廠商工作公鑰證書放入各自生成的廠商簽名數(shù)據(jù)中或預(yù)裝在終端設(shè)備中;不同終端設(shè)備廠商將各自的廠商根公鑰證書預(yù)裝在各自的終端設(shè)備中; S3:收單機(jī)構(gòu)簽名服務(wù)器將不同終端設(shè)備廠商簽名服務(wù)器生成的不同廠商簽名數(shù)據(jù)按照簽名時(shí)間的先后順序采用DER格式組成已簽名APK文件;其中,所述已簽名APK文件包括原始APK文件和簽名文件頭,所述簽名文件頭包括基礎(chǔ)文件和擴(kuò)展文件,所述基礎(chǔ)文件用于標(biāo)識文件已經(jīng)過簽名操作;所述擴(kuò)展文件用于標(biāo)識不同終端設(shè)備各自的廠商簽名數(shù)據(jù)的個數(shù)及不同終端設(shè)備各自的廠商簽名 數(shù)據(jù)在已簽名APK文件中的具體位置; 54:終端設(shè)備從所述收單機(jī)構(gòu)簽名服務(wù)器獲取已簽名APK文件,判斷已簽名APK文件中是否有與所述終端設(shè)備對應(yīng)的終端設(shè)備廠商生成的廠商簽名數(shù)據(jù),當(dāng)判定有對應(yīng)的廠商簽名數(shù)據(jù)后,終端設(shè)備通過所述已簽名APK文件的文件頭定位所述廠商簽名數(shù)據(jù); 55:終端設(shè)備獲取廠商根公鑰證書后使用廠商根公鑰證書驗(yàn)證廠商簽名數(shù)據(jù)中廠商工作公鑰證書的合法性,驗(yàn)證合法后終端設(shè)備提取廠商工作公鑰證書中的工作公鑰驗(yàn)證簽名數(shù)據(jù),驗(yàn)證通過后允許安裝或運(yùn)行。
2.根據(jù)權(quán)利要求1所述的一種多方授權(quán)的APK簽名方法,其特征在于,步驟SI之前還包括: 收單機(jī)構(gòu)簽名服務(wù)器將原始APK文件尾填充OxOO四字節(jié)補(bǔ)齊,確保原始APK文件尾以0x00結(jié)尾后作為被簽名數(shù)據(jù); 步驟S3還包括: S31:收單機(jī)構(gòu)簽名服務(wù)器將被簽名數(shù)據(jù)的標(biāo)識、版本和原始APK文件的長度及校驗(yàn)值與入所述基礎(chǔ)文件中; 步驟S4中所述“判斷已簽名APK文件中是否有與所述終端設(shè)備對應(yīng)的終端設(shè)備廠商簽名數(shù)據(jù)”具體為: 根據(jù)已簽名APK文件中簽名文件頭的基礎(chǔ)文件中不同被簽名數(shù)據(jù)的標(biāo)識、版本判斷是否有屬于自身終端設(shè)備的簽名數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的一種多方授權(quán)的APK簽名方法,其特征在于,步驟S2中所述“不同終端設(shè)備廠商簽名服務(wù)器使用各自的廠商工作私鑰對包括原始APK文件的被簽名數(shù)據(jù)簽名生成不同終端設(shè)備廠商簽名數(shù)據(jù)”具體包括: 不同終端設(shè)備廠商簽名服務(wù)器將包括原始APK文件的被簽名數(shù)據(jù)計(jì)算哈希得到哈希值HASHl ;將哈希值HASHl按照一定簽名填充方式進(jìn)行填充后得到被簽名APK文件;將被簽名APK文件使用終端設(shè)備廠商簽名服務(wù)器各自的工作私鑰進(jìn)行簽名操作生成不同終端設(shè)備廠商簽名數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的一種多方授權(quán)的APK簽名方法,其特征在于,步驟S5具體包括: S51:判斷廠商工作公鑰證書是否預(yù)裝在終端設(shè)備中,若是,獲取廠商工作公鑰證書,并進(jìn)入步驟S53;若否,通過所述已簽名APK文件的文件頭定位并獲取設(shè)備終端對應(yīng)的廠商簽名數(shù)據(jù); S52:獲取廠商簽名數(shù)據(jù)中的廠商工作公鑰證書;終端設(shè)備使用預(yù)裝的廠商根公鑰證書驗(yàn)證廠商簽名數(shù)據(jù)中廠商工作公鑰證書的合法性,驗(yàn)證通過后進(jìn)入步驟S53 ; S53:終端設(shè)備提取廠商工作公鑰證書中的工作公鑰驗(yàn)證簽名數(shù)據(jù)并計(jì)算哈希,得到哈希值HASH2 ;判斷哈希值HASHl和哈希值HASH2是否一致,若是,則判定已簽名APK文件合法,允許APK安裝;若否,則判定已簽名APK文件不合法,不允許APK安裝。
5.一種多方授權(quán)的APK簽名系統(tǒng),其特征在于,包括終端設(shè)備廠商服務(wù)器、收單機(jī)構(gòu)服務(wù)器和終端設(shè)備服務(wù)器; 所述終端設(shè)備廠商服務(wù)器包括第一生成模塊、第二生成模塊和第一簽名模塊; 所述第一生成模塊,用于不同終端設(shè)備廠商CA服務(wù)器各自生成廠商根公私鑰對,將廠商根公鑰生成廠商根公鑰證書和使用廠商根私鑰對廠商工作公鑰簽名生成廠商工作公鑰證書; 所述第二生成模塊,用于不同終端設(shè)備廠商簽名服務(wù)器各自生成廠商工作公私鑰對,將工作公鑰分發(fā)至各自的廠商CA服務(wù)器; 所述第一簽名模塊,用于不同終端設(shè)備廠商簽名服務(wù)器使用各自的廠商工作私鑰對包括原始APK文件的被簽名數(shù)據(jù)簽名生成不同終端設(shè)備廠商簽名數(shù)據(jù),根據(jù)不同終端設(shè)備廠商的驗(yàn)簽機(jī)制將各自的廠商工作公鑰證書放入各自生成的廠商簽名數(shù)據(jù)中或預(yù)裝在終端設(shè)備中;不同終端設(shè)備廠商將各自的廠商根公鑰證書預(yù)裝在各自的終端設(shè)備中; 所述收單機(jī)構(gòu)服務(wù)器包括第二簽名模塊; 所述第二簽名模塊,用于收單機(jī)構(gòu)簽名服務(wù)器將不同終端設(shè)備廠商簽名服務(wù)器生成的不同廠商簽名數(shù)據(jù)按照簽名時(shí)間的先后順序采用DER格式組成已簽名APK文件;其中,所述已簽名APK文件包括原始APK文件和簽名文件頭,所述簽名文件頭包括基礎(chǔ)文件和擴(kuò)展文件,所述基礎(chǔ)文件用于標(biāo)識文件已經(jīng)過簽名操作;所述擴(kuò)展文件用于標(biāo)識不同終端設(shè)備各自的廠商簽名數(shù)據(jù)的個數(shù)及不同終端設(shè)備各自的廠商簽名數(shù)據(jù)在已簽名APK文件中的具體位置; 所述終端設(shè)備服務(wù)器包括第一判斷模塊、定位模塊、第一驗(yàn)證模塊和第二驗(yàn)證模塊; 所述第一判斷模塊,用于終端設(shè)備從所述收單機(jī)構(gòu)簽名服務(wù)器獲取已簽名APK文件,判斷已簽名APK文件中是否有與所述終端設(shè)備對應(yīng)的終端設(shè)備廠商生成的廠商簽名數(shù)據(jù); 所述定位模塊,用于終端設(shè)備判定有對應(yīng)的廠商簽名數(shù)據(jù)后通過所述已簽名APK文件的文件頭定位所述廠商簽名數(shù)據(jù); 所述第一驗(yàn)證模塊,用于終端設(shè)備使用廠商根公鑰證書驗(yàn)證廠商簽名數(shù)據(jù)中廠商工作公鑰證書的合法性; 所述第二驗(yàn)證模塊,用于終端設(shè)備成功驗(yàn)證廠商工作公鑰證書的合法性后,終端設(shè)備提取廠商工作公鑰證書中的工作公鑰驗(yàn)證簽名數(shù)據(jù),驗(yàn)證通過后允許安裝或運(yùn)行。
6.根據(jù)權(quán)利要求5所述的一種多方授權(quán)的APK簽名系統(tǒng),其特征在于,所述收單機(jī)構(gòu)還包括第三簽名模塊、寫入模塊和第二判斷模塊;所述第三簽名模塊,用于收單機(jī)構(gòu)簽名服務(wù)器將原始APK文件尾填充OxOO四字節(jié)補(bǔ)齊,確保原始APK文件尾以0x00結(jié)尾后作為被簽名數(shù)據(jù); 所述寫入模塊,用于收單機(jī)構(gòu)簽名服務(wù)器將被簽名數(shù)據(jù)的標(biāo)識、版本和原始APK文件的長度及校驗(yàn)值寫入所述基礎(chǔ)文件中; 所述第二判斷模塊,用于收單機(jī)構(gòu)簽名服務(wù)器判斷是否還有不同的終端設(shè)備廠商需要進(jìn)行簽名操作,若是,則不同終端設(shè)備廠商調(diào)用各自的廠商簽名服務(wù)器進(jìn)行簽名操作,修改所述簽名文件頭;若否,則結(jié)束。
7.根據(jù)權(quán)利要求5所述的一種多方授權(quán)的APK簽名系統(tǒng),其特征在于,所述第一簽名模塊包括簽名單元; 所述簽名單元,用于不同終端設(shè)備廠商簽名服務(wù)器將包括原始APK文件的被簽名數(shù)據(jù)計(jì)算哈希得到哈希值HASHl ;將哈希值HASHl按照一定簽名填充方式進(jìn)行填充后得到被簽名APK文件;將被簽名APK文件使用終端設(shè)備廠商簽名服務(wù)器各自的工作私鑰進(jìn)行簽名操作生成不同終端設(shè)備廠商簽名數(shù)據(jù)。
8.根據(jù)權(quán)利要求5所述的一種多方授權(quán)的APK簽名系統(tǒng),其特征在于,所述第一驗(yàn)證模塊包括第二判斷單元和第三驗(yàn)證單元;所述第二驗(yàn)證模塊包括第一運(yùn)算單元和第三判斷單元; 所述第二判斷單元,用于判斷廠商工作公鑰證書是否預(yù)裝在終端設(shè)備中,若是,獲取廠商工作公鑰證書;若 否,通過所述已簽名APK文件的文件頭定位并獲取設(shè)備終端對應(yīng)的廠商簽名數(shù)據(jù); 所述第三驗(yàn)證單元,用于終端設(shè)備獲取廠商簽名數(shù)據(jù)中的廠商工作公鑰證書;終端設(shè)備使用預(yù)裝的廠商根公鑰證書驗(yàn)證廠商簽名數(shù)據(jù)中廠商工作公鑰證書的合法性; 所述第一運(yùn)算單元,用于終端設(shè)備提取廠商工作公鑰證書中的工作公鑰驗(yàn)證簽名數(shù)據(jù)并計(jì)算哈希,得到哈希值HASH2 ; 所述第三判斷單元,用于終端設(shè)備判斷哈希值HASHl和哈希值HASH2是否一致,若是,則判定已簽名APK文件合法,允許APK安裝及運(yùn)行;若否,則判定已簽名APK文件不合法,不允許APK安裝或運(yùn)行。
【文檔編號】H04L29/06GK103944903SQ201410165106
【公開日】2014年7月23日 申請日期:2014年4月23日 優(yōu)先權(quán)日:2014年4月23日
【發(fā)明者】蘇文龍, 孟陸強(qiáng), 陳菲菲 申請人:福建聯(lián)迪商用設(shè)備有限公司