王麗娜,高漢軍,余榮威,任正偉,董永峰
(1.軟件工程國家重點實驗室,湖北 武漢 430072;2.武漢大學 計算機學院,湖北 武漢 430072)
虛擬機監(jiān)視器(VMM, virtual machine monitor)對上層操作系統(tǒng)的完全控制權以及虛擬機間運行環(huán)境的隔離性,為增強系統(tǒng)的可靠性提供了新思路[1]。然而如何確保虛擬機監(jiān)視器的完整性以及如何充分利用虛擬化技術的優(yōu)勢,確保虛擬機運行環(huán)境和服務軟件的完整性、安全性成為亟待解決的問題。
可信計算[2]作為保證信息安全的一項重要技術,能夠有效保證虛擬機監(jiān)視器及其上層客戶操作系統(tǒng)的完整性。因此,在虛擬平臺下實現(xiàn)可信技術,是虛擬化技術與可信計算技術發(fā)展的必然結果,而可信平臺模塊(TPM, trusted platform module)的虛擬化正是可信計算技術和虛擬化技術結合的關鍵技術之一。
目前可信平臺模塊的虛擬化方式主要有3種:TPM的硬件環(huán)境擴展[3]、TPM的半虛擬化[4]和軟件式的TPM虛擬化。TPM的硬件環(huán)境擴展方式通過擴展 TPM 上下文為每個客戶虛擬機提供專用的TPM 環(huán)境,客戶虛擬機可以自行保存和讀取上下文,虛擬機監(jiān)視器能夠透明地為每個客戶虛擬機提供隔離的TPM會話;然而該方式需要TPM硬件支持,目前并不存在硬件虛擬化的 TPM。TPM 半虛擬化方式通過加入一個軟件中間件——TPM 訪問中介層,實現(xiàn) TPM 安全、公平地被各個虛擬機所共享;TPM訪問中間層負責對TPM的調度控制及TPM對虛擬機的認證;然而該方式需要更改少數(shù)的設備接口。因此這2種TPM的虛擬化方式在兼容性方面都受到一定程度的影響。相比而言,軟件式TPM 虛擬化通過軟件的形式為虛擬機提供一個接近于真實硬件 TPM 的接口。因此,目前大多數(shù)應用主要采用軟件式TPM虛擬化方式[5~11]。
瑞士蘇黎士技術聯(lián)合研究所[12]的軟件式 TPM模擬器實現(xiàn)了TPM的絕大部分功能;但TPM模擬器僅面向單個平臺環(huán)境,并不能虛擬出多個 TPM以供每個虛擬機專用。Berger[6]在此基礎上,提出了TPM虛擬化的方法,能夠將一個物理TPM映射成多個vTPM(virtual TPM),vTPM可為每個虛擬機提供一個專用的基于軟件的信任根;同時為了使vTPM具備遠程證明等能力,Berger提出了4種構建vTPM證書鏈的設計思路,但他并沒有做出進一步的實現(xiàn)。隨后,F(xiàn)rederic[7]提出了一種構建可信虛擬平臺方案,并實現(xiàn)了vTPM和物理TPM的綁定以及vTPM證書鏈的構建。在構建證書鏈的過程中,該方案利用身份證明密鑰(AIK, attestation identity key)對 vAIK(virtual AIK)、物理 PCR、隨機數(shù)nonce及時間戳進行簽名,并與AIK證書一同構成vAIK證書。然而TPM Main規(guī)范中規(guī)定AIK密鑰只能對TPM內(nèi)部產(chǎn)生的信息(包括PCR、TPM產(chǎn)生的其他密鑰及 TPM 狀態(tài)信息)進行簽名,不能簽名任意的外部數(shù)據(jù)。而vAIK由vTPM產(chǎn)生不屬于TPM的內(nèi)部信息,因而直接利用AIK簽名vAIK似乎并不合適。
針對目前可信虛擬平臺存在的問題,本文將從物理 TPM 的虛擬化方面出發(fā),以虛擬機監(jiān)視器XEN為基礎平臺,通過建立物理PCR與vPCR的映射關系實現(xiàn)vTPM與底層TCB的綁定,并在此基礎上拓展證書鏈在虛擬機中的延伸,使得虛擬機可以有效地利用 TPM 提供的相關功能,完成平臺環(huán)境的證明及私密信息的安全存儲,從而構建可信的虛擬執(zhí)行環(huán)境。同時,本文實現(xiàn)了相關的原型系統(tǒng),驗證了系統(tǒng)的有效性。
本文結構如下:第2節(jié)介紹了相關知識;第3節(jié)中給出了設計方案;第4節(jié)給出了在XEN平臺下的具體實現(xiàn);第5節(jié)展示了原型系統(tǒng)測試及分析;最后給出了本文的總結。
可信計算保障了相關平臺配置信息的完整性。為了得到平臺的配置信息,需要實現(xiàn)可信度量,它是可信計算的基礎。TCG提出了實現(xiàn)可信度量的2大關鍵技術:一是在可信平臺上引入可信根;二是利用可信根來建立信任鏈。TCG在可信PC技術規(guī)范中,具體給出了可信PC中的信任鏈,該信任鏈以TPM芯片為核心(提供密碼操作和安全存儲),起點為CRTM(core root of trust module),從系統(tǒng)啟動開始,沿著CRTM→BIOS→ OSLoader→ OS→App這個信任鏈,一級度量一級,一級信任一級,以確保整個平臺的系統(tǒng)資源的完整性。
遠程證明是用于認證可信計算平臺的身份、硬件配置和系統(tǒng)中運行軟件的完整性,從而確保終端平臺實體可信和當前運行狀態(tài)未曾遭到破壞的技術方案。在遠程證明中,驗證方需要驗證證明方的身份,因此需要證明方提供 TPM 唯一身份標識,即EK(endorsement key)證書。但是直接向驗證方提供EK很可能暴露證明方用戶的隱私信息,因此需要引入AIK來避免暴露平臺與EK綁定關系,降低用戶隱私泄露的可能性。
隨著VMware公司在虛擬化領域的成功以及虛擬化理論和技術的不斷深入,學術界和業(yè)界對虛擬化的應用和研究表現(xiàn)出了極大興趣,先后出現(xiàn)了Denali、Virtual Box等一大批虛擬機產(chǎn)品。虛擬化技術也隨之廣泛應用于服務器整合、資源的動態(tài)負載均衡[13,14]等場合,有效地提高了資源的利用率,節(jié)省了運營成本。而且,國際主流處理器廠商積極開展虛擬化相關研究,如Intel推出VT虛擬化技術[15],AMD硬件輔助虛擬技術Pacifica[16]。
Cambridge大學研究開發(fā)了XEN虛擬機開源項目[17],它支持半虛擬化和硬件虛擬化技術。當XEN啟動時,首先加載Domain0的內(nèi)核。Domain0是特權管理域,運行在比其他客戶域更高的特權級下,可以訪問硬件,負責其他虛擬域對硬件設備的多路訪問。客戶域 DomainU不允許直接訪問硬件,而是通過設備驅動中的前端驅動通知Dom0中的后端驅動,由Domain0進行安全檢查后,交由原生設備驅動處理。
本文可信虛擬執(zhí)行環(huán)境的架構如圖1所示。
圖1 可信虛擬執(zhí)行環(huán)境架構
其中,vTPM實例與客戶虛擬機一一對應,為用戶提供綁定、密封、密鑰存儲等一系列與物理TPM相同的功能。
vTPM永久存儲區(qū)(PS, persistent storage)用來保護每個vTPM實例的狀態(tài)結構vTPM-SS(vTPM state structure),其中保存了vTPM的永久狀態(tài)信息。
vTPM管理器負責vTPM實例的創(chuàng)建與管理,為客戶虛擬機與vTPM實例間以及vTPM實例與物理TPM間提供了通信信道。當創(chuàng)建一個虛擬機時,虛擬TPM管理器便會產(chǎn)生一個vTPM實例并將其與新建的虛擬機關聯(lián)。它通過監(jiān)聽虛擬 TPM 后端驅動,將來自虛擬機的 TPM 命令轉發(fā)至與它相關聯(lián)的vTPM實例中。
在虛擬環(huán)境下,vTPM 實例的可信計算基 TCB包括建立vTPM實例的軟件組件(vTPM實例與vTPM管理器),相應的運行環(huán)境(Hypervisor與特權管理域)以及底層固件。這些組件的完整性度量由物理 TPM完成,度量值保存在物理TPM的PCR中。
vTPM實例主要確??蛻籼摂M機的完整性,度量的組件包括客戶虛擬機操作系統(tǒng)及上層應用程序,度量值保存在vTPM實例的PCR中。為了在虛擬環(huán)境下使用可信度量功能,必須建立 vTPM 與底層TCB的綁定關系,以確??尚盘摂M平臺模塊運行環(huán)境的完整性以及客戶虛擬機的平臺環(huán)境完整性。
按照TCG的TPM Client規(guī)范,BIOS及物理硬件的度量值是存放在0~7號PCR中,該部分操作是由 BIOS進行處理的。而對于 Hypervisor、特權管理域內(nèi)核以及vTPM管理器等組件,本文采用了可信的啟動加載器 GrubIMA進行度量,度量值存放在PCR的8號寄存器中。
基于此,本文將物理PCR的低位映射到vTPM的vPCR中(如圖2所示),即將0~8號這9組反映虛擬平臺TCB完整性度量值的PCR映射到每一個虛擬TPM的vPCR,將vPCR的9~23號寄存器保留給客戶虛擬操作系統(tǒng)使用。
圖2 物理PCR與vPCR的映射
在虛擬環(huán)境下,當客戶虛擬機中進行遠程證明時,必須建立從物理TPM到vTPM的證書鏈。因為同一物理平臺下運行了多個虛擬機(應用),而各個虛擬機內(nèi)又將運行不同的應用。為了確保虛擬機之間應用的隔離性,以及各虛擬機平臺的差異性,應利用vAIK代表虛擬機內(nèi)部的不同應用進行身份證明。同時為了確保虛擬平臺與物理平臺的綁定關系,需要利用物理TPM的AIK證書構造虛擬平臺的vAIK證書。
文獻[6]中提出了一種通過EK-vEK-vAIK形式的證書鏈來為vTPM頒發(fā)vAIK證書。該方案通過vTPM管理器向CA證明vTPM的可信性,由CA向vTPM簽發(fā)vEK證書,之后使用與物理平臺相同的方法,由vEK來生成vAIK證書。這種方案生成vTPM 實例的效率很低,而且請求較多時,對 CA本身也是很大的負擔。
文獻[7]提出了通過AIK-vAIK這種形式的證書鏈方案,該方案不使用vEK,而直接簽發(fā)vAIK證書。vAIK由vTPM實例自己生成,并由vTPM管理器簽發(fā)vAIK證書而不依賴于可信第三方。與前一種方案比較,該方案繞過了 vEK證書,直接為vTPM頒發(fā)vAIK證書,而且證書的簽發(fā)不需要依賴隱私CA,直接由本地vTPM管理器進行。因此可以方便vTPM動態(tài)、頻繁地生成vTPM實例。在構建證書鏈的過程中,該方案利用AIK對vAIK、物理PCR、隨機數(shù)nonce及時間戳進行簽名,并與AIK證書一同構成vAIK證書。然而TPM Main規(guī)范中規(guī)定AIK密鑰只能對TPM內(nèi)部產(chǎn)生的信息(包括PCR、TPM產(chǎn)生的其他密鑰及TPM狀態(tài)信息)進行簽名,不能簽名任意的外部數(shù)據(jù)。而vAIK由vTPM產(chǎn)生,不屬于TPM的內(nèi)部信息,因而直接利用AIK簽名vAIK似乎并不合適。
為了更好地滿足TPM的規(guī)范,本文引入了簽名密鑰SK作為中介實現(xiàn)AIK對vAIK的間接簽名認證。SK由TPM內(nèi)部產(chǎn)生,屬于TPM的內(nèi)部信息,此時利用AIK通過TPM_CertifyKey命令對SK進行簽名,并由SK通過TPM_Quote命令對vAIK、物理PCR、隨機數(shù)nonce進行簽名,最后與AIK證書一同構成vAIK證書,其中,vAIK證書包括:{SK}AIK、{nonce、PCR[0~15]、vAIK}SK以及AIK證書。由此可知SK與AIK是一一對應的,實質上仍體現(xiàn)了AIK向外證實身份的本質,而SK的引入則是為了更好地滿足TPM規(guī)范中AIK僅能簽名TPM內(nèi)部產(chǎn)生的信息的要求,具體流程如圖3所示。
1) vTPM產(chǎn)生一個vAIK。
2) 虛擬平臺向vTPM管理器請求vAIK證書,請求中包含vAIK公鑰與一個的隨機數(shù)Nonce(用于抗重放攻擊)。
3) vTPM管理器使用AIK對物理PCR及vTPM發(fā)來Nonce進行簽名(即Quote),用于證明物理平臺即虛擬TPM底層平臺的完整性。
4) vTPM管理器令物理TPM產(chǎn)生一個簽名密鑰SK,SK是一個2 048bit RSA密鑰對。
5) vTPM管理器用AIK認證簽名密鑰SK,證明該簽名密鑰與AIK同屬一個物理平臺。
6) vTPM管理器用SK對vAIK的公鑰和物理平臺的Quote信息進行簽名,并附上AIK證書,即構成vAIK證書。
圖3 vAIK證書生成流程
為了驗證方案設計的可行性,本文在虛擬機監(jiān)視器 XEN3.3.0上實現(xiàn)了原型系統(tǒng),其中特權管理域Domain0為ubuntu8.04.3 LTS,客戶虛擬機操作系統(tǒng)為ubuntu9.04,TSS軟件棧為 TrouSerS。
在vTPM與TCB的綁定過程中,本文將保存在物理 TPM中的 PCR值映射至 vTPM實例的vPCR中,以確保vTPM與底層TCB的綁定關系,使得在虛擬計算環(huán)境中可以有效地使用密封存儲等功能。
物理PCR至vPCR映射過程通過map_pcr()函數(shù)發(fā)送VTPM_ORD_TPMCOMMAND命令至vTPM管理器來實現(xiàn)。函數(shù)流程如圖4所示。
圖4 函數(shù)流程
其中,寫管道VTPM_TX_FIFO為“/var/vtpm/fi fos/vtpm_cmd_from_all.fifo”,讀管道VTPM_RX_F IFO 為“/var/vtpm/fifos/vtpm_rsp_to_%d.fifo”,tag為vTPM命令標志VTPM_TAG_REQ,tpm_tag為讀PCR指令00c1,index為需要讀取的PCR索引號。
本文在vTPM管理器中加入監(jiān)聽線程MakeCert Listener,用來監(jiān)聽和處理來自vTPM實例的證書請求。當有證書請求發(fā)生時,它將發(fā)送相關 TPM 命令,請求TPM完成Quote及其他相關操作。訪問TPM 硬件最直接的方法是發(fā)送 TPM 命令,但是TPM[18]1.2 Command規(guī)范的命令功能單一,接口繁多且參數(shù)結構復雜,不方便用戶對 TPM 資源的使用和管理,因此需要對其進行封裝,即需要實現(xiàn)可信軟件棧TSS。由于XEN沒有提供可信證書鏈擴展的功能,因此沒有諸如引證(quote)、認證(certify)等操作的接口,因此本文對vTPM管理器的TSS進行了擴展實現(xiàn)。主要實現(xiàn)的接口如表1所示。
表1 擴展vTPM管理器的TSS接口
其中:
VTPM_CreateKey函數(shù)用于生成簽名密鑰SK;
VTPM_LoadAIK函數(shù)用于加載物理AIK;
VTPM_GetQuote函數(shù)用于AIK對PCR簽名以產(chǎn)生Quote信息;
VTPM_CerityKey函數(shù)用于利用AIK認證SK;
VTPM_SignvAIK函數(shù)用于使用SK對vAIK證書進行簽名。
為了驗證vTPM與TCB綁定的正確性及證書鏈擴展的可用性,本文分別從虛擬平臺的遠程證明和密封存儲2個方面測試系統(tǒng)的可用性。其中測試物理平臺配置如下。CPU:Intel E8400;內(nèi)存:DDRⅡ800 4GB;硬盤:320GB SATA 7200rpm;TPM:Infineon v1.2TPM。
本節(jié)測試了 vPCR的映射功能,由 4.1節(jié)中map_pcr函數(shù)完成。當虛擬機啟動完畢后,可以讀取虛擬機環(huán)境中pcrs文件以獲取vTPM的vPCR值,如圖5所示。
圖中顯示了 2個客戶虛擬域(www-domU和kejin-domU)的PCR值。PCR[0]~PCR[8]是從物理TPM映射到vTPM的,其中PCR[0]~PCR[7]為物理平臺的度量值,PCR[8]為擴展的 Hypervisor、特權管理域內(nèi)核以及vTPM管理器的度量值。由于這2個domU工作在同一物理平臺上,它們的PCR[0]~PCR[8]是相同的,而 PCR[9]是客戶虛擬域中 IMA的度量結果,存儲的是客戶虛擬域的度量值,因此該值互不相等。
圖5 vPCR的映射
本節(jié)利用eCryptfs加密文件系統(tǒng)測試方案的密封存儲的能力。為了達到測試的目的修改了eCryptfs用戶空間的密鑰管理部分以實現(xiàn)與 vTPM的交互,并利用TPM對eCryptfs的文件加密密鑰實現(xiàn)密封存儲。
由于文件加密密鑰與當前虛擬平臺的 PCR相關聯(lián),因此即使某一虛擬域擁有另一虛擬域的文件加密密鑰密封后的數(shù)據(jù)塊,它也無法對其進行解封,即無法解密其加密文件,效果如圖6所示。
首先在虛擬域kejin-domU的加密文件系統(tǒng)中編輯了文件 passwd,并將文件的加密密鑰密封存儲在虛擬域kejin-domU中。在該虛擬域中可以有效地解封密鑰,從而可以解密文件,如圖6(a)所示。
圖6 虛擬平臺下的密封存儲
為了驗證虛擬域的密封存儲功能,將加密文件及密封的密鑰數(shù)據(jù)拷貝至另一虛擬域 www-domU中。因為虛擬平臺已經(jīng)改變,所以無法解封加密密鑰,進而無法解密文件,如圖6(b)所示(雖然使用ls命令可以列出文件的詳細信息,但利用Linux下各種文件編輯工具都無法讀取文件內(nèi)容)。
本節(jié)主要測試虛擬平臺的遠程證明功能的有效性,主要分為vAIK證書的生成和遠程證明中證明方平臺有效性驗證2個方面。
首先,測試了vAIK證書的生成時間,并與物理 AIK證書的生成時間做了對比,其中物理 AIK證書的簽發(fā)使用隱私 CA測試網(wǎng)站(http://www.privacyc.com)。
vAIK證書的生成包括 2個部分:一是物理AIK證書的生成;二是本地TPM簽發(fā) vAIK證書。根據(jù)表2可知,雖然與本地TPM通信需要耗費一定的時間(平均時間約為 3.22s),但相比物理AIK證書生成時間,耗時相對較少,具有較好的實用性。
表2 生成AIK證書與vAIK證書時間對比
其次,本節(jié)在虛擬計算環(huán)境下進行了遠程證明實驗。該遠程證明采用基于二進制的直接模型,流程如圖7所示。
圖7 遠程證明流程
遠程驗證方接收證明方提供的Quote及 vAIK證書,其驗證結果如圖8所示。
驗證方通過以下步驟確認證明方平臺的可信性:
1) 通過驗證SK對vAIK的簽名,可知vAIK是可信的,并且是由vTPM提供的;
2) 通過AIK對SK的簽名,可知vTPM是可信的并且是受到物理TPM保護;
3) 通過驗證AIK證書,證明物理TPM真實可信;
4) 通過驗證物理平臺的Quote,可知當前虛擬平臺的運行環(huán)境(VMM及特權域)是真實可信的;
5) 驗證客戶虛擬域domainU的Quote簽名,以驗證當前虛擬執(zhí)行環(huán)境的可信性。
圖8 虛擬平臺下的遠程證明
本文以虛擬機監(jiān)視器XEN平臺為基礎,通過建立物理PCR與vPCR的映射關系實現(xiàn)vTPM與底層可信計算基的綁定,并在此基礎上拓展證書鏈在虛擬機中的延伸,使得虛擬機可以有效地利用TPM 提供的相關功能,完成平臺環(huán)境的證明及私密信息的安全存儲,從而構建可信的虛擬執(zhí)行環(huán)境。同時,本文實現(xiàn)了相關的原型系統(tǒng),驗證了系統(tǒng)的有效性。
[1]孫毓忠.虛擬化的復興[J].中國計算機學會通訊, 2008, 4(4):12-14.SUN Y Z.The virtualization renaissance[J].Communications of CCF,2008, 4(4): 12-14.
[2]Trusted computing group: trusted platform module (TPM) specifications[EB/OL].https://www.trustedcomputinggroup.org/ specs/TPM,2006.
[3]GOLDMAN K A, BERGER S.TPM main part 3 IBM commands[EB/OL].http://www.research.ibm.com/secure_systems_ departme nt/projects/vtpm/mainP3IBMCommandsrev10.pdf, 2005-4.
[4]PAUL E, JORK L.Para-virtualized TPM sharing[A].Proceedings of the 1st International Conference on Trusted Computing and Trust in Information Technologies: Trusted Computing - Challenges and Applications (TRUST 2008)[C].Villach, Austria, 2008.119-132.
[5]MELVIN J A, MICHA M, CHRIS I D.Towards Trustworthy Virtualization Environments: Xen Library OS Security Service Infrastructure[R].Trusted Systems Laboratory, HP Laboratories Bristol.2007.
[6]BERGER S, CACERES R, GOLDMAN K A,et al.vTPM: virtualizing the trusted platform module[A].Proceedings of the 15th USENIX Security Symposium (USENIX Security 2006)[C].Canada, 2006.305-320.
[7]FREDERIC S, MICHAEL B, MARTIN H,et al.An approach to a trustworthy system architecture using virtualization[A].Proceedings of the 4th International Conference on Autonomic and Trusted Computing (ATC-2007)[C].Hong Kong, China, 2007.4610: 191-202.
[8]JANSEN B, RAMASAMY H, SCHUNTER M.Flexible integrity protection and verification architecture for virtual machine monitors[EB/OL].http://www.trl.ibm.com/projects/watc/XenSecu rityServicesPaper.pdf, 2006-1.
[9]SADEGHI A R, STUBLE C, WINANDY M.Property-based TPM virtualization[A].Proceedings of 11th Information Security Conference (ISC 2008)[C].Taipei, Taiwan, 2008.1-16.
[10]STUMPF F, ECKERT C, BALFE S.Towards secure e-commerce based on virtualization and attestation techniques[A].Proceedings of the Third International Conference on Availability, Reliability and Security (ARES 2008)[C].Barcelona, Spain: IEEE Computer Society,2008.376-382.
[11]SCARLATA V, ROZAS C, WISEMAN M,et al.TPM virtualization building a general framework[J].Trusted Computing, Wiesbaden, Germany: Vieweg+Teubner, 2008: 43-56.
[12]STRASSER M, STAMER H.A software-based trusted platform module emulator[A].Proceedings of the 1st International Conference on Trusted Computing and Trust in Information Technologies: Trusted Computing - Challenges and Applications (TRUST 2008)[C].Villach,Austria, 2008.33-47.
[13]BRADFORD R, KOTSOVINOS E, FELDMANN A,et al.Live wide-area migration of virtual machines including local persistent state[A].Proceeding of the International Conference on Virtual Execu-tion Environments 2007(VEE 2007)[C].San Diego, California, USA,2007.169-179.
[14]HINES M R, GOPALAN K.Post-copy based live virtual machine migration using adaptive pre-paging and dynamic self-ballooning[A].Proceeding of the International Conference on Virtual Execution Environments 2009 (VEE 2009)[C].Washington, DC, USA, 2009.51-60.
[15]Intel Corporation.Intel virtualization specification for the Intel IA-32 architecture[EB/OL].http://www.intel.com/technology/ virtualization,2005.
[16]AMD.AMD64 virtualization codenamed “pacifica” technology: secure virtual machine architecture reference manual[EB/OL].http://www.mimuw.edu.pl/vincent/lecture6/sources/amd-pacifica-specification.pdf,2005-5.
[17]BARHAM P, DRAGOVIC B, FRASER K,et al.XEN and the art of virtualizaiton[A].Proceeding of the 19th ACM Symposium on Operating Systems Principles (SOSP 2003)[C].Bolton Landing, NY USA,2003.164-177.
[18]Trusted Computing Group.TPM main specification.main specification part 1-3 command version 1.2[EB/OL].http://www.trustedcom putinggroup.org.2007.