BitLocker com o gerenciamento de chaves de criptografia do Windows DPAPI

8

Precisamos impor a criptografia em repouso em um LUN iSCSI acessível a partir de uma máquina virtual Hyper-V.

Implementamos uma solução de trabalho usando o BitLocker, usando o Windows Server 2012 em um servidor virtual Hyper-V que tem acesso iSCSI a um LUN em nossa SAN. Conseguimos fazer isso usando o hack "armazenamento de chaves de disquete", conforme definido em ESTE POST . No entanto, este método parece "piegas" para mim.

Em minha pesquisa contínua, descobri que a equipe de TI corporativa da Amazon publicou um WHITEPAPER que delineou exatamente o que eu estava procurando em uma solução mais elegante, sem o "disquete de disquete". Na página 7 deste white paper, eles afirmam que implementaram o Gerenciamento de chave de criptografia do Windows DPAPI para gerenciar com segurança suas chaves do BitLocker. Isso é exatamente o que eu estou procurando fazer, mas eles disseram que tinham que escrever um script para fazer isso, mas eles não fornecem o script ou até mesmo qualquer ponte sobre como criar um.

Alguém tem detalhes sobre como criar um script "em conjunto com um serviço e um arquivo de armazenamento de chaves protegido pela chave DPAPI da conta de máquina do servidor" (como eles indicam no informe oficial) para gerenciar e desbloquear automaticamente volumes do BitLocker? Qualquer conselho é apreciado.

--- EDITAR 1 ---

Com base na resposta de Evan abaixo, aqui está o que eu descobri, mas ainda estou presa.

Eu assumo que usando PsExec e executando o seguinte comando, que O PowerShell está sendo executado na conta do sistema e "criptografará a string com a senha da conta da máquina", conforme Evan afirmou. Está correto?

PsExec.exe -i -s Powershell.exe

Depois, a partir do PS, (usando este post como referência) Eu corro este comando para gerar a senha do SecureString:

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

Isso me dá um arquivo contendo a string segura no formato “01000000d08c…” (um total de 524 caracteres). Então, agora posso criar uma Tarefa Agendada para ser executada na inicialização que usa o seguinte para carregar a senha (como um SecureString) e passá-la para o Comando Unlock-BitLocker :

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

No entanto, se eu estiver simplesmente armazenando a senha criptografada como um arquivo no disco rígido, qual é o objetivo da criptografia e da descriptografia da senha? Isso não seria tão inseguro quanto armazenar a senha em texto simples e usar o seguinte (sem a necessidade de criar o arquivo de string seguro)?

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

De que outra forma você abordaria isso? Onde eu poderia armazenar a chave SecureString de modo que somente a conta do sistema pudesse acessá-la?

    
por bigmac 03.07.2013 / 00:31

1 resposta

6

Parece que tudo que a Amazon está fazendo é armazenar as chaves do Bitlocker na DPAPI no contexto SYSTEM. Embora isso seja muito menos seguro do que armazenar as chaves em um TPM (porque a chave de texto simples pode ser recuperada por qualquer serviço em execução como SYSTEM versus uma chave armazenada em um TPM que não pode ser recuperado) se o TPM não estiver exposto à máquina virtual esta é provavelmente a sua única opção.

Para realizar algo semelhante ao que estão descrevendo, provavelmente use o ConvertFrom-SecureString e ConvertTo-SecureString APIs do PowerShell complementares. De acordo com a documentação da Microsoft, o cmdlet ConvertFrom-SecureString usa DPAPI se nenhuma chave estática for especificada. Execute o script no contexto SYSTEM e a DPAPI criptografará sua string com a senha da conta da máquina.

A partir daí, é necessário usar a ferramenta manage-bde para desbloquear a unidade usando a senha recuperada (por exemplo, manage-bde -unlock x: -password )

    
por 12.07.2013 / 22:55