Présentation de GnuPG

PGP est le nom d’un programme de chiffrement créé en 1991 par Philip Zimmerman. Depuis lors, PGP est devenu le modèle dominant pour les logiciels de chiffrement personnels.

En juillet 1998, PGP Inc. a proposé un standard OpenPGP à l’IETF. Ce standard était voué à créer un cadre pour la création de logiciels de chiffrement personnels, et le terme OpenPGP pourrait alors être appliqué à tout logiciel qui serait conforme au standard. l’IETF a accepté la proposition, et formé le OpenPGP Working Group pour développer le standard.

La RFC 2440 décrit la spécification actuelle de OpenPGP; le succeseur est RFC 4880 et est devenu le standard OpenPGP proposé.

L’implémentation Open source la plus populaire de la spécification OpenPGP est GnuPG.  Elle est disponible pour les systèmes Linux, les systèmes Open Source UNIX systems tels que les OSes BSD UNIX , et la plupart des UNIX commerciaux modernes. GnuPG (aussi souvent appelé simpement GPG) a même été porté sous Mac OS X et Microsoft Windows.

Installation de GnuPG

root@srv1:~# apt-get install gnupg
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Paquets suggérés :
 gnupg-doc libpcsclite1 parcimonie xloadimage imagemagick eog
Paquets recommandés :
 gnupg-curl
Les paquets suivants seront mis à jour :
 gnupg
1 mis à jour, 0 nouvellement installés, 0 à enlever et 97 non mis à jour.
Il est nécessaire de prendre 1 149 ko dans les archives.
Après cette opération, 333 ko d'espace disque seront libérés.
Réception de : 1 http://debian.mirrors.ovh.net/debian/ jessie/main gnupg amd64 1.4.18-7+deb8u3 [1 149 kB]
1 149 ko réceptionnés en 0s (5 763 ko/s)
(Lecture de la base de données... 36411 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../gnupg_1.4.18-7+deb8u3_amd64.deb ...
Dépaquetage de gnupg (1.4.18-7+deb8u3) sur (1.4.18-7) ...
Traitement des actions différées (« triggers ») pour man-db (2.7.0.2-5) ...
Paramétrage de gnupg (1.4.18-7+deb8u3) ...
root@srv1:~#

Générer une clé privée

root@srv1:~# gpg --gen-key
gpg (GnuPG) 1.4.18; Copyright (C) 2014 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Sélectionnez le type de clef désiré :
 (1) RSA et RSA (par défaut)
 (2) DSA et Elgamal
 (3) DSA (signature seule)
 (4) RSA (signature seule)
Quel est votre choix ? 1
les clefs RSA peuvent faire une taille comprise entre 1024 et 4096 bits.
Quelle taille de clef désirez-vous ? (2048)
La taille demandée est 2048 bits
Veuillez indiquer le temps pendant lequel cette clef devrait être valable.
 0 = la clef n'expire pas
 <n> = la clef expire dans n jours
 <n>w = la clef expire dans n semaines
 <n>m = la clef expire dans n mois
 <n>y = la clef expire dans n ans
Pendant combien de temps la clef est-elle valable ? (0)
La clef n'expire pas du tout
Est-ce correct ? (o/N) o

Une identité est nécessaire à la clef ; le programme la construit à partir
du nom réel, d'un commentaire et d'une adresse électronique de cette façon :
 « Heinrich Heine (le poète) <heinrichh@duesseldorf.de> »

Nom réel : JF Rullier
Adresse électronique : jf.rullier@activpart.com
Commentaire : ACTIVPART
Vous avez sélectionné cette identité :
 « JF Rullier (ACTIVPART) <jf.rullier@activpart.com> »

Faut-il modifier le (N)om, le (C)ommentaire, l'(A)dresse électronique
ou (O)ui/(Q)uitter ? O
Une phrase secrète est nécessaire pour protéger votre clef secrète.

De nombreux octets aléatoires doivent être générés. 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'obtenir suffisamment d'entropie.


...

Il n'y a pas suffisamment d'octets aléatoires disponibles. Veuillez faire
autre chose pour que le système d'exploitation puisse rassembler plus
d'entropie (128 octets supplémentaires sont nécessaires).
fdgqdgfdsgdglkùkdslghùskdglkmhmFSkghkSFlkhfsùjgkF%Jmfsj
shfhgfùlkjyjztlhùjn,!zedfrh,sdmhùkmrtlmhkzrt

.....+++++
gpg: /root/.gnupg/trustdb.gpg : base de confiance créée
gpg: clef B6ED6A32 marquée de confiance ultime.
les clefs publique et secrète ont été créées et signées.

gpg: vérification de la base de confiance
gpg: 3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s),
 modèle de confiance PGP
gpg: profondeur : 0 valables : 1 signées : 0
 confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u.
pub 2048R/B6ED6A32 2017-02-28
 Empreinte de la clef = 6063 95C8 FFBE 0A89 0AD0 BEED 3C2B 93A8 B6ED 6A32
uid JF Rullier (ACTIVPART) <jf.rullier@activpart.com>
sub 2048R/2A5D9300 2017-02-28

