Cryptsetup, le couteau suisse du chiffrement de partitions !

Vous avez envie de chiffrer des fichiers super secrets, comme par exemple votre liste de mot de passe qui est dans un simple fichier texte, ou les fichiers sur votre clé USB pour éviter que l’on vous l’empreinte et récupère votre plan pour dominer le monde ? Cryptsetup est votre ami, il peut faire pleins de choses, grâce au chiffrement.

Installation des programmes nécessaires :

C’est là que le gestionnaire de paquets est quand même bien pratique : Vu que le programme se trouve sur les dépôts d’ubuntu, il suffit d’installer le paquet cryptsetup, par exemple en tapant[1] sudo apt-get install cryptsetup dans une console. Si un problème survient lors de l’utilisation, c’est qu’il faut charger quelques modules dans le noyau, essayez les commandes sudo modprobe dm-mod, sudo modprobe dm-crypt et sudo modprobe aes, mais je n’ai pas eu ce problème.

Se faire une zone protégée sur son disque dur, avec un simple fichier.

C’est le plus simple, ça ne vous coûtera qu’un fichier de la taille de l’espace nécessaire, pas besoin de toucher à des partitions, perdre des données etc…

Création du volume chiffré :

Tout d’abord, ouvrez un terminal (toutes les opérations se feront dans un terminal), et tapez[2] la commande suivante :

dd if=/dev/zero bs=1M count=50 of=moncoffrefort

Cela va générer un fichier de 50Mo, nommé moncoffrefort, dans le dossier où vous vous trouvez (généralement votre dossier home). Vous avez besoin de plus ou de moins de place ? Changez simplement le chiffre 50 ! Vous désirez un autre nom pour votre fichier ? Remplacez moncoffrefort par ce que vous voulez !

Après, il va falloir expliquer au système que ce fichier sera en fait comme un périphérique ‘disque dur’, et qu’il peut travailler avec comme tel. C’est la commande :

sudo losetup /dev/loop0 moncoffrefort

Bien évidemment, si vous avez indiqué un autre nom de fichier, il vous faudra le changer dans cette commande aussi ! Si par hasard un message d’erreur ressemblant à ioctl: LOOP_SET_FD: Périphérique ou ressource occupé, c’est que /dev/loop0 est déjà utilisé, changez le 0 en un nombre de 1 à 7, et ça devrait jouer. Remarquez que si vous changez ce numéro, vous pouvez utiliser plusieurs partitions chiffrées en même temps, il faudra seulement faire attention de taper correctement les prochaines commandes en changeant aussi leur numéros.

Puis, on va initialiser la partition chiffrée, pour cela faire, taper[3] la commande :

sudo cryptsetup luksFormat -c aes -h sha256 /dev/loop0

Le programme va vous demander d’abord si vous êtes vraiment sur de vouloir faire cet acte un peu barbare, car allant tuer toute trace de vie sur le volume en question. Vu que nous somme sur un simple petit fichier qui est un volume virtuel, on peut sans crainte lui dire YES, en majuscules. SI par hasard, l’avertissement indiquera que This will overwrite data on /dev/hda irrevocably., ou quelque chose qui ne ressemble pas à /dev/loop[UnNombre], éviter de lui répondre YES, mais appuyez bêtement sur enter pour éviter une petite crise de nerfs suite au doux ronron que fera votre disque entrain de supprimer toute ses(vos) données…

Le programme va ensuite vous demander un mot de passe (Enter LUKS passphrase:). Ne le fâchez pas et donnez-lui en un. Bien évidemment, n’oubliez pas les règles de sécurité d’un mot de passe : D’abord, on s’en souvient, ensuite on met des caractères bizarres et on utilise plus de 6 caractères au total, enfin on évite le nom de son chat. (Sauf si votre chat s’appelle fg/DF6*45!3p4, mais généralement c’est rare).

Dès que Command successful. s’est affiché, bonne nouvelle, votre volume est presque prêt. Il faut maintenant le formater (Mwahaha).

D’abord, on va ouvrir le volume chiffré, avec la commande :

sudo cryptsetup luksOpen /dev/loop0 moncoffrefort

moncoffrefort est cette fois une ‘étiquette’, c’est-à-dire que vous pouvez mettre n’importe quoi à sa place, mais l’étiquette doit être unique parmi tout les systèmes de fichiers que vous utilisez.

Entrez votre mot de passe, et normalement les lignes key slot 0 unlocked. Command successful. devraient s’afficher. Pour information, Key slot 0, c’est le numéro de votre mot de passe, car vous pouvez en mettre plusieurs. Regardez la doc (man cryptsetup) si vous voulez en savoir plus.

