Gestion correcte de clé GPG

Partagez ici vos Trucs et vos Astuces.
Répondre
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Le guide suivant Bonnes pratiques pour l'utilisation d'OpenPGP contient les bonnes pratiques liées à l'usage de clés GPG ; celles-ci sont :

1. Avoir à jour son outil GPG !
2. Configurer son fichier de config pour utiliser correctement un serveur de clé GPG :
* installer l'outil 'gnupg-curl'
* télécharger et vérifier la clé suivante: sks-keyservers.net CA
* Paramétrer son fichier ~/.gnupg/gpg.conf, en ajoutant les options suivantes :

Code : Tout sélectionner

     keyserver hkps://hkps.pool.sks-keyservers.net
     keyserver-options ca-cert-file=/repertoire_vers/sks-keyservers.netCA.pem
     keyserver-options no-honor-keyserver-url
     keyid-format 0xlong
     with-fingerprint
3. Ne pas utiliser 'gpg --refresh-keys' ou le menu correspondant dans votre logiciel de gestion GPG, mais utiliser l'outil 'Parcimonie', un démon logiciel qui rafraîchira régulièrement les informations depuis le serveur de clé, de manière anonyme et sécurisée, lentement. (il est dans les dépôts)
4. Ne pas avoir une confiance aveugle dans les clés que l'on vous fournies, qu'elles viennent du serveur de clé, et/ou différemment : vérifiez auprès de la personne ; une fois fait, vérifiez par ces étapes (entourer l'empreinte de simple, voire double, quotes) :
* Télécharger l'empreinte de la clé, depuis le serveur : gpg --recv-key 'fingerprint'
* Vérifiez l'empreinte de la clé : gpg --fingerprint 'fingerprint'
* Signez la, au moins localement : gpg --lsign-key 'fingerprint'
5. Ne pas avoir confiance dans l'ID de la clé, qu'elle soit courte ou longue ! Utilisez les empreintes digitales des clés : gpg --with-fingerprint keyfile
6. Pour créer votre propre clé, utiliser un chiffrement fort, tel que sha512, et une longueur de clés à 4096 minimum, avec le chiffrement RSA ; ajouter dans votre fichier de config personnel .gnupg/gpg.conf, les informations suivantes :

Code : Tout sélectionner

    cert-digest-algo SHA512
    default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
    personal-digest-preferences SHA512
6.1. Mettez une date d'expiration à votre clé, pas plus de deux ans !
6.2. Utilisez un calendrier qui vous rappellera de changer à temps votre clé.
7. Générez un certificat de révocation, cela vous aidera si vous avez oublier votre passphrase, et/ou que votre clé privée soit compromise/volée/perdue : gpg --output revoke.asc --gen-revoke 'fingerprint'

Pour finir, il existe un outil pour vérifier visuellement qu'une clé est correcte, à partir de son empreinte, c'est l'outil 'hkt'. Il est intégré dans le package 'hopenpgp-tools', fourni dans les dépôts officiels.
Pour s'en servir, c'est la commande suivante :

Code : Tout sélectionner

hkt export-pubkeys 'fingerprint' | hokey lint
Les tests corrects sont affichés en vert.
Tout problème avec la clé vérifiée est affiché en rouge !
Il faut alors IMPÉRATIVEMENT se méfier d'une telle clé, voire la régénérer si c'est la vôtre, après avoir configuré votre fichier de configuration personnelle, avec les recommandations ci-dessus !

----

Tout cela m'a poussé ces derniers jours à créer du code shell que j'espère complètement POSIX, un script de gestion de clés GPG par empreinte :

Le but de ce script est d'aider à la gestion de clés GPG : créer et gérer proprement une clé ... si possible à partir de son empreinte GPG.

Pour afficher l'aide : ./mng_gpg help
Pour installer et vérifier les certificats SKS : ./mng_gpg i-sks
Pour gérer une clé, à partir de son empreinte : ./mng_gpg fingerprint 'gpg:fingerprint'
Pour créer une clé : ./mng_gpg create

Donnez-lui des droits d'exécution et exécutez-le :

Code : Tout sélectionner

$ chmod 0700 mng_gpg
# ./mng_gpg
1/ La première fois, utiliser l'option pour installer et vérifier les certicats SKS - répondez aux questions, lisez bien les informations fournies !
2/ Paramètrez correctement votre fichier personnel : ~./gnupg/gpg.conf, en tenant compte des réflexions faites-ci-dessus.
IMPORTANT : Ce script ne modifie pas votre fichier personnel : ~/.gnupg/gpg.conf - c'est à vous de le faire selon les indications qu'il vous fournira après l'installation et la vérification du certificat SKS, et à la lecture des informations ci-dessus, voire dans les articles ci-dessous ...!
3/ Pour tester la validité d'une clé, utilisez l'option 'fingerprint' suivi de l'empreinte GPG - répondez aux questions ... et appréciez le résultat !

Il est possible avec de créer une clé GPG, tout aussi correctement, par le processus adéquat de création ... laissez-vous guider !

Où le télécharger :

- sur le git ...
- sur "mon" git.

-----

Sur le .org, j'avais fait plus récemment un Guide AutoDéfense Courriel GPG !
Sur mon blog, il y a une série d'articles sur GPG, reprenant les informations essentielles :
- le mémoriel "Du bon usage sécurisé de GPG"
- tout particulièrement l'article "Guide bonnes pratiques création GPG".
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4974
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Salut,
J'ai déplacé le sujet car il ne remplit pas les conditions pour un T&A sur le forum. :018:
On ne trouve dans ton T&A que des liens vers des sites extérieurs (Le Code, Le tuto). Si ces liens, pour une raison ou une autre, sont brisés le T&A devient parfaitement inutile.
Les explication fournies pour l'utilisation sont bien trop succinctes pour être utilisables, il n'y a pas de description de l'objet du code.
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

lol a écrit :Salut,
J'ai déplacé le sujet car il ne remplit pas les conditions pour un T&A sur le forum. :018:
On ne trouve dans ton T&A que des liens vers des sites extérieurs (Le Code, Le tuto). Si ces liens, pour une raison ou une autre, sont brisés le T&A devient parfaitement inutile.
Les explication fournies pour l'utilisation sont bien trop succinctes pour être utilisables, il n'y a pas de description de l'objet du code.
Soit !
J'ai fait quelques modifications ... mais je t'avoue sincèrement que je ne comprends pas en quoi ... bref, dommage !
(bon, après j'ai du mal à avoir les idées claires - et, tu en connais la raison ;-) ...)
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4974
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Salut,

Aucune critique sur le fond, le sujet est très intéressant. :good:

C'est sur la forme que ça ne collait pas (tu as fais des modification, ça va déjà mieux)
Dans ton sujet Il n'y avait pas de matière sur le forum, tu donnes des liens vers le code et vers l'article. Imagine que ces liens soient brisés un jour, et ton T&A devient inutile.

Allez, on y est presque (Le code est sur le notre Git, c'est déjà un gros plus!).
Donne un peu plus de détails et d'explications (copié/coller de ton article) et je rebascule dans T&A! :006:
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

lol a écrit :(...)
Donne un peu plus de détails et d'explications (copié/coller de ton article) et je rebascule dans T&A! :006:
Tu veux que je copie l'ensemble de l'article ???
(excuses-moi ... j'ai vraiment du mal ce matin ; je vais aller dormir à nouveau ... @tal h)
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4974
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

PengouinPdt a écrit :Tu veux que je copie l'ensemble de l'article ???
Je veux J'aimerais qu'il y ait une explication en en-tête de ton T&A pour que les néophytes comprennent de quoi il s'agit.
Tu lira ma remarque dans ton autre T&A, elle est valable ici aussi. Une explication sur l'objectif (éventuellement sur quelques mots clefs) et sur les moyens pour y parvenir (ton script).
Donc si le copié/coller de ton article suffit, vas-y.
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Voili, voilou ... en espérant que c'est bon ...
de toute façon, je ne suis pas capable de faire mieux !
+
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4974
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

PengouinPdt a écrit :Voili, voilou ... en espérant que c'est bon ...
de toute façon, je ne suis pas capable de faire mieux !
+
Super,
Merci pour ce beau Truc et Astuces. :clapping: :smile:
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

Salut, je profite de ce T&A spécialisé GPG pour remonter un petit problème que je rencontre.

Il semblerait que gpg et gpg2 ne soient pas trop compatibles... C'est assez gênant, l'un stocke ses clefs dans .gnupg/ l'autre dans .gnupg/private-keys-v1.d/.

Du coup toutes les applis ne fonctionnent pas selon la version utilisée.

Existe t'il un outil capable de synchroniser facilement/automatiquement les 2 versions ?
Vaut il mieux utiliser gpg v1 ou v2 ? Le bon sens irai vers la version la plus récente, mais je ne sais pas pourquoi j'ai l'impression qu'ici, la version 1 serait le meilleur choix.
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 4946
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

Pourquoi ne fais tu pas simplement un lien symbolique entre les 2 répertoires ?
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

le format des fichiers n'a pas l'air identique non plus
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

@vohu: bizarre ton pb !
J'utilise la v1 sous Jessie, et v2 sous OBSD. Et, j'ai le même profil utilisé, à partir de ~/.gnupg !!! (sans aucun lien symbolique, rien ...)

Il a juste fallu que je corrige l'option 'ca-cert-file' qui n'existe plus avec la v2, mais devient l'option 'hkp-cacert' intégré dans le fichier 'dirmngr.conf' - à créer pour l'occasion ...
Ensuite, sous OBSD, étant donné que, pour l'exemple, pour utiliser avec git, qui ne reconnaît que gpg v1, j'ai simplement créé un lien symbolique nommé 'gpg' vers le binaire de gpg2 ... et ça fonctionne très bien ! ;)

Aucune autre incidence, du moins, remarquée !
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

Ok ok, j'ai fait quelques lectures, et mon problème n'est pas un cas isolé. Les semble que les 2 versions ne peuvent pas travailler ensembles. Est ce qu'OpenBSD n'aurait pas résolu un problème que les distrib linux ne semblent pas vouloir corriger ?

Je rencontre ce problème sur 4 machines. Et par exemple, lorsque j'importe les clefs avec gpg2, gpg seahorse, parcimonie, hokey ne voient rien...

J'ai donc tout remis à zéro sur l'une d'elle ,et fait l'import avec gpg v1. Seahorse voit bien mes clefs maintenant, evolution aussi. Par contre, hokey et parcimonie tournent dans le vide...
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Sous OBSD, je n'ai pas gpgv1 ... mais v2 natif.

De ce que j'ai compris, moi aussi, c'est soit l'un, soit l'autre.
Que parcimonie tourne dans le vide ... peut-être a-t-il du mal à contacter les serveurs, dans sa liaison Tor, sur le protocol 443 ... les logs systèmes ?
Mais que veux-tu dire par hokey tourne dans le vide ?!
Un exemple stp ...
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

Bon, j'ai tout repris à zéro (sans tes scripts j'aimerai vraiment comprendre).

Génération des clefs sur une machine :

Code : Tout sélectionner

gpg --gen-key
gpg (GnuPG) 1.4.18; Copyright (C) 2014 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.

Sélectionnez le type de clef désiré :
   (1) RSA et RSA (par défaut)
   (2) DSA et Elgamal
   (3) DSA (signature seule)
   (4) RSA (signature seule)
Quel est votre choix ? 1
les clefs RSA peuvent faire une taille comprise entre 1024 et 4096 bits.
Quelle taille de clef désirez-vous ? (2048) 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) 
La clef n'expire pas du tout
Est-ce correct ? (o/N) o

Une identité est nécessaire à la clef ; le programme la construit à partir
du nom réel, d'un commentaire et d'une adresse électronique de cette façon :
   « Heinrich Heine (le poète) <heinrichh@duesseldorf.de> »

Nom réel : TEST TEST
Adresse électronique : test@test.fr
Commentaire : 
Vous utilisez le jeu de caractères « utf-8 ».
Vous avez sélectionné cette identité :
    « TEST <test@test.fr> »

Faut-il modifier le (N)om, le (C)ommentaire, l'(A)dresse électronique
ou (O)ui/(Q)uitter ? o
Une phrase secrète est nécessaire pour protéger votre clef secrète.

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.
..+++++

gpg: clef 21B9AF49 marquée de confiance ultime.
les clefs publique et secrète ont été créées et signées.

gpg: vérification de la base de confiance
gpg: 3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s),
     modèle de confiance PGP
