{"id":3230,"date":"2018-11-05T14:00:12","date_gmt":"2018-11-05T13:00:12","guid":{"rendered":"http:\/\/www.unicoda.com\/?p=3230"},"modified":"2018-10-26T16:25:45","modified_gmt":"2018-10-26T14:25:45","slug":"gnupg-clefs-yubikey-cest-parti","status":"publish","type":"post","link":"https:\/\/www.unicoda.com\/?p=3230","title":{"rendered":"GnuPG, clefs, YubiKey : c&rsquo;est parti"},"content":{"rendered":"\n<p>L&rsquo;encha\u00eenement&nbsp; et le choix des commandes et des configurations qui vont suivre sont essentiellement extraites du blog de Simon Josefsson dans son article <a href=\"https:\/\/blog.josefsson.org\/2014\/06\/23\/offline-gnupg-master-key-and-subkeys-on-yubikey-neo-smartcard\/\" target=\"_blank\" rel=\"noreferrer noopener\">Offline GnuPG Master Key and Subkeys on Yubikey NEO Smartcard<\/a>.<\/p>\n\n\n\n<p>Apr\u00e8s m&rsquo;\u00eatre document\u00e9 sur la g\u00e9n\u00e9ration de clefs, GnuPG et les possibilit\u00e9s&nbsp; d&rsquo;int\u00e9gration au syst\u00e8me, je me suis donc naturellement tourn\u00e9 vers la pratique et l&rsquo;exp\u00e9rimentation. J&rsquo;essaye ici d&rsquo;en retracer les \u00e9tapes, afin d&rsquo;\u00eatre en mesure de le reproduire au besoin.<\/p>\n\n\n\n<p>Quelques points restent \u00e0 am\u00e9liorer et \u00e0 solutionner, notamment l&rsquo;absence dans les syst\u00e8mes live test\u00e9s (Kali Linux, Debian 9.5.0 et Parrot Security 4.2.2), du composant scdaemon permettant de communiquer avec la YubiKey et conduisant \u00e0 l&rsquo;\u00e9chec de la commande gpg &#8211;card-edit.<\/p>\n\n\n\n<p>Derni\u00e8re petite note avant d&rsquo;entrer dans le vif du sujet. Pourquoi une YubiKey (Neo) ? Tout simplement parce que j&rsquo;avais fait l&rsquo;acquisition de ce mat\u00e9riel il y a de cela quelques ann\u00e9es, mais n&rsquo;avais pas r\u00e9ussi \u00e0 l&rsquo;int\u00e9grer \u00e0 mon utilisation quotidienne. Ce dispositif \u00e9t\u00e9 donc tout indiqu\u00e9 pour servir de support de stockage \u00e0 mes sous clefs.<\/p>\n\n\n\n<p>Pour rappel, les op\u00e9rations effectu\u00e9es ci-dessous sont \u00e0 r\u00e9aliser sur une machine hors ligne et dans un syst\u00e8me \u00ab\u00a0Live\u00a0\u00bb. Les plus soucieux de leur s\u00e9curit\u00e9 pourront aller jusqu&rsquo;\u00e0 utiliser un ordinateur d\u00e9di\u00e9 \u00e0 cette t\u00e2che (un raspberry pi z\u00e9ro peut-\u00eatre ?).<\/p>\n\n\n\n<!--more-->\n\n\n\n<h6 class=\"wp-block-heading\">Configuration<\/h6>\n\n\n\n<p>Nous allons tout d&rsquo;abord changer le dossier principal de GnuPG afin de le faire pointer sur un support de stockage externe. L&rsquo;export sera \u00e0 effectuer dans tous les terminaux dans lesquels nous souhaiterons utiliser GnuPG.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">export GNUPGHOME=\/media\/root\/42D8-F705\/gnupghome<br>mkdir $GNUPGHOME<\/pre>\n\n\n\n<p>Nous commen\u00e7ons \u00e9galement par changer la configuration par d\u00e9faut, en cr\u00e9ant le fichier $GNUPGHOME\/gpg.conf avec le contenu suivant (\u00e0 adapter en fonction des pr\u00e9f\u00e9rences) :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Set the default preferences for new keys<br>default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAMELLIA256 CAMELLIA192 CAMELLIA128<br>TWOFISH<br><br># Use a strong digest when signing a key<br>cert-digest-algo SHA512<br><br>#<br>charset utf-8<br><br># Prevent collisions by using long IDs<br>keyid-format 0xlong<br><br># Always display fingerprints<br>with-fingerprint<\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">G\u00e9n\u00e9ration de la cl\u00e9 ma\u00eetresse<\/h6>\n\n\n\n<p>Nous pouvons ensuite passer \u00e0 la g\u00e9n\u00e9ration de la clef ma\u00eetresse. Suivant les conseils dispens\u00e9s en commentaire de mon article \u00ab\u00a0<a href=\"https:\/\/www.unicoda.com\/?p=3150\" target=\"_blank\" rel=\"noopener\">PGP &#8211; Premi\u00e8re exploration<\/a>\u00ab\u00a0, j&rsquo;ai choisi le couple ECC et Curve 25519.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ gpg --full-generate-key --expert<br>gpg: le trousseau local \u00ab&nbsp;\/media\/root\/42D8-F705\/gnupghome\/pubring.kbx&nbsp;\u00bb a \u00e9t\u00e9 cr\u00e9\u00e9<br>S\u00e9lectionnez le type de clef d\u00e9sir\u00e9&nbsp;:<br>(1) RSA et RSA (par d\u00e9faut)<br>(2) DSA et Elgamal<br>(3) DSA (signature seule)<br>(4) RSA (signature seule)<br>(7) DSA (indiquez vous-m\u00eame les capacit\u00e9s)<br>(8) RSA (indiquez vous-m\u00eame les capacit\u00e9s)<br>(9) ECC et ECC<br>(10) ECC (signature seule)<br>(11) ECC (indiquez vous-m\u00eame les capacit\u00e9s)<br>(13) Clef existante<br>Quel est votre choix&nbsp;? 10<br>S\u00e9lectionnez le type de courbe elliptique d\u00e9sir\u00e9&nbsp;:<br>(1) Curve 25519<br>(3) NIST P-256<br>(4) NIST P-384<br>(5) NIST P-521<br>(6) Brainpool P-256<br>(7) Brainpool P-384<br>(8) Brainpool P-512<br>(9) secp256k1<br>Quel est votre choix&nbsp;? 1<br>Veuillez indiquer le temps pendant lequel cette clef devrait \u00eatre valable.<br>0 = la clef n'expire pas<br>= la clef expire dans n&nbsp;jours<br>w = la clef expire dans n&nbsp;semaines<br>m = la clef expire dans n&nbsp;mois<br>y = la clef expire dans n&nbsp;ans<br>Pendant combien de temps la clef est-elle valable&nbsp;? (0) 6m<br>La clef expire le jeu. 21 mars 2019 21:00:21 UTC<br>Est-ce correct&nbsp;? (o\/N) o<br>GnuPG doit construire une identit\u00e9 pour identifier la clef.<br>Nom r\u00e9el&nbsp;: R. Daneel Olivaw<br>Adresse \u00e9lectronique&nbsp;: r.daneel.olivaw@streeling-universite.org<br>Commentaire&nbsp;:<br>Vous avez s\u00e9lectionn\u00e9 cette identit\u00e9&nbsp;:<br>\u00ab R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&nbsp;\u00bb&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br>Changer le (N)om, le (C)ommentaire, l'(A)dresse \u00e9lectronique<br>ou (O)ui\/(Q)uitter&nbsp;? o<br>De nombreux octets al\u00e9atoires doivent \u00eatre g\u00e9n\u00e9r\u00e9s. Vous devriez faire<br>autre chose (taper au clavier, d\u00e9placer la souris, utiliser les disques)<br>pendant la g\u00e9n\u00e9ration de nombres premiers&nbsp;; cela donne au g\u00e9n\u00e9rateur de<br>nombres al\u00e9atoires une meilleure chance d'obtenir suffisamment d'entropie.<br>gpg: \/media\/root\/42D8-F705\/gnupghome\/trustdb.gpg&nbsp;: base de confiance cr\u00e9\u00e9e<br>gpg: clef 8E7FFBCD155A4DBA marqu\u00e9e de confiance ultime.<br>gpg: r\u00e9pertoire \u00ab&nbsp;\/media\/root\/42D8-F705\/gnupghome\/openpgp-revocs.d&nbsp;\u00bb cr\u00e9\u00e9<br>gpg:\n revocation certificate stored as \n'\/media\/root\/42D8-F705\/gnupghome\/openpgp-revocs.d\/45D8E35DFB26C08469A8D89C8F9BBBEF654C1AFD.rev'<br>les clefs publique et secr\u00e8te ont \u00e9t\u00e9 cr\u00e9\u00e9es et sign\u00e9es.pub ed25519 2018-09-22 [SC] [expire&nbsp;: 2019-03-21]<br>45D8E35DFB26C08469A8D89C8F9BBBEF654C1AFD<br>uid R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt; *****&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<\/pre>\n\n\n\n<p>Nous noterons au passage qu&rsquo;un certificat de r\u00e9vocation a \u00e9t\u00e9 automatiquement cr\u00e9\u00e9 dans le dossier <em>openpgp-revocs.d<\/em>. Sinon, nous pouvons en g\u00e9n\u00e9rer un via la commande :<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Changer la date d&rsquo;expiration<\/h6>\n\n\n\n<p>Lors de la g\u00e9n\u00e9ration, une dur\u00e9e de validit\u00e9 de 6 mois a \u00e9t\u00e9 choisi pour la cl\u00e9. Nous allons tester imm\u00e9diatement la prolongation de la dur\u00e9e de validit\u00e9 d&rsquo;une cl\u00e9.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ gpg --expert --edit-key 45D8E35DFB26C08469A8D89C8F9BBBEF654C1AFD<br>La clef secr\u00e8te est disponible.<br>sec ed25519\/3B2AAADC344F6EAA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 <strong>expire&nbsp;: 2019-03-21<\/strong> utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br><br>gpg&gt; expire<br>Modification de la date d'expiration de la clef principale.<br>Veuillez indiquer le temps pendant lequel cette clef devrait \u00eatre valable.<br>0 = la clef n'expire pas<br>= la clef expire dans n&nbsp;jours<br>w = la clef expire dans n&nbsp;semaines<br>m = la clef expire dans n&nbsp;mois<br>y = la clef expire dans n&nbsp;ans<br>Pendant combien de temps la clef est-elle valable&nbsp;? (0) 0<br>La clef n'expire pas du tout<br>Est-ce correct&nbsp;? (o\/N) o<br><br>sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 <strong>expire&nbsp;: jamais<\/strong> utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br><br>gpg&gt; q<br>Faut-il enregistrer les modifications&nbsp;? (o\/N) <\/pre>\n\n\n\n<p>Nous constatons que la date d&rsquo;expiration a bien \u00e9t\u00e9 modifi\u00e9e.<br><\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Sauvegarde interm\u00e9diaire<\/h6>\n\n\n\n<p>Reprenant les conseils de l&rsquo;article de Josefsson, nous pouvons effectuer une sauvegarde double avec un export de la cl\u00e9 et une copie du r\u00e9pertoire de GnuPG dans son \u00e9tat actuel.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ gpg -a --export-secret-keys 45D8E35DFB26C08469A8D89C8F9BBBEF654C1AFD &gt; $GNUPGHOME\/..\/masterkey.txt\n$ cp -a $GNUPGHOME $GNUPGHOME-backup-masterkey<\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Cr\u00e9ation des sous-cl\u00e9s<\/h6>\n\n\n\n<p>Pour la g\u00e9n\u00e9ration des sous-cl\u00e9s, nous choisissons le RSA2048, du fait de la limitation qu&rsquo;impose la YubiKey Neo.<br><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">gpg --expert --edit-key 45D8E35DFB26C08469A8D89C8F9BBBEF654C1AFD<p>La clef secr\u00e8te est disponible.gpg: v\u00e9rification de la base de confiance<br>gpg: marginals needed: 3 completes needed: 1 trust model: pgp<br>gpg: profondeur&nbsp;: 0 valables&nbsp;: 1 sign\u00e9es&nbsp;: 0<br>confiance&nbsp;: 0&nbsp;i., 0&nbsp;n.d., 0&nbsp;j., 0&nbsp;m., 0&nbsp;t., 1&nbsp;u.<br>sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;gpg&gt; addkey<br>S\u00e9lectionnez le type de clef d\u00e9sir\u00e9&nbsp;:<br>(3) DSA (signature seule)<br>(4) RSA (signature seule)<br>(5) Elgamal (chiffrement seul)<br>(6) RSA (chiffrement seul)<br>(7) DSA (indiquez vous-m\u00eame les capacit\u00e9s)<br>(8) RSA (indiquez vous-m\u00eame les capacit\u00e9s)<br>(10) ECC (signature seule)<br>(11) ECC (indiquez vous-m\u00eame les capacit\u00e9s)<br>(12) ECC (chiffrement seul)<br>(13) Clef existante<br>Quel est votre choix&nbsp;? 4<br>les clefs RSA peuvent faire une taille comprise entre 1024 et 4096&nbsp;bits.<br>Quelle taille de clef d\u00e9sirez-vous&nbsp;? (3072) 2048<br>La taille demand\u00e9e est 2048&nbsp;bits<br>Veuillez indiquer le temps pendant lequel cette clef devrait \u00eatre valable.<br>0 = la clef n'expire pas<br>= la clef expire dans n&nbsp;jours<br>w = la clef expire dans n&nbsp;semaines<br>m = la clef expire dans n&nbsp;mois<br>y = la clef expire dans n&nbsp;ans<br>Pendant combien de temps la clef est-elle valable&nbsp;? (0) 1y<br>La clef expire le dim. 22 sept. 2019 21:18:50 UTC<br>Est-ce correct&nbsp;? (o\/N) o<br>Faut-il vraiment la cr\u00e9er&nbsp;? (o\/N) o<br>De nombreux octets al\u00e9atoires doivent \u00eatre g\u00e9n\u00e9r\u00e9s. Vous devriez faire<br>autre chose (taper au clavier, d\u00e9placer la souris, utiliser les disques)<br>pendant la g\u00e9n\u00e9ration de nombres premiers&nbsp;; cela donne au g\u00e9n\u00e9rateur de<br>nombres al\u00e9atoires une meilleure chance d'obtenir suffisamment d'entropie.sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br>gpg&gt; addkey<br>S\u00e9lectionnez le type de clef d\u00e9sir\u00e9&nbsp;:<br>(3) DSA (signature seule)<br>(4) RSA (signature seule)<br>(5) Elgamal (chiffrement seul)<br>(6) RSA (chiffrement seul)<br>(7) DSA (indiquez vous-m\u00eame les capacit\u00e9s)<br>(8) RSA (indiquez vous-m\u00eame les capacit\u00e9s)<br>(10) ECC (signature seule)<br>(11) ECC (indiquez vous-m\u00eame les capacit\u00e9s)<br>(12) ECC (chiffrement seul)<br>(13) Clef existante<br>Quel est votre choix&nbsp;? 6<br>les clefs RSA peuvent faire une taille comprise entre 1024 et 4096&nbsp;bits.<br>Quelle taille de clef d\u00e9sirez-vous&nbsp;? (3072) 2048<br>La taille demand\u00e9e est 2048&nbsp;bits<br>Veuillez indiquer le temps pendant lequel cette clef devrait \u00eatre valable.<br>0 = la clef n'expire pas<br>= la clef expire dans n&nbsp;jours<br>w = la clef expire dans n&nbsp;semaines<br>m = la clef expire dans n&nbsp;mois<br>y = la clef expire dans n&nbsp;ans<br>Pendant combien de temps la clef est-elle valable&nbsp;? (0) 1y<br>La clef expire le dim. 22 sept. 2019 21:20:17 UTC<br>Est-ce correct&nbsp;? (o\/N) o<br>Faut-il vraiment la cr\u00e9er&nbsp;? (o\/N) o<br>De nombreux octets al\u00e9atoires doivent \u00eatre g\u00e9n\u00e9r\u00e9s. Vous devriez faire<br>autre chose (taper au clavier, d\u00e9placer la souris, utiliser les disques)<br>pendant la g\u00e9n\u00e9ration de nombres premiers&nbsp;; cela donne au g\u00e9n\u00e9rateur de<br>nombres al\u00e9atoires une meilleure chance d'obtenir suffisamment d'entropie.sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>ssb rsa2048\/8149FA26BD10FFAC<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: E<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br><br>gpg&gt; addkey<br>S\u00e9lectionnez le type de clef d\u00e9sir\u00e9&nbsp;:<br>(3) DSA (signature seule)<br>(4) RSA (signature seule)<br>(5) Elgamal (chiffrement seul)<br>(6) RSA (chiffrement seul)<br>(7) DSA (indiquez vous-m\u00eame les capacit\u00e9s)<br>(8) RSA (indiquez vous-m\u00eame les capacit\u00e9s)<br>(10) ECC (signature seule)<br>(11) ECC (indiquez vous-m\u00eame les capacit\u00e9s)<br>(12) ECC (chiffrement seul)<br>(13) Clef existante<br>Quel est votre choix&nbsp;? 8<\/p>Actions possibles pour une clef RSA&nbsp;: Signer Chiffrer Authentifier<br><p>Actions actuellement permises&nbsp;: Signer Chiffrer(S) Inverser la capacit\u00e9 de signature<br>(C) Inverser la capacit\u00e9 de chiffrement<br>(A) Inverser la capacit\u00e9 d'authentification<br>(Q) Termin\u00e9<\/p><br><p>Quel est votre choix&nbsp;? s<\/p><br><p>Actions possibles pour une clef RSA&nbsp;: Signer Chiffrer Authentifier<br>Actions actuellement permises&nbsp;: Chiffrer(S) Inverser la capacit\u00e9 de signature<br>(C) Inverser la capacit\u00e9 de chiffrement<br>(A) Inverser la capacit\u00e9 d'authentification<br>(Q) Termin\u00e9<\/p><br><p>Quel est votre choix&nbsp;? c<\/p><br><p>Actions possibles pour une clef RSA&nbsp;: Signer Chiffrer Authentifier<br>Actions actuellement permises&nbsp;:(S) Inverser la capacit\u00e9 de signature<br>(C) Inverser la capacit\u00e9 de chiffrement<br>(A) Inverser la capacit\u00e9 d'authentification<br>(Q) Termin\u00e9<\/p><br><p>Quel est votre choix&nbsp;? a<\/p><br><p>Actions possibles pour une clef RSA&nbsp;: Signer Chiffrer Authentifier<br>Actions actuellement permises&nbsp;: Authentifier(S) Inverser la capacit\u00e9 de signature<br>(C) Inverser la capacit\u00e9 de chiffrement<br>(A) Inverser la capacit\u00e9 d'authentification<br>(Q) Termin\u00e9<\/p><br><p>Quel est votre choix&nbsp;? q<br>les clefs RSA peuvent faire une taille comprise entre 1024 et 4096&nbsp;bits.<br>Quelle taille de clef d\u00e9sirez-vous&nbsp;? (3072) 2048<br>La taille demand\u00e9e est 2048&nbsp;bits<br>Veuillez indiquer le temps pendant lequel cette clef devrait \u00eatre valable.<br>0 = la clef n'expire pas<br>= la clef expire dans n&nbsp;jours<br>w = la clef expire dans n&nbsp;semaines<br>m = la clef expire dans n&nbsp;mois<br>y = la clef expire dans n&nbsp;ans<br>Pendant combien de temps la clef est-elle valable&nbsp;? (0) 1y<br>La clef expire le dim. 22 sept. 2019 21:22:52 UTC<br>Est-ce correct&nbsp;? (o\/N) o<br>Faut-il vraiment la cr\u00e9er&nbsp;? (o\/N) o<br>De nombreux octets al\u00e9atoires doivent \u00eatre g\u00e9n\u00e9r\u00e9s. Vous devriez faire<br>autre chose (taper au clavier, d\u00e9placer la souris, utiliser les disques)<br>pendant la g\u00e9n\u00e9ration de nombres premiers&nbsp;; cela donne au g\u00e9n\u00e9rateur de<br>nombres al\u00e9atoires une meilleure chance d'obtenir suffisamment d'entropie.sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>ssb rsa2048\/8149FA26BD10FFAC<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: E<br>ssb rsa2048\/B4F027D4E3BADDC6<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: A<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br>gpg&gt; save<\/p><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Sauvegarde interm\u00e9diaire<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted\">$ gpg -a --export-secret-keys 45D8E35DFB26C08469A8D89C8F9BBBEF654C1AFD &gt; $GNUPGHOME\/..\/mastersubkeys.txt\n$ gpg -a --export-secret-subkeys 45D8E35DFB26C08469A8D89C8F9BBBEF654C1AFD &gt; $GNUPGHOME\/..\/subkeys.txt\n$ cp -a $GNUPGHOME $GNUPGHOME-backup-mastersubkeys<\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Configuration de la YubiKey<\/h6>\n\n\n\n<p>Ayant effectu\u00e9 cette op\u00e9ration il y a plusieurs mois, je ne me souviens pas des \u00e9tapes pr\u00e9cises. N\u00e9anmoins, le but est de s&rsquo;assurer que le composant est en mode OTP\/CCID ou CCID. Nous pouvons \u00e0 priori utiliser la commande suivante pour changer de mode :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ykpersonalize -m82<\/pre>\n\n\n\n<p>\u00c0 condition bien s\u00fbr d&rsquo;avoir install\u00e9 les bons applicatifs. L&rsquo;id\u00e9al \u00e9tant bien s\u00fbr de se r\u00e9f\u00e9rer \u00e0 la documentation du composant, qui a d&rsquo;ailleurs l&rsquo;air de s&rsquo;\u00eatre am\u00e9lior\u00e9e depuis la date d&rsquo;achat de ma YubiKey et mes premiers tests. Cette configuration peut \u00eatre effectu\u00e9e au pr\u00e9alable sur notre syst\u00e8me d&rsquo;exploitation quotidien.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Configuration de la cible<\/h6>\n\n\n\n<p>Les sorties des commandes ont \u00e9t\u00e9 tronqu\u00e9es. On pensera \u00e0 changer le code PIN (123456 par d\u00e9faut) et le code PIN administrateur (12345678 par d\u00e9faut).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ gpg --card-edit<br><br>gpg\/card&gt; admin<br>gpg\/card&gt; passwd<br>gpg\/card&gt; name<br>gpg\/card&gt; lang<br>gpg\/card&gt; url<br>gpg\/card&gt; sex<br>gpg\/card&gt; login<br>gpg\/card&gt; quit<\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Export des sous-clefs vers la YubiKey<br><\/h6>\n\n\n\n<p>Attention, cette op\u00e9ration est destructrice et supprime les sous-clefs de la machine source<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ gpg --edit-key 45D8E35DFB26C08469A8D89C8F9BBBEF654C1AFD<br>La clef secr\u00e8te est disponible.<br>sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>ssb rsa2048\/8149FA26BD10FFAC<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: E<br>ssb rsa2048\/B4F027D4E3BADDC6<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: A<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br><br>gpg&gt; toggle<br>sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>ssb rsa2048\/8149FA26BD10FFAC<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: E<br>ssb rsa2048\/B4F027D4E3BADDC6<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: A<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br><br>gpg&gt; key 1<br>sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb* rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>ssb rsa2048\/8149FA26BD10FFAC<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: E<br>ssb rsa2048\/B4F027D4E3BADDC6<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: A<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br>gpg&gt; keytocard<br>Veuillez s\u00e9lectionner l'endroit o\u00f9 stocker la clef&nbsp;:<br>(1) Clef de signature<br>(3) Clef d'authentification<br>Quel est votre choix&nbsp;? 1<br>sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb* rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>ssb rsa2048\/8149FA26BD10FFAC<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: E<br>ssb rsa2048\/B4F027D4E3BADDC6<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: A<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br><br>gpg&gt; key 1<br>sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>ssb rsa2048\/8149FA26BD10FFAC<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: E<br>ssb rsa2048\/B4F027D4E3BADDC6<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: A<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br><br>gpg&gt; key 2<br>sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>ssb* rsa2048\/8149FA26BD10FFAC<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: E<br>ssb rsa2048\/B4F027D4E3BADDC6<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: A<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br><br>gpg&gt; keytocard<br>Veuillez s\u00e9lectionner l'endroit o\u00f9 stocker la clef&nbsp;:<br>(2) Clef de chiffrement<br>Quel est votre choix&nbsp;? 2<br>sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>ssb* rsa2048\/8149FA26BD10FFAC<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: E<br>ssb rsa2048\/B4F027D4E3BADDC6<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: A<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br><br>gpg&gt; key 2<br>sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>ssb rsa2048\/8149FA26BD10FFAC<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: E<br>ssb rsa2048\/B4F027D4E3BADDC6<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: A<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br><br>gpg&gt; key 3<br>sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>ssb rsa2048\/8149FA26BD10FFAC<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: E<br>ssb* rsa2048\/B4F027D4E3BADDC6<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: A<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br><br>gpg&gt; keytocard<br>Veuillez s\u00e9lectionner l'endroit o\u00f9 stocker la clef&nbsp;:<br>(3) Clef d'authentification<br>Quel est votre choix&nbsp;? 3<br>sec ed25519\/8E7FFBCD155A4DBA<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: jamais utilisation&nbsp;: SC<br>confiance&nbsp;: ultime validit\u00e9&nbsp;: ultime<br>ssb rsa2048\/149E07DF2C6B9D3B<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: S<br>ssb rsa2048\/8149FA26BD10FFAC<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: E<br>ssb* rsa2048\/B4F027D4E3BADDC6<br>cr\u00e9\u00e9&nbsp;: 2018-09-22 expire&nbsp;: 2019-09-22 utilisation&nbsp;: A<br>[ ultime ] (1). R. Daneel Olivaw &lt;r.daneel.olivaw@streeling-universite.org&gt;&lt;\/r.daneel.olivaw@streeling-universite.org&gt;<br><br>gpg&gt; save<\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Derni\u00e8re sauvegarde<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted\">$ gpg -a --export-secret-keys 45D8E35DFB26C08469A8D89C8F9BBBEF654C1AFD &gt; $GNUPGHOME\/..\/masterstubs.txt\n$ gpg -a --export-secret-subkeys 45D8E35DFB26C08469A8D89C8F9BBBEF654C1AFD &gt; $GNUPGHOME\/..\/subkeysstubs.txt\n$ gpg -a --export 45D8E35DFB26C08469A8D89C8F9BBBEF654C1AFD &gt; $GNUPGHOME\/..\/publickey.txt\n$ cp -a $GNUPGHOME $GNUPGHOME-backup-masterstubs<\/pre>\n\n\n\n<p>Nous pourrons alors transf\u00e9rer le fichier publickey.txt vers notre syst\u00e8me quotidien pour r\u00e9aliser l&rsquo;import de la cl\u00e9 sur celui-ci :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">gpg --import &lt; publickey.txt <\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Notes<\/h6>\n\n\n\n<p>Quelques op\u00e9rations qu&rsquo;il pourrait \u00e9galement \u00eatre int\u00e9ressant d&rsquo;effectuer :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Ajout d&rsquo;une photo (Attention \u00e0 la taille de l&rsquo;image et donc au poids du fichier choisi qui aura pour effet d&rsquo;augmenter le poids de la cl\u00e9. GnuPG recommande le format 240&#215;288).<\/li><li>Ajout d&rsquo;une identit\u00e9 suppl\u00e9mentaire (une autre adresse mail).<\/li><\/ul>\n\n\n\n<p>Par ailleurs, au jour d&rsquo;\u00e9criture de cet article, Yubico, soci\u00e9t\u00e9 \u00e9ditrice de la YubiKey, vient d&rsquo;annoncer une <a href=\"https:\/\/www.yubico.com\/2018\/09\/introducing-the-yubikey-5-series-with-new-nfc-and-fido2-passwordless-features\/\" target=\"_blank\">version 5 de sa cl\u00e9<\/a>, supportant RSA2048, RSA4096, ECCp265 et ECCp384.<\/p>\n\n\n\n<p>Voil\u00e0 qui cl\u00f4t ce long article concernant la g\u00e9n\u00e9ration des clefs et sous-clefs et leur transfert sur YubiKey. \u00c0 ce stade, le mat\u00e9riel est pr\u00eat \u00e0 \u00eatre utilis\u00e9. Il faut maintenant s&rsquo;interroger sur l&rsquo;usage au quotidien et mettre en place les configurations ad\u00e9quates sur les diff\u00e9rentes machines et syst\u00e8mes d&rsquo;exploitation susceptible de b\u00e9n\u00e9ficier de cette s\u00e9curit\u00e9 suppl\u00e9mentaire. Il reste donc \u00e0 \u00e9tudier les sujets suivants; en vrac et non exhaustif:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Connexion SSH avec la clef d&rsquo;authentification.<\/li><li>Signature de commits, tags Git.<\/li><li>Gestionnaire de mot de passe <em>pass<\/em>.<\/li><li>Signature, chiffrement de mail.<\/li><li>Et \u00e9ventuellement, chiffrement de partition, disque chiffr\u00e9.<\/li><li>&#8230;<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;encha\u00eenement&nbsp; et le choix des commandes et des configurations qui vont suivre sont essentiellement extraites du blog de Simon Josefsson dans son article Offline GnuPG Master Key and Subkeys on Yubikey NEO Smartcard. Apr\u00e8s m&rsquo;\u00eatre document\u00e9 sur la g\u00e9n\u00e9ration de clefs, GnuPG et les possibilit\u00e9s&nbsp; d&rsquo;int\u00e9gration au syst\u00e8me, je me suis donc naturellement tourn\u00e9 vers &hellip; <a href=\"https:\/\/www.unicoda.com\/?p=3230\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;GnuPG, clefs, YubiKey : c&rsquo;est parti&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[377],"tags":[388,386,389,387],"class_list":["post-3230","post","type-post","status-publish","format-standard","hentry","category-crypto","tag-generation","tag-gnupg","tag-sous-clefs","tag-yubikey-neo"],"_links":{"self":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3230"}],"version-history":[{"count":8,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3230\/revisions"}],"predecessor-version":[{"id":3335,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3230\/revisions\/3335"}],"wp:attachment":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}