信賴平台模組

信賴平台模組，或受信任的平台模塊（Trusted Platform Module，縮寫：TPM），是一項安全密碼處理器的國際標準，旨在使用設備中集成的專用微控制器（安全硬體）處理設備中的加密密鑰。TPM的規範 (技術標準)由稱為可信計算組織（TCG）的資訊業聯合體編寫。國際標準化組織（ISO）和國際電工委員會（IEC）已於2009年將規範標準化為ISO/IEC 11889。

中華人民共和國商用密碼產品銷售管理以前規定「任何單位或個人不得銷售境外的密碼產品」，因此早期市場銷售的資訊設備不搭載TPM。

## 歷史

可信平台模塊（TPM）由一個名為可信計算組織（TCG）的資訊業聯合體構思。它發展成為《TPM主要規範版本1.2》（TPM Main Specification Version 1.2），該規範於2009年由國際標準化組織（ISO）和國際電工委員會（IEC）標準化，編號為ISO/IEC 11889:2009。《TPM主要規範版本1.2》版本修訂116於2011年3月3日完成修訂並最終確定。

2014年4月9日，可信計算組織宣布對其規範進行重大升級，命名為《TPM庫規範2.0》（TPM Library Specification 2.0）。該組織繼續致力於該標準的工作，包括勘誤表、演算法添加和新命令，其最新版本於2019年11月發布，版本號為2.0。該版本成為ISO/IEC 11889:2015標準。

當新版本發布時，可信計算組織將其分為多個部分。每個部分都包含一個文檔，這些文檔構成了新TPM規範的全部內容。

- 第1部分：架構（更名自「設計原則」）
- 第2部分：TPM的結構
- 第3部分：命令
- 第4部分：支持例程（增加於TPM 2.0）

## 概述

可信平台模塊（TPM）提供：

- 硬體隨機數生成器。
- 用於安全生成有限用途的加密密鑰的設施。
- 遠程認證：創建硬體和軟體配置的幾乎不可偽造的哈希密鑰摘要。可以使用哈希值來驗證硬體和軟體是否已被更改。負責對設置進行哈希處理的軟體決定摘要的範圍。
- 後期綁定：數據使用TPM綁定密鑰進行加密，TPM綁定密鑰是從存儲密鑰派生的唯一RSA密鑰。包含TPM的電腦可以創建加密密鑰並對其進行加密，以便只有TPM才能解密它們。此過程通常稱為包裝或綁定密鑰，有助於保護密鑰不被洩露。每個TPM都有一個主包裝密鑰，稱為存儲根密鑰，它存儲在TPM本身中。使用者級RSA密鑰容器與特定使用者的Windows使用者配置文件一起存儲，可用於加密和解密在該特定使用者身份下運行的應用程式的資訊。
- 密封存儲：指定要解密（解封）數據的TPM狀態。
- 其他用於解密（解封）數據的可信計算功能。

電腦程式可以使用TPM進行硬體設備的身份驗證，因為每個TPM晶片在生產時都燒錄了一個唯一的密鑰背書密鑰 （EK）。嵌入硬體的安全性比純軟體解決方案提供了更多保護。在某些國家/地區，其使用受到限制。

## 用途

### 平台完整性

TPM的主要用途是確保平台的完整性。在這種情況下，「完整性」意味著「按預期運行」，「平台」是指任何電腦設備，無論其作業系統如何。這是為了確保引導過程從硬體和軟體的可信組合開始，並持續到作業系統完全啟動並運行應用程式。

當使用TPM時，固件和作業系統負責確保完整性。

例如，統一可擴展固件接口（UEFI）可以使用TPM來形成信任錨：TPM包含多個平台配置寄存器（PCR），允許安全存儲和報告與安全相關的指標。這些指標可用於檢測先前配置的更改並決定如何繼續。此類用例可以在Linux統一密鑰設置（LUKS）、 BitLocker和PrivateCore vCage記憶體加密中找到。（見下文。）

通過TPM實現平台完整性的另一個示例是使用Microsoft Office 365許可和Outlook Exchange。

TPM用於平台完整性的另一個例子是可信執行技術（TXT），它創建了一個信任鏈。它可以遠程證明電腦正在使用指定的硬體和軟體。

### 磁碟加密

全磁碟加密實用程序（例如dm-crypt）可以使用此技術來保護用於加密電腦存儲設備的密鑰，並為包括固件和引導扇區在內的可信引導路徑提供完整性身份驗證。

### 其他用途和問題

任何應用程式都可以將TPM晶片用於：

