¿Cómo creo un sistema de archivos encriptado dentro de un archivo?

16

Encontré este interesante tutorial en el blog flossstuff .

Explica cómo crear un archivo vacío, formatearlo como ext4 y montarlo como un dispositivo.

Me gustaría saber si se puede crear como un sistema de archivos ext4 encriptado.

Intenté usar palimpsest (la utilidad de disco que se encuentra en el menú Sistema) para formatear el sistema de archivos ya creado, pero no funciona ya que detecta el sistema de archivos que se está utilizando.

Si intento desmontar el sistema de archivos, tampoco funcionará porque no detecta el dispositivo (ya que no es un dispositivo real como un disco duro o una unidad USB).

Entonces mi pregunta es, ¿hay una opción para crear el sistema de archivos como encriptado desde el principio? He usado estos comandos:

Cree un archivo vacío de 200Mb de tamaño:

dd if=/dev/zero of=/path/to/file bs=1M count=200

Hazlo ext4:

mkfs -t ext4 file

Montarlo en una carpeta dentro de mi casa:

sudo mount -o loop file /path/to/mount_point

¿Hay alguna forma de que el mkfscomando pueda crear un sistema de archivos ext4 encriptado pidiendo una contraseña de descifrado?

Estoy planeando usar esto como una forma de encriptar archivos dentro de Dropbox.

animaletdesequia
fuente
Si desea un cifrado adecuado al hacer una copia de seguridad de los archivos, puede considerar SpiderOak en su lugar. Más seguridad y menos alboroto.
landroni el

Respuestas:

8

Puede usar cryptmountpara cifrar un sistema de archivos, también si el sistema de archivos está en un archivo.

La cryptmountpágina del manual tiene una explicación muy simple y detallada que informo (modificada) aquí, y menciona explícitamente un sistema de archivos basado en archivos.

  • Paso 1
    Agregue una entrada de la /etc/cryptmount/cmtabsiguiente manera:

    mycrypt {
        dev=/media/data/mycrypt dir=/home/enzotib/mycrypt
        fstype=ext4 mountoptions=defaults cipher=twofish
        keyfile=/etc/cryptmount/mycrypt.key
        keyformat=builtin
    }
    

    donde /media/data/mycryptestá el archivo de soporte creado por ddy /home/enzotib/mycryptes el punto de montaje deseado.

  • Paso 2
    Genera una clave de descifrado secreta

    sudo cryptmount --generate-key 32 mycrypt
    
  • Paso 3
    Ejecute el siguiente comando

    sudo cryptmount --prepare mycrypt
    

    Luego se le pedirá la contraseña utilizada al configurar la clave

  • Paso 4
    Crear el sistema de archivos

    sudo mkfs.ext4 /dev/mapper/mycrypt
    
  • Paso 5
    Ejecutar

    sudo cryptmount --release mycrypt
    
  • Paso 6
    Ahora monte el sistema de archivos

    mkdir /home/enzotib/mycrypt
    cryptmount -m mycrypt
    

    luego desmontarlo

    cryptmount -u mycrypt
    

Además, si necesita encriptar un directorio, encfspuede valer la pena tenerlo en cuenta.

