王偉,陳興蜀,蘭曉,金鑫
?
基于VMI的虛擬機遠程證明方案
王偉1,2,陳興蜀2,3,蘭曉2,金鑫1,2
(1. 四川大學計算機學院,四川 成都 610065;2. 四川大學網(wǎng)絡空間安全研究院,四川 成都 610065;3. 四川大學網(wǎng)絡空間安全學院,四川 成都 610065)
可信計算組織(TCG,trusted computing group)提出的虛擬機遠程證明方案可以為云計算平臺提供虛擬機完整性驗證服務,而直接使用TCG提出的方案性能較低,并且會受到布谷鳥攻擊的威脅。利用虛擬機自省技術(VMI,virtual machine introspection)設計了新的虛擬機遠程證明方案。通過在虛擬機監(jiān)視器(VMM,virtual machine monitor)中獲取虛擬機遠程驗證證據(jù)的方法消除在虛擬機內(nèi)執(zhí)行布谷鳥攻擊的路徑,利用物理可信平臺模塊(TPM,trusted platform module)保證虛擬機遠程驗證證據(jù)的完整性,減少了身份證明密鑰(AIK,attestation identity key)證書的產(chǎn)生數(shù)量,降低了私有證書頒發(fā)機構的負載。實驗表明,方案可以有效驗證虛擬機的完整性狀態(tài),在虛擬機數(shù)量較多的情況下,性能優(yōu)于TCG提出的虛擬機遠程證明方案。
虛擬機遠程證明;布谷鳥攻擊;虛擬機自省技術;可信平臺模塊;身份證明密鑰
隨著云計算的廣泛應用,虛擬機的完整性狀態(tài)受到越來越多的關注。可信計算技術[1]可以為云計算提供可靠的運行環(huán)境完整性解決方案。然而,傳統(tǒng)的可信計算技術無法驗證虛擬機狀態(tài)的完整性,于是Berger等[2]提出了虛擬可信計算技術。
可信計算組織(TCG,trusted computing group)提出了基于可信平臺模塊(TPM,trusted platform module)的遠程證明機制,并制定了虛擬可信平臺規(guī)范,其中包括基于虛擬可信平臺模塊(vTPM,virtual trusted platform module)的虛擬機遠程證明機制。
文獻[3]提出直接使用TCG的遠程證明協(xié)議會受到偽裝攻擊的威脅,研究該攻擊路徑并改進了遠程證明協(xié)議;文獻[4]首次提出布谷鳥攻擊模型,與文獻[3]提到的攻擊原理類似;文獻[5]利用串空間模型對遠程證明協(xié)議進行分析,對布谷鳥攻擊進行了實驗驗證;文獻[6]提出用于檢測布谷鳥攻擊的時序模型,但每次遠程證明需要重復進行TPM_Quote運算,消耗物理TPM芯片計算資源;文獻[7]提出5條設計原則用于指導遠程證明系統(tǒng)的開發(fā);文獻[8]以用戶空間字符設備(CUSE,character device in user space)模擬TPM,向虛擬機提供vTPM設備,基于TCG的遠程證明方案提出大規(guī)模虛擬機遠程證明模型,但沒有考慮布谷鳥攻擊的影響;文獻[9]提出基于屬性的虛擬機遠程證明方案,利用虛擬機自省(VMI,virtual machine introspection)技術獲取虛擬機的特定屬性;文獻[10]針對TPM性能瓶頸導致的遠程證明協(xié)議只支持有限數(shù)量虛擬機的問題,提出了基于虛擬機監(jiān)視器(VMM,virtual machine monitor)的遠程證明設計框架,但沒有給出具體的實現(xiàn)方案,并且設計框架中忽略了虛擬機和遠程驗證證據(jù)之間的關聯(lián)性。
針對以上問題,本文基于VMI技術設計了虛擬機遠程證明方案,主要貢獻如下。
1) 利用VMI技術在VMM中獲取虛擬機遠程驗證證據(jù),并與虛擬機進行有效綁定。
2) 重新設計了遠程證明協(xié)議的證據(jù)收集階段,利用物理TPM保證虛擬機遠程驗證證據(jù)的完整性。
3) 實現(xiàn)了原型系統(tǒng),證明該方案可以有效驗證虛擬機的運行狀態(tài)、提高虛擬機遠程證明的性能、消除虛擬機遠程證明過程中在虛擬機內(nèi)執(zhí)行布谷鳥攻擊的路徑。
自省是在虛擬機外部對虛擬機內(nèi)部軟件進行分析和監(jiān)控的一類技術,Garfinkel等[11]第一次提出虛擬機自省的概念,并利用VMI技術構建了基于Hypervisor的入侵檢測系統(tǒng)。
VMI技術可以在Hypervisor層訪問虛擬機的內(nèi)存和硬件狀態(tài)信息,然而這些信息需要經(jīng)過高級語義的重構才能夠反映虛擬機內(nèi)部軟件的狀態(tài)和行為,該問題被稱為語義鴻溝。根據(jù)解決語義鴻溝問題所使用方法的不同,文獻[12]將現(xiàn)有的VMI技術分為4類:基于目標虛擬機的依賴型自省、基于安全虛擬機的依賴型自省、基于軟件結(jié)構知識的獨立型自省和基于硬件結(jié)構知識的獨立型自省。KVM下主流的VMI開源項目LibVMI[13]主要借助于虛擬機的內(nèi)核符號表及內(nèi)核重要結(jié)構體的成員偏移量來解決語義鴻溝問題,屬于基于軟件結(jié)構知識的獨立型自省方式,其可以支持簡單的虛擬機內(nèi)部狀態(tài)的監(jiān)控,如進程鏈表、內(nèi)核模塊鏈表等。通過擴展LibVMI擁有的軟件結(jié)構知識,增強LibVMI對于二進制內(nèi)存的高級語義翻譯能力,可以得到更多的虛擬機內(nèi)部的實時狀態(tài)信息。
TCG提出的虛擬機遠程證明機制分為兩部分:驗證虛擬機內(nèi)部狀態(tài)、驗證虛擬機監(jiān)視器的狀態(tài),基本的運行流程如圖1所示。
協(xié)議運行前,宿主機和虛擬機分別向私有證書頒發(fā)機構申請身份證明密鑰(AIK,attestation identity key)證書和虛擬機身份證明密鑰(vAIK,virtual machine′s attestation identity key)證書。
1) 挑戰(zhàn)者向某個虛擬機請求完整性驗證證據(jù),并傳輸隨機值GuestNonce,位于虛擬機內(nèi)部的遠程證明代理RA_Agent接收該請求。

