web-dev-qa-db-fra.com

Comment créer une partition cryptée ext4 sur Ubuntu 15.04 avec le nouveau noyau 4.1?

Puis-je créer une nouvelle partition chiffrée ext4 avec le noyau 4.1 sur Ubuntu 15.04?

9
Oto_Shan

Tout d’abord une clause de non-responsabilité: je n’ai pas fait cela avec Ubuntu, mais sur une machine sur laquelle Debian "Stretch" est installée à l’aide d’un noyau Linux 4.2.3 personnalisé sur lequel j’ai activé EXT4_FS_ENCRYPTION.

Les instructions données par kmeaw ne fonctionnent pas pour moi exactement telles qu'elles sont affichées. Quelques éléments ont été omis (paramètres de ligne de commande et étapes).

  • Mettez à jour e2fsprogs comme indiqué ci-dessus
  • Générez votre sel au hasard. J'ai utilisé ce qui suit pour le stocker dans un "endroit sûr":

    head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt
    echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
    
  • Pour utiliser le cryptage ext4 sur le système de fichiers, le drapeau "encrypt" doit être défini dans le superbloc. Ce n'est pas la valeur par défaut lors de la création du système de fichiers ext4. À l'aide de l'utilitaire "tune2fs" d'e2fsprogs 1.43 ou version ultérieure, définissez l'option "encrypt":

    Sudo tune2fs -O encrypt /dev/sda4
    
  • Montez ou remontez le système de fichiers pour que le noyau connaisse le changement (c'est peut-être automatique, mais je ne l'ai fait que sur une partition séparée, je ne suis donc pas sûr.)

  • Créez un répertoire sur le système de fichiers monté avec le cryptage activé:

    Sudo mkdir -p /secret/home/$USER
    Sudo chown $USER:$USER /secret/home/$USER
    
  • Créez la clé dans le trousseau de clés et utilisez-la pour définir la stratégie du répertoire à chiffrer (la commande Sudo n'est pas nécessaire ici):

    $ /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.
    
  • Après chaque redémarrage, la commande add_key peut être utilisée pour définir la clé de déchiffrement du répertoire et de ses descendants:

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

    Entrez le même mot de passe que celui utilisé à l'étape précédente et vous ne devez pas vous souvenir de la chaîne hexadécimale du descripteur.

  • Vous pouvez également utiliser directement add_key. Cela utilisera un sel spécifique au système de fichiers (ainsi, tous les dossiers de cette partition auront le même sel)

    $ /usr/sbin/e4crypt add_key /secret/home/$USER
    Added key with descriptor [0132fed69f946c86]
    Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
    
8
Daniel Glasser

Linux 4.1 est livré avec une nouvelle fonctionnalité Ext4 permettant de chiffrer les répertoires d’un système de fichiers. Les clés de chiffrement sont stockées dans le trousseau. Pour commencer, assurez-vous que vous avez activé les options de noyau CONFIG_KEYS et CONFIG_EXT4_FS_ENCRYPTION et que vous disposez du noyau 4.1 ou supérieur.

Tout d’abord, vous devez mettre à jour e2fsprogs vers la version 1.43 au minimum, qui est toujours WIP au moment de la rédaction; nous devons donc le récupérer depuis le référentiel git :

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

e4crypt source a désactivé une section pertinente de son code source, activez-la en modifiant misc/e4crypt.c et en supprimant ces deux lignes à proximité de la ligne 714:

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

Maintenant, construisez et installez de nouveaux e2fsprogs:

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

Vérifiez votre version maintenant, elle devrait être 1.43-WIP:

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

Pour travailler avec des clés, nous devons installer le package keyutils:

$ Sudo apt-get install keyutils

Faisons un répertoire que nous allons chiffrer. La stratégie de chiffrement ne peut être définie que sur des répertoires vides:

$ Sudo mkdir -p /encrypted/dir

Commencez par générer une valeur de sel aléatoire et stockez-la dans un endroit sûr:

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

Maintenant, générez et ajoutez une nouvelle clé dans votre trousseau: cette étape doit être répétée chaque fois que vous videz votre trousseau (redémarrage)

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

Vous connaissez maintenant un descripteur pour votre clé. Assurez-vous que vous avez ajouté une clé dans votre trousseau:

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

Presque fini. Maintenant, définissez une stratégie de chiffrement pour un répertoire:

$ e4crypt set_policy f88747555a6115f5 /encrypted/dir

C'est tout. Si vous essayez d'accéder au disque sans ajouter de clé dans le trousseau, les noms de fichiers et leur contenu seront considérés comme du charabia chiffré. Faites attention en exécutant les anciennes versions de e2fsck sur votre système de fichiers - les noms de fichiers cryptés seront considérés comme non valides.

3
kmeaw