一種基于tpm的虛擬機內(nèi)應用程序完整性度量方法
【專利摘要】本發(fā)明提出一種基于TPM的虛擬機內(nèi)應用程序的完整性度量方法,包括:在可信環(huán)境下獲取可執(zhí)行程序的度量值,并存放于Host OS中的參照列表中作為標準值;在程序運行時提取其代碼段并計算該代碼段的度量值,將其傳送給Host OS的度量列表中;比較度量列表和參照列表來驗證應用程序的狀態(tài)。本發(fā)明基于TPM芯片確保虛擬機內(nèi)應用程序的安全,將可信計算與虛擬機內(nèi)的完整性度量技術(shù)相結(jié)合,一方面減少了虛擬機間監(jiān)控技術(shù)的上下文切換開銷,另一方面能夠及時檢測到針對虛擬機內(nèi)應用程序的惡意攻擊,提高了虛擬機系統(tǒng)的安全性,使該方法在商業(yè)應用和科學研究領(lǐng)域均有廣泛地實用價值和應用前景。
【專利說明】一種基于TPM的虛擬機內(nèi)應用程序完整性度量方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明提出了一種虛擬機內(nèi)應用程序的完整性度量方法,具體涉及一種利用TPM保證客戶虛擬機內(nèi)應用程序安全性的方法。屬于計算機科學的信息安全領(lǐng)域。
【背景技術(shù)】
[0002]如今,系統(tǒng)虛擬機(包括KVM、Xen、VMWare等)受到了越來越多的關(guān)注并得到了廣泛的應用。與傳統(tǒng)計算機系統(tǒng)相比,使用虛擬化技術(shù),不但提高了硬件利用率、更便于軟件環(huán)境的部署以及通過隔離性提高了系統(tǒng)安全。但虛擬機也面臨著嚴峻的安全問題。一方面,針對虛擬機的攻擊越來越多,如虛擬機逃逸攻擊、虛擬機失竊、特定病毒等;另一方面,虛擬機本身也存在著安全漏洞,如虛擬機監(jiān)控器模型不完備、虛擬機之間共享宿主機造成的安全威脅、虛擬機系統(tǒng)中潛在的硬件威脅等。已出現(xiàn)的入侵或攻擊虛擬化環(huán)境的案例幾乎涉及所有的商業(yè)和開源虛擬化技術(shù),增強虛擬機的安全性和構(gòu)建可信的虛擬化環(huán)境已經(jīng)成為業(yè)界的迫切需求。
[0003]當前對計算機系統(tǒng)的完整性保護收到日益重視。度量方法,是一個較新的方法,它的原理是在某些時刻,對目標進行度量,得到目標的某些信息,將這些信息的值與事先記錄的標準值進行比較,從而判斷目標的完整性是否被破壞。雖然它不是針對虛擬機環(huán)境的,但其基本思想可借鑒到虛擬機的保護中。
[0004]與傳統(tǒng)的信息安全防御技術(shù)不同,可信計算組織提出了可信計算,其提供了一種新的思路,它從保證安全問題發(fā)生源頭及安全性入手,以此保證終端系統(tǒng)的安全性。TCG的核心部件是一個嵌入主板上的安全協(xié)處理器芯片TPM。TPM提供一個基于硬件的可信根,提供內(nèi)部的密鑰、存儲空間和存放摘要值的寄存器等。此外由于TPM是基于硬件實現(xiàn)的,并且有精心設計的接口,因此能在很大程度上抵御軟件攻擊。
[0005]可信計算作為信息安全的一項重要技術(shù),將其與完整性度量技術(shù)相結(jié)合實現(xiàn)虛擬機內(nèi)應用程序的完整性保護,能夠在一定程度上提高虛擬機系統(tǒng)的安全性和可信性,因此研究基于TPM的虛擬機內(nèi)應用程序的完整性保護具有重要意義。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的是提供一種虛擬機內(nèi)應用程序的完整性度量方法。該方法首先需要在可信環(huán)境下對客戶虛擬機內(nèi)的可執(zhí)行程序產(chǎn)生度量值,它們在驗證時將作為標準值。然后在程序運行時提取其代碼段并計算出該代碼段的度量值,將其傳送給Host OS的度量列表中。最后通過比較度量列表和作為標準的參照列表中的對應項來驗證應用程序的狀態(tài)。
[0007]本發(fā)明的技術(shù)方案是這樣的:
[0008]本發(fā)明共包括三個步驟,具體如下:
[0009](1)步驟S1:在可信環(huán)境下獲取可執(zhí)行程序的度量值,并存放于Host OS中的參照列表中;
[0010](2)步驟S2:在程序運行時提取其代碼段并計算該代碼段的度量值,將其傳送到Host OS的度量列表中;
[0011](3)步驟S3:比較度量列表和參照列表來驗證應用程序的狀態(tài);其中,步驟S1,可信環(huán)境可指不連接網(wǎng)絡的狀態(tài)下或虛擬機系統(tǒng)初次使用的情況下。由虛擬機中的度量模塊獲取所有需要度量的可執(zhí)行文件的代碼段,并對其進行哈希運算得到一個160bit的度量值,度量值通過虛擬機通信機制傳遞到Host OS的參照列表中,同時依次通過PCR的擴展運算擴展到TPM的PCR寄存器中。
[0012]其中,步驟S2,度量模塊根據(jù)傳送給它的進程ID號,提取正在運行程序的代碼段,并對其進行哈希運算得到一個leobit的度量值,度量值連同可執(zhí)行文件的名稱一起通過虛擬機通信機制傳遞到Host OS的參照列表中,其中可執(zhí)行文件的名稱可作為相關(guān)度量值的索引。
[0013]其中,步驟S3,首先要確保度量列表和參照列表的完整性。以參照列表為例,有一個PCR寄存器保存著當前所有已產(chǎn)生的度量值的SHA-1運算的累計哈希值,由于PCR在TPM硬件中,它能夠抵御任何軟件攻擊,因此PCR中的累積哈希值是可靠的。為了驗證參照列表的完整性,可將參照列表中所有度量值按序依次進行SHA-1運算,將得到的累計哈希值與對應PCR中的值做比較,如果相同則證明參照列表是安全的。最后將度量列表中的度量值與參照列表中有相同索引的度量值做比較,即可發(fā)現(xiàn)此可執(zhí)行文件是否受到了攻擊。
[0014]3、優(yōu)點及功效:
[0015]本發(fā)明所提出的基于TPM的虛擬機內(nèi)應用程序完整性度量方法。與現(xiàn)有技術(shù)相t匕,其主要優(yōu)點是:⑴實施靈活,KVM和Linux都是開源軟件可以根據(jù)需要對其進行修改。
(2)性價比高,大部分機器都配有TPM芯片,并且有可用TPM模擬器來模擬TPM的功能,不要購買其他軟硬件。(3)開銷小,虛擬機內(nèi)度量方法不需要虛擬機之間的上下文切換,因此比虛擬機外監(jiān)控方法更高效。(4)安全性高,能成功的檢測到對虛擬機內(nèi)應用程序的攻擊。
【專利附圖】
【附圖說明】
[0016]圖1虛擬機內(nèi)應用程序的完整性的整體流程圖
[0017]圖2TPM中PCR寄存器的分配方式圖
[0018]圖3應用程序狀態(tài)驗證流程圖
【具體實施方式】
[0019]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點表達得更加清楚明白,下面結(jié)合附圖及具體實施例對本發(fā)明再作進一步詳細的說明。
[0020]本發(fā)明的主要思想是利用可信計算技術(shù)和虛擬機內(nèi)的完整性度量技術(shù)對虛擬機內(nèi)運行的應用程序進行安全保護,利用硬件保存度量結(jié)果,能夠提高對虛擬機內(nèi)應用程序攻擊判斷的準確性和可靠性。
[0021]下面以一實例進行說明,Host OS之上運行了兩個虛擬機VM1和VM2,其中VM1中運行應用程序Pl,VM2中運行應用程序P2。
[0022]首先按照TPM2.0標準中規(guī)定了 PCR0 — PCR7由B1S和Bootloader使用,它們不可由應用程序使用,因此本發(fā)明使用PCR8來依次存儲參照列表中的每一個的度量值,使用PCR9用來依次存儲度量列表中的每一個度量值。TPM中PCR寄存器的具體分配方式如圖2,規(guī)定完P(guān)CR寄存器的使用方式后,按照圖1所示,虛擬機內(nèi)應用程序的完整性度量架構(gòu)即可運行,包括以下步驟:
[0023](1)步驟S1:在可信環(huán)境下獲取可執(zhí)行程序的度量值,并存放于Host OS中的參照列表中。
[0024]可信環(huán)境可指不連接網(wǎng)絡的狀態(tài)下或虛擬機系統(tǒng)初次使用的情況下。由虛擬機中的度量模塊獲取所有需要度量的可執(zhí)行文件的代碼段,選取進程的代碼段作為度量對象是因其是進程必不可少的一部分,而且進程的代碼段能夠體現(xiàn)應用程序的動態(tài)變化情況。對進程的代碼段進行哈希運算得到一個leobit的度量值,度量值通過虛擬機通信機制傳遞到Host OS的參照列表中,同時也依次通過PCR的擴展運算(PCR_Extend)擴展到TPM的PCR寄存器中。PCR的擴展運算可用如下表達式描述:
[0025]PCR_Extend(PCR[i],m) = SHA-1 (PCR[I],m)
[0026]這個擴展運算是一個SHA-1運算,SHA-1是安全哈希的一種,它的輸入最大可可以有(264-1)位二進制數(shù),而輸出總是160bit的二進制數(shù)。對PCR[i]和m進行擴展運算后會重新寫回PCR[i],因此PCR[i]中存放的是累計度量值。
[0027](2)步驟S2:在程序運行時提取其代碼段并計算該代碼段的度量值,將其傳送到Host OS的度量列表中。
[0028]在程序運行時,獲取其進程ID號。度量模塊根據(jù)傳送給它的進程ID號,提取正在運行進程的代碼段,并對其進行哈希運算得到一個leobit的度量值,度量值連同可執(zhí)行文件的名稱一起通過虛擬機通信機制傳送到Host OS的度量列表中,并將其擴展到PCR9中。其中可執(zhí)行文件的名稱可作為相關(guān)度量值的索引。
[0029](3)步驟S3:在度量列表和參照列表都完整的情況下,比較它們來驗證應用程序的狀態(tài)。
[0030]首先要確保度量列表和參照列表的完整性,證明它們沒有受到惡意篡改。如圖3所示,對于參照列表來說,TPM的PCR8寄存器保存著當前所有已產(chǎn)生的度量值的SHA-1運算的累計哈希值。為了驗證參照列表的完整性,可將參照列表中所有度量值依次進行SHA-1運算,將得到的累計哈希值與PCR8中的值做比較,如果相同證明參照列表是完整的沒有被惡意篡改。用同樣的方式證明度量列表是完整性的。在度量列表和參照列表都是完整的情況下,將度量列表中的度量值與參照列表中有相同索引的度量值做比較,即可發(fā)現(xiàn)此可執(zhí)行文件是否受到了攻擊。
[0031]應說明的是:以上實施例僅用以說明而非限制本發(fā)明的技術(shù)方案,盡管參照上述實施例對本發(fā)明進行了詳細說明,本領(lǐng)域的普通技術(shù)人員應當理解:依然可以對本發(fā)明進行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或局部替換,其均應涵蓋在本發(fā)明的權(quán)利要求范圍當中。
【權(quán)利要求】
1.一種基于TPM的虛擬機內(nèi)應用程序完整性度量方法,其特征在于:該方法具體步驟如下: 步驟一:在可信環(huán)境下獲取可執(zhí)行程序的度量值,并存放于Host OS中的參照列表中作為標準值; 步驟二:在程序運行時提取其代碼段并計算該代碼段的度量值,將其傳送給Host OS的度量列表中; 步驟三:比較度量列表和參照列表來驗證應用程序的狀態(tài)。
【文檔編號】G06F21/55GK104298917SQ201410645962
【公開日】2015年1月21日 申請日期:2014年11月14日 優(yōu)先權(quán)日:2014年11月14日
【發(fā)明者】肖利民, 商夢德, 阮利, 李書攀 申請人:北京航空航天大學