Les disques durs sont de plus en plus petits, et des fois, on les perd ou alors on se fait voler.. Il est alors intéressant de crypter son disque en tant que particulier, mais aussi, par exemple, pour une entreprise qui a besoin de stocker des informations de manière confidentielle et accessible qu’à certaines personnes.
Attention : Crypter votre disque est un très bon outil pour protéger vos données tant que personne n’a accès physique à votre ordinateur duquel il pourrait, en l’éteignant et en le rallumant rapidement (en gros), extraire de la RAM les clefs utilisés pour crypter le disque en exécutant une attaque appellée cold boot.
Voici tout de même (car il y a l’intérêt de la clef USB perdue ou du laptop volé notamment pour lesquels ça vaut le coup) un petit tutoriel sur le cryptage de disque sous GNU/Linux dont le but est d’abord d’être compréhensible pour un.e débutant.e.
Il y a deux manières plus ou moins simples pour crypter un disque sous GNU/Linux (je ne vais pas expliquer les détails techniques) :
- cryptmount peut configurer, monter et démonter des parties cryptés de disques tout en gardant une partie des données public et
- cryptsetup s’adapte plus à un disque ou une partition entière.
Dans notre cas, on veut crypter un disque entier, /dev/sdb, qui est un disque dur externe et qui n’a pas besoin d’être monté au démarrage. Mais cela fonctionne aussi avec une simple partition qui doit être montée au boot (voir le man et ajuster /etc/fstab pour ca). Attention, les données présents sur le disque ou sur la partition ne pourront être conservées durant l’opération.
(Si votre disque est /dev/sda ou /dev/hdb, il faut bien sûr remplacer “/dev/sdb” avec votre configuration pour la suite.)
Sous Ubuntu, il suffit, pour commencer le processus, d’installer le paquet cryptsetup :
user@ordinateur:~ sudo aptitude install cryptsetup
Il nous faut mettre en place le conteneur crypté sur le disque dur. Une phrase de passe - qui servira ensuite à chaque montage du disque - vous est demandé.
user@ordinateur:~ sudo -s
La commande pour créer le conteneur Luks avec les valeurs par défaut :
root@ordinateur:~# cryptsetup luksFormat /dev/sdb
Mais atttention : Par défaut, la clef créée par luksFormat est de taille 128bit. Plus une clef est longue, plus il est difficile de la casser.* Pour changer la valeur par défaut on utilise la commande suivante (la taille maximale de clef qu’est de 256bits) :
root@ordinateur:~# cryptsetup --verbose --verify-passphrase --key-size=256 luksFormat /dev/sdb
WARNING!
========
This will overwrite data on /dev/sdb irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.
Après avoir mis en place le conteneur LUKS sur /dev/sdb nous allons créer un virtual block device - une sorte de disque virtuel qui se trouvera sur le disque système (dans /dev/mapper/ en fait) et qui sert d’interface avec notre disque crypté (/dev/sdb) :
root@ordinateur:~# cryptsetup luksOpen /dev/sdb mycrypteddisk
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.
Vérifions que le mapping “mycrypteddisk” a bien été créée :
root@ordinateur:~# ls /dev/mapper
On doit encore véritablement (et qu’une seule fois) formater notre disque dur, en utilisant un système de fichier lisible pour notre ordinateur. “mycrypteddisk” est le disque virtuel (mapping) qui fait à présent office d’interface entre nous et le vrai disque dur. On pourrait formater notre disque en ext2**, par exemple et on va exécuter toutes ces opérations en passant par le disque virtuel :
root@ordinateur:~# mkfs.ext2 /dev/mapper/mycrypteddisk
mke2fs 1.40.8 (13-Mar-2008)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
19537920 i-noeuds, 78142677 blocs
3907133 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=0
2385 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8192 i-noeuds par groupe
Superblocs de secours stockés sur les blocs :
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616
Écriture des tables d'i-noeuds : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété
Le système de fichiers sera automatiquement vérifié tous les 37 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.***
Monter le disque
Maintenant on peut véritablement monter le vrai disque depuis le disque virtuel (mapping) sur un point de montage dans /. Comme pour chaque autre disque dur on crée ce point de montage dans /media ou dans /mnt, suivant nos habitudes :
root@ordinateur:~# mkdir /media/mycrypteddisk
Puis on monte le disque, encore une fois en passant par le disque virtuel :
root@ordinateur:~# mount /dev/mapper/mycrypteddisk /media/mycrypteddisk/
Ca y est ! Normalement on peut maintenant lire et écrire sur le disque :
root@ordinateur:~# ls -l /media/mycrypteddisk/
drwx------ 2 root root 16384 2008-11-20 15:06 lost+found
Démonter le disque
Un disque monté est évidemment décrypté pendant qu’il est en utilisation, et donc, suivant les permissions, éventuellement accessible par d’autres utilisateurs. Pour démonter le volume crypté il faut alors toujours faire deux opérations (éteindre l’ordinateur aura le même effet) :
root@ordinateur:~# umount /media/mycrypteddisk/
root@ordinateur:~# cryptsetup luksClose mycrypteddisk
Utilisation journalière ou sur une deuxième machine
Si on veut utiliser le disque régulièrement, on édite le fichier /etc/crypttab de la sorte :
# <target name> <source device> <key file> <options>
mycrypteddisk /dev/sdb none cipher=aes-cbc-essiv:sha256,checkargs=ext2,tries=2
L’option “tries” indique combien de fois la phrase de pass est demandé en cas d’erreur.
Puis éditons le fichier /etc/fstab :
# /dev/sdb - mycrypteddisk
/dev/mapper/mycrypteddisk /media/mycrypteddisk ext2 user,noauto 0 0
On peut alors monter le disque facilement :
root@ordinateur:~# cryptsetup luksOpen /dev/sdb mycrypteddisk
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.
user@ordinateur:~ mount /media/mycrypteddisk
++