Ceci est une ancienne révision du document !



GNU Privacy Guard

GPG est l'acronyme de GNU Privacy Guard. Il permet le chiffrement et la signature de données.

Vous trouverez dans le présent document la méthode en passant par les interfaces graphiques, suivie de leur équivalent en lignes de commande.

L'application GnuPG sert à chiffrer des données : vous pouvez vous en servir pour communiquer en toute sécurité (courriel, messagerie instantanée, etc.) et pour chiffrer vos fichiers (qui pourront d'ailleurs être également déchiffrés sous d'autres systèmes d'exploitation comme Windows).

Comment fonctionne le chiffrement ?

Il serait dommage d'utiliser GPG sans connaitre la différence entre une clef publique et une clef privée (public key/secret key). Par conséquent, je vous invite a visiter la page Cryptographie asymétrique sur Wikipedia. À noter qu'on peut également chiffrer en symétrique avec GPG (option « -c »).

Remarque : Dans cette documentation le terme de clef utilisé seul peut désigner la clef publique ou la clef privée. Cet abus de langage couramment utilisé ne pose pas de problème quand le concept de clef publique-clef privée est bien compris.

Ci-dessous une autre formulation des principaux concepts :

Clef publique et clef privée

  • La clef publique (du destinataire) est nécessaire pour chiffrer des données. Elle sera utilisée par vos correspondants lorsqu'ils vous enverront des messages que seul vous pourrez déchiffrer. C'est une clef que vous devez ou pouvez fournir à vos correspondants afin qu'ils puissent vous envoyer des messages chiffrés. Elle peut également servir à vos correspondants pour vérifier vos signatures.
  • La clef privée ne doit jamais être divulguée : elle vous servira à déchiffrer des données. Pour plus de sécurité , cette clé est chiffrée en symétrique et un mot de passe y est donc associé : ainsi même lorsque que quelqu'un a accès à votre clef privée (en accédant à votre ordinateur par exemple), il ne peut utiliser votre clé privée pour déchiffrer vos données. Elle sert également à signer des documents ou des courriels. Ainsi, vos destinataires peuvent être sûrs que vous êtes bien l'auteur ou l'expéditeur des données signées.

Un mot de passe est associé à la clef privée : il vous sera demandé pour signer ou déchiffrer les fichiers, courriels ou messages.

Évidemment, ne perdez pas ce mot de passe et ne le divulguez à personne.

Validité de la clef

Lors de la création de la clef publique, une date d'expiration vous sera demandée : c'est la date à partir de laquelle vous ou vos correspondants ne pourront plus utiliser cette clef pour chiffrer des données.

Note : Ceci ne vous empêchera pas de relire des données chiffrées avec cette clef publique. Il est aussi possible de modifier cette date d'expiration ultérieurement.

Certificat de révocation

Le Certificat de révocation sert à invalider une clef. Vos correspondants ne pourront alors plus utiliser cette clef. Il doit être utilisé lorsque quelqu'un est susceptible d'avoir obtenu votre clef privée ou votre mot de passe.

Identifiant

