趙 軍 ,王 曉
(1.張家口學院 數(shù)學與信息科學學院,河北 張家口075000;2.天津財經(jīng)大學 理工學院,天津300222)
云計算環(huán)境中的信息安全問題是一個系統(tǒng)性的工程問題[1],以往的安全機制缺乏關(guān)聯(lián)性,只是從某些方面去解決特定問題,不能構(gòu)建整體性的解決方案[2]。 可信計算技術(shù)作為信息安全的有力保障[3],基于可信根構(gòu)建貫穿系統(tǒng)各個關(guān)鍵部分的信任鏈,從信任的角度入手整合系統(tǒng)中的各項安全機制,為系統(tǒng)提供整體性的安全支撐。將國產(chǎn)可信計算技術(shù)[4]應(yīng)用于云計算環(huán)境中,構(gòu)建國產(chǎn)可信的云安全基礎(chǔ)設(shè)施環(huán)境,是解決我國云安全問題的有效途徑。 在最新頒布的《信息安全技術(shù) 網(wǎng)絡(luò)安全等級保護基本要求》(等保2.0)中[5-6],加入了基于國產(chǎn)可信計算技術(shù)的可信驗證要求,因此基于國產(chǎn)可信計算構(gòu)建安全可信的云計算環(huán)境具有重要現(xiàn)實意義。
可信根作為信任的源頭是可信計算技術(shù)的核心組件。 我國提出了自己的可信根可信密碼模塊(Trusted Cryptography Module,TCM)。 傳 統(tǒng) 的TCM 適用于單機平臺,通過TCM 可以保證單機計算系統(tǒng)的安全可信性,但是無法滿足云計算環(huán)境中多虛擬機對可信根的使用需求。 為了使TCM 適用于云計算環(huán)境,本文提出一種TCM 虛擬化方案,構(gòu)建云可信根(Cloud TCM,C-TCM)架構(gòu),為云計算節(jié)點中物理宿主機及多虛擬機提供可信根服務(wù),為構(gòu)建安全可信的云計算環(huán)境提供有力支撐。
目前針對可信根虛擬化主要有三種解決方案:基于軟件的可信根虛擬化方案、基于硬件的可信根虛擬化方案和可信根半虛擬化方案。
基于軟件的可信根虛擬化是指用軟件模擬硬件芯片功能,虛擬可信根提供與物理可信根一致的訪問接口,可實現(xiàn)可信根的大部分功能,只有少數(shù)對安全性要求較高的功能由物理可信根執(zhí)行。 最早提出基于軟件的可信根虛擬化方案的是IBM 的研究員BERGER S[7]等人,他們基于Xen 架構(gòu)設(shè)計并實現(xiàn)了TPM 的虛擬化架構(gòu)。 為了提高虛擬可信根的安全性,ANDERSON M J[8]等人和MURRAY D G[9]等人對BERGER S[7]等人的方案進行了改進,基于隔離增強安全性的思想,把 vTPM 實例運行在隔離域中。當前Xen 架構(gòu)采用StubDom[10]機制,每個子域中運行一個Mini-OS[11]。 將虛擬根管理器和虛擬根實例分別放置在不同的子域中進行隔離,以增強安全性。 HE R Y[12]等人提出了基于軟件的虛擬可信根的uTPM,HOSSEINZADEH S[13]等人提出了基于容器的可信根虛擬化方案。 嚴飛[14]等人提出了一種基于Intel 軟件擴展保護(Software Guard Extension,SGX)技術(shù)的vTPM 安全增強方案(vTPM Security Enhancement,vTSE),為vTPM 實例提供了有效的安全保障。在安全性方面,基于軟件的虛擬化方案的隔離性較差,密碼資源缺乏硬件保護;在效率方面,軟算法與硬件相比性能不足,效率較低。
基于硬件的可信根虛擬化是指對物理可信根的設(shè)計實現(xiàn)進行改進,在可信根物理環(huán)境中同時運行多個虛擬根實例,實現(xiàn)虛擬根對硬件可信根資源的共享。 劉明達[15]等人提出一種基于SR-IOV 的TCM 硬件虛擬化方案并構(gòu)建了可信虛擬環(huán)境的信任鏈。 張伶俐[16]等人基于嵌入式系統(tǒng)實現(xiàn)了虛擬TCM 并構(gòu)建了嵌入式系統(tǒng)中的信任鏈。王冠[17]等人對基于可信根服務(wù)器的虛擬TCM 密鑰管理功能進行了相關(guān)研究。 段翼真[18]等人提出了一種支持多域訪問的可信云終端設(shè)計,實現(xiàn)了TCM 的虛擬化和信任鏈傳遞機制。 與軟件虛擬化方案相比該方案的安全性和執(zhí)行效率更高。
可信根半虛擬化方案是指通過在虛擬機監(jiān)視器層添加對底層物理可信根訪問的調(diào)度機制,并對可信根內(nèi)部資源進行虛擬化,實現(xiàn)虛擬機對物理可信根的共享。 ENGLAND P[19]等人提出了TPM 半虛化方案,通過在Hypervisor 層添加軟件組件,對物理根的使用進行調(diào)度協(xié)調(diào),實現(xiàn)在多個虛擬機之間安全共享一個物理TPM。 YAP J Y[20]等人提出了基于TPM2.0 規(guī)范的企業(yè)化TPM 半虛擬化架構(gòu)。 該方案可為虛擬機提供物理可信根的功能,但有些功能接口會發(fā)生變化。
對各種可信根虛擬化方案的對比如表1 所示。
表1 可信根虛擬化方案對比
通過上述分析對比可知,每種虛擬化方案有各自的優(yōu)勢和缺點。 本文結(jié)合硬件虛擬化和半虛擬化方案的特點,提出一種云可信根(Cloud TCM,C-TCM)設(shè)計方案,對TCM 物理可信根進行擴展,并在虛擬機監(jiān)視層添加管理機制,使資源有限的云可信根物理環(huán)境能同時支持多個虛擬可信根運行,在保障安全性同時,提高執(zhí)行效率,從而滿足云計算平臺對可信根的使用需要。
針對物理TCM 無法同時為云服務(wù)器的物理宿主機和虛擬機提供可信根服務(wù)的問題, 提出一種適用于云計算環(huán)境的云可信根C-TCM 架構(gòu)。 該方案結(jié)合了可信根硬件虛擬化方案和半虛擬化方案的特點,對TCM 硬件芯片的設(shè)計實現(xiàn)進行改進擴展,并在虛擬機監(jiān)視器層部署虛擬可信根管理機制, 實現(xiàn)宿主機可信根和虛擬機可信根對C-TCM 硬件資源的共享, 同時滿足物理宿主機及虛擬機對可信根的使用需求。 云可信根C-TCM 的總體架構(gòu)如圖1 所示。
C-TCM 總體架構(gòu)包括位于硬件層的C-TCM 物理環(huán)境,位于宿主機操作系統(tǒng)層的C-TCM 物理驅(qū)動和vTCM 上下文安全存儲機制,位于虛擬機監(jiān)視器層的vTCM 管理機制和vTCM 后端驅(qū)動,以及位于虛擬機層的vTCM 前端驅(qū)動。
圖1 C-TCM 總體架構(gòu)圖
在硬件層,對原有TCM 硬件芯片的設(shè)計實現(xiàn)進行改進和擴展,構(gòu)建C-TCM 物理環(huán)境。為了同時滿足物理宿主機和虛擬機的可信根使用需求,在C-TCM物理環(huán)境中分別構(gòu)建為物理宿主機提供可信功能的宿主機可信根(host TCM,hTCM),以及為虛擬機提供可信功能的虛擬可信根(virtual TCM,vTCM)。由于受資源限制,C-TCM 物理環(huán)境只能為有限個vTCM 提供硬件資源支持。 當虛擬機的數(shù)量多于C-TCM 支持的vTCM 數(shù)量時,通過vTCM 調(diào)動機制對vTCM 上下文進行調(diào)度,實現(xiàn)虛擬根對vTCM 資源的共享,從而支持多個虛擬機的可信根使用請求。hTCM 始終位于C-TCM 內(nèi)部為物理宿主機提供可信支持,不參與調(diào)度。
C-TCM 物理驅(qū)動位于宿主機操作系統(tǒng)層,負責接收對C-TCM 的使用及管理命令。 C-TCM 物理驅(qū)動接收三種命令,分別為:物理宿主機對可信根hTCM的使用請求、虛擬機對可信根vTCM 的使用請求以及vTCM 管理機制對C-TCM 的管理命令。 為了區(qū)分hTCM 命令及vTCM 命令,在vTCM 命令頭添加vTCM 標識及發(fā)出該命令的虛擬機編號。vTCM 調(diào)度機制根據(jù)虛擬機編號確定與其關(guān)聯(lián)的虛擬可信根。
vTCM 上下文中存儲了vTCM 的關(guān)鍵信息,包括虛擬背書密鑰(virtual Endorsement Key,vEK)、虛擬平臺身份密鑰(virtual Platform Identity Key,vPIK)、虛擬存儲根密鑰(virtual Storage Root Key,vSRK)、虛擬平臺配置寄存器(virtual Platform Configuration Register,vPCR)值、非易失性寄存器值、各類證書以及與虛擬機保持綁定的關(guān)聯(lián)信息等。 當vTCM 調(diào)度機制將vTCM 上下文從C-TCM 物理環(huán)境中調(diào)出時,通過hTCM 將其加密存儲到宿主機硬盤上。 當需要重新調(diào)入到C-TCM 物理環(huán)境中時,需hTCM 對其進行解密后再調(diào)入。
受硬件資源限制,C-TCM 僅能支持數(shù)量有限的vTCM。 為了實現(xiàn)多虛擬機對C-TCM 的共享,在虛擬機監(jiān)視器層部署vTCM 管理機制, 包括vTCM調(diào)度機制和vTCM 生命周期管理機制。
2.3.1 vTCM 調(diào)度機制
vTCM 調(diào)度機制負責接收從vTCM 后端驅(qū)動傳遞過來的上層虛擬機的可信根使用請求,將其傳遞給相應(yīng)的虛擬可信根。 如果當前虛擬機對應(yīng)的虛擬可信根在C-TCM 物理環(huán)境中運行,則vTCM 接收并執(zhí)行請求命令,并將響應(yīng)結(jié)果回傳給虛擬機。 如果虛擬可信根在C-TCM 物理環(huán)境外部,則根據(jù)調(diào)度算法對安全存儲在硬盤上的虛擬根上下文進行調(diào)度,將其從外存調(diào)入到C-TCM 物理環(huán)境內(nèi)部,再執(zhí)行虛擬機的請求命令。 在物理資源受限情況下,通過vTCM 調(diào)度機制實現(xiàn)vTCM 對C-TCM 硬件資源的共享,支持了多虛擬機對可信根的使用請求。
為了減少vTCM 上下文調(diào)度切換的次數(shù),為每個vTCM 創(chuàng)建一個命令緩存隊列,如圖2 所示。 將對vTCM 的使用請求暫存在緩存隊列當中,如對vTCM1的請求有A1、A2、A3。
圖2 虛擬根命令緩存隊列
為了提高調(diào)度效率,調(diào)度的優(yōu)先級由虛擬機等待時間及緩存隊列中的命令數(shù)共同決定。 設(shè)定一個等待時間閾值為ρ,當虛擬機的等待時間超過ρ 時,優(yōu)先對其vTCM 上下文進行調(diào)度。 當?shù)却龝r間不超過ρ 時,優(yōu)先調(diào)度緩存命令數(shù)最多的vTCM 上下文。設(shè)vTCMn 緩存隊列中的命令數(shù)為ωn, 則所有等待調(diào)度的vTCM 的命令數(shù)構(gòu)成集合W,W=(ω1,ω2,…,ωn)。 設(shè)vTCMn 等 待 調(diào) 度 的 時 間 為τn,則 所 有vTCM等 待 調(diào) 度 的 時 間 構(gòu) 成 集 合T,T=(τ1,τ2,…,τn)。 從集 合W 中 選 出 緩 存 隊 列 中 最 大 值ωi=Max(ω1,ω2,…,ωn),i∈1,2,…,n。從集合T 中選出等待時間最大值φj=Max(φ1,φ2,…,φn),j ∈1,2,…,n。 具 體 調(diào)度算法如下:
//當?shù)却{(diào)度時間沒有超過閾值ρ 時
//則調(diào)度緩存隊列中命令數(shù)最多的vTCMi 上下文
//否則,調(diào)度等待時間超出閾值ρ 的vTCMj 上下文
vTCM 上下文的調(diào)度優(yōu)先級由等待時間和緩存命令數(shù)兩個因素共同決定,既保證了虛擬機等待時間不會過長,也滿足了對虛擬根使用較多的虛擬機的請求。
2.3.2 vTCM 生命周期管理機制
vTCM 生命周期管理機制負責對vTCM 生命周期中的各個階段進行管理,包括vTCM 的創(chuàng)建、初始化、遷移、銷毀等,從而實現(xiàn)vTCM 與虛擬機的綁定及生命周期同步,保證虛擬機在整個生命周期中的安全可信性。
(1)虛擬可信根創(chuàng)建
云計算節(jié)點接收到控制節(jié)點發(fā)出的虛擬機創(chuàng)建指令后,由虛擬機監(jiān)視器為虛擬機分配必要的資源,包括虛擬CPU、虛擬內(nèi)存、虛擬網(wǎng)絡(luò)設(shè)備等。 vTCM生命周期管理機制在虛擬機創(chuàng)建之前為其創(chuàng)建一個空的vTCM 上下文,并分配唯一的ID 號、易失性存儲空間、非易失性存儲空間等資源。 通過虛擬根ID 及虛擬機ID 實現(xiàn)vTCM 與虛擬機的關(guān)聯(lián)綁定。
(2)虛擬可信根初始化
在虛擬機啟動之前,通過vTCM 調(diào)度機制將vTCM上下文調(diào)入到C-TCM 的物理環(huán)境中,對其進行初始化。 由hTCM 為vTCM 生成各類關(guān)鍵密鑰,包括vEK、vPIK 及vSRK,并為其頒發(fā)vEK 證書。 在虛擬機首次啟動時,獲取啟動各階段的度量值形成度量基準值,存儲在vTCM 的非易失寄存器中。
(3)虛擬可信根遷移
vTCM 生命周期管理機制截獲到虛擬機遷移指令后, 首先驗證遷移源平臺和目標平臺的可信性,并建立遷移安全通道。 通過安全通道將虛擬根數(shù)據(jù)遷移到目標平臺,完成虛擬可信根的遷移。 更新源平臺及目標平臺上的關(guān)聯(lián)列表,保證虛擬可信根和虛擬機之間的綁定關(guān)系。
(4)虛擬可信根掛起
當vTCM 生命周期管理機制攔截到虛擬機掛起指令時,需將其相應(yīng)的虛擬根設(shè)置為掛起狀態(tài)。 通過vTCM 調(diào)度機制將虛擬可信根上下文從C-TCM物理環(huán)境中調(diào)出,對其非易失性存儲器中的虛擬根密鑰信息、vPCR 值以及易失性存儲器中的寄存器狀態(tài)等信息進行安全存儲,以備虛擬根恢復之用。
(5)虛擬可信根恢復
vTCM 生命周期管理機制攔截到虛擬機恢復運行指令時,首先恢復其虛擬根執(zhí)行。 將安全存儲在物理磁盤上的vTCM 上下文信息解密后調(diào)入C-TCM中,并根據(jù)掛起時保存的寄存器狀態(tài)信息,恢復寄存器運行,準備為虛擬機提供安全服務(wù)。
(6)虛擬可信根銷毀
vTCM 生命周期管理機制攔截到虛擬機銷毀指令時,將與虛擬機綁定的虛擬根銷毀。 如果虛擬根上下文在C-TCM 內(nèi)部, 則首先將其調(diào)出再進行銷毀刪除。 如果虛擬根上下文在外部磁盤加密存儲,則直接將其進行刪除。
vTCM 生命周期管理機制解決了虛擬根生命周期管理問題,實現(xiàn)了虛擬根生命周期與虛擬機生命周期的一致性,保證了虛擬機全生命周期的安全可信性。
在客戶虛擬機上運行可信應(yīng)用,vTCM 前端驅(qū)動負責接收虛擬機對可信根的使用請求,并傳遞到虛擬機監(jiān)視器層的后端驅(qū)動,進一步通過vTCM 管理機制、C-TCM 物理驅(qū)動將請求傳遞給虛擬可信根。 當虛擬可信根完成請求時,將結(jié)果回傳給虛擬機,完成對可信根的使用。
以上為C-TCM 的總體架構(gòu),通過該架構(gòu)實現(xiàn)TCM 的虛擬化,同時為宿主機和各個虛擬機提供基于硬件可信根的保護,保證云服務(wù)器整體的安全可信性。
本文提出一種國產(chǎn)可信根TCM 的虛擬化架構(gòu),為云計算平臺設(shè)計了云可信根C-TCM,該方案解決了物理TCM 無法應(yīng)用于云計算環(huán)境為物理宿主機和虛擬機提供可信根功能的問題,通過C-TCM 可保證物理宿主機和虛擬機啟動和運行過程中的安全可信性。 目前面臨的主要問題是硬件虛擬化涉及對芯片的改進和擴展,實現(xiàn)難度較大。 在下一步的研究中,將實現(xiàn)C-TCM 芯片的原型系統(tǒng),對其功能和性能進行相關(guān)驗證。