一種基于完整性驗證的凈室實時監(jiān)控方法
【技術領域】
[0001]本發(fā)明屬于計算機科學與技術領域,特別涉及一種基于完整性驗證的凈室實時監(jiān)控方法。
【背景技術】
[0002]在云計算飛速發(fā)展的今天,數據的安全問題越來越嚴重,在使用凈室保證計算安全的同時,使用凈室保證用戶程序的安全性也是一項重要的任務。目前實現應用程序的監(jiān)控和數據的檢測技術已經發(fā)展地非常豐富。然而對于虛擬機運行中的完整性檢測仍然不夠完善。在遠程服務器上,由于應用程序難以管理,以及網絡傳輸的不安全,可能導致用戶程序或者虛擬機被篡改,一旦這些被篡改過的程序進入到凈室,就會泄露用戶的隱私,甚至造成服務器崩潰等諸多問題,我們需要一種凈室實時監(jiān)控技術,通過該技術能夠實時監(jiān)控虛擬機的運行狀態(tài),保證虛擬機的完整和安全,并在此基礎上,對進入虛擬機運行的應用程序進行監(jiān)測,保證程序的合法運行,從而保障虛擬機和用戶程序運行環(huán)境的安全。
[0003]凈室實時監(jiān)控技術是在凈室云計算的基礎上實施的,在凈室云理論中計算執(zhí)行環(huán)境分為“服務態(tài)”和“凈室態(tài)”,用戶簽訂安全服務協(xié)議后執(zhí)行環(huán)境就會切換到凈室態(tài),凈室態(tài)的執(zhí)行環(huán)境只面向該用戶開放。
[0004]通常在虛擬機的監(jiān)控方法都是基于主機的完整性檢測,這種方法是采用在主機上安裝監(jiān)控軟件,當用戶程序和監(jiān)控軟件同時運行時,通過監(jiān)控軟件來記錄程序運行狀態(tài),從而檢驗程序是否被篡改。目前典型的技術是完整性度量架構,在該技術執(zhí)行下,操作系統(tǒng)會從內核初始化開始,對運行在操作系統(tǒng)上的應用程序和內核模塊進行實時驗證。由于這種架構不能防止攻擊者對安全列表的修改,需要采用遠程驗證來檢測列表是否被修改,因此這種方法所存在的問題是完整性度量軟件和用戶程序同時運行在同一環(huán)境下,這就會導致度量軟件的暴露,攻擊者很有可能通過攻擊度量軟件和度量列表來破壞完整性度量。
【發(fā)明內容】
[0005]本發(fā)明提供了一種對用戶虛擬機的凈室實時監(jiān)控方法,來阻止用戶未經授權的行為,保證云計算環(huán)境下的用戶虛擬機的安全運行,并且保護虛擬機中應用程序的安全。
[0006]—種基于完整性驗證的凈室實時監(jiān)控方法,包括以下幾個步驟:
[0007]步驟1:在服務器上安裝可信虛擬監(jiān)視器,利用所述可信虛擬監(jiān)視器提取服務器初始數據,并計算服務器初始數據的哈希函數值,將服務器初始數據以其對應的哈希函數值備份到服務器中的可信列表中;
[0008]所述服務器初始數據包括服務器的系統(tǒng)文件和進程數據;所述系統(tǒng)文件包括文件類型、文件名和文件大??;進程數據包括該進程的進程名、線程數量和線程峰值數量;
[0009]所述可信列表用于保存可信任的系統(tǒng)數據、可信任的虛擬機信息以及可信任的用戶程序信息;
[0010]步驟2:在可信虛擬監(jiān)視器中安裝虛擬機陷入程序,利用虛擬機陷入程序的sh_page_fault函數獲得陷入可信虛擬監(jiān)視器的虛擬機的進程、內核模塊及動態(tài)庫;
[0011]所述虛擬機陷入程序的安裝是通過將Vmx.c文件中的vmx_vmexit_handler函數的返回地址修改為非法地址完成;
[0012]步驟3:在可信虛擬機中運行完整性測量代理,對步驟2獲取的虛擬機完整性進行測量,如果虛擬機完整,則進入步驟4,否則,返回步驟2,等待虛擬機陷入程序獲取陷入可信虛擬監(jiān)視器的虛擬機;
[0013]所述完整性測量代理是可信虛擬管理器中的組件;
[0014]步驟4:計算步驟2所獲取的虛擬機的進程、內核模塊和動態(tài)庫的哈希值,并與步驟I所述可信列表中的數據進行比對;
[0015]若該虛擬機對應的哈希值存在于可信列表中,則continue函數修改guest_rip為原來的地址使虛擬機正常運行,進入步驟5,否則,調用kill函數終止虛擬機的運行,返回步驟2,等待虛擬機陷入程序獲取陷入可信虛擬監(jiān)視器的虛擬機;
[0016]步驟5:在終端安裝應用程序監(jiān)視器,截獲用戶程序產生的系統(tǒng)調用,得到傳遞給系統(tǒng)調用的全部參數;
[0017]步驟6:在終端運行完整性測量代理,對步驟5所獲取程序的事件類型、事件參數、運行程序的指令計算哈希值;
[0018]步驟7:使用netlink創(chuàng)建套接字將步驟6得到的哈希值數據發(fā)送到服務器,與服務器的可信列表中的項進行比對;
[0019]若步驟5截獲的程序對應的哈希值存在于服務器的可信列表中,則調用continue函數繼續(xù)用戶進程執(zhí)行,并允許用戶進程進入步驟2所述虛擬機中運行,否則調用TerminateProcess函數終止程序的運行。
[0020]有益效果
[0021]本發(fā)明提供了一種基于完整性驗證的凈室實時監(jiān)控方法,通過對用戶虛擬機的完整性檢測和對用戶程序的完整性驗證,來保證虛擬機的安全。對用虛擬機的監(jiān)控主要是監(jiān)控虛擬機的進程、內核模塊以及動態(tài)庫的完整性,通過實時監(jiān)測虛擬機的運行狀態(tài)來保證虛擬機不被篡改,徹底的阻止了用戶未經授權的行為,保證云計算環(huán)境下的用戶虛擬機的安全運行,并且保護虛擬機中應用程序的安全。
【附圖說明】
[0022]圖1為本發(fā)明所述方法的流程圖;
[0023]圖2為服務器監(jiān)控模型圖;
[0024]圖3為終端監(jiān)控模型圖。
【具體實施方式】
[0025]下面結合具體實例和說明書附圖對本發(fā)明做進一步的說明。
[0026]在本實例中遠程服務器使用Ubuntul4.04作為操作系統(tǒng),數據庫為MySQL。客戶端為Windows操作系統(tǒng)的臺式機。本實例服務器裝備了能夠遠程出發(fā)系統(tǒng)管理終端的頻帶外信道,利用系統(tǒng)管理模式、智能平臺管理接口以及底板管理控制器,客戶端通過遠程認證的方式對虛擬機的運行過程進行動態(tài)完整性檢測。
[0027]—種基于完整性驗證的凈室實時監(jiān)控方法,如圖1所示,包括以下步驟:
[0028]步驟1:在服務器上安裝可信虛擬監(jiān)視器,利用所述可信虛擬監(jiān)視器提取服務器初始數據,并計算服務器初始數據的哈希函數值,將服務器初始數據以其對應的哈希函數值備份到服務器中的可信列表中;服務器監(jiān)控模型如圖2所示;
[0029]所述服務器初始數據包括服務器的系統(tǒng)文件和進程數據;所述系統(tǒng)文件包括文件類型、文件名和文件大??;進程數據包括該進程的進程名、線程數量和線程峰值數量;
[0030]所述可信列表用于保存可信任的系統(tǒng)數據、可信任的虛擬機信息以及可信任的用戶程序信息;
[0031]通過調用以下函數來獲取服務器信息。
[0032]GetDriveType (IpRootPathName:PChar):UINT ;返回指定驅動器的類型。
[0033]GetDiskFreeSpace(IpRootPathName:PChar ;var IpSectorsPerCluster, IpBytesPerSector, IpNumberOfFreeClusters, IpTotalNumberOfClusters: DffOR D):B00L ;返回指定驅動器的總簇數、剩余簇數及每簇扇區(qū)數、每扇區(qū)字節(jié)數,從而可以計算出總容量和剩余空間。
[0034]步驟2:在可信虛擬監(jiān)視器中安裝虛擬機陷入程序,利用虛擬機陷入程序的sh_page_fault函數獲得陷入可信虛擬監(jiān)視器的虛擬機的進程、內核模塊及動態(tài)庫;
[0035]所述虛擬機陷入程序的安裝是通過將Vmx.c文件中的vmx_vmexit_handler函數的返回地址修改為非法地址完成;
[0036]虛擬機陷入程序的安裝方法:打開Vmx.c文件并修改vmx_vmexit_handler函數中的返回地址為非法地址。然后在sh_page_fault函數獲取陷入虛擬機的進程、內核模塊、動態(tài)庫。
[0037]在本實例中可信虛擬監(jiān)視器采用Xen,用戶要獲取虛擬機的信息,只需要通過Xencontrol和Xenstore這兩個接口就能獲得虛擬機的信息。
[0038]Xencontrol是Xen提供的控制接口,該接口只能被DomO使用,用于幫助DomO控制和管理其他的Domain。通過Xencontrol,DomO不僅能夠創(chuàng)建、銷毀、Domain,控制Domain的運行、暫停、恢復以及迀移,還能夠實現對其他Domain的CPU調度、內存分配以及設備訪問。
[0039]XenStore是Xen提供的一個域間共享的存儲系統(tǒng),它以字符串形式存放了管理程序和前、后端驅動程序的配置信息。XenStore的存儲結構類似于Dom樹:每一個節(jié)點(Node)有一個字符串值(Value),并且可以有多個子節(jié)點。xenstored在根(/)下有三個子目錄,vm,local (實際上是/local/domain)和tool。vm存放