本發(fā)明涉及安全地更新計(jì)算機(jī)平臺(tái)固件。
背景技術(shù):
在計(jì)算機(jī)系統(tǒng)上操作的第一組指令源自平臺(tái)固件。平臺(tái)固件可以包括與基本輸入/輸出系統(tǒng)、可擴(kuò)展固件、嵌入式控制器和微控制器固件相關(guān)聯(lián)的固件,以及任意其他駐留在計(jì)算機(jī)平臺(tái)內(nèi)的存儲(chǔ)單元處的這種固件。平臺(tái)固件在貫穿計(jì)算機(jī)系統(tǒng)的生命期中通常不是靜態(tài)的。如同有操作系統(tǒng)和軟件應(yīng)用的更新一樣,也有平臺(tái)固件的更新。因?yàn)楣碳噶顚?duì)許多計(jì)算機(jī)系統(tǒng)的成功操作是非常重要的,所以當(dāng)更新固件時(shí),以安全的方式進(jìn)行更新是至關(guān)重要的。
附圖說(shuō)明
本發(fā)明通過(guò)示例的方式示出并且不受附圖限制,在附圖中類似的標(biāo)記指示相似的元件,在其中:
圖1示出了能夠安全地更新平臺(tái)固件的計(jì)算機(jī)系統(tǒng)的實(shí)施例。
圖2是鎖定平臺(tái)部件中心使其不允許向系統(tǒng)管理固件存儲(chǔ)空間寫(xiě)入的過(guò)程的實(shí)施例的流程圖。
圖3a示出了開(kāi)始安全平臺(tái)固件更新程序的過(guò)程的實(shí)施例的流程圖。
圖3b示出了繼續(xù)安全平臺(tái)固件更新程序的過(guò)程的實(shí)施例的流程圖。
圖4是安全地更新在計(jì)算機(jī)系統(tǒng)中的控制器固件的過(guò)程的實(shí)施例的流程圖。
具體實(shí)施方式
公開(kāi)了能夠安全地更新平臺(tái)固件的裝置、系統(tǒng)、方法和計(jì)算機(jī)可讀介質(zhì)的實(shí)施例。
在計(jì)算機(jī)系統(tǒng)中的固件提供了用于計(jì)算機(jī)系統(tǒng)中的一個(gè)或多個(gè)設(shè)備的多種類型的初始化、管理和操作指令。固件的更新通常充滿安全漏洞。如果惡意實(shí)體能夠?qū)⒁粔K受到危害的固件提供給計(jì)算機(jī)系統(tǒng),則破壞可能是嚴(yán)重的,這是因?yàn)樵谟?jì)算機(jī)系統(tǒng)的操作期間,固件通常是低于標(biāo)準(zhǔn)的病毒級(jí)別保護(hù)的級(jí)別。因此,在平臺(tái)固件的更新期間,安全是極其重要的。
在許多實(shí)施例中,在計(jì)算機(jī)系統(tǒng)中啟動(dòng)了平臺(tái)固件鎧裝技術(shù)(platformfirmwarearmoringtechnology,pfat)模式。pfat模式限制了大多數(shù)實(shí)體更新平臺(tái)固件的能力。確切地說(shuō),pfat模式能要求在安全認(rèn)證代碼(ac)模式下由認(rèn)證代碼模塊(acm)執(zhí)行系統(tǒng)管理固件更新。在標(biāo)準(zhǔn)的操作模式中,平臺(tái)部件中心(pch)可以停止任何寫(xiě)入到達(dá)存儲(chǔ)。為了允許固件更新,邏輯可以調(diào)用acm,并且acm可以接著通過(guò)對(duì)cpu寄存器執(zhí)行特定寫(xiě)周期以解鎖固件存儲(chǔ)來(lái)用于進(jìn)行寫(xiě)入。在許多實(shí)施例中,acm是僅有的可以執(zhí)行特定寫(xiě)周期的實(shí)體,并且一旦解鎖固件存儲(chǔ),acm則是僅有的可以執(zhí)行實(shí)際固件更新的實(shí)體。此外,acm可以測(cè)量更新后的固件鏡像以使用提供給cpu的公鑰來(lái)驗(yàn)證其真實(shí)性。
圖1示出了能夠安全更新平臺(tái)固件的計(jì)算機(jī)系統(tǒng)的實(shí)施例。
示出了計(jì)算機(jī)系統(tǒng)100。計(jì)算機(jī)系統(tǒng)可以是臺(tái)式機(jī)、服務(wù)器、工作站、膝上型電腦、手持型、電視機(jī)頂盒、媒體中心、游戲控制器、集成系統(tǒng)(例如在車中),或其他類型的計(jì)算機(jī)系統(tǒng)。在若干實(shí)施例中,計(jì)算機(jī)系統(tǒng)100包括一個(gè)或多個(gè)中央處理單元(cpu),也稱為“處理器”。雖然在許多實(shí)施例中潛在地存在許多cpu,但是為了清楚,在圖1示出的實(shí)施例中僅示出了cpu102。cpu102可以是
在許多實(shí)施例中,每一個(gè)內(nèi)核包括內(nèi)部功能塊,例如一個(gè)或多個(gè)執(zhí)行單元、收回(retirement)單元、一組通用寄存器和專用寄存器等。在單線程內(nèi)核中,每一個(gè)內(nèi)核可被稱為硬件線程。當(dāng)內(nèi)核是多線程或超線程時(shí),則在每一個(gè)內(nèi)核內(nèi)操作的每一個(gè)線程也可以被稱為硬件線程。因此,運(yùn)行在計(jì)算機(jī)系統(tǒng)100中的執(zhí)行的任意單線程均可被稱作硬件線程。例如,在圖1中,如果每一個(gè)內(nèi)核是單線程的,則在系統(tǒng)中存在四個(gè)硬件線程(四個(gè)內(nèi)核)。另一方面,如果每一個(gè)內(nèi)核是多線程的并且具有同時(shí)維護(hù)兩個(gè)線程狀態(tài)的能力,則在系統(tǒng)中存在八個(gè)硬件線程(四個(gè)內(nèi)核,每一個(gè)內(nèi)核有兩個(gè)線程)。
cpu102還可以包括一個(gè)或多個(gè)高速緩存,例如高速緩存112。在許多未示出的實(shí)施例中,可以實(shí)施除了高速緩存112以外的另外的高速緩存,使得在存儲(chǔ)器和每一個(gè)內(nèi)核中的執(zhí)行單元之間存在多個(gè)級(jí)別的高速緩存。在不同的實(shí)施例中,可以用不同的方式分配高速緩存112。此外,在不同的實(shí)施例中,高速緩存112可以具有許多不同大小。例如,高速緩存112可以是8兆字節(jié)(mb)高速緩存、16mb高速緩存等。此外,在不同的實(shí)施例中,高速緩存可以直接映射高速緩存、全相聯(lián)高速緩存、多路組相聯(lián)高速緩存,或具有另一類型映射的高速緩存。在許多實(shí)施例中,高速緩存112可以包括一個(gè)在所有內(nèi)核間共享的大的部分,或者高速緩存112可以被劃分為若干個(gè)獨(dú)立的功能片(例如,對(duì)于每一個(gè)內(nèi)核劃分一個(gè)片)。高速緩存112還可以包括在所有內(nèi)核間共享的一個(gè)部分和為用于每個(gè)內(nèi)核的獨(dú)立功能片的若干個(gè)其他部分。
在許多實(shí)施例中,cpu102包括提供與系統(tǒng)存儲(chǔ)器116進(jìn)行通信的接口的集成系統(tǒng)存儲(chǔ)器控制器114。在另一未示出的實(shí)施例中,存儲(chǔ)器控制器114可以位于計(jì)算機(jī)系統(tǒng)100中的分立的其他單元。
系統(tǒng)存儲(chǔ)器116可以包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram),例如雙倍數(shù)據(jù)速率(ddr)類型的dram;非易失性存儲(chǔ)器,例如閃存、相變存儲(chǔ)器(pcm);或其它類型的存儲(chǔ)器技術(shù)。系統(tǒng)存儲(chǔ)器116可以是存儲(chǔ)待由cpu102操作的數(shù)據(jù)和指令的通用存儲(chǔ)器。此外,在計(jì)算機(jī)系統(tǒng)100內(nèi)可以有其他潛在的設(shè)備,所述設(shè)備具有讀取和寫(xiě)入系統(tǒng)存儲(chǔ)器的能力,例如能直接存儲(chǔ)器存取(dma)的i/o(輸入/輸出)設(shè)備。
將cpu102與系統(tǒng)存儲(chǔ)器116耦合的鏈路(即,總線、互連等)可以包括能夠傳輸數(shù)據(jù)、地址、控制和時(shí)鐘信息的一個(gè)或多個(gè)光纖、金屬或其他電線(即,線路)。
平臺(tái)控制器中心118(例如,i/o控制器中心)包括使得能夠在cpu102和外部i/o設(shè)備之間進(jìn)行通信的i/o接口。該中心可以包括一個(gè)或多個(gè)i/o適配器,例如i/o適配器120。i/o適配器將在cpu102內(nèi)使用的主機(jī)通信協(xié)議轉(zhuǎn)換為與特定i/o設(shè)備(例如i/o設(shè)備122)兼容的協(xié)議。給定的i/o適配器可以轉(zhuǎn)換的一些協(xié)議包括外圍部件互連(pci)、通用串行總線(usb)、ide、scsi和1394“火線”等。此外,可以有一個(gè)或多個(gè)無(wú)線協(xié)議i/o適配器。無(wú)線協(xié)議的示例有藍(lán)牙、基于ieee802.11的無(wú)線協(xié)議,和蜂窩協(xié)議等。
在許多實(shí)施例中,控制器設(shè)備124駐留在計(jì)算機(jī)系統(tǒng)100內(nèi)??刂破髟O(shè)備124可以并入多個(gè)功能。例如,raid存儲(chǔ)控制器設(shè)備可以存在于計(jì)算機(jī)系統(tǒng)100內(nèi)。raid控制器可以管理硬盤(pán)驅(qū)動(dòng)器陣列或固態(tài)硬盤(pán)(ssd)陣列??刂破髟O(shè)備的其他示例可以是分立式帶外管理引擎、嵌入式微控制器,或其它類型的控制器。
cpu內(nèi)高速接口126可以提供耦合到一個(gè)或多個(gè)另外的cpu的鏈路的接口,并且允許進(jìn)行cpu內(nèi)通信。例如,cpu內(nèi)高速接口可以是快速路徑互連或其他類似的接口。
雖然沒(méi)有示出,但是在許多實(shí)施例中,計(jì)算機(jī)系統(tǒng)100包括能夠提供使一個(gè)或多個(gè)客戶操作系統(tǒng)(os)運(yùn)行在虛擬機(jī)(vm)環(huán)境中的虛擬化環(huán)境的硬件和軟件邏輯。虛擬機(jī)監(jiān)視器(vmm)或管理程序可以在系統(tǒng)內(nèi)的邏輯中實(shí)現(xiàn),以隔離每一個(gè)vm的操作環(huán)境(即,使每一個(gè)vm和os以及運(yùn)行其中的應(yīng)用與系統(tǒng)中存在的其它vm隔離的,并且不會(huì)感知系統(tǒng)中存在的其他vm)。
在許多實(shí)施例中,在系統(tǒng)100中存在管理引擎128。管理引擎可以包括多個(gè)特征,所述特征包括涉及遠(yuǎn)程管理、安全管理和電源管理的管理邏輯。在許多實(shí)施例中,管理引擎128使用帶外(oob)通信通道,其在計(jì)算機(jī)系統(tǒng)100中運(yùn)行的操作系統(tǒng)(os)的級(jí)別之下操作。oob通道通常將能夠維持與遠(yuǎn)程系統(tǒng)的通信而不論os的狀態(tài)。在許多實(shí)施例中,雖然計(jì)算機(jī)系統(tǒng)100處于低功率狀態(tài)或完全關(guān)閉,但是oob通道也能繼續(xù)通信。在一些實(shí)施例中,管理引擎128包括
在許多實(shí)施例中,固件存儲(chǔ)在計(jì)算機(jī)系統(tǒng)100中。存儲(chǔ)在計(jì)算機(jī)系統(tǒng)100中的任意單元的固件可被稱為“平臺(tái)固件”。更具體地,可以存在多種類型的固件。例如,系統(tǒng)管理固件存儲(chǔ)單元130可以存儲(chǔ)系統(tǒng)管理固件132。系統(tǒng)管理固件130可以包括可擴(kuò)展固件、基本輸入/輸出系統(tǒng)(bios),和/或可被用來(lái)例如在引導(dǎo)過(guò)程期間提供用于計(jì)算機(jī)系統(tǒng)100的關(guān)鍵指令的其他類型的固件。在計(jì)算機(jī)系統(tǒng)中的另一固件可以包括用于控制器設(shè)備124的平臺(tái)控制器固件134??蓪⑦@個(gè)固件存儲(chǔ)在平臺(tái)控制器固件存儲(chǔ)136中,其與控制器設(shè)備124相耦合。平臺(tái)控制器固件132可以提供關(guān)于管理控制器設(shè)備124的特征的指令。
在許多實(shí)施例中,在系統(tǒng)中的每個(gè)固件存儲(chǔ)單元(例如,系統(tǒng)管理固件存儲(chǔ)單元130、平臺(tái)控制器固件存儲(chǔ)單元136等)包括例如nand閃存、nor閃存、相變存儲(chǔ)器的一種非易失性類型的存儲(chǔ)器,或另一形式的非易失性存儲(chǔ)器。
雖然為了清楚的目的而沒(méi)有示出,但是cpu可以具有另外的接口,例如處理圖形和網(wǎng)絡(luò)業(yè)務(wù)的高速i/o接口。在許多實(shí)施例中,這些高速i/o接口可以包括一個(gè)或多個(gè)pci-express接口。
計(jì)算機(jī)系統(tǒng)100存儲(chǔ)代碼來(lái)安全地啟動(dòng)認(rèn)證代碼模塊(acm)138,該認(rèn)證代碼模塊138是cpu102調(diào)用并簽名(即,模塊的安全測(cè)量)的軟件模塊。可以使用cpu102的生產(chǎn)廠商管理的私鑰利用非對(duì)稱加密對(duì)acm138進(jìn)行簽名。當(dāng)cpu102調(diào)用acm138時(shí),首先使用提供的公鑰的散列進(jìn)行認(rèn)證,所述公鑰存儲(chǔ)在cpu102、芯片組相關(guān)電路(例如分立的pch),或在計(jì)算機(jī)系統(tǒng)中的其他硬件中。使用公鑰對(duì)由內(nèi)部私鑰加密的信息進(jìn)行解密。一般來(lái)說(shuō),公鑰將是不變的。通過(guò)使用這些公知的安全程序來(lái)測(cè)量acm138,能夠證實(shí)模塊為可信任執(zhí)行環(huán)境。出于安全的目的,acm可以運(yùn)行在認(rèn)證代碼(ac)模式中。當(dāng)在ac模式中時(shí),所有的系統(tǒng)中斷和事件都不可中斷acm,并且保護(hù)acm不受其他系統(tǒng)和dma代理的影響。當(dāng)以ac模式運(yùn)行時(shí),僅有一個(gè)硬件線程是活動(dòng)的,因此集合所有其他硬件線程并使其進(jìn)入靜止/睡眠狀態(tài)。
在計(jì)算機(jī)系統(tǒng)100的首次引導(dǎo)期間或在此之前,可以提供固件更新公鑰140并將其存儲(chǔ)在系統(tǒng)管理固件存儲(chǔ)130中??梢允褂霉碳鹿€140來(lái)認(rèn)證固件鏡像信息。在一些實(shí)施例中,排他地使用公鑰140用于認(rèn)證固件鏡像。雖然使用了術(shù)語(yǔ)“公鑰”并且一些實(shí)施例存儲(chǔ)了實(shí)際字母數(shù)字、未加密密鑰,但是在其他的實(shí)施例中,“公鑰”可以指公鑰的散列??蓪⒐€存儲(chǔ)在處理器中的只讀存儲(chǔ)器(rom)中或其他存儲(chǔ)單元??梢源鎯?chǔ)散列而非完整的公鑰來(lái)潛在地節(jié)省存儲(chǔ)空間。將被寫(xiě)入到計(jì)算機(jī)系統(tǒng)中的固件鏡像可以包括公鑰。然后可以散列化在鏡像中的公鑰并將其與已經(jīng)存儲(chǔ)在系統(tǒng)rom中的公鑰的散列進(jìn)行比較。在某些實(shí)施例中,出于另外的安全目的可以將散列加密。
在許多實(shí)施例中,計(jì)算機(jī)系統(tǒng)100能夠進(jìn)入平臺(tái)固件鎧裝技術(shù)(pfat)模式。pfat模式致使平臺(tái)固件的鎖定。當(dāng)在pfat模式中時(shí),僅允許運(yùn)行在ac模式中的acm執(zhí)行對(duì)計(jì)算機(jī)系統(tǒng)100中的固件存儲(chǔ)單元的更新(即,寫(xiě)入)。并且甚至要求acm執(zhí)行特定的過(guò)程以允許對(duì)平臺(tái)固件存儲(chǔ)進(jìn)行寫(xiě)入。一旦在pfat模式中,計(jì)算機(jī)系統(tǒng)不能退出該模式。在許多實(shí)施例中,在每次計(jì)算機(jī)系統(tǒng)引導(dǎo)時(shí)進(jìn)入的pfat模式致使任何固件所在的存儲(chǔ)器地址空間鎖定。例如,因?yàn)橄到y(tǒng)管理固件存儲(chǔ)130通過(guò)平臺(tái)控制器中心118與cpu102相耦合,所以任何針對(duì)系統(tǒng)管理固件存儲(chǔ)130的寫(xiě)入會(huì)路由通過(guò)平臺(tái)控制器中心118。當(dāng)系統(tǒng)在pfat模式中時(shí),平臺(tái)控制器中心118將拒絕任何向保留用于系統(tǒng)管理固件存儲(chǔ)130的存儲(chǔ)器單元的嘗試性寫(xiě)入(沒(méi)有首先使用安全的基于acm的解鎖程序)。安全的基于acm的解鎖程序?qū)⒃谙旅嬗懻摗?/p>
在許多實(shí)施例中,在引導(dǎo)過(guò)程期間在固件內(nèi)執(zhí)行的代碼將設(shè)置啟動(dòng)pfat模式的一次寫(xiě)入寄存器。例如,位于平臺(tái)中的pfat管理寄存器可以具有pfat啟動(dòng)位來(lái)啟動(dòng)pfat模式。在一些實(shí)施例中,pfat管理寄存器位于平臺(tái)控制器中心118(pfat寄存器142a)中。在其他的實(shí)施例中,pfat管理寄存器位于cpu非內(nèi)核的其他地方(pfat寄存器142b)。這種寄存器可以具有與管理pfat模式相關(guān)的若干個(gè)位。例如,pfat寄存器可以包括pfat模式啟動(dòng)位,當(dāng)設(shè)置所述啟動(dòng)位時(shí)啟動(dòng)pfat模式。另外,pfat寄存器還可以包括pfat模式鎖定位,當(dāng)設(shè)置所述鎖定位時(shí)不允許進(jìn)一步更新pfat模式啟動(dòng)位(至少到系統(tǒng)完全重置前)。鎖定位消除了惡意實(shí)體在計(jì)算機(jī)系統(tǒng)100正常操作期間使pfat模式失效的能力。
如討論的,一旦在pfat模式中,則不允許定期的向表示系統(tǒng)管理固件存儲(chǔ)130的存儲(chǔ)器地址空間寫(xiě)入。在許多實(shí)施例中,當(dāng)計(jì)算機(jī)系統(tǒng)100進(jìn)入pfat模式時(shí),平臺(tái)控制器中心118設(shè)置內(nèi)部pch鎖寄存器144,其指示向系統(tǒng)管理固件存儲(chǔ)130的寫(xiě)入是不允許的。當(dāng)設(shè)置pch鎖寄存器114時(shí),平臺(tái)控制器中心118將丟棄任何嘗試向固件存儲(chǔ)130寫(xiě)入的事務(wù)。
此外,在許多實(shí)施例中,運(yùn)行在os頂層的固件更新邏輯146存在于系統(tǒng)存儲(chǔ)器116中。固件更新邏輯146可以接收更新在計(jì)算機(jī)系統(tǒng)100中存在的特定固件的請(qǐng)求。這個(gè)更新請(qǐng)求可以來(lái)自網(wǎng)絡(luò)上的系統(tǒng)管理員,它可以來(lái)自于系統(tǒng)內(nèi)部(例如,來(lái)自修復(fù)os的修改),或來(lái)自其他單元。在許多實(shí)施例中,更新固件的請(qǐng)求伴隨著實(shí)際更新的鏡像。固件鏡像要么可以直接伴隨請(qǐng)求,要么在稍后于接收并接受請(qǐng)求時(shí)到達(dá)。固件鏡像可以是固件的完全重寫(xiě)(例如,新的版本)或可以是整個(gè)固件的較小部分的更新(例如,重寫(xiě)整個(gè)固件的小部分)。在某個(gè)時(shí)間點(diǎn),固件更新邏輯146接收實(shí)際的更新鏡像。固件更新鏡像存儲(chǔ)在系統(tǒng)存儲(chǔ)器116中的固件鏡像測(cè)試存儲(chǔ)148中。一旦固件更新邏輯146將整個(gè)鏡像存儲(chǔ)到測(cè)試存儲(chǔ)中,則調(diào)用acm138并且系統(tǒng)進(jìn)入ac模式。在從運(yùn)行固件更新邏輯146的標(biāo)準(zhǔn)模式轉(zhuǎn)換到運(yùn)行在ac模式中的acm138期間,固件更新邏輯146將指向系統(tǒng)存儲(chǔ)器116中的固件鏡像測(cè)試存儲(chǔ)148單元的指針傳遞給acm138。這種傳遞可以使用在cpu102中的寄存器來(lái)存儲(chǔ)指針,或者指針可以存儲(chǔ)在系統(tǒng)存儲(chǔ)器116中的已知傳遞單元。
一旦在ac模式中并且準(zhǔn)備好存儲(chǔ)固件鏡像的單元,acm138使用公鑰140來(lái)初始化固件鏡像的認(rèn)證程序。認(rèn)證程序使用不對(duì)稱加密來(lái)解密并且測(cè)量接收到的固件鏡像。在許多實(shí)施例中,可以使用存儲(chǔ)在計(jì)算機(jī)系統(tǒng)中的不可變的公鑰來(lái)驗(yàn)證從供應(yīng)商處接收到的固件鏡像是可信的。在許多實(shí)施例中,公鑰對(duì)任何實(shí)體是可取得的,在其他的實(shí)施例中,一組有限的實(shí)體具有訪問(wèn)特權(quán)來(lái)讀取存儲(chǔ)公鑰的存儲(chǔ)單元。例如,在一些實(shí)施例中,在ac模式中的acm138是僅有的能夠訪問(wèn)存儲(chǔ)在cpu102中的公鑰140的實(shí)體。
acm138執(zhí)行公鑰測(cè)量以認(rèn)證存儲(chǔ)在固件鏡像測(cè)試存儲(chǔ)148中的固件鏡像。如果能夠成功認(rèn)證固件鏡像(即,鏡像的安全性沒(méi)有受到危害),則acm138對(duì)cpu102中的鎖寄存器150執(zhí)行特定的寫(xiě)周期。在許多實(shí)施例中,在cpu102中的鎖寄存器150是特定的msr(模型相關(guān)寄存器),其僅能被ac模式中的acm寫(xiě)入。因此,這個(gè)寄存器對(duì)于標(biāo)準(zhǔn)模式的os或另一類似的實(shí)體來(lái)說(shuō)是禁止的。對(duì)鎖寄存器150的這個(gè)特定寫(xiě)周期致使cpu102生成向平臺(tái)控制器中心118發(fā)送的安全的基于acm的解鎖命令。當(dāng)這個(gè)安全的解鎖命令到達(dá)時(shí),在平臺(tái)控制器中心118內(nèi)的邏輯將清除pch鎖寄存器144。當(dāng)清除了pch鎖寄存器114時(shí),平臺(tái)控制器中心118將允許寫(xiě)入系統(tǒng)管理固件存儲(chǔ)130地址空間。
一旦允許寫(xiě)入固件存儲(chǔ),acm138就將認(rèn)證的固件鏡像從固件鏡像測(cè)試存儲(chǔ)148單元拷貝到系統(tǒng)管理固件存儲(chǔ)130。一旦拷貝結(jié)束,acm138可以這樣發(fā)出隨后的鎖命令:通過(guò)向cpu鎖寄存器150發(fā)出另一特定寫(xiě)周期,該寫(xiě)周期接著致使生成向平臺(tái)控制器中心118發(fā)送的安全的基于acm的鎖命令。當(dāng)平臺(tái)部件中心118接收到鎖命令時(shí),在中心內(nèi)的邏輯設(shè)置pch鎖寄存器144,并且再一次阻止系統(tǒng)管理固件存儲(chǔ)130接收任何寫(xiě)入。
在圖1中的前述示例涉及系統(tǒng)管理固件132的更新。在另一示例中,更新可以涉及平臺(tái)控制器固件134。
在計(jì)算機(jī)系統(tǒng)100每一次引導(dǎo)期間,可以生成短暫的(即,臨時(shí)的)密碼。生成這個(gè)短暫密碼的邏輯可以在cpu102中、在系統(tǒng)管理固件132中或在計(jì)算機(jī)系統(tǒng)100的其他單元中。短暫密碼通常由操作系統(tǒng)在計(jì)算機(jī)系統(tǒng)的正常操作之前的早期引導(dǎo)序列中生成。生成的短暫密碼內(nèi)部地存儲(chǔ)在cpu102中的臨時(shí)密碼寄存器152中。還將這個(gè)同樣的密碼分配給在計(jì)算機(jī)系統(tǒng)中需要在正常操作期間與cpu進(jìn)行安全握手的任何控制器或其他設(shè)備。例如控制器設(shè)備124的控制器可以具有內(nèi)部臨時(shí)密碼存儲(chǔ)單元154,用以存儲(chǔ)在引導(dǎo)時(shí)間密碼分配期間接收到的密碼。通常在安全引導(dǎo)過(guò)程期間創(chuàng)建、分配并存儲(chǔ)這個(gè)短暫密碼來(lái)獲得更高的安全性。安全引導(dǎo)過(guò)程比在正常操作期間更少可能受到危害,因此在這個(gè)時(shí)間期間分配短暫密碼將使得密碼更少可能被盜取。
隨后,在計(jì)算機(jī)系統(tǒng)100完全操作之后(例如,正在運(yùn)行os),固件更新邏輯146可以接收更新平臺(tái)控制器固件134的請(qǐng)求。當(dāng)接收到這個(gè)請(qǐng)求時(shí),進(jìn)行關(guān)于將更新鏡像拷貝到固件鏡像測(cè)試存儲(chǔ)單元148的相同過(guò)程。固件更新邏輯146調(diào)用acm138并且將系統(tǒng)的控制傳遞給acm138。acm138接著認(rèn)證鏡像,并且如果成功地認(rèn)證了鏡像,則嘗試執(zhí)行固件更新。但是,不像系統(tǒng)管理固件132,acm138不具有對(duì)平臺(tái)控制器固件134的完全控制。
控制器設(shè)備124可以具有其自身的安全程序和不同于cpu102的獨(dú)立的操作需求。本質(zhì)上,控制器設(shè)備124期望確切地知道對(duì)控制器固件存儲(chǔ)136空間的寫(xiě)入請(qǐng)求事實(shí)上來(lái)自于acm138。為了創(chuàng)建更安全的驗(yàn)證過(guò)程,acm138可以向控制器設(shè)備124發(fā)送請(qǐng)求來(lái)執(zhí)行對(duì)控制器固件存儲(chǔ)136中的地址空間的固件更新。這個(gè)基于acm的請(qǐng)求可以和短暫密碼一起到達(dá)。
為了驗(yàn)證接收到的acm138請(qǐng)求的真實(shí)性,控制器設(shè)備124可以將在請(qǐng)求中的接收到的短暫密碼與最初在計(jì)算機(jī)系統(tǒng)100的當(dāng)前引導(dǎo)期間到達(dá)的所存儲(chǔ)的短暫密碼進(jìn)行比較。在許多實(shí)施例中,在控制器設(shè)備124中的更新邏輯156執(zhí)行這個(gè)比較。如果兩個(gè)密碼是相同的,則控制器設(shè)備124可以向來(lái)自于acm138的寫(xiě)入開(kāi)放控制器固件存儲(chǔ)136地址空間。否則,將保持鎖定控制器固件存儲(chǔ)136,并且控制器設(shè)備124可以生成指示安全問(wèn)題的某種錯(cuò)誤消息。在許多實(shí)施例中,為了保持在cpu102中的臨時(shí)密碼寄存器152中的短暫密碼的安全,僅在ac模式下由acm138訪問(wèn)該寄存器。還有,在許多實(shí)施例中,一旦acm138完成了將已認(rèn)證的固件鏡像寫(xiě)入控制器固件存儲(chǔ)136,acm138就可以接著向控制器設(shè)備124發(fā)送后繼的通信,聲明更新已結(jié)束,因而控制器設(shè)備124知道不允許向控制器固件存儲(chǔ)空間136進(jìn)行進(jìn)一步寫(xiě)入。
在許多實(shí)施例中,acm可以實(shí)施回滾保護(hù)來(lái)用于固件更新。回滾保護(hù)限制平臺(tái)固件的更新僅為固件更新鏡像的較新版本。在一些實(shí)施例中,固件鏡像可以具有包括固件版本的頭部,并且當(dāng)前駐留的固件具有類似的頭部。acm可以讀取兩個(gè)頭部,并且如果新的固件鏡像是比當(dāng)前駐留在平臺(tái)中的固件更新版本的固件,則僅允許將新的固件鏡像寫(xiě)入到固件存儲(chǔ)單元。
圖2是鎖定平臺(tái)部件中心使其不允許向系統(tǒng)管理固件存儲(chǔ)空間寫(xiě)入的過(guò)程的實(shí)施例的流程圖??梢杂商幚磉壿媮?lái)執(zhí)行該過(guò)程,所述處理邏輯可以包括硬件電路、軟件代碼、固件代碼,或任意這三種類型處理邏輯的結(jié)合。貫穿整個(gè)本文檔使用術(shù)語(yǔ)“處理邏輯”的任何事物可以有效地用上述邏輯的任意組合以及甚至其他形式的邏輯來(lái)實(shí)現(xiàn)。
由處理邏輯在處理器引導(dǎo)期間進(jìn)行的過(guò)程開(kāi)始于:設(shè)置pfat模式啟動(dòng)位(處理塊200)來(lái)激活計(jì)算機(jī)系統(tǒng)中的固件更新保護(hù)裝置。pfat模式啟動(dòng)位可以位于計(jì)算機(jī)系統(tǒng)中的pch設(shè)備中的固件管理寄存器中。一旦設(shè)置了pfat模式啟動(dòng)位來(lái)啟動(dòng)pfat,處理邏輯接著設(shè)置pfat模式啟動(dòng)鎖定位(處理塊202)。pfat模式啟動(dòng)鎖定位不允許進(jìn)一步修改pfat模式啟動(dòng)位。在許多實(shí)施例中,pfat模式啟動(dòng)鎖定位是在每次計(jì)算機(jī)系統(tǒng)引導(dǎo)時(shí)寫(xiě)入一次位。在這些實(shí)施例中,在計(jì)算機(jī)系統(tǒng)完全重置期間,可以再次修改pfat模式鎖定位。因此,啟動(dòng)pfat模式并接著鎖定pfat模式的過(guò)程將在每次引導(dǎo)期間發(fā)生。
雖然在圖2中未示出其他的實(shí)施例,但是pfat模式啟動(dòng)位是寫(xiě)入一次寄存器,其在被寫(xiě)入后的計(jì)算機(jī)系統(tǒng)的整個(gè)剩余生命期中不能被修改。在這些實(shí)施例中,將在每次計(jì)算機(jī)系統(tǒng)引導(dǎo)期間寫(xiě)入一次pfat模式啟動(dòng)位,并且此后(直到重新引導(dǎo)計(jì)算機(jī)系統(tǒng))將指示計(jì)算機(jī)系統(tǒng)是否已啟動(dòng)pfat模式。這個(gè)過(guò)程塊如塊200所示。還有,在這些實(shí)施例中,pfat模式啟動(dòng)鎖定位不必像pfat模式啟動(dòng)位那樣在引導(dǎo)過(guò)程期間首次寫(xiě)入之后將永遠(yuǎn)是不可再次寫(xiě)入的。因此,過(guò)程塊202在這些替換實(shí)施例中不是必需的。
一旦結(jié)束了這個(gè)過(guò)程,計(jì)算機(jī)平臺(tái)將繼續(xù)其引導(dǎo)程序。
圖3a示出了開(kāi)始安全平臺(tái)固件更新程序的過(guò)程的實(shí)施例的流程圖。
處理邏輯開(kāi)始于接收更新平臺(tái)固件的請(qǐng)求(處理塊300)。這個(gè)請(qǐng)求可以涉及在整個(gè)計(jì)算機(jī)系統(tǒng)中的任意類型的可更新固件。因此,在一些實(shí)施例中,這個(gè)請(qǐng)求可以涉及系統(tǒng)管理固件;在其他的實(shí)施例中,這個(gè)請(qǐng)求可以涉及平臺(tái)控制器固件;并且在另外的實(shí)施例中,甚至可以是存儲(chǔ)在計(jì)算機(jī)系統(tǒng)/平臺(tái)中的其他類型和單元的固件。
通過(guò)處理邏輯將與請(qǐng)求相關(guān)聯(lián)的固件鏡像拷貝到系統(tǒng)存儲(chǔ)器中的單元(處理塊302)而繼續(xù)所述過(guò)程。取決于更新的類型,鏡像可以是整個(gè)固件或僅是一部分。在許多實(shí)施例中,鏡像是加密的。加密的鏡像可能已使用利用了公鑰的非對(duì)稱加密算法進(jìn)行了加密。在建立系統(tǒng)時(shí)或建立系統(tǒng)稍后時(shí)間將公鑰提供給計(jì)算機(jī)系統(tǒng)??梢詫⒐€安全地存儲(chǔ)在不可寫(xiě)的存儲(chǔ)器單元,例如系統(tǒng)管理固件存儲(chǔ)的安全部分。返回到圖3a,一旦已將固件鏡像拷貝到系統(tǒng)存儲(chǔ)器,處理邏輯使用存儲(chǔ)在計(jì)算機(jī)系統(tǒng)中的安全單元中的可用公鑰來(lái)認(rèn)證鏡像(處理塊304)。
可以由在系統(tǒng)中調(diào)用的并且在ac模式中運(yùn)行的acm中的邏輯來(lái)處理塊304和在圖3a中的塊。參考圖1在上文討論了調(diào)用acm。在許多實(shí)施例中,認(rèn)證過(guò)程包括驗(yàn)證存儲(chǔ)在系統(tǒng)中的不可變公鑰與和鏡像一起包括的公鑰相匹配??梢允褂迷谟?jì)算機(jī)系統(tǒng)中的安全過(guò)程來(lái)測(cè)量鏡像。確定鏡像真實(shí)性的過(guò)程可以采用數(shù)種形式,但是期望的結(jié)果是確認(rèn)鏡像沒(méi)有受到危害。處理邏輯檢查鏡像是否已被驗(yàn)證為真實(shí)的(處理塊306)。另外,雖然沒(méi)有示出,但是潛在地以加密形式發(fā)送固件鏡像,其可能需要acm可訪問(wèn)的額外的解密密鑰來(lái)允許在認(rèn)證之前進(jìn)行鏡像的解密。
如果鏡像的認(rèn)證失敗,則處理邏輯向cpu發(fā)送錯(cuò)誤消息(處理塊308)。例如,處理邏輯可以啟動(dòng)中斷來(lái)將失敗/問(wèn)題通知給鏡像的認(rèn)證。另一方面,如果成功認(rèn)證鏡像(即,鏡像被驗(yàn)證為真實(shí)的),則處理邏輯可以進(jìn)入到圖3b中示出的過(guò)程。
圖3b示出了繼續(xù)安全平臺(tái)固件更新程序的過(guò)程的實(shí)施例的流程圖。
此時(shí)在處理流程中,處理邏輯(例如,在acm中的邏輯)解鎖平臺(tái)固件存儲(chǔ)單元來(lái)允許進(jìn)行寫(xiě)入(處理塊310)。在平臺(tái)固件存儲(chǔ)單元是系統(tǒng)管理固件存儲(chǔ)單元(如參考圖1在上文所述的)的實(shí)施例中,在驗(yàn)證了鏡像的真實(shí)性(在圖3a中的塊306中)時(shí),acm內(nèi)的邏輯繼續(xù)進(jìn)行解鎖pch以允許向系統(tǒng)管理固件存儲(chǔ)單元的寫(xiě)入。在平臺(tái)固件駐留在控制器存儲(chǔ)中的其他實(shí)施例中,需要另一過(guò)程來(lái)繼續(xù)向固件存儲(chǔ)進(jìn)行寫(xiě)入(在圖4中描述的基于固件的控制器的過(guò)程)。
返回到圖3b,一旦解鎖平臺(tái)固件存儲(chǔ)單元,處理邏輯將固件鏡像拷貝到平臺(tái)固件存儲(chǔ)單元(處理塊312)。最后,在將已認(rèn)證的鏡像拷貝到平臺(tái)固件存儲(chǔ)單元之后,處理邏輯接著鎖定固件存儲(chǔ)單元,使得不再允許寫(xiě)入固件存儲(chǔ)單元(處理塊314),并且結(jié)束過(guò)程。
如上文進(jìn)一步討論的,平臺(tái)固件存儲(chǔ)解鎖過(guò)程取決于固件存儲(chǔ)的所在單元。在平臺(tái)固件存儲(chǔ)是系統(tǒng)管理固件存儲(chǔ)單元的情況下,解鎖過(guò)程可以要求在ac模式下運(yùn)行的acm(圖1中的138)向cpu鎖寄存器(圖1中的150)進(jìn)行寫(xiě)入。在許多實(shí)施例中,cpu鎖寄存器是cpu(圖1中的102)非內(nèi)核中的msr。僅被在ac模式中的acm啟動(dòng)的特定寫(xiě)入msr(wrmsr)命令向cpu鎖寄存器寫(xiě)入。這個(gè)過(guò)程接著生成針對(duì)存在于pch(圖1中的118)中的pch鎖寄存器(圖1中的114)的特定寫(xiě)入。針對(duì)pch鎖寄存器的寫(xiě)入命令可以致使pch向系統(tǒng)管理固件存儲(chǔ)(圖1中的130)開(kāi)放寫(xiě)入能力,這將允許acm將新的系統(tǒng)管理固件鏡像寫(xiě)入正確的存儲(chǔ)單元。在結(jié)束寫(xiě)入鏡像時(shí),接著可以啟動(dòng)類似的wrmsr命令給同一cpu鎖寄存器來(lái)重新鎖定系統(tǒng)管理固件存儲(chǔ)。
圖4是安全地更新在計(jì)算機(jī)系統(tǒng)中的控制器固件的過(guò)程的實(shí)施例的流程圖。在許多實(shí)施例中,在圖4中示出的過(guò)程流包括用于acm/cpu的處理邏輯以及用于正在討論的控制器的處理邏輯。因此,為了使過(guò)程清楚到邏輯處理的每一個(gè)塊,圖4的左側(cè)(粗短劃線的左邊)可以表示與acm/cpu相關(guān)的邏輯,而且圖4的右側(cè)(粗短劃線的右邊)可以表示與控制器相關(guān)的邏輯。
在計(jì)算機(jī)平臺(tái)的引導(dǎo)序列期間,基于cpu的處理邏輯開(kāi)始于創(chuàng)建短暫密碼(處理塊400)。短暫密碼可由當(dāng)前的系統(tǒng)管理固件或在計(jì)算機(jī)系統(tǒng)內(nèi)的其他邏輯隨機(jī)地生成。隨后,這個(gè)隨機(jī)密碼將由處理邏輯本地存儲(chǔ)在cpu中僅有acm可訪問(wèn)的存儲(chǔ)單元中,或存儲(chǔ)在可被cpu訪問(wèn)的另一安全存儲(chǔ)單元中(處理塊402)。例如,在cpu中的臨時(shí)密碼寄存器(圖1中的152)可以存儲(chǔ)這個(gè)生成的短暫密碼,并且這個(gè)寄存器只能被在ac模式中的acm所訪問(wèn)。
基于cpu的處理邏輯接著向控制器發(fā)送短暫密碼(處理塊404)。控制器處理邏輯仍然在系統(tǒng)引導(dǎo)序列期間接收短暫密碼(處理塊406)。在此時(shí),控制器處理邏輯假定短暫密碼是有效的,這是因?yàn)橄到y(tǒng)已經(jīng)進(jìn)入正常操作并且應(yīng)該還沒(méi)有機(jī)會(huì)受到危害。處理邏輯接著將接收到的短暫密碼進(jìn)行本地存儲(chǔ)(處理塊408)(例如,可將短暫密碼存儲(chǔ)在圖1中的臨時(shí)密碼存儲(chǔ)154中)。在此時(shí),在控制器中的處理邏輯等待直到接收到固件更新請(qǐng)求。
在此期間,返回到圖3a,實(shí)體可以請(qǐng)求更新平臺(tái)固件(圖3a中的300),并且基于cpu/acm的處理邏輯將通過(guò)與圖3a相關(guān)聯(lián)的塊來(lái)認(rèn)證新的控制器專用平臺(tái)固件鏡像。一旦已認(rèn)證鏡像,acm處理邏輯將處理在圖3a中的下一個(gè)塊,并向控制器發(fā)送請(qǐng)求來(lái)更新控制器固件,其包括在請(qǐng)求中的短暫密碼(處理塊410)??刂破鬟壿嫿邮站哂杏蒫pu存儲(chǔ)的當(dāng)前短暫密碼的固件更新請(qǐng)求(處理塊412)。接下來(lái),控制器處理邏輯將剛接收到的當(dāng)前短暫密碼與在引導(dǎo)過(guò)程期間接收到的可信短暫密碼進(jìn)行比較(處理塊414)。
如果匹配(處理塊416),則控制器處理邏輯接著允許從acm向控制器的固件存儲(chǔ)進(jìn)行寫(xiě)入,并且向acm發(fā)送接受更新響應(yīng)(處理塊418)?;赼cm的處理邏輯通過(guò)繼續(xù)在圖3b中的處理塊進(jìn)行控制器更新來(lái)繼續(xù)其更新處理。否則,如果不匹配,則控制器處理邏輯向acm發(fā)送拒絕響應(yīng)(同時(shí)繼續(xù)不允許向控制器的固件存儲(chǔ)進(jìn)行寫(xiě)入)?;赼cm的邏輯接收拒絕響應(yīng)并啟動(dòng)錯(cuò)誤序列(處理塊422)。錯(cuò)誤序列可以是多樣的,如生成中斷、設(shè)置錯(cuò)誤標(biāo)記、致使系統(tǒng)關(guān)閉,或通過(guò)管理引擎(圖1中的128)向信息技術(shù)管理員發(fā)送涉及錯(cuò)誤的帶外信息等其他響應(yīng)。
也可以將本發(fā)明的實(shí)施例的元件提供為用于存儲(chǔ)機(jī)器可執(zhí)行指令的機(jī)器可讀介質(zhì)。機(jī)器可讀介質(zhì)可以包括但不僅限于,閃存、光盤(pán)、只讀光盤(pán)存儲(chǔ)器(cd-rom)、數(shù)字通用/視頻盤(pán)(dvd)rom、隨機(jī)訪問(wèn)存儲(chǔ)器(ram)、可擦除可編程只讀存儲(chǔ)器(eprom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、磁卡或光學(xué)卡、傳播媒介或其他類型的適用于存儲(chǔ)電子指令的機(jī)器可讀媒介。
在以上說(shuō)明書(shū)和權(quán)利要求書(shū)中,可以使用術(shù)語(yǔ)“包括”和“包含”以及它們的派生詞,并且意圖將它們用作彼此的同義詞。此外,在以下說(shuō)明書(shū)和權(quán)利要求書(shū)中,可以使用術(shù)語(yǔ)“耦合”和“連接”以及它們的派生詞。應(yīng)該理解,并不意圖將這些術(shù)語(yǔ)用作彼此的同義詞。相反,在特定的實(shí)施例中,“連接”可以被用來(lái)指示兩個(gè)或更多個(gè)元件彼此之間是直接物理接觸或電接觸的?!榜詈稀笨梢砸馕吨鴥蓚€(gè)或更多個(gè)元件是直接物理接觸或電接觸的。然而,“耦合”還可以意味著兩個(gè)或更多的元件彼此之間不是直接接觸的,但彼此之間仍然可以協(xié)作或交互。
在以上的說(shuō)明中,使用某個(gè)術(shù)語(yǔ)來(lái)描述本發(fā)明的實(shí)施例。例如,術(shù)語(yǔ)“邏輯”表示用于執(zhí)行一個(gè)或多個(gè)功能的硬件、固件、軟件(或其任意組合)。例如,“硬件”的例子包括但不限于:集成電路、有限狀態(tài)機(jī),或甚至是組合邏輯。集成電路可以采用以下形式:諸如微處理器的處理器、專用集成電路、數(shù)字信號(hào)處理器、微控制器等等。
應(yīng)當(dāng)理解的是,在說(shuō)明書(shū)中通篇提到“一個(gè)實(shí)施例”或者“實(shí)施例”意指結(jié)合該實(shí)施例描述的具體特征、結(jié)構(gòu)或特性被包括在本發(fā)明的至少一個(gè)實(shí)施例中。因此,應(yīng)當(dāng)強(qiáng)調(diào)并理解的是,在說(shuō)明書(shū)中各處兩次或多次提到“實(shí)施例”或者“一個(gè)實(shí)施例”或者“替換實(shí)施例”并非必須全都指同一實(shí)施例。此外,所述具體的特征、結(jié)構(gòu)或特性可以在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中以任何適當(dāng)?shù)姆绞浇M合。
類似地,應(yīng)當(dāng)理解的是,在前文對(duì)本發(fā)明的實(shí)施例的描述中,為了使得本公開(kāi)流暢以幫助理解各個(gè)發(fā)明性方案中的一個(gè)或多個(gè)的目的,而有時(shí)將各種特征一起組合到單個(gè)實(shí)施例、圖或其描述中。但是,不能將這種公開(kāi)方法解釋為反應(yīng)了所要求保護(hù)的主題需要的特征比每個(gè)權(quán)利要求中明確表述的更多的意圖。而是,根據(jù)所附權(quán)利要求所反應(yīng)的,發(fā)明性的方案所依賴的特征少于單個(gè)在前文公開(kāi)的實(shí)施例中的全部特征。因此,將隨附于詳細(xì)描述的權(quán)利要求明確地并入該詳細(xì)描述中。