王麗娜,高漢軍,余榮威,任正偉,董永峰
(1.軟件工程國家重點實驗室,湖北 武漢 430072;2.武漢大學 計算機學院,湖北 武漢 430072)
虛擬機監視器(VMM, virtual machine monitor)對上層操作系統的完全控制權以及虛擬機間運行環境的隔離性,為增強系統的可靠性提供了新思路[1]。然而如何確保虛擬機監視器的完整性以及如何充分利用虛擬化技術的優勢,確保虛擬機運行環境和服務軟件的完整性、安全性成為亟待解決的問題。
可信計算[2]作為保證信息安全的一項重要技術,能夠有效保證虛擬機監視器及其上層客戶操作系統的完整性。因此,在虛擬平臺下實現可信技術,是虛擬化技術與可信計算技術發展的必然結果,而可信平臺模塊(TPM, trusted platform module)的虛擬化正是可信計算技術和虛擬化技術結合的關鍵技術之一。
目前可信平臺模塊的虛擬化方式主要有3種:TPM的硬件環境擴展[3]、TPM的半虛擬化[4]和軟件式的TPM虛擬化。TPM的硬件環境擴展方式通過擴展 TPM 上下文為每個客戶虛擬機提供專用的TPM 環境,客戶虛擬機可以自行保存和讀取上下文,虛擬機監視器能夠透明地為每個客戶虛擬機提供隔離的TPM會話;然而該方式需要TPM硬件支持,目前并不存在硬件虛擬化的 TPM。TPM 半虛擬化方式通過加入一個軟件中間件——TPM 訪問中介層,實現 TPM 安全、公平地被各個虛擬機所共享;TPM訪問中間層負責對TPM的調度控制及TPM對虛擬機的認證;然而該方式需要更改少數的設備接口。因此這2種TPM的虛擬化方式在兼容性方面都受到一定程度的影響。相比而言,軟件式TPM 虛擬化通過軟件的形式為虛擬機提供一個接近于真實硬件 TPM 的接口。因此,目前大多數應用主要采用軟件式TPM虛擬化方式[5~11]。
瑞士蘇黎士技術聯合研究所[12]的軟件式 TPM模擬器實現了TPM的絕大部分功能;但TPM模擬器僅面向單個平臺環境,并不能虛擬出多個 TPM以供每個虛擬機專用。Berger[6]在此基礎上,提出了TPM虛擬化的方法,能夠將一個物理TPM映射成多個vTPM(virtual TPM),vTPM可為每個虛擬機提供一個專用的基于軟件的信任根;同時為了使vTPM具備遠程證明等能力,Berger提出了4種構建vTPM證書鏈的設計思路,但他并沒有做出進一步的實現。隨后,Frederic[7]提出了一種構建可信虛擬平臺方案,并實現了vTPM和物理TPM的綁定以及vTPM證書鏈的構建。在構建證書鏈的過程中,該方案利用身份證明密鑰(AIK, attestation identity key)對 vAIK(virtual AIK)、物理 PCR、隨機數nonce及時間戳進行簽名,并與AIK證書一同構成vAIK證書。然而TPM Main規范中規定AIK密鑰只能對TPM內部產生的信息(包括PCR、TPM產生的其他密鑰及 TPM 狀態信息)進行簽名,不能簽名任意的外部數據。而vAIK由vTPM產生不屬于TPM的內部信息,因而直接利用AIK簽名vAIK似乎并不合適。
針對目前可信虛擬平臺存在的問題,本文將從物理 TPM 的虛擬化方面出發,以虛擬機監視器XEN為基礎平臺,通過建立物理PCR與vPCR的映射關系實現vTPM與底層TCB的綁定,并在此基礎上拓展證書鏈在虛擬機中的延伸,使得虛擬機可以有效地利用 TPM 提供的相關功能,完成平臺環境的證明及私密信息的安全存儲,從而構建可信的虛擬執行環境。同時,本文實現了相關的原型系統,驗證了系統的有效性。
本文結構如下:第2節介紹了相關知識;第3節中給出了設計方案;第4節給出了在XEN平臺下的具體實現;第5節展示了原型系統測試及分析;最后給出了本文的總結。
可信計算保障了相關平臺配置信息的完整性。為了得到平臺的配置信息,需要實現可信度量,它是可信計算的基礎。TCG提出了實現可信度量的2大關鍵技術:一是在可信平臺上引入可信根;二是利用可信根來建立信任鏈。TCG在可信PC技術規范中,具體給出了可信PC中的信任鏈,該信任鏈以TPM芯片為核心(提供密碼操作和安全存儲),起點為CRTM(core root of trust module),從系統啟動開始,沿著CRTM→BIOS→ OSLoader→ OS→App這個信任鏈,一級度量一級,一級信任一級,以確保整個平臺的系統資源的完整性。
遠程證明是用于認證可信計算平臺的身份、硬件配置和系統中運行軟件的完整性,從而確保終端平臺實體可信和當前運行狀態未曾遭到破壞的技術方案。在遠程證明中,驗證方需要驗證證明方的身份,因此需要證明方提供 TPM 唯一身份標識,即EK(endorsement key)證書。但是直接向驗證方提供EK很可能暴露證明方用戶的隱私信息,因此需要引入AIK來避免暴露平臺與EK綁定關系,降低用戶隱私泄露的可能性。
隨著VMware公司在虛擬化領域的成功以及虛擬化理論和技術的不斷深入,學術界和業界對虛擬化的應用和研究表現出了極大興趣,先后出現了Denali、Virtual Box等一大批虛擬機產品。虛擬化技術也隨之廣泛應用于服務器整合、資源的動態負載均衡[13,14]等場合,有效地提高了資源的利用率,節省了運營成本。而且,國際主流處理器廠商積極開展虛擬化相關研究,如Intel推出VT虛擬化技術[15],AMD硬件輔助虛擬技術Pacifica[16]。
Cambridge大學研究開發了XEN虛擬機開源項目[17],它支持半虛擬化和硬件虛擬化技術。當XEN啟動時,首先加載Domain0的內核。Domain0是特權管理域,運行在比其他客戶域更高的特權級下,可以訪問硬件,負責其他虛擬域對硬件設備的多路訪問。客戶域 DomainU不允許直接訪問硬件,而是通過設備驅動中的前端驅動通知Dom0中的后端驅動,由Domain0進行安全檢查后,交由原生設備驅動處理。
本文可信虛擬執行環境的架構如圖1所示。

