¿Cómo crear una partición encriptada ext4 en Ubuntu 15.04 con el nuevo kernel 4.1?

Respuestas:

9

En primer lugar, un descargo de responsabilidad: no he hecho esto con Ubuntu, pero en una máquina con Debian "Stretch" instalado usando un núcleo Linux 4.2.3 personalizado que habilité EXT4_FS_ENCRYPTION.

Las instrucciones dadas por kmeaw no me funcionan exactamente como se publicaron. Se omitieron algunas cosas (parámetros y pasos de la línea de comandos).

  • Actualice e2fsprogscomo se muestra arriba
  • Genera tu sal al azar. Usé lo siguiente para almacenarlo en un "lugar seguro":

    head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt
    echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
    
  • Para utilizar el cifrado ext4 en el sistema de archivos, el indicador "cifrar" debe establecerse en el superbloque. Este no es el valor predeterminado cuando se crea el sistema de archivos ext4. Usando la utilidad "tune2fs" de e2fsprogs 1.43 o posterior, configure la opción "cifrar":

    sudo tune2fs -O encrypt /dev/sda4
    
  • Monte o vuelva a montar el sistema de archivos para que el núcleo conozca el cambio (tal vez sea automático, pero solo lo he hecho en una partición separada, por lo que no estoy seguro).

  • Cree un directorio en el sistema de archivos que esté montado con el cifrado habilitado:

    sudo mkdir -p /secret/home/$USER
    sudo chown $USER:$USER /secret/home/$USER
    
  • Cree la clave en el conjunto de claves y úsela para establecer la política para que el directorio se cifre (el sudocomando no es necesario aquí):

    $ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
    Enter passphrase (echo disabled):
    Added key with descriptor [0132fed69f946c86]
    $ /usr/bin/e4crypt set_policy 0132fed69f946c86 /secret/home/$USER
    Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
    
  • Después de cada reinicio, el add_keycomando se puede usar para establecer la clave para descifrar el directorio y sus descendientes:

    $ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
    Enter passphrase (echo disabled):
    Added key with descriptor [0132fed69f946c86]
    

    Ingrese la misma contraseña utilizada en el paso anterior, y no tiene que recordar la cadena hexadecimal del descriptor.

  • También puedes usarlo add_keydirectamente. Esto usará una sal específica del sistema de archivos (por lo que todas las carpetas bajo esa partición tendrán la misma sal)

    $ /usr/sbin/e4crypt add_key /secret/home/$USER
    Added key with descriptor [0132fed69f946c86]
    Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
    
Daniel Glasser
fuente
El artículo en el wiki de Arch sugiere leer la siguiente publicación de blog, cuyo autor escribió un programa para simplificar algunos de los pasos: blog.quarkslab.com/… En el momento de escribir este artículo, 16.04 todavía está en desarrollo y tiene las dos configuraciones de kernel correspondientes opciones establecidas, aunque e2fsprogs todavía está en la versión 1.42.
LiveWireBT
Bueno ... probé esas instrucciones y mi carpeta está bloqueada ... en un cp .. /secret/home/$USER/.me sale: «cp: no se puede crear el archivo normal '/secret/home/alexis/test-top-secret-image.svg': la clave requerida no disponible » . Solo seguí tus instrucciones, así que supongo que algo cambió.
Alexis Wilke
A la segunda instancia de " /usr/bin/e4crypt" le falta la "s" en "/ [s] bin".
Alexis Wilke
3

Linux 4.1 viene con una nueva característica Ext4 para encriptar directorios de un sistema de archivos. Las claves de cifrado se almacenan en el llavero. Para empezar, asegúrese de que ha habilitado CONFIG_KEYSy CONFIG_EXT4_FS_ENCRYPTIONopciones del núcleo y que tiene el kernel 4.1 o superior.

En primer lugar, debe actualizar e2fsprogs al menos a la versión 1.43, que todavía es WIP en el momento de la escritura, por lo que debemos buscarlo en el repositorio de git :

$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git

La fuente e4crypt ha deshabilitado una sección relevante en su código fuente, habilítela editando misc / e4crypt.c y eliminando estas dos líneas cerca de la línea 714:

    printf("arg %s\n", argv[optind]);
    exit(0);

Ahora compila e instala nuevos e2fsprogs:

$ sudo apt-get install devscripts build-essential gettext texinfo pkg-config debhelper m4
$ debuild
$ sudo dpkg -i e2fsprogs_1.43-WIP_amd64.deb

Verifique su versión ahora, debe ser 1.43-WIP:

# e2fsck -V
e2fsck 1.43-WIP (18-May-2015)
        Using EXT2FS Library version 1.43-WIP, 18-May-2015

Para trabajar con claves, necesitamos instalar el keyutilspaquete:

$ sudo apt-get install keyutils

Hagamos un directorio que encriptemos. La política de cifrado solo se puede establecer en directorios vacíos:

$ sudo mkdir -p /encrypted/dir

Primero genere un valor de sal aleatorio y guárdelo en un lugar seguro:

$ head -c 16 /dev/random | xxd -p
877282f53bd0adbbef92142fc4cac459

Ahora genere y agregue una nueva clave a su llavero: este paso debe repetirse cada vez que enjuague su llavero (reinicio)

$ sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled): 
Added key with descriptor [f88747555a6115f5]

Ahora ya conoce un descriptor para su clave. Asegúrese de haber agregado una clave a su llavero:

$ keyctl show
Session Keyring
1021618178 --alswrv   1000  1000  keyring: _ses
 176349519 --alsw-v   1000  1000   \_ logon: ext4:f88747555a6115f5

Casi termino. Ahora establezca una política de cifrado para un directorio:

$ e4crypt set_policy f88747555a6115f5 /encrypted/dir

Eso es todo. Si intenta acceder al disco sin agregar una clave en el llavero, los nombres de archivo y sus contenidos se verán como un galimatías cifrado. Tenga cuidado al ejecutar versiones antiguas de e2fsck en su sistema de archivos: tratará los nombres de archivos cifrados como no válidos.

kmeaw
fuente
Esta respuesta tuvo graves problemas de formato. Traté de mejorar todo lo que pude, pero no tiene sentido para mí por qué uno obviamente intentaría usar el formato de descuento, manejar comandos complejos y también hacer una edición similar en la wiki de Arch al mismo tiempo, pero luego mirar en la basura que se muestra en la vista previa y decide dejarla como está. No hay una explicación satisfactoria o una referencia adicional de por qué las líneas deben eliminarse. Además, se sugiere usar debuild de una manera no prevista (con un paquete no debianizado, hay un paquete experimental en Debian) y no funciona. -1
LiveWireBT