Dernière mise à jour : 25/03/2009
Cet article devrait vous permettre de paramétrer une partition sur un disque (ou une clé) dans un format crypté. Il est important de noter que le cryptage d'un disque dur représente une couche supplémentaire de sécurité mais n'est en aucun cas la solution ultime de protection des données, il est en effet possible de trouver la clé si une personne a suffisamment de puissance de calcul ou bien si la clé utilisée est trop faible (mot de passe trop facile à retrouver). Je vous conseille un petit passage sur le site officiel de DM-Crypt (ancienne méthode) et aussi celui de cryptsetup (et LUKS).
Partition normale
J'ai utilisé une Debian pour cet article mais toutes les distributions modernes (et à base de noyau 2.6) devraient comporter ces outils. Commençons par installer les bons outils, tapez : apt-get install cryptsetup pmount. Après avoir installé ces outils, imaginons un disque USB vu sur votre machine comme /dev/sdb. donc dans cet exemple, nous utilisons une partition sur le disque (sdb1) que nous allons déclarer par le biais de DM-Crypt (si vous compilez votre propre noyau, assurez-vous d'avoir compilé le module). Comme un mot de passe normal, entrez le mot de passe deux fois :
-
cryptsetup luksFormat /dev/sdb1
WARNING!
========
This will overwrite data on /dev/sdb1 irrevocably.
Are you sure?
(Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.
-
cryptsetup luksOpen /dev/sdb1 mycrypt
Enter LUKS passphrase:
key slot 0 unlocked
Command successful.
-
mke2fs -j /dev/mapper/mycrypt
mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
24903680 inodes, 49785427 blocks
2489271 blocks (5.00%) reserved for the super user
First data block=0
1520 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Writing inode tables: done
Writing jounal : done
Writing superblocks and filesystem accounting information: done
-
mount -t ext3 /dev/sdb1 /mnt/secure/
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
Changement/Ajout de clé
Un grand merci à Lefinnois pour son article sur le sujet. Je résume ici la procédure :
-
cryptsetup luksAddKey /dev/sdb1 # ajoute une clé au trousseau
cryptsetup luksDump /dev/sdb1 # liste les clés et informations sur la partition
cryptsetup luksDelKey /dev/sdb1 1 # efface la clé 1 dans le trousseau
J'ai eu besoin de faire la manipulation pour mon portable sous Debian. Prenons comme exemple une partition de 2Go que vous voulez utiliser sur votre portable de façon sécurisée. Nous allons ici déclarer la partition, la monter, la formater et l'ajouter au système :
-
cryptsetup -h sha256 -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/hda2
cryptsetup luksOpen /dev/hda2 cswap
mkswap /dev/mapper/cswap
cswap /dev/hda2 none swap,luks,timeout=30 # ajouter Ă /etc/crypttab
/dev/mapper/cswap none swap sw 0 0 # ajouter Ă /etc/fstab
dpkg-reconfigure -plow uswsusp # reconfigure uswsusp pour écrire des données non cryptées
Voilà , cet article avait besoin de quelques modifications (surtout concernant l'utilisation de LUKS), j'espère avoir bien convert tout cela.