文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)04-0130-04
近年來,虛擬化技術(shù)以隔離性強(qiáng)、易維護(hù)、節(jié)約成本和支持跨平臺應(yīng)用等良好特性逐漸成為了云計(jì)算、網(wǎng)格計(jì)算以及高性能計(jì)算等應(yīng)用環(huán)境的核心技術(shù)及中堅(jiān)技術(shù)力量, 與此同時(shí),其安全問題也逐漸凸顯[1]。可信計(jì)算[2]作為一種安全保障基礎(chǔ)設(shè)施,有利于搭建終端平臺之間的可信連接,構(gòu)建誠實(shí)、互相信任的虛擬空間,因此被越來越多的組織和個(gè)人應(yīng)用到虛擬系統(tǒng)中以保障安全可靠性。
虛擬化技術(shù)帶來的最重要優(yōu)勢之一就是虛擬機(jī)的遷移(以下稱VM遷移)。目前,很多監(jiān)控程序,如VMware的vSphere監(jiān)控程序(EAXi)以及Xen監(jiān)控程序都支持VM遷移。但是目前業(yè)界對VM遷移的研究主要集中在優(yōu)化其遷移性能上[3],對安全方面的考慮一直很少。
通過引入虛擬TPM(以下稱為vTPM)[4]的概念,可信計(jì)算實(shí)現(xiàn)了對虛擬化系統(tǒng)的擴(kuò)展。擴(kuò)展后的虛擬系統(tǒng)上的多個(gè)VMs共享同一個(gè)物理硬件TPM,各個(gè)VM中的應(yīng)用程序可以使用各自的vTPM來實(shí)現(xiàn)敏感信息的安全存儲以及自身平臺的完整性報(bào)告。在引入可信計(jì)算的虛擬系統(tǒng)中,為了確保VM遷移之后各VM及其應(yīng)用程序能夠正確地操作,必須將vTPM隨其服務(wù)的VM一起遷移,本文將其稱為安全VM-vTPM遷移。近年來,在軟、硬件方面均出現(xiàn)了虛擬化TPM的體系結(jié)構(gòu),并且在vTPM的遷移協(xié)議方面也出現(xiàn)了諸多嘗試。本文在研究現(xiàn)有vTPM遷移方案的基礎(chǔ)上,首先分析了安全VM-vTPM遷移所面臨的幾個(gè)主要安全需求,并針對這些安全需求提出了一種新的安全VM-vTPM遷移協(xié)議,最后,基于Xen討論了協(xié)議的具體實(shí)現(xiàn),并對其性能進(jìn)行了評估。
1 安全VM-vTPM遷移協(xié)議需求分析
目前涉及vTPM遷移的主要有四個(gè)協(xié)議,本文分別將其標(biāo)記為協(xié)議1[4]、協(xié)議2[5]、協(xié)議3[6]和協(xié)議4[7]。協(xié)議1通過對vTPM實(shí)例的狀態(tài)數(shù)據(jù)進(jìn)行加密,來確保vTPM實(shí)例在遷移過程中的安全性。但是由于沒有考慮目標(biāo)平臺的限制,遷移之后vTPM狀態(tài)的安全性不能得到保證。協(xié)議2引入了一個(gè)稱為TPM控制結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)來存儲與TPM上下文相關(guān)的所有狀態(tài)信息,通過控制這個(gè)數(shù)據(jù)結(jié)構(gòu)的安全傳輸來實(shí)現(xiàn)TPM上下文在不同平臺之間的安全遷移,整個(gè)過程都是在一條可信的通信信道上實(shí)施的。協(xié)議3是從Xen的源碼中抽象出來的,整個(gè)遷移過程是在目標(biāo)平臺上的一個(gè)遷移密鑰的控制下實(shí)施的,可以保證遷移內(nèi)容的機(jī)密性,但是卻無法應(yīng)對攻擊者在遷移過程中實(shí)施的破壞,例如修改vTPM狀態(tài)內(nèi)容。協(xié)議4為應(yīng)對基于屬性的TPM虛擬化而提出的,基于屬性的虛擬化使用屬性證書而非二進(jìn)制哈希值作為度量值來擴(kuò)展vPCRs,因此可以在具有相同安全保障的兩個(gè)平臺之間實(shí)現(xiàn)vTPM的遷移。
分析上述協(xié)議后,提出安全VM-vTPM遷移協(xié)議需要考慮的安全需求如下:
(1)確保VM-vTPM被遷移到了一個(gè)安全可信的目標(biāo)平臺。在VM-vTPM遷移之前,遷移源平臺需要對目標(biāo)平臺進(jìn)行證明,以確保源平臺上的VM及其vTPM能夠遷移到一個(gè)安全可信的目標(biāo)平臺?,F(xiàn)有遷移協(xié)議要么假設(shè)目標(biāo)平臺是可信的,要么完全忽略目標(biāo)平臺的安全屬性。
(2)確保遷移前后及遷移過程中VM及其vTPM的安全關(guān)聯(lián)。在遷移過程中綁定VM及其vTPM是十分重要的,它可以阻止攻擊者在遷移過程中實(shí)施對VM/vTPM的任一改變,還可以簡化遷移之后目標(biāo)平臺上VM-vTPM的重新關(guān)聯(lián)。VM-vTPM的綁定可以是隱式的,也可以是顯式的。
(3)確保遷移過程中VM-vTPM的機(jī)密性和完整性保護(hù)以及抗重放攻擊保證。遷移過程中,必須使用恰當(dāng)?shù)拿艽a技術(shù)來保護(hù)VM及其vTPM的機(jī)密性和完整性,以阻止未授權(quán)的訪問和修改進(jìn)而避免VM或vTPM被惡意篡改。同時(shí),還需要應(yīng)用相應(yīng)的機(jī)制來阻止遷移過程中的重放攻擊,以避免發(fā)生VM或vTPM數(shù)據(jù)丟失的情況。
(4)確保遷移的原子性。原子性是指在沒有任一中間狀態(tài)的情況下,確保成功遷移或是維持現(xiàn)狀的一種屬性。為了保證遷移過程的原子性,需要提供相應(yīng)的機(jī)制,確保成功遷移之后能夠刪除源平臺上的vTPM,而一旦遷移失敗則刪除目標(biāo)平臺上的vTPM。這對于故障恢復(fù)和阻止產(chǎn)生重復(fù)拷貝,非常重要。
2 VM-vTPM遷移協(xié)議設(shè)計(jì)
在開始安全VM-vTPM設(shè)計(jì)之前需要注意兩點(diǎn):(1)本文認(rèn)為協(xié)議涉及到的任一主體(源和目標(biāo)平臺)上都存在一個(gè)遷移控制實(shí)例,用于處理遷移請求。遷移控制器的位置與具體實(shí)現(xiàn)有關(guān),它可以是VMM的一部分,也可以是vTPM管理器或者是Dom0的一部分[8]。(2)為了簡化協(xié)議的設(shè)計(jì)與實(shí)現(xiàn),本文認(rèn)為源平臺和待遷移的VM對目標(biāo)平臺來說都是可信的,如果協(xié)議為平臺配置了動態(tài)度量機(jī)制,可以確保源平臺及VM狀態(tài)的任一非法改變都會被檢測到并且可以得到正確處理,則這個(gè)假設(shè)就是合理的。結(jié)合動態(tài)度量機(jī)制設(shè)計(jì)安全VM-vTPM遷移協(xié)議是下一步要進(jìn)行的工作。
2.1 VM-vTPM遷移協(xié)議概述
VM-vTPM遷移協(xié)議可以劃分為4個(gè)階段:(1)源平臺和目標(biāo)平臺相互認(rèn)證對方的真實(shí)性,并且協(xié)商遷移過程所使用的用于保護(hù)機(jī)密性和完整性的密碼機(jī)制。然后,源平臺發(fā)送證明請求給目標(biāo)平臺,以確保VM-vTPM被遷移到一個(gè)安全可信的平臺。(2)在證實(shí)了目標(biāo)平臺的真實(shí)性和完整性之后,源平臺鎖定VM及vTPM,然后使用先前協(xié)商的密碼機(jī)制安全傳輸VM及其vTPM。(3)目標(biāo)平臺首先檢查接收到的VM及其vTPM的完整性,如果檢查通過,則引進(jìn)該VM-vTPM對(與具體的實(shí)現(xiàn)相關(guān)),并發(fā)送消息告知源平臺已成功接收VM及其vTPM。(4)源平臺刪除被遷移的VM及vTPM以阻止進(jìn)一步的復(fù)制或者其他操作,并且通知目標(biāo)平臺遷移已經(jīng)成功完成,目標(biāo)平臺接收到DONE消息之后恢復(fù)VM及vTPM。至此,遷移過程完成。
2.2 VM-vTPM遷移協(xié)議詳細(xì)設(shè)計(jì)
圖1給出了將一個(gè)VM及其vTPM從一個(gè)平臺(圖中稱之為源平臺)遷移到另外一個(gè)平臺(圖中稱之為目標(biāo)平臺)時(shí)進(jìn)行信息交換的順序。根據(jù)2.1節(jié)劃分的4個(gè)階段詳細(xì)描述各個(gè)階段的信息交互情況。
階段1:安全會話建立
階段1中,源平臺和目標(biāo)平臺相互認(rèn)證,并且協(xié)商用于保護(hù)接下來的數(shù)據(jù)交換的機(jī)密性和完整性的密碼方案。密碼學(xué)上保證機(jī)密性的正確實(shí)施,通常有兩種方法——公鑰加密和對稱密鑰加密。由于在保護(hù)大批量數(shù)據(jù)傳輸?shù)臋C(jī)密性方面,對稱密鑰加密的有效性較高,密碼學(xué)上通常使用公鑰密碼的方法來交換對稱密鑰,然后再將對稱密鑰用于大批量數(shù)據(jù)的加密傳輸。本協(xié)議也使用了此方法。另外,密碼學(xué)上通常使用數(shù)字簽名、經(jīng)過哈希的消息認(rèn)證碼(HMAC)、檢驗(yàn)和等方法來確保傳輸數(shù)據(jù)的完整性,本協(xié)議采用HMAC方法。
本文使用TLS握手協(xié)議為接下來待傳輸?shù)臄?shù)據(jù)獲取密鑰,以確保數(shù)據(jù)的機(jī)密性和完整性。握手協(xié)議將會產(chǎn)生兩個(gè)對稱密鑰——Kenc和Kmac,這兩個(gè)密鑰是由源和目標(biāo)平臺在握手過程中使用交換的信息分別計(jì)算出來的,Kenc用于加密(使用對稱密碼,例如RC4、128 bit的AE3或者3DES),Kmac則用于使用SHA1創(chuàng)建HMACs,以確保完整性。此階段之后每一個(gè)交換消息都將使用Kenc進(jìn)行加密,而HMAC則僅在VM-vTPM傳輸之前與加密報(bào)文相連,源和目標(biāo)平臺僅接受具有有效HMACs的報(bào)文。
階段2:對目標(biāo)平臺的遠(yuǎn)程證明
階段1建立了一個(gè)安全會話通道,用于保護(hù)階段2進(jìn)行交換的所有報(bào)文的機(jī)密性和完整性。由于信任目標(biāo)提供者(源平臺)不會執(zhí)行重放攻擊,因此只需要在證明階段確保報(bào)文的新鮮性以阻止第三方重放舊的配置。
在本階段首先由源平臺向目標(biāo)平臺發(fā)出遠(yuǎn)程證明請求Attest_reqs,要求獲取目標(biāo)平臺的完整性信息,以判斷目標(biāo)平臺的安全等級。為了確保報(bào)文的新鮮性,在階段I之后,源平臺將產(chǎn)生一個(gè)時(shí)間戳Ns1,并且將其與證明請求一起發(fā)送給目標(biāo)平臺。目標(biāo)平臺接收到包含證明請求的報(bào)文之后,首先驗(yàn)證其HMAC的有效性,然后通過vTPM管理模塊與硬件TPM進(jìn)行交互,得到與目標(biāo)平臺TCB相關(guān)聯(lián)的PCRs簽名值,將其與源平臺時(shí)間戳Ns1一起,使用目標(biāo)平臺身份證明密鑰AIKd對其進(jìn)行簽名,并創(chuàng)建一個(gè)新的目標(biāo)平臺時(shí)間戳Nd1,隨此簽名值一起加密發(fā)送回源平臺。源平臺接收到目標(biāo)平臺發(fā)送回來的報(bào)文之后,首先驗(yàn)證HMAC有效性及時(shí)間戳的新鮮性,然后驗(yàn)證目標(biāo)平臺的完整性及安全等級。如果驗(yàn)證通過,則鎖定VM及其vTPM以確保后面要進(jìn)行的工作不會被打斷或者是被進(jìn)一步修改。VM的鎖定由虛擬機(jī)監(jiān)控器實(shí)現(xiàn),vTPM的鎖定則需要由管理員啟動vTPM管理模塊來實(shí)現(xiàn)。例如, 在Xen中就需要由管理員通過TPM_LockInstance命令來啟動vTPM管理模塊實(shí)現(xiàn)對vTPM狀態(tài)的鎖定。與此同時(shí),發(fā)送SVR_ATT_OK報(bào)文給目標(biāo)平臺。否則,發(fā)送SVR_ATT_FAILED給目標(biāo)平臺以告知遷移發(fā)生錯誤,并終止進(jìn)一步的遷移操作。
階段3: vTPM及VM傳輸
需要說明的是,在此階段,vTPM及VM傳輸?shù)木唧w實(shí)施要依賴于監(jiān)控程序及TPM虛擬化的具體實(shí)施方案。但是,不管在哪種情況下,鎖定的VM及其vTPM都是要聯(lián)系在一起的,并且是使用Kenc進(jìn)行加密過的(加密的結(jié)果為EncKenc(VM||vTPM))。結(jié)果報(bào)文與Nd1一起形成m4,然后再使用Kmac對m4進(jìn)行相應(yīng)的HMAC運(yùn)算,并且將運(yùn)算結(jié)果與m4一起傳輸給目標(biāo)平臺。時(shí)間戳Nd1用于阻止重放加密數(shù)據(jù)到目標(biāo)平臺。本協(xié)議中,限制每一次會話只能傳輸一個(gè)VM-vTPM,以避免追蹤不同的VM-vTPM到同一個(gè)物理平臺。
接收到報(bào)文之后,目標(biāo)平臺首先驗(yàn)證HMAC及時(shí)間戳,以確保在傳輸過程中VM及vTPM未受到任何篡改及偽造,若驗(yàn)證成功,則引進(jìn)VM及vTPM,并為其指派需要的資源,且發(fā)送DONE報(bào)文給源平臺,以告知源平臺目標(biāo)平臺已成功引進(jìn)VM及其vTPM。否則,刪除接收到的報(bào)文,并且發(fā)送IMPORT_FAILED給源平臺,以告知源平臺遷移過程中發(fā)生了異常,需要中止此次遷移。
階段4:在源平臺上刪除并且在目標(biāo)平臺上恢復(fù)VM及其vTPM
一旦接收到來自目標(biāo)平臺的DONE報(bào)文,源平臺將會刪除VM及其vTPM。但是,如果它接收的是一個(gè)IMPORT_FAILED報(bào)文,則不會刪除VM及其vTPM。源平臺在刪除VM及其vTPM之后,將會通知目標(biāo)平臺遷移已經(jīng)完成,然后再由目標(biāo)平臺恢復(fù)VM及其vTPM。VM的恢復(fù)由監(jiān)控程序完成,而vTPM的恢復(fù)則依賴于所選擇的TPM虛擬化解決方案,例外如在當(dāng)前的Xen監(jiān)控程序?qū)PM的虛擬化解決方案中,就是通過修改遷移到目標(biāo)平臺上的vTPM實(shí)例狀態(tài)數(shù)據(jù)中的低位PCRs寄存器的值為目標(biāo)平臺本地TCB的配置和屬性信息來恢復(fù)vTPM狀態(tài)的。
2.3 遷移過程中的vTPM密鑰保護(hù)
TPM規(guī)范[2]規(guī)定將TPM中的存儲根密鑰(SRK)作為其密鑰體系的根密鑰,所產(chǎn)生的每一個(gè)密鑰的私鑰都必須由其父密鑰對其進(jìn)行加密。在vTPM的設(shè)計(jì)過程中,需要為vTPM實(shí)例創(chuàng)建一套獨(dú)立的密鑰體系,一方面可以加快密鑰的產(chǎn)生過程,另一方面,也可以簡化vTPM實(shí)例的遷移過程。vTPM密鑰層次的設(shè)計(jì)是TPM虛擬化應(yīng)該考慮的問題,不是本文的重點(diǎn),這里,僅對VM-vTPM遷移過程中的密鑰保護(hù)進(jìn)行相應(yīng)地說明。
在VM-vTPM的遷移過程中,應(yīng)該要確保vTPM密鑰能夠安全可靠地傳輸?shù)侥繕?biāo)平臺,并且能夠在目標(biāo)平臺上使用,以避免在VM-vTPM遷移過程中遭受攻擊者的未授權(quán)修改,進(jìn)而導(dǎo)致目標(biāo)平臺上應(yīng)用程序拒絕vTPM服務(wù)。本文選擇使用一個(gè)受硬件TPM保護(hù)的對稱密鑰對vTPM密鑰體系實(shí)施保護(hù)。在遷移之前首先對這些密鑰層次的哈希值進(jìn)行加密/密封,而在目標(biāo)平臺重新獲取密鑰層次時(shí),通過驗(yàn)證其哈希值,檢測vTPM的密鑰層次是否被篡改,進(jìn)而確保vTPM密鑰層次能夠安全可靠地傳輸?shù)侥繕?biāo)平臺,供目標(biāo)平臺上的應(yīng)用程序使用。
2.4 協(xié)議評估
根據(jù)安全需求,對上面的協(xié)議進(jìn)行了簡單的評估:
(1)VM-vTPM遷移到一個(gè)安全可信的目標(biāo)平臺
協(xié)議通過TLS握手協(xié)議,在源和目標(biāo)平臺之間建立了一個(gè)經(jīng)過認(rèn)證的安全通道,并且在實(shí)際傳輸之前,階段II實(shí)施了對目標(biāo)平臺的遠(yuǎn)程證明,可以阻止將VM-vTPM遷移到一個(gè)不安全的平臺,從而確保VM-vTPM遷移到一個(gè)安全可信的目標(biāo)平臺。
(2)安全VM-vTPM關(guān)聯(lián)
協(xié)議通過在受相同HMAC保護(hù)的同一報(bào)文中同時(shí)加密傳輸VM及其vTPM,實(shí)現(xiàn)了VM及其vTPM的隱式關(guān)聯(lián),保護(hù)了VM-vTPM遷移的機(jī)密性和完整性。
(3)VM-vTPM遷移的機(jī)密性和完整性保護(hù)
協(xié)議在階段1建立安全通道的同時(shí)產(chǎn)生了一個(gè)僅對源和目標(biāo)平臺已知的對稱加密密鑰和HMACs,所有的報(bào)文在實(shí)際傳輸之前均需要使用這個(gè)對稱加密密鑰進(jìn)行加密,從而保證了傳輸數(shù)據(jù)的機(jī)密性。同時(shí),通過使用HMACs可以發(fā)現(xiàn)VM/vTPM在傳輸過程中的任一改變,進(jìn)而確保傳輸數(shù)據(jù)的完整性。
(4)VM-vTPM遷移的抗重放攻擊
協(xié)議中VM-vTPM是加密傳輸?shù)?,攻擊者不能訪問VM/vTPM的內(nèi)容,但可以記錄并在稍后重放同一VM-vTPM對到目標(biāo)平臺。協(xié)議的每一步都使用了時(shí)間戳來保證傳輸報(bào)文的新鮮性,避免了攻擊者在不被檢測到的情況下將一個(gè)舊的加密報(bào)文重放到目標(biāo)平臺,也即阻止了攻擊者的重放攻擊。
(5)遷移的原子性
原子性旨在阻止VM-vTPM副本的產(chǎn)生以及數(shù)據(jù)的丟失。協(xié)議通過在VM-vTPM成功遷移之后刪除源平臺上的VM-vTPM對,避免了產(chǎn)生VM-vTPM的多余拷貝。另外,通過在遷移失敗的情況下刪除目標(biāo)平臺上接收到的VM-vTPM對并提供相應(yīng)的恢復(fù)機(jī)制,避免了數(shù)據(jù)的丟失,進(jìn)而保證了遷移過程的原子性。
3 基于Xen的VM-vTPM遷移協(xié)議實(shí)現(xiàn)
本文選擇Xen監(jiān)控程序來探討VM-vTPM遷移協(xié)議的實(shí)現(xiàn),原因是:(1) Xen是開源的,它具有一個(gè)良好的支持框架,在研究項(xiàng)目中經(jīng)常使用;(2) Xen支持VM遷移并且現(xiàn)有的Xen已經(jīng)缺省配置了vTPM體系結(jié)構(gòu)。
本文選擇在VM內(nèi)運(yùn)行vTPM實(shí)例,這種方法比在Xen的Dom0內(nèi)運(yùn)行vTPM實(shí)例的安全性要高,并且可以避免VM-vTPM遷移后重新關(guān)聯(lián)VM及其vTPM所引發(fā)的身份沖突問題。而且,簡化了Dom0的代碼復(fù)雜度,提高了Xen的執(zhí)行效率。
在遷移源和目標(biāo)平臺之間,本文使用OpenSSL創(chuàng)建一個(gè)安全的連接,并且在源和目標(biāo)平臺上都安裝了一個(gè)自我簽名的CA證書,用于簽名其公鑰證書,以實(shí)現(xiàn)源和目標(biāo)平臺的雙向認(rèn)證,并且產(chǎn)生相應(yīng)的主密鑰和會話密鑰。
由于目前尚不能獲取由隱私CA和有效PCR值組成的遠(yuǎn)程證明框架,因此,本文選擇使用一個(gè)測試隱私CA和PCR一起來實(shí)現(xiàn)目標(biāo)平臺的遠(yuǎn)程證明。
至于VM-vTPM的綁定,協(xié)議規(guī)定一次會話僅傳輸一個(gè)VM-vTPM對。
本文比較了Xen原有vTPM遷移協(xié)議與本文所提出的安全VM-vTPM遷移協(xié)議在源和目標(biāo)平臺上的性能開支,如表1所示。
相比較于Xen原有的vTPM遷移協(xié)議,本文的安全VM-vTPM遷移協(xié)議所消耗的總遷移時(shí)間比原有的Xen遷移所消耗的時(shí)間多出6 s~11 s,這個(gè)性能開支很可能是由于在遷移之前建立安全遷移通道所引發(fā)的[9]。下一步,將具體分析協(xié)議各階段消耗的時(shí)間,并且考慮不同的密碼算法以及不同的vTPM設(shè)計(jì)方案對遷移協(xié)議的性能影響,以期在確保協(xié)議安全的同時(shí)盡可能地降低時(shí)間開銷。
參考文獻(xiàn)
[1] GARFINKEL T, MENDEL R. When virtual is harder than real: security challenges in virtual machine based computing environments[C]. Proc of the 10th Workshop on Hot Topics in Operating Systems. Berkeley, CA:USENIX Association, 2005:210-217.
[2] TCG software stack specifications V1.2[DB/OL].http://www.trustedcomputing.com/.
[3] SAPUNTZAKIS C P, CHANDRA R. Optimizing the migration of virtual computers[C]. Proceedings of the 5th symposium on os security, 2002:377-390.
[4] BERGER S, KENNETH. vTPM: virtualizing the trusted platform module[C]. Proceedings of the 15th conference onUSENIX Security Symposium, 2006:305-320.
[5] STUMPF F, ECKERT C. Enhancing trusted platform modules with hardware-based virtualization techniques[C]. Proceedings of the 2008 Second International Conference on Emerging Security Information, p1-9, 2008.
[6] Xen的源碼[OB/OL]. http://xenbits.xensource.com/.
[7] SADEGHI A R, STUBLE C. Property-based tpm virtualization[C]. Proceedings of the 11th international conference on Information Security, 2008:1-16.
[8] Chen Liqun, LANDFERMANN R, STUBLE C. A protocol for property-based attestation[C]. Proceedings of the first ACM workshop on Scable trusted computing, 2006:7-16.
[9] STUMPF F, BENZ M, ECKERT C. An approach to a Trustworthy System Architecture Using Virtualization[C]. ATC 2007, 2007:191-202.