Abandon de certains liens lors du chiffrement

Maintenant que l’IV est utilisé par défaut avec une valeur nulle, il n’a plus à être précisé. Le lien qui était généré vers l’objet nebule/objet/encode/InitialVector pour le préciser n’a plus de raison d’être utilisé.

Il en est de même pour la clé de session. L’objet de la clé de session apparaît naturellement dans les deux liens de chiffrement. Il n’est donc pas nécessaire de re-préciser que c’est une clé de session. Il n’est d’ailleurs pas utilisé dans le processus de déchiffrement. Le lien vers nebule/objet/encode/SessionKey ne sera donc plus généré.

Et de fait, l’objet nebule/objet/encode n’a plus d’utilité non plus. La documentation de nebule v1.1 est mise à jour en conséquence. On supprime ces objets réservés :

  • nebule/objet/encode
  • nebule/objet/encode/InitialVector
  • nebule/objet/encode/SessionKey

OpenSSL et la cryptographie – suite

Voici la suite sur les problèmes d’implémentations de la cryptographie symétrique tel que décris dans OpenSSL et la cryptographie et Interopérabilité du chiffrement(blog sylabe).
Après quelques tests sur le chiffrement symétrique avec la commande openssl et son équivalent en php, j’ai trouvé les bonnes implémentations pour obtenir le même chiffre à partir des mêmes valeurs en entré.

Il y a à la fois une erreur dans l’implémentation de openssl dans nebule en bash, et une autre erreur d’implémentation de openssl dans sylabe en php.

BASH

En bash, la commande openssl enc était appelée avec l’option -kfile alors qu’il faut utiliser l’option -K.
Il faut en plus utiliser l’option -nosalt pour ne pas ajouter de sel et donc notamment avoir un objet chiffré de taille strictement identique à l’objet en clair.

Voici une courte implémentation qui marche, dans le cadre d’emploi de nebule exclusivement :

#!/bin/bash
nebule_symalgo="aes-256-ctr"
iv='00000000000000000000000000000000'
echo -n "477fd3f3a32dc5de70cf13d1e46d8663f5f23873826572ea8359064b6d63c60c2d76f29a5e34fac2aebb157975517ef23110f4a5e415d9d0408f6fe7b9fe17bdd6bbb2df3fb819ecbd5216835ecccc559e7eb84e0517e92538d9a81fec333498a64b90df3429abe857ba1666fc93b24509e63d05fd619da9eef12c8d70dbacca" > /tmp/bdata
key='8fdf208b4a79cef62f4e610ef7d409c110cb5d20b0148b9770cad5130106b6a1'
openssl enc -e -$nebule_symalgo -in "/tmp/bdata" -out "/tmp/bcode" -K $key -iv $iv -nosalt -p
sha256sum /tmp/bcode

PHP

En php, la commande openssl_encrypt recevait la clé de chiffrement hexadécimale alors qu’il faut la transmettre sous forme binaire.
Par défaut, aucun sel n’est utilisé.
Enfin, l’IV peut avoir une valeur nulle contrairement à ce qu’affirme la documentation. Ce doit être une erreur de traduction. La valeur de doit pas avoir une taille nulle.

Voici une courte implémentation qui marche, dans le cadre d’emploi de nebule exclusivement :

<?php
$nebule_symalgo = 'aes-256-ctr';
$data="477fd3f3a32dc5de70cf13d1e46d8663f5f23873826572ea8359064b6d63c60c2d76f29a5e34fac2aebb157975517ef23110f4a5e415d9d0408f6fe7b9fe17bdd6bbb2df3fb819ecbd5216835ecccc559e7eb84e0517e92538d9a81fec333498a64b90df3429abe857ba1666fc93b24509e63d05fd619da9eef12c8d70dbacca";
$hiv='00000000000000000000000000000000';
$iv=pack("H*", $hiv);
$hkey="8fdf208b4a79cef62f4e610ef7d409c110cb5d20b0148b9770cad5130106b6a1";
$key=pack("H*", $hkey);
$cryptobj=openssl_encrypt($data, $nebule_symalgo, $key, OPENSSL_RAW_DATA, $iv);
$hashcryptobj=hash('sha256', $cryptobj);
echo "E=$hashcryptobjn";
?>

OpenSSL et la cryptographie

La mise en place du chiffrement/déchiffrement dans sylabe, l’implémentation de nebule en php, révèle quelques problèmes et spécificités de OpenSSL.

Lorsque il a fallu déchiffrer avec la commande openssl les objets chiffrés depuis sylabe, ça n’a pas marché.

Les objets chiffrés par sylabe, qui utilise openssl dans php, peuvent être déchiffrés par sylabe. Les objets chiffrés par nebule en bash, qui utilise la commande openssl, peuvent être déchiffrés via la même commande en bash. Le point commun est l’utilisation de la librairie openssl. Mais en pratique un objet chiffré dans sylabe que l’on essaye de déchiffrer avec la commande openssl (via nebule en bash) retourne une erreur ‘Bad Magic Number’. Et l’inverse ne marche pas non plus. Ah, c’est moche…

Salage

Le problème ici est lié à l’utilisation d’un ‘salage’ (salt). Cette valeur est générée aléatoirement par openssl pour complexifier le mot de passe de chiffrement et réduire les attaques par dictionnaire de mots de passe pré-hashés (rainbow-table). Le sel est une valeur publique contrairement au mot de passe, et doit impérativement être envoyé avec le fichier chiffré. Le salage est un renforcement de la procédure de chiffrement et non du mot de passe lui-même. Pour que le sel soit transmit avec les données chiffrées, openssl ajoute un petit entête aux données chiffrées avec notamment la valeur du sel. Il en résulte une petite augmentation de la taille du fichier des données chiffrées de 16octets. Or, la librairie openssl utilisée dans php ne génère pas de sel, les données chiffrées et non chiffrées ont la même taille.

Quelle solution apporter ?

Il est possible de gérer cet entête de fichiers chiffrés dans le code php. Cela entraîne une augmentation de la complexité du chiffrement/déchiffrement mais permet de conserver un comportement commun avec les objets actuellement générés en bash. Cette compatibilité ‘commune’ n’est pas universelle puisqu’elle n’est pas gérée par la librairie openssl dans php, et donc peut-être pas non plus dans d’autres environnements.
On peut aussi ne pas permettre d’utiliser un entête particulier et de gérer le salage de la même façon que l’IV. Cette solution casse la gestion des objets chiffrés actuels mais surtout complexifie les liens de chiffrement.
Une autre solution serait de ne pas utiliser le salage du tout. Une option de openssl le permet : -nosalt. Cela permet d’avoir un chiffrement plus simple et des objets chiffrés plus propres, et donc une implémentation plus universelle du chiffrement. On va cependant à l’encontre des recommandations faites par les développeurs de OpenSSL. Et on ré-ouvre potentiellement par dictionnaire pré-calculés.

