亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

高效的基于嵌套虛擬化的虛擬機(jī)安全保護(hù)方法及系統(tǒng)與流程

文檔序號(hào):11690952閱讀:472來源:國知局
本發(fā)明涉及云計(jì)算平臺(tái)系統(tǒng)安全
技術(shù)領(lǐng)域
:,具體地,涉及高效的基于嵌套虛擬化的虛擬機(jī)安全保護(hù)方法及系統(tǒng)。
背景技術(shù)
::在云計(jì)算平臺(tái)中,虛擬化技術(shù)通常被用來高效整合服務(wù)器,提高包括處理器、內(nèi)存在內(nèi)的硬件的利用率。同時(shí),虛擬化技術(shù)也通常被用于做虛擬機(jī)之間的隔離,防止惡意虛擬機(jī)訪問其他虛擬機(jī)中的內(nèi)存和磁盤存儲(chǔ)的隱私數(shù)據(jù)。但是,隨著多租戶云計(jì)算平臺(tái)中虛擬化層軟件棧的日益龐大和復(fù)雜,整個(gè)系統(tǒng)的可信基也逐漸增大,租戶在虛擬機(jī)中存儲(chǔ)的隱私數(shù)據(jù)面臨著來自外部和內(nèi)部共同的威脅。一方面,隨著虛擬化層的功能性日益繁多,虛擬化層軟件棧的代碼量也日益擴(kuò)大,其中漏洞數(shù)目也越來越多,如根據(jù)cve的統(tǒng)計(jì),截止到2015年,當(dāng)前主流的3大虛擬化平臺(tái)vmware、xen和kvm分別被披露了234個(gè)、135個(gè)和89個(gè)已知的漏洞,外部攻擊可以通過利用這些漏洞控制虛擬化層軟件棧,從而威脅整個(gè)系統(tǒng)的安全性。另一方面,在云平臺(tái)內(nèi)部也存在著不安全因素,比如隨著安全事故的發(fā)生(如2010年google公司的雇員竊取用戶的隱私數(shù)據(jù)),云平臺(tái)中惡意的管理人員也成為了一個(gè)潛在的威脅。為了增強(qiáng)虛擬化平臺(tái)的安全性,避免過大的攻擊面,之前的研究提出將虛擬化層的軟件棧(虛擬機(jī)監(jiān)控器)移除出可信計(jì)算基。其中最具代表性的工作是cloudvisor。由于在傳統(tǒng)的虛擬化框架中,虛擬化監(jiān)控器處于整個(gè)系統(tǒng)的最高權(quán)限層,一旦其被控制,是沒有辦法通過軟件的方法進(jìn)行阻止的,因此,cloudvisor提出加入一層新的抽象層,通過嵌套虛擬化技術(shù),將虛擬機(jī)監(jiān)控器移出最高權(quán)限層,從而防止惡意的虛擬機(jī)監(jiān)控器對(duì)整個(gè)系統(tǒng)造成破壞。研究指出,在虛擬化環(huán)境中,虛擬機(jī)隱私和完整性的保護(hù)和其他功能性的邏輯是相互獨(dú)立的,因此cloudvisor系統(tǒng)通過將安全保護(hù)機(jī)制的邏輯從整個(gè)虛擬化層剝離出來,在嵌套虛擬化層對(duì)虛擬機(jī)監(jiān)控器進(jìn)行監(jiān)控,從而保護(hù)虛擬機(jī),防止虛擬機(jī)中的隱私數(shù)據(jù)被虛擬化層竊取和篡改。具體來說,如圖1所示,在cloudvisor的架構(gòu)中,虛擬機(jī)監(jiān)控器將被置于非特權(quán)指令集中,并使用擴(kuò)展頁表(ept)機(jī)制保護(hù)用戶虛擬機(jī)不受到未授權(quán)的訪問。虛擬機(jī)監(jiān)控器對(duì)用戶虛擬機(jī)進(jìn)行的所有敏感操作都將下陷到cloudvisor中接受安全檢查。這種機(jī)制很好地將安全性與功能性解耦合,在保證功能完備的同時(shí)盡量減小了可信計(jì)算基的大小,有利于對(duì)可信基進(jìn)行進(jìn)一步的正確性驗(yàn)證。因此在cloudvisor中可信基僅僅有5.5k行代碼,相比于龐大的虛擬機(jī)監(jiān)控器具有更加簡單的邏輯及更高的可信性。然而,cloudvisor這種基于嵌套虛擬化的方案存在一個(gè)嚴(yán)重的問題:由于嵌套虛擬化層的引入,使得虛擬機(jī)到虛擬化層的路徑必須經(jīng)過嵌套虛擬化層,這就對(duì)整個(gè)系統(tǒng)造成了巨大的性能損失。如圖2所示,在傳統(tǒng)的虛擬化框架中,虛擬機(jī)的特權(quán)指令或者特定的事件直接被虛擬化層攔截,通過一次虛擬機(jī)下陷(vmexit)和一次虛擬機(jī)進(jìn)入(vmentry)即可完成整個(gè)路徑。然而在cloudvisor框架中,所有的操作首先進(jìn)入嵌套虛擬化層,再由嵌套虛擬化層的軟件將控制權(quán)交還給虛擬化層,在虛擬化層處理完之后,再進(jìn)入嵌套虛擬化層,最后返回虛擬機(jī)。另外,在虛擬化層處理過程中,由于虛擬化層屬于非特權(quán)級(jí)的環(huán)境中,某些特定的特權(quán)操作還會(huì)下陷到嵌套虛擬化層進(jìn)行模擬,因此,原來一次vmexit就能完成的操作,需要至少兩次(一般情況下會(huì)遠(yuǎn)遠(yuǎn)大于兩次)的vmexit才能完成,從而對(duì)整個(gè)系統(tǒng)造成巨大的性能損失。造成這些性能損失的根本原因在于兩點(diǎn):第一,由于之前硬件提供的功能和特性,很多操作和事件必須要下陷到特權(quán)級(jí)模式(即嵌套虛擬化層中)進(jìn)行處理,沒有一套可行的方法能夠讓處于非特權(quán)級(jí)中的相互隔離的兩個(gè)實(shí)體(虛擬機(jī)和虛擬機(jī)監(jiān)控器)直接進(jìn)行交互;第二,出于對(duì)安全的考量,嵌套虛擬化層必須對(duì)兩個(gè)實(shí)體(虛擬機(jī)和虛擬機(jī)監(jiān)控器)的交互進(jìn)行攔截,對(duì)虛擬機(jī)監(jiān)控器的操作進(jìn)行檢查,從而防止惡意的虛擬機(jī)監(jiān)控器竊取和篡改虛擬機(jī)的內(nèi)存磁盤數(shù)據(jù)。然而,隨著硬件的發(fā)展,第一個(gè)根本原因(即在特定操作和事件中必然發(fā)生vmexit)已經(jīng)不再是必須的了。比如,intel對(duì)硬件虛擬化提供了更為高級(jí)的支持,許多硬件特性都使得越來越多的操作和事件都可以被配置為不引起vmexit,以下列舉6個(gè)相應(yīng)的硬件特性實(shí)例來進(jìn)行詳細(xì)的說明:1)vmfunc(eptpswitching):在虛擬化環(huán)境中,內(nèi)存虛擬化是通過兩級(jí)頁表映射實(shí)現(xiàn)的,如圖1所示,內(nèi)存虛擬化的兩級(jí)頁表機(jī)制客戶虛擬機(jī)中每個(gè)客戶虛擬地址(gva)首先會(huì)被映射到一個(gè)客戶物理地址(gpa),之后在vmm里面,每個(gè)客戶物理地址又會(huì)被映射為一個(gè)宿主機(jī)物理地址(hpa)。也就是說在vmm里面會(huì)維護(hù)一個(gè)頁表(intel中被稱為ept),該頁表會(huì)對(duì)所有客戶虛擬機(jī)中的物理地址進(jìn)行映射,只有存在于該頁表中的映射的客戶機(jī)地址才會(huì)被反映在真實(shí)的物理內(nèi)存中。該頁表通過一個(gè)硬件寄存器進(jìn)行訪問,該寄存器被稱為eptpointer(eptp)。理論上,完全可以通過操作ept(即改變gpa到hpa之間的映射)來操作客戶機(jī)中的內(nèi)存分配,但是在正常模式下,修改ept中地址的映射關(guān)系都是由vmm進(jìn)行操作的,在虛擬機(jī)中切換不同的eptp會(huì)引起虛擬機(jī)下陷,造成比較大的性能開銷。而vmfunc是intel提出的一套硬件機(jī)制,eptpswitching是其包含的一項(xiàng)功能,即允許在非特權(quán)級(jí)的模式下能夠直接切換相應(yīng)的eptp,而不引發(fā)vmexit。當(dāng)然,前提是特權(quán)級(jí)軟件預(yù)先配置好可選的eptp,而非特權(quán)級(jí)只允許在有限的幾個(gè)配置好的eptp中進(jìn)行切換。2)virtualizationexception(ve):在傳統(tǒng)的虛擬化環(huán)境中,在虛擬機(jī)運(yùn)行時(shí)如果發(fā)現(xiàn)當(dāng)前訪問的物理頁在ept中沒有被映射,則會(huì)發(fā)生一個(gè)事件,即eptviolation,該事件會(huì)造成vmexit,從而由特權(quán)級(jí)的軟件進(jìn)行處理(比如,填充相應(yīng)的ept項(xiàng))。而ve則是intel提出的一個(gè)硬件特性,在進(jìn)行了相應(yīng)的配置之后,可以使得eptviolation不會(huì)引發(fā)vmexit,而是作為一個(gè)普通的異常(exception),直接觸發(fā)非特權(quán)級(jí)(如虛擬機(jī))中的異常處理函數(shù)進(jìn)行處理。3)vmcsshadowing:在intel硬件虛擬化中的cpu虛擬化中,所有和cpu相關(guān)的信息都會(huì)被保存在一個(gè)數(shù)據(jù)結(jié)構(gòu)中,該數(shù)據(jù)結(jié)構(gòu)被稱為vmcs。這些數(shù)據(jù)結(jié)構(gòu)保存了虛擬機(jī)(vm)和主機(jī)(host)的狀態(tài),以及一些控制信息。vmcs會(huì)被加載在特定的內(nèi)存中,當(dāng)發(fā)生vmentry的時(shí)候,處理器會(huì)加載vmcs中和虛擬機(jī)相關(guān)的狀態(tài),在發(fā)生vmexit的時(shí)候,處理器會(huì)加載vmcs中和主機(jī)相關(guān)的狀態(tài)。在傳統(tǒng)的虛擬化環(huán)境中,對(duì)vmcs的訪問只能由特權(quán)級(jí)軟件進(jìn)行,非特權(quán)級(jí)中產(chǎn)生的訪問會(huì)引發(fā)vmexit,因此如果將虛擬機(jī)監(jiān)控器放置在非特權(quán)級(jí)中,由于其會(huì)頻繁訪問vmcs,因此會(huì)造成大量的vmexit。而vmcsshadowing機(jī)制使得在經(jīng)過相應(yīng)的映射之后,非特權(quán)級(jí)模式下的軟件也能夠直接修改內(nèi)存中的vmcs。4)apicvirtualization:在intel多核處理器中,系統(tǒng)軟件如果處理中斷相關(guān)事務(wù),需要與apic(advancedprogrammableinterruptcontroller)交互。apic的功能包括兩點(diǎn):1)從內(nèi)部或外部接收中斷,并傳送給相應(yīng)的處理器;2)在多核系統(tǒng)中為某處理器向其他處理器發(fā)送處理器間中斷(ipi)。然而,在虛擬化環(huán)境中,虛擬機(jī)無法直接接觸apic,需要由虛擬機(jī)監(jiān)控器為其模擬apic操作。具體而言,客戶虛擬機(jī)任何訪問apic的操作都會(huì)造成一次下陷(vmexit),之后虛擬機(jī)監(jiān)控器檢查相應(yīng)的下陷信息,從而為虛擬機(jī)完成對(duì)應(yīng)的模擬。為了消除apic模擬帶來的下陷開銷,intel推出了apic虛擬化技術(shù),由硬件為每個(gè)虛擬機(jī)提供apic的模擬。此時(shí),客戶虛擬機(jī)的apic操作將不再下陷。5)postedinterrupt:apic虛擬化技術(shù)支持postedinterruptprocessing,允許vmm向一個(gè)正在運(yùn)行的虛擬cpu直接發(fā)送中斷,這就避免了一次由中斷帶來的下陷。然而,發(fā)送postedinterrupt依然要求另一個(gè)處理器上運(yùn)行著虛擬機(jī)監(jiān)控器。6)iommu:為了使虛擬機(jī)監(jiān)控器不參與整個(gè)中斷的轉(zhuǎn)發(fā),將來自物理設(shè)備的中斷直接發(fā)送給某虛擬cpu。可以使用最新的iommu技術(shù)。借助iommu,vmm將某物理設(shè)備直接綁定給一個(gè)虛擬機(jī),由其獨(dú)占此設(shè)備。來自獨(dú)占設(shè)備中斷的轉(zhuǎn)發(fā)需要借助iommu中的中斷重映射表(interruptremappingtable)。在中斷重映射表中,虛擬機(jī)監(jiān)控器設(shè)置某中斷的轉(zhuǎn)發(fā)類型,決定硬件如何處理這個(gè)中斷。若此中斷的類型是posting模式,硬件將借助apic虛擬化中的postedinterruptprocessing功能,直接將其插入正在運(yùn)行的虛擬cpu中。上述這些新的硬件特性提供了一個(gè)機(jī)遇,即在發(fā)生某些特定事件和操作的時(shí)候不引發(fā)vmexit,而是由非特權(quán)級(jí)模式中的實(shí)體直接進(jìn)行處理,從而避免了大量vmexit造成的性能損失。同時(shí),由于vmfunc的存在,為非特權(quán)級(jí)模式下不同實(shí)體之間直接交互帶來了可能性,可以通過改變eptp達(dá)到不同實(shí)體間的上下文切換的效果。因此,在以上所提到的硬件支撐的基礎(chǔ)上,如何在不產(chǎn)生vmexit的情況下保證虛擬機(jī)和虛擬機(jī)監(jiān)控器的隔離性,將是需要解決的關(guān)鍵問題。技術(shù)實(shí)現(xiàn)要素:針對(duì)現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種高效的基于嵌套虛擬化的虛擬機(jī)安全保護(hù)方法及系統(tǒng)。根據(jù)本發(fā)明提供的高效的基于嵌套虛擬化的虛擬機(jī)安全保護(hù)方法,包括如下步驟:步驟1:將虛擬機(jī)與虛擬化層進(jìn)行隔離;步驟2:實(shí)現(xiàn)虛擬化層軟件與虛擬機(jī)的直接交互。優(yōu)選地,所述步驟1包括:利用嵌套虛擬化技術(shù)防止惡意的虛擬化層軟件竊取和篡改虛擬機(jī)內(nèi)存和磁盤的數(shù)據(jù);對(duì)虛擬化層的操作進(jìn)行檢查和監(jiān)控,以及對(duì)嵌套虛擬化層的軟件進(jìn)行安全性驗(yàn)證,防止惡意的虛擬化層軟件纂改虛擬機(jī)的控制流。優(yōu)選地,所述步驟2包括:在虛擬機(jī)和虛擬化層之間設(shè)置安全通道,所述安全通道用于實(shí)現(xiàn)虛擬機(jī)與虛擬化層軟件的直接交互。優(yōu)選地,所述步驟1包括:步驟1.1:將虛擬機(jī)和虛擬機(jī)監(jiān)控器運(yùn)行在非特權(quán)級(jí)的環(huán)境中;步驟1.2:對(duì)非特權(quán)級(jí)環(huán)境中的實(shí)體進(jìn)行內(nèi)存隔離配置;所述實(shí)體包括:虛擬機(jī)、虛擬機(jī)監(jiān)控器以及安全門,當(dāng)虛擬機(jī)監(jiān)控器惡意訪問虛擬機(jī)內(nèi)存時(shí),會(huì)觸發(fā)下陷,由嵌套虛擬化層進(jìn)行檢查并禁止;步驟1.3:在嵌套虛擬化層為虛擬機(jī)和虛擬機(jī)監(jiān)控器分別配置相關(guān)的虛擬機(jī)控制結(jié)構(gòu)中特定的域,所述域用于控制虛擬機(jī)和虛擬機(jī)監(jiān)控器運(yùn)行時(shí)的行為。優(yōu)選地,所述步驟2包括:步驟2.1:在虛擬機(jī)和虛擬機(jī)監(jiān)控器之間建立非特權(quán)級(jí)環(huán)境中的代理,所述代理即為虛擬機(jī)和虛擬機(jī)監(jiān)控器之間的安全門,并設(shè)置相應(yīng)的跳板函數(shù),對(duì)安全門和跳板函數(shù)進(jìn)行安全性的驗(yàn)證;步驟2.2:虛擬機(jī)在運(yùn)行時(shí)如果產(chǎn)生了需要虛擬機(jī)監(jiān)控器處理的事件,則通過安全門中的代碼直接向虛擬機(jī)監(jiān)控器發(fā)出請(qǐng)求,由虛擬機(jī)監(jiān)控器提供的服務(wù)進(jìn)行相應(yīng)的處理,即包括處理內(nèi)存分配,異常處理,中斷處理,i/o處理等,并在處理結(jié)束之后通過安全門返回,并進(jìn)行隱私性和完整性的檢查。根據(jù)本發(fā)明提供的高效的基于嵌套虛擬化的虛擬機(jī)安全保護(hù)系統(tǒng),包括:嵌套虛擬化層模塊、虛擬機(jī)自處理事件模塊、虛擬機(jī)監(jiān)控器服務(wù)模塊以及通信模塊;所述嵌套虛擬化層模塊用于對(duì)控制層的非特權(quán)級(jí)實(shí)體內(nèi)存進(jìn)行配置,使得各個(gè)非特權(quán)級(jí)實(shí)體之間相互隔離,并配置通信模塊;所述非特權(quán)級(jí)實(shí)體包括:虛擬機(jī)、虛擬機(jī)監(jiān)控器、虛擬機(jī)與虛擬機(jī)監(jiān)控器之間的安全門;所述虛擬機(jī)自處理事件模塊用于在發(fā)生特定事件時(shí)對(duì)相關(guān)事件進(jìn)行自行處理,并觸發(fā)上下文切換;所述虛擬機(jī)監(jiān)控器服務(wù)模塊用于提供相應(yīng)的服務(wù),該服務(wù)包括:分配頁表、進(jìn)行中斷處理、部分異常處理以及i/o處理;所述通信模塊用于實(shí)現(xiàn)虛擬機(jī)和虛擬機(jī)監(jiān)控器之間的交互。優(yōu)選地,所述通信模塊在虛擬機(jī)和虛擬機(jī)監(jiān)控器之間插入一個(gè)嵌套虛擬化在非特權(quán)級(jí)中的代理,并為虛擬機(jī)、虛擬機(jī)監(jiān)控器以及代理提供相應(yīng)的跳板函數(shù),所述代理即為安全門,該安全門是一段代碼邏輯。與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:本發(fā)明提供的高效的基于嵌套虛擬化的虛擬機(jī)安全保護(hù)方法以及系統(tǒng),能夠?qū)⑻摂M機(jī)和虛擬化層進(jìn)行隔離,防止惡意的虛擬機(jī)監(jiān)控器竊取和篡改虛擬機(jī)的數(shù)據(jù),并且在運(yùn)行時(shí)盡可能地減少由隔離機(jī)制所帶來的虛擬機(jī)下陷,使得虛擬機(jī)和虛擬機(jī)監(jiān)控器能夠進(jìn)行安全且高效的切換。附圖說明通過閱讀參照以下附圖對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:圖1為cloudvisor的架構(gòu)示意圖;圖2為本發(fā)明中的系統(tǒng)架構(gòu)示意圖;圖3為本發(fā)明中多個(gè)實(shí)體之間的內(nèi)存隔離機(jī)制示意圖;圖4為本發(fā)明中虛擬機(jī)和虛擬機(jī)監(jiān)控器之間通信模塊的示意圖;圖5為本發(fā)明中處理虛擬機(jī)eptviolation的流程示意圖;圖6為本發(fā)明中處理虛擬機(jī)中基于iommu設(shè)備的i/o操作的流程示意圖;圖7為本發(fā)明中處理虛擬機(jī)中基于半虛擬化技術(shù)的i/o操作的流程示意圖。具體實(shí)施方式下面結(jié)合具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。以下實(shí)施例將有助于本領(lǐng)域的技術(shù)人員進(jìn)一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對(duì)本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變化和改進(jìn)。這些都屬于本發(fā)明的保護(hù)范圍。根據(jù)本發(fā)明提供的基于嵌套虛擬化的虛擬機(jī)安全保護(hù)方法,包括如下步驟:步驟1:將虛擬機(jī)與虛擬化層進(jìn)行隔離;步驟2:實(shí)現(xiàn)虛擬化層軟件與虛擬機(jī)的直接交互。所述步驟1包括:利用嵌套虛擬化技術(shù)防止惡意的虛擬化層軟件竊取和篡改虛擬機(jī)內(nèi)存和磁盤的數(shù)據(jù);對(duì)虛擬化層的操作進(jìn)行檢查和監(jiān)控,以及對(duì)嵌套虛擬化層的軟件進(jìn)行安全性驗(yàn)證,防止惡意的虛擬化層軟件纂改虛擬機(jī)的控制流。所述步驟2包括:在虛擬機(jī)和虛擬化層之間設(shè)置安全通道,所述安全通道用于實(shí)現(xiàn)虛擬機(jī)與虛擬化層軟件的直接交互。這種方式避免大量的虛擬機(jī)下陷(到嵌套虛擬化層)所產(chǎn)生的性能損失,同時(shí)保證虛擬機(jī)和虛擬化層之間的隔離。所述步驟1包括:步驟1.1:將虛擬機(jī)和虛擬機(jī)監(jiān)控器運(yùn)行在非特權(quán)級(jí)的環(huán)境中;步驟1.2:在虛擬機(jī)和虛擬機(jī)監(jiān)控器之間建立非特權(quán)級(jí)環(huán)境中的代理,所述代理即虛擬機(jī)和虛擬機(jī)監(jiān)控器之間的安全門,并設(shè)置相應(yīng)的跳板函數(shù),對(duì)安全門和跳板函數(shù)進(jìn)行安全性的驗(yàn)證;步驟1.3:對(duì)非特權(quán)級(jí)環(huán)境中的實(shí)體進(jìn)行內(nèi)存隔離配置;所述實(shí)體包括:虛擬機(jī)、虛擬機(jī)監(jiān)控器以及安全門;步驟1.4:為虛擬機(jī)和虛擬機(jī)監(jiān)控器分別配置相關(guān)的虛擬機(jī)控制結(jié)構(gòu)中特定的域;步驟1.5:虛擬機(jī)在運(yùn)行時(shí)如果產(chǎn)生了需要虛擬機(jī)監(jiān)控器處理的事件,則通過安全門直接向虛擬機(jī)監(jiān)控器發(fā)出請(qǐng)求,由虛擬機(jī)監(jiān)控器進(jìn)行相應(yīng)的處理,即包括處理內(nèi)存分配,異常處理,中斷處理,i/o處理等,并在處理結(jié)束之后進(jìn)行隱私性和完整性的檢查。根據(jù)本發(fā)明提供的高效的基于嵌套虛擬化的虛擬機(jī)安全保護(hù)系統(tǒng),包括:嵌套虛擬化層模塊、虛擬機(jī)自處理事件模塊、虛擬機(jī)監(jiān)控器服務(wù)模塊以及通信模塊;所述嵌套虛擬化層模塊用于對(duì)控制層的非特權(quán)級(jí)實(shí)體內(nèi)存進(jìn)行配置,使得各個(gè)非特權(quán)級(jí)實(shí)體之間相互隔離,并配置通信模塊;所述非特權(quán)級(jí)實(shí)體包括:虛擬機(jī)、虛擬機(jī)監(jiān)控器、虛擬機(jī)與虛擬機(jī)監(jiān)控器之間的安全門;所述虛擬機(jī)自處理事件模塊用于在發(fā)生特定事件時(shí)對(duì)相關(guān)事件進(jìn)行自行處理,并觸發(fā)上下文切換;所述虛擬機(jī)監(jiān)控器服務(wù)模塊用于提供相應(yīng)的服務(wù),該服務(wù)包括:分配頁表、進(jìn)行中斷處理、部分異常處理以及i/o處理;所述通信模塊用于實(shí)現(xiàn)虛擬機(jī)和虛擬機(jī)監(jiān)控器之間的交互。所述通信模塊在虛擬機(jī)和虛擬機(jī)監(jiān)控器之間插入一個(gè)嵌套虛擬化在非特權(quán)級(jí)中的代理,并為虛擬機(jī)、虛擬機(jī)監(jiān)控器以及代理提供相應(yīng)的跳板函數(shù),所述代理即為安全門,該安全門是一段代碼邏輯。下面結(jié)合附圖對(duì)本發(fā)明中的技術(shù)方案做更加詳細(xì)的說明。圖2展示了本發(fā)明的整體架構(gòu)圖。總體來說,本發(fā)明遵循著將控制層(controlplane)和數(shù)據(jù)層(dataplane)分離的思想:首先,在特權(quán)級(jí)環(huán)境中,嵌套虛擬化層模塊需要對(duì)整個(gè)系統(tǒng)進(jìn)行控制層的配置,包括對(duì)非特權(quán)級(jí)三個(gè)實(shí)體(虛擬機(jī),虛擬機(jī)監(jiān)控器和它們之間的安全門)的內(nèi)存進(jìn)行配置,使得它們相互隔離,以及建立通信模塊,并保證其中安全門和跳板函數(shù)代碼的安全性,使得在運(yùn)行時(shí)的數(shù)據(jù)層交互直接通過通信模塊,而不需要下陷到嵌套虛擬化層;其次,虛擬機(jī)自處理事件模塊在發(fā)生特定事件時(shí)能夠?qū)ο嚓P(guān)事件自行處理,并且觸發(fā)上下文切換,通過嵌套虛擬化層之前配置好的通信模塊和虛擬機(jī)監(jiān)控器進(jìn)行交互;而虛擬機(jī)監(jiān)控器服務(wù)模塊提供相應(yīng)的服務(wù),當(dāng)控制流從通信模塊中進(jìn)入虛擬機(jī)監(jiān)控器時(shí),對(duì)特定的請(qǐng)求進(jìn)行處理;最后,虛擬機(jī)和虛擬機(jī)監(jiān)控器兩個(gè)實(shí)體之間的通信模塊保證通信的高效性和安全性,特別是在虛擬機(jī)監(jiān)控器返回之后需要對(duì)其提供的服務(wù)結(jié)果進(jìn)行檢查,防止虛擬機(jī)監(jiān)控器竊取和篡改虛擬機(jī)的數(shù)據(jù)。嵌套虛擬化層模塊需要配置相應(yīng)的控制層,具體來說,需要做五件事:(1)將虛擬機(jī)和虛擬機(jī)監(jiān)控器運(yùn)行在非特權(quán)級(jí)的環(huán)境中;(2)建立其在非特權(quán)級(jí)環(huán)境中的代理,即虛擬機(jī)和虛擬機(jī)監(jiān)控器之間的安全門,以及相應(yīng)的跳板函數(shù),并對(duì)安全門和跳板函數(shù)進(jìn)行安全性的驗(yàn)證;(3)對(duì)非特權(quán)級(jí)環(huán)境中的三個(gè)實(shí)體(虛擬機(jī),虛擬機(jī)監(jiān)控器和安全門)進(jìn)行內(nèi)存隔離的配置;(4)需要為虛擬機(jī)和虛擬機(jī)監(jiān)控器分別配置相關(guān)的虛擬機(jī)控制結(jié)構(gòu)(virtualmachinecontrolstructure,vmcs)中特定的域,從而決定在運(yùn)行時(shí)哪些事件會(huì)造成vmexit,哪些事件可以直接由虛擬機(jī)或者虛擬機(jī)監(jiān)控器直接處理;(5)對(duì)于那些需要下陷的事件進(jìn)行相應(yīng)的處理。對(duì)于第(3)點(diǎn),即對(duì)三個(gè)實(shí)體進(jìn)行內(nèi)存配置,如圖3所示,具體來說,就是通過intel內(nèi)存硬件虛擬化提供的擴(kuò)展頁表(ept)支持,來控制三個(gè)實(shí)體所能夠訪問的內(nèi)存區(qū)域的范圍,即為三個(gè)實(shí)體配置三個(gè)ept頁表,其中虛擬機(jī)和虛擬機(jī)監(jiān)控器的內(nèi)存區(qū)域是相互隔離的,同時(shí)它們都無法訪問安全門所在的內(nèi)存區(qū)域,從而保證它們無法篡改通信模塊的控制流,而通信模塊中的安全門可以訪問虛擬機(jī)和虛擬機(jī)監(jiān)控器的內(nèi)存,并且可以在這兩個(gè)內(nèi)存區(qū)域間進(jìn)行切換,切換的過程在通信模塊中詳述。對(duì)于第(4)點(diǎn),即配置vmcs以決定需要下陷的事件,表1展示了所有可能造成虛擬機(jī)下陷(vmexit)的60個(gè)事件,以及通過嵌套虛擬化層對(duì)vmcs進(jìn)行配置從而決定相關(guān)事件是否最終引起vmexit的結(jié)果。表1其中,由于硬件特性決定,有25個(gè)事件會(huì)無條件地引發(fā)vmexit,而出于安全和功能考慮,將另外5個(gè)事件設(shè)置為在虛擬機(jī)和虛擬機(jī)監(jiān)控器中都會(huì)觸發(fā)vmexit,其它的事件則有些在虛擬機(jī)環(huán)境中不會(huì)觸發(fā)vmexit,有些在虛擬機(jī)監(jiān)控器環(huán)境下不會(huì)觸發(fā)vmexit,還有一些在兩種環(huán)境下都不會(huì)觸發(fā)vmexit。另外,有些事件可以配置成部分觸發(fā)vmexit,部分不觸發(fā),比如exception,rdmsr,wrmsr等,采用的方法是通過硬件提供的bitmap來配置相應(yīng)的域,這樣可以更加細(xì)粒度地配置觸發(fā)vmexit的條件。這里需要注意的是,那些會(huì)無條件觸發(fā)vmexit的情況都是屬于出現(xiàn)的很少,甚至是在一些特殊的配置下才會(huì)產(chǎn)生,一般不會(huì)使用的特性,因此這些vmexit所造成的性能開銷很小,而對(duì)于其它的配置,所遵循的原則如下:第一、如果某個(gè)實(shí)體本來不應(yīng)該進(jìn)行某些操作,則將其配置為會(huì)引起vmexit,比如在虛擬機(jī)中不應(yīng)該讀寫vmcs,所以在虛擬機(jī)中vmread和vmwrite都配置成vmexit,還有比如在虛擬機(jī)監(jiān)控器中不應(yīng)該有i/o的操作,所以在虛擬機(jī)監(jiān)控器中i/oinstruction被配置成vmexit;第二、對(duì)于一些必須要引發(fā)vmexit才會(huì)被通知的事件,則都配置成vmexit,比如interrupt/nmiwindows,這些事件的發(fā)生如果不產(chǎn)生vmexit,則相關(guān)的軟件無法被通知,也不會(huì)有其它的機(jī)制來處理相應(yīng)的事件,所以都被配置成vmexit;第三、對(duì)于一些功能性的操作,比如vmx-preemptiontimer,就是通過vmexit的產(chǎn)生來通知特權(quán)級(jí)軟件時(shí)間片被用完了,所以也都被配置成vmexit;第四,其它的事件就被配置成不產(chǎn)生vmexit。關(guān)于虛擬機(jī)自處理事件模塊,對(duì)于所有不產(chǎn)生下陷的事件,都由虛擬機(jī)自處理模塊自行處理,在處理的過程中分為兩個(gè)步驟,如果該事件可以在虛擬機(jī)直接解決,比如讀寫控制寄存器(control-registeraccess)等,則在虛擬機(jī)自處理模塊中自己進(jìn)行,否則,對(duì)于那些需要經(jīng)由虛擬機(jī)監(jiān)控器完成的操作,比如修改ept(eptviolation),或者進(jìn)行i/o操作等,則需要通過通信模塊和虛擬機(jī)監(jiān)控機(jī)進(jìn)行通信,并調(diào)用相應(yīng)的服務(wù)。關(guān)于虛擬機(jī)監(jiān)控器服務(wù)模塊,其為虛擬機(jī)提供必須的服務(wù),包括為其分配頁表,進(jìn)行中斷處理,部分異常處理,i/o處理等。虛擬機(jī)通過通信模塊將請(qǐng)求發(fā)送給虛擬機(jī)監(jiān)控器,而虛擬機(jī)監(jiān)控器在處理完之后,再通過通信模塊返回相應(yīng)結(jié)果。圖4展示了虛擬機(jī)和虛擬機(jī)監(jiān)控器之間的通信模塊。該通信模塊可以進(jìn)行虛擬機(jī)和虛擬機(jī)監(jiān)控器上下文的高效切換,采用的方法是intel處理器提供的一個(gè)虛擬化硬件擴(kuò)展機(jī)制:eptpswitching(擴(kuò)展頁表指針替換),這是硬件提供的一個(gè)可以在虛擬機(jī)中運(yùn)行的函數(shù),該函數(shù)的功能是在不下陷到虛擬機(jī)監(jiān)控器的情況下改變eptpointer的值。由于在嵌套虛擬化層模塊的第三步中為這三個(gè)實(shí)體建立了三套ept,并且將它們對(duì)應(yīng)的eptp指針組成了一個(gè)eptp數(shù)組,并且將該數(shù)組的首地址填到數(shù)據(jù)結(jié)構(gòu)vmcs中的一個(gè)特定的域eptp_list_addr中。上下文切換的過程如下:虛擬機(jī)自處理模塊通過跳板函數(shù)調(diào)用vmfunc指令,并將eax寄存器設(shè)置為0,將ecx寄存器設(shè)置成安全門的eptp對(duì)應(yīng)的索引,則可以達(dá)到在不產(chǎn)生vmexit的情況下降當(dāng)前的上下文切換到通安全門對(duì)應(yīng)的內(nèi)存中,類似的,安全門也可以通過設(shè)置寄存器,并調(diào)用vmfunc指令,將上下文切換到虛擬機(jī)監(jiān)控器的內(nèi)存上下文中。反之,從虛擬機(jī)監(jiān)控器返回虛擬機(jī)的途徑也是用vmfunc機(jī)制。需要注意的是,雖然虛擬機(jī)監(jiān)控器為虛擬機(jī)提供服務(wù),但是需要保證其不能竊取和篡改虛擬機(jī)的數(shù)據(jù)。為了保證這一點(diǎn),需要安全門在虛擬機(jī)監(jiān)控器返回時(shí)對(duì)結(jié)果進(jìn)行檢查和處理。比如當(dāng)虛擬機(jī)監(jiān)控器處理虛擬機(jī)的eptviolation的時(shí)候,它為虛擬機(jī)分配了一段空的內(nèi)存,并填寫好相應(yīng)的ept的條目,安全門在檢查的過程中就需要將該內(nèi)存頁從虛擬機(jī)監(jiān)控器的映射中去除,從而禁止其訪問該頁的內(nèi)容,在保證了安全性的前提下大量減少了vmexit的數(shù)量,從而提高了系統(tǒng)的整體性能。本發(fā)明提出的一種高效的基于嵌套虛擬化的虛擬機(jī)安全保護(hù)框架,它通過嵌套虛擬化技術(shù)將虛擬機(jī)和虛擬化層進(jìn)行有效的隔離,從而防止惡意的虛擬機(jī)監(jiān)控器竊取和篡改虛擬機(jī)的數(shù)據(jù),同時(shí)在實(shí)際運(yùn)行過程中盡可能地避免由隔離機(jī)制所帶來的虛擬機(jī)下陷,極大地減小了性能損失,使得虛擬機(jī)和虛擬機(jī)監(jiān)控器能夠進(jìn)行安全且高效的切換。該架構(gòu)能夠被部署到現(xiàn)有的云計(jì)算平臺(tái)中,滿足用戶對(duì)安全性、功能性和高效性的各方面需求。實(shí)施例一種高效的基于嵌套虛擬化的虛擬機(jī)安全保護(hù)框架的具體部署流程包括:步驟s1:嵌套虛擬化層模塊對(duì)于控制層進(jìn)行的配置;步驟s2:運(yùn)行虛擬機(jī)自處理模塊;步驟s3:運(yùn)行虛擬機(jī)監(jiān)控器服務(wù)模塊;步驟s4:運(yùn)行通信機(jī)制;步驟s5:對(duì)eptviolation進(jìn)行處理;步驟s6:基于iommu設(shè)備對(duì)i/o進(jìn)行處理;步驟s7:基于半虛擬化技術(shù)對(duì)i/o進(jìn)行處理。其中步驟s5至步驟s7通過對(duì)三個(gè)虛擬化環(huán)境中最關(guān)鍵的場景的處理來具體闡述運(yùn)行時(shí)各模塊之間的行為。以下將通過具體實(shí)施示例來詳細(xì)描述本發(fā)明。本發(fā)明的示例具體步驟如下:步驟s1包括:嵌套虛擬化層模塊對(duì)控制層進(jìn)行配置,配置的內(nèi)容如下:第一,執(zhí)行相關(guān)硬件指令,將虛擬機(jī)和虛擬機(jī)監(jiān)控器運(yùn)行在非特權(quán)級(jí)環(huán)境中;第二,創(chuàng)建嵌套虛擬化層在非特權(quán)級(jí)的代理,即通信模塊,并且對(duì)其代碼進(jìn)行安全檢查;第三,為非特權(quán)級(jí)環(huán)境中的三個(gè)實(shí)體(虛擬機(jī),虛擬機(jī)監(jiān)控器和通信模塊)配置它們對(duì)應(yīng)的ept,保證虛擬機(jī)和虛擬機(jī)監(jiān)控器的內(nèi)存是相互隔離的,而且它們都無法訪問通信模塊的內(nèi)存,而通信模塊可以訪問另外兩個(gè)實(shí)體的內(nèi)存;第四,按照表1的內(nèi)容,為虛擬機(jī)和虛擬機(jī)監(jiān)控器分別配置相關(guān)的vmcs中特定的域;第五,配置好嵌套虛擬化層中的下陷處理函數(shù),對(duì)于那些在非特權(quán)級(jí)環(huán)境中會(huì)產(chǎn)生vmexit的事件進(jìn)行相應(yīng)的處理。步驟s2包括:在虛擬機(jī)的運(yùn)行環(huán)境中,對(duì)于所有不產(chǎn)生vmexit的事件,都由進(jìn)入虛擬機(jī)自處理模塊的處理函數(shù),由虛擬機(jī)對(duì)該事件自行處理。在處理的過程進(jìn)行判斷,如果該事件可以由虛擬機(jī)解決,則在虛擬機(jī)自處理模塊中自行處理,否則,對(duì)于那些需要經(jīng)由虛擬機(jī)監(jiān)控器完成的操作,則通過步驟s4中的通信機(jī)制,和虛擬機(jī)監(jiān)控機(jī)進(jìn)行通信,并調(diào)用相應(yīng)的服務(wù)。步驟s3包括:在虛擬機(jī)監(jiān)控器的運(yùn)行環(huán)境中,虛擬機(jī)監(jiān)控器的服務(wù)模塊為虛擬機(jī)提供必須的服務(wù),包括為其分配頁表,進(jìn)行中斷處理,部分異常處理,i/o處理等。虛擬機(jī)通過通行模塊將請(qǐng)求發(fā)送給虛擬機(jī)監(jiān)控器,而虛擬機(jī)監(jiān)控器在處理完之后,再通過步驟s4中的通信機(jī)制,向虛擬機(jī)返回相應(yīng)結(jié)果。步驟s4包括:在虛擬機(jī)自處理模塊中,如果需要向虛擬機(jī)監(jiān)控器請(qǐng)求服務(wù),則進(jìn)入通信模塊在虛擬機(jī)端提供的跳板函數(shù),該跳板函數(shù)通過vmfunc指令,傳入通信模塊中的安全門對(duì)應(yīng)的ept指針?biāo)饕?,快速切換到安全門相對(duì)應(yīng)的內(nèi)存空間,并由安全門的跳板函數(shù)切換到虛擬機(jī)監(jiān)控器服務(wù)模塊的內(nèi)存空間;虛擬機(jī)監(jiān)控器服務(wù)模塊處理完請(qǐng)求之后,進(jìn)入通信模塊在虛擬機(jī)監(jiān)控器端提供的跳板函數(shù),該跳板函數(shù)通過vmfunc指令,傳入安全門相對(duì)應(yīng)的ept指針?biāo)饕?,快速切換到相應(yīng)的內(nèi)存空間,安全門對(duì)返回的結(jié)果進(jìn)行檢查,防止虛擬機(jī)監(jiān)控器對(duì)虛擬機(jī)數(shù)據(jù)的竊取和篡改,如果檢查成功,則通過其跳板函數(shù)返回虛擬機(jī)的內(nèi)存空間,完成整個(gè)通信流程。步驟s5包括:在虛擬機(jī)運(yùn)行時(shí)如果發(fā)生eptviolation事件,如圖5所示,由于嵌套虛擬化層在vmcs中配置了該事件在虛擬機(jī)中不發(fā)生vmexit,因此控制流會(huì)進(jìn)入虛擬機(jī)自處理模塊,自處理模塊判斷該事件需要請(qǐng)求虛擬機(jī)監(jiān)控器進(jìn)行處理,因此通過步驟s4中的通信機(jī)制將請(qǐng)求發(fā)送給虛擬機(jī)監(jiān)控器,在經(jīng)過安全門的時(shí)候,安全門會(huì)將相應(yīng)的虛擬機(jī)的ept頁表頁設(shè)置為虛擬機(jī)監(jiān)控器可直接讀寫。虛擬機(jī)監(jiān)控器根據(jù)請(qǐng)求中提供的信息,為該虛擬機(jī)分配相應(yīng)的內(nèi)存頁,在虛擬機(jī)的ept中填入相應(yīng)的條目,并且通過步驟s4中的通信機(jī)制返回虛擬機(jī),在經(jīng)過安全門的時(shí)候,安全門會(huì)對(duì)虛擬機(jī)的頁表項(xiàng)進(jìn)行檢查,并且將虛擬機(jī)的ept頁表頁設(shè)置為虛擬機(jī)監(jiān)控器不可訪問,同時(shí),將新分配的頁也設(shè)置成虛擬機(jī)監(jiān)控器不可訪問,從而防止虛擬機(jī)監(jiān)控器惡意竊取和篡改虛擬機(jī)的內(nèi)存數(shù)據(jù)。這里需要注意的是,安全門在設(shè)置虛擬機(jī)ept頁表頁權(quán)限的時(shí)候需要先將其保護(hù)起來,防止虛擬機(jī)監(jiān)控器在檢查之后,設(shè)置權(quán)限之前對(duì)ept頁表頁進(jìn)行篡改,即所謂的toctou(time-too-checktotime-of-use)攻擊,采用的方法包括硬件事務(wù)內(nèi)存等機(jī)制。步驟s6包括:在虛擬機(jī)需要進(jìn)行基于iommu設(shè)備的i/o事件的處理的時(shí)候,如圖6所示,由于iommu設(shè)備可以將某個(gè)i/o設(shè)備直接分配給虛擬機(jī)。因此虛擬機(jī)可以直接對(duì)該i/o設(shè)備進(jìn)行讀寫操作,不需要向虛擬機(jī)監(jiān)控器請(qǐng)求服務(wù)。另外,i/o設(shè)備會(huì)產(chǎn)生大量的中斷,由于我們?cè)谇短滋摂M化中配置了在虛擬機(jī)運(yùn)行時(shí)產(chǎn)生的中斷不會(huì)引發(fā)vmexit,因此中斷會(huì)直接進(jìn)入虛擬機(jī)自處理模塊,而虛擬機(jī)自處理模塊判斷當(dāng)前中斷是由直接分配給自己的i/o設(shè)備產(chǎn)生,可以由自己直接處理,因此也不需要向虛擬機(jī)監(jiān)控器請(qǐng)求服務(wù)。最后,為了保證虛擬機(jī)監(jiān)控器不能訪問虛擬機(jī)磁盤上的數(shù)據(jù),需要防止虛擬機(jī)監(jiān)控器的i/o操作,即在嵌套虛擬化層配置虛擬機(jī)監(jiān)控器的i/o操作會(huì)產(chǎn)生vmexit,從而對(duì)其進(jìn)行攔截。步驟s7包括:在虛擬機(jī)需要進(jìn)行基于半虛擬化技術(shù)的i/o事件的處理的時(shí)候,如圖7所示,需要加入另外一個(gè)實(shí)體,即專門負(fù)責(zé)i/o設(shè)備驅(qū)動(dòng)的虛擬機(jī)(drivervm),并且在嵌套虛擬化層模塊中對(duì)其ept進(jìn)行配置。初始化時(shí),虛擬機(jī)和驅(qū)動(dòng)虛擬機(jī)之間首先會(huì)建立一塊共享內(nèi)存,當(dāng)發(fā)生i/o寫操作時(shí),虛擬機(jī)將數(shù)據(jù)寫入共享內(nèi)存,并且通過步驟s4中的通信機(jī)制(虛擬機(jī)->安全門->驅(qū)動(dòng)虛擬機(jī))通知驅(qū)動(dòng)虛擬機(jī),執(zhí)行真正的i/o寫操作。在發(fā)生i/o讀操作的時(shí)候,驅(qū)動(dòng)虛擬機(jī)先從i/o設(shè)備中讀取數(shù)據(jù),并將它們寫入共享內(nèi)存,然后通過步驟s4中的通信機(jī)制(驅(qū)動(dòng)虛擬機(jī)->安全門->虛擬機(jī))通知虛擬機(jī),由虛擬機(jī)直接從共享內(nèi)存中讀取數(shù)據(jù)。這里需要注意的是,由于驅(qū)動(dòng)虛擬機(jī)并不是可信的,所以i/o數(shù)據(jù)需要由虛擬機(jī)自己負(fù)責(zé)進(jìn)行加解密和對(duì)完整性的保護(hù),從而防止驅(qū)動(dòng)虛擬機(jī)竊取和篡改i/o的數(shù)據(jù)。以上對(duì)本發(fā)明的具體實(shí)施例進(jìn)行了描述。需要理解的是,本發(fā)明并不局限于上述特定實(shí)施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變化或修改,這并不影響本發(fā)明的實(shí)質(zhì)內(nèi)容。在不沖突的情況下,本申請(qǐng)的實(shí)施例和實(shí)施例中的特征可以任意相互組合。當(dāng)前第1頁12當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1