Назад | Перейти на главную страницу

BitLocker с управлением ключами шифрования Windows DPAPI

Нам необходимо обеспечить шифрование покоя на iSCSI LUN, доступном из виртуальной машины Hyper-V.

Мы реализуем рабочее решение с использованием BitLocker, используя Windows Server 2012 на виртуальном сервере Hyper-V, который имеет доступ iSCSI к LUN в нашей SAN. Мы смогли успешно сделать это с помощью взлома «хранилища ключей гибких дисков», как определено в ЭТА ПОЧТА. Однако мне этот метод кажется "изворотливым".

В ходе дальнейшего исследования я обнаружил, что ИТ-команда Amazon опубликовала БЕЛАЯ БУМАГА это в точности обозначило то, что я искал в более элегантном решении, без «взлома дискеты». На странице 7 этого официального документа они заявляют, что реализовали Управление ключами шифрования Windows DPAPI для безопасного управления своими ключами BitLocker. Это именно то, что я собираюсь сделать, но они заявили, что им пришлось написать сценарий для этого, но они не предоставляют сценарий или даже какие-либо указания о том, как его создать.

Есть ли у кого-нибудь подробности о том, как создать "сценарий в сочетании со службой и файлом хранилища ключей, защищенным ключом DPAPI учетной записи компьютера сервера" (как указано в техническом документе) для управления томами BitLocker и их автоматической разблокировки? Любой совет приветствуется.

--- РЕДАКТИРОВАТЬ 1 ---

Основываясь на приведенном ниже ответе Эвана, я понял следующее, но все еще застрял.

Я предполагаю, что используя PsExec и выполнив следующую команду, PowerShell запущен под системной учетной записью и, как заявил Эван, «зашифрует строку с паролем учетной записи компьютера». Это верно?

PsExec.exe -i -s Powershell.exe

Затем изнутри PS (используя эта почта в качестве справки) Я запускаю эту команду, чтобы сгенерировать пароль SecureString:

ConvertTo-SecureString -String "MyBitLockerPassword" -AsPlainText –Force | ConvertFrom-SecureString | Out-File C:\securestring.txt

Это дает мне файл, содержащий защищенную строку в формате «01000000d08c…» (всего 524 символа). Затем я теперь могу создать задачу расписания для запуска при загрузке, которая использует следующее для загрузки пароля (как SecureString) и передачи его в Разблокировать-BitLocker команда:

$SecureBitLockerPassword = Get-Content C:\securestring.txt | ConvertTo-SecureString
Unlock-BitLocker -MountPoint "E:" -Password $ SecureBitLockerPassword

Однако, если я просто сохраняю зашифрованный пароль в виде файла на жестком диске, какой смысл в шифровании и расшифровке пароля? Разве это не было бы так же небезопасно, как сохранение пароля в виде обычного текста и использование следующего (без необходимости создания защищенного строкового файла)?

$SecureString = ConvertTo-SecureString " MyBitLockerPassword " -AsPlainText –Force
Unlock-BitLocker -MountPoint "E:" -Password $SecureString

Как еще вы подойдете к этому? Где я могу сохранить ключ SecureString, чтобы только системная учетная запись могла получить к нему доступ?

Похоже, что все, что делает Amazon, хранит ключи Bitlocker в DPAPI в контексте SYSTEM. Хотя это намного менее безопасно, чем хранение ключей в TPM (поскольку ключ открытого текста может быть получен любой службой, работающей как SYSTEM, в отличие от ключа, хранящегося в TPM, который не может быть восстановлен), если TPM не предоставляется виртуальной машине это, наверное, ваш единственный вариант.

Чтобы добиться чего-то похожего на то, что они описывают, я бы, вероятно, использовал ConvertFrom-SecureString и бесплатный ConvertTo-SecureString API-интерфейсы PowerShell. Согласно документации Microsoft ConvertFrom-SecureString командлет использует DPAPI, если не указан статический ключ. Запустите сценарий в контексте SYSTEM, и DPAPI зашифрует вашу строку с паролем учетной записи компьютера.

С этого момента нужно использовать manage-bde инструмент для разблокировки диска с помощью полученного пароля (например, manage-bde -unlock x: -password)