茹 斌
(國家保密科技測評中心,北京 100044)
縱觀整個信息安全科學(xué)的發(fā)展歷程,信息技術(shù)所發(fā)生的重大革命,會對整個信息安全領(lǐng)域的發(fā)展進(jìn)程產(chǎn)生直接且顯著的影響。比如在計算機(jī)還未問世以前,密碼學(xué)是信息安全學(xué)科最主要的研究內(nèi)容。但是,自計算機(jī)出現(xiàn)后,特別是互聯(lián)網(wǎng)出現(xiàn)后,信息安全領(lǐng)域發(fā)生了翻天覆地的變化。它的主要研究對象已經(jīng)從密碼學(xué)發(fā)展為計算機(jī)系統(tǒng)安全和計算機(jī)網(wǎng)絡(luò)安全。信息安全行業(yè)誕生了一系列產(chǎn)品,其中具有標(biāo)志代表性的信息安全產(chǎn)品有安全操作系統(tǒng)、安全數(shù)據(jù)庫管理系統(tǒng)以及防火墻等?;ヂ?lián)網(wǎng)出現(xiàn)后,云計算[1-2]又再一次為信息技術(shù)領(lǐng)域帶來重大改革和沖擊,主要技術(shù)特征是動態(tài)的服務(wù)計算。用戶或企業(yè)會在云服務(wù)器中[3-4]把所屬他們的數(shù)據(jù)存儲起來,當(dāng)用戶和企業(yè)在云服務(wù)器中運(yùn)行他們所屬的應(yīng)用程序時,云計算的服務(wù)商會得到這些用戶數(shù)據(jù)和應(yīng)用的優(yōu)先訪問權(quán),但同時云服務(wù)商不能有力地向用戶證明他們的數(shù)據(jù)沒有被用到錯誤的途徑。這些錯誤的使用途徑包括云服務(wù)商沒有向同行公司倒賣用戶數(shù)據(jù)、用戶的隱私?jīng)]有被非法記錄或者被評估、用戶重要數(shù)據(jù)的存儲是否具有極高的安全性等。一旦產(chǎn)生安全問題,造成的損失極其驚人。這種類型的事例很多。英國政府曾經(jīng)在2007年發(fā)生了一起重大存儲數(shù)據(jù)丟失事故,2 500萬人的社會保障號碼等重要資料被盡數(shù)遺失;有黑客曾入侵美國農(nóng)業(yè)部(Department of Agriculture)的云服務(wù)器,并通過網(wǎng)絡(luò)偷走了26 000名在華盛頓地區(qū)工作的人員的個人信息,包括姓名、社會安全號碼及照片等。
云計算虛擬化管理所帶來的安全問題[5-7]。在傳統(tǒng)的云計算模式中,被提供給用戶使用的資源一般都是以虛擬或租用的模式進(jìn)行。根據(jù)用戶的實際需求,這些虛擬資源會和用戶需要用到的物理資源進(jìn)行有效綁定。由于資源在云計算的多用戶中處于共享模式,因此某一物理資源可能會被同時綁定多種虛擬資源。一旦有安全漏洞存在于云平臺中的虛擬化軟件中,其他用戶就很有可能具有訪問到該用戶數(shù)據(jù)的可能。而如果云服務(wù)提供商無法有效實現(xiàn)用戶的個人數(shù)據(jù)和別的企業(yè)的用戶數(shù)據(jù)之間的隔離,而用戶對于自己的鄰居及其潛在的目的和可能采取的行動一無所知,那么云服務(wù)商就沒有證據(jù)呈現(xiàn)給客戶,使他們相信自己數(shù)據(jù)的安全性是有保障的。
隨著云計算安全研究的深化發(fā)展和不斷進(jìn)步,有很多全球知名的企業(yè)都紛紛發(fā)布了各類云計算安全產(chǎn)品與方案[8-9]。比如,Sun公司曾經(jīng)為Amazon的EC2,S3還有虛擬私有云平臺提供安全保護(hù),而發(fā)布開源的一款云計算安全工具-OpenSolaris VPC網(wǎng)關(guān)軟件能夠為客戶提供很大幫助,可以高效和便捷地構(gòu)造多條通向Amazon虛擬私有云的安全性有保障的通信信道。同時,Sun公司發(fā)布的VMIs,是為了增強(qiáng)Amazon EC2的安全性,包含非可執(zhí)行堆棧,支持加密交換,同時數(shù)據(jù)審核會在默認(rèn)情況被啟動;云安全盒(cloud safety box)通過使用類Amazon S3接口,可以對內(nèi)容自動進(jìn)行壓縮、加密和分解,對云中加密內(nèi)容的管理進(jìn)行適當(dāng)簡化等。微軟為其自身的云計算平臺Azure設(shè)計了Sydney的安全計劃,旨在幫助企業(yè)用戶完成服務(wù)器和Azure云之間的數(shù)據(jù)交換。Sydney計劃在虛擬化多用戶環(huán)境中解決了用戶數(shù)據(jù)安全的機(jī)密性問題。EMC、Intel、Vmware等公司聯(lián)合發(fā)布了一個合作項目——“可信云體系架構(gòu)”,一個概念證明系統(tǒng)被提出。它將Intel的可信執(zhí)行技術(shù)(Trusted Execution Technology)、Vmware的虛擬隔離技術(shù)、RSA的enVision安全信息與事件管理平臺等技術(shù)融合,目的在于構(gòu)建一個從下至上值得信賴的多用戶服務(wù)器集群。同時,開源云計算平臺Hadoop也發(fā)布了一個安全版本,利用kerberos安全認(rèn)證技術(shù),可以認(rèn)證共享商業(yè)敏感數(shù)據(jù)的用戶,并對其進(jìn)行訪問控制,以有效阻止一些不合法用戶對Hadoop clusters的非授權(quán)訪問。
結(jié)合上述信息可知,首先云計算平臺運(yùn)行的各種云服務(wù)基礎(chǔ)設(shè)施都具有多變性和安全邊界的不定性,很難確保對用戶數(shù)據(jù)和隱私安全性的保護(hù);其次,云服務(wù)涉及的資源,通常有多個管理者對其進(jìn)行管理,導(dǎo)致無法統(tǒng)一部署和制定安全防護(hù)措施。因此,本文針對目前云計算中用戶虛擬計算環(huán)境不可信的問題,首先擴(kuò)展設(shè)計服務(wù)器端的TCB結(jié)構(gòu)。云服務(wù)提供商可以通過可信平臺模塊虛擬化技術(shù),為用戶構(gòu)造一個虛擬化的可信平臺模塊。其次,以虛擬可信平臺模塊為基礎(chǔ),用戶在云服務(wù)器構(gòu)造了一個虛擬化的可信計算環(huán)境,完美處理了現(xiàn)有云計算源頭可信和虛擬計算環(huán)境的可信問題。與現(xiàn)有的可信平臺模塊虛擬化方案對比,這個方案非常完備地考慮了在云計算中虛擬機(jī)的效率損耗問題,具有高效率和安全性高等優(yōu)點。
虛擬化技術(shù)是云計算模式下的關(guān)鍵技術(shù)[10-11]。虛擬化技術(shù)可以使得單個服務(wù)器可以支持多個虛擬機(jī),因此可以運(yùn)行多個操作系統(tǒng)和應(yīng)用。顯而易見,它可以使服務(wù)器的利用率獲得極大提高,通過虛擬化為應(yīng)用提供擴(kuò)展性強(qiáng)和可能性多的平臺。虛擬機(jī)技術(shù)是目前虛擬化技術(shù)應(yīng)用的一個重要領(lǐng)域,可以顯著提高服務(wù)器的使用效率和云計算模式下用戶虛擬機(jī)的安全性,是用戶安全的前提和基礎(chǔ)。由于在云服務(wù)器中多個用戶之間處于共享資源模式,那么相同的物理資源上就有可能綁定很多不同的虛擬資源,而如果在云平臺中的虛擬化軟件中存在部分安全性漏洞,那么用戶的數(shù)據(jù)就有可能被別人訪問到,從而無法保障用戶虛擬機(jī)的安全性。針對上述問題提出了可信平臺模塊虛擬機(jī),使用虛擬可信平臺模塊保障虛擬機(jī)的安全性。本文的動態(tài)虛擬可信平臺模塊的實現(xiàn)基于開源的虛擬機(jī)監(jiān)視器(Virtual Machine Monitor,VMM)系統(tǒng)XEN平臺[12-14]。XEN是運(yùn)行在X86上的開源VMM,遵循GNU許可,是一個支持多個客戶的操作系統(tǒng)(Operation System,OS)。它是直接在硬件上運(yùn)行的操作系統(tǒng),支持隔離性和多個虛擬機(jī)線程的并發(fā)運(yùn)行。XEN直接在硬件上運(yùn)行,且采用半虛擬化技術(shù),不要求改變系統(tǒng)調(diào)用接口,也不需要修改現(xiàn)有應(yīng)用程序,而是要求修改客戶OS,具體過程如下。
(1)在云服務(wù)器,將一個物理可信平臺模塊(Trusted Platform Module,TPM)映射成多個動態(tài)虛擬可信平臺模塊(Dynamic Virtual Trusted Platform Module,DVTPM)。DVTPM可以給每一個虛擬機(jī)供給一個專用的、基于軟件的信任根。
(2)為了讓DVTPM可以擁有遠(yuǎn)程證明等功能,完成DVTPM和物理TPM的綁定,DVTPM具有動態(tài)創(chuàng)建特點,用戶進(jìn)入云服務(wù)器時創(chuàng)建,當(dāng)用戶退出的時候注銷。
(3)在云服務(wù)器上,使用XEN平臺實現(xiàn)DVTPM,XEN可以給所有用戶構(gòu)造一個DVTPM,用戶可以以DVTPM為基礎(chǔ)構(gòu)造可信虛擬環(huán)境。XEN服務(wù)器可以給用戶創(chuàng)建DVTPM的示意圖,DVTPM的實例和客戶虛擬機(jī)之間一一對應(yīng),可以給用戶提供綁定、密封及密鑰存儲等與物理TPM完全相一致的功能。
創(chuàng)建DVPTM的過程如圖1所示。
圖1 動態(tài)可信平臺模塊實現(xiàn)
假設(shè)XEN總共需要創(chuàng)建和啟動N個虛擬機(jī),標(biāo)記為VM1,VM2,…,VMn,每名用戶的服務(wù)單獨運(yùn)行在一個虛擬機(jī)中,由DVPTM為可信基,XEN給虛擬機(jī)提供隔離,同時作為通信介質(zhì)、用戶和用戶的虛擬機(jī)、DVPTM和TPM通信的橋梁;每個VM都有一個XenVMNet(虛擬網(wǎng)絡(luò)接口)來與用戶通信;各VM通過其虛擬網(wǎng)絡(luò)接口互聯(lián)成一個計算機(jī)網(wǎng)絡(luò),稱為XenVMNet。VM有兩個虛擬網(wǎng)絡(luò)接口:一個是連接XEN的宿主機(jī)的網(wǎng)絡(luò)接口,用于和TPM通信;另一個是XenVMNet,與其他VM相連。
本文在虛擬機(jī)監(jiān)視器XEN3.30上實現(xiàn)了原型系統(tǒng),其中特權(quán)管理域Domain0為ubuntu8.04.3LTS,客戶虛擬機(jī)操作系統(tǒng)為ubuntu9.04,TSS軟件棧為TrouSer。測試物理平臺配置為:CPU為酷睿i5,內(nèi)存為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綁定的正確性和證書鏈擴(kuò)展的可用性,分別從虛擬平臺的遠(yuǎn)程證明和密鑰存儲兩方面測試系統(tǒng)的可用性。
函數(shù)流程如下:
vtpm_tx_fh=open(VTPM_TX_FIFO,O_WRONLY)//開啟寫通道
tpm_marshal_UINT32(cmd,len,dom_id)//設(shè)置vTPM的ID
tpm_marshal_UINT16(cmd,len,tag)////標(biāo)記vTPM命令
tpm_marshal_UINT32(cmd,len,)//設(shè)置命令VTPM_ORD
VTPM_ORD_TPM(COMMAND)//_TPMCOMMAND
tpm_marshal_UINT16(cmd,len,tpm_tag)//讀PCR命令
tpm_marshal_UINT32(cmd,len,index)//設(shè)置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的映射功能。虛擬機(jī)啟動后,通過讀取虛擬機(jī)環(huán)境里的pcrs文件獲取vTPM的vPCR值。
圖2 物理PCR映射到虛擬PCR的映射
由圖3的測試結(jié)果可以得出,PCR被成功的讀取,虛擬TPM的PCR數(shù)值全部被初始化為0。
兩個客戶虛擬域的PCR值在圖3中給出,這兩個客戶的虛擬域分別為x-domU和y-domU。實際的可信平臺模塊將PCR[0]~PCR[8]映射到vTPM中,物理平臺的度量值為PCR[0]~PCR[8],vTPM管理器、擴(kuò)展的Hypervisor、超級管理權(quán)限域的度量值為PCR[8]。這兩個用戶的虛擬域運(yùn)行于同一個物理平臺中,兩用戶PCR[0]~PCR[8]相同,客戶虛擬域的完整性度量結(jié)果存在PCR[9]中,唯一不相等的是PCR[9]。
圖3 PCR的映射
用eCryptfs加密文件系統(tǒng)測試虛擬TPM的存儲密鑰的存儲功能,實驗效果如圖4和圖5所示。使用更改eCryptfs用戶空間的密鑰管理部分的方法,達(dá)到與vTPM交互的目的,之后通過TPM對eCryptfs的文件加密達(dá)到存儲存儲密鑰的目的。因為當(dāng)前虛擬平臺的PCR文件和加密密鑰綁定在一起,所以即使某一用戶的虛擬域擁有另一用戶虛擬域加密之后文件的數(shù)據(jù)塊加密密鑰,仍然無法解密此數(shù)據(jù)塊,也就無法解密加密文件。
圖4 密鑰正確時文件讀取
圖5 密鑰錯誤時文件讀取
如圖4所示,在虛擬域y-domU的加密文件系統(tǒng)中編輯文件myfile,把文件的加密密鑰加密存儲于y-domU中。在y-domU中能夠有效解封密鑰,以此達(dá)到解密文件myfile的目的。
如圖5所示,為了證明y-domU的密封與解密能力,將myfile及密封的密鑰數(shù)據(jù)拷貝至另一虛擬域www-x-domU中。由于虛擬平臺的改變,因此無法解封加密密鑰,從而無法解密myfile。盡管應(yīng)用ls命令能夠顯示myfile的詳細(xì)信息,然而使用linux里的文件編輯工具無法讀取myfile的內(nèi)容。
TPM中包含6個基礎(chǔ)命令。
(1)ENABLE/DISABLE TPM:使能和禁用命令是與TPM芯片內(nèi)部設(shè)置的使能或禁用功能相對應(yīng)。執(zhí)行該功能時,需要通過物理存在的判斷操作輔助執(zhí)行。
(2)StartUp(ST_Clear):啟動時,由可信根發(fā)出啟動命令,TPM內(nèi)部固件調(diào)入芯片啟動程序。
(3)Selftest:在需要或啟動時執(zhí)行完整的自我檢查。Force Clear用于重置TPM,這里SRK要求提供物理現(xiàn)場,即使Disable_Owner_Clear已被設(shè)置也可以。
(4)Read PCR:從TPM中讀取當(dāng)前的PCR值。
(5)CreakEK:由廠商執(zhí)行,或者當(dāng)用戶第一次刪除TPM中舊的EK時執(zhí)行。根據(jù)廠商的實現(xiàn)方式不同,EK可以存儲在芯片內(nèi)部FLASH或者ROM中。
(6)Get TPM Info:提供該操作,可以一次性得到StartUp是否成功、ReadPUBEK是否成功、TPM Version、TPM Status、EK狀態(tài)及Owner狀態(tài)等信息。
如圖6所示,測試結(jié)果1主要用于測試Enable、Disable、ForceClear和 Selftest操作。
圖6 測試結(jié)果1
由圖6測試結(jié)果可以得出,Enable、Disable、ForceClear和Selftest這些操作被成功模擬,可以在用戶虛擬機(jī)中調(diào)用。
如圖7所示,測試結(jié)果2主要用于測試讀取PCR的操作。
圖7 測試結(jié)果2
在運(yùn)行可信支撐軟件前,需要啟動TPM模擬器。圖8顯示虛擬TPM啟動后,就可以運(yùn)行可信支撐軟件的核心服務(wù)模塊。核心服務(wù)在啟動過程中完成一些初始化工作,如建立永久存儲區(qū)等,同時通過打開TDDL連接與TPM模擬器建立連接,獲得TPM模擬器的一些屬性信息。圖8是可信支撐軟件的核心服務(wù)啟動之后的情況,連接完畢后可執(zhí)行應(yīng)用程序,通過可信支撐軟件使用TPM的可信服務(wù)功能。
圖8 加載TPM_emulator
表1是虛擬TPM的性能測試數(shù)據(jù)和文獻(xiàn)[12]的虛擬化對比。
對比文獻(xiàn)[15]的可信平臺模塊虛擬化方案,本文提出的方案效率有了提高,考慮了云計算中虛擬機(jī)效率損耗問題。
由于云動態(tài)可信平臺模塊的構(gòu)建本質(zhì)上是一簇協(xié)議的執(zhí)行過程[16-18],協(xié)議的安全性就是該過程的安全性,所以本文使用通用可組合協(xié)議分析方法來分析本方案的安全性,證明在動態(tài)虛擬可信平臺模塊創(chuàng)建協(xié)議是安全的等同于證明虛擬機(jī)安全創(chuàng)建了動態(tài)TPM,即動態(tài)TPM在UC框架下安全實現(xiàn)了加密函數(shù)FEDVTPM和簽名函數(shù)FSDVTPM。
表1 虛擬TPM的性能測試數(shù)據(jù)和文獻(xiàn)[12]的虛擬化對比
理想函數(shù)在UC框架中非常重要,充當(dāng)了一個不可被攻陷的可信第三方,可以完成協(xié)議所執(zhí)行的特定功能。
定義1:理想的功能函數(shù)。理想世界中,實際協(xié)議的映像就是理想的功能函數(shù)。它作為一個可信方T,接收被入侵方、誠實方和攻擊者的輸入,并將操作后的結(jié)果輸出給環(huán)境Z。
定理1:獨立密碼協(xié)議的安全性定理。若存在協(xié)議π、功能函數(shù)f、運(yùn)行環(huán)境Z、實際模型的攻擊者A及理想模型的攻擊者SA,有成立,則協(xié)議π安全實現(xiàn)的功能函數(shù)f。此時,協(xié)議π是安全的,記做π UC-realize f。
定理2:復(fù)合密碼協(xié)議的安全性定理。給定安全參數(shù)k(n∈k),π UC-realize g,若協(xié)議π在運(yùn)行過程中需要調(diào)用輔助計算函數(shù)f1,f2,…,fn,且存在協(xié)議 ρ1,ρ2,…,ρnUC-realize f1,f2,…,fn,則有 πρ1,ρ2,…,ρnUC-realize。
定義2:偽隨機(jī)函數(shù)。令H={Hn}n∈N作為l比特的函數(shù)族,若使一個l比特F={Fn}n∈N是偽隨機(jī)的,當(dāng)且僅當(dāng)存在一個可忽略的概率vA對任何PPT的攻擊者,并對于足夠大的k,有:
定義3:理想函數(shù)FCDVTPM。設(shè)FCDVTPM為動態(tài)TPM所創(chuàng)建的理想函數(shù),(DVTPM Created,sid,sk)表示云服務(wù)器為用戶創(chuàng)建DVTPM成功,(DVTPM Created,sid,⊥)表示云服務(wù)器為用戶創(chuàng)建DVTPM失敗。設(shè)用戶和云服務(wù)器之間的會話密鑰為sk,云服務(wù)器的授權(quán)用戶集合為Lcset,則每個用戶只有滿足u∈Lcset,云服務(wù)器才可以為其建立動態(tài)TPM。
理想函數(shù)FCDVTPM:
設(shè)授權(quán)用戶集合為Lcset,云服務(wù)器為Cserver,DVTPM虛擬機(jī)為VM,安全參數(shù)為k,用戶為u;
當(dāng)VM收到(DVTPM Creat Request,sid,u,Cserver,VM),記錄VM為active,給Cserver發(fā)送(DVTPM Creat Request,sid,u,Cserver,VM)。
當(dāng)Cserver收到(DVTPM Creat Response,sid,u,Cserver,VM),標(biāo)記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符合用戶認(rèn)證的基本要求,如果未被攻陷的用戶未被授權(quán),即u?Lcset,那么用戶認(rèn)證不會成功,F(xiàn)DVTPM輸出(DVTPM Created,sid,⊥)。只有當(dāng)u∈Lcset,云服務(wù)器才會為其建立可信執(zhí)行環(huán)境。攻擊者除了攻陷服務(wù)器或進(jìn)行偽裝攻擊外,沒有其他有效的攻擊手段。FDVTPM使用u∈Lcset來完成用戶的認(rèn)證,接著FDVTPM生成一個會話密鑰。
定理3:虛擬機(jī)安全創(chuàng)建了動態(tài)TPM。
證明:設(shè)A為真實環(huán)境下的攻擊者,通過構(gòu)造理想環(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),當(dāng)S從FCDVTPM收到(DVTPM Creat Response,sid,u,Cserver,VM),S仿真A從Cserver到VM的信息(DVTPM Creat Response,sid,u,Cserver,VM);
(2)當(dāng)A由VM給Cserver發(fā)送信息(DVTPM Created,sid,sk),S從VM給Cserver發(fā)送信息(DVTPM Created,sid,sk);
(3)當(dāng)p∈{VM,Cserver}輸出信息(DVTPM Created,sid,sk′),攻擊者S將會發(fā)送(DVTPM Created,sid,sk′)給 FCDVTPM;
(4) 當(dāng) A發(fā) 送 (Corrupt-platform,sid,p),S將會發(fā)送(Corrupt-platform,sid,p)給FDVTPM。
根據(jù)攻擊者S的操作可以得出,當(dāng)VM攻陷時,攻擊者S可以完美仿真攻擊者A,此時Real和Ideal是不可區(qū)分的。當(dāng)Cserver被攻陷時,Real和Ideal此時建立動態(tài)TPM將會失敗,所以Real和Ideal仍是不可區(qū)分的。當(dāng)動態(tài)TPM建立成功,Real過程中的會話密鑰將會根據(jù)TPM中隨機(jī)數(shù)生成數(shù)來生成。TPM隨機(jī)數(shù)生成器是一個偽隨機(jī)數(shù)生成器,Ideal過程中的密鑰通過FCDVTPM利用真隨機(jī)數(shù)來生成,若環(huán)境Z能區(qū)分TPM與FCDVTPM生成的隨機(jī)數(shù),會與定義2矛盾,所以Ideal和Real是不可區(qū)分的。即由定理1可得出,虛擬機(jī)安全創(chuàng)建了動態(tài)TPM。
可信平臺模塊為計算平臺提供了三個基本功能——數(shù)據(jù)保護(hù)(可信存儲)、平臺完整性保護(hù)和平臺身份證明,分別依賴于加密、哈希函數(shù)和狀態(tài)信息的簽名。因此,定義了理想加密函數(shù)FEDVTPM、理想哈希函數(shù)FHDVTPM和理想簽名函數(shù)FSDVTPM。由定理2可知,若動態(tài)TPM在UC框架下安全實現(xiàn)了這三個函數(shù),則認(rèn)為動態(tài)TPM在UC框架下安全實現(xiàn)了TPM的數(shù)據(jù)保護(hù),平臺完整性保護(hù)和平臺身份證明的三大基本功能。
定義4:理想加密函數(shù)FEDVTPM。在FEDVTPM中存在3個實體,分別是敵手A、加密者E和解密者D。敵手A負(fù)責(zé)生成加密算法和解密算法(e,d),(e,d)為概率多項式復(fù)雜度為PPT的算法。
設(shè)M為明文消息域,令u∈M為給定的明文消息。
理想函數(shù)FEDVTPM:
(1)密鑰生成:當(dāng)FEDVTPM從D收到(keyGen,sid)請求,F(xiàn)EDVTPM驗證sid=(D,sid′)。如果sid≠ (D,sid′),F(xiàn)EDVTPM忽略這個請求;否則,將(keyGen,sid)交給敵手A。當(dāng)FEDVTPM從敵手收到(Algorithms,sid,e,d)時,將(EncryptionAlgorithms,sid,e)給D;
(2)加密:當(dāng)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)解密:當(dāng)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。
證明:構(gòu)造以下角色,即真實環(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))。
根據(jù)S的操作可以發(fā)現(xiàn),當(dāng)D被攻擊時,在兩個攻擊者之間,S可以完美模擬A,且Real和Ideal難以分辨;當(dāng)E被攻擊時,因為Real和Ideal此時通過加密后的密文相同,所以Real和Ideal也難以分辨,當(dāng)D、E兩者都沒有被攻陷時,因為Real過程中的會話密鑰是根據(jù)TPM中RSA算法生成,假設(shè)環(huán)境Z能夠區(qū)分TPM和FEDVTPM的密文,表示攻擊者A破解了RSA大模數(shù)數(shù)學(xué)問題,而這與TPM使用的RSA設(shè)計中的算法安全性相背,因此Real和Ideal不能區(qū)分。因此,根據(jù)定理2,虛擬機(jī)實現(xiàn)了安全加密函數(shù)FEDVTPM。
定義5:理想簽名函數(shù)FSDVTPM。
在FSDVTPM中生成了3個實體,分別為簽名者S、敵手A和驗證者V。A主要負(fù)責(zé)生成簽名算法和驗證算法(s,v),(s,v)為概率多項式復(fù)雜度(Probability Polynomial Time,PPT)的算法縮寫。設(shè)M為消息域,令m∈M為給定的明文消息。
理想函數(shù)FSDVTPM:
(1)密鑰生成:當(dāng)FSDVTPM從S收到(keyGen,sid)發(fā)出的請求,F(xiàn)SDVTPM首先驗證 sid=(S,sid′),如果sid≠(S,sid′),F(xiàn)SDVTPM忽略這個請求,否則將(keyGen,sid)交給A進(jìn)行下一步操作。當(dāng)FSDVTPM從敵手收到(Algorithms,sid,s,v)時,則將(Veri fi cationAlgorithms,sid,v)給S;
(2)簽名:當(dāng)FSDVTPM從簽名請求者接收到(Sign,sid,m),令 σ=s(m),然后驗證 v(m,s)=1。如果v(m,s)=1,則傳輸 (Signature,sid,m,σ)給 S,F(xiàn)SDVTPM接收并記錄(m,σ),否則將輸出一個錯誤信息給S,且停止簽名運(yùn)算。
(3)驗證:當(dāng)FSDVTPM從V收到(Verify,sid,m,σ,v′),如果v′=v,表示簽名者S沒有被攻擊者控制v(m,s)=1,如果在FSDVTPM中沒有(m,σ)這條記錄,將傳遞給S一個錯誤信息,并停止驗證運(yùn)算,輸出(Veri fi ed,sid,m,v′(m,σ))給 V。
動態(tài)TPM安全實現(xiàn)了簽名函數(shù)FSDVTPM。
證明:構(gòu)造角色,即真實環(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,σ))。
根據(jù)S′的操作可以發(fā)現(xiàn):S被攻擊時,兩個攻擊者之間存在S′可以完美模擬A的行為的聯(lián)系,所以Real和Ideal是難以分辨的;V被攻陷時,因為Real和Ideal的驗證過程一致,所以Real和Ideal也是難以分辨的。如果S、V都沒有被攻陷,Real過程中的簽名密鑰和加密密鑰對是根據(jù)TPM中RSA加密算法生成的。如果環(huán)境Z能夠分辨TPM和FSDVTPM的簽名,表明攻擊者A破解了RSA大模數(shù)解密算法問題,這與TPM使用的RSA算法的安全性相背,因此Real和Ideal難以區(qū)分。因此,根據(jù)定理1,虛擬機(jī)實現(xiàn)了安全加密函數(shù)FSDVTPM。由于動態(tài)TPM安全實現(xiàn)了加密函數(shù)FSDVTPM,動態(tài)TPM安全實現(xiàn)了簽名函數(shù)FSDVTPM,根據(jù)定理2復(fù)合協(xié)議安全性定理,動態(tài)TPM安全在UC的安全框架下實現(xiàn)了TPM的功能。
綜上所述,XEN虛擬機(jī)在UC框架中創(chuàng)建了動態(tài)安全可信虛擬平臺模塊,且可以給用戶計算環(huán)境提供一個可信根,作為虛擬可信計算環(huán)境初始的“可信根”。
將虛擬可信平臺模塊vTPM作為虛擬可信計算系統(tǒng)的初始“可信根”,在云端服務(wù)器虛擬可信計算信任鏈傳遞過程中,對虛擬可信計算環(huán)境的程序進(jìn)行信任度量(Trusted Measurement),直到整個虛擬信任鏈傳遞完成。
虛擬可信計算系統(tǒng)中的信任傳遞過程如下:在系統(tǒng)中每一層的信任傳遞過程中,通過可信根校驗可信根的下一層執(zhí)行代碼的數(shù)據(jù)完整性是否遭到威脅,如果下一層執(zhí)行代碼沒有被篡改,則將該層歸屬于可信范圍,并將可信根傳遞到下一層的可信執(zhí)行代碼;對于整個系統(tǒng)而言,通過可信根的逐層傳遞,該系統(tǒng)的可信范圍從可信根所在層傳遞到下一級;通過檢驗可信范圍邊界的下一層可信執(zhí)行代碼是否篡改,控制可信根不斷傳遞,實現(xiàn)對系統(tǒng)可信范圍的傳遞和信任鏈的建立,最終實現(xiàn)對虛擬可信計算系統(tǒng)環(huán)境的可信范圍整體認(rèn)證。以下是度量過程描述。
在啟動虛擬計算操作系統(tǒng)前,首先需要對虛擬機(jī)OS Loader進(jìn)行完整性檢驗,主要是因為OSLaoder是主引導(dǎo)記錄中的主引導(dǎo)程序,要確保信任范圍中的起始節(jié)點的可信任度。它的信任檢驗的實現(xiàn)一般是判斷主引導(dǎo)記錄中HASH值是否一致的判斷前提。另外,對于整個主引導(dǎo)程序計算進(jìn)行HASH計算后,HASH值一般掛載在主引導(dǎo)的備用存儲區(qū)。
DVTPM和OS loader通信,確保OS loader屬于可信范圍內(nèi),然后OS loader與虛擬服務(wù)機(jī)的OS kernel建立通信,虛擬服務(wù)機(jī)加載OS kernel后,可以度量在它之前在哪些軟件被運(yùn)行??梢钥闯觯贒VTPM的控制下,DVTPM將信任范圍擴(kuò)大到OS loader層,然后OS loader繼續(xù)將信任范圍擴(kuò)大到OS層,OS同樣將信任范圍給應(yīng)用軟件層,從而實現(xiàn)整體的信任傳遞。
軟件數(shù)據(jù)完整性是CIA三大屬性之一,也是判斷應(yīng)用軟件是否可信的基本要素。但是,軟件數(shù)據(jù)完整性還不能確保虛擬動態(tài)條件下應(yīng)用軟件的安全性和完整性。因此,上層軟件的度量除了基于HASH的完整性校驗度量外,還需進(jìn)行其他一些特殊的度量方法。隨著現(xiàn)代軟件的功能全面化發(fā)展,各種功能越來越智能化,應(yīng)用軟件的代碼規(guī)模也愈發(fā)龐大,度量所用的代碼產(chǎn)生的數(shù)據(jù)量也超乎尋常,因此需要對程序進(jìn)行有選擇性、有方向性的度量。應(yīng)該對其進(jìn)行多層次、多模塊的分析法,盡可能多地列舉多種度量層面,根據(jù)每個層面的比重值不同,確定最優(yōu)的度量點,實現(xiàn)對其更準(zhǔn)確的度量??梢詫?yīng)用軟件進(jìn)行可信的級別劃分,不可信和可信程度低的應(yīng)用軟件均不能通過度量。此外,由于軟件裝包后的模糊性,需對應(yīng)用軟件引入專家評估系統(tǒng),實現(xiàn)對應(yīng)用軟件的可信等級判定。只有通過完整性校驗且其安全等級被認(rèn)定為可信任的軟件,才能得到操作系統(tǒng)的運(yùn)行授權(quán)。
在真實的可信計算平臺中,核心可信度量根(Core Root of Trust for Measurement,CRTM)是可信計算平臺的一個核心可信度量根。它一般是內(nèi)嵌在操作系統(tǒng)中的一段指令,并放置在BIOS中。在云端服務(wù)器中,在XEN中的每一個用戶虛擬機(jī)的創(chuàng)建始于vTPM,具體過程如圖9所示。
圖9 虛擬信任鏈的傳遞
虛擬可信平臺模塊作為信任根,通過可信根的計算判斷下一級執(zhí)行代碼是否被篡改以及下一級引用程序代碼的真實性和完整性。如果沒有被篡改,則信任鏈的建立傳遞到可信根所在的下一級可信程序代碼,可信范圍就從可信根所在層擴(kuò)展到下一級。隨著控制運(yùn)行代碼不斷向下一級傳遞,最終可以實現(xiàn)信任鏈的線性傳遞和整體建立,實現(xiàn)可信范圍的整體延伸,為用戶構(gòu)建一個虛擬可信計算環(huán)境。
本文針對目前在云計算環(huán)境中用戶虛擬計算環(huán)境不可信的問題,利用可信平臺模塊虛擬化技術(shù),在云服務(wù)器端為用戶構(gòu)造一個虛擬可信平臺模塊,并在此基礎(chǔ)上為用戶在云服務(wù)器端構(gòu)造了一個虛擬的可信計算環(huán)境,從而有效保障現(xiàn)有的云計算用戶中虛擬計算環(huán)境的可信。通過安全性分析,證明了動態(tài)TPM安全在UC的安全框架下實現(xiàn)了TPM的功能。通過與現(xiàn)有的可信平臺模塊虛擬化方案對比發(fā)現(xiàn),提出的方案考慮了在云計算中虛擬機(jī)效率損耗問題,并且擁有更高的安全性和執(zhí)行效率,在用戶虛擬計算環(huán)境中具有更好的適應(yīng)性。