Cryptographie sous Linux


Version non définitive du document

Réalisation d'un container chiffré

Vous trouverez dans ce petit tutorial, la marche à suivre pour créer des containers chiffrés sous Linux. Les utilisations sont nombreuses: création d'un cdrom chiffré, protection d'une partie du disque dur, ... N'hésiter pas à me contacter si certaines choses ne vous paraissent pas claires, ou si vous êtes bloqués. (Rq: J'ai fait la manipulation avec un noyau 2.4.20 sous Debian Woody)

Recompilation du noyau

Avant de pouvoir recompiler le noyau avec les bonnes options, il faut appliquer le patch lui permettant d'utiliser de la cryptographie, en effet pour des pour des raisons d'exportation, ces composants ne sont pas dans le noyau "standard", ainsi qu'un patch modifiant le périphérique de loopback. Vous pouvez les télécharger sur un miroir de kernel.org dans l'arborescence /pub/linux/kernel/crypto/va.b/patch-int-a.b.c.d.gz, /pub/linux/kernel/crypto/va.b/testing/loop-jari-a.b.c.d.patch où a.b.c. est la version du noyau et d la version du patch. (NB: Pour les dernieres versions du noyau le patch peut se trouver dans un sous repertoire: testing).

root# cd /usr/src/linux
root# cp .config ..           # Ce petit truc permet 
root# make mrproper           # d'eviter la supression du
root# mv ../.config .         # fichier .config par mrproper
root# zcat patch-int-a.b.c.d.gz | patch -p1
root# cat loop-jari-a.b.c.d.patch | patch -p1

Ensuite vient la configuration du noyau*, en plus de votre configuration habituelle, il faut sélectionner les options suivantes.
* A l'aide des commandes classiques : make config (configuration en mode texte seulement), make menuconfig (configuration avec une interface ncurses), make xconfig (configuration avec une interface graphique).

Compilation du noyau sous Debian
root# make-kpkg --bzimage --revision 1 binary-arch
root# make-kpkg --revision 1 modules_images

création du system de fichiers

Creation d'un system de fichier (ici 10Mega)
user$ dd if=/dev/urandom of=~/.crypto bs=1024k count=10
user$ mkdir ~/container
user$ su
root# losetup /dev/loop0 -e aes /home/user/.crypto
root# mkfs.ext2 /dev/loop0
root# losetup -d /dev/loop0
root# chmod 4755 /sbin/losetup
root# echo "/dev/loop0 /home/user/container ext2 user,umask=000,noauto 0 0" >> /etc/fstab

Rq: Il est possible d'utiliser /dev/zero pour remplir le fichier, c'est plus rapide sur des machines pas très puissantes, mais cela introduit des failles dans le systeme l'attaquant peut connaître des informations.

Utilisation

Mise en place du container

user$ losetup /dev/loop0 -e aes /home/user/.crypto
user$ mount /dev/loop0 /home/user/container

Supression du container

user$ umount /home/user/container
user$ losetup -d /dev/loop0

Liens

http://encryptionhowto.sourceforge.net/previous/Encryption-HOWTO-0.2.1-4.html Le "Encryption How-to" (en anglais)

https://www.bouissou.net/wws/d_read/open-crypto/linux-crypto/mkcryptfs Un petit script permettant de configurer facilement les containers.

http://sourceforge.net/projects/loop-aes/