使用 TBS

TPM 基本服务功能分为四个功能区域:

为了确保不同的实体无法访问彼此的资源,提交到 TBS 的每个命令都与特定实体相关联。 这是通过为实体创建一个或多个上下文来实现的,这些上下文随后与该实体提交的每个后续命令相关联。 每个命令都包含一个上下文对象,该对象允许 TBS 在适当的上下文下执行 TPM 命令。 关闭上下文时,命令创建的所有对象都会从 TPM 刷新。

实体在首次访问 TBS 之前创建上下文,并维护上下文,直到完成执行 TBS 访问。 例如,对于 TSS,TCG 核心服务 (TSS) 功能会在启动时创建 TBS 上下文,并在该上下文关闭之前保持活动状态。

对于 Windows Server 2008 和 Windows Vista,TBS 将 TBS API 的访问权限限制为 Administrators、NT AUTHORITY\LocalService 和 NT AUTHORITY\NetworkService 帐户。 默认情况下,这些帐户是唯一可以连接到 TBS 并创建上下文的帐户。 可以通过创建包含字符串的 注册表项 Access 来修改访问限制, (REG_SZ ) 注册表值名称 SecurityDescriptor

数据类型

REG_SZ
其下如下所示:
HKEY_LOCAL_MACHINE
   Software
      Microsoft
         TPM
            Access
               SecurityDescriptor = SecurityDescriptor

示例:

O:BAG:BAD: (A;;0x00000001;;;BA) (A;;0x00000001;;;NS) (A;;0x00000001;;;LS)

默认情况下,TBS 支持的最大上下文数为 25。 可以通过在 HKEY_LOCAL_MACHINE\Software\Microsoft\Tpm 下创建或修改名为 MaxContexts 的DWORD 注册表值来更改此数字。 通过使用性能监视器工具来跟踪 TBS 上下文的数量,可以观察实时 TBS 上下文使用情况。

对于 Windows 8、Windows Server 2012 及更高版本,TBS 允许标准用户和管理员访问。 SecurityDescriptorMaxContexts 注册表项已过时。 对于Windows 8、Windows Server 2012 及更高版本,TBS 使用命令阻止来限制对某些命令的访问。

对于 Windows 10版本 1607,TBS 允许从 AppContainer 应用程序进行访问。 对于每个 TPM 版本,已分别将 BlockedAppContainerCommandsAllowedW8AppContainerCommands 与阻止和允许的 TPM 命令的匹配列表一起添加。

对于Windows 10版本 1803,不再支持 AllowedW8AppContainerCommands 下的注册表项。