root@srv1:~#

Pour lister les clés publiques existantes dans notre trousseau:

root@srv1:~# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub 2048R/B6ED6A32 2017-02-28
uid JF Rullier (ACTIVPART) <jf.rullier@activpart.com>
sub 2048R/2A5D9300 2017-02-28

pub 1024D/CD2EFD2A 2009-12-15
uid Percona MySQL Development Team <mysql-dev@percona.com>
sub 2048g/2D607DAF 2009-12-15

root@srv1:~#

Générer un certificat de révocation

Ceci crée un « certificat de révocation », qui est destiné à être publié pour notifier les utilisateurs de votre clé publique qu’elle a été révoquée, si votre passphrase ou votre clé privée a été compromise par un pirate.

root@srv1:~# gpg --output revoke.asc --gen-revoke 'JF Rullier'

sec 2048R/B6ED6A32 2017-02-28 JF Rullier (ACTIVPART) <jf.rullier@activpart.com>

Faut-il créer un certificat de révocation pour cette clef ? (o/N) o
choisissez la cause de la révocation :
 0 = Aucune raison indiquée
 1 = La clef a été compromise
 2 = La clef a été remplacée
 3 = La clef n'est plus utilisée
 Q = Annuler
(Vous devriez sûrement sélectionner 1 ici)
Quelle est votre décision ?
Entrez une description facultative, en terminant par une ligne vide :
> Révocation clé JF Rullier
>
Cause de révocation : La clef a été compromise
Révocation clé JF Rullier
Est-ce d'accord ? (o/N) o

Une phrase secrète est nécessaire pour déverrouiller la clef secrète de
l'utilisateur : « JF Rullier (ACTIVPART) <jf.rullier@activpart.com> »
clef RSA de 2048 bits, identifiant B6ED6A32, créée le 2017-02-28

sortie forcée avec armure ASCII.
Certificat de révocation créé.

Veuillez le déplacer sur un support que vous pouvez cacher ; toute personne
accédant à ce certificat peut l'utiliser pour rendre votre clef inutilisable.
Imprimer ce certificat et le stocker ailleurs est une bonne idée, au cas où le
support devienne illisible. Attention quand même : le système d'impression
utilisé pourrait stocker ces données et les rendre accessibles à d'autres.
root@srv1:~#

Générer une clé publique

Ceci produit un fichier plein texte appelé « pubkey.txt » qui va contenir votre clé publique, dans lequel le nom est celui que vous avez utilisé pour générer la clé:

root@srv1:~# gpg --armor --output pubkey.txt --export 'JF Rullier'
root@srv1:~#

Le fichier obtenu se présente ainsi:

root@srv1:~# cat pubkey.txt
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQENBFi1hUQBCADRgIFq31Z1R8viV0vO0/j0UJDiSlUqvStI3pTZ+rOl8TcVXyea
q3eZgpEuo+yOao5v/lTAHx0nWF2RfrsM9tTwQkZtLJ/ZU1PgubjJOptOb93+jBGA
AUilYHIsrZh/2DSQ5cIrpHXw1ipDiBM0FivTzAsFw7ZX1pyhFJXsJPTGTSMAHUas
NDRlwXf1UwORHVl0MGuaCkvfnomryt3V4lCOTM5YwuLitoPxO++XZm2rlnz09J4x
3gDtKvgaJ5Bogf9skLDrNiE9rTsTQJQy2m1vqA7Z9FOk8iUZDsxj4wjXOOR7MYwc
tAnmf0jrHSopTNNxXtB91xoX4GxWH/IiiKSLABEBAAG0MUpGIFJ1bGxpZXIgKEFD
VElWUEFSVCkgPGpmLnJ1bGxpZXJAYWN0aXZwYXJ0LmNvbT6JATgEEwECACIFAli1
hUQCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEDwrk6i27WoyRikH/18m
dN1I3DSvp9uygE7CzqZDOIzTsDjSbRnTIxtn76dixCrQaZ8tUOiZ2KI0PgnPuY56
mpgRXX6v9XeZDoDVMjPJtQKDHlE0+mhZ+0qNgPW14LwOoklet0cKTQUn6Ql/acO3
csHuSF/+iJJE5Y5k7SM15GBfcX1C44oyYjb53uLBq8jTP8o+2vBTbLwaJxpqV8W3
zKbtYgEvjInoUZzsOj9y2XE/jj9KOuqdSdjV0KSby9tlf/lrrfQVqEr+bJsMM2im
IFGN2nbvtboej32oGxTKD+6o//BjCcTTzgVHWjQC6tOG73W1pct/XTWEapxIaCT8
05XWzCesgH/bR57YMK25AQ0EWLWFRAEIAL+mwn1JwQWtR61/JUJcJfP0FjmxgQzu
Tw43zx4MZ8LWeEfp8Qdz8x+j5XsXc3KsuDtlyzvCeuEWwfGOEY56XMARR02FnMRV
Gu2C5I4Rl5UkT8XGB/BVPfNA87OapLdihhLfNLv5O0d3tDVCaKw+0L6/6b8403yK
XzAdUVlQnQu7h8EMa+jRJMYX/PJu6zfBDbZFXNUGqSk/Rwb7YReIKq5q4cdoJ18+
5sZDo/I5zbA3dMsRiKqMQLycVa+yy97adDGODDrkHn/dAhMK5Nqo+NqEFPOwC7H4
Bse1iCkW6ZqL2jK51aNFIfUh774RcTU5kJkRQikpz7cw4xSjadE7iQEAEQEAAYkB
HwQYAQIACQUCWLWFRAIbDAAKCRA8K5Ootu1qMkB8CADQz0eMk4iB6U9KQnmhZ5LM
bkhupqugnYqN/7NWdkMw9mcZYXO97JRWCAWXrJpm5Ok00sbrUWp9MSAvfc+dgrMN
uzxkeUOgZkvYGHYLOyobQ79cgQYVpvFyuRf36vdloPC7hnPirT6O/s/twT63Igct
MS8qJtfwCsPR2Ju0AcBcpg87lMh7yRHs5qKs/jJkAnVNL293QophAzFPhrSChYLT
6oJtOOCeOJfDJ3IDmIM+uE7x6ibq79gy7IR/+IJz7L5YByJxgOq6khRpc+1BosD/
g16eB2WTvcR0h+z1fAlIyDWt4uyGAoe8b7uSIYuMFdTfMgv25VG41mNSp15GAzqB
=yRcF
-----END PGP PUBLIC KEY BLOCK-----
root@srv1:~#

