¿Es posible evitar que un tipo de archivo se determine en un sistema Linux?

15

Tengo varios archivos en mi sistema Ubuntu, que son particiones encriptadas LUKS. Para mi vergüenza hasta hoy, pensé que simplemente cambiar la extensión del archivo binario será suficiente para ocultar lo que realmente es un archivo. Es decir. Si cambio el nombre de mi partición LUKS stuff a windows.vdi , todos pensarían que se trata de una unidad de caja virtual, aunque está dañada, porque un intento de usarla como sugiere la extensión definitivamente habría fallado.

Pero hoy he conocido el comando file , que muestra correctamente qué es un archivo:

file windows.vdi 
windows.vdi: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: xxx-xxx-xxx

Y el mismo problema es con otros tipos de archivos, que me gustaría ocultar, como los archivos de contraseña de keepass, etc.

¿Alguien sabe alguna forma de ocultar el verdadero propósito de un archivo en un sistema?

La idea es que en una situación en la que uno no puede resistir la demanda de proporcionar contraseñas (por ejemplo, si es capturado físicamente y torturado), debería poder negar la existencia de cualquier cifrado justo después de que se cerró una computadora. hacia abajo, es decir, sin ocultar ningún archivo en otros, editando archivos en un editor binario, etc. simplemente porque puede que no tenga tiempo suficiente para hacerlo

    
pregunta user907860 11.07.2015 - 20:29
fuente

8 respuestas

16

Lo que estás buscando se llama cifrado denegable .

Hay dos formas de cifrado denegable. El primer tipo es el cifrado denegable "teórico por la información": el cifrado en el que no se puede realizar un análisis matemático que un atacante puede probar puede demostrar que un archivo es información cifrada y no una colección de bytes aleatorios. El segundo tipo es el cifrado denegable del "mundo real": el cifrado en el que puede hacer algo para convencer a un atacante con una llave de $ 5 de que su archivo no contiene los planes de Estrella de la Muerte robados.

Todos te ofrecerán el primer tipo. El problema con esto es que las personas normales no transportan grandes cantidades de bytes aleatorios; encontrar un archivo de este tipo es una evidencia prima facie de que el cifrado está en uso. El segundo tipo no existe, y puede ser imposible: necesita un cifrado que le permita demostrar un resultado negativo.

    
respondido por el Mark 12.07.2015 - 01:56
fuente
5

Leyendo tus respuestas, lo que quieres se llama cifrado denegable.

Se hace ocultando un contenedor cifrado en otro contenedor cifrado. Esto se debe a que cuando usted cifra, el texto cifrado parece aleatorio si no conoce la clave.

Con solo buscar aleatoriamente en tu disco duro, alguien puede adivinar que has cifrado algunos datos y pedirte la clave.

Poner aleatoriamente al azar te permite dar la primera clave de contenedor y negar la existencia de la segunda.

Debería ver la funcionalidad de truecrypt (o forks) como ejemplo si está interesado.

Solo ten en cuenta que esto puede ser derrotado simplemente haciendo una instantánea de tu disco duro y comparando dos imágenes. De hecho, si modificas algo, el "aleatorio" cambiará y el atacante tendrá una buena suposición de que estás ocultando un segundo contenedor derrotando tu negación plausible.

    
respondido por el r00t 12.07.2015 - 00:18
fuente
3

Lo que estás buscando se llama esteganografía , es una rama de la criptografía.

Puedes leer wikipedia solo para un inicio rápido: enlace

A partir de entonces, puede encontrar que hay un par de herramientas de código abierto para "guardar" cualquier contenedor en .jpg o incluso .avi .

Este tipo de contenedor stego parece un archivo .jpg o .avi . Además, cualquiera podría ver este .avi o .jpg . Y, dentro de este contenedor stego estará su contenedor cifrado, llamado LUKS.

    
respondido por el stegomaniac 13.07.2015 - 14:56
fuente
2

Puede cifrar el archivo con un segundo tipo de cifrado, digamos 'GPG' o similar, y luego el comando del archivo no podrá determinar el tipo de archivo 'interno'.

Alternativamente, solo haga algo realmente simple como XOR: ingrese el archivo con el mismo contenido de archivo con un desplazamiento de un byte (por ejemplo), o base64 el archivo, etc.

Depende de cuánto desee ofuscar (no es realmente seguridad, solo es un inconveniente para la persona que usa el comando 'archivo') u ocultarlo (usando un cifrado secundario).

Finalmente, podrías considerar reemplazar el comando 'archivo' con uno inválido (si tienes control sobre el ejecutable) que no reconoce tu tipo de archivo ...

    
respondido por el David Scholefield 11.07.2015 - 22:49
fuente
2