圖1 虛擬機遠程證明
1a) RA_Agent采集完整性度量架構(IMA,integrity measurement architecture)模塊的度量日志imaSML。
1b) RA_Agent采集SeaBIOS和TrustedGrub的度量日志biosSML。
1c) RA_Agent采集vPCR的值,并利用本地的vTPM執(zhí)行TPM_Quote操作,即使用vAIK證書對GuestNonce和vPCR值進行簽名。
2) RA_Agent將采集的完整性證據(jù)發(fā)送給挑戰(zhàn)者,然后挑戰(zhàn)者依次驗證vPCR完整性、imaSML完整性、biosSML完整性,進而根據(jù)具體的日志內(nèi)容判定虛擬機當前狀態(tài)。
3) 挑戰(zhàn)者向虛擬機所在的宿主機請求VMM的完整性證據(jù),并傳輸隨機值HostNonce,位于宿主機內(nèi)部的遠程證明代理RA_Agent接收該請求。
3a) RA_Agent采集IMA的度量日志imaSML。
3b) RA_Agent采集BIOS和TrustedGrub的度量日志biosSML。
3c) RA_Agent采集相應PCR的值,并利用本地的TPM執(zhí)行TPM_Quote操作,即使用AIK證書對HostNonce和PCR值進行簽名。
4) RA_Agent將采集的VMM完整性證據(jù)發(fā)送給挑戰(zhàn)者,然后挑戰(zhàn)者依次驗證PCR完整性、imaSML完整性、biosSML完整性,進而根據(jù)具體的日志內(nèi)容判定VMM當前狀態(tài)。
文獻[4]首次提出布谷鳥攻擊,它是一種針對遠程證明過程的中間人攻擊方式,其在虛擬機遠程證明過程中的利用方式如圖2所示,流程如下:1) 攻擊者申請一臺正常的虛擬機C,入侵目標虛擬機M,并劫持虛擬機M上的遠程證明代理軟件RA_Agent;2) 當挑戰(zhàn)者對虛擬機M進行遠程證明時,虛擬機M上的RA_Agent冒充挑戰(zhàn)者將請求轉(zhuǎn)發(fā)給正常虛擬機C,利用正常虛擬機C的完整性證據(jù)來欺騙挑戰(zhàn)者;3) 挑戰(zhàn)者把正常虛擬機C的完整性證據(jù)當成被劫持虛擬機M的完整性證據(jù),認為虛擬機M的狀態(tài)是正常的。
本文基于VMI技術對于虛擬機的遠程證明過程進行了改進,主要思路是:將虛擬機內(nèi)部的遠程證明代理工作下移到宿主機的VMM中,利用VMI技術實現(xiàn),如圖3所示,VMI_Agent就是在VMM中完成此工作的代理。
具體的運行過程如下。
1) 挑戰(zhàn)者向宿主機請求虛擬機和VMM的完整性證據(jù),并傳輸隨機值Nonce,位于宿主機上的RA_Agent接收該請求。
1a) RA_Agent從VMI_Agent處獲取虛擬機的完整性證據(jù)。
① VMI_Agent通過VMI技術獲取虛擬機內(nèi)IMA的度量日志imaSML,獲取該日志的具體流程將在3.3.2節(jié)給出。

