Ce document constitue une présentation succincte des principes de cryptographie asymétrique et une rapide prise en main du logiciel GnuPG à utiliser pour les échanges sécurisés de documents électroniques avec le secrétariat du jury.

Cryptographie asymétrique

La cryptographie s’attache à protéger des messages de façon à ce qu’une personne non autorisée ne puisse pas en prendre connaissance. La méthode classique consiste à transformer le message à protéger (le clair) en un message inintelligible (le cryptogramme) grâce à un algorithme (le chiffre) paramétré par une clef. Traditionnellement, cette même clef est utilisée par le destinataire pour retrouver le message d’origine en appliquant le chiffre à l’envers sur le cryptogramme, on parle de chiffrement symétrique.

Le point faible de la cryptographie symétrique réside dans le partage de la clef. Il est en effet nécessaire que l’émetteur et le destinataire partagent cette clef et donc soient capables de l’échanger de manière parfaitement sécurisée. Sachant que plus une clef est utilisée, plus elle est vulnérable (lorsque un haut niveau de sécurité est recherché, les clefs sont utilisées une seule fois) et que d’autre part le choix d’une bonne clef n’est pas évident, le choix et l’échange des clefs constituent un énorme défi.

La cryptographie asymétrique utilise un algorithme non réversible, la connaissance de la clef de chiffrement ne permet pas de déchiffrer le message. Le déchiffrement doit être effectué à l’aide d’une deuxième clef, correspondante à la clef de chiffrement mais qui ne peut pas en être déduite. Le rôle des deux clefs d’une paire est symétrique. Chacune des deux clefs peut être utilisée pour chiffrer un message, l’autre clef permettra le déchiffrement. Cela permet de solutionner le problème de l’échange des clefs. En effet, Bob peut diffuser librement à tous ses correspondants une de ses deux clefs (que nous appellerons désormais clef publique). Pour lui envoyer un message confidentiel, Alice n’a qu’à obtenir sa clef publique et l’utiliser pour chiffer son message. Si Eve intercepte le message d’Alice, même à l’aide de la clef publique de Bob, elle ne pourra pas le déchiffrer. Seul le possesseur de la deuxième clef de Bob pourra déchiffrer ce message. Il suffit donc que Bob conserve cette deuxième clef (qui prend alors le statut de clef secrète) sans la communiquer à des tiers pour qu’il soit le seul à pouvoir déchiffrer le message d’Alice.

La cryptographie asymétrique présente cependant deux points faibles : la conservation des clef secrètes et l’identification des clef publiques.

Pour que le système fonctionne correctement, il faut que les clefs secrètes restent effectivement secrètes et ne puissent être utilisées à l’insu de leur propriétaire. GnuPG facilite la protection des clefs secrètes en les stockant dans un fichier protégé par un mot de passe. Si le mot de passe est bien choisi et reste secret, cela limite les risques en cas d’utilisation de l’ordinateur par une tierce personne, voire en cas de piratage ou de vol. Pour déchiffrer un message, le mot de passe protégeant le fichier contenant la clef secrète sera nécessaire, évitant ainsi les utilisations non autorisées de cette clef.

L’autre point faible concerne l’identification des clefs publiques. Comment être sûr que la clef qu’Alice utilise pour chiffrer son message est bien celle de Bob ? Il en va de la sécurité des échanges : si Eve transmet à Alice sa clef publique en lui faisant croire qu’il s’agit de celle de Bob, Eve pourra déchiffrer le message qu’Alice envoie à Bob. Deux grandes familles de solutions sont utilisées pour résoudre ce problème. L’une, utilisée en particulier pour la sécurisation des sites Web, consiste à utiliser un tiers de confiance qui authentifie les clefs publiques à l’aide de certificats. L’autre, utilisée par GnuPG, est basée sur un réseau de confiance au sein d’une communauté d’utilisateurs.