- 數字版權管理（DRM)
- Windows Defender
- Windows域登錄
- 軟體許可的保護和執行
- 防止網路遊戲作弊

TPM還有其他用途，其中一些會引發隱私問題。TPM的「物理存在」（physical presence）功能解決了部分此類問題，它要求在設備控制台前進行激活、停用、清除或更改TPM所有權等操作時，需要BIOS/UEFI級別的確認。

### 機構使用

美國國防部（DoD）規定「為支持國防部而採購的新電腦資產（例如，伺服器、台式機、筆記型電腦、瘦客戶端、平板電腦、智慧型手機、個人數字助理、行動電話）將包括TPM 1.2或更高版本，其中國防資訊系統局（DISA）安全技術實施指南（STIG）要求，並且此類技術可用。」國防部預計TPM將用於設備識別、身份驗證、加密和設備完整性驗證。

## TPM實現

### 筆記型電腦

2006年，部分新款筆記型電腦開始內置TPM晶片。之後，這些概念的實現可以與電腦中的主板晶片或其他使用TPM的設備（如手機）共置（co-located）。在PC上，LPC總線或串行外設接口（SPI）總線用於連接到TPM晶片。

可信計算組織（TCG）已經認證了由英飛凌科技、新唐科技和意法半導體製造的TPM晶片，並已將TPM供應商ID分配給超威半導體、愛特梅爾、博通、IBM、英飛凌、英特爾、聯想、美國國家半導體、Nationz Technologies、新唐科技、高通、瑞昱半導體、標準微系統公司、意法半導體、三星、Sinosun、德州儀器和華邦電子。

### TPM 2.0實現

TPM 2.0有五種不同實現類型（按安全性從高到低排列）：

- 獨立TPM是在其自己的防篡改半導體封裝中實現TPM功能的專用晶片。它們是最安全的，通過了FIPS-140認證，具有3級物理安全，相對於軟體中實現的例程，它們對攻擊的抵抗力更強，並且它們的封裝需要實現一定的防篡改能力。例如，汽車制動控制器中的TPM通過複雜的方法防止黑客入侵。
- 集成TPM是另一個晶片的一部分。雖然它們使用可以抵抗軟體錯誤的硬體，但它們不需要實現防篡改功能。英特爾已在其部分晶片組中集成了TPM。
- 固件TPM（fTPM）是基於固件（例如UEFI）的解決方案，在CPU的可信執行環境中運行。英特爾、AMD和高通已經實現了固件TPM。
- 虛擬TPM（vTPM）由虛擬機內部運行的軟體隱藏的隔離執行環境中的虛擬機監控程序提供並依賴於該程序，以保護其代碼免受虛擬機中軟體的攻擊。它們可以提供與固件TPM相當的安全級別。谷歌雲平台已經實現了vTPM。
- 軟體TPM是TPM的軟體仿真器，其運行時獲得的保護不超過作業系統中常規程序獲得的保護。它們完全依賴於運行環境，因此它們提供的安全性不超過正常執行環境可以提供的安全性。它們對於開發目的很有用。

### 開源實現

TPM 2.0規範的官方TCG參考實現由微軟開發。它在BSD許可證下獲得許可，並且原始碼可在GitHub上獲得。

2018年，英特爾開源了其可信平台模塊2.0（TPM2）軟體棧，支持Linux和Microsoft Windows。原始碼託管在GitHub上，並在BSD許可證下獲得許可。

英飛凌資助開發了一個開源TPM中間件，該中間件符合TCG的軟體棧（TSS）增強系統API（ESAPI）規範。它由弗勞恩霍夫協會安全資訊技術研究所（SIT）開發。

IBM的軟體TPM 2.0是TCG TPM 2.0規範的實現。它基於TPM規範第3部分和第4部分以及微軟捐贈的原始碼。它包含完成實現的其他文件。原始碼託管在SourceForge和GitHub上，並在BSD許可證下獲得許可。

2022年，AMD宣布，在某些情況下，他們的fTPM實現會導致性能問題。BIOS更新中提供了修復程序。

## TPM 1.2與TPM 2.0

雖然TPM 2.0涵蓋了許多相同的用例並具有相似的功能，但細節有所不同。TPM 2.0不向後兼容TPM 1.2。

規範｜TPM 1.2｜TPM 2.0

