« GnuPG : Créer la paire de clé gpg parfaite : clé maitre, subkeys et support smartcard (yubikey) » : différence entre les versions
Ligne 135 : | Ligne 135 : | ||
<pre>gpg --import /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/subkey_only.priv.gpg</pre> | <pre>gpg --import /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/subkey_only.priv.gpg</pre> | ||
Editez la clé | Editez la clé et définissez son niveau de confiance au maximum : | ||
<pre>gpg | <pre>gpg --edit-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951</pre> | ||
<pre> | |||
trust | |||
5 | |||
save | |||
</pre> | |||
Vérifiez l'importation : | |||
<pre> | |||
$ gpg --list-secret-keys 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 | |||
sec# rsa8192 2017-07-07 [C] | |||
7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 | |||
uid [ultimate] testuser <testuser@domain.tld> | |||
ssb rsa4096 2017-07-07 [S] | |||
ssb rsa4096 2017-07-07 [E] | |||
ssb rsa4096 2017-07-07 [A] | |||
</pre> | |||
Notez le dièse (#) a côté du <code>sec</code> qui signifie que la clé privé maître est absente. | |||
=Utilisation de votre clé avec smartcard= | =Utilisation de votre clé avec smartcard= |
Version du 7 juillet 2017 à 03:16
Prérequis
- Une clé usb, disque usb, ou tout autre média amovible réinscriptible pour stocker de manière sécurisé votre clé gpg maître. Je vous recommande vivement de chiffrer ce media (en utilisant par exemple veracrypt).
Initialisation
Montez votre media usb sur votre ordinateur. Dans cet exemple, il sera monté dans /media/veracrypt1
.
Créez un dossier qui va contenir votre trousseau gpg maître.
mkdir -p /media/veracrypt1/GNUPG_HOME/HOME/
Si vous utilisez le système de fichier FAT sur le media usb sur lequel vous allez stocker votre trousseau maître gpg, il faut créer un fichier S.gpg-agent
à la racine de votre futur trousseau gpg afin de forcer la création du socket de l'agent gpg en dehors du système de fichier FAT. Dans cet exemple, je force la création du socket de l'agent gpg dans le répertoire utilisateur de ma machine :
cat >/media/veracrypt1/GNUPG_HOME/HOME/S.gpg-agent <<EOF %Assuan% socket=${HOME}/.gnupg/S.gpg-agent-SecureDisk EOF
Générer la clé maître
Nous allons créer une clé maître RSA de 8192 bits. Cette taille de clé n'est pas nativement supportée par gpg mais on peut en forcer la création en passant par le mode batch de gpg. Pour cela, nous créons le fichier newkey
contenant les différentes informations de notre future clé maître. Pensez à changer les lignes Name-Real
, Name-Email
et Passphrase
:
cat >newkey <<EOF %echo Generating a RSA key Key-Type: RSA Key-Length: 8192 Key-Usage: cert,sign Name-Real: testuser #Name-Comment: Name-Email: testuser@domain.tld Expire-Date: 0 Passphrase: tmppassphrasepleaseedit # Do a commit here, so that we can later print "done" %commit %echo done EOF
- FIXME: possibilité de se passer du flag sign ?
Générez la clé maître dans le trousseau gpg maître que nous avons créé :
gpg --homedir /media/veracrypt1/GNUPG_HOME/HOME/ --batch --gen-key --enable-large-rsa -a newkey
Dans cet exemple, la clé créé a l'identifiant 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951
.
Vous pouvez ajouter des uid
à votre clé maître en utilisant la commande adduid
du prompt gpg. Vous devez pour cela commencer par éditer votre clé maître :
gpg --homedir /media/veracrypt1/GNUPG_HOME/HOME/ --edit-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951
Puis entrer la commande adduid
au prompt gpg. Terminez avec save
.
adduid save
Si vous rencontrez un problème lors de la génération d'un uid, éditez la clé avec l'argument --allow-freeform-uid
Ajout des sous-clés (subkeys)
Clé de signature
Pour commencer, nous allons créer une subkey de signature. Commencez par ouvrir votre clé maître :
gpg --homedir /media/veracrypt1/GNUPG_HOME/HOME/ --edit-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951
Au prompt gpg, utilisez la commande addkey
. Utilisez le type RSA (sign only)
, la taille 4096
et éventuellement une date d'expiration (dans mon cas, je n'en spécifie aucune (0)). Terminez en sauvegardant la clé (save
) :
addkey (4) RSA (sign only) 4096 0 save
Clé de chiffrement
Nous allons maintenant créer une subkey de chiffrement. Commencez par ouvrir votre clé maître :
gpg --homedir /media/veracrypt1/GNUPG_HOME/HOME/ --edit-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951
Au prompt gpg, utilisez la commande addkey
. Utilisez le type RSA (encrypt only)
, la taille 4096
et éventuellement une date d'expiration (dans mon cas, je n'en spécifie aucune (0)). Terminez en sauvegardant la clé (save
) :
addkey (6) RSA (encrypt only) 4096 0 save
Clé d'authentification
Enfin, créons une subkey d'authentification. Commencez par ouvrir votre clé maître avec l'argument --expert
:
gpg --homedir /media/veracrypt1/GNUPG_HOME/HOME/ --expert --edit-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951
Au prompt gpg, utilisez la commande addkey
. Utilisez le type RSA (set your own capabilities)
, désactivez les flags de signature et de chiffrement, activez le flag d'authentification. Pour la taille, 4096 bits et éventuellement une date d'expiration (dans mon cas, je n'en spécifie aucune (0)). Terminez en sauvegardant la clé (save
). Au prompt gpg on obtient :
addkey (8) RSA (set your own capabilities) (S) Toggle the sign capability (on désactive la signature activé par défaut) (E) Toggle the encrypt capability (on désactive l'encrypt activé par défaut) (A) Toggle the authenticate capability (on active l'auth) (Q) Finished 4096 0 save
Etat des lieux
A ce stade, vous devriez vous retrouver avec quelque chose comme ça :
$ gpg --keyid-format LONG --list-keys 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 pub rsa8192/99FD9BFE6F9B8951 2017-07-07 [SC] uid [ultimate] testuser <testuser@domain.tld> sub rsa4096/0B4D29418F92CF1D 2017-07-07 [S] sub rsa4096/91B74A739D6A4242 2017-07-07 [E] sub rsa4096/256A58F8E560F1D7 2017-07-07 [A]
Générer un certificat de révocation pour la clé maître
Créez un certificat de révocation pour votre clé maître. Utilisez le flag 1 = Key has been compromised
comme raison de révocation, et entrez un descriptif supplémentaire spécifiant que ce certificat de révocation a été créé lors de la création de la clé. Terminez par une ligne vide.
gpg --homedir /media/veracrypt1/GNUPG_HOME/HOME/ --output /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/masterkey.gpg-revocation-certificate --gen-revoke 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 Decision : 1 = Key has been compromised > This revocation certificate was generated when the key was created. >
Ce certificat est capital. Sauvegardez le à plusieurs endroits sécurisés (et hors ligne de préférence). Si vous perdiez l'accès à votre clé maître, ce certificat serait le seul moyen révoquer définitivement votre clé maître.
Sauvegarde de la clé maître et des sous-clés
- Sauvegarde des clés privés :
gpg --homedir /media/veracrypt1/GNUPG_HOME/HOME/ --output /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/masterkey_and_subkey.priv.gpg --export-secret-keys --armor 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951
gpg --homedir /media/veracrypt1/GNUPG_HOME/HOME/ --export-secret-subkeys --armor 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 > /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/subkey_only.priv.gpg
- Sauvegarde des clés publiques :
gpg --homedir /media/veracrypt1/GNUPG_HOME/HOME/ --output /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/masterkey_and_subkey.pub.gpg --export --armor 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951
Utilisation de votre clé directement sur votre machine (sans smartcard)
Importez les subkeys dans votre trousseau gpg local :
gpg --import /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/subkey_only.priv.gpg
Editez la clé et définissez son niveau de confiance au maximum :
gpg --edit-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951
trust 5 save
Vérifiez l'importation :
$ gpg --list-secret-keys 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 sec# rsa8192 2017-07-07 [C] 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 uid [ultimate] testuser <testuser@domain.tld> ssb rsa4096 2017-07-07 [S] ssb rsa4096 2017-07-07 [E] ssb rsa4096 2017-07-07 [A]
Notez le dièse (#) a côté du sec
qui signifie que la clé privé maître est absente.