mirroir readonly du Gitit wiki.evolix.org (attention, ne rien commiter/merger sur ce dépôt) https://wiki.evolix.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

HowtoGPG.md 4.9 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
1 year ago
3 years ago
1 year ago
3 years ago
3 years ago
3 years ago
1 year ago
1 year ago
1 year ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
1 year ago
1 year ago
1 year ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. ---
  2. categories: security
  3. title: Howto GnuPG
  4. ...
  5. * Documentation : <https://gnupg.org/documentation/index.html>
  6. [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).
  7. GnuPG permet le chiffrement et la signature de vos données ainsi que de vos communication.
  8. ## Installation
  9. GnuPG 1 et 2 sont disponibles dans Debian, il faut utiliser la version 2 :
  10. ~~~
  11. # apt install gnupg2
  12. ~~~
  13. > *Note* : c'est la version par défaut à partir de Debian 9 (Stretch)
  14. ## Générer une clé GPG
  15. * Guide de A à Z écrit par Daniel Kahn Gillmor, mainteneur GPG dans Debian : <https://riseup.net/en/security/message-security/openpgp/best-practices>
  16. * Guide de création de clé GPG par Debian : <https://keyring.debian.org/creating-key.html>
  17. Si vous ne souhaitez pas lire ces guides 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.
  18. Une fois que vous vous êtes assuré d'avoir une configuration adéquate, il vous faut générer votre clef.
  19. La génération d'une clé peut être très longue si vous avez un faible réservoir d'entropie, vous pouvez générer de l'entropie en bougeant la souris et en tapant sur le clavier, ou en installant le logiciel `haveged`.
  20. Une autre astuce est de disposer d'une clé matériel RNG.
  21. On génère par la suite notre clef, on conseille la plus longue possible (4096) :
  22. ~~~
  23. $ gpg2 --gen-key
  24. $ gpg2 --full-generate-key # Pour pouvoir choisir, notamment, la taille de la clé.
  25. ~~~
  26. Une fois que vous avez créé votre clef, vous pouvez afficher son fingerprint :
  27. ~~~
  28. $ gpg2 --list-secret-keys
  29. > Key fingerprint = 677F 54F1 FA86 81AD 8EC0 BCE6 7AEA C4EC 6AAA 0A97
  30. ~~~
  31. ## Importer une signature
  32. ~~~
  33. $ gpg --import fichier.asc
  34. ~~~
  35. ## Lister les signatures d'une clé
  36. ~~~
  37. $ gpg --list-signatures <IDClé>
  38. ~~~
  39. ## Signer un fichier
  40. ~~~
  41. $ gpg --output doc.sig --sign doc
  42. $ gpg --output doc.sig --clearsign doc
  43. ~~~
  44. L'option `--clearsign` permet de ne pas compresser le fichier et de conserver le format initial, pratique pour du texte.
  45. ## Configuration
  46. ### Agent GPG
  47. 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 !
  48. ~~~
  49. # apt install gnupg-agent pinentry-qt
  50. ~~~
  51. `.gnupg/gpg-agent.conf` :
  52. ~~~
  53. enable-ssh-support
  54. pinentry-program /usr/bin/pinentry-qt
  55. log-file $HOME/.gnupg/gpg-agent.log
  56. ~~~
  57. Fichier `.bashrc` (ou `.zshrc`) :
  58. ~~~
  59. pgrep -u $USER gpg-agent > /dev/null || gpg-agent --daemon
  60. export GPG_TTY=$(tty)
  61. export SSH_AUTH_SOCK="/run/user/$UID/gnupg/S.gpg-agent.ssh"
  62. gpg-connect-agent updatestartuptty /bye
  63. ~~~
  64. ### Smartcard
  65. 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 :
  66. ~~~
  67. # apt install opensc pcscd scdaemon
  68. ~~~
  69. La carte à puce (ou le token USB) est ensuite accessible via la commande suivante :
  70. ~~~
  71. $ gpg2 --card-edit
  72. ~~~
  73. #### Quel choix de smartcard ?
  74. Evolix recommande la [Nitrokey Start](https://shop.nitrokey.com/shop/product/nitrokey-start-6) qui est un token USB Open Source et Open Hardware !
  75. ## Organiser une KSP
  76. Une KSP (Key Signing Party) est un évènement où l'on vérifie l'identité des personnes afin de signer leurs clés et étendre la toile de confiance PGP.
  77. Site qui détaille la toile de confiance : <https://pgp.cs.uu.nl/plot/>
  78. Voir les statistiques d'une clé : <https://pgp.cs.uu.nl/stats/IDCLE.html> ou IDCLE est remplacé par votre identifiant de clé, exemple <https://pgp.cs.uu.nl/stats/8b962943fc243f3c.html>.
  79. Il y a plusieurs manières d'organiser une KSP, mais la méthode la plus utilisé est celle du [FOSDEM](https://github.com/FOSDEM/keysigning).
  80. ### Héberger un serveur de clés
  81. On utilise [ksp-tools](https://github.com/formorer/ksp-tools) écrit en perl.
  82. ~~~
  83. # apt install libhttp-daemon-perl libcgi-pm-perl liblog-loglite-perl libproc-reliable-perl libtypes-datetime-perl
  84. # adduser --disabled-password ksp
  85. # sudo -iu ksp
  86. $ mkdir keys gpg
  87. $ git clone https://github.com/formorer/ksp-tools.git
  88. ~~~
  89. On crée une unité systemd pour lancer le démon perl.
  90. /etc/systemd/system/kspd.service
  91. ~~~
  92. [Unit]
  93. Description=KSP server.
  94. After=network.target
  95. [Service]
  96. User=ksp
  97. ExecStart=/usr/bin/perl /home/ksp/ksp-tools/bin/kspkeyserver.pl
  98. Type=forking
  99. [Install]
  100. WantedBy=default.target
  101. ~~~
  102. ### Générer la liste des clés
  103. On utilise un script du [FOSDEM](https://github.com/FOSDEM/keysigning) écrit en shell.
  104. ~~~
  105. # sudo -iu ksp
  106. $ git clone https://github.com/FOSDEM/keysigning.git fosdem-tools
  107. $ cd ~/fosdem-tools/
  108. $ ln -s ~/keys/votreVHOST/keys .
  109. $ bin/generate-keylist.sh
  110. ~~~