Dans le modèle utilisé par GnuPG, lorsqu’Alice reçoit la clef publique de Bob, elle doit, avant de s’en servir, s’assurer de son authenticité. Elle peut le faire en vérifiant directement avec Bob l’empreinte de sa clef puis en la signant pour signifier qu’elle certifie que celle-ci appartient bien à Bob. Sinon, Alice peut regarder parmi les utilisateurs ayant signé la clef de Bob si elle connait une ou plusieurs personnes à qui elle fait confiance pour authentifier les clefs publiques. GnuPG effectue automatiquement cette dernière opération établissant ainsi implicitement un réseau de confiance entre ses utilisateurs.

Un autre aspect intéressant de la cryptographie asymétrique est de permettre l’authentification de l’auteur d’un message et d’en garantir l’intégrité. Pour diffuser un message de façon à ce que les destinataires puissent s’assurer que Bob en est bien l’auteur et que ce message n’a pas été modifié, il suffit que Bob joigne à son message une version chiffrée avec sa clef privée (le rôle des deux clefs est symétrique, la clef privée aussi bien que le clef publique peuvent être utilisées pour chiffrer un message). Si Alice veut s’assurer que le message émane bien de Bob, il lui suffit de déchiffrer le cryptogramme avec la clef publique de Bob et de comparer le résultat obtenu avec la version en clair du message. Le fait que la clef publique de Bob déchiffre correctement le message prouve que c’est sa clef privée qui l’a chiffré et donc que Bob en est bien l’auteur. Cela prouve également que le message n’a pas été altéré car la modification cohérente du clair et du cryptogramme nécessite l’accès à la clef privée de Bob. Le chiffrement d’un message à l’aide de la clef privée de l’auteur constitue donc une signature numérique. Dans la pratique, la signature numérique ne s’effectue pas en chiffrant l’intégralité du message mais seulement un condensé.

GnuPG propose la possibilité de signer un fichier. La signature peut être combinée à un chiffrement s’il s’agit à la fois de protéger la communication et d’authentifier l’auteur du message.

Procédure de base pour le chiffrement d’un fichier

Voici est un résumé succinct de l’utilisation de GnuPG pour le chiffrement d’un fichier à destination du service concours. Il n’est pas lié à un système d’exploitation particulier car il s’en tient aux principes généraux. Un mise en œuvre spécifique à différents système d’exploitation est fournie plus bas. Voici quelques références pour plus de détail sur l’utilisation de GnuPG :

Manuel de GnuPG
disponible en plusieurs langues dont le français, il décrit en détail les principes de base et l’utilisation de GnuPG ; les exemples s’appuient sur une utilisation en ligne de commande.
The Gpg4win Compendium
manuel utilisateur de Gpg4win, version pour Ms-Windows de GnuPG ; la première partie explique de manière plus détaillée que l’introduction précédente les principes de base de la cryptographie asymétrique et est vivement conseillée à tout utilisateur quel que soit le système d’exploitation avec lequel il travaille.

Préparation

  1. Installer GnuPG et éventuellement les outils graphiques associés (gestion de clefs, chiffrement, signature).
  2. Engendrer son couple de clef (clef privée, clef publique) en veillant particulièrement au choix du mot de passe.
  3. Éventuellement, publier sa clef publique sur des serveurs de clefs et créer un certificat de révocation qui permettra de bloquer l’utilisation de la clef publique en cas de perte de la clef privée (ou de son mot de passe).
  4. Faire une copie de sauvegarde de ses clefs et du certificat de révocation.
  5. Importer les clefs publiques des secrétaires du jury Thomas Antoni et Nicolas Boullis (faire un clic droit sur les liens pour enregistrer sur votre disque les fichiers ThomasAntoni.asc et nboullis.asc).
  6. Vérifier l’authenticité de ces clefs (empreinte 22A2 0496 C732 2840 8329  2875 C03E 8183 FDB9 0D18 id FDB90D18 et 13B5 82E2 E067 3A31 1DDF  1B08 D0E9 4F8D 882D 4468 id 882D4468) à l’aide d’une autre source que l’endroit où vous l’avez obtenue (contact avec le service concours, serveur de clefs publiques, message électronique, etc.).
  7. Une fois leurs authenticités vérifiées, signer les clefs afin d’indiquer à GnuPG que ces clefs sont bien ce qu’elle prétendent être et qu’elle sont utilisables pour protéger les communications.

