Chapitre 13. Utilisation de GnuPG

Utilisation de GnuPG

Vous êtes-vous jamais demandé si votre courrier électronique était réellement à l'abri des espions ? Il est assez logique de supposer que votre message sera lu par son destinataire ; en revanche, on peut également imaginer qu'il serait possible que d'autres personnes puissent l'intercepter voire le falsifier.

Dans le courrier postal traditionnel, les lettres sont expédiées sous pli fermé et distribuées à leur destinataire après avoir transité par divers services postaux. L'envoi de courrier par Internet est beaucoup moins sûr ; le courrier électronique est le plus souvent transmis de serveur à serveur sous forme de texte en clair. Aucune mesure de précaution particulière n'est prise pour mettre votre correspondance à l'abri des curieux ou de personnes mal intentionnées.

Pour vous aider à protéger votre vie privée, Red Hat Linux 6.2 comprend GnuPG ou GNU Privacy Guard, qui est installé par défaut au cours d'une installation Red Hat Linux classique.

GnuPG est un outil permettant de sécuriser les communications ; il s'agit d'un outil de remplacement complet et gratuit de la technologie de cryptage de PGP (Pretty Good Privacy, une application très utilisée). GnuPG vous permet de crypter vos données et votre correspondance, de même que d'authentifier votre correspondance en signant numériquement votre travail. GnuPG peut également décrypter et vérifier les fichiers PGP 5.x.

Du fait que GnuPG est compatible avec d'autres normes de cryptage, votre correspondance sécurisée sera très probablement compatible avec des applications de courrier électronique fonctionnant sur d'autres plates-formes, par exemple Windows et MacOS.

GnuPG utilise la technique de cryptographie à clé publique pour sécuriser l'échange de données. Le système de cryptographie à clé publique consiste à générer deux clés : une clé publique et une clé privée. Vous échangez votre clé publique avec des correspondants ou avec un serveur de clés ; Ne révélez jamais votre clé privée.

Le cryptage dépend de l'utilisation de clés (on peut se les représenter comme des jeux de clés de codage/décodage secrètes au format de données). Dans le cas de la cryptographie conventionnelle ou symétrique, les deux extrémités de la transaction ont la même clé, qu'elles utilisent pour décoder leurs transmissions mutuelles. Dans le système de cryptographie à clé publique, deux clés coexistent : une clé publique et une clé privée. Une personne ou une organisation garde sa clé privée secrète et publie sa clé publique. Les données codées à l'aide de la clé publique ne peuvent être décodées qu'avec la clé privée ; les données codées avec la clé privée ne peuvent être décodées qu'avec la clé publique.

TuyauAutres informations de l'invite du shell
 

Comme c'est le cas de la plupart des outils pour Red Hat Linux, vous trouverez de la documentation sur GPG dans les pages de manuel et les pages d'information. A l'invite du shell, tapez simplement man gpg ou info gpg pour accéder rapidement à des informations sur les commandes et options de GPG.

Pour l'essentiel, la cryptographie dépasse la portée de cette documentation ; des volumes entiers ont été écrits sur le sujet. Nous espérons cependant que ce chapitre vous apportera une compréhension suffisante du fonctionnement de GnuPG pour vous permettre de commencer à utiliser la cryptographie dans votre propre correspondance. Pour plus d'informations sur GnuPG, notamment pour pouvoir accéder à un manuel utilisateur en ligne, visitez le site http://www.gnupg.org/. Pour en savoir plus sur GPG, PGP et les techniques de cryptage, reportez-vous aux références figurant dans la la section intitulée Sources d'informations complémentaires.

Il existe plusieurs interfaces graphiques pour GnuPG, par exemple SeaHorse, fournie avec Red Hat Linux 7.0. Toutefois, il est possible d'exécuter rapidement de nombreuses tâches, dans GnuPG, depuis l'invite du shell. C'est sur celles-ci que ce chapitre se concentre.

Génération d'une paire de clés

Pour utiliser GnuPG, vous devez commencer par générer une nouvelle paire de clés , à savoir une clé publique et une clé privée.

