命令阻止

为了保持操作的完整性,平台上的软件不允许执行某些 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 将忽略本地阻止命令列表。

组策略对象编辑器

访问组策略对象编辑器

  1. 单击“启动”。
  2. 单击 “运行”
  3. 在“打开” 框中,键入 gpedit.msc 单击“确定”。 此时会打开组策略对象编辑器。
  4. 展开“计算机配置”。
  5. 展开 “管理模板”。
  6. 展开 “系统”。
  7. 展开 “受信任的平台模块服务”。

可以直接在以下位置编辑被阻止的特定 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 及更高版本,BlockedCommandsAllowedW8Commands 注册表项分别确定管理员帐户的阻止或允许的 TPM 命令。 用户帐户分别在 BlockedUserCommandsAllowedW8UserCommands 注册表项中具有阻止或允许的 TPM 命令列表。 在 Windows 10版本 1607 中,AppContainer 应用程序引入了新的注册表项:BlockedAppContainerCommandsAllowedW8AppContainerCommands