Mais a-t-on vraiment besoin du salage ?

Le salage permet en fait de renforcer la sécurité de mots de passes potentiellement faibles ou à la limite de l’attaque par force brute.
Le chiffrement des objets dans nebule impose l’utilisation d’une clé de session aléatoire. Si l’espace des valeurs des clés de sessions est aléatoire et suffisamment grand, une attaque par dictionnaire est impossible. C’est impossible parce qu’il est dans ce cas précis impossible de pré-calculer et encore moins de stocker dans un dictionnaire l’intégralité des valeurs possibles. Un espace des valeurs de clé suffisamment grand peut se comprendre par une entropie correspondant à 128bits et plus.

Le script bash référence de nebule génère actuellement une clé de session de 64octets de valeurs hexadécimales, soit 256bits d’entropie réelle. Le code php de sylabe génère actuellement une clé de session de 128octets aléatoires, soit 1024bits d’entropie réelle.

Donc, le salage va être volontairement supprimé dans le chiffrement des objets tel que mis en place dans nebule.

Semence

Un problème similaire existe avec l’IV (Initial Vector, vecteur initial ou semence).

Lorsque l’on réalise un chiffrement symétrique, celui-ci se fait typiquement par blocs de données. Ce découpage peut entrer en interférence, en quelque sorte, avec les données à chiffrer. Si ces données sont répétitives suivant la taille du bloc ou un multiple, alors les blocs de données chiffrées correspondantes vont être identiques. Et cette répétition est détectable et fourni des informations sur le contenu non chiffré…
Pour remédier à ce problème, il existe différentes méthode d’organisation du chiffrement (pour le même algorithme de chiffrement) que l’on appelle modes d’opération. Certains modes introduisent un chaînage entre des blocs contiguës pour camoufler les données répétitives. D’autres modes mettent en place d’un compteur par bloc qui sera combiné avec les données pour forcer un peu de variabilité entres blocs répétitifs.
Il reste cependant à traiter le premier bloc. Pour cela on utilise l’IV qui est soit la première valeur pour le chaînage soit la première valeur du compteur en fonction du mode d’opération. Parce que sinon ce premier bloc, chiffré avec le même mot de passe, donnera le même bloc chiffré et donc trahira un début de données identique entre plusieurs fichiers chiffrés. L’IV est une valeur publique contrairement au mot de passe, et doit impérativement être envoyé avec le fichier chiffré.

Mais a-t-on vraiment besoin de cet IV ?

Comme dans le cas du salage, l’utilisation de d’une clé de session aléatoire et différente pour chaque objet fait que, même pour un contenu identique dans les premiers blocs, cela donnera des blocs chiffrés différents.

Donc, le vecteur initial va être volontairement supprimé dans le chiffrement des objets tel que mis en place dans nebule.

Premier problème suite à ça, l’instruction en php openssl_encrypt nécessite un paramètre IV non nul…

Renouveler son entité

Pour l’instant, les entités sont figées. Mais il faudra prévoir de changer leurs mots de passes et de les migrer vers de nouvelles entités au besoin.

Le changement de mot de passe nécessite de régénérer l’objet de clé privé qui change. Il faut évidemment préalablement déverrouiller l’entité, donc sa clé privée. Une fois le mot de passe changé, il faut lier la nouvelle clé privée à la clé publique puis supprimer le lien de l’ancienne clé privé. Il faut marquer à supprimer l’objet de l’ancienne clé privée.

Dans le cas d’une migration d’entité, c’est un peu plus complexe. Ce besoin répondra souvent suite à un problème de compromission ou de corruption d’entité.
Il faut générer une nouvelle entité autonome. Faire un lien de mise à jour de l’ancienne entité vers la nouvelle. Dans la mesure du possible, ce lien de mise à jour doit être signé à la fois par l’ancienne et la nouvelle entité. Puis l’objet de la clé privée de l’ancienne entité doit être marqué à supprimer à la fois par l’ancienne et la nouvelle entité.
Si l’entité avait été corrompue, c’est à dire qu’il était impossible de la déverrouiller, c’est un vrai problème. Dans ce cas, les liens de mise à jour d’entité et de suppression de clé privée ne pourront être signés par l’ancienne entité. rien ne permet de distinguer une opération légitime suite à un problème d’une tentative de détournement par une autre entité. Il peut tout au plus être possible de regarder si l’entité génère de l’activité, donc qu’elle n’est pas corrompue.
En cas de compromission de l’entité, on peut faire une mise à jour vers une nouvelle entité. Mais celui qui a volé la clé privée de l’entité peut le faire aussi de son côté. Il est difficile dans ce cas de déterminer qui est la véritable nouvelle identité et pas une usurpation… Peut-être le côté sociale, comportemental, d’une entité peut nous aider à posteriori?

Chiffrement et subdivision

Le chiffrement permet offusquer des données, c’est à dire de protéger celle-ci d’une diffusion inappropriée.

La subdivision consiste, à partir d’un objet unique, en la création de plusieurs objet dérivés plus petits. Ces petits objets sont des sous-ensembles de l’objet principal, c’est à dire des morceaux. Ce n’est pas encore implémenté aujourd’hui, mais le type de lien existe pour définir la relation de morcelage entre l’objet principal et les sous-objets.
La subdivision permet de découper un objet en bloc pour qu’il puisse être transmis par morceaux à la manière du P2P.
La subdivision peut aussi et simultanément être utilisée afin de constituer un index de certaines portions intéressantes. Cela peut être par exemple un index des mots dans un texte pour permettre une recherche accélérée sur des mots clés.

Cependant, la combinaison du chiffrement et de la subdivision pose un problème de confidentialité.

Que se passe-t-il si on décide de protéger un objet contenant du texte, c’est à dire le chiffrer, mais que l’on ne retire pas les liens de subdivision ?
Si ces liens de subdivision renvoient vers des parties d’un index des mots clés, alors il est possible de reconstituer les grandes idées du texte. Voir il est possible de reconstituer dans le pire des cas l’intégralité du texte déchiffré. On contourne ainsi la protection mise en place.

Il faut cependant noter que si un objet est protégé à posteriori, il a peut-être déjà été copié légitimement. Il pourrait en être de même de certaines parties marquées comme subdivisions.

Afin de minimiser ce problème de confidentialité, il y a plusieurs règles à appliquer :

  1. Ne jamais faire de liens de subdivision sur un objet protégé mais uniquement sur son dérivé chiffré.
  2. Si une protection est activée pour un objet existant, supprimer tous les liens de subdivision.
  3. Si l’objet est nouveau et doit être protégé, ne pas faire de liens de subdivision sur celui-ci mais uniquement sur son dérivé chiffré.

