178 lines
8.9 KiB
Markdown
178 lines
8.9 KiB
Markdown
|
Title: La cryptographie avec PGP et principalement GnuPG
|
|||
|
Date: 2012-11-19 00:36
|
|||
|
Author: Wxcafe
|
|||
|
Category: Tutoriel
|
|||
|
Slug: la-cryptographie-avec-pgp-et-principalement-gnupg
|
|||
|
|
|||
|
PGP (pour [pretty good privacy][]) est un système de
|
|||
|
chiffrement asymétrique (pour plus d'information sur le chiffrement
|
|||
|
asymétrique, voir [ici][]) utilisant en général les algorithmes RSA
|
|||
|
et/ou DSA, et pouvant servir a chiffrer tout fichier, mais aussi a
|
|||
|
signer des emails. Le système de signature consiste a s'identifier en
|
|||
|
tant que la personne que l'on est, en certifiant de son identité, et
|
|||
|
repose sur un système dit de *Web of Trust*.
|
|||
|
|
|||
|
Ce concept de Web of Trust est simple: si je valide le code vous
|
|||
|
identifiant (votre clé), en certifiant que vous êtes qui vous êtes et
|
|||
|
que je vous connais, et que d'autres personnes m'ont déjà
|
|||
|
personnellement validé, les autres utilisateurs seront enclins a croire
|
|||
|
que vous êtes en effet la personne que vous prétendez être. Bien
|
|||
|
entendu, les utilisateurs validant trop de clés rapportées comme fausses
|
|||
|
voient la valeur de leurs signatures baissée, et toutes les clés signées
|
|||
|
par ces utilisateurs voient leur crédibilité baisser.
|
|||
|
Inversement, les "bons utilisateurs" voient la valeur de leurs
|
|||
|
signatures augmentée, ce qui augmente la crédibilité des clés qu'ils ont
|
|||
|
signées.
|
|||
|
|
|||
|
Ceci dit, un email peut être a la fois signé et chiffré, de façon a être
|
|||
|
sûr, non seulement que l’expéditeur de l'email est bien celui qu'il dit
|
|||
|
être, mais aussi que l'email n'a pas été modifié entre l'envoi et
|
|||
|
la réception (en effet, avec un chiffrement de type RSA/DSA, une
|
|||
|
modification du corps de l'email rend ce dernier illisible, la clé
|
|||
|
publique ne correspondant plus a la phrase de passe du message), ce qui
|
|||
|
offre bien évidemment des avantages non négligeables dans un
|
|||
|
environnement ou la protection des échanges est importante (soit a peu
|
|||
|
près partout sur internet, si vous tenez a votre vie privée. Pensez a
|
|||
|
[quitter Gmail][] aussi, par exemple).
|
|||
|
|
|||
|
Il est cependant a noter que les clés publiques sont généralement
|
|||
|
situées sur un serveur de clés publiques, tel pgp.mit.edu ou encore
|
|||
|
subkeys.pgp.net (certaines personnes préfèrent garder leur clés hors des
|
|||
|
serveurs de clés publiques, craignant une compromission de ces serveurs.
|
|||
|
Dans le cas d'utilisateurs normaux (c'est a dire n'échangeant pas de
|
|||
|
secrets classés secret-défense par email), la protection offerte par les
|
|||
|
serveurs de clé publiques est suffisante)
|
|||
|
|
|||
|
L'une des implémentations les plus connues et utilisées de PGP est sans
|
|||
|
conteste GPG ([GNU Privacy Guard][]) , qui comme son nom l'indique fait
|
|||
|
partie du projet GNU, et qui (`<troll>` de façon surprenante pour un
|
|||
|
programme GNU`</troll>`) est extrêmement efficace et claire.
|
|||
|
|
|||
|
Après ces explications techniques, voici venue le
|
|||
|
moment intéressant/utile, a savoir l'application. Le chiffrement et la
|
|||
|
signature de mails doivent cependant attendre un petit peu, étant donné
|
|||
|
qu'il vous faut d'abord créer votre clé et la placer sur un serveur de
|
|||
|
clés publiques, de façon à ce que votre destinataire puisse vous
|
|||
|
identifier lorsqu'il recevra le mail, mais aussi a configurer votre
|
|||
|
client mail pour utiliser gpg (je baserai les explications de cet
|
|||
|
article sur Thunderbird, mais des explications efficaces sont trouvables
|
|||
|
facilement sur les interwebs).
|
|||
|
|
|||
|
Tout d'abord, générons une clé GPG :
|
|||
|
|
|||
|
gpg --gen-key
|
|||
|
|
|||
|
GPG va vous demander les méthodes de chiffrement que vous voulez
|
|||
|
utiliser, le plus sur est de laisser la valeur par défaut. La question
|
|||
|
suivante est de savoir quelle taille votre clé doit faire, il est
|
|||
|
préférable de choisir la taille la plus importante possible (4096). GPG
|
|||
|
veut ensuite savoir quand votre clé doit expirer. La méthode simple est
|
|||
|
bien évidemment de ne jamais la faire expirer, il est cependant plus
|
|||
|
intéressant dans une logique de sécurité de régler cette durée a six
|
|||
|
mois/un an.
|
|||
|
|
|||
|
Des informations personnelles vous sont ensuite demandées,
|
|||
|
concernant votre nom (mettez le vrai, tel qu'il apparaît sur votre carte
|
|||
|
d'identité, si vous souhaitez utiliser votre véritable identité), votre
|
|||
|
adresse mail (mettez la plus utilisée, vous pourrez en rajouter plus
|
|||
|
tard), et un mot de passe pour la clé (utilisez un mot de passe
|
|||
|
sécurisé!! Il est conseillé d'utiliser au moins 8 caractères, dont majuscules,
|
|||
|
minuscules, caractères spéciaux et nombres (vous pouvez utiliser la
|
|||
|
commande `makepasswd`, qui génère automatiquement un mot de
|
|||
|
passe)
|
|||
|
|
|||
|
GPG va maintenant prendre un peu de temps pour générer le couple clé
|
|||
|
publique/clé privée, vous devriez profiter de ce temps pour effectuer
|
|||
|
des opérations autres sur votre ordinateur : taper des textes, lancer
|
|||
|
des films, écouter de la musique... De façon à augmenter les chances
|
|||
|
d'obtenir un nombre bien aléatoire (le générateur d'aléatoire se base
|
|||
|
sur la RAM pour obtenir des bits au hasard)
|
|||
|
|
|||
|
Une fois cela fini, vous obtenez un couple clé publique/clé privée, que
|
|||
|
vous ne pouvez pas visualiser entièrement pour l'instant. Il est
|
|||
|
cependant possible (et recommandé) de les exporter pour les sauvegarder
|
|||
|
via une commande:
|
|||
|
|
|||
|
gpg --armor --export --output=pubkey.gpg
|
|||
|
|
|||
|
pour la clé publique, et
|
|||
|
|
|||
|
gpg --armor --export-secret-keys --output=seckey.gpg
|
|||
|
|
|||
|
pour la clé privée. Il est possible et même souhaitable de copier ces
|
|||
|
clés sur une clé USB, une carte SD, ou un autre support de stockage
|
|||
|
résistant, de façon a avoir une solution de sauvegarde, au cas ou vous
|
|||
|
perdiez ces clés sur ce PC.
|
|||
|
|
|||
|
Cela fait, listons les informations sur votre clé publique :
|
|||
|
|
|||
|
$ gpg --list-keys --fingerprint
|
|||
|
pub 4096R/27D81AC8 2012-11-17
|
|||
|
Key fingerprint = 6345 A91A FF89 97E0 13D0 96A9 9E2A 1917 27D8 1AC8
|
|||
|
uid Clément Hertling (Wxcafe)
|
|||
|
uid [jpeg image of size 14692]
|
|||
|
sub 4096R/9ED7F77F 2012-11-17
|
|||
|
|
|||
|
La partie `pub` indique que c'est une clé publique, `4096R` indique que c'est
|
|||
|
une clé RSA sur 4096 bits. La partie `27D81AC8` est
|
|||
|
l'identifiant de la clé publique, `Key fingerprint = 6345 A91A FF89 97E0 13D0
|
|||
|
96A9 9E2A 1917 27D8 1AC8` est appelé fingerprint de la clé. Les champs
|
|||
|
`uid` sont des manières d'identifier la clé et la personne associée a
|
|||
|
celle-ci, et enfin le champ `sub` est indicateur d'une subkey, système
|
|||
|
uniquement pris en charge par GPG et non inclus dans les premières
|
|||
|
versions de PGP, donc non-implémentées dans nombre de clients pgp.
|
|||
|
Passons maintenant a la mise en place de cette clé publique sur un
|
|||
|
serveur de clés : nous utiliserons ici le serveur pgp.mit.edu.
|
|||
|
|
|||
|
gpg --keyserver pgp.mit.edu --send-keys *ID de la clé a uploader*
|
|||
|
|
|||
|
Maintenant que votre clé publique a été uploadée, vous pouvez l'utiliser
|
|||
|
pour signer et chiffrer vos emails!
|
|||
|
Installons donc l'extension Enigmail pour Thunderbird, permettant de
|
|||
|
chiffrer/signer vos emails de façon transparente. Il conviendra de
|
|||
|
paramétrer cette extension, via le menu OpenPGP dans Thunderbird, puis
|
|||
|
Setup Wizard (l'option entre Help et About OpenPGP). Normalement,
|
|||
|
Enigmail détecte votre installation de gpg automatiquement, si cependant
|
|||
|
ce n'était pas le cas, vous pouvez utiliser la clé exportée tout a
|
|||
|
l'heure (pubkey.gpg) en l'important (import key from file).
|
|||
|
|
|||
|
Selon les options que vous avez utilisées, vos emails seront
|
|||
|
automatiquement signés et/ou chiffrés a l'envoi. Gardez cependant a
|
|||
|
l'esprit que si tout le monde peut lire les mails signés, il n'en est
|
|||
|
pas de même pour les mails chiffrés, pour lesquels il est nécessaire de
|
|||
|
posséder la clé publique du correspondant en question, et de posséder
|
|||
|
soi même une clé privée, donc d'utiliser OpenPGP aussi.
|
|||
|
Concernant les signatures de clés, elles fonctionnent de manière très
|
|||
|
simple :
|
|||
|
Vous devez télécharger la clé de votre correspondant, via un
|
|||
|
|
|||
|
gpg --keyserver pgp.mit.edu --search-keys *ID de la clé de votre correspondant*
|
|||
|
|
|||
|
(a noter que cette commande fonctionne aussi en cherchant une adresse
|
|||
|
email ou un nom. Cependant, en cherchant via l'identifiant de la clé,
|
|||
|
vous êtes sur de trouver votre correspondant. Globalement, l'email est
|
|||
|
lui aussi assez sûr en terme de recherche de clés, tandis que le nom
|
|||
|
donne rarement un résultat). L'étape suivante est de vérifier que votre
|
|||
|
correspondant est bien la personne qui est spécifiée sur sa clé. Pour
|
|||
|
cela, il convient d'avoir déjà vu physiquement cette personne et si
|
|||
|
possible d'avoir vu une pièce d'identité lui appartenant, et d'avoir une
|
|||
|
confirmation de cette personne que la clé que vous voyez lui appartient
|
|||
|
bien.
|
|||
|
Ceci fait, vous pouvez signer la clé via un
|
|||
|
|
|||
|
gpg --sign *ID de la clé a signer*
|
|||
|
|
|||
|
puis la renvoyer au serveur via
|
|||
|
|
|||
|
gpg --keyserver pgp.mit.edu --send-key *ID de la clé a signer*
|
|||
|
|
|||
|
Voila, la clé de votre correspondant est signée!
|
|||
|
|
|||
|
Ce tutoriel sur PGP/GPG est terminé, et votre sécurité est améliorée
|
|||
|
grâce a cette superbe invention qu'est la cryptographie!
|
|||
|
|
|||
|
[pretty good privacy]: http://fr.wikipedia.org/wiki/Pretty_Good_Privacy
|
|||
|
[ici]: http://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique
|
|||
|
[quitter Gmail]: http://www.hauteresolution.net/pourquoi-je-vais-quitter-gmail/
|
|||
|
[GNU Privacy Guard]: http://fr.wikipedia.org/wiki/GNU_Privacy_Guard
|