Envoi ou réception de fichiers

Bien qu’il soit possible d’utiliser GnuPG directement à partir de son logiciel de courrier électronique, la procédure recommandée pour le transfert de fichiers avec le secrétariat du jury consiste à chiffrer séparément le fichier à transmettre et à joindre le fichier chiffré à un message électronique. Veillez à ne pas fournir, dans le corps du message, d’information qui pouvait donner des indications sur le contenu du fichier joint.

Installation et utilisation de GnuPG sous Mac OS X

Cette procédure a été établie sous Mac OS X version 10.6 (code Snow Leopard) version française en octobre 2011 avec la version 20110711 de GPGTools. Elle propose l’installation de l’application de gestion de clef et l’intégration avec le Finder. Si vous préférez la ligne de commande, contentez-vous d’installer le moteur GnuPG puis suivez les instructions pour système Unix.

Le site officiel de distribution de la version de GnuPG pour Mac OS est www.gpgtools.org.

  1. Télécharger le programme d’installation qui contient tous les éléments nécessaires.

  2. L’installeur GnuPG se présente sous la forme d’un disque virtuel (fichier .dmg). Montez (double clic) ce disque et exécutez (double clic) le fichier GPGTools.mpkg. Suivre les instructions du programme d’installation en choisissant les options par défaut.

  3. Une fois l’installation terminée, vous pouvez éjecter GPGTools et mettre le fichier GPGTools-20110711.dmg à la poubelle.

  4. Lancer l’application GPG Trousseau d’accès (installée par défaut dans le dossier Applications) et cliquer sur l’icône Nouveau ou choisir Générer dans le menu Clef afin de créer une paire de clefs. Dans la suite de dialogues qui s’affichent, indiquer les éléments suivants :

    Type de clef

    RSA et RSA (par défaut)

    Longueur

    2048

    Date d’expiration

    pas de date d’expiration

    Nom et prénom

    votre prénom suivi de votre nom de famille

    Adresse courriel

    l’adresse électronique que vous utiliserez préférentiellement pour communiquer avec le secrétariat du jury

    Commentaire

    laisser vide

    Passphrase

    un mot de passe soigneusement choisi pour protéger votre clef privée

    Après quelques instants, votre paire de clef apparaît dans la fenêtre principale, en gras précédée de la mention sec indiquant la présence d’une clef secrète.

  5. Vos clefs sont enregistrées dans le répertoire caché .gnupg situé dans votre répertoire de départ. Si vous utilisez TimeMachine, ce répertoire est automatiquement sauvegardé. Il est toutefois prudent de procéder à une sauvegarde de sécurité de ces clefs. Il suffit pour cela d’utiliser la fonction exporter disponible dans GPG Trousseau d’accès en cochant permettre exportation clef secrète. Bien que votre clef secrète soit protégée par votre mot de passe, il convient de garder cette copie en lieu sûr.

  6. Dans l’application GPG Trousseau d’accès choisissez Rapporter du serveur de clefs dans le menu Clef et indiquez l’identificateur de la clef du secrétaire du jury : 261BBF51. Si l’opération s’est bien déroulée, vous devez voir apparaître une nouvelle clef dans la fenêtre principale.

    Si vous ne parvenez pas à récupérer de la clef du secrétaire du jury, il se peut que le serveur par défaut ne soit pas accessible. Vous pouvez essayer avec un autre serveur dans l’onglet Serveur de clés du dialogue de préférences (menu GPG Keychain Access). Vous pouvez également télécharger une copie de cette clef (à l’aide d’un clic droit) depuis ce site puis l’importer (icône Importer ou Importer dans le menu Fichier).

  7. Consulter l’empreinte de la clef (Montrer information dans le menu Clef ou double clic sur la clef) et vérifier que cette empreinte correspond bien à celle du secrétaire du jury en la comparant avec une empreinte obtenue de source sûre. Le service du concours pourra vous confirmer cette empreinte. Si la clef est authentique, signez-là : Signer dans le menu Clef

