web-dev-qa-db-ja.com

WindowsDPAPI暗号化キー管理を備えたBitLocker

Hyper-V仮想マシン内からアクセス可能なiSCSILUNに休止暗号化を適用する必要があります。

SAN上のLUNへのiSCSIアクセスを持つHyper-V仮想サーバー上でWindowsServer 2012を使用して、BitLockerを使用して実用的なソリューションを実装しています。 この投稿で定義されている「フロッピーディスクキーストレージ」ハックを使用することで、これを正常に行うことができました。しかし、この方法は私には「おかしな」ように思えます。

私の継続的な調査で、Amazon Corporate ITチームが[〜#〜]ホワイトペーパー[〜#〜]「フロッピーディスクハック」を使わずに、よりエレガントなソリューションで私が探していたものを正確に概説しました。このホワイトペーパーの7ページで、BitLockerキーを安全に管理するためにWindows DPAPI暗号化キー管理を実装したと述べています。これはまさに私が探していることですが、彼らはこれを行うためにスクリプトを書かなければならないと述べました、それでも彼らはスクリプトまたはそれを作成する方法についてのポインタさえ提供していません。

"スクリプトをサービスおよびサーバーのマシンアカウントDPAPIキーで保護されたキーストアファイルと組み合わせて作成する方法"の詳細を知っている人はいますか(ホワイトペーパーに記載されています) )BitLockerボリュームを管理および自動ロック解除するには?アドバイスをいただければ幸いです。

---編集1 ---

以下のエヴァンの回答に基づいて、これが私が理解したことですが、私はまだ立ち往生しています。

PsExecを使用して次のコマンドを実行すると、PowerShellはシステムアカウントで実行され、「暗号化」されると想定しています。 Evanが述べたように、「マシンアカウントのパスワード付きの文字列」。これは正しいです?

PsExec.exe -i -s Powershell.exe

次に、PS内から( この投稿 を参照として使用)次のコマンドを実行してSecureStringパスワードを生成します。

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

これにより、「01000000d08c…」(合計524文字)の形式の安全な文字列を含むファイルが得られます。次に、以下を使用してパスワードを(Se​​cureStringとして)ロードし、nlock-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キーをどこに保存できますか?

8
bigmac

Amazonが行っているのは、システムコンテキストのDPAPIにBitlockerキーを格納することだけのようです。 TPMが仮想マシンに公開されていない場合、これはTPMにキーを格納するよりもはるかに安全性が低くなります(プレーンテキストキーは、システムとして実行されているすべてのサービスで取得できるのに対し、TPMに格納されているキーは回復できないため)これはおそらくあなたの唯一の選択肢です。

彼らが説明しているのと同様のことを達成するには、おそらく ConvertFrom-SecureString および補完的な ConvertTo-SecureString PowerShellAPIを使用します。 Microsoftのドキュメントによると、静的キーが指定されていない場合、ConvertFrom-SecureStringコマンドレットはDPAPIを使用します。システムコンテキストでスクリプトを実行すると、DPAPIはマシンアカウントのパスワードを使用して文字列を暗号化します。

その時点から、manage-bdeツールを使用して、取得したパスワード(例:manage-bde -unlock x: -password)を使用してドライブのロックを解除する必要があります。

6
Evan Anderson