Vous êtes sur la page 1sur 6

Univérsité Cadi Ayyad.

Faculté des Sciences Semlalia.


Département d’Informatique.

Sécurité Informatique.

Cryptage de données avec GnuPG

Présentation

Les échanges d'information ne sont pas sûrs. En particulier, le courrier électronique


(émail) peut être lu par des tierces personnes, et on n'est jamais sûr de la provenance réelle
d'un émail.
Il est possible d'utiliser des procédés cryptographiques. En particulier, il existe des méthodes à
clés asymétriques, permettant soit de signer (authentifier) un texte, soit de le chiffrer (le
rendre illisible au monde entier).
GnuPG est une des implémentations utilisant un tel système. Il a l'énorme avantage en
comparaison avec son équivalent propriétaire PGP d'être un logiciel libre et de reposer sur la
norme OpenPGP. De plus, le créateur de PGP, Philip Zimmermann, a rejoint récemment le
groupe OpenPGP.
Cet atelier va présenter l'utilisation de GnuPG, ainsi que toute la philosophie qui tourne autour
du système de chiffrement à clé publique.

Partie 0 : préliminaires
- Pour commencer le TP, redémarrez votre machine sous Linux et identifiez vous.
Dans un terminal, vérifiez que le logiciel est bien installé avec la commande \
$ gpg --version

- Installez l'extension Firefox \FireGPG" depuis http://getfiregpg.org/ pour pouvoir utiliser


facilement GPG _a partir de Firefox. (_A partir du webmail par exemple...)
Je vous conseille cependant d'utiliser l'interface en ligne de commandes dans un premier
temps.

Partie 1 : GPG et la cryptographie symétrique


Vous pouvez utiliser GPG pour faire une cryptographie symétrique (si vous partagez une clé
avec votre destinataire) avec la commande :
$ gpg --symmetric fichier
ceci créera un fichier binaire fichier.gpg contenant le fichier chiffré.

gpg --symmetric --armour fichier


ceci créera un _chier ASCII fichier.asc contenant le fichier chiffré,

Essayez cette commande pour envoyer un message crypté a votre voisin.


Décryptez le fichier chiffré avec la commande :
$ gpg --decrypt fichier.asc (ou \fichier.gpg).

Pr. M. A. EL KIRAM. 2005/2006 kiram@ucam.ac.ma


Partie 2 : GPG et la cryptographie asymétrique
Question 1 : Création de votre clé publique /clé privé.
- Dans un terminal, vérifiez s'il existe un répertoire
$HOME/.gnupg
S'il existe, regardez les fichiers qu'il contient ainsi que leurs dates de modification.

Création d'une clé


Pour créer votre propre clé publique/clé privée, il faut utiliser la commande
$ gpg --gen-key

Création d'une clé

[kiram@localhost kiram]$ gpg --gen-key


......
Sélectionnez le type de clé désiré:
(1) DSA et ElGamal (par défaut)
(2) DSA (signature seule)
(4) RSA (signature seule)
Votre choix ? 1

…..
Quelle taille de clé désirez-vous ? (1024) 1024

La clé est valide pour ? 15

Est-ce correct (o/n) ? o

Vous avez besoin d'un nom d'utilisateur pour identifier votre clé; le
….
Nom réel: kiram
Adresse e-mail: kiram@ucam.ac.ma
Commentaire:
Vous avez sélectionné ce nom d'utilisateur:
"kiram <kiram@ucam.ac.ma>"

Changer le (N)om, le (C)ommentaire, l'(E)-mail ou (O)K/(Q)uitter ?o

Vous avez besoin d'un mot de passe pour protéger votre clé secrète.

Entrez le mot de passe:


Répétez le mot de passe:

pub 1024D/7EBE92C8 2008-05-12 [expire le ……]


Empreinte de la clé = 5755 176F 8197 2166 66A0 1CAE 1B08 A3EE 7EBE 92C8
Uid kiram (kiram ahmed) <kiram@ucam.ac.ma>
sub 1024g/A07E5A3F 2008-05-12 [expire ….]

Allez vérifier l'existence du fichier « $HOME/.gnupg/ » et des fichiers qu'il contient (ou
comparez les dates de modification des fichiers).

Pour vérifiez que les clés ont bien été créées, utilisez la commande

Pr. M. A. EL KIRAM. 2005/2006 kiram@ucam.ac.ma


