Comment utiliser GPG pour chiffrer et signer des messages

introduction

GPG, ou GNU Privacy Guard, est une implémentation de la cryptographie à clé publique. Cela permet la transmission sécurisée d’informations entre les parties et peut être utilisé pour vérifier que l’origine d’un message est authentique.

Dans ce guide, nous discuterons du fonctionnement de GPG et de son implémentation. Nous utiliserons un serveur Ubuntu 16.04 pour cette démonstration, mais inclurons également des instructions pour les autres distributions.

Comment fonctionne le cryptage à clé publique

Un problème auquel de nombreux utilisateurs sont confrontés est de savoir comment communiquer en toute sécurité et valider l’identité de la partie à laquelle ils parlent. De nombreux systèmes qui tentent de répondre à cette question nécessitent, au moins à un moment donné, le transfert d’un mot de passe ou d’autres informations d’identification permettant l’identification, sur un support non sécurisé.

S’assurer que seule la partie prévue peut lire

Pour résoudre ce problème, GPG s’appuie sur un concept de sécurité appelé cryptage à clé publique. L’idée est que vous pouvez diviser les étapes de chiffrement et de déchiffrement de la transmission en deux parties distinctes. De cette façon, vous pouvez distribuer librement la partie de chiffrement, à condition de sécuriser la partie de déchiffrement.

Cela permettrait un transfert de message unidirectionnel pouvant être créé et chiffré par n’importe qui, mais uniquement déchiffré par l’utilisateur désigné (celui avec la clé de déchiffrement privée). Si les deux parties créent des paires de clés publique / privée et se donnent mutuellement leurs clés de chiffrement publiques, elles peuvent toutes deux chiffrer leurs messages.

Ainsi, dans ce scénario, chaque partie a sa propre clé privée et la clé publique de l’autre utilisateur.

Valider l’identité de l’expéditeur

Un autre avantage de ce système est que l’expéditeur d’un message peut «signer» le message avec sa clé privée. La clé publique du destinataire peut être utilisée pour vérifier que la signature est effectivement envoyée par l’utilisateur indiqué.

Configurer les clés GPG

GPG est installé par défaut dans la plupart des distributions.

Si, pour quelque raison que ce soit, GPG n’est pas installé sur * Ubuntu * et * Debian *, vous pouvez mettre à jour l’index du référentiel local et l’installer en tapant:

sudo apt-get update
sudo apt-get install gnupg

Sur * CentOS *, vous pouvez installer GPG en tapant:

sudo yum install gnupg2

Pour commencer à utiliser GPG pour chiffrer vos communications, vous devez créer une paire de clés. Vous pouvez le faire en lançant la commande suivante:

gpg --gen-key

