Académique Documents
Professionnel Documents
Culture Documents
GnuPG (ou GPG, de l'anglais GNU Privacy Guard) est l'implémentation GNU du standard OpenPGP
défini dans la RFC 4880, distribuée selon les termes de la licence publique générale GNU.
Ce logiciel permet la transmission de messages électroniques signés et chiffrés, garantissant ainsi leur
authenticité, intégrité et confidentialité1.
Note : GnuPG est un logiciel, mais OpenPGP est un format pour l'échange sécurisé de
données qui doit son nom à l'application de cryptographie historique, Pretty Good Privacy
(PGP). Cette application (PGP) a été diffusée aux États-Unis par Philip Zimmermann en 1991.
PGP et les produits similaires suivent le standard OpenPGP (RFC 4880) pour le chiffrement et
le déchiffrement de données. Le développement du logiciel PGP a, peu à peu, été abandonné
au fur et à mesure que GnuPG devenait un standard.
1. Introduction
Afin de découvrir les principes d’intégrité, d’authenticité, de confidentialité, vous allez travailler en
binôme. Afin de faciliter les échanges de fichiers indispensables à cet exercice, nous utiliserons le
répertoire personnel du serveur Web Apache, installé sur chacun de vos systèmes.
Remarque : La plateforme Protonmail réserve cet accès au protocole IMAP à ses abonnés.
Nous allons utiliser les services d’une autre plateforme de message, elle aussi est respectueuse de vos
données. Vous pouvez vous en convaincre en lisant leurs règles de confidentialité, très claires.
Pour créer un compte, il suffit de se rendre à l’adresse suivante, puis vous sélectionnez le bouton « Créer
un compte Mailo ».
1 Extrait de la page Wikipedia GnuPG, disponible sous licence Creative Commons attribution, partage dans les mêmes
conditions.
Remarque : Pour le profil, malgré l’invitation, je ne précise jamais la bonne date de naissance.
Il ne nous reste plus alors qu’à accepter les conditions d’utilisation pour lancer la création du compte.
L’interface du client webmail propose un bouton qui permet d’accéder aux options et autres
Nous consultons les paramètres IMAP afin de pouvoir configurer correctement le compte pour notre
client de messagerie Evolution.
Remarque : Bien que l’interface du client Webmail de Mailo nous permette de générer des clés
GPG, nous ne prenons pas cette option, car nous avons prévu de procéder différemment afin
de rester au plus près du format OpenPGP.
Travail à faire
1.1 Créez une nouvelle adresse professionnelle prenom.nom@mailo.com ;
1.2 Enregistrez votre adresse professionnelle et le mot de passe associé dans votre base
KeePass ;
Une fois la création du compte validé, les messages sont téléchargés et sont accessibles depuis
l’application Evolution.
Travail à faire
1.3 Configurez le client de messagerie Evolution pour votre nouvelle adresse profession-
nelle prenom.nom@mailo.com ;
1.4 Envoyez un message à votre binôme en mettant en copie votre enseignant.
jessie@A-207-XX:~$
Travail à faire
2..5 Générez une paire de clé pour votre adresse Mailo.
2..6 Enregistrez votre phrase secrète dans votre base KeePass.
sec rsa4096/FC20501B66690422
créé : 2020-05-15 expire : jamais utilisation : SC
confiance : ultime validité : ultime
ssb rsa4096/3FFA8E4CF0376784
créé : 2020-05-15 expire : jamais utilisation : E
[ ultime ] (1). mon-nom (clé professionnelle) <prenom.nom@mailo.com>
gpg> addkey
Sélectionnez le type de clef désiré :
(3) DSA (signature seule)
(4) RSA (signature seule)
(5) Elgamal (chiffrement seul)
(6) RSA (chiffrement seul)
Quel est votre choix ? 4
les clefs RSA peuvent faire une taille comprise entre 1024 et 4096 bits.
Quelle taille de clef désirez-vous ? (3072) 4096
La taille demandée est 4096 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) 0
La clef n'expire pas du tout
Est-ce correct ? (o/N) o
Faut-il vraiment la créer ? (o/N) o
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.
sec rsa4096/FC20501B66690422
créé : 2020-05-15 expire : jamais utilisation : SC
confiance : ultime validité : ultime
ssb rsa4096/3FFA8E4CF0376784
créé : 2020-05-15 expire : jamais utilisation : E
ssb rsa4096/120F20977BE3E78F
créé : 2020-05-15 expire : jamais utilisation : S
[ ultime ] (1). Prénom Nom (clé professionnelle) <prenom.nom@mailo.com>
gpg> save
Travail à faire
2.7 Créez une sous clé pour la signature pour votre clé professionnelle prenom.nom@mailo.-
com ;
Remarque : J’ai remplacé les espaces par des tirets bas (underscore) afin de faciliter l’auto-
complétion.
Travail à faire
3.8 Importez la clé publique de votre adresse prenom.nom@protonmail.com dans votre
trousseau de clés.
3.9 Partagez la clé publique de votre adresse prenom.nom@mailo.com via l’espace personnel
du serveur Apache.
3.10 Importez la clé publique de l’adresse de votre binôme prenom.nom@mailo.com dans
votre trousseau de clés.
Si maintenant, nous signons cette clé (avec notre clé par défaut : il faudra donc saisir notre passphrase).
gpg --edit-key prenom.nom@protonmail.com
gpg (GnuPG) 2.2.12; Copyright (C) 2018 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.
pub rsa2048/912346AD48390BEF
créé : 2018-08-29 expire : jamais utilisation : SC
confiance : inconnu validité : inconnu
sub rsa2048/F091FCAEF62DDEBC
créé : 2018-08-29 expire : jamais utilisation : E
[ inconnue] (1). "moulinux@protonmail.com" <moulinux@protonmail.com>
gpg> sign
gpg: using "<prenom.nom@mailo.com>" as default secret key for signing
pub rsa2048/912346AD48390BEF
créé : 2018-08-29 expire : jamais utilisation : SC
confiance : inconnu validité : inconnu
Empreinte clef princip. : 0FBD E7ED FE35 8476 7EB2 A585 9123 46AD 4839 0BEF
"prenom.nom@protonmail.com" <prenom.nom@protonmail.com>
gpg> save
Une fenêtre apparaît permettant de saisir la passphrase associée à la clé privée utilisée pour signer.
La signature est
désormais indiquée
comme parfaitement
valide dans Evolution
(voir la figure ci-
contre).
Travail à faire
3.11 Signez la clé publique de votre adresse prenom.nom@protonmail.com avec votre clé per-
sonnelle (en envoyant cette clé jointe à un e-mail adressé à votre adresse mailo).
Rappel : Vous remplacerez les espaces par des tirets bas pour faciliter l’auto-complé-
tion).
3.12 Signez la clé publique de l’adresse prenom.nom@mailo.com de votre binôme avec votre
clé personnelle.
4. Fonctionnement d’OpenPGP
4.1. Intégrité
Nous commençons par créer un fichier texte (message_clair) :
jessie@A-207-XX:~$ cd $HOME/Documents
jessie@A-207-XX:~/Documents$ echo Je suis en BTS SIO et je travaille la cryptographie
avec le format OpenPGP. >> message_clair
Nous utilisons alors la commande sha1sum, qui va calculer un condensat, une empreinte numérique du
fichier :
jessie@A-207-XX:~/Documents$ sha1sum message_clair
8b8b517b9377101e6f4714ffe4f7e453ec5f4424 message_clair
Mais, nous pouvons recalculer à l’infini le résultat de la commande sha1sum, il donnera toujours le
même résultat.
Si nous diffusons notre fichier message_clair sur un site Web, en précisant aux internautes le condensat
calculé avec la fonction de hachage sha1sum, chacun pourra vérifier l’intégrité du fichier qu’ils ont
téléchargé.
Afin de rendre le décryptage plus difficile, nous utilisons de plus en plus de bits pour le calcul de
l’empreinte :
jessie@A-207-XX:~/Documents$ sha256sum message_clair
b273f4c69aef1693743040fa9d128079c426c79c982ed4ef2f4991c947b49c20 message_clair
Travail à faire
4..13 Enregistrez un nouveau message dans un fichier texte, calculer son empreinte.
4..14 Partagez votre message via l’espace personnel d’Apache en donnant à vos camarades
les moyens d’en vérifier l’intégrité.
Remarque : Vous pouviez par exemple vérifier l’intégrité de l’image téléchargé de la machine
virtuelle (fichier Debian10 Buster xfce dev.ova) à l’aide du condensat présent dans le même
répertoire du cloud (fichier Debian10 Buster xfce dev.sha256). Ceci afin notamment de
vérifier qu’une personne malveillante n’aura pas altéré l’image durant le téléchargement du
fichier.
vous rappelle que même si l’usurpation d’identité est illégale, n’importe qui peut techniquement envoyer
un e-mail de la part de emmanuel.macron@elysee.fr !
Le protocole OpenPGP prévoit de signer le condensat. Nous allons d’abord enregistrer ce condensat dans
un fichier.
jessie@A-207-XX:~/Documents$ sha1sum message_clair > message_sha1sum
Le logiciel GnuPG génère ainsi le fichier message_sha1sum.gpg, que nous partageons via l’espace
personnel d’Apache.
Vos collègues pourront vérifier l’authenticité de votre condensat à l’aide de votre clé publique qu’ils ont
au préalable signés.
jessie@A-207-XX:~/Téléchargements$ gpg --verify message_sha1sum.gpg
Travail à faire
4..15 Partagez votre condensat signé.
4..16 Vérifiez l’authenticité du message de votre binôme.
4.3. Confidentialité
Notre message était pour le moment partagé en clair, nous avions d’autres objectifs (intégrité,
authenticité). Si nous souhaitons maintenant partager un secret avec une personne, nous devons au
préalable recueillir sa clé publique et en vérifier l’authenticité. Nous pourrons alors lui faire parvenir des
messages chiffrés, que lui seul pourra lire…
jessie@A-207-XX:~/Documents$ gpg -r prenom.nom_du-binome@mailo.com --encrypt
message_clair
Le fichier « message_clair.gpg » existe. Faut-il réécrire par-dessus ? (o/N) N
Entrez le nouveau nom de fichier: message_chiffre_binome.gpg
Remarque : L’exemple ci-dessous envisage que vous choisissez le même fichier et donc le
même message. Il semble plus original de définir un nouveau message que ne connaîtra pas
votre binôme…
Travail à faire
Note : PGP/Inline et PGP/MIME sont des formats d’encodage de courriels mis en œuvre par
les clients de messagerie. Pour notre distribution Debian, l’agent PGP utilisé par défaut sera
bien sûr OpenPGP.
Trois boutons s’illuminent pour chacune des options sélectionnées. Juste avant l’émission, une fenêtre de
dialogue s’ouvre pour nous permettre de saisir la passphrase correspondant à notre clé privée (pour la
signature du message).
Remarque : Par défaut, l’application cliente Evolution est configurée pour ne faire confiance
qu’aux clés ayant un tel statut dans votre trousseau, ce qui normalement devait être le cas pour
vous. Sinon, il faudra soit modifier ce comportement pas défaut (dans l’onglet sécurité lors de
l’édition des paramètres de votre compte mail), soit modifier le statut des clés de vos contacts
(de « unknown » par défaut à « totale ») avec la commande gpg --edit-key e-mail.
clé publique de l’adresse Mailo (voir la figure ci-contre : Vous opterez pour le format cryptographique
PGP/Inline, qui est le prédécesseur de PGP/MIME, qui pose moins de soucis de compatibilité avec
Evolution…).
Enfin, vous activerez le chiffrement par défaut en cliquant sur le bouton « Chiffrer » (voir le résultat dans
la figure ci-dessus). Vous finalisez en enregistrant vos modifications (via le bouton « Enregistrer »).
Maintenant, si vous composez une réponse, l’interface
propose automatiquement le chiffrement (voir l’exemple
dans la figure ci-contre).
Un cadenas vert, barré atteste cette validité.
Et voilà !
Pour analyser les traces liées à l’activité autour du chiffrement, il est possible de lancer
Evolution depuis un terminal virtuel avec la commande CAMEL_DEBUG=gpg,emformat
evolution (on définit une variable avant le programme).
Travail à faire
5..19 Échangez des messages chiffrés entre votre adresse Mailo et votre adresse ProtonMail.
5..20 Échangez des messages chiffrés entre l’adresse Mailo de votre binôme et votre adresse
ProtonMail.
5..21 Intégrez la clé publique de votre enseignant (fichier publickey_ac-clermont.fr.asc), puis
échangez des messages chiffrés avec son adresse professionnelle et votre adresse Pro-
tonMail.
Et que vous souhaitiez partager ce fichier sur un service de cloud respectable. Vous allez au préalable
chiffrer votre fichier à l’aide de votre clé GPG. Pour cela, vous choisissez l’entrée « Enregistrer sous… »
dans le menu « Fichier » et cochez la case « Chiffrer avec une clé GPG » au bas de la fenêtre de
dialogue :
Le système vous présente alors une nouvelle fenêtre permettant de choisir votre clé :
Le logiciel « LibreOffice online » ne parvient déjà pas à exploiter les données, mais cela ne vous empêche
pas de télécharger le fichier à l’aide du bouton dédié (situé toujours en haut à droite).
Ne parvenant pas à ouvrir ce fichier avec LibreOffice, vous pouvez tout de même essayer d’inspecter son
contenu, pour cela, renommez l’extension du fichier ods en zip :
Dans le navigateur de fichier, le menu contextuel (clic droit), vous permet de décompresser l’archive dans
le répertoire courant (via l’entrée « Extraire ici »). Le contenu d’un fichier au format OpenDocument est
stocké dans le fichier content.xml. Cependant, vous ne parviendrez pas ici à consulter le contenu avec un
éditeur de texte comme Geany (qui ne reconnaît pas ici un fichier texte). Vous pouvez néanmoins forcer
cette lecture impossible en ligne de commandes avec cat. Pour cela, toujours à l’aide du menu contextuel,
choisissez « Ouvrir un terminal ici » et lancez la commande :
cat content.xml
Bon courage pour retrouver les notes de tux ou les noms de ses collègues de formation…
Travail à faire
6..22 Reproduisez cette expérience sur un autre fichier tableur (ou traitement de texte), tes-
tez et partagez avec votre binôme (vous devez d’abord enregistrer votre fichier locale-
ment en clair, puis faire enregistrez-sous en cochant la case « GPG »).