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