{"id":1539,"date":"2014-04-24T16:55:42","date_gmt":"2014-04-24T14:55:42","guid":{"rendered":"http:\/\/blog.nebule.org\/?page_id=1539"},"modified":"2025-01-10T00:53:37","modified_gmt":"2025-01-09T22:53:37","slug":"securite","status":"publish","type":"page","link":"http:\/\/blog.nebule.org\/?page_id=1539","title":{"rendered":"S\u00e9curit\u00e9"},"content":{"rendered":"<div style=\"float: right;\"><span style=\"color: #ff0000;\"><strong>En cours de r\u00e9daction&#8230;<\/strong><\/span><a href=\"\/wp-content\/uploads\/nebule\/2012\/10\/li2.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1313\" src=\"\/wp-content\/uploads\/nebule\/2012\/10\/li2.png\" alt=\"li\" width=\"64\" height=\"64\" \/><\/a><\/div>\n<p>Sommaire :<\/p>\n<ul>\n<li>Introduction<\/li>\n<li>S\u00fcret\u00e9 de fonctionnement\n<ul>\n<li>Fonctionnement de <em>nebule<\/em><\/li>\n<li>Environnement<\/li>\n<\/ul>\n<\/li>\n<li>S\u00e9curit\u00e9 du code<\/li>\n<li>S\u00e9curit\u00e9 des entit\u00e9s\n<ul>\n<li>Entit\u00e9 <em>puppetmaster<\/em><\/li>\n<li>Entit\u00e9 <em>cerberus<\/em><\/li>\n<li>Entit\u00e9 <em>bachue<\/em><\/li>\n<li>Entit\u00e9 <em>asabiyya<\/em><\/li>\n<li>Entit\u00e9 <em>kronos<\/em><\/li>\n<\/ul>\n<\/li>\n<li>Architecture\n<ul>\n<li>Pare-feu <em>spartacus<\/em><\/li>\n<li>Serveur <em>xue<\/em><\/li>\n<li>Poste de contr\u00f4le <em>warhole<\/em><\/li>\n<li>Serveur <em>thor<\/em><\/li>\n<li>Serveur relais <em>puppetmaster<\/em><\/li>\n<li>Serveur relais <em>bachue<\/em><\/li>\n<\/ul>\n<\/li>\n<li>Probl\u00e8mes et \u00e9volutions<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/nebule\/2013\/08\/favicon2.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1350\" src=\"\/wp-content\/uploads\/nebule\/2013\/08\/favicon2.png\" alt=\"favicon\" width=\"32\" height=\"32\" \/><\/a><\/p>\n<h2>Introduction<\/h2>\n<p style=\"text-align: justify;\">L&rsquo;un des trois principes soutenus par le projet <em>nebule<\/em>, c&rsquo;est la confiance. Cette confiance n&rsquo;est pas un \u00e9l\u00e9ment technique sp\u00e9cifique, c&rsquo;est une \u00e9valuation globale du projet.<\/p>\n<p style=\"text-align: justify;\">Le projet <em>nebule<\/em> \u00e9tant en phase exp\u00e9rimentale, un certain nombre de fonctions de s\u00e9curit\u00e9 et de concepts sont \u00e0 consid\u00e9rer comme eux aussi exp\u00e9rimentaux. Ils sont appel\u00e9s \u00e0 s&rsquo;am\u00e9liorer avec le temps.<br \/>\nPlus que le caract\u00e8re exp\u00e9rimental du projet, c&rsquo;est la volont\u00e9 de transparence qui pousse \u00e0 rendre public les mod\u00e8les de s\u00e9curit\u00e9s en place. Le but est de les am\u00e9liorer et de ne pas se contenter du niveau de fonctionnalit\u00e9 et de s\u00e9curit\u00e9 actuel.<\/p>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/nebule\/2013\/08\/favicon2.png\"><img decoding=\"async\" loading=\"lazy\" src=\"\/wp-content\/uploads\/nebule\/2013\/08\/favicon2.png\" alt=\"favicon\" width=\"32\" height=\"32\" \/><\/a><\/p>\n<h2>S\u00fbret\u00e9 de fonctionnement<\/h2>\n<p style=\"text-align: justify;\">La <a title=\"S\u00fcret\u00e9 de fonctionnement\" href=\"http:\/\/fr.wikipedia.org\/wiki\/S%C3%BBret%C3%A9_de_fonctionnement\" target=\"_blank\" rel=\"noopener\">s\u00fbret\u00e9 de fonctionnement<\/a> permet de s&rsquo;assurer de la <span class=\"need_ref\" title=\"Ce passage n\u00e9cessite une citation.\"><strong>fiabilit\u00e9<\/strong>, la <strong>disponibilit\u00e9<\/strong>, la <strong>maintenabilit\u00e9<\/strong> et la <strong>s\u00e9curit\u00e9<\/strong> d&rsquo;un dispositif. On va ici s&rsquo;attacher au fonctionnement propre de nebule et au fonctionnement de son environnement, c&rsquo;est \u00e0 dire les machines. <span style=\"text-decoration: underline;\">C&rsquo;est la mesure de la confiance, la capacit\u00e9 du syst\u00e8me \u00e0 fonctionner tel que l&rsquo;on s&rsquo;attend \u00e0 ce qu&rsquo;il fonctionne et \u00e0 \u00eatre r\u00e9sistant aux tentatives de d\u00e9tourner son fonctionnement.<\/span><br \/>\n<\/span><\/p>\n<h3>Fonctionnement de <em>nebule<\/em><\/h3>\n<p style=\"text-align: justify;\">Le fonctionnement propre de nebule repose sur le concept d&rsquo;objet et de lien. Le code, quel qu&rsquo;il soit, doit permettre de manipuler les objets et les liens en toute confiance.<\/p>\n<p style=\"text-align: justify;\">La fiabilit\u00e9 est assur\u00e9 au niveau des objets par leur empreinte propre. C&rsquo;est l&#8217;empreinte qui identifie un objet de fa\u00e7on univoque. L&#8217;empreinte doit imp\u00e9rativement respecter des propri\u00e9t\u00e9s cryptographies : <strong>universel<\/strong>, <strong>atemporel<\/strong>, <strong>univoque<\/strong> et <strong>infalsifiable<\/strong>.<br \/>\nLa fiabilit\u00e9 des liens est assur\u00e9e par la signature cryptographique d&rsquo;une entit\u00e9. Cette signature atteste de l&rsquo;int\u00e9grit\u00e9 du lien et de sa provenance. Tout lien pour lequel la signature est invalide ou ne peut \u00eatre v\u00e9rifi\u00e9 est ignor\u00e9.<br \/>\nLa fiabilit\u00e9 du code est v\u00e9rifi\u00e9 par des essais tout au long du d\u00e9veloppement.<\/p>\n<p style=\"text-align: justify;\">La disponibilit\u00e9 des objets repose sur le mod\u00e8le du P2P (Peer to Peer). Les objets sont h\u00e9berg\u00e9s par une ou plusieurs entit\u00e9s, ou par aucune. On peut s&rsquo;assurer de la disponibilit\u00e9 d&rsquo;un objet en le faisant h\u00e9berger \u00e0 plusieurs endroits.<br \/>\nLa disponibilit\u00e9 des liens fonctionne de la m\u00eame fa\u00e7on que pour les objets. Le code \u00e9tant un objet \u00e0 part enti\u00e8re, sa disponibilit\u00e9 r\u00e9pond au m\u00eame fonctionnement.<\/p>\n<p style=\"text-align: justify;\">La maintenabilit\u00e9 n&rsquo;a de sens que pour le code. Celui-ci doit \u00eatre am\u00e9lior\u00e9 dans sa lisibilit\u00e9, son organisation et ses commentaires.<\/p>\n<p style=\"text-align: justify;\">La s\u00e9curit\u00e9 des objets repose sur leur fiabilit\u00e9, c&rsquo;est \u00e0 dire leur empreinte cryptographique. Un objet corrompu n&rsquo;est pas utilis\u00e9, il est m\u00eame directement supprim\u00e9. Si un objet corrompu venait \u00e0 \u00eatre malgr\u00e9 tout diffus\u00e9, les autres entit\u00e9s n&rsquo;en tiendront pas compte.<br \/>\nLa s\u00e9curit\u00e9 des liens repose sur les signatures cryptographiques. Un lien corrompu est ignor\u00e9 lors du traitement des liens. Si un lien corrompu venait \u00e0 \u00eatre malgr\u00e9 tout diffus\u00e9, les autres entit\u00e9s n&rsquo;en tiendront pas compte.<br \/>\nLa s\u00e9curit\u00e9 du code repose sur la cha\u00eene de confiance dans les liens g\u00e9n\u00e9r\u00e9s par l&rsquo;entit\u00e9 <em>bachue<\/em>. La confiance en l&rsquo;entit\u00e9 <em>bachue<\/em> repose sur sa reconnaissance par l&rsquo;entit\u00e9 <em>puppetmaster<\/em>. Enfin, la s\u00e9curit\u00e9 du code repose sur les diff\u00e9rentes machines g\u00e9rant les entit\u00e9s du projet <em>nebule<\/em> \u00e0 l&rsquo;exception des machines relais et machines publiques.<\/p>\n<h3>Environnement<\/h3>\n<p style=\"text-align: justify;\">&#8230;<\/p>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/nebule\/2013\/08\/favicon2.png\"><img decoding=\"async\" loading=\"lazy\" src=\"\/wp-content\/uploads\/nebule\/2013\/08\/favicon2.png\" alt=\"favicon\" width=\"32\" height=\"32\" \/><\/a><\/p>\n<h2>S\u00e9curit\u00e9 du code<\/h2>\n<p style=\"text-align: justify;\">&#8230;<\/p>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/nebule\/2013\/08\/favicon2.png\"><img decoding=\"async\" loading=\"lazy\" src=\"\/wp-content\/uploads\/nebule\/2013\/08\/favicon2.png\" alt=\"favicon\" width=\"32\" height=\"32\" \/><\/a><\/p>\n<h2>S\u00e9curit\u00e9 des entit\u00e9s<\/h2>\n<p style=\"text-align: justify;\">Les entit\u00e9s du projet <em>nebule<\/em> sont hi\u00e9rarchis\u00e9es en fonction de leur importance. Cette importance est strictement d\u00e9pendante des risques sur tout ou partie du projet <em>nebule<\/em> qu&rsquo;un probl\u00e8me pourrait engendrer.<\/p>\n<p style=\"text-align: justify;\">Chaque entit\u00e9 de <em>nebule<\/em> \u00e0 son propre fonctionnement et sa gestion propre. La s\u00e9curisation des entit\u00e9s est \u00e0 l&rsquo;image de la s\u00e9curisation de tout syst\u00e8me d&rsquo;information. Il faut trouver un juste milieu entre l&rsquo;utilisation, l&rsquo;utilisabilit\u00e9 et la disponibilit\u00e9, et le risque de cette utilisation. Bien qu&rsquo;ayant un caract\u00e8re fortement li\u00e9 \u00e0 la s\u00e9curit\u00e9, la disponibilit\u00e9 est tr\u00e8s souvent mis en opposition avec la confidentialit\u00e9 et l&rsquo;int\u00e9grit\u00e9.<\/p>\n<p style=\"text-align: justify;\">Toutes les entit\u00e9s sont vuln\u00e9rables au vol de la cl\u00e9 priv\u00e9e et du mot de passe associ\u00e9. Pour certaines entit\u00e9s, afin de contrer ce probl\u00e8me, certaines solutions organisationnelles et techniques ont \u00e9t\u00e9 mise en place. La premi\u00e8re est de restreindre la diffusion de l&rsquo;objet contenant la cl\u00e9 priv\u00e9e en v\u00e9rifiant sa non pr\u00e9sence lors de l&rsquo;export d&rsquo;objets. Ainsi, aucune action en force brute par exemple ne peut \u00eatre r\u00e9alis\u00e9e. Pour le mot de passe, cela se passe sur deux niveaux. Un mot de passe \u00e0 saisir est n\u00e9cessaire pour l&rsquo;entit\u00e9 et un mot de passe est aussi n\u00e9cessaire pour acc\u00e9der au support de l&rsquo;entit\u00e9. Le mot de passe du support de l&rsquo;entit\u00e9 est positionn\u00e9 sur une cl\u00e9 USB diff\u00e9rente et est automatiquement g\u00e9n\u00e9r\u00e9 et utilis\u00e9 sans intervention au clavier. Ainsi un <em>keylogger<\/em> pr\u00e9sent d\u00e8s l&rsquo;installation peut voler le mot de passe de l&rsquo;entit\u00e9 mais ne peut pas capturer le mot de passe du support. Enfin, la cl\u00e9 USB contenant le mot de passe du support de l&rsquo;entit\u00e9 n&rsquo;est jamais conserv\u00e9e \u00e0 c\u00f4t\u00e9 de ce support sans surveillance. Voir, cette cl\u00e9 USB est d\u00e9tenue en permanence par une personne.<\/p>\n<p style=\"text-align: justify;\">L&rsquo;organisation globale de la s\u00e9curit\u00e9 des entit\u00e9s repose sur un mod\u00e8le commun dans les syst\u00e8mes d&rsquo;information, c&rsquo;est une forme hi\u00e9rarchique. Cette forme d&rsquo;organisation permet de g\u00e9rer plus facilement la reconnaissance des entit\u00e9s et leur remplacement en cas de compromission. L&rsquo;inconv\u00e9nient reste classiquement la forte vuln\u00e9rabilit\u00e9 du sommet de l&rsquo;organisation.<\/p>\n<h3>Entit\u00e9 <em>puppetmaster<\/em><\/h3>\n<p style=\"text-align: justify;\">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;\">La protection de cette entit\u00e9 se fait sur trois niveaux :<br \/>\n&#8211; public<br \/>\n&#8211; diffusion<br \/>\n&#8211; priv\u00e9<\/p>\n<p style=\"text-align: justify;\">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\" class=\"alignnone size-full wp-image-1580\" src=\"\/wp-content\/uploads\/nebule\/2014\/04\/20140427-nebule-schema-data-puppetmaster2.png\" alt=\"20140427 nebule - schema data puppetmaster\" width=\"586\" height=\"878\" srcset=\"\/wp-content\/uploads\/nebule\/2014\/04\/20140427-nebule-schema-data-puppetmaster2.png 586w, \/wp-content\/uploads\/nebule\/2014\/04\/20140427-nebule-schema-data-puppetmaster2-400x600.png 400w\" sizes=\"(max-width: 586px) 100vw, 586px\" \/><\/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>. L&rsquo;entit\u00e9 est accessible aux adresses <a title=\"http:\/\/puppetmaster.nebule.org\/\" href=\"http:\/\/puppetmaster.nebule.org\/\" target=\"_blank\" rel=\"noopener\">http:\/\/puppetmaster.nebule.org\/<\/a> et <a title=\"http:\/\/puppetmaster6.nebule.org\/\" href=\"http:\/\/puppetmaster6.nebule.org\/\" target=\"_blank\" rel=\"noopener\">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\" rel=\"noopener\">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\u00fbr, 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\" rel=\"noopener\">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\" rel=\"noopener\">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\" class=\"alignnone size-full wp-image-1612\" src=\"\/wp-content\/uploads\/nebule\/2014\/04\/20131108-cryptsetup-sur-2-cles-usb12.png\" alt=\"20131108-cryptsetup-sur-2-cles-usb1\" width=\"430\" height=\"478\" \/><\/a><\/p>\n<h3>Entit\u00e9 <em>cerberus<\/em><\/h3>\n<p style=\"text-align: justify;\">Cette entit\u00e9 permet de bloquer des objets. Elle permet de ne pas mettre en avant <em>puppetmaster<\/em> pour bloquer ces objets. Typiquement, dans le cadre du projet <em>nebule<\/em>, les objets bloqu\u00e9s sont typiquement porteurs de codes malveillants.<\/p>\n<p style=\"text-align: justify;\">L&rsquo;enfer n&rsquo;ayant pas encore officiellement ouvert, cette entit\u00e9 n&rsquo;est pas utilis\u00e9e.<\/p>\n<h3>Entit\u00e9 <em>bachue<\/em><\/h3>\n<p style=\"text-align: justify;\">Cette entit\u00e9 permet la diffusion des diff\u00e9rents codes n\u00e9cessaires au bon fonctionnement du projet <em>nebule<\/em> et des projets annexes comme <em>sylabe<\/em>.<\/p>\n<p style=\"text-align: justify;\">La protection de cette entit\u00e9 se fait sur trois niveaux :<br \/>\n&#8211; public<br \/>\n&#8211; diffusion<br \/>\n&#8211; priv\u00e9<br \/>\n&#8211; d\u00e9veloppement<\/p>\n<p style=\"text-align: justify;\">Voici le sch\u00e9ma du cheminement des informations autour de l&rsquo;entit\u00e9 :<\/p>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/nebule\/2014\/04\/20140427-nebule-schema-data-bachue2.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1581\" src=\"\/wp-content\/uploads\/nebule\/2014\/04\/20140427-nebule-schema-data-bachue2.png\" alt=\"20140427 nebule - schema data bachue\" width=\"586\" height=\"878\" srcset=\"\/wp-content\/uploads\/nebule\/2014\/04\/20140427-nebule-schema-data-bachue2.png 586w, \/wp-content\/uploads\/nebule\/2014\/04\/20140427-nebule-schema-data-bachue2-400x600.png 400w\" sizes=\"(max-width: 586px) 100vw, 586px\" \/><\/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>. L&rsquo;entit\u00e9 est accessible aux adresses <a title=\"http:\/\/bachue.nebule.org\/\" href=\"http:\/\/bachue.nebule.org\/\" target=\"_blank\" rel=\"noopener\">http:\/\/bachue.nebule.org\/<\/a> et <a title=\"http:\/\/bachue6.nebule.org\/\" href=\"http:\/\/bachue6.nebule.org\/\" target=\"_blank\" rel=\"noopener\">http:\/\/bachue6.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 <em>FreeBSD Release 10.0<\/em> sur une vieille machine <em>PowerPC<\/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 n&rsquo;est pas encore chiffr\u00e9. Le syst\u00e8me est cependant sommairement offusqu\u00e9.<\/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 se laquelle est utilis\u00e9e l&rsquo;entit\u00e9 est de type <em>PC<\/em> <em>64bits<\/em> et ne supporte aucun r\u00e9seau. Le syst\u00e8me repose sur un disque dur chiffr\u00e9 et sur une cl\u00e9 USB pour d\u00e9marrer le syst\u00e8me. La cl\u00e9 USB contient le mot de passe du disque chiffr\u00e9. Il existe un syst\u00e8me d&rsquo;offuscation sommaire sur cette machine.<br \/>\nL&rsquo;entit\u00e9 <em>bachue<\/em> est sauvegard\u00e9e sur le syst\u00e8me de l&rsquo;entit\u00e9 <em>puppetmaster<\/em>. En cas de probl\u00e8me, il est possible de remonter une nouvelle machine h\u00f4te.<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 \/>\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 \/>\nL&rsquo;entit\u00e9 est potentiellement vuln\u00e9rable puisqu&rsquo;elle ex\u00e9cute du code pour signer les liens. Ce code peut avoir \u00e9t\u00e9 compromis sur le poste de d\u00e9veloppement. L&rsquo;interface web <em>sylabe<\/em> ne peut pas modifier les fichiers de la machine autres que les objets et liens. Mais cette interface web pourrait faire d&rsquo;autres actions comme essayer d&rsquo;exfiltrer la cl\u00e9 priv\u00e9e. Pour cette raison, c&rsquo;est sous forme de script <em>bash<\/em> que les liens sont sign\u00e9s.<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 <strong>niveau d\u00e9veloppement<\/strong> permet de travailler facilement sur les diff\u00e9rents codes.<br \/>\nCe poste de d\u00e9veloppement est assez sensible puisqu&rsquo;il peut constituer le premier point d&rsquo;entr\u00e9e pour une attaque. Le but d&rsquo;une attaque peut \u00eatre essayer d&rsquo;exfiltrer la cl\u00e9 priv\u00e9e de l&rsquo;h\u00f4te en modifiant le code qui lui est transmis. Une autre attaque peut \u00eatre de tout simplement modifier le code pour retirer \u00e0 posteriori des mots de passes ou des cl\u00e9s priv\u00e9es d&rsquo;autres entit\u00e9s.<br \/>\nLa mise en place de poste de d\u00e9veloppement n&rsquo;est pas encore termin\u00e9e&#8230;<\/p>\n<h3>Entit\u00e9 <em>asabiyya<\/em><\/h3>\n<p style=\"text-align: justify;\"><span style=\"color: #800000;\">Non fonctionnelle actuellement.<\/span><\/p>\n<h3>Entit\u00e9 <em>kronos<\/em><\/h3>\n<p style=\"text-align: justify;\"><span style=\"color: #800000;\">Non fonctionnelle actuellement.<\/span><\/p>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/nebule\/2013\/08\/favicon2.png\"><img decoding=\"async\" loading=\"lazy\" src=\"\/wp-content\/uploads\/nebule\/2013\/08\/favicon2.png\" alt=\"favicon\" width=\"32\" height=\"32\" \/><\/a><\/p>\n<h2>Architecture<\/h2>\n<p style=\"text-align: justify;\">Le point d&rsquo;acc\u00e8s \u00e0 l&rsquo;Internet pour les machines relais est centr\u00e9 sur le pare-feu <em>spartacus<\/em>.<\/p>\n<p style=\"text-align: justify;\">Toutes les machines ont leurs disques durs int\u00e9gralement ou quasi-int\u00e9gralement chiffr\u00e9s (ou sont pr\u00e9vues de l&rsquo;avoir). Ainsi, chaque machine n\u00e9cessite pour d\u00e9marrer soit un mot de passe soit une cl\u00e9 USB contenant un mot de passe. La perte des machines ne repr\u00e9sente qu&rsquo;une perte mat\u00e9rielle.<\/p>\n<p style=\"text-align: justify;\">Seul IPv6 est utilisable sur ces r\u00e9seaux. Il n&rsquo;est pas utilis\u00e9 de translation d&rsquo;adresses, le pare-feu s&rsquo;occupe de \u00e9tanch\u00e9it\u00e9 des r\u00e9seaux entre eux et avec Internet.<\/p>\n<p style=\"text-align: justify;\">Les machines sont allum\u00e9es au cas par cas en fonction des besoins.<\/p>\n<p style=\"text-align: justify;\">Voici le sch\u00e9ma d&rsquo;architecture du point d&rsquo;acc\u00e8s :<\/p>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/nebule\/2014\/04\/20140214-nebule-rx-centre-ctrl-public2.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1575\" src=\"\/wp-content\/uploads\/nebule\/2014\/04\/20140214-nebule-rx-centre-ctrl-public2.png\" alt=\"20140214 nebule - rx centre ctrl (public)\" width=\"840\" height=\"1008\" srcset=\"\/wp-content\/uploads\/nebule\/2014\/04\/20140214-nebule-rx-centre-ctrl-public2.png 840w, \/wp-content\/uploads\/nebule\/2014\/04\/20140214-nebule-rx-centre-ctrl-public2-500x600.png 500w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/a><\/p>\n<h3>Pare-feu <em>spartacus<\/em><\/h3>\n<p style=\"text-align: justify;\">Ce pare-feu prot\u00e8ge le r\u00e9seau du point d&rsquo;acc\u00e8s des serveurs relais, du poste de contr\u00f4le et du serveur de sauvegarde.<\/p>\n<p style=\"text-align: justify;\">Cette machine est install\u00e9e en <a title=\"Debian\" href=\"http:\/\/www.debian.org\/\" target=\"_blank\" rel=\"noopener\">Debian Linux 7.0<\/a> sur architecture <em>PC<\/em> <em>64bits<\/em> se connectant uniquement en <em>IPv6<\/em> et prot\u00e9g\u00e9e d&rsquo;Internet par elle-m\u00eame.<\/p>\n<p style=\"text-align: justify;\">Aucune connexion r\u00e9seau n&rsquo;est permise vers ce pare-feu, y compris de l&rsquo;int\u00e9rieur du r\u00e9seau. Il n&rsquo;h\u00e9berge aucun service.<\/p>\n<p style=\"text-align: justify;\">Seul le poste de contr\u00f4le <em>warhole<\/em> peut se connecter au serveur <em>thor<\/em>, mais pas r\u00e9ciproquement. Les autres machines ne peuvent pas se connecter entre elles. Toutes les machines peuvent faire leurs mises \u00e0 jours sur Internet (vers certaines adresses) et se connecter au serveur <em>xue<\/em> en <em>icmp\/echo request<\/em>, <em>http<\/em> et <em>https<\/em>.<\/p>\n<p style=\"text-align: justify;\">Les mises \u00e0 jours sont r\u00e9alis\u00e9es \u00e0 la main en cas d&rsquo;extr\u00eame n\u00e9cessit\u00e9. Bien qu&rsquo;ayant une connexion \u00e0 Internet \u00e0 disposition, rien n&rsquo;est fait automatiquement. Un script est pr\u00eat \u00e0 \u00eatre lanc\u00e9 \u00e0 la main au besoin.<\/p>\n<p style=\"text-align: justify;\">La cl\u00e9 USB de d\u00e9marrage contient le noyau du syst\u00e8me et la cl\u00e9 de d\u00e9chiffrement du disque dur (int\u00e9gralement chiffr\u00e9). Une fois le d\u00e9marrage termin\u00e9, elle peut \u00eatre retir\u00e9e.<\/p>\n<h3>Serveur <em>xue<\/em><\/h3>\n<p style=\"text-align: justify;\">Ce serveur est le serveur public des diff\u00e9rentes entit\u00e9s. C&rsquo;est lui qui h\u00e9berge et diffuse largement les liens et objets des entit\u00e9s du projet nebule.<\/p>\n<p style=\"text-align: justify;\">Ce serveur est install\u00e9 avec <a title=\"FreeBSD\" href=\"http:\/\/www.freebsd.org\/\" target=\"_blank\" rel=\"noopener\">FreeBSD Release 10.0<\/a> sur architecture <em>PC<\/em> et supporte <em>IPv4<\/em> et <em>IPv6<\/em>.<\/p>\n<p>Les mises \u00e0 jours sont r\u00e9alis\u00e9es \u00e0 la main depuis le poste de contr\u00f4le <em>warhole<\/em> et automatiquement une fois par jour.<\/p>\n<h3>Poste de contr\u00f4le <em>warhole<\/em><\/h3>\n<p style=\"text-align: justify;\">C&rsquo;est une machine d\u00e9di\u00e9 au contr\u00f4le des serveurs <em>xue<\/em> et <em>thor<\/em>. Elle g\u00e8re les mises \u00e0 jours et la sauvegarde. Elle permet aussi l&rsquo;administration au jour le jour.<\/p>\n<p style=\"text-align: justify;\">Cette machine est install\u00e9e en <a title=\"OpenBSD\" href=\"http:\/\/www.openbsd.org\/\" target=\"_blank\" rel=\"noopener\">OpenBSD 5.4<\/a> sur architecture <em>Sparc<\/em> se connectant uniquement en <em>IPv6<\/em> et prot\u00e9g\u00e9e d&rsquo;Internet par le pare-feu <em>spartacus<\/em>.<\/p>\n<p style=\"text-align: justify;\">Les mises \u00e0 jours sont r\u00e9alis\u00e9es \u00e0 la main en cas d&rsquo;extr\u00eame n\u00e9cessit\u00e9.<\/p>\n<h3>Serveur <em>thor<\/em><\/h3>\n<p style=\"text-align: justify;\">C&rsquo;est un serveur qui permet \u00e0 la fois la sauvegarde du serveur <em>xue<\/em> et va permettre de r\u00e9aliser des tests d&rsquo;archivage.<\/p>\n<p style=\"text-align: justify;\">Ce serveur est install\u00e9 en <em>Debian Linux 7.0<\/em> sur architecture <em>PC<\/em> <em>64bits<\/em> se connectant uniquement en <em>IPv6<\/em> et prot\u00e9g\u00e9 d&rsquo;Internet par le pare-feu <em>spartacus<\/em>.<\/p>\n<p style=\"text-align: justify;\">Les mises \u00e0 jours sont r\u00e9alis\u00e9es \u00e0 la main depuis le poste de contr\u00f4le <em>warhole<\/em> et automatiquement une fois par jour.<\/p>\n<h3>Serveur relais <em>puppetmaster<\/em><\/h3>\n<p style=\"text-align: justify;\">Ce serveur fait l&rsquo;interface entre la machine isol\u00e9e h\u00f4te de l&rsquo;entit\u00e9 <em>puppetmaster<\/em> et le serveur public <em>xue<\/em> qui diffuse les liens de cette entit\u00e9.<\/p>\n<p style=\"text-align: justify;\">Ce serveur est install\u00e9 en <em>OpenBSD 5.4<\/em> sur une vieille machine <em>PC<\/em> de type <em>i586<\/em>. Il ne supporte que <em>IPv6<\/em> et est prot\u00e9g\u00e9 de l&rsquo;Internet par le pare-feu <em>spartacus<\/em>.<br \/>\nAucun service sur le r\u00e9seau n&rsquo;est utilis\u00e9.<\/p>\n<p style=\"text-align: justify;\">Le disque dur est chiffr\u00e9 avec un mot de passe au d\u00e9marrage.<\/p>\n<p style=\"text-align: justify;\">Les mises \u00e0 jours sont r\u00e9alis\u00e9es \u00e0 la main en cas d&rsquo;extr\u00eame n\u00e9cessit\u00e9.<\/p>\n<h3>Serveur relais <em>bachue<\/em><\/h3>\n<p style=\"text-align: justify;\">Ce serveur fait l&rsquo;interface entre la machine isol\u00e9e h\u00f4te de l&rsquo;entit\u00e9 <em>bachue<\/em> et le serveur public <em>xue<\/em> qui diffuse les liens de cette entit\u00e9.<\/p>\n<p style=\"text-align: justify;\">Ce serveur est install\u00e9 en <em>FreeBSD Release 10.0<\/em> sur une vieille machine <em>PowerPC<\/em>. Il ne supporte que <em>IPv6<\/em> et est prot\u00e9g\u00e9 de l&rsquo;Internet par le pare-feu <em>spartacus<\/em>.<br \/>\nAucun service sur le r\u00e9seau n&rsquo;est utilis\u00e9.<\/p>\n<p style=\"text-align: justify;\">Le disque dur n&rsquo;est pas encore chiffr\u00e9. Le syst\u00e8me est cependant sommairement offusqu\u00e9.<\/p>\n<p style=\"text-align: justify;\">Les mises \u00e0 jours sont r\u00e9alis\u00e9es \u00e0 la main en cas d&rsquo;extr\u00eame n\u00e9cessit\u00e9.<\/p>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/nebule\/2013\/08\/favicon2.png\"><img decoding=\"async\" loading=\"lazy\" src=\"\/wp-content\/uploads\/nebule\/2013\/08\/favicon2.png\" alt=\"favicon\" width=\"32\" height=\"32\" \/><\/a><\/p>\n<h2>Probl\u00e8mes et \u00e9volutions<\/h2>\n<p style=\"text-align: justify;\">Pour commencer, le projet <em>nebule<\/em> est exp\u00e9rimental. Cela veut dire qu&rsquo;un certain nombre de concepts utilis\u00e9s sont du domaine de l&rsquo;exp\u00e9rience, ils peuvent se r\u00e9v\u00e9ler fonctionnels et coh\u00e9rents, ou pas. Mais un certain nombre d&rsquo;\u00e9l\u00e9ments de ce projet sont aussi des exp\u00e9riences.<\/p>\n<p style=\"text-align: justify;\">D&rsquo;un point de vue global, l&rsquo;organisation des entit\u00e9s sous forme hi\u00e9rarchique pose un gros probl\u00e8me de vuln\u00e9rabilit\u00e9. Le probl\u00e8me, c&rsquo;est que cette entit\u00e9 est d\u00e9tenue par une seule personne. Le risque, c&rsquo;est la mauvaise utilisation de l&rsquo;entit\u00e9. Cette mauvaise utilisation peut \u00eatre le fait de la seule personne qui d\u00e9tient l&rsquo;entit\u00e9, ou le fait d&rsquo;autres personnes qui auraient pris le contr\u00f4le de l&rsquo;entit\u00e9.<br \/>\nPour r\u00e9duire le risque, il ne faut pas partager l&rsquo;entit\u00e9 avec plusieurs personnes puisque cela augmente d&rsquo;autant le risque de compromission de l&rsquo;entit\u00e9, et donc de sa mauvaise utilisation. Il faut trouver une m\u00e9thode s\u00fcr pour r\u00e9partir l&rsquo;entit\u00e9 entre plusieurs personnes, c&rsquo;est \u00e0 dire faire en sorte d&rsquo;une seule personne ne puisse utiliser seule l&rsquo;entit\u00e9. Il est peut-\u00eatre possible de permettre un d\u00e9verrouillage avec une partie seulement des personnes. On entrerait ainsi dans un mode de fonctionnement d\u00e9mocratique.<br \/>\nCette \u00e9volution n\u00e9cessite une recherche th\u00e9orique.<\/p>\n<p style=\"text-align: justify;\">La s\u00fbret\u00e9 de fonctionnement est la traduction technique d&rsquo;un sentiment humain, la confiance. Elle est ici appuy\u00e9e fortement \u00e0 la fois sur le facteur humain et le facteur technique. Mais il semble n\u00e9cessaire de faire encore quelques ajustements et \u00e9quilibrages en technique et humain.<\/p>\n<p style=\"text-align: justify;\">Les objets peuvent \u00eatre prot\u00e9g\u00e9s, mais pas encore les liens. Le chiffrement des liens, tout en permettant leur bonne diffusion doit permettre de renforcer la confidentialit\u00e9 des informations trait\u00e9es ainsi que l&rsquo;anonymat de fa\u00e7on g\u00e9n\u00e9rale. Cette \u00e9volution va n\u00e9cessiter une mont\u00e9e en version de <em>nebule<\/em> vers la v1.2.<\/p>\n<p style=\"text-align: justify;\">La machine relais de <em>bachue<\/em> n&rsquo;a pas son disque dur chiffr\u00e9. C&rsquo;est \u00e0 corriger.<br \/>\nIl serait int\u00e9ressant de pouvoir faire d\u00e9marrer \u00e0 la fois <em>FreeBSD<\/em> et <em>OpenBSD<\/em> , y compris sur une machine <em>PowerPC<\/em>, avec des cl\u00e9s USB de d\u00e9marrage contenant les mots de passe des disques durs.<\/p>\n<p style=\"text-align: justify;\">A compl\u00e9ter&#8230;<\/p>\n<p style=\"text-align: center;\">(2014)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En cours de r\u00e9daction&#8230; Sommaire : Introduction S\u00fcret\u00e9 de fonctionnement Fonctionnement de nebule Environnement S\u00e9curit\u00e9 du code S\u00e9curit\u00e9 des entit\u00e9s Entit\u00e9 puppetmaster Entit\u00e9 cerberus Entit\u00e9 bachue Entit\u00e9 asabiyya Entit\u00e9 kronos Architecture Pare-feu spartacus Serveur xue Poste de contr\u00f4le warhole Serveur thor Serveur relais puppetmaster Serveur relais bachue Probl\u00e8mes et \u00e9volutions Introduction L&rsquo;un des trois principes &hellip; <a href=\"http:\/\/blog.nebule.org\/?page_id=1539\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">S\u00e9curit\u00e9<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":3,"comment_status":"open","ping_status":"open","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/pages\/1539"}],"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=1539"}],"version-history":[{"count":3,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/pages\/1539\/revisions"}],"predecessor-version":[{"id":3384,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/pages\/1539\/revisions\/3384"}],"wp:attachment":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}