專利名稱:在多處理器系統(tǒng)中啟動安全內(nèi)核的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機系統(tǒng),更具體地涉及開始其中的安全操作。
背景技術(shù):
基于鏈接的系統(tǒng)拓撲可包括通過點到點的鏈接而連接的多個節(jié)點。該拓撲可以不是完全連接的;即是,給定的節(jié)點可以不是直接地與所有其它節(jié)點連接,但是任何節(jié)點可以根據(jù)配置的路由機制經(jīng)由多個鏈接到達任何其它節(jié)點。例如,節(jié)點可以是處理器和輸入/輸出(I/O)中心(hub),或者其它的此類設(shè)備。
在系統(tǒng)運行的開始,信任(trust)處理器硬件,以按照指定的來工作,并且信任鏈接機制,以將由硬件發(fā)送的鏈路層消息從一個鏈接控制器交付到另一個鏈接控制器。另外,該鏈接機制在一個鏈接的各端提供關(guān)于硬件部件的信任的信息。類似地,I/O中心的硬件機制被信任,以按照指定的來工作。
在特定的實現(xiàn)中,在系統(tǒng)的結(jié)構(gòu)上運行的給定的協(xié)議可被用于訪問存儲器和將全部存儲器的一致的外部特征和行為維護為單個物理地址空間,盡管也可以存在分離的物理存儲器。但是,這個一致的行為依賴于由非信任的軟件所配置的地址解碼和路由機制。因此,在驗證該配置之前,該協(xié)議不能被信任來正確地訪問存儲器。特別的,不能夠信任沒有錯誤和不適當?shù)牟僮?,比如存儲器別名,或者利用不同的映射使用相同的物理地址。因此,存在在這樣的一個系統(tǒng)中開始一個信任的環(huán)境的需要。
圖1A是根據(jù)本發(fā)明的一個實施例的方法的流程圖。
圖1B是圖1A的流程圖的繼續(xù)。
圖2是根據(jù)本發(fā)明的一個實施例的系統(tǒng)的方框圖。
圖3是根據(jù)本發(fā)明的一個實施例構(gòu)建的生成樹的方框圖。
圖4是根據(jù)本發(fā)明的一個實施例的信任的硬件鏈接的方框圖。
圖5是通過發(fā)起邏輯處理器所觀察的是根據(jù)本發(fā)明的一個實施例的安全啟動的時序圖。
圖6是通過響應(yīng)邏輯處理器所觀察的是根據(jù)本發(fā)明的一個實施例的安全啟動的時序圖。
具體實施例方式
在不同的實施例中,在系統(tǒng)拓撲中的所有處理器上運行的安全內(nèi)核可被安全地啟動。另外,可以以一個安全方式來測量和記錄安全內(nèi)核的身份(identity),以及在啟動過程中使用的一個或者多個軟件代理。在這種方式中,記錄一個根源于硬件的傳遞信任的鏈,所述硬件用于啟動安全內(nèi)核。
在特定的實施例中,信任的硬件可包括加在主信任平臺模塊(TPM)之上的主I/O中心。一個(非安全的)操作系統(tǒng)(OS)可具有拓撲的這個方面的知識。另外,運行信任的軟件代理,使得它的運行不能以任何方式被篡改。
用戶或者系統(tǒng)管理員也許期望在系統(tǒng)中加載安全內(nèi)核。如在這里所提到的,術(shù)語“安全”是指之后檢查系統(tǒng)并確定給定的內(nèi)核是否被加載的能力。另外,用戶或者第三方可進一步確定內(nèi)核是否被加載到安全的存儲器環(huán)境中。由此,在一個實施例中,外部的代理可建立信任,或者通過向其提供在安全環(huán)境中檢查軟件的能力來決定信任包含在安全環(huán)境中的內(nèi)核。在一個實施例中,將整個區(qū)域暴露用于檢查,不如檢查代表安全存儲器區(qū)域的加密的散列值(例如,軟件識別值)。在一個實施例中,數(shù)字簽名的安全軟件識別值被存儲到可被外部代理訪問的硬件中。
參考圖1A,顯示了根據(jù)本發(fā)明的一個實施例在一個多處理器系統(tǒng)中啟動安全內(nèi)核的一個方法的流程圖。如圖1A所示,方法100開始于加載一個信任的代理和一個安全的內(nèi)核到存儲器中(方框110)。在一個實施例中,非信任的OS可把信任的代理和安全的內(nèi)核加載到系統(tǒng)存儲器的一個安全區(qū)域中。該信任的代理和安全的內(nèi)核被存儲在海量存儲設(shè)備中(例如,硬盤驅(qū)動器),并且可被加載到可以被系統(tǒng)的多個處理器訪問的系統(tǒng)存儲器中。另外,OS可構(gòu)建頁表來對安全的內(nèi)核和信任的代理尋址。在一個實施例中,這些頁表的地址和長度可被存儲在系統(tǒng)的主I/O中心中的特定位置。該OS還可存儲用于驗鑒該模塊的公共密鑰。在一個實施例中,信任的代理可以是安全驗鑒的代碼,其被用作驗證系統(tǒng)的配置,更具體地即是系統(tǒng)的存儲器配置。該信任的代理還可被用于開始安全內(nèi)核的運行。
接著,該OS在一個發(fā)起邏輯處理器(ILP)上發(fā)布一個安全啟動(方框120)。該安全啟動可以是安全進入(SENTER)指令,用以開始安全進入。SENTER指令的運行可引起ILP在它的插槽(socket)和其它處理器插槽中發(fā)布專門的總線消息,并接著為后續(xù)的系統(tǒng)動作等待一定的時間間隔。
在一個實施例中,ILP可以被直接連接到主I/O中心,主I/O中心依次可直接連接到主TPM。在這樣一個實施例中,ILP可以確認它具有一個到主TPM的信任的路徑。例如,檢查在ILP的插槽中信任的鏈接參數(shù)。此類路徑可以是一個被信任的硬件路徑,其不需要被固件或者硬件初始化。在本方法的運行的這個角度上,在ILP是一個多處理器插槽的部分的實施例中,ILP還可引起插槽中的其它的邏輯處理器(OLP)暫停。
接著,ILP構(gòu)建一個生成樹(方框130)??筛鶕?jù)期望的算法構(gòu)建該生成樹。該生成樹可被用來識別與樹結(jié)構(gòu)的多個層次中的ILP節(jié)點相關(guān)的系統(tǒng)的所有其它的節(jié)點,其中該ILP作為樹的根結(jié)點。與ILP直接連接的節(jié)點可以是第二層的節(jié)點,與這些第二層的節(jié)點直接連接的節(jié)點可以是第三層的節(jié)點,以此類推。這樣的生成樹可被用來驗證系統(tǒng)的合適配置并能將基于鏈接的消息路由到不同的節(jié)點。只有信任的硬件和鏈接可被用于構(gòu)建生成樹。在某個實施例中,生成樹提供信任的廣播機制,由此ILP能夠發(fā)送消息到每個處理器插槽;提供用于每個處理器插槽的裝置來響應(yīng)廣播消息并且當這些響應(yīng)通過樹返回到ILP時被總結(jié);和一種壁壘機制(barrier mechanism),保證所有的處理器插槽在ILP繼續(xù)進行下一個廣播消息之前達到一個已知的狀態(tài)。
仍然參考圖1A,在方框140,一個安全的啟動消息被發(fā)送到生成樹上的其它插槽。在一個實施例中,利用生成樹協(xié)議發(fā)送這樣的消息,所述生成樹協(xié)議將消息從根層發(fā)送到下一層(即是下行鏈接節(jié)點),其依次將消息發(fā)送到次低的層,依次類推。作為響應(yīng),每一層可將響應(yīng)包發(fā)送回它的傳遞層(即是上行鏈路節(jié)點)。由此,當所有節(jié)點接收消息并適當?shù)仨憫?yīng)時,最終的總結(jié)響應(yīng)包可被傳遞回根結(jié)點。在本方法的運行的這個角度上,在每個插槽上的響應(yīng)邏輯處理器(RLP)可引起插槽上的OLP暫停。
現(xiàn)在參考圖1B,當ILP接收表示所有其它節(jié)點已經(jīng)適當?shù)亟邮詹㈨憫?yīng)了SENTER指令的總結(jié)響應(yīng)時,該ILP可驗證信任的代理(方框150)。該驗證包括,例如執(zhí)行散列計算并將結(jié)果與之前存儲的散列值比較。該驗證信息可接著被發(fā)送到RLP(方框160)。RLP可各自分別驗證其能夠在受保護的存儲器位置訪問信任的代理,并且驗證信任的代理(方框170)。
當ILP為每一個RLP接收到驗證總結(jié)響應(yīng)時,ILP可接著控制在系統(tǒng)的所有插槽上的信任的代理的運行(方框180)。例如,在一個實施例中,ILP可使用壁壘機制來開始部分的信任的代理,等待來自每個插槽的、它已經(jīng)執(zhí)行了該信任的代理的那個部分的指示,并進行到下一個部分??衫蒙厦嬗懻摰纳蓸浒l(fā)送這樣的指示。
硬件使用生成樹在每個處理器插槽啟動同樣的信任的代理。該信任的代理可依照單指令多數(shù)據(jù)(SIMD)的形式在每個處理器插槽上并行地運行。這些信任的代理的運行協(xié)力利用與ILP協(xié)調(diào)和通信的生成樹來完整地驗證拓撲的存儲器配置。當信任的代理成功地驗證了該配置,在ILP上運行的信任的代理可驗證頁表,該頁表用作對安全內(nèi)核尋址、計算內(nèi)核散列、以及在主TPM中記錄散列。
在信任的代理的運行的結(jié)束處,ILP可啟動安全內(nèi)核(方框190)。在此時,安全內(nèi)核接管系統(tǒng)操作,并可根據(jù)其中的代碼運行(方框195)。例如,安全內(nèi)核可在系統(tǒng)的所有插槽上運行。
現(xiàn)在參考圖2,顯示了根據(jù)本發(fā)明的一個實施例的系統(tǒng)的框圖。如圖2所示,系統(tǒng)200可以是多處理器系統(tǒng),具有任意的部分連接的點到點體系結(jié)構(gòu)。即是,系統(tǒng)200的某些節(jié)點可以直接連接在一起,同時其它節(jié)點可經(jīng)由連接在它們之間的中間節(jié)點來通信。在一個實施例中,系統(tǒng)200可以是并發(fā)多處理(SMP)服務(wù)器計算機,盡管本發(fā)明的范圍不限于此。
即是,盡管在圖2中顯示為服務(wù)器平臺,可以理解在其它實施例中,系統(tǒng)可以是一個期望的臺式計算機、可動裝置、服務(wù)器或者其它此類平臺中的任何一個。在某些實施例中,圖2的不同部件之間的互連可以是點對點互連,其在系統(tǒng)200內(nèi)提供一致的共享存儲器,并且在一個這樣的實施例中,它們之間用于通信的互連和協(xié)議可以組成通用系統(tǒng)接口(CIS)。用這種方式,系統(tǒng)200的多個處理器、存儲器和其它的部件可一致地互相連接。
在圖2的實施例中,系統(tǒng)200的所有部件可共同地形成一個一致的系統(tǒng)。這樣一個一致的系統(tǒng)可適應(yīng)一致的事務(wù),而不需對事務(wù)所流經(jīng)的通道進行任何排序。雖然在此討論作一個一致的系統(tǒng),可以理解一致和非一致的事務(wù)都可以通過并且由系統(tǒng)中的部件執(zhí)行。例如,一個、一些或者所有與系統(tǒng)200相關(guān)的存儲器的區(qū)域可為非一致的事務(wù)保留。并且,可以理解本發(fā)明的實施例不限于一致的系統(tǒng)。
如圖2所示,第一處理器插槽210可包括多個處理核心212a、212b、212c和212d。盡管圖2所示的實施例包括四個這樣的處理核心,可以理解在其它的實施例中,處理器插槽可包括更多或者更少的這樣的核心。如圖2進一步所示,處理器核心可以經(jīng)由總線或者環(huán)215連接到一起。在某些實施例中,比如根據(jù)CSI協(xié)議的實施例,處理器插槽還包括附加的邏輯功能性,比如存儲控制器功能,和CSI包生成和路由機制。
例如,在圖2中在處理器插槽210內(nèi)示出的是邏輯功能性216,其可包括存儲控制器和其它邏輯功能性。邏輯功能性216可將節(jié)點標識符(NID)和處理器插槽關(guān)聯(lián)。如圖2中所示,處理器插槽210可具有一個節(jié)點標識符,在一個實施例中指示它是發(fā)起邏輯處理器。邏輯功能性216可包括源地址解碼器,該解碼器為物理存儲器映射中的所有項目將地址映射到對應(yīng)的節(jié)點(例如NID)。如果配置合適,每個處理器插槽可包括具有源地址解碼器的邏輯功能性,該源地址解碼器將相同地址對應(yīng)到相同節(jié)點。在一個實施例中,NID可以由不信任的固件在系統(tǒng)初始化時分配,并且由此不是唯一的。這樣在某些實施例中,信任的代理可被用于確定每一個節(jié)點的NID是否實際上是唯一的。在某些實施例中,邏輯功能性216還可包括將地址映射到物理存儲器的目標地址解碼器,例如,直接連接到給定的處理器插槽的物理存儲器。
存儲器218可被直接連接到處理器插槽210。雖然存儲器218可被直接連接到處理器插槽210,可以理解在各種實施例中,系統(tǒng)200中的任何處理器插槽都可以訪問存儲器218。存儲器218可利用邏輯功能性216內(nèi)的存儲控制器功能性與處理器插槽210連接。另外,雖然沒有在圖2中示出,可以理解每個處理器插槽具有一個或者多個與其連接的存儲器。雖然每個插槽具有一個直接與其連接的物理存儲器,比如高速緩存的附加存儲器單元可與處理器插槽內(nèi)的各個處理核心關(guān)聯(lián)。在一個實施例中,系統(tǒng)內(nèi)的所有存儲器可被尋址為單個物理地址空間,盡管多個這樣的存儲器存在,每個這樣的存儲器都被直接連接到不同的處理器插槽。
進一步如圖2所示,處理器插槽210直接連接到處理器插槽220、處理器插槽250和處理器插槽260。另外,處理器插槽210直接連接到主I/O中心290,其依次直接連接到主TPM 292。雖然不在這里詳細討論,處理器插槽230、240、270和280(和插槽220、250和260)可具有類似的處理核心、總線、環(huán)和邏輯功能性,如關(guān)于處理器插槽210所討論的。最后,進一步在圖2中顯示的是第二I/O中心295,其直接連接到處理器插槽250、260、270和280。
I/O中心290和295可各自包括多個端口,用以和與其連接的設(shè)備進行交互。例如,在某些實施例中,這樣的I/O設(shè)備可以是根據(jù)一個或者多個總線方案的設(shè)備。在一個實施例中,這樣的I/O設(shè)備可以是根據(jù)互連外圍設(shè)備ExpressTM實體層規(guī)范版本1.0a(Peripheral ComponentInterconnect Express Base Specification Version 1.0a)(2002年7月出版)的互連外圍設(shè)備(PCI)ExpressTM設(shè)備。主TPM292可是根據(jù)值得依賴的計算平臺聯(lián)盟(TCPA)主規(guī)范版本1.1b(2002年2月22日出版)的一個信任的平臺模塊。主TPM292可保護與創(chuàng)建和維護安全操作環(huán)境相關(guān)的數(shù)據(jù)。在一個特定的實施例中,主TPM292可包括用于特別加密、解密和/或者驗證過程的密鑰。主TPM292還可包括存儲空間,用來保存提要數(shù)據(jù)和其它用在安全環(huán)境中的信息。在一個實施例中,在主TPM292中的存儲空間可包括非易失性存儲器(例如,閃存),用來在掉電的情況下保持其內(nèi)容。
雖然在圖2的實施例中顯示為每個處理器插槽包括四個或者五個直接連接,其它實施例可以在不同插槽之間具有更多或者更少的直接連接。并且,可以理解在不同的實施例中,可以存在更多或者更少的插槽,其每一個具有不同數(shù)目的核心和不同數(shù)量的邏輯功能性。例如,一個單處理器系統(tǒng)可實現(xiàn)成具有一個單I/O中心和與其連接的關(guān)聯(lián)的I/O設(shè)備。或者,可實現(xiàn)具有不同數(shù)目的處理器(比如4、8、16或32)的多處理器系統(tǒng),并且適當數(shù)目的I/O中心和其它部件可連接到其上。任何這樣的平臺拓撲可利用點到點的互連來提供系統(tǒng)中一致部分的一致性,還允許連接到其上的I/O設(shè)備之間的非一致的對等事務(wù)。并且,在某些實施例中,附加部件可出現(xiàn)在系統(tǒng)200中,比如交叉開關(guān)、路由器等等。
參考圖3,顯示了根據(jù)本發(fā)明的實施例的生成樹的框圖。如圖3所示,生成樹300可是由ILP構(gòu)建的生成樹的圖形表示。更具體地,生成樹300對應(yīng)圖2的系統(tǒng)200的生成樹,其中處理器插槽210包括ILP。注意到生成樹的每個節(jié)點具有一個節(jié)點標識符,它對應(yīng)于圖2的匹配處理器插槽的節(jié)點識別符。如圖3所示,根層節(jié)點310具有節(jié)點識別符1,對應(yīng)于圖2的處理器插槽210。二層的節(jié)點包括直接與處理器插槽210連接的節(jié)點。特別地,如圖3所示,二層的節(jié)點包括節(jié)點315、320、325和330,其每一個對應(yīng)于系統(tǒng)200中直接與處理器插槽210相連接的節(jié)點,即處理器插槽220、250和260以及主I/O中心290。
第三層的節(jié)點包括節(jié)點335、340和350。這些節(jié)點的每一個對應(yīng)直接與第二層節(jié)點相連接的節(jié)點。例如,節(jié)點335(例如對應(yīng)于I/O中心295)直接連接到處理器插槽250;節(jié)點340(例如對應(yīng)于處理器插槽270)直接連接到處理器插槽260;和節(jié)點350(例如對應(yīng)于處理器軟件230)直接連接到處理器插槽220。最后,第四層的節(jié)點355和360,這兩者都直接連接到第三層節(jié)點,即節(jié)點340。
這樣,生成樹識別出在系統(tǒng)內(nèi)參與的插槽的數(shù)量。系統(tǒng)中的每個插槽(除了根插槽)可具有一個被識別為上行鏈接(uplink)的鏈接。由ILP生成的廣播消息可從它的上行鏈接由RLP接收。另外,除了那些葉子(例如圖3的第四層節(jié)點)外的所有插槽具有被識別為下行鏈接的鏈接。每個插槽可給它們的下行鏈接傳播廣播消息。在某些實施例中,對應(yīng)于如圖3中所示的圖形表示的查找表或者其它數(shù)據(jù)結(jié)構(gòu)可被存儲在與ILP所使用的處理器插槽210相關(guān)聯(lián)的存儲器中。
這樣,在構(gòu)造生成樹結(jié)束時,生成樹包括關(guān)于節(jié)點數(shù)目及其層數(shù)的信息。在生成樹枚舉結(jié)束時,唯一的標識符可被分配給每個節(jié)點,并且還可以確定和存儲在一個給定的節(jié)點之下的節(jié)點計數(shù)。這樣,如圖3中所示,除了每個節(jié)點的節(jié)點標識符(也如圖2中所示)外,還會存在一個附加的生成樹的唯一標識符(例如,節(jié)點ID1具有一個生成樹識別符1,然而節(jié)點ID5具有一個生成樹識別符2)。
現(xiàn)在參考圖4,顯示了根據(jù)本發(fā)明的一個實施例的信任的鏈接硬件的框圖。該信任的鏈接硬件可被用于提供在處理器插槽內(nèi)的信任的硬件鏈接,以在信任的代理的執(zhí)行完成之前使用??尚湃卧撔湃蔚逆溄佑布?,因為沿著鏈接操作和傳送消息時不需要固件或者軟件。信任的硬件鏈接455a和455b可被包含在處理器插槽內(nèi)(例如插槽410a和410b)。雖然在圖4中顯示兩個這樣的插槽,這里討論插槽410a及其部件。如圖4所示,硬件鏈接455a可被連接在處理器核心420a和鏈接控制器450a之間。使用信任的硬件鏈接455a,信任的鏈接消息可被發(fā)送到核心420a并從核心420a接收,而不需要依靠軟件或者固件。
相反,對于一般的系統(tǒng)消息發(fā)送和包傳輸,經(jīng)由總線或者環(huán)425a通過核心接口430a和協(xié)議引擎435a向/從核心420a傳播基于鏈接的消息。在一個實施例中,協(xié)議引擎435a可以是一個CSI協(xié)議引擎,用以將數(shù)據(jù)和消息格式化到CSI包中。另外,總線440a通過交叉開關(guān)445a連接到協(xié)議引擎435a。從這里,數(shù)據(jù)和消息可被發(fā)送到與處理器插槽關(guān)聯(lián)的其它節(jié)點、存儲器、發(fā)送到鏈接控制器450a,或者其它期望的位置。
因為包括核心接口430a、協(xié)議引擎435a和交叉開關(guān)445a的部件是由一個不信任的固件建立的。在完成信任的代理的運行之前這個通路不提供不可欺騙的訪問通路。這樣,在各種實施例中,硬件鏈接455a可在核心420a和鏈接控制器450b之間提供不可欺騙的訪問通路,這在信任的代理驗證系統(tǒng)之前特別的適用。例如,在驗證之前,鏈接控制器(比如鏈接控制器450a和鏈接控制器450b)可被用于利用來自核心的特殊指令生成鏈接消息。一個接收鏈接控制器就可以獲取鏈接消息內(nèi)容,并經(jīng)由信任的硬件鏈接(諸如信任的硬件鏈接455a)使它可以直接為處理器核心所用。在某些實施例中,可出現(xiàn)從鏈接控制器到處理器核心的事件機制,使得核心內(nèi)的微碼可被通知在信任的硬件鏈接處新鏈接消息的到達。在鏈接初始化期間,關(guān)于相鄰節(jié)點的信息可被鏈接控制器獲取,并且對于協(xié)議引擎和處理器核心可用。在這樣的實施例中,這樣的信息可包括相鄰節(jié)點的節(jié)點類型和節(jié)點標識符。
如圖4中進一步所示,對應(yīng)于那些參考處理器插槽410a而在上面討論的部件可以在處理器插槽410b中找到。另外,在兩個處理器之間的信任的鏈接可經(jīng)由連接在鏈接控制器450a和鏈接控制器450b之間的硬件鏈接460實現(xiàn)。這個信任的鏈接可被用于在信任的代理驗證系統(tǒng)之前在處理器插槽之間發(fā)送基于鏈接的消息。
現(xiàn)在參考圖5,顯示了ILP所觀察的、根據(jù)本發(fā)明的一個實施例的安全啟動的時序圖。如圖5中所示,安全啟動500開始于將一個信任的代理和安全內(nèi)核加載到存儲器(段502)中。如上所討論的,在一個實施例中非信任的OS可執(zhí)行該加載操作。接著,SENTER指令可被發(fā)送到包括期望的ILP的處理器插槽(段504)。例如,這樣的指令可由一個非信任的OS發(fā)布。
當ILP接收到SENTER指令時,它可在發(fā)布一個類似的指令到其插槽內(nèi)的其它邏輯處理器和到其它的處理器插槽,以及更特別地到響應(yīng)邏輯處理器(RLP),在每個處理器插槽中可以有它們中的一個(時間505)。對于哪個邏輯處理器是ILP和/或RLP的確定可在不同的實施例中變化,并且可基于軟件或者固件的決定。例如,在一個實施例中,ILP可被OS選擇。另外,其它處理器插槽內(nèi)的RLP可被給定的插槽內(nèi)的所有邏輯處理器選擇。在時間510,ILP可檢驗它是否直接連接到主I/O中心。接著在時間515,ILP可廣播一個SENTER總線消息到它插槽內(nèi)的OLP,并且每個OLP可響應(yīng)SENTER指令(時間520)。
在這個時間,可以開始一個SENTER本地事件(段522)。在時間525,每個OLP可發(fā)布一個確認(ACK)并進入一個等待狀態(tài)。這個等待狀態(tài)可由OLP維持,直到后來被ILP命令離開這個狀態(tài)。
接著可進入SENTER全局指令階段(段528)。首先,ILP可在系統(tǒng)內(nèi)發(fā)送一個尋找來自節(jié)點的確定(ACK)的消息。當ILP接收了ACK時,它可發(fā)送連續(xù)的指令(時間530)。在這個時間,ILP可構(gòu)建一個生成樹。
當生成樹的構(gòu)建呈現(xiàn)不同的形式時,在一個實施例中,生成樹可通過將作為鏈接層消息廣播的脈沖沿樹向下發(fā)送到下一個更低的層,并接收沿樹向上的返回來構(gòu)建,所述返回是包含了累計結(jié)果的鏈接層消息。通過這樣的方式,接收脈沖消息的每個RLP可將其轉(zhuǎn)發(fā)到它的下行鏈接,并且從下行鏈接接收返回消息。被發(fā)送的該生成樹基于鏈接的消息可使每個插槽設(shè)立每個插槽的層。接著,會發(fā)生生成樹枚舉,其中唯一的標識符被分配給每個節(jié)點。由此,在生成樹完成之后,每個插槽被分配了一個唯一的標識符和一個層,進一步指明它相對于ILP的相對位置和到/從插槽的上行鏈路和下行鏈路連接。
在驗證和完成生成樹之后,ILP可發(fā)送SENTER指令到所有其它處理器插槽(時間535)。接著,ILP可合并從生成樹上的節(jié)點接收的總結(jié)響應(yīng)(時間540)。用于該樹的一個算法檢驗拓撲的軟件配置給已經(jīng)每一個節(jié)點一個唯一的可在系統(tǒng)的路由協(xié)議中使用的標識符。
接著,ILP可測量(即計算散列)和驗鑒(即檢驗一個簽名)它在主I/O中心中指定的地址上找到的信任的代理,并且將散列值、信任的代理的基地址和長度,以及用于檢驗簽名的公共密鑰的散列廣播到其它處理器插槽(時間550)??衫蒙蓸鋮f(xié)議發(fā)生這樣一個廣播。當其它的插槽驗證該信任的代理,它們在時間555發(fā)送之后將被ILP合并的響應(yīng)消息。如果每個插槽發(fā)送一個肯定的響應(yīng),在時間560ILP可加載、記錄信任的代理的散列(例如在主TPM中)并啟動信任的代理。如果一個或者多個插槽未能肯定地響應(yīng),在某些實施例中就終止安全啟動。在如圖5所示的實施例中,信任的代理可以是安全的信任的代理(例如,有資格的SINIT-AC,用于安全初始化驗鑒的代碼),盡管本發(fā)明的范圍沒有那么被限制。
接著,可運行信任的代理(段572)。在一個實施例中,信任的代理的運行可發(fā)生在松散地鎖定步進(lock-step)的SIMD運行中。即是,相同的信任的代理可在所有的插槽上執(zhí)行,在代碼內(nèi)特定的壁壘處同步。例如,ILP可在所有鏈接上發(fā)布包括操作碼和數(shù)據(jù)的廣播消息。每個RLP可獲得數(shù)據(jù)并轉(zhuǎn)發(fā)該消息到它的下行鏈接(如果有的話),并處理該數(shù)據(jù)。如果RLP是一個葉子,它可發(fā)送響應(yīng)消息回到它的上行鏈接。如果RLP是一個中間節(jié)點,它等待來自它的下行鏈接的所有響應(yīng),利用操作碼總結(jié)所有的響應(yīng),并將總結(jié)的響應(yīng)發(fā)送給它的上行鏈接。當最后的ILP獲得來自所有其它插槽的總結(jié)響應(yīng)時,可繼續(xù)以類似的方式運行到下一個壁壘位置。
在運行中,信任的代理可驗證本地配置和每個處理器插槽的源地址解碼器(時間570)。另外,信任的代理可為每個處理器插槽驗證每個節(jié)點標識符的唯一性(時間575)。例如,信任的代理可引起源地址解碼器被發(fā)送到ILP(時間580)。接著,ILP可合并和分析源地址解碼器的比較結(jié)果(時間585)。接著,通過驗證、加載、記錄和啟動安全內(nèi)核可終止信任的代理(時間590)。在某些實施例中,這樣的驗證信息(例如散列值)可被存儲在主TPM中。在一個實施例中,安全的內(nèi)核可以是安全的虛擬機監(jiān)視器(SVMM),盡管本發(fā)明的范圍沒有那么被限制。
仍然參考圖5,監(jiān)視器初始化(段592)可以使ILP用特別的指令喚醒所有的插槽中的處理器核心,用以使所有的處理器退出它們的等待狀態(tài)。這樣,在段596,所有的監(jiān)視器加入,以及在時間598所有的處理器核心參加并且安全內(nèi)核操作開始(段599)。
現(xiàn)在參考圖6,顯示根據(jù)本發(fā)明的一個實施例的安全啟動的時序圖。更具體地,圖6顯示響應(yīng)邏輯處理器(RPL)所觀察到的安全啟動的時間選擇。這樣,在圖6中看到的安全啟動600非常接近地對應(yīng)于發(fā)生在圖5中的時序圖。首先,SENTER門鈴事件發(fā)生(段604)。在這樣一個事件期間,RLP被來自ILP的SENTER門鈴指令所中斷(時間605)。接著,在時間610,RLP發(fā)送SENTER下行鏈接消息到它的下行鏈接節(jié)點(如果有的話)。在時間615,該RLP將SENTER消息廣播到它的插槽內(nèi)的所有處理器(即是OLP的)。插槽中的每個其它的邏輯處理器可響應(yīng)SENTER循環(huán)(時間620)。接著SENTER本地事件(段622)發(fā)生,其中每個OLP發(fā)布回一個ACK到ILP并且OLP進入等待狀態(tài)(在時間625)。
在段628,SENTER門鈴全局時間發(fā)生。當RLP接收到所有來自下行鏈接節(jié)點的ACK時,它發(fā)送一個連續(xù)的消息到ILP(時間630)。在時間635,該RLP合并此類連續(xù)的消息。接著,在時間640,該RLP可接收來自ILP的驗證信息。在一個實施例中,ILP可發(fā)送關(guān)于信任的代理的散列值、基地址、大小和公共密鑰散列的信息。另外,在這個時間,該RLP可轉(zhuǎn)發(fā)該信息到它的下行鏈接節(jié)點。在時間645,該RLP可將接收的散列和信任的代理的散列進行比較。
在時間650,該RLP從它的下游節(jié)點接收驗證消息并合并這些結(jié)果。并且,該RLP通過它的上游節(jié)點向上發(fā)送一個總結(jié)的響應(yīng)到ILP。接著,基于從ILP接收的信息,該RLP加載、驗鑒、檢查信任的代理的簽名,并啟動信任的代理(時間655)。
如果所有的處理器插槽到達這個點,信任的代理運行(段672)。特別地,信任的代理驗證本地配置和每個處理器插槽的節(jié)點ID(時間660),并檢查和驗證插槽內(nèi)的源地址解碼器(時間665和670)。該RLP可接收來自下行鏈接插槽的驗證的結(jié)果,合并并向上發(fā)送到它的上行鏈接處理器或者ILP(時間675)。接著,該RLP插槽進入特定的等待狀態(tài)(在時間680)。
在這個點上,安全內(nèi)核被啟動,首先在ILP插槽上(段692)。接著,在時間685,ILP上的安全內(nèi)核用特定的喚醒指令喚醒所有插槽上的所有處理器核心。在這個時間,安全內(nèi)核可在系統(tǒng)的一些或者所有處理器上繼續(xù)它的運行。例如,在安全啟動之后,可創(chuàng)建一個虛擬機環(huán)境,其中SVMM可作為系統(tǒng)內(nèi)的最高權(quán)限的代碼來操作,并且可被用于允許或者拒絕OS或者虛擬機內(nèi)的應(yīng)用程序?qū)δ承┫到y(tǒng)資源的直接訪問。
通過這種方式,本發(fā)明的實施例可在一個被不信任的軟件和固件所配置的專用復(fù)雜服務(wù)器硬件上記錄和啟動一個信任的安全內(nèi)核。該內(nèi)核可接著進行構(gòu)建、記錄和證明一個信任的服務(wù)器執(zhí)行環(huán)境。另外,在特定的環(huán)境中,信任的代理可以SIMD的方式在一個服務(wù)器拓撲的所有處理器插槽上運行,并且通過使用信任的壁壘/廣播機制,可以驗證專用的復(fù)雜服務(wù)器拓撲的配置,并且通過從硬件通過信任的代理傳遞信任,可記錄和啟動安全的環(huán)境。
實施例可被實現(xiàn)在代碼中并且被存儲在已經(jīng)在其上存儲了指令的存儲介質(zhì)上,所述指令被用于對計算機系統(tǒng)進行編程以執(zhí)行這些指令。該存儲介質(zhì)可包括,但不局限于任何類型的盤,包括軟盤、光盤、壓縮盤只讀存儲器(CD-ROM)、可重寫壓縮盤(CD-RW)和磁光盤,半導(dǎo)體設(shè)備,比如只讀存儲器(ROM)、隨機訪問存儲器(RAM)、可擦可編程只讀存儲器(EPROM)、閃存、電可擦除只讀存儲器(EEPROM)、磁或者光卡,或者任何類型的適合存儲電子指令的介質(zhì)。
雖然用有限的實施例描述了本發(fā)明,本領(lǐng)域的技術(shù)人員可理解各種修改和變體。期望所附的權(quán)利要求覆蓋了落在本發(fā)明的真實的精神和范圍內(nèi)的所有這些修改和變體。
權(quán)利要求
1.一種方法,包括在具有部分連接的拓撲或者完全連接的拓撲的系統(tǒng)的多個處理器上安全地啟動安全內(nèi)核。
2.權(quán)利要求1的方法,還包括使用信任的代理,以安全地啟動安全內(nèi)核。
3.權(quán)利要求2的方法,還包括測量安全內(nèi)核的身份并在傳遞信任的鏈上記錄該身份。
4.權(quán)利要求2的方法,還包括利用信任的代理來驗證系統(tǒng)的存儲器配置。
5.權(quán)利要求4的方法,其中存儲器配置包括具有單一地址空間的分布式存儲器。
6.權(quán)利要求1的方法,其中多個處理器經(jīng)由專門的點到點互連連接。
7.一種方法,包括檢驗系統(tǒng)的發(fā)起邏輯處理器;如果發(fā)起邏輯處理器被檢驗,用發(fā)起邏輯處理器來驗證信任的代理;并且如果信任的代理被驗證,在系統(tǒng)的多個處理器上啟動信任的代理。
8.權(quán)利要求7的方法,還包括在系統(tǒng)的主中心代理的保護部分存儲信任的代理的地址信息。
9.權(quán)利要求7的方法,還包括在多個處理器上構(gòu)建生成樹。
10.權(quán)利要求9的方法,還包括使用生成樹在多個處理器上啟動信任的代理。
11.權(quán)利要求7的方法,還包括利用壁壘機制運行信任的代理。
12.權(quán)利要求11的方法,還包括在運行信任的代理之后運行安全內(nèi)核。
13.權(quán)利要求7的方法,還包括驗證系統(tǒng)的存儲器配置。
14.權(quán)利要求7的方法,其中檢驗發(fā)起邏輯處理器包括確認發(fā)起邏輯處理器和主中心代理之間的直接連接。
15.一種方法,包括利用發(fā)起邏輯處理器在系統(tǒng)的多個處理器上構(gòu)建生成樹;以及使用生成樹在多個處理器上啟動信任的代理。
16.權(quán)利要求15的方法,還包括在多個處理器上運行信任的代理。
17.權(quán)利要求15的方法,還包括利用非安全的操作系統(tǒng)將安全的內(nèi)核加載到系統(tǒng)的存儲器中。
18.權(quán)利要求17的方法,還包括將關(guān)于安全的內(nèi)核和信任的代理的信息存儲到系統(tǒng)的主中心代理中。
19.權(quán)利要求15的方法,還包括用該生成樹中的唯一的標識符來枚舉多個處理器的每一個。
20.權(quán)利要求19的方法,還包括將唯一的標識符與那些同多個處理器的每一個相連接的多個節(jié)點相關(guān)聯(lián)。
21.權(quán)利要求15的方法,其中構(gòu)建生成樹包括將第一消息廣播到直接連接的節(jié)點并接收來自直接連接的節(jié)點的返回消息。
22.權(quán)利要求21的方法,還包括將來自直接連接的節(jié)點的第一消息轉(zhuǎn)發(fā)到與其直接連接的下行鏈接節(jié)點。
23.權(quán)利要求15的方法,還包括將發(fā)起邏輯處理器選為生成樹的根。
24.一種設(shè)備,包括一個處理器核心;一個鏈接控制器;信任的硬件鏈接,用以將處理器核心直接連接到鏈接控制器。
25.權(quán)利要求24的設(shè)備,還包括與處理器核心直接連接的協(xié)議引擎,該協(xié)議引擎由非信任的代理配置。
26.權(quán)利要求25的設(shè)備,其中協(xié)議引擎包括通用系統(tǒng)接口引擎。
27.權(quán)利要求25的設(shè)備,其中協(xié)議引擎被連接到鏈接控制器。
28.權(quán)利要求24的設(shè)備,其中鏈接控制器適于在信任的代理已經(jīng)驗證該設(shè)備之前,經(jīng)由信任的硬件鏈接與處理器核心通信。
29.權(quán)利要求24的設(shè)備,其中處理器核心、信任的硬件鏈接和鏈接處理器是部分的處理器插槽。
30.權(quán)利要求24的設(shè)備,還包括經(jīng)由點到點互連而連接的多個處理器插槽。
31.權(quán)利要求24的設(shè)備,其中如果接收到鏈接信息,鏈接控制器適于直接通知處理器核心。
32.一種系統(tǒng),包括具有一發(fā)起邏輯處理器的第一處理器插槽;與第一處理器插槽連接的動態(tài)隨機訪問存儲器;與第一處理器插槽連接的第二處理器插槽;以及包含指令的存儲器介質(zhì),如果運行該指令,能使系統(tǒng)利用發(fā)起邏輯處理器在第一處理器插槽和第二處理器插槽上啟動信任的代理。
33.權(quán)利要求32的系統(tǒng),還包括與第一處理器插槽直接連接的主中心代理。
34.權(quán)利要求33的系統(tǒng),還包括與主中心代理直接連接的主信任平臺模塊。
35.權(quán)利要求32的系統(tǒng),其中第一處理器插槽包括在鏈接控制器和處理器核心之間的信任的硬件鏈接。
36.權(quán)利要求32的系統(tǒng),其中第一處理器插槽和第二處理器插槽經(jīng)由點到點互連連接。
37.權(quán)利要求32的系統(tǒng),其中發(fā)起邏輯處理器適于在第一處理器插槽和第二處理器插槽上構(gòu)建生成樹。
38.權(quán)利要求32的系統(tǒng),其中動態(tài)隨機訪問存儲器被直接連接到第一處理器插槽,并且可被第一處理器插槽和第二處理器插槽訪問。
39.一種產(chǎn)品,包括包含指令的機器可訪問存儲介質(zhì),如果運行該指令,能使系統(tǒng)在系統(tǒng)的多個處理器上安全地啟動安全的內(nèi)核,其中該系統(tǒng)包括部分連接的拓撲。
40.權(quán)利要求39的產(chǎn)品,還包括指令,如果運行該指令,能使系統(tǒng)使用信任的代理來安全地啟動安全的內(nèi)核。
41.權(quán)利要求40的產(chǎn)品,還包括指令,如果運行該指令,能使系統(tǒng)測量安全內(nèi)核的身份,并在傳遞信任的鏈上記錄該身份。
42.權(quán)利要求40的產(chǎn)品,還包括指令,如果運行該指令,能使系統(tǒng)利用信任的代理驗證系統(tǒng)的存儲器配置。
全文摘要
在本發(fā)明的實施例中,一個方法包括檢驗一個系統(tǒng)的一個發(fā)起邏輯處理器;如果發(fā)起邏輯處理器被檢驗,利用發(fā)起邏輯處理器來驗證信任的代理;并且如果信任的代理被驗證,在系統(tǒng)的多個處理器上啟動信任的代理。在執(zhí)行了這樣一個信任的代理之后,在某些實施例中就可以啟動安全內(nèi)核。該系統(tǒng)可以是例如多處理器服務(wù)器系統(tǒng),其具有帶有專門的點到點互連的部分或者完全連接的拓撲。
文檔編號G06F12/14GK1704922SQ20041007877
公開日2005年12月7日 申請日期2004年9月17日 優(yōu)先權(quán)日2004年6月3日
發(fā)明者J·H·威爾遜, I·T·肖因納斯, M·S·尤西夫, L·J·蘭金, D·W·格勞羅克, R·J·格雷納, J·A·蘇頓, K·維德, W·M·懷斯曼 申請人:英特爾公司