TPM 和遠端證明
我對這個問題有點不清楚:
支持遠端認證的 TPM 晶片。該機制的工作原理如下。在啟動時,主機計算一個測量列表 ML,該列表由啟動序列中涉及的軟體的雜湊序列組成,即 BIOS、引導載入程序和實現平台的軟體。ML 安全地儲存在主機的 TPM 中。為了證明平台,遠端方使用隨機數 nU 挑戰在主機上執行的平台。該平台要求本地 TPM 創建一條包含 ML 和 nU 的消息,並使用 TPM 的私有 EK 加密。主機將消息發送回遠端方,遠端方可以使用 EK 的相應公鑰對其進行解密,從而對主機進行身份驗證。通過檢查隨機數匹配並且 ML 對應於它認為可信的配置,
假設 TPM 在集群的一個節點中(在雲的基礎設施中)。我們知道在啟動期間 TPM 開始執行完整性測量:基本上有兩種方法;1-SRTM(測量的靜態信任根)(bios-bootloader-kernel)2-DRTM(測量的動態信任根)。(執行應用程序:這對我來說也不清楚)。
這些測量最終擴展到 TPM 並保存在 PCR 中。
使用者願意驗證雲平台的完整性,因此受信任的第三方必須為他驗證。最後用受信任/不受信任平台的響應來證明他。讓我們在第一個報價上應用它。
我的問題:
- 遠端證明是用於身份驗證還是驗證完整性?
- 認證是否等於平台的完整性?
- TTP 請求測量列表是那些意味著 SRTM 和 DRTM 協議的雜湊值的測量?
- 受信任的第三方如何驗證這些測量結果?
使用 TPM 的私有 EK 加密
您正在閱讀的文件有問題。用私鑰加密是無稽之談。私鑰可用於解密或簽名。在這裡,“簽名”的意思很明顯,而不是“加密”。這表明該文件的作者不知道他們在說什麼。我強烈建議閱讀更可靠的材料。
此外,EK 不用於簽署平台證明。那是一個AIK。使用 EK 簽署平台證明將違反隱私。作為 AIK 註冊協議的一部分,EK 在 TPM 內部用於解密數據。
關於軟體雜湊的部分是正確的。主 CPU 和 TPM 合作計算在主 CPU 上執行的所有程式碼的雜湊值。根據請求,TPM 可以簽署一條消息,上面寫著“在主 CPU 上執行的程式碼的雜湊是……”。此消息使用 AIK 簽名,這是一個只有 TPM 擁有私有部分的密鑰對。當驗證者想知道平台的狀態時,它會向 TPM 發送一個包含 nonce 的請求。隨機數包含在簽名的回復中。
$$ \mathsf{verifier} \rightarrow \mathsf{TPM}: \mathrm{nonce} \ \mathsf{TPM} \rightarrow \mathsf{verifier}: \mathrm{hash}, [\mathrm{nonce}, \mathrm{hash}, \ldots]{\mathrm{AIK}{\mathrm{priv}}} \ $$ 消息具有正確簽名的事實保證它是由 TPM 在過去的某個時間點生成的。正確簽名的消息包含 nonce 的事實保證了它是由 TPM 在驗證者生成 nonce 之後的某個時間點生成的:這可以防止重放攻擊。 有效的證明對平台進行身份驗證。此外,它保證平台處於某種狀態。僅此一點並不能說明平台的完整性。為了保證平台的完整性,驗證者必須知道平台狀態散列的正確值是什麼(或一組正確值,如果可能有多個值)。
一旦為 TPM 提供了 AIK 並且驗證者已註冊此 AIK,此協議就不需要受信任的第三方。然而,在實踐中,基礎設施通常會將驗證者與依賴方分開。依賴方是希望與平台進行通信的實體,只有在平台處於良好狀態時才願意這樣做。然而,依賴方不知道什麼是好的狀態,所以它依賴於一個受信任的第三方來執行驗證。