$ gpg --list-keys.
Vous devriez obtenir quelque chose du genre
pub 1024D/7EBE92C8 2008-05-12 [expires: 2008-05-27]
uid kiram (kiram ahmed ) <kiram@ucam.ac.ma>
sub 2048g/ A07E5A3F 2008-05-12 [expires: 2008-05-27]

qui vous indique que vous avez une clé principale (ligne \pub) qui expire le 12 mai ; et
une sous-
clé (ligne \sub) qui expire aussi le 12 mai. La ligne « uid » vous donne l'identité de
l'utilisateur correspondant.
La clé principale est utilisée pour les signatures, et la sous-clé pour le chiffrement.

Echange de clés

Pour envoyer votre clé publique à quelqu'un, vous pouvez commencer par l'exporter affin
qu’il puisse l’importer avec la commande :
$ gpg --output fichier.asc --export --armour uid
(le fichier fichier.asc contiendra la clé en ASCII)
$ gpg --output fichier.gpg --export uid
(le fichier fichier.gpg contiendra la clé en binaire)

On peut aussi signer la clé publique avant de l’exporter come suit.

[kiram@localhost kiram]$
[kiram@localhost kiram]$ gpg --edit-key kiram
....
(1). kiram ahmed (kiram) <kiram@ucam.ac.ma>

Commande>trust
pub 1024D/11594336 créée: 2005-11-17 expire: jamais confiance: u/u
sub 1024g/A807D2A4 créée: 2005-11-17 expire: jamais
(1). kiram ahmed (kiram) <kiram@ucam.ac.ma>

À quel point avez-vous confiance en cet utilisateur pour la vérification des clés des autres utilisateurs (vous
pouvez vérifier son passeport,
vérifier les empreintes de diverses sources...) ?
1 = ne sait pas
2 = je ne fais PAS confiance
3 = je crois marginalement
4 = je fais entièrement confiance
5 = je donne une confiance ultime
m = retour au menu principal

Votre décision ? 5
Voulez-vous vraiment donner une confiance ultime à cette clé ?o

Commande> quit

Ensuite exporter la clé, maintenant rien de plus simple:

[kiram@localhost kiram]$ gpg --export --armor > public-key-kiram.asc

Voir votre clé publique avec


kiram@localhost kiram]$ cat public-key-kiram.asc

Serveur de clés

Pr. M. A. EL KIRAM. 2005/2006 kiram@ucam.ac.ma


On va maintenant envoyer notre clé à un serveur de clés pour que tout le monde puisse
y avoir accès. Utilisez la commande :

$ gpg --keyserver pgp.mit.edu --send-key 0xnnnnnnnn

où nnnnnnnn est le numéro de votre clé (les chiffres apparaissant après le \1024D sur la
première ligne du résultat de « gpg --list-keys ».
Remarque : cette commande peut prendre un peu de temps.
En allant sur la page web « http://pgp.mit.edu » vérifiez que votre clé a bien été rajoutée.

Vous pouvez maintenant récupérer des clés sur le serveur http://pgp.mit.edu, il suffit de
récupérer le numéro de la clé, et d'utiliser la commande
$ gpg --keyserver pgp.mit.edu --recv-key 0xnnnnnnnn

Vous pouvez aussi allez sur le site du serveur de clés et ajouter votre clé.
Utiliser pour ça comme exemple le serveur de clé « keyserver.pgp.com »

Importer une clé

Maintenant Ahmed doit importer la clé publique de kiram

[ahmed@localhost ahmed]$

Pour importer une clé publique d'une personne, il suffit que ce dernier vous l'expédie par un
moyen ou un autre. Une fois obtenue, vous devez la rentrer dans votre base de données des
clés publiques de vos destinataires potentiels de messages chiffrés.

[ahmed@localhost ahmed]$ ls -l
-rw-r--r-- 1 kiram kiram 2543 déc 10 10:56 public-key-kiram.asc

[ahmed@localhost ahmed]$ gpg --import public-key-kiram.asc

Cette base de données de destinataires potentiels est dans votre répertoire .gnupg et se nomme
trustdb.gpg (fichier binaire)

Vérification de l'empreinte

N'importe qui peut dire qu'une clé lui appartient alors que ce n'est pas le cas. Pour remédier à
ça, on vérifie l'empreinte (fingerprint). fingerprint est une séquence de chiffres hexadécimaux
qui identifie de manière unique la clé publique. Il ne peut y avoir deux empreintes identiques.
Il est ainsi plus facile de vérifier l'empreinte d'une clé par tel.
Pour afficher l'empleinte:

ahmed@localhost ahmed]$ gpg --fingerprint kiram

