web-dev-qa-db-fra.com

LUKS et dispositif de boucle

J'ai lu beaucoup de tutoriels sur LUKS/dm-crypt/cryptsetup, en particulier sur la création d'un conteneur de fichier chiffré.

La première étape consiste à créer le fichier avec dd.

Ensuite, certains tutoriels mappent le fichier sur /dev/loop0 et formatez le périphérique de boucle, d’autres tutoriels formulent directement le fichier sans le mapper dans un périphérique de boucle.

Ma question: Est-il nécessaire de passer en mode périphérique? Quelle est la différence?

3
gaiapac

Si vous ne gérez pas vous-même le périphérique de boucle, cryptsetup configurera automatiquement un périphérique de boucle et le fermera lorsqu'il ne sera plus nécessaire. Donc, il n'y a pas de différence entre les deux; cryptsetup fonctionne toujours sur le périphérique en boucle. Voir man cryptsetup:

REMARQUES SUR L'UTILISATION DU DISPOSITIF DE BOUCLE

Cryptsetup est généralement utilisé directement sur un périphérique en mode bloc (partition de disque ou volume LVM). Toutefois, si l'argument de périphérique est un fichier, cryptsetup tente d'allouer un périphérique de bouclage et de le mapper dans ce fichier. Ce mode nécessite le noyau Linux 2.6.25 ou plus récent, qui prend en charge l’indicateur de boucle automatique (le périphérique de boucle est automatiquement effacé à la dernière fermeture). Bien sûr, vous pouvez toujours mapper manuellement un fichier sur un périphérique en boucle. Voir le cryptsetup FAQ pour un exemple.

Lorsque le mappage de périphérique est actif, vous pouvez voir le fichier de sauvegarde de la boucle dans le résultat de la commande status. Voir aussi losetup (8).

2
Vincent Yu

Vous pouvez utiliser dd ou fallocate (ou head ou quelques autres outils) pour créer un fichier qui servira de conteneur. Ensuite, comme l'a déclaré Vincent Yu, cryptsetup peut gérer l'installation/le démontage de la boucle pour vous.

fallocate -l 100M mypath/filecontainer
Sudo losetup # Debug for demonstration, not necessary in a real script
Sudo cryptsetup -y luksFormat mypath/filecontainer
Sudo losetup # Debug for demonstration, not necessary in a real script
Sudo cryptsetup luksOpen mypath/filecontainer filecontainer
Sudo losetup # Debug for demonstration, not necessary in a real script
Sudo mkfs -t ext4 /dev/mapper/filecontainer
sync
Sudo cryptsetup luksClose filecontainer
Sudo losetup # Debug for demonstration, not necessary in a real script

Dans la sortie debug Sudo losetup, notez le AUTOCLEAR = 1 pour l'entrée filecontainer. Vous pourriez devenir fou avec loopdev=$(Sudo losetup -f); mount -o loop <etc>, mais laisser cryptsetup le gérer est WAY plus gentil.

La clé est que vous voulez vous assurer que vous utilisez d'abord cryptsetup luksOpen containerfile mappedname pour le monter sur /dev/mapper/mappedname par défaut (vous pouvez lui donner un chemin complet commençant par / et il sera monté à la place I CROYEZ et puis formatez la cible /dev/mapper/mappedname et assurez-vous que vous ne touchez PAS directement la filecontainer, sinon vous contournez le moteur de cryptage et créez simplement un fichier de bouclage non crypté.

0
dragon788