Cela vous mènera à travers quelques questions qui vont configurer vos clés:

  • Veuillez sélectionner le type de clé souhaité: * (1) RSA et RSA (par défaut) *

  • Quelle taille de clé voulez-vous? * 4096 *

  • La clé est valable pour? * 1y * (expire après 1 an. Si vous ne faites que tester, vous souhaiterez peut-être créer une clé de courte durée la première fois en utilisant un nombre tel que «3».

  • Est-ce correct? y

  • Nom réel: * votre vrai nom ici *

  • Adresse email: [email protected]

  • Commentaire: * Commentaire facultatif visible dans votre signature *

  • Changer (A), © omment, (E) mail ou (O) kay / (Q) uit? O

  • Entrez la phrase secrète: * Entrez une phrase secrète sécurisée ici (majuscules et minuscules, chiffres, symboles) *

À ce stade, + gpg + générera les clés en utilisant l’entropie. Entropy décrit l’ampleur de l’imprévisibilité et du non déterminisme existant dans un système. GPG a besoin de cette entropie pour générer un jeu de clés sécurisé.

Ce processus peut durer longtemps en fonction de l’activité de votre système et de la taille de clé que vous avez sélectionnée. Pour générer plus facilement une entropie supplémentaire, vous pouvez utiliser un outil appelé hasged. Ouvrez à nouveau un nouveau terminal et SSH sur le serveur pour configurer + haveged + sur votre serveur.

Créer un certificat de révocation

Vous devez avoir un moyen d’invalider votre paire de clés en cas d’atteinte à la sécurité ou en cas de perte de votre clé secrète. Il existe un moyen simple de le faire avec le logiciel GPG.

Cela devrait être fait dès que vous faites la paire de clés, pas quand vous en avez besoin. Cette clé de révocation doit être générée à l’avance et conservée dans un emplacement séparé et sécurisé au cas où votre ordinateur serait compromis ou inutilisable. Pour générer une clé de révocation, tapez:

gpg --output ~/ --gen-revoke

Vous serez invité à confirmer la création de la clé de révocation, puis à indiquer la raison de sa révocation. Cette information sera visible par les autres utilisateurs si la révocation est utilisée à l’avenir. Vous pouvez choisir n’importe laquelle des options disponibles, mais comme cela est fait à l’avance, vous n’avez pas les détails. Il est souvent judicieux de créer un certificat de révocation pour chacun des scénarios probables pour une flexibilité maximale.

Ensuite, il vous sera demandé de fournir un commentaire et, enfin, de confirmer les sélections. Avant de créer le certificat de révocation, vous devez entrer la phrase secrète de votre clé GPG pour confirmer votre identité. Le certificat de révocation sera écrit dans le fichier spécifié par l’indicateur + - output + (+ revocation.crt + dans notre exemple):

OutputRevocation certificate created.

Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable.  But have some caution:  The print system of
your machine might store the data and make it available to others!

Vous devez immédiatement limiter les autorisations sur le fichier de certificat généré afin d’empêcher les accès non autorisés:

chmod 600 ~/

Le certificat de révocation doit être sécurisé afin que les autres utilisateurs ne puissent pas révoquer votre clé. Comme le message l’indique, vous devez envisager de sauvegarder le certificat sur d’autres machines et de l’imprimer, dans la mesure où vous pouvez le sécuriser correctement.

Comment importer des clés publiques d’autres utilisateurs

GPG serait plutôt inutile si vous ne pouviez pas accepter d’autres clés publiques de personnes avec lesquelles vous souhaitez communiquer.

Vous pouvez importer la clé publique de quelqu’un de différentes manières. Si vous avez obtenu une clé publique d’un utilisateur dans un fichier texte, GPG peut l’importer à l’aide de la commande suivante:

gpg --import

Il est également possible que la personne avec laquelle vous souhaitez communiquer ait téléchargé sa clé sur un serveur à clé publique. Ces serveurs de clés sont utilisés pour héberger les clés publiques des utilisateurs du monde entier.

Le serveur de clé publique MIT est un serveur de clé populaire qui synchronise ses informations avec une variété d’autres serveurs. Vous pouvez rechercher des personnes par leur nom ou leur adresse électronique en cliquant ici dans votre navigateur Web:

https://pgp.mit.edu/

Vous pouvez également rechercher le serveur de clés à partir de GPG en tapant ce qui suit:

gpg --keyserver pgp.mit.edu  --search-keys

Vous pouvez utiliser cette méthode de recherche par nom ou adresse électronique. Vous pouvez importer les clés que vous avez trouvées en suivant les instructions.

Comment vérifier et signer les clés

Bien que vous puissiez distribuer librement votre fichier de clé publique généré et que les gens puissent l’utiliser pour vous contacter de manière sécurisée, il est important de pouvoir faire confiance au fait que la clé appartient à ceux que vous pensez être au cours de la transmission initiale de la clé publique.

Vérifier l’identité de l’autre personne

Comment savez-vous que la personne qui vous donne la clé publique est ce qu’elle dit être? Dans certains cas, cela peut être simple. Vous êtes peut-être assis à côté de la personne avec votre ordinateur portable à la fois ouvert et en train d’échanger des clés. Cela devrait être un moyen assez sûr d’identifier que vous recevez la clé correcte et légitime.

Mais il existe de nombreuses autres circonstances dans lesquelles un tel contact personnel n’est pas possible. Vous pouvez ne pas connaître personnellement l’autre partie ou vous pouvez être séparé par une distance physique. Si vous ne souhaitez jamais communiquer sur des canaux non sécurisés, la vérification de la clé publique peut être problématique.

Heureusement, au lieu de vérifier l’ensemble des clés publiques des deux parties, vous pouvez simplement comparer l’empreinte digitale dérivée de ces clés. Cela vous donnera une assurance raisonnable que vous utilisez tous les deux la même information de clé publique.

Vous pouvez obtenir l’empreinte d’une clé publique en tapant:

gpg --fingerprint
Outputpub   4096R/311B1F84 2013-10-04
     Key fingerprint =
uid                  Test User <[email protected]>
sub   4096R/8822A56A 2013-10-04

Cela produira une chaîne de nombres beaucoup plus gérable à comparer. Vous pouvez comparer cette chaîne avec la personne elle-même ou avec une autre personne ayant accès à cette personne.

Signer leur clé

La signature d’une clé indique à votre logiciel que vous faites confiance à la clé qui vous a été fournie et que vous avez vérifié qu’elle est associée à la personne en question.

Pour signer une clé que vous avez importée, tapez simplement:

gpg --sign-key

Lorsque vous signez la clé, cela signifie que vous vérifiez que vous faites confiance à la personne qui est ce qu’elle prétend être. Cela peut aider d’autres personnes à décider si elles doivent également faire confiance à cette personne. Si une personne vous fait confiance et s’aperçoit que vous avez signé la clé de cette personne, elle risque également davantage de faire confiance à son identité.

Vous devez permettre à la personne dont vous vous connectez la clé de tirer parti de votre relation de confiance en lui renvoyant la clé signée. Vous pouvez le faire en tapant:

gpg --output ~/ --export --armor

Vous devrez taper à nouveau votre phrase secrète. Ensuite, leur clé publique, signée par vous, sera affichée. Envoyez-les-leur afin qu’ils puissent bénéficier de votre «sceau d’approbation» lorsqu’ils interagissent avec d’autres.

Lorsqu’ils reçoivent cette nouvelle clé signée, ils peuvent l’importer en ajoutant les informations de signature que vous avez générées dans leur base de données GPG. Ils peuvent le faire en tapant:

gpg --import ~/

Ils peuvent maintenant démontrer à d’autres personnes que vous croyez que leur identité est correcte.

Comment rendre votre clé publique hautement disponible

En raison de la manière dont le chiffrement de clé publique est conçu, il n’ya rien de malicieux qui puisse arriver si des inconnus ont votre clé publique.

Dans cet esprit, il peut être avantageux de rendre votre clé publique accessible au public. Les gens peuvent ensuite trouver vos informations pour vous envoyer des messages en toute sécurité dès la première interaction.

Vous pouvez envoyer votre clé publique à n’importe qui en le demandant au système GPG:

gpg --output ~/ --armor --export
Output-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)

