我们部署了多台 Surface Pro 3 设备,并在 TPM + PIN 模式下启用了 BitLocker。这些设备配有 TPM 2.0 芯片,运行的是 Windows 8.1 Pro。
我们遇到一个问题,用户在输入正确的 PIN 时偶尔会收到“PIN 尝试次数过多”的错误。然后他们必须输入恢复密钥才能继续启动过程。然后他们每次启动设备时都需要输入恢复密钥,直到我们使用 tpm.msc 手动重置 TPM 锁定,这显然很不方便。
由于某种原因,TPM 进入锁定状态,但似乎不是因为反复输入错误的 PIN 码。如果您让设备继续运行,锁定最终不会超时,这也表明除了达到最大错误身份验证尝试次数之外,还有其他原因。我理解 TPM 2.0 规范规定应该如此,而 TPM 1.2 规范则将确切的行为留给了供应商。
运行Get-Tpm
表示 TPM 确实处于锁定状态,但未提供任何有关原因的信息。
有人知道我可以做些什么来尝试找出锁定的根本原因吗?
答案1
我读到的解释是,TPM 无权写入任何类型的日志或锁定拒绝访问的驱动器的原因。这很合理。给出原因也可能存在安全漏洞。
我能找到的唯一信息是输入的错误密码的数量。打开提升的 powershell 提示符并输入:
获取 tpm
与普通命令 shell 不同,您将有 LockoutCount 和 LockoutMax 条目。这将为您提供输入错误密码的计数。我确信用户确信他们总是输入正确的密码,但我发现通常是沟通不畅。
话虽如此,但还有许多其他的锁定原因。 https://technet.microsoft.com/en-us/library/dn383583(v=ws.11).aspx 具体来说,“什么原因导致 Bitlocker 恢复?”从插入 CD 到让设备电池完全放电,任何事情都可能导致锁定。我正尝试通过用户教育、帮助台教育和评估要更改哪些组/本地策略设置来解决此问题。 https://technet.microsoft.com/en-us/library/jj679890(v=ws.11).aspx
答案2
我最终设法在解决这个问题上取得了很大进展。我会尽力记住细节,但时间已经过去很久了……
不幸的是,有问题的机器是 Windows 8 机器,因此 cmdlet Get-Tpm
不会返回有关锁定计数器的信息。我最终设法编写了一个自定义脚本,直接从 TPM 读取这些计数器,果然,锁定计数器已达到锁定阈值。即使我们没有输入错误的 PIN,情况也是如此。
经过大量的挖掘,我最终偶然发现了 TPM 2.0 规范中的一个部分,其中描述了一种几乎肯定会导致问题的机制。在详细介绍之前,先了解一点背景知识会很有用... 在操作系统可以使用 TPM 之前,它必须调用 TPM 的启动例程。这似乎发生在显示 BitLocker PIN 屏幕之前。相反,一旦操作系统使用完 TPM,它应该调用 TPM 的关机例程。Windows 似乎在操作系统关机序列期间执行此操作。
问题出现在系统关机时,操作系统没有完全关闭。在这种情况下,在芯片关机之前没有调用 TPM 的关机例程。TPM 2.0 规范规定,如果在未调用 TPM 关机例程的情况下调用 TPM 的启动例程,则应将锁定计数器加一。此功能旨在防止针对 TPM 的特定类型的攻击。因此,当设备再次开机时,即使用户输入了正确的 BitLocker PIN,锁定计数器也会加一。
在我的具体案例中,所涉及的设备都是 Microsoft Surface Pro 3 平板电脑。我的直觉是,用户按住电源按钮关闭机器,但没有彻底关闭。通常,这不是一个大问题,因为锁定计数器最终会在两小时后再次递减。但是,如果他们经常这样做,锁定计数器就没有时间递减。问题还在于,如果机器断电,用于跟踪何时递减的计时器会重置,这意味着必须连续开机两小时才能递减。有些用户只会在短时间内将机器拿出来。
Surface Pro 3 支持 Microsoft 所称的“联网待机”或“InstantGo”功能。此功能使设备在电源管理方面表现得更像移动设备。点击电源按钮会导致设备进入低功耗模式,而不是传统的待机或睡眠模式。但是,我们已将电源计划切换为“高性能”,这会禁用联网待机模式,使设备表现得像传统 PC。我认为这可能是问题的一个因素。