本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別是涉及一種完整性校驗方法和裝置。
背景技術(shù):
網(wǎng)絡(luò)設(shè)備通過對自身代碼的完整性校驗,能夠校驗結(jié)果判斷出所述網(wǎng)絡(luò)設(shè)備中的硬件代碼或者軟件代碼是否出現(xiàn)被惡意篡改,由此可以有效防止所述網(wǎng)絡(luò)設(shè)備中的隱私信息泄露,是一種網(wǎng)絡(luò)設(shè)備提高自身安全性的常用手段之一。
所述完整性校驗常用于具有嵌入式系統(tǒng)的網(wǎng)絡(luò)設(shè)備中,具有嵌入式系統(tǒng)的網(wǎng)絡(luò)設(shè)備較為常見的包括單片機、具有聯(lián)網(wǎng)功能的智能冰箱等。該網(wǎng)絡(luò)設(shè)備對預先獲取嵌入式系統(tǒng)內(nèi)各個代碼段進行哈希(Hash)計算,得到與代碼段一一對應(yīng)的基線(Benchmark)并保存。保存的基線可以作為后續(xù)完整性校驗的標準。該網(wǎng)絡(luò)設(shè)備在運行過程中,會周期性對存儲的代碼段進行完整性校驗,所述完整性校驗可以理解為對代碼段進行相同的哈希計算得到計算結(jié)果,比對同一代碼段的計算結(jié)果和對應(yīng)的基線。如果針對一個代碼段的比對結(jié)果為相同,則該網(wǎng)絡(luò)設(shè)備可以確定該代碼段是完整的,沒有被篡改。為了保證校驗的準確性,用于比對的基線被保存在CPU內(nèi),不允許寫入操作,所以安全級別很高,基本上不可能出現(xiàn)基線被篡改的情況。
嵌入式系統(tǒng)的特點是系統(tǒng)內(nèi)的代碼段數(shù)量較少且較為固定,所以代碼段所對應(yīng)的基線數(shù)量也較少也較為固定?;€的數(shù)量少且固定的特點使得具有嵌入式系統(tǒng)的網(wǎng)絡(luò)設(shè)備可以將基線保存在存儲空間有限的CPU中,從而給予基線較高的存儲安全級別。但是對于具有通用系統(tǒng)的網(wǎng)絡(luò)設(shè)備來說,通用系統(tǒng)的特點是系統(tǒng)內(nèi)代碼段的數(shù)量可以非常多,且不固定,例如在通用系統(tǒng)中可以隨時安裝各類軟件或反向卸載,使得具有通用系統(tǒng)的網(wǎng)絡(luò)設(shè)備需要具有保存大量基線的能力,而通用系統(tǒng)的CPU有限的存儲空間不具有存儲大量基線的能力。故具有通用系統(tǒng)的網(wǎng)絡(luò)設(shè)備目前只能將基線存儲在安全級別較低的存儲介質(zhì)中。
在安全級別低的存儲介質(zhì)中,由于不限制讀寫操作,所以無法保證基線不被篡改,而且即使基線被篡改,網(wǎng)絡(luò)設(shè)備也沒有能力發(fā)現(xiàn),從而降低了完整性校驗的準確性。例如黑客篡改了代碼段并對應(yīng)篡改了用于校驗該代碼段的基線,可能會導致網(wǎng)絡(luò)設(shè)備使用篡改后的基線驗證篡改后的代碼段也能通過完整性校驗。該網(wǎng)絡(luò)設(shè)備無法發(fā)現(xiàn)基線被篡改將為用戶安全帶來巨大隱患。
技術(shù)實現(xiàn)要素:
為了解決上述技術(shù)問題,本發(fā)明實施例提供了一種完整性校驗方法和裝置,為基線保存對應(yīng)的自校驗數(shù)據(jù),使得網(wǎng)絡(luò)設(shè)備在對代碼段進行完整性校驗前,可以通過自校驗數(shù)據(jù)判斷基線是否被篡改。
第一方面,本發(fā)明實施例提供了一種完整性校驗方法,應(yīng)用于網(wǎng)絡(luò)設(shè)備,所述方法包括:
當系統(tǒng)進程的代碼段加載到所述網(wǎng)絡(luò)設(shè)備的內(nèi)存中時,所述網(wǎng)絡(luò)設(shè)備對所述代碼段進行哈希計算,根據(jù)所述哈希計算的結(jié)果得到對應(yīng)所述代碼段的基線,并建立所述基線與所述代碼段之間的第一對應(yīng)關(guān)系;
所述網(wǎng)絡(luò)設(shè)備通過對所述基線執(zhí)行預置處理得到自校驗數(shù)據(jù),并建立所述基線與所述自校驗數(shù)據(jù)的第二對應(yīng)關(guān)系,所述自校驗數(shù)據(jù)用于作為校驗所述基線是否被修改的判斷條件;
在所述代碼段駐留在所述內(nèi)存期間,在對所述代碼段進行所述完整性校驗之前,所述網(wǎng)絡(luò)設(shè)備根據(jù)所述代碼段和所述第一對應(yīng)關(guān)系查找到所述基線;
所述網(wǎng)絡(luò)設(shè)備根據(jù)所述基線和所述第二對應(yīng)關(guān)系查找到所述自校驗數(shù)據(jù);
所述網(wǎng)絡(luò)設(shè)備通過所述自校驗數(shù)據(jù)對所述基線進行校驗,所述校驗具體包括:所述網(wǎng)絡(luò)設(shè)備對所述基線執(zhí)行所述預置處理得到第一待比對數(shù)據(jù),比對所述自校驗數(shù)據(jù)和所述第一待比對數(shù)據(jù),或者,所述網(wǎng)絡(luò)設(shè)備對所述自校驗數(shù)據(jù)反向執(zhí)行所述預處理還原出第二待比對數(shù)據(jù),比對所述自校驗數(shù)據(jù)和所述第二待比對數(shù)據(jù)是否相同;
當校驗結(jié)果為相同時,所述網(wǎng)絡(luò)設(shè)備判斷所述基線沒有被修改,使用所述基線對所述代碼段執(zhí)行所述完整性校驗。
在第一方面的第一種可能的實現(xiàn)方式中,所述網(wǎng)絡(luò)設(shè)備通過對所述基線 處理得到自校驗數(shù)據(jù),具體包括:
所述網(wǎng)絡(luò)設(shè)備通過自身對應(yīng)的私鑰對所述基線進行數(shù)字簽名,將數(shù)字簽名結(jié)果作為所述基線的自校驗數(shù)據(jù)。
結(jié)合第一方面或者第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,在所述網(wǎng)絡(luò)設(shè)備通過對所述基線執(zhí)行預置處理得到自校驗數(shù)據(jù)之后,還包括:
所述網(wǎng)絡(luò)設(shè)備對所述基線進行加密,得到加密后的所述基線;
所述網(wǎng)絡(luò)設(shè)備根據(jù)所述代碼段和所述第一對應(yīng)關(guān)系查找到所述基線具體包括:
所述網(wǎng)絡(luò)設(shè)備根據(jù)所述代碼段和所述第一對應(yīng)關(guān)系查找到加密后的所述基線,對加密后的所述基線進行反向解密得到所述基線。
結(jié)合第一方面或者第一方面的第一種或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,當所述系統(tǒng)進程的代碼段加載到所述網(wǎng)絡(luò)設(shè)備的內(nèi)存中時,還包括:
所述網(wǎng)絡(luò)設(shè)備獲取所述代碼段的邏輯地址,所述邏輯地址包括所述代碼段的首尾地址;
在對所述代碼段進行所述完整性校驗之前,所述網(wǎng)絡(luò)設(shè)備通過所述邏輯地址獲取所述代碼段。
在第一方面的第四種可能的實現(xiàn)方式中,還包括:
當所述代碼段從所述內(nèi)存中移除時,根據(jù)所述第一對應(yīng)關(guān)系和所述第二對應(yīng)關(guān)系查找到并刪除所述基線和所述自校驗數(shù)據(jù)。
結(jié)合第一方面或者第一方面的第一種或第二種或第三種或第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,還包括:
所述網(wǎng)絡(luò)設(shè)備將所述基線以及對應(yīng)的自校驗數(shù)據(jù)保存在進程控制塊PCB中,以提高所述網(wǎng)絡(luò)設(shè)備通過所述第一對應(yīng)關(guān)系和所述第二對應(yīng)關(guān)系進行查找的查找速度。
第二方面,本發(fā)明實施例提供了一種完整性校驗裝置,應(yīng)用于網(wǎng)絡(luò)設(shè)備,包括:
計算單元,用于當系統(tǒng)進程的代碼段加載到所述網(wǎng)絡(luò)設(shè)備的內(nèi)存中時, 對所述代碼段進行哈希計算,根據(jù)所述哈希計算的結(jié)果得到對應(yīng)所述代碼段的基線,并建立所述基線與所述代碼段之間的第一對應(yīng)關(guān)系;
處理單元,用于通過對所述基線執(zhí)行預置處理得到自校驗數(shù)據(jù),并建立所述基線與所述自校驗數(shù)據(jù)的第二對應(yīng)關(guān)系,所述自校驗數(shù)據(jù)用于作為校驗所述基線是否被修改的判斷條件;
查找單元,用于在所述代碼段駐留在所述內(nèi)存期間,在對所述代碼段進行所述完整性校驗之前,根據(jù)所述代碼段和所述第一對應(yīng)關(guān)系查找到所述基線;
所述查找單元還用于根據(jù)所述基線和所述第二對應(yīng)關(guān)系查找到所述自校驗數(shù)據(jù);
校驗單元,用于通過所述自校驗數(shù)據(jù)對所述基線進行校驗,所述校驗具體包括:所述網(wǎng)絡(luò)設(shè)備對所述基線執(zhí)行所述預置處理得到第一待比對數(shù)據(jù),比對所述自校驗數(shù)據(jù)和所述第一待比對數(shù)據(jù),或者,所述網(wǎng)絡(luò)設(shè)備對所述自校驗數(shù)據(jù)反向執(zhí)行所述預處理還原出第二待比對數(shù)據(jù),比對所述自校驗數(shù)據(jù)和所述第二待比對數(shù)據(jù)是否相同;
判斷單元,用于當校驗結(jié)果為相同時,判斷所述基線沒有被修改,使用所述基線對所述代碼段執(zhí)行所述完整性校驗。
在第二方面的第一種可能的實現(xiàn)方式中,
所述處理單元具體用于通過自身對應(yīng)的私鑰對所述基線進行數(shù)字簽名,將數(shù)字簽名結(jié)果作為所述基線的自校驗數(shù)據(jù)。
結(jié)合第二方面或者第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,還包括:
加密單元,用于在觸發(fā)所述處理單元之后,對所述基線進行加密,得到加密后的所述基線;
所述查找單元具體用于根據(jù)所述代碼段和所述第一對應(yīng)關(guān)系查找到加密后的所述基線,對加密后的所述基線進行反向解密得到所述基線。
結(jié)合第二方面或者第二方面的第一種或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,還包括:
第一獲取單元,用于在觸發(fā)所述計算單元時,獲取所述代碼段的邏輯地 址,所述邏輯地址包括所述代碼段的首尾地址;
第二獲取單元,用于在觸發(fā)判斷單元之前,通過所述邏輯地址獲取所述代碼段。
在第二方面的第四種可能的實現(xiàn)方式中,還包括:
移除單元,用于當所述代碼段從所述內(nèi)存中移除時,根據(jù)所述第一對應(yīng)關(guān)系和所述第二對應(yīng)關(guān)系查找到并刪除所述基線和所述自校驗數(shù)據(jù)。
結(jié)合第二方面或者第二方面的第一種或第二種或第三種或第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,還包括:
保存單元,用于將所述基線以及對應(yīng)的自校驗數(shù)據(jù)保存在進程控制塊PCB中,以提高所述網(wǎng)絡(luò)設(shè)備通過所述第一對應(yīng)關(guān)系和所述第二對應(yīng)關(guān)系進行查找的查找速度。
由上述技術(shù)方案可以看出,所述網(wǎng)絡(luò)設(shè)備通過對所述基線處理得到對應(yīng)的自校驗數(shù)據(jù),通過所述自校驗數(shù)據(jù)可以驗證對應(yīng)基線的完整性,使得所述網(wǎng)絡(luò)設(shè)備具有識別所述基線是否被篡改的能力,所述網(wǎng)絡(luò)設(shè)備使用確認沒有被篡改的基線對代碼段進行完整性校驗,提高了校驗準確度。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種完整性校驗方法的方法流程圖;
圖2為本發(fā)明實施例提供的一種完整性校驗方法的方法流程圖;
圖3為本發(fā)明實施例提供的一種完整性校驗裝置的裝置結(jié)構(gòu)圖;
圖4為本發(fā)明實施例提供的一種完整性校驗裝置的裝置結(jié)構(gòu)圖。
具體實施方式
現(xiàn)有技術(shù)中,對系統(tǒng)中代碼段的完整性校驗主要應(yīng)用于具有嵌入式系統(tǒng)的網(wǎng)絡(luò)設(shè)備中,例如單片機或者智能冰箱等。由于嵌入式系統(tǒng)中的代碼段數(shù)量有限,且代碼段變化較少、相對固定,故對應(yīng)這些代碼段的基線的數(shù)量和 內(nèi)容一般基本不變,具有存儲容量小,改變少的特點。由此可以預先配置存儲在不允許寫操作、且存儲空間有限的CPU內(nèi)核中。
但是,在使用范圍更廣的、具有通用系統(tǒng)的網(wǎng)絡(luò)設(shè)備中,通用系統(tǒng)所包含的代碼段數(shù)量相對更多,內(nèi)容也具有變化頻繁的可能。例如智能手機就是一種典型的具有通用系統(tǒng)的網(wǎng)絡(luò)設(shè)備,智能手機系統(tǒng)中基本上可以不受限制的安裝各類軟件應(yīng)用,那么針對這些軟件應(yīng)用代碼段的基線的數(shù)量將會很多,將無法再和嵌入式系統(tǒng)一樣使用存儲空間有限的CPU來存儲基線,而只能將基線存儲在安全級別相對較低的存儲介質(zhì)中,無法保證基線不被篡改的可能性。由于目前網(wǎng)絡(luò)設(shè)備沒有判斷基線是否被篡改的能力,將導致對代碼段的完整性校驗的校驗結(jié)果可信度不高,若代碼段通過完整性校驗,也不能判定該代碼段沒有被篡改?;蛘呷舸a段沒有通過完整性校驗,也無法判定到底是由于代碼段被篡改還是基線被篡改導致的。
為此,本發(fā)明實施例提供了一種完整性校驗方法和裝置,所述網(wǎng)絡(luò)設(shè)備通過對所述基線處理得到對應(yīng)的自校驗數(shù)據(jù),通過所述自校驗數(shù)據(jù)可以驗證對應(yīng)基線的完整性,使得所述網(wǎng)絡(luò)設(shè)備具有識別所述基線是否被篡改的能力,所述網(wǎng)絡(luò)設(shè)備使用確認沒有被篡改的基線對代碼段進行完整性校驗,提高了校驗準確度。
在為基線建立用于校驗基線完整性的自校驗數(shù)據(jù)的基礎(chǔ)上,本發(fā)明實施例還提供了通過對基線加密的方法,通過自校驗加上對基線加密的雙重保護,進一步提高了基線的安全性,能夠讓網(wǎng)絡(luò)設(shè)備可以有效的判斷出基線是否被篡改。
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整的描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
實施例一
圖1為本發(fā)明實施例提供的一種完整性校驗方法的方法流程圖,應(yīng)用于網(wǎng)絡(luò)設(shè)備,所述方法包括:
S101:當系統(tǒng)進程的代碼段加載到所述網(wǎng)絡(luò)設(shè)備的內(nèi)存中時,所述網(wǎng)絡(luò) 設(shè)備對所述代碼段進行哈希計算,根據(jù)所述哈希計算的結(jié)果得到對應(yīng)所述代碼段的基線,并建立所述基線與所述代碼段之間的第一對應(yīng)關(guān)系。
舉例說明,當有代碼段(Code Segment)加載到所述網(wǎng)絡(luò)設(shè)備的內(nèi)存中時,網(wǎng)絡(luò)設(shè)備可以通過內(nèi)存中的進程控制塊(Processing Control Block,PCB)獲知,并還可以獲取該進程段的相關(guān)信息,例如進程段的首尾地址等。所述網(wǎng)絡(luò)設(shè)備可以在所述代碼段被首次執(zhí)行之前,對所述代碼段進行第一次可信度量,通過哈希(Hash)計算得到對應(yīng)所述代碼段的基線。計算基線的過程可以參加如下方式:
App Code Segment[i]=Code Segment(start-address[i],end-address[i]);
其中,
App Code Segment[i]為所述代碼段,i為對應(yīng)所述代碼段的標識或編號等。
start-address[i],end-address[i]為所述代碼段的首地址和尾地址。
哈希計算的計算公式可以如下所示:
Hash[i]=SHA256(App Code Segment[i]);
其中,
SHA256為安全哈希算法(Secure Hash Algorithm,SHA)的一種具體位數(shù)的算法,本發(fā)明并不限定一定使用SHA256來進行哈希計算,也可以是其他哈希算法。
將所述哈希計算得出的結(jié)果作為所述代碼段的基線,并綁定所述代碼段和基線,也就是建立所述代碼段與基線的第一對應(yīng)關(guān)系。
需要注意,本發(fā)明實施例所應(yīng)用的所述網(wǎng)絡(luò)設(shè)備主要為具有通用系統(tǒng)的網(wǎng)絡(luò)設(shè)備,也可以是具有嵌入式系統(tǒng)的網(wǎng)絡(luò)設(shè)備。
S102:所述網(wǎng)絡(luò)設(shè)備通過對所述基線執(zhí)行預置處理得到自校驗數(shù)據(jù),并建立所述基線與所述自校驗數(shù)據(jù)的第二對應(yīng)關(guān)系,所述自校驗數(shù)據(jù)用于作為校驗所述基線是否被修改的判斷條件。
舉例說明,通過執(zhí)行預置處理得到自校驗數(shù)據(jù)的方式可以為通過算法獲取所述基線內(nèi)容的摘要,以摘要作為自校驗數(shù)據(jù),或者通過數(shù)字簽名(Digital Signature或者Signature)等方式,本發(fā)明對此不做限定。可選的,本發(fā)明實 施例提供了一種通過對所述基線執(zhí)行預置處理得到自校驗數(shù)據(jù)的方式,具體包括:
所述網(wǎng)絡(luò)設(shè)備通過自身對應(yīng)的私鑰對所述基線進行數(shù)字簽名,將數(shù)字簽名結(jié)果作為所述基線的自校驗數(shù)據(jù)。
舉例說明,所述私鑰可以理解為非對稱密鑰中的私鑰,與所述網(wǎng)絡(luò)設(shè)備具有對應(yīng)關(guān)系。所述私鑰可以存儲在所述網(wǎng)絡(luò)設(shè)備的安全運行中心(Security Operations Center,SOC)中。通過數(shù)字簽名后的得到的所述數(shù)字簽名結(jié)果可以通過非對稱密鑰中對應(yīng)私鑰的公鑰進行解密,完成對所述基線的完整性校驗。
S103:在所述代碼段駐留在所述內(nèi)存期間,在對所述代碼段進行所述完整性校驗之前,所述網(wǎng)絡(luò)設(shè)備根據(jù)所述代碼段和所述第一對應(yīng)關(guān)系查找到所述基線。
S104:所述網(wǎng)絡(luò)設(shè)備根據(jù)所述基線和所述第二對應(yīng)關(guān)系查找到所述自校驗數(shù)據(jù)。
S105:所述網(wǎng)絡(luò)設(shè)備通過所述自校驗數(shù)據(jù)對所述基線進行校驗,所述校驗具體包括:所述網(wǎng)絡(luò)設(shè)備對所述基線執(zhí)行所述預置處理得到第一待比對數(shù)據(jù),比對所述自校驗數(shù)據(jù)和所述第一待比對數(shù)據(jù),或者,所述網(wǎng)絡(luò)設(shè)備對所述自校驗數(shù)據(jù)反向執(zhí)行所述預處理還原出第二待比對數(shù)據(jù),比對所述自校驗數(shù)據(jù)和所述第二待比對數(shù)據(jù)是否相同。
S106:當校驗結(jié)果為相同時,所述網(wǎng)絡(luò)設(shè)備判斷所述基線沒有被修改,使用所述基線對所述代碼段執(zhí)行所述完整性校驗。
舉例說明,為了保證校驗所述代碼段的基線沒有被篡改,將在校驗所述代碼段的完整性之前,使用所述自校驗數(shù)據(jù)對所述基線進行完整性校驗。由于所述自校驗數(shù)據(jù)是通過完整的、未被篡改的所述基線處理生成,若所述基線被篡改,則在使用所述自校驗數(shù)據(jù)進行校驗的過程中必然可以發(fā)現(xiàn)。并在通過所述校驗確定所述基線沒有被篡改的情況下,使用所述基線校驗所述代碼段的完整性,當所述完整性校驗成功時,可以明確確認所述代碼段完整,當所述完整性校驗不成功時,可以明確確認所述代碼段不完整。
需要注意,所述網(wǎng)絡(luò)設(shè)備對所述代碼段的完整性校驗可以周期性進行。
還需要注意,通過所述自校驗數(shù)據(jù)對所述基線進行校驗的過程可以與所述自校驗數(shù)據(jù)的類型相關(guān),例如當所述自校驗數(shù)據(jù)通過特定算法根據(jù)所述基線計算得到的摘要,那么在對所述基線進行所述校驗過程中,可以對所述基線通過相同所述特定算法計算出摘要,再和所述自校驗數(shù)據(jù)進行比對。若所述自校驗數(shù)據(jù)為通過私鑰數(shù)字簽名得到,那么在對所述基線進行所述校驗過程中,可以對所述自校驗數(shù)據(jù)反向執(zhí)行所述預處理,也就是使用所述私鑰對應(yīng)的公鑰對所述數(shù)字簽名結(jié)果進行解密,將解密出的內(nèi)容與所述基線進行比對。本發(fā)明實施例對其他可能的通過所述自校驗數(shù)據(jù)對所述基線進行校驗的過程在此不再一一窮舉。
當比對結(jié)果為相同時,所述基線被確定為未被修改,則可以使用所述基線對所述代碼段進行完整性校驗,所述完整性校驗的過程可以對所述代碼段使用與步驟S101中獲得所述基線的所使用哈希算法相同的哈希算法,例如為
PCR[i]=SHA256(App Code Segment[i])
其中,PCR[i]為對應(yīng)所述代碼段的平臺配置寄存器(Platform Configuration Register,PCR)。
當PCR[i]=Hash[i]時,可以確定所述代碼段通過所述完整性校驗,所述代碼段未被修改。
可見,所述網(wǎng)絡(luò)設(shè)備通過對所述基線處理得到對應(yīng)的自校驗數(shù)據(jù),通過所述自校驗數(shù)據(jù)可以驗證對應(yīng)基線的完整性,使得所述網(wǎng)絡(luò)設(shè)備具有識別所述基線是否被篡改的能力,所述網(wǎng)絡(luò)設(shè)備使用確認沒有被篡改的基線對代碼段進行完整性校驗,提高了校驗準確度。
實施例二
除了對所述基線進行處理得到自校驗數(shù)據(jù)外,本發(fā)明實施例還可以在此基礎(chǔ)上,進一步提高對所述基線的安全保護。在圖1所對應(yīng)的實施例基礎(chǔ)上,圖2為本發(fā)明實施例提供的一種完整性校驗方法的方法流程圖,所述方法包括:
S201:當系統(tǒng)進程的代碼段加載到所述網(wǎng)絡(luò)設(shè)備的內(nèi)存中時,所述網(wǎng)絡(luò)設(shè)備對所述代碼段進行哈希計算,根據(jù)所述哈希計算的結(jié)果得到對應(yīng)所述代 碼段的基線,并建立所述基線與所述代碼段之間的第一對應(yīng)關(guān)系。
舉例說明,當所述代碼段加載到所述內(nèi)存中時,所述網(wǎng)絡(luò)設(shè)備可以通過PCB獲取所述代碼段的首尾地址,所述首尾地址可以是所述代碼段占用內(nèi)存中的物理地址,也可以是所述代碼段的邏輯地址。需要注意是的,當所述網(wǎng)絡(luò)設(shè)備部署有通用系統(tǒng)時,由于通用系統(tǒng)的靈活性特點,可能會導致在執(zhí)行所述代碼段之后,所述代碼段在內(nèi)存中的物理地址發(fā)生改變,但所述代碼段的邏輯地址一般相對固定。所述網(wǎng)絡(luò)設(shè)備可以獲取所述代碼段的邏輯地址,所述邏輯地址包括所述代碼段的首尾地址,使用所述代碼段的邏輯地址進行哈希計算,可以得到較為準確的基線。在之后周期性的對所述代碼段執(zhí)行完整性校驗之前,所述網(wǎng)絡(luò)設(shè)備通過所述邏輯地址獲取所述代碼段,使用所述代碼段的邏輯地址可以從所述內(nèi)存中準確快速的查找到所述代碼段。
S202:所述網(wǎng)絡(luò)設(shè)備通過對所述基線執(zhí)行預置處理得到自校驗數(shù)據(jù),并建立所述基線與所述自校驗數(shù)據(jù)的第二對應(yīng)關(guān)系,所述自校驗數(shù)據(jù)用于作為校驗所述基線是否被修改的判斷條件。
由于所述代碼段與所述基線,所述基線與所述自校驗數(shù)據(jù)均具有對應(yīng)關(guān)系,故在選擇存儲所述基線和所述自校驗數(shù)據(jù)的存儲位置時,可以將所述基線和所述自校驗數(shù)據(jù)存儲到與所述代碼段存儲的同一存儲介質(zhì)中,以提高之后的查找效率。故可選的,所述網(wǎng)絡(luò)設(shè)備將所述基線以及對應(yīng)的自校驗數(shù)據(jù)保存在PCB中,以提高所述網(wǎng)絡(luò)設(shè)備通過所述第一對應(yīng)關(guān)系和所述第二對應(yīng)關(guān)系進行查找的查找速度。所述網(wǎng)絡(luò)設(shè)備可以在所述PCB中新增字段用于專門存儲所述基線和所述自校驗數(shù)據(jù)。
還需要注意,在具有通用系統(tǒng)的移動終端中,內(nèi)存中的代碼段可以被移除,若所述代碼段被移除,如果還繼續(xù)保存對應(yīng)所述代碼段的所述基線和自校驗數(shù)據(jù),可能會造成系統(tǒng)資源的浪費。為此,可選的,本發(fā)明實施例還提供了,當所述代碼段從所述內(nèi)存中移除時,所述網(wǎng)絡(luò)設(shè)備根據(jù)所述第一對應(yīng)關(guān)系和所述第二對應(yīng)關(guān)系查找到并刪除所述基線和所述自校驗數(shù)據(jù)。通過刪除無效的基線和自校驗數(shù)據(jù),可以減少網(wǎng)絡(luò)設(shè)備的存儲壓力。
S203:所述網(wǎng)絡(luò)設(shè)備對所述基線進行加密,得到加密后的所述基線。
舉例說明,通過對所述基線進行加密,可以使得即使他人獲取到加密后 的基線,也不知道該加密后的基線是否與所述基線有關(guān);即使知道這個就是加密后的基線,也無法通過所述加密后的基線得知未加密的基線是什么,由此提高了安全性。而且,除了可以對所述基線進行加密,還可以對所述基線對應(yīng)的所述自校驗數(shù)據(jù)進行加密,進一步提高安全性。加密的方式可以是通過使用所述網(wǎng)絡(luò)設(shè)備對應(yīng)的非對稱密鑰中的私鑰加密。在反向解密的過程中,使用相應(yīng)的公鑰解密。不同于常用的公鑰加密的方式,通過私鑰加密的方式,私鑰只會在剛開始加密的時候使用到,之后都是使用公鑰反向解密,較少次數(shù)的使用私鑰可以降低私鑰泄露的幾率,保證私鑰的安全性。
S204:在所述代碼段駐留在所述內(nèi)存期間,在對所述代碼段進行所述完整性校驗之前,所述網(wǎng)絡(luò)設(shè)備根據(jù)所述代碼段和所述第一對應(yīng)關(guān)系查找到加密后的所述基線,對加密后的所述基線進行反向解密得到所述基線。
S205:所述網(wǎng)絡(luò)設(shè)備根據(jù)所述基線和所述第二對應(yīng)關(guān)系查找到所述自校驗數(shù)據(jù)。
S206:所述網(wǎng)絡(luò)設(shè)備通過所述自校驗數(shù)據(jù)對所述基線進行校驗,所述校驗具體包括:所述網(wǎng)絡(luò)設(shè)備對所述基線執(zhí)行所述預置處理得到第一待比對數(shù)據(jù),比對所述自校驗數(shù)據(jù)和所述第一待比對數(shù)據(jù),或者,所述網(wǎng)絡(luò)設(shè)備對所述自校驗數(shù)據(jù)反向執(zhí)行所述預處理還原出第二待比對數(shù)據(jù),比對所述自校驗數(shù)據(jù)和所述第二待比對數(shù)據(jù)是否相同。
S207:當校驗結(jié)果為相同時,所述網(wǎng)絡(luò)設(shè)備判斷所述基線沒有被修改,使用所述基線對所述代碼段執(zhí)行所述完整性校驗。
由此可見,在為基線建立用于校驗基線完整性的自校驗數(shù)據(jù)的基礎(chǔ)上,本發(fā)明實施例還提供了通過對基線加密的方法,通過自校驗加上對基線加密的雙重保護,進一步提高了基線的安全性,能夠讓網(wǎng)絡(luò)設(shè)備可以有效的判斷出基線是否被篡改。
實施例三
圖3為本發(fā)明實施例提供的一種完整性校驗裝置的裝置結(jié)構(gòu)圖,應(yīng)用于網(wǎng)絡(luò)設(shè)備,所述完整性校驗裝置300包括:
計算單元301,用于當系統(tǒng)進程的代碼段加載到所述網(wǎng)絡(luò)設(shè)備的內(nèi)存中 時,對所述代碼段進行哈希計算,根據(jù)所述哈希計算的結(jié)果得到對應(yīng)所述代碼段的基線,并建立所述基線與所述代碼段之間的第一對應(yīng)關(guān)系。
舉例說明,當有代碼段(Code Segment)加載到所述網(wǎng)絡(luò)設(shè)備的內(nèi)存中時,網(wǎng)絡(luò)設(shè)備可以通過內(nèi)存中的PCB獲知,并還可以獲取該進程段的相關(guān)信息,例如進程段的首尾地址等。所述計算單元301可以在所述代碼段被首次執(zhí)行之前,對所述代碼段進行第一次可信度量,通過哈希(Hash)計算得到對應(yīng)所述代碼段的基線。計算基線的過程可以參加如下方式:
App Code Segment[i]=Code Segment(start-address[i],end-address[i]);
哈希計算的計算公式可以如下所示:
Hash[i]=SHA256(App Code Segment[i]);
將所述哈希計算得出的結(jié)果作為所述代碼段的基線,并綁定所述代碼段和基線,也就是建立所述代碼段與基線的第一對應(yīng)關(guān)系。
需要注意,本發(fā)明實施例所應(yīng)用的所述網(wǎng)絡(luò)設(shè)備主要為具有通用系統(tǒng)的網(wǎng)絡(luò)設(shè)備,也可以是具有嵌入式系統(tǒng)的網(wǎng)絡(luò)設(shè)備。
處理單元302,用于通過對所述基線執(zhí)行預置處理得到自校驗數(shù)據(jù),并建立所述基線與所述自校驗數(shù)據(jù)的第二對應(yīng)關(guān)系,所述自校驗數(shù)據(jù)用于作為校驗所述基線是否被修改的判斷條件。
舉例說明,所述處理單元302通過執(zhí)行預置處理得到自校驗數(shù)據(jù)的方式可以為通過算法獲取所述基線內(nèi)容的摘要,以摘要作為自校驗數(shù)據(jù),或者通過數(shù)字簽名(Digital Signature或者Signature)等方式,本發(fā)明對此不做限定??蛇x的,所述處理單元302具體用于通過自身對應(yīng)的私鑰對所述基線進行數(shù)字簽名,將數(shù)字簽名結(jié)果作為所述基線的自校驗數(shù)據(jù)。
舉例說明,所述私鑰可以理解為非對稱密鑰中的私鑰,與所述網(wǎng)絡(luò)設(shè)備具有對應(yīng)關(guān)系。所述私鑰可以存儲在所述網(wǎng)絡(luò)設(shè)備的SOC中。通過數(shù)字簽名后的得到的所述數(shù)字簽名結(jié)果可以通過非對稱密鑰中對應(yīng)私鑰的公鑰進行解密,完成對所述基線的完整性校驗。
查找單元303,用于在所述代碼段駐留在所述內(nèi)存期間,在對所述代碼段進行所述完整性校驗之前,根據(jù)所述代碼段和所述第一對應(yīng)關(guān)系查找到所述基線。
所述查找單元303還用于根據(jù)所述基線和所述第二對應(yīng)關(guān)系查找到所述自校驗數(shù)據(jù)。
校驗單元304,用于通過所述自校驗數(shù)據(jù)對所述基線進行校驗,所述校驗具體包括:所述網(wǎng)絡(luò)設(shè)備對所述基線執(zhí)行所述預置處理得到第一待比對數(shù)據(jù),比對所述自校驗數(shù)據(jù)和所述第一待比對數(shù)據(jù),或者,所述網(wǎng)絡(luò)設(shè)備對所述自校驗數(shù)據(jù)反向執(zhí)行所述預處理還原出第二待比對數(shù)據(jù),比對所述自校驗數(shù)據(jù)和所述第二待比對數(shù)據(jù)是否相同。
判斷單元305,用于當校驗結(jié)果為相同時,判斷所述基線沒有被修改,使用所述基線對所述代碼段執(zhí)行所述完整性校驗。
舉例說明,為了保證校驗所述代碼段的基線沒有被篡改,所述校驗單元304將在校驗所述代碼段的完整性之前,使用所述自校驗數(shù)據(jù)對所述基線進行完整性校驗。由于所述自校驗數(shù)據(jù)是通過完整的、未被篡改的所述基線處理生成,若所述基線被篡改,則在使用所述自校驗數(shù)據(jù)進行校驗的過程中必然可以發(fā)現(xiàn)。所述判斷單元305在通過所述校驗確定所述基線沒有被篡改的情況下,使用所述基線校驗所述代碼段的完整性,當所述完整性校驗成功時,所述判斷單元305可以明確確認所述代碼段完整,當所述完整性校驗不成功時,所述判斷單元305可以明確確認所述代碼段不完整。
需要注意,對所述代碼段的完整性校驗可以周期性進行。
還需要注意,所述校驗單元304通過所述自校驗數(shù)據(jù)對所述基線進行校驗的過程可以與所述自校驗數(shù)據(jù)的類型相關(guān),例如當所述自校驗數(shù)據(jù)通過特定算法根據(jù)所述基線計算得到的摘要,那么在對所述基線進行所述校驗過程中,可以對所述基線通過相同所述特定算法計算出摘要,再和所述自校驗數(shù)據(jù)進行比對。若所述自校驗數(shù)據(jù)為通過私鑰數(shù)字簽名得到,那么在對所述基線進行所述校驗過程中,可以對所述自校驗數(shù)據(jù)反向執(zhí)行所述預處理,也就是使用所述私鑰對應(yīng)的公鑰對所述數(shù)字簽名結(jié)果進行解密,將解密出的內(nèi)容與所述基線進行比對。本發(fā)明實施例對其他可能的通過所述自校驗數(shù)據(jù)對所述基線進行校驗的過程在此不再一一窮舉。
當比對結(jié)果為相同時,所述基線被確定為未被修改,則可以使用所述基線對所述代碼段進行完整性校驗,所述完整性校驗的過程可以對所述代碼段 使用與所述計算單元301中獲得所述基線的所使用哈希算法相同的哈希算法,例如為
PCR[i]=SHA256(App Code Segment[i])
當PCR[i]=Hash[i]時,可以確定所述代碼段通過所述完整性校驗,所述代碼段未被修改。
可見,所述網(wǎng)絡(luò)設(shè)備通過對所述基線處理得到對應(yīng)的自校驗數(shù)據(jù),通過所述自校驗數(shù)據(jù)可以驗證對應(yīng)基線的完整性,使得所述網(wǎng)絡(luò)設(shè)備具有識別所述基線是否被篡改的能力,所述網(wǎng)絡(luò)設(shè)備使用確認沒有被篡改的基線對代碼段進行完整性校驗,提高了校驗準確度。
實施例四
除了對所述基線進行處理得到自校驗數(shù)據(jù)外,本發(fā)明實施例還可以在此基礎(chǔ)上,進一步提高對所述基線的安全保護。在圖3所對應(yīng)的實施例基礎(chǔ)上,圖4為本發(fā)明實施例提供的一種完整性校驗裝置的裝置結(jié)構(gòu)圖,
對于所述計算單元301,當所述代碼段加載到所述內(nèi)存中時,所述計算單元301可以通過PCB獲取所述代碼段的首尾地址,所述首尾地址可以是所述代碼段占用內(nèi)存中的物理地址,也可以是所述代碼段的邏輯地址。需要注意是的,當所述網(wǎng)絡(luò)設(shè)備部署有通用系統(tǒng)時,由于通用系統(tǒng)的靈活性特點,可能會導致在執(zhí)行所述代碼段之后,所述代碼段在內(nèi)存中的物理地址發(fā)生改變,但所述代碼段的邏輯地址一般相對固定。
故所述完整性校驗裝置300還包括:
第一獲取單元401,用于在觸發(fā)所述計算單元301時,獲取所述代碼段的邏輯地址,所述邏輯地址包括所述代碼段的首尾地址。
所述計算單元301使用所述代碼段的邏輯地址進行哈希計算,可以得到較為準確的基線。在之后周期性的對所述代碼段執(zhí)行完整性校驗之前,第二獲取單元402通過所述邏輯地址獲取所述代碼段,使用所述代碼段的邏輯地址可以從所述內(nèi)存中準確快速的查找到所述代碼段。
對于所述處理單元302,由于所述代碼段與所述基線,所述基線與所述自校驗數(shù)據(jù)均具有對應(yīng)關(guān)系,故在選擇存儲所述基線和所述自校驗數(shù)據(jù)的存儲 位置時,可以將所述基線和所述自校驗數(shù)據(jù)存儲到與所述代碼段存儲的同一存儲介質(zhì)中,以提高之后的查找效率。
故可選的,所述完整性校驗裝置300還包括保存單元403,用于將所述基線以及對應(yīng)的自校驗數(shù)據(jù)保存在PCB中,以提高所述網(wǎng)絡(luò)設(shè)備通過所述第一對應(yīng)關(guān)系和所述第二對應(yīng)關(guān)系進行查找的查找速度??梢栽谒鯬CB中新增字段用于專門存儲所述基線和所述自校驗數(shù)據(jù)。
還需要注意,在具有通用系統(tǒng)的移動終端中,內(nèi)存中的代碼段可以被移除,若所述代碼段被移除,如果還繼續(xù)保存對應(yīng)所述代碼段的所述基線和自校驗數(shù)據(jù),可能會造成系統(tǒng)資源的浪費。為此,可選的,還包括移除單元404,用于當所述代碼段從所述內(nèi)存中移除時,所述網(wǎng)絡(luò)設(shè)備根據(jù)所述第一對應(yīng)關(guān)系和所述第二對應(yīng)關(guān)系查找到并刪除所述基線和所述自校驗數(shù)據(jù)。通過刪除無效的基線和自校驗數(shù)據(jù),可以減少網(wǎng)絡(luò)設(shè)備的存儲壓力。
加密單元405用于在觸發(fā)所述處理單元302之后,對所述基線進行加密,得到加密后的所述基線。
舉例說明,通過對所述基線進行加密,可以使得即使他人獲取到加密后的基線,也不知道該加密后的基線是否與所述基線有關(guān);即使知道這個就是加密后的基線,也無法通過所述加密后的基線得知未加密的基線是什么,由此提高了安全性。而且,除了可以對所述基線進行加密,還可以對所述基線對應(yīng)的所述自校驗數(shù)據(jù)進行加密,進一步提高安全性。加密的方式可以是通過使用所述網(wǎng)絡(luò)設(shè)備對應(yīng)的非對稱密鑰中的私鑰加密。在反向解密的過程中,使用相應(yīng)的公鑰解密。不同于常用的公鑰加密的方式,通過私鑰加密的方式,私鑰只會在剛開始加密的時候使用到,之后都是使用公鑰反向解密,較少次數(shù)的使用私鑰可以降低私鑰泄露的幾率,保證私鑰的安全性。
所述查找單元303具體用于根據(jù)所述代碼段和所述第一對應(yīng)關(guān)系查找到加密后的所述基線,對加密后的所述基線進行反向解密得到所述基線。
由此可見,在為基線建立用于校驗基線完整性的自校驗數(shù)據(jù)的基礎(chǔ)上,本發(fā)明實施例還提供了通過對基線加密的方法,通過自校驗加上對基線加密的雙重保護,進一步提高了基線的安全性,能夠讓網(wǎng)絡(luò)設(shè)備可以有效的判斷出基線是否被篡改。
本發(fā)明實施例中提到的第一對應(yīng)關(guān)系和所述第一待比對數(shù)據(jù)的“第一”只是用來做名字標識,并不代表順序上的第一。該規(guī)則同樣適用于“第二”。
本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)可以是下述介質(zhì)中的至少一種:只讀存儲器(Read-Only Memory,ROM)、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于設(shè)備及系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關(guān)之處參見方法實施例的部分說明即可。以上所描述的設(shè)備及系統(tǒng)實施例僅僅是示意性的,其中作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
以上所述僅是本發(fā)明的優(yōu)選實施方式,并非用于限定本發(fā)明的保護范圍。應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。