專利名稱:用于執(zhí)行安全環(huán)境起始指令的系統(tǒng)和方法
技術領域:
本發(fā)明通常涉及微處理器系統(tǒng),更具體地說,涉及可以在可信或安全環(huán)境中運行的 微處理器系統(tǒng)。
背景技術:
在本地或遠程微型計算機上執(zhí)行的金融和個人事務的增加量已經(jīng)推動了"可信"或"安 全"微處理器環(huán)境的建立。這些環(huán)境試圖要解決的問題是個人隱私的泄露或者數(shù)據(jù)被破壞 或濫用。用戶不想公開他們的私人數(shù)據(jù)。他們也不想不當?shù)氖聞崭淖兓蚴褂盟麄兊臄?shù) 據(jù)。這樣的例子包括非故意地泄露醫(yī)療記錄或者從在線銀行或其它存款處因為電子方式 失竊資金。類似地,內(nèi)容供給者設法保護數(shù)字內(nèi)容(例如,音樂、其它音頻、視頻或其 它類型的一般數(shù)據(jù))不會在未經(jīng)授權的情況下被復制。
現(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)境的技術。在下面說明中, 為了更徹底地理解本發(fā)明,闡述了許多具體細節(jié),例如邏輯實現(xiàn)、軟件模塊分配、加密 技術、總線信令技術,以及操作細節(jié)。然而,本領域技術人員將能理解,沒有上述具體 細節(jié)也可以實施本發(fā)明。在其它情況下,為了不搞混本發(fā)明,沒有詳細表示控制結構、 門電平電路和全部軟件指令序列。獲悉本文所包含的說明的本領域普通技術人員無需超 出常規(guī)的試驗就能夠實現(xiàn)恰當?shù)墓δ苄?。本發(fā)明是以微處理器系統(tǒng)的形式公開的。然 而,以其它處理器的形式也可以實施本發(fā)明,例如數(shù)字信號處理器、小型計算機或大型 計算機。
現(xiàn)在參考圖1,圖中所示為在微處理器系統(tǒng)中執(zhí)行的一個示例性軟件環(huán)境。圖1中 所示的軟件不是可信的(非可信的)。當在高特權級下運行時,操作系統(tǒng)150的大小和 持續(xù)更新使得按照適時方式進行任何信任分析非常困難。許多操作系統(tǒng)位于特權環(huán) (ring)零(0)內(nèi),即最高特權級。應用152, 154和156具有降低了很多的特權,典型 地位于特權環(huán)三(3)內(nèi)。不同特權環(huán)的存在以及操作系統(tǒng)150和應用152, 154, 156分 成這些不同特權環(huán)似乎允許圖1的軟件按照可信模式運行,即基于決策來信任由操作系 統(tǒng)150提供的設備。然而,實際上進行上述信任決策經(jīng)常是不切實際的。影響這個問題 的因素包括運行系統(tǒng)150的大小(代碼行的數(shù)目),操作系統(tǒng)150可以是許多更新(新 代碼模塊和補丁)的接收者的事實,以及操作系統(tǒng)150也可以包含代碼模塊(例如由用 戶而不是操作系統(tǒng)開發(fā)者提供的設備驅動器)的事實。操作系統(tǒng)150可以是通用操作系 統(tǒng),例如Microsoft Windows , Linux或Solaris ,或者可以是任何其它適當已知或另 外可獲得的操作系統(tǒng)。應用或操作系統(tǒng)運行或正在運行的具體類型或名稱不是關鍵的。
現(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可以包含允許或拒絕 上述訪問需要的所有相關信息。在其它實施方案中,設備訪問邏輯247可以訪問保存在 設備訪問頁面表248內(nèi)的上述信息。存儲頁面的實際數(shù)量不是重要的,并且將根據(jù)系統(tǒng) 需求而變化。在其它實施方案中,存儲器訪問功能可以在芯片組240的外部。在另外實 施方案中,芯片組240的功能還可以在一個或多個物理設備中分配。
為支持專用SENTER操作,芯片組240可以另外包括它自己的總線消息邏輯242來 支持系統(tǒng)總線230上的專用總線消息。這些專用總線消息中的某些可以包括把關鍵字
(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/0總線(未示出)。接口 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出版的版本為 Ua的可信計算平臺聯(lián)合(TCPA)主要規(guī)范中被公開(在本申請遞交時從 www.trustedpc.com可《尋至")。
在系統(tǒng)環(huán)境200內(nèi)確定的兩個軟件成分是安全虛擬機監(jiān)控程序(SVMM) 282模塊 和安全起始授權碼(SINIT-AC) 280模塊。SVMM 282模塊可以保存在系統(tǒng)盤或其它大 容量存忙器上,并且根據(jù)需要移動或復制到其它位置。在一個實施方案中,在開始安全 啟動過程之前,SVMM 282可以移動或復制到一個或多個存儲頁面250-262。安全輸入過 程之后,可以創(chuàng)建虛擬機環(huán)境,其中SVMM 282可以作為系統(tǒng)內(nèi)最高特權代碼來運行, 可以用來允許或拒絕在創(chuàng)建的虛擬機內(nèi)的操作系統(tǒng)或應用直接訪問某些系統(tǒng)資源。
安全輸入過程需要的某些動作可能超出簡單硬件實施的范圍,并且相反可以方便地 使用軟件模塊,其中所述軟件模塊的執(zhí)行可以默認是可信的。在一個實施方案中,通過 安全起始(SINIT)代碼可以執(zhí)行這些動作。這里確定三個典型動作,但這些動作不應理 解為是限定性的。 一個動作可能要求對各種表示系統(tǒng)配置關鍵部分的控制進行檢驗,以 確保所述配置支持正確的安全環(huán)境實例。在一個實施方案中, 一個要求的檢驗可以是, 芯片組240提供的存儲控制器配置不允許兩個或多個不同系統(tǒng)總線地址接觸存儲頁面 250-262內(nèi)的相同位置。第二個動作可以是配置設備訪問頁面表248和設備訪問邏輯 247,以保護SVMM 282存儲駐留拷貝使用的那些存儲頁面不受非處理器設備干擾。第 三個動作可以是計算和記錄SVMM 282模塊的身份,并且把系統(tǒng)控制傳遞給它。這里"記 錄(register)"是指把SVMM282信任測量結果放入寄存器,例如放入PCR278或放入 PCR279。當進行了這個最后的動作,潛在的系統(tǒng)用戶可以檢査SVMM282的可信度。
處理器或芯片組的制造商可以生成SINIT代碼。為此,可以信任SINIT代碼來幫助 芯片組240的安全啟動。為了分配SINIT代碼,在一個實施方案中,眾所周知的加密散 列由全部SINIT代碼構成,生成一個被稱為"摘要"的值。 一個實施方案生成一個160位 的值來作為摘要。然后通過在一個實施方案中由處理器制造商擁有的私鑰(private key)對 摘要進行加密,以形成數(shù)字簽名。當SINIT代碼與相應數(shù)字簽名捆綁在一起時,這個組 合可以稱為SINIT授權碼(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)部非屏蔽事件響應SENTER BUS 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 BUS MESSAGE。在 一個實施方案中,通過在邏輯處理器所進行的任何系統(tǒng)總線事務中把"l"寫入EXISTS寄 存器270的相應位,芯片組240可以把始終掌握在系統(tǒng)內(nèi)的所有操作邏輯處理器的情 況。在本實施方案中,系統(tǒng)總線230上的每個事務必須包含標識字段(field),所述字 段包含邏輯處理器標識符。在一個實施方案中,這是由物理處理器標識符和每個物理處 理器內(nèi)硬件執(zhí)行線程的標識符構成。例如,如果在處理器222上執(zhí)行的線程在系統(tǒng)總線 230上引起任何總線事務,則芯片組240將在該事務中發(fā)現(xiàn)這個邏輯處理器標識符,并且 把'T,寫入EXISTS寄存器270內(nèi)的相應位置286。安全啟動過程期間,當處理器222上 的那個同一線程在系統(tǒng)總線230上發(fā)送它自己的ACK信息時,芯片組240也將發(fā)現(xiàn)這個 標識符,并且把"l"寫入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設置之后直到可信 或安全操作結束期間,芯片組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)境斷言得到保護(其中如果不是所有的處理器都參與,安全啟動過程 就不結束)。在正常操作中,在短時間之后,ALL-JOINED標志246被設置,并且ILP 可以確保所有其它邏輯處理器己經(jīng)進入等待狀態(tài)。
當ALL-JOINED標志246被設置時,為了驗證和隨后執(zhí)行包含在SINIT-AC 280內(nèi) 的SINIT代碼,ILP (處理器202)可以把SINIT-AC 280拷貝和關鍵字284移入安全存儲 器208。在一個實施方案中,這個安全存儲器208可以是ILP (處理器202)的內(nèi)部高速 緩存器,或許按照專用模式運行。關鍵字284表示與私鑰對應的公鑰(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代碼可以認為是可信的。
經(jīng)由信令等待的RLP (處理器212,處理器222)的系統(tǒng)總線230以及將要啟動安 全操作的芯片組240, ILP現(xiàn)在可以發(fā)布另一專用總線消息,S卩SENTER CONTINUE 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摘要),并且把結果寫回PCR278。在第一次 (開始)對PCR278的寫入被限制在SENTER指令的這些實施方案中,最后的摘要可以 用作系統(tǒng)信任根(root of trust)。
一旦可信SINIT代碼已經(jīng)結束它的執(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)運行在可信模式下。
現(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)資源保護或特權的操作系統(tǒng)340或核心程序360正常執(zhí)行的指令或操 作可以被SVMM350攔住,并且可選擇地允許、部分允許或拒絕。作為實施例,在典型 的實施方案中,被SVMM350攔住的指令變成了改變由操作系統(tǒng)340或核心程序360正 常執(zhí)行的處理器頁面表的指令,這將確保在它的虛擬機范圍之外所述請求不試圖要求改 變頁面特權。
現(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/0總線,芯片組430可以與大容量存儲設備連接,例如固定媒介444或可移 動媒介448。固定媒介444或可移動媒介448可以是磁盤、磁帶、磁碟、磁光驅動器、 CD-ROM、 DVD-ROM、閃存卡,或許多其它形式的大容量存儲器。
在圖4A的實施方案中,四個處理器CPUA410、 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。
現(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可以使這些處理器在啟動安全環(huán)境 期間能夠適當?shù)赝?。在一個實施方案中,專用總線消息的發(fā)布可以由電路支持,例如 圖2的總線消息邏輯206。
在一個實施方案中,芯片組428擔負維護系統(tǒng)總線A 402和系統(tǒng)總線B 404上的一 致性和相干性。如果在系統(tǒng)總線A 402上發(fā)送標準或專用的總線消息,芯片組428把這 個信息(適當時)反映在系統(tǒng)總線B404上,反之亦然。
在可替代的實施方案中,芯片組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)境。
現(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 B 514??蛇x擇地,SINIT-AC566和 SVMM574的拷貝可以放在連接到其它(非ILP)處理器的其它存儲器中,只要ILP514 能夠訪問那些存儲器。如圖2中已經(jīng)描述的那樣,CPU B ILP 514通過發(fā)布SENTER指令 開始安全輸入過程,并且具有類似的結果和發(fā)布的總線周期。如上結合圖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的時線表 示結合示例性系統(tǒng)論述的全部操作時間表,上文結合圖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 MESSAGE 616。然后,在時間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 CONTINUE MESSAGE。當SENTER CONTINUE MESSAGE在時間636在系統(tǒng)總線230上傳播時,RLP可以進入"等待加 入"的狀態(tài)。例如,處理器222的RLP在時間周期638期間進入"等待加入"的狀態(tài)。
一旦發(fā)布SENTER CONTINUE MESSAGE, ILP于是(在時間周期640內(nèi))就可以 把芯片組240的關鍵字寄存器244的公鑰和SINIT-AC的拷貝加入它的安全存儲器208, 以形成所述公鑰拷貝和SINIT-AC拷貝。在另一實施方案中,關鍵字寄存器244可以包含 公鑰摘要,實際公鑰可以包含在SINIT-AC內(nèi)或與其包含在一起。如上結合圖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ā)布單獨的RLP JOIN MESSAGES。 一個實施例就是處理器222的JOIN MESSAGE 644。這個消息可以包括存 儲器內(nèi)的位置,在該位置上RLP處理器222可以加入被記錄的SVMM存儲駐留拷貝的 執(zhí)行。可選擇地,ILP SVMM操作可能已經(jīng)把存儲器位置記錄在芯片組或存儲器內(nèi)的預 定位置中, 一旦接收到JOIN MESSAGE, RLP就從所述位置取回它的開始地址。在接收 到處理器222的JOIN MESSAGE并且確定它的開始地址之后,在時間周期646期間, RLP處理器222跳轉到這個位置,并且加入被記錄的SVMM存儲駐留拷貝的執(zhí)行。
在所有RLP已經(jīng)加入被記錄的SVMM存儲駐留拷貝之后,安全操作在整個微型計 算機系統(tǒng)200上被建立起來。
現(xiàn)在參考圖7,表示依據(jù)本發(fā)明一個實施方案的軟件和其它過程塊(process block) 的流程圖。為了清楚,圖7只表示用于單個有代表性的RLP的過程塊。在其它實施方案 中,可以存在幾個響應邏輯處理器。
過程700從過程塊710開始,這時,邏輯處理器復制能用來由隨后的SENTER指令 進行訪問的SINIT-AC和SVMM模塊。在這個實施例中,在過程塊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于是進入等待狀態(tài),等待芯片組設定其ALL-JOINED 標志。在每個RLP在過程塊770中接收到SENTER BUS MESSAGE之后,它以當前指令 的結束來暫停執(zhí)行,然后在過程塊772中發(fā)布它自己的SENTER ACK。如判斷過程塊 774所示,每個RLP于是進入等待狀態(tài),等待從ILP到來的SENTER CONTINUE MESSAGE 。當接收到SENTER ACK信息時,芯片組設定JOINS寄存器內(nèi)的相應位。當JOINS 寄存器的內(nèi)容等于EXISTS寄存器的內(nèi)容時,芯片組設定ALL-JOINED標志,給ILP發(fā) 送信號以從^J斷過程塊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 JOIN MESSAGE可以 包含SVMM入口點,RLP在加入SVMM操作時向該入口點分支??蛇x擇地,ILP SVMM代碼可以把適當?shù)腞LP入口點記錄在系統(tǒng)位置內(nèi)(例如在芯片組內(nèi)),RLP—旦 接收到SENTER JOIN MESSAGE就重新取回它。雖然公開的不同實施方案包括兩個或多個處理器(邏輯或物理處理器),但應該理解,這樣的多個處理器和/或多個線程系統(tǒng)以更詳細的方式進行了描述以解釋增加的復雜 性,所述復雜性與使帶有多個邏輯或物理處理器的系統(tǒng)安全有關。在復雜程度較底的系 統(tǒng)中可能有利的實施方案可以只使用一個處理器。在某些情況下, 一個物理處理器可以 是多個線程,從而可以包括多個邏輯處理器(因此具有所述的ILP和RLP)。然而,在 其它情況下,可以使用單個處理器、單線程系統(tǒng),仍然利用所公開的安全處理技術。在 上述情況下,可以沒有RLP;然而,所述安全處理技術仍然起作用來減少以未授權方式 能夠竊取或操縱數(shù)據(jù)的可能性。在前述說明書中,已經(jīng)參考本發(fā)明的示例性實施方案對其進行了描述。然而,顯然 可以對本發(fā)明進行各種修改和變化而不脫離附屬權利要求書所提出的本發(fā)明更寬的本質 和范圍。因此把說明書和附圖看作例證性的而不是限制性的。
權利要求
1、一種系統(tǒng),包括第一邏輯處理器,所述第一邏輯處理器包括安全存儲器以執(zhí)行安全輸入指令;以及芯片組,所述芯片組防止非處理器設備訪問安全虛擬機監(jiān)控程序。
2、 如權利要求1所述的系統(tǒng),其中所述安全輸入指令是使所述第一邏輯處理器給 第二邏輯處理器發(fā)布專用總線消息,以在安全操作中使所述第二處理器與所述第一處理 器同步。
3、 如權利要求1所述的系統(tǒng),其中所述安全存儲器位于所述第一邏輯處理器的高 速緩存器內(nèi)。
4、 如權利要求1所述的系統(tǒng),其中所述安全存儲器被保護,從而不被除所述第一 邏輯處理器之外的電路訪問。
5、 如權利要求1所述的系統(tǒng),還包含安全標志,所述安全標志包括平臺配置寄存 器以保存摘要。
6、 如權利要求1所述的系統(tǒng),還包含第二邏輯處理器以響應來自所述安全輸入指 令的第一專用總線消息。
7、 如權利要求6所述的系統(tǒng),其中所述第二邏輯處理器完成當前指令的執(zhí)行,并 且發(fā)布第二專用總線消息來響應所述第一專用總線消息。
8、 如權利要求7所述的系統(tǒng),其中所述芯片組設定標志以響應接收所述第二專用 總線消息。
9、 如權利要求8所述的系統(tǒng),其中所述第二邏輯處理器跳轉到所述安全虛擬機監(jiān) 控程序的入口點,以響應第三專用總線消息。
10、 一種方法,包括 同步第一邏輯處理器和第二邏輯處理器; 驗證起始代碼模塊; 驗證安全虛擬機監(jiān)控程序;以及 執(zhí)行所述安全虛擬機監(jiān)控程序。
11、 如權利要求IO所述的方法,還包括把專用總線消息發(fā)送給所述第二邏輯處理 器,以便在所述第二邏輯處理器上以響應方式執(zhí)行所述安全虛擬機監(jiān)控程序。
12、 如權利要求10所述的方法,其中所述同步包括專用總線消息以使所述第二邏 輯處理器暫停執(zhí)行并且發(fā)送確認。
13、 如權利要求12所述的方法,其中所述同步包括在芯片組內(nèi)設定標志以響應所 述確認。
14、 如權利要求10所述的方法,其中所述驗證起始代碼模塊包括把所述起始代碼 模塊的拷貝和公鑰移到安全存儲器中。
15、 如權利要求14所述的方法,其中所述驗證起始代碼模塊包括比較所述起始代 碼模塊的第一摘要和所述起始代碼模塊的第二摘要。
16、 如權利要求10所述的方法,其中所述驗證安全虛擬機監(jiān)控程序包括執(zhí)行所述 起始代碼模塊。
17、 如權利要求16所述的方法,其中所述驗證安全虛擬機監(jiān)控程序包括把所述安 全虛擬機監(jiān)控程序記錄在平臺配置寄存器內(nèi)。
18、 一種裝置,包括用于同步第一邏輯處理器和第二邏輯處理器的設備; 用于驗證起始代碼模塊的設備; 用于驗證安全虛擬機監(jiān)控程序的設備;以及用于在所述第 一邏輯處理器內(nèi)執(zhí)行所述安全虛擬機監(jiān)控程序的設備。
19、 如權利要求18所述的裝置,還包括用于把第一專用總線消息發(fā)送給所述第二 邏輯處理器的設備,以便在所述第二邏輯處理器上執(zhí)行所述安全虛擬機監(jiān)控程序。
20、 如權利要求18所述的裝置,還包括用于把所述起始代碼模塊的拷貝和公鑰移 到安全存儲器中的設備。
21、 如權利要求20所述的裝置,還包括用于比較所述起始代碼模塊的第一摘要和 所述起始代碼模塊的第二摘要的設備。
22、 如權利要求18所述的裝置,還包括用于記錄所述安全虛擬機監(jiān)控程序的設備。
23、 一種處理器,包括安全輸入邏輯,所述安全輸入邏輯執(zhí)行第一指令以調(diào)用安全操作起始,并且檢測時間點以繼續(xù)執(zhí)行安全起始密碼;以及總線消息邏輯,所述總線消息邏輯發(fā)送第一專用總線消息以響應所述第一指令,并 且發(fā)送第二專用總線消息以響應所述檢測時間點。
24、 如權利要求23所述的處理器,其中所述時間點在第一邏輯處理器發(fā)布確認之后。
25、 如權利要求23所述的處理器,其中所述安全輸入邏輯還輪詢芯片組內(nèi)的標志 寄存器以確定所述時間點。
26、 如權利要求23所述的處理器,其中所述安全輸入邏輯還輸入關鍵字和驗證所 述時間點之后的代碼模塊。
27、 如權利要求23所述的處理器,其中所述總線消息邏輯還發(fā)送包括代碼入口點 的第三專用總線消息。
28、 一種芯片組,包括總線消息邏輯,所述總線消息邏輯響應來自第一邏輯處理器的第一專用總線消息以 準備安全操作;以及寄存器,所述寄存器保存來自第二邏輯處理器的確認,以響應所述第一專用總線消息。
29、 如權利要求28所述的芯片組,其中所述芯片組比較所述寄存器和邏輯處理器 動作,以確定何時給第一邏輯處理器發(fā)送信號以繼續(xù)安全操作起始。
30、 如權利要求29所述的芯片組,其中所述信號包括設定標志。
31、 如權利要求28所述的芯片組,還包括設備訪問邏輯以鎖定安全虛擬機監(jiān)控程序。
32、 如權利要求28所述的芯片組,還包括關鍵字寄存器,以便在所述第一專用總 線消息之后給所述第一邏輯處理器發(fā)送關鍵字。
33、 一種系統(tǒng),包括邏輯處理器,所述邏輯處理器具有安全輸入邏輯和響應所述安全輸入邏輯的第一總 線消息邏輯;以及芯片組,所述芯片組包括第二總線消息邏輯以從所述第一總線消息邏輯接收第一專 用總線消息,并且包括要設定的標志,以響應確認。
34、 如權利要求33所述的系統(tǒng),還包括安全起始授權碼以啟動安全操作來響應所 述安全輸入邏輯。
35、 如權利要求34所述的系統(tǒng),還包括由所述邏輯處理器使用的關鍵字以驗證所 述安全起始授權碼。
36、 如權利要求34所述的系統(tǒng),其中所述第一總線消息邏輯發(fā)布第二專用總線消 息,其中所述邏輯處理器在所述第二專用總線消息之后把所述安全起始授權碼移到安全 存儲器中。
37、 如權利要求34所述的系統(tǒng),還包括安全虛擬機監(jiān)控程序。
38、 如權利要求37所述的系統(tǒng),其中所述安全起始授權碼執(zhí)行所述安全虛擬機監(jiān) 控程序的起始。
39、 如權利要求38所述的系統(tǒng),其中所述起始包括驗證,并且其中所述芯片組包 括設備訪問邏輯,用來防止非處理器設備訪問所述安全虛擬機監(jiān)控程序以響應所述起 始。
40、 如權利要求38所述的系統(tǒng),其中所述第一總線消息邏輯發(fā)布第三專用總線消 息以響應所述起始。
41、 如權利要求40所述的系統(tǒng),其中所述第三專用總線消息包括用于所述安全虛 擬機監(jiān)控程序的代碼入口點。
42、 一種方法,包括 發(fā)送專用總線消息; 驗證第一邏輯處理器內(nèi)的起始代碼; 驗證安全虛擬機監(jiān)控程序;以及在所述第一邏輯處理器內(nèi)執(zhí)行所述安全虛擬機監(jiān)控程序。
43、 如權利要求42所述的方法,還包括發(fā)送確認以響應所述第一總線消息。
44、 如權利要求42所述的方法,還包括暫停第二邏輯處理器內(nèi)的執(zhí)行和發(fā)送確認。
45、 如權利要求44所述的方法,還包括在芯片組內(nèi)設定標志以響應所述確認。
46、 如權利要求42所述的方法,其中所述驗證起始代碼包括把所述起始代碼的拷貝和公鑰移到安全存儲器中。
47、 如權利要求46所述的方法,其中所述驗證起始代碼包括比較所述起始代碼的第一摘要和所述起始代碼的第二摘要。
48、 如權利要求42所述的方法,其中所述驗證安全虛擬機監(jiān)控程序包括執(zhí)行所述 起始代碼。
49、 如權利要求48所述的方法,其中所述驗證安全虛擬機監(jiān)控程序包括把所述虛 擬機監(jiān)控程序記錄在平臺配置寄存器內(nèi)。
全文摘要
描述了在微處理器系統(tǒng)內(nèi)啟動安全操作的方法和裝置。在一個實施方案中,一個啟動邏輯處理器通過停止其它邏輯處理器的執(zhí)行,然后把起始和安全虛擬機監(jiān)控軟件載入存儲器,來啟動該過程。啟動處理器然后把起始軟件載入安全存儲器進行驗證和執(zhí)行。起始軟件然后在安全系統(tǒng)操作之前驗證和記錄安全虛擬機監(jiān)控軟件。
文檔編號G06F12/14GK101410772SQ03811454
公開日2009年4月15日 申請日期2003年3月20日 優(yōu)先權日2002年3月29日
發(fā)明者戴維·格勞羅克, 詹姆斯·薩頓二世 申請人:英特爾公司