web-dev-qa-db-fra.com

Comment créer un système de fichiers crypté dans un fichier?

J'ai trouvé ce tutoriel intéressant sur le blog Flossstuff .

Il explique comment créer un fichier vide, le formater en tant que ext4 et le monter en tant que périphérique.

J'aimerais savoir s'il peut être créé en tant que système de fichiers ext4 crypté.

J'ai essayé d'utiliser palimpseste (l'utilitaire de disque présent dans le menu Système) pour formater le système de fichiers déjà créé, mais cela ne fonctionne pas car il détecte le système de fichiers utilisé.

Si j'essaie de démonter le système de fichiers, cela ne fonctionnera pas non plus, car il ne détectera pas le périphérique (car ce n'est pas un véritable périphérique comme un disque dur ou une clé USB).

Ma question est donc la suivante: existe-t-il une option pour créer le système de fichiers tel que chiffré dès le début? J'ai utilisé ces commandes:

Créez un fichier vide de 200 Mo de taille:

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

Faites-le ext4:

mkfs -t ext4 file

Montez-le dans un dossier à l'intérieur de ma maison:

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

Existe-t-il un moyen pour la commande mkfs de créer un système de fichiers ext4 chiffré demandant un mot de passe de déchiffrement?

Je prévois de l'utiliser comme moyen de chiffrer des fichiers dans Dropbox.

15
animaletdesequia

Vous pouvez utiliser cryptmount pour chiffrer un système de fichiers, même si le système de fichiers se trouve sur un fichier.

La page de manuel cryptmount contient une explication très simple et détaillée que je rapporte (modifiée) ici, et elle mentionne explicitement un système de fichiers basé sur un fichier.

  • Étape 1
    Ajoutez une entrée dans /etc/cryptmount/cmtab, comme suit:

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

    /media/data/mycrypt est le fichier de support créé par dd et /home/enzotib/mycrypt est le point de montage souhaité.

  • Étape 2
    Générer une clé de déchiffrement secrète

    Sudo cryptmount --generate-key 32 mycrypt
    
  • Étape 3
    Exécutez la commande suivante

    Sudo cryptmount --prepare mycrypt
    

    il vous sera ensuite demandé le mot de passe utilisé lors de la configuration de la clé

  • Étape 4
    Créer le système de fichiers

    Sudo mkfs.ext4 /dev/mapper/mycrypt
    
  • Étape 5
    Exécuter

    Sudo cryptmount --release mycrypt
    
  • Étape 6
    Maintenant montez le système de fichiers

    mkdir /home/enzotib/mycrypt
    cryptmount -m mycrypt
    

    puis démontez-le

    cryptmount -u mycrypt
    

De même, si vous devez chiffrer un répertoire, il peut être utile de prendre en compte encfs.

8
enzotib

Suivez les étapes suivantes pour créer un fichier crypté avec un système de fichiers:

1. Le moyen le plus rapide de créer un fichier de taille donnée est:

fallocate -l 128M /path/to/file

2. Créez une partition LUKS (Linux Unified Key Setup) dans le fichier à l'aide de dm-crypt outils:

cryptsetup -y luksFormat /path/to/file

Vous pouvez vérifier que le fichier est un conteneur crypté:

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

3. Ouvrir le conteneur chiffré:

cryptsetup luksOpen /path/to/file data

data est le nom du volume du mappeur de périphérique. Vous pouvez choisir un autre nom.

Cela ouvre le périphérique LUKS et le mappe sur un nom que nous fournissons, créant dans notre cas un fichier à /dev/mapper/data.

4. Créez le système de fichiers ext4 sur ce périphérique:

mkfs.ext4 /dev/mapper/data

5. Créez ensuite le point de montage:

mkdir /path/to/mount

6. Et montez le périphérique ici:

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

7. Pour démonter le système de fichiers et fermer le périphérique LUKS:

umount /path/to/mount
cryptsetup luksClose data

Vous avez maintenant un conteneur LUKS chiffré contenant le système de fichiers ext4. Lorsque vous souhaitez l’utiliser, répétez simplement les étapes 3 et 6. Lorsque vous avez terminé, appelez l’étape 7.

Cet article m'a été très utile.

De plus, un jour, votre conteneur manquera d’espace. Supposons que la taille du fichier conteneur crypté est de 128 Mo et que nous souhaitons augmenter sa taille à 512 Mo. Pour augmenter sa capacité , procédez comme suit:

1. Démontez et fermez le périphérique LUKS (voir l'étape 7 de la liste ci-dessus).

2. Augmenter la taille du fichier conteneur:

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

3. Ouvrez le périphérique LUKS.

cryptsetup luksOpen /path/to/file data

4. Redimensionnez le périphérique LUKS afin qu'il corresponde à la taille du fichier conteneur. De la page de manuel:

Si --size (en secteurs) n'est pas spécifié, la taille du périphérique de bloc sous-jacent est utilisée.

Donc vous pouvez simplement:

cryptsetup resize data

5. Redimensionnez ensuite le système de fichiers ext4:

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

6. Vous pouvez maintenant remonter le système de fichiers:

mount /dev/mapper/data /path/to/mount
5
mixel

Vous pouvez utiliser la commande losetup avec le paramètre - e pour créer un périphérique de boucle chiffrée. Détails disponibles sur http://tldp.org/HOWTO/Cryptoloop-HOWTO/loopdevice-setup.html

3
Mathieu