Bien que les instructions relatives à la génération d'une paire de clés aient déjà été couvertes (voir la la section intitulée Génération d'une nouvelle paire de clés dans Chapitre 12), voici un bref récapitulatif de la procédure à suivre.

Pour générer une paire de clés, ouvrez une fenêtre Xterm (ou de terminal), puis, à l'invite, tapez :

gpg --gen-key
		  

Vous êtes invité à sélectionner un certain nombre d'options, telles que le type et la taille de la clé à créer. Des options par défaut sont également disponibles ; vous pouvez les sélectionner en appuyant simplement sur la touche Entrée. Si vous n'avez pas une excellente raison d'agir autrement, vous pouvez utiliser les choix par défaut.

Entrez un ID utilisateur, ainsi que votre nom, votre adresse électronique et un commentaire éventuel. Entrez ensuite une phrase de passe qui, tout comme un mot de passe, doit être unique et suffisamment sûre pour garantir que nul ne pourra la deviner. Une phrase de passe peut consister en un simple mot ou en une phrase que vous tapez à l'invite pour vous identifier en tant que propriétaire de votre paire de clés. Naturellement, quel que soit votre choix, arrangez-vous pour vous en souvenir !

ImportantPoint faible
 

La cryptographie à clé publique est un système puissant mais pas inviolable. L'un des points faibles de cette technologie réside dans la vulnérabilité des mots de passe et phrases de passe. La sélection d'une phrase de passe telle que votre date de naissance ou l'adresse de l'élu(e) de votre coeur n'est pas une très bonne idée. Essayez de trouver quelque chose qui sorte de l'ordinaire, qui combine des lettres et des chiffres. Vous devez être aussi prudent pour le choix de votre phrase de passe que pour le choix de votre mot de passe de connexion.

Une fois votre clé publique et privée créées, elles sont placées dans le répertoire .gnupg. Pour consulter vos clés, tapez gpg --list-keys. Le système affichera votre nouvelle clé, similaire à celle-ci :

[newuser@localhost newuser]$ gpg --list-keys
/home/newuser/.gnupg/pubring.gpg
-----------------------------------------
pub  1024D/B7085C8A 2000-04-18 Your Name <you@yourisp.net>
sub  1024g/E12AF9C4 2000-04-18
	

Génération d'un certificat de révocation

Après avoir créé votre paire de clés, créez un certificat de révocation pour votre clé publique. Si vous oubliez votre phrase de passe ou si quelqu'un la découvre, vous pourrez publier ce certificat afin d'informer d'autres utilisateurs que cette clé publique ne doit plus être utilisée.

NotePourquoi "révoquer" une clé que vous venez de créer ?
 