mQINBFJPCuABEACiog/sInjg0O2SqgmG1T8n9FroSTdN74uGsRMHHAOuAmGLsTse
9oxeLQpN+r75Ko39RVE88dRcW710fPY0+fjSXBKhpN+raRMUKJp4AX9BJd00YA/4
EpD+8cDK4DuLlLdn1x0q41VUsznXrnMpQedRmAL9f9bL6pbLTJhaKeorTokTvdn6
5VT3pb2o+jr6NETaUxd99ZG/osPar9tNThVLIIzG1nDabcTFbMB+w7wOJuhXyTLQ
JBU9xmavTM71PfV6Pkh4j1pfWImXc1D8dS+jcvKeXInBfm2XZsfOCesk12YnK3Nc
u1Xe1lxzSt7Cegum4S/YuxmYoh462oGZ7FA4Cr2lvAPVpO9zmgQ8JITXiqYg2wB3
. . .

Vous pouvez ensuite envoyer ce fichier à l’autre partie via un support approprié.

Si vous souhaitez publier votre clé sur un serveur de clés, vous pouvez le faire manuellement à l’aide des formulaires disponibles sur la plupart des sites de serveurs.

Une autre option consiste à le faire via l’interface GPG. Recherchez votre identifiant de clé en tapant:

gpg --list-keys

