TPM 證明

本文說明在裝置布建服務 (DPS) 中使用信賴平臺模組 (TPM) 證明布建裝置時所涉及的概念。 本文與讓裝置準備好進行部署的所有角色有關。

信賴平臺模組 (TPM) 是一種硬體安全性模組 (HSM)。 本文假設您使用的是離散、韌體或整合式 TPM。 軟體仿真的 TPM 非常適合用於原型設計或測試,但不會提供與離散、韌體或整合式 TPM 相同的安全性層級。 不建議在生產環境中使用軟體 TPM。

本文僅適用於使用 TPM 2.0 搭配 HMAC 金鑰支援的裝置及其簽署密鑰。 TPM 是信任運算群組的全產業 ISO 標準,您可以在完整的 TPM 2.0 規格或 ISO/IEC 11889 規格上深入瞭解 TPM。本文也假設您已熟悉公開和私鑰組,以及它們如何用於加密。

裝置布建服務裝置 SDK 會為您處理本文中所述的所有內容。 如果您使用裝置上的 SDK,就不需要實作 TPM 支援。 本文可協助您在概念上了解裝置布建時 TPM 安全性晶片發生什麼問題,以及其為何如此安全。

概觀

TPM 會使用稱為簽署金鑰 (EK) 的內容作為安全信任根目錄。 EK 對 TPM 而言是唯一的,而且變更它基本上會將裝置變更為新的裝置。

TPM 有另一種類型的密鑰,稱為記憶體根金鑰 (SRK)。 TPM 擁有者取得 TPM 擁有權之後,可能會產生 SRK。 取得 TPM 的擁有權是 TPM 指出「有人在 HSM 上設定密碼」的專屬方式。如果 TPM 裝置販售給新的擁有者,新的擁有者可以取得 TPM 的擁有權,產生新的 SRK。 新的 SRK 產生可確保先前的擁有者無法使用 TPM。 由於 SRK 對 TPM 擁有者而言是唯一的,因此 SRK 可用來將資料密封到該擁有者的 TPM 本身。 SRK 提供沙箱,供擁有者儲存其金鑰,並在裝置或 TPM 售出時提供可撤銷存取權。 這就像搬進一棟新房子:擁有權正在改變門上的鎖,並摧毀前一位業主(SRK)留下的所有傢俱,但你不能改變房子的位址(EK)。

設定裝置之後,其具有EK和SRK可供使用。

示範取得 TPM 擁有權的圖表。

採用 TPM 擁有權的特定步驟會因製造商、使用的 TPM 工具集和裝置操作系統而有所不同。

[裝置佈建服務] 會使用 EK (EK_pub) 的公用部分來識別和註冊裝置。 裝置廠商可以在製造或最終測試期間讀取 EK_pub,並將 EK_pub 上傳至佈建服務,以便在裝置連結至佈建時加以辨識。 裝置布建服務不會檢查 SRK 或擁有者,因此「清除」TPM 會清除客戶數據,但會保留 EK(和其他廠商數據),且裝置在連線至布建時仍會辨識裝置佈建服務。

證明程式

當具有 TPM 的裝置連線到裝置佈建服務時,服務會先針對儲存在註冊清單中的EK_pub檢查所提供的EK_pub。 如果EK_pubs不相符,則不允許布建裝置。 如果 EK_pubs 確實相符,服務會要求裝置透過 nonce 挑戰來證明 EK 私人部分的擁有權,這是用來證明身分識別的安全挑戰。 [裝置佈建服務] 會產生 nonce,並使用 SRK 加密它,接著使用 EK_pub 進行加密,這兩者都是在初始註冊呼叫期間由裝置所提供。 TPM 一律會保留 EK 安全的私人部分。 這可防止偽造,並確保 SAS 權杖安全地佈建到授權的裝置。

讓我們詳細逐步解說證明程式。

裝置要求 IoT 中樞指派

首先,裝置會連結到 [裝置佈建服務],並要求佈建。 這樣做時,裝置會提供服務註冊標識碼、識別碼範圍,以及 TPM 中的 EK_pub 和 SRK_pub。 服務會將加密的 nonce 傳回裝置,並要求裝置解密 nonce,並將之用以簽署 SAS 權杖,以再次連結並完成佈建。

裝置要求布建

Nonce 挑戰

裝置會取得 nonce,並使用 EK 和 SRK 的私人部分,將 nonce 解密到 TPM;nonce 加密的順序會將信任從不可變的 EK 委派給 SRK,如果新的擁有者取得 TPM 的擁有權,則 SRK 可能會變更。

解密 nonce

驗證 nonce 並接收認證

接著,裝置可以使用解密的 nonce 簽署 SAS 權杖,並使用已簽署的 SAS 權杖重新建立與 [裝置佈建服務] 的連線。 完成 Nonce 挑戰後,該服務便允許裝置進行佈建。

裝置重新建立裝置布建服務的連線,以驗證 EK 擁有權