BitLocker com gerenciamento de chave de criptografia DPAPI do Windows

8

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

Implementamos uma solução funcional usando o BitLocker, usando o Windows Server 2012 em um servidor virtual Hyper-V que tenha acesso iSCSI a um LUN em nossa SAN. Conseguimos fazer isso com êxito usando o hack "armazenamento em disco da disquete", conforme definido neste POST . No entanto, esse método me parece "hokey".

Em minha pesquisa contínua, descobri que a equipe de TI da Amazon Corporate publicou um WHITEPAPER que descrevia exatamente o que eu procurava em uma solução mais elegante, sem o "hack do disquete". Na página 7 deste white paper, eles afirmam que implementaram o Gerenciamento de Chaves de Criptografia DPAPI do Windows para gerenciar com segurança suas chaves do BitLocker. É exatamente isso que pretendo fazer, mas eles declararam que precisavam escrever um script para fazer isso, mas não fornecem o script nem sequer apontam 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 indicado no whitepaper) para gerenciar e desbloquear automaticamente os volumes do BitLocker? Qualquer conselho é apreciado.

--- EDIT 1 ---

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

Suponho que, usando PsExec e executando o seguinte comando, o PowerShell esteja sendo executado sob a conta do sistema e que "criptografará a string com a senha da conta da máquina", conforme Evan afirmou. Isso está correto?

PsExec.exe -i -s Powershell.exe

Então, no PS, (usando esta postagem como referência), eu executo este comando para gerar a senha do SecureString:

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

Isso me fornece um arquivo que contém a string segura no formato "01000000d08c…" (total de 524 caracteres). Agora, agora posso criar uma Tarefa de Agendamento para executar na inicialização, que usa o seguinte para carregar a senha (como 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 estou simplesmente armazenando a senha criptografada como um arquivo no disco rígido, qual é o sentido de criptografar e descriptografar a senha? Isso não seria tão inseguro quanto armazenar a senha em texto sem formatação 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 posso armazenar a chave SecureString para que somente a conta do sistema possa acessá-la?

Big Mac
fonte

Respostas:

6

Parece que tudo o que a Amazon está fazendo é armazenar as chaves do Bitlocker no DPAPI no contexto do SISTEMA. Embora isso seja muito menos seguro do que armazenar as chaves em um TPM (porque a chave de texto sem formatação 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 for exposto à máquina virtual essa é provavelmente a sua única opção.

Para realizar algo semelhante ao que eles estão descrevendo, eu provavelmente usaria as APIs do PowerShell de ConvertFrom-SecureStringcortesia ConvertTo-SecureString. De acordo com os documentos da Microsoft, o ConvertFrom-SecureStringcmdlet usa DPAPI se nenhuma chave estática for especificada. Execute o script no contexto SYSTEM e o DPAPI criptografará sua string com a senha da conta da máquina.

A partir desse ponto, é uma questão de usar a manage-bdeferramenta para desbloquear a unidade usando a senha recuperada (por exemplo manage-bde -unlock x: -password)

Evan Anderson
fonte
Evan, obrigado por seu post. Você está me apontando na direção certa, mas ainda estou decidido a determinar onde ou como a chave criptografada é armazenada. Por favor, veja minha atualização no post original acima.
bigmac
1
@ bigmac - Sua edição é por isso que o meu primeiro parágrafo tem a frase "muito menos seguro". A única proteção oferecida por este método protege a chave contra invasores que possam obter privilégios de SISTEMA e, depois de terem o SISTEMA, é "game over" para sua chave. No TPM, pelo menos, não pode ser feito para divulgar sua chave. A coleta da chave do Bitlocker da memória é certamente possível, além de ataques de memória de inicialização a frio contra hardware físico, mas isso não compromete a chave do TPM. Você está percebendo o que eu esperava ... O whitepaper da Amazon é um teatro de segurança.
Evan Anderson