× Warning! Currently only available in French, this article will be translated in English soon.
Par F0cks le 11 Septembre 2017.

Description

Il m'arrive souvent de balader des clés USB ou des disques durs externes... Et parfois, il m'arrive de les oublier ou de les perdre... Il faut donc les chiffrer pour protéger les données que ces supports contiennent!

Plus grave, lorsqu'on transporte des données TRÈÈÈÈÈÈÈÈS sensibles (par exemple pour le boulot, ou une sauvegarde de son porte-feuille bitcoin), il est possible qu'on se fasse agresser et qu'on soit contraint de déchiffrer la clé USB sous la menace. Il est donc intéressant d'avoir un volume factice contenant de fausses informations et un volume caché contenant les vraies.


veracrypt-logo

Comme je veux pouvoir déchiffrer mes clé USB sur différents OS, j'ai choisi un logiciel utilisable sur Linux comme sur Windows: VeraCrypt.

VeraCrypt est un logiciel open source développé par une société française (IDRIX). Que du bon! C'est le descendant de TrueCrypt pour les connaisseurs. Il permet de monter un disque virtuel, à partir d'un disque ou d'un conteneur chiffré, grâce à une méthode d'authentification : mot de passe, clé, etc...


Au départ, je voulais partitionner la clé avec une partition normale (ntfs) et une partition chiffrée... Mais Windows semble avoir du mal à utiliser les partitions dont il ne connait pas le format... J'ai donc opté pour une autre solution.

Je vais créer une unique partition prenant tout l'espace de la clé USB. Sur cet espace, je vais créer un volume chiffré qui prend pratiquement toute la place disponible. C'est un genre de dossier chiffré que l'on peut monter comme un disque dur. A l'intérieur de celui-ci, des données fausses ou peu sensibles, ainsi qu'un volume chiffré caché. Lui contiendra les codes nucléaires que le président nous a demandé de garder précieusement! On pourra choisir si on veut monter le volume chiffré factice ou le volume chiffré caché en fonction du mot de passe que l'on utilise. Le volume chiffré caché est indétectable, impossible de savoir s'il existe ou non.

Dans le peu d'espace non chiffré restant de la clé, on mettra VeraCrypt en mode portable pour Windows et Linux. On pourra ainsi monter les volumes sur n'importe quel ordinateur du moment qu'on a un accès administrateur.

espace_usb-full.png

Structure interne de la clé

Espace contenant VeraCrypt portable

Cette section permet de recréer VeraCrypt en mode portable avec la dernère version du logiciel pour Windows et Linux. J'ai préparé une archive contenant les fichiers à mettre à la racine de la clé avec VeraCrypt 1.21 dispo ici. Ça permet de passer directement à la section : Création du volume caché.


VeraCrypt en mode portable pour Linux

Il faut se rendre sur le site officiel dans la rubrique download: https://www.veracrypt.fr/en/Downloads.html et télécharger la version compatible Linux.

L'archive obtenue contient 4 scripts d'installation. Nous allons extraire la version GUI en x86 et x64.

download-linux.jpg

Télécharger VeraCrypt pour Linux


On exécutera les scripts l'un après l'autre:

./veracrypt-1.21-setup-gui-x86
./veracrypt-1.21-setup-gui-x64

Pour chacun des scripts, l'interface graphique d'installation se lancera. Au lieu de l'installer, on choisira l'option Extract .tar Package FIle. On acceptera ensuite la licence I accept and agree to be bound by the license terms puis on termine en cliquant deux fois sur OK.

Obtenir les packages VeraCrypt pour Linux


Les fichier ont été extraits dans /tmp sous le nom de veracrypt_1.21_i386.tar.gz et veracrypt_1.21_i386.tar.gz. On va les extraire dans un dossier VeraCrypt-portable/Linux à la racine de la clé. Le premier dans un dossier i386:

cd /path/to/key/VeraCrypt-portable/Linux/ && tar -xzf /tmp/veracrypt_*_i386.tar.gz  && mv usr i386

Puis le second dans un dossier amd64:

cd /path/to/key/VeraCrypt-portable/Linux/ && tar -xzf /tmp/veracrypt_*_amd64.tar.gz  && mv usr amd64
extract2key.png

Extraire VeraCrypt pour Linux sur la clé


