Création d’une nouvelle entité

La création d’un nouvelle entité depuis rien se fait en plusieurs étapes.

Tout n’est pas encore fonctionnel, la procédure sera simplifiée par la suite.

Serveur web

Il faut créer un espace de stockage pour le site web qui va recevoir le code de sylabe. Typiquement c’est un site virtuel dans Apache2.

La configuration actuelle nécessaire à sylabe (ça pourra changer) :

<VirtualHost *:80>
        ServerName stephane.nebule.fr
        ServerAdmin webmaster@starend.org
        DocumentRoot /www/stephane.nebule.fr
        <Directory /www/stephane.nebule.fr/>
                AllowOverride None
                Options -Indexes
                <limit POST>
                        allow from all
                </limit>
                <limit GET>
                        allow from all
                </limit>
        </Directory>
	AddDefaultCharset utf-8
	AddCharset UTF-8 .utf8
        ErrorLog /var/log/apache2/nebule.org_error.log
        LogLevel info
        CustomLog "|/usr/bin/logger" combined
        CustomLog /var/log/apache2/nebule.org_access.log combined
        ServerSignature Off
</VirtualHost>
<VirtualHost *:443>
        ServerName stephane.nebule.fr
        ServerAdmin webmaster@starend.org
        DocumentRoot /www/stephane.nebule.fr/
        SSLEngine On
        <Directory /www/stephane.nebule.fr/>
                AllowOverride None
                Options -Indexes
                <limit POST>
                        allow from all
                </limit>
                <limit GET>
                        allow from all
                </limit>
        </Directory>
	AddDefaultCharset utf-8
	AddCharset UTF-8 .utf8
        ErrorLog /var/log/apache2/nebule.org_error.log
        LogLevel info
        CustomLog "|/usr/bin/logger" combined
        CustomLog /var/log/apache2/nebule.org_access.log combined
        ServerSignature Off
</VirtualHost>

Il faut ensuite copier différents fichiers dans le dossier /www/stephane.nebule.fr/ :

  1. index.php – Le chargeur de pages web. Ce fichier est disponible ici.
  2. sylabe.php – Le programme sylabe. Ce fichier est disponible iciPas à jour !!!
  3. lib_nebule.php – La librairie des fonctions de nebule sous-jacente à sylabe. Ce fichier est disponible iciPas à jour !!!
  4. env_sylabe.php – L’environnement spécifique au site web. Ce fichier est disponible ici.

A terme, il est prévu que seul le fichier index.php soit suffisant pour une nouvelle installation. Tout le reste sera nébulisé.

Créer les fichiers et dossiers par défaut :

  1. Dossier o – Va contenir tous les objets.
  2. Dossier l – Va contenir tous les liens.
  3. Fichier a qui contient sylabe.php – Indique le programme à charger par défaut.
  4. Fichier c – Contient l’URL du serveur.

Donner le droit au démon Apache2 d’écrire dans o et l.

Création de l’entité autonome

Pour pouvoir créer une entité, il faut qu’un certain nombre de variables soient positionnées. Elles doivent être ajoutées dans le fichier env_sylabe.php :

$nebule_permitcreatelink = true;
$nebule_permitcreateobj = true;
$nebule_permitcreatentity = true;
$nebule_permitwrite = true;
$sylabe_permitpubcreatentity = true;

Ouvrir la page http://mon.site.net/sylabe.php?mod=ent . Dans la partie « Créer une entité :« , renseigner les champs avec au minimum un mot de passe. Il est préférable de donner un nom à l’entité. Valider.

En haut de la page se trouve le compte rendu de création de la nouvelle entité. Si tout se passe bien, il y a à la fin une ligne qui ressemble à « Basculer vers la nouvelle entité MonNom (déconnexion)« . Cliquer sur le lien.

Cliquer sur le lien rouge « Déverrouiller » tout en haut de la page.

Saisir le mot de passe et valider. Vous devez maintenant avoir le haut de page en vert.

Permanence de l’entité

Pour dire au serveur que ici c’est chez vous, il faut ajouter un fichier e contenant l’ID de votre entité. Ainsi à chaque connexion, c’est votre entité qui sera affichée par défaut.

C’est terminé!

Changement de couleur

Changement cosmétique pour aujourd’hui. En cherchant une nouvelle couleur pour le mode déverrouillé, un vert s’est imposé. Et ça tombe bien, c’est la couleur Pantone de l’année 2013 :

Pantone 17-5641 Emerald

Elle n’apparaît que lorsque l’entité est déverrouillée, dans la partie haute de la barre supérieure. Auparavant, c’était orange vif pour bien marquer que l’on avait accès à des objets protégés. Cela donne :

shot-2013-12-11_20-40-00

Avancement

