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

8

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

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

В ходе моих дальнейших исследований я обнаружил, что ИТ-команда Amazon Corporate опубликовала WHITEPAPER, в которой было изложено именно то, что я искал, в более элегантном решении, без «взлома дискет». На странице 7 этого документа говорится, что они реализовали Windows DPAPI Encryption Key Management для безопасного управления своими ключами 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) и передачи его команде Unlock-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, чтобы только системная учетная запись могла получить к нему доступ?

Биг Мак
источник

Ответы:

6

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

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

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

Эван Андерсон
источник
Эван, спасибо за твой пост. Вы указываете мне правильное направление, но я все еще не могу определить, где и как хранится зашифрованный ключ. Пожалуйста, смотрите мое обновление в оригинальном посте выше.
bigmac 15.07.13
1
@bigmac - Ваше редактирование - вот почему в моем первом абзаце есть фраза «гораздо менее безопасно». Единственная защита, которую предлагает этот метод, защищает ключ от злоумышленников, которые могут получить привилегии SYSTEM, и как только они получат SYSTEM, для вашего ключа «игра окончена». В TPM, по крайней мере, нельзя заставить разглашать свой ключ. Извлечение ключа Bitlocker из памяти, безусловно, возможно, например, при холодной загрузке памяти против физического оборудования, но это не ставит под угрозу ключ TPM. Вы пришли к пониманию, что я ожидал от вас - документ Амазонки - театр безопасности.
Эван Андерсон