[GnuPG](https://gnupg.org/) est une implémentation complète et libre du standard OpenPGP défini par la [RFC4880](https://www.ietf.org/rfc/rfc4880.txt).
GnuPG permet le chiffrement et la signature de vos données ainsi que de vos communication.
Un excellent guide écrit par Daniel Kahn Gillmor - maintainer GPG dans Debian - est ["disponible ici"](https://riseup.net/en/security/message-security/openpgp/best-practices). Si vous ne souhaitez pas lire le guide d'un bout à l'autre, il est possible de ["télécharger ce fichier"](https://raw.githubusercontent.com/ioerror/duraconf/master/configs/gnupg/gpg.conf) et le mettre dans `~/.gnupg/gpg.conf`. Il regroupe l'ensemble des pratiques recommandées par le guide.
Une fois que vous vous êtes assuré d'avoir une configuration adéquate, il vous faut générer votre clef. Si vous êtes connectés sur un serveur headless, il vous faut lancer les commandes suivantes pour avoir assez d'entropie :
~~~
# apt install rng-tools
# rngd -r /dev/urandom
~~~
On génère par la suite notre clef, on conseille la plua longue possible (4096) :
~~~
$ gpg2 --gen-key
~~~
Une fois que vous avez créé votre clef, vous pouvez afficher son fingerprint :
L'agent GPG garde en mémoire la passphrase de vos clés mais fait aussi office d'agent SSH, ce qui vous permet d'utiliser GPG pour vos connecter sur vos serveurs !
GPG et l'agent GPG peuvent être utilisés via des cartes a puces (smartcard) ce qui permet de sécuriser vos clés GPG sur des cartes ou des tokens USB dont elles ne peuvent être extraites, l'utilisation de Smartcard nécessite les paquets suivants :