¿Cómo olvidar las teclas LUKS durante una emergencia?

7

Un día, mientras Alice está descargando algunas fotos del servidor Bobs, la alarma se apaga. Trudy vino a robar todos los datos.

Afortunadamente, el servidor está configurado para apagarse tras la alarma de la sala del servidor y tiene un cifrado completo del disco. Desafortunadamente, el cierre se está produciendo de forma bastante lenta porque el servidor está ocupado con Alice. Lo que es peor, Trudy trajo algo de nitrógeno líquido.

Ahora Trudy está de vuelta en el laboratorio y extrae las claves de cifrado de la memoria RAM de los servidores robados. Pronto Trudy sabrá acerca de las actividades secretas de Alice y Bobs.

P: Cryptsetup no pretende cerrar el dispositivo que contiene la raíz del sistema. ¿Existen otras soluciones que, más rápido que solo echo b > /proc/sysrq-trigger , aumenten el costo de los esfuerzos forenses en un sistema Linux?

EDITAR: Sí, esta pregunta está intencionalmente limitada a asumir un tiempo de preparación finito y los detalles de la implementación involucrados en la administración de los contenedores LUKS a través de cryptsetup, existen otras preguntas más generales.

    
pregunta anx 12.06.2016 - 19:01
fuente

2 respuestas

9

Eliminar el encabezado LUKS haría que los datos fueran completamente irrecuperables, incluso si la contraseña / clave de cifrado se descubriera posteriormente, ya que las claves / contraseñas utilizadas por LUKS simplemente cifran una clave maestra almacenada en el encabezado y esa clave maestra en realidad cifra los datos .

Por lo tanto, primero, eliminar los primeros 2 MB del dispositivo donde reside el volumen LUKS debería hacer que sea imposible descifrarlo aún más si se obtiene la contraseña (por ejemplo, mediante criptoanálisis de hule). Asegúrese de sobrescribir el encabezado de forma síncrona para que las escrituras no terminen en el búfer y se descarten, ya que luego reinicia la computadora sin esperar a que se vacíen los búferes.

Entonces, la memoria RAM debe ser borrada. Apagar la computadora es una posibilidad, pero los datos pueden permanecer en la memoria RAM el tiempo suficiente para que alguien lo empape en nitrógeno líquido y extienda aún más el período de remanencia de datos. Otro enfoque que utiliza Tails es borrar la RAM del software mediante kexec 'kernel especial que sobrescribe la RAM. Eso debería derrotar el ataque de arranque en frío.

    
respondido por el André Borie 12.06.2016 - 23:02
fuente
1

Hay dos formas de abordar esto, dependiendo de qué tan inaccesible quieres hacer los datos.

Si simplemente desea requerir el conocimiento de la frase de contraseña de LUKS para recuperar el acceso a los datos (más o menos el caso normal, pero caducado), puede usar cryptsetup luksSuspend en el nombre del dispositivo dm-crypt. Según la página del manual, esto:

  

Suspende un dispositivo activo (todas las operaciones de IO se bloquearán y los accesos al dispositivo esperarán indefinidamente) y borra la clave de cifrado de la memoria del núcleo.

Para recuperarte de un luksSuspend, haz un luksResume.

Si desea asegurarse de que Trudy no pueda acceder a los datos, entonces necesita algo más drástico. En el caso fácil, asumimos que Trudy no tiene una copia de seguridad del encabezado LUKS, en cuyo caso es suficiente sobrescribir el encabezado LUKS. Puede sobrescribir exactamente el encabezado y nada más (el tamaño del encabezado es "compensación de la carga útil" (según lo informado por cryptsetup luksDump) por 512 bytes, y comienza justo al principio del dispositivo), o puede jugar de forma segura y sobrescribir un poco más. Sobrescribir los primeros 100 MB de un HDD rotativo tomará alrededor de 1 a 3 segundos, dependiendo principalmente de la velocidad de giro del disco (los discos de 7200 rpm tienden a alcanzar los 100-120 MB / s, y los discos más lentos, obviamente, son más lentos) ):

ADVERTENCIA: NO HAGAS ESTO A MENOS QUE SABES QUE QUIERES

dd if=/dev/urandom of=/dev/sdb1 bs=1M count=100 conv=sync

ADVERTENCIA: COMANDO PELIGROSO ANTERIOR

Después de sobrescribir el encabezado, asegúrese de borrar la clave de la memoria del núcleo para asegurarse de que los datos restantes no se puedan descifrar. Esto es tan simple como cryptsetup luksSuspend dm-name o cryptsetup remove dm-name . Después de hacer eso, el contenedor solo contiene datos de aspecto aleatorio que (aparte de romper el algoritmo de cifrado utilizado) no se pueden descifrar. La salida de cualquier buen algoritmo de cifrado, en ausencia de la clave de descifrado, será estadísticamente indistinguible del ruido aleatorio.

En el último caso, si realmente quiere dificultar la vida de Trudy, entonces puede emita un ATA Secure Erase al dispositivo de almacenamiento subyacente. Suponiendo que Secure Erase se implemente correctamente en la unidad, una vez que finalice (lo que puede demorar varias horas en unidades de disco duro rotativas sin autocifrado, pero que normalmente no se puede interrumpir una vez que se inicie), no los datos almacenados previamente serán accesible. Sin embargo, para la mayoría de los modelos de amenaza, eso es probable que sea excesivo; sobrescribir el encabezado LUKS y borrar la clave en la RAM será casi seguro que sea suficiente para evitar el acceso a los datos por parte de cualquier adversario razonable. El Borrado seguro puede ser necesario para asegurar que no haya remanentes de material clave en un SSD, debido a nivelación de desgaste .

    
respondido por el a CVn 14.06.2016 - 14:13
fuente

Lea otras preguntas en las etiquetas