茹 斌
(國家保密科技測評中心,北京 100044)
縱觀整個信息安全科學的發(fā)展歷程,信息技術所發(fā)生的重大革命,會對整個信息安全領域的發(fā)展進程產生直接且顯著的影響。比如在計算機還未問世以前,密碼學是信息安全學科最主要的研究內容。但是,自計算機出現(xiàn)后,特別是互聯(lián)網出現(xiàn)后,信息安全領域發(fā)生了翻天覆地的變化。它的主要研究對象已經從密碼學發(fā)展為計算機系統(tǒng)安全和計算機網絡安全。信息安全行業(yè)誕生了一系列產品,其中具有標志代表性的信息安全產品有安全操作系統(tǒng)、安全數(shù)據庫管理系統(tǒng)以及防火墻等?;ヂ?lián)網出現(xiàn)后,云計算[1-2]又再一次為信息技術領域帶來重大改革和沖擊,主要技術特征是動態(tài)的服務計算。用戶或企業(yè)會在云服務器中[3-4]把所屬他們的數(shù)據存儲起來,當用戶和企業(yè)在云服務器中運行他們所屬的應用程序時,云計算的服務商會得到這些用戶數(shù)據和應用的優(yōu)先訪問權,但同時云服務商不能有力地向用戶證明他們的數(shù)據沒有被用到錯誤的途徑。這些錯誤的使用途徑包括云服務商沒有向同行公司倒賣用戶數(shù)據、用戶的隱私沒有被非法記錄或者被評估、用戶重要數(shù)據的存儲是否具有極高的安全性等。一旦產生安全問題,造成的損失極其驚人。這種類型的事例很多。英國政府曾經在2007年發(fā)生了一起重大存儲數(shù)據丟失事故,2 500萬人的社會保障號碼等重要資料被盡數(shù)遺失;有黑客曾入侵美國農業(yè)部(Department of Agriculture)的云服務器,并通過網絡偷走了26 000名在華盛頓地區(qū)工作的人員的個人信息,包括姓名、社會安全號碼及照片等。
云計算虛擬化管理所帶來的安全問題[5-7]。在傳統(tǒng)的云計算模式中,被提供給用戶使用的資源一般都是以虛擬或租用的模式進行。根據用戶的實際需求,這些虛擬資源會和用戶需要用到的物理資源進行有效綁定。由于資源在云計算的多用戶中處于共享模式,因此某一物理資源可能會被同時綁定多種虛擬資源。一旦有安全漏洞存在于云平臺中的虛擬化軟件中,其他用戶就很有可能具有訪問到該用戶數(shù)據的可能。而如果云服務提供商無法有效實現(xiàn)用戶的個人數(shù)據和別的企業(yè)的用戶數(shù)據之間的隔離,而用戶對于自己的鄰居及其潛在的目的和可能采取的行動一無所知,那么云服務商就沒有證據呈現(xiàn)給客戶,使他們相信自己數(shù)據的安全性是有保障的。
隨著云計算安全研究的深化發(fā)展和不斷進步,有很多全球知名的企業(yè)都紛紛發(fā)布了各類云計算安全產品與方案[8-9]。比如,Sun公司曾經為Amazon的EC2,S3還有虛擬私有云平臺提供安全保護,而發(fā)布開源的一款云計算安全工具-OpenSolaris VPC網關軟件能夠為客戶提供很大幫助,可以高效和便捷地構造多條通向Amazon虛擬私有云的安全性有保障的通信信道。同時,Sun公司發(fā)布的VMIs,是為了增強Amazon EC2的安全性,包含非可執(zhí)行堆棧,支持加密交換,同時數(shù)據審核會在默認情況被啟動;云安全盒(cloud safety box)通過使用類Amazon S3接口,可以對內容自動進行壓縮、加密和分解,對云中加密內容的管理進行適當簡化等。微軟為其自身的云計算平臺Azure設計了Sydney的安全計劃,旨在幫助企業(yè)用戶完成服務器和Azure云之間的數(shù)據交換。Sydney計劃在虛擬化多用戶環(huán)境中解決了用戶數(shù)據安全的機密性問題。EMC、Intel、Vmware等公司聯(lián)合發(fā)布了一個合作項目——“可信云體系架構”,一個概念證明系統(tǒng)被提出。它將Intel的可信執(zhí)行技術(Trusted Execution Technology)、Vmware的虛擬隔離技術、RSA的enVision安全信息與事件管理平臺等技術融合,目的在于構建一個從下至上值得信賴的多用戶服務器集群。同時,開源云計算平臺Hadoop也發(fā)布了一個安全版本,利用kerberos安全認證技術,可以認證共享商業(yè)敏感數(shù)據的用戶,并對其進行訪問控制,以有效阻止一些不合法用戶對Hadoop clusters的非授權訪問。
結合上述信息可知,首先云計算平臺運行的各種云服務基礎設施都具有多變性和安全邊界的不定性,很難確保對用戶數(shù)據和隱私安全性的保護;其次,云服務涉及的資源,通常有多個管理者對其進行管理,導致無法統(tǒng)一部署和制定安全防護措施。因此,本文針對目前云計算中用戶虛擬計算環(huán)境不可信的問題,首先擴展設計服務器端的TCB結構。云服務提供商可以通過可信平臺模塊虛擬化技術,為用戶構造一個虛擬化的可信平臺模塊。其次,以虛擬可信平臺模塊為基礎,用戶在云服務器構造了一個虛擬化的可信計算環(huán)境,完美處理了現(xiàn)有云計算源頭可信和虛擬計算環(huán)境的可信問題。與現(xiàn)有的可信平臺模塊虛擬化方案對比,這個方案非常完備地考慮了在云計算中虛擬機的效率損耗問題,具有高效率和安全性高等優(yōu)點。
虛擬化技術是云計算模式下的關鍵技術[10-11]。虛擬化技術可以使得單個服務器可以支持多個虛擬機,因此可以運行多個操作系統(tǒng)和應用。顯而易見,它可以使服務器的利用率獲得極大提高,通過虛擬化為應用提供擴展性強和可能性多的平臺。虛擬機技術是目前虛擬化技術應用的一個重要領域,可以顯著提高服務器的使用效率和云計算模式下用戶虛擬機的安全性,是用戶安全的前提和基礎。由于在云服務器中多個用戶之間處于共享資源模式,那么相同的物理資源上就有可能綁定很多不同的虛擬資源,而如果在云平臺中的虛擬化軟件中存在部分安全性漏洞,那么用戶的數(shù)據就有可能被別人訪問到,從而無法保障用戶虛擬機的安全性。針對上述問題提出了可信平臺模塊虛擬機,使用虛擬可信平臺模塊保障虛擬機的安全性。本文的動態(tài)虛擬可信平臺模塊的實現(xiàn)基于開源的虛擬機監(jiān)視器(Virtual Machine Monitor,VMM)系統(tǒng)XEN平臺[12-14]。XEN是運行在X86上的開源VMM,遵循GNU許可,是一個支持多個客戶的操作系統(tǒng)(Operation System,OS)。它是直接在硬件上運行的操作系統(tǒng),支持隔離性和多個虛擬機線程的并發(fā)運行。XEN直接在硬件上運行,且采用半虛擬化技術,不要求改變系統(tǒng)調用接口,也不需要修改現(xiàn)有應用程序,而是要求修改客戶OS,具體過程如下。
(1)在云服務器,將一個物理可信平臺模塊(Trusted Platform Module,TPM)映射成多個動態(tài)虛擬可信平臺模塊(Dynamic Virtual Trusted Platform Module,DVTPM)。DVTPM可以給每一個虛擬機供給一個專用的、基于軟件的信任根。
(2)為了讓DVTPM可以擁有遠程證明等功能,完成DVTPM和物理TPM的綁定,DVTPM具有動態(tài)創(chuàng)建特點,用戶進入云服務器時創(chuàng)建,當用戶退出的時候注銷。
(3)在云服務器上,使用XEN平臺實現(xiàn)DVTPM,XEN可以給所有用戶構造一個DVTPM,用戶可以以DVTPM為基礎構造可信虛擬環(huán)境。XEN服務器可以給用戶創(chuàng)建DVTPM的示意圖,DVTPM的實例和客戶虛擬機之間一一對應,可以給用戶提供綁定、密封及密鑰存儲等與物理TPM完全相一致的功能。
創(chuàng)建DVPTM的過程如圖1所示。