enzotib
fuente
Gracias por su respuesta, he creado el sistema de archivos, encriptado y cargado en Dropbox. Más tarde intentaré montar ese archivo en la otra PC. Solo una cosa, ¿se puede hacer sin sudo? Si quiero mantener el archivo y el sistema de archivos montados dentro de mi casa (no en medios como usb o hardrive), los comandos serían los mismos sin sudo o ¿cryptmount siempre necesita privilegios de root?
animaletdesequia
1
@darent: parece que el comando necesita privilegios de root solo en la configuración del sistema de archivos, pero montar / desmontar es una acción del usuario, siempre que el archivo de imagen y el punto de montaje sean propiedad del usuario. Para configurar el mismo archivo de imagen en otra máquina, supongo que debe copiar /etc/cryptmount/mycrypt.keyy omitir el --generate-keypaso.
enzotib
Recibo este error en el último paso: $ sudo cryptmount -m encriptat Ingrese la contraseña para el "encriptat" de destino: e2fsck 1.41.14 (22-dic-2010) fsck.ext4: Súperbloc no vàlid, los bloques de copia de seguridad más importantes. .. fsck.ext4: Número mágico malo en superbloque en intentar obrir / dev / mapper / encriptat
animaletdesequia
1
@darent: ¿ha creado el sistema de archivos como se muestra en el paso 4? ¿Has sido consistente en la sustitución del nombre "mycrypt" por "encriptat"?
enzotib
Lo sentimos, el error se debió a que en lugar de (sudo mkfs.ext4 / dev / mapper / mycrypt) estaba escribiendo (sudo mkfs.ext4 mycript). Estaba apuntando al archivo directamente, no al dispositivo. Ahora funciona perfecto. Y perdón por el formato de este mensaje, no sé por qué no puedo separar las líneas (si presiono Intro, publica el comentario en lugar de crear una nueva línea, tal vez un error de Firefox ...) ¡Saludos! EDITAR: ahora leí tu respuesta, el nombre del encriptat no era un problema (solo adapté tu publicación y puse los archivos con nombres en catalán, pero todo es consistente). Everithing funciona bien ahora, gracias de nuevo :)
animaletdesequia
7

Siga los siguientes pasos para crear un archivo cifrado con el sistema de archivos dentro:

1. La forma más rápida de crear archivos de un tamaño determinado es:

fallocate -l 128M /path/to/file

2. Cree la partición LUKS (configuración de clave unificada de Linux) dentro del archivo utilizando las herramientas dm-crypt :

cryptsetup -y luksFormat /path/to/file

Puede verificar que el archivo sea contenedor cifrado:

/path/to/file: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 7e2af5a1-3fab-43ea-a073-3b9cc6073f00

3. Abra el contenedor encriptado:

cryptsetup luksOpen /path/to/file data

dataes el nombre del volumen del mapeador de dispositivos. Puedes elegir otro nombre.

Esto abre el dispositivo LUKS y lo asigna a un nombre que proporcionamos, en nuestro caso creando un archivo en /dev/mapper/data.

4. Cree un ext4sistema de archivos en este dispositivo:

mkfs.ext4 /dev/mapper/data

5. Luego cree el punto de montaje:

mkdir /path/to/mount

6. Y monte el dispositivo allí:

mount /dev/mapper/data /path/to/mount

7. Para desmontar el sistema de archivos y cerrar el dispositivo LUKS:

umount /path/to/mount
cryptsetup luksClose data

Ahora ha cifrado el contenedor LUKS con el sistema de archivos ext4 dentro. Cuando quiera usarlo, simplemente repita los pasos 3 y 6. Cuando haya terminado, llame al paso 7.

Este artículo fue muy útil para mí.

También un día su contenedor se quedará sin espacio. Supongamos que el tamaño del archivo de contenedor cifrado es de 128 MB y queremos aumentar su tamaño a 512 MB. Para aumentar su capacidad, siga estos pasos:

1. Desmonte y cierre el dispositivo LUKS (consulte el paso 7 en la lista anterior).

2. Aumente el tamaño del archivo contenedor:

 dd if=/dev/zero of=/path/to/file bs=384M count=1 oflag=append conv=notrunc

3. Abra el dispositivo LUKS.

cryptsetup luksOpen /path/to/file data

4. Cambie el tamaño del dispositivo LUKS para que coincida con el tamaño del archivo contenedor. Desde la página del manual:

Si no se especifica --size (en sectores), se utiliza el tamaño del dispositivo de bloque subyacente.

Entonces puedes simplemente:

cryptsetup resize data

5. Luego cambie el tamaño del sistema de archivos ext4:

e2fsck -f /dev/mapper/data
resize2fs /dev/mapper/data

6. Ahora puede volver a montar el sistema de archivos:

mount /dev/mapper/data /path/to/mount
Mixel
fuente
1
Creo que esta respuesta es la mejor y más actualizada. ¡Debe seleccionarse como la respuesta correcta!
yurtesen