Puede agregar la partición LUKS encriptada a cualquier archivo de transmisión que sea significativamente más grande, como un archivo mp3:

$ cat beethovens_9th.mp3 windows.vdi > beethovens_9th_with_partition.mp3

El archivo aún se reproducirá en la mayoría del software MP3 y se mostrará como un archivo MP3 cuando se use el comando file . Necesitará saber el tamaño exacto del archivo MP3 original para eliminar desde el principio del nuevo archivo cuando quiera usar la partición cifrada, y tendrá que recrear el nuevo archivo cuando haya terminado de usar la partición. p>

Tenga en cuenta que el tamaño del archivo revelará el hecho de que una partición cifrada se adjunta al archivo MP3. Además, los diferentes reproductores de MP3 tendrán diferentes modos de falla cuando encuentren el final de la parte de MP3 real y el comienzo de la parte de partición del archivo. Esto está lejos de ser un plan infalible, sino simplemente una forma de anular el comando file para el caso de uso más ingenuo.

    
respondido por el dotancohen 12.07.2015 - 18:24
fuente
1

En realidad, no importa el nombre de archivo y el tipo de archivo que se cambie, el contenido aún proporciona la huella digital del tipo de archivo. Entonces, si desea ocultar algo en un sistema, es mejor que lo almacene en su propia carpeta, asignando el permiso de acceso / escritura al archivo. Aunque el usuario root todavía puede acceder al archivo, puede evitar que otros usuarios (usuarios normales) accedan a este archivo.

FYI: El tipo de archivo es solo una referencia para el usuario, el sistema y el software. En Windows, el tipo de archivo se reconoce como un formato que puede ser visto / abierto por cierto programa. Esto se debe a que la lista de tipos de archivos se almacena en el registro de Windows. Así que solo puede hacer doble clic en el archivo e iniciar el programa que debería poder abrir este archivo. Sin embargo, los sistemas como Linux, la gente no lo hace de esta manera, ya que el tipo de archivo es solo una referencia para los usuarios. Puede ver el archivo README sin ningún tipo de archivo atrás porque la gente sabría que este es un archivo de texto legible por humanos. Algunos programas reconocen el encabezado del archivo, sin importar cuál sea el nombre y el tipo de archivo del mismo. Aquí hay un buen ejemplo: PHP uploader, el script normalmente lee el encabezado del archivo primero para determinar si es un archivo de imagen o un archivo zip. Algunos programas y scripts también verifican los bytes del pie de página o el byte de datos en algún lugar de los archivos para confirmar el tipo de archivo.

Entonces, si realmente desea ocultar algo, primero elimine el encabezado / pie de página, sin embargo, puede causar problemas al abrir el archivo. Si realmente desea ocultar el archivo, intente buscar algo sobre incrustar archivos en otro archivo . El viejo truco de esto sería esconder un archivo de imagen en un archivo zip.

    
respondido por el DrKNa 11.07.2015 - 21:42
fuente
1

La totalidad de tu historia consiste en:

  

La idea es que en una situación en la que no se puede resistir una demanda para   proporcionar contraseñas (por ejemplo, si es capturado físicamente y   torturado), debería poder negar la existencia misma de cualquier   cifrado.

Su objetivo, incluso si lo alcanza, se critica seriamente mediante el uso de criptoanálisis de manguera de goma que podría dañarlo más cuando el agente infame continúa atacándote incluso después de que hayas revelado todas tus claves de cifrado.

    
respondido por el user45139 12.07.2015 - 08:30
fuente
1

Particularmente para luks, hay una manera de separar el encabezado luks del resto de los datos. A menudo lo he usado como una especie de 2fa para sistemas totalmente encriptados.

Primero copia el encabezado de luks en otro lugar:

cryptsetup luksHeaderBackup windows.vdi --header-backup-file header.img

Luego, bórralo de la ubicación original:

dd if=/dev/urandom of=windows.vdi bs=1M count=2

Para acceder a los datos ahora use cryptsetup con la opción de línea de comando --header :

cryptsetup luksOpen --header header.img windows.vdi windows

Por supuesto, almacenar el encabezado junto con la imagen anularía todo el propósito.

Además, tenga en cuenta que este encabezado más su frase de contraseña se pueden usar para descifrar su volumen incluso si cambia la frase de contraseña en el futuro. Trate el encabezado de su luks al menos tan cuidadosamente como su clave privada pgp o ssh. En caso de duda, vuelva a cifrar y destruir.

    
respondido por el GnP 15.07.2015 - 14:06
fuente

Lea otras preguntas en las etiquetas