專利名稱:帶有休眠支持的全局有效的測量的操作系統(tǒng)發(fā)動的制作方法
帶有休眠支持的全局有效的測量的操作系統(tǒng)發(fā)動
背景技術(shù):
現(xiàn)代的計算設(shè)備常常包括向它的主機(jī)計算設(shè)備提供安全功能性的可信平臺模塊 (TPM)0 TPM,作為硬件部件,可以提供增強(qiáng)的安全性,其優(yōu)于那種只是通過由計算設(shè)備執(zhí)行計算機(jī)可執(zhí)行指令才可獲得的安全性。更具體地說,傳統(tǒng)的TPM的硬件被設(shè)計成通過以下方式而保護(hù)被存儲在TPM內(nèi)的信息,即僅經(jīng)由特定通道和特定功能來使能對這樣的信息的訪問和修改,以及防止對這樣的信息的其它訪問或修改。因此,即使惡意的實體將得到對 TPM本身的物理訪問,被存儲在TPM內(nèi)的信息仍舊保持為受保護(hù)的,除非是在應(yīng)用了真正奇特的和先進(jìn)的取證術(shù)(forensics)的場合下。通常被存儲在TPM中的一組信息是被存儲在TPM的平臺配置寄存器(PCR)中的數(shù)值。這些數(shù)值打算用來代表計算設(shè)備的當(dāng)前狀態(tài),且它們是通過將代表正被實例化的硬件或軟件組件的數(shù)值擴(kuò)充(extend)到各種PCR中而被生成的。因此,以計算設(shè)備被接通電源時的初始值開始,PCR被用代表被接連地實例化的硬件或軟件組件的數(shù)值進(jìn)行擴(kuò)充,這樣使得在給定時間處的PCR的值代表在那個時間的計算設(shè)備的狀態(tài),正如一直到時間上的那個點,由已被實例化的硬件或軟件組件定義且被測量到PCR中的。正如所指示的,TPM的硬件被設(shè)計成使得PCR的值只能通過上述的擴(kuò)充過程才可以改變。因此,PCR的值不能以另外的方式被修改,特定的值也不能被簡單地存儲在其中。然而,如果自從計算設(shè)備上次接通電源以來計算設(shè)備的狀態(tài)僅僅由被實例化的組件來代表, 則這種設(shè)計可以工作得最好。但是,為了節(jié)省功率,某些計算設(shè)備具有進(jìn)入“睡眠”狀態(tài)或甚至消耗更少功率的 “休眠”狀態(tài)的能力。典型地,睡眠狀態(tài)包括計算設(shè)備停止大多數(shù)處理操作,以及關(guān)斷或使其它消耗功率的外圍設(shè)備,諸如顯示設(shè)備或硬盤驅(qū)動斷電。然而,在睡眠狀態(tài)下,計算設(shè)備典型地使用功率來維持易失性存儲器的內(nèi)容,以及維持TPM的當(dāng)前狀態(tài)和被存儲在其中的任何信息,諸如PCR的值。因此,當(dāng)從睡眠狀態(tài)再繼續(xù)時,由易失性存儲器的內(nèi)容和TPM的PCR 的值兩者所反映的計算設(shè)備的狀態(tài),可以保持為與計算設(shè)備進(jìn)入睡眠狀態(tài)時比無變化。相比之下,為了盡可能多地節(jié)省功率,休眠狀態(tài)典型地不供給計算設(shè)備的易失性存儲器的持續(xù)功率消耗,由此導(dǎo)致被存儲在易失性存儲器中的信息的丟失。為了保存易失性存儲器的內(nèi)容,進(jìn)入休眠狀態(tài)的計算設(shè)備可以首先把易失性存儲器的內(nèi)容保存到非易失性存儲媒介。隨后,計算設(shè)備可以進(jìn)入典型地是完全關(guān)斷電源狀態(tài)的休眠狀態(tài),類似于計算設(shè)備被完全關(guān)閉,除了易失性存儲器的內(nèi)容被保存到非易失性存儲媒介以外。隨后,為了再繼續(xù)(resume)操作,計算設(shè)備可以著手完成初始引導(dǎo)(boot)序列, 其類似于接通電源或重新啟動,只是在初始引導(dǎo)序列中時間上的某點,可以檢測被保存到非易失性存儲媒介中的易失性存儲器的內(nèi)容并將它們拷貝回易失性存儲器,由此使得計算設(shè)備能夠再繼續(xù)它的休眠前狀態(tài)。然而,雖然計算設(shè)備可以再繼續(xù)它的休眠前狀態(tài),但至少就已經(jīng)被實例化且對于其計算機(jī)可執(zhí)行指令和數(shù)據(jù)可能已被復(fù)原(restore)到易失性存儲器的硬件和軟件而論,TPM的PCR可能不一定包括與休眠前狀態(tài)相關(guān)聯(lián)的值。具體地,與在從初始電源接通或重新啟動序列重新創(chuàng)建計算設(shè)備的狀態(tài)時擴(kuò)充TPM的PCR的方式相比,
4將被保存的內(nèi)容拷貝回易失性存儲器典型地并不以相同的方式來擴(kuò)充TPM的PCR。因此, PCR的值可能不再與計算設(shè)備的狀態(tài)相關(guān)連。
發(fā)明內(nèi)容
在一個實施例中,在進(jìn)入休眠狀態(tài)之前,平臺配置寄存器(PCR)的當(dāng)前值可以諸如通過用對于可信執(zhí)行環(huán)境——諸如可信平臺模塊(TPM)——獨特的密鑰簽署(sign)而被引述(quote),并且PCR的值連同引述一起可被追加到事件日志,該事件日志典型地被保持到易失性存儲器。當(dāng)易失性存儲器的內(nèi)容被保存在非易失性存儲媒介時一一正如典型地由計算設(shè)備在進(jìn)入休眠狀態(tài)之前而執(zhí)行的,具有PCR的當(dāng)前值及其引述的事件日志可以是被保存到非易失性存儲媒介的信息的一部分。在另一個實施例中,只能被遞增但不能被復(fù)位的單調(diào)計數(shù)器,諸如典型地可以由可信執(zhí)行環(huán)境維護(hù)的,可以被用作為“引導(dǎo)計數(shù)器”,以及可以在每次計算設(shè)備被“引導(dǎo)”時遞增。單調(diào)計數(shù)器的當(dāng)前值可以連同PCR的值及其引述一起在計算設(shè)備進(jìn)入休眠狀態(tài)之前而被追加到事件日志。在再一個實施例中,在隨后從休眠狀態(tài)再繼續(xù)時,現(xiàn)有的事件日志可以與作為休眠過程的一部分已被保存到非易失性存儲媒介的事件日志連結(jié)(concatenate)??杀槐3衷谝资源鎯ζ髦胁⒁詡鹘y(tǒng)的方式被追加的所得到的事件日志,不僅可以包括自從最近從休眠狀態(tài)再繼續(xù)以來的項目,而且也包括休眠之前的項目,其包括休眠之前的PCR的值、它的引述和休眠之前的單調(diào)計數(shù)器的值。在又一個實施例中,包括有來自計算設(shè)備的多代(multiple generation)或化身 (incarnation)的事件——諸如來自計算設(shè)備的休眠之前的事件和從休眠再繼續(xù)之后的事件——的事件日志可以參照以下而進(jìn)行評估,即參照當(dāng)前的PCR值、在事件日志中被保存和被引述的先前的PCR值,以及參照在單調(diào)計數(shù)器的當(dāng)前值與在事件日志中單調(diào)計數(shù)器的被保存值之間的遞增的連續(xù)性(incremental continuity)。本概要被提供來以簡化的形式介紹概念的選擇,這些概念還將在下面的詳細(xì)說明中進(jìn)行描述。本概要既不打算標(biāo)識所要求保護(hù)的主題的訪問控制特征或必要特征,也不打算被使用來限制所要求保護(hù)的主題的范圍。從參照附圖進(jìn)行的以下的詳細(xì)說明,將明白附加的特征和優(yōu)點。
當(dāng)結(jié)合附圖來考慮時,以下的詳細(xì)說明可以得到最好地理解,其中 圖1是包括TPM的示范性計算設(shè)備的圖2是在接通電源后計算設(shè)備的示范性操作的框圖3是在休眠之前計算設(shè)備的示范性操作的框圖4是在從休眠再繼續(xù)后計算設(shè)備的示范性操作的框圖5是在從休眠再繼續(xù)后計算設(shè)備的另一個示范性操作的框圖6是事件日志的示范性檢查的框圖7是能夠休眠的計算設(shè)備的示范性操作的流程圖;以及
圖8是事件日志的示范性檢查的流程圖。
具體實施例方式以下的說明涉及到在包括可信執(zhí)行環(huán)境的計算設(shè)備的休眠之前,將可信執(zhí)行環(huán)境的至少某些平臺配置寄存器(PCR)的值,連同正被用作為引導(dǎo)計數(shù)器的、可信執(zhí)行環(huán)境的單調(diào)計數(shù)器的值一起記錄到事件日志中。之后剛一再繼續(xù),這個信息所被輸入到的先前的事件日志——其作為休眠映像(hibernation image)的一部分被保存——便可以與當(dāng)前的事件日志連結(jié),由此提供用來安全地記錄至少自從最近的電源接通或重新啟動以來的計算設(shè)備的歷史的機(jī)制。這里描述的機(jī)制聚焦于,但不限于,實際的計算設(shè)備進(jìn)入低功率“休眠”模式或狀態(tài)。實際上,下面的教導(dǎo)同樣可應(yīng)用于仿真實際計算設(shè)備的操作的虛擬計算設(shè)備,以及不僅可以跨越(across)休眠與再繼續(xù)的循環(huán)來應(yīng)用,而且可以跨越其中計算設(shè)備的狀態(tài)被復(fù)原而不用重新創(chuàng)建的任何循環(huán)來應(yīng)用,包括例如分發(fā)狀態(tài)到另外的無狀態(tài)的終端計算設(shè)備和其它類似的環(huán)境。結(jié)果,所參考的具體的示范性環(huán)境被利用來使得說明更具體,但并不意味著將列舉的實施例限制于所參考的具體的示范性環(huán)境。另外,這里描述的機(jī)制常常是參照可信平臺模塊(TPM)描述的,因為這樣的模塊在本領(lǐng)域是公知的,且它包括可以被下面描述的機(jī)制利用的屬性。然而,正如本領(lǐng)域技術(shù)人員將認(rèn)識到的,TPM在傳統(tǒng)上必須遵循針對這樣的模塊的可信計算組(TCG)的標(biāo)準(zhǔn)和要求,且因而包括對于這里描述的機(jī)制無用或最多正交的(orthogonal)特征和功能性。因此,雖然為了描述清晰起見,參考了 TPM,但這里描述的機(jī)制同樣地可應(yīng)用于可以安全地提供必要功能性的任何“可信執(zhí)行環(huán)境”,所述必要功能性諸如是安全的單調(diào)計數(shù)器,只能以按照由計算設(shè)備實例化的組件定義的方式被修改的一個或多個平臺配置寄存器,以及參照一個或多個安全地維護(hù)的和獲得的密碼密鑰來簽署或引述信息的能力。當(dāng)在這里使用時,術(shù)語“可信執(zhí)行環(huán)境”是指包括遵循TCG標(biāo)準(zhǔn)的實際的TPM,以及其它可以安全地提供必要功能性的硬件或軟件模塊,諸如以上列舉的和下面更詳細(xì)地描述的那些。雖然不是必需的,但下面的描述將是在由計算設(shè)備執(zhí)行的、諸如程序模塊那樣的計算機(jī)可執(zhí)行指令的一般上下文中。更具體地說,描述將參照由一個或多個計算設(shè)備或外圍設(shè)備執(zhí)行的動作和操作的符號表示,除非另外地指出。照這樣,便應(yīng)理解,這樣的動作和操作一一有時被稱為是計算機(jī)執(zhí)行的一一包括由代表采用結(jié)構(gòu)化形式的數(shù)據(jù)的電信號的處理單元進(jìn)行的操控。這個操控變換數(shù)據(jù),或把數(shù)據(jù)保持在存儲器中的單元處,它以本領(lǐng)域技術(shù)人員很好理解的方式重新配置或另外地改變計算設(shè)備或外圍設(shè)備的操作。在其中保持?jǐn)?shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是具有由數(shù)據(jù)格式定義的特定屬性的物理單元。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)嵤┨囟ǖ某橄髷?shù)據(jù)類型的例行程序、程序、 對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。而且,本領(lǐng)域技術(shù)人員將會意識到,計算設(shè)備不一定限于傳統(tǒng)的個人計算機(jī),而是包括其它的計算構(gòu)造,包括手持設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程的消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機(jī)、大型計算機(jī)等等。同樣地,計算設(shè)備不一定限于獨立的計算設(shè)備,因為所述機(jī)制也可以在通過通信網(wǎng)絡(luò)被鏈接的分布式計算環(huán)境下被實踐。在分布式計算環(huán)境下,程序模塊可以安置在本地和遠(yuǎn)程存儲器存儲設(shè)備中。參照圖1,圖示了示范性計算設(shè)備100,其部分地包括在下面描述的方法中被進(jìn)一步提到的硬件單元。示范性計算設(shè)備100可包括,但不限于一個或多個中央處理單元(CPU) 120、系統(tǒng)存儲器130、可信平臺模塊(TPM) 150和系統(tǒng)總線121,該系統(tǒng)總線121把包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)部件耦合到處理單元120。系統(tǒng)總線121可以是幾種類型的總線結(jié)構(gòu)的任何一種,包括存儲器總線或存儲器控制器、外圍總線和使用各種各樣總線體系結(jié)構(gòu)中的任何總線體系結(jié)構(gòu)的本地總線。取決于特定的物理實現(xiàn),CPU 120、系統(tǒng)存儲器 130和TPM 150中的一個或多個可以在物理上被共同安置在諸如單個芯片上。在這樣的情形下,系統(tǒng)總線121中的某些或全部可能只不過是在單個芯片結(jié)構(gòu)內(nèi)的硅通道,且在圖1上它的例示可能只不過是為了說明目的的標(biāo)記上的方便。正如前面指示的,這里描述的機(jī)制同樣可應(yīng)用于任何可信執(zhí)行環(huán)境,以及硬件 TPM,諸如圖1所示的TPM 150,僅僅是這樣的可信執(zhí)行環(huán)境的一個例子。因此,下面描述的 TPM 150的利用,不是打算將所描述的機(jī)制具體地限于遵循TCG技術(shù)規(guī)范的硬件TPM,而是打算圖解說明在可以很一般地擴(kuò)展到任何的可信執(zhí)行環(huán)境的特定上下文內(nèi)描述的機(jī)制。因此,嚴(yán)格來說是為了易于說明,將參考圖1所示的TPM 150。TPM 150可包括TPM特定的密鑰151,用于加密和解密提供給它的信息。傳統(tǒng)上,TPM 150包括初始的一組不可改變的公共和私有加密密鑰,它們可以被利用來以已知的和已建立的方式得到可自由使用的公共和私有加密密鑰。例如,TPM 150可包括背書密鑰(Endorsement Key,ΕΚ)、一個或多個身份證明密鑰(Attestation Identity Key,AIK)和可被利用來不同地簽署、引述和加密與解密信息的其它類似的密碼密鑰的公共和私有部分。另外,TPM 150可包括平臺配置寄存器(PCR) 155,它可以安全地存儲與計算設(shè)備100的狀態(tài)獨特地相關(guān)聯(lián)的值或其它數(shù)據(jù)。這樣的值在傳統(tǒng)上由CPU 120經(jīng)由系統(tǒng)總線121提供給TPM 150。在一些實施例中,只有由CPU 120 執(zhí)行的特定代碼才被許可發(fā)送數(shù)據(jù)到TPM 150,TPM 150將修改被存儲在PCR 155中的值。 TPM 150還可包括至少一個單調(diào)計數(shù)器,諸如單調(diào)計數(shù)器156。由單調(diào)計數(shù)器156存儲的值可以遞增,但不能遞減或被賦予特定值,因為這樣的動作會被TPM 150阻止。在一個實施例中,一旦單調(diào)計數(shù)器156的值超過某個閾值,它就可以翻轉(zhuǎn)回初始值,并且可以再從那里遞
+曰O除了上述的單元以外,計算設(shè)備100典型地還包括計算機(jī)可讀介質(zhì),其可包括可以由計算設(shè)備100訪問的任何可得到的介質(zhì)。作為例子,而不是限制,計算機(jī)可讀介質(zhì)可包括計算機(jī)存儲介質(zhì)和通信介質(zhì)。計算機(jī)存儲介質(zhì)包括以用于存儲信息一諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)一的任何方法或技術(shù)實施的介質(zhì)。計算機(jī)存儲介質(zhì)包括,但不限于RAM、ROM、EEPR0M、閃速存儲器或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤 (DVD)、或其它光盤存儲裝置、盒式磁帶、磁帶、磁盤存儲裝置或其它磁存儲設(shè)備、或可被使用來存儲想要的信息并可以由計算設(shè)備100訪問的任何其它媒介。通信介質(zhì)典型地將計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)具體化為諸如載波或其它輸送機(jī)制的經(jīng)調(diào)制的數(shù)據(jù)信號,且通信介質(zhì)包括任何信息傳遞介質(zhì)。作為例子,而不是限制,通信介質(zhì)包括有線介質(zhì)和無線介質(zhì),有線介質(zhì)諸如是有線網(wǎng)絡(luò)或直接連線的連接,而無線介質(zhì)諸如是聲學(xué)的、RF、紅外和其它無線介質(zhì)。以上的任何組合也應(yīng)當(dāng)被包括在計算機(jī)可讀介質(zhì)的范圍內(nèi)。當(dāng)使用通信介質(zhì)時,計算設(shè)備100可以經(jīng)由與一個或多個遠(yuǎn)程計算機(jī)的邏輯連接來在聯(lián)網(wǎng)的環(huán)境下操作。圖1所示的邏輯連接是到網(wǎng)絡(luò)180的通用網(wǎng)絡(luò)連接171,網(wǎng)絡(luò)180 可以是局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或其它網(wǎng)絡(luò)。計算設(shè)備100通過網(wǎng)絡(luò)接口或適配器170 被連接到通用網(wǎng)絡(luò)連接171,網(wǎng)絡(luò)接口或適配器170進(jìn)而又被連接到系統(tǒng)總線121。在聯(lián)網(wǎng)
7的環(huán)境下,相對于計算設(shè)備100或它的多個部分或外圍設(shè)備描繪的程序模塊可被存儲在通過通用網(wǎng)絡(luò)連接171與計算設(shè)備100通信地耦合的一個或多個其它計算設(shè)備的存儲器中。 將會意識到,所顯示的網(wǎng)絡(luò)連接是示范性的,也可以使用在計算設(shè)備之間建立通信鏈路的其它手段。在計算機(jī)存儲介質(zhì)中間,系統(tǒng)存儲器130包括采用易失性和/或非易失性存儲器的形式的計算機(jī)存儲介質(zhì),包括只讀存儲器(ROM) 131和隨機(jī)存取存儲器(RAM) 132?;据斎?輸出系統(tǒng)133 (BIOS),尤其包含用于引導(dǎo)計算設(shè)備100的代碼,典型地被存儲在ROM 131。RAM 132典型地包含可以由處理單元120立即訪問的和/或當(dāng)前正對其進(jìn)行操作的數(shù)據(jù)和/或程序模塊。作為例子,而不是限制,圖1圖示正駐留在RAM 132中的操作系統(tǒng)134、 其它程序模塊135和程序數(shù)據(jù)136。RAM 132還可包括可以與TPM 150的操作有關(guān)的數(shù)據(jù), 諸如事件日志190。在一個實施例中,事件日志190可包括自從加電以來或自從計算設(shè)備上次重新啟動以來由計算設(shè)備100裝載或執(zhí)行的所有模塊的獨特的標(biāo)識;相同的模塊,其裝載或執(zhí)行可以導(dǎo)致當(dāng)前被TPM 150保持在一個或多個PCR 155中的值。例如,事件日志 190可以是可信計算組(TCG)事件日志。計算設(shè)備100還可包括其它可拆卸/非可拆卸、易失性/非易失性計算機(jī)存儲介質(zhì)。僅僅作為例子,圖1圖示硬盤驅(qū)動141,它從非可拆卸、非易失性磁或固態(tài)介質(zhì)讀出或?qū)懭搿?晒┦痉缎杂嬎阍O(shè)備使用的其它可拆卸/非可拆卸、易失性/非易失性計算機(jī)存儲介質(zhì)包括,但不限于基于固態(tài)的存儲設(shè)備、盒式磁帶、閃速存儲卡、數(shù)字多功能盤、數(shù)字錄像帶、 固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動141典型地通過非可拆卸存儲器接口,諸如接口 140,被連接到系統(tǒng)總線121。以上討論的和在圖1中圖示的驅(qū)動及其相關(guān)聯(lián)的計算機(jī)存儲介質(zhì)提供計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和用于計算設(shè)備100的其它數(shù)據(jù)的存儲。在圖1上,例如,硬盤驅(qū)動141被圖示為存儲操作系統(tǒng)144、其它程序模塊145和程序數(shù)據(jù)146。應(yīng)當(dāng)指出,這些組件可以是與操作系統(tǒng)134、其它程序模塊135和程序數(shù)據(jù)136相同的或不同的。操作系統(tǒng) 144、其它程序模塊145和程序數(shù)據(jù)146至此被給予不同的標(biāo)號,以便說明至少它們是不同的拷貝。在一個實施例中,計算設(shè)備100的“狀態(tài)”可以由諸如以上描述的那些硬件部件和自從計算設(shè)備100被接通電源或重新啟動以來被實例化或另外地被激活的、也諸如以上描述的那些計算機(jī)可執(zhí)行指令的組件來定義。從安全性的觀點看,在加電之前和在任何硬件的初始化或任何計算機(jī)可執(zhí)行指令的執(zhí)行之前的時間,計算設(shè)備100的狀態(tài)可被看作為 “安全”狀態(tài)。因此,從安全性的觀點看,計算設(shè)備100的任何之后的狀態(tài)是否安全,可以經(jīng)由檢查從加電或重新啟動后重新加電的時刻以來對計算設(shè)備100所做出的改變而被確定。 因此,正如本領(lǐng)域技術(shù)人員知道的,事件日志190的一個功能是提供所有的相關(guān)硬件部件和自從加電以來已經(jīng)在計算設(shè)備100上被實例化的計算機(jī)可執(zhí)行指令的組件的記錄。如果在事件日志190上列出的每個單元據(jù)信是安全的,則計算設(shè)備100的當(dāng)前狀態(tài)可以同樣地被認(rèn)為是安全的,因為計算設(shè)備可被認(rèn)為是沒有偏離它的初始安全狀態(tài)。相反,且更具體地說,如果在事件日志190中列出的任何一個單元被認(rèn)為有安全性擔(dān)憂,那么計算設(shè)備100的狀態(tài)可被確定為不再是安全的,結(jié)果,計算設(shè)備100可被阻止執(zhí)行某些安全敏感的操作,諸如舉例而言,加入安全網(wǎng)絡(luò)或訪問受保護(hù)的數(shù)據(jù)。
然而,正如本領(lǐng)域技術(shù)人員也知道的,被保留在RAM 132中的事件日志190可以被訪問和修改,結(jié)果,不能保證它們是所有的相關(guān)硬件部件和自從加電以來已經(jīng)在計算設(shè)備100上被實例化的計算機(jī)可執(zhí)行指令的組件的準(zhǔn)確表示。為了使事件日志190免于受這樣的篡改,TPM 150的PCR 155被利用來保留與在事件日志190中的項目相關(guān)聯(lián)的值,這樣使得如果PCR 155的值不對應(yīng)于事件日志190中的項目,則可以作出確定事件日志190可能已被篡改,而不再代表相關(guān)的硬件部件和自從加電以來已經(jīng)在計算設(shè)備100上被實例化的計算機(jī)可執(zhí)行指令的組件的準(zhǔn)確列表。具體地,且正如本領(lǐng)域技術(shù)人員知道的,在事件日志190中的每個項目可以對應(yīng)于特定的硬件部件或可被測量的計算機(jī)可執(zhí)行指令的組件, 所述測量諸如是通過計算相關(guān)的計算機(jī)可執(zhí)行指令的散列或另外地導(dǎo)出代表那個組件的獨特的數(shù)值來進(jìn)行的。因為每個組件被實例化,所以這個獨特的數(shù)值可以經(jīng)由已知的數(shù)學(xué)運(yùn)算而被擴(kuò)充到PCR 155的一個或多個中,所述數(shù)學(xué)運(yùn)算接收一個或多個PCR 155的先前值和正被擴(kuò)充到它們中的獨特的數(shù)值作為輸入,并由此導(dǎo)出被存儲回一個或多個PCR 155 中的隨后的數(shù)值。因此,PCR 155的當(dāng)前值應(yīng)當(dāng)是通過如下方式而可得到的,S卩用與事件日志190中的每個項目相關(guān)聯(lián)的獨特的數(shù)值、以在事件日志190中那些項目的次序來執(zhí)行這樣的擴(kuò)充操作。如果從事件日志190中的項目獲得的值不匹配于被保持在PCR 155中的那些值,則可以得出上述的事件日志190不再是準(zhǔn)確的結(jié)論。轉(zhuǎn)到圖2,圖上顯示的系統(tǒng)200圖示按照以上的說明的示范性操作系列,它也提供用于以下說明的基礎(chǔ)。正如可以從系統(tǒng)200看出的,電源接通事件210可以施加到計算設(shè)備 100上,由此使得計算設(shè)備100開始各種硬件部件的初始化,或另外地實例化,并且也開始執(zhí)行計算機(jī)可執(zhí)行的指令,諸如被存儲在計算設(shè)備100的硬盤驅(qū)動141上的操作系統(tǒng)144。 例如,如圖2的系統(tǒng)200所顯示的,被存儲在硬盤驅(qū)動141上的操作系統(tǒng)144可以被引導(dǎo),或另外地被實例化,正如由引導(dǎo)動作230所例示的。正如本領(lǐng)域技術(shù)人員將會了解的,操作系統(tǒng)144實例化的過程可以導(dǎo)致創(chuàng)建操作系統(tǒng)134,作為把信息存儲在RAM 132的執(zhí)行過程。 因此,引導(dǎo)動作230在圖2上被圖示為把來自被存儲在硬盤驅(qū)動141上的操作系統(tǒng)144的信息以操作系統(tǒng)134的形式轉(zhuǎn)移到RAM 132,操作系統(tǒng)134以灰色圖示,以表明在引導(dǎo)動作 230開始時,操作系統(tǒng)134還沒有全部存在于RAM 132內(nèi)。當(dāng)計算設(shè)備100的每個組件被實例化時,適當(dāng)?shù)捻椖靠杀患拥绞录罩?90。因此,如圖2的系統(tǒng)200中所示的邏輯動作232例示的,用于操作系統(tǒng)144的實例化的項目,諸如示范性O(shè)S裝入程序項目292和示范性操作系統(tǒng)項目四3,可被加到事件日志190。在一個實施例中,取決于事件日志190是按“第一個在頂部(first-on-top)”的次序還是按“第一個在底部(first-on-bottom)”的次序被組織,這樣的項目292和293可被加在針對先于操作系統(tǒng)144而被實例化的硬件的項目(諸如硬件項目四1)之前或之后。正如本領(lǐng)域技術(shù)人員將會認(rèn)識到的,在事件日志190中的典型項目可包括更多的細(xì)節(jié),以及可以被更細(xì)致地描繪。然而,在事件日志190中顯示項目291、292和四3,純粹是為了說明的目的。除了記錄動作232以外,操作系統(tǒng)144的實例化可以導(dǎo)致一個或多個擴(kuò)充操作,諸如擴(kuò)充動作231,它可以用對應(yīng)于事件日志190中的項目292和四3的操作系統(tǒng)144的組件的某些或全部的測量值來擴(kuò)充PCR 155中的一個或多個。如此,計算設(shè)備100可以著手完成它的引導(dǎo)序列,以及任選地,可以實例化另外的計算機(jī)可執(zhí)行指令,諸如包括程序模塊 145的那些指令,包括將適當(dāng)?shù)捻椖坑涗浽谑录罩?90中和用適當(dāng)?shù)臏y量值擴(kuò)充PCR 155中的一個或多個。在一個實施例中,可信平臺模塊150的單調(diào)計數(shù)器156可被用作為“引導(dǎo)計數(shù)器”, 這樣使得在每次計算設(shè)備100被引導(dǎo)時——包括舉例而言,諸如在圖2的系統(tǒng)200中所圖示的被接通電源,被重新啟動,或從休眠狀態(tài)再繼續(xù),它可以被遞增,如由遞增動作220指示的。當(dāng)在這里使用時,術(shù)語“接通電源”是指在機(jī)械關(guān)斷電源狀態(tài)——諸如在高級配置與電源接口(ACPI)規(guī)范中被定義為“G3”狀態(tài)的狀態(tài)——中的時間延長期后給計算設(shè)備加電。相反,當(dāng)在這里使用時,術(shù)語“重新啟動”是指給計算設(shè)備加電作為經(jīng)過電源關(guān)斷狀態(tài)的自動循環(huán)的一部分,諸如可以通過選擇在許多操作系統(tǒng)中共有的“重新啟動”任選項而被發(fā)起。當(dāng)在這里使用時,術(shù)語“再繼續(xù)”是指在計算設(shè)備已經(jīng)進(jìn)入休眠狀態(tài)——諸如由ACPI 規(guī)范的“S4”狀態(tài)所定義的狀態(tài)——后加電。回到圖2,單調(diào)計數(shù)器156的值256可以是大于先前值的增量,在圖上用變量“X”代表,以便慮及計算設(shè)備100的所圖示的引導(dǎo)。另外, 雖然在圖2上的圖示顯示遞增步長為一,但可以利用其它的遞增值。轉(zhuǎn)到圖3,圖上顯示的系統(tǒng)300圖示處在已經(jīng)被引導(dǎo)和被利用后的狀態(tài)的計算設(shè)備。因此,在圖3所示的圖解說明的例子中,事件日志190可包括作為對先前描述的那些的補(bǔ)充的另外的項目,包括例如涉及一個或多個程序模塊或計算機(jī)可執(zhí)行指令的其它組件的項目394。如圖3的系統(tǒng)300中所示的,休眠指令310可被提供給計算設(shè)備100,這可以使得計算設(shè)備將RAM 132的內(nèi)容,或至少它的某部分,存儲在諸如硬盤驅(qū)動141的易失性存儲媒介上,以作為休眠鏡像,諸如休眠鏡像360。這樣的動作由在圖3上的存儲動作350代表。在一個實施例中,在創(chuàng)建休眠鏡像360之前,一個或多個附加項目可被記錄在事件日志190中。具體地,如由引述動作320所示的,TPM特定的密鑰151中的一個或多個可以以本領(lǐng)域技術(shù)人員熟知的方式被利用來引述PCR 155中一個或多個的當(dāng)前值。例如,AIK 可被利用來簽署PCR 155中的一個或多個的值。這樣的過程可以證明被引述的一個或多個PCR 155的值事實上在它們被引述時是在計算設(shè)備100上存在的。隨后,如由記錄動作321所例示的,PCR 155的這個引述可被追加到事件日志190, 如由項目395所例示的。另外,項目395還可包括PCR 155本身的值,如由記錄動作330所例示的,這樣,引述提供證明作為項目395的一部分的PCR 155的值沒有被篡改,或者另外地被修改。在一個實施例中,項目395還可包括單調(diào)計數(shù)器156的當(dāng)前值256,如由記錄動作340所例示的。正如本領(lǐng)域技術(shù)人員將會認(rèn)識到的,雖然PCR 155的值、PCR 155的值的引述和單調(diào)計數(shù)器156的值256在圖3上被顯示為被記錄在事件日志190中以作為單個項目395,但這樣的圖解說明僅僅是個例子,且為了說明的清晰性而被簡化。在其它實施例中, 那些信息條的一個或多個可以一個個地或經(jīng)由多個項目而被記錄在事件日志190中。記錄動作321、330和340可以在由存儲動作350創(chuàng)建休眠映像360之前發(fā)生。結(jié)果,當(dāng)事件日志190在諸如硬盤驅(qū)動141那樣的非易失性存儲媒介上被保存在休眠映像360 中時,項目395可以是事件日志190的一部分。正如本領(lǐng)域技術(shù)人員已知的,一旦休眠映像 360已被保存以及計算設(shè)備100已執(zhí)行其它相關(guān)的以休眠為中心的功能,計算設(shè)備100就可以進(jìn)行休眠,并且RAM 132的內(nèi)容可能丟失,因為計算設(shè)備100實質(zhì)上可以進(jìn)入電源關(guān)斷狀態(tài)。雖然記錄動作321、330和340被顯示為是在計算設(shè)備100的休眠的上下文內(nèi)發(fā)生的,但它們不需要在時間上鄰近這樣的休眠事件發(fā)生。例如,在一個實施例中,記錄動作321、330和340可以在計算設(shè)備100操作期間的任何時間被執(zhí)行,包括例如在計算設(shè)備100已完成引導(dǎo)不久以后執(zhí)行。轉(zhuǎn)到圖4,圖上顯示的系統(tǒng)400圖示包括休眠映像360的、正從休眠狀態(tài)再繼續(xù)的計算設(shè)備100。初始地,例如可以通過按壓電源按鈕或其它類似的用戶動作而對計算設(shè)備 100施加再繼續(xù)動作410。隨后,計算設(shè)備100可以進(jìn)行類似于以上參照圖2的系統(tǒng)200描述的那樣的引導(dǎo)序列。因此,如圖4的系統(tǒng)400中所顯示的,操作系統(tǒng)144可以被引導(dǎo),正如由引導(dǎo)動作430所例示的,以生成內(nèi)存(in-memory)中的操作系統(tǒng)134,以及操作系統(tǒng)的相關(guān)組件可被記錄在事件日志190中,正如由記錄動作432所例示的,以及它們的測量可被擴(kuò)充到PCR 155中的一個或多個,正如由擴(kuò)充動作431所例示的。另外,正如以前也描述的, 單調(diào)計數(shù)器156可以遞增,正如由圖4的系統(tǒng)400中的遞增動作420所顯示的。單調(diào)計數(shù)器156的所得到的值456可以比單調(diào)計數(shù)器156的先前值256大出單個遞增單位。然而典型地,一旦OS裝入程序、或操作系統(tǒng)134的其它相關(guān)組件檢測到休眠映像 360的存在,計算設(shè)備100的傳統(tǒng)的引導(dǎo)可被掛起,以及休眠映像360可被復(fù)原到RAM 132。 因此,正如在圖4的系統(tǒng)400中顯示的,在休眠映像360被復(fù)原到RAM 132之前,事件日志 190可能只包括用于實例化的硬件的項目,諸如項目496,和用于OS裝入程序或操作系統(tǒng) 134的其它相關(guān)組件的項目,諸如項目497。轉(zhuǎn)到圖5,圖上顯示的系統(tǒng)500圖示休眠映像360到RAM 132的一個示范性復(fù)原。 正如復(fù)原動作550所例示的,將休眠映像360復(fù)原到RAM 132可以使得在計算設(shè)備100休眠之前先前存儲在RAM 132上的操作系統(tǒng)134、程序模塊135和程序數(shù)據(jù)136返回到RAM 132。 正如本領(lǐng)域技術(shù)人員將會認(rèn)識到的,RAM 132的內(nèi)容的復(fù)原可以使計算設(shè)備100能重新開始在休眠之前它正執(zhí)行的操作。然而,正如本領(lǐng)域技術(shù)人員將會認(rèn)識到的,復(fù)原動作550不會影響PCR 155。因此,PCR 155的值可以反映例如直接在復(fù)原休眠映像360之前的計算設(shè)備100的狀態(tài),與計算設(shè)備的實際狀態(tài)相反,它更類似于在圖3的系統(tǒng)300中顯示的狀態(tài)。然而,作為復(fù)原操作550的一部分,事件日志190可被修改,以便包括在事件日志 190被保存在休眠映像360中時在事件日志190中的信息和現(xiàn)在被復(fù)原到RAM 132中的信息,諸如項目291、292、293、394和395,以及還包括自從計算設(shè)備100最近接通電源而從休眠狀態(tài)再繼續(xù)以來被加到事件日志190中的信息,諸如項目496和497。這樣,事件日志190可包括足夠的信息來準(zhǔn)確地評估計算設(shè)備100的安全狀態(tài)。具體地,以前被實例化且影響在休眠(其現(xiàn)在被復(fù)原)之前的計算設(shè)備100的狀態(tài)的組件可以諸如經(jīng)由項目291、292、293和394在事件日志190中被表示。另外,當(dāng)前被實例化并且其可以影響計算設(shè)備的當(dāng)前狀態(tài)的組件可以同樣地諸如經(jīng)由項目496和497在事件日志190 中被表示。事件日志190的當(dāng)前項目可以參照一個或多個PCR 155的當(dāng)前值以本領(lǐng)域技術(shù)人員熟知的方式被證實,而事件日志190的先前項目可以參照被存儲在事件日志190中的一個或多個PCR 155的先前值(諸如項目395的一部分)被證實。一個或多個PCR 155的那個先前值的引述可被利用來保證被存儲在事件日志190中的值沒有被修改。另外,在單調(diào)計數(shù)器156的當(dāng)前值456與單調(diào)計數(shù)器156的一個或多個先前值 256——諸如可以是項目395的一部分的那些值——之間的比較可以揭示計算設(shè)備是否在中間被引導(dǎo)而沒有適當(dāng)?shù)男畔⒈挥涗浀绞录罩?90中。例如,如果作為項目395的一部分的單調(diào)計數(shù)器156的先前值256對于單調(diào)計數(shù)器156的當(dāng)前值456是遞增連續(xù)的,則可
11以作出確定計算設(shè)備在導(dǎo)致休眠的計算設(shè)備的狀態(tài)的先前引導(dǎo)與導(dǎo)致再繼續(xù)的那個狀態(tài)的當(dāng)前引導(dǎo)之間沒有被另外地弓I導(dǎo)。轉(zhuǎn)到圖6,圖上顯示的系統(tǒng)600圖示上述機(jī)制的一個示范性利用。在圖6的系統(tǒng) 600中,個人計算設(shè)備610可以是已經(jīng)經(jīng)歷與以上參照示范性計算設(shè)備100詳細(xì)描述的那些步驟類似的步驟序列的計算設(shè)備。這樣,個人計算設(shè)備610可包括事件日志190、PCR 155 和單調(diào)計數(shù)器156。另外,網(wǎng)關(guān)計算設(shè)備620可以同樣地共享參照示范性計算設(shè)備100 — 一諸如參照圖1一一描述的通用硬件和軟件。在一個實施例中,個人計算設(shè)備610和網(wǎng)關(guān)計算設(shè)備620可以經(jīng)由網(wǎng)絡(luò)180而通信地耦合,以及個人計算設(shè)備610可以試圖獲得對由網(wǎng)關(guān)計算設(shè)備620保護(hù)的某些數(shù)據(jù)或資源的訪問。在這樣的實施例中,如果網(wǎng)關(guān)計算設(shè)備620可以確定個人計算設(shè)備610不是惡意的,則網(wǎng)關(guān)計算設(shè)備620可以準(zhǔn)許個人計算設(shè)備610正在請求的訪問。為此,個人計算設(shè)備610可以以本領(lǐng)域技術(shù)人員熟知的方式,使得它的事件日志190和它的PCR 155與單調(diào)計數(shù)器156的值對于網(wǎng)關(guān)計算設(shè)備620是可得到的,正如由圖6的系統(tǒng)600中顯示的通信630和640所例示的。網(wǎng)關(guān)計算設(shè)備620然后可以分析事件日志190以確定個人計算設(shè)備610是否已經(jīng)實例化可能是惡意的或者另外地在給定網(wǎng)關(guān)計算設(shè)備620正強(qiáng)制服從的訪問條件下不可接受的任何組件。除了分析事件日志190以外,網(wǎng)關(guān)計算設(shè)備620可以進(jìn)一步驗證它的判決所基于的信息,即,在事件日志190中的項目是準(zhǔn)確的,且沒有被修改或者另外地被篡改。為此,網(wǎng)關(guān)計算設(shè)備620可以如由動作650所例示地驗證PCR 155的值等同于在自從最近的引導(dǎo)以來在事件日志190中列出的組件的測量——諸如項目496和497——被擴(kuò)充到PCR 155 的情況下將獲得的值。對于在最近的引導(dǎo)之前在事件日志190中的項目,網(wǎng)關(guān)計算設(shè)備 620可以如由動作670所例示地驗證PCR 155的先前值(如被包含在項目395中的)等同于在最近的引導(dǎo)之前發(fā)生的、事件日志中列出的組件的測量——諸如項目291、292、293和 394——被擴(kuò)充到PCR 155的情況下將獲得的值。另外,雖然沒有具體地顯示,但網(wǎng)關(guān)計算設(shè)備620可以通過參考也作為項目395的一部分的、或另外地被包含在事件日志190中的那些值的引述而驗證在項目395中的PCR的先前值沒有被修改或另外地被篡改。而且,為了保證個人計算設(shè)備610在被記錄于事件日志190中的引導(dǎo)之間沒有被另外地引導(dǎo),網(wǎng)關(guān)計算設(shè)備620可以如由動作660所例示地驗證在被存儲于事件日志190中——諸如在項目395中——的單調(diào)計數(shù)器156的值與單調(diào)計數(shù)器156的當(dāng)前值之間有遞增的連續(xù)性。如果所有的這樣的檢驗被驗證,則網(wǎng)關(guān)計算設(shè)備620可以進(jìn)行對事件日志190的分析,并驗證其中的被列舉的每個組件是被批準(zhǔn)的,或另外地驗證至少其中被列舉的每個組件不被認(rèn)為是惡意的。正如由動作680指示的,在一個實施例中,事件日志190的項目的這樣的檢查可以形成由網(wǎng)關(guān)計算設(shè)備620有關(guān)以下內(nèi)容的判決的基礎(chǔ),即是否準(zhǔn)許個人計算設(shè)備610訪問它正在請求的無論什么數(shù)據(jù)或資源。雖然以上的說明僅僅聚焦于諸如在單個休眠與再繼續(xù)的循環(huán)中計算設(shè)備的兩 “代”,這里在休眠之前的計算設(shè)備的操作可被看作為一“代”,而在從休眠再繼續(xù)之后的計算設(shè)備的操作可被看作為隨后的另一“代”,但以上的說明并不限于此。相反,單調(diào)計數(shù)器 156的使用可以使上述的機(jī)制能跨越計算設(shè)備的多“代”來實施。正如這里使用的,術(shù)語“代” 是指以電源接通事件開始且以電源關(guān)斷事件結(jié)束的計算設(shè)備的操作,電源接通事件包括跟隨在其間計算設(shè)備被完全關(guān)斷電源的時期之后的電源接通事件、作為重新啟動的一部分發(fā)生的電源接通事件和使得計算設(shè)備從休眠狀態(tài)再繼續(xù)的電源接通事件;而電源關(guān)斷事件包括當(dāng)計算設(shè)備被關(guān)斷時的電源關(guān)斷事件、作為重新啟動的一部分的電源關(guān)斷事件和使得計算設(shè)備進(jìn)入休眠狀態(tài)的電源關(guān)斷事件。如上所述,當(dāng)計算設(shè)備100被休眠時,或另外地被安置到將用信號通知當(dāng)前“代” 的結(jié)束的掛起狀態(tài)中時,諸如舉例而言,當(dāng)虛擬計算設(shè)備被縮減到用于克隆的盤映像時,一個或多個項目可被記錄在事件日志190中。所述一個或多個項目可包括PCR 155的一個或多個的當(dāng)前值、那些PCR值的引述和被用作為引導(dǎo)計數(shù)器的單調(diào)計數(shù)器156的當(dāng)前值。在計算設(shè)備100的多代可被記錄在事件日志190的實施例中,這些代可以用單調(diào)計數(shù)器156 的值來描述。更具體地,對于不同于當(dāng)前代的每一代,在事件日志190中可以有單調(diào)計數(shù)器 156的先前值的對應(yīng)項目。對于當(dāng)前代,單調(diào)計數(shù)器156的對應(yīng)值可以是在TPM 150中被單調(diào)計數(shù)器156保持的單調(diào)計數(shù)器156的那個值。在一個實施例中,進(jìn)入事件日志190中、包括單調(diào)計數(shù)器156的當(dāng)時的當(dāng)前值的項目可以不一定是在電源關(guān)斷事件之前在事件日志190中的最后的項目。因此,在這樣的實施例中,可以參考事件日志190中更傳統(tǒng)的項目,諸如硬件項目291和496,以便確定計算設(shè)備100的一代的開始和結(jié)束??梢詫?yīng)于那個代的單調(diào)計數(shù)器156的值可以是如在標(biāo)記計算設(shè)備100的那個特定代的開始與結(jié)束的項目之間出現(xiàn)的項目中(諸如在項目395中)所指示的值。另外,對于包括跨越計算設(shè)備100的這樣的多代的項目的事件日志(諸如事件日志190)的分析可以以與先前描述的相同的方式進(jìn)行。具體地,分析事件日志190的計算設(shè)備,諸如網(wǎng)關(guān)計算設(shè)備620,可以驗證被記錄在事件日志190中的單調(diào)計數(shù)器156的值是連續(xù)的,這表明沒有未被記錄在事件日志中的計算設(shè)備的代。在事件日志上的每個項目然后可以通過參考在與正被驗證的項目相同計算設(shè)備代內(nèi)被記錄在事件日志190中的PCR 155的值,而被驗證為沒有被篡改。另外,那些PCR值本身可以通過參考與它們一起被記錄的引述而被驗證。一旦這樣的驗證被執(zhí)行,事件日志190的項目,包括跨越計算設(shè)備100的多代伸展的項目,如果適當(dāng)?shù)脑?,就可以被分析以確定是否存在涉及被認(rèn)為是惡意的、不安全的、或不適當(dāng)?shù)慕M件的任何項目,所述組件例如包括沒有被更新到更加新的、改進(jìn)的版本的組件。轉(zhuǎn)到圖7,圖上顯示的流程圖700圖示可以由計算設(shè)備執(zhí)行的示范性步驟序列,其生成跨越計算設(shè)備的多代,諸如跨越多個休眠與再繼續(xù)循環(huán)的事件日志。初始地,如圖7的流程圖700所顯示的,在步驟710,被包括作為從休眠再繼續(xù)的一部分,計算設(shè)備可被接通電源。隨后,可信執(zhí)行環(huán)境的單調(diào)計數(shù)器盡早在可行的情況下遞增。在圖7的示范性流程圖 700上,單調(diào)計數(shù)器的這樣的遞增在步驟715發(fā)生,雖然它同樣可以在稍后的時間點執(zhí)行, 而并不背離這里的描述。在一個實施例中,單調(diào)計數(shù)器的遞增,諸如在步驟715的遞增,可以由作為操作系統(tǒng)的一部分的計算機(jī)可執(zhí)行指令執(zhí)行。在這樣的實施例中,單調(diào)計數(shù)器的遞增可能直到在操作系統(tǒng)的至少相關(guān)組件已經(jīng)被實例化之后才能被執(zhí)行,諸如在步驟735。 然而,在另一個實施例中,單調(diào)計數(shù)器的遞增可以由作為計算設(shè)備100的BIOS的一部分、或甚至作為可信執(zhí)行環(huán)境本身的一部分的計算機(jī)可執(zhí)行指令來執(zhí)行。在這樣的實施例中,單調(diào)計數(shù)器的遞增,可以早得多地被執(zhí)行,諸如在步驟715,如圖7的流程圖700所顯示的。
除了單調(diào)計數(shù)器的遞增以外,在步驟710接通電源之后,計算設(shè)備的硬件方面可被實例化,且被記錄在事件日志中,以及它們的測量可被利用來擴(kuò)充可信執(zhí)行環(huán)境的一個或多個PCR,如在步驟720顯示的。同樣地,在步驟725,OS裝入程序或操作系統(tǒng)的其它適當(dāng)?shù)慕M件可以被實例化,被記錄在事件日志中,以及可信執(zhí)行環(huán)境的一個或多個PCR可以用它們的測量被擴(kuò)充。在步驟730,可以諸如由OS裝入程序或操作系統(tǒng)的其它適當(dāng)?shù)慕M件對于是否存在休眠映像作出確定。如果不存在休眠映像,則處理可以進(jìn)到步驟735,在該點,操作系統(tǒng)的其它組件可被實例化,以便完成操作系統(tǒng)的引導(dǎo),讓那些組件被記錄在事件日志中,以及它們的測量被利用來擴(kuò)充可信執(zhí)行環(huán)境的一個或多個PCR。這樣的傳統(tǒng)的記錄可信執(zhí)行環(huán)境 PCR的擴(kuò)充可以在步驟745對于計算設(shè)備的其它方面進(jìn)行。在時間上的某個點,正如由在步驟750的判決所圖示的,計算設(shè)備可被休眠。如果計算設(shè)備被休眠,或計算設(shè)備的當(dāng)前代被另外地結(jié)束,使得在事件日志中對應(yīng)于這樣的代的信息應(yīng)當(dāng)被保存以用于將來的評估,于是處理可進(jìn)行到步驟755,在該點,PCR的當(dāng)前值可被保存在事件日志中,正如在步驟715 被遞增的單調(diào)計數(shù)器的當(dāng)前值可以的那樣。附加地,也作為步驟755的一部分,PCR的當(dāng)前值可以諸如通過用一個或多個可信執(zhí)行環(huán)境特定的密鑰來簽署而被引述。所得到的引述可以同樣地被保存在事件日志中。正如在單調(diào)計數(shù)器的遞增的情形中,在一個實施例中,步驟755的實行可以由操作系統(tǒng)的一個或多個組件執(zhí)行,而在其它實施例中,步驟755的實行可以由BIOS或甚至由可信執(zhí)行環(huán)境本身執(zhí)行。如果步驟755的實行由操作系統(tǒng)的組件執(zhí)行,那么正如本領(lǐng)域技術(shù)人員將認(rèn)識到的,在步驟755后面可以有附加的步驟,因為計算設(shè)備100的其它方面可能需要在操作系統(tǒng)的組件已經(jīng)停止操作后為休眠作準(zhǔn)備。然而,如果步驟755的實行由BIOS 或可信執(zhí)行環(huán)境執(zhí)行,則它可以例如在操作系統(tǒng)已經(jīng)為休眠作準(zhǔn)備后且直接在步驟760保存休眠映像之前發(fā)生?;氐讲襟E730,如果在步驟730確定確實存在休眠映像,諸如休眠映像已經(jīng)由以前的步驟760的實行創(chuàng)建,則處理可以進(jìn)行到步驟740,在該點,休眠映像可被裝載,以及被保存作為休眠映像的一部分的事件日志可以與在步驟710當(dāng)接通電源后創(chuàng)建的事件日志相組合。隨后的處理然后著手來將實例化的組件記錄在事件日志中,以及用那些組件的測量擴(kuò)充一個或多個PCR。轉(zhuǎn)到圖8,圖上顯示的流程圖800圖示可以在根據(jù)由計算設(shè)備得到的事件日志確定那個計算設(shè)備的安全狀態(tài)時所執(zhí)行的示范性步驟序列。一開始,在步驟810,可以執(zhí)行對于計算設(shè)備的安全狀態(tài)的評估所必需的請求或其它動作。隨后,在步驟820,可以接收在步驟810進(jìn)行請求的計算設(shè)備的可信執(zhí)行環(huán)境的事件日志、PCR中一個或多個的值和單調(diào)計數(shù)器的值。一旦在步驟820得到相關(guān)的信息組,就可以在步驟830到870執(zhí)行一系列檢驗。 雖然在圖8的示范性流程圖800上這些檢驗以特定的次序被圖示,但這樣的次序僅僅打算是說明性的,而不是表明某個檢驗必須在任何其它特定的檢驗之前被執(zhí)行,因為,正如可以從圖8的示范性流程圖800看出的,任何一個檢驗的失敗都會在步驟890導(dǎo)致在步驟810接收的請求的拒絕或失敗,以及相反地,每個檢驗的成功都會導(dǎo)致在步驟880準(zhǔn)許在步驟810 接收的請求??杀粓?zhí)行的其中一個檢驗,諸如在步驟830執(zhí)行的檢驗,可包括確定事件日志的當(dāng)前部分——諸如來自正被評估的計算設(shè)備的當(dāng)前代的那些事件日志項目——是否匹配于當(dāng)前的PCR值。正如本領(lǐng)域技術(shù)人員將會知道的,這樣的檢驗可以通過以下方式被執(zhí)行 以與其被擴(kuò)充到一個或多個PCR中的相同方式來擴(kuò)充其項目被驗證的組件的測量,然后驗證所得到的值匹配于實際的PCR的值。可被執(zhí)行的另一個檢驗,諸如在步驟840執(zhí)行的檢驗,可以驗證貫穿日志是否有單調(diào)計數(shù)器的遞增的連續(xù)性。正如以前指明的,單調(diào)計數(shù)器不一定被遞增為1的遞增值。在這樣的實施例中,在步驟840進(jìn)行的檢驗可以驗證被記錄在事件日志中的單調(diào)計數(shù)器的值,與諸如在步驟820接收的單調(diào)計數(shù)器的當(dāng)前值,是否彼此相差等于單個遞增值的量。如果在單調(diào)計數(shù)器的被記錄值之間,或者在單調(diào)計數(shù)器的上次記錄的值與單調(diào)計數(shù)器的當(dāng)前值之間有大于單個遞增值的差值,則這樣的差異可以表明計算設(shè)備在與其間發(fā)現(xiàn)這種差異的單調(diào)計數(shù)器的兩個值相關(guān)聯(lián)的那些代之間至少被引導(dǎo)過一次,且這樣,則在事件日志中的項目不再包括計算設(shè)備的連續(xù)歷史。在一個實施例中,在驗證計算設(shè)備的先前代的日志項目匹配于與那些代相關(guān)聯(lián)的被記錄的PCR值之前,可以進(jìn)行初步檢驗,以便驗證所記錄的PCR值沒有被篡改,或另外地被修改。因此,在步驟850,可以作出關(guān)于所記錄的PCR值是否匹配于也被輸入到事件日志中的那些值的引述的確定。如果這樣的檢驗失敗,則可能沒有任何理由去驗證計算設(shè)備的先前代的日志項目匹配于與那些代相關(guān)聯(lián)的所記錄的PCR值,因為所記錄的PCR值本身不能被驗證。然而,如果在步驟850,被記錄的PCR值參照于也被記錄的那些值的引述被驗證, 則處理可以進(jìn)行到步驟860,在那里,可以確定計算設(shè)備的先前代的日志項目是否匹配于與那些代相關(guān)聯(lián)的所記錄的PCR值。如在步驟830進(jìn)行的檢驗的情形下,這樣的確定可以通過以下方式被執(zhí)行以與其會被擴(kuò)充到一個或多個PCR的相同方式擴(kuò)充被驗證的那些先前代的項目的組件的測量,然后驗證所得到的值匹配于相關(guān)聯(lián)的所記錄的PCR值的那個值。作為最后的檢驗,一旦在事件日志中的所有項目都可以諸如經(jīng)由上述的檢驗而被驗證為真實的,且沒有被篡改或另外地被修改,則日志項目本身就可以被評估,這樣在步驟 870,確定它們是否指示計算設(shè)備的安全狀態(tài)可能已被損害。因此,例如,可以檢查日志項目以便識別任何潛在的惡意的組件,或者代表更老的不太安全的版本的、或代表只不過被認(rèn)為構(gòu)成安全風(fēng)險或另外地不可接受的組件的任何組件。如果所有的這樣的檢驗都通過,則在步驟880,在步驟810接收的請求可被準(zhǔn)許。相反,如果任一項檢驗失敗,則在步驟890, 所述請求可被拒絕,或者可以以其它方式失敗。正如可以看出的,已經(jīng)給出了用于跨越計算設(shè)備多代的安全地記錄事件的機(jī)制。 鑒于這里描述的主題的許多可能的變例,我們把可能屬于以下權(quán)利要求及其等同物的范圍內(nèi)的所有這樣的實施例作為我們的發(fā)明來要求保護(hù)。
權(quán)利要求
1.一種用于跨越計算設(shè)備(100)的多代將項目記錄到日志文件(190)中的方法,該方法包括以下步驟響應(yīng)于計算設(shè)備(100)已開始新的一代而遞增可信的執(zhí)行環(huán)境(150)的單調(diào)計數(shù)器 (156);在計算設(shè)備(100)結(jié)束當(dāng)前代之前生成可信的執(zhí)行環(huán)境(150)的至少一個平臺配置寄存器(PCR) (155)的值的引述;以及在計算設(shè)備(100)結(jié)束當(dāng)前代之前將所述的引述、所述至少一個PCR (155)的值和單調(diào)計數(shù)器(156)的當(dāng)前值插入到事件日志(190)中。
2.權(quán)利要求1的方法,其中結(jié)束當(dāng)前代包括進(jìn)入休眠狀態(tài)。
3.權(quán)利要求1的方法,還包括以下步驟將當(dāng)前的事件日志與來自計算設(shè)備的先前代的在先的事件日志連結(jié)。
4.權(quán)利要求1的方法,其中事件日志包括來自計算設(shè)備的至少一個先前代的項目,所述項目包括與計算設(shè)備的該至少一個先前代相關(guān)聯(lián)的單調(diào)計數(shù)器的先前值。
5.一種或多種計算機(jī)可讀介質(zhì),其包括用于執(zhí)行權(quán)利要求1的步驟的計算機(jī)可執(zhí)行的指令。
6.一種用于評估計算設(shè)備(100)的日志文件(190)的方法,所述日志文件(190)包括來自計算設(shè)備(100)的當(dāng)前代和計算設(shè)備的至少一個先前代的項目,該方法包括以下步驟獲得計算設(shè)備(100)的日志文件(190)、計算設(shè)備(100)的可信執(zhí)行環(huán)境(150)的一個或多個平臺配置寄存器(PCR) (155)的當(dāng)前值、以及計算設(shè)備(100)的可信執(zhí)行環(huán)境 (150)的單調(diào)計數(shù)器(156)的當(dāng)前值;驗證在單調(diào)計數(shù)器(156)的當(dāng)前值與被記錄在日志文件(190)中的單調(diào)計數(shù)器(156) 的至少一個先前值之間的遞增連續(xù)性;參照計算設(shè)備(100)的可信執(zhí)行環(huán)境(150)的一個或多個PCR (155)的當(dāng)前值,來驗證日志文件(190)中對應(yīng)于計算設(shè)備(100)的當(dāng)前代的項目;參照被記錄在日志文件(190)中且對應(yīng)于計算設(shè)備(100)的至少一個先前代的、計算設(shè)備(100)的可信執(zhí)行環(huán)境(150)的一個或多個PCR( 155)的先前值,來驗證日志文件(190) 中對應(yīng)于計算設(shè)備(100)的至少一個先前代的項目;以及參照也被記錄在日志文件(190)中的那些先前值的至少一個引述,來驗證被記錄在日志文件(190)中的、計算設(shè)備(100)的可信執(zhí)行環(huán)境(150)的一個或多個PCR (155)的先前值。
7.權(quán)利要求6的方法,還包括以下步驟如果被記錄在日志文件中的跨越計算設(shè)備的當(dāng)前代與計算設(shè)備的至少一個先前代的所有組件都是能接受的,則準(zhǔn)許計算設(shè)備的請求。
8.權(quán)利要求6的方法,還包括以下步驟驗證在被記錄于日志文件中的單調(diào)計數(shù)器的所有先前值之間的遞增連續(xù)性,其中日志文件包括來自計算設(shè)備的多個先前代的項目。
9.一種或多種計算機(jī)可讀介質(zhì),其包括用于執(zhí)行權(quán)利要求6的步驟的計算機(jī)可執(zhí)行的指令。
10.一種系統(tǒng),包括客戶機(jī)計算設(shè)備,其請求訪問來自網(wǎng)關(guān)計算設(shè)備的資源,該客戶機(jī)計算設(shè)備包括第一計算機(jī)可讀媒介,該第一計算機(jī)可讀媒介具有計算機(jī)可執(zhí)行的指令,該指令用于將客戶機(jī)計算設(shè)備的日志文件(190)、客戶機(jī)計算設(shè)備的可信執(zhí)行環(huán)境(150)的一個或多個平臺配置寄存器(PCR) (155)的當(dāng)前值和客戶機(jī)計算設(shè)備的可信執(zhí)行環(huán)境(150)的單調(diào)計數(shù)器 (156)的當(dāng)前值傳送到網(wǎng)關(guān)計算設(shè)備;以及網(wǎng)關(guān)計算設(shè)備,其包括第二計算機(jī)可讀介質(zhì),該第二計算機(jī)可讀介質(zhì)具有用于執(zhí)行以下步驟的計算機(jī)可執(zhí)行的指令驗證在從客戶機(jī)計算設(shè)備接收的單調(diào)計數(shù)器(156)的當(dāng)前值與從客戶機(jī)計算設(shè)備接收的、被記錄在日志文件(190)中的單調(diào)計數(shù)器(156)的至少一個先前值之間的遞增連續(xù)性;參照從客戶機(jī)計算設(shè)備接收的、客戶機(jī)計算設(shè)備的可信執(zhí)行環(huán)境(150)的一個或多個PCR (155)的當(dāng)前值,來驗證日志文件(190)中對應(yīng)于計算設(shè)備的當(dāng)前代的項目;參照被記錄在日志文件(190)中的、且對應(yīng)于客戶機(jī)計算設(shè)備的至少一個先前代的、客戶機(jī)計算設(shè)備的可信執(zhí)行環(huán)境(150)的一個或多個PCR (155)的先前值,來驗證日志文件(190)中對應(yīng)于客戶機(jī)計算設(shè)備的至少一個先前代的項目;以及參照也被記錄在日志文件(190)中的那些先前值的至少一個引述,來驗證被記錄在日志文件(190)中的、 客戶機(jī)計算設(shè)備的可信執(zhí)行環(huán)境(150)的一個或多個PCR (155)的先前值。
全文摘要
本發(fā)明涉及帶有休眠支持的全局有效的測量的操作系統(tǒng)發(fā)動。事件日志不僅包括與自從計算設(shè)備的最近電源接通以來被實例化的組件相關(guān)聯(lián)的項目,而且也包括在那個電源接通之前被實例化的組件的項目,諸如被實例化的、且代表在現(xiàn)在已經(jīng)再繼續(xù)的休眠之前的計算設(shè)備的狀態(tài)的組件。在休眠后,可信平臺模塊(可信執(zhí)行環(huán)境)的平臺配置寄存器(PCR)的當(dāng)前值,以及那些當(dāng)前值的引述,和可信執(zhí)行環(huán)境的單調(diào)計數(shù)器的當(dāng)前值被記錄。單調(diào)計數(shù)器在每次電源接通時被遞增,以便跟蹤計算設(shè)備的接連的代和提防插入的、沒有被記錄的代。對事件日志的隨后分析參照日志中與那些代相關(guān)聯(lián)的PCR值,來驗證先前代的項目。
文檔編號G06F21/00GK102509046SQ20111034119
公開日2012年6月20日 申請日期2011年11月2日 優(yōu)先權(quán)日2010年11月2日
發(fā)明者D.J.林斯利, M.F.諾瓦克, M.奈斯特倫, N.伊德, R.K.斯皮格, S.D.安德森, S.托姆 申請人:微軟公司