架構｜完整的規範旨在包含一個特定於平台的保護配置文件，該配置文件引用了一個通用的三部分TPM 1.2庫。實際上，只為TPM 1.2創建了一個PC客戶端保護配置文件。PDA和蜂窩的保護配置文件原本打算定義，但從未發布。｜完整的規範包含一個特定於平台的規範，該規範引用了一個通用的四部分TPM 2.0庫。特定於平台的規範定義了該平台的庫的哪些部分是強制性的、可選的或禁止的；並詳細說明了該平台的其他要求。特定於平台的規範包括PC客戶端，行動裝置，和Automotive-Thin。

演算法｜SHA-1和RSA必需。AES可選。三重DES曾經是早期版本TPM 1.2中的可選演算法，但已從TPM 1.2版本103中刪除。PKCS#1中定義的MGF1基於哈希的掩碼生成函數是必需的。｜PC客戶端平台TPM配置文件（PTP）規範要求使用SHA-1和SHA-256進行哈希處理；RSA、使用NIST P-256曲線的ECC用於公鑰密碼學和非對稱數字簽名生成和驗證；HMAC用於對稱數字簽名生成和驗證；128位AES用於 對稱密鑰演算法；TCG PC客戶端平台TPM配置文件（PTP）規範要求使用PKCS#1中定義的MGF1基於哈希的掩碼生成函數。還定義了許多其他演算法，但它們是可選的。請注意，三重DES已添加到TPM 2.0庫中，但有限制以拒絕弱密鑰。此外，在早期版本中強制要求的、使用Barreto-Naehrig ECC曲線的橢圓密碼學直接匿名證明（ECDAA）在PC客戶端配置文件版本1.59中已變為可選。

密碼原語｜隨機數生成器、公鑰加密演算法、加密哈希函數、掩碼生成函數、數字簽名 生成和驗證以及直接匿名證明是必需的。對稱密鑰演算法和 異或 是可選的。密鑰生成也是必需的。｜TCG PC客戶端平台TPM配置文件（PTP）規範要求使用隨機數生成器、公鑰加密演算法、加密哈希函數、對稱密鑰演算法、數字簽名生成和驗證、掩碼生成函數和異或。對於TCG PC客戶端平台TPM配置文件（PTP）規範，使用Barreto–Naehrig 256位曲線的基於ECC的直接匿名證明是可選的。TPM 2.0通用庫規範還要求密鑰生成和密鑰派生函數。

層級｜一個（存儲）｜三個（平台、存儲和背書）

根密鑰｜一個（SRK RSA-2048）｜每個層級多個密鑰和算法

授權｜HMAC、PCR、局部性、物理存在｜密碼、HMAC和策略（涵蓋HMAC、PCR、局部性和物理存在）。

NVRAM｜非結構化數據｜非結構化數據、計數器、位圖、擴展、PIN通過與否。

TPM 2.0策略授權包括1.2 HMAC、局部性、物理存在和PCR。它添加了基於非對稱數字簽名的授權、對另一個授權密鑰的間接授權、計數器和時間限制、NVRAM值、特定命令或命令參數以及物理存在。它允許對這些授權原語進行AND和OR運算以構建複雜的授權策略。

## 接受度

中華人民共和國商用密碼產品銷售管理以前規定「任何單位或個人不得銷售境外的密碼產品」，因此早期市場銷售的資訊設備不搭載TPM。2005年前後，中國開始推行國產密碼技術TCM系統（Trusted Cryptographic Module）。

可信計算組織（TCG）在某些領域推廣這項技術時遇到了阻力，一些作者認為這項技術可能存在與可信計算無關的用途，這可能會引發隱私問題。這些擔憂包括濫用軟體遠程驗證來決定允許運行哪些軟體，以及可能以使用者完全無法察覺的方式將使用者採取的操作記錄到資料庫中。

TrueCrypt磁碟加密實用程序及其衍生產品VeraCrypt不支持TPM。最初的TrueCrypt開發人員認為，TPM的唯一目的是「防止需要攻擊者擁有管理員權限或物理訪問電腦的攻擊」。對電腦擁有物理或管理訪問權限的攻擊者可以繞過TPM，例如，通過安裝硬體擊鍵記錄器、重置TPM或捕獲記憶體內容並檢索TPM發出的密鑰。譴責性文字甚至聲稱TPM完全是多餘的。VeraCrypt發布者複製了最初的說法，除了將「TrueCrypt」替換為「VeraCrypt」之外沒有任何更改。作者的觀點是正確的，即在獲得不受限制的物理訪問權限或管理員權限後，繞過現有的其他安全措施只是時間問題。但是，阻止擁有管理員權限的攻擊者從來都不是TPM的目標之一（有關詳細資訊，請參閱），並且TPM可以阻止某些物理篡改。

