BitLocker con Windows DPAPI Encryption Key Management


8

Tenemos la necesidad de aplicar el cifrado en reposo en un iSCSI LUN al que se puede acceder desde una máquina virtual Hyper-V.

Hemos implementado una solución de trabajo usando BitLocker, usando Windows Server 2012 en un servidor virtual Hyper-V que tiene acceso iSCSI a un LUN en nuestra SAN. Pudimos hacer esto exitosamente usando el hack de "almacenamiento de clave de disquete" como se define en ESTE POST . Sin embargo, este método me parece "hokey".

En mi investigación continua, descubrí que el equipo de TI corporativo de Amazon publicó un WHITEPAPER que describía exactamente lo que estaba buscando en una solución más elegante, sin el "pirateo de disquetes". En la página 7 de este documento técnico, afirman que implementaron la administración de claves de cifrado DPAPI de Windows para administrar de forma segura sus claves BitLocker. Esto es exactamente lo que estoy buscando hacer, pero declararon que tenían que escribir un guión para hacerlo, sin embargo, no proporcionan el guión o incluso ningún indicador sobre cómo crear uno.

¿Alguien tiene detalles sobre cómo crear un "script junto con un servicio y un archivo de almacenamiento de claves protegido por la clave DPAPI de la cuenta de máquina del servidor" (como se indica en el documento técnico) para administrar y desbloquear automáticamente los volúmenes de BitLocker? Cualquier consejo es apreciado.

--- EDITAR 1 ---

Según la respuesta de Evan a continuación, esto es lo que he descubierto, pero todavía estoy atascado.

Supongo que usando PsExec y ejecutando el siguiente comando, que PowerShell se está ejecutando bajo la cuenta del sistema y que "cifrará la cadena con la contraseña de la cuenta de la máquina", como dijo Evan. ¿Es esto correcto?

PsExec.exe -i -s Powershell.exe

Luego, desde PS, (usando esta publicación como referencia) ejecuto este comando para generar la contraseña de SecureString:

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

Eso me da un archivo que contiene la cadena segura en el formato de "01000000d08c ..." (un total de 524 caracteres). Entonces, ahora puedo crear una Tarea de programación para ejecutar en el arranque que usa lo siguiente para cargar la contraseña (como SecureString) y pasarla al comando Unlock-BitLocker :

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

Sin embargo, si simplemente estoy almacenando la contraseña cifrada como un archivo en el disco duro, ¿cuál es el punto de cifrar y descifrar la contraseña? ¿No sería tan inseguro como almacenar la contraseña en texto plano y usar lo siguiente (sin la necesidad de crear el archivo de cadena seguro)?

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

¿De qué otra manera abordarías esto? ¿Dónde podría almacenar la clave SecureString para que solo la cuenta del sistema pueda acceder a ella?

Respuestas:


6

Parece que todo lo que Amazon está haciendo es almacenar las claves de Bitlocker en DPAPI en el contexto del SISTEMA. Si bien esto es mucho menos seguro que almacenar las claves en un TPM (porque la clave de texto sin formato puede ser recuperada por cualquier servicio que se ejecute como SYSTEM frente a una clave almacenada en un TPM que no se puede recuperar) si el TPM no está expuesto a la máquina virtual Esta es probablemente su única opción.

Para lograr algo similar a lo que están describiendo, probablemente usaría las API de PowerShell ConvertFrom-SecureStringy complementarias ConvertTo-SecureString. Según los documentos de Microsoft, elConvertFrom-SecureString cmdlet usa DPAPI si no se especifica una clave estática. Ejecute el script en el contexto del SISTEMA y DPAPI cifrará su cadena con la contraseña de la cuenta de la máquina.

A partir de ese momento, se trata de utilizar la manage-bdeherramienta para desbloquear el disco utilizando la contraseña recuperada (por ejemplo manage-bde -unlock x: -password)


Evan, gracias por tu publicación. Me estás señalando en la dirección correcta, pero todavía estoy atascado en determinar dónde o cómo se almacena la clave cifrada. Por favor, vea mi actualización en la publicación original anterior.
bigmac

1
@bigmac - Tu edición es la razón por la cual mi primer párrafo tiene la frase "mucho menos seguro". La única protección que ofrece este método asegura la clave de los atacantes que podrían obtener privilegios de SYSTEM, y una vez que tienen SYSTEM, se "termina el juego" para su clave. En TPM, al menos, no se puede hacer que divulgue su clave. Ciertamente, es posible cosechar la clave Bitlocker de la memoria, ya que los ataques de memoria de arranque en frío contra el hardware físico, pero eso no compromete la clave del TPM. Te estás dando cuenta de lo que esperaba que hicieras ... El documento técnico de Amazon es un teatro de seguridad.
Evan Anderson
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.