System-Linux

Aller au contenu | Aller au menu | Aller à la recherche

Disque virtuel crypté/chiffré

Vous avez des secrets à protéger, voici un ptit tuto pour cacher des fichiers dans une image disque cryptée

Pour arriver à nos fins nous utiliserons les commandes : dd , losetup , cryptsetup et mount

Installer cryptsetup car normalement vous ne devez pas l'avoir sur votre système :

aptitude install cryptsetup ou yum install cryptsetup

Tout d'abord créons le disque virtuel avec la commande dd :

dd if=/dev/zero of=disk.img bs=1M count=256

Ce qui nous donne :

256+0 enregistrements lus
256+0 enregistrements écrits
264217728 octets (264 MB) copiés, 2,83118 s, 47,4 MB/s
ls -lah disk.img 
-rw-r--r-- 1 root root 256M 2008-12-29 11:55 disk.img

Pour rendre le disque virtuel visible par le système :

losetup /dev/loop0 disk.img

Ce qui nous donne :

losetup -a
/dev/loop0: [0802]:49089 (disk.img)

Chiffrement du disque :

cryptsetup -v -y luksFormat /dev/loop0 

WARNING!
========
This will overwrite data on /dev/loop0 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: 
Verify passphrase: 
Failed to setup dm-crypt key mapping.
Check kernel for support for the aes-cbc-essiv:sha256 cipher spec and verify that /dev/loop0 contains at least 133 sectors.
Failed to write to key storage.
Command failed.

Si vous obtenez une erreur de ce genre redémarrer votre ordinateur et retaper la commande :

cryptsetup -v -y luksFormat /dev/loop0 

WARNING!
========
This will overwrite data on /dev/loop0 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: 
Verify passphrase: 
Command successful.

y pour mettre un mot de passe et v pour l'option verbose.

Ouverture du périphérique dique :

cryptsetup luksOpen /dev/loop0 cryptodisk

Enter LUKS passphrase: 
key slot 0 unlocked.
Command successful.
 ls /dev/mapper
control cryptodisk

losetup nous sert à créer un périphérique à partir d'un fichier : /dev/loop0 cryptsetup crée un autre périphérique à partir du fichier /dev/loop0, c'est /dev/mapper/cryptodisk

Maintenant il faut initialiser un systeme de fichier sur ce périphérique :

mkfs.ext3 -j /dev/mapper/cryptodisk  

La il vous est possible de monter votre disque virtuel crypté :

mkdir topsecret
mount /dev/mapper/cryptodisk

C'est terminé vous pouvez copier vos fichiers secrets :

umount topsecret
cryptsetup luksClose cryptodisk
losetup -d /dev/loop0

La premiere commande démonte le repertoire, la deuxieme referme le péripherique crypté et la troisieme detache le fichier disk.img de /dev/loop0.

Vous pouvez maintenant copier votre disk.img ou bon vous semble car personne d'autre que vous pourra l'ouvre.

Remonter le .img et lire vos données crytpées :

losetup /dev/loop0 disk.img 
13:33:24 root@portix:/ 59$ cryptsetup luksOpen /dev/loop0 crytpodisk
Enter LUKS passphrase: 
key slot 0 unlocked.
Command successful.
mount /dev/mapper/crytpodisk /topsecret
cd topsecret
ls
farce  lol  lost+found  pouette  secret
Par GanGan | le lundi, décembre 29 2008 14:01

Commentaires

1. wwp

mardi, janvier 6 2009 | 17:44

Pas mal, simple et efficace.

Question: cette méthode peut-elle être utilisée pour encrypter un disque physique (idéal pour un disque externe ou flash usb par exemple)? Je pense à utiliser /dev/sdd1 à la place de /dev/loop0, ou genre.

Le seul hic sinon, c'est qu'il faut allouer un espace disque fixe dès le début. D'autres solutions permettent d'encrypter une partie d'un fs sans avoir à lui allouer un espace virtuel (je pense à fuse.encfs notamment).

2. gangan

mardi, janvier 6 2009 | 18:03

Pour un disque physique externe je ne sais pas j'ai pas essayé mais je vois pas ce qui pourrai bloquer, a essayer si tu as le temps :p puis tout nous dira
il suffit d'adapter un peu la chose.

Allouer un espace disque fixe c'est normal parce que la le but c'est qu'on peut le trimbaler un peu partout, sur un disque externe une clef usb ou autre.

3. Kévin Hinault

mercredi, janvier 7 2009 | 11:39

La même méthode peut être utilisée dans le cas d'un disque dur qu'il soit externe ou non bien sur ;)
La seule différence est le périphérique : au lieu de mettre loop0 dans la commande cryptsetup tu peux mettre sda1, etc ...

Concernant cette commande, il est possible de spécifier les techniques de chiffrement utilisées :
$ cryptsetup luksFormat -c aes -h sha256 /dev/sda3.

Concernant la commande mkfs.ext3, il peut être très utile dans ton cas d'ajouter -m 0 pour empêcher de réserver automatiquement 10% de ta partition au système ce qui n'a pas d'intérêt ici.

:)

4. gangan

mercredi, janvier 7 2009 | 11:49

quand j'aurai 5 minutes je rajouterai ce que tu dis après l'avoir testé car c'est intéressant, surtout pour le mkfs.ext3 10% j'avais zappé ça
merci

5. Xyrnaes

mercredi, septembre 23 2009 | 22:55

Il y a aussi truecrypt ( http://www.truecrypt.org/ ) qui est pratique. (Win/Lin/Mac)