Créer un disque portable de clés pour GnuPG

Gazette Linux n°102 - Mai 2004

Rob Mitchell

Article paru dans le n°102 de la Gazette Linux de mai 2004.

Traduction française par Sylvain Baron .

Relecture de la traduction française par Joëlle Cornavin .

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières
1. Vérifier l'existence des clés
2. Produire une disquette
2.1. Formater la disquette
2.2. Déplacer les trousseaux de clés sur la disquette
3. Utiliser le disque de clés
4. Notes de fin

L'un des premiers problèmes que j'ai rencontrés lorsque j'ai commencé à utiliser gnupg était la nécessité de recevoir des messages électroniques chiffrés sur plusieurs machines. Si vous avez l'expérience de gnupg, vous avez constaté que les clés sont stockées dans des trousseaux de clés, lesquels se trouvent dans le répertoire .gnupg de votre répertoire personnel. Vous pourriez vous contenter de copier votre clé privée sur les deux machines, mais cette solution ne vous conviendra peut-être pas car vous pourriez ne pas être en mesure de protéger physiquement les deux machines en permanence.

L'autre possibilité serait d'utiliser plusieurs clés publiques. Dans mon cas, je créerais une clé pour la maison et une pour le travail. L'opération est certainement réalisable mais elle limite mon usage des clés à deux machines. Quid si je souhaitais déchiffrer un message électronique obtenu via une interface web sur une autre machine ? Pour cela, vous devez prendre votre clé privée avec vous.

Nous allons voir comment transporter en toute sécurité des clés d'une machine à l'autre à l'aide de commandes et de techniques Linux de base.


1. Vérifier l'existence des clés

Dès que vous avez créé vos clés publique et privée, voici à quoi ressemble votre répertoire .gnupg :



testpc:.gnupg->ll


total 32
drwx------    2 testacct  testacct      4096 Apr 21 13:05 .
drwx------   13 testacct  testacct      4096 Apr 21 13:03 ..
-rw-rw-r--    1 testacct  testacct      7793 Apr 21 13:03 options
-rw-rw-r--    1 testacct  testacct       899 Apr 21 13:05 pubring.gpg
-rw-rw-r--    1 testacct  testacct         0 Apr 21 13:03 pubring.gpg~
-rw-------    1 testacct  testacct       600 Apr 21 13:05 random_seed
-rw-------    1 testacct  testacct      1356 Apr 21 13:05 secring.gpg
-rw-rw-r--    1 testacct  testacct      1240 Apr 21 13:05 trustdb.gpg

Il semble que nous ayons au moins une clé publique dans pubring.gpg et au moins une dans secring.gpg. Vous pouvez vérifier l'existence des clés nécessaires avec deux commandes gnupg.

Vérifiez la clé publique avec l'option --list-keys :



testpc:.gnupg->gpg --list-keys


/home/testacct/.gnupg/pubring.gpg
--------------------------------
pub  1024D/3445AAA9 2004-04-21 Test Key
sub  1024g/A3F729EE 2004-04-21

Et la clé secrète avec l'option --list-secret-keys :



testpc:.gnupg->gpg --list-secret-keys


/home/testacct/.gnupg/secring.gpg
--------------------------------
sec  1024D/3445AAA9 2004-04-21 Test Key
ssb  1024g/A3F729EE 2004-04-21

Vous pouvez importer autant de clés publiques que vous en avez besoin ou que vous en utilisez régulièrement avant de les lister. Une fois que vous avez vérifié que toutes les clés que vous souhaitiez rendre portables sont dans le trousseau de clés, vous pouvez passer à la production des supports.


2. Produire une disquette

La méthode la plus rapide (et la moins onéreuse) pour produire un disque de clés est d'utiliser une disquette. La création de la disquette implique de :

  1. Formater la disquette

  2. Déplacer les trousseaux de clés sur la disquette


2.1. Formater la disquette

Insérez une disquette dans votre lecteur. Cette opération supprimant toutes données existantes, assurez-vous au préalable de n'avoir plus besoin de son contenu. Le fichier de périphérique associé à la disquette est /dev/fd0. Tout ce dont nous avons besoin est la commande mke2fs, les paramètres par défaut et un shell root.



testpc:dcs6255->su -


Password:


[root@testpc root]# mke2fs /dev/fd0