圖1 可信虛擬執行環境架構
其中,vTPM實例與客戶虛擬機一一對應,為用戶提供綁定、密封、密鑰存儲等一系列與物理TPM相同的功能。
vTPM永久存儲區(PS, persistent storage)用來保護每個vTPM實例的狀態結構vTPM-SS(vTPM state structure),其中保存了vTPM的永久狀態信息。
vTPM管理器負責vTPM實例的創建與管理,為客戶虛擬機與vTPM實例間以及vTPM實例與物理TPM間提供了通信信道。當創建一個虛擬機時,虛擬TPM管理器便會產生一個vTPM實例并將其與新建的虛擬機關聯。它通過監聽虛擬 TPM 后端驅動,將來自虛擬機的 TPM 命令轉發至與它相關聯的vTPM實例中。
在虛擬環境下,vTPM 實例的可信計算基 TCB包括建立vTPM實例的軟件組件(vTPM實例與vTPM管理器),相應的運行環境(Hypervisor與特權管理域)以及底層固件。這些組件的完整性度量由物理 TPM完成,度量值保存在物理TPM的PCR中。
vTPM實例主要確保客戶虛擬機的完整性,度量的組件包括客戶虛擬機操作系統及上層應用程序,度量值保存在vTPM實例的PCR中。為了在虛擬環境下使用可信度量功能,必須建立 vTPM 與底層TCB的綁定關系,以確保可信虛擬平臺模塊運行環境的完整性以及客戶虛擬機的平臺環境完整性。
按照TCG的TPM Client規范,BIOS及物理硬件的度量值是存放在0~7號PCR中,該部分操作是由 BIOS進行處理的。而對于 Hypervisor、特權管理域內核以及vTPM管理器等組件,本文采用了可信的啟動加載器 GrubIMA進行度量,度量值存放在PCR的8號寄存器中。
基于此,本文將物理PCR的低位映射到vTPM的vPCR中(如圖2所示),即將0~8號這9組反映虛擬平臺TCB完整性度量值的PCR映射到每一個虛擬TPM的vPCR,將vPCR的9~23號寄存器保留給客戶虛擬操作系統使用。

