4 231
modifications
(22 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 207 : | Ligne 207 : | ||
Créez un certificat de révocation pour votre clé maître. Utilisez le flag <code> 1 = Key has been compromised</code> 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. | Créez un certificat de révocation pour votre clé maître. Utilisez le flag <code> 1 = Key has been compromised</code> 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. | ||
<pre>gpg --output /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/masterkey.gpg-revocation-certificate --gen-revoke 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 | <pre>gpg --output /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/masterkey.gpg-revocation-certificate.key --gen-revoke 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 | ||
Decision : 1 = Key has been compromised | Decision : 1 = Key has been compromised | ||
> This revocation certificate was generated when the key was created. | > This revocation certificate was generated when the key was created. | ||
Ligne 218 : | Ligne 218 : | ||
* Sauvegarde des clés privés : | * Sauvegarde des clés privés : | ||
<pre>gpg --output /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/masterkey_and_subkey_$(date +%Y%m%d).priv. | <pre>gpg --output /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/masterkey_and_subkey_$(date +%Y%m%d).priv.key --armor --export-secret-keys 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951</pre> | ||
<pre>gpg -- | <pre>gpg --output /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/subkey_only_$(date +%Y%m%d).priv.key --armor --export-secret-subkeys 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951</pre> | ||
* Sauvegarde des clés publiques : | * Sauvegarde des clés publiques : | ||
<pre>gpg --output /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/masterkey_and_subkey_$(date +%Y%m%d).pub.gpg --export -- | <pre>gpg --output /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/masterkey_and_subkey_$(date +%Y%m%d).pub.gpg --armor --export 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951</pre> | ||
=Publication de la clé maîtres et des sous-clés sur les keyservers= | |||
<pre> | |||
gpg --keyserver hkp://keyserver.ubuntu.com --send-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 | |||
gpg --keyserver hkp://pool.sks-keyservers.net --send-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 | |||
gpg --keyserver hkp://keys.openpgp.org --send-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 | |||
gpg --keyserver hkp://pgp.mit.edu --send-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 | |||
</pre> | |||
Vous pouvez aussi la publier localement sur votre site en WKD : [[GnuPG Web Key Directory : partage de clés gpg par le web]] | |||
=Utilisation de votre clé= | =Utilisation de votre clé= | ||
==Directement sur votre machine (sans smartcard)== | ==Directement sur votre machine (sans smartcard)== | ||
Sortez de votre trousseau maître : | |||
<pre> | |||
unset GNUPGHOME | |||
gpgconf --kill gpg-agent | |||
</pre> | |||
Attention, désormais vous travaillerez dans le trousseau principal votre machine (<code>/home/USER/.gnupg/</code>) | |||
Importez les subkeys dans votre trousseau gpg local : | Importez les subkeys dans votre trousseau gpg local : | ||
<pre>gpg --import /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/ | <pre>gpg --import /media/veracrypt1/GNUPG_HOME/KEY_BACKUP/subkey_only_$(date +%Y%m%d).priv.key</pre> | ||
<br> | <br> | ||
Ligne 238 : | Ligne 257 : | ||
<pre>gpg --edit-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951</pre> | <pre>gpg --edit-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951</pre> | ||
<pre> | <pre> | ||
trust | gpg> trust | ||
5 | 5 | ||
save | gpg> save | ||
</pre> | </pre> | ||
Ligne 258 : | Ligne 277 : | ||
==Avec une smartcard== | ==Avec une smartcard== | ||
Branchez votre smartcard | Dans ce cas, nous continuons à travailler sur le trousseau maître (variable <code>GNUPGHOME</code>). | ||
<pre>gpg --card-edit</pre> | Branchez votre smartcard, éditez la avec gpg et activez les commandes admin : | ||
<pre> | |||
gpg --card-edit | |||
gpg> admin | |||
</pre> | |||
Configurez ces différentes options : | Configurez ces différentes options : | ||
<pre> | <pre> | ||
passwd (changer le pin, admin pin et reset code) | |||
passwd (changer le pin, admin pin et reset | |||
(le pin sera demandé a chaque opération avec la clé) | (le pin sera demandé a chaque opération avec la clé) | ||
name (définir son nom) | name (définir son nom) | ||
Ligne 272 : | Ligne 294 : | ||
</pre> | </pre> | ||
Attention, modifiez puis sauvegardez bien les différents | Le PIN par défaut est <code>123456</code> tandis que le ADmin PIN et <code>12345678</code>. Les PINs peuvent être définis jusqu'à 127 caractères ASCII pour une longueur minimale de 6 caractères (PIN) et 8 caractères (Admin PIN). | ||
* Le | |||
* Le | Attention, modifiez puis sauvegardez bien les différents PINs : | ||
* | * Le Pin sera demandé pour les opérations de chiffrement, signature ou authentification avec la smartcard. Il se bloque après 3 essais infructueux. | ||
* Le Admin PIN permet de débloquer le pin, le modifier, et modifier les clés stockés. | |||
* Le Reset code permet de remettre à zéro le compteur du PIN principal si vous avez fait 3 essais infructueux. | |||
<br>Créez un backup du dossier contenant votre trousseau maître (car lors du transfert des subkeys vers la smartcard, les privkey sont effacés du trousseau gpg..) : | <br>Créez un backup du dossier contenant votre trousseau maître (car lors du transfert des subkeys vers la smartcard, les privkey sont effacés du trousseau gpg..) : | ||
Ligne 285 : | Ligne 309 : | ||
Ouvrez votre clé maître : | Ouvrez votre clé maître : | ||
<pre>gpg -- | <pre>gpg --edit-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951</pre> | ||
Afin de transférer chaque sous-clé sur la smartcard, il faut activer la | Afin de transférer chaque sous-clé sur la smartcard, il faut activer la sélection avec la commande <code>toggle</code> puis les sélectionner une à une avec la commande <code>key <NUMÉRO></code>. La clé sélectionné s'affichera suivi d'une étoile (*). Pour la transférer, on lance la commande <code>keytocard</code> puis on sélectionne le bon slot sur la smartcard. Pour savoir quelle clé doit aller dans quel slot, aidez vous de la ligne <code>usage</code> : S pour Signature, E pour Encryption, A pour Authentification. | ||
===Transfert de la clé de signature=== | ===Transfert de la clé de signature=== | ||
Ligne 420 : | Ligne 444 : | ||
gpg> key 3 (desélectionne la clé) | gpg> key 3 (desélectionne la clé) | ||
</pre> | </pre> | ||
===Finalisation du transfert=== | |||
<pre>gpg> save</pre> | |||
===Vérification après transfert=== | ===Vérification après transfert=== | ||
La commande suivante : | La commande suivante : | ||
<pre>gpg | <pre>gpg --list-secret-keys</pre> | ||
Devrait retourner : | Devrait retourner quelque chose ressemblant à : | ||
<pre> | <pre> | ||
sec rsa8192 2017-07-07 [C] | sec rsa8192 2017-07-07 [C] | ||
Ligne 445 : | Ligne 472 : | ||
<pre> | <pre> | ||
cd /media/veracrypt1/GNUPG_HOME/ | cd /media/veracrypt1/GNUPG_HOME/ | ||
srm - | srm -vr HOME/ | ||
tar -xf HOME_$(date +%Y%m%d).tar | tar -xf HOME_$(date +%Y%m%d).tar | ||
cd | cd | ||
Ligne 453 : | Ligne 480 : | ||
Exportez votre clé publique depuis votre trousseau maître : | Exportez votre clé publique depuis votre trousseau maître : | ||
<pre>gpg | <pre>gpg --armor --export 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951 > ~/gpg_pubkey.gpg</pre> | ||
<br> | <br> | ||
Ligne 459 : | Ligne 486 : | ||
<br><br> | <br><br> | ||
Puis importez | Arrêtez de travailler dans votre trousseau maître : | ||
<pre>gpg --import < ~/gpg_pubkey.gpg</pre> | <pre> | ||
unset GNUPGHOME | |||
gpgconf --kill gpg-agent | |||
</pre> | |||
Puis importez votre clé publique dans le trousseau par défaut de gpg. Il est nécessaire de lancer un card-status pour que gpg détecte les clés privées. | |||
<pre> | |||
gpg --import < ~/gpg_pubkey.gpg | |||
gpg --card-status | |||
</pre> | |||
Accordez une confiance totale à votre clé : | Accordez une confiance totale à votre clé : | ||
<pre>gpg --edit-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951</pre> | <pre>gpg --edit-key 7EBA8211BFF531EE59E25CBD99FD9BFE6F9B8951</pre> | ||
<pre> | <pre> | ||
trust | gpg> trust | ||
5 | 5 | ||
save | gpg> save | ||
</pre> | </pre> | ||
Ligne 483 : | Ligne 519 : | ||
Notez encore une foi le symbole dièse (<code>#</code>) qui signifie que la clé privée maître n'est pas disponible dans ce trousseau, et le symbole <code>></code> qui signifie que les sous-clés privés sont stockés sur une smartcard. | Notez encore une foi le symbole dièse (<code>#</code>) qui signifie que la clé privée maître n'est pas disponible dans ce trousseau, et le symbole <code>></code> qui signifie que les sous-clés privés sont stockés sur une smartcard. | ||
==Yubikey: Imposer de toucher la yubikey pour les opérations openpgp== | |||
Par défaut, lors d'une première opération avec le smartcard, le PIN vous sera demandé. Le PIN sera ensuite mis en cache dans la yubikey (pas dans gpg-agent), et le seul moyen de vider le cache est de débrancher/rebrancher la smartcard. Vous pouvez ajouter une coucher de sécurité en imposant de touche la yubikey afin de valider l'opération (ainsi, une action physique est nécessaire).<br><br> | |||
Cela n'est possible que depuis les Yubikeys 4.<br> | |||
Pour chaque type de clé, vous pouvez définir 4 statut : | |||
<pre> | |||
Off (default) No touch required | |||
On Touch required | |||
Fixed Touch required, can't be disabled without a full reset | |||
Cached Touch required, cached for 15s after use | |||
Cached-Fixed Touch required, cached for 15s after use, can't be disabled | |||
without a full reset | |||
</pre> | |||
Attention, notez bien que si vous activez le mode <code>Cached-Fixed</code> ou <code>Fixed</code>, vous ne pourrez plus modifier cette configuration sans remettre à zéro totalement la smardcard de la yubikey ! | |||
<pre> | |||
ykman openpgp keys set-touch sig on | |||
ykman openpgp keys set-touch enc on | |||
ykman openpgp keys set-touch aut on | |||
ykman openpgp keys set-touch att on | |||
</pre> | |||
Sous linux, vous pouvez installer https://github.com/maximbaz/yubikey-touch-detector pour être averti visuellement de la nécessité de toucher la yubikey | |||
Note : il semblerait que killer l'agent (<code>gpgconf --kill gpg-agent</code>) ou le smartcard daemon (<code>gpgconf --kill scdaemon</code>) permette à GPG de redemander le pin. Néanmoins dans les faits cela provoque uniquement une désynchronisation entre l'état de l'applet GPG de la yubikey (qui est déverrouillé) et l'état connu par gpg-agent (qui pense l'applet verrouillé). Pour preuve, constatez que vous pouvez taper autant de pin erroné que souhaitez sans bloquer l'applet de la yubikey (normalement après 3 erreurs, le PIN est bloqué) | |||
=En pratique= | =En pratique= |