mke2fs 1.27 (8-Mar-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
184 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
184 inodes per group
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Après que le formatage est achevé, montez la disquette. La commande mount ne devra rien retourner.



[root@testpc root]#
mount /dev/fd0 /mnt/floppy


2.2. Déplacer les trousseaux de clés sur la disquette

Cette étape doit en fait démarrer par une copie des fichiers du trousseau de clés sur la disquette. Si vous employez la commande mv pour les déplacer, la destruction des fichiers restants sur le disque dur ne peut être garantie. Par conséquent, avec l'aide d'un script simple sur la ligne de commande, vous pouvez copier les fichiers sur la disquette et recourir à l'utilitaire shred pour détruire ce qui reste.



[root@testpc home]#cd /home/testacct/.gnupg
[root@testpc .gnupg]#for x in `ls`
> do
> cp $x /mnt/floppy
> shred -zu $x


> done

L'option z ordonne à shred de remplir de zéros l'espace sur disque qu'occupe le fichier ; l'option u lui ordonne de supprimer le fichier à la fin de l'opération. Il n'y a maintenant plus de fichiers dans le répertoire .gnupg et voici à quoi ressemble le disque de clés :



[root@testpc .gnupg]#ll /mnt/floppy


total 31
drwxr-xr-x    3 root     root         1024 Apr 21 10:53 .
drwxr-xr-x    4 root     root         4096 Mar 23 14:07 ..
drwx------    2 root     root        12288 Apr 21 09:02 lost+found
-rw-r--r--    1 root     root         7793 Apr 21 10:53 options
-rw-r--r--    1 root     root          899 Apr 21 10:53 pubring.gpg
-rw-r--r--    1 root     root            0 Apr 21 10:53 pubring.gpg~
-rw-------    1 root     root          600 Apr 21 10:53 random_seed
-rw-------    1 root     root         1356 Apr 21 10:53 secring.gpg
-rw-r--r--    1 root     root         1240 Apr 21 10:53 trustdb.gpg

Démontez la disquette. Vous pouvez vous en servir sur n'importe quelle machine sur laquelle il suffira de la monter. La commande umount ne devra rien retourner.



[root@testpc root]#umount /mnt/floppy


3. Utiliser le disque de clés

Lorsque vous serez prêt à utiliser le disque de clés, montez-le simplement dans le répertoire .gnupg sur le disque dur. La commande df vous permet de vérifier le montage :



[root@testpc root]#mount /dev/fd0 /home/testacct/.gnupg
[root@testpc root]#df


Filesystem            Size  Used Avail Use% Mounted on
/dev/hda2             2.6G  2.2G  347M  87% /
/dev/hda1              72M  9.2M   59M  14% /boot
none                   62M     0   61M   0% /dev/shm
/dev/fd0              1.4M   27K  1.2M   3% /home/testacct/.gnupg

Vous êtes maintenant à même d'utiliser gpg avec le trousseau de clés portable sur la disquette. [1]


4. Notes de fin

L'emploi de cette technique empêche quiconque ayant un accès physique à votre machine de voler votre clé privées Il va sans dire qu'il est d'une importance vitale de ne pas perdre votre disque de clés.

Un autre avantage de cette technique est que vous pouvez retirer votre trousseau de clés de la machine lorsqu'elle est connectée à l'Internet ou à un autre réseau.

D'autres supports pourraient être produits pour la portabilité des clés. Un CD-R est un support plus « permanent » qu'une disquette. Les distributions exécutant la version actuelle de Gnome ou KDE font appel à une fonctionnalité d'automontage pour les cédéroms qui rendraient l'utilisation d'un CD-R plus pratique que de monter manuellement une disquette. Cependant, comme le recours à un CD-R dans ce but gaspillerait beaucoup d'espace, je recommanderais d'employer un CD-RW si cela vous concerne. Vous pourriez également faire appel à une clé USB (ou flashdrive) avec cette technique. [2]

Notes

[1]

La méthode proposée nécessite d'être root. Pour une méthode générique, il me semble plus avisé de monter la disquette dans /mnt/floppy ( ou /floppy pour les utilisateurs de la Debian), puis de créer un lien symbolique :


testpc:~-> mount /dev/fd0 /mnt/floppy
testpc:~-> ln -s /mnt/floppy .gnupg

Si un répertoire gnupg existe déjà, renommez-le le temps de l'opération. (N. d. T.)

[2]

L'usage de l'automontage semble se heurter au fait qu'il ne s'effectuera vraisemblablement pas dans ~/.gnupg. Dans ce cas, le lien symbolique susmentionné serait une solution. (N. d. T.)