我想在 Windows 上使用经过 FIPS 认证的 Opal 驱动器来实现至少有一个受限制加密分区的系统。我想使用 Opal 的频带身份验证功能将对特定分区的访问限制为单个服务帐户。我希望 TPM 将频带身份验证密钥密封到该服务帐户。我已经搜索了 TCG 和 Microsoft 文档好几天了,但没有找到任何信息告诉我这是否可行。
答案1
我不太确定,但我会说“不,那样不行”。
首先,我不确定“将频段认证密钥密封到该服务帐户”是否是说得通与 TPM 相关的操作。操作系统无法向 TPM 证明特定用户正在执行访问,管理员可以冒充任何其他用户 ID,尤其是操作系统无需凭证就已需要使用的“服务帐户”用户 ID。
此外,TPM 的 PCR 是仅附加的并且代表严格排序的事件,但操作系统内的文件访问没有保证的顺序 - 因此如果操作系统尝试为每次文件访问使用当前 UID 扩展 PCR,它几乎永远不会成功两次获得相同的 PCR 值。
(或者,操作系统可以在 TPM 上生成 EFS 密钥对,并使用自己的功能确保只有特定帐户才能访问它——对于交互式用户帐户来说,这已经非常容易了,因为有 TPM 支持的 CNG 密钥提供商——但服务帐户不虽然他们可以使用 DPAPI,但实际上没有什么可以保护他们的密钥对不被配备 mimikatz 的管理员窃取。)
此外,在多用户操作系统中,一旦硬件设备被解锁,它遗迹无论操作系统中发生什么情况,它都会解锁。因此,即使 Windows 能够在特定帐户首次尝试访问特定 Opal 驱动器时将其解锁,从那时起,操作系统仍有责任防止其他用户访问同一驱动器。
换句话说,一旦您的服务启动,使用服务专用密钥与使用典型的 OS 范围 BitLocker 加密并依赖 NTFS 文件权限仍然没有区别。(如果您不能信任操作系统强制执行文件权限,您真的会信任它强制执行每个用户的 Opal 访问限制吗?)
答案2
我开始相信 Windows 的做法是在 Opal 驱动器上仅定义两个带区,一个用于管理员,一个用于用户数据。它为 Bitlocker 提供两个密钥,然后继续将用户数据带区作为原始卷进行管理,用户可以随意对其进行分区。这意味着用户无法访问驱动器的带区身份验证功能。所有用户访问控制都必须通过 NTFS 进行。