圖2 物理PCR與vPCR的映射
在虛擬環境下,當客戶虛擬機中進行遠程證明時,必須建立從物理TPM到vTPM的證書鏈。因為同一物理平臺下運行了多個虛擬機(應用),而各個虛擬機內又將運行不同的應用。為了確保虛擬機之間應用的隔離性,以及各虛擬機平臺的差異性,應利用vAIK代表虛擬機內部的不同應用進行身份證明。同時為了確保虛擬平臺與物理平臺的綁定關系,需要利用物理TPM的AIK證書構造虛擬平臺的vAIK證書。
文獻[6]中提出了一種通過EK-vEK-vAIK形式的證書鏈來為vTPM頒發vAIK證書。該方案通過vTPM管理器向CA證明vTPM的可信性,由CA向vTPM簽發vEK證書,之后使用與物理平臺相同的方法,由vEK來生成vAIK證書。這種方案生成vTPM 實例的效率很低,而且請求較多時,對 CA本身也是很大的負擔。
文獻[7]提出了通過AIK-vAIK這種形式的證書鏈方案,該方案不使用vEK,而直接簽發vAIK證書。vAIK由vTPM實例自己生成,并由vTPM管理器簽發vAIK證書而不依賴于可信第三方。與前一種方案比較,該方案繞過了 vEK證書,直接為vTPM頒發vAIK證書,而且證書的簽發不需要依賴隱私CA,直接由本地vTPM管理器進行。因此可以方便vTPM動態、頻繁地生成vTPM實例。在構建證書鏈的過程中,該方案利用AIK對vAIK、物理PCR、隨機數nonce及時間戳進行簽名,并與AIK證書一同構成vAIK證書。然而TPM Main規范中規定AIK密鑰只能對TPM內部產生的信息(包括PCR、TPM產生的其他密鑰及TPM狀態信息)進行簽名,不能簽名任意的外部數據。而vAIK由vTPM產生,不屬于TPM的內部信息,因而直接利用AIK簽名vAIK似乎并不合適。
為了更好地滿足TPM的規范,本文引入了簽名密鑰SK作為中介實現AIK對vAIK的間接簽名認證。SK由TPM內部產生,屬于TPM的內部信息,此時利用AIK通過TPM_CertifyKey命令對SK進行簽名,并由SK通過TPM_Quote命令對vAIK、物理PCR、隨機數nonce進行簽名,最后與AIK證書一同構成vAIK證書,其中,vAIK證書包括:{SK}AIK、{nonce、PCR[0~15]、vAIK}SK以及AIK證書。由此可知SK與AIK是一一對應的,實質上仍體現了AIK向外證實身份的本質,而SK的引入則是為了更好地滿足TPM規范中AIK僅能簽名TPM內部產生的信息的要求,具體流程如圖3所示。
1) vTPM產生一個vAIK。
2) 虛擬平臺向vTPM管理器請求vAIK證書,請求中包含vAIK公鑰與一個的隨機數Nonce(用于抗重放攻擊)。
3) vTPM管理器使用AIK對物理PCR及vTPM發來Nonce進行簽名(即Quote),用于證明物理平臺即虛擬TPM底層平臺的完整性。
4) vTPM管理器令物理TPM產生一個簽名密鑰SK,SK是一個2 048bit RSA密鑰對。
5) vTPM管理器用AIK認證簽名密鑰SK,證明該簽名密鑰與AIK同屬一個物理平臺。
6) vTPM管理器用SK對vAIK的公鑰和物理平臺的Quote信息進行簽名,并附上AIK證書,即構成vAIK證書。

圖3 vAIK證書生成流程
為了驗證方案設計的可行性,本文在虛擬機監視器 XEN3.3.0上實現了原型系統,其中特權管理域Domain0為ubuntu8.04.3 LTS,客戶虛擬機操作系統為ubuntu9.04,TSS軟件棧為 TrouSerS。
在vTPM與TCB的綁定過程中,本文將保存在物理 TPM中的 PCR值映射至 vTPM實例的vPCR中,以確保vTPM與底層TCB的綁定關系,使得在虛擬計算環境中可以有效地使用密封存儲等功能。
物理PCR至vPCR映射過程通過map_pcr()函數發送VTPM_ORD_TPMCOMMAND命令至vTPM管理器來實現。函數流程如圖4所示。

圖4 函數流程
其中,寫管道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管理器中加入監聽線程MakeCert Listener,用來監聽和處理來自vTPM實例的證書請求。當有證書請求發生時,它將發送相關 TPM 命令,請求TPM完成Quote及其他相關操作。訪問TPM 硬件最直接的方法是發送 TPM 命令,但是TPM[18]1.2 Command規范的命令功能單一,接口繁多且參數結構復雜,不方便用戶對 TPM 資源的使用和管理,因此需要對其進行封裝,即需要實現可信軟件棧TSS。由于XEN沒有提供可信證書鏈擴展的功能,因此沒有諸如引證(quote)、認證(certify)等操作的接口,因此本文對vTPM管理器的TSS進行了擴展實現。主要實現的接口如表1所示。

