CRTM是core root of trust for measurement的英文縮寫,即“可信度量根的核心”。
簡介,構造模組,建立過程,證書,密鑰,
簡介
信任傳遞 (Transitive Trust) 與可信邊界 (Trust Boundary)
在可信計算體系中,建立可信需要先擁有可信根(Roots of Trust),然後建立一條可信鏈(Chain of Trust),再將可信傳遞到系統的各個模組,之後就能建立整個系統的可信。信任源是一個必須能夠被信任的組件。在一個可信平台中有三個可信根:度量可信根、存儲可信根(root of trust for storage ,RTS) 和報告可信根(root of trust for reporting,RTR) 。
RTM被用來完成完整性度量,通常使用度量可信根的核心(core root of trust for measurement ,CRTM) 所控制的計算引擎。CRTM是平台執行RTM 時的執行代碼,一般存在BIOS中。RTM 同時也是信任傳遞的原點。
RTS是維護完整性摘要的值和摘要序列的引擎,一般由對存儲加密的引擎和加密密鑰組成。
RTR是一個計算引擎,能夠可靠地報告RTS持有的數據,這個可靠性一般由簽名來保證。
這三個根都是可信、功能正確而且不需要外界維護的。這些可信根存在於TPM和BIOS中,可以由專家的評估來確定是否符合可信的標準。一般,在平台建立之後,我們認為TPM和BIOS是絕對可信的。
構造模組
可信平台構造模組(Trusted Building Blocks,TBB) 是信任源的一部分,包括RTM和TPM初始化的信息和功能(復位等)。可信構建模組TBB和信任根的組合形成了一個基本的可信邊界,可用來對PC機的最小配置進行完整性的測量、存儲和報告。在運行系統中的任何硬體和軟體模組之前,必須建立對這些模組代碼的信任,這種信任是通過在執行控制轉移之前對代碼進行度量來確認的。在確認可信後,將建立新的一個可信邊界,隔離所有可信和不可信的模組。即使確定模組不可信,也應該繼續執行這個模組,但是需要保存真實的平台配置狀態值。
建立過程
建立可信鏈的過程如圖:
可信平台中的信任鏈度量機制過程如下圖所示。BIOS Boot Block 為完整性度量信任根,TPM 晶片為完整性報告信任根。從平台加電開始,BIOS Boot Block會度量BIOS的完整性值並將該值存儲在安全晶片上,同時在自己可寫的那塊記憶體中記日誌;接著BIOS度量Hardware和ROMS,將度量得到的完整性值存在安全晶片中,在記憶體中記日誌;接著OS Loader度量OS,OS度量套用和新的OS組件。當作業系統啟動後,由用戶決定是否繼續信任這個系統平台。這樣一個信任鏈的建立過程保證了系統平台的可信性。完整性值通常是一個哈希值,通常採用的哈希算法是SHA1 。
證書
密鑰的使用和生成都離不開證書。TCG定義了五類證書,每類都被用於為特定操作提供必要的信息。證書的種類包括:
1) 簽署證書(Endorsement Credential) :由生成 EK 的人發表,包含TPM製造者名、TPM 型號、TPM版本號和EK公鑰。由於是鑑別TPM身份的唯一證據,所以也是秘密和敏感的,除了生成AIK ,其它時候都不應該使用它。
2) 一致性證書(Conformance Credential):它指出了評估者認可TPM的設計和實現符合評估準則。它由獨立的可信機構發布。包含評估者名、平台製造者名、平台型號、平台版本號等。
3) 平台證書(Platform Credential):它由平台製造者發行,確認平台製造者和描述平台屬性。
4) 確認證書(Validation Credential):由第三防發的對系統中的某個硬體或軟體證書。如微軟給某顯示卡的驅動證書。
5) 身份認證證書(I AIK Credential):AIK 證書被用來鑑定對PCR值進行簽名的AIK私鑰。AIK證書由一個可信的、能驗證各種證書和保護客戶端的隱私的服務發表,比如privacy CA 。通過發表AIK證書,簽名者證明提供TPM信息的TPM的真實性。
密鑰
在建立了可信以後,並不是就可以放心把所有權力下放了,還需要證明身份,通過授權和委託來管理信息資產。在這些機制裡面,最重要的就是密鑰與證書。TCG定義了7種密鑰類型。每種類型都附加了一些約束條件以限制其套用。TCG的密鑰可以粗略的分類為簽名密鑰和存儲密鑰。更進一步的分類有:平台、身份認證、綁定、普通和繼承密鑰。對稱密鑰被單獨分類為驗證密鑰。非對稱密鑰大多要求 2048 位的RSA密鑰。在整個密鑰體系中,每個密鑰在開始創建的時候都指定了固定的密鑰屬性。密鑰按照屬性不同分為:可移動密鑰 (Migratable Key) 、不可移動密鑰 (Non- Migratable) 。可移動存儲密鑰並不局限於某個特定平台,可以由平台用戶在平台之間互換而不影響信息互動。不可移動密鑰則永久與某個指定平台關聯,任何此類密鑰泄漏到其它平台都將導致平台身份被假冒。不可移動密鑰能夠用來加密保護可移動密鑰,反之則不行。 7 種密鑰類型如下:
1) 簽名密鑰(Signing Key):非對稱密鑰,用於對套用數據和信息簽名。
2) 存儲密鑰(SK-Storage Key):對稱密鑰,用於對數據或其他密鑰進行加密。存儲根密鑰 (SRK-Storage Root Key) 是存儲密鑰的一個特例。
3) 平台身份認證密鑰(AIK-Attestation Identity Key):專用於對TPM產生的數據(如 TPM 功能、PCR 暫存器的值等)進行簽名的不可遷移的密鑰。
4) 簽署密鑰(EK-Endorsement Key):平台的不可遷移的解密密鑰。在確立平台所有者時,用於解密所有者的授權數據和與產生 AIK 相關的數據。簽署密鑰從不用作數據加密和簽名。
5) 綁定密鑰(Binding Key):用於加密小規模數據(如對稱密鑰),這些數據將在另一個TPM平台上進行解密。
6) 繼承密鑰(Legacy Key):在 TPM 外部生成,在用於簽名和加密的時候輸入到TPM中,繼承密鑰是可以遷移的。
7) 鑑別密鑰(Authentication Key):用於保護引用TPM完成的傳輸會話的對稱密鑰。
在可信計算平台中,密鑰分層體系如圖所示。
圖 密鑰分層體系結構
SRK作為一級密鑰(也稱主密鑰) ,存儲在安全區域,用它對二級密鑰信息加密生成二級密鑰。依次類推,父節點加密保護子節點,構成整個分層密鑰樹結構。在密鑰分層樹中,葉子節點都是各種數據加密密鑰和實現數據簽名密鑰。這些動作都應該是連貫的密箱操作。相比之下,純軟體的加密系統難以做到密箱操作。但如果把主密鑰、加密算法等關鍵數據、程式固化在硬體設備TPM中,就能解決密箱操作的難題。