gpg: profondeur : 0  valables :   3  signées :   0
     confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 3 u.
pub   4096R/21B9AF49 2016-11-30
 Empreinte de la clef = F330 BABF 0118 3FA3
uid                  TEST <test@test.fr>
sub   4096R/F58EE638 2016-11-30

Code : Tout sélectionner

hkt export-pubkeys 'fingerprint' | hokey lint
hokey (hopenpgp-tools) 0.13
Copyright (C) 2012-2014  Clint Adams
hokey comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions.
hkt (hopenpgp-tools) 0.13
Copyright (C) 2012-2014  Clint Adams
hkt comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions.
hokey: Unexpected finalization failure
Il se passe la même chose si je crée mes clefs avec ton script.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Ok, j'ai compris ce que tu n'as pas compris :p

Quand il s'agit de taper cette commande :

Code : Tout sélectionner

hkt export-pubkeys 'fingerprint' | hokey lint
Tu dois remplacer 'fingerprint' par une empreinte que tu désires tester !!!

Tel que dans le cas de la clé de test que tu viens de créer :

Code : Tout sélectionner

hkt export-pubkeys "F330 BABF 0118 3FA3'' | hokey lint

PS : Je vais modifier mon article, pour que ce soit plus clair
PS 2 : J'ai corrigé l'erreur que tu m'as transmis ;-)
(déposé sur mon git ; sera dans une heure environ, sur le git debian-fr.xyz)
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

