GPG
Création d'une clé
gpg --full-gen-key
On choisi RSA and RSA
avec une taille de 4096 (le maximum).
Création d'une sous-clé de signature
gpg --quick-addkey <identifiant> rsa3072 sign 0 # ou 1y pour une expiration de 1 an
Envoyer la clé sur un serveur de clé
gpg --keyserver keyserver.ubuntu.com --send-keys <identifiant>
Crée une sauvegarde de la clé
Sauvegarde numérique
Clé privée
# clé secrete
gpg --export-secret-key -o <identifiant>.secret.asc -a <identifiant>
Stocker la clé sur au moins deux support chiffrés et les stocker à des endroits différents.
Clés publiques et base de confiance
Les clés publiques et la base de confiance peuvent-être versionnées dans un dépôt git
.
# keyring
gpg --export -o keyring.asc -a
# base de confiance
gpg --export-ownertrust > ownertrust.txt
git add . && git ci -m "feat: update keyring and/or ownertrust" && git push
Sauvegarde papier
gpg --export-secret-key <identifiant> | paperkey --output <identifiant>.secret.paper.txt
Imprimer le fichier généré et le stocker dans un endroit secret et sur (la sauvegarde papier n'est pas chiffré).
Certificat de révocation
gpg --output <identifiant>.rev.asc --gen-revoke <identifiant>
Stocker le certificat sur un support chiffré et le stocker à un endroit différent de la sauvegarde des clés.
Nettoyage
Une fois les sauvegardes à leurs places, supprimer le réperoire gpg_backup
.
wipe -r -P 20 gpg_backup
Suppression de la clé principale de signature
Une fois tout en place, on peux supprimer la clé principale de signature. Pour cela, on va exporter les sous-clés, suprimer les clés, puis réimporter les sous-clés.
gpg --export-secret-subkeys <identifiant> > /tmp/subkeys
gpg --delete-secret-key <identifiant>
gpg --import /tmp/subkeys
# on fait le ménage
wipe -P 20 /tmp/subkeys
Signer une clé
Pour signer une clé, on a besoin de la clé principale de signature. On va d'abord exporter le trousseau, utiliser la clé principale pour signer la clé, puis blabla
mkdir /tmp/gpg
cd /tmp/gpg
Exportation du trousseau et de la base de confiance actuelle
gpg --export -o keyring.asc -a
gpg --export-ownertrust ownertrust.txt
Montage de la sauvegardes de la clé privée
Monter le disque contenant la sauvegarde de la clé privée qui contient la clé de signature.
Importer la clé privée, le trousseau et la base de confiance dans un .gpg temporaire
# Création d'un .gnupg local
mkdir -p .gnupg
chmod 700 .gnupg
export GNUPGHOME=/tmp/gpg/.gnupg
# On importe les clés
gpg --import <identifiant>.secret.asc
gpg --import keyring.asc
gpg --import-ownertrust ownertrust.txt
# on signe la clé
gpg --sign-key <id>
# On exporte le keyring et le ownertrust
gpg --export -o keyring.asc -a
gpg --export-ownertrust > ownertrust.txt
Importer la clé signée dans le trousseau
Avec le GNUPGHOME
principale, on importe le keyring et le ownertrust.
gpg --import keyring.asc
gpg --import-ownertrust ownertrust.txt
Nettoyage
Démonter le support de sauvegarde, supprimer le répertoire /tmp/gpg
.
wipe -r -P 20 /tmp/gpg
Plan en cas de désastre
Perte de clé (clé non compromise)
En cas de perte de la clé, il suffit de la réimporter depuis une sauvegarde.
Restauration depuis une sauvegarde numérique
gpg --import <identifiant>.secret.asc
gpg --import keyring.asc
gpg --import-ownertrust ownertrust.txt
Restauration depuis une sauvegarde papier
La sauvegarde papier à besoin de la clé publique. On peux la récupérer depuis un serveur de clé comme keyserver.ubuntu.com.
paperkey --pubring <identifiant>.public.gpg --secrets <identifiant>.secret.paper.txt | gpg --import