Après, il vous faut formater le volume, et la commande :

sudo mkfs.ext3 /dev/mapper/moncoffrefort va s’en occuper.

Voila ! Votre volume sécurisé est prêt !

Utilisation au fil du temps : Ouverture :

Si vous venez de formater le volume, les 2 commande suivantes sont inutiles, mais dès que vous refermerez votre volume, il faudra les taper[4].

Donc, ouvrez votre fichier-volume:

sudo losetup /dev/loop0 moncoffrefort (Voir plus haut pour les remarques). Et ouvrez le volume chiffré :

sudo cryptsetup luksOpen /dev/loop0 moncoffrefort (Voir aussi plus haut pour les remarques).

C’est presque fini ! Il faut encore monter le volume pour s’en servir, pour ce faire, créez un dossier dans votre dossier personnel :

mkdir moncoffrefortouvers

Puis montez le volume :

sudo mount -t ext3 /dev/mapper/moncoffrefort /home/vous/moncoffrefortouvers

Voila ! Tous les fichiers que vous sauvegarderez dans le dossier moncoffrefortouvers seront automatiquement chiffrés ! Le contenu du dossier n’est pas présent physiquement sur le disque, mais passe par tout un système compliqué (voir schéma plus bas) et atterris dans le fichier moncoffrefort !

Utilisation au fil du temps : Fermeture :

Vous voulez fermer votre dossier et protéger vos données ? C’est très facile :

Premièrement, fermez le système de fichier normal :

sudo umount /home/vous/moncoffrefortouvers

Vous remarquerez que tout le contenu de moncoffrefortouvers a disparu !

Ensuite, fermez la partition chiffrée :

sudo cryptsetup luksClose moncoffrefort

À partir de là, votre volume est sécurisé, il faudra retaper[5] le mot de passe pour y accéder.

Et pour terminer, démontez votre volume-fichier :

sudo losetup -d /dev/loop0

Voila !

C’est pleins de commandes, de fichiers et systèmes de fichiers partout, comment ça marche au juste ?

En gros ? Vous avez un fichier sur votre disque, qui se comporte comme un disque, qui contient un système de fichiers chiffré, qui contient un système de fichier, qui contient vos fichiers. C’est pas clair ? J’ai fait un beau dessin :

Schema avec cryptsetup

Vous avez compris ?

Avec une partition entière

Un petit dossier ne vous suffit pas, vous voulez chiffrer une partition entière comme votre clé Usb ? ATTENTION, L’OPÉRATION EST DANGEREUSE, ELLE VOUS FERA PERDE TOUTE VOS ÉVENTUELLES DONNÉES PRÉSENTES SUR LA PARTITION VISÉE

Mise en place du volume

Considérons qu’il s’agit de votre clé USB, que VOUS AVEZ SAUVEGARDÉ LES DONNÉS PRÉSENTES SUR CELLE-CI, que vous connaissez sa partition (disons /dev/sda1 MAIS C’EST PAS SUR), et que vous avec bien lut tous mes trucs en gras, et que vous êtes conscient, voila les commandes qu’il faut taper[6] :

D’abord, démontez votre partition : sudo umount /dev/lapartition.

Ensuite, créez le volume chiffré : sudo cryptsetup luksFormat -c aes -h sha256 /dev/lapartioton. ATTENTION ! APRÈS CETTE COMMANDE, LA PARTITION NE SERA PAS RÉCUPÉRABLE .

Voila ! En deux commandes, vous avez peut-être bousillé quelque chose qu’il ne fallait pas.

Utilisation au fil du temps : Ouverture :

Ouvrez le volume chiffré :

sudo cryptsetup luksOpen /dev/lapartioton mapartitionchiffree (Voir plus haut pour les remarques).

Créez le dossier de destination :

mkdir /media/ledossierdedestination%%

Puis montez le volume :

sudo mount -t ext3 /dev/mapper/mapartitionchiffree /media/ledossierdedestination

Remarquez qu’il est possible que Gnome vous propose tout seul au branchement du périphérique (il le fait de temps en temps avec moi) de s’occuper du tout moyennant mot de passe.

Utilisation au fil du temps : Fermeture :

C’est comme avant, on ferme le système de fichier

sudo umount /media/ledossierdedestination

Et la partition chiffrée :

sudo cryptsetup luksClose mapartitionchiffree

À partir de là, votre volume est sécurisé, il faudra retaper[7] le mot de passe pour y accéder.

Et question performances ?