Lorsqu’il sera possible d’offusquer des liens, ces règles pourront être revues.

Multi-entité et suppression d’objet

A l’origine, le projet nebule s’appliquait à des entités autonomes. C’est à dire que les entités fonctionnaient localement dans un environnement réservé et ne dépendaient pas d’une entité maître.
Cependant, ces deux points ne sont plus assurés. Le cas du projet sylabe montre que de multiples entités peuvent coexister sur un serveur et surtout dans le même environnement. Ce pourrait être le cas aussi dans une famille qui utilise le même ordinateur, et donc le même environnement. La sûreté de fonctionnement veut que les objets publiques soient partagés pour économiser des ressources, et que les objets protégés ne soient à aucun moment disponibles aux entités qui n’ont pas la clé de déchiffrement.
De plus, pour assurer des transferts anonymisés, il est nécessaire de créer des entités dédiées à ce rôle. Ces entités ne doivent pas avoir de lien avec la véritable entité d’un utilisateur. Mais cet utilisateur doit pouvoir gérer ces entités esclaves et notamment détenir les mots de passe de celles-ci. Il se crée donc une petite hiérarchie d’entités. Il reste à assurer la non-liaison entre l’entité maître et les entités esclaves. Il faut penser que ce lien peut être remonté par les liens de type l, f, u, k, et e… sauf à les chiffrer…
A voir.

Suite à la réflexion sur le nettoyage des liens, et suite, l’expérience de sylabe montre que la suppression des objets en environnement partagé n’est pas évident. En effet, si je décide de supprimer un objet et un certain nombre de liens affairant, que ce passe-t-il ?
Pour les liens, ce n’est pas grave puisque ce sont mes liens. Les autres entités sont sensées disposer de leurs propres liens.
Pour l’objet, peut-être qu’une autre entité s’en sert aussi. Le supprimer sans concertation n’est pas la bonne méthode. Demander une concertation est inimaginable, surtout si certaines entités effectivement disponibles sur un serveur ne sont en fait plus utilisées.
Il se pose une question sur l’appartenance de l’objet. On pourrait très bien supprimer un objet du serveur, si une autre entité en a besoin elle le synchronisera simplement ailleurs et du coup il réapparaîtra sur le serveur. C’est aussi potentiellement un déni de disponibilité si cet objet n’est présent que sur ce serveur ou si on arrive à demander simultanément la suppression sur tous les serveurs hébergeant cet objet. D’après la théorie, un objet n’appartient à personne contrairement aux liens.

La suppression d’un objet qui pose un vrai problème de sécurité ou de droit d’utilisation dans un pays peut être géré de façon exceptionnelle. L’entité à qui appartient le serveur peut se voir disposer du pouvoir de suppression améliorée d’objets sur son serveur ainsi que la possibilité de le placer en liste de bannissement. Il faut de toute façon mettre en place la gestion de la liste de bannissement de l’entité cerberus : nebule/danger.

Appartenance et/ou propriété – suite

Suite de Appartenance et/ou propriété.

En regardant le code de sylabe et notamment la façon dont on traduit les liens, on voit une énorme instruction switch pour trier les liens de type l. Ce tri est fait par rapport à l’objet méta. Les liens sans objet méta (càd égale à 0) apparaissent donc comme des exceptions qu’il faut gérer dans un autre sous switch.

D’un autre côté, les liens de type f sont triés plus naturellement par l’objet source. Cela n’a donc pas d’importance si l’objet méta est nul.

Donc, c’est un lien de type f qui sera maintenant à utiliser pour désigner un nÅ“ud. Cela devient un groupe à part entière.

Tous les liens de type l avec un objet méta nul sont marqués comme périmés. Il n’y a plus de moyen de désigner explicitement un objet comme ‘objet‘, ‘entité‘ ou ‘objet de suivi spécifique‘. Et il n’y a pas vraiment besoin.
Il est ajouté dans la documentation nebule v1.1 que les liens de type l ne devraient avoir ni un objet méta nul ni un objet destination nul.

Appartenance et/ou propriété

Il se pose un dilemme aujourd’hui dans la définition de ce qu’est un nÅ“ud. Non sur la nature de celui-ci mais plutôt sur la façon dont le nÅ“ud est désigné comme tel.

Le même genre de problème se pose aussi pour une entité mais de façon un peu plus simple.
Une entité est capable de signer, c’est donc avant tout une clé cryptographique asymétrique (RSA uniquement aujourd’hui dans nebule). C’est aussi plus spécifiquement la clé publique, celle que l’on diffuse, donc celle par laquelle on est connu et reconnu. Au delà de ses propriétés mathématiques internes, elle est reconnu par la forme de son contenu et plus généralement par son type mime : ‘application/x-pem-file‘. Malheureusement, le fichier PEM, qu’il contienne la clé publique ou la privée ou les deux, a toujours le même type mime. Il est impossible de distinguer l’une ou l’autre naturellement par le type mime, il faut regarder le contenu pour pouvoir prendre une décision sur la nature de la clé.
Cela paraît compliqué comme ça, mais le problème est finalement facile à résoudre. Pour savoir si c’est une entité, il suffit de regarder si l’objet a le bon type mime puis de lire la première ligne du fichier (moins de 30 caractères). On peut vouloir ajouter un lien pour dire explicitement que cet objet est une entité. Mais quel doit être ce lien? Un lien de type l pour attribuer un attribut à l’objet? Ou un lien de type f pour dire que l’objet fait parti (dérivé) du groupe des entités?

Il y a le même problème avec le nÅ“ud. Celui-ci n’a pas de type mime à proprement parler, ce peut être du texte comme une image. Il peut être tentant d’ajouter un lien pour définir explicitement un objet comme étant un nÅ“ud. Dans ce cas, la recherche des nÅ“uds est facilité puisqu’il suffit de regarder les liens vers l’objet ‘nebule/objet/noeud‘. On en revient cependant aux mêmes questions. Quel doit être ce lien? Un lien de type l pour attribuer un attribut à l’objet? Ou un lien de type f pour dire que l’objet fait parti (dérivé) du groupe des entités?
Il s’ajoute un autre problème. Nous n’avons pas besoin en théorie de ce lien pour caractériser un nÅ“ud. Il suffit que le nÅ“ud ai au moins un liens de type f pour lequel il est à la fois l’objet source et l’objet méta. Mais pour retrouver les nÅ“uds, cela oblige à parcourir tous les objets. Bref, ce n’est pas réalisable en pratique pour un usage commun. Nous devons donc ajouter un lien qui explicite la nature de nÅ“ud de l’objet.

