Xen 虛擬 TPM 介面¶
作者:Matthew Fioravante (JHUAPL), Daniel De Graaf (NSA)
本文件介紹了 Xen 的虛擬可信平臺模組 (vTPM) 子系統。 假定讀者熟悉構建和安裝 Xen、Linux,並且基本瞭解 TPM 和 vTPM 概念。
簡介¶
這項工作的目標是為虛擬客戶作業系統(在 Xen 術語中,DomU)提供 TPM 功能。 這允許程式以與在物理系統上與 TPM 互動相同的方式在虛擬系統中與 TPM 互動。 每個客戶機都有自己唯一的、模擬的軟體 TPM。 但是,每個 vTPM 的機密(金鑰、NVRAM 等)都由 vTPM 管理器域管理,該域將機密密封到物理 TPM。 如果建立這些域(管理器、vTPM 和客戶機)的過程是可信的,則 vTPM 子系統會將信任鏈從硬體 TPM 擴充套件到 Xen 中的虛擬機器。 vTPM 的每個主要元件都實現為一個單獨的域,提供由虛擬機器監控程式保證的安全隔離。 vTPM 域在 mini-os 中實現,以減少記憶體和處理器開銷。
此 mini-os vTPM 子系統構建在 IBM 和 Intel 公司之前完成的 vTPM 工作之上。
設計概述¶
vTPM 的架構如下所述
+------------------+
| Linux DomU | ...
| | ^ |
| v | |
| xen-tpmfront |
+------------------+
| ^
v |
+------------------+
| mini-os/tpmback |
| | ^ |
| v | |
| vtpm-stubdom | ...
| | ^ |
| v | |
| mini-os/tpmfront |
+------------------+
| ^
v |
+------------------+
| mini-os/tpmback |
| | ^ |
| v | |
| vtpmmgr-stubdom |
| | ^ |
| v | |
| mini-os/tpm_tis |
+------------------+
| ^
v |
+------------------+
| Hardware TPM |
+------------------+
- Linux DomU
想要使用 vTPM 的基於 Linux 的客戶機。 可能有多個這樣的客戶機。
- xen-tpmfront.ko
Linux 核心虛擬 TPM 前端驅動程式。 此驅動程式為基於 Linux 的 DomU 提供 vTPM 訪問。
- mini-os/tpmback
Mini-os TPM 後端驅動程式。 Linux 前端驅動程式連線到此後端驅動程式,以促進 Linux DomU 與其 vTPM 之間的通訊。 此驅動程式也由 vtpmmgr-stubdom 使用,以與 vtpm-stubdom 通訊。
- vtpm-stubdom
實現 vTPM 的 mini-os 樁域。 在正在執行的 vtpm-stubdom 例項和系統上的邏輯 vtpms 之間存在一對一對映。 vTPM 平臺配置暫存器 (PCR) 通常全部初始化為零。
- mini-os/tpmfront
Mini-os TPM 前端驅動程式。 vTPM mini-os 域 vtpm-stubdom 使用此驅動程式與 vtpmmgr-stubdom 通訊。 此驅動程式也用於與 vTPM 域通訊的 mini-os 域中,例如 pv-grub。
- vtpmmgr-stubdom
實現 vTPM 管理器的 mini-os 域。 只有一個 vTPM 管理器,它應該在機器的整個生命週期內執行。 此域調節對系統上物理 TPM 的訪問,並保護每個 vTPM 的持久狀態。
- mini-os/tpm_tis
Mini-os TPM 1.2 版 TPM 介面規範 (TIS) 驅動程式。 vtpmmgr-stubdom 使用此驅動程式直接與硬體 TPM 通訊。 透過將硬體記憶體頁對映到 vtpmmgr-stubdom 來促進通訊。
- 硬體 TPM
焊接在主機板上的物理 TPM。
與 Xen 整合¶
使用 Xen 4.3 中的 libxl 工具棧在 Xen 中添加了對 vTPM 驅動程式的支援。 有關設定 vTPM 和 vTPM 管理器樁域的詳細資訊,請參閱 Xen 文件 (docs/misc/vtpm.txt)。 樁域執行後,以與域配置檔案中的磁碟或網路裝置相同的方式設定 vTPM 裝置。
為了使用諸如 IMA 等需要在 initrd 之前載入 TPM 的功能,xen-tpmfront 驅動程式必須編譯到核心中。 如果不使用此類功能,則可以將驅動程式編譯為模組並照常載入。