從非易失性存儲器檢索系統(tǒng)引導(dǎo)代碼的制作方法
【專利說明】
【背景技術(shù)】
[0001]計算系統(tǒng)可以包括執(zhí)行計算設(shè)備的各種啟動功能的代碼。該代碼可以包括基本輸入/輸出系統(tǒng)(B1S)代碼。B1S代碼可以是計算系統(tǒng)中或者來自外部服務(wù)的惡意軟件的攻擊目標(biāo)。作為攻擊的結(jié)果,B1S代碼可能變得受損。
【附圖說明】
[0002]參照隨附各圖描述一些實現(xiàn)方案:
圖1是根據(jù)一些實現(xiàn)方案的示例系統(tǒng)的框圖;
圖2是根據(jù)一些實現(xiàn)方案的系統(tǒng)引導(dǎo)代碼恢復(fù)過程的流程圖;
圖3是根據(jù)另外的實現(xiàn)方案的另一示例系統(tǒng)的框圖;以及圖4是根據(jù)可替換實現(xiàn)方案的又一示例系統(tǒng)的框圖。
【具體實施方式】
[0003]用于執(zhí)行計算系統(tǒng)的啟動的系統(tǒng)代碼可以包括系統(tǒng)固件,其可以具有在計算系統(tǒng)的處理器(或多個處理器)上可執(zhí)行的機器可讀指令的形式?!跋到y(tǒng)固件”可以是指能夠執(zhí)行計算系統(tǒng)的啟動的任何機器可讀指令。計算系統(tǒng)的示例包括臺式計算機、筆記本計算機、平板計算機、個人數(shù)字助理(PDA)、智能電話、游戲器具、服務(wù)器計算機、存儲節(jié)點、網(wǎng)絡(luò)通信節(jié)點等。
[0004]系統(tǒng)固件可以包括基本輸入/輸出系統(tǒng)(B1S)代碼,其可以初始化計算系統(tǒng)的各種組件,并且加載計算系統(tǒng)的操作系統(tǒng)(OS)。B1S代碼可以執(zhí)行硬件組件的檢查以確保硬件組件恰當(dāng)?shù)卮嬖诤瓦\轉(zhuǎn)。這可以是例如加電自檢(POST)過程的一部分。在POST過程之后,B1S代碼可以通過引導(dǎo)序列的其余部分進行,在此之后B1S代碼可以加載并且傳遞控制給OS。B1S代碼可以包括傳統(tǒng)B1S代碼或統(tǒng)一可擴展固件接口(UEFI)代碼。在一些示例中,B1S代碼可以包括在OS加載之后執(zhí)行的運行時間部分。
[0005]在計算系統(tǒng)啟動時首先執(zhí)行的B1S代碼的最初部分是引導(dǎo)塊。引導(dǎo)塊通常被視為可信賴的并且在允許B1S代碼的其余部分在計算系統(tǒng)中的處理器上執(zhí)行之前首先執(zhí)行。引導(dǎo)塊可以用于檢查B1S代碼的完整性以及執(zhí)行其它最初功能。如果引導(dǎo)塊確認(rèn)B1S代碼的完整性,則引導(dǎo)塊可以將控制傳遞給B1S代碼的主要部分以用于發(fā)起與B1S代碼相關(guān)聯(lián)的其余操作。
[0006]在一些實現(xiàn)方案中,引導(dǎo)塊可以包括可信度量核心根(CRTM)邏輯,其是由作為產(chǎn)業(yè)標(biāo)準(zhǔn)工作組的可信計算組(TCG)指定的邏輯。在計算系統(tǒng)的上電過程期間,CRTM邏輯可以執(zhí)行某種初始化任務(wù)并且可以做出被存儲以供隨后使用的數(shù)個測量。CRTM邏輯然后可以在將控制傳遞給B1S代碼的主要部分之前檢查B1S代碼。一旦B1S代碼完成執(zhí)行并且將控制傳遞給OS,則OS可以基于CRTM邏輯所進行的測量來驗證計算系統(tǒng)的可信性。
[0007]在一些情況下,引導(dǎo)塊可能變得受損。盡管可以在計算系統(tǒng)中提供保護機制以保護引導(dǎo)塊使其不受未經(jīng)授權(quán)的寫入訪問,但是這樣的保護機制可能在某些條件之下變得受損,這可能使引導(dǎo)塊經(jīng)受惡意軟件供給。受損的引導(dǎo)塊可能使得計算系統(tǒng)受損。例如,經(jīng)修改的引導(dǎo)塊可能允許各種系統(tǒng)代碼的未經(jīng)授權(quán)的修改,可能繞過完整性檢查,可能防止計算系統(tǒng)的引導(dǎo),可能允許惡意實體對計算系統(tǒng)的隱蔽遠(yuǎn)程監(jiān)控和/或控制,可能允許惡意軟件對計算系統(tǒng)中的數(shù)據(jù)的未經(jīng)授權(quán)的訪問和/或修改,可能使計算系統(tǒng)禁用等。受損的代碼(諸如引導(dǎo)塊)可以是指已經(jīng)被破壞使得代碼不再可用的代碼,或者可替換地,受損的代碼可以是指已經(jīng)以某種方式改變但是仍舊能夠執(zhí)行的代碼。
[0008]除通過惡意軟件受損的可能性之外,引導(dǎo)塊也可能意外地或有意地受損。
[0009]在本討論中,盡管對“引導(dǎo)塊”做出引用,但是要指出的是,技術(shù)或機制可以適用于其它類型的系統(tǒng)引導(dǎo)代碼,其中系統(tǒng)引導(dǎo)代碼可以是指可在計算系統(tǒng)的重啟之后引導(dǎo)計算系統(tǒng)或者可使計算系統(tǒng)從低功率狀態(tài)恢復(fù)的任何代碼。
[0010]依照一些實現(xiàn)方案,嵌入式控制器用于在計算系統(tǒng)的核心邏輯從共享總線斷開時檢索并執(zhí)行引導(dǎo)塊的驗證,所述共享總線還由嵌入式控制器使用以訪問存儲引導(dǎo)塊的非易失性存儲器。嵌入式控制器可以監(jiān)控來自核心邏輯的核心邏輯從共享總線斷開的指示,并且響應(yīng)于這樣的指示,嵌入式控制器可以確定嵌入式控制器通過共享總線從非易失性存儲器檢索引導(dǎo)塊是安全的,以用于執(zhí)行引導(dǎo)塊的驗證。
[0011]諸如引導(dǎo)塊或其它代碼之類的代碼片段的驗證可以是指以密碼方式驗證代碼片段尚未改變和/或確認(rèn)代碼片段來自受信源。
[0012]計算系統(tǒng)的核心邏輯可以是指包括指定功能性的計算系統(tǒng)的一個或多個控制芯片。指定功能性可以包括到圖形子系統(tǒng)的顯示接口、到各種輸入/輸出(I/o)設(shè)備可以連接于的系統(tǒng)總線的系統(tǒng)總線接口等。在一些示例中,核心邏輯可以包括I/o控制器,諸如來自Intel公司的平臺控制器中心(PCH)。在其它示例中,可以使用其它類型的控制芯片。
[0013]可替換地,核心邏輯還可以被視為包括計算系統(tǒng)的處理器,其執(zhí)行操作系統(tǒng)(OS)、應(yīng)用代碼、系統(tǒng)固件代碼和計算系統(tǒng)的其它代碼。
[0014]嵌入式控制器在物理上與核心邏輯(以及與計算系統(tǒng)的處理器)分離。嵌入式控制器可以用于執(zhí)行具體預(yù)定義任務(wù),如編程到嵌入式控制器代碼中的(例如嵌入式控制器固件或EC固件或軟件)。在隨后的討論中,盡管對“EC固件”做出引用,但是要指出的是,技術(shù)或機制可以適應(yīng)于可由嵌入式控制器執(zhí)行的其它形式控制器代碼。嵌入式控制器代碼包括在嵌入式控制器上可執(zhí)行的機器可讀指令??梢杂汕度胧娇刂破鲌?zhí)行的任務(wù)的示例包括以下中的任何一個或某種組合:計算系統(tǒng)中的電源控制(用于控制向計算系統(tǒng)中的各種組件供應(yīng)電源電壓的電源)、計算系統(tǒng)中的電池的充電和控制、熱監(jiān)控(以監(jiān)控計算系統(tǒng)中的溫度)、風(fēng)扇控制(以控制計算系統(tǒng)中的風(fēng)扇)以及與用戶輸入設(shè)備的交互(諸如執(zhí)行計算系統(tǒng)的鍵盤的掃描或者與諸如鼠標(biāo)、觸摸板、觸摸屏的定點設(shè)備的交互等)。嵌入式控制器可以利用微控制器、專用集成電路(ASIC)、可編程門陣列(PGA)或者任何其它類型的可編程電路來實現(xiàn)。
[0015]圖1是包括嵌入式控制器102、共享非易失性存儲器104和核心邏輯106的示例計算系統(tǒng)100的框圖。核心邏輯106或嵌入式控制器102可以通過共享總線120訪問共享非易失性存儲器104。
[0016]在一些實現(xiàn)方案中,僅一個實體能夠在任何給定時間訪問共享總線120,使得僅一個實體可以在某一時間訪問共享非易失性存儲器104。在一些示例中,共享總線120是共享串行外圍接口(SPI)總線。SPI總線是其中SPI總線上的設(shè)備以主-從模式操作的同步串行數(shù)據(jù)鏈路。在其它示例中,可以使用另一類型的共享總線120。在可替換示例中,可以提供仲裁機制以允許計算系統(tǒng)的各種狀態(tài)中的總線120的共享訪問,包括低功率狀態(tài)和正常運行時間狀態(tài)。
[0017]共享非易失性存儲器104包括系統(tǒng)固件108,諸如B1S代碼。B1S代碼可以包括引導(dǎo)塊110。盡管在圖1中未示出,但是處理器可以連接到核心邏輯106。以此方式,處理器可以從共享非易失性存儲器104檢索系統(tǒng)固件108以在處理器上執(zhí)行。
[0018]嵌入式控制器102可以在處理器對引導(dǎo)塊110的每一個重啟執(zhí)行之前對引導(dǎo)塊110執(zhí)行驗證。引導(dǎo)塊110的重啟執(zhí)行可以由于計算系統(tǒng)100的冷重置、計算系統(tǒng)100從低功率狀態(tài)的恢復(fù)、操作系統(tǒng)重啟等而發(fā)生。要指出的是,引導(dǎo)塊110還可以由嵌入式控制器102在計算系統(tǒng)100每一次進入低功率狀態(tài)時驗證。在其它示例中,嵌入式控制器102還可以在處理器保持加電時驗證引導(dǎo)塊110。
[0019]在另外的示例中,嵌入式控制器102可以響應(yīng)于計算系統(tǒng)100的暖重置而執(zhí)行引導(dǎo)塊110的驗證,其中計算系統(tǒng)100在不移除至計算系統(tǒng)100的功率的情況下重啟。為了允許嵌入式控制器102響應(yīng)于暖重置而執(zhí)行驗證,可以迫使計算系統(tǒng)100在檢測到暖重置時轉(zhuǎn)變到適當(dāng)?shù)牡凸β薁顟B(tài)。
[0020]計算系統(tǒng)100的低功率狀態(tài)是指其中處理器106和系統(tǒng)100的某些其它硬件組件斷開(例如沒有功率提供給處理器和某些其它硬件組件)的計算系統(tǒng)100的狀態(tài)。在低功率狀態(tài)中,功率可以仍舊提供給嵌入式控制器102。計算系統(tǒng)100可以在以下任何場景中轉(zhuǎn)變到低功率狀態(tài):(I)作為使得系統(tǒng)100斷電以隨后上電的計算系統(tǒng)100的冷重置的一部分,或者(2)作為功率節(jié)省過程的一部分,其中計算系統(tǒng)100可以在一段時間不活動之后,或者響應(yīng)于檢測到低電池狀況,或者響應(yīng)于用戶或應(yīng)用命令,或者出于另一原因而從正常操作狀態(tài)轉(zhuǎn)變到睡眠狀態(tài)、休眠狀態(tài)或斷開狀態(tài),或者(3 )在任何其它場景中。
[0021]低功率狀態(tài)的示例可以包括某些高級配置與電源接口(ACPI)狀態(tài),包括:ACPI S3狀態(tài)(其是待機或睡眠狀態(tài)的形式,其中計算系統(tǒng)100的系統(tǒng)上下文維持在保持通電的易失性存儲器中,而計算系統(tǒng)100的一些組件是斷電的);ACPI S4狀態(tài)(其是休眠狀態(tài)的形式,其中系統(tǒng)上下文保存到持久存儲裝置以允許從包括易失性存儲器的附加計算系統(tǒng)組件移除功率);以及ACPI S5狀態(tài)(其是系統(tǒng)斷開狀態(tài)的形式,其中已經(jīng)從計算系統(tǒng)100的甚多的組件移除功率)。
[0022]在引導(dǎo)塊110重啟時,做出潛在地不受信代碼之前已經(jīng)在計算系統(tǒng)