Un premier ajout ce soir concerne une forme de journalisation des liens créés. Si activé, tous les liens créés sont copiés dans un fichier f présent dans le dossier des liens. Il est ainsi notamment accessible à une adresse de la forme http://stephane.nebule.fr/l/f.
Cette journalisation de l’activité sur le serveur est assez gênante puisque publique. Le besoin est cependant ici assez ciblé, en dehors de la facilité de debugg. Les différentes entités spéciales que sont puppetmaster, cerberus, kronos, bachue et asabiyya sont manipulées sur une machine hors connexion, le fameux air gap. Or, j’ai besoin de pouvoir rapidement extraire les nouveaux liens générés pas ces entités, et les objets qui vont avec, pour les transférer vers une machine qui se chargera de les transmettre sur le serveur web public. Cette fonctionnalité est contrôlée par la variable $nebule_createhistory.

Ensuite, j’ai ajouté le code nécessaire au téléchargement de nouveaux objets. Le nom est récupéré et lié à l’objet ainsi que l’extension et le type mime. Ce dernier n’est pas renvoyé par le navigateur mais recalculé sur l’objet reçu. Pour l’instant, les fonctions de protection de l’objet et de ses liens ne sont pas fonctionnelles.
Cette capacité me permet de diffuser la dernière version des différents fichiers :
index.php
sylabe.php
lib_nebule.php
env_sylabe.php

Avancement

Depuis aujourd’hui, on peut protéger et déprotéger un objet, c’est à dire le chiffrer et le déchiffrer. Lorsque l’objet est protégé, ou lorsque l’on affiche le fichier chiffré, un message prévient qu’il est protégé et qu’il faut faire attention si il apparaît en public. Ce message va surtout servir pour l’étape suivante, permettre l’affichage en ligne du contenu des objets protégés lorsque l’entité est déverrouillée.

Il est maintenant aussi possible de démarrer un nouveau serveur contenant sylabe et de générer une nouvelle entité. typiquement, ce peut être le serveur dédié à cette entité. Ce n’est pas encore tout à fait au point, il y a des objets à créer par défaut et ce n’est pas encore fait par défaut. On peut donc tout à fait se passer des script bash pour la génération d’une nouvelle entité et même de son serveur sylabe associé.

Voici un exemple sur ce qu’il se passe au moment ou l’on protège un objet :

20131207 sylabe capture

Avancement

Le chiffrement commence à se mettre en place. Le bouton de protection des objets est maintenant pleinement fonctionnel. Les liens vers les clés de session et IV sont créés. La clé de session est chiffrée pour l’entité courante.

Il ne reste qu’à faire la fonction de déchiffrement et vérifier que ça marche aussi depuis le bash.

Avancement

Cette fois-ci, la génération d’une nouvelle entité a basculée dans la librairie nebule. Et c’est fonctionnel pour une entité autonome !
J’ai même réussit à me connecter avec ces nouvelles entités générées.
Tous les liens, y compris le nom et la date de création sont générés par la nouvelle entité elle-même. Cela permet de ne pas trahir de lien avec l’entité courante. Ce sera par contre une autre histoire pour les entités esclaves.

Il reste à améliorer la génération d’entités esclaves. Cela nécessite le chiffrement du mot de passe généré aléatoirement pour protéger la clé privée. Du coup, le développement se concentre maintenant sur le chiffrement/déchiffrement proprement dit. Le mécanisme de gestion du mot de passe permettra même de rattacher une entité autonome comme entité esclave simplement en recréant les liens et le mot de passe chiffré comme c’est le cas pour une entité esclave.

Avancement

La génération d’une nouvelle entité est presque fonctionnelle. Cela inclut bien sûr la génération d’un bi-clé RSA. Les objets des clés publiques sont générés, ainsi que certains liens indispensable.
Cependant, seul le cas d’une entité autonome est géré. Le cas de l’entité esclave de l’entité courante nécessite le chiffrement du mot de passe aléatoire. Or le chiffrement existe dans nebule en bash, mais par encore dans sylabe en php.
De plus, tous les liens ont été signés par l’entité courante, ce qui ne n’est pas vraiment souhaitable. Il faut modifier le code pour que ce soit la nouvelle entité qui les signe.

Avancement

La reconnaissance d’une entité tierce est fonctionnelle. En fonction des informations renseignées, c’est à dire ID et/ou localisation, on récupère si possible les informations manquantes ainsi que le nom, prénom et surnom. On enregistre et on lie la localisation renseignée ou trouvée pour l’entité.

Le véritable identifiant de l’entité, ID, c’est l’empreinte de la clé publique. C’est un objet indispensable à trouver puisque c’est le seul à pouvoir valider les liens de cette entité.
La localisation est indispensable si l’entité n’est pas connue de son cercle d’amis (càd toutes les autres entités que l’on connaît).

Si la localisation de l’entité n’est pas renseignée ou trouvée, on utilise à la place l’emplacement de l’entité annuaire asabiyya par défaut.

C’est l’occasion aussi d’une rationalisation du code pour la création de nouveaux objets contenant du texte au niveau de nebule. La localisation est un texte par exemple. Ce code est reprit de la partie de sylabe qui permet l’ajout d’un texte.

Avancement

Ce soir, je n’ai pas continué la création d’une nouvelle entité, mais j’ai fait la reconnaissance d’une entité tierce. C’est à dire que sur un ID et/ou une URL, on peut synchroniser une entité, récupérer son nom et la marquer comme connue. Bon, j’ai un petit bugg sur la recherche du nom, mais ce ne doit pas être bien grave…