專利名稱:提供安全固件存儲和服務訪問的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及固件,尤其涉及提供安全固件存儲和服務訪問的方法和裝置。
背景計算系統(tǒng)包括諸如處理器的硬件,其上執(zhí)行軟件或固件。當處理器通電或接收復位信號時,處理器執(zhí)行引導序列,在此期間在預引導環(huán)境(即,沒有加載操作系統(tǒng)(OS)的環(huán)境)中執(zhí)行固件中的許多指令。
隨著計算系統(tǒng)的發(fā)展,預引導環(huán)境從具有有限服務的粗接口改進為其中固件組件模塊化的基于標準的接口。這種固件結(jié)構(gòu)的一示例是可擴展固件接口(EFI),它提供豐富的不同組服務,它們可由各種系統(tǒng)實體呼叫以請求執(zhí)行、調(diào)用服務等。例如,EFI包括通過系統(tǒng)表可用的一組核心服務,該系統(tǒng)表公布各服務駐在的地址以便能呼叫這些服務。此外,EFI能經(jīng)由全局唯一標識符(GUID)/指針對安裝諸如協(xié)議的接口。
允許添加接口的諸如EFI的現(xiàn)代固件的可擴展性以及多數(shù)固件系統(tǒng)留有可變存儲和文件系統(tǒng)未受保護的事實使得現(xiàn)代固件對來自病毒等的安全攻擊開放。例如,系統(tǒng)表中列出的可呼叫接口的平名字空間的暴露造成了各種可執(zhí)行實體之間建立可信關(guān)系的新問題。特別是,已知的預引導固件環(huán)境不執(zhí)行認證(即,確認請求服務的實體的身份)或授權(quán)(即,確定服務請求者的權(quán)利)。
圖1是示例性安全固件存儲和服務訪問系統(tǒng)的示圖。
圖2是示出圖1的示例性平臺安全單元的附加細節(jié)的示圖。
圖3是可實現(xiàn)示例性安全固件存儲和服務訪問系統(tǒng)的示例性處理器系統(tǒng)的示圖。
圖4是圖3的閃存中載入的指令的示例性快閃映射(flash map)的示圖。
圖5是示例性授權(quán)數(shù)據(jù)塊關(guān)系的示圖。
圖6是可在圖3的示例性處理器系統(tǒng)上實現(xiàn)的示例性安全過程的流程圖。
圖7是可在圖3的示例性處理器系統(tǒng)上實現(xiàn)的示例性服務呼叫處理過程的流程圖。
具體實施例方式
雖然以下揭示了除了其它組件包括硬件上執(zhí)行的軟件或固件的示例系統(tǒng),但應注意,這些系統(tǒng)僅僅是說明性的而不應理解為是限制性的。例如,這些硬件、固件和/或軟件組件中的任一個或全部都可排他地包含在專用硬件、軟件、固件或硬件、軟件和/或固件的某些組合中。因此,雖然以下描述了示例系統(tǒng),本領(lǐng)域的普通技術(shù)人員將理解,這些示例不是實現(xiàn)這些系統(tǒng)的僅有方式。
如圖1的示例所示,安全固件存儲和服務訪問系統(tǒng)100包括實體和/或代碼102,它們進行服務請求和/或僅通過平臺安全單元104將代碼加載到執(zhí)行環(huán)境106的請求。一般,實體和/或代碼102形成的服務請求先前被直接路由到完成服務請求的執(zhí)行環(huán)境106。相反,在揭示的系統(tǒng)100中,實體和代碼被配置成向平臺安全單元104進行服務請求,該平臺安全單元用于授權(quán)完成它們期望的任務。例如,當在閃存、本地盤分區(qū)或網(wǎng)絡引導服務器上發(fā)現(xiàn)驅(qū)動程序或應用(即,更一般的代碼)時,EFI 1.02的LoadImage()服務被配置成引用平臺安全單元104。此外,如果已知的實體嘗試通過EFI1.10服務OpenProtocol()或EFI1.02服務HandleProtocol()定位一服務,則安全平臺單元104將確定所引用的協(xié)議是否被授權(quán)執(zhí)行。作為另一示例且如下所述,通過在平臺安全單元104中指明平臺安全單元104內(nèi)存儲的RuntimeServicesMask中的GetNextVariable()和SetVariable()服務,可使變量穩(wěn)定。雖然前述服務已作為被指示訪問平臺安全單元104用于認證和授權(quán)的服務、實體和/或代碼的示例列出,但應注意,以上示例僅僅是說明性的。例如,EFI和/或任何其它接口內(nèi)的所有核心服務都可具有通過平臺安全單元104進行的授權(quán)判定。
如以下詳細描述的,平臺安全單元104確定請求服務的實體的身份和/或請求要被加載的代碼的身份(認證)并確定請求者或要被加載的代碼已被準許的權(quán)利(授權(quán))。特別是,要執(zhí)行的代碼將具有一Kobject(Kobj),它可以是公鑰、圖像的SHA-1散列(hash)、加噪(salted)密碼或唯一標識該代碼的任何其它標識符。
在平臺安全單元104內(nèi),有一描述了K的計算引起了“什么”的列舉以及如何進行計算的描述。這里稱作Kowner的系統(tǒng)管理員向平臺提供關(guān)于什么代碼對象(Kobj’s)可被執(zhí)行和執(zhí)行后每個Kobj的許可將具有什么,這是由預引導或運行時間掩碼(mask)所定義的。例如,如果Kobj被認證和運行,則Kobj將只能完成與Kobj的許可相一致的任務。或者,如果Kobj是未知的(即,未在Kobj的數(shù)據(jù)庫中列出,因此未認證),則將Kobj不被加載或運行且被拒絕的對執(zhí)行資源的Kobj請求將被記入日志。
如圖2所示,在一示例中,平臺安全單元104可由認證單元202實現(xiàn),該認證單元202耦合到可包括標識信息206和與標識信息206中列出的實體相對應的可容許行為208的訪問控制列表204??赏ㄟ^包括訪問控制列表編輯器的本地管理接口編輯訪問控制列表204,或者利用安全傳輸和遠程控制臺在網(wǎng)絡上進行編輯。
如以下結(jié)合圖5詳細描述的,可根據(jù)驅(qū)動存儲標識信息206和容許行為208的數(shù)據(jù)庫中包含的信息關(guān)系的命名慣例而命名的特殊系統(tǒng)中的各種實體。簡要地,標識信息206例如可以是以太網(wǎng)MAC地址、加噪密碼、公鑰、因特網(wǎng)協(xié)議(IP)地址、對稱密鑰、可移動可執(zhí)行(PE)文件的SHA-1散列(例如,http//www.microsoft.com/whdc/hwdev/hardware/pecoff.mspx處所定義的)或任何其它合適的唯一標識信息。
在EFI系統(tǒng)中,與標識信息相對應的可容許行為208通過引導服務和運行時間服務比特掩碼來表示,它們在可從Intel Corporation獲得的2000年12月12日出版的可擴展固件接口(EFI)規(guī)范,1.02版的Chapter 3中定義。此外,容許行為208可包括調(diào)用的協(xié)議或服務的可能空的列表。
一般,在操作期間,認證單元202接收來自實體的對服務的請求并標識該請求實體。在標識該實體后,為與所標識的實體相對應的條目掃描標識信息206。如果在標識信息206中找到了用于標識實體的條目,則在可容許行為208中為該實體找到可用服務的比特掩碼。如果比特掩碼允許,則完成所請求的行為?;蛘?,如果標識信息206中沒有找到條目,則該請求可被拒絕它所請求的服務?;蛘?,如以下詳細描述的,可根據(jù)請求的性質(zhì)以限制方式處理該請求。
以上描述了與形成圖1的平臺安全單元104的框相關(guān)聯(lián)的各種功能;但,平臺安全單元104的功能性可通過由一個或多個處理器系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。在一示例中,諸如圖3所示的示例性處理器系統(tǒng)300可用于實現(xiàn)一個或多個過程,以形成平臺安全單元。以下,在示例性處理器系統(tǒng)300的描述之后提供了關(guān)于可結(jié)合處理器系統(tǒng)用于提供平臺安全的指令、數(shù)據(jù)結(jié)構(gòu)等的進一步細節(jié)。
示例性處理器系統(tǒng)300包括具有相關(guān)存儲器304的處理器302,該存儲器諸如隨機存取存儲器(RAM)306、只讀存儲器(ROM)308和閃存310。處理器302耦合到與其它組件對接的諸如總線312的接口。在所示示例中,與總線312接口的組件包括輸入裝置314、顯示裝置316、海量存儲裝置318和可移動存儲裝置驅(qū)動器320??梢苿哟鎯ρb置驅(qū)動器320可包括有關(guān)的可移動存儲媒體322,諸如磁性媒體或光媒體。
示例性處理器系統(tǒng)300例如可以是常規(guī)臺式個人計算機、筆記本計算機、工作站或任何其它計算裝置。此外,示例性處理器系統(tǒng)300可用基于數(shù)字信號處理器(DSP)的架構(gòu)實現(xiàn)。在基于DSP的架構(gòu)中,可去除與總線對接的某些組件。
處理器302可以是任何類型的處理單元,諸如微處理器、微控制器、DSP或諸如應用專用集成電路的定制硬件。
與處理器302耦合的存儲器306-310可以是任何合適的存儲裝置并可調(diào)整大小以滿足系統(tǒng)300的存儲需要。存儲器306-310例如可存儲實現(xiàn)下述功能的指令。處理器302可重新調(diào)用來自存儲器304的這些指令用于執(zhí)行。
輸入裝置314可用鍵盤、鼠標、觸摸屏、軌跡墊或使用戶能向處理器302提供信息的任何其它裝置實現(xiàn)?;蛘撸斎胙b置314可以是能從處理器302接收信息并向其發(fā)送信息的網(wǎng)絡連接或輸入端口。
顯示裝置316例如可以是液晶顯示器(LCD)監(jiān)視器、陰極射線管(CRT)監(jiān)視器或用作處理器302和用戶之間界面的任何其它合適的裝置。圖3所示的顯示裝置316包括使顯示屏與處理器302接口所需的任何附加硬件。
海量存儲裝置318例如可以是常規(guī)硬盤驅(qū)動器或可由處理器302讀取的任何其它磁或光媒介。此外,雖然所示為是系統(tǒng)300本地的,但海量存儲裝置318可以遠離系統(tǒng)300,因此可經(jīng)由輸入裝置314耦合到系統(tǒng)300。
可移動存儲裝置驅(qū)動器320例如可以是光驅(qū),諸如可讀緊致盤(CD-R)驅(qū)動器、可重寫緊致盤(CD-RW)驅(qū)動器、數(shù)字通用盤(DVD)驅(qū)動器或任何其它光驅(qū)?;蛘?,它例如可以是磁性媒體驅(qū)動器。因為選擇媒體322來用驅(qū)動器320進行操作,可移動存儲媒體322是可移動存儲裝置驅(qū)動器320的補充。例如,如果可移動存儲裝置驅(qū)動器320是光驅(qū),則可移動存儲媒體322可以是CD-R盤、CD-RW盤、DVD盤或任何其它合適的光盤。另一方面,如果可移動存儲裝置驅(qū)動器320是磁性媒體裝置,則可移動存儲媒體322例如可以是磁盤或任何其它合適的磁性存儲媒體。
如本領(lǐng)域的普通技術(shù)人員易于理解的,在某些實現(xiàn)中可省去系統(tǒng)300的某些組件。例如,顯示裝置316、海量存儲裝置318和可移動存儲裝置驅(qū)動器322都可以是能省去的組件的示例。
如圖4的示例性快閃映射400中所示的,在閃存(例如,圖3的閃存310)中代碼的各種代碼段或部分可作為固件實現(xiàn)。如圖4的快閃映射中所示的,閃存包括由預EFI初始化(PEI)部分402、驅(qū)動程序執(zhí)行環(huán)境(DXE)核心404和安全平臺驅(qū)動程序406形成的可信計算基(TCB),它們可實現(xiàn)結(jié)合圖1的平臺安全單元104描述的功能。此外,如快閃映射400所表示的,閃存可存儲其它驅(qū)動程序408和其它各種信息410。通常,如下所述,PEI402、DXE核心404和安全平臺驅(qū)動程序406的TCB首先由處理器執(zhí)行。隨后,向處理器作出的服務請求由先前安裝的平臺安全驅(qū)動程序406處理。如以上相對于圖1的平臺安全單元104一般性描述的,安全平臺驅(qū)動程序406認證任何服務或資源請求者的身份,并確定該請求者是否被授權(quán)接收所請求的服務。以下相對于聯(lián)系圖6描述的安全平臺過程提供與安全平臺驅(qū)動程序406的操作方面相關(guān)的進一步細節(jié)。
操作中,當復位處理器302時,處理器302在復位矢量所指示的存儲器位置處開始執(zhí)行。揭示示例中的復位矢量指向快閃映射400中的代碼的頂線。因此,處理器(例如,圖3的處理器302)開始連續(xù)地執(zhí)行由快閃映射400的頂部表示的代碼并繼續(xù)執(zhí)行代碼直到執(zhí)行表示快閃映射400的底部的代碼。PEI402是由處理器302加載和執(zhí)行的第一個代碼。如本領(lǐng)域普通技術(shù)人員易于理解的,連同其它功能,PEI402為了PEI402之后代碼的執(zhí)行而初始化處理器存儲器304。
在加載和執(zhí)行PEI402后,處理器302著手加載和執(zhí)行DXE核心404,如熟練技術(shù)人員易于理解的,該DXE核心404是可加載和執(zhí)行驅(qū)動程序的執(zhí)行環(huán)境。例如,參考圖1,可用DXE核心404實現(xiàn)執(zhí)行環(huán)境106。
在DXE核心404已被加載和執(zhí)行后,作為TCB中的最后一項的安全平臺驅(qū)動程序406被加載并執(zhí)行。此外,參考圖1,平臺安全單元104可由安全平臺驅(qū)動程序406實現(xiàn)。如這里所描述的,安全平臺驅(qū)動程序406接收對資源或服務的請求并基于請求者的身份和/或期望的請求或服務的性質(zhì)選擇性地準許這些請求或服務。一般,安全平臺驅(qū)動程序406確定請求者的身份(認證)并確定請求者可用的服務(授權(quán))。
在加載和執(zhí)行安全平臺驅(qū)動程序406后,如果其它驅(qū)動器408和各種指令通過安全平臺驅(qū)動程序406進行的認證和授權(quán)測試,就可加載并執(zhí)行這種驅(qū)動器和指令。
為便于圖6和7的說明,聯(lián)系圖5示出并描述了示例性授權(quán)數(shù)據(jù)塊關(guān)系500。授權(quán)數(shù)據(jù)庫關(guān)系500包括所有人對象502、對象一504、第一和第二協(xié)議GUID對象506和508以及第n對象510。對象502、504和510由唯一標識符(Ks)標識和引用,它例如可以是以太網(wǎng)MAC地址、加噪密碼、公鑰、IP地址、對稱密鑰、SHA-1散列或其它唯一信息。
圖5示例中的所有人對象502被命名為Kowner并具有定義所有人屬性的所有人掩碼。例如,所有人掩碼可定義所有人對象502可用的運行時間和預引導執(zhí)行服務。所有人對象502還包括對與它相關(guān)的其它對象的引用。例如,如圖5所示,所有人對象502引用被命名為Kobl的對象一504。例如,在原始設備制造商(OEM)設置處理器系統(tǒng)(例如,圖3的處理器系統(tǒng)300)的工廠情況中,OEM會安裝Kowner和與Kowner對象有關(guān)的某些對象,其中Kowner和有關(guān)對象提供對OEM診斷和各種引導加載器的支持。
對象一504引用第一協(xié)議GUID506,用于與一對象504相關(guān)的許可的定義。第一協(xié)議GUID506可進一步引用第二協(xié)議GUID508,用于一對象504可用的進一步服務的定義。第二協(xié)議GUID508可引用進一步的GUID?;蛘?,如圖5所示,第二協(xié)議GUID508可不引用進一步的GUID。
對象一504還可引用后續(xù)對象,類似于第n對象510。第n對象510包括可被定義為對預引導和運行時間的服務掩碼的許可并還可列出后繼者對象。但在圖5的示例中,第n對象510未列出后繼者對象。
圖6示出了示例性安全平臺過程600。安全平臺過程600可用一個或多個存儲器(例如,存儲器306-310)中存儲的并由一個或多個處理器(例如,處理器302)執(zhí)行的一個或多個軟件程序或指令集實現(xiàn)。但,平臺安全過程600的某些或全部塊可手動和/或由某些其它裝置執(zhí)行。此外,盡管參考圖6所示的流程圖描述了平臺安全過程600,但本領(lǐng)域的普通技術(shù)人員將易于理解,可使用執(zhí)行平臺安全過程600的許多其它方法。例如,可改變塊的順序,可改變一個或多個塊的操作,可組合塊,和/或可去除塊。
一般,平臺安全過程600請求服務,諸如加載或執(zhí)行代碼的請求、在預引導或運行時間中執(zhí)行服務的請求等,并確定如果履行這種請求是否服從指定安全規(guī)則。特別是,平臺安全過程600執(zhí)行認證(即,確定請求實體的身份)和授權(quán)(即,確定認證請求實體的權(quán)利)?;谠撜J證和授權(quán),平臺安全過程將選擇性地允許請求的履行。
平臺安全過程600通過確定實體是否嘗試取得系統(tǒng)所有權(quán)開始(框602)。例如,當用戶購買新的個人計算機時,用戶會輸入缺省用戶名和密碼,以聲明改變各種系統(tǒng)參數(shù)的權(quán)利,這些系統(tǒng)參數(shù)中的一個或多個可從屬于執(zhí)行各種指令或提供各種服務的安全設定和許可。
如果實體嘗試獲得所有權(quán)(框602),則將實體輸入的密碼(Kinput)與測試密碼(Ktest)進行比較(框604)。例如,密碼是特殊阿爾法和數(shù)字字符串的簡單散列。在這種情況中,如果實體輸入的密碼散列與存儲器(例如,存儲器306-310中的任一個)中存儲的密碼散列匹配,則所有人身份被設定為提供合適密碼的身份實體(框606)。在輸入合適密碼后(即,變成所有人后),實體可對系統(tǒng)安全設定的各方面進行改變。例如,所有人可設定安全參數(shù),以啟用或禁用未簽名代碼的執(zhí)行。此外,所有人可啟用或禁用為存儲器306-310中的一個或多個內(nèi)設置的平臺安全數(shù)據(jù)庫中未列出的實體執(zhí)行服務的能力。所有這些功能都可在圖6示例的框606中執(zhí)行。
在過程600完成框606的執(zhí)行后,如果密碼輸入不等于存儲的密碼(框604),或如果未獲得所有權(quán)(框602),則過程600確定是否接收到執(zhí)行的請求(框608)。執(zhí)行請求可包括本地或從網(wǎng)絡或從任何其它源接收的請求。該請求可以是完成驅(qū)動器、應用和/或任何其它指令或指令集合的執(zhí)行的請求。此外,請求可包括加載作為OS加載器(Loader)的特異EFI應用的請求??膳渲迷撓到y(tǒng)以使OwnerMask指示該平臺需要“安全引導(Secure Boot)”。在該操作模式下,必須有與盤上的或與由EFI環(huán)境變量BootNext規(guī)定的OS加載器相對應的網(wǎng)絡上加載的圖像相對應的Kobj。在沒有用于OS加載器的Kobj的情況下,系統(tǒng)應進入某一恢復模式。
如果存在對執(zhí)行的請求(框608),則過程600確定可被稱作為圖像的執(zhí)行代碼是否是簽名圖像(框610)。如果圖像包括諸如類似于散列的數(shù)字簽名或某些其它合適簽名的簽名,則圖像可被稱作是簽名的。如本領(lǐng)域的普通技術(shù)人員易于理解的,可在發(fā)送信息前用私鑰散列并標記信息。在接收到簽名信息時,信息接收器將嘗試用與發(fā)送信息所使用的私鑰相關(guān)聯(lián)的公鑰校驗接收信息的完整性,隨后散列該信息以獲得原始散列的信息。采用這種結(jié)構(gòu),驅(qū)動程序可在工廠處被簽名且平臺安全驅(qū)動程序可在要執(zhí)行該驅(qū)動程序時認證驅(qū)動程序內(nèi)容。與散列相關(guān)的其它信息例如可在http//csrc.nist.gov/publications/fips/fips180-1/fip180-1.txt處找到。與用公鑰/私鑰對簽名諸如驅(qū)動程序的圖像相關(guān)聯(lián)的其它信息例如可在http//www.itl.nist.gov/fipspubs/fip186.htm處找到。
如果圖像被簽名(框610),則過程600確定請求資源的對象(例如Kobject)是否位于數(shù)據(jù)庫內(nèi)(例如,圖4的訪問控制列表204)(框612)。如果與對象相對應的條目在數(shù)據(jù)庫中找到(框612),則過程確定附著到該對象上的簽名是否匹配位于數(shù)據(jù)庫中對象的簽名(框614)。如果簽名匹配,則執(zhí)行驅(qū)動程序(框616)。
返回到與框610有關(guān)的過程600的討論,如果圖像未被簽名(框610),則過程確定所有人是否允許未簽名代碼的執(zhí)行(框618)。如果所有人允許未簽名代碼的執(zhí)行(框618),則過程執(zhí)行該代碼(框620)?;蛘?,如果所有人不允許未簽名代碼的執(zhí)行(框618),則代碼的嘗試加載失敗并將該失敗記入日志(框622)。
返回到框612,如果對象不在數(shù)據(jù)庫中(框612),則過程600確定所有人是否允許不在數(shù)據(jù)庫中的未簽名代碼的執(zhí)行(框624)。如果所有人允許這種代碼的執(zhí)行,則執(zhí)行該代碼(框620)?;蛘?,如果所有人不允許這種代碼的執(zhí)行,則代碼的加載失敗并將該失敗記入日志(框622)。
如果過程600確定代碼和數(shù)據(jù)庫的簽名對于特定對象不匹配(框614),則加載失敗并將該失敗記入日志(框622)。
返回到框608,如果過程600未接收到任何執(zhí)行請求,則過程600確定是否接收到任何服務呼叫(框626)。框626保持控制直到接收到服務呼叫的請求。當接收到服務呼叫時,呼叫服務呼叫處理過程(框628)并將控制轉(zhuǎn)到該過程。聯(lián)系圖7提供與服務呼叫處理過程相關(guān)的進一步細節(jié)(框628)。
圖7中更詳細地示出了用于實現(xiàn)框700的示例性服務呼叫處理過程700。如同安全平臺過程600,服務呼叫處理過程700可用一個或多個存儲器(例如,存儲器306-310)中存儲并由一個或多個處理器(例如,處理302)執(zhí)行的一個或多個軟件程序或指令組實現(xiàn)。但,服務呼叫處理過程700的某些或全部框都可手動和/或通過某些其它裝置進行。此外,雖然參考圖7所示的流程圖描述了服務呼叫處理過程700,但本領(lǐng)域的普通技術(shù)人員將易于理解,可使用進行服務呼叫處理過程700的許多其它方法。例如,可改變框的順序,可改變一個或多個框的操作,可組合框,和/或可除去框。此外,雖然過程600和700示作分開的示圖,但本領(lǐng)域的普通技術(shù)人員將理解,這兩個過程可組合并在單個示圖中表示。
一般,服務呼叫處理過程700以安全方式處理服務呼叫請求,它可以是引導服務請求、運行時間服務請求和/或協(xié)議。特別是,過程700確定請求服務的呼叫者的身份并確定所請求的圖像是否在數(shù)據(jù)庫中找到。隨后,過程700確定許可掩碼或協(xié)議條目是否存在和/或所有人策略是否支持全訪問?;趨f(xié)議掩碼和/或全訪問策略的存在,可執(zhí)行或忽略服務請求。
過程700通過確定請求服務的呼叫者的身份開始執(zhí)行(框702)??赏ㄟ^使加載的圖像協(xié)議實例與Kobject相關(guān)來確定呼叫者身份。在一特殊示例中,每個加載的圖像協(xié)議都將具有ImageBase字段,該字段規(guī)定了存儲器中圖像的基;存儲器中圖像的大小應由加載的圖像協(xié)議實例的ImageSize字段定義。在這種結(jié)構(gòu)中,平臺安全驅(qū)動程序檢查呼叫堆棧返回值并確定該呼叫堆棧地址是否在任何(ImageBase,ImageBase+ImageLength)體系內(nèi)。如果是,則EFI_DEVICE_PATH FilePath字段可用于檢查Kobj的節(jié)點中的EFI_DEVICE_PATH實例并嘗試找到匹配。這是一種技術(shù),通過這種技術(shù),可使進入呼叫者/驅(qū)動程序的呼叫堆棧返回地址與Kobj相關(guān)。
在確定呼叫者身份后(框702),通過將指標復位成零(框704),過程700確定圖像是否存在于數(shù)據(jù)庫中(例如,訪問控制列表204)。在復位該指標后,過程700確定是否存在附加的加載圖像協(xié)議(框706)。如果不存在加載的圖像協(xié)議(框706),代碼不通過EFI核心加載且因此不被執(zhí)行(框708)。
或者,如果存在附加圖像協(xié)議(框706),增加指標(框710)。隨后,確定變量X是否在基地址和增加一定范圍的基地址之間(框712)。如果變量X不在基和增加該范圍的基之間,則代碼不由EFI核心加載且不加載內(nèi)容(框708)。
或者,如果變量X在范圍內(nèi),過程700確定是否存在匹配裝置路徑(路徑714)的指標的對象位置,它指示對象是否存在于存儲器中的合適位置。如果對象存在,過程700確定是否存在許可掩碼或協(xié)議條目(框716)。如果許可掩碼或協(xié)議不存在(框716),則忽略請求并將事件記入日志(框718)。相反,如果許可掩碼或協(xié)議存在(框716),則執(zhí)行請求(框720)。在忽略或執(zhí)行請求后(框718或720),過程700將控制返回給過程600,它繼續(xù)執(zhí)行直到接收到退出引導服務命令以開始操作系統(tǒng)的加載和預引導環(huán)境的停止。
如果存儲器中沒有相應對象(框714),過程700確定所有人策略是否支持全部訪問(框722)。如果所有人策略支持全部訪問(框722),則執(zhí)行請求(框720)?;蛘撸绻腥瞬呗圆恢С秩吭L問,則在控制被返回給過程600前忽略請求并將事件記入日志(框724)。
雖然這里描述了根據(jù)本發(fā)明教導構(gòu)成的特定裝置,但本專利的覆蓋范圍不限于此。相反,本專利覆蓋所附權(quán)利要求書或其等效物的范圍內(nèi)的所有裝置、方法和制品。
權(quán)利要求
1.一種控制對執(zhí)行資源的訪問的方法,包括接收一請求以便在預引導環(huán)境中執(zhí)行指令;確定指令的身份;確定訪問控制列表是否包括與該指令相對應的條目;以及如果訪問控制列表包括與指令相對應的條目,則選擇性地允許指令的執(zhí)行。
2.如權(quán)利要求1所述的方法,其特征在于,還包括如果訪問控制列表中的簽名匹配指令的簽名,則允許指令的執(zhí)行。
3.如權(quán)利要求1所述的方法,其特征在于,在指令被簽名的情況下,如果訪問控制列表不包括與指令相對應的條目,則選擇性地允許指令的執(zhí)行。
4.如權(quán)利要求1所述的方法,其特征在于,指令由服務呼叫請求以被執(zhí)行。
5.如權(quán)利要求4所述的方法,其特征在于,包括從訪問控制列表中確定指令可使用的系統(tǒng)資源。
6.如權(quán)利要求4所述的方法,其特征在于,包括確定進行服務呼叫的實體的身份。
7.如權(quán)利要求4所述的方法,其特征在于,包括確定要執(zhí)行的指令是否在存儲器的預定區(qū)域內(nèi)。
8.如權(quán)利要求1所述的方法,其特征在于,指令是控制安全引導的操作系統(tǒng)加載器,且其中如果訪問控制列表不包括與指令相對應的條目,則進入操作的恢復模式。
9.一種包括機器可訪問媒介的制造制品,所述機器可訪問媒介具有多個機器可訪問指令,這些指令在被執(zhí)行時使得機器接收請求以便在預引導環(huán)境中執(zhí)行指令;確定指令的身份;確定訪問控制列表是否包括與該指令相對應的條目;以及如果訪問控制列表包括與該指令相對應的條目,則選擇性地允許指令的執(zhí)行。
10.如權(quán)利要求9所述的機器可訪問媒介,其特征在于,在執(zhí)行所述多個機器可訪問指令時使得機器在訪問控制列表中的簽名匹配指令的簽名的情況下允許指令的執(zhí)行。
11.如權(quán)利要求9所述的機器可訪問媒介,其特征在于,在執(zhí)行所述多個機器可訪問指令時,使得機器在指令被簽名的情況下,如果訪問控制列表不包括與指令相對應的條目,則選擇性地允許指令的執(zhí)行。
12.如權(quán)利要求9所述的機器可訪問媒介,其特征在于,指令由服務呼叫請求以被執(zhí)行。
13.如權(quán)利要求9所述的機器可訪問媒介,其特征在于,在執(zhí)行所述多個機器可訪問指令時,使得機器從訪問控制列表中確定可由指令使用的系統(tǒng)資源。
14.如權(quán)利要求13所述的機器可訪問媒介,其特征在于,在執(zhí)行所述多個機器可訪問指令時,使得機器確定進行服務呼叫的實體的身份。
15.如權(quán)利要求13所述的機器可訪問媒介,其特征在于,在執(zhí)行所述多個機器可訪問指令時,使得機器確定要執(zhí)行的指令是否在存儲器的預定區(qū)域內(nèi)。
16.如權(quán)利要求9所述的機器可訪問媒介,其特征在于,指令是控制安全引導的操作系統(tǒng)加載器,且其中如果訪問控制列表不包括與指令相對應的條目,則進入操作的恢復模式。
17.一種系統(tǒng),包括配置成執(zhí)行代碼的執(zhí)行環(huán)境;要被執(zhí)行的指令;平臺安全單元,它與執(zhí)行環(huán)境耦合并接收請求以在預引導環(huán)境中執(zhí)行指令,其中平臺安全單元被配置成確定指令的身份,確定訪問控制列表是否包括與指令相對應的條目,且如果訪問控制列表包括與指令相對應的條目,則選擇性地允許指令由執(zhí)行環(huán)境執(zhí)行。
18.如權(quán)利要求17所述的系統(tǒng),其特征在于,如果訪問控制列表中的簽名與指令的簽名匹配,則平臺安全單元允許指令由執(zhí)行環(huán)境執(zhí)行。
19.如權(quán)利要求17所述的系統(tǒng),其特征在于,在指令被簽名的情況下,如果訪問控制列表不包括與指令相對應的條目,則平臺安全單元選擇性地允許指令由執(zhí)行環(huán)境執(zhí)行。
20.如權(quán)利要求17所述的系統(tǒng),其特征在于,指令由服務呼叫請求以被執(zhí)行。
21.如權(quán)利要求20所述的系統(tǒng),其特征在于,平臺安全單元從訪問控制列表中確定可由指令使用的系統(tǒng)資源。
22.如權(quán)利要求20所述的系統(tǒng),其特征在于,平臺安全單元確定進行服務呼叫的實體的身份。
23.如權(quán)利要求20所述的系統(tǒng),其特征在于,平臺安全單元確定要執(zhí)行的指令是否在存儲器的預定區(qū)域內(nèi)。
全文摘要
揭示了提供安全固件存儲和服務的方法和裝置。一示例方法可包括接收一請求以便在預引導環(huán)境中執(zhí)行指令,確定指令的身份,確定訪問控制列表是否包括與指令相對應的條目,以及如果訪問控制列表包括與指令相對應的條目,則選擇性地允許指令的執(zhí)行。
文檔編號G06F1/00GK1813229SQ200480018100
公開日2006年8月2日 申請日期2004年6月16日 優(yōu)先權(quán)日2003年6月27日
發(fā)明者V·齊莫爾, C·艾利森, M·羅斯曼, A·費希, M·多蘭 申請人:英特爾公司