專利名稱::用于驗證處理系統(tǒng)部件的方法和裝置的制作方法
技術(shù)領(lǐng)域:
:本公開大致涉及數(shù)據(jù)處理領(lǐng)域,更具體地說,涉及用于驗證處理系統(tǒng)部件的方法及相關(guān)裝置。
背景技術(shù):
:處理系統(tǒng)可以包括硬件資源,諸如中央處理器(CPU)、隨機存取存儲器(RAM)和非易失性存儲器。處理系統(tǒng)還可以包括軟件資源,諸如基本輸入/輸出系統(tǒng)(BIOS)、虛擬機監(jiān)控程序(VMM)和運行于VMM上的一個或多個客戶操作系統(tǒng)(OS)(guestoperatingsystem)。在引導(dǎo)或復(fù)位計算機系統(tǒng)時,它會加載BIOS,然后是VMM。然后,VMM可以產(chǎn)生一個或多個虛擬機,并且虛擬機可以引導(dǎo)(boot)到不同的OS或相同OS中的不同示例。除了RAM和一個或多個CPU之外,處理系統(tǒng)還可以包括安全協(xié)處理器(securitycoprocessor),諸如可信平臺模塊(TPM)。TPM是駐留于處理系統(tǒng)內(nèi)的硬件部件,并提供了各種設(shè)施和服務(wù)以擴增處理系統(tǒng)的安全性。例如,TPM可實現(xiàn)為集成電路(IC)或半導(dǎo)體晶片,并且它可以用于保護數(shù)據(jù)和認證平臺的配置。TPM可按照規(guī)范來實現(xiàn),諸如2003年十月二日的可信計算組(TCG)TPM規(guī)范版本I.2(下文的"TPM規(guī)范"),它包括諸如設(shè)計原則、TPM結(jié)構(gòu)和TPM命令的部分。TPM規(guī)范由TCG公布并且可從互聯(lián)網(wǎng)(誦.trustedcomputinggroup.org/home)得到。TPM的子部件可以包括執(zhí)行引擎和安全的非易失性(NV)存儲器或存貯器??煽康腘V存儲器用于存儲敏感信息,諸如密碼密鑰,并且執(zhí)行引擎根據(jù)由TPM控制邏輯規(guī)定的安全策略而保護敏感信息。通常,基于平臺特征,TCG順應(yīng)的TPM可以提供安全性服務(wù),諸如驗證身份和/或平臺的完整性。通常由TPM考慮的平臺特征包括平臺的硬件部件(諸如處理器和芯片組)以及駐留于平臺中的軟件(諸如固件和OS)。TPM還可以支持軟件處理的審核和登錄,以及平臺引導(dǎo)完整性、文件完整性和軟件許可的核實。因此,TPM可以被認為是平臺的可信根。然而,TPM通常還依賴于固有可靠的平臺的CPU執(zhí)行的特定代碼。該代碼被認為是核心度量可信根(CRTM)。具體而言,TCG識別平臺用的三個主可信根存儲可信根(RTS)、報告可信根(RTR)和度量可信根(RTM)。就如https://www.Trustedcomputinggroup.org/groups/glossary網(wǎng)址的TCG術(shù)語表中所說明的,TPM通常用作RTS和RTR。相反,通常RTM是"由CRTM控制的普通平臺計算引擎。這是可信傳遞鏈的根。"而且,TCG術(shù)語表解釋到,可信根是"必須總是以預(yù)期方式實施行為的部分,因為其不正當行為是不能被檢測到的。"
發(fā)明內(nèi)容本發(fā)明的一個方面涉及一種用于驗證軟件的方法,該方法包括在引導(dǎo)過程期間,將密碼密鑰的加密版本從處理系統(tǒng)的非易失性存儲器取到處理系統(tǒng)的處理單元;在處理單元中將密碼密鑰解密;獲取處理系統(tǒng)的軟件的預(yù)定義驗證碼;用密碼密鑰來計算軟件的當前驗證碼;及至少部分基于預(yù)定義驗證碼與當前驗證碼的比較而確定軟件是否應(yīng)該可信。本發(fā)明的另一方面涉及一種用于支持軟件驗證的方法,方法包括使用密碼密鑰來為處理系統(tǒng)的軟件產(chǎn)生驗證碼;將驗證碼保存到處理系統(tǒng)中;將密碼密鑰保存到處理系統(tǒng)的非易失性存儲器中;以及為處理系統(tǒng)配置能夠使處理系統(tǒng)執(zhí)行引導(dǎo)操作的引導(dǎo)軟件,其中包括從非易失性存儲器獲取密碼密鑰;使用密碼密鑰來重新計算驗證碼;及至少部分基于重新計算的驗證碼和保存的驗證碼的比較而確定軟件是否應(yīng)該可信。本發(fā)明的又一方面涉及一種處理系統(tǒng)包括帶非易失性存貯器的處理單元;存貯于非易失性存貯器中的密碼處理單元密鑰(PUK);與處理單元進行通信的至少一個非易失性存貯部件;至少一個非易失性存貯部件中的候選代碼模塊;和至少一個非易失性存貯部件中的擴增引導(dǎo)代碼模塊;處理單元構(gòu)造成能夠在執(zhí)行來自候選代碼模塊的代碼之前,執(zhí)行來自擴增引導(dǎo)代碼模塊的代碼;其中,擴增引導(dǎo)代碼模塊包括驗證密鑰的加密版本;在由處理單元執(zhí)行時能夠使處理單元執(zhí)行如下操作的指令,包括使用PUK解密驗證密鑰的加密版本;及在執(zhí)行任何來自候選代碼模塊的指令之前,使用驗證密鑰來驗證候選代碼模塊。本發(fā)明還有一方面涉及一種裝置包括機器可訪問介質(zhì);機器可訪問介質(zhì)中的擴增引導(dǎo)代碼模塊,其中擴增引導(dǎo)代碼模塊包括驗證密鑰的加密版本;在引導(dǎo)過程期間由處理單元執(zhí)行的初級引導(dǎo)指令,處理單元帶有非易失性存貯器,并且密碼處理單元密鑰(PUK)存貯于非易失性存貯器中;初級引導(dǎo)指令包括在由處理單元執(zhí)行時能夠使處理單元執(zhí)行下列操作的指令,包括使用PUK來解密驗證密鑰的加密版本;及在執(zhí)行來自候選代碼模塊的任何指令之前,使用驗證密鑰來驗證候選代碼模塊。通過所附的權(quán)利要求、下文對一個或多個示范性實施例的詳細描述及對應(yīng)附圖,本發(fā)明的特征和優(yōu)點將變得很顯明,其中圖I是描述一適用數(shù)據(jù)處理系統(tǒng)的框圖,其中可實現(xiàn)本發(fā)明的示范性實施例的某些方面;圖2是描述涉及圖I的數(shù)據(jù)處理系統(tǒng)的一例數(shù)據(jù)處理環(huán)境的框圖;圖3是根據(jù)本發(fā)明的示范性實施例的、用于提供帶第三方密鑰和各種清單(manifest)的、圖I的處理系統(tǒng)的流程圖;圖4是根據(jù)本發(fā)明的示范性實施例的擴增驗證碼模塊的框圖;圖5是根據(jù)本發(fā)明的示范性實施例的、在處理單元和安全協(xié)處理器之間建立受保護信道的過程的流程圖;圖6是根據(jù)本發(fā)明的示范性實施例的、用于驗證圖I的數(shù)據(jù)處理系統(tǒng)的部件的過程的流程圖。具體實施方式本發(fā)明的實施例提供用于驗證平臺部件,諸如引導(dǎo)固件和/或VMM代碼,因此相對于依賴固有可靠的代碼的平臺提供了擴增的安全性。比如,平臺可以檢查系統(tǒng)的只讀存儲器(ROM)中的引導(dǎo)固件的真實性。或者,需要驗證的代碼可以包括諸如來自硬盤或其它大容量存貯器的OS和/或VMM等部件。作為背景,在帶TPM的平臺中,平臺測試(platformmeasurement)和加密方法可用來將敏感信息或機密密封到TPM。比如,在帶VMM的處理系統(tǒng)中,使用VMM和其它平臺部件的度量能夠?qū)C密密封到TPM。TPM可以阻止機密隨后從TPM釋放或啟封,除非VMM和其它平臺被驗證為與密封用的度量匹配。然而,在機密被啟封時,它就可以用明語電文(即未加密)形式在在TPM和CPU之間處理系統(tǒng)中的信道上傳遞。本公開介紹了用于在安全協(xié)處理器(例如,TPM)和處理單元(例如,CPU)之間以加密格式傳遞機密的機制和過程。從而,即使攻擊者窺探(snoop)到了處理系統(tǒng)中的內(nèi)部總線,攻擊者也不能截獲明語電文機密。介紹的機制和過程可以適于為高價值內(nèi)容提供擴增的保護,例如,關(guān)于數(shù)字版權(quán)管理(DRM)。就如將在下文詳細介紹的,在一個實施例中,TPM和CPU之間的信道上的數(shù)據(jù)使用各會話的密碼密鑰(cryptographickey)而加密。另外,CPU和TPM預(yù)先設(shè)置有密碼密鑰(本文稱為"第三方密碼密鑰"或“3PK”),該密鑰用于驗證會話終端和產(chǎn)生各會話的密碼密鑰。因此,3PK還被稱為驗證密鑰。為此公開的目的,對于處理單元和包括處理單元的處理系統(tǒng)而言,"第一方"是處理器的制造商,而“第三方”則是與處理單元或處理系統(tǒng)相關(guān)的任何其它實體。比如,處理系統(tǒng)的制造商和處理系統(tǒng)的所有者被認為是“第三方”。再來討論第三方密鑰,CPU的制造商不必將3PK加載到CPU或TPM。事實上,由于TPM是與平臺相關(guān)的,在CPU制造商并不裝配平臺時,CPU制造商就沒有機會將3PK加載入TPM內(nèi)。相反,3PK和將其加載入處理系統(tǒng)內(nèi)的過程主要由某些其它方控制,諸如由處理系統(tǒng)的制造商控制。例如,就如在下文將詳細介紹的,在構(gòu)建處理系統(tǒng)時,初始設(shè)備廠家(OEM)可以獲得擴增驗證碼(AC)模塊,它包含要安裝到處理系統(tǒng)CPU中的第三方密碼密鑰。就如將在下文詳細介紹的,在擴增AC模塊(augmentedACmodule)內(nèi),3PK可基于處理單元密鑰(PUK)而被加密保護。為了此公開的目的,處理單元密鑰或PUK是在制造處理器時存貯于處理器中且以非易失性形式保留于處理器中的密碼密鑰。比如,處理器可以不管關(guān)機重啟(powercycle)或處理器的復(fù)位而保留密鑰。擴增AC模塊還可以包括初級引導(dǎo)代碼,并且擴增AC模塊可以用簽名來保護。擴增AC模塊可以存儲于引導(dǎo)存貯器中(例如,通常包含BIOS代碼的閃存)。平臺構(gòu)建者還可以在平臺制造期間將3PK安裝到平臺的TPM內(nèi)。隨后在復(fù)位時,CPU就可以定位并運行擴增AC模塊中的初級引導(dǎo)代碼。因此,AC模塊和已經(jīng)用加密3PK擴增的相似類型的模塊可以被認為是擴增引導(dǎo)代碼模塊。在一個實施例中,CPU可以將固件接口表(FIT)用作標準機制以定位并運行擴增AC模塊。關(guān)于FIT的附加信息提供于2003年12月的IntelItaniumProcessorFamilySystemAbstractionLayer(處理器家族系統(tǒng)抽象層規(guī)范)中,它可以從互聯(lián)網(wǎng)在download,intel.com/design/11aniurn/Downloads/24535907.Pdf網(wǎng)址獲得。在運行時,擴增AC模塊可以將3PK安裝到只能由特權(quán)代碼(privilegedcode)修改的CPU寄存器中。因此,平臺可用文中介紹的方法來將OEM密鑰傳送到BIOS存儲器,并安全地在各次引導(dǎo)時將它們安裝到處理器。擴增AC模塊還可以初始化TPM,并創(chuàng)建由處理器和TPM使用以加密兩個部件之間的交換數(shù)據(jù)的會話密鑰。例如,一旦3PK已裝入處理器和TPM內(nèi),使用標準加密方案,這些密鑰又可以用來產(chǎn)生一個或多個會話密鑰。然后,會話就用于處理器和TPM之間的安全通目。介紹的解決方案允許CPU和安全性處理器(諸如TPM)之間的安全通信,因此確保了安全的交換,甚至可以防范擁有高級窺探硬件(snoopinghardware)和可對機器進行物理接觸的攻擊者。比如,根據(jù)本公開的平臺可確保用于保護數(shù)據(jù)內(nèi)容的密碼密鑰(例如,用于保護運動圖象專家組(MPEG)電影的密鑰,用于保護信用卡信息數(shù)據(jù)庫的密鑰等)受到保護,從而不受到基于目的性探測(in-targetprobe)(ITP)的攻擊。另外,本公開介紹了方便、靈活的方法以提供帶有建立受保護信道用的密鑰的平臺。第三方可以選擇密鑰并將它裝入平臺內(nèi)。3PK密碼密鑰不需要構(gòu)建到處理器中。因此,處理器制造商不必知道3PK。另外,如果處理器被返回到制造商,也可以在不損害3PK的情況下重新使用處理器。如果是可信代理需要的話,3PK可以被改變,并且只有在處理器存在于平臺中時,3PK才可與處理器聯(lián)系在一起。因此,這種3PK還可以被稱為平臺密鑰。OEM或其它實體也可使用3PK以在裝配或配置處理系統(tǒng)時為處理系統(tǒng)的各種軟件部件創(chuàng)建清單。隨后,處理系統(tǒng)可使用來自擴增AC模塊的3PK來驗證那些部件,例如在引導(dǎo)期間。因此,處理系統(tǒng)可以避免執(zhí)行已經(jīng)感染了惡意軟件(malware),諸如病毒、根套件(rootkit)、虛擬機根套件等的軟件包。比如,將在下文詳細介紹的,OEM可以將帶系統(tǒng)固件用的驗證碼的固件清單保存在引導(dǎo)閃存中。隨后在處理系統(tǒng)引導(dǎo)時,在執(zhí)行固件時,系統(tǒng)可以檢查清單以確定固件是否已經(jīng)被篡改??梢圆扇∠嗨频牟襟E來保護其它部件,諸如VMM、OS等。另一可選方式是,OEM可將這些3PK中多于一個的3PK存貯到擴增AC模塊中,而各3PK用于不同的目的。如,一個3PK可以用于在處理器和TPM之間建立可靠的通信,而其它3PK可以用于(a)驗證平臺固件,(b)驗證主OS,以及(c)驗證VMM。圖I是描述適用數(shù)據(jù)處理系統(tǒng)20的框圖,其中實現(xiàn)了本發(fā)明示范性實施例的某些方面。數(shù)據(jù)處理系統(tǒng)20具有不同硬件部件82,諸如中央處理器(CPU)22通過一個或多個系統(tǒng)總線24或其它通信路徑或介質(zhì)可通信地連接到各種其它部件。此公開使用的“總線”指的是共享通信路徑,以及點到點路徑。CPU22可包括兩個或多個處理單元,諸如處理單元30和處理單元32。另一可選方式是,處理系統(tǒng)可包括帶一個處理單元的CPU,或各具有至少一個處理單元的多個處理器。處理單元可實現(xiàn)為處理核心(processingcore)、超線程(HT)技術(shù),或用于同時或基本同時地執(zhí)行多線程的任何其它適用技術(shù)。文中使用的術(shù)語“處理系統(tǒng)”和“數(shù)據(jù)處理系統(tǒng)”廣義地涵蓋單一的機器或由可通信地連接的機器、設(shè)備構(gòu)成的共同運行的系統(tǒng)。示例處理系統(tǒng)包括(但是并不僅限于)分布式計算系統(tǒng)、超級計算機、高性能計算系統(tǒng)、計算群集(computingcluster)、大型計算機、微型計算機、客戶-服務(wù)器系統(tǒng)、個人計算機、工作站、服務(wù)器、手提式計算機、膝上型計算機、平板設(shè)備(tablet)、電話、個人數(shù)字助理(PDA)、手提式裝置、娛樂裝置、諸如音頻和/或視頻裝置和用于處理或傳送信息的其它設(shè)備。處理系統(tǒng)20可以由來自傳統(tǒng)輸入設(shè)備,諸如鍵盤、鼠標等的輸入,和/或接收自另、一機器、生物反饋(biometricfeedback),或其它輸入源或信號的指示來控制,或至少部分控制。處理系統(tǒng)20可以利用到達一個或多個遠程數(shù)據(jù)處理系統(tǒng)的一個或多個連接,諸如通過網(wǎng)絡(luò)接口控制器(NIC)40、調(diào)制解調(diào)器或其它通信端口或耦合。處理系統(tǒng)可以借助于物理和/或邏輯網(wǎng)絡(luò)而互聯(lián),諸如借助局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、內(nèi)部網(wǎng)、互聯(lián)網(wǎng)等。涉及網(wǎng)絡(luò)的通信可以利用各種有線和/或無線的短程或遠程載體和協(xié)議,包括射頻(RF)、衛(wèi)星、微波、美國電氣與電子工程師協(xié)會(IEEE)802.11,802.16,802.20、藍牙、光、紅外、電纜、激光等。802.11用的協(xié)議還可以被稱作無線保真(WiFi)協(xié)議。802.16還可以被稱為WiMAX或無線城域網(wǎng)網(wǎng)絡(luò)協(xié)議,涉及這些協(xié)議的信息目前可以在grouper,ieee.org/groups/802/16/published,html網(wǎng)址得到。圖2是描述涉及圖I處理系統(tǒng)20的一例數(shù)據(jù)處理環(huán)境12的框圖。尤其是,數(shù)據(jù)處理環(huán)境12包括作為本地處理系統(tǒng)的處理系統(tǒng)20,以及稱為擴增驗證碼模塊(AACM)發(fā)生器80的遠程處理系統(tǒng)。處理系統(tǒng)20和AACM發(fā)生器80可以通過網(wǎng)絡(luò)90進行通信。比如,處理系統(tǒng)20可以位于OEM裝配車間102中,并且在OEM裝配或配置處理系統(tǒng)20時,OEM可以使處理系統(tǒng)20與AACM發(fā)生器80進行通信以向處理系統(tǒng)20提供一個或多個專用于該OEM的3PK,就如下文將參照圖3詳細介紹的。尤其是,如下所述的,OEM可引起AACM發(fā)生器80將3PK72、3PK’75和3ΡΚ”77嵌入初級AC模塊(preliminaryACmodule)中,因此將它轉(zhuǎn)換成專用于該OEM的AACM。再來看圖1,在處理系統(tǒng)20內(nèi),處理器22可以可通信地連接到一個或多個易失性或非易失性的數(shù)據(jù)存貯設(shè)備,諸如RAM26、只讀存儲器(ROM)42、大容量存貯器36,諸如硬盤驅(qū)動器,和/或其它設(shè)備或介質(zhì),諸如軟盤、光學存儲器、磁帶,閃存、記憶棒、數(shù)字電視唱片等。出于此公開的目的,術(shù)語"ROM"通常用于指的是非易失性存儲設(shè)備,諸如電可編程只讀存儲器(EPROM)、電可擦除只讀存儲器(EEPROM)、flashROM/閃存等。處理器22還可以可通信地連接到附加部件,諸如視頻控制器、集成設(shè)備電路(IDE)控制器、小型計算機系統(tǒng)接口(SCSI)控制器、通用串行總線(USB)控制器、輸入/輸出(1/0)端口、輸入設(shè)備、輸出設(shè)備,諸如顯示器等。在圖I的實施例中,處理系統(tǒng)20還包括TPM44。在其它實施例中,也可以使用其它類型的安全協(xié)處理器。處理器22、RAM26,TPM44和其它部件可以連接到芯片組34。芯片組34可以包括一個或多個橋接器(bridge)或集線器(hub),以可通信地連接系統(tǒng)部件,以及其它邏輯和存貯部件。諸如視頻控制器的一些部件(例如)可以實現(xiàn)為帶有與總線通信用的接口的適配卡形式(例如,PCI連接器)。在一個實施例中,一個或多個設(shè)備實現(xiàn)為嵌入式控制器,使用諸如可編程的或不可編程的邏輯器件或陣列、某些用途集成電路(ASIC)、嵌入式計算機、智能卡和類似物的部件。本文將參考數(shù)據(jù),諸如指令、功能、程序、數(shù)據(jù)結(jié)構(gòu)、應(yīng)用程序和配置設(shè)定等來介紹本發(fā)明。在數(shù)據(jù)可以由機器訪問時,機器可以通過如下形式來來作出反應(yīng)執(zhí)行任務(wù)、定義抽象數(shù)據(jù)類型或低級硬件關(guān)聯(lián),和/或執(zhí)行其它操作,就如下文將詳細介紹的。數(shù)據(jù)可以存貯于易失性的和/或非易失性的數(shù)據(jù)存貯器中。出于此公開的目的,術(shù)語“程序”涵蓋很廣泛的軟件成分和結(jié)構(gòu),包括應(yīng)用程序、驅(qū)動程序、過程、例行程序方法模塊和子程序。術(shù)語“程序”可用來指完整的編譯單元(即能夠獨立編譯的指令集)、編譯單元的集合或編譯單元的一部分。因此,術(shù)語“程序”可以用于指在由處理系統(tǒng)執(zhí)行時完成所希望的單個操作或多個操作的指令的集合。處理系統(tǒng)20中的程序可以認為是軟件環(huán)境84的組成部分。如,在處理系統(tǒng)20引導(dǎo)時,BIOS50和VMM52可被載入RAM26,在軟件環(huán)境84內(nèi)執(zhí)行。VMM52可以包括或多或少地用作OS的組成部分,或者它可運行于主OS54的頂層。如,BIOS50可按照2006年I月31日的統(tǒng)一可擴展軟固件接口規(guī)范(UnifiedExtensiblefirmwareInterfaceSpecificarion)的第二版來實現(xiàn)。ROM42還可以包括諸如擴增AC模塊(AACM)60等模塊。就如下文將參照圖6詳細介紹的,AACM60可導(dǎo)致處理系統(tǒng)20在讓它們運行之前驗證BIOS50、OS54和/或VMM52。圖3是根據(jù)本發(fā)明的示范性實施例的、將3PK提供給處理系統(tǒng)20的過程的流程圖。所描述的過程適合于由OEM管理的部件或配置操作,它開始于OEM已經(jīng)選擇了將要提供給3PK的處理系統(tǒng)20之后。在步驟110處,OEM選擇將要提供的3PK。在步驟112處,OEM準備初級AC模塊。在本示范性實施例中,OEM為AC模塊使用諸如在2006年九月的LaGrandeTechnologyPreliminaryArchitectureSpecification(安全技術(shù)初步體系結(jié)構(gòu)規(guī)范,下文稱為"LTPA規(guī)范")中介紹的格式。LTPA規(guī)范目前可從互聯(lián)網(wǎng)上獲得(www.intel.com/technology/security/downloadslT_spec_0906.pdf)。圖I的示范性處理系統(tǒng)提供使用已知為更安全模式擴展(safermodeextension)(SMX)功能的快速啟動(launch)和控制接口。涉及SMX的附加信息可以從LTPA規(guī)范獲得。LTPA規(guī)范還介紹了AC模塊是如何被驗證和執(zhí)行的。例如,第11和12頁提供了下述說明為支持受保護環(huán)境的建立,SMX啟動驗證代碼執(zhí)行模式的性能。這提供了用于將特殊代碼模塊,也被稱為驗證碼模塊(AC模塊)載入處理器內(nèi)的內(nèi)部RAM(稱為驗證代碼執(zhí)行區(qū)域)的性能。AC模塊首先被驗證,然后用抗篡改法執(zhí)行。驗證可以通過使用AC模塊標頭中的數(shù)字簽名而實現(xiàn)。處理器計算AC模塊的散列(hash),并使用此結(jié)果來確認簽名。使用SMX,處理器將只初始化處理器狀態(tài)或執(zhí)行AC代碼模塊,如果它通過驗證的話。由于驗證碼模塊保存在處理器的內(nèi)部RAM中,模塊的執(zhí)行的發(fā)生可隔離于外部存儲器的內(nèi)容或外部處理器總線上的行為。再來看步驟112,為了準備初級AC模塊,OEM可以將用戶代碼/數(shù)據(jù)載入初級AC模塊的用戶區(qū)域內(nèi)。這里,初級AC模塊用作需要嵌入到擴增AC模塊中的OEM內(nèi)容的格式化輸入。在示范性實施例中,用戶區(qū)中的代碼包括在將控制權(quán)交給BIOS50之前用于控制初級引導(dǎo)操作的指令和數(shù)據(jù)。處理系統(tǒng)20還可以增加初級AC模塊的其它部分,諸如長度字段(sizefield)。如步驟114處所示,處理系統(tǒng)20然后可連接到AACM發(fā)生器80。在本示范性實施例中,處理系統(tǒng)20和AACM發(fā)生器80建立安全通道來傳遞加密數(shù)據(jù)。任何適用技術(shù)都可用來建立該安全通道。如步驟116中所示,處理系統(tǒng)20然后將消息或請求84發(fā)送到AACM發(fā)生器80。如圖2所示,請求84可以包括初級AC模塊,以及所想要的3PK。在本示范性實施例中,初級AC模塊包含這樣的域,它由OEM或第三方制造商填充,以指示為之查找AACM的處理器家族。如在步驟120和122中所示,AACM發(fā)生器80可以從處理系統(tǒng)20接收初級AC模塊和3PK,然后可將3PK加密。在圖2實施例中,AACM發(fā)生器80由處理器22的制造商管理,并且AACM發(fā)生器80使用預(yù)定義的處理器制造密鑰(PMK)71來加密3PK。在圖2實施例中,PMK71是私有密鑰,處理單元30包括PUK70,PUK70是相應(yīng)的公有密鑰。在另一實施例中,PMK和PUK可以是相同密鑰(即它們具有相同值)。在圖I實施例中,在處理器22被運送到購買方如OEM之前,PUK70可以永久地由處理器22的制造商在制造過程期間燒入處理單元30內(nèi)。處理器22的制造商可以保存PMK71機密,使得永遠沒有其它實體能夠得知PMK71的值。另一可選方式是,處理器制造商可以安排單獨的可信實體來管理AACM發(fā)生器80。盡管PUK70可以認為是"公開"密鑰,但是也可以將它保密,使得其值永不從處理單元30釋放。再來看圖3,AACM發(fā)生器80然后構(gòu)建包括加密的3PK的AACM60,如在步驟124處所示。例如,再參照圖1,AACM發(fā)生器80可以包括AACM60中的下列3PK:加密的3ΡΚ(Ε3ΡΚ)72Α、Ε3ΡΚ'75Α和Ε3ΡΚ"77Α。尤其是,再參照圖2,在AACM發(fā)生器80構(gòu)建AACM60時,AACM發(fā)生器80可以將Ε3ΡΚ添加到初級AC模塊的用戶數(shù)據(jù),并更新模塊長度字段?;蛘撸珹ACM60可以包括一個或多個用于保存加密的3ΡΚ的預(yù)定義的域。包括3ΡΚ的加密版本的AACM也稱為加密的AC模塊。圖4是來自圖I的AACM60的框圖,示出了模塊標頭(moduleheader),其后是暫存區(qū),再后面是帶有附加在模塊端或接近模塊端的加密3PK的用戶區(qū),加密3PK的用戶區(qū)跟隨在來自初級AC模塊的用戶代碼/數(shù)據(jù)之后。另一可選方式是,AC模塊可以構(gòu)造成帶有可能是位于模塊標頭中的一個或多個獨立域,以保存加密的3PK。使用區(qū)中用于控制初級引導(dǎo)操作的指令和其它數(shù)據(jù)在文中稱為AACM代碼79。再參照圖3,然后AACM發(fā)生器80將AACM60發(fā)送到處理系統(tǒng)20,如步驟126所示。在步驟130中,處理系統(tǒng)20可以從AACM發(fā)生器80接收AACM60。然后處理系統(tǒng)20可以標記AACM60,如在步驟132處所指示的。例如,OEM可以選擇AC模塊密鑰對,諸如Rivest、Shamir,Adelman(RSA)公有/私有密鑰對,然后將來自該密鑰對的公有密鑰載入AACM60的標頭。OEM可使用來自該密鑰對的私有密鑰創(chuàng)建AACM60用的RSA簽名,這可能是基于用戶區(qū)的散列消息或也可能是基于AACM60的其它部分。然后OEM可以將該RSA簽名存貯到AACM60的標頭中。再參照圖4,在AACM60的標頭中描述了這種RSA公有密鑰76和這種RSA簽名78。因此,OEM(或其它第三方)可以為AC模塊選擇3PK及RSA公有密鑰。從而,為了區(qū)別那些密鑰,RSA公有密鑰可以被稱為主模塊密鑰,而3PK可以稱為補充模塊密鑰。如在步驟134處所示,處理系統(tǒng)20然后可以將AACM60存貯到如圖I中描述的ROM42中。在圖I實施例中,處理單元30構(gòu)造成用作自引導(dǎo)處理器(BSP),處理系統(tǒng)20構(gòu)造成能夠?qū)OM42使用作引導(dǎo)存貯器(即處理單元30可以從中獲得指令以用于在上電或復(fù)位時初始化和配置處理系統(tǒng)20的非易失性存貯器)。因此,實現(xiàn)系統(tǒng)配置的OEM或其它實體可以將密碼密鑰,諸如E3PK72A裝入系統(tǒng)ROM(例如ROM42)中。此外,由于E3PK72A本身是加、密的,因此即使攻擊者能夠從ROM42獲取E3PK72A,攻擊者還是不能解密和使用E3PK72A。如在圖3中步驟136處所示,處理系統(tǒng)20然后可以將3PK中的一個或多個(例如3PK72)存入TPM44。比如,處理系統(tǒng)20可以在各次引導(dǎo)期間安全地將3PK72和其它3PK安裝入TPM44內(nèi)。另一可選方式是,OEM可以在處理系統(tǒng)制造期間將3PK72和其它3PK設(shè)置入TPM44內(nèi)。然后,處理系統(tǒng)20可以使用3PK中的一個或多個來為要保護的各種軟件部件計算驗證碼,并且處理系統(tǒng)20可以將那些驗證碼保存為處理系統(tǒng)20中的清單。在示范性實施例中,散列消息驗證碼(hashed(HMAC)用于各驗證碼或清單。HMAC可以具有如下形式HMACk(m)=h((Kxoropad))||h((KxorIPAD)|m))其中,m是要保護的消息或數(shù)據(jù),h是散列函數(shù),K是選擇的3PK(例如,3ΡΓ75),ipad是預(yù)定義的內(nèi)部填充常數(shù)(padconstant),opad是預(yù)定義的外部填充常數(shù)。涉及HMAC的附加信息目前可從互聯(lián)網(wǎng)(http://en.wikipedia.org/wiki/HMAC)上獲得。例如,如在步驟140所描述的,處理系統(tǒng)20可以計算處理系統(tǒng)20的系統(tǒng)固件的HMAC0尤其是,處理系統(tǒng)20可以將3PK'75用作HMAC用的K,并且處理系統(tǒng)20可以將固件鏡像(firmwareimage)(例如,BIOS50的內(nèi)容)用作HMAC的m。相類似的,如在步驟142和144處所示,處理系統(tǒng)20可以用3PK"77來計算VMM52用的HMAC,并且處理系統(tǒng)可用另一3PK來計算OS54的HMAC。如在步驟150處指出的,處理系統(tǒng)20然后可以將HMAC保存為相應(yīng)部件用的清單。比如,如圖I中所示,處理系統(tǒng)20可以用附加、預(yù)先計劃,或以其它方式將VMM驗證碼(AC)53增加到VMM52,將固件AC51增加到BIOS50,和將OSAC55增加到OS54。另一可選方式是,清單或驗證碼可以獨立地從相應(yīng)軟件模塊保存。圖5是根據(jù)本發(fā)明的示范性實施例的、用于在處理單元和TPM之間建立受保護通信通道的過程的流程圖。圖I在總線24和芯片組34上使用粗線來描述這種可靠通道的示例,該可靠通道根據(jù)圖5的過程而建立于處理單元30和TPM44之間。帶E3PK72A的AACM60已經(jīng)存貯于ROM42中之后開始該過程,可能是根據(jù)諸如上述介紹的過程。尤其是,圖5的過程可以響應(yīng)于加電或復(fù)位的處理系統(tǒng)20而開始,該過程可以使處理單元30中的微指令檢查ROM42中的預(yù)定義位置以確定ROM42是否包含AC模塊。如果找到了AC模塊,處理單元30可以將AC模塊加載入處理單元30內(nèi)的受保護內(nèi)部RAM。接收AC模塊的受保護內(nèi)部RAM可以被稱為驗證碼執(zhí)行區(qū)(ACEA)38。出于說明的目的,可以假設(shè),處理單元30在R0M42中找到了AACM60。如在步驟220處所示的,處理單元30然后可根據(jù)上述從LTPA的規(guī)范摘錄,確定AACM60是否可信。t匕如,處理單元30可以(a)計算AACM60某些部分的散列(b)使用RSA公有密鑰76來解密簽名78,以及(c)將解密的簽名與散列作比較以確定,AACM60是否匹配OEM最初用對應(yīng)的RSA私有密鑰所做的簽名。處理單元30還可以核實RSA公有密鑰76是否違背有效公有密鑰的預(yù)定義列表。比如,處理單元可以從RSA公有密鑰76導(dǎo)出散列值,并在處理系統(tǒng)20中將該值與受保護存貯器中的有效散列值列表做比較。如果RSA公有密鑰76核實是好的,并且AACM60的散列匹配解密的RSA簽名,那么處理單元30就推斷AACM60可信。如果處理單元30不能找到AC模塊,或如果處理單元30找到了AC模塊,但是確認它不可信,那么處理單元30就可以記錄適當?shù)腻e誤消息,如在步驟240處指示的。處理單元30然后可以檢查處理系統(tǒng)20中的配置設(shè)定以確認,是否允許處理系統(tǒng)20使用非ACM引導(dǎo)過程,如在步驟250處所示。如果允許非ACM引導(dǎo),那么處理單元30就可以執(zhí)行非ACM引導(dǎo),如在步驟252處所示。如果不允許非ACM引導(dǎo),那么過程就可結(jié)束而不作處理系統(tǒng)20引導(dǎo)。再來看步驟220,如果處理單元30確認AACM60可信,那么處理單元30然后就可以從AACM60獲取E3PK,如步驟222所示。處理單元30可以暫時將E3PK存貯在(比如)一個或多個處理器寄存器或其它內(nèi)部存貯器中。然后,處理單元32解密E3PK(例如,E3PK72Α,Ε3ΡΚ'75Α,Ε3ΡΚ"77Α)并將結(jié)果(例如,3ΡΚ72,3ΡΓ75,3ΡΚ"77)保存在處理單元32內(nèi)的受保護存貯器中,如步驟224和226所示。在圖I的實施例中,其中受保護存貯器實現(xiàn)為一個或多個寄存器,這些寄存器(a)只能由特權(quán)代碼修改;(b)不能由非特權(quán)代碼讀、寫或調(diào)度;并且(c)不能由ITP訪問。在此上下文中,特權(quán)代碼是這樣的代碼,它可從外面?zhèn)魉偷教幚砥鳎窃谒商幚砥鬟\行前需要特殊驗證,并且然后運行于干凈環(huán)境中的處理器中,以使得特權(quán)代碼執(zhí)行不能由惡意方監(jiān)視或操縱。在一可選實施例中,處理系統(tǒng)可以等待,直到不需要用TPM建立安全通道的未來時間點才解密E3PK。在圖I實施例中,處理單元30使用PUK70來解密E3PK。如步驟228處所示,處理單元30和TPM44然后可以使用3PK72來創(chuàng)建會話密鑰(SK)74以保護處理單元30和TPM44之間的通信。處理單元30和TPM44然后可用SK74來創(chuàng)建受保護通道,如步驟230處所示。該受保護通道可以橫貫多個系統(tǒng)總線24和零個或多個芯片組34的部件。TPM44和處理單元30然后可以使用SK74來加密通信,如在步驟232處所示。在可選實施例中,可以用多個會話密鑰來保護處理單元30和TPM44之間的通目??梢杂檬鼙Wo的通道(比如)來將來自TPM44的密鑰或其它受保護信息加載到處理單元30內(nèi)。同樣的,可以用受保護通道將來自處理單元30的密鑰或其它敏感信息發(fā)送到TPM44。因此,受保護通道確保了通道的任何觀察者都不能確定通信的內(nèi)容,并保護傳送中的數(shù)據(jù)不受到修改。此外,用于初始化通道的過程可以驗證終端以保護不受未授權(quán)的存取,并不受重放和TPM交換攻擊(replayandTPMswapattack)。如在步驟260處所示,處理系統(tǒng)20然后可以確定是否有其它部件需要在引導(dǎo)過程的初級階段中被驗證。如果是這樣的話,過程就通過頁連接符A而接續(xù)到圖6。圖6是根據(jù)本發(fā)明示范性實施例的、用于驗證處理系統(tǒng)20的部件的過程的流程圖。在控制流程通過頁連接符A到達圖6時,處理系統(tǒng)20就可以嘗試來定位固件清單(firmwaremanifest)或驗證碼,諸如BIOSAC51,如在步驟310處所示。如果沒有找到BIOSAC51,處理單元30就記錄錯誤,如在步驟350處所示,并且過程就可以在沒有完成引導(dǎo)過程的情況下結(jié)束。如果找到了BIOSAC51,處理單元30就使用3PK'75來計算HMAC為當前BIOS鏡像(BIOSimage),如在步驟312處所示。如在步驟320處所示,處理單元30然后可以比較BIOSAC51與當前AC以確認BIOS50是否已經(jīng)被篡改過。如果HMAC不匹配,處理單元30就記錄錯誤,如步驟350處所示,并且過程就結(jié)束。如果它們確實匹配,那么來自AACM60的初級引導(dǎo)代碼可以將控制傳遞到(handoff)系統(tǒng)固件,如步驟322所示。如在步驟330處所示,處理系統(tǒng)20然后可以嘗試定位清單諸如VMM52用的VMMAC53。如果沒有找到VMMAC53,處理單元30就記錄錯誤,如步驟350處所示,并且過程就此結(jié)束。然而,如果找到VMMAC53,處理單元30就用3PK"77來計算當前VMM鏡像的HMAC,如步驟332處所示。如步驟340處所示,處理單元30然后可以比較VMMAC53與當前AC以確定VMM52是否已被篡改。如果HMAC不匹配,那么處理單元30就記錄錯誤,如步驟350所示,并且過程就此結(jié)束。如果它們確實匹配,那么BIOS50就將控制傳遞給(handoff)VMM52,如在步驟344處所示。在VMM52包括或多或少地起OS作用的部件時,可以使用上述操作。在OS54與VMM52有區(qū)別時,處理系統(tǒng)20可用如上述的那些操作來定位OS54用的清單(例如,OSAC55),并在OS54已經(jīng)被篡改時保護OS54,使其不被執(zhí)行。按照這里介紹和描述的原則和示范性實施例,可以認識到,在不背離這些原則的情況下,能夠修改所描述的實施例的設(shè)置和細節(jié)。另外,前述討論集中于特殊實施例,但是也可以構(gòu)思出其它配置。尤其是,雖然在本文中使用了諸如“在一個實施例中,在另一實施例中”等的表達,這些短語只是意味著一般地提及參考實施例的可能性,而不是旨在將本發(fā)明限制于某些實施例配置。如本文中所使用的,這些術(shù)語可以指能夠結(jié)合到其它實施例內(nèi)的相同或不同實施例。相似地,盡管已經(jīng)參照以某些順序?qū)崿F(xiàn)的某些操作來介紹過了示例過程,還可以將許多改進應(yīng)用到那些過程上以推導(dǎo)出本發(fā)明的多個可選實施例。例如,可選實施例可以包括使用比所有公開操作都要少的過程;使用附加操作的過程;以不同順序使用相同操作的過程;和將本文公開的單一操作進行組合、再分或其它改變的過程。還有,盡管在示范性實施例中介紹了由OEM實現(xiàn)或控制的某些操作,在其它實施例中其它類型的實體也可以實現(xiàn)或控制操作,包括(但并不僅限于)實現(xiàn)平臺配置、軟件安裝、信息技術(shù)(IT)輔助等的實體。另外,此公開涉及各種操作的密鑰的使用。需要明白的是,這種使用包括直接和間接地使用。比如,如果使用第一密鑰來創(chuàng)建第二密鑰,然后第二密鑰用于操作,那么兩個密鑰都被認為已用于操作。已經(jīng)直接使用了第二密鑰,并且也已經(jīng)間接使用了第一密鑰。本發(fā)明的可選實施例還包括用于執(zhí)行本發(fā)明操作的機器可訪問介質(zhì)(machineaccessiblemedia)編碼指令。這種實施例還可被稱作程序產(chǎn)品。這類機器可訪問介質(zhì)可以包括,但并不僅限于,存貯介質(zhì),諸如軟盤、硬盤、CD-ROM、ROM和RAM;和由機器或設(shè)備制造的微粒的其它可檢測設(shè)置。指令還可以用于分布式環(huán)境,并可以本地存貯和/或可由單處理器或多處理器機器遠程訪問。當知,本文描述的硬件和軟件部件代表合理獨立的功能裝置,以使得每個都能基本獨立于其它而被設(shè)計、構(gòu)建或更新。在可選實施例中,其中許多部件可以被實現(xiàn)為硬件、軟件、或硬件和軟件的組合,以用于提供上述介紹和描述的功能。由于已經(jīng)可以從本文介紹的示范性實施例推導(dǎo)出很廣范圍的多種有用改變,所以此詳述只是旨在于描述目的,不應(yīng)當被認為是用來限制本發(fā)明范圍的。因此,本發(fā)明要求保護的是落入所附權(quán)利要求的范圍和精神的所有實現(xiàn)方式,以及所有與其相當?shù)膶崿F(xiàn)方式。權(quán)利要求1.一種用于驗證軟件的方法,所述方法包括在引導(dǎo)過程期間,處理系統(tǒng)的處理單元接收密碼密鑰的加密版本;解密所述密碼密鑰;接收所述處理系統(tǒng)的軟件的驗證碼;基于解密后的密碼密鑰來計算所述軟件的當前驗證碼;以及基于預(yù)定義驗證碼與所述當前驗證碼而確定所述軟件是否應(yīng)該執(zhí)行。2.根據(jù)權(quán)利要求I所述的方法,其特征在于,解密所述密碼密鑰的操作包括基于存于所述處理單元的非易失性存貯器中的密鑰來解密所述密碼密鑰的加密版本。3.根據(jù)權(quán)利要求I所述的方法,其特征在于,在引導(dǎo)過程期間接收密碼密鑰的加密版本的操作包括在引導(dǎo)過程期間從除可信平臺模塊以外的部件接收所述密碼密鑰的加密版本。4.根據(jù)權(quán)利要求I所述的方法,其特征在于,為所述軟件計算當前驗證碼的操作包括基于所述密碼密鑰來為所述軟件計算當前散列消息驗證碼。5.根據(jù)權(quán)利要求I所述的方法,其特征在于,待驗證的所述軟件包括由下列部分構(gòu)成的組中的至少一個程序引導(dǎo)固件;虛擬機監(jiān)控程序;以及操作系統(tǒng)。6.根據(jù)權(quán)利要求I所述的方法,包括,在引導(dǎo)過程期間解密所述密碼密鑰;接收所述處理系統(tǒng)的軟件的驗證碼;基于解密后的密碼密鑰來計算所述軟件的當前驗證碼;以及基于預(yù)定義驗證碼與所述當前驗證碼而確定所述軟件是否應(yīng)該執(zhí)行。7.一種用于支持軟件驗證的方法,所述方法包括基于密碼密鑰來為處理系統(tǒng)的軟件產(chǎn)生驗證碼;將所述驗證碼保存到所述處理系統(tǒng)中;以及為所述處理系統(tǒng)配置能夠使所述處理系統(tǒng)執(zhí)行引導(dǎo)操作的引導(dǎo)軟件,所述弓I導(dǎo)操作包括基于所述密碼密鑰來重新計算所述驗證碼;以及基于所述重新計算的驗證碼和所述保存的驗證碼而確定所述軟件是否應(yīng)該執(zhí)行。8.根據(jù)權(quán)利要求7所述的方法,包括將所述密碼密鑰的加密版本保存到所述非易失性存儲器中。9.根據(jù)權(quán)利要求7所述的方法,其特征在于,為所述處理系統(tǒng)的軟件產(chǎn)生驗證碼的操作包括為引導(dǎo)固件產(chǎn)生所述驗證碼。10.根據(jù)權(quán)利要求7所述的方法,其特征在于,為所述處理系統(tǒng)的軟件產(chǎn)生驗證碼的操作包括為由下列部分構(gòu)成的組中的至少一個程序產(chǎn)生所述驗證碼引導(dǎo)固件;虛擬機監(jiān)控程序;以及操作系統(tǒng)。11.一種用于驗證軟件的處理系統(tǒng),所述系統(tǒng)包括在引導(dǎo)過程期間,接收密碼密鑰的加密版本的部件;解密所述密碼密鑰的部件;接收所述處理系統(tǒng)的軟件的驗證碼的部件;基于解密后的密碼密鑰來計算所述軟件的當前驗證碼的部件;以及基于預(yù)定義驗證碼與所述當前驗證碼而確定所述軟件是否應(yīng)該執(zhí)行的部件。12.根據(jù)權(quán)利要求11所述的系統(tǒng),包括用于基于存于所述處理單元的非易失性存貯器中的密鑰來解密所述密碼密鑰的部件。13.根據(jù)權(quán)利要求11所述的系統(tǒng),包括用于在引導(dǎo)過程期間從除可信平臺模塊以外的部件接收所述密碼密鑰的加密版本的部件。14.根據(jù)權(quán)利要求11所述的系統(tǒng),包括用于基于所述密碼密鑰來為所述軟件計算當前散列消息驗證碼的部件。15.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,待驗證的所述軟件包括引導(dǎo)固件。16.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,待驗證的所述軟件包括由下列部分構(gòu)成的組中的至少一個程序引導(dǎo)固件;虛擬機監(jiān)控程序;以及操作系統(tǒng)。17.根據(jù)權(quán)利要求11所述的系統(tǒng),包括,用于在引導(dǎo)過程期間執(zhí)行下列操作的部件解密所述密碼密鑰;接收所述處理系統(tǒng)的軟件的驗證碼;基于解密后的密碼密鑰來計算所述軟件的當前驗證碼;以及基于預(yù)定義驗證碼與所述當前驗證碼而確定所述軟件是否應(yīng)該執(zhí)行。18.—種用于驗證軟件的處理系統(tǒng),所述系統(tǒng)包括基于密碼密鑰來為處理系統(tǒng)的軟件產(chǎn)生驗證碼的部件;將所述驗證碼保存到所述處理系統(tǒng)中的部件;以及配置所述處理系統(tǒng)來執(zhí)行引導(dǎo)操作的部件,所述引導(dǎo)操作包括基于所述密碼密鑰來重新計算所述驗證碼;以及基于所述重新計算的驗證碼和所述保存的驗證碼而確定所述軟件是否應(yīng)該執(zhí)行。19.根據(jù)權(quán)利要求18所述的系統(tǒng),包括用于將所述密碼密鑰的加密版本保存到所述非易失性存儲器中的部件。20.根據(jù)權(quán)利要求18所述的系統(tǒng),包括為引導(dǎo)固件產(chǎn)生所述驗證碼的部件。21.根據(jù)權(quán)利要求18所述的系統(tǒng),包括為由下列部分構(gòu)成的組中的至少一個程序產(chǎn)生所述驗證碼的部件引導(dǎo)固件;虛擬機監(jiān)控程序;以及操作系統(tǒng)。全文摘要在處理系統(tǒng)引導(dǎo)時,它可將加密密鑰的加密版本從非易失性存儲器取到處理單元,該處理單元可將加密密鑰解密。處理系統(tǒng)還可為處理系統(tǒng)的軟件獲取預(yù)定義驗證碼,并且處理系統(tǒng)可用加密密鑰來為軟件計算當前驗證碼。然后,通過比較預(yù)定義驗證碼和當前驗證碼,處理系統(tǒng)可以確認軟件是否可信。在各種實施例中,處理單元可以使用存于處理單元的非易失性存貯中的密鑰來將加密密鑰的加密版本解密,可用散列消息驗證碼(HMAC)作為驗證碼,和/或需要驗證的軟件可以是引導(dǎo)固件、虛擬機監(jiān)控程序(VMM)或其它軟件。還就其它一些實施例作了描述并主張了它們的權(quán)利要求。文檔編號G06F21/22GK102637250SQ20121002455公開日2012年8月15日申請日期2007年12月28日優(yōu)先權(quán)日2006年12月29日發(fā)明者M·J·庫馬,S·蓋龍申請人:英特爾公司