pub 1024D/11594336 2005-11-17 kiram ahmed (kiram) <kiram@ucam.ac.ma>


Empreinte de la clé = 796F 054F D9E1 81BF E21C 50A4 F2D8 D6F4 1159 4336
sub 1024g/A807D2A4 2005-11-17

Certification de la clé

Pr. M. A. EL KIRAM. 2005/2006 kiram@ucam.ac.ma


Si vous êtes absolument sûr que la clé publique que vous venez de recevoir appartient bien au
destinataire (par vérification de l'empreinte par exemple), vous pouvez certifier sa clé:

[ahmed@localhost ahmed]$ gpg --sign-key kiram

pub 1024D/11594336 créée: 2005-11-17 expire: jamais confiance: -/-


sub 1024g/A807D2A4 créée: 2005-11-17 expire: jamais
(1). kiram ahmed (kiram) <kiram@ucam.ac.ma>

gpg: no default secret key: la clé secrète n'est pas disponible

Pour signer ahmed lui faut sa clé secrète. On refait donc la même chose pour créer les clés
pour ahmed

[ahmed@localhost ahmed]$ gpg --gen-key

Maintenant ahmed dispose lui aussi de sa clé par laquelle il pourra signer.

ahmed@localhost ahmed]$ gpg --sign-key kiram

Maintenant ahmed peut envoyer un message chiffré test.txt à l'utilisateur kiram. Pour cela:

[ahmed@localhost ahmed]$ gpg -sear kiram test.txt

Vous avez besoin d'un mot de passe pour déverrouiller la clé secrète pour
l'utilisateur: "ahmed <ahmed@ucam.ac.ma>"
clé de 1024 bits DSA, ID 2C0900D9, créée le 2005-12-10

Entrez le mot de passe:

Cela va créer le fichier crypté test.txt.asc


-s pour certifier.
-e pour chiffrer
-a poir créer un fichier .asc prêt à être envoyer en fichier attaché par email
-r suivi du destinataire du message.

Voir le fichier crypté


[ahmed@localhost ahmed]$ cat test.txt.asc
[ahmed@localhost ahmed]$

Ce message chiffré est le message à envoyer à kiram.


Maintenant du coté de kiram. Il pourra déchiffrer le message qui lui à été transmis comme
suit:
[kiram@localhost kiram]$ gpg -d test.txt.asc

Vous avez besoin d'un mot de passe pour déverrouiller la clé secrète pour
l'utilisateur: "kiram ahmed (kiram) <kiram@ucam.ac.ma>"
clé de 1024 bits ELG-E, ID A807D2A4, créée le 2005-11-17 (ID clé principale 11594336)

Entrez le mot de passe:

Vous constatez qu'on a le message:


gpg: Impossible de vérifier la signature: clé publique non trouvée

Pr. M. A. EL KIRAM. 2005/2006 kiram@ucam.ac.ma


car kiram n'a pas la clé publique de ahmed et donc n'a pas pu la certifier. Vous pouvez alors
arranger cela et redécrypter le message.

Lister et supprimer et éditer des clés.

Pour lister les clés publiques de votre base de données :


[ahmed@localhost ahmed]$gpg --list-key

Pour supprimer la clé publique d’un utilisateur. Par exemple ce lui dont la clé privée à été
compromise :
[ahmed@localhost ahmed]$gpg –delete-key UID

Pour éditer la clé publique d’un utilisateur particulier :

[ahmed@localhost ahmed]$gpg --edit-key UID

Authentification

Si vous voulez vous authentifier auprès des autres personnes, créez un fichier
« signature » de style

Kiram
kiram@ucam.ac.ma

puis tapez
[kiram@localhost kiram]$gpg –sa signature

Nécessite d’introduire le mot de passe pour déverrouiller la clé.


Cela va créer le fichier « signature.asc » que n’importe qui pourra déchiffrer avec votre clé
publique.

Maintenant si ahmed veut authentifier kiram qui lui a envoyé sa signature cryptée avec sa clé
privée. Il lui faudra de taper :

[ahmed@localhost ahmed]$gpg --verify signature.asc

Au message:

Bonne signature kiram kiram@ucam.ac.ma


On voit bien que kiram est bien authentifié.

Pr. M. A. EL KIRAM. 2005/2006 kiram@ucam.ac.ma