圖2 布谷鳥攻擊

圖3 總體設計
② VMI_Agent通過VMI技術獲取虛擬機內(nèi)SeaBIOS和TrustedGrub的度量日志biosSML,獲取該日志的具體流程將在3.3.1節(jié)給出。
③ VMI_Agent截獲虛擬機和vTPM的交互過程,采集vPCR值,獲取vPCR值的具體流程將在3.2節(jié)給出。
1b) RA_Agent獲取宿主機IMA的度量日志imaSML。
1c) RA_Agent獲取宿主機BIOS和TrustedGrub的度量日志biosSML。
1d) RA_Agent采集TPM的PCR值,并利用本地的TPM芯片執(zhí)行TPM_Quote操作,即使用AIK證書對Nonce、PCR值和vPCR值進行簽名,具體流程將在3.4節(jié)給出。
2) RA_Agent將完整性證據(jù)發(fā)送給挑戰(zhàn)者,然后挑戰(zhàn)者驗證證據(jù)完整性,并根據(jù)遠程驗證證據(jù)判定VMM狀態(tài)、虛擬機狀態(tài)。
正常虛擬機和其vTPM交互的過程如圖4(a)所示,虛擬機內(nèi)核中的TPM_TIS驅(qū)動與VMM中實現(xiàn)的vTPM后端設備進行交互,通過vTPM后端驅(qū)動向虛擬機提供的接口發(fā)送命令和接收響應;同時虛擬機內(nèi)核中的TPM_TIS驅(qū)動向虛擬機用戶空間提供/dev/tpm0接口,以供用戶空間的應用程序使用VMM中實現(xiàn)的vTPM后端設備。
如圖4(b)所示,VMI_Agent在VMM層截獲虛擬機內(nèi)核的TPM_TIS驅(qū)動和vTPM后端設備交互的消息,然后判斷當前執(zhí)行的TPM命令,如果是vPCR相關的操作,VMI_Agent則通過執(zhí)行TPM_ReadPCR操作更新其維護的vPCR列表。具體的執(zhí)行流程如下。
1) 虛擬機內(nèi)應用程序向TPM_TIS驅(qū)動發(fā)送TPM命令流Cnormal。
2) VMI_Agent截獲TPM_TIS驅(qū)動發(fā)送給vTPM后端驅(qū)動的Cnormal,然后解析Cnormal,如果該命令與vPCR操作相關,則標記ReadAgain為True,否則標記為False。

