檢驗(yàn)設(shè)備的固件完整性的制作方法
【專利摘要】在一個(gè)實(shí)施例中,本發(fā)明包括一種方法,用于在計(jì)算機(jī)系統(tǒng)的設(shè)備中接收來自設(shè)備外部的軟件實(shí)體的完整性請(qǐng)求,使用設(shè)備的完整性測(cè)量邏輯來執(zhí)行設(shè)備的固件的測(cè)量,分析設(shè)備的多個(gè)指針結(jié)構(gòu)以確定是否存在潛在安全性侵犯,并且向軟件實(shí)體發(fā)送測(cè)量以及與分析有關(guān)的狀態(tài)報(bào)告。描述并且要求保護(hù)其它實(shí)施例。
【專利說明】檢驗(yàn)設(shè)備的固件完整性
【背景技術(shù)】
[0001]基于個(gè)人計(jì)算機(jī)(PC)的以及諸如平板計(jì)算機(jī)、上網(wǎng)本、移動(dòng)因特網(wǎng)設(shè)備等的較新形狀因數(shù)的現(xiàn)代計(jì)算機(jī)系統(tǒng)通常包括多個(gè)半導(dǎo)體組件,其中包括各種類型的處理電路、存儲(chǔ)器、圖形處理等。另外,隨著時(shí)間的過去,許多半導(dǎo)體組件、例如處理器和某些組件結(jié)合了以前常常由分立設(shè)備來處理的許多功能性。例如,如中斷控制之類的各種外設(shè)功能性、網(wǎng)絡(luò)接口、如芯片組之類的接口電路、存儲(chǔ)控制器功能性等等現(xiàn)在常常能夠在單個(gè)半導(dǎo)體組件中(例如在多核處理器內(nèi))實(shí)現(xiàn)。
[0002]另外,給定計(jì)算機(jī)系統(tǒng)能夠具有各種硬件設(shè)備,諸如經(jīng)由諸如高級(jí)圖形處理卡、連網(wǎng)卡之類的插入卡存在于系統(tǒng)內(nèi)的其它半導(dǎo)體組件,以及其它外圍設(shè)備。因此,半導(dǎo)體設(shè)備外部和內(nèi)部的這些各種組件能夠包括它們自己的處理電路,例如微控制器等,以按照固件或者其它監(jiān)視軟件來執(zhí)行預(yù)計(jì)操作。這個(gè)固件一般不是如防病毒軟件之類的安全性監(jiān)測(cè)軟件可訪問的。因此,惡意軟件能夠作為這類硬件設(shè)備內(nèi)的固件留在安全性監(jiān)測(cè)軟件看不見的位置。因此,有可能令某些威脅經(jīng)由這種固件來損害計(jì)算機(jī)系統(tǒng)。
[0003]通常,簡(jiǎn)單地假設(shè):運(yùn)行的固件與其最初被加載/引導(dǎo)到微控制器中那樣相比,沒有受到損害或者以其它方式改變。如果關(guān)于固件可能已經(jīng)改變?cè)腥魏芜\(yùn)行時(shí)間擔(dān)憂,則典型的做法是執(zhí)行設(shè)備重置,以使微控制器刷新當(dāng)前運(yùn)行的固件并且重新加載引導(dǎo)圖像。
【專利附圖】
【附圖說明】
[0004]圖1是按照本發(fā)明的一個(gè)實(shí)施例、用于執(zhí)行完整性評(píng)估的方法的流程圖。
[0005]圖2是按照本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖。
[0006]圖3是按照本發(fā)明的一個(gè)實(shí)施例的典型設(shè)備的框圖。
[0007]圖4是示出按照本發(fā)明的一個(gè)實(shí)施例的完整性分析的進(jìn)一步細(xì)節(jié)的流程圖。
[0008]圖5是按照本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖。
【具體實(shí)施方式】
[0009]在各種實(shí)施例中,硬件設(shè)備能夠使一種機(jī)制暴露于外部監(jiān)測(cè)代理、例如(設(shè)備外部的)外部軟件,該機(jī)制使監(jiān)測(cè)代理能夠可靠地查詢關(guān)于硬件設(shè)備內(nèi)運(yùn)行的固件的完整性。這樣,如防病毒軟件之類的外部安全性監(jiān)測(cè)軟件能夠用來檢測(cè)計(jì)算生態(tài)系統(tǒng)中的硬件設(shè)備的完整性侵犯或損害。注意,能夠使用本文所述的實(shí)施例對(duì)多種各樣的硬件設(shè)備進(jìn)行完整性檢驗(yàn)。作為便于說明而不是進(jìn)行限制的示例,硬件設(shè)備能夠是存在于PC或包括可編程控制器的其它計(jì)算機(jī)生態(tài)系統(tǒng)內(nèi)的任何方式的硬件。這類設(shè)備能夠作為插入卡、耦合到系統(tǒng)的芯片組的外圍設(shè)備、芯片組組件、中央處理單元(CPU)或其它這類設(shè)備或者其部分。
[0010]現(xiàn)在參照?qǐng)D1,所示的是按照本發(fā)明的一個(gè)實(shí)施例、用于執(zhí)行完整性評(píng)估的方法的流程圖。如圖1所示,方法100可在具有要經(jīng)過完整性校驗(yàn)的固件或其它軟件的設(shè)備的硬件內(nèi)實(shí)現(xiàn)。固件包括例程,這些例程存儲(chǔ)在易失性或者非易失性存儲(chǔ)器結(jié)構(gòu)(諸如隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、閃存等)中,并且提供對(duì)諸如處理器或微控制器之類的可編程邏輯的監(jiān)視控制。如本文所使用的術(shù)語“固件”意在包括操作軟件和/或監(jiān)視軟件或者在設(shè)備外部的實(shí)體不可見的設(shè)備控制器內(nèi)運(yùn)行的其它軟件。另外,方法100還可部分經(jīng)由如完整性軟件(例如防病毒軟件)之類的外部實(shí)體來運(yùn)行,所述外部實(shí)體存在于計(jì)算機(jī)系統(tǒng)中或者是計(jì)算機(jī)系統(tǒng)經(jīng)由網(wǎng)絡(luò)遠(yuǎn)程可訪問的。在其它實(shí)施例中,除了對(duì)執(zhí)行完整性校驗(yàn)的硬件支持之外,還有可能的是,例如固件本身的分離代碼段能夠用來執(zhí)行完整性分析的至少一部分。也就是說,在沒有專用完整性邏輯的實(shí)施例中,設(shè)備的微控制器能夠暫時(shí)被置于部分置信狀態(tài),其中它運(yùn)行ROM中存儲(chǔ)的完整性軟件。注意,這個(gè)完整性軟件或測(cè)量代碼被隔離。在測(cè)量代碼的運(yùn)行之后,記錄測(cè)量信息,并且微控制器返回到非置信狀態(tài)。
[0011]如在圖1中看到的,方法100可開始于在設(shè)備中接收來自外部實(shí)體的完整性請(qǐng)求(框110)。為了便于本文的論述,假定外部實(shí)體是運(yùn)行于系統(tǒng)的處理器上的防病毒軟件,它設(shè)法測(cè)試設(shè)備(為了便于本文的論述,可假定設(shè)備是具有微控制器的插入卡)的固件的完整性。因此,這個(gè)請(qǐng)求可由微控制器來接收。
[0012]響應(yīng)于該請(qǐng)求,設(shè)備的專用完整性檢驗(yàn)邏輯能夠執(zhí)行固件的測(cè)量(框120)。在各種實(shí)施例中,測(cè)量能夠是密碼測(cè)量,例如將要由設(shè)備的一個(gè)或多個(gè)可編程控制器運(yùn)行的一個(gè)或多個(gè)圖像(例如設(shè)備固件和/或其它控制器代碼)的哈希。在不同實(shí)現(xiàn)中,能夠?qū)Π瑘D像的實(shí)際哈希的證明進(jìn)行哈希,或者能夠直接對(duì)圖像本身進(jìn)行哈希。能夠使用完整性檢驗(yàn)邏輯的嵌入式哈希函數(shù)(諸如安全哈希算法I (Shal)、Sha2或者高級(jí)加密標(biāo)準(zhǔn)基于哈希的消息認(rèn)證碼(HMAC)、密碼消息認(rèn)證碼(CMAC)等等)來計(jì)算這類哈希。隨后,測(cè)量能夠存儲(chǔ)在設(shè)備存儲(chǔ)裝置中(框125)。在一些實(shí)施例中,這個(gè)設(shè)備存儲(chǔ)裝置可以是安全存儲(chǔ)裝置,例如在完整性檢驗(yàn)邏輯內(nèi)或者僅完整性檢驗(yàn)邏輯可訪問的寄存器。但是,在其它實(shí)施例中,這個(gè)測(cè)量能夠存儲(chǔ)在另一個(gè)位置、例如設(shè)備的靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)中。
[0013]除了這個(gè)固件測(cè)量之外,完整性檢驗(yàn)邏輯還能夠執(zhí)行控制器指針結(jié)構(gòu)的分析(框130)。如下面將進(jìn)一步描述的,在各種實(shí)施例中,這些指針結(jié)構(gòu)能夠包括指令指針、中斷指針和異常處理指針。能夠檢查這些結(jié)構(gòu)中的每個(gè),以確定它們是否指向經(jīng)過了以上在框120的測(cè)量的固件或者其它代碼內(nèi)的對(duì)應(yīng)位置。如果指針確實(shí)指向所測(cè)量代碼外部的位置,則這可能是攻擊者不是通過改變代碼、而是通過添加所測(cè)量代碼塊外部的新代碼、并且改變指針以將控制重定向到這種潛在惡意代碼而篡改的路徑。注意,這個(gè)非固件指向引用可能不是實(shí)際侵犯,但是,它是潛在安全性侵犯存在并且能夠用來損害系統(tǒng)的指示。因此,在菱形框140,能夠響應(yīng)于這個(gè)分析而確定任何指針是否引用所測(cè)量設(shè)備固件外部的位置。如果是的話,則控制轉(zhuǎn)到框150,其中能夠例如通過在狀態(tài)消息的對(duì)應(yīng)字段中標(biāo)識(shí)侵犯來指示侵犯。從菱形框140和框150,控制都轉(zhuǎn)到框160,其中測(cè)量和狀態(tài)消息能夠發(fā)送給外部實(shí)體。注意,向外部實(shí)體的這個(gè)信息報(bào)告沒有暴露關(guān)于設(shè)備上實(shí)際在運(yùn)行什么的秘密或敏感信息。也就是說,所提供的信息可以不是固件代碼的實(shí)際標(biāo)識(shí),而是按照不包括代碼的身份(或者包括代碼本身的任何部分)的方式的代碼的測(cè)量。
[0014]從這一點(diǎn)開始,在方法100的過程中,能夠由外部實(shí)體執(zhí)行動(dòng)作或者在外部實(shí)體的控制下執(zhí)行動(dòng)作。首先,在菱形框165,能夠確定測(cè)量是否匹配設(shè)備固件的白名單中的條目。也就是說,外部實(shí)體可包括或者能夠訪問具有各種條目的數(shù)據(jù)結(jié)構(gòu),各條目對(duì)應(yīng)于經(jīng)授權(quán)的代碼段(例如存在于計(jì)算機(jī)系統(tǒng)中的各種設(shè)備的固件)的所測(cè)量值?;蛘撸@個(gè)白名單能夠是位于計(jì)算機(jī)系統(tǒng)外部的,并且是外部實(shí)體可訪問的。白名單能夠由廠商來提供,或者它能夠當(dāng)首次運(yùn)行給定設(shè)備時(shí)、在運(yùn)行時(shí)間期間動(dòng)態(tài)生成。如果確定測(cè)量不匹配,則控制直接轉(zhuǎn)到框190,其中能夠例如向系統(tǒng)的用戶提供完整性失敗報(bào)告,和/或可采取補(bǔ)救措施。雖然本發(fā)明的范圍并不局限于這個(gè)方面,但是在各種實(shí)現(xiàn)中,這類補(bǔ)救措施可包括關(guān)閉系統(tǒng)、重新加載所述的固件或者另一個(gè)操作,例如發(fā)信號(hào)通知其它硬件或軟件實(shí)體關(guān)于該系統(tǒng)處于非置信狀態(tài)。這能夠使其它實(shí)體能相應(yīng)地作出反應(yīng)(例如,拒絕運(yùn)行安全性敏感操作)。注意,在其它實(shí)施例中,不是發(fā)送報(bào)告,而是能夠生成日志條目,能夠?qū)⑷罩緱l目發(fā)送到預(yù)定位置。
[0015]否則,如果測(cè)量在菱形框165匹配,則控制轉(zhuǎn)到菱形框170,其中能夠確定狀態(tài)消息是否指示侵犯。如果不是,則控制轉(zhuǎn)到框180,其中能夠例如經(jīng)由送往用戶或者另一個(gè)位置的報(bào)告,或者通過按照另一種方式使設(shè)備能夠進(jìn)一步運(yùn)行,來確認(rèn)完整性。相反,如果狀態(tài)消息指示侵犯,則控制轉(zhuǎn)到框190,如上所述。雖然在圖1的實(shí)施例中采用這個(gè)具體實(shí)現(xiàn)示出,但是要理解,本發(fā)明的范圍并不局限于這個(gè)方面。
[0016]如上所述,按照本發(fā)明的一個(gè)實(shí)施例的完整性檢驗(yàn)?zāi)軌蜻m用于許多不同類型的計(jì)算系統(tǒng)。現(xiàn)在參照?qǐng)D2,所示的是按照本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖。注意,系統(tǒng)200可以是任何類型的計(jì)算機(jī)系統(tǒng),諸如服務(wù)器計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板、上網(wǎng)本計(jì)算機(jī)、移動(dòng)因特網(wǎng)設(shè)備、智能電話等等。為了便于說明,圖2中,系統(tǒng)200可以是基于外圍部件互連快遞(PCI Express ? (PCIe?))的系統(tǒng),其中各種組件經(jīng)由各種互連來耦合。這種系統(tǒng)可按照PCIe "*基本規(guī)范2.0版(2007年I月17日發(fā)布)。具體來說,在圖2的實(shí)施例中,處理器220經(jīng)由總線230耦合到輸入/輸出集線器(IOH) 240,IOH 240又經(jīng)由總線250耦合到外設(shè)控制器集線器(PCH) 260。PCH 260又可耦合到置信平臺(tái)模塊(TPM) 290和其它設(shè)備。如所看到的,這些組件中的每個(gè)可包括各種內(nèi)部設(shè)備,并且還可耦合到一個(gè)或多個(gè)其它設(shè)備。每個(gè)這種設(shè)備可包括PCI配置空間或者可與該空間關(guān)聯(lián),PCI配置空間可以是能夠包括配置信息的本地存儲(chǔ)器的一部分。在各種實(shí)施例中,按照本發(fā)明的一個(gè)實(shí)施例,這類配置空間還可包括完整性報(bào)告構(gòu)造。
[0017]如在圖2中看到的,處理器220可包括多個(gè)核222^,以運(yùn)行一個(gè)或多個(gè)線程的指令。另外,處理器220還可 包括非核225,其可包括在處理器核的外部運(yùn)行的處理器的各種系統(tǒng)代理邏輯。另外,處理器220還可包括集成存儲(chǔ)控制器(MC) 228,其可耦合到系統(tǒng)存儲(chǔ)器235,系統(tǒng)存儲(chǔ)器235在圖2所示的實(shí)施例中可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。又如在圖2的實(shí)施例中看到的,IOH 240還可包括可按照直接媒體接口(DMI)協(xié)議的橋接器245。
[0018]又如圖2中所示,PCH 260可包括各種組件,其中包括橋接器和控制器。另外,虛擬化引擎(VE) 262和可管理性引擎(ME) 264可存在,以便為各種外圍設(shè)備提供控制功能。如看到的,PCH 260還可包括控制器和橋接器268、270、272、274、276,以提供各種功能性以及與耦合到PCH的各種設(shè)備進(jìn)行接口。具體來說,PCIe?橋接器268可存在,以及還有控制器,包括串行高級(jí)技術(shù)附連(SATA)控制器270、可擴(kuò)展主機(jī)控制器接口(XHCI)控制器272、低引腳數(shù)(LPC)控制器276和串行外圍接口(SPI)控制器274等等。在一些實(shí)施例中,與PCH一起的附加組件可包括傳感器和專用設(shè)備。為了舉例說明,圖2還示出能夠耦合到這些不同的控制器和橋接器的各種設(shè)備。具體來說,諸如盤驅(qū)動(dòng)器或者其它大容量存儲(chǔ)裝置之類的SATA存儲(chǔ)裝置280能夠耦合到SATA控制器270,XHCI設(shè)備282能夠耦合到XCHCI控制器272,以及SPI設(shè)備284能夠耦合到SPI控制器274。
[0019]各種設(shè)備能夠耦合到PCIe?控制器292,PCIe?控制器292又耦合到PCIe?橋接器268。在圖2所示的示例中,這類設(shè)備可包括網(wǎng)絡(luò)接口控制器(NIC) 296,以實(shí)現(xiàn)系統(tǒng)200與網(wǎng)絡(luò)(諸如例如局域網(wǎng)(LAN)之類的有線網(wǎng)絡(luò)、如無線LAN(WLAN)之類的無線網(wǎng)絡(luò)、或者如蜂窩網(wǎng)絡(luò)之類的寬范圍無線網(wǎng)絡(luò))的其它代理之間的通信。另外,PCIe?設(shè)備294還能夠耦合到PCIe "*控制器。在其它實(shí)施例中,IOH可以不存在,而是處理器220可經(jīng)由DMI或者其它這種互連直接耦合到PCH 250。
[0020]橋接器、控制器和設(shè)備能夠具有可加載固件、支持補(bǔ)丁和更新,并且可連接到其它總線或網(wǎng)絡(luò)。因此,被流氓軟件利用或者對(duì)設(shè)備的其它攻擊的風(fēng)險(xiǎn)存在。因此,實(shí)施例可提供經(jīng)由外部實(shí)體來檢驗(yàn)運(yùn)行于組件上的至少某種代碼的完整性的能力。
[0021]現(xiàn)在參照?qǐng)D3,所示的是典型設(shè)備210的框圖,其能夠一般對(duì)應(yīng)于以上針對(duì)圖2所述設(shè)備的任一個(gè)。設(shè)備210中的每個(gè)可包括固件存儲(chǔ)裝置(其可以是設(shè)備的非易失性存儲(chǔ)器)中存儲(chǔ)的對(duì)應(yīng)固件圖像以及配置空間213。在運(yùn)行期間,固件圖像能夠存儲(chǔ)在如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)之類的較快速存儲(chǔ)器、即設(shè)備存儲(chǔ)器216中。另外,按照本發(fā)明的一個(gè)實(shí)施例,所述設(shè)備中的至少一些設(shè)備能夠包括TPM平臺(tái)配置寄存器(PCR)211,以幫助執(zhí)行完整性分析。又如在圖2中看到的,完整性測(cè)量邏輯214存在,其能夠包括響應(yīng)于從外部實(shí)體接收的觸發(fā)而對(duì)設(shè)備的固件和/或其它代碼執(zhí)行完整性校驗(yàn)的硬件。一般來說,按照本發(fā)明的一個(gè)實(shí)施例,完整性測(cè)量邏輯能夠是配置成執(zhí)行完整性分析的嵌入式固定功能硬件單元。在這類實(shí)施例中,這個(gè)固定功能單元可以僅響應(yīng)于來自外部安全性監(jiān)測(cè)代理(例如防病毒軟件)的請(qǐng)求的接收而進(jìn)行操作。另外,設(shè)備210能夠包括一個(gè)或多個(gè)完整性寄存器215,以存儲(chǔ)由完整性測(cè)量邏輯所進(jìn)行的測(cè)量。在一些實(shí)施例中,這些寄存器能夠?qū)?yīng)于TPM PCR,而在其它實(shí)施例中,這些寄存器可以是結(jié)構(gòu)的不同集合。此外,這些寄存器中的至少一個(gè)能夠配置成存儲(chǔ)包括多個(gè)字段的狀態(tài)消息,所述多個(gè)字段能夠由完整性測(cè)量邏輯來寫入,以指示設(shè)備的各種其它結(jié)構(gòu)的狀態(tài)。具體來說,又如在圖2中看到的,設(shè)備210可包括多個(gè)指針結(jié)構(gòu)219a-c。這類指針結(jié)構(gòu)可包括指令指針、中斷指針和異常處理指針。雖然描述為存儲(chǔ)這各種指針的硬件結(jié)構(gòu),但是要理解,在其它實(shí)施例中,這類指針能夠存儲(chǔ)在本地存儲(chǔ)器中,以便例如在完整性分析操作期間被訪問,以確認(rèn)這類結(jié)構(gòu)中存在的各種指針沒有指向所測(cè)量代碼外部的位置。
[0022]又如看到的,設(shè)備210可包括一個(gè)或多個(gè)控制器218 (例如微控制器),其上能夠運(yùn)行設(shè)備固件??刂破?18可在固件控制下進(jìn)行操作,在一些實(shí)施例中,所述固件能夠包括按照簡(jiǎn)化指令集計(jì)算(RISC)模型或者復(fù)雜指令集計(jì)算(CISC)模型的微碼。控制器218還能夠運(yùn)行各種應(yīng)用和其它用戶級(jí)代碼或者至少來自主機(jī)處理器或其它邏輯提供給設(shè)備的這種代碼的指令。但是,一般來說,實(shí)施例可集中于確定運(yùn)行于控制器218上并且在操作期間存儲(chǔ)于設(shè)備存儲(chǔ)器216中的運(yùn)行固件的完整性。雖然在圖3的實(shí)施例中采用這些具體組件示出,但是要理解,本發(fā)明的范圍并不局限于這個(gè)方面。
[0023]圖4是示出按照本發(fā)明的一個(gè)實(shí)施例的完整性分析的進(jìn)一步細(xì)節(jié)的流程圖。如圖4所示,方法300能夠開始于由外部實(shí)體(例如軟件)向待分析設(shè)備發(fā)送觸發(fā)(框305)。雖然本發(fā)明的范圍并不局限于這個(gè)方面,但是在一個(gè)實(shí)施例中,硬件設(shè)備能夠使觸發(fā)暴露于外部軟件(例如通過PCIe?存儲(chǔ)器管理輸入/輸出(MMIO)寄存器)。注意,這些寄存器可由主機(jī)系統(tǒng)在系統(tǒng)初始化期間配置。因此,硬件設(shè)備能夠接收這個(gè)觸發(fā)事件以發(fā)起各種操作來確定運(yùn)行于硬件設(shè)備上的軟件/固件的可靠性(框310)。作為一個(gè)操作,設(shè)備的完整性邏輯能夠執(zhí)行由硬件設(shè)備的內(nèi)部微控制器所使用的當(dāng)前運(yùn)行/活動(dòng)固件程序代碼(其能夠存儲(chǔ)在內(nèi)部設(shè)備SRAM中)的密碼度量(例如哈?;騂MAC)(框320)。然后,密碼度量能夠被存儲(chǔ)(框325)在例如存儲(chǔ)裝置(例如完整性邏輯的寄存器)中。
[0024]除了這個(gè)度量之外,硬件設(shè)備還能夠評(píng)估和創(chuàng)建報(bào)告(例如,包括一個(gè)或多個(gè)狀態(tài)指示符、例如位標(biāo)志)、即附加運(yùn)行狀態(tài)消息,以指示微控制器的(如適合于所述微控制器的)當(dāng)前運(yùn)行的指令指針、中斷表指針和異常處理程序指針分別是否引用了落入經(jīng)受了密碼度量的固件程序代碼的地址范圍之內(nèi)的位置(框330)。如看到的,這些指針評(píng)估可通過菱形框335、340和框345進(jìn)行循環(huán)。
[0025]在完成指針分析時(shí),控制轉(zhuǎn)到框350,其中能夠向外部實(shí)體軟件報(bào)告(例如通過外部軟件后續(xù)讀取PCI/PC1-express MMIO寄存器)密碼度量值和運(yùn)行狀態(tài)消息,作為對(duì)初始觸發(fā)的響應(yīng)。當(dāng)然,在不同實(shí)施例中,附加或不同操作可在硬件設(shè)備中響應(yīng)于外部軟件請(qǐng)求而執(zhí)行。此外,注意,能夠在設(shè)備初始化時(shí)和/或在系統(tǒng)操作期間的其它時(shí)間、例如每當(dāng)運(yùn)行防病毒軟件掃描時(shí)執(zhí)行完整性分析。
[0026]然后,控制轉(zhuǎn)到框360,其中外部軟件能夠基于這個(gè)信息來確定設(shè)備完整性。作為一個(gè)示例使用情況,外部軟件的職責(zé)是在接收到測(cè)量信息時(shí)分析所接收的測(cè)量信息。作為一個(gè)示例,軟件可將所產(chǎn)生密碼度量哈希值與已知/置信固件哈希值的列表進(jìn)行比較,以確定哈希是否匹配所述值之一。此外,軟件能夠確保沒有運(yùn)行狀態(tài)標(biāo)志指示硬件設(shè)備內(nèi)部微控制器正引用/使用沒有經(jīng)受密碼度量的程序代碼。注意,運(yùn)行狀態(tài)標(biāo)志的數(shù)量和性質(zhì)可對(duì)于不同微控制器是變化的。作為示例,一個(gè)實(shí)施例可選擇使用一個(gè)單一運(yùn)行狀態(tài)標(biāo)志來總體表示被一個(gè)或多個(gè)指針的違反,或者對(duì)于每個(gè)指針專用一個(gè)運(yùn)行狀態(tài)標(biāo)志以便更細(xì)粒度地進(jìn)行運(yùn)行狀態(tài)報(bào)告。
[0027]如果外部軟件確定所測(cè)量哈希匹配,并且確定運(yùn)行狀態(tài)標(biāo)志是正常的,則外部軟件能夠接受運(yùn)行于硬件設(shè)備上的固件的完整性。因此,外部軟件能夠以至少適當(dāng)保證來指示硬件設(shè)備中的運(yùn)行固件尚未被損害或者以其它方式其完整性受影響。而且因此,硬件或軟件能夠在確保系統(tǒng)處于安全狀態(tài)(例如檢驗(yàn)了完整性)之后開始執(zhí)行安全性敏感操作。運(yùn)行狀態(tài)標(biāo)志可指示任何微控制器運(yùn)行指針(例如中斷表指針、異常指針、運(yùn)行指令指針)是否引用沒有經(jīng)過測(cè)量的代碼。這樣,能夠防止惡意程序代碼使原始固件程序代碼保持不變并且改為使用存在于SRAM的未測(cè)量程序數(shù)據(jù)區(qū)域中的替代惡意代碼。
[0028]在各種實(shí)施例中,在硬件設(shè)備中執(zhí)行的密碼度量可以僅測(cè)量存在于硬件設(shè)備的微控制器SRAM中的靜態(tài)固件程序代碼。但是,度量可以不包括也存在于SRAM中的固件程序數(shù)據(jù),因?yàn)闇y(cè)量運(yùn)行時(shí)間程序數(shù)據(jù)能夠產(chǎn)生不相關(guān)/不確定的度量值。
[0029]在各種實(shí)施例中,響應(yīng)于外部軟件請(qǐng)求而執(zhí)行的完整性校驗(yàn)?zāi)軌蛲耆捎布韺?shí)現(xiàn)和提供服務(wù),并且決不在操作中受影響或者具有直接被硬件設(shè)備的微控制器中運(yùn)行的固件所影響的結(jié)果。這樣,能夠防止惡意固件影響其本身的所報(bào)告度量。但是,在其它實(shí)施例中,微控制器本身可運(yùn)行代碼以測(cè)量其自己的SRAM內(nèi)容。但是,對(duì)于這個(gè)體系,各種先決條件可能存在。例如,測(cè)量程序代碼能夠存在于只讀存儲(chǔ)器(ROM)區(qū)域或者不能被微控制器在非置信狀態(tài)期間修改的另一區(qū)域中。另外,能夠?qū)⑽⒖刂破髦糜谥眯艩顟B(tài),而與當(dāng)前(非置信)狀態(tài)無關(guān),這保證能夠根據(jù)微控制器類型而改變的ROM中的測(cè)量程序代碼的正確和準(zhǔn)確運(yùn)行。例如,在一些實(shí)施例中,這種置信狀態(tài)可以是系統(tǒng)管理模式(SMM)、認(rèn)證代碼模塊(ACM)等。此外,測(cè)量值,在由置信狀態(tài)中的微控制器使用測(cè)量程序代碼來報(bào)告之后,一旦微控制器恢復(fù)/返回到先前的非置信狀態(tài),就無法被微控制器改變或改寫??傮w上,“置信”狀態(tài)能夠一般定義為微控制器的可操作過程,該過程令它暫停當(dāng)前固件運(yùn)行并且切換到固件的不同集合的運(yùn)行,其中固件的第二集合的操作與第一固件的影響完全無關(guān)。固件的第一集合被識(shí)別為“非置信”,而固件的第二集合被識(shí)別為“置信”。在一個(gè)實(shí)施例中,可通過停止“非置信”固件(即,待測(cè)量的東西)的運(yùn)行,保存與非置信固件的運(yùn)行相關(guān)的所有微控制器狀態(tài),并且重置/重新初始化所有微控制器狀態(tài)以刷新(置信)值,來進(jìn)入置信狀態(tài)。
[0030]在各種實(shí)施例中,只有程序代碼SRAM內(nèi)容的密碼哈希和運(yùn)行狀態(tài)標(biāo)志才能夠在硬件設(shè)備與外部軟件之間傳遞,以便減少硬件設(shè)備的微控制器的詳細(xì)操作狀態(tài)的任何非預(yù)計(jì)側(cè)通道信息公開情況。
[0031]因此,按照各種實(shí)施例,能夠避免不必要的設(shè)備重置,以及能夠?qū)崿F(xiàn)關(guān)于運(yùn)行于硬件設(shè)備內(nèi)的固件程序代碼尚未改變的較高等級(jí)的可見性和保證,實(shí)現(xiàn)更置信的計(jì)算生態(tài)系統(tǒng)。
[0032]實(shí)施例可在許多不同的系統(tǒng)類型中實(shí)現(xiàn)。現(xiàn)在參照?qǐng)D5,所示的是按照本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖。如圖5所示,多處理器系統(tǒng)500是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),并且包括經(jīng)由點(diǎn)對(duì)點(diǎn)互連550耦合的第一處理器570和第二處理器580。如圖5所示,處理器570和580中的每個(gè)可以是多核處理器,其中包括第一和第二處理器核(即處理器核574a、574b和處理器核584a、584b),但是可能更多的核可存在于處理器中。這類處理器可運(yùn)行防病毒軟件,防病毒軟件能夠與存在于系統(tǒng)500的附加組件的一個(gè)或多個(gè)中的專用完整性硬件進(jìn)行通信。
[0033]仍然參照?qǐng)D5,第一處理器570還包括存儲(chǔ)控制器集線器(MCH)572和點(diǎn)對(duì)點(diǎn)(P-P)接口 576、578。類似地,第二處理器580包括MCH 582和P-P接口 586、588。如圖5所示,MCH 572、582將處理器耦合到相應(yīng)存儲(chǔ)器、即存儲(chǔ)器532和存儲(chǔ)器534,這些存儲(chǔ)器可以是本地附連到相應(yīng)處理器的主存儲(chǔ)器(例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM))的部分。第一處理器570和第二處理器580可分別經(jīng)由P-P互連552、554耦合到芯片組590。如圖5所示,芯片組590包括P-P接口 594和598。作為一個(gè)示例,芯片組590能夠包括完整性邏輯595,以測(cè)量固件存儲(chǔ)裝置598中存儲(chǔ)的固件的完整性。
[0034]此外,芯片組590包括接口 592,以通過P-P互連539將芯片組590與高性能圖形引擎538耦合。芯片組590又可經(jīng)由接口 596耦合到第一總線516。如圖5所示,各種輸入/輸出(I/O)設(shè)備514可連同總線橋接器518 —起耦合到第一總線516,總線橋接器518將第一總線516耦合到第二總線520。各種設(shè)備可耦合到第二總線520,按照本發(fā)明的一個(gè)實(shí)施例,包括例如鍵盤/鼠標(biāo)522、通信設(shè)備526以及數(shù)據(jù)存儲(chǔ)單元528 (諸如盤驅(qū)動(dòng)器或者其它大容量存儲(chǔ)裝置,其可包括代碼530,例如以執(zhí)行設(shè)備固件安全性操作)。此外,音頻I/O524可耦合到第二總線520。
[0035]實(shí)施例可通過代碼來實(shí)現(xiàn),并且可存儲(chǔ)在非暫時(shí)存儲(chǔ)介質(zhì)上,存儲(chǔ)介質(zhì)上存儲(chǔ)了能夠用于將系統(tǒng)編程為執(zhí)行指令的指令。存儲(chǔ)介質(zhì)可包括但不限于:任何類型的盤,包括軟盤、光盤、固態(tài)驅(qū)動(dòng)器(SSD)、致密盤只讀存儲(chǔ)器(⑶-ROM)、可改寫致密盤(⑶-RW)和磁光盤;半導(dǎo)體器件,諸如只讀存儲(chǔ)器(ROM)、如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)和靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)之類的隨機(jī)存取存儲(chǔ)器(RAM)、可擦可編程只讀存儲(chǔ)器(EPROM)、閃存、電可擦可編程只讀存儲(chǔ)器(EEPROM);磁卡或光卡;或者適合于存儲(chǔ)電子指令的任何其它類型的介質(zhì)。
[0036]雖然針對(duì)有限數(shù)量的實(shí)施例描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員將會(huì)從中知道大量修改和變更。所附權(quán)利要求意在涵蓋落入本發(fā)明的真實(shí)精神和范圍之內(nèi)的所有這類修改和變更。
【權(quán)利要求】
1.一種方法,包括: 在計(jì)算機(jī)系統(tǒng)的設(shè)備中接收來自所述設(shè)備外部的監(jiān)測(cè)實(shí)體的完整性請(qǐng)求; 使用所述設(shè)備的完整性測(cè)量邏輯來執(zhí)行所述設(shè)備的固件的測(cè)量,并且將所述測(cè)量存儲(chǔ)在所述設(shè)備的存儲(chǔ)裝置中; 分析所述設(shè)備的多個(gè)指針結(jié)構(gòu)以確定是否存在潛在安全性侵犯;以及 向所述監(jiān)測(cè)實(shí)體發(fā)送所述測(cè)量和與所述分析有關(guān)的狀態(tài)報(bào)告。
2.如權(quán)利要求1所述的方法,其中,所述分析包括確定所述指針結(jié)構(gòu)中的任一個(gè)是否指向所測(cè)量固件外部的位置。
3.如權(quán)利要求2所述的方法,還包括:如果所述指針結(jié)構(gòu)中的第一指針結(jié)構(gòu)指向所述所測(cè)量固件外部的位置,則在所述設(shè)備的狀態(tài)存儲(chǔ)裝置的第一字段中標(biāo)識(shí)侵犯。
4.如權(quán)利要求1所述的方法,還包括:從所述設(shè)備的所述存儲(chǔ)裝置向所述監(jiān)測(cè)實(shí)體發(fā)送所述測(cè)量,以使所述監(jiān)測(cè)實(shí)體能夠確定所述測(cè)量是否匹配所述設(shè)備的白名單中的條目,所述白名單包括各存儲(chǔ)對(duì)應(yīng)設(shè)備的固件的測(cè)量的多個(gè)條目。
5.如權(quán)利要求4所述的方法,其中,如果所述測(cè)量不匹配所述白名單中的條目,則所述監(jiān)測(cè)實(shí)體報(bào)告完整性侵犯。
6.如權(quán)利要求4所述的方法,其中,如果所述測(cè)量匹配所述白名單中的條目,則所述監(jiān)測(cè)實(shí)體使所述設(shè)備能夠操作。
7.如權(quán)利要求1所述的方法,其中,執(zhí)行所述測(cè)量包括:使用運(yùn)行完整性代碼塊的所述完整性測(cè)量邏輯來執(zhí)行所述設(shè)備的固件存儲(chǔ)裝置中存儲(chǔ)的所述固件的密碼度量。
8.如權(quán)利要求1所述的方法,還包括:從所述設(shè)備向所述監(jiān)測(cè)實(shí)體發(fā)送所述狀態(tài)報(bào)告,以使所述監(jiān)測(cè)實(shí)體能夠基于所述多個(gè)指針結(jié)構(gòu)中延伸到所測(cè)量固件的區(qū)域之外的指針來確定是否指示潛在指針侵犯。
9.如權(quán)利要求8所述的方法,其中,如果指示所述潛在指針侵犯,則所述監(jiān)測(cè)實(shí)體報(bào)告完整性侵犯。
10.如權(quán)利要求1所述的方法,還包括:接收來自所述計(jì)算機(jī)系統(tǒng)外部的所述監(jiān)測(cè)實(shí)體的所述完整性請(qǐng)求。
11.一種設(shè)備,包括: 微控制器,所述微控制器運(yùn)行設(shè)備固件; 非易失性存儲(chǔ)裝置,所述非易失性存儲(chǔ)裝置存儲(chǔ)所述設(shè)備固件; 多個(gè)指針結(jié)構(gòu),其中包括存儲(chǔ)至少一個(gè)指令指針的第一指針結(jié)構(gòu)、存儲(chǔ)至少一個(gè)中斷處理程序指針的第二指針結(jié)構(gòu)和存儲(chǔ)至少一個(gè)異常處理程序指針的第三指針結(jié)構(gòu);以及 完整性邏輯,所述完整性邏輯接收來自外部安全性監(jiān)測(cè)代理的完整性驗(yàn)證請(qǐng)求,測(cè)量所述設(shè)備固件并且將所述設(shè)備固件的密碼度量存儲(chǔ)在所述設(shè)備的第二存儲(chǔ)裝置中,確定所述多個(gè)指針結(jié)構(gòu)中的任一個(gè)是否指向所測(cè)量設(shè)備固件外部的位置,如果是的話,則設(shè)置狀態(tài)消息的對(duì)應(yīng)指示符,并且向所述外部安全性監(jiān)測(cè)代理報(bào)告所述密碼度量和所述狀態(tài)消肩、O
12.如權(quán)利要求11所述的設(shè)備,其中,所述設(shè)備包括耦合到計(jì)算機(jī)系統(tǒng)的外設(shè)控制器集線器(PCH)的外圍設(shè)備,所述PCH耦合到所述計(jì)算機(jī)系統(tǒng)的處理器,其中所述外部安全性監(jiān)測(cè)代理是要運(yùn)行于所述處理器上的防病毒軟件。
13.如權(quán)利要求11所述的設(shè)備,其中,所述設(shè)備包括第一計(jì)算機(jī)系統(tǒng)的外圍設(shè)備,以及所述外部安全性監(jiān)測(cè)代理包括運(yùn)行于遠(yuǎn)程耦合到所述第一計(jì)算機(jī)系統(tǒng)的第二計(jì)算機(jī)系統(tǒng)的處理器上的軟件。
14.如權(quán)利要求13所述的設(shè)備,其中,所述完整性邏輯包括僅響應(yīng)于來自所述外部安全性監(jiān)測(cè)代理的所述完整性驗(yàn)證請(qǐng)求的接收而操作的固定功能單元。
15.如權(quán)利要求11所述的設(shè)備,其中,所述微控制器包括所述完整性邏輯,其中,響應(yīng)于所述完整性驗(yàn)證請(qǐng)求并且在與所述設(shè)備固件分離的完整性代碼塊的運(yùn)行之前,將所述微控制器置于置信狀態(tài),以及在所述設(shè)備固件測(cè)量和指針結(jié)構(gòu)確定之后,所述微控制器退出所述置信狀態(tài)。
16.—種系統(tǒng),包括: 處理器,所述處理器運(yùn)行安全性軟件;以及 耦合到所述處理器的外圍設(shè)備,所述外圍設(shè)備包括運(yùn)行固件圖像的控制器、存儲(chǔ)所述固件圖像的非易失性存儲(chǔ)裝置以及完整性邏輯,所述完整性邏輯接收來自所述安全性軟件的完整性驗(yàn)證請(qǐng)求,測(cè)量所述固件圖像以生成所述固件圖像的密碼度量,并且向所述安全性軟件報(bào)告所述密碼度量。
17.如權(quán)利要求16所述的系統(tǒng),其中,所述外圍設(shè)備還包括多個(gè)指針結(jié)構(gòu),其中包括: 存儲(chǔ)至少一個(gè)指令指針的第一指針結(jié)構(gòu); 存儲(chǔ)至少一個(gè)中斷處理程序指針的第二指針結(jié)構(gòu);以及 存儲(chǔ)至少一個(gè)異常處理程序指針的第三指針結(jié)構(gòu),并且所述外圍設(shè)備響應(yīng)于所述完整性驗(yàn)證請(qǐng)求而訪問所述多個(gè)指針結(jié)構(gòu)以確定是否存在潛在安全性侵犯,如果是的話,則向所述安全性軟件報(bào)告所述潛在安全性侵犯。
18.如權(quán)利要求17所述的系統(tǒng),其中,如果所述潛在安全性侵犯被報(bào)告,則所述安全性軟件報(bào)告完整性侵犯,其中,所述潛在安全性侵犯指示所述多個(gè)指針結(jié)構(gòu)中的至少一個(gè)指向所述固件圖像外部的位置。
19.如權(quán)利要求16所述的系統(tǒng),其中,如果所述密碼度量不匹配白名單中的條目,則所述安全性軟件報(bào)告完整性侵犯,否則,如果所述密碼度量匹配所述白名單中的條目,則使所述外圍設(shè)備能夠操作。
20.如權(quán)利要求16所述的系統(tǒng),其中,所述外圍設(shè)備耦合到所述系統(tǒng)的外設(shè)控制器集線器(PCH)。
【文檔編號(hào)】G06F11/30GK103765427SQ201180073337
【公開日】2014年4月30日 申請(qǐng)日期:2011年9月7日 優(yōu)先權(quán)日:2011年9月7日
【發(fā)明者】J.B.富里斯塔爾 申請(qǐng)人:英特爾公司