天天看點

對TCG的概要分析和對TPM的學習-可信根說明以及RTM(二)(YOUXIANG:lichunwen1987ATqq。com)

(YOUXIANG:lichunwen1987ATqq。com)

參考TCG Specification Architecture Overview 1.4 。http://www.trustedcomputinggroup.org/ 檢索TCG Specification Architecture Overview

1.1  The Trusted Platform

TPM(TrustedPlatform Module)既可以了解為一套規範,定義了安全密碼處理器(securecryptoprocessor)的規格;也可以看作是對此規範的一種實作,即TPM晶片。該部分不涉及具體硬體實作和結構。

有三個可信根(root of trust),包括:度量可信根RTM(a root of trust for measurement)、報告可信根RTR(aroot of trust for reporting)、存儲可信根RTS(a root of trustfor storage)。

RTM是一個可靠地進行完整性度量的計算引擎,以CRTM (core root of trust for measurement)為度量根。CRTM是系統啟動後執行的第一段代碼,它初始化系統啟動後的執行順序,執行最初的可信度量,然後引導TPM開始工作。CRTM是平台執行RTM時的執行代碼,一般存儲在BIOS中。

RTM目标是将系統的狀态資訊儲存在PCR中。

使用PCR使通信另一方确信系統處于某種已知狀态。

雖然系統使用者不能阻止運作惡意軟體,但是惡意軟體的執行被記錄下來并且不能抵賴。

問題是:必須從RTM可信根開始運作系統,是以有DRTM。下圖是SRTM的過程,左邊為度量過程,右邊為執行過程。先度量,再交接控制權。

對TCG的概要分析和對TPM的學習-可信根說明以及RTM(二)(YOUXIANG:lichunwen1987ATqq。com)

RTS是一個準确的記錄完整度量的摘要值和順序計算引擎,它将完整性度量儲存在日志中,将它們的散列值儲存在PCR中。RTR是一個可靠報告RTS的計算引擎。RTS儲存委托給TPM的密鑰和資料,并管理少量的記憶體,其中存放的密鑰用于完成解密和簽名的操作。

RTR是一個可信的實體來精确和正确的報告資訊。使用PCR和RSA以不可僞造的方式向外界報告平台狀态。

RTM,RTS,RTR這三個根都是可信、功能正确而且不需要外界維護的。這些可信根存在于TPM和BIOS中,可以由專家的評估來确定是否符合可信的标準。

1.1.1   Trusted Platform BuildingBlocks

粗體部分是TBB是RTS中不具有保護能力的元件,屬于可信平台目标之外的部分。一般來說是RTM和TPM的一些初始化指令,例如CRTM和主機闆的連接配接,TPM和主機闆的連接配接

對TCG的概要分析和對TPM的學習-可信根說明以及RTM(二)(YOUXIANG:lichunwen1987ATqq。com)

在可信計算平台體系中,建立可信需要先擁有可信根,然後建立一條可信鍊,再将可信傳遞到平台的每個子產品,之後實作整個平台的可信。

可信平台構造子產品(Trusted Building Blocks,TBB)是信任源的一部分,包括RTM和TPM初始化的資訊和功能(複位等)。我們使用TBB來建構可信源。

對TCG的概要分析和對TPM的學習-可信根說明以及RTM(二)(YOUXIANG:lichunwen1987ATqq。com)

l  可信計算平台将BIOS引導塊作為完整性度量可信根, TPM作為完整性報告可信根。

l  從平台加電開始,BIOS的引導子產品度量BIOS的完整性值并将該值存儲在TPM上,同時在自己可寫的那塊記憶體中記錄日志;

l  接着BIOS度量硬體和ROMS,将度量得到的完整性值存在TPM中,在記憶體中記日志;

l  接着OS Loader度量OS,OS度量應用和新的OS元件。

l  當作業系統啟動後,由使用者決定是否繼續信任這個平台系統。這樣一個信任鍊的建立過程保證了系統平台的可信性。

1.1.2   Integrity Measurement

一個度量包括兩個部分:1)被度量的資料:植入的資料或者程式代碼。2)度量摘要值:上述資料的哈希值。摘要值使用RTR和RTS儲存在TPM中

Stored Measurement Log(SML)記錄了摘要值的序列,TPM将這些摘要值儲存在相應的PCR(PlatformConfiguration Registers)中。對pcr執行extend操作為:PCR[n]  <- SHA-1 ( PCR[n] + measured data)。PCR值是臨時的,重新開機時重置。驗證度量事件完整性,可以将SML中的内容按順序重新計算,得到一個計算PCR值,與TPM中對比,檢視是否相等,則可确認完整性是否改變。SML可能會比較大,是以不儲存在TPM中,不需要保護,因為可以檢驗SML是否被破壞。

TPM1.1有PCR0-15,TPM1.2有PCR0-23,重新開機後,0-15置0,16-23置-1,其中0-15是靜态PCR,隻在重新開機時重置(SRTM使用),16-23是動态PCR,可以在運作時進行重置,但隻能是一些特殊的安全指令才能對其重置,例如AMD SKINIT指令和INTEL的TXT指令。

PCR的使用有三個場景:

1) 驗證平台完整性:TPM_Quote

2) 保護資料(TPM_Seal/TPM_Unseal)

3) 在建立key的時候指定PCR集合,隻有在這些PCR時才能使用這個Key。

繼續閱讀