圖4 虛擬機vPCR的獲取
3) VMI_Agent將Cnormal發(fā)送給vTPM后端設備執(zhí)行。
4) VMI_Agent截獲vTPM后端設備返回給TPM_TIS的響應流Rnormal。
5) VMI_Agent判斷ReadAgain的值,如果為True,則構造一個TPM_ReadPCR的命令Creadpcr,并發(fā)送給vTPM后端設備;如果為False,則進入步驟7)。
6) VMI_Agent接收vTPM后端設備的響應流Rreadpcr,解析Rreadpcr,并更新其維護的vPCR列表。
7) VMI_Agent將響應流Rnormal返回給虛擬機內(nèi)核的TPM_TIS驅(qū)動。
3.3.1 獲取虛擬機內(nèi)的biosSML日志
biosSML日志是BIOS用來保存度量歷史記錄的日志,同時TrustedGrub利用相應的中斷向該日志中寫入自身的度量歷史記錄,因此,該日志記錄了BIOS和TrustedGrub這2個組件的度量內(nèi)容。BIOS將計算機主板上所有硬件的信息以高級配置和電源管理接口(ACPI,advancedonfiguration and power management interface)表的形式提供上層操作系統(tǒng),每個ACPI表都有特定的標識符。SeaBIOS是KVM虛擬化平臺中QEMU用來模擬BIOS的開源項目,其集成了對于vTPM的支持,而且按照TCG規(guī)定的ACPI表格式[14]向上層虛擬機提供關于vTPM硬件相關的信息,如廠商、版本、biosSML度量日志起始地址和長度等。目前,SeaBIOS使用TPM1.2客戶端版本的ACPI表,其標識符為“TCPA”。
從虛擬機的角度來看,SeaBIOS提供的ACPI表之間是有關聯(lián)的,如圖5所示,可以根據(jù)ACPI表的根來檢索其他ACPI表,而該ACPI表的根則由虛擬機內(nèi)核符號表中導出的符號acpi_gbl_ root_table_list來指定。
biosSML日志的獲取過程如下。
1) VMI_Agent根據(jù)內(nèi)核符號acpi_gbl_root_ table_list的地址讀取ACPI表的根所在結(jié)構體rootACPI的內(nèi)容。
2) VMI_Agent解析結(jié)構體rootACPI的內(nèi)容,獲取ACPI表數(shù)組的起始地址SACPI_array。
3) VMI_Agent依次讀取從地址SACPI_array開始的每個ACPI表的內(nèi)容,假設第個ACPI表的內(nèi)容是C。
4) VMI_Agent解析當前內(nèi)容C,判斷其標識符是不是“TCPA”,如果是,則按照TCG規(guī)定的TPM的ACPI表格式解析當前內(nèi)容C,取出biosSML日志在虛擬機物理內(nèi)存中的地址AddrbiosSML和日志最大長度MaxLbiosSML,進入步驟5),否則,返回步驟3)。
5) VMI_Agent訪問從虛擬機物理地址AddrbiosSML開始的長度為MaxLbiosSML的一段內(nèi)存區(qū)域MembiosSML,按照日志的格式解析MembiosSML,得到虛擬機內(nèi)部biosSML度量日志。
3.3.2 獲取虛擬機內(nèi)的imaSML日志

圖5 biosSML日志的獲取
IMA是Linux內(nèi)核的完整性度量架構,當加載應用程序、動態(tài)鏈接庫或者內(nèi)核模塊時,IMA對加載對象的重要配置和代碼段進行度量,將度量結(jié)果擴展到TPM的PCR10上,并將度量內(nèi)容記錄到日志imaSML中,用于遠程證明。
imaSML是一種特殊的日志文件,其本質(zhì)上是IMA提供給上層應用程序的日志內(nèi)容讀取接口,真實的內(nèi)容被存儲在IMA維護的一段內(nèi)存中。IMA使用鏈表來維護度量日志的內(nèi)容,日志的每一條度量記錄為鏈表上的一個節(jié)點,整個鏈表可以通過內(nèi)核中導出的符號ima_measurements來索引。
imaSML日志的獲取過程如下。
1) VMI_Agent根據(jù)內(nèi)核符號ima_ measurements讀取該符號所在結(jié)構體Mima的內(nèi)容。
2) VMI_Agent解析結(jié)構體Mima的內(nèi)容,獲取日志鏈表的表頭節(jié)點地址HimaSML。
3) VMI_Agent依次讀取HimaSML開始的日志鏈表上的每一個節(jié)點,直至鏈表結(jié)尾,假設當前讀取的第個節(jié)點的內(nèi)容為C。
4) VMI_Agent解析內(nèi)容C,然后獲取當前日志記錄在虛擬機內(nèi)核地址空間中的位置Addr。