Générer un certificat de révocation n'équivaut pas à révoquer une clé que vous venez de créer. Le fait de révoquer une clé la protège de l'utilisation publique. Imaginons qu'après avoir créé une clé, vous oubliiez votre phrase de passe, changiez de fournisseur d'accès Internet (et donc d'adresse) ou soyez victime d'une panne de disque dur. Ce certificat de révocation vous offre alors une solution pratique pour disqualifier votre clé publique.

Votre signature apparaîtra comme valide aux personnes ayant lu votre correspondance avant la révocation de la clé et vous serez en mesure de décrypter les messages reçus avant la révocation. Pour générer un certificat de révocation, utilisez l'option --gen-revoke.

[newuser@localhost newuser]$ gpg --output revoke.asc --gen-revoke
<vous@votre-fournisseur.net>
	

Notez que si vous omettez l'option --output revoke.asc ci-dessus, votre certificat de révocation sera retourné à la "sortie standard", à savoir votre écran. Même si vous pouvez copier et coller le contenu de la sortie dans un fichier de votre choix à l'aide d'un éditeur de texte tel que Pico, il est probablement plus simple d'envoyer la sortie à un fichier se trouvant dans votre répertoire de connexion. Vous pourrez de la sorte conserver le certificat en vue d'un usage ultérieur ou bien le déplacer vers un lecteur de disquette et le conserver en lieu sûr.

La transaction permettant de créer un certificat de révocation ressemblera à ceci :

[newuser@localhost newuser]$ gpg --output revoke.asc --gen-revoke  <you@yourisp.net>

sec  1024D/823D25A9 2000-04-26  Your Name <you@yourisp.net>

Create a revocation certificate for this key? y
                                               
You need a passphrase to unlock the secret key for
user: "Your Name <you@yourisp.net>"
1024-bit DSA key, ID 823D25A9, created 2000-04-26

ASCII armored output forced.
Revocation certificate created.
	
	

Une fois votre certificat de révocation créé (revoke.asc), il est placé dans votre répertoire de connexion. Veillez à ce que le fichier soit en sécurité ; le mieux est de le copier sur une disquette que vous conserverez en lieu sûr (si vous ignorez comment copier un fichier sur une disquette dans Red Hat Linux, reportez-vous à la la section intitulée Utilisation d'une disquette dans Chapitre 17).

Exportation de votre clé publique

Pour que vous puissiez utiliser la cryptographie à clé publique, il faut que vos correspondants disposent d'une copie de votre clé publique. Pour envoyer votre clé à vos correspondants ou à un serveur de clés, vous devez exporter la clé.

Pour ce faire, afin de pouvoir l'afficher sur une page Web ou la coller dans un message électronique, tapez ce qui suit :

[newuser@localhost newuser]$ gpg --armor --export
<vous@votre-fournisseur.net> >
ma-clé.asc
[newuser@localhost newuser]$
	  

Rien ne s'affiche parce que, en plus d'avoir exporté votre clé publique, vous avez redirigé la sortie vers un fichier appelé, par exemple, ma-clé.asc (sans l'ajout de > ma-clé.asc, la clé aurait été affichée comme sortie standard à l'écran).

A présent, vous pouvez insérer le fichier ma-clé.asc dans un message électronique ou l'exporter vers un serveur de clés. Pour voir la clé, tapez less ma-clé.asc afin d'ouvrir le fichier dans un pager (tapez Q pour quitter le pager). Le résultat serait semblable à ceci :

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.1 (GNU/Linux)
Comment: For info see http://www.gnupg.org

mQGiBDkHP3URBACkWGsYh43pkXU9wj/X1G67K8/DSrl85r7dNtHNfLL/ewil10k2
q8saWJn26QZPsDVqdUJMOdHfJ6kQTAt9NzQbgcVrxLYNfgeBsvkHF/POtnYcZRgL
tZ6syBBWs8JB4xt5V09iJSGAMPUQE8Jpdn2aRXPApdoDw179LM8Rq6r+gwCg5ZZa
pGNlkgFu24WM5wC1zg4QTbMD/3MJCSxfL99Ek5HXcB3yhj+o0LmIrGAVBgoWdrRd
BIGjQQFhV1NSwC8YhN/4nGHWpaTxgEtnb4CI1wI/G3DK9olYMyRJinkGJ6XYfP3b
cCQmqATDF5ugIAmdditnw7deXqn/eavaMxRXJM/RQSgJJyVpbAO2OqKe6L6Inb5H
kjcZA/9obTm499dDMRQ/CNR92fA5pr0zriy/ziLUow+cqI59nt+bEb9nY1mfmUN6
SW0jCH+pIQH5lerV+EookyOyq3ocUdjeRYF/d2jl9xmeSyL2H3tDvnuE6vgqFU/N
sdvby4B2Iku7S/h06W6GPQAe+pzdyX9vS+Pnf8osu7W3j60WprQkUGF1bCBHYWxs
YWdoZXIgPHBhdWxnYWxsQHJlZGhhdC5jb20+iFYEExECABYFAjkHP3UECwoEAwMV
AwIDFgIBAheAAAoJEJECmvGCPSWpMjQAoNF2zvRgdR/8or9pBhu95zeSnkb7AKCm
/uXVS0a5KoN7J61/1vEwx11poLkBDQQ5Bz+MEAQA8ztcWRJjW8cHCgLaE402jyqQ
37gDT/n4VS66nU+YItzDFScVmgMuFRzhibLblfO9TpZzxEbSF3T6p9hLLnHCQ1bD
HRsKfh0eJYMMqB3+HyUpNeqCMEEd9AnWD9P4rQtO7Pes38sV0lX0OSvsTyMG9wEB 
vSNZk+Rl+phA55r1s8cAAwUEAJjqazvk0bgFrw1OGO9m7fEeDlvPSV6HSA0fvz4w
c7ckfpuxg/URQNf3TJA00Acprk8Gg8J2CtebAyR/sP5IsrK5l1luGdk+l0M85FpT
/cen2OdJtToAF/6fGnIkeCeP1O5aWTbDgdAUHBRykpdWU3GJ7NS6923fVg5khQWg
uwrAiEYEGBECAAYFAjkHP4wACgkQkQKa8YI9JamliwCfXox/HjlorMKnQRJkeBcZ 
iLyPH1QAoI33Ft/0HBqLtqdtP4vWYQRbibjW
=BMEc
-----END PGP PUBLIC KEY BLOCK-----
	

Exportation vers un serveur de clés

Si vous n'avez que quelques correspondants, vous pouvez exporter votre clé publique et la leur envoyer personnellement. En revanche, si vous correspondez avec de nombreuses personnes, la distribution de votre clé risque de prendre du temps. C'est là qu'interviennent les serveurs de clés.

Figure 13-1. Page d'accueil de Keyserver.Net

Un serveur de clés est un site Internet où vous pouvez déposer votre clé publique et à partir duquel vous pouvez la distribuer à qui la demande. Il existe de nombreux serveurs de clés qui, pour la plupart, essaient de coordonner leur activité ; envoyer votre clé à l'un d'eux équivaut à la distribuer à tous. Il ne restera plus à votre correspondant qu'à demander votre clé publique à un serveur de clés, puis à l'importer vers son porte-clés (le porte-clés est un fichier dans lequel sont conservées les clés publiques et secrètes).

TuyauQuel serveur de clés utiliser ?
 

Du fait que la plupart des serveurs de clés s'efforcent de coordonner leur activité, l'envoi de votre clé publique à un seul d'entre eux équivaut à l'envoyer à tous. Vous pouvez cependant en localiser plusieurs. Un bon endroit pour rechercher des serveurs de clés et autres informations est Keyserver.Net, à l'adresse http://www.keyserver.net ; vous pouvez également consulter les Robert's Crypto & PGP Links: Keyservers , à l'adresse http://crypto.yashy.com/www/Keyservers/.

Vous pouvez envoyer votre clé publique depuis l'invite du shell ou depuis votre navigateur (comme à la Figure 13-1) ; évidemment, vous devez être en ligne pour pouvoir envoyer ou recevoir des clés d'un serveur de clés.

  • A l'invite du shell, tapez ce qui suit :

    gpg --keyserver search.keyserver.net --send-key
    vous@votre-fournisseur.net
    	      
  • Dans votre navigateur, connectez-vous à Keyserver.Net (http://www.keyserver.net), puis sélectionnez l'option vous permettant d'ajouter votre propre clé publique PGP.

    Votre nouvelle tâche consiste à couper et coller votre clé publique dans la zone appropriée de la page Web. Voici comment procéder :

    • Ouvrez votre fichier de clé publique exporté (par exemple, ma-clé.asc, créé à la la section intitulée Exportation de votre clé publique) à l'aide d'un pager, par exemple, less ma-clé.asc

    • A l'aide de la souris, copiez le fichier en mettant en surbrillance toutes les lignes depuis BEGIN PGP jusqu'à END PGP (voir la Figure 13-2).

    • Collez le contenu du fichier ma-clé.asc dans la zone appropriée de la page de Keyserver.Net en cliquant avec le bouton du milieu de votre souris (ou bien avec les deux boutons si vous avez une souris à deux boutons). Cliquez ensuite sur le bouton Submit de la page du serveur de clés (si vous commettez une erreur, cliquez sur le bouton Reset de la page afin d'effacer la clé que vous avez collée).

Figure 13-2. Copie de votre clé publique

Notez que si vous soumettez votre clé à un autre serveur de clés de type Web, la transaction ci-dessus sera essentiellement la même.

Voilà. Que vous utilisiez l'invite du shell ou le Web, vous verrez s'afficher un message vous informant que la soumission de votre clé a réussi, soit dans la fenêtre Xterm, soit sur le site Web du serveur de clés. Désormais, tous les utilisateurs qui souhaitent communiquer avec vous en toute sécurité peuvent importer votre clé publique et l'ajouter à leur porte-clés.

Importation d'une clé publique

L'autre opération impliquée par l'échange de clés (l'importation des clés publiques d'autres utilisateurs vers votre porte-clés) est aussi simple que l'opération d'exportation. Lorsque vous importez la clé publique de quelqu'un, vous pouvez décrypter ses messages et vérifier sa signature numérique par rapport à la clé publique correspondante de votre porte-clés.

L'une des manières les plus simples d'importer une clé consiste à la télécharger ou à l'enregistrer à partir d'un site Web (comme pour l'enregistrement de la clé de Red Hat, à la la section intitulée Importation de clés dans Chapitre 12).

Après avoir téléchargé une clé, utilisez la commande --import pour l'ajouter à votre porte-clés.

Une autre manière d'enregistrer une clé consiste à utiliser la fonction Enregistrer sous... d'un navigateur. Si vous utilisez un navigateur tel que Navigator et localisez une clé sur un serveur de clés, vous pouvez enregistrer la page comme un fichier texte (Fichier => Enregistrer sous...). Dans la zone déroulante permettant de choisir le format du document à enregistrer, sélectionnez Fichier texte. Ensuite, vous pouvez l'importer pour autant que vous vous rappeliez du nom du fichier enregistré. Par exemple, imaginons que vous veniez d'enregistrer une clé comme fichier texte appelé nouvelle-clé.txt . Pour importer le fichier, à l'invite du shell, tapez :

[newuser@localhost newuser]$ gpg --import
nouvelle-clé.txt
gpg: key F78FFE84: public key imported
gpg: Total number processed: 1
gpg:               imported: 1
[newuser@localhost newuser]$
	  

Pour vérifier si le processus a abouti, utilisez la commande --list-keys à l'invite, comme dans gpg --list-keys ; la nouvelle clé importée devrait être accrochée à votre porte-clés.

Que sont les signatures numériques ?

Les signatures numériques sont similaires aux signatures ou tampons que vous pourriez placer sur un document tel qu'un message électronique.

A la différence du courrier traditionnel, où quelqu'un peut toujours tenter d'imiter votre signature manuscrite, il est impossible de falsifier une signature numérique. Ceci résulte du fait que la signature est générée à l'aide de votre clé secrète unique et peut être vérifiée par le destinataire à l'aide de votre clé publique.

Une signature numérique date un document ; cela signifie essentiellement que l'heure à laquelle vous avez signé le document fait partie de la signature. Ainsi, si quelqu'un tente de modifier le document, la vérification de la signature échoue. Certaines applications de courrier électronique, telles que Exmh ou KMail de KDE, permettent de signer des documents à l'aide de GnuPG intégré à l'interface de l'application.

Les deux types de signatures numériques possibles sont les documents clairement signés et les signatures détachées. Les deux solutions offrent, techniquement, la même sécurité quant à l'authenticité du message, sans que le destinataire doive décrypter le message tout entier.

Dans le cas d'un message clairement signé, votre signature apparaît comme un bloc de texte dans le cadre de votre lettre ; en revanche, une signature détachée est envoyée comme fichier séparé avec votre correspondance (c'est-à-dire détachée de votre message).

Sources d'informations complémentaires

La technologie du cryptage est trop complexe pour que nous puissions prétendre avoir épuisé le sujet avec cette présentation de GPG. Voici quelques ressources qui vous permettront de compléter ces informations :

  • Sites Web :

  • Livres :

    • The Official PGP User's Guide, de Philip R. Zimmermann ; MIT Press, 1995

    • PGP : Pretty Good Privacy, de Simson Garfinkel ; O'Reilly & Associates, 1994

    • Sécurité du courrier électronique : How to Keep Your Electronic Messages Private, de Bruce Schneier ; John Wiley & Sons, 1995