專利名稱:一種在vt環(huán)境中操作的軟件代理的篡改保護(hù)方法和裝置的制作方法
技術(shù)領(lǐng)域:
實(shí)施例涉及數(shù)據(jù)處理和信息保障的領(lǐng)域,特別是,涉及,如果兩 個(gè)存儲器頁面不屬于同一保護(hù)域,則禁止第一存儲器頁面的指令訪問
第二存儲器頁面,以保護(hù)在虛擬技術(shù)(VT)環(huán)境中操作的軟件代理免受 篡改。
背景技術(shù):
基于存儲器的攻擊對于信息處理系統(tǒng)的安全來說是非常嚴(yán)重的 威脅。其中一些攻擊包含在計(jì)算機(jī)系統(tǒng)的存儲器中存儲惡意代碼,例 如病毒或蠕蟲,然后當(dāng)運(yùn)行合法程序時(shí)利用程序缺陷和/或緩沖器溢 出而將控制轉(zhuǎn)移到惡意代碼。 一種防止這種類型的攻擊的手段是,在 頁表項(xiàng)中包含一個(gè)"禁止執(zhí)行"位,其可以用來指定存儲了數(shù)據(jù)的頁 面是不可執(zhí)行的,從而惡意代碼就不會作為數(shù)據(jù)存儲,繼而也就不會 在同一物理、線性或邏輯存儲器空間內(nèi)執(zhí)行。
另外的手段包括使用存儲器頁表存儲與代理相關(guān)的"顏色"屬性 (反映它們的安全和/或特權(quán)域),從而以足夠精細(xì)的粒度邏輯地劃分存 儲器來防止一種顏色的代理訪問與另一種顏色相關(guān)聯(lián)的存儲器。然 而,由于頁表中可用的位數(shù)有限,所以這種方法局限于只能分配相對 較少的"顏色"(因此只能劃分相對較少的安全域)。進(jìn)一步地,處理 器技術(shù)的進(jìn)步可能消除這些位作為"顏色"指示符的可用性。
本發(fā)明的實(shí)施例將通過附圖中所示的示例性實(shí)施例來描述,但并 不局限于此,在附圖中相似的附圖標(biāo)記表示類似的元件,其中-圖1說明本發(fā)明各種實(shí)施例的概觀;
圖2說明了所選擇的本發(fā)明各種實(shí)施例的操作方法的流程圖;圖3說明了用來以邏輯有序方式存儲存儲器頁面安全域的示例 性擴(kuò)展頁表結(jié)構(gòu);以及
圖4說明一個(gè)適用于實(shí)施本發(fā)明各種實(shí)施例的實(shí)例計(jì)算機(jī)系統(tǒng)。
具體實(shí)施例方式
本發(fā)明的說明性實(shí)施例包括但不局限于,用于利用存儲在物理設(shè) 備的處理器的一個(gè)或多個(gè)寄存器中的安全域,將該物理設(shè)備的第一存 儲器頁面的第一安全域和該物理設(shè)備的第二存儲器頁面的第二安全 域進(jìn)行比較的方法和裝置。基于所述比較,如果第一安全域的特權(quán)域 與第二安全域的不同,則處理器禁止來自第一存儲器頁面的指令訪問 第二存儲器頁面。結(jié)果,可以在VT環(huán)境中更為有效和有力地保護(hù)軟 件代理,尤其是關(guān)鍵性的軟件代理。
將使用本領(lǐng)域技術(shù)人員向其他本領(lǐng)域技術(shù)人員傳達(dá)他們的工作 內(nèi)容時(shí)通常所使用的術(shù)語來描述說明性實(shí)施例的各個(gè)方面。然而,對 于那些本領(lǐng)域的技術(shù)人員來說顯然可以僅利用所描述的方面中的一 些來實(shí)施替換性實(shí)施例。為了解釋說明的目的,闡述了特定的數(shù)字、 材料和配置以提供對說明性實(shí)施例的全面理解。然而,對于本領(lǐng)域技 術(shù)人員來說不采用這些特定細(xì)節(jié)就可以實(shí)施替換實(shí)施例是顯而易見 的。在其他實(shí)例中,已知的特性將被忽略或簡化,以避免對說明性實(shí) 施例造成模糊。
進(jìn)一步地,以最有助于理解示例性實(shí)施例的方式依次將各種操作 描述為多個(gè)分離的操作;然而,描述的順序不應(yīng)當(dāng)被解釋為暗示這些 操作必須依賴于順序。特別是,這些操作不需按照表述的順序來實(shí)現(xiàn)。
短語"在一個(gè)實(shí)施例中"被重復(fù)地使用。這個(gè)短語通常不表示相 同的實(shí)施例;然而,也可能是相同的實(shí)施例。術(shù)語"包含"、"具有"、 "包括"是同義詞,除非上下文另有規(guī)定。短語"A/B"表示"A或 B"。短i吾"A和/或B"表示"(A), (B),或(A和B)"。短語"A, B 和C中至少一個(gè)"表示"(A), (B), (C), (A和B), (A和C), (B和 C)或(A, B和C)"。短語"(A)B"表示"(B)或(AB)",即,A是可選 的。
圖1說明了本發(fā)明的各種實(shí)施例的概觀。如所說明的,處理器
116的比較邏輯120可以將與(例如,分配給代理114的)存儲器頁面 相關(guān)的安全域和(代理114的指令試圖引用或訪問的)第二存儲器頁面 的安全域進(jìn)行比較?;诒容^的結(jié)果,比較邏輯120可能引起頁面錯(cuò) 誤并禁止所述引用或訪問,或者可能不禁止所述引用或訪問。與兩個(gè) 存儲器頁面相關(guān)的安全域可以存儲在計(jì)算設(shè)備102的處理器116的轉(zhuǎn) 換后備緩沖器(translation lookaside buffer, TLB)U8中,并且可被復(fù) 制到處理器116的之前的安全域(PSD)和當(dāng)前安全域(CSD)寄存器122 中(當(dāng)兩個(gè)存儲器頁面在試圖的存儲器頁面引用或訪問中是之前的存 儲器頁面和當(dāng)前存儲器頁面時(shí))。安全域可能已被(例如虛擬機(jī)管理器 104的)安全域分配服務(wù)110分配并且存儲在頁表108中,用于由虛擬 機(jī)管理器(VMM)104使用以將虛擬機(jī)106的客戶機(jī)物理地址轉(zhuǎn)換成處 理器116的主機(jī)物理地址(在被拷貝到TLB 118中之前)。
在各種實(shí)施例中,虛擬機(jī)(VM)106和虛擬機(jī)管理器104可由計(jì)算 設(shè)備102的相同或不同的處理器核或處理器,例如處理器116,來執(zhí) 行,并且可被存儲在計(jì)算設(shè)備102的存儲器,例如存儲器124中。虛 擬機(jī)106可以包括程序和模塊,例如代理114(其是程序或者程序的模 塊),在一個(gè)實(shí)施例中,包括客戶機(jī)頁表(未示出)。除早先介紹的頁表 108和安全域分配服務(wù)110之外,在一些實(shí)施例中,虛擬機(jī)管理器104 還可以包括完整性測量模塊112,當(dāng)代理114加載到存儲器中時(shí)完整 性測量模塊112能夠驗(yàn)證代理114的完整性。
在各種實(shí)施例中,除本發(fā)明在此包含的實(shí)施例的教導(dǎo)之外,計(jì)算 設(shè)備102可以是任何本技術(shù)領(lǐng)域已知的單或多處理器或處理器核中 央處理單元(CPU)計(jì)算系統(tǒng)。計(jì)算設(shè)備102可以是個(gè)人計(jì)算機(jī)(PC)、 工作站、服務(wù)器、路由器、大型機(jī)、刀片服務(wù)器或高密度服務(wù)器中的 模塊化計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、娛樂中心、機(jī)頂盒或移動設(shè)備。 計(jì)算設(shè)備102可能能夠使用虛擬化技術(shù)操作多個(gè)虛擬機(jī)(諸如虛擬機(jī) 106)以及一個(gè)虛擬機(jī)管理器104的多個(gè)操作系統(tǒng)。如果計(jì)算設(shè)備102 是多處理器或多處理器核系統(tǒng)(圖1中沒有示出),則計(jì)算設(shè)備102的 每個(gè)虛擬機(jī)/虛擬機(jī)管理器可以由專用于該虛擬機(jī)/虛擬機(jī)管理器的處
理器或處理器核來操作。在單處理器或單處理器核計(jì)算設(shè)備102(如圖 1所示)中,所述多個(gè)虛擬機(jī)和虛擬機(jī)管理器104可由所述單處理器或 單處理器核(如處理器116)來操作。 一個(gè)示例性的單/多處理器或處理 器核計(jì)算設(shè)備102如圖4所示,并且隨后將更加詳細(xì)地描述。在下文 中,包括在權(quán)利要求中,除非上下文中另有明確指示,術(shù)語"處理器" 和"處理器核"的使用是可以互換的,每個(gè)術(shù)語都包含另一個(gè)的含義。
在一些實(shí)施例中,VMM 104可以包含計(jì)算設(shè)備102的一個(gè)服務(wù) 分區(qū),用于管理設(shè)備102的實(shí)際的硬件資源,包括存儲器頁面,例如 代理114的存儲器頁面以及指令試圖訪問的存儲器頁面,并且用于協(xié) 調(diào)虛擬機(jī)計(jì)算設(shè)備102中的資源的使用。
除本發(fā)明的實(shí)施例的教導(dǎo)之外,虛擬機(jī)106還可以是任何類型的 虛擬機(jī)。虛擬機(jī)106可以是自主式操作環(huán)境,其表現(xiàn)如同是一個(gè)獨(dú)立 的計(jì)算機(jī)系統(tǒng)。對于通過聯(lián)網(wǎng)結(jié)構(gòu)耦合到計(jì)算設(shè)備102的外部系統(tǒng)來 說,虛擬機(jī)106可能看起來是一個(gè)獨(dú)立的計(jì)算設(shè)備。虛擬機(jī)106還可 以具有能夠管理多個(gè)代理(諸如代理114)的操作系統(tǒng),還可能具有一 個(gè)受保護(hù)的存儲器空間,該存儲器空間操作性地專屬于虛擬機(jī)106。 在一個(gè)實(shí)施例中,虛擬機(jī)106可以包括包含有線性地址和客戶機(jī)物理 地址之間的映射的客戶機(jī)頁表(未示出)。如上所述,虛擬機(jī)106還包 含代理114,并且由處理器116操作。適合的虛擬機(jī)和虛擬化技術(shù)包 括但不限于那些可從華盛頓州雷德蒙的微軟公司、加利福尼亞州帕洛 阿爾托的VMware公司以及英國劍橋的XenSource得到的技術(shù)。
仍然如所說明的,VMM 104可以包括頁表108的結(jié)構(gòu)。在一些 實(shí)施例中,如隨后圖3所示,可以以分級的方式組織頁表108,以用 于將虛擬機(jī)106的客戶機(jī)物理地址映射到計(jì)算設(shè)備102的主機(jī)物理地 址,以及用于計(jì)算設(shè)備102的存儲器頁面存儲安全域。例如,頁表 108可以包括基本的和擴(kuò)展的頁表,用于提供從虛擬機(jī)106的線性虛 擬地址到虛擬機(jī)106的客戶機(jī)物理地址的映射、從客戶機(jī)物理地址到 計(jì)算設(shè)備102的主機(jī)物理地址的映射,以及用于為計(jì)算設(shè)備102的存 儲器頁面存儲安全域。頁表108可由VMM 104響應(yīng)于加載虛擬機(jī)106 組件(諸如加載代理114)而更新,來為那些組件添加用于將它們的客
戶機(jī)物理地址映射以指向主機(jī)物理存儲器頁面的項(xiàng)。進(jìn)一步地,擴(kuò)展
頁表108可被稱作擴(kuò)展頁表指針(EPTP)的處理器寄存器引用。EPTP 可以包含某些位使其能夠標(biāo)記安全域配置選項(xiàng)。擴(kuò)展頁表的各種級別 可能包含能夠存儲所有或部分安全域的擴(kuò)展頁表項(xiàng)(EPTE)。由于 EPTE可以形成多級分頁結(jié)構(gòu),所以來自多個(gè)級別的保護(hù)域的位可被 結(jié)合以唯一地標(biāo)識保護(hù)域。示例性EPTP和EPTE結(jié)構(gòu)將隨后參考圖 3做更為詳盡的描述。
在一些實(shí)施例中,如之前暗示的,VMM 104可以包括安全域分 配服務(wù)110(下文中稱為分配服務(wù)),其能夠?yàn)榇泶_定安全域,將所 確定的域和存儲器頁面或代理頁面相關(guān)聯(lián),以及將所確定的域存儲在 指向一個(gè)或多個(gè)存儲器頁面的EPTE結(jié)構(gòu)中。分配服務(wù)110可以向每 個(gè)代理分配一個(gè)唯一的安全域,還可以將同一安全域分配給同一代理 的相關(guān)聯(lián)的模塊或分配給相關(guān)聯(lián)的代理。同樣,分配服務(wù)iio還可以 向虛擬機(jī)106的基礎(chǔ)組件以及向遺留應(yīng)用分配特殊的安全域?;A(chǔ)組 件,例如調(diào)度程序、加載器以及存儲器管理器可以被分配一個(gè)管理安 全域,以允許它們的指令訪問具有不同安全域的存儲器頁面。在這種 意義上,安全域是部分有序的, 一些安全域會比其他安全域更特權(quán)化 (雖然并不始終如此)。遺留應(yīng)用可能不會被分配安全域(或給予一個(gè)安 全域"0"),并且從而,可能不會訪問具有安全域的存儲器頁面。在 各種實(shí)施例中,分配服務(wù)110還可以確定與所確定的安全域相關(guān)聯(lián)的 特征,例如該域被分配到的存儲器頁面是否是隱藏的存儲器頁面。在 一個(gè)實(shí)施例中,如以下參考圖3所述,部分安全域可以以嵌套方式存 儲在多個(gè)EPTE中。在這樣的實(shí)施例中,分配服務(wù)110可以從邏輯組 中分配代理,例如網(wǎng)絡(luò)驅(qū)動器、對于每個(gè)代理來說相同的安全域的一 部分以及對于每個(gè)代理模塊來說唯一的一部分,從而允許分配的安全 域的邏輯組織結(jié)構(gòu)。在替換的實(shí)施例中,分配服務(wù)110可能是虛擬機(jī) (諸如虛擬機(jī)106)的組件,而不是VMM 104的組件。
在各種實(shí)施例中,如之前暗示的,VMM 104還可以包括完整性 測量模塊(IMM)112,當(dāng)代理114裝載到虛擬機(jī)106的存儲器中時(shí)完 整性測量模塊112可以驗(yàn)證代理114的完整性。IMM 112可以使用任
何本領(lǐng)域已知的方法來證實(shí)代理114的完整性,例如存儲器頁面的密 碼哈希。通過驗(yàn)證代理114的完整性,IMM 112可以提供額外的安全 層,以即使在分配安全域之前也能夠檢測到代理114的惡化。在一些 實(shí)施例中,計(jì)算設(shè)備102可以包括附加的虛擬機(jī)(未示出),其可以包 括IMM 112。在這些實(shí)施例中,VMM 104的完整性服務(wù)(未示出)可 以將代理114的存儲器頁面的拷貝映射到附加的虛擬機(jī),以由IMM 112進(jìn)行評估,這可以為該代理返回驗(yàn)證結(jié)果。
在各種實(shí)施例中,如之前暗示的,虛擬機(jī)106可以包含一個(gè)或多 個(gè)應(yīng)用程序,例如代理114。代理114可以是任何類型的代理,包括 具有需要訪問其他代理的存儲器頁面的指令的程序或程序的模塊。這 樣的訪問可能是讀訪問或?qū)懺L問,或者是跳轉(zhuǎn)或調(diào)用以轉(zhuǎn)移到存儲在 被試圖訪問的存儲器頁面中的代理。代理114可能是虛擬機(jī)106的合 法的(或被感染的)代理,或者可能是惡意程序,例如蠕蟲或病毒。在 一些實(shí)施例中,代理114可能是許多可信的虛擬機(jī)106的基本組件中 的一個(gè),例如調(diào)度程序、加載器、存儲器管理器或安全域分配服務(wù) IIO(如果不是由VMM104實(shí)現(xiàn)的話)。如上所述,這些組件可以被分 配一個(gè)特殊的管理安全域,以允許組件114的指令訪問具有不同安全 域的存儲器頁面。在其他實(shí)施例中,代理114可能是一個(gè)沒有被分配 安全域的遺留應(yīng)用。如上所述,代理114可被存儲在本身與一個(gè)安全 域相關(guān)聯(lián)的虛擬機(jī)106的存儲器頁面中。
如所說明的那樣,除本發(fā)明的實(shí)施例的教導(dǎo)之外,處理器116可 以是多種不同類型的處理器中的任何一種,例如Intel公司的 Pentium⑧處理器系列、Itanium⑧處理器系列或其他處理器系列中的處 理器,或任何其他通用的或來自另一家公司的其他處理器中的處理 器。處理器116可以執(zhí)行虛擬機(jī)106及其代理、虛擬機(jī)管理器104及 其代理,并且處理器116可以包括一個(gè)或多個(gè)TLB 118,其中TLB 118 被修改以存儲存儲器頁面的安全域,并且具有相關(guān)的比較邏輯120, 以及CSD和PSD寄存器12'2??梢栽鰪?qiáng)TLB 118以拷貝由VMM 104 的安全域分配服務(wù)110為不同的存儲器頁面分配并存儲在頁表108中 的安全域。在處理試圖訪問存儲器頁面的代理114的指令時(shí),虛擬機(jī)
106的存儲器管理邏輯、VMM 104和處理器116可將指令所引用的 線性地址映射到從虛擬機(jī)106的客戶機(jī)頁表(未示出)獲得的客戶機(jī)物 理地址,該地址隨后將被該邏輯映射到該指令的線性地址所引用的實(shí) 際存儲器頁面的主機(jī)物理地址。從客戶機(jī)物理地址到主機(jī)物理地址的 映射可以從VMM 104的頁表108獲得,頁表108可以是擴(kuò)展頁表。 TLB 118可以被廣泛應(yīng)用于這種高速緩存各種級別的地址轉(zhuǎn)換的處 理中。處理器116的邏輯可以隨后將當(dāng)前存儲于CSD寄存器122中 的存儲器頁面的安全域拷貝到PSD寄存器122中,并且將正訪問的 存儲器頁面的安全域拷貝到CSD寄存器122中。邏輯120進(jìn)一步比 較CSD和PSD寄存器122中的當(dāng)前和之前的安全域以確定是否禁止 該引用/訪問。
在各種實(shí)施例中,TLB 118可以是任何本領(lǐng)域已知的轉(zhuǎn)換后備緩 沖器,不同之處在于做了修改以存儲安全域。此外,TLB118可以高 速緩存從指令所引用的線性存儲器地址到客戶機(jī)物理地址的映射,以 及從客戶機(jī)物理地址到指向指令試圖引用訪問的存儲器頁面的主機(jī) 物理地址的映射。安全域和TLB 118的映射可由處理器116的邏輯來 更新。
如之前所暗示的,處理器116可以包括PSD和CSD寄存器122 以及比較邏輯120,用于比較存儲于PSD和CSD寄存器122中的安 全域。比較可以根據(jù)任何己知的手段來實(shí)現(xiàn)。例如,如果安全域與數(shù) 字值相關(guān)聯(lián),則比較邏輯120可以確定該值是否相同,是否一個(gè)或兩 個(gè)值都是零(表示沒有安全域,如前面所討論的),或者是否一個(gè)或兩 個(gè)值都是默認(rèn)值,例如是表示管理安全域的最大值。比較邏輯120隨 后可以使用通過比較得到的結(jié)果來禁止指令引用或訪問存儲器頁面。 在一個(gè)實(shí)施例中,當(dāng)包含有指令的存儲器頁面的安全域與指令試圖引 用或訪問的存儲器頁面的安全域相同時(shí),比較邏輯120將不禁止該引 用或訪問,而當(dāng)所述安全域不同時(shí)將禁止該引用或訪問。比較邏輯 120將通過觸發(fā)頁面錯(cuò)誤異常來禁止該引用或訪問。
此外,比較邏輯120可以基于另外的標(biāo)準(zhǔn)來確定是否禁止該引用 或訪問。例如, 一個(gè)安全域(例如,"0")可以表示沒有安全域,從而 標(biāo)記為沒有安全域的存儲器頁面可以被任何其他頁面訪問。如前所
述,頁表108的EPTE還可以包含一個(gè)字段或位,其定義了該頁面是 否是隱藏的??梢詫⒃撐辉O(shè)置為0以允許任何其他頁面讀取該被引用 的頁面,而不管安全域比較的結(jié)果如何,或者可以將該位設(shè)置為1來 允許比較邏輯120基于安全域比較而禁止讀引用或訪問。在一些實(shí)施 例中,隱藏的位可以與安全域一起由處理器116的邏輯來檢索,并被 存儲在TLB 118的頁表中。不管隱藏位如何設(shè)置,寫引用或訪問都將 被阻止。
同樣地,比較邏輯120還可以根據(jù)指令控制流來確定是否禁止該 引用或訪問。例如,可以使用指令來標(biāo)記程序的允許入口點(diǎn)。在根據(jù) Pentium⑧處理器系列架構(gòu)的一個(gè)實(shí)施例中,為了這個(gè)目的,可以加入 新的指令(例如,"定向地址向量(Directed Address Vector)"或"DAV" 指令)。如果從一個(gè)安全域的存儲器頁面到另一個(gè)安全域的存儲器頁 面中的DAV指令執(zhí)行跳轉(zhuǎn)或其他控制流指令,則所述引用或訪問可 能不會被禁止。然而,如果跳轉(zhuǎn)是到另一個(gè)安全域的頁面,而不是到 DAV指令的,則該引用或訪問可能被禁止。因此,可以使用DAV指 令以允許僅在一個(gè)可以提供規(guī)定的安全接口的預(yù)期點(diǎn)處,才可進(jìn)入程 序。可以防止從另一個(gè)安全域的程序跳轉(zhuǎn)到程序的隨機(jī)或非預(yù)期部 分。最后,DAV指令可以僅在可執(zhí)行的(例如,不是根據(jù)Pentium 4 和其他處理器系列架構(gòu)的使用了 XD位的eXecute Disabled)頁面中執(zhí) 行,確保具有表現(xiàn)為DAV指令的偽比特序列的數(shù)據(jù)頁面不會被處理 器116執(zhí)行。
此外,比較邏輯120還可以使得頁面錯(cuò)誤報(bào)告能夠包含頁面錯(cuò)誤 是否是由安全域不匹配或違反造成的。例如,在觸發(fā)頁面錯(cuò)誤時(shí),比 較邏輯120可以提供指示,從而將頁面錯(cuò)誤錯(cuò)誤碼中的一個(gè)位(例如, 根據(jù)Pentium⑧處理器系列架構(gòu)加入堆棧的頁面錯(cuò)誤錯(cuò)誤碼中的位5) 指定為安全域違反位,并且該位可被設(shè)置為1以指示頁面錯(cuò)誤由安全 域不匹配觸發(fā)。這個(gè)位將在其他標(biāo)志的上下文中解釋。例如,如果安 全域違反是由取指令引起的,則錯(cuò)誤碼中的取指令位將被設(shè)置為1。 如果安全域違反是由讀或?qū)懸鸬?,則讀/寫位將被設(shè)置為對于讀
為0或?qū)τ趯憺?。另外,引起錯(cuò)誤的代理114的存儲器頁面的線性 地址將被保存在例如根據(jù)Pentiuim⑧處理器系列架構(gòu)的處理器的CR2 控制寄存器中。
如所說明的,計(jì)算環(huán)境102的存儲器124可以是除VMM 104、 VM 106和它們的組件之外的本領(lǐng)域任何已知類型的能夠存儲由處理 器116執(zhí)行的指令的存儲器設(shè)備。在一個(gè)實(shí)施例中,存儲器124可以 在至少包括VMM 104和VM 106的多個(gè)虛擬機(jī)中被分區(qū)。
總之,可以添加安全域分配服務(wù)110以向存儲器頁面分配安全 域??梢栽鰪?qiáng)頁表108和TLB 118以存儲分配的安全域,并且可將處 理器116進(jìn)行修改以包含PSD和CSD寄存器122以存儲當(dāng)前和之前 的存儲器頁面的安全域,并且包含比較邏輯120以比較之前的和當(dāng)前 存儲器頁面的安全域以確定是否禁止引用/訪問。
圖2說明了本發(fā)明的各種實(shí)施例的方法的所選操作的流程圖。如 圖所示,在各種實(shí)施例中,每當(dāng)在存儲器中產(chǎn)生那些代理中的一個(gè)時(shí), 計(jì)算設(shè)備的完整性測量模塊(IMM)可以驗(yàn)證計(jì)算設(shè)備代理的完整性 (方框202)。 IMM可以駐留在計(jì)算設(shè)備的虛擬機(jī)管理器(VMM)中,或 在不包含被驗(yàn)證的代理的計(jì)算設(shè)備的虛擬機(jī)(VM)中。IMM可以接收 包含該代理的存儲器頁面的拷貝,并且可以參考圖1以如前所述的方 式來驗(yàn)證該代理。通過驗(yàn)證該代理,VMM的安全域分配服務(wù)可以向 計(jì)算設(shè)備的VM的代理分配安全域(方框204)。分配服務(wù)可以通過將 安全域存儲在VMM的擴(kuò)展頁表的對應(yīng)的擴(kuò)展頁表項(xiàng)(EPTE)結(jié)構(gòu)中
來將所分配的安全域和分配給代理的所有存儲器頁面進(jìn)行關(guān)聯(lián),并且 可以在與EPTE相關(guān)聯(lián)的擴(kuò)展頁表指針(EPTP)結(jié)構(gòu)中設(shè)置安全域配置
值,例如如前所述的隱藏位,而所述安全域配置值又被復(fù)制并存儲到 TLB中(方框206)。
如之前進(jìn)一步的描述,當(dāng)與計(jì)算設(shè)備的VM相關(guān)聯(lián)的處理器服務(wù) 于駐留于計(jì)算設(shè)備的第一存儲器頁面的代理的指令,該指令試圖引用 或訪問第二存儲器頁面時(shí),處理器的邏輯可以更新存儲于PSD和CSD
寄存器中的之前和當(dāng)前存儲器頁面的安全域(方框208)。
一旦第二存儲器頁面的安全域被檢索并存儲,處理器的比較邏輯
就可以比較存儲在PSD和CSD中的安全域(方框210)。至少部分地 基于比較結(jié)果,比較邏輯將不禁止指令引用或訪問第二存儲器頁面 (方框220),或禁止訪問(方框222)。除比較安全域之外,比較邏輯還 適用于執(zhí)行多個(gè)其他測試。例如,比較邏輯可以確定第一存儲器頁面 的安全域是否與第二存儲器頁面的安全域不同(方框212)。如果安全 域相同,則比較邏輯可以不禁止訪問(方框220)。反之如果安全級別 不同,則比較邏輯將進(jìn)一步確定是否為第二存儲器頁面設(shè)置了前述的 隱藏位(方框214)。如果設(shè)置了隱藏位,則比較邏輯將禁止訪問(方框 222)。然而,如果沒有設(shè)置隱藏位,則比較邏輯可以進(jìn)一步確定試圖 進(jìn)行的訪問是否是讀引用或讀訪問(方框216)。如果該引用或訪問是 讀引用或訪問,則比較邏輯可以不禁止訪問(方框220)。反之,如果 引用或訪問不是讀引用或訪問,則比較邏輯可以確定該引用或訪問是 否是到第二存儲器頁面的經(jīng)核準(zhǔn)的入口點(diǎn)的控制流轉(zhuǎn)移,例如跳轉(zhuǎn)或 調(diào)用指令(前面討論的"DAV指令")(方框218)。如果指令是到允許 入口點(diǎn)的跳轉(zhuǎn)或調(diào)用,則比較邏輯可以不禁止該指令(方框220)。如 果該指令不是跳轉(zhuǎn)或調(diào)用,或者是到未經(jīng)核準(zhǔn)的入口點(diǎn)的存儲器的跳 轉(zhuǎn)或調(diào)用,則比較邏輯將禁止該指令引用或訪問第二存儲器頁面(方 框222)。
如果指令已被禁止弓I用或訪問第二存儲器頁面,則比較邏輯將觸 發(fā)頁面錯(cuò)誤(方框224)。在一些實(shí)施例中,頁面錯(cuò)誤可能包含對引用 或訪問的類型的描述符,和試圖進(jìn)行被禁止的引用或訪問的第一存儲 器頁面的地址。
圖3說明了用于以邏輯有序方式存儲存儲器頁面安全域的示例 性擴(kuò)展頁表結(jié)構(gòu)。所示的最左邊的方框是示例性擴(kuò)展頁表指針 (EPTP),其能夠存儲安全域優(yōu)選項(xiàng)。EPTP可以例如是64位結(jié)構(gòu),包 括配置/允許位、能夠容納512個(gè)擴(kuò)展頁表項(xiàng)的4KB存儲器頁面的 物理地址(48位字段)以及多個(gè)保留位,其中所述擴(kuò)展頁表項(xiàng)例如是中 間和右邊的一系列方框中所示的EPTE方框。保留位用于指示被指令 訪問的存儲器頁面是否具有分配的安全域、該頁面是否是隱藏的、該 頁面是否是轉(zhuǎn)移頁(DAV),等等。中間和右邊所示的EPTE方框可以是由EPTP方框指向的存儲器頁面的EPTE。EPTE例如可以包括提供 頁面幀的地址的40位的地址字段,所述頁面幀是指令試圖訪問的物 理頁面幀,或者提供包含可以進(jìn)一步用于地址轉(zhuǎn)換的另外512個(gè) EPTE的另一存儲器頁面的地址。圖中示出的指向右邊的EPTE方框 的中間的EPTE方框構(gòu)成這種指向的EPTE。同樣,可以使用EPTE 的IO個(gè)位來存儲安全域。
在一些實(shí)施例中,CPU至少可以解析EPTE的兩個(gè)域,例如那些 中間和右邊系列的方框,以對試圖訪問的存儲器頁面的客戶機(jī)物理地 址進(jìn)行轉(zhuǎn)換。因此,因?yàn)閮蓚€(gè)EPTE被關(guān)聯(lián)到任意給定的頁面幀,所 以可以使用20個(gè)位來向存儲器頁面分配安全域。同樣,因?yàn)榈谝粋€(gè) EPTE的10個(gè)位可以被多達(dá)512個(gè)存儲器頁面幀共享,所以安全域分 配服務(wù)可以利用這一點(diǎn)從而以邏輯模式劃分安全域空間(例如,所有 網(wǎng)絡(luò)驅(qū)動器共享它們安全域的相同的前IO個(gè)位)。
圖4說明了適用于實(shí)現(xiàn)本發(fā)明的各種實(shí)施例的實(shí)例計(jì)算機(jī)系統(tǒng)。 如圖所示,計(jì)算系統(tǒng)400包含多個(gè)處理器或處理器核402(如處理器 116),以及系統(tǒng)存儲器404(例如存儲器124)。為了這個(gè)應(yīng)用的目的, 包括在權(quán)利要求中,術(shù)語"處理器"和"處理器核"可以看作是同義 的,除非上下文中另有明確要求。另外,計(jì)算系統(tǒng)400包括大容量存 儲裝置406(例如軟盤、硬驅(qū)動器、只讀壓縮盤存儲器(CDROM)等等)、 輸入/輸出設(shè)備408(例如鍵盤、光標(biāo)控制等等)以及通信接口 410(例如 網(wǎng)絡(luò)接口卡、調(diào)制解調(diào)器等等)。這些元件經(jīng)由系統(tǒng)總線412相互耦 合,系統(tǒng)總線412代表一個(gè)或多個(gè)總線。在多總線的情況下,它們通 過一個(gè)或多個(gè)總線橋(未示出)橋接。在各種實(shí)施例中,大容量存儲裝 置406可以被分成多個(gè)分區(qū)以供虛擬機(jī)使用,其中每個(gè)虛擬機(jī)具有獨(dú) 占使用的分配的分區(qū)。
這些元件中的每一個(gè)都執(zhí)行其在本技術(shù)領(lǐng)域所公知的傳統(tǒng)功能。 特別是,禾U用早先描述的改進(jìn)的TLB、 PSD和CSD寄存器以及安全 域比較邏輯對處理器402進(jìn)行改進(jìn)。此外,系統(tǒng)存儲器404和大容量 存儲裝置406可用于存儲實(shí)現(xiàn)安全域分配服務(wù)、IMM等編程指令的 運(yùn)行中的拷貝和永久拷貝,所述指令在這里統(tǒng)一表示為422。指令422可以由處理器402或高級語言(例如C語言)所支持的匯編指令進(jìn)行編 譯。
編程指令的永久拷貝可以在工廠中裝入永久存儲裝置406,或者 在該領(lǐng)域,例如可以通過諸如壓縮盤(CD)的分發(fā)介質(zhì)(未示出),或通 過通信接口 410(從分發(fā)服務(wù)器(未示出))裝入永久存儲裝置406。
這些元件402—412的構(gòu)成是已知的,因此相應(yīng)地不再進(jìn)行進(jìn)一 步描述。
雖然在這里對具體實(shí)施例進(jìn)行了說明和描述,但是對于那些本領(lǐng) 域的普通技術(shù)人員來說,可以理解,各種改變和/或等價(jià)的實(shí)現(xiàn)方式 可以替換所示出和描述的具體實(shí)施例,而不背離本發(fā)明的實(shí)施例的范 圍。本申請意在覆蓋這里所討論的實(shí)施例的任何修正或改變。因此, 明確地說,本發(fā)明的實(shí)施例僅由權(quán)利要求及其等價(jià)物來限制。
權(quán)利要求
1、一種方法,包括將物理設(shè)備的第一存儲器頁面的第一安全域和所述物理設(shè)備的第二存儲器頁面的第二安全域存儲在所述物理設(shè)備的處理器的轉(zhuǎn)換后備緩沖器的寄存器中;當(dāng)所述第一存儲器頁面的指令試圖引用或訪問所述第二存儲器頁面時(shí),分析所述第一和第二存儲器頁面的第一和第二安全域;以及至少部分地基于對所述第一和第二安全域的分析,禁止所述第一存儲器頁面的指令引用或訪問所述第二存儲器頁面。
2、 如權(quán)利要求1所述的方法,其中所述存儲操作包括當(dāng)試圖 進(jìn)行引用或訪問時(shí),從所述轉(zhuǎn)換后備緩存中檢索所述第一和第二安全 域,并且將所檢索到的第一和第二安全域存儲在所述轉(zhuǎn)換后備緩存的 寄存器中。
3、 如權(quán)利要求2所述的方法,其中所述方法進(jìn)一步包括從所 述物理設(shè)備的虛擬機(jī)管理器的頁表中檢索所述第一和第二安全域,并 且將所檢索到的第一和第二安全域高速緩存在所述轉(zhuǎn)換后備緩存中, 并且所述虛擬機(jī)管理器的頁表是擴(kuò)展頁表,其包括擴(kuò)展頁表指針結(jié)構(gòu),每個(gè)擴(kuò)展頁表指針結(jié)構(gòu)指示是否已經(jīng)為相關(guān) 的存儲器頁面設(shè)置了安全域以及指示與所述安全域相關(guān)的特性,以及 擴(kuò)展頁表項(xiàng)結(jié)構(gòu),用于存儲分配給相關(guān)的存儲器頁面的安全域。
4、 如權(quán)利要求3所述的方法,其中來自多個(gè)擴(kuò)展頁表項(xiàng)結(jié)構(gòu)的 位可被用于存儲一個(gè)安全域,其中所述多個(gè)擴(kuò)展頁表項(xiàng)結(jié)構(gòu)中的至少 一些具有彼此不同的嵌套級別。
5、 如權(quán)利要求1所述的方法,其中所述禁止操作包括如果所 述第一安全域與所述第二安全域不同,則引發(fā)頁面錯(cuò)誤,并且禁止所述第一存儲器頁面的指令引用或訪問所述第二存儲器頁面。
6、 如權(quán)利要求1所述的方法,其中所述方法進(jìn)一步包括確定 所述第二存儲器頁面是否是隱藏的存儲器頁面,并且如果所述第二存 儲器頁面是隱藏的存儲器頁面,則也禁止所述第一存儲器頁面的指令 引用或訪問所述第二存儲器頁面。
7、 如權(quán)利要求6所述的方法,其中所述方法進(jìn)一步包括確定 所述引用或訪問是否是讀或?qū)懸没蛟L問,并且,如果所述第二存儲 器頁面不是隱藏的存儲器頁面,則如果所述第一安全域與所述第二安 全域不同并且所述引用或訪問是讀引用或訪問則不禁止所述指令引 用或訪問所述第二存儲器頁面,如果所述第一安全域低于所述第二安 全域并且所述引用或訪問是寫引用或訪問則禁止所述指令引用或訪 問所述第二存儲器頁面。
8、 如權(quán)利要求1所述的方法,進(jìn)一步包括如果所述引用或訪 問是到所述第二存儲器頁面的允許入口點(diǎn)的跳轉(zhuǎn)或調(diào)用之一,則不管 所述第一安全域是否與所述第二安全域不同,都不禁止所述指令引用 或訪問所述第二存儲器頁面。
9、 如權(quán)利要求1所述的方法,進(jìn)一步包括如果所述第二安全 域不比至少一個(gè)預(yù)定安全域具有更高的特權(quán),則不禁止所述指令引用 或訪問所述第二存儲器頁面。
10、 如權(quán)利要求1所述的方法,其中所述第二存儲器頁面存儲關(guān) 鍵的操作系統(tǒng)組件,并且所述第二安全域是管理安全域。
11、 如權(quán)利要求l所述的方法,進(jìn)一步包括由所述物理設(shè)備的 虛擬機(jī)管理器的安全域分配服務(wù)分配至少所述第一和第二安全域。
12、 如權(quán)利要求1所述的方法,進(jìn)一步包括由所述物理設(shè)備的 虛擬機(jī)管理器的完整性測量模塊驗(yàn)證分配有所述第一存儲器頁面的 所述物理設(shè)備的虛擬機(jī)的代理的完整性。
13、 一種處理器,包括轉(zhuǎn)換后備緩沖器,包括第一和第二寄存器,用于存儲具有所述處 理器的物理設(shè)備的第一和第二存儲器頁面的第一和第二安全域;以及 比較邏輯,其耦合到所述轉(zhuǎn)換后備緩沖器,用于比較所述第一存儲器頁面的第一安全域和所述第二存儲器 頁面的第二安全域,其中所述安全域己經(jīng)從所述轉(zhuǎn)換后備緩沖器 中檢索出,以及如果所述第一安全域高于或等于所述第二安全域,則不禁止 所述第一存儲器頁面的指令引用或訪問所述第二存儲器頁面。
14、 如權(quán)利要求13所述的處理器,其中存儲在所述轉(zhuǎn)換后備緩 存中的安全域是從所述物理設(shè)備的虛擬機(jī)管理器的頁表中檢索的,并 且所述虛擬機(jī)管理器的頁表是擴(kuò)展頁表,其包括擴(kuò)展頁表指針結(jié)構(gòu),每個(gè)擴(kuò)展頁表指針結(jié)構(gòu)被配置為指示是否已 經(jīng)為相關(guān)的存儲器頁面設(shè)置了安全域以及指示與所述安全域相關(guān)的 特性,以及擴(kuò)展頁表項(xiàng)結(jié)構(gòu),其被配置為存儲分配給相關(guān)的存儲器頁面的安 全域。
15、 如權(quán)利要求13所述的處理器,其中所述比較邏輯進(jìn)一步用 于如果所述第一安全域與所述第二安全域不同,則引起頁面錯(cuò)誤, 以禁止所述指令引用或訪問所述第二存儲器頁面。
16、 如權(quán)利要求13所述的處理器,其中所述比較邏輯進(jìn)一步用 于確定所述第二存儲器頁面是否是隱藏的存儲器頁面,并且如果所 述第二存儲器頁面是隱藏的存儲器頁面則也禁止所述第一存儲器頁面的指令引用或訪問所述第二存儲器頁面。
17、 如權(quán)利要求16所述的處理器,其中所述比較邏輯進(jìn)一步用 于確定所述引用或訪問是否是讀或?qū)懸没蛟L問,并且,如果所述 第二存儲器頁面不是隱藏的存儲器頁面,則如果所述第一安全域與所 述第二安全域不同并且所述引用或訪問是讀引用或訪問則不禁止所 述指令引用或訪問所述第二存儲器頁面,如果所述第一安全域與所述 第二安全域不同并且所述引用或訪問是寫引用或訪問則禁止所述指 令引用或訪問所述第二存儲器頁面。
18、 如權(quán)利要求13所述的處理器,其中所述比較邏輯進(jìn)一步用于如果所述引用或訪問是到所述第二存儲器頁面的允許入口點(diǎn)的跳 轉(zhuǎn)或調(diào)用之一,則不管所述第一安全域與所述第二安全域是否不同, 都不禁止所述指令引用或訪問所述第二存儲器頁面。
19、 如權(quán)利要求13所述的處理器,其中所述第二存儲器頁面存儲關(guān)鍵的操作系統(tǒng)組件,并且所述第二存儲器頁面的第二安全域是管 理安全域。
20、 如權(quán)利要求13所述的處理器,其中具有所述處理器的物理 設(shè)備的虛擬機(jī)管理器包括安全域分配服務(wù)以用于分配至少所述第一 和第二安全域,其中所述虛擬機(jī)管理器由所述處理器操作。
21、 如權(quán)利要求13所述的處理器,其中具有所述處理器的物理 設(shè)備的虛擬機(jī)管理器包括完整性管理模塊以用于驗(yàn)證所述第一存儲 器頁面的完整性,其中所述虛擬機(jī)管理器由所述處理器操作。
22、 一種制造物品,包拮 存儲介質(zhì);以及多個(gè)存儲在所述存儲介質(zhì)上的編程指令,用于例示物理設(shè)備的虛擬機(jī)管理器的安全域分配服務(wù),以為所述物理設(shè)備的第一和第二存儲器頁面分配至少第一和 第二安全域,以及將所分配的至少第一和第二安全域存儲在所述虛擬機(jī)管理 器的頁表中,便于所述物理設(shè)備的處理器的比較邏輯檢索所述至 少第一和第二安全域,所述比較邏輯比較所述第一存儲器頁面的 第一安全域和所述第二存儲器頁面的第二安全域,其中所述第一 存儲器頁面的指令正試圖引用或訪問所述第二存儲器頁面,并且 如果第一安全等級與第二安全等級相同則所述比較邏輯不禁止 來自所述第一存儲器頁面的指令引用或訪問所述第二存儲器頁 面。
23、 如權(quán)利要求22所述的物品,其中所述虛擬機(jī)管理器的頁表 是擴(kuò)展頁表,包括擴(kuò)展頁表指針結(jié)構(gòu),每個(gè)擴(kuò)展頁表指針結(jié)構(gòu)指示是否已經(jīng)為相關(guān) 的存儲器頁面設(shè)置了安全域以及指示與所述安全域相關(guān)的特性,以及 擴(kuò)展頁表項(xiàng)結(jié)構(gòu),用于存儲分配給相關(guān)的存儲器頁面的安全域。
24、 如權(quán)利要求23所述的物品,其中所述指令進(jìn)一步用于例示 所述安全域分配服務(wù)以便為所述至少第一和第二存儲器頁面中的至 少一個(gè),確定與所確定的安全域相關(guān)的一個(gè)或多個(gè)特性,并將所述一 個(gè)或多個(gè)特性存儲在所述擴(kuò)展頁表指針結(jié)構(gòu)中。
25、 一種系統(tǒng),包括大容量存儲裝置,其中存儲有至少一個(gè)可實(shí)例化為關(guān)鍵的操作系 統(tǒng)組件代理的關(guān)鍵的操作系統(tǒng)組件程序;以及處理器,其耦合到所述大容量存儲裝置,所述處理器包括轉(zhuǎn)換后備緩沖器,其包括第一和第二寄存器以存儲所述系統(tǒng) 的第一和第二存儲器頁面的第一和第二安全域,所述第二存儲器 頁面具有所述關(guān)鍵的操作系統(tǒng)組件代理;以及比較邏輯,其耦合到所述轉(zhuǎn)換后備緩沖器,并且用于比較所述第一存儲器頁面的第一安全域和所述第二存儲器頁面的第二安全域,其中所述安全域已經(jīng)從所述轉(zhuǎn)換后備緩沖器中檢索出,以及如果所述第一安全域和所述第二安全域相同,則不禁止來自所述第一存儲器頁面的指令訪問所述第二存儲器頁面。
26、 如權(quán)利要求25所述的系統(tǒng),其中存儲在所述轉(zhuǎn)換后備緩沖 器中的安全域是從所述系統(tǒng)的虛擬機(jī)管理器的頁表中檢索的,并且所 述虛擬機(jī)管理器的頁表是擴(kuò)展頁表,其包括擴(kuò)展頁表指針結(jié)構(gòu),每一個(gè)擴(kuò)展頁表指針結(jié)構(gòu)被配置為指示是否已經(jīng)為相關(guān)的存儲器頁面設(shè)置了安全域以及指示與所述安全域相關(guān)的特性,以及擴(kuò)展頁表項(xiàng)結(jié)構(gòu),其被配置為存儲分配給相關(guān)的存儲器頁面的安全域。
27、 如權(quán)利要求25所述的系統(tǒng),其中所述比較邏輯進(jìn)一步用于 如果所述第一安全域與所述第二安全域不同,則引發(fā)頁面錯(cuò)誤以禁止 所述指令引用或訪問所述第二存儲器頁面。
28、 如權(quán)利要求25所述的系統(tǒng),其中所述比較邏輯進(jìn)一步用于 如果所述引用或訪問是到所述第二存儲器頁面的允許入口點(diǎn)的跳轉(zhuǎn) 或調(diào)用之一,則不管所述第一安全域是否與所述第二安全域不同,都 不禁止所述指令引用或訪問所述第二存儲器頁面。
29、 如權(quán)利要求25所述的系統(tǒng),其中具有所述關(guān)鍵的操作系統(tǒng) 組件代理的第二存儲器頁面的第二安全域是管理安全域。
全文摘要
這里描述了用于比較物理設(shè)備的第一存儲器頁面的第一安全域和該物理設(shè)備的第二存儲器頁面的第二安全域的方法、裝置、物品以及系統(tǒng),所述安全域存儲在該物理設(shè)備的處理器的一個(gè)或多個(gè)寄存器中?;谠摫容^,如果第一安全域與第二安全域不同,則處理器禁止來自第一存儲器頁面的指令訪問第二存儲器頁面。結(jié)果,可以在VT環(huán)境中更為有效和有力地保護(hù)軟件代理,尤其是關(guān)鍵性的軟件代理。
文檔編號G06F21/22GK101201885SQ20071030037
公開日2008年6月18日 申請日期2007年9月29日 優(yōu)先權(quán)日2006年9月29日
發(fā)明者D·德拉姆, H·科斯拉維, R·薩希塔, U·薩瓦岡卡爾 申請人:英特爾公司