圖6 imaSML日志的獲取
5) VMI_Agent讀取虛擬機內(nèi)核地址空間中地址Addr開始的一段內(nèi)存Mem。
6) VMI_Agent解析獲得的內(nèi)存Mem,根據(jù)解析的結(jié)果更新其維護的imaSML日志列表,然后返回步驟3) 。
遠程證明協(xié)議是挑戰(zhàn)者與遠程證明代理交互所遵循的規(guī)范,可以分為兩部分:證據(jù)收集階段、證據(jù)驗證階段。由于本文方案的證據(jù)收集方法不同于原本TCG的虛擬機遠程證明方案,所以需要修改TCG提出的遠程證明協(xié)議的證據(jù)收集階段(如圖7所示)來規(guī)范本文方案各個組件的工作方式。
協(xié)議運行前,宿主機向私有證書頒發(fā)機構申請AIK證書。
操作原語設定:Challenger代表挑戰(zhàn)者,RA_Agent代表宿主機的認證代理,VMI_Agent代表虛擬機證據(jù)收集代理,TPM代表宿主機上的物理可信平臺模塊,Hash代表一種散列算法,Sig代表一種簽名算法,Ver代表一種簽名驗證算法,CertAIK代表宿主機申請的身份認證密鑰證書,KAIK代表宿主機TPM生成的身份認證密鑰。
具體交互過程如下:
1) Challenger->RA_Agent:Nonce;
2) RA_Agent->VMI_Agent:vm_i || Nonce,其中,∈(0,],若>,則進入步驟7);
3) VMI_Agent->RA_Agent:vPCR || vSML || Hvm_i|| Hash(UUIDvm_i),其中,Hvm_i= Hash (vPCR0|| vPCR1|| … || vPCRM|| Hash(UUIDvm_i) || Nonce),M∈[0, 24];
4) RA_Agent->TPM:PCRindex|| Hvm_i;
5) TPM->RA_Agent:vm_i_SAIK|| Hvm_i,vm_i_SAIK= TPM_Quote(PCRindex, Hvm_i) = Sig(KAIK, Hash (PCRindex|| Hvm_i) );
6) RA_Agent:P= vPCR || vSML || Hash (UUIDvm_i) || vm_i_SAIK,然后i++,進入步驟2);
7) RA_Agent->TPM:PCRindex|| Nonce;
8) TPM->RA_Agent:SAIK|| Nonce,SAIK= TPM_Quote(PCRindex, Nonce) = Sig(KAIK, Hash (PCRindex|| Nonce) );
9) RA_Agent:P0= PCR || SML || Nonce || SAIK,msg = P0|| P1|| … || P;
10) RA_Agent->Challenger:msg;
11) Challenger:Ver(CertAIK, P),其中,∈[0,],然后進入證據(jù)驗證階段。
接下來對上述每一步進行詳細解釋,如下。
步驟1:挑戰(zhàn)者向宿主機上的認證代理RA_ Agent發(fā)送隨機值Nonce。
步驟2:RA_Agent向VMI_Agent發(fā)送虛擬機編號vm_i和Nonce,其中,∈(0,],為一次遠程證明可以驗證的虛擬機個數(shù)。
步驟3:VMI_Agent采集編號為vm_i的虛擬機的vPCR、vSML,并計算該虛擬機在云平臺上唯一標識的散列值Hash(UUIDvm_i),避免直接使用UUID泄露虛擬機身份,然后根據(jù)vPCR和Nonce計算得到Hvm_i,用以將遠程證明證據(jù)和對應虛擬機進行有效綁定,計算方法為Hvm_i= Hash (vPCR0|| vPCR1|| … || vPCRM|| Hash(UUIDvm_i) || Nonce),其中,為編號vm_i的虛擬機的vPCR個數(shù),最后將{vPCR || vSML || Hvm_i|| Hash(UUIDvm_i)}返回給RA_Agent。