Pour lancer VeraCrypt sur linux, il suffit de choisir le bon dossier en fonction de l'OS (32 ou 64bit) et d'exécuter bin/veracrypt.

VeraCrypt en mode portable pour Windows

Il faut d'abord se rendre sur le site officiel dans la rubrique download: https://www.veracrypt.fr/en/Downloads.html et télécharger la version compatible Windows.

Nous obtenons un simple exécutable qui va nous permettre de récupérer les packages 32 et 64 bits.

download-windows.jpg

Télécharger VeraCrypt pour Windows


Une fois lancé, on nous demande d'accepter la licence. Sur la fenêtre suivante, nous avons le choix entre Install et Extract. C'est Extract que nous allons séléctionner. On va ensuite valider la fenêtre qui nous explique que Windows a besoin d'un minimum de drivers pour fonctionner... Puis nous répondrons Yes pour confirmer qu'on veut bien extraire les packages. J'ai laissé le point d'extraction choisi par le logiciel C:\Users\fOcks\Downloads\VeraCrypt et coché l'option pour ouvrir ce dossier une fois l'opération terminée. Quand tout est terminé, une fenêtre nous proposant de faire un don s'ouvre, on clique sur Finish et le dossier contenant le package s'ouvre.

Obtenir les packages VeraCrypt pour Windows


On va ensuite déplacer le contenu du dossier généré par VeraCrypt dans le dossier VeraCrypt-portable\Windows à la racine de la clé USB.

gif

Extraire VeraCrypt pour Windows sur la clé


Pour lancer VeraCrypt sur Windows, il suffit d'exécuter VeraCrypt (32 bits) ou VeraCrypt-x64 (64 bits).

Bonus: scripts facilitant le lancement

Pour faciliter un peu le lancement de VeraCypt en mode portable, nous allons créer 2 scripts. Ils permettront de choisir directement s'il faut lancer le logiciel en 32 ou 64bits. Ils nous éviteront aussi de fouiller dans les packages pour trouver le bon exécutable etc...


POUR LINUX: nous allons créer un script linux_launcher.sh dans le dossier VeraCrypt-portable à la racine de la clé:

#!/bin/bash

  MACHINE_TYPE=`uname -m`
  if [ ${MACHINE_TYPE} == 'x86_64' ]; then
    # 64-bit
    "$PWD"/Linux/amd64/bin/veracrypt
  else
    # 32-bit
    "$PWD"/Linux/i386/bin/veracrypt
  fi

  exit

On n'oublie pas de rendre le script executable:

chmod 777 linux_launcher.sh

On peut maintenant tester le script et vérifier que VeraCrypt s'ouvre bien:

Test Vecracrypt portable sur Ubuntu

Si vous n'avez pas configuré Ubuntu pour lancer un script en double cliquant dessus, vous pouvez le faire avec dconf-editor, ou alors lancer le script avec un terminal.


POUR WINDOWS: nous allons créer un script windows_launcher.bat dans le dossier VeraCrypt-portable à la racine de la clé:

@echo OFF

  reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set OS=32BIT || set OS=64BIT

  if %OS%==32BIT Windows\VeraCrypt.exe
  if %OS%==64BIT Windows\VeraCrypt-x64.exe

  exit /b

On peut maintenant tester le script et vérifier que VeraCrypt s'ouvre bien:

Test Vecracrypt portable sur Windows10


Création du volume chiffré caché

L'avantage d'avoir VeraCrypt en mode portable, c'est qu'on va pouvoir l'utiliser directement pour créer notre volume chiffré sans avoir besoin d'installation. Dans la première fenêtre de l'interface graphique, on va cliquer sur Create Volume. On va créer notre conteneur chiffré en choisissant Create an encrypted file container. On va ensuite séléctionner l'option volume caché Hidden VeraCrypt volume.

Créer un volume chiffré caché


On va ensuite choisir l'emplacement et le nom du volume chiffré. On va le créer à la racine de la clé, à coté du dossier VeraCrypt-portable. On va nommer ce conteneur volume_chiffré. L'étape suivante consiste à choisir le type de chiffrement. Plusieurs options sont disponibles mais on va garder celles par défaut.

Emplacement et nom du volume


