{"id":3150,"date":"2018-09-18T12:00:26","date_gmt":"2018-09-18T10:00:26","guid":{"rendered":"http:\/\/www.unicoda.com\/?p=3150"},"modified":"2018-09-18T16:54:34","modified_gmt":"2018-09-18T14:54:34","slug":"pgp-premiere-exploration","status":"publish","type":"post","link":"https:\/\/www.unicoda.com\/?p=3150","title":{"rendered":"PGP &#8211; Premi\u00e8re exploration"},"content":{"rendered":"<p>J&rsquo;ai d\u00e9cid\u00e9 de m&rsquo;int\u00e9resser plus s\u00e9rieusement \u00e0 la cryptographie et plus particuli\u00e8rement au standard PGP (Pretty Good Privacy) et \u00e0 son impl\u00e9mentation GNU Privacy Guard (GnuPG ou GPG). Voici donc certains points \u00e0 consid\u00e9rer; en vrac, pour commencer \u00e0 d\u00e9fricher le sujet.<\/p>\n<h6>Cl\u00e9 publique, cl\u00e9 priv\u00e9e<\/h6>\n<p>Les cl\u00e9s viennent par paire, une priv\u00e9e, l&rsquo;autre publique. <del>La cl\u00e9 priv\u00e9e est \u00e0 \u00ab\u00a0prot\u00e9ger\u00a0\u00bb car celle-ci sert aux op\u00e9rations de d\u00e9chiffrement et de signature<\/del> (Maj: Incorrect, voir commentaire).<\/p>\n<h6>Type de cl\u00e9<\/h6>\n<p>Il existe plusieurs types de cl\u00e9s, en particulier, la cl\u00e9 de signature (signing key) et la cl\u00e9 de chiffrement (encryption key), la premi\u00e8re servant \u00e0 signer un mail (ou un contenu) et la seconde, \u00e0 le chiffrer.<\/p>\n<h6>Confidentialit\u00e9 et g\u00e9n\u00e9ration des cl\u00e9s<\/h6>\n<p>Afin de s&rsquo;assurer au maximum de la suret\u00e9 de ses cl\u00e9s, l&rsquo;id\u00e9al est de g\u00e9n\u00e9rer les cl\u00e9s sur une machine n&rsquo;ayant jamais \u00e9t\u00e9 connect\u00e9e au r\u00e9seau et sur un syst\u00e8me d&rsquo;exploitation d\u00e9di\u00e9, \u00e0 jour et dont on aura au pr\u00e9alable v\u00e9rifi\u00e9 la somme de hashage du fichier iso utilis\u00e9 pour installer l&rsquo;OS (il me semble que le point faible se situe alors dans le m\u00e9dia utilis\u00e9 pour r\u00e9aliser l&rsquo;installation de l&rsquo;OS, cl\u00e9 USB, CD, carte SD. CD et carte SD me semble moins susceptible d&rsquo;\u00eatre compromis en amont, ou lors d&rsquo;une utilisation sur un PC v\u00e9rol\u00e9.). Il est indispensable de v\u00e9rifier les sommes de hashage apr\u00e8s \u00e9criture de l&rsquo;OS sur le support. Sur cette machine isol\u00e9e du r\u00e9seau, il convient alors de g\u00e9n\u00e9rer un ensemble de cl\u00e9 et plusieurs sous-cl\u00e9s (subkey). La cl\u00e9 ma\u00eetresse sera sauvegard\u00e9e sur <strong>plusieurs supports chiffr\u00e9s<\/strong>. Seul les sous-cl\u00e9s seront utilis\u00e9es. Enfin, l&rsquo;id\u00e9al semble \u00eatre d&rsquo;exporter les sous-cl\u00e9s sur une smartcard telle qu&rsquo;une YubiKey. A d\u00e9faut d&rsquo;une machine d\u00e9di\u00e9e \u00e0 la g\u00e9n\u00e9ration des cl\u00e9s, on pourra se limiter \u00e0 un syst\u00e8me live charg\u00e9 en RAM et coup\u00e9 du r\u00e9seau.<\/p>\n<p>A priori, il semble envisageable et possible d&rsquo;exporter les cl\u00e9s sur 2 smartcard : les sous-cl\u00e9s sur l&rsquo;une des smartcards et la cl\u00e9 ma\u00eetresse sur l&rsquo;autre. Cela pourrait peut-\u00eatre permettre de simplifier la signature de cl\u00e9s (implications en termes de s\u00e9curit\u00e9 de la cl\u00e9 ma\u00eetre ?). N\u00e9anmoins, je n&rsquo;ai pas \u00e9t\u00e9 en mesure de trouver un t\u00e9moignage de l&rsquo;utilisation d&rsquo;une telle configuration lors de mes recherches.<\/p>\n<h6>Terminologie<\/h6>\n<ul>\n<li>sec &lsquo;<strong>SEC<\/strong>ret key&rsquo;<\/li>\n<li>ssb &lsquo;<strong>S<\/strong>ecret <strong>S<\/strong>u<strong>B<\/strong>key&rsquo;<\/li>\n<li>pub &lsquo;<strong>PUB<\/strong>lic key&rsquo;<\/li>\n<li>sub &lsquo;public <strong>SUB<\/strong>key&rsquo;<\/li>\n<li>S -&gt;<strong>S<\/strong>ign, Signer<\/li>\n<li>C -&gt; <strong>C<\/strong>ertify, Certifier<\/li>\n<li>E -&gt; <strong>E<\/strong>ncrypt, Chiffrer<\/li>\n<li>A -&gt; <strong>A<\/strong>uthenticate, Authentifier<\/li>\n<\/ul>\n<h6>Limitations<\/h6>\n<ul>\n<li>La signature de cl\u00e9s doit s&rsquo;effectuer avec la cl\u00e9 ma\u00eetresse.<\/li>\n<li>Taille des cl\u00e9s limit\u00e9e \u00e0 2048 pour un export sur une YubiKey Neo (sauf YubiKey 4 qui supporte les cl\u00e9s jusqu&rsquo;\u00e0 4096).<\/li>\n<\/ul>\n<h6>\u00c9tapes \u00e0 v\u00e9rifier<\/h6>\n<ul>\n<li>G\u00e9n\u00e9ration des cl\u00e9s, sauvegarde sur support chiffr\u00e9 et export vers YubiKey.<\/li>\n<li>Expiration d&rsquo;une cl\u00e9 et mise \u00e0 jour de la date d&rsquo;expiration.<\/li>\n<li>Export vers une nouvelle YubiKey \u00e0 partir de la sauvegarde en cas de perte, vol ou bris de mat\u00e9riel.<\/li>\n<li>Red\u00e9ploiement des cl\u00e9s sur les p\u00e9riph\u00e9riques \u00e0 partir de la sauvegarde (si pertinent).<\/li>\n<li>Test d&rsquo;utilisation sur GNU\/Linux et Windows.<\/li>\n<li>Test d&rsquo;int\u00e9gration avec pass.<\/li>\n<li>Test de la signature d&rsquo;une cl\u00e9.<\/li>\n<li>Test de la signature de commit et tag dans Git.<\/li>\n<li>(Test d&rsquo;authentification SSH par cl\u00e9. Pertinence ?)<\/li>\n<\/ul>\n<h6>Conclusion<\/h6>\n<p>Apr\u00e8s lecture de plusieurs articles sur le sujet, je commence \u00e0 avoir une vue d&rsquo;ensemble du fonctionnement et de l&rsquo;utilisation des clefs GPG. Il me reste donc \u00e0 passer \u00e0 la phase d&rsquo;exp\u00e9rimentation et de mise en place afin de valider ma compr\u00e9hension du sujet et de v\u00e9rifier que rien n&rsquo;a \u00e9t\u00e9 oubli\u00e9.<br \/>\nAux lecteurs avis\u00e9s et sp\u00e9cialistes du sujet, n&rsquo;h\u00e9sitez pas \u00e0 pointer d&rsquo;\u00e9ventuelles erreurs ou zones d&rsquo;ombre qui m&rsquo;aurait \u00e9chapp\u00e9, et \u00e0 partager\u00a0 les ressources incontournables sur le sujet.<\/p>\n<h6>Sources<\/h6>\n<p><a href=\"https:\/\/www.nextinpact.com\/news\/102685-gpg-comment-creer-paire-clefs-presque-parfaite.htm\" target=\"_blank\" rel=\"noopener\">GPG : comment cr\u00e9er une paire de clefs presque parfaite<\/a> &#8211; NextInpact<br \/>\n<a href=\"https:\/\/www.nextinpact.com\/news\/102201-clefs-gpg-comment-stocker-et-utiliser-via-clef-usb-openpgp-card.htm\" target=\"_blank\" rel=\"noopener\">Clefs GPG :\u00a0 comment les stocker et les utiliser via une clef USB OpenPGP Card ?<\/a> &#8211; NextInpact<br \/>\n<a href=\"https:\/\/blog.josefsson.org\/2014\/06\/23\/offline-gnupg-master-key-and-subkeys-on-yubikey-neo-smartcard\/\" target=\"_blank\" rel=\"noopener\">Offline GnuPG Master Key and Subkeys on Yubikey NEO Smartcard<\/a> &#8211; Simon Josefsson<br \/>\n<a href=\"https:\/\/github.com\/drduh\/YubiKey-Guide\" target=\"_blank\" rel=\"noopener\">Guide to using YubiKey as a SmartCard for GPG and SSH<\/a> &#8211; drduh<br \/>\nEmail Encryption with the Yubikey-NEO, GPG and Linux (<a href=\"https:\/\/ankitrasto.wordpress.com\/2015\/08\/16\/part-12-email-encryption-with-the-yubikey-neo-gpg-and-linux\/\" target=\"_blank\" rel=\"noopener\">Part 1<\/a>, <a href=\"https:\/\/ankitrasto.wordpress.com\/2015\/10\/20\/part-22-email-encryption-with-the-yubikey-neo-gpg-and-linux\/\" target=\"_blank\" rel=\"noopener\">Part 2<\/a>) &#8211; ankitrasto<\/p>\n","protected":false},"excerpt":{"rendered":"<p>J&rsquo;ai d\u00e9cid\u00e9 de m&rsquo;int\u00e9resser plus s\u00e9rieusement \u00e0 la cryptographie et plus particuli\u00e8rement au standard PGP (Pretty Good Privacy) et \u00e0 son impl\u00e9mentation GNU Privacy Guard (GnuPG ou GPG). Voici donc certains points \u00e0 consid\u00e9rer; en vrac, pour commencer \u00e0 d\u00e9fricher le sujet. Cl\u00e9 publique, cl\u00e9 priv\u00e9e Les cl\u00e9s viennent par paire, une priv\u00e9e, l&rsquo;autre publique. &hellip; <a href=\"https:\/\/www.unicoda.com\/?p=3150\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;PGP &#8211; Premi\u00e8re exploration&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":[46],"class_list":["post-3150","post","type-post","status-publish","format-standard","hentry","category-crypto","tag-cryptographie"],"_links":{"self":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3150","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=3150"}],"version-history":[{"count":11,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3150\/revisions"}],"predecessor-version":[{"id":3224,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3150\/revisions\/3224"}],"wp:attachment":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}