带有 Windows DPAPI 加密密钥管理的 BitLocker

big*_*mac 8 iscsi bitlocker disk-encryption amazon-ec2 windows-server-2012

我们需要在可从 Hyper-V 虚拟机内访问的 iSCSI LUN 上强制执行静态加密。

我们已经使用 BitLocker 实施了一个可行的解决方案,在 Hyper-V 虚拟服务器上使用 Windows Server 2012,该服务器具有对我们 SAN 上的 LUN 的 iSCSI 访问权限。我们能够通过使用THIS POST 中定义的“软盘密钥存储”黑客成功地做到这一点。但是,这种方法对我来说似乎很“笨拙”。

在我的持续研究中,我发现亚马逊企业 IT 团队发布了一份白皮书,其中准确概述了我在更优雅的解决方案中寻找的内容,没有“软盘黑客”。在本白皮书的第 7 页,他们声明他们实施了Windows DPAPI 加密密钥管理来安全地管理他们的 BitLocker 密钥。这正是我想要做的,但他们说他们必须编写一个脚本来做到这一点,但他们没有提供脚本,甚至没有提供关于如何创建脚本的任何指示。

有没有人详细了解如何创建“与服务和受服务器计算机帐户 DPAPI 密钥保护的密钥库文件结合的脚本”(正如他们在白皮书中所述)来管理和自动解锁 BitLocker 卷?任何建议表示赞赏。

--- 编辑 1 ---

根据下面埃文的回复,这是我想出来的,但我仍然被卡住了。

我假设使用PsExec并运行以下命令,PowerShell 正在系统帐户下运行,并且它将“使用机器帐户的密码加密字符串”,正如 Evan 所说。这样对吗?

PsExec.exe -i -s Powershell.exe
Run Code Online (Sandbox Code Playgroud)

然后在 PS 中,(使用这篇文章作为参考)我运行这个命令来生成 SecureString 密码:

ConvertTo-SecureString -String "MyBitLockerPassword" -AsPlainText –Force | ConvertFrom-SecureString | Out-File C:\securestring.txt
Run Code Online (Sandbox Code Playgroud)

这给了我一个包含“01000000d08c...”格式的安全字符串的文件(总共524个字符)。然后,我现在可以创建一个在启动时运行的计划任务,它使用以下内容加载密码(作为 SecureString)并将其传递给Unlock-BitLocker命令:

$SecureBitLockerPassword = Get-Content C:\securestring.txt | ConvertTo-SecureString
Unlock-BitLocker -MountPoint "E:" -Password $ SecureBitLockerPassword
Run Code Online (Sandbox Code Playgroud)

但是,如果我只是将加密的密码作为文件存储在硬盘驱动器上,那么加密和解密密码有什么意义呢?这不会像以纯文本形式存储密码并使用以下内容(无需创建安全字符串文件)一样不安全吗?

$SecureString = ConvertTo-SecureString " MyBitLockerPassword " -AsPlainText –Force
Unlock-BitLocker -MountPoint "E:" -Password $SecureString
Run Code Online (Sandbox Code Playgroud)

你会如何处理这个问题?我可以在哪里存储 SecureString 密钥以便只有系统帐户可以访问它?

Eva*_*son 6

看起来亚马逊所做的就是将 Bitlocker 密钥存储在系统上下文中的 DPAPI 中。虽然这比将密钥存储在 TPM 中的安全性要低得多(因为任何以 SYSTEM 身份运行的服务都可以检索明文密钥,而存储在 TPM 中的密钥无法恢复),如果 TPM 未暴露给虚拟机这可能是您唯一的选择。

为了完成类似于他们所描述的事情,我可能会使用ConvertFrom-SecureString免费的ConvertTo-SecureStringPowerShell API。根据 Microsoft 文档,ConvertFrom-SecureString如果未指定静态密钥,则 cmdlet 将使用 DPAPI。在 SYSTEM 上下文中运行脚本,DPAPI 将使用机器帐户的密码加密您的字符串。

从那时起,就是使用该manage-bde工具使用检索到的密码解锁驱动器的问题(例如manage-bde -unlock x: -password