TPMTool 是 Windows 中的一款命令行工具,用于与 TPM 进行交互。TPM(受信任平台模块)是一种嵌入式硬件组件,旨在增强计算机的安全性,通常用于加密操作、数字证书、硬盘加密(例如 BitLocker)以及其他安全相关任务。使用 tpmtool,可以查看 TPM 设备的状态、获取设备信息、收集日志以及执行一些调试和诊断操作。

tpmtool.exe(Windows 内置微软官方 TPMTool)完整解构拆解
重要区分:1)tpmtool.exe:Windows 10/11 原生自带命令行工具(微软官方,位于C:\Windows\System32\tpmtool.exe);2)第三方开源tpmtool(Ionescu 等):独立 NV 空间调试工具,二者不是同一个程序,下文分析微软系统内置 tpmtool.exe。
基础定位
tpmtool.exe 是 Windows 内置TPM 诊断与管理命令行客户端,面向管理员执行 TPM 信息查询、PCR 读取、TCG 日志导出、证明状态检测、物理存在指令下发等操作。
tpmtool getdeviceinformation
tpmtool dump -pcr
tpmtool gettcglog
tpmtool getpreshutdownlog
一、底层原理
1. 设计目标
- 提供轻量化命令行入口,替代复杂 PowerShell WMI 接口,快速诊断 TPM 健康状态;
- 封装标准 TBS Win32 API,组装符合 TCG 规范的 TPM2 二进制命令报文;
- 读取测量启动日志(TCG EventLog)、PCR 平台配置寄存器、EK 证书、证明能力;
- 下发物理存在指令(PPI),配合 BIOS 完成 TPM 清除、启用 / 禁用;
- 输出标准化文本日志,用于 BitLocker、设备证明、Measured Boot 故障排查。
2. Windows 软件分层架构
管理员CMD/PowerShell → tpmtool.exe(用户态EXE)
↓ Win32 API调用
tbs.dll(TBS用户态接口库)
↓ IOCTL系统调用
tbs.sys(TPM基础服务内核驱动,资源管理器TAB/RM)
↓
tpm.sys(TPM硬件传输驱动:CRB/TIS接口)
↓
固件TPM(Intel PTT) / 离散TPM芯片
- TBS(TPM Base Services)
Windows 内置 TPM 资源管理器,多路复用多进程 TPM 访问;虚拟句柄管理、资源上下文换入换出,避免多个程序抢占 TPM。
- tpmtool 工作模式:
- 调用
Tbsi_Context_Create创建 TBS 上下文; - 组装原生 TPM2 二进制命令包(例如
TPM2_PCR_Read、TPM2_GetCapability); - 通过
Tbsip_Submit_Command将报文下发 TBS; - 接收响应包,解析 TCG 结构体,格式化输出人类可读文本;
- 不内置加密算法、不实现 TSS2 栈,完全依托系统 TBS 驱动栈。
- Windows 组策略可阻止部分高危 TPM 命令,tpmtool 会收到 TBS 返回的命令阻止错误。
3. TPM 硬件通信路径分类
- Intel PTT(fTPM):固件 TPM,通过 CRB 接口,CPU 固件实现 TPM2,经由 ACPI/PCIe 和
tpm.sys通信; - Discrete TPM:独立芯片,TIS/SPI 总线;
二者上层对 tpmtool 完全透明,命令报文格式统一。
二、依赖文件(Windows)
1. 主程序
tpmtool.exe (System32,原生 PE,用户态控制台程序)2. 用户态强制依赖
tbs.dll:TBS 用户态导出所有 TPM 交互 API(核心依赖)kernel32.dll、advapi32.dll、user32.dll:标准 Win32 运行库
3. 内核驱动依赖(运行时必需)
tbs.sys— TPM 基础服务内核驱动(资源管理器)tpm.sys— TPM 硬件传输驱动(CRB/TIS 传输层)acpi.sys— ACPI 枚举 TPM 设备、PPI 物理存在接口支持
4. 固件层依赖
- TPM 设备枚举(ACPI CRB 设备
MSFT0101) - PPI(Physical Presence Interface)接口,接收清除 TPM 等指令
- Measured Boot,填充 TCG 日志缓冲区供系统读取
5. 可选关联组件
tpm.msc:图形 TPM 管理器(同样调用 TBS)- Win32_Tpm WMI 提供程序:PowerShell
Get-Tpm底层组件
三、依赖关系
1. 加载与调用顺序
- 管理员启动
tpmtool.exe - EXE 加载
tbs.dll,初始化 TBS 上下文 tbs.dll通过 Win32 IOCTL 和内核tbs.sys建立通信tbs.sys与tpm.sys交互,下发二进制 TPM 命令tpm.sys和固件 / 硬件 TPM 完成报文收发- 响应逐层向上返回,tpmtool 解析并打印信息
关键约束:
- 若
tbs.sys未启动、TPM 在 BIOS 禁用 → tpmtool 直接报错 “找不到 TPM”;- 普通用户权限无法打开 TBS 上下文,执行全部命令失败。
2. 横向依赖链(平台安全链路)
TPMTool → TBS栈 → TPM2.0硬件/PTT
↓
BitLocker、Windows Hello、Credential Guard、设备证明
3. 易混淆边界对比
| 组件 | 层级 | 作用 |
|---|---|---|
| tpmtool.exe | 用户态控制台工具 | 调试查询、下发简单 TPM 指令 |
| tpm.msc | MMC 图形管理 | 可视化 TPM 状态 |
| PowerShell Get-Tpm | WMI 封装 | 脚本自动化 TPM 管理 |
| tbs.dll/tbs.sys | 系统 TPM 基础栈 | 所有 TPM 应用共用底层通道 |
| 第三方 tpm2-tools | 独立 TSS 栈 | Linux/Windows 跨平台开发调试,不使用 Windows TBS |
四、完整逻辑链路
链路 A:读取 PCR(tpmtool dump -pcr)
tpmtool.exe → Tbsi_Context_Create 创建上下文
↓
组装TPM2_PCR_Read二进制命令包
↓
Tbsip_Submit_Command → tbs.dll → tbs.sys → tpm.sys
↓
TPM硬件执行PCR读取,返回Digest哈希值
↓
响应数据包逐层向上回传
↓
tpmtool解析TPM2B_DIGEST结构体,格式化输出PCR编号+哈希
链路 B:获取 TPM 设备信息 tpmtool getdeviceinformation
程序调用 Tbsi_GetDeviceInfo
↓
TBS读取TPM能力、版本、EK证书位置、Attestation状态
↓
输出:TPM版本、制造商、EK证书存在性、就绪证明状态、固件版本
链路 C:读取 TCG 测量启动日志 tpmtool gettcglog
TCG 日志不在 TPM 芯片内部,由 Windows Measured Boot 驱动保存在内存 / 注册表
tpmtool → Tbsi_Get_TCG_Log_Ex
↓
读取操作系统保存的启动测量日志(BootLoader、BCD、驱动测量记录)
↓
导出日志用于审计安全启动完整性、比对PCR变化根源
链路 D:下发 TPM 清除指令(PPI 流程)
tpmtool下发物理存在命令(Tbsi_Physical_Presence_Command)
↓
TBS → ACPI.sys → BIOS PPI接口
↓
BIOS标记待执行操作;重启时弹出确认界面
↓
用户确认后,BIOS执行TPM清空
五、配套链
1. Windows 原生配套工具
tpm.msc:图形 TPM 管理器- PowerShell TPM Cmdlet:
Get-Tpm、Clear-Tpm - 事件查看器:
Microsoft-Windows-TBS事件日志,排查 TBS 通信故障 - 性能监视器:TBS 性能计数器(上下文数量、命令吞吐量)
2. 调试工具链
- ETW 跟踪:
Microsoft-Windows-TBS、Microsoft-Windows-Tpm,抓取 TPM 命令收发 - RWEverything:底层 CRB 寄存器调试(固件 TPM 逆向)
- Wireshark(TPM 仿真环境):捕获 TPM 命令报文
3. 固件配套
- TPM 启用 / 禁用切换、PTT 开关
- PPI 物理存在确认界面
- EK 证书生成与烧录(Intel PTT 常见故障源:EK 证书丢失导致证明失败)
4. 运维配套 SOP 常用组合
tpmtool getdeviceinformation > tpm_info.txt
tpmtool dump -pcr > pcr.txt
tpmtool gettcglog > tcglog.bin
六、典型故障清单
-
tpmtool 报错:找不到 TPM 设备根因:BIOS 关闭 TPM/PTT;
tpm.sys驱动未加载;ACPI MSFT0101 设备枚举失败。 -
GetDeviceInformation 显示 Ready for Attestation = False最常见:Intel PTT 缺少有效 EK 证书;解决:BIOS 开关 PTT 重启重生成 EK,或更新 BIOS 固件。
-
部分命令返回 “命令被阻止”组策略启用【阻止指定 TPM 命令】,TBS 拦截操作。
-
tpmtool 可以读取 PCR,但 BitLocker 无法自动解锁PCR7 变更(安全启动策略变动),导致 TPM 解封策略不匹配。
-
管理员运行依然权限拒绝TBS 注册表策略限制、第三方安全软件拦截 TBS 驱动访问。
七、极简总结(汇报提纲)
tpmtool.exe 是 Windows 原生用户态 TPM 命令行诊断工具,基于 TBS(tbs.dll/tbs.sys)系统 TPM 栈,封装 TCG TPM2 二进制命令。
TPMTool 是 Windows 操作系统中用于与受信任平台模块(TPM)进行交互的命令行工具。TPM 是一种硬件安全模块,它用于提供硬件级的加密支持,确保操作系统和应用程序的安全性。TPMTool 允许用户检查、配置和诊断与 TPM 相关的设置,查看日志,比较 PCR(平台配置寄存器)值等。
1. 什么是 TPMTool 命令?
TPMTool 是 Windows 中的一款命令行工具,用于与 TPM 进行交互。TPM(受信任平台模块)是一种嵌入式硬件组件,旨在增强计算机的安全性,通常用于加密操作、数字证书、硬盘加密(例如 BitLocker)以及其他安全相关任务。使用 tpmtool,可以查看 TPM 设备的状态、获取设备信息、收集日志以及执行一些调试和诊断操作。
2. 常见的 TPMTool 命令及用途:
-
获取 TPM 设备信息:
- 命令:
tpmtool getdeviceinformation - 功能:显示 TPM 设备的详细信息,包括版本、状态等。
术语 解释 TPM 受信平台模块(Trusted Platform Module),硬件安全设备,用于增强计算机的安全性。 TPM 2.0 TPM的第二代版本,具有更多的功能,如改进的加密算法和更强的安全保护。 TPM INTC 指代Intel(英特尔)制造的TPM芯片,通常用于支持硬件加密、身份验证等。 TPM Intel 具体指Intel品牌的TPM设备,通常与英特尔的硬件平台兼容。 TPM 600.7.0.0 特定版本号的TPM固件,表示特定固件版本的TPM实现。 PPI 1.3 平台保护接口(Platform Protection Interface)的1.3版本,用于与TPM进行通信的标准。 Bitlocker PCR7 BitLocker(微软的磁盘加密工具)使用的平台配置寄存器(PCR7)来存储加密信息。 TPM 1.38 指TPM 1.2版本中的一个特定版本号,较旧的TPM规范,功能相对简单。 TPM Wednesday, October 30, 2019 TPM相关事件的日期,可能指代某次固件更新、审计事件或设置更改的时间。 1.03 特定的TPM版本号,可能是某个硬件或固件版本。 -0 可能表示TPM设备或配置中的状态码或值,通常为数值状态或错误代码。 -31 可能是某个特定错误码或状态,通常表示TPM设备的异常或错误状态。 -600s 表示某个时间段,可能是TPM操作持续的时间,单位为秒(600秒)。 -86400s 表示某个时间段,86400秒等于1天,可能表示某个操作持续的时间或系统恢复时间。 注释:
- TPM:是硬件安全模块,广泛应用于提供加密密钥管理、身份验证等功能。
- BitLocker PCR7:PCR(平台配置寄存器)7用于存储在开机时系统的某些认证信息,通常是TPM加密信息,BitLocker使用它来确保系统启动的安全性。
这些术语常见于TPM(受信平台模块)相关的硬件和软件的操作中,尤其在加密、安全认证等场景下。
- 命令:
-
收集 TPM 日志:
- 命令:
tpmtool gatherlogs [输出目录路径] - 功能:收集 TPM 操作日志并将其保存在指定目录中。
- 命令:
-
TPM 驱动程序跟踪:
- 命令:
tpmtool drivertracing start或tpmtool drivertracing stop - 功能:启动或停止 TPM 驱动程序的跟踪,用于调试 TPM 驱动程序操作。
- 命令:
-
比较 PCR(平台配置寄存器):
- 命令:
tpmtool comparepcr [哈希算法] - 功能:比较 TPM 中的平台配置寄存器(PCR)值,确保设备的完整性。
- 命令:
-
打印 PCR 值:
- 命令:
tpmtool printpcr [哈希算法] - 功能:打印出指定哈希算法下的 PCR 值。
- 命令:
-
帮助命令:
- 命令:
tpmtool /? - 功能:显示
tpmtool的帮助信息,列出所有可用命令及其功能。
- 命令:
3. 为什么使用 TPMTool 命令?
-
增强安全性: TPM 可以用于加密操作,如 BitLocker 磁盘加密,保护计算机中的数据。通过
tpmtool,管理员可以确保 TPM 正常工作并进行诊断。 -
系统诊断和故障排除:
TPMTool提供的日志收集和驱动跟踪功能有助于管理员诊断与 TPM 相关的任何问题。 -
管理和配置 TPM: 对于需要管理受信任平台模块(TPM)并确保其符合安全要求的组织,
tpmtool提供了一些方便的命令,帮助配置 TPM 的行为,查看设备信息等。 -
检查和验证设备完整性: 通过比较和打印 PCR 值,可以验证系统的完整性和可靠性,确保没有篡改。
总之,tpmtool 是一个有用的工具,可以帮助管理员与 TPM 交互,诊断其状态,收集日志并进行配置,确保系统的安全性。
TPMTool 是由微软(Microsoft)开发的命令行工具,主要用于与 Windows 操作系统中的受信任平台模块(TPM)进行交互和管理。其设计目的是帮助用户、IT 管理员和开发人员诊断、配置和调试 TPM 设备。TPM 是一种硬件安全模块(HSM),通常用于数据加密和身份验证等安全任务。微软将其集成到 Windows 操作系统中,以增强操作系统的安全性,尤其是在保护数据隐私、设备启动安全等方面。
TPMTool 的起源:
-
TPM 技术的背景: TPM(受信任平台模块)技术最早在 2000 年由 Trusted Computing Group (TCG) 推动和制定。它的目标是通过硬件级别的安全功能,保护计算机系统免受恶意软件和物理攻击的威胁。TPM 通常内置于现代计算机的主板上,提供强大的加密、身份验证和密钥管理功能。
-
与 Windows 操作系统的集成: 微软在其操作系统中加入了对 TPM 的支持,尤其是在 Windows 7 及之后的版本中,TPM 被广泛用于功能如 BitLocker 加密 和 Windows Hello 等。随着 Windows 操作系统越来越依赖硬件加密技术,TPM 也成为了操作系统安全功能的一个重要组成部分。
-
命令行工具的需求: 随着 TPM 技术的普及和运用,尤其是在企业环境中,IT 管理员和开发人员需要一种方便的方式来管理和诊断 TPM 设备。
TPMTool就是为了满足这种需求而开发的。该工具帮助用户获取 TPM 设备信息、检查其健康状态、查看日志等,以确保 TPM 正常运行并支持各种加密和身份验证功能。 -
工具的功能和演变:
TPMTool提供了一些基础的命令行功能,包括获取设备信息、收集日志、检查和配置 TPM 状态等。随着 Windows 操作系统版本的更新,TPMTool也不断更新,增加了更多的功能,进一步增强了对 TPM 管理和调试的支持。
TPMTool 起源于微软对 TPM 技术的集成和支持需求,特别是在 Windows 操作系统中的加密和安全功能的使用日益增加时,开发了这个命令行工具,帮助管理员和开发人员更有效地管理 TPM 设备、调试和配置相关功能。
TPMTool 的发展经历了多个阶段,随着 Windows 操作系统对硬件安全模块(TPM)集成的加深以及 IT 管理需求的增加,TPMTool 工具本身也在不断演进和扩展。下面是 TPMTool 发展的几个关键阶段:
1. 早期阶段:TPM 的引入和初步集成
- 2000 年代初期:受信任平台模块(TPM)由 Trusted Computing Group (TCG) 推出,旨在提高计算机的安全性,特别是在加密、身份验证和数据保护方面。TPM 技术主要应用于硬件级别的安全保护,并逐步被集成到主板上。
- Windows Vista(2007 年):Windows Vista 是微软第一个正式支持 TPM 的操作系统,特别是在 BitLocker 加密 和 受信任的启动(Trusted Boot) 等功能中,TPM 提供了底层的硬件安全支持。这时,TPM 被广泛应用于企业级设备和高安全性环境中。
2. 中期阶段:增强的管理与调试功能
- Windows 7(2009 年):随着 Windows 7 的发布,TPM 的支持逐渐加强,特别是在 BitLocker 驱动器加密 和 用户身份验证(如 Windows Hello)等领域。微软增加了更多用于配置和管理 TPM 的工具和接口。
- TPM 管理工具的初步出现:虽然在早期阶段,TPM 的配置和管理依赖于 GUI(图形用户界面)工具和控制面板,但随着企业级使用的增加,微软开始开发命令行工具,以便 IT 管理员能够更高效地管理大量设备。
3. 后期阶段:命令行工具的出现和增强
- Windows 8(2012 年):Windows 8 引入了更多基于 TPM 的功能,例如支持更强的加密和更安全的启动过程。随着企业对 TPM 依赖度的增加,微软开发了
TPMTool命令行工具,允许管理员使用更细粒度的命令来管理 TPM。 - TPMTool 的功能扩展:
TPMTool的初期功能包括检查 TPM 设备的健康状态、查看 TPM 配置和配置 TPM 的某些选项。该工具也用于诊断 TPM 的状态并生成日志文件,有助于分析 TPM 故障或配置问题。
4. 当前阶段:Windows 10 及 Windows 11 和进一步增强的 TPM 支持
- Windows 10(2015 年):Windows 10 加强了对 TPM 的支持,并引入了多种新的硬件安全功能,例如 Windows Hello 和更强的 BitLocker 加密。微软加强了 TPM 的管理功能,尤其是在企业环境中,
TPMTool也得到了进一步完善,使其更加易于与其他管理工具(如 Group Policy)结合使用。 - Windows 11(2021 年):Windows 11 强调了硬件安全性,并要求 TPM 2.0 作为系统要求之一。Windows 11 的发布使得 TPM 2.0 成为标准,并进一步提升了
TPMTool的功能,帮助管理员管理和诊断最新的 TPM 设备。 - 功能增强:除了基础的功能(如查看 TPM 配置、诊断信息和日志),
TPMTool现在还支持一些高级功能,如:- 远程清除 TPM。
- 配置 TPM 密钥。
- 启用或禁用特定的 TPM 功能。
5. 未来发展:云端与自动化管理
- 随着企业云计算和远程工作环境的兴起,微软可能会进一步扩展
TPMTool,特别是在自动化管理和远程部署方面。TPMTool可能会与云服务进行更深度的集成,为管理员提供跨多个设备的统一管理平台。 - 安全性提升:随着安全威胁的发展,TPM 的管理工具可能会继续增加新的安全功能,例如更精细的密钥管理、更强的身份验证机制等。
TPMTool 随着微软操作系统对 TPM 支持的加深而发展。从最初的基础加密支持到现代操作系统中的强大硬件安全保护,TPMTool 的功能逐步增强,以满足 IT 管理员和企业对硬件级安全的日益需求。随着 TPM 技术的持续发展和新的硬件安全需求的出现,TPMTool 也将不断进化,以提供更强大的管理、配置和调试功能。
| 功能分类 | 命令 | 参数说明 | 示例 |
|---|---|---|---|
| 设备信息 | tpmtool getdeviceinformation |
获取TPM设备的详细信息,显示TPM硬件和配置状态。 | tpmtool getdeviceinformation |
| 日志收集 | tpmtool gatherlogs [OUTPUT DIRECTORY PATH] |
收集TPM日志并将其保存到指定目录路径。 | tpmtool gatherlogs C:\Users\Public |
| 驱动程序跟踪 | tpmtool drivertracing start |
启动TPM驱动程序的跟踪功能,用于调试或分析TPM驱动的行为。 | tpmtool drivertracing start |
tpmtool drivertracing stop |
停止TPM驱动程序的跟踪功能。 | tpmtool drivertracing stop |
|
| 可选命令 | tpmtool optionalcommands |
执行TPM相关的可选命令。 | tpmtool optionalcommands |
| PCR(平台配置寄存器) | tpmtool comparepcr [HASH ALGORITHM] |
比较TPM的PCR值,使用指定的哈希算法。 | tpmtool comparepcr sha256 |
tpmtool printpcr [HASH ALGORITHM] |
打印TPM的PCR值,使用指定的哈希算法。 | tpmtool printpcr sha256 |
|
| 帮助文档 | tpmtool /? |
显示命令行帮助文档,列出所有可用的命令和参数。 | tpmtool /? |
参数说明:
- [OUTPUT DIRECTORY PATH]:指定保存日志的目录路径。例如
C:\Users\Public。 - [HASH ALGORITHM]:指定用于PCR值比较或打印的哈希算法,例如
sha256。
示例:
-
获取设备信息:
运行tpmtool getdeviceinformation命令将显示有关系统中TPM设备的详细信息。 -
收集日志到指定目录:
运行tpmtool gatherlogs C:\Users\Public将会把TPM相关的日志文件保存到C:\Users\Public目录。 -
启动TPM驱动程序跟踪:
运行tpmtool drivertracing start启动TPM驱动程序的调试跟踪。 -
停止TPM驱动程序跟踪:
运行tpmtool drivertracing stop停止TPM驱动的调试跟踪。 -
打印TPM PCR值:
运行tpmtool printpcr sha256将打印当前TPM设备的PCR值,使用SHA-256哈希算法。 -
比较TPM PCR值:
运行tpmtool comparepcr sha256将比较系统中当前的PCR值与存储的PCR值,使用SHA-256哈希算法进行比较。 -
查看帮助文档:
运行tpmtool /?可以查看所有可用命令及其用法的帮助文档。
通过这种分类和示例,用户可以快速理解每个命令的功能和如何使用它们来进行TPM相关的操作和故障排除。
TPMTool 功能的分类表格,涵盖了常见功能及其说明:
| 功能类别 | 功能名称 | 功能描述 |
|---|---|---|
| 信息查询 | 检查 TPM 状态 | 显示 TPM 是否启用、TPM 版本、制造商信息以及设备健康状态。 |
| 查看 TPM 配置 | 获取 TPM 配置详细信息,例如支持的功能、密钥存储方式等。 | |
| 获取 TPM 日志 | 显示 TPM 事件日志,记录 TPM 相关的操作和状态变化。 | |
| 管理操作 | 启用 TPM | 启用计算机上的 TPM(如果尚未启用)。 |
| 禁用 TPM | 禁用计算机上的 TPM 功能。 | |
| 初始化 TPM | 初始化未配置的 TPM,并设置管理员密码等。 | |
| 清除 TPM | 完全清除 TPM 存储的所有数据,通常用于重置或更换设备。 | |
| 密钥管理 | 配置 TPM 密钥 | 配置和管理 TPM 的密钥存储区,生成、存储、更新和删除 TPM 密钥。 |
| 密钥保护 | 配置 TPM 密钥保护策略,确保密钥在硬件上存储并受到安全保护。 | |
| 诊断与故障排除 | 诊断 TPM 健康 | 检查 TPM 是否存在故障或错误,并返回详细的故障信息。 |
| 查看 TPM 错误日志 | 获取与 TPM 相关的错误日志,以帮助排除故障。 | |
| 安全性增强 | 启用受信任启动(Secure Boot) | 启用 TPM 以确保计算机只启动经过验证的受信任操作系统。 |
| 启用 BitLocker 加密 | 启用基于 TPM 的 BitLocker 磁盘加密功能,保护存储的数据免受未授权访问。 | |
| 高级功能 | 远程管理 TPM | 通过远程管理工具配置和管理 TPM,适用于大规模部署和管理的场景。 |
| 迁移 TPM 数据 | 支持 TPM 配置和密钥的迁移,例如在硬件更换时迁移 TPM 信息。 | |
| 启用身份验证 | 启用基于 TPM 的身份验证,如 Windows Hello 身份验证等。 |
这个表格列出了 TPMTool 的常见功能分类和具体操作,帮助管理员在系统上进行 TPM 配置、管理和诊断等任务。
TPMTool 是用于管理受信任平台模块(TPM,Trusted Platform Module)的工具,它依赖于 TPM 的底层硬件和固件来执行各种安全操作。要理解 TPMTool 的底层原理,我们需要先了解 TPM 的基本工作原理和其与操作系统的交互方式。
1. TPM 模块的工作原理
TPM 是一种独立的硬件安全模块,专门设计用于提高计算机系统的安全性。TPM 的底层原理基于加密技术,特别是公钥基础设施(PKI)和哈希函数。其核心功能包括:
-
密钥生成与存储: TPM 生成和存储加密密钥,并为这些密钥提供硬件级的保护。密钥不会离开 TPM,只有 TPM 可以使用这些密钥进行加解密操作。
-
数字签名与验证: 使用 TPM 存储的私钥生成数字签名,并对外部数据进行验证,以确保数据的完整性和来源。
-
安全启动与完整性检查: TPM 支持测量启动过程中的每个组件,以确保系统启动时没有被篡改。通过“度量值”来确保引导加载程序和操作系统没有被修改,确保操作系统的完整性。
-
加密存储: TPM 通过 BitLocker 等功能加密存储的磁盘数据,保护数据免受未授权访问。
2. TPM 与 操作系统的交互
TPMTool 是操作系统与 TPM 之间的交互桥梁。它主要通过操作系统的 TPM 驱动程序与 TPM 进行通信。以下是 TPMTool 的工作流程:
-
初始化 TPM: 系统启动时,TPM 驱动会与 TPM 进行通信,确认 TPM 的状态、配置及其功能是否可用。TPMTool 可以读取 TPM 的状态,检查其是否启用、健康状态如何等。
-
TPM 命令执行: TPMTool 可以发送 TPM 指令到 TPM 硬件进行特定操作,如密钥生成、加密解密、清除数据等。TPM 支持通过标准的 TPM 指令集(如 TPM 2.0 规范定义的命令)进行操作,TPMTool 通过这些命令来控制 TPM 执行特定任务。
-
密钥管理: TPMTool 可以与 TPM 交互,生成、存储、导入和导出加密密钥。所有密钥的生成和存储都在 TPM 内部进行,外部无法直接访问这些密钥。只有在 TPM 内部的安全环境下才能使用这些密钥。
-
受信任启动与加密: 通过 TPMTool 可以配置受信任启动或启动密钥保护(如 BitLocker)。TPM 通过“测量”引导过程中加载的每个模块和操作系统的状态来确保系统启动过程的完整性。
3. TPM 命令和接口
TPM 通过一系列标准的命令集与操作系统和应用程序交互,通常遵循 TPM 2.0 规范。TPMTool 使用这些命令来执行底层的操作,主要包括:
- TPM 认证(TPM Authentication):验证对 TPM 的访问权限。
- TPM 密钥生成(TPM Key Generation):通过 TPM 生成对称或非对称密钥。
- TPM 存储与保护(TPM Storage & Protection):加密和存储密钥或数据。
- TPM 报告和测量(TPM Attestation & Measurement):报告硬件和软件的启动状态,测量和验证系统组件的完整性。
- TPM 随机数生成(TPM RNG):生成高质量的随机数,供加密操作使用。
4. TPMTool 的底层通信协议
TPMTool 与 TPM 的通信通常通过以下协议:
-
TSS(Trusted Software Stack): 是用于与 TPM 交互的中间层软件框架。TSS 提供一套 API,允许开发者在应用程序中实现对 TPM 的操作。TPMTool 可能通过 TSS 与 TPM 硬件进行通信。
-
TPM 指令集(TPM Command Set): TPM 设备遵循特定的指令集(如 TPM 2.0 指令集),每个命令都会触发 TPM 执行特定任务,TPMTool 通过这些命令来控制 TPM 完成所需操作。
-
设备接口(Device Interface): 通过操作系统中的设备接口(如 Windows 中的 TPM 驱动),TPMTool 能与物理 TPM 硬件进行交互。
5. TPMTool 的常见操作
- TPM 状态查询: 检查 TPM 是否启用、运行健康状态等。
- 密钥生成与管理: 利用 TPMTool 生成和管理加密密钥。
- TPM 清除与重置: 清除 TPM 存储的数据,进行重置。
- 启用或禁用 BitLocker 加密: 配置 TPM 以启用磁盘加密,保护数据安全。
TPMTool 是操作系统与 TPM 硬件之间的管理工具,借助底层 TPM 硬件的加密和安全特性,执行一系列安全操作。它通过与 TPM 驱动及 TPM 命令集交互,实现密钥管理、系统完整性检查、安全启动等功能,从而增强操作系统和存储数据的安全性。
TPMTool 是用于管理和操作 TPM(受信任平台模块)的一种工具。在执行各种任务时,TPMTool 可能依赖一些特定的文件、驱动程序和库。以下是 TPMTool 一般依赖的文件和组件的简要概述:
1. TPM 驱动程序文件
为了与 TPM 进行通信,操作系统需要安装适当的 TPM 驱动程序。TPM 驱动程序是操作系统与 TPM 硬件进行交互的关键。常见的 TPM 驱动程序包括:
-
Windows 系统驱动程序:
tpm.sys:这是 Windows 系统中用于与 TPM 进行交互的核心驱动程序文件。它负责加载并控制 TPM 模块。tpmbios.sys(在 BIOS 和固件层面用于 TPM 的早期初始化)和其他驱动程序文件,可能与特定的硬件厂商相关。
-
Linux 系统驱动程序:
tpm_tis.ko(TPM TIS 驱动):用于通过 TIS(Trusted Interface Specification)协议与 TPM 进行通信。tpm_crb.ko(TPM CRB 驱动):适用于基于 CRB(Control Resource Bus)接口的 TPM。
这些驱动程序文件通常在操作系统安装时自动安装,也可以通过系统的硬件管理工具手动更新。
2. TPM 软件栈(TSS)
TSS(Trusted Software Stack)是操作系统与 TPM 交互的重要软件组件,提供了标准化的 API 和接口。TPMTool 会依赖 TSS 来发送和接收与 TPM 交互的命令。TSS 可以有不同的实现,常见的 TSS 包括:
-
TSS2(TPM 2.0 软件栈): 用于支持 TPM 2.0 设备的功能,提供用于与 TPM 2.0 模块交互的 API。
libtss2:提供用于与 TPM 2.0 硬件通信的共享库。
-
TSS1(TPM 1.2 软件栈): 如果使用的是较旧版本的 TPM(如 TPM 1.2),则可能使用 TSS1 栈。
TSS 提供的库文件和接口是 TPMTool 操作的基础,TPMTool 会调用这些库来实现与 TPM 的各种操作。
3. TPM 配置和日志文件
TPM 相关的操作有时需要配置文件来存储设置和状态信息。常见的配置文件和日志文件包括:
-
Windows 注册表文件:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TPM:Windows 注册表中的 TPM 配置。
-
Linux 配置文件:
/etc/tpm:在某些 Linux 系统中,TPM 配置文件可以存储在此位置,供TPMTool或其他 TPM 管理工具使用。
-
日志文件:
- 在执行 TPM 操作时,操作系统通常会生成日志文件,记录 TPM 相关的事件和错误。例如,Windows 事件日志中可能会记录与 TPM 相关的错误或警告。
4. TPMTool 本身的可执行文件
-
Windows 系统:
TPMTool.exe:Windows 中的TPMTool可执行文件,通常位于系统文件夹或者由管理员通过命令行工具启动。
-
Linux 系统:
tpm2-tools:Linux 下常用的 TPM 工具集合,包含许多与 TPM 交互的命令行工具。tpm2-tools提供了类似于TPMTool的功能,并且通常依赖于 TPM2 的库文件。
5. TPM 指令集和固件
TPMTool 与 TPM 的通信依赖于 TPM 内部的指令集和固件。在 TPM 启动时,固件加载并执行这些指令,以支持如密钥生成、加解密等功能。固件通常由硬件厂商提供,并随着硬件的固件更新进行更新。
- TPM 固件: 由硬件制造商提供,用于 TPM 模块的初始化、管理和指令执行。不同厂商的 TPM 模块可能有不同版本的固件。
TPMTool 的操作依赖于多个关键文件和组件,包括操作系统的 TPM 驱动程序、TSS(软件栈)库文件、TPM 配置与日志文件、以及 TPM 固件等。通过这些组件,TPMTool 能够与 TPM 硬件交互,执行安全操作,如密钥管理、加密解密、数据保护等。
按功能分类的 tpmtool 命令表格:
| 功能分类 | 命令 | 描述 |
|---|---|---|
| 获取设备信息 | tpmtool getdeviceinformation |
获取 TPM 设备的相关信息。 |
| 收集日志 | tpmtool gatherlogs [输出目录路径] |
收集 TPM 日志并将其保存到指定的目录中。 |
| 驱动跟踪 | tpmtool drivertracing start |
启动 TPM 驱动操作的跟踪。 |
tpmtool drivertracing stop |
停止 TPM 驱动跟踪。 | |
| 可选命令 | tpmtool optionalcommands |
用于执行其他 TPM 操作。 |
| 比较 PCR | tpmtool comparepcr [哈希算法] |
使用指定的哈希算法比较 PCR(平台配置寄存器)值。 |
| 打印 PCR | tpmtool printpcr [哈希算法] |
使用指定的哈希算法打印 PCR 值。 |
| 帮助 | tpmtool /? |
显示帮助信息及可用命令。 |
示例:
tpmtool gatherlogs C:\Users\Public— 收集日志并将其保存在指定目录。tpmtool comparepcr sha256— 使用 SHA256 哈希算法比较 PCR 值。tpmtool drivertracing start— 启动 TPM 驱动跟踪。
|
tpmtool 语法: 参数: GATHERLOGS [OUTPUT DIRECTORY PATH] 收集 TPM 日志并将其放置在指定的目录中。 DRIVERTRACING [START / STOP] 开始/停止收集驱动程序跟踪。 /? 显示此帮助消息。 示例: tpmtool getdeviceinformation tpmtool gatherlogs C:\Users\Public tpmtool drivertracing start tpmtool drivertracing stop |
tpmtool.exe 完整解构(基于你提供官方命令集)
程序本体:Windows 10 20H2 / Windows 11 内置%SystemRoot%\System32\tpmtool.exe归属:微软官方 TPM 诊断控制台工具,仅支持 TPM 2.0;TPM1.2 环境无法正常工作注意:你给出的官方参数子集是新版精简分支(不含早期dump、gettcglog等命令,以当前二进制内置支持项为准)
一、基础定位
tpmtool.exe 用户态控制台 PE 程序,上层面向运维人员提供标准化 TPM 诊断入口;底层完全依赖 Windows TBS(TPM Base Services) 系统 TPM 服务栈,不自带 TPM 命令解析硬件驱动,不内置 TSS2 库。
支持参数清单(官方原文)
GETDEVICEINFORMATION查询 TPM 基础属性:固件版本、制造商、EK 证书状态、是否就绪证明、CRB/TIS 接口类型、TPM 启用状态。GATHERLOGS [输出目录]自动批量收集全套 TPM 相关日志:TBS ETW 日志、系统事件日志、Measured Boot TCG 日志、驱动信息、注册表 TPM 配置、PNP 设备状态,打包存放至目标目录。DRIVERTRACING START / STOP启停 TBS + TPM 驱动栈实时 ETW 跟踪,捕获 TPM 命令交互、IOCTL 调用、驱动电源事件,用于深度故障分析。/?显示内置帮助。
二、底层原理
1. 设计目标
- 统一简化运维操作,无需手动配置 ETW、手动导出 TCG 日志、翻阅事件查看器;
- 封装 TBS 原生 Win32 API,屏蔽底层 TPM 二进制报文细节;
- 一键采集诊断证据,支撑 BitLocker、安全启动、设备证明、Credential Guard 故障定位;
- 提供驱动级实时跟踪,抓取
tbs.sys与tpm.sys交互时序。
2. 软件分层架构
管理员CMD/PowerShell
↓
tpmtool.exe(用户态控制台程序)
↓ Win32 API
tbs.dll(TBS用户态接口库)
↓ IOCTL 系统调用
tbs.sys(内核 TBS 资源管理器)
↓
tpm.sys(TPM硬件传输驱动 CRB/TIS)
↓
固件TPM(PTT) / 独立TPM芯片
- tpmtool.exe
命令解析、参数校验、日志文件读写、ETW 会话管理、输出文本格式化;不直接访问硬件寄存器。
- tbs.dll
导出 TBS 官方 API,建立 TPM 上下文、下发查询指令、读取 TCG 日志缓冲区。
- tbs.sys
TPM 资源多路复用器;管理多进程并发访问 TPM、上下文切换、电源事件转发。
- tpm.sys
硬件传输层,实现 CRB(固件 TPT/PTT)或 TIS(离散 TPM)总线通信。
GETDEVICEINFORMATION:调用Tbsi_GetDeviceInfo获取 TPM 能力信息;GATHERLOGS:组合多类数据源:系统事件日志、TBS 持久日志、Measured Boot 内存 TCG 日志、PNP 设备信息、注册表快照;DRIVERTRACING:调用 ETW API 创建 / 销毁Microsoft-Windows-TBS、Microsoft-Windows-Tpm跟踪会话,实时捕获驱动内部事件。
三、依赖文件
用户态依赖
tpmtool.exe主程序tbs.dll【强依赖】TPM 基础服务用户接口kernel32.dll、advapi32.dll、evntrace.dll负责文件操作、权限校验、ETW 跟踪会话管理
内核驱动依赖(运行必需)
tbs.sys— TBS 内核服务tpm.sys— TPM 硬件传输驱动acpi.sys— ACPI 枚举 TPM 设备MSFT0101、PPI 接口支持
固件依赖
- 开启 TPM/PTM,暴露 ACPI CRB 设备;
- 提供 PPI 物理存在接口;
- Measured Boot 测量链,填充 TCG 日志。
四、依赖关系
1. 调用加载顺序
- 管理员启动
tpmtool.exe - 进程加载
tbs.dll,校验权限;普通用户直接访问被拒绝 - API 请求下发,通过 IOCTL 与内核
tbs.sys通信 tbs.sys调度tpm.sys和 TPM 硬件交互- 数据逐层向上返回,tpmtool 格式化输出或写入日志文件
2. 横向业务依赖链
tpmtool 诊断工具 → TBS驱动栈 → TPM2.0
↳ BitLocker
↳ Windows Hello
↳ 安全启动 Measured Boot
↳ 设备远程证明
边界区分
tpmtool.exe:批量日志采集、驱动跟踪、简易信息查询(新版精简命令集)tpm.msc:图形界面 TPM 管理,同样基于 TBS,但无一键日志收集、驱动跟踪能力- PowerShell
Get-Tpm:依托 WMI,无法启动底层驱动 ETW 跟踪
五、逻辑链路(分命令逐条拆解)
链路 1:tpmtool getdeviceinformation
tpmtool.exe → Tbsi_GetDeviceInfo()
↓
tbs.dll → IOCTL → tbs.sys → tpm.sys
↓
读取TPM能力寄存器、EK证书状态
↓
结果逐层返回 → 控制台打印TPM版本、制造商、证明就绪状态等信息
链路 2:tpmtool gatherlogs D:\tpm_logs
tpmtool 创建目标目录
↓
并行采集多源数据:
① 调用TBS接口导出TCG Measured Boot日志
② 查询系统事件日志(TBS、TPM相关事件)
③ 读取注册表TPM配置项
④ 枚举PNP TPM设备信息
↓
全部文件统一复制至目标路径,生成结构化日志包
链路 3:tpmtool drivertracing start /stop
START:
tpmtool调用ETW API,创建跟踪会话
启用提供程序:Microsoft-Windows-TBS、Microsoft-Windows-Tpm
开始实时捕获驱动事件(TPM命令、电源IRP、错误、中断)
STOP:
关闭ETW会话,保存etl跟踪日志到当前目录
六、配套链
1. Windows 原生配套工具
tpm.msc:图形 TPM 管理器- PowerShell TPM Cmdlet:
Get-Tpm - 事件查看器:
应用程序和服务日志\Microsoft\Windows\TBS
2. 配套调试工具
- Windows Performance Recorder (WPR):手动创建 TBS 跟踪(等效 drivertracing)
etl2txt/ Windows Performance Analyzer (WPA):解析跟踪日志- RWEverything:底层 CRB 寄存器调试(固件 TPT 逆向场景)
3. 运维配套典型操作组合
tpmtool getdeviceinformation > info.txt
tpmtool gatherlogs C:\TPM_Logs
tpmtool drivertracing start
:: 复现故障
tpmtool drivertracing stop
七、典型故障清单
-
命令执行失败:找不到 TPM 设备根因:BIOS 禁用 PTM/TPM;ACPI
MSFT0101未枚举;tpm.sys驱动缺失。 -
驱动跟踪启动失败根因:已有 TBS ETW 会话占用;权限不足;系统 TBS 服务未运行。
-
GATHERLOGS 部分 TCG 日志为空根因:Measured Boot 未启用;平台固件不支持启动测量。
-
管理员运行仍提示访问被拒绝根因:组策略限制 TBS;安全软件拦截 TBS 驱动通信。
八、极简总结
tpmtool.exe(新版精简参数版本)是 Windows 内置 TPM 一键诊断工具,依托 TBS 系统 TPM 驱动栈,提供三项核心能力:TPM 基础信息查询、一站式日志收集、TBS/TPM 驱动实时 ETW 跟踪。

