應(yīng)用程序完整性驗(yàn)證方法及網(wǎng)絡(luò)設(shè)備的制作方法
【專利摘要】本發(fā)明實(shí)施例公開了一種應(yīng)用程序完整性驗(yàn)證方法及網(wǎng)絡(luò)設(shè)備。該方法包括:當(dāng)啟動應(yīng)用程序時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第一摘要;根據(jù)內(nèi)嵌密鑰對中的公鑰,對存儲的該應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第二摘要,該數(shù)字簽名是該應(yīng)用程序每發(fā)生一次更新時(shí),根據(jù)密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名得到,密鑰對是該應(yīng)用程序?qū)?yīng)的廠商密鑰對;如果第一摘要與第二摘要相同,則確定該應(yīng)用程序的完整性驗(yàn)證通過,否則,確定該應(yīng)用程序的完整性驗(yàn)證不通過。本發(fā)明實(shí)施例的方法和網(wǎng)絡(luò)設(shè)備中,在更新該應(yīng)用程序之后,可以實(shí)現(xiàn)對該應(yīng)用程序的完整性驗(yàn)證。
【專利說明】應(yīng)用程序完整性驗(yàn)證方法及網(wǎng)絡(luò)設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種應(yīng)用程序完整性驗(yàn)證方法及網(wǎng)絡(luò)設(shè)備。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的快速發(fā)展,人們通過互聯(lián)網(wǎng)進(jìn)行網(wǎng)銀轉(zhuǎn)賬、網(wǎng)上購物等網(wǎng)絡(luò)操作的頻率越來越高。與此同時(shí),一些惡意分子通過篡改網(wǎng)絡(luò)設(shè)備中應(yīng)用程序來竊取用戶的賬號、密碼等隱私信息,進(jìn)而對用戶的財(cái)產(chǎn)安全產(chǎn)生威脅,因此,亟需一種對應(yīng)用程序的完整性進(jìn)行驗(yàn)證,從而判斷該應(yīng)用程序是否被篡改過。
[0003]目前,為了更進(jìn)一步保證應(yīng)用程序的完整性,防止惡意分子對應(yīng)用程序的篡改,可以在網(wǎng)絡(luò)設(shè)備中設(shè)置安全中央處理器(Central Processing Unit, CPU)和可信平臺模塊(Trusted Platform Module,TPM)芯片。這樣,當(dāng)廠商發(fā)布應(yīng)用程序時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行哈希運(yùn)算,得到該應(yīng)用程序的第一哈希摘要,通過廠商私鑰對第一哈希摘要信息進(jìn)行簽名,得到該應(yīng)用程序的數(shù)字簽名,并將該應(yīng)用程序的數(shù)字簽名和該應(yīng)用程序的數(shù)據(jù)打包成程序包并發(fā)布。當(dāng)網(wǎng)絡(luò)設(shè)備下載到該應(yīng)用程序的程序包時(shí),將該程序包中的數(shù)字簽名存儲在TPM芯片中。后續(xù),網(wǎng)絡(luò)設(shè)備啟動該應(yīng)用程序時(shí),網(wǎng)絡(luò)設(shè)備中的安全CPU對該應(yīng)用程序的數(shù)據(jù)進(jìn)行哈希運(yùn)算,得到該應(yīng)用程序的第二哈希摘要,并從該網(wǎng)絡(luò)設(shè)備的TPM芯片中獲取該應(yīng)用程序的數(shù)字簽名,安全CPU利用內(nèi)嵌的廠商公鑰對獲取的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第一哈希摘要,將第一哈希摘要與第二哈希摘要進(jìn)行比較,如果兩者相同,則確定該應(yīng)用程序沒有被篡改,該應(yīng)用程序的完整性驗(yàn)證通過,否則,確定該應(yīng)程序被篡改,該應(yīng)用程序的完整性驗(yàn)證不通過。
[0004]當(dāng)網(wǎng)絡(luò)設(shè)備中應(yīng)用程序存在漏洞時(shí),需要對該應(yīng)用程序打補(bǔ)丁,補(bǔ)丁一般會分布在該應(yīng)用程序的多個(gè)數(shù)據(jù)片段,而網(wǎng)絡(luò)設(shè)備的TPM芯片中存儲的數(shù)字簽名是該應(yīng)用程序發(fā)布時(shí)進(jìn)行簽名得到,也即是,TPM芯片中存儲的數(shù)字簽名是基于該應(yīng)用程序的原始數(shù)據(jù)得至IJ,所以,該應(yīng)用程序打補(bǔ)丁之后的數(shù)據(jù)與原始數(shù)據(jù)不同,無法基于原始數(shù)據(jù)的數(shù)字簽名對打補(bǔ)丁之后的應(yīng)用程序進(jìn)行完整性驗(yàn)證。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種應(yīng)用程序完整性驗(yàn)證方法及網(wǎng)絡(luò)設(shè)備。所述技術(shù)方案如下:
[0006]第一方面,提供了一種應(yīng)用程序完整性驗(yàn)證方法,所述方法包括:
[0007]當(dāng)啟動應(yīng)用程序時(shí),對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第一摘要;
[0008]根據(jù)內(nèi)嵌密鑰對中的公鑰,對存儲的所述應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到所述應(yīng)用程序的第二摘要,所述數(shù)字簽名是所述應(yīng)用程序每發(fā)生一次更新時(shí),根據(jù)所述密鑰對中的私鑰,對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名得到,所述密鑰對是所述應(yīng)用程序?qū)?yīng)的廠商密鑰對;
[0009]如果所述第一摘要與所述第二摘要相同,則確定所述應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定所述應(yīng)用程序的完整性驗(yàn)證不通過。
[0010]結(jié)合第一方面,在上述第一方面的第一種可能的實(shí)現(xiàn)方式中,所述當(dāng)啟動應(yīng)用程序時(shí),對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第一摘要之前,還包括:
[0011]當(dāng)接收到更新完成指令時(shí),對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的所述第二摘要;
[0012]根據(jù)所述私鑰,對所述第二摘要進(jìn)行簽名,得到所述應(yīng)用程序的數(shù)字簽名;
[0013]存儲所述應(yīng)用程序的數(shù)字簽名。
[0014]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在上述第一方面的第二種可能的實(shí)現(xiàn)方式中,所述對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第二摘要,包括:
[0015]將內(nèi)存中所述應(yīng)用程序的數(shù)據(jù)讀入安全中央處理器CPU內(nèi)部的靜態(tài)隨機(jī)存儲器SRAM 中;
[0016]通過所述安全CPU內(nèi)部的安全引擎讀取所述SRAM中的數(shù)據(jù);
[0017]通過所述安全引擎對讀取的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第二摘要。
[0018]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式或第一方面的第二種可能的實(shí)現(xiàn)方式,在上述第一方面的第三種可能的實(shí)現(xiàn)方式中,所述存儲所述應(yīng)用程序的數(shù)字簽名,包括:
[0019]將所述應(yīng)用程序的數(shù)字簽名存儲在安全CPU內(nèi)部的可信非易失性隨機(jī)訪問存儲器NVRAM中。
[0020]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式或第一方面的第二種可能的實(shí)現(xiàn)方式或第一方面的第三種可能的實(shí)現(xiàn)方式,在上述第一方面的第四種可能的實(shí)現(xiàn)方式中,所述根據(jù)內(nèi)嵌密鑰對中的公鑰,對存儲的所述應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到所述應(yīng)用程序的第二摘要之前,還包括:
[0021]通過所述安全CPU內(nèi)部的安全引擎,獲取所述可信NVRAM中存儲的數(shù)字簽名。
[0022]第二方面,提供了一種網(wǎng)絡(luò)設(shè)備,所述網(wǎng)絡(luò)設(shè)備包括:
[0023]第一運(yùn)算模塊,用于當(dāng)啟動應(yīng)用程序時(shí),對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第一摘要;
[0024]解密模塊,用于根據(jù)內(nèi)嵌密鑰對中的公鑰,對存儲的所述應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到所述應(yīng)用程序的第二摘要,所述數(shù)字簽名是所述應(yīng)用程序每發(fā)生一次更新時(shí),根據(jù)所述密鑰對中的私鑰,對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名得到,所述密鑰對是所述應(yīng)用程序?qū)?yīng)的廠商密鑰對;
[0025]確定模塊,用于如果所述第一摘要與所述第二摘要相同,則確定所述應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定所述應(yīng)用程序的完整性驗(yàn)證不通過。
[0026]結(jié)合第二方面,在上述第二方面的第一種可能的實(shí)現(xiàn)方式中,所述網(wǎng)絡(luò)設(shè)備還包括:
[0027]第二運(yùn)算模塊,用于當(dāng)接收到更新完成指令時(shí),對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第二摘要;
[0028]簽名模塊,用于根據(jù)所述私鑰,對所述第二摘要進(jìn)行簽名,得到所述應(yīng)用程序的數(shù)字簽名;
[0029]存儲模塊,用于存儲所述應(yīng)用程序的數(shù)字簽名。
[0030]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在上述第一方面的第二種可能的實(shí)現(xiàn)方式中,所述第二運(yùn)算模塊包括:
[0031]讀入單元,用于將內(nèi)存中所述應(yīng)用程序的數(shù)據(jù)讀入安全中央處理器CPU內(nèi)部的靜態(tài)隨機(jī)存儲器SRAM中;
[0032]讀取單元,用于通過所述安全CPU內(nèi)部的安全引擎讀取所述SRAM中的數(shù)據(jù);
[0033]運(yùn)算單元,用于通過所述安全引擎對讀取的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第二摘要。
[0034]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式或第一方面的第二種可能的實(shí)現(xiàn)方式,在上述第一方面的第三種可能的實(shí)現(xiàn)方式中,所述存儲模塊包括:
[0035]存儲單元,用于將所述應(yīng)用程序的數(shù)字簽名存儲在安全CPU內(nèi)部的可信非易失性隨機(jī)訪問存儲器NVRAM中。
[0036]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式或第一方面的第二種可能的實(shí)現(xiàn)方式或第一方面的第三種可能的實(shí)現(xiàn)方式,在上述第一方面的第四種可能的實(shí)現(xiàn)方式中,所述網(wǎng)絡(luò)設(shè)備還包括:
[0037]獲取模塊,用于通過所述安全CPU內(nèi)部的安全引擎,獲取所述可信NVRAM中存儲的數(shù)字簽名。
[0038]在本發(fā)明實(shí)施例中,網(wǎng)絡(luò)設(shè)備中的應(yīng)用程序每發(fā)生一次更新時(shí),該應(yīng)用程序的數(shù)據(jù)會發(fā)生更新,此時(shí),網(wǎng)絡(luò)設(shè)備根據(jù)內(nèi)嵌的密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名,得到該應(yīng)用程序的數(shù)字簽名。當(dāng)啟動該應(yīng)用程序時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第一摘要,并根據(jù)密鑰對中的公鑰,對該應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第二摘要;如果第一摘要與第二摘要相同,則確定該應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定該應(yīng)用程序的完整性驗(yàn)證不通過。由于廠商密鑰對內(nèi)嵌在網(wǎng)絡(luò)設(shè)備中,且網(wǎng)絡(luò)設(shè)備每更新一次該應(yīng)用程序時(shí),根據(jù)密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名,使該應(yīng)用程序的數(shù)字簽名得到更新,進(jìn)而使第二摘要也得到更新,保證更新該應(yīng)用程序之后,可以對該應(yīng)用程序進(jìn)行完整性驗(yàn)證。
【專利附圖】
【附圖說明】
[0039]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0040]圖1是本發(fā)明實(shí)施例提供的一種應(yīng)用程序完整性驗(yàn)證方法流程圖;
[0041]圖2是本發(fā)明實(shí)施例提供的一種應(yīng)用程序完整性驗(yàn)證方法流程圖;
[0042]圖3是本發(fā)明實(shí)施例提供的一種安全CPU的內(nèi)部結(jié)構(gòu)示意圖;
[0043]圖4是本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)示意圖;
[0044]圖5是本發(fā)明實(shí)施例提供的另一種網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0045]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0046]在對本發(fā)明進(jìn)行詳細(xì)的解釋說明之前,首先介紹一下本發(fā)明實(shí)施例的應(yīng)用場景。由于惡意分子可以篡改網(wǎng)絡(luò)設(shè)備中的應(yīng)用程序來竊取用戶的賬號、密碼等隱私信息,進(jìn)而對用戶的財(cái)產(chǎn)安全產(chǎn)生威脅,所以,每當(dāng)啟動該應(yīng)用程序時(shí),網(wǎng)絡(luò)設(shè)備需要對該應(yīng)用程序的完整性進(jìn)行驗(yàn)證,從而確定該應(yīng)用程序是否被篡改過。而隨著時(shí)間的推移,網(wǎng)絡(luò)設(shè)備中的應(yīng)用程序可能會存在漏洞,此時(shí),就需要對網(wǎng)絡(luò)設(shè)備中的應(yīng)用程序打補(bǔ)丁,補(bǔ)丁一般會分布在該應(yīng)用程序的多個(gè)數(shù)據(jù)片段,無法按照應(yīng)用程序單獨(dú)進(jìn)行完整性驗(yàn)證、補(bǔ)丁單獨(dú)進(jìn)行完整性驗(yàn)證的方法對打補(bǔ)丁之后的應(yīng)用程序進(jìn)行完整性驗(yàn)證;另外,網(wǎng)絡(luò)設(shè)備的可信平臺模塊(Trusted Platform Module,TPM)芯片中存儲的數(shù)字簽名是基于該應(yīng)用程序的原始數(shù)據(jù)得至IJ,所以,該應(yīng)用程序打補(bǔ)丁之后的數(shù)據(jù)與原始數(shù)據(jù)不同,無法基于原始數(shù)據(jù)的數(shù)字簽名對打補(bǔ)丁之后的應(yīng)用程序進(jìn)行完整性驗(yàn)證。因此,本發(fā)明實(shí)施例提供了一種應(yīng)用程序完整性驗(yàn)證方法,在應(yīng)用程序打補(bǔ)丁之后,網(wǎng)絡(luò)設(shè)備依然可以對該應(yīng)用程序的完整性進(jìn)行驗(yàn)證。
[0047]圖1是本發(fā)明實(shí)施例提供的一種應(yīng)用程序完整性驗(yàn)證方法的流程圖,該方法的執(zhí)行主體為網(wǎng)絡(luò)設(shè)備,該網(wǎng)絡(luò)設(shè)備的可信位置保存有應(yīng)用程序?qū)?yīng)的廠商密鑰對,參見圖1,該方法包括:
[0048]SlOl:當(dāng)啟動應(yīng)用程序時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第一摘要。
[0049]在本發(fā)明實(shí)施例中,特征值運(yùn)算可以為哈希運(yùn)算,當(dāng)然,特征值運(yùn)算還可以為其他的運(yùn)算方法,本發(fā)明實(shí)施例對此不做具體限定。另外,當(dāng)特征值運(yùn)算為哈希運(yùn)算時(shí),哈希運(yùn)算的算法可以為安全哈希算法(Secure Hash Algorithm, SHA)、SHA2算法、中國國家密碼管理局發(fā)布的中國商用密碼雜湊算法標(biāo)準(zhǔn)SM3密碼雜湊算法(SM3 Cryptographic HashAlgorithm)等等,本發(fā)明實(shí)施例對此不做具體限定。
[0050]S102:根據(jù)內(nèi)嵌密鑰對中的公鑰,對存儲的該應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第二摘要,該數(shù)字簽名是該應(yīng)用程序每發(fā)生一次更新時(shí),根據(jù)密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名得到,密鑰對是該應(yīng)用程序?qū)?yīng)的廠商密鑰對。
[0051]S103:如果第一摘要與第二摘要相同,則確定該應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定該應(yīng)用程序的完整性驗(yàn)證不通過。
[0052]在本發(fā)明實(shí)施例中,網(wǎng)絡(luò)設(shè)備中的應(yīng)用程序每發(fā)生一次更新時(shí),該應(yīng)用程序的數(shù)據(jù)會發(fā)生更新,此時(shí),網(wǎng)絡(luò)設(shè)備根據(jù)內(nèi)嵌的密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名,得到該應(yīng)用程序的數(shù)字簽名。當(dāng)啟動該應(yīng)用程序時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第一摘要,并根據(jù)密鑰對中的公鑰,對該應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第二摘要;如果第一摘要與第二摘要相同,則確定該應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定該應(yīng)用程序的完整性驗(yàn)證不通過。由于廠商密鑰對內(nèi)嵌在網(wǎng)絡(luò)設(shè)備中,且網(wǎng)絡(luò)設(shè)備每更新一次該應(yīng)用程序時(shí),根據(jù)密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名,使該應(yīng)用程序的數(shù)字簽名得到更新,進(jìn)而使第二摘要也得到更新,保證更新該應(yīng)用程序之后,可以對該應(yīng)用程序進(jìn)行完整性驗(yàn)證。
[0053]可選地,當(dāng)啟動應(yīng)用程序時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第一摘要之前,還包括:
[0054]當(dāng)接收到更新完成指令時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第二摘要;
[0055]根據(jù)該密鑰對中的私鑰,對第二摘要進(jìn)行簽名,得到該應(yīng)用程序的數(shù)字簽名;
[0056]存儲該應(yīng)用程序的數(shù)字簽名。
[0057]可選地,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第二摘要,包括:
[0058]將內(nèi)存中該應(yīng)用程序的數(shù)據(jù)讀入安全中央處理器CPU內(nèi)部的靜態(tài)隨機(jī)存儲器(Static Random Access Memory, SRAM)中;
[0059]通過安全CPU內(nèi)部的安全引擎讀取SRAM中的數(shù)據(jù);
[0060]通過安全引擎對讀取的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第二摘要。
[0061]可選地,存儲該應(yīng)用程序的數(shù)字簽名,包括:
[0062]將該應(yīng)用程序的數(shù)字簽名存儲在安全CPU內(nèi)部的可信非易失性隨機(jī)訪問存儲器(Non-Volatile Random Access Memory, NVRAM)中。
[0063]可選地,根據(jù)內(nèi)嵌密鑰對中的公鑰,對存儲的該應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第二摘要之前,還包括:
[0064]通過安全CPU內(nèi)部的安全引擎,獲取可信NVRAM中存儲的數(shù)字簽名。
[0065]上述所有可選技術(shù)方案,均可按照任意結(jié)合形成本發(fā)明的可選實(shí)施例,本發(fā)明實(shí)施例對此不再--贅述。
[0066]圖2是本發(fā)明實(shí)施例提供的一種應(yīng)用程序完整性驗(yàn)證方法的流程圖,該方法的執(zhí)行主體可以為網(wǎng)絡(luò)設(shè)備,該網(wǎng)絡(luò)設(shè)備的可信位置保存有應(yīng)用程序?qū)?yīng)的廠商密鑰對,參見圖2,該方法包括:
[0067]S201:當(dāng)接收到更新完成指令時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第二摘要。
[0068]由于網(wǎng)絡(luò)設(shè)備中該應(yīng)用程序可能會存在漏洞,網(wǎng)絡(luò)設(shè)備需要對該應(yīng)用程序進(jìn)行打補(bǔ)丁,或者廠商對該應(yīng)用程序進(jìn)行升級,網(wǎng)絡(luò)設(shè)備需要對該應(yīng)用程序進(jìn)行升級,當(dāng)對該應(yīng)用程序打補(bǔ)丁完成或者升級完成時(shí),網(wǎng)絡(luò)設(shè)備會接收到更新完成指令,該更新完成指令可以是網(wǎng)絡(luò)設(shè)備進(jìn)行觸發(fā)得到,也可以是網(wǎng)絡(luò)設(shè)備接收到服務(wù)器向發(fā)送的完成響應(yīng)時(shí)進(jìn)行觸發(fā)得到,該服務(wù)器為存儲該應(yīng)用程序的設(shè)備。對網(wǎng)絡(luò)設(shè)備中的應(yīng)用程序進(jìn)行更新之后,網(wǎng)絡(luò)設(shè)備中應(yīng)用程序的數(shù)據(jù)發(fā)生變化,此時(shí),需要重新計(jì)算該應(yīng)用程序的第二摘要,進(jìn)而重新對該應(yīng)用程序進(jìn)行簽名。
[0069]另外,為了更進(jìn)一步保證該應(yīng)用程序的完整性,防止惡意分子對該應(yīng)用程序的篡改,可以在網(wǎng)絡(luò)設(shè)備中設(shè)置安全CPU,該安全CPU的內(nèi)部結(jié)構(gòu)圖如圖3所示。該安全CPU包括安全引擎、處理器、SRAM、密鑰對存儲設(shè)備和可信NVRAM,安全引擎、SRAM、密鑰對存儲設(shè)備和可信NVRAM都是安全且可信的,安全引擎用于讀取SRAM中的數(shù)據(jù),并對讀取的數(shù)據(jù)進(jìn)行處理,SRAM用于存儲可信的應(yīng)用程序的數(shù)據(jù),密鑰對存儲設(shè)備用于存儲廠商密鑰對,可信NVRAM用于存儲該應(yīng)用程序的數(shù)字簽名。因此,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第二摘要的操作具體可以為:安全CPU將內(nèi)存中該應(yīng)用程序的數(shù)據(jù)讀入安全中央處理器CPU內(nèi)部的靜態(tài)隨機(jī)存儲器SRAM中;安全CPU內(nèi)部的安全引擎讀取SRAM中的數(shù)據(jù);且該安全引擎對讀取的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第二摘要。
[0070]其中,安全引擎可以從SRAM中讀取數(shù)據(jù),處理器無法從SRAM中讀取數(shù)據(jù),保證SRAM中的數(shù)據(jù)不會被感染,進(jìn)而保證數(shù)據(jù)的可信性和可靠性。另外,特征值運(yùn)算可以是哈希運(yùn)算,當(dāng)然,還可以是其他的運(yùn)算方法,本發(fā)明實(shí)施例對此不做具體限定。另外,當(dāng)特征值運(yùn)算為哈希運(yùn)算時(shí),哈希運(yùn)算的算法可以為安全哈希算法(Secure Hash Algorithm, SHA)、SHA2算法、中國國家密碼管理局發(fā)布的中國商用密碼雜湊算法標(biāo)準(zhǔn)SM3密碼雜湊算法(SM3Cryptographic Hash Algorithm)等等,本發(fā)明實(shí)施例對此不做具體限定。
[0071]需要說明的是,本發(fā)明實(shí)施例中涉及的應(yīng)用程序可以為操作系統(tǒng),該操作系統(tǒng)還可以自帶應(yīng)用APP,當(dāng)然,該應(yīng)用程序也可以為第三方應(yīng)用程序,本發(fā)明實(shí)施例對此不做具體限定。另外,本發(fā)明實(shí)施例中涉及的網(wǎng)絡(luò)設(shè)備可以為路由器等網(wǎng)絡(luò)設(shè)備,該網(wǎng)絡(luò)設(shè)備的操作系統(tǒng)可以為嵌入式操作系統(tǒng),當(dāng)然,對于安裝有普通操作系統(tǒng)的設(shè)備,也可以基于與本發(fā)明實(shí)施例相同或相似的方法進(jìn)行應(yīng)用程序完整性驗(yàn)證,比如,安裝有普通操作系統(tǒng)的設(shè)備可以為計(jì)算機(jī)、手機(jī)、掌上電腦等,本發(fā)明實(shí)施例同樣對此不做具體限定。
[0072]S202:根據(jù)內(nèi)嵌密鑰對中的私鑰,對第二摘要進(jìn)行簽名,得到該應(yīng)用程序的數(shù)字簽名,該密鑰對是該應(yīng)用程序?qū)?yīng)的廠商密鑰對。
[0073]具體地,安全引擎從密鑰對存儲設(shè)備中獲取該密鑰對中的私鑰,根據(jù)獲取的私鑰,對第二摘要進(jìn)行簽名,得到該應(yīng)用程序的數(shù)字簽名。
[0074]其中,根據(jù)獲取的私鑰對第二摘要進(jìn)行簽名的算法可以包括多種,比如,RSA、ElGamal、Fiat-Shamir、Schnorr等等,本發(fā)明實(shí)施例對采用的簽名算法不做具體限定。
[0075]S203:存儲該應(yīng)用程序的數(shù)字簽名。
[0076]其中,可以將該應(yīng)用程序的數(shù)字簽名存儲在安全中央處理器CPU內(nèi)部的可信非易失性隨機(jī)訪問存儲器NVRAM中。可信NVRAM中存儲數(shù)字簽名的區(qū)域不允許處理器讀寫,只允許安全引擎讀寫,保證NVRAM中存儲數(shù)字簽名的區(qū)域不會被感染,進(jìn)而保證存儲的數(shù)字簽名的可信性和可靠性。
[0077]需要說明的是,當(dāng)網(wǎng)絡(luò)設(shè)備首次下載該應(yīng)用程序且接收到下載完成指令時(shí),該網(wǎng)絡(luò)設(shè)備也可以按照與S201至203相似的方法,計(jì)算該應(yīng)用程序的數(shù)字簽名,并存儲在可信NVRAM中。當(dāng)該應(yīng)用程序每發(fā)生一次更新時(shí),網(wǎng)絡(luò)設(shè)備按照S201至203的步驟,根據(jù)密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名,得到該應(yīng)用程序的數(shù)字簽名,進(jìn)而,將可信NVRAM中存儲的數(shù)字簽名替換為當(dāng)前計(jì)算的該應(yīng)用程序的數(shù)字簽名。
[0078]另外,本發(fā)明實(shí)施中并沒有將該應(yīng)用程序的數(shù)字簽名存儲在TPM芯片中,而是存儲在CPU內(nèi)部的可信NVRAM中,這樣,可以不用在網(wǎng)絡(luò)設(shè)備中布置TPM芯片,降低了應(yīng)用程序完整性驗(yàn)證的成本。
[0079]當(dāng)對網(wǎng)絡(luò)設(shè)備中該應(yīng)用程序進(jìn)行更新,并根據(jù)S201至S203,對該應(yīng)用程序的數(shù)字簽名進(jìn)行更新之后,網(wǎng)絡(luò)設(shè)備中存儲的數(shù)字簽名是基于該應(yīng)用程序更新之后的數(shù)據(jù)進(jìn)行簽名得到,而不是基于該應(yīng)用程序的原始數(shù)據(jù)進(jìn)行簽名得到,保證網(wǎng)絡(luò)設(shè)備中存儲的數(shù)字簽名是最新的,進(jìn)而可以通過S204至206對該應(yīng)用程序的完整性進(jìn)行驗(yàn)證。
[0080]S204:當(dāng)啟動該應(yīng)用程序時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第一摘要。
[0081]具體地,當(dāng)啟動該應(yīng)用程序時(shí),安全CPU將內(nèi)存中該應(yīng)用程序的數(shù)據(jù)讀入安全CPU內(nèi)部的SRAM中;安全CPU內(nèi)部的安全引擎讀取SRAM中的數(shù)據(jù);且該安全引擎對讀取的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第一摘要。
[0082]S205:根據(jù)密鑰對中的公鑰,對存儲的該應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第二摘要。
[0083]由于該應(yīng)用程序的數(shù)字簽名可以存儲在安全CPU內(nèi)部的可信NVRAM中,所以,安全引擎根據(jù)密鑰對中的公鑰,對存儲的該應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第二摘要之前,還可以包括:安全CPU內(nèi)部的安全引擎,獲取可信NVRAM中存儲的數(shù)字簽名,保證可信NVRAM中存儲的數(shù)字簽名不會被感染。
[0084]其中,根據(jù)密鑰對中的公鑰,對存儲的該應(yīng)用程序的數(shù)字簽名進(jìn)行解密的算法與S202中的簽名算法相同,本發(fā)明實(shí)施例同樣對此不做具體限定。
[0085]S206:如果第一摘要與第二摘要相同,則確定該應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定該應(yīng)用程序的完整性驗(yàn)證不通過。
[0086]具體地,安全引擎將第一摘要與第二摘要進(jìn)行比較,如果第一摘要與第二摘要相同,則確定該應(yīng)用程序沒有被篡改,該應(yīng)用程序的完整性驗(yàn)證通過,如果第一摘要與第二摘要不同,則確定該應(yīng)用程序被篡改,該應(yīng)用程序的完整性驗(yàn)證不通過。進(jìn)一步地,當(dāng)確定該應(yīng)用程序的完整性驗(yàn)證不通過時(shí),網(wǎng)絡(luò)設(shè)備可以顯示提示信息,以提醒用戶該應(yīng)用程序被篡改過,使用戶不再使用該應(yīng)用程序,防止產(chǎn)生安全事件,即用戶賬號、密碼等隱私信息被盜取。
[0087]由于上述S201中計(jì)算的第二摘要是基于該應(yīng)用程序更新之后的數(shù)據(jù)進(jìn)行計(jì)算得到,即,第二摘要為基準(zhǔn)摘要,如果惡意分子對該應(yīng)用程序進(jìn)行篡改,則上述S204中計(jì)算的第一摘要是基于該應(yīng)用程序篡改后的數(shù)據(jù)進(jìn)行計(jì)算得到,因此,可以通過第一摘要和第二摘要,對該應(yīng)用程序的完整性進(jìn)行驗(yàn)證。
[0088]另外,網(wǎng)絡(luò)設(shè)備對該應(yīng)用程序進(jìn)行數(shù)字簽名,使該應(yīng)用程序的完整性保護(hù)的機(jī)制完全遷移到網(wǎng)絡(luò)設(shè)備側(cè),該應(yīng)用程序的完整性不再依賴廠商私鑰的私密性,因此,廠商和用戶實(shí)現(xiàn)了安全解耦,不再相互依賴,一旦惡意分子對該應(yīng)用程序進(jìn)行篡改并出現(xiàn)安全事件時(shí),安全事件的職責(zé)比較清晰。再者,當(dāng)對網(wǎng)絡(luò)設(shè)備中該應(yīng)用程序打補(bǔ)丁或者升級,且該網(wǎng)絡(luò)設(shè)備為大型電信設(shè)備時(shí),由于電信設(shè)備要求運(yùn)行的業(yè)務(wù)不能中斷,一旦業(yè)務(wù)中斷會產(chǎn)生嚴(yán)重的后果,因此,本發(fā)明實(shí)施例提供的方法可以在線對該應(yīng)用程序打補(bǔ)丁或者升級,避免了該電信設(shè)備中運(yùn)行的業(yè)務(wù)中斷。
[0089]在本發(fā)明實(shí)施例中,網(wǎng)絡(luò)設(shè)備中的應(yīng)用程序每發(fā)生一次更新時(shí),該應(yīng)用程序的數(shù)據(jù)會發(fā)生更新,此時(shí),網(wǎng)絡(luò)設(shè)備根據(jù)內(nèi)嵌的密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名,得到該應(yīng)用程序的數(shù)字簽名。當(dāng)啟動該應(yīng)用程序時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第一摘要,并根據(jù)密鑰對中的公鑰,對該應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第二摘要;如果第一摘要與第二摘要相同,則確定該應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定該應(yīng)用程序的完整性驗(yàn)證不通過。由于廠商密鑰對內(nèi)嵌在網(wǎng)絡(luò)設(shè)備中,且網(wǎng)絡(luò)設(shè)備每更新一次該應(yīng)用程序時(shí),根據(jù)密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名,使該應(yīng)用程序的數(shù)字簽名得到更新,進(jìn)而使第二摘要也得到更新,保證更新該應(yīng)用程序之后,可以對該應(yīng)用程序進(jìn)行完整性驗(yàn)證。
[0090]圖4是本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)示意圖,該網(wǎng)絡(luò)設(shè)備的可信位置保存有應(yīng)用程序?qū)?yīng)的廠商密鑰對,參見圖4,該網(wǎng)絡(luò)設(shè)備包括:第一運(yùn)算模塊401、解密模塊402和確定模塊403。
[0091]第一運(yùn)算模塊401,用于當(dāng)啟動應(yīng)用程序時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第一摘要;
[0092]解密模塊402,用于根據(jù)內(nèi)嵌密鑰對中的公鑰,對存儲的該應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第二摘要,該數(shù)字簽名是該應(yīng)用程序每發(fā)生一次更新時(shí),根據(jù)密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名得到,密鑰對是該應(yīng)用程序?qū)?yīng)的廠商密鑰對;
[0093]確定模塊403,用于如果第一摘要與第二摘要相同,則確定該應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定該應(yīng)用程序的完整性驗(yàn)證不通過。
[0094]可選地,該網(wǎng)絡(luò)設(shè)備還包括:
[0095]第二運(yùn)算模塊,用于當(dāng)接收到更新完成指令時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第二摘要;
[0096]簽名模塊,用于根據(jù)密鑰對中的私鑰,對第二摘要進(jìn)行簽名,得到該應(yīng)用程序的數(shù)字簽名;
[0097]存儲模塊,用于存儲該應(yīng)用程序的數(shù)字簽名。
[0098]可選地,第二運(yùn)算模塊包括:
[0099]讀入單元,用于將內(nèi)存中該應(yīng)用程序的數(shù)據(jù)讀入安全中央處理器CPU內(nèi)部的靜態(tài)隨機(jī)存儲器SRAM中;
[0100]讀取單元,用于通過安全CPU內(nèi)部的安全引擎讀取SRAM中的數(shù)據(jù);
[0101]運(yùn)算單元,用于通過安全引擎對讀取的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第二摘要。
[0102]可選地,存儲模塊包括:
[0103]存儲單元,用于將該應(yīng)用程序的數(shù)字簽名存儲在安全CPU內(nèi)部的可信非易失性隨機(jī)訪問存儲器NVRAM中。
[0104]可選地,該網(wǎng)絡(luò)設(shè)備還包括:
[0105]獲取模塊,用于通過安全CPU內(nèi)部的安全引擎,獲取可信NVRAM中存儲的數(shù)字簽名。
[0106]可選地,當(dāng)特征值運(yùn)算為哈希運(yùn)算時(shí),哈希運(yùn)算的算法可以為安全哈希算法(Secure Hash Algorithm, SHA)、SHA2算法、中國國家密碼管理局發(fā)布的中國商用密碼雜湊算法標(biāo)準(zhǔn)SM3密碼雜湊算法(SM3 Cryptographic Hash Algorithm)等等,本發(fā)明實(shí)施例對此不做具體限定。
[0107]在本發(fā)明實(shí)施例中,網(wǎng)絡(luò)設(shè)備中的應(yīng)用程序每發(fā)生一次更新時(shí),該應(yīng)用程序的數(shù)據(jù)會發(fā)生更新,此時(shí),網(wǎng)絡(luò)設(shè)備根據(jù)內(nèi)嵌的密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名,得到該應(yīng)用程序的數(shù)字簽名。當(dāng)啟動該應(yīng)用程序時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第一摘要,并根據(jù)密鑰對中的公鑰,對該應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第二摘要;如果第一摘要與第二摘要相同,則確定該應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定該應(yīng)用程序的完整性驗(yàn)證不通過。由于廠商密鑰對內(nèi)嵌在網(wǎng)絡(luò)設(shè)備中,且網(wǎng)絡(luò)設(shè)備每更新一次該應(yīng)用程序時(shí),根據(jù)密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名,使該應(yīng)用程序的數(shù)字簽名得到更新,進(jìn)而使第二摘要也得到更新,保證更新該應(yīng)用程序之后,可以對該應(yīng)用程序進(jìn)行完整性驗(yàn)證。
[0108]需要說明的是:上述實(shí)施例提供的網(wǎng)絡(luò)設(shè)備在應(yīng)用程序完整性驗(yàn)證時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將網(wǎng)絡(luò)設(shè)備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的網(wǎng)絡(luò)設(shè)備與應(yīng)用程序完整性驗(yàn)證方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。
[0109]上述所有可選技術(shù)方案,均可按照任意結(jié)合形成本發(fā)明的可選實(shí)施例,本發(fā)明實(shí)施例對此不再--贅述。
[0110]圖5是本發(fā)明實(shí)施例提供的另一種網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)示意圖,參見圖5,該網(wǎng)絡(luò)設(shè)備包括:安全處理器501和可信存儲器502。
[0111]安全處理器501,用于當(dāng)啟動應(yīng)用程序時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第一摘要;根據(jù)內(nèi)嵌密鑰對中的公鑰,對存儲的該應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第二摘要,該數(shù)字簽名是該應(yīng)用程序每發(fā)生一次更新時(shí),根據(jù)密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名得到,密鑰對是該應(yīng)用程序?qū)?yīng)的廠商密鑰對;如果第一摘要與第二摘要相同,則確定該應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定該應(yīng)用程序的完整性驗(yàn)證不通過。
[0112]可選地,安全處理器501,還用于當(dāng)接收到更新完成指令時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第二摘要;根據(jù)密鑰對中的私鑰,對第二摘要進(jìn)行簽名,得到該應(yīng)用程序的數(shù)字簽名;
[0113]可信存儲器502,用于存儲該應(yīng)用程序的數(shù)字簽名。
[0114]可選地,安全處理器501,還用于將內(nèi)存中該應(yīng)用程序的數(shù)據(jù)讀入安全中央處理器CPU內(nèi)部的靜態(tài)隨機(jī)存儲器SRAM中;讀取SRAM中的數(shù)據(jù);對讀取的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第二摘要。
[0115]可選地,所述安全中央處理器CPU可以位于安全處理器501中。
[0116]可選地,所述安全中央處理器CPU可以與安全處理器501分立設(shè)置。
[0117]可選地,安全處理器501,還用于將該應(yīng)用程序的數(shù)字簽名存儲在安全CPU內(nèi)部的可信非易失性隨機(jī)訪問存儲器NVRAM中。
[0118]可選地,安全處理器501,還用于獲取可信NVRAM中存儲的數(shù)字簽名。
[0119]可選地,當(dāng)特征值運(yùn)算為哈希運(yùn)算時(shí),哈希運(yùn)算的算法可以為安全哈希算法(Secure Hash Algorithm, SHA)、SHA2算法、中國國家密碼管理局發(fā)布的中國商用密碼雜湊算法標(biāo)準(zhǔn)SM3密碼雜湊算法(SM3 Cryptographic Hash Algorithm)等等,本發(fā)明實(shí)施例對此不做具體限定。
[0120]上述所有可選技術(shù)方案,均可按照任意結(jié)合形成本發(fā)明的可選實(shí)施例,本發(fā)明實(shí)施例對此不再--贅述。
[0121]在本發(fā)明實(shí)施例中,網(wǎng)絡(luò)設(shè)備中的應(yīng)用程序每發(fā)生一次更新時(shí),該應(yīng)用程序的數(shù)據(jù)會發(fā)生更新,此時(shí),網(wǎng)絡(luò)設(shè)備根據(jù)內(nèi)嵌的密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名,得到該應(yīng)用程序的數(shù)字簽名。當(dāng)啟動該應(yīng)用程序時(shí),對該應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到該應(yīng)用程序的第一摘要,并根據(jù)密鑰對中的公鑰,對該應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到該應(yīng)用程序的第二摘要;如果第一摘要與第二摘要相同,則確定該應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定該應(yīng)用程序的完整性驗(yàn)證不通過。由于廠商密鑰對內(nèi)嵌在網(wǎng)絡(luò)設(shè)備中,且網(wǎng)絡(luò)設(shè)備每更新一次該應(yīng)用程序時(shí),根據(jù)密鑰對中的私鑰,對該應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名,使該應(yīng)用程序的數(shù)字簽名得到更新,進(jìn)而使第二摘要也得到更新,保證更新該應(yīng)用程序之后,可以對該應(yīng)用程序進(jìn)行完整性驗(yàn)證。
[0122]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計(jì)算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0123]以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種應(yīng)用程序完整性驗(yàn)證方法,其特征在于,所述方法包括: 當(dāng)啟動應(yīng)用程序時(shí),對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第一摘要; 根據(jù)內(nèi)嵌密鑰對中的公鑰,對存儲的所述應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到所述應(yīng)用程序的第二摘要,所述數(shù)字簽名是所述應(yīng)用程序每發(fā)生一次更新時(shí),根據(jù)所述密鑰對中的私鑰,對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名得到,所述密鑰對是所述應(yīng)用程序?qū)?yīng)的廠商密鑰對; 如果所述第一摘要與所述第二摘要相同,則確定所述應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定所述應(yīng)用程序的完整性驗(yàn)證不通過。
2.如權(quán)利要求1所述的方法,其特征在于,所述當(dāng)啟動應(yīng)用程序時(shí),對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第一摘要之前,還包括: 當(dāng)接收到更新完成指令時(shí),對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的所述第二摘要; 根據(jù)所述私鑰,對所述第二摘要進(jìn)行簽名,得到所述應(yīng)用程序的數(shù)字簽名; 存儲所述應(yīng)用程序的數(shù)字簽名。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第二摘要,包括: 將內(nèi)存中所述應(yīng)用程序的數(shù)據(jù)讀入安全中央處理器0^內(nèi)部的靜態(tài)隨機(jī)存儲器3狀1中; 通過所述安全0^內(nèi)部的安全引擎讀取所述3狀1中的數(shù)據(jù); 通過所述安全引擎對讀取的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第二摘要。
4.如權(quán)利要求2或3所述的方法,其特征在于,所述存儲所述應(yīng)用程序的數(shù)字簽名,包括: 將所述應(yīng)用程序的數(shù)字簽名存儲在安全中央處理器0^內(nèi)部的可信非易失性隨機(jī)訪問存儲器附狀1中。
5.如權(quán)利要求2或3或4所述的方法,其特征在于,所述根據(jù)內(nèi)嵌密鑰對中的公鑰,對存儲的所述應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到所述應(yīng)用程序的第二摘要之前,還包括: 通過所述安全中央處理器0^內(nèi)部的安全引擎,獲取所述可信非易失性隨機(jī)訪問存儲器附狀1中存儲的數(shù)字簽名。
6.一種網(wǎng)絡(luò)設(shè)備,其特征在于,所述網(wǎng)絡(luò)設(shè)備包括: 第一運(yùn)算模塊,用于當(dāng)啟動應(yīng)用程序時(shí),對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第一摘要; 解密模塊,用于根據(jù)內(nèi)嵌密鑰對中的公鑰,對存儲的所述應(yīng)用程序的數(shù)字簽名進(jìn)行解密,得到所述應(yīng)用程序的第二摘要,所述數(shù)字簽名是所述應(yīng)用程序每發(fā)生一次更新時(shí),根據(jù)所述密鑰對中的私鑰,對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行簽名得到,所述密鑰對是所述應(yīng)用程序?qū)?yīng)的廠商密鑰對; 確定模塊,用于如果所述第一摘要與所述第二摘要相同,則確定所述應(yīng)用程序的完整性驗(yàn)證通過,如果所述第一摘要與所述第二摘要不同,確定所述應(yīng)用程序的完整性驗(yàn)證不通過。
7.如權(quán)利要求6所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述網(wǎng)絡(luò)設(shè)備還包括: 第二運(yùn)算模塊,用于當(dāng)接收到更新完成指令時(shí),對所述應(yīng)用程序的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第二摘要; 簽名模塊,用于根據(jù)所述私鑰,對所述第二摘要進(jìn)行簽名,得到所述應(yīng)用程序的數(shù)字簽名; 存儲模塊,用于存儲所述應(yīng)用程序的數(shù)字簽名。
8.如權(quán)利要求7所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述第二運(yùn)算模塊包括: 讀入單元,用于將內(nèi)存中所述應(yīng)用程序的數(shù)據(jù)讀入安全中央處理器CPU內(nèi)部的靜態(tài)隨機(jī)存儲器SRAM中; 讀取單元,用于通過所述安全CPU內(nèi)部的安全引擎讀取所述SRAM中的數(shù)據(jù); 運(yùn)算單元,用于通過所述安全引擎對讀取的數(shù)據(jù)進(jìn)行特征值運(yùn)算,得到所述應(yīng)用程序的第二摘要。
9.如權(quán)利要求7或8所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述存儲模塊包括: 存儲單元,用于將所述應(yīng)用程序的數(shù)字簽名存儲在安全中央處理器CPU內(nèi)部的可信非易失性隨機(jī)訪問存儲器NVRAM中。
10.如權(quán)利要求7或8或9所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述網(wǎng)絡(luò)設(shè)備還包括: 獲取模塊,用于通過所述安全中央處理器CPU內(nèi)部的安全引擎,獲取所述可信非易失性隨機(jī)訪問存儲器NVRAM中存儲的數(shù)字簽名。
【文檔編號】G06F21/56GK104462965SQ201410647567
【公開日】2015年3月25日 申請日期:2014年11月14日 優(yōu)先權(quán)日:2014年11月14日
【發(fā)明者】付天福, 周沖 申請人:華為技術(shù)有限公司