數(shù)字簽名方法及移動(dòng)終端和服務(wù)器的制造方法
【專利摘要】本發(fā)明實(shí)施例提供了數(shù)字簽名方法及移動(dòng)終端和服務(wù)器,所述方法包括:移動(dòng)終端對(duì)于二階散列值文件中的二階散列值序列,對(duì)該二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值進(jìn)行摘要計(jì)算,得到第一子摘要信息;將第一子摘要信息和代碼文件的二階散列值向服務(wù)器上傳;其中,二階散列值對(duì)應(yīng)原始文件;原始文件的二階散列值是根據(jù)該原始文件的一階散列值算得的,該原始文件的一階散列值是根據(jù)該原始文件的內(nèi)容算得的。本發(fā)明的技術(shù)方案中,由服務(wù)器保存私鑰,可以防止惡意程序竊取私鑰,保證后續(xù)生成的數(shù)字簽名文件更加安全可靠,使得移動(dòng)終端可以根據(jù)更安全可靠的數(shù)據(jù)簽名文件進(jìn)行簽名認(rèn)證,保護(hù)用戶利益,提高用戶體驗(yàn)。
【專利說(shuō)明】數(shù)字簽名方法及移動(dòng)終端和服務(wù)器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動(dòng)通信【技術(shù)領(lǐng)域】,具體而言,本發(fā)明涉及一種數(shù)字簽名方法及移動(dòng)終端和服務(wù)器。
【背景技術(shù)】
[0002]隨著科技的進(jìn)步和社會(huì)發(fā)展,移動(dòng)終端的使用已經(jīng)相當(dāng)?shù)膹V泛。越來(lái)越多的程序被技術(shù)人員開發(fā)出來(lái),以應(yīng)用于移動(dòng)終端中。
[0003]對(duì)于一個(gè)適用于移動(dòng)終端的程序,技術(shù)人員通常在開發(fā)出該程序的代碼文件、配置文件、資源文件、圖片等等原始文件后,對(duì)原始文件進(jìn)行數(shù)字簽名,得到簽名相關(guān)的文件;將該程序的原始文件和簽名相關(guān)的文件一起打包成安裝包,供用戶下載安裝。
[0004]以適用于安卓操作系統(tǒng)的程序?yàn)槔?,開發(fā)方的技術(shù)人員對(duì)于該程序的代碼文件Classex.dex、配置文件AndroidManifest.xml、資源文件、圖片等等原始文件,通常利用簽名工具程序?qū)Ω髟嘉募M(jìn)行簽名:計(jì)算出各原始文件的一階散列值記載到Manifest, mf文件中;根據(jù)各原始文件的一階散列值計(jì)算出各原始文件的二階散列值記載到Cert, sf文件中;對(duì)各二階散列值進(jìn)行摘要計(jì)算得到摘要信息;根據(jù)預(yù)先生成的私鑰對(duì)摘要信息進(jìn)行加密;根據(jù)加密結(jié)果以及預(yù)先生成的公鑰生成Cert, rsa文件。之后,將各原始文件,與簽名相關(guān)的Manifest, mf文件、Cert, sf文件和Cert, rsa文件一起打包成程序的安裝包。
[0005]移動(dòng)終端的操作系統(tǒng)接收到安裝程序的指令后,從該程序的安裝包中解壓出該程序的各原始文件、以及Manifest, mf文件、Cert, sf文件和Cert, rsa文件;利用Manifest,mf文件、Cert, sf文件和Cert, rsa文件,對(duì)各原始文件進(jìn)行簽名認(rèn)證,以驗(yàn)證原始文件是否被惡意程序所篡改。
[0006]此外,安裝于移動(dòng)終端中的第三方的安全類應(yīng)用程序,對(duì)于安全性未知的程序,通常需要從該程序的安裝包中解壓出各原始文件,對(duì)多個(gè)原始文件進(jìn)行適用于沙箱中運(yùn)行的修改后,重新進(jìn)行數(shù)字簽名,得到重新簽名的簽名相關(guān)的文件。將簽名相關(guān)的文件、與修改后的原始文件進(jìn)行二次打包,以便于該安全性未知的程序在創(chuàng)建的沙箱中安裝運(yùn)行。
[0007]但是,現(xiàn)有的數(shù)字簽名方法對(duì)程序的原始文件進(jìn)行數(shù)字簽名的過(guò)程通常是在移動(dòng)終端中執(zhí)行;也就是說(shuō),數(shù)字簽名過(guò)程中涉及的私鑰存放在移動(dòng)終端中;該方式容易導(dǎo)致惡意程序盜取私鑰后,即可隨意篡改待安裝程序的原始文件,也可以通過(guò)對(duì)篡改后的原始文件進(jìn)行重新簽名,得到合法的簽名相關(guān)的文件;現(xiàn)有的數(shù)字簽名方法可能導(dǎo)致被惡意程序劫持或污染的程序的安裝包,可以通過(guò)操作系統(tǒng)的簽名認(rèn)證而被允許安裝;進(jìn)一步地,可能造成惡意程序利用移動(dòng)終端中存儲(chǔ)的用戶信息執(zhí)行惡意行為。
[0008]因此,綜上,現(xiàn)有的數(shù)字簽名方法安全性較低,可能會(huì)給用戶帶來(lái)潛在的安全隱患,造成用戶的利益損失,從而降低了用戶的體驗(yàn)。
【發(fā)明內(nèi)容】
[0009]本發(fā)明針對(duì)現(xiàn)有的數(shù)字簽名方法的缺點(diǎn),提出一種數(shù)據(jù)簽名方法及移動(dòng)終端和服務(wù)器,用以解決現(xiàn)有的數(shù)字簽名方法存在的安全性較低的問(wèn)題。
[0010]本發(fā)明的技術(shù)方案根據(jù)一個(gè)方面,提供了一種移動(dòng)終端的數(shù)字簽名方法,包括:[0011 ] 移動(dòng)終端對(duì)于二階散列值文件中的二階散列值序列,對(duì)該二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值進(jìn)行摘要計(jì)算,得到第一子摘要信息;
[0012]將第一子摘要信息和所述代碼文件的二階散列值向服務(wù)器上傳;
[0013]其中,所述二階散列值對(duì)應(yīng)原始文件;所述原始文件的二階散列值是根據(jù)該原始文件的一階散列值算得的,該原始文件的一階散列值是根據(jù)該原始文件的內(nèi)容算得的;所述代碼文件是所述原始文件之一。
[0014]進(jìn)一步,所述將該二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值進(jìn)行摘要計(jì)算之前,還包括:
[0015]將所述代碼文件的二階散列值,移動(dòng)到所述二階散列值序列的末尾,得到二階散列值序列重排后的二階散列值文件。
[0016]進(jìn)一步,所述移動(dòng)終端的數(shù)字簽名方法,還包括:
[0017]所述移動(dòng)終端接收到所述服務(wù)器返回的數(shù)字簽名文件后,對(duì)于一階散列值文件中的一階散列值序列,將該一階散列值序列中所述代碼文件的一階散列值,移動(dòng)到所述一階散列值序列的末尾,得到一階散列值序列重排后的一階散列值文件;
[0018]將所述數(shù)字簽名文件、二階散列值序列重排后的二階散列值文件、一階散列值序列重排后的一階散列值文件,以及所述二階散列值序列中各二階散列值各自對(duì)應(yīng)的原始文件一起打包成安裝包。
[0019]較佳地,所述一階散列值文件具體為Manifest, mf文件;所述二階散列值文件具體為Cert, sf文件;所述數(shù)字簽名文件具體為Cert, rsa文件。
[0020]本發(fā)明的技術(shù)方案根據(jù)另一個(gè)方面,還提供了一種服務(wù)器端的數(shù)字簽名方法,包括:
[0021]接收到移動(dòng)終端上傳的第一子摘要信息和代碼文件的二階散列值后,對(duì)接收的代碼文件的二階散列值進(jìn)行摘要計(jì)算,得到第二子摘要信息;
[0022]根據(jù)所述代碼文件的二階散列值預(yù)設(shè)在二階散列值文件中的二階散列值序列中的位置信息,將第一子摘要信息與第二子摘要信息拼接成摘要信息;
[0023]根據(jù)預(yù)先生成的私鑰對(duì)所述摘要信息進(jìn)行非對(duì)稱加密;
[0024]根據(jù)加密結(jié)果、以及預(yù)先生成的公鑰,生成數(shù)字簽名文件返回至所述移動(dòng)終端。
[0025]進(jìn)一步,所述對(duì)接收的代碼文件的二階散列值進(jìn)行摘要計(jì)算之前,還包括:
[0026]根據(jù)預(yù)存的經(jīng)過(guò)認(rèn)證的代碼文件的二階散列值,對(duì)接收的代碼文件的二階散列值進(jìn)行校驗(yàn)。
[0027]本發(fā)明的技術(shù)方案根據(jù)另一個(gè)方面,還提供了一種移動(dòng)終端的安全防護(hù)方法,包括:
[0028]確定目標(biāo)應(yīng)用,保存其安裝包至指定目錄;
[0029]利用目標(biāo)應(yīng)用的安裝包配置外殼應(yīng)用安裝包,向所述目標(biāo)應(yīng)用的安裝包注入用于調(diào)用監(jiān)控單元的粧模塊,修改所述目標(biāo)應(yīng)用的安裝包的配置參數(shù)以用于加載所述目標(biāo)應(yīng)用,所述監(jiān)控單元用于實(shí)現(xiàn)對(duì)源自所述目標(biāo)應(yīng)用的事件行為的掛鉤監(jiān)控;
[0030]對(duì)于所述外殼應(yīng)用安裝包中的每個(gè)原始文件,根據(jù)該原始文件的內(nèi)容算得該原始文件的一階散列值,進(jìn)而根據(jù)所述一階散列值算得該原始文件的二階散列值;將所述安裝包中各原始文件的二階散列值組成二階散列值序列記錄到二階散列值文件中;所述各原始文件中包括代碼文件;
[0031]對(duì)于所述二階散列值序列中除了代碼文件的二階散列值文件之外的各二階散列值進(jìn)行摘要計(jì)算,得到第一子摘要信息;將第一子摘要信息和所述代碼文件的二階散列值向服務(wù)器上傳;
[0032]根據(jù)所述服務(wù)器返回的數(shù)字簽名文件,對(duì)所述各原始文件進(jìn)行簽名認(rèn)證;認(rèn)證通過(guò)后安裝所述各原始文件;加載運(yùn)行所述目標(biāo)應(yīng)用和所述監(jiān)控單元;
[0033]根據(jù)監(jiān)控的結(jié)果判斷所述目標(biāo)應(yīng)用的安全性。
[0034]進(jìn)一步,所述根據(jù)監(jiān)控的結(jié)果判斷所述目標(biāo)應(yīng)用的安全性的步驟,還包括:
[0035]當(dāng)監(jiān)控到目標(biāo)應(yīng)用進(jìn)程觸發(fā)釋放子進(jìn)程的事件行為時(shí),為該子進(jìn)程加載監(jiān)控單元,以繼續(xù)監(jiān)控該子進(jìn)程所觸發(fā)的事件行為。
[0036]較佳地,所述運(yùn)行所述目標(biāo)應(yīng)用,具體包括:
[0037]響應(yīng)運(yùn)行目標(biāo)應(yīng)用的指令,運(yùn)行相應(yīng)的外殼應(yīng)用;
[0038]利用所述外殼應(yīng)用先后加載所述監(jiān)控單元及所述目標(biāo)應(yīng)用。
[0039]進(jìn)一步,在所述響應(yīng)運(yùn)行目前應(yīng)用的指令之前,還包括:
[0040]在圖形用戶界面中提供快捷方式用于獲取所述運(yùn)行目標(biāo)應(yīng)用的指令,該快捷方式的圖標(biāo)由目標(biāo)應(yīng)用默認(rèn)圖標(biāo)修改而得,監(jiān)控目標(biāo)應(yīng)用的運(yùn)行狀態(tài);
[0041]其中,外殼應(yīng)用通過(guò)其內(nèi)建的交互接口與預(yù)設(shè)的交互模塊通信,借助該交互模塊向圖形用戶界面彈窗實(shí)現(xiàn)人機(jī)交互;所述交互模塊被預(yù)先注冊(cè)為系統(tǒng)服務(wù)。
[0042]本發(fā)明的技術(shù)方案根據(jù)另一個(gè)方面,還提供了一種移動(dòng)終端,包括:
[0043]第一子摘要信息計(jì)算模塊,用于對(duì)于二階散列值文件中的二階散列值序列,將該二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值進(jìn)行摘要計(jì)算,得到第一子摘要信息;其中,所述二階散列值對(duì)應(yīng)原始文件;所述原始文件的二階散列值是根據(jù)該原始文件的一階散列值算得的,該原始文件的一階散列值是根據(jù)該原始文件的內(nèi)容算得的;
[0044]上傳模塊,用于將第一子摘要信息和所述代碼文件的二階散列值向服務(wù)器上傳。
[0045]進(jìn)一步,所述移動(dòng)終端,還包括:
[0046]散列值移序模塊,用于將所述二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值進(jìn)行摘要計(jì)算之前,將所述代碼文件的二階散列值,移動(dòng)到所述二階散列值序列的末尾,得到二階散列值序列重排后的二階散列值文件。
[0047]本發(fā)明的技術(shù)方案根據(jù)另一個(gè)方面,還提供了一種服務(wù)器,包括:
[0048]第二子摘要信息計(jì)算模塊,用于接收到移動(dòng)終端上傳的第一子摘要信息和代碼文件的二階散列值后,對(duì)接收的代碼文件的二階散列值進(jìn)行摘要計(jì)算,得到第二子摘要信息;
[0049]摘要信息拼接模塊,用于根據(jù)所述代碼文件的二階散列值預(yù)設(shè)在二階散列值文件中的二階散列值序列中的位置,將第一子摘要信息與第二子摘要信息拼接成摘要信息;
[0050]數(shù)字簽名文件生成模塊,用于根據(jù)預(yù)先生成的私鑰對(duì)所述摘要信息進(jìn)行非對(duì)稱加密;根據(jù)加密結(jié)果、以及預(yù)先生成的公鑰,生成數(shù)字簽名文件向所述移動(dòng)終端返回。
[0051]進(jìn)一 7步,所述服務(wù)器,還包括:
[0052]校驗(yàn)?zāi)K,用于根據(jù)預(yù)存的經(jīng)過(guò)認(rèn)證的代碼文件的二階散列值,對(duì)第二子摘要信息計(jì)算模塊接收的代碼文件的二階散列值進(jìn)行校驗(yàn)。
[0053]本發(fā)明的技術(shù)方案,由服務(wù)器保存私鑰并利用私鑰對(duì)摘要信息進(jìn)行加密;與由移動(dòng)終端保存私鑰并利用私鑰進(jìn)行加密相比,憑借服務(wù)器遠(yuǎn)超移動(dòng)終端的防護(hù)能力,可以防止惡意程序竊取私鑰,保證后續(xù)生成的數(shù)字簽名文件更加安全可靠,使得移動(dòng)終端可以根據(jù)更安全可靠的數(shù)據(jù)簽名文件,對(duì)該程序的原始文件進(jìn)行簽名認(rèn)證,可以有效地消除惡意程序篡改程序的原始文件所帶來(lái)的危害,保護(hù)用戶利益,提高用戶體驗(yàn)。
[0054]而且,本發(fā)明的技術(shù)方案,根據(jù)摘要計(jì)算分步驟計(jì)算的特點(diǎn),由移動(dòng)終端計(jì)算出程序的除了代碼文件之外的原始文件的二階散列值的第一子摘要信息,將程序的代碼文件的二階散列值、以及第一子摘要信息上傳至服務(wù)器進(jìn)行后續(xù)計(jì)算;與上傳整個(gè)二階散列值文件相比,大大降低了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,有效地降低了用戶因上傳數(shù)據(jù)而所需的費(fèi)用,大大拓寬了本發(fā)明實(shí)施例的技術(shù)方案的適用范圍。
[0055]進(jìn)一步,本發(fā)明的技術(shù)方案中,服務(wù)器對(duì)移動(dòng)終端上傳的代碼文件的二階散列值進(jìn)行校驗(yàn),相當(dāng)于對(duì)移動(dòng)終端的代碼文件進(jìn)行校驗(yàn),保證了上傳的代碼文件的二階散列值的安全可靠性,有利于在后續(xù)步驟中生成更安全可靠的數(shù)字簽名文件。
[0056]本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。
【專利附圖】
【附圖說(shuō)明】
[0057]本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:
[0058]圖1為本發(fā)明實(shí)施例的數(shù)字簽名方法的流程示意圖;
[0059]圖2為本發(fā)明實(shí)施例的移動(dòng)終端的內(nèi)部結(jié)構(gòu)的框架示意圖;
[0060]圖3為本發(fā)明實(shí)施例的服務(wù)器的內(nèi)容結(jié)構(gòu)的框架示意圖;
[0061]圖4為本發(fā)明實(shí)施例的移動(dòng)終端的安全防護(hù)方法的流程示意圖;
[0062]圖5為根據(jù)本發(fā)明實(shí)現(xiàn)的一個(gè)程序?qū)嵗挠脩艚缑嬷唬糜谡故緬呙璧降膽?yīng)用程序列表,并向用戶提供用于確定目標(biāo)應(yīng)用的選擇區(qū)域;
[0063]圖6為根據(jù)本發(fā)明實(shí)現(xiàn)的一個(gè)程序?qū)嵗挠脩艚缑嬷唬糜谡故景l(fā)現(xiàn)未防御應(yīng)用之后的彈框交互功能;
[0064]圖7為本發(fā)明的安全防護(hù)方法中將安裝原包配置成外殼應(yīng)用的過(guò)程的原理示意圖;
[0065]圖8為本發(fā)明的安全防護(hù)方法中利用外殼應(yīng)用的運(yùn)行對(duì)目標(biāo)應(yīng)用的事件行為進(jìn)行監(jiān)控的原理示意圖;
[0066]圖9為本發(fā)明的安全防護(hù)方法中對(duì)捕獲的事件進(jìn)行處理的原理示意圖
[0067]圖10為根據(jù)本發(fā)明實(shí)現(xiàn)的一個(gè)程序?qū)嵗挠脩艚缑嬷唬糜谡故具M(jìn)行事件行為攔截后的人機(jī)交互效果,具體是攔截發(fā)送短信的事件行為
[0068]圖11為根據(jù)本發(fā)明實(shí)現(xiàn)的一個(gè)程序?qū)嵗挠脩艚缑嬷?,用于展示進(jìn)行事件行為攔截后的人機(jī)交互效果,具體是攔截插入短信的事件行為
[0069]圖12為根據(jù)本發(fā)明實(shí)現(xiàn)的一個(gè)程序?qū)嵗挠脩艚缑嬷唬糜谡故締蝹€(gè)應(yīng)用所有事件行為的默認(rèn)處理策略,并提供給用戶對(duì)處理策略進(jìn)行修改的選項(xiàng)。
【具體實(shí)施方式】
[0070]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個(gè)”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說(shuō)明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時(shí),它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無(wú)線連接或無(wú)線耦接。這里使用的措辭“和/或”包括一個(gè)或更多個(gè)相關(guān)聯(lián)的列出項(xiàng)的全部或任一單元和全部組合。
[0071]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(yǔ)(包括技術(shù)術(shù)語(yǔ)和科學(xué)術(shù)語(yǔ)),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語(yǔ),應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會(huì)用理想化或過(guò)于正式的含義來(lái)解釋。
[0072]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,這里所使用的“終端”、“終端設(shè)備”既包括無(wú)線信號(hào)接收器的設(shè)備,其僅具備無(wú)發(fā)射能力的無(wú)線信號(hào)接收器的設(shè)備,又包括接收和發(fā)射硬件的設(shè)備,其具有能夠在雙向通信鏈路上,執(zhí)行雙向通信的接收和發(fā)射硬件的設(shè)備。這種設(shè)備可以包括:蜂窩或其他通信設(shè)備,其具有單線路顯示器或多線路顯示器或沒(méi)有多線路顯示器的蜂窩或其他通信設(shè)備;PCS (Personal Communicat1ns Service,個(gè)人通信系統(tǒng)),其可以組合語(yǔ)音、數(shù)據(jù)處理、傳真和/或數(shù)據(jù)通信能力;PDA (Personal Digital Assistant,個(gè)人數(shù)字助理),其可以包括射頻接收器、尋呼機(jī)、互聯(lián)網(wǎng)/內(nèi)聯(lián)網(wǎng)訪問(wèn)、網(wǎng)絡(luò)瀏覽器、記事本、日歷和/或GPS (Global Posit1ning System,全球定位系統(tǒng))接收器;常規(guī)膝上型和/或掌上型計(jì)算機(jī)或其他設(shè)備,其具有和/或包括射頻接收器的常規(guī)膝上型和/或掌上型計(jì)算機(jī)或其他設(shè)備。這里所使用的“終端”、“終端設(shè)備”可以是便攜式、可運(yùn)輸、安裝在交通工具(航空、海運(yùn)和/或陸地)中的,或者適合于和/或配置為在本地運(yùn)行,和/或以分布形式,運(yùn)行在地球和/或空間的任何其他位置運(yùn)行。這里所使用的“終端”、“終端設(shè)備”還可以是通信終端、上網(wǎng)終端、音樂(lè)/視頻播放終端,例如可以是PDA、MID(Mobile Internet Device,移動(dòng)互聯(lián)網(wǎng)設(shè)備)和/或具有音樂(lè)/視頻播放功能的移動(dòng)電話,也可以是智能電視、機(jī)頂盒等設(shè)備。
[0073]本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明所稱的“應(yīng)用”、“應(yīng)用程序”、“應(yīng)用軟件”以及類似表述的概念,是業(yè)內(nèi)技術(shù)人員所公知的相同概念,是指由一系列計(jì)算機(jī)指令及相關(guān)數(shù)據(jù)資源有機(jī)構(gòu)造的適于電子運(yùn)行的計(jì)算機(jī)軟件。除非特別指定,這種命名本身不受編程語(yǔ)言種類、級(jí)別,也不受其賴以運(yùn)行的操作系統(tǒng)或平臺(tái)所限制。理所當(dāng)然地,此類概念也不受任何形式的終端所限制。同理,本發(fā)明所稱的“目標(biāo)應(yīng)用”、“安裝包”之間存在對(duì)應(yīng)關(guān)系,安裝包為目標(biāo)應(yīng)用的文件存在形式。
[0074]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。
[0075]本發(fā)明的方法所應(yīng)用的環(huán)境包括可與遠(yuǎn)程服務(wù)器或云端通信的移動(dòng)終端,該移動(dòng)終端安裝有Android操作系統(tǒng),該系統(tǒng)處于未經(jīng)ROOT授權(quán)的狀態(tài)。需要指出的是,即使該操作系統(tǒng)處于ROOT授權(quán)后的狀態(tài),本發(fā)明所述的各種方法也依然適用于該操作系統(tǒng)中。也就是說(shuō),本發(fā)明各種方法的實(shí)現(xiàn),不受操作系統(tǒng)是否開放最高權(quán)限所限制。
[0076]本發(fā)明的發(fā)明人考慮到,以適用于安卓操作系統(tǒng)的程序?yàn)槔?,可以由移?dòng)終端計(jì)算出該程序的原始文件的二階散列值記錄到相應(yīng)的文件(為便于描述,本文后續(xù)稱該文件為二階散列值文件)中,并將二階散列值文件上傳至服務(wù)器;可以由云端的服務(wù)器保存預(yù)先生成的私鑰和公鑰,并對(duì)接收的二階散列值文件中的二階散列值進(jìn)行摘要計(jì)算;根據(jù)私鑰、公鑰和算得的摘要信息,生成數(shù)據(jù)簽名文件的過(guò)程,也在服務(wù)器端完成。之后,將數(shù)據(jù)簽名文件返回移動(dòng)終端。憑借服務(wù)器遠(yuǎn)超移動(dòng)終端的防護(hù)能力,可以防止惡意程序竊取私鑰,保證生成的數(shù)字簽名文件更加安全可靠,使得移動(dòng)終端可以根據(jù)更安全可靠的數(shù)據(jù)簽名文件,對(duì)該程序的原始文件進(jìn)行簽名認(rèn)證,有效地消除惡意程序篡改程序的原始文件所帶來(lái)的危害。
[0077]本發(fā)明的發(fā)明人進(jìn)一步發(fā)現(xiàn),當(dāng)程序的原始文件的數(shù)量較大(例如幾百個(gè)、幾千個(gè))時(shí),原始文件的二階散列值的數(shù)量也較大,容易造成二階散列值文件所占用較大存儲(chǔ)空間,將該文件上傳至服務(wù)器通常需要耗費(fèi)較大的數(shù)據(jù)流量,造成用戶付出較多的成本。因此,移動(dòng)終端通常在移動(dòng)終端開啟WiFi (Wireless Fidelity,無(wú)線局域網(wǎng))的情況下上傳二階散列值文件,而在開啟 2G (2nd_Generat1n wireless telephone technology,第二代手機(jī)通信技術(shù))/3G (3rd_Generat1n wireless telephone technology,第三代手機(jī)通信技術(shù))/LTE(Long Term Evolut1n,長(zhǎng)期演進(jìn))網(wǎng)絡(luò)等移動(dòng)網(wǎng)絡(luò)的情況下不上傳該文件;從而導(dǎo)致服務(wù)器根據(jù)上傳的二階散列值文件生成數(shù)字簽名文件的數(shù)字簽名方法的適用范圍受到限制。
[0078]本發(fā)明的發(fā)明人為了實(shí)現(xiàn)在對(duì)程序的原始文件進(jìn)行數(shù)字簽名的過(guò)程中,由服務(wù)器完成根據(jù)私鑰對(duì)摘要信息進(jìn)行加密的步驟,并且減少移動(dòng)終端上傳至服務(wù)器的數(shù)據(jù)量,以增強(qiáng)數(shù)字簽名文件的安全可靠性且擴(kuò)大該數(shù)字簽名方法的適用范圍,對(duì)數(shù)字簽名的過(guò)程進(jìn)行了較為深入的研宄。
[0079]本發(fā)明的發(fā)明人經(jīng)過(guò)研宄發(fā)現(xiàn),二階散列值文件中各原始文件的二階散列值排列成二階散列值序列;對(duì)二階散列值序列進(jìn)行摘要計(jì)算的過(guò)程,實(shí)際上是逐步進(jìn)行的,每一步對(duì)該序列中一個(gè)二階散列值進(jìn)行摘要計(jì)算,得到該二階散列值的子摘要信息,直到最終算得整個(gè)二階散列值序列的摘要信息。
[0080]因此,摘要信息相當(dāng)于是由各二階散列值的子摘要信息,依照各二階散列值在二階散列值序列中的位置順序,拼接而成。在保證拼接順序不變的情況下,哪個(gè)二階散列值先進(jìn)行摘要計(jì)算,哪個(gè)二階散列值后進(jìn)行摘要計(jì)算,都不會(huì)影響最終得到的二階散列值序列的摘要信息。因此,可以對(duì)二階散列值序列進(jìn)行拆分,將一部分二階散列值留在移動(dòng)終端中進(jìn)行摘要計(jì)算后上傳算得的中間結(jié)果,另一部分二階散列值上傳到服務(wù)器進(jìn)行摘要計(jì)算,與上傳整個(gè)二階散列值文件相比,大大降低了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量。
[0081]本發(fā)明的發(fā)明人進(jìn)一步研宄發(fā)現(xiàn),惡意程序通常通過(guò)篡改程序的原始文件中的代碼文件,由篡改后的代碼文件來(lái)執(zhí)行惡意行為。那么由服務(wù)器代替移動(dòng)終端對(duì)代碼文件的二階散列值進(jìn)行摘要計(jì)算,并執(zhí)行數(shù)字簽名過(guò)程中摘要計(jì)算后續(xù)的步驟,可以生成更安全可靠的數(shù)字簽名文件;移動(dòng)終端可以根據(jù)更安全可靠的數(shù)字簽名文件,識(shí)別出本移動(dòng)終端中程序的代碼文件是否被篡改;從而可以拒絕安裝被篡改的代碼文件來(lái)杜絕惡意行為,有效地消除惡意行為所帶來(lái)的危害,保護(hù)用戶利益,提高用戶體驗(yàn)。
[0082]基于上述研宄分析,下面結(jié)合附圖具體介紹本發(fā)明實(shí)施例的技術(shù)方案。
[0083]移動(dòng)終端對(duì)于本移動(dòng)終端中的程序,針對(duì)該程序待打包的每個(gè)原始文件,利用散列算法對(duì)該原始文件的內(nèi)容進(jìn)行計(jì)算,對(duì)計(jì)算結(jié)果進(jìn)行編碼后,得到該原始文件的一階散列值,并將該原始文件的名稱與一階散列值一并記錄到一階散列值文件中。一階散列值具體可以是設(shè)定位數(shù)的字符串。
[0084]較佳地,移動(dòng)終端對(duì)于程序的原始文件,可以利用SHA(Secure Hash Algorith,安全哈希算法)1對(duì)該原始文件的內(nèi)容進(jìn)行計(jì)算,得到一個(gè)固定位數(shù)的字符串,對(duì)該字符串進(jìn)行Base64編碼后,得到該原始文件的一階散列值。
[0085]較佳地,程序的一階散列值文件可以是Manifest, mf文件。程序的一階散列值文件中,該程序的各原始文件的一階散列值排列成一階散列值序列;且對(duì)應(yīng)原始文件的名稱對(duì)應(yīng)記錄該原始文件的一階散列值。
[0086]更優(yōu)的,一階散列值文件中記錄的原始文件的名稱,可以包括該原始文件的存放的路徑;該路徑以代碼文件所在的目錄為根目錄。
[0087]例如,一階散列值文件中記錄有如下包含N個(gè)一階散列值的一階散列值序列:
[0088]原始文件I 的名稱:res/drawable/bg_web_progress.xml
[0089]原始文件I 的一階散列值:GEvfG3xwR+RoBhUaEPEbEJXpz04 =
[0090]原始文件2 的名稱:res/anim/zoomout_30_bottom.xml
[0091]原始文件2 的一階散列值:ESybMUibcTWOWwbmLT6kyDDndjO =
[0092]原始文件3 的名稱:res/drawable-nodpi_v4/ic_clear_focus.png
[0093]原始文件3 的一階散列值:I jr85w4Jz6EtQ2oHwZTz8QQ0cxo =
[0094]......
[0095]原始文件N的名稱:classes, dex
[0096]原始文件N 的一階散列值:gFgVRUSfqiKi7igP2Z8IIvw4SIc =
[0097]其中,N為大于3的自然數(shù)。
[0098]更優(yōu)的,一階散列值文件中還記錄有一階散列值文件的版本信息、以及創(chuàng)建一階散列值文件的系統(tǒng)程序的版本信息。
[0099]移動(dòng)終端在得到記錄有程序的一階散列值序列的一階散列值文件后,對(duì)于一階散列值序列中每個(gè)原始文件的一階散列值,利用散列算法對(duì)該原始文件的一階散列值進(jìn)行計(jì)算,對(duì)計(jì)算結(jié)果進(jìn)行編碼后,得到該原始文件的二階散列值,并將該原始文件的名稱與二階散列值一并記錄到二階散列值文件中。二階散列值具體可以是設(shè)定位數(shù)的字符串。
[0100]較佳地,移動(dòng)終端還可以利用散列算法對(duì)一階散列值文件的整體內(nèi)容進(jìn)行計(jì)算,對(duì)計(jì)算結(jié)果進(jìn)行編碼后,得到一階散列值文件的散列值,記錄到二階散列值文件中。
[0101]較佳地,移動(dòng)終端對(duì)于一階散列值序列中每個(gè)原始文件的一階散列值,可以利用SHA (Secure Hash Algorith,安全哈希算法)I對(duì)該原始文件的一階散列值進(jìn)行計(jì)算,得到一個(gè)固定位數(shù)的字符串,對(duì)該字符串進(jìn)行Base64編碼后,得到該原始文件的二階散列值。
[0102]較佳地,程序的二階散列值文件可以是Cert, sf文件。程序的二階散列值文件中,該程序的各原始文件的二階散列值排列成二階散列值序列;且對(duì)應(yīng)原始文件的名稱對(duì)應(yīng)記錄該原始文件的二階散列值。
[0103]更優(yōu)的,二階散列值文件中記錄的原始文件的名稱,可以包括該原始文件的存放的路徑;該路徑以代碼文件所在的目錄為根目錄。
[0104]例如:二階散列值文件中記錄有如下包含N個(gè)二階散列值的二階散列值序列:
[0105]原始文件I 的名稱:res/drawable/bg_web_progress.xml
[0106]原始文件I 的二階散列值:Kt/suoPcs6qs80+371aQz6kM+7w =
[0107]原始文件2 的名稱:res/anim/zoomout_30_bottom.xml
[0108]原始文件2 的二階散列值:qlausfeQlU5TtwaCOXb2YLZ6wT4 =
[0109]原始文件3 的名稱:res/drawable-nodp1-v4/ic_clear_focus.png
[0110]原始文件3 的二階散列值:qTJugXHfniznJxtJBvLfZIxLZAc =
[0111]......
[0112]原始文件N的名稱:classes.dex
[0113]原始文件N 的二階散列值:yGfugoL/4nElByb3uMco0cSnrDE =
[0114]更優(yōu)的,二階散列值文件中還記錄有本二階散列值文件的版本信息、以及創(chuàng)建本二階散列值文件的系統(tǒng)程序的版本信息。
[0115]基于上述移動(dòng)終端計(jì)算得到的程序的一階散列值文件和二散列值文件,本發(fā)明實(shí)施例的數(shù)字簽名方法的流程示意圖如圖1所示,包括如下步驟:
[0116]SlOl:移動(dòng)終端對(duì)于二階散列值文件中的二階散列值序列,對(duì)該二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值進(jìn)行摘要計(jì)算,得到第一子摘要信息。
[0117]具體地,移動(dòng)終端對(duì)于程序的二階散列值文件中的二階散列值序列,依照二階散列值序列中各二階散列值的排列順序、或者隨機(jī)順序等任意順序,利用摘要算法,對(duì)該二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值分別進(jìn)行摘要計(jì)算,得到除了代碼文件之外的各原始文件的二階散列值各自的摘要信息片段。較佳地,代碼文件具體可以是classex.dex文件。
[0118]較佳地,摘要算法可以是MD (Message Digest algorithm,消息摘要算法),例如DM5 ;或者摘要算法可以是SHA,例如SHAl ;或者摘要算法可以是RIPEMD (RACE IntegrityPrimitives Evaluat1n Message Digest,RACE 原始完整性校驗(yàn)消息摘要)算法。
[0119]移動(dòng)終端將除了代碼文件之外的各原始文件的二階散列值各自的摘要信息片段進(jìn)行拼接,得到第一摘要信息。
[0120]較佳地,移動(dòng)終端依照二階散列值序列中各二階散列值的排列順序,將除了代碼文件之外的各原始文件的二階散列值各自的摘要信息片段,依次進(jìn)行拼接,得到第一摘要信息。
[0121]較佳地,第一摘要信息具體可以是設(shè)定位數(shù)的字符串;例如,設(shè)定位數(shù)的二進(jìn)制數(shù)字串。更優(yōu)的,合理地選擇摘要算法,可以進(jìn)一步縮減第一摘要信息的位數(shù);例如,將第一摘要信息的位數(shù)縮減為96位。
[0122]更優(yōu)的,移動(dòng)終端在進(jìn)行摘要計(jì)算之前,還可以將程序的代碼文件的二階散列值,移動(dòng)到二階散列值序列的末尾,得到二階散列值序列重排后的二階散列值文件。
[0123]S102:移動(dòng)終端將第一子摘要信息和代碼文件的二階散列值向服務(wù)器上傳。
[0124]較佳地,移動(dòng)終端根據(jù)程序的代碼文件的名稱,從二階散列值文件中查找出與代碼文件的名稱對(duì)應(yīng)記錄的代碼文件的二階散列值;將查找出的代碼文件的二階散列值,與上述步驟SlOl中算得的第一子摘要信息一并通過(guò)互聯(lián)網(wǎng)等網(wǎng)絡(luò)向服務(wù)器上傳。
[0125]與上傳整個(gè)二階散列值文件相比,僅僅上傳一個(gè)原始文件的二階散列值、以及設(shè)定位數(shù)的第一子摘要信息,大大減少了上傳到服務(wù)器的數(shù)據(jù)量;即使移動(dòng)終端在WiFi之外的2G/3G/LTE網(wǎng)絡(luò)等網(wǎng)絡(luò)環(huán)境下,將一個(gè)二階散列值和第一子摘要信息上傳至服務(wù)器所耗費(fèi)的流量也很少,用戶完全可以承受小流量數(shù)據(jù)所產(chǎn)生的資費(fèi);從而大大擴(kuò)寬了本發(fā)明的數(shù)字簽名方法的應(yīng)用范圍。
[0126]S103:服務(wù)器接收到移動(dòng)終端上傳的第一子摘要信息和代碼文件的二階散列值后,對(duì)接收的代碼文件的二階散列值進(jìn)行摘要計(jì)算,得到第二子摘要信息。
[0127]具體地,服務(wù)器接收到移動(dòng)終端上傳的第一子摘要信息和代碼文件的二階散列值后,利用與上述步驟SlOl中相同的摘要算法,對(duì)接收的代碼文件的二階散列值進(jìn)行摘要計(jì)算,得到代碼文件的二階散列值的摘要片段,并將代碼文件的二階散列值的摘要片段作為第二子摘要信息。
[0128]較佳地,第二摘要信息具體可以是設(shè)定位數(shù)的字符串;例如,設(shè)定位數(shù)的二進(jìn)制數(shù)字串。
[0129]較佳地,服務(wù)器在對(duì)接收的代碼文件的二階散列值進(jìn)行摘要計(jì)算之前,還可以根據(jù)預(yù)存的經(jīng)過(guò)認(rèn)證的代碼文件的二階散列值,對(duì)接收的代碼文件的二階散列值進(jìn)行校驗(yàn)。經(jīng)過(guò)認(rèn)證的代碼文件的二階散列值是服務(wù)器根據(jù)預(yù)存的經(jīng)過(guò)認(rèn)證的代碼文件計(jì)算得到的,具體計(jì)算方法與移動(dòng)終端根據(jù)程序的原始文件、算得該原始文件的二階散列值的方法相同,此處不再贅述。
[0130]例如,服務(wù)器將接收的代碼文件的二階散列值,與預(yù)存的經(jīng)過(guò)認(rèn)證的代碼文件的二階散列值進(jìn)行逐位對(duì)比,判斷兩者的每一位字符是否都一致:若是,則判斷出接收的二階散列值對(duì)應(yīng)的代碼文件,與經(jīng)過(guò)認(rèn)證的代碼文件一致,進(jìn)而確定出接收的二階散列值對(duì)應(yīng)的代碼文件未被篡改;否則,判斷出接收的二階散列值對(duì)應(yīng)的代碼文件,與經(jīng)過(guò)認(rèn)證的代碼文件不一致,進(jìn)而確定出接收的二階散列值對(duì)應(yīng)的代碼文件已經(jīng)被篡改。
[0131]更優(yōu)的,程序的經(jīng)過(guò)認(rèn)證的代碼文件可以是官方發(fā)布的該程序的代碼文件。或者,程序的經(jīng)過(guò)認(rèn)證的代碼文件可以是經(jīng)過(guò)第三方的安全程序或相關(guān)程序修改后的代碼文件,以便于在隔離環(huán)境下安裝運(yùn)行該程序的代碼文件;例如,經(jīng)過(guò)認(rèn)證的代碼文件可以是經(jīng)過(guò)修改的適用于在沙箱環(huán)境下安裝運(yùn)行的代碼文件。
[0132]惡意程序通常通過(guò)篡改程序的代碼文件,由篡改后的代碼文件來(lái)執(zhí)行惡意行為。本步驟中,由服務(wù)器對(duì)移動(dòng)終端中的代碼文件的二階散列值進(jìn)行校驗(yàn),相當(dāng)于由服務(wù)器對(duì)移動(dòng)終端中的代碼文件進(jìn)行校驗(yàn);可以有效地校驗(yàn)出移動(dòng)終端中的代碼文件是否被未知程序(例如惡意程序)篡改,從而可以使得本發(fā)明實(shí)施例的數(shù)字簽名方法的更安全可靠。
[0133]S104:服務(wù)器根據(jù)接收的代碼文件的二階散列值預(yù)設(shè)在二階散列值文件中的二階散列值序列中的位置信息,將第一子摘要信息與第二子摘要信息拼接成摘要信息。
[0134]具體地,服務(wù)器中預(yù)存有程序的代碼文件的二階散列值預(yù)設(shè)在二階散列值文件中的二階散列值序列中的位置信息。
[0135]例如,服務(wù)器中預(yù)存有程序的原始文件列表,該列表中包含了代碼文件在該程序的所有原始文件中的位置信息,由于二階散列值文件中原始文件與其二階散列值對(duì)應(yīng)記錄,即代碼文件在原始文件列表中的位置與代碼文件的二階散列值在二階散列值序列中的位置相對(duì)應(yīng),因此相當(dāng)于服務(wù)器中預(yù)設(shè)有代碼文件的二階散列值在二階散列值文件中的二階散列值序列中的位置信息。
[0136]服務(wù)器將第一子摘要信息中各二階散列值各自的摘要信息片段,根據(jù)二階散列值序列中各二階散列值的排列順序進(jìn)行排列,得到摘要信息片段序列。
[0137]服務(wù)器根據(jù)接收的代碼文件的二階散列值預(yù)設(shè)在二階散列值序列中的位置信息,將第二子摘要信息作為代碼文件的二階散列值的摘要信息片段,插入到摘要信息片段序列中,得到二階散列值序列的摘要信息。
[0138]較佳地,二階散列值序列的摘要信息可以是字符串。
[0139]更優(yōu)的,服務(wù)器還可以根據(jù)接收的代碼文件的二階散列值預(yù)設(shè)在二階散列值序列末尾的位置信息,將第二子摘要信息作為代碼文件的二階散列值拼接在摘要信息片段序列的末尾,得到二階散列值序列的摘要信息。
[0140]S105:服務(wù)器根據(jù)預(yù)先生成的私鑰對(duì)摘要信息進(jìn)行非對(duì)稱加密;根據(jù)加密結(jié)果、以及預(yù)先生成的公鑰,生成數(shù)字簽名文件返回至移動(dòng)終端。
[0141]具體地,服務(wù)器在本服務(wù)器預(yù)先生成非對(duì)稱加密算法的密鑰和公鑰。
[0142]較佳地,服務(wù)器預(yù)先確定出兩個(gè)大質(zhì)數(shù);根據(jù)兩個(gè)大質(zhì)數(shù)的乘積,確定出RSA算法的密鑰的長(zhǎng)度,進(jìn)而確定出RSA算法的密鑰和公鑰。
[0143]服務(wù)器根據(jù)預(yù)先生成的非對(duì)稱加密算法的密鑰,對(duì)上述步驟S104中得到的二階散列值序列的摘要信息進(jìn)行非對(duì)稱加密計(jì)算,得到加密后的摘要信息。
[0144]服務(wù)器根據(jù)加密后的摘要信息、以及預(yù)先生成的非對(duì)稱加密算法的公鑰,生成程序的數(shù)字簽名文件。
[0145]較佳地,服務(wù)器將加密后的摘要信息記錄到數(shù)字簽名文件中;服務(wù)器利用加密算法,例如PKCS (Public-Key Cryptography Standards,公鑰加密標(biāo)準(zhǔn))#7算法,對(duì)非對(duì)稱加密算法的公鑰進(jìn)行加密后,將加密后的公鑰記錄到數(shù)字簽名文件中。數(shù)字簽名文件中還記錄有公鑰的加密算法、以及算得二階散列值序列的摘要信息的摘要算法。
[0146]更優(yōu)的,數(shù)字簽名文件中還記錄有算得原始文件的一階散列值的散列算法、算得一階散列值文件的散列值的散列算法、算得原始文件的二階散列值的散列算法等等。
[0147]較佳地,數(shù)據(jù)簽名文件可以是Cert, rsa文件。
[0148]服務(wù)器生成程序的數(shù)字簽名文件后,將其返回至移動(dòng)終端。
[0149]事實(shí)上,移動(dòng)終端接收到服務(wù)器返回的程序的數(shù)字簽名文件后,將程序的數(shù)字簽名文件、二階散列值文件、一階散列值文件,以及二階散列值序列中各二階散列值各自對(duì)應(yīng)的原始文件一起打包成該程序的安裝包。
[0150]更優(yōu)的,移動(dòng)終端接收到服務(wù)器返回的程序的數(shù)字簽名文件后,對(duì)于一階散列值文件中的一階散列值序列,將該一階散列值序列中該程序的代碼文件的一階散列值,移動(dòng)到一階散列值序列的末尾,得到一階散列值序列重排后的一階散列值文件。
[0151]移動(dòng)終端將程序的數(shù)字簽名文件、二階散列值序列重排后的二階散列值文件、一階散列值序列重排后的一階散列值文件,以及二階散列值序列中各二階散列值各自對(duì)應(yīng)的原始文件一起打包成該程序的安裝包。
[0152]事實(shí)上,移動(dòng)終端在安裝程序的安裝包的過(guò)程中,從該程序的安裝包中解壓出該程序的各原始文件、一階散列值文件、二階散列值文件和數(shù)字簽名文件;利用一階散列值文件、二階散列值文件和數(shù)字簽名文件對(duì)該程序的各原始文件進(jìn)行簽名認(rèn)證。
[0153]基于上述程序的原始文件的數(shù)字簽名方法,本發(fā)明實(shí)施例提供了一種移動(dòng)終端,其內(nèi)部結(jié)構(gòu)的框架示意圖如圖2所示,包括:第一子摘要信息計(jì)算模塊201和上傳模塊202。
[0154]其中,第一子摘要信息計(jì)算模塊201用于對(duì)于二階散列值文件中的二階散列值序列,將該二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值進(jìn)行摘要計(jì)算,得到第一子摘要信息;其中,二階散列值對(duì)應(yīng)原始文件;原始文件的二階散列值是根據(jù)該原始文件的一階散列值算得的,該原始文件的一階散列值是根據(jù)該原始文件的內(nèi)容算得的。
[0155]具體地,第一子摘要信息計(jì)算模塊201對(duì)于程序的二階散列值文件中的二階散列值序列,依照二階散列值序列中各二階散列值的排列順序、或者隨機(jī)順序等任意順序,利用摘要算法,對(duì)該二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值分別進(jìn)行摘要計(jì)算,得到除了代碼文件之外的各原始文件的二階散列值各自的摘要信息片段。
[0156]第一子摘要信息計(jì)算模塊201將除了代碼文件之外的各原始文件的二階散列值各自的摘要信息片段進(jìn)行拼接,得到第一摘要信息。
[0157]上傳模塊202用于將第一子摘要信息和代碼文件的二階散列值向服務(wù)器上傳。
[0158]更優(yōu)的,如圖2所示,本發(fā)明實(shí)施例的移動(dòng)終端中,還包括:散列值移序模塊203。
[0159]散列值移序模塊203用于將二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值進(jìn)行摘要計(jì)算之前,將該代碼文件的二階散列值,移動(dòng)到二階散列值序列的末尾,得到二階散列值序列重排后的二階散列值文件。
[0160]上述第一子摘要信息計(jì)算模塊201、上傳模塊202和散列值移序模塊203功能的具體實(shí)現(xiàn)方法,請(qǐng)參考上述如圖1所示的方法流程步驟的具體內(nèi)容,此處不再贅述。
[0161]基于上述程序的原始文件的數(shù)字簽名方法,本發(fā)明實(shí)施例提供了一種服務(wù)器,其內(nèi)部結(jié)構(gòu)的框架示意圖如圖3所示,包括:第二子摘要信息計(jì)算模塊301、摘要信息拼接模塊302和數(shù)字簽名文件生成模塊303。
[0162]其中,第二子摘要信息計(jì)算模塊301用于接收到移動(dòng)終端上傳的第一子摘要信息和代碼文件的二階散列值后,對(duì)接收的代碼文件的二階散列值進(jìn)行摘要計(jì)算,得到第二子摘要信息。
[0163]具體地,第二子摘要信息計(jì)算模塊301將第一子摘要信息中各二階散列值各自的摘要信息片段,根據(jù)二階散列值序列中各二階散列值的排列順序進(jìn)行排列,得到摘要信息片段序列。
[0164]第二子摘要信息計(jì)算模塊301根據(jù)接收的代碼文件的二階散列值預(yù)設(shè)在二階散列值序列中的位置信息,將第二子摘要信息作為代碼文件的二階散列值的摘要信息片段,插入到摘要信息片段序列中,得到二階散列值序列的摘要信息。
[0165]摘要信息拼接模塊302用于根據(jù)代碼文件的二階散列值預(yù)設(shè)在二階散列值文件中的二階散列值序列中的位置,將第一子摘要信息與第二子摘要信息拼接成摘要信息。
[0166]數(shù)字簽名文件生成模塊303用于根據(jù)預(yù)先生成的私鑰對(duì)所述摘要信息進(jìn)行非對(duì)稱加密;根據(jù)加密結(jié)果、以及預(yù)先生成的公鑰,生成數(shù)字簽名文件向移動(dòng)終端返回。
[0167]更優(yōu)的,如圖3所述,本發(fā)明實(shí)施例的服務(wù)器中,還包括:校驗(yàn)?zāi)K304。
[0168]校驗(yàn)?zāi)K304用于根據(jù)預(yù)存的經(jīng)過(guò)認(rèn)證的代碼文件的二階散列值,對(duì)第二子摘要信息計(jì)算模塊301接收的代碼文件的二階散列值進(jìn)行校驗(yàn)。
[0169]上述第二子摘要信息計(jì)算模塊301、摘要信息拼接模塊302、數(shù)字簽名文件生成模塊303和校驗(yàn)?zāi)K304功能的具體實(shí)現(xiàn)方法,請(qǐng)參考上述如圖1所示的方法流程步驟的具體內(nèi)容,此處不再贅述。
[0170]更優(yōu)的,本發(fā)明實(shí)施例將上述數(shù)字簽名方法與沙箱技術(shù)相結(jié)合,提供了一種移動(dòng)終端的安全方法,該方法的流程示意圖如圖4所示,包括如下步驟:
[0171]S401:確定目標(biāo)應(yīng)用,保存其安裝包至指定目錄。
[0172]所述的目標(biāo)應(yīng)用,即需要建構(gòu)主動(dòng)防御環(huán)境的目標(biāo)應(yīng)用程序,就特定的處于非ROOT授權(quán)環(huán)境下的Android系統(tǒng)而言,出于權(quán)限限制的考慮,一般適用于第三方應(yīng)用。
[0173]本發(fā)明所稱的指定目錄,是指本發(fā)明出于文件組織、管理效率的考慮而為這些需要建構(gòu)主動(dòng)防御環(huán)境的目標(biāo)應(yīng)用安裝包提供的自定義默認(rèn)目錄,所有通過(guò)本發(fā)明建立了主動(dòng)防御環(huán)境的目標(biāo)應(yīng)用的安裝包,均可被移動(dòng)或復(fù)制保存到該指定目錄中,進(jìn)一步還可以對(duì)其進(jìn)行加密或隱藏,以確保其安全性。需要指出的是,這里的指定目錄,還可以是系統(tǒng)已經(jīng)存在的目錄。既可以是單個(gè)目錄,也可以是多個(gè)目錄。概括而言,是為本發(fā)明所采用的用于存放由本發(fā)明建構(gòu)主動(dòng)防御環(huán)境的目標(biāo)應(yīng)用安裝包的目錄。
[0174]目標(biāo)應(yīng)用的確定和處理,非常靈活,以下提供幾種確定目標(biāo)應(yīng)用和后續(xù)處理的實(shí)施方式:
[0175]方式一:
[0176]對(duì)于已經(jīng)完成安裝的應(yīng)用程序而言,本發(fā)明可以自動(dòng)或受用戶指令控制對(duì)這些已安裝應(yīng)用程序進(jìn)行掃描,獲得這些應(yīng)用程序的安裝信息,將這些應(yīng)用程序作為候選目標(biāo)應(yīng)用列表顯示在用戶界面中(參閱圖5),在圖形用戶界面的相應(yīng)指示區(qū)域中為列表中的每個(gè)候選目標(biāo)應(yīng)用提供相對(duì)應(yīng)的選擇開關(guān),由用戶對(duì)這些開關(guān)狀態(tài)進(jìn)行設(shè)定,從而獲得用戶對(duì)具體目標(biāo)應(yīng)用的確定。具體而言,用戶可以將某個(gè)目標(biāo)應(yīng)用所對(duì)應(yīng)的指示區(qū)域中的選擇開關(guān),從未選定狀態(tài)切換至選定狀態(tài),如圖5中的“已監(jiān)控”、“點(diǎn)擊監(jiān)控” 二態(tài)開關(guān)示例,這種情況下,即可視為用戶完成了對(duì)該目標(biāo)應(yīng)用的確定操作。
[0177]眾所周知的,Android系統(tǒng)中,第三方應(yīng)用的安裝會(huì)涉及對(duì)如下目錄做如下操作:data/app,第三方應(yīng)用安裝目錄,安裝時(shí)先把a(bǔ)pk文件復(fù)制到此目錄;data/dalvik_cache,將apk解壓后的代碼文件(.dex文件)安裝到該目錄下;data/data,用于建立并存放應(yīng)用程序所需的數(shù)據(jù)?;谏鲜鲈砜芍?,第三方應(yīng)用的apk文件即為其安裝包,在data/app中可以找到該安裝包。因此,對(duì)于已安裝的目標(biāo)應(yīng)用而言,可以從data/app中復(fù)制相應(yīng)的apk文件到指定目錄中,然后卸載該目標(biāo)應(yīng)用。
[0178]方式二:
[0179]參閱圖6,對(duì)于準(zhǔn)備或者正在進(jìn)行安裝的應(yīng)用程序而言,本發(fā)明可以通過(guò)將自身注冊(cè)為默認(rèn)安裝器的形式,獲取該應(yīng)用程序的安裝廣播信息。繼而,將這個(gè)新裝應(yīng)用程序作為目標(biāo)應(yīng)用,將其安裝包或簽名之類的特征信息通過(guò)遠(yuǎn)程規(guī)則庫(kù)接口發(fā)送到云端服務(wù)器中,由云端服務(wù)器對(duì)其做出安全性判斷。
[0180]在本發(fā)明實(shí)施例中,云端服務(wù)器為應(yīng)用程序的安全級(jí)別設(shè)定黑、灰、白三種級(jí)別,分別代表不同危險(xiǎn)程度,并設(shè)定對(duì)應(yīng)的處理規(guī)則。例如,黑應(yīng)用禁止安裝,灰應(yīng)用由用戶自行選擇,白應(yīng)用則可徑行安裝。當(dāng)然,可以進(jìn)一步簡(jiǎn)化為灰、白兩種,或者簡(jiǎn)化為黑、白兩種。本領(lǐng)域技術(shù)人員熟悉服務(wù)器的這種云端控制技術(shù),將在后續(xù)進(jìn)一步概要揭示。無(wú)論如何,本發(fā)明將從本機(jī)遠(yuǎn)程規(guī)則庫(kù)接口中獲得云端服務(wù)器有關(guān)這些應(yīng)用的處理規(guī)則的反饋,利用反饋結(jié)果做出相應(yīng)的后續(xù)處理。具體而言,當(dāng)針對(duì)當(dāng)前目標(biāo)應(yīng)用返回黑應(yīng)用標(biāo)識(shí)時(shí),可以隨即停止該目標(biāo)應(yīng)用的安裝;當(dāng)標(biāo)識(shí)為白應(yīng)用或灰應(yīng)用時(shí),則可放行安裝。出于交互性的考慮,當(dāng)完成遠(yuǎn)程判斷后,本發(fā)明將向用戶界面彈窗提醒用戶有關(guān)判斷結(jié)果,并顯示相應(yīng)的處理建議,詢問(wèn)用戶是否確定對(duì)當(dāng)前新裝應(yīng)用建構(gòu)主動(dòng)防御環(huán)境,用戶從中確定對(duì)當(dāng)前新裝目標(biāo)應(yīng)用進(jìn)行主動(dòng)防御的標(biāo)識(shí)后,即確定了該目標(biāo)應(yīng)用。
[0181]如前提供的兩種典型的有關(guān)確定目標(biāo)應(yīng)用的方式,可由本領(lǐng)域技術(shù)人員變通利用。例如,對(duì)于方式一中的已安裝目標(biāo)應(yīng)用而言,可以適用方式二中將已安裝應(yīng)用通過(guò)遠(yuǎn)程規(guī)則庫(kù)接口發(fā)送到云端進(jìn)行安全等級(jí)判斷,并在返回結(jié)果后,參照方式二的處理方式,對(duì)已安裝應(yīng)用進(jìn)行處理。又如,如果當(dāng)前應(yīng)用屬于黑應(yīng)用,而用戶仍然希望安裝該應(yīng)用,則仍可允許用戶在建立主動(dòng)防御環(huán)境的前提下保留該已安裝應(yīng)用程序,或者允許相應(yīng)的新裝應(yīng)用繼續(xù)安裝。
[0182]S402:利用目標(biāo)應(yīng)用的安裝包配置外殼應(yīng)用安裝包,向其中注入用于調(diào)用監(jiān)控單元的粧模塊,修改其中的配置參數(shù)以用于加載目標(biāo)應(yīng)用,監(jiān)控單元用于實(shí)現(xiàn)對(duì)源自目標(biāo)應(yīng)用的事件行為的掛鉤監(jiān)控。
[0183]確定需要建構(gòu)主動(dòng)防御環(huán)境的目標(biāo)應(yīng)用后,進(jìn)一步創(chuàng)建外殼應(yīng)用。請(qǐng)參閱圖7,該外殼應(yīng)用的創(chuàng)建包括如下具體步驟:
[0184]S4021、解析目標(biāo)應(yīng)用安裝包,生成外殼應(yīng)用鏡像。
[0185]眾所周知,目標(biāo)應(yīng)用安裝包為壓縮文件,將該安裝包解壓,即可獲得其中的文件。較佳的,將目標(biāo)應(yīng)用安裝包解壓至一個(gè)臨時(shí)工作目錄以完成解壓工作。解壓后,即可對(duì)目標(biāo)應(yīng)用安裝包中的各個(gè)文件進(jìn)行解析。另一種方式中,也可以在內(nèi)存中直接解析該目標(biāo)應(yīng)用安裝包。無(wú)論如何,本領(lǐng)域技術(shù)人員均能通過(guò)已知方式對(duì)目標(biāo)應(yīng)用進(jìn)行解析,獲得用于配置外殼應(yīng)用的相關(guān)參數(shù)和資源,并據(jù)此生成外殼應(yīng)用鏡像。該鏡像既可以是硬盤鏡像,也可以是內(nèi)存鏡像,其功能在于在構(gòu)造外殼應(yīng)用過(guò)程中作為中間狀態(tài)出現(xiàn),故其具體存在形式應(yīng)不影響本發(fā)明的實(shí)現(xiàn),本領(lǐng)域技術(shù)人員可以結(jié)合公知常識(shí)靈活變通之,下不贅述。
[0186]S4022、修改或替換鏡像中的代碼文件,以注入所述的粧模塊。
[0187]公知的,apk安裝包的構(gòu)成文件中包含代碼文件Classes, dex。本發(fā)明中,通過(guò)修改或者替換的方式,為外殼應(yīng)用鏡像構(gòu)造新的Classes, dex,使該新文件中包含本發(fā)明所提供的粧模塊nStub。該粧模塊通過(guò)加載利用HOOK技術(shù)實(shí)現(xiàn)的監(jiān)控單元,使監(jiān)控單元可在運(yùn)行時(shí)實(shí)現(xiàn)對(duì)目標(biāo)應(yīng)用所創(chuàng)建的進(jìn)程的事件行為的監(jiān)控捕獲。
[0188]需要指出的是,所述的監(jiān)控單元,是通過(guò)從一后臺(tái)沙箱HOOK框架中獲取對(duì)應(yīng)于特定的事件行為的掛鉤插件,利用該掛鉤插件監(jiān)控目標(biāo)應(yīng)用的特定事件行為而實(shí)現(xiàn)的。所述的后臺(tái)沙箱HOOK框架,在云端進(jìn)行集中管理,向各終端進(jìn)行分發(fā)。其中,云端主要構(gòu)造有Java掛鉤插件庫(kù)和Native掛鉤插件庫(kù)。監(jiān)控單元可以通過(guò)遠(yuǎn)程插件接口向后臺(tái)沙箱HOOK框架發(fā)送請(qǐng)求,獲得針對(duì)特定事件行為的HOOK函數(shù),即所述的掛鉤插件,借此建立對(duì)特定事件行為的監(jiān)控捕獲和處理。
[0189]S4023、修改鏡像中的配置文件的配置參數(shù),用于加載指定目錄中的目標(biāo)應(yīng)用。
[0190]同理,安裝包的構(gòu)成文件中還包含配置文件Androidmanifest.xml,對(duì)該文件進(jìn)行修改,對(duì)應(yīng)修改外殼應(yīng)用鏡像中有關(guān)目標(biāo)應(yīng)用的配置信息,使其適于加載指定目錄中的目標(biāo)應(yīng)用。此外,本發(fā)明利用Java反射調(diào)用機(jī)制,將LoadApk與ActivityThread涉及的運(yùn)行時(shí)配置信息用反射替換成指定目錄中目標(biāo)應(yīng)用安裝包的ClassLoader與資源,從而實(shí)現(xiàn)外殼應(yīng)用在運(yùn)行時(shí)對(duì)目標(biāo)應(yīng)用的加載。
[0191]此外,圖標(biāo)作為一種可供人機(jī)識(shí)別的資源,在本發(fā)明中也作為配置文件之一被修改。為了使圖標(biāo)更易識(shí)別,本發(fā)明利用該目標(biāo)應(yīng)用的原圖標(biāo)作為底稿,對(duì)其添加圖戳,以原文件名保存替換原圖標(biāo),如此,即可在外殼應(yīng)用安裝后,供用戶通過(guò)該圖戳識(shí)別其為已防御的應(yīng)用。同一個(gè)目標(biāo)應(yīng)用可能包括多個(gè)圖標(biāo)資源,可以僅對(duì)其中目標(biāo)應(yīng)用所采用的主圖標(biāo)進(jìn)行修改,也可對(duì)其包含的多個(gè)或所有圖標(biāo)進(jìn)行類似的修改。
[0192]S4024、完成該外殼應(yīng)用的封裝。
[0193]本子步驟為本領(lǐng)域技術(shù)人員所知悉的常規(guī)步驟,在完成上述的修改后,對(duì)外殼應(yīng)用鏡像進(jìn)行打包,得到外殼應(yīng)用的安裝包。本發(fā)明實(shí)施例中,外殼應(yīng)用的安裝包中包含沙箱HOOK框架中的監(jiān)控功能模塊。
[0194]S403:對(duì)于外殼應(yīng)用安裝包中的每個(gè)原始文件,根據(jù)該原始文件的內(nèi)容算得該原始文件的一階散列值,進(jìn)而根據(jù)該一階散列值算得該原始文件的二階散列值;將該安裝包中各原始文件的二階散列值組成二階散列值序列記錄到二階散列值文件中。
[0195]本步驟中,移動(dòng)終端對(duì)于外殼應(yīng)用的安裝包中的每個(gè)原始文件,根據(jù)該原始文件的內(nèi)容算得該原始文件的一階散列值的具體方法,與上述步驟SlOl之前移動(dòng)終端算得程序的原始文件的一階散列值的方法相同,此處不再贅述。其中,外殼應(yīng)用的安裝包中的各原始文件中包括代碼文件。
[0196]移動(dòng)終端對(duì)于外殼應(yīng)用的安裝包中的每個(gè)原始文件,根據(jù)該一階散列值算得該原始文件的二階散列值的具體方法,與上述步驟SlOl之前移動(dòng)終端根據(jù)原始文件的一階散列值算得二階散列值的方法相同,此處不再贅述。
[0197]移動(dòng)終端對(duì)于外殼應(yīng)用的安裝包中的各原始文件,將各原始文件的二階散列值組成二階散列值序列記錄到二階散列值文件中。二階散列值文件及其內(nèi)容,與上述步驟SlOl之前程序的二階散列值文件及其內(nèi)容都相同;二階散列值序列的內(nèi)容及排列方式,與上述步驟SlOl之前程序的二階散列值文件中的二階散列值序列的內(nèi)容及排列方式都相同;此處不再贅述。
[0198]S404:對(duì)于二階散列值序列中除了代碼文件的二階散列值文件之外的各二階散列值進(jìn)行摘要計(jì)算,得到第一子摘要信息;將第一子摘要信息和代碼文件的二階散列值向服務(wù)器上傳。
[0199]本步驟的具體內(nèi)容,與上述如圖1所示的方法流程中步驟SlOl至步驟S102中的內(nèi)容相同,此處不再贅述。
[0200]S405:服務(wù)器根據(jù)接收的第一子摘要信息和代碼文件的二階散列值,生成數(shù)字簽名文件并返回至移動(dòng)終端。
[0201]本步驟的具體內(nèi)容,與上述如圖1所示的方法流程中步驟S103至步驟S105中的內(nèi)容相同,此處不再贅述。
[0202]S406:根據(jù)服務(wù)器返回的數(shù)字簽名文件,對(duì)各原始文件進(jìn)行簽名認(rèn)證;認(rèn)證通過(guò)后安裝各原始文件;加載運(yùn)行目標(biāo)應(yīng)用和監(jiān)控單元。
[0203]移動(dòng)終端根據(jù)服務(wù)器返回的數(shù)字簽名文件,對(duì)外殼應(yīng)用的安裝包中的各原始文件進(jìn)行簽名認(rèn)證,具體方法為本領(lǐng)域的慣用技術(shù)手段,此處不再贅述。
[0204]外殼應(yīng)用的安裝包中的所有原始文件都通過(guò)簽名認(rèn)證后,移動(dòng)終端在沙箱環(huán)境下安裝該安裝包中的所有原始文件。
[0205]移動(dòng)終端響應(yīng)運(yùn)行目標(biāo)應(yīng)用的指令,運(yùn)行相應(yīng)的外殼應(yīng)用。
[0206]具體地,參閱前述步驟S402的內(nèi)容可知,外殼應(yīng)用被安裝后,其文件名與原來(lái)的目標(biāo)應(yīng)用的文件名相同,偽裝成目標(biāo)應(yīng)用,用戶對(duì)目標(biāo)應(yīng)用的操作,實(shí)際上,通過(guò)桌面圖標(biāo)指引的快捷方式,將被引導(dǎo)至運(yùn)行預(yù)先偽裝的外殼應(yīng)用,此時(shí),用戶在用戶界面上的點(diǎn)選操作便構(gòu)成運(yùn)行該外殼應(yīng)用的運(yùn)行指令。需要指出的是,運(yùn)行目標(biāo)應(yīng)用的指令并不局限于由用戶觸發(fā),也包括如前所述的,由應(yīng)用程序、定時(shí)任務(wù)或者通過(guò)其它公知途徑以函數(shù)調(diào)用的方式執(zhí)行的加載指令。外殼應(yīng)用為輕應(yīng)用,可以快速加載至內(nèi)存中運(yùn)行,對(duì)用戶而言,其啟動(dòng)過(guò)程是透明的。
[0207]外殼應(yīng)用的圖標(biāo)是從目標(biāo)應(yīng)用的默認(rèn)圖標(biāo)改進(jìn)的,一般是以該默認(rèn)圖標(biāo)加圖戳來(lái)實(shí)現(xiàn)這種改進(jìn),因而,從視覺(jué)效果上,還可起到一定的示警作用。
[0208]一旦產(chǎn)生運(yùn)行目標(biāo)應(yīng)用的指令,本發(fā)明即作出響應(yīng),外殼應(yīng)用隨即被加載到JAVA虛擬機(jī)中運(yùn)行。
[0209]之后,移動(dòng)終端利用外殼應(yīng)用先后加載監(jiān)控單元及目標(biāo)應(yīng)用。
[0210]具體地,如前述步驟S402的內(nèi)容所述,本發(fā)明的外殼應(yīng)用中,其代碼文件Classes, dex配置有粧模塊nstub,通過(guò)該粧模塊可以加載監(jiān)控模塊;其配置文件Androidmanifest.xml運(yùn)用Java反射調(diào)用原理,對(duì)其中的配置參數(shù)進(jìn)行修改,使其適于加載保存在所述指定目錄中的目標(biāo)應(yīng)用,此外,還對(duì)目標(biāo)應(yīng)用的運(yùn)行時(shí)配置參數(shù)進(jìn)行了適應(yīng)性的修改,確定目標(biāo)應(yīng)用能正常運(yùn)行。
[0211]因此,請(qǐng)參閱圖8,外殼應(yīng)用運(yùn)行后,如步驟S4061所揭示,首先通過(guò)粧模塊調(diào)用加載監(jiān)控單元,所述監(jiān)控單元從一后臺(tái)沙箱HOOK框架中獲取對(duì)應(yīng)于特定的事件行為的掛鉤插件,利用該掛鉤插件掛鉤并監(jiān)控目標(biāo)應(yīng)用的特定事件行為。所述的后臺(tái)沙箱HOOK框架,在云端進(jìn)行集中管理,向各終端進(jìn)行分發(fā)。其中,云端主要構(gòu)造有Java掛鉤插件庫(kù)和Native掛鉤插件庫(kù)。監(jiān)控單元需要掛鉤具體事件行為時(shí),通過(guò)遠(yuǎn)程插件接口向后臺(tái)沙箱HOOK框架發(fā)送請(qǐng)求,獲得針對(duì)特定事件行為的HOOK函數(shù),即所述的掛鉤插件,借此建立對(duì)特定事件行為的監(jiān)控捕獲和處理。
[0212]進(jìn)而,如步驟S4062所揭示,運(yùn)行中的外殼應(yīng)用將進(jìn)一步加載所述位于指定目錄中的目標(biāo)應(yīng)用。如前所述,目標(biāo)應(yīng)用調(diào)用,是利用公知的Java反射調(diào)用機(jī)制實(shí)現(xiàn)的。外殼應(yīng)用的進(jìn)程將LoadApk與ActivityThread涉及的運(yùn)行時(shí)配置信息用反射替換成指定目錄中目標(biāo)應(yīng)用安裝包的ClassLoader與資源,從而實(shí)現(xiàn)對(duì)目標(biāo)應(yīng)用的加載。
[0213]如步驟S4063顯示,目標(biāo)應(yīng)用被加載時(shí),已被監(jiān)控單元利用掛鉤插件建立了監(jiān)控,因此,目標(biāo)應(yīng)用的一切事件行為均在監(jiān)控單元的監(jiān)控范圍之內(nèi)。位于目標(biāo)應(yīng)用的安裝包是完整未經(jīng)修改的,因此,目標(biāo)應(yīng)用被外殼應(yīng)用加載后,能夠完全合法、正常地運(yùn)行,實(shí)現(xiàn)目標(biāo)應(yīng)用原本能實(shí)現(xiàn)的所有功能。
[0214]由于監(jiān)控單元與目標(biāo)應(yīng)用的加載,均為外殼應(yīng)用進(jìn)程所驅(qū)動(dòng),同為外殼應(yīng)用進(jìn)程的一部分,且監(jiān)控單元先于目標(biāo)應(yīng)用加載,因而,運(yùn)行中的監(jiān)控單元即建立了對(duì)目標(biāo)應(yīng)用一切事件行為的監(jiān)控。目標(biāo)應(yīng)用運(yùn)行過(guò)程中產(chǎn)生的任何事件行為,其事件消息均會(huì)被監(jiān)控單元捕獲并進(jìn)行相應(yīng)的處理。
[0215]S407:根據(jù)監(jiān)控的結(jié)果判斷目標(biāo)應(yīng)用的安全性。
[0216]請(qǐng)結(jié)合圖9,步驟S4071顯示,目標(biāo)應(yīng)用產(chǎn)生的特定事件行為被監(jiān)控單元捕獲,實(shí)質(zhì)上是觸發(fā)特定事件行為時(shí),所產(chǎn)生的事件消息被監(jiān)控單元中相應(yīng)的掛鉤插件(鉤子函數(shù))所捕獲。捕獲該事件消息,即可知曉該事件的意圖,繼而可以進(jìn)行后續(xù)的處理。
[0217]步驟S4072顯示,對(duì)特定事件行為進(jìn)行處理,需要獲取事件行為處理策略。在這一子步驟中,可以進(jìn)一步借助系統(tǒng)服務(wù)來(lái)實(shí)現(xiàn)人機(jī)交互功能。為了實(shí)現(xiàn)人機(jī)交互效果,本發(fā)明預(yù)先將一交互模塊注冊(cè)為系統(tǒng)服務(wù),外殼應(yīng)用可以通過(guò)其交互接口與該交互模塊通信,從而實(shí)現(xiàn)外殼應(yīng)用對(duì)用戶指令或預(yù)設(shè)指令的獲取。
[0218]事件行為策略的獲取方式非常靈活多樣,以下列舉幾種為本發(fā)明所擇一或任意組合使用的策略:
[0219](I)監(jiān)控單元捕獲特定事件行為后,通過(guò)外殼應(yīng)用內(nèi)建的交互接口,向所述交互模塊發(fā)送請(qǐng)求,由交互模塊向用戶界面彈窗問(wèn)詢用戶處理策略,如圖10和圖11所示,該彈窗界面可以直接告知用戶有關(guān)事件行為的內(nèi)容及其風(fēng)險(xiǎn),由用戶選擇相應(yīng)的選項(xiàng)作為處理策略。用戶選擇相應(yīng)選項(xiàng)并確定后,交互模塊獲得針對(duì)該特定事件行為的處理策略,將其反饋給監(jiān)控單元,監(jiān)控單元即可根據(jù)該用戶指令所產(chǎn)生的處理策略對(duì)目標(biāo)應(yīng)用的相應(yīng)事件行為進(jìn)行下一步的處理。
[0220](2)在某些已被公認(rèn)為相對(duì)低風(fēng)險(xiǎn)的事件行為發(fā)生時(shí),例如對(duì)聯(lián)系人的只讀操作行為,或者在用戶為本發(fā)明設(shè)置了自行檢索針對(duì)特定事件行為所應(yīng)采取的處理策略時(shí),本發(fā)明利用一本地策略數(shù)據(jù)庫(kù)檢索相應(yīng)的針對(duì)特定事件行為的處理策略。例如,如圖12所示,某個(gè)應(yīng)用的所有事件行為的默認(rèn)處理策略可以被以表單的形式給出。也就是說(shuō),該本地策略數(shù)據(jù)庫(kù)中,建立了特定事件行為與相應(yīng)的處理策略之間的關(guān)聯(lián),并且存儲(chǔ)了多種事件行為與相應(yīng)的處理策略之間對(duì)應(yīng)關(guān)系的記錄數(shù)據(jù),可以供本發(fā)明檢索使用。本發(fā)明從本地策略數(shù)據(jù)庫(kù)中獲取相應(yīng)的處理策略后,方能對(duì)相應(yīng)事件行為做下一步的處理。
[0221](3)如果用戶為本發(fā)明設(shè)置了遠(yuǎn)程獲取處理策略的選項(xiàng),或者默認(rèn)在本地策略數(shù)據(jù)庫(kù)檢索不到特定事件行為的具體策略時(shí)可以遠(yuǎn)程獲取,又或通過(guò)前述第(I)種情況進(jìn)行交互而在規(guī)定時(shí)限內(nèi)得不到用戶對(duì)彈窗的響應(yīng),諸如此類的情況,外殼應(yīng)用均可通過(guò)其內(nèi)建的遠(yuǎn)程策略接口,向預(yù)架構(gòu)的云端發(fā)送請(qǐng)求,獲得對(duì)應(yīng)于該特定事件行為的相應(yīng)的處理策略,并用于后續(xù)的處理。
[0222]需要指出的是,有關(guān)以上三種獲取處理策略的方式,可以交叉配合使用,例如,一旦交互模塊接收到監(jiān)控單元傳遞的事件消息的特征,即可依照默認(rèn)設(shè)置,參照第(2)種方式先行檢索本地策略數(shù)據(jù)庫(kù),獲得系統(tǒng)推薦的處理策略(如果不能從本地策略數(shù)據(jù)庫(kù)中獲得,甚至可以進(jìn)一步按第(3)種方式從云端策略數(shù)據(jù)庫(kù)中獲取)。繼而,參照第(I)種方式,在彈窗界面設(shè)置系統(tǒng)推薦的處理策略為默認(rèn)選項(xiàng)。如果用戶未在規(guī)定時(shí)限內(nèi)確認(rèn)該默認(rèn)選項(xiàng),則以系統(tǒng)推薦的處理策略為準(zhǔn)執(zhí)行后續(xù)指令;如果用戶將之改變?yōu)樾碌哪J(rèn)選項(xiàng),則向監(jiān)控單元返回用戶設(shè)置的處理策略。可見,人機(jī)交互過(guò)程是可以更為靈活自由地實(shí)現(xiàn)的。
[0223]所述的本地策略數(shù)據(jù)庫(kù),可以是云端策略數(shù)據(jù)庫(kù)的一個(gè)復(fù)件,因此,本發(fā)明中,設(shè)置一個(gè)更新步驟,用于下載云端策略數(shù)據(jù)庫(kù)用于更新本地策略數(shù)據(jù)庫(kù)。
[0224]—般情況下,針對(duì)特定事件行為的策略可以設(shè)置為“拒絕”、“運(yùn)行”、“詢問(wèn)”三個(gè)常見選項(xiàng),其表征的具體意向?yàn)?
[0225]拒絕:針對(duì)該特定事件行為,向目標(biāo)應(yīng)用發(fā)送事件行為已經(jīng)執(zhí)行完畢的虛假消息,以禁止該事件行為實(shí)際發(fā)生;
[0226]運(yùn)行:針對(duì)該特定事件行為不做任何改變,將相應(yīng)的事件消息直接轉(zhuǎn)送給系統(tǒng)消息機(jī)制,允許目標(biāo)應(yīng)用繼續(xù)其事件行為;
[0227]詢問(wèn):獨(dú)立或依附于前述兩個(gè)選項(xiàng)任意之一,針對(duì)該特定事件行為,標(biāo)記其狀態(tài)為未知狀態(tài),后續(xù)重復(fù)發(fā)生該行為時(shí),需要再行彈窗詢問(wèn)用戶。
[0228]實(shí)際應(yīng)用中,選項(xiàng)“詢問(wèn)”可被忽略,僅需考慮是否拒絕或允許當(dāng)前事件行為發(fā)生即可。
[0229]所述的事件行為,多種多樣,具體包括如下幾大類型:
[0230](I)終端、聯(lián)網(wǎng)有關(guān)的操作:
[0231]獲取運(yùn)營(yíng)商信息:目標(biāo)應(yīng)用例如通過(guò)getSimOperatorNameO函數(shù)可以獲得移動(dòng)終端的IMSI,由此可進(jìn)一步判斷運(yùn)營(yíng)商的名稱,進(jìn)一步可以向運(yùn)營(yíng)商發(fā)送約定指令,實(shí)現(xiàn)扣費(fèi)之類的非法目的。監(jiān)控平臺(tái)通過(guò)掛鉤與此相關(guān)的消息,便可以對(duì)事件行為的捕獲。
[0232]切換APN操作:同理,目標(biāo)應(yīng)用通過(guò)與APN切換有關(guān)的函數(shù)實(shí)現(xiàn)ANP切換控制的操作,也可被監(jiān)控單元通過(guò)調(diào)用相應(yīng)的掛鉤插件進(jìn)行監(jiān)控。
[0233]類似的操作,還包括獲取手機(jī)識(shí)別碼ME的操作,也與上述同理。
[0234](2)通知欄廣告操作:通知欄廣告是最易被惡意程序利用的手段,監(jiān)控單元通過(guò)調(diào)用相應(yīng)的掛鉤插件對(duì)notify函數(shù)產(chǎn)生的事件消息進(jìn)行監(jiān)控,也可對(duì)其實(shí)施監(jiān)控。
[0235](3)通信操作:
[0236]如電話拔打操作,通過(guò)StartActivity O函數(shù)可以監(jiān)控拔打電話的事件行為,利用相應(yīng)的掛鉤插件可以對(duì)拔打電話操作建立事件行為監(jiān)控。
[0237]短信操作,對(duì)應(yīng)于SendTextMessage O之類的函數(shù),同理,可以借助掛鉤插件對(duì)這類函數(shù)建立事件行為監(jiān)控。
[0238]聯(lián)系人操作:一般對(duì)應(yīng)于QueryO、Insert O函數(shù),監(jiān)控單元利用掛鉤插件掛鉤此類函數(shù)可以實(shí)現(xiàn)對(duì)此類事件行為的監(jiān)控捕獲。
[0239](4)命令操作:
[0240]如SU提權(quán)操作或執(zhí)行命令操作,均需用到Execve O函數(shù),監(jiān)控單元通過(guò)監(jiān)控此函數(shù)的返回消息,便可實(shí)現(xiàn)該類事件行為的監(jiān)控。
[0241](5)界面及訪問(wèn)操作:
[0242]如創(chuàng)造快捷方式的事件行為,則對(duì)應(yīng)于SentBroacast O函數(shù)。同理,對(duì)于隱藏程序圖標(biāo)的操作,也可對(duì)應(yīng)特定函數(shù)監(jiān)控之。
[0243]如HTTP網(wǎng)絡(luò)訪問(wèn)操作,則對(duì)應(yīng)于Sentto O、Write O等函數(shù)。
[0244](6)程序操作:
[0245]如應(yīng)用加載操作,指當(dāng)前目標(biāo)應(yīng)用加載相關(guān)應(yīng)用的操作,通過(guò)對(duì)dexclassloader O、1adlibrary ()等函數(shù)進(jìn)行掛鉤監(jiān)控,可以實(shí)現(xiàn)對(duì)此類事件行為的捕獲。
[0246]又如安裝子包,貝Ij對(duì)應(yīng)于StartActivity O函數(shù)。
[0247](7)其它危險(xiǎn)操作:
[0248]例如,子進(jìn)程侵入操作、衍生物操作、激活設(shè)備管理器操作等,分別對(duì)應(yīng)于。
[0249]其中,子進(jìn)程是指目標(biāo)應(yīng)用建立的子進(jìn)程,在目標(biāo)應(yīng)用創(chuàng)建子進(jìn)程時(shí),監(jiān)控單元將收到相應(yīng)的消息,而判定其創(chuàng)建子進(jìn)程的事件行為。由此,監(jiān)控單元進(jìn)一步向該子進(jìn)程以內(nèi)聯(lián)鉤子的方式在該子進(jìn)程中植入監(jiān)控單元,后續(xù)便可繼續(xù)對(duì)該子進(jìn)程的事件行為進(jìn)行監(jiān)控。因而,無(wú)論是目標(biāo)應(yīng)用的自身進(jìn)程,還是其創(chuàng)建的子進(jìn)程,它們直接或間接所觸發(fā)的事件行為,均能被本發(fā)明的監(jiān)控單元所監(jiān)控,使主動(dòng)防御效果更佳。
[0250]而所述衍生物,是指目標(biāo)應(yīng)用自行創(chuàng)建的文件,或者遠(yuǎn)程下載的文件,通常是指敏感的衍生物,例如安裝包。通過(guò)掛鉤fcloseO函數(shù)可以捕獲該事件。需要指出的是,當(dāng)監(jiān)控單元捕獲該事件行為后,可以按照前述的方法,進(jìn)一步利用遠(yuǎn)程規(guī)則庫(kù)接口發(fā)送請(qǐng)求到云端,由云端利用其黑、白、灰的安全等級(jí)行為規(guī)則判斷該衍生物的安全等級(jí),本發(fā)明通過(guò)遠(yuǎn)程規(guī)則庫(kù)接口獲得云端判定結(jié)果后,進(jìn)一步彈窗詢問(wèn)用戶是否建立對(duì)該敏感衍生物的主動(dòng)防御,由此便可進(jìn)一步鞏固主動(dòng)防御的效果。
[0251]上述的事件行為僅為摘錄之用,不能理解為對(duì)本發(fā)明監(jiān)控的事件行為的限制。
[0252]步驟S4073顯示,依據(jù)上述的處理策略和上述關(guān)于事件行為的說(shuō)明,本發(fā)明的主動(dòng)防御方法便可對(duì)各種事件行為進(jìn)行相應(yīng)的處理,其處理過(guò)程的概括在前文中已散列給出,以下進(jìn)一步列舉幾種典型的應(yīng)用實(shí)例:
[0253](I)對(duì)目標(biāo)應(yīng)用的精細(xì)攔截的應(yīng)用:
[0254]部分惡意程序被安裝后,在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)處于正常使用的狀態(tài),麻痹用戶的安全意識(shí)。但是,運(yùn)行一段長(zhǎng)時(shí)間之后,該目標(biāo)應(yīng)用嘗試從后臺(tái)插入一短信引起用戶的關(guān)注,達(dá)到廣告和詐騙的效果。參閱圖11,對(duì)該目標(biāo)應(yīng)用建立主動(dòng)防御機(jī)制后,本發(fā)明如前所述,通過(guò)監(jiān)控單元中相應(yīng)的掛鉤插件對(duì)短信操作函數(shù)的監(jiān)控,一旦目標(biāo)應(yīng)用產(chǎn)生短信操作的事件行為,便可捕獲這一事件行為,繼而,監(jiān)控單元通過(guò)其交互接口通知作為系統(tǒng)服務(wù)運(yùn)行的交互模塊,由交互模塊向用戶界面彈窗示警。用戶點(diǎn)選“拒絕”的處理策略后,被逆反饋給監(jiān)控單元,其中相應(yīng)的掛鉤插件便能阻該事件行為的實(shí)際發(fā)生,達(dá)到防范風(fēng)險(xiǎn)的目的。
[0255](2)對(duì)目標(biāo)應(yīng)用釋放惡意文件的應(yīng)用。
[0256]目標(biāo)應(yīng)用為一游戲軟件,通過(guò)檢查更新的方式下載并釋放惡意子包,并且調(diào)用系統(tǒng)功能安裝該子包。本發(fā)明對(duì)該目標(biāo)應(yīng)用建立了主動(dòng)防御之后,可以監(jiān)控到其下載完文件而產(chǎn)生的事件行為,據(jù)此通過(guò)交互模塊彈窗告警。用戶指令拒絕之后,監(jiān)控單元中相應(yīng)的掛鉤插件便可直接刪除該文件,或者僅僅拒絕該文件的安裝行為。
[0257]本發(fā)明中,對(duì)于諸如此類的惡意子包,視為敏感衍生物,對(duì)衍生物是否存在惡意的判斷,參照前述防御配置方法中所述及的確定安全等級(jí)的方式進(jìn)行遠(yuǎn)程判斷。具體而言,當(dāng)檢測(cè)到產(chǎn)生衍生物時(shí),將相應(yīng)的文件或者其簽名之類的特征信息通過(guò)遠(yuǎn)程規(guī)則庫(kù)接口發(fā)送給云端,并從云端獲得其安全等級(jí),如果為黑、灰應(yīng)用,則在彈窗中建議用戶拒絕安裝;如果為白應(yīng)用,則可允許其通行。通過(guò)這種方法,便可實(shí)現(xiàn)對(duì)敏感衍生物的安全防御。如果云端檢測(cè)不到該衍生物的相關(guān)記錄,可以要求本方法為其上傳該文件,并由云端標(biāo)示為未知應(yīng)用,相應(yīng)的,以灰應(yīng)用予以標(biāo)記,以備后用。
[0258](3)對(duì)子進(jìn)程侵入的應(yīng)用。
[0259]被監(jiān)控的目標(biāo)應(yīng)用在運(yùn)行過(guò)程中創(chuàng)建子進(jìn)程,而子進(jìn)程進(jìn)一步釋放惡意事件行為。監(jiān)控單元監(jiān)控到目標(biāo)應(yīng)用創(chuàng)建子進(jìn)程時(shí),即獲得子進(jìn)程的入口,然后向該子進(jìn)程植入本發(fā)明的監(jiān)控單元,所有HOOK插件(掛鉤插件)都會(huì)被以內(nèi)聯(lián)鉤子的方式加載到該子進(jìn)程中并初始化好實(shí)現(xiàn)掛鉤,以便建立對(duì)該子進(jìn)程的事件行為的監(jiān)控。由此,可以看出,無(wú)論是由目標(biāo)應(yīng)用進(jìn)程直接觸發(fā)的事件行為,還是由目標(biāo)應(yīng)用進(jìn)程所創(chuàng)建的子進(jìn)程所觸發(fā)的間接事件行為,均能被監(jiān)控單元成功監(jiān)控。
[0260]本發(fā)明實(shí)施例的技術(shù)方案,由服務(wù)器保存私鑰并利用私鑰對(duì)摘要信息進(jìn)行加密;與由移動(dòng)終端保存私鑰并利用私鑰進(jìn)行加密相比,憑借服務(wù)器遠(yuǎn)超移動(dòng)終端的防護(hù)能力,可以防止惡意程序竊取私鑰,保證后續(xù)生成的數(shù)字簽名文件更加安全可靠,使得移動(dòng)終端可以根據(jù)更安全可靠的數(shù)據(jù)簽名文件,對(duì)該程序的原始文件進(jìn)行簽名認(rèn)證,可以有效地消除惡意程序篡改程序的原始文件所帶來(lái)的危害,保護(hù)用戶利益,提高用戶體驗(yàn)。
[0261]而且,本發(fā)明實(shí)施例的技術(shù)方案,根據(jù)摘要計(jì)算分步驟計(jì)算的特點(diǎn),由移動(dòng)終端計(jì)算出程序的除了代碼文件之外的原始文件的二階散列值的第一子摘要信息,將程序的代碼文件的二階散列值、以及第一子摘要信息上傳至服務(wù)器進(jìn)行后續(xù)計(jì)算;與上傳整個(gè)二階散列值文件相比,大大降低了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,有效地降低了用戶因上傳數(shù)據(jù)而所需的費(fèi)用,大大拓寬了本發(fā)明實(shí)施例的技術(shù)方案的適用范圍。
[0262]進(jìn)一步,本發(fā)明實(shí)施例的技術(shù)方案中,服務(wù)器對(duì)移動(dòng)終端上傳的代碼文件的二階散列值進(jìn)行校驗(yàn),相當(dāng)于對(duì)移動(dòng)終端的代碼文件進(jìn)行校驗(yàn),保證了上傳的代碼文件的二階散列值的安全可靠性,有利于在后續(xù)步驟中生成更安全可靠的數(shù)字簽名文件。
[0263]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請(qǐng)中所述操作中的一項(xiàng)或多項(xiàng)的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計(jì)和制造,或者也可以包括通用計(jì)算機(jī)中的已知設(shè)備。這些設(shè)備具有存儲(chǔ)在其內(nèi)的計(jì)算機(jī)程序,這些計(jì)算機(jī)程序選擇性地激活或重構(gòu)。這樣的計(jì)算機(jī)程序可以被存儲(chǔ)在設(shè)備(例如,計(jì)算機(jī))可讀介質(zhì)中或者存儲(chǔ)在適于存儲(chǔ)電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計(jì)算機(jī)可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、⑶-ROM、和磁光盤)、ROM (Read-Only Memory,只讀存儲(chǔ)器)、RAM (Random Access Memory,隨即存儲(chǔ)器)、EPROM (Erasable ProgrammableRead-Only Memory,可擦寫可編程只讀存儲(chǔ)器)、EEPROM (Electrical Iy ErasableProgrammable Read-Only Memory,電可擦可編程只讀存儲(chǔ)器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計(jì)算機(jī))以能夠讀的形式存儲(chǔ)或傳輸信息的任何介質(zhì)。
[0264]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,可以用計(jì)算機(jī)程序指令來(lái)實(shí)現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個(gè)框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,可以將這些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專業(yè)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來(lái)實(shí)現(xiàn),從而通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來(lái)執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個(gè)框中指定的方案。
[0265]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過(guò)的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進(jìn)一步地,具有本發(fā)明中已經(jīng)討論過(guò)的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進(jìn)一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
[0266]以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種移動(dòng)終端的數(shù)字簽名方法,其特征在于,包括: 移動(dòng)終端對(duì)于二階散列值文件中的二階散列值序列,對(duì)該二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值進(jìn)行摘要計(jì)算,得到第一子摘要信息; 將第一子摘要信息和所述代碼文件的二階散列值向服務(wù)器上傳; 其中,所述二階散列值對(duì)應(yīng)原始文件;所述原始文件的二階散列值是根據(jù)該原始文件的一階散列值算得的,該原始文件的一階散列值是根據(jù)該原始文件的內(nèi)容算得的;所述代碼文件是所述原始文件之一。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將該二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值進(jìn)行摘要計(jì)算之前,還包括: 將所述代碼文件的二階散列值,移動(dòng)到所述二階散列值序列的末尾,得到二階散列值序列重排后的二階散列值文件。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,還包括: 所述移動(dòng)終端接收到所述服務(wù)器返回的數(shù)字簽名文件后,對(duì)于一階散列值文件中的一階散列值序列,將該一階散列值序列中所述代碼文件的一階散列值,移動(dòng)到所述一階散列值序列的末尾,得到一階散列值序列重排后的一階散列值文件; 將所述數(shù)字簽名文件、二階散列值序列重排后的二階散列值文件、一階散列值序列重排后的一階散列值文件,以及所述二階散列值序列中各二階散列值各自對(duì)應(yīng)的原始文件一起打包成安裝包。
4.一種服務(wù)器端的數(shù)字簽名方法,其特征在于,包括: 接收到移動(dòng)終端上傳的第一子摘要信息和代碼文件的二階散列值后,對(duì)接收的代碼文件的二階散列值進(jìn)行摘要計(jì)算,得到第二子摘要信息; 根據(jù)所述代碼文件的二階散列值預(yù)設(shè)在二階散列值文件中的二階散列值序列中的位置信息,將第一子摘要信息與第二子摘要信息拼接成摘要信息; 根據(jù)預(yù)先生成的私鑰對(duì)所述摘要信息進(jìn)行非對(duì)稱加密; 根據(jù)加密結(jié)果、以及預(yù)先生成的公鑰,生成數(shù)字簽名文件返回至所述移動(dòng)終端。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述對(duì)接收的代碼文件的二階散列值進(jìn)行摘要計(jì)算之前,還包括: 根據(jù)預(yù)存的經(jīng)過(guò)認(rèn)證的代碼文件的二階散列值,對(duì)接收的代碼文件的二階散列值進(jìn)行校驗(yàn)。
6.一種移動(dòng)終端的安全防護(hù)方法,其特征在于,包括: 確定目標(biāo)應(yīng)用,保存所述目標(biāo)應(yīng)用的安裝包至指定目錄; 利用所述目標(biāo)應(yīng)用的安裝包配置外殼應(yīng)用安裝包,向所述目標(biāo)應(yīng)用的安裝包中注入用于調(diào)用監(jiān)控單元的粧模塊,修改所述目標(biāo)應(yīng)用的安裝包中的配置參數(shù)以用于加載所述目標(biāo)應(yīng)用,所述監(jiān)控單元用于實(shí)現(xiàn)對(duì)源自所述目標(biāo)應(yīng)用的事件行為的掛鉤監(jiān)控; 對(duì)于所述外殼應(yīng)用安裝包中的每個(gè)原始文件,根據(jù)該原始文件的內(nèi)容算得該原始文件的一階散列值,進(jìn)而根據(jù)所述一階散列值算得該原始文件的二階散列值;將所述安裝包中各原始文件的二階散列值組成二階散列值序列記錄到二階散列值文件中;所述各原始文件中包括代碼文件; 對(duì)于所述二階散列值序列中除了代碼文件的二階散列值文件之外的各二階散列值進(jìn)行摘要計(jì)算,得到第一子摘要信息;將第一子摘要信息和所述代碼文件的二階散列值向服務(wù)器上傳; 根據(jù)所述服務(wù)器返回的數(shù)字簽名文件,對(duì)所述各原始文件進(jìn)行簽名認(rèn)證;認(rèn)證通過(guò)后安裝所述各原始文件;加載運(yùn)行所述目標(biāo)應(yīng)用和所述監(jiān)控單元; 根據(jù)監(jiān)控的結(jié)果判斷所述目標(biāo)應(yīng)用的安全性。
7.一種移動(dòng)終端,其特征在于,包括: 第一子摘要信息計(jì)算模塊,用于對(duì)于二階散列值文件中的二階散列值序列,將該二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值進(jìn)行摘要計(jì)算,得到第一子摘要信息;其中,所述二階散列值對(duì)應(yīng)原始文件;所述原始文件的二階散列值是根據(jù)該原始文件的一階散列值算得的,該原始文件的一階散列值是根據(jù)該原始文件的內(nèi)容算得的; 上傳模塊,用于將第一子摘要信息和所述代碼文件的二階散列值向服務(wù)器上傳。
8.根據(jù)權(quán)利要求7所述的移動(dòng)終端,其特征在于,還包括: 散列值移序模塊,用于將所述二階散列值序列中除了代碼文件的二階散列值之外的各二階散列值進(jìn)行摘要計(jì)算之前,將所述代碼文件的二階散列值,移動(dòng)到所述二階散列值序列的末尾,得到二階散列值序列重排后的二階散列值文件。
9.一種服務(wù)器,其特征在于,包括: 第二子摘要信息計(jì)算模塊,用于接收到移動(dòng)終端上傳的第一子摘要信息和代碼文件的二階散列值后,對(duì)接收的代碼文件的二階散列值進(jìn)行摘要計(jì)算,得到第二子摘要信息; 摘要信息拼接模塊,用于根據(jù)所述代碼文件的二階散列值預(yù)設(shè)在二階散列值文件中的二階散列值序列中的位置,將第一子摘要信息與第二子摘要信息拼接成摘要信息; 數(shù)字簽名文件生成模塊,用于根據(jù)預(yù)先生成的私鑰對(duì)所述摘要信息進(jìn)行非對(duì)稱加密;根據(jù)加密結(jié)果、以及預(yù)先生成的公鑰,生成數(shù)字簽名文件向所述移動(dòng)終端返回。
10.根據(jù)權(quán)利要求9所述的服務(wù)器,其特征在于,還包括: 校驗(yàn)?zāi)K,用于根據(jù)預(yù)存的經(jīng)過(guò)認(rèn)證的代碼文件的二階散列值,對(duì)第二子摘要信息計(jì)算模塊接收的代碼文件的二階散列值進(jìn)行校驗(yàn)。
【文檔編號(hào)】H04L9/32GK104486086SQ201410835701
【公開日】2015年4月1日 申請(qǐng)日期:2014年12月26日 優(yōu)先權(quán)日:2014年12月26日
【發(fā)明者】李常坤, 石浩然 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司