On va maintenant choisir la taille du volume. VeraCrypt portable ne prend quasiment aucune place (environ 70Mo). Ma clé fait 30Go et je vais me garder environ 5Go d'espace libre non chiffré. Ca me laisse un peu de place pour transporter des fichiers sans avoir besoin de monter le volume chiffré. Le conteneur fera donc 25Go. Le mot de passe sera VOLUME. Il ne servira qu'à ouvrir ce conteneur. Ce sera un autre mot de passe pour le volume caché. Evidemment, il faut choisir quelque chose de bien plus compliqué que "VOLUME" qui ne sert que d'exemple.

Taille et mot de passe du volume


L'étape suivante consiste à bouger la souris aléatoirement sur la fenêtre afin de créer une clé de chiffrement le plus aléatoire possible. Une fois que la jauge est remplie, on peut cliquer sur Format. Vient ensuite une longue étape de chiffrement du volume. À titre d'exemple, pour 25Go et une vitesse d'écriture autour de 10Mo/s, on va attendre environ 30 minutes... Bon moment pour aller boire un chocolat chaud! Cette étape terminée, il vous faudra taper votre mot de passe si vous êtes sur Linux. Sur Windows, vous avez probablement lancé le logiciel en mode administrateur. Enfin, une fenêtre s'ouvre et nous propose d'ouvrir le volume fraichement créé Open Outer Volume. On ne va pas le faire tout de suite. On passe à l'étape suivante en choisissant Next>.

Chiffrement du volume


Nous accédons maintenant à la création du volume chiffré caché. Ici aussi, on nous demande de choisir la méthode de chiffrement de ce volume. On laisse encore une fois les valeurs par défaut. On choisit maintenant l'espace dont va disposer ce volume caché. J'ai choisi au départ un conteneur de 25Go. Notre volume caché ne pourra donc pas excéder cette valeur puisqu'il est à l'intérieur de ce conteneur. VeraCrypt indique que je dispose d'un maximum de 24,4Go. On va choisir un espace de 12,2Go. Je pourrai donc mettre 12,2Go de données dans le volume factice et 12,2Go dans le volume caché. Enfin on choisit un mot de passe différent du précédent qui ne permettra d'ouvrir que le volume caché. Cette fois-ci j'ai choisi pour l'exemple VOLUME_caché.

Taille et mot de passe du volume caché


Le logiciel va nous demander si on envisage de mettre des fichiers plus gros que 4Go dans le volume caché, probablement pour nous proposer le bon format de partition. Comme mon volume fait plus de 12Go, je choisis cette option I will store files larger than 4 GB on the volume. On nous demande ensuite de choisir le type de partition. Pour rester facilement compatible entre Linux et Windows, le NTFS me semble adapté. Finalement, VeraCrypt nous demande si on va monter ce volume sur des OS différents. C'est le but, du coup on choisit l'option I will mount the volume on other platforms. Je ne vois pas vraiment à quoi sert cette option, il faudrait regarder en détail le fonctionnement du logiciel. Un message d'avertissement nous previent d'un éventuel risque d'incompatibilité entre la partition et les différents OS qui pourraient nécéssiter l'installation de drivers. Mais nous n'aurons pas de souci.

Format du volume caché


Nous recommençons encore l'étape de mouvements aléatoires sur la fenêtre avec le curseur de la souris. Une fois la jauge remplie, on clique sur Format. La fenêtre peut sembler inactive ou buguée. Mais tout va bien! Il faut juste attendre un peu la fin du processus. Un message apparait pour nous prévenir de ne rien mettre pour le moment dans le volume factice car on risquerait d'écrire sur le volume caché et de le corrompre! Nous allons voir dans la partie suivante comment empêcher cela. La création du volume caché est enfin finie, on peut cliquer sur Exit et revenir à la fenêtre principale de VeraCrypt.

Chiffrement du volume caché



Monter les volumes chiffrés

Pour faire simple, il y a 3 façons d'utiliser cette clé USB:

  • La première est tout simplement de déchiffrer et monter le volume caché. On peut ajouter, supprimer, lire des données sans aucun problème.
  • La deuxième consiste à déchiffrer et monter le volume factice (contenant le volume caché) pour y ajouter des données. Il faut cependant protéger le volume caché car on pourrait écrire par-dessus et le corrompre.
  • La dernière façon consiste à déchiffrer et monter le volume factice sans laisser soupçonner qu'il existe un volume caché à l'intérieur. C'est cette technique qu'on utilise en cas d'extorsion.

