專利名稱:用于共享可信平臺模塊的系統(tǒng)和方法
用于共享可信平臺模塊的系統(tǒng)和方法
背景技術(shù):
可信計算組織(TCG)開發(fā)并促進(jìn)用于硬件使能的可信計算和安全 技術(shù)例如可信平臺模塊(TPM)的工業(yè)標(biāo)準(zhǔn)規(guī)范。TPM被用來存儲并報告 計算平臺上的各種設(shè)備和/或硬件的完整性,并被用來安全地隱藏和存 儲平臺信息及秘密,例如密碼、密鑰和證書。TPM本質(zhì)上是一個單命令 處理設(shè)備,從而當(dāng)TPM對用于由計算機系統(tǒng)產(chǎn)生的一個進(jìn)程的數(shù)據(jù)進(jìn)行 操作時,TPM不能對其它進(jìn)程操作,直到TPM完成對第一個進(jìn)程的處理。 此外,除了開始當(dāng)前在TPM上執(zhí)行的進(jìn)程的實體,沒有其它實體可以在 該進(jìn)程執(zhí)行期間建立與TPM的連接。而且,單個實體通常作為所有在操 作系統(tǒng)(0S)級產(chǎn)生的要與TPM通信的進(jìn)程/實體的調(diào)度器。該調(diào)度器 實體典型地拒絕在其操作期間放棄對TPM的控制。
排他地使用TPM的兩個實體是TCG軟件棧(TSS )和TPM基本服務(wù) (TBS) 。 TSS提供符合TCG規(guī)范和原則的安全服務(wù),并在計算機OS的 控制下執(zhí)行;TBS為Windows操作系統(tǒng)的最新的TPM感知的(TPM-aware ) 版本虛擬化(virtualize) TPM。但是,在一些情況下,優(yōu)選地要在OS 的控制之外執(zhí)行安全操作,例如加密或解密,因為OS之外的計算機系 統(tǒng)固件可以更能夠抵抗用戶操作帶來的干擾,無論是無意的還是惡意 的,并且更少可能被改變。不幸的是,可用于存儲密鑰和軟件的存儲器 典型地限于固件和可以在固件中的基本輸入/輸出系統(tǒng)(B10 S)。但是, 如果另一個實體,例如BI0S、固件、外部設(shè)備或計算機主板上的另一電 路,試圖為了安全操作利用TPM的功能性,TPM的單進(jìn)程操作限制引入 了與TSS/TBS沖突的風(fēng)險。沖突可能的形式是延遲和狀態(tài)損壞。當(dāng) TSS/TBS正在使用TPM而不會放棄控制時發(fā)生延遲。如果在由TSS/TBS 使用的周期之間另一實體使用了 TPM并且改變了 TSS/TBS曾經(jīng)依賴的要 保持不變的寄存器的狀態(tài),狀態(tài)損壞就會出現(xiàn)。
圖1是示出用于共享可信平臺模塊(TPM)的系統(tǒng)的實施例的框圖;圖2是進(jìn)一步示出圖1中用于共享TPM的系統(tǒng)的實施例的框圖; 圖3是示出用于共享TPM的方法的實施例的流程圖。
具體實施例方式
本發(fā)明的優(yōu)選實施例及其優(yōu)勢將通過參考附圖中的圖1-3而被最好 地理解,相同的附圖標(biāo)記被用于不同圖中類似和相應(yīng)的部分。
圖1是示出用于共享可信平臺模塊(TPM)的系統(tǒng)1的實施例的框 圖。在圖1示出的實施例中,系統(tǒng)1包括具有主板100的計算機系統(tǒng)10, 該主板裝有中央處理器(CPU) 110、存儲器120、 TPM130、固件MO和 電路150。在圖1示出的實施例中,固件140包括基本輸入/輸出系統(tǒng)
(BIOS) 140。電路150可以是主板100上的任何電路或設(shè)備,包括但 不限于,另一安全設(shè)備、嵌入設(shè)備、平臺擴(kuò)展、接口或總線控制器。BIOS 140是在操作系統(tǒng)(OS) 121-故載入和執(zhí)行之前在計算機系統(tǒng)10上運行 的固件。但是,應(yīng)該理解,可以使用計算機系統(tǒng)10的其它方法和/或?qū)?施例,其不包含傳統(tǒng)的BIOS而使用其它固件系統(tǒng)。計算機系統(tǒng)10可以 包括任意類型的計算機系統(tǒng),例如但不限于,個人電腦、個人數(shù)字助理
(PDA)、微控制器、嵌入式系統(tǒng)、通信設(shè)備和娛樂設(shè)備。如這里所使 用,術(shù)語"TPM"包括提供硬件使能的可信計算的基礎(chǔ)的任何設(shè)備,并 且不限于滿足由可信計算組織(TCG)產(chǎn)生的規(guī)范的設(shè)備。
在圖1中,TPM 130包括TPM忙標(biāo)志131 (指示TPM 130正被使用 或正在執(zhí)行從系統(tǒng)局部實體(SLE)發(fā)出的進(jìn)程和/或請求),以及請求 標(biāo)志132 (指示使用TPM130來執(zhí)行從SLE發(fā)出的系統(tǒng)局部進(jìn)程和/或請 求的請求)。SLE是被允許訪問受限的TPM內(nèi)部加密功能性的實體,并 且遵守不向用戶或用于一般用途的應(yīng)用程序暴露TPM內(nèi)部加密能力的 TPM限制。SLE可以是遵守這些限制的任何組件,并可以包括平臺固件
(例如固件140) 、 BIOS (例如BIOS 141)、主板100上的其它芯片、 外圍設(shè)備例如鍵盤、指紋讀取器等。從而SLE將TPM的內(nèi)部加密功能擴(kuò) 展到不包括一般目的應(yīng)用程序和用戶的邏輯邊界。SLE或者使用不能被 流氓(rogue) OS欺騙的硬件信號,或者通過在為該局部指定的存儲器 映射輸入/輸出(MMIO)范圍中與TPM通信,證明其"局部性"。此外, 應(yīng)該理解,SLE可以是物理的或虛擬的,例如超控制器(Hypervisor ) / 虛擬機監(jiān)控器。在圖l示出的實施例中,計算機系統(tǒng)IO還包括加入設(shè)備IOI,其可
以是插入卡、媒體讀取器、安全設(shè)備或可以與計算機系統(tǒng)10 —起使用 的任何其它類型的設(shè)備。在圖1中,智能卡11、通用串行總線(USB) 設(shè)備12及安全設(shè)備13被示出為通信地耦接到計算機系統(tǒng)10。安全設(shè)備 13可以包括任意類型或與安全相關(guān)的設(shè)備,例如但不限于,生物測量設(shè) 備例如指紋讀取器或視網(wǎng)膜掃描器。在圖1示出的系統(tǒng)l中, 一個或更 多個SLE實體(例如一個或更多個智能卡U、 USB設(shè)備12、安全設(shè)備 13、加入設(shè)備101、固件140、 BIOS 141、電路150等)可以使用和/或 以其他方式向TPM 130請求服務(wù)。在操作中,為了使用和/或以其他方 式請求TPM 130的服務(wù),請求標(biāo)志132被置位,或者通知通過0S 121 發(fā)送,該通知被CPU 110處理并至少臨時存儲在存儲器120中。
在一些實施例中,通過經(jīng)系統(tǒng)總線向TPM 130發(fā)送一般目的輸入/ 輸出(GPIO)消息和使用MMIO,請求標(biāo)志132可以被置位或清零。MMIO 使用相同的總線來訪問存儲器及輸入/輸出(1/0)設(shè)備,從而一些存儲器 地址被保留用于I/O而不是訪問存儲器空間。TCG規(guī)范定義了用于不同 的局部的存儲器范圍?;谠搶嶓w用來與TPM 130通信的存儲器范圍, TPM 130確保與它通信的實體位于給定的局部。
圖2是進(jìn)一步示出圖1的系統(tǒng)1的框圖。在圖2示出的實施例中, 計算機系統(tǒng)10包括用戶進(jìn)程層21、系統(tǒng)進(jìn)程層22、內(nèi)核模式層23及 固件/硬件層24。 OS 121從用戶進(jìn)程層21延伸,經(jīng)系統(tǒng)進(jìn)程層22進(jìn)入 內(nèi)核模式層23。用戶進(jìn)程層21包括要使用TPM 130的安全功能的兩個 應(yīng)用程序211和212。例如,應(yīng)用程序211和212可能需要加密或解密 以便處理數(shù)據(jù),例如可能播放音頻文件或數(shù)字視頻光盤(DVD)所需要 的。應(yīng)該理解,想要使用TPM 130的資源的應(yīng)用程序或其它實體的類型 和數(shù)量可以變化。
在OS層次上(例如由層21、 22、 23中的OS 121控制所控制和/或 以其他方式在層21、 22、 23中的0S 121控制下執(zhí)行),為了得到和/ 或以其他方式訪問所需的TPM 130的安全功能,應(yīng)用程序211和212中 的一個開始在TPM 130上的進(jìn)程的纟丸行。應(yīng)用程序211和212通過TCG 軟件棧(TSS )221與TPM 130交互。TSS 211訪問TPM設(shè)備驅(qū)動庫(TDDL ) 或TPM基本服務(wù)(TBS ) 222。 TSS 211和TDDL/TBS 222位于用戶進(jìn)程層 23之下的系統(tǒng)進(jìn)程層22中。TDDL/TBS 222選擇特定的TPM設(shè)備驅(qū)動器231來使用輸入/輸出(I/O)系統(tǒng)232驅(qū)動TPM 130。 1/0系統(tǒng)232可以 包括但不限于GPIO或MMIO。
用戶進(jìn)程層21、系統(tǒng)進(jìn)程層22、內(nèi)核模式層23和固件/硬件層24 表示對資源的不同訪問度,較高層具有較大的訪問度。例如,計算機系 統(tǒng)10的用戶可以在計算機系統(tǒng)10的壽命期間在用戶進(jìn)程層21中安裝、 打補丁和刪除許多應(yīng)用程序,例如應(yīng)用程序211和212。 <旦是,在一些 實施例中,TPM 130是防篡改的并且不能被用戶修改。通常,在OS in 的控制下運行的任何應(yīng)用程序,例如應(yīng)用程序211和212,會遭到可能 是用戶、黑客或病毒發(fā)起的攻擊。例如,攻擊可以包括試圖獲取對數(shù)據(jù) 的非法訪問以拷貝或破壞它。于是,通過將安全服務(wù)移到OS 121外部, 在那里訪問更為受限,多種形式的計算機攻擊可以被排除。
SLE 234包括在固件/硬件層24上部署的任意類型的設(shè)備,并由此 可以潛在地提供比在用戶應(yīng)用層21中部署的應(yīng)用程序211和212提供 的安全級別更高的安全級別。在一些實施例中,SLE 234可以包括一個 或更多個智能卡11、 USB設(shè)備12、安全設(shè)備13、加入設(shè)備101、固件 140、 BIOS 141或電路150 (圖1 )。但是,應(yīng)該理解,其它類型的應(yīng)用 程序和/或?qū)嶓w可以在固件/硬件24中存在并包含SLE 234。
SLE 234被配置為通過將請求標(biāo)志132置位或通過發(fā)送另一類型的 通知來中斷在TPM 130上為使用的應(yīng)用程序211或212執(zhí)行的0S 121 層次進(jìn)程。例如,通知可以被發(fā)送到TPM 130、 TSS 221、 TBS 222、應(yīng) 用程序211或212、或OS 121中的任何其它實體。請求標(biāo)志132可以通 過使用I/O系統(tǒng)232或通過經(jīng)OS 121來置位。通知還可以經(jīng)I/O系統(tǒng) 232被傳遞到TPM 130,或被傳遞到0S 121以路由到合適的接收者,可 能使用簡I。于是,OS 121層次進(jìn)程被中斷和/或暫停以使能TPM 130 對非OS 121層次進(jìn)程(例如與SLE 234關(guān)聯(lián)且/或由0S 121的層21、 22和23外部和/或外側(cè)的實體發(fā)起的進(jìn)程)的執(zhí)行。
當(dāng)TPM 130在為OS 121層次應(yīng)用程序執(zhí)行OS 121層次進(jìn)程和/或 請求時(例如為在OS 121控制下的應(yīng)用程序211和/或212 ),指示TPM 130正在一皮使用的TPM忙標(biāo)志131沒有^皮置位。由于TCG TPM規(guī)范規(guī)定 了單進(jìn)程、單用戶設(shè)備,如果TPM 130滿足TCG規(guī)范,則當(dāng)前的進(jìn)程具 有對TPM 130的排他使用。系統(tǒng)1的實施例使用請求標(biāo)志132來提供至 少一種機制,用于通過由SLE 234 (例如智能卡11、 USB設(shè)備12/安全
6設(shè)備13、加入設(shè)備101、固件140或電路150)發(fā)出請求信號以中斷或 暫停OS 121層次進(jìn)程的執(zhí)行并執(zhí)行SLE 234進(jìn)程,來使能對TPM 130 的共享。
圖3是示出TPM共享方法的實施例的流程圖。該方法在塊301開始, 其中TSS 221在TPM 130上執(zhí)行0S 121層次進(jìn)程(例如,代表應(yīng)用程 序211或212 )。盡管圖3使用TSS 221來描述,其它實體也可以使用 TPM 130,例如TDDL/TBS 222或可以訪問TPM 130資源的另一 0S 121 層次應(yīng)用程序。在塊302中,有指示SLE 234要使用TPM 130(例如固 件140、 BIOS 141、電路150、主板100上的另一電路,主板100外的 設(shè)備,以及/或被授權(quán)使用TPM 130的任何其它SLE)。如上所述,該請 求可以是用于要在OS 121以外執(zhí)行的加密或解密過程。
在塊303中,SLE 234向TPM 130認(rèn)證自己,以得到使用TPM130 的授權(quán)。例如,認(rèn)證可能需要使用預(yù)定的局部存儲器范圍經(jīng)MMIO發(fā)送 消息。在塊304中,通過,例如,置位請求標(biāo)志132和/或使用WMI、 GPIO、 MMIO或使SLE 234能發(fā)信號通知TPM 130或在0S 121中執(zhí)行的進(jìn)程的 任何其它方法來發(fā)送通知,SLE 140請求使用TPM 130。還應(yīng)該理解, 其它方法也可以被使用(例如,使用中斷請求(IRQ))。
在塊305中,通過監(jiān)控請求標(biāo)志132狀態(tài)或通過以其他方式接收SLE 234請求的通知,TSS 221得知SLE 234請求。對TPM 1 30的控制從TSS 221到SLE 234的移交,可以被協(xié)同地或占先地執(zhí)行。在判定塊306中, SLE 234或者進(jìn)行協(xié)同方案或者進(jìn)行占先方案。如果選擇了占先方案, 該方法進(jìn)入塊307a,其中SLE 234暫停執(zhí)行TSS 221進(jìn)程并保存TPM 130 的狀態(tài),且該方法進(jìn)入塊310。如果在判定塊306中選擇了協(xié)同方案, 該方法進(jìn)入塊307b,其中TSS 221在SLE 234等待的同時開始清理進(jìn)程。 例如,在一些實施例中,使用協(xié)同方案,TSS 221暫停它自己的進(jìn)程, 保存TPM 130狀態(tài),然后清零請求標(biāo)志132。在判定塊308,通過監(jiān)控 請求標(biāo)志132的狀態(tài),做出決定TSS 221是否已完成清理進(jìn)程。如果TSS 221還沒有完成,則該方法進(jìn)入塊309,其中SLE 234繼續(xù)監(jiān)控TSS 221 的狀態(tài)以通過監(jiān)控請求標(biāo)志132來確定TSS 221是否已經(jīng)完成。應(yīng)該理 解在一些實施例中,系統(tǒng)1可以被實現(xiàn)為對所有設(shè)備使用占先、對所有 設(shè)備使用協(xié)同、或?qū)δ承┰O(shè)備使用協(xié)同并對其它設(shè)備使用占先(例如, 由系統(tǒng)設(shè)計者、用戶、管理員等設(shè)置)。在其它實施例中,決定是行協(xié)同或占先的進(jìn)程是基于任務(wù)的優(yōu)先權(quán)的(例如,較高優(yōu)先權(quán)的任務(wù) 使用占先進(jìn)程,而較低優(yōu)先權(quán)的任務(wù)使用協(xié)同進(jìn)程)。當(dāng)根據(jù)TCG規(guī)范
實施時,TPM 130能夠響應(yīng)于SaveState()和RestoreState()命令,以 分別保存和恢復(fù)其寄存器的值。TSS 221或SLE 234,無論那個具有對 TPM 130的控制,能夠發(fā)出這樣的命令。
當(dāng)TSS 221已經(jīng)釋放對TPM 130的控制,TSS 221在塊310中用信 號通知該釋放(例如,通過清零請求標(biāo)志132和/或向OS 121中曾經(jīng)正 使用TSS 221來訪問TPM 130的功能的應(yīng)用程序報告狀態(tài))。在一些實 施例中,TSS 221報告它已被搶先或提供完成進(jìn)程的時間估計,時間估 計包括SLE 234將使用TPM 130的時間。在塊311中,SLE 234訪問和/ 或以其他方式取得TPM 130的控制,并置位忙標(biāo)志131。在塊312中, SLE 234執(zhí)行它自己的進(jìn)程,并且在其結(jié)束或完成時,在塊313中釋放 TPM 130。在一些實施例中,釋放TPM 130包括清理固件140進(jìn)程、清 零忙標(biāo)志131、恢復(fù)來自TSS 221進(jìn)程的狀態(tài)、并通知TSS 221。
在塊314中,TSS 221重連到TPM 130。在一些實施例中,重連到 TPM 130是在響應(yīng)于TSS 211接收到與SLE 234關(guān)聯(lián)的進(jìn)程完成的通知、 或作為TSS 221監(jiān)控忙標(biāo)志131的結(jié)果而發(fā)生的。在一些實施例中,TPM 130及/或OS 121中曾正在使用TSS 221來訪問TPM 130的應(yīng)用程序以 其他方式^皮通知用于SLE 234的進(jìn)程結(jié)束,以確保TPM 130使用返回到 TSS 221,以便于用于TSS 221的進(jìn)程的完成。如果被保存的TPM 130 狀態(tài)沒有被SLE 234恢復(fù),TSS 221恢復(fù)TPM 130狀態(tài)。TSS 221進(jìn)程 的執(zhí)行在塊315中恢復(fù)。
于是,系統(tǒng)1的實施例使能了對TPM 130資源的共享使用,從而對 TPM 130的控制可以在TPM 130完成OS層次進(jìn)程之前被放棄。在一些實 施例中,系統(tǒng)1使能占先和/或協(xié)同方案來共享TPM 130資源。
8
權(quán)利要求
1. 一種用于共享可信平臺模塊(TPM)的方法,包括暫停在TPM(130)中執(zhí)行的操作系統(tǒng)(OS)(121)層次進(jìn)程的執(zhí)行;以及由TPM(130)執(zhí)行非操作系統(tǒng)(121)層次進(jìn)程。
2. 如權(quán)利要求1所述的方法,還包括恢復(fù)由TPM ( 130)對操作系 統(tǒng)(121 )層次進(jìn)程的執(zhí)行。
3. 如權(quán)利要求1所述的方法,還包括保存TPM (130)的狀態(tài)。
4. 如權(quán)利要求l所述的方法,其中,執(zhí)行非操作系統(tǒng)(121 )層次 進(jìn)程包括執(zhí)行與系統(tǒng)局部實體(SLE) ( 234 )關(guān)聯(lián)的非操作系統(tǒng)(121) 層次進(jìn)程。
5. 如權(quán)利要求l所述的方法,還包括監(jiān)控一標(biāo)志(132),該標(biāo)志 (132)的置位指示對將TPM ( 130)用于非操作系統(tǒng)(121 )層次進(jìn)程的請求。
6. —種用于共享可信平臺模塊(TPM)的系統(tǒng)(1 ),包括 TMP(130),可操作來執(zhí)行操作系統(tǒng)(0S) (121)層次進(jìn)程,該TPM(130)可操作來暫停操作系統(tǒng)(121 )層次進(jìn)程的執(zhí)行并執(zhí)行非搡作系 統(tǒng)(121 )層次進(jìn)程。
7. 如權(quán)利要求6所述的系統(tǒng)(1),其中,所述非操作系統(tǒng)(121) 層次進(jìn)程與系統(tǒng)局部實體(SLE) ( 234 )關(guān)聯(lián)。
8. 如權(quán)利要求6所述的系統(tǒng)(1),其中,TPM (130)包括請求標(biāo) 志(132),用于指示執(zhí)行非操作系統(tǒng)(121)層次進(jìn)程的請求。
9. 如權(quán)利要求6所述的系統(tǒng)(1),還包括操作系統(tǒng)(121),其 可操作來接收請求將TPM (130)用于執(zhí)行非操作系統(tǒng)(121 )層次進(jìn)程 的通^口 。
10. 如權(quán)利要求6所述的系統(tǒng)(1 ),還包括系統(tǒng)局部實體(234 ), 其可操作來置位請求標(biāo)志(132 )以指示執(zhí)行非操作系統(tǒng)(121 )層次進(jìn) 程的請求。
全文摘要
用于共享可信平臺模塊(TPM)的系統(tǒng)(1)包括可操作來執(zhí)行操作系統(tǒng)(OS)(121)層次進(jìn)程的TPM(130),該TPM可操作來暫停OS(121)層次進(jìn)程的執(zhí)行并執(zhí)行非OS層次進(jìn)程。
文檔編號G06F9/48GK101535957SQ200780040609
公開日2009年9月16日 申請日期2007年10月11日 優(yōu)先權(quán)日2006年10月30日
發(fā)明者M·諾沃亞, V·Y·阿利, W·M·易卜拉欣 申請人:惠普開發(fā)有限公司