La partie en surbrillance dans la sortie ci-dessous correspond à l’ID de clé (recherchez le + pub dans la colonne de gauche si vous ne savez pas lequel utiliser). C’est un moyen simple de référencer la clé au logiciel interne.

Outputpub   4096R/ 2013-10-04
uid                  Test User <[email protected]>
sub   4096R/8822A56A 2013-10-04

Pour télécharger votre clé sur un certain serveur de clés, vous pouvez ensuite utiliser cette syntaxe:

gpg --send-keys --keyserver pgp.mit.edu

La clé sera téléchargée sur le serveur spécifié. Ensuite, il sera probablement distribué à d’autres serveurs clés dans le monde entier.

Crypter et décrypter des messages avec GPG

Vous pouvez facilement chiffrer et déchiffrer des messages après avoir partagé vos clés avec votre correspondant.

Crypter les messages

Vous pouvez chiffrer les messages à l’aide de l’indicateur «–encrypt» pour GPG. La syntaxe de base serait:

gpg --encrypt --sign --armor -r

Cela crypte le message à l’aide de la clé publique du destinataire, le signe avec votre propre clé privée pour garantir qu’il provient de vous et affiche le message au format texte au lieu d’octets bruts. Le nom de fichier sera le même que le nom de fichier d’entrée, mais avec une extension + .asc +.

Si vous souhaitez pouvoir lire le message crypté, vous devez inclure un deuxième destinataire «-r» avec votre propre adresse électronique. En effet, le message sera chiffré avec la clé publique de chaque personne et ne pourra être déchiffré qu’avec la clé privée associée.

Ainsi, s’il était uniquement chiffré avec la clé publique de l’autre partie, vous ne pourriez plus afficher le message, à moins d’obtenir d’une manière ou d’une autre leur clé privée. En vous ajoutant comme deuxième destinataire, le message est crypté à deux reprises, une pour chaque destinataire.

Déchiffrer les messages

Lorsque vous recevez un message, appelez simplement GPG dans le fichier de message:

gpg .asc

Le logiciel vous invitera si nécessaire.

Si, au lieu d’un fichier, vous avez le message sous forme de flux de texte brut, vous pouvez le copier et le coller après avoir tapé + gpg + sans aucun argument. Vous pouvez appuyer sur «CTRL-D» pour indiquer la fin du message et GPG le déchiffrera pour vous.

Clé de maintenance

Vous devrez peut-être utiliser régulièrement un certain nombre de procédures pour gérer votre base de données de clés.

Pour répertorier vos clés GPG disponibles que vous avez d’autres personnes, vous pouvez émettre cette commande:

gpg --list-keys

Vos informations de clé peuvent devenir obsolètes si vous utilisez des informations extraites de serveurs à clé publique. Vous ne voulez pas vous fier aux clés révoquées, car cela signifierait que vous faites confiance à des clés potentiellement compromises.

Vous pouvez mettre à jour les informations clés en émettant:

gpg --refresh-keys

Cela va chercher de nouvelles informations sur les serveurs de clés.

Vous pouvez extraire des informations d’un serveur de clé spécifique en utilisant:

gpg --keyserver  --refresh-keys

Vous pouvez recevoir des messages d’erreur si l’une de vos clés est introuvable sur le serveur de clés.

Conclusion

Utiliser correctement GPG peut vous aider à sécuriser vos communications avec différentes personnes. Ceci est extrêmement utile, en particulier pour traiter des informations sensibles, mais également pour traiter des messages ordinaires et quotidiens.

En raison de la manière dont certaines programmes cryptés peuvent signaler certaines communications chiffrées, il est recommandé d’utiliser le chiffrement pour tout, et pas seulement pour les données «secrètes». Il sera donc plus difficile pour les gens de savoir quand vous envoyez des données importantes ou simplement un bonjour amical.

Related