Enregistrer la clé publique

Ceci uploade votre clé publique sur un keyserver sur le domaine PGP de corporation fedoraproject.org de telle manière que les autres puissent chercher sur une localisation centrale votre clé publique:

root@srv1:~# gpg --keyserver keys.fedoraproject.org --send-keys 'B6ED6A32' --send-keys 'B6ED6A32'
gpg: « --send-keys » n'est pas un identifiant de clef : ignoré
gpg: envoi de la clef B6ED6A32 au serveur hkp keys.fedoraproject.org
gpg: envoi de la clef B6ED6A32 au serveur hkp keys.fedoraproject.org
root@srv1:~#

Importer une clé directement

En assumant que vous possédiez un fichier texte plein nommé « pubkey.txt » avec la clé publique de quelqu’un à qui vous envisager d’envoyer des fichiers chiffrés, voici comment vous pouvez importer la clé publique contenue dans ce fichier dans votre trousseau de clés GPG:

root@srv1:~# gpg --import pubkey.txt 

Importer ue clé depuis un Keyserver

Cette commande récupère une clé publique depuis le serveur fedoraproject.org, en utilisant l’adresse Email du propriétaire pour l’identifier:

root@srv1:~# gpg --keyserver hkp://keys.fedoraproject.org --recv-keys 'B6ED6A32'
gpg: demande de la clef B6ED6A32 sur le serveur hkp keys.fedoraproject.org
gpg: clef B6ED6A32 : « JF Rullier (ACTIVPART) <jf.rullier@activpart.com> » n'est pas modifiée
gpg: Quantité totale traitée : 1
gpg: non modifiées : 1
root@srv1:~#

Chiffrer un fichier

Pour chiffrer un fichier lorsque vous avez la clé publique du destinataire dans votre trousseau, vous pouvez utiliser cette commande, où ID est remplacé par l’ID de cette clé et filename.txt est remplacé par le nom du fichier que vous voulez chiffrer:

$ gpg --encrypt --recipient ID filename.ext

La version courte de cette commande est:

$ gpg -e -r ID filename.ext

Ex:
root@srv1:~# gpg –encrypt –recipient ‘B6ED6A32’ goods.sql
root@srv1:~#

Un fichier est créé avec le même nom, plus une extension .gpg:

root@srv1:~# ls -l goods.sql*
-rw-r--r-- 1 root root 41266 oct. 1 2015 goods.sql
-rw-r--r-- 1 root root 8533 févr. 28 16:54 goods.sql.gpg
root@srv1:~#

Remarque: Si vous voulez chiffrer un fichier telle sorte que seiul vous puissiez le lire, vous pouvez utiliser votre propre ID comme destinataire.

Déchiffrer un fichier

Déchiffrer un fichier est simple:

$ gpg --output filename.ext --decrypt filename.ext.gpg

Exemple:

root@srv1:~# gpg --output goods.clair --decrypt goods.sql.gpg

Une phrase secrète est nécessaire pour déverrouiller la clef secrète de
l'utilisateur : « JF Rullier (ACTIVPART) <jf.rullier@activpart.com> »
clef RSA de 2048 bits, identifiant 2A5D9300, créée le 2017-02-28 (identifiant de clef principale B6ED6A32)

gpg: chiffré avec une clef RSA de 2048 bits, identifiant 2A5D9300, créée le 2017-02-28
 « JF Rullier (ACTIVPART) <jf.rullier@activpart.com> »
root@srv1:~#

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Blue Captcha Image
Refresh

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.