圖1 動態(tài)可信平臺模塊實現(xiàn)
假設XEN總共需要創(chuàng)建和啟動N個虛擬機,標記為VM1,VM2,…,VMn,每名用戶的服務單獨運行在一個虛擬機中,由DVPTM為可信基,XEN給虛擬機提供隔離,同時作為通信介質、用戶和用戶的虛擬機、DVPTM和TPM通信的橋梁;每個VM都有一個XenVMNet(虛擬網絡接口)來與用戶通信;各VM通過其虛擬網絡接口互聯(lián)成一個計算機網絡,稱為XenVMNet。VM有兩個虛擬網絡接口:一個是連接XEN的宿主機的網絡接口,用于和TPM通信;另一個是XenVMNet,與其他VM相連。
本文在虛擬機監(jiān)視器XEN3.30上實現(xiàn)了原型系統(tǒng),其中特權管理域Domain0為ubuntu8.04.3LTS,客戶虛擬機操作系統(tǒng)為ubuntu9.04,TSS軟件棧為TrouSer。測試物理平臺配置為:CPU為酷睿i5,內存為DDRⅡ800 4 GB,硬盤為500 GB SATA 7 200 r/m,TPM為IBMv1.2TPM,物理PCR映射到虛擬PCR(vPCR)過程通過map-pcr()函數(shù)發(fā)送VTPM_ORD_TPMCOMMAND命令至vTPM監(jiān)視器來實現(xiàn)。本文證明vTPM與TCB綁定的正確性和證書鏈擴展的可用性,分別從虛擬平臺的遠程證明和密鑰存儲兩方面測試系統(tǒng)的可用性。
函數(shù)流程如下:
vtpm_tx_fh=open(VTPM_TX_FIFO,O_WRONLY)//開啟寫通道
tpm_marshal_UINT32(cmd,len,dom_id)//設置vTPM的ID
tpm_marshal_UINT16(cmd,len,tag)////標記vTPM命令
tpm_marshal_UINT32(cmd,len,)//設置命令VTPM_ORD
VTPM_ORD_TPM(COMMAND)//_TPMCOMMAND
tpm_marshal_UINT16(cmd,len,tpm_tag)//讀PCR命令
tpm_marshal_UINT32(cmd,len,index)//設置PCR索引
res=write(vtpm_tx,out_data,out_data_size)//通 過寫通道輸出命令
vtpm_rx_fh=open(VTPM_RX_FIFO,O_R)//開啟讀通道
res=read(vtpm_rx_fh,pcr,pcr_size)//讀返回的PCR
圖2為物理PCR映射到虛擬PCR,測試了vPCR的映射功能。虛擬機啟動后,通過讀取虛擬機環(huán)境里的pcrs文件獲取vTPM的vPCR值。