2015年，理察·斯托曼建議將「可信計算」一詞替換為「背叛計算」，因為如果密碼密鑰對使用者保密，則電腦可能會被設置為系統地不服從其所有者。他還認為，2015年用於PC的TPM目前並不危險，並且沒有理由不在電腦中包含TPM或在軟體中支持TPM，因為業界嘗試使用該技術進行DRM的嘗試失敗了，但2022年發布的TPM2正是他警告過的「背叛計算」威脅。

## 攻擊

2010年，克里斯多福·塔爾諾夫斯基在黑帽大會上展示了針對TPM的攻擊，他聲稱能夠從單個TPM中提取秘密。在對Infineon SLE 66 CL PC插入探針並監視內部總線進行6個月的研究後，他成功實現了這一點。

如果存在物理訪問權限，則配備TPM 1.2的電腦容易受到冷啟動攻擊，只要系統處於開啟狀態或可以在不輸入密碼的情況下從關機、睡眠或休眠狀態啟動即可，這是使用BitLocker全磁碟加密的Windows電腦的默認設置。有人提出了一種修複方法，該方法已在TPM 2.0規範中採用。

2009年，TPM 1.2中共享授權數據的概念被發現存在缺陷。獲得數據訪問權限的攻擊者可以欺騙來自TPM的響應。有人提出了一種修複方法，該方法已在TPM 2.0規範中採用。

2015年，作為全球大規模監控披露（2013年至今）的一部分，據透露，美國中央情報局的一個團隊在2010年的一次內部會議上聲稱，他們對TPM進行了差分功率分析攻擊，並成功提取了秘密。

2017年11月之前的主要可信執行技術行版都受到測量動態信任根（DRTM）攻擊的影響，該攻擊會影響在可信執行技術上運行啟動例程的電腦。

2018年，有人報告了用於測量靜態信任根（SRTM）的TPM 2.0規範中的一個設計缺陷。它允許攻擊者重置和偽造平台配置寄存器，這些寄存器旨在安全地保存用於啟動電腦的軟體測量值。修復它需要特定於硬體的固件補丁。攻擊者濫用電源中斷和TPM狀態恢復來欺騙TPM，使其誤以為它在未被篡改的組件上運行。

2021年，Dolos Group展示了對獨立TPM的攻擊，其中TPM晶片本身具有一定的防篡改能力，但其通信總線的其他端點卻沒有。他們在全磁碟加密密鑰通過主板傳輸時讀取了它，並使用它解密了筆記型電腦的SSD。

### 2017年弱密鑰生成爭議

2017年10月，據報導，由英飛凌開發並在其TPM中廣泛使用的代碼庫包含一個名為ROCA的漏洞，該漏洞會生成弱RSA密鑰對，從而允許從公鑰推斷出私鑰。因此，所有依賴此類弱密鑰的隱私的系統都容易受到攻擊，例如身份盜竊或欺騙。

將加密密鑰直接存儲在TPM中而不進行盲化的密碼系統可能特別容易受到此類攻擊，因為如果攻擊者可以提取加密密鑰，則密碼和其他因素將毫無意義。

英飛凌已向使用其TPM的製造商發布了固件更新。

## 可用性

目前，幾乎所有PC和筆記型電腦製造商都在其產品中提供了TPM。

### TPM

TPM由多家供應商提供：

- 英飛凌提供TPM晶片和TPM軟體，它們作為OEM版本隨新電腦一起交付，英飛凌還單獨提供符合TCG標準的TPM技術產品。例如，英飛凌在2004年向Broadcom公司授權了TPM管理軟體。
- 微芯（前身為Atmel）製造的TPM設備聲稱符合可信平台模塊規範1.2版修訂版116，並提供多種接口（LPC、SPI和I2C）、模式（FIPS 140-2認證和標準模式）、溫度等級（商用和工業級）和封裝（TSSOP和QFN）。其TPM支持PC和嵌入式設備。它還提供TPM開發套件，以支持將其TPM設備集成到各種嵌入式設計中。
- 新唐科技為PC應用提供TPM設備。新唐還通過I2C和SPI主機接口為嵌入式系統和物聯網（IoT）應用提供TPM設備。新唐的TPM符合共同準則（CC），保證等級為EAL 4，並增加了ALC_FLR.1、AVA_VAN.4 ALC_DVS.2，FIPS_140-2等級為2，物理安全性和EMI/EMC等級為3，並符合可信計算組織的要求，所有這些都在一個設備中得到支持。華邦電子生產的TPM現在是新唐的一部分。
- 意法半導體自2005年以來一直為PC平台和嵌入式系統提供TPM。產品包括具有多個接口的獨立設備，支持串行外設接口（SPI）和I²C以及不同的認證等級（消費級、工業級和汽車級）。TPM產品已通過共同準則（CC）認證EAL4+，並增加了ALC_FLR.1和AVA_VAN.5，FIPS_140-22級認證，物理安全等級為3，並且還通過了可信計算組織（TCG）認證。

