姜 徐,蔣志祥
(1.中國(guó)航天科工集團(tuán)第二研究院 研究生院,北京100854;2.中國(guó)航天科工集團(tuán)第二研究院706所,北京100854)
現(xiàn)實(shí)世界越來(lái)越依賴于計(jì)算機(jī)系統(tǒng),防止病毒對(duì)計(jì)算機(jī)系統(tǒng)的破壞,黑客對(duì)機(jī)密信息的竊取,加強(qiáng)計(jì)算機(jī)系統(tǒng)的安全性,更好的保護(hù)計(jì)算機(jī)內(nèi)部的數(shù)據(jù)信息已成為當(dāng)前信息安全領(lǐng)域新的挑戰(zhàn)。
由于軟件的復(fù)雜性、兼容性以及抗攻擊的脆弱性,單純采用軟件層面的防護(hù)不能完全保證計(jì)算機(jī)系統(tǒng)的安全。相比之下,可信計(jì)算[1]通過(guò)在計(jì)算機(jī)硬件中加入新的安全芯片,為系統(tǒng)提供一個(gè)更為嚴(yán)密的基礎(chǔ)架構(gòu),對(duì)系統(tǒng)安全環(huán)境的啟動(dòng)進(jìn)行有效的維護(hù)、對(duì)系統(tǒng)執(zhí)行的程序進(jìn)行限制性保護(hù)、對(duì)系統(tǒng)儲(chǔ)存的加密或敏感數(shù)據(jù)進(jìn)行嚴(yán)密的管理、提供有效的主機(jī)身份認(rèn)證、建立安全的網(wǎng)絡(luò)作業(yè)環(huán)境,使整個(gè)計(jì)算機(jī)系統(tǒng)成為可信賴的執(zhí)行環(huán)境。
然而,如今的可信計(jì)算架構(gòu)本身也存在一些亟待解決的問(wèn)題,這主要包括軟件的動(dòng)態(tài)度量理論不完善和對(duì)存儲(chǔ)空間保護(hù)的不足??尚庞?jì)算中信任鏈傳遞的機(jī)制有一個(gè)較大的漏洞就是無(wú)論是靜態(tài)度量還是動(dòng)態(tài)度量,都只能保證軟件在加載時(shí)候的可信,而在度量過(guò)后,軟件則完全暴露在未知的運(yùn)行環(huán)境中,軟件的運(yùn)行空間極有可能會(huì)遭到破壞,竊取或者篡改。而具有DMA功能的總線主設(shè)備的威脅程度最高。對(duì)于我國(guó)可信計(jì)算的現(xiàn)狀而言,缺乏自主可信的關(guān)鍵軟硬件,尚沒(méi)有形成統(tǒng)一的可信計(jì)算架構(gòu)。因此本文設(shè)計(jì)了一種增強(qiáng)存儲(chǔ)保護(hù)從計(jì)算機(jī)體系結(jié)構(gòu)上進(jìn)行安全防護(hù)的可信計(jì)算架構(gòu),從整體上提高可信計(jì)算平臺(tái)的安全性。
可信執(zhí)行技術(shù) (trusted execute technology,TXT)[2]是英特爾公司提出的新一代PC平臺(tái)的安全解決方案??尚艌?zhí)行的概念是將軟件執(zhí)行到一種已知的,可信的狀態(tài),可信執(zhí)行通過(guò)為應(yīng)用程序開(kāi)啟一個(gè)私人環(huán)境,從而使得硬件資源與應(yīng)用程序請(qǐng)求鎖定在一起 (如內(nèi)存池),使得受保護(hù)的應(yīng)用程序不能被其它任何惡意代碼或進(jìn)程所監(jiān)視,察看或者修改。
TXT體系結(jié)構(gòu)如圖1所示。
圖1 TXT體系結(jié)構(gòu)
相對(duì)于TCG的PC體系架構(gòu)而言,基于TXT技術(shù)的可信計(jì)算平臺(tái)所能提供的安全特性主要有以下幾點(diǎn)增強(qiáng):
(1)輸入輸出的保護(hù):建立的可信通道,支持對(duì)I/O接口通信的保護(hù)。
(2)受控啟動(dòng):提供了一套增強(qiáng)的擴(kuò)展指令集來(lái)對(duì)受控的軟件進(jìn)行度量和控制啟動(dòng),這一擴(kuò)展被稱為是安全模式擴(kuò)展 (safer mode extensions,SMX),如果系統(tǒng)軟件啟動(dòng)使用了SMX,這種軟件啟動(dòng)模式被認(rèn)為是度量啟動(dòng)環(huán)境(measured launched environment,MLE)。MLE 提供了不同的啟動(dòng)機(jī)制和一些增強(qiáng)性的保護(hù),比如對(duì)一些可能的軟件損壞的保護(hù)[3]。
(3)執(zhí)行保護(hù):保護(hù)程序執(zhí)行和存放敏感數(shù)據(jù)的內(nèi)存空間。這項(xiàng)特性允許某個(gè)應(yīng)用程序在一個(gè)相對(duì)獨(dú)立的環(huán)境中運(yùn)行,與平臺(tái)上的其它程序不能互相干擾。沒(méi)有任何其它程序能夠監(jiān)視或讀取在保護(hù)環(huán)境中運(yùn)行的程序數(shù)據(jù)。
在一個(gè)計(jì)算機(jī)系統(tǒng)中,用戶可能會(huì)運(yùn)行不同安全級(jí)別的軟件,例如用戶可能會(huì)處理一些敏感信息,同時(shí)系統(tǒng)中還運(yùn)行著其它一些未知的進(jìn)程。而現(xiàn)如今的可信計(jì)算架構(gòu)中,由于操作系統(tǒng)擁有完整的真實(shí)物理地址視圖,惡意代碼可以通過(guò)越權(quán)訪問(wèn)破壞或竊取應(yīng)用程序內(nèi)存空間的數(shù)據(jù),而具有DMA訪問(wèn)能力的設(shè)備也可以對(duì)任意位置的內(nèi)存空間進(jìn)行訪問(wèn),因此迫切地需要一種對(duì)內(nèi)存進(jìn)行保護(hù)的機(jī)制,虛擬化技術(shù)的發(fā)展則為這一機(jī)制提供了新的思路。因此本文在深入研究了可信執(zhí)行技術(shù)和虛擬化技術(shù)后,在此基礎(chǔ)上加入了DMA保護(hù)的模型,提出了一種增強(qiáng)存儲(chǔ)保護(hù)的可信計(jì)算架構(gòu)。本章將著重討論設(shè)計(jì)該架構(gòu)的整體框架、啟動(dòng)過(guò)程和架構(gòu)中幾個(gè)重要的組成部分。
該可信執(zhí)行架構(gòu)包括三大部分:可信硬件平臺(tái),可信BIOS和VMM以及用戶虛擬機(jī)。整體架構(gòu)如圖2所示。
圖2 整體框架
其中硬件平臺(tái)由安全增強(qiáng)的芯片組,CPU和I/O設(shè)備以及TCM模塊組成。安全增強(qiáng)芯片組和TCM模塊作為硬件層的核心部件。
本架構(gòu)中存儲(chǔ)保護(hù)來(lái)源于兩個(gè)方面:分區(qū)保護(hù)和DMA保護(hù)。其中分區(qū)保護(hù)是VMM提供的功能,通過(guò)在虛擬地址和物理地址之間加入宿主機(jī)物理地址,使得各個(gè)VM的運(yùn)行相互獨(dú)立,從而實(shí)現(xiàn)分區(qū)保護(hù)的功能。VMM控制著地址映射的硬件邏輯和數(shù)據(jù)結(jié)構(gòu),從而保護(hù)了分區(qū)的安全和完整性。而DMA保護(hù)則借鑒了CPU地址映射的思想,對(duì)傳統(tǒng)的DMA訪問(wèn)架構(gòu)進(jìn)行了改進(jìn),加入了保護(hù)頁(yè)表以及地址轉(zhuǎn)換和設(shè)備分配的邏輯結(jié)構(gòu),從而保證了DMA訪問(wèn)的合法性。
由于在此架構(gòu)在可信計(jì)算平臺(tái)中引入了虛擬化層,在平臺(tái)啟動(dòng)以后,運(yùn)行于虛擬機(jī)監(jiān)視器 (VMM)之上的虛擬機(jī) (VM)可以多次重啟和關(guān)閉,這時(shí)的信任關(guān)系已不再是簡(jiǎn)單的鏈?zhǔn)疥P(guān)系,因此靠信任鏈傳遞的靜態(tài)度量根將不再有效。因此本架構(gòu)采用動(dòng)態(tài)度量信任根DRTM解決上述問(wèn)題,與SRTM相對(duì),DRTM不必在系統(tǒng)啟動(dòng)之后的那一時(shí)刻建立,可以在平臺(tái)啟動(dòng)以后的任何時(shí)刻動(dòng)態(tài)的建立。
動(dòng)態(tài)信任鏈傳遞如圖3所示。
圖3 動(dòng)態(tài)信任鏈傳遞
使用動(dòng)態(tài)度量根的啟動(dòng)過(guò)程主要有以下幾步:
(1)加載VMM和認(rèn)證代碼模塊:當(dāng)啟動(dòng)一個(gè)虛擬機(jī)管理器時(shí),必須加載兩個(gè)代碼模塊到內(nèi)存中。一個(gè)模塊是VMM本身的頁(yè)面,另一個(gè)模塊被稱之為認(rèn)證代碼模塊(authenticated code modules,ACM)。ACM 只有在環(huán)境運(yùn)行的時(shí)候才啟動(dòng),并且是由芯片組所確定的,是唯一的,它由芯片組進(jìn)行數(shù)字簽名,在啟動(dòng)繼續(xù)之前必須要確定數(shù)字簽名是否合法,如果合法才能夠繼續(xù)加載啟動(dòng)。ACM的度量值將被作為平臺(tái)的動(dòng)態(tài)度量根。
(2)將ACM加載進(jìn)內(nèi)存中以后,系統(tǒng)將關(guān)閉中斷和DMA訪問(wèn),以保證這一過(guò)程的安全可信。
(3)在這些準(zhǔn)備工作完成以后,處理器開(kāi)始認(rèn)證和執(zhí)行ACM。ACM將對(duì)芯片組和處理器進(jìn)行一些列的配置(包括初始化平臺(tái)的堆等)和檢查以確保平臺(tái)是工作在一種正常的配置下。然后ACM開(kāi)始度量驗(yàn)證并啟動(dòng)VMM。
(4)經(jīng)過(guò)度量的 VMM,我們稱之為 MVMM,MVMM開(kāi)始進(jìn)行初始化工作,可以通過(guò)特殊的命令來(lái)訪問(wèn)和配置芯片組中的相關(guān)寄存器,包括配置內(nèi)存保護(hù)和DMA保護(hù)的相關(guān)數(shù)據(jù)結(jié)構(gòu)。當(dāng)所有的配置都已經(jīng)完成,MVMM開(kāi)始進(jìn)入執(zhí)行過(guò)程。度量并啟動(dòng)VM,在以后的某個(gè)時(shí)刻,可以退出然后再啟動(dòng)而不必進(jìn)行系統(tǒng)復(fù)位。
2.3.1 地址空間
地址空間 (包括物理RAM和芯片組的配置空間)中有很多區(qū)域是專門(mén)給動(dòng)態(tài)度量啟動(dòng)使用的。有一些需要為VMM所預(yù)留,而有一些則可以暴露給一個(gè)或多個(gè)用戶虛擬機(jī)。
物理RAM中主要有兩塊區(qū)域是動(dòng)態(tài)度量啟動(dòng)專用的,并且在MVMM啟動(dòng)之前這兩塊區(qū)域是由BIOS預(yù)留的,分別是可信堆棧區(qū)域和ACM區(qū)域。每一片區(qū)域的基地址和大小都由芯片組中的配置寄存器所指定
這兩塊區(qū)域只能被度量啟動(dòng)所申請(qǐng)。安全堆棧主要包含以下內(nèi)容:
(1)系統(tǒng)加載器傳遞給認(rèn)證代碼模塊的數(shù)據(jù):這部分內(nèi)容包括了VMM頁(yè)表的物理基地址以及鏡像大小,在系統(tǒng)加載軟件初始化完成這部分內(nèi)容后,認(rèn)證代碼模塊將從這個(gè)基地址去加載VMM。
(2)認(rèn)證代碼模塊傳遞給VMM的數(shù)據(jù):包括了DMA保護(hù)中的MPT表基地址的指針和MPT表的大小。
其初始化過(guò)程如圖4所示。
為了能夠保證和維護(hù)VMM加載的可信過(guò)程和對(duì)平臺(tái)配置的正確性,芯片組配置空間被分割為公共空間和私有空間。公共空間提供對(duì)配置寄存器的只讀訪問(wèn),MVMM可以選擇允許用戶訪問(wèn)這片空間。私有空間允許寫(xiě)訪問(wèn),包括一系列的命令寄存器,對(duì)這部分寄存器的操作只能由MVMM通過(guò)特殊的命令來(lái)進(jìn)行初始化和更改,如圖5所示。
私有空間:這部分空間只能被認(rèn)證代碼模塊或者VMM訪問(wèn),安全增強(qiáng)芯片組的管理配置寄存器也處于這個(gè)空間,VMM和認(rèn)證代碼模塊只能通過(guò)特殊的訪問(wèn)命令來(lái)訪問(wèn)這片空間,在BIOS加載操作系統(tǒng)以后,這片區(qū)域?qū)Σ僮飨到y(tǒng)是透明的。
公共空間:安全增強(qiáng)芯片組的通用寄存器處于這個(gè)空間中,普通的讀寫(xiě)訪問(wèn)就可以訪問(wèn)到這個(gè)空間中的內(nèi)容,這片區(qū)域?qū)Σ僮飨到y(tǒng)而言同樣是透明的。
需要特別注意的是,專用空間和公共空間的空間地址不同,但通過(guò)偏移量映射到的是物理上相同的一片寄存器空間。區(qū)別在于它們所具有的讀寫(xiě)權(quán)限不同。這種權(quán)限取決于對(duì)寄存器的訪問(wèn)來(lái)自于什么空間。
在芯片組的配置空間中,其中最重要的有以下幾組配置寄存器:
(1)認(rèn)證代碼模塊基地址和大?。和ㄟ^(guò)這組寄存器指向了存儲(chǔ)空間中一片預(yù)留給認(rèn)證代碼模塊使用的內(nèi)存空間,由BIOS在加載ACM之前進(jìn)行初始化。
(2)ACM公鑰的HASH值:這個(gè)寄存器中的ACM公鑰的hash值將被用來(lái)認(rèn)證ACM模塊的合法性。
(3)安全堆?;刂泛痛笮。哼@部分空間也在加載虛擬機(jī)管理器的時(shí)候進(jìn)行初始化,這片區(qū)域也是BIOS預(yù)留的,提供給VMM,用戶虛擬機(jī)和認(rèn)證代碼模塊之間通訊使用。這組寄存器同樣通過(guò)BIOS來(lái)初始化。
(4)TCM中平臺(tái)配置寄存器的使用權(quán)限寄存器:這部分寄存器決定了能否對(duì)TCM中指定的PCR寄存器進(jìn)行擴(kuò)展操作。
(5)DMA重映射硬件相關(guān)配置寄存器:這些寄存器用來(lái)配置DMA硬件保護(hù)單元,一部分由BIOS進(jìn)行初始化,一部分由VMM進(jìn)行配置。
芯片組的私有配置空間只有通過(guò)特殊的命令由具有權(quán)限的可信代碼才能訪問(wèn),從而從硬件上保證了VMM的特權(quán)和操作的正確性。
2.3.2 可信密碼模塊
可信密碼模塊 (trust cryptography module,TCM)作為平臺(tái)的靜態(tài)可信根,作為整個(gè)平臺(tái)信任鏈傳遞的起點(diǎn),需要完成的工作包括3個(gè)部分:?jiǎn)?dòng)控制,密碼服務(wù),加密存儲(chǔ)和可信運(yùn)算,例如雜湊運(yùn)算、橢圓曲線密碼生成、數(shù)字簽名、對(duì)稱加解密運(yùn)算等。
傳統(tǒng)的TPM通過(guò)LPC總線與主機(jī)進(jìn)行通信,LPC總線是一種低速總線,用來(lái)進(jìn)行密碼運(yùn)算等的通信,效率較低,并且對(duì)LPC總線的硬件訪問(wèn)并沒(méi)有任何的保護(hù)措施,不能驗(yàn)證對(duì)TPM訪問(wèn)的合法性。因此本文定義的可信密碼模塊將作為系統(tǒng)的一個(gè)PCI設(shè)備通過(guò)PCI總線與主機(jī)進(jìn)行通信,并且通過(guò)內(nèi)部FIFO進(jìn)行隔離,建立專用的通信協(xié)議來(lái)實(shí)現(xiàn)主機(jī)與TCM的通信,從而保證對(duì)TCM訪問(wèn)的合法性。TCM主要包括5個(gè)部分:通信隔離模塊,CPU,非易失存儲(chǔ)器 (non-volatile memory,NV),密碼運(yùn)算引擎,平臺(tái)配置寄存器 (PCR)。其結(jié)構(gòu)如圖6所示。
圖6 TCM模塊
通信隔離模塊:提供通信隔離功能,上層驅(qū)動(dòng)只能通過(guò)通信入口對(duì)TCM進(jìn)行讀寫(xiě)訪問(wèn)。并且讀寫(xiě)訪問(wèn)都采用專門(mén)定制的通信協(xié)議來(lái)進(jìn)行,將所有對(duì)TPM的操作都被封裝為報(bào)文。上層通過(guò)驅(qū)動(dòng)程序?qū)?bào)文進(jìn)行封裝和解析,TCM模塊本身通過(guò)內(nèi)部CPU進(jìn)行報(bào)文解析。這樣就保證了對(duì)TCM訪問(wèn)的合法性,TCM內(nèi)部的空間對(duì)上層來(lái)說(shuō)是透明的。
CPU:進(jìn)行密碼運(yùn)算,報(bào)文解析和存儲(chǔ)空間的管理。
NV:負(fù)責(zé)存儲(chǔ)數(shù)字證書(shū),用戶口令,度量日志,密鑰,BIOS鏡像,VMM鏡像等。
PCR:參見(jiàn)TCG1.2關(guān)于動(dòng)態(tài)可信的規(guī)范,由于采用了動(dòng)態(tài)度量根,因此TCM中的平臺(tái)狀態(tài)寄存器在原有的基礎(chǔ)上增加了3個(gè)PCR寄存器,對(duì)這3個(gè)寄存器的訪問(wèn)權(quán)限由芯片組中的配置寄存器決定[4]:
PCR17:認(rèn)證代碼模塊的度量值,作為平臺(tái)的動(dòng)態(tài)度量根。
PCR18:VMM的度量值。
PCR19:用戶虛擬機(jī)的度量值。
MVMM作為該架構(gòu)中提供控制的軟件,它將主要實(shí)現(xiàn)下列功能:
(1)存儲(chǔ)的保護(hù):內(nèi)存的隔離保護(hù)是VMM最重要的功能之一。通過(guò)VMM對(duì)地址空間的劃分和地址映射邏輯結(jié)構(gòu)的維護(hù),可以實(shí)現(xiàn)不同虛擬機(jī)之間物理內(nèi)存的隔離。
MVMM對(duì)所有的系統(tǒng)中的資源和存儲(chǔ)進(jìn)行控制。在度量啟動(dòng)完成之后,MVMM取得了系統(tǒng)的控制權(quán)。它位于系統(tǒng)最核心的一環(huán),擁有最高的特權(quán),擁有對(duì)硬件頁(yè)表指針(PTR)和全局描述符表 (GDT)以及中斷描述符表(IDT)的完整控制。
如果一個(gè)應(yīng)用需要通過(guò)一個(gè)存儲(chǔ)地址來(lái)訪問(wèn)到物理空間頁(yè)面。CPU會(huì)判斷這個(gè)虛擬地址,并將這個(gè)虛擬地址轉(zhuǎn)換映射到物理地址中。對(duì)頁(yè)表入口的設(shè)置是完全處于VMM的控制之中。隨著客戶機(jī)的執(zhí)行,VMM會(huì)截獲客戶機(jī)對(duì)內(nèi)存的訪問(wèn)的操作,并對(duì)自己維護(hù)的用來(lái)進(jìn)行地址轉(zhuǎn)換的頁(yè)表 (影子頁(yè)表)進(jìn)行相應(yīng)的操作。很清楚,在這種機(jī)制下,一個(gè)運(yùn)行在虛擬機(jī)上的客戶操作系統(tǒng)是不可能直接存取真正的頁(yè)表數(shù)據(jù)的。由于VMM是經(jīng)過(guò)度量和認(rèn)證的,因此只要保證了VMM操作的合法性,就能確保各個(gè)虛擬域之間的隔離和安全。
(2)資源的分配:除了物理空間以外,VMM對(duì)平臺(tái)中的所有資源都進(jìn)行控制。硬盤(pán),顯示,USB設(shè)備以及所有平臺(tái)中使用到的設(shè)備都在VMM的控制之下。
所有存儲(chǔ)映射的資源對(duì)于VMM來(lái)說(shuō)都非常好控制,它們發(fā)出存儲(chǔ)地址,而VMM將這些地址都作為受保護(hù)的頁(yè)面來(lái)處理。整個(gè)MVMM對(duì)資源的控制映射到了對(duì)存儲(chǔ)頁(yè)面的控制。
(3)通信的通道:用戶之間可能需要進(jìn)行通信。VMM對(duì)用戶之間的通信進(jìn)行完全的控制。
(4)分區(qū)的生命周期:VMM的一個(gè)主要的特性就是啟動(dòng)和關(guān)閉一個(gè)客戶分區(qū)的能力,什么時(shí)候,如何啟動(dòng)和關(guān)閉一個(gè)用戶分區(qū)。用戶分區(qū)生命周期的管理策略必須符合當(dāng)前的強(qiáng)制策略。對(duì)于具有間接嵌入到代碼中的策略的VMM來(lái)說(shuō),對(duì)VMM身份的鑒別同樣就確認(rèn)了用戶分區(qū)生命周期的管理策略。對(duì)于有直接策略狀態(tài)的VMM,VMM必須能夠表示VMM強(qiáng)制的策略和VMM如何加載這個(gè)策略。
DMA保護(hù)通過(guò)一個(gè)位于計(jì)算機(jī)物理內(nèi)存和DMA外設(shè)(也就是具有總線主設(shè)備訪問(wèn)權(quán)限的設(shè)備)之間的DMA保護(hù)硬件邏輯 (位于硬件平臺(tái)的芯片組中)來(lái)實(shí)現(xiàn)。外設(shè)在發(fā)起DMA操作的時(shí)候都必須要通過(guò)DMA保護(hù)硬件的處理。
首先有一部分存儲(chǔ)空間的內(nèi)容是本架構(gòu)特有的并且是應(yīng)當(dāng)受到保護(hù)的,必須要避免這部分的內(nèi)容受到DMA的影響。這部分功能通過(guò)一種稱之為內(nèi)存保護(hù)表 (memory protect table,MPT)的結(jié)構(gòu)來(lái)實(shí)現(xiàn)。其次,為了實(shí)現(xiàn)DMA保護(hù),本設(shè)計(jì)研究和借鑒了直接I/O分配的I/O虛擬模型[4],在這種I/O分配模型下,通過(guò)VMM將物理I/O設(shè)備直接分配給虛擬機(jī),驅(qū)動(dòng)程序直接運(yùn)行于客戶虛擬機(jī)之下,而不是運(yùn)行于VMM中,用戶虛擬機(jī)內(nèi)部的驅(qū)動(dòng)程序直接和硬件設(shè)備直接通信,只需要經(jīng)過(guò)少量,或者不經(jīng)過(guò)VMM的管理。VMM需要通過(guò)維護(hù)硬件的設(shè)置,以隔離和保護(hù)硬件資源只給指定的虛擬機(jī)使用。
在初始化DMA控制器的時(shí)候,驅(qū)動(dòng)程序?qū)υO(shè)備DMA訪問(wèn)的設(shè)置和分配都只具有客戶機(jī)物理地址的視圖,每個(gè)設(shè)備驅(qū)動(dòng)程序明確地注冊(cè)自己的設(shè)備存儲(chǔ)空間緩沖器,VMM會(huì)將這些緩沖器分配給特定的域,從而實(shí)現(xiàn)設(shè)備存儲(chǔ)空間的域隔離。這樣DMA保護(hù)硬件可將來(lái)自I/O設(shè)備的DMA限制在這個(gè)域所擁有的物理內(nèi)存。這種分配機(jī)制能夠被每個(gè)設(shè)備獨(dú)立的配置。而具有直接硬件控制能力的VMM將截獲并驗(yàn)證這種配置操作的合法性并通過(guò)維護(hù)客戶機(jī)物理地址到宿主機(jī)為地址視圖的轉(zhuǎn)換來(lái)保證I/O設(shè)備分配的域隔離的正確性。
參考CPU對(duì)內(nèi)存的管理機(jī)制,這部分功能的實(shí)現(xiàn)主要包括一個(gè)地址映射邏輯,它的編程和維護(hù)由MVMM來(lái)實(shí)現(xiàn),而對(duì)于運(yùn)行在MVMM之上的用戶虛擬機(jī),這部分的內(nèi)容是不可訪問(wèn)的。在此基礎(chǔ)上更進(jìn)一步,通過(guò)對(duì)各個(gè)分割域中的頁(yè)面加入保護(hù)屬性,最終實(shí)現(xiàn)了DMA訪問(wèn)的隔離和保護(hù)。當(dāng)任何I/O設(shè)備請(qǐng)求對(duì)某個(gè)頁(yè)面進(jìn)行訪問(wèn)的時(shí)候,硬件會(huì)對(duì)該頁(yè)面的訪問(wèn)權(quán)限進(jìn)行查看,允許符合權(quán)限的訪問(wèn),阻止不符合權(quán)限的訪問(wèn)。
DMA保護(hù)硬件對(duì)指定頁(yè)面的保護(hù)如圖7所示。
圖7 DMA保護(hù)硬件對(duì)指定頁(yè)面的保護(hù)
MPT包含了所有物理空間,由芯片組配置空間的二個(gè)寄存器來(lái)進(jìn)行配置,分別為MPT的物理基地址和大小寄存器,在加載的時(shí)候,會(huì)將這部分的信息傳遞給認(rèn)證代碼模塊以供使用。MPT存放在一片連續(xù)的物理內(nèi)存中。這個(gè)表覆蓋了平臺(tái)所支持的所有物理頁(yè)面。如果以1bit對(duì)應(yīng)4KB的頁(yè)面,那么4GB需要1Mb的MPT來(lái)實(shí)現(xiàn),其對(duì)應(yīng)的物理頁(yè)面是經(jīng)過(guò)所有轉(zhuǎn)換后的實(shí)際物理地址頁(yè)面。通過(guò)ACM來(lái)使能MPT的保護(hù)。在度量啟動(dòng)的時(shí)候,認(rèn)證代碼模塊將初始化MPT,在將控制權(quán)移交給MVMM之前,認(rèn)證代碼模塊必須要將以下的頁(yè)面加入到MPT中:所有包含有VMM的頁(yè)面,包含有VMM頁(yè)表的頁(yè)面,可信堆??臻g,ACM區(qū)域和MPT本身的物理頁(yè)面。在完成這些操作后,之后認(rèn)證代碼模塊將控制權(quán)交給VMM,VMM將負(fù)責(zé)維護(hù)MPT并且使用MPT來(lái)初始化它的DMA地址映射硬件。
MPT結(jié)構(gòu)如圖8所示。
圖8 MPT結(jié)構(gòu)
MPT的大小必須是固定的,并且是線性排列的,每一位對(duì)應(yīng)一個(gè)物理頁(yè)面。如果需要將一個(gè)頁(yè)面加入到MPT中,那么需要將對(duì)應(yīng)該頁(yè)面的位置1,如果不需要保護(hù)則清除為0。在系統(tǒng)復(fù)位后,MPT的初始化狀態(tài)都為0。
在MVMM加載完畢后,MVMM可能會(huì)啟動(dòng)一個(gè)或多個(gè)用戶虛擬機(jī),在為用戶虛擬機(jī)分配虛擬地址并建立虛擬地址到物理地址的映射結(jié)構(gòu)的時(shí)候,需要讀取MPT的內(nèi)容,并保證這部分的頁(yè)面不會(huì)出現(xiàn)在分配給用戶虛擬機(jī)的宿主機(jī)物理頁(yè)面中。
在啟動(dòng)最初的客戶虛擬機(jī)的之后,將由虛擬機(jī)管理器對(duì)DMA保護(hù)硬件進(jìn)行初始化。上一節(jié)已經(jīng)講過(guò),不允許DMA訪問(wèn)的受保護(hù)的頁(yè)面將不會(huì)出現(xiàn)在地址映射后的頁(yè)面中,而其它的物理頁(yè)面則通過(guò)域的劃分和地址轉(zhuǎn)換來(lái)提供保護(hù)。
發(fā)送到地址轉(zhuǎn)換硬件的DMA請(qǐng)求需要明確地標(biāo)志發(fā)出請(qǐng)求的源設(shè)備。這種標(biāo)志被稱為源ID。例如對(duì)于PCI設(shè)備來(lái)說(shuō),一個(gè)設(shè)備的請(qǐng)求標(biāo)志包含了3個(gè)組成部分:PCI總線號(hào),設(shè)備號(hào)和功能號(hào),通過(guò)配置軟件分配用來(lái)唯一地標(biāo)志發(fā)出請(qǐng)求的硬件功能。硬件通過(guò)源ID來(lái)索引地址映射結(jié)構(gòu),其映射過(guò)程如圖9所示。
圖9 DMA地址映射結(jié)構(gòu)
需要3種數(shù)據(jù)結(jié)構(gòu):根條目,上下文條目和多級(jí)頁(yè)表。根條目和上下文條目都存放于內(nèi)存一片連續(xù)的空間中,根條目的地址由芯片組中一個(gè)配置寄存器所指向,分別代表了系統(tǒng)中的所有總線和該總線上所有的設(shè)備。上下文條目將一個(gè)指定的總線上的I/O設(shè)備映射到它被分配的某個(gè)域中,相應(yīng)地指向這個(gè)域的地址轉(zhuǎn)換結(jié)構(gòu)。分配到同一個(gè)域的上下文條目必須使用相同的地址轉(zhuǎn)換結(jié)構(gòu),同樣,使用相同地址轉(zhuǎn)換結(jié)構(gòu)的上下文條目也必須處于同一個(gè)域中。對(duì)于多級(jí)頁(yè)表,將根據(jù)用戶虛擬機(jī)的地址寬度來(lái)決定它的級(jí)數(shù),如果為頁(yè)節(jié)點(diǎn),則表示宿主機(jī)的物理地址,否則指向下級(jí)頁(yè)表,頁(yè)表中包含有一個(gè)可讀位和可寫(xiě)位。在收到DMA請(qǐng)求時(shí),硬件將進(jìn)行判斷。如果是DMA讀請(qǐng)求,那么如果硬件發(fā)現(xiàn)一個(gè)頁(yè)表?xiàng)l目的可讀數(shù)據(jù)域被清除了,那么對(duì)這個(gè)頁(yè)面進(jìn)行讀取的DMA訪問(wèn)將被阻塞。同樣,如果為DMA寫(xiě)數(shù)據(jù)請(qǐng)求,當(dāng)?shù)刂酚成浣Y(jié)束后的頁(yè)面可寫(xiě)數(shù)據(jù)域被清除,那么DMA的寫(xiě)請(qǐng)求將被阻塞。
在3.2節(jié)中講到過(guò),MPT中的物理頁(yè)面將不會(huì)出現(xiàn)在轉(zhuǎn)換完成后的物理頁(yè)面中。通過(guò)對(duì)頁(yè)表?xiàng)l目的編程,VMM可以根據(jù)需要將分割域中需要進(jìn)行保護(hù)的頁(yè)面的讀寫(xiě)保護(hù)位置位,要么地址被成功地翻譯稱為宿主機(jī)物理地址,要么請(qǐng)求被阻塞。
在此基礎(chǔ)上,本文對(duì)DMA保護(hù)硬件進(jìn)行了仿真驗(yàn)證,其硬件平臺(tái)為PLC9054+FPGA+DSP的形式。其驗(yàn)證的基本思路是:將9054的PCI總線端作為一個(gè)DMA訪問(wèn)的主設(shè)備,使用9054的PCI端的總線地址模擬用戶虛擬機(jī)的用戶物理地址。通過(guò)FPGA發(fā)起對(duì)DSP存儲(chǔ)空間的訪問(wèn),發(fā)起的訪問(wèn)通過(guò)PCI總線端對(duì)9054的地址空間進(jìn)行讀寫(xiě)訪問(wèn)來(lái)模擬,并通過(guò)DSP的中斷模擬DMA的中斷。9054通過(guò)FPGA中的一個(gè)深度為20字節(jié)的FIFO,寫(xiě)入發(fā)起訪問(wèn)的數(shù)據(jù)結(jié)構(gòu)。FPGA通過(guò)內(nèi)部的映射邏輯將9054發(fā)出的目的地址進(jìn)行映射以后發(fā)起中斷。DSP響應(yīng)中斷根據(jù)讀寫(xiě)權(quán)限或成功完成訪問(wèn)或返回失敗。這樣一個(gè)完整的DMA訪問(wèn)過(guò)程就實(shí)現(xiàn)了。其過(guò)程如圖10所示。
為簡(jiǎn)化過(guò)程,采用單級(jí)頁(yè)表,地址空間分配見(jiàn)表1。
表1 地址映射結(jié)構(gòu)
圖10 仿真驗(yàn)證DMA訪問(wèn)過(guò)程
實(shí)驗(yàn)結(jié)果表明,當(dāng)9054的PCI端對(duì)頁(yè)面1和2發(fā)起讀操作時(shí),相應(yīng)的訪問(wèn)被阻止,DSP返回失敗的標(biāo)志。當(dāng)對(duì)頁(yè)面2和頁(yè)面4發(fā)起寫(xiě)操作的時(shí)候,訪問(wèn)被阻止,DSP返回失敗。并且通過(guò)PCI端無(wú)法訪問(wèn)到任何超出0x8000 0000-0x8000 3000地址范圍以外的任何地址內(nèi)容??梢钥闯?,通過(guò)此種架構(gòu)進(jìn)行DMA保護(hù)是有效的,并且在頁(yè)表級(jí)數(shù)不高的情況下具有相當(dāng)高的效率,轉(zhuǎn)換過(guò)程只用了3個(gè)時(shí)鐘周期。
通過(guò)深入研究當(dāng)前國(guó)際上最新的可信執(zhí)行技術(shù)和虛擬化技術(shù),本文提出了一種增強(qiáng)存儲(chǔ)保護(hù)的可信計(jì)算架構(gòu),解決了傳統(tǒng)的可信計(jì)算體系架構(gòu)中對(duì)內(nèi)存空間保護(hù)不足的問(wèn)題。通過(guò)對(duì)系統(tǒng)中芯片組硬件的改進(jìn)和增強(qiáng),利用動(dòng)態(tài)信任傳遞機(jī)制,保證虛擬機(jī)管理器加載和運(yùn)行的安全可信,創(chuàng)建受保護(hù)的執(zhí)行環(huán)境,有效增強(qiáng)系統(tǒng)的安全性。利用虛擬化技術(shù)對(duì)于內(nèi)存的隔離和保護(hù)功能,實(shí)現(xiàn)不同虛擬域之間的完全隔離。通過(guò)MPT和DMA硬件保護(hù)邏輯,實(shí)現(xiàn)了DMA訪問(wèn)的控制和DMA域分割以及域中頁(yè)面的保護(hù)。在此基礎(chǔ)上,對(duì)DMA保護(hù)硬件進(jìn)行了仿真驗(yàn)證,結(jié)果表明該機(jī)制是有效的。
在今后的工作中,應(yīng)當(dāng)進(jìn)一步深入研究虛擬化技術(shù)與硬件的結(jié)合,完善本架構(gòu)中硬件邏輯和軟件功能的劃分和配合。
[1]ZHANG Huanguo,HE Yanxiang,ZHAO Bo,et al.Trusted computing research and development of china [J].China Computer Society,2010,6 (2):2-6 (in Chinese). [張渙國(guó),何炎祥,趙波,等.我國(guó)可信計(jì)算研究與發(fā)展 [J].中國(guó)計(jì)算機(jī)學(xué)會(huì)通訊,2010,6 (2):2-6.]
[2]ZOU Deqing,QIANG Weizhong,JIN Hai.Principle and application of trusted computing technology [M].Beijing:Science Press,2011:10-12 (in Chinese). [鄒德清,羌衛(wèi)中,金海.可信計(jì)算技術(shù)原理與應(yīng)用 [M].北京:科學(xué)出版社,2011:10-12.]
[3]HAO Xudong,XU Chunxiang.The research of trusted execution technology [J].Information Technology,2009 (9):2-4(in Chinese). [郝旭東,許春香.可信執(zhí)行技術(shù)的研究 [J].信息技術(shù),2009 (9):2-4.]
[4]Intel trusted execution technology preliminary architecture specification [EB/OL]. [2010/2012-03-16].http://www.intel.cn/Content/www/cn/zh/trusted-execution-technology.
[5]Intel trusted execution technology(Intel?TXT)software development guide measured launched environment developer’s guide[EB/OL]. [2011/2012-03-16].http://www.intel.cn/content/www/cn/zh/trusted-execution-Technology.
[6]TAN Liang,XU Zhiwei.Based on trusted computing platform chain of trust research progress [J].Computer Science,2008,35 (10):16-18(in Chinese).[譚良,徐志偉.基于可信計(jì)算平臺(tái)的信任鏈傳遞研究進(jìn)展 [J].計(jì)算機(jī)科學(xué),2008,35 (10):16-18.]
[7]TCG specification architecture overview revision 1.4 [EB/OL].[2007/2012-03-16].http://turstedcomputinggroup.org/spec.
[8]Darren Abramson,Mobility Group,Intel Corporation,et al.Intel virtualization technology for directed I/O [J].Intel Technology Journal,2006,10 (3):7-9.
[9]Attacking intel trusted execution technology [R].Washington DC,USA:Black Hat DC,2009.
[10]Stefan Berger,Ramon Caceres.vTPM:Virtual the trusted platform module [M].Proceeding if the 15th USENIX Security Symposium.IBM.J.Watson Research Center Hawthorne,NY10532USA:Stefan Berger,2006:305-320.