Résumé des commandes GnuPG
Encore un petit billet rapide pour résumer les principales commandes gpg
- Création/récupération d’une clef
- Chiffrer/déchiffrer symétriquement
- Chiffrer/déchiffrer assymétriquement
- Créer/vérifier une signature
- Intégration à un client mail
- Lecture utile
Création/récupération d’une clef
Création
ajout d’une photo
Récupération
Récupération manuelle
Récupération via un serveur de clefs
Chiffrer/déchiffrer symétriquement
Depuis l’entrée standard vers la sortie standard
$ echo "Message à chiffrer" | gpg --armor -c
-----BEGIN PGP MESSAGE-----
jA0ECQMC5qKy02G9DIf/0kkBmdIaeMgzIRnRKIlYBWOgxu4lBUy1fAD/vXLV9pp4
jvQnbXdqboWP2OuvWVjEfMLlL4GP5ZfWY0BlI5BWmkjtsZs5vDA1+u8s
=ADNn
-----END PGP MESSAGE-----
L’option --armor
permet d’obtenir une sortie uniquement composée de caractères ASCII. Remarquons que gpg demandera deux fois de saisir la passphrase via une interface sécurisée.
Bash permet également d’injecter du texte sur l’entrée standard d’une commande via les Here strings <<<
et Here documents <<
.
$ gpg --armor -c <<< "Message à chiffrer"
-----BEGIN PGP MESSAGE-----
jA0ECQMCzJTyKzp9UP//0kkB08tlhdRSv9nYD+QyZKP7kvYja+ehvkr9qfMzq4J5
SGaykkGU3PzHwj3jgovfwLNGmExgagvZsCuCCruTLH0plxPO92BHMh41
=Ugag
-----END PGP MESSAGE-----
$ gpg --armor -c << EOF
> Message à chiffrer
> EOF
-----BEGIN PGP MESSAGE-----
jA0ECQMCiA3/VT6dnCP/0kkBPLM9j6rAhT71WWvQa9NTLl/TZB5WP5MOSZxWOGoR
/ocu1jQpYneV38yr6u0Yjwor9sfQlH90hnP87m3X6zfCeI4Z+AmNcmsm
=XAed
-----END PGP MESSAGE-----
Nous pouvons remarquer que, mis à part l’entête jA0ECQMC
, les trois résultats sont à chaque fois différents alors que le texte à chiffrer est toujours le même. Deux raisons à cela. Principalement, le message est chiffré à l’aide d’une clef de session aléatoire qui elle est chiffrée à l’aide de la passphrase symétrique. Accessoirement, il semblerait aussi qu’un Timestamp soit inclus au message.
Pour déchiffrer depuis l’entrée standard, on pipe simplement sur gpg -d
$ echo "Message à chiffrer" | gpg --armor -c | gpg -d
gpg: données chiffrées avec AES256
gpg: chiffré avec 1 phrase secrète
Message à chiffrer
Ou de façon équivalente :
$ gpg --armor -c <<< "Message à chiffrer" | gpg -d
$ ( gpg --armor -c | gpg -d ) << EOF
Message à chiffrer
EOF
Remarquez que la passphrase n’est demandée qu’au moment du chiffrement. Ce comportement curieux est du au fait que gpg utilise un système de cache, système qui peut être désactivé via l’option --no-symkey-cache
.
$ echo "Message à chiffrer" | gpg --no-symkey-cache --armor -c | gpg -d
gpg: données chiffrées avec AES256
gpg: chiffré avec 1 phrase secrète
Message à chiffrer
Cette fois-ci la passphrase a bien été demandée trois fois (deux pour chiffrer, et une pour déchiffrer).
Pour terminer, on remarque qu’avec la version de gpg que j’utilise, le chiffrement symmétrique par défaut est AES256. Si pour une raison quelconque, vous souhaitez choisir un autre algorithme, cela est possible via l’option --cipher-algo
. Afin de savoir quel paramètre lui passer en argument (autrement dit, afin de savoir quels sont les algortihmes de chiffrement symétrique auxquels gpg a accès), il faut taper au préalable :
$ gpg --version
gpg (GnuPG) 2.2.12
libgcrypt 1.8.4
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[...]
Algorithmes pris en charge :
Clef publique : RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Chiffrement : IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
Hachage : SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression : Non compressé, ZIP, ZLIB, BZIP2
Tentons un chiffrement TwoFish :
$ echo "Message à chiffrer" | gpg --armor -c --cipher-algo twofish
-----BEGIN PGP MESSAGE-----
jA0ECgMC34mJeHovr4z/0kkB3ZdoUOYkwBUihMeVA5JBgH7+Yfo2f8jzPorypHUR
Rjb6LqbL5PadRd2yziy/0V6BCzkQv180QdFeGccf+RQsRdy55S0o1qjp
=3cLx
-----END PGP MESSAGE-----
Depuis un fichier vers un fichier
Chiffrer/déchiffrer assymétriquement
Depuis l’entrée standard vers la sortie standard
Depuis un fichier vers un fichier
Créer/vérifier une signature
Intégrée au fichier
Détachée du fichier
Intégration à un client mail
Lecture utile
https://gnupg.org https://gnupg.org/documentation/guides.html
RFC 4880 sur le format des messages OpenPGP
PGP et GPG, Assurer la confidentialité de ses e-mails et fichiers, de Michael W. Lucas, collection Accès libre aux éditions Eyrolles. Un peu daté et pas très détaillé au niveau de la ligne de commande. Néanmoins sa lecture est très instructive pour apprendre la logique PGP/GPG, le réseau de confiance, la gestion des clefs etc.