DerniĂšre mise Ă jour : 21/08/2003
Voici un petit article pour vous initier aux joies de GnuPG qui vous permet de certifier (dans une certaine mesure) vos emails par une signature et meme de crypter ceux-ci. Le nom ne sera pas sans vous rappeller un autre produit : PGP. Vous vous en doutez, il ne s'agit pas d'un hasard. Je vais donc tenter de vous guider dans la procédure de paramétrage et d'installation de GnuPG ainsi que son utilisation de base (signature, cryptage, etc ...). Vouis pouvez trouver le site officiel de GPG chez Gnu à l'adresse suivante : http://www.gnupg.org/. Vous pouvez utiliser GnuPG sous Unix, Linux, Mac et Microsoft Windows. Cet article a bénéficié d'une petite mise à jour concernant l'échange de clés et leur signature. Les captures d'écrans on également été actualisées avec Evolution 1.4
Commencez par télécharger la derniÚre version à l'adresse ci-dessus. Je préconise à présent de faire un peu de ménage afin de ne pas croiser plusieurs versions sur votre systÚme. Ainsi les utilisateurs de debian taperont apt-get remove gnupg alors que les utilisateurs de systÚmes RPMs feront un rpm -qa |grep -i gnupg ; rpm -e 'packages trouvés sur la commande précédente et enfin les utilisateurs de gentoo : emerge gnupg.
Pour installer le source que vous avez téléchargé, les commandes classiques sont applicables, ainsi :
-
tar xvzf 'gnupg_versionXX.tar.gz' ; cd gnupgXX ; ./configure
Selon votre systÚme, il devrait gentillement vous répondre :
-
Configured for: GNU/Linux (i686-pc-linux-gnu)
Dynamically linked modules: rndunix rndegd tiger
Statically linked modules: rndlinux sha1 rmd160 md5
Scandez alors les commandes habituelles : make ; make install ; ldconfig. Vous pouvez alors vérifier que la bonne version de gnupg est installée par la commande : gpg --version. Cela devrait vous retourner la version que vous avez téléchargé. Si ce n'est pas le cas, vous avez sans doute oublié d'enlever la version binaire qui se trouvait sur votre systÚme lors de l'installation. Voici ce que retourne une demande de version, notez toutes les méthodes supportées en bas :
-
gpg (GnuPG) 1.2.3
Home: ~/.gnupg
Supported algorithms:
Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA, ELG
Hash: MD5, SHA1, RIPEMD160
Vous ĂȘtes alors prĂȘt Ă gĂ©nĂ©rer votre premiĂšre clĂ©. Notez que le Home de GnuPG est : ~/.gnupg qui est l'endroit oĂč vos clĂ©s seront stockĂ©es (ainsi que les clĂ©s publiques de vos correspondants). Tout comme avec SSH, vous disposez ici de clĂ©s privĂ©es et clĂ©s publiques. Ainsi, la clĂ© privĂ©e ne doit ĂȘtre transmise Ă personne alors que la clĂ© publique est celle que vous allez envoyer Ă vos correspondants pour authentifier vos messages.
Créez vos clés par la commande : gpg --gen-key. Nous allons ici générer une clé de type DSA et ElGamal (utilisées pour signer et crypter vos messages) avec une résistance de 2048 bits (jamais assez sécurisé ;) et sans expiration. Voici donc le résultat de la console :
-
dwight@tux dwight $ gpg --gen-key
gpg (GnuPG) 1.2.2; Copyright (C) 2003 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)
(5) RSA (sign only)
Your selection? 1
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
Key is valid for? (0) 0
Key does not expire at all
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)
Real name: FRLinux
Email address: frlinux@gentoo.org
Comment: Translators team
You selected this USER-ID: "FRLinux (Translators team)
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
public and secret key created and signed.
key marked as ultimately trusted.
pub xxxxD/xxxxxxx 2003-08-20 FRLinux (Translators team)
Key fingerprint = xxxx xxxx xxxx xxxx xxxx xxxx xxxx
sub xxxxg/xxxxxxx 2003-08-20
Comme vous pouvez le remarquer, ce n'était pas trop dur ! Assurez vous d'entre une passphrase qui soit suffisement longue et compliquée pour éviter que quelqu'un ne puisse la décrypter, la principale raison étant bien sûr la sécurité de vos échanges. Pour voir les clés disponibles dans votre HOME, tapez gnupg --list-keys. Une fois les clés générées, c'est une bonne idée d'envoyer la clé publique, pour se faire, tapez gpg --keyserver wwwkeys.pgp.net --send-key frlinux@frlinux.net (remplacez mon adresse email par la vÎtre ;). Vous venez de déclarer votre clé publique au monde.
Je vais ici utiliser Evolution pour vous montrer comment signer des messages et les authentifier. Pour commencer, Evolution va chercher gpg dans /usr/bin, il faut donc changer cela vers /usr/local/bin/gpg dans les Outils/ParamĂštres/Autre de configuration (Tools/Mail Settings/Other). Vous pouvez ensuite paramĂ©trer votre compte email pour signer vos messages Ă l'envoi, comme le montre la fenĂȘtre ci-dessous.
Il vous faut maintenant taper votre message. Votre destinataire doit pour se faire avoir votre clé publique. Il peut alors la trouver sur un serveur publique : gpg --keyserver certserver.pgp.com --search-keys frlinux@frlinux.net puis l'importer : gpg --keyserver certserver.pgp.com --recv-keys 0x81FCD7A0 . Voici un exemple de message qu'évolution vous demande de signer avant l'envoi :
Comme vous l'avez constaté, Evolution vous demande de signer chaque message à moins de cocher de se rappeller du mot de passe pour la session en cours, ce qui est plus que recommandé en milieu professionnel. L'exemple ci-dessus vous a également montré comment chercher et importer une clé. Une fois la clé téléchargée, il faut l'importer avec la commande suivante : gpg --import 'clé'. Simple et efficace, cela vous permettra d'échanger des emails sécurisés entre utilisateurs. Il est important de signer la clé une fois reçue, sans cette étape, il ne vous sera en effet pas possible de pouvoir dialoguer avec votre interlocuteur car le cryptage du message sera refusé, vous devez donc faire ceci : gpg --sign-key email@domaine.org. Vous devez vérifier l'autenticité de la clé avec lui de préférence par IRC ou tout autre moyen. Voici la procédure de signature :
-
gpg --sign-key email@domaine.org
pub 1024D/XXXXXXXX created: 2003-08-17 expires: never trust: -/-
sub 1024g/XXXXXXXX created: 2003-08-17 expires: never
(1). email (email domaine key)
pub 1024D/XXXXXXXX created: 2003-08-17 expires: never trust: -/-
Primary key fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
email (email domaine key)
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: "FRLinux
I have checked this key very carefully.
Really sign? y
You need a passphrase to unlock the secret key for user: "FRLinux
1024-bit DSA key, ID 08CE6603, created 2002-10-21
Je vais maintenant couvrir rapidement le cryptage de donnĂ©es. Disons que vous transmettiez un contrat de travail par email et que vous voulez ĂȘtre sĂ»r qu'il ne sera pas consultĂ© par tout le monde, tapez votre email et activez l'option crypter. Votre destinataire recevra alors un message pour lequel la passphrase doit ĂȘtre indiquĂ©e, il ne sera sinon pas possible de consulter le message.
Enfin, voici la méthode pour exporter une clé si vous voulez la mettre à disposition de vos correspondants : gpg --export -a frlinux@frlinux.net > frlinux_public_key.asc. La clé est disponible ici. Pour l'importer, il vous suffit d'un : gpg --import /home/stephane/frlinux_public_key.asc. Et voici le résultat :
-
gpg: found 0 ownertrust records
gpg: migrated 0 version 2 ownertrusts
gpg: key 9FCCDB6E: public key imported
gpg: Total number processed: 1
gpg: imported: 1
Si vous obtenez le message plus bas, c'est que vous ne possédez pas la clé de la personne à qui vous tentez d'envoyer un message crypté. Il faut donc lui demander sa clé publique avant de poursuivre.
Enfin, si vous tentez d'envoyer un message à une personne dont vous avez la clé mais ne l'avez pas signée, vous obtiendrez le message ci-dessous, si tel est le cas, reprenez la section un peu plus haut pour signer la clé de votre correspondant. Le partie en gras du message ci-dessous vous donne une indication de ce qui se passe :
-
gpg: using secondary key 6D76A0D3 instead of primary key 82BE3F58
gpg: checking the trustdb
gpg: 3 keys processed (1 validity counts cleared)
gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1
gpg: 6D76A0D3: There is no indication that this key really belongs to the owner
gpg: [stdin]: encryption failed: unusable public key
Vous ĂȘtes maintenant parĂ©s pour commencer vos Ă©changes semi-sĂ©curisĂ©s dans le monde de GPG. Sachez que le serveur officiel contient de nombreuses documentations qui expliquent Ă©galement comment Ă©changer des clĂ©s et des emails avec des utilisateurs de PGP.