專利名稱:利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)設(shè)備引導(dǎo)技術(shù),尤其涉及利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)。
背景技術(shù):
計(jì)算機(jī)已經(jīng)越來(lái)越多地經(jīng)由諸如因特網(wǎng)之類的網(wǎng)絡(luò)來(lái)互連。盡管這樣的連通性允許用戶訪問各種不同的服務(wù)和數(shù)據(jù),但是,這樣的連通性不是沒有其問題。一個(gè)這樣的問題是,這樣的連通性可以允許惡意程序在這些計(jì)算機(jī)上運(yùn)行。這些惡意程序可以執(zhí)行各種不受歡迎的動(dòng)作,如向其他計(jì)算機(jī)發(fā)動(dòng)攻擊,向其他用戶的計(jì)算機(jī)發(fā)送保密數(shù)據(jù),阻止用戶能夠使用他的或她的計(jì)算機(jī)等等。對(duì)于某些類型的惡意程序,一旦惡意程序已經(jīng)在計(jì)算機(jī)上運(yùn)行,用戶就很難標(biāo)識(shí)并移除惡意程序或者甚至使用他的或她的計(jì)算機(jī)。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡(jiǎn)化形式介紹將在以下的具體實(shí)施方式
中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限定所要求保護(hù)的主題的范圍。根據(jù)一個(gè)或多個(gè)方面,引導(dǎo)計(jì)算設(shè)備的方法包括執(zhí)行一個(gè)或多個(gè)固件組件。在執(zhí)行一個(gè)或多個(gè)固件組件之后,執(zhí)行引導(dǎo)加載器組件。標(biāo)識(shí)計(jì)算設(shè)備的保護(hù)組件(例如,防惡意軟件程序),在執(zhí)行引導(dǎo)加載器組件之后,保護(hù)組件被作為初始組件來(lái)執(zhí)行。還執(zhí)行一個(gè)或多個(gè)引導(dǎo)組件,這些一個(gè)或多個(gè)引導(dǎo)組件只包括被保護(hù)組件批準(zhǔn)執(zhí)行的引導(dǎo)組件。
在各附圖中,使用相同的標(biāo)號(hào)來(lái)指示相同的特征。圖1示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的實(shí)現(xiàn)利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)的示例設(shè)備。圖2是示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的支持利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)的示例存儲(chǔ)器結(jié)構(gòu)的框圖。圖3是示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的用于引導(dǎo)設(shè)備的示例過(guò)程的流程圖。圖4是示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的用于批準(zhǔn)一個(gè)或多個(gè)組件執(zhí)行的示例過(guò)程的流程圖。圖5示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的可以被配置成實(shí)現(xiàn)利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)的示例計(jì)算設(shè)備。
具體實(shí)施例方式
此處討論了利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)。遵循特定組件順序來(lái)弓I導(dǎo)計(jì)算設(shè)備。執(zhí)行固件組件,接下來(lái)是操作系統(tǒng)的引導(dǎo)加載器組件,接下來(lái)是保護(hù)組件(例如,防惡意軟件程序)。保護(hù)組件評(píng)估一個(gè)或多個(gè)附加的引導(dǎo)組件(如引導(dǎo)關(guān)鍵組件,沒有它們,操作系統(tǒng)就不能運(yùn)行),且只執(zhí)行被批準(zhǔn)執(zhí)行的弓I導(dǎo)組件。只有在引導(dǎo)組件滿足加載策略或弓I 導(dǎo)組件在被批準(zhǔn)的引導(dǎo)組件的列表上的情況下,引導(dǎo)組件才被批準(zhǔn)執(zhí)行。此被批準(zhǔn)的引導(dǎo)組件的列表可以按防止篡改被批準(zhǔn)列表和/或允許對(duì)列表的任何篡改被檢測(cè)到的方式來(lái)存儲(chǔ)。在引導(dǎo)過(guò)程的早期,執(zhí)行保護(hù)組件,從而允許保護(hù)組件防止已知的惡意程序在引導(dǎo)過(guò)程期間(以及之后)執(zhí)行。此處引用了公鑰密碼和數(shù)字簽名。雖然這樣的加密對(duì)于本領(lǐng)域的技術(shù)人員是已知的,但是,這里仍對(duì)它們進(jìn)行簡(jiǎn)要概述以幫助讀者。在公鑰加密中,一個(gè)實(shí)體(如用戶、硬件或軟件組件、設(shè)備、域等等)具有與它相關(guān)聯(lián)的公/私鑰對(duì)??梢允构€公開,但是,該實(shí)體對(duì)私鑰保密。若沒有私鑰,從計(jì)算上來(lái)說(shuō)很難解密使用公鑰加密的數(shù)據(jù)。如此,數(shù)據(jù)可以由具有公鑰的任何實(shí)體加密,而只能由具有對(duì)應(yīng)的私鑰的實(shí)體解密。另外,也可以通過(guò)使用數(shù)據(jù)和私鑰來(lái)生成該數(shù)據(jù)的數(shù)字簽名。若沒有私鑰,從計(jì)算上來(lái)說(shuō)很難創(chuàng)建可以使用公鑰驗(yàn)證的簽名。具有公鑰的任何實(shí)體都可以使用公鑰,通過(guò)對(duì)公鑰、簽名,以及被簽名的數(shù)據(jù)執(zhí)行合適的數(shù)字簽名驗(yàn)證算法,來(lái)驗(yàn)證數(shù)字簽名。執(zhí)行這樣的數(shù)字簽名驗(yàn)證算法允許實(shí)體驗(yàn)證數(shù)據(jù)是由擁有私鑰的實(shí)體簽名的,并且,數(shù)據(jù)在被簽名之后,沒有被更改。另外,此處還引用了散列或散列值。雖然散列對(duì)于本領(lǐng)域的技術(shù)人員是已知的,但是,這里仍對(duì)它們進(jìn)行簡(jiǎn)要概述以幫助讀者。散列或散列值是指通過(guò)向輸入應(yīng)用散列函數(shù)而獲得的值。散列函數(shù)可以是密碼散列函數(shù),其是生成散列值的散列函數(shù),如果對(duì)輸入的更改,則該散列值也變化。如此,密碼散列函數(shù)可以在兩個(gè)不同的時(shí)間為特定輸入生成散列, 并如果散列相同,則確定在兩個(gè)不同的時(shí)間之間輸入沒有變化(如果散列不同,那么,輸入已經(jīng)更改)。此處所討論的散列通常是使用密碼散列函數(shù)生成的。圖1示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的實(shí)現(xiàn)利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)的示例設(shè)備100。設(shè)備100執(zhí)行允許設(shè)備100執(zhí)行各種操作的各種組件或模塊。這些組件或模塊包括通常存儲(chǔ)在非易失性存儲(chǔ)器或存儲(chǔ)設(shè)備(例如,閃存、只讀存儲(chǔ)器(ROM)、磁盤、 光盤、通過(guò)網(wǎng)絡(luò)訪問的遠(yuǎn)程設(shè)備或存儲(chǔ)等等)中的指令和/或數(shù)據(jù)。這些組件或模塊被從非易失性存儲(chǔ)器或存儲(chǔ)設(shè)備加載到一個(gè)或多個(gè)易失性存儲(chǔ)器中(例如,隨機(jī)存取存儲(chǔ)器 (RAM)),由一個(gè)或多個(gè)處理器從這些易失性存儲(chǔ)器中檢索并執(zhí)行它們。當(dāng)設(shè)備100被通電或以其他方式復(fù)位時(shí),設(shè)備100引導(dǎo)。設(shè)備100的引導(dǎo)是指設(shè)備100的開始操作,通常加載并執(zhí)行設(shè)備100的操作系統(tǒng)。操作系統(tǒng)包括在設(shè)備100上加載并執(zhí)行的很多組件或模塊(并且被示為,例如,圖1中的組件112、114、116、122,以及124)。 組件的加載是指將組件復(fù)制到易失性存儲(chǔ)器(以及可任選地,對(duì)其他組件或數(shù)據(jù)存儲(chǔ)執(zhí)行附加配置)。執(zhí)行組件是指由設(shè)備100的處理器運(yùn)行(執(zhí)行)組件的指令。在設(shè)備100被引導(dǎo)之后,各種其他程序可以在設(shè)備100上運(yùn)行。此處所討論的利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)始于在引導(dǎo)過(guò)程的早期執(zhí)行保護(hù)組件,從而允許惡意程序被標(biāo)識(shí)并被防止在設(shè)備 100上運(yùn)行。設(shè)備100可以是各種不同類型的設(shè)備。例如,計(jì)算設(shè)備100可以是臺(tái)式計(jì)算機(jī)、筆記本電腦或膝上型計(jì)算機(jī)、筆記本型計(jì)算機(jī)、移動(dòng)站、娛樂設(shè)備、可通信地耦合到顯示設(shè)備的機(jī)頂盒、電視機(jī)、蜂窩式或其他無(wú)線電話、游戲控制臺(tái)、車載計(jì)算機(jī)等等。如此,計(jì)算設(shè)備 100可以從帶有相當(dāng)大的存儲(chǔ)器和處理器資源的完全資源設(shè)備(例如,個(gè)人計(jì)算機(jī)、游戲控制臺(tái))到具有有限的存儲(chǔ)器和/或處理資源的低資源設(shè)備(例如,傳統(tǒng)的機(jī)頂盒、手持式游戲控制臺(tái))。設(shè)備100使用包括平臺(tái)級(jí)別102、內(nèi)核級(jí)別104,以及用戶級(jí)別106的體系結(jié)構(gòu)。這些不同級(jí)別是指設(shè)備100的不同的模式或安全性分區(qū),且較低安全級(jí)別的組件被防止直接訪問更高安全級(jí)別的組件。在設(shè)備100中,平臺(tái)級(jí)別102是最高的安全級(jí)別,內(nèi)核級(jí)別104 是次最高安全級(jí)別,而用戶級(jí)別106是最低安全級(jí)別。這些不同級(jí)別可以以各種不同的常規(guī)方式實(shí)現(xiàn),如使用不同的處理器環(huán)。雖然在圖1中示出了三個(gè)級(jí)別,但是,應(yīng)該注意,可以替換地使用不同數(shù)量的安全級(jí)別(例如,四個(gè)或更多安全級(jí)別)。在引導(dǎo)過(guò)程中,一個(gè)或多個(gè)固件組件112是在引導(dǎo)過(guò)程中由設(shè)備加載和執(zhí)行的第一組件。固件組件112在平臺(tái)級(jí)別102下執(zhí)行。固件組件112被存儲(chǔ)在設(shè)備100的非易失性存儲(chǔ)器中。固件組件112可以存儲(chǔ)在只讀存儲(chǔ)器中,或者,替換地被存儲(chǔ)在可寫入非易失性存儲(chǔ)器(如閃存)中。在其中一個(gè)或多個(gè)固件組件112被存儲(chǔ)在可寫入非易失性存儲(chǔ)器中的各實(shí)施例中,通常要進(jìn)行監(jiān)護(hù)以確保這樣的固件組件112沒有被篡改(由此沒有被惡意程序改變)。例如,可以通過(guò)使用各種常規(guī)的受信任引導(dǎo)或安全引導(dǎo)技術(shù)等等,來(lái)驗(yàn)證存儲(chǔ)在可寫入非易失性存儲(chǔ)器中的組件112上的簽名,將組件112存儲(chǔ)在只有其他固件組件 112才可訪問的受保護(hù)的存儲(chǔ)器中,進(jìn)行這樣的監(jiān)護(hù)。固件組件112啟動(dòng)引導(dǎo)加載器組件114的執(zhí)行。引導(dǎo)加載器組件114是在內(nèi)核級(jí)別104執(zhí)行的操作系統(tǒng)組件。引導(dǎo)加載器組件114通常在被執(zhí)行之前由固件組件112來(lái)加載和驗(yàn)證。可以以不同的方式來(lái)驗(yàn)證弓I導(dǎo)加載器組件114,如通過(guò)驗(yàn)證弓I導(dǎo)加載器組件114 的數(shù)字簽名(由固件組件112被配置為(例如,被編程為)信任的實(shí)體所生成的)。引導(dǎo)加載器組件114將保護(hù)組件116標(biāo)識(shí)為引導(dǎo)加載器組件114將要執(zhí)行的初始組件。如此,保護(hù)組件116是在執(zhí)行引導(dǎo)加載器組件114之后執(zhí)行的初始或第一組件。引導(dǎo)加載器組件114可以以各種不同的方式來(lái)標(biāo)識(shí)保護(hù)組件116。 在一個(gè)或多個(gè)實(shí)施例中,保護(hù)組件116是經(jīng)過(guò)數(shù)字簽名的(由引導(dǎo)加載器組件114 被配置為(例如,被編程為)信任的實(shí)體)。此數(shù)字簽名可包括證書(例如,經(jīng)數(shù)字簽名的聲明或證書),說(shuō)明保護(hù)組件116是特定類的組件,與特定信任級(jí)別相關(guān)聯(lián)(例如,多個(gè)信任級(jí)別中的最高信任級(jí)別),是特定類型的組件(例如,防惡意軟件組件)等等。引導(dǎo)加載器組件114可以使用此證書來(lái)標(biāo)識(shí)保護(hù)組件116。例如,引導(dǎo)加載器組件114可以通過(guò)標(biāo)識(shí)具有數(shù)字簽名的組件來(lái)標(biāo)識(shí)保護(hù)組件116,數(shù)字簽名帶有指示該組件是由一個(gè)或多個(gè)制造商中的特定制造商制造的特定類型的組件的證書。替換地,引導(dǎo)加載器組件114可以以不同的方式標(biāo)識(shí)保護(hù)組件116,如通過(guò)標(biāo)識(shí)具有特定散列值的組件,標(biāo)識(shí)存儲(chǔ)在受保護(hù)的非易失性存儲(chǔ)器中的特定位置的組件等等。保護(hù)組件116操作以幫助保護(hù)設(shè)備100免遭惡意程序攻擊。保護(hù)組件116可以, 例如,保護(hù)操作系統(tǒng)內(nèi)核免遭惡意程序攻擊。在一個(gè)或多個(gè)實(shí)施例中,保護(hù)組件116是使用各種不同的技術(shù)來(lái)標(biāo)識(shí)惡意程序的防惡意軟件組件或程序(例如,防病毒和/或和防間諜軟件組件或程序)。保護(hù)組件116標(biāo)識(shí)一個(gè)或多個(gè)被請(qǐng)求的組件,并確定一個(gè)或多個(gè)被請(qǐng)求的組件中的每一個(gè)是否將要在設(shè)備100中執(zhí)行。被請(qǐng)求的組件是指由另一個(gè)組件、模塊或設(shè)備指示為要執(zhí)行的組件。然而,這樣的被請(qǐng)求的組件不執(zhí)行,直到被保護(hù)組件116批準(zhǔn)。在一個(gè)或多個(gè)實(shí)施例中,保護(hù)組件116標(biāo)識(shí)一個(gè)或多個(gè)被請(qǐng)求的引導(dǎo)關(guān)鍵組件,并確定一個(gè)或多個(gè)被請(qǐng)求的引導(dǎo)關(guān)鍵組件中的每一個(gè)是否將作為引導(dǎo)關(guān)鍵組件122來(lái)執(zhí)行。引導(dǎo)關(guān)鍵組件是指為了使操作系統(tǒng)在設(shè)備100上引導(dǎo)而所需的組件。某些組件是可選的,且如果不執(zhí)行,則引導(dǎo)過(guò)程仍可以完成,并且操作系統(tǒng)在設(shè)備100上運(yùn)行(雖然由不被執(zhí)行的組件所提供的功能不可用)。然而,其他組件是引導(dǎo)關(guān)鍵組件,且在沒有引導(dǎo)關(guān)鍵組件的情況下,引導(dǎo)過(guò)程不能正確地完成,操作系統(tǒng)不能在設(shè)備100上運(yùn)行。在一個(gè)或多個(gè)實(shí)施例中,引導(dǎo)加載器組件114將引導(dǎo)關(guān)鍵組件122加載到設(shè)備100 的存儲(chǔ)器中,并調(diào)用保護(hù)組件116批準(zhǔn)已加載的引導(dǎo)關(guān)鍵組件122來(lái)執(zhí)行。雖然引導(dǎo)關(guān)鍵組件122被加載到設(shè)備100的存儲(chǔ)器中,但是,引導(dǎo)關(guān)鍵組件122不被執(zhí)行,直到被保護(hù)組件116批準(zhǔn)執(zhí)行。在被保護(hù)組件116批準(zhǔn)執(zhí)行之后,引導(dǎo)加載器組件114可以執(zhí)行被批準(zhǔn)的引導(dǎo)關(guān)鍵組件122。如果已經(jīng)加載到設(shè)備100的存儲(chǔ)器的引導(dǎo)關(guān)鍵組件沒有被保護(hù)組件 116批準(zhǔn),那么,引導(dǎo)加載器組件114從計(jì)算設(shè)備100的存儲(chǔ)器中卸載這樣的未經(jīng)批準(zhǔn)的引導(dǎo)關(guān)鍵組件。雖然在此處包括了其中由保護(hù)組件116所標(biāo)識(shí)的組件是引導(dǎo)關(guān)鍵組件的討論,但是可另選地,保護(hù)組件116可以標(biāo)識(shí)其他類型的被請(qǐng)求的組件,并確定這樣的其他類型的被請(qǐng)求的組件中的每一個(gè)是否將在設(shè)備100中執(zhí)行。例如,保護(hù)組件116可以確定引導(dǎo)組件(不管引導(dǎo)組件是否是引導(dǎo)關(guān)鍵的)是否將在設(shè)備100中執(zhí)行,其他操作系統(tǒng)組件是否將在設(shè)備100中執(zhí)行,等等??梢砸圆煌姆绞綐?biāo)識(shí)被請(qǐng)求的一個(gè)或多個(gè)引導(dǎo)關(guān)鍵組件。在一個(gè)或多個(gè)實(shí)施例中,由保護(hù)組件116從存儲(chǔ)設(shè)備(例如,設(shè)備100的磁盤或閃存)或從引導(dǎo)加載器組件114 獲取被請(qǐng)求的引導(dǎo)關(guān)鍵組件的列表。此列表可以是具有特定名稱的列表,存儲(chǔ)在特定文件夾或位置的列表等等。此列表通常由例如操作系統(tǒng)制造商或供應(yīng)商來(lái)提供,且是操作系統(tǒng)制造商或供應(yīng)商請(qǐng)求作為引導(dǎo)關(guān)鍵組件122來(lái)執(zhí)行的引導(dǎo)關(guān)鍵組件的列表。保護(hù)組件116 檢索此被請(qǐng)求的引導(dǎo)關(guān)鍵組件的列表,并確定是否作為引導(dǎo)關(guān)鍵組件122來(lái)執(zhí)行列表中的每一個(gè)引導(dǎo)關(guān)鍵組件。保護(hù)組件116至少部分地基于加載策略118和/或被批準(zhǔn)的組件的列表120來(lái)確定被請(qǐng)求的引導(dǎo)關(guān)鍵組件是否被批準(zhǔn)執(zhí)行。加載策略118被存儲(chǔ)在計(jì)算設(shè)備100上,并通常由計(jì)算設(shè)備100從遠(yuǎn)程設(shè)備或服務(wù)獲取(例如,經(jīng)由因特網(wǎng)或其他網(wǎng)絡(luò)來(lái)訪問)。例如, 如果保護(hù)組件116是防惡意軟件程序,則可以從防惡意軟件程序的制造商或供應(yīng)商(或另一個(gè)受信任的第三方)獲取加載策略118。保護(hù)組件116(或者可另選地,引導(dǎo)加載器組件 114)驗(yàn)證加載策略118是來(lái)自于受信任的實(shí)體(例如,由保護(hù)組件116被配置為(例如,被編程為)信任的實(shí)體進(jìn)行數(shù)字簽名)。加載策略118包括可以各種準(zhǔn)則中的一個(gè)或多個(gè),這些準(zhǔn)則被保護(hù)組件116用來(lái)確定是否批準(zhǔn)被請(qǐng)求的組件作為引導(dǎo)關(guān)鍵組件122來(lái)執(zhí)行。保護(hù)組件116基于這些準(zhǔn)則來(lái)評(píng)估被請(qǐng)求的組件,并基于該評(píng)估,確定是否批準(zhǔn)被請(qǐng)求的組件作為引導(dǎo)關(guān)鍵組件122來(lái)執(zhí)行。加載策略118中所包括的準(zhǔn)則可包括組件專用準(zhǔn)則,如被批準(zhǔn)執(zhí)行的組件的標(biāo)識(shí)符 (例如,散列值)的列表,沒有被批準(zhǔn)執(zhí)行的組件的標(biāo)識(shí)符(例如,散列值)的列表等等中的一個(gè)或多個(gè)。加載策略118中所包括的準(zhǔn)則還可以包括要應(yīng)用的更廣泛的準(zhǔn)則,如要應(yīng)用以確定組件是否被批準(zhǔn)執(zhí)行的特定啟發(fā)式法、其組件被批準(zhǔn)執(zhí)行的制造商或供應(yīng)商的列表、其組件沒有被批準(zhǔn)執(zhí)行的制造商或供應(yīng)商的列表、為了批準(zhǔn)組件而無(wú)法存在于該組件中的特定指令或數(shù)據(jù),為了批準(zhǔn)組件而無(wú)法存在于該組件中的特定模式等等中的一個(gè)或多個(gè)。在一個(gè)或多個(gè)實(shí)施例中,加載策略118包括可以各種準(zhǔn)則中的一個(gè)或多個(gè),這些準(zhǔn)則可被保護(hù)組件116用來(lái)確定是否批準(zhǔn)被請(qǐng)求的組件作為引導(dǎo)關(guān)鍵組件122來(lái)執(zhí)行。分開的加載策略(未示出)包括各種準(zhǔn)則中的一個(gè)或多個(gè),這些準(zhǔn)則可以被保護(hù)組件116(或另一個(gè)組件)用來(lái)類似地確定是否要批準(zhǔn)特定組件作為附加操作系統(tǒng)組件1 和/或用戶模式組件126來(lái)執(zhí)行??闪磉x地,加載策略118包括各種準(zhǔn)則中的一個(gè)或多個(gè),這些準(zhǔn)則可以被保護(hù)組件116用來(lái)確定是否要批準(zhǔn)被請(qǐng)求的組件作為引導(dǎo)關(guān)鍵組件122、作為附加操作系統(tǒng)組件124,和/或作為用戶模式組件1 來(lái)執(zhí)行。被批準(zhǔn)列表120是由保護(hù)組件116基于加載策略118已批準(zhǔn)執(zhí)行的組件列表。被批準(zhǔn)列表120包括由保護(hù)組件116先前評(píng)估并批準(zhǔn)執(zhí)行的組件的標(biāo)識(shí)符(例如,散列值) 的列表。被批準(zhǔn)列表120還可以包括用于評(píng)估和批準(zhǔn)被批準(zhǔn)列表120中的組件的加載策略 118的指示(例如,版本號(hào)、時(shí)間戳等等)。被批準(zhǔn)列表120還可以任選地包括附加信息,如由保護(hù)組件116先前評(píng)估但是未被批準(zhǔn)執(zhí)行的組件的標(biāo)識(shí)符(例如,散列值)的列表。被批準(zhǔn)列表120以以下防篡改的方式被存儲(chǔ)防止被批準(zhǔn)列表120被惡意程序篡改,和/或允許對(duì)被批準(zhǔn)列表120的任何篡改被檢測(cè)到,如下面比較詳細(xì)地討論的??闪磉x地,被批準(zhǔn)列表120可包括被批準(zhǔn)的組件本身,而并非組件的標(biāo)識(shí)符。用于評(píng)估和批準(zhǔn)被批準(zhǔn)列表120中的組件的加載策略118的指示被用作記錄保持機(jī)制。該指示允許設(shè)備100的用戶或管理員確定在創(chuàng)建被批準(zhǔn)列表120時(shí)已有的加載策略的特定版本。還可以將此指示提供到遠(yuǎn)程系統(tǒng)或服務(wù)(例如,在從設(shè)備100的用戶接收到這樣做的許可之后),以便允許操作系統(tǒng)制造商或保護(hù)組件制造商分析并試圖改進(jìn)操作系統(tǒng)和/或保護(hù)組件的性能??闪磉x地,不需要維護(hù)用于評(píng)估和批準(zhǔn)被批準(zhǔn)列表120中的組件的加載策略118的這樣的指示,或者也可以與加載策略118分開地維護(hù)。被批準(zhǔn)列表120允許引導(dǎo)關(guān)鍵組件被保護(hù)組件116評(píng)估一次,且在被批準(zhǔn)之后,維護(hù)其批準(zhǔn)的記錄。在設(shè)備100的隨后的引導(dǎo)期間,不必基于加載策略118重新評(píng)估被批準(zhǔn)列表120中標(biāo)識(shí)的引導(dǎo)關(guān)鍵組件。相反地,被批準(zhǔn)列表120中標(biāo)識(shí)的引導(dǎo)關(guān)鍵組件可以被保護(hù)組件116批準(zhǔn),無(wú)需基于加載策略118重新評(píng)估。應(yīng)該注意,加載策略118可以隨著時(shí)間而變化。在標(biāo)識(shí)新惡意程序或用于標(biāo)識(shí)惡意程序的新準(zhǔn)則(例如,由防惡意軟件程序制造商或其他第三方)時(shí)通常更新加載策略 118,如此,加載策略118可以相對(duì)頻繁地變化(例如,每天多次)。由設(shè)備100的一個(gè)組件 (例如,保護(hù)組件116或內(nèi)核級(jí)別104中的另一個(gè)組件)獲取對(duì)加載策略118的更改,并替換以前的加載策略118或修改以前的加載策略。保護(hù)組件116驗(yàn)證對(duì)加載策略118的更改是從受信任的實(shí)體獲得的(例如,更改由保護(hù)組件116被配置為(例如,被編程為)信任的實(shí)體進(jìn)行數(shù)字簽名)。保護(hù)組件116可以以不同的方式來(lái)確定已更改的加載策略118和先前的加載策略之間的差別,如在已更改的加載策略118中指定,通過(guò)比較兩個(gè)加載策略,等寸。已更改的加載策略118可以或者可以不影響被批準(zhǔn)列表120。在對(duì)加載策略118 的更改是被批準(zhǔn)執(zhí)行的組件的標(biāo)識(shí)符列表和/或沒有被批準(zhǔn)執(zhí)行的組件的標(biāo)識(shí)符列表的情況下,保護(hù)組件116標(biāo)識(shí)哪些組件已經(jīng)被更改(例如,哪些組件不再被批準(zhǔn)執(zhí)行)。如果已更改的加載策略不包括對(duì)在被批準(zhǔn)列表120上的組件的更改,那么,被批準(zhǔn)列表120保持有效(不受更改的影響),并可以繼續(xù)被保護(hù)組件116用來(lái)確定是否批準(zhǔn)引導(dǎo)關(guān)鍵組件執(zhí)行。然而,如果對(duì)加載策略118的更改包括被批準(zhǔn)列表120中沒有維護(hù)的啟發(fā)式法或其他廣泛的準(zhǔn)則,那么,被批準(zhǔn)列表120受更改的影響。因此,刪除被批準(zhǔn)列表120 (有效地使被批準(zhǔn)列表失效),并通過(guò)評(píng)估被請(qǐng)求的引導(dǎo)關(guān)鍵組件是否滿足已更改的加載策略118 來(lái)生成新的被批準(zhǔn)列表120。例如,假設(shè)新接收到的已更改的加載策略118包括來(lái)自特定制造商的組件不被批準(zhǔn)執(zhí)行的新準(zhǔn)則。如果被批準(zhǔn)列表120包括被批準(zhǔn)列表120中的組件的制造商的指示,那么,如果被批準(zhǔn)列表中的組件的制造商都不是該特定制造商,則被批準(zhǔn)列表120仍可以使用。然而,如果被批準(zhǔn)列表120不包括被批準(zhǔn)列表120中的組件的制造商的指示,那么,通過(guò)評(píng)估已更改的加載策略118來(lái)生成新被批準(zhǔn)列表120。對(duì)于每一個(gè)被請(qǐng)求的引導(dǎo)關(guān)鍵組件,保護(hù)組件116確定引導(dǎo)關(guān)鍵組件是否包括在被批準(zhǔn)列表120中。此確定可以例如通過(guò)生成被請(qǐng)求的引導(dǎo)關(guān)鍵組件的散列值并檢查該生成的散列值是否包括在被批準(zhǔn)列表120中來(lái)進(jìn)行。如果被請(qǐng)求的引導(dǎo)關(guān)鍵組件包括在被批準(zhǔn)列表120中,那么,被請(qǐng)求的引導(dǎo)關(guān)鍵組件被批準(zhǔn)作為引導(dǎo)關(guān)鍵組件122來(lái)執(zhí)行。對(duì)于未包括在被批準(zhǔn)列表120內(nèi)的每一個(gè)被請(qǐng)求的引導(dǎo)關(guān)鍵組件,保護(hù)組件116 檢查被請(qǐng)求的引導(dǎo)關(guān)鍵組件是否滿足加載策略118。如果由保護(hù)組件116基于加載策略118 中的準(zhǔn)則對(duì)被請(qǐng)求的引導(dǎo)關(guān)鍵組件的評(píng)估指示被請(qǐng)求的引導(dǎo)關(guān)鍵組件被批準(zhǔn)作為引導(dǎo)關(guān)鍵組件122來(lái)執(zhí)行,則被請(qǐng)求的引導(dǎo)關(guān)鍵組件滿足加載策略118。保護(hù)組件116也可任選地將新批準(zhǔn)的引導(dǎo)關(guān)鍵組件的標(biāo)識(shí)符添加到被批準(zhǔn)列表120中。引導(dǎo)加載器組件114加載引導(dǎo)關(guān)鍵組件,但是,只有在由保護(hù)組件116批準(zhǔn)引導(dǎo)關(guān)鍵組件執(zhí)行之后才啟動(dòng)引導(dǎo)關(guān)鍵組件作為引導(dǎo)關(guān)鍵組件122的執(zhí)行。如果已被加載的被請(qǐng)求的引導(dǎo)關(guān)鍵組件不包括在被批準(zhǔn)列表120中且不滿足加載策略118,則被請(qǐng)求的引導(dǎo)關(guān)鍵組件不被批準(zhǔn)作為引導(dǎo)關(guān)鍵組件122來(lái)執(zhí)行。引導(dǎo)加載器組件114不執(zhí)行沒有被批準(zhǔn)作為引導(dǎo)關(guān)鍵組件122來(lái)執(zhí)行的引導(dǎo)關(guān)鍵組件,并且從計(jì)算設(shè)備100的存儲(chǔ)器中卸載這樣的未經(jīng)批準(zhǔn)的引導(dǎo)關(guān)鍵組件。替換地,在將引導(dǎo)關(guān)鍵組件122加載到設(shè)備100的存儲(chǔ)器之前,引導(dǎo)加載器組件 114可以調(diào)用保護(hù)組件116。在這樣的情況下,保護(hù)組件116評(píng)估是否要批準(zhǔn)被請(qǐng)求的引導(dǎo)關(guān)鍵組件中的每一個(gè),如此處所討論的,但是,只有在被保護(hù)組件116批準(zhǔn)加載之后(如此, 也固有地被批準(zhǔn)執(zhí)行)才將引導(dǎo)關(guān)鍵組件122加載到設(shè)備100的存儲(chǔ)器中。在其他實(shí)施例中,引導(dǎo)關(guān)鍵組件122的加載和/或執(zhí)行可以由保護(hù)組件116執(zhí)行而并非由引導(dǎo)加載器組件114執(zhí)行。在一個(gè)或多個(gè)實(shí)施例中,保護(hù)組件116作出哪些引導(dǎo)關(guān)鍵組件被批準(zhǔn)執(zhí)行的確定,但是,延遲向引導(dǎo)加載器組件114通知被批準(zhǔn)的引導(dǎo)關(guān)鍵組件。保護(hù)組件116延遲向引導(dǎo)加載器組件114通知被批準(zhǔn)的引導(dǎo)關(guān)鍵組件,直到被批準(zhǔn)列表120被以這樣的方式被存儲(chǔ)防止被批準(zhǔn)列表120被惡意程序篡改和/或允許對(duì)被批準(zhǔn)列表120的任何篡改被檢測(cè)至IJ。通過(guò)延遲向引導(dǎo)加載器組件114通知被批準(zhǔn)的引導(dǎo)關(guān)鍵組件,保護(hù)組件116知道,引導(dǎo)關(guān)鍵組件122的執(zhí)行也被延遲,如此,防止引導(dǎo)關(guān)鍵組件122(或任何稍后執(zhí)行的組件)篡改被批準(zhǔn)列表120和/或可以檢測(cè)任何篡改被批準(zhǔn)列表120的情況。
在引導(dǎo)關(guān)鍵組件122被執(zhí)行之后,可以執(zhí)行一個(gè)或多個(gè)附加的操作系統(tǒng)組件IM 和/或一個(gè)或多個(gè)用戶模式組件126。可以執(zhí)行各種不同的操作系統(tǒng)組件IM和/或用戶模式組件126??梢皂憫?yīng)于對(duì)執(zhí)行組件IM或1 的用戶請(qǐng)求,或者響應(yīng)于來(lái)自另一個(gè)組件或模塊的請(qǐng)求,執(zhí)行操作系統(tǒng)組件1 和用戶模式組件126。還應(yīng)注意,諸如保護(hù)組件116 之類的先前執(zhí)行的組件可以防止附加的操作系統(tǒng)組件1 和/或用戶模式組件1 執(zhí)行。 例如,如果保護(hù)組件116是防惡意軟件程序并確定特定附加操作系統(tǒng)組件IM或用戶模式組件1 是惡意程序(例如,通過(guò)確定組件IM或1 是否滿足加載策略118),那么,不執(zhí)行該組件1 或126。設(shè)備100被示為包括引導(dǎo)加載器組件114和保護(hù)組件116??闪磉x地,可以將引導(dǎo)加載器組件114和保護(hù)組件116合并到單個(gè)引導(dǎo)和保護(hù)組件。固件組件112啟動(dòng)此單個(gè)引導(dǎo)和保護(hù)組件的執(zhí)行——類似于上文所討論的啟動(dòng)引導(dǎo)加載器組件114的執(zhí)行。然而,此單個(gè)引導(dǎo)和保護(hù)組件批準(zhǔn)引導(dǎo)關(guān)鍵組件執(zhí)行,且還執(zhí)行被批準(zhǔn)執(zhí)行的引導(dǎo)關(guān)鍵組件,而并非讓引導(dǎo)加載器組件114執(zhí)行保護(hù)組件116。如上文所指出的,通過(guò)按以下方式來(lái)存儲(chǔ)來(lái)保護(hù)被批準(zhǔn)列表120免于被竄改防止被批準(zhǔn)列表120被惡意程序篡改,和/或允許對(duì)被批準(zhǔn)列表120的任何篡改被檢測(cè)到??梢砸愿鞣N不同的方式防止竄改被批準(zhǔn)列表120。圖2是示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的支持利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)的示例存儲(chǔ)器結(jié)構(gòu)200的框圖。存儲(chǔ)器結(jié)構(gòu)200促進(jìn)保護(hù)被批準(zhǔn)列表120免遭竄改。存儲(chǔ)器結(jié)構(gòu)200包括存儲(chǔ)設(shè)備202、存儲(chǔ)器204,以及受保護(hù)的存儲(chǔ)器206。存儲(chǔ)設(shè)備202可以是諸如閃存、只讀存儲(chǔ)器(ROM)、磁盤、光盤等等之類的各種不同的非易失性存儲(chǔ)器或存儲(chǔ)設(shè)備。存儲(chǔ)器204可以是諸如RAM之類的各種不同的易失性存儲(chǔ)器設(shè)備。存儲(chǔ)設(shè)備200包括加載策略212 (可以是圖1的加載策略118)、保護(hù)組件214 (可以是圖1的保護(hù)組件)、以及要加載的一個(gè)或多個(gè)組件216(可以是圖1的組件122、124,以及126)。在引導(dǎo)過(guò)程中,將加載策略212加載到存儲(chǔ)器204中作為加載策略218,并且將保護(hù)組件214加載到存儲(chǔ)器 204中作為保護(hù)組件220,如上文參考圖1所討論的。還可以可任選地將一個(gè)或多個(gè)要加載的組件216加載到存儲(chǔ)器204中。受保護(hù)的存儲(chǔ)器206是諸如非易失性RAM(NVRAM)之類的可寫入非易失性存儲(chǔ)器。 只有在特定條件下和/或在特定時(shí)間訪問受保護(hù)的存儲(chǔ)器206。在一個(gè)或多個(gè)實(shí)施例中,經(jīng)由可信平臺(tái)模塊(TPM)來(lái)訪問受保護(hù)的存儲(chǔ)器206??蓮亩砝誖州的Beaverton的Trusted Computing Group (可信計(jì)算組)得到關(guān)于TPM的附加信息。TPM允許受保護(hù)的存儲(chǔ)器206 被讀取和寫入,直到某一時(shí)間點(diǎn)或某一特定事件發(fā)生,此后,TPM允許受保護(hù)的存儲(chǔ)器206 被讀取,但不被寫入。此某一時(shí)間點(diǎn)或事件可以是,例如,來(lái)自組件的對(duì)關(guān)閉或鎖定受保護(hù)的存儲(chǔ)器206的請(qǐng)求。因此,保護(hù)組件220可以將被批準(zhǔn)列表222(可以是圖1的被批準(zhǔn)列表120)存儲(chǔ)在受保護(hù)的存儲(chǔ)器206中,然后,鎖定受保護(hù)的存儲(chǔ)器206。如此,保護(hù)組件220 可以防止惡意程序篡改被批準(zhǔn)列表222,因?yàn)槭鼙Wo(hù)的存儲(chǔ)器206被鎖定。受保護(hù)的存儲(chǔ)器 206不被解除鎖定,直至包括存儲(chǔ)器結(jié)構(gòu)200的設(shè)備再次被引導(dǎo)。下一次設(shè)備被引導(dǎo)時(shí),受保護(hù)的存儲(chǔ)器206被解除鎖定,但是,保護(hù)組件220在引導(dǎo)過(guò)程的初期開始執(zhí)行,并在惡意程序?qū)⒛軌驁?zhí)行并向受保護(hù)的存儲(chǔ)器206寫入之前再次鎖定受保護(hù)的存儲(chǔ)器206??闪磉x地,可以將被批準(zhǔn)列表的標(biāo)識(shí)符(例如,圖1的被批準(zhǔn)列表120的標(biāo)識(shí)符)存儲(chǔ)在受保護(hù)的存儲(chǔ)器206中,而并非將被批準(zhǔn)列表222存儲(chǔ)在受保護(hù)的存儲(chǔ)器206中??梢陨山M件的標(biāo)識(shí)符列表(例如,散列值),并將其存儲(chǔ)在存儲(chǔ)設(shè)備202上??梢杂杀Wo(hù)組件220生成此列表的散列值,并將其存儲(chǔ)在受保護(hù)的存儲(chǔ)器206中。下一次引導(dǎo)包括存儲(chǔ)器結(jié)構(gòu)200的設(shè)備時(shí),在引導(dǎo)過(guò)程期間,保護(hù)組件220從存儲(chǔ)設(shè)備202中檢索該列表,并驗(yàn)證檢索到的列表的散列值匹配受保護(hù)的存儲(chǔ)器206中的散列值(例如,與其相同)。如果檢索到的列表的散列值匹配受保護(hù)的存儲(chǔ)器206中的散列值,那么,保護(hù)組件220知道檢索到的列表沒有被篡改,如此,可以使用檢索到的列表來(lái)作為被批準(zhǔn)列表。然而,如果檢索到的列表的散列值不匹配受保護(hù)的存儲(chǔ)器206中的散列值(例如,與之不相同),那么,保護(hù)組件220知道檢索到的列表已經(jīng)被篡改或以其他方式被改變。如此,保護(hù)組件220不使用檢索到的列表作為被批準(zhǔn)列表(例如,刪除檢索到的列表),而是替代地生成新的被批準(zhǔn)列表 (通過(guò)評(píng)估被請(qǐng)求的引導(dǎo)關(guān)鍵組件是否滿足加載策略,如上文所討論的)。應(yīng)該注意,會(huì)出現(xiàn)新引導(dǎo)關(guān)鍵組件被存儲(chǔ)在設(shè)備上并作為引導(dǎo)關(guān)鍵組件(例如, 作為圖1的引導(dǎo)關(guān)鍵組件12 被批準(zhǔn)執(zhí)行的情形。在這樣的情形下,如果被批準(zhǔn)列表222 被存儲(chǔ)在受保護(hù)的存儲(chǔ)器206中,那么,保護(hù)組件220將新引導(dǎo)關(guān)鍵組件的標(biāo)識(shí)符添加到被批準(zhǔn)列表222中。然而,如果組件的標(biāo)識(shí)符的列表的散列值被存儲(chǔ)在受保護(hù)的存儲(chǔ)器206 中而并非被批準(zhǔn)列表222中,那么,保護(hù)組件220將新引導(dǎo)關(guān)鍵組件的標(biāo)識(shí)符添加到存儲(chǔ)在存儲(chǔ)設(shè)備202上的標(biāo)識(shí)符列表中,基于新的標(biāo)識(shí)符列表,生成新散列值,并將新散列值存儲(chǔ)在受保護(hù)的存儲(chǔ)器206中??闪磉x地,保護(hù)組件220可以存儲(chǔ)分開的列表,該分開的列表包括存儲(chǔ)設(shè)備202上的新引導(dǎo)關(guān)鍵組件的標(biāo)識(shí)符(可僅僅包括新引導(dǎo)關(guān)鍵組件的標(biāo)識(shí)符),基于此分開的列表,生成散列值,并將新生成的散列值存儲(chǔ)在受保護(hù)的存儲(chǔ)器206中。因此, 保護(hù)組件220將從存儲(chǔ)設(shè)備202獲取組件的多個(gè)標(biāo)識(shí)符列表,并將那些多個(gè)列表的散列值與受保護(hù)的存儲(chǔ)器206中的多個(gè)散列值進(jìn)行比較。圖3是示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的用于引導(dǎo)設(shè)備的示例過(guò)程300的流程圖。 過(guò)程300通過(guò)諸如圖1的設(shè)備100之類的設(shè)備來(lái)執(zhí)行,并可以以軟件、固件、硬件,或其組合來(lái)實(shí)現(xiàn)。過(guò)程300是用于引導(dǎo)設(shè)備的示例過(guò)程;此處參考不同的附圖給出了對(duì)于引導(dǎo)設(shè)備的附加討論。在過(guò)程300中,執(zhí)行一個(gè)或多個(gè)固件組件(動(dòng)作30 。固件組件執(zhí)行引導(dǎo)加載器組件(動(dòng)作304)。固件組件可以以不同的方式來(lái)驗(yàn)證引導(dǎo)加載器組件,如上文所討論的。然后,引導(dǎo)加載器組件標(biāo)識(shí)保護(hù)組件(動(dòng)作306),并執(zhí)行已標(biāo)識(shí)的保護(hù)組件(動(dòng)作 308)??梢杂梢龑?dǎo)加載器以各種不同的方式來(lái)標(biāo)識(shí)保護(hù)組件,如上文所討論的。保護(hù)組件是,例如,防惡意軟件程序。保護(hù)組件批準(zhǔn)一個(gè)或更多個(gè)引導(dǎo)關(guān)鍵組件來(lái)執(zhí)行(動(dòng)作310)??梢砸圆煌姆绞酱_定被保護(hù)組件批準(zhǔn)執(zhí)行的引導(dǎo)關(guān)鍵組件,諸如基于加載策略和/或被批準(zhǔn)列表,如上文所討論的。執(zhí)行被保護(hù)組件批準(zhǔn)執(zhí)行的一個(gè)或多個(gè)引導(dǎo)關(guān)鍵組件(動(dòng)作31 。不執(zhí)行未被保護(hù)組件批準(zhǔn)執(zhí)行的引導(dǎo)關(guān)鍵組件(不管是否已經(jīng)加載了這樣的未經(jīng)批準(zhǔn)的組件)??梢杂梢龑?dǎo)加載器組件和/或保護(hù)組件來(lái)加載和執(zhí)行被批準(zhǔn)執(zhí)行的這一個(gè)或多個(gè)引導(dǎo)關(guān)鍵組件。然后,執(zhí)行一個(gè)或多個(gè)附加組件(動(dòng)作314)。由以前執(zhí)行的組件,諸如保護(hù)組件, 引導(dǎo)關(guān)鍵組件等等,來(lái)執(zhí)行這一個(gè)或多個(gè)附加組件。
圖4是示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的用于批準(zhǔn)一個(gè)或多個(gè)組件執(zhí)行的示例過(guò)程400的流程圖。過(guò)程400通過(guò)諸如圖1的保護(hù)組件116之類的保護(hù)組件來(lái)執(zhí)行,并可以以軟件、固件、硬件,或其組合來(lái)實(shí)現(xiàn)。過(guò)程400是用于批準(zhǔn)一個(gè)或多個(gè)組件執(zhí)行的示例過(guò)程;此處參考不同的附圖給出了對(duì)批準(zhǔn)一個(gè)或多個(gè)組件執(zhí)行的附加討論。在過(guò)程400中,就策略更改是否影響被批準(zhǔn)列表作出檢查(動(dòng)作402)。被批準(zhǔn)列表是已經(jīng)由實(shí)現(xiàn)過(guò)程400的保護(hù)組件基于加載策略批準(zhǔn)執(zhí)行的組件列表,如上文所討論的。 可以對(duì)加載策略進(jìn)行不同的更改,并非所有更改都會(huì)影響被批準(zhǔn)列表,如上文所討論的。如果策略更改影響被批準(zhǔn)列表,那么,被批準(zhǔn)列表不再有效,如此,將其刪除(動(dòng)作404)。在被批準(zhǔn)列表被刪除之后,或者如果策略更改不影響被批準(zhǔn)列表,那么,選擇被請(qǐng)求執(zhí)行的組件(動(dòng)作406)??梢砸圆煌姆绞綐?biāo)識(shí)這樣的組件,諸如通過(guò)使用被請(qǐng)求的引導(dǎo)組件的列表,如上文所討論的。這些引導(dǎo)組件可以是引導(dǎo)關(guān)鍵組件,或者替換地是其他類型的組件,如上文所討論的??梢砸圆煌姆绞絹?lái)選擇這些組件,諸如根據(jù)它們?cè)诒徽?qǐng)求的引導(dǎo)組件的列表中的順序,隨機(jī)地,根據(jù)某種其他規(guī)則或準(zhǔn)則等等。就被批準(zhǔn)列表是否可用作出檢查(動(dòng)作408)。出于不同的原因,可能沒有被批準(zhǔn)列表可用,諸如如果設(shè)備先前沒有引導(dǎo),如果被批準(zhǔn)列表被刪除(例如,由于策略更改或檢測(cè)到篡改列表)等等。如果有被批準(zhǔn)列表可用,那么,獲取被批準(zhǔn)列表(動(dòng)作410)。就動(dòng)作406中所選組件是否位于被批準(zhǔn)列表上作出檢查(動(dòng)作412)。如果組件位于被批準(zhǔn)列表上,那么,組件被批準(zhǔn)執(zhí)行(動(dòng)作414)??梢杂蓪?shí)現(xiàn)過(guò)程400的保護(hù)組件來(lái)維護(hù)被批準(zhǔn)執(zhí)行的臨時(shí)組件列表,然后,將其提供到引導(dǎo)加載器組件,以便執(zhí)行被批準(zhǔn)的組件,如下面所討論的。然后,就是否有任何附加組件被請(qǐng)求執(zhí)行作出檢查(動(dòng)作416)。如上文所討論的, 對(duì)于多個(gè)組件,請(qǐng)求執(zhí)行。如果有附加組件在動(dòng)作406中還沒有被選擇,那么,過(guò)程400返回到動(dòng)作406,以選擇還尚未被選擇的組件中的一個(gè)。返回到動(dòng)作408,如果被批準(zhǔn)列表不可用,那么,就組件是否滿足加載策略作出檢查(動(dòng)作418)。加載策略可包括各種不同的準(zhǔn)則,如上文所討論的。如果組件滿足加載策略,那么,將組件添加到被批準(zhǔn)列表中(動(dòng)作420)。然后,過(guò)程400行進(jìn)至動(dòng)作414,其中,組件被批準(zhǔn)執(zhí)行。然而,如果組件不滿足加載策略,那么,實(shí)現(xiàn)過(guò)程400的保護(hù)組件不批準(zhǔn)組件執(zhí)行 (動(dòng)作422)。然后,過(guò)程400行進(jìn)至動(dòng)作416,其中,就是否有任何附加組件被請(qǐng)求執(zhí)行作出檢查。繼續(xù)執(zhí)行動(dòng)作416,在已選擇所有被請(qǐng)求的組件之后(例如,已選擇被請(qǐng)求的組件的列表中標(biāo)識(shí)的所有組件),保存過(guò)程400中對(duì)被批準(zhǔn)列表作出的任何更改(動(dòng)作424)。這種保存還可以包括鎖定或關(guān)閉受保護(hù)的存儲(chǔ)器,諸如如上文所討論的經(jīng)由TPM。然后,向引導(dǎo)加載器組件通知在動(dòng)作414中被批準(zhǔn)執(zhí)行的組件(動(dòng)作426),且引導(dǎo)加載器組件可進(jìn)而執(zhí)行被實(shí)現(xiàn)過(guò)程400的保護(hù)組件批準(zhǔn)執(zhí)行的組件。在被批準(zhǔn)列表被保存之后執(zhí)行已加載的組件防止在動(dòng)作426中執(zhí)行的組件篡改被批準(zhǔn)列表??闪磉x地,如果使用其他技術(shù)來(lái)防止已加載的組件篡改被批準(zhǔn)列表,那么,可以向引導(dǎo)加載器組件通知被批準(zhǔn)執(zhí)行的組件,引導(dǎo)加載器組件可進(jìn)而執(zhí)行這樣的組件,因?yàn)樗鼈儽慌鷾?zhǔn)(例如,在動(dòng)作414中)。在其他實(shí)施例中,保護(hù)組件可以執(zhí)行被批準(zhǔn)執(zhí)行的組件,而并非引導(dǎo)加載器組件,如上文所討論的。
如此,可以看出,使用此處所討論的利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)的技術(shù),引導(dǎo)設(shè)備的過(guò)程按照從比較受信任的到較少受信任的順序來(lái)執(zhí)行組件。比較受信任的組件是指比起較少受信任的組件,被設(shè)備更加信任為非惡意程序的組件。例如,圖1的保護(hù)組件 116比圖1的引導(dǎo)關(guān)鍵組件122更加受信任,由此,當(dāng)引導(dǎo)圖1的設(shè)備100時(shí),在引導(dǎo)關(guān)鍵組件122之前執(zhí)行。再次參考圖1,多個(gè)信任級(jí)別是由設(shè)備100所使用的引導(dǎo)過(guò)程中固有的。 例如,固件組件112比引導(dǎo)加載器組件114更受信任,引導(dǎo)加載器組件114比保護(hù)組件116 更受信任,保護(hù)組件116比引導(dǎo)關(guān)鍵組件122更受信任等等??梢砸愿鞣N方式來(lái)標(biāo)識(shí)與組件相關(guān)聯(lián)的特定信任級(jí)別。例如,組件的信任級(jí)別可以是在較早執(zhí)行的組件中固有的(例如,通過(guò)固件組件112被配置成標(biāo)識(shí)特定引導(dǎo)加載器組件114)。作為另一個(gè)示例,一個(gè)或多個(gè)組件(例如,組件116、122,以及124)可以由受信任的實(shí)體來(lái)進(jìn)行數(shù)字簽名。用于這些組件的數(shù)字簽名可包括組件與特定信任級(jí)別相關(guān)聯(lián)的證書。另外,在以上的討論中,討論了引導(dǎo)加載器組件114執(zhí)行一個(gè)或多個(gè)引導(dǎo)關(guān)鍵組件122。引導(dǎo)關(guān)鍵組件122可以是相同信任級(jí)別,或者可另選地,不同的信任級(jí)別。例如,引導(dǎo)加載器組件114可以執(zhí)行第一組比較受信任的引導(dǎo)關(guān)鍵組件122,然后,執(zhí)行第二組較少受信任的引導(dǎo)關(guān)鍵組件122等等。此處所討論的利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)的技術(shù)支持各種不同的使用情況。例如,防惡意軟件程序在引導(dǎo)過(guò)程的早期開始執(zhí)行。防惡意軟件程序可以檢測(cè)隨后試圖運(yùn)行的惡意程序并防止那些惡意程序運(yùn)行。此外,即使產(chǎn)生惡意程序逃避了檢測(cè)并開始執(zhí)行但是隨后被檢測(cè)(例如,由于已更新的加載策略)的情況,那么,下一次設(shè)備被引導(dǎo)時(shí), 將由防惡意軟件程序檢測(cè)該程序,并防止其運(yùn)行。給定了引導(dǎo)過(guò)程中的防惡意軟件程序運(yùn)行的早期階段,惡意程序沒有機(jī)會(huì)在防惡意軟件程序之前開始在計(jì)算設(shè)備100中運(yùn)行。圖 5示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的可以被配置成利用初始保護(hù)組件來(lái)實(shí)現(xiàn)設(shè)備引導(dǎo)的示例計(jì)算設(shè)備500。計(jì)算設(shè)備500可以是,例如,圖1的計(jì)算設(shè)備100,或可以實(shí)現(xiàn),例如,圖2的存儲(chǔ)器結(jié)構(gòu)200。計(jì)算設(shè)備500包括一個(gè)或多個(gè)處理器或處理單元502,一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)504 (可包括一個(gè)或多個(gè)存儲(chǔ)器和/或存儲(chǔ)組件506),一個(gè)或多個(gè)輸入/輸出(I/O)設(shè)備 508,以及可使各種組件和設(shè)備彼此進(jìn)行通信的總線510。計(jì)算機(jī)可讀介質(zhì)504和/或一個(gè)或多個(gè)I/O設(shè)備508可以作為計(jì)算設(shè)備500的一部分被包括,或者可另選地可以耦合到計(jì)算設(shè)備500??偩€510表示若干類型的總線結(jié)構(gòu)中的任何一種總線結(jié)構(gòu)的一個(gè)或多個(gè),包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線、加速圖形端口,以及使用各種不同的總線體系結(jié)構(gòu)中的處理器或局部總線??偩€510可包括有線和/或無(wú)線總線。存儲(chǔ)器/存儲(chǔ)組件506表示一個(gè)或多個(gè)計(jì)算機(jī)存儲(chǔ)介質(zhì)。組件506可包括易失性介質(zhì)(諸如隨機(jī)存取存儲(chǔ)器(RAM))和/或非易失性介質(zhì)(諸如只讀存儲(chǔ)器(ROM)、閃存、光盤、磁盤等等)。組件506可包括固定介質(zhì)(例如,RAM、R0M、固定硬盤驅(qū)動(dòng)器等等)以及可移動(dòng)介質(zhì)(例如,閃存驅(qū)動(dòng)器、可移動(dòng)硬盤驅(qū)動(dòng)器、光盤等等)。計(jì)算設(shè)備500還可任選地包括TPM硬件512,該TPM硬件512可包括(和/或控制對(duì)其的訪問)NVRAM或其他受保護(hù)的存儲(chǔ)器514。此處所討論的技術(shù)可以以軟件實(shí)現(xiàn),指令由一個(gè)或多個(gè)處理單元502。可以理解, 不同的指令可以存儲(chǔ)在計(jì)算設(shè)備500的不同的組件中,諸如存儲(chǔ)在處理單元502中,存儲(chǔ)在處理單元502的各種緩存存儲(chǔ)器中,存儲(chǔ)在設(shè)備500(未示出)的其他緩存存儲(chǔ)器中,存儲(chǔ)在其他計(jì)算機(jī)可讀介質(zhì)上等等。另外,可以理解,指令存儲(chǔ)在計(jì)算設(shè)備500中的位置可以隨著時(shí)間而變化。一個(gè)或多個(gè)輸入/輸出設(shè)備508可使用戶向計(jì)算設(shè)備500輸入命令和信息,以及可使信息被呈現(xiàn)給用戶和/或其他組件或設(shè)備。輸入設(shè)備的示例包括鍵盤、光標(biāo)控制設(shè)備 (例如,鼠標(biāo))、麥克風(fēng)、掃描儀等等。輸出設(shè)備的示例包括顯示設(shè)備(例如,監(jiān)視器或投影儀)、揚(yáng)聲器、打印機(jī)、網(wǎng)卡等等。此處可以在軟件或程序模塊的一般上下文中描述各種技術(shù)。一般而言,軟件包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。這些模塊和技術(shù)的實(shí)現(xiàn)可以存儲(chǔ)在某種形式的計(jì)算機(jī)可讀介質(zhì)上或通過(guò)某種形式的計(jì)算機(jī)可讀介質(zhì)傳輸。計(jì)算機(jī)可讀介質(zhì)可以是可以被計(jì)算設(shè)備訪問的任何可用的介質(zhì)。作為示例,而不是限制,計(jì)算機(jī)可讀介質(zhì)可以包括“計(jì)算機(jī)存儲(chǔ)介質(zhì)”和“通信介質(zhì)”。“計(jì)算機(jī)存儲(chǔ)介質(zhì)”包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)之類的信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,RAM、ROM、EEPR0M、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備、或能用于存儲(chǔ)所需信息且可以由計(jì)算機(jī)訪問的任何其它介質(zhì)?!巴ㄐ沤橘|(zhì)”通常用諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來(lái)體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)。通信介質(zhì)還包括任何信息傳送介質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)”是指其一個(gè)或多個(gè)特征以這樣的方式設(shè)置或改變以便在信號(hào)中對(duì)信息進(jìn)行編碼的信號(hào)。作為示例而非限制,通信介質(zhì)可包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接線連接,以及諸如聲學(xué)、射頻(RF)、紅外線及其他無(wú)線介質(zhì)之類的無(wú)線介質(zhì)。上面各項(xiàng)中的任何組合也包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)?!愣裕颂幩枋龅娜魏喂δ芑蚣夹g(shù)都可使用軟件、固件、硬件(例如,固定邏輯電路)、手動(dòng)處理或這些實(shí)現(xiàn)的組合來(lái)實(shí)現(xiàn)。如此處所使用的術(shù)語(yǔ)“模塊”和“組件”一般代表軟件、固件、硬件或其組合。在軟件實(shí)現(xiàn)的情況下,模塊或組件表示當(dāng)在處理器(例如,一個(gè)或多個(gè)CPU)上執(zhí)行時(shí)執(zhí)行指定任務(wù)的程序代碼。程序代碼可以存儲(chǔ)在一個(gè)或多個(gè)計(jì)算機(jī)可讀的存儲(chǔ)器設(shè)備中,可以參考圖5發(fā)現(xiàn)關(guān)于其進(jìn)一步的描述。此處所描述的利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)的技術(shù)的特征是平臺(tái)無(wú)關(guān)的,這意味著這些技術(shù)可以在具有各種處理器的各種商業(yè)計(jì)算平臺(tái)上實(shí)現(xiàn)。盡管用結(jié)構(gòu)特征和/或方法動(dòng)作專用的語(yǔ)言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述具體特征或動(dòng)作。更確切而言,上述具體特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式公開的。
權(quán)利要求
1.一種引導(dǎo)計(jì)算設(shè)備的方法,所述方法包括 執(zhí)行(30 —個(gè)或多個(gè)固件組件;在執(zhí)行所述一個(gè)或多個(gè)固件組件之后,執(zhí)行(304)引導(dǎo)加載器組件; 標(biāo)識(shí)(306)所述計(jì)算設(shè)備的保護(hù)組件;在執(zhí)行所述引導(dǎo)加載器組件之后,作為初始組件來(lái)執(zhí)行(308)所述保護(hù)組件;以及執(zhí)行(31 —個(gè)或多個(gè)引導(dǎo)組件,其中所述一個(gè)或多個(gè)引導(dǎo)組件僅包括已被所述保護(hù)組件批準(zhǔn)執(zhí)行的引導(dǎo)組件。
2.如權(quán)利要求1所述的方法,其特征在于,所述保護(hù)組件包括防惡意軟件程序。
3.如權(quán)利要求所述的方法,其特征在于,所述保護(hù)組件是在所述引導(dǎo)加載器組件被執(zhí)行之后在所述計(jì)算設(shè)備的內(nèi)核模式中執(zhí)行的初始組件。
4.如權(quán)利要求1所述的方法,其特征在于,所述一個(gè)或多個(gè)引導(dǎo)組件包括一個(gè)或多個(gè)引導(dǎo)關(guān)鍵組件。
5.如權(quán)利要求1所述的方法,其特征在于,標(biāo)識(shí)所述保護(hù)組件包括將由特定制造商制造的特定類型的組件標(biāo)識(shí)為所述保護(hù)組件。
6.如權(quán)利要求4所述的方法,其特征在于,所述特定類型的組件包括來(lái)自所述特定制造商的防惡意軟件程序。
7.如權(quán)利要求4所述的方法,其特征在于,所述特定類型的組件和所述特定制造商在所述保護(hù)組件的數(shù)字簽名的證書中被標(biāo)識(shí),所述數(shù)字簽名是已由所述引導(dǎo)加載器組件信任的實(shí)體對(duì)所述保護(hù)組件進(jìn)行數(shù)字簽名所生成的。
8.如權(quán)利要求1所述的方法,其特征在于,還包括所述保護(hù)程序基于引導(dǎo)組件是否滿足加載策略或被包括在被批準(zhǔn)的組件的列表上,來(lái)確定所述引導(dǎo)組件是否被批準(zhǔn)執(zhí)行。
9.如權(quán)利要求1所述的方法,其特征在于,還包括 分析所述一個(gè)或多個(gè)引導(dǎo)組件是否滿足加載策略;生成滿足所述加載策略的被批準(zhǔn)的引導(dǎo)組件的列表;以及以允許后繼的對(duì)所述列表的篡改將被檢測(cè)的方式來(lái)存儲(chǔ)所述列表。
10.如權(quán)利要求9所述的方法,其特征在于,還包括在下次所述計(jì)算設(shè)備被引導(dǎo)時(shí),標(biāo)識(shí)所述列表中的每一引導(dǎo)組件被所述保護(hù)組件批準(zhǔn)執(zhí)行,而無(wú)需重新分析所述列表中的每一引導(dǎo)組件是否滿足所述加載策略。
11.如權(quán)利要求10所述的方法,其特征在于,還包括 接收對(duì)所述加載策略的更改;檢查對(duì)所述加載策略的所述更改是否影響所述列表; 如果對(duì)所述加載策略的所述更改影響所述列表,則刪除所述列表;以及如果對(duì)所述加載策略的所述更改不影響所述列表,則標(biāo)識(shí)所述列表中的每一引導(dǎo)組件被所述保護(hù)組件批準(zhǔn)執(zhí)行,而無(wú)需分析所述列表中的每一引導(dǎo)組件是否滿足對(duì)所述加載策略的所述更改。
12.如權(quán)利要求9所述的方法,其特征在于,所述列表包括每一個(gè)所述被批準(zhǔn)的引導(dǎo)組件的標(biāo)識(shí)符以及在所述列表被生成時(shí)所述加載策略的當(dāng)前版本的標(biāo)識(shí)符。
13.如權(quán)利要求9所述的方法,其特征在于,存儲(chǔ)所述列表包括 生成所述列表的散列值;將所述列表存儲(chǔ)在存儲(chǔ)設(shè)備上;將所述散列值存儲(chǔ)在受保護(hù)的存儲(chǔ)器中;以及鎖定所述受保護(hù)的存儲(chǔ)器以防止程序被寫入到所述受保護(hù)的存儲(chǔ)器。
14.一種計(jì)算設(shè)備,包括 處理器(502);以及在其上存儲(chǔ)了多個(gè)指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)(504),當(dāng)由所述處理器執(zhí)行時(shí), 所述指令使所述處理器標(biāo)識(shí)(306)所述計(jì)算設(shè)備的保護(hù)組件;以及當(dāng)引導(dǎo)所述計(jì)算設(shè)備時(shí),作為初始內(nèi)核級(jí)別組件,執(zhí)行(308)所述保護(hù)組件,所述保護(hù)組件被配置成批準(zhǔn)一個(gè)或多個(gè)引導(dǎo)組件來(lái)在所述計(jì)算設(shè)備上執(zhí)行。
15.如權(quán)利要求14所述的計(jì)算設(shè)備,其特征在于,所述多個(gè)指令包括所述計(jì)算設(shè)備的引導(dǎo)加載器組件。
全文摘要
本文描述了利用初始保護(hù)組件來(lái)進(jìn)行設(shè)備引導(dǎo)。引導(dǎo)計(jì)算設(shè)備包括執(zhí)行引導(dǎo)加載器組件所遵循的一個(gè)或多個(gè)固件組件。諸如防惡意軟件程序之類的計(jì)算設(shè)備的保護(hù)組件,被標(biāo)識(shí),并在執(zhí)行引導(dǎo)加載器組件之后,作為初始組件來(lái)執(zhí)行。還執(zhí)行一個(gè)或多個(gè)引導(dǎo)組件,這一個(gè)或多個(gè)引導(dǎo)組件僅包括被保護(hù)組件批準(zhǔn)的引導(dǎo)組件。還可以以防篡改的方式維護(hù)先前被保護(hù)組件批準(zhǔn)的引導(dǎo)組件的列表。
文檔編號(hào)G06F9/445GK102279760SQ20111016835
公開日2011年12月14日 申請(qǐng)日期2011年6月10日 優(yōu)先權(quán)日2010年6月11日
發(fā)明者A·F·托馬斯, D·J·林斯利, M·F·諾瓦克, R·K·斯皮格, S·A·費(fèi)爾德, S·湯姆 申請(qǐng)人:微軟公司