圖2 物理PCR映射到虛擬PCR的映射
由圖3的測試結果可以得出,PCR被成功的讀取,虛擬TPM的PCR數(shù)值全部被初始化為0。
兩個客戶虛擬域的PCR值在圖3中給出,這兩個客戶的虛擬域分別為x-domU和y-domU。實際的可信平臺模塊將PCR[0]~PCR[8]映射到vTPM中,物理平臺的度量值為PCR[0]~PCR[8],vTPM管理器、擴展的Hypervisor、超級管理權限域的度量值為PCR[8]。這兩個用戶的虛擬域運行于同一個物理平臺中,兩用戶PCR[0]~PCR[8]相同,客戶虛擬域的完整性度量結果存在PCR[9]中,唯一不相等的是PCR[9]。

圖3 PCR的映射
用eCryptfs加密文件系統(tǒng)測試虛擬TPM的存儲密鑰的存儲功能,實驗效果如圖4和圖5所示。使用更改eCryptfs用戶空間的密鑰管理部分的方法,達到與vTPM交互的目的,之后通過TPM對eCryptfs的文件加密達到存儲存儲密鑰的目的。因為當前虛擬平臺的PCR文件和加密密鑰綁定在一起,所以即使某一用戶的虛擬域擁有另一用戶虛擬域加密之后文件的數(shù)據塊加密密鑰,仍然無法解密此數(shù)據塊,也就無法解密加密文件。

圖4 密鑰正確時文件讀取

