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