一種基于可信計算的白名單靜態(tài)度量方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種度量方法,具體涉及一種基于可信計算的白名單靜態(tài)度量方法。
【背景技術(shù)】
[0002]Linux系統(tǒng)中,程序是以可執(zhí)行文件的形式存放在磁盤上的,可執(zhí)行文件既包括被執(zhí)行函數(shù)的目標代碼,也包括這些函數(shù)所使用的數(shù)據(jù)。程序中的很多函數(shù)是所有程序都可使用的服務(wù)例程,它們的目標代碼包含在所謂“庫”的特殊文件中。一個庫函數(shù)的代碼即可以被靜態(tài)的拷貝到可執(zhí)行文件中,也可以在運行時被連接到進程。
[0003]如圖4所示,Linux系統(tǒng)執(zhí)行程序的執(zhí)行過程:假定一位用戶想在當前目錄下顯示文件,只要在shell提示符下簡單地敲入外部命令/bin/ls就可以得到這個結(jié)果。命令shell創(chuàng)建一個新進程,新進程又調(diào)用系統(tǒng)調(diào)用execveO,其中傳遞的一個參數(shù)就是Is可執(zhí)行文件的全路徑名,在本例中即/bin/ls。sys_execve()服務(wù)例程找到相應(yīng)的文件,檢查可執(zhí)行格式,并根據(jù)存放在其中的信息修改當前進程的執(zhí)行上下文。sysjxecveO把可執(zhí)行文件路徑名拷貝到一個新分配的頁框。然后調(diào)用d0_execve()函數(shù),傳遞給它的參數(shù)為指向這個頁框的指針、指針數(shù)組的指針及把用戶態(tài)寄存器內(nèi)容保存到內(nèi)核態(tài)堆棧的位置。
[0004]“白名單”是與“黑名單”對應(yīng)的一組概念。“白名單”是指規(guī)則中設(shè)置的允許使用的名單列表,其意義是“好的”、“被允許的”。對應(yīng)“黑名單”,是指“壞的”、“不被允許的”。黑名單的范圍是確定的,當一類新的威脅程序不在黑名單列表中,同時又沒有及時更新病毒庫,那么就會極易導(dǎo)致被攻擊,我們稱之為“Zero-day”攻擊,這是黑名單機制的一大弊端。隨著病毒木馬等繁衍的越來越多,這種機制本身會導(dǎo)致黑名單的無限擴大,當其擴大到一定規(guī)模時,匹配檢查將是一個異常耗時的工作。而白名單技術(shù)可以成為替代殺毒軟件,進行病毒防護、阻止惡意軟件攻擊、禁止非授權(quán)程序運行等。同時,解決了“ Zero-day ”攻擊的性能問題,從系統(tǒng)的安全、性能和功能三個方面滿足用戶的要求。
【發(fā)明內(nèi)容】
[0005]為了實現(xiàn)上述目的,本發(fā)明提供一種基于可信計算的白名單靜態(tài)度量方法,在分析電力生產(chǎn)控制類系統(tǒng)的基礎(chǔ)上,定義了系統(tǒng)中可執(zhí)行程序、動態(tài)庫、關(guān)鍵內(nèi)核模塊等靜態(tài)度量方法,以及如何利用靜態(tài)度量保障軟件正確執(zhí)行;通過定義終端軟件的白名單庫,控制終端軟件的安裝和運行,進而保障了軟件的執(zhí)行權(quán)限、來源、可信性等的完整性。
[0006]本發(fā)明的目的是采用下述技術(shù)方案實現(xiàn)的:
[0007]一種基于可信計算的白名單靜態(tài)度量方法,所述方法包括:
[0008](I)確定度量對象;
[0009](2)獲取所述度量對象的哈希校驗值;
[0010](3)對比所述度量對象的哈希校驗值和預(yù)期校驗值;其中,所述預(yù)期校驗值為對所述度量對象的哈希校驗值所期望的結(jié)果,即被度量對象的完整性;
[0011](4)根據(jù)對比結(jié)果判斷所述度量對象的可信性;
[0012](5)生成白名單庫;其中,所述白名單庫包括:本地白名單庫、網(wǎng)絡(luò)白名單庫和臨時白名單庫;
[0013](6)安裝終端軟件。
[0014]其中,所述步驟(I)中度量對象包括可執(zhí)行程序,動態(tài)庫和內(nèi)核模塊。
[0015]優(yōu)選的,所述步驟(2)包括:獲取可執(zhí)行程序的參數(shù)值,發(fā)送至靜態(tài)度量代理,計算可執(zhí)行程序的哈希校驗值。
[0016]進一步地,獲取動態(tài)庫的參數(shù)值,發(fā)送至靜態(tài)度量代理,計算動態(tài)庫的哈希校驗值。
[0017]進一步地,獲取內(nèi)核模塊的參數(shù)值,發(fā)送至靜態(tài)度量代理,計算內(nèi)核模塊的哈希校驗值。
[0018]優(yōu)選的,所述步驟(4)中度量對象的可信性包括:如果所述度量對象的哈希校驗值與預(yù)期的校驗值相同則認為其完整性未被篡改,允許該度量對象執(zhí)行,否則拒絕該度量對象執(zhí)行。
[0019]優(yōu)選的,所述步驟(5)中生成本地白名單庫包括:
[0020]系統(tǒng)白名單在程序初始化安裝時,通過掃描接口掃描生成,系統(tǒng)白名單不能作為軟件模板使用;
[0021]安裝程序白名單通過程序安裝接口、軟件掃描接口、網(wǎng)絡(luò)控件掃描接口生成。
[0022]優(yōu)選的,所述步驟(5)中生成網(wǎng)絡(luò)白名單庫包括:
[0023]當客戶端將程序組上報給管理中心后,軟件模板白名單通過管理中心生成;異常程序白名單通過未知程序上報審批流程生成。
[0024]進一步地,所述步驟(5)中生成臨時白名單庫包括:將所有白名單文件均保存在whitelist文件中,對白名單庫中的所有執(zhí)行程序提供防篡改保護,禁止非授權(quán)的修改行為,防止改名、更換位置、修改內(nèi)容、刪除操作;
[0025]在默認情況下,僅允許升級程序及升級程序所創(chuàng)建的執(zhí)行程序?qū)Π酌麊螏熘械膱?zhí)行程序進行增、刪、改操作,修改后的可執(zhí)行程序保存在臨時文件中,待操作系統(tǒng)重啟后將臨時文件寫入到白名單庫中。
[0026]優(yōu)選的,所述步驟¢)中所述終端軟件包括:有采集權(quán)限的軟件和無采集權(quán)限的軟件。
[0027]進一步地,所述有采集權(quán)限的軟件安裝包括:當客戶端作為采集終端時,通過管理中心授予客戶端軟件采集權(quán)限,并通過安裝接口進行安裝;
[0028]所安裝的軟件白名單通過接口導(dǎo)出為策略文件,上報管理中心待批準到其他客戶端。
[0029]進一步地,所述無采集權(quán)限的軟件安裝包括:默認情況下,客戶端無采集權(quán)限,此時只允許通過軟件安裝接口安裝管理中心下發(fā)的模版軟件,通過模板安裝的執(zhí)行程序?qū)⒈蛔詣犹砑拥骄W(wǎng)絡(luò)白名單庫。
[0030]與現(xiàn)有技術(shù)比,本發(fā)明達到的有益效果是:
[0031](I)本專利充分分析了電力生產(chǎn)控制類系統(tǒng)的特點,確定了可執(zhí)行程序、動態(tài)庫、關(guān)鍵內(nèi)核模塊等核心靜態(tài)度量對象,利用可信計算技術(shù)進行加載前的靜態(tài)度量,保障軟件的執(zhí)行權(quán)限、來源、可信性等的完整性。
[0032](2)基于可信計算的白名單系統(tǒng),實現(xiàn)系統(tǒng)運行過程中可執(zhí)行程序的完整性檢驗,防范惡意代碼等攻擊,保證了生命周期運行環(huán)境的安全。
[0033](3)定義了電力生產(chǎn)控制類系統(tǒng)的白名單庫,利用白名單管理機制控制終端軟件的運行、安裝,保證了非法或非授權(quán)的應(yīng)用程序無法執(zhí)行,保障電力生產(chǎn)控制類系統(tǒng)的安全穩(wěn)定運行,避免了黑名單機制無窮盡的尋找惡意程序與代碼,以及防護滯后的缺點。
【附圖說明】
[0034]圖1是本發(fā)明提供的基于可信計算的白名單靜態(tài)度量方法流程圖
[0035]圖2是本發(fā)明提供的靜態(tài)度量方法流程圖
[0036]圖3是本發(fā)明提供的靜態(tài)度量體系結(jié)構(gòu)示意圖
[0037]圖4是【背景技術(shù)】提供的程序執(zhí)行流程圖
[0038]圖5是本發(fā)明提供的可執(zhí)行程序度量流程圖
[0039]圖6是本發(fā)明提供的動態(tài)庫度量流程圖
[0040]圖7是本發(fā)明提供的內(nèi)核模塊度量流程圖
[0041]圖8是本發(fā)明提供的軟件安裝程序白名單控制方法流程圖
【具體實施方式】
[0042]下面結(jié)合附圖對本發(fā)明的【具體實施方式】作進一步的詳細說明。
[0043]如圖1所示,一種基于可信計算的白名單靜態(tài)度量方法,所述方法包括:
[0044]結(jié)合圖2-3所示,(I)確定度量對象;所述步驟(I)中,所述度量對象包括可執(zhí)行程序,動態(tài)庫和內(nèi)核模塊。
[0045](2)獲取所述度量對象的哈希校驗值;如圖5所示,所述步驟(2)包括:獲取可執(zhí)行程序的參數(shù)值,發(fā)送至靜態(tài)度量代理,計算可執(zhí)行程序的哈希校驗值。
[0046]當調(diào)用fork系統(tǒng)創(chuàng)建的子程序并執(zhí)行execve系統(tǒng)加載新的可執(zhí)行程序時,調(diào)用do_execve(),將可執(zhí)行程序的參數(shù)值發(fā)送至內(nèi)核并封裝在struct linux_binprm結(jié)構(gòu)中;LSM機制在所述do_execve O處添加參數(shù);該參數(shù)為封裝好的struct linux_binprm結(jié)構(gòu)的鉤子函數(shù)security_bprm_check(),所述鉤子函數(shù)將該struct linux_binprm結(jié)構(gòu)中可執(zhí)行程序的內(nèi)核代碼段struct發(fā)送至靜態(tài)度量代理。其中,所述可執(zhí)行程序的參數(shù)值包括可執(zhí)行文件