Ha m***e alors... je suis vraiment très c*n... Et pourtant la première fois que j'ai lu ton article je l'avais fait !

J'ai une autre question par rapport à ton script. A la fin tu supprimes la clef secrète mais la réimporte immédiatement depuis le fichier, pourquoi ?

Code : Tout sélectionner

gpg --export-secret-subkeys "${gpg_email}" > "${file}"

    if [ -f "${file}" ]; then
        display_mssg "OK" "${mssg_ok_export_file}"
        confirm "${mssg_1fo_dlt_key}" && gpg --delete-secret-key "${gpg_email}"
        display_mssg "" "${mssg_1fo_import_key}" && gpg --import "${file}"
        delete_file "${file}"
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Ce n'est pas la clé secrète que l'on supprime ... normalement, c'est la sous-clé de signature que l'on supprime pour la réimporter correctement ... cela permet de mieux protéger la sous-clé en utilisant non pas ta clé maître mais les clés dites "portables".
Au cas où, relis le guide bonne pratique que j'ai écrit. Je sais que cela peut paraître bizarre, mais en faisant ainsi, gpg agit différemment ...
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Pour info, si jamais vous avez à faire avec cette erreur "gpg: keydb_search_first failed: Invalid packet" ...

Apparemment, la manière de régler ce problème est la suivante :

Code : Tout sélectionner

cp -r ~/.gnupg ~/gpgOLD
gpg --export-ownertrust > ~/gpgOLD/otrust.txt
mkdir ~/gpgNEW
chmod 700 ~/gpgNEW
export GNUPGHOME=~/gpgNEW
gpg --import gpgOLD/pubring.gpg
gpg --import gpgOLD/secring.gpg
gpg --import-ownertrust ~/gpgOLD/otrust.txt

source
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

Bon, j'ai tout repris à zéro et c'est ok cette fois.

par contre, dans ton guide, tu dis qu'il est bon d'envoyer que la sous-clef au serveur et de garder hors-ligne la clef primaire. Comment fait-on pour envoyer uniquement la sous clef ?

Lorsque je tape : gpg -v --send-key XXXXX l'id de la sous clef, il essaye systèmatiquement d'envoyer la clef principale
Répondre