PGP (Pretty Goog Privacy) offre une assez bonne confidentialité ce qui vous permet d’envoyer un message qui ne pourra être lu que par votre destinataire, et/ou de certifier à votre destinataire que vous êtes bien l’auteur du message.
Pour cela, vous chiffrez vos messages, c’est-à-dire que vous les rendez illisibles grâce à une clef de chiffrement, et vous les déchiffrez, c’est-à-dire que vous les rendez lisibles à nouveau (avec une clef là aussi).
Pour générer ses clefs:
gpg2 --gen-key
Choisissez le 1 (RSA) pour le type de clef
GnuPG vous demande le type de clef que vous voulez, puis sa longueur. En général, les valeurs par défaut devraient convenir.
Vous devez ensuite choisir une date d’expiration pour la clef, choisissez jamais.
Entrez ensuite votre nom (sous la forme Prénom Nom). L’adresse mail et le commentaire sont facultatifs, vous pouvez les laisser vides (il est préférable de toujours donner une adresse mail). Il vous demandera plusieurs informations personnels, mais seul le nom est obligatoire.
Ensuite, vous devez choisir une phrase de passe afin de protéger votre clef. C’est un choix important.
Vous devez choisir une phrase à la fois difficile à trouver (pas de mots existants, de noms ou de dates de naissance), parce que à quoi bon utiliser Pgp si c’est pour y mettre une phrase de passe crackable en quelques minutes.
Notez cette phrase sur un papier (ou sur n’importe quoi qui sera facile à détruire complètement).
Lors de la génération de votre clef, de nombreux octets aléatoires doivent être générés.
Pour cela, taper au clavier, déplacer la souris ou encore utiliser vos disques.
Cette opération peut être longue mais la sécurité du chiffrage en dépend.
GnuPG génère alors votre clef privée, et la clef publique qui va avec.
Et voilà, nous avons enfin une paire de clefs.
pub 2048R/223D44A1 2015-04-18
Empreinte de la clef = CF58 9EC6 9A8E C633 DAFA 1C6D 9D93 24C6 223D 44A1
uid R***** **** <******@********.***>
sub 2048R/4E3BCB9B 2015-04-18
Notez l’identifiant de la clef (ici l’ID de la clef est 223D44A1), que vous retrouvez aussi à la fin de l’empreinte de la clef.
Lorsque vous voudrez utiliser votre paire de clefs, vous la désignerez par cet identifiant.
Si vous veniez à perdre votre phrase de passe, ou à ne plus avoir accès à votre clef pour n’importe quelle raison. il faudra révoquer la clef (la rendre inutilisable et sans valeur).
En prévision, on va générer un certificat de révocation.
Pour générer un certificat de révocation:
gpg2 --output revoke.asc --gen-revoke id_clef
Cette commande va générer un fichier « revoke.asc » qu’il faudra garder cacher, l’idéal serait de l’imprimer et de stocker le certificat dans un endroit sur.
Si vous deviez utiliser votre certificat de révocation, tapez:
gpg2 --import revoke.asc
Votre clé est maintenant révoquée.
Exporter sa clef publique
Pour chiffrer un message vous devez utiliser la clef publique de la personne qui est destinataire du message.
Pour donner sa clef publique il suffit d’utiliser cette commande:
gpg2 --output clef_public.asc --armor --export id_clef
Vous obtenez un fichier cle_public.asc qu’il faudra copier partout où il vous semble bon, votre page personnelle, ainsi que sur les serveurs de clefs (des sites comme Keyserver qui stockent des clefs publiques). Chacun pourra alors accéder à votre clef publique et l’utiliser.
Exporter sa clef privée
Pour faire une sauvegarde de sa clef privée:
gpg2 --export-secret-keys --armor ID_clef > clef_privee.asc
Importer une clef publique
Une fois que vous avez obtenu la clef publique de votre destinataire, vous devez l’ajouter à votre trousseau de clef:
gpg2 --import clef_public.asc
Vous pouvez maintenant utiliser cette clef publique autant que vous voulez sans avoir à l’importer à nouveau.
Pour supprimer une clef publique:
gpg2 --delete-keys ID_clef
Pour supprimer une clef privée:
gpg2 --delete-secret-keys ID_clef
Restauré sa clef privée
gpg2 --allow-secret-key-import --import clef_privee.asc
Pour lister les clef publiques que vous possédez:
gpg2 --list-key
Pour chiffrer un message au propriétaire de la clef:
gpg2 --recipient Id_clef_destinataire --encrypt message
Ue fichier message.gpg (ou autre si vous utilisez –output) contiendra le message chiffré avec la clef publique correspondant à l’ID du destinataire choisi, donc uniquement déchiffrable avec sa clef privée.
Pour lire un message chiffré avec votre clef publique:
gpg2 --decrypt message.gpg
Signer un message
Pour prouver qu’un message vient bien de vous, vous pouvez le signer, ce qui prouvera deux choses:
- le message vient de quelqu’un connaissant votre clef privée (normalement uniquement vous)
- le message n’a pas été modifié depuis que vous l’avez signé.
Pour signer et compresser un message:
gpg2 --sign message
Pour signer un message en le laissant lisible:
gpg2 --clearsign message
Pour signer un message avec une signature dans un fichier séparé (si le fichier ne doit pas être modifié):
gpg2 --detach-sign message
Pour vérifier la signature d’un message signé:
gpg2 --verify message.asc
Pour vérifier la signature d’un message compressé:
gpg2 --verify message.gpg
Pour vérifier la signature et lire message:
gpg2 --decrypt message.gpg
Pour une signature séparée:
gpg2 --verify signature.sig message
Il y a une exception, si le message signé s’appelle message et la signature message.sig, on peut se contenter d’écrire:
gpg2 --verify message.sig
Pour signer et chiffrer un message en même temps, il suffit de combiner les options:
gpg2 --recipient 'ID_clef_destinataire' --sign --encrypt message
Réseau de confiance
PGP permet aux possesseurs de clefs de signer les clefs des autres, c’est-à-dire de certifier qu’elles appartiennent bien à leur propriétaire. Les preuves suffisantes sont en gros d’avoir vu la personne avec une preuve de son identité, l’empreinte et la taille de sa clef.
Toutes les clefs devraient être signées par d’autres, elles-mêmes signées par d’autres, et ainsi de suite jusqu’à arriver à quelques personnes fiables comme Phil Zimmermann (l’inventeur de PGP), Linus Torvalds (le créateur de Linux) ou encore Richard Stallman (le fondateur de GNU).
Ce réseau reliant les clefs entre elles est appelé Web of Trust (Réseau de confiance).
Malheureusement, dans la pratique, celaa ne se passe pas vraiment comme prévu, trop peu de gens ont une clef PGP, et les existantes sont souvent peu signées.
Pour signer une clef publique (que vous avez importée):
gpg2 --edit-key ID_clef
puis taper « sign »:
gpg> sign
GnuPG vous demande ensuite une confirmation, puis votre phrase de passe.
Vous devez maintenant spécifier à quel point vous faites confiance à cette clef, pour cela taper « trust« :
gpg>trust
Pour quitter, taper « q »:
gpg>q
Pour utiliser Gpg dans Thunderbird, il y a l’extension Enigmail.
SInon il y a le service de messagerie Protonmail qui se différencie des autres services courriel (Gmail, Hotmail…) par le chiffrement des courriers avant qu’ils ne soient envoyés aux serveurs. Protonmail échappe également à la législation américaine et européenne en hébergeant ses serveurs en Suisse.