【问题标题】:User mode access to the TPM on Windows用户模式访问 Windows 上的 TPM
【发布时间】:2020-05-06 08:18:35
【问题描述】:

我开发了一个 Windows 应用程序,它可以访问 TPM 的 NVM。 在开发过程中,我以管理员身份运行对其进行了测试,一切正常。 问题是,我不希望它在项目发布和使用时以管理员身份运行。

我曾考虑在有限的时间内提升应用程序的权限,但这需要管理员帐户为用户帐户分配他不应该拥有的权限。

然后我看到了这个文件: https://docs.microsoft.com/en-us/windows/win32/tbs/using-tbs 声明可以通过创建注册表值来修改访问限制,但没有说明如何。

  1. 哪种方式更能达到上述目标?
  2. 如果是通过提升权限,那么是哪一个?为什么它更好?
  3. 如果是使用上述文档的方法,那我该如何修改访问限制?如何修改?

【问题讨论】:

    标签: windows registry acl privileges tpm


    【解决方案1】:

    对于 TPM 2,在 Windows 8 及更高版本上,您必须将要使用的特定命令按其序号添加到 allowed commands 列表中。

    注册表位置是:

    HKEY_LOCAL_MACHINE    
       Software
          Microsoft
             Tpm
                AllowedW8Commands
                   List
    

    例如,如果您想允许 NV 读取命令,您将添加一个名为“14E”的新 REG_DWORD 注册表项,因为这是 TPM2_CC_NV_READ 序号的十六进制代码,并且值“1”。

    【讨论】:

    • 感谢您的回答。我也试过了,微软文档指出它应该在:HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Tpm\ AllowedW8Commands\ List 好吧,我都试过了(有或没有 List),但仍然无法访问非易失性内存,我相信我添加了我使用的所有命令也许更多。我错过了什么?
    • 是的,是List,对此感到抱歉。您的 Windows 版本和 TPM 版本是多少?另外,您能分享一下您尝试执行的代码吗?
    • 很遗憾,我无法共享代码,但我实际上正在做的是从 TPM 的 NVM 写入和读取。我使用这个 TPM 库:link 并运行写/读示例。当我以管理员身份运行它时,我可以成功写入和读取,当我以用户身份运行相同的示例时它会失败,即使在设置了这些注册表值之后也是如此。还有什么可以阻止用户帐户访问此 TPM 功能?或任何 TPM 功能?
    • 好的,所以我假设您还有一个 TPM2_CC_NV_Write 条目(十六进制代码 137)。另外,请注意,对于用户帐户,您应该使用AllowedW8UserCommands 注册表项(我的答案中的AllowedW8Commands 键是针对管理员帐户的,我刚刚在那篇文章的底部发现了这一点)所以尝试一下...
    • 所以我也试过了,应用程序仍然无法以用户身份访问。我调试了应用程序,发现 Tss2_Sys_ExecuteFinish
    猜你喜欢
    • 2011-03-05
    • 2015-07-08
    • 1970-01-01
    • 2013-10-11
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多