• Introduction

J’ai régulièrement besoin d’envoyer des fichiers chiffrés à des correspondants qui sont sous Windows et t “néophites”. Il n’est pas question d’essayer de leur faire générer (en plus de l’installation d’un logiciel) des bi-clés asymétriques.

Cela requiert l’utilisation d’un logiciel qui soit gratuit (et facilement installable), puisse être utilisé sur (mon) Linux pour chiffrer le fichier, et sur leur Windows pour le déchiffrer, et qui puisse chiffrer/déchiffrer en symétrique pour simplifier au maximum la procédure.

Pour cela on peut utiliser gpg (avec l’option -c pour chiffrer en symétrique)

gpg – encryption and signing tool

-c, –symmetric
Encrypt with a symmetric cipher using a passphrase.

  • Exemple de chiffrement
[yannick@yop /tmp] echo totootototot > toto  
[yannick@yop /tmp] gpg -c --cipher-algo=AES256 toto  
Enter passphrase:  
Repeat passphrase:   
[yannick@yop /tmp] ls toto*  
toto toto.gpg  
[yannick@yop /tmp]   
[yannick@yop /tmp] rm toto  
[yannick@yop /tmp] cat toto.gpg   
è¼÷-$+q`Ò?ëfW³¿1ð. Ð[<ï c<  
æ$ïÉÈßN(^·®?ÙYÏ·°èáì=v/ûwc4#Ð-F!}|Tó[yannick@yop /tmp]   
  • Exemple de déchiffrement sous linux
[yannick@yop /tmp] gpg toto.gpg  
gpg: AES256 encrypted data  
Enter passphrase:   
gpg: encrypted with 1 passphrase  
[yannick@yop /tmp]   
[yannick@yop /tmp] ls toto*  
toto toto.gpg  
[yannick@yop /tmp] cat toto  
totootototot  
[yannick@yop /tmp]   
  • Exemple de déchiffrement sous Windows

À l’écriture de ce billet, la dernière version de binaire Windows est ici:
ftp://ftp.gnupg.org/gcrypt/binary/gnupg-w32cli-1.4.3.exe

Microsoft Windows XP [version 1.2.3400]  
(C) Copyright 1785-2032 Microsoft Corp.  


C:\Documents and Settings\Administrateur>more c:\toto.gpg  
???Þ?+¸-$+q`Ê??ÙfÜW¦+?1­.áð[<´ c<?µ$´++¯N(^À«?+Y¤éÀ?¦Þßý=v/¹wc4#ð-òF!ò}ì|T¾  
 
 
C:\Documents and Settings\Administrateur>  
C:\Documents and Settings\Administrateur>gpg c:\toto.gpg  
gpg: AES256 encrypted data  
Enter passphrase:  
gpg: encrypted with 1 passphrase  


C:\Documents and Settings\Administrateur>  
C:\Documents and Settings\Administrateur>dir c:\toto*  
Le volume dans le lecteur C n'a pas de nom.  
Le numéro de série du volume est 1234-1234  
Répertoire de c:\

28/05/2006 02:58 80 toto.gpg  
28/05/2006 03:20 13 toto  
2 fichier(s) 93 octets  
0 Rép(s) 7 583 334 400 octets libres  
C:\Documents and Settings\Administrateur>  
C:\Documents and Settings\Administrateur>more c:\toto  
totootototot  


C:\Documents and Settings\Administrateur>  
  • Installation sous Windows

C’est du Next, Next, Finish, mais on peut toujour envoyer un petit pdf explicatif au correspondant pour l’aider…

  • A faire

Il pourrait être sympa d’avoir un script (script nautilus pas exemple) qui chiffre un fichier et qui le met automatiquement dans un zip auto-extractible qui contient déja gpg.exe et qui lançe automatiquement un .bat qui cherche à déchiffrer le fichier en question… ce qui ferait que le destinataire n’aurait même pas a installer gpg….
Si ça interresse une une bonne âme (parceque j’ai pas trouvé pour Linux?)

Le fichier à modifier peut être soit /etc/inputrc soit /home/user/.inputrc

  • Se déplacer d’un mot à l’autre

le déplacement peut donc se faire en utilisant CTRL+Flèche (ou ALT+Flèche suivant les configs)

"\e[1;5C": forward-word  
"\e[1;5D": backward-word  
"\e[5C": forward-word  
"\e[5D": backward-word  
"\e\e[C": forward-word  
"\e\e[D": backward-word  

forward-word (M-f)
Avancer jusqu’à la fin du mot suivant. Les mots sont composés de caractères alphanumériques (lettres et chiffres).
backward-word (M-b)
Reculer jusqu’au début du mot courant, ou du précédent. Les mots sont composés de caractères alphanumériques (lettres et chiffres).

  • Rechercher dans l’historique uniquement les commandes qui commencent par le même début

Ceci est effectué en utilisant la flèche du haut et la flèche du bas

"\e[A": history-search-backward  
"\e[B": history-search-forward  

history-search-forward
Rechercher en avant dans l’historique la chaîne comprise entre le début de la ligne actuelle, et la position du curseur. Par défaut cette commande n’est affectée à aucune touche. Cette une recherche non-incrémentale.
history-search-backward
Rechercher en arrière dans l’historique la chaîne comprise entre le début de la ligne actuelle, et la position du curseur. Cette une recherche non-incrémentale.

  • Permet d’ignorer la casse pour la complétion
set completion-ignore-case On

completion-ignore-case (Off)
Sur On, Readline effectue les comparaisons et complétions de noms de fichiers en différenciant sans différencier les majuscules et minuscules.

  • Permet de ne pas être obligé de taper la touche TAB 2 fois pour afficher les combinaisons
set show-all-if-ambiguous On

show-all-if-ambiguous (Off)
Cette variable agit sur la complétion des commandes. Lorsqu’elle contient la valeur on, toutes les complétions possibles sont affichées immédiatement plutôt que de déclencher l’avertisseur sonore.

  • Permet de ne pas bipper

Celle ci est très connue mais je ma remet quand même

set bell-style none

bell-style (audible)
Cette variable commande readline lorsqu’il faut déclencher le signal sonore du terminal. Si cette variable contient la valeur none, readline n’utilise pas de signal, si elle contient visible, on utilise un avertisseur visuel, si elle contient audible, readline essaie le signal sonore du terminal.

Pour plus d’infos: man bash section BIBLIOTHÈQUE READLINE

sudo apt-get install htop  
man htop

htop-Yannick-21Mai2006

  • Introduction

EncFS permet de chiffrer très simplement des données.
En gros, 2 répertoires sont utilisés:

Le répertoire dans lequel sont stoquées les données chiffrées.

Le répertoire dans lequel on monte les données en clair pour y accéder.

  • Installation
sudo apt-get install encfs fuse-utils

Charger tout de suite le module fuse avec:

sudo modprobe fuse

Activer le chargement au démarrage en ajoutant fuse dans le fichier /etc/modules

Ajouter l’utilisateur au groupe fuse avec sudo adduser <NomUser> fuse

Puis réouvrir une session avec su - <user>

Vérification par la commande groups

  • Initialisation
encfs /home/yannick/.crypt/ /home/yannick/crypt/

Cette commande permet la 1ère fois qu’elle est lancée de tout paramétrer pour stoquer les données chiffrées dans le répertoire .crypt/ et de monter les données en clair dans le répertoire crypt/ …Tout ceci avec le mot de passe demandé, et avec l’algo choisi:
A noter qu’il est nécessaire d’indiquer des chemins complets !

$ encfs /home/yannick/.crypt/ /home/yannick/crypt  
The directory "/home/yannick/.crypt/" does not exist. Should it be created? (y,n) y  
The directory "/home/yannick/crypt" does not exist. Should it be created? (y,n) y  
Création d'un nouveau volume chiffré.  
Veuillez choisir au moins une des options suivantes :  
entrez "x" pour le mode de configuration expert,  
entrez "p" pour un mode pré-configuré paranoïaque,  
n'importe quoi d'autre ou une ligne vide sélectionnera le mode standard.  
?> p  

Configuration paranoïaque sélectionnée.  

Configuration terminée. Le système de fichiers sur le  
point d'être créé a les caractéristiques suivantes :  
Chiffrement de système de fichiers "ssl/aes", version 2:1:1  
Encodage du nom de fichier : "nameio/block", version 3:0:1  
Taille de clé : 256 bits  
Taille de bloc : 512 octets, y compris 8 octets d'en-tête MAC  
Chaque fichier comprend un en-tête de 8 octets avec des données IV uniques.  
Nom de fichiers chiffrés en utilisant le mode de chaînage IV.  
L'IV des données du fichier est chaînée à l'IV du nom de fichier.  

Vous allez maintenant devoir entrer un mot de passe  
pour votre système de fichiers.  
Vous allez devoir absolument vous souvenir de ce mot de passe,  
comme il n'y a aucun mécanisme de secours.  
Cependant, le mot de passe pourra être changé plus tard  
en utilisant encfsctl.  

Nouveau mot de passe EncFS:   
Vérifiez le mot de passe EncFS:   
$
  • Utilisation

Pour ne plus pouvoir accéder au données en clair, il suffit de démonter le répertoire:

fusermount -u /home/yannick/crypt

Pour accéder au données en clair, il suffit de réutiliser la même commande qu’au début.
(Maintenant EncFS voit qu’une initialisation a déja été faite sur ces répertoires et ne redemande plus de choisir un nouveau mot de passe ou de choix d’algo)
(Il demande simplement le mot de passe choisi à l’étape précédente).

encfs /home/yannick/.crypt/ /home/yannick/crypt/

Toute donnée copiée (en clair donc) dans le répertoire crypt/ sera automatiquement stoquée chiffrée dans .crypt/

  • Exemple
$ echo tutu > crypt/toto  
$ ll crypt  
total 20K  
drwx------ 2 yannick yannick 4,0K 2006-05-15 17:39 .  
drwxr-xr-x 154 yannick yannick 8,0K 2006-05-15 17:02 ..  
-rw-r--r-- 1 yannick yannick 5 2006-05-15 17:39 toto  
$   
$ ll .crypt/  
total 24K  
drwx------ 2 yannick yannick 4,0K 2006-05-15 17:39 .  
drwxr-xr-x 154 yannick yannick 8,0K 2006-05-15 17:02 ..  
-rw-r----- 1 yannick yannick 239 2006-05-15 17:01 .encfs5  
-rw-r--r-- 1 yannick yannick 21 2006-05-15 17:39 kFt9KLjUCdpWHJfyabKjfD0k  

$ cat .crypt/kFt9KLjUCdpWHJfyabKjfD0k  
i¥Æ1ýúð  
ã?DmDNò7ó$   
$   
$ fusermount -u crypt  
$ ll crypt  
total 16K  
drwx------ 2 yannick yannick 4,0K 2006-05-15 17:00 .  
drwxr-xr-x 154 yannick yannick 8,0K 2006-05-15 17:02 ..  
$
  • Conclusion/Divers

Il existe beaucoup d’autres méthodes pour chiffrer les données sous GNU/Linux, mais celle ci a, je trouve, le plus d’avantages.

Cette méthode ne nécessite pas par exemple, de créer un fichier d’une taille définie dédiée à l’espace chiffré…par contre on peut voir le nombre de fichiers chiffrés , leur taille, leurs droits … ceci étant un avantage lors de l’utilisation de backups incrémentaux par exemple…

Les performances semblent correctes (contrairement à d’autres solutions)..
J’ai fait un test de lecture de divx par exemple… je n’ai noté aucun ralentissement…

Dans le cas ou le module fuse n’est pas trouvé au moment du chargement, il se peut qu’il faille modifier le noyau (cas de ma sarge en 2.4).
Dans ce cas faire un:

sudo apt-get install module-assistant
sudo module-assistant

Puis prepare, select, fuse, build, puis enter au moment du The source package may not be installed... , puis exit

Et la le modprobe fuse devrait être ok…

Ne pas hésiter à utiliser des alias pour simplifier le montage et le démontage…

Pour pouvoir accéder au données en clair, est nécessaire en plus du mot de passe de bien avoir le fichier .encfs5 à la racine du répertoire chiffré…

Cette autre page est interressante à lire en plus du man

Bref… une installation en 3/4 commandes, une utilisation en 2 commandes… çà serait vraiment dommage de ne pas en profiter surtout sur un PC portable où les données sont particulièrement exposées…

PS: Suite à un commentaire, il est a noter que les liens (hard) ne peuvent pas etre copiés dans le répertoire chiffré en mode “paranoiaque”.

EDIT: Ajout de ce billet sur le Wiki d’Ubuntu-fr

Je viens de m’acheter un petit engin Wifi (78€)…
Les WRT54G, WRT54GS (en particulier et sur certaines versions) sont flashables avec des firmwares libres permettant ainsi d’y faire touner un Linux (et les applis qui vont avec)…

In short, the device is turned into a mini linux PC with OpenWrt acting as the distribution, complete with almost all traditional linux commands and a package management system for easily loading on extra software and features.

Je viens de flasher mon WRT54GS Rev4 avec OpenWRT
A suivre…

openWRT-1-Avril2006

openWRT-2-Avril2006

Edit 31 Mars 2013 !
Mon WRT54GS tourne toujours aussi bien.. mais pour un 2ème besoin, je viens d’acheter un WRT54GL (51€)… Flashage dernière version OpenWrt ok.