Dans un terminal, on lance gpg :
guyeux@guyeux-laptop:~$ gpg --gen-key gpg (GnuPG) 1.4.6; Copyright (C) 2006 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 ensuite le type de clé désiré:
(1) DSA et Elgamal (par défaut) (2) DSA (signature seule) (5) RSA (signature seule) Votre choix ?
Le choix par défaut pour le type de clé (DSA et Elgamal) est raisonnable.
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)
Fixez la taille de votre clé (2048 bits est suffisant). La prochaine étape consiste à fixer la durée de validité de la clé clé
La taille demandée est 2048 bits Spécifiez combien de temps cette clé devrait être valide. 0 = la clé n'expire pas <n> = la clé expire dans n jours <n>w = la clé expire dans n semaines <n>m = la clé expire dans n mois <n>y = la clé expire dans n années La clé est valide pour ? (0)
Fixez la durée de validité de votre clé, selon vos besoins.
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:
Tapez prénom et nom. Ils seront publiques, comme votre clé : ne mettez pas n'importe quoi !
Vient ensuite le courriel attaché à la clé. Vous pouvez alors ajouter un commentaire, puis...
Vous avez sélectionné ce nom d'utilisateur: "Christophe Guyeux <guyeux@gmail.com>" Changer le (N)om, le (C)ommentaire, l'(E)-mail ou (O)K/(Q)uitter ?
Vous avez alors besoin d'une phrase de passe pour protéger votre clé secrète.
gpg: gpg-agent n'est pas disponible dans cette session Entrez la phrase de passe:
Entrez alors votre phrase de passe, suffisamment compliquée. Deux fois (rien n'apparaît).
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.
Des symboles apparaissent pendant cette génération...
.+++++++++++++++.++++++++++++++++++++.++++++++++..+++++++++++++++++++
Pendant qu'il génère la clé, faites n'importe quoi : votre clé n'en sera que plus sûre.
Par exemple, ouvrez un autre terminal, et lancez une commande gourmande en CPU (comme find / -name toto).
On a alors généré nos clés...
gpg: clé 558D43BA 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/558D43BA 2007-12-10 Empreinte de la clé = EE03 AA67 E5FF 78D5 822C 7798 0EA0 9EBC 558D 43BA uid Christophe Guyeux <guyeux@gmail.com> sub 2048g/8C3B40DD 2007-12-10 guyeux@guyeux-laptop:~$
Nous avons généré deux clés.
On trouve aussi, dans le compte-rendu final, la taille de chaque clé, la date de création de ces clés, l'uid, ainsi que l'empreinte de la clé totale.
Ces clés sont enregistrées dans le répertoire par défaut qui est le répertoire /.gnupg/.
Lorsqu'on regarde à l'intérieur de ce répertoire, on remarque en effet qu'il y a en particulier deux fichiers, pubring et secring.
Les clés publique et secrète sont étroitement liées. L'une sert à défaire ce que l'autre a fait :
On se rend compte que la clé secrète est une des clés de voûte du système : si quelqu'un d'autre a accès à notre clé secrète, il pourra envoyer des messages en se faisant passer pour nous, ou bien il pourra lire des message chiffrés à notre intention.
Pour améliorer encore plus la sécurité, les programmes demanderont la phrase de passe pour pouvoir utiliser la clé secrète (la clé secrète est chiffrée avec la passphrase).
Ainsi, en plus de la clé secrète, il faut connaître la passphrase pour pouvoir utiliser les fonctionnalités de GnuPG.
Avant d'aller plus loin, il est préférable de créer des certificats de révocation.
En effet, il se peut que, pour différentes raisons, notre clé ne soit plus sûre, perdue, ou tout simplement périmée.
Afin de pouvoir dire au reste du monde que cette clé est périmée, on peut utiliser un certificat, créé auparavant, que l'on publiera pour informer nos correspondants.
Pour ce faire, la commande suivante suffit :
gpg --gen-revoke monId
monId, comme on le retrouvera par la suite, est une chaîne de caractères propre à la clé à révoquer : nom, adresse mail, etc.
Soyons clair : cette commande ne révoque pas votre clé, elle établit juste un certificat, qui vous sera utile le jour où vous souhaiterez révoquer cette clé.
Il est conseillé de générer un certificat pour les trois types de révocation, afin d'être prêt dans tous les cas de figure. Une fois ces certificats générés, il faut les garder dans plusieurs endroits sûrs : il ne faut pas que n'importe qui puisse révoquer notre clé !
Voici un exemple complet de génération d'un certificat de révocation, dans lequel la phrase de passe m'a été posée :
guyeux@coriace:~$ gpg --gen-revoke Guyeux sec 1024D/B52FF09E 2009-01-30 Christophe Guyeux (Clé du boulot) <christophe.guyeux@univ-fcomte.fr> Générer un certificat de révocation pour cette clé ? (o/N) o choisissez la cause de la révocation: 0 = Aucune raison spécifiée 1 = La clé a été compromise 2 = La clé a été remplacée 3 = La clé n'est plus utilisée Q = Annuler (Vous devriez sûrement sélectionner 1 ici) Votre décision ? 3 Entrez une description optionnelle ; terminez-là par une ligne vide: > Cause de révocation: La clé n'est plus utilisée (Aucune description donnée) Est-ce d'accord ? (o/N) o Vous avez besoin d'une phrase de passe pour déverrouiller la
clé secrète pour l'utilisateur: « Christophe Guyeux (Clé du boulot) <christophe.guyeux@univ-fcomte.fr> »
clé de 1024 bits DSA, ID B52FF09E, créée le 2009-01-30 sortie avec armure ASCII forcée. Certificat de révocation créé. Déplacez-le dans un support que vous pouvez cacher ; si Mallory a accès à ce certificat il peut l'utiliser pour rendre votre clé inutilisable. Une bonne idée consiste à imprimer ce certificat puis à le stocker ailleurs, au cas où le support devient illisible. Mais attention : le système d'impression de votre machine pourrait stocker ces données et les rendre accessibles à d'autres personnes ! -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: A revocation certificate should follow bdslkmkmkfqkfmlqskfmqskfmlkqsmgkmdlgkmsdfg gqgkfqdmkg gqlkglqsd -----END PGP PUBLIC KEY BLOCK-----
Le certificat (qui n'est pas le mien :)) est ce qui est à la fin du document (entre le BEGIN et le END). Il est à conserver.
Une fois les clés et les certificats créés, l'initialisation du processus est faite. On peut se mettre à l'utiliser dans la vie de tous les jours.
Pour signer un fichier, il faut taper :
gpg --default-key votre-clef --armor --detach-sign fichier
Cela créera un fichier portant le même nom que celui à signer avec une extension *.asc
Ensuite il vous suffira d'envoyer votre fichier avec lequel vous allez joindre le fichier *.asc
Pour vérifier que le fichier est certifié authentique, il suffit de taper (si bien sûr vous avez la clef publique de votre correspondant) :
gpg --verify fichier.asc fichier
Vous pouvez intégrer dans le fichier même la signature électronique.
Pour cela :
gpg --default-key votre-clef --clearsign fichier
La signature se trouvera à l'intérieur du fichier.
Vous le remarquerez rapidement, votre texte sera entouré des balises GPG avec le morceau de la signature.
Pour vérifier l'authenticité :
gpg --verify le-fichier-signé
Pour chiffrer :
gpg --recipient clef-du-recepteur --armor --encrypt fichier
Vous aurez un fichier *.asc (ascii), qui est lisible par un éditeur de textes, mais bien sûr incompréhensible.
Vous pouvez faire un copier coller du fichier dans votre courriel, etc.
sans --armor, on obtient un fichier binaire (.gpg), plus légère, mais moins souple d'utilisation.
Seule la personne possédant la clef indiquée dans la commande pourra déchiffrer :
gpg --decrypt fichier > fichier
Tout simplement, il demandera le mot de passe de l'utilisateur et transformera le fichier.gpg en fichier lisible.
Autre moyen de chiffrer / déchiffrer: le chiffrement symétrique.
C'est-à-dire qui n'utilise pas le système de clefs publique/privée.
On vous demande un mot de passe que votre interlocuteur doit connaître.
Pour chiffrer :
gpg -c fichier
Pour déchiffrer :
gpg -d fichier.gpg -o fichier
Rappelons que la meilleure façon de donner un mot de passe à quelqu'un, c'est par un contact SOCIAL !