Para desbloquear remotamente los volúmenes LUKS a través de SSH, ¿cómo puedo verificar la integridad antes de enviar una frase de contraseña?

4

Aunque esto está estrechamente relacionado con la pregunta recientemente cerrada Maid malvadas en el servidor habitación [cerrada] , creo que es más responsable.

Me gustaría desbloquear volúmenes LUKS en servidores alojados remotamente, usando initramfs con BusyBox, y Dropbear como servidor SSH. En la respuesta a la pregunta cerrada citada anteriormente, paj28 señala:

 Remote boot techniques like dropbear are vulnerable to a remote variant of
 the evil maid attack. For example, someone with physical access could tamper
 with the dropbear partition, and have it leak the key on the next reboot.

El ataque también se describe en LUKS sirenas de desbloqueo remoto .

En el entorno de BusyBox initramfs, me gustaría verificar la integridad de un servidor remoto antes de enviar la frase de contraseña para desbloquear LUKS. Puedo verificar la integridad de los archivos al verificar las sumas de verificación sha256 en una lista local. Pero, ¿detectaría eso la modificación de los initramfs para capturar la frase de contraseña?

Puedo obtener fácilmente el MAC de eth0, y puedo usar traceroute para detectar cambios en el entorno de red. Quizás pueda agregar hwinfo a initramfs para confirmar el entorno de hardware. ¿Qué cambios podrían pasar desapercibidos por esas pruebas?

No estoy pidiendo una solución, pero si me falta una elegante, hágamelo saber.

    
pregunta mirimir 06.12.2013 - 00:44
fuente

2 respuestas

3

No lo haces. No puedes.

Lo mejor que puede hacer es una ruta de inicio confiable usando TPM que forme parte del proceso de desbloqueo de partición. Pero a menos que el hardware esté bloqueado en su clave de firma personal (que probablemente no lo esté), incluso eso puede ser subvertido.

Sin embargo, TPM es probablemente lo más cerca que puedes estar. Esto no es trivial de implementar, y es poco probable que encuentre una solución estándar para esto.

    
respondido por el tylerl 06.12.2013 - 03:17
fuente
0

Puede usar la certificación remota, como lo proporciona un TPM, utilizando SRTM .

Asegurar que un TPM sea genuino

A pesar de lo que dice @tylerl, no tiene que confiar en su propia clave de firma para que un TPM brinde una certificación. Un TPM genuino utilizará una Clave de aprobación , o EK, que es una clave grabada en el TPM en el momento de la fabricación, y la clave privada correspondiente nunca se libera al público (de manera similar a cómo funciona la PKI para la web). La única forma de presentar un TPM falso (como ser emulado en un software) sería si la Clave de endoso no es secreta. Si su centro de datos tiene un EK robado, tiene mucho más de qué preocuparse. Un TPM no lo protegerá de tal adversario más que HTTPS lo protegerá de una CA deshonesta.

Arranque medido

Un TPM proporciona una función llamada inicio medido , cuyos detalles se pueden encontrar en all over esta sitio web . La esencia de esto es que un componente seguro, de solo lectura, de su BIOS, llamado CRTM, inicia una reacción en cadena donde diferentes componentes de su sistema se procesan y envían al TPM. A menos que todos los hashes coincidan con un estado bueno conocido, el TPM permanecerá bloqueado o sellado . La única forma en que se puede desellar es cuando el sistema se encuentra en un estado conocido. Los datos exactos que sella son arbitrarios. Se puede usar para sellar, por ejemplo, las claves de cifrado, por lo que el sistema solo puede iniciarse si no se ha manipulado el sistema. También se puede usar para almacenar un valor secreto que solo usted conoce, por lo que el hardware malicioso no puede predecir qué es este valor y presentárselo. Solo si lo ve, sabe que el TPM es genuino y que su sistema se encuentra en un estado normal. Esta es la base de Anti-EvilMaid de Joanna Rutkowska .

Integridad después de que TPM haya hecho su trabajo

El trabajo del TPM finaliza una vez que inicia tu kernel. Asegura que se haya medido todo el resto de su sistema, desde el BIOS a las ROM opcionales, el cargador de arranque y la NVRAM, pero después de medir el kernel, su trabajo está listo. El kernel ha sido medido, pero el resto del sistema no lo está. Cuando llegue a este punto, el núcleo debe proporcionar algún tipo de medida. Una característica que tiene Linux es la Integrity Measurement Architecture , o IMA. IMA funciona manteniendo un hash de todos los archivos en el sistema en un atributo extendido. Estos hash se comparan mediante un hash raíz maestro que se almacena en el TPM. El kernel se negará a leer cualquier archivo sin hashes o su hash no puede ser verificado como legítimo. En este punto, ha experimentado un arranque medido y ahora se encuentra en un entorno de ejecución confiable.

Caveats

  • El inicio medido no previene contra algunos tipos de ataques de hardware, como los ataques DMA. Algunas veces es posible prevenirlos (por ejemplo, con DMAR), pero aquí está fuera del alcance.
  • Si su adversario es lo suficientemente poderoso como para tener en sus manos el DK, pueden crear un TPM falso en el software y usted no notará la diferencia.
  • Para obtener una lectura válida del TPM, el sistema debe estar, al menos inicialmente, no comprometido, o debe verificar los valores de hash notificados en relación con los valores conocidos.
  • Algunos BIOS pueden tener una implementación incorrecta del arranque medido. Por ejemplo, el CRTM puede residir en un almacenamiento flash grabable, y un TPM se basa en que el CRTM es de solo lectura.
  • Un adversario con muchos recursos puede ser capaz de decapear el TPM y leer el contenido en el interior con un microscopio electrónico. Esto es muy difícil, pero físicamente posible.
  • Las versiones anteriores de TPM (1.1) eran vulnerables a ataques de restablecimiento de plataforma . Debería usar un TPM más nuevo (2.0 o al menos 1.2) para evitar esto. Alternativamente, el iTPM integrado de Intel puede funcionar para usted.
respondido por el forest 29.11.2017 - 11:12
fuente

Lea otras preguntas en las etiquetas