表1 擴展vTPM管理器的TSS接口
其中:
VTPM_CreateKey函數用于生成簽名密鑰SK;
VTPM_LoadAIK函數用于加載物理AIK;
VTPM_GetQuote函數用于AIK對PCR簽名以產生Quote信息;
VTPM_CerityKey函數用于利用AIK認證SK;
VTPM_SignvAIK函數用于使用SK對vAIK證書進行簽名。
為了驗證vTPM與TCB綁定的正確性及證書鏈擴展的可用性,本文分別從虛擬平臺的遠程證明和密封存儲2個方面測試系統的可用性。其中測試物理平臺配置如下。CPU:Intel E8400;內存:DDRⅡ800 4GB;硬盤:320GB SATA 7200rpm;TPM:Infineon v1.2TPM。
本節測試了 vPCR的映射功能,由 4.1節中map_pcr函數完成。當虛擬機啟動完畢后,可以讀取虛擬機環境中pcrs文件以獲取vTPM的vPCR值,如圖5所示。
圖中顯示了 2個客戶虛擬域(www-domU和kejin-domU)的PCR值。PCR[0]~PCR[8]是從物理TPM映射到vTPM的,其中PCR[0]~PCR[7]為物理平臺的度量值,PCR[8]為擴展的 Hypervisor、特權管理域內核以及vTPM管理器的度量值。由于這2個domU工作在同一物理平臺上,它們的PCR[0]~PCR[8]是相同的,而 PCR[9]是客戶虛擬域中 IMA的度量結果,存儲的是客戶虛擬域的度量值,因此該值互不相等。

圖5 vPCR的映射
本節利用eCryptfs加密文件系統測試方案的密封存儲的能力。為了達到測試的目的修改了eCryptfs用戶空間的密鑰管理部分以實現與 vTPM的交互,并利用TPM對eCryptfs的文件加密密鑰實現密封存儲。
由于文件加密密鑰與當前虛擬平臺的 PCR相關聯,因此即使某一虛擬域擁有另一虛擬域的文件加密密鑰密封后的數據塊,它也無法對其進行解封,即無法解密其加密文件,效果如圖6所示。
首先在虛擬域kejin-domU的加密文件系統中編輯了文件 passwd,并將文件的加密密鑰密封存儲在虛擬域kejin-domU中。在該虛擬域中可以有效地解封密鑰,從而可以解密文件,如圖6(a)所示。

圖6 虛擬平臺下的密封存儲
為了驗證虛擬域的密封存儲功能,將加密文件及密封的密鑰數據拷貝至另一虛擬域 www-domU中。因為虛擬平臺已經改變,所以無法解封加密密鑰,進而無法解密文件,如圖6(b)所示(雖然使用ls命令可以列出文件的詳細信息,但利用Linux下各種文件編輯工具都無法讀取文件內容)。
本節主要測試虛擬平臺的遠程證明功能的有效性,主要分為vAIK證書的生成和遠程證明中證明方平臺有效性驗證2個方面。
首先,測試了vAIK證書的生成時間,并與物理 AIK證書的生成時間做了對比,其中物理 AIK證書的簽發使用隱私 CA測試網站(http://www.privacyc.com)。
vAIK證書的生成包括 2個部分:一是物理AIK證書的生成;二是本地TPM簽發 vAIK證書。根據表2可知,雖然與本地TPM通信需要耗費一定的時間(平均時間約為 3.22s),但相比物理AIK證書生成時間,耗時相對較少,具有較好的實用性。

表2 生成AIK證書與vAIK證書時間對比
其次,本節在虛擬計算環境下進行了遠程證明實驗。該遠程證明采用基于二進制的直接模型,流程如圖7所示。

圖7 遠程證明流程
遠程驗證方接收證明方提供的Quote及 vAIK證書,其驗證結果如圖8所示。
驗證方通過以下步驟確認證明方平臺的可信性:
1) 通過驗證SK對vAIK的簽名,可知vAIK是可信的,并且是由vTPM提供的;
2) 通過AIK對SK的簽名,可知vTPM是可信的并且是受到物理TPM保護;
3) 通過驗證AIK證書,證明物理TPM真實可信;
4) 通過驗證物理平臺的Quote,可知當前虛擬平臺的運行環境(VMM及特權域)是真實可信的;
5) 驗證客戶虛擬域domainU的Quote簽名,以驗證當前虛擬執行環境的可信性。

圖8 虛擬平臺下的遠程證明
本文以虛擬機監視器XEN平臺為基礎,通過建立物理PCR與vPCR的映射關系實現vTPM與底層可信計算基的綁定,并在此基礎上拓展證書鏈在虛擬機中的延伸,使得虛擬機可以有效地利用TPM 提供的相關功能,完成平臺環境的證明及私密信息的安全存儲,從而構建可信的虛擬執行環境。同時,本文實現了相關的原型系統,驗證了系統的有效性。
[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.