圖7 虛擬機遠程證明協(xié)議證據(jù)收集階段
步驟4:RA_Agent給TPM發(fā)送命令TPM_ Quote(PCRindex, Hvm_i),利用AIK密鑰對Hvm_i和當前宿主機的PCRindex值進行簽名,利用物理TPM保證虛擬機遠程驗證證據(jù)的完整性。
步驟5:TPM將簽名結(jié)果{vm_i_SAIK|| Hvm_i}返回給RA_Agent。
步驟6:RA_Agent打包編號vm_i的虛擬機的完整性證據(jù)P= {vPCR || vSML || Hash(UUIDvm_i) || vm_i_SAIK},然后自增,并判斷和的大小關系,如果>,則進入步驟7,否則進入步驟2。
步驟7:RA_Agent向TPM發(fā)送命令TPM_ Quote(PCRindex, Nonce),利用AIK密鑰對Nonce和當前宿主機的PCRindex值進行簽名。
步驟8:TPM返回簽名結(jié)果{SAIK|| Nonce}。
步驟9:RA_Agent打包宿主機上VMM的完整性證據(jù)P0= {PCR || SML || Nonce || SAIK},然后打包虛擬機和VMM的完整性證據(jù)msg = {P0|| P1|| … || P}。
步驟10:RA_Agent將msg發(fā)送給挑戰(zhàn)者。
步驟11:挑戰(zhàn)者首先根據(jù)AIK證書驗證msg中每個P(∈[0,])的完整性,然后進入證據(jù)驗證階段,分別根據(jù)VMM和每個虛擬機的度量日志和PCR/vPCR值判定各自的當前狀態(tài),并生成虛擬機遠程證明報告。
本文提出基于VMI的虛擬機遠程證明方案,首先將位于虛擬機內(nèi)部的遠程證明代理的工作放到VMM中完成,然后改進傳統(tǒng)的遠程證明協(xié)議以保證宿主機中采集到的虛擬機和VMM的證據(jù)完整性,該方案可以有效抵抗在虛擬機內(nèi)部執(zhí)行的布谷鳥攻擊,并且減少遠程證明過程中涉及的AIK證書的生成數(shù)量,降低私有證書頒發(fā)機構的負載。
如圖2所示,布谷鳥攻擊之所以會成功,是因為攻擊者修改了目標虛擬機M上的遠程證明代理程序,將挑戰(zhàn)者引導向攻擊者自己的正常虛擬機C,成功欺騙挑戰(zhàn)者。而本文方案在宿主機VMM中借助VMI技術獲取虛擬機的度量日志和vPCR值,不需要在虛擬機內(nèi)部部署遠程證明代理,因此,在虛擬機內(nèi)部執(zhí)行布谷鳥攻擊的這條攻擊路徑是不存在的。
如果攻擊者可以入侵宿主機,那么針對宿主機遠程證明過程的布谷鳥攻擊是可以成功的,本文建議使用文獻[3]所提出的方法增強宿主機遠程證明過程的安全。
在TCG提出的虛擬機遠程證明過程中,需要依次對虛擬機和VMM進行遠程證明,而且每次證明都會由私有證書頒發(fā)機構為虛擬機和VMM分別頒發(fā)一個臨時的vAIK/AIK證書,如果同時對多個虛擬機進行遠程證明,會導致私有證書頒發(fā)機構的負載過大甚至產(chǎn)生拒絕服務攻擊。本文方案將虛擬機的完整性證據(jù)采集代理放到VMM中執(zhí)行,取消了虛擬機遠程證明過程中私有證書頒發(fā)機構為虛擬機頒發(fā)vAIK證書的步驟,減少了遠程證明過程中產(chǎn)生AIK證書的數(shù)量,降低了虛擬機遠程證明過程中私有證書頒發(fā)機構的負載以及對私有證書頒發(fā)機構實施拒絕服務攻擊產(chǎn)生的風險。
本文首先在KVM虛擬化平臺上為每一個虛擬機提供基于Libtpms[15]函數(shù)庫的vTPM設備,然后在VMM中實現(xiàn)VMI_Agent,通過修改IBM的遠程證明開源項目TPM 2.0 Attestation Client Server實現(xiàn)RA_Agent和挑戰(zhàn)者,最后以表1的配置為基礎環(huán)境設計并實現(xiàn)了本文方案的原型系統(tǒng)。
表1 系統(tǒng)配置

功能測試主要測試基于VMI的虛擬機遠程證明方案的有效性。
本文對IBM的遠程證明開源項目進行了修改,與原系統(tǒng)相比,修改后的系統(tǒng)調(diào)整了宿主機視圖(如圖8(a)所示),并且增加了虛擬機視圖(如圖8(b)所示),然后通過部署在控制節(jié)點上的挑戰(zhàn)者向計算節(jié)點發(fā)起虛擬機遠程證明請求。圖8(a)宿主機視圖展示了兩臺計算節(jié)點的驗證結(jié)果都是正常的,驗證結(jié)果的最后一個表項“VMs′ Reports”鏈接了對該計算節(jié)點上運行的虛擬機的遠程證明結(jié)果,表項的值為虛擬機的個數(shù)。圖8(b)虛擬機視圖展示了計算節(jié)點computer1上虛擬機的遠程證明結(jié)果,虛擬機視圖的驗證內(nèi)容和宿主機視圖是一致的,不同的是虛擬機視圖中驗證結(jié)果的唯一標識是虛擬機UUID的散列值。
性能測試主要針對2種方案的比較:基于VMI的虛擬機遠程證明方案和TCG提出的虛擬機遠程證明方案。本文在計算節(jié)點設置10組運行不同數(shù)量虛擬機的場景,對于每個場景分別實施2種方案的遠程證明,在特定場景下對每個方案分別進行20次遠程證明,最后計算耗時平均值,結(jié)果如圖9所示。
隨著虛擬機數(shù)量的增加,2種遠程證明方案的耗時均呈線性增長的趨勢。假設2種方案耗時均滿足函數(shù)=+,其中,是虛擬機個數(shù),是遠程證明的耗時,、為參數(shù)。通過線性回歸擬合可得,基于VMI的虛擬機遠程證明方案耗時的參數(shù)為1 287.55,TCG虛擬機遠程證明方案耗時的參數(shù)為3 148.44,由此可見,當比較大時,本文方案性能較好。

