應(yīng)用程序文件驗證的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種應(yīng)用程序文件驗證的方法及系統(tǒng),該方法包括:移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼和第二校驗碼,第一校驗碼是根據(jù)所述應(yīng)用程序文件本身攜帶的第一授權(quán)文件信息得到的,所述第二校驗碼是根據(jù)所述應(yīng)用程序文件的正版攜帶的第二授權(quán)文件信息得到的;所述移動設(shè)備在所述第一校驗碼和所述第二校驗碼一致時,確定所述應(yīng)用程序文件通過驗證。通過上述方式,本發(fā)明能夠在移動端確定應(yīng)用程序文件的安全性,且不用輸入較長的代碼。
【專利說明】
應(yīng)用程序文件驗證的方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及應(yīng)用程序文件安全技術(shù)領(lǐng)域,特別是涉及一種應(yīng)用程序文件驗證的方 法及系統(tǒng)。
【背景技術(shù)】
[0002] 安卓(Android)應(yīng)用程序正面臨嚴重的盜版問題,被盜版的應(yīng)用程序可能被植入 病毒、廣告,還可能被二次打包以及篡改,這些都嚴重損害了應(yīng)用程序的開發(fā)者以及消費者 的權(quán)益。
[0003] 針對這一情況,移動互聯(lián)網(wǎng)的各個產(chǎn)業(yè)鏈都在做一些努力,來保護Android應(yīng)用程 序的安全。目前,普遍采用的軟件授權(quán)的方式是在軟件授權(quán)界面輸入激活碼或注冊碼完成 注冊,激活碼或者注冊碼一般以〃-〃分隔,如Wind 〇ws、0ff ice等,例如Off ice2013 :激活碼是 GQKNX-C6 T4B-V2T69-777QJ-XWYG7 ;又如WinlO的安裝激活碼是NKJFK-GPHP 7-G8C3J-P6JXR-HQRJR;又如UltraEdit的注冊碼是Name: jialei_wy,激活碼是:DSQ0Q-0SPNA-JIHHK-TNVI0-0NFGK-EERGI-Q0MRC-L QJAK。
[0004] 上述保證Android應(yīng)用程序安全的方法中,一方面,激活碼或注冊碼較長,在移動 端輸入較困難,另一方面,注冊碼或激活碼流出后,依然很容易被盜版。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明主要解決的技術(shù)問題是提供一種應(yīng)用程序文件驗證的方法及系統(tǒng),能夠在 移動端確定應(yīng)用程序文件的安全性,且不用輸入較長的代碼。
[0006] 為解決上述技術(shù)問題,本發(fā)明采用的一個技術(shù)方案是:提供一種應(yīng)用程序文件驗 證的方法,所述方法包括:移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼和第二校驗碼,其中, 所述第一校驗碼是根據(jù)所述應(yīng)用程序文件本身攜帶的第一授權(quán)文件信息得到的,所述第二 校驗碼是根據(jù)所述應(yīng)用程序文件的正版攜帶的第二授權(quán)文件信息得到的;所述移動設(shè)備在 所述第一校驗碼和所述第二校驗碼一致時,確定所述應(yīng)用程序文件通過驗證。
[0007] 其中,所述第一授權(quán)文件信息為第一簽名信息,所述第二授權(quán)文件信息為第二簽 名信息;所述移動設(shè)備獲取所述應(yīng)用程序文件的第一校驗碼和第二校驗碼的步驟之前,還 包括:服務(wù)器通過散列算法對所述應(yīng)用程序文件的正版已設(shè)置的所述第二簽名信息進行計 算,得到所述第二校驗碼;所述移動設(shè)備獲取所述應(yīng)用程序文件的第一校驗碼和第二校驗 碼的步驟,包括:所述移動設(shè)備在所述應(yīng)用程序文件啟動時,通過網(wǎng)絡(luò)連接服務(wù)器,進而從 所述服務(wù)器獲得所述應(yīng)用程序文件的第二校驗碼,或,所述移動設(shè)備在所述應(yīng)用程序文件 啟動時,獲取內(nèi)置在所述應(yīng)用程序文件的所述第二校驗碼,所述移動設(shè)備通過所述散列算 法對所述應(yīng)用程序文件本身攜帶的所述第一簽名信息進行計算,得到所述第一校驗碼。
[0008] 其中,所述第二授權(quán)文件信息包括與所述應(yīng)用程序文件的正版對應(yīng)的應(yīng)用程序文 件包名、設(shè)備序列號、設(shè)備型號、設(shè)定的有效期、功能限定信息中的至少一個類別的授權(quán)信 息;所述第一授權(quán)文件信息包括與所述應(yīng)用程序文件對應(yīng)的應(yīng)用程序文件包名、設(shè)備序列 號、設(shè)備型號、設(shè)定的有效期、功能限定信息中的至少一個類別的授權(quán)信息。
[0009] 其中,所述移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼和第二校驗碼的步驟之前, 還包括:服務(wù)器生成與所述應(yīng)用程序文件的正版對應(yīng)的文本格式的所述第二授權(quán)文件信 息;所述服務(wù)器通過散列算法對所述第二授權(quán)文件信息進行計算,得到授權(quán)校驗碼,所述授 權(quán)校驗碼即為所述第二校驗碼;所述移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼和第二校驗 碼的步驟,包括:所述移動設(shè)備獲取授權(quán)文件包,所述授權(quán)文件包中包括所述第二校驗碼的 信息;所述移動設(shè)備通過所述散列算法對所述應(yīng)用程序文件本身攜帶的所述第一授權(quán)文件 信息進行計算,得到所述第一校驗碼。
[0010] 其中,所述服務(wù)器通過散列算法對所述第二授權(quán)文件信息進行計算,得到授權(quán)校 驗碼的步驟之后,還包括:所述服務(wù)器通過非對稱加密算法生成公鑰和私鑰;所述服務(wù)器使 用所述私鑰對所述授權(quán)校驗碼加密,生成授權(quán)文件簽名;所述第二校驗碼的信息為所述授 權(quán)文件簽名,所述移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼和第二校驗碼的步驟,還包括: 所述移動設(shè)備獲取內(nèi)置在所述應(yīng)用程序文件的所述公鑰;所述移動設(shè)備通過所述公鑰對所 述授權(quán)文件簽名進行解密,獲得所述授權(quán)驗證碼,所述授權(quán)驗證碼即為所述第二校驗碼。 [0011]其中,所述授權(quán)文件包中還包括所述第二授權(quán)文件信息,所述第二授權(quán)文件信息、 所述第一授權(quán)文件信息中每個類別的授權(quán)信息均對應(yīng)一個授權(quán)項;所述移動設(shè)備在所述第 一校驗碼和所述第二校驗碼一致時,確定所述應(yīng)用程序文件通過驗證,包括:在所述第一校 驗碼和所述第二校驗碼一致時,所述移動設(shè)備將所述第二授權(quán)文件信息中每個授權(quán)項分別 與所述第一授權(quán)文件信息中對應(yīng)的授權(quán)項進行比對,若所述第二授權(quán)文件信息中每個授權(quán) 項與所述第一授權(quán)文件信息中對應(yīng)的授權(quán)項都匹配,則確定所述應(yīng)用程序文件通過驗證。
[0012] 為解決上述技術(shù)問題,本發(fā)明采用的另一個技術(shù)方案是:提供一種應(yīng)用程序文件 驗證的系統(tǒng),所述系統(tǒng)包括:移動設(shè)備,所述移動設(shè)備包括:獲取模塊,用于獲取應(yīng)用程序文 件的第一校驗碼和第二校驗碼,其中,所述第一校驗碼是根據(jù)所述應(yīng)用程序文件本身攜帶 的第一授權(quán)文件信息得到的,所述第二校驗碼是根據(jù)所述應(yīng)用程序文件的正版攜帶的第二 授權(quán)文件信息得到的;確定模塊,用于在所述第一校驗碼和所述第二校驗碼一致時,確定所 述應(yīng)用程序文件通過驗證。
[0013] 其中,所述第一授權(quán)文件信息為第一簽名信息,所述第二授權(quán)文件信息為第二簽 名信息;所述系統(tǒng)還包括:服務(wù)器,所述服務(wù)器包括:第一計算模塊,用于通過散列算法對所 述應(yīng)用程序文件的正版已設(shè)置的所述第二簽名信息進行計算,得到所述第二校驗碼;所述 獲取模塊具體用于:在所述應(yīng)用程序文件啟動時,通過網(wǎng)絡(luò)連接服務(wù)器,進而從所述服務(wù)器 獲得所述應(yīng)用程序文件的第二校驗碼,或,在所述應(yīng)用程序文件啟動時,獲取內(nèi)置在所述應(yīng) 用程序文件的所述第二校驗碼;
[0014] 通過所述散列算法對所述應(yīng)用程序文件本身攜帶的所述第一簽名信息進行計算, 得到所述第一校驗碼。
[0015] 其中,所述第二授權(quán)文件信息包括與所述應(yīng)用程序文件的正版對應(yīng)的應(yīng)用程序文 件包名、設(shè)備序列號、設(shè)備型號、設(shè)定的有效期、功能限定信息中的至少一個類別的授權(quán)信 息;所述第一授權(quán)文件信息包括與所述應(yīng)用程序文件對應(yīng)的應(yīng)用程序文件包名、設(shè)備序列 號、設(shè)備型號、設(shè)定的有效期、功能限定信息中的至少一個類別的授權(quán)信息。
[0016] 其中,所述系統(tǒng)還包括:服務(wù)器,所述服務(wù)器包括:第一生成模塊,用于生成與所述 應(yīng)用程序文件的正版對應(yīng)的文本格式的所述第二授權(quán)文件信息;第二計算模塊,用于通過 散列算法對所述第二授權(quán)文件信息進行計算,得到授權(quán)校驗碼,所述授權(quán)校驗碼即為所述 第二校驗碼;所述獲取模塊具體用于:獲取授權(quán)文件包,所述授權(quán)文件包中包括所述第二校 驗碼的信息;通過所述散列算法對所述應(yīng)用程序文件本身攜帶的所述第一授權(quán)文件信息進 行計算,得到所述第一校驗碼。
[0017] 其中,所述服務(wù)器還包括:第二生成模塊,用于通過非對稱加密算法生成公鑰和私 鑰;第三生成模塊,用于使用所述私鑰對所述授權(quán)校驗碼加密,生成授權(quán)文件簽名;所述第 二校驗碼的信息為所述授權(quán)文件簽名,所述獲取模塊還用于:獲取內(nèi)置在所述應(yīng)用程序文 件的所述公鑰;通過所述公鑰對所述授權(quán)文件簽名進行解密,獲得所述授權(quán)驗證碼,所述授 權(quán)驗證碼即為所述第二校驗碼。
[0018] 其中,所述授權(quán)文件包中還包括所述第二授權(quán)文件信息,所述第二授權(quán)文件信息、 所述第一授權(quán)文件信息中每個類別的授權(quán)信息均對應(yīng)一個授權(quán)項;所述確定模塊還用于在 所述第一校驗碼和所述第二校驗碼一致時,將所述第二授權(quán)文件信息中每個授權(quán)項分別與 所述第一授權(quán)文件信息中對應(yīng)的授權(quán)項進行比對,若所述第二授權(quán)文件信息中每個授權(quán)項 與所述第一授權(quán)文件信息中對應(yīng)的授權(quán)項都匹配,則確定所述應(yīng)用程序文件通過驗證。
[0019] 本發(fā)明的有益效果是:區(qū)別于現(xiàn)有技術(shù)的情況,本發(fā)明移動設(shè)備獲取應(yīng)用程序文 件的第一校驗碼和第二校驗碼,第一校驗碼是根據(jù)所述應(yīng)用程序文件本身攜帶的第一授權(quán) 文件信息得到的,所述第二校驗碼是根據(jù)所述應(yīng)用程序文件的正版攜帶的第二授權(quán)文件信 息得到的;所述移動設(shè)備在所述第一校驗碼和所述第二校驗碼一致時,確定所述應(yīng)用程序 文件通過驗證。由于應(yīng)用程序文件的正版攜帶的第二授權(quán)文件信息,應(yīng)用程序文件本身攜 帶第一授權(quán)文件信息,當應(yīng)用程序文件沒有被篡改時,第一授權(quán)文件信息和第二授權(quán)文件 信息是一致的,第一校驗碼和第二校驗碼也是一致的,當應(yīng)用程序文件被篡改后,第一授權(quán) 文件信息和第二授權(quán)文件信息是不一致的,第一校驗碼和第二校驗碼也不一致,通過這種 方式,能夠在移動端確定應(yīng)用程序文件的安全性,且不用輸入較長的代碼。
【附圖說明】
[0020] 圖1是本發(fā)明應(yīng)用程序文件驗證的方法一實施方式的流程圖;
[0021] 圖2是本發(fā)明應(yīng)用程序文件驗證的方法另一實施方式的流程圖;
[0022] 圖3是本發(fā)明應(yīng)用程序文件驗證的方法又一實施方式的流程圖;
[0023] 圖4是本發(fā)明應(yīng)用程序文件驗證的方法又一實施方式的流程圖;
[0024] 圖5是本發(fā)明應(yīng)用程序文件驗證的方法又一實施方式的流程圖;
[0025] 圖6是本發(fā)明應(yīng)用程序文件驗證的系統(tǒng)一實施方式的結(jié)構(gòu)示意圖;
[0026] 圖7是本發(fā)明應(yīng)用程序文件驗證的系統(tǒng)另一實施方式的結(jié)構(gòu)示意圖;
[0027] 圖8是本發(fā)明應(yīng)用程序文件驗證的系統(tǒng)又一實施方式的結(jié)構(gòu)示意圖;
[0028] 圖9是本發(fā)明應(yīng)用程序文件驗證的系統(tǒng)又一實施方式的結(jié)構(gòu)示意圖。
【具體實施方式】
[0029]下面結(jié)合附圖和實施方式對本發(fā)明進行詳細說明。
[0030]參閱圖1,圖1是本發(fā)明應(yīng)用程序文件驗證的方法一實施方式的流程圖,包括:
[0031] 步驟S101:移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼和第二校驗碼,其中,第一校 驗碼是根據(jù)應(yīng)用程序文件本身攜帶的第一授權(quán)文件信息得到的,第二校驗碼是根據(jù)應(yīng)用程 序文件的正版攜帶的第二授權(quán)文件信息得到的,所述應(yīng)用程序文件的正版攜帶的第二授權(quán) 文件信息即所述應(yīng)用程序文件的正版對應(yīng)的授權(quán)文件信息。移動設(shè)備獲取應(yīng)用程序文件的 第一校驗碼和第二校驗碼也可以包括兩個獨立的步驟,即包括:移動設(shè)備獲取應(yīng)用程序文 件的第一校驗碼的步驟、移動設(shè)備獲取應(yīng)用程序文件的第二校驗碼的步驟。
[0032] 應(yīng)用程序文件,在發(fā)行之后,或者被盜版,或者用戶在使用的過程中,被篡改,這些 均導(dǎo)致用戶體驗降低?,F(xiàn)有技術(shù)中,通常是通過輸入激活碼或注冊碼的方式,來保證應(yīng)用程 序文件是正版而非盜版。但是,一方面,對于移動設(shè)備來說,輸入長代碼很不方便,另一方 面,激活碼或注冊碼也會被篡改。
[0033] 在本發(fā)明實施方式中,當應(yīng)用程序文件對應(yīng)的正版產(chǎn)生后,即產(chǎn)生對應(yīng)的第二授 權(quán)文件信息,第二授權(quán)文件信息是指與應(yīng)用程序文件的正版一一對應(yīng)的授權(quán)文件信息,例 如:設(shè)定的唯一的簽名、設(shè)備序列號、應(yīng)用程序文件包名、確定的唯一的時間信息等。該第二 授權(quán)文件信息附著在應(yīng)用程序文件對應(yīng)的正版中。如果第二授權(quán)文件信息被篡改,則表明 該應(yīng)用程序文件已經(jīng)被篡改。第二授權(quán)文件信息通常是應(yīng)用開發(fā)商或應(yīng)用開發(fā)商授權(quán)的服 務(wù)商來確定。
[0034] 第一授權(quán)文件信息是指對應(yīng)于第二授權(quán)文件信息、與應(yīng)用程序文件本身一一對應(yīng) 的授權(quán)文件信息。例如,如果第二授權(quán)文件信息是設(shè)定的唯一簽名,那么第一授權(quán)文件信息 也是對應(yīng)的簽名,只不過該簽名有可能與設(shè)定的唯一簽名一致,有可能在應(yīng)用程序文件使 用時被篡改而與設(shè)定的唯一簽名不一致,或者應(yīng)用程序文件本來就是盜版,簽名自然也是 與設(shè)定的唯一簽名不一致。
[0035] 根據(jù)應(yīng)用程序文件本身攜帶的第一授權(quán)文件信息通過一定的方法獲得第一校驗 碼,根據(jù)應(yīng)用程序文件的正版攜帶的第二授權(quán)文件信息通過一定的方法獲得第二校驗碼。 其中,獲得第一校驗碼的方法和獲得第二校驗碼的方法可以相同,也可以不相同,不相同的 時候,需要確定第一校驗碼和第二校驗碼之間的對應(yīng)關(guān)系,以確定第一校驗碼和第二校驗 碼是否一致。
[0036]步驟S102:移動設(shè)備在第一校驗碼和第二校驗碼一致時,確定應(yīng)用程序文件通過 驗證。
[0037]比較第一校驗碼和第二校驗碼,如果第一校驗碼和第二校驗碼一致,確定該應(yīng)用 程序文件通過驗證,也即是該應(yīng)用程序文件與應(yīng)用程序文件的正版是一致的,該應(yīng)用程序 文件沒有被篡改,授權(quán)是有效的。當然,該應(yīng)用程序文件的正版在后續(xù)使用過程后,依然有 可能被篡改,如果后續(xù)使用過程中被篡改,則第一校驗碼和第二校驗碼就不一致了。
[0038]如果第一校驗碼和第二校驗碼不一致,提示用戶應(yīng)用程序文件已經(jīng)被篡改,繼續(xù) 使用有風險,或者應(yīng)用程序文件為盜版,并引導(dǎo)用戶使用應(yīng)用程序文件的官方正版。
[0039]本發(fā)明實施方式移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼和第二校驗碼,第一校 驗碼是根據(jù)所述應(yīng)用程序文件本身攜帶的第一授權(quán)文件信息得到的,所述第二校驗碼是根 據(jù)所述應(yīng)用程序文件的正版攜帶的第二授權(quán)文件信息得到的;所述移動設(shè)備在所述第一校 驗碼和所述第二校驗碼一致時,確定所述應(yīng)用程序文件通過驗證。由于應(yīng)用程序文件的正 版攜帶的第二授權(quán)文件信息,應(yīng)用程序文件本身攜帶第一授權(quán)文件信息,當應(yīng)用程序文件 沒有被篡改時,第一授權(quán)文件信息和第二授權(quán)文件信息是一致的,第一校驗碼和第二校驗 碼也是一致的,當應(yīng)用程序文件被篡改后,第一授權(quán)文件信息和第二授權(quán)文件信息是不一 致的,第一校驗碼和第二校驗碼也不一致,通過這種方式,能夠在移動端確定應(yīng)用程序文件 的安全性,且不用輸入較長的代碼。
[0040] 其中,第一授權(quán)文件信息為第一簽名信息,第二授權(quán)文件信息為第二簽名信息。
[0041] 此時,步驟S101中,移動設(shè)備獲取應(yīng)用程序文件的第二校驗碼的步驟,可以通過兩 種方式實現(xiàn),一種是在網(wǎng)絡(luò)連通的情況下,移動設(shè)備可以通過網(wǎng)絡(luò)從服務(wù)器獲得第二校驗 碼,另一種情況是,開發(fā)商將第二校驗碼內(nèi)置在應(yīng)用程序文件的正版中,當用戶獲得應(yīng)用程 序文件的正版,在自己的移動設(shè)備安裝應(yīng)用程序的正版后,在該應(yīng)用程序(即安裝的應(yīng)用程 序文件的正版)后續(xù)的驗證中,可以不依賴網(wǎng)絡(luò),移動設(shè)備直接獲取內(nèi)置在應(yīng)用程序文件中 的第二校驗碼。
[0042]參見圖2,不管是上述哪一種方式,在步驟S101之前,首先均需要生成第二校驗碼, 結(jié)合起來具體過程可以如下:
[0043] 步驟S103:服務(wù)器通過散列算法對應(yīng)用程序文件的正版已設(shè)置的第二簽名信息進 行計算,得到第二校驗碼。該步驟可以在應(yīng)用開發(fā)商或應(yīng)用開發(fā)商授權(quán)的服務(wù)商處完成。進 一步地,服務(wù)器將第二校驗碼內(nèi)置在應(yīng)用程序文件的正版中,該內(nèi)置有第二校驗碼的應(yīng)用 程序文件的正版達到用戶端。
[0044] 如果在應(yīng)用程序文件啟動時有網(wǎng)絡(luò),移動設(shè)備通過網(wǎng)絡(luò)獲取第二校驗碼,則進入 步驟S1011,如果在應(yīng)用程序文件啟動時沒有網(wǎng)絡(luò),移動設(shè)備在本地獲取第二校驗碼,則進 入步驟S1012。
[0045] 步驟S1011:通過網(wǎng)絡(luò)連接服務(wù)器,進而從服務(wù)器獲得應(yīng)用程序文件的第二校驗 碼。
[0046] 步驟S1012:獲取內(nèi)置在應(yīng)用程序文件的第二校驗碼。
[0047]很顯然,雖然第二校驗碼是內(nèi)置在應(yīng)用程序文件的正版中,但是依然存在安全性 的風險。進一步地,可以通過公、私密鑰的方式對第二校驗碼進行加密和解密處理,以進一 步增加應(yīng)用程序文件的安全性。
[0048]其中,步驟S101中,移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼的步驟可以是:步驟 S1013,通過散列算法對應(yīng)用程序文件本身攜帶的第一簽名信息進行計算,得到第一校驗 碼。即獲得第一校驗碼的方法和獲得第二校驗碼的方法都是一樣的,都是散列算法。
[0049] 散列算法是指產(chǎn)生一些數(shù)據(jù)片段(例如消息或會話項)的散列值的算法。好的散列 算法具有根據(jù)輸入數(shù)據(jù)中的變動來更改散列值結(jié)果的特性;因此,散列對于檢測在諸如消 息等大型信息對象中的任何變化很有用。
[0050] 軟件開發(fā)中的散列函數(shù)或散列算法,又稱哈希函數(shù)(Hash Function),是一種從任 何一種數(shù)據(jù)中創(chuàng)建小的數(shù)字"指紋"的方法。散列函數(shù)把消息或數(shù)據(jù)壓縮成摘要,使得數(shù)據(jù) 量變小,將數(shù)據(jù)的格式固定下來。該函數(shù)將數(shù)據(jù)打亂混合,重新創(chuàng)建一個叫做散列值的指 紋。散列值通常用來代表一個短的隨機字母和數(shù)字組成的字符串。好的散列函數(shù)在輸入域 中很少出現(xiàn)散列沖突。在散列表和數(shù)據(jù)處理中,不抑制沖突來區(qū)別數(shù)據(jù),會使得數(shù)據(jù)庫記錄 更難找到。所有的散列函數(shù)都有如下一個基本特性:如果兩個散列值是不相同的(根據(jù)同一 函數(shù)),那么這兩個散列值的原始輸入也是不相同的。散列算法包括但不限于SHAUMD5、 SHA256等。當然,獲得第一校驗碼的方法和獲得第二校驗碼的方法除了是上述的散列算法 外,還可以是其它方法,在此不做限定。
[0051] 在實際應(yīng)用中,上述簽名信息驗證過程可以用Java代碼實現(xiàn)驗證,也可以用C語言 代碼實現(xiàn)驗證,具體如下:
[0052] 1、Java層淺校驗(驗證代碼在Java層);
[0053] 例如,Java代碼中驗證簽名具體可以是:
[0055]由于Java代碼中包括很多源代碼信息,如變量名、方法名,并且通過這些名稱來訪 問變量和方法,這些符號帶有許多語義信息,很容易被反編譯成Java源代碼。為了防止這種 現(xiàn)象,可以對Java代碼采用代碼混淆的方式,提高反編譯的難度。
[0056] 2、原生開發(fā)工具包(Native Development Kit,簡寫NDK)C代碼中深校驗(驗證代 碼在NDK的C代碼中);
[0057] C語言的實現(xiàn)與Java的實現(xiàn)在流程上類似,僅代碼不同,不再詳細舉例。由于C語言 寫的程序一般很難反編譯,不可能得到源碼,編譯完成后已經(jīng)轉(zhuǎn)化為機器語言,不是完全可 逆的過程,因此反編譯C語言生成的工程,比反編譯Java的工程困難很多。
[0058]本發(fā)明實施例中,驗證應(yīng)用程序文件的過程可以在后臺校驗,不影響應(yīng)用程序文 件的啟動速度。
[0059]其中,第二授權(quán)文件信息包括與應(yīng)用程序文件的正版對應(yīng)的應(yīng)用程序文件包名、 設(shè)備序列號、設(shè)備型號、設(shè)定的有效期、功能限定信息中的至少一個類別的授權(quán)信息;第一 授權(quán)文件信息包括與應(yīng)用程序文件對應(yīng)的應(yīng)用程序文件包名、設(shè)備序列號、設(shè)備型號、設(shè)定 的有效期、功能限定信息中的至少一個類別的授權(quán)信息。其中,功能限定信息即限定應(yīng)用程 序文件可用功能的信息,所述第一授權(quán)文件信息也是與第二授權(quán)文件信息相互對應(yīng),例如, 第二授權(quán)文件信息包括應(yīng)用程序文件的正版對應(yīng)的應(yīng)用程序文件包名,那么第一授權(quán)文件 信息也包括與應(yīng)用程序文件對應(yīng)的應(yīng)用程序文件包名;又如,第二授權(quán)文件信息包括應(yīng)用 程序文件的正版對應(yīng)的應(yīng)用程序文件包名和設(shè)備序列號,那么第一授權(quán)文件信息也包括與 應(yīng)用程序文件對應(yīng)的應(yīng)用程序文件包名和設(shè)備序列號。當然,第二授權(quán)文件信息并不限于 上述內(nèi)容,在此并不做限定。
[0060] 其中,所述與應(yīng)用程序文件的正版對應(yīng)的應(yīng)用程序文件包名、設(shè)備序列號、設(shè)備型 號等類別的授權(quán)信息中,均可以包括多個對象,即若第一授權(quán)文件信息包括與應(yīng)用程序文 件對應(yīng)的應(yīng)用程序文件包名時,該與應(yīng)用程序文件的正版對應(yīng)的應(yīng)用程序文件包名中可以 包括多個應(yīng)用程序文件包名,例如e本閱讀器,e本商城等;若第一授權(quán)文件信息包括設(shè)備序 列號時,則該設(shè)備序列號可以包括多個設(shè)備序列號;若第一授權(quán)文件信息包括設(shè)備型號,設(shè) 備型號也可以包括多個設(shè)備型號,例如E人E本T8、E人E本T9等。同理,第二授權(quán)文件信息也 可以這樣設(shè)置,這樣可以實現(xiàn)一個授權(quán)文件包對多個應(yīng)用程序文件,或多個設(shè)備序列號,或 多個設(shè)備型號實現(xiàn)授權(quán),以提高應(yīng)用程序文件授權(quán)驗證效率。
[0061] 此時,參見圖3,步驟S101中,移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼和第二校 驗碼的步驟之前,還包括:
[0062]步驟S201:服務(wù)器生成與應(yīng)用程序文件的正版對應(yīng)的文本格式的第二授權(quán)文件信 息。
[0063]應(yīng)用程序文件的正版在出廠前,根據(jù)應(yīng)用程序文件包名、設(shè)備序列號、設(shè)備型號 (或者設(shè)備定制型號)、設(shè)定的有效期等中的至少一個生成文本格式的第二授權(quán)文件信息, 該文本格式可以是.txt格式、JS0N格式、或者XML格式等,其中,優(yōu)選JS0N格式的授權(quán)文件信 息,JS0N格式的授權(quán)文件信息在后續(xù)授權(quán)項的比對中,比對效率高。
[0064] 例如,第二授權(quán)文件信息authorization, json(詳見下面舉例說明)。
[0065]步驟S202:服務(wù)器通過散列算法對第二授權(quán)文件信息進行計算,得到授權(quán)校驗碼, 授權(quán)校驗碼即為第二校驗碼。
[0066]例如,根據(jù)散列算法,如SHA1、MD5、或SHA256等,對第二授權(quán)文件信息求值,得到散 列值即為授權(quán)校驗碼,如SHA1值、MD5值,或SHA256值等。
[0067] 若第二授權(quán)文件信息求的授權(quán)校驗碼發(fā)生變化,則對應(yīng)的第二授權(quán)文件信息即被 修改,因此通過授權(quán)校驗碼可以判斷第二授權(quán)文件信息是否被修改,第二授權(quán)文件信息被 修改后(授權(quán)校驗碼發(fā)生改變),即可認為第二授權(quán)文件信息失效,該應(yīng)用程序文件的正版 已經(jīng)被修改。
[0068] 同樣,步驟S101中,移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼的步驟,可以是:移 動設(shè)備獲取授權(quán)文件包,該授權(quán)文件包中包括第二校驗碼的信息;通過散列算法對應(yīng)用程 序文件本身攜帶的第一授權(quán)文件信息進行計算,得到第一校驗碼。
[0069] 所述授權(quán)文件包中包括所述第二校驗碼的信息,可以是第二檢驗碼,或者,可以是 所述授權(quán)文件簽名(授權(quán)文件簽名是加密第二檢驗碼得到的)。
[0070] 需要說明的是:當?shù)诙跈?quán)文件信息為與應(yīng)用程序文件的正版對應(yīng)的應(yīng)用程序文 件包名、設(shè)備序列號、設(shè)備型號、設(shè)定的有效期中的一個時,第一授權(quán)文件信息也是對應(yīng)的 一個;當?shù)诙跈?quán)文件信息為與應(yīng)用程序文件的正版對應(yīng)的應(yīng)用程序文件包名、設(shè)備序列 號、設(shè)備型號、設(shè)定的有效期中的二個時,第一授權(quán)文件信息也是對應(yīng)的二個,此時還可以 設(shè)定進一步的應(yīng)用程序文件驗證,例如:第二授權(quán)文件信息為與應(yīng)用程序文件的正版對應(yīng) 的應(yīng)用程序文件包名、設(shè)備序列號,第一授權(quán)文件信息是與應(yīng)用程序文件對應(yīng)的應(yīng)用程序 文件包名、設(shè)備序列號。在第二授權(quán)文件信息(如下描述的authorization. json)中,可以進 一步說明授權(quán)項還包括設(shè)定的有效期,即當?shù)诙r灤a和第一校驗碼一致,通過驗證后,進 行進一步的驗證,確認應(yīng)用程序文件的有效期是否在設(shè)定的有效期內(nèi),如果不在設(shè)定的有 效期內(nèi),則該驗證不通過。
[0071] 又如:第二授權(quán)文件信息為設(shè)備序列號,第一授權(quán)文件信息是設(shè)備序列號,在第二 授權(quán)文件信息中,可以進一步說明授權(quán)項還包括應(yīng)用程序文件包名、設(shè)備型號、設(shè)定的有效 期,即當?shù)诙r灤a和第一校驗碼一致,通過驗證后,進行進一步的驗證,分別確認應(yīng)用程 序文件的應(yīng)用程序文件包名、設(shè)備型號、有效期是否與第二授權(quán)文件信息中設(shè)定的一致,只 要其中有一項不一致,則該驗證不通過。
[0072] 當然,上述例子中,也可以在第一次驗證時,第二授權(quán)文件信息包括全部的授權(quán) 項,只有在包括全部授權(quán)項的第二校驗碼和包括全部授權(quán)項的第一校驗碼一致時,才算通 過驗證。具體如何實現(xiàn)應(yīng)用程序文件的驗證,可以根據(jù)實際應(yīng)用的需要確定,在此不做限 定。
[0073] 移動設(shè)備在獲取第二校驗碼時,依然可以采用聯(lián)網(wǎng)從服務(wù)器獲取和在本地獲取兩 種方式,在此不再贅敘。下面主要是說明在本地獲取時,為了進一步保證應(yīng)用程序文件的安 全性所采取的措施。
[0074] 參見圖4,步驟S202之后,還可以包括:
[0075]步驟S203:服務(wù)器通過非對稱加密算法生成公鑰和私鑰。
[0076] 非對稱加密算法,如RSA、Elgamal、背包算法、Rabin、D_H、ECC等。應(yīng)用開發(fā)商保留 私鑰,私鑰用于加密授權(quán)校驗碼,以生成授權(quán)文件簽名(如下步驟S204),公鑰用于解密授權(quán) 文件簽名,得到授權(quán)校驗碼。當然,也可以使用對稱加密算法,在此不做限定。
[0077]步驟S204:服務(wù)器使用私鑰對授權(quán)校驗碼加密,生成授權(quán)文件簽名,例如: authorization, json. sign授權(quán)文件簽名。
[0078] 其中,第二授權(quán)文件信息、授權(quán)文件簽名、公鑰均需要內(nèi)置于應(yīng)用程序文件中。例 如,將第二授權(quán)文件信息authorization, json,授權(quán)文件簽名authorization, json. sign打 包,生成zip壓縮包(授權(quán)文件包),如授權(quán)文件包license, zip;將授權(quán)文件包license.zip 發(fā)給申請授權(quán)后獲得授權(quán)的用戶,或者直接在設(shè)備或終端出廠前利用授權(quán)文件包 license, zip對預(yù)裝應(yīng)用進行授權(quán)。
[0079] 服務(wù)器可以將公鑰內(nèi)置在應(yīng)用程序文件的正版中,也可以保存在服務(wù)器本地。當 移動設(shè)備不聯(lián)網(wǎng)進行驗證時,服務(wù)器可以將公鑰內(nèi)置在應(yīng)用程序文件的正版中,當移動設(shè) 備聯(lián)網(wǎng)進行驗證時,服務(wù)器可以將公鑰保存在服務(wù)器本地。聯(lián)網(wǎng)或不聯(lián)網(wǎng)進行驗證的流程, 可以參見上述內(nèi)容,在此不再贅敘。
[0080] 此時,參見圖5,步驟S101中,移動設(shè)備獲取應(yīng)用程序文件的第二校驗碼的步驟,包 括:
[0081] 步驟S301:移動設(shè)備獲取內(nèi)置在應(yīng)用程序文件的公鑰。
[0082]步驟S302:移動設(shè)備通過公鑰對授權(quán)文件簽名進行解密,獲得授權(quán)驗證碼,授權(quán)驗 證碼即為第二校驗碼。
[0083] 需要說明的是,上述步驟S101和步驟S102的執(zhí)行可以是在應(yīng)用程序文件啟動的時 候執(zhí)行,也可以是在應(yīng)用程序文件運行過程中執(zhí)行。
[0084] 授權(quán)文件包中還包括第二授權(quán)文件信息,第二授權(quán)文件信息、第一授權(quán)文件信息 中每個類別的授權(quán)信息均對應(yīng)一個授權(quán)項;移動設(shè)備在第一校驗碼和第二校驗碼一致時, 確定應(yīng)用程序文件通過驗證,包括:
[0085] 在第一校驗碼和第二校驗碼一致時,移動設(shè)備將第二授權(quán)文件信息中每個授權(quán)項 分別與第一授權(quán)文件信息中對應(yīng)的授權(quán)項進行比對,若第二授權(quán)文件信息中每個授權(quán)項與 第一授權(quán)文件信息中對應(yīng)的授權(quán)項都匹配,則確定應(yīng)用程序文件通過驗證。
[0086] 授權(quán)項可以是應(yīng)用程序文件包名、設(shè)備序列號、設(shè)備型號、設(shè)定的有效期、功能限 定信息中的至少一個類別的授權(quán)信息。對應(yīng)的授權(quán)項匹配是指具體的授權(quán)項的授權(quán)內(nèi)容相 匹配。若第二授權(quán)文件信息中每個授權(quán)項與第一授權(quán)文件信息中對應(yīng)的授權(quán)項都匹配,即 表示第二授權(quán)文件信息與第一授權(quán)文件信息中相同的授權(quán)項中具有相同的目標內(nèi)容,該目 標內(nèi)容為當前驗證的應(yīng)用程序文件對應(yīng)的特征信息,例如應(yīng)用程序文件包名,應(yīng)用程序文 件所在設(shè)備的設(shè)備型號(即上面所描述的設(shè)備型號),或者應(yīng)用程序文件所在設(shè)備的設(shè)備序 列號等。
[0087] 例如,第一授權(quán)文件信息和第二授權(quán)文件信息中都包括應(yīng)用程序文件包授權(quán)項, 第二授權(quán)文件信息應(yīng)用程序文件包授權(quán)項中包括兩個應(yīng)用程序文件包名,這個第一授權(quán)文 件信息中應(yīng)用程序文件包授權(quán)項也包括與第二授權(quán)文件信息中相同的兩個應(yīng)用程序文件 包名,這樣即表示第一授權(quán)文件信息和第二授權(quán)文件信息中的應(yīng)用程序文件包授權(quán)項相匹 配。
[0088]其中,在一實施方式中,該方法還包括:
[0089] 服務(wù)器將一預(yù)定應(yīng)用程序文件包名指定為兩個以上應(yīng)用程序文件的正版的通用 應(yīng)用程序包名;通過散列算法對預(yù)定應(yīng)用程序文件包名進行計算,得到第二校驗碼,第二校 驗碼為兩個以上應(yīng)用程序文件的正版的通用第二校驗碼;此時,步驟S101包括:移動設(shè)備在 確定兩個以上應(yīng)用程序文件的本身都攜帶有一第一應(yīng)用程序包名后,通過散列算法對第一 應(yīng)用程序包名進行計算,獲得第一校驗碼,在本地或者通過網(wǎng)絡(luò)從服務(wù)器獲得第二校驗碼; 步驟S102包括:移動設(shè)備在第一校驗碼和第二校驗碼一致時,確定兩個以上應(yīng)用程序文件 均通過驗證。
[0090] 對于批量的兩個以上的應(yīng)用程序文件,如果按照上述方式,一個一個地來分別進 行驗證,驗證過程比較長,且比較浪費時間,通過上述方式,能夠通過一個通用第二校驗碼, 使兩個以上的批量應(yīng)用程序文件均通過驗證,從而簡化驗證過程。
[0091] 其中,在一實施方式中,該方法還包括:
[0092]服務(wù)器分別將一系列多個設(shè)備序列號或設(shè)備型號指定為一應(yīng)用程序文件的正版 的設(shè)備序列號或設(shè)備型號;通過散列算法分別對一系列多個設(shè)備序列號或設(shè)備型號進行計 算,得到對應(yīng)的多個第二校驗碼,多個第二校驗碼都是應(yīng)用程序文件的正版的第二校驗碼; 此時,步驟S101包括:移動設(shè)備通過散列算法對應(yīng)用程序文件本身攜帶的設(shè)備序列號或設(shè) 備型號進行計算,獲得第一校驗碼,在本地或者通過網(wǎng)絡(luò)從服務(wù)器獲得多個第二校驗碼;步 驟S102包括:移動設(shè)備在確定多個第二校驗碼中有一個第二校驗碼與第一校驗碼一致時, 確定應(yīng)用程序文件通過驗證。
[0093] 當一個應(yīng)用程序在多個一系列設(shè)備上分別進行驗證時,采用上述的方法一個一個 地來分別進行驗證,驗證過程比較長,且比較浪費時間,通過上述方式,能夠在簡化驗證過 程的情況下,使一個應(yīng)用程序文件在多個一系列設(shè)備序列號或設(shè)備型號的設(shè)備上通過驗 證。
[0094] 其中,在一實施方式中,所述第二授權(quán)文件信息包括第二唯一標識,所述第二唯一 標識為與所述應(yīng)用程序文件的正版對應(yīng)的應(yīng)用程序文件包名、設(shè)備序列號、設(shè)備型號、設(shè)定 的有效期、功能限定信息中的至少一個類別的授權(quán)信息;所述第一授權(quán)文件信息包括第一 唯一標識,所述第一唯一標識為與所述應(yīng)用程序文件對應(yīng)的應(yīng)用程序文件包名、設(shè)備序列 號、設(shè)備型號、設(shè)定的有效期、功能限定信息中的至少一個類別的授權(quán)信息,此時,該方法還 包括:
[0095]服務(wù)器對應(yīng)用程序文件的正版攜帶的第二唯一標識進行分類,分為主第二唯一標 識和一個以上次第二唯一標識;通過散列算法,分別對主第二唯一標識和一個以上次第二 唯一標識進行計算,分別得到主第二校驗碼和一個以上次第二校驗碼;此時,步驟S101包 括:移動設(shè)備對應(yīng)用程序文件本身攜帶的第一唯一標識進行對應(yīng)的分類,分為對應(yīng)的主第 一唯一標識和一個以上次第一唯一標識;移動設(shè)備通過散列算法,分別對主第一唯一標識 和一個以上次第一唯一標識進行計算,獲得主第一校驗碼和一個以上次第一校驗碼;移動 設(shè)備在本地或者通過網(wǎng)絡(luò)從服務(wù)器獲得主第二校驗碼和一個以上次第二校驗碼;步驟S102 包括:移動設(shè)備在主第一校驗碼和主第二校驗碼一致時,確定應(yīng)用程序文件通過第一級驗 證;移動設(shè)備再分別逐級比較一個以上次第一校驗碼和一個以上次第二檢驗碼,當一個以 上次第一校驗碼和一個以上次第二檢驗碼分別逐級一致時,確定應(yīng)用程序文件分別通過逐 級驗證。
[0096]上述方式是另一種實現(xiàn)分級驗證的方式,即一級一級比較各項授權(quán)項,在各個授 權(quán)項均通過驗證的情況下,最后確定應(yīng)用程序文件通過驗證。因此,通過上述方式,能夠?qū)?現(xiàn)逐級驗證。
[0097]下面以E本閱讀器的JS0N格式第二授權(quán)文件信息為例進行說明,E本閱讀器的應(yīng)用 程序文件包名"cn. eben. reader"
[0099] 上述以[]標示的應(yīng)用包名、設(shè)備序列號、設(shè)備型號、設(shè)備定制型號等,可以包括多 個值。
[0100] 此授權(quán)文件信息中包括多個授權(quán)項,例如應(yīng)用程序文件包名、設(shè)備序列號、設(shè)備型 號、功能限定信息等,每個授權(quán)項也可以對多個對象的限定。例如:當?shù)诙跈?quán)文件信息包 括應(yīng)用程序文件包名時,應(yīng)用程序文件包名對應(yīng)的授權(quán)項中可以包括多個應(yīng)用程序文件包 名,例如e本閱讀器,e本商城等,又例如,當?shù)诙跈?quán)文件信息包括設(shè)備型號時,設(shè)備型號授 權(quán)項中可以包括一個設(shè)備的一個或多個設(shè)備型號,例如設(shè)備型號包括E人E本T8、E人E本T9, 那么該授權(quán)文件信息對E人E本T8、E人E本T9的設(shè)備有效。又如,即當?shù)诙跈?quán)文件信息包括 設(shè)備序列號(或設(shè)備編號)時,例如可以設(shè)置E本生產(chǎn)時的設(shè)備編號,即知道哪些設(shè)備編號是 e本公司生產(chǎn)的,則可以設(shè)定這些編號可以授權(quán)使用e本閱讀器。[沖的內(nèi)容以","分隔。
[0101] 上面授權(quán)文件信息的功能限定信息(extra)授權(quán)項中,可以設(shè)定哪些功能可以用, 哪些功能不可用,不同的功能對應(yīng)不同的授權(quán)。一般情況下,可以分為標準版(基本功能)、 增強版、全功能版,每個版本可以預(yù)先設(shè)定授權(quán)不同的功能限定信息。
[0102] 一個具體的JS0N格式授權(quán)文件信息如下:
[0104] 具體來說,在本發(fā)明一個【具體實施方式】中,第二授權(quán)文件信息與授權(quán)文件簽名兩 項內(nèi)容組成一個完成的授權(quán)信息,檢查授權(quán)信息是否有效的過程具體可以如下:
[0105] (1)公鑰內(nèi)置于軟件開發(fā)工具包(Software Development Kit,簡寫SDK),編譯至 應(yīng)用程序文件中,應(yīng)用程序文件啟動后,解壓該授權(quán)信息license.zip得到第二授權(quán)文件信 息authorization· json和授權(quán)文件簽名authorization· json. sign;
[0106] (2)用公鑰解密應(yīng)用程序文件的授權(quán)文件簽名authorization, json. sign,得到第 二授權(quán)文件信息authorization, json對應(yīng)的授權(quán)校驗碼(如SHA1),即為第二校驗碼;
[0107] (3)計算解壓得到的第二授權(quán)文件信息(也即是應(yīng)用程序文件本身攜帶的第一授 權(quán)文件信息)authorization · json的校驗碼,即為第一校驗碼(與第二校驗碼采用相同的散 列算法);
[0108] (4)將計算出的第一校驗碼與解密得到的第二校驗碼兩者進行比對,用來校驗應(yīng) 用程序文件的第二授權(quán)文件信息authorization, json是否改動,計算出的第一校驗碼與解 密得到的第二校驗碼相同,貝第二授權(quán)文件信息authorization, json無改動,若第二授權(quán) 文件信息authorization. json被修改,貝lj第一校驗碼和第二校驗碼一定不相同,此授權(quán)即 為無效授權(quán);
[0109] (5)在第二授權(quán)文件信息authorization, json為有效授權(quán)文件的情況下,對第一、 第二授權(quán)文件信息中其它的授權(quán)項進行進一步的檢查。
[0110] 在檢查第一、第二授權(quán)文件信息時,每個授權(quán)文件信息中包括多個其它的授權(quán)項, 在第二授權(quán)文件信息authorization, json通過第二校驗碼的驗證,初步確認有效的授權(quán)文 件信息的情況下,需要再進一步一一校驗第一、第二授權(quán)文件信息中其它授權(quán)項,第一、第 二授權(quán)文件信息中所有的其它授權(quán)項都為可選項,所有項共同生效才能保證授權(quán)文件信息 實質(zhì)有效,即authorization. json中的授權(quán)項,需要--校驗,若全部通過,則該應(yīng)用文件 程序通過驗證,授權(quán)有效,每一授權(quán)項的無效都能否定應(yīng)用程序文件的有效性。通過上述方 式,可以實現(xiàn)分級驗證。
[0111] 參見圖6,本發(fā)明還提供一種應(yīng)用程序文件驗證的系統(tǒng),該系統(tǒng)可以執(zhí)行上述方法 中的步驟,相關(guān)的詳細內(nèi)容請參見上述方法部分,在此不再贅敘。
[0112] 該系統(tǒng)10包括:移動設(shè)備100,該移動設(shè)備100包括:獲取模塊101和確定模塊102。
[0113] 獲取模塊101用于獲取應(yīng)用程序文件的第一校驗碼和第二校驗碼,其中,第一校驗 碼是根據(jù)應(yīng)用程序文件本身攜帶的第一授權(quán)文件信息得到的,第二校驗碼是根據(jù)應(yīng)用程序 文件的正版攜帶的第二授權(quán)文件信息得到的。
[0114] 確定模塊102用于在第一校驗碼和第二校驗碼一致時,確定應(yīng)用程序文件通過驗 證。
[0115] 本發(fā)明實施方式移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼和第二校驗碼,第一校 驗碼是根據(jù)所述應(yīng)用程序文件本身攜帶的第一授權(quán)文件信息得到的,所述第二校驗碼是根 據(jù)所述應(yīng)用程序文件的正版攜帶的第二授權(quán)文件信息得到的;所述移動設(shè)備在所述第一校 驗碼和所述第二校驗碼一致時,確定所述應(yīng)用程序文件通過驗證。由于應(yīng)用程序文件的正 版攜帶的第二授權(quán)文件信息,應(yīng)用程序文件本身攜帶第一授權(quán)文件信息,當應(yīng)用程序文件 沒有被篡改時,第一授權(quán)文件信息和第二授權(quán)文件信息是一致的,第一校驗碼和第二校驗 碼也是一致的,當應(yīng)用程序文件被篡改后,第一授權(quán)文件信息和第二授權(quán)文件信息是不一 致的,第一校驗碼和第二校驗碼也不一致,通過這種方式,能夠在移動端確定應(yīng)用程序文件 的安全性,且不用輸入較長的代碼。
[0116] 其中,第一授權(quán)文件信息為第一簽名信息,第二授權(quán)文件信息為第二簽名信息。
[0117] 其中,獲取模塊101具體用于在應(yīng)用程序文件啟動時,通過網(wǎng)絡(luò)連接服務(wù)器,進而 從服務(wù)器獲得應(yīng)用程序文件的第二校驗碼;或,在應(yīng)用程序文件啟動時,獲取內(nèi)置在應(yīng)用程 序文件的第二校驗碼。
[0118] 其中,參見圖7,系統(tǒng)10還包括服務(wù)器200,服務(wù)器200包括:第一計算模塊201。
[0119]第一計算模塊201用于通過散列算法對應(yīng)用程序文件的正版已設(shè)置的第二簽名信 息進行計算,得到第二校驗碼。
[0120] 移動設(shè)備100的獲取模塊101具體用于通過散列算法對應(yīng)用程序文件本身攜帶的 第一簽名信息進行計算,得到第一校驗碼。
[0121] 其中,第二授權(quán)文件信息為與應(yīng)用程序文件的正版對應(yīng)的應(yīng)用程序文件包名、設(shè) 備序列號、設(shè)備型號、設(shè)定的有效期、功能限定信息中的至少一個類別的授權(quán)信息;第一授 權(quán)文件信息為與應(yīng)用程序文件對應(yīng)的應(yīng)用程序文件包名、設(shè)備序列號、設(shè)備型號、設(shè)定的有 效期、功能限定信息中的至少一個類別的授權(quán)信息。
[0122] 參見圖8,系統(tǒng)10還包括服務(wù)器200,服務(wù)器200包括:第一生成模塊202和第二計算 模塊203。
[0123] 第一生成模塊202用于生成與應(yīng)用程序文件的正版對應(yīng)的文本格式的第二授權(quán)文 件信息。
[0124] 第二計算模塊203用于通過散列算法對第二授權(quán)文件信息進行計算,得到授權(quán)校 驗碼,授權(quán)校驗碼即為第二校驗碼。
[0125] 移動設(shè)備100的獲取模塊101具體用于獲取授權(quán)文件包,授權(quán)文件包中包括第二校 驗碼的信息;通過散列算法對應(yīng)用程序文件本身攜帶的第一授權(quán)文件信息進行計算,得到 第一校驗碼。
[0126] 其中,參見圖9,服務(wù)器200還包括:第二生成模塊204和第三生成模塊205。
[0127] 第二生成模塊204用于通過非對稱加密算法生成公鑰和私鑰。
[0128] 第三生成模塊205用于使用私鑰對授權(quán)校驗碼加密,生成授權(quán)文件簽名。
[0129] 此時,移動設(shè)備100還用于:
[0130] 獲取內(nèi)置在應(yīng)用程序文件的公鑰。
[0131]通過公鑰對授權(quán)文件簽名進行解密,獲得授權(quán)驗證碼,授權(quán)驗證碼即為第二校驗 碼。
[0132] 其中,授權(quán)文件包中還包括第二授權(quán)文件信息,第二授權(quán)文件信息、第一授權(quán)文件 信息中每個類別的授權(quán)信息均對應(yīng)一個授權(quán)項;確定模塊還用于在第一校驗碼和第二校驗 碼一致時,將第二授權(quán)文件信息中每個授權(quán)項分別與第一授權(quán)文件信息中對應(yīng)的授權(quán)項進 行比對,若第二授權(quán)文件信息中每個授權(quán)項與第一授權(quán)文件信息中對應(yīng)的授權(quán)項都匹配, 則確定應(yīng)用程序文件通過驗證。
[0133] 以上所述僅為本發(fā)明的實施方式,并非因此限制本發(fā)明的專利范圍,凡是利用本 發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的 技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。
【主權(quán)項】
1. 一種應(yīng)用程序文件驗證的方法,其特征在于,所述方法包括: 移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼和第二校驗碼,其中,所述第一校驗碼是根 據(jù)所述應(yīng)用程序文件本身攜帶的第一授權(quán)文件信息得到的,所述第二校驗碼是根據(jù)所述應(yīng) 用程序文件的正版攜帶的第二授權(quán)文件信息得到的; 所述移動設(shè)備在所述第一校驗碼和所述第二校驗碼一致時,確定所述應(yīng)用程序文件通 過驗證。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一授權(quán)文件信息為第一簽名信息, 所述第二授權(quán)文件信息為第二簽名信息; 所述移動設(shè)備獲取所述應(yīng)用程序文件的第一校驗碼和第二校驗碼的步驟之前,還包 括: 服務(wù)器通過散列算法對所述應(yīng)用程序文件的正版已設(shè)置的所述第二簽名信息進行計 算,得到所述第二校驗碼; 所述移動設(shè)備獲取所述應(yīng)用程序文件的第一校驗碼和第二校驗碼的步驟,包括: 所述移動設(shè)備在所述應(yīng)用程序文件啟動時,通過網(wǎng)絡(luò)連接服務(wù)器,進而從所述服務(wù)器 獲得所述應(yīng)用程序文件的第二校驗碼,或,所述移動設(shè)備在所述應(yīng)用程序文件啟動時,獲取 內(nèi)置在所述應(yīng)用程序文件的所述第二校驗碼; 所述移動設(shè)備通過所述散列算法對所述應(yīng)用程序文件本身攜帶的所述第一簽名信息 進行計算,得到所述第一校驗碼。3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第二授權(quán)文件信息包括與所述應(yīng)用程 序文件的正版對應(yīng)的應(yīng)用程序文件包名、設(shè)備序列號、設(shè)備型號、設(shè)定的有效期、功能限定 信息中的至少一個類別的授權(quán)信息;所述第一授權(quán)文件信息包括與所述應(yīng)用程序文件對應(yīng) 的應(yīng)用程序文件包名、設(shè)備序列號、設(shè)備型號、設(shè)定的有效期、功能限定信息中的至少一個 類別的授權(quán)信息。4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述移動設(shè)備獲取應(yīng)用程序文件的第一校 驗碼和第二校驗碼的步驟之前,還包括: 服務(wù)器生成與所述應(yīng)用程序文件的正版對應(yīng)的文本格式的所述第二授權(quán)文件信息; 所述服務(wù)器通過散列算法對所述第二授權(quán)文件信息進行計算,得到授權(quán)校驗碼,所述 授權(quán)校驗碼即為所述第二校驗碼; 所述移動設(shè)備獲取應(yīng)用程序文件的第一校驗碼和第二校驗碼的步驟,包括: 所述移動設(shè)備獲取授權(quán)文件包,所述授權(quán)文件包中包括所述第二校驗碼的信息; 所述移動設(shè)備通過所述散列算法對所述應(yīng)用程序文件本身攜帶的所述第一授權(quán)文件 信息進行計算,得到所述第一校驗碼。5. 根據(jù)權(quán)利要求4所述的方法,其特征在于, 所述服務(wù)器通過散列算法對所述第二授權(quán)文件信息進行計算,得到授權(quán)校驗碼的步驟 之后,還包括: 所述服務(wù)器通過非對稱加密算法生成公鑰和私鑰; 所述服務(wù)器使用所述私鑰對所述授權(quán)校驗碼加密,生成授權(quán)文件簽名; 所述第二校驗碼的信息為所述授權(quán)文件簽名,所述移動設(shè)備獲取應(yīng)用程序文件的第一 校驗碼和第二校驗碼的步驟,還包括: 所述移動設(shè)備獲取內(nèi)置在所述應(yīng)用程序文件的所述公鑰; 所述移動設(shè)備通過所述公鑰對所述授權(quán)文件簽名進行解密,獲得所述授權(quán)驗證碼,所 述授權(quán)驗證碼即為所述第二校驗碼。6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述授權(quán)文件包中還包括所述第二授權(quán)文 件信息,所述第二授權(quán)文件信息、所述第一授權(quán)文件信息中每個類別的授權(quán)信息均對應(yīng)一 個授權(quán)項; 所述移動設(shè)備在所述第一校驗碼和所述第二校驗碼一致時,確定所述應(yīng)用程序文件通 過驗證,包括: 在所述第一校驗碼和所述第二校驗碼一致時,所述移動設(shè)備將所述第二授權(quán)文件信息 中每個授權(quán)項分別與所述第一授權(quán)文件信息中對應(yīng)的授權(quán)項進行比對,若所述第二授權(quán)文 件信息中每個授權(quán)項與所述第一授權(quán)文件信息中對應(yīng)的授權(quán)項都匹配,則確定所述應(yīng)用程 序文件通過驗證。7. -種應(yīng)用程序文件驗證的系統(tǒng),其特征在于,所述系統(tǒng)包括:移動設(shè)備,所述移動設(shè) 備包括: 獲取模塊,用于獲取應(yīng)用程序文件的第一校驗碼和第二校驗碼,其中,所述第一校驗碼 是根據(jù)所述應(yīng)用程序文件本身攜帶的第一授權(quán)文件信息得到的,所述第二校驗碼是根據(jù)所 述應(yīng)用程序文件的正版攜帶的第二授權(quán)文件信息得到的; 確定模塊,用于在所述第一校驗碼和所述第二校驗碼一致時,確定所述應(yīng)用程序文件 通過驗證。8. 根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述第一授權(quán)文件信息為第一簽名信息, 所述第二授權(quán)文件信息為第二簽名信息; 所述系統(tǒng)還包括:服務(wù)器,所述服務(wù)器包括: 第一計算模塊,用于通過散列算法對所述應(yīng)用程序文件的正版已設(shè)置的所述第二簽名 信息進行計算,得到所述第二校驗碼; 所述獲取模塊具體用于: 在所述應(yīng)用程序文件啟動時,通過網(wǎng)絡(luò)連接服務(wù)器,進而從所述服務(wù)器獲得所述應(yīng)用 程序文件的第二校驗碼,或,在所述應(yīng)用程序文件啟動時,獲取內(nèi)置在所述應(yīng)用程序文件的 所述第二校驗碼; 通過所述散列算法對所述應(yīng)用程序文件本身攜帶的所述第一簽名信息進行計算,得到 所述第一校驗碼。9. 根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述第二授權(quán)文件信息包括與所述應(yīng)用程 序文件的正版對應(yīng)的應(yīng)用程序文件包名、設(shè)備序列號、設(shè)備型號、設(shè)定的有效期、功能限定 信息中的至少一個類別的授權(quán)信息;所述第一授權(quán)文件信息包括與所述應(yīng)用程序文件對應(yīng) 的應(yīng)用程序文件包名、設(shè)備序列號、設(shè)備型號、設(shè)定的有效期、功能限定信息中的至少一個 類別的授權(quán)信息。10. 根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括:服務(wù)器,所述服務(wù)器包 括: 第一生成模塊,用于生成與所述應(yīng)用程序文件的正版對應(yīng)的文本格式的所述第二授權(quán) 文件信息; 第二計算模塊,用于通過散列算法對所述第二授權(quán)文件信息進行計算,得到授權(quán)校驗 碼,所述授權(quán)校驗碼即為所述第二校驗碼; 所述獲取模塊具體用于: 獲取授權(quán)文件包,所述授權(quán)文件包中包括所述第二校驗碼的信息; 通過所述散列算法對所述應(yīng)用程序文件本身攜帶的所述第一授權(quán)文件信息進行計算, 得到所述第一校驗碼。11. 根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于, 所述服務(wù)器還包括: 第二生成模塊,用于通過非對稱加密算法生成公鑰和私鑰; 第三生成模塊,用于使用所述私鑰對所述授權(quán)校驗碼加密,生成授權(quán)文件簽名; 所述第二校驗碼的信息為所述授權(quán)文件簽名,所述獲取模塊還用于: 獲取內(nèi)置在所述應(yīng)用程序文件的所述公鑰; 通過所述公鑰對所述授權(quán)文件簽名進行解密,獲得所述授權(quán)驗證碼,所述授權(quán)驗證碼 即為所述第二校驗碼。12. 根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述授權(quán)文件包中還包括所述第二授權(quán) 文件信息,所述第二授權(quán)文件信息、所述第一授權(quán)文件信息中每個類別的授權(quán)信息均對應(yīng) 一個授權(quán)項; 所述確定模塊還用于在所述第一校驗碼和所述第二校驗碼一致時,將所述第二授權(quán)文 件信息中每個授權(quán)項分別與所述第一授權(quán)文件信息中對應(yīng)的授權(quán)項進行比對,若所述第二 授權(quán)文件信息中每個授權(quán)項與所述第一授權(quán)文件信息中對應(yīng)的授權(quán)項都匹配,則確定所述 應(yīng)用程序文件通過驗證。
【文檔編號】G06F21/44GK106096381SQ201610395335
【公開日】2016年11月9日
【申請日】2016年6月6日 公開號201610395335.7, CN 106096381 A, CN 106096381A, CN 201610395335, CN-A-106096381, CN106096381 A, CN106096381A, CN201610395335, CN201610395335.7
【發(fā)明人】韓鵬程, 任靖, 周佳, 馮繼超
【申請人】北京壹人壹本信息科技有限公司