圖5 密鑰錯誤時文件讀取
如圖4所示,在虛擬域y-domU的加密文件系統(tǒng)中編輯文件myfile,把文件的加密密鑰加密存儲于y-domU中。在y-domU中能夠有效解封密鑰,以此達到解密文件myfile的目的。
如圖5所示,為了證明y-domU的密封與解密能力,將myfile及密封的密鑰數(shù)據拷貝至另一虛擬域www-x-domU中。由于虛擬平臺的改變,因此無法解封加密密鑰,從而無法解密myfile。盡管應用ls命令能夠顯示myfile的詳細信息,然而使用linux里的文件編輯工具無法讀取myfile的內容。
TPM中包含6個基礎命令。
(1)ENABLE/DISABLE TPM:使能和禁用命令是與TPM芯片內部設置的使能或禁用功能相對應。執(zhí)行該功能時,需要通過物理存在的判斷操作輔助執(zhí)行。
(2)StartUp(ST_Clear):啟動時,由可信根發(fā)出啟動命令,TPM內部固件調入芯片啟動程序。
(3)Selftest:在需要或啟動時執(zhí)行完整的自我檢查。Force Clear用于重置TPM,這里SRK要求提供物理現(xiàn)場,即使Disable_Owner_Clear已被設置也可以。
(4)Read PCR:從TPM中讀取當前的PCR值。
(5)CreakEK:由廠商執(zhí)行,或者當用戶第一次刪除TPM中舊的EK時執(zhí)行。根據廠商的實現(xiàn)方式不同,EK可以存儲在芯片內部FLASH或者ROM中。
(6)Get TPM Info:提供該操作,可以一次性得到StartUp是否成功、ReadPUBEK是否成功、TPM Version、TPM Status、EK狀態(tài)及Owner狀態(tài)等信息。
如圖6所示,測試結果1主要用于測試Enable、Disable、ForceClear和 Selftest操作。

圖6 測試結果1
由圖6測試結果可以得出,Enable、Disable、ForceClear和Selftest這些操作被成功模擬,可以在用戶虛擬機中調用。
如圖7所示,測試結果2主要用于測試讀取PCR的操作。

圖7 測試結果2
在運行可信支撐軟件前,需要啟動TPM模擬器。圖8顯示虛擬TPM啟動后,就可以運行可信支撐軟件的核心服務模塊。核心服務在啟動過程中完成一些初始化工作,如建立永久存儲區(qū)等,同時通過打開TDDL連接與TPM模擬器建立連接,獲得TPM模擬器的一些屬性信息。圖8是可信支撐軟件的核心服務啟動之后的情況,連接完畢后可執(zhí)行應用程序,通過可信支撐軟件使用TPM的可信服務功能。

圖8 加載TPM_emulator
表1是虛擬TPM的性能測試數(shù)據和文獻[12]的虛擬化對比。
對比文獻[15]的可信平臺模塊虛擬化方案,本文提出的方案效率有了提高,考慮了云計算中虛擬機效率損耗問題。
由于云動態(tài)可信平臺模塊的構建本質上是一簇協(xié)議的執(zhí)行過程[16-18],協(xié)議的安全性就是該過程的安全性,所以本文使用通用可組合協(xié)議分析方法來分析本方案的安全性,證明在動態(tài)虛擬可信平臺模塊創(chuàng)建協(xié)議是安全的等同于證明虛擬機安全創(chuàng)建了動態(tài)TPM,即動態(tài)TPM在UC框架下安全實現(xiàn)了加密函數(shù)FEDVTPM和簽名函數(shù)FSDVTPM。

表1 虛擬TPM的性能測試數(shù)據和文獻[12]的虛擬化對比
理想函數(shù)在UC框架中非常重要,充當了一個不可被攻陷的可信第三方,可以完成協(xié)議所執(zhí)行的特定功能。
定義1:理想的功能函數(shù)。理想世界中,實際協(xié)議的映像就是理想的功能函數(shù)。它作為一個可信方T,接收被入侵方、誠實方和攻擊者的輸入,并將操作后的結果輸出給環(huán)境Z。
定理1:獨立密碼協(xié)議的安全性定理。若存在協(xié)議π、功能函數(shù)f、運行環(huán)境Z、實際模型的攻擊者A及理想模型的攻擊者SA,有成立,則協(xié)議π安全實現(xiàn)的功能函數(shù)f。此時,協(xié)議π是安全的,記做π UC-realize f。
定理2:復合密碼協(xié)議的安全性定理。給定安全參數(shù)k(n∈k),π UC-realize g,若協(xié)議π在運行過程中需要調用輔助計算函數(shù)f1,f2,…,fn,且存在協(xié)議 ρ1,ρ2,…,ρnUC-realize f1,f2,…,fn,則有 πρ1,ρ2,…,ρnUC-realize。
定義2:偽隨機函數(shù)。令H={Hn}n∈N作為l比特的函數(shù)族,若使一個l比特F={Fn}n∈N是偽隨機的,當且僅當存在一個可忽略的概率vA對任何PPT的攻擊者,并對于足夠大的k,有:

