命令阻止
为了保持作的完整性,平台上的软件不允许执行某些 TPM 命令。 例如,某些命令仅由系统软件执行。 当 TBS 阻止命令时,会根据需要返回错误。 默认情况下,TBS 会阻止可能影响系统隐私、安全性和稳定性的命令。 TBS 还假定软件堆栈的其他部分可能会限制对授权实体的某些命令的访问。
对于 TPM 版本 1.2 命令,有三个阻止命令列表:由组策略控制的列表、由本地管理员控制的列表和默认列表。 如果 TPM 命令位于任何列表中,则会阻止该命令。 但是,有组策略标志允许 TBS 忽略本地列表和默认列表。 可以通过组策略对象编辑器直接编辑或访问组策略标志。
注意
升级到作系统后,不会保留本地阻止的命令列表。 将保留组策略列表上阻止的命令。
对于 TPM 版本 2.0 命令,将反转阻止的逻辑;它使用允许的命令列表。 此逻辑将自动阻止首次创建列表时未知的命令。 在 Windows 版本发布后,将命令添加到 TPM 规范中时,这些新命令会自动被阻止。 只有注册表的更新才会将这些新命令添加到允许的命令列表中。
从 Windows 10 1809(Windows Server 2019)开始,允许的 TPM 2.0 命令无法再通过注册表设置进行作。 对于这些 Windows 10 版本,TPM 驱动程序中修复了允许的 TPM 2.0 命令。 仍可以通过注册表更改阻止和取消阻止 TPM 1.2 命令。
直接注册表访问
组策略标志位于注册表项 HKEY_LOCAL_MACHINE\软件\策略\Microsoft\Tpm\BlockedCommands。
若要确定应使用哪些列表来阻止 TPM 命令,有两个 DWORD 值用作布尔标志:
“IgnoreDefaultList”
如果 set (值存在且非零),则 TBS 将忽略默认阻止的命令列表。
“IgnoreLocalList”
如果 set (值存在且非零),则 TBS 将忽略本地阻止命令列表。
组策略对象编辑器
访问组策略对象编辑器
- 单击 “开始”。
- 单击 运行。
- 在 打开 框中,键入 gpedit.msc。 单击“确定”。 此时会打开组策略对象编辑器。
- 展开 计算机配置。
- 展开 管理模板。
- 展开 系统。
- 展开 受信任的平台模块服务。
可以在以下位置直接编辑特定阻止的 TPM1.2 命令的列表。
组策略列表:
HKEY_LOCAL_MACHINE Software Policies Microsoft Tpm BlockedCommands List
本地列表:
HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services SharedAccess Parameters Tpm BlockedCommands List
默认列表:
HKEY_LOCAL_MACHINE Software Microsoft Tpm BlockedCommands List
在每个注册表项下,有一个REG_SZ类型的注册表值列表。 每个值表示受阻的 TPM 命令。 每个注册表项都有“值名称”字段和“值数据”字段。 这两个字段(“值名称”和“值数据”)应与要阻止的 TPM 命令序号的十进制值完全匹配。
可以在以下位置直接编辑特定允许的 TPM 2.0 命令的列表。 在注册表项下,有一个REG_DWORD类型的注册表值列表。 每个值表示允许的 TPM 2.0 命令。 每个注册表值都有一个 名称 和一个 值 字段。 名称 与应允许的十六进制 TPM 2.0 命令序号匹配。 如果允许命令,则 值 值为 1。 如果命令序号不存在或值为 0,则会阻止该命令。
默认列表:
HKEY_LOCAL_MACHINE Software Microsoft Tpm AllowedW8Commands List
对于 Windows 8、Windows Server 2012 及更高版本,BlockedCommands 和 AllowedW8Commands 分别 注册表项来确定管理员帐户的受阻止或允许的 TPM 命令。 用户帐户在 BlockedUserCommands 和 AllowedW8UserCommands 中分别具有阻止或允许的 TPM 命令列表 注册表项。 在 Windows 10 版本 1607 中,AppContainer 应用程序引入了新的注册表项:BlockedAppContainerCommands 和 AllowedW8AppContainerCommands。