專利名稱:用于執(zhí)行安全環(huán)境起始指令的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及微處理器系統(tǒng),更具體地說(shuō),涉及可以在可信或安全環(huán)境中運(yùn)行的 微處理器系統(tǒng)。
背景技術(shù):
在本地或遠(yuǎn)程微型計(jì)算機(jī)上執(zhí)行的金融和個(gè)人事務(wù)的增加量已經(jīng)推動(dòng)了"可信"或"安 全"微處理器環(huán)境的建立。這些環(huán)境試圖要解決的問(wèn)題是個(gè)人隱私的泄露或者數(shù)據(jù)被破壞 或?yàn)E用。用戶不想公開(kāi)他們的私人數(shù)據(jù)。他們也不想不當(dāng)?shù)氖聞?wù)改變或使用他們的數(shù) 據(jù)。這樣的例子包括非故意地泄露醫(yī)療記錄或者從在線銀行或其它存款處因?yàn)殡娮臃绞?失竊資金。類似地,內(nèi)容供給者設(shè)法保護(hù)數(shù)字內(nèi)容(例如,音樂(lè)、其它音頻、視頻或其 它類型的一般數(shù)據(jù))不會(huì)在未經(jīng)授權(quán)的情況下被復(fù)制。
現(xiàn)有的可信系統(tǒng)可以利用一套完全封閉的可信軟件。這個(gè)方法實(shí)施起來(lái)相對(duì)簡(jiǎn)單, 但缺點(diǎn)是不允許同時(shí)使用市場(chǎng)上可買到的普通操作系統(tǒng)和應(yīng)用軟件。這個(gè)缺點(diǎn)限制了對(duì) 上述可信系統(tǒng)的認(rèn)可。
本發(fā)明是以實(shí)施例的方式來(lái)說(shuō)明的,而不是以限定的方式來(lái)說(shuō)明的,附圖中相近的 附圖標(biāo)記表示類似的部件,其中
圖1是在微處理器系統(tǒng)中執(zhí)行的示例性軟件環(huán)境的圖。
圖2是依據(jù)本發(fā)明一個(gè)實(shí)施方案的某些示例性可信或安全軟件模塊和示例性系統(tǒng)環(huán) 境的圖。
圖3是依據(jù)本發(fā)明一個(gè)實(shí)施方案的示例性可信或安全軟件環(huán)境的圖。
圖4A是依據(jù)本發(fā)明一個(gè)實(shí)施方案,適合于支持圖3的安全軟件環(huán)境的示例性微處 理器系統(tǒng)示意圖。
圖4B是依據(jù)本發(fā)明另一實(shí)施方案,適合于支持圖3安全軟件環(huán)境的示例性微處理 器系統(tǒng)示意圖。
圖5是依據(jù)本發(fā)明另一實(shí)施方案,適合于支持圖3安全軟件環(huán)境的示例性微處理器 系統(tǒng)示意圖。
圖6是依據(jù)本發(fā)明一個(gè)實(shí)施方案的軟件成分執(zhí)行的時(shí)線圖。
圖7是依據(jù)本發(fā)明一個(gè)實(shí)施方案的軟件和其它過(guò)程塊的流程圖。
具體實(shí)施例方式
下面的說(shuō)明描述了在微處理器系統(tǒng)內(nèi)啟動(dòng)可信或安全環(huán)境的技術(shù)。在下面說(shuō)明中, 為了更徹底地理解本發(fā)明,闡述了許多具體細(xì)節(jié),例如邏輯實(shí)現(xiàn)、軟件模塊分配、加密 技術(shù)、總線信令技術(shù),以及操作細(xì)節(jié)。然而,本領(lǐng)域技術(shù)人員將能理解,沒(méi)有上述具體 細(xì)節(jié)也可以實(shí)施本發(fā)明。在其它情況下,為了不搞混本發(fā)明,沒(méi)有詳細(xì)表示控制結(jié)構(gòu)、 門電平電路和全部軟件指令序列。獲悉本文所包含的說(shuō)明的本領(lǐng)域普通技術(shù)人員無(wú)需超 出常規(guī)的試驗(yàn)就能夠?qū)崿F(xiàn)恰當(dāng)?shù)墓δ苄?。本發(fā)明是以微處理器系統(tǒng)的形式公開(kāi)的。然 而,以其它處理器的形式也可以實(shí)施本發(fā)明,例如數(shù)字信號(hào)處理器、小型計(jì)算機(jī)或大型 計(jì)算機(jī)。
現(xiàn)在參考圖1,圖中所示為在微處理器系統(tǒng)中執(zhí)行的一個(gè)示例性軟件環(huán)境。圖1中 所示的軟件不是可信的(非可信的)。當(dāng)在高特權(quán)級(jí)下運(yùn)行時(shí),操作系統(tǒng)150的大小和 持續(xù)更新使得按照適時(shí)方式進(jìn)行任何信任分析非常困難。許多操作系統(tǒng)位于特權(quán)環(huán) (ring)零(0)內(nèi),即最高特權(quán)級(jí)。應(yīng)用152, 154和156具有降低了很多的特權(quán),典型 地位于特權(quán)環(huán)三(3)內(nèi)。不同特權(quán)環(huán)的存在以及操作系統(tǒng)150和應(yīng)用152, 154, 156分 成這些不同特權(quán)環(huán)似乎允許圖1的軟件按照可信模式運(yùn)行,即基于決策來(lái)信任由操作系 統(tǒng)150提供的設(shè)備。然而,實(shí)際上進(jìn)行上述信任決策經(jīng)常是不切實(shí)際的。影響這個(gè)問(wèn)題 的因素包括運(yùn)行系統(tǒng)150的大小(代碼行的數(shù)目),操作系統(tǒng)150可以是許多更新(新 代碼模塊和補(bǔ)丁)的接收者的事實(shí),以及操作系統(tǒng)150也可以包含代碼模塊(例如由用 戶而不是操作系統(tǒng)開(kāi)發(fā)者提供的設(shè)備驅(qū)動(dòng)器)的事實(shí)。操作系統(tǒng)150可以是通用操作系 統(tǒng),例如Microsoft Windows , Linux或Solaris ,或者可以是任何其它適當(dāng)已知或另 外可獲得的操作系統(tǒng)。應(yīng)用或操作系統(tǒng)運(yùn)行或正在運(yùn)行的具體類型或名稱不是關(guān)鍵的。
現(xiàn)在參考圖2,圖中所示為依據(jù)本發(fā)明一個(gè)實(shí)施方案的某些示例性可信或安全軟件 模塊和示例性系統(tǒng)環(huán)境200。在圖2的實(shí)施方案中,處理器202、處理器212、處理器 222和可選的其它處理器(未圖示)圖示為單獨(dú)硬件實(shí)體。在其它實(shí)施方案中,正如不同 部件和功能單元的邊界可以變化,處理器的數(shù)量也可以不同。在某些實(shí)施方案中,可以 用在一個(gè)或多個(gè)物理處理器上運(yùn)行的單獨(dú)硬件執(zhí)行線程(thread)或"邏輯處理器"來(lái)替換 這些處理器。
處理器202, 212, 222可以包含某些專用電路或邏輯元件以支持安全或可信操作。 例如,處理器202可以包含安全輸入(SENTER)邏輯204以支持執(zhí)行專用SENTER指 令,所述指令可以啟動(dòng)可信操作。處理器202也可以包含總線消息邏輯206以支持系統(tǒng) 總線230上的專用總線消息,支持專用SENTER操作。在另外的實(shí)施方案中,芯片組 240的存儲(chǔ)控制功能可以分配給處理器內(nèi)的電路,對(duì)于多個(gè)處理器而言,可以包括在單個(gè) 管芯上。在這些實(shí)施方案中,專用總線消息也可以在這些處理器內(nèi)部的總線上發(fā)送。由 于幾個(gè)原因,使用專用總線消息可以增加系統(tǒng)安全性或可信任性。如果電路元件例如處 理器202, 212, 222或芯片組240包含本發(fā)明公開(kāi)的實(shí)施方案的適當(dāng)邏輯元件,則它們可以只發(fā)布或響應(yīng)上述消息。因此專用總線消息的成功交換可以有助于確保適當(dāng)?shù)南到y(tǒng) 配置。專用總線消息也可以允許通常應(yīng)該被禁止的活動(dòng),例如復(fù)位平臺(tái)配置寄存器 278。通過(guò)允許專用總線消息的發(fā)布只響應(yīng)專用安全指令,可以限制潛在的敵對(duì)非可信代 碼對(duì)某些總線事務(wù)進(jìn)行偵測(cè)的能力。
另外,處理器202可以包含安全存儲(chǔ)器208以支持安全起始操作。在一個(gè)實(shí)施方案 中,安全存儲(chǔ)器208可以是處理器202的內(nèi)部高速緩存器,或許按照專用模式運(yùn)行。在 另外的實(shí)施方案中,安全存儲(chǔ)器208可以是專用存儲(chǔ)器。其它處理器,例如處理器212 和處理器222,也可以包括SENTER邏輯214, 224、總線消息邏輯216, 226、以及安全 存儲(chǔ)器218, 228。
"芯片組"可以定義為一組電路和邏輯,它們支持存儲(chǔ)器以及針對(duì)連接的一個(gè)或多個(gè) 處理器所進(jìn)行輸入/輸出(I/O)操作。芯片組的單個(gè)元件可以組合在在單個(gè)芯片、 一對(duì)芯 片上或分散在多個(gè)芯片中,包括處理器。在圖2的實(shí)施方案中,芯片組240可以包括支 持存儲(chǔ)器和I/O操作的電路和邏輯,以支持處理器202, 212和222。在一個(gè)實(shí)施方案 中,芯片組240可以與許多存儲(chǔ)頁(yè)面250-262和設(shè)備訪問(wèn)頁(yè)面表248連接,頁(yè)面表248包 含指示非處理器設(shè)備是否可以訪問(wèn)存儲(chǔ)頁(yè)面250-262的控制信息。芯片組240可以包括設(shè) 備訪問(wèn)邏輯247,所述邏輯可以允許或拒絕從I/O設(shè)備到存儲(chǔ)頁(yè)面250-262的所選部分的 直接存儲(chǔ)器存取(DMA)。在某一實(shí)施方案中,設(shè)備訪問(wèn)邏輯247可以包含允許或拒絕 上述訪問(wèn)需要的所有相關(guān)信息。在其它實(shí)施方案中,設(shè)備訪問(wèn)邏輯247可以訪問(wèn)保存在 設(shè)備訪問(wèn)頁(yè)面表248內(nèi)的上述信息。存儲(chǔ)頁(yè)面的實(shí)際數(shù)量不是重要的,并且將根據(jù)系統(tǒng) 需求而變化。在其它實(shí)施方案中,存儲(chǔ)器訪問(wèn)功能可以在芯片組240的外部。在另外實(shí) 施方案中,芯片組240的功能還可以在一個(gè)或多個(gè)物理設(shè)備中分配。
為支持專用SENTER操作,芯片組240可以另外包括它自己的總線消息邏輯242來(lái) 支持系統(tǒng)總線230上的專用總線消息。這些專用總線消息中的某些可以包括把關(guān)鍵字
(key)寄存器244的內(nèi)容傳遞給處理器202, 212或222,或者允許通過(guò)處理器202, 212或222檢驗(yàn)專用的ALL-JOINED標(biāo)志274。總線消息邏輯242的附加特征可以是把多 個(gè)處理器的總線活動(dòng)記錄在"EXISTS"寄存器272中以及把多個(gè)處理器的某一專用總線消 息活動(dòng)保存在"JOINS"寄存器272中。EXISTS寄存器272和JOINS寄存器272的內(nèi)容的 等同性可以用來(lái)設(shè)定專用的ALL-JOINED標(biāo)志,以指示系統(tǒng)內(nèi)所有處理器都在參與安全 輸入過(guò)程。
芯片組240可以支持I/O總線上的標(biāo)準(zhǔn)I/O操作,所述I/O總線例如外設(shè)部件接口 (PCI)、加速圖形接口 (AGP)、通用串行總線(USB)、低引線數(shù)(LPC)總線或任 何其它類型I/0總線(未示出)。接口 290可以用來(lái)使芯片組240與標(biāo)記276連接,標(biāo)記 276包含一個(gè)或多個(gè)平臺(tái)配置寄存器(PCR) 278, 279。在一個(gè)實(shí)施方案中,接口 290可 以是通過(guò)修改增加了某些安全上的增強(qiáng)的LPC總線(低引線數(shù)(LPC)接口規(guī)范,英特 爾公司1997年12月29日的修訂版1.0)。上述安全上的增強(qiáng)的一個(gè)實(shí)施例是位置確認(rèn)消息,利用以前保存的消息頭和地址信息,把標(biāo)記276內(nèi)的平臺(tái)配置寄存器(PCR) 278 作為目標(biāo)。在一個(gè)實(shí)施方案中,標(biāo)記276可以包含專用安全特征,在一個(gè)實(shí)施方案中, 可以包括可信平臺(tái)模塊(TPM) 281,該模塊在2001年12月1日由TCPA出版的版本為 Ua的可信計(jì)算平臺(tái)聯(lián)合(TCPA)主要規(guī)范中被公開(kāi)(在本申請(qǐng)遞交時(shí)從 www.trustedpc.com可《尋至")。
在系統(tǒng)環(huán)境200內(nèi)確定的兩個(gè)軟件成分是安全虛擬機(jī)監(jiān)控程序(SVMM) 282模塊 和安全起始授權(quán)碼(SINIT-AC) 280模塊。SVMM 282模塊可以保存在系統(tǒng)盤或其它大 容量存忙器上,并且根據(jù)需要移動(dòng)或復(fù)制到其它位置。在一個(gè)實(shí)施方案中,在開(kāi)始安全 啟動(dòng)過(guò)程之前,SVMM 282可以移動(dòng)或復(fù)制到一個(gè)或多個(gè)存儲(chǔ)頁(yè)面250-262。安全輸入過(guò) 程之后,可以創(chuàng)建虛擬機(jī)環(huán)境,其中SVMM 282可以作為系統(tǒng)內(nèi)最高特權(quán)代碼來(lái)運(yùn)行, 可以用來(lái)允許或拒絕在創(chuàng)建的虛擬機(jī)內(nèi)的操作系統(tǒng)或應(yīng)用直接訪問(wèn)某些系統(tǒng)資源。
安全輸入過(guò)程需要的某些動(dòng)作可能超出簡(jiǎn)單硬件實(shí)施的范圍,并且相反可以方便地 使用軟件模塊,其中所述軟件模塊的執(zhí)行可以默認(rèn)是可信的。在一個(gè)實(shí)施方案中,通過(guò) 安全起始(SINIT)代碼可以執(zhí)行這些動(dòng)作。這里確定三個(gè)典型動(dòng)作,但這些動(dòng)作不應(yīng)理 解為是限定性的。 一個(gè)動(dòng)作可能要求對(duì)各種表示系統(tǒng)配置關(guān)鍵部分的控制進(jìn)行檢驗(yàn),以 確保所述配置支持正確的安全環(huán)境實(shí)例。在一個(gè)實(shí)施方案中, 一個(gè)要求的檢驗(yàn)可以是, 芯片組240提供的存儲(chǔ)控制器配置不允許兩個(gè)或多個(gè)不同系統(tǒng)總線地址接觸存儲(chǔ)頁(yè)面 250-262內(nèi)的相同位置。第二個(gè)動(dòng)作可以是配置設(shè)備訪問(wèn)頁(yè)面表248和設(shè)備訪問(wèn)邏輯 247,以保護(hù)SVMM 282存儲(chǔ)駐留拷貝使用的那些存儲(chǔ)頁(yè)面不受非處理器設(shè)備干擾。第 三個(gè)動(dòng)作可以是計(jì)算和記錄SVMM 282模塊的身份,并且把系統(tǒng)控制傳遞給它。這里"記 錄(register)"是指把SVMM282信任測(cè)量結(jié)果放入寄存器,例如放入PCR278或放入 PCR279。當(dāng)進(jìn)行了這個(gè)最后的動(dòng)作,潛在的系統(tǒng)用戶可以檢査SVMM282的可信度。
處理器或芯片組的制造商可以生成SINIT代碼。為此,可以信任SINIT代碼來(lái)幫助 芯片組240的安全啟動(dòng)。為了分配SINIT代碼,在一個(gè)實(shí)施方案中,眾所周知的加密散 列由全部SINIT代碼構(gòu)成,生成一個(gè)被稱為"摘要"的值。 一個(gè)實(shí)施方案生成一個(gè)160位 的值來(lái)作為摘要。然后通過(guò)在一個(gè)實(shí)施方案中由處理器制造商擁有的私鑰(private key)對(duì) 摘要進(jìn)行加密,以形成數(shù)字簽名。當(dāng)SINIT代碼與相應(yīng)數(shù)字簽名捆綁在一起時(shí),這個(gè)組 合可以稱為SINIT授權(quán)碼(SINIT-AC) 280。如下所述,SINIT-AC 280的拷貝可以在后面 驗(yàn)證。
SINIT-AC 280可以保存在系統(tǒng)盤或其它大容量存儲(chǔ)器上或者保存在固定媒介中,并 且根據(jù)需要移動(dòng)或復(fù)制到其它位置。在一個(gè)實(shí)施方案中,在開(kāi)始安全啟動(dòng)過(guò)程之前, SINIT-AC 280可以移動(dòng)或復(fù)制到存儲(chǔ)頁(yè)面250-262以形成SINIT-AC存儲(chǔ)駐留拷貝。
任何邏輯處理器可以開(kāi)始安全啟動(dòng)過(guò)程,并且因而可以被稱為啟動(dòng)邏輯處理器 (ILP)。在本實(shí)施例中,處理器202為ILP,盡管系統(tǒng)總線230上的任何處理器能夠成為ILP。此時(shí),SINIT-AC280存儲(chǔ)駐留拷貝或SVMM282存儲(chǔ)駐留拷貝都不被認(rèn)為是可信 的,因?yàn)槌似渌蛑?,另外的處理器或DMA設(shè)備可以重寫存儲(chǔ)頁(yè)面250-262。
然后,ILP (處理器202)執(zhí)行專用指令。這個(gè)專用指令可以稱為安全輸入 (SENTER)指令,并且可以由SENTER邏輯204支持。SENTER指令的執(zhí)行可以使ILP (處理器202)在系統(tǒng)總線230上發(fā)布專用總線消息,然后為隨后的系統(tǒng)動(dòng)作等待相當(dāng)長(zhǎng) 的時(shí)間間隔。SENTER執(zhí)行開(kāi)始之后,這些專用總線消息之一,即SENTER BUS MESSAGE在系統(tǒng)總線230上廣播。除了 ILP之外的那些邏輯處理器可以稱為響應(yīng)邏輯 處理器(RLP),它們用內(nèi)部非屏蔽事件響應(yīng)SENTER BUS MESSAGE。在本實(shí)施例 中,RLP包括處理器212和處理器222。 RLP必須各自終止當(dāng)前操作,在系統(tǒng)總線230上 發(fā)送RLP確認(rèn)(ACK)專用總線消息,然后進(jìn)入等待狀態(tài)。應(yīng)該注意,ILP也在系統(tǒng)總 線230上發(fā)送它自己的ACK消息。
芯片組240可以包含一對(duì)寄存器,艮卩"EXISTS"寄存器270和"JOINS"寄存器272。 這些寄存器可以用來(lái)檢驗(yàn)ILP和所有RLP正在適當(dāng)?shù)仨憫?yīng)SENTER BUS MESSAGE。在 一個(gè)實(shí)施方案中,通過(guò)在邏輯處理器所進(jìn)行的任何系統(tǒng)總線事務(wù)中把"l"寫入EXISTS寄 存器270的相應(yīng)位,芯片組240可以把始終掌握在系統(tǒng)內(nèi)的所有操作邏輯處理器的情 況。在本實(shí)施方案中,系統(tǒng)總線230上的每個(gè)事務(wù)必須包含標(biāo)識(shí)字段(field),所述字 段包含邏輯處理器標(biāo)識(shí)符。在一個(gè)實(shí)施方案中,這是由物理處理器標(biāo)識(shí)符和每個(gè)物理處 理器內(nèi)硬件執(zhí)行線程的標(biāo)識(shí)符構(gòu)成。例如,如果在處理器222上執(zhí)行的線程在系統(tǒng)總線 230上引起任何總線事務(wù),則芯片組240將在該事務(wù)中發(fā)現(xiàn)這個(gè)邏輯處理器標(biāo)識(shí)符,并且 把'T,寫入EXISTS寄存器270內(nèi)的相應(yīng)位置286。安全啟動(dòng)過(guò)程期間,當(dāng)處理器222上 的那個(gè)同一線程在系統(tǒng)總線230上發(fā)送它自己的ACK信息時(shí),芯片組240也將發(fā)現(xiàn)這個(gè) 標(biāo)識(shí)符,并且把"l"寫入JOINS寄存器272內(nèi)的相應(yīng)位置288。(在圖2的實(shí)施例中,為 了清楚每個(gè)物理處理器圖示為只帶有單個(gè)執(zhí)行線程。在另外實(shí)施方案中,物理處理器可 以支持多個(gè)線程,因而支持多個(gè)邏輯處理器。)當(dāng)JOINS寄存器272的內(nèi)容與EXISTS 寄存器270的內(nèi)容匹配時(shí),則芯片組240可以設(shè)置ALL-JOINED標(biāo)志246,該標(biāo)志表示 所有處理器已經(jīng)適當(dāng)?shù)仨憫?yīng)了 SENTER BUS MESSAGE。
在另一實(shí)施方案中,在ALL-JOINED標(biāo)志246設(shè)置之后,EXISTS寄存器270和 JOINS寄存器272可以繼續(xù)有助于安全性。在ALL-JOINED標(biāo)志246設(shè)置之后直到可信 或安全操作結(jié)束期間,芯片組240可以繼續(xù)監(jiān)控并比較相對(duì)JOINS寄存器272的總線周 期。在這期間,如果芯片組240在任何時(shí)候從邏輯處理器中發(fā)現(xiàn)總線事務(wù),而所述處理 器不是當(dāng)前在JOINS寄存器272內(nèi)所確定的,則芯片組240可以假設(shè)這個(gè)邏輯處理器不 知何故己經(jīng)"出現(xiàn)"晚了。這將暗示上述邏輯處理器沒(méi)有參加過(guò)安全啟動(dòng)過(guò)程,因此可能 代表攻擊者(安全威脅)。在這樣的情況下,芯片組240可以適當(dāng)?shù)仨憫?yīng)以把這個(gè)攻擊 者保持在安全環(huán)境之外。在一個(gè)實(shí)施方案中,芯片組240可以在這樣的情況下強(qiáng)制系統(tǒng) 復(fù)位。在第二個(gè)實(shí)施方案中,在ACK總線消息斷言之后的每個(gè)事務(wù)中,通過(guò)每個(gè)邏輯處 理器在系統(tǒng)總線上斷言專用的保留信號(hào),可以實(shí)現(xiàn)類似的"晚到"處理器檢測(cè)。在本實(shí)施方案中,在ALL-JOINED標(biāo)志246設(shè)置之后,如果芯片組240觀察到處理器啟動(dòng)的總線 事務(wù)沒(méi)有專用的斷言信號(hào),則芯片組240可以再次假設(shè)這個(gè)邏輯處理器不知何故已經(jīng)"出 現(xiàn)"晚了,并且可能代表攻擊者。
發(fā)布SENTER BUS MESSAGE之后,ILP (處理器202)輪詢ALL-JOINED標(biāo)志 246以發(fā)現(xiàn)所有處理器何時(shí)和是否已經(jīng)用它們的ACK適當(dāng)?shù)剡M(jìn)行了響應(yīng)。如果從未設(shè)置 標(biāo)志246,幾種實(shí)現(xiàn)是可能的。在ILP或芯片組內(nèi)、或其它地方的監(jiān)控定時(shí)器可以使系 統(tǒng)復(fù)位??蛇x地,系統(tǒng)可能中止并需要操作員復(fù)位。在任一情況下,盡管系統(tǒng)可能不繼 續(xù)運(yùn)行,但安全環(huán)境斷言得到保護(hù)(其中如果不是所有的處理器都參與,安全啟動(dòng)過(guò)程 就不結(jié)束)。在正常操作中,在短時(shí)間之后,ALL-JOINED標(biāo)志246被設(shè)置,并且ILP 可以確保所有其它邏輯處理器己經(jīng)進(jìn)入等待狀態(tài)。
當(dāng)ALL-JOINED標(biāo)志246被設(shè)置時(shí),為了驗(yàn)證和隨后執(zhí)行包含在SINIT-AC 280內(nèi) 的SINIT代碼,ILP (處理器202)可以把SINIT-AC 280拷貝和關(guān)鍵字284移入安全存儲(chǔ) 器208。在一個(gè)實(shí)施方案中,這個(gè)安全存儲(chǔ)器208可以是ILP (處理器202)的內(nèi)部高速 緩存器,或許按照專用模式運(yùn)行。關(guān)鍵字284表示與私鑰對(duì)應(yīng)的公鑰(public key),私 鑰用來(lái)加密包含在SINIT-AC 280模塊內(nèi)的數(shù)字簽名,并且關(guān)鍵字284用來(lái)檢驗(yàn)數(shù)字簽名 和由此驗(yàn)證SINIT代碼。在一個(gè)實(shí)施方案中,關(guān)鍵字284可能已經(jīng)保存在處理器內(nèi),或 許作為SENTER邏輯204的一部分。在另一實(shí)施方案中,關(guān)鍵字284可以保存在芯片組 240的只讀關(guān)鍵字寄存器244內(nèi),寄存器244由ILP讀取。在又一實(shí)施方案中,不是處理 器就是芯片組關(guān)鍵字寄存器244可以實(shí)際保存關(guān)鍵字284的加密摘要,其中關(guān)鍵字284 本身包含在SINIT-AC 280模塊內(nèi)。在最后這個(gè)實(shí)施方案中,ILP從關(guān)鍵字寄存器244中 讀取摘要,計(jì)算關(guān)于嵌入在SINIT-AC 280內(nèi)的關(guān)鍵字284的等同加密散列(hash),并 且比較這兩個(gè)摘要以確保所提供的關(guān)鍵字284是確實(shí)可信的。
然后,SINIT-AC拷貝和公鑰拷貝可以在安全存儲(chǔ)器208內(nèi)存在。通過(guò)使用公鑰拷 貝解密包含在SINIT-AC拷貝內(nèi)的數(shù)字簽名,ILP現(xiàn)在可以驗(yàn)證SINIT-AC拷貝。所述解 碼產(chǎn)生加密散列摘要的原始拷貝。如果新計(jì)算出的摘要與這個(gè)原始摘要匹配,則SINIT-AC拷貝和它包含的SINIT代碼可以認(rèn)為是可信的。
經(jīng)由信令等待的RLP (處理器212,處理器222)的系統(tǒng)總線230以及將要啟動(dòng)安 全操作的芯片組240, ILP現(xiàn)在可以發(fā)布另一專用總線消息,S卩SENTER CONTINUE MESSAGE 。如下所概述的那樣,通過(guò)把SINIT-AC模塊的加密摘要值寫入安全標(biāo)記276 內(nèi)的平臺(tái)配置寄存器272中,ILP現(xiàn)在可以記錄SINIT-AC模塊的唯一身份。通過(guò)把執(zhí)行 控制傳遞給保存在ILP安全存儲(chǔ)器208內(nèi)的可信SINIT代碼拷貝,ILP對(duì)其SENTER指 令的執(zhí)行現(xiàn)在可以終止??尚臩INIT代碼然后可以執(zhí)行它的系統(tǒng)測(cè)試和配置動(dòng)作,并且 依照上述"記錄"的定義,可以記錄SVMM存儲(chǔ)駐留拷貝。
可以按照幾種方式完成SVMM存儲(chǔ)駐留拷貝的記錄。在一個(gè)實(shí)施方案中,運(yùn)行在ILP上的SENTER指令把計(jì)算出的SINIT-AC摘要寫入安全標(biāo)記276內(nèi)的PCR 278中。隨 后,可信SINIT代碼可以把計(jì)算出的存儲(chǔ)駐留SVMM摘要寫入同一 PCR 278或安全標(biāo)記 276內(nèi)的另一 PCR 279中。如果把SVMM摘要寫入同一 PCR 278中,則安全標(biāo)記276用 新值(SVMM摘要)弄亂原始內(nèi)容(SINIT摘要),并且把結(jié)果寫回PCR278。在第一次 (開(kāi)始)對(duì)PCR278的寫入被限制在SENTER指令的這些實(shí)施方案中,最后的摘要可以 用作系統(tǒng)信任根(root of trust)。
一旦可信SINIT代碼已經(jīng)結(jié)束它的執(zhí)行,并且已經(jīng)把SVMM的身份記錄在PCR 內(nèi),SINIT代碼就可以把ILP執(zhí)行控制傳遞給SVMM。在典型的實(shí)施方案中,ILP執(zhí)行的 最初的SVMM指令表征為SVMM的自啟動(dòng)例程。在一個(gè)實(shí)施方案中,ILP可以把單獨(dú)的 RLP JOIN MESSAGE專用總線消息發(fā)送給每個(gè)RLP,在現(xiàn)在執(zhí)行的SVMM拷貝的監(jiān)督 下,使每個(gè)RLP加入操作。根據(jù)前面這個(gè)觀點(diǎn),如下面圖3的討論中所概述的那樣,整 個(gè)系統(tǒng)運(yùn)行在可信模式下。
現(xiàn)在參考圖3,圖中所示為依據(jù)本發(fā)明一個(gè)實(shí)施方案的示例性可信或安全軟件環(huán) 境。在圖3的實(shí)施方案中,可以同時(shí)加載可信或非可信軟件,并且可以在單個(gè)計(jì)算機(jī)系 統(tǒng)上同時(shí)執(zhí)行。SVMM350可選擇地允許或防止來(lái)自一個(gè)或多個(gè)非可信操作系統(tǒng)340和非 可信應(yīng)用310-330的對(duì)硬件資源380的直接訪問(wèn)。在上下文中,"非可信"不是必定意味著 操作系統(tǒng)或應(yīng)用正在行為不端,但是相互作用的碼的大小和多樣性使得可靠斷言軟件正 在按要求運(yùn)行變得不切實(shí)際,并且不存在干擾它執(zhí)行的病毒或其它外來(lái)碼。在典型的實(shí) 施方案中,非可信代碼是由在當(dāng)今個(gè)人計(jì)算機(jī)上可以找到的普通操作系統(tǒng)和應(yīng)用組成 的。
SVMM350也可選擇地允許或防止來(lái)自一個(gè)或多個(gè)可信或安全核心程序360和一個(gè) 或多個(gè)可信應(yīng)用370的對(duì)硬件資源380的直接訪問(wèn)??梢韵拗粕鲜隹尚呕虬踩诵某绦?360和可信應(yīng)用370的大小和功能性,從而有助于在其上面完成信任分析的能力??尚艖?yīng) 用370可以是在安全環(huán)境中可執(zhí)行的任何軟件代碼、程序、例程或例程組。因此,可信 應(yīng)用370可以是各種應(yīng)用或代碼序列,或者可以是相對(duì)小的應(yīng)用,例如Java程序。
由能改變系統(tǒng)資源保護(hù)或特權(quán)的操作系統(tǒng)340或核心程序360正常執(zhí)行的指令或操 作可以被SVMM350攔住,并且可選擇地允許、部分允許或拒絕。作為實(shí)施例,在典型 的實(shí)施方案中,被SVMM350攔住的指令變成了改變由操作系統(tǒng)340或核心程序360正 常執(zhí)行的處理器頁(yè)面表的指令,這將確保在它的虛擬機(jī)范圍之外所述請(qǐng)求不試圖要求改 變頁(yè)面特權(quán)。
現(xiàn)在參考圖4A,圖中所示為適合于支持圖3的安全軟件環(huán)境的微處理器系統(tǒng)400的 一個(gè)實(shí)施方案。CPU A 410、 CPU B 414、 CPU C 418和CPU D 422可以配置附加微碼或 邏輯電路以支持專門指令的執(zhí)行。在一個(gè)實(shí)施方案中,這個(gè)附加微碼或邏輯電路可以是 圖2的SENTER邏輯204。這些專用指令可以支持專用總線消息在系統(tǒng)總線420上的發(fā)布,系統(tǒng)總線420可以使這些處理器在啟動(dòng)安全環(huán)境期間能夠適當(dāng)同步。在一個(gè)實(shí)施方 案中,專用總線消息的發(fā)布可以由電路支持,例如圖2的總線消息邏輯206。類似地,芯 片組430可以類似于芯片組420,并且可以支持上述系統(tǒng)總線420上的專用周期。物理處 理器的數(shù)量可以根據(jù)具體實(shí)施方案的實(shí)施而變化。在一個(gè)實(shí)施方案中,處理器可以是 Intel⑤Pentium⑧級(jí)的微處理器。經(jīng)由PCI總線446,或者可選擇地,經(jīng)由USB442,集成 控制器電路(IDE)總線(未圖示),小型計(jì)算機(jī)系統(tǒng)接口 (SCSI)總線(未圖示), 或任何其它I/0總線,芯片組430可以與大容量存儲(chǔ)設(shè)備連接,例如固定媒介444或可移 動(dòng)媒介448。固定媒介444或可移動(dòng)媒介448可以是磁盤、磁帶、磁碟、磁光驅(qū)動(dòng)器、 CD-ROM、 DVD-ROM、閃存卡,或許多其它形式的大容量存儲(chǔ)器。
在圖4A的實(shí)施方案中,四個(gè)處理器CPUA410、 CPU B 414、 CPU C 418和CPU D 422圖示為四個(gè)單獨(dú)硬件實(shí)體。在其它實(shí)施方案中,處理器的數(shù)量可以不同。實(shí)際上,物 理上離散的處理器可以用在一個(gè)或多個(gè)物理處理器上運(yùn)行的分立的硬件執(zhí)行線程來(lái)替 換。在后者的情況下,這些線程擁有許多附加物理處理器的特征。為了具有一般的表達(dá) 來(lái)討論使用多個(gè)物理處理器和多個(gè)在處理器上的線程的任何混合,表達(dá)"邏輯處理器"可 以用來(lái)描述一個(gè)物理處理器或在一個(gè)或多個(gè)物理處理器內(nèi)操作的線程。因此, 一個(gè)單線 程處理器可以認(rèn)為是一個(gè)邏輯處理器,多線程或多核心處理器可以認(rèn)為是多個(gè)邏輯處理 器。
在一個(gè)實(shí)施方案中,芯片組430與改進(jìn)的LPC總線450連接。改進(jìn)的LPC總線450 可以用來(lái)把芯片組430與安全標(biāo)記454連接。在一個(gè)實(shí)施方案中,標(biāo)記454可以包括由 可信計(jì)算平臺(tái)聯(lián)合(TCPA)設(shè)想的TPM471。
現(xiàn)在參考圖4B,圖中所示為適合于支持圖3的安全軟件環(huán)境的另一微處理器系統(tǒng) 490的實(shí)施方案。與圖4A的實(shí)施方案不同,CPU A 410和CPU B 414使用系統(tǒng)總線A 402可以連接到芯片組428,而CPU C 418和CPU D 422使用系統(tǒng)總線B 404可以連接到 芯片組428。在其它實(shí)施方案中,可以使用兩個(gè)以上的系統(tǒng)總線。在另一替代實(shí)施方案 中,可以使用點(diǎn)對(duì)點(diǎn)總線。專用指令可以支持專用總線消息在系統(tǒng)總線A 402和系統(tǒng)總 線B 404上的發(fā)布,系統(tǒng)總線A 402和系統(tǒng)總線B 404可以使這些處理器在啟動(dòng)安全環(huán)境 期間能夠適當(dāng)?shù)赝健T谝粋€(gè)實(shí)施方案中,專用總線消息的發(fā)布可以由電路支持,例如 圖2的總線消息邏輯206。
在一個(gè)實(shí)施方案中,芯片組428擔(dān)負(fù)維護(hù)系統(tǒng)總線A 402和系統(tǒng)總線B 404上的一 致性和相干性。如果在系統(tǒng)總線A 402上發(fā)送標(biāo)準(zhǔn)或?qū)S玫目偩€消息,芯片組428把這 個(gè)信息(適當(dāng)時(shí))反映在系統(tǒng)總線B404上,反之亦然。
在可替代的實(shí)施方案中,芯片組428把系統(tǒng)總線A 402和系統(tǒng)總線B 404看作獨(dú)立 子系統(tǒng)。在系統(tǒng)總線A 402上發(fā)布的任何專用總線消息只應(yīng)用于該總線上的處理器,類 似地,在系統(tǒng)總線B 404上發(fā)布的任何專用總線消息只應(yīng)用于該總線上的處理器。針對(duì)系統(tǒng)總線A 402建立的任何受保護(hù)的存儲(chǔ)器只可被連接到系統(tǒng)總線A 402的處理器訪 問(wèn),而系統(tǒng)總線B 404上的處理器可以被看作非可信設(shè)備。為了訪問(wèn)為系統(tǒng)總線A 402 上的CPU A 410和CPU B 414建立的任何受保護(hù)的存儲(chǔ)器,系統(tǒng)總線B 404上的處理器 CPU C 418和CPU D 422必須執(zhí)行它們自己的SENTER過(guò)程,創(chuàng)建一個(gè)被記錄在案的環(huán) 境,該環(huán)境等同于為系統(tǒng)總線A402上的處理器建立的環(huán)境。
現(xiàn)在參考圖5,表示依據(jù)本發(fā)明另一實(shí)施方案,適合于支持圖3的安全軟件環(huán)境的 示例性微處理器系統(tǒng)500的示意圖。與圖4A的實(shí)施方案不同,每個(gè)處理器(例如CPU A 510)可以包括某些芯片組功能(例如芯片組功能593),所述芯片組功能實(shí)現(xiàn),例 如,存儲(chǔ)控制器功能和設(shè)備訪問(wèn)邏輯功能。由此,這些芯片組功能允許存儲(chǔ)器(例如存 儲(chǔ)器A 502)直接連接到處理器。其它芯片組功能可以保留在獨(dú)立的芯片組530中。在系 統(tǒng)總線520上可以發(fā)布專用總線消息。
每個(gè)處理器可以間接訪問(wèn)連接到其它處理器的存儲(chǔ)器,然而,與對(duì)處理器本身存儲(chǔ) 器的訪問(wèn)相比,這些訪問(wèn)可能相當(dāng)慢。在開(kāi)始SENTER過(guò)程之前,軟件可以把SINIT-AC566和SVMM574的拷貝從固定媒介544移入本地存儲(chǔ)器504,形成SINIT-AC556拷 貝和SVMM572拷貝。在一個(gè)實(shí)施方案中,可以選擇存儲(chǔ)器504,因?yàn)樗纱_定為ILP的 處理器直接訪問(wèn),在圖5實(shí)施例中,這是CPU B 514。可選擇地,SINIT-AC566和 SVMM574的拷貝可以放在連接到其它(非ILP)處理器的其它存儲(chǔ)器中,只要ILP514 能夠訪問(wèn)那些存儲(chǔ)器。如圖2中已經(jīng)描述的那樣,CPU B ILP 514通過(guò)發(fā)布SENTER指令 開(kāi)始安全輸入過(guò)程,并且具有類似的結(jié)果和發(fā)布的總線周期。如上結(jié)合圖2所述,芯片 組530可以利用EXISTS寄存器576、 JOINS寄存器580和ALL-JOINED標(biāo)志584,以確 定所有處理器是否已經(jīng)適當(dāng)?shù)仨憫?yīng)了 SENTER BUS MESSAGE,并且把這個(gè)信息發(fā)送給 ILP。 ILP (CPU B 514)可以再次把SINIT-AC556的存儲(chǔ)駐留拷貝連同公鑰564的拷貝 一起移入安全存儲(chǔ)器560。在SINIT-AC556確認(rèn)和記錄后,ILP就可以繼續(xù)進(jìn)行SVMM 存儲(chǔ)駐留拷貝的確認(rèn)和記錄。
現(xiàn)在參考圖6,表示依據(jù)本發(fā)明一個(gè)實(shí)施方案的各種操作的時(shí)線圖。圖6的時(shí)線表 示結(jié)合示例性系統(tǒng)論述的全部操作時(shí)間表,上文結(jié)合圖2討論了所述系統(tǒng)。當(dāng)軟件決定 安全或可信操作是要求的,在時(shí)間610,任何軟件定位并且復(fù)制SINIT-AC280和 SVMM282拷貝用于隨后的SENTER指令。在本實(shí)施例中,軟件把SINIT-AC280拷貝和 SVMM282拷貝加載到一個(gè)或多個(gè)存儲(chǔ)頁(yè)面250-262中。然后選擇一個(gè)處理器作為ILP, 在本實(shí)施例中是處理器202, ILP在時(shí)間612發(fā)布SENTER指令。在時(shí)間614, ILP的 SENTER指令發(fā)布SENTER BUS MESSAGE 616。然后,在時(shí)間628進(jìn)入"等待芯片組 標(biāo)志"狀態(tài)之前,ILP在時(shí)間618發(fā)布它本身的SENTER ACK 608。
每個(gè)RLP,例如處理器222,通過(guò)在時(shí)間620期間完成當(dāng)前指令來(lái)響應(yīng)SENTER BUS MESSAGE 616。然后,RLP發(fā)布它的SENTER ACK 622,然后進(jìn)入狀態(tài)634,其中 它等待SENTER CONTINUE MESSAGE。芯片組240花費(fèi)時(shí)間624來(lái)設(shè)定JOINS寄存器272以響應(yīng)在系統(tǒng)總線230上觀察的 SENTER ACK信息。當(dāng)JOINS寄存器272的內(nèi)容與EXISTS寄存器270的內(nèi)容匹配時(shí), 芯片組240在時(shí)間626設(shè)定ALL-JOINED標(biāo)志246。
在此期間,ILP在輪詢ALL-JOINED標(biāo)志246時(shí)可以保持在循環(huán)狀態(tài)下。當(dāng)ALL-JOINED 標(biāo)志246被設(shè)定,并且ILP確定ALL-JOINED標(biāo)志246是在時(shí)間630設(shè)定的, 然后,ILP可以在時(shí)間632期間發(fā)布SENTER CONTINUE MESSAGE。當(dāng)SENTER CONTINUE MESSAGE在時(shí)間636在系統(tǒng)總線230上傳播時(shí),RLP可以進(jìn)入"等待加 入"的狀態(tài)。例如,處理器222的RLP在時(shí)間周期638期間進(jìn)入"等待加入"的狀態(tài)。
一旦發(fā)布SENTER CONTINUE MESSAGE, ILP于是(在時(shí)間周期640內(nèi))就可以 把芯片組240的關(guān)鍵字寄存器244的公鑰和SINIT-AC的拷貝加入它的安全存儲(chǔ)器208, 以形成所述公鑰拷貝和SINIT-AC拷貝。在另一實(shí)施方案中,關(guān)鍵字寄存器244可以包含 公鑰摘要,實(shí)際公鑰可以包含在SINIT-AC內(nèi)或與其包含在一起。如上結(jié)合圖2所述,一 旦驗(yàn)證SINIT-AC的拷貝,ILP于是就可以在安全存儲(chǔ)器208內(nèi)實(shí)際執(zhí)行SINIT-AC的拷 貝。
SINIT-AC在安全存儲(chǔ)器208內(nèi)的拷貝開(kāi)始執(zhí)行之后,它隨后(時(shí)間周期640期間) 確認(rèn)并且記錄SVMM的存儲(chǔ)駐留拷貝。SVMM的拷貝記錄在安全標(biāo)記276的PCR278內(nèi) 之后,SVMM的存儲(chǔ)駐留拷貝本身開(kāi)始執(zhí)行。此時(shí),在正在進(jìn)行的時(shí)間周期650期間, SVMM操作建立在ILP內(nèi)。
ILP SVMM操作最初要做的事情之一是在系統(tǒng)總線230上發(fā)布單獨(dú)的RLP JOIN MESSAGES。 一個(gè)實(shí)施例就是處理器222的JOIN MESSAGE 644。這個(gè)消息可以包括存 儲(chǔ)器內(nèi)的位置,在該位置上RLP處理器222可以加入被記錄的SVMM存儲(chǔ)駐留拷貝的 執(zhí)行??蛇x擇地,ILP SVMM操作可能已經(jīng)把存儲(chǔ)器位置記錄在芯片組或存儲(chǔ)器內(nèi)的預(yù) 定位置中, 一旦接收到JOIN MESSAGE, RLP就從所述位置取回它的開(kāi)始地址。在接收 到處理器222的JOIN MESSAGE并且確定它的開(kāi)始地址之后,在時(shí)間周期646期間, RLP處理器222跳轉(zhuǎn)到這個(gè)位置,并且加入被記錄的SVMM存儲(chǔ)駐留拷貝的執(zhí)行。
在所有RLP已經(jīng)加入被記錄的SVMM存儲(chǔ)駐留拷貝之后,安全操作在整個(gè)微型計(jì) 算機(jī)系統(tǒng)200上被建立起來(lái)。
現(xiàn)在參考圖7,表示依據(jù)本發(fā)明一個(gè)實(shí)施方案的軟件和其它過(guò)程塊(process block) 的流程圖。為了清楚,圖7只表示用于單個(gè)有代表性的RLP的過(guò)程塊。在其它實(shí)施方案 中,可以存在幾個(gè)響應(yīng)邏輯處理器。
過(guò)程700從過(guò)程塊710開(kāi)始,這時(shí),邏輯處理器復(fù)制能用來(lái)由隨后的SENTER指令 進(jìn)行訪問(wèn)的SINIT-AC和SVMM模塊。在這個(gè)實(shí)施例中,在過(guò)程塊712中,ILP把SINIT-AC和SVMM代碼從大容量存儲(chǔ)器加載到物理存儲(chǔ)器內(nèi)。在替代的實(shí)施方案中, 任何邏輯處理器可以這樣做,而不只是ILP。如在過(guò)程塊714中所注,通過(guò)執(zhí)行SENTER 指令,處理器成為ILP。在過(guò)程塊716中,ILP SENTER指令在過(guò)程塊716中發(fā)布 SENTER BUS MESSAGE。然后,ILP在過(guò)程塊718中把它本身的SENTER ACK消息發(fā) 送給芯片組。如判斷過(guò)程塊720所示,ILP于是進(jìn)入等待狀態(tài),等待芯片組設(shè)定其ALL-JOINED 標(biāo)志。在每個(gè)RLP在過(guò)程塊770中接收到SENTER BUS MESSAGE之后,它以當(dāng)前指令 的結(jié)束來(lái)暫停執(zhí)行,然后在過(guò)程塊772中發(fā)布它自己的SENTER ACK。如判斷過(guò)程塊 774所示,每個(gè)RLP于是進(jìn)入等待狀態(tài),等待從ILP到來(lái)的SENTER CONTINUE MESSAGE 。當(dāng)接收到SENTER ACK信息時(shí),芯片組設(shè)定JOINS寄存器內(nèi)的相應(yīng)位。當(dāng)JOINS 寄存器的內(nèi)容等于EXISTS寄存器的內(nèi)容時(shí),芯片組設(shè)定ALL-JOINED標(biāo)志,給ILP發(fā) 送信號(hào)以從^J斷過(guò)程塊720繼續(xù)進(jìn)行。一旦在YES路徑上離開(kāi)判斷過(guò)程塊720, ILP于是就在過(guò)程塊722中發(fā)布SENTER CONTINUE MESSAGE。這給每個(gè)RLP發(fā)送信號(hào)以從判斷過(guò)程塊774繼續(xù)進(jìn)行。如判斷 過(guò)程塊776所示,然后每個(gè)RLP進(jìn)入第二個(gè)等待狀態(tài),等待SENTER JOIN MESSAGE。同時(shí),ILP在過(guò)程塊724中把芯片組公鑰和SINIT-AC存儲(chǔ)駐留拷貝移入它自己的安 全存儲(chǔ)器用于安全執(zhí)行。ILP在過(guò)程塊726中使用所述公鑰驗(yàn)證SINIT-AC的安全存儲(chǔ)駐 留拷貝,然后執(zhí)行它。SINIT-AC的執(zhí)行可以進(jìn)行系統(tǒng)配置和SVMM拷貝的測(cè)試,然后 記錄SVMM身份,最后在過(guò)程塊728中開(kāi)始執(zhí)行SVMM。作為在過(guò)程塊728中執(zhí)行的動(dòng) 作的一部分,ILP SINIT代碼可以配置存儲(chǔ)器和芯片組的設(shè)備訪問(wèn)頁(yè)面表248和設(shè)備訪問(wèn) 邏輯247,以保護(hù)SVMM 282存儲(chǔ)駐留拷貝使用的那些存儲(chǔ)頁(yè)面不受非處理器設(shè)備的干 擾,如過(guò)程塊754中所示。ILP在SVMM控制下開(kāi)始執(zhí)行之后,在過(guò)程塊730中,ILP給每個(gè)RLP發(fā)送單獨(dú)的 SENTER JOIN MESSAGE。發(fā)送SENTER JOIN MESSAGE之后,ILP隨后在過(guò)程塊732 中開(kāi)始SVMM操作。SENTER JOIN MESSAGE的接收使每個(gè)RLP沿著YES路徑離開(kāi)由判斷過(guò)程塊776 表示的等待狀態(tài),且在過(guò)程塊780中開(kāi)始SVMM操作。SENTER JOIN MESSAGE可以 包含SVMM入口點(diǎn),RLP在加入SVMM操作時(shí)向該入口點(diǎn)分支??蛇x擇地,ILP SVMM代碼可以把適當(dāng)?shù)腞LP入口點(diǎn)記錄在系統(tǒng)位置內(nèi)(例如在芯片組內(nèi)),RLP—旦 接收到SENTER JOIN MESSAGE就重新取回它。雖然公開(kāi)的不同實(shí)施方案包括兩個(gè)或多個(gè)處理器(邏輯或物理處理器),但應(yīng)該理解,這樣的多個(gè)處理器和/或多個(gè)線程系統(tǒng)以更詳細(xì)的方式進(jìn)行了描述以解釋增加的復(fù)雜 性,所述復(fù)雜性與使帶有多個(gè)邏輯或物理處理器的系統(tǒng)安全有關(guān)。在復(fù)雜程度較底的系 統(tǒng)中可能有利的實(shí)施方案可以只使用一個(gè)處理器。在某些情況下, 一個(gè)物理處理器可以 是多個(gè)線程,從而可以包括多個(gè)邏輯處理器(因此具有所述的ILP和RLP)。然而,在 其它情況下,可以使用單個(gè)處理器、單線程系統(tǒng),仍然利用所公開(kāi)的安全處理技術(shù)。在 上述情況下,可以沒(méi)有RLP;然而,所述安全處理技術(shù)仍然起作用來(lái)減少以未授權(quán)方式 能夠竊取或操縱數(shù)據(jù)的可能性。在前述說(shuō)明書(shū)中,已經(jīng)參考本發(fā)明的示例性實(shí)施方案對(duì)其進(jìn)行了描述。然而,顯然 可以對(duì)本發(fā)明進(jìn)行各種修改和變化而不脫離附屬權(quán)利要求書(shū)所提出的本發(fā)明更寬的本質(zhì) 和范圍。因此把說(shuō)明書(shū)和附圖看作例證性的而不是限制性的。
權(quán)利要求
1、一種系統(tǒng),包括第一邏輯處理器,所述第一邏輯處理器包括安全存儲(chǔ)器以執(zhí)行安全輸入指令;以及芯片組,所述芯片組防止非處理器設(shè)備訪問(wèn)安全虛擬機(jī)監(jiān)控程序。
2、 如權(quán)利要求1所述的系統(tǒng),其中所述安全輸入指令是使所述第一邏輯處理器給 第二邏輯處理器發(fā)布專用總線消息,以在安全操作中使所述第二處理器與所述第一處理 器同步。
3、 如權(quán)利要求1所述的系統(tǒng),其中所述安全存儲(chǔ)器位于所述第一邏輯處理器的高 速緩存器內(nèi)。
4、 如權(quán)利要求1所述的系統(tǒng),其中所述安全存儲(chǔ)器被保護(hù),從而不被除所述第一 邏輯處理器之外的電路訪問(wèn)。
5、 如權(quán)利要求1所述的系統(tǒng),還包含安全標(biāo)志,所述安全標(biāo)志包括平臺(tái)配置寄存 器以保存摘要。
6、 如權(quán)利要求1所述的系統(tǒng),還包含第二邏輯處理器以響應(yīng)來(lái)自所述安全輸入指 令的第一專用總線消息。
7、 如權(quán)利要求6所述的系統(tǒng),其中所述第二邏輯處理器完成當(dāng)前指令的執(zhí)行,并 且發(fā)布第二專用總線消息來(lái)響應(yīng)所述第一專用總線消息。
8、 如權(quán)利要求7所述的系統(tǒng),其中所述芯片組設(shè)定標(biāo)志以響應(yīng)接收所述第二專用 總線消息。
9、 如權(quán)利要求8所述的系統(tǒng),其中所述第二邏輯處理器跳轉(zhuǎn)到所述安全虛擬機(jī)監(jiān) 控程序的入口點(diǎn),以響應(yīng)第三專用總線消息。
10、 一種方法,包括 同步第一邏輯處理器和第二邏輯處理器; 驗(yàn)證起始代碼模塊; 驗(yàn)證安全虛擬機(jī)監(jiān)控程序;以及 執(zhí)行所述安全虛擬機(jī)監(jiān)控程序。
11、 如權(quán)利要求IO所述的方法,還包括把專用總線消息發(fā)送給所述第二邏輯處理 器,以便在所述第二邏輯處理器上以響應(yīng)方式執(zhí)行所述安全虛擬機(jī)監(jiān)控程序。
12、 如權(quán)利要求10所述的方法,其中所述同步包括專用總線消息以使所述第二邏 輯處理器暫停執(zhí)行并且發(fā)送確認(rèn)。
13、 如權(quán)利要求12所述的方法,其中所述同步包括在芯片組內(nèi)設(shè)定標(biāo)志以響應(yīng)所 述確認(rèn)。
14、 如權(quán)利要求10所述的方法,其中所述驗(yàn)證起始代碼模塊包括把所述起始代碼 模塊的拷貝和公鑰移到安全存儲(chǔ)器中。
15、 如權(quán)利要求14所述的方法,其中所述驗(yàn)證起始代碼模塊包括比較所述起始代 碼模塊的第一摘要和所述起始代碼模塊的第二摘要。
16、 如權(quán)利要求10所述的方法,其中所述驗(yàn)證安全虛擬機(jī)監(jiān)控程序包括執(zhí)行所述 起始代碼模塊。
17、 如權(quán)利要求16所述的方法,其中所述驗(yàn)證安全虛擬機(jī)監(jiān)控程序包括把所述安 全虛擬機(jī)監(jiān)控程序記錄在平臺(tái)配置寄存器內(nèi)。
18、 一種裝置,包括用于同步第一邏輯處理器和第二邏輯處理器的設(shè)備; 用于驗(yàn)證起始代碼模塊的設(shè)備; 用于驗(yàn)證安全虛擬機(jī)監(jiān)控程序的設(shè)備;以及用于在所述第 一邏輯處理器內(nèi)執(zhí)行所述安全虛擬機(jī)監(jiān)控程序的設(shè)備。
19、 如權(quán)利要求18所述的裝置,還包括用于把第一專用總線消息發(fā)送給所述第二 邏輯處理器的設(shè)備,以便在所述第二邏輯處理器上執(zhí)行所述安全虛擬機(jī)監(jiān)控程序。
20、 如權(quán)利要求18所述的裝置,還包括用于把所述起始代碼模塊的拷貝和公鑰移 到安全存儲(chǔ)器中的設(shè)備。
21、 如權(quán)利要求20所述的裝置,還包括用于比較所述起始代碼模塊的第一摘要和 所述起始代碼模塊的第二摘要的設(shè)備。
22、 如權(quán)利要求18所述的裝置,還包括用于記錄所述安全虛擬機(jī)監(jiān)控程序的設(shè)備。
23、 一種處理器,包括安全輸入邏輯,所述安全輸入邏輯執(zhí)行第一指令以調(diào)用安全操作起始,并且檢測(cè)時(shí)間點(diǎn)以繼續(xù)執(zhí)行安全起始密碼;以及總線消息邏輯,所述總線消息邏輯發(fā)送第一專用總線消息以響應(yīng)所述第一指令,并 且發(fā)送第二專用總線消息以響應(yīng)所述檢測(cè)時(shí)間點(diǎn)。
24、 如權(quán)利要求23所述的處理器,其中所述時(shí)間點(diǎn)在第一邏輯處理器發(fā)布確認(rèn)之后。
25、 如權(quán)利要求23所述的處理器,其中所述安全輸入邏輯還輪詢芯片組內(nèi)的標(biāo)志 寄存器以確定所述時(shí)間點(diǎn)。
26、 如權(quán)利要求23所述的處理器,其中所述安全輸入邏輯還輸入關(guān)鍵字和驗(yàn)證所 述時(shí)間點(diǎn)之后的代碼模塊。
27、 如權(quán)利要求23所述的處理器,其中所述總線消息邏輯還發(fā)送包括代碼入口點(diǎn) 的第三專用總線消息。
28、 一種芯片組,包括總線消息邏輯,所述總線消息邏輯響應(yīng)來(lái)自第一邏輯處理器的第一專用總線消息以 準(zhǔn)備安全操作;以及寄存器,所述寄存器保存來(lái)自第二邏輯處理器的確認(rèn),以響應(yīng)所述第一專用總線消息。
29、 如權(quán)利要求28所述的芯片組,其中所述芯片組比較所述寄存器和邏輯處理器 動(dòng)作,以確定何時(shí)給第一邏輯處理器發(fā)送信號(hào)以繼續(xù)安全操作起始。
30、 如權(quán)利要求29所述的芯片組,其中所述信號(hào)包括設(shè)定標(biāo)志。
31、 如權(quán)利要求28所述的芯片組,還包括設(shè)備訪問(wèn)邏輯以鎖定安全虛擬機(jī)監(jiān)控程序。
32、 如權(quán)利要求28所述的芯片組,還包括關(guān)鍵字寄存器,以便在所述第一專用總 線消息之后給所述第一邏輯處理器發(fā)送關(guān)鍵字。
33、 一種系統(tǒng),包括邏輯處理器,所述邏輯處理器具有安全輸入邏輯和響應(yīng)所述安全輸入邏輯的第一總 線消息邏輯;以及芯片組,所述芯片組包括第二總線消息邏輯以從所述第一總線消息邏輯接收第一專 用總線消息,并且包括要設(shè)定的標(biāo)志,以響應(yīng)確認(rèn)。
34、 如權(quán)利要求33所述的系統(tǒng),還包括安全起始授權(quán)碼以啟動(dòng)安全操作來(lái)響應(yīng)所 述安全輸入邏輯。
35、 如權(quán)利要求34所述的系統(tǒng),還包括由所述邏輯處理器使用的關(guān)鍵字以驗(yàn)證所 述安全起始授權(quán)碼。
36、 如權(quán)利要求34所述的系統(tǒng),其中所述第一總線消息邏輯發(fā)布第二專用總線消 息,其中所述邏輯處理器在所述第二專用總線消息之后把所述安全起始授權(quán)碼移到安全 存儲(chǔ)器中。
37、 如權(quán)利要求34所述的系統(tǒng),還包括安全虛擬機(jī)監(jiān)控程序。
38、 如權(quán)利要求37所述的系統(tǒng),其中所述安全起始授權(quán)碼執(zhí)行所述安全虛擬機(jī)監(jiān) 控程序的起始。
39、 如權(quán)利要求38所述的系統(tǒng),其中所述起始包括驗(yàn)證,并且其中所述芯片組包 括設(shè)備訪問(wèn)邏輯,用來(lái)防止非處理器設(shè)備訪問(wèn)所述安全虛擬機(jī)監(jiān)控程序以響應(yīng)所述起 始。
40、 如權(quán)利要求38所述的系統(tǒng),其中所述第一總線消息邏輯發(fā)布第三專用總線消 息以響應(yīng)所述起始。
41、 如權(quán)利要求40所述的系統(tǒng),其中所述第三專用總線消息包括用于所述安全虛 擬機(jī)監(jiān)控程序的代碼入口點(diǎn)。
42、 一種方法,包括 發(fā)送專用總線消息; 驗(yàn)證第一邏輯處理器內(nèi)的起始代碼; 驗(yàn)證安全虛擬機(jī)監(jiān)控程序;以及在所述第一邏輯處理器內(nèi)執(zhí)行所述安全虛擬機(jī)監(jiān)控程序。
43、 如權(quán)利要求42所述的方法,還包括發(fā)送確認(rèn)以響應(yīng)所述第一總線消息。
44、 如權(quán)利要求42所述的方法,還包括暫停第二邏輯處理器內(nèi)的執(zhí)行和發(fā)送確認(rèn)。
45、 如權(quán)利要求44所述的方法,還包括在芯片組內(nèi)設(shè)定標(biāo)志以響應(yīng)所述確認(rèn)。
46、 如權(quán)利要求42所述的方法,其中所述驗(yàn)證起始代碼包括把所述起始代碼的拷貝和公鑰移到安全存儲(chǔ)器中。
47、 如權(quán)利要求46所述的方法,其中所述驗(yàn)證起始代碼包括比較所述起始代碼的第一摘要和所述起始代碼的第二摘要。
48、 如權(quán)利要求42所述的方法,其中所述驗(yàn)證安全虛擬機(jī)監(jiān)控程序包括執(zhí)行所述 起始代碼。
49、 如權(quán)利要求48所述的方法,其中所述驗(yàn)證安全虛擬機(jī)監(jiān)控程序包括把所述虛 擬機(jī)監(jiān)控程序記錄在平臺(tái)配置寄存器內(nèi)。
全文摘要
描述了在微處理器系統(tǒng)內(nèi)啟動(dòng)安全操作的方法和裝置。在一個(gè)實(shí)施方案中,一個(gè)啟動(dòng)邏輯處理器通過(guò)停止其它邏輯處理器的執(zhí)行,然后把起始和安全虛擬機(jī)監(jiān)控軟件載入存儲(chǔ)器,來(lái)啟動(dòng)該過(guò)程。啟動(dòng)處理器然后把起始軟件載入安全存儲(chǔ)器進(jìn)行驗(yàn)證和執(zhí)行。起始軟件然后在安全系統(tǒng)操作之前驗(yàn)證和記錄安全虛擬機(jī)監(jiān)控軟件。
文檔編號(hào)G06F12/14GK101410772SQ03811454
公開(kāi)日2009年4月15日 申請(qǐng)日期2003年3月20日 優(yōu)先權(quán)日2002年3月29日
發(fā)明者戴維·格勞羅克, 詹姆斯·薩頓二世 申請(qǐng)人:英特爾公司