共用方式為


受信任的執行環境 ACPI 設定檔

授權:Microsoft 同意授與您免費免費授權,以合理且不具辨別性條款為必要宣告授與貴使用者,以單獨進行、使用、銷售、供應專案以供銷售、匯入或散佈此規格的任何實作。 「必要宣告」是 Microsoft 擁有或 Microsoft 控制專利的宣告,技術上必須實作必要部分 (,其中也包含此規格之選擇性部分) 的必要元素,其中造成違規的功能會詳細描述,而不只是在此規格中參考。

1.0 背景

此規格會定義 TPM 2.0 裝置的 ACPI 裝置物件,以及與Windows 8所需的 ACPI 裝置物件相關聯的控制方法。 控制方法會實作相當於 TCG 實體存在 ACPI 介面、平臺重設攻擊防護介面的對等專案,以及選擇性的 ACPI 方法,將命令傳送至 TPM 2.0 裝置。

TPM2) (額外的靜態 ACPI 資料表可用來定義 TPM 2.0 裝置與 Windows 8 OS 之間的通訊機制。

注意

Microsoft 指的是信任的運算群組「TPM」。下一個字詞為 「TPM 2.0」

2.0 需求

此規格假設計算平臺支援 OS 與韌體環境之間 [ACPI09] 中指定的 ACPI 型通訊。

3.0 使用案例 (,例如僅)

3.1 傳送實體目前狀態命令

典型的使用案例如下所示:

  1. 在 OS 環境中,應用程式偵測到 TPM 2.0 裝置並未完全布建以供Windows 8使用。 (如果先前的 OS 映射布建 TPM 2.0.) 之後安裝新的 OS 映射,就會如何發生這種情況

  2. 應用程式會啟動 OS 精靈,讓 TPM 2.0 裝置可供使用。

  3. 精靈會透過 UI 與電腦系統管理員互動,並判斷系統管理員必須清除 TPM 2.0 裝置才能布建它,因為 TPM 2.0 裝置重設鎖定授權值無法使用。

  4. 為了清除 TPM 2.0 裝置,OS 要求 (,方法是執行 TPM 2.0 裝置物件的 ACPI 控制方法,) 韌體執行作業,以在下一次開機時清除 TPM 2.0 裝置,前提是實際提供使用者確認他們核准清除 TPM 2.0 裝置。

  5. OS 會重新開機平臺。

  6. 在開機程式的早期部分中,韌體會辨識 OS 的擱置要求,以清除 TPM 2.0 裝置。

  7. 韌體會將 UI 呈現給實際存在的使用者,要求他們採取一些動作以確認 TPM 2.0 裝置清除。

  8. 實際呈現的使用者會確認清除 TPM 2.0 裝置。

  9. 韌體會使用平臺階層授權清除 TPM 2.0 裝置。

  10. 如有必要,若要保存 TPM 2.0 裝置的清除作業,平臺會立即重新開機。

  11. 作業系統會開機。

  12. 如果最後) 一個 OS 要求清除 TPM 2.0) 裝置 (成功,則 OS 會透過 TPM 2.0 裝置上的 ACPI 控制方法 (, (b) 未由實際存在的使用者確認,或 (c) 有一些其他錯誤。 在下列專案中,我們假設 TPM 2.0 裝置已成功清除。

  13. OS 內的 TPM 2.0 裝置布建精靈會執行其他命令,讓裝置準備好供 Windows 使用。

3.2 在下一次開機時要求清除記憶體

此案例說明系統記憶體清除功能如何協助抵禦在平臺意外重新開機之後,收集系統記憶體的金鑰資料攻擊。

  1. 在 OS 內,具有 TPM 2.0 裝置之系統上的系統管理員會開啟 OS 磁片區的 BitLocker 功能。

  2. BitLocker 功能會呼叫 TPM 2.0 裝置 ACPI 控制方法,以設定 TCG 平臺重設攻擊防護規格中定義的 ClearMemory 位。

  3. BitLocker 功能會加密 OS 磁片區。

  4. 系統管理員會以螢幕鎖定自動離開系統。

  5. 惡意人員會在系統執行時竊取系統。

  6. 惡意人員會插入 USB 記憶杆,並快速移除系統電池並重新插入。

  7. 系統會在重新插入電池時啟動開機。

  8. 由於 ClearMemory 位先前已設定,所以韌體會在啟動平臺製造商未提供的任何程式碼之前清除整個系統記憶體。

  9. 惡意人員會在開機期間設定韌體以開機至 USB 裝置,即使 USB 裝置上的程式碼未正確簽署也一樣。

  10. USB 裝置上的程式碼會掃描系統記憶體中的 BitLocker 磁片區主要金鑰,但找不到。

    警告

    步驟 11 到 16 類似于先前的步驟,但使用 UEFI 介面而非 ACPI

  11. 惡意人員通常會嘗試開機系統。

  12. 由於使用 TPM 金鑰保護裝置啟用 BitLocker,因此這可讓 BootMgr「解除密封」OS 磁片區的磁片區主要金鑰,因為當 BootMgr 執行時,正確的度量會位於 TPM 2.0 裝置中。

  13. 開機會繼續進行 OS 登入畫面。

  14. 惡意人員會再次移除,然後從 USB 裝置重新插入電池並開機程式碼。

  15. 由於已設定 ClearMemory 位,因此系統韌體會在開機期間清除整個系統記憶體。

  16. 即使來自 USB 裝置的程式碼會掃描系統記憶體,OS 磁片區加密金鑰仍不在記憶體中。

3.3 向 TPM 2.0 裝置發出命令

此範例不適用於所有系統架構。

  1. Windows TPM 2.0 驅動程式想要對 TPM 2.0 裝置發出命令。

  2. Windows TPM 2.0 驅動程式會寫入 命令,以在 Windows TPM 2.0 驅動程式初始化期間,從稍早從 ACPI 定義的控制區域讀取實體位址。

  3. Windows TPM 2.0 驅動程式會執行 ACPI 控制項方法來執行 TPM 2.0 命令。

  4. Windows TPM 2.0 驅動程式會輪詢控制區域中的暫存器,直到指出 TPM 命令已完成為止。

  5. Windows TPM 驅動程式會從先前在 Windows TPM 驅動程式初始化期間從 ACPI 定義的控制區域讀取的實體位址讀取命令回應。

TPM 2.0 系統和裝置的 4.0 一般 ACPI 需求

4.1 電源考慮

ACPI D1/D2

TPM 2.0 裝置可能支援 ACPI D1 和/或 ACPI D2,但必須像在 D1 或 D2 中處於電源狀態 ACPI D0 一樣運作。

ACPI S3 (睡眠)

TPM 2.0 MAY 支援 S3,但必須由系統/平臺製造商控制裝置的 S3 低電源狀態進入和結束。

作業系統 (或其他在 OS 環境中執行的軟體) 不得將 TPM 2.0 裝置放在 S3 中,或造成 TPM 2.0 裝置從 S3 結束。 例如,如果 TPM 2.0 裝置位於匯流排上,OS 必須無法關閉導致 TPM 2.0 裝置進入 S3 的匯流排電源。

Windows 8 TPM 驅動程式會先嘗試發出TPM2_Shutdown命令,再輸入 S3 (睡眠) 。

如果硬體平臺支援 S3,且 TPM 在系統處於 S3 時不會保留其狀態,則平臺必須在 S3 繼續期間發出必要的TPM2_Init和TPM2_Startup (TPM_SU_STATE) 命令。 在進入 S3 之前,OS 可能尚未完成TPM2_Shutdown命令。 這可能會導致傳回TPM2_Startup (TPM_SU_STATE) 的結果傳回錯誤。 從 S3 繼續的系統韌體必須適當地處理TPM2_Startup錯誤。 例如,藉由停用透過硬體存取 TPM、發出TPM2_Startup (TPM_SU_CLEAR) 命令,以及藉由採取像是將分隔符號與錯誤摘要 (0x01) 延伸至 NDR 0 到 7 並鎖定 NV 索引等動作,安全地設定裝置。

系統必須考慮在 S3 期間經過的時間,方法是遞減 TPM 字典攻擊失敗計數, (TPM_PT_LOCKOUT_COUNTER) 系統在每個鎖定間隔 (TPM_PT_LOCKOUT_INTERVAL) 為 S3 的時間。 這可能需要平臺實作來提供待命電壓,以在 S3 或平臺期間保留 TPM 時鐘和/或狀態,也可以安全地提供系統處於低電源狀態時所耗用時間的相關資訊,讓 TPM 能夠可靠地更新其字典攻擊邏輯的授權失敗計數。

連線待命系統的低電源狀態

Windows 8在連線待命系統的進入和離開低電源狀態時,不會執行與 TPM 相關聯的任何其他動作。 每當系統進入並離開連線待命系統的低電源狀態時,平臺必須執行 TPM 所需的任何動作,就像在 D0 中一樣。 這可能需要平臺實作來提供待命電壓來為 TPM 時鐘和/或保留狀態提供電源。 或者,平臺可能需要安全地提供系統處於 TPM 低電源狀態時所耗用時間的資訊,因此 TPM 可以可靠地更新其字典攻擊邏輯的授權失敗計數。

系統關閉

系統應該藉由遞減 TPM 字典攻擊失敗計數來安全地考慮在完整關機期間經過的時間, (TPM_PT_LOCKOUT_COUNTER) 系統在每個鎖定間隔 (TPM_PT_LOCKOUT_INTERVAL) 的 S5。

4.2 ACPI 資料表

具有 TPM 2.0 裝置的系統必須提供具有硬體裝置識別碼的裝置物件資料表,以及 OS 廠商特定的靜態資料表, (TPM2) ,如下所示。

TPM2 資料表和 TPM 2.0 裝置物件必須在平臺寄送給客戶後持續運作。 (例如,韌體選項不得允許隱藏 TPM2 資料表或 TPM 2.0 裝置物件。) 例外狀況是,如果系統隨附非預設選項來提供 TPM 1.2 功能,而不是 TPM 2.0 功能,也就是 (。 為了與舊版作業系統相容,例如 Windows 7.) 在此情況下,TPM2 資料表和 TPM 2.0 裝置物件可能會透過 BIOS 組態選項和列舉移除已執行 TPM 1.2 的 。 注意:Windows 8的連線待命系統預設需要寄送,作業系統會顯示 TPM 2.0。 如需在硬體平臺上切換 TPM 2.0 與 TPM 1.2 之間的技術指引,請連絡 Microsoft。

4.3 TPM 2.0 裝置物件 ACPI 資料表

4.3.1 匯流排階層

Device Object 資料表必須位於 ACPI 命名空間中的 DSDT 資料表之下。TPM 2.0 裝置物件必須位於系統匯流排底下的 「root\_SB」。

4.3.2 硬體識別碼

實際的隨插即用硬體識別碼 (例如 TPM 2.0 裝置物件的_HID) 必須是 「MSFT0101」,或裝置必須具有 「MSFT0101」 的相容識別碼,而_HID可能是廠商特定的。

4.3.3 資源描述元

ACPI TPM 2.0 裝置物件必須宣告 TPM 2.0 裝置所使用的所有資源。

4.3.4 控制方法

4.3.4.1 平臺重設攻擊風險降低

系統必須針對 UEFI 實作 [TCG08] 的所有 ACPI 和 UEFI 相關部分。 裝置物件必須實作 [TCG08], 第 6 節中所定義的控制方法介面。 即使平臺在每次開機時無條件清除記憶體,也需要介面。 相較于 [TCG08] 的 TPM 2.0 裝置狀態,清除記憶體不可有條件地在 TPM 2.0 裝置 (狀態上為 [TCG08] ,如果 TPM 1.2 不是擁有) ,則不需要清除記憶體。 此外,必須實作 [TCG08] 第 3 節、第 5 節。 每個 ACPI 規格都必須實作_DSM查詢函式 (函式索引 0) 。 (注意:ACPI 4.0 規格中有關于 _DSM 方法傳回值的錯誤。_DSM方法的傳回值應該是包含 0x03.) 實作必須自動偵測順序 OS 關機,並清除這類事件的 ClearMemory 位。

TPM 2.0 的 UEFI 型 Arm 系統特別注意:在具有 TPM 2.0 的 UEFI 型 Arm 系統上,Windows 8會在每個開機上使用 UEFI 介面無條件地清除記憶體。 實作 ACPI 介面仍然需要,但介面可以實作,以不變更 ClearMemory 或 DisableAutoDetect 旗標的狀態。 (注意:Microsoft 建議根據 TCG 規格實作 ACPI 介面,因此呼叫 ACPI 介面會變更 ClearMemory 或 DisableAutoDetect.)

4.3.4.2 實體存在介面

系統必須根據下列額外附注實作 [TCG11] 中定義的規格:

  1. TCG 規格中的 TPM 使用應該與 TPM 2.0 裝置相同。

  2. 第 2 節中定義的控制項方法必須實作下列限制:

    1. 每個 ACPI 規格都必須實作_DSM查詢函式 (函式索引 0) 。 (注意:ACPI 4.0 規格中有關于 _DSM 方法傳回值的錯誤。_DSM方法的傳回值應該是包含 0x01FF.) 的緩衝區

    2. 實作必須傳回 「Get Platform-Specific Action to Transition to Pre-OS Environment」 的 「2: Reboot」 值。在重新開機的轉換時,必須發生 PPI 作業,而且應該在關機轉換時發生。

    3. 下列控制方法的實作是選擇性的:「提交 TPM 作業要求至預先 OS 環境」 (可能會傳回 「2:一般失敗」) 和「提交慣用的使用者語言」 (可能會傳回 「3:未實作」) 。

  3. 第 3 節中的需求必須實作下列修訂:

    1. BIOS 不需要為 NoPPIProvision 旗標提供持續性儲存體,因為它授權的作業與 TPM 2.0 裝置狀態無關。

    2. 表 2 的修訂如下:

      表 1:修訂的 PPI 表 2

      OperationValue

      作業名稱

      TPM 統計資料

      BIOS TPM Mgmt 旗標

      強制與選擇性

      需要實體存在確認時

      可能需要額外的開機週期

      0

      無作業

      M

      1 - 4

      無作業

      M

      5

      TPM2_ClearControl (NO) +

      TPM2_Clear

      X

      M

      NoPPIClear 為 FALSE

      X

      6-11

      無作業

      M

      12-13

      無作業

      O

      14

      TPM2_ClearControl (NO) +

      TPM2_Clear

      X

      M

      NoPPIClear 為 FALSE

      X

      15-16

      無作業

      M

      17

      SetNoPPIClear_False

      X

      O1

      18

      SetNoPPIClear_True

      X

      O1

      Always

      19-20

      無作業

      O2

      21-22

      TPM2_ClearControl (NO) +

      TPM2_Clear

      X

      M

      NoPPIClear 為 FALSE

      X

      23 - 127

      保留

      >=128

      廠商特定

      X

      X

      O

      X

      重要

      針對 SetNoPPIClear_False:如果 BIOS 實作標示為 「O1」 或 「O2」 的專案,則必須將它們實作為集合。 對於後續的「無作業」SetNoPPIClear_True,如果 BIOS 未實作作業 12,則不得實作作業 19 和 20。

    3. 表 3 的修訂如下:

      運算

      運算

      名稱

      BIOS 和其他 BIOS 動作傳送的 TPM 命令,以執行作業

      0

      無作業

      無作業

      1-4, 6-13, 15-16, 19-20

      無作業

      無作業。 不過,必須記住作業編號,如果從 OS 查詢結果,則必須傳回成功。

      5, 14, 21, 22

      清除

      TPM2_ClearControl (NO) +

      TPM2_Clear

      <PLATFORM RESET > * [*如果需要保存來自TPM2_CLEAR的 TPM 變更。 Microsoft 預期大部分系統上都是不必要的。]

      17

      SetNoPPIClear_False

      (需要有實體存在狀態以清除。)

      這項作業不會變更 TPM 狀態。

      將 BIOS TPM 管理旗標 NoPPIClear 清除為 FALSE。

      18

      SetNoPPIClear_True

      (不需要確認 clear.)

      這項作業不會變更 TPM 狀態。

      將 BIOS TPM 管理旗標 NoPPIClear 設定為 TRUE。

      23 - 127

      保留

      保留,請勿實作或使用

      >=128

      廠商特定

      對應至廠商特定作業的 TPM 命令

  4. 必須維護第 4 節的許可,才能在需要執行作業時,從實際存在的使用者取得確認,但實際的機制不需要按按鍵。 確認同意的金鑰或其他機制,由平臺製造商決定。

    Op

    運算

    名稱

    組態

    Text

    5、14、21 和 22

    清除

    要求變更設定以清除這部電腦的 TPM (信賴平臺模組)

    警告:清除會清除儲存在 TPM 上的資訊。 您將遺失所有已建立的金鑰,以及這些金鑰所加密資料的存取權。

    按 < CAK > 以清除 TPM

    按 < RK > 拒絕此變更要求並繼續

    18

    SetNoPPIClear_True

    要求進行設定變更,以允許作業系統清除電腦的 TPM (Trusted Platform Module) ,而不需要在未來要求使用者確認。

    注意:此動作不會清除 TPM,但透過核准此設定變更,未來清除 TPM 的動作將不需要使用者確認。

    警告:清除會清除儲存在 TPM 上的資訊。 您將遺失所有已建立的金鑰,以及這些金鑰所加密資料的存取權。

    按 < CAK > 以核准未來的作業系統要求,以清除 TPM

    按 < RK > 拒絕此變更要求並繼續

  5. 第 5 節提供資訊。

  6. 連線待命系統可能會將 NoPPIClear 硬式編碼為 TRUE,而不會實作作業 17 和 18。 這表示他們不需要實作實體目前狀態動作的任何確認對話方塊,因為沒有任何實體存在作業需要使用者確認。

  7. 韌體必須在將控制權傳遞給 Windows 開機管理員之類的初始程式載入器程式碼時,讓儲存體和簽署階層保持啟用狀態。

4.3.4.3 選擇性 ACPI Start 方法

注意:某些平臺可能會實作這個選擇性 ACPI 方法,以允許 OS 要求韌體執行或取消 TPM 2.0 命令。 ACPI Start 方法的使用取決於靜態 ACPI 資料表的 StartMethod 欄位 (請參閱第 4.4.) 如果靜態 ACPI 資料表的 StartMethod 欄位指出如何使用此方法,則必須實作 ACPI Start 方法。此處定義的 ACPI 函式應該位於_DSM控制方法物件中。 [注意:這不是 TPM2 ACPI 資料表中的控制方法。] 此處定義的_DSM方法必須實作如下:

UUID

修訂版

Function

說明

6bbf6cab-5463-4714-b7cd-f0203c0368d4

0

0

如 [ACPI09],第 9.14.1 節所述。

0

1

開始

函式啟動

輸入引數:

Arg0 (Buffer): UUID = 6bbf6cab-5463-4714-b7cd-f0203c0368d4
Arg1 (Integer): Revision ID = 0
Arg2 (Integer): Function Index = 1
Arg3 (Package): Arguments = Empty Package

傳回值:

型別︰整數

傳回值的描述:

0:成功

1:一般失敗

功能行為:

此函式會告知系統檢閱 TPM 2.0 裝置控制區域中的狀態暫存器,並採取適當的動作來執行或取消 TPM 2.0 命令。

函式未封鎖。 呼叫會立即傳回。 (請勿嘗試從 ACPI 方法內執行命令。AML 呼叫必須是 short.) 傳回值 0 時,已接受提交的命令,如果已設定 Cancel 欄位,則會由韌體執行或取消。 盡可能讓系統傳回 TPM 回應,而不是從此呼叫傳回一般失敗。 例如,現在無法處理命令,可以寫入TPM2_RC_RETRY的回應緩衝區,而且 START 欄位可以是 CLEARed。 如果命令因為已設定 Cancel 欄位而取消,這個方法可能會在回應緩衝區中撰寫TPM2_RC_Cancelled傳回碼,清除 [開始] 欄位並傳回值 0。 或者,如果設定 Cancel 欄位,方法可能會傳回 0 的值,而 TPM 2.0 裝置稍後可能會完成或取消命令,根據取消命令的需求。

傳回值 1 時,韌體無法讀取或處理要求。 除了傳回值之外,要求相當於 NO-OP。 例如 () 錯誤 OS 驅動程式要求在先前命令完成之前執行其他命令、 (b) 控制區域不在實體記憶體 [可能是因為記憶體損毀],或 (c) 命令或回應實體位址不存在。 傳回值 1 可能會導致 Windows TPM 2.0 驅動程式停止使用 TPM 2.0 裝置,直到下一個完整系統開機 (這不包括休眠/繼續迴圈) 。

注意:命令執行開始時,如果 OS 選擇取消目前執行的命令,則不會再次呼叫此方法。 (不過,在設定取消欄位時,一開始可能會針對命令呼叫控制方法。)

4.4 TPM2 靜態 ACPI 資料表

「RSDT」 ACPI 表格中列出的名為 「TPM2」 的 ACPI 資料表描述平臺的 TPM 2.0 硬體介面。 Windows TPM 2.0 驅動程式會使用此表格來判斷它與 TPM 2.0 裝置通訊的方式。 下表說明支援此介面所需的 ACPI 資料表參數。

表 3:TPM2 ACPI 資料表配置

欄位

位元組長度

位元組位移

描述

標頭

簽名

4

00h

'TPM2'。 TPM 2.0 裝置硬體介面表格的簽章

長度

4

04h

資料表的長度,以位元組為單位,包括標頭,從位移 0 開始。 此欄位用來記錄整個資料表的大小。

修訂版

1

08h

此資料表的修訂,包括其所參考的資料和結構。 如果這個 所參考的任何結構 (例如控制區域) ,此修訂必須變更。 值 03h。

總和檢查碼

1

09h

整個資料表,包括總和檢查碼欄位,必須新增至零,才能視為有效。

OEM 識別碼

6

0Ah

每個 ACPI 規格的 OEM 識別碼。 OEM 提供的字串,可識別 OEM (這可能是晶片組廠商) 。

OEM 簎翐礹蜞頇塈

8

10h

OEM 資料表識別碼是製造商型號識別碼, (由由 「OEM ID」 所識別的 OEM 指派;可能是晶片組廠商) 。

OEM 摷濻

4

18h

指定 OEM 資料表識別碼的 OEM 修訂。 根據 ACPI,「[an] OEM 提供的修訂編號。 較大的數位會假設為較新的修訂。」

建立者識別碼

4

1Ch

用來建立資料表的公用程式之廠商識別碼。 對於包含定義區塊的資料表,這是 ASL 編譯器的識別碼。

建立者修訂

4

20h

用來建立資料表的公用程式之修訂。 對於包含定義區塊的資料表,這是 ASL 編譯器的修訂。

Flags

4

24 小時

保留

必須一律為零

控制區域的位址

8

28h

控制區域的實體位址。 可能是在 TPM 2.0 裝置記憶體中,或在開機期間由系統保留的記憶體中。 TPM 2.0 驅動程式會在整個開機週期中保留此位址的知識,包括休眠和繼續迴圈。 如果系統未使用 [控制區域],這個值必須是全部零。

Start 方法

4

30h

start 方法選取器會決定 Windows TPM 2.0 驅動程式用來將 TPM 2.0 命令與裝置進行通訊的機制,並通知 TPM 2.0 裝置命令可供處理。 此欄位可能包含下列其中一個值:

描述

0

保留的。

1

保留 (廠商特定)

2

使用 ACPI Start 方法。

3-5

6

保留 (廠商特定)

保留給記憶體對應 I/O 介面 (TIS 1.2+Cancel) 。 此選項不符合硬體認證規範Windows 8。 使用此選項需要經過核准的Windows 8 WHLK 應變要求,以進行標誌認證。 如需詳細資訊,請連絡 Microsoft。

7

8

使用命令回應緩衝區介面。

使用命令回應緩衝區介面搭配 ACPI Start 方法。

保留的。

 

平臺特定參數

變動

34h

平臺特定參數的內容取決於此系統的 TPM 2.0 裝置介面所使用的啟動機制。 此欄位包含可用來起始命令處理的值。 此資訊可能是廠商特定的。 若為 2 或 6 的 Start Method 值,則不會使用 欄位,且 Byte Length 為零。

4.4.1 控制區域內容

控制區域結構包含狀態欄位,以及其他控制位/欄位和一或多個位址。 控制區域包含命令緩衝區的實體位址和回應緩衝區的實體位址。

並非所有 TPM 2.0 介面實作都使用控制區域,例如 Start Method 值 6 不會使用控制區域,而且本節中的資訊不適用於平臺。

控制區域必須位於 ACPI AddressRangeReserved 記憶體中。

下表顯示 [控制區域] 結構,除非另有指定,否則控制區域的所有存取都是以小到尾格式完成。

表 4:控制區域配置

欄位

位元組長度

Offset

描述

狀態欄位

TPM 2.0 狀態欄位

保留

4

00h

保留的。 (必須是零。)

錯誤

4

04h

由 TPM 2.0 設定,以指出錯誤狀況

取消

4

08h

由 DRIVER 設定為中止命令處理

開始

4

0Ch

由 DRIVER 設定,表示命令可供處理。

中斷控制項

8

10h

保留的。 (必須是零。)

命令大小

4

18 小時

命令緩衝區的大小

命令

8

1Ch

此欄位包含命令緩衝區的實體位址。 請注意,實際的命令緩衝區 (不是命令緩衝區的實體位址,) 是以 TCG 所要求的大型格式。

回應大小

4

24 小時

回應緩衝區的大小

回應

8

28 小時

此欄位包含回應緩衝區的實體位址。 請注意,實際的回應緩衝區 (不是回應緩衝區的實體位址,) 是以 TCG 所要求的大型格式。

TPM 2.0 驅動程式會在作業系統初始化期間讀取下列資訊一次:

  1. 控制區域的實體位址

  2. 命令緩衝區的大小

  3. 命令緩衝區的實體位置

  4. 回應緩衝區的大小

  5. 回應緩衝區的實體位置

對於使用控制區域的系統 (亦即 Start Method 值不等於 6) 並支援休眠和繼續,上述五個值必須在整個休眠和繼續迴圈之間保持常數。

4.4.1.1 錯誤

TPM 2.0 裝置可能會設定此狀態。 它只能在 Start 為 SET 時寫入此狀態。 TPM 2.0 裝置緊接在 TPM 2.0 裝置之後,即會將 [開始] 值設為 CLEAR。 除非 [開始] 欄位是 CLEAR,否則 Windows TPM 2.0 驅動程式將不會讀取 [錯誤] 欄位。

[錯誤] 欄位的 SET 值會被視為 TPM 2.0 裝置或其硬體介面的一般錯誤。 任何 SET 值都會導致取消目前的命令。 命令必須回復,因此 TPM 2.0 裝置會保持一致狀態。

對於具有 ACPI Start 方法的裝置,此欄位只應該用於無法提供回應碼的錯誤。 例如:回應緩衝區不在實體記憶體中。 當此欄位為 SET 時,Windows TPM 2.0 驅動程式可能會停止使用 TPM 2.0 裝置。

ExitBootServices 之後此欄位的初始值必須反映裝置是否正常運作。

4.4.1.2 取消

Windows TPM 2.0 驅動程式可能會設定此欄位,以要求終止目前命令的 TPM 2.0 裝置處理。 Windows TPM 2.0 驅動程式不會叫用 Start 方法來起始取消要求的處理。

當 Windows TPM 2.0 驅動程式設定了 Cancel,且 TPM 2.0 裝置正在處理命令時,TPM 2.0 裝置將會在最早的便利點停止處理目前的命令。 對於大部分的命令,TPM 2.0 裝置預期會完成命令並提供一般回應。 對於長時間執行 (的命令,例如 RSA 金鑰產生) ,TPM 2.0 裝置可能會結束TPM_RC_CANCELLED。 TPM 2.0 裝置必須完成或在 90 秒內取消命令。 (通常大部分的 TPM 2.0 命令應該在少於 500 毫秒內完成,但 RSA 金鑰產生命令可能需要較長的時間,且命令取消應該在 200 毫秒內發生)

當 [開始] 欄位為 CLEAR 時,Windows TPM 2.0 驅動程式可能會清除此值。 ExitBootServices 之後此欄位的初始值必須是 CLEAR。

4.4.1.3 開始

Windows TPM 2.0 驅動程式可能會設定此狀態,以指出命令緩衝區中已放置新的命令。 Windows TPM 2.0 驅動程式可能會叫用 Start 方法來起始命令的處理。 TPM 2.0 裝置會在完成處理命令時清除此狀態。

Windows TPM 2.0 驅動程式可能會在 Start 方法調用失敗時清除此狀態。

ExitBootServices 之後此欄位的初始值必須是 CLEAR。

4.4.1.4 命令

這是 Windows TPM 2.0 驅動程式將寫入要執行的命令的實體位址。 Windows TPM 2.0 驅動程式永遠不會寫入大於 「命令大小」的命令。

除非 [開始] 欄位為 CLEAR,否則 Windows TPM 2.0 驅動程式不得寫入此記憶體區域。 請注意,位址是在控制區域中以小端格式指定,但實際的命令緩衝區是以 TCG 所要求的大型端格式指定。

4.4.1.5 回應

這是 Windows TPM 2.0 驅動程式將讀取命令回應的實體位址。 Windows TPM 2.0 驅動程式永遠不會讀取大於「回應大小」的回應。

Windows TPM 2.0 驅動程式只會在 [開始] 欄位從 SET 變更為 CLEAR 且 [錯誤] 為 CLEAR 之後讀取回應。 請注意,位址是在控制區域中以小端格式指定,但實際的回應緩衝區是以 TCG 所要求的大型格式指定。

4.5 控制區域介面定義

對於使用控制區域作為 TPM 2.0 介面的硬體平臺,本節和第 4.4 節中的資訊會說明 TPM 2.0 驅動程式與硬體的互動。 使用控制區域的系統範例是 TPM2 資料表中 Start Method 值為 2 的系統。

4.5.1 狀態組合

表 5 描述 Windows TPM 2.0 驅動程式所做的變更預期行為。 請注意,只允許某些組合。 只記載允許的組合和變更。 所有其他組合都無效。 Windows TPM 2.0 驅動程式沒有動作的欄位變更表示 TPM 2.0 裝置或 ACPI Start 方法已變更欄位。

標示為 '0' 的狀態表示此欄位為 CLEAR。 標示為 '1' 的狀態表示此欄位為 SET。 標示為 '?' 的狀態表示此欄位的值可能是 CLEAR 或 SET。 狀態欄位縮寫為:'ERR' - 錯誤、'CCL' - 取消和 'STR' - 開始。 您可以透過 Windows TPM 2.0 驅動程式或 TPM 2.0 裝置介面來撰寫欄位,此介面會在動作資料行中詳述。

|---

目前狀態

---|

|---

已寫入欄位

---|

|---

下一個狀態

---|

TPM 2.0 裝置介面所採取的動作

#

ERR

CCL

STR

ERR

CCL

STR

ERR

CCL

STR

1

0

1

0

-

0

-

0

0

0

Windows TPM 2.0 驅動程式 CLEAR 為下一個命令準備控制區域的值。 只有在 START 為 CLEAR 時,Windows TPM 2.0 驅動程式才能清除 Cancel 值。

(TPM 2.0 裝置不得寫入 [取消] 欄位。)

2

0

0

0

-

-

1

0

0

1

Windows TPM 2.0 驅動程式會 SET Start 值,指出命令存在於 [命令] 區域中。

Windows TPM 2.0 驅動程式可能會呼叫 ACPI Start 方法來起始命令的執行。 完成 ACPI Start 方法時,TPM 2.0 裝置必須在 90 秒內完成命令並清除 [開始] 欄位。 超過時間限制可能會導致 Windows TPM 2.0 驅動程式假設 TPM 2.0 裝置已停止回應。

3

0

?

1

-

-

0

0

?

0

當 TPM 2.0 裝置完成處理命令或取消命令時,TPM 2.0 裝置 CLEAR[開始] 欄位。

如果取消命令,則會將傳回碼為TPM_RC_CANCELLED的回應放入回應緩衝區,而 Start 為 CLEARed。

當 [開始] 欄位為 CLEAR 時,Windows TPM 2.0 驅動程式可能會讀取回應緩衝區。 當 [開始] 欄位為 SET 時,Windows TPM 2.0 驅動程式不得讀取回應緩衝區。

4

0

0

1

-

1

-

0

1

1

Windows TPM 2.0 驅動程式 SET Cancel 表示 TPM 2.0 裝置取消目前的命令。 一般而言,下一個方便點應該取消長時間執行的命令。 短執行命令可能已完成。 具體而言,TPM 2.0 裝置必須在 [取消] 欄位設定後 90 秒內清除 [開始] 欄位。 (良好的效能目標為 200 毫秒,而不是 90 秒。) 注意:當呼叫 ACPI Start 方法時,可能會設定 Cancel 欄位,因為 OS 內的一個執行緒可能會在另一個執行緒叫用 ACPI Start 方法之前設定 [取消] 欄位。

5

0

?

1

1

-

-

1

?

1

TPM 2.0 裝置指出裝置中的錯誤狀況。 TPM 2.0 裝置的狀態就像從未啟動命令執行一樣。 Windows TPM 2.0 驅動程式會將此值視為 TPM 2.0 裝置的一般失敗,並取消命令的處理。

6

1

?

1

-

-

0

1

?

0

TPM 2.0 裝置 CLEAR[開始] 欄位緊接在 [錯誤] 欄位之後。

當 [開始] 欄位為 CLEAR 時,Windows TPM 2.0 驅動程式只會檢查 [錯誤] 欄位;如果命令執行或取消未在必要的時間範圍內發生,則為 。 當 [錯誤] 欄位為 SET 時,Windows TPM 2.0 驅動程式可能會停止使用 TPM 2.0 裝置。

4.5.2 使用 ACPI Start 方法時的狀態圖表

此狀態圖表僅供參考之用。 行為的規範描述是上一節中的文字。 如果遺漏或模棱兩可的狀態轉換,請參閱上述文字。

使用 acpi start 方法時的 tpm 2.0 裝置狀態

圖 1:使用 ACPI Start 方法時的 TPM 2.0 裝置狀態

注意

() 請注意,多個平行線程可以同時與控制區域互動。 例如:一個執行緒可以藉由設定 Start 欄位,然後發出 Start 方法來起始命令。 另一個執行緒可以平行設定 [取消] 欄位。 因此,在設定 [開始] 欄位之後設定 [取消] 欄位的可能性,但在發出 Start 方法之前。 (b) Windows TPM 2.0 驅動程式可能會回應與描述不同的錯誤狀況。 例如,當逾時達到時,它可能會轉換成錯誤狀態。

4.5.3 沒有 ACPI Start 方法的狀態圖表

此狀態圖表僅供參考之用。 行為的規範描述是上一節中的文字。 如果有狀態轉換遺失或模棱兩可,請參閱上述文字。

沒有 acpi start 方法的 tpm 2.0 裝置狀態

圖 2:沒有 ACPI Start 方法的 TPM 2.0 裝置狀態

4.6 記憶體對應 I/O 介面

對於使用記憶體對應 I/O 介面的硬體平臺,本節和第 4.4 節中的資訊說明 TPM 2.0 驅動程式與硬體的互動。 使用記憶體對應 I/O 介面的系統範例是 TPM2 資料表中 Start Method 值為 6 的系統。

4.6.1 TCG TPM 介面規格需求

下列各節的系統必須符合 [TCG12] 中的 TPM 1.2 硬體介面需求:

第 9.1 節:TPM 位置層級

第 9.2 節:位置使用

第 9.3 節:每個登錄的本機使用量

第 10 節:TPM 暫存器空間

第 11 節:系統互動和流程

例外:第 11.2.4 節的所有失敗模式

第 11.2.5 節除外:命令持續時間,規範專案 2

除了第 11.2.6 節的所有專案:逾時

除了第 11.2.8 節的所有專案:自我測試和早期平臺初始化

除了第 11.2.9 節的所有專案:輸入緩衝區大小

第 11.2.10 節除外:錯誤、規範專案 2c 和 3。

第 13 節:TPM 硬體通訊協定

如需 [TCG12] 的未來草稿規格,請連絡 Microsoft。

4.6.2 支援取消命令

Windows 需要 TPM 2.0 裝置,才能使用記憶體對應 I/O 介面來允許取消 TPM 2.0 命令,其方式如下所述。

先前未使用的 STS 暫存器位 24 定義為僅限寫入,稱為 commandCancel。

在命令執行階段期間,將 '1' 寫入 commandCancel 可能會取消目前正在執行的命令,而且必須傳迴響應。 回應會指出命令是否已取消, (沒有 TPM 2.0 狀態變更,但傳回取消回應碼TPM_RC_CANCELLED) 或完成, (傳回一般 TPM 2.0 回應,表示命令) 的結果。 當 TPM 不是處於命令執行狀態時,必須忽略寫入命令Cancel 登錄。

4.6.3 其他需求

  1. 所有 TPM 命令都必須在最多 90 秒內完成。

  2. 如果 TPM 2.0 驅動程式要求取消命令,則必須在 90 秒內完成或取消。

  3. 必須實作下列 TIMEOUT 值:TIMEOUT_A = 1 秒,TIMEOUT_B = 2 秒,TIMEOUT_C = 1 秒,TIMEOUT_D = 1 秒。

  4. 輸入緩衝區大小下限必須0x500 (或更大的) 。

5.0 參考

[ACPI09]

「進階設定和電源介面規格」4.0 版,2009 年 6 月 16 日。

[TCG08]

信賴運算群組「TCG 平臺重設攻擊風險降低規格」,2008 年 5 月 15 日 1.0 版。

[TCG11]

信賴運算群組「TCG 實體存在介面規格」,2011 年 2 月 10 日 1.20 版。

[TCG12]

信賴運算群組:「PC 用戶端工作組電腦特定 TPM 介面規格 (TIS) 1.21 版,修訂 1.00。