Utiliser GnuPG sous Gentoo
1.
Introduction
Ce que vous apportera ce guide
Ce guide présume que vous êtes relativement familier avec la cryptographie à
clé publique, le chiffrement et les signatures numériques. Si ce n'est pas le
cas, sautez à la section crytographie à clé
publique ou jetez un œil au manuel GNU de la
confidentialité chapitre 2, puis reprenez votre lecture ici.
Ce guide vous apprendra comment installer GnuPG, comment créer votre paire de
clés, comment ajouter des clés à votre trousseau, comment soumettre votre
clé publique au serveur de clés et comment signer, chiffrer, vérifier ou
déchiffrer les messages que vous envoyez ou recevez. Vous apprendrez aussi
comment chiffrer des fichiers de votre système pour empêcher sa lecture par une
autre personne.
Installation des logiciels requis
Pour commencer, vous devez lancer emerge gnupg. De plus en plus
d'applications supportent gpg de nos jours, vous pouvez ajouter crypt
dans votre variable USE si vous le souhaitez. Si vous souhaitez utiliser gnupg
avec un logiciel de messagerie, vous pouvez utiliser pine (emerge
pinepgp), mutt (emerge mutt), Mozilla Thunderbird (emerge
mozilla-thunderbird), Evolution (Evolution est un clone GNOME de Microsoft
Outlook) et KMail de KDE (KMail fait partie du paquet kdepim).
Kgpg devrait vous intéresser si vous utilisez KDE. Ce petit programme
vous permet de générer des paires de clés, d'importer des clés à partir de
fichiers ASCII, de signer des clés, d'exporter des clés et plus encore.
2.
Génération de votre clé et ajout de clés à votre trousseau
Création de votre clé
Pour créer votre clé, il vous suffit de faire gpg --gen-key. La première
fois que vous la lancez, cette commande créera quelques répertoires. Lancez-la
à nouveau pour créer les clés :
Exemple de code 2.1 : Création de la clé |
$ gpg --gen-key
gpg (GnuPG) 1.0.7; Copyright (C) 2002 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
Please select what kind of key you want:
(1) DSA and ElGamal (default)
(2) DSA (sign only)
(4) ElGamal (sign and encrypt)
(5) RSA (sign only)
Your selection? 1
|
Vous avez ici la possibilité de choisir le type de clé que vous voulez
utiliser. En général, les utilisateurs choisissent le défaut, DSA et ElGamal.
Ensuite, il faut choisir la taille de la clé. Sachez que plus elle est grande,
mieux c'est. Néanmoins, n'utilisez pas une taille supérieure à 2048 avec une
clé DSA/ElGamal, 1024 est largement suffisant pour une utilisation normale de
la messagerie.
Après la taille vient la date d'expiration. Ici, par contre, plus c'est petit,
mieux c'est, mais la plupart des utilisateurs peuvent choisir une clé qui
n'expire jamais ou bien dans deux ou trois ans.
Exemple de code 2.2 : Choisir la taille de la clé |
DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
minimum keysize is 768 bits
default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024) 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
|
Vous devez maintenant entrer quelques informations personnelles. Si vous comptez
distribuer votre clé publique, mettez votre adresse de messagerie réelle.
Exemple de code 2.3 : Renseignements personnels |
Is this correct (y/n)? y
You need a User-ID to identify your key; the software constructs the user id
from Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: John Doe
Email address: john@nowhere.someplace.flick
Comment: The Real John Doe
You selected this USER-ID:
"John Doe (The Real John Doe) <john@nowhere.someplace.flick>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.
Enter passphrase:
|
Entrez maintenant votre mot de passe deux fois. Utilisez de préférence un mot
de passe robuste. En effet, si quelqu'un réussissait à s'emparer de votre clé
privée et à trouver votre mot de passe, il pourrait envoyer des messages signés
à votre nom, de telle sorte que quiconque pensera que c'est vous qui l'avez
envoyé.
Ensuite, GnuPG vous génère votre clé. Vous pouvez déplacer la souris ou jouer
un MP3 pour accélérer le processus de création de la clé, car cela aide la
génération de valeurs aléatoires.
Générer un certificat de révocation
Important :
Cette partie est très importante, faites-le DE SUITE.
|
Après avoir créé vos clés, vous devez créer un certificat de révocation.
Il vous permettra d'annuler votre clé si quelque chose de fâcheux venait à se
produire (une personne l'a volée, par exemple).
Exemple de code 2.4 : Génération d'un certificat de révocation |
$ gpg --list-keys
/home/humpback/.gnupg/pubring.gpg
---------------------------------
pub 1024D/75447B14 2002-12-08 John Doe (The Real John Doe) <john@nowhere.someplace.flick>
sub 2048g/96D6CDAD 2002-12-08
$ gpg --output revoke.asc --gen-revoke 75447B14
sec 1024D/75447B14 2002-12-08 John Doe (The Real John Doe) <john@nowhere.someplace.flick>
Create a revocation certificate for this key? y
Please select the reason for the revocation:
0 = No reason specified
1 = Key has been compromised
2 = Key is superseded
3 = Key is no longer used
Q = Cancel
(Probably you want to select 1 here)
Your decision? 1
Enter an optional description; end it with an empty line:
> Someone cracked me and got my key and passphrase.
> On m'a piraté et volé ma clé avec son mot de passe.
>
Reason for revocation: Key has been compromised
Someone cracked me and got my key and passphrase.
On m'a piraté et volé ma clé avec son mot de passe.
Is this okay? y
You need a passphrase to unlock the secret key for
user: "John Doe (The Real John Doe) <john@nowhere.someplace.flick>"
1024-bit DSA key, ID 75447B14, created 2002-12-08
ASCII armored output forced.
Revocation certificate created.
Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable. But have some caution: The print system of
your machine might store the data and make it available to others!
|
La commande gpg --list-keys liste les clés de votre trousseau de clés
publiques. Vous pouvez l'utiliser pour repérer l'ID de votre clé afin de créer
le certificat de révocation. Maintenant, il est sage de copier tout le
répertoire ~/.gnupg/ et le certificat de révocation (le fichier ASCII
revoke.asc) sur un support sécurisé (deux disquettes ou bien un CD-ROM stockés
dans un endroit sûr). Rappelez-vous bien que ce fichier revoke.asc
peut être utilisé pour annuler votre clé et la rendre inutilisable.
Note :
Si vous voulez utiliser plusieurs adresses de messagerie avec cette clé, vous
pouvez lancer gpg --edit-key VOTRE_ID et ensuite utiliser la commande
adduid. GnuPG vous demandera alors un nom, une adresse et un commentaire
pour ce deuxième ID.
|
Exporter des clés
Pour exporter votre clé, tapez gpg --armor --output john.asc --export
john@nowhere.someplace.flick. Vous pouvez pratiquement tout le
temps utiliser l'ID de la clé ou autre chose qui l'identifierait (ici nous
utilisons l'adresse de messagerie). John a maintenant un fichier
john.asc qu'il peut envoyer à ses amis ou publier sur une page web
pour permettre à qui le voudra de communiquer avec lui en toute sécurité.
Importer des clés
Pour ajouter une clé à votre trousseau de clés publiques, vous devez d'abord
l'importer, puis vérifier son empreinte numérique. Après avoir vérifié
l'empreinte, vous pourrez la valider.
Note :
Faites très attention au moment de vérifier les clés, car c'est un des points
faibles de la cryptographie à clé publique.
|
Nous allons maintenant ajouter la clé publique de Luis Pinto (un ami) à notre
trousseau. Après lui avoir passé un coup de fil pour lui demander l'empreinte
numérique de sa clé, je compare l'empreinte avec la sortie de la commande
fpr. La clé est authentique, je l'ajoute donc à mon trousseau. Dans ce
cas particulier, la clé de Luis ne sera plus valide à partir du 2003-12-01,
il m'est donc demandé si je veux que la signature expire à la même date.
Exemple de code 2.5 : Importation et signature d'une clé |
$ gpg --import luis.asc
gpg: key 462405BB: public key imported
gpg: Total number processed: 1
gpg: imported: 1
$ gpg --list-keys
/home/humpback/.gnupg/pubring.gpg
---------------------------------
pub 1024D/75447B14 2002-12-08 John Doe (The Real John Doe) <john@nowhere.someplace.flick>
sub 2048g/96D6CDAD 2002-12-08
pub 1024D/462405BB 2002-12-01 Luis Pinto <lmpinto@student.dei.uc.pt>
uid Luis Pinto <lmpinto@dei.uc.pt>
sub 4096g/922175B3 2002-12-01 [expires: 2003-12-01]
$ gpg --edit-key lmpinto@dei.uc.pt
gpg (GnuPG) 1.0.7; Copyright (C) 2002 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
gpg: checking the trustdb
gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1
pub 1024D/462405BB created: 2002-12-01 expires: 2003-12-01 trust: -/-
sub 4096g/922175B3 created: 2002-12-01 expires: 2003-12-01
(1) Luis Pinto <lmpinto@dei.uc.pt>
(2). Luis Pinto <lmpinto@student.dei.uc.pt>
Command> fpr
pub 1024D/462405BB 2002-12-01 Luis Pinto <lmpinto@dei.uc.pt>
Fingerprint: F056 3697 ADE3 CF98 B80B 8494 0AD3 E57B 4624 05BB
Command> sign
Really sign all user IDs? y
pub 1024D/462405BB created: 2002-12-01 expires: 2003-12-01 trust: -/-
Fingerprint: F056 3697 ADE3 CF98 B80B 8494 0AD3 E57B 4624 05BB
Luis Pinto <lmpinto@dei.uc.pt>
Luis Pinto <lmpinto@student.dei.uc.pt>
This key is due to expire on 2003-12-01.
Do you want your signature to expire at the same time? (Y/n) Y
How carefully have you verified the key you are about to sign actually belongs
to the person named above? If you don't know what to answer, enter "0".
(0) I will not answer. (default)
(1) I have not checked at all.
(2) I have done casual checking.
(3) I have done very careful checking.
Your selection? 3
Are you really sure that you want to sign this key
with your key: "John Doe (The Real John Doe) <john@nowhere.someplace.flick>"
I have checked this key very carefully.
Really sign? y
You need a passphrase to unlock the secret key for
user: "John Doe (The Real John Doe) <john@nowhere.someplace.flick>"
1024-bit DSA key, ID 75447B14, created 2002-12-08
Command> check
uid Luis Pinto <lmpinto@dei.uc.pt>
sig!3 462405BB 2002-12-01 [self-signature]
sig!3 75447B14 2002-12-08 John Doe (The Real John Doe) <john@nowhe
uid Luis Pinto <lmpinto@student.dei.uc.pt>
sig!3 462405BB 2002-12-01 [self-signature]
sig!3 75447B14 2002-12-08 John Doe (The Real John Doe) <john@nowhe
|
3.
Utilisation d'un serveur de clés
Publier des clés sur un serveur de clés
Maintenant que vous avez votre clé, il s'agit de la distribuer à un serveur de
clés qui la rendra publique. Il y a de nombreux serveurs de clés dans le monde
et la plupart d'entre eux s'échangent les clés. Nous allons envoyer la clé de
Luis au serveur subkeys.pgp.net. Le protocole utilisé est HTTP, donc si vous avez
besoin d'un proxy il est temps de le définir (export
http_proxy=http://proxy_host:port/). La commande pour envoyer une clé
est : gpg --keyserver subkeys.pgp.net --keyserver-options honor-http-proxy
--send-key 75447B14 où 75447B14 est l'ID de votre clé. Si vous n'avez
pas besoin du proxy, vous pouvez enlever la partie --keyserver-options
honor-http-proxy.
Vous pouvez aussi envoyer au serveur les clés d'autres personnes que
vous avez signées. Nous pourrions envoyer la clé de Luis Pinto. De cette
manière, une personne qui a confiance en vous pourra faire confiance en cette
clé pour Luis car vous l'avez signée.
Récupérer des clés depuis un serveur de clés
Nous allons maintenant chercher la clé de Gustavo Felisberto (votre serviteur)
et l'ajouter au trousseau de John Doe.
Exemple de code 3.1 : Chercher une clé sur le serveur de clés |
$ gpg --keyserver subkeys.pgp.net --keyserver-options honor-http-proxy --search-keys humpback@felisberto.net
gpg: searching for "humpback@felisberto.net" from HKP server subkeys.pgp.net
Keys 1-5 of 5 for "humpback@felisberto.net"
(1) Gustavo Felisberto (apt-get install anarchy) <humpback@felisberto.net> 1024
created 2002-12-06, key B9F2D52A
(2) Gustavo Felisberto <humpback@altavista.net> 1024
created 1999-08-03, key E97E0B46
(3) Gustavo A.S.R. Felisberto <humpback@altavista.net> 1024
created 1998-12-10, key B59AB043
(4) Gustavo Adolfo Silva Ribeiro Felisberto <humpback@altavista.net> 1024
created 1998-08-26, key 39EB133D
(5) Gustavo Adolfo Silva Ribeiro Felisberto <humpback@altavista.net> 1024
created 1998-06-14, key AE02AF87
Enter number(s), N)ext, or Q)uit >1
gpg: requesting key B9F2D52A from HKP keyserver subkeys.pgp.net
gpg: key B9F2D52A: public key imported
gpg: Total number processed: 1
gpg: imported: 1
|
Comme vous pouvez le constater, j'ai publié plusieurs clés sur le serveur,
pourtant, je n'utilise que B9F2D52A. John Doe peut maintenant la
récupérer et la signer s'il a confiance en elle.
4.
Utiliser un agent GPG
Qu'est-ce qu'un agent GPG ?
Quelques fois certaines applications requièrent une utilisation vraiment
fréquente de votre clé GPG, ce qui signifie que vous devez entrer votre mot de
passe très souvent. Pour résoudre ce problème, de nombreuses applications
utilisaient un mécanisme de mise en mémoire tampon pour faciliter le travail
des utilisateurs. Toutefois, cela ne permet pas un partage de cette mémoire
entre les applications (imaginez les problèmes de sécurité que cela
impliquerait) et les applications devaient réinventer la roue, encore et encore.
Un agent GPG est une application à part entière utilisée par GPG pour mettre en
cache le mot de passe de manière standard et sécurisée. Cela permet aux
applications d'utiliser GPG de manière concurrente : si vous entrez votre
mot de passe alors que vous utilisez déjà une application, la seconde pourra
travailler avec le GPG sans devoir demander de nouveau le mot de passe pour
libérer la clé, si l'agent GPG est configuré pour permettre cela, bien sûr.
Gentoo fournit quelques programmes d'agent GPG. Le paquet
app-crypt/gnupg-1.9.* peut être considéré comme l'application de
référence et est utilisé dans ce document.
Installation et configuration de gpg-agent et pinentry
Vous devez évidemment installer gnupg-1.9.* qui comprend
gpg-agent ainsi que pinentry. pinentry est l'application
d'aide utilisée par gpg-agent pour demander le mot de passe dans une fenêtre
graphique. Elle est proposée avec trois possibilités : elle peut ouvrir
une fenêtre en utilisant gtk+, Qt, ou un bibliothèque curses (selon le
paramètre USE utilisé lors de son installation).
Exemple de code 4.1 : Installer gpg-agent et pinentry |
# emerge \>=gnupg-1.9.20 pinentry
|
Il vous faut maintenant créer un fichier ~/.gnupg/gpg-agent.conf
et lui ajouter les lignes suivantes pour définir le temps d'expiration du mot
de passe (par exemple 30 minutes) et l'application à appeler lorsque le mot de
passe doit être tapé la première fois (par exemple, la version qt de pinentry).
Exemple de code 4.2 : Édition de ~/.gnupg/gpg-agent.conf |
pinentry-program /usr/bin/pinentry-qt
no-grab
default-cache-ttl 1800
|
Ensuite, configurez GnuPG pour utiliser l'agent à bon escient. Éditez le
fichier ~/.gnupg/gpg.conf et ajoutez la ligne suivante :
Exemple de code 4.3 : Configurer GnuPG pour utiliser un agent GPG |
use-agent
|
Maintenant, votre système est (presque) prêt à l'utilisation de l'agent GPG.
Démarrer automatiquement l'agent GPG
Si vous utilisez KDE comme environnement graphique, éditez le fichier
/usr/kde/3.x/env/agent-startup.sh (pour l'ensemble du système ) ou
~/.kde/env/gpgagent.sh (pour un utilisateur local) et ajoutez la
commande suivante pour que KDE démarre automatiquement l'agent GPG :
Exemple de code 4.4 : KDE démarrera automatiquement l'agent GPG |
eval "$(gpg-agent --daemon)"
|
Si vous utilisez un environnement graphique différent, ajoutez la ligne citée
précédemment dans votre fichier ~/.xinitrc (si vous utilisez
startx) ou ~/.xsession (si vous utilisez XDM/GDM/KDM/...)
5.
Travailler avec des documents
Chiffrer et signer
Disons que vous voulez envoyer un fichier à Luis. Vous pouvez le chiffrer, le
signer ou le chiffrer et le signer. Si vous le chiffrez, alors seul Luis pourra
le lire à l'aide de sa clé privée. La signature informera Luis que c'est
vraiment vous qui avez créé le fichier.
Voici les trois commandes qui correspondent à ces actions : chiffrer,
signer et chiffrer/signer.
Exemple de code 5.1 : Signer ou chiffrer un fichier |
$ gpg --output doc.gpg --encrypt --recipient lmpinto@dei.uc.pt doc_à_chiffrer
$ gpg --output doc.gpg --sign --recipient lmpinto@dei.uc.pt doc_à_signer
$ gpg --output doc.gpg --encrypt --sign --recipient lmpinto@dei.uc.pt doc_à_chiffrer_et_signer
|
Les fichiers générés sont des binaires. Si vous voulez des fichiers ASCII,
ajoutez simplement l'option --clearsign au début de la commande.
Déchiffrage et vérification des signatures
Supposons maintenant que vous avez reçu un fichier chiffré qui vous est destiné.
La commande pour le déchiffrer est gpg --output document --decrypt
encrypted_doc.gpg. Cela déchiffrera le fichier et vérifiera sa signature
(s'il y en a une).
Chiffrage et déchiffrage sans clef
Il est aussi possible de chiffrer des fichiers en utilisant un mot de passe
plutôt qu'une clef. En fait, le mot de passe lui-même va fonctionner comme une
clef. Il sera utilisé comme algorithme de chiffrement symétrique. Vous
pouvez chiffrer le fichier en utilisant l'argument --symmetric de
gpg ; le déchiffrage fonctionne de la même manière que ce que l'on a
vu précédemment.
Exemple de code 5.2 : Chiffrage d'un fichier avec un mot de passe |
$ gpg --output document.gpg --symmetric document
|
Utilisation avancée
GnuPG possède des fonctions avancées assez sympa. Pour les trouver, ouvrez le
fichier ~/.gnupg/gpg.conf.
Exemple de code 5.3 : ~/.gnupg/gpg.conf |
#keyserver x-hkp://subkeys.pgp.net
#keyserver-options auto-key-retrieve include-disabled include-revoked
|
Cherchez ces deux lignes et décommentez-les. Maintenant, quand GnuPG voudra
vérifier une signature et ne trouvera pas la clé publique sur le trousseau
local, il contactera directement le serveur de clés subkeys.pgp.net et essaiera de
récupérer la clé.
Une autre commande très utile est gpg --refresh-keys. Elle contacte le
serveur de clés défini dans le fichier d'options et met à jour les clés
publiques de votre trousseau local, cherche les clés révoquées, les nouveaux
identifiants et les nouvelles signatures des clés. Vous devriez lancer cette
commande de temps en temps, une ou deux fois par mois, pour être au courant si
une personne révoque sa clé.
6.
Interfaces avec GnuPG
Gestion des signatures des messages
95% du temps, vous utiliserez GnuPG pour chiffrer ou signer un email et pour
lire des messages chiffrés ou signés. Il est donc normal que j'en parle en
premier.
Il y a deux façons de chiffrer/signer un message avec GnuPG, l'ancienne et la
nouvelle méthode :). Avec l'ancienne méthode, les messages apparaissent en texte
brut sans aucune possibilité de formatage ni de fichiers attachés qui seraient
chiffrés/signés. Voici un exemple de message signé avec l'ancienne
méthode :
Exemple de code 6.1 : Une signature comprise dans le texte |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Test message
-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use
iQA/AwUBP8461jMX0745gR7AEQIEOwCg011GbufXO3ED3FkLWXmfzg7xm1cAoJD0
0EU3Kd2EKNCqataEqM5qjpPs
=LchZ
-----END PGP SIGNATURE-----
|
De tels messages ne sont plus acceptables de nos jours avec nos belles
interfaces graphiques et nos clients de messagerie qui comprennent le HTML.
Pour résoudre ce problème, une extension MIME (extensions multi-usages pour la
messagerie Internet) a été créée. Cette extension ajoute un champ au message qui
indique au client de messagerie que le contenu du message entier est
signé/chiffré. Le problème de cette extension est qu'elle n'est pas supportée
par tous les clients de messagerie, certains clients ignorent même le contenu du
message. Microsoft Outlook est bien connu pour ne pas fonctionner avec cette
méthode.
Kgpg
Kgpg est une belle interface vers GnuPG. Dans l'écran principal, vous pouvez
coller du texte à signer ou chiffrer, vous pouvez aussi coller le texte ASCII
blindé (N.D.T. : un texte « blindé », de l'anglais
« armored text », est un texte précédé et suivi de marqueurs PGP
indiquant qu'il est chiffré ou signé) à déchiffrer.
Figure 6.1 |
 |
Sur cette image, vous pouvez voir la fenêtre principale de Kgpg avec un texte
ASCII blindé chiffré à l'intérieur. À partir de là, vous pouvez le déchiffrer
(vous devez donner votre mot de passe), chiffrer d'autres fichiers,
copier/coller un texte à signer...
Figure 6.2 |
 |
Vous voyez maintenant la fenêtre de gestion des clés. On peut y voir notre clé
pour John Doe, les deux clés de confiance pour Gustavo et Luis et la clé non
vérifiée de Daniel Robbins -- je ne l'ai toujours pas appelé pour lui
demander son empreinte :).
Seahorse
Seahorse est une interface graphique vers GnuPG pour l'environnement de bureau
GNOME. Ce logiciel a évolué rapidement, mais il lui manque des fonctionnalités
importantes qui se trouvent dans Kgpg ou en ligne de commande.
Enigmail
Enigmail est une extension pour les clients de messagerie Mozilla (comme
Thunderbird ou Seamonkey) très simple à configurer. Dans Seamonkey, vous n'avez
qu'à aller dans Preferences -> Privacy & Security -> Enigmail. Ensuite, il
vous suffit d'entrer l'adresse de messagerie de votre clef. Vous devez d'abord
faire un emerge enigmail pour l'utiliser dans Thunderbird, puis vous
pouvez le configurer en allant dans Edit -> Account Settings -> OpenPGP
Security.
Les messages qui arriveront avec une signature pgp ou gpg sans confiance seront
marqués avec un stylo cassé. Ceux qui auront une bonne signature auront un
stylo bien droit. Enigmail a même la possibilité de récupérer des clés à partir
d'un serveur de clés, mais, s'il rencontre un problème, il affichera des messages
très bizarres (de toute façon, vous vous rappeler comment utiliser la ligne de
commande, n'est-ce pas ?).
KMail
Si vous utilisez le paramètre USE crypt, KMail sera compilé avec le
support gpg et sera capable de chiffrer et déchiffrer les courriers PGP
automatiquement. Il pourra également chiffrer les courriers avec OpenPGP/MIME.
Si vous voulez également pouvoir déchiffrer les courriers OpenPGP/MIME (ce qui
est probablement le cas), vous devrez disposer d'un agent GPG en cours
d'exécution (voir le chapitre Utiliser un agent
GPG).
Vous pouvez vérifier si KMail est correctement configuré en allant dans
Configurations, Configurer KMail, Sécurité, Crypto
Plugins. Vous devriez voir un élément GpgME-based dans la liste. S'il n'est
pas grisé, cliquez sur Rescan. S'il n'est toujours pas grisé, KMail ne
fonctionne pas correctement.
Si KMail ne fonctionne toujours pas correctement, veuillez consulter le
Guide KMail PGP
(en anglais) pour plus d'informations.
Claws-Mail
Ce client de messagerie est très rapide avec de grosses boîtes, il a
toutes les fonctionnalités qu'une personne voudrait dans un client de
messagerie et marche vraiment bien avec gpg. Le seul problème est qu'il ne
marche pas avec les anciennes signatures PGP, donc quand vous recevrez ce type
de messages signés, vous devrez faire la vérification à la main.
Pour utiliser votre clé gpg avec Claws-Mail, allez simplement dans la
configuration de votre compte et sélectionnez l'onglet Privacy. Enfin,
choisissez la clé à utiliser. En principe, vous pouvez utiliser la clé par
défaut.
7.
Cryptographie à clé publique
Cryptographie à clé publique de base
Le concept de la cryptographie à clé publique a été introduit par Whitfield
Diffie et Martin Hellman en 1976. Quand j'ai entendu pour la première fois les
mots « clé publique » et « cryptographie » dans la même
phrase en 1993, je me suis dit qu'il était impossible de faire une telle chose.
En ces temps-là, il n'y avait pas encore Internet (enfin si, mais pas pour moi),
je me suis rendu dans une bibliothèque et j'ai demandé des livres sur la
cryptographie. Je devais avoir seize ans à l'époque, alors le documentaliste
m'a regardé avec étonnement et m'a ramené un livre pour enfants sur les codages
à substitution (ceux qui consistent à échanger une lettre par une autre comme le
célèbre codage de César ou ROT-13 : Tragbb p'rfg qr yn onyyr, znvf ibhf yr
fnirm qrwn, installez rotix si vous ne pouvez pas lire le texte précédent). Cela
m'a frustré et j'ai commencé à chercher plus d'informations. Ça aide d'avoir des
mathématiciens dans la famille, car dès que j'ai commencé à en parler avec l'un
d'entre eux, il m'a fait découvrir un monde nouveau.
Et maintenant un peu de maths :
Exemple de code 7.1 : Concepts mathématiques |
Définitions :
Un nombre premier est un nombre entier positif supérieur à 1 qui est divisible
par 1 et par lui-même (le reste de la division est 0).
Les huit premiers nombres premiers sont : 2, 3, 5, 7, 11, 13, 17, 19.
Théorème (pas de démonstration ici) :
Soit un nombre entier positif non-premier, il est possible de le décomposer
en un produit de nombres premiers et ce produit est unique.
4 = 2 x 2
6 = 2 x 3
8 = 2 x 4 = 2 x 2 x 2
10 = 2 x 5
12 = 2 x 6 = 2 x 2 x 3
« Faits » :
* Il est mathématiquement facile de multiplier deux grands nombres entiers.
* Il est difficile de trouver les facteurs premiers d'un entier positif donné.
|
Si je vous donne le nombre 35 et je vous dis que ce nombre est le produit de
deux nombres premiers, c'est assez facile de voir que c'est 5 et 7. Mais si je
vous demande la même chose pour 1588522601, vous passerez un bon moment (un bon
nombre de cycles CPU) pour trouver que c'était 49811 x 31891. Et si ce
nombre était vraiment très très grand, cela serait « impossible ».
Alors maintenant, si je donne à tout le monde mon grand nombre qui est le produit
de deux nombres premiers, je saurai quelque chose sur ce nombre que personne
d'autre ne connaît.
C'est la base des implémentations de cryptographie à clé publique (PKC, public
key cryptography) d'aujourd'hui. Pour illustrer son fonctionnement, je distribue
mon nombre et une personne pourra l'utiliser pour chiffrer un message à mon
intention. Ce n'est pas génant que n'importe qui puisse voir le message chiffré
puisque je suis le seul à connaître un moyen de le lire. Il faudrait que les
éventuels espions arrivent à décomposer ce grand nombre pour pouvoir lire le
message, ce qui a été montré comme impossible à faire dans un temps relativement
court (avec les méthodes et les moyens actuels, cela prendrait des milliers
d'années). Dans cette configuration, les deux grands nombres premiers
s'appellent la CLÉ PRIVÉE et le grand nombre non premier est la CLÉ PUBLIQUE.
En pratique, ce n'est pas exactement ça, mais c'est une bonne idée de la
réalité. Pour plus d'informations, consultez Wikipédia à propos du
protocole Diffie-Hellman.
Pour encore plus d'informations, allez dans une bibliothèque et trouvez un
exemplaire du manuel de
cryptographie appliquée (Handbook of Applied Cryptography) par Alfred J.
Menezes, Paul C. van Oorschot et Scott A. Vanstone. Cet ouvrage est disponible
en ligne sur le lien précédent.
Une des conséquences de cette technique est que si vous chiffrez un message à
mon intention et que vous perdez l'original, vous ne pourrez plus le récupérer à
partir de la version chiffrée.
Signatures
Nous avons déja vu comment une personne peut nous envoyer un message chiffré si
elle dispose de notre clé publique. Mais comment savoir si l'auteur du message
est vraiment celui qu'il prétend être ? En d'autres termes : si je
reçois un message de votre part, comment puis-je savoir s'il vient vraiment de
vous et pas d'une personne qui se fait passer pour vous ?
Vous vous souvenez que j'ai écrit ci-dessus que la PKC n'était pas aussi simple
que ce que je disais ? L'idée est que lorsque vous chiffrez un message
pour moi, vous le signez avec votre clé privée de telle manière que, lorsque je
le reçois, je puisse d'abord utiliser votre clé publique pour vérifier votre
signature et ensuite utiliser ma clé privée pour déchiffrer le message. Comme
vous pouvez le constater, on ne peut pas faire cela avec la méthode que j'ai
décrite tout à l'heure.
Il est donc très important de signer ses messages ainsi vous n'aurez pas à
les chiffrer au préalable. Maintenant, vous pouvez créer des messages qui
peuvent être lus par tout le monde et qui portent votre « marque ».
Et enfin, le moindre caractère modifié dans le message pourra (et sera) détecté.
Serveurs de clés et clés signées
Disons que je n'ai jamais eu de contact avec vous avant que vous ne m'ayez envoyé
un message : comment puis-je obtenir votre clé publique et comment m'assurer que
c'est bien la vôtre ?
Pour résoudre ce problème, les serveurs de clés publiques ont été créés.
Lorsque vous créez votre paire de clés (privée et publique), vous envoyez votre
clé publique au serveur de clés. Ensuite, n'importe qui peut la récupérer.
Cela résoud le problème de comment trouver votre clé. Mais comment peut-on
s'assurer que c'est bien la bonne ? Un autre concept a été introduit, la
signature de clé :
Si j'ai la clé publique d'une personne et que je sais avec certitude que
c'est vraiment la clé de cette personne (c'est un ami personnel, quelqu'un que
je connais de la vraie vie, etc.), je peux signer cette clé publique et la
renvoyer au serveur de clés, ce qui correspondrait à dire : « cette
clé appartient bien à la personne qui le prétend ». De cette manière, les
personnes qui ont ma clé publique et qui me font confiance peuvent utiliser
cette confiance pour faire confiance en d'autres clés.
Cela peut encore être confus, alors passons de suite à un exemple.
Imaginons une situation avec trois personnes : John, Mary et Lisa. John est
un bon ami de Mary mais ne connaît pas Lisa ; Lisa est une bonne amie de
Mary, mais ne connais pas John. Un jour, Lisa envoie un message signé à John. John
va récupérer la clé publique de Lisa sur le serveur de clés et tester le
message. Si tout se passe bien, il verra que la personne qui a écrit le message
a bien utilisé cette clé. Mais comment savoir si elle est vraiment la personne
qu'elle prétend être ?
John vois ensuite que la clé était signée par Mary, ce qu'il peut vérifier car
il a déjà la clé de Mary et qu'il lui fait confiance. Avec ce cercle de
confiance, il peut conclure que le message qu'il a reçu a vraiment été écrit
par Lisa.
Vous êtes maintenant fin prêt à utiliser ce guide. Revenez au chapitre 1 et
apprenez à vous servir de gpg.
8.
Mot de la fin et remerciements
Quelques problèmes
J'ai eu des problèmes avec les photos dans les clés. Vérifiez la version que
vous utilisez, si c'est GnuPG 1.2.1-r1 ou au delà, ça devrait aller. Les
versions plus anciennes peuvent avoir des problèmes. La plupart des serveurs de
clés n'aiment pas les clés contenant des photos, il est donc préférable que
vous ne mettiez pas de photo dans votre clé.
Les dernières versions de gnupg semblent ne pas marcher avec la commande gpg
--send-keys qui est utilisée pour envoyer toutes les clés de votre
trousseau au serveur public.
Non traité
gpg est un outil très complexe, il vous permet de faire bien plus de
choses que ce dont j'ai parlé ici. Ce document est destiné à l'utilisateur
débutant avec GnuPG. Pour plus d'informations, veuillez consultez le site de GnuPG.
Je n'ai rien écrit à propos d'autres outils tels que pgp4pine,
gpgpine, evolution et des outils Windows, mais il est probable que
je le fasse plus tard.
Remerciements
Le manuel GnuPG de John Michael Ashley
est un excellent ouvrage pour les débutants.
Merci à Swift (Sven Vermeulen) pour m'avoir poussé à récrire cet article.
Merci à tout le monde sur #gentoo-doc, vous êtes super les mecs.
Merci à Tiago Serra pour m'avoir ramené sur la piste de la confidentialité.
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|