Chiffrement et déchiffrement pour MacOs X version 10.6 et supérieures

Dans le Finder, sélectionner le(s) fichier(s) à chiffrer puis choisir OpenGPG: Encrypt dans le sous-menu Services du menu Finder. (Ce sous-menu est également disponible dans le menu local du fichier à chiffrer, accessible par clic droit ou control-clic.)

Si OpenGPG: Encrypt n’apparait pas dans le sous-menu Services :

  1. commencer par fermer puis rouvrir la session ou redémarrer l’ordinateur ;
  2. ouvrir les préférences systèmes (menu pomme) ;
  3. choisir les préférences Clavier puis l’onglet Raccourcis clavier ;
  4. dans la liste de gauche, choisir Services ;
  5. dans la liste de droite aller à la section Fichiers et dossiers et cocher les lignes correspondant à OpenPGP ;
  6. quitter les préférences systèmes.

Après avoir choisi OpenGPG: Encrypt sélectionner les destinataires dans la liste de clefs proposée en cochant la case à gauche (il est possible de chiffrer un fichier pour plusieurs destinataires simultanément). Vous obtenez alors un nouveau fichier avec le suffixe .gpg, c’est ce fichier que vous devez attacher à votre message.

Le déchiffrement s’effectue en sélectionnant le fichier à déchiffrer dans le Finder (fichier .gpg) puis en choisissant OpenGPG: Decrypt dans le sous-menu Services. Le système vous demandera alors le mot de passe (passphrase) de votre clef privée (sauf si vous venez de l’introduire dans les minutes précédentes).

Chiffrement et déchiffrement pour MacOs X version 10.5

Le menu service n’est pas disponible pour MacOx X version 10.5. Pour cette version de système, il est possible d’utiliser un outil plus ancien GPGFileTool.

Pour chiffrer un fichier, lancer GPGFileTool.

  1. Dans le menu Fichier choisir Ouvrir et sélectionner le fichier à chiffrer.
  2. Un dialogue apparait, sélectionner l’action à réaliser (Chiffrer) et appuyer sur le bouton Faîtes-le.
  3. La liste des clefs publiques valides apparait, sélectionner celle du destinataire. Il est possible de choisir plusieurs destinataires simultanés à l’aide d’une sélection multiple (clic avec la touche commande).
  4. Le dialogue suivant permet de choisir l’endroit où enregistrer le fichier chiffré.

Si la clef du destinataire ne figure pas dans la liste à l’étape 3, soit elle n’est pas présente dans le trousseau de clef, soit GPGFileTool n’est pas sûr de son authenticité. Pour authentifier une clef publique, après avoir vérifié qu’il s’agit de la bonne clef, il faut la signer. Cette opération se fait à l’aide du logiciel GPG Trousseau d’accès.

GPGFileTool produit des fichiers chiffrés avec l’extension .gpge. Certains système de reconnaissent pas cette extension. Pour un maximum de portabilité, il est donc conseillé de remplacer cette extension par .gpg avant de transmettre ce fichier à son destinataire.

Le déchiffrement s’effectue suivant une procédure similaire, en choisissant Déchiffrer à l’étape 2 ci-dessus. L’étape suivante sera l’introduction du mot de passe de protection de la clef privée.

Installation et utilisation de GnuPG sous MS-Windows

Cette procédure a été établie sous Windows 7 en janvier 2017 et explique l’installation de GnuPG et des applications de gestion de clef et de chiffrement et déchiffrement de fichiers. La version utilisée (2.3.3) comprend les composants suivants :

