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

16

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

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

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

J'ai essayé d'utiliser palimpsest (l'utilitaire de disque trouvé 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étecte pas le périphérique (car ce n'est pas un vrai 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 crypté depuis le début? J'ai utilisé ces commandes:

Créez un fichier vide de 200 Mo:

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

Faites-en 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 mkfscommande de créer un système de fichiers ext4 chiffré demandant un mot de passe de déchiffrement?

Je prévois d'utiliser cela comme un moyen de crypter des fichiers dans Dropbox.

animaletdesequia
la source
Si vous souhaitez un chiffrement approprié lors de la sauvegarde de fichiers, vous pouvez envisager plutôt SpiderOak. Plus de sécurité et moins de bruit.
landroni

Réponses:

8

Vous pouvez utiliser cryptmountpour crypter un système de fichiers, même si le système de fichiers se trouve sur un fichier.

La cryptmountpage de manuel a 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 des fichiers.

  • É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/mycryptest le fichier de support créé par ddet /home/enzotib/mycryptest le point de montage souhaité.

  • Étape 2
    Générez 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 alors demandé le mot de passe utilisé lors de la configuration de la clé

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

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

    sudo cryptmount --release mycrypt
    
  • Étape 6
    Montez maintenant le système de fichiers

    mkdir /home/enzotib/mycrypt
    cryptmount -m mycrypt
    

    puis démontez-le

    cryptmount -u mycrypt
    

De plus, si vous devez crypter un répertoire, cela encfspeut valoir la peine d'être pris en considération.

enzotib
la source
Merci pour votre réponse, j'ai créé le système de fichiers, crypté et téléchargé sur Dropbox. Plus tard, j'essaierai de monter ce fichier sur l'autre PC. Une seule chose, peut-on faire sans sudo? Si je veux garder le fichier et le système de fichiers montés à l'intérieur de ma maison (pas dans des médias comme USB ou hardrive), les commandes seraient les mêmes sans sudo ou cryptmount a-t-il toujours besoin des privilèges root?
animaletdesequia
1
@darent: il semble que la commande ait besoin des privilèges root uniquement dans la configuration du système de fichiers, mais le montage / démontage est une action de l'utilisateur, à condition que le fichier image et le point de montage appartiennent à l'utilisateur. Pour configurer le même fichier image sur une autre machine, je suppose que vous devez copier /etc/cryptmount/mycrypt.keyet ignorer l' --generate-keyétape.
enzotib
J'obtiens cette erreur à la dernière étape: $ sudo cryptmount -m encriptat Entrez le mot de passe pour la cible "encriptat": e2fsck 1.41.14 (22-Dec-2010) fsck.ext4: Súperbloc no vàlid, provant els blocs de còpia de seguretat. .. fsck.ext4: Mauvais numéro magique dans le super-bloc en intentar obrir / dev / mapper / encriptat
animaletdesequia
1
@darent: avez-vous créé le système de fichiers comme indiqué à l'étape 4? avez-vous été cohérent dans la substitution du nom "mycrypt" par "encriptat"?
enzotib
Désolé, l'erreur était due au fait qu'au lieu de (sudo mkfs.ext4 / dev / mapper / mycrypt) je tapais (sudo mkfs.ext4 mycript). J'étais poiting directement sur le fichier, pas sur l'appareil. Maintenant, cela fonctionne parfaitement. Et désolé pour le format de ce message, je ne sais pas pourquoi je ne peux pas séparer les lignes (si j'appuie sur Entrée, il publie le commentaire au lieu de créer une nouvelle ligne, peut-être un bug firefox ...) Bravo! EDIT: maintenant j'ai lu votre réponse, le nom de l'encriptat n'était pas un problème (il suffit d'adapter votre message et de mettre les fichiers avec des noms catalans, mais tout est cohérent). Tout fonctionne bien maintenant, merci encore :)
animaletdesequia
7

Suivez les étapes suivantes pour créer un fichier chiffré avec le système de fichiers à l'intérieur:

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 des outils dm-crypt :

cryptsetup -y luksFormat /path/to/file

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

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

3. Ouvrez le conteneur crypté:

cryptsetup luksOpen /path/to/file data

dataest le nom du volume du mappeur de périphériques. Vous pouvez choisir un autre nom.

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

4. Créez un ext4système de fichiers sur cet appareil:

mkfs.ext4 /dev/mapper/data

5. Créez ensuite un point de montage:

mkdir /path/to/mount

6. Et montez l'appareil là:

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 chiffré le conteneur LUKS avec le système de fichiers ext4 à l'intérieur. 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 sera à court d'espace. Supposons que la taille du fichier de conteneur chiffré soit de 128 Mo et que nous voulons 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. Augmentez 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 pour qu'il corresponde à la taille du fichier conteneur. Depuis la page de manuel:

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

Vous pouvez donc 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
mixel
la source
1
Je pense que cette réponse est la meilleure et la plus à jour. Il doit être sélectionné comme la bonne réponse!
yurtesen