Espace Wiki ∂'Alembert Espace Guide de survie du SysAdmin Espace Guide de survie du Développeur Espace Institut ∂’Alembert Le Site Aide PmWikiFr Help PmWiki |
Vous êtes dans un espace restreint en écriture. (:numbered-sections format=0.A.1.a:) GNU Privacy Guard [GnuPG] est une application libre du standard OpenPGP (également connu sous le nom PGP) qui permet de chiffrer et signer vos données et vos communications, dispose d'un système polyvalent de gestion de clés ainsi que des modules d'accès pour toutes sortes de clés publiques. PrésentationDéfinitionsGnuPG est l'abréviation de GNU Privacy Guard. GnuPG est une implémentation libre (au sens de la GNU Public Licence) de PGP. GnuPG permet de chiffrer des fichiers par le biais d'un algorithme de chiffrement à clés asymétriques, c'est à dire qu'une clé permet de chiffrer le texte, et qu'une autre clé sert à déchiffrer le texte. Chiffrement par clés asymétriquesLes algorithmes de chiffrement par clés asymétriques fonctionnent grâce à deux clés: une clé publique et une clé privée. Votre clé publique permet à n'importe qui de chiffrer un message qui vous est destiné, alors que votre clé privée vous permettra de déchiffrer ce message. Votre clé privée sert aussi à signer un message que vous envoyez, et votre clé publique permet à la personne à qui vous envoyez le message de vérifier que vous en êtes bien l'auteur. Échange de clésLe problème de ce type de système par chiffrement à clés asymétriques est qu'il faut être sûr que la clé que vous possédez appartient bien à la personne à qui vous pensez qu'elle appartient. En effet, si cela est mal vérifié, ou n'est pas vérifie du tout, quelqu'un de mal intentionné (C) pourrait se placer entre vous (A) et la personne avec qui vous voulez communiquer (B). Il faut donc trouver un moyen de vérifier que la clé publique de (B) que vous avez proviens réellement de (B). Pour cela, il suffit de donner à (B), en vérifiant son identité, le fingerprint (empreinte) de sa propre clé publique. Ceci se fait généralement lorsque l'on rencontre physiquement une autre personnes utilisant GPG, en vérifiant mutuellement l'identité de l'autre personne grâce à la présentation d'une pièce d'identité, et par l'échange de cartes de visites sur lesquelles figurent l'identifiant et le fingerprint des clés GPG de chacun. Patrick Cao Huu Thien <patrick.cao_huu_thien@upmc.fr> GnuPG key 58D16D27 D7B8 7DFB 479C A02E 48A2 383C 0005 4A33 58D1 6D27
Pour réaliser un échange de clé securisée il faut donc :
Réseau de confianceIl y a maintenant une autre difficulté: comment faire confiance à des gens qu'on n'a jamais rencontré et/ou qu'on ne pourra jamais rencontrer ? Il n'est en effet pas possible de faire un échange de clés de façon securisé avec tout le monde. La solution est en faite très simple. Je vais l'illustrer par un exemple. Si (A) et (B) se font confiance absolument, si (B) et (C) se font confiance absolument, si (C) et (D) se font confiance absolument, alors (A) et (D) peuvent se faire confiance sans risques. Il existe cinq états pour la méthode de vérification de l'identité:
GnuPG calculera donc automatiquement en fonction du niveau de confiance et de la méthode de vérification de chaque lien le niveau de confiance de quelqu'un dont vous ne pouvez pas vérifier l'identité physiquement. Ce système permet donc d'établir petit à petit un réseau de confiance d'envergure internationale, qui permet d'établir des communications sécurisées sans risques d'interception de la communication par quelqu'un de malveillant. UtilisationCréer une paire de cléLa création d'une paire de clés vous pose plein de question. En cas de doute, laissez la réponse par défaut. $ gpg --gen-key [...] Voir sa paire de clésIl se peut que vous ayez de nombreuses clés, principalement les clé publiques d'autres personnes, Exporter une clé dans un fichier$ gpg --armor --export pcao > ~/patrick-public-key.asc L'option Importer une clé depuis un fichierIci, il s'agit de récupérer son ancienne paire de clé publique et privée d'une autre machine. Le principe est le même pour une clé publique des autres personnes
$ gpg --import secring.gpg gpg: key 58D16D27: secret key imported gpg: Total number processed: 1 gpg: secret keys read: 1 gpg: secret keys imported: 1
$ gpg --list-keys pcao pub 1024D/58D16D27 2005-06-23 uid Patrick Cao Huu Thien <pcao@ccr.jussieu.fr> sub 1024g/A98B1F25 2005-06-23
$ gpg --list-secret-keys /home/patrick/.gnupg/secring.gpg -------------------------------- sec 1024D/58D16D27 2005-06-23 uid Patrick Cao Huu Thien <pcao@ccr.jussieu.fr> ssb 1024g/A98B1F25 2005-06-23 Chiffrer un fichierchiffrer un fichier pour moi seulement:$ gpg --encrypt toto.txt $ ls toto* toto.txt toto.txt.gpg chiffrer un document pour gag seulement:$ gpg -r gag -e gag.txt $ ls gag* gag.txt gag.txt.gpg chiffrer un fichier pour gag et moi$ gpg -e -r gag -r pcao gag_moi.txt $ ls gag_moi* gag_moi.txt gag_moi.txt.gpg Messages possibles
lors du chiffrement, aucun mot de passe ou phrase de passe n'est demandé. C'est la signature d'un fichier qui en réclame un. Voir les clés permettant de déchiffrer:$ gpg --list-packets gag_moi.txt.gpg gpg: encrypted with 4096-bit RSA key, ID FCFC4BCCCCB1037E, created 2022-10-19 "G.A. Gerolymos <geg@ccr.jussieu.fr>" gpg: encrypted with 1024-bit ELG key, ID 0ABABD45A98B1F25, created 2005-06-23 "Patrick Cao Huu Thien <patrick.cao_huu_thien@upmc.fr>" [...] Déchiffrer un fichier
$ gpg --decrypt --output toto2.txt toto.txt.gpg You need a passphrase to unlock the secret key for user: "Patrick Cao Huu Thien <pcao@ccr.jussieu.fr>" 1024-bit ELG-E key, ID A98B1F25, created 2005-06-23 (main key ID 58D16D27) Enter passphrase: ********** $ ls toto* toto.txt toto.txt.gpg toto2.txt les options doivent être placés avant le fichier à déchiffrer. Y compris --output toto2.txt
$ gpg --decrypt gag.txt.gpg gpg: encrypted with 2048-bit ELG-E key, ID 6378A041, created 2006-03-24 "G.A. Gerolymos (gag) <geg@ccr.jussieu.fr>" gpg: decryption failed: secret key not available Signer un fichierSigner un fichier, c'est authentifier ce fichier avec une paire de clés. Il existe plusieurs façons de signer un fichier : signature dans un fichier binaire contenant le fichier et la signature (.gpg) : $ gpg --sign toto.ps You need a passphrase to unlock the secret key for user: "Patrick Cao Huu Thien <pcao@ccr.jussieu.fr>" 1024-bit DSA key, ID 58D16D27, created 2005-06-23 Enter passphrase:
$ gpg --clearsign toto.ps
$ gpg --detach-sign toto.ps Il appairait que la signature au format .sig est beaucoup plus petit que les autres. Cependant, la présence du fichier de base est nécessaire contrairement aux autres types de signature. $ ls -al toto* -rw-rw-r-- 1 patrick patrick 437397 fv 17 15:03 toto.ps -rw-r--r-- 1 patrick patrick 437633 mar 28 15:41 toto.ps.asc -rw-r--r-- 1 patrick patrick 71743 mar 28 15:40 toto.ps.gpg -rw-r--r-- 1 patrick patrick 65 mar 28 15:56 toto.ps.sig Vérifier les signatures d'un fichier$ gpg --verify toto.ps gpg: Signature made Thu 01 Jul 2001 05:26:41 PM CEST gpg: using DSA key 58D16D27 gpg: Good signature from "Patrick Cao Huu Thien <pcao@ccr.jussieu.fr>" [ultimate] Utilisation AvancéeServeur de clésCette partie permet d'importer et exporter des clés pour qu'elle soient accessibles. Configuration
keyserver hkps://keys.openpgp.org keyserver hkps://pgp.mit.edu Utilisation
gpg --search-keys 8657ABB260F056B1E5190839D9C4D26D0E604491 gpg: data source: https://keys.openpgp.org:443 (1) Matt Caswell <frodo@baggins.org> Matt Caswell <matt@openssl.org> 2048 bit RSA key D9C4D26D0E604491, created: 2013-04-30 Keys 1-1 of 1 for "8657ABB260F056B1E5190839D9C4D26D0E604491". Enter number(s), N)ext, or Q)uit > n
gpg --recv-keys 8657ABB260F056B1E5190839D9C4D26D0E604491 gpg: key D9C4D26D0E604491: public key "Matt Caswell <matt@openssl.org>" imported gpg: Total number processed: 1 gpg: imported: 1
gpg --keyserver pgp.mit.edu --send-keys 8657ABB260F056B1E5190839D9C4D26D0E604491 gpg --export votre_adresse_courriel@exemple.net | curl -T - https://keys.openpgp.org
la commande
gpg --refresh-keys gpg: refreshing 152 keys from hkps://pgp.mit.edu Mise à jour de la clé primaireLe scénario est la mise à jour de la clé primaire qui utilise un vieil algorithme devenu obsolète. Il n'est pas vraiment possible de « mettre à jour » une clé.
Sources
Liens Externes
|