Le site officiel de distribution de la version de GnuPG pour MS-Windows est www.gpg4win.org.

  1. Télécharger le programme d’installation, le site incite à une donation, mais vous pouvez choisir $0 pour accéder directement au téléchargement de la dernière version.

  2. Lancer le programme d’installation et suivre les instructions qui s’affichent à l’écran en acceptant les réponses par défaut. En particulier, assurez-vous que « Kleopatra » est sélectionné dans la liste des composants à installer et que « Menu Démarrer » est coché dans la liste des liens à installer.

  3. Redémarrer son ordinateur.

  4. Lancer Kleopatra, programme graphique de gestion des clefs et de chiffrement et déchiffrement des fichiers. Si vous avez demandé l’installation de liens dans le menu démarrer, Kleopatra est accessible dans « Tous les programmes » sous-menu par défaut « Gpg4win ». Vous pouvez également lancer directement Kleopatra à partir de son répertoire d’installation qui est par défaut Program Files\GNU\GnuPG\.

  5. Kleopatra s’ouvre sur l’écran de gestion des certificats qui doit être vide. Dans le menu File choisissez New Certificate pour créer votre certificat.

    Choisissez OpenPGP key pair et remplissez le formulaire avec votre nom (prénom + nom) et votre adresse électronique. Vous pouvez laisser le champ commentaire vide ou l’utiliser pour identifier spécifiquement la clef que vous êtes en train de créer, en particulier si vous utilisez plusieurs clefs.

    Indiquez ensuite le mot de passe soigneusement choisi qui protégera votre clef privée.

    Une fois votre paire de clefs correctement créée, cliquer sur Finish. Vous devez voir apparaître votre nom dans la liste des certificats.

  6. Exportez votre clef publique. Pour cela, sélectionnez votre certificat dans la liste des certificats puis dans le menu File choisissez Export certificates.... Enregistrez de préférence votre clef publique au format ascii (suffixe .asc). Vous pouvez désormais envoyer ce fichier à vos correspondants afin qu’ils puissent vous adresser des messages chiffrés.

  7. Téléchargez la clef publique du secrétaire du jury (à l’aide d’un clic droit) et importez là dans Kleopatra grâce à Import certificate... du menu File. Le certificat doit apparaître dans l’onglet Imported Certificates.

    Double cliquez sur le certificat importé, une fenêtre de détail s’affiche. Vérifier que l’empreinte (fingerprint) du certificat correspond bien à celle du secrétaire du jury en la comparant à son empreinte obtenue de source sûre.

    Après avoir vérifié l’empreinte, fermez la fenêtre de détail et authentifiez la clef (Authenticate certificates dans le menu Certificate).

  8. Désormais pour chiffrer un fichier, il vous suffit d’utiliser la fonction Sign/Encrypt du menu File en choisissant « Encrypt » puis dans l’écran suivant, sélectionner dans le volet du haut la clef du destinataire, appuyez sur Add, la clef sélectionnée apparait dans le volet du bas. Si vous voulez envoyer le fichier à plusieurs destinataires simultanément, vous pouvez sélectionner ainsi plusieurs clefs. Terminez en appuyant sur Encrypt.

    Si vous avez installé le composant GpgEX (sélectionné par défaut), vous pouvez également chiffrer un fichier directement depuis l’explorateur Windows. Cliquez avec le bouton droit de la souris sur le fichier à chiffrer, le menu contextuel doit contenir l’élément Sign and encrypt. La suite des opération est similaire à celle indiquée dans le paragraphe précédent.

La documentation complète de Gpg4win et Kleopatra est disponible dans le sous-répertoire Documentation de Gpg4win. Vous la trouverez également en ligne sur le site de Gpg4win.

Utilisation de GnuPG avec un système Unix

GnuPG souvent installé par défaut sur les systèmes Unix les plus courants. Sinon, il est généralement disponible sous forme de package prêt à l’installation, référez-vous à votre gestionnaire de package préféré.

Les principaux logiciels de courriel (MUA) intègrent l’utilisation de GnuPG, soit nativement (Mutt, Kontact, Evolution, Claws-mail), soit à l’aide d’un plug-in (Gnus avec EsayPG, Thunderbird avec Enigmail).

