本發(fā)明涉及計算機(jī)安全,特別涉及一種基于網(wǎng)絡(luò)的系統(tǒng)防攻擊方法。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,計算機(jī)系統(tǒng)廣泛應(yīng)用于政治、經(jīng)濟(jì)、文化、國防和安全等重要領(lǐng)域。其中,操作系統(tǒng)內(nèi)核是整個計算機(jī)系統(tǒng)工作和安全的基礎(chǔ)。內(nèi)核運(yùn)行于整個系統(tǒng)的最高權(quán)限層,管理和控制底層硬件資源,為上層文件提供安全隔離的資源抽象和訪問接口。越來越多的安全報告表明操作系統(tǒng)內(nèi)核仍然存在著大量的漏洞和錯誤,攻擊者能夠獲得最髙的權(quán)限、以內(nèi)核權(quán)限實施任意攻擊行為,包括惡意操作底層硬件、執(zhí)行系統(tǒng)中的任意代碼、讀寫內(nèi)存和磁盤上的任意數(shù)據(jù)等等?,F(xiàn)有技術(shù)基于vmm,對內(nèi)核權(quán)限操作進(jìn)行截獲和驗證,實現(xiàn)了對文件的全面保護(hù)。然而另一方面,vmm運(yùn)行于更高的權(quán)限層,操作系統(tǒng)內(nèi)核與vmm之間頻繁的層間切換也導(dǎo)致了較高的性能開銷。
技術(shù)實現(xiàn)要素:
為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種基于網(wǎng)絡(luò)的系統(tǒng)防攻擊方法,包括:
從應(yīng)用尋址區(qū)的塊將應(yīng)用數(shù)據(jù)拷貝到內(nèi)核的緩存塊,然后從緩存塊傳輸?shù)酱疟P塊;應(yīng)用數(shù)據(jù)在內(nèi)核中傳輸時與內(nèi)核隔離,無法被內(nèi)核訪問;當(dāng)一個塊被內(nèi)核分配給應(yīng)用時,可信平臺僅授權(quán)內(nèi)核使用隔離狀態(tài)的塊;當(dāng)可信平臺將該塊映射到應(yīng)用的安全塊表時,對該塊的映射狀態(tài)進(jìn)行驗證,拒絕所有非隔離塊;然后,該塊被安全的分配給該應(yīng)用,標(biāo)記為占有狀態(tài)、并被應(yīng)用的sid標(biāo)記;可信平臺通過驗證sid,禁止占有狀態(tài)的塊被內(nèi)核塊表或者其他應(yīng)用的安全塊表映射,保證應(yīng)用的內(nèi)存隔離;同時禁止應(yīng)用塊在應(yīng)用尋址區(qū)中被重映射;
應(yīng)用數(shù)據(jù)以明文的形式進(jìn)入內(nèi)核,可信平臺通過在不可信內(nèi)核中構(gòu)建一條可信應(yīng)用數(shù)據(jù)流來傳輸應(yīng)用數(shù)據(jù);應(yīng)用數(shù)據(jù)被安全用戶id即suid標(biāo)識;每個用戶都占有自身的suid,用戶在啟動自身的應(yīng)用時,將suid賦予應(yīng)用;可信平臺通過驗證suid保證應(yīng)用數(shù)據(jù)只能被其所有者訪問;suid標(biāo)記一個用戶組,用于用戶之間的文件共享,并指定不同的讀寫和執(zhí)行權(quán)限;
文件塊被映射為占有狀態(tài)時,應(yīng)用數(shù)據(jù)無法被內(nèi)核訪問;當(dāng)內(nèi)核需要將應(yīng)用數(shù)據(jù)從文件塊拷貝到緩存塊時,只能向可信平臺發(fā)出請求,由可信平臺完成數(shù)據(jù)拷貝;可信平臺僅授權(quán)內(nèi)核提供隔離狀態(tài)的緩存塊,對于非隔離狀態(tài)的緩存塊,可信平臺拒絕拷貝應(yīng)用數(shù)據(jù);
可信平臺定義兩種磁盤塊的狀態(tài)即空閑和占用,并使用一個磁盤塊數(shù)組進(jìn)行狀態(tài)跟蹤;在磁盤塊數(shù)組中,內(nèi)存的一個位對應(yīng)一個磁盤塊的狀態(tài);可信平臺對所有發(fā)送到磁盤的i/o命令進(jìn)行驗證;如果該命令是將應(yīng)用數(shù)據(jù)寫入磁盤塊,可信平臺確保被寫入的磁盤塊只能是空閑狀態(tài);在數(shù)據(jù)傳輸完成后,該磁盤塊變?yōu)檎加脿顟B(tài),suid和應(yīng)用數(shù)據(jù)一起存儲在磁盤塊上,用于標(biāo)識該磁盤塊的所有者;然后,可信平臺只允許具有相同suid的內(nèi)存塊與該占用磁盤塊進(jìn)行數(shù)據(jù)傳輸,保證磁盤塊上應(yīng)用數(shù)據(jù)隔離和訪問控制;
當(dāng)讀取文件時,可信平臺只允許占用磁盤塊上的應(yīng)用數(shù)據(jù)傳輸?shù)礁綦x狀態(tài)的緩存塊,同時該緩存塊被賦予占用磁盤塊的suid;此后,可信平臺只允許該緩存塊的數(shù)據(jù)拷貝到具有相同suid的文件塊,被其文件所有者訪問;
可信平臺的用戶驗證是基于驗證用戶密碼來實現(xiàn)的;可信平臺使用公鑰/私鑰對保證不可信內(nèi)核無法竊取用戶密碼;使用tpm中的存儲密鑰來加密和解密可信平臺的私鑰;當(dāng)用戶啟動自身的應(yīng)用時,將自身的用戶密碼放置在應(yīng)用的可執(zhí)行文件,并使用可信平臺的公鑰進(jìn)行加密;可信平臺從應(yīng)用可執(zhí)行文件中獲得用戶密碼,并使用自身的私鑰進(jìn)行解密;然后,可信平臺通過驗證用戶密碼賦予該應(yīng)用相應(yīng)的suid,標(biāo)識應(yīng)用的身份。
本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
本發(fā)明提出了一種基于網(wǎng)絡(luò)的系統(tǒng)防攻擊方法,與不可信操作系統(tǒng)完全隔離,避免了頻繁低效的加密解密,并為應(yīng)用提供了全面的保護(hù)。
附圖說明
圖1是根據(jù)本發(fā)明實施例的基于網(wǎng)絡(luò)的系統(tǒng)防攻擊方法的流程圖。
具體實施方式
下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個或者多個實施例的詳細(xì)描述。結(jié)合這樣的實施例描述本發(fā)明,但是本發(fā)明不限于任何實施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中描述諸多具體細(xì)節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書實現(xiàn)本發(fā)明。
本發(fā)明的一方面提供了一種基于網(wǎng)絡(luò)的系統(tǒng)防攻擊方法。圖1是根據(jù)本發(fā)明實施例的基于網(wǎng)絡(luò)的系統(tǒng)防攻擊方法流程圖。
本發(fā)明在安全尋址區(qū)引入可信平臺,應(yīng)用運(yùn)行于可信平臺保護(hù)的安全環(huán)境中。將不可信內(nèi)核與應(yīng)用分別運(yùn)行于兩個不同的尋址區(qū),分別稱為內(nèi)核尋址區(qū)和安全尋址區(qū)。內(nèi)核尋址區(qū)中使用的塊表稱為內(nèi)核塊表,安全尋址區(qū)中使用的塊表稱為安全塊表。當(dāng)安全尋址區(qū)的應(yīng)用與內(nèi)核交互時,應(yīng)用首先進(jìn)入到安全尋址區(qū)的可信平臺,可信平臺保存應(yīng)用上下文,然后切換到內(nèi)核尋址區(qū),進(jìn)入內(nèi)核執(zhí)行。當(dāng)內(nèi)核返回應(yīng)用時,必須首先返回安全尋址區(qū)的可信平臺,可信平臺恢復(fù)應(yīng)用上下文,再返回安全尋址區(qū)中的應(yīng)用繼續(xù)執(zhí)行。
可信平臺利用硬件虛擬化直接對控制寄存器的目標(biāo)值進(jìn)行限制;同時,可信平臺截獲并驗證系統(tǒng)中所有的塊表更新操作,實現(xiàn)內(nèi)存保護(hù)。使用硬件虛擬化保證整個系統(tǒng)(內(nèi)核、應(yīng)用和可信平臺)只能運(yùn)行于內(nèi)核尋址區(qū)和安全尋址區(qū)中。在控制寄存器目標(biāo)列表中設(shè)定最多4個控制寄存器的目標(biāo)值。當(dāng)軟件修改控制寄存器,且目標(biāo)值是控制寄存器目標(biāo)列表中的一個時,該控制寄存器修改可直接完成。本發(fā)明僅使用2個目標(biāo)值,將內(nèi)核尋址區(qū)中的內(nèi)核塊表和安全尋址區(qū)中的安全塊表的基地址寫入控制寄存器目標(biāo)列表,因此,整個系統(tǒng)在運(yùn)行過程中只能將控制寄存器修改為這兩個值。如果試圖修改為其他目標(biāo)值均使cpu進(jìn)入到安全模式,本發(fā)明中任何導(dǎo)致進(jìn)入到安全模式的操作都被認(rèn)為是惡意的,并會導(dǎo)致整個系統(tǒng)重啟。在內(nèi)核尋址區(qū)中,整個塊表被映射為只讀。任何運(yùn)行于內(nèi)核尋址區(qū)中的軟件若要修改某個塊表項時,必須首先將該塊表項映射為可寫。內(nèi)核尋址區(qū)中的軟件試圖解除塊表鎖定的方式是:1)修改控制寄存器、切換尋址區(qū)。2)修改控制寄存器的模式標(biāo)志位,使塊表的只讀保護(hù)失效。針對這種方式,本發(fā)明使用硬件虛擬化禁止普通模式的所有軟件修改控制寄存器的模式標(biāo)志位,任何修改模式標(biāo)志位的操作均使系統(tǒng)進(jìn)入到安全模式,進(jìn)而導(dǎo)致系統(tǒng)重啟。
在安全尋址區(qū)中,本發(fā)明限制只有第0層的軟件能夠修改塊表。塊表在其他層被映射為不可見。因此,整個系統(tǒng)中只有安全尋址區(qū)的軟件能夠修改塊表。所有的塊表更新操作只能由可信平臺完成。當(dāng)內(nèi)核需要更新塊表時,只能向可信平臺發(fā)出請求,可信平臺能夠截獲并驗證所有的塊表更新操作,實現(xiàn)內(nèi)存保護(hù)。因此本發(fā)明基于控制寄存器控制和塊表鎖定技術(shù),消除了內(nèi)核尋址區(qū)的內(nèi)核修改塊表的權(quán)限。
可信平臺控制所有進(jìn)入安全尋址區(qū)的入口點(diǎn),保證一旦cpu進(jìn)入安全尋址區(qū),可信平臺獲得系統(tǒng)控制權(quán)??尚牌脚_在安全尋址區(qū)完成自身的執(zhí)行流程,在返回外部組件時,將cpu切換回內(nèi)核尋址區(qū)或者安全尋址區(qū)第3層,保證安全尋址區(qū)中只有可信平臺運(yùn)行。因此,外部組件始終只能運(yùn)行于內(nèi)核尋址區(qū)或者安全尋址區(qū)第3層中,不能破壞安全尋址區(qū)中可信平臺的數(shù)據(jù)代碼。
從入口點(diǎn)進(jìn)入安全尋址區(qū)第0層后,可信平臺在整個執(zhí)行過程中,中斷被禁止,執(zhí)行流無法被外部組件劫持:只有當(dāng)返回外部組件時,可信平臺才恢復(fù)中斷。同時,可信平臺將cpu切換回內(nèi)核尋址區(qū)或者安全尋址區(qū)第3層,保證安全尋址區(qū)第0層中只有可信平臺運(yùn)行。當(dāng)可信平臺中發(fā)生不可屏蔽中斷時,可信平臺暫時阻塞該不可屏蔽中斷,防止外部組件使用不可屏蔽中斷劫持可信平臺執(zhí)行流。當(dāng)返回到內(nèi)核時,可信平臺再將該不可屏蔽中斷轉(zhuǎn)發(fā)給內(nèi)核進(jìn)行處理。運(yùn)行于內(nèi)核尋址區(qū)的內(nèi)核或者安全尋址區(qū)第3層的應(yīng)用無法破壞可信平臺數(shù)據(jù)代碼完整性,也無法修改塊表、對可信平臺的數(shù)據(jù)代碼進(jìn)行惡意映射。
塊表由4級結(jié)構(gòu)組成(l1、l2、l3和l4表示),控制寄存器指向安全塊表的l4塊表(稱為s-l4),塊表切換是通過將目標(biāo)文件的l4塊表整體拷貝到s-l4來實現(xiàn)的。和其他塊表一樣,s-l4只能被安全尋址區(qū)中的可信平臺修改。因此,進(jìn)程切換時,內(nèi)核只能向可信平臺發(fā)出請求,由可信平臺切換文件塊表。
當(dāng)應(yīng)用發(fā)生中斷、進(jìn)入可信平臺,可信平臺保存應(yīng)用安全環(huán)境,并將該中斷轉(zhuǎn)發(fā)給內(nèi)核尋址區(qū)中的內(nèi)核,將塊表更新的具體內(nèi)容置于一個共享內(nèi)存中,到內(nèi)核完成所有處理,當(dāng)操作系統(tǒng)完成中斷處理時,分配相應(yīng)的物理塊??尚牌脚_從共享內(nèi)存中讀取更新請求,完成塊表更新,然后返回內(nèi)核。內(nèi)核完成余下的中斷處理工作,最終返回可信平臺??尚牌脚_恢復(fù)應(yīng)用安全環(huán)境,返回應(yīng)用。
可信平臺截獲并驗證系統(tǒng)中所有發(fā)送到磁盤外設(shè)的i/o命令,整個i/o驗證過程在普通模式中實現(xiàn)。本發(fā)明僅需要截獲內(nèi)存映射i/o,就可以截獲發(fā)送到磁盤外設(shè)的i/o命令。具體來說,基于可信平臺的內(nèi)存保護(hù)機(jī)制,可信平臺將分配給磁盤管理器的i/o內(nèi)存映射為只讀。當(dāng)內(nèi)核需要向磁盤發(fā)送i/o命令時,它只能將該命令轉(zhuǎn)發(fā)給可信平臺,由可信平臺訪問i/o內(nèi)存,在系統(tǒng)啟動時,對bios設(shè)置的pci配置空間進(jìn)行驗證,在系統(tǒng)運(yùn)行過程中禁止內(nèi)核訪問整個pci配置空間。利用硬件虛擬化禁止普通模式中的軟件訪問該段i/o端口;將這段保留的系統(tǒng)內(nèi)存在尋址區(qū)中映射為不可見,禁止內(nèi)核訪問。
下面具體描述可信平臺如何保護(hù)應(yīng)用尋址區(qū)中的內(nèi)存,實現(xiàn)尋址區(qū)隔離和完整性保護(hù)。為了實現(xiàn)應(yīng)用尋址區(qū)與內(nèi)核的隔離,可信平臺使用一個數(shù)組來跟蹤系統(tǒng)中每個物理塊的映射情況。每個塊可被定義為3種映射狀態(tài):正常,隔離和占有。正常狀態(tài)的塊被內(nèi)核塊表和安全塊表兩者映射,因而內(nèi)核和可信平臺都能訪問它們。隔離狀態(tài)的塊僅被安全塊表映射,只能被可信平臺訪問??尚牌脚_和塊表所在的塊都被映射為隔離狀態(tài)。占有狀態(tài)的塊已被分配給某個應(yīng)用,僅被安全塊表和其應(yīng)用占有者的安全塊表映射,因而只有可信平臺和其占有者能訪問它們??尚牌脚_使用唯一的安全標(biāo)識符sid來標(biāo)識占有塊的占有者。sid在進(jìn)程創(chuàng)建時由可信平臺賦予每個進(jìn)程。
下面以應(yīng)用a的塊分配為例,描述塊映射狀態(tài)的轉(zhuǎn)化過程和尋址區(qū)隔離。當(dāng)一個塊被內(nèi)核分配給應(yīng)用a時,可信平臺僅授權(quán)內(nèi)核使用隔離狀態(tài)的塊。當(dāng)可信平臺將該塊映射到a的安全塊表時,對該塊的映射狀態(tài)進(jìn)行驗證,拒絕所有非隔離塊。然后,該塊被安全的分配給a,標(biāo)記為占有狀態(tài)、并被應(yīng)用a的sid標(biāo)記??尚牌脚_通過驗證sid,禁止占有狀態(tài)的塊被內(nèi)核塊表或者其他應(yīng)用的安全塊表映射,保證a的內(nèi)存隔離。同時禁止應(yīng)用塊在應(yīng)用尋址區(qū)中被重映射。
可信平臺由應(yīng)用自身維護(hù)一個鏈表,描述自身的尋址區(qū)映射狀態(tài)。該鏈表與應(yīng)用尋址區(qū)的其他數(shù)據(jù)一樣,無法被內(nèi)核修改。當(dāng)可信平臺更新應(yīng)用塊表時,將査看該鏈表。如果內(nèi)核的塊表更新請求與該鏈表描述的尋址區(qū)映射狀態(tài)不一致,可信平臺拒絕該請求。下面以文件映射函數(shù)為例,描述這一機(jī)制。
在磁盤上,不同文件被不同方式標(biāo)記,同一文件的不同數(shù)據(jù)塊被文件偏移標(biāo)記,表示該數(shù)據(jù)塊在文件中的位置。當(dāng)應(yīng)用調(diào)用文件映射函數(shù)時,同時更新自身維護(hù)的尋址區(qū)狀態(tài)鏈表,包括要讀取的文件對應(yīng)的id和偏移。當(dāng)可信平臺進(jìn)行塊表更新驗證時,會檢查該鏈表。如果該更新對應(yīng)的尋址區(qū)映射文件,可信平臺將該鏈表中的id和偏移與文件本身的id和偏移進(jìn)行比對。如果不是應(yīng)用需要的文件或者偏移位置,可信平臺拒絕將文件映射到尋址區(qū)、并通知應(yīng)用。
本發(fā)明中,應(yīng)用的應(yīng)用數(shù)據(jù)以明文的形式進(jìn)入內(nèi)核,可信平臺通過在不可信內(nèi)核中構(gòu)建一條可信應(yīng)用數(shù)據(jù)流來傳輸應(yīng)用數(shù)據(jù),防止應(yīng)用數(shù)據(jù)被竊取或篡改。本發(fā)明基于可信平臺的訪問控制模型中,應(yīng)用數(shù)據(jù)被安全用戶id即suid標(biāo)識。每個用戶都占有自身的suid,用戶在啟動自身的應(yīng)用時,將suid賦予應(yīng)用??尚牌脚_通過驗證suid保證應(yīng)用數(shù)據(jù)只能被其所有者訪問。suid可以標(biāo)記一個用戶組,用于用戶之間的文件共享;suid可以指定不同的讀寫和執(zhí)行權(quán)限。
應(yīng)用數(shù)據(jù)從應(yīng)用尋址區(qū)的塊被拷貝到內(nèi)核的緩存塊,然后從緩存塊傳輸?shù)酱疟P塊??尚艖?yīng)用數(shù)據(jù)流保證,應(yīng)用數(shù)據(jù)在內(nèi)核中傳輸時,應(yīng)用數(shù)據(jù)與內(nèi)核隔離,無法被內(nèi)核訪問。首先,文件塊被映射為占有狀態(tài),其中的應(yīng)用數(shù)據(jù)無法被內(nèi)核訪問。當(dāng)內(nèi)核需要將應(yīng)用數(shù)據(jù)從文件塊拷貝到緩存塊時,只能向可信平臺發(fā)出請求,由可信平臺完成數(shù)據(jù)拷貝??尚牌脚_僅授權(quán)內(nèi)核提供隔離狀態(tài)的緩存塊,對于非隔離狀態(tài)的緩存塊,可信平臺拒絕拷貝應(yīng)用數(shù)據(jù)。
可信平臺定義了兩種磁盤塊的狀態(tài)即空閑和占用,并使用一個數(shù)組(稱為磁盤塊數(shù)組)進(jìn)行狀態(tài)跟蹤。在磁盤塊數(shù)組中,內(nèi)存的一個位對應(yīng)一個磁盤塊的狀態(tài)。可信平臺對所有發(fā)送到磁盤的i/o命令進(jìn)行驗證。如果該命令是將應(yīng)用數(shù)據(jù)寫入磁盤塊,可信平臺確保被寫入的磁盤塊只能是空閑狀態(tài)。在數(shù)據(jù)傳輸完成后,該磁盤塊變?yōu)檎加脿顟B(tài),suid和應(yīng)用數(shù)據(jù)一起存儲在磁盤塊上,用于標(biāo)識該磁盤塊的所有者。然后,可信平臺只允許具有相同suid的內(nèi)存塊與該占用磁盤塊進(jìn)行數(shù)據(jù)傳輸,因而磁盤塊上應(yīng)用數(shù)據(jù)隔離和訪問控制得到保證。
當(dāng)讀取文件時,可信平臺只允許占用磁盤塊上的應(yīng)用數(shù)據(jù)傳輸?shù)礁綦x狀態(tài)的緩存塊,同時該緩存塊被賦予占用磁盤塊的suid。此后,可信平臺只允許該緩存塊的數(shù)據(jù)拷貝到具有相同suid的文件塊,被其文件所有者訪問。
可信平臺的用戶驗證是基于驗證用戶密碼來實現(xiàn)的??尚牌脚_進(jìn)一步使用公鑰/私鑰對保證不可信內(nèi)核無法竊取用戶密碼。本發(fā)明使用tpm中的存儲密鑰來加密和解密可信平臺的私鑰。當(dāng)用戶啟動自身的應(yīng)用時,將自身的用戶密碼放置在應(yīng)用的可執(zhí)行文件,并使用可信平臺的公鑰進(jìn)行加密??尚牌脚_從應(yīng)用可執(zhí)行文件中獲得用戶密碼,并使用自身的私鑰進(jìn)行解密。然后,可信平臺通過驗證用戶密碼賦予該應(yīng)用相應(yīng)的suid,標(biāo)識應(yīng)用的身份。在整個身份驗證過程中,本發(fā)明保證了可信鏈:tpm存儲密鑰→可信平臺私鑰→用戶密碼→suid。
綜上所述,本發(fā)明提出了一種基于網(wǎng)絡(luò)的系統(tǒng)防攻擊方法,與不可信操作系統(tǒng)完全隔離,避免了頻繁低效的加密解密,并為應(yīng)用提供了全面的保護(hù)。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該理解,上述的本發(fā)明的各模塊或各步驟可以用通用的計算系統(tǒng)來實現(xiàn),它們可以集中在單個的計算系統(tǒng)上,或者分布在多個計算系統(tǒng)所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算系統(tǒng)可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲系統(tǒng)中由計算系統(tǒng)來執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
應(yīng)當(dāng)理解的是,本發(fā)明的上述具體實施方式僅僅用于示例性說明或解釋本發(fā)明的原理,而不構(gòu)成對本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。此外,本發(fā)明所附權(quán)利要求旨在涵蓋落入所附權(quán)利要求范圍和邊界、或者這種范圍和邊界的等同形式內(nèi)的全部變化和修改例。