GnuPG sous Windows

mercredi 4 octobre 2023
Image par Mathieu LALLEMAND.
Mathieu LALLEMAND Photo de l'auteur

GPG le chiffrement sûr et rapide.

Entre développeurs, nous devons souvent nous échanger des documents cependant s'assurer que le document ne sera ouvert et consulté que par la bonne personne est une chose délicate.

Les moins courageux transmettent l'info par les messageries chiffrées en se disant que la messagerie gère le chiffrement pour eux, les plus ignorants transmettent l'information directement par e-mail.

Les utilisateurs plus consciencieux se reposent sur un outil open-source décentralisé appelé GPG. GPG est l'acronyme de Gnu Privacy Guard.

Chiffrement asymétrique.

Si vous avez une appétence pour les mathématiques et que vous souhaitez comprendre comment fonctionne le chiffrement asymétrique utilisé dans GPG je vous conseille cette vidéo qui explique comment sont générées les clés privée et publique et comment techniquement on chiffre (et non pas crypte !) un message.

Pour ceux qui veulent aller à l'essentiel, le principe de fonctionnement est très simple :

Chaque utilisateur dispose de deux clés. Ce qui est chiffré avec une clé, peut être déchiffré que (et uniquement) par l'autre clé, et vice-versa.

Par exemple :

  • Si le propriétaire chiffre un e-mail avec sa clé n°1 (appelée clé privée), tous les destinataires disposant de sa clé n°2 (appelée clé publique) pourront lire le message. On saura alors que c'est bien le propriétaire qui est à l'origine du message. On parle dans ce cas d'usage d'une signature éléctronique.

  • Si le propriétaire chiffre un message avec la clé publique d'une autre personne (préalablement transmise), seul le propriétaire de la clé privée correspondante pourra lire ce message. On parle dans ce cas d'usage de chiffrement éléctronique.

A noter : Il est tout à fait possible de chiffrer avec une clé publique d'un tiers, puis signer avec sa clé privée un fichier. Le destinataire sera alors sûr que vous êtes bien l’émetteur du fichier, et que personne à part lui n'a pu le lire.

Si vous avez compris ces quelques lignes, vous avez compris le principe de GPG. En récupérant les clés publiques de vos collègues et en partageant la votre, vous pourrez vous échanger des informations très sensibles, sans risquer qu'elle ne soit interceptées par des tiers ou par d'autres collègues.

GPG pour Windows (GPG4Win)

Pour simplifier l'utilisatione de GPG, sous Windows il existe le programme GPG4Win. GPG4Win est l'acronyme de Gnu Privacy Guard for Windows. C'est un programme libre et open-source maintenu par une communauté de passionnés par la confidentialité des échanges.

Si ce programme a connu quelques difficultés par le passé, il a été en 2019 validé par le BSI (l'équivalent de l'ANSSI allemand) ce qui démontre sa robustesse.

GPG4Win va permettre d'installer plusieurs logiciels :

  • GnuPG (obligatoire) : qui contient les executables de chiffrement / déchiffrement, ainsi que les outils de génération des clés.
  • Kléopatra : un gestionnaire de certificats et une interface graphique universelle pour les opérations de chiffrement. Il prend en charge la gestion des certificats X.509 et OpenPGP dans le trousseau GpgSM et la réception de certificats depuis des serveurs "LDAP" (donc Active Directory).
  • GPA : Une interface graphique pour GnuPG.
  • GPOl : Une extension pour intégrer GnuPG à Microsoft Outlook.
  • GPEx : Une extension pour intégrer GnuPG à l'explorateur de fichier Windows.
  • Okular (non recommandé) : Un lecteur de fichier comme les PDF / Epub, etc. Prenant en charge les signatures GnuPG.
  • Compendium (non recommandé) : La documentation en Anglais et en Allemand de l'ensemble de GnuPG.

Je vous propose de voir en détail comment l'installer et l'utiliser

Téléchargement de Gpg4Win

Pour télécharger cet outil, rendez-vous sur la page de téléchargement officielle et cliquez sur le bouton de téléchargement.

Ce programme étant maintenu par des bénévoles, toute donation est la bienvenue. Si vous ne souhaitez pas faire de donation (pour le moment), vous pouvez cliquez sur "0€" et procéder au téléchargement.

Vérification de la signature

Il est très important pour tout ce qui concerne les outils de sécurité de vérifier les signatures des fichiers avant de les installer.

Pour cela une fois le fichier GPG4Win téléchargé, calculez son empreinte SHA256 à l'aide de la commande PowerShell suivante :