Les principaux environnement de bureau proposent également des interfaces graphique avec GnuPG (Seahorse pour Gnome, KGpg pour KDE, GPA générique).

Si vous préférez la ligne de commande, man gpg est très complet. Voici quelques exemples de commandes les plus utiles.

Gestion des clefs et certificats

gpg2 --gen-key

Crée interactivement une nouvelle paire de clefs.

Sauf si vous savez exactement ce que vous faites, choisissez la réponse par défaut aux questions techniques. Portez particulièrement attention au choix de la phrase secrète. L’oubli de cette phrase rend votre clef inutilisable.

gpg2 --passwd <id>
Modifie la phrase secrète associée à la clef privée indiquée.
gpg2 --export-secret-keys <id> -o      <fichier>

Exporte une clef secrète (protégée par sa phrase secrète) dans le fichier indiquée.

Il est conseillé de réaliser cette opération dès la création d’une nouvelle clef et de sauvegarder sa clef privée en lieu sûr, de façon à pouvoir la récupérer en cas de perte ou de destruction de l’ordinateur. Si la clef privée est perdue, tous les fichiers chiffrés avec cette clef deviennent inutilisables.

gpg2 --export <id> -o <fichier> -a
Exporte la clef publique indiquée en format ASCII de façon à pouvoir la transférer facilement par courriel. Le suffixe habituel pour ce type de fichiers est .asc.
gpg2 --import <fichier>
Importe dans mon trousseau les clefs publiques contenues dans le fichier indiqué.
gpg2 --fingerprint <id>

Affiche l’empreinte de la clef indiquée.

Cette empreinte est réputée unique et permet d’identifier une clef de manière sûre.

gpg2 --sign-key <id>

Signe une clef publique.

Cette opération permet de certifier que la clef indiquée correspond bien au propriétaire déclaré. À faire après s’être assuré de la validité de la clef, par exemple si elle vous a été remise en main propre par son propriétaire ou si vous avez vérifié son empreinte à partir d’une source différence de celle qui vous a fourni la clef.

gpg2 -k
Liste toutes les clefs publiques présentes dans mon trousseau.
gpg2 -K
Liste toutes les clefs secrètes présentes dans mon trousseau.
gpg2 --locate-keys <id>
Liste les clefs publiques accessibles en utilisant la même procédure que la recherche utilisée pour le chiffrement, en particulier cette recherche fait appel aux éventuelle procédures externes définies dans la configuration de GnuPG.

Chiffrement

gpg2 --encrypt-files -r <id> <fichier> ...

Chiffre un ou plusieurs fichiers avec la clef publique indiquée. Les fichiers chiffrés reçoivent le suffixe .gpg. Il est possible d’indiquer plusieurs destinataires (clef publiques) en répétant le paramètres -r. Le fichier d’origine est conservé intact.

Si vous n’incluez pas votre propre clef publique, vous ne pourrez pas déchiffrer le fichier produit. Vous pouvez, dans le fichier de configuration de GnuPG (~/.gpg/gpg.conf), ajouter l’option encrypt-to <id> en indiquant votre propre clef publique pour qu’elle soit automatiquement ajoutée lors de chaque chiffrement. Le paramètre --no-encrypt-to permet alors de ne pas chiffrer avec votre clef.

Déchiffrement

gpg2 --decrypt-files <fichier> ...
Déchiffre un ou plusieurs fichiers. Le nom des fichiers soit se terminer par un suffixe indiquant un chiffrement (.gpg, .asc, .pgp, etc.). Le suffixe est supprimé pour produire le nom du fichier en clair. Si ce fichier existe déjà, il est demandé à l’utilisateur de confirmer son écrasement.
gpg2 --list-packets <fichier>
Analyse le contenu d’un fichier chiffré (sans le déchiffrer). Utile en particulier pour savoir quelles sont les clefs utilisées pour le chiffrement et vérifier ainsi la liste des destinataires.

Last updated: Thu 14 March 2024