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