Windows 10 IoT 核心版 上的受信任平台模組 (TPM)
什麼是 TPM?
信賴平臺模組 (TPM)是密碼編譯協處理器,包括隨機數產生、密碼編譯密鑰的安全產生以及其使用限制的功能。 它也包含遠程證明和密封記憶體等功能。 TPM 的技術規格由信賴運算群組 (TCG) 驅動,可供公開使用。 最新版 TPM 2.0 (2014 年 10 月發行),是規格的重大重新設計,可新增新功能,並修正前 TPM 1.2 的弱點。
為什麼 TPM?
併入 TPM 的電腦可以建立密碼編譯金鑰並加以加密,以便只能由 TPM 解密。 此程式通常稱為 「包裝」 或 「系結」 金鑰,可協助保護密鑰免於洩漏。 每個 TPM 都有一個主要「包裝」金鑰,稱為儲存根密鑰,儲存在 TPM 本身內。 TPM 中建立之密鑰的私人部分絕不會公開給任何其他元件、軟體、程式或人員。
併入 TPM 的電腦也可以建立密鑰,不僅已包裝,而且會系結至特定平臺度量。 只有在建立密鑰時,這些平臺度量的值與建立索引鍵時的值相同時,才能解除包裝。 此程式稱為 「密封」 TPM 的金鑰。 解密金鑰稱為 「未密封」。 TPM 也可以密封和解除密封 TPM 外部產生的數據。 使用此金封金鑰和 BitLocker 磁碟驅動器加密等軟體,您可以鎖定數據,直到符合特定硬體或軟體條件為止。
使用 TPM 時,金鑰組的私人部分會與作業系統所控制的記憶體分開。 密鑰可以密封至 TPM,而且可以在金鑰未密封並釋放以供使用之前,對系統狀態的某些保證(可定義系統的「可信任性」進行保證)。 由於 TPM 會使用自己的內部韌體和邏輯線路來處理指令,因此不會依賴操作系統,也不會暴露在作業系統或應用程式軟體中可能存在的弱點。
TPM 架構
TPM 1.2 與 TPM 2.0 之間的差異。
TPM 規格已開發兩次。 它第一次從 1.1b 開發到 1.2,併入規格委員會所要求的/識別新功能。 這種特徵爬行形式的進化使最終的 TPM 1.2 規格非常複雜。 最終,SHA-1 的密碼編譯弱點(這是 TPM 1.2 中最強的商業演算法)被揭露,這導致了變更的需求。 TPM 架構從頭開始重新設計,因此 TPM 2.0 的設計更加整合且統一。
與先前 TPM 1.2 相比的變更和增強功能包括:
- 支援其他密碼編譯演算法
- 增強 TPM 對應用程式的可用性
- 增強的授權機制
- 簡化的 TPM 管理
- 增強平臺服務安全性的其他功能
注意
Windows IoT 核心版僅支援 TPM 2.0,且不支援過期的 TPM 1.2。
什麼是 TBS?
TPM 基底服務 (TBS) 功能是一項系統服務,允許透明共用 TPM 資源。 它會透過遠端過程調用(RPC),在相同實體機器上的多個應用程式之間共用 TPM 資源。 它會使用呼叫應用程式所指定的優先順序,將 TPM 存取集中到各個應用程式。
TPM 提供密碼編譯函式,其設計目的是在平臺中提供信任。 因為 TPM 是在硬體中實作,所以它有有限的資源。 TCG 會定義 TPM 軟體堆疊 (TSS),利用這些資源來為應用程式軟體提供受信任的作業。 不過,不會針對與可能也使用 TPM 資源的操作系統軟體並存執行 TSS 實作而建立任何佈建。 TBS 功能可藉由啟用與 TBS 通訊的每個軟體堆疊,以使用 TPM 資源檢查電腦上可能執行的任何其他軟體堆疊,來解決此問題。
Windows IoT 核心版上可用的 TPM 解決方案
關於軟體 TPM(sTPM)、韌體 TPM (fTPM)、離散 TPM (dTPM)的幾句話...
韌體 TPM (fTPM)
韌體 TPM (fTPM) 需要特殊處理器/SoC 支援,目前未在Raspberry Pi 2 或 3 上實作。 MinnowBoard Max 需要韌體 0.80 版或更高版本。 DragonBoard410c 預設會提供預設啟用的 fTPM 功能。
離散 TPM (dTPM)
離散 TPM (dTPM) 以各種方式視為最值得信任的解決方案。
Windows IoT 核心版上支持數個 dTPM 晶片和 SDK 模組的製造商:
製造商 網頁 模數類型 TPM 晶片 恒 Eonn TPM Evalboard 2.0 SLB9670 TPM Pi3g Pi3g.com Mass Product & Evalboard 2.0 SLB9670 TPM
軟體 TPM (sTPM)
軟體 TPM (sTPM) 也稱為 TPM 模擬器。 它與平台無關,在 Windows IoT 核心版上受到支援。
注意
sTPM 僅供開發之用,且不提供任何真正的安全性優點。
範例
- Urchin 連結庫範例本教學課程示範如何建立使用 Urchin 連結庫練習 TPM 功能的範例 C++ 應用程式。 Urchin 是衍生自 TPM 2.0 參考實作的規格相容連結庫。 它為用戶端提供封送處理/取消封送處理所有數據結構、正確計算授權、執行參數加密及進行稽核的功能。