還有混合類型；例如，TPM可以集成到乙太網控制器中，從而無需單獨的主板組件。

### 現場升級

現場升級是TCG用於更新TPM固件的術語。更新可以在TPM 1.2和TPM 2.0之間，或在固件版本之間進行。一些供應商限制了1.2和2.0之間的轉換次數，而一些供應商則限制回滾到以前的版本。平台OEM（如惠普）提供升級工具。

自2016年7月28日起，所有新的Microsoft設備型號、系列或系列（或通過重大更新（如CPU、顯卡）更新現有型號、系列或系列的硬體配置）都默認實現並啟用了TPM 2.0。

雖然TPM 1.2部件是獨立的矽組件，通常焊接到主板上，但TPM 2.0可以作為獨立的（dTPM）矽組件在一個半導體封裝中使用，也可以作為集成組件併入一個或多個半導體封裝中——與同一封裝中的其他邏輯單元一起使用，還可以作為基於固件（fTPM）的組件在通用片上系統（SoC）上的可信執行環境（TEE）中運行。

### 虛擬TPM

- Google計算引擎將虛擬化TPM（vTPM）作為Google Cloud的Shielded VM產品的一部分提供。
- libtpms庫提供了可信平台模塊（TPM 1.2和TPM 2.0）的軟體仿真。它的目標是將TPM功能集成到虛擬機管理程序中，主要是集成到Qemu中。

### 作業系統

- Windows 11要求TPM 2.0支持作為最低系統要求。在許多系統上，TPM默認情況下是禁用的，需要更改電腦UEFI中的設置才能啟用它。
- Windows 8及更高版本原生支持TPM 2.0。
- Windows 7可以安裝官方補丁以添加TPM 2.0支持。
- 從Windows Vista到Windows 10都原生支持TPM 1.2。
- Linux內核自3.20版本（2012年）起就支持可信平台模塊2.0（TPM 2.0)

### 平台

- 谷歌在其安全模型中將TPM包含在Chromebook中。
- 甲骨文在其X系列和T系列系統（如T3或T4系列伺服器）中提供TPM。Solaris 11中包含對此的支持。
- 2006年，隨著首批採用英特爾處理器的Macintosh機型的推出，蘋果開始在Mac中配備TPM。蘋果從未提供過官方驅動程序，但有一個GPL下的埠可用。自2006年以來，蘋果就沒有推出過配備TPM的電腦。
- 2011年，台灣製造商微星推出了其Windpad 110W平板電腦，該平板電腦配備了AMD CPU和英飛凌安全平台TPM，並預裝了3.7版控制軟體。該晶片默認情況下處于禁用狀態，但可以使用隨附的預安裝軟體啟用。

### 虛擬化

- VMware ESXi虛擬機管理程序自4.x版本開始支持TPM，從5.0版本開始默認啟用。
- Xen虛擬機管理程序支持虛擬化TPM。每個guest都獲得其自己唯一的、模擬的軟體TPM。
- KVM與QEMU結合使用，支持虛擬化TPM。它支持將物理TPM晶片直通到單個專用guest。2017年12月發布的QEMU 2.11還為guest提供了模擬TPM。
- VirtualBox從2022年10月發布的7.0版本開始支持虛擬TPM 1.2和2.0設備。

### 軟體

- 微軟作業系統Windows Vista及更高版本將該晶片與其包含的名為BitLocker的磁碟加密組件結合使用。微軟曾宣布，從2015年1月1日起，所有電腦都必須配備TPM 2.0模塊才能通過Windows 8.1硬體認證。但是，在2014年12月對Windows認證計劃的審查中，這成為了一項可選要求。但是，InstantGo系統需要TPM 2.0。從Windows 10 1511和Windows Server 2016開始，在Hyper-V上運行的虛擬機可以擁有自己的虛擬TPM模塊。Microsoft Windows包含兩個與TPM相關的命令：tpmtool（可用於檢索有關TPM資訊的實用程序）和tpmvscmgr（允許在電腦上創建和刪除TPM虛擬智慧卡的命令行工具）。

## 基本資料

- 日語原文：TPM 2.0 參考實現
- 開發者：微軟
- 程式語言：C、C++
- 類型：TPM實現
- 許可協議：BSD許可證