Les deux type de liens sont équivalents pour résoudre ce problème. Le type l est plus simple. Le type f permet quand à lui de voir la notion de nÅ“ud comme un groupe. Est-ce qu’il y a un intérêt à gérer les nÅ“uds dans un groupe?
L’usage seul nous permettra de déterminer quel est le meilleur type de lien…

Echanges via http – suite

Suite du post Echanges via http.

Si la définition des échanges dépend plus de nebule que de sylabe, c’est une erreur de mélanger les deux.

En effet, nebule a bien vocation à définir les téléchargements de liens et d’objets, notamment via http. La confusion vient que si sylabe passe par ce même protocole http vers les mêmes serveurs, les deux ne doivent pas être mélangés dans leurs rôles. Le projet sylabe doit être vu comme une application cliente qui repose notamment sur des échanges nebule mais doit utiliser ses propres accès pour son fonctionnement. C’est donc le cas pour lire les objets dans le navigateur web, surtout si ceux-ci ont nécessités d’être déchiffrés.

Les échanges via nebule ne doivent à aucun moment permettre le téléchargement d’objets nécessitant préalablement un déchiffrement.

Donc le programme index.php ne se chargera pas de gérer les translations de requêtes http (.htaccess pour Apache). Si sylabe (ou tout autre programme) en a besoin, il doit de lui-même mettre en place tout ce qui est nécessaire à son bon fonctionnement.

Gestion de la pondération

Cela fait longtemps que la pondération est en réflexion et en attente d’implémentation. Par exemple Mémoire fini, Objets privés et fonctionnement interne, RSE et Nettoyage des liens.

La cryptographie s’occupe de la sûreté de fonctionnement.

La pondération permet de gérer l’importance des objets et donc notamment des entités.
La pondération appliquée à des entités permet de gérer la confiance. Cette gestion de la confiance est en fait synonyme de la gestion de la sécurité.

Cependant, la pondération elle-même doit être exclu de la relation de confiance, c’est à dire que l’on ne doit pas tenir compte de la pondération définit par les autres entités même si on leur fait confiance. Sinon il y a danger !
Si elle est acceptée malgré tout, la confiance sur la pondération des autres entités doit être strictement délimitée et le danger pour l’utilisateur doit être clairement affiché. En fait, elle ne devrait jamais être utilisée…

Le paradoxe du droit à l’oubli

La fonction d’oubli en cours de réflexion dans nebule prévoit bien quelque chose d’équivalent à ce qui est en cours de réflexion au niveau du gouvernement français. Mais le texte de loi qui en résultera sera sans doute contraignant dans la mise en application effective de l’oubli, c’est à dire la suppression de données. le projet nebule, de son côté propose une suppression volontaire.

Il est tout à faire compréhensible que certaines personnes puissent souhaiter supprimer des données les concernant sur internet, c’est à dire publiques. Mais cette suppression ne doit être faite que si elle porte atteinte à cette personne, sinon cela porte atteinte au droit de mémoire de tout le monde. De plus, la théorie nous montre qu’il est illusoire de vouloir espérer une suppression complète de données. On ne peut que demander la suppression. La loi ne peut que gérer les conflits sur la mauvaise utilisation des données par autrui.

C’est même un paradoxe que de vouloir définitivement oublier une information définie. Pour cela, il faut prévoir de transmettre l’information de suppression de l’information définie à ceux qui détiennent cette information définie.
Et si quelqu’un remet en ligne plus tard la même information définie comme ayant été supprimée. Que va-t-il se passer ?
On doit donc garder l’information de suppression… qui fait référence voir contient l’information définie à supprimer. Donc cette information définie ne peut être supprimée.

CF : www.pcinpact.com droit-a-oubli-acteurs-web-2-0-degomment-consultation-cnil

Nettoyage des liens – suite

Ceci est la suite du post précédent sur le nettoyage des liens.

En cas de suppression d’un objet, quels liens doit-on garder ?

Il faut déjà évidemment garder le lien de type d, celui qui marque la suppression de l’objet. Sans ce lien, la propagation de la suppression ne sera pas assurée, et donc l’objet ne sera pas supprimé sur tous les emplacements. Si il est encore présent sur un emplacement connu, il risque d’être téléchargé de cet emplacement et donc en quelque sorte restauré. Ce lien doit être gardé « Ã  vie ».

Il faut garder les liens de type u, c’est à dire voir quel(s) objet(s) est mise à jour l’objet supprimé. Il est préférable dans une chaîne de mises à jours de créer un nouveau lien qui court-circuite l’objet supprimé au milieu de la chaîne.

Il faut garder les liens de type e, les définitions d’équivalences.

Il faut supprimer tous les liens dont on est pas le signataire. Il n’y a pas de raison de garder les liens des autres entités. Les autres entités s’occuperont de leurs liens.

Il faut garder les liens de type k, correspondant au chiffrement. Lors du chiffrement d’un objet, on définit explicitement la suppression de l’objet originel pour ne garder que son dérivé chiffré.

Il faut supprimer les liens de type s, ce qui défini les subdivisions de l’objet. Cet objet n’est plus utilisable pour la récupération de morceaux. Et si il est recréé, les liens de type s le seront aussi naturellement, si besoin.

Jusque là, ça paraît suffisant. Mais que se passera-t-il le jour où, pour quelque raison que ce soit, l’objet venait à être réutilisé (volontairement) ?
Faut-il garder tous les liens de type l et f? Faut-il n’en garder qu’une partie?

Il faut aussi nettoyer les liens qui ont fait l’objet d’une suppression avec un lien de type x. Et il faut garder chaque derniers liens de type x. Ainsi, en cas de restauration de l’objet, les liens supprimés ne pourront être restaurés aussi.

Si c’est une suppression liée à un chiffrement, on doit garder tous les liens de type l et f. Ces liens sont nécessaires puisque l’objet à de bonnes chances d’être déchiffré un jour par le destinataire.

Dans les autres cs, c’est ambigu. Par défaut il vaut mieux garder tous les liens l et f.

Dans le cas d’un serveur que l’on ne maîtrise pas ou qui est mutualisé, la suppression d’un objet doit être marqué par toutes les entités. On ne peut pas supprimer un objet tant qu’une entité l’utilise encore. On entre là dans une forme de gestion en groupe.

Nettoyage des liens

Le nettoyage régulier des liens est quelque chose qui est connu depuis assez longtemps pour être indispensable. Si la quantité de lien que manipulent aujourd’hui les entités reste encore soutenable, nous ne sommes pas loin de gros problèmes de performances dans certains cas.
CF : Mémoire finie, Repérage chronologique.

Le nettoyage est la mise en pratique de l’oubli volontaire et maîtrisé des liens et objets.

Un premier nettoyage, assez facile à mettre en place par script notamment, est le nettoyage des liens. Suivre cette procédure :

  1. Copier tous les liens de tous les objets dans un emplacement temporaire unique. Chaque lien copié doit l’être une fois pour ne pas avoir de doublon. Il est préférable de faire une vérification des signatures des liens au moment de leur lecture. Chaque lien étant copié entre deux et trois fois en fonction du nombre d’objets concernés, la taille total de cet emplacement temporaire sera entre deux et trois fois moins volumineux que l’ensemble des liens des objets.
  2. Dans l’emplacement temporaire, trier les liens par date dans l’ordre chronologique. Ainsi, une fois remis en place, les liens seront déjà naturellement triés.
  3. Dans l’emplacement temporaire, supprimer les liens qui sont concernés par un lien de type x (suppression de lien). Garder le dernier lien de type x pour maintenir la propagation de la suppression du lien.
  4. Supprimer, ou mettre de côté, les liens de tous les objets. Ne garder que l’emplacement temporaire. Pendant ce lapse de temps, les objets restent disponibles mais sont inexploitables parce qu’ils ne seront pas accompagnés de leurs liens.
  5. Faire un import de chaque liens de l’emplacement temporaire, un par un et dans l’ordre. L’import va réattribuer les liens aux objets concernés, dans l’ordre.

Cette procédure ne tient pas compte des liens dans des objets, normalement chiffrés. Et ils ne doivent pas en tenir compte. Cela peut poser des problèmes résiduels de non suppression de liens parce que le lien de type x est non disponible au moment du nettoyage.

A noter qu’après le nettoyage, si des liens ont été marqués comme à supprimer, il doit rester le dernier lien de type x. Si ce n’était pas le cas, il pourrait y avoir des problèmes pour retransmettre la suppression de ces liens.

Tous les liens ne peuvent pas, et ne doivent pas disparaître en même temps que l’objet. Il faut en effet attendre que la suppression de l’objet, dictée par un lien de type d, soit effective partout. Sinon, cet objet va réapparaître et ses liens avec.

Pour nettoyer les objets, il manque la mise en place du système de pondération. Seule cette pondération associée à un seuil est capable de gérer l’oubli de certains objets parmi un grand volume d’objets.
La pondération sera pour plus tard.

Comment rester sécurisé face à la NSA

En visitant le blog de Bruce Schneier, je suis tombé sur un long et intéressant article : How to Remain Secure Against the NSA
Je vais me concentrer sur les 5 points, traduits ici :

  1. Caché dans le réseau. Implémentez des services cachés. Utilisez TOR pour protéger votre anonymat. Oui, la NSA cible les utilisateurs de TOR, mais cela est efficace sur eux. Moins vous serez à découvert, plus vous serez en sécurité.
  2. Chiffrez vous communications. Utilisez TLS. Utilisez IPsec. Encore une fois, bien qu’il soit vrai que la NSA cible les communications chiffrées (et ils connaissent peut-être des failles spécifiques contre ces protocoles), vous serez bien mieux protégés que si vous communiquez en clair.
  3. Prenez pour acquis que, bien que votre ordinateur puisse être compromis, cela nécessite du travail et représente un risque pour la NSA (donc il ne l’est probablement pas). Si vous avez quelque chose de vraiment important, utilisez un transfert par un moyen déconnecté. Depuis que j’ai commencé à travailler avec les documents de Mr Snowden, j’ai acheté un nouvel ordinateur qui n’a jamais été connecté à internet. Si je veux transférer un fichier, je chiffre le fichier sur l’ordinateur sécurisé puis l’emmène à pied jusqu’à mon ordinateur sur internet, sur une clé USB. Pour déchiffre quelque chose, j’inverse le processus. Cela ne doit pas être infaillible, mais suffisamment bon.
  4. Soyez méfiants envers les logiciels de chiffrement commerciaux, spécialement des grands éditeurs. Mon avis, c’est que la plupart des produits de chiffrement des grandes entreprises US ont des portes dérobées pour la NSA, et il est probable que les entreprises étrangères fassent de même. Il est prudent de considérer que les équipements étrangers aient aussi des portes dérobées pour une puissance étrangère. Il est plus facile pour la NSA de placer une porte dérobée dans un logiciel à sources fermées que dans un autre aux sources ouvertes. Les systèmes reposants sur un important secret sont vulnérables à la NSA, que ce soit pour leurs activités légales ou plus clandestines.
  5. Essayez d’utiliser des algorithmes de chiffrements dans le domaine public qui nécessitent d’être compatibles avec d’autres implémentations. Par exemple, il est plus difficile pour la NSA de placer une porte dérobée dans TLS que dans BitLocker. Parce que tous les implémentations de TLS doivent être compatibles entre elles alors que BitLocker ne doit être compatible qu’avec lui-même, donnant à la NSA plus de libertés pour apporter des changements. Et parce que BitLocker est propriétaire, il est beaucoup moins probable que ces changements soient découverts. Préférez la cryptographie symétrique plutôt que la cryptographie à clé publique. Préférez les systèmes conventionnels à logarithmes discrets plutôt que les systèmes à courbes elliptiques. Ces derniers ont des constantes que la NSA influence dès qu’elle le peut.

Petite remarque sur ce qui semble une incohérence. Il cite au point 4 d’essayer d’utiliser des logiciels à sources ouvertes. Et il dit utiliser plus bas un ordinateur sous M$ Windows : « And I’m still primarily on Windows, unfortunately. Linux would be safer. »
L’aveu est franc. Je pense que l’explication est simple, il se sent plus à même de sécuriser un système qu’il connaît bien plutôt qu’un système inconnu. Ça se défend.

Confrontons donc maintenant le projet nebule et ces cinq points :

  1. Le projet nebule, une fois diffusé, peut être hébergé partout sur le réseau. Par défaut, les entités ont des emplacements connus. Mais rien n’empêche une entité d’avoir un emplacement dont l’objet contenant est chiffré, et l’URL d’une forme difficile à deviner même si on connaît le serveur. Par contre, si les objets et liens d’une entité sont échangés avec une autre entité, elle se retrouve à découvert sur d’autres emplacements. Ceci ne devrait cependant arrivé que si des liens relient ces objets aux deux entités. Le chiffrement des objets la seule parade définitive, ce qui est logique. L’anonymisation tel que proposé par TOR n’a pas de sens dans nebule.
  2. Dans nebule, on a le choix. Rien n’empêche de chiffrer toutes les informations vitales et de placer les liens suspects dans des objets chiffrés. Ce dernier point n’est pas encore implémenté mais est prévu et est techniquement réalisable. Utiliser TLS est recommandé au risque de révéler les liens et objets échangés, et donc d’affaiblir l’anonymisation.
  3. Le risque de l’ordinateur compromis est assez actuel malheureusement. Tant qu’un système ne sera pas intégralement nébulisé, le projet nebule n’apportera pas grand chose à ce niveau. On peut cependant profiter de la signature native des objets contre la modification malveillante. Par contre, nebule permet assez facilement de faire des échanges à sens unique, via des relais d’isolation, et via des supports amovibles. Et le chiffrement peut être entièrement réalisé sur un ordinateur isolé, même à destination d’une autre entité.
  4. Pour résumer, il faut utiliser des logiciels open sources et qui ne sont pas restreints à un seul éditeur dans leur utilisation. Le projet nebule par dès le début avec un choix d’utilisation par défaut de logiciels libres (et open sources). Ceux retenus sont très utilisés, et donc très régulièrement vérifiés. L’inter-opérabilité avec d’autres systèmes et implémentations est aussi à ce prix.
  5. Le début a les mêmes réponses que pour le point 4. Il est impossible de gérer des entités avec la cryptographie symétrique. La cryptographie asymétrique est irremplaçable. Mais il ne faut pas utiliser ces algorithmes pour faire des choses pour lesquels ils ne sont pas prévus. Par contre, si l’algorithme à logarithmes discrets est principalement utilisé aujourd’hui, tout algorithme peut être utilisé en parallèle ou en remplacement. Cela n’a pas d’importance structurelle forte. Le projet nebule s’appuie sur la cryptographie asymétrique pour les signatures et chiffrements (pour les clés de sessions).

Liens :
https://www.schneier.com/blog/archives/2013/09/how_to_remain_s.html

Le SPAM, déficience d’identification

Qu’est ce que le SPAM?
« Le spam, pourriel ou polluriel est une communication électronique non sollicitée, en premier lieu via le courrier électronique. Il s’agit en général d’envois en grande quantité effectués à des fins publicitaires. »
CF Wikipedia

La définition est un peu floue. On note cependant plusieurs détails dans la première phrase. C’est d’abord une communication, donc un échange d’informations. Ensuite, cela prend une forme électronique, critère correspondant à une vision un peu réduite. Et enfin, c’est quelque chose de non sollicité, c’est à dire une communication initiée par l’autre partie, quelques chose que l’on a pas demandé.
Jusque là, une communication électronique sur deux rentre dans cette catégorie. Il y a un consensus général sur ce que cela désigne, mais la définition est trop imprécise. La précision concernant le courrier électronique est optionnelle, pas vraiment contraignante. C’est surtout un exemple qui aide le lecteur à raccrocher le SPAM à quelque chose qu’il connaît déjà. Cela veut aussi dire que le SPAM affecte potentiellement d’autres médias de communication. Le FAX par exemple…
La deuxième phrase reste aussi très générale, donc très imprécise. Ce serait donc des envois de grandes quantités de messages publicitaires. Ou est le problème ici? La grande quantité d’envois? Le caractère publicitaire? Il n’est fait aucune référence à un problème dans cette définition, mais on assimile automatiquement la combinaison quantité/commercial à un problème.
Le problème serait-il pas tout simplement de recevoir beaucoup de messages publicitaires que l’on n’aurait pas sollicité !? On notera la transformation entre l’envoie massif de messages et la réception massive de ces mêmes messages. Se soucierait-on du SPAM si un envoie massif aboutissait à un seul message par semaine dans notre boite aux lettres ? Assurément pas.

Un e-mail non sollicité ventant les propriétés d’une lessive est un SPAM.
Un prospectus papier dans notre boite aux lettres, non. Ce n’est pas une communication électronique. Pourtant, en pratique, c’est le même phénomène : on remplit nos boites aux lettres de messages publicitaires non sollicités. Messages dont il faut se débarrasser.
Allons encore plus loin. Un panneau publicitaire, diffusant d’autorité un message dans notre environnement, n’est pas non plus du SPAM. Ce n’est pas une communication électronique et cela ne vous est pas directement adressé. Pourtant nous sommes bien dans la diffusion massive d’un message publicitaire. Elle est massive parce que adressée à toutes les personnes qui passent devant. Finalement, le panneau publicitaire peut de la même façon être assimilé à du SPAM. Mais là on ne peut rien faire, il n’y a pas de bouton suppression. Bien que la dégradation de notre environnement visuel soit manifeste, cela ne rentre pas dans la catégorie SPAM. Je vous laisse en déduire la raison.
En terme informationnel, c’est l’insertion d’informations parasites en grand nombre qui provoques une gène. Tant que cela ne demande pas trop de temps pour être traitée, c’est toléré. Le traitement de ces informations parasites veut dire d’analyser chaque information afin de déterminer sa pertinence et la suite à donner, c’est à dire la supprimer ou l’ignorer dans le pire des cas.

Revenons au SPAM tel que communément accepté. Face au déluge de messages à trier (à supprimer), il est rapidement apparut nécessaire de traiter le problème. Ce traitement peut intervenir à plusieurs niveaux et de plusieurs manières. Évidemment, il est préférable de pouvoir fortement automatiser ce processus de traitement.
Il y a aujourd’hui un large panel de méthodes différentes pour traiter ce problème spécifique, des plus artisanales aux plus industrielles. Les résultats ne sont pas toujours à la hauteur des investissements en argent ou en temps. Mais comment mesurer l’efficacité de ces méthodes ?
On peut mesurer les performances de plusieurs façons. La première idée est de mesurer le pourcentage de SPAM réellement détectés. Oui, mais ce n’est pas suffisant, que fait-on du nombre de messages légitimes qui ont été supprimés en même temps? Une société commerciale doit pouvoir recevoir des messages de toute provenance et doit éviter un maximum de pertes de messages, sinon ce sont des clients en moins et donc des bénéfices en moins. Ces sociétés vont donc investir dans des solutions très sophistiquées qui maximisent la détection et minimise les dommages collatéraux.

Une des caractéristiques que l’on retrouve souvent dans les SPAM, c’est que l’adresse de l’expéditeur est fantaisiste bien que de forme correcte. Une des méthodes de lutte est de renvoyer un message à l’expéditeur pour demander une confirmation. Il n’est malheureusement pas infaisable pour un robot de pouvoir répondre positivement à cette confirmation, même avec un captcha.

Le particulier à potentiellement moins de problème qu’une société. Il peut facilement mettre de côté tous les messages dont les expéditeurs ne lui sont pas connus. Il suffit de temps en temps de regarder le dossier des SPAM (les inconnus) si on attend un message d’un nouveau destinataire. Mais même cette méthode a ses limites. Certaines sources de SPAM essayent de pirater des boîtes aux lettres d’utilisateurs légitimes (vos amis) pour leur faire envoyer à leur insu des SPAM. Un certain nombre de virus sont spécialisés, une fois qu’un nouvel ordinateur est contaminé, pour aller dépouiller le carnet d’adresse. Et pour rendre plus difficile la détection du poste contaminé, d’envoyer les SPAM en se faisant passé pour un des contacts du carnet d’adresse.
Si la méthode du filtrage est assez efficace tant en détection quand tant que rejet de messages légitimes, elle peut au besoin être complétée par une autre méthode comme un filtre bayesien par exemple.

Les filtres de type RBL sont un moyen de défense dynamique assez performant avec peu de dommages collatéraux. Mais d’un autre côté, si ils bloquent des plages entières d’adresses IP (plages IP des clients des ISP), ils deviennent catastrophiques par le nombre de messages légitimes bloqués.
Le filtre greylist est quand à lui basé sur le bon fonctionnement du serveur émetteur du SPAM. Ça marche encore très bien aujourd’hui avec aucun rejet de message légitime, mais cela ne tient qu’à la volonté des diffuseurs de SPAM d’améliorer (un peu) leurs outils.

On voit que la lutte contre le SPAM utilise des outils qui ont tous leurs limites. Ils sont tous par principe faibles parce que le protocole n’a pas été prévu pour lutter contre ce problème.
Dans la plupart des SPAM, on a clairement une carence dans l’identification de l’expéditeur.

Le moyen naturel d’y répondre est d’être capable d’identifier tous les acteurs générateurs d’information. Cela veut dire que, n’étant pas capable de pouvoir identifier toutes les sources possibles et légitimes dans le monde, on va devoir se fier à un système plus global qui se base sur des autorités de confiances. Un système sur le principe du DNS mais aussi des certificats x509.
Mais imposer une identification globale remet directement en cause l’anonymat. Et se reposer sur des autorités de confiance n’est pas sans conséquences. Les problèmes récurrents de piratage des autorités de certification nous montre que c’est loin d’être infaillible.

Que faire? Comment palier le manque d’identification sans remettre en question l’anonymat? Vu comme ça, cela semble impossible.
La réponse la plus simple serait de couper toute communication. Mais l’être humain a la nécessité (absolue) d’accepter des échanges, qu’ils soient de forme électronique ou pas d’ailleurs. Et l’être humain sait naturellement faire le tri des informations, de juger le risque de sélectionner une information plutôt qu’une autre. Il sait aussi se tromper et se faire manipuler.
L’humain doit revenir au centre de la décision lorsque le temps et la quantité d’informations ne sont pas saturantes. Il faut afficher l’information qui permet la prise de décision. Et si certaines actions sont fortement automatisées, il faut afficher le résultat de ces actions que l’automatisme a jugé nécessaires.

Comment se positionne nebule vis-à-vis de ce problème?
Il propose un système capable de gérer des utilisateurs localement mais qui peuvent être reconnus globalement. Ainsi, un utilisateur n’est valide que parce-qu’il est reconnu par ses paires, en gros ses voisins. Mais on est capable d’adresser un utilisateur à l’autre bout du monde, ce même si on ne le connaît pas. On peut éventuellement se fier à des autorités locales de confiance qui déterminent qui sont de vrais utilisateurs et qui ne le sont pas. On peut aussi dire que l’on accepte ou rejette certains utilisateurs en fonctions de critères comme la proximité sociale ou géographique.
Mais le risque, c’est la manipulation de ces règles de sélections à l’avantage du diffuseur de SPAM. Diffuseur qui peut être plus facilement bannis aussi.L’autre risque, c’est la compromission du poste de l’utilisateur, et donc l’envoie de SPAM à son insu. Mais ça c’est un problème d’une toute autre dimension…

Liens :
http://fr.wikipedia.org/wiki/Spam
http://fr.wikipedia.org/wiki/Courrier_%C3%A9lectronique
http://fr.wikipedia.org/wiki/Lutte_anti-spam
http://fr.wikipedia.org/wiki/CAPTCHA

Echanges via http

L’avancement de sylabe met en avant un manque de standardisation des échanges nebule via le protocole http. Cela impacte notamment directement le téléchargement et le suivi de liens u.

Il faut compléter la documentation de référence nebule v1.1 concernant les moyens et supports d’échange.

Comme la définition des échanges dépend plus de nebule que de sylabe, c’est naturellement le programme index.php qui se chargera de gérer les translations de requêtes http (.htaccess pour Apache).

Il en sera de même pour tout nouveau protocole d’échange lorsque le besoin s’en fera ressentir. Cela pourra être le cas par exemple pour le xmpp et le smtp

RSE ou RSE ?

En recherchant la définition de l’acronyme RSE, je tombe sur deux définitions… Problème assez récurrent en fait avec les acronymes puisque n’importe qui peut en inventer et les utiliser sur la place publique à son bénéfice.

D’un côté j’ai une belle page bien fournie sur Wikipédia et une page gouvernementale officielle parlant de Responsabilité Sociétale des Entreprises :
Responsabilité Sociétale des Entreprises – Wikipédia
Qu’est-ce-que la responsabilité sociétale des entreprises – Ministère du développement durable
On y parle donc de responsabilité des entreprises, de développement durable, de gestion de risques, des impacts environnementaux et sociaux, enjeux, investissements, outils, normes, médiatisation, aspects juridiques, etc…

De l’autre un article sur 01net.com qui surfe sur la vague des révélations sur PRISM, ce qui n’est pas un mal en soi :
Le RSE : un lanceur d’alerte en entreprise – 01net
On retrouve bien en fin d’article un paragraphe sur le RSE, l’environnement et les risques. Mais RSE, répété à l’envie tout au long de l’article, désigne ici Réseau Social d’Entreprise. En gros un simili Facebook restreint au périmètre de l’entreprise.
Mais n’y a-t-il pas déjà un terme pour cette fonctionnalité? Oui, c’est le groupe de travail (groupware). Ah oui, c’est vrai, le créneau sur ce nom est déjà bien plein. D’un autre côté, la RSE ne doit pas plaire à beaucoup de chef d’entreprises. Bref, Voila typiquement un article à visée commerciale…

Mais ce post n’est pas là pour critiquer l’article. Les acronymes posent un problème de gestion de leurs définitions. Celles-ci ont rarement une portée globale, elles n’ont souvent qu’une définition de portée locale ou régionale. C’est cette absence de centralisation qui, à priori, serait la source des conflits.

Comment vont se comporter les acronymes dans nebule?
Reprenons le cas de la RSE. En pratique, c’est l’objet cec7b8a511f6d30def09266e7595f1dd9a301b3ba868444d2b14236dccc127b1. Aujourd’hui, cet objet n’existe sur aucune machine supportant nebule, mais si il était créé ce serait avec cette empreinte (sha256).

Premièrement, cet objet peut être marqué par des liens de type subdivision s. Il est en effet possible avec ce type de lien de savoir qu’un texte, un article de presse par exemple, contient cet acronyme. Cela facilite la recherche.
Cet exemple d’acronyme est trop petit mais le principe reste valable, le même article de presse peut être téléchargé morceaux par morceaux par ses abonnés. C’est un fonctionnement de type P2P. Chaque morceau connu peut être téléchargé à des endroits différents, puis l’article de presse peut être reconstitué. En pratique, on accélère donc les échanges d’objets.

Ensuite, L’objet de l’acronyme peut aussi être marqué par des liens de type dérivation f. Ces liens peuvent renvoyer vers d’autres objets contenant la ou les définitions de l’acronyme.
C’est un intérêt pour résoudre les conflits autour des définitions d’acronymes. En effet, chaque lien est signé par une entité, donc on sait qui en est l’initiateur. Et comme toute entité gère individuellement ses propres relations de confiances, la définition d’un acronyme sera donc dépendante des entités à qui on fait confiance, mais aussi en fonction de leur niveaux de confiance relatifs.
Donc, si on a une forte confiance en l’état, ce sera la RSE. Si on a une grande confiance en l’auteur de l’article de 01net, alors ce sera le RSE. Si on est chef d’entreprise, il y a de fortes chances que ce soit la RSE de toute façon…

Individu, sociabilité, universalité

L’affaire PRISM révélée par Edward Snowden n’en finit pas de provoquer des secousses numériques autour de la NSA, des grosses sociétés américaines et de la vie privée des citoyens/sociétés.

On entend parler régulièrement de la possibilité de créer de multiples chemins de communications entre individus. Ici multiple est à comprendre dans le sens où chaque connexion passe par un certain nombre de serveurs différents et ce de façon anonyme pour les serveurs. Ceci dans le but de garantir l’anonymat de l’internaute.

Il existe TOR pour la navigation. Ce pourrait être le cas avec la messagerie (Caliop ?). Mais est-ce une solutions suffisante?
Le journal Lemonde a publié un article sur un internet décentralisé pour des usages centralisés (cf lien). Rien que le titre suffit à exprimer tout le paradoxe de notre utilisation de l’internet…

Un autre problème s’ajoute, l’anonymisation est aussi utilisée par des criminels. Tout en sachant que les criminels d’un pays/communauté sont parfois les héros d’un autre. Comment distinguer l’utilisation légitime, ce qui est bien ou pas? Vaste débat.
Un outil ayant uniquement une structure globale mélange les usages légitimes et réprouvés, quel qu’en soit leur acceptation. Un outil qui respecte une structuration régionale ou locale est plus à même de coller à l’acceptation de certains usages, ou à leur régulation. Il est aussi capable de suivre l’évolution des mÅ“urs et usages tout en permettant des échanges globaux.

Le projet nebule peut-il apporter quelque chose? Je pense que oui, quelque chose de nouveau surtout. Aujourd’hui, tous les efforts portent sur des tentatives de sécuriser les serveurs centraux, les relais intermédiaires, les chemins empruntés et les protocoles. Cette nouvelle chose que propose nebule est de penser directement au niveau de la donnée, de gérer sa confidentialité et ses échanges.

La structure locale de nebule est de taille variable. L’individu est la base. Il met en place naturellement des échanges dits sociaux proches jusqu’à une organisation de la taille d’un pays. Il est aussi capable d’exploiter de façon universelle des informations quelles qu’en soient leurs localisations.

Liens :
Lemonde – Bitcoin, BitTorrent, TOR : un internet décentralisé pour des usages centralisés
http://fr.wikipedia.org/wiki/PRISM_%28programme_de_surveillance%29
http://fr.wikipedia.org/wiki/Tor_%28r%C3%A9seau%29
https://www.torproject.org/
http://www.caliop.net/

Quantification commune de la disponibilités des relais – suite 2

Suite à l’affaire PRISM et grâce à Edward Snowden, on redécouvre les joies du Time Pattern sur les paquets réseaux.

Cela à potentiellement une implication dans la façon dont on peut synchroniser des objets et liens depuis d’autres entités. C’était le sujet abordé dans les posts Quantification commune de la disponibilités des relais et suite.

La conclusion est qu’il faut deux modes. Un pour optimiser les temps de téléchargement, et un autre plus aléatoire pour améliorer l’anonymisation des téléchargement et casser le Time Pattern

Horodatage – suite

Cette réflexion fait suite à celles sur l’horodatage et la norme ISO 8601. La gestion du temps est très importante pour les liens, voir par exemple pour un événement unique multiple. Mais on a déjà vu qu’il y avait deux méthodes pour gérer le temps, soit par synchronisation universelle, soit par calcul du décalage et de la dérive.

Doit-on utiliser le temps absolu ou le temps relatif ?
Pour commencer, le temps absolu n’existe pas. Ce temps dit absolu est en fait un temps relatif à un instant bien déterminé dans le temps. Il fait nécessairement référence à une base commune de la mesure du temps. Enfin, il s’accommode mal de décalages et de dérives dans sa mesure.
Tout est donc basé sur des temps relatifs. Cependant, le temps relatif est plus difficile à manipuler. Quand on parle d’une mesure relative du temps, cela veut dire que c’est la mesure entre deux instants séparés et bien définis dans le temps. Donner une valeur de temps relatif pour un instant donné n’a pas d’utilité si on ne précise pas la référence de temps utilisée. On en revient au temps absolu.
Vu comme ça, il parait indispensable de définir une base de mesure du temps. C’est à dire une référence dite absolu et universelle et une unité de mesure. Cette unité de mesure est un authentique temps relatif. Mais quelle référence choisir ?
Le calendrier lunaire ou Solaire ?
Le calendrier Maya, Romain, Julien, Grégorien, Orthodoxe, Bouddhiste, Musulman ?

Quelle mesure du temps choisir ?
L’année et le jour sont des mesures faciles à appréhender et sont à l’échelle humaine.
La seconde est beaucoup plus précise et stable, mais est déjà en marge de l’échelle humaine. Les sous divisions de la seconde sont hors de la marge.

Doit-on être capable de gérer le temps long et notamment les temps anciens ?
Doit-on garder la même précision sur des temps longs ?

Comment est notée l’année 0 ?
Année 0000, -0000 ou an 1 ?
Il y a discordance entre calendriers et normes…

Références :

RFC3339 (copierfc3339)
- ISO 8601:2004 (copieISO_8601-2004_E)
Fondation Long Now
Calendrier – Wikipedia [fr]
Liste des calendriers – Wikipedia [fr]
Histoire de la mesure du temps – Wikipedia [fr]
Unité de temps – Wikipedia [fr]
– Histoire du temps A B C D