定義3:理想函數(shù)FCDVTPM。設FCDVTPM為動態(tài)TPM所創(chuàng)建的理想函數(shù),(DVTPM Created,sid,sk)表示云服務器為用戶創(chuàng)建DVTPM成功,(DVTPM Created,sid,⊥)表示云服務器為用戶創(chuàng)建DVTPM失敗。設用戶和云服務器之間的會話密鑰為sk,云服務器的授權用戶集合為Lcset,則每個用戶只有滿足u∈Lcset,云服務器才可以為其建立動態(tài)TPM。
理想函數(shù)FCDVTPM:
設授權用戶集合為Lcset,云服務器為Cserver,DVTPM虛擬機為VM,安全參數(shù)為k,用戶為u;
當VM收到(DVTPM Creat Request,sid,u,Cserver,VM),記錄VM為active,給Cserver發(fā)送(DVTPM Creat Request,sid,u,Cserver,VM)。
當Cserver收到(DVTPM Creat Response,sid,u,Cserver,VM),標記Cserver為active,發(fā)送(DVTPM Creat Response,sid,u,Cserver,VM)給VM。
如果FCDVTPM從攻擊者收到(DVTPM Creat Request,sid,u,p,sk),其中p∈{VM,Cserver}且p為active,則存在以下情形:
(1)存在sk將(DVTPM Created,sid,sk)給p;
(2)如果攻擊者控制VM,則記錄sk′,(DVTPM Created,sid,sk′)給 p;
(3)如果u∈Lcset,然后FCDVTPM從{0,1}k計算一個sk,然后(DVTPM Created,sid,sk)給p;
(4)如果上述3個情形均不成立,則輸出(DVTPM Created,sid,⊥ )給 p。
理想函數(shù)FCDVTPM符合用戶認證的基本要求,如果未被攻陷的用戶未被授權,即u?Lcset,那么用戶認證不會成功,F(xiàn)DVTPM輸出(DVTPM Created,sid,⊥)。只有當u∈Lcset,云服務器才會為其建立可信執(zhí)行環(huán)境。攻擊者除了攻陷服務器或進行偽裝攻擊外,沒有其他有效的攻擊手段。FDVTPM使用u∈Lcset來完成用戶的認證,接著FDVTPM生成一個會話密鑰。
定理3:虛擬機安全創(chuàng)建了動態(tài)TPM。
證明:設A為真實環(huán)境下的攻擊者,通過構造理想環(huán)境的攻擊者S,使得任何環(huán)境Z都能以可忽略的概率來區(qū)分由虛擬動態(tài)可信TPM及攻擊者A組成的現(xiàn)實環(huán)境和由FCDVTPM和攻擊者S組成的理想環(huán)境。以下是攻擊者S的操作:
(1)S從FCDVTPM收到(DVTPM Creat Request,sid,u,Cserver,VM),仿真A從VM到Cserver傳遞的信息
(DVTPM Creat Response,sid,u,Cserver,VM),當S從FCDVTPM收到(DVTPM Creat Response,sid,u,Cserver,VM),S仿真A從Cserver到VM的信息(DVTPM Creat Response,sid,u,Cserver,VM);
(2)當A由VM給Cserver發(fā)送信息(DVTPM Created,sid,sk),S從VM給Cserver發(fā)送信息(DVTPM Created,sid,sk);
(3)當p∈{VM,Cserver}輸出信息(DVTPM Created,sid,sk′),攻擊者S將會發(fā)送(DVTPM Created,sid,sk′)給 FCDVTPM;
(4) 當 A發(fā) 送 (Corrupt-platform,sid,p),S將會發(fā)送(Corrupt-platform,sid,p)給FDVTPM。
根據攻擊者S的操作可以得出,當VM攻陷時,攻擊者S可以完美仿真攻擊者A,此時Real和Ideal是不可區(qū)分的。當Cserver被攻陷時,Real和Ideal此時建立動態(tài)TPM將會失敗,所以Real和Ideal仍是不可區(qū)分的。當動態(tài)TPM建立成功,Real過程中的會話密鑰將會根據TPM中隨機數(shù)生成數(shù)來生成。TPM隨機數(shù)生成器是一個偽隨機數(shù)生成器,Ideal過程中的密鑰通過FCDVTPM利用真隨機數(shù)來生成,若環(huán)境Z能區(qū)分TPM與FCDVTPM生成的隨機數(shù),會與定義2矛盾,所以Ideal和Real是不可區(qū)分的。即由定理1可得出,虛擬機安全創(chuàng)建了動態(tài)TPM。
可信平臺模塊為計算平臺提供了三個基本功能——數(shù)據保護(可信存儲)、平臺完整性保護和平臺身份證明,分別依賴于加密、哈希函數(shù)和狀態(tài)信息的簽名。因此,定義了理想加密函數(shù)FEDVTPM、理想哈希函數(shù)FHDVTPM和理想簽名函數(shù)FSDVTPM。由定理2可知,若動態(tài)TPM在UC框架下安全實現(xiàn)了這三個函數(shù),則認為動態(tài)TPM在UC框架下安全實現(xiàn)了TPM的數(shù)據保護,平臺完整性保護和平臺身份證明的三大基本功能。
定義4:理想加密函數(shù)FEDVTPM。在FEDVTPM中存在3個實體,分別是敵手A、加密者E和解密者D。敵手A負責生成加密算法和解密算法(e,d),(e,d)為概率多項式復雜度為PPT的算法。
設M為明文消息域,令u∈M為給定的明文消息。
理想函數(shù)FEDVTPM:
(1)密鑰生成:當FEDVTPM從D收到(keyGen,sid)請求,F(xiàn)EDVTPM驗證sid=(D,sid′)。如果sid≠ (D,sid′),F(xiàn)EDVTPM忽略這個請求;否則,將(keyGen,sid)交給敵手A。當FEDVTPM從敵手收到(Algorithms,sid,e,d)時,將(EncryptionAlgorithms,sid,e)給D;
(2)加密:當FEDVTPM從加密請求者收到(Encrypt,sid,m,e′)時,m?M輸出一個錯誤信息給E,如果e?e′,說明D被敵手控制,此時令c=e′(m);如果 D 未被敵手控制,令 c=e′(u),F(xiàn)EDVTPM記錄(m,c),將(Ciphertext,sid,c)給E;
(3)解密:當FEDVTPM從D收到(Decrypt,sid,c),如果FEDVTPM存在記錄(m,c),輸出(Plaintext,m)給D;如果FEDVTPM不存在記錄(m,c),說明D被敵手控制,輸出(Plaintext,d(c))給D。
動態(tài)TPM安全實現(xiàn)了加密函數(shù)FEDVTPM。
證明:構造以下角色,即真實環(huán)境條件下的攻擊者A、理想環(huán)境條件下的攻擊者S、解密者D、加密者E和任何環(huán)境Z,且Z對于動態(tài)可信TPM和A、E以及D組成的現(xiàn)實環(huán)境和FEDVTPM和攻擊者S、解密者D以及加密者E組成的理想環(huán)境的概率區(qū)分均可以忽略。
(1)S從FEDVTPM收到(keyGen,sid),仿真A傳遞到D的信息(Algorithms,sid,e)。
(2)S 從 FEDVTPM收到 (Encrypt,sid,m,e′),仿真A傳遞到E的信息(Ciphertext,sid,c)。
(3)S從FEDVTPM收到(Decrypt,sid,c),仿真A傳遞到D的信息(Plaintext,d(c))。
根據S的操作可以發(fā)現(xiàn),當D被攻擊時,在兩個攻擊者之間,S可以完美模擬A,且Real和Ideal難以分辨;當E被攻擊時,因為Real和Ideal此時通過加密后的密文相同,所以Real和Ideal也難以分辨,當D、E兩者都沒有被攻陷時,因為Real過程中的會話密鑰是根據TPM中RSA算法生成,假設環(huán)境Z能夠區(qū)分TPM和FEDVTPM的密文,表示攻擊者A破解了RSA大模數(shù)數(shù)學問題,而這與TPM使用的RSA設計中的算法安全性相背,因此Real和Ideal不能區(qū)分。因此,根據定理2,虛擬機實現(xiàn)了安全加密函數(shù)FEDVTPM。
定義5:理想簽名函數(shù)FSDVTPM。
在FSDVTPM中生成了3個實體,分別為簽名者S、敵手A和驗證者V。A主要負責生成簽名算法和驗證算法(s,v),(s,v)為概率多項式復雜度(Probability Polynomial Time,PPT)的算法縮寫。設M為消息域,令m∈M為給定的明文消息。
理想函數(shù)FSDVTPM:
(1)密鑰生成:當FSDVTPM從S收到(keyGen,sid)發(fā)出的請求,F(xiàn)SDVTPM首先驗證 sid=(S,sid′),如果sid≠(S,sid′),F(xiàn)SDVTPM忽略這個請求,否則將(keyGen,sid)交給A進行下一步操作。當FSDVTPM從敵手收到(Algorithms,sid,s,v)時,則將(Veri fi cationAlgorithms,sid,v)給S;
(2)簽名:當FSDVTPM從簽名請求者接收到(Sign,sid,m),令 σ=s(m),然后驗證 v(m,s)=1。如果v(m,s)=1,則傳輸 (Signature,sid,m,σ)給 S,F(xiàn)SDVTPM接收并記錄(m,σ),否則將輸出一個錯誤信息給S,且停止簽名運算。
(3)驗證:當FSDVTPM從V收到(Verify,sid,m,σ,v′),如果v′=v,表示簽名者S沒有被攻擊者控制v(m,s)=1,如果在FSDVTPM中沒有(m,σ)這條記錄,將傳遞給S一個錯誤信息,并停止驗證運算,輸出(Veri fi ed,sid,m,v′(m,σ))給 V。
動態(tài)TPM安全實現(xiàn)了簽名函數(shù)FSDVTPM。
證明:構造角色,即真實環(huán)境條件下的攻擊者A和理想環(huán)境條件下的攻擊者S,使得任何環(huán)境Z對于概率區(qū)分動態(tài)可信TPM和攻擊者A、簽名請求者S以及簽名驗證者V組成的現(xiàn)實環(huán)境和FEDVTPM和攻擊者S′、簽名請求者S以及簽名驗證者V的理想環(huán)境均可以忽略。
以下是攻擊者S的操作:
(1)S′從FSDVTPM收到(keyGen,sid),仿真A傳遞到S傳遞的信息(Veri fi cationAlg orithms,sid,v)。
(2)S′從FSDVTPM收到(Sign,sid,m),仿真A傳遞到S傳遞的信息(Signature,sid,m,σ)。
(3)S′從 FSDVTPM收到 (Verify,sid,m,σ,v′),仿真A 傳遞到 V 信息 (Veri fi ed,sid,m,v′(m,σ))。
根據S′的操作可以發(fā)現(xiàn):S被攻擊時,兩個攻擊者之間存在S′可以完美模擬A的行為的聯(lián)系,所以Real和Ideal是難以分辨的;V被攻陷時,因為Real和Ideal的驗證過程一致,所以Real和Ideal也是難以分辨的。如果S、V都沒有被攻陷,Real過程中的簽名密鑰和加密密鑰對是根據TPM中RSA加密算法生成的。如果環(huán)境Z能夠分辨TPM和FSDVTPM的簽名,表明攻擊者A破解了RSA大模數(shù)解密算法問題,這與TPM使用的RSA算法的安全性相背,因此Real和Ideal難以區(qū)分。因此,根據定理1,虛擬機實現(xiàn)了安全加密函數(shù)FSDVTPM。由于動態(tài)TPM安全實現(xiàn)了加密函數(shù)FSDVTPM,動態(tài)TPM安全實現(xiàn)了簽名函數(shù)FSDVTPM,根據定理2復合協(xié)議安全性定理,動態(tài)TPM安全在UC的安全框架下實現(xiàn)了TPM的功能。
綜上所述,XEN虛擬機在UC框架中創(chuàng)建了動態(tài)安全可信虛擬平臺模塊,且可以給用戶計算環(huán)境提供一個可信根,作為虛擬可信計算環(huán)境初始的“可信根”。
將虛擬可信平臺模塊vTPM作為虛擬可信計算系統(tǒng)的初始“可信根”,在云端服務器虛擬可信計算信任鏈傳遞過程中,對虛擬可信計算環(huán)境的程序進行信任度量(Trusted Measurement),直到整個虛擬信任鏈傳遞完成。
虛擬可信計算系統(tǒng)中的信任傳遞過程如下:在系統(tǒng)中每一層的信任傳遞過程中,通過可信根校驗可信根的下一層執(zhí)行代碼的數(shù)據完整性是否遭到威脅,如果下一層執(zhí)行代碼沒有被篡改,則將該層歸屬于可信范圍,并將可信根傳遞到下一層的可信執(zhí)行代碼;對于整個系統(tǒng)而言,通過可信根的逐層傳遞,該系統(tǒng)的可信范圍從可信根所在層傳遞到下一級;通過檢驗可信范圍邊界的下一層可信執(zhí)行代碼是否篡改,控制可信根不斷傳遞,實現(xiàn)對系統(tǒng)可信范圍的傳遞和信任鏈的建立,最終實現(xiàn)對虛擬可信計算系統(tǒng)環(huán)境的可信范圍整體認證。以下是度量過程描述。
在啟動虛擬計算操作系統(tǒng)前,首先需要對虛擬機OS Loader進行完整性檢驗,主要是因為OSLaoder是主引導記錄中的主引導程序,要確保信任范圍中的起始節(jié)點的可信任度。它的信任檢驗的實現(xiàn)一般是判斷主引導記錄中HASH值是否一致的判斷前提。另外,對于整個主引導程序計算進行HASH計算后,HASH值一般掛載在主引導的備用存儲區(qū)。
DVTPM和OS loader通信,確保OS loader屬于可信范圍內,然后OS loader與虛擬服務機的OS kernel建立通信,虛擬服務機加載OS kernel后,可以度量在它之前在哪些軟件被運行??梢钥闯?,在DVTPM的控制下,DVTPM將信任范圍擴大到OS loader層,然后OS loader繼續(xù)將信任范圍擴大到OS層,OS同樣將信任范圍給應用軟件層,從而實現(xiàn)整體的信任傳遞。
軟件數(shù)據完整性是CIA三大屬性之一,也是判斷應用軟件是否可信的基本要素。但是,軟件數(shù)據完整性還不能確保虛擬動態(tài)條件下應用軟件的安全性和完整性。因此,上層軟件的度量除了基于HASH的完整性校驗度量外,還需進行其他一些特殊的度量方法。隨著現(xiàn)代軟件的功能全面化發(fā)展,各種功能越來越智能化,應用軟件的代碼規(guī)模也愈發(fā)龐大,度量所用的代碼產生的數(shù)據量也超乎尋常,因此需要對程序進行有選擇性、有方向性的度量。應該對其進行多層次、多模塊的分析法,盡可能多地列舉多種度量層面,根據每個層面的比重值不同,確定最優(yōu)的度量點,實現(xiàn)對其更準確的度量??梢詫密浖M行可信的級別劃分,不可信和可信程度低的應用軟件均不能通過度量。此外,由于軟件裝包后的模糊性,需對應用軟件引入專家評估系統(tǒng),實現(xiàn)對應用軟件的可信等級判定。只有通過完整性校驗且其安全等級被認定為可信任的軟件,才能得到操作系統(tǒng)的運行授權。
在真實的可信計算平臺中,核心可信度量根(Core Root of Trust for Measurement,CRTM)是可信計算平臺的一個核心可信度量根。它一般是內嵌在操作系統(tǒng)中的一段指令,并放置在BIOS中。在云端服務器中,在XEN中的每一個用戶虛擬機的創(chuàng)建始于vTPM,具體過程如圖9所示。

