Stockage des données confidentielles sous GNU/Linux
Ce tutorial est le complément de l'article Stockage des données confidentielles sous GNU/Linux (Hakin9 01/2005). On considere que les exercices décrits ci-dessous seront effectués au moyen du CD Hakin9 Live.
Avertissement! Il n'est pas conseillé de chiffrer les vraies données disponibles dans le systeme Hakin9 Live – elles risquent d'etre perdues lors du redémarrage de l'ordinateur.
Objectif: Apres avoir fait les exercices décrits, vous saurez :
au moyen du paquet GnuPG chiffrer les fichiers simples par clé symétrique et asymétrique,
créer et utiliser le répertoire chiffré a l'aide de l'outil EncFS,
créer et monter une partition chiffrée (réelle et virtuelle) a l'aide de cryptoloop.
Chiffrage symétrique des fichiers – paquet GnuPG
Dans le premier exercice, nous utiliserons le paquet GnuPG pour chiffrer un fichier simple. Dans notre cas, ce sera le fichier HK1204.pdf.
[01] Dans le tutorial, nous nous servirons de l'algorithme AES (il a le meilleur rapport qualité efficacité). Nous commençons par charger le module du noyau approprié:
$ su -
# modprobe aes
# exit
[02] Nous créons le répertoire /home/haking/encrypted dans lequel nous stockerons les données chiffrées:
$ mkdir ~/encrypted
Dans ce répertoire, nous enregistrons le fichier HK1204.pdf.
[03] Maintenant, il est temps de commencer le chiffrage. Tapons la commande suivante :
$ gpg --output ~/encrypted/cyph1 --symmetric --cipher-algo AES192 ~/encrypted/HK2104.pdf
Cette commande permet de chiffrer symétriquement le fichier HK2104.pdf dans le fichier cible ~/encrypted/cyph1 au moyen de l'algorithme AES sur la clé de 192 bits.
[04]Pour chiffrer, il est nécessaire d'entrer un mot de passe. Réfléchissons bien pour inventer une phrase qui n'a pas de sens, mais qui est facile a retenir – par exemple Trois gros rats gris dans trois gros trous tres creux, 666. Ce sera notre mot de passe.
[05] Le fichier a été chiffré. Maintenant, il faut supprimer l'original:
$ shred -n 35 -z -u ~/encrypted/HK2104.pdf
[06] Pour déchiffrer le fichier et récupérer les données, nous allons taper la commande suivante:
$ gpg --output HK2104.pdf --decrypt ~/encrypted/cyph1
Répertoires chiffrés – EncFS
[07] Avant d'utiliser cette possibilité du programme EncFS, il faut créer deux répertoires. L'un (chez nous ~/.crypto) stockera nos données sous forme chiffrée (il ne sera pas utilisé de façon directe), par contre, dans le deuxième(~/secret), elles seront montées et déchiffrées à chaque demande d'accès. Le montage, bien sûr, ne sera possible qu'après la saisie du mot de passe.
$ mkdir ~/.crypto
$ mkdir ~/secret
[08] L'étape suivante consiste à activer le mécanisme EncFS:
$ su -; insmod fuse; exit
$ encfs ~/.crypto ~/secret
Après avoir appuyé sur la touche [Entrée], le programme nous demande de choisir le mode de configuration. Nous décidons d'utiliser le mode préconfiguré pour les paranoïaques.
Il est temps de déterminer le mot de passe associé à notre archive. Après la saisie du mot de passe et sa confirmation, notre système de fichiers virtuel est prêts à être utilisé.
[09] Nous y copions quelques fichiers (echo, ls, telnet):
$ cp /bin/echo /bin/ls /bin/telnet ~/secret/
Nous vérifions ce qui se trouve dans les répertoires ~/secret et ~/.crypto:
$ ls ~/secret
$ ls ~/.crypto
Comme vous le voyez, le premier contient nos fichiers, et le deuxième – leurs versions chiffrées. Maintenant, pour que personne ne puisse lire leur contenu, nous pouvons démonter le système de fichiers virtuel à l'aide de la commande:
$fusermount -u ~/crypto
Réussi! Nos données sont protégées.
[10] Maintenant, essayons de les monter encore une fois – avec un protection supplémentaire qui permet le démontage automatique après une période d'inactivité (10 minutes):
$ encfs --idle=10 ~/.crypto ~/secret
Nos fichiers sont de nouveau disponibles dans le répertoire ~/secret. Si nous attendons 10 minutes, le répertoire sera automatiquement démonté.
Système de fichiers chiffré – cryptoloop
Il reste encore un outil qui nous permettra de protéger les fichiers confidentiels. C'est cryptoloop, l'outil intégré dans le noyau de Linux.
[11] Nous admettons que nous n'avons pas de partition libre (ce qui est le cas du CD Hakin9 Live), nous nous servirons donc d'une caractéristique commode du mécanisme de retour – loopback – permettant de l'utiliser comme un système de fichier ou un fichier ordinaire. Préparons-le:
$ dd if=/dev/urandom of=~/crypto.raw bs=1k count=10000
À la suite de l'exécution de cette commande, le fichier d'une taille de 10 Mo est créé. Il contient des valeurs aléatoires (déchets).
[12] Dans l'étape suivante, il faut associer le fichier créé au dispositif loop libre et de le chiffrer par le biais de la méthode décrite:
$ su -
# modprobe cryptoloop
# losetup -e aes-192 /dev/loop1 /home/haking/crypto.raw
Le programme nous demande d'entrer le mot de passe (20 caractères au minimum).
[13] Nous avons préparé de la place. Maintenant, il faut y mettre un peu d'ordre, c'est-à-dire, créer un système de fichiers quelconque. Par exemple ext2:
# mkfs.ext2 /dev/loop1
[14]Après cela, nous pouvons libérer (option -d) le dispositif
loop1:
# losetup -d /dev/loop1
# exit
[15] Notre système de fichiers chiffré est prêt et il peut être monté et utilisé de la même façon que tout autre système de fichiers. Montons-le et voyons comment il fonctionne:
$ mkdir ~/encrypted_disk
$ mount -t ext2 ~/crypto.raw ~/encrypted_disk -oencryption=aes-192
La commande mount, après la saisie du mot de passe valide, associe le fichier donné au premier dispositif loop libre.
[16] Copions maintenant nos fichiers dans un répertoire sûr:
$ cp /bin/echo /bin/ls /bin/telnet ~/encrypted_disk
Et c'est tout – notre nouveau disque chiffré peut être monté et démonté suivant les besoins. Les personnes non-autorisées qui ne connaissent pas le mot de passe ne pourront pas y accéder.