Utilisation basique de GnuPG pour crypter et décrypter des fichiers

GnuPG (ou GPG) est un logiciel de cryptographie complet qui implémente la norme OpenPGP. Les possibilités de GnuPG dépassent largement le cadre de ce billet, ceux qui veulent approfondir le sujet se réjouiront de la doc officielle.

GnuPG est préinstallé sous Debian et Ubuntu ainsi qu’avec la majorité des distributions Linux je crois. Le projet Gpg4win fournit un programme d’installation pour Windows qui inclus GnuPG et différents modules complémentaires. Les commandes de gpg sont les mêmes dans les différents environnements. GnuPG est avant tout un logiciel de cryptage asymétrique (clé publique – clé privée) et son domaine de prédilection est la transmission sécurisée d’information entre utilisateurs. Mais on peut aussi s’en servir pour faire du cryptage simple, c’est ce qu’on va voir ici.

Le problème à résoudre est le suivant :

Un utilisateur gère sur son poste de travail des informations confidentielles. L’accès au poste de travail étant protégé, on estime la sécurité suffisante sur le poste (ça pourrait se discuter mais c’est pas le sujet). Par contre les sauvegardes sont effectuées sur un serveur dont l’accès est public. On ne peut donc pas y sauvegarder les données confidentielles en l’état.

La solution va être de crypter les données avant de les sauvegarder, voilà comment :

Génération d’un paire de clés :

gpg --gen-key
gpg (GnuPG) 1.4.7; 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.
Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n>  = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? 0
Key does not expire at all
Is this correct? (y/N) y
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: Michel
Email address: michel@martin.com
Comment:
You selected this USER-ID:
"Michel <michel@martin.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
+++++++++++++++.+++++.+++++.+++++.+++++..+++++.+++++++++++++++++++++++++..++++++
+++>++++++++++>+++++>..+++++....................................................
.............................................+++++^^^
gpg: key 62757D49 marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 2u
pub   1024D/62757D49 2007-11-12
Key fingerprint = 9B05 2259 683C 70CC D73C  3E47 816C 06FE 6275 7D49
uid                  Michel <michel@martin.com>
sub   2048g/5589D5F6 2007-11-12

Ca y est on a notre paire de clés. Attention à ne pas oublier la « passphrase », il n’y a aucun moyen de la récupérer. Elle n’est pas nécessaire pour crypter, mais sera demandée au décryptage. On peut mettre une passphrase vide, mais la sécurité est moindre.

L’étape suivante est de sauvegarder la clé privée, et la conserver en lieu sûr!!! :

gpg --export-secret-keys -a michel > michel.sec

Crypter le fichier confidentiel.doc :

gpg gpg -e -r Michel confidentiel.doc

Cette commande crée le fichier crypté confidentiel.doc.gpg qui peut être stocké sans crainte sur des serveurs publics, tant que la clé privée n’est pas compromise.

Pour décrypter sur le poste qui contient les clés (la passphrase est demandée) :

gpg confidentiel.doc.gpg

Pour décrypter sur un autre poste il faut d’abord importer la clé privée :

gpg --import michel.sec

Voilà, c’est juste un aperçu rapide d’une application pratique du cryptage avec gpg.

No votes yet.
Please wait...

Laisser une réponse