專利名稱:用于提供系統(tǒng)完整性和遺留環(huán)境模擬的方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及具有可擴展固件體系結(jié)構(gòu)的計算系統(tǒng),更具體地說,本發(fā)明涉及在具有可擴展固件體系結(jié)構(gòu)的計算系統(tǒng)中,用以模擬遺留固件和環(huán)境并提供被保護的存儲和執(zhí)行的虛擬機監(jiān)視器(VMW)的使用。
背景技術(shù):
計算系統(tǒng)固件方面的一個近期發(fā)展是可擴展固件接口(EFI)框架,其允許軟件賣主開發(fā)可以與多種中央處理單元(CPU)一起使用的操作系統(tǒng)程序。包括應(yīng)用二進制接口(ABI),其規(guī)定對于給定的CPU類型如何在堆棧上傳遞數(shù)據(jù)。通過抽象平臺,該框架提供了優(yōu)于使用遺留體系結(jié)構(gòu)的系統(tǒng)的許多優(yōu)點。關(guān)于元件體系結(jié)構(gòu)發(fā)展的這一概念,正在形成在整個系統(tǒng)初始化過程中使用ABI和軟件抽象的系統(tǒng)體系結(jié)構(gòu)。這不僅包括CPU初始化,而且也包括芯片集和I/O設(shè)備的初始化。提供有一種軟件框架,其允許多方寫入抽象芯片集或I/O復(fù)合體如何工作的小片段代碼。在這種框架中,來自多個賣主的產(chǎn)品將交互工作。來自各個賣主的代碼片段包含在初始化模塊中。在系統(tǒng)初始化階段(在CPU重起之后,但在存儲器初始化之前)期間,核心初始化代碼順序地調(diào)度初始化模塊以提供基本服務(wù)。初始化階段對系統(tǒng)進行足夠的初始化以啟動后續(xù)階段,例如負(fù)責(zé)算法上更復(fù)雜的初始化過程的驅(qū)動器執(zhí)行階段,如掃描I/O總線、列舉資源和安裝驅(qū)動器。
允許來自多方的驅(qū)動器和應(yīng)用程序的貢獻的這一概念產(chǎn)生了幾個問題。由單個賣主提供的系統(tǒng)固件的安全是賣主默認(rèn)的。來自多種資源的代碼模塊的并入危及了系統(tǒng)完整性,因為沒有提供沙箱處理(sandbox)或驗證代碼。EFI平臺以物理模式執(zhí)行。以物理模式執(zhí)行意味著所有的地址對應(yīng)于實際存儲位置。雖然以物理模式的執(zhí)行為OS加載程序提供了對所有平臺資源的全部入口,但是它也妨礙了虛擬存儲器頁表的使用以及它們在預(yù)啟動中提供的保護。因為啟動固件具有全部機器入口,核心EFI的敏感數(shù)據(jù)結(jié)構(gòu)和代碼通過驅(qū)動器和應(yīng)用程序訪問的訪問將會受損。在系統(tǒng)狀態(tài)已經(jīng)被壞代碼損壞時,例如代碼標(biāo)識的用以驗證驅(qū)動器和應(yīng)用程序來源的技術(shù)不能保證故障隔離。
另一個困難是遺留代碼支持。很多年來,軟件一直被寫成與PC/AT平臺相兼容。很多遺留操作系統(tǒng)和可選ROM要求PC/AT存儲器映射的硬件/軟件。這種遺留代碼以將處理器限制在1Mb存儲器的實時模式執(zhí)行,并且不提供存儲器管理或存儲器保護特征。
通過舉例圖示了本發(fā)明,但是本發(fā)明不意于由附圖限制,在附圖中相似的標(biāo)號指示相似的元件,在附圖中圖1圖示了用于實現(xiàn)本發(fā)明的VMM的示例性計算系統(tǒng)100;圖2圖示了根據(jù)本發(fā)明一個實施例的遺留模擬;圖3是描繪根據(jù)本發(fā)明一個實施例用于沙箱處理非受信程序的VMM操作的處理流程圖;以及圖4描繪了根據(jù)本發(fā)明一個實施例通過使用VMM的安全應(yīng)用的實現(xiàn)。
具體實施例方式
本發(fā)明在一個實施例中,提供了以運行遺留兼容代碼或為了安全與保密而保護密鑰數(shù)據(jù)為目的,用于提供系統(tǒng)狀態(tài)的虛擬化的方法和裝置。
VMM是模擬器軟件,其提供包括所有CPU指令和系統(tǒng)資源(例如存儲器和I/O設(shè)備)的原型機的有效復(fù)制品。在一個實施例中,VMM被用于為基于元件的體系結(jié)構(gòu)平臺維護預(yù)啟動的安全和完整性策略。
使用虛擬機監(jiān)視器(VMM)來模擬遺留硬件和環(huán)境,以提供遺留代碼支持。VMM允許表面上有特權(quán)的代碼(例如BIOS代碼)被模擬和運行而無需該代碼實現(xiàn)其模擬。
在驅(qū)動器執(zhí)行階段,安裝有VMM的驅(qū)動器可以被加載。然后,遺留應(yīng)用程序(例如遺留OS加載程序)可以在VMM內(nèi)被運行。在一個實施例中,只有在啟動變量被設(shè)定為指示遺留OS可以被啟動時,才加載VMM。VMM的使用可以幫助保護存儲器和系統(tǒng)結(jié)構(gòu)不受應(yīng)用程序的干擾??梢越o予應(yīng)用程序到系統(tǒng)資源的子集的訪問,并且對內(nèi)存映射未被指定用于更新的部分的訪問將捕捉(程序中斷)到VMM中。然后,VMM預(yù)啟動策略代理可以保護狀態(tài)并卸載有問題的軟件。VMM透明地公開了一種環(huán)境,其似乎是物理模式環(huán)境但卻具有對非法行為的防衛(wèi);它甚至可以為實際上不譯碼物理地址范圍的系統(tǒng)映射內(nèi)存,使得軟件看見低于一兆字節(jié)的遺留內(nèi)存映射。這種透明性保持了與遺留PC/AT BIOS模塊、可選ROM、EFI驅(qū)動器和應(yīng)用程序的兼容。
在一個實施例中,本發(fā)明虛擬化整個PC/AT環(huán)境,以提供對遺留OS和遺留硬件的支持,所述遺留硬件如82XX系列定時計數(shù)器、串行端口和主/從中斷控制器。VM允許具有可擴展固件體系結(jié)構(gòu)的系統(tǒng)簡化了不使用其本地接口的預(yù)啟動可選ROM或運行時環(huán)境。例如,VM模擬允許遺留可選ROM運行并使其I/O服務(wù)有效的PC/AT環(huán)境。然后,VMM將結(jié)果轉(zhuǎn)變成本地API。即,VMM將I/O捕捉到本地環(huán)境中語義等價體。
在可替換實施例中,VMM可以被用于模擬本地32位/64位環(huán)境,以向以物理模式執(zhí)行的平臺提供被保護的存儲器和被保護的執(zhí)行。EFI系統(tǒng)體系結(jié)構(gòu)不允許頁表和對指定頁的只讀指定,因為OS加載程序可以使用頁表來自引導(dǎo)OS內(nèi)核。VMM的使用提供了一種在OS加載程序下產(chǎn)生并存儲與安全有關(guān)的信息的方法,大多數(shù)驅(qū)動器和應(yīng)用程序不能訪問所述與安全有關(guān)的信息。
圖1圖示用于實現(xiàn)本發(fā)明的VMM的示例性計算系統(tǒng)100。這里所描述的以運行遺留兼容代碼或保護密鑰數(shù)據(jù)和代碼區(qū)域的安全和保密性為目的的系統(tǒng)狀態(tài)的虛擬化,可以在計算系統(tǒng)100內(nèi)實現(xiàn)和使用,所述計算系統(tǒng)100可以表示通用的計算機、便攜式計算機或其他類似的設(shè)備。計算系統(tǒng)100的組件是示例性的,可以在其中省略或添加一個或多個組件。例如,計算系統(tǒng)100可以使用一個或多個存儲設(shè)備。
參照圖1,計算系統(tǒng)100包括中央處理單元102和經(jīng)由總線101耦合到顯示電路105、主存儲器104、靜態(tài)存儲器106和大容量存儲設(shè)備107的信號處理器103。計算系統(tǒng)100還可以經(jīng)由總線101耦合到顯示器121、鍵盤輸入122、光標(biāo)控制123、硬拷貝設(shè)備124、輸入/輸出(I/O)設(shè)備125和音頻/語音設(shè)備126。
總線101是標(biāo)準(zhǔn)系統(tǒng)總線,用于傳送信息和信號。CPU102和信號處理器103是計算系統(tǒng)100的處理單元。CPU102和信號處理器103兩者或兩者之一可以被用于為計算系統(tǒng)100處理信息和/或信號。CPU102包括控制單元131、算術(shù)邏輯單元(ALU)132和幾個寄存器133,它們被用于處理信息和信號。信號處理器103如CPU102一樣也可以包括類似的組件。
主存儲器104可以是例如隨機訪問存儲器(RAM)或某種其他的動態(tài)存儲器設(shè)備,用于存儲由CPU102或信號處理器103使用的信息或指令(程序代碼)。主存儲器104可以存儲在CPU102或信號處理器103執(zhí)行指令期間的臨時變量或其他中間信息。靜態(tài)存儲器106可以是例如只讀存儲器(ROM)和/或其他靜態(tài)存儲器設(shè)備,用于存儲也可以由CPU102或信號處理器103使用的信息或指令。大容量存儲設(shè)備107可以是例如硬盤或軟盤或光盤驅(qū)動,用于存儲用于計算系統(tǒng)100的信息或指令。
顯示器121可以是例如陰極射線管(CRT)或液晶顯示器(LCD)。顯示設(shè)備121向用戶顯示信息或圖像。計算系統(tǒng)100可以經(jīng)由顯示電路105與顯示器121接口。鍵盤輸入122是具有模數(shù)轉(zhuǎn)換器的字母數(shù)字輸入設(shè)備。光標(biāo)控制123可以是例如鼠標(biāo)、跟蹤球或光標(biāo)方向鍵,用于控制目標(biāo)在顯示器上121上的移動。硬拷貝設(shè)備124可以是例如激光打印機,用于在紙、膠片或某種其他類似的介質(zhì)上打印信息。多個輸入/輸出設(shè)備125可以被耦合到計算系統(tǒng)100。通過計算系統(tǒng)100內(nèi)包含的硬件和/或軟件,可以實現(xiàn)根據(jù)本發(fā)明的用于支持遺留操作系統(tǒng)和遺留可選ROM的遺留環(huán)境的模擬,以及用于提供被保護的執(zhí)行和存儲的物理模式環(huán)境的模擬。例如,CPU102或信號處理器103可以執(zhí)行存儲在如主存儲器104的機器可讀介質(zhì)中的代碼或指令。
機器可讀介質(zhì)可以包括以由例如計算機或數(shù)字處理設(shè)備的機器可讀的形式提供(即存儲和/或傳輸)信息的機構(gòu)。例如,機器可讀介質(zhì)可以包括只讀存儲器(ROM)、隨機訪問存儲器(RAM)、磁盤存儲介質(zhì)、光存儲介質(zhì)、閃存設(shè)備。代碼或指令可以由載波信號、紅外信號、數(shù)字信號和其他類似的信號表示。
圖2圖示了根據(jù)本發(fā)明一個實施例的遺留模擬。一般地,個人計算機母板將支持遺留8259中斷控制器,即使只有遺留可選ROM預(yù)先假定它們的存在;現(xiàn)代操作系統(tǒng)使用APIC(IA32)或SAPIC(IPF)用于它們的中斷支持,從而使得在機器啟動的幾秒期間如成對的8259的母板硬件可用。
在圖2中示出的系統(tǒng)200,包括EFI核心205、遺留執(zhí)行映像210、EFI驅(qū)動器215和VMM220。遺留執(zhí)行映像210可以是不使用本地EFI接口的預(yù)啟動可選ROM或運行時環(huán)境。一發(fā)生從遺留執(zhí)行映像210到遺留8529中斷控制基的寫入,例如,指令就被捕捉到VMM220中。VMM220可以捕捉接觸系統(tǒng)狀態(tài)(例如中斷標(biāo)記)或改變保護的任何指令。如果系統(tǒng)正在以遺留模式執(zhí)行,則VMM220將到遺留中斷(PIC)屏蔽的訪問映射到相關(guān)聯(lián)的本地中斷控制寄存器。例如,系統(tǒng)可以嘗試訪問未被包含的遺留硬件。VMM可以將I/O捕捉到本地環(huán)境中的語義等價體。這時,EFI驅(qū)動器215中的一個可以與相關(guān)聯(lián)的芯片集寄存器通信,并將結(jié)果提供給虛擬機。這提供了從遺留環(huán)境的遷移路徑。
通過沙箱處理來自第三方的程序,VMM可以被用于提供預(yù)啟動的安全性。以沙箱模式運行程序防止程序?qū)ο到y(tǒng)其余部分的訪問。代碼可以被受信,因為其不能損害系統(tǒng)的其余部分。可以給予應(yīng)用程序到系統(tǒng)資源的子集的訪問,并且對未被指定用于更新的內(nèi)存映射的部分的訪問將捕捉到VMM中。然后,VMM預(yù)啟動策略代理可以保護狀態(tài)并卸載有問題的軟件。
圖3是描繪根據(jù)本發(fā)明一個實施例的用于沙箱處理非受信程序的VMM操作的處理流程圖。在圖3中示出的處理300,從操作305開始,其中非受信程序嘗試非法寫訪問。在操作310,指令被捕捉到VMM。如果程序由EFI核心代碼開始,并且如果程序可以訪問EFI核心數(shù)據(jù)結(jié)構(gòu),那么訪問是合法的。如果不是,則在操作320拒絕訪問,并且控制返回到核心。
在一個實施例中,VMM可以沙箱處理從適配卡并經(jīng)由第三方驅(qū)動器引入的代碼可能受損的狀態(tài)。這種軟件技術(shù)的小代碼腳本對成本敏感的基于閃存的系統(tǒng)來說是很有利的。
VMM以優(yōu)先模式執(zhí)行并模擬優(yōu)先模式以執(zhí)行EFI環(huán)境直到OS加載。因為VMM抽象這個次優(yōu)先模式,所以VMM可以隱藏地址空間段。虛擬化被保護模式所允許的被保護存儲和執(zhí)行,變成安全基礎(chǔ)結(jié)構(gòu)的一部分。
圖4描繪了根據(jù)本發(fā)明一個實施例通過使用VMM的安全應(yīng)用的實現(xiàn)。在圖4中示出的系統(tǒng)400,包括評價模塊410的預(yù)啟動認(rèn)證驅(qū)動器405。模塊410可以包含賣主的數(shù)字簽名。簽名可以是MD5或SHA-1簽名。預(yù)啟動認(rèn)證驅(qū)動器405可以調(diào)用到VMM420的簽名邏輯421的入口點來確認(rèn)簽名。VMM420提供安全存儲器422,其可以在證明日志(attestation log)中包含合法驅(qū)動器和模塊的簽名。證明日志可以包含系統(tǒng)已經(jīng)加載的代碼的簽名。如果這樣,則VMM將確認(rèn)代碼,即平臺將證實已經(jīng)運行代碼。這在進行控制之前向OS提供了代碼可以被受信的保證。
這樣,VMM提供了實現(xiàn)受信平臺的預(yù)啟動安全性(即API和框架),直到并包括OS加載。這時,OS加載程序可以提供它自己的安全性。
在上述說明書中,已經(jīng)參照其特定的示例性實施例描述了本發(fā)明。但是很清楚,可以在不脫離由所附權(quán)利要求給出的本發(fā)明的更寬的精神和范圍的情況下做出多種修改和改變。因此,說明書和附圖將被認(rèn)為是說明性的而不是限制性的。
權(quán)利要求
1.一種方法,包括在具有以物理模式執(zhí)行的本地環(huán)境的計算系統(tǒng)上實現(xiàn)虛擬機監(jiān)視器;以及以最優(yōu)先模式執(zhí)行所述虛擬機監(jiān)視器,所述虛擬機監(jiān)視器模擬物理模式使得所述本地環(huán)境以次優(yōu)先模式被執(zhí)行。
2.如權(quán)利要求1所述的方法,其中,所述本地環(huán)境從包括32位環(huán)境、64位環(huán)境和PC/AT環(huán)境的列表中選擇。
3.如權(quán)利要求2所述的方法,其中,所述VMM包含代碼以提供從由PC/AT硬件模擬、PC/AT環(huán)境模擬、安全存儲和安全執(zhí)行構(gòu)成的列表中選擇的功能。
4.如權(quán)利要求3所述的方法,其中,所述安全存儲被用于存儲與安全有關(guān)的信息。
5.如權(quán)利要求4所述的方法,其中,所述與安全有關(guān)的信息是簽名認(rèn)證和加密哈希信息。
6.如權(quán)利要求5所述的方法,其中,所述與安全有關(guān)的信息被用于建立證明日志。
7.一種方法,包括在具有可擴展固件體系結(jié)構(gòu)的計算系統(tǒng)上實現(xiàn)虛擬機監(jiān)視器,使得以沙箱處理模式執(zhí)行非受信代碼,因此防止所述代碼損壞系統(tǒng)。
8.如權(quán)利要求7所述的方法,其中,所述代碼是遺留BIOS代碼。
9.一種機器可讀介質(zhì),其提供可執(zhí)行指令,當(dāng)所述可執(zhí)行指令被處理器執(zhí)行時使得處理器執(zhí)行一種方法,所述方法包括在具有以物理模式執(zhí)行的本地環(huán)境的計算系統(tǒng)上實現(xiàn)虛擬機監(jiān)視器;以及以最優(yōu)先模式執(zhí)行所述虛擬機監(jiān)視器,所述虛擬機監(jiān)視器模擬物理模式使得所述本地環(huán)境以次優(yōu)先模式被執(zhí)行。
10.如權(quán)利要求9所述的機器可讀介質(zhì),其中,所述本地環(huán)境從包括32位環(huán)境、64位環(huán)境和PC/AT環(huán)境的列表中選擇。
11.如權(quán)利要求10所述的機器可讀介質(zhì),其中,所述VMM包含代碼以提供從由PC/AT硬件模擬、PC/AT環(huán)境模擬、安全存儲和安全執(zhí)行構(gòu)成的列表中選擇的功能。
12.如權(quán)利要求11所述的機器可讀介質(zhì),其中,其中,所述安全存儲被用于存儲與安全有關(guān)的信息。
13.如權(quán)利要求12所述的機器可讀介質(zhì),其中,所述與安全有關(guān)的信息是簽名認(rèn)證和加密哈希信息。
14.如權(quán)利要求13所述的機器可讀介質(zhì),其中,所述與安全有關(guān)的信息被用于建立證明日志。
15.一種裝置,包括具有以物理模式執(zhí)行的本地執(zhí)行環(huán)境的計算系統(tǒng);以及在所述計算系統(tǒng)上實現(xiàn)的、以最優(yōu)先模式執(zhí)行的虛擬機監(jiān)視器,所述虛擬機監(jiān)視器模擬物理模式使得本地環(huán)境以次優(yōu)先模式被執(zhí)行。
16.如權(quán)利要求15所述的裝置,其中,所述本地環(huán)境從包括32位環(huán)境、64位環(huán)境和PC/AT環(huán)境的列表中選擇。
17.如權(quán)利要求16所述的裝置,其中,所述VMM包含代碼以提供從由PC/AT硬件模擬、PC/AT環(huán)境模擬、安全存儲和安全執(zhí)行構(gòu)成的列表中選擇的功能。
18.如權(quán)利要求17所述的裝置,其中,所述安全存儲被用于存儲與安全有關(guān)的信息。
19.如權(quán)利要求18所述的裝置,其中,所述與安全有關(guān)的信息是簽名認(rèn)證和加密哈希信息。
20.如權(quán)利要求19所述的裝置,其中,所述與安全有關(guān)的信息被用于建立證明日志。
全文摘要
本發(fā)明描述了一種用于為具有可擴展固件體系結(jié)構(gòu)的計算系統(tǒng)提供預(yù)啟動安全性和遺留硬件和環(huán)境支持的方法和裝置。使用虛擬機監(jiān)視器來提供對系統(tǒng)狀態(tài)的虛擬化,以運行遺留兼容代碼或保護密鑰數(shù)據(jù)和代碼區(qū)域的安全??梢越o予應(yīng)用程序到系統(tǒng)資源的子集的訪問,并且到未被指定用于更新的內(nèi)存映射的部分的訪問將捕捉(程序中斷)到VMM。然后,VMM預(yù)啟動策略代理將保護狀態(tài)并卸載任何有問題的軟件。
文檔編號G06F21/22GK1585927SQ02819232
公開日2005年2月23日 申請日期2002年9月27日 優(yōu)先權(quán)日2001年9月27日
發(fā)明者文森特·齊默 申請人:英特爾公司