Windows 11 带有一项名为“TPM 诊断”的新可选功能,允许管理员查询存储在设备 TPM 安全处理器上的数据。
谈到 Windows 11,微软将所有赌注押在 TPM 2.0 安全处理器上,作为操作系统支持其某些安全功能的一项要求。
“未来的 PC 需要这种现代硬件信任根来帮助抵御常见和复杂的攻击,例如勒索软件和来自民族国家的更复杂的攻击。要求 TPM 2.0 通过要求内置信任根,”微软在一篇新的博客文章中解释道。
“TPM 2.0 是通过 Windows Hello 和 BitLocker 提供安全性以帮助客户更好地保护他们的身份和数据的关键构建块。此外,对于许多企业客户而言,TPM 通过提供用于证明健康的安全元素来帮助促进零信任安全设备。”
TPM 是一种硬件安全处理器,用于安全地“保护硬件屏障背后的加密密钥、用户凭据和其他敏感数据,以便恶意软件和攻击者无法访问或篡改这些数据”。
虽然这听起来像是一个重要的设备,但许多拥有完美运行 Windows 10 的旧计算机的用户感到不安,因为如果他们想升级到 Windows 11,他们现在被迫购买新硬件。
尽管由于这项新要求,Microsoft 受到了相当大的阻力,但一项新的可选功能显示了他们对 TPM 安全处理器及其在 Windows 11 上的使用的重视程度。
Windows 11 包含一个新的 TPM 诊断工具
微软在使用 TPM 处理器方面的投资显示在一个名为“TPM 诊断”的全新 Windows 11 命令行工具中,该工具允许管理员查询 TPM 以获取存储的信息。

安装后,C:\Windows\System32 文件夹中将有一个新的“tpmdiagnostics.exe”可执行文件,允许您从已安装的 TPM 查询各种信息。
虽然 Microsoft 已经包含可信平台模块管理控制台 (tpm.msc),但它仅提供少量信息和清除 TPM 的能力。
TPmDiagnostics.exe 工具允许访问更重要的信息,包括 Windows 证明身份密钥、 背书密钥证书、存储在 TPM 中的其他密钥、启动计数器、有关正在运行的任务的信息、有关 TPM 的信息等等。
由于我只在没有 TPM 功能的虚拟机中安装了 Windows 11,因此我通过将文件复制到安装了 TPM 2.0 模块的 Windows 10 机器来测试该程序。
TpmDiagnostics.exe 程序似乎只对 Windows 10 Pro 用户可用,应该从Elevated Command Prompt运行,当它自己执行时,将列出可用命令的帮助文件。
例如,该命令TpmDiagnostics.exe GetCapabilities
将列出已安装的 TPM 处理器的功能和设置,如下所示。

除了查询存储的密钥和其他信息外,您还可以使用 TPM 执行 Base64、十六进制和二进制文件的编码/解码。

除非您了解 TPM 中存储了哪些数据,否则我不建议对其进行过多处理,以免意外移除设备操作所需的密钥。
但是,Microsoft 可信平台 (TPM) 文档和新的 TpmDiagnostics.exe 工具可以提供有关 Windows 11 底层安全机制的大量信息。
tpmdiagnostics.exe 工具中可用命令的完整列表是:
tpmdiagnostics : A tool for Windows 10 build 22000
Copyright (c) Microsoft Corporation. All rights reserved.
Flags:
PrintHelp ( /h -h )
PromptOnExit ( -x /x )
UseECC ( -ecc /ecc )
UseAes256 ( -aes256 /aes256 )
QuietPrint ( -q /q )
PrintVerbosely ( -v /v )
Use the 'help' command to get more information about a command.
Commands:
TpmInfo:
GetLockoutInfo
IsOwned
PlatformType
CheckFIPS
ReadClock
GetDeviceInformation
IfxRsaKeygenVulnerability
GatherLogs [full directory path]
PssPadding
IsReadyInformation
TpmTask:
MaintenanceTaskStatus
ShowTaskStatus
IsEULAAccepted
ProvisionTpm [force clear] [allow PPI prompt]
TpmProvisioning:
PrepareTPM
CanUseLockoutPolicyClear
CanClearByPolicy
AutoProvisioning:
IsAutoProvisioningEnabled
EnableAutoProvisioning
DisableAutoProvisioning [-o]
EK:
EkInfo
ekchain
EkCertStoreRegistry
GetEkCertFromWeb [-ecc] [cert file]
GetEkCertFromNVR [-ecc] [cert file]
GetEkCertFromReg [-ecc] [ output file ]
GetEk [-ecc] [key file]
CheckEkCertState
InstallEkCertFromWeb
InstallEkCertFromNVR
InstallEkCertThroughCoreProv
EKCertificateURL
WindowsAIK:
InstallWindowsAIK [-skipCert]
WinAikPersistedInTpm
UninstallWindowsAIKCert
GetWindowsAIKCert [cert file]
IsWindowsAIKInstalledInNCrypt
EnrollWindowsAIKCert
GetWindowsAIKPlatformClaim ["fresh"] [output file]
OtherKeys:
PrintPublicInfo [ srk / aik / ek / handle ] [-asBcryptBlob / -RsaKeyBitsOnly / -RsaSymKeyBitsOnly] [-ecc]
TestParms [ SYMCIPHER | RSA ] [ algorithm specific arguments ]
EnumerateKeys
NVStorage:
EnumNVIndexes
DefineIndex [index] [size] [attribute flags]
UndefineIndex [index]
ReadNVIndexPublic [index]
WriteNVIndex [index] [data in hex format | -file filename]
ReadNVIndex [index]
NVSummary
NVBootCounter:
CheckBootCounter
ReadBootCounter [/f]
PCRs:
PrintPcrs
PhysicalPresence:
GetPPTransition
GetPPVersionInfo
GetPPResponse
GetPPRequest
TPMCommandsAndResponses:
CommandCode [hex command code]
ResponseCode [hex response code]
Tracing:
EnableDriverTracing
DisableDriverTracing
FormatTrace [etl file] [output json file]
DRTM:
DescribeMle [MLE Binary File]
Misc:
Help [command name]
DecodeBase64File [file to decode from base 64]
EncodeToBase64File [file to encode]
ReadFileAsHex [file to read]
ConvertBinToHex [file to read] [file to write to]
ConvertHexToBin [file to read] [file to write to]
Hash [hex bytes or raw value to hash]
GetCapabilities