命令阻止
为了保持操作的完整性,平台上的软件不允许执行某些 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 2.0 命令在 TPM 驱动程序中是固定的。 仍可通过注册表更改阻止和取消阻止 TPM 1.2 命令。
直接注册表访问
组策略标志位于软件\策略\Microsoft\Tpm\BlockedCommandsHKEY_LOCAL_MACHINE\注册表项下。
若要确定应使用哪些列表来阻止 TPM 命令,有两个 DWORD 值用作布尔标志:
“IgnoreDefaultList”
如果设置 (值存在并且非零) ,则 TBS 将忽略默认的阻止命令列表。
“IgnoreLocalList”
如果设置 (值存在且) 为非零值,则 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。