> Get-Filehash NOM_DU_FICHIER

Comparez le SHA256 obtenu avec celui indiqué sur le site. Ces deux empreintes doivent parfaitement correspondre pour que le fichier puisse être considéré comme authentique.

Si ce n'est pas le cas, supprimez le fichier et prévenez immédiatement les personnes concernées !

Dans le cas de Gpg4win-4.2.0.exe la signature SHA256 attendue est 829b5c8eb913fa383abdd4cf129a42e0f72d4e9924b2610134f593851f0ab119

Hash check

Ce fichier est donc un fichier authentique qu'on peut installer en confiance.

Installation de Gpg4win

En double-cliquant sur l'icône d'installation, l'assistant d'installation se lance :

Installation - Etape 1

Cliquez sur "Suivant""

Installation - Etape 2

Vous pouvez installer Gpg4win sans les droits d'admins. La seule différence notable est l'absence dans le clic-droit de l'explorateur des menu pour chiffrer et déchiffrer un message. Il est aussi possible que l'assistant ne réussisse par à installer le plugin outlook.

Même sans les droits d'admin, Kleopatra et GnuPG fonctionnerons parfaitement !

Installation - Etape 3

L'extension de navigateur est vraiment optionnelle, contrairement à cette copie d'écran, vous ne devriez pas en avoir besoin.

Installation - Etape 4

Choisissez le répertoire d'installation et cliquez sur "Installer""

Installation - Etape 5

A la fin de l'installation cliquez sur "Fermer"" en laissant la case Kleopatra cochée. Ceci va vous permettre de générer vos clés.

Kleopatra - Génération des clés GPG

Afin de chiffrer et déchiffrer des messages, il va vous falloir générer vos propres clés. Vous pouvez le faire en cliquant sur le bouton "Nouvelle paire de clés"

Configuration - Etape 1

Vous devez vérifier votre nom et votre adresse e-mail.

Par soucis de respect des normes, veillez à ce que votre e-mail soit complètement en minuscule

Configuration - Etape 2

Cochez la case Protéger la clé générée avec une phrase de mot de passe afin de sécuriser votre clé privée.

ATTENTION : Cette case est très importante à cocher pour la sécurité de votre clé privée !

Cliquez sur "Configuration avancée""

Configuration - Etape 3

Note: La configuration avancée permet de modifier l’algorithme de chiffrement qui sera utilisé. Kleopatra utile l'algorithme ED25519 qui est celui de référence à l'heure où ses lignes sont écrites.

Selon la criticité de vos signatures et chiffrements, vous pouvez décider d'une date de fin pour votre clé privée. Si vous ne souhaitez pas de date de fin vous pouvez décocher la case.

Cliquez ensuite sur "OK"", puis valider l'écran précédent avec "OK"".

Configuration - Etape 4

Vous devez ensuite créer votre phrase secrete permettant de chiffrer votre clé privée. Ce doit être une phrase d'au moins quatres mots que vous devrez saisir à chaque fois qu'il faudra signer un fichier. Considérez cette phrase comme votre sceau. Elle ne doit pas être notée quelque part, du moins pas sans obfuscation.

ATTENTION: Personne ne doit connaître cette phrase, vous devez l'apprendre par coeur.

Une fois votre passphrase saisie, votre clé devrait être générée et vous devriez avoir ce type de message :

Configuration - Etape 5

Vous pouvez cliquer sur "OK"" pour terminer l'assistant.

Félicitations : Vos clés sont générées !

Exporter votre clé publique

Comme nous l'avons vu durant l'introduction, pour échanger des messages avec quelqu'un, il faut que vous puissiez envoyer un message, chiffré avec la clé publique du destinataire. Il faut donc échanger vos clés publiques, et pour cela l'exporter la votre :

Opérez un clic droit sur votre clé et choisissez "Exporter..."

Export - Etape 1

Enregistrez ce fichier et envoyez le à votre destinataire, demandez lui de faire de même pour sa clé publique.

Chez NCI toutes les clés publiques sont centralisée dans un répertoire partagé. L'échange est ainsi beaucoup plus simple.

Importer une clé publique

Pour l'import de la clé, cliquez sur le bouton "Importer un certificat depuis un fichier"

Import - Etape 1

Kleopatra vous demande ensuite de certifier la clé. Pour cela votre interlocuteur devra connaitre la signature (ou empreinte) de sa clé et il est vivement recommandé d'effectuer cette procédure en face à face (En réel ou à défaut, par visio).

Import - Etape 2

