GPG

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%

GnuPG (ou GPG, de l'anglais GNU Privacy Guard) est un logiciel de cryptage conforme à la norme OpenPGP et distribué selon les termes de la licence GNU GPL. On peut donc s'en servir librement et gratuitement. Tout comme SSH, il fonctionne à l'aide d'une paire de clés, une privée et une publique.

Sommaire

À quoi servent les clés GPG

Avec des clés GPG vous pouvez faire les choses suivantes :

  • signer un fichier ou un message pour confirmer qu'il vient bien de vous et qu'il n'a pas été modifié par quelqu'un d'autre;
  • encrypter un message ou un fichier de façon à ce qu'il ne puisse être lu que par le destinataire.

Installation

Sous Linux, GPG est probablement déjà installé ou peut l'être facilement à l'aide du gestionnaire de paquets. On peut aussi visiter le site http://www.gnupg.org/, télécharger les sources et les installer soi-même, avec un peu plus d'efforts.

Créer une paire de clés GPG

La commande

[nom@serveur $] gpg --list-keys


initialise GPG à son premier appel. Aux appels subséquents, elle permet d'afficher les clés existantes.

Ensuite il faut créer une paire de clés (une publique et une privée). On lance la commande dans l'encadré ci-dessous en fournissant les renseignements suivants :

type de clé 
prendre le choix 1 qui va générer toutes les clés dont vous avez besoin;
la taille des clés ELG-E 
prendre la valeur par défaut;
durée de la clé 
choisir l'option « la clé n'expire pas » (vous risquez d'horripiler vos correspondants si vous changez de clé trop fréquemment);
nom réel 
prénom et nom;
adresse électronique 
commentaire 
une chaîne de caractère identifiant votre clé, pour la différencier des autres si vous en avez plusieurs;
phrase de passe 
mot de passe servant à accéder à la clé privée.
[nom@serveur $] gpg --gen-key 
gpg (GnuPG) 1.4.2.2; Copyright (C) 2005 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.

Sélectionnez le type de clé désiré:
(1) DSA et Elgamal (par défaut)
(2) DSA (signature seule)
(5) RSA (signature seule)
Votre choix ? 1
La paire de clés DSA fera 1024 bits.
les clés ELG-E peuvent faire entre 1024 et 4096 bits de longueur.
Quelle taille de clé désirez-vous ? (2048)
La taille demandée est 2048 bits
Spécifiez combien de temps cette clé devrait être valide.
0 = la clé n'expire pas
= la clé expire dans n jours
w = la clé expire dans n semaines
m = la clé expire dans n mois
y = la clé expire dans n années
La clé est valide pour ? (0)
La clé n'expire pas du tout
Est-ce correct ? (o/N) o

Vous avez besoin d'un nom d'utilisateur pour identifier votre clé; le
programme le construit à partir du nom réel, d'un commentaire et d'une
adresse e-mail de cette manière:
   « Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de> »

Nom réel: Prénom Nom
Adresse e-mail: adresse@domaine
Commentaire: commentaire
Vous avez sélectionné ce nom d'utilisateur:
"Prénom Nom (commentaire) <adresse@domaine>"

Changer le (N)om, le (C)ommentaire, l'(E)-mail ou (O)K/(Q)uitter ? o
Vous avez besoin d'une phrase de passe pour protéger votre clé
secrète.

Entrez la phrase de passe: xxxxxx
Répétez la phrase de passe: xxxxxx

Un grand nombre d'octets aléatoires doit être généré. Vous devriez faire
autre chose (taper au clavier, déplacer la souris, utiliser les disques)
pendant la génération de nombres premiers; cela donne au générateur de
nombres aléatoires une meilleure chance d'avoir assez d'entropie.

gpg: /root/.gnupg/trustdb.gpg: base de confiance créée
gpg: clé B8F271C6 marquée comme ayant une confiance ultime.
les clés publique et secrète ont été créées et signées.

gpg: vérifier la base de confiance
gpg: 3 marginale(s) nécessaires, 1 complète(s) nécessaires, modèle
de confiance PGP
gpg: profondeur: 0 valide: 1 signé: 0
confiance: 0-. 0g. 0n. 0m. 0f. 1u
pub 1024D/B8F271C6 2006-04-06
Empreinte de la clé = 72A9 E308 5F2E 3BA5 CB53 A7BF F92C 0859 B8F2 71C6
uid Prénom Nom (commentaire) <adresse@domaine>


Ayant créé la clé GPG, on peut maintenant s'en servir. Pour la suite, on définit une variable d'environnement contenant l'identificateur de la clé donné dans la ligne commençant par « pub » ci-dessus :

[nom@serveur $] export IDCLE=B8F271C6


Exporter sa clé publique

Pour utiliser une paire de clés GPG, il faut faire connaître la clé publique. Une façon de le faire est de l'exporter en format ASCII :


[nom@serveur $] gpg --export -a $IDCLE > gpg-pub.asc


On peut alors mettre cette clé sur sa page Web ou l'envoyer par courriel, par exemple.

Envoyer sa clé publique à un serveur de clés PGP

On peut aussi exporter sa clé publique sur un serveur de clés tel que [pgp.mit.edu]. Il suffit d'aller à la page Web et de coller le contenu du fichier gpg-pub.asc dans la partie « submit », ou encore d'exécuter la commande suivante :

[nom@serveur $] gpg --keyserver pgp.mit.edu --send-keys $IDCLE


Importer une clé publique

Pour récupérer les clés publiques des autres, on peut faire une recherche sur le même serveur de clés :

[nom@serveur $] gpg --keyserver pgp.mit.edu --search-key nom_a_rechercher


En choisissant un numéro dans la liste affichée, la clé correspondante est importée dans le trousseau de l'utilisateur.

Enlever une clé du trousseau

D'abord, il faut trouver le numéro de la clé à enlever parmi le trousseau :

[nom@serveur $] gpg --list-key 
/home/utilisateur/.gnupg/pubring.gpg
-------------------------------
pub   1024D/6FC6E67E 2013-06-17
uid                  Prénom Nom (commentaire) <adresse@domaine>
sub   2048g/F8A81AE4 2013-06-17

pub   1024D/135EA668 2001-03-05
uid                  Richard Stallman (Chief GNUisance) <rms@gnu.org>
sub   1024g/B1B10ED6 2001-03-05


Pour enlever la clé publique de Richard Stallman du trousseau, il faut faire :

[nom@serveur $] gpg --delete-key 135EA668


et confirmer.

Signer un message ou document

Comme mentionné plus haut, la signature sert à identifier la personne qui envoie le message ou qui a fait un fichier. Il y a deux types de signatures : binaire et ascii. On ne décrira ici que la signature ascii, qui est la plus utilisée. Pour signer un message ou document, on fait :

[nom@serveur $] gpg --default-key $IDCLE --clearsign message.txt


Il faut alors entrer la phrase de passe permettant d'accéder à la clé privée. Cette commande crée le fichier « message.txt.asc » qui contient « message.txt » plus la signature. Pour que la signature se retrouve dans un fichier indépendant, utiliser plutôt la commande suivante :

[nom@serveur $] gpg --default-key $IDCLE --armor --detach-sign message.txt


Ce qui crée un fichier « message.txt.asc » ne contenant que la signature.

Vérifier un message signé

Pour vérifier un message signé, il faut évidemment avoir la clé du signataire (voir ci-dessus comment récupérer une clé). Si le message et la signature arrivent dans des fichiers différents, on fait :

[nom@serveur $] gpg --verify message.txt.asc message.txt
 gpg: Signature faite ven 18 oct 2002 14:45:58 CEST avec une clé DSA ID B60335AE
gpg: Bonne signature de « Prénom Nom (commentaire) <adresse@domaine> »


Si le message et la signature arrivent dans le même fichier :

[nom@serveur $] gpg --verify message.txt.asc
 gpg: Signature faite ven 18 oct 2002 14:45:58 CEST avec une clé DSA ID B60335AE
gpg: Bonne signature de « Prénom Nom (commentaire) <adresse@domaine> »


Évidemment, si la signature n'est pas bonne, le message de GPG sera différent.

Chiffrer un message ou document

Là encore, il existe deux types de chiffrement : binaire et ascii. On se contente encore ici du format ASCII parce que c'est le plus utilisé et que l'on peut l'utiliser directement dans les clients de courrier électronique.

[nom@serveur $] gpg --recipient destinataire --armor --encrypt message.txt


Cela va créer un fichier « message.txt.asc ». L'argument de l'option « --recipient » est le nom de la personne à qui l'on veut envoyer le message de façon à ce que celui-ci soit encrypté avec sa clé publique et qu'il puisse le décrypter avec sa clé privée.

Décrypter un message ou document

Voici une commande simple pour décrypter un message :

[nom@serveur $] gpg --decrypt message.txt.asc
 Vous avez besoin d'une phrase de passe pour déverrouiller la
clé secrète pour l'utilisateur: « Prénom Nom (commentaire) <adresse@domaine> »
Entrez la phrase de passe: xxxxxxx


Générer un certificat de révocation

Pour générer un certificat de révocation, on doit taper la commande :

[nom@serveur $] gpg --gen-revoke adresse@domaine


et copier l'affichage en lieu sûr. On peut à l'aide de ce certificat révoquer la paire de clés si elle est compromise où si l'on a oublié la phrase de passe. Comme la phrase de passe est nécessaire pour exécuter la commande, il est recommandé de le faire dès la génération des clés.

GPG dans Thunderbird

Pour utiliser GPG directement dans Thunderbird, il faut tout d'abord installer l'extension Enigmail. Une fois que cela est fait et après redémarrage du client, un menu openPGP devrait être créé.

Thunderbird gpgconfig1.jpg

Après, il suffit de choisir le menu Préférence et de configurer votre module comme les images suivantes.

Configuration de Thunderbird étape #2 (l'image de cette étape est manquante...)

Voici la ligne complète des Keyserver(s):

pgp.mit.edu, random.sks.keyserver.penguin.de, ldap://certserver.pgp.com, subkeys.pgp.net

Thunderbird gpgconfig3.jpg
Thunderbird gpgconfig4.jpg
Thunderbird gpgconfig5.jpg
Thunderbird gpgconfig6.jpg
Thunderbird gpgconfig7.jpg

Et voilà, normalement Thunderbird devrait trouver la clé que vous avez créé préalablement et il devrait décrypter automatiquement les messages encryptés que vous recevez. Évidemment, pour cela, vous devez avoir importé la clé, sinon Thunderbird vous demandera si vous voulez qu'il la cherche sur les serveurs de clés.

GPG dans Pine

Pour les inconditionnels de Pine sous Linux, il existe un moyen d'intégrer la ligne de commande de GPG dans Pine. Le concept consiste à écrire un petit script pour décrypter le message reçu, puis à placer un filtre d'entrée qui redirigera les messages GPG reçus vers ce script.

Assurez-vous que l'utilitaire en ligne de commande « gpg » soit installé sur votre station Linux.

Créez le script « ~/.gnupg/gpg.checksig » contenant :

#!/bin/sh
/usr/bin/gpg && echo "[ PGP Signature ok - `date` ]" || echo "[ PGP Signature check FAILED - `date` ]"

et ajoutez la ligne suivante au bon endroit dans votre fichier « .pinerc » :

display-filters=_LEADING("-----BEGIN PGP SIGNED MESSAGE")_ ~/.gnupg/gpg.checksig,_LEADING("-----BEGIN PGP MESSAGE")_ ~/.gnupg/gpg.checksig

Et voilà, vous êtes maintenant en mesure de lire des courriels encodés avec GPG.

GPG dans vi/vim

Vous pouvez utiliser GPG en combinaison avec vi/vim afin d'éditer un fichier encrypté sans qu'il se retrouve écrit sur votre disque dur. Pour ce faire, utilisez une redirection pour envoyer la sortie de gpg vers vim, tel que

[nom@serveur $] gpg -d monfichier.gpg | vim -


L'option - de vim lui indique de lire le flux d'entrée standard plutôt qu'un fichier. Éditez ensuite votre fichier, puis utilisez la commande vim suivante pour envoyer la sortie vers gpg, qui encryptera le résultat :

:w !gpg -e -o monfichier.gpg

gpg vous demandera alors la liste des destinataires pour lesquels encrypter le contenu, puis écrira votre fichier directement encrypté sur le disque.

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager