Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
cryptographie:gnupg2 [2018/10/27 09:31] – Quelques corrections d2air | cryptographie:gnupg2 [2023/01/22 10:45] (Version actuelle) – [Serveur de clés] sks-keyservers.net : This service is deprecated. d2air | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Utilisation de GNU Privacy Guard (version 2) ====== | ====== Utilisation de GNU Privacy Guard (version 2) ====== | ||
- | Ce logiciel est installé par défaut sous Linux – au moins sur Debian et Ubuntu – est désormais disponible | + | Ce logiciel est installé par défaut sous Linux – au moins sur Debian et Ubuntu – est désormais disponible en version 2 sur les distributions les plus récentes. Mon [[cryptographie: |
Les principales évolutions sont décrites [[https:// | Les principales évolutions sont décrites [[https:// | ||
Ligne 9: | Ligne 9: | ||
sudo apt update && sudo apt install rng-tools | sudo apt update && sudo apt install rng-tools | ||
</ | </ | ||
- | Pour configuer '' | + | Pour configuer '' |
- | <file sh rng-tools> | + | |
- | HRNGDEVICE=/ | + | |
- | </file> | + | |
- | Et ensuite il faudra relancer ce service avec la commande : | + | |
- | < | + | |
- | sudo service rng-tools restart | + | |
- | </ | + | |
===== Configuration de GNUPG ===== | ===== Configuration de GNUPG ===== | ||
==== Serveur de clés ==== | ==== Serveur de clés ==== | ||
Ligne 25: | Ligne 19: | ||
echo sks-keyservers.netCA.pem | sudo tee -a / | echo sks-keyservers.netCA.pem | sudo tee -a / | ||
sudo update-ca-certificates | sudo update-ca-certificates | ||
+ | rm ~/ | ||
</ | </ | ||
+ | <note warning> | ||
+ | **sks-keyservers.net** : "This service is deprecated. This means it is no longer maintained, and new HKPS certificates will not be issued. Service reliability should not be expected. | ||
+ | 2021-06-21: Due to even more GDPR takedown requests, the DNS records for the pool will no longer be provided at all." | ||
+ | </ | ||
Il faudra ensuite utiliser les paramètres suivants dans '' | Il faudra ensuite utiliser les paramètres suivants dans '' | ||
<file sh gpg.conf> | <file sh gpg.conf> | ||
Ligne 57: | Ligne 56: | ||
Nous devons nous assurer que les clés se rafraîchissent régulièrement. La meilleure façon de le faire avec Debian ou Ubuntu est d’utiliser '' | Nous devons nous assurer que les clés se rafraîchissent régulièrement. La meilleure façon de le faire avec Debian ou Ubuntu est d’utiliser '' | ||
< | < | ||
- | sudo apt-get install parcimonie | + | sudo apt install parcimonie |
</ | </ | ||
[[https:// | [[https:// | ||
Ligne 113: | Ligne 112: | ||
list-options show-uid-validity | list-options show-uid-validity | ||
verify-options show-uid-validity | verify-options show-uid-validity | ||
+ | |||
+ | # Display usage | ||
+ | list-options show-usage | ||
# Try to use the GnuPG-Agent. With this option, GnuPG first tries to connect to | # Try to use the GnuPG-Agent. With this option, GnuPG first tries to connect to | ||
Ligne 155: | Ligne 157: | ||
# " | # " | ||
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed | default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed | ||
+ | |||
+ | # Disable 3DES algorithm and SHA1 checksum | ||
+ | disable-cipher-algo 3DES | ||
+ | # to comment on older versions | ||
+ | weak-digest SHA1 | ||
+ | |||
</ | </ | ||
Le détail des différentes options possibles de ce fichier se trouvent [[https:// | Le détail des différentes options possibles de ce fichier se trouvent [[https:// | ||
Ligne 427: | Ligne 435: | ||
< | < | ||
gpg --output revoke.asc --gen-revoke '< | gpg --output revoke.asc --gen-revoke '< | ||
+ | </ | ||
+ | === Révocation d'une clef === | ||
+ | La révocation se fait avec les commandes suivantes : | ||
+ | < | ||
+ | gpg --import / | ||
+ | gpg --keyserver hkps.pool.sks-keyservers.net --send-keys A0B000FF0000FF0011111111A0B00000000000FF | ||
+ | </ | ||
+ | Et avec un dossier parallèle : | ||
+ | < | ||
+ | gpg --homedir=/ | ||
+ | gpg --homedir=/ | ||
+ | gpg --keyserver hkps.pool.sks-keyservers.net --send-keys A0B000FF0000FF0011111111A0B00000000000F | ||
+ | </ | ||
+ | ou : | ||
+ | < | ||
+ | gpg --homedir=/ | ||
+ | gpg --keyserver hkps.pool.sks-keyservers.net --send-keys A0B000FF0000FF0011111111A0B00000000000F | ||
</ | </ | ||
=== Révocation d'une sous-clef === | === Révocation d'une sous-clef === | ||
Ligne 474: | Ligne 499: | ||
< | < | ||
gpg --with-keygrip -K | gpg --with-keygrip -K | ||
- | /home/alice/ | + | /home/john/ |
------------------------------ | ------------------------------ | ||
- | sec rsa4096/ | + | sec ed25519/ |
Keygrip = D4DF0C35D3E22FA6AC37DA2E54FB03F73616A3CB | Keygrip = D4DF0C35D3E22FA6AC37DA2E54FB03F73616A3CB | ||
uid | uid | ||
</ | </ | ||
- | La clef privée xA0B00000000000FF se trouve dans le fichier '' | + | La clef privée xA0B00000000000FF se trouve dans le fichier '' |
Je vous recommande de conserver la ou les clefs privées sur un support externe dans un volume crypté avec [[https:// | Je vous recommande de conserver la ou les clefs privées sur un support externe dans un volume crypté avec [[https:// | ||
+ | |||
+ | === Double répertoire gnupg pour les clefs privées === | ||
+ | Pour éviter de manipuler l’importation et l’exportation de fichiers pour les opérations de signature de clefs ou de création de sous-clés, il est possible de créer sur un support amovible (disque, clef USB…) – et si possible chiffré – une autre configuration de GnuPG. Je vous propose de faire cela sur un volume crypté avec [[https:// | ||
+ | |||
+ | == Exportation des clefs == | ||
+ | Il faut exporter les clefs dans des fichiers : | ||
+ | < | ||
+ | gpg --armor --export 0xA0B00000000000FF > clepublique.asc | ||
+ | gpg --armor --export-secret-key 0xA0B00000000000FF > clesecrete.asc | ||
+ | gpg --armor --export-secret-subkeys 0xA0B00000000000FF > sousclessecretes.asc | ||
+ | </ | ||
+ | Avec ces commandes, la clef publique est exportée dans le fichier '' | ||
+ | == Suppression des clefs secrètes == | ||
+ | Après les avoir sauvegardées, | ||
+ | < | ||
+ | gpg --delete-secret-keys 0xA0B00000000000FF | ||
+ | gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc. | ||
+ | This is free software: you are free to change and redistribute it. | ||
+ | There is NO WARRANTY, to the extent permitted by law. | ||
+ | |||
+ | sec ed25519/ | ||
+ | |||
+ | Faut-il supprimer cette clef du porte-clefs ? (o/N) o | ||
+ | C'est une clef secrète — faut-il vraiment la supprimer ? (o/N) o | ||
+ | </ | ||
+ | La commande '' | ||
+ | == Réimporter les sous-clefs secrètes == | ||
+ | Afin de pouvoir utiliser notre configuration uniquement avec des sous-clés nous devons les réimporter : | ||
+ | < | ||
+ | gpg --import sousclesecrete.asc | ||
+ | gpg: clef 0xAAAAAAAAFFFFFFFF : clef secrète importée | ||
+ | gpg: clef 0xAAAAAAAAFFFFFFFF : « John Doe < | ||
+ | gpg: Quantité totale traitée : 1 | ||
+ | gpg: non modifiées : 1 | ||
+ | gpg: clefs secrètes lues : 1 | ||
+ | gpg: clefs secrètes importées : 1 | ||
+ | </ | ||
+ | La commande '' | ||
+ | < | ||
+ | gpg --list-secret-keys | ||
+ | / | ||
+ | ------------------------------ | ||
+ | sec# ed25519/ | ||
+ | Empreinte de la clef = AAAA BBBB CCCC DDDD EEEE FFFF 0000 1111 2222 3333 | ||
+ | uid John Doe < | ||
+ | ssb | ||
+ | ssb | ||
+ | </ | ||
+ | Le caractère ''#'' | ||
+ | |||
+ | À cause de l’absence de la clef privée maîtresse des fonctionnalités ne seront plus disponibles à l’édition, | ||
+ | < | ||
+ | gpg> addkey | ||
+ | Les parties secrètes de la clef principale ne sont pas disponibles. | ||
+ | gpg: Échec de génération de la clef : Pas de clef secrète | ||
+ | </ | ||
+ | == Configuration alternative externe == | ||
+ | < | ||
+ | gpg --homedir=/ | ||
+ | gpg: Attention : les droits du répertoire personnel « / | ||
+ | ne sont pas sûrs | ||
+ | gpg: le trousseau local « / | ||
+ | gpg: / | ||
+ | |||
+ | gpg: clef 000000FF : clef publique « John Doe < | ||
+ | gpg: clef 000000FF : clef secrète importée | ||
+ | gpg: clef 000000FF : « John Doe < | ||
+ | gpg: Quantité totale traitée : 2 | ||
+ | gpg: non modifiées : | ||
+ | gpg: clefs secrètes lues : 1 | ||
+ | gpg: clefs secrètes importées : | ||
+ | </ | ||
+ | Pour supprimer l’avertissement de cette sortie '' | ||
+ | < | ||
+ | chmod 700 / | ||
+ | </ | ||
+ | == Utilisation du répertoire alternatif == | ||
+ | Il est possible d’utiliser ce répertoire seulement comme avec '' | ||
+ | Pour éditer notre clef avec les deux répertoires la commande est la suivante : | ||
+ | < | ||
+ | gpg --homedir=/ | ||
+ | gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc. | ||
+ | This is free software: you are free to change and redistribute it. | ||
+ | There is NO WARRANTY, to the extent permitted by law. | ||
+ | |||
+ | La clef secrète est disponible. | ||
+ | |||
+ | pub ed25519/ | ||
+ | | ||
+ | sub ed25519/ | ||
+ | sub ed25519/ | ||
+ | [ ultime ] (1). John Doe < | ||
+ | |||
+ | gpg> | ||
+ | </ | ||
+ | Le paramètre obsolète '' | ||
+ | Toutes les opérations nécessitant la clé privée principale deviennent possibles, mais attention tous les changements se feront dans le répertoire alternatif ''/ | ||
+ | < | ||
+ | gpg2 --home=/ | ||
+ | </ | ||
+ | Cette commande mettra à jour que la partie publique des clés. Il faudra faire la même opération pour les clés privées, mais **il existe un problème de fusion des sous-clés**, | ||
+ | < | ||
+ | gpg --delete-secret-keys 0xA0B00000000000FF | ||
+ | gpg --homedir=/ | ||
+ | gpg --import maj-sousclesecrete.asc | ||
+ | </ | ||
+ | === Certification d'une clef publique | ||
+ | Pour signer une clef publique avec le répertoire alternatif, après avoir vérifier le fingerprint avec le correspondant, | ||
+ | < | ||
+ | gpg --homedir=/ | ||
+ | </ | ||
+ | puis dans la console les commandes '' | ||
==== Publication de la clef publique ==== | ==== Publication de la clef publique ==== | ||
Vous pouvez maintenant publier la clef publique, pour cela il faut utiliser la commande : | Vous pouvez maintenant publier la clef publique, pour cela il faut utiliser la commande : | ||
Ligne 488: | Ligne 625: | ||
gpg --send-keys 0xA0B00000000000FF | gpg --send-keys 0xA0B00000000000FF | ||
</ | </ | ||
+ | ===== GnuPG et authentification SSH ===== | ||
+ | ==== Générer une sous-clef d’authentification ==== | ||
+ | < | ||
+ | gpg --homedir=/ | ||
+ | gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc. | ||
+ | This is free software: you are free to change and redistribute it. | ||
+ | There is NO WARRANTY, to the extent permitted by law. | ||
+ | |||
+ | La clef secrète est disponible. | ||
+ | |||
+ | sec ed25519/ | ||
+ | | ||
+ | | ||
+ | ssb cv25519/ | ||
+ | | ||
+ | ssb ed25519/ | ||
+ | | ||
+ | [ ultime ] (1). John Doe < | ||
+ | |||
+ | gpg> addkey | ||
+ | Les parties secrètes de la clef principale sont stockées sur la carte. | ||
+ | Sélectionnez le type de clef désiré : | ||
+ | (3) DSA (signature seule) | ||
+ | (4) RSA (signature seule) | ||
+ | (5) Elgamal (chiffrement seul) | ||
+ | (6) RSA (chiffrement seul) | ||
+ | (7) DSA (indiquez vous-même les capacités) | ||
+ | (8) RSA (indiquez vous-même les capacités) | ||
+ | (10) ECC (signature seule) | ||
+ | (11) ECC (indiquez vous-même les capacités) | ||
+ | (12) ECC (chiffrement seul) | ||
+ | (13) Clef existante | ||
+ | Quel est votre choix ? 11 | ||
+ | |||
+ | Actions possibles pour une clef ECDSA/ | ||
+ | Actions actuellement permises : Signer | ||
+ | |||
+ | (S) Inverser la capacité de signature | ||
+ | (A) Inverser la capacité d' | ||
+ | (Q) Terminé | ||
+ | |||
+ | Quel est votre choix ? A | ||
+ | |||
+ | Actions possibles pour une clef ECDSA/ | ||
+ | Actions actuellement permises : Signer Authentifier | ||
+ | |||
+ | (S) Inverser la capacité de signature | ||
+ | (A) Inverser la capacité d' | ||
+ | (Q) Terminé | ||
+ | |||
+ | Quel est votre choix ? S | ||
+ | |||
+ | Actions possibles pour une clef ECDSA/ | ||
+ | Actions actuellement permises : Authentifier | ||
+ | |||
+ | (S) Inverser la capacité de signature | ||
+ | (A) Inverser la capacité d' | ||
+ | (Q) Terminé | ||
+ | |||
+ | Quel est votre choix ? Q | ||
+ | Sélectionnez le type de courbe elliptique désiré : | ||
+ | (1) Curve 25519 | ||
+ | (3) NIST P-256 | ||
+ | (4) NIST P-384 | ||
+ | (5) NIST P-521 | ||
+ | (6) Brainpool P-256 | ||
+ | (7) Brainpool P-384 | ||
+ | (8) Brainpool P-512 | ||
+ | (9) secp256k1 | ||
+ | Quel est votre choix ? 1 | ||
+ | Veuillez indiquer le temps pendant lequel cette clef devrait être valable. | ||
+ | 0 = la clef n' | ||
+ | < | ||
+ | <n>w = la clef expire dans n semaines | ||
+ | <n>m = la clef expire dans n mois | ||
+ | <n>y = la clef expire dans n ans | ||
+ | Pendant combien de temps la clef est-elle valable ? (0) 5y | ||
+ | La clef expire le ven. 27 oct. 2023 03:42:20 CEST | ||
+ | Est-ce correct ? (o/N) o | ||
+ | Faut-il vraiment la créer ? (o/N) o | ||
+ | De nombreux octets aléatoires doivent être générés. Vous devriez faire | ||
+ | autre chose (taper au clavier, déplacer la souris, utiliser les disques) | ||
+ | pendant la génération de nombres premiers ; cela donne au générateur de | ||
+ | nombres aléatoires une meilleure chance d' | ||
+ | |||
+ | sec ed25519/ | ||
+ | | ||
+ | | ||
+ | ssb cv25519/ | ||
+ | | ||
+ | ssb ed25519/ | ||
+ | | ||
+ | ssb ed25519/ | ||
+ | | ||
+ | [ ultime ] (1). John Doe < | ||
+ | |||
+ | gpg> save | ||
+ | </ | ||
+ | ==== Le fichier gpg-agent.conf ==== | ||
+ | Pour activer le support SSH dans l' | ||
+ | <file sh gpg-agent.conf> | ||
+ | enable-ssh-support | ||
+ | </ | ||
+ | ==== Le fichier sshcontrol ==== | ||
+ | Pour indiquer à GnuPG notre clef d’authentification pour SSH nous ajouterons son identifiant (keygrip) dans le fichier '' | ||
+ | < | ||
+ | gpg -k --with-keygrip | ||
+ | / | ||
+ | ------------------------------ | ||
+ | pub | ||
+ | Empreinte de la clef = A0B0 00FF 0000 FF00 1111 1111 A0B0 0000 0000 00FF | ||
+ | Keygrip = AABBCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD | ||
+ | uid [ ultime ] John Doe < | ||
+ | sub | ||
+ | Keygrip = BBCCDD00000000000000000000000000000000EE | ||
+ | sub | ||
+ | Keygrip = CCDDEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||
+ | sub | ||
+ | Keygrip = DDEEFF00000000000000000000000000000000GG | ||
+ | </ | ||
+ | Nous récupérons la clé d' | ||
+ | < | ||
+ | echo " | ||
+ | </ | ||
+ | Le chiffre après l’identifiant est la durée en seconde pendant laquelle l’agent gardera la clé en mémoire. Si '' | ||
+ | <file sh sshcontrol> | ||
+ | DDEEFF00000000000000000000000000000000GG 0 | ||
+ | </ | ||
===== Logiciels ===== | ===== Logiciels ===== | ||
* [[https:// | * [[https:// | ||
Ligne 503: | Ligne 768: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||