圖8 功能測試

圖9 性能測試
表2給出了一次完整的虛擬機遠程證明過程中不同方案的通信開銷、可以驗證的虛擬機數(shù)量、TPM_Quote執(zhí)行次數(shù)和產(chǎn)生的AIK證書數(shù)量。其中,在某個遠程證明協(xié)議內(nèi)部發(fā)送和接收一次消息稱為一次交互(連接建立和釋放時傳輸?shù)南⒉挥嬎悖潜疚姆桨敢淮芜h程證明可以驗證的虛擬機個數(shù)。TCG RA是TCG提出的虛擬機遠程證明方案,RIRP RA是文獻[3]提出的抵抗布谷鳥攻擊頑健性的遠程證明方案,VMI RA是本文提出的基于VMI的虛擬機遠程證明方案。
表2 方案性能對比

TCG RA在一次虛擬機遠程證明過程中,分別對虛擬機、VMM進行一次遠程證明,因此需要2輪交互,每一輪都需要1個AIK證書和1次TPM_Quote操作,1次虛擬機遠程證明過程只能驗證1臺虛擬機狀態(tài);RIRP RA為了解決布谷鳥攻擊的威脅,在對虛擬機、VMM進行遠程證明時增加了Diffie-Hellman密鑰交換協(xié)議,因此需要4輪交互,TPM_Quote操作次數(shù)和AIK證書數(shù)量與TCG RA一樣,一次虛擬機遠程證明過程也只能驗證1臺虛擬機狀態(tài);本文方案在一次虛擬機遠程證明過程中,通過VMI_Agent得到了虛擬機的遠程驗證證據(jù),因此只需要1輪交互、1個AIK證書,由于一次虛擬機遠程證明過程可以驗證臺虛擬機狀態(tài),而每個虛擬機遠程驗證證據(jù)都需要計算一次TPM_Quote,再加上對于宿主機的遠程證明過程,共需要+1次TPM_Quote操作。