Note : Pour connaitre l'empreinte de sa clé, il suffit de double cliquer sur sa clé dans Kleopatra

Cliquez sur le bouton "Certifier"

Import - Etape 3

Si l'empreinte que vous avez sous les yeux correspond à l'empreinte de votre interlocuteur (et que vous êtes sûr de son identité), cliquez sur le bouton "Certifier".

Import - Etape 4

Pour valider définitivement cette clé publique, vous devez la signer. Ceci permet de protéger cette clé publique de toute manipulation ultérieure.

En effet, un logiciel malveillant pourrait modifier vos clés et vous induire en erreur. Cette étape de signature permet de protéger les clés qu'on vous transmet.

Saisissez votre passphrase pour cela et validez avec le bouton "OK".

Un message devrait vous confirmer l'importation correcte de la clé publique de votre correspondant.

Import - Etape 5

Bravo !! Vous pourrez maintenant échanger en toute sécurité avec votre interlocuteur via des messages chiffrés et signés.

Chiffrement de données pour envoi sur un canal tiers.

Imaginons que mon collègue Arthur ai besoin d'avoir un mot de passe ou une clé d'API. Il me demande donc ce mot de passe, que je souhaite lui transmettre via Microsoft Teams.

Teams étant chiffré, on peut penser que je peux lui envoyer le mot de passe directement sans le chiffrer... Il est cependant possible que les clés de chiffrement de Teams (que je ne maîtrise pas) puissent être compromises. Les attaquant auront alors la possibilité de lire les messages que nous avons échangés et d'en extraire ce mot de passe.

Je vais donc chiffrer ce mot de passe avant de l'envoyer sur Teams.

Pour cela je me rends dans le bloc-note de Kleopatra et je saisi mon texte.

Crypt Text - Etape 1

Je choisi ensuite mon destinataire (Arthur dans mon cas) Crypt Text - Etape 2

Puis je clique sur le bouton "Chiffrer / Signer"

J'obtiens le texte suivant que je peux copier/coller dans Teams

Crypt Text - Etape 3

De son côté Arthur va copier/coller ce texte de Teams vers le bloc-note de Kleopatra, puis cliquer sur "Déchiffrer/Vérifier". Il obtiendra non seulement le message déchiffré mais aussi la certitude que je suis bien l’émetteur du message.

Ce message ayant été chiffré pour lui et uniquement pour lui, puis signé par moi, personne ne pourra le lire, ni l'altérer.

Crypt Text - Etape 4

Chiffrement de fichiers

Autre cas d'usage : Je dois envoyer une liste de comptes (logins / mots de passes) pour une migration de données à Arthur. Je peux réaliser cette opération soit par Kleopatra, soit plus rapidement avec un clic droit sur le fichier, puis le menu "Afficher plus d'options"

Crypt File - Etape 1

Choisir ensuite "Signer et chiffrer"

Crypt File - Etape 2

Reste à choisir le destinataire du fichier

Crypt File - Etape 5

Puis à signer ce fichier chiffré à l'aide de votre passphrase

Crypt File - Etape 6

Vous obtiendrez alors un fichier supplémentaire avec l'extension .gpg chiffré que vous pouvez envoyer par n'importe quel canal à votre destinaire.

Crypt File - Etape 7

Si vous tentez d'ouvrir le fichier chiffré voici ce que vous verrez :

Crypt File - Etape 8

NOTE : Vous pouvez vous servir du chiffrement pour vous même ! Comme par exemple pour protéger un fichier et empêcher sa lecture par un logiciel malveillant.

Déchiffrement d'un fichier .gpg

Pour déchiffrer un fichier, opérez un clic droit sur le fichier, et choisissez "Déchiffrer et vérifier" (ou utilisez Kleopatra) Decrypt File - Etape 1

Vous pourrez alors vérifier l'authenticité du fichier et de déchiffrer Decrypt File - Etape 2

Le fichier sera alors tout à fait lisible. Decrypt File - Etape 3

Pour aller plus loin.

Bien qu'un peu lourd en manipulation, Gpg4win permet de transmettre des informations sensibles en limitant fortement les risques de compromissions.

L'application permet aussi de s'absoudre d'une centralisation de la confiance comme dans le cas des PKI (Public Key Infrastructure) et par conséquent de fonctionner en peer-to-peer. Il est aussi possible de s'appuyer sur un tiers de confiance dans l'échange des clés pour simplifier le travail.

C'est en tout cas un outil que toutes les sociétés numérique devraient connaître et maîtriser, j'espère que cet article y aura contribué.