Crypter une partition avec TrueCrypt

 

Le but de cet article est de retracer mon expérience récente dans la mise en place d'une partition cryptée sur un serveur.

Quand on cherche un peut sur Internet de la documentation sur TrueCrypt, on tombe sur pas mal d'articles expliquant comment crypter un conteneur de données (un fichier ou une partition) via l'interface graphique de gestion de TrueCrypt.

Le but est donc ici de mettre en place une partition cryptée en ligne de commande.

Présentation de TrueCrypt

Une petite présentation de TrueCrypt sur Wikipedia et un article sur ubuntu-fr.

 

Installation

On va commencer par installer les dépendances nécessaires :

# apt-get install libfuse2 dmsetup
# modprobe fuse

Ne pas oublier de rajouter fuse aux modules démarrés lors du boot du système (fichier /etc/modules).

 

TrueCrypt n'est pas disponible sous forme de paquets à cause de problèmes de licence, on va donc devoir le télécharger sur le site du projet : http://www.truecrypt.org/downloads

Dans mon cas j'ai récupéré la version console-only 64 bits : truecrypt-6.3a-linux-console-x64.tar.gz

# tar xvzf truecrypt-6.3a-linux-console-x64.tar.gz
# chmod +x truecrypt-6.3a-setup-console-x64
# ./truecrypt-6.3a-setup-console-x64

 

Création de la partition cryptée

Création du volume

La partition à crypter est /dev/hdb, je prends ici une partition vierge de toutes données :

# truecrypt --create

Volume type:
 1) Normal
 2) Hidden
Select [1]: 1

Enter volume path: /dev/hdb

Encryption algorithm:
 1 ) AES
 2 ) Serpent
 3 ) Twofish
 4 ) AES-Twofish
 5 ) AES-Twofish-Serpent
 6 ) Serpent-AES
 7 ) Serpent-Twofish-AES
 8 ) Twofish-Serpent
Select [1]: 7

Hash algorithm:
 1) RIPEMD-160
 2) SHA-512
 3) Whirlpool
Select [1]: 3

Filesystem:
 1) FAT
 2) None
Select [1]: 2

Enter password:

Enter keyfile path [none]:[ENTER]
Please type at least 320 randomly chosen characters and then press Enter:

Appuyez sur 320 touches

Done:   3,184%  Speed:   51 MB/s  Left: 16 minutes

 

Recommandations pour la création du mot de passe :

* We recommend choosing a password consisting of more than 20 characters.

* Password must contain only ASCII characters.
Non-ASCII characters in password might cause the volume to be impossible to mount when your system configuration changes.
The following characters are allowed:
  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w k y z { | } ~

Pour générer un bon mot de passe :

# pwgen -N 1 -s 50

Bien sur stockez ce mot de passe en lieux sur, sa perte pourrait être préjudiciable pour vos données. Par exemple mon mot de passe est conservé dans un fichier crypté en gpg.

 

Création du système de fichier

On va devoir maintenant monter le volume sans monter le système de fichier, vu que pour le moment nous n'avons pas de système de fichier sur ce volume :

# truecrypt -t /dev/hdb --filesystem=none
Enter password for /dev/hdb:
Enter keyfile [none]:
Protect hidden volume (if any)? (y=Yes/n=No) [No]:

On va chercher dans les propriétés du volume le device créé :

# truecrypt -t --volume-properties
Slot: 1
Volume: /dev/hdb
Virtual Device: /dev/mapper/truecrypt1
Mount Directory:
Size: 2,0 GB
Type: Normal
Read-Only: No
Hidden Volume Protected: No
Encryption Algorithm: Serpent-Twofish-AES
Primary Key Size: 768 bits
Secondary Key Size (XTS Mode): 768 bits
Block Size: 128 bits
Mode of Operation: XTS
PKCS-5 PRF: HMAC-Whirlpool
Volume Format Version: 2
Embedded Backup Header: Yes

 

On récupère l'information du "Virtual Device" de façon à créer le système de fichier :

# mkfs.ext3 /dev/mapper/truecrypt1

 

On démonte ce volume virtuel :

# truecrypt -t /dev/hdb -d

 

Maintenant on peut monter la partition cryptée sur notre arborescence :

# truecrypt /dev/hdb /secret
Enter password for /dev/hdb:
Enter keyfile [none]:
Protect hidden volume (if any)? (y=Yes/n=No) [No]:

 

Nous voilà maintenant avec une partition, crypté, il faudra à chaque montage et redémarrage du serveur entrer votre mot de passe.