Monter le volume chiffré caché

Le volume caché est contenu dans le volume factice. Il est donc plus petit que ce dernier. Par conséquent il n'y a aucune possibilité que les données que l'on enregistre sur le volume caché déborde sur celles du volume factice. Pour faire simple, quand le volume caché est déchiffré et monté, on peut faire ce qu'on veut dedans sans s'inquiéter, comme le remplir entièrement.

Pour déchiffrer et monter ce volume, rien de plus simple. On sélectionne un point de montage (ici j'ai choisi le 1). Ensuite, on clique sur Select file et on choisit notre conteneur chiffré à la racine de la clé volume_chiffré. On peut ensuite commencer la phase de déchiffrement et de montage du volume cliquant sur Mount. Dans la nouvelle fenêtre qui apparait, on vérifie bien qu'aucune option n'est séléctionnée (Use PIM, Use keyfiles, etc...) et on entre le mot de passe du volume caché. C'est le deuxième qu'on a rentré à la création du volume, pour moi c'était VOLUME_caché. Il va y avoir un temps de chargement de quelques secondes, et pour Linux une fenêtre nous demandant le mot de passe administateur. Une fois l'opération terminée, on voit dans la fenêtre principale que notre volume est monté dans /media/veracrypt1 et qu'il fait 11,9Go (le chiffrement nous a fait perdre un peu de place). On voit surtout que le Type est Hidden. Ça signifie qu'on a bien déchiffré et monté le volume caché. L'ordinateur détecte un nouveau disque dur dans lequel nous allons pouvoir placer les codes nucléaires dont on a la garde!

Monter/Démonter le volume caché


Il faut bien penser à démonter le disque une fois son utilisation terminée. Sinon les infos resteront en cache sur l'ordinateur jusqu'à son redémarrage. Pour démonter le disque, il suffit de retourner sur l'interface principale de VeraCrypt, de sélectionner la ligne sur laquelle on a monté le volume et de cliquer sur Dismount.


Monter le volume factice en préservant le volume caché

Au même titre que le volume caché, le volume factice est tout autant utilisible pour stocker des données. Seulement voilà, si on le monte à la place du volume caché, l'espace total est utilisable et on risque d'écrire des données par-dessus le volume caché. Par exemple, mon volume factice fait 25Go, le volume caché contenu à l'intérieur en fait 12,5. Il reste donc 12,5Go disponibles dans le volume factice. Si je mets 20Go de données dans mon volume factice, j'écraserai 7,5Go du volume caché. Il n'y aura aucun message d'avertissement ni d'erreur, le volume caché étant indétéctable.

gif

Exemple de volume caché corrompu


Heureusement, une option existe pour monter le volume factice tout en protégeant le volume caché. Pour cela, on suit la même procédure que celle qui permet de monter le volume caché: on choisit un point de montage, on sélectionne notre volume chiffré, mais au momemnt de rentrer le mot de passe nous allons cliquer sur le bouton Option. Dans le menu déroulant qui apparaît, nous allons activer la protection en écriture du volume caché Protect hidden volume when mounting outer volume. Il faudra ensuitre entrer deux mots de passe. Le premier est celui du volume factice VOLUME. Le deuxième est celui du volume caché VOLUME_caché. En poursuivant le reste de la procédure, une fenêtre va s'ouvrir pour spécifier qu'il vaut mieux ne pas ouvrir le volume caché pendant qu'il est protégé. Les deux volumes seraient en protection en écriture et cela créerait des conflits dans les volumes. Enfin, on peut voir dans type : Outer. Ça signifie que tout s'est bien passé, le volume monté est le factice et le volume caché est protégé. On peut stocker des données fausses ou peu importantes sans risque. Ici aussi, il faut bien démonter le volume une fois son utilisation terminée.

Monter/Démonter le volume factice (volume caché protégé en écriture)


Au passage, il y a une case Mount volume as read-only dans option. Elle permet de monter le volume factice en lecture seule. On ne pourra donc pas écrire dedans et donc préserver le volume factice. On utilise cette option seulement si on veut récupérer des fichiers contenus dans le volume factice et ne pas activer la protection en écriture du volume caché. C'est pour aller plus vite!


Monter le volume factice sous la contrainte

Dans quelle situation un volume caché peut être utile? J'en vois deux... La première: le Parrain nous demande de lui montrer ce qu'il y a dans le volume chiffré sur notre clé. La deuxième: un voleur de secrets industriels nous menace pour qu'on lui donne les plans du nouveau Rafale. Impossible de refuser. Banco, j'ouvre le volume en direct devant eux... Sauf qu'il s'agit du volume factice et qu'ils n'ont aucun moyen de savoir qu'il existe un volume caché.


Pour monter le volume factice, il faut suivre la même procédure que celle du volume caché: on selectionne notre volume volume_chiffré puis on le monte avec Mount. Sauf que cette fois-ci, au moment de rentrer le mot de passe, on va choisir celui du volume factice: VOLUME. On voit maintenant dans la fenêtre principale un volume monté de 24,4Go et de type Normal. On ne pourra voir que les données contenues dans ce volume, mais on ne verra pas qu'il y a un volume caché dedans, et aucune information n'indique qu'un tel volume existe...

Monter/Démonter le volume factice sous la contrainte


Attention, dans ce mode il ne faut pas écrire de donnée à l'intérieur du volume. Il n'est pas en lecture seule et la protection du volume caché n'est pas activée. Vous pourriez donc le corrompre ce dernier. Encore une fois, rien ne vous indiquera que vous écrivez sur le volume caché pour ne pas vous trahir.

Conclusion

Finalement, utiliser un volume caché dans un volume factice avec VeraCrypt revient simplement à choisir le bon mot de passe au moment de l'authentification.

On peut faire ce qu'on veut de l'espace dans le volume caché. Par contre, il faut faire attention lorsque c'est le volume factice qui est monté. En ajoutant trop de données, on pourrait venir à écrire sur le volume caché. Et comme il est totalement invisible, aucun message d'erreur ne nous préviendrait. Si on veut utiliser ce volume, il faut le monter en lecture seule ou protéger en écriture le volume caché. On n'utilise bien sûr jamais ces options lorsqu'on nous force à déchiffrer la clé. Elles indiqueraient qu'un volume caché existe.

Je me questionne un peu sur la dangerosité d'un volume caché absolument indétectable (en tout cas à l'heure actuelle). Si on crée un volume chiffré normal, sans volume caché à l'intérieur, il est impossible de prouver que ce volume caché n'existe pas... On peut prouver qu'il existe en le montant, mais on ne peut pas prouver qu'il n'existe pas... Que ce soit les forces de l'ordre ou un extorqueur qui nous contraignent à le monter, ce sera impossible et donc, impossible de prouver notre bonne foi. Il me parait donc judicieux de toujours créer un volume caché, même si ce n'est que quelques centaines de Ko, que nous n'utiliserons pas, afin de pouvoir le monter. C'est là-dessus que se base le volume caché, comme on ne peut pas prouver qu'il existe, vous pouvez mettre ce que vous voulez dedans et dire que votre clé n'en contient pas. A vous de voir si les données contenues dedans méritent la torture ou non!


Comments



gravatar

jerome 2021-02-01 19:17:33

Bonjour,
Je ne sais pas si vous avez encore accès aux messages de votre blog mais je tente ma chance.
Merci pour le très bon tuto sur veracrypt que j'ai mis en application.
Me voilà donc avec une clé USB disposant d'un volume caché dans un volume apparent.
J'aimerais supprimer le volume caché mais je n'y arrive pas. Avez-vous un tuto pour cela

Reply


gravatar

F0cks 2021-02-02 16:57:36

Hello!
Effectivement ça fait un moment que tout ça est en pause ! (Bof quelques années dans une vie qu'est ce que c'est? :D )
Pour répondre à ta question, le volume caché n'est pas vraiment indétectable mais l'est suffisamment pour qu'on ne puisse pas l'effacer simplement. L'option n'existe d'ailleurs pas dans VeraCrypt. La seule solution que j'avais trouvée à l'époque, c'était de remplir complètement le volume chiffré pour venir écraser le header du volume caché.
En gros tu remplies le volume à fond, et tu écraseras forcément le contenu du volume caché et tout ce qui permet de le définir.

Reply


Leave a comment: