Ce matin, en me connectant à Facebook sur l’ordinateur commun à nous, je me suis fait la réflexion que certaines choses étaient faites bizarrement. Je suis sur ma session Linux à moi mais dans Firefox, c’est toi Diana qui est connectée à FB…
L’ordinateur est multi-session, mais on ne voit simultanément qu’une seule session, soit moi soit toi. Si tu veux ouvrir ton Firefox avec ta connexion FB, tu dois ouvrir une autre session de l’ordinateur. Le problème est que l’on ne peut pas ouvrir facilement deux navigateur pour deux utilisateurs différents dans la même session, une session à nous.
Catégorie : Réflexions
Compressibilité des liens
Les expériences autour de nebule se font aujourd’hui via des échanges en html. Il pourront se faire plus tard via tout protocole d’échange. indépendamment du stockage des liens, il sera utile de les compresser lors de leur transmission pour gagner de la bande passante réseau. Continuer la lecture de Compressibilité des liens
Autorité temporaire
Quels incidents peut-on rencontrer sur un système d’information reposant sur une cryptographie moderne ?
Et comment peut-on y répondre ?
La cryptographie est un formidable outil mathématique. Ses propriétés sont sans équivalents dans le monde réel et palpable du commun des mortels. A cause de cela, l’outil et ses usages restent abstraits et méconnus pour beaucoup de gens. Mais, loin d’être anecdotique, la cryptographie est présente partout autour de nous, dans tout ce qui est numérique. Et il ne suffit pas d’un bon discours commercial à grand renfort de sigles abstraits suivis de quelques chiffres pour que l’ensemble remplisse son rôle : sécuriser nos données.
On se connecte à un ordinateur, le mot de passe est transformé en hash. On se connecte au site web de la banque, la connexion est sécurisée. On envoie des emails chiffrés et signés. Notre ordinateur vérifie la signature des mises à jours qu’il doit appliquer, idem pour notre box internet. Notre téléphone cellulaire chiffre la conversation avec le réseau opérateur, mais pas avec notre correspondant. La puce de notre carte bancaire valide une transaction chez notre marchant de légumes. Notre réseau wifi est protégé par mot de passe. etc…
Mais au fait, n’y a-t-il vraiment que les données à sécuriser ?
L’utilisateur est au centre de ces données, celles-ci n’ont d’utilité que pour l’utilisateur légitime et pour celui qui pourrait trouver un bénéfice à les exploiter à la place de l’utilisateur légitime.
Gestion de programmes
Lors des expériences, il est apparut qu’il était assez facile de diffuser des programmes, dans notre cas des pages web en php, comme des objets à part entière.
Il faut deux choses.
La première c’est qu’il faut une page web de bootstrap (marche pied). C’est cette page qui va déterminer si il existe une page à afficher dans les objets, et la lancer. La page en question doit être un dérivé (lien F) de l’objet « nebule/objet/entite/webaccess/firstofall », et être de mime-type « application/x-php ».
Et il faut que le programme en question puisse se mettre à jour. Ce peut être fait en suivant les liens de mise à jour d’objet (lien U) du programme en question. On peut aussi suivre les nouveaux liens de l’objet « nebule/objet/entite/webaccess/firstofall » d’une autre entité. Ne reste plus qu’à téléchager le nouvel objet et mettre à jour sont propre objet « nebule/objet/entite/webaccess/firstofall ».
NÅ“uds
Le nœud est la rencontre de plusieurs chemins convergents/divergents. Cette rencontre est matérialisé par une liaison forte entre ces différents chemins.
La nébuleuse des objets a besoin d’une architecture locale avec des points de convergence forts. Ce sont des nÅ“uds. Ils permettent d’architecturer, d’organiser les liens entres objets, et donc de canaliser les partages d’informations.
Implémentation de liens sécurisés
Une première implémentation en shell bash a été réalisée pour la lecture et l’écriture de lien sécurisés.
Ces liens sont dits sécurisés parce qu’ils sont signés par une entité, et donc leur intégrité et leur provenance peuvent être vérifiés. Si la signature est invalide, ils sont simplement ignorés.
Voir l’implémentation de référence en bash.
Exemple de résultats (empreintes tronquées à 16 caractères) :
sha256:03e7785a6-975571a8a470a6d9-20120914182239-L-975571a8a470a6d9-970bdb5df1e79592-93d4a5f3ef1fc5c8
sha256:2ec7df2b9-975571a8a470a6d9-20120914182239-L-975571a8a470a6d9-7c512aaa1c5e3837-a6b4edb371e864e4
sha256:86d8d0f2f-975571a8a470a6d9-20120914182240-F-6a4b7f1100b87044-975571a8a470a6d9
sha256:2c7911d50-975571a8a470a6d9-20120914182240-L-975571a8a470a6d9-37d22e047bd0173f-703c4a9a2573f76a
sha256:90952b31d-975571a8a470a6d9-20120914182241-L-975571a8a470a6d9-69eb5187e4469dfd-93d4a5f3ef1fc5c8
sha256:3ed5b8f4c-975571a8a470a6d9-20120914182242-L-975571a8a470a6d9-6bf6ae23819cd0d1-0e87632cd46bd490
sha256:0626480c2-975571a8a470a6d9-20120914182243-L-975571a8a470a6d9-4b9a7f50c0bb198c-911f9ec89c20f340
sha256:51b955e0b-975571a8a470a6d9-20120914182243-L-975571a8a470a6d9-3514acf61732f662-5ef523ac47dae4aa
sha256:01bcc6d09-975571a8a470a6d9-20120914182243-L-975571a8a470a6d9-8527a891e2241369-b5977b836b445eaf
sha256:58a62c5ab-975571a8a470a6d9-20120914182243-L-975571a8a470a6d9-4ec9599fc203d176-dc80905e9df6dac2
sha256:bf51f9067-975571a8a470a6d9-20120914182244-L-975571a8a470a6d9-785f3ec7eb32f30b-28cdd20eaf134a05
sha256:553af0cc7-975571a8a470a6d9-20120914182244-L-975571a8a470a6d9-aea92132c4cbeb26-9d64d711a2a1123e
sha256:162bfc0c5-975571a8a470a6d9-20120914182244-L-975571a8a470a6d9-caa1aedb2a6ce96b-c0f059214d078968
Collisions d’empreintes multi-algorithmique
On peut utiliser de multiples algorithmes pour calculer l’empreinte des objets. Certains algorithmes sont plus résistants, plus fiables ou plus sûrs que d’autres. Cette résistance est représenté par l’impossibilité (relative) d’inverser la fonction algorithmique, c’est à dire de retrouver l’objet source à partir de l’empreinte. Il en découle l’impossibilité (relative aussi) de calculer une collision dans les empreintes entre deux objets, c’est à dire de calculer un objet qui a une empreinte précise, par exemple la même empreinte qu’un autre objet pré-existant. Ces impossibilités sont relatives parce qu’il sera toujours possible dans le pire des cas (pour l’attaquant) de tester toutes les combinaisons possible afin de trouver une collision, mais cela lui prendra un temps tel que c’est jugé équivalent à impossible dans l’état actuel de nos connaissances mathématiques et de nos moyens informatiques.
Première conclusion, inutile de s’attarder sur des algorithmes de prise d’empreinte triviales comme CRC qui n’ont pour vocation que de permettre une vérification extrêmement rapide de données transmises (par exemple sur la couche TCP sur IP). Ces algorithmes ne sont pas prévus pour résister aux collisions volontaires.
Seconde conclusion, rappel de principes de base en sécurité informatique, on ne doit pas utiliser des algorithmes qui sont reconnus non fiables ou pour lesquels on est sur le point de réussir des collisions. Exit donc MD5, SHA0 et SHA1 par exemple.
Jusque là , on reste en territoire connu. SHA256 est encore aujourd’hui reconnu comme sûr et ne semble pas présenter de faiblesse à moyen terme. Il peut servir sans risque intrinsèque aux premières expériences nécessitant un bon niveau de sécurité. D’autres algorithmes connus sont susceptibles d’être utilisés dans un futur proche.
Mais que ce passe-t-il si on mélange plusieurs algorithmes différents pour le calcul d’empreinte ?
Ne risque-t-on pas d’affaiblir non pas les algorithmes mais le système dans son ensemble ?
En présentant un objets sous différentes empreintes générées par des algorithmes différents, ne risque-t-on pas d’affaiblir un ou plusieurs algorithmes ?
De façon plus générale, si une faille importante est découverte dans un algorithme et que celui-ci n’est plus jugé sûr, quelles conséquences pour l’ensemble du système ?
Localisation web
Chaque entité dispose par nature d’un identifiant unique, invariant et non cessible. C’est une clé cryptographique publique.
Cependant cet identifiant ne précise pas la place de l’entité, ou plutôt la place où on peut la joindre.
Les entités, pour pouvoir échanger, doivent avoir une place publique, c’est la localisation.
Cette place est-elle unique d’ailleurs?
En fait non, l’entité peut être présente en de multiples places, soit par le biais de relais, soit parce que la clé privé aura été volé et exploité.
Ce qui différencie fortement l’entité d’une ressource web classique, c’est que l’entité est unique quelque soit sa localisation, et n’existe pas uniquement du fait de l’existence du serveur web qui l’héberge. Cette entité survira à la disparition d’un serveur web, sa résilience est grandement amélioré et ne dépend que faiblement de sont environnement.
Début de l’expérience 4
L’expérience 4 est lancée sans attendre la fin de l’expérience 3.
Introduction
Une des possibilités que permet le relai est de partager l’information via d’autres machines, un peu à la manière du P2P.
Mais c’est aussi un bon moyen de créer une sauvegarde d’objets, et de gérer ceux-ci.
Cette expérience vise à créer une base de relai automatisé.
Le groupe
Suite au post du 7 août.
Le groupe est une notion assez générale qui désigne un certain nombre d’objets reliés entre eux par un seul objet. Ces objets pouvant être des entités.
Il y a deux façons de l’implémenter, en fonction de ce que l’on veut en faire :
– le groupe uni-polaire
– le groupe multipolaire
Le groupe ?
Qu’est ce qu’un groupe?
On le comprend habituellement comme un groupe de personnes.
Quel est la définition du groupe?
Qui/quoi attache des personnes à un groupe?
Comme est interprété un groupe attaché à un autre groupe?
Quelle est la solidité du groupe? Sa résilience?
Comment le traduit cryptographiquement?
Comment l’intégrer à nebule?
Est-il restreint à des entités ou peut-il intégrer des objets autres?
(voir suite sur le post du 20 août)
Tracé de graphes objets/liens, le début
La deuxième expérience monte le manque de représentation graphique des objets et liens générés.
Suite à la publication d’un projet personnel de Ruslan Enikeev, je me suis intéressé à son travail sur The Internet map :
Continuer la lecture de Tracé de graphes objets/liens, le début
Agencement du registre de lien
La forme du lien est-elle optimale?
TimeStamp-Action-HashSource-HashCible-HashMeta-Signataire-Signature
Avec HashCible
et HashMeta
facultatifs.
Le Signataire
et la Signature
(obligatoirement présente mais éventuellement nulle) sont deux éléments indissociables et à la fin. Ils valident ainsi le (reste du) lien. Continuer la lecture de Agencement du registre de lien
Impersonnalité, commutabilité et liens
La mutualisation de certains objets métas pour relier un objet à une propriété particulière, et notamment pour lui donner un type, nécessite une certaine forme d’abstraction.
Plusieurs questions sont en attente :
- Comment se présente le contenu d’un objet méta ?
- Quel vocabulaire pour l’objet méta ?
- La commutabilité des éléments d’un lien sont-ils possibles ?
- Comment représente-t-on l’impersonnalité dans l’objet méta ?
- Quelles contraintes sur le lien ?
Continuer la lecture de Impersonnalité, commutabilité et liens
Messagerie social
Les objets que l’on échange, y compris les textes, sont perdus dans l’océan des objets dont nous disposons.
Que devient un message ou un objet transmit comme message?
Il est naturellement ajouté aux autres objets. Mais en plus, il a un lien signé par une autre entité, donc on peut considérer que cet objet est aussi lié à cette entité.
Ce lien implicite à une entité fait que cet objet a une visibilité par cette entité, en l’analysant on verra cet objet.
Poussons encore plus loin, et si on analyse tous les liens vers des objets que publie cette entité, que voit-on ?
On va voir dans l’ordre chronologique tout ce qu’elle a jugé intéressant à garder, les objets qu’elle a créé, tous les objets sur lesquelles elle est intervenu, les messages que l’on a échangé avec elle, etc…
Les messages (objets échangés) ne sont visibles que si ils sont publics, ou si ils sont chiffrés et que l’on est destinataire.
Cette vue, ce comportement, c’est presque celui des réseaux sociaux!
OpenMail
En suivant le raisonnement sur l’annuaire et la messagerie, on peut aller encore plus loin.
Finalement, rien n’empêche que les entités s’échangent directement les objets messages.
Relais et liens
Comment mettre à jour le contenu d’un relais?
Par principe, le relais (ou proxy) se contente de copier des objets. Mais aussi, de fait en tant qu’entité, en les copiant, il propose ces objets en diffusion (au téléchargement).
Quel est l’intérêt?
Cela permet à une entité source, par exemple un humain, de générer des objets et de les faire diffuser par des entités relais qu’il contrôle. Ainsi, il peut ne pas être en permanence accessible (volontairement ou pas). Ses objets restent accessibles si les relais le sont. Plusieurs relais peuvent diffuser les mêmes objets, on ajoute de la redondance et on cumule la bande passante de téléchargement pour quelqu’un qui télécharge un de ces objets, à la manière du P2P (peer to peer).
Suppression de lien entre deux entités
Question ouverte.
Un lien entre deux entités peut être annulé par l’entité source du lien. Peut-il être annulé par l’entité destination du lien?
Est-ce faisable pour un lien simple? lien double? lien triple?
Quel intérêt? Quels risques? Quelle application pratique?
Annuaire et messagerie
La messagerie est un comportement assez difficile à reproduire, ou à remplacer dans un monde de liens dans lequel il n’existe pas de « connexion » autre que le téléchargement.
L’annuaire peut peut-être remplir ce rôle.