驗證控制器代碼和系統(tǒng)啟動代碼的制作方法
【專利說明】
【背景技術】
[0001]計算系統(tǒng)可以包括用以執(zhí)行計算系統(tǒng)的各種啟動功能的代碼。此代碼可以包括基本輸入/輸出系統(tǒng)(B1S)代碼。B1S代碼可以是在計算機系統(tǒng)中或來自外部服務的惡意軟件攻擊的對象。作為攻擊的結果,B1S代碼可能變得被損害。
【附圖說明】
[0002]相對于以下各圖來描述某些實施方式:
圖1是根據(jù)某些實施方式的示例性系統(tǒng)的框圖;
圖2是根據(jù)某些實施方式的由嵌入式控制器執(zhí)行的啟動過程的流程圖;
圖3是根據(jù)某些實施方式的驗證過程的流程圖;
圖4是根據(jù)其它實施方式的示例性系統(tǒng)的框圖;以及圖5—7是根據(jù)其它實施方式的過程的流程圖。
【具體實施方式】
[0003]對被用來執(zhí)行計算系統(tǒng)啟動的系統(tǒng)代碼的惡意軟件攻擊可以促使計算系統(tǒng)的完整性被損害,使得可能發(fā)生計算系統(tǒng)中的未授權訪問和操作。例如,被損害系統(tǒng)代碼可以允許計算系統(tǒng)被惡意實體隱蔽地遠程監(jiān)視和/或控制、計算系統(tǒng)中的數(shù)據(jù)被惡意軟件未授權訪問和/或修改、計算系統(tǒng)的禁用等。被損害系統(tǒng)代碼可以指代已被損壞、使得系統(tǒng)代碼不再可用的系統(tǒng)代碼,或者替換地,被損害系統(tǒng)代碼可以指代已經(jīng)以某種方式改變、但仍能夠執(zhí)行的系統(tǒng)代碼。請注意,系統(tǒng)代碼也可能偶然地或無意中被損害。
[0004]雖然可以在計算系統(tǒng)中提供保護機制以保護系統(tǒng)代碼,但是此類保護機制在能夠使系統(tǒng)代碼經(jīng)受惡意軟件攻擊的某些條件下可能變得被損害。
[0005]用來執(zhí)行計算系統(tǒng)的啟動的系統(tǒng)代碼可以包括系統(tǒng)固件,其可以采取可在計算系統(tǒng)的(一個或多個)處理器上執(zhí)行的機器可讀指令的形式?!跋到y(tǒng)固件”可以指代能夠執(zhí)行計算系統(tǒng)的啟動的任何機器可讀指令。計算系統(tǒng)的示例包括臺式計算機、筆記本計算機、平板計算機、個人數(shù)字助理(PDA)、智能電話、游戲設備、服務器計算機、存儲節(jié)點、網(wǎng)絡通信節(jié)點等。
[0006]系統(tǒng)固件可以包括基本輸入/輸出系統(tǒng)(B1S)代碼,其可以對計算系統(tǒng)的各種部件進行初始化,并加載計算系統(tǒng)的操作系統(tǒng)(OS)。B1S代碼可以執(zhí)行硬件部件的檢查以確保硬件部件存在并適當?shù)剡\行。這可以是例如通電自檢(POST)程序的一部分。在POST程序之后,B1S代碼可以行進通過啟動序列的其余部分,在其之后,B1S代碼可以加載OS并向其傳遞控制。B1S代碼可以包括傳統(tǒng)B1S代碼或統(tǒng)一可擴展固件接口(UEFI)代碼。在某些示例中,B1S代碼可以包括在OS加載之后執(zhí)行的運行時間部分。
[0007]系統(tǒng)固件可以被存儲在非易失性存儲器中,諸如閃存或可編程的任何其它持久性存儲器。一旦非易失性存儲器中的系統(tǒng)固件被損害,則一個可能的補救措施可涉及到在物理上替換包括非易失性存儲器的部件。解決被損害系統(tǒng)固件的此類技術可能是勞動密集的、成本高的且耗時的。
[0008]根據(jù)某些實施方式,提供了用以允許實現(xiàn)被損害系統(tǒng)固件的檢測以及檢測到系統(tǒng)固件損害的情況下的系統(tǒng)固件自愈的技術或機制。圖1是包括嵌入式控制器102、共享非易失性存儲器104、處理器106以及私用非易失性存儲器116的示例性計算系統(tǒng)100的框圖。共享非易失性存儲器104在其可被多個實體訪問的意義上被“共享”,所述多個實體包括嵌入式控制器102和至少一個其它實體(包括處理器106)。私用非易失性存儲器116可被嵌入式控制器102訪問,但是對于處理器106或計算系統(tǒng)100中的其它部件是不可訪問。使得私用非易失性存儲器116不可被吹冷氣106及其它部件訪問保護私用非易失性存儲器116的內容不被未授權篡改。私用非易失性存儲器116始終可被嵌入式控制器102訪問。
[0009]雖然在圖1中未示出,但可以在處理器106與共享非易失性存儲器104之間提供輸入/輸出(I/o)控制器。
[0010]私用(private)非易失性存儲器116可以在物理上與共享非易失性存儲器104(諸如在不同的物理存儲器件中實現(xiàn))分離。替換地,私用非易失性存儲器116和共享非易失性存儲器104可以在物理上駐于公共存儲器件上,但是共享非易失性存儲器104和私用非易失性存儲器116在物理存儲器件的不同段中,其中包含私用非易失性存儲器116的物理存儲器件的段僅可被嵌入式控制器102訪問。
[0011]共享非易失性存儲器104可通過共享總線120被嵌入式控制器102或另一實體訪問。在某些實施方式中,在任何給定時間僅一個實體可以訪問共享存儲器120,使得每次僅一個實體可以訪問共享非易失性存儲器104。在某些示例中,共享總線120是共享串行外圍接口(SPI)總線。SPI總線是其中SPI總線上的設備在主從模式下操作的同步串行數(shù)據(jù)鏈路。在其它示例中,可以使用另一類型的共享總線120。在替換示例中,可以提供仲裁機制以允許在計算系統(tǒng)的各種狀態(tài)下的總線120的共享訪問,所述各種狀態(tài)包括低功率狀態(tài)和正常運行時間狀態(tài)。
[0012]共享非易失性存儲器104可以存儲系統(tǒng)固件107,其可以包括B1S代碼。B1S代碼107可以包括用于由嵌入式控制器102執(zhí)行的控制器代碼108以及將由處理器106執(zhí)行的啟動塊110??刂破鞔a108可以采取嵌入式控制器(EC)固件的形式,其可以指代可在嵌入式控制器102中執(zhí)行的任何機器可讀指令。替換地,控制器代碼108可以是可以采取機器可讀指令形式的應用軟件。在隨后的討論中,雖然對“EC固件”進行參考,應注意的是可以將該技術或機制應用于其它形式的控制器代碼108。
[0013]在根據(jù)圖1的示例中,EC固件108被包括在系統(tǒng)固件107的啟動塊110。將EC固件108包括在啟動塊110內部可以提供EC固件108已被提供系統(tǒng)固件107的實體簽名的指示,該實體可以是計算系統(tǒng)100的供應商或另一實體。在其它示例中,EC固件108可以與啟動塊110分離。
[0014]啟動塊110是B1S代碼的一部分,并且首先在計算系統(tǒng)100啟動時執(zhí)行。啟動塊110首先在B1S代碼的剩余部分被允許執(zhí)行之前執(zhí)行。啟動塊110可以用來檢查B1S代碼的完整性以及執(zhí)行其它初始功能。如果啟動塊I1確認B1S代碼的完整性,則啟動塊110可以向B1S代碼的主要部分傳遞控制以用于發(fā)起與B1S代碼相關聯(lián)的其余操作。
[0015]在某些實施方式中,啟動塊110可以包括可信測量核心根(CRTM)邏輯,其是由可信計算組(TCG)、行業(yè)標準工作組指定的邏輯。在計算系統(tǒng)100的通電程序期間,CRTM邏輯可以執(zhí)行某些初始化任務,并且可以進行被存儲以供稍后使用的許多測量。CRTM邏輯然后可以在向B1S代碼的主要部分傳遞控制之前檢查B1S代碼。一旦B1S代碼完成執(zhí)行并向OS傳遞控制,則OS可以基于由CRTM邏輯進行的測量來驗證計算系統(tǒng)100的可信任性(trustworthiness)。
[0016]嵌入式控制器102在物理上與計算系統(tǒng)100的處理器106分離。處理器106被用于執(zhí)行系統(tǒng)100中的OS、應用程序代碼以及其它代碼。嵌入式控制器102另一方面可以用來執(zhí)行如被編程到EC固件108中的特定預定義任務??梢杂汕度胧娇刂破?02執(zhí)行的任務的示例包括以下各項中的任何一個或某種組合:計算系統(tǒng)100中的電源控制(用于控制向計算系統(tǒng)100中的各種部件供應電源電壓的電源)、計算系統(tǒng)100中的電池的充電和控制、熱監(jiān)視(用以監(jiān)視計算系統(tǒng)100中的溫度)、風扇控制(用以控制計算系統(tǒng)100中的風扇)以及與用戶輸入設備的交互(諸如執(zhí)行計算系統(tǒng)100的鍵盤的掃描或與諸如鼠標、觸控板、觸摸屏等定點設備的交互)。可以用微控制器、專用集成電路(ASIC)、可編程門陣列(PGA)或任何其它類型的可編程電路來實現(xiàn)嵌入式控制器102。
[0017]計算系統(tǒng)100還包括私用非易失性存儲器116,其存儲系統(tǒng)固件拷貝114,其中,系統(tǒng)固件拷貝114包括啟動塊132和EC固件130。私用非易失性存儲器116中的系統(tǒng)固件拷貝114可以是共享非易失性存儲器104中的系統(tǒng)固件107的復制品。替換地,系統(tǒng)固件拷貝114可以是與系統(tǒng)固件107不同的版本(較晚版本或較早版本)。
[0018]在某些實施方式中,嵌入式控制器102可以首先在計算系統(tǒng)100的重啟期間嘗試使用私用非易失性存儲器116中的EC固件130。如果嵌入式控制