為了消除在虛擬機遠程證明過程中產(chǎn)生的布谷鳥攻擊,本文提出利用VMI技術在VMM中獲取虛擬機遠程驗證證據(jù)的方法,重新設計了虛擬機遠程證明協(xié)議的證據(jù)收集階段。該方案可以消除虛擬機遠程證明過程中在虛擬機內(nèi)執(zhí)行布谷鳥攻擊的路徑,減少遠程證明過程中產(chǎn)生的AIK證書數(shù)量,進而降低私有證書頒發(fā)機構的負載,而且通過對原型系統(tǒng)的測試與分析可知,在虛擬機數(shù)量較多的情況下,本文方案的性能優(yōu)于TCG提出的虛擬機遠程證明方案。
[1] 馮登國, 秦宇, 汪丹, 等. 可信計算技術研究[J]. 計算機研究與發(fā)展, 2011, 48(8): 1332-1349.FENG D G, QIN Y, WANG D, et al. Research on trusted computing technology[J]. Journal of Computer Research and Development, 2011, 48(8):1332-1349.
[2] BERGER S, CáCERES R, GOLDMAN K A, et al. vTPM: virtualizing the trusted platform module[C]//The 15th Conference on USENIX Security Symposium. 2006: 305-320.
[3] STUMPF F, TAFRESCHI O, R?DER P, et al. A robust integrity reporting protocol for remote attestation[C]//The 2nd Work shop on Advances in Trusted Computing. Tokey, Japan, 2006.
[4] PARNO B. Bootstrapping trust in a trusted platform[C]//The USENIX Workshop on Hot Topics in Security. 2008.
[5] 馮偉, 馮登國. 基于串空間的可信計算協(xié)議分析[J]. 計算機學報, 2015, 38(4): 701-706.FENG W, FENG D G. Analyzing trusted computing protocol based on the strand space model[J]. Chinese Journal of Computers, 2015, 38(4): 701-706.
[6] FINK R A, SHERMAN A T, MITCHELL A O, et al. Catching the cuckoo: verifying TPM proximity using a quote timing side- channel[C]// The Trust and Trustworthy Computing. 2011: 294-301.
[7] COKER G, GUTTMAN J, LOSCOCCO P, et al. Principles of remote attestation[C]//The International Journal of Information Security. 2010: 63-81.
[8] BERGER S, GOLDMAN K, PENDARAKIS D, et al. Scalable attestation: a step toward secure and trusted clouds[C]//The IEEE International Conference on Cloud Engineering. 2015: 185-194.
[9] ZHANG T, B. LEE R. Cloud Monatt: an architecture for security health monitoring and attestation of virtual machines in cloud computing[C]//The IEEE 42nd Annual International Symposium on Computer Architecture (ISCA). 2015: 362-374.
[10] LAUER H, KUNTZE N. Hypervisor-based attestation of virtual environments[C]//The Ubiquitous Intelligence Computing Advanced and Trusted Computing Scalable Computing and Communications Cloud and Big Data Computing Internet of People and Smart World Congress. 2016:333-340.
[11] GARFINKEL T, ROSENBLUM M. A Virtual machine introspection based architecture for intrusion detection[C]//The Network and Distributed Systems Security Symposium. 2003:191-206.
[12] 李保琿, 方濱興, 徐克付, 等. 虛擬機自省技術研究與應用進展[J].軟件學報, 2016, 27(6): 1384-1401.LI B H, FANG B X, XU K F, et al. Research and application progress of virtual machine introspection technology[J]. Journal of Software, 2016, 27(6):1384-1401.
[13] 彭春洪. 基于KVM虛擬機的惡意行為檢測系統(tǒng)設計與實現(xiàn)[D]. 成都: 電子科技大學, 2015.PENG C H. The design and implementation of the malicious behavior detecting system based on KVM virtual machine[D]. Chengdu: University of Electronic Science and Technology of China, 2015.
[14] DUFLOT L, LEVILLAIN O, MORIN B. ACPI: design principles and concerns[C]//The 2nd International Conference on Trusted Computing. 2009: 14-28.
[15] HENDERSON A, YIN H, HAN H, et al. VDF: targeted evolutionary fuzz testing of virtual devices[C]//The International Symposium on Research in Attacks, Intrusions, and Defenses. 2017: 3-25.
VMI-based virtual machine remote attestation scheme
WANG Wei1,2, CHEN Xingshu2,3, LAN Xiao2, JIN Xin1,2
1. College of Computer Science, Sichuan University, Chengdu 610065, China 2. Cybersecurity Research Institute, Sichuan University, Chengdu 610065, China 3. College of Cybersecurity, Sichuan University, Chengdu 610065, China
The virtual machine attestation scheme proposed by trusted computing group (TCG) can provide attestation service of virtual machine for cloud computing. However, the service using the scheme proposed by the TCG directly would be threatened by the cuckoo attack and its performance would be lower. Therefore, a new virtual machine remote attestation scheme based on virtual machine introspection (VMI) was proposed. Firstly, it eliminated the path to perform cuckoo attacks in virtual machines via obtaining virtual machines′ remote attestation evidence in virtual machine monitor (VMM). Secondly, it used physical trusted platform module (TPM) to ensure the integrity of virtual machines’ remote attestation evidence and reduced the number of attestation identity key (AIK) certificates required during remote attestation to balance the load of private CA. Experiments show that the proposed scheme can verify the status of virtual machines correctly and increase the performance of bulk virtual machines’ remote attestation significantly.
virtual machine remote attestation, the cuckoo attack, virtual machine introspection, TPM, attestation identity key
TP309
A
10.11959/j.issn.2096-109x.2018098
2018-11-02;
2018-11-29
陳興蜀,chenxsh@scu.edu.cn
國家自然科學基金資助項目(No.61802270);國家“雙創(chuàng)”示范基地之變革性技術國際研發(fā)轉(zhuǎn)化平臺基金資助項目(No.C700011)
The National Natural Science Foundation of China (No.61802270), The Transformational Technology International Research Platform for National Dual Innovation Base (No.C700011)
王偉(1992-),男,山東聊城人,四川大學碩士生,主要研究方向為可信計算、虛擬化安全。

陳興蜀(1968-),女,貴州六枝人,博士,四川大學教授、博士生導師,主要研究方向為云計算與大數(shù)據(jù)安全、可信計算與信息保障。
蘭曉(1990-),女,四川自貢人,博士,四川大學助理研究員,主要研究方向為認證密鑰協(xié)商協(xié)議、區(qū)塊鏈安全。

金鑫(1976-),男,遼寧營口人,四川大學博士生,主要研究方向為可信計算、虛擬化安全。