{"id":1545,"date":"2014-04-26T12:03:08","date_gmt":"2014-04-26T10:03:08","guid":{"rendered":"http:\/\/blog.nebule.org\/?page_id=1545"},"modified":"2014-04-26T12:03:08","modified_gmt":"2014-04-26T10:03:08","slug":"puppetmaster","status":"publish","type":"page","link":"http:\/\/blog.nebule.org\/?page_id=1545","title":{"rendered":"puppetmaster"},"content":{"rendered":"<h1 style=\"text-align: justify;\">Entit\u00e9 <em>puppetmaster<\/em><\/h1>\n<p>C&rsquo;est l&rsquo;entit\u00e9 de plus haut niveau, celle qui valide toutes les autres. Sa compromission remet en cause toute la confiance dans le projet. Elle ne doit agir que comme validation des entit\u00e9s et peut notamment \u00e0 ce titre bannir toute entit\u00e9. Tous les autres r\u00f4les sont d\u00e9l\u00e9gu\u00e9s aux autres entit\u00e9s du projet <em>nebule<\/em>.<\/p>\n<p style=\"text-align: justify;\">Son identifiant : <code><strong>88848d09edc416e443ce1491753c75d75d7d8790c1253becf9a2191ac369f4ea<\/strong><\/code><\/p>\n<p>C&rsquo;est la premi\u00e8re des entit\u00e9s cr\u00e9\u00e9es. Son nom peut se traduire par le ma\u00eetre des marionnettes, sous entendu le ma\u00eetre des autres entit\u00e9s. C&rsquo;est aussi une r\u00e9f\u00e9rence \u00e0 <a title=\"Ghost in the Shell\" href=\"http:\/\/fr.wikipedia.org\/wiki\/Ghost_in_the_Shell\" target=\"_blank\">Ghost in the Shell<\/a>.<\/p>\n<p>Cette entit\u00e9 contr\u00f4le plusieurs entit\u00e9s esclaves :<\/p>\n<ol>\n<li><a title=\"cerberus\" href=\"http:\/\/blog.nebule.org\/?page_id=1556\" target=\"_blank\">cerberus<\/a><\/li>\n<li><a title=\"bachue\" href=\"http:\/\/blog.nebule.org\/?page_id=1557\" target=\"_blank\">bachue<\/a><\/li>\n<li><a title=\"asabiyya\" href=\"http:\/\/blog.nebule.org\/?page_id=1558\" target=\"_blank\">asabiyya<\/a><\/li>\n<li><a title=\"kronos\" href=\"http:\/\/blog.nebule.org\/?page_id=1559\" target=\"_blank\">kronos<\/a><\/li>\n<\/ol>\n<p>La protection de cette entit\u00e9 se fait sur trois niveaux :<\/p>\n<ul>\n<li>public<\/li>\n<li>diffusion<\/li>\n<li>priv\u00e9<\/li>\n<\/ul>\n<p>Voici le sch\u00e9ma de cheminement des informations autour de l&rsquo;entit\u00e9 :<\/p>\n<p style=\"text-align: center;\"><em><br \/>\n<\/em><a href=\"\/wp-content\/uploads\/nebule\/2014\/04\/20140427-nebule-schema-data-puppetmaster2.png\"><img decoding=\"async\" loading=\"lazy\" alt=\"20140427 nebule - schema data puppetmaster\" src=\"\/wp-content\/uploads\/nebule\/2014\/04\/20140427-nebule-schema-data-puppetmaster2.png\" width=\"586\" height=\"878\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Le <strong>niveau public<\/strong> permet le partage \u00e0 grande \u00e9chelle des liens de l&rsquo;entit\u00e9. C&rsquo;est le serveur web public <em>xue<\/em><em><\/em>. L&rsquo;entit\u00e9 est accessible aux adresses <a title=\"http:\/\/puppetmaster.nebule.org\/\" href=\"http:\/\/puppetmaster.nebule.org\/\" target=\"_blank\">http:\/\/puppetmaster.nebule.org\/<\/a> et <a title=\"http:\/\/puppetmaster6.nebule.org\/\" href=\"http:\/\/puppetmaster6.nebule.org\/\" target=\"_blank\">http:\/\/puppetmaster6.nebule.org\/<\/a>.<br \/>\nCe serveur prot\u00e9g\u00e9 assez classiquement comme tout serveur sur Internet. Il ne contient cependant aucune donn\u00e9e sensible et aucune entit\u00e9 ne peut se d\u00e9verrouiller dessus. La compromission du serveur ne peut \u00eatre qu&rsquo;une atteinte \u00e0 la disponibilit\u00e9 de la diffusion des nouveaux liens, les anciens liens \u00e9tant naturellement rediffus\u00e9s par toutes les entit\u00e9s. Il peut \u00eatre \u00e0 tout moment reconstruit ailleurs sur Internet, voir \u00eatre simplement dupliqu\u00e9 en plusieurs endroits.<br \/>\nEn cas de perte de disponibilit\u00e9 du serveur, les liens peuvent \u00eatre diffus\u00e9s par d&rsquo;autres entit\u00e9s. La propagation de ces liens sera dans ce cas plus lente mais ce mode de fonctionnement permet d&rsquo;assurer la diffusion des liens quoi qu&rsquo;il arrive.<\/p>\n<p style=\"text-align: justify;\">Le <strong>niveau de diffusion<\/strong> n&rsquo;a pas pour vocation \u00e0 permettre le partage des liens de l&rsquo;entit\u00e9, c&rsquo;est \u00e0 dire qu&rsquo;il ne diffuse rien publiquement. Il fait simplement l&rsquo;interface entre le niveau priv\u00e9 et le niveau public.<br \/>\nCette fonction d&rsquo;interface est h\u00e9berg\u00e9e sur une machine d\u00e9di\u00e9e. Elle est install\u00e9e en <a title=\"OpenBSD\" href=\"http:\/\/www.openbsd.org\/\" target=\"_blank\">OpenBSD 5.4<\/a> sur une vieille machine <em>PC<\/em> de type <em>i586<\/em>. Elle ne supporte que <em>IPv6<\/em> et est prot\u00e9g\u00e9e de l&rsquo;Internet par le pare-feu <em>spartacus<\/em>.<br \/>\nLe disque dur est chiffr\u00e9 avec un mot de passe au d\u00e9marrage.<\/p>\n<p style=\"text-align: justify;\">Le <strong>niveau priv\u00e9<\/strong> est d\u00e9di\u00e9 \u00e0 la manipulation de l&rsquo;entit\u00e9. C&rsquo;est \u00e0 ce niveau uniquement que la cl\u00e9 priv\u00e9 de l&rsquo;entit\u00e9 est disponible, donc que l&rsquo;on peut d\u00e9verrouiller l&rsquo;entit\u00e9 pour signer des liens.<br \/>\nLa machine sur laquelle est utilis\u00e9e l&rsquo;entit\u00e9 ne l&rsquo;h\u00e9berge pas \u00e0 proprement parler. Elle est de type <em>PC<\/em> <em>64bits<\/em> et ne supporte aucun r\u00e9seau. Le syst\u00e8me repose sur deux cl\u00e9s USB interd\u00e9pendantes dont une sert \u00e0 d\u00e9marrer le syst\u00e8me et \u00e0 stocker les donn\u00e9es. Le disque dur de la machine n&rsquo;est pas utilis\u00e9. Les deux cl\u00e9s ne sont jamais r\u00e9unis en un m\u00eame lieu sauf pour acc\u00e9der \u00e0 l&rsquo;entit\u00e9. L&rsquo;une des cl\u00e9s USB est stock\u00e9e en lieu s\u00fcr, l&rsquo;autre accompagne en permanence une personne. Il est impossible d&rsquo;acc\u00e9der aux donn\u00e9es ou \u00e0 l&rsquo;entit\u00e9 avec une seule cl\u00e9 USB. Voir les documentations <a title=\"Syst\u00e8me bootable chiffr\u00e9 sur deux cl\u00e9s USB interd\u00e9pendantes\" href=\"http:\/\/stephane.weblog.starend.org\/?p=1404\" target=\"_blank\">Syst\u00e8me bootable chiffr\u00e9 sur deux cl\u00e9s USB interd\u00e9pendantes<\/a> et <a title=\"Syst\u00e8me bootable chiffr\u00e9 sur deux cl\u00e9s USB interd\u00e9pendantes \u00e2\u20ac\u201c suite\" href=\"http:\/\/stephane.weblog.starend.org\/?p=1443\" target=\"_blank\">suite<\/a>.<br \/>\nEn cas de probl\u00e8me, toute machine de type <em>PC<\/em> est capable de d\u00e9marrer le syst\u00e8me.<br \/>\nLe syst\u00e8me ainsi lanc\u00e9 \u00e9change avec le monde ext\u00e9rieur unique via une cl\u00e9 USB pr\u00e9-d\u00e9finie. Aucun support amovible n&rsquo;est mont\u00e9 sur le syst\u00e8me lors de l&rsquo;insertion.<br \/>\nIl existe une copie de sauvegarde des deux cl\u00e9s USB dans deux lieux diff\u00e9rents. Une des cl\u00e9 de sauvegarde accompagne en permanence une personne. En cas de probl\u00e8me, les liens pr\u00e9c\u00e9demment sign\u00e9s peuvent \u00eatre resynchronis\u00e9s depuis d&rsquo;autres entit\u00e9s sur Internet.<br \/>\nLes mises \u00e0 jours sont r\u00e9alis\u00e9es \u00e0 la main en cas d&rsquo;extr\u00eame n\u00e9cessit\u00e9. Un script est pr\u00eat \u00e0 \u00eatre lanc\u00e9 \u00e0 la main au besoin.<br \/>\n<span style=\"color: #ff0000;\"> A aucun moment la cl\u00e9 priv\u00e9 de l&rsquo;entit\u00e9 ne doit sortir de son support chiffr\u00e9.<\/span><\/p>\n<p style=\"text-align: justify;\">Le sch\u00e9ma de principe du fonctionnement d&rsquo;un syst\u00e8me \u00e0 deux cl\u00e9s USB interd\u00e9pendantes :<\/p>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/nebule\/2014\/04\/20131108-cryptsetup-sur-2-cles-usb12.png\"><img decoding=\"async\" loading=\"lazy\" alt=\"20131108-cryptsetup-sur-2-cles-usb1\" src=\"\/wp-content\/uploads\/nebule\/2014\/04\/20131108-cryptsetup-sur-2-cles-usb12.png\" width=\"430\" height=\"478\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Entit\u00e9 puppetmaster C&rsquo;est l&rsquo;entit\u00e9 de plus haut niveau, celle qui valide toutes les autres. Sa compromission remet en cause toute la confiance dans le projet. Elle ne doit agir que comme validation des entit\u00e9s et peut notamment \u00e0 ce titre bannir toute entit\u00e9. Tous les autres r\u00f4les sont d\u00e9l\u00e9gu\u00e9s aux autres entit\u00e9s du projet nebule. &hellip; <a href=\"http:\/\/blog.nebule.org\/?page_id=1545\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">puppetmaster<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1550,"menu_order":1,"comment_status":"open","ping_status":"open","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/pages\/1545"}],"collection":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1545"}],"version-history":[{"count":0,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/pages\/1545\/revisions"}],"up":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/pages\/1550"}],"wp:attachment":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}