Vous êtes sur la page 1sur 5

Université de Rouen - M2 GIL 2023-2024

WEB et SÉCURITÉ

TP 3 Utilisation de GnuPG
Le logiciel GnuPG (GNU Privacy Guard) est une implantation Open Source de OpenPGP 1
(RFC 4880). C’est un logiciel libre de cryptographie qui permet de signer ou de chiffrer un
document. Une documentation en français est disponible sur http://www.gnupg.org/gph/
fr/manual.html.

Travail demandé À la fin de la séance, envoyez individuellement par email votre brouillon
de TP à votre chargé de TP, signé et chiffré par gpg, à cecile.goncalves@univ-rouen.fr
avec comme sujet du mail
M2GIL TP GPG Nom
Le rapport rédigé est à déposer sur Universitice.

1 Mes premières clefs avec GPG


GPG utilise de la cryptographie asymétrique et symétrique. Chaque utilisateur dispose
d’une bi-clef publique/privée pour l’authentification, et d’une autre bi-clef pour le chiffre-
ment. (Pourquoi ?)
Dans toute la suite, nous vous donnons les commandes permettant d’utiliser gpg en ligne
de commande (installez-le si nécessaire, regardez s’il est par défaut sous le bash git ou WSL).
Vous pouvez également installer une interface graphique, comme gpa, Kgpg (sous KDE)
ou Seahorse (sous Gnome), ou d’autres sous windows (cf. site http://www.gnupg.org/).
Détaillez alors son installation et utilisation dans votre compte-rendu. Précisez quelle version
de gpg vous utilisez (préférez la 2), sous quel système d’exploitation. Si vous utilisez le bash
git, vous pouvez configurer le programme gpg utilisé avec
$ git config --global gpg.program "lien vers l’executable"
Important : lorsque vous installez un logiciel sour windows, vous ne devez pas écrire
de fichiers dans le répertoire contenant le binaire du logiciel ! mettez à jour votre variable
d’environnement PATH pour pouvoir exécuter le binaire depuis la ligne de commande dans
votre répertoire TP. Sous linux (machine virtuelle ou non), ne travaillez pas comme utilisateur
root !

Exercice 1 (Création d’une clef ) On souhaite générer une clef gpg. On utilise pour cela
la commande
$ gpg2 --expert --full-gen-key
Choisissez “ECC and ECC” pour avoir une clef de signature et une clef de chiffrement
basées sur des courbes elliptiques. Le logiciel vous propose plusieurs courbes elliptiques : par
1. Une autre implantation très connue utilisant le même format OpenPGP est PGP (Pretty Good Privacy)
développé par Philip Zimmermann depuis 1991.

M. Bardet - C. Gonçalves 1 15/11/2023 - 22/11/2023


Université de Rouen - M2 GIL 2023-2024
WEB et SÉCURITÉ

exemple, la courbe nistp384 comporte environ 2384 points et une sécurité en 2192 (pour-
quoi ?), la courbe cv25519 comporte 2255 − 19 points (et quelle sécurité ?). Quelle courbe
choisissez vous et pourquoi ?
A quoi servent les données qui vous sont demandées ? Pourquoi est-ce que le processus de
génération des clefs est lent ? Lisez les informations affichées par gpg2 lors de la génération
de votre clef et expliquez-les (en particulier, ”USER-ID”, ”random bytes”, ”revocation cer-
tificate”, ”passphrase”).
Vos bi-clefs ont été créées puis stockées dans le fichier pubring.gpg du répertoire ~/.gnupg
(et sous windows ?). Pour visualiser vos clefs, il suffit d’appeler la commande gpg2 --list-keys
pour les clefs publiques, et gpg2 --list-secret-keys pour les clefs privées.
Exercice 2 (Édition d’une clef ) Éditez votre clef avec la commande
$ gpg2 --edit-key [info-cle]
où [info-cle] est un identificateur permettant de distinguer votre clef sans ambiguı̈té,
comme keyID, ou l’une des trois parties du userID (adresse email, nom, commentaire).
Exécutez la commande showpref. Que signifient les données affichées ? Exécutez ensuite
la commande check. Que pouvez-vous en déduire sur la forme de diffusion des clefs ? Pensez
à quitter le mode edit avec la commande save !

Exercice 3 (Révocation d’une clef ) Désormais, la validité de vos signatures et mes-


sages chiffrés dépend de la sécurité de votre clef privée : par précaution, et si cela n’a pas
été fait par gpg, on peut créer un certificat de révocation à l’aide de la commande
$ gpg2 --output revok_macle.asc --gen-revoke [info-cle]
Expliquez ce qu’est un certificat de révocation. Que devriez-vous faire maintenant de ce
certificat ?

2 Gestion de son trousseau de clefs


Pour pouvoir communiquer de manière sécurisée, il faut que vous distribuiez votre clef
publique et que vous récupériez les clefs publiques de vos interlocuteurs (il faut déployer une
“PKI”, une infrastructure de gestion des clef publiques). Ces clefs publiques sont distribuées
sous forme de certificats auto-signés, pouvant comporter en plus les signatures d’autres uti-
lisateurs. Si Alice a confiance en la clef de Bob, elle peut signer la clef de Bob avec sa propre
clef (privée ou publique ? d’authentification ou de chiffrement ?).

Exercice 4 (Clefs de votre chargée de TP) L’activité ≪ 2023-tp3-clefs ≫ sur universi-


tice va vous permettre de déposer votre clef publique dans une base de données (cf exercice
suivant). Vous pouvez dès maintenant télécharger depuis cette base de données la clef de
votre chargée de TP, dans un fichier clef.asc. Vous pouvez importer cette clef dans votre
trousseau puis l’éditer à l’aide des commandes suivantes :

M. Bardet - C. Gonçalves 2 15/11/2023 - 22/11/2023


Université de Rouen - M2 GIL 2023-2024
WEB et SÉCURITÉ

$ gpg2 --import clef.asc


$ gpg2 --edit-key [info-cle]
Lorsque vous importez des clefs publiques, vous n’avez aucune raison de penser que ce
sont les bonnes clefs (détaillez l’attaque “man in the middle”). Pour résoudre ce problème
d’intégrité, chaque clef possède une empreinte, aussi appelée fingerprint, que vous pouvez
afficher avec la commande fpr lorsque vous êtes en mode ≪ édition de clef ≫. Quel est le lien
entre l’identifiant d’une clef publique (keyID) et le fingerprint ?
Lorsque l’on a vérifié la validité d’une clef via le fingerprint et une méthode organisation-
nelle, on peut attester de cette validité en signant la clef (laquelle ? avec quelle clef ?). Cela
se fait à l’aide de la commande sign en mode ≪ édition de clef ≫.

Exercice 5 (Confiance et validité) Récupérez maintenant la ou les clefs de votre chargée


de cours dans la base de données. Que pouvez-vous dire de la validité de cette clef ? Changez
la confiance que vous avez en votre chargée de TP grâce à la commande trust en mode
≪ édition de clef ≫, passez le niveau de confiance à 4 (je fais entièrement confiance). Que

devient la validité des clefs de l’autre chargée de TP ? Expliquez.

Exercice 6 (Distribution des clefs) Pour extraire votre clef publique dans un fichier
macle.asc, on utilise l’option
$ gpg2 --output macle.asc --armor --export [info-cle]

L’option armor permet d’obtenir un codage ASCII et non binaire (par défaut).
Déposez votre clef publique dans la base de données Universitice. Importez les clefs
de vos interlocuteurs. Regardez la liste des clefs que vous avez obtenues. La commande
gpg2 --check-sigs permet d’afficher toutes les signatures de toutes les clefs du trousseau.
Commentez le message signatures not checked due to missing keys.

Exercice 7 (Toile de confiance) Il est peu commode d’avoir à valider à la main toutes
les clefs, et il est raisonnable de déléguer à d’autres personnes de confiance cette vérification.
L’objectif est pour vous d’obtenir un maximum de clefs valides (sur toute la promotion),
sans toutefois les signer toutes. Signez certaines clefs après avoir vérifié leur authenticité,
puis réexportez ces clefs avec vos signatures et demandez aux propriétaires des clefs que vous
avez signées de mettre à jour leur clef avec votre signature sur universitice. Le plus simple
pour eux est sans doute de réimporter leur clef avec votre signature dans leur trousseau, la
nouvelle signature est alors ajoutée aux anciennes, puis de réexporter toute la clef publique
avec l’ensemble des signatures.
Rappel. Pour garantir la validité des clefs de votre trousseau, GnuPG utilise un modèle
non hiérarchique de Toile de confiance. GPG gère pour cela deux types de confiance/validité
d’une clef publique :
— la validité de la clef (c’est-à-dire le fait que la clef publique correspond bien à l’identité
annoncée dans la clef),

M. Bardet - C. Gonçalves 3 15/11/2023 - 22/11/2023


Université de Rouen - M2 GIL 2023-2024
WEB et SÉCURITÉ

— la confiance dans le possesseur de la clef publique, sur sa manière de vérifier l’identité


des clefs qu’il certifie (c’est-à-dire la confiance que l’on a en le propriétaire de la clef
publique pour agir en tant qu’autorité de certification).
Les niveaux de confiance dans le possesseur de la clef publique sont gérés manuellement à
l’aide de la commande trust, et sont au nombre de quatre :
1. unknown : on ne peut rien dire sur le propriétaire, c’est le niveau de confiance par
défaut,
2. none : le propriétaire est négligeant avec ses clefs, on ne lui fait pas confiance,
3. marginal : le propriétaire essaie de situer au mieux la qualité de ses clefs,
4. full : le propriétaire gère correctement ses clefs,
5. ultimate : confiance réservée aux clefs pour lesquelles on possède la clef privée associée.
GPG utilise ensuite un algorithme pour calculer la validité d’une clef. Par défaut, une clef
est valide si
• vous l’avez signée personnellement,
• ou elle est signée par une clef valide en laquelle vous avez entièrement confiance,
• ou elle a été signée par trois clefs valides en lesquelles vous avez une confiance mar-
ginale,
et si on compte moins de cinq clefs intermédiaires pour remonter jusqu’à la vôtre. Les valeurs
par défaut de cet algorithme peuvent être modifiées. La mise à jour de la base de donnée
de confiance se fait à l’aide de la commande --update-trustdb. Que signifient les données
affichées par cette commande ?

3 GPG et messagerie
Exercice 8 (Messagerie) Échangez des documents chiffrés, signés, chiffrés et signés avec
vos camarades par email (cf détails ci-dessous). Pouvez-vous déchiffrer les documents que
vous envoyez ? Ceux que vous recevez ? De qui proviennent-ils ?
Vous pouvez utiliser des outils automatisés comme l’extension enigmail dans la messa-
gerie Thunderbird.
Pour chiffrer un document “à la main”, on utilise l’option --encrypt et l’option --recipient
suivie de l’identificateur de la clef publique du ou des destinataire(s). Le dernier argument
est le nom du document à chiffrer :
$ gpg2 --encrypt --armor --recipient [info-cle] doc_clair
Vous devez avoir maintenant un document doc clair.asc qui est la version chiffrée de
votre document. Pour déchiffrer un document, utilisez l’option --decrypt, ou directement
gpg2 doc chiffre.
La commande --sign de gpg2 permet de signer un document :

$ gpg2 --armor --output doc_signe.sig --sign doc

M. Bardet - C. Gonçalves 4 15/11/2023 - 22/11/2023


Université de Rouen - M2 GIL 2023-2024
WEB et SÉCURITÉ

Attention, cette commande effectue aussi une compression du document doc_signe. Pour
un document signé donné, vous pouvez en vérifier la signature avec la commande --verify
ou vérifier la signature et récupérer le document original :
$ gpg2 --output doc --decrypt doc_signe
Vous pouvez signer et chiffrer un document par la commande abrégée
$ gpg2 -esa --recipient [info-clef] doc-clair
Finalement, lorsque vous envoyez un message signé et chiffré à votre chargée de TP, avec
quel algorithme et quelle clef est chiffré le message ?

M. Bardet - C. Gonçalves 5 15/11/2023 - 22/11/2023

Vous aimerez peut-être aussi