Bein oui, chiffrer des données en permanence, ça coûte du CPU, vous vous en doutez, et ça ralentit les transferts. Personnellement, j’ai chiffré tout mon disque dur externe de sauvegarde, et à chaque sauvegarde, on sentait bien que le PC ralentissait… J’ai résolu le problème en donnant une priorité minimale à kcryptd/0, qui s’occupe du chiffrement, avec la commande sudo renice 19 ps -ae | grep kcrypt | awk ' { print $1 } ' que l’on tape[8] dans un terminal. Par contre, je n’ai pas noté de ralentissement temporels, ni une grosse perte de l’espace disque. Évidemment, si vous chiffrez la partition home, votre PC ira beaucoup moins vite (et je ne sais pas si c’est une bonne idée en plus). Alors bon, perte de performances, mais négligeables selon l’utilisation.

Remarques et liens :

  • Un petit script peut vous aider à éviter de mémoriser toutes les commandes…
  • Un petit défaut, c’est qu’il faut avoir accès aux droits d’administration pour utiliser le système de chiffrement, mais ça devrait pouvoir se résoudre en autorisant certaines commandes (un script fait pour ça), si c’est vraiment nécessaire.
  • Aux allergiques de la ligne de commande, il existe une interface pour cryptsetup ici, mais je ne l’ai pas essayée…
  • Sous dapper, il ne faut pas utiliser /dev/loop0 mais /dev/loop/0 !
Des explications plus détaillées sur le wiki anglophone

Notes

[1] Ouile !

[2] Pauvre commande !

[3] Ce billet incite subtilement à la violence en fait.

[4] N’empêche c’est pratique comme message subliminal…

[5] Paf !

[6] Faudrait créer un organe de protection des commandes martyrisées…

[7] Mais gentiment alors cette fois.

[8] OPCM ?


Comments

Comme Revan, je préfère TrueCrypt (marche aussi sous Windows) Mais c’est vrai que pouvoir chiffrer des choses comme le Swap, Home et autres peut être intéressant (ce qui n’est pas possible avec TrueCrypt)

sebsauvage, 2007-07-19 13:17:27

Super tuto ! Merci ! Je connaissais pas ce logiciel.
Cependant, contrairement à TrueCrypt, il n’y a pas de version Windows…donc si on veut lire des données cryptées sous windows…

@++



Revan, 2007-05-19 18:12:41

Exellent tuto, plein d’humour. J’adore ! Comme quoi meme linux en ligne de commande peut etre drole.

See ya



Simon, 2007-05-19 18:33:22

s/chiffrage/chiffrement ne serait il pas plus correct ?



gapz, 2007-05-19 18:49:35

@gapz : Euh.. oui. J’ai déjà passé du temps à tuer les ‘crypter’…



The_Glu, 2007-05-19 18:54:07

Merci pour ce tuto très clair et très drôle.



josai, 2007-05-19 20:37:32

Oooh, à cause de ton changement de titre, ton billet est présent deux fois sur le planet Ubuntu ! Tricheur ! ^_^
Avoue que tu voulais plus d’audience, espèce de Mougeotte va ! :D



Ner0lph, 2007-05-19 22:08:05

J’utilise le logiciel Cryptkeeper qui est 10x fois plus simple à utiliser que toutes les manips indiquées dans ce post.

http://www.tomatarium.pwp.blueyonde...



glop, 2007-05-19 22:32:30

Super ce tuto, je vais essayer ça bientôt ;)



Pascal77, 2007-05-19 23:32:59

encfs + fuse c’est quand meme plus simple non ?



crypto-crypteur, 2007-05-20 00:47:23

Oh punaise ! Il a l’air bien ce soft mais on doit passer plus de temps à taper des lignes de commande bizarres qu’à travailler avec le logiciel lui-même :s

Pas la peine de mot de passe avec ça, il suffit juste de cacher le mode d’emploi !



globi, 2007-05-20 17:40:44

trés bon tuto,

je viens a l’instant de tester sur ma dapper avec l’interface graphique cryptomaster et je l’adopte ;)

glop pour info Cryptkeeper ne fonctionne que sur une feisty :(



natas99, 2007-05-21 13:47:01

On peut tout a fait crypter le HOME c’est pas un soucis !
D’ailleurs sur mon poste de travail j’ai chiffré les partitions HOME, ROOT, SWAP, et VAR (c’est un peu plus technique) et je n’ai aucun ralentissement perceptible (pourtant j’ai une machine qui fait ses deux ans).
J’ai décrit succinctement la procedure sur mon blog.



MAIDEN, 2007-07-14 17:40:38