要制作一个批处理 .cmd 文件来创建一个菜单,执行你提到的 tpmtool 命令,你可以按照以下步骤进行:
批处理文件内容 (tpm_menu.cmd):
@echo off
:menu
cls
echo ================================
echo TPM 工具菜单
echo ================================
echo 1. 获取设备信息 (tpmtool getdeviceinformation)
echo 2. 收集日志 (tpmtool gatherlogs)
echo 3. 开始驱动程序跟踪 (tpmtool drivertracing start)
echo 4. 停止驱动程序跟踪 (tpmtool drivertracing stop)
echo 5. 显示可选命令 (tpmtool optionalcommands)
echo 6. 比较 PCR (tpmtool comparepcr sha256)
echo 7. 打印 PCR (tpmtool printpcr sha256)
echo 8. 退出
echo ================================
set /p choice=请输入你的选择 (1-8):
if "%choice%"=="1" goto get_device_info
if "%choice%"=="2" goto gather_logs
if "%choice%"=="3" goto driver_tracing_start
if "%choice%"=="4" goto driver_tracing_stop
if "%choice%"=="5" goto optional_commands
if "%choice%"=="6" goto compare_pcr
if "%choice%"=="7" goto print_pcr
if "%choice%"=="8" exit
:get_device_info
tpmtool getdeviceinformation
pause
goto menu
:gather_logs
set /p path=请输入日志保存路径 (默认: C:\Users\Public):
if "%path%"=="" set path=C:\Users\Public
tpmtool gatherlogs %path%
pause
goto menu
:driver_tracing_start
tpmtool drivertracing start
pause
goto menu
:driver_tracing_stop
tpmtool drivertracing stop
pause
goto menu
:optional_commands
tpmtool optionalcommands
pause
goto menu
:compare_pcr
tpmtool comparepcr sha256
pause
goto menu
:print_pcr
tpmtool printpcr sha256
pause
goto menu
说明:
@echo off:关闭命令显示,清理输出。- 菜单:在命令行中显示一个简单的文本菜单,用户可以选择不同的选项。
set /p choice:让用户输入一个选项。- 每个命令执行的块:每个选项都会调用相应的
tpmtool命令,执行完后使用pause命令等待用户按任意键继续返回菜单。 goto menu:每个命令执行完后,跳回菜单界面。
如何使用:
- 将上述代码保存为
.cmd文件,例如tpm_menu.cmd。 - 双击
.cmd文件运行它。 - 按照菜单的提示输入选项。
这样,你就可以方便地通过菜单执行 TPM 相关的命令了。如果你希望对路径或其他参数进行更多自定义修改,也可以在相应的命令部分进行调整。

浙公网安备 33010602011771号