專利名稱:固件映像的多所有者部署的制作方法
技術(shù)領(lǐng)域:
本公開一般涉及計算機系統(tǒng)中BIOS及其它固件代碼的部署。
背景技術(shù):
最初為IBM PC可兼容計算機開發(fā)的基本輸入/輸出系統(tǒng)(BIOS)(也稱為系統(tǒng)BIOS)是限定固件接口的事實標準。BIOS是引導固件,被設(shè)計成通電時由PC運行的第一代碼。BIOS的最初功能是標識、測試和初始化諸如視頻顯卡、硬盤和軟盤及其它固件之類的系 統(tǒng)設(shè)備。該初始化將機器預備到已知狀態(tài),使得諸如存儲在兼容介質(zhì)上的操作系統(tǒng)之類的軟件可被加載、執(zhí)行并給予PC控制。該進程被稱為引導或自舉,它是引導過程的簡稱。BIOS程序提供小的基本輸入/輸出功能、文本顯示功能等的庫,這些基本輸入/輸出功能可被調(diào)用以操作并控制諸如鍵盤之類的外圍設(shè)備。當系統(tǒng)通電時,BIOS檢查系統(tǒng)配置設(shè)置并將充當硬件組件和操作系統(tǒng)之間的翻譯器的程序加載到存儲器。例如,當用戶按下鍵盤上的鍵時,該信號被發(fā)送到鍵盤中斷處理程序,該鍵盤中斷處理程序告知處理器它是什么并將其傳遞到操作系統(tǒng)。BIOS是當處理器運行在16位處理器模式且可尋址的存儲器被限制在一兆字節(jié)且BIOS代碼反映IBM PC AT硬件依賴性時為IBM PC開發(fā)的。為32位處理器開發(fā)的操作系統(tǒng)開始包括用于處理1/0的設(shè)備驅(qū)動器,而不是依賴調(diào)用由BIOS提供的16位運行時間接口。這些設(shè)備驅(qū)動器通常由平臺固件提供,且在加載操作系統(tǒng)之前的BIOS初始化期間被加載到存儲器。由于大量的可與操作系統(tǒng)接口的外圍設(shè)備,這種平臺固件通常由系統(tǒng)制造者之外的實體提供。當涉及很多方時,固件映像的分發(fā)變得復雜。隨著當今計算環(huán)境中惡意軟件的激增,驗證固件的重要性也在增加。數(shù)字簽名或數(shù)字簽名方案是用于證明數(shù)字消息或文檔的真實性的數(shù)學方案。有效的數(shù)字簽名給予接收者相信該消息是由已知發(fā)送者創(chuàng)建且在傳輸中未被改變的原因。數(shù)字簽名通常用于軟件分發(fā),且期望將數(shù)字簽名用于固件映像分發(fā)。附圖
簡述圖I是現(xiàn)有技術(shù)的經(jīng)簽名的固件映像的框圖。圖2A是根據(jù)本發(fā)明的一個實施例由根固件代碼所有者簽名的固件映像的框圖。圖2B是圖2A的固件映像的框圖,示出根據(jù)本發(fā)明的一個實施例的用于根固件代碼所有者的訪問控制列表。圖2C是根據(jù)本發(fā)明的一個實施例由根固件代碼所有者和OEM固件代碼所有者兩者簽名的固件映像的框圖。圖2D是圖2C的固件映像的框圖,示出根據(jù)本發(fā)明的一個實施例的用于OEM固件代碼所有者的訪問控制列表。圖2E是根據(jù)本發(fā)明的一個實施例由根固件代碼所有者、OEM固件代碼所有者以及渠道分發(fā)器固件代碼所有者簽名的固件映像的框圖。圖2F是圖2E的固件映像的框圖,示出根據(jù)本發(fā)明的一個實施例的用于渠道分發(fā)器固件代碼所有者的訪問控制列表。圖3是示出用于簽名并授予更新圖2A至2F的經(jīng)簽名的固件映像的權(quán)力的過程的流程圖。圖4是根據(jù)本發(fā)明的一個實施例更新圖2A至2F及圖3的經(jīng)簽名的固件映像的訪問控制列表的方法的流程圖。
圖5是根據(jù)本發(fā)明的一個實施例更新圖2A至2F及圖3的經(jīng)簽名的固件映像的方法的流程圖。圖6是根據(jù)本發(fā)明的一個實施例的配置成使固件映像能夠被多個占用者(tenant)簽名的系統(tǒng)的框圖。詳細描述本發(fā)明的實施例可提供用于部署經(jīng)簽名的根固件映像的方法、設(shè)備、系統(tǒng)和計算機程序產(chǎn)品,該經(jīng)簽名的根固件映像包括由系統(tǒng)分發(fā)渠道中的不同實體簽名的代碼模塊。在一個實施例中,方法包括獲取經(jīng)簽名的固件映像,該經(jīng)簽名的固件映像包括由第一代碼所有者簽名的第一代碼模塊和由第二代碼所有者簽名的第二代碼模塊。該方法還包括獲取經(jīng)更新的第一代碼模塊,其包括用于該第一代碼模塊的經(jīng)更新的代碼;驗證經(jīng)更新的第一代碼模塊是由第一代碼所有者簽名;以及響應(yīng)于驗證經(jīng)更新的第一代碼模塊是由第一代碼所有者簽名而利用經(jīng)更新的第一代碼模塊更新經(jīng)簽名的固件映像。經(jīng)簽名的固件映像還可包括訪問控制列表,該訪問控制列表授權(quán)由第一代碼所有者對第一代碼模塊的更新以及由第二代碼所有者對第二代碼模塊的更新。該方法還可包括獲取訪問控制令牌,其中該訪問控制令牌包括用于第三代碼所有者的公鑰以及第三代碼所有者更新經(jīng)簽名的固件映像的第三代碼模塊的授權(quán);驗證訪問控制令牌是由來自訪問控制列表的經(jīng)授權(quán)的代碼所有者簽名的;驗證經(jīng)授權(quán)的代碼所有者被授權(quán)更新第三代碼模塊;以及更新訪問控制列表以包括用于第三代碼的公鑰和第三代碼所有者更新第三代碼模塊的授權(quán)。該方法還可包括接收來自第三代碼所有者的第三代碼模塊;驗證經(jīng)更新的第三代碼模塊是由第三代碼所有者簽名,以及響應(yīng)于驗證經(jīng)更新的第三代碼模塊是由第三代碼所有者簽名而利用經(jīng)更新的第三代碼模塊更新經(jīng)簽名的固件模塊。本發(fā)明改進傳統(tǒng)的BIOS/平臺固件單片映像更新過程并允許不同的所有者簽名各固件代碼模塊。本發(fā)明使得能夠?qū)μ囟ǖ腂IOS/平臺固件代碼模塊/驅(qū)動器或應(yīng)用執(zhí)行更新。隨著平臺固件變得越來越復雜并且提供諸如安全特征之類的重要功能,BIOS和平臺固件中的缺陷現(xiàn)在可被立即改正并且由企業(yè)管理服務(wù)器提供,而不需要最初的設(shè)備制造提供新的單片映像用于系統(tǒng)閃存的整個BIOS-平臺固件區(qū)。在本說明書中對本發(fā)明的“一個實施例”或“實施例”的引用意味著結(jié)合該實施例描述的特定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個實施例中。因此,在貫穿本說明書的各個地方,短語“在一個實施例中”或“根據(jù)一個實施例”等的出現(xiàn)不一定都指代同一實施例。
為了解釋的目的,闡述了特定配置和細節(jié),以便提供對本發(fā)明的全面理解。然而,對于本領(lǐng)域的普通技術(shù)人員顯然易見的是沒有本文介紹的特定細節(jié)也可實施本發(fā)明的實施例。此外,可省略或簡化公知的特征以免使本發(fā)明晦澀??韶灤┱f明書給出各示例。它們僅僅是本發(fā)明的特定實施例的描述。本發(fā)明的范圍不限于給出的示例。隨著惡意軟件篡改的發(fā)展,期望諸如固件映像之類的系統(tǒng)軟件提供者確認固件映像的給定版本是真實的且未受到篡改。根據(jù)諸如李維斯特-薩莫爾-阿德曼(RivestShamir Adleman(RSA))加密算法之類的加密方案(其提供公鑰和私鑰來加密并簽名數(shù)據(jù)),通常提供這種認證作為固件映像文件的數(shù)字簽名。本領(lǐng)域的技術(shù)人員將理解本文所述的發(fā)明不限于RSA加密算法下的數(shù)字簽名,而是任何提供用于確認真實性的數(shù)字簽名的方法都在本發(fā)明的范圍內(nèi)。數(shù)字簽名方案通常包括三種算法(I)密鑰生成算法,其從一組可能的私鑰中隨機統(tǒng)一地選擇私鑰。該算法輸出私鑰和相應(yīng)的公鑰。(2)簽名算法,給出消息和私鑰,該簽名算法產(chǎn)生簽名。(3)簽名驗證算法,給出消息、公鑰和簽名,該簽名驗證算法接受或拒絕消息的真實性聲明。需要兩個主要的屬性。第一,由固定消息和固定私鑰生成的簽名應(yīng)通過 利用相應(yīng)的公鑰驗證該消息的真實性。第二,不具有私鑰的一方不可能計算生成有效簽名。圖I是現(xiàn)有技術(shù)的經(jīng)簽名的固件映像的框圖。通過單個實體的私鑰120簽名根固件映像110。僅私鑰120的所有者可更新根固件映像110。例如,假設(shè)系統(tǒng)制造者已經(jīng)使用系統(tǒng)制造者的私鑰120簽名根固件映像110。如果在根固件映像110被簽名之后部署鏈中的其它實體(諸如OEM和渠道客戶)需要對根固件映像110內(nèi)包含的模塊的更新,則這些實體必須將他們的定制固件映像代碼模塊提供給私鑰120的所有者,以便被包含在根固件映像110的后繼版本中。這一實現(xiàn)需要用于根據(jù)外部實體的進度維持定制固件映像模塊和部署已更新的根固件映像110的基礎(chǔ)結(jié)構(gòu)。由私鑰120的所有者之外的實體提供的定制固件映像代碼模塊允許的安全漏洞危及整個根固件映像110的安全。這種安全漏洞僅可由私鑰120的所有者改正。為此,目前大多數(shù)實現(xiàn)僅通過分發(fā)渠道的較低端處的實體簽名。由系統(tǒng)制造者和/或OEM提供的根固件映像代碼模塊通常未被簽名以避免上述問題。然而,在沒有由很多固件映像代碼模塊的提供者的數(shù)字簽名的情況下,系統(tǒng)的終端用戶可認為固件映像較不可靠。圖2A是根據(jù)本發(fā)明的一個實施例由根固件代碼所有者簽名的固件映像的框圖。在此示例中,諸如系統(tǒng)制造者(在本文中稱為“根”)之類的根固件映像的最初所有者已經(jīng)利用根私鑰220在五個固件卷(FV1211、FV2213、FV3215、FV4217和FV5219)中簽名每個固件映像代碼模塊。簽名代碼模塊可涉及將數(shù)字簽名附加到代碼模塊。在本文所示的示例中,代碼模塊的簽名被示為與包含代碼模塊的固件卷相關(guān)聯(lián)的簽名。類似地,更新給定代碼模塊的權(quán)力被描述為更新包含代碼模塊的固件卷的權(quán)力。本領(lǐng)域的技術(shù)人員將理解一個以上的代碼模塊可包含于給定的固件卷中,且固件卷中的不同代碼模塊可具有不同的簽名和/或更新權(quán)力,但是為了簡單起見,代碼模塊和固件卷在本文中被描述為一對一關(guān)系。表230A提供了包括用于根代碼所有者“根”的公鑰231和用于代碼所有者“根”的訪問控制列表(ACL) 232的安全信息。ACL 232指示由公鑰231所擁有的固件映像代碼模塊(即,固件卷)。在圖2B中提供關(guān)于訪問控制列表232的進一步細節(jié)。圖2B是圖2A的固件映像的框圖,示出根據(jù)本發(fā)明的一個實施例的用于根固件代碼所有者“根”的訪問控制列表。在所示的示例中,ACL 232包含指向五個固件卷FV1211、FV2213、FV3215、FV4217和FV5219的每一個中的代碼模塊的指針232A至232E。參考以下的圖3進一步詳細地示出并解釋這些指針。圖2C是根據(jù)本發(fā)明的一個實施例由根固件代碼所有者和OEM固件代碼所有者(在本文中稱為“OEM”)兩者簽名的固件映像的框圖。在該示例中,固件映像的代碼模塊的第二所有者(諸如圖2A中持有公鑰220的系統(tǒng)制造者的OEM客戶)已經(jīng)提供定制的根固件模塊。例如,OEM固件代碼所有者可提供計算機系統(tǒng)作為刀片服務(wù)器產(chǎn)品,且由代碼所有者“OEM”提供的固件映像代碼模塊可將固件配置成工作在刀片服務(wù)器配置下。在圖2C,第二所有者“OEM”已經(jīng)利用OEM私鑰240簽名固件映像(現(xiàn)在稱為OEM固件映像210B)內(nèi)所選的固件卷。在該示例中,已經(jīng)通過OEM私鑰240簽名固件卷FV3 215和FV5 219。表230B提供包括用于“OEM”代碼所有者的公鑰241和指示由公鑰241所擁有的固件映像代碼模塊(即,固件卷)的訪問控制列表(ACL) 242的新安全信息。在圖2D中提供關(guān)于ACL 242的進一步細節(jié)。 圖2D是圖2C的固件映像的框圖,示出根據(jù)本發(fā)明的一個實施例的用于“OEM”固件代碼所有者的訪問控制列表。在所示示例中,ACL 242包含指向兩個固件卷FV3215和FV5219中的每一個的相應(yīng)指針242C和242E。該新的安全信息是表230B的一部分,該表230B還包括參考圖2A和2B所述的固件代碼所有者“根”的公鑰231和ACL232。然而,根固件代碼所有者“根”授權(quán)固件代碼所有者“OEM”更新FV3215和FV5219,且ACL232的指針232C和232E被ACL242的指針242C和242E覆蓋(override)。以下參考圖3至5進一步描述授予更新固件代碼模塊的權(quán)力的過程。圖2E是根據(jù)本發(fā)明的一個實施例由根固件代碼所有者“根”、OEM固件代碼所有者“OEM”以及渠道分發(fā)器固件代碼所有者“Chnl”簽名的固件映像的框圖。在該示例中,固件映像的代碼模塊的第三所有者(諸如圖2B中持有私鑰240的OEM的渠道客戶)已經(jīng)提供定制的根固件模塊。第三所有者“Chnl”已經(jīng)利用渠道(Chnl)私鑰250簽名固件映像(現(xiàn)在稱為渠道客戶固件映像210C)內(nèi)的一個固件卷。在該示例中,已經(jīng)通過Chnl私鑰250簽名固件卷FV5219。表230C提供包括用于渠道客戶所有者“Chnl”的公鑰251和指示由公鑰251所擁有的固件映像代碼模塊(即,固件卷)的訪問控制列表(ACL) 252的新安全信息。圖2F是圖2E的固件映像的框圖,示出根據(jù)本發(fā)明的一個實施例的用于渠道分發(fā)器固件代碼所有者“Chnl”的訪問控制列表。在所示示例中,ACL 252包含指向固件卷FV5219的指針252E。該新的安全信息是表230C的一部分,該表230C還包括參考圖2A和2B所述的根固件代碼所有者“根”的公鑰231和ACL232以及圖2C和2D所述的固件代碼所有者“OEM”的公鑰241和ACL242。指針252E覆蓋固件代碼所有者“根”的ACL232的指針232E和固件代碼所有者“OEM”的ACL 242的242E。圖3是示出用于簽名并授予更新圖2A至2F的經(jīng)簽名的固件映像的權(quán)力的過程的流程圖。最初,如參考圖2A的根固件映像210A所述,已經(jīng)由根固件代碼所有者“根”簽名根固件映像310A。表330A指示具有公鑰331的實體(其對應(yīng)于具有私鑰320的“根”所有者)具有包含指針332A至332E的訪問控制列表332,這些指針允許公鑰331的所有者更新包含在每個固件卷FVl 311、FV2313、FV3315、FV4317和FV5319中的代碼模塊。在動作3. 1,私鑰320的所有者“根”創(chuàng)建經(jīng)簽名的令牌360,以便授權(quán)對根固件映像310A的后繼更新。通過簽名令牌360,私鑰320的所有者,即“根”固件代碼所有者將“根”公鑰321與令牌360相關(guān)聯(lián)。創(chuàng)建令牌360以包括被授予權(quán)力的信息,諸如被授權(quán)來更新根固件映像310A的實體的公鑰362和指示可通過相應(yīng)的公鑰362來更新的根固件映像310A內(nèi)的固件模塊的訪問控制列表364。在該示例中,固件代碼所有者“OEM”的公鑰362已經(jīng)被包含在令牌360中,且訪問控制列表364允許OEM公鑰362的所有者更新固件卷FV3315 和 FV5 319。在動作3. 2,在更新根固件映像310A之前,驗證試圖通過令牌360授予的權(quán)力。根固件映像310A查閱表330A以確保用于令牌360的公鑰的所有者(S卩,令牌公鑰321的所有者“根”)被授權(quán)更新令牌360內(nèi)包含的固件卷。在該示例中,表330A被查閱以確保用于令牌360的公鑰321的所有者(“根”)出現(xiàn)在表330A中,且用于令牌360的公鑰321的所有者(“根”)具有更新固件卷FV3 315和FV5 319的權(quán)力。在動作3. 3,在證實用于令牌360的公鑰321的所有者“根”具有更新固件卷FV3315和FV5 319的權(quán)力之后,F(xiàn)V3 315和FV5 319中的代碼被更新以形成OEM固件映像310B。 OEM固件映像310B內(nèi)的表330B也被更新以包括用于“OEM”固件代碼所有者的公鑰作為公鑰333以及相應(yīng)的訪問控制列表(ACU334。作為對表330B進行更新的結(jié)果,訪問控制列表現(xiàn)在包括用于“根”固件代碼所有者的三個指針,指向FVl 311的指針332A、指向FV2 313的指針332B和指向FV4 317的指針332D,以及用于“OEM”固件代碼所有者的兩個指針,指向FV3 315的指針334A和指向FV5 319的指針334E。在動作3. 4,“0EM”固件代碼所有者(私鑰340的所有者)創(chuàng)建經(jīng)簽名的令牌370以便授權(quán)對OEM固件映像310B的后繼更新。通過簽名令牌370,私鑰340的所有者,即“OEM”固件代碼所有者將“OEM”公鑰341與令牌370相關(guān)聯(lián)。創(chuàng)建令牌370以包括被授予權(quán)力的信息,諸如被授權(quán)來更新OEM固件映像310B的實體的公鑰372和指示可通過相應(yīng)的公鑰372來更新的OEM固件映像310B內(nèi)的固件模塊的訪問控制列表374。在該示例中,固件代碼所有者“Chnl”的公鑰372已經(jīng)被包含在令牌370中,且訪問控制列表374允許Chnl公鑰372的所有者更新固件卷FV5 319。在動作3. 5,在更新OEM固件映像310B之前,驗證試圖通過令牌370授予的權(quán)力。OEM固件映像310B查閱表330B以確保用于令牌370的公鑰341的所有者被授權(quán)更新令牌370中包含的固件卷。在該示例中,表330B被查閱以確保用于令牌370的公鑰341的所有者(“OEM”)出現(xiàn)在表330B中,且用于令牌370的公鑰341的所有者(“OEM”)具有更新固件卷FV5 319的權(quán)力。在動作3. 6,在證實用于令牌360的公鑰的所有者“OEM”具有更新固件卷FV5 319的權(quán)力之后,F(xiàn)V5 319中的代碼被更新以形成渠道客戶固件映像310C。渠道客戶固件映像310C內(nèi)的表330C也被更新以包括用于“Chnl”固件代碼所有者的公鑰作為公鑰335以及相應(yīng)的訪問控制列表(ACL)334。作為對表330C進行更新的結(jié)果,訪問控制列表現(xiàn)在包括用于“根”固件代碼所有者的三個指針,即指向FVl 311的指針332A、指向FV2 313的指針332B和指向FV4 317的指針332D ;用于“OEM”固件代碼所有者的一個指針,即指向FV3 315的指針334C ;以及用于“Chnl”固件代碼所有者的一個指針,即指向FV5 319的指針336E。圖4是根據(jù)本發(fā)明的一個實施例更新圖2A至2F及圖3的經(jīng)簽名的固件映像的訪問控制列表的方法的流程圖。通過諸如圖3的經(jīng)簽名的根固件映像310A之類的現(xiàn)有固件映像的所有者執(zhí)行圖4描述的步驟,以向另一個實體授予更新經(jīng)簽名的固件映像的權(quán)力。授予更新固件映像的權(quán)力的實體在本文中被稱為“授予實體”。在先前圖2A至2F的示例中,圖4中描述的步驟可通過“根”固件代碼所有者執(zhí)行以在動作3. 2和3. 3中向“OEM”固件代碼所有者授予權(quán)力。類似地,圖4的步驟可由“OEM”固件代碼所有者執(zhí)行以在動作3. 5和3. 6向“Chnl”固件代碼所有者授予權(quán)力。圖4的步驟將用于更新現(xiàn)有固件映像的訪問控制列表,諸如根固件映像310A的訪問控制列表330A或OEM固件映像310B的訪問控制列表 330B。在“獲取訪問控制(AC)正向令牌”步驟410中,從授予實體獲取諸如圖3的令牌360或令牌370之類的訪問控制令牌。如之前參考圖2A至2F和圖3所述,諸如圖3的令牌360或令牌370之類的訪問控制令牌可由分發(fā)渠道中的一個實體創(chuàng)建以授權(quán)分發(fā)渠道中的后續(xù)實體修改固件映像的給定版本。利用授予實體的私鑰對訪問控制令牌進行簽名,且授予實體的公鑰因此與訪問控制令牌相關(guān)聯(lián)。一旦從分發(fā)渠道中的授予實體獲取訪問控制令牌,控制前進到“標識授予實體并且使授予實體的公鑰的簽名與ACL匹配”的步驟420。在“標識授予實體并且使授予實體的公鑰的簽名與ACL匹配”的步驟420,授予實體被標識為已經(jīng)對訪問控制令牌進行簽名的實體。在圖3的示例中,在執(zhí)行動作3. 2時,授予實體是“根”固件代碼所有者。對照將針對其授予更新權(quán)力的固件映像的訪問控制列表中出現(xiàn)的公鑰來匹配與訪問控制令牌相關(guān)聯(lián)的公鑰。如果與訪問控制令牌相關(guān)聯(lián)的公鑰出現(xiàn)在固件映像的訪問控制列表中,則控制前進到“驗證AC正向令牌的簽名”步驟430。在“驗證AC正向令牌的簽名”步驟430處,授予實體的公鑰用于驗證訪問控制令牌的簽名。為了執(zhí)行該簽名驗證,可從經(jīng)簽名的訪問控制令牌計算散列值。公鑰也可用于解密數(shù)字簽名和經(jīng)簽名的數(shù)據(jù),然后可從經(jīng)解密的數(shù)據(jù)計算另一個散列值。如果兩個計算出的散列值匹配,則數(shù)字簽名可被視為有效。在已經(jīng)驗證訪問控制令牌的簽名之后,控制前進到“標識需要改變ACL的代碼模塊”步驟440。在“標識需要改變ACL的代碼模塊”步驟440處,標識將針對其授予權(quán)力的固件卷。在動作3. 2的示例中,在訪問控制令牌360中標識的固件卷是固件卷FV3 315和FV5 319。一旦標識固件卷,控制前進到“驗證授予實體被授權(quán)改變AC”步驟450。在“驗證授予實體被授權(quán)改變AC”步驟450處,作出授予實體是否被授權(quán)改變現(xiàn)有固件映像的訪問控制列表的確定。如上所述,授予實體,即“根”固件代碼所有者已經(jīng)被指定為固件卷FVl 311至FV5 319的訪問控制列表的所有者。因此,授予實體被授權(quán)改變這些固件卷的訪問控制列表。控制然后前進到“更新ACL :輸入新實體的公鑰并更新代碼模塊的ACL ”步驟460。在“更新ACL :輸入新實體的公鑰并更新代碼模塊的ACL”步驟460處,被授予權(quán)力的實體(在本示例中為“OEM”固件代碼所有者)的公鑰被加至訪問控制列表,并且固件卷FV3315和FV5 319的訪問控制列表被更新。更新固件卷FV3 315和FV5 319的權(quán)力已經(jīng)被授予“OEM”固件代碼所有者。圖5是根據(jù)本發(fā)明的一個實施例更新圖2A至2F及圖3的經(jīng)簽名的固件映像的方法的流程圖。在“處理經(jīng)簽名的模塊”步驟510,諸如根固件映像310A之類的現(xiàn)有固件映像接收對處理經(jīng)簽名的模塊的請求。處理經(jīng)簽名的模塊可涉及解開諸如經(jīng)簽名的模塊中包含的若干固件卷之類的信息和/或解開用于簽名該經(jīng)簽名的模塊的密鑰??筛鶕?jù)圖5的步驟處理每個經(jīng)簽名的代碼模塊??刂魄斑M到“使公鑰的簽名與ACl匹配以及標識更新實體”步驟 520。在“使公鑰的簽名與ACl匹配以及標識更新實體”步驟520處,將與用于簽名該經(jīng)簽名的模塊私鑰相對應(yīng)的公鑰同現(xiàn)有固件映像的訪問控制列表進行比較,并且標識更新實體。如果經(jīng)簽名的模塊的公鑰出現(xiàn)在現(xiàn)有固件映像的訪問控制列表中,則控制前進到“驗證模塊的簽名”步驟530。在“驗證模塊的簽名”步驟530,驗證模塊的簽名。為了執(zhí)行該簽名驗證,可從經(jīng)簽名的模塊計算散列值。公鑰也可用于解密數(shù)字 簽名和經(jīng)簽名的數(shù)據(jù),然后可從經(jīng)解密的數(shù)據(jù)計算另一個散列值。如果兩個計算出的散列值匹配,則數(shù)字簽名可被視為有效。在已經(jīng)驗證模塊的簽名之后,控制前進到“標識用于更新的代碼模塊”步驟540。在“標識用于更新的代碼模塊”步驟540,標識現(xiàn)有固件映像中要更新的固件卷中的代碼模塊。一旦標識固件卷中的代碼模塊,則控制前進到“驗證更新實體被授權(quán)更新所請求的代碼模塊”步驟550。在“驗證更新實體被授權(quán)更新所請求的代碼模塊”步驟550,確定更新實體是否被授權(quán)更新所請求的固件卷。如果更新實體被授權(quán),則控制前進到“更新代碼模塊”步驟560。在“更新代碼模塊”步驟560,更新現(xiàn)有固件映像中的代碼模塊。圖6是根據(jù)本發(fā)明的一個實施例的配置成使固件映像能夠被多個代碼所有者簽名的系統(tǒng)的框圖。對應(yīng)于主機計算機系統(tǒng)的平臺600包括經(jīng)由臺式機管理接口(DMI) 611連接到芯片組620的處理器。處理器610向平臺600提供處理能力,且可以是單核或多核處理器,且一個以上的處理器可包含在平臺600中。處理器610可經(jīng)由一條或多條系統(tǒng)總線、通信路徑或介質(zhì)(未示出)連接到平臺600的其它組件。芯片組620包括可管理性引擎(ME)630,其可被實現(xiàn)為獨立于主機處理器610操作的嵌入式微處理器以管理平臺600的配置和操作。在一個實施例中,處理器610在主機操作系統(tǒng)(未示出)的指導下操作,而可管理性引擎(ME) 630提供不能被主機操作系統(tǒng)訪問的安全且隔離的環(huán)境。在一個實施例中,可管理性引擎(ME)630認證用戶、控制對外圍設(shè)備的訪問、管理用于保護存儲在平臺600的存儲設(shè)備上的數(shù)據(jù)的加密密鑰,并經(jīng)由網(wǎng)絡(luò)控制器660提供至企業(yè)服務(wù)670的接口。利用企業(yè)服務(wù)670,可管理性引擎(ME) 630保持與用于諸如平臺600之類的平臺的配置和管理的企業(yè)范圍策略一致,包括根據(jù)本發(fā)明的一個實施例提供多所有者簽名的固件更新管理器。多所有者簽名的固件更新管理器可被實現(xiàn)為由可管理性引擎(ME) 630執(zhí)行的固件。ME630和企業(yè)服務(wù)670之間的通信經(jīng)由帶外通信信道671發(fā)生。在一個實施例中,帶外通信信道671是主機系統(tǒng)上的可管理性引擎(ME)630和管理主機系統(tǒng)的企業(yè)服務(wù)670之間的安全通信信道。實現(xiàn)平臺600和企業(yè)服務(wù)670之間的安全通信的加密/解密密鑰可在芯片組620和可管理性引擎(ME) 630的制造期間被存儲在圖6的閃存存儲器690上。
在圖6所示的實施例中,可管理性引擎(ME) 630經(jīng)由可管理性弓I擎控制器接口(MECI>631耦合到微控制器640。在一個實施例中,微控制器640是執(zhí)行存儲命令解碼和其它加速操作的通用控制器。在所示的實施例中,可管理性引擎(ME) 630控制微控制器640的行為,其進而控制存儲控制器650的行為。微控制器640包括存儲控制器650的驅(qū)動器以及與任何盤加密功能有關(guān)的邏輯。存儲控制器650是諸如存儲設(shè)備652之類的存儲設(shè)備的控制器,且使微控制器640和ME630能訪問存儲在存儲設(shè)備652上的數(shù)據(jù)。平臺600還包括存儲設(shè)備,諸如動態(tài)隨機存取存儲器(DRAM)612、芯片組620內(nèi)的靜態(tài)隨機存取存儲器(SRAM)622以及可經(jīng)由存儲控制器650訪問的存儲設(shè)備652。這些存儲設(shè)備可包括隨機存取存儲器(RAM)以及只讀存儲器(ROM)。為了本公開的目的,術(shù)語“ROM”可一般地用于指代非易失性存儲器設(shè)備,諸如可擦除可編程ROM (EPR0M)、電可擦除可編程ROM(EEPROM)、閃存ROM、閃存等。存儲設(shè)備652可包括大容量存儲設(shè)備,諸如集成驅(qū)動電子(IDE)硬盤驅(qū)動器和/或其它設(shè)備或介質(zhì),諸如軟盤、光存儲、帶、閃存、存儲器棒、數(shù)字視頻盤、生物學存儲等??山?jīng)由閃存接口 691由芯片組620訪問閃存690??杉用艽鎯υ诖鎯υO(shè)備652上和/或存儲器設(shè)備DRAM612、SRAM622以及閃存690中的數(shù)據(jù)。 閃存690包含用于初始化平臺600的固件。該初始化固件包括基本輸入/輸出系統(tǒng)(BIOS)固件692以標識和初始化系統(tǒng)組件硬件(諸如視頻顯示器卡和硬盤)以及包括可管理性引擎(ME) 630的一些其它硬件設(shè)備。BIOS固件692使平臺600的系統(tǒng)組件硬件準備以已知的低能力狀態(tài)操作,所以存儲在各種介質(zhì)上的其它軟件程序(包括操作系統(tǒng))可被加載、執(zhí)行并給予對平臺600的控制。BIOS固件692包括BI0S/ME通信模塊693,其實現(xiàn)在引導過程中可管理性引擎(ME) 630的最初配置。在一個實施例中,可管理性引擎(ME) 630利用BI0S/ME通信模塊693登記,以在為平臺600加載操作系統(tǒng)之前接收通知。該通知使得可管理性引擎(ME) 630能在加載操作系統(tǒng)的準備中執(zhí)行某些指令。閃存690還包括用于配置網(wǎng)絡(luò)控制器660的網(wǎng)絡(luò)控制器固件695以及用于配置芯片組620的芯片組固件696。閃存690還包含數(shù)據(jù)區(qū)698。在一個實施例中,數(shù)據(jù)區(qū)698被加密且可僅被可管理性引擎(ME)630讀取。由ME630使用以提供BIOS/引導固件多所有者管理服務(wù)的信息可被存儲在閃存690的數(shù)據(jù)區(qū)698中或被存儲在存儲設(shè)備652上。處理器610還可通信耦合到附加組件,諸如視頻控制器、小型計算機系統(tǒng)接口(SCSI)控制器、網(wǎng)絡(luò)控制器、通用串行總線(USB)控制器、諸如鍵盤和鼠標等輸入設(shè)備。平臺600還可包括一個或多個橋或中樞,諸如存儲器控制器中樞、輸入/輸出(1/0)控制器中樞、PCI根橋等,以便通信耦合各種系統(tǒng)組件。正如本文中所使用的,術(shù)語“總線”可用于指代共享通信路徑以及點對點路徑。諸如網(wǎng)絡(luò)控制器660之類的一些組件可被實現(xiàn)為具有用于與總線通信的接口的適配器卡(例如,PCI連接器)。在一個實施例中,利用諸如可編程或不可編程邏輯設(shè)備或陣列、專用集成電路(ASIC)、嵌入式計算機、智能卡等組件,可將一個或多個設(shè)備實現(xiàn)為嵌入式控制器。正如本文所使用的,術(shù)語“處理系統(tǒng)”和“數(shù)據(jù)處理系統(tǒng)”旨在廣泛地包含單個機器或在一起操作的通信耦合的機器或設(shè)備的系統(tǒng)。示例處理系統(tǒng)包括但不限于分布式計算系統(tǒng)、超級計算機、高性能計算系統(tǒng)、計算群、大型計算機、迷你計算機、客戶-服務(wù)器系統(tǒng)、個人計算機、工作站、服務(wù)器、便攜式計算機、膝上型計算機、平板計算機、電話、個人數(shù)字助理(PDA)、手持設(shè)備、諸如聽覺和/或視頻設(shè)備之類的娛樂設(shè)備以及用于處理或發(fā)送信息的其它設(shè)備。平臺600可至少部分地由來自諸如鍵盤、鼠標等常規(guī)輸入設(shè)備的輸入來控制和/或由接收自另一個機器、生物測定反饋或其它輸入源或信號的命令來控制。平臺600可利用至一個或多個遠程數(shù)據(jù)處理系統(tǒng)(未示出)的一個或多個連接,諸如通過網(wǎng)絡(luò)接口控制器(NIC) 660、調(diào)制解調(diào)器或其它通信端口或耦合。平臺600可通過諸如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、以太網(wǎng)、因特網(wǎng)等物理和/或邏輯網(wǎng)絡(luò)互連到其它處理系統(tǒng)(未示出)。涉及網(wǎng)絡(luò)的通信可利用各種有線和/或無線短程或長程載波和協(xié)議,包括射頻(RF)、衛(wèi)星、微波、電氣與電子工程師協(xié)會(IEEE) 802. 11、藍牙、光、紅外、電纜、激光等。 本文中公開的機構(gòu)的實施例可按照硬件、軟件、固件或此類實現(xiàn)方法的組合來實現(xiàn)。本發(fā)明的實施例可被實現(xiàn)為在包括至少一個處理器、數(shù)據(jù)儲存器系統(tǒng)(包括易失性和非易失性存儲器和/或儲存元件)、至少一個輸入設(shè)備以及至少一個輸出設(shè)備的可編程系統(tǒng)上執(zhí)行的計算機程序??蓪⒊绦虼a施加到輸入數(shù)據(jù)以執(zhí)行本文所述的功能并生成輸出信息。本發(fā)明的 實施例還可包括機器可訪問介質(zhì),該機器可訪問介質(zhì)包含用于執(zhí)行本發(fā)明的操作的指令,或包含限定本文中描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特征的諸如HDL之類的設(shè)計數(shù)據(jù)。此類實施例也可被稱為程序產(chǎn)品。此類機器可訪問存儲介質(zhì)可包括但不限于通過機器或設(shè)備制造或形成的粒子的有形排列,包括存儲介質(zhì),諸如硬盤;包括軟盤、光盤、壓縮盤只讀存儲器(CD-ROM)、可重寫壓縮盤(CD-RW)以及磁光盤的任何其它類型的盤;諸如只讀存儲器(ROM)之類的半導體器件;諸如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)之類的隨機存取存儲器(RAM);可擦除可編程只讀存儲器(EPROM);閃存可編程存儲器(FLASH);電可擦除可編程只讀存儲器(EEPROM);磁卡或光卡;或適于存儲電子指令的任何其它類型的介質(zhì)??砂凑找阎绞綄⑤敵鲂畔?yīng)用于一個或多個輸出設(shè)備。為了此應(yīng)用的目的,處理系統(tǒng)包括具有諸如例如數(shù)字信號處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器之類的處理器的任意系統(tǒng)。程序可按照高級面向過程或面向?qū)ο蟮木幊陶Z言來實現(xiàn),以與處理系統(tǒng)通信。程序在需要時還可按照匯編或機器語言來實現(xiàn)。實際上,本文中描述的機制在范圍上不限于任何特定編程語目。在任何情況下,該語目可以是編譯或解釋語目。本文提供的是用于部署多用戶簽名固件的方法和系統(tǒng)的實施例。盡管已經(jīng)示出并描述了本發(fā)明的具體實施例,但本領(lǐng)域的技術(shù)人員顯然可作出很多改變、變化和修改而不背離所附權(quán)利要求的范圍。因此,本領(lǐng)域的技術(shù)人員將意識到可作出變化和修改而不背離本發(fā)明在其較寬方面的范圍。所附權(quán)利要求將在其范圍內(nèi)包含落在本發(fā)明的真實范圍和精神內(nèi)的所有這些改變、變化和修改。
權(quán)利要求
1.一種計算機實現(xiàn)的方法,包括 獲取經(jīng)簽名的固件映像,所述經(jīng)簽名的固件映像包括由第一代碼所有者簽名的第一代碼模塊和由第二代碼所有者簽名的第二代碼模塊; 獲取經(jīng)更新的第一代碼模塊,所述經(jīng)更新的第一代碼模塊包括用于所述第一代碼模塊的經(jīng)更新的代碼; 驗證所述經(jīng)更新的第一代碼模塊是由第一代碼所有者簽名;以及響應(yīng)于驗證所述經(jīng)更新的第一代碼模塊是由第一代碼所有者簽名而利用經(jīng)更新的第一代碼模塊更新經(jīng)簽名的固件映像。
2.如權(quán)利要求I所述的方法,其特征在于 所述經(jīng)簽名的固件映像還包括訪問控制列表;以及 所述訪問控制列表授權(quán)由第一代碼所有者對第一代碼模塊的更新以及由第二代碼所有者對第二代碼模塊的更新。
3.如權(quán)利要求2所述的方法,其特征在于,還包括 獲取訪問控制令牌,其中所述訪問控制令牌包括用于第三代碼所有者的公鑰和對第三代碼所有者更新所述經(jīng)簽名的固件映像的第三代碼模塊的授權(quán); 驗證所述訪問控制令牌由來自所述訪問控制列表的經(jīng)授權(quán)代碼所有者簽名; 驗證經(jīng)授權(quán)的代碼所有者被授權(quán)更新第三代碼模塊;以及 更新訪問控制列表以包括第三代碼所有者的公鑰以及對第三代碼所有者更新第三代碼模塊的授權(quán)。
4.如權(quán)利要求3所述的方法,其特征在于,還包括 從第三代碼所有者接收經(jīng)更新的第三代碼模塊; 驗證所述經(jīng)更新的第三代碼模塊是由第三代碼所有者簽名;以及響應(yīng)于驗證所述經(jīng)更新的第三代碼模塊是由第三代碼所有者簽名而利用經(jīng)更新的第三代碼模塊更新經(jīng)簽名的固件映像。
5.如權(quán)利要求I所述的方法,其特征在于,還包括 在更新經(jīng)簽名的固件映像之前,驗證第一代碼所有者被授權(quán)更新第一代碼模塊。
6.一種系統(tǒng),包括 至少一個處理器;以及 耦合到所述至少一個處理器的存儲器,所述存儲器包括執(zhí)行以下的指令 獲取經(jīng)簽名的固件映像,所述經(jīng)簽名的固件映像包括由第一代碼所有者簽名的第一代碼模塊和由第二代碼所有者簽名的第二代碼模塊; 獲取經(jīng)更新的第一代碼模塊,所述經(jīng)更新的第一代碼模塊包括用于所述第一代碼模塊的經(jīng)更新的代碼; 驗證所述經(jīng)更新的第一代碼模塊是由第一代碼所有者簽名;以及響應(yīng)于驗證所述經(jīng)更新的第一代碼模塊是由第一代碼所有者簽名而利用經(jīng)更新的第一代碼模塊更新經(jīng)簽名的固件映像。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于, 所述經(jīng)簽名的固件映像還包括訪問控制列表;以及 所述訪問控制列表授權(quán)由第一代碼所有者對第一代碼模塊的更新以及由第二代碼所有者對第二代碼模塊的更新。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述指令還執(zhí)行以下 接收訪問控制令牌,其中所述訪問控制令牌包括用于第三代碼所有者的公鑰和對第三代碼所有者更新所述經(jīng)簽名的固件映像的第三代碼模塊的授權(quán); 驗證所述訪問控制令牌由來自所述訪問控制列表的經(jīng)授權(quán)代碼所有者簽名; 驗證經(jīng)授權(quán)的代碼所有者被授權(quán)更新第三代碼模塊;以及 更新訪問控制列表以包括第三代碼所有者的公鑰以及對第三代碼所有者更新第三代碼模塊的授權(quán)。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述指令還執(zhí)行以下 從第三代碼所有者接收經(jīng)更新的第三代碼模塊; 驗證所述經(jīng)更新的第三代碼模塊是由第三代碼所有者簽名;以及響應(yīng)于驗證所述經(jīng)更新的第三代碼模塊是由第三代碼所有者簽名而利用經(jīng)更新的第三代碼模塊更新經(jīng)簽名的固件映像。
10.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述指令還執(zhí)行以下 在更新經(jīng)簽名的固件映像之前,驗證第一代碼所有者被授權(quán)更新第一代碼模塊。
11.一種計算機程序產(chǎn)品,包括 計算機可讀存儲介質(zhì);以及 所述計算機可讀存儲介質(zhì)中的指令,其中所述指令在處理系統(tǒng)中執(zhí)行時導致處理系統(tǒng)執(zhí)行以下操作 獲取經(jīng)簽名的固件映像,所述經(jīng)簽名的固件映像包括由第一代碼所有者簽名的第一代碼模塊和由第二代碼所有者簽名的第二代碼模塊; 獲取經(jīng)更新的第一代碼模塊,所述經(jīng)更新的第一代碼模塊包括用于該第一代碼模塊的經(jīng)更新的代碼; 驗證所述經(jīng)更新的第一代碼模塊是由第一代碼所有者簽名;以及響應(yīng)于驗證所述經(jīng)更新的第一代碼模塊是由第一代碼所有者簽名而利用經(jīng)更新的第一代碼模塊更新經(jīng)簽名的固件映像。
12.如權(quán)利要求11所述的計算機程序產(chǎn)品,其特征在于, 所述經(jīng)簽名的固件映像還包括訪問控制列表;以及 所述訪問控制列表授權(quán)由第一代碼所有者對第一代碼模塊的更新以及由第二代碼所有者對第二代碼模塊的更新。
13.如權(quán)利要求12所述的計算機程序產(chǎn)品,其特征在于,所述指令還導致處理系統(tǒng)執(zhí)行以下操作 接收訪問控制令牌,其中所述訪問控制令牌包括用于第三代碼所有者的公鑰和對第三代碼所有者更新所述經(jīng)簽名的固件映像的第三代碼模塊的授權(quán); 驗證所述訪問控制令牌由來自所述訪問控制列表的經(jīng)授權(quán)代碼所有者簽名; 驗證經(jīng)授權(quán)的代碼所有者被授權(quán)更新第三代碼模塊;以及 更新訪問控制列表以包括第三代碼所有者的公鑰以及對第三代碼所有者更新第三代碼模塊的授權(quán)。
14.如權(quán)利要求13所述的計算機程序產(chǎn)品,其特征在于,所述指令還導致處理系統(tǒng)執(zhí)行以下操作 從第三代碼所有者接收經(jīng)更新的第三代碼模塊; 驗證所述經(jīng)更新的第三代碼模塊是由第三代碼所有者簽名;以及響應(yīng)于驗證所述經(jīng)更新的第三代碼模塊是由第三代碼所有者簽名而利用經(jīng)更新的第三代碼模塊更新經(jīng)簽名的固件映像。
15.如權(quán)利要求11所述的計算機程序產(chǎn)品,其特征在于,所述指令還導致處理系統(tǒng)執(zhí)行以下操作 在更新經(jīng)簽名的固件映像之前,驗證第一代碼所有者被授權(quán)更新第一代碼模塊。
16.一種計算機實現(xiàn)的方法,包括 創(chuàng)建由第一代碼所有者簽名的固件映像,經(jīng)簽名的固件映像包括第一代碼模塊和第二代碼模塊; 對第一代碼模塊簽名; 創(chuàng)建訪問控制令牌以向第二代碼所有者授予更新第二代碼模塊的權(quán)力; 一旦接收包括用于第二代碼模塊的更新代碼的經(jīng)更新的第二代碼模塊,驗證所述經(jīng)更新的第二代碼模塊是由第二代碼所有者簽名;以及 響應(yīng)于驗證所述經(jīng)更新的第二代碼模塊是由第二代碼所有者簽名而利用經(jīng)更新的第二代碼模塊更新經(jīng)簽名的固件映像。
全文摘要
一種用于固件映像的多所有者部署的方法、設(shè)備、系統(tǒng)和計算機程序產(chǎn)品。該方法包括獲取經(jīng)簽名的固件映像,該經(jīng)簽名的固件映像包括由第一代碼所有者簽名的第一代碼模塊和由第二代碼所有者簽名的第二代碼模塊。該方法還包括獲取經(jīng)更新的第一代碼模塊,其包括用于該第一代碼模塊的經(jīng)更新的代碼;驗證經(jīng)更新的第一代碼模塊是由第一代碼所有者簽名;以及響應(yīng)于驗證經(jīng)更新的第一代碼模塊是由第一代碼所有者簽名而利用經(jīng)更新的第一代碼模塊更新經(jīng)簽名的固件映像。經(jīng)簽名的固件映像還可包括訪問控制列表,該訪問控制列表授權(quán)由第一代碼所有者對第一代碼模塊的更新以及由第二代碼所有者對第二代碼模塊的更新。
文檔編號G06F9/06GK102934073SQ201180027397
公開日2013年2月13日 申請日期2011年6月10日 優(yōu)先權(quán)日2010年6月11日
發(fā)明者P·薩克斯庫馬, R·C·斯旺森, V·J·齊默, M·A·羅斯曼, M·布魯蘇 申請人:英特爾公司