diff --git a/HowtoGPG.md b/HowtoGPG.md index f5b511a2..28b81d8a 100644 --- a/HowtoGPG.md +++ b/HowtoGPG.md @@ -10,14 +10,12 @@ GnuPG permet le chiffrement et la signature de vos données ainsi que de vos com ## Installation -GnuPG 1 et 2 sont disponibles dans Debian, il faut utiliser la version 2 : +GnuPG 2 est maintenant la version par défaut dans Debian : ~~~ -# apt install gnupg2 +# apt install gnupg ~~~ -> *Note* : c'est la version par défaut à partir de Debian 9 (Stretch) - ## Générer une clé GPG @@ -33,14 +31,14 @@ Une autre astuce est de disposer d'une clé matériel RNG. On génère par la suite notre clef, on conseille la plus longue possible (4096) : ~~~ -$ gpg2 --gen-key -$ gpg2 --full-generate-key # Pour pouvoir choisir, notamment, la taille de la clé. +$ gpg --gen-key +$ gpg --full-generate-key # Pour pouvoir choisir, notamment, la taille de la clé. ~~~ Une fois que vous avez créé votre clef, vous pouvez afficher son fingerprint : ~~~ -$ gpg2 --list-secret-keys +$ gpg --list-secret-keys > Key fingerprint = 677F 54F1 FA86 81AD 8EC0 BCE6 7AEA C4EC 6AAA 0A97 ~~~ @@ -66,6 +64,46 @@ $ gpg --output doc.sig --clearsign doc L'option `--clearsign` permet de ne pas compresser le fichier et de conserver le format initial, pratique pour du texte. +## Créer une sous-clef pour signer + +Il est conseillé de ne pas garder la clef principale sur la machine. Avoir une sous-clef accessible pour l’usage régulier est cependant pratique. + +~~~ +$ gpg --edit-key $identifiant_long_de_la_clef +[…] +gpg> addkey +Please select what kind of key you want: + (3) DSA (sign only) + (4) RSA (sign only) + (5) Elgamal (encrypt only) + (6) RSA (encrypt only) + (14) Existing key from card +Your selection? 4 +RSA keys may be between 1024 and 4096 bits long. +What keysize do you want? (3072) 4096 +[…] +gpg> save +~~~ + +La sous-clef de signature peut maintenant être exportée pour être utilisée sur une autre machine connectée à Internet. + +~~~ +gpg --armor --export-secret-subkeys $identifiant_long_de_la_clef > Psubkey.asc +~~~ + +La clef primaire peut aussi être exportée pour être stockée en lieu sûr. + +~~~ +gpg --armor --export-secret-keys $identifiant_long_de_la_clef > PMkey.asc +~~~ + +La clef primaire, maintenant stockée en lieu sûr, peut être supprimée du trousseau local, puis la sous-clef privée importée de nouveau. + +~~~ +gpg --delete-secret-key $identifiant_long_de_la_clef +gpg --import Psubkey.asc +~~~ + ## Configuration ### Agent GPG @@ -104,7 +142,7 @@ GPG et l'agent GPG peuvent être utilisés via des cartes a puces (smartcard) ce La carte à puce (ou le token USB) est ensuite accessible via la commande suivante : ~~~ -$ gpg2 --card-edit +$ gpg --card-edit ~~~ #### Quel choix de smartcard ? @@ -146,15 +184,23 @@ StreamLocalBindUnlink yes Pour pouvoir utiliser gpg sur l’hôte distant sans clef privée, il faut tout de même que la clef publique soit présente dans le trousseau. Sur la machine locale, exporter la clef publique. + ~~~ -$ gpg --armor --export > clef.asc +$ gpg --armor --export $identifiant_long_de_la_clef > clef.asc $ rsync -avP clef.asc tunnel-gpg:. ~~~ -Sur la machine distante, importer la clef publique. +Sur la machine distante, importer la clef publique et augmenter son niveau de confiance. ~~~ $ gpg --import clef.asc +$ gpg --edit-key $identifiant_long_de_la_clef +gpg> trust +[…] +Your decision? 5 +Do you really want to set this key to ultimate trust? (y/N) y +[…] +gpg> save ~~~ Une fois connecté à l’hôte, l’utilisation de gpg sur l’hôte distant va maintenant s’appuyer sur le l’agent GPG de la machine locale : si la phrase secrète n’est pas déjà en cache, ou si son utilisation nécessite une carte à puce, elle sera demandée.