鄭志蓉
(海軍計算技術(shù)研究所 北京 100841)
?
虛擬計算平臺可信平臺模塊構(gòu)建技術(shù)研究*
鄭志蓉
(海軍計算技術(shù)研究所北京100841)
摘要對虛擬計算平臺的引導(dǎo)過程進行了分析,提出了可信平臺模塊虛擬構(gòu)建和物理擴展構(gòu)建的基本原理和流程。可信平臺模塊虛擬構(gòu)建方式采用單一物理可信平臺模塊通過虛擬機管理器為虛擬機提供邏輯獨立的可信安全服務(wù)。可信平臺模塊物理構(gòu)建方式采用多個物理可信平臺模塊為虛擬機提供物理獨立的可信安全服務(wù)。
關(guān)鍵詞可信平臺模塊; 虛擬計算平臺; 虛擬可信平臺模塊
Construction Technology of Trust Platform Module in the Virtual Computing Platform
ZHENG Zhirong
(Computer Technology Institute of Navy, Beijing100841)
AbstractThe boot way of the virtual computing platform is analyzed. The principle and the process of the virtual trust platform module and the real trust platform module construction are put forward. The virtual trust platform module gives logical service for every virtual machine using single real trust platform. The real trust platform module gives physical service for every virtual machine using many real trust platforms.
Key Wordstrust computing platform module, virtual trust computing platform, virtual trust computing platform module
Class NumberTP309.1
1引言
虛擬計算平臺[1]采用的虛擬化技術(shù)包括指令級虛擬化、硬件抽象級虛擬化和操作系統(tǒng)級虛擬化,目前研究最廣泛的虛擬化技術(shù)是硬件抽象級虛擬化。硬件抽象級虛擬化中的混合模式充分利用了操作系統(tǒng)已有的設(shè)備驅(qū)動實現(xiàn)虛擬機的設(shè)備模型,是一種高效和相對安全的虛擬化實現(xiàn)模式。
在虛擬計算平臺中構(gòu)建可信平臺模塊(TPM)[2~8],充分利用虛擬化技術(shù)的優(yōu)勢,以TPM為信任根,建立信任鏈,保證虛擬機運行環(huán)境及其上層操作系統(tǒng)的完整性,能確保整個虛擬計算平臺的安全可信。
2虛擬計算平臺的引導(dǎo)過程
虛擬計算平臺加電后,BIOS會對機器的硬件設(shè)備進行加電自檢,BIOS初始化完成后為虛擬機管理程序(Hypervisor)提供變量相關(guān)、時間、喚醒、虛擬內(nèi)存服務(wù)、重啟關(guān)機、時鐘、交換信息等硬件相關(guān)服務(wù)。隨后BIOS啟動Hypervisor和虛擬機主控制域(Domian0),Hypervisor負責(zé)虛擬機的執(zhí)行。Domain0控制物理I/O資源,并同時與其他運行于該平臺上的虛擬機交互[9~10]。
Domain 0啟動其它虛擬機用戶虛擬域(Domain U)。Domain0包含了兩個驅(qū)動,支持來自于其它虛擬機的網(wǎng)絡(luò)和本地磁盤請求。由于Hypervisor和Domin0先于用戶虛擬域操作系統(tǒng)(Guest OS)啟動,虛擬機系統(tǒng)中Guest OS是不能直接通過訪問BIOS來獲取啟動時所需要的硬件信息的。為了使Guest OS能夠得到BIOS提供的硬件信息,虛擬機系統(tǒng)通過啟動信息頁的方式向Guest OS提供硬件信息,使用共享信息頁用于在Guest OS運行過程中Hypervisor和Guest OS之間對CPU狀態(tài)相關(guān)的基本信息進行共享。虛擬BIOS被插入到每個Domain U中,確保操作系統(tǒng)收到所有標準的啟動指令[11]。
對每個虛擬機內(nèi)存的初始化分配都是在該機創(chuàng)建的時候完成的,不同DomainU間內(nèi)存分配是靜態(tài)完成的,保證了不同虛擬機之間內(nèi)存空間的隔離。用戶虛擬機初始化時候根據(jù)其配置文件由Domain0分配管理屬于DomainU的虛擬塊設(shè)備。原生的虛擬磁盤驅(qū)動為操作系統(tǒng)提供了抽象的虛擬設(shè)備接口,塊設(shè)備虛擬化實現(xiàn)了基于前后端驅(qū)動模型的虛擬磁盤。前端驅(qū)動為客戶機操作系統(tǒng)提供虛擬磁盤設(shè)備抽象,后端驅(qū)動調(diào)用原生磁盤驅(qū)動與磁盤交互,相互間利用事件通道、共享內(nèi)存進行異步通信和數(shù)據(jù)傳輸。同樣Domain0也管理分配DomainU對網(wǎng)絡(luò)資源的訪問。每個分配DomainU的虛擬網(wǎng)絡(luò)接口模擬了真實的網(wǎng)絡(luò)適配器。
在虛擬計算平臺下,操作系統(tǒng)和物理TPM的一一對應(yīng)關(guān)系不再存在,虛擬TPM方構(gòu)建和物理TPM擴展構(gòu)建兩種技術(shù)思路能夠有效解決虛擬計算平臺的TPM共享和隔離問題。
3虛擬TPM構(gòu)建
虛擬計算平臺中有一個物理TPM,使用虛擬化方法為每個需要TPM服務(wù)的虛擬機都創(chuàng)建一個vTPM實例,每個實例都需要提供類似于物理TPM所提供的服務(wù)。
虛擬TPM構(gòu)建方式如圖1所示。
圖1 虛擬TPM構(gòu)建方式
每個虛擬機有一個vTPM實例。vTPM管理器負責(zé)管理vTPM實例,并負責(zé)與物理TPM進行交互。虛擬機使用前后端驅(qū)動模型和vTPM交互。其中,前端驅(qū)動運行在需要訪問vTPM實例的虛擬機中,即VM#N;后端驅(qū)動運行在管理vTPM的虛擬機中,即VM#0。
在教學(xué)中,教師首先要對文本插圖進行深度研究,從中挖掘教學(xué)契機。人教版一年級《我們愛整潔》,這一節(jié)的內(nèi)容旨在培養(yǎng)學(xué)生養(yǎng)成講衛(wèi)生、愛整潔的好習(xí)慣。教師首先利用多媒體出示整潔的桌面和不整潔的桌面,讓學(xué)生觀看并選擇出自己喜歡的桌面。學(xué)生自然選擇整潔的桌面,這時教師順勢導(dǎo)入新課。對整潔和不整潔有了初步認知后,教師讓學(xué)生回憶生活中見到的不整潔的例子,學(xué)生一時想不起來。這時,教師借助文本中的三幅插圖,讓學(xué)生說一說插圖中有哪些不整潔的現(xiàn)象。學(xué)生紛紛舉手回答?;卮鸾Y(jié)束后,教師引導(dǎo)學(xué)生思考:“這些不整潔的現(xiàn)象如何才能清除呢?你來幫幫他們吧,愛整潔的他們又會是什么樣子的呢?”學(xué)生紛紛出謀劃策。
vTPM必須滿足以下條件:
1) vTPM為在虛擬機中運行的操作系統(tǒng)提供與物理TPM同樣的使用模型和命令集。
2) vTPM維護著唯一的狀態(tài)信息和安全信息(如密鑰),虛擬機和其對應(yīng)的vTPM實例之間的聯(lián)系必須在虛擬機的整個生命周期中都保持著。當(dāng)虛擬機在休眠或遷移時,vTPM實例也隨著它所關(guān)聯(lián)的虛擬機而休眠和遷移。
vTPM管理器負責(zé)創(chuàng)建、保存、恢復(fù)和刪除vTPM實例。vTPM管理器需要維護一張記錄虛擬機及其vTPM實例間綁定的關(guān)系表,一個用于記錄虛擬機和vTPM實例間連接狀態(tài)的表,用于明確區(qū)分虛擬機是新創(chuàng)建的還是被喚醒的。在vTPM管理器中vTPM管理程序分別接受來自后端驅(qū)動、vTPM實例和vTPM管理器控制臺的命令或數(shù)據(jù)。在需要的時候,vTPM管理器還負責(zé)與物理TPM的交互。
虛擬機TPM驅(qū)動通過前后端驅(qū)動的方式實現(xiàn)的。虛擬機使用TPM功能,將通過前端驅(qū)動與后端驅(qū)動交互,后端驅(qū)動監(jiān)聽前端發(fā)送的請求,并與vTPM管理器進行交互,將請求發(fā)送對應(yīng)的vTPM實例加以處理。前后端驅(qū)動的數(shù)據(jù)交換采取的方式是共享內(nèi)存機制,通過事件通道產(chǎn)生中斷進行異步通知。前后端驅(qū)動具體數(shù)據(jù)交換過程如下。
1) 虛擬機中運行的應(yīng)用程序向前端驅(qū)動發(fā)送TPM請求,前端驅(qū)動首先申請并初始化用于前后端共享數(shù)據(jù)的內(nèi)存頁;然后將TPM請求數(shù)據(jù)復(fù)制到共享內(nèi)存頁,并且通過授權(quán)的方式使得后端驅(qū)動有訪問共享頁的權(quán)限;最后使用事件通道產(chǎn)生中斷通知后端驅(qū)動獲取TPM請求。
2) 后端驅(qū)動接受到來自前端驅(qū)動的TPM請求后,從共享內(nèi)存頁中讀出數(shù)據(jù),復(fù)制到指定的緩存中;然后將其交到vTPM管理程序,vTPM管理程序根據(jù)附加的vTPM實例標識號分發(fā)到對應(yīng)的vTPM實例中加以處理。
3) TPM命令處理完后,后端驅(qū)動從vTPM管理器接收到TPM響應(yīng),將其復(fù)制到共享內(nèi)存頁,然后通過授權(quán)和中斷的方式通知對應(yīng)的前端驅(qū)動獲取響應(yīng)。
4) vTPM前端驅(qū)動接收到來自后端驅(qū)動的TPM響應(yīng)后,從共享內(nèi)存頁中讀出數(shù)據(jù),復(fù)制到指定的寄存器中,最后將其交到提出TPM請求的應(yīng)用程序中。
4密鑰結(jié)構(gòu)
由于vTPM提供與物理TPM類似的安全功能、同樣的使用模型和命令集,可信虛擬平臺采用獨立的vTPM密鑰結(jié)構(gòu)。在vTPM中,為每個vTPM實例創(chuàng)建一個獨立的密鑰層次結(jié)構(gòu),與物理TPM的密鑰層次結(jié)構(gòu)分開。此時,平臺需要為每一個vTPM實例生成一個存儲根密鑰和背書密鑰。
· 背書密鑰(EK):每個TPM都配置唯一的一個EK,它存儲在TPM內(nèi)部。EK最初由TPM芯片廠商創(chuàng)建,以后可以由平臺廠商和平臺擁有者重新創(chuàng)建。由于一個EK與唯一的一個平臺綁定,代表平臺的真實身份,并關(guān)系到整個系統(tǒng)的安全性,因此它從不用作數(shù)據(jù)加密和簽名,只執(zhí)行兩個操作:一是創(chuàng)建TPM平臺所有者;二是創(chuàng)建身份密鑰。
· 存儲根密鑰(SRK):SRK在TPM內(nèi)部產(chǎn)生,一個TPM僅存在唯一一個SRK。它用于加密保護其他密鑰,是TPM密鑰樹中最高級密鑰。
· 身份密鑰(AIK):AIK是EK的代替物,它加密存儲在TPM外部。當(dāng)要使用AIK時,再將它裝入TPM,解密后使用。AIK可以有多個,僅用于對TPM內(nèi)部產(chǎn)生的數(shù)據(jù)(如PCR值等)進行簽名和驗證簽名,用來證明平臺的身份和平臺的環(huán)境配置。在平臺安全認證中,可使用AIK向遠程挑戰(zhàn)者提供平臺狀態(tài)的可信報告。
· 存儲密鑰(SK):用于對數(shù)據(jù)或其他密鑰進行加密的非對稱密鑰。
· 用戶密鑰:用戶用來完成某種安全功能的密鑰,如簽名密鑰(SIGK),綁定密鑰(BK),繼承密鑰(LK),鑒別密鑰(AK)。
單個平臺上,物理TPM密鑰管理分為內(nèi)部密鑰管理和外部密鑰管理。在所有密鑰中,只有兩組密鑰對永久存儲在TPM內(nèi)部,即EK和SRK。其他密鑰在不使用時加密后存儲在外部存儲設(shè)備中,需要時加載到TPM的保護區(qū)域。密鑰在外部是以一個樹形結(jié)構(gòu)進行存儲的,其中樹的根節(jié)點是存儲根密鑰SRK,SRK是整個密鑰樹的可信根源。加密的原則是父密鑰對子密鑰加密。
獨立的密鑰層次結(jié)構(gòu)使得vTPM實例密鑰的生成速度加快,并簡化了vTPM實例的遷移,也解決了由虛擬化產(chǎn)生的虛擬存儲密鑰、平臺身份密鑰的遷移問題。此方案有如下好處:
1) vTPM實例密鑰的生成速度非???因為密鑰的產(chǎn)生不再依賴于物理TPM;
2) 簡化了vTPM實例的遷移過程,每個vTPM實例都有自己的可信基密鑰、平臺身份密鑰、存儲密鑰,因此對于那些依賴存儲密鑰加密信息的TPM命令(如,遷移過程中的解封操作就需要用存儲密鑰進行加解密),在vTPM實例遷移后仍然能工作;
3) 確保了源平臺的安全性,因為vTPM實例密鑰結(jié)構(gòu)的獨立性及物理平臺無關(guān)性,即便vTPM實例遷移到目的平臺,也不會泄漏源平臺的秘密信息和數(shù)據(jù)。
由于vTPM實例是以軟件形式存在的,它的所有內(nèi)部狀態(tài)數(shù)據(jù)如EK、SRK、隱私數(shù)據(jù)、PCRs值等都是存放在外部磁盤中,因此,必須要確保這些狀態(tài)數(shù)據(jù)的安全性??梢杂袃煞N保護方式:一種是用物理TPM密鑰體系中的一個對稱密鑰加密這些數(shù)據(jù),而這個對稱密鑰可以在平臺啟動時用物理TPM的PCR值進行密封,以對該密鑰實施更好的保護。當(dāng)需要獲取該vTPM實例的狀態(tài)數(shù)據(jù)時,先要解封該密鑰,然后再用該密鑰解密磁盤中的vTPM實例的狀態(tài)數(shù)據(jù)。另一種方法是用一個授權(quán)口令密鑰對狀態(tài)數(shù)據(jù)進行加密,授權(quán)口令密鑰是受物理TPM保護的,這樣只有在授權(quán)的情況下,才能使用該密鑰解密磁盤中的狀態(tài)數(shù)據(jù)。
5物理TPM擴展構(gòu)建
為了實現(xiàn)多個TPM的功能,除了上述用vTPM的方式實現(xiàn)解決方案,另一種解決方案是采用物理TPM擴展方案,如圖2所示。
圖2 物理TPM擴展方式
TPM管理器統(tǒng)一管理多個TPM。虛擬機VM#0是具有特權(quán)的虛擬機,是硬件的所有者,它擁有一個TPM,其他TPM分配給其他客戶虛擬機(VM#1~VM#N)使用。一個代理進程負責(zé)在服務(wù)端驅(qū)動和外部安全協(xié)處理器間傳遞TPM信息??蛻籼摂M機的TPM代碼和運行在特權(quán)虛擬機VM#0上TPM代碼的略有不同,主要的區(qū)別是兩者通過不同的傳輸接口接受TPM命令。
6結(jié)語
傳統(tǒng)可信平臺只有一個物理TPM芯片,操作系統(tǒng)和物理TPM之間是一對一的關(guān)系。然而,在虛擬環(huán)境下,允許多個操作系統(tǒng)在一個平臺上獨立運行,而且運行操作系統(tǒng)的虛擬機可以動態(tài)創(chuàng)建。在只有一個物理TPM的情況下,操作系統(tǒng)和物理TPM的一一對應(yīng)關(guān)系不再存在。在此情況下,如何確保TPM的安全性,又讓TPM共享和隔離,提出了兩種解決方案:虛擬TPM方案和物理TPM擴展方案。
虛擬TPM和物理TPM擴展都能在虛擬計算平臺中作為信任根的構(gòu)建方式,表1描述了上述實現(xiàn)方式與傳統(tǒng)TPM構(gòu)建方式的效果比較。
表1 TPM構(gòu)建方式效果比較
考慮到可實施性和實現(xiàn)效率性,虛擬TPM構(gòu)建方式是虛擬計算平臺可信平臺模塊構(gòu)建的一種有效方式。
參 考 文 獻
[1] Xen. Xen Virtualization[EB/OL]. 2014. [2014-09-01]. http://www.xen.org.
[2] Ahmad Ubaidah Omar. Trusted computer system: understanding and issues[EB/OL]. 2002. [2014-09-01]. http://www.ahmad_ubaidh_omar.net/trusted_computer_system_3819.html.
[3] Trusted Computing Group. TPM Main Part 1: Design Principles Specification Version 1.2[EB/OL]. 2006. [2014-09-01]. https://www.Trustedcomputinggroup.org/developers/tpm.
[4] Trusted Computing Group. TPM Main Part 2: TPM Structures Specification version l-2[EB/OL]. 2006. [2014-09-01]. https://www.Trustedcomputinggroup.org/developers/tpm.
[5] Trusted Computing Group. TPM Main Part 3: Commands Specification Version 1.2[EB/OL]. 2006. [2014-09-01]. https://www.Trustedcomputinggroup.org/developers/tpm.
[6] Trusted Computing Group. TCG Architecture Overview[EB/OL]. 2007. [2014-09-01]. https://www.Trustedcomputinggroup.org/developers/infrastructure.
[7] Trusted Computing Group. PC Client Work Group PC Client Specific TPM Interface Specification (TIS), Version 1.2[EB/OL]. 2007. [2014-09-01]. https://www.Trustedcomputinggroup.org/developers/pc_client.
[8] Trusted Computing Group. TCG PC Client Specific Implementation Specification For Conventional BIOS[EB/OL]. 2007. [2014-09-01]. https://www.Trustedcomputinggroup.org/developers/pc_client.
[9] Xen. Users Manual Xen v3.0[EB/OL]. 2008. [2014-09-01]. http://www.cl.cam.ac.uk/research/srg/netos/xen/readmes/user/user.html.
[10] Intel. Intel virtualization technology[EB/OL]. 2009. http://www.intel.com.
[11] 王麗娜,高漢軍,等.基于信任擴展的可信虛擬執(zhí)行環(huán)境構(gòu)建方法研究[J].通信學(xué)報,2011(9):1-8.
中圖分類號TP309.1
DOI:10.3969/j.issn.1672-9730.2016.02.025
作者簡介:鄭志蓉,女,博士,高級工程師,研究方向:信息安全。
*收稿日期:2015年8月6日,修回日期:2015年9月24日