Puis-je créer une nouvelle partition chiffrée ext4
avec le noyau 4.1 sur Ubuntu 15.04?
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).
e2fsprogs
comme indiqué ci-dessusGé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.
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.