PGP - GPG
Sources
Signification, désambiguation
PGP (Pretty Good Privacy) est un logiciel de chiffrement crée par Phil Zimmerman, qui utilise une suite de hashage, chiffrement, clefs symétriques et asymétriques, etc... dans le but de fournir du chiffrement et de l'authentification dans les communications. Il peut être utilisé pour signer, chiffrer du texte, des mails, des fichiers, et même des partitions de disque. PGP suit le standard OpenPGP ainsi que la RFC 4880.
GPG (Pour "Gnu Privacy Guard", ou GnuPG ce qui est vachement mieux) est une *implémentation* de PGP. Il est intéropérable avec les autres car compliant avec la RFC4880.
Mise en oeuvre de GnuPG
Je pars d'une machine avec différent users pour simuler le fait de se connecter en SSH.
Plugin VIM
La source donne un plugin vim permettant de lire les fichiers chiffrés à la volée - je le met en oeuvre, je cite :
sudo mkdir -p /etc/skel/.vim/pack/bundle/start sudo apt install -y git sudo git clone https://github.com/jamessan/vim-gnupg.git /etc/skel/.vim/pack/bundle/start/vim-gnupg
Créer /etc/skel/.vimrc avec:
/etc/skel/.vimrc
Puis enfin, on donne des variables relatives à l'agent pour qu'il fonctionne correctement (je passe les détails...)
sudo bash -c "cat >> /etc/profile.d/gpg.sh" << "EOF" GPG_TTY=`tty` export GPG_TTY EOF
Users
Ma machine a 5 users (foo, bar, baz, qux, fred) en plus du mien. On pourra se connecter en SSH local pour simuler.
GnuPG
Il est installé de base sur Deb12, en version 2.2.27 dans mon cas:
justine@debian:~$ gpg --version gpg (GnuPG) 2.2.27 libgcrypt 1.8.8 Copyright (C) 2021 Free Software Foundation, Inc. License GNU GPL-3.0-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. Home: /home/justine/.gnupg Supported algorithms: Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 Compression: Uncompressed, ZIP, ZLIB, BZIP2
On voit qu'ECDH est supporté. On peut lister les curves ECDH supportées avec :
justine@debian:~$ gpg --with-colons --list-config curve cfg:curve:cv25519;ed25519;nistp256;nistp384;nistp521;brainpoolP256r1;brainpoolP384r1;brainpoolP512r1;secp256k1
Fonctionnement et Génération des clefs
Quoi qu'est-ce ?
GPG utilise à la fois le chiffrement symétrique et asymétrique:
- Des clefs publiques pour chiffrer les fichiers et vérifier les signatures
- Des clefs privées pour signer les fichiers et les déchiffrer.
On a différent type de clefs avec différentes capacités.
Ces clefs sont appellées:
- Keys (clefs primaires) : ont des capacités de chiffrement et signature. "sec" identifie la clef secrète et "pub" la clef publique.
- Subkeys (clefs liées à la clef primaire) : ssb est la subkey secrète, sub est la subkey publique.
Capacité | Description | Key | Subkey |
---|---|---|---|
C | Certification - Certifie une identité. Une subkey ne peut pas le faire. | X | |
S | Signer d'autres clefs ou des données. | X | X |
E | Chiffrer ("encrypting"). | X | |
A | Authent. Par exemple, SSH, TLS avec GnuTLS... | X |