計 策,肖 軍,呂 翔
(中國人民解放軍31401 部隊70 分隊,黑龍江 哈爾濱 150096)
在信息泄露問題日益嚴(yán)重的背景下,如何保障虛擬機(jī)間通信安全就成為人們關(guān)注的焦點問題??缬蛱摂M機(jī)雖然也能夠起到一定的安全保護(hù)效果,但是不能從源頭上解決入侵破壞帶來的信息泄露風(fēng)險。本文從設(shè)計通信安全模型方面展開研究,利用安全模型實現(xiàn)對通信環(huán)境的監(jiān)控和維護(hù),從而為虛擬機(jī)跨域通信營造了安全環(huán)境,具有更強(qiáng)的實用性。
在Xen 虛擬機(jī)中,XenStore 的主要作用是連接應(yīng)用軟件和底層硬件,保證了底層硬件能夠根據(jù)應(yīng)用軟件下達(dá)的各項指令作出相應(yīng)的動作。PROCESS-A 就是基于XenStore 的這一功能,從而實時、全面地掌握物理主機(jī)上的運(yùn)行信息。特權(quán)虛擬機(jī)通過識別信息來源,將發(fā)送該信息的物理主機(jī)定義為A。同時,根據(jù)控制指令,將信息發(fā)往的目標(biāo)主機(jī)定義為B。判斷A 和B 是否為同一臺物理主機(jī)。如果判定結(jié)果為“是”,說明信息交換在物理主機(jī)內(nèi)部完成,這種情況下只需要啟用物理主機(jī)上的殺毒軟件或安全系統(tǒng)(如防火墻),即可達(dá)到保障通信安全的目的;如果判定結(jié)果為“否”,說明信息交換在兩臺不同的物理主機(jī)之間完成,這種情況下就需要利用TEDCM 安全通信機(jī)制,保證跨域虛擬機(jī)的通信安全。
基于TEDCM 構(gòu)建的通信安全模型,主要實現(xiàn)兩種功能:其一,核實被保護(hù)信息的發(fā)出系統(tǒng)和發(fā)往系統(tǒng)是否位于同一臺物理主機(jī)。其二,經(jīng)核實信息發(fā)出與接收的兩臺虛擬機(jī),均位于相同的物理主機(jī),調(diào)用系統(tǒng)內(nèi)部的鉤子函數(shù),通過提取信息特征對其做加密保護(hù),借助于前端驅(qū)動、后端驅(qū)動然后完成信息傳輸;經(jīng)核實信息發(fā)出與接收的兩臺虛擬機(jī),位于不同的物理主機(jī),基于鉤子函數(shù)加密之后,借助于真實網(wǎng)卡、外置通訊裝置等,將信息傳輸?shù)搅硪慌_物理主機(jī)上的虛擬機(jī)。其流程如圖1 所示。
圖1 基于TEDCM 的信息加密傳輸過程
結(jié)合上述流程可以發(fā)現(xiàn),TEDCM 功能的實現(xiàn),首先要依賴于鉤子函數(shù)對于傳輸信息特征值的提取。而鉤子函數(shù)判斷并提取特征信息的關(guān)鍵,就在于PROCESS-A。根據(jù)系統(tǒng)執(zhí)行PROCESS-A 的結(jié)果,可以準(zhǔn)確判斷發(fā)出該信息的虛擬機(jī),與將要接受該信息的虛擬機(jī),是否位于相同物理主機(jī)上。如果是同一臺物理主機(jī)上的內(nèi)部通信,說明該信息在發(fā)送前已經(jīng)被加密,此時TEDCM 要進(jìn)行解密;如果是不同物理主機(jī)上的跨域通信,為了保證信息在外部網(wǎng)絡(luò)中的傳輸安全,此時TEDCM 要進(jìn)行加密。
Xen 虛擬機(jī)由兩部分組成,即特權(quán)虛擬機(jī)和非特權(quán)虛擬機(jī)。在部署安全模型時,為提高響應(yīng)速度和減輕虛擬機(jī)運(yùn)行負(fù)載,需要將安全模式放在特權(quán)虛擬機(jī)上。當(dāng)位于不同物理主機(jī)上的兩臺虛擬機(jī)進(jìn)行信息交互時,同時啟動加/解密系統(tǒng)。此時,虛擬機(jī)將加密后的信息,依次通過前端、后端驅(qū)動,進(jìn)入到帶有安全模型的特權(quán)虛擬機(jī)中。在接收信息后,安全模型調(diào)用鉤子函數(shù),利用該函數(shù)可以快速檢索XenStore 中存儲的表數(shù)據(jù)。完成一邊數(shù)據(jù)檢索后,鉤子函數(shù)作出判斷并根據(jù)判斷結(jié)果執(zhí)行相應(yīng)的動作。若判斷結(jié)果為“否”,經(jīng)過加密后的數(shù)據(jù)可以通過通信回路,從虛擬機(jī)轉(zhuǎn)到物理主機(jī),再經(jīng)由物理主機(jī)上的網(wǎng)卡以及外部網(wǎng)絡(luò),傳輸?shù)街付ǖ牧硪慌_物理主機(jī)上。經(jīng)過虛擬化處理后,信息進(jìn)入到特權(quán)虛擬機(jī)上,XenStore 執(zhí)行解密操作,依次經(jīng)過后端、前端驅(qū)動后,最終達(dá)到另一臺虛擬機(jī)上。
2.1.1 基于特權(quán)虛擬機(jī)的安全模型
基于TEDCM 安全通信機(jī)制的安全模型,其正常運(yùn)行與功能實現(xiàn)需要使用到netfilter 框架。安全模型啟動之后,首先要進(jìn)行初始化設(shè)置,可以通過一個init()程序來實現(xiàn),如圖2 所示。
圖2 netfilter 的初始化程序
上述程序除了進(jìn)行安全模型的初始化處理外,還具有兩個判斷功能。功能之一是對所有輸入的數(shù)據(jù)包進(jìn)行判斷,目的在于識別這些數(shù)據(jù)包的來源;功能之二是對所有輸出的數(shù)據(jù)包進(jìn)行判斷,目的在于識別這些數(shù)據(jù)包的去向。其判斷依據(jù)主要是IP 地址,通過IP 是否一致最終判斷兩臺虛擬機(jī)是否部署在同一臺物理主機(jī)上。
2.1.2 基于非特權(quán)虛擬機(jī)的安全模型
非特權(quán)虛擬化操作系統(tǒng)發(fā)送消息抵達(dá)前端后,會進(jìn)入blkif_queue_request 函數(shù)中,對保存在數(shù)組中的數(shù)據(jù)進(jìn)行加/解密處理,根據(jù)DES 加解密的特點,里面有一個循環(huán)條件。循環(huán)加密流程為:安全模型提取前端驅(qū)動中的特征數(shù)據(jù),執(zhí)行判斷條件“全部數(shù)據(jù)是否執(zhí)行加/解密處理”。此時TEDCM 會對所有送達(dá)的數(shù)據(jù)進(jìn)行逐一驗證。完成第一遍篩選后,根據(jù)驗證結(jié)果執(zhí)行相應(yīng)的動作。若結(jié)果判定為“是”,則循環(huán)加密程序結(jié)束;反之,若結(jié)果判定為“否”,則重新返回,進(jìn)行第二遍加/解密。完成處理后再進(jìn)行第二次驗證,驗證結(jié)束后進(jìn)行條件判定,重復(fù)上述步驟,直到所有數(shù)據(jù)均完成加/解密處理后,跳出循環(huán)條件,完成整個循環(huán)加/解密流程。
TEDCM 安全模型是基于Linux 環(huán)境開發(fā)的,上文中提到的netfilter 也是Linux 系統(tǒng)中的一種通用框架。在模型的使用過程中,只需要借助于Makefile 文件,就能夠?qū)崿F(xiàn)對各類文件夾、數(shù)據(jù)包的篩選與判斷,從而簡化了安全模型在信息加密和風(fēng)險識別等方面的流程,提高了該安全模型的運(yùn)行效率。尤其是對于跨域虛擬機(jī)之間的大數(shù)據(jù)流量,也能夠完全滿足安全檢測需求,對提高通信安全效果有積極幫助。另外,TEDCM 安全模型使用C 語言進(jìn)行編程,豐富了數(shù)據(jù)結(jié)構(gòu)、提高了設(shè)計自由度,讓TEDCM安全模型的功能更加強(qiáng)大。
早期的Xen 虛擬機(jī),多采用半虛擬化技術(shù),在程序運(yùn)行時需要借助于物理主機(jī)上的客戶端,雖然其性能更加優(yōu)越,但是在信息交互時也面臨著更大的風(fēng)險。因此,在進(jìn)行跨域通信時,半虛擬化技術(shù)已經(jīng)逐漸被淘汰。相比之下,Xen 虛擬機(jī)的完全虛擬化運(yùn)行方式,則可以將所有程序,甚至包括客戶端都包含在虛擬機(jī)以內(nèi),保證了運(yùn)行環(huán)境的安全。基于完全虛擬化環(huán)境的信息交互操作,需要考慮的問題有:(1)信息借助于何種路徑完成通信?(2)該通訊路徑的安全環(huán)境如何,以及可能存在何種安全風(fēng)險?(3)在明確風(fēng)險的基礎(chǔ)上,應(yīng)制定何種策略來保障通信安全?
3.1.1 基于一臺物理主機(jī)的操作
理論上來說,一臺物理主機(jī)盡可能少部署虛擬化操作系統(tǒng),可以降低不同系統(tǒng)之間在信息交互時發(fā)生串?dāng)_的概率。但是在實際工作中,出于成本、功能等方面的考慮,每臺物理主機(jī)上可能同時運(yùn)行了若干虛擬化操作系統(tǒng)。這種情況下,就對Xen 虛擬機(jī)的可操作性和協(xié)調(diào)能力提出了極高的要求。為了實現(xiàn)這一功能,在特權(quán)虛擬機(jī)中只保留了后端驅(qū)動,而將前端驅(qū)動分別置于不同的客戶虛擬機(jī)中。不同虛擬機(jī)之間的通信路徑如圖3 所示。
圖3 位于同一物理主機(jī)上的客戶虛擬機(jī),分別設(shè)有一個前端驅(qū)動。并且利用通用接口,與特權(quán)服務(wù)器上的后端驅(qū)動相連接。具體的流程為:客戶端虛擬機(jī)上的任何一項指令(包括信息的輸出與輸入指令),首先到達(dá)本機(jī)的前端驅(qū)動上。但是在虛擬化操作系統(tǒng)中,該指令無法直接傳達(dá)到底層的設(shè)備。這種情況下,就需要通過跨域通信的方式,讓前端驅(qū)動中的信息傳遞到位于特權(quán)虛擬機(jī)上的后端驅(qū)動。然后從特權(quán)虛擬機(jī)上,實現(xiàn)控制信息與底層設(shè)備的連接,實現(xiàn)程序響應(yīng)或控制設(shè)備動作。
圖3 同一臺物理主機(jī)上不同虛擬機(jī)之間的通信路徑
3.1.2 基于不同兩臺物理主機(jī)的操作
隨著云技術(shù)的發(fā)展,各類云平臺的出現(xiàn)為虛擬機(jī)的跨域通信帶來了更多的方便。目前,云存儲因為具有容量上限更高、安全性能更好等諸多優(yōu)勢,已經(jīng)逐漸取代了傳統(tǒng)的物理服務(wù)器,成為一種主流選擇。將虛擬化操作系統(tǒng)置于兩臺云服務(wù)器中,開展信息交互的路徑如圖4 所示。
結(jié)合圖4 可知,客戶虛擬機(jī)發(fā)布指令或消息以后,首先到達(dá)本機(jī)的前端驅(qū)動上。然后借助于通用接口,準(zhǔn)備向特權(quán)虛擬機(jī)的后端驅(qū)動傳輸。在傳輸過程中,Xen 虛擬機(jī)的監(jiān)視程序(VMM)啟動,并且對數(shù)據(jù)包進(jìn)行檢測和過濾,確保該信息的安全性。通過檢測之后,數(shù)據(jù)包到的后端驅(qū)動,并經(jīng)過特短虛擬機(jī)最終傳輸?shù)轿锢碇鳈C(jī)上的網(wǎng)卡中。
圖4 兩臺云服務(wù)器間的虛擬通信路徑
在風(fēng)險分析時,需要重點關(guān)注的內(nèi)容有:其一,選擇實力較強(qiáng)、信譽(yù)良好的虛擬化供應(yīng)商,有助于保證虛擬機(jī)間通信環(huán)境的安全性;其二,加強(qiáng)對信息交互過程的實時監(jiān)控,避免跨域通信過程中出現(xiàn)信息泄露或攔截等風(fēng)險。在信息傳輸前進(jìn)行加密,在信息接收后再進(jìn)行解密,同時還要加強(qiáng)對傳輸媒介的監(jiān)管,才能讓整個通信流程更加安全,避免涉密信息的丟失、泄露,確保通信安全。
大數(shù)據(jù)時代的網(wǎng)絡(luò)通信需求激增,用虛擬機(jī)代替物理主機(jī),除了降本增效外,還可以為用戶提供更加便捷的操作和更加豐富的功能,因此得到了推廣使用。隨著虛擬機(jī)應(yīng)用越來越廣泛,隨之而來的跨域通信也成為常態(tài),保障跨域通信的信息安全,成為當(dāng)下研究的熱門課題。通過設(shè)計基于TEDCM 的安全模型,以及加強(qiáng)虛擬通信路徑安全管理等綜合措施,營造出安全水平較高的跨域通信環(huán)境,進(jìn)而支持虛擬機(jī)功能的更好發(fā)揮。