L'identifiant d'une clef est appelé uid (User IDentifiant) dans GPG. Il est de la forme « Prénom NOM (commentaire) <adresse de courriel> » (ou « Prénom NOM <adresse de courriel> » si aucun commentaire n'a été spécifié).

Une clef est composée de différents champs (cf. comment lister les clefs de son trousseau dans la section « Gérer son trousseau de clefs ») :

  1. le champ « pub » correspond à la partie publique.
  2. le champ « sub » correspond à la partie privée de la clé.
  3. le champ « uid » correspond à une adresse email et un nom.

La notation « <id> » utilisée dans cette documentation est une chaine de caractères propre à une clé du trousseau. Typiquement, cela peut être le nom, ou un identifiant de la clé (« pub » ou « uid »), ou encore l'adresse de courriel.

Empreinte

Une empreinte (fingerprint en anglais) sert à identifier de manière unique une clef. L'idée étant que, plusieurs personnes pouvant générer une clef avec un même uid, il faut pouvoir déterminer si on a la bonne clef publique en comparant son empreinte.

Si l'empreinte ne correspond pas vous devez supprimer la clef publique invalide de votre trousseau.

Note : Les 8 derniers caractères du fingerprint correspondent à l'identifiant pub de la clé.

Signer une clef publique

Signer une clef publique, c'est certifier que cette clef est bien celle de la personne indiquée par l'identifiant. C'est pour cela qu'il faut faire la vérification d'empreinte avant de signer une clef.

Après avoir signé une clef publique vous pouvez la renvoyer sur un serveur. Ceci apporte à tous votre garantie sur l'authenticité de cette clef.

  1. Fonction « sudo » activée (sinon voir Ajout des privilèges super-utilisateur à un utilisateur).
  2. Connexion Internet configurée et activée (sinon voir modem ou comment_configurer_son_reseau_local).
  3. Dépôt universe activé (sinon voir depots).

Il existe divers FE (Front End, interface graphique) pour GnuPG :

  1. KGpg, développé pour l'environnement KDE, mais fonctionne également sous Gnome ;
  2. GnomeGPG, développé pour l'environnement Gnome mais incomplet ;
  3. Seahorse (cf. Avertissement sur Seahorse) ;
  4. GPA, tente de devenir l'interface graphique standard de GnuPG.

N'ayant peu ou pas testé ces interfaces graphiques (car elles ne sont généralement pas encore très abouties), je détaille dans cette documentation l'usage de GPG en ligne commande.

Si vous ne savez pas encore comment utiliser la ligne commande, allez voir console_ligne_de_commande.

N.B. : Lorsque vous utilisez GPG pour chiffrer vos messages, cela sera transparent pour vous car pris en charge par vos logiciels habituels.

Installation de GnuPG

Installation des interfaces graphiques

Sous Ubuntu - Gnome

Dans le menu Applications → Ajouter des applications :

  • KGpg : Catégorie Accessoires → Plus d'application… → KGpg
  • GnomePGP : Catégorie Outils système → Plus d'application… → GnomePGP
  • Seahorse : Catégorie Autre → Encryption Key Manager

Vous pouvez aussi faire une recherche dans la barre prévu à cet effet.

Via Synaptic ou Adept

Il faut installer respectivement les paquets suivants :

Avertissement sur Seahorse

Seahorse est plus complet que GnomePGP et vous permettra de créer de nouvelle paire de clefs (clef publique et privée), à l'inverse de GnomePGP. Par contre, certains utilisateurs ont mentionné des bugs (en décembre 2005).

Seahorse ne permet pas de créer de clef sans passphrass (inutile dans le cas des clefs pour courriel) et ne connait pas le serveur de clef http://keys.gnupg.net/ (novembre 2010)

La ligne de commande vous permettra d'éviter les bugs.

Cette section illustre les usages les plus communs de GnuPG. Vous pouvez évidement obtenir d'autres détails en utilisant la commande :

gpg --help
Le paquet installé précédemment est gnupg2. Il serait donc peut-être plus cohérent d'utiliser la commande gpg2 qui invoque la seconde version de GnuPG et non gpg tout court qui invoque la première version.

Gérer les clefs avec GPG

Créer une paire de clefs

Création de la clef

Ouvrez une console et exécutez la commande suivante :

gpg --gen-key

Choisissez DSA and ElGamal (default) en tapant 1. Une clef de 1024 bits vous assurera une bonne protection.

Choisissez alors dans combien de temps votre clef expirera. Vous pouvez rentrer 30 comme nombre de jours pour faire vos premiers essais.

Confirmez par y.

Vous allez alors créer un identifiant pour votre clef :

  1. Il faut d'abord donner vos Prénom et NOM.
  2. Remplissez ensuite votre adresse de courriel (même si vous utilisez cette clef uniquement pour chiffrer vos fichiers). Cette adresse doit correspondre avec celle que vous utilisez, sans artifice anti-spam.
  3. Le commentaire est optionnel.

Validez par « O ».

Il faut maintenant fournir le mot de passe.

N.B. : Rien ne s'affiche lorsque vous tapez votre mot de passe dans la console. C'est une question de sécurité.

Création du Certificat de révocation

Ouvrez une console, et exécutez la commande suivante :

gpg --gen-revoke <mon_id>

Gérer son trousseau de clefs

Lister toutes les clefs
gpg --list-keys
Exporter une clef publique sur un serveur de clef
gpg --send-key <id> --keyserver <serveur>

Vous pouvez spécifier un serveur de clef spécifique avec l'option « –keyserver <serveur> », ce aussi bien pour la recherche, l'importation ou exportation de clef.

Rechercher une clef publique sur un serveur de clef
gpg --search-keys <identifiant>
Ajouter une clef publique depuis un serveur de clef
gpg --recv-keys <identifiant>
Ajouter une clef publique contenue dans le presse papier (vous avez reçu la clef publique par courriel par exemple)
gpg --import

Collez ensuite la clef dans la console (clic du milieu)

Supprimer une clef publique
gpg --delete-keys <identifiant>

Avancé

Ajouter ou retirer un « uid » d'une clef

Ceci est généralement utilisé par les personnes disposant de plusieurs adresses de courriels.

gpg --edit-key <identifiant>

Gpg vous rend la main en affichant Command> après avoir affiché des détails sur la clef à éditer.

Pour ajouter un <uid> :

  1. Tapez la commande adduid
  2. Renseignez les infos demandées.

Pour retirer un <uid> :

  1. Sélectionnez un uid par la commande uid <numéro_entre_parenthèses>. Gpg affiche alors une étoile à côté de l'uid sélectionné.
  2. Retirez alors l'uid par la commande deluid.

Quittez avec quit en validant les modifications par y.

Vérifier le fingerprint
gpg --fingerprint <identifiant>
Signer une clef publique
gpg --sign-key <identifiant>

Validez si vous êtes sûr de l'authenticité de la clef.

Vous pouvez renvoyez la clef sur un serveur de clef (cf. la section « Gérer son trousseau de clefs »).

Changer la date d'expiration d'une clef
gpg --edit-key <identifiant> expire

Vous devez disposer de la clef secrète pour changer cette date.

Vous aurez d'abord à l'écran les informations concernant la clef puis vous pourrez rentrer une durée pour laquelle la clef sera valide en suivant le format indiqué. Validez ensuite par o, puis entrez éventuellement votre passphrase. Lorsque la ligne Commande> apparaît, entrez quit et validez les changements.

Configurer les logiciels pour utiliser GnuPG

Récupérer ou partager un trousseau de clé déjà existant

(Par exemple votre trousseau de clé créé sous Windows)

Il vous suffit de copier tous les fichiers présents dans le dossier du trousseau de clé (keyring) vers le dossier correspondant sous Ubuntu :

/home/<utilisateur>/.gnupg

Si vous êtes en dual boot avec Windows et que vous utilisez GnuPG dans les deux systèmes, il vaut mieux partager le dossier du trousseau de clé : Pour cela on crée un lien symbolique à la place du répertoire .gnupg :

sudo ln -s <chemin du dossier du trousseau de clé/> /home/<utilisateur>/.gnupg

Exemple : sudo ln -s "/media/windowsdata/Mes documents/GPGkeys/" /home/toto/.gnupg

(notez les guillemets indispensables à cause de l'espace entre "Mes" et "documents")

Signer et Chiffrer des fichiers avec GnuPG

Ces manipulations sont possibles avec les interfaces graphiques.

Voici comment les réaliser en ligne de commande avec gnupg :

Signer un fichier
$ gpg --clearsign <mon_fichier>

Votre mot de passe vous est demandé pour vérifier que c'est bien vous qui signez le fichier.

Un fichier mon_fichier.asc est créé : c'est la signature du fichier mon_fichier.

Chiffrer un fichier
gpg --encrypt <mon_fichier>

L'identifiant du destinataire est demandé : c'est la personne qui pourra déchiffrer le fichier (qui peut très bien être vous).

N.B. : Il faut bien comprendre ici que c'est là où intervient le mécanisme de clef publique/ clef privés. Vous cryptez un fichier avec la clef publique de son destinataire et seule sa clef privée pourra le déchiffrer. D'où l'intérêt de ne pas hésiter à diffuser sa clef publique. Ce principe est bien sur identique pour le mail.

Un fichier « mon_fichier.gpg » est créé : c'est la copie chiffrée de « mon_fichier ».

Déchiffrer un fichier
gpg --output <mon_fichier> --decrypt <mon_fichier.gpg>

Votre mot de passe vous est demandé pour déchiffrer mon_fichier.gpg. Le fichier mon_fichier est créé et lisible.

N.B. : Vous pouvez bien sur chiffrer et signer un fichier : il suffit de mettre les options –sign et –encrypt.

  • RetroShare est un logiciel friend-to-friend de partage de fichiers, base sur PGP.
  • gnupg.1288824361.txt.gz
  • Dernière modification: Le 03/11/2010, 23:46
  • par azerttyu