圖9 虛擬信任鏈的傳遞
虛擬可信平臺模塊作為信任根,通過可信根的計算判斷下一級執(zhí)行代碼是否被篡改以及下一級引用程序代碼的真實性和完整性。如果沒有被篡改,則信任鏈的建立傳遞到可信根所在的下一級可信程序代碼,可信范圍就從可信根所在層擴展到下一級。隨著控制運行代碼不斷向下一級傳遞,最終可以實現(xiàn)信任鏈的線性傳遞和整體建立,實現(xiàn)可信范圍的整體延伸,為用戶構建一個虛擬可信計算環(huán)境。
本文針對目前在云計算環(huán)境中用戶虛擬計算環(huán)境不可信的問題,利用可信平臺模塊虛擬化技術,在云服務器端為用戶構造一個虛擬可信平臺模塊,并在此基礎上為用戶在云服務器端構造了一個虛擬的可信計算環(huán)境,從而有效保障現(xiàn)有的云計算用戶中虛擬計算環(huán)境的可信。通過安全性分析,證明了動態(tài)TPM安全在UC的安全框架下實現(xiàn)了TPM的功能。通過與現(xiàn)有的可信平臺模塊虛擬化方案對比發(fā)現(xiàn),提出的方案考慮了在云計算中虛擬機效率損耗問題,并且擁有更高的安全性和執(zhí)行效率,在用戶虛擬計算環(huán)境中具有更好的適應性。